1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/ByteDance-flow-builder

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Введение

Английский | 简体中文

Настраиваемый конструктор потоковых схем. Возможность регистрации позволяет гибко настраивать узлы, различные типы отображения и формы узлов и т. д.

demo1 demo2

Попробуйте

https://bytedance.github.io/flow-builder

Github

https://github.com/bytedance/flow-builder

Установка

yarn add react-flow-builder
или
npm install react-flow-builder

Использование

// index.tsx
import React, { useState, useContext } from 'react';
import FlowBuilder, {
  NodeContext,
  INode,
  IRegisterNode,
} from 'react-flow-builder';

import './index.css';

const StartNodeDisplay: React.FC = () => {
  const node = useContext(NodeContext);
  return <div className="start-node">{node.name}</div>;
};

const EndNodeDisplay: React.FC = () => {
  const node = useContext(NodeContext);
  return <div className="end-node">{node.name}</div>;
};

const OtherNodeDisplay: React.FC = () => {
  const node = useContext(NodeContext);
  return <div className="other-node">{node.name}</div>;
};

const ConditionNodeDisplay: React.FC = () => {
  const node = useContext(NodeContext);
  return <div className="condition-node">{node.name}</div>;
};

const registerNodes: IRegisterNode[] = [
  {
    type: 'start',
    name: 'start node',
    displayComponent: StartNodeDisplay,
    isStart: true,
  },
  {
    type: 'end',
    name: 'end node',
    displayComponent: EndNodeDisplay,
    isEnd: true,
  },
  {
    type: 'node',
    name: 'other node',
    displayComponent: OtherNodeDisplay,
  },
  {
    type: 'condition',
    name: 'condition node',
    displayComponent: ConditionNodeDisplay,
  },
  {
    type: 'branch',
    name: 'branch node',
    conditionNodeType: 'condition',
  },
];

const Demo = () => {
  const [nodes, setNodes] = useState<INode[]>([]);

  const handleChange = (nodes: INode[]) => {
    console.log('nodes change', nodes);
    setNodes(nodes);
  };

  return (
    <FlowBuilder
      nodes={nodes}
      onChange={handleChange}
      registerNodes={registerNodes}
    />
  );
};

export default Demo;

// index.css
.start-node, .end-node {
  height: 64px;
  width: 64px;
  border-radius: 50%;
  line-height: 64px;
  color: #fff;
  text-align: center;
}

.start-node {
  background-color: #338aff;
}

.end-node {
  background-color: #666;
}

.other-node, .condition-node {
  width: 224px;
  border-radius: 4px;
  color: #666;
  background: #fff;
  box-shadow: 0 0 8px rgba(0, 0, 0, 0.08);
}

.other-node {
  height: 118px;
  padding: 16px;
  display: flex;
  flex-direction: column;
}

.condition-node {
  height: 44px;
  padding: 12px 16px;
}

API

FlowBuilder

Property Описание Тип Требуется По умолчанию Версия
backgroundColor Цвет фона string #F7F7F7
className Имя класса контейнера string -
draggable Перетаскивание boolean false 1.0.0
DragComponent Пользовательский компонент перетаскивания React.FC<DragComponent> - 1.0.0
DropComponent Пользовательский компонент отбрасывания - - React.FC<DropComponent>, createUuid, DrawerComponent, PopoverComponent, PopconfirmComponent, drawerProps, drawerVisibleWhenAddNode, historyTool, layout, lineColor, nodes, readonly, registerNodes, registerRemoteNodes, showPracticalBranchNode, showPracticalBranchRemove, sortable, sortableAnchor, spaceX, spaceY, zoomTool, onChange — переводятся как «Реакт.эфси», «криэйтив уид», «Дрэвер компонент», «Поповер компонент», «Попконфирм компонент», «дрэвэр пропс», «дравер визабл уэн адд нау», «хистори тул», «лэйаут», «лайн колэр», «наузэс», «реадабл», «рэджистэ нуз», «рэджистэр румот нуз», «шоу практикал бранч нау», «шоу практикал бранч рамэв», «сортибл», «сортибл энч», «спейс икс», «спейс уай», «зум тул» и «он чендж».

В запросе присутствуют фрагменты кода на языке программирования, которые не удалось перевести. Это связано с тем, что в запросе нет полной информации о структуре и назначении этих фрагментов. dataChange | (nodes: Node[], changeEvent: string, nodeChanged?: INode) => void | ✓ | - | -

onHistoryChange | | (undoDisabled: boolean, redoDisabled: boolean) => void | - | - | -

onZoomChange | | (outDisabled: boolean, value: number, inDisabled: boolean) => void | - | - | -

showArrow | Show arrow | boolean | false | 1.4.5

arrowIcon | The icon of the arrow | ReactNode | - | 1.4.5

onAddNodeSuccess | Called when add node success | (type: string, node: INode) => void | - | 1.4.9

onDropNodeSuccess | Called when drop node success | (type: string, node: INode) => void | - | 1.4.9

onRemoveNodeSuccess | Called when remove node success | (node: INode) => void | - | 2.2.0

allowStartConfig | Allow start node config | boolean | - | 2.1.0

allowEndConfig | Allow end node config | boolean | - | 2.1.0

scrollByDrag | Scroll by mouse dragging | boolean | - | 2.6.0

HistoryToolConfig

Property Description Type Default
hidden boolean false
max number 10

ZoomToolConfig

Property Description Type Default
hidden boolean false
initialValue number 100
min number 10
max number 200
step number 10

DragComponent

