Skip to content

Commit

Permalink
Merge c1bbc28 into 79ad0fd
Browse files Browse the repository at this point in the history
  • Loading branch information
vojtechportes committed Aug 29, 2019
2 parents 79ad0fd + c1bbc28 commit a5141ed
Show file tree
Hide file tree
Showing 20 changed files with 143 additions and 103 deletions.
61 changes: 10 additions & 51 deletions src/components/Builder.tsx
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
import React, { createContext, useState, useEffect } from 'react';
import React, { useState, useEffect } from 'react';
import styled from 'styled-components';
import { Iterator } from './Iterator';
import { colors } from '../constants/colors';
import { normalizeTree } from '../utils/normalizeTree';
import { denormalizeTree } from '../utils/denormalizeTree';
import uniqid from 'uniqid';
import { assignIds } from '../utils/assignIds';
import { BuilderContextProvider } from './Context';

/* Configurable components */

Expand Down Expand Up @@ -89,19 +90,6 @@ export interface BuilderProps {
onChange?: (data: any) => any;
}

export interface BuilderContextProps {
fields: BuilderFieldProps[];
data: any;
components: BuilderComponentsProps;
strings: Strings;
setData: React.Dispatch<any>;
onChange: (data: any) => void;
}

export const BuilderContext = createContext<BuilderContextProps>(
{} as BuilderContextProps
);

