From 25c275cd13d3a3c1ca1441a5f77c5b6aed65ad5a Mon Sep 17 00:00:00 2001 From: MiZiet <55240109+MiZiet@users.noreply.github.com> Date: Tue, 14 Sep 2021 09:03:44 +0200 Subject: [PATCH] Style sort dropdown (#6099) * Style sort dropdown * Use default icons * Use rems * Extract border-input variable --- packages/apps/public/index.html | 1 + packages/page-accounts/src/Accounts/index.tsx | 32 +--- packages/page-claims/src/index.tsx | 2 +- .../page-contracts/src/shared/Messages.tsx | 2 +- packages/react-components/src/Editor.tsx | 2 +- .../src/InputAddressMulti/index.tsx | 2 +- packages/react-components/src/InputFile.tsx | 2 +- packages/react-components/src/InputNumber.tsx | 2 +- .../react-components/src/SortDropdown.tsx | 142 ++++++++++++++++++ packages/react-components/src/index.tsx | 1 + packages/react-components/src/styles/index.ts | 28 ++++ 11 files changed, 182 insertions(+), 34 deletions(-) create mode 100644 packages/react-components/src/SortDropdown.tsx diff --git a/packages/apps/public/index.html b/packages/apps/public/index.html index 297d9fe8fb..c5172318c4 100644 --- a/packages/apps/public/index.html +++ b/packages/apps/public/index.html @@ -17,6 +17,7 @@ --width-full: 1750px; --width-half: 875px; --bg-menu-hover: rgba(255, 255, 255, 0.2); + --border-input: rgba(34, 36, 38, .15); } [data-theme="dark"] { diff --git a/packages/page-accounts/src/Accounts/index.tsx b/packages/page-accounts/src/Accounts/index.tsx index f0f6c71122..b56d46e90f 100644 --- a/packages/page-accounts/src/Accounts/index.tsx +++ b/packages/page-accounts/src/Accounts/index.tsx @@ -9,7 +9,7 @@ import type { AccountBalance, Delegation, SortedAccount } from '../types'; import React, { ReactElement, useCallback, useEffect, useMemo, useRef, useState } from 'react'; import styled from 'styled-components'; -import { Button, Dropdown, Input, SummaryBox, Table } from '@polkadot/react-components'; +import { Button, Input, SortDropdown, SummaryBox, Table } from '@polkadot/react-components'; import { useAccounts, useApi, useCall, useFavorites, useIpfs, useLedger, useLoadingDelay, useToggle } from '@polkadot/react-hooks'; import { keyring } from '@polkadot/ui-keyring'; import { BN_ZERO } from '@polkadot/util'; @@ -273,17 +273,13 @@ function Overview ({ className = '', onStatusChange }: Props): React.ReactElemen className='dropdown-section' data-testid='sort-by-section' > - ('sort by')} onChange={onDropdownChange()} - options={dropdownOptions()} - /> - + + ); +} + +export default React.memo(styled(SortDropdown)` + position: relative; + + display: flex; + flex-direction: row; + flex-wrap: nowrap; + + && .ui--Labelled.ui--Dropdown { + padding: 0; + + label { + left: 1.55rem; + z-index: 115; + } + + .ui.selection.dropdown { + margin:0; + min-width: 7.857rem; + z-index: 110; + + border-width: 1px 0 1px 1px; + border-style: solid; + border-color: var(--border-input); + border-radius: 4px 0 0 4px; + + &.active { + position: absolute; + min-width: 10.714rem; + + z-index: 120; + + border-width: 1px; + border-radius: 4px; + top: 0; + left: 0; + } + + .visible.menu { + border-color: var(--border-input); + } + } + } + + button { + position: relative; + width: 2.857rem; + height: 3.893rem; + + background-color: var(--bg-input); + + border-width: 1px 1px 1px 0; + border-style: solid; + border-color: var(--border-input); + border-radius: 0 4px 4px 0; + + &:hover { + cursor: pointer; + } + + .arrow.down { + position: absolute; + top: calc(50% - 0.5rem); + left: calc(50% - 0.313rem); + } + } + + &::after { + content: ''; + position: absolute; + left: 7.857rem; + top: 10%; + + width: 1px; + height: 80%; + + background-color: var(--border-input); + z-index: 99; + } + + button:hover, + .ui--Labelled.ui--Dropdown:hover { + &::after { + content: ''; + position: absolute; + top: 0; + height: 100%; + width: 1px; + z-index: 100; + } + } + + button:hover::after { + left: 0; + } + + .ui--Labelled.ui--Dropdown:hover::after { + left: 7.857rem; + } +`); diff --git a/packages/react-components/src/index.tsx b/packages/react-components/src/index.tsx index 8a7216dfe8..93ea643113 100644 --- a/packages/react-components/src/index.tsx +++ b/packages/react-components/src/index.tsx @@ -98,5 +98,6 @@ export { default as VoteAccount } from './VoteAccount'; export { default as VoteValue } from './VoteValue'; export { default as TextArea } from './TextArea'; export { default as ExpandButton } from './ExpandButton'; +export { default as SortDropdown } from './SortDropdown'; export { default as media } from './media'; diff --git a/packages/react-components/src/styles/index.ts b/packages/react-components/src/styles/index.ts index 9e13405b9e..5468ebd3be 100644 --- a/packages/react-components/src/styles/index.ts +++ b/packages/react-components/src/styles/index.ts @@ -280,6 +280,34 @@ export default createGlobalStyle(({ theme, uiHighlight }: Pr } } + .ui--Sort { + .ui--Labelled.ui--Dropdown:hover { + .ui.selection.dropdown { + border-color: ${getHighlight(uiHighlight)}; + + .visible.menu { + border: 1px solid ${getHighlight(uiHighlight)}; + } + } + } + + button:hover { + border-color: ${getHighlight(uiHighlight)}; + } + + button:hover, + .ui--Labelled.ui--Dropdown:hover { + &::after { + background-color: ${getHighlight(uiHighlight)}; + } + } + + .arrow.isActive { + color: ${getHighlight(uiHighlight)}; + opacity: 1; + } + } + .theme--dark, .theme--light { .ui--Tabs .tabLinkActive .tabLinkText::after{