@sdata/web-vue 3.13.0 → 3.14.0

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 (224) hide show
  1. package/dist/sd.css +141 -111
  2. package/dist/sd.min.css +2 -2
  3. package/es/_components/input-label/input-label.d.ts +2 -0
  4. package/es/_components/input-label/input-label.js +4 -2
  5. package/es/_components/input-label/style/index.css +2 -2
  6. package/es/_components/picker/style/index.scss +8 -2
  7. package/es/_components/resize-observer.js +1 -1
  8. package/es/_components/resize-trigger.vue_vue_type_script_setup_true_lang.js +9 -2
  9. package/es/_components/select-view/select-view.d.ts +2 -0
  10. package/es/_components/select-view/select-view.js +5 -1
  11. package/es/_components/select-view/style/index.css +5 -5
  12. package/es/_hooks/use-focus-trap.d.ts +10 -0
  13. package/es/_hooks/use-focus-trap.js +115 -0
  14. package/es/_utils/dom.js +1 -10
  15. package/es/_utils/keyboard.d.ts +4 -0
  16. package/es/_utils/keyboard.js +21 -2
  17. package/es/alert/alert.vue.d.ts +2 -2
  18. package/es/alert/alert.vue_vue_type_script_setup_true_lang.js +12 -3
  19. package/es/alert/index.d.ts +5 -5
  20. package/es/alert/style/index.css +1 -1
  21. package/es/alert/style/index.scss +1 -1
  22. package/es/anchor/anchor-link.vue_vue_type_script_setup_true_lang.js +3 -1
  23. package/es/anchor/anchor.vue_vue_type_script_setup_true_lang.js +2 -0
  24. package/es/anchor/style/index.css +1 -1
  25. package/es/anchor/style/index.scss +3 -1
  26. package/es/auto-complete/auto-complete.js +8 -0
  27. package/es/avatar/avatar.vue_vue_type_script_setup_true_lang.js +8 -2
  28. package/es/avatar/style/index.css +2 -2
  29. package/es/avatar/style/index.scss +2 -2
  30. package/es/back-top/back-top.vue_vue_type_script_setup_true_lang.js +5 -1
  31. package/es/back-top/style/index.css +1 -1
  32. package/es/back-top/style/index.scss +2 -1
  33. package/es/badge/badge.js +4 -1
  34. package/es/badge/style/index.css +3 -3
  35. package/es/badge/style/index.scss +3 -3
  36. package/es/breadcrumb/breadcrumb.js +1 -0
  37. package/es/button/button.vue_vue_type_script_setup_true_lang.js +10 -5
  38. package/es/button/style/index.css +15 -6
  39. package/es/button/style/index.scss +25 -7
  40. package/es/calendar/style/event.scss +2 -2
  41. package/es/calendar/style/index.css +2 -2
  42. package/es/card/style/index.css +3 -3
  43. package/es/card/style/index.scss +3 -3
  44. package/es/carousel/carousel-arrow.vue.d.ts +4 -4
  45. package/es/carousel/carousel-arrow.vue_vue_type_script_setup_true_lang.js +20 -4
  46. package/es/carousel/carousel-indicator.vue_vue_type_script_setup_true_lang.js +23 -4
  47. package/es/carousel/carousel-item.vue_vue_type_script_setup_true_lang.js +8 -1
  48. package/es/carousel/carousel.js +18 -1
  49. package/es/carousel/style/index.css +1 -1
  50. package/es/carousel/style/index.scss +1 -1
  51. package/es/cascader/cascader.vue_vue_type_script_setup_true_lang.js +11 -2
  52. package/es/cascader/style/index.css +2 -2
  53. package/es/cascader/style/index.scss +3 -1
  54. package/es/checkbox/checkbox-group.js +4 -1
  55. package/es/checkbox/checkbox.d.ts +9 -0
  56. package/es/checkbox/checkbox.js +14 -0
  57. package/es/checkbox/index.d.ts +15 -0
  58. package/es/checkbox/style/index.css +1 -1
  59. package/es/checkbox/style/index.scss +1 -1
  60. package/es/collapse/collapse-item.js +21 -3
  61. package/es/collapse/context.d.ts +1 -1
  62. package/es/color-picker/color-picker.js +6 -0
  63. package/es/copy/copy.vue_vue_type_script_setup_true_lang.js +10 -2
  64. package/es/date-picker/panels/body.vue_vue_type_script_setup_true_lang.js +14 -1
  65. package/es/date-picker/picker.vue_vue_type_script_setup_true_lang.js +1 -0
  66. package/es/date-picker/style/index.css +5 -5
  67. package/es/date-picker/style/index.scss +4 -3
  68. package/es/drawer/drawer.vue.d.ts +1 -1
  69. package/es/drawer/drawer.vue_vue_type_script_setup_true_lang.js +28 -7
  70. package/es/drawer/index.d.ts +3 -3
  71. package/es/dropdown/dropdown-option.vue_vue_type_script_setup_true_lang.js +5 -1
  72. package/es/dropdown/dropdown-panel.vue.d.ts +9 -0
  73. package/es/dropdown/dropdown-panel.vue_vue_type_script_setup_true_lang.js +75 -2
  74. package/es/dropdown/dropdown-submenu.vue_vue_type_script_setup_true_lang.js +5 -2
  75. package/es/dropdown/dropdown.vue_vue_type_script_setup_true_lang.js +4 -2
  76. package/es/dropdown/style/index.css +1 -1
  77. package/es/dropdown/style/index.scss +3 -1
  78. package/es/file-previewer/file-previewer.vue.d.ts +1 -1
  79. package/es/file-previewer/file-previewer.vue_vue_type_script_setup_true_lang.js +7 -3
  80. package/es/file-previewer/index.d.ts +3 -3
  81. package/es/form/context.d.ts +1 -0
  82. package/es/form/form-item.vue_vue_type_script_setup_true_lang.js +6 -2
  83. package/es/form/style/index.css +2 -2
  84. package/es/form/style/index.scss +2 -2
  85. package/es/image/preview.vue.d.ts +1 -1
  86. package/es/image/preview.vue_vue_type_script_setup_true_lang.js +1 -1
  87. package/es/index.css +141 -111
  88. package/es/input/input.js +16 -2
  89. package/es/input/style/index.css +2 -2
  90. package/es/input/style/input.scss +4 -4
  91. package/es/input-number/input-number.js +5 -1
  92. package/es/input-number/style/index.css +3 -3
  93. package/es/input-number/style/index.scss +5 -1
  94. package/es/input-tag/index.d.ts +3 -0
  95. package/es/input-tag/input-tag.d.ts +2 -0
  96. package/es/input-tag/input-tag.js +34 -30
  97. package/es/input-tag/style/index.css +8 -8
  98. package/es/input-tag/style/index.scss +11 -5
  99. package/es/layout/sider.vue_vue_type_script_setup_true_lang.js +31 -6
  100. package/es/layout/style/index.css +2 -2
  101. package/es/layout/style/index.scss +4 -2
  102. package/es/link/style/index.css +1 -1
  103. package/es/link/style/index.scss +3 -1
  104. package/es/mention/mention.js +8 -0
  105. package/es/menu/base-menu.vue_vue_type_script_setup_true_lang.js +29 -3
  106. package/es/menu/item.js +14 -1
  107. package/es/menu/style/index.css +6 -6
  108. package/es/menu/style/index.scss +5 -3
  109. package/es/message/style/index.css +3 -3
  110. package/es/message/style/index.scss +5 -3
  111. package/es/modal/index.d.ts +3 -3
  112. package/es/modal/modal.vue.d.ts +1 -1
  113. package/es/modal/modal.vue_vue_type_script_setup_true_lang.js +28 -13
  114. package/es/modal/style/index.css +2 -2
  115. package/es/modal/style/index.scss +3 -2
  116. package/es/notification/style/index.css +3 -3
  117. package/es/notification/style/index.scss +11 -3
  118. package/es/page-header/page-header.vue.d.ts +6 -6
  119. package/es/page-header/page-header.vue_vue_type_script_setup_true_lang.js +12 -1
  120. package/es/pagination/page-item-ellipsis.vue_vue_type_script_setup_true_lang.js +12 -2
  121. package/es/pagination/page-item-step.vue.d.ts +2 -2
  122. package/es/pagination/page-item-step.vue_vue_type_script_setup_true_lang.js +19 -2
  123. package/es/pagination/page-item.vue.d.ts +2 -2
  124. package/es/pagination/page-item.vue_vue_type_script_setup_true_lang.js +21 -3
  125. package/es/pagination/pagination.js +5 -1
  126. package/es/pagination/style/index.css +6 -1
  127. package/es/pagination/style/index.scss +9 -3
  128. package/es/popconfirm/popconfirm.vue_vue_type_script_setup_true_lang.js +2 -0
  129. package/es/popover/popover.vue_vue_type_script_setup_true_lang.js +2 -0
  130. package/es/progress/style/index.css +2 -2
  131. package/es/progress/style/index.scss +5 -3
  132. package/es/qr-code/qr-code-status.vue_vue_type_script_setup_true_lang.js +5 -1
  133. package/es/qr-code/qr-code.vue_vue_type_script_setup_true_lang.js +11 -6
  134. package/es/radio/context.d.ts +1 -0
  135. package/es/radio/radio-group.js +6 -2
  136. package/es/radio/radio.js +1 -0
  137. package/es/radio/style/index.css +2 -2
  138. package/es/radio/style/index.scss +4 -2
  139. package/es/rate/rate.js +25 -1
  140. package/es/resize-box/resize-box.vue.d.ts +4 -4
  141. package/es/resize-box/resize-box.vue_vue_type_script_setup_true_lang.js +30 -1
  142. package/es/result/result.vue_vue_type_script_setup_true_lang.js +7 -4
  143. package/es/select/index.d.ts +124 -0
  144. package/es/select/select-dropdown.vue_vue_type_script_setup_true_lang.js +4 -1
  145. package/es/select/select.d.ts +62 -0
  146. package/es/select/select.js +18 -2
  147. package/es/select/style/index.css +1 -1
  148. package/es/select/style/index.scss +3 -1
  149. package/es/selectable-card/style/index.css +2 -2
  150. package/es/selectable-card/style/index.scss +5 -5
  151. package/es/skeleton/skeleton.vue_vue_type_script_setup_true_lang.js +5 -1
  152. package/es/slider/slider-button.vue.d.ts +2 -0
  153. package/es/slider/slider-button.vue_vue_type_script_setup_true_lang.js +7 -2
  154. package/es/slider/slider.vue_vue_type_script_setup_true_lang.js +23 -2
  155. package/es/slider/style/index.css +1 -1
  156. package/es/slider/style/index.scss +3 -1
  157. package/es/spin/spin.js +7 -2
  158. package/es/spin/style/index.css +1 -1
  159. package/es/spin/style/index.scss +1 -1
  160. package/es/split/split.vue.d.ts +4 -4
  161. package/es/split/split.vue_vue_type_script_setup_true_lang.js +27 -3
  162. package/es/steps/context.d.ts +1 -0
  163. package/es/steps/step.vue_vue_type_script_setup_true_lang.js +15 -2
  164. package/es/steps/steps.vue_vue_type_script_setup_true_lang.js +6 -1
  165. package/es/steps/style/index.css +1 -1
  166. package/es/steps/style/index.scss +1 -1
  167. package/es/style/animation/index.scss +1 -0
  168. package/es/style/animation/reduced-motion.scss +22 -0
  169. package/es/style/animation/zoom.scss +7 -6
  170. package/es/style/icon.scss +9 -1
  171. package/es/switch/style/index.css +1 -1
  172. package/es/switch/style/index.scss +4 -1
  173. package/es/switch/switch.vue_vue_type_script_setup_true_lang.js +6 -1
  174. package/es/table/style/index.css +8 -8
  175. package/es/table/style/index.scss +11 -8
  176. package/es/table/table-operation-td.d.ts +15 -0
  177. package/es/table/table-tbody.js +4 -1
  178. package/es/table/table-td.js +2 -1
  179. package/es/table/table-th.js +4 -2
  180. package/es/table/table-thead.js +4 -1
  181. package/es/table/table-tr.js +4 -1
  182. package/es/table/table.js +6 -2
  183. package/es/tabs/context.d.ts +1 -0
  184. package/es/tabs/style/index.css +5 -5
  185. package/es/tabs/style/index.scss +7 -7
  186. package/es/tabs/tab-pane.vue_vue_type_script_setup_true_lang.js +21 -2
  187. package/es/tabs/tabs-nav.js +34 -1
  188. package/es/tabs/tabs-tab.vue_vue_type_script_setup_true_lang.js +27 -4
  189. package/es/tabs/tabs.js +4 -2
  190. package/es/tag/index.d.ts +5 -5
  191. package/es/tag/style/index.css +1 -1
  192. package/es/tag/style/index.scss +3 -1
  193. package/es/tag/tag.vue.d.ts +2 -2
  194. package/es/tag/tag.vue_vue_type_script_setup_true_lang.js +19 -2
  195. package/es/textarea/style/index.css +2 -2
  196. package/es/textarea/textarea.vue_vue_type_script_setup_true_lang.js +15 -3
  197. package/es/time-picker/time-column.vue_vue_type_script_setup_true_lang.js +11 -3
  198. package/es/time-picker/time-picker.vue_vue_type_script_setup_true_lang.js +4 -1
  199. package/es/tooltip/tooltip.vue_vue_type_script_setup_true_lang.js +1 -0
  200. package/es/transfer/style/index.css +1 -1
  201. package/es/transfer/style/index.scss +1 -1
  202. package/es/transfer/transfer-list-item.js +16 -2
  203. package/es/tree/base-node.vue_vue_type_script_setup_true_lang.js +27 -7
  204. package/es/tree/context.d.ts +2 -0
  205. package/es/tree/style/index.css +1 -1
  206. package/es/tree/style/index.scss +1 -1
  207. package/es/tree/tree.vue_vue_type_script_setup_true_lang.js +81 -2
  208. package/es/tree-select/tree-select.vue_vue_type_script_setup_true_lang.js +10 -1
  209. package/es/trigger/index.d.ts +45 -0
  210. package/es/trigger/trigger.d.ts +27 -0
  211. package/es/trigger/trigger.js +47 -5
  212. package/es/typography/edit-content.vue_vue_type_script_setup_true_lang.js +11 -8
  213. package/es/typography/operations.vue_vue_type_script_setup_true_lang.js +38 -6
  214. package/es/typography/style/index.css +2 -2
  215. package/es/typography/style/index.scss +2 -2
  216. package/es/upload/style/index.css +9 -9
  217. package/es/upload/style/index.scss +15 -9
  218. package/es/upload/upload-list-item.js +18 -5
  219. package/es/upload/upload-picture-item.js +25 -3
  220. package/es/verification-code/verification-code.js +6 -1
  221. package/json/vetur-attributes.json +15 -0
  222. package/json/vetur-tags.json +6 -2
  223. package/json/web-types.json +33 -1
  224. package/package.json +1 -1