export const defaultComponents: BuilderComponentsProps = {
form: {
Input,
Expand All @@ -126,33 +114,6 @@ export const Builder: React.FC<BuilderProps> = ({
let normalizedData: any;
originalData = assignIds(originalData);

components = {
...defaultComponents,
...components,
form: { ...defaultComponents.form, ...components.form },
};

strings = {
...defaultStrings,
...strings,
component: {
...defaultStrings.component,
...strings.component,
},
form: {
...defaultStrings.form,
...strings.form,
},
group: {
...defaultStrings.group,
...strings.group,
},
operators: {
...defaultStrings.operators,
...strings.operators,
},
};

if (originalData.length === 0) {
originalData = [
{
Expand Down Expand Up @@ -189,19 +150,17 @@ export const Builder: React.FC<BuilderProps> = ({
};

return (
<BuilderContext.Provider
value={{
fields,
components,
strings,
data,
setData,
onChange: handleChange,
}}
<BuilderContextProvider
fields={fields}
components={components}
strings={strings}
data={data}
setData={setData}
onChange={handleChange}
>
<StyledBuilder>
<Iterator originalData={data} filteredData={filteredData} />
</StyledBuilder>
</BuilderContext.Provider>
</BuilderContextProvider>
);
};
3 changes: 2 additions & 1 deletion src/components/Component/index.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import React, { useContext } from 'react';
import styled from 'styled-components';
import { BuilderFieldOperator, BuilderContext } from '../Builder';
import { BuilderFieldOperator } from '../Builder';
import { BuilderContext } from '../Context';
import { FieldSelect } from '../Widgets/FieldSelect';
import { Boolean } from '../Widgets/Boolean';
import { Select } from '../Widgets/Select';
Expand Down
76 changes: 76 additions & 0 deletions src/components/Context.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
import React, { createContext } from 'react';
import {
BuilderFieldProps,
BuilderComponentsProps,
defaultComponents,
} from './Builder';
import { strings as defaultStrings, Strings } from '../constants/strings';

export interface BuilderContextProps {
fields: BuilderFieldProps[];
data: any;
components: BuilderComponentsProps;
strings: Strings;
setData: React.Dispatch<any>;
onChange: (data: any) => void;
}

export const BuilderContext = createContext<BuilderContextProps>(
{} as BuilderContextProps
);

export interface BuilderContextProviderProps extends BuilderContextProps {
children: React.ReactNode | React.ReactNodeArray;
}

export const BuilderContextProvider: React.FC<BuilderContextProviderProps> = ({
fields,
components,
strings,
data,
setData,
onChange,
children,
}) => {
components = {
...defaultComponents,
...components,
form: { ...defaultComponents.form, ...components.form },
};

strings = {
...defaultStrings,
...strings,
component: {
...defaultStrings.component,
...strings.component,
},
form: {
...defaultStrings.form,
...strings.form,
},
group: {
...defaultStrings.group,
...strings.group,
},
operators: {
...defaultStrings.operators,
...strings.operators,
},
};

return (
<BuilderContext.Provider
value={{
fields,
components,
strings,
data,
setData,
onChange,
}}
>
{children}
</BuilderContext.Provider>
);
};
3 changes: 2 additions & 1 deletion src/components/Group/index.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import React, { useContext } from 'react';
import { BuilderGroupValues, BuilderContext } from '../Builder';
import { BuilderGroupValues } from '../Builder';
import { BuilderContext } from '../Context';
import uniqid from 'uniqid';
import { clone } from '../../utils/clone';

Expand Down
2 changes: 1 addition & 1 deletion src/components/Widgets/Boolean.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import React, { useContext } from 'react';
import { BuilderContext } from '../Builder';
import { BuilderContext } from '../Context'
import { clone } from '../../utils/clone';

export interface BooleanProps {
Expand Down
2 changes: 1 addition & 1 deletion src/components/Widgets/FieldSelect.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import React, { useContext } from 'react';
import { BuilderContext } from '../Builder';
import { BuilderContext } from '../Context'
import { clone } from '../../utils/clone';
import { isOptionList } from '../../utils/types';

Expand Down
2 changes: 1 addition & 1 deletion src/components/Widgets/Input.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import React, { useContext } from 'react';
import { isStringArray, isUndefined } from '../../utils/types';
import { BuilderContext } from '../Builder';
import { BuilderContext } from '../Context'
import { clone } from '../../utils/clone';

interface InputProps {
Expand Down
3 changes: 2 additions & 1 deletion src/components/Widgets/OperatorSelect.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import React, { useContext } from 'react';
import { BuilderContext, BuilderFieldOperator } from '../Builder';
import { BuilderFieldOperator } from '../Builder';
import { BuilderContext } from '../Context'
import { clone } from '../../utils/clone';
import { isStringArray } from '../../utils/types';

Expand Down
2 changes: 1 addition & 1 deletion src/components/Widgets/Select.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import React, { useContext } from 'react';
import { BuilderContext } from '../Builder';
import { BuilderContext } from '../Context'
import { clone } from '../../utils/clone';

export interface SelectProps {
Expand Down
2 changes: 1 addition & 1 deletion src/components/Widgets/SelectMulti.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import React, { useContext } from 'react';
import { BuilderContext } from '../Builder';
import { BuilderContext } from '../Context'
import { clone } from '../../utils/clone';

export interface SelectMultiProps {
Expand Down
2 changes: 2 additions & 0 deletions src/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ export {
defaultComponents,
} from './components/Builder';

export { BuilderContext, BuilderContextProps } from './components/Context';

/* Configurable components */

export { Input, InputProps } from './components/Form/Input';
Expand Down
10 changes: 5 additions & 5 deletions test/components/Component/index.test.tsx
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import { Component } from '../../../src/components/Component/index';
import { shallow, mount } from 'enzyme';
import { mount, shallow } from 'enzyme';
import React from 'react';
import {
BuilderContext,
BuilderFieldProps,
BuilderComponentsProps,
BuilderFieldProps,
defaultComponents,
} from '../../../src/components/Builder';
import { Component } from '../../../src/components/Component/index';
import { BuilderContext } from '../../../src/components/Context';
import { strings } from '../../../src/constants/strings';
import React from 'react';

const components: BuilderComponentsProps = defaultComponents;
const fields: BuilderFieldProps[] = [
Expand Down
10 changes: 5 additions & 5 deletions test/components/Group/index.test.tsx
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import { Group } from '../../../src/components/Group/index';
import { shallow, mount } from 'enzyme';
import { mount, shallow } from 'enzyme';
import React from 'react';
import {
BuilderContext,
BuilderFieldProps,
BuilderComponentsProps,
BuilderFieldProps,
defaultComponents,
} from '../../../src/components/Builder';
import { BuilderContext } from '../../../src/components/Context';
import { Group } from '../../../src/components/Group/index';
import { strings } from '../../../src/constants/strings';
import React from 'react';

const components: BuilderComponentsProps = defaultComponents;
const fields: BuilderFieldProps[] = [
Expand Down
2 changes: 1 addition & 1 deletion test/components/Iterator.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@ import { mount, shallow } from 'enzyme';
import React from 'react';
import {
BuilderComponentsProps,
BuilderContext,
BuilderFieldProps,
defaultComponents,
} from '../../src/components/Builder';
import { BuilderContext } from '../../src/components/Context';
import { Iterator } from '../../src/components/Iterator';
import { strings } from '../../src/constants/strings';

Expand Down
10 changes: 5 additions & 5 deletions test/components/Widgets/Boolean.test.tsx
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import { Boolean } from '../../../src/components/Widgets/Boolean';
import { mount, shallow } from 'enzyme';
import React from 'react';
import {
BuilderContext,
BuilderFieldProps,
BuilderComponentsProps,
BuilderFieldProps,
defaultComponents,
} from '../../../src/components/Builder';
import { shallow, mount } from 'enzyme';
import React from 'react';
import { BuilderContext } from '../../../src/components/Context';
import { Boolean } from '../../../src/components/Widgets/Boolean';

const components: BuilderComponentsProps = defaultComponents;
const fields: BuilderFieldProps[] = [
Expand Down
10 changes: 5 additions & 5 deletions test/components/Widgets/FieldSelect.test.tsx
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import { FieldSelect } from '../../../src/components/Widgets/FieldSelect';
import { mount, shallow } from 'enzyme';
import React from 'react';
import {
BuilderContext,
BuilderFieldProps,
BuilderComponentsProps,
BuilderFieldProps,
defaultComponents,
} from '../../../src/components/Builder';
import { shallow, mount } from 'enzyme';
import React from 'react';
import { BuilderContext } from '../../../src/components/Context';
import { FieldSelect } from '../../../src/components/Widgets/FieldSelect';

const components: BuilderComponentsProps = defaultComponents;
const fields: BuilderFieldProps[] = [
Expand Down
10 changes: 5 additions & 5 deletions test/components/Widgets/Input.test.tsx
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import { Input } from '../../../src/components/Widgets/Input';
import { mount, shallow } from 'enzyme';
import React from 'react';
import {
BuilderContext,
BuilderFieldProps,
BuilderComponentsProps,
BuilderFieldProps,
defaultComponents,
} from '../../../src/components/Builder';
import { shallow, mount } from 'enzyme';
import React from 'react';
import { BuilderContext } from '../../../src/components/Context';
import { Input } from '../../../src/components/Widgets/Input';

const components: BuilderComponentsProps = defaultComponents;
const fields: BuilderFieldProps[] = [
Expand Down
16 changes: 8 additions & 8 deletions test/components/Widgets/OperatorSelect.test.tsx
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
import { mount, shallow } from 'enzyme';
import React from 'react';
import {
OperatorSelect,
OperatorSelectValuesProps,
} from '../../../src/components/Widgets/OperatorSelect';
import {
BuilderContext,
BuilderFieldProps,
BuilderComponentsProps,
BuilderFieldProps,
defaultComponents,
} from '../../../src/components/Builder';
import { shallow, mount } from 'enzyme';
import React from 'react';
import { BuilderContext } from '../../../src/components/Context';
import {
OperatorSelect,
OperatorSelectValuesProps,
} from '../../../src/components/Widgets/OperatorSelect';

const components: BuilderComponentsProps = defaultComponents;
const fields: BuilderFieldProps[] = [
Expand Down
10 changes: 5 additions & 5 deletions test/components/Widgets/Select.test.tsx
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import { Select } from '../../../src/components/Widgets/Select';
import { mount, shallow } from 'enzyme';
import React from 'react';
import {
BuilderContext,
BuilderFieldProps,
BuilderComponentsProps,
BuilderFieldProps,
defaultComponents,
} from '../../../src/components/Builder';
import { shallow, mount } from 'enzyme';
import React from 'react';
import { BuilderContext } from '../../../src/components/Context';
import { Select } from '../../../src/components/Widgets/Select';

const components: BuilderComponentsProps = defaultComponents;
const fields: BuilderFieldProps[] = [
Expand Down

0 comments on commit a5141ed

Please sign in to comment.