Commit e4b98486e46866d56c2cc168e86b2be0b4d2d897
Merge branch 'feature/dataflow' of http://gitlab.qgutech.com/tianqiang/qx-common…
… into feature/dataflow
Showing
8 changed files
with
247 additions
and
109 deletions
| ... | ... | @@ -145,7 +145,7 @@ const QxCheckboxFieldPopover: React.FC<QxCheckboxFieldPopoverProp> = (props) => |
| 145 | 145 | } |
| 146 | 146 | placement={'bottomRight'} |
| 147 | 147 | trigger={props.disabled ? undefined : props.trigger || 'click'} |
| 148 | - open={visible} | |
| 148 | + open={props.disabled ? false: visible} | |
| 149 | 149 | onOpenChange={(v) => { |
| 150 | 150 | setVisible(v); |
| 151 | 151 | }} | ... | ... |
| ... | ... | @@ -269,7 +269,7 @@ const QxFieldPopover: React.FC<QxFieldPopoverProp> = (props) => { |
| 269 | 269 | content={fieldsPopContent()} |
| 270 | 270 | placement={'bottomRight'} |
| 271 | 271 | trigger={props.disabled ? undefined : props.trigger || 'click'} |
| 272 | - open={visible} | |
| 272 | + open={props.disabled ? false : visible} | |
| 273 | 273 | onOpenChange={(v) => { |
| 274 | 274 | if (!v) { |
| 275 | 275 | setTimeout(() => { | ... | ... |
| ... | ... | @@ -39,6 +39,7 @@ import moment from 'dayjs'; |
| 39 | 39 | import { QxBaseIcon } from '@qx/common'; |
| 40 | 40 | import Icon from '@ant-design/icons'; |
| 41 | 41 | import { SubNodeIcon } from './sub-node-icon'; |
| 42 | +import { SubDropIcon } from './sub-node-icon'; | |
| 42 | 43 | |
| 43 | 44 | import '../style/reset.less'; |
| 44 | 45 | |
| ... | ... | @@ -162,13 +163,17 @@ const ParameterModal: React.FC<ParameterSettingProps> = (props) => { |
| 162 | 163 | const columns = [ |
| 163 | 164 | { |
| 164 | 165 | title: ( |
| 165 | - <div style={{ display: 'flex', flexDirection: 'row' }}> | |
| 166 | - <span>参数编码</span> | |
| 166 | + <div style={{ | |
| 167 | + display: 'flex', flexDirection: 'row' | |
| 168 | + , alignContent: 'center', flexWrap: 'wrap' | |
| 169 | + }}> | |
| 170 | + <span className='parameter-setting-table-title'>参数编码</span> | |
| 167 | 171 | <span style={{ color: 'red' }}>*</span> |
| 168 | 172 | </div> |
| 169 | 173 | ), |
| 170 | 174 | dataIndex: 'code', |
| 171 | - width: '150px', | |
| 175 | + className: 'code-header', | |
| 176 | + width: '200px', | |
| 172 | 177 | key: 'code', |
| 173 | 178 | render: (text, record) => { |
| 174 | 179 | const strTitle = (text as string) || ''; |
| ... | ... | @@ -196,12 +201,13 @@ const ParameterModal: React.FC<ParameterSettingProps> = (props) => { |
| 196 | 201 | { |
| 197 | 202 | title: ( |
| 198 | 203 | <div style={{ display: 'flex', flexDirection: 'row' }}> |
| 199 | - <span>参数名</span> | |
| 204 | + <span className='parameter-setting-table-title'>参数名</span> | |
| 200 | 205 | <span style={{ color: 'red' }}>*</span> |
| 201 | 206 | </div> |
| 202 | 207 | ), |
| 203 | 208 | dataIndex: 'title', |
| 204 | 209 | width: '112px', |
| 210 | + className: 'ps-table-cell', | |
| 205 | 211 | key: 'title', |
| 206 | 212 | render: (text, record) => { |
| 207 | 213 | const strTitle = (record.title as string) || ''; |
| ... | ... | @@ -229,11 +235,12 @@ const ParameterModal: React.FC<ParameterSettingProps> = (props) => { |
| 229 | 235 | { |
| 230 | 236 | title: ( |
| 231 | 237 | <div style={{ display: 'flex', flexDirection: 'row' }}> |
| 232 | - <span>参数类型</span> | |
| 238 | + <span className='parameter-setting-table-title'>参数类型</span> | |
| 233 | 239 | <span style={{ color: 'red' }}>*</span> |
| 234 | 240 | </div> |
| 235 | 241 | ), |
| 236 | 242 | dataIndex: 'type', |
| 243 | + className: 'ps-table-cell', | |
| 237 | 244 | width: '102px', |
| 238 | 245 | key: 'type', |
| 239 | 246 | render: (text, record) => |
| ... | ... | @@ -256,8 +263,13 @@ const ParameterModal: React.FC<ParameterSettingProps> = (props) => { |
| 256 | 263 | </Form.Item> |
| 257 | 264 | }, |
| 258 | 265 | { |
| 259 | - title: '默认值', | |
| 266 | + title: ( | |
| 267 | + <div style={{ display: 'flex', flexDirection: 'row' }}> | |
| 268 | + <span className='parameter-setting-table-title'>默认值</span> | |
| 269 | + </div> | |
| 270 | + ), | |
| 260 | 271 | dataIndex: 'valueMapping', |
| 272 | + className: 'ps-table-cell', | |
| 261 | 273 | width: '116px', |
| 262 | 274 | key: 'valueMapping', |
| 263 | 275 | render: (text, record) => |
| ... | ... | @@ -282,8 +294,14 @@ const ParameterModal: React.FC<ParameterSettingProps> = (props) => { |
| 282 | 294 | </div> |
| 283 | 295 | }, |
| 284 | 296 | { |
| 285 | - title: '参数说明', | |
| 297 | + title: | |
| 298 | + ( | |
| 299 | + <div style={{ display: 'flex', flexDirection: 'row' }}> | |
| 300 | + <span className='parameter-setting-table-title'>参数说明</span> | |
| 301 | + </div> | |
| 302 | + ), | |
| 286 | 303 | dataIndex: 'description', |
| 304 | + className: 'ps-table-cell', | |
| 287 | 305 | key: 'description', |
| 288 | 306 | width: '102px', |
| 289 | 307 | render: (text, record) => ( |
| ... | ... | @@ -306,8 +324,14 @@ const ParameterModal: React.FC<ParameterSettingProps> = (props) => { |
| 306 | 324 | ), |
| 307 | 325 | }, |
| 308 | 326 | { |
| 309 | - title: '操作', | |
| 327 | + title: | |
| 328 | + ( | |
| 329 | + <div style={{ display: 'flex', flexDirection: 'row' }}> | |
| 330 | + <span className='parameter-setting-table-title'>操作</span> | |
| 331 | + </div> | |
| 332 | + ), | |
| 310 | 333 | key: 'action', |
| 334 | + className: 'ps-table-cell', | |
| 311 | 335 | width: '96px', |
| 312 | 336 | render: (text, record) => { |
| 313 | 337 | const isShowAdd = (record && checkShowAdd(record)); |
| ... | ... | @@ -348,9 +372,14 @@ const ParameterModal: React.FC<ParameterSettingProps> = (props) => { |
| 348 | 372 | ]; |
| 349 | 373 | |
| 350 | 374 | const range = { |
| 351 | - title: '取值范围', | |
| 375 | + title: | |
| 376 | + ( | |
| 377 | + <div style={{ display: 'flex', flexDirection: 'row' }}> | |
| 378 | + <span className='parameter-setting-table-title'>取值范围</span> | |
| 379 | + </div> | |
| 380 | + ), | |
| 352 | 381 | dataIndex: 'qxProps', |
| 353 | - editable: true, | |
| 382 | + className: 'ps-table-cell', | |
| 354 | 383 | width: '314px', |
| 355 | 384 | key: 'qxProps', |
| 356 | 385 | render: (qxProps: any, record: any) => { |
| ... | ... | @@ -548,11 +577,16 @@ const ParameterModal: React.FC<ParameterSettingProps> = (props) => { |
| 548 | 577 | }; |
| 549 | 578 | |
| 550 | 579 | const require = { |
| 551 | - title: '必填', | |
| 580 | + title: | |
| 581 | + ( | |
| 582 | + <div style={{ display: 'flex', flexDirection: 'row' }}> | |
| 583 | + <span className='parameter-setting-table-title'>必填</span> | |
| 584 | + </div> | |
| 585 | + ), | |
| 552 | 586 | dataIndex: 'required', |
| 553 | - editable: true, | |
| 587 | + className: 'ps-table-cell', | |
| 554 | 588 | key: 'required', |
| 555 | - width: '76px', | |
| 589 | + width: '86px', | |
| 556 | 590 | render: (text, record) => ( |
| 557 | 591 | <Form.Item |
| 558 | 592 | name={'required' + record.id} |
| ... | ... | @@ -610,10 +644,11 @@ const ParameterModal: React.FC<ParameterSettingProps> = (props) => { |
| 610 | 644 | |
| 611 | 645 | //每行拖拽渲染 |
| 612 | 646 | const onRow = () => ({ |
| 613 | - draggable: !type, | |
| 614 | - style: !type && { cursor: 'move' }, | |
| 647 | + draggable: true, | |
| 648 | + style: { cursor: 'move' }, | |
| 615 | 649 | onDragStart: (ev: any) => { |
| 616 | 650 | ev.persist(); |
| 651 | + console.log('onDragStart', ev.target) | |
| 617 | 652 | ev.dataTransfer.effectAllowed = 'move'; |
| 618 | 653 | ev.dataTransfer.setData('text', ev.target.getAttribute('data-row-key')); |
| 619 | 654 | }, |
| ... | ... | @@ -676,6 +711,8 @@ const ParameterModal: React.FC<ParameterSettingProps> = (props) => { |
| 676 | 711 | const dropIndex = _newTreeData.findIndex( |
| 677 | 712 | (item: any) => item.id === dropId, |
| 678 | 713 | ); // 要drop到目标的index |
| 714 | + // console.log('dropId', dropId) | |
| 715 | + // console.log('dropCol', dropCol) | |
| 679 | 716 | if (dragIndex == dropIndex || !dragId || !dropId) { |
| 680 | 717 | dropCol.childNodes.forEach((item: any) => (item.style.borderTop = '')); |
| 681 | 718 | dropCol.parentNode.childNodes.forEach( |
| ... | ... | @@ -751,7 +788,7 @@ const ParameterModal: React.FC<ParameterSettingProps> = (props) => { |
| 751 | 788 | footer={null} |
| 752 | 789 | // onOk={handleCancel} |
| 753 | 790 | onCancel={onCancel} |
| 754 | - width={960} | |
| 791 | + width={1200} | |
| 755 | 792 | wrapClassName={'qx-common__modal'} |
| 756 | 793 | closeIcon={ |
| 757 | 794 | <QxBaseIcon |
| ... | ... | @@ -839,9 +876,29 @@ const ParameterModal: React.FC<ParameterSettingProps> = (props) => { |
| 839 | 876 | expandable={{ |
| 840 | 877 | defaultExpandAllRows: true, |
| 841 | 878 | childrenColumnName: 'child', |
| 879 | + expandIcon: ({ expanded, onExpand, record }) => | |
| 880 | + record.child && record.child.length > 0 && expanded ? ( | |
| 881 | + <> | |
| 882 | + <Icon component={SubDropIcon} | |
| 883 | + className='drop-icon' /> | |
| 884 | + <QxBaseIcon className={'table-expanded'} type={'qx-caret-down'} onClick={e => onExpand(record, e)} /> | |
| 885 | + </> | |
| 886 | + | |
| 887 | + ) : record.child && record.child.length > 0 && !expanded ? | |
| 888 | + ( | |
| 889 | + <> | |
| 890 | + <Icon component={SubDropIcon} | |
| 891 | + className='drop-icon' /> | |
| 892 | + <QxBaseIcon className={'table-expanded-change'} type={'qx-caret-down'} onClick={e => onExpand(record, e)} /> | |
| 893 | + </> | |
| 894 | + ) | |
| 895 | + : | |
| 896 | + <Icon component={SubDropIcon} | |
| 897 | + className='drop-icon' /> | |
| 842 | 898 | }} |
| 899 | + className='parameter-setting-table' | |
| 843 | 900 | onRow={() => onRow()} |
| 844 | - scroll={{ x: 960, y: 432 }} | |
| 901 | + scroll={{ x: 1000, y: 432 }} | |
| 845 | 902 | bordered |
| 846 | 903 | pagination={false} |
| 847 | 904 | size={'small'} | ... | ... |
| ... | ... | @@ -37,6 +37,7 @@ type ValueOptionProps = { |
| 37 | 37 | }; |
| 38 | 38 | |
| 39 | 39 | import { SubNodeIcon } from './sub-node-icon'; |
| 40 | +import { SubDropIcon } from './sub-node-icon'; | |
| 40 | 41 | |
| 41 | 42 | const valueOptions = [ |
| 42 | 43 | { key: 'STRING', label: '文本' }, |
| ... | ... | @@ -630,95 +631,98 @@ export const QxParameterSetting: React.FC<ParameterSettingProps> = (props) => { |
| 630 | 631 | const isShowTree = checkShowTree(nodeData); |
| 631 | 632 | const disabled = !!props.type ? true : nodeData.disabled; |
| 632 | 633 | return ( |
| 633 | - <div | |
| 634 | - onBlur={(e) => onBlur(e)} tabIndex={0} onFocus={(e) => onFocus(e)}> | |
| 634 | + <div> | |
| 635 | + <Icon component={SubDropIcon} | |
| 636 | + className='drop-icon'/> | |
| 635 | 637 | <div |
| 636 | - style={{ | |
| 637 | - // padding: '2px', | |
| 638 | - justifyContent: 'flex-end', | |
| 639 | - display: 'flex', | |
| 640 | - width: '100%', | |
| 641 | - flexDirection: 'row-reverse', | |
| 642 | - }} | |
| 643 | - > | |
| 644 | - <div className={'opt-btn'}> | |
| 645 | - <Select | |
| 646 | - value={nodeData.type} | |
| 647 | - disabled={disabled} | |
| 648 | - className={'select-tree'} | |
| 649 | - bordered={false} | |
| 650 | - getPopupContainer={(triggerNode) => triggerNode} | |
| 651 | - onChange={(e: any) => { | |
| 652 | - handleChange(e, nodeData, 'type'); | |
| 653 | - }} | |
| 654 | - > | |
| 655 | - {valueOptions.map((item) => { | |
| 656 | - return ( | |
| 657 | - <Select.Option key={item.key} value={item.key}> | |
| 658 | - {item.label} | |
| 659 | - </Select.Option> | |
| 660 | - ); | |
| 661 | - })} | |
| 662 | - </Select> | |
| 663 | - {(nodeData.type === 'OBJECT' || nodeData.type === 'ARRAY') && | |
| 664 | - isShowTree && ( | |
| 665 | - <Button | |
| 666 | - icon={<Icon component={SubNodeIcon} />} | |
| 667 | - disabled={disabled} | |
| 668 | - type="link" | |
| 669 | - className="title-btn" | |
| 670 | - onClick={() => onAddTree(nodeData.id)} | |
| 671 | - /> | |
| 672 | - )} | |
| 673 | - <Button | |
| 674 | - className="title-btn-del" | |
| 675 | - icon={<QxBaseIcon className={'title-btn-del-btn'} type={'qx-icon-delete'} />} | |
| 676 | - disabled={disabled} | |
| 677 | - type="link" | |
| 678 | - onClick={() => deleteParameter(nodeData)} | |
| 679 | - /> | |
| 680 | - </div> | |
| 681 | - <div className="opt-left"> | |
| 682 | - <Input | |
| 683 | - className={index > -1 && searchValue ? 'search-selected' : ''} | |
| 684 | - draggable={true} | |
| 685 | - onDragStart={(event) => { | |
| 686 | - event.stopPropagation(); | |
| 687 | - event.preventDefault(); | |
| 688 | - }} | |
| 689 | - key={inputKey} | |
| 690 | - style={{ width: '100%' }} | |
| 691 | - maxLength={50} | |
| 692 | - allowClear | |
| 693 | - disabled={disabled} | |
| 694 | - bordered={true} | |
| 695 | - defaultValue={nodeData.title} | |
| 696 | - onBlur={(e) => { | |
| 697 | - handleChange(e, nodeData, 'title'); | |
| 698 | - }} | |
| 699 | - /> | |
| 638 | + onBlur={(e) => onBlur(e)} tabIndex={0} onFocus={(e) => onFocus(e)}> | |
| 639 | + <div | |
| 640 | + style={{ | |
| 641 | + // padding: '2px', | |
| 642 | + justifyContent: 'flex-end', | |
| 643 | + display: 'flex', | |
| 644 | + width: '100%', | |
| 645 | + flexDirection: 'row-reverse', | |
| 646 | + }} | |
| 647 | + > | |
| 648 | + <div className={'opt-btn'}> | |
| 649 | + <Select | |
| 650 | + value={nodeData.type} | |
| 651 | + disabled={disabled} | |
| 652 | + className={'select-tree'} | |
| 653 | + bordered={false} | |
| 654 | + getPopupContainer={(triggerNode) => triggerNode} | |
| 655 | + onChange={(e: any) => { | |
| 656 | + handleChange(e, nodeData, 'type'); | |
| 657 | + }} | |
| 658 | + > | |
| 659 | + {valueOptions.map((item) => { | |
| 660 | + return ( | |
| 661 | + <Select.Option key={item.key} value={item.key}> | |
| 662 | + {item.label} | |
| 663 | + </Select.Option> | |
| 664 | + ); | |
| 665 | + })} | |
| 666 | + </Select> | |
| 667 | + {(nodeData.type === 'OBJECT' || nodeData.type === 'ARRAY') && | |
| 668 | + isShowTree && ( | |
| 669 | + <Button | |
| 670 | + icon={<Icon component={SubNodeIcon} />} | |
| 671 | + disabled={disabled} | |
| 672 | + type="link" | |
| 673 | + className="title-btn" | |
| 674 | + onClick={() => onAddTree(nodeData.id)} | |
| 675 | + /> | |
| 676 | + )} | |
| 677 | + <Button | |
| 678 | + className="title-btn-del" | |
| 679 | + icon={<QxBaseIcon className={'title-btn-del-btn'} type={'qx-icon-delete'} />} | |
| 680 | + disabled={disabled} | |
| 681 | + type="link" | |
| 682 | + onClick={() => deleteParameter(nodeData)} | |
| 683 | + /> | |
| 684 | + </div> | |
| 685 | + <div className="opt-left"> | |
| 686 | + <Input | |
| 687 | + className={index > -1 && searchValue ? 'search-selected' : ''} | |
| 688 | + draggable={true} | |
| 689 | + onDragStart={(event) => { | |
| 690 | + event.stopPropagation(); | |
| 691 | + event.preventDefault(); | |
| 692 | + }} | |
| 693 | + key={inputKey} | |
| 694 | + style={{ width: '100%' }} | |
| 695 | + maxLength={50} | |
| 696 | + disabled={disabled} | |
| 697 | + bordered={true} | |
| 698 | + defaultValue={nodeData.title} | |
| 699 | + onBlur={(e) => { | |
| 700 | + handleChange(e, nodeData, 'title'); | |
| 701 | + }} | |
| 702 | + /> | |
| 703 | + </div> | |
| 700 | 704 | </div> |
| 705 | + {props?.isShowField && ( | |
| 706 | + <div className="opt-left-down"> | |
| 707 | + <QxFieldSetter | |
| 708 | + disabled={disabled} | |
| 709 | + value={nodeData.valuesObj || []} | |
| 710 | + params={{ appCode: 'appCode', useId: true }} | |
| 711 | + valueOptions={getValueOptions(nodeData)} | |
| 712 | + field={nodeData.code} | |
| 713 | + widget={typeTranslateWidget(nodeData.type)} | |
| 714 | + fieldType={typeTranslateFieIdtype(nodeData.type)} | |
| 715 | + fieldGroupType={typeTranslateGrouptype(nodeData.type)} | |
| 716 | + isMixValue={typeTranslateFieIdtype(nodeData.type) == 'STRING' ? true : false} | |
| 717 | + colsTree={props.nodeItem} | |
| 718 | + isMultiple={false} | |
| 719 | + onChange={(val) => changeField(val, nodeData)} | |
| 720 | + popupOnBody={true} | |
| 721 | + inputDis={true} | |
| 722 | + /> | |
| 723 | + </div> | |
| 724 | + )} | |
| 701 | 725 | </div> |
| 702 | - {props?.isShowField && ( | |
| 703 | - <div className="opt-left-down"> | |
| 704 | - <QxFieldSetter | |
| 705 | - disabled={disabled} | |
| 706 | - value={nodeData.valuesObj || []} | |
| 707 | - params={{ appCode: 'appCode', useId: true }} | |
| 708 | - valueOptions={getValueOptions(nodeData)} | |
| 709 | - field={nodeData.code} | |
| 710 | - widget={typeTranslateWidget(nodeData.type)} | |
| 711 | - fieldType={typeTranslateFieIdtype(nodeData.type)} | |
| 712 | - fieldGroupType={typeTranslateGrouptype(nodeData.type)} | |
| 713 | - isMixValue={typeTranslateFieIdtype(nodeData.type) == 'STRING' ? true : false} | |
| 714 | - colsTree={props.nodeItem} | |
| 715 | - isMultiple={false} | |
| 716 | - onChange={(val) => changeField(val, nodeData)} | |
| 717 | - popupOnBody={true} | |
| 718 | - inputDis={true} | |
| 719 | - /> | |
| 720 | - </div> | |
| 721 | - )} | |
| 722 | 726 | </div> |
| 723 | 727 | ); |
| 724 | 728 | }; |
| ... | ... | @@ -799,7 +803,8 @@ export const QxParameterSetting: React.FC<ParameterSettingProps> = (props) => { |
| 799 | 803 | titleRender={(nodeData) => renderTitle(nodeData)} |
| 800 | 804 | style={{ height: '100%' }} |
| 801 | 805 | onDrop={onDrop} |
| 802 | - draggable={!props.type} | |
| 806 | + draggable={{ icon: false }} | |
| 807 | + // draggable={!props.type} | |
| 803 | 808 | blockNode |
| 804 | 809 | expandedKeys={expandedKeys ? expandedKeys : defaultExpandedKeys} |
| 805 | 810 | autoExpandParent={autoExpandParent} | ... | ... |
| 1 | +/* stylelint-disable selector-class-pattern */ | |
| 1 | 2 | @import '~@qx/ui/src/style/variable.less'; |
| 2 | 3 | |
| 3 | 4 | /* stylelint-disable declaration-block-no-redundant-longhand-properties */ |
| ... | ... | @@ -29,6 +30,15 @@ |
| 29 | 30 | |
| 30 | 31 | .tree-wrapper { |
| 31 | 32 | margin-top: 20px; |
| 33 | + | |
| 34 | + .ant-tree .ant-tree-switcher { | |
| 35 | + // margin-top: 6.5px; | |
| 36 | + width:44px; | |
| 37 | + margin-top: 11.5px; | |
| 38 | + margin-right: 7px; | |
| 39 | + display: flex; | |
| 40 | + justify-content: flex-end; | |
| 41 | + } | |
| 32 | 42 | } |
| 33 | 43 | |
| 34 | 44 | .border-none |
| ... | ... | @@ -258,6 +268,14 @@ |
| 258 | 268 | background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), |
| 259 | 269 | padding 0.2s cubic-bezier(0.645, 0.045, 0.355, 1); |
| 260 | 270 | |
| 271 | + .drop-icon{ | |
| 272 | + // opacity: 0.1; | |
| 273 | + display: none; | |
| 274 | + // position: absolute; | |
| 275 | + // top: 10px; | |
| 276 | + // left: -49px; | |
| 277 | + } | |
| 278 | + | |
| 261 | 279 | &:hover { |
| 262 | 280 | background-color: @N3 !important; |
| 263 | 281 | |
| ... | ... | @@ -266,6 +284,14 @@ |
| 266 | 284 | display: block; |
| 267 | 285 | } |
| 268 | 286 | |
| 287 | + .drop-icon{ | |
| 288 | + position: absolute; | |
| 289 | + top: 10px; | |
| 290 | + left: -39px; | |
| 291 | + opacity: 1; | |
| 292 | + display: block; | |
| 293 | + } | |
| 294 | + | |
| 269 | 295 | .opt-left { |
| 270 | 296 | width: 65%; |
| 271 | 297 | } |
| ... | ... | @@ -285,3 +311,47 @@ |
| 285 | 311 | background-color: transparent; |
| 286 | 312 | } |
| 287 | 313 | } |
| 314 | + | |
| 315 | + .parameter-setting-table-title{ | |
| 316 | + font-weight: 500; | |
| 317 | + font-size: 14px; | |
| 318 | + line-height: 22px; | |
| 319 | + color: #7C7E86; | |
| 320 | + padding-left: 10px; | |
| 321 | + } | |
| 322 | + | |
| 323 | + .parameter-setting-table{ | |
| 324 | + .code-header{ | |
| 325 | + display: flex; | |
| 326 | + } | |
| 327 | + | |
| 328 | + .ant-table-tbody .ant-table-row{ | |
| 329 | + .drop-icon{ | |
| 330 | + opacity: 0.01; | |
| 331 | + } | |
| 332 | + | |
| 333 | + &:hover { | |
| 334 | + .drop-icon{ | |
| 335 | + opacity: 1; | |
| 336 | + } | |
| 337 | + } | |
| 338 | + } | |
| 339 | + | |
| 340 | + .table-expanded{ | |
| 341 | + color: #7C7E86; | |
| 342 | + margin-left: 8px; | |
| 343 | + transition: transform 0.3s; | |
| 344 | + } | |
| 345 | + | |
| 346 | + .table-expanded-change{ | |
| 347 | + transform: rotate(-90deg); | |
| 348 | + color: #7C7E86; | |
| 349 | + margin-left: 8px; | |
| 350 | + transition: transform 0.3s; | |
| 351 | + } | |
| 352 | + } | |
| 353 | + | |
| 354 | + .parameter-setting-table .ant-table-cell{ | |
| 355 | + height: 40px; | |
| 356 | + padding: 4px 16px 0 4px !important; | |
| 357 | + } | ... | ... |
| 1 | 1 | import React from 'react'; |
| 2 | 2 | export const SubNodeIcon = () => ( |
| 3 | - <svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" aria-hidden="true" focusable="false"><path fill-rule="evenodd" d="M6.333 5.333a1 1 0 0 0-1 1v3h-.667V2.667h10V1.333H1.333v1.334h2v6.666c0 .737.597 1.334 1.333 1.334h.667v3a1 1 0 0 0 1 1h7.333a1 1 0 0 0 1-1V6.333a1 1 0 0 0-1-1H6.333Zm.333 8V6.667h6.667v6.666H6.666Zm2.667-2.666h-2V9.333h2v-2h1.333v2h2v1.334h-2v2H9.333v-2Z" clip-rule="evenodd"/></svg> | |
| 3 | + <svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" aria-hidden="true" focusable="false"><path fill-rule="evenodd" d="M6.333 5.333a1 1 0 0 0-1 1v3h-.667V2.667h10V1.333H1.333v1.334h2v6.666c0 .737.597 1.334 1.333 1.334h.667v3a1 1 0 0 0 1 1h7.333a1 1 0 0 0 1-1V6.333a1 1 0 0 0-1-1H6.333Zm.333 8V6.667h6.667v6.666H6.666Zm2.667-2.666h-2V9.333h2v-2h1.333v2h2v1.334h-2v2H9.333v-2Z" clip-rule="evenodd" /></svg> | |
| 4 | +); | |
| 5 | + | |
| 6 | +export const SubDropIcon = () => ( | |
| 7 | + <svg width="1em" height="1em" viewBox="0 0 6 12" fill="none" xmlns="http://www.w3.org/2000/svg"> | |
| 8 | + <path fill-rule="evenodd" clip-rule="evenodd" d="M0 0H2V2H0V0ZM4 0H6V2H4V0ZM0 5H2V7H0V5ZM4 5H6V7H4V5ZM0 10H2V12H0V10ZM4 10H6V12H4V10Z" fill="#7C7E86" /> | |
| 9 | + </svg> | |
| 4 | 10 | ); | ... | ... |