@flatbiz/antd 4.2.55 → 4.2.57

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 (53) hide show
  1. package/esm/button-operate/index.css +1 -1
  2. package/esm/button-operate/index.js +1 -1
  3. package/esm/button-operate-81d86480.js +3 -0
  4. package/esm/button-operate-81d86480.js.map +1 -0
  5. package/esm/{cell-render-2a3743af.js → cell-render-927ade58.js} +2 -2
  6. package/esm/{cell-render-2a3743af.js.map → cell-render-927ade58.js.map} +1 -1
  7. package/esm/create-drawer-wrapper-model/index.js.map +1 -1
  8. package/esm/create-modal-wrapper-model/index.js.map +1 -1
  9. package/esm/drag-collapse/index.css +1 -1
  10. package/esm/drag-collapse/index.js +1 -3
  11. package/esm/drag-collapse-24ccfe8c.js +3 -0
  12. package/esm/drag-collapse-24ccfe8c.js.map +1 -0
  13. package/esm/drag-collapse-433fb1e0.js +3 -0
  14. package/esm/drag-collapse-433fb1e0.js.map +1 -0
  15. package/esm/drag-collapse-form-list/index.css +1 -0
  16. package/esm/drag-collapse-form-list/index.js +6 -0
  17. package/esm/drawer-wrapper-9af2f178.js.map +1 -1
  18. package/esm/dropdown-menu-wrapper/index.css +1 -0
  19. package/esm/dropdown-menu-wrapper/index.js +1 -1
  20. package/esm/dropdown-menu-wrapper-016a83b6.js +3 -0
  21. package/esm/dropdown-menu-wrapper-016a83b6.js.map +1 -0
  22. package/esm/easy-table/index.js +1 -1
  23. package/esm/easy-table/index.js.map +1 -1
  24. package/esm/editable-table/index.js +1 -1
  25. package/esm/editable-table-392040f7.js +3 -0
  26. package/esm/{editable-table-53686ef4.js.map → editable-table-392040f7.js.map} +1 -1
  27. package/esm/editor-wrapper-ff6e75b7.js.map +1 -1
  28. package/esm/form-item-group/index.js +1 -1
  29. package/esm/index.js +2 -3
  30. package/esm/modal-wrapper-ff8df98b.js.map +1 -1
  31. package/esm/table-cell-render/index.js +1 -1
  32. package/esm/tabs-wrapper-0a2da713.js.map +1 -1
  33. package/esm/tree-wrapper/index.js +1 -1
  34. package/esm/tree-wrapper/index.js.map +1 -1
  35. package/index.d.ts +105 -111
  36. package/package.json +5 -2
  37. package/esm/button-operate-fb40320e.js +0 -3
  38. package/esm/button-operate-fb40320e.js.map +0 -1
  39. package/esm/drag-collapse-8d751c2b.js +0 -3
  40. package/esm/drag-collapse-8d751c2b.js.map +0 -1
  41. package/esm/drag-drop/index.css +0 -1
  42. package/esm/drag-drop/index.js +0 -6
  43. package/esm/drag-drop/index.js.map +0 -1
  44. package/esm/drag-drop-multi/index.css +0 -0
  45. package/esm/drag-drop-multi/index.js +0 -5
  46. package/esm/drag-drop-multi-e8cae136.js +0 -3
  47. package/esm/drag-drop-multi-e8cae136.js.map +0 -1
  48. package/esm/dropdown-menu-wrapper-98347af8.js +0 -3
  49. package/esm/dropdown-menu-wrapper-98347af8.js.map +0 -1
  50. package/esm/droppable-item-708ec229.js +0 -3
  51. package/esm/droppable-item-708ec229.js.map +0 -1
  52. package/esm/editable-table-53686ef4.js +0 -3
  53. /package/esm/{drag-drop-multi → drag-collapse-form-list}/index.js.map +0 -0
package/index.d.ts CHANGED
@@ -3,14 +3,13 @@
3
3
 
4
4
  import { API, ModelType } from '@dimjs/model';
5
5
  import { DateFormatType, TAny, TNoopDefine, TPlainObject } from '@flatbiz/utils';
6
- import { DraggableChildrenFn, DropResult, DroppableProvided, DroppableStateSnapshot, ResponderProvided } from '@hello-pangea/dnd';
7
6
  import { IAllProps } from '@tinymce/tinymce-react';
8
- import { ButtonProps, CascaderProps, CheckboxProps, CollapseProps, DrawerProps, DropdownProps, FormInstance, FormItemProps, InputNumberProps, InputProps, ModalProps, PaginationProps, PopconfirmProps, RadioGroupProps, RowProps, SelectProps, SpaceProps, SwitchProps, TableProps, TabsProps, TagProps, TimePickerProps, TimeRangePickerProps, TooltipProps, TreeProps, TreeSelectProps, UploadProps } from 'antd';
7
+ import { ButtonProps, CascaderProps, CheckboxProps, CollapseProps, DrawerProps, DropdownProps, FormInstance, FormItemProps, FormListFieldData, FormListOperation, InputNumberProps, InputProps, ModalProps, PaginationProps, PopconfirmProps, RadioGroupProps, RowProps, SelectProps, SpaceProps, SwitchProps, TableProps, TabsProps, TagProps, TimePickerProps, TimeRangePickerProps, TooltipProps, TreeProps, TreeSelectProps, UploadProps } from 'antd';
9
8
  import { ConfigProviderProps } from 'antd/es/config-provider';
10
9
  import { PickerDateProps } from 'antd/es/date-picker/generatePicker';
10
+ import { FormListProps } from 'antd/es/form';
11
11
  import { CheckboxGroupProps } from 'antd/lib/checkbox';
12
12
  import { RangePickerDateProps } from 'antd/lib/date-picker/generatePicker';
13
- import { FormListFieldData, FormListOperation, FormListProps } from 'antd/lib/form/FormList';
14
13
  import { SearchProps, TextAreaProps } from 'antd/lib/input';
15
14
  import { ColumnsType } from 'antd/lib/table';
16
15
  import { UploadChangeParam } from 'antd/lib/upload';
@@ -116,6 +115,27 @@ export declare const dialogModal: {
116
115
  */
117
116
  close: () => void;
118
117
  };
