Home Reference Source

src/components/base/Base.form.js

import _ from 'lodash';

import BaseEditConditional from './editForm/Base.edit.conditional';
import BaseEditData from './editForm/Base.edit.data';
import BaseEditAPI from './editForm/Base.edit.api';
import BaseEditDisplay from './editForm/Base.edit.display';
import BaseEditLogic from './editForm/Base.edit.logic';
import BaseEditValidation from './editForm/Base.edit.validation';
import EditFormUtils from './editForm/utils';

export default function(...extend) {
  return {
    components: _.unionWith(extend.map((items) => ({
      type: 'tabs',
      key: 'tabs',
      components: items
    })), [
      {
        type: 'tabs',
        key: 'tabs',
        components: [
          {
            label: 'Display',
            key: 'display',
            weight: 0,
            components: BaseEditDisplay
          },
          {
            label: 'Data',
            key: 'data',
            weight: 10,
            components: BaseEditData
          },
          {
            label: 'Validation',
            key: 'validation',
            weight: 20,
            components: BaseEditValidation
          },
          {
            label: 'API',
            key: 'api',
            weight: 30,
            components: BaseEditAPI
          },
          {
            label: 'Conditional',
            key: 'conditional',
            weight: 40,
            components: BaseEditConditional
          },
          {
            label: 'Logic',
            key: 'logic',
            weight: 50,
            components: BaseEditLogic
          }
        ]
      },
      {
        type: 'hidden',
        key: 'type'
      }
    ], EditFormUtils.unifyComponents)
  };
}