x-next 1.10.0 → 1.11.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/AI_CODING.md +97 -0
- package/AI_USAGE/catalog.md +111 -0
- package/AI_USAGE/components/alert.md +33 -0
- package/AI_USAGE/components/bar-chart.md +46 -0
- package/AI_USAGE/components/button.md +35 -0
- package/AI_USAGE/components/checkbox.md +34 -0
- package/AI_USAGE/components/color-picker.md +36 -0
- package/AI_USAGE/components/config-provider.md +58 -0
- package/AI_USAGE/components/date-picker.md +34 -0
- package/AI_USAGE/components/dialog.md +37 -0
- package/AI_USAGE/components/dropdown.md +38 -0
- package/AI_USAGE/components/empty.md +30 -0
- package/AI_USAGE/components/input.md +32 -0
- package/AI_USAGE/components/line-chart.md +45 -0
- package/AI_USAGE/components/message-box.md +39 -0
- package/AI_USAGE/components/message.md +36 -0
- package/AI_USAGE/components/notification.md +37 -0
- package/AI_USAGE/components/pagination.md +32 -0
- package/AI_USAGE/components/pie-chart.md +55 -0
- package/AI_USAGE/components/popconfirm.md +33 -0
- package/AI_USAGE/components/popover.md +35 -0
- package/AI_USAGE/components/progress.md +32 -0
- package/AI_USAGE/components/radio.md +35 -0
- package/AI_USAGE/components/rate.md +30 -0
- package/AI_USAGE/components/select.md +38 -0
- package/AI_USAGE/components/slider.md +34 -0
- package/AI_USAGE/components/steps.md +33 -0
- package/AI_USAGE/components/switch.md +32 -0
- package/AI_USAGE/components/tabs.md +33 -0
- package/AI_USAGE/components/textarea.md +31 -0
- package/AI_USAGE/components/time-picker.md +34 -0
- package/AI_USAGE/components/upload.md +60 -0
- package/AI_USAGE/core.md +37 -0
- package/AI_USAGE/index.md +52 -0
- package/AI_USAGE/recipes/form-on-demand.md +42 -0
- package/AI_USAGE.md +173 -46
- package/CHANGELOG.md +36 -1
- package/README.md +15 -2
- package/dist/_container/resize-trigger.vue.d.ts +1 -1
- package/dist/_hooks/use-dialog-focus.d.ts +7 -0
- package/dist/_hooks/use-pointer-drag.d.ts +6 -0
- package/dist/_hooks/use-popup-close.d.ts +11 -0
- package/dist/_hooks/use-popup-theme.d.ts +5 -0
- package/dist/_utils/palette.d.ts +2 -0
- package/dist/components/_components/picker/input-range.vue.d.ts +1 -3
- package/dist/components/_components/picker/input.vue.d.ts +1 -3
- package/dist/components/_components/select-view/select-view.d.ts +9 -0
- package/dist/components/alert/Alert.vue.d.ts +1 -1
- package/dist/components/alert/index.d.ts +3 -3
- package/dist/components/bar-chart/BarChart.d.ts +3 -3
- package/dist/components/bar-chart/index.d.ts +9 -9
- package/dist/components/color-picker/ColorPicker.d.ts +2 -1
- package/dist/components/color-picker/index.d.ts +2 -0
- package/dist/components/color-picker/panel.d.ts +6 -0
- package/dist/components/config-provider/context.d.ts +7 -1
- package/dist/components/date-picker/DatePicker.vue.d.ts +9 -12
- package/dist/components/date-picker/index.d.ts +19 -27
- package/dist/components/drawer/index.d.ts +51 -9
- package/dist/components/drawer/src/Drawer.vue.d.ts +19 -4
- package/dist/components/dropdown/Dropdown.vue.d.ts +6 -3
- package/dist/components/dropdown/DropdownButton.vue.d.ts +6 -3
- package/dist/components/dropdown/DropdownSubmenu.vue.d.ts +6 -3
- package/dist/components/dropdown/dropdown-panel.vue.d.ts +6 -3
- package/dist/components/dropdown/index.d.ts +36 -18
- package/dist/components/form-select/Select.d.ts +18 -5
- package/dist/components/form-select/SelectDropdown.vue.d.ts +6 -3
- package/dist/components/form-select/SelectOption.vue.d.ts +1 -0
- package/dist/components/form-select/SelectOptionGroup.vue.d.ts +1 -0
- package/dist/components/form-select/hooks/use-options.d.ts +1 -1
- package/dist/components/form-select/hooks/use-select.d.ts +1 -1
- package/dist/components/form-select/index.d.ts +57 -17
- package/dist/components/form-select/interface.d.ts +8 -0
- package/dist/components/form-slider/Slider.vue.d.ts +1 -1
- package/dist/components/form-slider/index.d.ts +3 -3
- package/dist/components/form-textarea/Textarea.vue.d.ts +2 -4
- package/dist/components/form-textarea/index.d.ts +6 -12
- package/dist/components/image/Image.vue.d.ts +2 -4
- package/dist/components/image/index.d.ts +6 -12
- package/dist/components/layout/LayoutSidebar.vue.d.ts +5 -5
- package/dist/components/layout/index.d.ts +10 -10
- package/dist/components/line-chart/LineChart.d.ts +3 -3
- package/dist/components/line-chart/index.d.ts +9 -9
- package/dist/components/menu/Menu.d.ts +6 -3
- package/dist/components/menu/base-menu.vue.d.ts +6 -3
- package/dist/components/menu/index.d.ts +12 -6
- package/dist/components/menu/sub-menu-pop.vue.d.ts +6 -3
- package/dist/components/network/Network.vue.d.ts +1 -1
- package/dist/components/network/index.d.ts +3 -3
- package/dist/components/pagination/page-options.vue.d.ts +60 -32
- package/dist/components/pie-chart/PieChart.d.ts +1 -1
- package/dist/components/pie-chart/index.d.ts +3 -3
- package/dist/components/resize-box/ResizeBox.vue.d.ts +2 -2
- package/dist/components/resize-box/index.d.ts +5 -5
- package/dist/components/scrollbar-v2/Scrollbar.vue.d.ts +2 -1
- package/dist/components/scrollbar-v2/index.d.ts +6 -3
- package/dist/components/table/Table.d.ts +1 -1
- package/dist/components/table/index.d.ts +3 -3
- package/dist/components/tabs/Tabs.d.ts +1 -1
- package/dist/components/tabs/index.d.ts +3 -3
- package/dist/components/time-picker/TimeColumn.vue.d.ts +6 -3
- package/dist/components/time-picker/TimePanel.vue.d.ts +6 -3
- package/dist/components/time-picker/TimePicker.vue.d.ts +9 -12
- package/dist/components/time-picker/index.d.ts +19 -27
- package/dist/components/trend-chart/components/TrendChart.d.ts +5 -5
- package/dist/components/trend-chart/components/trend-chart-curve.d.ts +1 -1
- package/dist/components/trend-chart/index.d.ts +14 -14
- package/dist/components/trigger/interface.d.ts +2 -0
- package/dist/components/virtual-list-v2/virtual-list.vue.d.ts +7 -4
- package/dist/es/_hooks/use-dialog-focus.js +69 -0
- package/dist/es/_hooks/use-pointer-drag.js +18 -0
- package/dist/es/_hooks/use-popup-close.js +27 -0
- package/dist/es/_hooks/use-popup-manager.js +26 -24
- package/dist/es/_hooks/use-popup-theme.js +18 -0
- package/dist/es/_hooks/use-teleport-container.js +9 -10
- package/dist/es/_utils/palette.js +57 -52
- package/dist/es/components/_components/select-view/select-view.js +89 -78
- package/dist/es/components/button/Button.js +1 -1
- package/dist/es/components/color-picker/ColorPicker.js +131 -102
- package/dist/es/components/color-picker/gradient-slider.js +38 -40
- package/dist/es/components/color-picker/panel.js +221 -192
- package/dist/es/components/color-picker/sv-panel.js +51 -50
- package/dist/es/components/config-provider/ConfigProvider.js +58 -41
- package/dist/es/components/dialog/Dialog.js +133 -186
- package/dist/es/components/drawer/src/Drawer.vue.js +59 -51
- package/dist/es/components/drawer/src/Drawer.vue2.js +117 -107
- package/dist/es/components/form/FormItem.vue.js +12 -12
- package/dist/es/components/form-input-tag/InputTag.js +1 -1
- package/dist/es/components/form-select/Select.js +348 -300
- package/dist/es/components/form-select/SelectDropdown.vue.js +7 -7
- package/dist/es/components/form-select/SelectOption.vue.js +22 -17
- package/dist/es/components/form-select/SelectOption.vue2.js +59 -51
- package/dist/es/components/form-select/SelectOptionGroup.vue.js +17 -13
- package/dist/es/components/form-select/SelectOptionGroup.vue2.js +8 -5
- package/dist/es/components/form-select/hooks/use-options.js +40 -40
- package/dist/es/components/form-select/hooks/use-select.js +76 -71
- package/dist/es/components/form-switch/Switch.vue.js +24 -24
- package/dist/es/components/image/Image.vue.js +12 -12
- package/dist/es/components/link/Link.vue.js +6 -6
- package/dist/es/components/menu/sub-menu-inline.vue.js +11 -11
- package/dist/es/components/menu/sub-menu-pop.vue.js +12 -12
- package/dist/es/components/notification/Notification.js +59 -59
- package/dist/es/components/resize-box/ResizeBox.vue.js +19 -22
- package/dist/es/components/skeleton/Skeleton.vue.js +9 -9
- package/dist/es/components/tag/Tag.vue.js +7 -7
- package/dist/es/components/trigger/Trigger.js +171 -163
- package/dist/es/style.css +1 -1
- package/dist/index.cjs +3 -3
- package/dist/index.umd.js +3 -3
- package/dist/style/bar-chart.js +1 -0
- package/dist/style/base.css +1 -1
- package/dist/style/button.css +1 -1
- package/dist/style/color-picker.css +1 -1
- package/dist/style/color-picker.js +4 -0
- package/dist/style/date-picker.js +4 -0
- package/dist/style/dependencies.json +296 -0
- package/dist/style/dialog.js +2 -0
- package/dist/style/drawer.js +3 -0
- package/dist/style/dropdown.js +5 -0
- package/dist/style/form-checkbox.css +1 -1
- package/dist/style/form-input-number.js +2 -0
- package/dist/style/form-input.css +1 -1
- package/dist/style/form-input.js +1 -0
- package/dist/style/form-select.js +5 -0
- package/dist/style/form-slider.js +5 -0
- package/dist/style/form.js +3 -0
- package/dist/style/heatmap.js +1 -0
- package/dist/style/image.js +2 -0
- package/dist/style/layout.js +1 -0
- package/dist/style/line-chart.js +1 -0
- package/dist/style/menu.js +3 -0
- package/dist/style/message-box.js +3 -0
- package/dist/style/pagination.js +9 -0
- package/dist/style/pie-chart.js +1 -0
- package/dist/style/popconfirm.js +3 -0
- package/dist/style/popover.js +1 -0
- package/dist/style/popup.js +2 -0
- package/dist/style/table.js +12 -0
- package/dist/style/time-picker.js +3 -0
- package/dist/style/tooltip.js +1 -0
- package/dist/style/upload.js +4 -0
- package/dist/style.css +1 -1
- package/package.json +17 -7
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
<!-- Generated by pnpm generate:ai-usage. Edit src/docs/guide/ai-usage.md and script/ai-usage/. -->
|
|
2
|
+
# Empty AI 使用
|
|
3
|
+
|
|
4
|
+
适用版本:x-next@1.11.0;来源指纹:`eec9ec4e05970a1f3325c873b8858e1fcb84282fa4c09d4eda8d5044c833f82a`。
|
|
5
|
+
|
|
6
|
+
先读 [通用接入](../core.md)。公开导出:`Empty`;模型:无;已核对事件:未在精选映射登记事件;其他 API 见下方用法。
|
|
7
|
+
|
|
8
|
+
按需样式:`x-next/style/empty`(包含 base.css、empty.css)。代码块未单独引样式时在应用入口加载全量样式,或按实际所有组件加载 JS 入口;不要仅因复制一个组件页就漏掉其中的 Button 等组合依赖。
|
|
9
|
+
|
|
10
|
+
[组件文档与 live demo](https://x-next.yjmf.com/components/empty)。`description` 未传时使用语言包默认文案,`null` 或 `''` 隐藏描述;`imgSrc` 自定义图片,`image` 插槽优先于图片地址。默认插槽替代描述,可放业务操作按钮。
|
|
11
|
+
|
|
12
|
+
没有模型或业务事件;刷新、创建等动作由插槽中的业务控件处理。显式提供描述、图片或插槽时采用调用方配置;裸 Empty 才会交由外层 ConfigProvider 的 `empty` 插槽接管。
|
|
13
|
+
|
|
14
|
+
```vue
|
|
15
|
+
<script setup lang="ts">
|
|
16
|
+
import { ref } from 'vue';
|
|
17
|
+
import { Button, Empty } from 'x-next';
|
|
18
|
+
import 'x-next/dist/style.css';
|
|
19
|
+
const refreshed = ref(false);
|
|
20
|
+
function refresh() { refreshed.value = true; }
|
|
21
|
+
</script>
|
|
22
|
+
<template>
|
|
23
|
+
<Empty>
|
|
24
|
+
<p>{{ refreshed ? '刷新完成,仍无记录' : '暂无记录' }}</p>
|
|
25
|
+
<Button @click="refresh">刷新记录</Button>
|
|
26
|
+
</Empty>
|
|
27
|
+
</template>
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
返回 [AI 索引](../index.md)。精选示例不是完整 API 表,新能力先查同版本公开类型与组件文档。
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
<!-- Generated by pnpm generate:ai-usage. Edit src/docs/guide/ai-usage.md and script/ai-usage/. -->
|
|
2
|
+
# Input AI 使用
|
|
3
|
+
|
|
4
|
+
适用版本:x-next@1.11.0;来源指纹:`eec9ec4e05970a1f3325c873b8858e1fcb84282fa4c09d4eda8d5044c833f82a`。
|
|
5
|
+
|
|
6
|
+
先读 [通用接入](../core.md)。公开导出:`Input`;模型:v-model;已核对事件:input、change、clear。
|
|
7
|
+
|
|
8
|
+
按需样式:`x-next/style/form-input`(包含 base.css、button.css、form-input.css)。代码块未单独引样式时在应用入口加载全量样式,或按实际所有组件加载 JS 入口;不要仅因复制一个组件页就漏掉其中的 Button 等组合依赖。
|
|
9
|
+
|
|
10
|
+
[组件文档与 live demo](https://x-next.yjmf.com/components/input)。`v-model` 为字符串,`input` 随输入触发,`change` 在失焦或回车时触发,`clear` 通知清空;readonly 是组件 prop。原生 id、name、aria、required 用 `inputAttrs`,外部 class / style 落在容器。内部装饰用 prefix / suffix,外侧标签用 prepend / append。
|
|
11
|
+
|
|
12
|
+
```vue
|
|
13
|
+
<script setup lang="ts">
|
|
14
|
+
import { ref } from 'vue';
|
|
15
|
+
import { Input } from 'x-next';
|
|
16
|
+
import 'x-next/style/form-input';
|
|
17
|
+
const title = ref('');
|
|
18
|
+
const log = ref('等待输入');
|
|
19
|
+
const nativeAttrs = { id: 'article-title', name: 'title', 'aria-label': '文章标题', required: true };
|
|
20
|
+
</script>
|
|
21
|
+
<template>
|
|
22
|
+
<label for="article-title">文章标题</label>
|
|
23
|
+
<Input v-model="title" :input-attrs="nativeAttrs" allow-clear
|
|
24
|
+
@input="value => log = `input: ${value}`" @clear="log = '已清空'">
|
|
25
|
+
<template #prefix>标题</template>
|
|
26
|
+
</Input>
|
|
27
|
+
<Input model-value="只读标题" readonly :input-attrs="{ 'aria-label': '只读标题' }" />
|
|
28
|
+
<p role="status">{{ log }};当前值:{{ title }}</p>
|
|
29
|
+
</template>
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
返回 [AI 索引](../index.md)。精选示例不是完整 API 表,新能力先查同版本公开类型与组件文档。
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
<!-- Generated by pnpm generate:ai-usage. Edit src/docs/guide/ai-usage.md and script/ai-usage/. -->
|
|
2
|
+
# LineChart AI 使用
|
|
3
|
+
|
|
4
|
+
适用版本:x-next@1.11.0;来源指纹:`eec9ec4e05970a1f3325c873b8858e1fcb84282fa4c09d4eda8d5044c833f82a`。
|
|
5
|
+
|
|
6
|
+
先读 [通用接入](../core.md)。公开导出:`LineChart`;模型:无;已核对事件:lineClick、legendChange。
|
|
7
|
+
|
|
8
|
+
按需样式:`x-next/style/line-chart`(包含 base.css、line-chart.css、spin.css)。代码块未单独引样式时在应用入口加载全量样式,或按实际所有组件加载 JS 入口;不要仅因复制一个组件页就漏掉其中的 Button 等组合依赖。
|
|
9
|
+
|
|
10
|
+
[组件文档与 live demo](https://x-next.yjmf.com/components/line-chart)。随时间看趋势就用它:`categories` 是时间轴标签,`series` 是数据系列(`{ name, data, color }`),按下标对应。多系列默认叠放,加 `area` 填充、再加 `stack` 变堆叠面积。按类目比大小用 BarChart,看占比用 PieChart,卡片角落的迷你走势用 TrendChart——完整选择指引见[图表总览](https://x-next.yjmf.com/components/charts)。
|
|
11
|
+
|
|
12
|
+
**缺测要显式表达**:把没有数据的点写成 `null`,默认会在该处**断开**折线(不会画成跌到 0);确需连线时传 `:connect-nulls="true"`。数值轴对纯正数数据保持 0 基线,出现负值才向下扩展;`min` / `max` 可锁定区间。`smooth` 默认开启,`show-points` 默认 `'auto'`(点数少时常显)。
|
|
13
|
+
|
|
14
|
+
`tooltip` 默认开启,`legend` 开启后点击图例可隐藏系列并触发 `legendChange`(数值轴会按剩余可见系列重算);点击触发 `lineClick`,命中数据点时带 `seriesIndex` / `value`。`valueFormatter` 同时作用于提示与图例,`labels.yFormatter` 只作用于数值轴。
|
|
15
|
+
|
|
16
|
+
```vue
|
|
17
|
+
<script setup lang="ts">
|
|
18
|
+
import { ref } from 'vue';
|
|
19
|
+
import { LineChart } from 'x-next';
|
|
20
|
+
import 'x-next/dist/style.css';
|
|
21
|
+
const categories = ref(['09-28', '09-29', '09-30', '10-01', '10-02']);
|
|
22
|
+
// 10-01 当天缺测:null 会让折线在该处断开
|
|
23
|
+
const series = ref([
|
|
24
|
+
{ name: '请求量', data: [820, 932, null, 934, 1290] },
|
|
25
|
+
{ name: '错误数', data: [12, 18, null, 9, 22] },
|
|
26
|
+
]);
|
|
27
|
+
const picked = ref('尚未选择');
|
|
28
|
+
function onLineClick(data: { label: string; value: number | null }) {
|
|
29
|
+
picked.value = `${data.label}:${data.value ?? '缺测'}`;
|
|
30
|
+
}
|
|
31
|
+
</script>
|
|
32
|
+
<template>
|
|
33
|
+
<LineChart
|
|
34
|
+
:categories="categories"
|
|
35
|
+
:series="series"
|
|
36
|
+
:height="280"
|
|
37
|
+
area
|
|
38
|
+
legend
|
|
39
|
+
@line-click="onLineClick"
|
|
40
|
+
/>
|
|
41
|
+
<p role="status">{{ picked }}</p>
|
|
42
|
+
</template>
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
返回 [AI 索引](../index.md)。精选示例不是完整 API 表,新能力先查同版本公开类型与组件文档。
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
<!-- Generated by pnpm generate:ai-usage. Edit src/docs/guide/ai-usage.md and script/ai-usage/. -->
|
|
2
|
+
# MessageBox AI 使用
|
|
3
|
+
|
|
4
|
+
适用版本:x-next@1.11.0;来源指纹:`eec9ec4e05970a1f3325c873b8858e1fcb84282fa4c09d4eda8d5044c833f82a`。
|
|
5
|
+
|
|
6
|
+
先读 [通用接入](../core.md)。公开导出:`MessageBox`;模型:无;已核对事件:未在精选映射登记事件;其他 API 见下方用法。
|
|
7
|
+
|
|
8
|
+
按需样式:`x-next/style/message-box`(包含 base.css、button.css、dialog.css、message-box.css、space.css)。代码块未单独引样式时在应用入口加载全量样式,或按实际所有组件加载 JS 入口;不要仅因复制一个组件页就漏掉其中的 Button 等组合依赖。
|
|
9
|
+
|
|
10
|
+
[组件文档与 live demo](https://x-next.yjmf.com/components/message-box)。调用 `MessageBox(options)`,默认类型为 `'success'`、宽度 `360`、居中、显示遮罩和关闭按钮、点击遮罩不关闭。`title` / `content` 支持文字、VNode 或渲染函数;`footer=false` 隐藏页脚。
|
|
11
|
+
|
|
12
|
+
返回 `close()` / `update(options)` 句柄,结果通过 `onOk(event)` / `onCancel(event)` 回调处理。`beforeOnOk` / `beforeOnCancel` 返回 `boolean | Promise<boolean>`,必须返回 `true` 才放行;异步业务放在前置钩子。它不是 Promise,没有 `confirm()`;`.warning(title, content)` 等返回的 `.ok()` / `.cancel()` 用于注册链式回调。
|
|
13
|
+
|
|
14
|
+
```vue
|
|
15
|
+
<script setup lang="ts">
|
|
16
|
+
import { onBeforeUnmount, ref } from 'vue';
|
|
17
|
+
import { Button, MessageBox } from 'x-next';
|
|
18
|
+
import 'x-next/dist/style.css';
|
|
19
|
+
const feedback = ref('尚未确认');
|
|
20
|
+
let handle: ReturnType<typeof MessageBox> | undefined;
|
|
21
|
+
function ask() {
|
|
22
|
+
handle?.close();
|
|
23
|
+
feedback.value = '等待确认';
|
|
24
|
+
handle = MessageBox({ title: '确认保存?', content: '确认后保存当前安排。', type: 'warning',
|
|
25
|
+
beforeOnOk: () => true,
|
|
26
|
+
onOk: (_event: Event) => { feedback.value = '已确认保存'; },
|
|
27
|
+
onCancel: (_event: Event) => { feedback.value = '用户已取消'; } });
|
|
28
|
+
}
|
|
29
|
+
function close() { handle?.close(); feedback.value = '已主动关闭'; }
|
|
30
|
+
onBeforeUnmount(() => handle?.close());
|
|
31
|
+
</script>
|
|
32
|
+
<template>
|
|
33
|
+
<Button @click="ask">请求确认</Button>
|
|
34
|
+
<Button @click="close">主动关闭</Button>
|
|
35
|
+
<p role="status">{{ feedback }}</p>
|
|
36
|
+
</template>
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
返回 [AI 索引](../index.md)。精选示例不是完整 API 表,新能力先查同版本公开类型与组件文档。
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
<!-- Generated by pnpm generate:ai-usage. Edit src/docs/guide/ai-usage.md and script/ai-usage/. -->
|
|
2
|
+
# Message AI 使用
|
|
3
|
+
|
|
4
|
+
适用版本:x-next@1.11.0;来源指纹:`eec9ec4e05970a1f3325c873b8858e1fcb84282fa4c09d4eda8d5044c833f82a`。
|
|
5
|
+
|
|
6
|
+
先读 [通用接入](../core.md)。公开导出:`Message, MessageComponent`;模型:无;已核对事件:未在精选映射登记事件;其他 API 见下方用法。
|
|
7
|
+
|
|
8
|
+
按需样式:`x-next/style/message`(包含 base.css、message.css)。代码块未单独引样式时在应用入口加载全量样式,或按实际所有组件加载 JS 入口;不要仅因复制一个组件页就漏掉其中的 Button 等组合依赖。
|
|
9
|
+
|
|
10
|
+
[组件文档与 live demo](https://x-next.yjmf.com/components/message)。`Message(options)` 或 `.success()` / `.error()` / `.loading()` 等显示提示。默认 `type='info'`、`duration=3000` 毫秒、`position='top'`、`showClose=false`;`duration=0` 持续显示,内容用 `message` 或 `content`。
|
|
11
|
+
|
|
12
|
+
返回句柄只有 `close()`;同一容器和位置下再次传相同 `id` 更新消息,没有句柄 `update()`。`onClose(id?)` 在自动或手动关闭时触发;自定义内容可用 VNode / 渲染函数。页面只清理自己持有的句柄。
|
|
13
|
+
|
|
14
|
+
```vue
|
|
15
|
+
<script setup lang="ts">
|
|
16
|
+
import { onBeforeUnmount, ref } from 'vue';
|
|
17
|
+
import { Button, Message } from 'x-next';
|
|
18
|
+
import 'x-next/dist/style.css';
|
|
19
|
+
const feedback = ref('尚未显示提示');
|
|
20
|
+
let handle: ReturnType<typeof Message> | undefined;
|
|
21
|
+
function show() {
|
|
22
|
+
handle?.close();
|
|
23
|
+
handle = Message({ message: '保存完成', type: 'success', duration: 0, showClose: true,
|
|
24
|
+
onClose: () => { feedback.value = '提示已关闭'; } });
|
|
25
|
+
feedback.value = '提示显示中';
|
|
26
|
+
}
|
|
27
|
+
onBeforeUnmount(() => handle?.close());
|
|
28
|
+
</script>
|
|
29
|
+
<template>
|
|
30
|
+
<Button @click="show">显示提示</Button>
|
|
31
|
+
<Button @click="handle?.close()">关闭提示</Button>
|
|
32
|
+
<p role="status">{{ feedback }}</p>
|
|
33
|
+
</template>
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
返回 [AI 索引](../index.md)。精选示例不是完整 API 表,新能力先查同版本公开类型与组件文档。
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
<!-- Generated by pnpm generate:ai-usage. Edit src/docs/guide/ai-usage.md and script/ai-usage/. -->
|
|
2
|
+
# Notification AI 使用
|
|
3
|
+
|
|
4
|
+
适用版本:x-next@1.11.0;来源指纹:`eec9ec4e05970a1f3325c873b8858e1fcb84282fa4c09d4eda8d5044c833f82a`。
|
|
5
|
+
|
|
6
|
+
先读 [通用接入](../core.md)。公开导出:`Notification, NotificationComponent`;模型:无;已核对事件:未在精选映射登记事件;其他 API 见下方用法。
|
|
7
|
+
|
|
8
|
+
按需样式:`x-next/style/notification`(包含 base.css、notification.css)。代码块未单独引样式时在应用入口加载全量样式,或按实际所有组件加载 JS 入口;不要仅因复制一个组件页就漏掉其中的 Button 等组合依赖。
|
|
9
|
+
|
|
10
|
+
[组件文档与 live demo](https://x-next.yjmf.com/components/notification)。`Notification(options)` 或 `.success()` 等显示通知。服务默认 `type='info'`、`duration=3000` 毫秒、`position='top-right'`、`offset=20`、`showClose=true`;四角位置可选,`duration=0` 持续显示。
|
|
11
|
+
|
|
12
|
+
`title` 和 `message` / `content` 是内容,`footer` / `icon` 可用 VNode 或渲染函数。返回句柄只有 `close()`;同一容器与位置下复用 `id` 更新。`onClick()` 无参数,`onClose(id?)` 接收标识;`.remove(id)` / `.clear(position?)` 是服务级方法。
|
|
13
|
+
|
|
14
|
+
```vue
|
|
15
|
+
<script setup lang="ts">
|
|
16
|
+
import { onBeforeUnmount, ref } from 'vue';
|
|
17
|
+
import { Button, Notification } from 'x-next';
|
|
18
|
+
import 'x-next/dist/style.css';
|
|
19
|
+
const feedback = ref('尚未显示通知');
|
|
20
|
+
let handle: ReturnType<typeof Notification> | undefined;
|
|
21
|
+
function show() {
|
|
22
|
+
handle?.close();
|
|
23
|
+
handle = Notification({ title: '任务完成', message: '结果已准备好。', type: 'success', duration: 0,
|
|
24
|
+
onClick: () => { feedback.value = '已点击通知'; },
|
|
25
|
+
onClose: () => { feedback.value = '通知已关闭'; } });
|
|
26
|
+
feedback.value = '通知显示中';
|
|
27
|
+
}
|
|
28
|
+
onBeforeUnmount(() => handle?.close());
|
|
29
|
+
</script>
|
|
30
|
+
<template>
|
|
31
|
+
<Button @click="show">显示通知</Button>
|
|
32
|
+
<Button @click="handle?.close()">关闭通知</Button>
|
|
33
|
+
<p role="status">{{ feedback }}</p>
|
|
34
|
+
</template>
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
返回 [AI 索引](../index.md)。精选示例不是完整 API 表,新能力先查同版本公开类型与组件文档。
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
<!-- Generated by pnpm generate:ai-usage. Edit src/docs/guide/ai-usage.md and script/ai-usage/. -->
|
|
2
|
+
# Pagination AI 使用
|
|
3
|
+
|
|
4
|
+
适用版本:x-next@1.11.0;来源指纹:`eec9ec4e05970a1f3325c873b8858e1fcb84282fa4c09d4eda8d5044c833f82a`。
|
|
5
|
+
|
|
6
|
+
先读 [通用接入](../core.md)。公开导出:`Pagination`;模型:v-model:current、v-model:page-size;已核对事件:change、pageSizeChange。
|
|
7
|
+
|
|
8
|
+
按需样式:`x-next/style/pagination`(包含 base.css、button.css、empty.css、form-checkbox.css、form-input.css、form-input-number.css、form-select.css、pagination.css、scrollbar-v2.css、spin.css、trigger.css)。代码块未单独引样式时在应用入口加载全量样式,或按实际所有组件加载 JS 入口;不要仅因复制一个组件页就漏掉其中的 Button 等组合依赖。
|
|
9
|
+
|
|
10
|
+
[组件文档与 live demo](https://x-next.yjmf.com/components/pagination)。`total` 必填且表示记录总数。使用 `v-model:current` 和 `v-model:page-size`;默认非受控值为页码 `1`、每页 `10`,`showTotal` / `showPageSize` / `showJumper` 默认关闭,`autoAdjust=true`。
|
|
11
|
+
|
|
12
|
+
`change(current)` 和 `page-size-change(pageSize)` 各返回一个数字;不会请求数据。页码按总数裁剪,每页条数应为正数。`total` 插槽提供总数,`page-item` 提供页码;改变条数后的业务重新查询需自行实现。
|
|
13
|
+
|
|
14
|
+
```vue
|
|
15
|
+
<script setup lang="ts">
|
|
16
|
+
import { ref } from 'vue';
|
|
17
|
+
import { Pagination } from 'x-next';
|
|
18
|
+
import 'x-next/dist/style.css';
|
|
19
|
+
const current = ref(1);
|
|
20
|
+
const pageSize = ref(10);
|
|
21
|
+
const feedback = ref('当前第 1 页');
|
|
22
|
+
function changed(page: number) { feedback.value = `当前第 ${page} 页`; }
|
|
23
|
+
function resized(size: number) { current.value = 1; feedback.value = `每页 ${size} 条,返回第一页`; }
|
|
24
|
+
</script>
|
|
25
|
+
<template>
|
|
26
|
+
<Pagination v-model:current="current" v-model:page-size="pageSize" :total="95" show-total show-page-size
|
|
27
|
+
:page-size-options="[10, 20, 50]" @change="changed" @page-size-change="resized" />
|
|
28
|
+
<p role="status">{{ feedback }};每页 {{ pageSize }} 条</p>
|
|
29
|
+
</template>
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
返回 [AI 索引](../index.md)。精选示例不是完整 API 表,新能力先查同版本公开类型与组件文档。
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
<!-- Generated by pnpm generate:ai-usage. Edit src/docs/guide/ai-usage.md and script/ai-usage/. -->
|
|
2
|
+
# PieChart AI 使用
|
|
3
|
+
|
|
4
|
+
适用版本:x-next@1.11.0;来源指纹:`eec9ec4e05970a1f3325c873b8858e1fcb84282fa4c09d4eda8d5044c833f82a`。
|
|
5
|
+
|
|
6
|
+
先读 [通用接入](../core.md)。公开导出:`PieChart`;模型:无;已核对事件:itemClick、legendChange。
|
|
7
|
+
|
|
8
|
+
按需样式:`x-next/style/pie-chart`(包含 base.css、pie-chart.css、spin.css)。代码块未单独引样式时在应用入口加载全量样式,或按实际所有组件加载 JS 入口;不要仅因复制一个组件页就漏掉其中的 Button 等组合依赖。
|
|
9
|
+
|
|
10
|
+
[组件文档与 live demo](https://x-next.yjmf.com/components/pie-chart)。表达占比:`data` 是 `{ name, value }[]`,值按**可见**分片求和换算角度。`innerRadius="62%"` 渲染成环形并在中心显示合计(推荐形态,信息密度更高);数字形式的 `innerRadius` 按 px。负值、0 与非有限数会被跳过,不计入总量。
|
|
11
|
+
|
|
12
|
+
**类别要收敛**:饼图超过 7 个分片就难以阅读,先按值排序、把尾部合并成「其他」再传入(下面给出写法)。需要精确比较大小改用 BarChart,需要看随时间的变化改用 LineChart。
|
|
13
|
+
|
|
14
|
+
`legend` 开启后图例项展示数值与占比,点击可隐藏分片——剩余分片重新分配角度、中心合计同步更新,并触发 `legendChange`;点击分片触发 `itemClick`。`center` / `tooltip` / `label` / `legend` 插槽可分别自定义。
|
|
15
|
+
|
|
16
|
+
```vue
|
|
17
|
+
<script setup lang="ts">
|
|
18
|
+
import { computed, ref } from 'vue';
|
|
19
|
+
import { PieChart } from 'x-next';
|
|
20
|
+
import 'x-next/dist/style.css';
|
|
21
|
+
const raw = ref([
|
|
22
|
+
{ name: 'search', value: 820 },
|
|
23
|
+
{ name: 'read_file', value: 610 },
|
|
24
|
+
{ name: 'write_file', value: 430 },
|
|
25
|
+
{ name: 'run_shell', value: 320 },
|
|
26
|
+
{ name: 'browse', value: 210 },
|
|
27
|
+
{ name: 'exec_python', value: 180 },
|
|
28
|
+
{ name: 'grep', value: 140 },
|
|
29
|
+
]);
|
|
30
|
+
const LIMIT = 5;
|
|
31
|
+
// 饼图不宜超过 7 个分片:取前 N 项,尾部合并为「其他」
|
|
32
|
+
const data = computed(() => {
|
|
33
|
+
const sorted = [...raw.value].sort((a, b) => b.value - a.value);
|
|
34
|
+
const top = sorted.slice(0, LIMIT);
|
|
35
|
+
const rest = sorted.slice(LIMIT).reduce((sum, item) => sum + item.value, 0);
|
|
36
|
+
return rest > 0 ? [...top, { name: '其他', value: rest }] : top;
|
|
37
|
+
});
|
|
38
|
+
const picked = ref('尚未选择');
|
|
39
|
+
function onItemClick(item: { name: string; value: number; percent: number; formatPercent: (p: number) => string }) {
|
|
40
|
+
picked.value = `${item.name}:${item.value}(${item.formatPercent(item.percent)})`;
|
|
41
|
+
}
|
|
42
|
+
</script>
|
|
43
|
+
<template>
|
|
44
|
+
<PieChart
|
|
45
|
+
:data="data"
|
|
46
|
+
inner-radius="62%"
|
|
47
|
+
:height="280"
|
|
48
|
+
legend
|
|
49
|
+
@item-click="onItemClick"
|
|
50
|
+
/>
|
|
51
|
+
<p role="status">{{ picked }}</p>
|
|
52
|
+
</template>
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
返回 [AI 索引](../index.md)。精选示例不是完整 API 表,新能力先查同版本公开类型与组件文档。
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
<!-- Generated by pnpm generate:ai-usage. Edit src/docs/guide/ai-usage.md and script/ai-usage/. -->
|
|
2
|
+
# Popconfirm AI 使用
|
|
3
|
+
|
|
4
|
+
适用版本:x-next@1.11.0;来源指纹:`eec9ec4e05970a1f3325c873b8858e1fcb84282fa4c09d4eda8d5044c833f82a`。
|
|
5
|
+
|
|
6
|
+
先读 [通用接入](../core.md)。公开导出:`Popconfirm`;模型:v-model;已核对事件:ok、cancel。
|
|
7
|
+
|
|
8
|
+
按需样式:`x-next/style/popconfirm`(包含 base.css、button.css、popconfirm.css、space.css、trigger.css)。代码块未单独引样式时在应用入口加载全量样式,或按实际所有组件加载 JS 入口;不要仅因复制一个组件页就漏掉其中的 Button 等组合依赖。
|
|
9
|
+
|
|
10
|
+
[组件文档与 live demo](https://x-next.yjmf.com/components/popconfirm)。普通布尔 `v-model` 控制显示,`defaultVisible=false`、`type='danger'`、`position='top'`、`width=150`,点击默认插槽触发。`content` / `icon` 插槽可自定义确认内容;按钮文字用 `okText` / `cancelText`。
|
|
11
|
+
|
|
12
|
+
`ok(event)` / `cancel(event)` 返回 `Event`,`change(visible)` 返回布尔值。`onBeforeOk` / `onBeforeCancel` 支持布尔、void 或 Promise,返回 `false` 可阻止关闭;异步钩子可自动等待,普通 `ok` 监听器不会自动阻止关闭。
|
|
13
|
+
|
|
14
|
+
```vue
|
|
15
|
+
<script setup lang="ts">
|
|
16
|
+
import { ref } from 'vue';
|
|
17
|
+
import { Button, Popconfirm } from 'x-next';
|
|
18
|
+
import 'x-next/dist/style.css';
|
|
19
|
+
const visible = ref(false);
|
|
20
|
+
const feedback = ref('记录保留中');
|
|
21
|
+
function remove(_event: Event) { feedback.value = '已确认删除'; }
|
|
22
|
+
function cancel(_event: Event) { feedback.value = '已取消删除'; }
|
|
23
|
+
</script>
|
|
24
|
+
<template>
|
|
25
|
+
<Popconfirm v-model="visible" content="删除这条记录?" ok-text="删除" cancel-text="保留"
|
|
26
|
+
@ok="remove" @cancel="cancel">
|
|
27
|
+
<Button status="danger">删除记录</Button>
|
|
28
|
+
</Popconfirm>
|
|
29
|
+
<p role="status">{{ feedback }}</p>
|
|
30
|
+
</template>
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
返回 [AI 索引](../index.md)。精选示例不是完整 API 表,新能力先查同版本公开类型与组件文档。
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
<!-- Generated by pnpm generate:ai-usage. Edit src/docs/guide/ai-usage.md and script/ai-usage/. -->
|
|
2
|
+
# Popover AI 使用
|
|
3
|
+
|
|
4
|
+
适用版本:x-next@1.11.0;来源指纹:`eec9ec4e05970a1f3325c873b8858e1fcb84282fa4c09d4eda8d5044c833f82a`。
|
|
5
|
+
|
|
6
|
+
先读 [通用接入](../core.md)。公开导出:`Popover`;模型:v-model:popup-visible;已核对事件:popupVisibleChange。
|
|
7
|
+
|
|
8
|
+
按需样式:`x-next/style/popover`(包含 base.css、popover.css、trigger.css)。代码块未单独引样式时在应用入口加载全量样式,或按实际所有组件加载 JS 入口;不要仅因复制一个组件页就漏掉其中的 Button 等组合依赖。
|
|
9
|
+
|
|
10
|
+
[组件文档与 live demo](https://x-next.yjmf.com/components/popover)。使用 `v-model:popup-visible`;默认 `trigger='click'`、`position='bottom'`、`showArrow=false`、`defaultPopupVisible=false`、`unmountOnClose=true`。默认插槽是触发器,`title` / `content` 插槽放浮层内容。
|
|
11
|
+
|
|
12
|
+
`popup-visible-change(visible)` 返回布尔值,`show` / `hide` 无参数。点击触发器或外部默认可以关闭;`popupContainer` 和 `renderToBody` 决定宿主,局部主题下按实际挂载位置核对样式。
|
|
13
|
+
|
|
14
|
+
```vue
|
|
15
|
+
<script setup lang="ts">
|
|
16
|
+
import { ref } from 'vue';
|
|
17
|
+
import { Button, Popover } from 'x-next';
|
|
18
|
+
import 'x-next/dist/style.css';
|
|
19
|
+
const visible = ref(false);
|
|
20
|
+
const feedback = ref('说明未打开');
|
|
21
|
+
function changed(value: boolean) { feedback.value = value ? '说明已打开' : '说明已关闭'; }
|
|
22
|
+
</script>
|
|
23
|
+
<template>
|
|
24
|
+
<Popover v-model:popup-visible="visible" title="安排说明" show-arrow @popup-visible-change="changed">
|
|
25
|
+
<Button>查看说明</Button>
|
|
26
|
+
<template #content>
|
|
27
|
+
<p>时间以页面所选值为准。</p>
|
|
28
|
+
<Button @click="visible = false">关闭说明</Button>
|
|
29
|
+
</template>
|
|
30
|
+
</Popover>
|
|
31
|
+
<p role="status">{{ feedback }}</p>
|
|
32
|
+
</template>
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
返回 [AI 索引](../index.md)。精选示例不是完整 API 表,新能力先查同版本公开类型与组件文档。
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
<!-- Generated by pnpm generate:ai-usage. Edit src/docs/guide/ai-usage.md and script/ai-usage/. -->
|
|
2
|
+
# Progress AI 使用
|
|
3
|
+
|
|
4
|
+
适用版本:x-next@1.11.0;来源指纹:`eec9ec4e05970a1f3325c873b8858e1fcb84282fa4c09d4eda8d5044c833f82a`。
|
|
5
|
+
|
|
6
|
+
先读 [通用接入](../core.md)。公开导出:`Progress`;模型:无;已核对事件:未在精选映射登记事件;其他 API 见下方用法。
|
|
7
|
+
|
|
8
|
+
按需样式:`x-next/style/progress`(包含 base.css、progress.css)。代码块未单独引样式时在应用入口加载全量样式,或按实际所有组件加载 JS 入口;不要仅因复制一个组件页就漏掉其中的 Button 等组合依赖。
|
|
9
|
+
|
|
10
|
+
[组件文档与 live demo](https://x-next.yjmf.com/components/progress)。`percent` 为 **0 到 1** 的比例,默认 `0`,不是 0 到 100;超出范围会裁剪,非有限值显示为 0。默认 `type='line'`、`showText=true`、`animation=false`,`steps>0` 使用分段模式。
|
|
11
|
+
|
|
12
|
+
无模型和业务 change 事件,由业务更新 `percent`。`status` 为 normal、success、warning、danger,未设置时达到 1 自动为 success;`text` 插槽提供 `{ percent }`。
|
|
13
|
+
|
|
14
|
+
```vue
|
|
15
|
+
<script setup lang="ts">
|
|
16
|
+
import { ref } from 'vue';
|
|
17
|
+
import { Button, Progress } from 'x-next';
|
|
18
|
+
import 'x-next/dist/style.css';
|
|
19
|
+
const percent = ref(0.25);
|
|
20
|
+
function advance() { percent.value = Math.min(1, percent.value + 0.25); }
|
|
21
|
+
</script>
|
|
22
|
+
<template>
|
|
23
|
+
<div style="max-width: 320px">
|
|
24
|
+
<Progress :percent="percent">
|
|
25
|
+
<template #text="scope">已完成 {{ Math.round(scope.percent * 100) }}%</template>
|
|
26
|
+
</Progress>
|
|
27
|
+
<Button :disabled="percent >= 1" @click="advance">推进任务</Button>
|
|
28
|
+
</div>
|
|
29
|
+
</template>
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
返回 [AI 索引](../index.md)。精选示例不是完整 API 表,新能力先查同版本公开类型与组件文档。
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
<!-- Generated by pnpm generate:ai-usage. Edit src/docs/guide/ai-usage.md and script/ai-usage/. -->
|
|
2
|
+
# Radio AI 使用
|
|
3
|
+
|
|
4
|
+
适用版本:x-next@1.11.0;来源指纹:`eec9ec4e05970a1f3325c873b8858e1fcb84282fa4c09d4eda8d5044c833f82a`。
|
|
5
|
+
|
|
6
|
+
先读 [通用接入](../core.md)。公开导出:`Radio`;模型:v-model;已核对事件:change。
|
|
7
|
+
|
|
8
|
+
按需样式:`x-next/style/form-radio`(包含 base.css、form-radio.css)。代码块未单独引样式时在应用入口加载全量样式,或按实际所有组件加载 JS 入口;不要仅因复制一个组件页就漏掉其中的 Button 等组合依赖。
|
|
9
|
+
|
|
10
|
+
[组件文档与 live demo](https://x-next.yjmf.com/components/radio)。`Radio` / `RadioGroup` 的模型和选项值支持 `string | number | boolean`,保留值类型;布尔选项写 `:value="true"`。单个 Radio 的 `value` 默认 `true`,组的非受控默认值为 `''`。
|
|
11
|
+
|
|
12
|
+
组默认 `type='radio'`、`direction='horizontal'`、`disabled=false`;`change(value, event)` 返回选项值和 `Event`。Radio 默认插槽是文案,组也支持 `options` 和 `label` / `radio` 插槽。
|
|
13
|
+
|
|
14
|
+
```vue
|
|
15
|
+
<script setup lang="ts">
|
|
16
|
+
import { ref } from 'vue';
|
|
17
|
+
import { Radio, RadioGroup } from 'x-next';
|
|
18
|
+
import 'x-next/dist/style.css';
|
|
19
|
+
const enabled = ref<string | number | boolean>(true);
|
|
20
|
+
const controlAttrs = { name: 'delivery-mode', 'aria-label': '是否开启通知' };
|
|
21
|
+
const feedback = ref('当前开启');
|
|
22
|
+
function changed(value: string | number | boolean, _event: Event) {
|
|
23
|
+
feedback.value = value === true ? '当前开启' : '当前关闭';
|
|
24
|
+
}
|
|
25
|
+
</script>
|
|
26
|
+
<template>
|
|
27
|
+
<RadioGroup v-model="enabled" v-bind="controlAttrs" @change="changed">
|
|
28
|
+
<Radio :value="true">开启</Radio>
|
|
29
|
+
<Radio :value="false">关闭</Radio>
|
|
30
|
+
</RadioGroup>
|
|
31
|
+
<p role="status">{{ feedback }}</p>
|
|
32
|
+
</template>
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
返回 [AI 索引](../index.md)。精选示例不是完整 API 表,新能力先查同版本公开类型与组件文档。
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
<!-- Generated by pnpm generate:ai-usage. Edit src/docs/guide/ai-usage.md and script/ai-usage/. -->
|
|
2
|
+
# Rate AI 使用
|
|
3
|
+
|
|
4
|
+
适用版本:x-next@1.11.0;来源指纹:`eec9ec4e05970a1f3325c873b8858e1fcb84282fa4c09d4eda8d5044c833f82a`。
|
|
5
|
+
|
|
6
|
+
先读 [通用接入](../core.md)。公开导出:`Rate`;模型:v-model;已核对事件:change。
|
|
7
|
+
|
|
8
|
+
按需样式:`x-next/style/rate`(包含 base.css、rate.css)。代码块未单独引样式时在应用入口加载全量样式,或按实际所有组件加载 JS 入口;不要仅因复制一个组件页就漏掉其中的 Button 等组合依赖。
|
|
9
|
+
|
|
10
|
+
[组件文档与 live demo](https://x-next.yjmf.com/components/rate)。数值模型默认非受控值为 `0`,`count=5`;`allowHalf`、`allowClear`、`readonly`、`disabled` 默认关闭。启用半星后步长为 `0.5`,值限制在有效数量内;没有 `size` 属性。
|
|
11
|
+
|
|
12
|
+
`change(value)` 返回 `number`,`hover-change(value)` 返回 `number | undefined`。`character` 插槽提供 `index`、`value`、`count`、`disabled`;`tooltips` 为提示数组。
|
|
13
|
+
|
|
14
|
+
```vue
|
|
15
|
+
<script setup lang="ts">
|
|
16
|
+
import { ref } from 'vue';
|
|
17
|
+
import { Rate } from 'x-next';
|
|
18
|
+
import 'x-next/dist/style.css';
|
|
19
|
+
const score = ref(3.5);
|
|
20
|
+
const controlAttrs = { 'aria-label': '服务评分' };
|
|
21
|
+
const feedback = ref('请评分');
|
|
22
|
+
function changed(value: number) { feedback.value = value ? `评分 ${value}` : '已清除评分'; }
|
|
23
|
+
</script>
|
|
24
|
+
<template>
|
|
25
|
+
<Rate v-model="score" allow-half allow-clear v-bind="controlAttrs" @change="changed" />
|
|
26
|
+
<p role="status">{{ feedback }}</p>
|
|
27
|
+
</template>
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
返回 [AI 索引](../index.md)。精选示例不是完整 API 表,新能力先查同版本公开类型与组件文档。
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
<!-- Generated by pnpm generate:ai-usage. Edit src/docs/guide/ai-usage.md and script/ai-usage/. -->
|
|
2
|
+
# Select AI 使用
|
|
3
|
+
|
|
4
|
+
适用版本:x-next@1.11.0;来源指纹:`eec9ec4e05970a1f3325c873b8858e1fcb84282fa4c09d4eda8d5044c833f82a`。
|
|
5
|
+
|
|
6
|
+
先读 [通用接入](../core.md)。公开导出:`Select`;模型:v-model、v-model:popup-visible;已核对事件:change、popupVisibleChange。
|
|
7
|
+
|
|
8
|
+
按需样式:`x-next/style/form-select`(包含 base.css、empty.css、form-checkbox.css、form-select.css、scrollbar-v2.css、spin.css、trigger.css)。代码块未单独引样式时在应用入口加载全量样式,或按实际所有组件加载 JS 入口;不要仅因复制一个组件页就漏掉其中的 Button 等组合依赖。
|
|
9
|
+
|
|
10
|
+
[组件文档与 live demo](https://x-next.yjmf.com/components/select)。`v-model` 返回选项的 `value`;单选通常为标量,多选为数组,也支持对象值。`multiple=false`、`allowClear=false`;单选搜索默认关闭,多选默认开启。`options` 使用可变数组,常用字段是 `label`、`value`、`disabled`。
|
|
11
|
+
|
|
12
|
+
`change(value)` 返回新值,`clear(event)` 返回 `Event`;单选清空通常为 `''`,多选为 `[]`,已选禁用项可能保留。`v-model:popup-visible` 控制弹层,`option` / `empty` / `header` / `footer` 等插槽见组件文档。
|
|
13
|
+
|
|
14
|
+
有值且可清空时,右侧 × 与箭头共用位置,点击 × 不切换面板。`v-model:input-value` 控制搜索输入;远程搜索设置 `filterOption=false`,用 `@search` 请求数据并由业务取消旧请求。对象值用 `valueKey` 标识,`fallbackOption` 处理暂时缺失的候选项。默认触发器 ref 类型为 `SelectInstance`,提供 `focus()` / `blur()`;自定义 `trigger` 插槽将 `onKeydown` 绑定到自己的可聚焦节点。
|
|
15
|
+
|
|
16
|
+
```vue
|
|
17
|
+
<script setup lang="ts">
|
|
18
|
+
import { ref } from 'vue';
|
|
19
|
+
import { Select } from 'x-next';
|
|
20
|
+
import 'x-next/dist/style.css';
|
|
21
|
+
const city = ref('');
|
|
22
|
+
const options = [
|
|
23
|
+
{ label: '杭州', value: 'hangzhou' },
|
|
24
|
+
{ label: '上海', value: 'shanghai' },
|
|
25
|
+
{ label: '暂未开放', value: 'pending', disabled: true },
|
|
26
|
+
];
|
|
27
|
+
const feedback = ref('尚未选择');
|
|
28
|
+
function changed(value: unknown) {
|
|
29
|
+
feedback.value = typeof value === 'string' && value ? `城市代码:${value}` : '已清空';
|
|
30
|
+
}
|
|
31
|
+
</script>
|
|
32
|
+
<template>
|
|
33
|
+
<Select v-model="city" :options="options" allow-search allow-clear placeholder="选择城市" @change="changed" />
|
|
34
|
+
<p role="status">{{ feedback }}</p>
|
|
35
|
+
</template>
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
返回 [AI 索引](../index.md)。精选示例不是完整 API 表,新能力先查同版本公开类型与组件文档。
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
<!-- Generated by pnpm generate:ai-usage. Edit src/docs/guide/ai-usage.md and script/ai-usage/. -->
|
|
2
|
+
# Slider AI 使用
|
|
3
|
+
|
|
4
|
+
适用版本:x-next@1.11.0;来源指纹:`eec9ec4e05970a1f3325c873b8858e1fcb84282fa4c09d4eda8d5044c833f82a`。
|
|
5
|
+
|
|
6
|
+
先读 [通用接入](../core.md)。公开导出:`Slider`;模型:v-model;已核对事件:change。
|
|
7
|
+
|
|
8
|
+
按需样式:`x-next/style/form-slider`(包含 base.css、button.css、form-input.css、form-input-number.css、form-slider.css、trigger.css、tooltip.css)。代码块未单独引样式时在应用入口加载全量样式,或按实际所有组件加载 JS 入口;不要仅因复制一个组件页就漏掉其中的 Button 等组合依赖。
|
|
9
|
+
|
|
10
|
+
[组件文档与 live demo](https://x-next.yjmf.com/components/slider)。普通模型为 `number`,`range` 模式为 `[number, number]`。默认 `min=0`、`max=100`、`step=1`、`range=false`、`disabled=false`、`showTooltip=true`;范围端点按大小排序并按步长归一化。
|
|
11
|
+
|
|
12
|
+
`change(value)` 表示值变化,`change-end(value)` 表示一次拖拽、点击、键盘或输入提交结束,载荷均为 `number | [number, number]`。`marks` 是数值键到文字的映射,`formatTooltip` 可格式化提示。
|
|
13
|
+
|
|
14
|
+
```vue
|
|
15
|
+
<script setup lang="ts">
|
|
16
|
+
import { ref } from 'vue';
|
|
17
|
+
import { Slider } from 'x-next';
|
|
18
|
+
import 'x-next/dist/style.css';
|
|
19
|
+
const volume = ref(40);
|
|
20
|
+
const controlAttrs = { 'aria-label': '音量' };
|
|
21
|
+
const committed = ref('尚未调整');
|
|
22
|
+
function finish(value: number | [number, number]) {
|
|
23
|
+
committed.value = typeof value === 'number' ? `已提交音量 ${value}` : value.join(' ~ ');
|
|
24
|
+
}
|
|
25
|
+
</script>
|
|
26
|
+
<template>
|
|
27
|
+
<div style="max-width: 320px">
|
|
28
|
+
<Slider v-model="volume" :step="10" :marks="{ 0: '静音', 100: '最大' }" v-bind="controlAttrs" @change-end="finish" />
|
|
29
|
+
<p role="status">当前 {{ volume }};{{ committed }}</p>
|
|
30
|
+
</div>
|
|
31
|
+
</template>
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
返回 [AI 索引](../index.md)。精选示例不是完整 API 表,新能力先查同版本公开类型与组件文档。
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
<!-- Generated by pnpm generate:ai-usage. Edit src/docs/guide/ai-usage.md and script/ai-usage/. -->
|
|
2
|
+
# Steps AI 使用
|
|
3
|
+
|
|
4
|
+
适用版本:x-next@1.11.0;来源指纹:`eec9ec4e05970a1f3325c873b8858e1fcb84282fa4c09d4eda8d5044c833f82a`。
|
|
5
|
+
|
|
6
|
+
先读 [通用接入](../core.md)。公开导出:`Steps`;模型:v-model:current;已核对事件:change。
|
|
7
|
+
|
|
8
|
+
按需样式:`x-next/style/steps`(包含 base.css、steps.css)。代码块未单独引样式时在应用入口加载全量样式,或按实际所有组件加载 JS 入口;不要仅因复制一个组件页就漏掉其中的 Button 等组合依赖。
|
|
9
|
+
|
|
10
|
+
[组件文档与 live demo](https://x-next.yjmf.com/components/steps)。子组件的公开名称是 `Step`。使用 `v-model:current`,序号从 **1** 开始,`defaultCurrent=1`、`status='process'`、`type='default'`、`direction='horizontal'`;点击切换需开启 `changeable`,默认关闭。
|
|
11
|
+
|
|
12
|
+
`change(step, event)` 返回步骤号和 `Event`。Step 支持 `title`、`description`、`disabled`、`status`;`node` / `icon` 插槽提供步骤与状态,默认 / `description` 插槽可替换文案。业务完成状态由业务自身维护。
|
|
13
|
+
|
|
14
|
+
```vue
|
|
15
|
+
<script setup lang="ts">
|
|
16
|
+
import { ref } from 'vue';
|
|
17
|
+
import { Steps, Step } from 'x-next';
|
|
18
|
+
import 'x-next/dist/style.css';
|
|
19
|
+
const current = ref(1);
|
|
20
|
+
const feedback = ref('正在填写');
|
|
21
|
+
function changed(step: number, _event: Event) { feedback.value = `已切换到第 ${step} 步`; }
|
|
22
|
+
</script>
|
|
23
|
+
<template>
|
|
24
|
+
<Steps v-model:current="current" changeable @change="changed">
|
|
25
|
+
<Step title="填写" description="准备安排" />
|
|
26
|
+
<Step title="核对" description="检查内容" />
|
|
27
|
+
<Step title="完成" description="提交结果" />
|
|
28
|
+
</Steps>
|
|
29
|
+
<p role="status">{{ feedback }}</p>
|
|
30
|
+
</template>
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
返回 [AI 索引](../index.md)。精选示例不是完整 API 表,新能力先查同版本公开类型与组件文档。
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
<!-- Generated by pnpm generate:ai-usage. Edit src/docs/guide/ai-usage.md and script/ai-usage/. -->
|
|
2
|
+
# Switch AI 使用
|
|
3
|
+
|
|
4
|
+
适用版本:x-next@1.11.0;来源指纹:`eec9ec4e05970a1f3325c873b8858e1fcb84282fa4c09d4eda8d5044c833f82a`。
|
|
5
|
+
|
|
6
|
+
先读 [通用接入](../core.md)。公开导出:`Switch`;模型:v-model;已核对事件:change。
|
|
7
|
+
|
|
8
|
+
按需样式:`x-next/style/form-switch`(包含 base.css、form-switch.css)。代码块未单独引样式时在应用入口加载全量样式,或按实际所有组件加载 JS 入口;不要仅因复制一个组件页就漏掉其中的 Button 等组合依赖。
|
|
9
|
+
|
|
10
|
+
[组件文档与 live demo](https://x-next.yjmf.com/components/switch)。普通 `v-model` 支持 `boolean | string | number`;`checkedValue=true`、`uncheckedValue=false`、`defaultChecked=false`,默认 `type='circle'`。`disabled` / `loading` 阻止切换。
|
|
11
|
+
|
|
12
|
+
`change(value, event)` 返回新值和 `Event`;`beforeChange(newValue)` 可返回布尔值或 Promise,`false` 或拒绝阻止切换。`checked` / `unchecked` 插槽及 `checkedText` / `uncheckedText` 显示两态文案,line 类型不显示文案。
|
|
13
|
+
|
|
14
|
+
```vue
|
|
15
|
+
<script setup lang="ts">
|
|
16
|
+
import { ref } from 'vue';
|
|
17
|
+
import { Switch } from 'x-next';
|
|
18
|
+
import 'x-next/dist/style.css';
|
|
19
|
+
const enabled = ref(false);
|
|
20
|
+
const controlAttrs = { 'aria-label': '通知开关' };
|
|
21
|
+
const feedback = ref('通知关闭');
|
|
22
|
+
function changed(value: boolean | string | number, _event: Event) {
|
|
23
|
+
feedback.value = value === true ? '通知开启' : '通知关闭';
|
|
24
|
+
}
|
|
25
|
+
</script>
|
|
26
|
+
<template>
|
|
27
|
+
<Switch v-model="enabled" checked-text="开" unchecked-text="关" v-bind="controlAttrs" @change="changed" />
|
|
28
|
+
<p role="status">{{ feedback }}</p>
|
|
29
|
+
</template>
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
返回 [AI 索引](../index.md)。精选示例不是完整 API 表,新能力先查同版本公开类型与组件文档。
|