tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit f3e34aecf3f480fe4c9c5bc7999bd8039e7ec86c
parent c958307491114072664648638f9bfd7b62aa561d
Author: Atila Butkovits <abutkovits@mozilla.com>
Date:   Mon, 29 Dec 2025 04:47:44 +0200

Revert "Bug 2000494 - Update ConfirmDialog component to use `dialog` element. r=home-newtab-reviewers,ini" for causing node failures.

This reverts commit c958307491114072664648638f9bfd7b62aa561d.

Diffstat:
Mbrowser/extensions/newtab/content-src/components/ConfirmDialog/ConfirmDialog.jsx | 67++++++++++++++++++++++++-------------------------------------------
Mbrowser/extensions/newtab/content-src/components/ConfirmDialog/_ConfirmDialog.scss | 52+++++++++++++++++++++++++++++++++++++++++-----------
Mbrowser/extensions/newtab/css/activity-stream.css | 49++++++++++++++++++++++++++++++++++++++-----------
Mbrowser/extensions/newtab/data/content/activity-stream.bundle.js | 44++++++++++++++------------------------------
4 files changed, 117 insertions(+), 95 deletions(-)

diff --git a/browser/extensions/newtab/content-src/components/ConfirmDialog/ConfirmDialog.jsx b/browser/extensions/newtab/content-src/components/ConfirmDialog/ConfirmDialog.jsx @@ -30,23 +30,6 @@ export class _ConfirmDialog extends React.PureComponent { super(props); this._handleCancelBtn = this._handleCancelBtn.bind(this); this._handleConfirmBtn = this._handleConfirmBtn.bind(this); - this.dialogRef = React.createRef(); - } - - componentDidUpdate() { - const dialogElement = this.dialogRef.current; - if (!dialogElement) { - return; - } - - // Open dialog when visible becomes true - if (this.props.visible && !dialogElement.open) { - dialogElement.showModal(); - } - // Close dialog when visible becomes false - else if (!this.props.visible && dialogElement.open) { - dialogElement.close(); - } } _handleCancelBtn() { @@ -80,17 +63,17 @@ export class _ConfirmDialog extends React.PureComponent { } render() { + if (!this.props.visible) { + return null; + } + return ( - <dialog - ref={this.dialogRef} - className="confirmation-dialog" - onClick={e => { - // Close modal when clicking on the backdrop pseudo element (the background of the modal) - if (e.target === this.dialogRef.current) { - this._handleCancelBtn(); - } - }} - > + <div className="confirmation-dialog"> + <div + className="modal-overlay" + onClick={this._handleCancelBtn} + role="presentation" + /> <div className="modal"> <section className="modal-message"> {this.props.data.icon && ( @@ -100,24 +83,22 @@ export class _ConfirmDialog extends React.PureComponent { )} {this._renderModalMessage()} </section> - <section className="button-group"> - <moz-button-group> - <moz-button - onClick={this._handleCancelBtn} - data-l10n-id={this.props.data.cancel_button_string_id} - ></moz-button> - <moz-button - type="primary" - onClick={this._handleConfirmBtn} - data-l10n-id={this.props.data.confirm_button_string_id} - data-l10n-args={JSON.stringify( - this.props.data.confirm_button_string_args - )} - ></moz-button> - </moz-button-group> + <section className="actions"> + <button + onClick={this._handleCancelBtn} + data-l10n-id={this.props.data.cancel_button_string_id} + /> + <button + className="done" + onClick={this._handleConfirmBtn} + data-l10n-id={this.props.data.confirm_button_string_id} + data-l10n-args={JSON.stringify( + this.props.data.confirm_button_string_args + )} + /> </section> </div> - </dialog> + </div> ); } } diff --git a/browser/extensions/newtab/content-src/components/ConfirmDialog/_ConfirmDialog.scss b/browser/extensions/newtab/content-src/components/ConfirmDialog/_ConfirmDialog.scss @@ -1,13 +1,12 @@ .confirmation-dialog { - border: 1px solid var(--border-color); - border-radius: var(--border-radius-small); - padding: 0; - width: 400px; - box-shadow: var(--box-shadow-popup); - background: var(--newtab-background-color-secondary); - - &::backdrop { - background: var(--newtab-overlay-color); + .modal { + box-shadow: $shadow-secondary; + inset-inline-start: 0; + margin: auto; + position: fixed; + inset-inline-end: 0; + inset-block-start: 20%; + width: 400px; } section { @@ -25,12 +24,43 @@ } } - .button-group { + .actions { border: 0; - padding: var(--space-large); + display: flex; + flex-wrap: nowrap; + padding: 0 var(--space-large); + + button { + margin-inline-end: var(--space-large); + padding-inline: var(--space-large); + white-space: normal; + width: 50%; + + &.done { + margin-inline-end: 0; + margin-inline-start: 0; + } + } } .icon { margin-inline-end: var(--space-large); } } + +.modal-overlay { + background: var(--newtab-overlay-color); + height: 100%; + inset-inline-start: 0; + position: fixed; + inset-block-start: 0; + width: 100%; + z-index: 11001; +} + +.modal { + background: var(--newtab-background-color-secondary); + border: 1px solid var(--border-color); + border-radius: var(--border-radius-small); + z-index: 11002; +} diff --git a/browser/extensions/newtab/css/activity-stream.css b/browser/extensions/newtab/css/activity-stream.css @@ -1824,16 +1824,14 @@ main section { pointer-events: none; } -.confirmation-dialog { - border: 1px solid var(--border-color); - border-radius: var(--border-radius-small); - padding: 0; +.confirmation-dialog .modal { + box-shadow: 0 1px 4px 0 rgba(12, 12, 13, 0.2); + inset-inline-start: 0; + margin: auto; + position: fixed; + inset-inline-end: 0; + inset-block-start: 20%; width: 400px; - box-shadow: var(--box-shadow-popup); - background: var(--newtab-background-color-secondary); -} -.confirmation-dialog::backdrop { - background: var(--newtab-overlay-color); } .confirmation-dialog section { margin: 0; @@ -1847,14 +1845,43 @@ main section { margin: 0; margin-block-end: var(--space-large); } -.confirmation-dialog .button-group { +.confirmation-dialog .actions { border: 0; - padding: var(--space-large); + display: flex; + flex-wrap: nowrap; + padding: 0 var(--space-large); +} +.confirmation-dialog .actions button { + margin-inline-end: var(--space-large); + padding-inline: var(--space-large); + white-space: normal; + width: 50%; +} +.confirmation-dialog .actions button.done { + margin-inline-end: 0; + margin-inline-start: 0; } .confirmation-dialog .icon { margin-inline-end: var(--space-large); } +.modal-overlay { + background: var(--newtab-overlay-color); + height: 100%; + inset-inline-start: 0; + position: fixed; + inset-block-start: 0; + width: 100%; + z-index: 11001; +} + +.modal { + background: var(--newtab-background-color-secondary); + border: 1px solid var(--border-color); + border-radius: var(--border-radius-small); + z-index: 11002; +} + .personalizeButtonWrapper { margin: 0; padding: 0; diff --git a/browser/extensions/newtab/data/content/activity-stream.bundle.js b/browser/extensions/newtab/data/content/activity-stream.bundle.js @@ -1301,22 +1301,6 @@ class _ConfirmDialog extends (external_React_default()).PureComponent { super(props); this._handleCancelBtn = this._handleCancelBtn.bind(this); this._handleConfirmBtn = this._handleConfirmBtn.bind(this); - this.dialogRef = /*#__PURE__*/external_React_default().createRef(); - } - componentDidUpdate() { - const dialogElement = this.dialogRef.current; - if (!dialogElement) { - return; - } - - // Open dialog when visible becomes true - if (this.props.visible && !dialogElement.open) { - dialogElement.showModal(); - } - // Close dialog when visible becomes false - else if (!this.props.visible && dialogElement.open) { - dialogElement.close(); - } } _handleCancelBtn() { this.props.dispatch({ @@ -1341,32 +1325,32 @@ class _ConfirmDialog extends (external_React_default()).PureComponent { }))); } render() { - return /*#__PURE__*/external_React_default().createElement("dialog", { - ref: this.dialogRef, - className: "confirmation-dialog", - onClick: e => { - // Close modal when clicking on the backdrop pseudo element (the background of the modal) - if (e.target === this.dialogRef.current) { - this._handleCancelBtn(); - } - } + if (!this.props.visible) { + return null; + } + return /*#__PURE__*/external_React_default().createElement("div", { + className: "confirmation-dialog" }, /*#__PURE__*/external_React_default().createElement("div", { + className: "modal-overlay", + onClick: this._handleCancelBtn, + role: "presentation" + }), /*#__PURE__*/external_React_default().createElement("div", { className: "modal" }, /*#__PURE__*/external_React_default().createElement("section", { className: "modal-message" }, this.props.data.icon && /*#__PURE__*/external_React_default().createElement("span", { className: `icon icon-spacer icon-${this.props.data.icon}` }), this._renderModalMessage()), /*#__PURE__*/external_React_default().createElement("section", { - className: "button-group" - }, /*#__PURE__*/external_React_default().createElement("moz-button-group", null, /*#__PURE__*/external_React_default().createElement("moz-button", { + className: "actions" + }, /*#__PURE__*/external_React_default().createElement("button", { onClick: this._handleCancelBtn, "data-l10n-id": this.props.data.cancel_button_string_id - }), /*#__PURE__*/external_React_default().createElement("moz-button", { - type: "primary", + }), /*#__PURE__*/external_React_default().createElement("button", { + className: "done", onClick: this._handleConfirmBtn, "data-l10n-id": this.props.data.confirm_button_string_id, "data-l10n-args": JSON.stringify(this.props.data.confirm_button_string_args) - }))))); + })))); } } const ConfirmDialog = (0,external_ReactRedux_namespaceObject.connect)(state => state.Dialog)(_ConfirmDialog);