@@ -17,7 +17,7 @@ var edit_content_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ def
17
17
  setup(__props, { emit: __emit }) {
18
18
  const emit = __emit;
19
19
  const classNames = [`${getPrefixCls("typography")}-edit-content`];
20
- const inputRef = ref();
20
+ const rootRef = ref();
21
21
  function onChange(value) {
22
22
  emit("update:text", value);
23
23
  emit("change", value);
@@ -26,24 +26,27 @@ var edit_content_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ def
26
26
  emit("end");
27
27
  }
28
28
  onMounted(() => {
29
- if (!inputRef.value || !inputRef.value.$el) return;
30
- const inputEl = inputRef.value.$el.querySelector("input");
29
+ var _rootRef$value;
30
+ const inputEl = (_rootRef$value = rootRef.value) === null || _rootRef$value === void 0 ? void 0 : _rootRef$value.querySelector("input");
31
31
  if (!inputEl) return;
32
- inputEl.focus && inputEl.focus();
32
+ inputEl.focus();
33
33
  const { length } = inputEl.value;
34
34
  inputEl.setSelectionRange(length, length);
35
35
  });
36
36
  const onBlur = onEnd;
37
37
  return (_ctx, _cache) => {
38
- return openBlock(), createElementBlock("div", { class: normalizeClass(classNames) }, [createVNode(unref(Input), {
39
- ref_key: "inputRef",
40
- ref: inputRef,
38
+ return openBlock(), createElementBlock("div", {
39
+ ref_key: "rootRef",
40
+ ref: rootRef,
41
+ class: normalizeClass(classNames)
42
+ }, [createVNode(unref(Input), {
41
43
  "auto-size": "",
44
+ "input-attrs": { "aria-label": "Edit text" },
42
45
  "model-value": __props.text,
43
46
  onBlur: unref(onBlur),
44
47
  onInput: onChange,
45
48
  onKeydown: withKeys(onEnd, ["enter"])
46
- }, null, 8, ["model-value", "onBlur"])]);
49
+ }, null, 8, ["model-value", "onBlur"])], 512);
47
50
  };
48
51
  }
