diff --git a/src/frontend-platform.d.ts b/src/frontend-platform.d.ts new file mode 100644 index 000000000..d9b2f7f91 --- /dev/null +++ b/src/frontend-platform.d.ts @@ -0,0 +1,41 @@ +// frontend-platform currently doesn't provide types... do it ourselves for i18n module at least. +// We can remove this in the future when we migrate to frontend-shell, or when frontend-platform gets types +// (whichever comes first). + +declare module '@edx/frontend-platform/i18n' { + // eslint-disable-next-line import/no-extraneous-dependencies + import { injectIntl as _injectIntl } from 'react-intl'; + /** @deprecated Use useIntl() hook instead. */ + export const injectIntl: typeof _injectIntl; + /** @deprecated Use useIntl() hook instead. */ + export const intlShape: any; + + // eslint-disable-next-line import/no-extraneous-dependencies + export { + createIntl, + FormattedDate, + FormattedTime, + FormattedRelativeTime, + FormattedNumber, + FormattedPlural, + FormattedMessage, + defineMessages, + IntlProvider, + useIntl, + } from 'react-intl'; + + // Other exports from the i18n module: + export const configure: any; + export const getPrimaryLanguageSubtag: (code: string) => string; + export const getLocale: (locale?: string) => string; + export const getMessages: any; + export const isRtl: (locale?: string) => boolean; + export const handleRtl: any; + export const mergeMessages: any; + export const LOCALE_CHANGED: any; + export const LOCALE_TOPIC: any; + export const getCountryList: any; + export const getCountryMessages: any; + export const getLanguageList: any; + export const getLanguageMessages: any; +} diff --git a/src/library-authoring/add-content/messages.ts b/src/library-authoring/add-content/messages.ts index 8cc2db3c9..4d84d344e 100644 --- a/src/library-authoring/add-content/messages.ts +++ b/src/library-authoring/add-content/messages.ts @@ -1,8 +1,4 @@ -import { defineMessages as _defineMessages } from '@edx/frontend-platform/i18n'; -import type { defineMessages as defineMessagesType } from 'react-intl'; - -// frontend-platform currently doesn't provide types... do it ourselves. -const defineMessages = _defineMessages as typeof defineMessagesType; +import { defineMessages } from '@edx/frontend-platform/i18n'; const messages = defineMessages({ collectionButton: { diff --git a/src/library-authoring/component-info/messages.ts b/src/library-authoring/component-info/messages.ts index 32251fce3..000a51946 100644 --- a/src/library-authoring/component-info/messages.ts +++ b/src/library-authoring/component-info/messages.ts @@ -1,8 +1,4 @@ -import { defineMessages as _defineMessages } from '@edx/frontend-platform/i18n'; -import type { defineMessages as defineMessagesType } from 'react-intl'; - -// frontend-platform currently doesn't provide types... do it ourselves. -const defineMessages = _defineMessages as typeof defineMessagesType; +import { defineMessages } from '@edx/frontend-platform/i18n'; const messages = defineMessages({ editNameButtonAlt: { diff --git a/src/library-authoring/components/messages.ts b/src/library-authoring/components/messages.ts index 7802cd479..50c085b16 100644 --- a/src/library-authoring/components/messages.ts +++ b/src/library-authoring/components/messages.ts @@ -1,9 +1,4 @@ -import { defineMessages as _defineMessages } from '@edx/frontend-platform/i18n'; - -import type { defineMessages as defineMessagesType } from 'react-intl'; - -// frontend-platform currently doesn't provide types... do it ourselves. -const defineMessages = _defineMessages as typeof defineMessagesType; +import { defineMessages } from '@edx/frontend-platform/i18n'; const messages = defineMessages({ componentCardMenuAlt: { diff --git a/src/library-authoring/library-info/LibraryInfo.tsx b/src/library-authoring/library-info/LibraryInfo.tsx index b14b8d621..e8e190a05 100644 --- a/src/library-authoring/library-info/LibraryInfo.tsx +++ b/src/library-authoring/library-info/LibraryInfo.tsx @@ -33,7 +33,7 @@ const LibraryInfo = ({ library } : LibraryInfoProps) => { { { let isNewResult = false; let statusMessageResult : string; let extraStatusMessageResult : string | undefined; - let bodyMessageResult : string | undefined; + let bodyMessageResult : React.ReactNode | undefined; const buildDate = ((date : string) => ( diff --git a/src/library-authoring/messages.ts b/src/library-authoring/messages.ts index 9a61dc9ed..0f9bdfbd5 100644 --- a/src/library-authoring/messages.ts +++ b/src/library-authoring/messages.ts @@ -1,8 +1,4 @@ -import { defineMessages as _defineMessages } from '@edx/frontend-platform/i18n'; -import type { defineMessages as defineMessagesType } from 'react-intl'; - -// frontend-platform currently doesn't provide types... do it ourselves. -const defineMessages = _defineMessages as typeof defineMessagesType; +import { defineMessages } from '@edx/frontend-platform/i18n'; const messages = defineMessages({ headingSubtitle: { diff --git a/src/search-manager/messages.ts b/src/search-manager/messages.ts index 2c9eadcca..ebda3cb91 100644 --- a/src/search-manager/messages.ts +++ b/src/search-manager/messages.ts @@ -1,8 +1,4 @@ -import { defineMessages as _defineMessages } from '@edx/frontend-platform/i18n'; -import type { defineMessages as defineMessagesType } from 'react-intl'; - -// frontend-platform currently doesn't provide types... do it ourselves. -const defineMessages = _defineMessages as typeof defineMessagesType; +import { defineMessages } from '@edx/frontend-platform/i18n'; const messages = defineMessages({ clearFilters: { diff --git a/src/search-modal/messages.ts b/src/search-modal/messages.ts index 423122acd..d354ca808 100644 --- a/src/search-modal/messages.ts +++ b/src/search-modal/messages.ts @@ -1,8 +1,4 @@ -import { defineMessages as _defineMessages } from '@edx/frontend-platform/i18n'; -import type { defineMessages as defineMessagesType } from 'react-intl'; - -// frontend-platform currently doesn't provide types... do it ourselves. -const defineMessages = _defineMessages as typeof defineMessagesType; +import { defineMessages } from '@edx/frontend-platform/i18n'; const messages = defineMessages({ searchAllCourses: { diff --git a/src/studio-home/card-item/index.jsx b/src/studio-home/card-item/index.jsx index ed84bb2cc..0ed8b178b 100644 --- a/src/studio-home/card-item/index.jsx +++ b/src/studio-home/card-item/index.jsx @@ -1,3 +1,4 @@ +/* eslint-disable react/require-default-props */ import React from 'react'; import { useSelector } from 'react-redux'; import PropTypes from 'prop-types'; @@ -20,14 +21,14 @@ import { trimSlashes } from './utils'; const CardItem = ({ intl, displayName, - lmsLink, - rerunLink, + lmsLink = '', + rerunLink = '', org, number, - run, - isLibraries, - courseKey, - isPaginated, + run = '', + isLibraries = false, + courseKey = '', + isPaginated = false, url, }) => { const { @@ -105,15 +106,6 @@ const CardItem = ({ ); }; -CardItem.defaultProps = { - isLibraries: false, - isPaginated: false, - courseKey: '', - rerunLink: '', - lmsLink: '', - run: '', -}; - CardItem.propTypes = { intl: intlShape.isRequired, displayName: PropTypes.string.isRequired, diff --git a/src/studio-home/tabs-section/libraries-v2-tab/libraries-v2-filters/libraries-v2-order-filter-menu/messages.ts b/src/studio-home/tabs-section/libraries-v2-tab/libraries-v2-filters/libraries-v2-order-filter-menu/messages.ts index 0826a32ea..de104193d 100644 --- a/src/studio-home/tabs-section/libraries-v2-tab/libraries-v2-filters/libraries-v2-order-filter-menu/messages.ts +++ b/src/studio-home/tabs-section/libraries-v2-tab/libraries-v2-filters/libraries-v2-order-filter-menu/messages.ts @@ -1,8 +1,4 @@ -import { defineMessages as _defineMessages } from '@edx/frontend-platform/i18n'; -import type { defineMessages as defineMessagesType } from 'react-intl'; - -// frontend-platform currently doesn't provide types... do it ourselves. -const defineMessages = _defineMessages as typeof defineMessagesType; +import { defineMessages } from '@edx/frontend-platform/i18n'; const messages = defineMessages({ librariesV2OrderFilterMenuAscendantLibrariesV2: {