@atlaskit/eslint-plugin-design-system
Version:
The essential plugin for use with the Atlassian Design System.
24 lines (21 loc) • 1.02 kB
JavaScript
import { isNodeOfType } from 'eslint-codemod-utils';
import { FunctionCall } from '../../../ast-nodes/function-call';
import { JSXElementHelper } from '../../../ast-nodes/jsx-element-helper';
// The use of `<FormattedMessage ... />` component and `{formatMessage(...)}` are allowed as these are used for i18n
export function hasTextChildrenOnly(node) {
var _node$children;
return (_node$children = node.children) === null || _node$children === void 0 ? void 0 : _node$children.every(child => {
if (isNodeOfType(child, 'JSXText')) {
return true;
}
// JSX child element <span><FormattedMessage /></span>
if (isNodeOfType(child, 'JSXElement') && JSXElementHelper.getName(child) === 'FormattedMessage') {
return true;
}
// JSX expression <span>{formatMessage(...)}</span>
if (isNodeOfType(child, 'JSXExpressionContainer') && isNodeOfType(child.expression, 'CallExpression')) {
return FunctionCall.getName(child.expression) === 'formatMessage';
}
return false;
});
}