You've already forked matrix-react-sdk
							
							
				mirror of
				https://github.com/matrix-org/matrix-react-sdk.git
				synced 2025-11-03 00:33:22 +03:00 
			
		
		
		
	Deprecate FormButton to use AccessibleButton everywhere
This commit is contained in:
		@@ -123,7 +123,6 @@
 | 
			
		||||
@import "./views/elements/_EventListSummary.scss";
 | 
			
		||||
@import "./views/elements/_FacePile.scss";
 | 
			
		||||
@import "./views/elements/_Field.scss";
 | 
			
		||||
@import "./views/elements/_FormButton.scss";
 | 
			
		||||
@import "./views/elements/_ImageView.scss";
 | 
			
		||||
@import "./views/elements/_InfoTooltip.scss";
 | 
			
		||||
@import "./views/elements/_InlineSpinner.scss";
 | 
			
		||||
 
 | 
			
		||||
@@ -134,8 +134,9 @@ limitations under the License.
 | 
			
		||||
        .mx_Toast_buttons {
 | 
			
		||||
            float: right;
 | 
			
		||||
            display: flex;
 | 
			
		||||
            gap: 5px;
 | 
			
		||||
 | 
			
		||||
            .mx_FormButton {
 | 
			
		||||
            .mx_AccessibleButton {
 | 
			
		||||
                min-width: 96px;
 | 
			
		||||
                box-sizing: border-box;
 | 
			
		||||
            }
 | 
			
		||||
 
 | 
			
		||||
@@ -1,42 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
Copyright 2019 The Matrix.org Foundation C.I.C.
 | 
			
		||||
 | 
			
		||||
Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
you may not use this file except in compliance with the License.
 | 
			
		||||
You may obtain a copy of the License at
 | 
			
		||||
 | 
			
		||||
    http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 | 
			
		||||
Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
See the License for the specific language governing permissions and
 | 
			
		||||
limitations under the License.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
.mx_FormButton {
 | 
			
		||||
    line-height: $font-16px;
 | 
			
		||||
    padding: 5px 15px;
 | 
			
		||||
    font-size: $font-12px;
 | 
			
		||||
    height: min-content;
 | 
			
		||||
 | 
			
		||||
    &:not(:last-child) {
 | 
			
		||||
        margin-right: 8px;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    &.mx_AccessibleButton_kind_primary {
 | 
			
		||||
        color: $accent-color;
 | 
			
		||||
        background-color: $accent-bg-color;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    &.mx_AccessibleButton_kind_danger {
 | 
			
		||||
        color: $notice-primary-color;
 | 
			
		||||
        background-color: $notice-primary-bg-color;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    &.mx_AccessibleButton_kind_secondary {
 | 
			
		||||
        color: $secondary-fg-color;
 | 
			
		||||
        border: 1px solid $secondary-fg-color;
 | 
			
		||||
        background-color: unset;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -259,16 +259,6 @@ limitations under the License.
 | 
			
		||||
 | 
			
		||||
    .mx_AccessibleButton.mx_AccessibleButton_hasKind {
 | 
			
		||||
        padding: 8px 18px;
 | 
			
		||||
 | 
			
		||||
        &.mx_AccessibleButton_kind_primary {
 | 
			
		||||
            color: $accent-color;
 | 
			
		||||
            background-color: $accent-bg-color;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        &.mx_AccessibleButton_kind_danger {
 | 
			
		||||
            color: $notice-primary-color;
 | 
			
		||||
            background-color: $notice-primary-bg-color;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .mx_VerificationShowSas .mx_AccessibleButton,
 | 
			
		||||
 
 | 
			
		||||
@@ -58,7 +58,7 @@ limitations under the License.
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .mx_VerificationPanel_reciprocate_section {
 | 
			
		||||
        .mx_FormButton {
 | 
			
		||||
        .mx_AccessibleButton {
 | 
			
		||||
            width: 100%;
 | 
			
		||||
            box-sizing: border-box;
 | 
			
		||||
            padding: 10px;
 | 
			
		||||
 
 | 
			
		||||
@@ -73,7 +73,7 @@ limitations under the License.
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .mx_FormButton {
 | 
			
		||||
    .mx_AccessibleButton {
 | 
			
		||||
        padding: 8px 22px;
 | 
			
		||||
        margin-left: auto;
 | 
			
		||||
        display: block;
 | 
			
		||||
 
 | 
			
		||||
@@ -1,28 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
Copyright 2019 The Matrix.org Foundation C.I.C.
 | 
			
		||||
 | 
			
		||||
Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
you may not use this file except in compliance with the License.
 | 
			
		||||
You may obtain a copy of the License at
 | 
			
		||||
 | 
			
		||||
http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 | 
			
		||||
Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
See the License for the specific language governing permissions and
 | 
			
		||||
limitations under the License.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
import React from 'react';
 | 
			
		||||
import AccessibleButton from "./AccessibleButton";
 | 
			
		||||
 | 
			
		||||
export default function FormButton(props) {
 | 
			
		||||
    const {className, label, kind, ...restProps} = props;
 | 
			
		||||
    const newClassName = (className || "") + " mx_FormButton";
 | 
			
		||||
    const allProps = Object.assign({}, restProps,
 | 
			
		||||
        {className: newClassName, kind: kind || "primary", children: [label]});
 | 
			
		||||
    return React.createElement(AccessibleButton, allProps);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
FormButton.propTypes = AccessibleButton.propTypes;
 | 
			
		||||
@@ -116,7 +116,6 @@ export default class MKeyVerificationRequest extends React.Component<IProps> {
 | 
			
		||||
 | 
			
		||||
    public render() {
 | 
			
		||||
        const AccessibleButton = sdk.getComponent("elements.AccessibleButton");
 | 
			
		||||
        const FormButton = sdk.getComponent("elements.FormButton");
 | 
			
		||||
 | 
			
		||||
        const {mxEvent} = this.props;
 | 
			
		||||
        const request = mxEvent.verificationRequest;
 | 
			
		||||
@@ -152,8 +151,12 @@ export default class MKeyVerificationRequest extends React.Component<IProps> {
 | 
			
		||||
            subtitle = userLabelForEventRoom(request.requestingUserId, mxEvent.getRoomId());
 | 
			
		||||
            if (request.canAccept) {
 | 
			
		||||
                stateNode = (<div className="mx_cryptoEvent_buttons">
 | 
			
		||||
                    <FormButton kind="danger" onClick={this.onRejectClicked} label={_t("Decline")} />
 | 
			
		||||
                    <FormButton onClick={this.onAcceptClicked} label={_t("Accept")} />
 | 
			
		||||
                    <AccessibleButton kind="danger" onClick={this.onRejectClicked}>
 | 
			
		||||
                        {_t("Decline")}
 | 
			
		||||
                    </AccessibleButton>
 | 
			
		||||
                    <AccessibleButton onClick={this.onAcceptClicked}>
 | 
			
		||||
                        {_t("Accept")}
 | 
			
		||||
                    </AccessibleButton>
 | 
			
		||||
                </div>);
 | 
			
		||||
            }
 | 
			
		||||
        } else { // request sent by us
 | 
			
		||||
 
 | 
			
		||||
@@ -195,14 +195,7 @@ export default class VerificationPanel extends React.PureComponent<IProps, IStat
 | 
			
		||||
 | 
			
		||||
    private renderQRReciprocatePhase() {
 | 
			
		||||
        const {member, request} = this.props;
 | 
			
		||||
        let Button;
 | 
			
		||||
        // a bit of a hack, but the FormButton should only be used in the right panel
 | 
			
		||||
        // they should probably just be the same component with a css class applied to it?
 | 
			
		||||
        if (this.props.inDialog) {
 | 
			
		||||
            Button = sdk.getComponent("elements.AccessibleButton");
 | 
			
		||||
        } else {
 | 
			
		||||
            Button = sdk.getComponent("elements.FormButton");
 | 
			
		||||
        }
 | 
			
		||||
        const AccessibleButton = sdk.getComponent("elements.AccessibleButton");
 | 
			
		||||
        const description = request.isSelfVerification ?
 | 
			
		||||
            _t("Almost there! Is your other session showing the same shield?") :
 | 
			
		||||
            _t("Almost there! Is %(displayName)s showing the same shield?", {
 | 
			
		||||
@@ -211,21 +204,18 @@ export default class VerificationPanel extends React.PureComponent<IProps, IStat
 | 
			
		||||
        let body: JSX.Element;
 | 
			
		||||
        if (this.state.reciprocateQREvent) {
 | 
			
		||||
            // Element Web doesn't support scanning yet, so assume here we're the client being scanned.
 | 
			
		||||
            //
 | 
			
		||||
            // we're passing both a label and a child string to Button as
 | 
			
		||||
            // FormButton and AccessibleButton expect this differently
 | 
			
		||||
            body = <React.Fragment>
 | 
			
		||||
                <p>{description}</p>
 | 
			
		||||
                <E2EIcon isUser={true} status="verified" size={128} hideTooltip={true} />
 | 
			
		||||
                <div className="mx_VerificationPanel_reciprocateButtons">
 | 
			
		||||
                    <Button
 | 
			
		||||
                    <AccessibleButton
 | 
			
		||||
                        label={_t("No")} kind="danger"
 | 
			
		||||
                        disabled={this.state.reciprocateButtonClicked}
 | 
			
		||||
                        onClick={this.onReciprocateNoClick}>{_t("No")}</Button>
 | 
			
		||||
                    <Button
 | 
			
		||||
                        onClick={this.onReciprocateNoClick} />
 | 
			
		||||
                    <AccessibleButton
 | 
			
		||||
                        label={_t("Yes")} kind="primary"
 | 
			
		||||
                        disabled={this.state.reciprocateButtonClicked}
 | 
			
		||||
                        onClick={this.onReciprocateYesClick}>{_t("Yes")}</Button>
 | 
			
		||||
                        onClick={this.onReciprocateYesClick} />
 | 
			
		||||
                </div>
 | 
			
		||||
            </React.Fragment>;
 | 
			
		||||
        } else {
 | 
			
		||||
 
 | 
			
		||||
@@ -15,8 +15,8 @@ limitations under the License.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
import React, {ReactNode} from "react";
 | 
			
		||||
import AccessibleButton from "../elements/AccessibleButton";
 | 
			
		||||
 | 
			
		||||
import FormButton from "../elements/FormButton";
 | 
			
		||||
import {XOR} from "../../../@types/common";
 | 
			
		||||
 | 
			
		||||
export interface IProps {
 | 
			
		||||
@@ -50,8 +50,12 @@ const GenericToast: React.FC<XOR<IPropsExtended, IProps>> = ({
 | 
			
		||||
            {detailContent}
 | 
			
		||||
        </div>
 | 
			
		||||
        <div className="mx_Toast_buttons" aria-live="off">
 | 
			
		||||
            {onReject && rejectLabel && <FormButton label={rejectLabel} kind="danger" onClick={onReject} /> }
 | 
			
		||||
            <FormButton label={acceptLabel} onClick={onAccept} />
 | 
			
		||||
            {onReject && rejectLabel && <AccessibleButton kind="danger" onClick={onReject}>
 | 
			
		||||
                {rejectLabel}
 | 
			
		||||
            </AccessibleButton> }
 | 
			
		||||
            <AccessibleButton onClick={onAccept} kind="primary">
 | 
			
		||||
                {acceptLabel}
 | 
			
		||||
            </AccessibleButton>
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>;
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
@@ -23,7 +23,7 @@ import { _t } from '../../../languageHandler';
 | 
			
		||||
import { ActionPayload } from '../../../dispatcher/payloads';
 | 
			
		||||
import CallHandler, { AudioID } from '../../../CallHandler';
 | 
			
		||||
import RoomAvatar from '../avatars/RoomAvatar';
 | 
			
		||||
import FormButton from '../elements/FormButton';
 | 
			
		||||
import AccesibleButton from '../elements/AccessibleButton';
 | 
			
		||||
import { CallState } from 'matrix-js-sdk/src/webrtc/call';
 | 
			
		||||
import {replaceableComponent} from "../../../utils/replaceableComponent";
 | 
			
		||||
import AccessibleTooltipButton from '../elements/AccessibleTooltipButton';
 | 
			
		||||
@@ -143,19 +143,21 @@ export default class IncomingCallBox extends React.Component<IProps, IState> {
 | 
			
		||||
                />
 | 
			
		||||
            </div>
 | 
			
		||||
            <div className="mx_IncomingCallBox_buttons">
 | 
			
		||||
                <FormButton
 | 
			
		||||
                <AccesibleButton
 | 
			
		||||
                    className={"mx_IncomingCallBox_decline"}
 | 
			
		||||
                    onClick={this.onRejectClick}
 | 
			
		||||
                    kind="danger"
 | 
			
		||||
                    label={_t("Decline")}
 | 
			
		||||
                />
 | 
			
		||||
                >
 | 
			
		||||
                    {_t("Decline")}
 | 
			
		||||
                </AccesibleButton>
 | 
			
		||||
                <div className="mx_IncomingCallBox_spacer" />
 | 
			
		||||
                <FormButton
 | 
			
		||||
                <AccesibleButton
 | 
			
		||||
                    className={"mx_IncomingCallBox_accept"}
 | 
			
		||||
                    onClick={this.onAnswerClick}
 | 
			
		||||
                    kind="primary"
 | 
			
		||||
                    label={_t("Accept")}
 | 
			
		||||
                />
 | 
			
		||||
                >
 | 
			
		||||
                    {_t("Accept")}
 | 
			
		||||
                </AccesibleButton>
 | 
			
		||||
            </div>
 | 
			
		||||
        </div>;
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user