From d91a1df08820d8d39e987b8fbbcde53af2774ef4 Mon Sep 17 00:00:00 2001 From: Miles Johnson Date: Tue, 3 Mar 2020 10:32:46 -0800 Subject: [PATCH 001/104] fix(Aside): Clean up side-effects. (#330) * fix(Aside): Dont trigger callback for manual expanded changes. * Add more stories. --- .../layouts/src/components/Aside/index.tsx | 8 +- .../layouts/src/components/Aside/story.tsx | 90 ++++++++++++++++++- 2 files changed, 90 insertions(+), 8 deletions(-) diff --git a/packages/layouts/src/components/Aside/index.tsx b/packages/layouts/src/components/Aside/index.tsx index 2cc4c7100..886260895 100644 --- a/packages/layouts/src/components/Aside/index.tsx +++ b/packages/layouts/src/components/Aside/index.tsx @@ -92,13 +92,7 @@ export default function Aside({ useEffect(() => { if (expanded !== undefined) { - setExpanded(prev => { - if (expanded === prev) { - return !expanded; - } - - return expanded; - }); + setExpanded(expanded); if (onCollapseToggle) { onCollapseToggle(expanded); diff --git a/packages/layouts/src/components/Aside/story.tsx b/packages/layouts/src/components/Aside/story.tsx index b31968293..08e7af72f 100644 --- a/packages/layouts/src/components/Aside/story.tsx +++ b/packages/layouts/src/components/Aside/story.tsx @@ -148,7 +148,18 @@ export function CanExternallyControlExpandedState() {
-
)} diff --git a/packages/core/src/components/DateTime/index.tsx b/packages/core/src/components/DateTime/index.tsx index 1df368876..593abc734 100644 --- a/packages/core/src/components/DateTime/index.tsx +++ b/packages/core/src/components/DateTime/index.tsx @@ -192,27 +192,12 @@ export default class DateTime extends React.PureComponent { const diff = DateTime.diff(relative, options.base); const fewPhrase = options.style === 'narrow' - ? T.phrase( - 'a few sec.', - {}, - { context: 'Relative time within a minute', key: 'lunar.datetime.secsAgoNarrow' }, - ) - : T.phrase( - 'a few seconds', - {}, - { context: 'Relative time within a minute', key: 'lunar.datetime.secsAgo' }, - ); + ? T.phrase('lunar.datetime.secsAgoNarrow', 'a few sec.') + : T.phrase('lunar.datetime.secsAgo', 'a few seconds'); if (diff > 0 && diff < MINUTE_THRESHOLD) { if (!options.style || options.style === 'long') { - return T.phrase( - 'in %{time}', - { time: fewPhrase }, - { - context: 'Relative time explaining something will happen soon', - key: 'lunar.datetime.in', - }, - ); + return T.phrase('lunar.datetime.in', 'in %{time}', { time: fewPhrase }); } return fewPhrase; @@ -220,14 +205,7 @@ export default class DateTime extends React.PureComponent { if (diff <= 0 && diff > -MINUTE_THRESHOLD) { if (!options.style || options.style === 'long') { - return T.phrase( - '%{time} ago', - { time: fewPhrase }, - { - context: 'Relative time explaining something recently happened', - key: 'lunar.datetime.ago', - }, - ); + return T.phrase('lunar.datetime.ago', '%{time} ago', { time: fewPhrase }); } return fewPhrase; diff --git a/packages/core/src/components/DateTimeSelect/index.tsx b/packages/core/src/components/DateTimeSelect/index.tsx index 5e1d7e4ef..1137f9a3f 100644 --- a/packages/core/src/components/DateTimeSelect/index.tsx +++ b/packages/core/src/components/DateTimeSelect/index.tsx @@ -216,11 +216,7 @@ export class DateTimeSelect extends React.Component {this.getMonthRange().map(month => ( @@ -237,11 +233,7 @@ export class DateTimeSelect extends React.Component {this.getDayRange().map(day => ( @@ -259,11 +251,7 @@ export class DateTimeSelect extends React.Component {this.getYearRange().map(year => ( @@ -290,11 +278,7 @@ export class DateTimeSelect extends React.Component {this.getHourRange().map(hour => ( @@ -311,14 +295,7 @@ export class DateTimeSelect extends React.Component {this.getMinuteRange().map(minute => ( @@ -337,30 +314,11 @@ export class DateTimeSelect extends React.Component - - + + )} diff --git a/packages/core/src/components/EmojiPicker/index.tsx b/packages/core/src/components/EmojiPicker/index.tsx index 9e14df400..ebb435c8d 100644 --- a/packages/core/src/components/EmojiPicker/index.tsx +++ b/packages/core/src/components/EmojiPicker/index.tsx @@ -102,36 +102,30 @@ export default function EmojiPicker({ disableAutoFocus, onClosePicker, ...props }; const messages = { - recentlyUsed: T.phrase('Recently Used', null, { key: 'lunar.emoji.recentlyUsed' }), - frequentlyUsed: T.phrase('Frequently Used', null, { key: 'lunar.emoji.frequentlyUsed' }), - smileysEmotion: T.phrase('Smileys & Emotions', null, { key: 'lunar.emoji.smileysEmotion' }), - peopleBody: T.phrase('People & Bodies', null, { key: 'lunar.emoji.peopleBody' }), - animalsNature: T.phrase('Animals & Nature', null, { key: 'lunar.emoji.animalsNature' }), - foodDrink: T.phrase('Food & Drink', null, { key: 'lunar.emoji.foodDrink' }), - travelPlaces: T.phrase('Travel & Weather', null, { key: 'lunar.emoji.travelWeather' }), - activities: T.phrase('Activities', null, { key: 'lunar.emoji.activities' }), - objects: T.phrase('Objects', null, { key: 'lunar.emoji.objects' }), - symbols: T.phrase('Symbols', null, { key: 'lunar.emoji.symbols' }), - flags: T.phrase('Flags', null, { key: 'lunar.emoji.flags' }), - variations: T.phrase('Variations', null, { key: 'lunar.emoji.variations' }), - searchResults: T.phrase('Search results', null, { key: 'lunar.emoji.searchResults' }), - none: T.phrase('All emojis', null, { key: 'lunar.emoji.allResults' }), - skinNone: T.phrase('No skin tone', null, { key: 'lunar.emoji.noSkinTone' }), - skinLight: T.phrase('Light skin tone', null, { key: 'lunar.emoji.lightSkinTone' }), - skinMediumLight: T.phrase('Medium-light skin tone', null, { - key: 'lunar.emoji.mediumLightSkinTone', - }), - skinMedium: T.phrase('Medium skin tone', null, { key: 'lunar.emoji.mediumSkinTone' }), - skinMediumDark: T.phrase('Medium-dark skin tone', null, { - key: 'lunar.emoji.mediumDarkSkinTone', - }), - skinDark: T.phrase('Dark skin tone', null, { key: 'lunar.emoji.darkSkinTone' }), - search: T.phrase('Search emojis', null, { key: 'lunar.emoji.search' }), - searchA11y: T.phrase('Search for emojis by keyword', null, { - key: 'lunar.emoji.searchKeyword', - }), - noResults: T.phrase('No results, please try again.', null, { key: 'lunar.emoji.noResults' }), - clearUsed: T.phrase('Clear frequently used', null, { key: 'lunar.emoji.clearFrequentlyUsed' }), + recentlyUsed: T.phrase('lunar.emoji.recentlyUsed', 'Recently Used'), + frequentlyUsed: T.phrase('lunar.emoji.frequentlyUsed', 'Frequently Used'), + smileysEmotion: T.phrase('lunar.emoji.smileysEmotion', 'Smileys & Emotions'), + peopleBody: T.phrase('lunar.emoji.peopleBody', 'People & Bodies'), + animalsNature: T.phrase('lunar.emoji.animalsNature', 'Animals & Nature'), + foodDrink: T.phrase('lunar.emoji.foodDrink', 'Food & Drink'), + travelPlaces: T.phrase('lunar.emoji.travelWeather', 'Travel & Weather'), + activities: T.phrase('lunar.emoji.activities', 'Activities'), + objects: T.phrase('lunar.emoji.objects', 'Objects'), + symbols: T.phrase('lunar.emoji.symbols', 'Symbols'), + flags: T.phrase('lunar.emoji.flags', 'Flags'), + variations: T.phrase('lunar.emoji.variations', 'Variations'), + searchResults: T.phrase('lunar.emoji.searchResults', 'Search results'), + none: T.phrase('lunar.emoji.allResults', 'All emojis'), + skinNone: T.phrase('lunar.emoji.noSkinTone', 'No skin tone'), + skinLight: T.phrase('lunar.emoji.lightSkinTone', 'Light skin tone'), + skinMediumLight: T.phrase('lunar.emoji.mediumLightSkinTone', 'Medium-light skin tone'), + skinMedium: T.phrase('lunar.emoji.mediumSkinTone', 'Medium skin tone'), + skinMediumDark: T.phrase('lunar.emoji.mediumDarkSkinTone', 'Medium-dark skin tone'), + skinDark: T.phrase('lunar.emoji.darkSkinTone', 'Dark skin tone'), + search: T.phrase('lunar.emoji.search', 'Search emojis'), + searchA11y: T.phrase('lunar.emoji.searchKeyword', 'Search for emojis by keyword'), + noResults: T.phrase('lunar.emoji.noResults', 'No results, please try again.'), + clearUsed: T.phrase('lunar.emoji.clearFrequentlyUsed', 'Clear frequently used'), }; return ( diff --git a/packages/core/src/components/ErrorBoundary/private/Tripped.tsx b/packages/core/src/components/ErrorBoundary/private/Tripped.tsx index 8112b296b..e4829c2ee 100644 --- a/packages/core/src/components/ErrorBoundary/private/Tripped.tsx +++ b/packages/core/src/components/ErrorBoundary/private/Tripped.tsx @@ -8,18 +8,10 @@ export default function Tripped() { + } > - + ); } diff --git a/packages/core/src/components/ErrorMessage/index.tsx b/packages/core/src/components/ErrorMessage/index.tsx index 8a21c142a..c11cf07f6 100644 --- a/packages/core/src/components/ErrorMessage/index.tsx +++ b/packages/core/src/components/ErrorMessage/index.tsx @@ -74,16 +74,7 @@ export default class ErrorMessage extends React.PureComponent { return ( - ) - } + title={title || code || } onClose={onClose} > {message} @@ -91,11 +82,7 @@ export default class ErrorMessage extends React.PureComponent { {id && ( - + )} diff --git a/packages/core/src/components/FileInput/index.tsx b/packages/core/src/components/FileInput/index.tsx index 7b2c2df7d..806490bc6 100644 --- a/packages/core/src/components/FileInput/index.tsx +++ b/packages/core/src/components/FileInput/index.tsx @@ -147,7 +147,6 @@ export default class FileInput extends React.Component { @@ -181,12 +180,8 @@ export default class FileInput extends React.Component { > diff --git a/packages/core/src/components/FormActions/index.tsx b/packages/core/src/components/FormActions/index.tsx index 013e662c7..262a29e16 100644 --- a/packages/core/src/components/FormActions/index.tsx +++ b/packages/core/src/components/FormActions/index.tsx @@ -78,16 +78,8 @@ export default class FormActions extends React.PureComponent { onClick={onContinue} > {processing - ? processingText || ( - - ) - : continueText || ( - - )} + ? processingText || + : continueText || } {!hideCancel && ( @@ -98,21 +90,13 @@ export default class FormActions extends React.PureComponent { disabled={processing} onClick={onCancel} > - {cancelText || ( - - )} + {cancelText || } )} {showReset && ( - {resetText || ( - - )} + {resetText || } )} diff --git a/packages/core/src/components/FormField/index.tsx b/packages/core/src/components/FormField/index.tsx index d3e8d07fd..8af497c83 100644 --- a/packages/core/src/components/FormField/index.tsx +++ b/packages/core/src/components/FormField/index.tsx @@ -143,11 +143,7 @@ export default function FormField({ {optional && !hideOptionalLabel && ( - + )} diff --git a/packages/core/src/components/HierarchyPicker/Hierarchy/ItemDescription.tsx b/packages/core/src/components/HierarchyPicker/Hierarchy/ItemDescription.tsx index b479fcb1f..dd34135b5 100644 --- a/packages/core/src/components/HierarchyPicker/Hierarchy/ItemDescription.tsx +++ b/packages/core/src/components/HierarchyPicker/Hierarchy/ItemDescription.tsx @@ -12,7 +12,7 @@ export default function ItemDescription({ item }: Props) { return (
- + diff --git a/packages/core/src/components/HierarchyPicker/Search/index.tsx b/packages/core/src/components/HierarchyPicker/Search/index.tsx index 62ffc3adc..92a585b44 100644 --- a/packages/core/src/components/HierarchyPicker/Search/index.tsx +++ b/packages/core/src/components/HierarchyPicker/Search/index.tsx @@ -172,14 +172,7 @@ export class Search extends React.Component { hideLabel optional - accessibilityLabel={T.phrase( - 'Hierarchy item search', - {}, - { - context: 'Search functionality to find items within the hierarchy menu.', - key: 'lunar.picker.searchLabel', - }, - )} + accessibilityLabel={T.phrase('lunar.picker.searchLabel', 'Hierarchy item search')} getItemValue={this.getItemValue} maxHeight={maxHeight} name="autocomplete-search" diff --git a/packages/core/src/components/HierarchyPicker/defaultFormatter.ts b/packages/core/src/components/HierarchyPicker/defaultFormatter.ts index 960c19618..bcb0e31b5 100644 --- a/packages/core/src/components/HierarchyPicker/defaultFormatter.ts +++ b/packages/core/src/components/HierarchyPicker/defaultFormatter.ts @@ -8,9 +8,5 @@ export default function defaultFormatter(chosen: TreePath, getLabel: Labeler): s return labels.join(' > '); } - return T.phrase( - 'Select from hierarchy', - {}, - { context: 'Placeholder text for HierarchyPicker', key: 'lunar.picker.selectPlaceholder' }, - ); + return T.phrase('lunar.picker.selectPlaceholder', 'Select from hierarchy'); } diff --git a/packages/core/src/components/HierarchyPicker/index.tsx b/packages/core/src/components/HierarchyPicker/index.tsx index 2e5914d69..cd660bf94 100644 --- a/packages/core/src/components/HierarchyPicker/index.tsx +++ b/packages/core/src/components/HierarchyPicker/index.tsx @@ -197,28 +197,8 @@ export class HierarchyPicker extends React.Component diff --git a/packages/core/src/components/ImageViewer/RotateControls.tsx b/packages/core/src/components/ImageViewer/RotateControls.tsx index e4065e531..6e23ef442 100644 --- a/packages/core/src/components/ImageViewer/RotateControls.tsx +++ b/packages/core/src/components/ImageViewer/RotateControls.tsx @@ -29,20 +29,17 @@ export default function RotateControls(props: Props) { diff --git a/packages/core/src/components/ImageViewer/ZoomControls.tsx b/packages/core/src/components/ImageViewer/ZoomControls.tsx index 99c3313b4..be4fdc236 100644 --- a/packages/core/src/components/ImageViewer/ZoomControls.tsx +++ b/packages/core/src/components/ImageViewer/ZoomControls.tsx @@ -68,14 +68,7 @@ export default function ZoomControls(props: Props) {
- + - + {visible && ( - + {zoomOptions.map(zoom => ( {zoom.label} diff --git a/packages/core/src/components/Lightbox/Header.tsx b/packages/core/src/components/Lightbox/Header.tsx index cb4657ef2..533ddd51f 100644 --- a/packages/core/src/components/Lightbox/Header.tsx +++ b/packages/core/src/components/Lightbox/Header.tsx @@ -119,11 +119,7 @@ export class Header extends React.PureComponent { hasPrev={activeIndex > 0} hasNext={activeIndex < imageCount - 1} page={activeIndex + 1} - pageLabel={T.phrase( - 'Photo', - {}, - { key: 'lunar.image.photoLabel', context: 'Label for photo pagination' }, - )} + pageLabel={T.phrase('lunar.image.photoLabel', 'Photo')} pageCount={imageCount} onNext={this.handleNext} onPrevious={this.handlePrev} @@ -148,22 +144,8 @@ export class Header extends React.PureComponent {
)} diff --git a/packages/core/src/components/MessageItem/index.tsx b/packages/core/src/components/MessageItem/index.tsx index 60c00ae2e..3b9a24204 100644 --- a/packages/core/src/components/MessageItem/index.tsx +++ b/packages/core/src/components/MessageItem/index.tsx @@ -107,14 +107,7 @@ function MessageItem({
@@ -168,11 +161,10 @@ function MessageItem({ }; const timestamp = source - ? T.phrase( - '%{time} via %{source}', - { time: formattedTimestamp, source }, - { context: 'Timestamp and source within a message bubble', key: 'lunar.message.source' }, - ) + ? T.phrase('lunar.message.source', '%{time} via %{source}', { + time: formattedTimestamp, + source, + }) : formattedTimestamp; return ( @@ -214,13 +206,7 @@ function MessageItem({ {email && ( - + )}
diff --git a/packages/core/src/components/Modal/private/InnerContent.tsx b/packages/core/src/components/Modal/private/InnerContent.tsx index 3a2374c25..fe93399a4 100644 --- a/packages/core/src/components/Modal/private/InnerContent.tsx +++ b/packages/core/src/components/Modal/private/InnerContent.tsx @@ -55,11 +55,7 @@ export default function ModalInnerContent({
diff --git a/packages/core/src/components/Pagination/index.tsx b/packages/core/src/components/Pagination/index.tsx index 3bccb33d6..8a28e8d90 100644 --- a/packages/core/src/components/Pagination/index.tsx +++ b/packages/core/src/components/Pagination/index.tsx @@ -53,7 +53,7 @@ function Pagination({ hasPrev, showBookends, startAlign, - pageLabel = T.phrase('Page', {}, { context: 'Label for pages', key: 'lunar.common.page' }), + pageLabel = T.phrase('lunar.common.page', 'Page'), onFirst, onLast, onNext, @@ -74,14 +74,7 @@ function Pagination({ direction="left" left={IconChevronLeft} right={IconChevronRight} - accessibilityLabel={T.phrase( - 'Load previous page', - {}, - { - context: 'Load previous page when paginating sets of data', - key: 'lunar.pagination.loadPrevious', - }, - )} + accessibilityLabel={T.phrase('lunar.pagination.loadPrevious', 'Load previous page')} size={4 * theme!.unit} /> @@ -93,14 +86,7 @@ function Pagination({ direction="right" left={IconChevronLeft} right={IconChevronRight} - accessibilityLabel={T.phrase( - 'Load next page', - {}, - { - context: 'Load next page when paginating sets of data', - key: 'lunar.pagination.loadNext', - }, - )} + accessibilityLabel={T.phrase('lunar.pagination.loadNext', 'Load next page')} size={4 * theme!.unit} /> @@ -116,14 +102,7 @@ function Pagination({ direction="left" left={IconFirst} right={IconLast} - accessibilityLabel={T.phrase( - 'Load first page', - {}, - { - context: 'Load first page when paginating sets of data', - key: 'lunar.pagination.loadFirst', - }, - )} + accessibilityLabel={T.phrase('lunar.pagination.loadFirst', 'Load first page')} size={4 * theme!.unit} /> @@ -139,14 +118,7 @@ function Pagination({ direction="right" left={IconFirst} right={IconLast} - accessibilityLabel={T.phrase( - 'Load last page', - {}, - { - context: 'Load last page when paginating sets of data', - key: 'lunar.pagination.loadLast', - }, - )} + accessibilityLabel={T.phrase('lunar.pagination.loadLast', 'Load last page')} size={4 * theme!.unit} /> @@ -160,7 +132,6 @@ function Pagination({ phrase="%{pageNumber} of %{pageCount}" pageCount={pageCount} pageNumber={page} - context="Showing the current page number and total page count" /> ) : ( page @@ -175,7 +146,6 @@ function Pagination({ pageLabel={pageLabel} pageCount={pageCount} pageNumber={page} - context="Showing the current page number and total page count" /> ) : ( ); } diff --git a/packages/core/src/components/Proofreader/ControlBar.tsx b/packages/core/src/components/Proofreader/ControlBar.tsx index d1eba6df6..b841d07bf 100644 --- a/packages/core/src/components/Proofreader/ControlBar.tsx +++ b/packages/core/src/components/Proofreader/ControlBar.tsx @@ -46,7 +46,6 @@ export default function ControlBar({ k="lunar.proofreader.unsupportedLanguage" phrase="Unsupported language %{locale}" locale={unsupportedLocale ?? 'unknown'} - context="Language is not supported for spelling detection" /> )} @@ -79,7 +78,6 @@ export default function ControlBar({ k="lunar.proofreader.totalIssues" phrase="%{smartCount} issue||||%{smartCount} issues" smartCount={errors.length} - context="Showing the number of misspellings in a paragraph of text" /> diff --git a/packages/core/src/components/Proofreader/ErrorMenu.tsx b/packages/core/src/components/Proofreader/ErrorMenu.tsx index c7c21f4f7..dcc36c6d2 100644 --- a/packages/core/src/components/Proofreader/ErrorMenu.tsx +++ b/packages/core/src/components/Proofreader/ErrorMenu.tsx @@ -19,23 +19,9 @@ export default class ErrorMenu extends React.Component { private replacementText = (replacement: string) => { switch (replacement) { case ' ': - return T.phrase( - '(Space)', - {}, - { - context: 'Represents a space character within the spell checker', - key: 'lunar.proofreader.whiteSpace', - }, - ); + return T.phrase('lunar.proofreader.whiteSpace', '(Space)'); case '': - return T.phrase( - 'Delete', - {}, - { - context: 'Represents deleting within the spell checker', - key: 'lunar.proofreader.delete', - }, - ); + return T.phrase('lunar.proofreader.delete', 'Delete'); default: return replacement; } @@ -48,12 +34,8 @@ export default class ErrorMenu extends React.Component { diff --git a/packages/core/src/components/Proofreader/LocaleMenu.tsx b/packages/core/src/components/Proofreader/LocaleMenu.tsx index bd7405a99..42829c481 100644 --- a/packages/core/src/components/Proofreader/LocaleMenu.tsx +++ b/packages/core/src/components/Proofreader/LocaleMenu.tsx @@ -27,22 +27,11 @@ export default class LocaleMenu extends React.Component { return ( - + diff --git a/packages/core/src/components/Proofreader/helpers.ts b/packages/core/src/components/Proofreader/helpers.ts index ac27e4b80..968c36af9 100644 --- a/packages/core/src/components/Proofreader/helpers.ts +++ b/packages/core/src/components/Proofreader/helpers.ts @@ -48,28 +48,14 @@ export function getLocaleDefinition(locale: string): LocaleDefinition { if (locale === NO_LOCALE) { return { locale, - label: T.phrase( - 'No language selected', - {}, - { - context: 'No language selected for spell and grammar checking', - key: 'lunar.proofreader.noLanguageSelected', - }, - ), + label: T.phrase('lunar.proofreader.noLanguageSelected', 'No language selected'), }; } if (locale === AUTO_DETECT_LOCALE) { return { locale, - label: T.phrase( - 'Auto-detect language', - {}, - { - context: 'Auto-detect language for spell and grammar checking', - key: 'lunar.proofreader.autoDetectLanguage', - }, - ), + label: T.phrase('lunar.proofreader.autoDetectLanguage', 'Auto-detect language'), }; } @@ -90,12 +76,8 @@ export function checkForAirbnbErrors(text: string): ProofreadRuleMatch[] { customErrors.push({ short_message: '', message: T.phrase( + 'lunar.proofreader.misspellingLabel', 'Improper company spelling or casing', - {}, - { - context: 'Error message when Airbnb is used incorrectly', - key: 'lunar.proofreader.misspellingLabel', - }, ), offset: AIRBNB_REGEX.lastIndex - match[0].length, length: match[0].length, diff --git a/packages/core/src/components/Sheet/index.tsx b/packages/core/src/components/Sheet/index.tsx index 2163826be..c7f79bd45 100644 --- a/packages/core/src/components/Sheet/index.tsx +++ b/packages/core/src/components/Sheet/index.tsx @@ -183,11 +183,7 @@ export class BaseSheet extends React.Component diff --git a/packages/core/src/components/TextArea/index.tsx b/packages/core/src/components/TextArea/index.tsx index 49af15274..182b870d1 100644 --- a/packages/core/src/components/TextArea/index.tsx +++ b/packages/core/src/components/TextArea/index.tsx @@ -55,7 +55,6 @@ export default class TextArea extends React.Component { phrase="%{current}/%{max} characters used" current={inputProps.value!.length.toLocaleString()} max={inputProps.maxLength.toLocaleString()} - context="Showing the current and max characters within a form textarea" /> )); diff --git a/packages/core/src/components/Toast/index.tsx b/packages/core/src/components/Toast/index.tsx index 4f166c908..b49ac41af 100644 --- a/packages/core/src/components/Toast/index.tsx +++ b/packages/core/src/components/Toast/index.tsx @@ -146,11 +146,7 @@ export class Toast extends React.Component {
@@ -168,14 +164,7 @@ export class Toast extends React.Component {
- +
diff --git a/packages/core/src/components/Translate/index.tsx b/packages/core/src/components/Translate/index.tsx index e4047581d..6551cc068 100644 --- a/packages/core/src/components/Translate/index.tsx +++ b/packages/core/src/components/Translate/index.tsx @@ -4,29 +4,25 @@ import { TranslateParams, TranslateProps, TranslateOptions } from '../../types'; export type Props = TranslateProps; -/** Translate a phrase with a key, informational context, and dynamic params. */ +/** Translate a phrase with a key and dynamic params. */ export default class Translate extends React.PureComponent { static defaultProps = { html: false, }; - static phrase( - phrase: string, - params?: TranslateParams | null, - options?: string | TranslateOptions, - ): string { - return Core.translate(phrase, params, options); + static phrase(key: string, phrase: string, params?: TranslateParams): string { + return Core.translate(key, phrase, params); } render() { const { translatorComponent: Translator } = Core.settings; - const { children, k: key, phrase, context, html, ...params } = this.props; - const options: TranslateOptions = { context, html, key }; + const { children, k: key, phrase, html, ...params } = this.props; + const options: TranslateOptions = { html }; if (!Translator) { - return {Core.translate(phrase, params as {}, options)}; + return {Core.translate(key, phrase, params as TranslateParams, options)}; } - return ; + return ; } } diff --git a/packages/core/src/components/Translate/story.tsx b/packages/core/src/components/Translate/story.tsx index e163b45ed..c8db65df6 100644 --- a/packages/core/src/components/Translate/story.tsx +++ b/packages/core/src/components/Translate/story.tsx @@ -12,10 +12,7 @@ export default { export function displayAMessageWithAnEditorRelatedContext() { return ( - + ); } @@ -27,12 +24,7 @@ displayAMessageWithAnEditorRelatedContext.story = { export function interpolateVariablesAlsoSupportHtml() { return ( - Bruce} - context="This message is for translation editors." - /> + Bruce} /> ); } @@ -44,25 +36,13 @@ interpolateVariablesAlsoSupportHtml.story = { export function handleContextualMessagesBasedOnCounts() { return ( - +

- +

- +
); } @@ -72,11 +52,7 @@ handleContextualMessagesBasedOnCounts.story = { }; export function returnAStringInsteadOfRenderingAComponent() { - return ( -
- {T.phrase('Hello %{name}', { name: 'Bruce' }, 'This message is for translation editors.')} -
- ); + return
{T.phrase('key', 'Hello %{name}', { name: 'Bruce' })}
; } returnAStringInsteadOfRenderingAComponent.story = { diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index eea6d71d9..581bf8c97 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -147,17 +147,17 @@ class Core { } translate = ( + key: string, phrase: string, - baseParams?: TranslateParams | null, - options?: string | TranslateOptions, + params: TranslateParams = {}, + options: TranslateOptions = {}, ) => { const { translator } = this.settings; if (translator) { - return translator(phrase, baseParams, options); + return translator(key, phrase, params, options); } - const params = baseParams || {}; let message = phrase; if (phrase.includes('||||')) { @@ -168,7 +168,7 @@ class Core { } // Low-level token interpolation - return message.replace(/%{(\w+)}/g, (match, key) => `${params[key]}`); + return message.replace(/%{(\w+)}/g, (match, k) => `${params[k]}`); }; } diff --git a/packages/core/src/types.ts b/packages/core/src/types.ts index 3a1bf824a..e731d136c 100644 --- a/packages/core/src/types.ts +++ b/packages/core/src/types.ts @@ -7,9 +7,10 @@ import { StyleBlock } from 'aesthetic'; export type Logger = (error: Error, extra: object) => void; export type Translator = ( + key: string, phrase: string, - params?: TranslateParams | null, - options?: string | TranslateOptions, + params?: TranslateParams, + options?: TranslateOptions, ) => string; export type ErrorType = @@ -33,23 +34,19 @@ export type BrandType = 'luxury' | 'plus'; export type TranslateParams = { [param: string]: string | number | undefined }; export type TranslateOptions = { - /** Integration context in which to provide writes & editors. */ - context?: string; /** Phrase message contains HTML. */ html?: boolean; - /** Unique phrase key. */ - key?: string; }; export type TranslateProps = { [param: string]: string | number | boolean | undefined | React.ReactNode; /** Unique phrase key. */ - k?: string; + k: string; /** Default phrase to translate. */ phrase: string; /** Handle counts using a smart number. */ smartCount?: number; -} & Omit; +} & TranslateOptions; // MONEY diff --git a/packages/core/src/utils/getLanguageFromLocale.ts b/packages/core/src/utils/getLanguageFromLocale.ts index cab51b998..8694080db 100644 --- a/packages/core/src/utils/getLanguageFromLocale.ts +++ b/packages/core/src/utils/getLanguageFromLocale.ts @@ -8,71 +8,19 @@ export default function getLanguageFromLocale(locale: Locale): string { if (!loaded) { loaded = true; languages = { - nl: T.phrase( - 'Dutch', - {}, - { key: 'lunar.language.dutch', context: 'Language name within a language selector' }, - ), - en: T.phrase( - 'English', - {}, - { key: 'lunar.language.english', context: 'Language name within a language selector' }, - ), - fr: T.phrase( - 'French', - {}, - { key: 'lunar.language.french', context: 'Language name within a language selector' }, - ), - de: T.phrase( - 'German', - {}, - { key: 'lunar.language.german', context: 'Language name within a language selector' }, - ), - it: T.phrase( - 'Italian', - {}, - { key: 'lunar.language.italian', context: 'Language name within a language selector' }, - ), - ja: T.phrase( - 'Japanese', - {}, - { key: 'lunar.language.japanese', context: 'Language name within a language selector' }, - ), - ko: T.phrase( - 'Korean', - {}, - { key: 'lunar.language.korean', context: 'Language name within a language selector' }, - ), - zh: T.phrase( - 'Mandarin', - {}, - { key: 'lunar.language.mandarin', context: 'Language name within a language selector' }, - ), - ms: T.phrase( - 'Malay', - {}, - { key: 'lunar.language.malay', context: 'Language name within a language selector' }, - ), - pt: T.phrase( - 'Portuguese', - {}, - { key: 'lunar.language.portuguese', context: 'Language name within a language selector' }, - ), - ru: T.phrase( - 'Russian', - {}, - { key: 'lunar.language.russian', context: 'Language name within a language selector' }, - ), - es: T.phrase( - 'Spanish', - {}, - { key: 'lunar.language.spanish', context: 'Language name within a language selector' }, - ), - tr: T.phrase( - 'Turkish', - {}, - { key: 'lunar.language.turkish', context: 'Language name within a language selector' }, - ), + nl: T.phrase('lunar.language.dutch', 'Dutch'), + en: T.phrase('lunar.language.english', 'English'), + fr: T.phrase('lunar.language.french', 'French'), + de: T.phrase('lunar.language.german', 'German'), + it: T.phrase('lunar.language.italian', 'Italian'), + ja: T.phrase('lunar.language.japanese', 'Japanese'), + ko: T.phrase('lunar.language.korean', 'Korean'), + zh: T.phrase('lunar.language.mandarin', 'Mandarin'), + ms: T.phrase('lunar.language.malay', 'Malay'), + pt: T.phrase('lunar.language.portuguese', 'Portuguese'), + ru: T.phrase('lunar.language.russian', 'Russian'), + es: T.phrase('lunar.language.spanish', 'Spanish'), + tr: T.phrase('lunar.language.turkish', 'Turkish'), }; } diff --git a/packages/core/src/utils/getMemberName.ts b/packages/core/src/utils/getMemberName.ts index 3147a5848..7b9995abb 100644 --- a/packages/core/src/utils/getMemberName.ts +++ b/packages/core/src/utils/getMemberName.ts @@ -13,14 +13,7 @@ export default function getMemberName( copy: string = '', ): string { if (!member.first_name) { - return ( - copy || - T.phrase( - 'Unknown member', - {}, - { key: 'lunar.common.unknownMember', context: 'Member name does not exist' }, - ) - ); + return copy || T.phrase('lunar.common.unknownMember', 'Unknown member'); } const firstName = member.first_name; diff --git a/packages/core/test/components/Autocomplete.test.tsx b/packages/core/test/components/Autocomplete.test.tsx index 0031f4920..b6167c89c 100644 --- a/packages/core/test/components/Autocomplete.test.tsx +++ b/packages/core/test/components/Autocomplete.test.tsx @@ -791,11 +791,7 @@ describe('', () => { const row = shallow(instance.renderNoResults()); expect(row.find(Text).prop('children')).toEqual( - , + , ); }); diff --git a/packages/core/test/components/ErrorBoundary/__snapshots__/Tripped.test.tsx.snap b/packages/core/test/components/ErrorBoundary/__snapshots__/Tripped.test.tsx.snap index 549aca6d7..0f3398a8f 100644 --- a/packages/core/test/components/ErrorBoundary/__snapshots__/Tripped.test.tsx.snap +++ b/packages/core/test/components/ErrorBoundary/__snapshots__/Tripped.test.tsx.snap @@ -5,7 +5,6 @@ exports[` will render an alert with a message 1`] = ` danger={true} title={ will render an alert with a message 1`] = ` } > diff --git a/packages/core/test/components/ErrorMessage.test.tsx b/packages/core/test/components/ErrorMessage.test.tsx index 15f23c131..93bc81269 100644 --- a/packages/core/test/components/ErrorMessage.test.tsx +++ b/packages/core/test/components/ErrorMessage.test.tsx @@ -97,13 +97,7 @@ describe('', () => { const alert = wrapper.find(Alert); expect(alert).toHaveLength(1); - expect(alert.prop('title')).toEqual( - , - ); + expect(alert.prop('title')).toEqual(); expect(alert.contains('Failure')).toBe(true); }); @@ -166,13 +160,7 @@ describe('', () => { wrapper .find(Alert) .find(MutedButton) - .contains( - , - ), + .contains(), ).toBe(false); wrapper.setProps({ @@ -186,13 +174,7 @@ describe('', () => { wrapper .find(Alert) .find(MutedButton) - .contains( - , - ), + .contains(), ).toBe(true); expect( typeof wrapper diff --git a/packages/core/test/components/LabeledDivider.test.tsx b/packages/core/test/components/LabeledDivider.test.tsx index 660993984..6e29f0c80 100644 --- a/packages/core/test/components/LabeledDivider.test.tsx +++ b/packages/core/test/components/LabeledDivider.test.tsx @@ -12,7 +12,7 @@ describe('', () => { }); it('renders a translation node as expected', () => { - const t = ; + const t = ; const wrapper = shallow(); expect(wrapper.contains(t)).toBe(true); diff --git a/packages/core/test/components/TextArea.test.tsx b/packages/core/test/components/TextArea.test.tsx index 4fae6bc3d..9b5b92074 100644 --- a/packages/core/test/components/TextArea.test.tsx +++ b/packages/core/test/components/TextArea.test.tsx @@ -84,7 +84,6 @@ describe('