118
+ export interface DropdownMenuItem extends ButtonProps {
119
+ text?: string | ReactElement;
120
+ color?: string;
121
+ onClick?: (event: React.MouseEvent<HTMLElement>) => void | Promise<void>;
122
+ permission?: string;
123
+ needConfirm?: boolean;
124
+ confirmMessage?: string;
125
+ hidden?: boolean;
126
+ confirmModalProps?: DialogModalProps;
127
+ }
128
+ export interface DropdownMenuWrapperProps extends Omit<DropdownProps, "menu"> {
129
+ menuList: Array<DropdownMenuItem | null>;
130
+ isFixed?: boolean;
131
+ }
132
+ /**
133
+ * DropdownMenuWrapper
134
+ * 升级 antd 5.5.1 后,Dropdown 中 Popconfirm弹框使用存在问题,所以在 @flatbiz/antd@4.2.49版本修改为使用dialogConfirm组件实现二次弹框确认功能
135
+ * @param props
136
+ * @returns
137
+ */
138
+ export declare const DropdownMenuWrapper: (props: DropdownMenuWrapperProps) => JSX.Element;
119
139
  export interface ButtonOperateItem extends ButtonWrapperProps {
120
140
  hidden?: boolean;
121
141
  /** hover 提示文字 */
@@ -152,9 +172,11 @@ export interface ButtonOperateProps {
152
172
  /** 间距,默认:10;split=true配置下无效(可通过spaceProps设置间距) */
153
173
  gap?: number;
154
174
  style?: CSSProperties;
175
+ /** 折叠合拢属性 */
176
+ dropdownMenuProps?: Omit<DropdownMenuWrapperProps, "menuList">;
155
177
  }
156
178
  export declare const ButtonOperateItemContent: (props: Pick<ButtonOperateItem, "hoverTips" | "tipsType"> & {
157
- children?: ReactNode;
179
+ content: ReactNode;
158
180
  }) => JSX.Element;
159
181
  /**
160
182
  * 按钮组合处理组件
@@ -306,7 +328,7 @@ export interface DrawerActionsParamType {
306
328
  * drawer弹窗模型
307
329
  * @param key 唯一值必传
308
330
  * @returns
309
- * @deprecated 废弃 DrawerWrapper @4.3.0版本移除
331
+ * @deprecated 废弃 DrawerWrapper 4.3.0版本移除
310
332
  *
311
333
  * ```
312
334
  * 使用方式
@@ -335,7 +357,7 @@ export interface ModalActionsParamType {
335
357
  /**
336
358
  * modal弹窗模型
337
359
  * @param key 唯一值必传
338
- * @deprecated 废弃 ModalWrapper @4.3.0版本移除
360
+ * @deprecated 废弃 ModalWrapper 4.3.0版本移除
339
361
  *
340
362
  * ```
341
363
  * 使用方式
@@ -576,6 +598,8 @@ export type DragCollapseItem = {
576
598
  content: ReactElement;
577
599
  };
578
600
  export type DragCollapseProps = {
601
+ className?: string;
602
+ style?: CSSProperties;
579
603
  /** 面板数据 */
580
604
  items: DragCollapseItem[];
581
605
  /** 拖拽面板回调 */
@@ -600,85 +624,72 @@ export type DragCollapseProps = {
600
624
  dragIcon?: ReactElement;
601
625
  /** 切换面板的回调 */
602
626
  onChange?: (activeKey?: DragCollapseItemKey | DragCollapseItemKey[]) => void;
603
- className?: string;
604
- style?: CSSProperties;
605
627
  };
606
628
  /**
607
629
  * 可拖拽 折叠面板
608
- * @demo https://fex.qa.tcshuke.com/docs/admin/main/move/sort
630
+ * @param props
631
+ * @returns
609
632
  */
610
633
  export declare const DragCollapse: (props: DragCollapseProps) => JSX.Element;
611
- export type DragDropProps<T> = {
612
- /** dataList数组对象中唯一值字段key */
613
- uidFieldKey: string;
614
- dataList: T[];
615
- children: (item: T, index: number) => ReactElement;
616
- /** 拖拽方向 */
617
- direction?: "horizontal" | "vertical";
618
- /** 拖拽结束回调 */
619
- onDragEnd: (dataList: T[], result: DropResult, provided: ResponderProvided) => void;
620
- className?: string;
621
- style?: CSSProperties;
622
- };
623
- export type DraggableItemProps = {
624
- /** 拖拽节点ID */
625
- draggableId: string;
626
- /** 拖拽节点数组索引 */
627
- index: number;
628
- children: ReactElement;
629
- /** 是否禁用拖拽节点 */
630
- isDragDisabled?: boolean;
631
- dragCancelMove?: boolean;
632
- component?: boolean;
633
- className?: string;
634
+ export type DragCollapseFormListHeaderProps = {
635
+ /** Form.List item fieldData */
636
+ formListFieldData: FormListFieldData;
637
+ /** 当前阶段 完整 formItem name */
638
+ formStageCompleteName: string | number | (string | number)[];
639
+ /** Form.List 操作项 */
640
+ operation: FormListOperation;
641
+ uid: string | number;
642
+ };
643
+ export type DragCollapseFormListContentProps = {
644
+ /** Form.List item fieldData */
645
+ formListFieldData: FormListFieldData;
646
+ /** 当前阶段 完整 formItem name */
647
+ formStageCompleteName: string | number | (string | number)[];
648
+ /** Form.List 操作项 */
649
+ operation: FormListOperation;
650
+ uid: string | number;
634
651
  };
635
- export type DroppableItemProps = {
636
- /** 拖拽范围ID */
637
- droppableId: string;
638
- children: (dropProvided: DroppableProvided, dropSnapshot: DroppableStateSnapshot) => ReactElement;
639
- /** 拖拽方向 */
640
- direction?: "horizontal" | "vertical";
641
- /** 拖拽范围禁止 */
642
- isDropDisabled?: boolean;
652
+ export type DragCollapseFormListProps = {
643
653
  className?: string;
644
- renderClone?: DraggableChildrenFn;
645
- type?: string;
646
- };
647
- export declare const DragDrop: (<T extends object = any>(props: DragDropProps<T>) => JSX.Element) & {
648
- /**
649
- * 拖拽节点
650
- * @demo https://fex.qa.tcshuke.com/docs/admin/main/move/sort
651
- * ```
652
- * 1. index 为索引值,从0开始递增,必须正确传递
653
- * 2. droppableIndex 为父节点 DroppableItem 的索引值
654
- * 3. 当 DraggableItem处在map循环中注意事项
655
- * A. 如果为跟节点 key 赋值要与 draggableId 相同
656
- * ```
657
- */
658
- DraggableItem: (props: DraggableItemProps) => JSX.Element;
659
- /**
660
- * 拖拽范围设置
661
- * @demo https://fex.qa.tcshuke.com/docs/admin/main/move/sort
662
- */
663
- DroppableItem: (props: DroppableItemProps) => JSX.Element;
664
- };
665
- export type DragDropMultiProps<T> = {
666
- uidFieldKey: string;
667
- dataList: T[][];
668
- children: (item: T, index: number) => ReactElement;
669
- direction?: "horizontal" | "vertical";
670
- onDragEnd: (dataList: T[][], result: DropResult, provided: ResponderProvided) => void;
654
+ style?: CSSProperties;
655
+ /** formList name */
656
+ formListName: string | number | (string | number)[];
657
+ /** 拖拽面板回调 */
658
+ onDropChange?: (items: TPlainObject[]) => void;
659
+ /** 手风琴模式,只允许单个内容区域展开 */
660
+ accordion?: boolean;
661
+ /** 当前激活 tab 面板的key */
662
+ activeKey?: number | number[];
663
+ /** 所有子面板是否可折叠或指定可折叠触发区域,可选: header | icon | disabled */
664
+ collapsible?: CollapseProps["collapsible"];
665
+ /** 初始化选中面板的 key */
666
+ defaultActiveKey?: number[];
667
+ /** 自定义切换图标 */
668
+ expandIcon?: CollapseProps["expandIcon"];
669
+ /** 设置图标位置,可选:start | end */
670
+ expandIconPosition?: CollapseProps["expandIconPosition"];
671
+ /** 设置折叠面板大小 */
672
+ size?: CollapseProps["size"];
673
+ /** 设置拖拽图标 */
674
+ dragIcon?: ReactElement;
675
+ /** 切换面板的回调 */
676
+ onChange?: (activeKey?: number | string | (number | string)[]) => void;
677
+ /** 禁用拖拽,拖拽图标隐藏 */
678
+ dragDisabled?: boolean;
679
+ /** 折叠面板 header 渲染 */
680
+ header: (data: DragCollapseFormListHeaderProps) => ReactElement;
681
+ /** 折叠面板 content 渲染 */
682
+ content: (data: DragCollapseFormListContentProps) => ReactElement;
683
+ /** 设置面板禁止拖拽 */
684
+ getItemDragDisabled?: (uid: string | number, index: number) => boolean;
671
685
  };
672
686
  /**
673
- * 拖拽(多个)
674
- * @param props
675
- * @returns
687
+ * 可拖拽 折叠面板+FormList
676
688
  * ```
677
- * 1. dataList数组中必须要有唯一值字段
678
- * 2. uidFieldKey dataList数组对象中唯一值字段key
689
+ * 1. FormList数组中必须要有 uid 唯一值字段
679
690
  * ```
680
691
  */
681
- export declare const DragDropMulti: <T extends object = any>(props: DragDropMultiProps<T>) => JSX.Element;
692
+ export declare const DragCollapseFormList: (props: DragCollapseFormListProps) => JSX.Element;
682
693
  export interface DrawerOperationProps {
683
694
  loading?: boolean;
684
695
  okText?: string;
@@ -707,7 +718,7 @@ declare const DrawerWrapperContent: (props: {
707
718
  declare const DrawerWrapperFooter: (props: any) => JSX.Element;
708
719
  /**
709
720
  * 弹窗机制
710
- * @deprecated 已过时 @4.3.0版本移除;请使用 dialogDrawer.open
721
+ * @deprecated 已过时 4.3.0版本移除;请使用 dialogDrawer.open
711
722
  * ```
712
723
  * 1. 默认 destroyOnClose = true
713
724
  * 2. 默认 forceRender = false
@@ -720,27 +731,6 @@ declare const DrawerWrapperFooter: (props: any) => JSX.Element;
720
731
  * ```
721
732
  */
722
733
  export declare const DrawerWrapper: FC<DrawerWrapperProps> & DrawerWrapperStaticMethods;
723
- export interface DropdownMenuItem extends ButtonProps {
724
- text?: string | ReactElement;
725
- color?: string;
726
- onClick?: (event: React.MouseEvent<HTMLElement>) => void | Promise<void>;
727
- permission?: string;
728
- needConfirm?: boolean;
729
- confirmMessage?: string;
730
- hidden?: boolean;
731
- confirmModalProps?: DialogModalProps;
732
- }
733
- export interface DropdownMenuWrapperProps extends Omit<DropdownProps, "menu"> {
734
- menuList: Array<DropdownMenuItem | null>;
735
- isFixed?: boolean;
736
- }
737
- /**
738
- * DropdownMenuWrapper
739
- * 升级 antd 5.5.1 后,Dropdown 中 Popconfirm弹框使用存在问题,所以在 @flatbiz/antd@4.2.49版本修改为使用dialogConfirm组件实现二次弹框确认功能
740
- * @param props
741
- * @returns
742
- */
743
- export declare const DropdownMenuWrapper: (props: DropdownMenuWrapperProps) => JSX.Element;
744
734
  export type TDynamicNodeProps = {
745
735
  className?: string;
746
736
  getContainer?: HTMLElement | (() => HTMLElement) | string;
@@ -804,7 +794,7 @@ export type EasyTableProps = {
804
794
  initialValues?: TPlainObject;
805
795
  /**
806
796
  * 分页初始化参数,默认值: pageSize = 10
807
- * @deprecated 已过时 @4.3.0版本移除,使用 pageSize 赋值
797
+ * @deprecated 已过时 4.3.0版本移除,使用 pageSize 赋值
808
798
  */
809
799
  initialPaginationParams?: {
810
800
  pageSize?: number;
@@ -966,7 +956,7 @@ export declare const EasyTable: import("react").ForwardRefExoticComponent<EasyTa
966
956
  */
967
957
  Table: (props: EasyTableTableProps) => JSX.Element;
968
958
  /**
969
- * @deprecated 已过时 @4.3.0版本移除,请使用 useEasyTable
959
+ * @deprecated 已过时 4.3.0版本移除,请使用 useEasyTable
970
960
  */
971
961
  useEasyTablRef: () => import("react").MutableRefObject<EasyTableRefApi>;
972
962
  /** 在 EasyTable子组件内才可使用 */
@@ -1315,7 +1305,7 @@ export type EditableTableColumn = Omit<ColumnsType["0"], "render"> & {
1315
1305
  }) => ReactElement | null;
1316
1306
  };
1317
1307
  export type EditableTableProps = {
1318
- name: string;
1308
+ name: EditableTableName;
1319
1309
  /**
1320
1310
  * ```
1321
1311
  * antd table属性
@@ -1351,7 +1341,7 @@ export type EditorWrapperProps = {
1351
1341
  };
1352
1342
  /**
1353
1343
  * 富文本编辑器,配置参考tinymce
1354
- * @deprecated 已过时 @4.3.0版本移除,请使用 RichTextEditor 组件
1344
+ * @deprecated 已过时 4.3.0版本移除,请使用 RichTextEditor 组件
1355
1345
  * @param props
1356
1346
  * @returns
1357
1347
  * ```
@@ -1729,7 +1719,7 @@ declare const ModalWrapperContent: (props: {
1729
1719
  declare const ModalWrapperFooter: (props: any) => JSX.Element;
1730
1720
  /**
1731
1721
  * 弹窗机制
1732
- * @deprecated 已过时 @4.3.0版本移除,后面版本会移除;请使用 dialogModal.open
1722
+ * @deprecated 已过时 4.3.0版本移除,后面版本会移除;请使用 dialogModal.open
1733
1723
  * ```
1734
1724
  * 1. 默认 destroyOnClose = true
1735
1725
  * 2. 默认 forceRender = false
@@ -2269,7 +2259,7 @@ export declare const tableCellRender: {
2269
2259
  extraContentRender: (handle: (item: TPlainObject) => TableColumnIconRenderProps) => (value: TAny, item: TPlainObject) => any;
2270
2260
  /**
2271
2261
  * table 索引展示,如果存在pageSize、pageNo参数可分页展示索引,否则每页都从1开始
2272
- * @deprecated 已过时 @4.3.0版本移除,请使用 serialNumberCell
2262
+ * @deprecated 已过时 4.3.0版本移除,请使用 serialNumberCell
2273
2263
  */
2274
2264
  indexCell: (pageNo?: number, pageSize?: number) => (_value: any, _record: any, index: number) => number;
2275
2265
  /**
@@ -2373,7 +2363,7 @@ export declare const TableTitleTooltip: (props: TableTitleTooltipProps) => JSX.E
2373
2363
  export type TabsWrapperProps = TabsProps & {
2374
2364
  /**
2375
2365
  * Tabs Header 提供 Sticky 效果,默认值:true
2376
- * @deprecated 已废弃 @4.3.0版本移除,请使用 isFixed 属性
2366
+ * @deprecated 已废弃 4.3.0版本移除,请使用 isFixed 属性
2377
2367
  */
2378
2368
  isSticky?: boolean;
2379
2369
  /**
@@ -2716,22 +2706,16 @@ export type TreeWrapperProps = Omit<TreeProps, "treeData" | "onExpand" | "select
2716
2706
  loadDataFlag?: boolean;
2717
2707
  /**
2718
2708
  * 菜单结构类型 tile/平铺 fold/折叠;默认:fold
2709
+ * @deprecated 已过期 4.3.0版本移除,请使用 menus
2719
2710
  * ```
2720
2711
  * 自定义设置 titleRender 后失效
2721
2712
  * ```
2722
2713
  */
2723
2714
  menuLayoutType?: "tile" | "fold";
2724
- /**
2725
- * 菜单触发类型,默认:click
2726
- * ```
2727
- * 自定义设置 titleRender 后失效
2728
- * ```
2729
- */
2730
- menuTriggerType?: "click" | "hover";
2731
2715
  /**
2732
2716
  * 获取菜单类别
2733
2717
  * @param dataItem
2734
- * @deprecated 已过期 @4.3.0版本移除,请使用 menuOptions
2718
+ * @deprecated 已过期 4.3.0版本移除,请使用 menus
2735
2719
  * @returns
2736
2720
  * ```
2737
2721
  * 1. menuLayoutType = tile 无效
@@ -2741,11 +2725,20 @@ export type TreeWrapperProps = Omit<TreeProps, "treeData" | "onExpand" | "select
2741
2725
  getMenuOptions?: (dataItem: TPlainObject) => DropdownMenuItem[] | ButtonOperateItem[];
2742
2726
  /**
2743
2727
  * 根据 menuLayoutType 类型赋值
2728
+ * @deprecated 已过期 4.3.0版本移除,请使用 menuOptions
2744
2729
  */
2745
2730
  menuOptions?: {
2746
2731
  tile?: (dataItem: TPlainObject) => ButtonOperateProps;
2747
2732
  fold?: (dataItem: TPlainObject) => DropdownMenuItem[];
2748
2733
  };
2734
+ /**
2735
+ * 菜单触发类型,默认:click
2736
+ * ```
2737
+ * 自定义设置 titleRender 后失效
2738
+ * ```
2739
+ */
2740
+ menuTriggerType?: "click" | "hover";
2741
+ menus?: (dataItem: any) => ButtonOperateProps;
2749
2742
  showSearch?: boolean;
2750
2743
  onSearchValueChange?: (searchValue?: string) => void;
2751
2744
  searchPlaceholder?: string;
@@ -2870,12 +2863,13 @@ export declare const TreeWrapper: import("react").ForwardRefExoticComponent<Omit
2870
2863
  checkableResponseParentNode?: boolean | undefined;
2871
2864
  loadDataFlag?: boolean | undefined;
2872
2865
  menuLayoutType?: "tile" | "fold" | undefined;
2873
- menuTriggerType?: "click" | "hover" | undefined;
2874
2866
  getMenuOptions?: ((dataItem: import("@flatbiz/utils").TPlainObject) => ButtonOperateItem[] | DropdownMenuItem[]) | undefined;
2875
2867
  menuOptions?: {
2876
2868
  tile?: ((dataItem: import("@flatbiz/utils").TPlainObject) => ButtonOperateProps) | undefined;
2877
2869
  fold?: ((dataItem: import("@flatbiz/utils").TPlainObject) => DropdownMenuItem[]) | undefined;
2878
2870
  } | undefined;
2871
+ menuTriggerType?: "click" | "hover" | undefined;
2872
+ menus?: ((dataItem: any) => ButtonOperateProps) | undefined;
2879
2873
  showSearch?: boolean | undefined;
2880
2874
  onSearchValueChange?: ((searchValue?: string | undefined) => void) | undefined;
2881
2875
  searchPlaceholder?: string | undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flatbiz/antd",
3
- "version": "4.2.55",
3
+ "version": "4.2.57",
4
4
  "description": "flat-biz ui components",
5
5
  "main": "index.js",
6
6
  "typings": "index.d.ts",
@@ -59,7 +59,10 @@
59
59
  "dequal": "^2.0.3",
60
60
  "pubsub-js": "^1.9.4",
61
61
  "@tinymce/tinymce-react": "^4.3.0",
62
- "@hello-pangea/dnd": "^16.2.0"
62
+ "@dnd-kit/core": "^6.0.8",
63
+ "@dnd-kit/modifiers": "^6.0.1",
64
+ "@dnd-kit/sortable": "^7.0.2",
65
+ "@dnd-kit/utilities": "^3.2.1"
63
66
  },
64
67
  "gitHead": "4378d433b73ee28fd7cb4c64bed8571f993eb5a9"
65
68
  }
@@ -1,3 +0,0 @@
1
- /*! @flatjs/forge MIT @flatbiz/antd */
2
- import r from"@ant-design/icons/es/icons/MoreOutlined";import{a as e,_ as i}from"./_rollupPluginBabelHelpers-1f4d8910.js";import{isUndefined as n}from"@dimjs/lang/cjs/is-undefined";import{classNames as o}from"@dimjs/utils/cjs/class-names";import{isPlainObject as t}from"@dimjs/lang/cjs/is-plain-object";import{isString as s}from"@dimjs/lang/cjs/is-string";import{isPromise as l}from"@dimjs/lang/cjs/is-promise";import{hooks as a}from"@wove/react/cjs/hooks";import{Popover as p,Tooltip as c,Space as f,Divider as u,Popconfirm as d,Button as m}from"antd";import{Fragment as v,useState as h,isValidElement as g,useMemo as T,createElement as y}from"react";import{B as j}from"./button-wrapper-125fce50.js";import{D as k}from"./dropdown-menu-wrapper-98347af8.js";import{f as C}from"./fba-utils-f9e11d02.js";import{jsx as P,jsxs as b}from"react/jsx-runtime";var w=["text","onClick","needConfirm","confirmMessage","popconfirmProps","hoverTips"];var x=function r(e){if(e.hoverTips){if(e.tipsType==="popover"){return P(p,{content:e.hoverTips,zIndex:1e3,children:P("span",{children:e.children})})}return P(c,{title:e.hoverTips,zIndex:1e3,children:P("span",{children:e.children})})}return P(v,{children:e.children})};var B=function p(c){var v=h(false),B=v[0],I=v[1];var z=a.useCallbackRef((function(r,e){var i=r.onClick==null?void 0:r.onClick(e);if(i&&l(i)){I(true);return i.finally((function(){I(false)}))}return}));var F=c.operateList.filter((function(r){if(!r)return false;if(g(r)){var e,i;if(((e=r.props)==null?void 0:e["hidden"])===true)return false;var n=(i=r.props)==null?void 0:i["v-permission"];if(s(n)){return C.hasPermission(n)}return true}if(t(r)){if(!C.hasPermission(r["permission"])){return false}return!r["hidden"]}return false}));var M=T((function(){return F.filter((function(r){if(g(r)){return true}return!r["isFold"]}))}),[F]);var N=T((function(){var r=F.filter((function(r){if(g(r)){return false}return r["isFold"]}));var i=[];r.forEach((function(r){var n=e({},r);delete n.isFold;i.push(n)}));return i}),[F]);var O=c.gap===undefined?10:c.gap;var H=!c.split?O:0;return P("div",{className:o("table-operate",c.className),style:c.style,children:b(f,e({split:c.split?P(u,{type:"vertical"}):null,size:H,wrap:n(c.wrap)?true:c.wrap},c.spaceProps,{children:[M.map((function(r,n){if(r&&g(r)){return P(x,{hoverTips:r.hoverTips,tipsType:r.tipsType,children:r},n)}var o=r.text,t=r.onClick,s=r.needConfirm,l=r.confirmMessage,a=r.popconfirmProps,p=r.hoverTips,c=i(r,w);var f=r.type||"link";if(s&&!c.disabled){var u=!!r.color?false:true;return y(d,e({okText:"确定",cancelText:"取消",trigger:["click"],placement:"topRight",arrow:true,destroyTooltipOnHide:true},a,{title:l,onConfirm:z.bind(null,r),key:n,okButtonProps:{loading:B},onOpenChange:function r(e){if(!e){I(false)}},onCancel:function r(e){e==null?void 0:e.stopPropagation()}}),P(j,e({danger:u},c,{onClick:function r(e){e.stopPropagation()},type:f,children:P(x,{hoverTips:p,tipsType:r.tipsType,children:o},n)})))}return y(j,e({loadingPosition:"center"},c,{type:f,onClick:function r(e){e.stopPropagation();return t==null?void 0:t(e)},key:n}),P(x,{hoverTips:p,tipsType:r.tipsType,children:o}))})),N.length>0?P(k,{menuList:N,children:P(m,{type:"link",className:"fold-more-button",onClick:function r(e){e.stopPropagation()},children:c.foldIcon?c.foldIcon:P(r,{})})}):null]}))})};B.defaultProps={split:true};export{x as B,B as a};
3
- //# sourceMappingURL=button-operate-fb40320e.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"button-operate-fb40320e.js","sources":["@flatbiz/antd/src/button-operate/button-operate.tsx"],"sourcesContent":["import { MoreOutlined } from '@ant-design/icons';\nimport { isPlainObject, isPromise, isString, isUndefined } from '@dimjs/lang';\nimport { classNames } from '@dimjs/utils';\nimport { hooks } from '@wove/react';\nimport { Button, Divider, Popconfirm, PopconfirmProps, Popover, Space, SpaceProps, Tooltip } from 'antd';\nimport {\n CSSProperties,\n FC,\n Fragment,\n isValidElement,\n ReactElement,\n ReactNode,\n useMemo,\n useState,\n} from 'react';\nimport { ButtonWrapper, ButtonWrapperProps } from '../button-wrapper';\nimport { DropdownMenuWrapper } from '../dropdown-menu-wrapper';\nimport { fbaUtils } from '../fba-utils';\n\nimport { DialogModalProps } from '../dialog-modal';\nimport './style.less';\n\nexport interface ButtonOperateItem extends ButtonWrapperProps {\n hidden?: boolean;\n /** hover 提示文字 */\n hoverTips?: string | React.ReactElement;\n /** hover 提示类型 默认:'tooltip' */\n tipsType?: 'popover' | 'tooltip';\n text?: string | ReactElement;\n color?: string;\n onClick?: (event: React.MouseEvent<HTMLElement>) => void | Promise<void>;\n permission?: string;\n /** 是否需要二次弹框确认 */\n needConfirm?: boolean;\n /** 二次弹框确认文案 */\n confirmMessage?: string;\n /* isFold=false & needConfirm=true 有效 */\n popconfirmProps?: Pick<PopconfirmProps, 'placement' | 'okText' | 'cancelText' | 'trigger'>;\n /** 是否折叠合拢 */\n isFold?: boolean;\n /* isFold=true & needConfirm=true 有效 */\n confirmModalProps?: DialogModalProps;\n}\n\nexport interface ButtonOperateProps {\n /**\n * 如果数组中元素为ReactElement类型\n * 1. 一般为antd Button组件,如果组件存在属性hidden=true,则会隐藏\n * 2. 可配置 v-permission 权限值,例如 v-permission=\"add\"\n * 3. 任何confirm、disabled等状态在外部控制\n * 3. 不支持fold效果\n */\n operateList: Array<ButtonOperateItem | null | ReactElement>;\n wrap?: boolean;\n foldIcon?: ReactElement;\n className?: string;\n split?: boolean;\n spaceProps?: SpaceProps;\n /** 间距,默认:10;split=true配置下无效(可通过spaceProps设置间距) */\n gap?: number;\n style?: CSSProperties;\n}\n\nexport const ButtonOperateItemContent = (\n props: Pick<ButtonOperateItem, 'hoverTips' | 'tipsType'> & { children?: ReactNode },\n) => {\n if (props.hoverTips) {\n if (props.tipsType === 'popover') {\n return (\n <Popover content={props.hoverTips} zIndex={1000}>\n <span>{props.children}</span>\n </Popover>\n );\n }\n return (\n <Tooltip title={props.hoverTips} zIndex={1000}>\n <span>{props.children}</span>\n </Tooltip>\n );\n }\n return <Fragment>{props.children}</Fragment>;\n};\n\n/**\n * 按钮组合处理组件\n * ```\n * @flatbiz/antd@4.2.49\n * 1. 替换 Fold 中 needConfirm交互,有 Popconfirm 改为 dialogConfirm组件实现二次弹框确认功能\n * 2. 修改原因:升级 antd 5.5.1 后,Dropdown 中 Popconfirm弹框组合使用存在问题\n * ```\n */\nexport const ButtonOperate: FC<ButtonOperateProps> = (props) => {\n const [loading, setLoading] = useState(false);\n\n const onConfirm = hooks.useCallbackRef((item: ButtonOperateItem, event) => {\n const result = item.onClick?.(event);\n if (result && isPromise(result)) {\n setLoading(true);\n return result.finally(() => {\n setLoading(false);\n });\n }\n return;\n });\n\n const operateList = props.operateList.filter((item) => {\n if (!item) return false;\n if (isValidElement(item)) {\n if (item.props?.['hidden'] === true) return false;\n const permission = item.props?.['v-permission'];\n if (isString(permission)) {\n return fbaUtils.hasPermission(permission);\n }\n return true;\n }\n if (isPlainObject(item)) {\n if (!fbaUtils.hasPermission(item['permission'])) {\n return false;\n }\n return !item['hidden'];\n }\n return false;\n }) as Array<ButtonOperateItem | ReactElement>;\n\n const viewList = useMemo(() => {\n return operateList.filter((item) => {\n if (isValidElement(item)) {\n return true;\n }\n return !item['isFold'];\n }) as ButtonOperateItem[];\n }, [operateList]);\n\n const foldList = useMemo(() => {\n const filterList = operateList.filter((item) => {\n if (isValidElement(item)) {\n return false;\n }\n return item['isFold'];\n }) as ButtonOperateItem[];\n const result = [] as ButtonOperateItem[];\n filterList.forEach((item) => {\n const target = { ...item };\n // 多余字段渲染到react dom上,出现警告\n delete target.isFold;\n result.push(target);\n });\n return result;\n }, [operateList]);\n\n const gap = props.gap === undefined ? 10 : props.gap;\n const size = !props.split ? gap : 0;\n\n return (\n <div className={classNames('table-operate', props.className)} style={props.style}>\n <Space\n split={props.split ? <Divider type=\"vertical\" /> : null}\n size={size}\n wrap={isUndefined(props.wrap) ? true : props.wrap}\n {...props.spaceProps}\n >\n {viewList.map((item, index) => {\n if (item && isValidElement(item)) {\n return (\n <ButtonOperateItemContent hoverTips={item.hoverTips} tipsType={item.tipsType} key={index}>\n {item}\n </ButtonOperateItemContent>\n );\n }\n const { text, onClick, needConfirm, confirmMessage, popconfirmProps, hoverTips, ...otherProps } =\n item;\n const type = item.type || 'link';\n if (needConfirm && !otherProps.disabled) {\n const danger = !!item.color ? false : true;\n return (\n <Popconfirm\n okText=\"确定\"\n cancelText=\"取消\"\n trigger={['click']}\n placement=\"topRight\"\n arrow={true}\n destroyTooltipOnHide={true}\n {...popconfirmProps}\n title={confirmMessage}\n onConfirm={onConfirm.bind(null, item)}\n key={index}\n okButtonProps={{\n loading,\n }}\n onOpenChange={(_open) => {\n if (!_open) {\n setLoading(false);\n }\n }}\n onCancel={(event) => {\n event?.stopPropagation();\n }}\n >\n <ButtonWrapper\n danger={danger}\n {...otherProps}\n onClick={(event) => {\n event.stopPropagation();\n }}\n type={type}\n >\n <ButtonOperateItemContent hoverTips={hoverTips} tipsType={item.tipsType} key={index}>\n {text}\n </ButtonOperateItemContent>\n </ButtonWrapper>\n </Popconfirm>\n );\n }\n return (\n <ButtonWrapper\n loadingPosition=\"center\"\n {...otherProps}\n type={type}\n onClick={(event) => {\n event.stopPropagation();\n return onClick?.(event);\n }}\n key={index}\n >\n <ButtonOperateItemContent hoverTips={hoverTips} tipsType={item.tipsType}>\n {text}\n </ButtonOperateItemContent>\n </ButtonWrapper>\n );\n })}\n {foldList.length > 0 ? (\n <DropdownMenuWrapper menuList={foldList}>\n <Button\n type=\"link\"\n className=\"fold-more-button\"\n onClick={(event) => {\n event.stopPropagation();\n }}\n >\n {props.foldIcon ? props.foldIcon : <MoreOutlined />}\n </Button>\n </DropdownMenuWrapper>\n ) : null}\n </Space>\n </div>\n );\n};\n\nButtonOperate.defaultProps = {\n split: true,\n};\n"],"names":["ButtonOperateItemContent","props","hoverTips","tipsType","_jsx","Popover","content","zIndex","children","Tooltip","title","Fragment","ButtonOperate","_useState","useState","loading","setLoading","onConfirm","_hooks","useCallbackRef","item","event","result","onClick","_isPromise","finally","operateList","filter","isValidElement","_item$props","_item$props2","permission","_isString","fbaUtils","hasPermission","_isPlainObject","viewList","useMemo","foldList","filterList","forEach","target","_extends","isFold","push","gap","undefined","size","split","className","_classNames","style","_jsxs","Space","Divider","type","wrap","_isUndefined","spaceProps","map","index","text","needConfirm","confirmMessage","popconfirmProps","otherProps","_objectWithoutPropertiesLoose","_excluded","disabled","danger","color","_createElement","Popconfirm","okText","cancelText","trigger","placement","arrow","destroyTooltipOnHide","bind","key","okButtonProps","onOpenChange","_open","onCancel","stopPropagation","ButtonWrapper","loadingPosition","length","DropdownMenuWrapper","menuList","Button","foldIcon","_MoreOutlined","defaultProps"],"mappings":";66BA+DaA,EAA2B,SAA3BA,EACXC,GAEA,GAAIA,EAAMC,UAAW,CACnB,GAAID,EAAME,WAAa,UAAW,CAChC,OACEC,EAACC,EAAO,CAACC,QAASL,EAAMC,UAAWK,OAAQ,IAAKC,SAC9CJ,EAAA,OAAA,CAAAI,SAAOP,EAAMO,YAGnB,CACA,OACEJ,EAACK,EAAO,CAACC,MAAOT,EAAMC,UAAWK,OAAQ,IAAKC,SAC5CJ,EAAA,OAAA,CAAAI,SAAOP,EAAMO,YAGnB,CACA,OAAOJ,EAACO,EAAQ,CAAAH,SAAEP,EAAMO,UAC1B,MAUaI,EAAwC,SAAxCA,EAAyCX,GACpD,IAAAY,EAA8BC,EAAS,OAAhCC,EAAOF,EAAA,GAAEG,EAAUH,EAAA,GAE1B,IAAMI,EAAYC,EAAMC,gBAAe,SAACC,EAAyBC,GAC/D,IAAMC,EAASF,EAAKG,SAALH,UAAAA,EAAAA,EAAKG,QAAUF,GAC9B,GAAIC,GAAUE,EAAUF,GAAS,CAC/BN,EAAW,MACX,OAAOM,EAAOG,SAAQ,WACpBT,EAAW,MACb,GACF,CACA,MACF,IAEA,IAAMU,EAAczB,EAAMyB,YAAYC,QAAO,SAACP,GAC5C,IAAKA,EAAM,OAAO,MAClB,GAAIQ,EAAeR,GAAO,CAAA,IAAAS,EAAAC,EACxB,KAAID,EAAAT,EAAKnB,QAAK,UAAA,EAAV4B,EAAa,aAAc,KAAM,OAAO,MAC5C,IAAME,GAAUD,EAAGV,EAAKnB,QAAL6B,UAAAA,EAAAA,EAAa,gBAChC,GAAIE,EAASD,GAAa,CACxB,OAAOE,EAASC,cAAcH,EAChC,CACA,OAAO,IACT,CACA,GAAII,EAAcf,GAAO,CACvB,IAAKa,EAASC,cAAcd,EAAK,eAAgB,CAC/C,OAAO,KACT,CACA,OAAQA,EAAK,SACf,CACA,OAAO,KACT,IAEA,IAAMgB,EAAWC,GAAQ,WACvB,OAAOX,EAAYC,QAAO,SAACP,GACzB,GAAIQ,EAAeR,GAAO,CACxB,OAAO,IACT,CACA,OAAQA,EAAK,SACf,GACF,GAAG,CAACM,IAEJ,IAAMY,EAAWD,GAAQ,WACvB,IAAME,EAAab,EAAYC,QAAO,SAACP,GACrC,GAAIQ,EAAeR,GAAO,CACxB,OAAO,KACT,CACA,OAAOA,EAAK,SACd,IACA,IAAME,EAAS,GACfiB,EAAWC,SAAQ,SAACpB,GAClB,IAAMqB,EAAMC,EAAA,CAAA,EAAQtB,UAEbqB,EAAOE,OACdrB,EAAOsB,KAAKH,EACd,IACA,OAAOnB,CACT,GAAG,CAACI,IAEJ,IAAMmB,EAAM5C,EAAM4C,MAAQC,UAAY,GAAK7C,EAAM4C,IACjD,IAAME,GAAQ9C,EAAM+C,MAAQH,EAAM,EAElC,OACEzC,EAAA,MAAA,CAAK6C,UAAWC,EAAW,gBAAiBjD,EAAMgD,WAAYE,MAAOlD,EAAMkD,MAAM3C,SAC/E4C,EAACC,EAAKX,EAAA,CACJM,MAAO/C,EAAM+C,MAAQ5C,EAACkD,EAAO,CAACC,KAAK,aAAgB,KACnDR,KAAMA,EACNS,KAAMC,EAAYxD,EAAMuD,MAAQ,KAAOvD,EAAMuD,MACzCvD,EAAMyD,WAAU,CAAAlD,SAAA,CAEnB4B,EAASuB,KAAI,SAACvC,EAAMwC,GACnB,GAAIxC,GAAQQ,EAAeR,GAAO,CAChC,OACEhB,EAACJ,EAAwB,CAACE,UAAWkB,EAAKlB,UAAWC,SAAUiB,EAAKjB,SAASK,SAC1EY,GADgFwC,EAIvF,CACA,IAAQC,EACNzC,EADMyC,KAAMtC,EACZH,EADYG,QAASuC,EACrB1C,EADqB0C,YAAaC,EAClC3C,EADkC2C,eAAgBC,EAClD5C,EADkD4C,gBAAiB9D,EACnEkB,EADmElB,UAAc+D,EAAUC,EAC3F9C,EAAI+C,GACN,IAAMZ,EAAOnC,EAAKmC,MAAQ,OAC1B,GAAIO,IAAgBG,EAAWG,SAAU,CACvC,IAAMC,IAAWjD,EAAKkD,MAAQ,MAAQ,KACtC,OACEC,EAACC,EAAU9B,EAAA,CACT+B,OAAO,KACPC,WAAW,KACXC,QAAS,CAAC,SACVC,UAAU,WACVC,MAAO,KACPC,qBAAsB,MAClBd,EAAe,CACnBtD,MAAOqD,EACP9C,UAAWA,EAAU8D,KAAK,KAAM3D,GAChC4D,IAAKpB,EACLqB,cAAe,CACblE,QAAAA,GAEFmE,aAAc,SAAAA,EAACC,GACb,IAAKA,EAAO,CACVnE,EAAW,MACb,CACA,EACFoE,SAAU,SAAAA,EAAC/D,GACTA,GAAAA,UAAAA,EAAAA,EAAOgE,iBACT,IAEAjF,EAACkF,EAAa5C,EAAA,CACZ2B,OAAQA,GACJJ,EAAU,CACd1C,QAAS,SAAAA,EAACF,GACRA,EAAMgE,iBACN,EACF9B,KAAMA,EAAK/C,SAEXJ,EAACJ,EAAwB,CAACE,UAAWA,EAAWC,SAAUiB,EAAKjB,SAASK,SACrEqD,GAD2ED,MAMtF,CACA,OACEW,EAACe,EAAa5C,EAAA,CACZ6C,gBAAgB,UACZtB,EAAU,CACdV,KAAMA,EACNhC,QAAS,SAAAA,EAACF,GACRA,EAAMgE,kBACN,OAAO9D,GAAO,UAAA,EAAPA,EAAUF,EACjB,EACF2D,IAAKpB,IAELxD,EAACJ,EAAwB,CAACE,UAAWA,EAAWC,SAAUiB,EAAKjB,SAASK,SACrEqD,IAIR,IACAvB,EAASkD,OAAS,EACjBpF,EAACqF,EAAmB,CAACC,SAAUpD,EAAS9B,SACtCJ,EAACuF,EAAM,CACLpC,KAAK,OACLN,UAAU,mBACV1B,QAAS,SAAAA,EAACF,GACRA,EAAMgE,iBACN,EAAA7E,SAEDP,EAAM2F,SAAW3F,EAAM2F,SAAWxF,EAAAyF,EAAA,QAGrC,UAIZ,EAEAjF,EAAckF,aAAe,CAC3B9C,MAAO"}
@@ -1,3 +0,0 @@
1
- /*! @flatjs/forge MIT @flatbiz/antd */
2
- import{classNames as e}from"@dimjs/utils/cjs/class-names";import{array as n}from"@dimjs/utils/cjs/array";import i from"@ant-design/icons/es/icons/DragOutlined";import{hooks as a}from"@wove/react/cjs/hooks";import{FlexLayout as o}from"@flatbiz/antd";import{toArray as r}from"@flatbiz/utils";import{Collapse as t}from"antd";import{useState as c,useEffect as l}from"react";import{DragDrop as s}from"./drag-drop/index.js";import{fbaHooks as d}from"./fba-hooks/index.js";import{jsx as f,jsxs as m}from"react/jsx-runtime";var u=function u(p){var h=c([]),g=h[0],v=h[1];var y=a.useCallbackRef((function(e){p.onDropChange(e)}));d.useEffectCustom((function(){var e=r(p.defaultActiveKey);if(!p.activeKey&&e.length>0){v(e)}}),[p.defaultActiveKey]);l((function(){v(r(p.activeKey))}),[p.activeKey]);var k=function e(n){var a=p.dragIcon?p.dragIcon:f(i,{});return p.hideDragIcon?n.content:m(o,{fullIndex:1,direction:"horizontal",children:[f("span",{style:{display:"inline-block",marginRight:5},children:a}),f("span",{children:n.content})]})};var x=a.useCallbackRef((function(e){var i=[];if(p.accordion){if(g[0]&&g[0]===e){i=[]}else{i=[e]}}else{var a=g.includes(e);if(a){n.arrayRemove(g,e);i=[].concat(g)}else{i=g.concat(e)}}v(i);if(p.accordion){p.onChange==null?void 0:p.onChange(i.length?i[0]:undefined)}else{p.onChange==null?void 0:p.onChange(i.length?i:undefined)}}));return f(s,{onDragEnd:y,dataList:p.items,uidFieldKey:"key",className:e("drag-collapse-wrapper",p.className),style:p.style,children:function e(n){var i=g.includes(n.key);return f(t,{activeKey:i?n.key:undefined,accordion:true,className:"drag-collapse",collapsible:p.collapsible,expandIcon:p.expandIcon,expandIconPosition:p.expandIconPosition,size:p.size,onChange:x.bind(null,n.key),children:f(t.Panel,{header:k(n),children:f("div",{style:{padding:"10px"},children:n.content})},n.key)})}})};export{u as D};
3
- //# sourceMappingURL=drag-collapse-8d751c2b.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"drag-collapse-8d751c2b.js","sources":["@flatbiz/antd/src/drag-collapse/drag-collapse.tsx"],"sourcesContent":["import { DragOutlined } from '@ant-design/icons';\nimport { array, classNames } from '@dimjs/utils';\nimport { FlexLayout } from '@flatbiz/antd';\nimport { toArray } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Collapse, CollapseProps } from 'antd';\nimport { CSSProperties, ReactElement, ReactNode, useEffect, useState } from 'react';\nimport { DragDrop } from '../drag-drop';\nimport { fbaHooks } from '../fba-hooks';\nimport './style.less';\n\ntype DragCollapseItemKey = number | string;\ntype DragCollapseItem = { key: DragCollapseItemKey; header: ReactNode; content: ReactElement };\ntype DragCollapseProps = {\n /** 面板数据 */\n items: DragCollapseItem[];\n /** 拖拽面板回调 */\n onDropChange: (items: DragCollapseItem[]) => void;\n /** 手风琴模式,只允许单个内容区域展开 */\n accordion?: boolean;\n /** 当前激活 tab 面板的key */\n activeKey?: DragCollapseItemKey | DragCollapseItemKey[];\n /** 所有子面板是否可折叠或指定可折叠触发区域,可选: header | icon | disabled */\n collapsible?: CollapseProps['collapsible'];\n /** 初始化选中面板的 key */\n defaultActiveKey?: DragCollapseItemKey[];\n /** 自定义切换图标\t */\n expandIcon?: CollapseProps['expandIcon'];\n /** 设置图标位置,可选:start | end */\n expandIconPosition?: CollapseProps['expandIconPosition'];\n /** 设置折叠面板大小\t */\n size?: CollapseProps['size'];\n /** 隐藏拖拽图标,默认不隐藏 */\n hideDragIcon?: boolean;\n /** 设置拖拽图标 */\n dragIcon?: ReactElement;\n /** 切换面板的回调\t */\n onChange?: (activeKey?: DragCollapseItemKey | DragCollapseItemKey[]) => void;\n className?: string;\n style?: CSSProperties;\n};\n\n/**\n * 可拖拽 折叠面板\n * @demo https://fex.qa.tcshuke.com/docs/admin/main/move/sort\n */\nexport const DragCollapse = (props: DragCollapseProps) => {\n const [dragActiveKeys, setDragActiveKeys] = useState<DragCollapseItemKey[]>([]);\n const onDragEnd = hooks.useCallbackRef((dataList) => {\n props.onDropChange(dataList);\n });\n\n fbaHooks.useEffectCustom(() => {\n const defaultActiveKeys = toArray(props.defaultActiveKey);\n if (!props.activeKey && defaultActiveKeys.length > 0) {\n setDragActiveKeys(defaultActiveKeys as DragCollapseItemKey[]);\n }\n }, [props.defaultActiveKey]);\n\n useEffect(() => {\n setDragActiveKeys(toArray(props.activeKey));\n }, [props.activeKey]);\n\n const header = (item: DragCollapseItem) => {\n const dragIcon = props.dragIcon ? props.dragIcon : <DragOutlined />;\n return props.hideDragIcon ? (\n item.content\n ) : (\n <FlexLayout fullIndex={1} direction=\"horizontal\">\n <span style={{ display: 'inline-block', marginRight: 5 }}>{dragIcon}</span>\n <span>{item.content}</span>\n </FlexLayout>\n );\n };\n\n const onChange = hooks.useCallbackRef((key: DragCollapseItemKey) => {\n let dragActiveKeysNew: DragCollapseItemKey[] = [];\n if (props.accordion) {\n if (dragActiveKeys[0] && dragActiveKeys[0] === key) {\n dragActiveKeysNew = [];\n } else {\n dragActiveKeysNew = [key];\n }\n } else {\n const has = dragActiveKeys.includes(key);\n if (has) {\n array.arrayRemove(dragActiveKeys, key);\n dragActiveKeysNew = [...dragActiveKeys];\n } else {\n dragActiveKeysNew = dragActiveKeys.concat(key);\n }\n }\n setDragActiveKeys(dragActiveKeysNew);\n if (props.accordion) {\n props.onChange?.(dragActiveKeysNew.length ? dragActiveKeysNew[0] : undefined);\n } else {\n props.onChange?.(dragActiveKeysNew.length ? dragActiveKeysNew : undefined);\n }\n });\n\n return (\n <DragDrop\n onDragEnd={onDragEnd}\n dataList={props.items}\n uidFieldKey=\"key\"\n className={classNames('drag-collapse-wrapper', props.className)}\n style={props.style}\n >\n {(item) => {\n const isActive = dragActiveKeys.includes(item.key);\n return (\n <Collapse\n activeKey={isActive ? item.key : undefined}\n accordion\n className=\"drag-collapse\"\n collapsible={props.collapsible}\n expandIcon={props.expandIcon}\n expandIconPosition={props.expandIconPosition}\n size={props.size}\n onChange={onChange.bind(null, item.key)}\n >\n <Collapse.Panel header={header(item)} key={item.key}>\n <div style={{ padding: '10px' }}>{item.content}</div>\n </Collapse.Panel>\n </Collapse>\n );\n }}\n </DragDrop>\n );\n};\n"],"names":["DragCollapse","props","_useState","useState","dragActiveKeys","setDragActiveKeys","onDragEnd","_hooks","useCallbackRef","dataList","onDropChange","fbaHooks","useEffectCustom","defaultActiveKeys","toArray","defaultActiveKey","activeKey","length","useEffect","header","item","dragIcon","_jsx","_DragOutlined","hideDragIcon","content","_jsxs","FlexLayout","fullIndex","direction","children","style","display","marginRight","onChange","key","dragActiveKeysNew","accordion","has","includes","_array","arrayRemove","concat","undefined","DragDrop","items","uidFieldKey","className","_classNames","isActive","Collapse","collapsible","expandIcon","expandIconPosition","size","bind","Panel","padding"],"mappings":";wgBA8CaA,EAAe,SAAfA,EAAgBC,GAC3B,IAAAC,EAA4CC,EAAgC,IAArEC,EAAcF,EAAA,GAAEG,EAAiBH,EAAA,GACxC,IAAMI,EAAYC,EAAMC,gBAAe,SAACC,GACtCR,EAAMS,aAAaD,EACrB,IAEAE,EAASC,iBAAgB,WACvB,IAAMC,EAAoBC,EAAQb,EAAMc,kBACxC,IAAKd,EAAMe,WAAaH,EAAkBI,OAAS,EAAG,CACpDZ,EAAkBQ,EACpB,CACF,GAAG,CAACZ,EAAMc,mBAEVG,GAAU,WACRb,EAAkBS,EAAQb,EAAMe,WAClC,GAAG,CAACf,EAAMe,YAEV,IAAMG,EAAS,SAATA,EAAUC,GACd,IAAMC,EAAWpB,EAAMoB,SAAWpB,EAAMoB,SAAWC,EAAAC,EAAgB,CAAA,GACnE,OAAOtB,EAAMuB,aACXJ,EAAKK,QAELC,EAACC,EAAU,CAACC,UAAW,EAAGC,UAAU,aAAYC,UAC9CR,EAAA,OAAA,CAAMS,MAAO,CAAEC,QAAS,eAAgBC,YAAa,GAAIH,SAAET,IAC3DC,EAAA,OAAA,CAAAQ,SAAOV,EAAKK,cAKlB,IAAMS,EAAW3B,EAAMC,gBAAe,SAAC2B,GACrC,IAAIC,EAA2C,GAC/C,GAAInC,EAAMoC,UAAW,CACnB,GAAIjC,EAAe,IAAMA,EAAe,KAAO+B,EAAK,CAClDC,EAAoB,EACtB,KAAO,CACLA,EAAoB,CAACD,EACvB,CACF,KAAO,CACL,IAAMG,EAAMlC,EAAemC,SAASJ,GACpC,GAAIG,EAAK,CACPE,EAAMC,YAAYrC,EAAgB+B,GAClCC,EAAiBM,GAAAA,OAAOtC,EAC1B,KAAO,CACLgC,EAAoBhC,EAAesC,OAAOP,EAC5C,CACF,CACA9B,EAAkB+B,GAClB,GAAInC,EAAMoC,UAAW,CACnBpC,EAAMiC,UAAQ,UAAA,EAAdjC,EAAMiC,SAAWE,EAAkBnB,OAASmB,EAAkB,GAAKO,UACrE,KAAO,CACL1C,EAAMiC,UAANjC,UAAAA,EAAAA,EAAMiC,SAAWE,EAAkBnB,OAASmB,EAAoBO,UAClE,CACF,IAEA,OACErB,EAACsB,EAAQ,CACPtC,UAAWA,EACXG,SAAUR,EAAM4C,MAChBC,YAAY,MACZC,UAAWC,EAAW,wBAAyB/C,EAAM8C,WACrDhB,MAAO9B,EAAM8B,MAAMD,SAElB,SAAAA,EAACV,GACA,IAAM6B,EAAW7C,EAAemC,SAASnB,EAAKe,KAC9C,OACEb,EAAC4B,EAAQ,CACPlC,UAAWiC,EAAW7B,EAAKe,IAAMQ,UACjCN,UAAS,KACTU,UAAU,gBACVI,YAAalD,EAAMkD,YACnBC,WAAYnD,EAAMmD,WAClBC,mBAAoBpD,EAAMoD,mBAC1BC,KAAMrD,EAAMqD,KACZpB,SAAUA,EAASqB,KAAK,KAAMnC,EAAKe,KAAKL,SAExCR,EAAC4B,EAASM,MAAK,CAACrC,OAAQA,EAAOC,GAAMU,SACnCR,EAAA,MAAA,CAAKS,MAAO,CAAE0B,QAAS,QAAS3B,SAAEV,EAAKK,WADEL,EAAKe,MAKtD,GAGN"}
@@ -1 +0,0 @@
1
- .droppable-item-horizontal{display:flex}
@@ -1,6 +0,0 @@
1
- /* eslint-disable */
2
- import './../fba-utils/index.css';
3
- import './index.css';
4
- /*! @flatjs/forge MIT @flatbiz/antd */
5
- import{f as r}from"../fba-utils-f9e11d02.js";import{classNames as e}from"@dimjs/utils/cjs/class-names";import{hooks as i}from"@wove/react/cjs/hooks";import{arrayReorder as a}from"@flatbiz/utils";import{DragDropContext as t}from"@hello-pangea/dnd";import{Fragment as o}from"react";import{D as n,a as d}from"../droppable-item-708ec229.js";import{jsx as s,jsxs as l}from"react/jsx-runtime";import"@dimjs/lang/cjs/is-array";import"../_rollupPluginBabelHelpers-1f4d8910.js";var m=function r(m){var p=i.useCallbackRef((function(r,e){if(!r.destination){return}if(r.destination.index===r.source.index){return}var i=a(m.dataList,r.source.index,r.destination.index);m.onDragEnd(i,r,e)}));var c=i.useId(undefined,"droppable");return s("div",{className:e("drag-drop",m.className),style:m.style,children:s(t,{onDragEnd:p,children:s(n,{droppableId:c,direction:m.direction,children:function r(e){return l(o,{children:[m.dataList.map((function(r,e){var i=""+r[m.uidFieldKey];return s(d,{draggableId:i,index:e,children:m.children(r,e)},i)})),e.placeholder]})}})})})};var p=r.attachPropertiesToComponent(m,{DraggableItem:d,DroppableItem:n});export{p as DragDrop};
6
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/drag-drop/drag-drop.tsx","@flatbiz/antd/src/drag-drop/index.ts"],"sourcesContent":["import { classNames } from '@dimjs/utils';\nimport { arrayReorder, TAny } from '@flatbiz/utils';\nimport {\n DragDropContext,\n DroppableProvided,\n DropResult,\n OnDragEndResponder,\n ResponderProvided,\n} from '@hello-pangea/dnd';\nimport { hooks } from '@wove/react';\nimport { CSSProperties, Fragment, ReactElement } from 'react';\nimport { DraggableItem } from './draggable-item';\nimport { DroppableItem } from './droppable-item';\n\nexport type DragDropProps<T> = {\n /** dataList数组对象中唯一值字段key */\n uidFieldKey: string;\n dataList: T[];\n children: (item: T, index: number) => ReactElement;\n /** 拖拽方向 */\n direction?: 'horizontal' | 'vertical';\n /** 拖拽结束回调 */\n onDragEnd: (dataList: T[], result: DropResult, provided: ResponderProvided) => void;\n className?: string;\n style?: CSSProperties;\n};\n\n/**\n * 拖拽(单个)\n * @param props\n * @returns\n * ```\n * 1. dataList数组中必须要有唯一值字段\n * 2. uidFieldKey dataList数组对象中唯一值字段key\n * ```\n */\nexport const DragDrop = <T extends object = TAny>(props: DragDropProps<T>) => {\n const onDragEnd: OnDragEndResponder = hooks.useCallbackRef((result, provided) => {\n if (!result.destination) {\n return;\n }\n if (result.destination.index === result.source.index) {\n return;\n }\n const sortDataList = arrayReorder(props.dataList, result.source.index, result.destination.index);\n props.onDragEnd(sortDataList as T[], result, provided);\n });\n\n const uid = hooks.useId(undefined, 'droppable');\n\n return (\n <div className={classNames('drag-drop', props.className)} style={props.style}>\n <DragDropContext onDragEnd={onDragEnd}>\n <DroppableItem droppableId={uid} direction={props.direction}>\n {(dropProvided: DroppableProvided) => {\n return (\n <Fragment>\n {props.dataList.map((item, index) => {\n const draggableId = `${item[props.uidFieldKey]}`;\n return (\n <DraggableItem draggableId={draggableId} key={draggableId} index={index}>\n {props.children(item, index)}\n </DraggableItem>\n );\n })}\n {dropProvided.placeholder}\n </Fragment>\n );\n }}\n </DroppableItem>\n </DragDropContext>\n </div>\n );\n};\n","import { fbaUtils } from '../fba-utils';\nimport { DragDrop as DragDropInner } from './drag-drop';\nimport { DraggableItem } from './draggable-item';\nimport { DroppableItem } from './droppable-item';\nimport './style.less';\n\nexport const DragDrop = fbaUtils.attachPropertiesToComponent(DragDropInner, {\n /**\n * 拖拽节点\n * @demo https://fex.qa.tcshuke.com/docs/admin/main/move/sort\n * ```\n * 1. index 为索引值,从0开始递增,必须正确传递\n * 2. droppableIndex 为父节点 DroppableItem 的索引值\n * 3. 当 DraggableItem处在map循环中注意事项\n * A. 如果为跟节点 key 赋值要与 draggableId 相同\n * ```\n */\n DraggableItem: DraggableItem,\n /**\n * 拖拽范围设置\n * @demo https://fex.qa.tcshuke.com/docs/admin/main/move/sort\n */\n DroppableItem: DroppableItem,\n});\n"],"names":["DragDrop","props","onDragEnd","_hooks","useCallbackRef","result","provided","destination","index","source","sortDataList","arrayReorder","dataList","uid","useId","undefined","_jsx","className","_classNames","style","children","DragDropContext","DroppableItem","droppableId","direction","dropProvided","_jsxs","Fragment","map","item","draggableId","uidFieldKey","DraggableItem","placeholder","fbaUtils","attachPropertiesToComponent","DragDropInner"],"mappings":";qdAoCO,IAAMA,EAAW,SAAXA,EAAqCC,GAChD,IAAMC,EAAgCC,EAAMC,gBAAe,SAACC,EAAQC,GAClE,IAAKD,EAAOE,YAAa,CACvB,MACF,CACA,GAAIF,EAAOE,YAAYC,QAAUH,EAAOI,OAAOD,MAAO,CACpD,MACF,CACA,IAAME,EAAeC,EAAaV,EAAMW,SAAUP,EAAOI,OAAOD,MAAOH,EAAOE,YAAYC,OAC1FP,EAAMC,UAAUQ,EAAqBL,EAAQC,EAC/C,IAEA,IAAMO,EAAMV,EAAMW,MAAMC,UAAW,aAEnC,OACEC,EAAA,MAAA,CAAKC,UAAWC,EAAW,YAAajB,EAAMgB,WAAYE,MAAOlB,EAAMkB,MAAMC,SAC3EJ,EAACK,EAAe,CAACnB,UAAWA,EAAUkB,SACpCJ,EAACM,EAAa,CAACC,YAAaV,EAAKW,UAAWvB,EAAMuB,UAAUJ,SACzD,SAAAA,EAACK,GACA,OACEC,EAACC,EAAQ,CAAAP,SAAA,CACNnB,EAAMW,SAASgB,KAAI,SAACC,EAAMrB,GACzB,IAAMsB,EAAiBD,GAAAA,EAAK5B,EAAM8B,aAClC,OACEf,EAACgB,EAAa,CAACF,YAAaA,EAA+BtB,MAAOA,EAAMY,SACrEnB,EAAMmB,SAASS,EAAMrB,IADsBsB,EAIlD,IACCL,EAAaQ,cAGpB,OAKV,ECnEO,IAAMjC,EAAWkC,EAASC,4BAA4BC,EAAe,CAW1EJ,cAAeA,EAKfV,cAAeA"}
File without changes
@@ -1,5 +0,0 @@
1
- /* eslint-disable */
2
- import './index.css';
3
- /*! @flatjs/forge MIT @flatbiz/antd */
4
- export{D as DragDropMulti}from"../drag-drop-multi-e8cae136.js";import"@wove/react/cjs/hooks";import"@flatbiz/utils";import"@hello-pangea/dnd";import"react";import"../droppable-item-708ec229.js";import"@dimjs/utils/cjs/class-names";import"../_rollupPluginBabelHelpers-1f4d8910.js";import"react/jsx-runtime";
5
- //# sourceMappingURL=index.js.map
@@ -1,3 +0,0 @@
1
- /*! @flatjs/forge MIT @flatbiz/antd */
2
- import{hooks as r}from"@wove/react/cjs/hooks";import{arrayReorder as a}from"@flatbiz/utils";import{DragDropContext as t}from"@hello-pangea/dnd";import{Fragment as i}from"react";import{D as e,a as d}from"./droppable-item-708ec229.js";import{jsx as n,jsxs as o}from"react/jsx-runtime";var s=function s(l){var p=r.useCallbackRef((function(r,t){if(!r.destination){return}var i=r.destination.droppableId;var e=i.split("-");var d=Number(e[1]);var n=r.destination.index;var o=r.source.droppableId;e=o.split("-");var s=Number(e[1]);var p=r.source.index;if(d===s){l.dataList[d]=a(l.dataList[d],p,n);l.onDragEnd(l.dataList,r,t);return}var c=l.dataList[s];var u=l.dataList[d];u.splice(n,0,c[p]);c.splice(p,1);l.dataList[s]=c;l.dataList[d]=u;l.onDragEnd(l.dataList,r,t)}));return n(t,{onDragEnd:p,children:l.dataList.map((function(r,a){return n(e,{droppableId:"droppable-"+a,direction:l.direction,children:function a(t){return o(i,{children:[r.map((function(r,a){return n(d,{draggableId:r[l.uidFieldKey],index:a,children:l.children(r,a)},r[l.uidFieldKey])})),t.placeholder]})}},a)}))})};export{s as D};
3
- //# sourceMappingURL=drag-drop-multi-e8cae136.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"drag-drop-multi-e8cae136.js","sources":["@flatbiz/antd/src/drag-drop-multi/drag-drop-multi.tsx"],"sourcesContent":["import { arrayReorder, TAny } from '@flatbiz/utils';\nimport {\n DragDropContext,\n DroppableProvided,\n DropResult,\n OnDragEndResponder,\n ResponderProvided,\n} from '@hello-pangea/dnd';\nimport { hooks } from '@wove/react';\nimport { Fragment, ReactElement } from 'react';\nimport { DraggableItem } from '../drag-drop/draggable-item';\nimport { DroppableItem } from '../drag-drop/droppable-item';\n\nexport type DragDropMultiProps<T> = {\n uidFieldKey: string;\n dataList: T[][];\n children: (item: T, index: number) => ReactElement;\n direction?: 'horizontal' | 'vertical';\n onDragEnd: (dataList: T[][], result: DropResult, provided: ResponderProvided) => void;\n};\n\n/**\n * 拖拽(多个)\n * @param props\n * @returns\n * ```\n * 1. dataList数组中必须要有唯一值字段\n * 2. uidFieldKey dataList数组对象中唯一值字段key\n * ```\n */\nexport const DragDropMulti = <T extends object = TAny>(props: DragDropMultiProps<T>) => {\n const onDragEnd: OnDragEndResponder = hooks.useCallbackRef((result, provided) => {\n if (!result.destination) {\n return;\n }\n const targetDroppableId = result.destination.droppableId;\n let tempList = targetDroppableId.split('-');\n const targetRowIndex = Number(tempList[1]);\n const targetRowCellIndex = result.destination.index;\n\n const sourceDroppableId = result.source.droppableId;\n tempList = sourceDroppableId.split('-');\n const sourceRowIndex = Number(tempList[1]);\n const sourceRowCellIndex = result.source.index;\n\n if (targetRowIndex === sourceRowIndex) {\n props.dataList[targetRowIndex] = arrayReorder(\n props.dataList[targetRowIndex],\n sourceRowCellIndex,\n targetRowCellIndex,\n );\n props.onDragEnd(props.dataList, result, provided);\n return;\n }\n const sourceList = props.dataList[sourceRowIndex];\n const targetList = props.dataList[targetRowIndex];\n targetList.splice(targetRowCellIndex, 0, sourceList[sourceRowCellIndex]);\n sourceList.splice(sourceRowCellIndex, 1);\n props.dataList[sourceRowIndex] = sourceList;\n props.dataList[targetRowIndex] = targetList;\n props.onDragEnd(props.dataList, result, provided);\n });\n\n return (\n <DragDropContext onDragEnd={onDragEnd}>\n {props.dataList.map((item, index) => {\n return (\n <DroppableItem droppableId={`droppable-${index}`} direction={props.direction} key={index}>\n {(dropProvided: DroppableProvided) => {\n return (\n <Fragment>\n {item.map((innerItem, innerIndex) => (\n <DraggableItem\n draggableId={innerItem[props.uidFieldKey]}\n key={innerItem[props.uidFieldKey]}\n index={innerIndex}\n >\n {props.children(innerItem, innerIndex)}\n </DraggableItem>\n ))}\n {dropProvided.placeholder}\n </Fragment>\n );\n }}\n </DroppableItem>\n );\n })}\n </DragDropContext>\n );\n};\n"],"names":["DragDropMulti","props","onDragEnd","_hooks","useCallbackRef","result","provided","destination","targetDroppableId","droppableId","tempList","split","targetRowIndex","Number","targetRowCellIndex","index","sourceDroppableId","source","sourceRowIndex","sourceRowCellIndex","dataList","arrayReorder","sourceList","targetList","splice","_jsx","DragDropContext","children","map","item","DroppableItem","direction","dropProvided","_jsxs","Fragment","innerItem","innerIndex","DraggableItem","draggableId","uidFieldKey","placeholder"],"mappings":";+RA8BaA,EAAgB,SAAhBA,EAA0CC,GACrD,IAAMC,EAAgCC,EAAMC,gBAAe,SAACC,EAAQC,GAClE,IAAKD,EAAOE,YAAa,CACvB,MACF,CACA,IAAMC,EAAoBH,EAAOE,YAAYE,YAC7C,IAAIC,EAAWF,EAAkBG,MAAM,KACvC,IAAMC,EAAiBC,OAAOH,EAAS,IACvC,IAAMI,EAAqBT,EAAOE,YAAYQ,MAE9C,IAAMC,EAAoBX,EAAOY,OAAOR,YACxCC,EAAWM,EAAkBL,MAAM,KACnC,IAAMO,EAAiBL,OAAOH,EAAS,IACvC,IAAMS,EAAqBd,EAAOY,OAAOF,MAEzC,GAAIH,IAAmBM,EAAgB,CACrCjB,EAAMmB,SAASR,GAAkBS,EAC/BpB,EAAMmB,SAASR,GACfO,EACAL,GAEFb,EAAMC,UAAUD,EAAMmB,SAAUf,EAAQC,GACxC,MACF,CACA,IAAMgB,EAAarB,EAAMmB,SAASF,GAClC,IAAMK,EAAatB,EAAMmB,SAASR,GAClCW,EAAWC,OAAOV,EAAoB,EAAGQ,EAAWH,IACpDG,EAAWE,OAAOL,EAAoB,GACtClB,EAAMmB,SAASF,GAAkBI,EACjCrB,EAAMmB,SAASR,GAAkBW,EACjCtB,EAAMC,UAAUD,EAAMmB,SAAUf,EAAQC,EAC1C,IAEA,OACEmB,EAACC,EAAe,CAACxB,UAAWA,EAAUyB,SACnC1B,EAAMmB,SAASQ,KAAI,SAACC,EAAMd,GACzB,OACEU,EAACK,EAAa,CAACrB,yBAA0BM,EAASgB,UAAW9B,EAAM8B,UAAUJ,SAC1E,SAAAA,EAACK,GACA,OACEC,EAACC,EAAQ,CAAAP,SAAA,CACNE,EAAKD,KAAI,SAACO,EAAWC,GAAU,OAC9BX,EAACY,EAAa,CACZC,YAAaH,EAAUlC,EAAMsC,aAE7BxB,MAAOqB,EAAWT,SAEjB1B,EAAM0B,SAASQ,EAAWC,IAHtBD,EAAUlC,EAAMsC,aAIP,IAEjBP,EAAaQ,cAGpB,GAhBiFzB,OAsB7F"}
@@ -1,3 +0,0 @@
1
- /*! @flatjs/forge MIT @flatbiz/antd */
2
- import e from"@ant-design/icons/es/icons/ExclamationCircleFilled";import{_ as r,a as o}from"./_rollupPluginBabelHelpers-1f4d8910.js";import{hooks as n}from"@wove/react/cjs/hooks";import{Dropdown as i}from"antd";import{Fragment as t,useMemo as a,createElement as l}from"react";import{B as s}from"./button-wrapper-125fce50.js";import{d as f}from"./dialog-confirm-74fc9337.js";import{f as d}from"./fba-utils-f9e11d02.js";import{F as m}from"./flex-layout-8d2b668b.js";import{jsxs as c,jsx as u}from"react/jsx-runtime";function p(e){var r=true;var o=false;while(r){if(e.tagName==="HTML"||e.tagName==="BODY"){r=false;o=false}else{var n=window.getComputedStyle(e),i=n.position;if(i==="sticky"){o=true;r=false}else{if(!e||!e.parentNode){r=false}else{e=e.parentNode}}}}return o}var v=["menuList"],g=["text","color","permission","needConfirm","confirmMessage","hidden","type","style","confirmModalProps"];var y=function y(h){var C=h.menuList,k=r(h,v);var P=n.useId(undefined,"DropdownMenuWrapper");var x=n.useCallbackRef((function(r,n){n.stopPropagation();if(r.needConfirm){var i;f.open(o({title:c(m,{direction:"horizontal",fullIndex:1,gap:8,children:[u(e,{style:{color:"#faad14"}}),u("span",{children:r.text})]}),content:u(t,{children:r.confirmMessage}),onOk:(i=r.onClick)==null?void 0:i.bind(null,n),okButtonProps:{loadingPosition:"center"}},r.confirmModalProps));return Promise.resolve()}return r.onClick==null?void 0:r.onClick(n)}));var M=document.querySelector("."+P);var b=a((function(){if(h.isFixed||M&&p(M)){return undefined}return M}),[h.isFixed,M]);var j=a((function(){var e=[];C.filter(Boolean).forEach((function(n,i){if(!n)return;var t=n.text,a=n.color,f=n.permission,m=n.needConfirm,c=n.confirmMessage,u=n.hidden,p=n.type,v=n.style,y=n.confirmModalProps,h=r(n,g);if(u)return;if(f&&!d.hasPermission(f))return;var C=a?o({color:a},v):v;var k=p||"link";e.push({key:i,label:l(s,o({loadingPosition:"center",size:"small"},h,{type:k,style:C,key:i,onClick:x.bind(null,o({},n,{needConfirm:m,confirmMessage:c,confirmModalProps:y}))}),t)})}));return e}),[C,x]);return u("div",{className:P,style:{position:"relative"},children:u(i,o({trigger:(k==null?void 0:k.trigger)||["hover"],getPopupContainer:b?function(){return M}:undefined,arrow:{pointAtCenter:true}},k,{overlayStyle:o({zIndex:9},k.overlayStyle),menu:{items:j},children:h.children}))})};export{y as D};
3
- //# sourceMappingURL=dropdown-menu-wrapper-98347af8.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dropdown-menu-wrapper-98347af8.js","sources":["@flatbiz/antd/src/dropdown-menu-wrapper/utils.ts","@flatbiz/antd/src/dropdown-menu-wrapper/dropdown-menu-wrapper.tsx"],"sourcesContent":["export function parentsHasSticky(node: Element) {\n let condition = true;\n let result = false;\n while (condition) {\n if (node.tagName === 'HTML' || node.tagName === 'BODY') {\n condition = false;\n result = false;\n } else {\n const { position } = window.getComputedStyle(node);\n if (position === 'sticky') {\n result = true;\n condition = false;\n } else {\n if (!node || !node.parentNode) {\n condition = false;\n } else {\n node = node.parentNode as Element;\n }\n }\n }\n }\n return result;\n}\n","import { ExclamationCircleFilled } from '@ant-design/icons';\nimport { hooks } from '@wove/react';\nimport { ButtonProps, Dropdown, DropdownProps } from 'antd';\nimport { ItemType } from 'antd/lib/menu/hooks/useItems';\nimport { Fragment, ReactElement, useMemo } from 'react';\nimport { ButtonWrapper } from '../button-wrapper';\nimport { dialogConfirm } from '../dialog-confirm';\nimport { DialogModalProps } from '../dialog-modal';\nimport { fbaUtils } from '../fba-utils';\nimport { FlexLayout } from '../flex-layout';\nimport { parentsHasSticky } from './utils';\n\nexport interface DropdownMenuItem extends ButtonProps {\n text?: string | ReactElement;\n color?: string;\n onClick?: (event: React.MouseEvent<HTMLElement>) => void | Promise<void>;\n permission?: string;\n needConfirm?: boolean;\n confirmMessage?: string;\n hidden?: boolean;\n confirmModalProps?: DialogModalProps;\n}\n\nexport interface DropdownMenuWrapperProps extends Omit<DropdownProps, 'menu'> {\n menuList: Array<DropdownMenuItem | null>;\n isFixed?: boolean;\n}\n\n/**\n * DropdownMenuWrapper\n * 升级 antd 5.5.1 后,Dropdown 中 Popconfirm弹框使用存在问题,所以在 @flatbiz/antd@4.2.49版本修改为使用dialogConfirm组件实现二次弹框确认功能\n * @param props\n * @returns\n */\nexport const DropdownMenuWrapper = (props: DropdownMenuWrapperProps) => {\n const { menuList, ...dropdownOtherProps } = props;\n const clsName = hooks.useId(undefined, 'DropdownMenuWrapper');\n\n const onClick = hooks.useCallbackRef((item: DropdownMenuItem, event) => {\n event.stopPropagation();\n if (item.needConfirm) {\n dialogConfirm.open({\n title: (\n <FlexLayout direction=\"horizontal\" fullIndex={1} gap={8}>\n <ExclamationCircleFilled style={{ color: '#faad14' }} />\n <span>{item.text}</span>\n </FlexLayout>\n ),\n content: <Fragment>{item.confirmMessage}</Fragment>,\n onOk: item.onClick?.bind(null, event),\n okButtonProps: {\n loadingPosition: 'center',\n },\n ...item.confirmModalProps,\n });\n return Promise.resolve();\n }\n return item.onClick?.(event);\n });\n\n const target = document.querySelector(`.${clsName}`);\n const container = useMemo(() => {\n if (props.isFixed || (target && parentsHasSticky(target))) {\n return undefined;\n }\n return target;\n }, [props.isFixed, target]);\n\n const menuItems = useMemo(() => {\n const menuItemsNew: ItemType[] = [];\n menuList.filter(Boolean).forEach((item, index) => {\n if (!item) return;\n const {\n text,\n color,\n permission,\n needConfirm,\n confirmMessage,\n hidden,\n type,\n style,\n confirmModalProps,\n ...otherProps\n } = item;\n if (hidden) return;\n if (permission && !fbaUtils.hasPermission(permission)) return;\n const newStyle = color ? { color, ...style } : style;\n const buttonType = type || 'link';\n menuItemsNew.push({\n key: index,\n label: (\n <ButtonWrapper\n loadingPosition=\"center\"\n size=\"small\"\n {...otherProps}\n type={buttonType}\n style={newStyle}\n key={index}\n onClick={onClick.bind(null, {\n ...item,\n needConfirm,\n confirmMessage,\n confirmModalProps,\n })}\n >\n {text}\n </ButtonWrapper>\n ),\n });\n });\n return menuItemsNew;\n }, [menuList, onClick]);\n\n return (\n <div className={clsName} style={{ position: 'relative' }}>\n <Dropdown\n trigger={dropdownOtherProps?.trigger || ['hover']}\n getPopupContainer={container ? () => target as HTMLElement : undefined}\n arrow={{ pointAtCenter: true }}\n {...dropdownOtherProps}\n overlayStyle={{ zIndex: 9, ...dropdownOtherProps.overlayStyle }}\n menu={{ items: menuItems }}\n >\n {props.children}\n </Dropdown>\n </div>\n );\n};\n"],"names":["parentsHasSticky","node","condition","result","tagName","_window$getComputedSt","window","getComputedStyle","position","parentNode","DropdownMenuWrapper","props","menuList","dropdownOtherProps","_objectWithoutPropertiesLoose","_excluded","clsName","_hooks","useId","undefined","onClick","useCallbackRef","item","event","stopPropagation","needConfirm","_item$onClick","dialogConfirm","open","_extends","title","_jsxs","FlexLayout","direction","fullIndex","gap","children","_jsx","_ExclamationCircleFilled","style","color","text","content","Fragment","confirmMessage","onOk","bind","okButtonProps","loadingPosition","confirmModalProps","Promise","resolve","target","document","querySelector","container","useMemo","isFixed","menuItems","menuItemsNew","filter","Boolean","forEach","index","permission","hidden","type","otherProps","_excluded2","fbaUtils","hasPermission","newStyle","buttonType","push","key","label","_createElement","ButtonWrapper","size","className","Dropdown","trigger","getPopupContainer","arrow","pointAtCenter","overlayStyle","zIndex","menu","items"],"mappings":";kgBAAO,SAASA,EAAiBC,GAC/B,IAAIC,EAAY,KAChB,IAAIC,EAAS,MACb,MAAOD,EAAW,CAChB,GAAID,EAAKG,UAAY,QAAUH,EAAKG,UAAY,OAAQ,CACtDF,EAAY,MACZC,EAAS,KACX,KAAO,CACL,IAAAE,EAAqBC,OAAOC,iBAAiBN,GAArCO,EAAQH,EAARG,SACR,GAAIA,IAAa,SAAU,CACzBL,EAAS,KACTD,EAAY,KACd,KAAO,CACL,IAAKD,IAASA,EAAKQ,WAAY,CAC7BP,EAAY,KACd,KAAO,CACLD,EAAOA,EAAKQ,UACd,CACF,CACF,CACF,CACA,OAAON,CACT,mICYaO,EAAsB,SAAtBA,EAAuBC,GAClC,IAAQC,EAAoCD,EAApCC,SAAaC,EAAkBC,EAAKH,EAAKI,GACjD,IAAMC,EAAUC,EAAMC,MAAMC,UAAW,uBAEvC,IAAMC,EAAUH,EAAMI,gBAAe,SAACC,EAAwBC,GAC5DA,EAAMC,kBACN,GAAIF,EAAKG,YAAa,CAAA,IAAAC,EACpBC,EAAcC,KAAIC,EAAA,CAChBC,MACEC,EAACC,EAAU,CAACC,UAAU,aAAaC,UAAW,EAAGC,IAAK,EAAEC,SAAA,CACtDC,EAAAC,EAAA,CAAyBC,MAAO,CAAEC,MAAO,aACzCH,EAAA,OAAA,CAAAD,SAAOd,EAAKmB,UAGhBC,QAASL,EAACM,EAAQ,CAAAP,SAAEd,EAAKsB,iBACzBC,MAAInB,EAAEJ,EAAKF,UAAO,UAAA,EAAZM,EAAcoB,KAAK,KAAMvB,GAC/BwB,cAAe,CACbC,gBAAiB,WAEhB1B,EAAK2B,oBAEV,OAAOC,QAAQC,SACjB,CACA,OAAO7B,EAAKF,SAAO,UAAA,EAAZE,EAAKF,QAAUG,EACxB,IAEA,IAAM6B,EAASC,SAASC,cAAa,IAAKtC,GAC1C,IAAMuC,EAAYC,GAAQ,WACxB,GAAI7C,EAAM8C,SAAYL,GAAUpD,EAAiBoD,GAAU,CACzD,OAAOjC,SACT,CACA,OAAOiC,CACR,GAAE,CAACzC,EAAM8C,QAASL,IAEnB,IAAMM,EAAYF,GAAQ,WACxB,IAAMG,EAA2B,GACjC/C,EAASgD,OAAOC,SAASC,SAAQ,SAACxC,EAAMyC,GACtC,IAAKzC,EAAM,OACX,IACEmB,EAUEnB,EAVFmB,KACAD,EASElB,EATFkB,MACAwB,EAQE1C,EARF0C,WACAvC,EAOEH,EAPFG,YACAmB,EAMEtB,EANFsB,eACAqB,EAKE3C,EALF2C,OACAC,EAIE5C,EAJF4C,KACA3B,EAGEjB,EAHFiB,MACAU,EAEE3B,EAFF2B,kBACGkB,EAAUrD,EACXQ,EAAI8C,GACR,GAAIH,EAAQ,OACZ,GAAID,IAAeK,EAASC,cAAcN,GAAa,OACvD,IAAMO,EAAW/B,EAAKX,EAAA,CAAKW,MAAAA,GAAUD,GAAUA,EAC/C,IAAMiC,EAAaN,GAAQ,OAC3BP,EAAac,KAAK,CAChBC,IAAKX,EACLY,MACEC,EAACC,EAAahD,EAAA,CACZmB,gBAAgB,SAChB8B,KAAK,SACDX,EAAU,CACdD,KAAMM,EACNjC,MAAOgC,EACPG,IAAKX,EACL3C,QAASA,EAAQ0B,KAAK,KAAIjB,EAAA,CAAA,EACrBP,EAAI,CACPG,YAAAA,EACAmB,eAAAA,EACAK,kBAAAA,OAGDR,IAIT,IACA,OAAOkB,CACT,GAAG,CAAC/C,EAAUQ,IAEd,OACEiB,EAAA,MAAA,CAAK0C,UAAW/D,EAASuB,MAAO,CAAE/B,SAAU,YAAa4B,SACvDC,EAAC2C,EAAQnD,EAAA,CACPoD,SAASpE,GAAAA,UAAAA,EAAAA,EAAoBoE,UAAW,CAAC,SACzCC,kBAAmB3B,EAAY,WAAA,OAAMH,CAAM,EAAkBjC,UAC7DgE,MAAO,CAAEC,cAAe,OACpBvE,EAAkB,CACtBwE,aAAYxD,EAAA,CAAIyD,OAAQ,GAAMzE,EAAmBwE,cACjDE,KAAM,CAAEC,MAAO9B,GAAYtB,SAE1BzB,EAAMyB,aAIf"}
@@ -1,3 +0,0 @@
1
- /*! @flatjs/forge MIT @flatbiz/antd */
2
- import{classNames as e}from"@dimjs/utils/cjs/class-names";import{a as r}from"./_rollupPluginBabelHelpers-1f4d8910.js";import{Draggable as a,Droppable as i}from"@hello-pangea/dnd";import{cloneElement as n}from"react";import{jsx as d}from"react/jsx-runtime";var l=function i(l){return d(a,{draggableId:l.draggableId,index:l.index,isDragDisabled:l.isDragDisabled,children:function a(i,s){var o=r({},i.draggableProps,i.dragHandleProps,{ref:i.innerRef,className:e("draggable-item",{"draggable-item-dragging":s.isDragging},l.className)});if(l.dragCancelMove){o.style={}}if(l.component===false){return n(l.children,o)}return d("div",r({},o,{children:l.children}))}})};var s=function r(a){var n=a.direction||"vertical";return d(i,{droppableId:a.droppableId,direction:n,renderClone:a.renderClone,isDropDisabled:a.isDropDisabled,type:a.type,children:function r(i,l){return d("div",{ref:i.innerRef,className:e("droppable-item","droppable-item-"+n,{"droppable-item-draggingOver":l.isDraggingOver},a.className),children:a.children(i,l)})}})};export{s as D,l as a};
3
- //# sourceMappingURL=droppable-item-708ec229.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"droppable-item-708ec229.js","sources":["@flatbiz/antd/src/drag-drop/draggable-item.tsx","@flatbiz/antd/src/drag-drop/droppable-item.tsx"],"sourcesContent":["import { classNames } from '@dimjs/utils';\nimport { Draggable, DraggableProvided, DraggableStateSnapshot } from '@hello-pangea/dnd';\nimport { cloneElement, ReactElement } from 'react';\n\nexport type DraggableItemProps = {\n /** 拖拽节点ID */\n draggableId: string;\n /** 拖拽节点数组索引 */\n index: number;\n children: ReactElement;\n /** 是否禁用拖拽节点 */\n isDragDisabled?: boolean;\n // 拖动取消移动\n dragCancelMove?: boolean;\n // 设置 DraggableItem 渲染元素,为 false 则不创建 DOM 节点\n component?: boolean;\n className?: string;\n};\n\n/**\n * 拖拽节点\n * @param props\n * @returns\n * ```\n * 1. index 为索引值,从0开始递增,必须正确传递\n * 2. droppableIndex 为父节点 DroppableItem 的索引值\n * 3. 当 DraggableItem处在map循环中注意事项\n * A. 如果为跟节点 key 赋值要与 draggableId 相同\n * ```\n */\nexport const DraggableItem = (props: DraggableItemProps) => {\n return (\n <Draggable draggableId={props.draggableId} index={props.index} isDragDisabled={props.isDragDisabled}>\n {(dragProvided: DraggableProvided, dragSnapshot: DraggableStateSnapshot) => {\n const params = {\n ...dragProvided.draggableProps,\n ...dragProvided.dragHandleProps,\n ref: dragProvided.innerRef,\n className: classNames(\n 'draggable-item',\n { 'draggable-item-dragging': dragSnapshot.isDragging },\n props.className,\n ),\n };\n if (props.dragCancelMove) {\n params.style = {};\n }\n if (props.component === false) {\n return cloneElement(props.children, params);\n }\n return <div {...params}>{props.children}</div>;\n }}\n </Draggable>\n );\n};\n","import { classNames } from '@dimjs/utils';\nimport { DraggableChildrenFn, Droppable, DroppableProvided, DroppableStateSnapshot } from '@hello-pangea/dnd';\nimport { ReactElement } from 'react';\n\nexport type DroppableItemProps = {\n /** 拖拽范围ID */\n droppableId: string;\n children: (dropProvided: DroppableProvided, dropSnapshot: DroppableStateSnapshot) => ReactElement;\n /** 拖拽方向 */\n direction?: 'horizontal' | 'vertical';\n /** 拖拽范围禁止 */\n isDropDisabled?: boolean;\n className?: string;\n renderClone?: DraggableChildrenFn;\n type?: string;\n};\n\n/**\n * 拖拽范围设置\n * @param props\n * @returns\n */\nexport const DroppableItem = (props: DroppableItemProps) => {\n const direction = props.direction || 'vertical';\n return (\n <Droppable\n droppableId={props.droppableId}\n direction={direction}\n renderClone={props.renderClone}\n isDropDisabled={props.isDropDisabled}\n type={props.type}\n >\n {(dropProvided: DroppableProvided, dropSnapshot: DroppableStateSnapshot) => (\n <div\n ref={dropProvided.innerRef}\n className={classNames(\n 'droppable-item',\n `droppable-item-${direction}`,\n {\n 'droppable-item-draggingOver': dropSnapshot.isDraggingOver,\n },\n props.className,\n )}\n >\n {props.children(dropProvided, dropSnapshot)}\n </div>\n )}\n </Droppable>\n );\n};\n"],"names":["DraggableItem","props","_jsx","Draggable","draggableId","index","isDragDisabled","children","dragProvided","dragSnapshot","params","_extends","draggableProps","dragHandleProps","ref","innerRef","className","_classNames","isDragging","dragCancelMove","style","component","cloneElement","DroppableItem","direction","Droppable","droppableId","renderClone","isDropDisabled","type","dropProvided","dropSnapshot","isDraggingOver"],"mappings":";oQA8BaA,EAAgB,SAAhBA,EAAiBC,GAC5B,OACEC,EAACC,EAAS,CAACC,YAAaH,EAAMG,YAAaC,MAAOJ,EAAMI,MAAOC,eAAgBL,EAAMK,eAAeC,SACjG,SAAAA,EAACC,EAAiCC,GACjC,IAAMC,EAAMC,EACPH,CAAAA,EAAAA,EAAaI,eACbJ,EAAaK,gBAAe,CAC/BC,IAAKN,EAAaO,SAClBC,UAAWC,EACT,iBACA,CAAE,0BAA2BR,EAAaS,YAC1CjB,EAAMe,aAGV,GAAIf,EAAMkB,eAAgB,CACxBT,EAAOU,MAAQ,EACjB,CACA,GAAInB,EAAMoB,YAAc,MAAO,CAC7B,OAAOC,EAAarB,EAAMM,SAAUG,EACtC,CACA,OAAOR,EAAA,MAAAS,EAAA,CAAA,EAASD,EAAM,CAAAH,SAAGN,EAAMM,WACjC,GAGN,MChCagB,EAAgB,SAAhBA,EAAiBtB,GAC5B,IAAMuB,EAAYvB,EAAMuB,WAAa,WACrC,OACEtB,EAACuB,EAAS,CACRC,YAAazB,EAAMyB,YACnBF,UAAWA,EACXG,YAAa1B,EAAM0B,YACnBC,eAAgB3B,EAAM2B,eACtBC,KAAM5B,EAAM4B,KAAKtB,SAEhB,SAAAA,EAACuB,EAAiCC,GAAoC,OACrE7B,EAAA,MAAA,CACEY,IAAKgB,EAAaf,SAClBC,UAAWC,EACT,iBAAgB,kBACEO,EAClB,CACE,8BAA+BO,EAAaC,gBAE9C/B,EAAMe,WACNT,SAEDN,EAAMM,SAASuB,EAAcC,IAC1B,GAId"}