@xihan-ui/vue 2.0.0 → 2.1.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 (91) hide show
  1. package/CHANGELOG.md +258 -0
  2. package/dist/components/avatar-group/avatar-group.d.ts.map +1 -1
  3. package/dist/components/avatar-group/avatar-group.js +2 -1
  4. package/dist/components/avatar-group/avatar-group.js.map +1 -1
  5. package/dist/components/card/card.d.ts.map +1 -1
  6. package/dist/components/card/card.js +2 -1
  7. package/dist/components/card/card.js.map +1 -1
  8. package/dist/components/cascader/cascader.d.ts +9 -1
  9. package/dist/components/cascader/cascader.d.ts.map +1 -1
  10. package/dist/components/cascader/cascader.js +19 -1
  11. package/dist/components/cascader/cascader.js.map +1 -1
  12. package/dist/components/combobox/combobox.d.ts +18 -1
  13. package/dist/components/combobox/combobox.d.ts.map +1 -1
  14. package/dist/components/combobox/combobox.js +37 -4
  15. package/dist/components/combobox/combobox.js.map +1 -1
  16. package/dist/components/command/command.d.ts +23 -2
  17. package/dist/components/command/command.d.ts.map +1 -1
  18. package/dist/components/command/command.js +46 -4
  19. package/dist/components/command/command.js.map +1 -1
  20. package/dist/components/context-menu/context-menu.d.ts +14 -1
  21. package/dist/components/context-menu/context-menu.d.ts.map +1 -1
  22. package/dist/components/context-menu/context-menu.js +42 -12
  23. package/dist/components/context-menu/context-menu.js.map +1 -1
  24. package/dist/components/input-group/input-group.d.ts.map +1 -1
  25. package/dist/components/input-group/input-group.js +2 -1
  26. package/dist/components/input-group/input-group.js.map +1 -1
  27. package/dist/components/json-viewer/json-viewer.js.map +1 -1
  28. package/dist/components/kbd/kbd.d.ts.map +1 -1
  29. package/dist/components/kbd/kbd.js +27 -10
  30. package/dist/components/kbd/kbd.js.map +1 -1
  31. package/dist/components/listbox/listbox.d.ts +18 -1
  32. package/dist/components/listbox/listbox.d.ts.map +1 -1
  33. package/dist/components/listbox/listbox.js +37 -4
  34. package/dist/components/listbox/listbox.js.map +1 -1
  35. package/dist/components/mention/mention.d.ts +17 -1
  36. package/dist/components/mention/mention.d.ts.map +1 -1
  37. package/dist/components/mention/mention.js +36 -4
  38. package/dist/components/mention/mention.js.map +1 -1
  39. package/dist/components/menu/menu.d.ts +14 -1
  40. package/dist/components/menu/menu.d.ts.map +1 -1
  41. package/dist/components/menu/menu.js +63 -8
  42. package/dist/components/menu/menu.js.map +1 -1
  43. package/dist/components/menubar/menubar.d.ts +14 -2
  44. package/dist/components/menubar/menubar.d.ts.map +1 -1
  45. package/dist/components/menubar/menubar.js +43 -11
  46. package/dist/components/menubar/menubar.js.map +1 -1
  47. package/dist/components/page-header/page-header.d.ts.map +1 -1
  48. package/dist/components/page-header/page-header.js +2 -1
  49. package/dist/components/page-header/page-header.js.map +1 -1
  50. package/dist/components/pagination/pagination.js.map +1 -1
  51. package/dist/components/reasoning/reasoning.d.ts +1 -1
  52. package/dist/components/select/select.d.ts +18 -1
  53. package/dist/components/select/select.d.ts.map +1 -1
  54. package/dist/components/select/select.js +37 -4
  55. package/dist/components/select/select.js.map +1 -1
  56. package/dist/components/sortable/sortable.d.ts +1 -1
  57. package/dist/components/statistic/statistic.d.ts.map +1 -1
  58. package/dist/components/statistic/statistic.js +2 -1
  59. package/dist/components/statistic/statistic.js.map +1 -1
  60. package/dist/components/table/table.d.ts +2 -2
  61. package/dist/components/table/table.d.ts.map +1 -1
  62. package/dist/components/tag-group/tag-group.js +1 -1
  63. package/dist/components/tag-group/tag-group.js.map +1 -1
  64. package/dist/components/timeline/timeline.d.ts.map +1 -1
  65. package/dist/components/timeline/timeline.js +2 -1
  66. package/dist/components/timeline/timeline.js.map +1 -1
  67. package/dist/components/timer/timer.d.ts +1 -1
  68. package/dist/components/tour/tour.d.ts +1 -1
  69. package/dist/components/transfer/transfer.d.ts +9 -1
  70. package/dist/components/transfer/transfer.d.ts.map +1 -1
  71. package/dist/components/transfer/transfer.js +19 -1
  72. package/dist/components/transfer/transfer.js.map +1 -1
  73. package/dist/components/tree/tree.d.ts +9 -7
  74. package/dist/components/tree/tree.d.ts.map +1 -1
  75. package/dist/components/tree/tree.js +17 -15
  76. package/dist/components/tree/tree.js.map +1 -1
  77. package/dist/components/tree-select/tree-select.d.ts +9 -1
  78. package/dist/components/tree-select/tree-select.d.ts.map +1 -1
  79. package/dist/components/tree-select/tree-select.js +19 -1
  80. package/dist/components/tree-select/tree-select.js.map +1 -1
  81. package/dist/components/typography/typography.d.ts.map +1 -1
  82. package/dist/components/typography/typography.js +2 -1
  83. package/dist/components/typography/typography.js.map +1 -1
  84. package/dist/index.d.ts +13 -13
  85. package/dist/index.js +13 -13
  86. package/dist/package.js +1 -1
  87. package/dist/runtime/use-machine.js +3 -2
  88. package/dist/runtime/use-machine.js.map +1 -1
  89. package/dist/runtime/use-scrollbars.js +3 -1
  90. package/dist/runtime/use-scrollbars.js.map +1 -1
  91. package/package.json +14 -14
@@ -1 +1 @@
1
- {"version":3,"file":"statistic.d.ts","names":[],"sources":["../../../src/components/statistic/statistic.ts"],"mappings":";;;;cAgBa,+BAAe,8BAAA;;IAIA,MAAA,SAAS;;;IACT,MAAA,SAAS;;;IACR,MAAA,SAAS;;;;;;IAFV,MAAA,SAAS;;;IACT,MAAA,SAAS;;;IACR,MAAA,SAAS;;MAOpC,oDAAA;cAGW,gCAAgB,wCAAA,oBAAA,4BAAA;;8BAM3B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAGW,gCAAgB,wCAAA,oBAAA,4BAAA;;8BAM3B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,iCAAiB,wCAAA,oBAAA,4BAAA;;8BAM5B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,iCAAiB,wCAAA,oBAAA,4BAAA;;8BAM5B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAGW,gCAAgB,wCAAA,oBAAA,4BAAA;;8BAM3B,qCAAA,iDAAA,aAAA,eAAA,oDAAA"}
1
+ {"version":3,"file":"statistic.d.ts","names":[],"sources":["../../../src/components/statistic/statistic.ts"],"mappings":";;;;cAgBa,+BAAe,8BAAA;;IAIA,MAAA,SAAS;;;IACT,MAAA,SAAS;;;IACR,MAAA,SAAS;;;;;;IAFV,MAAA,SAAS;;;IACT,MAAA,SAAS;;;IACR,MAAA,SAAS;;MASpC,oDAAA;cAGW,gCAAgB,wCAAA,oBAAA,4BAAA;;8BAM3B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAGW,gCAAgB,wCAAA,oBAAA,4BAAA;;8BAM3B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,iCAAiB,wCAAA,oBAAA,4BAAA;;8BAM5B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,iCAAiB,wCAAA,oBAAA,4BAAA;;8BAM5B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAGW,gCAAgB,wCAAA,oBAAA,4BAAA;;8BAM3B,qCAAA,iDAAA,aAAA,eAAA,oDAAA"}
@@ -12,7 +12,8 @@ const XhStatisticRoot = defineComponent({
12
12
  trend: { type: String }
13
13
  },
14
14
  setup(props, { slots }) {
15
- const api = computed(() => connectStatistic(withXhConfig("statistic", props), vueNormalize));
15
+ const configured = withXhConfig("statistic", props);
16
+ const api = computed(() => connectStatistic(configured, vueNormalize));
16
17
  provideStatistic({ api });
17
18
  return () => h("div", api.value.getRootProps(), slots.default?.());
18
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"statistic.js","names":[],"sources":["../../../src/components/statistic/statistic.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-Present XiHanFun and contributors.\n * Licensed under the MIT License. See LICENSE in the project root for license information.\n */\n\n// 提供 statistic 相关实现。\n\nimport type { Size, Tone } from '@xihan-ui/core'\nimport type { StatisticProps, StatisticTrend } from '@xihan-ui/headless'\nimport type { PropType } from 'vue'\nimport { connectStatistic } from '@xihan-ui/headless'\nimport { computed, defineComponent, h } from 'vue'\nimport { withXhConfig } from '../../config/config'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { provideStatistic, useStatisticContext } from './context'\n\nexport const XhStatisticRoot = defineComponent({\n name: 'XhStatisticRoot',\n // 有 connect 兜底的 prop:普通类型省略 default,Boolean 显式保留 undefined\n props: {\n size: { type: String as PropType<Size> },\n tone: { type: String as PropType<Tone> },\n trend: { type: String as PropType<StatisticTrend> },\n },\n setup(props, { slots }) {\n const api = computed(() => connectStatistic(withXhConfig('statistic', props) as StatisticProps, vueNormalize))\n provideStatistic({ api })\n return () => h('div', api.value.getRootProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n// 标签渲染为 span 而不是 label:它不关联任何表单控件\nexport const XhStatisticLabel = defineComponent({\n name: 'XhStatisticLabel',\n setup(_, { slots }) {\n const ctx = useStatisticContext()\n return () => h('span', ctx.api.value.getLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n// 数值由作者格式化好再塞进来,组件只负责排版\nexport const XhStatisticValue = defineComponent({\n name: 'XhStatisticValue',\n setup(_, { slots }) {\n const ctx = useStatisticContext()\n return () => h('span', ctx.api.value.getValueProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhStatisticPrefix = defineComponent({\n name: 'XhStatisticPrefix',\n setup(_, { slots }) {\n const ctx = useStatisticContext()\n return () => h('span', ctx.api.value.getPrefixProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhStatisticSuffix = defineComponent({\n name: 'XhStatisticSuffix',\n setup(_, { slots }) {\n const ctx = useStatisticContext()\n return () => h('span', ctx.api.value.getSuffixProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n// 涨跌那一段:方向由 root 的 trend 给,箭头由皮肤画,比数(同比、环比)由作者写进来\nexport const XhStatisticTrend = defineComponent({\n name: 'XhStatisticTrend',\n setup(_, { slots }) {\n const ctx = useStatisticContext()\n return () => h('span', ctx.api.value.getTrendProps() as Record<string, unknown>, slots.default?.())\n },\n})\n"],"mappings":";;;;;;AAgBA,MAAa,kBAAkB,gBAAgB;CAC7C,MAAM;CAEN,OAAO;EACL,MAAM,EAAE,MAAM,OAAyB;EACvC,MAAM,EAAE,MAAM,OAAyB;EACvC,OAAO,EAAE,MAAM,OAAmC;CACpD;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,eAAe,iBAAiB,aAAa,aAAa,KAAK,GAAqB,YAAY,CAAC;EAC7G,iBAAiB,EAAE,IAAI,CAAC;EACxB,aAAa,EAAE,OAAO,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CAC9F;AACF,CAAC;AAGD,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,oBAAoB;EAChC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACpG;AACF,CAAC;AAGD,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,oBAAoB;EAChC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACpG;AACF,CAAC;AAED,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,oBAAoB;EAChC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,eAAe,GAA8B,MAAM,UAAU,CAAC;CACrG;AACF,CAAC;AAED,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,oBAAoB;EAChC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,eAAe,GAA8B,MAAM,UAAU,CAAC;CACrG;AACF,CAAC;AAGD,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,oBAAoB;EAChC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACpG;AACF,CAAC"}
1
+ {"version":3,"file":"statistic.js","names":[],"sources":["../../../src/components/statistic/statistic.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-Present XiHanFun and contributors.\n * Licensed under the MIT License. See LICENSE in the project root for license information.\n */\n\n// 提供 statistic 相关实现。\n\nimport type { Size, Tone } from '@xihan-ui/core'\nimport type { StatisticProps, StatisticTrend } from '@xihan-ui/headless'\nimport type { PropType } from 'vue'\nimport { connectStatistic } from '@xihan-ui/headless'\nimport { computed, defineComponent, h } from 'vue'\nimport { withXhConfig } from '../../config/config'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { provideStatistic, useStatisticContext } from './context'\n\nexport const XhStatisticRoot = defineComponent({\n name: 'XhStatisticRoot',\n // 有 connect 兜底的 prop:普通类型省略 default,Boolean 显式保留 undefined\n props: {\n size: { type: String as PropType<Size> },\n tone: { type: String as PropType<Tone> },\n trend: { type: String as PropType<StatisticTrend> },\n },\n setup(props, { slots }) {\n // withXhConfig 只能在 setup 期调,连接层在渲染期读这份代理\n const configured = withXhConfig('statistic', props)\n const api = computed(() => connectStatistic(configured as StatisticProps, vueNormalize))\n provideStatistic({ api })\n return () => h('div', api.value.getRootProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n// 标签渲染为 span 而不是 label:它不关联任何表单控件\nexport const XhStatisticLabel = defineComponent({\n name: 'XhStatisticLabel',\n setup(_, { slots }) {\n const ctx = useStatisticContext()\n return () => h('span', ctx.api.value.getLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n// 数值由作者格式化好再塞进来,组件只负责排版\nexport const XhStatisticValue = defineComponent({\n name: 'XhStatisticValue',\n setup(_, { slots }) {\n const ctx = useStatisticContext()\n return () => h('span', ctx.api.value.getValueProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhStatisticPrefix = defineComponent({\n name: 'XhStatisticPrefix',\n setup(_, { slots }) {\n const ctx = useStatisticContext()\n return () => h('span', ctx.api.value.getPrefixProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhStatisticSuffix = defineComponent({\n name: 'XhStatisticSuffix',\n setup(_, { slots }) {\n const ctx = useStatisticContext()\n return () => h('span', ctx.api.value.getSuffixProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n// 涨跌那一段:方向由 root 的 trend 给,箭头由皮肤画,比数(同比、环比)由作者写进来\nexport const XhStatisticTrend = defineComponent({\n name: 'XhStatisticTrend',\n setup(_, { slots }) {\n const ctx = useStatisticContext()\n return () => h('span', ctx.api.value.getTrendProps() as Record<string, unknown>, slots.default?.())\n },\n})\n"],"mappings":";;;;;;AAgBA,MAAa,kBAAkB,gBAAgB;CAC7C,MAAM;CAEN,OAAO;EACL,MAAM,EAAE,MAAM,OAAyB;EACvC,MAAM,EAAE,MAAM,OAAyB;EACvC,OAAO,EAAE,MAAM,OAAmC;CACpD;CACA,MAAM,OAAO,EAAE,SAAS;EAEtB,MAAM,aAAa,aAAa,aAAa,KAAK;EAClD,MAAM,MAAM,eAAe,iBAAiB,YAA8B,YAAY,CAAC;EACvF,iBAAiB,EAAE,IAAI,CAAC;EACxB,aAAa,EAAE,OAAO,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CAC9F;AACF,CAAC;AAGD,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,oBAAoB;EAChC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACpG;AACF,CAAC;AAGD,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,oBAAoB;EAChC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACpG;AACF,CAAC;AAED,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,oBAAoB;EAChC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,eAAe,GAA8B,MAAM,UAAU,CAAC;CACrG;AACF,CAAC;AAED,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,oBAAoB;EAChC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,eAAe,GAA8B,MAAM,UAAU,CAAC;CACrG;AACF,CAAC;AAGD,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,oBAAoB;EAChC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACpG;AACF,CAAC"}
@@ -182,14 +182,14 @@ declare const XhTableRoot: import("vue").DefineComponent<import("vue").ExtractPr
182
182
  }>> & Readonly<{
183
183
  "onExpanded-value-change"?: ((_details: import("@xihan-ui/headless").TableExpandedValueChangeDetails) => any) | undefined;
184
184
  "onUpdate:expandedValue"?: ((_value: string[]) => any) | undefined;
185
+ "onSelection-change"?: ((_details: import("@xihan-ui/headless").TableSelectionChangeDetails) => any) | undefined;
186
+ "onUpdate:selection"?: ((_selection: TableSelection) => any) | undefined;
185
187
  "onColumn-preference-change"?: ((_details: {
186
188
  value: TableColumnPreference;
187
189
  }) => any) | undefined;
188
190
  "onUpdate:columnPreference"?: ((_value: TableColumnPreference) => any) | undefined;
189
191
  "onSort-change"?: ((_details: import("@xihan-ui/headless").TableSortChangeDetails) => any) | undefined;
190
192
  "onUpdate:sort"?: ((_sort: TableSortDescriptor[]) => any) | undefined;
191
- "onSelection-change"?: ((_details: import("@xihan-ui/headless").TableSelectionChangeDetails) => any) | undefined;
192
- "onUpdate:selection"?: ((_selection: TableSelection) => any) | undefined;
193
193
  "onRow-move"?: ((_details: import("@xihan-ui/headless").TableRowMoveDetails) => any) | undefined;
194
194
  }>, {
195
195
  footer: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"table.d.ts","names":[],"sources":["../../../src/components/table/table.ts"],"mappings":"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"}
