diff --git a/app/_locales/en/messages.json b/app/_locales/en/messages.json index e98ed9382..c2b8bf3d6 100644 --- a/app/_locales/en/messages.json +++ b/app/_locales/en/messages.json @@ -989,7 +989,7 @@ "message": "Backup gas price is provided as the main gas estimation service is unavailable right now." }, "eth_accounts": { - "message": "View the addresses of your permitted accounts (required)", + "message": "See address, account balance, activity and initiate transactions", "description": "The description for the `eth_accounts` permission" }, "ethereumPublicAddress": { @@ -2036,15 +2036,9 @@ "message": "You have (1) pending transaction.", "description": "$1 is count of pending transactions" }, - "permissionCheckedIconDescription": { - "message": "You have approved this permission" - }, "permissionRequest": { "message": "Permission request" }, - "permissionUncheckedIconDescription": { - "message": "You have not approved this permission" - }, "permissions": { "message": "Permissions" }, diff --git a/app/_locales/es/messages.json b/app/_locales/es/messages.json index dfa9b60f3..c285d4ecd 100644 --- a/app/_locales/es/messages.json +++ b/app/_locales/es/messages.json @@ -1343,12 +1343,6 @@ "pending": { "message": "Pendiente" }, - "permissionCheckedIconDescription": { - "message": "Aprobó este permiso" - }, - "permissionUncheckedIconDescription": { - "message": "No aprobó este permiso" - }, "permissions": { "message": "Permisos" }, diff --git a/app/_locales/es_419/messages.json b/app/_locales/es_419/messages.json index dfa9b60f3..c285d4ecd 100644 --- a/app/_locales/es_419/messages.json +++ b/app/_locales/es_419/messages.json @@ -1343,12 +1343,6 @@ "pending": { "message": "Pendiente" }, - "permissionCheckedIconDescription": { - "message": "Aprobó este permiso" - }, - "permissionUncheckedIconDescription": { - "message": "No aprobó este permiso" - }, "permissions": { "message": "Permisos" }, diff --git a/app/_locales/hi/messages.json b/app/_locales/hi/messages.json index eabbe333d..76bcfa33a 100644 --- a/app/_locales/hi/messages.json +++ b/app/_locales/hi/messages.json @@ -1343,12 +1343,6 @@ "pending": { "message": "लंबित" }, - "permissionCheckedIconDescription": { - "message": "आपने इस अनुमति को अनुमोदित कर दिया है" - }, - "permissionUncheckedIconDescription": { - "message": "आपने इस अनुमति को अनुमोदित नहीं किया है" - }, "permissions": { "message": "अनुमतियाँ" }, diff --git a/app/_locales/id/messages.json b/app/_locales/id/messages.json index b3d4f6679..b51c53922 100644 --- a/app/_locales/id/messages.json +++ b/app/_locales/id/messages.json @@ -1343,12 +1343,6 @@ "pending": { "message": "Tunda" }, - "permissionCheckedIconDescription": { - "message": "Anda telah menyetujui izin ini" - }, - "permissionUncheckedIconDescription": { - "message": "Anda belum menyetujui izin ini" - }, "permissions": { "message": "Izin" }, diff --git a/app/_locales/it/messages.json b/app/_locales/it/messages.json index 640ad8ba6..2bb25faee 100644 --- a/app/_locales/it/messages.json +++ b/app/_locales/it/messages.json @@ -1102,12 +1102,6 @@ "pending": { "message": "in corso" }, - "permissionCheckedIconDescription": { - "message": "Hai approvato questo permesso" - }, - "permissionUncheckedIconDescription": { - "message": "Non hai approvato questo permesso" - }, "permissions": { "message": "Permessi" }, diff --git a/app/_locales/ja/messages.json b/app/_locales/ja/messages.json index cb626fa73..62f1c0687 100644 --- a/app/_locales/ja/messages.json +++ b/app/_locales/ja/messages.json @@ -1343,12 +1343,6 @@ "pending": { "message": "処理" }, - "permissionCheckedIconDescription": { - "message": "この許可の承認が完了しました。" - }, - "permissionUncheckedIconDescription": { - "message": "この許可の承認が完了していません。" - }, "permissions": { "message": "許可" }, diff --git a/app/_locales/ko/messages.json b/app/_locales/ko/messages.json index b4bcaa6f8..b05424689 100644 --- a/app/_locales/ko/messages.json +++ b/app/_locales/ko/messages.json @@ -1343,12 +1343,6 @@ "pending": { "message": "보류 중" }, - "permissionCheckedIconDescription": { - "message": "이 권한을 승인했습니다." - }, - "permissionUncheckedIconDescription": { - "message": "이 권한을 승인하지 않았습니다." - }, "permissions": { "message": "권한" }, diff --git a/app/_locales/ph/messages.json b/app/_locales/ph/messages.json index a821a4374..24a44bde6 100644 --- a/app/_locales/ph/messages.json +++ b/app/_locales/ph/messages.json @@ -1343,12 +1343,6 @@ "pending": { "message": "Nakabinbin" }, - "permissionCheckedIconDescription": { - "message": "Inaprubahan mo ang pahintulot na ito" - }, - "permissionUncheckedIconDescription": { - "message": "Hindi mo inaprubahan ang pahintulot na ito" - }, "permissions": { "message": "Mga Pahintulot" }, diff --git a/app/_locales/pt_BR/messages.json b/app/_locales/pt_BR/messages.json index 6ea9d5a1a..c259784cc 100644 --- a/app/_locales/pt_BR/messages.json +++ b/app/_locales/pt_BR/messages.json @@ -1343,12 +1343,6 @@ "pending": { "message": "Pendente" }, - "permissionCheckedIconDescription": { - "message": "Você aprovou esta permissão" - }, - "permissionUncheckedIconDescription": { - "message": "Você não aprovou esta permissão" - }, "permissions": { "message": "Permissões" }, diff --git a/app/_locales/ru/messages.json b/app/_locales/ru/messages.json index 9fa8ea319..00aa12c5b 100644 --- a/app/_locales/ru/messages.json +++ b/app/_locales/ru/messages.json @@ -1343,12 +1343,6 @@ "pending": { "message": "В ожидании" }, - "permissionCheckedIconDescription": { - "message": "Вы одобрили это разрешение" - }, - "permissionUncheckedIconDescription": { - "message": "Вы не одобрили это разрешение" - }, "permissions": { "message": "Разрешения" }, diff --git a/app/_locales/tl/messages.json b/app/_locales/tl/messages.json index 0c7649881..b6f6cd465 100644 --- a/app/_locales/tl/messages.json +++ b/app/_locales/tl/messages.json @@ -1093,12 +1093,6 @@ "pending": { "message": "Nakabinbin" }, - "permissionCheckedIconDescription": { - "message": "Inaprubahan mo ang pahintulot na ito" - }, - "permissionUncheckedIconDescription": { - "message": "Hindi mo inaprubahan ang pahintulot na ito" - }, "permissions": { "message": "Mga Pahintulot" }, diff --git a/app/_locales/vi/messages.json b/app/_locales/vi/messages.json index 22523a6f0..68ae1575b 100644 --- a/app/_locales/vi/messages.json +++ b/app/_locales/vi/messages.json @@ -1343,12 +1343,6 @@ "pending": { "message": "Đang chờ xử lý" }, - "permissionCheckedIconDescription": { - "message": "Bạn đã phê duyệt quyền này" - }, - "permissionUncheckedIconDescription": { - "message": "Bạn chưa phê duyệt quyền này" - }, "permissions": { "message": "Quyền" }, diff --git a/app/_locales/zh_CN/messages.json b/app/_locales/zh_CN/messages.json index 92e09313c..61478c59e 100644 --- a/app/_locales/zh_CN/messages.json +++ b/app/_locales/zh_CN/messages.json @@ -1144,12 +1144,6 @@ "pending": { "message": "待处理" }, - "permissionCheckedIconDescription": { - "message": "您已同意该权限" - }, - "permissionUncheckedIconDescription": { - "message": "您还未同意该权限" - }, "permissions": { "message": "权限" }, diff --git a/ui/components/app/app-components.scss b/ui/components/app/app-components.scss index adf1fe63b..a0bc24e8e 100644 --- a/ui/components/app/app-components.scss +++ b/ui/components/app/app-components.scss @@ -32,6 +32,7 @@ @import 'permission-page-container/index'; @import 'permissions-connect-footer/index'; @import 'permissions-connect-header/index'; +@import 'permissions-connect-permission-list/index'; @import 'recovery-phrase-reminder/index'; @import 'step-progress-bar/index.scss'; @import 'selected-account/index'; diff --git a/ui/components/app/permission-page-container/index.scss b/ui/components/app/permission-page-container/index.scss index ffd703e8e..31b0aee83 100644 --- a/ui/components/app/permission-page-container/index.scss +++ b/ui/components/app/permission-page-container/index.scss @@ -23,7 +23,6 @@ } } - &__header { display: flex; flex-direction: column; diff --git a/ui/components/app/permission-page-container/permission-page-container-content/permission-page-container-content.component.js b/ui/components/app/permission-page-container/permission-page-container-content/permission-page-container-content.component.js index 7cacc40c8..dcd5363a1 100644 --- a/ui/components/app/permission-page-container/permission-page-container-content/permission-page-container-content.component.js +++ b/ui/components/app/permission-page-container/permission-page-container-content/permission-page-container-content.component.js @@ -2,7 +2,7 @@ import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; import PermissionsConnectHeader from '../../permissions-connect-header'; import Tooltip from '../../../ui/tooltip'; -import CheckBox from '../../../ui/check-box'; +import PermissionsConnectPermissionList from '../../permissions-connect-permission-list'; export default class PermissionPageContainerContent extends PureComponent { static propTypes = { @@ -14,7 +14,6 @@ export default class PermissionPageContainerContent extends PureComponent { origin: PropTypes.string.isRequired, }), selectedPermissions: PropTypes.object.isRequired, - onPermissionToggle: PropTypes.func.isRequired, selectedIdentities: PropTypes.array, allIdentitiesSelected: PropTypes.bool, }; @@ -29,43 +28,11 @@ export default class PermissionPageContainerContent extends PureComponent { }; renderRequestedPermissions() { - const { selectedPermissions, onPermissionToggle } = this.props; - const { t } = this.context; - - const items = Object.keys(selectedPermissions).map((permissionName) => { - const description = t(permissionName); - // don't allow deselecting eth_accounts - const isDisabled = permissionName === 'eth_accounts'; - const isChecked = Boolean(selectedPermissions[permissionName]); - const title = isChecked - ? t('permissionCheckedIconDescription') - : t('permissionUncheckedIconDescription'); - - return ( -
{ - if (!isDisabled) { - onPermissionToggle(permissionName); - } - }} - > - - -
- ); - }); + const { selectedPermissions } = this.props; return (
- {items} +
); } diff --git a/ui/components/app/permission-page-container/permission-page-container.component.js b/ui/components/app/permission-page-container/permission-page-container.component.js index 2a8daa2f6..6ccd549e1 100644 --- a/ui/components/app/permission-page-container/permission-page-container.component.js +++ b/ui/components/app/permission-page-container/permission-page-container.component.js @@ -62,15 +62,6 @@ export default class PermissionPageContainer extends Component { return Object.keys(props.request.permissions || {}); } - onPermissionToggle = (methodName) => { - this.setState({ - selectedPermissions: { - ...this.state.selectedPermissions, - [methodName]: !this.state.selectedPermissions[methodName], - }, - }); - }; - componentDidMount() { this.context.metricsEvent({ eventOpts: { @@ -129,7 +120,6 @@ export default class PermissionPageContainer extends Component { requestMetadata={requestMetadata} domainMetadata={targetDomainMetadata} selectedPermissions={this.state.selectedPermissions} - onPermissionToggle={this.onPermissionToggle} selectedIdentities={selectedIdentities} allIdentitiesSelected={allIdentitiesSelected} /> diff --git a/ui/components/app/permissions-connect-header/index.scss b/ui/components/app/permissions-connect-header/index.scss index 89297a094..dca87d015 100644 --- a/ui/components/app/permissions-connect-header/index.scss +++ b/ui/components/app/permissions-connect-header/index.scss @@ -9,20 +9,6 @@ display: flex; flex-direction: column; align-items: center; - - .icon-with-fallback__identicon-container, - .icon-with-fallback__identicon-border { - height: 64px; - width: 64px; - } - - .icon-with-fallback__identicon-border { - border: 1px solid $Grey-100; - } - - .icon-with-fallback__identicon-container { - margin-bottom: 8px; - } } &__title { @@ -33,7 +19,6 @@ margin-top: 16px; } - &__text, &__subtitle { @include H6; @@ -41,16 +26,6 @@ color: $Grey-500; } - &__text { - width: 100%; - text-overflow: ellipsis; - overflow: hidden; - margin-top: 8px; - - /*rtl:ignore*/ - direction: rtl; - } - &__subtitle { margin-top: 4px; } diff --git a/ui/components/app/permissions-connect-header/permissions-connect-header.component.js b/ui/components/app/permissions-connect-header/permissions-connect-header.component.js index b0d8920ff..b044a616f 100644 --- a/ui/components/app/permissions-connect-header/permissions-connect-header.component.js +++ b/ui/components/app/permissions-connect-header/permissions-connect-header.component.js @@ -1,6 +1,6 @@ import PropTypes from 'prop-types'; import React, { Component } from 'react'; -import SiteIcon from '../../ui/site-icon'; +import SiteOrigin from '../../ui/site-origin/site-origin'; export default class PermissionsConnectHeader extends Component { static propTypes = { @@ -22,8 +22,7 @@ export default class PermissionsConnectHeader extends Component { return (
- -
{siteOrigin}
+
); } diff --git a/ui/components/app/permissions-connect-permission-list/index.js b/ui/components/app/permissions-connect-permission-list/index.js new file mode 100644 index 000000000..0690579c6 --- /dev/null +++ b/ui/components/app/permissions-connect-permission-list/index.js @@ -0,0 +1 @@ +export { default } from './permissions-connect-permission-list'; diff --git a/ui/components/app/permissions-connect-permission-list/index.scss b/ui/components/app/permissions-connect-permission-list/index.scss new file mode 100644 index 000000000..cc58047bd --- /dev/null +++ b/ui/components/app/permissions-connect-permission-list/index.scss @@ -0,0 +1,22 @@ +.permissions-connect-permission-list { + .permission { + @include H6; + + width: 100%; + padding-bottom: 16px; + border-bottom: 1px solid $Grey-100; + display: flex; + flex-direction: row; + align-items: center; + color: $Black-100; + + i { + display: block; + padding: 16px; + min-width: 16px; + min-height: 16px; + color: $Grey-500; + font-size: 1rem; + } + } +} diff --git a/ui/components/app/permissions-connect-permission-list/permissions-connect-permission-list.js b/ui/components/app/permissions-connect-permission-list/permissions-connect-permission-list.js new file mode 100644 index 000000000..95ed4e912 --- /dev/null +++ b/ui/components/app/permissions-connect-permission-list/permissions-connect-permission-list.js @@ -0,0 +1,33 @@ +import React, { useMemo } from 'react'; +import PropTypes from 'prop-types'; +import { useI18nContext } from '../../../hooks/useI18nContext'; + +export default function PermissionsConnectPermissionList({ permissions }) { + const t = useI18nContext(); + + const PERMISSION_TYPES = useMemo(() => { + return { + eth_accounts: { + leftIcon: 'fas fa-eye', + label: t('eth_accounts'), + rightIcon: null, + }, + }; + }, [t]); + + return ( +
+ {Object.keys(permissions).map((permission) => ( +
+ + {PERMISSION_TYPES[permission].label} + +
+ ))} +
+ ); +} + +PermissionsConnectPermissionList.propTypes = { + permissions: PropTypes.objectOf(PropTypes.bool).isRequired, +}; diff --git a/ui/components/app/permissions-connect-permission-list/permissions-connect-permission-list.stories.js b/ui/components/app/permissions-connect-permission-list/permissions-connect-permission-list.stories.js new file mode 100644 index 000000000..4faa6924d --- /dev/null +++ b/ui/components/app/permissions-connect-permission-list/permissions-connect-permission-list.stories.js @@ -0,0 +1,24 @@ +import React from 'react'; + +import PermissionsConnectList from '.'; + +export default { + title: 'Components/App/PermissionsConnectList', + id: __filename, + component: PermissionsConnectList, + argTypes: { + permissions: { + control: 'object', + }, + }, +}; + +export const DefaultStory = (args) => ; + +DefaultStory.storyName = 'Default'; + +DefaultStory.args = { + permissions: { + eth_accounts: true, + }, +}; diff --git a/ui/components/ui/chip/chip.js b/ui/components/ui/chip/chip.js index e23dd8289..f84534535 100644 --- a/ui/components/ui/chip/chip.js +++ b/ui/components/ui/chip/chip.js @@ -16,6 +16,7 @@ export default function Chip({ leftIcon, rightIcon, onClick, + maxContent = true, }) { const onKeyPress = (event) => { if (event.key === 'Enter' && onClick) { @@ -35,6 +36,7 @@ export default function Chip({ 'chip--with-right-icon': Boolean(rightIcon), [`chip--border-color-${borderColor}`]: true, [`chip--background-color-${backgroundColor}`]: true, + 'chip--max-content': maxContent, })} role={isInteractive ? 'button' : undefined} tabIndex={isInteractive ? 0 : undefined} @@ -99,4 +101,9 @@ Chip.propTypes = { * The onClick handler to be passed to the Chip component */ onClick: PropTypes.func, + /** + * If the width: max-content; is used in css. + * max-content can overflow the parent's width and break designs + */ + maxContent: PropTypes.bool, }; diff --git a/ui/components/ui/chip/chip.scss b/ui/components/ui/chip/chip.scss index a52e37afa..17e96d582 100644 --- a/ui/components/ui/chip/chip.scss +++ b/ui/components/ui/chip/chip.scss @@ -9,7 +9,6 @@ margin: 0 4px; display: flex; align-items: center; - width: max-content; &__left-icon, &__right-icon { @@ -63,4 +62,8 @@ margin-right: 8px; } } + + &--max-content { + width: max-content; + } } diff --git a/ui/components/ui/site-origin/index.js b/ui/components/ui/site-origin/index.js new file mode 100644 index 000000000..280ddb249 --- /dev/null +++ b/ui/components/ui/site-origin/index.js @@ -0,0 +1 @@ +export { default } from './site-origin'; diff --git a/ui/components/ui/site-origin/index.scss b/ui/components/ui/site-origin/index.scss new file mode 100644 index 000000000..16b9f0732 --- /dev/null +++ b/ui/components/ui/site-origin/index.scss @@ -0,0 +1,15 @@ +.site-origin { + .chip__left-icon { + padding: 4px 0 4px 8px; + } + + span { + display: inline-block; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + + /*rtl:ignore*/ + direction: rtl; + } +} diff --git a/ui/components/ui/site-origin/site-origin.js b/ui/components/ui/site-origin/site-origin.js new file mode 100644 index 000000000..2dc545a68 --- /dev/null +++ b/ui/components/ui/site-origin/site-origin.js @@ -0,0 +1,22 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import Chip from '../chip'; +import IconWithFallback from '../icon-with-fallback'; + +export default function SiteOrigin({ siteOrigin, iconSrc, iconName }) { + return ( +
+ } + /> +
+ ); +} + +SiteOrigin.propTypes = { + siteOrigin: PropTypes.string.isRequired, + iconName: PropTypes.string, + iconSrc: PropTypes.string, +}; diff --git a/ui/components/ui/site-origin/site-origin.stories.js b/ui/components/ui/site-origin/site-origin.stories.js new file mode 100644 index 000000000..53a11c190 --- /dev/null +++ b/ui/components/ui/site-origin/site-origin.stories.js @@ -0,0 +1,30 @@ +import React from 'react'; + +import SiteOrigin from '.'; + +export default { + title: 'Components/UI/SiteOrigin', + id: __filename, + component: SiteOrigin, + argTypes: { + siteOrigin: { + control: 'text', + }, + iconSrc: { + control: 'text', + }, + iconName: { + control: 'text', + }, + }, +}; + +export const DefaultStory = (args) => ; + +DefaultStory.storyName = 'Default'; + +DefaultStory.args = { + siteOrigin: 'https://metamask.io', + iconName: 'MetaMask', + iconSrc: './metamark.svg', +}; diff --git a/ui/components/ui/ui-components.scss b/ui/components/ui/ui-components.scss index 34c435acd..30273749e 100644 --- a/ui/components/ui/ui-components.scss +++ b/ui/components/ui/ui-components.scss @@ -45,6 +45,7 @@ @import 'readonly-input/index'; @import 'sender-to-recipient/index'; @import 'snackbar/index'; +@import 'site-origin/index'; @import 'slider/index'; @import 'tabs/index'; @import 'toggle-button/index'; diff --git a/ui/pages/permissions-connect/index.scss b/ui/pages/permissions-connect/index.scss index 197764b8e..716702921 100644 --- a/ui/pages/permissions-connect/index.scss +++ b/ui/pages/permissions-connect/index.scss @@ -24,9 +24,10 @@ } &__back { - @include H6; + @include H7; - color: $Grey-600; + color: $Grey-500; + font-weight: bold; cursor: pointer; i { @@ -37,7 +38,7 @@ &__page-count { @include H7; - color: #6a737d; + color: $Grey-500; grid-column: 2; justify-self: end; font-weight: bold; diff --git a/ui/pages/permissions-connect/permissions-connect.component.js b/ui/pages/permissions-connect/permissions-connect.component.js index 9a487dad3..996ddd383 100644 --- a/ui/pages/permissions-connect/permissions-connect.component.js +++ b/ui/pages/permissions-connect/permissions-connect.component.js @@ -174,7 +174,7 @@ export default class PermissionConnect extends Component { className="permissions-connect__back" onClick={() => this.goBack()} > - + {t('back')} ) : null}