x-next 1.12.0 → 1.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 (226) hide show
  1. package/AI_CODING.md +6 -5
  2. package/AI_USAGE/catalog.md +106 -105
  3. package/AI_USAGE/components/alert-api.md +48 -0
  4. package/AI_USAGE/components/alert.md +222 -3
  5. package/AI_USAGE/components/bar-chart-api.md +177 -0
  6. package/AI_USAGE/components/bar-chart.md +297 -3
  7. package/AI_USAGE/components/boxicons.md +147 -0
  8. package/AI_USAGE/components/button-api.md +144 -0
  9. package/AI_USAGE/components/button.md +447 -3
  10. package/AI_USAGE/components/charts.md +81 -0
  11. package/AI_USAGE/components/checkbox-api.md +145 -0
  12. package/AI_USAGE/components/checkbox.md +365 -3
  13. package/AI_USAGE/components/color-picker-api.md +52 -0
  14. package/AI_USAGE/components/color-picker.md +211 -3
  15. package/AI_USAGE/components/config-provider-api.md +38 -0
  16. package/AI_USAGE/components/config-provider.md +250 -3
  17. package/AI_USAGE/components/date-picker-api.md +1114 -0
  18. package/AI_USAGE/components/date-picker.md +378 -3
  19. package/AI_USAGE/components/dialog-api.md +142 -0
  20. package/AI_USAGE/components/dialog.md +284 -3
  21. package/AI_USAGE/components/draggable-api.md +146 -0
  22. package/AI_USAGE/components/draggable.md +259 -0
  23. package/AI_USAGE/components/drawer-api.md +78 -0
  24. package/AI_USAGE/components/drawer.md +227 -0
  25. package/AI_USAGE/components/dropdown-api.md +529 -0
  26. package/AI_USAGE/components/dropdown.md +392 -3
  27. package/AI_USAGE/components/empty-api.md +36 -0
  28. package/AI_USAGE/components/empty.md +227 -3
  29. package/AI_USAGE/components/finicon.md +88 -0
  30. package/AI_USAGE/components/form-api.md +524 -0
  31. package/AI_USAGE/components/form.md +454 -0
  32. package/AI_USAGE/components/grid-api.md +527 -0
  33. package/AI_USAGE/components/grid.md +224 -0
  34. package/AI_USAGE/components/heatmap-api.md +122 -0
  35. package/AI_USAGE/components/heatmap.md +220 -0
  36. package/AI_USAGE/components/icon-api.md +4707 -0
  37. package/AI_USAGE/components/icon.md +257 -0
  38. package/AI_USAGE/components/image-api.md +440 -0
  39. package/AI_USAGE/components/image.md +465 -0
  40. package/AI_USAGE/components/input-api.md +184 -0
  41. package/AI_USAGE/components/input-number-api.md +66 -0
  42. package/AI_USAGE/components/input-number.md +294 -0
  43. package/AI_USAGE/components/input-tag-api.md +114 -0
  44. package/AI_USAGE/components/input-tag.md +482 -0
  45. package/AI_USAGE/components/input.md +293 -3
  46. package/AI_USAGE/components/layout-api.md +147 -0
  47. package/AI_USAGE/components/layout.md +230 -0
  48. package/AI_USAGE/components/line-chart-api.md +197 -0
  49. package/AI_USAGE/components/line-chart.md +279 -3
  50. package/AI_USAGE/components/link-api.md +42 -0
  51. package/AI_USAGE/components/link.md +197 -0
  52. package/AI_USAGE/components/menu-api.md +516 -0
  53. package/AI_USAGE/components/menu.md +268 -0
  54. package/AI_USAGE/components/message-api.md +215 -0
  55. package/AI_USAGE/components/message-box-api.md +108 -0
  56. package/AI_USAGE/components/message-box.md +268 -3
  57. package/AI_USAGE/components/message.md +231 -3
  58. package/AI_USAGE/components/network-api.md +91 -0
  59. package/AI_USAGE/components/network.md +378 -0
  60. package/AI_USAGE/components/notification-api.md +236 -0
  61. package/AI_USAGE/components/notification.md +275 -3
  62. package/AI_USAGE/components/pagination-api.md +62 -0
  63. package/AI_USAGE/components/pagination.md +386 -5
  64. package/AI_USAGE/components/pie-chart-api.md +109 -0
  65. package/AI_USAGE/components/pie-chart.md +245 -3
  66. package/AI_USAGE/components/popconfirm-api.md +75 -0
  67. package/AI_USAGE/components/popconfirm.md +231 -3
  68. package/AI_USAGE/components/popover-api.md +75 -0
  69. package/AI_USAGE/components/popover.md +208 -3
  70. package/AI_USAGE/components/popup-api.md +75 -0
  71. package/AI_USAGE/components/popup.md +52 -0
  72. package/AI_USAGE/components/progress-api.md +44 -0
  73. package/AI_USAGE/components/progress.md +248 -3
  74. package/AI_USAGE/components/radio-api.md +165 -0
  75. package/AI_USAGE/components/radio.md +259 -3
  76. package/AI_USAGE/components/rate-api.md +54 -0
  77. package/AI_USAGE/components/rate.md +233 -3
  78. package/AI_USAGE/components/resize-box-api.md +56 -0
  79. package/AI_USAGE/components/resize-box.md +231 -0
  80. package/AI_USAGE/components/scrollbar-api.md +77 -0
  81. package/AI_USAGE/components/scrollbar.md +218 -0
  82. package/AI_USAGE/components/select-api.md +758 -0
  83. package/AI_USAGE/components/select.md +640 -3
  84. package/AI_USAGE/components/skeleton-api.md +85 -0
  85. package/AI_USAGE/components/skeleton.md +150 -0
  86. package/AI_USAGE/components/slider-api.md +51 -0
  87. package/AI_USAGE/components/slider.md +233 -3
  88. package/AI_USAGE/components/space-api.md +38 -0
  89. package/AI_USAGE/components/space.md +145 -0
  90. package/AI_USAGE/components/spin-api.md +43 -0
  91. package/AI_USAGE/components/spin.md +205 -0
  92. package/AI_USAGE/components/steps-api.md +111 -0
  93. package/AI_USAGE/components/steps.md +201 -3
  94. package/AI_USAGE/components/switch-api.md +58 -0
  95. package/AI_USAGE/components/switch.md +290 -3
  96. package/AI_USAGE/components/table-api.md +2919 -0
  97. package/AI_USAGE/components/table.md +1414 -0
  98. package/AI_USAGE/components/tabs-api.md +135 -0
  99. package/AI_USAGE/components/tabs.md +308 -3
  100. package/AI_USAGE/components/tag-api.md +124 -0
  101. package/AI_USAGE/components/tag.md +292 -0
  102. package/AI_USAGE/components/textarea-api.md +55 -0
  103. package/AI_USAGE/components/textarea.md +326 -3
  104. package/AI_USAGE/components/time-picker-api.md +137 -0
  105. package/AI_USAGE/components/time-picker.md +271 -3
  106. package/AI_USAGE/components/time-range-selector-api.md +44 -0
  107. package/AI_USAGE/components/time-range-selector.md +355 -0
  108. package/AI_USAGE/components/timeline-api.md +93 -0
  109. package/AI_USAGE/components/timeline.md +312 -0
  110. package/AI_USAGE/components/tooltip-api.md +77 -0
  111. package/AI_USAGE/components/tooltip.md +182 -0
  112. package/AI_USAGE/components/trend-chart-api.md +119 -0
  113. package/AI_USAGE/components/trend-chart.md +335 -0
  114. package/AI_USAGE/components/trigger-api.md +124 -0
  115. package/AI_USAGE/components/trigger.md +185 -0
  116. package/AI_USAGE/components/upload-api.md +200 -0
  117. package/AI_USAGE/components/upload.md +711 -3
  118. package/AI_USAGE/components/watermark-api.md +87 -0
  119. package/AI_USAGE/components/watermark.md +200 -0
  120. package/AI_USAGE/core.md +1 -1
  121. package/AI_USAGE/index.md +35 -7
  122. package/AI_USAGE/recipes/form-on-demand.md +1 -1
  123. package/AI_USAGE.md +33657 -7
  124. package/CHANGELOG.md +40 -0
  125. package/dist/_utils/inherit-component-type.d.ts +11 -0
  126. package/dist/components/date-picker/index.d.ts +420 -5
  127. package/dist/components/form-input/index.d.ts +617 -2
  128. package/dist/components/layout/index.d.ts +689 -1
  129. package/dist/components/menu/index.d.ts +786 -1
  130. package/dist/components/network/Network.vue.d.ts +7 -3
  131. package/dist/components/network/index.d.ts +10 -2
  132. package/dist/components/network/props.d.ts +5 -0
  133. package/dist/components/network/utils.d.ts +3 -3
  134. package/dist/components/pagination/page-item-ellipsis.vue.d.ts +4 -1
  135. package/dist/components/pagination/page-item-step.vue.d.ts +101 -130
  136. package/dist/components/pagination/page-item.vue.d.ts +1 -0
  137. package/dist/components/pagination/page-jumper.vue.d.ts +1 -1
  138. package/dist/components/pagination/page-options.vue.d.ts +6 -4
  139. package/dist/components/pagination/utils.d.ts +3 -0
  140. package/dist/components/time-range-selector/index.d.ts +6 -6
  141. package/dist/es/_container/resize-observer-v2.js +1 -1
  142. package/dist/es/_container/resize-observer.js +1 -1
  143. package/dist/es/_hooks/use-resize-observer.js +1 -1
  144. package/dist/es/_styles/palette-aliases.js +4 -4
  145. package/dist/es/_utils/inherit-component-type.js +6 -0
  146. package/dist/es/_virtual/advancedFormat.js +1 -1
  147. package/dist/es/_virtual/customParseFormat.js +1 -1
  148. package/dist/es/_virtual/dayjs.min.js +1 -1
  149. package/dist/es/_virtual/isBetween.js +1 -1
  150. package/dist/es/_virtual/quarterOfYear.js +1 -1
  151. package/dist/es/_virtual/weekOfYear.js +1 -1
  152. package/dist/es/_virtual/weekYear.js +1 -1
  153. package/dist/es/_virtual/zh-cn.js +1 -1
  154. package/dist/es/components/button/Button.js +53 -42
  155. package/dist/es/components/date-picker/index.js +18 -17
  156. package/dist/es/components/draggable/useDraggable.js +1 -1
  157. package/dist/es/components/form/Form.vue2.js +1 -1
  158. package/dist/es/components/form/FormItem.vue2.js +1 -1
  159. package/dist/es/components/form-input/index.js +12 -11
  160. package/dist/es/components/form-input-number/InputNumber.js +1 -1
  161. package/dist/es/components/form-slider/Slider.vue2.js +1 -1
  162. package/dist/es/components/form-slider/slider-ticks.vue2.js +1 -1
  163. package/dist/es/components/form-slider/utils.js +1 -1
  164. package/dist/es/components/layout/index.js +10 -9
  165. package/dist/es/components/menu/MenuItem.js +1 -1
  166. package/dist/es/components/menu/hooks/use-level.js +5 -5
  167. package/dist/es/components/menu/index.js +13 -10
  168. package/dist/es/components/menu/overflow-wrap.js +1 -1
  169. package/dist/es/components/network/Network.vue.js +17 -12
  170. package/dist/es/components/network/Network.vue2.js +78 -70
  171. package/dist/es/components/network/utils.js +112 -71
  172. package/dist/es/components/pagination/Pagination.js +132 -123
  173. package/dist/es/components/pagination/page-item-ellipsis.vue.js +10 -10
  174. package/dist/es/components/pagination/page-item-ellipsis.vue2.js +24 -19
  175. package/dist/es/components/pagination/page-item-step.vue.js +14 -11
  176. package/dist/es/components/pagination/page-item-step.vue2.js +20 -22
  177. package/dist/es/components/pagination/page-item.vue.js +10 -9
  178. package/dist/es/components/pagination/page-item.vue2.js +24 -19
  179. package/dist/es/components/pagination/page-jumper.vue2.js +23 -23
  180. package/dist/es/components/pagination/page-options.vue.js +15 -10
  181. package/dist/es/components/pagination/page-options.vue2.js +21 -17
  182. package/dist/es/components/pagination/utils.js +4 -2
  183. package/dist/es/components/progress/circle.vue2.js +1 -1
  184. package/dist/es/components/progress/line.vue2.js +1 -1
  185. package/dist/es/components/progress/steps.vue2.js +1 -1
  186. package/dist/es/components/rate/Rate.js +1 -1
  187. package/dist/es/components/virtual-list-v2/virtual-list-item.js +1 -1
  188. package/dist/es/locale/en-US.js +2 -0
  189. package/dist/es/locale/zh-CN.js +2 -0
  190. package/dist/es/{Users/xuyu/Code/x-next/node_modules → node_modules}/.pnpm/dayjs@1.11.21/node_modules/dayjs/dayjs.min.js +1 -1
  191. package/dist/es/{Users/xuyu/Code/x-next/node_modules → node_modules}/.pnpm/dayjs@1.11.21/node_modules/dayjs/locale/zh-cn.js +1 -1
  192. package/dist/es/{Users/xuyu/Code/x-next/node_modules → node_modules}/.pnpm/dayjs@1.11.21/node_modules/dayjs/plugin/advancedFormat.js +1 -1
  193. package/dist/es/{Users/xuyu/Code/x-next/node_modules → node_modules}/.pnpm/dayjs@1.11.21/node_modules/dayjs/plugin/customParseFormat.js +1 -1
  194. package/dist/es/{Users/xuyu/Code/x-next/node_modules → node_modules}/.pnpm/dayjs@1.11.21/node_modules/dayjs/plugin/isBetween.js +1 -1
  195. package/dist/es/{Users/xuyu/Code/x-next/node_modules → node_modules}/.pnpm/dayjs@1.11.21/node_modules/dayjs/plugin/quarterOfYear.js +1 -1
  196. package/dist/es/{Users/xuyu/Code/x-next/node_modules → node_modules}/.pnpm/dayjs@1.11.21/node_modules/dayjs/plugin/weekOfYear.js +1 -1
  197. package/dist/es/{Users/xuyu/Code/x-next/node_modules → node_modules}/.pnpm/dayjs@1.11.21/node_modules/dayjs/plugin/weekYear.js +1 -1
  198. package/dist/es/style.css +1 -1
  199. package/dist/index.cjs +3 -3
  200. package/dist/index.umd.js +3 -3
  201. package/dist/locale/interface.d.ts +3 -0
  202. package/dist/style/base.css +1 -1
  203. package/dist/style/button.css +1 -1
  204. package/dist/style/form-select.css +1 -1
  205. package/dist/style/network.css +1 -1
  206. package/dist/style/pagination.css +1 -1
  207. package/dist/style/table.css +1 -1
  208. package/dist/style.css +1 -1
  209. package/package.json +10 -5
  210. /package/dist/es/{Users/xuyu/Code/x-next/node_modules → node_modules}/.pnpm/b-validate@1.5.3/node_modules/b-validate/es/index.js +0 -0
  211. /package/dist/es/{Users/xuyu/Code/x-next/node_modules → node_modules}/.pnpm/b-validate@1.5.3/node_modules/b-validate/es/is.js +0 -0
  212. /package/dist/es/{Users/xuyu/Code/x-next/node_modules → node_modules}/.pnpm/b-validate@1.5.3/node_modules/b-validate/es/locale/en-US.js +0 -0
  213. /package/dist/es/{Users/xuyu/Code/x-next/node_modules → node_modules}/.pnpm/b-validate@1.5.3/node_modules/b-validate/es/rules/array.js +0 -0
  214. /package/dist/es/{Users/xuyu/Code/x-next/node_modules → node_modules}/.pnpm/b-validate@1.5.3/node_modules/b-validate/es/rules/base.js +0 -0
  215. /package/dist/es/{Users/xuyu/Code/x-next/node_modules → node_modules}/.pnpm/b-validate@1.5.3/node_modules/b-validate/es/rules/boolean.js +0 -0
  216. /package/dist/es/{Users/xuyu/Code/x-next/node_modules → node_modules}/.pnpm/b-validate@1.5.3/node_modules/b-validate/es/rules/custom.js +0 -0
  217. /package/dist/es/{Users/xuyu/Code/x-next/node_modules → node_modules}/.pnpm/b-validate@1.5.3/node_modules/b-validate/es/rules/number.js +0 -0
  218. /package/dist/es/{Users/xuyu/Code/x-next/node_modules → node_modules}/.pnpm/b-validate@1.5.3/node_modules/b-validate/es/rules/object.js +0 -0
  219. /package/dist/es/{Users/xuyu/Code/x-next/node_modules → node_modules}/.pnpm/b-validate@1.5.3/node_modules/b-validate/es/rules/string.js +0 -0
  220. /package/dist/es/{Users/xuyu/Code/x-next/node_modules → node_modules}/.pnpm/b-validate@1.5.3/node_modules/b-validate/es/rules/type.js +0 -0
  221. /package/dist/es/{Users/xuyu/Code/x-next/node_modules → node_modules}/.pnpm/b-validate@1.5.3/node_modules/b-validate/es/util.js +0 -0
  222. /package/dist/es/{Users/xuyu/Code/x-next/node_modules → node_modules}/.pnpm/compute-scroll-into-view@3.1.1/node_modules/compute-scroll-into-view/dist/index.js +0 -0
  223. /package/dist/es/{Users/xuyu/Code/x-next/node_modules → node_modules}/.pnpm/number-precision@1.6.0/node_modules/number-precision/build/index.es.js +0 -0
  224. /package/dist/es/{Users/xuyu/Code/x-next/node_modules → node_modules}/.pnpm/resize-observer-polyfill@1.5.1/node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js +0 -0
  225. /package/dist/es/{Users/xuyu/Code/x-next/node_modules → node_modules}/.pnpm/scroll-into-view-if-needed@3.1.0/node_modules/scroll-into-view-if-needed/dist/index.js +0 -0
  226. /package/dist/es/{Users/xuyu/Code/x-next/node_modules → node_modules}/.pnpm/sortablejs@1.15.7/node_modules/sortablejs/modular/sortable.esm.js +0 -0