49
52
  }));
@@ -1,5 +1,6 @@
1
1
  import { _objectSpread2 } from "../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/objectSpread2.js";
2
2
  import { getPrefixCls } from "../_utils/global-config.js";
3
+ import { isActivationKey } from "../_utils/keyboard.js";
3
4
  import IconCheckCircleFill from "../icon/icon-check-circle-fill/index.js";
4
5
  import { useI18n } from "../locale/index.js";
5
6
  import Tooltip from "../tooltip/index.js";
@@ -7,6 +8,8 @@ import IconCopy from "../icon/icon-copy/index.js";
7
8
  import IconEdit from "../icon/icon-edit/index.js";
8
9
  import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, mergeProps, normalizeClass, normalizeProps, openBlock, renderSlot, toDisplayString, unref, withCtx, withModifiers } from "vue";
9
10
  //#region components/typography/operations.vue?vue&type=script&setup=true&lang.ts
11
+ var _hoisted_1 = ["aria-label"];
12
+ var _hoisted_2 = ["aria-label"];
10
13
  var operations_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent(_objectSpread2(_objectSpread2({}, { name: "TypographyOperations" }), {}, {
11
14
  __name: "operations",
12
15
  props: {
@@ -58,6 +61,24 @@ var operations_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
58
61
  function onExpandClick() {
59
62
  emit("expand");
60
63
  }
64
+ function onEditKeydown(ev) {
65
+ if (isActivationKey(ev)) {
66
+ ev.preventDefault();
67
+ onEditClick();
68
+ }
69
+ }
70
+ function onCopyKeydown(ev) {
71
+ if (isActivationKey(ev)) {
72
+ ev.preventDefault();
73
+ onCopyClick();
74
+ }
75
+ }
76
+ function onExpandKeydown(ev) {
77
+ if (isActivationKey(ev)) {
78
+ ev.preventDefault();
79
+ onExpandClick();
80
+ }
81
+ }
61
82
  return (_ctx, _cache) => {
62
83
  return openBlock(), createElementBlock(Fragment, null, [
63
84
  __props.editable ? (openBlock(), createBlock(unref(Tooltip), mergeProps({
@@ -66,8 +87,12 @@ var operations_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
66
87
  }, __props.editTooltipProps), {
67
88
  default: withCtx(() => [createElementVNode("span", {
68
89
  class: normalizeClass(`${unref(prefixCls)}-operation-edit`),
69
- onClick: withModifiers(onEditClick, ["stop"])
70
- }, [createVNode(unref(IconEdit))], 2)]),
90
+ role: "button",
91
+ tabindex: "0",
92
+ "aria-label": unref(t)("typography.edit"),
93
+ onClick: withModifiers(onEditClick, ["stop"]),
94
+ onKeydown: onEditKeydown
95
+ }, [createVNode(unref(IconEdit))], 42, _hoisted_1)]),
71
96
  _: 1
72
97
  }, 16, ["content"])) : createCommentVNode("", true),
73
98
  __props.copyable ? (openBlock(), createBlock(unref(Tooltip), normalizeProps(mergeProps({ key: 1 }, __props.copyTooltipProps)), {
@@ -77,15 +102,22 @@ var operations_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
77
102
  [`${unref(prefixCls)}-operation-copied`]: __props.isCopied,
78
103
  [`${unref(prefixCls)}-operation-copy`]: !__props.isCopied
79
104
  }),
80
- onClick: withModifiers(onCopyClick, ["stop"])
81
- }, [renderSlot(_ctx.$slots, "copy-icon", { copied: __props.isCopied }, () => [__props.isCopied ? (openBlock(), createBlock(unref(IconCheckCircleFill), { key: 0 })) : (openBlock(), createBlock(unref(IconCopy), { key: 1 }))])], 2)]),
105
+ role: "button",
106
+ tabindex: "0",
107
+ "aria-label": __props.isCopied ? unref(t)("typography.copied") : unref(t)("typography.copy"),
108
+ onClick: withModifiers(onCopyClick, ["stop"]),
109
+ onKeydown: onCopyKeydown
110
+ }, [renderSlot(_ctx.$slots, "copy-icon", { copied: __props.isCopied }, () => [__props.isCopied ? (openBlock(), createBlock(unref(IconCheckCircleFill), { key: 0 })) : (openBlock(), createBlock(unref(IconCopy), { key: 1 }))])], 42, _hoisted_2)]),
82
111
  _: 3
