Files
tubestation/toolkit/components/prompts/content/commonDialog.css
Emilio Cobos Álvarez 460bd2f582 Bug 1797313 - Fix alert/confirm dialog layout after bug 1779695. r=Gijs
max-height percentages were not honored, which caused the infoRow to
collapse. With min-height: 0 the info row shrinks too much.

Differential Revision: https://phabricator.services.mozilla.com/D160227
2022-10-26 15:24:44 +00:00

139 lines
3.2 KiB
CSS

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
:root {
min-width: 29em;
}
dialog[insecureauth] {
--icon-url: url("chrome://global/skin/icons/security-broken.svg");
}
#dialogGrid {
display: grid;
grid-template-columns: auto 1fr;
align-items: center;
max-height: 100%;
}
.dialogRow:not([hidden]) {
display: contents;
}
#iconContainer {
align-self: start;
}
#infoContainer {
max-width: 45em;
}
#infoTitle {
margin-bottom: 1em;
}
#infoBody {
-moz-user-focus: normal;
user-select: text;
cursor: text !important;
white-space: pre-wrap;
word-break: break-word;
unicode-bidi: plaintext;
overflow-y: auto;
}
.sizeDetermined,
.sizeDetermined::part(content-box),
.sizeDetermined #infoBody,
.sizeDetermined #infoRow,
.sizeDetermined #infoContainer {
/* Allow stuff to shrink */
min-height: 0;
}
.sizeDetermined #infoRow {
/* Make the info row take all the available space, potentially shrinking,
* since it's what contains the infoBody, which is scrollable */
flex: 1;
}
#loginLabel, #password1Label {
text-align: start;
}
#loginTextbox,
#password1Textbox {
text-align: match-parent;
}
/* use flexbox instead of grid: */
dialog[subdialog],
dialog[subdialog] #dialogGrid,
dialog[subdialog] #infoContainer,
dialog[subdialog] .dialogRow:not([hidden]) {
display: flex;
flex-direction: column;
align-items: stretch;
}
dialog[subdialog] #iconContainer {
display: none;
}
/* Fix padding/spacing */
dialog[subdialog] {
--grid-padding: 16px;
/* All the inner items should have 4px inline margin, leading to 1.16em spacing
* between the dialog and its contents, and 8px horizontal spacing between items. */
padding: var(--grid-padding) calc(var(--grid-padding) - 4px);
}
/* Use an ID selector for the dialog to win on specificity... */
#commonDialog[subdialog] description,
#commonDialog[subdialog] checkbox {
margin: 0 4px;
}
#commonDialog[subdialog] checkbox {
/* Align the checkbox to the first line of text using "baseline" to be less
* sensitive than "start" to the label's font-size and line-height. */
-moz-box-align: baseline;
}
#commonDialog[subdialog] label {
margin: 4px; /* Labels for input boxes should get block as well as the regular inline margin. */
}
#commonDialog[subdialog] .checkbox-label {
/* The checkbox already has the horizontal margin, so override the rule
* above. */
margin: 0;
}
#commonDialog[subdialog] .checkbox-check {
margin-block: 0;
/* With "baseline" alignment, if the checkbox is larger than the label, it
* behaves like "start" positioned to the top; otherwise, it is positioned to
* the bottom edge of the label, so shift back up to center it with text. */
translate: 0 calc(-0.35 * max(1em - 100%, 0px) + 1px);
}
#commonDialog[subdialog] input {
margin: 0 4px 4px;
}
/* Add vertical spaces between rows: */
dialog[subdialog] .dialogRow {
margin-block: 0 var(--grid-padding);
}
/* Fix spacing in the `prompt()` case: */
dialog[subdialog] #loginLabel[value=""] {
display: none;
}
dialog[subdialog][windowtype="prompt:prompt"] #infoRow {
margin-bottom: 4px;
}