diff --git a/src/model.ts b/src/model.ts index 2091857..e7739d1 100644 --- a/src/model.ts +++ b/src/model.ts @@ -63,8 +63,10 @@ export default class Model { const configuration = vscode.workspace.getConfiguration(config.namespace); let content; - if (fela) { + if (fela && !configuration.felaHooks) { content = templates.felaComponent(name, configuration.moduleDependencies); + } else if (fela && configuration.felaHooks) { + content = templates.felaHookComponent(name, configuration.moduleDependencies); } else { content = templates.component(name, configuration.moduleDependencies); } diff --git a/src/template/component.ts b/src/template/component.ts index d407a38..eee9588 100644 --- a/src/template/component.ts +++ b/src/template/component.ts @@ -30,6 +30,32 @@ ${name}.propTypes = { export default ${name}; `; +export const felaHookComponent = (name: string, dependencies: boolean) => `${ + dependencies + ? "import { React, PropTypes } from '../../dependencies';" + : "import React from 'react';\nimport PropTypes from 'prop-types';" +} + +import * as rules from './${name}.styles'; + +const ${name} = () => { + const { styles } = useFelaEnhanced(rules); + + return ( +
+ +
+ ); +}; + +${name}.propTypes = { + styles: PropTypes.shape({ + container: PropTypes.string.isRequired + }).isRequired +}; + +export default ${name}; +`; export const styles = "export const container = () => ({});\n";