1
+ {"version":3,"file":"table.d.ts","names":[],"sources":["../../../src/components/table/table.ts"],"mappings":"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"}
@@ -169,8 +169,8 @@ function renderDefaultTree(collection, label, itemSlot) {
169
169
  key: node.value,
170
170
  value: node.value
171
171
  }, () => [h(XhTagGroupCell, null, () => [
172
- h(XhTagGroupItemIndicator),
173
172
  h(XhTagGroupItemText, null, () => itemSlot?.(node) ?? node.label),
173
+ h(XhTagGroupItemIndicator),
174
174
  h(XhTagGroupItemDeleteTrigger)
175
175
  ])])))];
176
176
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tag-group.js","names":[],"sources":["../../../src/components/tag-group/tag-group.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-Present XiHanFun and contributors.\n * Licensed under the MIT License. See LICENSE in the project root for license information.\n */\n\n// 提供 tag group 相关实现。\n\nimport type { Direction, Orientation, Size, Tone } from '@xihan-ui/core'\nimport type { TagGroupApi, TagGroupItemProps, TagGroupNode, TagGroupNodeMeta, TagGroupSchema, TagGroupSelectionMode, TagGroupTranslations, TagVariant } from '@xihan-ui/headless'\nimport type { PropType, SlotsType, VNode } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { computed, defineComponent, h, onBeforeUnmount, ref, watch } from 'vue'\nimport { withXhConfig } from '../../config/config'\nimport { useFormControlProps } from '../form/use-form-control'\nimport { provideTagGroup, provideTagGroupItem, useTagGroupContext, useTagGroupItemContext } from './context'\nimport { useTagGroup } from './use-tag-group'\n\ntype TagGroupProps = TagGroupSchema['props']\n\n/** 默认插槽的载荷:选中集合、选择模式与焦点锚点,以及判定选中与整份赋值、单选、切换、移除的命令。 */\nexport type TagGroupRootSlotProps = Pick<\n TagGroupApi,\n 'value' | 'selectionMode' | 'focusedValue' | 'isSelected' | 'setValue' | 'select' | 'toggle' | 'deleteItem'\n>\n\nexport const XhTagGroupRoot = defineComponent({\n name: 'XhTagGroupRoot',\n // 有 connect 兜底的 prop:普通类型省略 default,Boolean 显式保留 undefined\n props: {\n collection: { type: Array as PropType<TagGroupNode[]> },\n /** 标题文字。提供后不必再写 label 部件;需要放置其他内容时改用 label 插槽。 */\n label: { type: String },\n value: { type: [String, Array] as PropType<string | string[]> },\n defaultValue: { type: [String, Array] as PropType<string | string[]> },\n selectionMode: { type: String as PropType<TagGroupSelectionMode> },\n deletable: Boolean,\n disabled: { type: Boolean, default: undefined },\n readOnly: { type: Boolean, default: undefined },\n loop: { type: Boolean, default: undefined },\n dir: { type: String as PropType<Direction> },\n orientation: { type: String as PropType<Orientation> },\n typeahead: { type: Boolean, default: undefined },\n variant: { type: String as PropType<TagVariant> },\n tone: { type: String as PropType<Tone> },\n size: { type: String as PropType<Size> },\n translations: { type: Object as PropType<Partial<TagGroupTranslations>> },\n },\n // value-change 携带 { value },update:value 携带裸集合;回传值恒为数组,单选时长度 ≤ 1。\n // item-delete 只报「用户要摘这一枚」,条目的去留由宿主改自己的数据\n emits: {\n 'value-change': (_details: PayloadOf<TagGroupProps, 'onValueChange'>) => true,\n 'update:value': (_value: PayloadOf<TagGroupProps, 'onValueChange'>['value']) => true,\n 'item-delete': (_details: PayloadOf<TagGroupProps, 'onItemDelete'>) => true,\n },\n slots: Object as SlotsType<{\n default?: (props: TagGroupRootSlotProps) => VNode[]\n label?: () => VNode[]\n item?: (node: TagGroupNodeMeta) => VNode[]\n }>,\n setup(props, { slots, emit }) {\n const notify: TagGroupProps['onValueChange'] = (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n }\n const notifyDelete: TagGroupProps['onItemDelete'] = (details) => {\n emit('item-delete', details)\n }\n const ctx = useTagGroup(withXhConfig('tag-group', useFormControlProps(props)) as TagGroupProps, notify, notifyDelete)\n provideTagGroup(ctx)\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, [\n ...(slots.default\n ? slots.default({\n value: ctx.api.value.value,\n selectionMode: ctx.api.value.selectionMode,\n focusedValue: ctx.api.value.focusedValue,\n isSelected: ctx.api.value.isSelected,\n setValue: ctx.api.value.setValue,\n select: ctx.api.value.select,\n toggle: ctx.api.value.toggle,\n deleteItem: ctx.api.value.deleteItem,\n }) ?? []\n : props.collection\n ? renderDefaultTree(\n ctx.api.value.collection,\n slots.label?.() ?? (props.label != null ? [props.label] : null),\n slots.item,\n )\n : []),\n ])\n },\n})\n\nexport const XhTagGroupLabel = defineComponent({\n name: 'XhTagGroupLabel',\n setup(_, { slots }) {\n const ctx = useTagGroupContext()\n return () => h('span', ctx.api.value.getLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTagGroupList = defineComponent({\n name: 'XhTagGroupList',\n setup(_, { slots }) {\n const ctx = useTagGroupContext()\n return () => h('div', ctx.api.value.getListProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n/** 一个标签:渲染为 tag 的 root(data-scope=\"tag\"),组把行角色、Tab 停靠点、选中与锚点叠加在它上面。 */\nexport const XhTagGroupItem = defineComponent({\n name: 'XhTagGroupItem',\n props: {\n value: { type: String, required: true },\n // 缺省交给 connect 回 collection 里查,写死 false 会盖掉数据里的声明\n disabled: { type: Boolean, default: undefined },\n deletable: { type: Boolean, default: undefined },\n },\n setup(props, { slots }) {\n const ctx = useTagGroupContext()\n const item = computed<TagGroupItemProps>(() => ({\n value: props.value,\n disabled: props.disabled,\n deletable: props.deletable,\n }))\n provideTagGroupItem({ item })\n // 本条目持有焦点时,value 变更重报焦点条目,卸载时上报整组失焦\n const itemEl = ref<HTMLElement | null>(null)\n watch(() => props.value, (next, prev) => {\n if (next === prev)\n return\n const { service } = ctx\n if (service.getStatus() !== 'Started')\n return\n if (itemEl.value && service.scope.getActiveElement() === itemEl.value)\n service.send({ type: 'ITEM.FOCUS', value: next })\n })\n onBeforeUnmount(() => {\n const { service } = ctx\n if (service.getStatus() !== 'Started')\n return\n // 按「本节点当下正持有焦点」判定,不按 value 比对\n if (itemEl.value && service.scope.getActiveElement() === itemEl.value)\n service.send({ type: 'LIST.BLUR' })\n })\n return () => h(\n 'span',\n { ...ctx.api.value.getItemProps(item.value) as Record<string, unknown>, ref: itemEl },\n slots.default?.(),\n )\n },\n})\n\nexport const XhTagGroupCell = defineComponent({\n name: 'XhTagGroupCell',\n setup(_, { slots }) {\n const ctx = useTagGroupContext()\n const { item } = useTagGroupItemContext()\n return () => h('span', ctx.api.value.getCellProps(item.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\n/** 选中标记:落在格子内、文字之前,选中时展示、未选中时收起;内容留空时由皮肤绘制对号。 */\nexport const XhTagGroupItemIndicator = defineComponent({\n name: 'XhTagGroupItemIndicator',\n setup(_, { slots }) {\n const ctx = useTagGroupContext()\n const { item } = useTagGroupItemContext()\n return () => h('span', ctx.api.value.getItemIndicatorProps(item.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\n/** 标签文字:渲染为 tag 的 label。 */\nexport const XhTagGroupItemText = defineComponent({\n name: 'XhTagGroupItemText',\n setup(_, { slots }) {\n const ctx = useTagGroupContext()\n const { item } = useTagGroupItemContext()\n return () => h('span', ctx.api.value.getItemTextProps(item.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\n/** 移除按钮:渲染为所在标签那份 tag 的 close-trigger,不占 Tab 位;整组未开放移除时收起。 */\nexport const XhTagGroupItemDeleteTrigger = defineComponent({\n name: 'XhTagGroupItemDeleteTrigger',\n setup(_, { slots }) {\n const ctx = useTagGroupContext()\n const { item } = useTagGroupItemContext()\n return () => h('button', ctx.api.value.getItemDeleteTriggerProps(item.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\n/**\n * 未写默认插槽时按 collection 铺开的整套结构,作者只提供数据。\n * 与手写部件产出的 DOM 完全一致,需要修改结构时写默认插槽。\n */\nfunction renderDefaultTree(\n collection: readonly TagGroupNodeMeta[],\n label: (VNode | string)[] | null,\n itemSlot?: (node: TagGroupNodeMeta) => VNode[],\n): VNode[] {\n return [\n ...(label ? [h(XhTagGroupLabel, null, () => label)] : []),\n h(XhTagGroupList, null, () => collection.map(node =>\n h(XhTagGroupItem, { key: node.value, value: node.value }, () => [\n h(XhTagGroupCell, null, () => [\n h(XhTagGroupItemIndicator),\n h(XhTagGroupItemText, null, () => itemSlot?.(node) ?? node.label),\n h(XhTagGroupItemDeleteTrigger),\n ]),\n ]),\n )),\n ]\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"tag-group.js","names":[],"sources":["../../../src/components/tag-group/tag-group.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-Present XiHanFun and contributors.\n * Licensed under the MIT License. See LICENSE in the project root for license information.\n */\n\n// 提供 tag group 相关实现。\n\nimport type { Direction, Orientation, Size, Tone } from '@xihan-ui/core'\nimport type { TagGroupApi, TagGroupItemProps, TagGroupNode, TagGroupNodeMeta, TagGroupSchema, TagGroupSelectionMode, TagGroupTranslations, TagVariant } from '@xihan-ui/headless'\nimport type { PropType, SlotsType, VNode } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { computed, defineComponent, h, onBeforeUnmount, ref, watch } from 'vue'\nimport { withXhConfig } from '../../config/config'\nimport { useFormControlProps } from '../form/use-form-control'\nimport { provideTagGroup, provideTagGroupItem, useTagGroupContext, useTagGroupItemContext } from './context'\nimport { useTagGroup } from './use-tag-group'\n\ntype TagGroupProps = TagGroupSchema['props']\n\n/** 默认插槽的载荷:选中集合、选择模式与焦点锚点,以及判定选中与整份赋值、单选、切换、移除的命令。 */\nexport type TagGroupRootSlotProps = Pick<\n TagGroupApi,\n 'value' | 'selectionMode' | 'focusedValue' | 'isSelected' | 'setValue' | 'select' | 'toggle' | 'deleteItem'\n>\n\nexport const XhTagGroupRoot = defineComponent({\n name: 'XhTagGroupRoot',\n // 有 connect 兜底的 prop:普通类型省略 default,Boolean 显式保留 undefined\n props: {\n collection: { type: Array as PropType<TagGroupNode[]> },\n /** 标题文字。提供后不必再写 label 部件;需要放置其他内容时改用 label 插槽。 */\n label: { type: String },\n value: { type: [String, Array] as PropType<string | string[]> },\n defaultValue: { type: [String, Array] as PropType<string | string[]> },\n selectionMode: { type: String as PropType<TagGroupSelectionMode> },\n deletable: Boolean,\n disabled: { type: Boolean, default: undefined },\n readOnly: { type: Boolean, default: undefined },\n loop: { type: Boolean, default: undefined },\n dir: { type: String as PropType<Direction> },\n orientation: { type: String as PropType<Orientation> },\n typeahead: { type: Boolean, default: undefined },\n variant: { type: String as PropType<TagVariant> },\n tone: { type: String as PropType<Tone> },\n size: { type: String as PropType<Size> },\n translations: { type: Object as PropType<Partial<TagGroupTranslations>> },\n },\n // value-change 携带 { value },update:value 携带裸集合;回传值恒为数组,单选时长度 ≤ 1。\n // item-delete 只报「用户要摘这一枚」,条目的去留由宿主改自己的数据\n emits: {\n 'value-change': (_details: PayloadOf<TagGroupProps, 'onValueChange'>) => true,\n 'update:value': (_value: PayloadOf<TagGroupProps, 'onValueChange'>['value']) => true,\n 'item-delete': (_details: PayloadOf<TagGroupProps, 'onItemDelete'>) => true,\n },\n slots: Object as SlotsType<{\n default?: (props: TagGroupRootSlotProps) => VNode[]\n label?: () => VNode[]\n item?: (node: TagGroupNodeMeta) => VNode[]\n }>,\n setup(props, { slots, emit }) {\n const notify: TagGroupProps['onValueChange'] = (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n }\n const notifyDelete: TagGroupProps['onItemDelete'] = (details) => {\n emit('item-delete', details)\n }\n const ctx = useTagGroup(withXhConfig('tag-group', useFormControlProps(props)) as TagGroupProps, notify, notifyDelete)\n provideTagGroup(ctx)\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, [\n ...(slots.default\n ? slots.default({\n value: ctx.api.value.value,\n selectionMode: ctx.api.value.selectionMode,\n focusedValue: ctx.api.value.focusedValue,\n isSelected: ctx.api.value.isSelected,\n setValue: ctx.api.value.setValue,\n select: ctx.api.value.select,\n toggle: ctx.api.value.toggle,\n deleteItem: ctx.api.value.deleteItem,\n }) ?? []\n : props.collection\n ? renderDefaultTree(\n ctx.api.value.collection,\n slots.label?.() ?? (props.label != null ? [props.label] : null),\n slots.item,\n )\n : []),\n ])\n },\n})\n\nexport const XhTagGroupLabel = defineComponent({\n name: 'XhTagGroupLabel',\n setup(_, { slots }) {\n const ctx = useTagGroupContext()\n return () => h('span', ctx.api.value.getLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTagGroupList = defineComponent({\n name: 'XhTagGroupList',\n setup(_, { slots }) {\n const ctx = useTagGroupContext()\n return () => h('div', ctx.api.value.getListProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n/** 一个标签:渲染为 tag 的 root(data-scope=\"tag\"),组把行角色、Tab 停靠点、选中与锚点叠加在它上面。 */\nexport const XhTagGroupItem = defineComponent({\n name: 'XhTagGroupItem',\n props: {\n value: { type: String, required: true },\n // 缺省交给 connect 回 collection 里查,写死 false 会盖掉数据里的声明\n disabled: { type: Boolean, default: undefined },\n deletable: { type: Boolean, default: undefined },\n },\n setup(props, { slots }) {\n const ctx = useTagGroupContext()\n const item = computed<TagGroupItemProps>(() => ({\n value: props.value,\n disabled: props.disabled,\n deletable: props.deletable,\n }))\n provideTagGroupItem({ item })\n // 本条目持有焦点时,value 变更重报焦点条目,卸载时上报整组失焦\n const itemEl = ref<HTMLElement | null>(null)\n watch(() => props.value, (next, prev) => {\n if (next === prev)\n return\n const { service } = ctx\n if (service.getStatus() !== 'Started')\n return\n if (itemEl.value && service.scope.getActiveElement() === itemEl.value)\n service.send({ type: 'ITEM.FOCUS', value: next })\n })\n onBeforeUnmount(() => {\n const { service } = ctx\n if (service.getStatus() !== 'Started')\n return\n // 按「本节点当下正持有焦点」判定,不按 value 比对\n if (itemEl.value && service.scope.getActiveElement() === itemEl.value)\n service.send({ type: 'LIST.BLUR' })\n })\n return () => h(\n 'span',\n { ...ctx.api.value.getItemProps(item.value) as Record<string, unknown>, ref: itemEl },\n slots.default?.(),\n )\n },\n})\n\nexport const XhTagGroupCell = defineComponent({\n name: 'XhTagGroupCell',\n setup(_, { slots }) {\n const ctx = useTagGroupContext()\n const { item } = useTagGroupItemContext()\n return () => h('span', ctx.api.value.getCellProps(item.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\n/** 选中标记:落在格子内、文字之前,选中时展示、未选中时收起;内容留空时由皮肤绘制对号。 */\nexport const XhTagGroupItemIndicator = defineComponent({\n name: 'XhTagGroupItemIndicator',\n setup(_, { slots }) {\n const ctx = useTagGroupContext()\n const { item } = useTagGroupItemContext()\n return () => h('span', ctx.api.value.getItemIndicatorProps(item.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\n/** 标签文字:渲染为 tag 的 label。 */\nexport const XhTagGroupItemText = defineComponent({\n name: 'XhTagGroupItemText',\n setup(_, { slots }) {\n const ctx = useTagGroupContext()\n const { item } = useTagGroupItemContext()\n return () => h('span', ctx.api.value.getItemTextProps(item.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\n/** 移除按钮:渲染为所在标签那份 tag 的 close-trigger,不占 Tab 位;整组未开放移除时收起。 */\nexport const XhTagGroupItemDeleteTrigger = defineComponent({\n name: 'XhTagGroupItemDeleteTrigger',\n setup(_, { slots }) {\n const ctx = useTagGroupContext()\n const { item } = useTagGroupItemContext()\n return () => h('button', ctx.api.value.getItemDeleteTriggerProps(item.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\n/**\n * 未写默认插槽时按 collection 铺开的整套结构,作者只提供数据。\n * 与手写部件产出的 DOM 完全一致,需要修改结构时写默认插槽。\n */\nfunction renderDefaultTree(\n collection: readonly TagGroupNodeMeta[],\n label: (VNode | string)[] | null,\n itemSlot?: (node: TagGroupNodeMeta) => VNode[],\n): VNode[] {\n return [\n ...(label ? [h(XhTagGroupLabel, null, () => label)] : []),\n h(XhTagGroupList, null, () => collection.map(node =>\n h(XhTagGroupItem, { key: node.value, value: node.value }, () => [\n h(XhTagGroupCell, null, () => [\n h(XhTagGroupItemText, null, () => itemSlot?.(node) ?? node.label),\n h(XhTagGroupItemIndicator),\n h(XhTagGroupItemDeleteTrigger),\n ]),\n ]),\n )),\n ]\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"timeline.d.ts","names":[],"sources":["../../../src/components/timeline/timeline.ts"],"mappings":";;;;;cAiBa,8BAAc,8BAAA;;IAIQ,MAAA,SAAS;;;IACX,MAAA,SAAS;;;IACd,MAAA,SAAS;;;;;;IAFF,MAAA,SAAS;;;IACX,MAAA,SAAS;;;IACd,MAAA,SAAS;;MAOnC,oDAAA;;cAGW,8BAAc,8BAAA;;IAGC,MAAA,SAAS;;;;;;IAAT,MAAA,SAAS;;MAOnC,oDAAA;cAGW,+BAAe,wCAAA,oBAAA,4BAAA;;8BAM1B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,mCAAmB,wCAAA,oBAAA,4BAAA;;8BAO9B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,mCAAmB,wCAAA,oBAAA,4BAAA;;8BAM9B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,iCAAiB,wCAAA,oBAAA,4BAAA;;8BAM5B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,+BAAe,wCAAA,oBAAA,4BAAA;;8BAM1B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,qCAAqB,wCAAA,oBAAA,4BAAA;;8BAMhC,qCAAA,iDAAA,aAAA,eAAA,oDAAA;;cAGW,8BAAc,wCAAA,oBAAA,4BAAA;;8BAMzB,qCAAA,iDAAA,aAAA,eAAA,oDAAA"}
1
+ {"version":3,"file":"timeline.d.ts","names":[],"sources":["../../../src/components/timeline/timeline.ts"],"mappings":";;;;;cAiBa,8BAAc,8BAAA;;IAIQ,MAAA,SAAS;;;IACX,MAAA,SAAS;;;IACd,MAAA,SAAS;;;;;;IAFF,MAAA,SAAS;;;IACX,MAAA,SAAS;;;IACd,MAAA,SAAS;;MASnC,oDAAA;;cAGW,8BAAc,8BAAA;;IAGC,MAAA,SAAS;;;;;;IAAT,MAAA,SAAS;;MAOnC,oDAAA;cAGW,+BAAe,wCAAA,oBAAA,4BAAA;;8BAM1B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,mCAAmB,wCAAA,oBAAA,4BAAA;;8BAO9B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,mCAAmB,wCAAA,oBAAA,4BAAA;;8BAM9B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,iCAAiB,wCAAA,oBAAA,4BAAA;;8BAM5B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,+BAAe,wCAAA,oBAAA,4BAAA;;8BAM1B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,qCAAqB,wCAAA,oBAAA,4BAAA;;8BAMhC,qCAAA,iDAAA,aAAA,eAAA,oDAAA;;cAGW,8BAAc,wCAAA,oBAAA,4BAAA;;8BAMzB,qCAAA,iDAAA,aAAA,eAAA,oDAAA"}
@@ -13,7 +13,8 @@ const XhTimelineRoot = defineComponent({
13
13
  size: { type: String }
14
14
  },
15
15
  setup(props, { slots }) {
16
- const api = computed(() => connectTimeline(withXhConfig("timeline", props), vueNormalize));
16
+ const configured = withXhConfig("timeline", props);
17
+ const api = computed(() => connectTimeline(configured, vueNormalize));
17
18
  provideTimeline({ api });
18
19
  return () => h("ol", api.value.getRootProps(), slots.default?.());
19
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"timeline.js","names":[],"sources":["../../../src/components/timeline/timeline.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-Present XiHanFun and contributors.\n * Licensed under the MIT License. See LICENSE in the project root for license information.\n */\n\n// 提供 timeline 相关实现。\n\nimport type { Orientation, Size, Tone } from '@xihan-ui/core'\nimport type { TimelinePlacement, TimelineProps } from '@xihan-ui/headless'\nimport type { PropType } from 'vue'\nimport { connectTimeline } from '@xihan-ui/headless'\nimport { computed, defineComponent, h } from 'vue'\nimport { withXhConfig } from '../../config/config'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { provideTimeline, provideTimelineItem, useTimelineContext, useTimelineItem } from './context'\n\n/** 根渲染为 ol:事件本身有先后,列表标记由皮肤去除、列表语义由 role 保留。 */\nexport const XhTimelineRoot = defineComponent({\n name: 'XhTimelineRoot',\n // 有 connect 兜底的 prop:普通类型省略 default,Boolean 显式保留 undefined\n props: {\n orientation: { type: String as PropType<Orientation> },\n placement: { type: String as PropType<TimelinePlacement> },\n size: { type: String as PropType<Size> },\n },\n setup(props, { slots }) {\n const api = computed(() => connectTimeline(withXhConfig('timeline', props) as TimelineProps, vueNormalize))\n provideTimeline({ api })\n return () => h('ol', api.value.getRootProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n/** 一条事件。tone 只在该条内生效,下传给它自己的圆点。 */\nexport const XhTimelineItem = defineComponent({\n name: 'XhTimelineItem',\n props: {\n tone: { type: String as PropType<Tone> },\n },\n setup(props, { slots }) {\n const ctx = useTimelineContext()\n provideTimelineItem(() => ({ tone: props.tone }))\n return () => h('li', ctx.api.value.getItemProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n// 这一条的坐标(日期、版本号),与内容对置的那一列\nexport const XhTimelineLabel = defineComponent({\n name: 'XhTimelineLabel',\n setup(_, { slots }) {\n const ctx = useTimelineContext()\n return () => h('div', ctx.api.value.getLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTimelineIndicator = defineComponent({\n name: 'XhTimelineIndicator',\n setup(_, { slots }) {\n const ctx = useTimelineContext()\n const item = useTimelineItem()\n return () => h('span', ctx.api.value.getIndicatorProps(item()) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTimelineConnector = defineComponent({\n name: 'XhTimelineConnector',\n setup(_, { slots }) {\n const ctx = useTimelineContext()\n return () => h('span', ctx.api.value.getConnectorProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTimelineContent = defineComponent({\n name: 'XhTimelineContent',\n setup(_, { slots }) {\n const ctx = useTimelineContext()\n return () => h('div', ctx.api.value.getContentProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTimelineTitle = defineComponent({\n name: 'XhTimelineTitle',\n setup(_, { slots }) {\n const ctx = useTimelineContext()\n return () => h('div', ctx.api.value.getTitleProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTimelineDescription = defineComponent({\n name: 'XhTimelineDescription',\n setup(_, { slots }) {\n const ctx = useTimelineContext()\n return () => h('div', ctx.api.value.getDescriptionProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n/** 渲染为 time:机读时间由作者写 datetime,属性原样透传到该节点上。 */\nexport const XhTimelineTime = defineComponent({\n name: 'XhTimelineTime',\n setup(_, { slots }) {\n const ctx = useTimelineContext()\n return () => h('time', ctx.api.value.getTimeProps() as Record<string, unknown>, slots.default?.())\n },\n})\n"],"mappings":";;;;;;;AAiBA,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CAEN,OAAO;EACL,aAAa,EAAE,MAAM,OAAgC;EACrD,WAAW,EAAE,MAAM,OAAsC;EACzD,MAAM,EAAE,MAAM,OAAyB;CACzC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,eAAe,gBAAgB,aAAa,YAAY,KAAK,GAAoB,YAAY,CAAC;EAC1G,gBAAgB,EAAE,IAAI,CAAC;EACvB,aAAa,EAAE,MAAM,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CAC7F;AACF,CAAC;;AAGD,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,OAAO,EACL,MAAM,EAAE,MAAM,OAAyB,EACzC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,mBAAmB;EAC/B,2BAA2B,EAAE,MAAM,MAAM,KAAK,EAAE;EAChD,aAAa,EAAE,MAAM,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CACjG;AACF,CAAC;AAGD,MAAa,kBAAkB,gBAAgB;CAC7C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACnG;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,MAAM,OAAO,gBAAgB;EAC7B,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,kBAAkB,KAAK,CAAC,GAA8B,MAAM,UAAU,CAAC;CAC9G;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,kBAAkB,GAA8B,MAAM,UAAU,CAAC;CACxG;AACF,CAAC;AAED,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,gBAAgB,GAA8B,MAAM,UAAU,CAAC;CACrG;AACF,CAAC;AAED,MAAa,kBAAkB,gBAAgB;CAC7C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACnG;AACF,CAAC;AAED,MAAa,wBAAwB,gBAAgB;CACnD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,oBAAoB,GAA8B,MAAM,UAAU,CAAC;CACzG;AACF,CAAC;;AAGD,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CACnG;AACF,CAAC"}
1
+ {"version":3,"file":"timeline.js","names":[],"sources":["../../../src/components/timeline/timeline.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-Present XiHanFun and contributors.\n * Licensed under the MIT License. See LICENSE in the project root for license information.\n */\n\n// 提供 timeline 相关实现。\n\nimport type { Orientation, Size, Tone } from '@xihan-ui/core'\nimport type { TimelinePlacement, TimelineProps } from '@xihan-ui/headless'\nimport type { PropType } from 'vue'\nimport { connectTimeline } from '@xihan-ui/headless'\nimport { computed, defineComponent, h } from 'vue'\nimport { withXhConfig } from '../../config/config'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { provideTimeline, provideTimelineItem, useTimelineContext, useTimelineItem } from './context'\n\n/** 根渲染为 ol:事件本身有先后,列表标记由皮肤去除、列表语义由 role 保留。 */\nexport const XhTimelineRoot = defineComponent({\n name: 'XhTimelineRoot',\n // 有 connect 兜底的 prop:普通类型省略 default,Boolean 显式保留 undefined\n props: {\n orientation: { type: String as PropType<Orientation> },\n placement: { type: String as PropType<TimelinePlacement> },\n size: { type: String as PropType<Size> },\n },\n setup(props, { slots }) {\n // withXhConfig 只能在 setup 期调,连接层在渲染期读这份代理\n const configured = withXhConfig('timeline', props)\n const api = computed(() => connectTimeline(configured as TimelineProps, vueNormalize))\n provideTimeline({ api })\n return () => h('ol', api.value.getRootProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n/** 一条事件。tone 只在该条内生效,下传给它自己的圆点。 */\nexport const XhTimelineItem = defineComponent({\n name: 'XhTimelineItem',\n props: {\n tone: { type: String as PropType<Tone> },\n },\n setup(props, { slots }) {\n const ctx = useTimelineContext()\n provideTimelineItem(() => ({ tone: props.tone }))\n return () => h('li', ctx.api.value.getItemProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n// 这一条的坐标(日期、版本号),与内容对置的那一列\nexport const XhTimelineLabel = defineComponent({\n name: 'XhTimelineLabel',\n setup(_, { slots }) {\n const ctx = useTimelineContext()\n return () => h('div', ctx.api.value.getLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTimelineIndicator = defineComponent({\n name: 'XhTimelineIndicator',\n setup(_, { slots }) {\n const ctx = useTimelineContext()\n const item = useTimelineItem()\n return () => h('span', ctx.api.value.getIndicatorProps(item()) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTimelineConnector = defineComponent({\n name: 'XhTimelineConnector',\n setup(_, { slots }) {\n const ctx = useTimelineContext()\n return () => h('span', ctx.api.value.getConnectorProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTimelineContent = defineComponent({\n name: 'XhTimelineContent',\n setup(_, { slots }) {\n const ctx = useTimelineContext()\n return () => h('div', ctx.api.value.getContentProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTimelineTitle = defineComponent({\n name: 'XhTimelineTitle',\n setup(_, { slots }) {\n const ctx = useTimelineContext()\n return () => h('div', ctx.api.value.getTitleProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTimelineDescription = defineComponent({\n name: 'XhTimelineDescription',\n setup(_, { slots }) {\n const ctx = useTimelineContext()\n return () => h('div', ctx.api.value.getDescriptionProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n/** 渲染为 time:机读时间由作者写 datetime,属性原样透传到该节点上。 */\nexport const XhTimelineTime = defineComponent({\n name: 'XhTimelineTime',\n setup(_, { slots }) {\n const ctx = useTimelineContext()\n return () => h('time', ctx.api.value.getTimeProps() as Record<string, unknown>, slots.default?.())\n },\n})\n"],"mappings":";;;;;;;AAiBA,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CAEN,OAAO;EACL,aAAa,EAAE,MAAM,OAAgC;EACrD,WAAW,EAAE,MAAM,OAAsC;EACzD,MAAM,EAAE,MAAM,OAAyB;CACzC;CACA,MAAM,OAAO,EAAE,SAAS;EAEtB,MAAM,aAAa,aAAa,YAAY,KAAK;EACjD,MAAM,MAAM,eAAe,gBAAgB,YAA6B,YAAY,CAAC;EACrF,gBAAgB,EAAE,IAAI,CAAC;EACvB,aAAa,EAAE,MAAM,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CAC7F;AACF,CAAC;;AAGD,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,OAAO,EACL,MAAM,EAAE,MAAM,OAAyB,EACzC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,mBAAmB;EAC/B,2BAA2B,EAAE,MAAM,MAAM,KAAK,EAAE;EAChD,aAAa,EAAE,MAAM,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CACjG;AACF,CAAC;AAGD,MAAa,kBAAkB,gBAAgB;CAC7C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACnG;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,MAAM,OAAO,gBAAgB;EAC7B,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,kBAAkB,KAAK,CAAC,GAA8B,MAAM,UAAU,CAAC;CAC9G;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,kBAAkB,GAA8B,MAAM,UAAU,CAAC;CACxG;AACF,CAAC;AAED,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,gBAAgB,GAA8B,MAAM,UAAU,CAAC;CACrG;AACF,CAAC;AAED,MAAa,kBAAkB,gBAAgB;CAC7C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACnG;AACF,CAAC;AAED,MAAa,wBAAwB,gBAAgB;CACnD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,oBAAoB,GAA8B,MAAM,UAAU,CAAC;CACzG;AACF,CAAC;;AAGD,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CACnG;AACF,CAAC"}
@@ -95,8 +95,8 @@ declare const XhTimerRoot: import("vue").DefineComponent<import("vue").ExtractPr
95
95
  onComplete?: ((_details: import("@xihan-ui/headless").TimerCompleteDetails) => any) | undefined;
96
96
  onTick?: ((_details: import("@xihan-ui/headless").TimerTickDetails) => any) | undefined;
97
97
  }>, {
98
- active: boolean;
99
98
  countdown: boolean;
99
+ active: boolean;
100
100
  autoStart: boolean;
101
101
  }, SlotsType<{
102
102
  default?: (props: TimerRootSlotProps) => VNode[];
@@ -135,8 +135,8 @@ declare const XhTourRoot: import("vue").DefineComponent<import("vue").ExtractPro
135
135
  defaultOpen: boolean;
136
136
  closeOnEscape: boolean;
137
137
  closeOnInteractOutside: boolean;
138
- autoScroll: boolean;
139
138
  showBackdrop: boolean;
139
+ autoScroll: boolean;
140
140
  }, SlotsType<{
141
141
  default?: (props: TourRootSlotProps) => VNode[];
142
142
  }>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
