diff --git a/res/css/views/rooms/_MessageComposer.scss b/res/css/views/rooms/_MessageComposer.scss index 3a94ee02b0..a403a8dc4c 100644 --- a/res/css/views/rooms/_MessageComposer.scss +++ b/res/css/views/rooms/_MessageComposer.scss @@ -179,6 +179,14 @@ limitations under the License. color: $accent-color; } +.mx_MessageComposer_button_highlight { + background: rgba($accent-color, 0.25); + // make the icon the accent color too + &::before { + background-color: $accent-color !important; + } +} + .mx_MessageComposer_button { position: relative; margin-right: 6px; diff --git a/res/img/icon_copy_message.svg b/res/img/icon_copy_message.svg deleted file mode 100644 index 8d8887bb22..0000000000 --- a/res/img/icon_copy_message.svg +++ /dev/null @@ -1,86 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="19px" - height="19px" - viewBox="0 0 19 19" - version="1.1" - id="svg3734" - sodipodi:docname="icon_copy_message.svg" - inkscape:version="0.92.1 r"> - <metadata - id="metadata3738"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title>ED5D3E59-2561-4AC1-9B43-82FBC51767FC</dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="1596" - inkscape:window-height="846" - id="namedview3736" - showgrid="false" - inkscape:zoom="12.421053" - inkscape:cx="3.4935767" - inkscape:cy="2.469644" - inkscape:window-x="0" - inkscape:window-y="0" - inkscape:window-maximized="1" - inkscape:current-layer="Symbols" /> - <!-- Generator: sketchtool 39.1 (31720) - http://www.bohemiancoding.com/sketch --> - <title - id="title3722">ED5D3E59-2561-4AC1-9B43-82FBC51767FC</title> - <desc - id="desc3724">Created with sketchtool.</desc> - <defs - id="defs3726" /> - <g - id="Symbols" - stroke="none" - stroke-width="1" - fill="none" - fill-rule="evenodd"> - <path - d="M 9.5,19 C 14.746705,19 19,14.746705 19,9.5 19,4.2532949 14.746705,0 9.5,0 4.2532949,0 0,4.2532949 0,9.5 0,14.746705 4.2532949,19 9.5,19 Z" - id="Oval-69" - inkscape:connector-curvature="0" - style="fill:#ececec" /> - <g - id="g4632" - transform="translate(-2.3841858e-7,-1)"> - <rect - style="stroke:#9b9b9b;stroke-width:0.91585475;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - y="4.3017478" - x="4.6289611" - height="10.396504" - width="7.7420783" - id="rect3745-3" /> - <rect - style="fill:#ececec;fill-opacity:1;stroke:#9b9b9b;stroke-width:0.91585475;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - y="6.3017478" - x="6.6289611" - height="10.396504" - width="7.7420783" - id="rect3745" /> - </g> - </g> -</svg> diff --git a/src/accessibility/context_menu/ContextMenuTooltipButton.tsx b/src/accessibility/context_menu/ContextMenuTooltipButton.tsx index 5dc40714ed..abc5412100 100644 --- a/src/accessibility/context_menu/ContextMenuTooltipButton.tsx +++ b/src/accessibility/context_menu/ContextMenuTooltipButton.tsx @@ -25,7 +25,6 @@ interface IProps extends React.ComponentProps<typeof AccessibleTooltipButton> { isExpanded: boolean; } -// TODO: replace this the header buttons and the right panel buttons with a single representation // Semantic component for representing the AccessibleButton which launches a <ContextMenu /> export const ContextMenuTooltipButton: React.FC<IProps> = ({ isExpanded, diff --git a/src/components/views/elements/StyledRadioGroup.tsx b/src/components/views/elements/StyledRadioGroup.tsx index ea8f65d12b..4db627e83e 100644 --- a/src/components/views/elements/StyledRadioGroup.tsx +++ b/src/components/views/elements/StyledRadioGroup.tsx @@ -25,6 +25,7 @@ interface IDefinition<T extends string> { disabled?: boolean; label: React.ReactChild; description?: React.ReactChild; + checked?: boolean; // If provided it will override the value comparison done in the group } interface IProps<T extends string> { @@ -46,7 +47,7 @@ function StyledRadioGroup<T extends string>({name, definitions, value, className <StyledRadioButton className={classNames(className, d.className)} onChange={_onChange} - checked={d.value === value} + checked={d.checked !== undefined ? d.checked : d.value === value} name={name} value={d.value} disabled={d.disabled} diff --git a/src/components/views/rooms/MessageComposer.js b/src/components/views/rooms/MessageComposer.js index 68198d07cd..c4f400c872 100644 --- a/src/components/views/rooms/MessageComposer.js +++ b/src/components/views/rooms/MessageComposer.js @@ -121,10 +121,12 @@ const EmojiButton = ({addEmoji}) => { "mx_MessageComposer_button", "mx_MessageComposer_emoji", { - "mx_RightPanel_headerButton_highlight": menuDisplayed, + "mx_MessageComposer_button_highlight": menuDisplayed, }, ); + // TODO: replace ContextMenuTooltipButton with a unified representation of + // the header buttons and the right panel buttons return <React.Fragment> <ContextMenuTooltipButton className={className} diff --git a/src/components/views/rooms/Stickerpicker.js b/src/components/views/rooms/Stickerpicker.js index f6182838a1..81a8cae892 100644 --- a/src/components/views/rooms/Stickerpicker.js +++ b/src/components/views/rooms/Stickerpicker.js @@ -384,7 +384,7 @@ export default class Stickerpicker extends React.Component { "mx_MessageComposer_button", "mx_MessageComposer_stickers", "mx_Stickers_hideStickers", - "mx_RightPanel_headerButton_highlight", + "mx_MessageComposer_button_highlight", ); if (this.state.showStickers) { // Show hide-stickers button diff --git a/src/components/views/settings/tabs/room/SecurityRoomSettingsTab.js b/src/components/views/settings/tabs/room/SecurityRoomSettingsTab.js index 8b8b82c568..a2170b3cc0 100644 --- a/src/components/views/settings/tabs/room/SecurityRoomSettingsTab.js +++ b/src/components/views/settings/tabs/room/SecurityRoomSettingsTab.js @@ -23,7 +23,7 @@ import LabelledToggleSwitch from "../../../elements/LabelledToggleSwitch"; import {SettingLevel} from "../../../../../settings/SettingsStore"; import Modal from "../../../../../Modal"; import QuestionDialog from "../../../dialogs/QuestionDialog"; -import StyledRadioButton from '../../../elements/StyledRadioButton'; +import StyledRadioGroup from '../../../elements/StyledRadioGroup'; export default class SecurityRoomSettingsTab extends React.Component { static propTypes = { @@ -258,30 +258,33 @@ export default class SecurityRoomSettingsTab extends React.Component { <div> {guestWarning} {aliasWarning} - <StyledRadioButton - name="roomVis" value="invite_only" - disabled={!canChangeAccess} - onChange={this._onRoomAccessRadioToggle} - checked={joinRule !== "public"} - > - {_t('Only people who have been invited')} - </StyledRadioButton> - <StyledRadioButton - name="roomVis" value="public_no_guests" - disabled={!canChangeAccess} - onChange={this._onRoomAccessRadioToggle} - checked={joinRule === "public" && guestAccess !== "can_join"} - > - {_t('Anyone who knows the room\'s link, apart from guests')} - </StyledRadioButton> - <StyledRadioButton - name="roomVis" value="public_with_guests" - disabled={!canChangeAccess} - onChange={this._onRoomAccessRadioToggle} - checked={joinRule === "public" && guestAccess === "can_join"} - > - {_t("Anyone who knows the room's link, including guests")} - </StyledRadioButton> + <StyledRadioGroup + name="roomVis" + value={joinRule} + definitions={[ + { + value: "invite_only", + disabled: !canChangeAccess, + onChange: this._onRoomAccessRadioToggle, + label: _t('Only people who have been invited'), + checked: joinRule !== "public", + }, + { + value: "public_no_guests", + disabled: !canChangeAccess, + onChange: this._onRoomAccessRadioToggle, + label: _t('Anyone who knows the room\'s link, apart from guests'), + checked: joinRule === "public" && guestAccess !== "can_join", + }, + { + value: "public_with_guests", + disabled: !canChangeAccess, + onChange: this._onRoomAccessRadioToggle, + label: _t("Anyone who knows the room's link, including guests"), + checked: joinRule === "public" && guestAccess === "can_join", + }, + ]} + /> </div> ); } @@ -298,38 +301,36 @@ export default class SecurityRoomSettingsTab extends React.Component { {_t('Changes to who can read history will only apply to future messages in this room. ' + 'The visibility of existing history will be unchanged.')} </div> - <StyledRadioButton - name="historyVis" value="world_readable" - disabled={!canChangeHistory} - checked={history === "world_readable"} - onChange={this._onHistoryRadioToggle} - > - {_t("Anyone")} - </StyledRadioButton> - <StyledRadioButton - name="historyVis" value="shared" - disabled={!canChangeHistory} - checked={history === "shared"} - onChange={this._onHistoryRadioToggle} - > - {_t('Members only (since the point in time of selecting this option)')} - </StyledRadioButton> - <StyledRadioButton - name="historyVis" value="invited" - disabled={!canChangeHistory} - checked={history === "invited"} - onChange={this._onHistoryRadioToggle} - > - {_t('Members only (since they were invited)')} - </StyledRadioButton> - <StyledRadioButton - name="historyVis" value="joined" - disabled={!canChangeHistory} - checked={history === "joined"} - onChange={this._onHistoryRadioToggle} - > - {_t('Members only (since they joined)')} - </StyledRadioButton> + <StyledRadioGroup + name="historyVis" + value={history} + definitions={[ + { + value: "world_readable", + disabled: !canChangeHistory, + onChange: this._onHistoryRadioToggle, + label: _t("Anyone"), + }, + { + value: "shared", + disabled: !canChangeHistory, + onChange: this._onHistoryRadioToggle, + label: _t('Members only (since the point in time of selecting this option)'), + }, + { + value: "invited", + disabled: !canChangeHistory, + onChange: this._onHistoryRadioToggle, + label: _t('Members only (since they were invited)'), + }, + { + value: "joined", + disabled: !canChangeHistory, + onChange: this._onHistoryRadioToggle, + label: _t('Members only (since they joined)'), + }, + ]} + /> </div> ); }