diff --git a/.eslintrc b/.eslintrc index ccad657..7c17ba3 100644 --- a/.eslintrc +++ b/.eslintrc @@ -175,6 +175,7 @@ "sendMessage": "readonly", "showNotification": "readonly", "siteMatch": "readonly", + "SitePreferences": "readonly", "slashNeededForUrl": "readonly", "SORT_BY_GROUP_AND_TITLE": "readonly", "SORT_BY_GROUP_AND_USERNAME": "readonly", diff --git a/keepassxc-browser/_locales/en/messages.json b/keepassxc-browser/_locales/en/messages.json index af2b34b..7b55fe0 100644 --- a/keepassxc-browser/_locales/en/messages.json +++ b/keepassxc-browser/_locales/en/messages.json @@ -678,6 +678,10 @@ "message": "Site Preferences", "description": "Site Preferences page header." }, + "optionsSitePreferencesSettings": { + "message": "Settings", + "description": "Site Preferences settings button text." + }, "optionsMenuAbout": { "message": "About", "description": "About page header." diff --git a/keepassxc-browser/common/global.js b/keepassxc-browser/common/global.js index 7b70890..86edb80 100755 --- a/keepassxc-browser/common/global.js +++ b/keepassxc-browser/common/global.js @@ -61,6 +61,17 @@ const ManualFill = { BOTH: 2 }; +const SitePreferences = { + ALLOW_IFRAMES: 'allowIframes', + IMPROVED_FIELD_DETECTION: 'improvedFieldDetection', + USERNAME_ONLY: 'usernameOnly', +}; + +// Returns a string with 'px' for CSS styles +const Pixels = function(value) { + return String(value) + 'px'; +}; + const compareVersion = function(minimum, current, canBeEqual = true) { if (!minimum || !current || minimum?.indexOf('.') === -1 || current?.indexOf('.') === -1) { return false; diff --git a/keepassxc-browser/content/keepassxc-browser.js b/keepassxc-browser/content/keepassxc-browser.js index 6953c8e..3c528ec 100755 --- a/keepassxc-browser/content/keepassxc-browser.js +++ b/keepassxc-browser/content/keepassxc-browser.js @@ -62,10 +62,10 @@ kpxc.addToSitePreferences = async function(optionName, addWildcard = false) { await sendMessage('save_settings', kpxc.settings); - if (optionName === 'allowIframes') { + if (optionName === SitePreferences.ALLOW_IFRAMES) { await sendMessage('page_set_allow_iframes', [ true, site ]); await sendMessage('iframe_detected', false); - } else if (optionName === 'usernameOnly') { + } else if (optionName === SitePreferences.USERNAME_ONLY) { await sendMessage('username_field_detected', false); } }; @@ -952,9 +952,9 @@ browser.runtime.onMessage.addListener(async function(req, sender) { if (req.action === 'activated_tab') { kpxc.triggerActivatedTab(); } else if (req.action === 'add_allow_iframes_option') { - kpxc.addToSitePreferences('allowIframes'); + kpxc.addToSitePreferences(SitePreferences.ALLOW_IFRAMES); } else if (req.action === 'add_username_only_option') { - kpxc.addToSitePreferences('usernameOnly', true); + kpxc.addToSitePreferences(SitePreferences.USERNAME_ONLY, true); } else if (req.action === 'check_database_hash' && 'hash' in req) { kpxc.detectDatabaseChange(req); } else if (req.action === 'choose_credential_fields') { diff --git a/keepassxc-browser/content/ui.js b/keepassxc-browser/content/ui.js index 165e78c..50d6962 100644 --- a/keepassxc-browser/content/ui.js +++ b/keepassxc-browser/content/ui.js @@ -32,11 +32,6 @@ const $ = function(elem) { return document.querySelector(elem); }; -// Returns a string with 'px' for CSS styles -const Pixels = function(value) { - return String(value) + 'px'; -}; - // Basic icon class class Icon { constructor(field, databaseState = DatabaseState.DISCONNECTED, segmented = false) { diff --git a/keepassxc-browser/css/colors.css b/keepassxc-browser/css/colors.css index d045b22..1fb7a50 100644 --- a/keepassxc-browser/css/colors.css +++ b/keepassxc-browser/css/colors.css @@ -4,6 +4,7 @@ --kpxc-autocomplete-menu-border: 1px solid #ddd; --kpxc-background-color: #fff; --kpxc-box-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1); + --kpxc-box-shadow-strong: 0 20px 25px -5px rgb(0 0 0 / 0.8), 0 8px 10px -6px rgb(0 0 0 / 0.8); --kpxc-card-background-color: #fff; --kpxc-card-border-color: rgba(0, 0, 0, .125); --kpxc-card-header-color: #fafafa; @@ -29,7 +30,6 @@ } @media (prefers-color-scheme: dark) { - :root, :host { --kpxc-autocomplete-footer-color: #2b2a2a; @@ -114,4 +114,3 @@ --kpxc-lighter-text-color: rgba(0, 0, 0, 0.8); --kpxc-light-text-color: rgba(0, 0, 0, 0.5); } -} diff --git a/keepassxc-browser/options/options.css b/keepassxc-browser/options/options.css index 01dcf63..e7827d3 100644 --- a/keepassxc-browser/options/options.css +++ b/keepassxc-browser/options/options.css @@ -105,12 +105,6 @@ tbody { color: var(--kpxc-text-color); } -.table-striped > tbody > tr:nth-of-type(odd) input[type="checkbox"] { - background-color: var(--kpxc-card-background-color) !important; - border-color: var(--kpxc-input-main-border-color) !important; - color: var(--kpxc-text-color) !important; -} - .table-striped > tbody > tr:nth-of-type(odd) .form-check-input:checked { background-color: var(--kpxc-checkbox-background-color) !important; } @@ -136,14 +130,14 @@ table tbody tr.empty:not(:nth-last-child(2)) { display: none; } -#tab-site-preferences td:nth-of-type(2), -#tab-site-preferences td:nth-of-type(2) select { +#tab-site-preferences td:nth-of-type(3), +#tab-site-preferences td:nth-of-type(3) select { width: 200px; } +#tab-site-preferences td:nth-of-type(2), #tab-site-preferences td:nth-of-type(3), #tab-site-preferences td:nth-of-type(4), -#tab-site-preferences td:nth-of-type(5), table td:last-of-type { width: 1px; } @@ -233,6 +227,26 @@ table td:last-of-type { color: var(--kpxc-text-color); } +.non-clickable { + pointer-events: none; +} + +.settings-dropdown { + box-shadow: var(--kpxc-box-shadow-strong); + overflow: hidden; + position: absolute; +} + +.settings-dropdown-body { + background-color: var(--bs-table-bg); +} + +.dropdown-divider { + border-top: 1px solid var(--kpxc-table-odd-color); + height: 0.5rem; + margin-top: 0.3rem; +} + .site-preferences-input { border: 0; border-bottom-right-radius: 4px !important; diff --git a/keepassxc-browser/options/options.html b/keepassxc-browser/options/options.html index eb2a3de..0ef3fc9 100644 --- a/keepassxc-browser/options/options.html +++ b/keepassxc-browser/options/options.html @@ -260,7 +260,7 @@
- + - - - - -