Files
ff-dist/button.d.ts
T
what acbff01332 fix: 补回被合成入口丢掉的 default 导出
button/container/data-converter/data-list/grid-layout/grid-layout-form/
res-ws/virtual-fs 这几个入口的 index.js 都用 export { default as X } from './xxx'
转发了 default 导出,但同级有手写 types/ 目录时会触发合成入口逻辑,用
export * from './index' 拼入口文件,而 export * 在 ES 模块语义里不会带出 default,
导致这些包的 default 导出(部分甚至连实现本身,如 DataConverter、ResWs 整个类)
被 tree-shake 掉,没有出现在最终产物里。
2026-09-23 11:13:04 +08:00

177 lines
6.4 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import React, { ReactNode } from 'react';
import { PopupContainerProps } from './container';
export { PopupContainerProps } from './container';
declare const _default: OperationAuth;
/** 按钮操作权限的单例;维护一份 uuid -> 是否有权限的映射,供 Button 组件的鉴权逻辑查询 */
declare class OperationAuth {
/** @type {OperationAuth} */
static "__#private@#instance": OperationAuth;
/** @returns {OperationAuth} 单例实例 */
static getInstance: () => OperationAuth;
/**
* 用一批权限数据初始化/覆盖内部映射
* @param {Iterable<[string, boolean]>} data uuid 到权限布尔值的键值对集合
*/
init: (data: Iterable<[string, boolean]>) => Map<string, boolean>;
/**
* 判断某个操作是否有权限;没有记录该 uuid 时默认视为有权限
* @param {string} uuid 操作标识
* @returns {boolean} 是否有权限
*/
check: (uuid: string) => boolean;
#private;
}
/** antd Button 的视觉类型 */
type ButtonType = 'primary' | 'default' | 'danger' | ''
/** 按钮尺寸 */
type ButtonSize = 'large' | 'middle' | 'small'
/** 按钮外观分类,对应 entry(cate) 的参数 */
type ButtonCate = 'default' | 'link' | 'circle' | 'round' | 'dashed'
/** 按钮触发的行为类型 */
type WidgetType =
| 'redirect'
| 'func'
| 'component'
| 'fsdpf-component'
| 'grid-layout-form'
| 'grid-layout'
| 'data-list'
| 'destroy'
/** antd Tooltip / Popconfirm 支持的弹出位置 */
type PlacementType =
| 'top' | 'left' | 'right' | 'bottom'
| 'topLeft' | 'topRight' | 'bottomLeft' | 'bottomRight'
| 'leftTop' | 'leftBottom' | 'rightTop' | 'rightBottom'
/** Button props.tooltip 配置 */
interface ButtonTooltip {
/** 提示文字 */
title: string
/** 弹出位置 */
placement?: PlacementType
/** 是否启用,0 视同 false */
enabled?: boolean | number
getPopupContainer?: (e: HTMLElement) => HTMLElement
}
/** Button props.confirm 二次确认气泡配置 */
interface ButtonConfirm {
/** 确认提示文字 */
title: string
cancelText?: string
okText?: string
/** 确认按钮类型 */
okType?: ButtonType
placement?: PlacementType
/** 是否启用,0 视同 false */
enabled?: boolean | number
getPopupContainer?: (e: HTMLElement) => HTMLElement
arrow?: boolean | { pointAtCenter: boolean }
}
/**
* 按钮点击行为的容器配置;在 PopupContainerProps 基础上叠加 Popover 专有字段和 Button 专有的 mode,
* 流经 Button → Popover → Popup.modal 三层,各层按需取用不同字段
*/
interface WidgetContainerProps extends Omit<PopupContainerProps, 'placement'> {
/** 'popover' 时按钮触发内嵌气泡卡片,否则走 Popup.modal */
mode?: 'popover' | string
/** 弹窗标题,支持 lodash template 插值(以点击时的 raw data 为上下文) */
title?: string
/** antd Popover 的弹出位置(12 方向) */
placement?: PlacementType | string
/** antd Popover 对齐微调配置 */
align?: unknown
/** antd Popover 的 zIndex */
zIndex?: number
/** antd Popover 的箭头配置 */
arrow?: boolean | { pointAtCenter: boolean }
getPopupContainer?: (e: HTMLElement) => HTMLElement
/** 气泡挂载到 body,false 时挂载到触发元素父节点;默认 true */
isPopupMountBodyContainer?: boolean
}
/** useButton 第二个参数:回调处理器 */
interface UseButtonHandlers {
onAfterClick?: (result: unknown) => void
onBeforeClick?: (data: unknown) => void
}
/** useButton 返回 / ButtonProps 共用的状态字段 */
interface UseButtonStatus {
loading?: boolean
disabled?: boolean
}
/** useButton 第一个参数:行为配置 */
interface UseButtonProps {
/** 行为目标:组件 / 函数 / 路由 / 表达式,含义随 widgetType 而定 */
widget?: unknown
/** 行为类型,决定 widget 的解释方式和触发后的动作 */
widgetType?: WidgetType
/** 触发时附带的额外数据,合并到 widgetProps 求值结果后传给动作处理器 */
widgetData?: Record<string, unknown>
/** 触发前解析的 props 映射配置(经 getWidgetPropsData 求值) */
widgetProps?: Record<string, unknown>
/** 传给目标弹窗/表单/请求的 $setting 配置 */
widgetSetting?: Record<string, unknown>
/** 传给弹窗容器的配置(title/placement/zIndex 等) */
widgetContainerProps?: WidgetContainerProps
}
/** Button 组件的 props(所有变体共用) */
interface ButtonProps extends UseButtonProps, UseButtonHandlers, UseButtonStatus {
className?: string
/** 覆盖工厂默认外观分类 */
variant?: ButtonCate
children?: ReactNode
/** 按钮文字,与 children 二选一 */
name?: string
/** 图标 class 名 */
icon?: string
type?: ButtonType
iconPosition?: 'start' | 'end'
/** 按钮操作的权限标识 */
noAuthType?: string
/** onClick 时传给动作处理器的数据源 */
data?: unknown
tooltip?: ButtonTooltip
confirm?: ButtonConfirm
[key: string]: unknown
}
/** useButton 返回值:[点击处理函数(已防抖), 当前 loading/disabled 状态] */
type UseButtonReturn = [(data: unknown) => void, UseButtonStatus]
/** ButtonGroupPopover props.options 中每一项的结构(ButtonProps + uuid + 必填 widgetType) */
interface ButtonOption extends ButtonProps {
/** 操作项唯一标识,用于权限校验 */
uuid?: string
widgetType: WidgetType
/** 操作项自身的容器配置,与外层 widgetContainerProps 合并 */
widgetContainerSetting?: WidgetContainerProps
}
/**
* Button 组件点击行为的核心 hook;按 widgetType 把点击行为分发到对应的处理器
* (跳转/自定义函数/弹窗组件/表单弹窗/数据列表弹窗/删除请求等)
* @param {UseButtonProps} config
* @param {UseButtonHandlers} [handlers]
* @returns {UseButtonReturn} [点击处理函数(已做 300ms 防抖), 当前 loading/disabled 状态]
*/
declare function useButton({ widget, widgetType, widgetData, widgetProps, widgetSetting, widgetContainerProps, }: UseButtonProps, { onAfterClick, onBeforeClick }?: UseButtonHandlers): UseButtonReturn;
declare const Button: (props: ButtonProps) => React.ReactNode;
export { _default as auth, Button as default, useButton };
export type { ButtonCate, ButtonConfirm, ButtonOption, ButtonProps, ButtonSize, ButtonTooltip, ButtonType, PlacementType, UseButtonHandlers, UseButtonProps, UseButtonReturn, UseButtonStatus, WidgetContainerProps, WidgetType };