| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- module.exports = {
- meta: {
- type: 'problem',
- fixable: 'code',
- docs: {
- description: 'Prohibit Trans with no components or values',
- },
- },
- create(context) {
- return {
- 'JSXOpeningElement[name.name="Trans"]'(node) {
- const attributes = new Map(
- node.attributes.map(attr => [attr.name.name, attr])
- )
- if (!attributes.has('components')) {
- if (node.parent.children.length > 0) {
- context.report({
- node,
- message: `Trans components must not have child elements`,
- })
- } else if (attributes.has('values')) {
- context.report({
- node,
- message: `Use t('…') when there are no components`,
- })
- } else {
- context.report({
- node,
- message: `Use t('…') when there are no components`,
- fix(fixer) {
- const i18nKey = attributes.get('i18nKey').value.value
- // Note: Prettier can fix indentation
- return fixer.replaceText(node.parent, `{t('${i18nKey}')}`)
- },
- })
- }
- }
- },
- }
- },
- }
|