From e13e630cd6e4fc0b1ff92098a28a770794c7bb9a Mon Sep 17 00:00:00 2001
From: gabrhr <73925454+gabrhr@users.noreply.github.com>
Date: Wed, 20 Apr 2022 10:19:29 -0500
Subject: =?UTF-8?q?A=C3=B1adir=20plantilla?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Base para front
---
.../internals/generators/component/class.js.hbs | 31 ++++++
.../internals/generators/component/index.js | 109 +++++++++++++++++++++
.../internals/generators/component/loadable.js.hbs | 12 +++
.../internals/generators/component/messages.js.hbs | 14 +++
.../generators/component/stateless.js.hbs | 28 ++++++
.../internals/generators/component/test.js.hbs | 10 ++
6 files changed, 204 insertions(+)
create mode 100644 front/odiparpack/internals/generators/component/class.js.hbs
create mode 100644 front/odiparpack/internals/generators/component/index.js
create mode 100644 front/odiparpack/internals/generators/component/loadable.js.hbs
create mode 100644 front/odiparpack/internals/generators/component/messages.js.hbs
create mode 100644 front/odiparpack/internals/generators/component/stateless.js.hbs
create mode 100644 front/odiparpack/internals/generators/component/test.js.hbs
(limited to 'front/odiparpack/internals/generators/component')
diff --git a/front/odiparpack/internals/generators/component/class.js.hbs b/front/odiparpack/internals/generators/component/class.js.hbs
new file mode 100644
index 0000000..310239a
--- /dev/null
+++ b/front/odiparpack/internals/generators/component/class.js.hbs
@@ -0,0 +1,31 @@
+/**
+ *
+ * {{ properCase name }}
+ *
+ */
+
+import React from 'react';
+// import PropTypes from 'prop-types';
+// import styled from 'styled-components';
+
+{{#if wantMessages}}
+import { FormattedMessage } from 'react-intl';
+import messages from './messages';
+{{/if}}
+
+/* eslint-disable react/prefer-stateless-function */
+class {{ properCase name }} extends {{{ type }}} {
+ render() {
+ return (
+
+ {{#if wantMessages}}
+
+ {{/if}}
+
+ );
+ }
+}
+
+{{ properCase name }}.propTypes = {};
+
+export default {{ properCase name }};
diff --git a/front/odiparpack/internals/generators/component/index.js b/front/odiparpack/internals/generators/component/index.js
new file mode 100644
index 0000000..4ac51d9
--- /dev/null
+++ b/front/odiparpack/internals/generators/component/index.js
@@ -0,0 +1,109 @@
+/**
+ * Component Generator
+ */
+
+/* eslint strict: ["off"] */
+
+'use strict';
+
+const componentExists = require('../utils/componentExists');
+
+module.exports = {
+ description: 'Add an unconnected component',
+ prompts: [
+ {
+ type: 'list',
+ name: 'type',
+ message: 'Select the type of component',
+ default: 'Stateless Function',
+ choices: () => [
+ 'Stateless Function',
+ 'React.PureComponent',
+ 'React.Component',
+ ],
+ },
+ {
+ type: 'input',
+ name: 'name',
+ message: 'What should it be called?',
+ default: 'Button',
+ validate: value => {
+ if (/.+/.test(value)) {
+ return componentExists(value)
+ ? 'A component or container with this name already exists'
+ : true;
+ }
+
+ return 'The name is required';
+ },
+ },
+ {
+ type: 'confirm',
+ name: 'wantMessages',
+ default: true,
+ message: 'Do you want i18n messages (i.e. will this component use text)?',
+ },
+ {
+ type: 'confirm',
+ name: 'wantLoadable',
+ default: false,
+ message: 'Do you want to load the component asynchronously?',
+ },
+ ],
+ actions: data => {
+ // Generate index.js and index.test.js
+ let componentTemplate;
+
+ switch (data.type) {
+ case 'Stateless Function': {
+ componentTemplate = './component/stateless.js.hbs';
+ break;
+ }
+ default: {
+ componentTemplate = './component/class.js.hbs';
+ }
+ }
+
+ const actions = [
+ {
+ type: 'add',
+ path: '../../app/components/{{properCase name}}/index.js',
+ templateFile: componentTemplate,
+ abortOnFail: true,
+ },
+ {
+ type: 'add',
+ path: '../../app/components/{{properCase name}}/tests/index.test.js',
+ templateFile: './component/test.js.hbs',
+ abortOnFail: true,
+ },
+ ];
+
+ // If they want a i18n messages file
+ if (data.wantMessages) {
+ actions.push({
+ type: 'add',
+ path: '../../app/components/{{properCase name}}/messages.js',
+ templateFile: './component/messages.js.hbs',
+ abortOnFail: true,
+ });
+ }
+
+ // If want Loadable.js to load the component asynchronously
+ if (data.wantLoadable) {
+ actions.push({
+ type: 'add',
+ path: '../../app/components/{{properCase name}}/Loadable.js',
+ templateFile: './component/loadable.js.hbs',
+ abortOnFail: true,
+ });
+ }
+
+ actions.push({
+ type: 'prettify',
+ path: '/components/',
+ });
+
+ return actions;
+ },
+};
diff --git a/front/odiparpack/internals/generators/component/loadable.js.hbs b/front/odiparpack/internals/generators/component/loadable.js.hbs
new file mode 100644
index 0000000..889bbf6
--- /dev/null
+++ b/front/odiparpack/internals/generators/component/loadable.js.hbs
@@ -0,0 +1,12 @@
+/**
+ *
+ * Asynchronously loads the component for {{ properCase name }}
+ *
+ */
+
+import Loadable from 'react-loadable';
+
+export default Loadable({
+ loader: () => import('./index'),
+ loading: () => null,
+});
diff --git a/front/odiparpack/internals/generators/component/messages.js.hbs b/front/odiparpack/internals/generators/component/messages.js.hbs
new file mode 100644
index 0000000..f73ee90
--- /dev/null
+++ b/front/odiparpack/internals/generators/component/messages.js.hbs
@@ -0,0 +1,14 @@
+/*
+ * {{ properCase name }} Messages
+ *
+ * This contains all the text for the {{ properCase name }} component.
+ */
+
+import { defineMessages } from 'react-intl';
+
+export default defineMessages({
+ header: {
+ id: 'app.components.{{ properCase name }}.header',
+ defaultMessage: 'This is the {{ properCase name}} component !',
+ },
+});
diff --git a/front/odiparpack/internals/generators/component/stateless.js.hbs b/front/odiparpack/internals/generators/component/stateless.js.hbs
new file mode 100644
index 0000000..04ba918
--- /dev/null
+++ b/front/odiparpack/internals/generators/component/stateless.js.hbs
@@ -0,0 +1,28 @@
+/**
+ *
+ * {{ properCase name }}
+ *
+ */
+
+import React from 'react';
+// import PropTypes from 'prop-types';
+// import styled from 'styled-components';
+
+{{#if wantMessages}}
+import { FormattedMessage } from 'react-intl';
+import messages from './messages';
+{{/if}}
+
+function {{ properCase name }}() {
+ return (
+
+ {{#if wantMessages}}
+
+ {{/if}}
+
+ );
+}
+
+{{ properCase name }}.propTypes = {};
+
+export default {{ properCase name }};
diff --git a/front/odiparpack/internals/generators/component/test.js.hbs b/front/odiparpack/internals/generators/component/test.js.hbs
new file mode 100644
index 0000000..42c0e37
--- /dev/null
+++ b/front/odiparpack/internals/generators/component/test.js.hbs
@@ -0,0 +1,10 @@
+// import React from 'react';
+// import { shallow } from 'enzyme';
+
+// import {{ properCase name }} from '../index';
+
+describe('<{{ properCase name }} />', () => {
+ it('Expect to have unit tests specified', () => {
+ expect(true).toEqual(false);
+ });
+});
--
cgit v1.2.3