83
112
  }, 16)) : createCommentVNode("", true),
84
113
  showExpand.value ? (openBlock(), createElementBlock("a", {
85
114
  key: 2,
86
115
  class: normalizeClass(`${unref(prefixCls)}-operation-expand`),
87
- onClick: withModifiers(onExpandClick, ["stop"])
88
- }, [renderSlot(_ctx.$slots, "expand-node", { expanded: __props.expanded }, () => [createTextVNode(toDisplayString(__props.expanded ? unref(t)("typography.collapse") : unref(t)("typography.expand")), 1)])], 2)) : createCommentVNode("", true)
116
+ role: "button",
117
+ tabindex: "0",
118
+ onClick: withModifiers(onExpandClick, ["stop"]),
119
+ onKeydown: onExpandKeydown
120
+ }, [renderSlot(_ctx.$slots, "expand-node", { expanded: __props.expanded }, () => [createTextVNode(toDisplayString(__props.expanded ? unref(t)("typography.collapse") : unref(t)("typography.expand")), 1)])], 34)) : createCommentVNode("", true)
89
121
  ], 64);
90
122
  };
91
123
  }
@@ -134,7 +134,7 @@
134
134
  background-color: transparent;
135
135
  border-radius: 2px;
136
136
  cursor: pointer;
137
- transition: background-color 0.1s cubic-bezier(0, 0, 1, 1);
137
+ transition: background-color 0.1s cubic-bezier(0.34, 0.69, 0.1, 1);
138
138
  }
139
139
  .sd-typography-operation-copy:hover {
140
140
  color: var(--sd-color-text-2);
@@ -150,7 +150,7 @@
150
150
  background-color: transparent;
151
151
  border-radius: 2px;
152
152
  cursor: pointer;
153
- transition: background-color 0.1s cubic-bezier(0, 0, 1, 1);
153
+ transition: background-color 0.1s cubic-bezier(0.34, 0.69, 0.1, 1);
154
154
  }