@@ -223,6 +223,14 @@ declare const XhTransferItem: import("vue").DefineComponent<import("vue").Extrac
223
223
  declare const XhTransferItemText: import("vue").DefineComponent<{}, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
224
224
  [key: string]: any;
225
225
  }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
226
+ /** 条目的第 2 行副文本,跨文字槽、走 muted 档 */
227
+ declare const XhTransferItemDescription: import("vue").DefineComponent<{}, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
228
+ [key: string]: any;
229
+ }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
230
+ /** 条目行尾的作者内容(计数、徽标) */
231
+ declare const XhTransferItemSuffix: import("vue").DefineComponent<{}, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
232
+ [key: string]: any;
233
+ }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
226
234
  declare const XhTransferItemCheckbox: import("vue").DefineComponent<{}, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
227
235
  [key: string]: any;
228
236
  }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
@@ -233,5 +241,5 @@ declare const XhTransferToSourceTrigger: import("vue").DefineComponent<{}, () =>
233
241
  [key: string]: any;
234
242
  }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
235
243
  //#endregion
236
- export { TransferPanelSlotProps, TransferRootSlotProps, XhTransferEmpty, XhTransferGroup, XhTransferGroupLabel, XhTransferItem, XhTransferItemCheckbox, XhTransferItemText, XhTransferList, XhTransferLoading, XhTransferPanelCount, XhTransferPanelHeader, XhTransferPanelTitle, XhTransferRoot, XhTransferSearch, XhTransferSelectAllTrigger, XhTransferSourcePanel, XhTransferTargetPanel, XhTransferToSourceTrigger, XhTransferToTargetTrigger };
244
+ export { TransferPanelSlotProps, TransferRootSlotProps, XhTransferEmpty, XhTransferGroup, XhTransferGroupLabel, XhTransferItem, XhTransferItemCheckbox, XhTransferItemDescription, XhTransferItemSuffix, XhTransferItemText, XhTransferList, XhTransferLoading, XhTransferPanelCount, XhTransferPanelHeader, XhTransferPanelTitle, XhTransferRoot, XhTransferSearch, XhTransferSelectAllTrigger, XhTransferSourcePanel, XhTransferTargetPanel, XhTransferToSourceTrigger, XhTransferToTargetTrigger };
237
245
  //# sourceMappingURL=transfer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transfer.d.ts","names":[],"sources":["../../../src/components/transfer/transfer.ts"],"mappings":";;;;;KAoCK,gBAAgB;;UAGJ;EACf;EACA;EACA,sBAAsB;EACtB,sBAAsB;EACtB,UAAU,IAAI;EACd,aAAa,MAAM,iBAAiB;EACpC,YAAY;EACZ,WAAW;EACX,eAAe;EACf,SAAS;EACT,YAAY,MAAM;EAClB,OAAO,IAAI;;;UAII;EACf,MAAM;EACN,gBAAgB;EAChB,YAAY;EACZ;;;UAIQ;EACR,WAAW,OAAO,2BAA2B;;cAGlC,8BAAc,8BAAA;;IAIM,MAAA,SAAS;;;IACd,MAAA;;;IACO,MAAA;;;;;;;;;IAGH,MAAA;;;IACO,MAAA;;;;IAEP,MAAA,SAAS;;;;;;;;;;;;;;;;IAKb,MAAA,SAAS;;;IACT,MAAA,SAAS;;;;;;;;IAGV,MAAA,SAAS;;;IACA,MAAA,SAAS;;;;;EAId,iBAAA,UAAA,UAAU;EACN,qBAAA,UAAA,UAAU;EAChB,iBAAA,QAAA,UAAU;EACN,qBAAA,QAAA,UAAU;;;IAzBV,MAAA,SAAS;;;IACd,MAAA;;;IACO,MAAA;;;;;;;;;IAGH,MAAA;;;IACO,MAAA;;;;IAEP,MAAA,SAAS;;;;;;;;;;;;;;;;IAKb,MAAA,SAAS;;;IACT,MAAA,SAAS;;;;;;;;IAGV,MAAA,SAAS;;;IACA,MAAA,SAAS;;;;;;;;;;;;;;;;EAU/B,WAAC,OAAO,0BAA0B;kCAkC9C;cAkBW,qCAAqB,0BAfqE,iCAAK,qCAAA,iDAAA,aAAA,eAAA,kBAAA,UAAA,mDAAA;cAqB/F,qCAAqB,0BArBqE,iCAAK,qCAAA,iDAAA,aAAA,eAAA,kBAAA,UAAA,mDAAA;cA2B/F,qCAAqB,0BAAA,oBAAA,4BAAA;;8BAOhC,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,oCAAoB,0BAAA,oBAAA,4BAAA;;8BAO/B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,oCAAoB,0BAAA,oBAAA,4BAAA;;8BAQ/B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,gCAAgB,0BAAA,oBAAA,4BAAA;;8BAO3B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,8BAAc,0BAAA,oBAAA,4BAAA;;gCA2BzB,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,0CAA0B,0BAAA,oBAAA,4BAAA;;8BAQrC,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,+BAAe,0BAAA,oBAAA,4BAAA;;8BAQ1B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,iCAAiB,0BAAA,oBAAA,4BAAA;;8BAQ5B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,+BAAe,8BAAA;;;;;;;;;;;;MAa1B,oDAAA;cAEW,oCAAoB,0BAAA,oBAAA,4BAAA;;8BAO/B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,8BAAc,8BAAA;;;;;;;;;;;;MAqCzB,oDAAA;cAEW,kCAAkB,0BAAA,oBAAA,4BAAA;;8BAO7B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,sCAAsB,0BAAA,oBAAA,4BAAA;;8BAOjC,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,yCAAyB,0BAAA,oBAAA,4BAAA;;8BAOpC,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,yCAAyB,0BAAA,oBAAA,4BAAA;;8BAMpC,qCAAA,iDAAA,aAAA,eAAA,oDAAA"}
