@flatbiz/antd 4.4.17 → 4.4.19
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.
- package/esm/drag-form-list/index.css +1 -1
- package/esm/drag-form-list/index.js +1 -1
- package/esm/drag-form-list/index.js.map +1 -1
- package/esm/form-list-wrapper/index.css +1 -1
- package/esm/form-list-wrapper/index.js +1 -1
- package/esm/form-list-wrapper/index.js.map +1 -1
- package/index.d.ts +9 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
.block-layout{background-color:var(--block-bg-color)}.light-theme .block-layout{color:rgba(0,0,0,.88)}.dark-theme .block-layout{color:hsla(0,0%,100%,.85)}.union-after-text,.union-before-text{align-self:flex-start;flex-shrink:0;line-height:32px}.union-after-element,.union-before-element{align-self:flex-start}.form-item-group-horizontal-union .v-flex-layout .ant-form-item{align-self:flex-start;margin-bottom:0}.form-item-group-horizontal-union .v-flex-layout{align-items:flex-start}.drag-form-list-item-grap *{opacity:.7!important}.drag-form-list-item-disabled .drag-form-list-item-trigger{cursor:no-drop;opacity:.6}.drag-form-list-overlay{border:none;border-radius:6px;box-shadow:0 0 12px 4px rgba(34,33,81,.1)}.drag-form-list-overlay .ant-collapse-item{border-bottom:none}.drag-form-list-overlay .drag-form-list-item-trigger{background-color:transparent}.drag-form-list-icon{display:inline-block;width:30px}.drag-form-list-item{align-items:center;background-color:var(--block-bg-color);display:flex;padding:8px 0}.drag-form-list-item-content{flex:1}.drag-form-list-item-content .ant-form-item{margin-bottom:0}.drag-form-list-item-trigger{align-items:center;border-radius:6px;cursor:move;display:inline-flex;font-size:16px;height:30px;justify-content:center;margin-right:5px;width:30px}.drag-form-list-item-trigger:hover{background-color:rgba(0,0,0,.1)}
|
|
1
|
+
.block-layout{background-color:var(--block-bg-color)}.light-theme .block-layout{color:rgba(0,0,0,.88)}.dark-theme .block-layout{color:hsla(0,0%,100%,.85)}.union-after-text,.union-before-text{align-self:flex-start;flex-shrink:0;line-height:32px}.union-after-element,.union-before-element{align-self:flex-start}.form-item-group-horizontal-union .v-flex-layout .ant-form-item{align-self:flex-start;margin-bottom:0}.form-item-group-horizontal-union .v-flex-layout{align-items:flex-start}.drag-form-list-item-grap *{opacity:.7!important}.drag-form-list-item-disabled .drag-form-list-item-trigger{cursor:no-drop;opacity:.6}.drag-form-list-overlay{border:none;border-radius:6px;box-shadow:0 0 12px 4px rgba(34,33,81,.1)}.drag-form-list-overlay .ant-collapse-item{border-bottom:none}.drag-form-list-overlay .drag-form-list-item-trigger{background-color:transparent}.drag-form-list-icon{display:inline-block;width:30px}.drag-form-list-item{align-items:center;background-color:var(--block-bg-color);display:flex;padding:8px 0}.drag-form-list .drag-form-list-item-content{flex:1}.drag-form-list .drag-form-list-item-content .ant-form-item.form-item-group-horizontal-union,.drag-form-list .drag-form-list-item-content .ant-form-item.form-item-group-horizontal-union .ant-form-item{margin-bottom:0}.drag-form-list-item-trigger{align-items:center;border-radius:6px;cursor:move;display:inline-flex;font-size:16px;height:30px;justify-content:center;margin-right:5px;width:30px}.drag-form-list-item-trigger:hover{background-color:rgba(0,0,0,.1)}
|
|
@@ -9,5 +9,5 @@ import './../flex-layout/index.css';
|
|
|
9
9
|
import './../text-symbol-wrapper/index.css';
|
|
10
10
|
import './index.css';
|
|
11
11
|
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
12
|
-
import{classNames as e}from"@dimjs/utils/cjs/class-names";import{hooks as r}from"@wove/react/cjs/hooks";import{_ as t}from"../_rollupPluginBabelHelpers-a0769acd.js";import{DndContext as i,closestCenter as n,DragOverlay as a}from"@dnd-kit/core";import{useSortable as o,SortableContext as d,verticalListSortingStrategy as l,arrayMove as m}from"@dnd-kit/sortable";import{toArray as s,getUuid as u}from"@flatbiz/utils";import{Form as
|
|
12
|
+
import{classNames as e}from"@dimjs/utils/cjs/class-names";import{hooks as r}from"@wove/react/cjs/hooks";import{_ as t}from"../_rollupPluginBabelHelpers-a0769acd.js";import{DndContext as i,closestCenter as n,DragOverlay as a}from"@dnd-kit/core";import{useSortable as o,SortableContext as d,verticalListSortingStrategy as l,arrayMove as m}from"@dnd-kit/sortable";import{toArray as s,getUuid as u}from"@flatbiz/utils";import{Form as p,Empty as c}from"antd";import{Fragment as f,useState as g,useRef as v,useMemo as h}from"react";import{B as y}from"../index-1f45bfd5.js";import{ButtonWrapper as I}from"../button-wrapper/index.js";import{FormItemGroup as x}from"../form-item-group/index.js";import{TextSymbolWrapper as j}from"../text-symbol-wrapper/index.js";import D from"@ant-design/icons/es/icons/DragOutlined";import{CSS as b}from"@dnd-kit/utilities";import{jsx as L,jsxs as N}from"react/jsx-runtime";import"@ant-design/icons/es/icons/LoadingOutlined";import"@dimjs/lang/cjs/is-promise";import"../index-7f4ad045.js";import"antd/es/locale/en_US";import"antd/es/locale/zh_CN";import"dayjs";import"dayjs/locale/en";import"dayjs/locale/zh-cn";import"dayjs/plugin/advancedFormat";import"dayjs/plugin/customParseFormat";import"dayjs/plugin/localeData";import"dayjs/plugin/utc";import"dayjs/plugin/weekday";import"dayjs/plugin/weekOfYear";import"dayjs/plugin/weekYear";import"../fba-hooks/index.js";import"@dimjs/lang/cjs/is-array";import"../use-responsive-point-21b8c601.js";import"@dimjs/utils/cjs/extend";import"../fba-utils/index.js";import"../flex-layout/index.js";function C(i){var n=p.useFormInstance();var a=i.isOverlay?false:i.getItemDragDisabled==null?void 0:i.getItemDragDisabled(i.uid,i.index);var d=o({id:i.uid,disabled:a}),l=d.listeners,m=d.setNodeRef,s=d.transform,u=d.transition;var c=r.useCallbackRef((function(){var e=i.dragIcon?i.dragIcon:L(D,{});return i.dragDisabled?L(f,{}):L("span",t({className:"drag-form-list-item-trigger"},l,{children:L("span",{children:e})}))}));var g=t({transform:b.Transform.toString(s),transition:u},i.style);var v=e("drag-form-list-item",{"drag-form-list-item-grap":i.isGray,"drag-form-list-item-disabled":a},i.className);return N("div",{style:t({},g),ref:m,className:v,children:[L(p.Item,{noStyle:true,children:c()}),L("div",{className:"drag-form-list-item-content",children:i.children({formListFieldData:i.formListFieldData,operation:i.formListOperate,formStageCompleteName:i.formStageCompleteName,index:i.index,getInsideFormItemName:function e(r){return[i.formListFieldData.name,r]},getInsideFormItemData:function e(){return n.getFieldValue(i.formStageCompleteName)||{}},prevCompleteName:i.prevCompleteName,uidKey:i.uidFieldName})})]})}var w=function e(r){if(r.wrapper)return r.wrapper({children:r.children});return r.children};var F=function e(r){var i,n,a;var o=(i=r.formListItemTitleHProps)==null?void 0:i.gap;var d=r.dragDisabled?[]:[{width:35,mainItem:L("div",{style:{marginRight:o===undefined?-15:-o}})}];return L(x.HorizontalUnion,t({},r.formListItemTitleHProps,{style:t({marginBottom:10},(n=r.formListItemTitleHProps)==null?void 0:n.style),groupConfigList:d.concat(((a=r.formListItemTitleList)==null?void 0:a.map((function(e){if(e.required){return{width:e.width,mainItem:L("div",{style:{textAlign:"center"},children:L(j,{text:e.title,symbolType:"required"})})}}return{width:e.width,mainItem:L("div",{style:{textAlign:"center"},children:e.title})}})))||[])}))};var k=function o(x){var j=[].concat(x.prevCompleteName,s(x.name));var D=g(),b=D[0],k=D[1];var R=p.useFormInstance();var S=v([]);var T=x.uidFieldName||"uid";var A=p.useWatch(j,R);var P=r.useCallbackRef((function(e){return e==null?void 0:e[T]}));function E(e){var r=e.active;k(r.id)}var O=r.useCallbackRef((function(){return R.getFieldValue(j)||[]}));function H(e){var r=e.active,t=e.over;var i=O();if(r.id!==t.id){var n=i.findIndex((function(e){return P(e)===r.id}));var a=i.findIndex((function(e){return P(e)===t.id}));var o=m(i,n,a);R.setFields([{name:x.name,value:o}]);x.onDropChange==null?void 0:x.onDropChange(o)}k(undefined)}var B=h((function(){if(!b)return undefined;var e=O();var r=e.findIndex((function(e){return P(e)===b}));return S.current.find((function(e){return e.name===r}))}),[b,O,P]);var _=x.itemGap?x.itemGap/2:8;return L(y,{className:e("drag-form-list",x.className),style:x.style,children:L(i,{collisionDetection:n,onDragStart:E,onDragEnd:H,children:L(p.List,{name:x.name,rules:x.rules,children:function e(r,i,n){var o;var m=n.errors;S.current=r;return N("div",{style:{borderRadius:"6px",border:m!=null&&m.length?"1px solid #ff4d4f":"1px solid transparent"},children:[(o=x.formListItemTitleList)!=null&&o.length?L(F,{formListItemTitleList:x.formListItemTitleList,formListItemTitleHProps:x.formListItemTitleHorizontalUnionProps,dragDisabled:x.dragDisabled}):null,!x.hiddenEmptyRender&&!(A!=null&&A.length)?L(c,{image:c.PRESENTED_IMAGE_SIMPLE,style:{margin:"15px 0"}}):null,L(w,{wrapper:x.formListChildrenWrapper,children:N(f,{children:[L(d,{items:O().map((function(e){return P(e)})),strategy:l,children:N(f,{children:[r.map((function(e,r){var n=P(O()[r]);if(!n)return null;return L(C,{formListOperate:i,formListFieldData:e,uid:n,dragIcon:x.dragIcon,getItemDragDisabled:x.getItemDragDisabled,dragDisabled:x.dragDisabled,isGray:!!n&&n===b,index:r,formStageCompleteName:[].concat(j,[e.name]),prevCompleteName:j,uidFieldName:T,style:t({},x.itemStyle,{padding:_+"px 0 "+_+"px 0"}),children:x.children},n+"-"+e.key)})),x.onCustomAddRowButton?x.onCustomAddRowButton(i):L(I,{hidden:x.hiddenAddRowButton,type:"dashed",block:true,onClick:function e(){var r;return i.add(t((r={},r[T]=u(),r),x.getAddRowDefaultValues==null?void 0:x.getAddRowDefaultValues()))},children:"添加"})]})}),L(a,{dropAnimation:{duration:0},children:b&&B?L(C,{isOverlay:true,uid:b,className:"drag-form-list-overlay",formListFieldData:B,dragIcon:x.dragIcon,formListOperate:null,index:0,formStageCompleteName:[].concat(j,[B.name]),prevCompleteName:j,uidFieldName:T,children:x.children},b):null}),L(p.ErrorList,{errors:m?[L("div",{style:{color:"#ff4d4f",padding:"5px"},children:m})]:undefined})]})})]})}})})})};export{k as DragFormList};
|
|
13
13
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/drag-form-list/sortable-item.tsx","@flatbiz/antd/src/drag-form-list/drag-form-list.tsx"],"sourcesContent":["import { DragOutlined } from '@ant-design/icons';\nimport { classNames } from '@dimjs/utils';\nimport { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { hooks } from '@wove/react';\nimport { Form, type FormListFieldData, type FormListOperation } from 'antd';\nimport { Fragment, type CSSProperties, type ReactElement } from 'react';\nimport { type DragFormListContentProps, type DragFormListProps } from './types';\nexport type SortableItemProps = {\n formListFieldData: FormListFieldData;\n formListOperate: FormListOperation;\n dragIcon?: DragFormListProps['dragIcon'];\n getItemDragDisabled?: DragFormListProps['getItemDragDisabled'];\n dragDisabled?: DragFormListProps['dragDisabled'];\n isGray?: boolean;\n className?: string;\n style?: CSSProperties;\n uid: string | number;\n index: number;\n isOverlay?: boolean;\n formStageCompleteName: (string | number)[];\n children: (data: DragFormListContentProps) => ReactElement;\n prevCompleteName: (string | number)[];\n uidFieldName: string;\n};\nexport function SortableItem(props: SortableItemProps) {\n const form = Form.useFormInstance();\n const isDisabled = props.isOverlay ? false : props.getItemDragDisabled?.(props.uid, props.index);\n const { listeners, setNodeRef, transform, transition } = useSortable({\n id: props.uid,\n disabled: isDisabled,\n });\n\n const dragIconRender = hooks.useCallbackRef(() => {\n const dragIcon = props.dragIcon ? props.dragIcon : <DragOutlined />;\n return props.dragDisabled ? (\n <Fragment />\n ) : (\n <span className=\"drag-form-list-item-trigger\" {...listeners}>\n <span>{dragIcon}</span>\n </span>\n );\n });\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n ...props.style,\n };\n\n const cname = classNames(\n 'drag-form-list-item',\n {\n 'drag-form-list-item-grap': props.isGray,\n 'drag-form-list-item-disabled': isDisabled,\n },\n props.className,\n );\n return (\n <div style={{ ...style }} ref={setNodeRef} className={cname}>\n <Form.Item style={{ margin: 0 }}>{dragIconRender()}</Form.Item>\n <div className=\"drag-form-list-item-content\">\n {props.children({\n formListFieldData: props.formListFieldData,\n operation: props.formListOperate,\n formStageCompleteName: props.formStageCompleteName,\n index: props.index,\n getInsideFormItemName: (key: string) => {\n return [props.formListFieldData.name, key];\n },\n getInsideFormItemData: () => {\n return form.getFieldValue(props.formStageCompleteName) || {};\n },\n prevCompleteName: props.prevCompleteName,\n uidKey: props.uidFieldName,\n })}\n </div>\n </div>\n );\n}\n","import { classNames } from '@dimjs/utils';\nimport { closestCenter, DndContext, DragOverlay } from '@dnd-kit/core';\nimport { arrayMove, SortableContext, verticalListSortingStrategy } from '@dnd-kit/sortable';\nimport { getUuid, toArray, type TAny, type TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Empty, Form, type FormListFieldData } from 'antd';\nimport { Fragment, useMemo, useRef, useState, type ReactElement } from 'react';\nimport { BlockLayout } from '../block-layout';\nimport { ButtonWrapper } from '../button-wrapper';\nimport { FormItemGroup } from '../form-item-group';\nimport { FormItemHorizontalUnionProps } from '../form-item-group/horizontal-union';\nimport { TextSymbolWrapper } from '../text-symbol-wrapper';\nimport { SortableItem } from './sortable-item';\nimport './style.less';\nimport { type DragFormListProps } from './types';\n\ntype FormListChildrenWrapperProps = {\n wrapper?: DragFormListProps['formListChildrenWrapper'];\n\n children: ReactElement;\n};\nconst FormListChildrenWrapper = (props: FormListChildrenWrapperProps) => {\n if (props.wrapper) return props.wrapper({ children: props.children });\n return props.children;\n};\n\nconst FormListTitleRender = (props: {\n formListItemTitleList: DragFormListProps['formListItemTitleList'];\n formListItemTitleHProps?: DragFormListProps['formListItemTitleHorizontalUnionProps'];\n dragDisabled?: boolean;\n}) => {\n const gap = props.formListItemTitleHProps?.gap;\n const innerList: FormItemHorizontalUnionProps['groupConfigList'] = props.dragDisabled\n ? []\n : [{ width: 35, mainItem: <div style={{ marginRight: gap === undefined ? -15 : -gap }} /> }];\n return (\n <FormItemGroup.HorizontalUnion\n {...props.formListItemTitleHProps}\n style={{ marginBottom: 10, ...props.formListItemTitleHProps?.style }}\n groupConfigList={innerList.concat(\n props.formListItemTitleList?.map((item) => {\n if (item.required) {\n return {\n width: item.width,\n mainItem: (\n <div style={{ textAlign: 'center' }}>\n <TextSymbolWrapper text={item.title} symbolType=\"required\" />\n </div>\n ),\n };\n }\n return { width: item.width, mainItem: <div style={{ textAlign: 'center' }}>{item.title}</div> };\n }) || [],\n )}\n />\n );\n};\n\n/**\n * 可拖拽FormList\n * ```\n * Demo: https://fex.qa.tcshuke.com/docs/admin/main/form/list\n * 1. FormList数组中必须要有唯一值字段,默认值字段名称uid,可通过uidFieldName自定义设置\n * ```\n */\nexport const DragFormList = (props: DragFormListProps) => {\n const stageCompleteName = [...props.prevCompleteName, ...toArray(props.name)] as Array<string | number>;\n const [dragActiveId, setDragActiveId] = useState<string | number>();\n const form = Form.useFormInstance();\n const formListOperationRef = useRef<FormListFieldData[]>([]);\n\n const uidFieldName = props.uidFieldName || 'uid';\n // 使用 useWatch 可确保FormList在变更后及时刷新\n const formListValue = Form.useWatch(stageCompleteName, form);\n\n const getUidValue = hooks.useCallbackRef((item) => {\n return item?.[uidFieldName] as string | number;\n });\n\n function handleDragStart(event) {\n const { active } = event;\n setDragActiveId(active.id);\n }\n\n const getItems = hooks.useCallbackRef(() => {\n /** 只能通过getFieldValue取值 */\n return (form.getFieldValue(stageCompleteName) || []) as TPlainObject[];\n });\n\n function handleDragEnd(event) {\n const { active, over } = event;\n const items = getItems();\n if (active.id !== over.id) {\n const oldIndex = items.findIndex((item) => getUidValue(item) === active.id);\n const newIndex = items.findIndex((item) => getUidValue(item) === over.id);\n const newList = arrayMove<TPlainObject>(items, oldIndex, newIndex);\n form.setFields([\n {\n name: props.name,\n value: newList,\n },\n ]);\n props.onDropChange?.(newList);\n }\n setDragActiveId(undefined);\n }\n\n const dragOverlayItem = useMemo(() => {\n if (!dragActiveId) return undefined;\n const items = getItems();\n const targetIndex = items.findIndex((item) => getUidValue(item) === dragActiveId);\n return formListOperationRef.current.find((item) => item.name === targetIndex);\n }, [dragActiveId, getItems, getUidValue]);\n\n return (\n <BlockLayout className={classNames('drag-form-list', props.className)} style={props.style}>\n <DndContext collisionDetection={closestCenter} onDragStart={handleDragStart} onDragEnd={handleDragEnd}>\n <Form.List name={props.name} rules={props.rules}>\n {(fields, operation, { errors }) => {\n formListOperationRef.current = fields;\n return (\n <div\n style={{\n borderRadius: '6px',\n border: errors?.length ? '1px solid #ff4d4f' : '1px solid transparent',\n }}\n >\n {props.formListItemTitleList?.length ? (\n <FormListTitleRender\n formListItemTitleList={props.formListItemTitleList}\n formListItemTitleHProps={props.formListItemTitleHorizontalUnionProps}\n dragDisabled={props.dragDisabled}\n />\n ) : null}\n {!props.hiddenEmptyRender && !formListValue?.length ? (\n <Empty image={Empty.PRESENTED_IMAGE_SIMPLE} style={{ margin: '15px 0' }} />\n ) : null}\n <FormListChildrenWrapper wrapper={props.formListChildrenWrapper}>\n <Fragment>\n <SortableContext\n items={getItems().map((temp) => getUidValue(temp))}\n strategy={verticalListSortingStrategy}\n >\n <Fragment>\n {fields.map((item, index) => {\n const uid = getUidValue(getItems()[index]);\n if (!uid) return null;\n return (\n <SortableItem\n formListOperate={operation}\n formListFieldData={item}\n uid={uid}\n key={`${uid}-${item.key}`}\n dragIcon={props.dragIcon}\n getItemDragDisabled={props.getItemDragDisabled}\n dragDisabled={props.dragDisabled}\n isGray={!!uid && uid === dragActiveId}\n index={index}\n formStageCompleteName={[...stageCompleteName, item.name]}\n prevCompleteName={stageCompleteName}\n uidFieldName={uidFieldName}\n style={props.itemStyle}\n >\n {props.children}\n </SortableItem>\n );\n })}\n {props.onCustomAddRowButton ? (\n props.onCustomAddRowButton(operation)\n ) : (\n <ButtonWrapper\n hidden={props.hiddenAddRowButton}\n type=\"dashed\"\n block\n onClick={() =>\n operation.add({\n [uidFieldName]: getUuid(),\n ...props.getAddRowDefaultValues?.(),\n })\n }\n >\n 添加\n </ButtonWrapper>\n )}\n </Fragment>\n </SortableContext>\n <DragOverlay dropAnimation={{ duration: 0 }}>\n {dragActiveId && dragOverlayItem ? (\n <SortableItem\n isOverlay={true}\n uid={dragActiveId}\n key={dragActiveId}\n className=\"drag-form-list-overlay\"\n formListFieldData={dragOverlayItem}\n dragIcon={props.dragIcon}\n formListOperate={null as TAny}\n index={0}\n formStageCompleteName={[...stageCompleteName, dragOverlayItem.name]}\n prevCompleteName={stageCompleteName}\n uidFieldName={uidFieldName}\n >\n {props.children}\n </SortableItem>\n ) : null}\n </DragOverlay>\n <Form.ErrorList\n errors={\n errors\n ? [<div style={{ color: '#ff4d4f', padding: '5px' }}>{errors}</div>]\n : undefined\n }\n />\n </Fragment>\n </FormListChildrenWrapper>\n </div>\n );\n }}\n </Form.List>\n </DndContext>\n </BlockLayout>\n );\n};\n"],"names":["SortableItem","props","form","Form","useFormInstance","isDisabled","isOverlay","getItemDragDisabled","uid","index","_useSortable","useSortable","id","disabled","listeners","setNodeRef","transform","transition","dragIconRender","_hooks","useCallbackRef","dragIcon","_jsx","_DragOutlined","dragDisabled","Fragment","_extends","className","children","style","CSS","Transform","toString","cname","_classNames","isGray","_jsxs","ref","Item","margin","formListFieldData","operation","formListOperate","formStageCompleteName","getInsideFormItemName","key","name","getInsideFormItemData","getFieldValue","prevCompleteName","uidKey","uidFieldName","FormListChildrenWrapper","wrapper","FormListTitleRender","_props$formListItemTi","_props$formListItemTi2","_props$formListItemTi3","gap","formListItemTitleHProps","innerList","width","mainItem","marginRight","undefined","FormItemGroup","HorizontalUnion","marginBottom","groupConfigList","concat","formListItemTitleList","map","item","required","textAlign","TextSymbolWrapper","text","title","symbolType","DragFormList","stageCompleteName","toArray","_useState","useState","dragActiveId","setDragActiveId","formListOperationRef","useRef","formListValue","useWatch","getUidValue","handleDragStart","event","active","getItems","handleDragEnd","over","items","oldIndex","findIndex","newIndex","newList","arrayMove","setFields","value","onDropChange","dragOverlayItem","useMemo","targetIndex","current","find","BlockLayout","DndContext","collisionDetection","closestCenter","onDragStart","onDragEnd","List","rules","fields","_ref","_props$formListItemTi4","errors","borderRadius","border","length","formListItemTitleHorizontalUnionProps","hiddenEmptyRender","Empty","image","PRESENTED_IMAGE_SIMPLE","formListChildrenWrapper","SortableContext","temp","strategy","verticalListSortingStrategy","itemStyle","onCustomAddRowButton","ButtonWrapper","hidden","hiddenAddRowButton","type","block","onClick","_extends2","add","getUuid","getAddRowDefaultValues","DragOverlay","dropAnimation","duration","ErrorList","color","padding"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/drag-form-list/sortable-item.tsx","@flatbiz/antd/src/drag-form-list/drag-form-list.tsx"],"sourcesContent":["import { DragOutlined } from '@ant-design/icons';\nimport { classNames } from '@dimjs/utils';\nimport { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { hooks } from '@wove/react';\nimport { Form, type FormListFieldData, type FormListOperation } from 'antd';\nimport { Fragment, type CSSProperties, type ReactElement } from 'react';\nimport { type DragFormListContentProps, type DragFormListProps } from './types';\nexport type SortableItemProps = {\n formListFieldData: FormListFieldData;\n formListOperate: FormListOperation;\n dragIcon?: DragFormListProps['dragIcon'];\n getItemDragDisabled?: DragFormListProps['getItemDragDisabled'];\n dragDisabled?: DragFormListProps['dragDisabled'];\n isGray?: boolean;\n className?: string;\n style?: CSSProperties;\n uid: string | number;\n index: number;\n isOverlay?: boolean;\n formStageCompleteName: (string | number)[];\n children: (data: DragFormListContentProps) => ReactElement;\n prevCompleteName: (string | number)[];\n uidFieldName: string;\n};\nexport function SortableItem(props: SortableItemProps) {\n const form = Form.useFormInstance();\n const isDisabled = props.isOverlay\n ? false\n : props.getItemDragDisabled?.(props.uid, props.index);\n const { listeners, setNodeRef, transform, transition } = useSortable({\n id: props.uid,\n disabled: isDisabled,\n });\n\n const dragIconRender = hooks.useCallbackRef(() => {\n const dragIcon = props.dragIcon ? props.dragIcon : <DragOutlined />;\n return props.dragDisabled ? (\n <Fragment />\n ) : (\n <span className=\"drag-form-list-item-trigger\" {...listeners}>\n <span>{dragIcon}</span>\n </span>\n );\n });\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n ...props.style,\n };\n\n const cname = classNames(\n 'drag-form-list-item',\n {\n 'drag-form-list-item-grap': props.isGray,\n 'drag-form-list-item-disabled': isDisabled,\n },\n props.className\n );\n return (\n <div style={{ ...style }} ref={setNodeRef} className={cname}>\n <Form.Item noStyle>{dragIconRender()}</Form.Item>\n <div className=\"drag-form-list-item-content\">\n {props.children({\n formListFieldData: props.formListFieldData,\n operation: props.formListOperate,\n formStageCompleteName: props.formStageCompleteName,\n index: props.index,\n getInsideFormItemName: (key: string) => {\n return [props.formListFieldData.name, key];\n },\n getInsideFormItemData: () => {\n return form.getFieldValue(props.formStageCompleteName) || {};\n },\n prevCompleteName: props.prevCompleteName,\n uidKey: props.uidFieldName,\n })}\n </div>\n </div>\n );\n}\n","import { classNames } from '@dimjs/utils';\nimport { closestCenter, DndContext, DragOverlay } from '@dnd-kit/core';\nimport { arrayMove, SortableContext, verticalListSortingStrategy } from '@dnd-kit/sortable';\nimport { getUuid, toArray, type TAny, type TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Empty, Form, type FormListFieldData } from 'antd';\nimport { Fragment, useMemo, useRef, useState, type ReactElement } from 'react';\nimport { BlockLayout } from '../block-layout';\nimport { ButtonWrapper } from '../button-wrapper';\nimport { FormItemGroup } from '../form-item-group';\nimport { FormItemHorizontalUnionProps } from '../form-item-group/horizontal-union';\nimport { TextSymbolWrapper } from '../text-symbol-wrapper';\nimport { SortableItem } from './sortable-item';\nimport './style.less';\nimport { type DragFormListProps } from './types';\n\ntype FormListChildrenWrapperProps = {\n wrapper?: DragFormListProps['formListChildrenWrapper'];\n\n children: ReactElement;\n};\nconst FormListChildrenWrapper = (props: FormListChildrenWrapperProps) => {\n if (props.wrapper) return props.wrapper({ children: props.children });\n return props.children;\n};\n\nconst FormListTitleRender = (props: {\n formListItemTitleList: DragFormListProps['formListItemTitleList'];\n formListItemTitleHProps?: DragFormListProps['formListItemTitleHorizontalUnionProps'];\n dragDisabled?: boolean;\n}) => {\n const gap = props.formListItemTitleHProps?.gap;\n const innerList: FormItemHorizontalUnionProps['groupConfigList'] = props.dragDisabled\n ? []\n : [\n {\n width: 35,\n mainItem: <div style={{ marginRight: gap === undefined ? -15 : -gap }} />,\n },\n ];\n return (\n <FormItemGroup.HorizontalUnion\n {...props.formListItemTitleHProps}\n style={{ marginBottom: 10, ...props.formListItemTitleHProps?.style }}\n groupConfigList={innerList.concat(\n props.formListItemTitleList?.map((item) => {\n if (item.required) {\n return {\n width: item.width,\n mainItem: (\n <div style={{ textAlign: 'center' }}>\n <TextSymbolWrapper text={item.title} symbolType=\"required\" />\n </div>\n ),\n };\n }\n return {\n width: item.width,\n mainItem: <div style={{ textAlign: 'center' }}>{item.title}</div>,\n };\n }) || [],\n )}\n />\n );\n};\n\n/**\n * 可拖拽FormList\n * ```\n * Demo: https://fex.qa.tcshuke.com/docs/admin/main/form/list\n * 1. FormList数组中必须要有唯一值字段,默认值字段名称uid,可通过uidFieldName自定义设置\n * 2. 通过 itemGap 设置FormList Item 之间间隙\n * ```\n */\nexport const DragFormList = (props: DragFormListProps) => {\n const stageCompleteName = [...props.prevCompleteName, ...toArray(props.name)] as Array<string | number>;\n const [dragActiveId, setDragActiveId] = useState<string | number>();\n const form = Form.useFormInstance();\n const formListOperationRef = useRef<FormListFieldData[]>([]);\n\n const uidFieldName = props.uidFieldName || 'uid';\n // 使用 useWatch 可确保FormList在变更后及时刷新\n const formListValue = Form.useWatch(stageCompleteName, form);\n\n const getUidValue = hooks.useCallbackRef((item) => {\n return item?.[uidFieldName] as string | number;\n });\n\n function handleDragStart(event) {\n const { active } = event;\n setDragActiveId(active.id);\n }\n\n const getItems = hooks.useCallbackRef(() => {\n /** 只能通过getFieldValue取值 */\n return (form.getFieldValue(stageCompleteName) || []) as TPlainObject[];\n });\n\n function handleDragEnd(event) {\n const { active, over } = event;\n const items = getItems();\n if (active.id !== over.id) {\n const oldIndex = items.findIndex((item) => getUidValue(item) === active.id);\n const newIndex = items.findIndex((item) => getUidValue(item) === over.id);\n const newList = arrayMove<TPlainObject>(items, oldIndex, newIndex);\n form.setFields([\n {\n name: props.name,\n value: newList,\n },\n ]);\n props.onDropChange?.(newList);\n }\n setDragActiveId(undefined);\n }\n\n const dragOverlayItem = useMemo(() => {\n if (!dragActiveId) return undefined;\n const items = getItems();\n const targetIndex = items.findIndex((item) => getUidValue(item) === dragActiveId);\n return formListOperationRef.current.find((item) => item.name === targetIndex);\n }, [dragActiveId, getItems, getUidValue]);\n\n const gapHalf = props.itemGap ? props.itemGap / 2 : 8;\n\n return (\n <BlockLayout className={classNames('drag-form-list', props.className)} style={props.style}>\n <DndContext collisionDetection={closestCenter} onDragStart={handleDragStart} onDragEnd={handleDragEnd}>\n <Form.List name={props.name} rules={props.rules}>\n {(fields, operation, { errors }) => {\n formListOperationRef.current = fields;\n return (\n <div\n style={{\n borderRadius: '6px',\n border: errors?.length ? '1px solid #ff4d4f' : '1px solid transparent',\n }}\n >\n {props.formListItemTitleList?.length ? (\n <FormListTitleRender\n formListItemTitleList={props.formListItemTitleList}\n formListItemTitleHProps={props.formListItemTitleHorizontalUnionProps}\n dragDisabled={props.dragDisabled}\n />\n ) : null}\n {!props.hiddenEmptyRender && !formListValue?.length ? (\n <Empty image={Empty.PRESENTED_IMAGE_SIMPLE} style={{ margin: '15px 0' }} />\n ) : null}\n <FormListChildrenWrapper wrapper={props.formListChildrenWrapper}>\n <Fragment>\n <SortableContext\n items={getItems().map((temp) => getUidValue(temp))}\n strategy={verticalListSortingStrategy}\n >\n <Fragment>\n {fields.map((item, index) => {\n const uid = getUidValue(getItems()[index]);\n if (!uid) return null;\n return (\n <SortableItem\n formListOperate={operation}\n formListFieldData={item}\n uid={uid}\n key={`${uid}-${item.key}`}\n dragIcon={props.dragIcon}\n getItemDragDisabled={props.getItemDragDisabled}\n dragDisabled={props.dragDisabled}\n isGray={!!uid && uid === dragActiveId}\n index={index}\n formStageCompleteName={[...stageCompleteName, item.name]}\n prevCompleteName={stageCompleteName}\n uidFieldName={uidFieldName}\n style={{\n ...props.itemStyle,\n padding: `${gapHalf}px 0 ${gapHalf}px 0`,\n }}\n >\n {props.children}\n </SortableItem>\n );\n })}\n {props.onCustomAddRowButton ? (\n props.onCustomAddRowButton(operation)\n ) : (\n <ButtonWrapper\n hidden={props.hiddenAddRowButton}\n type=\"dashed\"\n block\n onClick={() =>\n operation.add({\n [uidFieldName]: getUuid(),\n ...props.getAddRowDefaultValues?.(),\n })\n }\n >\n 添加\n </ButtonWrapper>\n )}\n </Fragment>\n </SortableContext>\n <DragOverlay dropAnimation={{ duration: 0 }}>\n {dragActiveId && dragOverlayItem ? (\n <SortableItem\n isOverlay={true}\n uid={dragActiveId}\n key={dragActiveId}\n className=\"drag-form-list-overlay\"\n formListFieldData={dragOverlayItem}\n dragIcon={props.dragIcon}\n formListOperate={null as TAny}\n index={0}\n formStageCompleteName={[...stageCompleteName, dragOverlayItem.name]}\n prevCompleteName={stageCompleteName}\n uidFieldName={uidFieldName}\n >\n {props.children}\n </SortableItem>\n ) : null}\n </DragOverlay>\n <Form.ErrorList\n errors={\n errors\n ? [<div style={{ color: '#ff4d4f', padding: '5px' }}>{errors}</div>]\n : undefined\n }\n />\n </Fragment>\n </FormListChildrenWrapper>\n </div>\n );\n }}\n </Form.List>\n </DndContext>\n </BlockLayout>\n );\n};\n"],"names":["SortableItem","props","form","Form","useFormInstance","isDisabled","isOverlay","getItemDragDisabled","uid","index","_useSortable","useSortable","id","disabled","listeners","setNodeRef","transform","transition","dragIconRender","_hooks","useCallbackRef","dragIcon","_jsx","_DragOutlined","dragDisabled","Fragment","_extends","className","children","style","CSS","Transform","toString","cname","_classNames","isGray","_jsxs","ref","Item","noStyle","formListFieldData","operation","formListOperate","formStageCompleteName","getInsideFormItemName","key","name","getInsideFormItemData","getFieldValue","prevCompleteName","uidKey","uidFieldName","FormListChildrenWrapper","wrapper","FormListTitleRender","_props$formListItemTi","_props$formListItemTi2","_props$formListItemTi3","gap","formListItemTitleHProps","innerList","width","mainItem","marginRight","undefined","FormItemGroup","HorizontalUnion","marginBottom","groupConfigList","concat","formListItemTitleList","map","item","required","textAlign","TextSymbolWrapper","text","title","symbolType","DragFormList","stageCompleteName","toArray","_useState","useState","dragActiveId","setDragActiveId","formListOperationRef","useRef","formListValue","useWatch","getUidValue","handleDragStart","event","active","getItems","handleDragEnd","over","items","oldIndex","findIndex","newIndex","newList","arrayMove","setFields","value","onDropChange","dragOverlayItem","useMemo","targetIndex","current","find","gapHalf","itemGap","BlockLayout","DndContext","collisionDetection","closestCenter","onDragStart","onDragEnd","List","rules","fields","_ref","_props$formListItemTi4","errors","borderRadius","border","length","formListItemTitleHorizontalUnionProps","hiddenEmptyRender","Empty","image","PRESENTED_IMAGE_SIMPLE","margin","formListChildrenWrapper","SortableContext","temp","strategy","verticalListSortingStrategy","itemStyle","padding","onCustomAddRowButton","ButtonWrapper","hidden","hiddenAddRowButton","type","block","onClick","_extends2","add","getUuid","getAddRowDefaultValues","DragOverlay","dropAnimation","duration","ErrorList","color"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.form-list-wrapper{background-color:var(--block-bg-color)}.union-after-text,.union-before-text{align-self:flex-start;flex-shrink:0;line-height:32px}.union-after-element,.union-before-element{align-self:flex-start}.form-item-group-horizontal-union .v-flex-layout .ant-form-item{align-self:flex-start;margin-bottom:0}.form-item-group-horizontal-union .v-flex-layout{align-items:flex-start}
|
|
1
|
+
.form-list-wrapper{background-color:var(--block-bg-color)}.form-list-wrapper .form-list-item-content .ant-form-item.form-item-group-horizontal-union,.form-list-wrapper .form-list-item-content .ant-form-item.form-item-group-horizontal-union .ant-form-item{margin-bottom:0}.union-after-text,.union-before-text{align-self:flex-start;flex-shrink:0;line-height:32px}.union-after-element,.union-before-element{align-self:flex-start}.form-item-group-horizontal-union .v-flex-layout .ant-form-item{align-self:flex-start;margin-bottom:0}.form-item-group-horizontal-union .v-flex-layout{align-items:flex-start}
|
|
@@ -9,5 +9,5 @@ import './../flex-layout/index.css';
|
|
|
9
9
|
import './../text-symbol-wrapper/index.css';
|
|
10
10
|
import './index.css';
|
|
11
11
|
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
12
|
-
import{classNames as e}from"@dimjs/utils/cjs/class-names";import{_ as t}from"../_rollupPluginBabelHelpers-a0769acd.js";import{toArray as r,getUuid as i}from"@flatbiz/utils";import{Form as o,Empty as n}from"antd";import{useRef as l,Fragment as a}from"react";import{ButtonWrapper as s}from"../button-wrapper/index.js";import{FormItemGroup as m}from"../form-item-group/index.js";import{TextSymbolWrapper as d}from"../text-symbol-wrapper/index.js";import{jsx as p,jsxs as u}from"react/jsx-runtime";import"@ant-design/icons/es/icons/LoadingOutlined";import"@dimjs/lang/cjs/is-promise";import"@wove/react/cjs/hooks";import"../index-7f4ad045.js";import"antd/es/locale/en_US";import"antd/es/locale/zh_CN";import"dayjs";import"dayjs/locale/en";import"dayjs/locale/zh-cn";import"dayjs/plugin/advancedFormat";import"dayjs/plugin/customParseFormat";import"dayjs/plugin/localeData";import"dayjs/plugin/utc";import"dayjs/plugin/weekday";import"dayjs/plugin/weekOfYear";import"dayjs/plugin/weekYear";import"../fba-hooks/index.js";import"@dimjs/lang/cjs/is-array";import"../use-responsive-point-21b8c601.js";import"@dimjs/utils/cjs/extend";import"../fba-utils/index.js";import"../flex-layout/index.js";var c=function e(t){if(t.wrapper)return t.wrapper({children:t.children});return t.children};var f=function e(r){var i,o;return p(m.HorizontalUnion,t({},r.formListItemTitleHProps,{style:t({marginBottom:10},(i=r.formListItemTitleHProps)==null?void 0:i.style),groupConfigList:((o=r.formListItemTitleList)==null?void 0:o.map((function(e){if(e.required){return{width:e.width,mainItem:p("div",{style:{textAlign:"center"},children:p(d,{text:e.title,symbolType:"required"})})}}return{width:e.width,mainItem:p("div",{style:{textAlign:"center"},children:e.title})}})))||[]}))};var
|
|
12
|
+
import{classNames as e}from"@dimjs/utils/cjs/class-names";import{_ as t}from"../_rollupPluginBabelHelpers-a0769acd.js";import{toArray as r,getUuid as i}from"@flatbiz/utils";import{Form as o,Empty as n}from"antd";import{useRef as l,Fragment as a}from"react";import{ButtonWrapper as s}from"../button-wrapper/index.js";import{FormItemGroup as m}from"../form-item-group/index.js";import{TextSymbolWrapper as d}from"../text-symbol-wrapper/index.js";import{jsx as p,jsxs as u}from"react/jsx-runtime";import"@ant-design/icons/es/icons/LoadingOutlined";import"@dimjs/lang/cjs/is-promise";import"@wove/react/cjs/hooks";import"../index-7f4ad045.js";import"antd/es/locale/en_US";import"antd/es/locale/zh_CN";import"dayjs";import"dayjs/locale/en";import"dayjs/locale/zh-cn";import"dayjs/plugin/advancedFormat";import"dayjs/plugin/customParseFormat";import"dayjs/plugin/localeData";import"dayjs/plugin/utc";import"dayjs/plugin/weekday";import"dayjs/plugin/weekOfYear";import"dayjs/plugin/weekYear";import"../fba-hooks/index.js";import"@dimjs/lang/cjs/is-array";import"../use-responsive-point-21b8c601.js";import"@dimjs/utils/cjs/extend";import"../fba-utils/index.js";import"../flex-layout/index.js";var c=function e(t){if(t.wrapper)return t.wrapper({children:t.children});return t.children};var f=function e(r){var i,o;return p(m.HorizontalUnion,t({},r.formListItemTitleHProps,{style:t({marginBottom:10},(i=r.formListItemTitleHProps)==null?void 0:i.style),groupConfigList:((o=r.formListItemTitleList)==null?void 0:o.map((function(e){if(e.required){return{width:e.width,mainItem:p("div",{style:{textAlign:"center"},children:p(d,{text:e.title,symbolType:"required"})})}}return{width:e.width,mainItem:p("div",{style:{textAlign:"center"},children:e.title})}})))||[]}))};var g=function m(d){var g=[].concat(d.prevCompleteName,r(d.name));var h=o.useFormInstance();var y=l([]);var j=d.uidFieldName||"uid";var v=o.useWatch(g,h);var x=d.itemGap?d.itemGap/2:8;return p("div",{className:e("form-list-wrapper",d.className),style:d.style,children:p(o.List,{name:d.name,rules:d.rules,children:function e(r,l,m){var w;var L=m.errors;y.current=r;return u("div",{style:{borderRadius:"6px",border:L!=null&&L.length?"1px solid #ff4d4f":"1px solid transparent"},children:[(w=d.formListItemTitleList)!=null&&w.length?p(f,{formListItemTitleList:d.formListItemTitleList,formListItemTitleHProps:d.formListItemTitleHorizontalUnionProps}):null,!d.hiddenEmptyRender&&!(v!=null&&v.length)?p(n,{image:n.PRESENTED_IMAGE_SIMPLE,style:{margin:"15px 0"}}):null,p(c,{wrapper:d.formListChildrenWrapper,children:u(a,{children:[r.map((function(e,t){var r=[].concat(g,[e.name]);return p("div",{className:"form-list-item-content",style:{padding:x+"px 0 "+x+"px 0"},children:d.children({formListFieldData:e,operation:l,formStageCompleteName:r,prevCompleteName:g,index:t,getInsideFormItemName:function t(r){return[e.name,r]},getInsideFormItemData:function e(){return h.getFieldValue(r)},uidKey:j})},e.key)})),d.onCustomAddRowButton?d.onCustomAddRowButton(l):p(s,{hidden:d.hiddenAddRowButton,type:"dashed",block:true,onClick:function e(){var r;return l.add(t((r={},r[j]=i(),r),d.getAddRowDefaultValues==null?void 0:d.getAddRowDefaultValues()))},children:"添加"}),p(o.ErrorList,{errors:L.length?[p("div",{style:{color:"#ff4d4f",padding:"5px"},children:L})]:undefined})]})})]})}})})};export{g as FormListWrapper};
|
|
13
13
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/form-list-wrapper/form-list-wrapper.tsx"],"sourcesContent":["import { classNames } from '@dimjs/utils';\nimport { getUuid, toArray } from '@flatbiz/utils';\nimport { Empty, Form, type FormListFieldData } from 'antd';\nimport { Fragment, useRef, type ReactElement } from 'react';\nimport { ButtonWrapper } from '../button-wrapper';\nimport { FormItemGroup } from '../form-item-group';\nimport { TextSymbolWrapper } from '../text-symbol-wrapper';\nimport './style.less';\nimport { type FormListWrapperProps } from './types';\n\ntype FormListChildrenWrapperProps = {\n wrapper?: FormListWrapperProps['formListChildrenWrapper'];\n children: ReactElement;\n};\nconst FormListChildrenWrapper = (props: FormListChildrenWrapperProps) => {\n if (props.wrapper) return props.wrapper({ children: props.children });\n return props.children;\n};\n\nconst FormListTitleRender = (props: {\n formListItemTitleList: FormListWrapperProps['formListItemTitleList'];\n formListItemTitleHProps?: FormListWrapperProps['formListItemTitleHorizontalUnionProps'];\n}) => {\n return (\n <FormItemGroup.HorizontalUnion\n {...props.formListItemTitleHProps}\n style={{ marginBottom: 10, ...props.formListItemTitleHProps?.style }}\n groupConfigList={\n props.formListItemTitleList?.map((item) => {\n if (item.required) {\n return {\n width: item.width,\n mainItem: (\n <div style={{ textAlign: 'center' }}>\n <TextSymbolWrapper text={item.title} symbolType=\"required\" />\n </div>\n ),\n };\n }\n return {\n width: item.width,\n mainItem: <div style={{ textAlign: 'center' }}>{item.title}</div>,\n };\n }) || []\n }\n />\n );\n};\n\n/**\n * Form.List 包装组件,使用更简单\n * ```\n * Demo: https://fex.qa.tcshuke.com/docs/admin/main/form/list\n * 1. FormList数组中必须要有唯一值字段,默认值字段名称uid,可通过uidFieldName自定义设置\n * ```\n */\nexport const FormListWrapper = (props: FormListWrapperProps) => {\n const stageCompleteName = [...props.prevCompleteName, ...toArray(props.name)] as Array<string | number>;\n const form = Form.useFormInstance();\n const formListOperationRef = useRef<FormListFieldData[]>([]);\n const uidFieldName = props.uidFieldName || 'uid';\n const formListValue = Form.useWatch(stageCompleteName, form);\n\n return (\n <div className={classNames('form-list-wrapper', props.className)} style={props.style}>\n <Form.List name={props.name} rules={props.rules}>\n {(fields, operation, { errors }) => {\n formListOperationRef.current = fields;\n return (\n <div\n style={{\n borderRadius: '6px',\n border: errors?.length ? '1px solid #ff4d4f' : '1px solid transparent',\n }}\n >\n {props.formListItemTitleList?.length ? (\n <FormListTitleRender\n formListItemTitleList={props.formListItemTitleList}\n formListItemTitleHProps={props.formListItemTitleHorizontalUnionProps}\n />\n ) : null}\n {!props.hiddenEmptyRender && !formListValue?.length ? (\n <Empty image={Empty.PRESENTED_IMAGE_SIMPLE} style={{ margin: '15px 0' }} />\n ) : null}\n <FormListChildrenWrapper wrapper={props.formListChildrenWrapper}>\n <Fragment>\n {fields.map((field, index) => {\n const formStageCompleteName = [...stageCompleteName, field.name];\n return (\n <
|
|
1
|
+
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/form-list-wrapper/form-list-wrapper.tsx"],"sourcesContent":["import { classNames } from '@dimjs/utils';\nimport { getUuid, toArray } from '@flatbiz/utils';\nimport { Empty, Form, type FormListFieldData } from 'antd';\nimport { Fragment, useRef, type ReactElement } from 'react';\nimport { ButtonWrapper } from '../button-wrapper';\nimport { FormItemGroup } from '../form-item-group';\nimport { TextSymbolWrapper } from '../text-symbol-wrapper';\nimport './style.less';\nimport { type FormListWrapperProps } from './types';\n\ntype FormListChildrenWrapperProps = {\n wrapper?: FormListWrapperProps['formListChildrenWrapper'];\n children: ReactElement;\n};\nconst FormListChildrenWrapper = (props: FormListChildrenWrapperProps) => {\n if (props.wrapper) return props.wrapper({ children: props.children });\n return props.children;\n};\n\nconst FormListTitleRender = (props: {\n formListItemTitleList: FormListWrapperProps['formListItemTitleList'];\n formListItemTitleHProps?: FormListWrapperProps['formListItemTitleHorizontalUnionProps'];\n}) => {\n return (\n <FormItemGroup.HorizontalUnion\n {...props.formListItemTitleHProps}\n style={{ marginBottom: 10, ...props.formListItemTitleHProps?.style }}\n groupConfigList={\n props.formListItemTitleList?.map((item) => {\n if (item.required) {\n return {\n width: item.width,\n mainItem: (\n <div style={{ textAlign: 'center' }}>\n <TextSymbolWrapper text={item.title} symbolType=\"required\" />\n </div>\n ),\n };\n }\n return {\n width: item.width,\n mainItem: <div style={{ textAlign: 'center' }}>{item.title}</div>,\n };\n }) || []\n }\n />\n );\n};\n\n/**\n * Form.List 包装组件,使用更简单\n * ```\n * Demo: https://fex.qa.tcshuke.com/docs/admin/main/form/list\n * 1. FormList数组中必须要有唯一值字段,默认值字段名称uid,可通过uidFieldName自定义设置\n * 2. 通过 itemGap 设置FormList Item 之间间隙\n * ```\n */\nexport const FormListWrapper = (props: FormListWrapperProps) => {\n const stageCompleteName = [...props.prevCompleteName, ...toArray(props.name)] as Array<string | number>;\n const form = Form.useFormInstance();\n const formListOperationRef = useRef<FormListFieldData[]>([]);\n const uidFieldName = props.uidFieldName || 'uid';\n const formListValue = Form.useWatch(stageCompleteName, form);\n\n const gapHalf = props.itemGap ? props.itemGap / 2 : 8;\n\n return (\n <div className={classNames('form-list-wrapper', props.className)} style={props.style}>\n <Form.List name={props.name} rules={props.rules}>\n {(fields, operation, { errors }) => {\n formListOperationRef.current = fields;\n return (\n <div\n style={{\n borderRadius: '6px',\n border: errors?.length ? '1px solid #ff4d4f' : '1px solid transparent',\n }}\n >\n {props.formListItemTitleList?.length ? (\n <FormListTitleRender\n formListItemTitleList={props.formListItemTitleList}\n formListItemTitleHProps={props.formListItemTitleHorizontalUnionProps}\n />\n ) : null}\n {!props.hiddenEmptyRender && !formListValue?.length ? (\n <Empty image={Empty.PRESENTED_IMAGE_SIMPLE} style={{ margin: '15px 0' }} />\n ) : null}\n <FormListChildrenWrapper wrapper={props.formListChildrenWrapper}>\n <Fragment>\n {fields.map((field, index) => {\n const formStageCompleteName = [...stageCompleteName, field.name];\n return (\n <div\n key={field.key}\n className=\"form-list-item-content\"\n style={{ padding: `${gapHalf}px 0 ${gapHalf}px 0` }}\n >\n {props.children({\n formListFieldData: field,\n operation: operation,\n formStageCompleteName,\n prevCompleteName: stageCompleteName,\n index,\n getInsideFormItemName: (key: string) => {\n return [field.name, key];\n },\n getInsideFormItemData: () => {\n return form.getFieldValue(formStageCompleteName);\n },\n uidKey: uidFieldName,\n })}\n </div>\n );\n })}\n {props.onCustomAddRowButton ? (\n props.onCustomAddRowButton(operation)\n ) : (\n <ButtonWrapper\n hidden={props.hiddenAddRowButton}\n type=\"dashed\"\n block\n onClick={() =>\n operation.add({\n [uidFieldName]: getUuid(),\n ...props.getAddRowDefaultValues?.(),\n })\n }\n >\n 添加\n </ButtonWrapper>\n )}\n\n <Form.ErrorList\n errors={\n errors.length\n ? [\n <div\n style={{\n color: '#ff4d4f',\n padding: '5px',\n }}\n >\n {errors}\n </div>,\n ]\n : undefined\n }\n />\n </Fragment>\n </FormListChildrenWrapper>\n </div>\n );\n }}\n </Form.List>\n </div>\n );\n};\n"],"names":["FormListChildrenWrapper","props","wrapper","children","FormListTitleRender","_props$formListItemTi","_props$formListItemTi2","_jsx","FormItemGroup","HorizontalUnion","_extends","formListItemTitleHProps","style","marginBottom","groupConfigList","formListItemTitleList","map","item","required","width","mainItem","textAlign","TextSymbolWrapper","text","title","symbolType","FormListWrapper","stageCompleteName","concat","prevCompleteName","toArray","name","form","Form","useFormInstance","formListOperationRef","useRef","uidFieldName","formListValue","useWatch","gapHalf","itemGap","className","_classNames","List","rules","fields","operation","_ref","_props$formListItemTi3","errors","current","_jsxs","borderRadius","border","length","formListItemTitleHorizontalUnionProps","hiddenEmptyRender","Empty","image","PRESENTED_IMAGE_SIMPLE","margin","formListChildrenWrapper","Fragment","field","index","formStageCompleteName","padding","formListFieldData","getInsideFormItemName","key","getInsideFormItemData","getFieldValue","uidKey","onCustomAddRowButton","ButtonWrapper","hidden","hiddenAddRowButton","type","block","onClick","_extends2","add","getUuid","getAddRowDefaultValues","ErrorList","color","undefined"],"mappings":"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"}
|
package/index.d.ts
CHANGED
|
@@ -1887,12 +1887,15 @@ export type DragFormListProps = {
|
|
|
1887
1887
|
formListChildrenWrapper?: (props: {
|
|
1888
1888
|
children: ReactElement;
|
|
1889
1889
|
}) => ReactElement;
|
|
1890
|
+
/** Antd Form.List rules 属性 */
|
|
1890
1891
|
rules?: FormListProps["rules"];
|
|
1891
1892
|
/**
|
|
1892
1893
|
* 设置FormList字段标题&必填标志
|
|
1893
1894
|
* ```
|
|
1894
1895
|
* demo: http://dev.flatjs.com:6007/pages/flat/oss-demo/main/form/list?env=me
|
|
1895
1896
|
* 1. 会根据数组顺序进行渲染
|
|
1897
|
+
* 2. 未设置width的元素,参与等分剩余宽度
|
|
1898
|
+
* 3. 设置width 要与FormList children中的item宽度相同,不然内容与标题无法对齐
|
|
1896
1899
|
* ```
|
|
1897
1900
|
*/
|
|
1898
1901
|
formListItemTitleList?: {
|
|
@@ -1902,12 +1905,15 @@ export type DragFormListProps = {
|
|
|
1902
1905
|
}[];
|
|
1903
1906
|
/** formListItemTitle HorizontalUnionProps 配置 */
|
|
1904
1907
|
formListItemTitleHorizontalUnionProps?: Omit<FormItemHorizontalUnionProps, "groupConfigList">;
|
|
1908
|
+
/** FormList Item 之间间隙,默认值:16 */
|
|
1909
|
+
itemGap?: number;
|
|
1905
1910
|
};
|
|
1906
1911
|
/**
|
|
1907
1912
|
* 可拖拽FormList
|
|
1908
1913
|
* ```
|
|
1909
1914
|
* Demo: https://fex.qa.tcshuke.com/docs/admin/main/form/list
|
|
1910
1915
|
* 1. FormList数组中必须要有唯一值字段,默认值字段名称uid,可通过uidFieldName自定义设置
|
|
1916
|
+
* 2. 通过 itemGap 设置FormList Item 之间间隙
|
|
1911
1917
|
* ```
|
|
1912
1918
|
*/
|
|
1913
1919
|
export declare const DragFormList: (props: DragFormListProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -3030,12 +3036,15 @@ export type FormListWrapperProps = {
|
|
|
3030
3036
|
}[];
|
|
3031
3037
|
/** formListItemTitle HorizontalUnionProps 配置 */
|
|
3032
3038
|
formListItemTitleHorizontalUnionProps?: Omit<FormItemHorizontalUnionProps, "groupConfigList">;
|
|
3039
|
+
/** FormList Item 之间间隙,默认值:16 */
|
|
3040
|
+
itemGap?: number;
|
|
3033
3041
|
};
|
|
3034
3042
|
/**
|
|
3035
3043
|
* Form.List 包装组件,使用更简单
|
|
3036
3044
|
* ```
|
|
3037
3045
|
* Demo: https://fex.qa.tcshuke.com/docs/admin/main/form/list
|
|
3038
3046
|
* 1. FormList数组中必须要有唯一值字段,默认值字段名称uid,可通过uidFieldName自定义设置
|
|
3047
|
+
* 2. 通过 itemGap 设置FormList Item 之间间隙
|
|
3039
3048
|
* ```
|
|
3040
3049
|
*/
|
|
3041
3050
|
export declare const FormListWrapper: (props: FormListWrapperProps) => import("react/jsx-runtime").JSX.Element;
|