155
155
  .sd-typography-operation-edit:hover {
156
156
  color: var(--sd-color-text-2);
@@ -152,7 +152,7 @@ $typography-prefix-cls: string.unquote('#{theme.$prefix}-typography');
152
152
  border-radius: 2px;
153
153
  cursor: pointer;
154
154
  transition: background-color theme.$transition-duration-1
155
- theme.$transition-timing-function-linear;
155
+ theme.$transition-timing-function-standard;
156
156
 
157
157
  &:hover {
158
158
  color: $typography-color-icon-copy_hover;
@@ -172,7 +172,7 @@ $typography-prefix-cls: string.unquote('#{theme.$prefix}-typography');
172
172
  border-radius: 2px;
173
173
  cursor: pointer;
174
174
  transition: background-color theme.$transition-duration-1
175
- theme.$transition-timing-function-linear;
175
+ theme.$transition-timing-function-standard;
176
176
 
177
177
  &:hover {
178
178
  color: $typography-color-icon-edit_hover;
@@ -44,7 +44,7 @@
44
44
  background: var(--sd-color-fill-2);
45
45
  border: 1px dashed var(--sd-color-neutral-3);
46
46
  border-radius: var(--sd-border-radius-small);
47
- transition: all 0.1s cubic-bezier(0, 0, 1, 1);
47
+ transition: color 0.1s cubic-bezier(0.34, 0.69, 0.1, 1), background-color 0.1s cubic-bezier(0.34, 0.69, 0.1, 1), border-color 0.1s cubic-bezier(0.34, 0.69, 0.1, 1);
48
48
  }
49
49
  .sd-upload-picture-card:hover {
50
50
  color: var(--sd-color-text-2);
@@ -59,7 +59,7 @@
59
59
  background-color: var(--sd-color-fill-1);
60
60
  border: 1px dashed var(--sd-color-neutral-3);
61
61
  border-radius: var(--sd-border-radius-small);
62
- transition: all 0.2s ease;
62
+ transition: color 0.2s ease, background-color 0.2s ease, border-color 0.2s ease;
63
63
  }
64
64
  .sd-upload-drag .sd-icon-plus {
65
65
  margin-bottom: 24px;
@@ -159,7 +159,7 @@
159
159
  color: rgb(var(--sd-primary-6));
160
160
  font-size: 14px;
161
161
  cursor: pointer;
162
- transition: all 0.2s ease;
162
+ transition: color 0.2s ease;
163
163
  }
164
164
  .sd-upload-icon-upload:active, .sd-upload-icon-upload:hover {
165
165
  color: rgb(var(--sd-primary-7));
@@ -205,7 +205,7 @@
205
205
  font-size: 14px;
206
206
  background-color: var(--sd-color-fill-1);
207
207
  border-radius: var(--sd-border-radius-small);
208
- transition: background-color 0.1s cubic-bezier(0, 0, 1, 1);
208
+ transition: background-color 0.1s cubic-bezier(0.34, 0.69, 0.1, 1);
209
209
  }
210
210
  .sd-upload-list-item-file-icon {
211
211
  margin-right: 12px;
@@ -294,7 +294,7 @@
294
294
  padding-right: 0;
295
295
  overflow: hidden;
296
296
  vertical-align: top;
297
- transition: all 0.2s cubic-bezier(0.34, 0.69, 0.1, 1);
297
+ transition: opacity 0.2s cubic-bezier(0.34, 0.69, 0.1, 1);
298
298
  }
299
299
  .sd-upload-list-picture-status-error .sd-upload-list-picture-mask {
300
300
  opacity: 1;
@@ -324,7 +324,7 @@
324
324
  background: rgba(0, 0, 0, 0.5);
325
325
  cursor: pointer;
326
326
  opacity: 0;
327
- transition: opacity 0.1s cubic-bezier(0, 0, 1, 1);
327
+ transition: opacity 0.1s cubic-bezier(0.34, 0.69, 0.1, 1);
328
328
  }
329
329
  .sd-upload-list-picture-operation {
330
330
  display: none;
@@ -380,7 +380,7 @@
380
380
  margin: 0;
381
381
  overflow: hidden;
382
382
  opacity: 0;
383
- transition: opacity 0.1s cubic-bezier(0, 0, 1, 1), height 0.3s cubic-bezier(0.34, 0.69, 0.1, 1) 0.1s, margin 0.3s cubic-bezier(0.34, 0.69, 0.1, 1) 0.1s;
383
+ transition: opacity 0.1s cubic-bezier(0.34, 0.69, 0.1, 1), height 0.3s cubic-bezier(0.34, 0.69, 0.1, 1) 0.1s, margin 0.3s cubic-bezier(0.34, 0.69, 0.1, 1) 0.1s;
384
384
  }
385
385
 
386
386
  .sd-upload-list-item.sd-upload-slide-inline-enter {
@@ -388,7 +388,7 @@
388
388
  }
389
389
  .sd-upload-list-item.sd-upload-slide-inline-enter-active {
390
390
  opacity: 1;
391
- transition: opacity 0.2s cubic-bezier(0, 0, 1, 1);
391
+ transition: opacity 0.2s cubic-bezier(0.34, 0.69, 0.1, 1);
392
392
  }
393
393
  .sd-upload-list-item.sd-upload-slide-inline-exit {
394
394
  opacity: 1;
@@ -397,5 +397,5 @@
397
397
  margin: 0;
398
398
  overflow: hidden;
399
399
  opacity: 0;
400
- transition: opacity 0.1s cubic-bezier(0, 0, 1, 1), width 0.3s cubic-bezier(0.34, 0.69, 0.1, 1) 0.1s, margin 0.3s cubic-bezier(0.34, 0.69, 0.1, 1) 0.1s;
400
+ transition: opacity 0.1s cubic-bezier(0.34, 0.69, 0.1, 1), width 0.3s cubic-bezier(0.34, 0.69, 0.1, 1) 0.1s, margin 0.3s cubic-bezier(0.34, 0.69, 0.1, 1) 0.1s;
401
401
  }
@@ -35,7 +35,10 @@ $upload-prefix-cls: string.unquote('#{theme.$prefix}-upload');
35
35
  background: $upload-picture-color-bg;
36
36
  border: $upload-picture-border-width $upload-picture-border-style $upload-picture-color-border;
37
37
  border-radius: $upload-picture-border-radius;
38
- transition: all theme.$transition-duration-1 theme.$transition-timing-function-linear;
38
+ transition:
39
+ color theme.$transition-duration-1 theme.$transition-timing-function-standard,
40
+ background-color theme.$transition-duration-1 theme.$transition-timing-function-standard,
41
+ border-color theme.$transition-duration-1 theme.$transition-timing-function-standard;
39
42
 
40
43
  &:hover {
41
44
  color: $upload-picture-color-text_hover;
@@ -52,7 +55,10 @@ $upload-prefix-cls: string.unquote('#{theme.$prefix}-upload');
52
55
  background-color: $upload-drag-color-bg;
53
56
  border: $upload-drag-border-width $upload-drag-border-style $upload-drag-color-border;
54
57
  border-radius: $upload-drag-border-radius;
55
- transition: all theme.$transition-duration-2 ease;
58
+ transition:
59
+ color theme.$transition-duration-2 ease,
60
+ background-color theme.$transition-duration-2 ease,
61
+ border-color theme.$transition-duration-2 ease;
56
62
 
57
63
  .#{theme.$prefix}-icon-plus {
58
64
  margin-bottom: $upload-drag-margin-icon-bottom;
@@ -175,7 +181,7 @@ $upload-prefix-cls: string.unquote('#{theme.$prefix}-upload');
175
181
  color: $upload-text-item-color-reupload-icon;
176
182
  font-size: $upload-text-item-size-reupload-icon;
177
183
  cursor: pointer;
178
- transition: all theme.$transition-duration-2 ease;
184
+ transition: color theme.$transition-duration-2 ease;
179
185
 
180
186
  &:active,
181
187
  &:hover {
@@ -225,7 +231,7 @@ $upload-prefix-cls: string.unquote('#{theme.$prefix}-upload');
225
231
  background-color: $upload-text-item-color-bg;
226
232
  border-radius: $upload-text-item-border-radius;
227
233
  transition: background-color theme.$transition-duration-1
228
- theme.$transition-timing-function-linear;
234
+ theme.$transition-timing-function-standard;
229
235
  }
230
236
 
231
237
  &-file-icon {
@@ -348,7 +354,7 @@ $upload-prefix-cls: string.unquote('#{theme.$prefix}-upload');
348
354
  padding-right: 0;
349
355
  overflow: hidden;
350
356
  vertical-align: top;
351
- transition: all theme.$transition-duration-2 theme.$transition-timing-function-standard;
357
+ transition: opacity theme.$transition-duration-2 theme.$transition-timing-function-standard;
352
358
  }
353
359
 
354
360
  &-picture-status-error &-picture-mask {
@@ -381,7 +387,7 @@ $upload-prefix-cls: string.unquote('#{theme.$prefix}-upload');
381
387
  background: $upload-picture-item-color-operation_bg;
382
388
  cursor: pointer;
383
389
  opacity: 0;
384
- transition: opacity theme.$transition-duration-1 theme.$transition-timing-function-linear;
390
+ transition: opacity theme.$transition-duration-1 theme.$transition-timing-function-standard;
385
391
  }
386
392
 
387
393
  &-operation {
@@ -468,7 +474,7 @@ $upload-prefix-cls: string.unquote('#{theme.$prefix}-upload');
468
474
  overflow: hidden;
469
475
  opacity: 0;
470
476
  transition:
471
- opacity theme.$transition-duration-1 theme.$transition-timing-function-linear,
477
+ opacity theme.$transition-duration-1 theme.$transition-timing-function-standard,
472
478
  height theme.$transition-duration-3 theme.$transition-timing-function-standard
473
479
  theme.$transition-duration-1,
474
480
  margin theme.$transition-duration-3 theme.$transition-timing-function-standard
@@ -482,7 +488,7 @@ $upload-prefix-cls: string.unquote('#{theme.$prefix}-upload');
482
488
 
483
489
  &.#{$upload-prefix-cls}-slide-inline-enter-active {
484
490
  opacity: 1;
485
- transition: opacity theme.$transition-duration-2 theme.$transition-timing-function-linear;
491
+ transition: opacity theme.$transition-duration-2 theme.$transition-timing-function-standard;
486
492
  }
487
493
 
488
494
  &.#{$upload-prefix-cls}-slide-inline-exit {
@@ -494,7 +500,7 @@ $upload-prefix-cls: string.unquote('#{theme.$prefix}-upload');
494
500
  overflow: hidden;
495
501
  opacity: 0;
496
502
  transition:
497
- opacity theme.$transition-duration-1 theme.$transition-timing-function-linear,
503
+ opacity theme.$transition-duration-1 theme.$transition-timing-function-standard,
498
504
  width theme.$transition-duration-3 theme.$transition-timing-function-standard
499
505
  theme.$transition-duration-1,
500
506
  margin theme.$transition-duration-3 theme.$transition-timing-function-standard
@@ -1,5 +1,6 @@
1
1
  import { getPrefixCls } from "../_utils/global-config.js";
2
2
  import icon_hover_default from "../_components/icon-hover.js";
3
+ import { isActivationKey } from "../_utils/keyboard.js";
3
4
  import IconExclamationCircleFill from "../icon/icon-exclamation-circle-fill/index.js";
4
5
  import { useI18n } from "../locale/index.js";
5
6
  import Tooltip from "../tooltip/index.js";
@@ -93,13 +94,25 @@ var upload_list_item_default = /* @__PURE__ */ defineComponent({
93
94
  "listType": props.listType
94
95
  }, null)
95
96
  ]),
96
- (uploadCtx === null || uploadCtx === void 0 ? void 0 : uploadCtx.showRemoveButton) && createVNode("span", { "class": `${itemCls}-operation` }, [createVNode(icon_hover_default, { "onClick": () => {
97
- var _uploadCtx$onRemove;
98
- return uploadCtx === null || uploadCtx === void 0 || (_uploadCtx$onRemove = uploadCtx.onRemove) === null || _uploadCtx$onRemove === void 0 ? void 0 : _uploadCtx$onRemove.call(uploadCtx, props.file);
99
- } }, { default: () => {
97
+ (uploadCtx === null || uploadCtx === void 0 ? void 0 : uploadCtx.showRemoveButton) && createVNode("span", { "class": `${itemCls}-operation` }, [createVNode("span", {
98
+ "role": "button",
99
+ "tabindex": "0",
100
+ "aria-label": "Remove",
101
+ "onClick": () => {
102
+ var _uploadCtx$onRemove;
103
+ return uploadCtx === null || uploadCtx === void 0 || (_uploadCtx$onRemove = uploadCtx.onRemove) === null || _uploadCtx$onRemove === void 0 ? void 0 : _uploadCtx$onRemove.call(uploadCtx, props.file);
104
+ },
105
+ "onKeydown": (e) => {
106
+ if (isActivationKey(e)) {
107
+ var _uploadCtx$onRemove2;
108
+ e.preventDefault();
109
+ uploadCtx === null || uploadCtx === void 0 || (_uploadCtx$onRemove2 = uploadCtx.onRemove) === null || _uploadCtx$onRemove2 === void 0 || _uploadCtx$onRemove2.call(uploadCtx, props.file);
110
+ }
111
+ }
112
+ }, [createVNode(icon_hover_default, null, { default: () => {
100
113
  var _ref5, _uploadCtx$slots$remo, _uploadCtx$slots6, _uploadCtx$slots6$rem, _uploadCtx$customIcon9, _uploadCtx$customIcon10;
101
114
  return [createVNode("span", { "class": [uploadCtx === null || uploadCtx === void 0 ? void 0 : uploadCtx.iconCls, `${uploadCtx === null || uploadCtx === void 0 ? void 0 : uploadCtx.iconCls}-remove`] }, [(_ref5 = (_uploadCtx$slots$remo = uploadCtx === null || uploadCtx === void 0 || (_uploadCtx$slots6$rem = (_uploadCtx$slots6 = uploadCtx.slots)["remove-icon"]) === null || _uploadCtx$slots6$rem === void 0 ? void 0 : _uploadCtx$slots6$rem.call(_uploadCtx$slots6)) !== null && _uploadCtx$slots$remo !== void 0 ? _uploadCtx$slots$remo : uploadCtx === null || uploadCtx === void 0 || (_uploadCtx$customIcon9 = uploadCtx.customIcon) === null || _uploadCtx$customIcon9 === void 0 || (_uploadCtx$customIcon10 = _uploadCtx$customIcon9.removeIcon) === null || _uploadCtx$customIcon10 === void 0 ? void 0 : _uploadCtx$customIcon10.call(_uploadCtx$customIcon9)) !== null && _ref5 !== void 0 ? _ref5 : createVNode(IconDelete, null, null)])];
102
- } })]),
115
+ } })])]),
103
116
  uploadCtx === null || uploadCtx === void 0 || (_uploadCtx$slots7$ext = (_uploadCtx$slots7 = uploadCtx.slots)["extra-button"]) === null || _uploadCtx$slots7$ext === void 0 ? void 0 : _uploadCtx$slots7$ext.call(_uploadCtx$slots7, { fileItem: props.file })
104
117
  ]);
