@xihan-ui/vue 3.2.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/CHANGELOG.md +71 -0
  2. package/dist/components/command/command.d.ts +3 -3
  3. package/dist/components/date-picker/date-picker.d.ts +4 -1
  4. package/dist/components/date-picker/date-picker.d.ts.map +1 -1
  5. package/dist/components/date-picker/date-picker.js +8 -1
  6. package/dist/components/date-picker/date-picker.js.map +1 -1
  7. package/dist/components/date-range-picker/date-range-picker.d.ts +4 -1
  8. package/dist/components/date-range-picker/date-range-picker.d.ts.map +1 -1
  9. package/dist/components/date-range-picker/date-range-picker.js +8 -1
  10. package/dist/components/date-range-picker/date-range-picker.js.map +1 -1
  11. package/dist/components/dialog/dialog.d.ts +1 -1
  12. package/dist/components/drawer/drawer.d.ts +1 -1
  13. package/dist/components/fieldset/context.d.ts +1 -0
  14. package/dist/components/fieldset/context.d.ts.map +1 -1
  15. package/dist/components/fieldset/context.js +9 -1
  16. package/dist/components/fieldset/context.js.map +1 -1
  17. package/dist/components/fieldset/fieldset.d.ts.map +1 -1
  18. package/dist/components/fieldset/fieldset.js +8 -3
  19. package/dist/components/fieldset/fieldset.js.map +1 -1
  20. package/dist/components/floating-panel/floating-panel.d.ts +2 -2
  21. package/dist/components/markdown-stream/markdown-stream.d.ts +1 -1
  22. package/dist/components/popover/popover.d.ts +1 -1
  23. package/dist/components/reasoning/reasoning.d.ts +1 -1
  24. package/dist/components/sortable/sortable.d.ts +1 -1
  25. package/dist/components/spinner/spinner.d.ts +9 -1
  26. package/dist/components/spinner/spinner.d.ts.map +1 -1
  27. package/dist/components/spinner/spinner.js +2 -0
  28. package/dist/components/spinner/spinner.js.map +1 -1
  29. package/dist/components/table/table.d.ts +2 -2
  30. package/dist/components/table/table.d.ts.map +1 -1
  31. package/dist/components/time-picker/time-picker.d.ts +4 -1
  32. package/dist/components/time-picker/time-picker.d.ts.map +1 -1
  33. package/dist/components/time-picker/time-picker.js +8 -1
  34. package/dist/components/time-picker/time-picker.js.map +1 -1
  35. package/dist/components/tour/tour.d.ts +1 -1
  36. package/dist/config/config.js +1 -0
  37. package/dist/config/config.js.map +1 -1
  38. package/dist/index.d.ts +4 -4
  39. package/dist/index.js +4 -4
  40. package/dist/package.js +1 -1
  41. package/package.json +15 -15
