Make .form-horizontal simple with less CSS classes

This commit is contained in:
djmaze 2021-11-16 16:22:05 +01:00
parent dff89ea4e0
commit 071dab01a7
48 changed files with 351 additions and 463 deletions

View file

@ -86,38 +86,43 @@ dialog:not(.animate) {
}
dialog > header {
padding: 9px 15px;
border-bottom: 1px solid #eee;
// Close icon
.close { margin-top: 2px; }
// Heading
h3 {
margin: 0;
line-height: 30px;
}
padding: 9px 15px;
border-bottom: 1px solid #eee;
// Close icon
.close {
margin-top: 2px;
}
// Heading
h3 {
margin: 0;
line-height: 30px;
}
}
// Body (where all modal content resides)
dialog .modal-body {
overflow: auto;
padding: 15px;
overflow: auto;
margin: 0;
padding: 15px;
}
// Footer (for actions)
dialog > footer {
padding: 14px 15px 15px;
margin-bottom: 0;
text-align: right; // right align buttons
border-top: 1px solid #ddd;
border-radius: 0 0 6px 6px;
padding: 14px 15px 15px;
margin-bottom: 0;
text-align: right; // right align buttons
border-top: 1px solid #ddd;
border-radius: 0 0 6px 6px;
// Properly space out buttons
.btn + .btn {
margin-left: 5px;
margin-bottom: 0; // account for input[type="submit"] which gets the bottom margin like all other inputs
}
// but override that for button groups
.btn-group .btn + .btn {
margin-left: -1px;
}
// Properly space out buttons
.btn + .btn {
margin-left: 5px;
margin-bottom: 0; // account for input[type="submit"] which gets the bottom margin like all other inputs
}
// but override that for button groups
.btn-group .btn + .btn {
margin-left: -1px;
}
}

View file