105
118
  };
@@ -1,4 +1,5 @@
1
1
  import { getPrefixCls } from "../_utils/global-config.js";
2
+ import { isActivationKey } from "../_utils/keyboard.js";
2
3
  import IconEye from "../icon/icon-eye/index.js";
3
4
  import IconImageClose from "../icon/icon-image-close/index.js";
4
5
  import IconDelete from "../icon/icon-delete/index.js";
@@ -23,6 +24,12 @@ var upload_picture_item_default = /* @__PURE__ */ defineComponent({
23
24
  const itemCls = `${getPrefixCls("upload-list")}-picture`;
24
25
  const cls = computed(() => [itemCls, { [`${itemCls}-status-error`]: props.file.status === "error" }]);
25
26
  const uploadCtx = inject(uploadInjectionKey, void 0);
27
+ const onActionKeydown = (fn) => (e) => {
28
+ if (fn && isActivationKey(e)) {
29
+ e.preventDefault();
30
+ fn();
31
+ }
32
+ };
26
33
  const renderCard = () => {
27
34
  var _uploadCtx$slots$imag, _uploadCtx$slots, _uploadCtx$slots$imag2, _ref, _uploadCtx$slots$erro, _uploadCtx$slots2, _uploadCtx$slots2$err, _uploadCtx$customIcon, _uploadCtx$customIcon2, _ref2, _uploadCtx$slots$prev, _uploadCtx$slots3, _uploadCtx$slots3$pre, _uploadCtx$customIcon3, _uploadCtx$customIcon4, _ref3, _uploadCtx$slots$retr, _uploadCtx$slots4, _uploadCtx$slots4$ret, _uploadCtx$customIcon5, _uploadCtx$customIcon6, _ref4, _uploadCtx$slots$remo, _uploadCtx$slots5, _uploadCtx$slots5$rem, _uploadCtx$customIcon7, _uploadCtx$customIcon8, _uploadCtx$slots6, _uploadCtx$slots6$ext;
28
35
  if (props.file.status === "uploading") return createVNode(upload_progress_default, {
@@ -35,15 +42,30 @@ var upload_picture_item_default = /* @__PURE__ */ defineComponent({
35
42
  }, (uploadCtx === null || uploadCtx === void 0 ? void 0 : uploadCtx.imageLoading) ? { loading: uploadCtx.imageLoading } : void 0), null), createVNode("div", { "class": `${itemCls}-mask` }, [props.file.status === "error" && (uploadCtx === null || uploadCtx === void 0 ? void 0 : uploadCtx.showCancelButton) && createVNode("div", { "class": `${itemCls}-error-tip` }, [createVNode("span", { "class": [uploadCtx === null || uploadCtx === void 0 ? void 0 : uploadCtx.iconCls, `${uploadCtx === null || uploadCtx === void 0 ? void 0 : uploadCtx.iconCls}-error`] }, [(_ref = (_uploadCtx$slots$erro = uploadCtx === null || uploadCtx === void 0 || (_uploadCtx$slots2$err = (_uploadCtx$slots2 = uploadCtx.slots)["error-icon"]) === null || _uploadCtx$slots2$err === void 0 ? void 0 : _uploadCtx$slots2$err.call(_uploadCtx$slots2)) !== null && _uploadCtx$slots$erro !== void 0 ? _uploadCtx$slots$erro : uploadCtx === null || uploadCtx === void 0 || (_uploadCtx$customIcon = uploadCtx.customIcon) === null || _uploadCtx$customIcon === void 0 || (_uploadCtx$customIcon2 = _uploadCtx$customIcon.errorIcon) === null || _uploadCtx$customIcon2 === void 0 ? void 0 : _uploadCtx$customIcon2.call(_uploadCtx$customIcon)) !== null && _ref !== void 0 ? _ref : createVNode(IconImageClose, null, null)])]), createVNode("div", { "class": `${itemCls}-operation` }, [
36
43
  props.file.status !== "error" && (uploadCtx === null || uploadCtx === void 0 ? void 0 : uploadCtx.showPreviewButton) && createVNode("span", {
37
44
  "class": [uploadCtx === null || uploadCtx === void 0 ? void 0 : uploadCtx.iconCls, `${uploadCtx === null || uploadCtx === void 0 ? void 0 : uploadCtx.iconCls}-preview`],
38
- "onClick": () => uploadCtx === null || uploadCtx === void 0 ? void 0 : uploadCtx.onPreview(props.file)
45
+ "role": "button",
46
+ "tabindex": "0",
47
+ "aria-label": "Preview",
48
+ "onClick": () => uploadCtx === null || uploadCtx === void 0 ? void 0 : uploadCtx.onPreview(props.file),
49
+ "onKeydown": onActionKeydown(() => uploadCtx === null || uploadCtx === void 0 ? void 0 : uploadCtx.onPreview(props.file))
39
50
  }, [(_ref2 = (_uploadCtx$slots$prev = uploadCtx === null || uploadCtx === void 0 || (_uploadCtx$slots3$pre = (_uploadCtx$slots3 = uploadCtx.slots)["preview-icon"]) === null || _uploadCtx$slots3$pre === void 0 ? void 0 : _uploadCtx$slots3$pre.call(_uploadCtx$slots3)) !== null && _uploadCtx$slots$prev !== void 0 ? _uploadCtx$slots$prev : uploadCtx === null || uploadCtx === void 0 || (_uploadCtx$customIcon3 = uploadCtx.customIcon) === null || _uploadCtx$customIcon3 === void 0 || (_uploadCtx$customIcon4 = _uploadCtx$customIcon3.previewIcon) === null || _uploadCtx$customIcon4 === void 0 ? void 0 : _uploadCtx$customIcon4.call(_uploadCtx$customIcon3)) !== null && _ref2 !== void 0 ? _ref2 : createVNode(IconEye, null, null)]),
40
51
  ["init", "error"].includes(props.file.status) && (uploadCtx === null || uploadCtx === void 0 ? void 0 : uploadCtx.showRetryButton) && createVNode("span", {
41
52
  "class": [uploadCtx === null || uploadCtx === void 0 ? void 0 : uploadCtx.iconCls, `${uploadCtx === null || uploadCtx === void 0 ? void 0 : uploadCtx.iconCls}-upload`],
42
- "onClick": () => uploadCtx === null || uploadCtx === void 0 ? void 0 : uploadCtx.onUpload(props.file)
53
+ "role": "button",
54
+ "tabindex": "0",
55
+ "aria-label": "Retry upload",
56
+ "onClick": () => uploadCtx === null || uploadCtx === void 0 ? void 0 : uploadCtx.onUpload(props.file),
57
+ "onKeydown": onActionKeydown(() => uploadCtx === null || uploadCtx === void 0 ? void 0 : uploadCtx.onUpload(props.file))
43
58
  }, [(_ref3 = (_uploadCtx$slots$retr = uploadCtx === null || uploadCtx === void 0 || (_uploadCtx$slots4$ret = (_uploadCtx$slots4 = uploadCtx.slots)["retry-icon"]) === null || _uploadCtx$slots4$ret === void 0 ? void 0 : _uploadCtx$slots4$ret.call(_uploadCtx$slots4)) !== null && _uploadCtx$slots$retr !== void 0 ? _uploadCtx$slots$retr : uploadCtx === null || uploadCtx === void 0 || (_uploadCtx$customIcon5 = uploadCtx.customIcon) === null || _uploadCtx$customIcon5 === void 0 || (_uploadCtx$customIcon6 = _uploadCtx$customIcon5.retryIcon) === null || _uploadCtx$customIcon6 === void 0 ? void 0 : _uploadCtx$customIcon6.call(_uploadCtx$customIcon5)) !== null && _ref3 !== void 0 ? _ref3 : createVNode(IconUpload, null, null)]),
44
59
  !(uploadCtx === null || uploadCtx === void 0 ? void 0 : uploadCtx.disabled) && (uploadCtx === null || uploadCtx === void 0 ? void 0 : uploadCtx.showRemoveButton) && createVNode("span", {
45
60
  "class": [uploadCtx === null || uploadCtx === void 0 ? void 0 : uploadCtx.iconCls, `${uploadCtx === null || uploadCtx === void 0 ? void 0 : uploadCtx.iconCls}-remove`],
46
- "onClick": () => uploadCtx === null || uploadCtx === void 0 ? void 0 : uploadCtx.onRemove(props.file)
61
+ "role": "button",
62
+ "tabindex": "0",
63
+ "aria-label": "Remove",
64
+ "onClick": () => uploadCtx === null || uploadCtx === void 0 ? void 0 : uploadCtx.onRemove(props.file),
65
+ "onKeydown": onActionKeydown(() => {
66
+ var _uploadCtx$onRemove;
67
+ return uploadCtx === null || uploadCtx === void 0 || (_uploadCtx$onRemove = uploadCtx.onRemove) === null || _uploadCtx$onRemove === void 0 ? void 0 : _uploadCtx$onRemove.call(uploadCtx, props.file);
68
+ })
47
69
  }, [(_ref4 = (_uploadCtx$slots$remo = uploadCtx === null || uploadCtx === void 0 || (_uploadCtx$slots5$rem = (_uploadCtx$slots5 = uploadCtx.slots)["remove-icon"]) === null || _uploadCtx$slots5$rem === void 0 ? void 0 : _uploadCtx$slots5$rem.call(_uploadCtx$slots5)) !== null && _uploadCtx$slots$remo !== void 0 ? _uploadCtx$slots$remo : uploadCtx === null || uploadCtx === void 0 || (_uploadCtx$customIcon7 = uploadCtx.customIcon) === null || _uploadCtx$customIcon7 === void 0 || (_uploadCtx$customIcon8 = _uploadCtx$customIcon7.removeIcon) === null || _uploadCtx$customIcon8 === void 0 ? void 0 : _uploadCtx$customIcon8.call(_uploadCtx$customIcon7)) !== null && _ref4 !== void 0 ? _ref4 : createVNode(IconDelete, null, null)]),
48
70
  uploadCtx === null || uploadCtx === void 0 || (_uploadCtx$slots6$ext = (_uploadCtx$slots6 = uploadCtx.slots)["extra-button"]) === null || _uploadCtx$slots6$ext === void 0 ? void 0 : _uploadCtx$slots6$ext.call(_uploadCtx$slots6, props.file)
49
71
  ])])]);
@@ -184,7 +184,11 @@ var verification_code_default = /* @__PURE__ */ defineComponent({
184
184
  updateValue();
185
185
  };
186
186
  return () => {
187
- return createVNode("div", { "class": prefixCls }, [innerValue.value.map((c, i) => {
187
+ return createVNode("div", {
188
+ "class": prefixCls,
189
+ "role": "group",
190
+ "aria-label": "Verification code"
191
+ }, [innerValue.value.map((c, i) => {
188
192
  var _props$separator;
189
193
  return createVNode(Fragment, null, [createVNode(Input, mergeProps({
190
194
  "key": i,
@@ -196,6 +200,7 @@ var verification_code_default = /* @__PURE__ */ defineComponent({
196
200
  "error": props.error,
197
201
  "disabled": props.disabled,
198
202
  "readonly": props.readonly,
203
+ "inputAttrs": { "aria-label": `Character ${i + 1} of ${props.length}` },
199
204
  "onFocus": () => focusFirstEmptyInput(i),
200
205
  "onInput": (v, e) => handleInput(i, v, e)
201
206
  }, {
@@ -463,6 +463,10 @@
463
463
  "description": "Whether it is half-selected",
464
464
  "type": "boolean"
465
465
  },
466
+ "sd-checkbox/tabindex": {
467
+ "description": "tabindex for the native input (omitted by default so the input stays natively focusable; pass -1 in tree nodes to remove the checkbox from the Tab order and operate it via the treeitem)",
468
+ "type": "number|string"
469
+ },
466
470
  "sd-checkbox-group/change": {
467
471
  "description": "Trigger when the value changes"
468
472
  },
@@ -4353,6 +4357,17 @@
4353
4357
  "description": "Scroll threshold, trigger close when the scroll distance exceeds this value",
4354
4358
  "type": "number"
4355
4359
  },
4360
+ "sd-trigger/esc-to-close": {
4361
+ "description": "Whether to close the popup with the ESC key",
4362
+ "type": "boolean"
4363
+ },
4364
+ "sd-trigger/aria-has-popup": {
4365
+ "description": "Popup type for the trigger's `aria-haspopup`. When set, the trigger automatically gets `aria-haspopup` / `aria-expanded` / `aria-controls`, and the popup gets an id."
4366
+ },
4367
+ "sd-trigger/aria-describedby-popup": {
4368
+ "description": "Whether to add `aria-describedby` on the trigger pointing to the popup (tooltip pattern). Only applied while the popup is visible.",
4369
+ "type": "boolean"
4370
+ },
4356
4371
  "sd-typography-paragraph/blockquote": {
4357
4372
  "description": "Whether enable blockquote",
4358
4373
  "type": "boolean"
@@ -215,7 +215,8 @@
215
215
  "default-checked",
216
216
  "value",
217
217
  "disabled",
218
- "indeterminate"
218
+ "indeterminate",
219
+ "tabindex"
219
220
  ]
220
221
  },
221
222
  "sd-checkbox-group": {
@@ -1721,7 +1722,10 @@
1721
1722
  "render-to-body",
1722
1723
  "prevent-focus",
1723
1724
  "scroll-to-close",
1724
- "scroll-to-close-distance"
1725
+ "scroll-to-close-distance",
1726
+ "esc-to-close",
1727
+ "aria-has-popup",
1728
+ "aria-describedby-popup"
1725
1729
  ]
1726
1730
  },
1727
1731
  "sd-typography-paragraph": {
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://raw.githubusercontent.com/JetBrains/web-types/master/schema/web-types.json",
3
3
  "framework": "vue",
4
4
  "name": "@sdata/web-vue",
5
- "version": "3.12.0",
5
+ "version": "3.13.0",
6
6
  "contributions": {
7
7
  "html": {
8
8
  "types-syntax": "typescript",
@@ -1219,6 +1219,14 @@
1219
1219
  "type": "boolean",
1220
1220
  "kind": "expression"
1221
1221
  }
1222
+ },
1223
+ {
1224
+ "name": "tabindex",
1225
+ "description": "tabindex for the native input (omitted by default so the input stays natively focusable; pass -1 in tree nodes to remove the checkbox from the Tab order and operate it via the treeitem)",
1226
+ "value": {
1227
+ "type": "number|string",
1228
+ "kind": "expression"
1229
+ }
1222
1230
  }
1223
1231
  ],
1224
1232
  "events": [
@@ -10428,6 +10436,30 @@
10428
10436
  "type": "number",
10429
10437
  "kind": "expression"
10430
10438
  }
10439
+ },
10440
+ {
10441
+ "name": "esc-to-close",
10442
+ "description": "Whether to close the popup with the ESC key",
10443
+ "value": {
10444
+ "type": "boolean",
10445
+ "kind": "expression"
10446
+ }
10447
+ },
10448
+ {
10449
+ "name": "aria-has-popup",
10450
+ "description": "Popup type for the trigger's `aria-haspopup`. When set, the trigger automatically gets `aria-haspopup` / `aria-expanded` / `aria-controls`, and the popup gets an id.",
10451
+ "value": {
10452
+ "type": "boolean | 'menu' | 'listbox' | 'tree' | 'grid' | 'dialog'",
10453
+ "kind": "expression"
10454
+ }
10455
+ },
10456
+ {
10457
+ "name": "aria-describedby-popup",
10458
+ "description": "Whether to add `aria-describedby` on the trigger pointing to the popup (tooltip pattern). Only applied while the popup is visible.",
10459
+ "value": {
10460
+ "type": "boolean",
10461
+ "kind": "expression"
10462
+ }
10431
10463
  }
10432
10464
  ],
10433
10465
  "events": [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sdata/web-vue",
3
- "version": "3.13.0",
3
+ "version": "3.14.0",
4
4
  "description": "SD Design Vue: A Vue.js 3 UI Library",
5
5
  "keywords": [
6
6
  "sd",