@@ -1 +1 @@
1
- {"version":3,"file":"date-range-picker.js","names":[],"sources":["../../../src/components/date-range-picker/date-range-picker.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// 提供 date range picker 相关实现。\n\nimport type { ControlVariant, Direction, Placement, Size, Tone } from '@xihan-ui/core'\nimport type {\n CalendarCellProps,\n CalendarGranularity,\n CalendarRangePickerApi,\n CalendarView,\n DateFieldSegmentState,\n DatePickerTimeUnit,\n DateRangePickerApi,\n DateRangePickerEndIndex,\n DateRangePickerPreset,\n DateRangePickerPresetState,\n DateRangePickerSchema,\n DateSegmentPlaceholders,\n DateSegmentSet,\n DateSegmentType,\n TimeHourCycle,\n TimeStep,\n TimeUnavailablePredicate,\n} from '@xihan-ui/headless'\nimport type { ComputedRef, PropType, SlotsType, VNode } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { dateRangePickerFieldAt, resolveDateRangePickerFieldIndex, resolveDateRangePickerPanelIndex } from '@xihan-ui/headless'\nimport { computed, defineComponent, h, mergeProps, onUpdated, ref } from 'vue'\nimport { withXhConfig } from '../../config/config'\nimport { XhPortal } from '../../runtime/portal'\nimport { slotPaints } from '../../runtime/slot-content'\nimport { useScrollbars } from '../../runtime/use-scrollbars'\nimport { withHandlers } from '../../runtime/with-handlers'\nimport { useFieldLabelWiring, useFieldStateWiring } from '../field/use-field-control'\nimport { useFormControlProps } from '../form/use-form-control'\nimport {\n provideDateRangePicker,\n provideDateRangePickerCell,\n provideDateRangePickerPanel,\n provideDateRangePickerSegmentGroup,\n useDateRangePickerCellContext,\n useDateRangePickerContext,\n useDateRangePickerPanelContext,\n useDateRangePickerSegmentGroupContext,\n} from './context'\nimport { useDateRangePickerWithRoot } from './use-date-range-picker'\n\ntype DateRangePickerProps = DateRangePickerSchema['props']\n\n/**\n * 部件属于并排的第几张面板:自己写了即按自己写的,未写时跟随所在的日历。\n * 兼收字符串以支持模板中写 index=\"1\"。\n */\nfunction usePanelIndex(props: { index?: number | string }): ComputedRef<number> {\n const panel = useDateRangePickerPanelContext()\n return computed(() => resolveDateRangePickerPanelIndex(props.index, panel.index.value))\n}\n\n/** 默认插槽的载荷:选择器的开合与两端、内嵌范围日历的展示数据、两组段位,以及改写值的句柄。 */\nexport type DateRangePickerRootSlotProps\n = & Pick<\n DateRangePickerApi,\n | 'open'\n | 'value'\n | 'start'\n | 'end'\n | 'periodValue'\n | 'focusedValue'\n | 'canClear'\n | 'setOpen'\n | 'setValue'\n | 'clear'\n >\n & Pick<\n CalendarRangePickerApi,\n | 'visibleMonth'\n | 'panels'\n | 'periods'\n | 'weeks'\n | 'weekDays'\n | 'headingLabel'\n | 'canGoPrev'\n | 'canGoNext'\n >\n & {\n /** 起点组段位。 */\n segments: DateFieldSegmentState[]\n /** 终点组段位。 */\n endSegments: DateFieldSegmentState[]\n }\n\n/** 段位默认插槽的载荷:本段的投影;下标越界时缺席。 */\nexport interface DateRangePickerSegmentSlotProps {\n segment: DateFieldSegmentState | undefined\n}\n\n/** 快捷选项列默认插槽的载荷:逐条的投影,作者据此自行铺设条目。 */\nexport interface DateRangePickerPresetsSlotProps {\n presets: readonly DateRangePickerPresetState[]\n}\n\nexport const XhDateRangePickerRoot = defineComponent({\n name: 'XhDateRangePickerRoot',\n // 有 connect / machine 兜底的 prop:普通类型省略 default,Boolean 显式保留 undefined\n props: {\n /** 区间两端 [start, end];空缺的一端用空串占位。 */\n value: { type: Array as PropType<string[]> },\n defaultValue: { type: Array as PropType<string[]> },\n open: { type: Boolean, default: undefined },\n defaultOpen: Boolean,\n min: { type: String },\n max: { type: String },\n locale: { type: String },\n /** 周首日,0 = 星期日 … 6 = 星期六;不给按 locale。只改日历的表头、行首与 Home / End,月份名与星期名仍按 locale。 */\n firstDayOfWeek: { type: Number },\n timeZone: { type: String },\n /** 选择粒度;两组输入行铺设哪几段也跟随它。 */\n granularity: { type: String as PropType<CalendarGranularity> },\n /** 面板当前所处的层级;给定即受控,默认跟随 granularity。 */\n activeView: { type: String as PropType<CalendarView> },\n /** 输入行铺设哪几段;未提供时按 granularity 推导。 */\n segments: { type: Array as PropType<DateSegmentSet> },\n /** 逐段的占位串,两组段位共用,覆盖内置的 yyyy / mm / dd。 */\n placeholder: { type: Object as PropType<DateSegmentPlaceholders> },\n /** 起点那组段位的整条占位:一段都没填、焦点也不在段上时显示这句文字,焦点进到段上即换回段位。 */\n startPlaceholder: { type: String },\n /** 终点那组段位的整条占位,规则同 startPlaceholder。 */\n endPlaceholder: { type: String },\n /** 并排展示几页;默认 1,起止常跨月时可设为 2。 */\n visibleCount: { type: Number },\n /** 日历恒渲染六行,默认开启。关闭后翻页时浮层高度会随月份变化。 */\n fixedWeeks: { type: Boolean, default: undefined },\n /** 初始聚焦日,同时决定展开时先落在哪一页;未提供时退回起点,再退回今天。 */\n defaultFocusedValue: { type: String },\n /** 快捷选项;提供后浮层中多出一列,日期要在自己的 computed 中计算后再传入。 */\n presets: { type: Array as PropType<DateRangePickerPreset[]> },\n isDateUnavailable: { type: Function as PropType<(value: string, anchor: string | null) => boolean> },\n /** 允许跨过不可用的日期;默认关闭,落下起点后只能选到两侧最近的不可用日为止。 */\n allowsNonContiguousRanges: { type: Boolean, default: undefined },\n disabled: { type: Boolean, default: undefined },\n readOnly: { type: Boolean, default: undefined },\n invalid: { type: Boolean, default: undefined },\n required: { type: Boolean, default: undefined },\n name: { type: String },\n // 终点那份隐藏输入的表单名;不给即终点不参与提交\n endName: { type: String },\n // 两组段位各自的读屏名字与快捷选项列的名字\n translations: { type: Object as PropType<DateRangePickerProps['translations']> },\n variant: { type: String as PropType<ControlVariant> },\n tone: { type: String as PropType<Tone> },\n size: { type: String as PropType<Size> },\n placement: { type: String as PropType<Placement> },\n offset: { type: Number },\n /** 文字方向;浮层迁移到落点后无法继承作者子树上的方向,需要 RTL 时显式提供。 */\n dir: { type: String as PropType<Direction> },\n closeOnSelect: { type: Boolean, default: undefined },\n /** 一体化时间:两端升格为日期时间,起止各多出一组时间列,由确认按钮收口;只在按天挑时生效。 */\n showTime: { type: Boolean, default: undefined },\n timeGranularity: { type: String as PropType<DateRangePickerProps['timeGranularity']> },\n /** showTime 的小时制,默认 24;12 时多出上下午列与上下午段。 */\n hourCycle: { type: Number as PropType<TimeHourCycle> },\n /** showTime 时间列按单位的步进:`{ hour?, minute?, second? }`。 */\n timeStep: { type: Object as PropType<TimeStep> },\n /** showTime 时间列的逐格可选性:时列按 24 小时制给值,第三个参数带这一端已选的时分、日期与端号。 */\n isTimeUnavailable: { type: Function as PropType<TimeUnavailablePredicate> },\n /** 只点日期时起止各补的时刻,例如 ['00:00:00', '23:59:59']。 */\n defaultTime: { type: Array as unknown as PropType<[string, string]> },\n /** 当前编辑哪一端;给定即受控,未给时每次展开按入口重定。 */\n activeIndex: { type: Number as PropType<DateRangePickerEndIndex> },\n },\n // *-change 携带 details 对象,update:* 携带裸值;值恒为 [start, end],只填了终点时是 ['', end]\n emits: {\n 'clear': () => true,\n 'value-change': (_details: PayloadOf<DateRangePickerProps, 'onValueChange'>) => true,\n 'open-change': (_details: PayloadOf<DateRangePickerProps, 'onOpenChange'>) => true,\n 'focused-value-change': (_details: PayloadOf<DateRangePickerProps, 'onFocusedValueChange'>) => true,\n 'active-view-change': (_details: PayloadOf<DateRangePickerProps, 'onActiveViewChange'>) => true,\n 'update:value': (_value: PayloadOf<DateRangePickerProps, 'onValueChange'>['value']) => true,\n 'update:open': (_open: PayloadOf<DateRangePickerProps, 'onOpenChange'>['open']) => true,\n 'update:activeView': (_view: PayloadOf<DateRangePickerProps, 'onActiveViewChange'>['activeView']) => true,\n 'active-index-change': (_details: PayloadOf<DateRangePickerProps, 'onActiveIndexChange'>) => true,\n 'update:activeIndex': (_index: PayloadOf<DateRangePickerProps, 'onActiveIndexChange'>['activeIndex']) => true,\n },\n slots: Object as SlotsType<{\n default?: (props: DateRangePickerRootSlotProps) => VNode[]\n }>,\n setup(props, { slots, emit }) {\n const rootRef = ref<HTMLElement | null>(null)\n const notifyValue: DateRangePickerProps['onValueChange'] = (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n }\n const notifyOpen: DateRangePickerProps['onOpenChange'] = (details) => {\n emit('open-change', details)\n emit('update:open', details.open)\n }\n // 聚焦日只对外播报,不提供 v-model\n const notifyFocus: DateRangePickerProps['onFocusedValueChange'] = details => emit('focused-value-change', details)\n const notifyActiveView: DateRangePickerProps['onActiveViewChange'] = (details) => {\n emit('active-view-change', details)\n emit('update:activeView', details.activeView)\n }\n const notifyActiveIndex: DateRangePickerProps['onActiveIndexChange'] = (details) => {\n emit('active-index-change', details)\n emit('update:activeIndex', details.activeIndex)\n }\n const ctx = useDateRangePickerWithRoot(withHandlers(withXhConfig('date-range-picker', useFormControlProps(props)), { onClear: () => emit('clear') }) as DateRangePickerProps, {\n onValueChange: notifyValue,\n onOpenChange: notifyOpen,\n onFocusedValueChange: notifyFocus,\n onActiveViewChange: notifyActiveView,\n onActiveIndexChange: notifyActiveIndex,\n }, rootRef)\n provideDateRangePicker(ctx)\n // 网格与段位由作者照插槽里的 weeks / segments 自行渲染\n return () => h('div', { ...ctx.api.value.getRootProps() as Record<string, unknown>, ref: rootRef }, slots.default?.({\n open: ctx.api.value.open,\n value: ctx.api.value.value,\n start: ctx.api.value.start,\n end: ctx.api.value.end,\n periodValue: ctx.api.value.periodValue,\n focusedValue: ctx.api.value.focusedValue,\n visibleMonth: ctx.api.value.calendar.visibleMonth,\n panels: ctx.api.value.calendar.panels,\n periods: ctx.api.value.calendar.periods,\n weeks: ctx.api.value.calendar.weeks,\n weekDays: ctx.api.value.calendar.weekDays,\n headingLabel: ctx.api.value.calendar.headingLabel,\n canGoPrev: ctx.api.value.calendar.canGoPrev,\n canGoNext: ctx.api.value.calendar.canGoNext,\n segments: ctx.api.value.field.segments,\n endSegments: ctx.api.value.fieldEnd.segments,\n canClear: ctx.api.value.canClear,\n setOpen: ctx.api.value.setOpen,\n setValue: ctx.api.value.setValue,\n clear: ctx.api.value.clear,\n }))\n },\n})\n\nexport const XhDateRangePickerLabel = defineComponent({\n name: 'XhDateRangePickerLabel',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n // 渲染为 span 而非 label,点击聚焦由连接层接管\n return () => h('span', ctx.api.value.getLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerControl = defineComponent({\n name: 'XhDateRangePickerControl',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('div', {\n ...ctx.api.value.getControlProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.controlRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerSegmentGroup = defineComponent({\n name: 'XhDateRangePickerSegmentGroup',\n props: {\n // 组号:0 起点、1 终点,兼收字符串以支持模板里写 index=\"1\"\n index: { type: [Number, String] as PropType<number | string>, default: 0 },\n },\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n const index = computed<0 | 1>(() => resolveDateRangePickerFieldIndex(props.index))\n // 组内的段位与隐藏输入据此认领起止\n provideDateRangePickerSegmentGroup({ index })\n // role=group 的分段容器,也是换段时的查询边界\n return () => h(\n 'div',\n ctx.api.value.getSegmentGroupProps({ index: index.value }) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\nexport const XhDateRangePickerSegment = defineComponent({\n name: 'XhDateRangePickerSegment',\n props: {\n // 段位下标,兼收字符串以支持模板里写 index=\"0\"\n index: { type: [Number, String] as PropType<number | string> },\n /** 按段名声明该格。段集中没有该段时它收起;与 index 二选一,两个都写时按段名计算。 */\n segment: { type: String as PropType<DateSegmentType> },\n },\n slots: Object as SlotsType<{\n default?: (props: DateRangePickerSegmentSlotProps) => VNode[]\n }>,\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n const group = useDateRangePickerSegmentGroupContext()\n return () => {\n const field = dateRangePickerFieldAt(ctx.api.value, group.index.value)\n // 落点由连接层算:按下标还是按段名是同一条路,适配器这边不重写一份\n const declared = props.segment != null\n ? { segment: props.segment }\n : { index: Math.trunc(Number(props.index)) }\n const state = field.segmentOf(declared)\n // 有插槽用插槽,否则渲染连接层算好的段位文本\n return h(\n 'div',\n field.getSegmentProps(declared) as Record<string, unknown>,\n slots.default ? slots.default({ segment: state }) : state?.text,\n )\n }\n },\n})\n\nexport const XhDateRangePickerRangeSeparator = defineComponent({\n name: 'XhDateRangePickerRangeSeparator',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h(\n 'span',\n ctx.api.value.getRangeSeparatorProps() as Record<string, unknown>,\n slots.default?.() ?? '-',\n )\n },\n})\n\nexport const XhDateRangePickerClearTrigger = defineComponent({\n name: 'XhDateRangePickerClearTrigger',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('button', ctx.api.value.getClearTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerTrigger = defineComponent({\n name: 'XhDateRangePickerTrigger',\n setup(_, { slots }) {\n // 字段的说明与校验状态要落在真控件上,不能停在封装根的 div 上\n const fieldWiring = useFieldStateWiring()\n // 字段的标签也得并进名字链:控件自带的那条指的是它自己那个没渲染的 label 部件\n const fieldLabel = useFieldLabelWiring()\n const ctx = useDateRangePickerContext()\n return () => h('button', fieldLabel.value({ ...fieldWiring.value, ...ctx.api.value.getTriggerProps() as Record<string, unknown> }), slots.default?.())\n },\n})\n\nexport const XhDateRangePickerPositioner = defineComponent({\n name: 'XhDateRangePickerPositioner',\n props: {\n /** 本实例的 Portal 容器;优先于应用级配置。 */\n container: { type: Object as PropType<Element> },\n },\n // 根是 Teleport,Vue 不会把直通属性合上去,作者写的 class 与 style 得自己接住落到 positioner 上\n inheritAttrs: false,\n setup(props, { slots, attrs }) {\n const ctx = useDateRangePickerContext()\n // 浮层面板的自绘条:与 content 同级、绝对定位不占布局,壳是这层已经 fixed 的 positioner;\n // 面板皮肤两轴都滚,条子走浮层 4px 档\n const bars = useScrollbars({\n scrollable: () => ctx.contentRef.value,\n scope: ctx.services.root.scope,\n axes: ['vertical', 'horizontal'],\n props: () => ({ dir: (ctx.api.value.getPositionerProps() as { dir?: Direction }).dir, size: 'sm' }),\n })\n // 搬到 portal 落点:留在原地的话,宿主祖先只要建了层叠上下文就能盖住浮层\n return () => {\n const target = props.container ?? ctx.portalTarget.value\n return h(XhPortal, {\n to: target,\n source: ctx.controlRef,\n present: ctx.visible.value,\n // SSR 与客户端首帧都还没有真实 root:保持同一原地结构,绑定 Scope 后再搬运。\n disabled: props.container == null && typeof target === 'string',\n }, () => [\n h('div', {\n ...mergeProps(ctx.api.value.getPositionerProps() as Record<string, unknown>, attrs),\n ref: (el: unknown) => { ctx.positionerRef.value = el as HTMLElement },\n }, [...(slots.default?.() ?? []), ...bars.render()]),\n ])\n }\n },\n})\n\nexport const XhDateRangePickerContent = defineComponent({\n name: 'XhDateRangePickerContent',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('div', {\n ...ctx.api.value.getContentProps() as Record<string, unknown>,\n // 收起跟着退场闸门走:皮肤刻意没给 content 补 [hidden]{display:none}(补了退场\n // 就一帧都播不出来),所以真正的收起落成内联 display——节点始终留在原地\n style: ctx.visible.value ? undefined : { display: 'none' },\n ref: (el: unknown) => { ctx.contentRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\n// 以下是内嵌范围日历的角色节点,DOM 上带 data-scope=\"calendar-range-picker\",行为取自本组件持有的日历机器\n\nexport const XhDateRangePickerCalendar = defineComponent({\n name: 'XhDateRangePickerCalendar',\n props: {\n /** 并排的第几张面板,默认 0。写在这里,面板内的标题、网格与格子就不必各写一遍。 */\n index: { type: [Number, String], default: 0 },\n },\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n provideDateRangePickerPanel({ index: usePanelIndex(props) })\n // 内嵌日历的挂载点,同时是日历的根节点\n return () => h('div', ctx.api.value.getCalendarProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerPresetGroup = defineComponent({\n name: 'XhDateRangePickerPresetGroup',\n slots: Object as SlotsType<{\n /** 自行铺设条目;未写时按 presets 数据自动铺设,两者产出的 DOM 一致。 */\n default?: (props: DateRangePickerPresetsSlotProps) => VNode[]\n }>,\n // 根是片段(选项列节点 + 贴层的条子),Vue 不会把直通属性合上去:作者写的 class、style 与 data-* 自己接住落到列节点上\n inheritAttrs: false,\n setup(_, { slots, attrs }) {\n const ctx = useDateRangePickerContext()\n const presetGroupRef = ref<HTMLElement | null>(null)\n // 快捷选项列自己滚(窄视口横排横滚、宽视口竖排竖滚):两轴的条子贴在它的盒子上、紧跟在它后面\n const bars = useScrollbars({\n scrollable: () => presetGroupRef.value,\n anchor: 'layer',\n axes: ['vertical', 'horizontal'],\n props: () => ({ dir: (ctx.api.value.getPositionerProps() as { dir?: Direction }).dir, size: 'sm' }),\n })\n onUpdated(() => bars.measure())\n return () => {\n const api = ctx.api.value\n const authored = slots.default?.({ presets: api.presets })\n return [\n h(\n 'div',\n {\n ...mergeProps(api.getPresetGroupProps() as Record<string, unknown>, attrs),\n ref: (el: unknown) => { presetGroupRef.value = el as HTMLElement },\n },\n slotPaints(authored)\n ? authored\n : api.presets.map(preset => h(\n 'div',\n { ...api.getPresetProps({ value: preset.value }) as Record<string, unknown>, key: preset.value },\n preset.label,\n )),\n ),\n ...bars.render(),\n ]\n }\n },\n})\n\nexport const XhDateRangePickerPreset = defineComponent({\n name: 'XhDateRangePickerPreset',\n props: {\n /** 该条目的身份,与 presets 数据中的 value 逐字对应。 */\n value: { type: String, required: true },\n },\n slots: Object as SlotsType<{\n /** 条目内容;未写时使用数据中的 label。 */\n default?: () => VNode[]\n }>,\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => {\n const api = ctx.api.value\n const authored = slots.default?.()\n return h(\n 'div',\n api.getPresetProps({ value: props.value }) as Record<string, unknown>,\n slotPaints(authored) ? authored : api.presets.find(p => p.value === props.value)?.label,\n )\n }\n },\n})\n\n/** 一列时间选项连同贴在它盒子上的竖条:每列一台滚动条机器,列数随精度与小时制变时组件实例跟着增减。 */\nconst XhDateRangePickerTimeColumnHost = defineComponent({\n name: 'XhDateRangePickerTimeColumnHost',\n props: {\n index: { type: Number as PropType<DateRangePickerEndIndex>, required: true },\n unit: { type: String as PropType<DatePickerTimeUnit>, required: true },\n },\n setup(props) {\n const ctx = useDateRangePickerContext()\n const timeColumnRef = ref<HTMLElement | null>(null)\n // 定高的时间列自己竖滚:条子贴在本列的盒子上、紧跟在它后面(浮层 4px 档)\n const bars = useScrollbars({\n scrollable: () => timeColumnRef.value,\n anchor: 'layer',\n props: () => ({ dir: (ctx.api.value.getPositionerProps() as { dir?: Direction }).dir, size: 'sm' }),\n })\n onUpdated(() => bars.measure())\n return () => {\n const api = ctx.api.value\n const column = api.timeColumnGroups[props.index].columns.find(item => item.unit === props.unit)\n if (!column)\n return null\n return [\n h(\n 'div',\n {\n ...api.getTimeColumnProps({ index: props.index, unit: column.unit }) as Record<string, unknown>,\n ref: (el: unknown) => { timeColumnRef.value = el as HTMLElement },\n },\n column.options.map(option =>\n h(\n 'div',\n { ...api.getTimeItemProps({ index: props.index, unit: column.unit, value: option }) as Record<string, unknown>, key: option },\n api.getTimeItemText({ unit: column.unit, value: option }),\n ),\n ),\n ),\n ...bars.render(),\n ]\n }\n },\n})\n\nexport const XhDateRangePickerTimePanel = defineComponent({\n name: 'XhDateRangePickerTimePanel',\n setup() {\n const ctx = useDateRangePickerContext()\n // 起止两组时间列整组自动铺:每组一个外壳、一行小标题与时/分[/秒][/上下午]各一列;没开 showTime 时整组带 hidden\n return () => ctx.api.value.timeColumnGroups.map(group =>\n h('div', { ...ctx.api.value.getColumnGroupProps({ index: group.index }) as Record<string, unknown>, key: group.index }, [\n h('div', ctx.api.value.getColumnGroupLabelProps({ index: group.index }) as Record<string, unknown>, group.label),\n ...group.columns.map(column =>\n h(XhDateRangePickerTimeColumnHost, { index: group.index, unit: column.unit, key: column.unit }),\n ),\n ]),\n )\n },\n})\n\nexport const XhDateRangePickerConfirmTrigger = defineComponent({\n name: 'XhDateRangePickerConfirmTrigger',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('button', ctx.api.value.getConfirmTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerHeader = defineComponent({\n name: 'XhDateRangePickerHeader',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('div', ctx.api.value.calendar.getHeaderProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerPrevYearTrigger = defineComponent({\n name: 'XhDateRangePickerPrevYearTrigger',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('button', ctx.api.value.calendar.getPrevYearTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerPrevTrigger = defineComponent({\n name: 'XhDateRangePickerPrevTrigger',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('button', ctx.api.value.calendar.getPrevTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerNextTrigger = defineComponent({\n name: 'XhDateRangePickerNextTrigger',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('button', ctx.api.value.calendar.getNextTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerNextYearTrigger = defineComponent({\n name: 'XhDateRangePickerNextYearTrigger',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('button', ctx.api.value.calendar.getNextYearTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerHeading = defineComponent({\n name: 'XhDateRangePickerHeading',\n props: {\n /** 属于第几个面板;未写时跟随所在的日历。 */\n index: { type: [Number, String] },\n },\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n const index = usePanelIndex(props)\n // 有插槽用插槽,否则渲染本面板的标题\n return () => h(\n 'div',\n ctx.api.value.calendar.getHeadingProps({ index: index.value }) as Record<string, unknown>,\n slots.default?.() ?? (ctx.api.value.calendar.panels[index.value]?.headingLabel ?? ctx.api.value.calendar.headingLabel),\n )\n },\n})\n\nexport const XhDateRangePickerHeadingYearTrigger = defineComponent({\n name: 'XhDateRangePickerHeadingYearTrigger',\n props: {\n /** 属于第几个面板;未写时跟随所在的日历。 */\n index: { type: [Number, String] },\n },\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n const index = usePanelIndex(props)\n // 有插槽用插槽,否则渲染标题里年那一截;年视图下它是整个十年跨度\n return () => h(\n 'button',\n ctx.api.value.calendar.getHeadingYearTriggerProps({ index: index.value }) as Record<string, unknown>,\n slots.default?.() ?? ctx.api.value.calendar.panels[index.value]?.headingYear,\n )\n },\n})\n\nexport const XhDateRangePickerHeadingMonthTrigger = defineComponent({\n name: 'XhDateRangePickerHeadingMonthTrigger',\n props: {\n /** 属于第几个面板;未写时跟随所在的日历。 */\n index: { type: [Number, String] },\n },\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n const index = usePanelIndex(props)\n return () => h(\n 'button',\n ctx.api.value.calendar.getHeadingMonthTriggerProps({ index: index.value }) as Record<string, unknown>,\n slots.default?.() ?? ctx.api.value.calendar.panels[index.value]?.headingMonth,\n )\n },\n})\n\nexport const XhDateRangePickerGrid = defineComponent({\n name: 'XhDateRangePickerGrid',\n props: {\n /** 属于第几个面板;未写时跟随所在的日历。 */\n index: { type: [Number, String] },\n },\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n const index = usePanelIndex(props)\n return () => h(\n 'div',\n {\n ...ctx.api.value.calendar.getGridProps({ index: index.value }) as Record<string, unknown>,\n // 键盘在首个网格上收口;其余面板只渲染,方向键仍能跨面板走(落点按值现查)\n ref: index.value === 0 ? ctx.gridRef : undefined,\n },\n slots.default?.(),\n )\n },\n})\n\nexport const XhDateRangePickerGridHead = defineComponent({\n name: 'XhDateRangePickerGridHead',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('div', ctx.api.value.calendar.getGridHeadProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerGridBody = defineComponent({\n name: 'XhDateRangePickerGridBody',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('div', ctx.api.value.calendar.getGridBodyProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n// 表头行与日期行共用同一个 role=row\nexport const XhDateRangePickerWeekRow = defineComponent({\n name: 'XhDateRangePickerWeekRow',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('div', ctx.api.value.calendar.getWeekRowProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerWeekNumber = defineComponent({\n name: 'XhDateRangePickerWeekNumber',\n props: {\n /** 该行行首那一天的 ISO 串。 */\n value: { type: String, required: true },\n },\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n // 有插槽用插槽,否则显示这一行的周序号\n return () => h(\n 'span',\n ctx.api.value.calendar.getWeekNumberProps({ value: props.value }) as Record<string, unknown>,\n slots.default?.() ?? ctx.api.value.calendar.getWeekNumberText({ value: props.value }),\n )\n },\n})\n\nexport const XhDateRangePickerWeekDay = defineComponent({\n name: 'XhDateRangePickerWeekDay',\n props: {\n // 列序 0-6,兼收字符串\n value: { type: [Number, String] as PropType<number | string>, required: true },\n },\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n const index = computed(() => Number(props.value))\n return () => h(\n 'span',\n ctx.api.value.calendar.getWeekDayProps({ value: index.value }) as Record<string, unknown>,\n slots.default?.() ?? ctx.api.value.calendar.weekDays[index.value]?.label,\n )\n },\n})\n\nexport const XhDateRangePickerCell = defineComponent({\n name: 'XhDateRangePickerCell',\n props: {\n /** ISO 日期串。 */\n value: { type: String, required: true },\n /**\n * 属于第几个面板;未写时跟随所在的日历。同一天会同时出现在两个面板中\n * (8 月末的几天也铺在 9 月的首行),是否为本月只有连同面板一起看才能判定。\n */\n index: { type: [Number, String] },\n },\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n const index = usePanelIndex(props)\n const cell = computed<CalendarCellProps>(() => ({ value: props.value, index: index.value }))\n provideDateRangePickerCell({ cell })\n // 不上报格子卸载,翻月后由日历机器按聚焦日重新落点\n return () => h('div', ctx.api.value.calendar.getCellProps(cell.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerCellTrigger = defineComponent({\n name: 'XhDateRangePickerCellTrigger',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n const { cell } = useDateRangePickerCellContext()\n return () => h(\n 'div',\n ctx.api.value.calendar.getCellTriggerProps(cell.value) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\nexport const XhDateRangePickerHiddenInput = defineComponent({\n name: 'XhDateRangePickerHiddenInput',\n props: {\n // 写在分段容器外面时用它指明属于哪一端;写在容器里面不必给,跟着容器走\n index: { type: [Number, String] as PropType<number | string> },\n },\n setup(props) {\n const ctx = useDateRangePickerContext()\n const group = useDateRangePickerSegmentGroupContext()\n return () => {\n const index = props.index === undefined ? group.index.value : resolveDateRangePickerFieldIndex(props.index)\n return h('input', dateRangePickerFieldAt(ctx.api.value, index).getHiddenInputProps() as Record<string, unknown>)\n }\n },\n})\n"],"mappings":"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"}
1
+ {"version":3,"file":"date-range-picker.js","names":[],"sources":["../../../src/components/date-range-picker/date-range-picker.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// 提供 date range picker 相关实现。\n\nimport type { ControlVariant, Direction, Placement, Size, Tone } from '@xihan-ui/core'\nimport type {\n CalendarCellProps,\n CalendarGranularity,\n CalendarRangePickerApi,\n CalendarView,\n DateFieldSegmentState,\n DatePickerTimeUnit,\n DateRangePickerApi,\n DateRangePickerEndIndex,\n DateRangePickerPreset,\n DateRangePickerPresetState,\n DateRangePickerSchema,\n DateSegmentPlaceholders,\n DateSegmentSet,\n DateSegmentType,\n TimeHourCycle,\n TimeStep,\n TimeUnavailablePredicate,\n} from '@xihan-ui/headless'\nimport type { ComputedRef, PropType, SlotsType, VNode } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { dateRangePickerFieldAt, resolveDateRangePickerFieldIndex, resolveDateRangePickerPanelIndex } from '@xihan-ui/headless'\nimport { computed, defineComponent, h, mergeProps, onUpdated, ref } from 'vue'\nimport { withXhConfig } from '../../config/config'\nimport { XhPortal } from '../../runtime/portal'\nimport { slotPaints } from '../../runtime/slot-content'\nimport { useScrollbars } from '../../runtime/use-scrollbars'\nimport { withHandlers } from '../../runtime/with-handlers'\nimport { useFieldLabelWiring, useFieldStateWiring } from '../field/use-field-control'\nimport { useFormControlProps } from '../form/use-form-control'\nimport {\n provideDateRangePicker,\n provideDateRangePickerCell,\n provideDateRangePickerPanel,\n provideDateRangePickerSegmentGroup,\n useDateRangePickerCellContext,\n useDateRangePickerContext,\n useDateRangePickerPanelContext,\n useDateRangePickerSegmentGroupContext,\n} from './context'\nimport { useDateRangePickerWithRoot } from './use-date-range-picker'\n\ntype DateRangePickerProps = DateRangePickerSchema['props']\n\n/**\n * 部件属于并排的第几张面板:自己写了即按自己写的,未写时跟随所在的日历。\n * 兼收字符串以支持模板中写 index=\"1\"。\n */\nfunction usePanelIndex(props: { index?: number | string }): ComputedRef<number> {\n const panel = useDateRangePickerPanelContext()\n return computed(() => resolveDateRangePickerPanelIndex(props.index, panel.index.value))\n}\n\n/** 默认插槽的载荷:选择器的开合与两端、内嵌范围日历的展示数据、两组段位,以及改写值的句柄。 */\nexport type DateRangePickerRootSlotProps\n = & Pick<\n DateRangePickerApi,\n | 'open'\n | 'value'\n | 'start'\n | 'end'\n | 'periodValue'\n | 'focusedValue'\n | 'canClear'\n | 'setOpen'\n | 'setValue'\n | 'clear'\n >\n & Pick<\n CalendarRangePickerApi,\n | 'visibleMonth'\n | 'panels'\n | 'periods'\n | 'weeks'\n | 'weekDays'\n | 'headingLabel'\n | 'canGoPrev'\n | 'canGoNext'\n >\n & {\n /** 起点组段位。 */\n segments: DateFieldSegmentState[]\n /** 终点组段位。 */\n endSegments: DateFieldSegmentState[]\n }\n\n/** 段位默认插槽的载荷:本段的投影;下标越界时缺席。 */\nexport interface DateRangePickerSegmentSlotProps {\n segment: DateFieldSegmentState | undefined\n}\n\n/** 快捷选项列默认插槽的载荷:逐条的投影,作者据此自行铺设条目。 */\nexport interface DateRangePickerPresetsSlotProps {\n presets: readonly DateRangePickerPresetState[]\n}\n\nexport const XhDateRangePickerRoot = defineComponent({\n name: 'XhDateRangePickerRoot',\n // 有 connect / machine 兜底的 prop:普通类型省略 default,Boolean 显式保留 undefined\n props: {\n /** 区间两端 [start, end];空缺的一端用空串占位。 */\n value: { type: Array as PropType<string[]> },\n defaultValue: { type: Array as PropType<string[]> },\n open: { type: Boolean, default: undefined },\n defaultOpen: Boolean,\n min: { type: String },\n max: { type: String },\n locale: { type: String },\n /** 周首日,0 = 星期日 … 6 = 星期六;不给按 locale。只改日历的表头、行首与 Home / End,月份名与星期名仍按 locale。 */\n firstDayOfWeek: { type: Number },\n timeZone: { type: String },\n /** 选择粒度;两组输入行铺设哪几段也跟随它。 */\n granularity: { type: String as PropType<CalendarGranularity> },\n /** 面板当前所处的层级;给定即受控,默认跟随 granularity。 */\n activeView: { type: String as PropType<CalendarView> },\n /** 输入行铺设哪几段;未提供时按 granularity 推导。 */\n segments: { type: Array as PropType<DateSegmentSet> },\n /** 逐段的占位串,两组段位共用,覆盖内置的 yyyy / mm / dd。 */\n placeholder: { type: Object as PropType<DateSegmentPlaceholders> },\n /** 起点那组段位的整条占位:一段都没填、焦点也不在段上时显示这句文字,焦点进到段上即换回段位。 */\n startPlaceholder: { type: String },\n /** 终点那组段位的整条占位,规则同 startPlaceholder。 */\n endPlaceholder: { type: String },\n /** 并排展示几页;默认 1,起止常跨月时可设为 2。 */\n visibleCount: { type: Number },\n /** 日历恒渲染六行,默认开启。关闭后翻页时浮层高度会随月份变化。 */\n fixedWeeks: { type: Boolean, default: undefined },\n /** 初始聚焦日,同时决定展开时先落在哪一页;未提供时退回起点,再退回今天。 */\n defaultFocusedValue: { type: String },\n /** 快捷选项;提供后浮层中多出一列,日期要在自己的 computed 中计算后再传入。 */\n presets: { type: Array as PropType<DateRangePickerPreset[]> },\n isDateUnavailable: { type: Function as PropType<(value: string, anchor: string | null) => boolean> },\n /** 允许跨过不可用的日期;默认关闭,落下起点后只能选到两侧最近的不可用日为止。 */\n allowsNonContiguousRanges: { type: Boolean, default: undefined },\n disabled: { type: Boolean, default: undefined },\n readOnly: { type: Boolean, default: undefined },\n invalid: { type: Boolean, default: undefined },\n required: { type: Boolean, default: undefined },\n name: { type: String },\n // 终点那份隐藏输入的表单名;不给即终点不参与提交\n endName: { type: String },\n // 两组段位各自的读屏名字与快捷选项列的名字\n translations: { type: Object as PropType<DateRangePickerProps['translations']> },\n variant: { type: String as PropType<ControlVariant> },\n tone: { type: String as PropType<Tone> },\n size: { type: String as PropType<Size> },\n placement: { type: String as PropType<Placement> },\n offset: { type: Number },\n /** 文字方向;浮层迁移到落点后无法继承作者子树上的方向,需要 RTL 时显式提供。 */\n dir: { type: String as PropType<Direction> },\n closeOnSelect: { type: Boolean, default: undefined },\n /** 一体化时间:两端升格为日期时间,起止各多出一组时间列,由确认按钮收口;只在按天挑时生效。 */\n showTime: { type: Boolean, default: undefined },\n timeGranularity: { type: String as PropType<DateRangePickerProps['timeGranularity']> },\n /** showTime 的小时制,默认 24;12 时多出上下午列与上下午段。 */\n hourCycle: { type: Number as PropType<TimeHourCycle> },\n /** showTime 时间列按单位的步进:`{ hour?, minute?, second? }`。 */\n timeStep: { type: Object as PropType<TimeStep> },\n /** showTime 时间列的逐格可选性:时列按 24 小时制给值,第三个参数带这一端已选的时分、日期与端号。 */\n isTimeUnavailable: { type: Function as PropType<TimeUnavailablePredicate> },\n /** 只点日期时起止各补的时刻,例如 ['00:00:00', '23:59:59']。 */\n defaultTime: { type: Array as unknown as PropType<[string, string]> },\n /** 当前编辑哪一端;给定即受控,未给时每次展开按入口重定。 */\n activeIndex: { type: Number as PropType<DateRangePickerEndIndex> },\n },\n // *-change 携带 details 对象,update:* 携带裸值;值恒为 [start, end],只填了终点时是 ['', end]\n emits: {\n 'clear': () => true,\n 'value-change': (_details: PayloadOf<DateRangePickerProps, 'onValueChange'>) => true,\n 'open-change': (_details: PayloadOf<DateRangePickerProps, 'onOpenChange'>) => true,\n 'focused-value-change': (_details: PayloadOf<DateRangePickerProps, 'onFocusedValueChange'>) => true,\n 'active-view-change': (_details: PayloadOf<DateRangePickerProps, 'onActiveViewChange'>) => true,\n 'update:value': (_value: PayloadOf<DateRangePickerProps, 'onValueChange'>['value']) => true,\n 'update:open': (_open: PayloadOf<DateRangePickerProps, 'onOpenChange'>['open']) => true,\n 'update:activeView': (_view: PayloadOf<DateRangePickerProps, 'onActiveViewChange'>['activeView']) => true,\n 'active-index-change': (_details: PayloadOf<DateRangePickerProps, 'onActiveIndexChange'>) => true,\n 'update:activeIndex': (_index: PayloadOf<DateRangePickerProps, 'onActiveIndexChange'>['activeIndex']) => true,\n },\n slots: Object as SlotsType<{\n default?: (props: DateRangePickerRootSlotProps) => VNode[]\n }>,\n setup(props, { slots, emit }) {\n const rootRef = ref<HTMLElement | null>(null)\n const notifyValue: DateRangePickerProps['onValueChange'] = (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n }\n const notifyOpen: DateRangePickerProps['onOpenChange'] = (details) => {\n emit('open-change', details)\n emit('update:open', details.open)\n }\n // 聚焦日只对外播报,不提供 v-model\n const notifyFocus: DateRangePickerProps['onFocusedValueChange'] = details => emit('focused-value-change', details)\n const notifyActiveView: DateRangePickerProps['onActiveViewChange'] = (details) => {\n emit('active-view-change', details)\n emit('update:activeView', details.activeView)\n }\n const notifyActiveIndex: DateRangePickerProps['onActiveIndexChange'] = (details) => {\n emit('active-index-change', details)\n emit('update:activeIndex', details.activeIndex)\n }\n const ctx = useDateRangePickerWithRoot(withHandlers(withXhConfig('date-range-picker', useFormControlProps(props)), { onClear: () => emit('clear') }) as DateRangePickerProps, {\n onValueChange: notifyValue,\n onOpenChange: notifyOpen,\n onFocusedValueChange: notifyFocus,\n onActiveViewChange: notifyActiveView,\n onActiveIndexChange: notifyActiveIndex,\n }, rootRef)\n provideDateRangePicker(ctx)\n // 网格与段位由作者照插槽里的 weeks / segments 自行渲染\n return () => h('div', { ...ctx.api.value.getRootProps() as Record<string, unknown>, ref: rootRef }, slots.default?.({\n open: ctx.api.value.open,\n value: ctx.api.value.value,\n start: ctx.api.value.start,\n end: ctx.api.value.end,\n periodValue: ctx.api.value.periodValue,\n focusedValue: ctx.api.value.focusedValue,\n visibleMonth: ctx.api.value.calendar.visibleMonth,\n panels: ctx.api.value.calendar.panels,\n periods: ctx.api.value.calendar.periods,\n weeks: ctx.api.value.calendar.weeks,\n weekDays: ctx.api.value.calendar.weekDays,\n headingLabel: ctx.api.value.calendar.headingLabel,\n canGoPrev: ctx.api.value.calendar.canGoPrev,\n canGoNext: ctx.api.value.calendar.canGoNext,\n segments: ctx.api.value.field.segments,\n endSegments: ctx.api.value.fieldEnd.segments,\n canClear: ctx.api.value.canClear,\n setOpen: ctx.api.value.setOpen,\n setValue: ctx.api.value.setValue,\n clear: ctx.api.value.clear,\n }))\n },\n})\n\nexport const XhDateRangePickerLabel = defineComponent({\n name: 'XhDateRangePickerLabel',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n // 渲染为 span 而非 label,点击聚焦由连接层接管\n return () => h('span', ctx.api.value.getLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerControl = defineComponent({\n name: 'XhDateRangePickerControl',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('div', {\n ...ctx.api.value.getControlProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.controlRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerSegmentGroup = defineComponent({\n name: 'XhDateRangePickerSegmentGroup',\n props: {\n // 组号:0 起点、1 终点,兼收字符串以支持模板里写 index=\"1\"\n index: { type: [Number, String] as PropType<number | string>, default: 0 },\n },\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n const index = computed<0 | 1>(() => resolveDateRangePickerFieldIndex(props.index))\n // 组内的段位与隐藏输入据此认领起止\n provideDateRangePickerSegmentGroup({ index })\n // role=group 的分段容器,也是换段时的查询边界\n return () => h(\n 'div',\n ctx.api.value.getSegmentGroupProps({ index: index.value }) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\nexport const XhDateRangePickerSegment = defineComponent({\n name: 'XhDateRangePickerSegment',\n props: {\n // 段位下标,兼收字符串以支持模板里写 index=\"0\"\n index: { type: [Number, String] as PropType<number | string> },\n /** 按段名声明该格。段集中没有该段时它收起;与 index 二选一,两个都写时按段名计算。 */\n segment: { type: String as PropType<DateSegmentType> },\n },\n slots: Object as SlotsType<{\n default?: (props: DateRangePickerSegmentSlotProps) => VNode[]\n }>,\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n const group = useDateRangePickerSegmentGroupContext()\n return () => {\n const field = dateRangePickerFieldAt(ctx.api.value, group.index.value)\n // 落点由连接层算:按下标还是按段名是同一条路,适配器这边不重写一份\n const declared = props.segment != null\n ? { segment: props.segment }\n : { index: Math.trunc(Number(props.index)) }\n const state = field.segmentOf(declared)\n // 有插槽用插槽,否则渲染连接层算好的段位文本\n return h(\n 'div',\n field.getSegmentProps(declared) as Record<string, unknown>,\n slots.default ? slots.default({ segment: state }) : state?.text,\n )\n }\n },\n})\n\nexport const XhDateRangePickerRangeSeparator = defineComponent({\n name: 'XhDateRangePickerRangeSeparator',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h(\n 'span',\n ctx.api.value.getRangeSeparatorProps() as Record<string, unknown>,\n slots.default?.() ?? '-',\n )\n },\n})\n\nexport const XhDateRangePickerClearTrigger = defineComponent({\n name: 'XhDateRangePickerClearTrigger',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('button', ctx.api.value.getClearTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerTrigger = defineComponent({\n name: 'XhDateRangePickerTrigger',\n setup(_, { slots }) {\n // 字段的说明与校验状态要落在真控件上,不能停在封装根的 div 上\n const fieldWiring = useFieldStateWiring()\n // 字段的标签也得并进名字链:控件自带的那条指的是它自己那个没渲染的 label 部件\n const fieldLabel = useFieldLabelWiring()\n const ctx = useDateRangePickerContext()\n return () => h('button', fieldLabel.value({ ...fieldWiring.value, ...ctx.api.value.getTriggerProps() as Record<string, unknown> }), slots.default?.())\n },\n})\n\nexport const XhDateRangePickerPositioner = defineComponent({\n name: 'XhDateRangePickerPositioner',\n props: {\n /** 本实例的 Portal 容器;优先于应用级配置。 */\n container: { type: Object as PropType<Element> },\n },\n // 根是 Teleport,Vue 不会把直通属性合上去,作者写的 class 与 style 得自己接住落到 positioner 上\n inheritAttrs: false,\n setup(props, { slots, attrs }) {\n const ctx = useDateRangePickerContext()\n // 浮层面板的自绘条:与 content 同级、绝对定位不占布局,壳是这层已经 fixed 的 positioner;\n // 面板皮肤两轴都滚,条子走浮层 4px 档\n const bars = useScrollbars({\n scrollable: () => ctx.contentRef.value,\n scope: ctx.services.root.scope,\n axes: ['vertical', 'horizontal'],\n props: () => ({ dir: (ctx.api.value.getPositionerProps() as { dir?: Direction }).dir, size: 'sm' }),\n })\n // 搬到 portal 落点:留在原地的话,宿主祖先只要建了层叠上下文就能盖住浮层\n return () => {\n const target = props.container ?? ctx.portalTarget.value\n return h(XhPortal, {\n to: target,\n source: ctx.controlRef,\n present: ctx.visible.value,\n // SSR 与客户端首帧都还没有真实 root:保持同一原地结构,绑定 Scope 后再搬运。\n disabled: props.container == null && typeof target === 'string',\n }, () => [\n h('div', {\n ...mergeProps(ctx.api.value.getPositionerProps() as Record<string, unknown>, attrs),\n ref: (el: unknown) => { ctx.positionerRef.value = el as HTMLElement },\n }, [...(slots.default?.() ?? []), ...bars.render()]),\n ])\n }\n },\n})\n\nexport const XhDateRangePickerContent = defineComponent({\n name: 'XhDateRangePickerContent',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('div', {\n ...ctx.api.value.getContentProps() as Record<string, unknown>,\n // 收起跟着退场闸门走:皮肤刻意没给 content 补 [hidden]{display:none}(补了退场\n // 就一帧都播不出来),所以真正的收起落成内联 display——节点始终留在原地\n style: ctx.visible.value ? undefined : { display: 'none' },\n ref: (el: unknown) => { ctx.contentRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\n// 以下是内嵌范围日历的角色节点,DOM 上带 data-scope=\"calendar-range-picker\",行为取自本组件持有的日历机器\n\nexport const XhDateRangePickerCalendar = defineComponent({\n name: 'XhDateRangePickerCalendar',\n props: {\n /** 并排的第几张面板,默认 0。写在这里,面板内的标题、网格与格子就不必各写一遍。 */\n index: { type: [Number, String], default: 0 },\n },\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n provideDateRangePickerPanel({ index: usePanelIndex(props) })\n // 内嵌日历的挂载点,同时是日历的根节点\n return () => h('div', ctx.api.value.getCalendarProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerPresetGroup = defineComponent({\n name: 'XhDateRangePickerPresetGroup',\n slots: Object as SlotsType<{\n /** 自行铺设条目;未写时按 presets 数据自动铺设,两者产出的 DOM 一致。 */\n default?: (props: DateRangePickerPresetsSlotProps) => VNode[]\n }>,\n // 根是片段(选项列节点 + 贴层的条子),Vue 不会把直通属性合上去:作者写的 class、style 与 data-* 自己接住落到列节点上\n inheritAttrs: false,\n setup(_, { slots, attrs }) {\n const ctx = useDateRangePickerContext()\n const presetGroupRef = ref<HTMLElement | null>(null)\n // 快捷选项列自己滚(窄视口横排横滚、宽视口竖排竖滚):两轴的条子贴在它的盒子上、紧跟在它后面\n const bars = useScrollbars({\n scrollable: () => presetGroupRef.value,\n anchor: 'layer',\n axes: ['vertical', 'horizontal'],\n props: () => ({ dir: (ctx.api.value.getPositionerProps() as { dir?: Direction }).dir, size: 'sm' }),\n })\n onUpdated(() => bars.measure())\n return () => {\n const api = ctx.api.value\n const authored = slots.default?.({ presets: api.presets })\n return [\n h(\n 'div',\n {\n ...mergeProps(api.getPresetGroupProps() as Record<string, unknown>, attrs),\n ref: (el: unknown) => { presetGroupRef.value = el as HTMLElement },\n },\n slotPaints(authored)\n ? authored\n : api.presets.map(preset => h(\n 'div',\n { ...api.getPresetProps({ value: preset.value }) as Record<string, unknown>, key: preset.value },\n preset.label,\n )),\n ),\n ...bars.render(),\n ]\n }\n },\n})\n\nexport const XhDateRangePickerPreset = defineComponent({\n name: 'XhDateRangePickerPreset',\n props: {\n /** 该条目的身份,与 presets 数据中的 value 逐字对应。 */\n value: { type: String, required: true },\n },\n slots: Object as SlotsType<{\n /** 条目内容;未写时使用数据中的 label。 */\n default?: () => VNode[]\n }>,\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => {\n const api = ctx.api.value\n const authored = slots.default?.()\n return h(\n 'div',\n api.getPresetProps({ value: props.value }) as Record<string, unknown>,\n slotPaints(authored) ? authored : api.presets.find(p => p.value === props.value)?.label,\n )\n }\n },\n})\n\n/** 一列时间选项连同贴在它盒子上的竖条:每列一台滚动条机器,列数随精度与小时制变时组件实例跟着增减。 */\nconst XhDateRangePickerTimeColumnHost = defineComponent({\n name: 'XhDateRangePickerTimeColumnHost',\n props: {\n index: { type: Number as PropType<DateRangePickerEndIndex>, required: true },\n unit: { type: String as PropType<DatePickerTimeUnit>, required: true },\n },\n setup(props) {\n const ctx = useDateRangePickerContext()\n const timeColumnRef = ref<HTMLElement | null>(null)\n // 定高的时间列自己竖滚:条子贴在本列的盒子上、紧跟在它后面(浮层 4px 档)\n const bars = useScrollbars({\n scrollable: () => timeColumnRef.value,\n anchor: 'layer',\n props: () => ({ dir: (ctx.api.value.getPositionerProps() as { dir?: Direction }).dir, size: 'sm' }),\n })\n onUpdated(() => bars.measure())\n return () => {\n const api = ctx.api.value\n const column = api.timeColumnGroups[props.index].columns.find(item => item.unit === props.unit)\n if (!column)\n return null\n return [\n h(\n 'div',\n {\n ...api.getTimeColumnProps({ index: props.index, unit: column.unit }) as Record<string, unknown>,\n ref: (el: unknown) => { timeColumnRef.value = el as HTMLElement },\n },\n column.options.map(option =>\n h(\n 'div',\n { ...api.getTimeItemProps({ index: props.index, unit: column.unit, value: option }) as Record<string, unknown>, key: option },\n api.getTimeItemText({ unit: column.unit, value: option }),\n ),\n ),\n ),\n ...bars.render(),\n ]\n }\n },\n})\n\nexport const XhDateRangePickerTimePanel = defineComponent({\n name: 'XhDateRangePickerTimePanel',\n setup() {\n const ctx = useDateRangePickerContext()\n // 起止两组时间列整组自动铺:每组一个外壳、一行小标题与时/分[/秒][/上下午]各一列;没开 showTime 时整组带 hidden\n return () => ctx.api.value.timeColumnGroups.map(group =>\n h('div', { ...ctx.api.value.getColumnGroupProps({ index: group.index }) as Record<string, unknown>, key: group.index }, [\n h('div', ctx.api.value.getColumnGroupLabelProps({ index: group.index }) as Record<string, unknown>, group.label),\n ...group.columns.map(column =>\n h(XhDateRangePickerTimeColumnHost, { index: group.index, unit: column.unit, key: column.unit }),\n ),\n ]),\n )\n },\n})\n\nexport const XhDateRangePickerConfirmTrigger = defineComponent({\n name: 'XhDateRangePickerConfirmTrigger',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('button', ctx.api.value.getConfirmTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerFooter = defineComponent({\n name: 'XhDateRangePickerFooter',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n // 浮层底部的通栏操作区:写在 content 里、排在面板主体之后,确认钮通常放在这里;\n // 不进任何集合的拥有关系,方向键走不到,里面的按钮照常进 Tab 序列\n return () => h('div', ctx.api.value.getFooterProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerHeader = defineComponent({\n name: 'XhDateRangePickerHeader',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('div', ctx.api.value.calendar.getHeaderProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerPrevYearTrigger = defineComponent({\n name: 'XhDateRangePickerPrevYearTrigger',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('button', ctx.api.value.calendar.getPrevYearTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerPrevTrigger = defineComponent({\n name: 'XhDateRangePickerPrevTrigger',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('button', ctx.api.value.calendar.getPrevTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerNextTrigger = defineComponent({\n name: 'XhDateRangePickerNextTrigger',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('button', ctx.api.value.calendar.getNextTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerNextYearTrigger = defineComponent({\n name: 'XhDateRangePickerNextYearTrigger',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('button', ctx.api.value.calendar.getNextYearTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerHeading = defineComponent({\n name: 'XhDateRangePickerHeading',\n props: {\n /** 属于第几个面板;未写时跟随所在的日历。 */\n index: { type: [Number, String] },\n },\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n const index = usePanelIndex(props)\n // 有插槽用插槽,否则渲染本面板的标题\n return () => h(\n 'div',\n ctx.api.value.calendar.getHeadingProps({ index: index.value }) as Record<string, unknown>,\n slots.default?.() ?? (ctx.api.value.calendar.panels[index.value]?.headingLabel ?? ctx.api.value.calendar.headingLabel),\n )\n },\n})\n\nexport const XhDateRangePickerHeadingYearTrigger = defineComponent({\n name: 'XhDateRangePickerHeadingYearTrigger',\n props: {\n /** 属于第几个面板;未写时跟随所在的日历。 */\n index: { type: [Number, String] },\n },\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n const index = usePanelIndex(props)\n // 有插槽用插槽,否则渲染标题里年那一截;年视图下它是整个十年跨度\n return () => h(\n 'button',\n ctx.api.value.calendar.getHeadingYearTriggerProps({ index: index.value }) as Record<string, unknown>,\n slots.default?.() ?? ctx.api.value.calendar.panels[index.value]?.headingYear,\n )\n },\n})\n\nexport const XhDateRangePickerHeadingMonthTrigger = defineComponent({\n name: 'XhDateRangePickerHeadingMonthTrigger',\n props: {\n /** 属于第几个面板;未写时跟随所在的日历。 */\n index: { type: [Number, String] },\n },\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n const index = usePanelIndex(props)\n return () => h(\n 'button',\n ctx.api.value.calendar.getHeadingMonthTriggerProps({ index: index.value }) as Record<string, unknown>,\n slots.default?.() ?? ctx.api.value.calendar.panels[index.value]?.headingMonth,\n )\n },\n})\n\nexport const XhDateRangePickerGrid = defineComponent({\n name: 'XhDateRangePickerGrid',\n props: {\n /** 属于第几个面板;未写时跟随所在的日历。 */\n index: { type: [Number, String] },\n },\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n const index = usePanelIndex(props)\n return () => h(\n 'div',\n {\n ...ctx.api.value.calendar.getGridProps({ index: index.value }) as Record<string, unknown>,\n // 键盘在首个网格上收口;其余面板只渲染,方向键仍能跨面板走(落点按值现查)\n ref: index.value === 0 ? ctx.gridRef : undefined,\n },\n slots.default?.(),\n )\n },\n})\n\nexport const XhDateRangePickerGridHead = defineComponent({\n name: 'XhDateRangePickerGridHead',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('div', ctx.api.value.calendar.getGridHeadProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerGridBody = defineComponent({\n name: 'XhDateRangePickerGridBody',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('div', ctx.api.value.calendar.getGridBodyProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n// 表头行与日期行共用同一个 role=row\nexport const XhDateRangePickerWeekRow = defineComponent({\n name: 'XhDateRangePickerWeekRow',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('div', ctx.api.value.calendar.getWeekRowProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerWeekNumber = defineComponent({\n name: 'XhDateRangePickerWeekNumber',\n props: {\n /** 该行行首那一天的 ISO 串。 */\n value: { type: String, required: true },\n },\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n // 有插槽用插槽,否则显示这一行的周序号\n return () => h(\n 'span',\n ctx.api.value.calendar.getWeekNumberProps({ value: props.value }) as Record<string, unknown>,\n slots.default?.() ?? ctx.api.value.calendar.getWeekNumberText({ value: props.value }),\n )\n },\n})\n\nexport const XhDateRangePickerWeekDay = defineComponent({\n name: 'XhDateRangePickerWeekDay',\n props: {\n // 列序 0-6,兼收字符串\n value: { type: [Number, String] as PropType<number | string>, required: true },\n },\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n const index = computed(() => Number(props.value))\n return () => h(\n 'span',\n ctx.api.value.calendar.getWeekDayProps({ value: index.value }) as Record<string, unknown>,\n slots.default?.() ?? ctx.api.value.calendar.weekDays[index.value]?.label,\n )\n },\n})\n\nexport const XhDateRangePickerCell = defineComponent({\n name: 'XhDateRangePickerCell',\n props: {\n /** ISO 日期串。 */\n value: { type: String, required: true },\n /**\n * 属于第几个面板;未写时跟随所在的日历。同一天会同时出现在两个面板中\n * (8 月末的几天也铺在 9 月的首行),是否为本月只有连同面板一起看才能判定。\n */\n index: { type: [Number, String] },\n },\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n const index = usePanelIndex(props)\n const cell = computed<CalendarCellProps>(() => ({ value: props.value, index: index.value }))\n provideDateRangePickerCell({ cell })\n // 不上报格子卸载,翻月后由日历机器按聚焦日重新落点\n return () => h('div', ctx.api.value.calendar.getCellProps(cell.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerCellTrigger = defineComponent({\n name: 'XhDateRangePickerCellTrigger',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n const { cell } = useDateRangePickerCellContext()\n return () => h(\n 'div',\n ctx.api.value.calendar.getCellTriggerProps(cell.value) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\nexport const XhDateRangePickerHiddenInput = defineComponent({\n name: 'XhDateRangePickerHiddenInput',\n props: {\n // 写在分段容器外面时用它指明属于哪一端;写在容器里面不必给,跟着容器走\n index: { type: [Number, String] as PropType<number | string> },\n },\n setup(props) {\n const ctx = useDateRangePickerContext()\n const group = useDateRangePickerSegmentGroupContext()\n return () => {\n const index = props.index === undefined ? group.index.value : resolveDateRangePickerFieldIndex(props.index)\n return h('input', dateRangePickerFieldAt(ctx.api.value, index).getHiddenInputProps() as Record<string, unknown>)\n }\n },\n})\n"],"mappings":"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"}
@@ -116,10 +116,10 @@ declare const XhDialogRoot: import("vue").DefineComponent<import("vue").ExtractP
116
116
  unmountOnExit: boolean;
