mirror of https://github.com/keeweb/keeweb
Merge branch 'master' into develop
commit
6003b21f6a
|
@ -457,8 +457,8 @@
|
|||
"setFileLastSyncUnknown": "unbekannt",
|
||||
"setFileSyncInProgress": "Synchronisierung läuft",
|
||||
"setFileSyncError": "Synchronisierungsfehler",
|
||||
"setFilePass": "Master-Passwort",
|
||||
"setFileConfirmPass": "Master-Passwort bestätigen",
|
||||
"setFilePass": "Hauptpasswort",
|
||||
"setFileConfirmPass": "Hauptpasswort bestätigen",
|
||||
"setFilePassChange": "Um das Passwort zu ändern, geben Sie es im Bestätigungsfeld an",
|
||||
"setFilePassChanged": "Das Passwort wurde geändert. Lassen Sie das Feld leer, um das bisherige Passwort zu behalten.",
|
||||
"setFilePassNotMatch": "Die Passwörter stimmen nicht überein, bitte geben Sie sie erneut ein",
|
||||
|
|
|
@ -75,6 +75,8 @@ AppSettingsModel.defineModelProperties(
|
|||
canExportXml: true,
|
||||
canExportHtml: true,
|
||||
canSaveTo: true,
|
||||
canOpenWebdav: true,
|
||||
canOpenGenerator: true,
|
||||
|
||||
dropbox: true,
|
||||
webdav: true,
|
||||
|
|
|
@ -303,27 +303,35 @@ class Plugin extends Model {
|
|||
}
|
||||
|
||||
applyCss(name, data, theme) {
|
||||
return Promise.resolve().then(() => {
|
||||
const blob = new Blob([data], { type: 'text/css' });
|
||||
const objectUrl = URL.createObjectURL(blob);
|
||||
const id = 'plugin-css-' + name;
|
||||
const el = this.createElementInHead('link', id, {
|
||||
rel: 'stylesheet',
|
||||
href: objectUrl
|
||||
});
|
||||
el.addEventListener('load', () => URL.revokeObjectURL(objectUrl));
|
||||
if (theme) {
|
||||
const locKey = this.getThemeLocaleKey(theme.name);
|
||||
SettingsManager.allThemes[theme.name] = locKey;
|
||||
BaseLocale[locKey] = theme.title;
|
||||
for (const styleSheet of Array.from(document.styleSheets)) {
|
||||
if (styleSheet.ownerNode.id === id) {
|
||||
this.processThemeStyleSheet(styleSheet, theme);
|
||||
break;
|
||||
return new Promise((resolve, reject) => {
|
||||
try {
|
||||
const blob = new Blob([data], { type: 'text/css' });
|
||||
const objectUrl = URL.createObjectURL(blob);
|
||||
const id = 'plugin-css-' + name;
|
||||
const el = this.createElementInHead('link', id, {
|
||||
rel: 'stylesheet',
|
||||
href: objectUrl
|
||||
});
|
||||
el.addEventListener('load', () => {
|
||||
URL.revokeObjectURL(objectUrl);
|
||||
if (theme) {
|
||||
const locKey = this.getThemeLocaleKey(theme.name);
|
||||
SettingsManager.allThemes[theme.name] = locKey;
|
||||
BaseLocale[locKey] = theme.title;
|
||||
for (const styleSheet of Array.from(document.styleSheets)) {
|
||||
if (styleSheet.ownerNode.id === id) {
|
||||
this.processThemeStyleSheet(styleSheet, theme);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
this.logger.debug('Plugin style installed');
|
||||
resolve();
|
||||
});
|
||||
} catch (e) {
|
||||
this.logger.error('Error installing plugin style', e);
|
||||
reject(e);
|
||||
}
|
||||
this.logger.debug('Plugin style installed');
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -83,11 +83,17 @@ class OpenView extends View {
|
|||
Object.keys(Storage).forEach(name => {
|
||||
const prv = Storage[name];
|
||||
if (!prv.system && prv.enabled) {
|
||||
if (name === 'webdav' && !this.model.settings.canOpenWebdav) {
|
||||
return;
|
||||
}
|
||||
storageProviders.push(prv);
|
||||
}
|
||||
});
|
||||
storageProviders.sort((x, y) => (x.uipos || Infinity) - (y.uipos || Infinity));
|
||||
const showMore = storageProviders.length || this.model.settings.canOpenSettings;
|
||||
const showMore =
|
||||
storageProviders.length ||
|
||||
this.model.settings.canOpenSettings ||
|
||||
this.model.settings.canOpenGenerator;
|
||||
const showLogo =
|
||||
!showMore &&
|
||||
!this.model.settings.canOpen &&
|
||||
|
@ -101,6 +107,7 @@ class OpenView extends View {
|
|||
canOpen: this.model.settings.canOpen,
|
||||
canOpenDemo: this.model.settings.canOpenDemo,
|
||||
canOpenSettings: this.model.settings.canOpenSettings,
|
||||
canOpenGenerator: this.model.settings.canOpenGenerator,
|
||||
canCreate: this.model.settings.canCreate,
|
||||
canRemoveLatest: this.model.settings.canRemoveLatest,
|
||||
showMore,
|
||||
|
|
|
@ -1,54 +1,26 @@
|
|||
/* prettier-ignore */
|
||||
/* This file is also parsed in JS to build theme styles, see theme-vars.js */
|
||||
@function set-theme-vars($t) {
|
||||
@return map-merge(
|
||||
$t,
|
||||
(
|
||||
muted-color:
|
||||
mix(
|
||||
map-get($t, medium-color),
|
||||
map-get($t, background-color),
|
||||
map-get($t, mute-percent)
|
||||
),
|
||||
muted-color-border:
|
||||
mix(
|
||||
map-get($t, medium-color),
|
||||
map-get($t, background-color),
|
||||
semi-mute-percent(map-get($t, mute-percent))
|
||||
),
|
||||
muted-color: mix(map-get($t, medium-color), map-get($t, background-color), map-get($t, mute-percent)),
|
||||
muted-color-border: mix(map-get($t, medium-color), map-get($t, background-color), semi-mute-percent(map-get($t, mute-percent))),
|
||||
text-selection-bg-color: rgba(map-get($t, action-color), 0.3),
|
||||
text-selection-bg-color-error: rgba(map-get($t, error-color), 0.8),
|
||||
text-semi-muted-color: mix(map-get($t, action-color), map-get($t, text-color), 0.5),
|
||||
text-contrast-action-color:
|
||||
text-contrast-color(
|
||||
map-get($t, action-color),
|
||||
map-get($t, color-lightness-shift),
|
||||
map-get($t, background-color),
|
||||
map-get($t, text-color)
|
||||
),
|
||||
text-contrast-error-color:
|
||||
text-contrast-color(
|
||||
map-get($t, error-color),
|
||||
map-get($t, color-lightness-shift),
|
||||
map-get($t, background-color),
|
||||
map-get($t, text-color)
|
||||
),
|
||||
text-contrast-action-color: text-contrast-color(map-get($t, action-color), map-get($t, color-lightness-shift), map-get($t, background-color), map-get($t, text-color)),
|
||||
text-contrast-error-color: text-contrast-color(map-get($t, error-color), map-get($t, color-lightness-shift), map-get($t, background-color), map-get($t, text-color)),
|
||||
base-border-color: mix(map-get($t, medium-color), map-get($t, background-color), 50%),
|
||||
accent-border-color: mix(map-get($t, medium-color), map-get($t, background-color), 65%),
|
||||
light-border-color:
|
||||
mix(
|
||||
map-get($t, medium-color),
|
||||
map-get($t, background-color),
|
||||
map-get($t, light-border-percent)
|
||||
),
|
||||
light-border-color: mix(map-get($t, medium-color), map-get($t, background-color), map-get($t, light-border-percent)),
|
||||
form-box-border-focus: map-get($t, action-color),
|
||||
form-box-shadow-color-focus: lightness-alpha(map-get($t, action-color), -5%, -0.3),
|
||||
form-box-shadow-color-focus-error: lightness-alpha(map-get($t, error-color), -5%, -0.3),
|
||||
dropdown-box-shadow-color: rgba(map-get($t, medium-color), 0.05),
|
||||
secondary-background-color:
|
||||
mix(map-get($t, medium-color), map-get($t, background-color), 10%),
|
||||
intermediate-background-color:
|
||||
mix(map-get($t, medium-color), map-get($t, background-color), 3%),
|
||||
intermediate-pressed-background-color:
|
||||
mix(map-get($t, medium-color), map-get($t, background-color), 2.6%),
|
||||
secondary-background-color: mix(map-get($t, medium-color), map-get($t, background-color), 10%),
|
||||
intermediate-background-color: mix(map-get($t, medium-color), map-get($t, background-color), 3%),
|
||||
intermediate-pressed-background-color: mix(map-get($t, medium-color), map-get($t, background-color), 2.6%),
|
||||
disabled-background-color: shade(map-get($t, background-color), 5%),
|
||||
action-background-color-focus: shade(map-get($t, action-color), 20%),
|
||||
action-background-color-focus-tr: rgba(shade(map-get($t, action-color), 20%), 0.1),
|
||||
|
|
|
@ -51,10 +51,12 @@
|
|||
</div>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
<div class="open__icon open__icon-generate" tabindex="12" id="open__icon-generate">
|
||||
<i class="fa fa-bolt open__icon-i"></i>
|
||||
<div class="open__icon-text">{{res 'openGenerate'}}</div>
|
||||
</div>
|
||||
{{#if canOpenGenerator}}
|
||||
<div class="open__icon open__icon-generate" tabindex="12" id="open__icon-generate">
|
||||
<i class="fa fa-bolt open__icon-i"></i>
|
||||
<div class="open__icon-text">{{res 'openGenerate'}}</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{#if canOpenSettings}}
|
||||
<div class="open__icon open__icon-settings" tabindex="12" id="open__icon-settings">
|
||||
<i class="fa fa-cog open__icon-i"></i>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "KeeWeb",
|
||||
"version": "1.13.3",
|
||||
"version": "1.13.4",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "KeeWeb",
|
||||
"version": "1.13.3",
|
||||
"version": "1.13.4",
|
||||
"description": "Free cross-platform password manager compatible with KeePass",
|
||||
"main": "main.js",
|
||||
"homepage": "https://keeweb.info",
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "keeweb",
|
||||
"version": "1.13.3",
|
||||
"version": "1.13.4",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "keeweb",
|
||||
"version": "1.13.3",
|
||||
"version": "1.13.4",
|
||||
"description": "Free cross-platform password manager compatible with KeePass",
|
||||
"main": "Gruntfile.js",
|
||||
"private": true,
|
||||
|
|
|
@ -1,5 +1,9 @@
|
|||
Release notes
|
||||
-------------
|
||||
##### v1.13.4 (2020-04-15)
|
||||
`-` fix #1457: fixed styles in theme plugins
|
||||
`+` #1456: options to hide webdav and password generator
|
||||
|
||||
##### v1.13.3 (2020-04-11)
|
||||
`-` fix #1451: fixed slow global auto-type on desktop
|
||||
|
||||
|
|
Loading…
Reference in New Issue