generator-folklore 3.0.19 → 3.0.21

Sign up to get free protection for your applications and to get access to all the features.
@@ -80,7 +80,7 @@ module.exports = class AppGenerator extends _generator.default {
80
80
  },
81
81
  dependencies() {
82
82
  this.addDevDependencies({
83
- '@folklore/cli': '^0.0.50'
83
+ '@folklore/cli': '^0.1.9'
84
84
  });
85
85
  }
86
86
  };
@@ -30,8 +30,8 @@ module.exports = class EslintGenerator extends _generator.default {
30
30
  '@babel/eslint-parser': '^7.18.9',
31
31
  eslint: '^8.0.0',
32
32
  'eslint-config-airbnb': '^19.0.4',
33
- 'eslint-config-prettier': '^8.6.0',
34
- 'eslint-plugin-prettier': '^4.2.1',
33
+ 'eslint-config-prettier': '^9.1.0',
34
+ 'eslint-plugin-prettier': '^5.1.3',
35
35
  'eslint-plugin-import': '^2.26.0',
36
36
  'eslint-plugin-jsx-a11y': '^6.6.1',
37
37
  'eslint-plugin-react': '^7.30.1',
@@ -68,7 +68,7 @@ module.exports = class IntlGenerator extends _generator.default {
68
68
  },
69
69
  dependencies() {
70
70
  this.addDevDependencies({
71
- '@folklore/cli': '^0.0.50'
71
+ '@folklore/cli': '^0.1.9'
72
72
  });
73
73
  }
74
74
  };
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  // import PropTypes from 'prop-types';
3
- import { Route, Switch } from 'react-router';
3
+ import { Route, Switch } from 'wouter';
4
4
  import { withUrlGenerator } from '@folklore/react-container';
5
5
 
6
6
  import * as AppPropTypes from '../lib/PropTypes';
@@ -1,7 +1,7 @@
1
1
  import React, { useState } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
4
- import { Link } from 'react-router-dom';
4
+ import { Link } from 'wouter';
5
5
  import classNames from 'classnames';
6
6
  import { withUrlGenerator } from '@folklore/react-container';
7
7
  import { useForm } from '@folklore/forms';