1
+ {"version":3,"file":"transfer.d.ts","names":[],"sources":["../../../src/components/transfer/transfer.ts"],"mappings":";;;;;KAoCK,gBAAgB;;UAGJ;EACf;EACA;EACA,sBAAsB;EACtB,sBAAsB;EACtB,UAAU,IAAI;EACd,aAAa,MAAM,iBAAiB;EACpC,YAAY;EACZ,WAAW;EACX,eAAe;EACf,SAAS;EACT,YAAY,MAAM;EAClB,OAAO,IAAI;;;UAII;EACf,MAAM;EACN,gBAAgB;EAChB,YAAY;EACZ;;;UAIQ;EACR,WAAW,OAAO,2BAA2B;;cAGlC,8BAAc,8BAAA;;IAIM,MAAA,SAAS;;;IACd,MAAA;;;IACO,MAAA;;;;;;;;;IAGH,MAAA;;;IACO,MAAA;;;;IAEP,MAAA,SAAS;;;;;;;;;;;;;;;;IAKb,MAAA,SAAS;;;IACT,MAAA,SAAS;;;;;;;;IAGV,MAAA,SAAS;;;IACA,MAAA,SAAS;;;;;EAId,iBAAA,UAAA,UAAU;EACN,qBAAA,UAAA,UAAU;EAChB,iBAAA,QAAA,UAAU;EACN,qBAAA,QAAA,UAAU;;;IAzBV,MAAA,SAAS;;;IACd,MAAA;;;IACO,MAAA;;;;;;;;;IAGH,MAAA;;;IACO,MAAA;;;;IAEP,MAAA,SAAS;;;;;;;;;;;;;;;;IAKb,MAAA,SAAS;;;IACT,MAAA,SAAS;;;;;;;;IAGV,MAAA,SAAS;;;IACA,MAAA,SAAS;;;;;;;;;;;;;;;;EAU/B,WAAC,OAAO,0BAA0B;kCAkC9C;cAkBW,qCAAqB,0BAfqE,iCAAK,qCAAA,iDAAA,aAAA,eAAA,kBAAA,UAAA,mDAAA;cAqB/F,qCAAqB,0BArBqE,iCAAK,qCAAA,iDAAA,aAAA,eAAA,kBAAA,UAAA,mDAAA;cA2B/F,qCAAqB,0BAAA,oBAAA,4BAAA;;8BAOhC,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,oCAAoB,0BAAA,oBAAA,4BAAA;;8BAO/B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,oCAAoB,0BAAA,oBAAA,4BAAA;;8BAQ/B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,gCAAgB,0BAAA,oBAAA,4BAAA;;8BAO3B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,8BAAc,0BAAA,oBAAA,4BAAA;;gCA2BzB,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,0CAA0B,0BAAA,oBAAA,4BAAA;;8BAQrC,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,+BAAe,0BAAA,oBAAA,4BAAA;;8BAQ1B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,iCAAiB,0BAAA,oBAAA,4BAAA;;8BAQ5B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,+BAAe,8BAAA;;;;;;;;;;;;MAa1B,oDAAA;cAEW,oCAAoB,0BAAA,oBAAA,4BAAA;;8BAO/B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,8BAAc,8BAAA;;;;;;;;;;;;MAqCzB,oDAAA;cAEW,kCAAkB,0BAAA,oBAAA,4BAAA;;8BAO7B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;;cAGW,yCAAyB,0BAAA,oBAAA,4BAAA;;8BAOpC,qCAAA,iDAAA,aAAA,eAAA,oDAAA;;cAGW,oCAAoB,0BAAA,oBAAA,4BAAA;;8BAO/B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,sCAAsB,0BAAA,oBAAA,4BAAA;;8BAOjC,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,yCAAyB,0BAAA,oBAAA,4BAAA;;8BAOpC,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,yCAAyB,0BAAA,oBAAA,4BAAA;;8BAMpC,qCAAA,iDAAA,aAAA,eAAA,oDAAA"}
@@ -254,6 +254,24 @@ const XhTransferItemText = defineComponent({
254
254
  return () => h("span", ctx.api.value.getItemTextProps(item.value), slots.default?.());
255
255
  }
256
256
  });