117
117
  open: boolean;
118
118
  defaultOpen: boolean;
119
+ modal: boolean;
119
120
  closeOnEscape: boolean;
120
121
  closeOnInteractOutside: boolean;
121
122
  restoreFocus: boolean;
122
- modal: boolean;
123
123
  role: "dialog" | "alertdialog";
124
124
  draggable: boolean;
125
125
  }, SlotsType<{
@@ -181,10 +181,10 @@ declare const XhDrawerRoot: import("vue").DefineComponent<import("vue").ExtractP
181
181
  open: boolean;
182
182
  defaultOpen: boolean;
183
183
  resizable: boolean;
184
+ modal: boolean;
184
185
  closeOnEscape: boolean;
185
186
  closeOnInteractOutside: boolean;
186
187
  restoreFocus: boolean;
187
- modal: boolean;
188
188
  contained: boolean;
189
189
  }, SlotsType<{
190
190
  default?: (props: DrawerRootSlotProps) => VNode[];
@@ -1,4 +1,5 @@
1
1
  import { FieldsetContext } from "./use-fieldset.js";
2
+ import { ComputedRef } from "vue";
2
3
  //#region src/components/fieldset/context.d.ts
3
4
  declare function useFieldsetContext(): FieldsetContext;
4
5
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","names":[],"sources":["../../../src/components/fieldset/context.ts"],"mappings":";;iBAiBgB,sBAAsB"}
1
+ {"version":3,"file":"context.d.ts","names":[],"sources":["../../../src/components/fieldset/context.ts"],"mappings":";;;iBA2BgB,sBAAsB"}
@@ -1,6 +1,14 @@
1
1
  import { inject, provide } from "vue";
2
2
  //#region src/components/fieldset/context.ts
3
3
  const KEY = Symbol.for("xh-fieldset");
4
+ const OUTER_DISABLED_KEY = Symbol.for("xh-fieldset-outer-disabled");
5
+ /** 字段集外面那一层的作用域禁用:legend 里的控件不吃本组的禁用,恢复成它。 */
6
+ function provideFieldsetOuterDisabled(outer) {
7
+ provide(OUTER_DISABLED_KEY, outer);
8
+ }
9
+ function useFieldsetOuterDisabled() {
10
+ return inject(OUTER_DISABLED_KEY, void 0);
11
+ }
4
12
  function provideFieldset(ctx) {
5
13
  provide(KEY, ctx);
6
14
  }
@@ -10,6 +18,6 @@ function useFieldsetContext() {
10
18
  return ctx;
11
19
  }
12
20
  //#endregion
13
- export { provideFieldset, useFieldsetContext };
21
+ export { provideFieldset, provideFieldsetOuterDisabled, useFieldsetContext, useFieldsetOuterDisabled };
14
22
 
15
23
  //# sourceMappingURL=context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/fieldset/context.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// 提供 context 相关实现。\n\nimport type { InjectionKey } from 'vue'\nimport type { FieldsetContext } from './use-fieldset'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<FieldsetContext> = Symbol.for('xh-fieldset')\n\nexport function provideFieldset(ctx: FieldsetContext): void {\n provide(KEY, ctx)\n}\n\nexport function useFieldsetContext(): FieldsetContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Fieldset 部件必须用在 XhFieldsetRoot 内')\n return ctx\n}\n"],"mappings":";;AAWA,MAAM,MAAqC,OAAO,IAAI,aAAa;AAEnE,SAAgB,gBAAgB,KAA4B;CAC1D,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,qBAAsC;CACpD,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,uCAAuC;CACzD,OAAO;AACT"}
1
+ {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/fieldset/context.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// 提供 context 相关实现。\n\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport type { FieldsetContext } from './use-fieldset'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<FieldsetContext> = Symbol.for('xh-fieldset')\nconst OUTER_DISABLED_KEY: InjectionKey<ComputedRef<boolean>> = Symbol.for('xh-fieldset-outer-disabled')\n\n/** 字段集外面那一层的作用域禁用:legend 里的控件不吃本组的禁用,恢复成它。 */\nexport function provideFieldsetOuterDisabled(outer: ComputedRef<boolean>): void {\n provide(OUTER_DISABLED_KEY, outer)\n}\n\nexport function useFieldsetOuterDisabled(): ComputedRef<boolean> | undefined {\n return inject(OUTER_DISABLED_KEY, undefined)\n}\n\nexport function provideFieldset(ctx: FieldsetContext): void {\n provide(KEY, ctx)\n}\n\nexport function useFieldsetContext(): FieldsetContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Fieldset 部件必须用在 XhFieldsetRoot 内')\n return ctx\n}\n"],"mappings":";;AAWA,MAAM,MAAqC,OAAO,IAAI,aAAa;AACnE,MAAM,qBAAyD,OAAO,IAAI,4BAA4B;;AAGtG,SAAgB,6BAA6B,OAAmC;CAC9E,QAAQ,oBAAoB,KAAK;AACnC;AAEA,SAAgB,2BAA6D;CAC3E,OAAO,OAAO,oBAAoB,KAAA,CAAS;AAC7C;AAEA,SAAgB,gBAAgB,KAA4B;CAC1D,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,qBAAsC;CACpD,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,uCAAuC;CACzD,OAAO;AACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"fieldset.d.ts","names":[],"sources":["../../../src/components/fieldset/fieldset.ts"],"mappings":";;;cAca,8BAAc,8BAAA;;;;;;;;;;;;;;IAOS,MAAA,SAAS,QAAQ;;;;;;;;;;;;;;;;;;IAAjB,MAAA,SAAS,QAAQ;;;;;;qCAQnD;cAEW,gCAAgB,wCAAA,oBAAA,4BAAA;;8BAO3B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,qCAAqB,wCAAA,oBAAA,4BAAA;;8BAMhC,qCAAA,iDAAA,aAAA,eAAA,oDAAA;;cAGW,oCAAoB,wCAAA,oBAAA,4BAAA;;8BAM/B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;;cAGW,iCAAiB,wCAAA,oBAAA,4BAAA;;8BAM5B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,mCAAmB,wCAAA,oBAAA,4BAAA;;8BAO9B,qCAAA,iDAAA,aAAA,eAAA,oDAAA"}
1
+ {"version":3,"file":"fieldset.d.ts","names":[],"sources":["../../../src/components/fieldset/fieldset.ts"],"mappings":";;;cAca,8BAAc,8BAAA;;;;;;;;;;;;;;IAOS,MAAA,SAAS,QAAQ;;;;;;;;;;;;;;;;;;IAAjB,MAAA,SAAS,QAAQ;;;;;;qCAanD;cAEW,gCAAgB,wCAAA,oBAAA,4BAAA;;8BAU3B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,qCAAqB,wCAAA,oBAAA,4BAAA;;8BAMhC,qCAAA,iDAAA,aAAA,eAAA,oDAAA;;cAGW,oCAAoB,wCAAA,oBAAA,4BAAA;;8BAM/B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;;cAGW,iCAAiB,wCAAA,oBAAA,4BAAA;;8BAM5B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,mCAAmB,wCAAA,oBAAA,4BAAA;;8BAO9B,qCAAA,iDAAA,aAAA,eAAA,oDAAA"}
@@ -1,7 +1,7 @@
1
- import { withXhConfig } from "../../config/config.js";
2
- import { provideFieldset, useFieldsetContext } from "./context.js";
1
+ import { provideXhConfig, useXhConfig, withXhConfig } from "../../config/config.js";
2
+ import { provideFieldset, provideFieldsetOuterDisabled, useFieldsetContext, useFieldsetOuterDisabled } from "./context.js";
3
3
  import { useFieldset } from "./use-fieldset.js";
4
- import { defineComponent, h } from "vue";
4
+ import { computed, defineComponent, h } from "vue";
5
5
  //#region src/components/fieldset/fieldset.ts
6
6
  const XhFieldsetRoot = defineComponent({
7
7
  name: "XhFieldsetRoot",
@@ -21,8 +21,11 @@ const XhFieldsetRoot = defineComponent({
21
21
  translations: { type: Object }
22
22
  },
23
23
  setup(props, { slots }) {
24
+ const outer = useXhConfig();
24
25
  const ctx = useFieldset(withXhConfig("fieldset", props));
25
26
  provideFieldset(ctx);
27
+ provideXhConfig(() => ({ disabled: ctx.api.value.disabled || void 0 }));
28
+ provideFieldsetOuterDisabled(computed(() => outer.value.disabled === true));
26
29
  return () => h("fieldset", ctx.api.value.getRootProps(), slots.default?.());
27
30
  }
28
31
  });
@@ -30,6 +33,8 @@ const XhFieldsetLegend = defineComponent({
30
33
  name: "XhFieldsetLegend",
31
34
  setup(_, { slots }) {
32
35
  const ctx = useFieldsetContext();
36
+ const outer = useFieldsetOuterDisabled();
37
+ provideXhConfig(() => ({ disabled: outer?.value ?? false }));
33
38
  return () => h("legend", ctx.api.value.getLegendProps(), slots.default?.());
34
39
  }
35
40
  });
@@ -1 +1 @@
1
- {"version":3,"file":"fieldset.js","names":[],"sources":["../../../src/components/fieldset/fieldset.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// 提供 fieldset 相关实现。\n\nimport type { FieldsetProps, FieldsetTranslations } from '@xihan-ui/headless'\nimport type { PropType } from 'vue'\nimport { defineComponent, h } from 'vue'\nimport { withXhConfig } from '../../config/config'\nimport { provideFieldset, useFieldsetContext } from './context'\nimport { useFieldset } from './use-fieldset'\n\nexport const XhFieldsetRoot = defineComponent({\n name: 'XhFieldsetRoot',\n // 三个布尔缺省 undefined:缺省值的事实源在 connect,写死 false 会挡住将来从上下文取值\n props: {\n disabled: { type: Boolean, default: undefined },\n invalid: { type: Boolean, default: undefined },\n required: { type: Boolean, default: undefined },\n translations: { type: Object as PropType<Partial<FieldsetTranslations>> },\n },\n setup(props, { slots }) {\n const ctx = useFieldset(withXhConfig('fieldset', props) as FieldsetProps)\n provideFieldset(ctx)\n // 必须是原生 <fieldset>:整组禁用连坐组内控件是浏览器给的,换成 div 就只剩一层灰样式\n return () => h('fieldset', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhFieldsetLegend = defineComponent({\n name: 'XhFieldsetLegend',\n setup(_, { slots }) {\n const ctx = useFieldsetContext()\n // 原生 <legend> 只有作为 <fieldset> 的首个子节点时才充当这一组的名字\n return () => h('legend', ctx.api.value.getLegendProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhFieldsetDescription = defineComponent({\n name: 'XhFieldsetDescription',\n setup(_, { slots }) {\n const ctx = useFieldsetContext()\n return () => h('p', ctx.api.value.getDescriptionProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n/** 把并排的几个字段圈为一段;纯排版。 */\nexport const XhFieldsetFieldGroup = defineComponent({\n name: 'XhFieldsetFieldGroup',\n setup(_, { slots }) {\n const ctx = useFieldsetContext()\n return () => h('div', ctx.api.value.getFieldGroupProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n/** 组末尾的按钮行;纯排版。 */\nexport const XhFieldsetActions = defineComponent({\n name: 'XhFieldsetActions',\n setup(_, { slots }) {\n const ctx = useFieldsetContext()\n return () => h('div', ctx.api.value.getActionsProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhFieldsetErrorText = defineComponent({\n name: 'XhFieldsetErrorText',\n setup(_, { slots }) {\n const ctx = useFieldsetContext()\n // 节点常挂,靠 hidden 显隐:活区要先在场才播报得出来,卸载重挂读屏读不到\n return () => h('p', ctx.api.value.getErrorTextProps() as Record<string, unknown>, slots.default?.())\n },\n})\n"],"mappings":";;;;;AAcA,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CAEN,OAAO;EACL,UAAU;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC9C,SAAS;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC7C,UAAU;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC9C,cAAc,EAAE,MAAM,OAAkD;CAC1E;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,YAAY,aAAa,YAAY,KAAK,CAAkB;EACxE,gBAAgB,GAAG;EAEnB,aAAa,EAAE,YAAY,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CACvG;AACF,CAAC;AAED,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAE/B,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,eAAe,GAA8B,MAAM,UAAU,CAAC;CACvG;AACF,CAAC;AAED,MAAa,wBAAwB,gBAAgB;CACnD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,KAAK,IAAI,IAAI,MAAM,oBAAoB,GAA8B,MAAM,UAAU,CAAC;CACvG;AACF,CAAC;;AAGD,MAAa,uBAAuB,gBAAgB;CAClD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,mBAAmB,GAA8B,MAAM,UAAU,CAAC;CACxG;AACF,CAAC;;AAGD,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,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAE/B,aAAa,EAAE,KAAK,IAAI,IAAI,MAAM,kBAAkB,GAA8B,MAAM,UAAU,CAAC;CACrG;AACF,CAAC"}
1
+ {"version":3,"file":"fieldset.js","names":[],"sources":["../../../src/components/fieldset/fieldset.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// 提供 fieldset 相关实现。\n\nimport type { FieldsetProps, FieldsetTranslations } from '@xihan-ui/headless'\nimport type { PropType } from 'vue'\nimport { computed, defineComponent, h } from 'vue'\nimport { provideXhConfig, useXhConfig, withXhConfig } from '../../config/config'\nimport { provideFieldset, provideFieldsetOuterDisabled, useFieldsetContext, useFieldsetOuterDisabled } from './context'\nimport { useFieldset } from './use-fieldset'\n\nexport const XhFieldsetRoot = defineComponent({\n name: 'XhFieldsetRoot',\n // 三个布尔缺省 undefined:缺省值的事实源在 connect,写死 false 会挡住将来从上下文取值\n props: {\n disabled: { type: Boolean, default: undefined },\n invalid: { type: Boolean, default: undefined },\n required: { type: Boolean, default: undefined },\n translations: { type: Object as PropType<Partial<FieldsetTranslations>> },\n },\n setup(props, { slots }) {\n const outer = useXhConfig()\n const ctx = useFieldset(withXhConfig('fieldset', props) as FieldsetProps)\n provideFieldset(ctx)\n // 整组禁用经作用域配置压进子树:组内组件库的控件各自拿到 disabled,行为与禁用面一起到位。\n // 原生 fieldset[disabled] 只管得住原生表单控件,滑块、取色区这类非原生交互节点与各家族的禁用面它够不着\n provideXhConfig(() => ({ disabled: ctx.api.value.disabled || undefined }))\n provideFieldsetOuterDisabled(computed(() => outer.value.disabled === true))\n // 必须是原生 <fieldset>:整组禁用连坐组内控件是浏览器给的,换成 div 就只剩一层灰样式\n return () => h('fieldset', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhFieldsetLegend = defineComponent({\n name: 'XhFieldsetLegend',\n setup(_, { slots }) {\n const ctx = useFieldsetContext()\n // legend 里的控件不吃本组的禁用(原生语义:首个 legend 内的控件不受所在 fieldset 禁用),恢复成外层的\n const outer = useFieldsetOuterDisabled()\n provideXhConfig(() => ({ disabled: outer?.value ?? false }))\n // 原生 <legend> 只有作为 <fieldset> 的首个子节点时才充当这一组的名字\n return () => h('legend', ctx.api.value.getLegendProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhFieldsetDescription = defineComponent({\n name: 'XhFieldsetDescription',\n setup(_, { slots }) {\n const ctx = useFieldsetContext()\n return () => h('p', ctx.api.value.getDescriptionProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n/** 把并排的几个字段圈为一段;纯排版。 */\nexport const XhFieldsetFieldGroup = defineComponent({\n name: 'XhFieldsetFieldGroup',\n setup(_, { slots }) {\n const ctx = useFieldsetContext()\n return () => h('div', ctx.api.value.getFieldGroupProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n/** 组末尾的按钮行;纯排版。 */\nexport const XhFieldsetActions = defineComponent({\n name: 'XhFieldsetActions',\n setup(_, { slots }) {\n const ctx = useFieldsetContext()\n return () => h('div', ctx.api.value.getActionsProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhFieldsetErrorText = defineComponent({\n name: 'XhFieldsetErrorText',\n setup(_, { slots }) {\n const ctx = useFieldsetContext()\n // 节点常挂,靠 hidden 显隐:活区要先在场才播报得出来,卸载重挂读屏读不到\n return () => h('p', ctx.api.value.getErrorTextProps() as Record<string, unknown>, slots.default?.())\n },\n})\n"],"mappings":";;;;;AAcA,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CAEN,OAAO;EACL,UAAU;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC9C,SAAS;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC7C,UAAU;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC9C,cAAc,EAAE,MAAM,OAAkD;CAC1E;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,QAAQ,YAAY;EAC1B,MAAM,MAAM,YAAY,aAAa,YAAY,KAAK,CAAkB;EACxE,gBAAgB,GAAG;EAGnB,uBAAuB,EAAE,UAAU,IAAI,IAAI,MAAM,YAAY,KAAA,EAAU,EAAE;EACzE,6BAA6B,eAAe,MAAM,MAAM,aAAa,IAAI,CAAC;EAE1E,aAAa,EAAE,YAAY,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CACvG;AACF,CAAC;AAED,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAE/B,MAAM,QAAQ,yBAAyB;EACvC,uBAAuB,EAAE,UAAU,OAAO,SAAS,MAAM,EAAE;EAE3D,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,eAAe,GAA8B,MAAM,UAAU,CAAC;CACvG;AACF,CAAC;AAED,MAAa,wBAAwB,gBAAgB;CACnD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,KAAK,IAAI,IAAI,MAAM,oBAAoB,GAA8B,MAAM,UAAU,CAAC;CACvG;AACF,CAAC;;AAGD,MAAa,uBAAuB,gBAAgB;CAClD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,mBAAmB,GAA8B,MAAM,UAAU,CAAC;CACxG;AACF,CAAC;;AAGD,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,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAE/B,aAAa,EAAE,KAAK,IAAI,IAAI,MAAM,kBAAkB,GAA8B,MAAM,UAAU,CAAC;CACrG;AACF,CAAC"}
@@ -115,10 +115,10 @@ declare const XhFloatingPanelRoot: import("vue").DefineComponent<import("vue").E
115
115
  }>> & Readonly<{
116
116
  "onOpen-change"?: ((_details: import("@xihan-ui/headless").FloatingPanelOpenChangeDetails) => any) | undefined;
117
117
  "onUpdate:open"?: ((_open: boolean) => any) | undefined;
118
- "onDimensions-change"?: ((_details: import("@xihan-ui/headless").FloatingPanelDimensionsChangeDetails) => any) | undefined;
119
- "onUpdate:dimensions"?: ((_dimensions: FloatingPanelSize) => any) | undefined;
120
118
  "onPosition-change"?: ((_details: import("@xihan-ui/headless").FloatingPanelPositionChangeDetails) => any) | undefined;
121
119
  "onUpdate:position"?: ((_position: FloatingPanelPosition) => any) | undefined;
120
+ "onDimensions-change"?: ((_details: import("@xihan-ui/headless").FloatingPanelDimensionsChangeDetails) => any) | undefined;
121
+ "onUpdate:dimensions"?: ((_dimensions: FloatingPanelSize) => any) | undefined;
122
122
  "onWindow-state-change"?: ((_details: import("@xihan-ui/headless").FloatingPanelWindowStateChangeDetails) => any) | undefined;
123
123
  "onUpdate:windowState"?: ((_windowState: FloatingPanelWindowState) => any) | undefined;
124
124
  }>, {
@@ -69,8 +69,8 @@ declare const XhMarkdownStreamRoot: import("vue").DefineComponent<import("vue").
69
69
  type: PropType<Partial<MarkdownStreamTranslations>>;
70
70
  };
71
71
  }>> & Readonly<{}>, {
72
- streaming: boolean;
73
72
  blocks: readonly MarkdownBlock[];
73
+ streaming: boolean;
74
74
  caret: boolean;
75
75
  }, SlotsType<{
76
76
  default?: (props: MarkdownStreamRootSlotProps) => VNode[];
@@ -96,9 +96,9 @@ declare const XhPopoverRoot: import("vue").DefineComponent<import("vue").Extract
96
96
  disabled: boolean;
97
97
  open: boolean;
98
98
  defaultOpen: boolean;
99
+ modal: boolean;
99
100
  closeOnEscape: boolean;
100
101
  closeOnInteractOutside: boolean;
101
- modal: boolean;
102
102
  }, SlotsType<{
103
103
  default?: (props: PopoverRootSlotProps) => VNode[];
104
104
  }>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
@@ -84,8 +84,8 @@ declare const XhReasoningRoot: import("vue").DefineComponent<import("vue").Extra
84
84
  disabled: boolean;
85
85
  open: boolean;
86
86
  defaultOpen: boolean;
87
- streaming: boolean;
88
87
  autoDisclosure: boolean;
88
+ streaming: boolean;
89
89
  }, SlotsType<{
90
90
  default?: (props: ReasoningRootSlotProps) => VNode[];
91
91
  }>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