@ -2,7 +2,7 @@
max-width: 780px;
.control-label {
label {
width: 110px;
}
.span4 {

View file

@ -11,14 +11,14 @@
max-height: 700px;
.control-group {
.control-label {
label {
padding-top: 0;
width: 50px;
}
}
.modal-body {
height: calc(100% - 49px);
height: calc(100vh - 49px);
padding: 0;
position: relative;
}

View file

@ -28,16 +28,16 @@ label.inline, span.inline {
padding: 4px 7px;
}
.alert a {
.alert a:not(.close) {
text-decoration: underline;
color: @warningText;
}
.alert.alert-info a {
.alert.alert-info a:not(.close) {
color: @infoText;
}
.alert.alert-error a {
.alert.alert-error a:not(.close) {
color: @errorText;
}
@ -45,11 +45,13 @@ label.inline, span.inline {
@media screen and (max-width: 999px) {
.form-horizontal {
.control-group {
.control-label {
> label {
text-align: left;
}
.controls {
margin-left: 10px;
// Move over all input controls and content
> *:not(label) {
margin-left: 20px;
}
}
}

View file

@ -1,5 +1,5 @@
<div class="alert" data-bind="hidden: !submitError()">
<button type="button" class="close" data-bind="click: function () { submitError('') }">×</button>
<a href="#" class="close" data-bind="click: function () { submitError('') }">×</a>
<span data-bind="text: submitError"></span>
</div>
<form action="#/" data-bind="submit: submitForm, css: {'errorAnimated': formError, 'submitting': submitRequest()}">

View file

@ -1,8 +1,8 @@
<div class="form-horizontal">
<div class="legend" data-i18n="TAB_BRANDING/LEGEND_BRANDING"></div>
<div class="control-group">
<label class="control-label" data-i18n="TAB_BRANDING/LABEL_PAGE_TITLE"></label>
<div class="controls" data-bind="component: {
<label data-i18n="TAB_BRANDING/LABEL_PAGE_TITLE"></label>
<div data-bind="component: {
name: 'Input',
params: {
value: title,
@ -12,8 +12,8 @@
}"></div>
</div>
<div class="control-group">
<label class="control-label" data-i18n="TAB_BRANDING/LABEL_LOADING_DESCRIPTION"></label>
<div class="controls" data-bind="component: {
<label data-i18n="TAB_BRANDING/LABEL_LOADING_DESCRIPTION"></label>
<div data-bind="component: {
name: 'Input',
params: {
value: loadingDesc,
@ -23,8 +23,8 @@
}"></div>
</div>
<div class="control-group">
<label class="control-label" data-i18n="TAB_BRANDING/LABEL_FAVICON_URL"></label>
<div class="controls" data-bind="component: {
<label data-i18n="TAB_BRANDING/LABEL_FAVICON_URL"></label>
<div data-bind="component: {
name: 'Input',
params: {
value: faviconUrl,

View file

@ -7,7 +7,7 @@
<div class="form-horizontal" data-bind="visible: contactsSupported">
<div class="legend" data-i18n="TAB_CONTACTS/LEGEND_CONTACTS"></div>
<div class="control-group">
<div class="controls">
<div>
<div data-bind="component: {
name: 'Checkbox',
params: { value: enableContacts, label: 'TAB_CONTACTS/LABEL_ENABLE_CONTACTS' }
@ -22,24 +22,22 @@
<div class="form-horizontal" data-bind="visible: contactsSupported">
<div class="legend" data-i18n="TAB_CONTACTS/LEGEND_STORAGE"></div>
<div class="control-group">
<label class="control-label" data-i18n="TAB_CONTACTS/LABEL_STORAGE_TYPE"></label>
<div class="controls">
<div data-bind="component: {
name: 'Select',
params: {
options: contactsTypesOptions,
value: mainContactsType,
trigger: contactsTypeTrigger,
optionsText: 'name',
optionsValue: 'id'
}
}"></div>
</div>
<label data-i18n="TAB_CONTACTS/LABEL_STORAGE_TYPE"></label>
<div data-bind="component: {
name: 'Select',
params: {
options: contactsTypesOptions,
value: mainContactsType,
trigger: contactsTypeTrigger,
optionsText: 'name',
optionsValue: 'id'
}
}"></div>
</div>
<div data-bind="visible: 'sqlite' !== contactsType()">
<div class="control-group">
<label class="control-label" data-i18n="TAB_CONTACTS/LABEL_STORAGE_DSN"></label>
<div class="controls">
<label data-i18n="TAB_CONTACTS/LABEL_STORAGE_DSN"></label>
<div>
<input type="text" class="span6" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: pdoDsn, saveTrigger: pdoDsnTrigger" />
<blockquote style="margin: 0">
@ -51,44 +49,40 @@ host=127.0.0.1;port=5432;dbname=snappymail
</div>
</div>
<div class="control-group">
<label class="control-label" data-i18n="TAB_CONTACTS/LABEL_STORAGE_USER"></label>
<div class="controls">
<label data-i18n="TAB_CONTACTS/LABEL_STORAGE_USER"></label>
<div>
<input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: pdoUser, saveTrigger: pdoUserTrigger" />
</div>
</div>
<div class="control-group">
<label class="control-label" data-i18n="TAB_CONTACTS/LABEL_STORAGE_PASSWORD"></label>
<div class="controls">
<label data-i18n="TAB_CONTACTS/LABEL_STORAGE_PASSWORD"></label>
<div>
<input type="password" autocomplete="current-password" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: pdoPassword, saveTrigger: pdoPasswordTrigger" />
</div>
</div>
<div class="control-group">
<div class="controls">
<a class="btn" data-bind="command: testContactsCommand, css: { 'btn-success': testContactsSuccess, 'btn-danger': testContactsError }">
<i class="fontastic" data-bind="css: {'icon-spinner': testing()}"></i>
<span data-i18n="TAB_CONTACTS/BUTTON_TEST"></span>
</a>
</div>
<label></label>
<a class="btn" data-bind="command: testContactsCommand, css: { 'btn-success': testContactsSuccess, 'btn-danger': testContactsError }">
<i class="fontastic" data-bind="css: {'icon-spinner': testing()}"></i>
<span data-i18n="TAB_CONTACTS/BUTTON_TEST"></span>
</a>
</div>
</div>
<div data-bind="visible: 'sqlite' === contactsType()">
<div class="control-group">
<div class="controls">
<div class="alert">
<h4 data-i18n="TAB_CONTACTS/ALERT_NOTICE"></h4>
<div data-i18n="[html]TAB_CONTACTS/HTML_ALERT_DO_NOT_USE_THIS_DATABASE"></div>
</div>
<div class="alert">
<h4 data-i18n="TAB_CONTACTS/ALERT_NOTICE"></h4>
<div data-i18n="[html]TAB_CONTACTS/HTML_ALERT_DO_NOT_USE_THIS_DATABASE"></div>
</div>
</div>
<div class="control-group">
<div class="controls">
<a class="btn" data-bind="command: testContactsCommand, css: { 'btn-success': testContactsSuccess, 'btn-danger': testContactsError }">
<i class="fontastic" data-bind="css: {'icon-spinner': testing()}"></i>
<span data-i18n="TAB_CONTACTS/BUTTON_TEST"></span>
</a>
</div>
<label></label>
<a class="btn" data-bind="command: testContactsCommand, css: { 'btn-success': testContactsSuccess, 'btn-danger': testContactsError }">
<i class="fontastic" data-bind="css: {'icon-spinner': testing()}"></i>
<span data-i18n="TAB_CONTACTS/BUTTON_TEST"></span>
</a>
</div>
</div>
<div class="alert span8" data-bind="text: testContactsErrorMessage, visible: '' !== testContactsErrorMessage()"></div>

View file

@ -18,37 +18,35 @@
<div class="form-horizontal">
<div class="legend" data-i18n="TAB_GENERAL/LEGEND_INTERFACE"></div>
<div class="control-group">
<label class="control-label" data-i18n="TAB_GENERAL/LABEL_LANGUAGE"></label>
<div class="controls">
<label data-i18n="TAB_GENERAL/LABEL_LANGUAGE"></label>
<div>
<span class="select" tabindex="0" data-bind="text: languageFullName, click: selectLanguage, onSpace: selectLanguage, onEnter: selectLanguage"></span>
<span data-bind="saveTrigger: languageTrigger"></span>
</div>
</div>
<div class="control-group">
<label class="control-label" data-i18n="TAB_GENERAL/LABEL_LANGUAGE_ADMIN"></label>
<div class="controls">
<label data-i18n="TAB_GENERAL/LABEL_LANGUAGE_ADMIN"></label>
<div>
<span class="select" tabindex="0" data-bind="text: languageAdminFullName, click: selectLanguageAdmin, onSpace: selectLanguageAdmin, onEnter: selectLanguageAdmin"></span>
<span data-bind="saveTrigger: languageAdminTrigger"></span>
</div>
</div>
<div class="control-group">
<label class="control-label" data-i18n="TAB_GENERAL/LABEL_THEME"></label>
<div class="controls">
<div data-bind="component: {
name: 'Select',
params: {
options: themesOptions,
value: theme,
trigger: themeTrigger,
optionsText: 'optText',
optionsValue: 'optValue',
size: 2
}
}"></div>
</div>
<label data-i18n="TAB_GENERAL/LABEL_THEME"></label>
<div data-bind="component: {
name: 'Select',
params: {
options: themesOptions,
value: theme,
trigger: themeTrigger,
optionsText: 'optText',
optionsValue: 'optValue',
size: 2
}
}"></div>
</div>
<div class="control-group">
<div class="controls">
<div>
<div data-bind="component: {
name: 'Checkbox',
params: {
@ -80,21 +78,19 @@
</div>
</div>
<div class="control-group">
<div class="controls">
<div data-bind="component: {
name: 'Checkbox',
params: {
label: 'TAB_GENERAL/LABEL_SHOW_THUMBNAILS',
value: capaAttachmentThumbnails,
inline: false
}
}"></div>
</div>
<div data-bind="component: {
name: 'Checkbox',
params: {
label: 'TAB_GENERAL/LABEL_SHOW_THUMBNAILS',
value: capaAttachmentThumbnails,
inline: false
}
}"></div>
</div>
<div class="legend" data-i18n="TAB_GENERAL/LEGEND_MAIN"></div>
<div class="control-group">
<label class="control-label" data-i18n="TAB_GENERAL/LABEL_ATTACHMENT_SIZE_LIMIT"></label>
<div class="controls">
<label data-i18n="TAB_GENERAL/LABEL_ATTACHMENT_SIZE_LIMIT"></label>
<div>
<input type="number" min="1" step="1" class="span1" data-bind="textInput: mainAttachmentLimit"/>
&nbsp;
<span data-i18n="MB"></span>
@ -107,7 +103,7 @@
</div>
</div>
<div class="control-group">
<div class="controls">
<div>
<div data-bind="component: {
name: 'Checkbox',
params: {

View file

@ -1,8 +1,8 @@
<div class="form-horizontal">
<div class="legend" data-i18n="TAB_LOGIN/LEGEND_LOGIN_SCREEN"></div>
<div class="control-group">
<label class="control-label" data-i18n="TAB_LOGIN/LABEL_DEFAULT_DOMAIN"></label>
<div class="controls" data-bind="component: {
<label data-i18n="TAB_LOGIN/LABEL_DEFAULT_DOMAIN"></label>
<div data-bind="component: {
name: 'Input',
params: {
value: defaultDomain,
@ -12,7 +12,7 @@
}"></div>
</div>
<div class="control-group">
<div class="controls">
<div>
<div data-bind="component: {
name: 'Checkbox',
params: { value: determineUserDomain, label: 'TAB_LOGIN/LABEL_DETERMINE_USER_DOMAIN' }

View file

@ -9,7 +9,7 @@
</div>
<div class="alert" style="margin-top: 10px;" data-bind="visible: packagesError()">
<button type="button" class="close" data-bind="click: function () { packagesError('') }">×</button>
<a href="#" class="close" data-bind="click: function () { packagesError('') }">×</a>
<span data-bind="text: packagesError"></span>
</div>

View file

@ -1,5 +1,5 @@
<label class="control-label" data-bind="text: Label, visible: 5 !== Type"></label>
<div class="controls">
<label data-bind="text: Label, visible: 5 !== Type"></label>
<div>
<!-- ko if: 0 === Type -->
<input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: value, attr: {placeholder: placeholder}" />

View file

@ -1,7 +1,7 @@
<div class="legend" data-i18n="TAB_SECURITY/LEGEND_SECURITY"></div>
<div class="form-horizontal">
<div class="control-group">
<div class="controls">
<div>
<div data-bind="component: {
name: 'Checkbox',
params: {
@ -23,47 +23,36 @@
<div class="form-horizontal">
<div class="legend" data-i18n="TAB_SECURITY/LEGEND_ADMIN_PANEL_ACCESS_CREDENTIALS"></div>
<div class="control-group">
<label class="control-label" data-i18n="TAB_SECURITY/LABEL_CURRENT_PASSWORD"></label>
<div class="controls">
<input type="password" autocomplete="current-password" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="textInput: adminPassword" />
</div>
<label data-i18n="TAB_SECURITY/LABEL_CURRENT_PASSWORD"></label>
<input type="password" autocomplete="current-password" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="textInput: adminPassword" />
</div>
<br />
<div class="control-group" data-bind="css: {'error': adminLoginError}">
<label class="control-label" data-i18n="TAB_SECURITY/LABEL_NEW_LOGIN"></label>
<div class="controls">
<input type="text" autocomplete="username" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="textInput: adminLogin" />
</div>
<label data-i18n="TAB_SECURITY/LABEL_NEW_LOGIN"></label>
<input type="text" autocomplete="username" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="textInput: adminLogin" />
</div>
<div class="control-group" data-bind="css: {'error': adminPasswordNewError}">
<label class="control-label" data-i18n="TAB_SECURITY/LABEL_NEW_PASSWORD"></label>
<div class="controls">
<input type="password" autocomplete="new-password" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="textInput: adminPasswordNew" />
</div>
<label data-i18n="TAB_SECURITY/LABEL_NEW_PASSWORD"></label>
<input type="password" autocomplete="new-password" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="textInput: adminPasswordNew" />
</div>
<div class="control-group" data-bind="css: {'error': adminPasswordNewError}">
<label class="control-label" data-i18n="TAB_SECURITY/LABEL_REPEAT_PASSWORD"></label>
<div class="controls">
<input type="password" autocomplete="new-password" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="textInput: adminPasswordNew2" />
</div>
<label data-i18n="TAB_SECURITY/LABEL_REPEAT_PASSWORD"></label>
<input type="password" autocomplete="new-password" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="textInput: adminPasswordNew2" />
</div>
<div class="control-group">
<div class="controls">
<a class="btn" data-bind="command: saveNewAdminPasswordCommand, css: { 'btn-success': adminPasswordUpdateSuccess, 'btn-danger': adminPasswordUpdateError }">
<i class="fontastic">🔑</i>
<span data-i18n="TAB_SECURITY/BUTTON_UPDATE_PASSWORD"></span>
</a>
</div>
<a class="btn" data-bind="command: saveNewAdminPasswordCommand, css: { 'btn-success': adminPasswordUpdateSuccess, 'btn-danger': adminPasswordUpdateError }">
<i class="fontastic">🔑</i>
<span data-i18n="TAB_SECURITY/BUTTON_UPDATE_PASSWORD"></span>
</a>
</div>
</div>
<div class="form-horizontal">
<div class="legend" data-i18n="TAB_SECURITY/LEGEND_SSL"></div>
<div class="control-group">
<div class="controls">
<div>
<div data-bind="component: {
name: 'Checkbox',
params: {

View file

@ -1,5 +1,5 @@
<header>
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
<a href="#" class="close" data-bind="command: cancelCommand">×</a>
<h3 data-bind="text: headerText"></h3>
</header>
<div class="modal-body">

View file

@ -1,11 +1,11 @@
<header>
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
<a href="#" class="close" data-bind="command: cancelCommand">×</a>
<h3 data-i18n="POPUPS_DOMAIN_ALIAS/TITLE_ADD_DOMAIN_ALIAS"></h3>
</header>
<div class="modal-body">
<div class="control-group" data-bind="css: {error: '' !== savingError()}">
<label class="control-label" data-i18n="POPUPS_DOMAIN_ALIAS/LABEL_ALIAS"></label>
<div class="controls">
<label data-i18n="POPUPS_DOMAIN_ALIAS/LABEL_ALIAS"></label>
<div>
<div data-bind="component: {
name: 'Input',
params: {
@ -17,8 +17,8 @@
</div>
</div>
<div class="control-group">
<label class="control-label" data-i18n="POPUPS_DOMAIN_ALIAS/LABEL_DOMAIN"></label>
<div class="controls" data-bind="component: {
<label data-i18n="POPUPS_DOMAIN_ALIAS/LABEL_DOMAIN"></label>
<div data-bind="component: {
name: 'Select',
params: {
options: domainsOptions,

View file

@ -1,5 +1,5 @@
<header>
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
<a href="#" class="close" data-bind="command: cancelCommand">×</a>
<h4>
<span data-i18n="POPUPS_PLUGIN/TITLE_PLUGIN"></span>
&nbsp;
@ -11,7 +11,7 @@
<form class="form-horizontal plugin-form" action="#/" onsubmit="return false;">
<div class="alert alert-info" data-bind="visible: !hasConfiguration()" data-i18n="POPUPS_PLUGIN/DESC_NOTHING_TO_CONFIGURE"></div>
<div class="alert" data-bind="visible: '' !== saveError()">
<button type="button" class="close" data-bind="click: function () { saveError('') }">×</button>
<a href="#" class="close" data-bind="click: function () { saveError('') }">×</a>
<span data-bind="text: saveError"></span>
</div>
<div data-bind="foreach: configures, visible: hasConfiguration">

View file

@ -1,5 +1,5 @@
<header>
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
<a href="#" class="close" data-bind="command: cancelCommand">×</a>
<h3 data-i18n="POPUPS_LANGUAGES/TITLE_LANGUAGES"></h3>
</header>
<div class="modal-body" style="min-height: 150px;" data-bind="foreach: languages">

View file

@ -1,6 +1,6 @@
<div class="descWrapper" data-bind="visible: '' !== loadingDesc, text: loadingDesc"></div>
<div class="alert" data-bind="hidden: !submitError()" hidden="">
<button type="button" class="close" data-bind="click: function () { submitError('') }">×</button>
<a href="#" class="close" data-bind="click: function () { submitError('') }">×</a>
<span data-bind="text: submitError"></span>
<p data-bind="visible: '' !== submitErrorAddidional(), text: submitErrorAddidional"></p>
</div>

View file

@ -160,7 +160,7 @@
<div class="b-message" data-bind="visible: message">
<div class="messageItemHeader" data-bind="css: {'emptySubject': '' === viewSubject()}">
<div class="subjectParent">
<button class="close" data-bind="command: closeMessageCommand" style="margin-top: -2px;">×</button>
<a href="#" class="close" data-bind="command: closeMessageCommand" style="margin-top: -2px;">×</a>
<span class="infoParent g-ui-user-select-none fontastic" data-bind="click: function() { showFullInfo(!showFullInfo()); }"></span>
<span class="flagParent g-ui-user-select-none flagOff fontastic" data-bind="text: viewIsFlagged() ? '★' : '☆', css: {'flagOn': viewIsFlagged, 'flagOff': !viewIsFlagged()}"></span>
<b style="color: red; margin-right: 5px" data-bind="visible: viewIsImportant">!</b>
@ -303,8 +303,8 @@
data-i18n="MESSAGE/LINK_DOWNLOAD_AS_ZIP"></span>
</span>
<button type="button" class="close" style="margin-right: 5px;"
data-bind="click: function () { showAttachmnetControls(false); showAttachmnetControlsState(false); }">×</button>
<a href="#" class="close" style="margin-right: 5px;"
data-bind="click: function () { showAttachmnetControls(false); showAttachmnetControlsState(false); }">×</a>
</div>
</div>

View file

@ -1,5 +1,5 @@
<header>
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
<a href="#" class="close" data-bind="command: cancelCommand">×</a>
<h3>
<span data-bind="visible: isNew" data-i18n="POPUPS_ADD_ACCOUNT/TITLE_ADD_ACCOUNT"></span>
<span data-bind="visible: !isNew()" data-i18n="POPUPS_ADD_ACCOUNT/TITLE_UPDATE_ACCOUNT"></span>
@ -7,29 +7,24 @@
</header>
<form class="modal-body form-horizontal" autocomplete="off">
<div class="alert" data-bind="visible: '' !== submitError()">
<button type="button" class="close" data-bind="click: function () { submitError('') }">×</button>
<a href="#" class="close" data-bind="click: function () { submitError('') }">×</a>
<span data-bind="text: submitError"></span>
<div data-bind="visible: submitErrorAdditional">
<br />
<span data-bind="text: submitErrorAdditional"></span>
</div>
</div>
<br />
<div class="control-group" data-bind="css: {'error': emailError}">
<label class="control-label" data-i18n="GLOBAL/EMAIL"></label>
<div class="controls">
<label style="margin-top: 5px;" data-bind="visible: !isNew()"><strong data-bind="text: email"></strong></label>
<input type="email" class="input-xlarge"
autofocus="" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="visible: isNew, textInput: email, onEnter: addAccountCommand" />
</div>
<label data-i18n="GLOBAL/EMAIL"></label>
<label style="margin-top: 5px;" data-bind="visible: !isNew()"><strong data-bind="text: email"></strong></label>
<input type="email" class="input-xlarge"
autofocus="" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="visible: isNew, textInput: email, onEnter: addAccountCommand" />
</div>
<div class="control-group" data-bind="css: {'error': passwordError}">
<label class="control-label" data-i18n="GLOBAL/PASSWORD"></label>
<div class="controls">
<input type="password" class="inputPassword input-xlarge" autocomplete="new-password" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: password, onEnter: addAccountCommand" />
</div>
<label data-i18n="GLOBAL/PASSWORD"></label>
<input type="password" class="inputPassword input-xlarge" autocomplete="new-password" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: password, onEnter: addAccountCommand" />
</div>
</form>
<footer>

View file

@ -1,5 +1,5 @@
<header>
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
<a href="#" class="close" data-bind="command: cancelCommand">×</a>
<h3 data-i18n="POPUPS_IMPORT_OPEN_PGP_KEY/TITLE_IMPORT_OPEN_PGP_KEY"></h3>
</header>
<div class="modal-body">

View file

@ -1,5 +1,5 @@
<header>
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
<a href="#" class="close" data-bind="command: cancelCommand">×</a>
<h3 data-i18n="SEARCH/TITLE_ADV"></h3>
</header>
<div class="modal-body">
@ -7,39 +7,31 @@
<div class="row">
<div class="span4">
<div class="control-group">
<label class="control-label" data-i18n="GLOBAL/FROM"></label>
<div class="controls">
<input type="text" class="uiInput inputFrom"
autofocus="" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: from, onEnter: searchCommand, onEsc: cancelCommand" />
</div>
<label data-i18n="GLOBAL/FROM"></label>
<input type="text" class="uiInput inputFrom"
autofocus="" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: from, onEnter: searchCommand, onEsc: cancelCommand" />
</div>
<div class="control-group">
<label class="control-label" data-i18n="GLOBAL/TO"></label>
<div class="controls">
<input type="text" class="uiInput inputFrom" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: to, onEnter: searchCommand, onEsc: cancelCommand" />
</div>
<label data-i18n="GLOBAL/TO"></label>
<input type="text" class="uiInput inputFrom" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: to, onEnter: searchCommand, onEsc: cancelCommand" />
</div>
<div class="control-group">
<label class="control-label" data-i18n="GLOBAL/SUBJECT"></label>
<div class="controls">
<input type="text" class="uiInput inputFrom" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: subject, onEnter: searchCommand, onEsc: cancelCommand" />
</div>
<label data-i18n="GLOBAL/SUBJECT"></label>
<input type="text" class="uiInput inputFrom" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: subject, onEnter: searchCommand, onEsc: cancelCommand" />
</div>
<div class="control-group">
<label class="control-label" data-i18n="SEARCH/LABEL_ADV_TEXT"></label>
<div class="controls">
<input type="text" class="uiInput inputFrom" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: text, onEnter: searchCommand, onEsc: cancelCommand" />
</div>
<label data-i18n="SEARCH/LABEL_ADV_TEXT"></label>
<input type="text" class="uiInput inputFrom" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: text, onEnter: searchCommand, onEsc: cancelCommand" />
</div>
</div>
<div class="span4">
<div class="control-group">
<label class="control-label" data-i18n="SEARCH/LABEL_ADV_DATE"></label>
<div class="controls" data-bind="component: {
<label data-i18n="SEARCH/LABEL_ADV_DATE"></label>
<div data-bind="component: {
name: 'Select',
params: {
options: selectedDates,
@ -51,8 +43,8 @@
</div>
<!-- ko if: showMultisearch -->
<div class="control-group">
<label class="control-label" data-i18n="SEARCH/LABEL_ADV_SUBFOLDERS"></label>
<div class="controls" data-bind="component: {
<label data-i18n="SEARCH/LABEL_ADV_SUBFOLDERS"></label>
<div data-bind="component: {
name: 'Select',
params: {
options: selectedTree,
@ -64,9 +56,8 @@
</div>
<!-- /ko -->
<div class="control-group">
<label class="control-label">
</label>
<div class="controls">
<label></label>
<div>
<div data-bind="component: {
name: 'Checkbox',
params: {

View file

@ -166,7 +166,7 @@
<div class="iconBG" data-bind="text: progressText, visible: uploading"></div>
</div>
<div class="attachmentNameParent">
<button type="button" class="close pull-right" style="margin-top:-4px;" data-bind="click: cancel">×</button>
<a href="#" class="close pull-right" style="margin-top:-4px;" data-bind="click: cancel">×</a>
<div class="attachmentName" data-bind="text: fileName"></div>
<span class="attachmentSize" data-bind="text: friendlySize"></span>
</div>

View file

@ -1,5 +1,5 @@
<header>
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
<a href="#" class="close" data-bind="command: cancelCommand">×</a>
<h3 data-i18n="POPUPS_COMPOSE_OPEN_PGP/TITLE_COMPOSE_OPEN_PGP"></h3>
</header>

View file

@ -1,6 +1,6 @@
<header class="b-header-toolbar g-ui-user-select-none">
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
<a href="#" class="close" data-bind="command: cancelCommand">×</a>
<div class="btn-toolbar">
@ -128,8 +128,8 @@
<div data-bind="visible: !emptySelection()">
<div class="form-horizontal top-part">
<div class="control-group" data-bind="visible: !viewReadOnly() || contactHasValidName()">
<label class="control-label fontastic iconsize24">👤</label>
<div class="controls">
<label class="fontastic iconsize24">👤</label>
<div>
<div data-bind="foreach: viewPropertiesNames">
<div class="property-line">
<span data-bind="text: value"></span>
@ -157,8 +157,8 @@
</div>
</div>
<div class="control-group" data-bind="visible: !viewReadOnly() || 0 < viewPropertiesEmails().length">
<label class="control-label fontastic iconsize24" data-i18n="[title]GLOBAL/EMAIL">@</label>
<div class="controls">
<label class="fontastic iconsize24" data-i18n="[title]GLOBAL/EMAIL">@</label>
<div>
<div data-bind="foreach: viewPropertiesEmails">
<div class="property-line">
<span data-bind="text: value"></span>
@ -171,8 +171,8 @@
</div>
</div>
<div class="control-group" data-bind="visible: 0 < viewPropertiesPhones().length">
<label class="control-label fontastic iconsize24" data-i18n="[title]CONTACTS/LABEL_PHONE">📞</label>
<div class="controls">
<label class="fontastic iconsize24" data-i18n="[title]CONTACTS/LABEL_PHONE">📞</label>
<div>
<div data-bind="foreach: viewPropertiesPhones">
<div class="property-line">
<span data-bind="text: value"></span>
@ -184,8 +184,8 @@
</div>
</div>
<div class="control-group" data-bind="visible: 0 < viewPropertiesWeb().length">
<label class="control-label fontastic iconsize24" data-i18n="[title]CONTACTS/LABEL_WEB">🌍</label>
<div class="controls">
<label class="fontastic iconsize24" data-i18n="[title]CONTACTS/LABEL_WEB">🌍</label>
<div>
<div data-bind="foreach: viewPropertiesWeb">
<div class="property-line">
<span data-bind="text: value"></span>

View file

@ -1,5 +1,5 @@
<header>
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
<a href="#" class="close" data-bind="command: cancelCommand">×</a>
<h3>
<span data-i18n="POPUPS_FILTER/TITLE_CREATE_FILTER" data-bind="visible: isNew"></span>
<span data-i18n="POPUPS_FILTER/TITLE_EDIT_FILTER" data-bind="visible: !isNew()"></span>
@ -10,13 +10,11 @@
<div data-bind="i18nInit: true">
<div class="control-group" data-bind="css: {'error': nameError}">
<div class="controls">
<input type="text" class="span5"
data-bind="value: name, hasfocus: nameFocused"
autocorrect="off" autocapitalize="off" spellcheck="false"
data-i18n="[placeholder]GLOBAL/NAME"
/>
</div>
<input type="text" class="span5"
data-bind="value: name, hasfocus: nameFocused"
autocorrect="off" autocapitalize="off" spellcheck="false"
data-i18n="[placeholder]GLOBAL/NAME"
/>
</div>
<div class="legend" data-i18n="POPUPS_FILTER/LEGEND_CONDITIONS"></div>

View file

@ -1,5 +1,5 @@
<header>
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
<a href="#" class="close" data-bind="command: cancelCommand">×</a>
<h3>
<span data-i18n="POPUPS_CLEAR_FOLDER/TITLE_CLEAR_FOLDER" data-bind="visible: !clearingProcess()"></span>
<span data-i18n="POPUPS_CLEAR_FOLDER/TITLE_CLEARING_PROCESS" data-bind="visible: clearingProcess"></span>

View file

@ -1,23 +1,19 @@
<header>
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
<a href="#" class="close" data-bind="command: cancelCommand">×</a>
<h3 data-i18n="POPUPS_CREATE_FOLDER/TITLE_CREATE_FOLDER"></h3>
</header>
<div class="modal-body">
<div class="form-horizontal">
<div class="control-group">
<label class="control-label" data-i18n="POPUPS_CREATE_FOLDER/LABEL_PARENT"></label>
<div class="controls">
<select data-bind="options: parentFolderSelectList, value: selectedParentValue,
optionsText: 'name', optionsValue: 'id', optionsAfterRender: defaultOptionsAfterRender"></select>
</div>
<label data-i18n="POPUPS_CREATE_FOLDER/LABEL_PARENT"></label>
<select data-bind="options: parentFolderSelectList, value: selectedParentValue,
optionsText: 'name', optionsValue: 'id', optionsAfterRender: defaultOptionsAfterRender"></select>
</div>
<div class="control-group">
<label class="control-label" data-i18n="GLOBAL/NAME"></label>
<div class="controls">
<input type="text" class="uiInput inputName"
autofocus="" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="textInput: folderName, onEnter: createFolderCommand" />
</div>
<label data-i18n="GLOBAL/NAME"></label>
<input type="text" class="uiInput inputName"
autofocus="" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="textInput: folderName, onEnter: createFolderCommand" />
</div>
</div>
</div>

View file

@ -1,45 +1,34 @@
<header>
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
<a href="#" class="close" data-bind="command: cancelCommand">×</a>
<h3 data-i18n="POPUPS_SYSTEM_FOLDERS/TITLE_SYSTEM_FOLDERS"></h3>
</header>
<div class="modal-body">
<div class="form-horizontal">
<div class="alert" data-bind="visible: '' !== notification()" data-bind="text: notification"></div>
<br />
<div class="control-group">
<label class="control-label" data-i18n="FOLDER_LIST/SENT_NAME"></label>
<div class="controls">
<select data-bind="options: folderSelectList, value: sentFolder,
optionsText: 'name', optionsValue: 'id', optionsAfterRender: $root.defaultOptionsAfterRender"></select>
</div>
<label data-i18n="FOLDER_LIST/SENT_NAME"></label>
<select data-bind="options: folderSelectList, value: sentFolder,
optionsText: 'name', optionsValue: 'id', optionsAfterRender: $root.defaultOptionsAfterRender"></select>
</div>
<div class="control-group">
<label class="control-label" data-i18n="FOLDER_LIST/DRAFTS_NAME"></label>
<div class="controls">
<select data-bind="options: folderSelectList, value: draftFolder,
optionsText: 'name', optionsValue: 'id', optionsAfterRender: defaultOptionsAfterRender"></select>
</div>
<label data-i18n="FOLDER_LIST/DRAFTS_NAME"></label>
<select data-bind="options: folderSelectList, value: draftFolder,
optionsText: 'name', optionsValue: 'id', optionsAfterRender: defaultOptionsAfterRender"></select>
</div>
<div class="control-group">
<label class="control-label" data-i18n="GLOBAL/SPAM"></label>
<div class="controls">
<select data-bind="options: folderSelectList, value: spamFolder,
optionsText: 'name', optionsValue: 'id', optionsAfterRender: $root.defaultOptionsAfterRender"></select>
</div>
<label data-i18n="GLOBAL/SPAM"></label>
<select data-bind="options: folderSelectList, value: spamFolder,
optionsText: 'name', optionsValue: 'id', optionsAfterRender: $root.defaultOptionsAfterRender"></select>
</div>
<div class="control-group">
<label class="control-label" data-i18n="FOLDER_LIST/TRASH_NAME"></label>
<div class="controls">
<select data-bind="options: folderSelectList, value: trashFolder,
optionsText: 'name', optionsValue: 'id', optionsAfterRender: $root.defaultOptionsAfterRender"></select>
</div>
<label data-i18n="FOLDER_LIST/TRASH_NAME"></label>
<select data-bind="options: folderSelectList, value: trashFolder,
optionsText: 'name', optionsValue: 'id', optionsAfterRender: $root.defaultOptionsAfterRender"></select>
</div>
<div class="control-group">
<label class="control-label" data-i18n="FOLDER_LIST/ARCHIVE_NAME"></label>
<div class="controls">
<select data-bind="options: folderSelectList, value: archiveFolder,
optionsText: 'name', optionsValue: 'id', optionsAfterRender: $root.defaultOptionsAfterRender"></select>
</div>
<label data-i18n="FOLDER_LIST/ARCHIVE_NAME"></label>
<select data-bind="options: folderSelectList, value: archiveFolder,
optionsText: 'name', optionsValue: 'id', optionsAfterRender: $root.defaultOptionsAfterRender"></select>
</div>
</div>
</div>

View file

@ -1,5 +1,5 @@
<header class="g-ui-user-select-none">
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
<a href="#" class="close" data-bind="command: cancelCommand">×</a>
<h3>
<span data-bind="visible: !edit()" data-i18n="POPUPS_IDENTITY/TITLE_ADD_IDENTITY"></span>
<span data-bind="visible: edit" data-i18n="POPUPS_IDENTITY/TITLE_UPDATE_IDENTITY"></span>
@ -8,50 +8,38 @@
<div class="modal-body">
<div class="form-horizontal g-ui-user-select-none">
<div class="alert" data-bind="visible: '' !== submitError()">
<button type="button" class="close" data-bind="click: function () { submitError('') }">×</button>
<a href="#" class="close" data-bind="click: function () { submitError('') }">×</a>
<span data-bind="text: submitError"></span>
</div>
<br />
<div class="control-group" data-bind="visible: !owner(), css: {'error': emailHasError}">
<label class="control-label" data-i18n="GLOBAL/EMAIL"></label>
<div class="controls">
<div class="control-group" data-bind="css: {'error': emailHasError}">
<label data-i18n="GLOBAL/EMAIL"></label>
<div>
<div class="textEmail" data-bind="text: email, visible: owner"></div>
<input type="email" class="input-xlarge" autofocus=""
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: email, onEnter: addOrEditIdentityCommand, hasfocus: emailFocused" />
</div>
</div>
<div class="control-group" data-bind="visible: owner">
<label class="control-label" data-i18n="GLOBAL/EMAIL"></label>
<div class="controls">
<div class="textEmail" data-bind="text: email"></div>
data-bind="visible: !owner(), value: email, onEnter: addOrEditIdentityCommand, hasfocus: emailFocused" />
</div>
</div>
<div class="control-group">
<label class="control-label" data-i18n="GLOBAL/NAME"></label>
<div class="controls">
<input type="text" class="inputName input-xlarge"
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: name, onEnter: addOrEditIdentityCommand" />
</div>
<label data-i18n="GLOBAL/NAME"></label>
<input type="text" class="inputName input-xlarge"
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: name, onEnter: addOrEditIdentityCommand" />
</div>
<div class="control-group" data-bind="visible: showReplyTo, css: {'error': replyToHasError}">
<label class="control-label" data-i18n="GLOBAL/REPLY_TO"></label>
<div class="controls">
<input type="text" class="inputReplyTo input-xlarge"
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: replyTo, onEnter: addOrEditIdentityCommand, hasfocus: replyToFocused" />
</div>
<label data-i18n="GLOBAL/REPLY_TO"></label>
<input type="text" class="inputReplyTo input-xlarge"
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: replyTo, onEnter: addOrEditIdentityCommand, hasfocus: replyToFocused" />
</div>
<div class="control-group" data-bind="visible: showBcc, css: {'error': bccHasError}">
<label class="control-label" data-i18n="GLOBAL/BCC"></label>
<div class="controls">
<input type="text" class="inputBcc input-xlarge"
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: bcc, onEnter: addOrEditIdentityCommand, hasfocus: bccFocused" />
</div>
<label data-i18n="GLOBAL/BCC"></label>
<input type="text" class="inputBcc input-xlarge"
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: bcc, onEnter: addOrEditIdentityCommand, hasfocus: bccFocused" />
</div>
<div class="control-group" data-bind="visible: !showReplyTo() || !showBcc()">
<div class="controls">
<div>
<span data-bind="visible: !showReplyTo()">
<span class="g-ui-link" data-i18n="GLOBAL/REPLY_TO"
data-bind="click: function () { showReplyTo(true); }"></span>
@ -66,7 +54,7 @@
</div>
<hr />
<div class="control-group g-ui-user-select-none">
<div class="controls" data-bind="component: {
<div data-bind="component: {
name: 'Checkbox',
params: {
label: 'POPUPS_IDENTITY/LABEL_SIGNATURE_INSERT_BEFORE',

View file

@ -1,5 +1,5 @@
<header>
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
<a href="#" class="close" data-bind="command: cancelCommand">×</a>
<h3 data-i18n="SHORTCUTS_HELP/LEGEND_SHORTCUTS_HELP"></h3>
</header>
<div class="modal-body">

View file

@ -1,5 +1,5 @@
<header>
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
<a href="#" class="close" data-bind="command: cancelCommand">×</a>
<h3 data-i18n="POPUPS_MESSAGE_OPEN_PGP/TITLE_MESSAGE_OPEN_PGP"></h3>
</header>
<div class="modal-body">
@ -7,10 +7,9 @@
<div class="alert" data-bind="visible: '' !== notification()">
<span data-bind="text: notification"></span>
</div>
<br />
<div class="control-group">
<label class="control-label" data-i18n="POPUPS_MESSAGE_OPEN_PGP/LABEL_KEY"></label>
<div class="controls key-list" data-bind="foreach: privateKeys" style="margin-top: 5px">
<label data-i18n="POPUPS_MESSAGE_OPEN_PGP/LABEL_KEY"></label>
<div class="key-list" data-bind="foreach: privateKeys" style="margin-top: 5px">
<div class="key-list__item">
<i class="key-list__item__radio fontastic"></i>
<div class="key-list__item__names" data-bind="foreach: users">
@ -24,11 +23,9 @@
</div>
</div>
<div class="control-group">
<label class="control-label" data-i18n="GLOBAL/PASSWORD"></label>
<div class="controls">
<input type="password" class="inputPassword input-xlarge" autofocus="" autocomplete="current-password" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="textInput: password, onEnter: doCommand" />
</div>
<label data-i18n="GLOBAL/PASSWORD"></label>
<input type="password" class="inputPassword input-xlarge" autofocus="" autocomplete="current-password" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="textInput: password, onEnter: doCommand" />
</div>
</div>
</div>

View file

@ -1,44 +1,33 @@
<header>
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
<a href="#" class="close" data-bind="command: cancelCommand">×</a>
<h3 data-i18n="POPUPS_GENERATE_OPEN_PGP_KEYS/TITLE_GENERATE_OPEN_PGP_KEYS"></h3>
</header>
<div class="modal-body">
<div class="form-horizontal">
<div class="alert" data-bind="visible: '' !== submitError()">
<button type="button" class="close" data-bind="click: function () { submitError('') }">×</button>
<span data-bind="text: submitError"></span>
</div>
<br />
<div class="control-group" data-bind="css: {'error': emailError}">
<label class="control-label" data-i18n="GLOBAL/EMAIL"></label>
<div class="controls">
<input type="email" class="input-large"
autofocus="" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: email" />
</div>
</div>
<div class="control-group">
<label class="control-label" data-i18n="GLOBAL/NAME"></label>
<div class="controls">
<input type="text" class="inputName input-large"
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: name" />
</div>
</div>
<div class="control-group">
<label class="control-label" data-i18n="GLOBAL/PASSWORD"></label>
<div class="controls">
<input type="password" class="inputPassword input-large"
autocomplete="current-password" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: password" />
</div>
</div>
<div class="control-group">
<label class="control-label" data-i18n="POPUPS_GENERATE_OPEN_PGP_KEYS/LABEL_KEY_BIT_LENGTH"></label>
<div class="controls">
<select data-bind="value: keyBitLength, options: [2048, 4096]"></select>
</div>
</div>
<div class="modal-body form-horizontal">
<div class="alert" data-bind="visible: '' !== submitError()">
<a href="#" class="close" data-bind="click: function () { submitError('') }">×</a>
<span data-bind="text: submitError"></span>
</div>
<div class="control-group" data-bind="css: {'error': emailError}">
<label data-i18n="GLOBAL/EMAIL"></label>
<input type="email" class="input-large"
autofocus="" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: email" />
</div>
<div class="control-group">
<label data-i18n="GLOBAL/NAME"></label>
<input type="text" class="inputName input-large"
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: name" />
</div>
<div class="control-group">
<label data-i18n="GLOBAL/PASSWORD"></label>
<input type="password" class="inputPassword input-large"
autocomplete="current-password" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: password" />
</div>
<div class="control-group">
<label data-i18n="POPUPS_GENERATE_OPEN_PGP_KEYS/LABEL_KEY_BIT_LENGTH"></label>
<select data-bind="value: keyBitLength, options: [2048, 4096]"></select>
</div>
</div>
<footer>

View file

@ -1,6 +1,6 @@
<!-- ko with: script -->
<header>
<button type="button" class="close" data-bind="command: $root.cancelCommand">×</button>
<a href="#" class="close" data-bind="command: $root.cancelCommand">×</a>
<h3>
<span data-i18n="POPUPS_SIEVE_SCRIPT/TITLE_CREATE" data-bind="visible: !exists()"></span>
<span data-i18n="POPUPS_SIEVE_SCRIPT/TITLE_EDIT" data-bind="visible: exists"></span>
@ -10,13 +10,11 @@
<div class="modal-body">
<div class="control-group" data-bind="css: {'error': nameError}, hidden: exists">
<div class="controls">
<input type="text" class="span5"
data-bind="value: name, hasfocus: !exists()"
autocorrect="off" autocapitalize="off" spellcheck="false"
data-i18n="[placeholder]GLOBAL/NAME"
/>
</div>
<input type="text" class="span5"
data-bind="value: name, hasfocus: !exists()"
autocorrect="off" autocapitalize="off" spellcheck="false"
data-i18n="[placeholder]GLOBAL/NAME"
/>
</div>
<div class="alert g-ui-user-select-none" data-bind="visible: hasChanges">
@ -29,7 +27,7 @@
</div>
<div class="control-group" data-bind="visible: $root.rawActive">
<div class="controls">
<div>
<pre>
<b data-i18n="POPUPS_SIEVE_SCRIPT/CAPABILITY_LABEL"></b>:
<span data-bind="text: $root.sieveCapabilities"></span>

View file

@ -1,5 +1,5 @@
<header class="g-ui-user-select-none">
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
<a href="#" class="close" data-bind="command: cancelCommand">×</a>
<h3 data-i18n="POPUPS_VIEW_OPEN_PGP_KEY/TITLE_VIEW_OPEN_PGP_KEY"></h3>
</header>
<div class="modal-body">

View file

@ -1,7 +1,7 @@
<div class="form-horizontal">
<div class="legend" data-i18n="GLOBAL/CONTACTS"></div>
<div class="control-group">
<div class="controls" data-bind="component: {
<div data-bind="component: {
name: 'Checkbox',
params: {
label: 'SETTINGS_CONTACTS/LABEL_CONTACTS_AUTOSAVE',
@ -13,7 +13,7 @@
<div class="form-horizontal" data-bind="visible: allowContactsSync">
<div class="legend" data-i18n="SETTINGS_CONTACTS/LEGEND_CONTACTS_SYNC"></div>
<div class="control-group">
<div class="controls" data-bind="component: {
<div data-bind="component: {
name: 'Checkbox',
params: {
label: 'SETTINGS_CONTACTS/LABEL_CONTACTS_SYNC_ENABLE',
@ -22,25 +22,19 @@
}"></div>
</div>
<div class="control-group">
<label class="control-label" data-i18n="SETTINGS_CONTACTS/LABEL_CONTACTS_SYNC_AB_URL"></label>
<div class="controls">
<input type="text" class="input-xxlarge" autocomplete="off" autocorrect="off" autocapitalize="off"
spellcheck="false" data-bind="value: contactsSyncUrl" placeholder="https://" />
</div>
<label data-i18n="SETTINGS_CONTACTS/LABEL_CONTACTS_SYNC_AB_URL"></label>
<input type="text" class="input-xxlarge" autocomplete="off" autocorrect="off" autocapitalize="off"
spellcheck="false" data-bind="value: contactsSyncUrl" placeholder="https://" />
</div>
<div class="control-group">
<label class="control-label" data-i18n="SETTINGS_CONTACTS/LABEL_CONTACTS_SYNC_USER"></label>
<div class="controls">
<input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: contactsSyncUser" />
</div>
<label data-i18n="SETTINGS_CONTACTS/LABEL_CONTACTS_SYNC_USER"></label>
<input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: contactsSyncUser" />
</div>
<div class="control-group">
<label class="control-label" data-i18n="GLOBAL/PASSWORD"></label>
<div class="controls">
<input type="password" autocomplete="current-password" autocorrect="off" autocapitalize="off"
spellcheck="false" data-bind="value: contactsSyncPass" />
</div>
<label data-i18n="GLOBAL/PASSWORD"></label>
<input type="password" autocomplete="current-password" autocorrect="off" autocapitalize="off"
spellcheck="false" data-bind="value: contactsSyncPass" />
</div>
</div>

View file

@ -1,11 +1,9 @@
<div class="control-group" data-bind="css: {'error': actionValueError}" style="margin-bottom: 0">
<div class="controls">
<div data-bind="component: {
name: 'Checkbox',
params: {
label: 'POPUPS_FILTER/STOP_LABEL',
value: actionNoStop
}
}"></div>
</div>
<div data-bind="component: {
name: 'Checkbox',
params: {
label: 'POPUPS_FILTER/STOP_LABEL',
value: actionNoStop
}
}"></div>
</div>

View file

@ -1,11 +1,9 @@
<div class="control-group" data-bind="css: {'error': actionValueError}">
<div class="controls">
<input type="text" class="span3" data-bind="value: actionValue"
data-i18n="[placeholder]GLOBAL/EMAIL" />
</div>
<input type="text" class="span3" data-bind="value: actionValue"
data-i18n="[placeholder]GLOBAL/EMAIL" />
</div>
<div class="control-group">
<div class="controls">
<div>
<div data-bind="component: {
name: 'Checkbox',
params: {

View file

@ -1,11 +1,9 @@
<div class="control-group" data-bind="css: {'error': actionValueError}">
<div class="controls">
<select class="span3" data-bind="options: $root.folderSelectList, value: $root.selectedFolderValue,
optionsText: 'name', optionsValue: 'id', optionsAfterRender: $root.defaultOptionsAfterRender"></select>
</div>
<select class="span3" data-bind="options: $root.folderSelectList, value: $root.selectedFolderValue,
optionsText: 'name', optionsValue: 'id', optionsAfterRender: $root.defaultOptionsAfterRender"></select>
</div>
<div class="control-group">
<div class="controls">
<div>
<div data-bind="visible: $root.allowMarkAsRead, component: {
name: 'Checkbox',
params: {

View file

@ -1,5 +1,5 @@
<div class="control-group" data-bind="css: {'error': actionValueError}" style="margin-bottom: 0">
<div class="controls" data-bind="component: {
<div data-bind="component: {
name: 'Checkbox',
params: {
label: 'POPUPS_FILTER/STOP_LABEL',

View file

@ -1,5 +1,5 @@
<div class="control-group" data-bind="css: {'error': actionValueError}" style="margin-bottom: 0">
<div class="controls">
<div>
<textarea class="span5" data-bind="value: actionValue" style="height: 100px;"
data-i18n="[placeholder]POPUPS_FILTER/REJECT_MESSAGE_LABEL"></textarea>
<div data-bind="component: {

View file

@ -1,5 +1,5 @@
<div class="control-group" style="margin-bottom: 0">
<div class="controls" data-bind="component: {
<div data-bind="component: {
name: 'Select',
params: {
options: [1, 2, 3, 7, 30],
@ -10,26 +10,22 @@
}"></div>
</div>
<div class="control-group" data-bind="css: {'error': actionValueFourthError}" style="margin-bottom: 0">
<div class="controls">
<div>
<input type="text" class="span5" data-bind="value: actionValueFourth"
data-i18n="[placeholder]POPUPS_FILTER/VACATION_RECIPIENTS_LABEL" />
<button class="btn setRecipientsBtn fontastic" data-bind="click: setRecipients"></button>
</div>
</div>
<div class="control-group" style="margin-bottom: 0">
<div class="controls">
<input type="text" class="span5" data-bind="value: actionValueSecond"
data-i18n="[placeholder]POPUPS_FILTER/VACATION_SUBJECT_LABEL" />
</div>
<input type="text" class="span5" data-bind="value: actionValueSecond"
data-i18n="[placeholder]POPUPS_FILTER/VACATION_SUBJECT_LABEL" />
</div>
<div class="control-group" data-bind="css: {'error': actionValueError}" style="margin-bottom: 0">
<div class="controls">
<textarea class="span5" data-bind="value: actionValue" style="height: 100px;"
data-i18n="[placeholder]POPUPS_FILTER/VACATION_MESSAGE_LABEL"></textarea>
</div>
<textarea class="span5" data-bind="value: actionValue" style="height: 100px;"
data-i18n="[placeholder]POPUPS_FILTER/VACATION_MESSAGE_LABEL"></textarea>
</div>
<div class="control-group">
<div class="controls" data-bind="component: {
<div data-bind="component: {
name: 'Checkbox',
params: {
label: 'POPUPS_FILTER/STOP_LABEL',

View file

@ -25,7 +25,7 @@
<span data-i18n="SETTINGS_FOLDERS/TO_MANY_FOLDERS_DESC_2"></span>
</div>
<div class="alert folders-list-error" data-bind="visible: '' !== folderListError()">
<button type="button" class="close" data-bind="click: function () { folderListError(''); }">×</button>
<a href="#" class="close" data-bind="click: function () { folderListError(''); }">×</a>
<span data-bind="text: folderListError"></span>
</div>
<table class="table table-hover list-table" data-bind="i18nUpdate: folderList">

View file

@ -1,21 +1,19 @@
<div class="form-horizontal">
<div class="legend" data-i18n="SETTINGS_GENERAL/LEGEND_GENERAL"></div>
<div class="control-group">
<label class="control-label" data-i18n="SETTINGS_GENERAL/LABEL_IDENTITY"></label>
<div class="controls">
<b class="editMainIdentity" data-bind="click: editMainIdentity, text: identityMainDesc"></b>
</div>
<label data-i18n="SETTINGS_GENERAL/LABEL_IDENTITY"></label>
<b class="editMainIdentity" data-bind="click: editMainIdentity, text: identityMainDesc"></b>
</div>
<div class="control-group" data-bind="visible: allowLanguagesOnSettings">
<label class="control-label" data-i18n="SETTINGS_GENERAL/LABEL_LANGUAGE"></label>
<div class="controls">
<label data-i18n="SETTINGS_GENERAL/LABEL_LANGUAGE"></label>
<div>
<span class="select" tabindex="0" data-bind="text: languageFullName, click: selectLanguage, onSpace: selectLanguage, onEnter: selectLanguage"></span>
<span data-bind="saveTrigger: languageTrigger"></span>
</div>
</div>
<div class="control-group">
<label class="control-label" data-i18n="SETTINGS_GENERAL/LABEL_LAYOUT"></label>
<div class="controls" data-bind="component: {
<label data-i18n="SETTINGS_GENERAL/LABEL_LAYOUT"></label>
<div data-bind="component: {
name: 'Select',
params: {
options: layoutTypes,
@ -27,8 +25,8 @@
}"></div>
</div>
<div class="control-group">
<label class="control-label" data-i18n="SETTINGS_GENERAL/LABEL_EDITOR"></label>
<div class="controls" data-bind="component: {
<label data-i18n="SETTINGS_GENERAL/LABEL_EDITOR"></label>
<div data-bind="component: {
name: 'Select',
params: {
options: editorDefaultTypes,
@ -40,16 +38,16 @@
}"></div>
</div>
<div class="control-group">
<label class="control-label" data-i18n="SETTINGS_GENERAL/LABEL_MESSAGE_PER_PAGE"></label>
<div class="controls">
<label data-i18n="SETTINGS_GENERAL/LABEL_MESSAGE_PER_PAGE"></label>
<div>
<input type="number" min="10" max="50" step="1" class="span1" data-bind="textInput: messagesPerPage"/>
&nbsp;
<span data-bind="saveTrigger: mppTrigger"></span>
</div>
</div>
<div class="control-group">
<label class="control-label" data-i18n="SETTINGS_GENERAL/LABEL_MARK_MESSAGE_READ_AFTER"></label>
<div class="controls">
<label data-i18n="SETTINGS_GENERAL/LABEL_MARK_MESSAGE_READ_AFTER"></label>
<div>
<input type="number" min="0" step="1" class="span1" data-bind="textInput: messageReadDelay"/>
&nbsp;
<span data-i18n="SETTINGS_GENERAL/SECONDS"></label>
@ -57,7 +55,7 @@
</div>
</div>
<div class="control-group">
<div class="controls">
<div>
<div data-bind="component: {
name: 'Checkbox',
params: {
@ -99,7 +97,7 @@
<div class="legend" data-i18n="SETTINGS_GENERAL/LABEL_NOTIFICATIONS"></div>
<div class="control-group">
<div class="controls">
<div>
<div>
<div data-bind="component: {
name: 'Checkbox',

View file

@ -13,7 +13,7 @@
<br />
<br />
<div class="control-group">
<div class="controls" data-bind="component: {
<div data-bind="component: {
name: 'Checkbox',
params: {
label: 'SETTINGS_OPEN_PGP/LABEL_ALLOW_DRAFT_AUTOSAVE',

View file

@ -1,8 +1,8 @@
<div class="form-horizontal" data-bind="visible: capaAutoLogout">
<div class="legend" data-i18n="SETTINGS_SECURITY/LEGEND_SECURITY"></div>
<div class="control-group">
<label class="control-label" data-i18n="SETTINGS_SECURITY/LABEL_AUTOLOGOUT"></label>
<div class="controls" data-bind="component: {
<label data-i18n="SETTINGS_SECURITY/LABEL_AUTOLOGOUT"></label>
<div data-bind="component: {
name: 'Select',
params: {
inline: true,

View file

@ -15,6 +15,7 @@
border-radius: 4px;
color: @warningText;
max-width: 800px;
min-height: @baseLineHeight;
}
// Adjust close link position

View file

@ -9,22 +9,10 @@
font-weight: bold;
line-height: @baseLineHeight;
color: inherit;
cursor: pointer;
text-decoration: none;
text-shadow: 0 1px 0 rgba(255,255,255,1);
opacity: 0.5;
&:hover {
text-decoration: none;
cursor: pointer;
opacity: 0.8;
&:not(:hover) {
opacity: 0.5;
}
}
// Additional properties for button version
// iOS requires the button element instead of an anchor tag.
// If you want the anchor version, it requires `href="#"`.
button.close {
padding: 0;
cursor: pointer;
background: transparent;
border: 0;
-webkit-appearance: none;
}

View file

@ -49,24 +49,13 @@ input {
border-radius: @inputBorderRadius;
}
// Reset appearance properties for textual inputs and textarea
// Declare width for legacy (can't be on input[type=*] selectors or it's too specific)
input,
textarea {
width: 210px;
}
// Reset height since textareas have rows
textarea {
height: auto;
resize: none;
}
// Everything else
textarea,
input {
background-color: @inputBackground;
border: 1px solid @inputBorder;
box-shadow: inset 0 1px 1px rgba(0,0,0,.075);
transition: border linear .2s, box-shadow linear .2s;
width: 210px;
// Focus state
&:focus {
@ -188,18 +177,19 @@ input[type="checkbox"][readonly] {
// Increase spacing between groups
.control-group {
margin-bottom: @baseLineHeight;
}
// Float the labels left
.control-label {
display: inline-block;
width: 140px;
padding-top: 5px;
text-align: right;
}
// Move over all input controls and content
.controls {
display: inline-block;
margin-left: 20px;
vertical-align: top;
> label {
display: inline-block;
padding-top: 5px;
text-align: right;
width: 140px;
}
// Move over all input controls and content
> *:not(label) {
display: inline-block;
margin-left: 20px;
vertical-align: top;
}
}
}