1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-12-23 09:52:26 +01:00

added validTag string literal union (#19258)

* added validTag string literal union

* Adding deprecation message

---------

Co-authored-by: georgewrmarshall <george.marshall@consensys.net>
Co-authored-by: Garrett Bear <gwhisten@gmail.com>
This commit is contained in:
Binij Shrestha 2023-06-08 23:46:00 +05:45 committed by GitHub
parent c0afc4d2a9
commit fa70aec286
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 53 additions and 25 deletions

View File

@ -1,3 +1,3 @@
export { Text } from './text'; export { Text } from './text';
export { ValidTag, TextDirection, InvisibleCharacter } from './text.types'; export { ValidTag, TextDirection, InvisibleCharacter } from './text.types';
export type { TextProps } from './text.types'; export type { TextProps, ValidTagType } from './text.types';

View File

@ -10,7 +10,7 @@ import {
TextVariant, TextVariant,
Color, Color,
} from '../../../helpers/constants/design-system'; } from '../../../helpers/constants/design-system';
import { TextDirection, ValidTag } from './text.types'; import { TextDirection } from './text.types';
import { Text } from '.'; import { Text } from '.';
describe('Text', () => { describe('Text', () => {
@ -21,20 +21,20 @@ describe('Text', () => {
it('should render the Text with correct html elements', () => { it('should render the Text with correct html elements', () => {
const { getByText, container } = render( const { getByText, container } = render(
<> <>
<Text as={ValidTag.P}>p</Text> <Text as="p">p</Text>
<Text as={ValidTag.H1}>h1</Text> <Text as="h1">h1</Text>
<Text as={ValidTag.H2}>h2</Text> <Text as="h2">h2</Text>
<Text as={ValidTag.H3}>h3</Text> <Text as="h3">h3</Text>
<Text as={ValidTag.H4}>h4</Text> <Text as="h4">h4</Text>
<Text as={ValidTag.H5}>h5</Text> <Text as="h5">h5</Text>
<Text as={ValidTag.H6}>h6</Text> <Text as="h6">h6</Text>
<Text as={ValidTag.Span}>span</Text> <Text as="span">span</Text>
<Text as={ValidTag.Strong}>strong</Text> <Text as="strong">strong</Text>
<Text as={ValidTag.Em}>em</Text> <Text as="em">em</Text>
<Text as={ValidTag.Li}>li</Text> <Text as="li">li</Text>
<Text as={ValidTag.Div}>div</Text> <Text as="div">div</Text>
<Text as={ValidTag.Dt}>dt</Text> <Text as="dt">dt</Text>
<Text as={ValidTag.Dd}>dd</Text> <Text as="dd">dd</Text>
</>, </>,
); );
expect(container.querySelector('p')).toBeDefined(); expect(container.querySelector('p')).toBeDefined();

View File

@ -6,23 +6,23 @@ import {
TextVariant, TextVariant,
TextColor, TextColor,
} from '../../../helpers/constants/design-system'; } from '../../../helpers/constants/design-system';
import { TextProps, ValidTag } from './text.types'; import { TextProps } from './text.types';
const getTextElementDefault = (variant: TextVariant) => { const getTextElementDefault = (variant: TextVariant) => {
switch (variant) { switch (variant) {
case TextVariant.displayMd: case TextVariant.displayMd:
return ValidTag.H1; return 'h1';
case TextVariant.headingLg: case TextVariant.headingLg:
return ValidTag.H2; return 'h2';
case TextVariant.headingMd: case TextVariant.headingMd:
return ValidTag.H3; return 'h3';
case TextVariant.headingSm: case TextVariant.headingSm:
return ValidTag.H4; return 'h4';
case TextVariant.inherit: case TextVariant.inherit:
return ValidTag.Span; return 'span';
// TextVariant.bodyLgMedium, TextVariant.bodyMd, TextVariant.bodyMdBold, TextVariant.bodySm, TextVariant.bodySmBold, TextVariant.bodyXs use default 'p' tag // TextVariant.bodyLgMedium, TextVariant.bodyMd, TextVariant.bodyMdBold, TextVariant.bodySm, TextVariant.bodySmBold, TextVariant.bodyXs use default 'p' tag
default: default:
return ValidTag.P; return 'p';
} }
}; };

View File

@ -23,6 +23,14 @@ export enum TextDirection {
*/ */
export const InvisibleCharacter = '\u200B'; export const InvisibleCharacter = '\u200B';
/**
* @deprecated ValidTag enum is deprecated in favour of a union of strings.
* To change the root html element tag of the Text component, use the `as` prop and string value.
* e.g. `<Text as="h1">Hello World</Text>`
*
* Contribute to replacing the enum with a union of string by submitting a PR
*/
export enum ValidTag { export enum ValidTag {
Dd = 'dd', Dd = 'dd',
Div = 'div', Div = 'div',
@ -44,11 +52,31 @@ export enum ValidTag {
Header = 'header', Header = 'header',
} }
export type ValidTagType =
| 'dd'
| 'div'
| 'dt'
| 'em'
| 'h1'
| 'h2'
| 'h3'
| 'h4'
| 'h5'
| 'h6'
| 'li'
| 'p'
| 'span'
| 'strong'
| 'ul'
| 'label'
| 'input'
| 'header';
export interface TextProps extends BoxProps { export interface TextProps extends BoxProps {
/** /**
* The text content of the Text component * The text content of the Text component
*/ */
children: React.ReactNode; children?: React.ReactNode;
/** /**
* The variation of font styles including sizes and weights of the Text component * The variation of font styles including sizes and weights of the Text component
* Possible values: * Possible values:
@ -107,7 +135,7 @@ export interface TextProps extends BoxProps {
/** /**
* Changes the root html element tag of the Text component. * Changes the root html element tag of the Text component.
*/ */
as?: ValidTag; as?: ValidTagType;
/** /**
* Additional className to assign the Text component * Additional className to assign the Text component
*/ */