@@ -95,8 +95,8 @@ declare const XhSortableRoot: import("vue").DefineComponent<import("vue").Extrac
95
95
  "onUpdate:ids"?: ((_ids: string[]) => any) | undefined;
96
96
  }>, {
97
97
  disabled: boolean;
98
- ids: string[];
99
98
  autoScroll: boolean;
99
+ ids: string[];
100
100
  }, SlotsType<{
101
101
  default?: (props: SortableRootSlotProps) => VNode[];
102
102
  }>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
@@ -1,5 +1,5 @@
1
1
  import { PropType } from "vue";
2
- import { Size, Tone } from "@xihan-ui/core";
2
+ import { Orientation, Size, Tone } from "@xihan-ui/core";
3
3
  import { SpinnerTranslations, SpinnerVariant } from "@xihan-ui/headless";
4
4
  //#region src/components/spinner/spinner.d.ts
5
5
  /** 旋转图形由皮肤绘制在 root 的伪元素上,这里不生成任何子节点。 */
@@ -16,6 +16,10 @@ declare const XhSpinner: import("vue").DefineComponent<import("vue").ExtractProp
16
16
  tone: {
17
17
  type: PropType<Tone>;
18
18
  };
19
+ /** 转圈与配文的排布:horizontal 并排(缺省)/ vertical 转圈在上、配文在下。 */
20
+ orientation: {
21
+ type: PropType<Orientation>;
22
+ };
19
23
  /** 挂载后等多少毫秒才露面,默认 0;加载在这之前结束时转圈从头到尾不出现。 */
