macro checkbox args + search & replace imporved

This commit is contained in:
Jan Prochazka
2020-11-01 10:22:14 +01:00
parent 20180fe4c4
commit 4efa87c3c8
5 changed files with 45 additions and 2 deletions

View File

@@ -40,6 +40,7 @@ export default function FreeTableGrid(props) {
dispatchModel({ type: 'set', value: newModel });
setSelectedMacro(null);
};
// console.log('macroValues', macroValues);
return (
<HorizontalSplitter initialValue="300px" size={managerSize} setSize={setManagerSize}>
<LeftContainer>

View File

@@ -7,6 +7,7 @@ import {
FormRow,
FormLabel,
FormSelectField,
FormCheckboxField,
} from '../utility/forms';
import { Formik, Form, useFormikContext } from 'formik';
@@ -15,6 +16,9 @@ function MacroArgument({ arg, namePrefix }) {
if (arg.type == 'text') {
return <FormTextField label={arg.label} name={name} />;
}
if (arg.type == 'checkbox') {
return <FormCheckboxField label={arg.label} name={name} />;
}
if (arg.type == 'select') {
return (
<FormSelectField label={arg.label} name={name}>

View File

@@ -24,8 +24,22 @@ const macros = [
label: 'Replace with',
name: 'replace',
},
{
type: 'checkbox',
label: 'Case sensitive',
name: 'caseSensitive',
},
{
type: 'checkbox',
label: 'Regular expression',
name: 'isRegex',
},
],
code: `return value ? value.toString().replace(args.find, args.replace) : value`,
code: `
const rtext = args.isRegex ? args.find : modules.lodash.escapeRegExp(args.find);
const rflags = args.caseSensitive ? 'g' : 'ig';
return value ? value.toString().replace(new RegExp(rtext, rflags), args.replace || '') : value
`,
},
{
title: 'Change text case',

View File

@@ -2,7 +2,7 @@ import React from 'react';
import styled from 'styled-components';
import Select from 'react-select';
import Creatable from 'react-select/creatable';
import { TextField, SelectField } from './inputs';
import { TextField, SelectField, CheckboxField } from './inputs';
import { Field, useFormikContext } from 'formik';
import FormStyledButton from '../widgets/FormStyledButton';
import {
@@ -49,6 +49,26 @@ export function FormTextField({ label, ...other }) {
);
}
export function FormCheckboxFieldRaw({ name = undefined, ...other }) {
const { values, setFieldValue } = useFormikContext();
const handleChange = (event) => {
setFieldValue(name, event.target.checked);
};
return <CheckboxField name={name} checked={!!values[name]} onChange={handleChange} {...other} />;
// return <Field {...other} as={CheckboxField} />;
}
export function FormCheckboxField({ label, ...other }) {
return (
<FormRow>
<FormLabel>{label}</FormLabel>
<FormValue>
<FormCheckboxFieldRaw {...other} />
</FormValue>
</FormRow>
);
}
export function FormSelectFieldRaw({ children, ...other }) {
return (
<Field {...other} as={SelectField}>

View File

@@ -16,3 +16,7 @@ export function SelectField({ children = null, options = [], ...other }) {
</select>
);
}
export function CheckboxField({ editorRef = undefined, ...other }) {
return <input type="checkbox" {...other} ref={editorRef}></input>;
}