import React from "react"; import { formValueSelector } from "redux-form"; import { connect } from "react-redux"; import BaseControl, { ControlProps } from "./BaseControl"; import { ControlType } from "constants/PropertyControlConstants"; import DynamicTextField from "components/editorComponents/form/fields/DynamicTextField"; import { EditorSize, EditorModes, TabBehaviour, } from "components/editorComponents/CodeEditor/EditorConfig"; import { QUERY_EDITOR_FORM_NAME } from "@appsmith/constants/forms"; import { AppState } from "@appsmith/reducers"; import styled from "styled-components"; import { getPluginResponseTypes } from "selectors/entitiesSelector"; import { actionPathFromName } from "components/formControls/utils"; import { EvaluationSubstitutionType } from "entities/DataTree/dataTreeFactory"; const Wrapper = styled.div` width: 872px; .dynamic-text-field { border-radius: 4px; font-size: 14px; min-height: calc(100vh / 4); } && { .CodeMirror-lines { padding: 10px; } } `; interface DynamicTextControlState { showTemplateMenu: boolean; } class DynamicTextControl extends BaseControl< DynamicTextFieldProps, DynamicTextControlState > { constructor(props: DynamicTextFieldProps) { super(props); this.state = { showTemplateMenu: true, }; } getControlType(): ControlType { return "QUERY_DYNAMIC_TEXT"; } render() { const { actionName, configProperty, evaluationSubstitutionType, placeholderText, responseType, } = this.props; const dataTreePath = actionPathFromName(actionName, configProperty); const mode = responseType === "TABLE" ? EditorModes.SQL_WITH_BINDING : EditorModes.JSON_WITH_BINDING; return ( ); } } export interface DynamicTextFieldProps extends ControlProps { actionName: string; pluginId: string; responseType: string; placeholderText?: string; evaluationSubstitutionType: EvaluationSubstitutionType; mutedHinting?: boolean; } const mapStateToProps = (state: AppState, props: DynamicTextFieldProps) => { const valueSelector = formValueSelector( props.formName || QUERY_EDITOR_FORM_NAME, ); const actionName = valueSelector(state, "name"); const pluginId = valueSelector(state, "datasource.pluginId"); const responseTypes = getPluginResponseTypes(state); return { actionName, pluginId, responseType: responseTypes[pluginId], }; }; export default connect(mapStateToProps)(DynamicTextControl);