Property Description Type Version
onDragStart The dragStart event of the custom drag component needs to call this method to set the dragged type( dragType in BuilderContext ) (nodeType: string) => void 1.0.0
onDragEnd The dragEnd event of the custom drag component needs to call this метод, чтобы очистить перетянутый тип (dragType в BuilderContext) () => void 1.0.0

DropComponent

Property Description Type Version
onDrop The drop event of the custom drop component needs to call this method to add the new node type () => void 1.0.0

DrawerComponent

| Property | Description | Type | Version | | | | | | Видимый

Вы можете самостоятельно оценить логическое значение selectedNode.

any 2.0.0

При закрытии

Также вы можете вызвать closeDrawer самостоятельно.

any 2.0.0

Дети

any 2.0.0

Заголовок

any 2.0.0

Ширина

any 2.0.0

Уничтожение при закрытии

any 2.0.0

Возможность закрыть маску

any 2.0.0

Конфигурационный компонент

Свойство Описание Тип Версия
Видимый any 2.0.0
При изменении видимости any 2.0.0
Дети any 2.0.0
Имя класса оверлея any 2.0.0
Размещение any 2.0.0
Триггер any 2.0.0
Содержание any 2.0.0
Получить контейнер всплывающего окна any 2.0.0

Подтверждающий всплывающий компонент

Свойство Описание Тип Версия
Заголовок any 2.0.0
Подтверждение Вы также можете вызвать removeNode самостоятельно. any 2.0.0
Дети any 2.0.0
Получить контейнер всплывающего окна any 2.0.0

FlowBuilderInstance

Название Описание Тип Версия
Добавить Добавить узел (узел: INode, newNodeType: string) => void | (newNodeType: string) => void
История Отменить, повторить (тип: «отменить» | «повторить») => void
Удалить Удалить узлы (узлы: INode | INode[] = useContext(NodeContext)) => void
Увеличить масштаб Увеличить масштаб (тип: 'out' | 'in' | число) => void
Закрыть ящик Закрыть ящик () => void
Контекст BuilderContext BuilderContext 1.3.5

Formatter

Название Описание Тип
Построить плоские узлы Преобразовать в плоские узлы (параметры: {registerNodes: IRegisterNode[], узлы: INode[]) => INode[]
Построить древовидные узлы Преобразовать в древовидные узлы (параметры: {узлы: INode[]}) => INode[]
Создать uuid Создать uuid (префикс?: строка) => строка
RegisterNode Обязательный По умолчанию Версия
addableComponent React.FC<AddableComponent> -
addableNodeTypes Список узлов, которые можно добавить ниже узла string[]
addIcon Значок в списке добавляемых узлов (уже есть несколько значков по умолчанию) ReactNode
addConditionIcon Значок узла ветвления при добавлении условия (значок по умолчанию уже существует) ReactNode
className Имя класса узла string
conditionMaxNum Максимальное количество узлов условий number
conditionNodeType Тип узла условия string
configComponent Компонент формы конфигурации узла React.FC<ConfigComponent> или React.ForwardRefExoticComponent<ConfigComponent & React.RefAttributes>
configTitle Заголовок ящика конфигурации узла string или ((node: INode, nodes: INode[]) => string)
customRemove Пользовательская кнопка удаления boolean false
Тип Тип узла. Такой же, как тип зарегистрированного узла строка
ValidateStatusError Компонент конфигурации формы узла не прошёл проверку. Компонент отображения может выделить узел в соответствии с этим свойством логическое значение

Context

Добавлено начиная с версии V1

В контексте FlowBuilder можно использовать следующие контексты:

BuilderContext

Содержит props и состояние. Состояние следующее:

Свойство Описание Тип
zoomValue текущее значение масштаба число
setZoomValue установить zoomValue (zoomValue: число) => void
historyRecords записи узлов истории INode[][]
setHistoryRecords установить historyRecords (records: INode[][]) => void
activeHistoryRecordIndex текущий индекс в записях узлов истории число
setActiveHistoryRecordIndex установить activeHistoryRecordIndex (index: число) => void
selectedNode текущий выбранный узел INode | undefined
setSelectedNode установить selectedNode (node: INode | undefined) => void
drawerTitle заголовок Drawer строка
setDrawerTitle установить drawerTitle (title: строка) => void
dragType тип перетаскиваемого узла строка
setDragType установить dragType (type: строка) => void

NodeContext

Получить данные узла, где он используется. Подробнее см. Узел

Hooks

Добавлено начиная с версии V1

В контексте FlowBuilder можно использовать следующие хуки:

useAction

Свойство Описание Тип Версия
clickNode нажать на узел (узел: INode = useContext(NodeContext)) => void
addNode добавить один узел. (Получить текущий узел через NodeContext, если нет свойства узла) (узел: INode, newNodeType: строка) => void | (newNodeType: строка) => void
addNodeInLoop добавить один узел в цикл узла. (newNodeType: строка) => void 1.4.6
removeNode удалить один или несколько узлов. (targetNode: INode | INode[] = useContext(NodeContext)) => void

useDrawer

Свойство Описание Тип
closeDrawer закрыть Drawer и очистить selectedNode

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Настраиваемый конструктор потоков потоковой передачи. Расширить Свернуть
TSX и 4 других языков
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://gitlife.ru/oschina-mirror/ByteDance-flow-builder.git
git@gitlife.ru:oschina-mirror/ByteDance-flow-builder.git
oschina-mirror
ByteDance-flow-builder
ByteDance-flow-builder
main