20
24
  delay: {
21
25
  type: NumberConstructor;
@@ -38,6 +42,10 @@ declare const XhSpinner: import("vue").DefineComponent<import("vue").ExtractProp
38
42
  tone: {
39
43
  type: PropType<Tone>;
40
44
  };
45
+ /** 转圈与配文的排布:horizontal 并排(缺省)/ vertical 转圈在上、配文在下。 */
46
+ orientation: {
47
+ type: PropType<Orientation>;
48
+ };
41
49
  /** 挂载后等多少毫秒才露面,默认 0;加载在这之前结束时转圈从头到尾不出现。 */
42
50
  delay: {
43
51
  type: NumberConstructor;
@@ -1 +1 @@
1
- {"version":3,"file":"spinner.d.ts","names":[],"sources":["../../../src/components/spinner/spinner.ts"],"mappings":";;;;;cAgBa,yBAAS,8BAAA;;;;;IAKM,MAAA,SAAS;;;IACN,MAAA,SAAS;;;IACZ,MAAA,SAAS;;;;;;;IAGD,MAAA,SAAS,QAAQ;;;;;;;;;IALzB,MAAA,SAAS;;;IACN,MAAA,SAAS;;;IACZ,MAAA,SAAS;;;;;;;IAGD,MAAA,SAAS,QAAQ;;MAOnD,oDAAA;;cAGW,8BAAc,wCAAA,oBAAA,4BAAA;;8BAUzB,qCAAA,iDAAA,aAAA,eAAA,oDAAA"}
1
+ {"version":3,"file":"spinner.d.ts","names":[],"sources":["../../../src/components/spinner/spinner.ts"],"mappings":";;;;;cAgBa,yBAAS,8BAAA;;;;;IAKM,MAAA,SAAS;;;IACN,MAAA,SAAS;;;IACZ,MAAA,SAAS;;;;IAEF,MAAA,SAAS;;;;;;;IAGR,MAAA,SAAS,QAAQ;;;;;;;;;IAPzB,MAAA,SAAS;;;IACN,MAAA,SAAS;;;IACZ,MAAA,SAAS;;;;IAEF,MAAA,SAAS;;;;;;;IAGR,MAAA,SAAS,QAAQ;;MAOnD,oDAAA;;cAGW,8BAAc,wCAAA,oBAAA,4BAAA;;8BAUzB,qCAAA,iDAAA,aAAA,eAAA,oDAAA"}
@@ -11,6 +11,8 @@ const XhSpinner = defineComponent({
11
11
  size: { type: String },
12
12
  variant: { type: String },
13
13
  tone: { type: String },
14
+ /** 转圈与配文的排布:horizontal 并排(缺省)/ vertical 转圈在上、配文在下。 */
15
+ orientation: { type: String },
14
16
  /** 挂载后等多少毫秒才露面,默认 0;加载在这之前结束时转圈从头到尾不出现。 */
15
17
  delay: { type: Number },
16
18
  translations: { type: Object }
@@ -1 +1 @@
1
- {"version":3,"file":"spinner.js","names":[],"sources":["../../../src/components/spinner/spinner.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// 提供 spinner 相关实现。\n\nimport type { Size, Tone } from '@xihan-ui/core'\nimport type { SpinnerProps, SpinnerTranslations, SpinnerVariant } from '@xihan-ui/headless'\nimport type { PropType } from 'vue'\nimport { defineComponent, h } from 'vue'\nimport { withXhConfig } from '../../config/config'\nimport { provideSpinner, useSpinnerContext } from './context'\nimport { useSpinner } from './use-spinner'\n\n/** 旋转图形由皮肤绘制在 root 的伪元素上,这里不生成任何子节点。 */\nexport const XhSpinner = defineComponent({\n name: 'XhSpinner',\n // 缺省值由 connect 给出;普通类型省略 default,Boolean 显式保留 undefined\n props: {\n label: { type: String },\n size: { type: String as PropType<Size> },\n variant: { type: String as PropType<SpinnerVariant> },\n tone: { type: String as PropType<Tone> },\n /** 挂载后等多少毫秒才露面,默认 0;加载在这之前结束时转圈从头到尾不出现。 */\n delay: { type: Number },\n translations: { type: Object as PropType<Partial<SpinnerTranslations>> },\n },\n setup(props, { slots }) {\n const ctx = useSpinner(withXhConfig('spinner', props) as SpinnerProps)\n provideSpinner(ctx)\n return () => h('span', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n/** 可见文案节点。作者未写内容时显示解析后的 label,屏幕上看到的与读屏朗读的因此是同一段文字。 */\nexport const XhSpinnerLabel = defineComponent({\n name: 'XhSpinnerLabel',\n setup(_, { slots }) {\n const ctx = useSpinnerContext()\n return () => h(\n 'span',\n ctx.api.value.getLabelProps() as Record<string, unknown>,\n slots.default?.() ?? ctx.api.value.label,\n )\n },\n})\n"],"mappings":";;;;;;AAgBA,MAAa,YAAY,gBAAgB;CACvC,MAAM;CAEN,OAAO;EACL,OAAO,EAAE,MAAM,OAAO;EACtB,MAAM,EAAE,MAAM,OAAyB;EACvC,SAAS,EAAE,MAAM,OAAmC;EACpD,MAAM,EAAE,MAAM,OAAyB;;EAEvC,OAAO,EAAE,MAAM,OAAO;EACtB,cAAc,EAAE,MAAM,OAAiD;CACzE;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,WAAW,aAAa,WAAW,KAAK,CAAiB;EACrE,eAAe,GAAG;EAClB,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CACnG;AACF,CAAC;;AAGD,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,kBAAkB;EAC9B,aAAa,EACX,QACA,IAAI,IAAI,MAAM,cAAc,GAC5B,MAAM,UAAU,KAAK,IAAI,IAAI,MAAM,KACrC;CACF;AACF,CAAC"}
1
+ {"version":3,"file":"spinner.js","names":[],"sources":["../../../src/components/spinner/spinner.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// 提供 spinner 相关实现。\n\nimport type { Orientation, Size, Tone } from '@xihan-ui/core'\nimport type { SpinnerProps, SpinnerTranslations, SpinnerVariant } from '@xihan-ui/headless'\nimport type { PropType } from 'vue'\nimport { defineComponent, h } from 'vue'\nimport { withXhConfig } from '../../config/config'\nimport { provideSpinner, useSpinnerContext } from './context'\nimport { useSpinner } from './use-spinner'\n\n/** 旋转图形由皮肤绘制在 root 的伪元素上,这里不生成任何子节点。 */\nexport const XhSpinner = defineComponent({\n name: 'XhSpinner',\n // 缺省值由 connect 给出;普通类型省略 default,Boolean 显式保留 undefined\n props: {\n label: { type: String },\n size: { type: String as PropType<Size> },\n variant: { type: String as PropType<SpinnerVariant> },\n tone: { type: String as PropType<Tone> },\n /** 转圈与配文的排布:horizontal 并排(缺省)/ vertical 转圈在上、配文在下。 */\n orientation: { type: String as PropType<Orientation> },\n /** 挂载后等多少毫秒才露面,默认 0;加载在这之前结束时转圈从头到尾不出现。 */\n delay: { type: Number },\n translations: { type: Object as PropType<Partial<SpinnerTranslations>> },\n },\n setup(props, { slots }) {\n const ctx = useSpinner(withXhConfig('spinner', props) as SpinnerProps)\n provideSpinner(ctx)\n return () => h('span', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n/** 可见文案节点。作者未写内容时显示解析后的 label,屏幕上看到的与读屏朗读的因此是同一段文字。 */\nexport const XhSpinnerLabel = defineComponent({\n name: 'XhSpinnerLabel',\n setup(_, { slots }) {\n const ctx = useSpinnerContext()\n return () => h(\n 'span',\n ctx.api.value.getLabelProps() as Record<string, unknown>,\n slots.default?.() ?? ctx.api.value.label,\n )\n },\n})\n"],"mappings":";;;;;;AAgBA,MAAa,YAAY,gBAAgB;CACvC,MAAM;CAEN,OAAO;EACL,OAAO,EAAE,MAAM,OAAO;EACtB,MAAM,EAAE,MAAM,OAAyB;EACvC,SAAS,EAAE,MAAM,OAAmC;EACpD,MAAM,EAAE,MAAM,OAAyB;;EAEvC,aAAa,EAAE,MAAM,OAAgC;;EAErD,OAAO,EAAE,MAAM,OAAO;EACtB,cAAc,EAAE,MAAM,OAAiD;CACzE;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,WAAW,aAAa,WAAW,KAAK,CAAiB;EACrE,eAAe,GAAG;EAClB,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CACnG;AACF,CAAC;;AAGD,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,kBAAkB;EAC9B,aAAa,EACX,QACA,IAAI,IAAI,MAAM,cAAc,GAC5B,MAAM,UAAU,KAAK,IAAI,IAAI,MAAM,KACrC;CACF;AACF,CAAC"}
@@ -214,14 +214,14 @@ declare const XhTableRoot: import("vue").DefineComponent<import("vue").ExtractPr
214
214
  }>> & Readonly<{
215
215
  "onExpanded-value-change"?: ((_details: import("@xihan-ui/headless").TableExpandedValueChangeDetails) => any) | undefined;
216
216
  "onUpdate:expandedValue"?: ((_value: string[]) => any) | undefined;
217
+ "onSelection-change"?: ((_details: import("@xihan-ui/headless").TableSelectionChangeDetails) => any) | undefined;
218
+ "onUpdate:selection"?: ((_selection: TableSelection) => any) | undefined;
217
219
  "onColumn-preference-change"?: ((_details: {
218
220
  value: TableColumnPreference;
219
221
  }) => any) | undefined;
220
222
  "onUpdate:columnPreference"?: ((_value: TableColumnPreference) => any) | undefined;
221
223
  "onSort-change"?: ((_details: import("@xihan-ui/headless").TableSortChangeDetails) => any) | undefined;
222
224
  "onUpdate:sort"?: ((_sort: TableSortDescriptor[]) => any) | undefined;
223
- "onSelection-change"?: ((_details: import("@xihan-ui/headless").TableSelectionChangeDetails) => any) | undefined;
224
- "onUpdate:selection"?: ((_selection: TableSelection) => any) | undefined;
225
225
  "onRow-move"?: ((_details: import("@xihan-ui/headless").TableRowMoveDetails) => any) | undefined;
226
226
  }>, {
227
227
  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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"}
@@ -361,11 +361,14 @@ declare const XhTimePickerItem: import("vue").DefineComponent<import("vue").Extr
361
361
  declare const XhTimePickerConfirmTrigger: import("vue").DefineComponent<{}, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
362
362
  [key: string]: any;
363
363
  }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
364
+ declare const XhTimePickerFooter: import("vue").DefineComponent<{}, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
365
+ [key: string]: any;
366
+ }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
364
367
  declare const XhTimePickerHiddenInput: import("vue").DefineComponent<{}, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
365
368
  [key: string]: any;
366
369
  }> | VNode<import("vue").RendererNode, import("vue").RendererElement, {
367
370
  [key: string]: any;
368
371
  }>[], {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
369
372
  //#endregion
370
- export { TimePickerColumnSlotProps, TimePickerPresetsSlotProps, TimePickerRootSlotProps, XhTimePickerClearTrigger, XhTimePickerColumn, XhTimePickerConfirmTrigger, XhTimePickerContent, XhTimePickerControl, XhTimePickerHiddenInput, XhTimePickerItem, XhTimePickerItemDeleteTrigger, XhTimePickerLabel, XhTimePickerOverflowTag, XhTimePickerPositioner, XhTimePickerPreset, XhTimePickerPresetGroup, XhTimePickerRoot, XhTimePickerSegment, XhTimePickerSegmentGroup, XhTimePickerTag, XhTimePickerTagLabel, XhTimePickerTagList, XhTimePickerTrigger };
373
+ export { TimePickerColumnSlotProps, TimePickerPresetsSlotProps, TimePickerRootSlotProps, XhTimePickerClearTrigger, XhTimePickerColumn, XhTimePickerConfirmTrigger, XhTimePickerContent, XhTimePickerControl, XhTimePickerFooter, XhTimePickerHiddenInput, XhTimePickerItem, XhTimePickerItemDeleteTrigger, XhTimePickerLabel, XhTimePickerOverflowTag, XhTimePickerPositioner, XhTimePickerPreset, XhTimePickerPresetGroup, XhTimePickerRoot, XhTimePickerSegment, XhTimePickerSegmentGroup, XhTimePickerTag, XhTimePickerTagLabel, XhTimePickerTagList, XhTimePickerTrigger };
371
374
  //# sourceMappingURL=time-picker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"time-picker.d.ts","names":[],"sources":["../../../src/components/time-picker/time-picker.ts"],"mappings":"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"}
1
+ {"version":3,"file":"time-picker.d.ts","names":[],"sources":["../../../src/components/time-picker/time-picker.ts"],"mappings":"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"}
@@ -358,6 +358,13 @@ const XhTimePickerConfirmTrigger = defineComponent({
358
358
  return () => h("button", ctx.api.value.getConfirmTriggerProps(), slots.default?.());
359
359
  }
360
360
  });
361
+ const XhTimePickerFooter = defineComponent({
362
+ name: "XhTimePickerFooter",
363
+ setup(_, { slots }) {
364
+ const ctx = useTimePickerContext();
365
+ return () => h("div", ctx.api.value.getFooterProps(), slots.default?.());
366
+ }
367
+ });
361
368
  const XhTimePickerHiddenInput = defineComponent({
362
369
  name: "XhTimePickerHiddenInput",
363
370
  setup() {
@@ -369,6 +376,6 @@ const XhTimePickerHiddenInput = defineComponent({
369
376
  }
370
377
  });
371
378
  //#endregion
372
- export { XhTimePickerClearTrigger, XhTimePickerColumn, XhTimePickerConfirmTrigger, XhTimePickerContent, XhTimePickerControl, XhTimePickerHiddenInput, XhTimePickerItem, XhTimePickerItemDeleteTrigger, XhTimePickerLabel, XhTimePickerOverflowTag, XhTimePickerPositioner, XhTimePickerPreset, XhTimePickerPresetGroup, XhTimePickerRoot, XhTimePickerSegment, XhTimePickerSegmentGroup, XhTimePickerTag, XhTimePickerTagLabel, XhTimePickerTagList, XhTimePickerTrigger };
379
+ export { XhTimePickerClearTrigger, XhTimePickerColumn, XhTimePickerConfirmTrigger, XhTimePickerContent, XhTimePickerControl, XhTimePickerFooter, XhTimePickerHiddenInput, XhTimePickerItem, XhTimePickerItemDeleteTrigger, XhTimePickerLabel, XhTimePickerOverflowTag, XhTimePickerPositioner, XhTimePickerPreset, XhTimePickerPresetGroup, XhTimePickerRoot, XhTimePickerSegment, XhTimePickerSegmentGroup, XhTimePickerTag, XhTimePickerTagLabel, XhTimePickerTagList, XhTimePickerTrigger };
373
380
 
374
381
  //# sourceMappingURL=time-picker.js.map