diff --git a/e2e/features/animation/animation-test.spec.js b/e2e/features/animation/animation-test.spec.js index 5f178c311b..1f2d778f60 100644 --- a/e2e/features/animation/animation-test.spec.js +++ b/e2e/features/animation/animation-test.spec.js @@ -64,8 +64,8 @@ test('Disable playback when max frames exceeded', async () => { const { playButton, yearStartInput } = selectors await page.goto(animationGeostationary) await closeModal(page) - const animateYearDown = page.locator('.wv-date-range-selector > div > div > div:nth-child(3) > svg > .downarrow').first() - const animateYearUp = page.locator('.wv-date-range-selector > div > div > div > svg > .uparrow').first() + const animateYearDown = page.locator('.wv-date-range-selector > div > div > div:nth-child(3) > svg.downarrow').first() + const animateYearUp = page.locator('.wv-date-range-selector > div > div > div > svg.uparrow').first() await animateYearDown.click() await expect(playButton).toHaveClass(/disabled/) // Playback re-enabled when frames within the max diff --git a/e2e/features/share/share-test.spec.js b/e2e/features/share/share-test.spec.js index 81b81fd800..3dc630f5d8 100644 --- a/e2e/features/share/share-test.spec.js +++ b/e2e/features/share/share-test.spec.js @@ -54,7 +54,7 @@ test('Share link clipboard with no time query string param in the page url will const queryString = 'http://localhost:3000/' await page.goto(queryString) await closeModal(page) - await page.getByRole('button', { name: '×' }).click() + await page.locator('.tour-close-btn').click() await shareToolbarButton.click() const minutesOffset = 40 * 60000 // 40 minutes let date = new Date(new Date().getTime() - minutesOffset) diff --git a/e2e/features/timeline/date-selector-test.spec.js b/e2e/features/timeline/date-selector-test.spec.js index b6bfd88e57..2405262c23 100644 --- a/e2e/features/timeline/date-selector-test.spec.js +++ b/e2e/features/timeline/date-selector-test.spec.js @@ -50,7 +50,7 @@ test('Left timeline arrow will not be disabled by default', async () => { const queryString = 'http://localhost:3000/' await page.goto(queryString) await closeModal(page) - await page.getByRole('button', { name: '×' }).click() + await page.locator('.tour-close-btn').click() const leftArrow = await page.locator('#left-arrow-group') await expect(leftArrow).not.toHaveClass(/button-disabled/) }) @@ -59,7 +59,7 @@ test('Left timeline arrow will not be disabled by default', async () => { // test.only('Right timeline arrow will be disabled by default', async () => { // const queryString = 'http://localhost:3000/' // await page.goto(queryString) -// await page.getByRole('button', { name: '×' }).click() +// await page.locator('.tour-close-btn').click() // const rightArrow = await page.locator('#right-arrow-group') // await expect(rightArrow).toHaveClass(/button-disabled/) // }) @@ -68,7 +68,7 @@ test('Left timeline arrow will not be disabled by default', async () => { // test('Now button will be disabled by default', async () => { // const queryString = 'http://localhost:3000/' // await page.goto(queryString) -// await page.getByRole('button', { name: '×' }).click() +// await page.locator('.tour-close-btn').click() // const nowButton = page.locator('#now-button-group') // await expect(nowButton).toHaveClass(/button-disabled/) // }) diff --git a/e2e/test-utils/global-variables/selectors.js b/e2e/test-utils/global-variables/selectors.js index 9fde650d79..659a20c44f 100644 --- a/e2e/test-utils/global-variables/selectors.js +++ b/e2e/test-utils/global-variables/selectors.js @@ -15,8 +15,8 @@ module.exports = (page) => ({ animationButtonCase: page.locator('#timeline-header .animate-button'), animationButton: page.locator('.animate-button'), playButton: page.locator('#play-button'), - animateYearUp: page.locator('.wv-date-range-selector > div > div:nth-child(2) > div > svg > .uparrow'), - animateYearDown: page.locator('.wv-date-range-selector > div > div > div:nth-child(3) > svg > .downarrow'), + animateYearUp: page.locator('.wv-date-range-selector > div > div:nth-child(2) > div > svg.uparrow'), + animateYearDown: page.locator('.wv-date-range-selector > div > div > div:nth-child(3) > svg.downarrow'), yearStartInput: page.locator('#year-animation-widget-start'), monthStartInput: page.locator('#month-animation-widget-start'), dayStartInput: page.locator('#day-animation-widget-start'), diff --git a/package-lock.json b/package-lock.json index 87e430be55..c43a6aa922 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,7 @@ "hasInstallScript": true, "license": "NASA-1.3", "dependencies": { + "@edsc/earthdata-react-icons": "^0.0.2", "@elastic/react-search-ui": "^1.21.5", "@elastic/react-search-ui-views": "^1.21.2", "@fortawesome/fontawesome-svg-core": "^6.6.0", @@ -2003,6 +2004,15 @@ "node": ">=10.0.0" } }, + "node_modules/@edsc/earthdata-react-icons": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@edsc/earthdata-react-icons/-/earthdata-react-icons-0.0.2.tgz", + "integrity": "sha512-2E++Sd1CQiB2RQ17Hq+/6ftjfiuiH1a3FVevNKYLLgxipefOv70q2lFEW0VyhTX4kt8rCXPLZGA0CzMnzu0srQ==", + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + } + }, "node_modules/@elastic/react-search-ui": { "version": "1.21.5", "license": "Apache-2.0", diff --git a/package.json b/package.json index 68eb032a8c..c3f6e45a2f 100644 --- a/package.json +++ b/package.json @@ -146,6 +146,7 @@ "yargs": "^17.7.2" }, "dependencies": { + "@edsc/earthdata-react-icons": "^0.0.2", "@elastic/react-search-ui": "^1.21.5", "@elastic/react-search-ui-views": "^1.21.2", "@fortawesome/fontawesome-svg-core": "^6.6.0", diff --git a/web/.eslintrc b/web/.eslintrc index 1790df5a14..2b60e11521 100644 --- a/web/.eslintrc +++ b/web/.eslintrc @@ -25,7 +25,11 @@ }, "import/resolver": { "webpack": {} - } + }, + "import/core-modules": [ + "@edsc/earthdata-react-icons/horizon-design-system/earthdata/ui", + "@edsc/earthdata-react-icons/horizon-design-system/hds/ui" + ] }, "rules": { // The following rules are cases where our base rules diff --git a/web/fonts/Inter/Inter-Light.ttf b/web/fonts/Inter/Inter-Light.ttf new file mode 100644 index 0000000000..acae361282 Binary files /dev/null and b/web/fonts/Inter/Inter-Light.ttf differ diff --git a/web/fonts/Inter/Inter-Medium.ttf b/web/fonts/Inter/Inter-Medium.ttf new file mode 100644 index 0000000000..71d90172f1 Binary files /dev/null and b/web/fonts/Inter/Inter-Medium.ttf differ diff --git a/web/fonts/PublicSans/PublicSans-Regular.ttf b/web/fonts/PublicSans/PublicSans-Regular.ttf new file mode 100644 index 0000000000..8afd7e0a17 Binary files /dev/null and b/web/fonts/PublicSans/PublicSans-Regular.ttf differ diff --git a/web/fonts/PublicSans/PublicSans-VariableFont_wght.ttf b/web/fonts/PublicSans/PublicSans-VariableFont_wght.ttf new file mode 100644 index 0000000000..bc53efc12a Binary files /dev/null and b/web/fonts/PublicSans/PublicSans-VariableFont_wght.ttf differ diff --git a/web/js/components/layer/product-picker/search/search-layer-row.js b/web/js/components/layer/product-picker/search/search-layer-row.js index 611d79be9a..e3cf77e96f 100644 --- a/web/js/components/layer/product-picker/search/search-layer-row.js +++ b/web/js/components/layer/product-picker/search/search-layer-row.js @@ -3,6 +3,7 @@ import { connect } from 'react-redux'; import PropTypes from 'prop-types'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { Button, UncontrolledTooltip } from 'reactstrap'; +import { Check } from '@edsc/earthdata-react-icons/horizon-design-system/hds/ui'; import { addLayer as addLayerAction, removeLayer as removeLayerAction, @@ -129,7 +130,7 @@ class SearchLayerRow extends React.Component { onMouseEnter={() => this.toggleDeleteIcon(true)} onMouseLeave={() => this.toggleDeleteIcon(false)} > -
+
+ {isEnabled && ( + + )}
{layerNotices && (
diff --git a/web/js/components/layer/settings/associated-layers-toggle.js b/web/js/components/layer/settings/associated-layers-toggle.js index 68b1763ce4..360a851193 100644 --- a/web/js/components/layer/settings/associated-layers-toggle.js +++ b/web/js/components/layer/settings/associated-layers-toggle.js @@ -38,6 +38,7 @@ function AssociatedLayersToggle(props) { onChangePalette(id)} /> + {isSelected && ( + + )}