@aifuxi/semi-ui-vue 1.0.0-next.1 → 1.0.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,84 @@
1
1
  # @aifuxi/semi-ui-vue
2
2
 
3
+ ## 1.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - [#2](https://github.com/aifuxi/semi-ui-vue/pull/2) [`2364e0e`](https://github.com/aifuxi/semi-ui-vue/commit/2364e0edc54af8542d115b1bda12f4c4700ba7d3) Thanks [@aifuxi](https://github.com/aifuxi)! - 进入 1.0 预发布验证阶段:提供固定 Semi 2.102.0 基线的 Vue 组件、主题、图标与插画,以及近期修复的 Markdown 跨 chunk 绑定和文档 REPL 循环依赖加载。五个公开包统一使用 next 渠道;从旧 alpha 升级时应一起更新五包并按组件文档核对 Vue props、emits、slots 与 v-model。此候选不代表稳定版产品验收完成。
8
+
9
+ ### Patch Changes
10
+
11
+ - [#14](https://github.com/aifuxi/semi-ui-vue/pull/14) [`ed52848`](https://github.com/aifuxi/semi-ui-vue/commit/ed52848720919481083c9a180b3905c5137b3f51) Thanks [@aifuxi](https://github.com/aifuxi)! - 修复 Select 声明式选项和 Pagination 小尺寸模式的 SSR hydration 差异
12
+
13
+ - [#14](https://github.com/aifuxi/semi-ui-vue/pull/14) [`aed4289`](https://github.com/aifuxi/semi-ui-vue/commit/aed4289a884c05a936d877eada568889995ef398) Thanks [@aifuxi](https://github.com/aifuxi)! - 修复 Calendar、Cascader、Modal、Radio、Select 与 Tooltip 在 SSR hydration 时的首屏差异。
14
+
15
+ - [#14](https://github.com/aifuxi/semi-ui-vue/pull/14) [`b7d048e`](https://github.com/aifuxi/semi-ui-vue/commit/b7d048ebb24f58bf159dee37f4f036880783dc86) Thanks [@aifuxi](https://github.com/aifuxi)! - 修复 InputNumber 未向内部 Input 转发部分继承输入属性的问题
16
+
17
+ - [#14](https://github.com/aifuxi/semi-ui-vue/pull/14) [`88aec57`](https://github.com/aifuxi/semi-ui-vue/commit/88aec5700d7c8fdb5217c40627d22096d12e47be) Thanks [@aifuxi](https://github.com/aifuxi)! - 修复 Rating 根节点未透传 aria-errormessage、aria-invalid 和 aria-required 的问题
18
+
19
+ - [#2](https://github.com/aifuxi/semi-ui-vue/pull/2) [`97ac1b6`](https://github.com/aifuxi/semi-ui-vue/commit/97ac1b60829027141779e39ddd78189973cdee47) Thanks [@aifuxi](https://github.com/aifuxi)! - Expose the pinned `getConfigureItem` factory so custom controls can join `AIChatInput.Configure`.
20
+
21
+ - [#2](https://github.com/aifuxi/semi-ui-vue/pull/2) [`4828654`](https://github.com/aifuxi/semi-ui-vue/commit/482865404c53e633d746faa9a5123556906fe7cd) Thanks [@aifuxi](https://github.com/aifuxi)! - 修复 Avatar 共享 slot 配置时的节点复用:`topSlot.text`/`bottomSlot.text`/`hoverMask` 传入的 VNode 在渲染前克隆,使同一份配置对象在每个头像实例上都继续渲染,不再静默丢失内容;同步记录 Avatar 双语文档严格验收。
22
+
23
+ - [#2](https://github.com/aifuxi/semi-ui-vue/pull/2) [`a789395`](https://github.com/aifuxi/semi-ui-vue/commit/a789395154f01c061ef0f56dcf6cb8b43df6b5cc) Thanks [@aifuxi](https://github.com/aifuxi)! - 修复 Calendar 月视图与固定 Adapter 的 DOM 差异:普通 gridcell 始终输出 `aria-current`(当天 `date`、其余 `false`),折叠单元格的 Popover 触发器 `<li>` 不再重复附加 `role="gridcell"`、`aria-label` 与 `aria-current`;同步完成 Calendar 双语文档严格验收。
24
+
25
+ - [#2](https://github.com/aifuxi/semi-ui-vue/pull/2) [`2280b6a`](https://github.com/aifuxi/semi-ui-vue/commit/2280b6abf91eb716b7986fa6d54a466d5d154152) Thanks [@aifuxi](https://github.com/aifuxi)! - Add the default export for the `code-highlight` public entry.
26
+
27
+ - [#2](https://github.com/aifuxi/semi-ui-vue/pull/2) [`a7f2192`](https://github.com/aifuxi/semi-ui-vue/commit/a7f21925f63a59a5a2f3425bda1284a3fed903b3) Thanks [@aifuxi](https://github.com/aifuxi)! - 修复 CollapsePanel 的 `aria-owns` 渲染传播:面板 id 在挂载后赋值且不触发渲染,固定 Adapter 会在展开集变化时重渲染全部面板,Vue 此前只有自身重渲染过的面板才输出 id;现按同一时机传播,默认态仍保持空值。同步完成 Collapse 双语文档严格验收。
28
+
29
+ - [#2](https://github.com/aifuxi/semi-ui-vue/pull/2) [`71ad9a1`](https://github.com/aifuxi/semi-ui-vue/commit/71ad9a1c53e769d5efb90109af435a0118a9e6f6) Thanks [@aifuxi](https://github.com/aifuxi)! - Add the DragMove subpath default export to match the fixed Semi public entry.
30
+
31
+ - [#2](https://github.com/aifuxi/semi-ui-vue/pull/2) [`306e1c5`](https://github.com/aifuxi/semi-ui-vue/commit/306e1c5a57c27b9e05bdc3a9e338f589fd932677) Thanks [@aifuxi](https://github.com/aifuxi)! - 修复 Dropdown 的组件触发器未转发 Tooltip ARIA 关联、Tag 触发器 tabIndex 丢失的问题,保留调用方显式焦点顺序,并按固定基线恢复嵌套 DropdownItem 的属性透传边界。将 Escape 回焦保留在隐藏前,移除关闭通知和动画结束后的额外聚焦,避免抢走用户已转移的焦点或改变重开后的焦点样式。
32
+
33
+ - [#2](https://github.com/aifuxi/semi-ui-vue/pull/2) [`54f78a2`](https://github.com/aifuxi/semi-ui-vue/commit/54f78a2d82b550ff3dd867f74d528f176afd11b8) Thanks [@aifuxi](https://github.com/aifuxi)! - 修复 SideSheet 进入动画结束后残留的状态 class,分别清理遮罩与内容动画状态,退出时等待真实动画结束,避免定时器提前卸载;补充 Feedback 双语文档严格验收。
34
+
35
+ - [#2](https://github.com/aifuxi/semi-ui-vue/pull/2) [`8500f8c`](https://github.com/aifuxi/semi-ui-vue/commit/8500f8c4409fcd039f3bdadfb16b5cc9b048fac1) Thanks [@aifuxi](https://github.com/aifuxi)! - 修复 Image 预览页码的文本节点渲染,使底栏宽度与固定 Semi 基线一致。
36
+ 为 ImagePreview 分组恢复稳定的实例 ID。
37
+
38
+ 修复 Modal 自定义渲染边界,使 modalRender 仅包装对话框内容,并正确保留外层布局与拖拽行为。
39
+ 恢复静态 Modal 自定义 Semi 图标的尺寸和状态样式。
40
+
41
+ 修复 Tooltip/Popover 初始焦点引用,优先调用组件公开的 focus 方法。
42
+
43
+ - [#2](https://github.com/aifuxi/semi-ui-vue/pull/2) [`a2fa89e`](https://github.com/aifuxi/semi-ui-vue/commit/a2fa89ea75e034f87248221ace7e8b6b1230396c) Thanks [@aifuxi](https://github.com/aifuxi)! - 修复 Modal 数字 `width` 与 `height` 没有显式转换为 CSS `px` 的问题;字符串尺寸继续原样保留。
44
+
45
+ - [#2](https://github.com/aifuxi/semi-ui-vue/pull/2) [`a0fd13b`](https://github.com/aifuxi/semi-ui-vue/commit/a0fd13bfc367c8b6d883a8450275d69fdb40d7fe) Thanks [@aifuxi](https://github.com/aifuxi)! - 对齐 Notification 固定基线:任意合法 type 都保留 `semi-notification-notice-icon-show` class,自定义 Semi 图标按显式尺寸或 `large` 克隆;完成八项双语文档示例的严格视觉与行为验收。
46
+
47
+ - [#2](https://github.com/aifuxi/semi-ui-vue/pull/2) [`82b6ce7`](https://github.com/aifuxi/semi-ui-vue/commit/82b6ce72d4298aa7fbef2aee5663ce2e39e8ba9e) Thanks [@aifuxi](https://github.com/aifuxi)! - 修复 OverflowList 隐藏项计数不更新:折叠模式的 `+N` 与滚动模式两端的边缘计数此前停留在首次渲染值(折叠模式的 overflow 渲染器在 computed 中调用,VNode 创建在渲染之外;滚动模式的槽位被 Vue 的 stable 槽更新跳过)。现改为在渲染期调用 overflow 渲染器,并在隐藏项变化时以隐藏项键重建折叠包装节点与滚动边缘片段;同步完成 OverflowList 双语文档严格验收。
48
+
49
+ - [#2](https://github.com/aifuxi/semi-ui-vue/pull/2) [`25e41b1`](https://github.com/aifuxi/semi-ui-vue/commit/25e41b1c4b525c8d165a7a635c5805f3609948da) Thanks [@aifuxi](https://github.com/aifuxi)! - 修复 TagGroup 折叠计数的内容布局和 ARIA、浮层关闭后再次打开内容为空,以及 Popover 箭头额外的 aria-hidden 属性,使其与固定 Semi 基线一致;修复 Tooltip 在 rePosKey 与触发器位置同时更新时读取旧 DOM、导致滑块提示偏移的问题;并行推进 ScrollList、Tag、Timeline 双语文档严格验收,补齐批次矩阵、参考适配与章节/API/迁移审阅。
50
+
51
+ - [#2](https://github.com/aifuxi/semi-ui-vue/pull/2) [`eb5c0b6`](https://github.com/aifuxi/semi-ui-vue/commit/eb5c0b6861b10f8680c98f3ddcb96e1fa008b02f) Thanks [@aifuxi](https://github.com/aifuxi)! - 修复 `RadioGroup` 丢弃 slot 顶层 `v-for` 生成的 `Fragment`:模板内直接 `v-for` 的 `Radio` 现在全部渲染并保持组选中语义(此前整段列表被过滤掉)。同时完成 Popconfirm 四项示例的双语、明暗与适用 RTL 严格验收。
52
+
53
+ - [#2](https://github.com/aifuxi/semi-ui-vue/pull/2) [`067a196`](https://github.com/aifuxi/semi-ui-vue/commit/067a1961c0f50765581585b8615e5340f912cfc4) Thanks [@aifuxi](https://github.com/aifuxi)! - Export TagInput size and validate-status constants from the public entry.
54
+
55
+ - [#2](https://github.com/aifuxi/semi-ui-vue/pull/2) [`32ff62b`](https://github.com/aifuxi/semi-ui-vue/commit/32ff62b9eb59f660fc3f996b61322106c706e468) Thanks [@aifuxi](https://github.com/aifuxi)! - Export Resizable direction constants and public helper types from the resizable entry.
56
+
57
+ - [#2](https://github.com/aifuxi/semi-ui-vue/pull/2) [`36c5e86`](https://github.com/aifuxi/semi-ui-vue/commit/36c5e86f635745f6f7eaeefd949bb8ef95108287) Thanks [@aifuxi](https://github.com/aifuxi)! - 修复 SideSheet 初始省略 `mask` 后动态显式设置 `mask=false` 时仍保留遮罩的问题。
58
+
59
+ - [#7](https://github.com/aifuxi/semi-ui-vue/pull/7) [`e3a4995`](https://github.com/aifuxi/semi-ui-vue/commit/e3a49950a74b8e62d9ff0fa7fde691cfd4dc96bb) Thanks [@aifuxi](https://github.com/aifuxi)! - 修复父级重渲染后插件插槽内容不刷新的问题:读取插槽的派生值改为每次渲染重新求值,覆盖 Tag、Typography、Table 等全部读取插槽的组件;同时修复 Table 同 `dataIndex` 多列的表头标题互相覆盖,并补充 Switch、Space、Grid 与固定基线一致的已知限制文档。
60
+
61
+ - [#2](https://github.com/aifuxi/semi-ui-vue/pull/2) [`2a76510`](https://github.com/aifuxi/semi-ui-vue/commit/2a765109eb57a107d5c58a6b36605231046cbb77) Thanks [@aifuxi](https://github.com/aifuxi)! - Align Table virtual scrolling, measurement caches and end-of-list navigation, declarative and grouped headers, optional cell render props, dynamic fixed-column layout and expanded content, and complete sorting/filtering callback queries with the pinned Semi baseline. Reset internal Table state when entering or leaving resizable mode. Prevent duplicate pagination and expansion callbacks, preserve Switch state when controlled checked is removed, and correct the bilingual Table documentation examples.
62
+
63
+ - [#2](https://github.com/aifuxi/semi-ui-vue/pull/2) [`503f6e8`](https://github.com/aifuxi/semi-ui-vue/commit/503f6e81ac981958b4f35acbd1649f856a57cbcd) Thanks [@aifuxi](https://github.com/aifuxi)! - Apply the pinned ColumnProps of object `expandedRowRender` results to the expanded row cell and evaluate them once per rendered expanded row.
64
+
65
+ - [#2](https://github.com/aifuxi/semi-ui-vue/pull/2) [`df6cc51`](https://github.com/aifuxi/semi-ui-vue/commit/df6cc512c900029c5854d8b10c18631bea9655a7) Thanks [@aifuxi](https://github.com/aifuxi)! - Add the pinned `Tabs.TabPane` and `Tabs.TabItem` compound statics to the public entry.
66
+
67
+ - [#2](https://github.com/aifuxi/semi-ui-vue/pull/2) [`f6096e6`](https://github.com/aifuxi/semi-ui-vue/commit/f6096e62fd4dc674547640e4d78150532a4d8d81) Thanks [@aifuxi](https://github.com/aifuxi)! - 修复 Table 受控分页重复切片、受控排序通知、行列无障碍属性与 RTL 固定列,并向自定义 sorter 传递排序方向;补齐 Checkbox 独立名称透传、Table 选择状态名称与 Pagination 非当前页状态。修复 SideSheet 数字宽高及多实例容器切换时的 Portal 锚点错误,补充对应文档严格对照。
68
+
69
+ 补齐 Select 多选标签的默认方形样式与最大宽度,支持文档示例通过方向参数预览真实 RTL 上下文。
70
+
71
+ 修复 Input 与 Checkbox 缺省无障碍属性的输出,以及 Descriptions 复用 VNode 数据时展开行关闭重开后内容丢失的问题。
72
+
73
+ 修复 Dropdown 在弹层定位前提前触发可见性通知、导致回调聚焦使页面意外滚动的问题;保留受控可见状态的即时回写。
74
+
75
+ - [#2](https://github.com/aifuxi/semi-ui-vue/pull/2) [`84bcff5`](https://github.com/aifuxi/semi-ui-vue/commit/84bcff501a97c0718502cf7084e0a54634889347) Thanks [@aifuxi](https://github.com/aifuxi)! - 对齐 Toast 固定基线:`useToast` holder 改为就地渲染裸 Toast(不再包 `.semi-toast-innerWrapper`)、空 holder 不渲染节点且列表位移为 0;完成九项双语示例(含英文独有 Stacking)的严格视觉与行为验收。
76
+
77
+ - [#2](https://github.com/aifuxi/semi-ui-vue/pull/2) [`d0bee77`](https://github.com/aifuxi/semi-ui-vue/commit/d0bee772c354865bb231065cafc27428e2e4584c) Thanks [@aifuxi](https://github.com/aifuxi)! - 修复 Table 的分组分页顺序与分组行结构、树叶缩进和展开图标响应式更新,以及列宽回调结果、拖动样式与容器尺寸监听,使固定文档示例符合公开契约。
78
+ - Updated dependencies []:
79
+ - @aifuxi/semi-icons-vue@1.0.0
80
+ - @aifuxi/semi-illustrations-vue@1.0.0
81
+
3
82
  ## 1.0.0-next.1
4
83
 
5
84
  ### Patch Changes
@@ -2,13 +2,13 @@
2
2
  "spdxVersion": "SPDX-2.3",
3
3
  "dataLicense": "CC0-1.0",
4
4
  "SPDXID": "SPDXRef-DOCUMENT",
5
- "name": "@aifuxi/semi-ui-vue-1.0.0-next.1",
6
- "documentNamespace": "https://github.com/aifuxi/semi-ui-vue/spdx/%40aifuxi%2Fsemi-ui-vue/1.0.0-next.1/cdfba6e520fc83ad871b30f51f36d8af3aaa5a21/ac74ddb9b85e90c7",
5
+ "name": "@aifuxi/semi-ui-vue-1.0.0",
6
+ "documentNamespace": "https://github.com/aifuxi/semi-ui-vue/spdx/%40aifuxi%2Fsemi-ui-vue/1.0.0/cdfba6e520fc83ad871b30f51f36d8af3aaa5a21/80c3a813551a3f3c",
7
7
  "documentDescribes": [
8
8
  "SPDXRef-Package-Workspace"
9
9
  ],
10
10
  "creationInfo": {
11
- "created": "2026-09-19T01:20:35.958Z",
11
+ "created": "2026-09-22T03:05:28.524Z",
12
12
  "creators": [
13
13
  "Tool: semi-ui-vue-workspace"
14
14
  ]
@@ -17,7 +17,7 @@
17
17
  {
18
18
  "SPDXID": "SPDXRef-Package-Workspace",
19
19
  "name": "@aifuxi/semi-ui-vue",
20
- "versionInfo": "1.0.0-next.1",
20
+ "versionInfo": "1.0.0",
21
21
  "supplier": "Person: aifuxi",
22
22
  "downloadLocation": "https://github.com/aifuxi/semi-ui-vue",
23
23
  "filesAnalyzed": false,
@@ -45,7 +45,7 @@
45
45
  {
46
46
  "SPDXID": "SPDXRef-Package--aifuxi-semi-icons-vue",
47
47
  "name": "@aifuxi/semi-icons-vue",
48
- "versionInfo": "1.0.0-next.1",
48
+ "versionInfo": "1.0.0",
49
49
  "downloadLocation": "NOASSERTION",
50
50
  "filesAnalyzed": false,
51
51
  "licenseConcluded": "NOASSERTION",
@@ -54,7 +54,7 @@
54
54
  {
55
55
  "SPDXID": "SPDXRef-Package--aifuxi-semi-illustrations-vue",
56
56
  "name": "@aifuxi/semi-illustrations-vue",
57
- "versionInfo": "1.0.0-next.1",
57
+ "versionInfo": "1.0.0",
58
58
  "downloadLocation": "NOASSERTION",
59
59
  "filesAnalyzed": false,
60
60
  "licenseConcluded": "NOASSERTION",
@@ -75,6 +75,12 @@ const TooltipTriggerRenderer = defineComponent({
75
75
  'aria-describedby': props.popupId
76
76
  };
77
77
  const explicitTabindex = originalProps.tabindex ?? originalProps.tabIndex;
78
+ const tabindex = explicitTabindex ?? 0;
79
+ const tabindexProp = Object.hasOwn(originalProps, 'tabindex') ? {
80
+ tabindex
81
+ } : {
82
+ tabIndex: tabindex
83
+ };
78
84
  return cloneVNode(node, {
79
85
  ...aria,
80
86
  ...props.eventSet,
@@ -84,7 +90,7 @@ const TooltipTriggerRenderer = defineComponent({
84
90
  originalProps.style,
85
91
  extraStyle
86
92
  ],
87
- tabIndex: explicitTabindex ?? 0
93
+ ...tabindexProp
88
94
  }, true);
89
95
  };
90
96
  return ()=>{
@@ -165,6 +165,7 @@ const Calendarvue_type_script_setup_true_lang_ts = /*@__PURE__*/ defineComponent
165
165
  formatClickValue: (value)=>foundation.formatCbValue([
166
166
  ...value
167
167
  ]),
168
+ formatDateLabel: (value)=>value.toLocaleDateString(localeCode.value),
168
169
  getPopupContainer: computed(()=>config.value.getPopupContainer),
169
170
  locale,
170
171
  moreClick: (event, date, remaining)=>emit('moreClick', event, date, remaining),
@@ -74,10 +74,11 @@ const CalendarDayColumnvue_type_script_setup_true_lang_ts = /*@__PURE__*/ define
74
74
  const end = event.endPos ?? 0;
75
75
  const top = start * props.scrollHeight;
76
76
  const height = Math.max(props.minEventHeight, (end - start) * props.scrollHeight);
77
+ const left = 'string' == typeof event.left ? Number.parseFloat(event.left) : event.left;
77
78
  return {
78
79
  top: `${top}px`,
79
80
  height: `${height}px`,
80
- left: event.left ?? 0
81
+ left: Number.isFinite(left) && 'string' == typeof event.left ? event.left : '0%'
81
82
  };
82
83
  }
83
84
  function tick(timestamp) {
@@ -425,15 +425,19 @@ const InputNumbervue_type_script_setup_true_lang_ts = /*@__PURE__*/ defineCompon
425
425
  if (void 0 !== props.addonAfter) output.addonAfter = props.addonAfter;
426
426
  if (void 0 !== props.addonBefore) output.addonBefore = props.addonBefore;
427
427
  if (void 0 !== props.clearIcon) output.clearIcon = props.clearIcon;
428
+ if (void 0 !== props.getValueLength) output.getValueLength = props.getValueLength;
429
+ if (void 0 !== props.hideSuffix) output.hideSuffix = props.hideSuffix;
428
430
  if (void 0 !== props.inputStyle) output.inputStyle = props.inputStyle;
429
431
  if (void 0 !== props.insetLabelId) output.insetLabelId = props.insetLabelId;
430
432
  if (void 0 !== props.maxLength) output.maxLength = props.maxLength;
431
433
  if (void 0 !== props.minLength) output.minLength = props.minLength;
434
+ if (void 0 !== props.mode) output.mode = props.mode;
432
435
  if (void 0 !== props.onlyBorder) output.onlyBorder = props.onlyBorder;
433
436
  if (void 0 !== props.placeholder) output.placeholder = props.placeholder;
434
437
  if (void 0 !== props.prefix) output.prefix = props.prefix;
435
438
  if (void 0 !== props.preventScroll) output.preventScroll = props.preventScroll;
436
439
  if (void 0 !== props.showClearIgnoreDisabled) output.showClearIgnoreDisabled = props.showClearIgnoreDisabled;
440
+ if (void 0 !== props.type) output.type = props.type;
437
441
  if (void 0 !== props.insetLabel) output.insetLabel = props.insetLabel;
438
442
  if (!(props.innerButtons && (state.hovering || state.focusing)) && void 0 !== props.suffix) output.suffix = props.suffix;
439
443
  if (void 0 !== props.ariaLabel) output.ariaLabel = props.ariaLabel;
@@ -1,9 +1,11 @@
1
1
  import { computed, createCommentVNode, toDisplayString, unref, onBeforeUnmount, Fragment, shallowRef, mergeProps, onMounted, renderList, nextTick, createElementBlock, createElementVNode, useTemplateRef, createVNode, createBlock, normalizeClass, openBlock, normalizeStyle, createTextVNode, watch, withCtx, defineComponent } from "./330ae99bbf61.js";
2
2
  import { IconClose } from "./917f04598950.js";
3
+ import "./a7e0eab4d4b0.js";
3
4
  import { useCalendarRuntime } from "./9eb1c76aef06.js";
4
5
  import { CalendarNodeRenderer } from "./069850ae223a.js";
5
6
  import { Tooltip } from "./2e8179a1a44a.js";
6
7
  import { Button } from "./2685e49b8e1b.js";
8
+ import { round } from "./6690e6254b21.js";
7
9
  const _hoisted_1 = {
8
10
  role: "presentation",
9
11
  class: "semi-calendar-month-sticky-top"
@@ -156,8 +158,8 @@ const CalendarMonthvue_type_script_setup_true_lang_ts = /*@__PURE__*/ defineComp
156
158
  }
157
159
  function eventStyle(event) {
158
160
  return {
159
- left: `${100 * Math.min(event.leftPos ?? 0, 1)}%`,
160
- width: `${100 * Math.min(event.width ?? 0, 1)}%`,
161
+ left: `${round(100 * Math.min(event.leftPos ?? 0, 1))}%`,
162
+ width: `${round(100 * Math.min(event.width ?? 0, 1))}%`,
161
163
  top: `${event.topInd ?? 0}em`
162
164
  };
163
165
  }
@@ -353,7 +355,7 @@ const CalendarMonthvue_type_script_setup_true_lang_ts = /*@__PURE__*/ defineComp
353
355
  ])) : (openBlock(), createElementBlock("li", {
354
356
  key: 1,
355
357
  role: "gridcell",
356
- "aria-label": day.date.toLocaleDateString(),
358
+ "aria-label": unref(runtime).formatDateLabel(day.date),
357
359
  "aria-current": day.isToday ? 'date' : 'false',
358
360
  class: normalizeClass(dayClasses(day)),
359
361
  onClick: ($event)=>clickDay($event, day)
@@ -1,4 +1,4 @@
1
- import { computed, createCommentVNode, useSlots, markRaw, shallowReactive, shallowRef, inject, onBeforeUnmount, unref, onMounted, nextTick, useAttrs, h, createElementBlock, createBlock, useTemplateRef, createVNode, getCurrentInstance, normalizeClass, openBlock, normalizeStyle, watch, Teleport, defineComponent } from "./bee1afbee802.js";
1
+ import { computed, createCommentVNode, useSlots, markRaw, shallowReactive, shallowRef, inject, onBeforeUnmount, unref, onMounted, nextTick, useAttrs, h, createBlock, useTemplateRef, createElementVNode, getCurrentInstance, normalizeClass, openBlock, createVNode, normalizeStyle, watch, Teleport, defineComponent } from "./bee1afbee802.js";
2
2
  import "./a7e0eab4d4b0.js";
3
3
  import { configContextKey } from "./650465d64194.js";
4
4
  import { semiGlobal as semi_global } from "./7d608cdc8674.js";
@@ -443,12 +443,12 @@ const Modalvue_type_script_setup_true_lang_ts = /*@__PURE__*/ defineComponent({
443
443
  if (activeCycle) foundation.destroy();
444
444
  else foundation.enabledBodyScroll();
445
445
  });
446
- return (_ctx, _cache)=>(openBlock(), createBlock(Teleport, {
446
+ return (_ctx, _cache)=>shouldRender.value ? (openBlock(), createBlock(Teleport, {
447
+ key: 0,
447
448
  to: teleportTarget.value ?? 'body',
448
449
  disabled: null === teleportTarget.value
449
450
  }, [
450
- shouldRender.value ? (openBlock(), createElementBlock("div", {
451
- key: 0,
451
+ createElementVNode("div", {
452
452
  class: normalizeClass([
453
453
  "semi-portal",
454
454
  {
@@ -527,11 +527,11 @@ const Modalvue_type_script_setup_true_lang_ts = /*@__PURE__*/ defineComponent({
527
527
  "visible",
528
528
  "width"
529
529
  ])
530
- ], 6)) : createCommentVNode("", true)
530
+ ], 6)
531
531
  ], 8, [
532
532
  "to",
533
533
  "disabled"
534
- ]));
534
+ ])) : createCommentVNode("", true);
535
535
  }
536
536
  });
537
537
  export { Modalvue_type_script_setup_true_lang_ts };
@@ -476,7 +476,7 @@ const Selectvue_type_script_setup_true_lang_ts = /*@__PURE__*/ defineComponent({
476
476
  const serialized = JSON.stringify(nextSignature);
477
477
  if (serialized === optionSignature) return;
478
478
  optionSignature = serialized;
479
- if ("u" < typeof document && 0 === state.options.length) {
479
+ if (0 === state.options.length) {
480
480
  const options = collectOptions();
481
481
  const rawValue = controlled.value ? runtimeProps.value.value ?? runtimeProps.value.modelValue : runtimeProps.value.defaultValue;
482
482
  const values = runtimeProps.value.multiple ? Array.isArray(rawValue) ? rawValue : void 0 === rawValue ? [] : [
@@ -1109,11 +1109,12 @@ const Selectvue_type_script_setup_true_lang_ts = /*@__PURE__*/ defineComponent({
1109
1109
  ]),
1110
1110
  _: 3
1111
1111
  }, 16)) : unref(state).inputValue ? createCommentVNode("", true) : (openBlock(), createElementBlock("span", _hoisted_24, [
1112
- createVNode(unref(SelectNodeRenderer), {
1112
+ '' !== runtimeProps.value.placeholder ? (openBlock(), createBlock(unref(SelectNodeRenderer), {
1113
+ key: 0,
1113
1114
  content: runtimeProps.value.placeholder
1114
1115
  }, null, 8, [
1115
1116
  "content"
1116
- ])
1117
+ ])) : createCommentVNode("", true)
1117
1118
  ])),
1118
1119
  runtimeProps.value.filter && 'trigger' === runtimeProps.value.searchPosition ? (openBlock(), createElementBlock("div", {
1119
1120
  key: 2,
@@ -1151,7 +1152,7 @@ const Selectvue_type_script_setup_true_lang_ts = /*@__PURE__*/ defineComponent({
1151
1152
  }, null, 8, [
1152
1153
  "content"
1153
1154
  ])
1154
- ], void 0, 0) : unref(state).inputValue ? createCommentVNode("", true) : (openBlock(), createBlock(unref(SelectNodeRenderer), {
1155
+ ], void 0, 0) : unref(state).inputValue || '' === runtimeProps.value.placeholder ? createCommentVNode("", true) : (openBlock(), createBlock(unref(SelectNodeRenderer), {
1155
1156
  key: 1,
1156
1157
  content: runtimeProps.value.placeholder
1157
1158
  }, null, 8, [
@@ -10,6 +10,9 @@ const _hoisted_1 = [
10
10
  "aria-label",
11
11
  "aria-labelledby",
12
12
  "aria-describedby",
13
+ "aria-errormessage",
14
+ "aria-invalid",
15
+ "aria-required",
13
16
  "tabindex"
14
17
  ];
15
18
  const Ratingvue_type_script_setup_true_lang_ts = /*@__PURE__*/ defineComponent({
@@ -271,6 +274,9 @@ const Ratingvue_type_script_setup_true_lang_ts = /*@__PURE__*/ defineComponent({
271
274
  "aria-label": ariaLabel.value,
272
275
  "aria-labelledby": ariaLabelledby.value,
273
276
  "aria-describedby": ariaDescribedby.value,
277
+ "aria-errormessage": props.ariaErrormessage,
278
+ "aria-invalid": props.ariaInvalid,
279
+ "aria-required": props.ariaRequired,
274
280
  class: rootClasses.value,
275
281
  style: props.style,
276
282
  tabindex: props.disabled ? -1 : props.tabIndex,
@@ -1 +1 @@
1
- export { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createSlots, createVNode, defineComponent, getCurrentInstance, inject, mergeProps, openBlock, renderSlot, unref, watch, withCtx } from "vue";
1
+ export { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createSlots, createVNode, defineComponent, getCurrentInstance, inject, mergeProps, openBlock, renderSlot, unref, useId, watch, withCtx } from "vue";
@@ -113,8 +113,8 @@ const Radiovue_type_script_setup_true_lang_ts = /*@__PURE__*/ defineComponent({
113
113
  const hasExtra = computed(()=>void 0 !== slots.extra || Boolean(props.extra));
114
114
  const state = shallowReactive({
115
115
  hover: false,
116
- addonId: props.addonId,
117
- extraId: props.extraId,
116
+ addonId: props.addonId ?? (hasAddon.value ? `addon-${generatedId}` : void 0),
117
+ extraId: props.extraId ?? (hasExtra.value ? `extra-${generatedId}` : void 0),
118
118
  focusVisible: false,
119
119
  checked: controlled.value && !(hasChecked.value && void 0 === props.checked) ? controlledChecked.value : props.defaultChecked
120
120
  });
@@ -1,4 +1,4 @@
1
- import { createCommentVNode, useSlots, markRaw, shallowReactive, toDisplayString, inject, onBeforeUnmount, unref, Fragment, mergeProps, renderList, useAttrs, createElementBlock, createBlock, createElementVNode, createVNode, getCurrentInstance, resolveDynamicComponent, openBlock, normalizeClass, renderSlot, watch, withCtx, computed, defineComponent } from "./c11eef486688.js";
1
+ import { createCommentVNode, useSlots, markRaw, shallowReactive, shallowRef, inject, onBeforeUnmount, toDisplayString, unref, onMounted, mergeProps, Fragment, renderList, useAttrs, createElementBlock, createBlock, createElementVNode, createVNode, getCurrentInstance, resolveDynamicComponent, openBlock, normalizeClass, renderSlot, watch, withCtx, computed, defineComponent } from "./c11eef486688.js";
2
2
  import { IconChevronLeft, IconChevronRight } from "./d3fd33519eeb.js";
3
3
  import "./a7e0eab4d4b0.js";
4
4
  import { configContextKey } from "./650465d64194.js";
@@ -18,17 +18,22 @@ const _hoisted_2 = [
18
18
  "aria-disabled"
19
19
  ];
20
20
  const _hoisted_3 = {
21
+ key: 0,
22
+ class: "semi-page-item semi-page-item-small"
23
+ };
24
+ const _hoisted_4 = {
25
+ key: 1,
21
26
  class: "semi-page-item semi-page-item-small"
22
27
  };
23
- const _hoisted_4 = [
28
+ const _hoisted_5 = [
24
29
  "aria-label",
25
30
  "aria-current",
26
31
  "onClick"
27
32
  ];
28
- const _hoisted_5 = [
33
+ const _hoisted_6 = [
29
34
  "aria-disabled"
30
35
  ];
31
- const _hoisted_6 = {
36
+ const _hoisted_7 = {
32
37
  key: 3,
33
38
  class: "semi-page-switch"
34
39
  };
@@ -170,6 +175,10 @@ const Paginationvue_type_script_setup_true_lang_ts = /*@__PURE__*/ defineCompone
170
175
  }, (_, index)=>index + 1) : []
171
176
  });
172
177
  const cache = new Map();
178
+ const smallPageMounted = shallowRef(false);
179
+ onMounted(()=>{
180
+ smallPageMounted.value = true;
181
+ });
173
182
  function getFoundationProps() {
174
183
  const output = {
175
184
  ...props,
@@ -347,7 +356,7 @@ const Paginationvue_type_script_setup_true_lang_ts = /*@__PURE__*/ defineCompone
347
356
  ])
348
357
  ]),
349
358
  default: withCtx(()=>[
350
- createElementVNode("div", _hoisted_3, [
359
+ smallPageMounted.value ? (openBlock(), createElementBlock("div", _hoisted_3, [
351
360
  createVNode(unref(PaginationNodeRenderer), {
352
361
  content: unref(state).currentPage
353
362
  }, null, 8, [
@@ -364,35 +373,47 @@ const Paginationvue_type_script_setup_true_lang_ts = /*@__PURE__*/ defineCompone
364
373
  createVNode(unref(PaginationNodeRenderer), {
365
374
  content: " "
366
375
  })
367
- ])
376
+ ])) : (openBlock(), createElementBlock("div", _hoisted_4, toDisplayString(unref(state).currentPage) + "/" + toDisplayString(totalPages.value) + toDisplayString(' '), 1))
368
377
  ]),
369
378
  _: 1
370
- })) : (openBlock(), createElementBlock("div", {
371
- key: 1,
372
- class: normalizeClass([
373
- "semi-page-item semi-page-item-small",
374
- {
375
- 'semi-page-item-all-disabled': props.disabled
376
- }
377
- ])
379
+ })) : (openBlock(), createElementBlock(Fragment, {
380
+ key: 1
378
381
  }, [
379
- createVNode(unref(PaginationNodeRenderer), {
380
- content: unref(state).currentPage
381
- }, null, 8, [
382
- "content"
383
- ]),
384
- createVNode(unref(PaginationNodeRenderer), {
385
- content: "/"
386
- }),
387
- createVNode(unref(PaginationNodeRenderer), {
388
- content: totalPages.value
389
- }, null, 8, [
390
- "content"
391
- ]),
392
- createVNode(unref(PaginationNodeRenderer), {
393
- content: " "
394
- })
395
- ], 2))
382
+ smallPageMounted.value ? (openBlock(), createElementBlock("div", {
383
+ key: 0,
384
+ class: normalizeClass([
385
+ "semi-page-item semi-page-item-small",
386
+ {
387
+ 'semi-page-item-all-disabled': props.disabled
388
+ }
389
+ ])
390
+ }, [
391
+ createVNode(unref(PaginationNodeRenderer), {
392
+ content: unref(state).currentPage
393
+ }, null, 8, [
394
+ "content"
395
+ ]),
396
+ createVNode(unref(PaginationNodeRenderer), {
397
+ content: "/"
398
+ }),
399
+ createVNode(unref(PaginationNodeRenderer), {
400
+ content: totalPages.value
401
+ }, null, 8, [
402
+ "content"
403
+ ]),
404
+ createVNode(unref(PaginationNodeRenderer), {
405
+ content: " "
406
+ })
407
+ ], 2)) : (openBlock(), createElementBlock("div", {
408
+ key: 1,
409
+ class: normalizeClass([
410
+ "semi-page-item semi-page-item-small",
411
+ {
412
+ 'semi-page-item-all-disabled': props.disabled
413
+ }
414
+ ])
415
+ }, toDisplayString(unref(state).currentPage) + "/" + toDisplayString(totalPages.value) + toDisplayString(' '), 3))
416
+ ], 64))
396
417
  ], 64)) : (openBlock(true), createElementBlock(Fragment, {
397
418
  key: 2
398
419
  }, renderList(unref(state).pageList, (page, index)=>(openBlock(), createElementBlock(Fragment, {
@@ -411,7 +432,7 @@ const Paginationvue_type_script_setup_true_lang_ts = /*@__PURE__*/ defineCompone
411
432
  "aria-label": '...' === page ? 'More' : `Page ${page}`,
412
433
  "aria-current": unref(state).currentPage === page ? 'page' : false,
413
434
  onClick: ($event)=>selectPage(page)
414
- }, toDisplayString(page), 11, _hoisted_4)) : (openBlock(), createBlock(PaginationPopover, mergeProps({
435
+ }, toDisplayString(page), 11, _hoisted_5)) : (openBlock(), createBlock(PaginationPopover, mergeProps({
415
436
  key: 0,
416
437
  ref_for: true
417
438
  }, popoverBindings()), {
@@ -457,8 +478,8 @@ const Paginationvue_type_script_setup_true_lang_ts = /*@__PURE__*/ defineCompone
457
478
  key: 2,
458
479
  size: "large"
459
480
  }))
460
- ], 10, _hoisted_5),
461
- 'small' !== props.size && props.showSizeChanger ? (openBlock(), createElementBlock("div", _hoisted_6, [
481
+ ], 10, _hoisted_6),
482
+ 'small' !== props.size && props.showSizeChanger ? (openBlock(), createElementBlock("div", _hoisted_7, [
462
483
  (openBlock(), createBlock(Select, {
463
484
  key: unref(state).pageSize + locale.value.pageSize,
464
485
  "aria-label": "Page size selector",
@@ -1,4 +1,4 @@
1
- import { createElementBlock, createElementVNode, createVNode, normalizeClass, openBlock, Fragment, unref, renderList, defineComponent, computed } from "./d9594df1ef60.js";
1
+ import { createElementBlock, createBlock, createElementVNode, createCommentVNode, normalizeClass, openBlock, Fragment, unref, renderList, defineComponent, computed } from "./d9594df1ef60.js";
2
2
  import { useCalendarRuntime } from "./9eb1c76aef06.js";
3
3
  import { CalendarNodeRenderer } from "./069850ae223a.js";
4
4
  const _hoisted_1 = {
@@ -39,11 +39,12 @@ const CalendarTimeColumnvue_type_script_setup_true_lang_ts = /*@__PURE__*/ defin
39
39
  class: "semi-calendar-time-item"
40
40
  }, [
41
41
  createElementVNode("span", null, [
42
- createVNode(unref(CalendarNodeRenderer), {
42
+ '' !== label ? (openBlock(), createBlock(unref(CalendarNodeRenderer), {
43
+ key: 0,
43
44
  content: label
44
45
  }, null, 8, [
45
46
  "content"
46
- ])
47
+ ])) : createCommentVNode("", true)
47
48
  ])
48
49
  ]))), 128))
49
50
  ])
@@ -1 +1 @@
1
- export { Teleport, computed, createBlock, createCommentVNode, createElementBlock, createVNode, defineComponent, getCurrentInstance, h, inject, markRaw, nextTick, normalizeClass, normalizeStyle, onBeforeUnmount, onMounted, openBlock, shallowReactive, shallowRef, unref, useAttrs, useSlots, useTemplateRef, watch } from "vue";
1
+ export { Teleport, computed, createBlock, createCommentVNode, createElementVNode, createVNode, defineComponent, getCurrentInstance, h, inject, markRaw, nextTick, normalizeClass, normalizeStyle, onBeforeUnmount, onMounted, openBlock, shallowReactive, shallowRef, unref, useAttrs, useSlots, useTemplateRef, watch } from "vue";
@@ -1 +1 @@
1
- export { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, getCurrentInstance, inject, markRaw, mergeProps, normalizeClass, onBeforeUnmount, openBlock, renderList, renderSlot, resolveDynamicComponent, shallowReactive, toDisplayString, unref, useAttrs, useSlots, watch, withCtx } from "vue";
1
+ export { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, getCurrentInstance, inject, markRaw, mergeProps, normalizeClass, onBeforeUnmount, onMounted, openBlock, renderList, renderSlot, resolveDynamicComponent, shallowReactive, shallowRef, toDisplayString, unref, useAttrs, useSlots, watch, withCtx } from "vue";
@@ -1 +1 @@
1
- export { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, getCurrentInstance, h, inject, markRaw, mergeProps, nextTick, normalizeClass, normalizeStyle, onBeforeUnmount, onMounted, openBlock, renderList, shallowReactive, shallowRef, toDisplayString, unref, useAttrs, useSlots, useTemplateRef, watch, withCtx } from "vue";
1
+ export { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, getCurrentInstance, h, inject, markRaw, mergeProps, nextTick, normalizeClass, normalizeStyle, onBeforeUnmount, onMounted, openBlock, renderList, shallowReactive, shallowRef, toDisplayString, unref, useAttrs, useSlots, useTemplateRef, watch, withCtx } from "vue";
@@ -1 +1 @@
1
- export { Fragment, computed, createElementBlock, createElementVNode, createVNode, defineComponent, normalizeClass, openBlock, renderList, unref } from "vue";
1
+ export { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, defineComponent, normalizeClass, openBlock, renderList, unref } from "vue";
@@ -1,4 +1,4 @@
1
- import { createCommentVNode, useSlots, shallowReactive, shallowRef, inject, onBeforeUnmount, unref, mergeProps, createElementBlock, createElementVNode, createVNode, getCurrentInstance, normalizeClass, openBlock, watch, markRaw, toDisplayString, Fragment, onMounted, renderList, nextTick, useAttrs, h, createBlock, useTemplateRef, normalizeStyle, withCtx, computed, defineComponent } from "./cdc963921461.js";
1
+ import { createCommentVNode, useSlots, shallowReactive, shallowRef, inject, onBeforeUnmount, unref, mergeProps, createElementBlock, createElementVNode, createVNode, getCurrentInstance, normalizeClass, openBlock, watch, createTextVNode, markRaw, toDisplayString, Fragment, onMounted, renderList, nextTick, useAttrs, h, createBlock, useTemplateRef, normalizeStyle, withCtx, computed, defineComponent } from "./cdc963921461.js";
2
2
  import "./a7e0eab4d4b0.js";
3
3
  import { IconClear, IconChevronDown } from "./330f9c510423.js";
4
4
  import { configContextKey } from "./650465d64194.js";
@@ -1064,11 +1064,12 @@ const Cascadervue_type_script_setup_true_lang_ts = /*@__PURE__*/ defineComponent
1064
1064
  unref(state).showInput && !unref(state).inputValue ? 'semi-cascader-selection-text-inactive' : void 0
1065
1065
  ])
1066
1066
  }, [
1067
- createVNode(unref(CascaderNodeRenderer), {
1067
+ '' !== searchDisplay.value ? (openBlock(), createBlock(unref(CascaderNodeRenderer), {
1068
+ key: 0,
1068
1069
  content: searchDisplay.value
1069
1070
  }, null, 8, [
1070
1071
  "content"
1071
- ])
1072
+ ])) : createCommentVNode("", true)
1072
1073
  ], 2),
1073
1074
  unref(state).showInput ? (openBlock(), createBlock(unref(Input), {
1074
1075
  key: 0,
@@ -1110,15 +1111,22 @@ const Cascadervue_type_script_setup_true_lang_ts = /*@__PURE__*/ defineComponent
1110
1111
  }, 16, [
1111
1112
  "content"
1112
1113
  ])) : hiddenTagNodes.value.length ? (openBlock(), createElementBlock("span", _hoisted_4, " +" + toDisplayString(hiddenTagNodes.value.length), 1)) : createCommentVNode("", true)
1113
- ], 64)) : (openBlock(), createElementBlock("span", _hoisted_5, toDisplayString(__props.placeholder), 1)) : (openBlock(), createElementBlock("span", {
1114
+ ], 64)) : (openBlock(), createElementBlock("span", _hoisted_5, [
1115
+ '' !== __props.placeholder ? (openBlock(), createElementBlock(Fragment, {
1116
+ key: 0
1117
+ }, [
1118
+ createTextVNode(toDisplayString(__props.placeholder), 1)
1119
+ ], 64)) : createCommentVNode("", true)
1120
+ ])) : (openBlock(), createElementBlock("span", {
1114
1121
  key: 1,
1115
1122
  class: normalizeClass(unref(singleDisplay) ? void 0 : 'semi-cascader-selection-placeholder')
1116
1123
  }, [
1117
- createVNode(unref(CascaderNodeRenderer), {
1124
+ (unref(singleDisplay) ?? __props.placeholder) !== '' ? (openBlock(), createBlock(unref(CascaderNodeRenderer), {
1125
+ key: 0,
1118
1126
  content: unref(singleDisplay) ?? __props.placeholder
1119
1127
  }, null, 8, [
1120
1128
  "content"
1121
- ])
1129
+ ])) : createCommentVNode("", true)
1122
1130
  ], 2))
1123
1131
  ], 2),
1124
1132
  null != unref(suffixContent) ? (openBlock(), createElementBlock("div", _hoisted_6, [
@@ -1,4 +1,4 @@
1
- import { createCommentVNode, inject, Fragment, unref, mergeProps, createElementBlock, createBlock, createVNode, createSlots, getCurrentInstance, renderSlot, openBlock, watch, withCtx, computed, defineComponent } from "./971e09ddfd4b.js";
1
+ import { createCommentVNode, inject, Fragment, unref, mergeProps, useId, createElementBlock, createBlock, createVNode, createSlots, getCurrentInstance, renderSlot, openBlock, watch, withCtx, computed, defineComponent } from "./971e09ddfd4b.js";
2
2
  import { configContextKey } from "./650465d64194.js";
3
3
  import { semiGlobal as semi_global } from "./7d608cdc8674.js";
4
4
  import { useTooltipFoundation } from "./f3939b8b41c5.js";
@@ -134,6 +134,7 @@ const Tooltipvue_type_script_setup_true_lang_ts = /*@__PURE__*/ defineComponent(
134
134
  const props = __props;
135
135
  const emit = __emit;
136
136
  const instance = getCurrentInstance();
137
+ const popupId = useId().replaceAll(':', '');
137
138
  const injectedConfig = inject(configContextKey, void 0);
138
139
  const config = computed(()=>injectedConfig ? injectedConfig.value : {
139
140
  direction: 'ltr',
@@ -190,6 +191,7 @@ const Tooltipvue_type_script_setup_true_lang_ts = /*@__PURE__*/ defineComponent(
190
191
  emit('visibleChange', visible);
191
192
  emit('update:visible', visible);
192
193
  },
194
+ popupId,
193
195
  runtimeProps
194
196
  });
195
197
  watch(()=>[
@@ -46,17 +46,11 @@ function getFocusableElements(node) {
46
46
  ];
47
47
  return Array.from(node.querySelectorAll(selectors.join(',')));
48
48
  }
49
- function randomPopupId() {
50
- const characters = '0123456789abcdefghijklmnopqrstuvwxyz';
51
- return Array.from({
52
- length: 7
53
- }, ()=>characters.charAt(Math.floor(Math.random() * characters.length))).join('');
54
- }
55
49
  function useTooltipFoundation(options) {
56
50
  const state = shallowReactive({
57
51
  containerStyle: {},
58
52
  displayNone: false,
59
- id: options.runtimeProps.value.wrapperId,
53
+ id: options.runtimeProps.value.wrapperId ?? options.popupId,
60
54
  isInsert: false,
61
55
  isPositionUpdated: false,
62
56
  placement: options.runtimeProps.value.position,
@@ -292,7 +286,7 @@ function useTooltipFoundation(options) {
292
286
  if (callback) nextTick(callback);
293
287
  },
294
288
  setId: ()=>{
295
- state.id = randomPopupId();
289
+ state.id = options.popupId;
296
290
  },
297
291
  setInitialFocus: ()=>{
298
292
  const preventScroll = options.runtimeProps.value.preventScroll;
@@ -116,8 +116,8 @@ const AIChatDialoguevue_type_script_setup_true_lang_ts = /*@__PURE__*/ defineCom
116
116
  setup (__props, { expose: __expose, emit: __emit }) {
117
117
  const props = __props;
118
118
  const emit = __emit;
119
- const attrs = useAttrs();
120
119
  const slots = useSlots();
120
+ const attrs = useAttrs();
121
121
  const instance = getCurrentInstance();
122
122
  const list = useTemplateRef('list');
123
123
  const selectedIds = shallowRef(new Set());
@@ -4,7 +4,7 @@ import { useCalendarRuntime } from "./9eb1c76aef06.js";
4
4
  import { CalendarNodeRenderer } from "./069850ae223a.js";
5
5
  import { CalendarTimeColumn } from "./1f356bc0030a.js";
6
6
  import { CalendarDayColumn } from "./c2508ad7eb2f.js";
7
- import { calcRowHeight } from "./6690e6254b21.js";
7
+ import { calcRowHeight, round } from "./6690e6254b21.js";
8
8
  const _hoisted_1 = {
9
9
  class: "semi-calendar-week-sticky-top"
10
10
  };
@@ -78,8 +78,8 @@ const CalendarWeekvue_type_script_setup_true_lang_ts = /*@__PURE__*/ defineCompo
78
78
  const left = event.leftPos ?? 0;
79
79
  const width = event.width ?? 0;
80
80
  return {
81
- left: `${100 * Math.min(left, 1)}%`,
82
- width: `${100 * Math.min(width, 1)}%`,
81
+ left: `${round(100 * Math.min(left, 1))}%`,
82
+ width: `${round(100 * Math.min(width, 1))}%`,
83
83
  top: `${event.topInd ?? 0}em`
84
84
  };
85
85
  }
@@ -1,18 +1,8 @@
1
1
  import type { DefineComponent } from 'vue';
2
2
  import type { AIChatDialogueReasoningProps, AIChatDialogueStatic } from './types';
3
- export declare const AIChatDialogueAnnotation: DefineComponent<{
4
- annotation: import("./types").Annotation[];
5
- maxCount?: number;
6
- description?: string;
7
- annotationText?: string;
8
- }, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
3
+ export declare const AIChatDialogueAnnotation: DefineComponent<import("./types").AIChatDialogueAnnotationProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
9
4
  click: (annotation: import("./types").Annotation[]) => any;
10
- }, string, import("vue").PublicProps, Readonly<{
11
- annotation: import("./types").Annotation[];
12
- maxCount?: number;
13
- description?: string;
14
- annotationText?: string;
15
- }> & Readonly<{
5
+ }, string, import("vue").PublicProps, Readonly<import("./types").AIChatDialogueAnnotationProps> & Readonly<{
16
6
  onClick?: (annotation: import("./types").Annotation[]) => any;
17
7
  }>, {
18
8
  maxCount: number;
@@ -22,11 +12,7 @@ export declare const AIChatDialogueCode: DefineComponent<{}, () => import("vue")
22
12
  [key: string]: any;
23
13
  }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
24
14
  export declare const AIChatDialogueReasoning: DefineComponent<AIChatDialogueReasoningProps>;
25
- export declare const AIChatDialogueStep: DefineComponent<{
26
- steps: import("./types").AIChatDialogueStepItem[];
27
- }, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{
28
- steps: import("./types").AIChatDialogueStepItem[];
29
- }> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
15
+ export declare const AIChatDialogueStep: DefineComponent<import("./types").AIChatDialogueStepProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("./types").AIChatDialogueStepProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
30
16
  export declare const AIChatDialogue: AIChatDialogueStatic;
31
17
  export * from './data-adapter';
32
18
  export type * from './types';
@@ -1,4 +1,4 @@
1
- import type { CSSProperties, Component, VNodeChild } from 'vue';
1
+ import type { CSSProperties, Component, HTMLAttributes, VNodeChild } from 'vue';
2
2
  import type { MarkdownRenderProps as BaseMarkdownRenderProps } from '../markdown-render';
3
3
  export interface CommonContentItem {
4
4
  id?: string;
@@ -149,6 +149,12 @@ export interface AIChatDialogueReasoningProps {
149
149
  completedText?: string;
150
150
  thinkingText?: string;
151
151
  }
152
+ export interface AIChatDialogueReasoningSlots {
153
+ default?: (props: {
154
+ raw: string;
155
+ status: string | undefined;
156
+ }) => VNodeChild;
157
+ }
152
158
  export interface AIChatDialogueStepAction {
153
159
  summary?: string;
154
160
  description?: string;
@@ -159,6 +165,18 @@ export interface AIChatDialogueStepItem {
159
165
  status?: string;
160
166
  actions?: AIChatDialogueStepAction[];
161
167
  }
168
+ export interface AIChatDialogueStepProps {
169
+ steps: AIChatDialogueStepItem[];
170
+ }
171
+ export interface AIChatDialogueAnnotationProps {
172
+ annotation: Annotation[];
173
+ maxCount?: number;
174
+ description?: string;
175
+ annotationText?: string;
176
+ }
177
+ export interface AIChatDialogueAnnotationEmits {
178
+ click: [annotation: Annotation[]];
179
+ }
162
180
  export interface FullDialogueNodes {
163
181
  avatar?: VNodeChild;
164
182
  title?: VNodeChild;
@@ -212,7 +230,7 @@ export type DialogueContentItemRendererMap = Record<string, DialogueContentItemR
212
230
  export interface AIChatDialogueProps {
213
231
  align?: 'leftRight' | 'leftAlign';
214
232
  chats?: Message[];
215
- class?: unknown;
233
+ class?: HTMLAttributes['class'];
216
234
  className?: string;
217
235
  disabledFileItemClick?: boolean;
218
236
  escapeHtml?: boolean;
@@ -235,6 +253,38 @@ export interface AIChatDialogueProps {
235
253
  onHintClick: () => void;
236
254
  }) => VNodeChild;
237
255
  }
256
+ export interface AIChatDialogueEmits {
257
+ 'update:chats': [chats: Message[]];
258
+ 'chats-change': [chats: Message[]];
259
+ select: [selectedIds: string[]];
260
+ 'annotation-click': [annotation: Annotation[]];
261
+ 'file-click': [file: InputFile];
262
+ 'image-click': [image: InputImage];
263
+ 'hint-click': [hint: string];
264
+ 'reference-click': [reference: Reference];
265
+ 'message-bad-feedback': [message: Message];
266
+ 'message-copy': [message: Message];
267
+ 'message-delete': [message: Message];
268
+ 'message-edit': [message: Message];
269
+ 'message-good-feedback': [message: Message];
270
+ 'message-reset': [message: Message];
271
+ 'message-share': [message: Message];
272
+ }
273
+ export interface AIChatDialogueSlots {
274
+ 'dialogue-action'?: (props: RenderActionProps) => VNodeChild;
275
+ 'dialogue-avatar'?: (props: RenderAvatarProps) => VNodeChild;
276
+ 'dialogue-content'?: (props: RenderContentProps) => VNodeChild;
277
+ 'dialogue-title'?: (props: RenderTitleProps) => VNodeChild;
278
+ 'full-dialogue'?: (props: RenderFullDialogueProps) => VNodeChild;
279
+ hint?: (props: {
280
+ content: string;
281
+ index: number;
282
+ onHintClick: () => void;
283
+ }) => VNodeChild;
284
+ 'message-edit'?: (props: {
285
+ value: unknown;
286
+ }) => VNodeChild;
287
+ }
238
288
  export interface AIChatDialogueExpose {
239
289
  selectAll: () => void;
240
290
  deselectAll: () => void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aifuxi/semi-ui-vue",
3
- "version": "1.0.0-next.1",
3
+ "version": "1.0.0",
4
4
  "description": "An independent Vue 3 implementation aligned with Semi Design v2.102.0.",
5
5
  "license": "MIT",
6
6
  "author": "aifuxi",
@@ -428,8 +428,8 @@
428
428
  "vue": "3.5.41"
429
429
  },
430
430
  "dependencies": {
431
- "@aifuxi/semi-icons-vue": "1.0.0-next.1",
432
- "@aifuxi/semi-illustrations-vue": "1.0.0-next.1",
431
+ "@aifuxi/semi-icons-vue": "1.0.0",
432
+ "@aifuxi/semi-illustrations-vue": "1.0.0",
433
433
  "@mdx-js/mdx": "3.0.1",
434
434
  "@tiptap/core": "^3.31.3",
435
435
  "@tiptap/extension-document": "^3.31.3",