257
+ /** 条目的第 2 行副文本,跨文字槽、走 muted 档 */
258
+ const XhTransferItemDescription = defineComponent({
259
+ name: "XhTransferItemDescription",
260
+ setup(_, { slots }) {
261
+ const ctx = useTransferContext();
262
+ const { item } = useTransferItemContext();
263
+ return () => h("span", ctx.api.value.getItemDescriptionProps(item.value), slots.default?.());
264
+ }
265
+ });
266
+ /** 条目行尾的作者内容(计数、徽标) */
267
+ const XhTransferItemSuffix = defineComponent({
268
+ name: "XhTransferItemSuffix",
269
+ setup(_, { slots }) {
270
+ const ctx = useTransferContext();
271
+ const { item } = useTransferItemContext();
272
+ return () => h("span", ctx.api.value.getItemSuffixProps(item.value), slots.default?.());
273
+ }
274
+ });
257
275
  const XhTransferItemCheckbox = defineComponent({
258
276
  name: "XhTransferItemCheckbox",
259
277
  setup(_, { slots }) {
@@ -277,6 +295,6 @@ const XhTransferToSourceTrigger = defineComponent({
277
295
  }
278
296
  });
279
297
  //#endregion
280
- export { XhTransferEmpty, XhTransferGroup, XhTransferGroupLabel, XhTransferItem, XhTransferItemCheckbox, XhTransferItemText, XhTransferList, XhTransferLoading, XhTransferPanelCount, XhTransferPanelHeader, XhTransferPanelTitle, XhTransferRoot, XhTransferSearch, XhTransferSelectAllTrigger, XhTransferSourcePanel, XhTransferTargetPanel, XhTransferToSourceTrigger, XhTransferToTargetTrigger };
298
+ export { XhTransferEmpty, XhTransferGroup, XhTransferGroupLabel, XhTransferItem, XhTransferItemCheckbox, XhTransferItemDescription, XhTransferItemSuffix, XhTransferItemText, XhTransferList, XhTransferLoading, XhTransferPanelCount, XhTransferPanelHeader, XhTransferPanelTitle, XhTransferRoot, XhTransferSearch, XhTransferSelectAllTrigger, XhTransferSourcePanel, XhTransferTargetPanel, XhTransferToSourceTrigger, XhTransferToTargetTrigger };
281
299
 
282
300
  //# sourceMappingURL=transfer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"transfer.js","names":[],"sources":["../../../src/components/transfer/transfer.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-Present XiHanFun and contributors.\n * Licensed under the MIT License. See LICENSE in the project root for license information.\n */\n\n// 提供 transfer 相关实现。\n\nimport type { Direction, Size, Tone } from '@xihan-ui/core'\nimport type {\n TransferCheckState,\n TransferFilter,\n TransferGroupProps,\n TransferItem,\n TransferItemProps,\n TransferPanelProps,\n TransferSchema,\n TransferSide,\n} from '@xihan-ui/headless'\nimport type { PropType, SlotsType, VNode } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { computed, defineComponent, h, mergeProps, onBeforeUnmount, onUpdated, ref, watch } from 'vue'\nimport { withXhConfig } from '../../config/config'\nimport { useScrollbars } from '../../runtime/use-scrollbars'\nimport { useFormControlProps } from '../form/use-form-control'\nimport {\n provideTransfer,\n provideTransferGroup,\n provideTransferItem,\n provideTransferPanel,\n useTransferContext,\n useTransferGroupContext,\n useTransferItemContext,\n useTransferPanelContext,\n} from './context'\nimport { useTransfer } from './use-transfer'\n\ntype TransferProps = TransferSchema['props']\n\n/** 默认插槽的载荷:目标侧的值与两侧的勾选、两侧当前可见的条目,以及勾选、写值与移动的动作。 */\nexport interface TransferRootSlotProps {\n value: string[]\n selection: string[]\n sourceItems: readonly TransferItem[]\n targetItems: readonly TransferItem[]\n canMove: (to: TransferSide) => boolean\n checkState: (side: TransferSide) => TransferCheckState\n isChecked: (value: string) => boolean\n setValue: (next: string[]) => void\n setSelection: (next: string[]) => void\n toggle: (value: string) => void\n toggleAll: (side: TransferSide) => void\n move: (to: TransferSide) => void\n}\n\n/** 面板默认插槽的载荷:该侧的身份、当前可见的条目、该侧的全选三态与搜索词。 */\nexport interface TransferPanelSlotProps {\n side: TransferSide\n items: readonly TransferItem[]\n checkState: TransferCheckState\n query: string\n}\n\n/** 源/目标两个面板部件共用的插槽集合。 */\ninterface TransferPanelSlots {\n default?: (props: TransferPanelSlotProps) => VNode[]\n}\n\nexport const XhTransferRoot = defineComponent({\n name: 'XhTransferRoot',\n // 有 connect 兜底的 prop:普通类型省略 default,Boolean 显式保留 undefined\n props: {\n collection: { type: Array as PropType<TransferItem[]> },\n value: { type: Array as PropType<string[]> },\n defaultValue: { type: Array as PropType<string[]> },\n name: { type: String },\n form: { type: String },\n selection: { type: Array as PropType<string[]> },\n defaultSelection: { type: Array as PropType<string[]> },\n searchable: Boolean,\n filter: { type: Function as PropType<TransferFilter> },\n disabled: { type: Boolean, default: undefined },\n readOnly: { type: Boolean, default: undefined },\n invalid: { type: Boolean, default: undefined },\n loading: Boolean,\n tone: { type: String as PropType<Tone> },\n size: { type: String as PropType<Size> },\n oneWay: Boolean,\n loop: { type: Boolean, default: undefined },\n dir: { type: String as PropType<Direction> },\n translations: { type: Object as PropType<TransferProps['translations']> },\n },\n // *-change 携带 details 对象,update:* 携带裸集合以支持 v-model\n emits: {\n 'value-change': (_details: PayloadOf<TransferProps, 'onValueChange'>) => true,\n 'selection-change': (_details: PayloadOf<TransferProps, 'onSelectionChange'>) => true,\n 'update:value': (_value: PayloadOf<TransferProps, 'onValueChange'>['value']) => true,\n 'update:selection': (_value: PayloadOf<TransferProps, 'onSelectionChange'>['value']) => true,\n },\n slots: Object as SlotsType<{\n default?: (props: TransferRootSlotProps) => VNode[]\n }>,\n setup(props, { slots, emit }) {\n const notifyValue: TransferProps['onValueChange'] = (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n }\n const notifySelection: TransferProps['onSelectionChange'] = (details) => {\n emit('selection-change', details)\n emit('update:selection', details.value)\n }\n const ctx = useTransfer(withXhConfig('transfer', useFormControlProps(props)) as TransferProps, {\n onValueChange: notifyValue,\n onSelectionChange: notifySelection,\n })\n provideTransfer(ctx)\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, [slots.default?.({\n value: ctx.api.value.value,\n selection: ctx.api.value.selection,\n sourceItems: ctx.api.value.visibleItems('source'),\n targetItems: ctx.api.value.visibleItems('target'),\n canMove: ctx.api.value.canMove,\n checkState: ctx.api.value.checkState,\n isChecked: ctx.api.value.isChecked,\n setValue: ctx.api.value.setValue,\n setSelection: ctx.api.value.setSelection,\n toggle: ctx.api.value.toggle,\n toggleAll: ctx.api.value.toggleAll,\n move: ctx.api.value.move,\n }), ...ctx.api.value.value.map(value => h('input', {\n ...ctx.api.value.getHiddenInputProps({ value }) as Record<string, unknown>,\n key: value,\n }))])\n },\n})\n\n/** 生成源/目标面板共用的 setup,两侧只在 side 上不同 */\nfunction panelSetup(side: TransferSide): (props: unknown, ctx: { slots: TransferPanelSlots }) => () => VNode {\n return (_: unknown, { slots }: { slots: TransferPanelSlots }) => {\n const ctx = useTransferContext()\n const panel = computed<TransferPanelProps>(() => ({ side }))\n provideTransferPanel({ panel })\n return () => h('div', ctx.api.value.getPanelProps(panel.value) as Record<string, unknown>, slots.default?.({\n side,\n // 这一侧当下看得见的条目(分侧 + 搜索之后),不是数据入口:入口叫 collection,是整份全集\n items: ctx.api.value.visibleItems(side),\n checkState: ctx.api.value.checkState(side),\n query: ctx.api.value.query(side),\n }))\n }\n}\n\nexport const XhTransferSourcePanel = defineComponent({\n name: 'XhTransferSourcePanel',\n slots: Object as SlotsType<TransferPanelSlots>,\n setup: panelSetup('source'),\n})\n\nexport const XhTransferTargetPanel = defineComponent({\n name: 'XhTransferTargetPanel',\n slots: Object as SlotsType<TransferPanelSlots>,\n setup: panelSetup('target'),\n})\n\nexport const XhTransferPanelHeader = defineComponent({\n name: 'XhTransferPanelHeader',\n setup(_, { slots }) {\n const ctx = useTransferContext()\n const { panel } = useTransferPanelContext()\n return () => h('div', ctx.api.value.getPanelHeaderProps(panel.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTransferPanelTitle = defineComponent({\n name: 'XhTransferPanelTitle',\n setup(_, { slots }) {\n const ctx = useTransferContext()\n const { panel } = useTransferPanelContext()\n return () => h('span', ctx.api.value.getPanelTitleProps(panel.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTransferPanelCount = defineComponent({\n name: 'XhTransferPanelCount',\n setup(_, { slots }) {\n const ctx = useTransferContext()\n const { panel } = useTransferPanelContext()\n // 只带 data-checked-count / data-count 属性,文案由作者或皮肤层提供\n return () => h('span', ctx.api.value.getPanelCountProps(panel.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTransferSearch = defineComponent({\n name: 'XhTransferSearch',\n setup() {\n const ctx = useTransferContext()\n const { panel } = useTransferPanelContext()\n return () => h('input', ctx.api.value.getSearchProps(panel.value) as Record<string, unknown>)\n },\n})\n\nexport const XhTransferList = defineComponent({\n name: 'XhTransferList',\n // 根是片段(列表节点 + 贴层的条子),Vue 不会把直通属性合上去:作者写的 class、style 与 data-* 自己接住落到列表节点上\n inheritAttrs: false,\n setup(_, { slots, attrs }) {\n const ctx = useTransferContext()\n const { panel } = useTransferPanelContext()\n const listRef = ref<HTMLElement | null>(null)\n // 两侧定高小列表各走一路自绘条(§6.6):条子紧跟在列表后面、贴在列表自己的盒子上,\n // 挂在 root 这个定位盒上(面板不定位,root 才是列表的定位祖先);两条轴都摆——皮肤给的是两轴 overflow: auto。\n // 页内宿主走 6px 缺省档;横条的正负按排版方向算,把机器里那份 dir 交过去\n const bars = useScrollbars({\n scrollable: () => listRef.value,\n axes: ['vertical', 'horizontal'],\n anchor: 'layer',\n props: () => ({ dir: ctx.service.prop('dir') }),\n })\n // 搬运、搜索筛选与空态显隐都会挪动列表在壳内的位置与尺寸:每次更新后重量一次偏移盒\n onUpdated(() => bars.measure())\n return () => [\n h('div', {\n ...mergeProps(ctx.api.value.getListProps(panel.value) as Record<string, unknown>, attrs),\n ref: (el: unknown) => { listRef.value = el as HTMLElement | null },\n }, slots.default?.()),\n ...bars.render(),\n ]\n },\n})\n\nexport const XhTransferSelectAllTrigger = defineComponent({\n name: 'XhTransferSelectAllTrigger',\n setup(_, { slots }) {\n const ctx = useTransferContext()\n const { panel } = useTransferPanelContext()\n // 用原生 button,激活与禁用交给平台\n return () => h('button', ctx.api.value.getSelectAllTriggerProps(panel.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTransferEmpty = defineComponent({\n name: 'XhTransferEmpty',\n setup(_, { slots }) {\n const ctx = useTransferContext()\n const { panel } = useTransferPanelContext()\n // 空态占位:写在面板里、list 的兄弟;本侧没有可见条目时由连接层放它出面\n return () => h('div', ctx.api.value.getEmptyProps(panel.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTransferLoading = defineComponent({\n name: 'XhTransferLoading',\n setup(_, { slots }) {\n const ctx = useTransferContext()\n const { panel } = useTransferPanelContext()\n // 在途占位:与空态占位同一个位置,取数期间顶上来\n return () => h('div', ctx.api.value.getLoadingProps(panel.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTransferGroup = defineComponent({\n name: 'XhTransferGroup',\n props: {\n value: { type: String, required: true },\n },\n setup(props, { slots }) {\n const ctx = useTransferContext()\n const { panel } = useTransferPanelContext()\n // 两侧各挂一份同名分组,身份连 side 一起算,两边的标题 id 才不撞\n const group = computed<TransferGroupProps>(() => ({ value: props.value, side: panel.value.side }))\n provideTransferGroup({ group })\n return () => h('div', ctx.api.value.getGroupProps(group.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTransferGroupLabel = defineComponent({\n name: 'XhTransferGroupLabel',\n setup(_, { slots }) {\n const ctx = useTransferContext()\n const { group } = useTransferGroupContext()\n return () => h('span', ctx.api.value.getGroupLabelProps(group.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTransferItem = defineComponent({\n name: 'XhTransferItem',\n props: {\n value: { type: String, required: true },\n },\n setup(props, { slots }) {\n const ctx = useTransferContext()\n const { panel } = useTransferPanelContext()\n // 条目只报值与所属面板,禁用与标签回 collection 里查;同一 value 的两侧节点靠 side 分身份\n const item = computed<TransferItemProps>(() => ({ value: props.value, side: panel.value.side }))\n provideTransferItem({ item })\n // 本条目持有焦点时,value 变更重报焦点条目,卸载时上报列表失焦\n const itemEl = ref<HTMLElement | null>(null)\n watch(() => props.value, (next, prev) => {\n if (next === prev)\n return\n const { service } = ctx\n if (service.getStatus() !== 'Started')\n return\n if (itemEl.value && service.scope.getActiveElement() === itemEl.value)\n service.send({ type: 'ITEM.FOCUS', side: panel.value.side, value: next })\n })\n onBeforeUnmount(() => {\n const { service } = ctx\n // 整组一起卸载时根部件先停机,此刻送事件会在 dev 下抛\n if (service.getStatus() !== 'Started')\n return\n // 按「本节点当下正持有焦点」判定,不按 value 比对\n if (itemEl.value && service.scope.getActiveElement() === itemEl.value)\n service.send({ type: 'LIST.BLUR', side: panel.value.side })\n })\n return () => h(\n 'div',\n { ...ctx.api.value.getItemProps(item.value) as Record<string, unknown>, ref: itemEl },\n slots.default?.(),\n )\n },\n})\n\nexport const XhTransferItemText = defineComponent({\n name: 'XhTransferItemText',\n setup(_, { slots }) {\n const ctx = useTransferContext()\n const { item } = useTransferItemContext()\n return () => h('span', ctx.api.value.getItemTextProps(item.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTransferItemCheckbox = defineComponent({\n name: 'XhTransferItemCheckbox',\n setup(_, { slots }) {\n const ctx = useTransferContext()\n const { item } = useTransferItemContext()\n return () => h('span', ctx.api.value.getItemCheckboxProps(item.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTransferToTargetTrigger = defineComponent({\n name: 'XhTransferToTargetTrigger',\n setup(_, { slots }) {\n const ctx = useTransferContext()\n // 用原生 button,激活与禁用交给平台\n return () => h('button', ctx.api.value.getToTargetTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTransferToSourceTrigger = defineComponent({\n name: 'XhTransferToSourceTrigger',\n setup(_, { slots }) {\n const ctx = useTransferContext()\n return () => h('button', ctx.api.value.getToSourceTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n"],"mappings":"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"}
1
+ {"version":3,"file":"transfer.js","names":[],"sources":["../../../src/components/transfer/transfer.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-Present XiHanFun and contributors.\n * Licensed under the MIT License. See LICENSE in the project root for license information.\n */\n\n// 提供 transfer 相关实现。\n\nimport type { Direction, Size, Tone } from '@xihan-ui/core'\nimport type {\n TransferCheckState,\n TransferFilter,\n TransferGroupProps,\n TransferItem,\n TransferItemProps,\n TransferPanelProps,\n TransferSchema,\n TransferSide,\n} from '@xihan-ui/headless'\nimport type { PropType, SlotsType, VNode } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { computed, defineComponent, h, mergeProps, onBeforeUnmount, onUpdated, ref, watch } from 'vue'\nimport { withXhConfig } from '../../config/config'\nimport { useScrollbars } from '../../runtime/use-scrollbars'\nimport { useFormControlProps } from '../form/use-form-control'\nimport {\n provideTransfer,\n provideTransferGroup,\n provideTransferItem,\n provideTransferPanel,\n useTransferContext,\n useTransferGroupContext,\n useTransferItemContext,\n useTransferPanelContext,\n} from './context'\nimport { useTransfer } from './use-transfer'\n\ntype TransferProps = TransferSchema['props']\n\n/** 默认插槽的载荷:目标侧的值与两侧的勾选、两侧当前可见的条目,以及勾选、写值与移动的动作。 */\nexport interface TransferRootSlotProps {\n value: string[]\n selection: string[]\n sourceItems: readonly TransferItem[]\n targetItems: readonly TransferItem[]\n canMove: (to: TransferSide) => boolean\n checkState: (side: TransferSide) => TransferCheckState\n isChecked: (value: string) => boolean\n setValue: (next: string[]) => void\n setSelection: (next: string[]) => void\n toggle: (value: string) => void\n toggleAll: (side: TransferSide) => void\n move: (to: TransferSide) => void\n}\n\n/** 面板默认插槽的载荷:该侧的身份、当前可见的条目、该侧的全选三态与搜索词。 */\nexport interface TransferPanelSlotProps {\n side: TransferSide\n items: readonly TransferItem[]\n checkState: TransferCheckState\n query: string\n}\n\n/** 源/目标两个面板部件共用的插槽集合。 */\ninterface TransferPanelSlots {\n default?: (props: TransferPanelSlotProps) => VNode[]\n}\n\nexport const XhTransferRoot = defineComponent({\n name: 'XhTransferRoot',\n // 有 connect 兜底的 prop:普通类型省略 default,Boolean 显式保留 undefined\n props: {\n collection: { type: Array as PropType<TransferItem[]> },\n value: { type: Array as PropType<string[]> },\n defaultValue: { type: Array as PropType<string[]> },\n name: { type: String },\n form: { type: String },\n selection: { type: Array as PropType<string[]> },\n defaultSelection: { type: Array as PropType<string[]> },\n searchable: Boolean,\n filter: { type: Function as PropType<TransferFilter> },\n disabled: { type: Boolean, default: undefined },\n readOnly: { type: Boolean, default: undefined },\n invalid: { type: Boolean, default: undefined },\n loading: Boolean,\n tone: { type: String as PropType<Tone> },\n size: { type: String as PropType<Size> },\n oneWay: Boolean,\n loop: { type: Boolean, default: undefined },\n dir: { type: String as PropType<Direction> },\n translations: { type: Object as PropType<TransferProps['translations']> },\n },\n // *-change 携带 details 对象,update:* 携带裸集合以支持 v-model\n emits: {\n 'value-change': (_details: PayloadOf<TransferProps, 'onValueChange'>) => true,\n 'selection-change': (_details: PayloadOf<TransferProps, 'onSelectionChange'>) => true,\n 'update:value': (_value: PayloadOf<TransferProps, 'onValueChange'>['value']) => true,\n 'update:selection': (_value: PayloadOf<TransferProps, 'onSelectionChange'>['value']) => true,\n },\n slots: Object as SlotsType<{\n default?: (props: TransferRootSlotProps) => VNode[]\n }>,\n setup(props, { slots, emit }) {\n const notifyValue: TransferProps['onValueChange'] = (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n }\n const notifySelection: TransferProps['onSelectionChange'] = (details) => {\n emit('selection-change', details)\n emit('update:selection', details.value)\n }\n const ctx = useTransfer(withXhConfig('transfer', useFormControlProps(props)) as TransferProps, {\n onValueChange: notifyValue,\n onSelectionChange: notifySelection,\n })\n provideTransfer(ctx)\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, [slots.default?.({\n value: ctx.api.value.value,\n selection: ctx.api.value.selection,\n sourceItems: ctx.api.value.visibleItems('source'),\n targetItems: ctx.api.value.visibleItems('target'),\n canMove: ctx.api.value.canMove,\n checkState: ctx.api.value.checkState,\n isChecked: ctx.api.value.isChecked,\n setValue: ctx.api.value.setValue,\n setSelection: ctx.api.value.setSelection,\n toggle: ctx.api.value.toggle,\n toggleAll: ctx.api.value.toggleAll,\n move: ctx.api.value.move,\n }), ...ctx.api.value.value.map(value => h('input', {\n ...ctx.api.value.getHiddenInputProps({ value }) as Record<string, unknown>,\n key: value,\n }))])\n },\n})\n\n/** 生成源/目标面板共用的 setup,两侧只在 side 上不同 */\nfunction panelSetup(side: TransferSide): (props: unknown, ctx: { slots: TransferPanelSlots }) => () => VNode {\n return (_: unknown, { slots }: { slots: TransferPanelSlots }) => {\n const ctx = useTransferContext()\n const panel = computed<TransferPanelProps>(() => ({ side }))\n provideTransferPanel({ panel })\n return () => h('div', ctx.api.value.getPanelProps(panel.value) as Record<string, unknown>, slots.default?.({\n side,\n // 这一侧当下看得见的条目(分侧 + 搜索之后),不是数据入口:入口叫 collection,是整份全集\n items: ctx.api.value.visibleItems(side),\n checkState: ctx.api.value.checkState(side),\n query: ctx.api.value.query(side),\n }))\n }\n}\n\nexport const XhTransferSourcePanel = defineComponent({\n name: 'XhTransferSourcePanel',\n slots: Object as SlotsType<TransferPanelSlots>,\n setup: panelSetup('source'),\n})\n\nexport const XhTransferTargetPanel = defineComponent({\n name: 'XhTransferTargetPanel',\n slots: Object as SlotsType<TransferPanelSlots>,\n setup: panelSetup('target'),\n})\n\nexport const XhTransferPanelHeader = defineComponent({\n name: 'XhTransferPanelHeader',\n setup(_, { slots }) {\n const ctx = useTransferContext()\n const { panel } = useTransferPanelContext()\n return () => h('div', ctx.api.value.getPanelHeaderProps(panel.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTransferPanelTitle = defineComponent({\n name: 'XhTransferPanelTitle',\n setup(_, { slots }) {\n const ctx = useTransferContext()\n const { panel } = useTransferPanelContext()\n return () => h('span', ctx.api.value.getPanelTitleProps(panel.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTransferPanelCount = defineComponent({\n name: 'XhTransferPanelCount',\n setup(_, { slots }) {\n const ctx = useTransferContext()\n const { panel } = useTransferPanelContext()\n // 只带 data-checked-count / data-count 属性,文案由作者或皮肤层提供\n return () => h('span', ctx.api.value.getPanelCountProps(panel.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTransferSearch = defineComponent({\n name: 'XhTransferSearch',\n setup() {\n const ctx = useTransferContext()\n const { panel } = useTransferPanelContext()\n return () => h('input', ctx.api.value.getSearchProps(panel.value) as Record<string, unknown>)\n },\n})\n\nexport const XhTransferList = defineComponent({\n name: 'XhTransferList',\n // 根是片段(列表节点 + 贴层的条子),Vue 不会把直通属性合上去:作者写的 class、style 与 data-* 自己接住落到列表节点上\n inheritAttrs: false,\n setup(_, { slots, attrs }) {\n const ctx = useTransferContext()\n const { panel } = useTransferPanelContext()\n const listRef = ref<HTMLElement | null>(null)\n // 两侧定高小列表各走一路自绘条:条子紧跟在列表后面、贴在列表自己的盒子上,\n // 挂在 root 这个定位盒上(面板不定位,root 才是列表的定位祖先);两条轴都摆——皮肤给的是两轴 overflow: auto。\n // 页内宿主走 6px 缺省档;横条的正负按排版方向算,把机器里那份 dir 交过去\n const bars = useScrollbars({\n scrollable: () => listRef.value,\n axes: ['vertical', 'horizontal'],\n anchor: 'layer',\n props: () => ({ dir: ctx.service.prop('dir') }),\n })\n // 搬运、搜索筛选与空态显隐都会挪动列表在壳内的位置与尺寸:每次更新后重量一次偏移盒\n onUpdated(() => bars.measure())\n return () => [\n h('div', {\n ...mergeProps(ctx.api.value.getListProps(panel.value) as Record<string, unknown>, attrs),\n ref: (el: unknown) => { listRef.value = el as HTMLElement | null },\n }, slots.default?.()),\n ...bars.render(),\n ]\n },\n})\n\nexport const XhTransferSelectAllTrigger = defineComponent({\n name: 'XhTransferSelectAllTrigger',\n setup(_, { slots }) {\n const ctx = useTransferContext()\n const { panel } = useTransferPanelContext()\n // 用原生 button,激活与禁用交给平台\n return () => h('button', ctx.api.value.getSelectAllTriggerProps(panel.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTransferEmpty = defineComponent({\n name: 'XhTransferEmpty',\n setup(_, { slots }) {\n const ctx = useTransferContext()\n const { panel } = useTransferPanelContext()\n // 空态占位:写在面板里、list 的兄弟;本侧没有可见条目时由连接层放它出面\n return () => h('div', ctx.api.value.getEmptyProps(panel.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTransferLoading = defineComponent({\n name: 'XhTransferLoading',\n setup(_, { slots }) {\n const ctx = useTransferContext()\n const { panel } = useTransferPanelContext()\n // 在途占位:与空态占位同一个位置,取数期间顶上来\n return () => h('div', ctx.api.value.getLoadingProps(panel.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTransferGroup = defineComponent({\n name: 'XhTransferGroup',\n props: {\n value: { type: String, required: true },\n },\n setup(props, { slots }) {\n const ctx = useTransferContext()\n const { panel } = useTransferPanelContext()\n // 两侧各挂一份同名分组,身份连 side 一起算,两边的标题 id 才不撞\n const group = computed<TransferGroupProps>(() => ({ value: props.value, side: panel.value.side }))\n provideTransferGroup({ group })\n return () => h('div', ctx.api.value.getGroupProps(group.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTransferGroupLabel = defineComponent({\n name: 'XhTransferGroupLabel',\n setup(_, { slots }) {\n const ctx = useTransferContext()\n const { group } = useTransferGroupContext()\n return () => h('span', ctx.api.value.getGroupLabelProps(group.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTransferItem = defineComponent({\n name: 'XhTransferItem',\n props: {\n value: { type: String, required: true },\n },\n setup(props, { slots }) {\n const ctx = useTransferContext()\n const { panel } = useTransferPanelContext()\n // 条目只报值与所属面板,禁用与标签回 collection 里查;同一 value 的两侧节点靠 side 分身份\n const item = computed<TransferItemProps>(() => ({ value: props.value, side: panel.value.side }))\n provideTransferItem({ item })\n // 本条目持有焦点时,value 变更重报焦点条目,卸载时上报列表失焦\n const itemEl = ref<HTMLElement | null>(null)\n watch(() => props.value, (next, prev) => {\n if (next === prev)\n return\n const { service } = ctx\n if (service.getStatus() !== 'Started')\n return\n if (itemEl.value && service.scope.getActiveElement() === itemEl.value)\n service.send({ type: 'ITEM.FOCUS', side: panel.value.side, value: next })\n })\n onBeforeUnmount(() => {\n const { service } = ctx\n // 整组一起卸载时根部件先停机,此刻送事件会在 dev 下抛\n if (service.getStatus() !== 'Started')\n return\n // 按「本节点当下正持有焦点」判定,不按 value 比对\n if (itemEl.value && service.scope.getActiveElement() === itemEl.value)\n service.send({ type: 'LIST.BLUR', side: panel.value.side })\n })\n return () => h(\n 'div',\n { ...ctx.api.value.getItemProps(item.value) as Record<string, unknown>, ref: itemEl },\n slots.default?.(),\n )\n },\n})\n\nexport const XhTransferItemText = defineComponent({\n name: 'XhTransferItemText',\n setup(_, { slots }) {\n const ctx = useTransferContext()\n const { item } = useTransferItemContext()\n return () => h('span', ctx.api.value.getItemTextProps(item.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\n/** 条目的第 2 行副文本,跨文字槽、走 muted 档 */\nexport const XhTransferItemDescription = defineComponent({\n name: 'XhTransferItemDescription',\n setup(_, { slots }) {\n const ctx = useTransferContext()\n const { item } = useTransferItemContext()\n return () => h('span', ctx.api.value.getItemDescriptionProps(item.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\n/** 条目行尾的作者内容(计数、徽标) */\nexport const XhTransferItemSuffix = defineComponent({\n name: 'XhTransferItemSuffix',\n setup(_, { slots }) {\n const ctx = useTransferContext()\n const { item } = useTransferItemContext()\n return () => h('span', ctx.api.value.getItemSuffixProps(item.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTransferItemCheckbox = defineComponent({\n name: 'XhTransferItemCheckbox',\n setup(_, { slots }) {\n const ctx = useTransferContext()\n const { item } = useTransferItemContext()\n return () => h('span', ctx.api.value.getItemCheckboxProps(item.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTransferToTargetTrigger = defineComponent({\n name: 'XhTransferToTargetTrigger',\n setup(_, { slots }) {\n const ctx = useTransferContext()\n // 用原生 button,激活与禁用交给平台\n return () => h('button', ctx.api.value.getToTargetTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTransferToSourceTrigger = defineComponent({\n name: 'XhTransferToSourceTrigger',\n setup(_, { slots }) {\n const ctx = useTransferContext()\n return () => h('button', ctx.api.value.getToSourceTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n"],"mappings":"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"}
@@ -185,6 +185,14 @@ declare const XhTreeItem: import("vue").DefineComponent<import("vue").ExtractPro
185
185
  declare const XhTreeItemText: import("vue").DefineComponent<{}, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
186
186
  [key: string]: any;
187
187
  }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
188
+ /** 条目的第 2 行副文本,跨文字槽、走 muted 档 */
189
+ declare const XhTreeItemDescription: import("vue").DefineComponent<{}, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
190
+ [key: string]: any;
191
+ }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
192
+ /** 条目行尾的作者内容(计数、徽标) */
193
+ declare const XhTreeItemSuffix: import("vue").DefineComponent<{}, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
194
+ [key: string]: any;
195
+ }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
188
196
  /**
189
197
  * 节点拖拽把手。放在节点中,自带 touch-action: none,按下即拖动,不等待激活距离。
190
198
  * 对读屏隐藏、也不占 Tab 位;键盘移动由树上的 Alt + 方向键承担。
@@ -193,12 +201,6 @@ declare const XhTreeItemText: import("vue").DefineComponent<{}, () => VNode<impo
193
201
  declare const XhTreeNodeDragTrigger: import("vue").DefineComponent<{}, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
194
202
  [key: string]: any;
195
203
  }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
196
- declare const XhTreeItemCheckbox: import("vue").DefineComponent<{}, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
197
- [key: string]: any;
198
- }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
199
- declare const XhTreeBranchCheckbox: import("vue").DefineComponent<{}, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
200
- [key: string]: any;
201
- }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
202
204
  declare const XhTreeItemIndicator: import("vue").DefineComponent<{}, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
203
205
  [key: string]: any;
204
206
  }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
@@ -231,5 +233,5 @@ declare const XhTreeBranchContent: import("vue").DefineComponent<{}, () => VNode
231
233
  [key: string]: any;
232
234
  }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
233
235
  //#endregion
234
- export { TreeRootSlotProps, XhTreeBranch, XhTreeBranchCheckbox, XhTreeBranchContent, XhTreeBranchControl, XhTreeBranchIndicator, XhTreeBranchText, XhTreeBranchTrigger, XhTreeEmpty, XhTreeItem, XhTreeItemCheckbox, XhTreeItemIndicator, XhTreeItemText, XhTreeLabel, XhTreeLiveRegion, XhTreeLoading, XhTreeNodeDragTrigger, XhTreeRoot, XhTreeTree };
236
+ export { TreeRootSlotProps, XhTreeBranch, XhTreeBranchContent, XhTreeBranchControl, XhTreeBranchIndicator, XhTreeBranchText, XhTreeBranchTrigger, XhTreeEmpty, XhTreeItem, XhTreeItemDescription, XhTreeItemIndicator, XhTreeItemSuffix, XhTreeItemText, XhTreeLabel, XhTreeLiveRegion, XhTreeLoading, XhTreeNodeDragTrigger, XhTreeRoot, XhTreeTree };
235
237
  //# sourceMappingURL=tree.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tree.d.ts","names":[],"sources":["../../../src/components/tree/tree.ts"],"mappings":";;;;;KAiBK,YAAY;;KAGL,oBAAoB,KAC9B;cAmCW,0BAAU,8BAAA;;IAIU,MAAA,SAAS;;;;IAEX,MAAA,SAAS;;;IACJ,MAAA;;;IACO,MAAA;;;IACX,MAAA;;;IACO,MAAA;;;;;;;;IAGA,MAAA,SAAS;;;;IAET,MAAA,SAAS;;;;;;;;;;;;;;;;;IAMrB,MAAA,SAAS;;;;;;IAID,MAAA,SAAS;;;IACR,MAAA,SAAS;;;;;EAIL,0BAAA,UAAA,UAAU;EACb,yBAAA,QAAA,UAAU;EACZ,qBAAA,UAAA,UAAU;EACZ,qBAAA,QAAA,UAAU;EAElB,cAAA,OAAA,UAAU;;;IA/BF,MAAA,SAAS;;;;IAEX,MAAA,SAAS;;;IACJ,MAAA;;;IACO,MAAA;;;IACX,MAAA;;;IACO,MAAA;;;;;;;;IAGA,MAAA,SAAS;;;;IAET,MAAA,SAAS;;;;;;;;;;;;;;;;;IAMrB,MAAA,SAAS;;;;;;IAID,MAAA,SAAS;;;IACR,MAAA,SAAS;;;;;;;;;;;;;;;;;;EAY/B,WAAC,OAAO,sBAAsB;kCA6B1C;cAEW,2BAAW,0BAAA,oBAAA,4BAAA;;8BAMtB,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,0BAAU,0BAAA,oBAAA,4BAAA;;8BAMrB,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,2BAAW,0BAAA,oBAAA,4BAAA;;8BAQtB,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,6BAAa,0BAAA,oBAAA,4BAAA;;8BAOxB,qCAAA,iDAAA,aAAA,eAAA,oDAAA;;;;;;;cAQW,gCAAgB,0BAAA,oBAAA,4BAAA;;8BAU3B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,0BAAU,8BAAA;;;;;;;;;;;;MAiBrB,oDAAA;cAEW,8BAAc,0BAAA,oBAAA,4BAAA;;8BAOzB,qCAAA,iDAAA,aAAA,eAAA,oDAAA;;;;;;cAOW,qCAAqB,0BAAA,oBAAA,4BAAA;;8BAOhC,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,kCAAkB,0BAAA,oBAAA,4BAAA;;8BAO7B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,oCAAoB,0BAAA,oBAAA,4BAAA;;8BAO/B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,mCAAmB,0BAAA,oBAAA,4BAAA;;8BAO9B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,4BAAY,8BAAA;;;;;;;;;;;;MAkBvB,oDAAA;cAEW,mCAAmB,0BAAA,oBAAA,4BAAA;;8BAO9B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,mCAAmB,0BAAA,oBAAA,4BAAA;;8BAO9B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,qCAAqB,0BAAA,oBAAA,4BAAA;;8BAOhC,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,gCAAgB,0BAAA,oBAAA,4BAAA;;8BAO3B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,mCAAmB,0BAAA,oBAAA,4BAAA;;8BAQ9B,qCAAA,iDAAA,aAAA,eAAA,oDAAA"}
1
+ {"version":3,"file":"tree.d.ts","names":[],"sources":["../../../src/components/tree/tree.ts"],"mappings":";;;;;KAiBK,YAAY;;KAGL,oBAAoB,KAC9B;cAmCW,0BAAU,8BAAA;;IAIU,MAAA,SAAS;;;;IAEX,MAAA,SAAS;;;IACJ,MAAA;;;IACO,MAAA;;;IACX,MAAA;;;IACO,MAAA;;;;;;;;IAGA,MAAA,SAAS;;;;IAET,MAAA,SAAS;;;;;;;;;;;;;;;;;IAMrB,MAAA,SAAS;;;;;;IAID,MAAA,SAAS;;;IACR,MAAA,SAAS;;;;;EAIL,0BAAA,UAAA,UAAU;EACb,yBAAA,QAAA,UAAU;EACZ,qBAAA,UAAA,UAAU;EACZ,qBAAA,QAAA,UAAU;EAElB,cAAA,OAAA,UAAU;;;IA/BF,MAAA,SAAS;;;;IAEX,MAAA,SAAS;;;IACJ,MAAA;;;IACO,MAAA;;;IACX,MAAA;;;IACO,MAAA;;;;;;;;IAGA,MAAA,SAAS;;;;IAET,MAAA,SAAS;;;;;;;;;;;;;;;;;IAMrB,MAAA,SAAS;;;;;;IAID,MAAA,SAAS;;;IACR,MAAA,SAAS;;;;;;;;;;;;;;;;;;EAY/B,WAAC,OAAO,sBAAsB;kCA6B1C;cAEW,2BAAW,0BAAA,oBAAA,4BAAA;;8BAMtB,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,0BAAU,0BAAA,oBAAA,4BAAA;;8BAMrB,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,2BAAW,0BAAA,oBAAA,4BAAA;;8BAQtB,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,6BAAa,0BAAA,oBAAA,4BAAA;;8BAOxB,qCAAA,iDAAA,aAAA,eAAA,oDAAA;;;;;;;cAQW,gCAAgB,0BAAA,oBAAA,4BAAA;;8BAU3B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,0BAAU,8BAAA;;;;;;;;;;;;MAiBrB,oDAAA;cAEW,8BAAc,0BAAA,oBAAA,4BAAA;;8BAOzB,qCAAA,iDAAA,aAAA,eAAA,oDAAA;;cAGW,qCAAqB,0BAAA,oBAAA,4BAAA;;8BAOhC,qCAAA,iDAAA,aAAA,eAAA,oDAAA;;cAGW,gCAAgB,0BAAA,oBAAA,4BAAA;;8BAO3B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;;;;;;cAOW,qCAAqB,0BAAA,oBAAA,4BAAA;;8BAOhC,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,mCAAmB,0BAAA,oBAAA,4BAAA;;8BAO9B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,4BAAY,8BAAA;;;;;;;;;;;;MAkBvB,oDAAA;cAEW,mCAAmB,0BAAA,oBAAA,4BAAA;;8BAO9B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,mCAAmB,0BAAA,oBAAA,4BAAA;;8BAO9B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,qCAAqB,0BAAA,oBAAA,4BAAA;;8BAOhC,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,gCAAgB,0BAAA,oBAAA,4BAAA;;8BAO3B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,mCAAmB,0BAAA,oBAAA,4BAAA;;8BAQ9B,qCAAA,iDAAA,aAAA,eAAA,oDAAA"}
@@ -162,33 +162,35 @@ const XhTreeItemText = defineComponent({
162
162
  return () => h("span", ctx.api.value.getItemTextProps(node.value), slots.default?.());
163
163
  }
164
164
  });
165
- /**
166
- * 节点拖拽把手。放在节点中,自带 touch-action: none,按下即拖动,不等待激活距离。
167
- * 对读屏隐藏、也不占 Tab 位;键盘移动由树上的 Alt + 方向键承担。
168
- * 整个节点拖动的路径照常可用,把手是叠加的第二个入口。
169
- */
170
- const XhTreeNodeDragTrigger = defineComponent({
171
- name: "XhTreeNodeDragTrigger",
165
+ /** 条目的第 2 行副文本,跨文字槽、走 muted 档 */
166
+ const XhTreeItemDescription = defineComponent({
167
+ name: "XhTreeItemDescription",
172
168
  setup(_, { slots }) {
173
169
  const ctx = useTreeContext();
174
170
  const { node } = useTreeNodeContext();
175
- return () => h("span", ctx.api.value.getNodeDragTriggerProps(node.value), slots.default?.());
171
+ return () => h("span", ctx.api.value.getItemDescriptionProps(node.value), slots.default?.());
176
172
  }
177
173
  });
178
- const XhTreeItemCheckbox = defineComponent({
179
- name: "XhTreeItemCheckbox",
174
+ /** 条目行尾的作者内容(计数、徽标) */
175
+ const XhTreeItemSuffix = defineComponent({
176
+ name: "XhTreeItemSuffix",
180
177
  setup(_, { slots }) {
181
178
  const ctx = useTreeContext();
182
179
  const { node } = useTreeNodeContext();
183
- return () => h("span", ctx.api.value.getItemCheckboxProps(node.value), slots.default?.());
180
+ return () => h("span", ctx.api.value.getItemSuffixProps(node.value), slots.default?.());
184
181
  }
185
182
  });
186
- const XhTreeBranchCheckbox = defineComponent({
187
- name: "XhTreeBranchCheckbox",
183
+ /**
184
+ * 节点拖拽把手。放在节点中,自带 touch-action: none,按下即拖动,不等待激活距离。
185
+ * 对读屏隐藏、也不占 Tab 位;键盘移动由树上的 Alt + 方向键承担。
186
+ * 整个节点拖动的路径照常可用,把手是叠加的第二个入口。
187
+ */
188
+ const XhTreeNodeDragTrigger = defineComponent({
189
+ name: "XhTreeNodeDragTrigger",
188
190
  setup(_, { slots }) {
189
191
  const ctx = useTreeContext();
190
192
  const { node } = useTreeNodeContext();
191
- return () => h("span", ctx.api.value.getBranchCheckboxProps(node.value), slots.default?.());
193
+ return () => h("span", ctx.api.value.getNodeDragTriggerProps(node.value), slots.default?.());
192
194
  }
193
195
  });
194
196
  const XhTreeItemIndicator = defineComponent({
@@ -258,6 +260,6 @@ const XhTreeBranchContent = defineComponent({
258
260
  }
259
261
  });
260
262
  //#endregion
261
- export { XhTreeBranch, XhTreeBranchCheckbox, XhTreeBranchContent, XhTreeBranchControl, XhTreeBranchIndicator, XhTreeBranchText, XhTreeBranchTrigger, XhTreeEmpty, XhTreeItem, XhTreeItemCheckbox, XhTreeItemIndicator, XhTreeItemText, XhTreeLabel, XhTreeLiveRegion, XhTreeLoading, XhTreeNodeDragTrigger, XhTreeRoot, XhTreeTree };
263
+ export { XhTreeBranch, XhTreeBranchContent, XhTreeBranchControl, XhTreeBranchIndicator, XhTreeBranchText, XhTreeBranchTrigger, XhTreeEmpty, XhTreeItem, XhTreeItemDescription, XhTreeItemIndicator, XhTreeItemSuffix, XhTreeItemText, XhTreeLabel, XhTreeLiveRegion, XhTreeLoading, XhTreeNodeDragTrigger, XhTreeRoot, XhTreeTree };
262
264
 
263
265
  //# sourceMappingURL=tree.js.map