@@ -71,7 +71,7 @@ const LoginForm = ({
71
71
  helpText={(
72
72
  <div className={styles.forgot}>
73
73
  <Link
74
- to={urlGenerator.route('auth.password.request')}
74
+ href={urlGenerator.route('auth.password.request')}
75
75
  className={styles.link}
76
76
  >
77
77
  <FormattedMessage {...messages.forgotPassword} />
@@ -4,7 +4,7 @@ import TextField from '@panneau/field-text';
4
4
  import classNames from 'classnames';
5
5
  import PropTypes from 'prop-types';
6
6
  import React from 'react';
7
- import { generatePath } from 'react-router';
7
+ import { generatePath } from '@folklore/routes';
8
8
 
9
9
  const propTypes = {
10
10
  fieldLocale: PropTypes.string,
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+
3
+ var _chalk = _interopRequireDefault(require("chalk"));
4
+ var _lodash = _interopRequireDefault(require("lodash"));
5
+ var _path = _interopRequireDefault(require("path"));
6
+ var _generator = _interopRequireDefault(require("../../lib/generator"));
7
+ var _utils = require("../../lib/utils");
8
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9
+ module.exports = class MicromagProjectGenerator extends _generator.default {
10
+ // The name `constructor` is important here
11
+ constructor(...args) {
12
+ super(...args);
13
+ this.argument('project-name', {
14
+ type: String,
15
+ required: false
16
+ });
17
+ this.option('src-path', {
18
+ type: String,
19
+ desc: 'Path for source',
20
+ defaults: './src'
21
+ });
22
+ this.option('dest-path', {
23
+ type: String,
24
+ desc: 'Path for build',
25
+ defaults: './dist'
26
+ });
27
+ this.srcPath = filePath => this.destinationPath(_path.default.join(this.options['src-path'], filePath));
28
+ }
29
+ get prompting() {
30
+ return {
31
+ welcome() {
32
+ if (this.options.quiet) {
33
+ return;
34
+ }
35
+ console.log(_chalk.default.yellow('\n----------------------'));
36
+ console.log('Micromag Project Generator');
37
+ console.log(_chalk.default.yellow('----------------------\n'));
38
+ },
39
+ prompts() {
40
+ const prompts = [];
41
+ if (!this.options['project-name']) {
42
+ prompts.push(_generator.default.prompts.project_name);
43
+ }
44
+ if (!prompts.length) {
45
+ return null;
46
+ }
47
+ return this.prompt(prompts).then(answers => {
48
+ if (answers['project-name']) {
49
+ this.options['project-name'] = answers['project-name'];
50
+ }
51
+ });
52
+ }
53
+ };
54
+ }
55
+ async configuring() {
56
+ const {
57
+ 'project-name': projectName,
58
+ 'src-path': srcPath,
59
+ 'dest-path': destPath
60
+ } = this.options;
61
+ await this.composeWith('folklore:html-project', {
62
+ 'skip-install': true,
63
+ quiet: true,
64
+ 'project-name': projectName,
65
+ 'src-path': srcPath,
66
+ 'dest-path': destPath
67
+ });
68
+ }
69
+ get conflicts() {
70
+ return {
71
+ home() {
72
+ const {
73
+ 'src-path': srcPath
74
+ } = this.options;
75
+ const templateData = {
76
+ getRelativeStylesPath: (from, src) => _path.default.relative(this.destinationPath(_path.default.dirname(_path.default.join(srcPath, from))), this.destinationPath(_path.default.join(_path.default.join(srcPath, 'styles'), src)))
77
+ };
78
+ this.fs.delete(this.srcPath('components/pages/Home.jsx'));
79
+ this.fs.delete(this.srcPath('styles/pages/home.module.scss'));
80
+ this.fs.copyTpl(this.templatePath('Home.jsx'), this.srcPath('components/pages/Home.jsx'), templateData);
81
+ this.fs.copyTpl(this.templatePath('home.module.scss'), this.srcPath('styles/pages/home.module.scss'), templateData);
82
+ },
83
+ routes() {
84
+ const {
85
+ 'src-path': srcPath
86
+ } = this.options;
87
+ const templateData = {
88
+ getRelativeStylesPath: (from, src) => _path.default.relative(this.destinationPath(_path.default.dirname(_path.default.join(srcPath, from))), this.destinationPath(_path.default.join(_path.default.join(srcPath, 'styles'), src)))
89
+ };
90
+ this.fs.delete(this.srcPath('components/Routes.jsx'));
91
+ this.fs.copyTpl(this.templatePath('Routes.jsx'), this.srcPath('components/Routes.jsx'), templateData);
92
+ },
93
+ styles() {
94
+ this.fs.delete(this.srcPath('styles/styles.scss'));
95
+ this.fs.copyTpl(this.templatePath('styles.scss'), this.srcPath('styles/styles.scss'));
96
+ },
97
+ micromag() {
98
+ this.fs.copyTpl(this.templatePath('data.json'), this.srcPath('micromag/data.json'));
99
+ },
100
+ dependencies() {
101
+ this.addDependencies({
102
+ '@micromag/viewer': '^0.3.492',
103
+ '@micromag/intl': '^0.3.488'
104
+ });
105
+ }
106
+ };
107
+ }
108
+ async install() {
109
+ if (this.options['skip-install']) {
110
+ return;
111
+ }
112
+ await this.spawnCommand('npm', ['install']);
113
+ }
114
+ };
@@ -0,0 +1,33 @@
1
+ import '@micromag/intl/locale/fr';
2
+ import Micromag from '@micromag/viewer';
3
+ import React from 'react';
4
+ import { useIntl } from 'react-intl';
5
+
6
+ // import * as AppPropTypes from '../../lib/PropTypes';
7
+ import story from '../../micromag/data.json';
8
+
9
+ import styles from '<%= getRelativeStylesPath('components/pages/Home.jsx', 'pages/home.module.scss') %>';
10
+
11
+ const propTypes = {
12
+ // intl: AppPropTypes.intl.isRequired,
13
+ };
14
+
15
+ function HomePage() {
16
+ const { locale } = useIntl();
17
+ return (
18
+ <div className={styles.container}>
19
+ <Micromag
20
+ story={story}
21
+ locale={locale}
22
+ // basePath={basePath}
23
+ // memoryRouter
24
+ pathWithIndex
25
+ className={styles.micromag}
26
+ />
27
+ </div>
28
+ );
29
+ }
30
+
31
+ HomePage.propTypes = propTypes;
32
+
33
+ export default HomePage;
@@ -0,0 +1,34 @@
1
+ import React from 'react';
2
+ // import PropTypes from 'prop-types';
3
+ import { Route, Switch } from 'wouter';
4
+ import { useRoutes } from '@folklore/routes';
5
+
6
+ // import { useUrlGenerator } from '@folklore/routes';
7
+ // import * as AppPropTypes from '../lib/PropTypes';
8
+ import MainLayout from './layouts/Main';
9
+ import ErrorPage from './pages/Error';
10
+ import HomePage from './pages/Home';
11
+
12
+ import '<%= getRelativeStylesPath('components/App.jsx', 'styles.scss') %>';
13
+
14
+ const propTypes = {};
15
+
16
+ const defaultProps = {};
17
+
18
+ function Routes() {
19
+ const routes = useRoutes() || {};
20
+ return (
21
+ <Switch>
22
+ <Route>
23
+ <MainLayout>
24
+ <HomePage />
25
+ </MainLayout>
26
+ </Route>
27
+ </Switch>
28
+ );
29
+ }
30
+
31
+ Routes.propTypes = propTypes;
32
+ Routes.defaultProps = defaultProps;
33
+
34
+ export default Routes;
@@ -0,0 +1,38 @@
1
+ {
2
+ "components": [
3
+ {
4
+ "id": "screen1",
5
+ "type": "text-title",
6
+ "background": {
7
+ "color": { "color": "#ffcc00", "alpha": 1 },
8
+ "image": null,
9
+ "fit": "contain",
10
+ "repeat": true
11
+ },
12
+ "layout": "middle",
13
+ "title": {
14
+ "body": "<h1>Écran 1</h1>"
15
+ },
16
+ "text": {
17
+ "body": "<p>Texte</p>"
18
+ }
19
+ },
20
+ {
21
+ "id": "screen2",
22
+ "type": "text-title",
23
+ "background": {
24
+ "color": { "color": "#cc0000", "alpha": 1 },
25
+ "image": null,
26
+ "fit": "contain",
27
+ "repeat": true
28
+ },
29
+ "layout": "middle",
30
+ "title": {
31
+ "body": "<h1>Écran 2</h1>"
32
+ },
33
+ "text": {
34
+ "body": "<p>Texte</p>"
35
+ }
36
+ }
37
+ ]
38
+ }
@@ -0,0 +1,19 @@
1
+ @import '../commons/variables';
2
+ @import '../commons/placeholders';
3
+ @import '../commons/mixins';
4
+
5
+ .container {
6
+ position: fixed;
7
+ top: 0;
8
+ left: 0;
9
+ width: 100%;
10
+ height: 100%;
11
+
12
+ .micromag {
13
+ position: absolute;
14
+ top: 0;
15
+ left: 0;
16
+ width: 100%;
17
+ height: 100%;
18
+ }
19
+ }
@@ -0,0 +1,2 @@
1
+ @import '~@micromag/core/scss/styles';
2
+ @import '~@micromag/viewer/scss/styles';
@@ -25,8 +25,8 @@ module.exports = class PrettierGenerator extends _generator.default {
25
25
  },
26
26
  dependencies() {
27
27
  this.addDevDependencies({
28
- prettier: '^2.8.4',
29
- '@prettier/plugin-php': '^0.19.3',
28
+ prettier: '^3.2.5',
29
+ '@prettier/plugin-php': '^0.22.2',
30
30
  '@trivago/prettier-plugin-sort-imports': '^4.1.1'
31
31
  });
32
32
  }
@@ -1,8 +1,15 @@
1
1
  {
2
+ "plugins": ["@prettier/plugin-php", "@trivago/prettier-plugin-sort-imports"],
2
3
  "printWidth": 100,
3
4
  "singleQuote": true,
4
5
  "trailingComma": "all",
5
6
  "tabWidth": 4,
6
- "importOrder": ["<THIRD_PARTY_MODULES>", "^[./](.*)?\/(utils|hooks|lib)", "^[./].*(?<!(\\.[a-z]+))$", "\\.scss$", "\\.[a-z]+$"],
7
+ "importOrder": [
8
+ "<THIRD_PARTY_MODULES>",
9
+ "^[./](.*)?/(utils|hooks|lib)",
10
+ "^[./].*(?<!(\\.[a-z]+))$",
11
+ "\\.scss$",
12
+ "\\.[a-z]+$"
13
+ ],
7
14
  "importOrderSeparation": true
8
15
  }
@@ -92,16 +92,15 @@ module.exports = class ReactAppGenerator extends _generator.default {
92
92
  'react-dom': '^18.0.0',
93
93
  'prop-types': '^15.0.0',
94
94
  'react-intl': '^6.0.0',
95
- 'react-router': '^6.0.0',
96
- 'react-router-dom': '^6.0.0',
95
+ 'wouter': '^3.0.0',
97
96
  'react-helmet': '^6.0.0',
98
97
  classnames: '^2.3.1',
99
- '@folklore/routes': '^0.1.1',
100
- '@folklore/fonts': '^0.0.11',
101
- '@folklore/forms': '^0.0.19',
98
+ '@folklore/routes': '^0.2.31',
99
+ '@folklore/fonts': '^0.0.13',
100
+ '@folklore/forms': '^0.0.22',
102
101
  '@folklore/fetch': '^0.1.15',
103
- '@folklore/hooks': '^0.0.27',
104
- '@folklore/tracking': '^0.0.14',
102
+ '@folklore/hooks': '^0.0.42',
103
+ '@folklore/tracking': '^0.0.16',
105
104
  // Polyfills
106
105
  intl: '^1.2.5',
107
106
  '@formatjs/intl-locale': '^3.0.5',
@@ -2,7 +2,7 @@ import { RoutesProvider } from '@folklore/routes';
2
2
  import PropTypes from 'prop-types';
3
3
  import React from 'react';
4
4
  import { IntlProvider } from 'react-intl';
5
- import { BrowserRouter } from 'react-router-dom';
5
+ import { Router } from 'wouter';
6
6
 
7
7
  // import * as AppPropTypes from '../lib/PropTypes';
8
8
  import Routes from './Routes';
@@ -20,18 +20,20 @@ const propTypes = {
20
20
 
21
21
  const defaultProps = {
22
22
  intl: null,
23
- routes: {},
23
+ routes: {
24
+ home: '/'
25
+ },
24
26
  };
25
27
 
26
28
  function App({ intl, routes }) {
27
29
  const { locale = 'fr', messages = {} } = intl || {};
28
30
  return (
29
31
  <IntlProvider locale={locale} messages={messages[locale] || messages}>
30
- <BrowserRouter>
32
+ <Router>
31
33
  <RoutesProvider routes={routes}>
32
34
  <Routes />
33
35
  </RoutesProvider>
34
- </BrowserRouter>
36
+ </Router>
35
37
  </IntlProvider>
36
38
  );
37
39
  }
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  // import PropTypes from 'prop-types';
3
- import { Route, Routes } from 'react-router-dom';
3
+ import { Route, Switch } from 'wouter';
4
4
  import { useRoutes } from '@folklore/routes';
5
5
 
6
6
  // import { useUrlGenerator } from '@folklore/routes';
@@ -18,25 +18,18 @@ const defaultProps = {};
18
18
  function Routes() {
19
19
  const routes = useRoutes() || {};
20
20
  return (
21
- <Routes>
22
- <Route
23
- path={routes.home || '/'}
24
- exact
25
- element={
26
- <MainLayout>
27
- <HomePage />
28
- </MainLayout>
29
- }
30
- />
31
- <Route
32
- path="*"
33
- element={
34
- <MainLayout>
35
- <ErrorPage />
36
- </MainLayout>
37
- }
38
- />
39
- </Routes>
21
+ <Switch>
22
+ <Route path={routes.home || '/'}>
23
+ <MainLayout>
24
+ <HomePage />
25
+ </MainLayout>
26
+ </Route>
27
+ <Route>
28
+ <MainLayout>
29
+ <ErrorPage />
30
+ </MainLayout>
31
+ </Route>
32
+ </Switch>
40
33
  );
41
34
  }
42
35
 
@@ -2,7 +2,7 @@
2
2
  import React from 'react';
3
3
  import PropTypes from 'prop-types';
4
4
  import classNames from 'classnames';
5
- import { Link } from 'react-router-dom';
5
+ import { Link } from 'wouter';
6
6
 
7
7
  import * as AppPropTypes from '../../lib/PropTypes';
8
8
 
@@ -140,7 +140,7 @@ function Button({
140
140
  {content}
141
141
  </a>
142
142
  ) : (
143
- <Link to={href} className={buttonClassNames} onClick={onClick}>
143
+ <Link href={href} className={buttonClassNames} onClick={onClick}>
144
144
  {content}
145
145
  </Link>
146
146
  );
@@ -2,7 +2,7 @@
2
2
  import React from 'react';
3
3
  import PropTypes from 'prop-types';
4
4
  import classNames from 'classnames';
5
- import { Link } from 'react-router-dom';
5
+ import { Link } from 'wouter';
6
6
 
7
7
  import * as AppPropTypes from '../../lib/PropTypes';
8
8
 
@@ -44,7 +44,7 @@ function Menu({ items, className }) {
44
44
  {label}
45
45
  </a>
46
46
  ) : (
47
- <Link to={url} className={styles.link}>
47
+ <Link href={url} className={styles.link}>
48
48
  {label}
49
49
  </Link>
50
50
  )}
@@ -1,7 +1,7 @@
1
1
  /* eslint-disable react/jsx-props-no-spreading */
2
2
  import React from 'react';
3
3
  import PropTypes from 'prop-types';
4
- import { Link } from 'react-router-dom';
4
+ import { Link } from 'wouter';
5
5
  import { defineMessages, FormattedMessage } from 'react-intl';
6
6
  import { useUrlGenerator } from '@folklore/routes';
7
7
 
@@ -90,7 +90,7 @@ function ErrorPage({ statusCode }) {
90
90
  <FormattedMessage {...messages[`description${statusCode || 404}`]} />
91
91
  </p>
92
92
  <div className={styles.actions}>
93
- <Link to={url('home')}>
93
+ <Link href={url('home')}>
94
94
  <FormattedMessage {...messages.gotoHome} />
95
95
  </Link>
96
96
  </div>
@@ -31,10 +31,10 @@ module.exports = class StylelintGenerator extends _generator.default {
31
31
  },
32
32
  dependencies() {
33
33
  this.addDevDependencies({
34
- stylelint: '^15.0.0',
35
- 'stylelint-config-standard-scss': '^7.0.1',
36
- 'stylelint-config-idiomatic-order': '^9.0.0',
37
- 'stylelint-config-standard': '^30.0.1'
34
+ stylelint: '^16.2.1',
35
+ 'stylelint-config-standard-scss': '^13.0.0',
36
+ 'stylelint-config-idiomatic-order': '^10.0.0',
37
+ 'stylelint-config-standard': '^36.0.0'
38
38
  });
39
39
  }
40
40
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "generator-folklore",
3
- "version": "3.0.19",
3
+ "version": "3.0.21",
4
4
  "description": "Yeoman generator for projects at Folklore",
5
5
  "keywords": [
6
6
  "yeoman-generator"
@@ -40,5 +40,5 @@
40
40
  "yeoman-generator": "^5.7.0",
41
41
  "yeoman-remote": "^1.0.1"
42
42
  },
43
- "gitHead": "a13caffa03c30420cb515e32448911740ce67c30"
43
+ "gitHead": "e187175793ce4d11d128d39929b4779c534081bd"
44
44
  }