UNPKG

@tomino/dynamic-form-semantic-ui

Version:

Semantic UI form renderer based on dynamic form generation

76 lines 3.14 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const React = tslib_1.__importStar(require("react")); const mobx_react_1 = require("mobx-react"); const classnames_1 = tslib_1.__importDefault(require("classnames")); const editor_helpers_1 = require("../editor_helpers"); const common_1 = require("../../common"); const editor_context_1 = require("../editor_context"); const editor_common_1 = require("../editor_common"); const drag_drop_1 = require("../../layouts/drag_drop"); const cell = common_1.css ` &.empty { border: dotted 2px #dfdfdf; min-width: 50px; min-height: 20px; height: 100%; } label: cell; `; exports.DropCell = mobx_react_1.observer((props) => { const context = React.useContext(editor_context_1.EditorContext); const ref = React.useRef(); const onDrag = React.useCallback((ev) => { context.dragItem = { name: props.formElement.control, row: props.formElement.props.row, column: props.formElement.props.column, element: props.formElement, id: props.id, position: editor_common_1.calculateHorizontalPosition(ev) }; }, [context.dragItem, props.formElement, props.id]); const dragEnter = React.useCallback(() => drag_drop_1.clearAll(), []); const dragOver = React.useCallback((e) => { e.preventDefault(); e.stopPropagation(); const item = context.dragItem; if (!item) { return; } if (item.dataset) { props.editorState.hoverParent = props.formElement.parent; } else if (props.hover) { props.hover(e, props, context); } ref.current.style.background = '#999'; }, [context, props]); const dragLeave = React.useCallback((e) => { e.preventDefault(); ref.current.style.background = 'inherit'; }, []); const drop = React.useCallback(e => { const item = context.dragItem; if (!item) { return; } if (item.dataset) { editor_helpers_1.bind(props.formElement, item); } if (props.drop(e, props, context)) { context.project.state.setElement(item.element, props.editorState.schema); context.selectedParent = props.parentFormElement; } ref.current.style.background = 'inherit'; }, [context, props]); const mouseOver = React.useCallback(e => { if (props.mouseOver) { props.mouseOver(e, props, context); } }, [context, props]); let control = props.formElement.control; return (React.createElement("div", { ref: ref, draggable: control !== 'EditorCell', onMouseOver: mouseOver, onMouseOut: props.mouseOut, onDragStart: onDrag, onDragOver: dragOver, onDragLeave: dragLeave, onDragEnter: dragEnter, onDrop: drop, style: props.style, className: classnames_1.default(cell, 'cellContent', control === 'EditorCell' ? 'empty' : '', props.className), "data-id": props.id }, props.children || '\xa0')); }); //# sourceMappingURL=editor_cell.js.map