@@ -0,0 +1,355 @@
1
+ <!-- Generated by pnpm generate:ai-usage. Edit script/ai-usage/content.md and script/ai-usage/. -->
2
+ # TimeRangeSelector AI 使用
3
+
4
+ 适用版本:x-next@1.14.0;来源指纹:`014984639d816a2c7e25eb22690c586b0b2e8efba6846bec8a4e424db41a09e9`。
5
+
6
+ 先读 [通用接入](../core.md)。公开导出:`TimeRangeSelector`;主要模型:v-model。完整 Props、Events、Slots、实例方法与服务签名见 [本地 API](./time-range-selector-api.md),包含本组件族全部子组件和别名。
7
+
8
+ 按需样式:`x-next/style/time-range-selector`(包含 base.css、time-range-selector.css)。代码块未单独引样式时在应用入口加载全量样式,或按实际所有组件加载 JS 入口;不要仅因复制一个组件页就漏掉其中的 Button 等组合依赖。
9
+
10
+ ## 场景用法
11
+
12
+ 以下示例从本地 `src/docs/components/time-range-selector.md` 显式导入到独立 AI 源,补齐局部注册、状态和样式后进行严格模板检查。上方已核验行为优先;原始 prop 默认值、包装透传和示例业务适配分别查 [完整 API](./time-range-selector-api.md) 与场景说明。类型通过不代表所有散文和交互已验证。
13
+
14
+ ### 用途与选型
15
+
16
+ 用于在一天内选择一个或多个时间区间,适合排班、报表筛选和监控时间段配置。
17
+
18
+
19
+ ### 基础用法
20
+
21
+ ```vue
22
+ <script setup lang="ts">
23
+ import 'x-next/style.css';
24
+ import { TimeRangeSelector } from 'x-next';
25
+ import { ref } from 'vue';
26
+
27
+ const ranges = ref<[string, string][]>([
28
+ ['08:00', '12:00'],
29
+ ['14:00', '18:00'],
30
+ ]);
31
+ </script>
32
+ <template>
33
+ <TimeRangeSelector v-model="ranges" />
34
+ </template>
35
+ ```
36
+
37
+ ### 禁用时间段
38
+
39
+ ```vue
40
+ <script setup lang="ts">
41
+ import 'x-next/style.css';
42
+ import { TimeRangeSelector } from 'x-next';
43
+ import { ref } from 'vue';
44
+
45
+ const ranges = ref<[string, string][]>([
46
+ ['07:00', '11:00'],
47
+ ['15:00', '19:00'],
48
+ ]);
49
+ </script>
50
+ <template>
51
+ <TimeRangeSelector
52
+ v-model="ranges"
53
+ :disabled-ranges="[['12:00', '13:00']]"
54
+ :step-minutes="30"
55
+ />
56
+ </template>
57
+ ```
58
+
59
+ ### 场景风格
60
+
61
+ ```vue
62
+ <script setup lang="ts">
63
+ import 'x-next/style.css';
64
+ import { TimeRangeSelector } from 'x-next';
65
+ import { ref } from 'vue';
66
+
67
+ const defaultRanges = ref<[string, string][]>([['07:00', '11:00']]);
68
+ const scheduleRanges = ref<[string, string][]>([
69
+ ['08:30', '12:30'],
70
+ ['14:00', '18:00'],
71
+ ]);
72
+ const monitorRanges = ref<[string, string][]>([
73
+ ['00:00', '04:00'],
74
+ ['19:00', '23:00'],
75
+ ]);
76
+ const compactRanges = ref<[string, string][]>([
77
+ ['09:00', '13:00'],
78
+ ['15:00', '19:00'],
79
+ ]);
80
+ const hiddenCursorRanges = ref<[string, string][]>([
81
+ ['08:00', '12:00'],
82
+ ['14:00', '18:00'],
83
+ ]);
84
+
85
+ const defaultDisabled = ref<[string, string][]>([['13:00', '15:00']]);
86
+ const scheduleDisabled = ref<[string, string][]>([['12:30', '14:00']]);
87
+ const monitorDisabled = ref<[string, string][]>([['04:00', '06:00']]);
88
+ const compactDisabled = ref<[string, string][]>([['13:00', '14:30']]);
89
+ const hiddenCursorDisabled = ref<[string, string][]>([['12:00', '13:00']]);
90
+ </script>
91
+ <template>
92
+ <TimeRangeSelector
93
+ v-model="defaultRanges"
94
+ scene="default"
95
+ :disabled-ranges="defaultDisabled"
96
+ />
97
+ <TimeRangeSelector
98
+ v-model="scheduleRanges"
99
+ scene="schedule"
100
+ :disabled-ranges="scheduleDisabled"
101
+ />
102
+ <TimeRangeSelector
103
+ v-model="monitorRanges"
104
+ scene="monitor"
105
+ :disabled-ranges="monitorDisabled"
106
+ />
107
+ <TimeRangeSelector
108
+ v-model="compactRanges"
109
+ scene="compact"
110
+ :disabled-ranges="compactDisabled"
111
+ />
112
+ <TimeRangeSelector
113
+ v-model="hiddenCursorRanges"
114
+ scene="compact"
115
+ :disabled-ranges="hiddenCursorDisabled"
116
+ :show-cursor="false"
117
+ />
118
+ </template>
119
+ ```
120
+
121
+ ### 自定义颜色
122
+
123
+ 更细的主题控制可以覆盖组件 CSS 变量。
124
+
125
+ ```vue
126
+ <script setup lang="ts">
127
+ import 'x-next/style.css';
128
+ import { TimeRangeSelector } from 'x-next';
129
+ import { ref } from 'vue';
130
+
131
+ const defaultRanges = ref<[string, string][]>([['08:00', '12:00']]);
132
+ const scheduleRanges = ref<[string, string][]>([['09:00', '13:00']]);
133
+ const monitorRanges = ref<[string, string][]>([['00:00', '04:00']]);
134
+ const compactRanges = ref<[string, string][]>([['15:00', '19:00']]);
135
+
136
+ const defaultDisabled = ref<[string, string][]>([['13:00', '15:00']]);
137
+ const scheduleDisabled = ref<[string, string][]>([['13:00', '14:30']]);
138
+ const monitorDisabled = ref<[string, string][]>([['04:00', '06:00']]);
139
+ const compactDisabled = ref<[string, string][]>([['12:00', '13:30']]);
140
+ </script>
141
+ <template>
142
+ <TimeRangeSelector
143
+ v-model="defaultRanges"
144
+ color="#0f766e"
145
+ :disabled-ranges="defaultDisabled"
146
+ />
147
+ <TimeRangeSelector
148
+ v-model="scheduleRanges"
149
+ scene="schedule"
150
+ color="#2563eb"
151
+ :disabled-ranges="scheduleDisabled"
152
+ />
153
+ <TimeRangeSelector
154
+ v-model="monitorRanges"
155
+ scene="monitor"
156
+ color="#dc2626"
157
+ :disabled-ranges="monitorDisabled"
158
+ />
159
+ <TimeRangeSelector
160
+ v-model="compactRanges"
161
+ scene="compact"
162
+ color="#16a34a"
163
+ :disabled-ranges="compactDisabled"
164
+ :show-cursor="false"
165
+ />
166
+ </template>
167
+ ```
168
+
169
+ ```vue
170
+ <script setup lang="ts">
171
+ import 'x-next/style.css';
172
+ import { TimeRangeSelector } from 'x-next';
173
+ import { ref } from 'vue';
174
+
175
+ const ranges = ref<[string, string][]>([
176
+ ['08:00', '12:00'],
177
+ ['15:00', '19:00'],
178
+ ]);
179
+ </script>
180
+ <template>
181
+ <TimeRangeSelector v-model="ranges" class="custom-time-range" />
182
+ </template>
183
+ <style scoped>
184
+ .custom-time-range {
185
+ --x-time-range-selector-color: #0f766e;
186
+ --x-time-range-selector-grid-radius: 8px;
187
+ --x-time-range-selector-range-height: 34px;
188
+ --x-time-range-selector-range-radius: 8px;
189
+ }
190
+ </style>
191
+ ```
192
+
193
+ ### 限制范围数量
194
+
195
+ ```vue
196
+ <script setup lang="ts">
197
+ import 'x-next/style.css';
198
+ import { TimeRangeSelector } from 'x-next';
199
+ import { ref } from 'vue';
200
+
201
+ const ranges = ref<[string, string][]>([
202
+ ['08:00', '12:00'],
203
+ ['14:00', '18:00'],
204
+ ]);
205
+ </script>
206
+ <template>
207
+ <TimeRangeSelector v-model="ranges" :max-ranges="3" />
208
+ </template>
209
+ ```
210
+
211
+ ### 允许重叠
212
+
213
+ ```vue
214
+ <script setup lang="ts">
215
+ import 'x-next/style.css';
216
+ import { TimeRangeSelector } from 'x-next';
217
+ import { ref } from 'vue';
218
+
219
+ const ranges = ref<[string, string][]>([
220
+ ['08:00', '12:00'],
221
+ ['10:00', '14:00'],
222
+ ]);
223
+ </script>
224
+ <template>
225
+ <TimeRangeSelector v-model="ranges" overlap-allowed />
226
+ </template>
227
+ ```
228
+
229
+ ### 更细步长
230
+
231
+ ```vue
232
+ <script setup lang="ts">
233
+ import 'x-next/style.css';
234
+ import { TimeRangeSelector } from 'x-next';
235
+ import { ref } from 'vue';
236
+
237
+ const ranges = ref<[string, string][]>([
238
+ ['08:15', '12:15'],
239
+ ]);
240
+ </script>
241
+ <template>
242
+ <TimeRangeSelector v-model="ranges" :step-minutes="15" />
243
+ </template>
244
+ ```
245
+
246
+ ### 整体禁用与只读
247
+
248
+ 禁用时退出 Tab 序列,只读时仍可聚焦查看。两种状态都阻止创建、移动、缩放与删除;拖拽过程中切换状态会取消预览并恢复外部值。
249
+
250
+ ```vue
251
+ <script setup lang="ts">
252
+ import 'x-next/style.css';
253
+ import { Space, Checkbox, TimeRangeSelector } from 'x-next';
254
+ import { ref } from 'vue';
255
+ const ranges = ref<[string, string][]>([['08:00', '12:00']]);
256
+ const disabled = ref(false);
257
+ const readonly = ref(false);
258
+ </script>
259
+ <template>
260
+ <Space><Checkbox v-model="disabled">禁用</Checkbox><Checkbox v-model="readonly">只读</Checkbox></Space>
261
+ <TimeRangeSelector v-model="ranges" :disabled="disabled" :readonly="readonly" />
262
+ </template>
263
+ ```
264
+
265
+ ### 键盘与删除事件
266
+
267
+ Home / End 定位到一天的首尾时间块。键盘每次移动一个 `stepMinutes`,遵守禁区、重叠、最大数量和 24:00 边界。双击区间或在区间聚焦后按 Delete / Backspace 删除。删除先触发 `remove`,再触发 `update:modelValue` 和 `change`。
268
+
269
+ ```vue
270
+ <script setup lang="ts">
271
+ import 'x-next/style.css';
272
+ import { TimeRangeSelector } from 'x-next';
273
+ import { ref } from 'vue';
274
+ const ranges = ref<[string, string][]>([]);
275
+ const log = ref('等待操作');
276
+ const removed = ref('等待删除');
277
+ const onChange = (value: [string, string][]) => { log.value = `change: ${JSON.stringify(value)}`; };
278
+ const onRemove = (value: [string, string]) => { removed.value = `remove: ${value.join(' - ')}`; };
279
+ import type { HTMLAttributes } from 'vue';
280
+ const nativeAttrs1 = { "aria-label": "排班时间段" } satisfies HTMLAttributes;
281
+ </script>
282
+ <template>
283
+ <TimeRangeSelector v-bind="nativeAttrs1" v-model="ranges" :disabled-ranges="[['12:00', '13:00']]" :max-ranges="3"
284
+ @change="onChange" @remove="onRemove" />
285
+ <p>{{ log }};{{ removed }}</p>
286
+ </template>
287
+ ```
288
+
289
+ ### Form 禁用、校验与重置
290
+
291
+ 用户完成拖拽或键盘修改时触发 Form 的 change 校验;外部模型同步不会重复触发 change。
292
+
293
+ ```vue
294
+ <script setup lang="ts">
295
+ import 'x-next/style.css';
296
+ import { Checkbox, Form, FormItem, TimeRangeSelector, Space, Button } from 'x-next';
297
+ import { reactive, ref } from 'vue';
298
+ import type { FormInstance } from 'x-next';
299
+ const form = reactive({ ranges: [] as [string, string][] });
300
+ const formRef = ref<FormInstance>();
301
+ const disabled = ref(false);
302
+ const result = ref('至少选择一个时间段');
303
+ const validate = async () => { result.value = (await formRef.value!.validate()) ? '请添加时间段' : '校验通过'; };
304
+ const reset = () => { formRef.value!.resetFields(); result.value = '已重置'; };
305
+ </script>
306
+ <template>
307
+ <Checkbox v-model="disabled">禁用整个表单</Checkbox>
308
+ <Form ref="formRef" :model="form" :disabled="disabled" layout="vertical">
309
+ <FormItem field="ranges" label="工作时段" :rules="{ type: 'array', minLength: 1, message: '至少选择一个时间段' }">
310
+ <TimeRangeSelector v-model="form.ranges" />
311
+ </FormItem>
312
+ </Form>
313
+ <Space><Button @click="validate">校验</Button><Button @click="reset">重置</Button></Space>
314
+ <p>{{ result }}</p>
315
+ </template>
316
+ ```
317
+
318
+ ### 受控接收与拒绝更新
319
+
320
+ 拖拽中显示预览,结束后提交更新请求。父级未同步接收时,下一个渲染周期恢复 `modelValue`;键盘操作也遵循此规则。外部模型更新会终止正在进行的拖拽。
321
+
322
+ ```vue
323
+ <script setup lang="ts">
324
+ import 'x-next/style.css';
325
+ import { Checkbox, TimeRangeSelector } from 'x-next';
326
+ import { ref } from 'vue';
327
+ const ranges = ref<[string, string][]>([['08:00', '12:00']]);
328
+ const accept = ref(false);
329
+ const log = ref('当前拒绝修改,操作后会恢复');
330
+ const handleUpdate = (value: [string, string][]) => {
331
+ log.value = `请求:${JSON.stringify(value)},${accept.value ? '已接收' : '已拒绝'}`;
332
+ if (accept.value) ranges.value = value;
333
+ };
334
+ </script>
335
+ <template>
336
+ <Checkbox v-model="accept">接收修改</Checkbox>
337
+ <TimeRangeSelector :model-value="ranges" @update:model-value="handleUpdate" />
338
+ <p>{{ log }}</p>
339
+ </template>
340
+ ```
341
+
342
+ ### 交互说明
343
+
344
+ - 在时间轴空白区域按下并拖动可创建范围。
345
+ - 拖动范围主体可移动时间段,拖动过程中会保持原区间宽度。
346
+ - 拖动左右边缘可调整开始和结束时间。
347
+ - 双击已选范围可删除。
348
+ - 当 `overlapAllowed` 为 `false` 时,组件会阻止创建或拖入重叠区间。
349
+ - 禁用时间段不会被纳入最终值,拖拽靠近禁用时间段时会停在边界。
350
+
351
+ `disabledRanges` 只限制指定时间段;整体禁用请使用 `disabled`。拖拽时显示内部预览,外部模型更新会终止当前拖拽并同步值。请使用 `v-model` 接收最终结果;父级拒绝更新时会在下一渲染周期恢复 `modelValue`。
352
+
353
+
354
+
355
+ 返回 [AI 索引](../index.md)。先查本页与 [本地 API](./time-range-selector-api.md);需要更深类型时查 [公开组件导航](../catalog.md),不默认上网查找本包用法。
@@ -0,0 +1,93 @@
1
+ <!-- Generated by pnpm generate:ai-usage. Edit script/ai-usage/content.md and script/ai-usage/. -->
2
+ # Timeline 完整公开 API
3
+
4
+ 适用版本:x-next@1.14.0;来源指纹:`014984639d816a2c7e25eb22690c586b0b2e8efba6846bec8a4e424db41a09e9`。
5
+
6
+ 从同版本构建的公开声明、运行时 props/emits 和显式 expose 生成。运行时导入始终使用 `x-next`,声明路径仅作定位。插槽类型未细化时,具体槽名与作用域见本地用法示例。
7
+
8
+ ## Timeline API
9
+
10
+ 公开声明:`dist/components/timeline/index.d.ts`。 类型中的 undefined 表示可省略;原始 prop 默认值不等于继承配置或服务默认值。
11
+
12
+ ### Props
13
+
14
+ | 名称 | 用途 | 公开类型 | 必填 | 声明默认值 |
15
+ | --- | --- | --- | --- | --- |
16
+ | reverse | 是否倒序展示 | undefined &#124; false &#124; true | 否 | false(Vue Boolean 转换) |
17
+ | lineType | 轴线样式 | undefined &#124; "dashed" &#124; "dotted" &#124; "solid" | 否 | "solid" |
18
+ | direction | 时间线方向 | undefined &#124; "horizontal" &#124; "vertical" | 否 | "vertical" |
19
+ | mode | 展示模式 | undefined &#124; "top" &#124; "bottom" &#124; "right" &#124; "left" &#124; "alternate" | 否 | "left" |
20
+ | pending | 是否展示幽灵节点,传入字符串时作为节点内容展示 | undefined &#124; string &#124; false &#124; true | 否 | false(Vue Boolean 转换) |
21
+ | labelPosition | 标签文本位置 | undefined &#124; "same" &#124; "relative" | 否 | "same" |
22
+
23
+ ### Events
24
+
25
+ 未声明组件 emits;原生事件与包装透传按本页用法核实。
26
+
27
+ ### Slots
28
+
29
+ | 名称 | 用途 | 公开类型 |
30
+ | --- | --- | --- |
31
+ | default | 时间线节点列表 | 文档列出的实际插槽;公开类型未细化,作用域见场景用法 |
32
+ | dot | 自定义幽灵节点 | 文档列出的实际插槽;公开类型未细化,作用域见场景用法 |
33
+
34
+ ### 实例方法
35
+
36
+ 没有检索到显式 expose 或 Options API methods 的公开方法;不把 setup 内部函数当成稳定实例 API。
37
+
38
+ ### 关联类型定义
39
+
40
+ 以下摘自本组件族声明,供查阅嵌套配置;运行时和值类型均以根入口可导出项为准。
41
+
42
+ ```typescript-reference
43
+ type CSSColor = CSSProperties['color'];
44
+
45
+ type LineType = 'dotted' | 'dashed' | 'solid';
46
+
47
+ type TimelineDirection = 'vertical' | 'horizontal';
48
+
49
+ type TimelineMode = 'left' | 'right' | 'top' | 'bottom' | 'alternate';
50
+
51
+ type TimelineLabelPosition = 'same' | 'relative';
52
+
53
+ type TimelineDotType = 'solid' | 'hollow';
54
+
55
+ type TimelineItemPosition = 'left' | 'right' | 'top' | 'bottom';
56
+ ```
57
+
58
+
59
+ ## TimelineItem API
60
+
61
+ 公开声明:`dist/components/timeline-item/index.d.ts`。 类型中的 undefined 表示可省略;原始 prop 默认值不等于继承配置或服务默认值。
62
+
63
+ ### Props
64
+
65
+ | 名称 | 用途 | 公开类型 | 必填 | 声明默认值 |
66
+ | --- | --- | --- | --- | --- |
67
+ | label | 标签文本 | undefined &#124; string | 否 | 未声明 |
68
+ | dotColor | 时间点颜色 | undefined &#124; string & {} &#124; "initial" &#124; "red" &#124; "orangered" &#124; "orange" &#124; "gold" &#124; "lime" &#124; "green" &#124; "cyan" &#124; "blue" &#124; "purple" &#124; "magenta" &#124; "gray" &#124; "-moz-initial" &#124; "inherit" &#124; "revert" &#124; "revert-layer" &#124; "unset" &#124; "aliceblue" &#124; "antiquewhite" &#124; "aqua" &#124; "aquamarine" &#124; "azure" &#124; "beige" &#124; "bisque" &#124; "black" &#124; "blanchedalmond" &#124; "blueviolet" &#124; "brown" &#124; "burlywood" &#124; "cadetblue" &#124; "chartreuse" &#124; "chocolate" &#124; "coral" &#124; "cornflowerblue" &#124; "cornsilk" &#124; "crimson" &#124; "darkblue" &#124; "darkcyan" &#124; "darkgoldenrod" &#124; "darkgray" &#124; "darkgreen" &#124; "darkgrey" &#124; "darkkhaki" &#124; "darkmagenta" &#124; "darkolivegreen" &#124; "darkorange" &#124; "darkorchid" &#124; "darkred" &#124; "darksalmon" &#124; "darkseagreen" &#124; "darkslateblue" &#124; "darkslategray" &#124; "darkslategrey" &#124; "darkturquoise" &#124; "darkviolet" &#124; "deeppink" &#124; "deepskyblue" &#124; "dimgray" &#124; "dimgrey" &#124; "dodgerblue" &#124; "firebrick" &#124; "floralwhite" &#124; "forestgreen" &#124; "fuchsia" &#124; "gainsboro" &#124; "ghostwhite" &#124; "goldenrod" &#124; "greenyellow" &#124; "grey" &#124; "honeydew" &#124; "hotpink" &#124; "indianred" &#124; "indigo" &#124; "ivory" &#124; "khaki" &#124; "lavender" &#124; "lavenderblush" &#124; "lawngreen" &#124; "lemonchiffon" &#124; "lightblue" &#124; "lightcoral" &#124; "lightcyan" &#124; "lightgoldenrodyellow" &#124; "lightgray" &#124; "lightgreen" &#124; "lightgrey" &#124; "lightpink" &#124; "lightsalmon" &#124; "lightseagreen" &#124; "lightskyblue" &#124; "lightslategray" &#124; "lightslategrey" &#124; "lightsteelblue" &#124; "lightyellow" &#124; "limegreen" &#124; "linen" &#124; "maroon" &#124; "mediumaquamarine" &#124; "mediumblue" &#124; "mediumorchid" &#124; "mediumpurple" &#124; "mediumseagreen" &#124; "mediumslateblue" &#124; "mediumspringgreen" &#124; "mediumturquoise" &#124; "mediumvioletred" &#124; "midnightblue" &#124; "mintcream" &#124; "mistyrose" &#124; "moccasin" &#124; "navajowhite" &#124; "navy" &#124; "oldlace" &#124; "olive" &#124; "olivedrab" &#124; "orchid" &#124; "palegoldenrod" &#124; "palegreen" &#124; "paleturquoise" &#124; "palevioletred" &#124; "papayawhip" &#124; "peachpuff" &#124; "peru" &#124; "pink" &#124; "plum" &#124; "powderblue" &#124; "rebeccapurple" &#124; "rosybrown" &#124; "royalblue" &#124; "saddlebrown" &#124; "salmon" &#124; "sandybrown" &#124; "seagreen" &#124; "seashell" &#124; "sienna" &#124; "silver" &#124; "skyblue" &#124; "slateblue" &#124; "slategray" &#124; "slategrey" &#124; "snow" &#124; "springgreen" &#124; "steelblue" &#124; "tan" &#124; "teal" &#124; "thistle" &#124; "tomato" &#124; "turquoise" &#124; "violet" &#124; "wheat" &#124; "white" &#124; "whitesmoke" &#124; "yellow" &#124; "yellowgreen" &#124; "transparent" &#124; "AccentColor" &#124; "AccentColorText" &#124; "ActiveText" &#124; "ButtonBorder" &#124; "ButtonFace" &#124; "ButtonText" &#124; "Canvas" &#124; "CanvasText" &#124; "Field" &#124; "FieldText" &#124; "GrayText" &#124; "Highlight" &#124; "HighlightText" &#124; "LinkText" &#124; "Mark" &#124; "MarkText" &#124; "SelectedItem" &#124; "SelectedItemText" &#124; "VisitedText" &#124; "ActiveBorder" &#124; "ActiveCaption" &#124; "AppWorkspace" &#124; "Background" &#124; "ButtonHighlight" &#124; "ButtonShadow" &#124; "CaptionText" &#124; "InactiveBorder" &#124; "InactiveCaption" &#124; "InactiveCaptionText" &#124; "InfoBackground" &#124; "InfoText" &#124; "Menu" &#124; "MenuText" &#124; "Scrollbar" &#124; "ThreeDDarkShadow" &#124; "ThreeDFace" &#124; "ThreeDHighlight" &#124; "ThreeDLightShadow" &#124; "ThreeDShadow" &#124; "Window" &#124; "WindowFrame" &#124; "WindowText" &#124; "currentColor" | 否 | 未声明 |
69
+ | dotType | 时间点类型 | undefined &#124; "solid" &#124; "hollow" | 否 | "solid" |
70
+ | lineType | 当前节点后的轴线样式 | undefined &#124; "dashed" &#124; "dotted" &#124; "solid" | 否 | 未声明 |
71
+ | lineColor | 当前节点后的轴线颜色 | undefined &#124; string & {} &#124; "initial" &#124; "red" &#124; "orangered" &#124; "orange" &#124; "gold" &#124; "lime" &#124; "green" &#124; "cyan" &#124; "blue" &#124; "purple" &#124; "magenta" &#124; "gray" &#124; "-moz-initial" &#124; "inherit" &#124; "revert" &#124; "revert-layer" &#124; "unset" &#124; "aliceblue" &#124; "antiquewhite" &#124; "aqua" &#124; "aquamarine" &#124; "azure" &#124; "beige" &#124; "bisque" &#124; "black" &#124; "blanchedalmond" &#124; "blueviolet" &#124; "brown" &#124; "burlywood" &#124; "cadetblue" &#124; "chartreuse" &#124; "chocolate" &#124; "coral" &#124; "cornflowerblue" &#124; "cornsilk" &#124; "crimson" &#124; "darkblue" &#124; "darkcyan" &#124; "darkgoldenrod" &#124; "darkgray" &#124; "darkgreen" &#124; "darkgrey" &#124; "darkkhaki" &#124; "darkmagenta" &#124; "darkolivegreen" &#124; "darkorange" &#124; "darkorchid" &#124; "darkred" &#124; "darksalmon" &#124; "darkseagreen" &#124; "darkslateblue" &#124; "darkslategray" &#124; "darkslategrey" &#124; "darkturquoise" &#124; "darkviolet" &#124; "deeppink" &#124; "deepskyblue" &#124; "dimgray" &#124; "dimgrey" &#124; "dodgerblue" &#124; "firebrick" &#124; "floralwhite" &#124; "forestgreen" &#124; "fuchsia" &#124; "gainsboro" &#124; "ghostwhite" &#124; "goldenrod" &#124; "greenyellow" &#124; "grey" &#124; "honeydew" &#124; "hotpink" &#124; "indianred" &#124; "indigo" &#124; "ivory" &#124; "khaki" &#124; "lavender" &#124; "lavenderblush" &#124; "lawngreen" &#124; "lemonchiffon" &#124; "lightblue" &#124; "lightcoral" &#124; "lightcyan" &#124; "lightgoldenrodyellow" &#124; "lightgray" &#124; "lightgreen" &#124; "lightgrey" &#124; "lightpink" &#124; "lightsalmon" &#124; "lightseagreen" &#124; "lightskyblue" &#124; "lightslategray" &#124; "lightslategrey" &#124; "lightsteelblue" &#124; "lightyellow" &#124; "limegreen" &#124; "linen" &#124; "maroon" &#124; "mediumaquamarine" &#124; "mediumblue" &#124; "mediumorchid" &#124; "mediumpurple" &#124; "mediumseagreen" &#124; "mediumslateblue" &#124; "mediumspringgreen" &#124; "mediumturquoise" &#124; "mediumvioletred" &#124; "midnightblue" &#124; "mintcream" &#124; "mistyrose" &#124; "moccasin" &#124; "navajowhite" &#124; "navy" &#124; "oldlace" &#124; "olive" &#124; "olivedrab" &#124; "orchid" &#124; "palegoldenrod" &#124; "palegreen" &#124; "paleturquoise" &#124; "palevioletred" &#124; "papayawhip" &#124; "peachpuff" &#124; "peru" &#124; "pink" &#124; "plum" &#124; "powderblue" &#124; "rebeccapurple" &#124; "rosybrown" &#124; "royalblue" &#124; "saddlebrown" &#124; "salmon" &#124; "sandybrown" &#124; "seagreen" &#124; "seashell" &#124; "sienna" &#124; "silver" &#124; "skyblue" &#124; "slateblue" &#124; "slategray" &#124; "slategrey" &#124; "snow" &#124; "springgreen" &#124; "steelblue" &#124; "tan" &#124; "teal" &#124; "thistle" &#124; "tomato" &#124; "turquoise" &#124; "violet" &#124; "wheat" &#124; "white" &#124; "whitesmoke" &#124; "yellow" &#124; "yellowgreen" &#124; "transparent" &#124; "AccentColor" &#124; "AccentColorText" &#124; "ActiveText" &#124; "ButtonBorder" &#124; "ButtonFace" &#124; "ButtonText" &#124; "Canvas" &#124; "CanvasText" &#124; "Field" &#124; "FieldText" &#124; "GrayText" &#124; "Highlight" &#124; "HighlightText" &#124; "LinkText" &#124; "Mark" &#124; "MarkText" &#124; "SelectedItem" &#124; "SelectedItemText" &#124; "VisitedText" &#124; "ActiveBorder" &#124; "ActiveCaption" &#124; "AppWorkspace" &#124; "Background" &#124; "ButtonHighlight" &#124; "ButtonShadow" &#124; "CaptionText" &#124; "InactiveBorder" &#124; "InactiveCaption" &#124; "InactiveCaptionText" &#124; "InfoBackground" &#124; "InfoText" &#124; "Menu" &#124; "MenuText" &#124; "Scrollbar" &#124; "ThreeDDarkShadow" &#124; "ThreeDFace" &#124; "ThreeDHighlight" &#124; "ThreeDLightShadow" &#124; "ThreeDShadow" &#124; "Window" &#124; "WindowFrame" &#124; "WindowText" &#124; "currentColor" | 否 | 未声明 |
72
+ | position | 交替模式下的单项位置 | undefined &#124; "top" &#124; "bottom" &#124; "right" &#124; "left" | 否 | 未声明 |
73
+
74
+ ### Events
75
+
76
+ 未声明组件 emits;原生事件与包装透传按本页用法核实。
77
+
78
+ ### Slots
79
+
80
+ | 名称 | 用途 | 公开类型 |
81
+ | --- | --- | --- |
82
+ | default | 时间线内容 | any |
83
+ | dot | 自定义时间点节点,优先级高于 icon | any |
84
+ | icon | 自定义时间点图标,兼容旧用法 | any |
85
+ | label | 自定义标签 | any |
86
+ | description | 自定义描述,未传入默认插槽时展示 | any |
87
+
88
+ ### 实例方法
89
+
90
+ 没有检索到显式 expose 或 Options API methods 的公开方法;不把 setup 内部函数当成稳定实例 API。
91
+
92
+
93
+ 返回 [Timeline 用法](./timeline.md)。