UNPKG

@tomino/dynamic-form-semantic-ui

Version:

Semantic UI form renderer based on dynamic form generation

54 lines 2.97 kB
import * as React from 'react'; import { Icon } from 'semantic-ui-react'; import { observer } from 'mobx-react'; import { toJS, pointer } from '../../common'; import { DatasetValue } from './dataset_value'; import { EditorContext } from '../editor_context'; import { initDrag } from './dataset_drag'; export const BuildLayerFolder = observer(({ schema, name, sourcePath, BuildLayer, expanded, isOver, owner, index }) => { let [opened, toggleOpen] = React.useState(!!expanded); const context = React.useContext(EditorContext); let item = schema.reference ? schema.reference : schema.items && schema.items.reference ? schema.items.reference : schema.items ? schema.items : schema; let properties = item.properties; let icon = 'folder'; let canOpen = item.type === 'object'; const editorState = React.useContext(EditorContext); const state = editorState.project.state; const value = owner && owner.getValue && toJS(owner.getValue(sourcePath)); const render = (React.createElement("div", { "data-index": index }, React.createElement("div", Object.assign({ className: "item" }, initDrag(context, schema)), React.createElement(Icon, { name: "caret right", className: "treeCaret", onClick: () => canOpen && toggleOpen(!opened) }), React.createElement(Icon, { className: pointer + ' ' + (schema.type === 'array' ? 'array' : schema.$ref ? 'reference' : schema.$import ? 'import' : ''), title: schema.items ? 'Array' : schema.$ref ? 'Local Type' : schema.$import ? 'Imported, shared type' : undefined, name: opened ? `${icon} open` : icon, onClick: () => canOpen && toggleOpen(!opened), color: 'yellow' }), React.createElement("div", { className: "content" }, React.createElement("a", { className: `folder ${schema === state.selectedSchema ? 'selected' : ''} ${isOver ? 'over' : ''}`, onClick: () => { state.setSchema(schema, name); editorState.selectedSourcePath = sourcePath; } }, schema.title || name, React.createElement(DatasetValue, { value: value })))), properties && opened && (React.createElement("div", { className: "itemContent" }, React.createElement(BuildLayer, { schema: schema, items: properties, sourcePath: sourcePath ? sourcePath + '.' : '', BuildLayerFolder: BuildLayerFolder, owner: owner }))))); return render; }); BuildLayerFolder.displayName = 'DatasetFolder'; //# sourceMappingURL=dataset_folder.js.map