mirror of
https://github.com/bitwarden/browser
synced 2025-12-17 16:53:34 +00:00
Merge branch 'master' into patrickhlauke-a11y-patch2
This commit is contained in:
@@ -331,7 +331,7 @@
|
||||
"message": "Etibarsız ana şifrə"
|
||||
},
|
||||
"vaultTimeout": {
|
||||
"message": "Anbara müraciət vaxtı bitdi"
|
||||
"message": "Anbara müraciət bitəcək"
|
||||
},
|
||||
"lockNow": {
|
||||
"message": "İndi kilidlə"
|
||||
|
||||
@@ -501,7 +501,7 @@
|
||||
"message": "Edited item"
|
||||
},
|
||||
"deleteItemConfirmation": {
|
||||
"message": "Are you sure you want to delete this item?"
|
||||
"message": "Do you really want to send to the bin?"
|
||||
},
|
||||
"deletedItem": {
|
||||
"message": "Sent item to bin"
|
||||
@@ -600,7 +600,7 @@
|
||||
"description": "Light color"
|
||||
},
|
||||
"solarizedDark": {
|
||||
"message": "Solarised Dark",
|
||||
"message": "Solarized Dark",
|
||||
"description": "'Solarized' is a noun and the name of a color scheme. It should not be translated."
|
||||
},
|
||||
"exportVault": {
|
||||
@@ -638,7 +638,7 @@
|
||||
"message": "Bitwarden allows you to share your vault items with others by using an organisation. Would you like to visit the bitwarden.com website to learn more?"
|
||||
},
|
||||
"moveToOrganization": {
|
||||
"message": "Move to organisation"
|
||||
"message": "Move to Organisation"
|
||||
},
|
||||
"share": {
|
||||
"message": "Share"
|
||||
@@ -909,7 +909,7 @@
|
||||
"message": "The environment URLs have been saved."
|
||||
},
|
||||
"enableAutoFillOnPageLoad": {
|
||||
"message": "Enable auto-fill on page load"
|
||||
"message": "Enable Auto-fill on Page Load"
|
||||
},
|
||||
"enableAutoFillOnPageLoadDesc": {
|
||||
"message": "If a login form is detected, automatically perform an auto-fill when the web page loads."
|
||||
@@ -1116,7 +1116,7 @@
|
||||
"message": "City / town"
|
||||
},
|
||||
"stateProvince": {
|
||||
"message": "State / Union territory"
|
||||
"message": "County"
|
||||
},
|
||||
"zipPostalCode": {
|
||||
"message": "Postcode"
|
||||
@@ -1429,13 +1429,13 @@
|
||||
"message": "By checking this box you agree to the following:"
|
||||
},
|
||||
"acceptPoliciesError": {
|
||||
"message": "Terms of Service and Privacy Policy have not been acknowledged."
|
||||
"message": "Terms of service and privacy policy have not been acknowledged."
|
||||
},
|
||||
"termsOfService": {
|
||||
"message": "Terms of Service"
|
||||
"message": "Terms of service"
|
||||
},
|
||||
"privacyPolicy": {
|
||||
"message": "Privacy Policy"
|
||||
"message": "Privacy policy"
|
||||
},
|
||||
"hintEqualsPassword": {
|
||||
"message": "Your password hint cannot be the same as your password."
|
||||
@@ -1465,7 +1465,7 @@
|
||||
"message": "Unable to enable biometrics"
|
||||
},
|
||||
"errorEnableBiometricDesc": {
|
||||
"message": "Action was canceled by the desktop application"
|
||||
"message": "Action was cancelled by the desktop application"
|
||||
},
|
||||
"nativeMessagingInvalidEncryptionDesc": {
|
||||
"message": "Desktop application invalidated the secure communication channel. Please retry this operation"
|
||||
@@ -1477,7 +1477,7 @@
|
||||
"message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account."
|
||||
},
|
||||
"nativeMessagingWrongUserTitle": {
|
||||
"message": "Account missmatch"
|
||||
"message": "Account mismatch"
|
||||
},
|
||||
"biometricsNotEnabledTitle": {
|
||||
"message": "Biometrics not enabled"
|
||||
@@ -1504,10 +1504,10 @@
|
||||
"message": "This action cannot be done in the sidebar, please retry the action in the popup or popout."
|
||||
},
|
||||
"personalOwnershipSubmitError": {
|
||||
"message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections."
|
||||
"message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organisation and choose from available Collections."
|
||||
},
|
||||
"personalOwnershipPolicyInEffect": {
|
||||
"message": "An organization policy is affecting your ownership options."
|
||||
"message": "An organisation policy is affecting your ownership options."
|
||||
},
|
||||
"excludedDomains": {
|
||||
"message": "Excluded Domains"
|
||||
|
||||
@@ -635,7 +635,7 @@
|
||||
"message": "Aprende sobre Organizaciones"
|
||||
},
|
||||
"learnOrgConfirmation": {
|
||||
"message": "Bitwarden te permite compartir tus objetos de bóveda con otros usando una organización. ¿Quieres visitar el sitio web de bitwarden.com para saber más?"
|
||||
"message": "Bitwarden te permite compartir objetos de tu caja fuerte con otros usando una organización. ¿Quieres visitar el sitio web de bitwarden.com para saber más?"
|
||||
},
|
||||
"moveToOrganization": {
|
||||
"message": "Mover a la Organización"
|
||||
|
||||
@@ -638,7 +638,7 @@
|
||||
"message": "Bitwarden võimaldab sul hoidla sisu teiste kasutajatega jagada, kasutades selleks organisatsiooni kontot. Soovid külastada lehekülge bitwarden.com ja selle kohta rohkem lugeda?"
|
||||
},
|
||||
"moveToOrganization": {
|
||||
"message": "Teisalda organisatsioonile"
|
||||
"message": "Teisalda organisatsiooni"
|
||||
},
|
||||
"share": {
|
||||
"message": "Jaga"
|
||||
|
||||
@@ -312,7 +312,7 @@
|
||||
"message": "Holvisi on lukittu. Syötä pääsalasana jatkaaksesi."
|
||||
},
|
||||
"unlock": {
|
||||
"message": "Avaa lukitus"
|
||||
"message": "Avaa"
|
||||
},
|
||||
"loggedInAsOn": {
|
||||
"message": "Kirjautuneena tunnuksella $EMAIL$ palveluun $HOSTNAME$.",
|
||||
@@ -638,7 +638,7 @@
|
||||
"message": "Bitwardenin avulla voit jakaa holvisi sisältöä muiden kanssa organisaatiotiliä käyttäen. Haluatko lukea bitwarden.com-sivustolta lisää?"
|
||||
},
|
||||
"moveToOrganization": {
|
||||
"message": "Siirrä organisaatioon"
|
||||
"message": "Siirrä organisaatiolle"
|
||||
},
|
||||
"share": {
|
||||
"message": "Jaa"
|
||||
@@ -657,7 +657,7 @@
|
||||
}
|
||||
},
|
||||
"moveToOrgDesc": {
|
||||
"message": "Valitse organisaatio, johon haluat siirtää kohteen. Tämä siirtää kohteen organisaation omistukseen, etkä tämän jälkeen ole enää sen suora omistaja."
|
||||
"message": "Valitse organisaatio, jolle haluat siirtää kohteen. Tämä siirtää kohteen organisaation omistukseen, etkä tämän jälkeen ole enää sen suora omistaja."
|
||||
},
|
||||
"learnMore": {
|
||||
"message": "Lue lisää"
|
||||
@@ -1292,10 +1292,10 @@
|
||||
"description": "PIN code. Ex. The short code (often numeric) that you use to unlock a device."
|
||||
},
|
||||
"unlockWithPin": {
|
||||
"message": "Avaa lukitus PIN-koodilla"
|
||||
"message": "Avaa PIN-koodilla"
|
||||
},
|
||||
"setYourPinCode": {
|
||||
"message": "Aseta PIN-koodisi Bitwardenin avausta varten. PIN-asetukset tyhjentyvät, jos kirjaudut kokonaan ulos sovelluksesta."
|
||||
"message": "Aseta PIN-koodi Bitwardenin avaukselle. PIN-asetukset tyhjentyvät, jos kirjaudut kokonaan ulos laajennuksesta."
|
||||
},
|
||||
"pinRequired": {
|
||||
"message": "PIN-koodi vaaditaan."
|
||||
|
||||
@@ -482,7 +482,7 @@
|
||||
"message": "यूआरआइ"
|
||||
},
|
||||
"uriPosition": {
|
||||
"message": "यू.आर.ऐ",
|
||||
"message": "URI $POSITION$",
|
||||
"description": "A listing of URIs. Ex: URI 1, URI 2, URI 3, etc.",
|
||||
"placeholders": {
|
||||
"position": {
|
||||
@@ -501,10 +501,10 @@
|
||||
"message": "संपादित आइटम "
|
||||
},
|
||||
"deleteItemConfirmation": {
|
||||
"message": "क्या आप वास्तव में कचरे में भेजना चाहते हैं?"
|
||||
"message": "क्या आप वास्तव में थ्रैश में भेजना चाहते हैं?"
|
||||
},
|
||||
"deletedItem": {
|
||||
"message": "कचरा में भेजे"
|
||||
"message": "थ्रैश में भेजे"
|
||||
},
|
||||
"overwritePassword": {
|
||||
"message": "Overwrite Password"
|
||||
@@ -687,7 +687,7 @@
|
||||
"message": "Add New Attachment"
|
||||
},
|
||||
"noAttachments": {
|
||||
"message": "कोई अटैचमेंट नहीं"
|
||||
"message": "कोई अटैचमेंट नहीं।"
|
||||
},
|
||||
"attachmentSaved": {
|
||||
"message": "अटैचमेंट बच गया है।"
|
||||
@@ -696,10 +696,10 @@
|
||||
"message": "फ़ाइल"
|
||||
},
|
||||
"selectFile": {
|
||||
"message": "फ़ाइल का चयन करें|"
|
||||
"message": "फ़ाइल का चयन करें।"
|
||||
},
|
||||
"maxFileSize": {
|
||||
"message": "अधिकतम फाइल आकार 500 MB है"
|
||||
"message": "अधिकतम फाइल आकार 500 MB है।"
|
||||
},
|
||||
"featureUnavailable": {
|
||||
"message": "Feature Unavailable"
|
||||
@@ -792,7 +792,7 @@
|
||||
}
|
||||
},
|
||||
"verificationCodeEmailSent": {
|
||||
"message": "ईमेल $EMAIL$ को भेजा गया|",
|
||||
"message": "ईमेल $EMAIL$ को भेजा गया।",
|
||||
"placeholders": {
|
||||
"email": {
|
||||
"content": "$1",
|
||||
@@ -966,7 +966,7 @@
|
||||
"message": "New Custom Field"
|
||||
},
|
||||
"dragToSort": {
|
||||
"message": "सॉर्ट करने के लिए खींचें"
|
||||
"message": "सॉर्ट करने के लिए ड्रैग करें"
|
||||
},
|
||||
"cfTypeText": {
|
||||
"message": "शब्द"
|
||||
@@ -1255,7 +1255,7 @@
|
||||
"description": "ex. Date this password was updated"
|
||||
},
|
||||
"neverLockWarning": {
|
||||
"message": "क्या आप सुनिश्चित हैं कि आप \"कभी नहीं\" विकल्प का उपयोग करना चाहते हैं?\"कभी नहीं\" के लिए अपने लॉक विकल्प को सेट करना आपके डिवाइस पर आपकी वॉल्ट की एन्क्रिप्शन कुंजी को स्टोर करता है।यदि आप इस विकल्प का उपयोग करते हैं तो आपको यह सुनिश्चित करना चाहिए कि आप अपने डिवाइस को ठीक से सुरक्षित रखें।"
|
||||
"message": "क्या आप सुनिश्चित हैं कि आप \"कभी नहीं\" विकल्प का उपयोग करना चाहते हैं?\"कभी नहीं\" के लिए अपने लॉक विकल्प को सेट करना आपके डिवाइस पर आपकी वॉल्ट की एन्क्रिप्शन कुंजी को स्टोर करता है। यदि आप इस विकल्प का उपयोग करते हैं तो आपको यह सुनिश्चित करना चाहिए कि आप अपने डिवाइस को ठीक से सुरक्षित रखें।"
|
||||
},
|
||||
"noOrganizationsList": {
|
||||
"message": "You do not belong to any organizations. Organizations allow you to securely share items with other users."
|
||||
@@ -1264,7 +1264,7 @@
|
||||
"message": "सूची में कोई संग्रह नहीं है।"
|
||||
},
|
||||
"ownership": {
|
||||
"message": "\nमालिकी"
|
||||
"message": "मालिकी"
|
||||
},
|
||||
"whoOwnsThisItem": {
|
||||
"message": "इस आइटम का मालिक कौन है?"
|
||||
|
||||
@@ -620,7 +620,7 @@
|
||||
"message": "Ez az exportálás titkosítás nélkül tartalmazza a széfadatokat. Nem célszerű az exportált fájlt nem biztonságos csatornákon tárolni és tovább küldeni (például emailben). A felhasználás után erősen ajánlott a törlés."
|
||||
},
|
||||
"encExportKeyWarningDesc": {
|
||||
"message": "Ez az exportálás titkosítja az adatokat a fiók titkosítási kulcsával. Ha a fiók titkosítási kulcsa megváltozik, akkor ismét exportálni kell, különben az exportált fájl visszafejtése nem lehetséges."
|
||||
"message": "Ez az exportálás titkosítja az adatokat a fiók titkosítási kulcsával. Ha valaha a diók forgatási kulcsa más lesz, akkor újra exportálni kell, mert nem lehet visszafejteni ezt az exportálási fájlt."
|
||||
},
|
||||
"encExportAccountWarningDesc": {
|
||||
"message": "A fiók titkosítási kulcsai minden Bitwarden felhasználói fiókhoz egyediek, ezért nem importálhatunk titkosított exportálást egy másik fiókba."
|
||||
@@ -699,7 +699,7 @@
|
||||
"message": "Válassz ki egy fájlt."
|
||||
},
|
||||
"maxFileSize": {
|
||||
"message": "A naximális fájl méret 500 MB."
|
||||
"message": "A naximális fájlméret 500 MB."
|
||||
},
|
||||
"featureUnavailable": {
|
||||
"message": "Ez a funkció nem érhető el."
|
||||
@@ -1513,10 +1513,10 @@
|
||||
"message": "Kizárt domainek"
|
||||
},
|
||||
"excludedDomainsDesc": {
|
||||
"message": "A Bitwarden nem fog rákérdezni a bejelentkezési adatok mentésére a megadott domaineken. Frissítsd az oldalt a változtatások életbe lépéséhez."
|
||||
"message": "A Bitwarden nem fogja kérni a domainek bejelentkezési adatainak mentését. A változások életbe lépéséhez frissíteni kell az oldalt."
|
||||
},
|
||||
"excludedDomainsInvalidDomain": {
|
||||
"message": "$DOMAIN$ egy érvénytelen domain.",
|
||||
"message": "$DOMAIN$ nem érvényes domain.",
|
||||
"placeholders": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
@@ -1547,7 +1547,7 @@
|
||||
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
|
||||
},
|
||||
"maxAccessCountReached": {
|
||||
"message": "A hozzáférések száma elérte a beállított maximumot."
|
||||
"message": "A maximális hozzáférések száma elérésre került."
|
||||
},
|
||||
"expired": {
|
||||
"message": "Lejárt"
|
||||
@@ -1576,7 +1576,7 @@
|
||||
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
|
||||
},
|
||||
"sendLink": {
|
||||
"message": "Send linkje",
|
||||
"message": "Send hivatkozás",
|
||||
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
|
||||
},
|
||||
"disabled": {
|
||||
@@ -1686,7 +1686,7 @@
|
||||
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
|
||||
},
|
||||
"createdSend": {
|
||||
"message": "A Küldés létrehozva",
|
||||
"message": "A Send létrejött.",
|
||||
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
|
||||
},
|
||||
"editedSend": {
|
||||
@@ -1697,10 +1697,10 @@
|
||||
"message": "A fájl kiválasztásához nyissuk meg a kiterjesztést az oldalsávon (ha lehetséges) vagy kattintsunk erre a sávra új ablak felbukkanásához."
|
||||
},
|
||||
"sendFirefoxFileWarning": {
|
||||
"message": "Firefox esetén: nyisd meg a kiegészítőt, vagy erre a feliratra kattintva új ablak nyílik a fájl kiválasztásához"
|
||||
"message": "Firefox esetén nyissuk meg a bővítményt az oldalsávon vafy erre a hirdetőtáblára kattintva új felbukkanó ablak nyílik meg."
|
||||
},
|
||||
"sendSafariFileWarning": {
|
||||
"message": "Safari esetén: erre a feliratra kattintva új ablak nyílik a fájl kiválasztásához"
|
||||
"message": "A fájl kiválasztásához Safariban kattintsunk erre a hirdetőtáblára kattintva új ablak nyílik meg."
|
||||
},
|
||||
"sendFileCalloutHeader": {
|
||||
"message": "Mielőtt belevágnánk"
|
||||
@@ -1710,7 +1710,7 @@
|
||||
"description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'"
|
||||
},
|
||||
"sendFirefoxCustomDatePopoutMessage2": {
|
||||
"message": "kattints ide",
|
||||
"message": "kattintás ide",
|
||||
"description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'"
|
||||
},
|
||||
"sendFirefoxCustomDatePopoutMessage3": {
|
||||
@@ -1718,19 +1718,19 @@
|
||||
"description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'"
|
||||
},
|
||||
"expirationDateIsInvalid": {
|
||||
"message": "A megadott lejárati idő nem érvényes"
|
||||
"message": "A megadott lejárati idő nem érvényes."
|
||||
},
|
||||
"deletionDateIsInvalid": {
|
||||
"message": "A megadott törlési dátum nem érvényes"
|
||||
"message": "A megadott törlési dátum nem érvényes."
|
||||
},
|
||||
"expirationDateAndTimeRequired": {
|
||||
"message": "Lejárati dátum és idő megadása szükséges"
|
||||
"message": "Lejárati dátum és idő megadása szükséges."
|
||||
},
|
||||
"deletionDateAndTimeRequired": {
|
||||
"message": "Törlési dátum és idő megadása szükséges"
|
||||
"message": "Törlési dátum és idő megadása szükséges."
|
||||
},
|
||||
"dateParsingError": {
|
||||
"message": "Hiba történt a törlési és a lejárati dátum mentésekor"
|
||||
"message": "Hiba történt a törlési és a lejárati dátum mentésekor."
|
||||
},
|
||||
"hideEmail": {
|
||||
"message": "Saját email cím elrejtése a címzettek elől."
|
||||
|
||||
@@ -600,7 +600,7 @@
|
||||
"description": "Light color"
|
||||
},
|
||||
"solarizedDark": {
|
||||
"message": "Solarized Dark",
|
||||
"message": "Gelap Solarized",
|
||||
"description": "'Solarized' is a noun and the name of a color scheme. It should not be translated."
|
||||
},
|
||||
"exportVault": {
|
||||
@@ -657,7 +657,7 @@
|
||||
}
|
||||
},
|
||||
"moveToOrgDesc": {
|
||||
"message": "Choose an organization that you wish to move this item to. Moving to an organization transfers ownership of the item to that organization. You will no longer be the direct owner of this item once it has been moved."
|
||||
"message": "Pilihlah sebuah organisasi yang Anda ingin memindahkan item ini. Memindahkan bearti memberikan kepemilikan kepada organisasi tersebut. Anda tidak akan lagi menjadi pemilik item ini."
|
||||
},
|
||||
"learnMore": {
|
||||
"message": "Pelajari lebih lanjut"
|
||||
@@ -822,7 +822,7 @@
|
||||
"message": "Buka tab baru"
|
||||
},
|
||||
"webAuthnAuthenticate": {
|
||||
"message": "Authenticate WebAuthn"
|
||||
"message": "Autentikasi dengan WebAuthn."
|
||||
},
|
||||
"loginUnavailable": {
|
||||
"message": "Info Masuk Tidak Tersedia"
|
||||
@@ -867,7 +867,7 @@
|
||||
"message": "FIDO2 WebAuthn"
|
||||
},
|
||||
"webAuthnDesc": {
|
||||
"message": "Use any WebAuthn enabled security key to access your account."
|
||||
"message": "Gunakan kunci yang mendukung WebAUthn untuk mengakses akun anda."
|
||||
},
|
||||
"emailTitle": {
|
||||
"message": "Email"
|
||||
@@ -918,22 +918,22 @@
|
||||
"message": "Fitur ini saat ini adalah fitur eksperimental. Gunakan dengan risiko Anda sendiri."
|
||||
},
|
||||
"defaultAutoFillOnPageLoad": {
|
||||
"message": "Default autofill setting for login items"
|
||||
"message": "Konfigurasi autofill standard untuk item login."
|
||||
},
|
||||
"defaultAutoFillOnPageLoadDesc": {
|
||||
"message": "After enabling Auto-fill on Page Load, you can enable or disable the feature for individual login items. This is the default setting for login items that are not separately configured."
|
||||
"message": "Setelah mengaktifkan Auto-Fill waktu website terbuka, kamu dapat mengaktifkan atau meng-nonaktifkan feature ini untuk setiap item. Ini adalah konfigurasi standard untuk item yang tidak dikonfigurasi terpisah."
|
||||
},
|
||||
"itemAutoFillOnPageLoad": {
|
||||
"message": "Auto-fill on Page Load (if enabled in Options)"
|
||||
"message": "Auto-fill waktu website terbuka (Jika diaktifkan di Options)"
|
||||
},
|
||||
"autoFillOnPageLoadUseDefault": {
|
||||
"message": "Gunakan pengaturan baku"
|
||||
},
|
||||
"autoFillOnPageLoadYes": {
|
||||
"message": "Auto-fill on page load"
|
||||
"message": "Auto-Fill ketika website baru terbuka"
|
||||
},
|
||||
"autoFillOnPageLoadNo": {
|
||||
"message": "Do not auto-fill on page load"
|
||||
"message": "Jangan Auto-Fill ketika website baru terbuka"
|
||||
},
|
||||
"commandOpenPopup": {
|
||||
"message": "Buka popup brankas"
|
||||
@@ -990,10 +990,10 @@
|
||||
"message": "Ikon Situs Web menyediakan gambar yang mudah dikenali di sebelah item info masuk di dalam brankas Anda."
|
||||
},
|
||||
"disableBadgeCounter": {
|
||||
"message": "Disable Badge Counter"
|
||||
"message": "Matikan angka penghitung "
|
||||
},
|
||||
"disableBadgeCounterDesc": {
|
||||
"message": "Badge counter indicates how many logins you have for the current page in your vault."
|
||||
"message": "Angka penghitung menandakan jumlah login yang kamu punya untuk website saat ini yang ada di dalam vault kamu."
|
||||
},
|
||||
"cardholderName": {
|
||||
"message": "Nama Pemegang Kartu"
|
||||
@@ -1694,7 +1694,7 @@
|
||||
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
|
||||
},
|
||||
"sendLinuxChromiumFileWarning": {
|
||||
"message": "In order to choose a file, open the extension in the sidebar (if possible) or pop out to a new window by clicking this banner."
|
||||
"message": "Untuk memilih file ini, buka Extension di sidebar (jika memungkinkan) atau keluarkan menjadi window baru dengan menekan gambar ini."
|
||||
},
|
||||
"sendFirefoxFileWarning": {
|
||||
"message": "Untuk memilih file menggunakan Firefox, buka ekstensi di sidebar atau keluar ke jendela baru dengan mengklik banner ini."
|
||||
@@ -1736,10 +1736,10 @@
|
||||
"message": "Sembunyikan alamat surel dari penerima."
|
||||
},
|
||||
"sendOptionsPolicyInEffect": {
|
||||
"message": "One or more organization policies are affecting your Send options."
|
||||
"message": "Satu atau lebih kebijakan organisasi mempengaruhi pengaturan feature Send anda."
|
||||
},
|
||||
"passwordPrompt": {
|
||||
"message": "Master password re-prompt"
|
||||
"message": "Master password ditanyakan kembali"
|
||||
},
|
||||
"passwordConfirmation": {
|
||||
"message": "Konfirmasi sandi utama"
|
||||
|
||||
@@ -600,7 +600,7 @@
|
||||
"description": "Light color"
|
||||
},
|
||||
"solarizedDark": {
|
||||
"message": "Solarized Dark",
|
||||
"message": "Solarized ダーク",
|
||||
"description": "'Solarized' is a noun and the name of a color scheme. It should not be translated."
|
||||
},
|
||||
"exportVault": {
|
||||
@@ -816,13 +816,13 @@
|
||||
"message": "セキュリティキーを USB ポートに挿入し、ボタンがある場合はボタンをタッチしてください。"
|
||||
},
|
||||
"webAuthnNewTab": {
|
||||
"message": "To start the WebAuthn 2FA verification. Click the button below to open a new tab and follow the instructions provided in the new tab."
|
||||
"message": "WebAuthn 2FA 認証を開始するには、下のボタンをクリックして新しいタブを開き、新しいタブの指示に従ってください。"
|
||||
},
|
||||
"webAuthnNewTabOpen": {
|
||||
"message": "新しいタブを開く"
|
||||
},
|
||||
"webAuthnAuthenticate": {
|
||||
"message": "Authenticate WebAuthn"
|
||||
"message": "WebAuthn の認証"
|
||||
},
|
||||
"loginUnavailable": {
|
||||
"message": "ログインできません。"
|
||||
@@ -867,7 +867,7 @@
|
||||
"message": "FIDO2 WebAuthn"
|
||||
},
|
||||
"webAuthnDesc": {
|
||||
"message": "Use any WebAuthn enabled security key to access your account."
|
||||
"message": "アカウントにアクセスするに WebAuthn 対応のセキュリティキーを使用します。"
|
||||
},
|
||||
"emailTitle": {
|
||||
"message": "メールアドレス"
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
|
||||
},
|
||||
"extDesc": {
|
||||
"message": "Drošs un bezmaksas paroļu pārvaldnieks priekš visām jūsu ierīcēm.",
|
||||
"message": "Drošs bezmaksas paroļu pārvaldnieks visām Tavām ierīcēm.",
|
||||
"description": "Extension description"
|
||||
},
|
||||
"loginOrCreateNewAccount": {
|
||||
|
||||
@@ -924,16 +924,16 @@
|
||||
"message": "Etter aktivering av auto-utfylling på sidelasser, kan du aktivere eller deaktivere funksjonen for individuelle innloggingselementer. Dette er standardinnstillingen for innloggingselementer som ikke er satt opp separat."
|
||||
},
|
||||
"itemAutoFillOnPageLoad": {
|
||||
"message": "Auto-fill on Page Load (if enabled in Options)"
|
||||
"message": "Auto-utfyll på sideinnlastning (hvis aktivert i Alternativer)"
|
||||
},
|
||||
"autoFillOnPageLoadUseDefault": {
|
||||
"message": "Use default setting"
|
||||
"message": "Bruk standardinnstillinger"
|
||||
},
|
||||
"autoFillOnPageLoadYes": {
|
||||
"message": "Auto-fill on page load"
|
||||
"message": "Auto-utfyll ved innlasting av side"
|
||||
},
|
||||
"autoFillOnPageLoadNo": {
|
||||
"message": "Do not auto-fill on page load"
|
||||
"message": "Ikke fyll automatisk når du laster inn siden"
|
||||
},
|
||||
"commandOpenPopup": {
|
||||
"message": "Åpne hvelv-vindu"
|
||||
@@ -990,10 +990,10 @@
|
||||
"message": "Nettstedsikoner sørger for et gjenkjennelig bilde ved siden av hver innloggingsgjenstand i hvelvet ditt."
|
||||
},
|
||||
"disableBadgeCounter": {
|
||||
"message": "Disable Badge Counter"
|
||||
"message": "Deaktiver Badge Teller"
|
||||
},
|
||||
"disableBadgeCounterDesc": {
|
||||
"message": "Badge counter indicates how many logins you have for the current page in your vault."
|
||||
"message": "Bade-teller indikerer hvor mange innlogginger du har for den nåværende siden i hvelvet ditt."
|
||||
},
|
||||
"cardholderName": {
|
||||
"message": "Kortholderens navn"
|
||||
@@ -1498,10 +1498,10 @@
|
||||
"message": "Uten tillatelse til å kommunisere med Bitwardens skrivebordsprogram kan vi ikke tilgjengeligjøre biometri i nettleserutvidelsen. Prøv igjen."
|
||||
},
|
||||
"nativeMessaginPermissionSidebarTitle": {
|
||||
"message": "Permission request error"
|
||||
"message": "Feil ved forespørsel om tillatelse"
|
||||
},
|
||||
"nativeMessaginPermissionSidebarDesc": {
|
||||
"message": "This action cannot be done in the sidebar, please retry the action in the popup or popout."
|
||||
"message": "Denne handlingen kan ikke gjøres i sidestolpen, prøv på nytt i sprettoppvinduet eller popvindu."
|
||||
},
|
||||
"personalOwnershipSubmitError": {
|
||||
"message": "På grunn av bedrifsretningslinjer er du begrenset fra å lagre objekter til ditt personlige hvelv. Endre alternativ for eierskap til en organisasjon og velg blant tilgjengelige samlinger."
|
||||
@@ -1510,13 +1510,13 @@
|
||||
"message": "En bedriftsretningslinje påvirker dine eierskapsinnstillinger."
|
||||
},
|
||||
"excludedDomains": {
|
||||
"message": "Excluded Domains"
|
||||
"message": "Ekskluderte domener"
|
||||
},
|
||||
"excludedDomainsDesc": {
|
||||
"message": "Bitwarden will not ask to save login details for these domains. You must refresh the page for changes to take effect."
|
||||
"message": "Bitwarden vil ikke be om å lagre innloggingsdetaljer for disse domenene. Du må oppdatere siden for at endringene skal tre i kraft."
|
||||
},
|
||||
"excludedDomainsInvalidDomain": {
|
||||
"message": "$DOMAIN$ is not a valid domain",
|
||||
"message": "$DOMAIN$ er ikke et gyldig domene",
|
||||
"placeholders": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
@@ -1547,7 +1547,7 @@
|
||||
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
|
||||
},
|
||||
"maxAccessCountReached": {
|
||||
"message": "Max access count reached"
|
||||
"message": "Maksimalt antall tilganger nådd"
|
||||
},
|
||||
"expired": {
|
||||
"message": "Utløpt"
|
||||
@@ -1602,17 +1602,17 @@
|
||||
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
|
||||
},
|
||||
"sendNameDesc": {
|
||||
"message": "A friendly name to describe this Send.",
|
||||
"message": "Et vennlig navn for å beskrive dette Send.",
|
||||
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
|
||||
},
|
||||
"sendFileDesc": {
|
||||
"message": "The file you want to send."
|
||||
"message": "Filen du vil send."
|
||||
},
|
||||
"deletionDate": {
|
||||
"message": "Dato for sletting"
|
||||
},
|
||||
"deletionDateDesc": {
|
||||
"message": "The Send will be permanently deleted on the specified date and time.",
|
||||
"message": "Send-en vil bli slettet permanent på den angitte dato og klokkeslett.",
|
||||
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
|
||||
},
|
||||
"expirationDate": {
|
||||
@@ -1682,25 +1682,25 @@
|
||||
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
|
||||
},
|
||||
"sendDisabledWarning": {
|
||||
"message": "Due to an enterprise policy, you are only able to delete an existing Send.",
|
||||
"message": "På grunn av en virksomhetsregel kan du kun slette en eksisterende Send.",
|
||||
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
|
||||
},
|
||||
"createdSend": {
|
||||
"message": "Created Send",
|
||||
"message": "Opprettet Send",
|
||||
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
|
||||
},
|
||||
"editedSend": {
|
||||
"message": "Edited Send",
|
||||
"message": "Redigerte Send",
|
||||
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
|
||||
},
|
||||
"sendLinuxChromiumFileWarning": {
|
||||
"message": "In order to choose a file, open the extension in the sidebar (if possible) or pop out to a new window by clicking this banner."
|
||||
"message": "For å velge en fil, åpne utvidelsen i sidepanelet (hvis mulig) eller poppe ut til et nytt vindu ved å klikke på dette banneret."
|
||||
},
|
||||
"sendFirefoxFileWarning": {
|
||||
"message": "In order to choose a file using Firefox, open the extension in the sidebar or pop out to a new window by clicking this banner."
|
||||
"message": "For å velge en fil med Firefox må du åpne utvidelsen i sidestolpen eller sprette ut til et nytt vindu ved å klikke på dette banneret."
|
||||
},
|
||||
"sendSafariFileWarning": {
|
||||
"message": "In order to choose a file using Safari, pop out to a new window by clicking this banner."
|
||||
"message": "For å velge en fil med Safari, popp ut i et nytt vindu ved å klikke på dette banneret."
|
||||
},
|
||||
"sendFileCalloutHeader": {
|
||||
"message": "Før du starter"
|
||||
@@ -1739,7 +1739,7 @@
|
||||
"message": "En eller flere av organisasjons retningslinjer påvirker generatorinnstillingene dine."
|
||||
},
|
||||
"passwordPrompt": {
|
||||
"message": "Master password re-prompt"
|
||||
"message": "Forespørsel om hovedpassord på nytt"
|
||||
},
|
||||
"passwordConfirmation": {
|
||||
"message": "Superpassord bekreftelse"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"manifest_version": 2,
|
||||
"name": "__MSG_extName__",
|
||||
"short_name": "__MSG_appName__",
|
||||
"version": "1.52.1",
|
||||
"version": "1.53.0",
|
||||
"description": "__MSG_extDesc__",
|
||||
"default_locale": "en",
|
||||
"author": "Bitwarden Inc.",
|
||||
|
||||
@@ -1,52 +1,38 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title></title>
|
||||
<title>Bitwarden</title>
|
||||
<meta charset="utf-8" />
|
||||
</head>
|
||||
<body>
|
||||
<table class="outter-table" cellpadding="0" cellspacing="0">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td width="24">
|
||||
<a href="https://vault.bitwarden.com" target="_blank" id="logo-link" aria-hidden="true">
|
||||
<img id="logo" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAVBQTFRFAAAAMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzjZa7EAAAAHB0Uk5TAGOSmJRPBP/wZ5ygx4CC4ZDDBsWdD86RJeX5dF7+3j4Hq78Rj/pY824x2B7tJoS7mgIc2Rqhyid69g6V/FQFe/sN0RTAGcxO4rwVickfrlDIpRsKeZdI94UD6tXmZCO1/TAIWulwn+zumy8B0DPPwmJoSmgAAAFHSURBVHicY2AAAkYmZsKAhZWNAQbYiQIcnCRqYOciVQM3VTXw8CIDPn6CGgQYkAGb4KiGUQ2jGoaTBiFhkJgI8RpExUBi4sRrkJAECklJE69BRhYoJCcP50sS0KCgCBJSUoYLqKji16CmDhSR1UAIaGrh1aCtAxKR1EUS0sOngU0fLGJgiKTByBi3BhNTsICZObIjDS0scWmwsgZL2djaoYSblb0sdg3m3A5gvrUhAypwdMKqwdkFot7JlQEdmLhhamBz94DwPJ0x1DMweLmgaxD1toFwfHyxqAcmGD8bZA1s/gGQ+JQNDMKqnoEhOEQdriE0LDAcwpKMCMahnoEhki8KpiE6BsrgiBXCqR4I4uITUEMrMBGfciBISo5CUp6SSkA5CCSmpUOVZ2RmZROhgYFNPgesXjjXjrBiCDC0zQvP52TDKgcAwC5BBQq6zvAAAAAASUVORK5CYII=" />
|
||||
</a>
|
||||
</td>
|
||||
<td id="content"></td>
|
||||
<td align="right" width="15">
|
||||
<button type="button" class="neutral" id="close-button">
|
||||
<img id="close" alt="X" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeBAMAAADJHrORAAAAAXNSR0IB2cksfwAAAAlwSFlzAAAWJQAAFiUBSVIk8AAAABJQTFRFAAAAMzMzMzMzMzMzMzMzMzMzbxxq5QAAAAZ0Uk5TAECg/2CfwOuXQgAAAJVJREFUeJxVkdEJwzAMRNXgAQpZINAu0Fz7b3AHyP7T1MrppNQfMuI9sE42s7vp3Lws7+zHMcsDPdqGz8SAhAEctgIhNDhiDYyNVw+8p5ZYgrCExBS+iSmgMIXCEhJTKMy+Yobf//BF0Hv9gp8lcPKRAifPPSiYBAULoXJTWHNyJy/f917vbv4fCtZOslSwcZLKMf/zB2MLKtNp5GuwAAAAAElFTkSuQmCC" />
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="outer-wrapper">
|
||||
<div class="logo">
|
||||
<a href="https://vault.bitwarden.com" target="_blank" id="logo-link">
|
||||
<img id="logo" alt="Bitwarden" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAVBQTFRFAAAAMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzjZa7EAAAAHB0Uk5TAGOSmJRPBP/wZ5ygx4CC4ZDDBsWdD86RJeX5dF7+3j4Hq78Rj/pY824x2B7tJoS7mgIc2Rqhyid69g6V/FQFe/sN0RTAGcxO4rwVickfrlDIpRsKeZdI94UD6tXmZCO1/TAIWulwn+zumy8B0DPPwmJoSmgAAAFHSURBVHicY2AAAkYmZsKAhZWNAQbYiQIcnCRqYOciVQM3VTXw8CIDPn6CGgQYkAGb4KiGUQ2jGoaTBiFhkJgI8RpExUBi4sRrkJAECklJE69BRhYoJCcP50sS0KCgCBJSUoYLqKji16CmDhSR1UAIaGrh1aCtAxKR1EUS0sOngU0fLGJgiKTByBi3BhNTsICZObIjDS0scWmwsgZL2djaoYSblb0sdg3m3A5gvrUhAypwdMKqwdkFot7JlQEdmLhhamBz94DwPJ0x1DMweLmgaxD1toFwfHyxqAcmGD8bZA1s/gGQ+JQNDMKqnoEhOEQdriE0LDAcwpKMCMahnoEhki8KpiE6BsrgiBXCqR4I4uITUEMrMBGfciBISo5CUp6SSkA5CCSmpUOVZ2RmZROhgYFNPgesXjjXjrBiCDC0zQvP52TDKgcAwC5BBQq6zvAAAAAASUVORK5CYII=" />
|
||||
</a>
|
||||
</div>
|
||||
<div id="content"></div>
|
||||
<div>
|
||||
<button type="button" class="neutral" id="close-button">
|
||||
<img id="close" alt="X" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeBAMAAADJHrORAAAAAXNSR0IB2cksfwAAAAlwSFlzAAAWJQAAFiUBSVIk8AAAABJQTFRFAAAAMzMzMzMzMzMzMzMzMzMzbxxq5QAAAAZ0Uk5TAECg/2CfwOuXQgAAAJVJREFUeJxVkdEJwzAMRNXgAQpZINAu0Fz7b3AHyP7T1MrppNQfMuI9sE42s7vp3Lws7+zHMcsDPdqGz8SAhAEctgIhNDhiDYyNVw+8p5ZYgrCExBS+iSmgMIXCEhJTKMy+Yobf//BF0Hv9gp8lcPKRAifPPSiYBAULoXJTWHNyJy/f917vbv4fCtZOslSwcZLKMf/zB2MLKtNp5GuwAAAAAElFTkSuQmCC" />
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div id="templates" style="display: none;">
|
||||
<table class="inner-table" cellpadding="0" cellspacing="0" id="template-add">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="add-text"></td>
|
||||
<td align="right">
|
||||
<button class="never-save link"></button>
|
||||
</td>
|
||||
<td align="right" class="add-buttons">
|
||||
<select class="select-folder"></select>
|
||||
<button class="add-save"></button>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="inner-table" cellpadding="0" cellspacing="0" id="template-change">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="change-text"></td>
|
||||
<td align="right" class="change-buttons">
|
||||
<button type="button" class="change-save"></button>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="inner-wrapper" id="template-add">
|
||||
<div class="add-text"></div>
|
||||
<div class="add-buttons">
|
||||
<button class="never-save link"></button>
|
||||
<select class="select-folder"></select>
|
||||
<button class="add-save"></button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="inner-wrapper" id="template-change">
|
||||
<div class="change-text"></div>
|
||||
<div class="change-buttons">
|
||||
<button class="change-save"></button>
|
||||
</div>
|
||||
</div>
|
||||
<div id="template-alert"></div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
@@ -8,6 +8,7 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||
i18n.close = chrome.i18n.getMessage('close');
|
||||
i18n.yes = chrome.i18n.getMessage('yes');
|
||||
i18n.never = chrome.i18n.getMessage('never');
|
||||
i18n.folder = chrome.i18n.getMessage('folder');
|
||||
i18n.notificationAddSave = chrome.i18n.getMessage('notificationAddSave');
|
||||
i18n.notificationNeverSave = chrome.i18n.getMessage('notificationNeverSave');
|
||||
i18n.notificationAddDesc = chrome.i18n.getMessage('notificationAddDesc');
|
||||
@@ -39,6 +40,7 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||
document.querySelector('#template-add .add-save').textContent = i18n.notificationAddSave;
|
||||
document.querySelector('#template-add .never-save').textContent = i18n.notificationNeverSave;
|
||||
document.querySelector('#template-add .select-folder').style.display = 'initial';
|
||||
document.querySelector('#template-add .select-folder').setAttribute('aria-label', i18n.folder);
|
||||
document.querySelector('#template-change .change-save').textContent = i18n.notificationChangeSave;
|
||||
}
|
||||
|
||||
|
||||
@@ -9,31 +9,35 @@
|
||||
font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
|
||||
}
|
||||
|
||||
table {
|
||||
width: 100%;
|
||||
.outer-wrapper {
|
||||
padding: 0 10px;
|
||||
border-bottom: 2px solid #175ddc;
|
||||
display: grid;
|
||||
grid-template-columns: 1fr auto 1fr;
|
||||
column-gap: 10px;
|
||||
grid-column-gap: 10px;
|
||||
box-sizing: border-box;
|
||||
height: 42px;
|
||||
}
|
||||
|
||||
.outter-table > tbody > tr > td {
|
||||
padding: 0 0 0 10px;
|
||||
border-bottom: 2px solid #175DDC;
|
||||
height: 40px;
|
||||
.outer-wrapper > * {
|
||||
align-self: center;
|
||||
}
|
||||
|
||||
.outter-table > tbody > tr > td:last-child {
|
||||
padding-right: 10px;
|
||||
}
|
||||
|
||||
.inner-table td {
|
||||
padding: 0 10px 0 0;
|
||||
.inner-wrapper {
|
||||
display: grid;
|
||||
grid-template-columns: 2fr 1fr;
|
||||
column-gap: 10px;
|
||||
grid-column-gap: 10px;
|
||||
}
|
||||
|
||||
.inner-table td:last-child {
|
||||
padding: 0;
|
||||
}
|
||||
#content .change-buttons {
|
||||
justify-self: end;
|
||||
}
|
||||
|
||||
.inner-table td button {
|
||||
margin-left: 5px;
|
||||
}
|
||||
.wrapper > *, .inner-wrapper > * {
|
||||
align-self: center;
|
||||
}
|
||||
|
||||
img {
|
||||
border: 0;
|
||||
@@ -84,12 +88,13 @@ button.neutral {
|
||||
}
|
||||
|
||||
body[class*='lang-en'] .add-buttons {
|
||||
width: 50px;
|
||||
width: 175px;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
@media (min-width: 768px) {
|
||||
body[class*='lang-en'] .add-buttons {
|
||||
width: 320px;
|
||||
width: 420px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@ export class LockComponent extends BaseLockComponent {
|
||||
}, 100);
|
||||
}
|
||||
|
||||
async unlockBiometric() {
|
||||
async unlockBiometric(): Promise<boolean> {
|
||||
if (!this.biometricLock) {
|
||||
return;
|
||||
}
|
||||
@@ -68,8 +68,13 @@ export class LockComponent extends BaseLockComponent {
|
||||
showConfirmButton: false,
|
||||
});
|
||||
|
||||
await super.unlockBiometric();
|
||||
const success = await super.unlockBiometric();
|
||||
|
||||
Swal.close();
|
||||
// Avoid closing the error dialogs
|
||||
if (success) {
|
||||
Swal.close();
|
||||
}
|
||||
|
||||
return success;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,6 @@ import { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.se
|
||||
import { StateService } from 'jslib-common/abstractions/state.service';
|
||||
import { StorageService } from 'jslib-common/abstractions/storage.service';
|
||||
import { SyncService } from 'jslib-common/abstractions/sync.service';
|
||||
import { UserService } from 'jslib-common/abstractions/user.service';
|
||||
|
||||
import { LoginComponent as BaseLoginComponent } from 'jslib-angular/components/login.component';
|
||||
|
||||
@@ -24,14 +23,10 @@ export class LoginComponent extends BaseLoginComponent {
|
||||
protected stateService: StateService, protected environmentService: EnvironmentService,
|
||||
protected passwordGenerationService: PasswordGenerationService,
|
||||
protected cryptoFunctionService: CryptoFunctionService, storageService: StorageService,
|
||||
syncService: SyncService, private userService: UserService) {
|
||||
syncService: SyncService) {
|
||||
super(authService, router, platformUtilsService, i18nService, stateService, environmentService, passwordGenerationService, cryptoFunctionService, storageService);
|
||||
super.onSuccessfulLogin = async () => {
|
||||
await syncService.fullSync(true).then(async () => {
|
||||
if (await this.userService.getForcePasswordReset()) {
|
||||
this.router.navigate(['update-temp-password']);
|
||||
}
|
||||
});
|
||||
await syncService.fullSync(true);
|
||||
};
|
||||
super.successRoute = '/tabs/vault';
|
||||
}
|
||||
|
||||
@@ -31,13 +31,6 @@ export class SetPasswordComponent extends BaseSetPasswordComponent {
|
||||
syncService: SyncService, route: ActivatedRoute) {
|
||||
super(i18nService, cryptoService, messagingService, userService, passwordGenerationService,
|
||||
platformUtilsService, policyService, router, apiService, syncService, route);
|
||||
super.onSuccessfulChangePassword = async () => {
|
||||
if (await this.userService.getForcePasswordReset()) {
|
||||
this.router.navigate(['update-temp-password']);
|
||||
} else {
|
||||
this.router.navigate([this.successRoute]);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
get masterPasswordScoreWidth() {
|
||||
|
||||
@@ -15,7 +15,6 @@ import { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.se
|
||||
import { StateService } from 'jslib-common/abstractions/state.service';
|
||||
import { StorageService } from 'jslib-common/abstractions/storage.service';
|
||||
import { SyncService } from 'jslib-common/abstractions/sync.service';
|
||||
import { UserService } from 'jslib-common/abstractions/user.service';
|
||||
|
||||
import { SsoComponent as BaseSsoComponent } from 'jslib-angular/components/sso.component';
|
||||
import { BrowserApi } from '../../browser/browserApi';
|
||||
@@ -30,7 +29,7 @@ export class SsoComponent extends BaseSsoComponent {
|
||||
storageService: StorageService, stateService: StateService,
|
||||
platformUtilsService: PlatformUtilsService, apiService: ApiService,
|
||||
cryptoFunctionService: CryptoFunctionService, passwordGenerationService: PasswordGenerationService,
|
||||
syncService: SyncService, environmentService: EnvironmentService, private userService: UserService) {
|
||||
syncService: SyncService, environmentService: EnvironmentService) {
|
||||
super(authService, router, i18nService, route, storageService, stateService, platformUtilsService,
|
||||
apiService, cryptoFunctionService, environmentService, passwordGenerationService);
|
||||
|
||||
@@ -45,13 +44,5 @@ export class SsoComponent extends BaseSsoComponent {
|
||||
const thisWindow = window.open('', '_self');
|
||||
thisWindow.close();
|
||||
};
|
||||
|
||||
super.onSuccessfulLoginNavigate = async () => {
|
||||
if (await this.userService.getForcePasswordReset()) {
|
||||
this.router.navigate(['update-temp-password']);
|
||||
} else {
|
||||
this.router.navigate([this.successRoute]);
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,7 +20,6 @@ import { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.se
|
||||
import { StateService } from 'jslib-common/abstractions/state.service';
|
||||
import { StorageService } from 'jslib-common/abstractions/storage.service';
|
||||
import { SyncService } from 'jslib-common/abstractions/sync.service';
|
||||
import { UserService } from 'jslib-common/abstractions/user.service';
|
||||
|
||||
import { BroadcasterService } from 'jslib-angular/services/broadcaster.service';
|
||||
|
||||
@@ -45,16 +44,11 @@ export class TwoFactorComponent extends BaseTwoFactorComponent {
|
||||
environmentService: EnvironmentService, private ngZone: NgZone,
|
||||
private broadcasterService: BroadcasterService, private changeDetectorRef: ChangeDetectorRef,
|
||||
private popupUtilsService: PopupUtilsService, stateService: StateService,
|
||||
storageService: StorageService, route: ActivatedRoute, private messagingService: MessagingService,
|
||||
private userService: UserService) {
|
||||
storageService: StorageService, route: ActivatedRoute, private messagingService: MessagingService) {
|
||||
super(authService, router, i18nService, apiService, platformUtilsService, window, environmentService,
|
||||
stateService, storageService, route);
|
||||
super.onSuccessfulLogin = async () => {
|
||||
return syncService.fullSync(true).then(async () => {
|
||||
if (await this.userService.getForcePasswordReset()) {
|
||||
this.router.navigate(['update-temp-password']);
|
||||
}
|
||||
});
|
||||
super.onSuccessfulLogin = () => {
|
||||
return syncService.fullSync(true);
|
||||
};
|
||||
super.successRoute = '/tabs/vault';
|
||||
this.webAuthnNewTab = this.platformUtilsService.isFirefox() || this.platformUtilsService.isSafari();
|
||||
|
||||
@@ -40,6 +40,7 @@ import { SettingsComponent } from './settings/settings.component';
|
||||
import { SyncComponent } from './settings/sync.component';
|
||||
import { VaultTimeoutInputComponent } from './settings/vault-timeout-input.component';
|
||||
|
||||
import { AddEditCustomFieldsComponent } from './vault/add-edit-custom-fields.component';
|
||||
import { AddEditComponent } from './vault/add-edit.component';
|
||||
import { AttachmentsComponent } from './vault/attachments.component';
|
||||
import { CiphersComponent } from './vault/ciphers.component';
|
||||
@@ -48,6 +49,7 @@ import { CurrentTabComponent } from './vault/current-tab.component';
|
||||
import { GroupingsComponent } from './vault/groupings.component';
|
||||
import { PasswordHistoryComponent } from './vault/password-history.component';
|
||||
import { ShareComponent } from './vault/share.component';
|
||||
import { ViewCustomFieldsComponent } from './vault/view-custom-fields.component';
|
||||
import { ViewComponent } from './vault/view.component';
|
||||
|
||||
import { EffluxDatesComponent as SendEffluxDatesComponent } from './send/efflux-dates.component';
|
||||
@@ -248,6 +250,8 @@ registerLocaleData(localeZhTw, 'zh-TW');
|
||||
PasswordRepromptComponent,
|
||||
SetPinComponent,
|
||||
VaultTimeoutInputComponent,
|
||||
AddEditCustomFieldsComponent,
|
||||
ViewCustomFieldsComponent,
|
||||
],
|
||||
entryComponents: [],
|
||||
providers: [
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
@import "../css/webfonts.css";
|
||||
@import "../../../jslib/angular/src/scss/webfonts.css";
|
||||
@import "variables.scss";
|
||||
@import "base.scss";
|
||||
@import "grid.scss";
|
||||
|
||||
53
src/popup/vault/add-edit-custom-fields.component.html
Normal file
53
src/popup/vault/add-edit-custom-fields.component.html
Normal file
@@ -0,0 +1,53 @@
|
||||
<div class="box">
|
||||
<div class="box-header">
|
||||
{{'customFields' | i18n}}
|
||||
</div>
|
||||
<div class="box-content">
|
||||
<!-- Current custom fields -->
|
||||
<div cdkDropList (cdkDropListDropped)="drop($event)" *ngIf="cipher.hasFields">
|
||||
<div class="box-content-row box-content-row-multi box-draggable-row" appBoxRow cdkDrag
|
||||
*ngFor="let f of cipher.fields; let i = index; trackBy:trackByFunction"
|
||||
[ngClass]="{'box-content-row-checkbox': f.type === fieldType.Boolean}">
|
||||
<a href="#" appStopClick (click)="removeField(f)" appA11yTitle="{{'remove' | i18n}}">
|
||||
<i class="fa fa-minus-circle fa-lg" aria-hidden="true"></i>
|
||||
</a>
|
||||
<label for="fieldName{{i}}" class="sr-only">{{'name' | i18n}}</label>
|
||||
<label for="fieldValue{{i}}" class="sr-only">{{'value' | i18n}}</label>
|
||||
<div class="row-main">
|
||||
<input id="fieldName{{i}}" type="text" name="Field.Name{{i}}" [(ngModel)]="f.name" class="row-label"
|
||||
placeholder="{{'name' | i18n}}" appInputVerbatim>
|
||||
<!--Custom Field: Text-->
|
||||
<input id="fieldValue{{i}}" type="text" name="Field.Value{{i}}" [(ngModel)]="f.value"
|
||||
*ngIf="f.type === fieldType.Text" placeholder="{{'value' | i18n}}" appInputVerbatim>
|
||||
<!--Custom Field: Hidden-->
|
||||
<input id="fieldValue{{i}}" type="{{f.showValue ? 'text' : 'password'}}" name="Field.Value{{i}}"
|
||||
[(ngModel)]="f.value" class="monospaced" appInputVerbatim *ngIf="f.type === fieldType.Hidden"
|
||||
placeholder="{{'value' | i18n}}" [disabled]="!cipher.viewPassword && !f.newField">
|
||||
</div>
|
||||
<!--Custom Field: Boolean-->
|
||||
<input id="fieldValue{{i}}" name="Field.Value{{i}}" type="checkbox" [(ngModel)]="f.value"
|
||||
*ngIf="f.type === fieldType.Boolean" appTrueFalseValue trueValue="true" falseValue="false">
|
||||
<div class="action-buttons" *ngIf="f.type === fieldType.Hidden && (cipher.viewPassword || f.newField)">
|
||||
<a class="row-btn" href="#" appStopClick appBlurClick appA11yTitle="{{'toggleVisibility' | i18n}}"
|
||||
(click)="toggleFieldValue(f)">
|
||||
<i class="fa fa-lg" aria-hidden="true"
|
||||
[ngClass]="{'fa-eye': !f.showValue, 'fa-eye-slash': f.showValue}"></i>
|
||||
</a>
|
||||
</div>
|
||||
<div class="drag-handle" appA11yTitle="{{'dragToSort' | i18n}}" cdkDragHandle>
|
||||
<i class="fa fa-bars" aria-hidden="true"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Add new custom field -->
|
||||
<div class="box-content-row box-content-row-newmulti" appBoxRow>
|
||||
<a href="#" appStopClick (click)="addField()">
|
||||
<i class="fa fa-plus-circle fa-fw fa-lg" aria-hidden="true"></i> {{'newCustomField' | i18n}}
|
||||
</a>
|
||||
<label for="addFieldType" class="sr-only">{{'type' | i18n}}</label>
|
||||
<select id="addFieldType" name="AddFieldType" [(ngModel)]="addFieldType" class="field-type">
|
||||
<option *ngFor="let o of addFieldTypeOptions" [ngValue]="o.value">{{o.name}}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
18
src/popup/vault/add-edit-custom-fields.component.ts
Normal file
18
src/popup/vault/add-edit-custom-fields.component.ts
Normal file
@@ -0,0 +1,18 @@
|
||||
import { Component } from '@angular/core';
|
||||
|
||||
import {
|
||||
AddEditCustomFieldsComponent as BaseAddEditCustomFieldsComponent
|
||||
} from 'jslib-angular/components/add-edit-custom-fields.component';
|
||||
|
||||
import { EventService } from 'jslib-common/abstractions/event.service';
|
||||
import { I18nService } from 'jslib-common/abstractions/i18n.service';
|
||||
|
||||
@Component({
|
||||
selector: 'app-vault-add-edit-custom-fields',
|
||||
templateUrl: 'add-edit-custom-fields.component.html',
|
||||
})
|
||||
export class AddEditCustomFieldsComponent extends BaseAddEditCustomFieldsComponent {
|
||||
constructor(i18nService: I18nService, eventService: EventService) {
|
||||
super(i18nService, eventService);
|
||||
}
|
||||
}
|
||||
@@ -324,56 +324,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box">
|
||||
<div class="box-header">
|
||||
{{'customFields' | i18n}}
|
||||
</div>
|
||||
<div class="box-content">
|
||||
<div cdkDropList (cdkDropListDropped)="drop($event)" *ngIf="cipher.hasFields">
|
||||
<div class="box-content-row box-content-row-multi box-draggable-row" appBoxRow cdkDrag
|
||||
*ngFor="let f of cipher.fields; let i = index; trackBy:trackByFunction"
|
||||
[ngClass]="{'box-content-row-checkbox': f.type === fieldType.Boolean}">
|
||||
<button type="button" appStopClick (click)="removeField(f)" appA11yTitle="{{'remove' | i18n}}">
|
||||
<i class="fa fa-minus-circle fa-lg" aria-hidden="true"></i>
|
||||
</button>
|
||||
<label for="fieldName{{i}}" class="sr-only">{{'name' | i18n}}</label>
|
||||
<label for="fieldValue{{i}}" class="sr-only">{{'value' | i18n}}</label>
|
||||
<div class="row-main">
|
||||
<input id="fieldName{{i}}" type="text" name="Field.Name{{i}}" [(ngModel)]="f.name"
|
||||
class="row-label" placeholder="{{'name' | i18n}}" appInputVerbatim>
|
||||
<input id="fieldValue{{i}}" type="text" name="Field.Value{{i}}" [(ngModel)]="f.value"
|
||||
*ngIf="f.type === fieldType.Text" placeholder="{{'value' | i18n}}" appInputVerbatim>
|
||||
<input id="fieldValue{{i}}" type="{{f.showValue ? 'text' : 'password'}}"
|
||||
name="Field.Value{{i}}" [(ngModel)]="f.value" class="monospaced" appInputVerbatim
|
||||
*ngIf="f.type === fieldType.Hidden" placeholder="{{'value' | i18n}}"
|
||||
[disabled]="!cipher.viewPassword && !f.newField">
|
||||
</div>
|
||||
<input id="fieldValue{{i}}" name="Field.Value{{i}}" type="checkbox" [(ngModel)]="f.value"
|
||||
*ngIf="f.type === fieldType.Boolean" appTrueFalseValue trueValue="true" falseValue="false">
|
||||
<div class="action-buttons"
|
||||
*ngIf="f.type === fieldType.Hidden && (cipher.viewPassword || f.newField)">
|
||||
<button type="button" class="row-btn" appStopClick appBlurClick
|
||||
appA11yTitle="{{'toggleVisibility' | i18n}}" (click)="toggleFieldValue(f)">
|
||||
<i class="fa fa-lg" aria-hidden="true"
|
||||
[ngClass]="{'fa-eye': !f.showValue, 'fa-eye-slash': f.showValue}"></i>
|
||||
</button>
|
||||
</div>
|
||||
<div class="drag-handle" appA11yTitle="{{'dragToSort' | i18n}}" cdkDragHandle>
|
||||
<i class="fa fa-bars" aria-hidden="true"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box-content-row box-content-row-newmulti" appBoxRow>
|
||||
<button type="button" appStopClick (click)="addField()">
|
||||
<i class="fa fa-plus-circle fa-fw fa-lg" aria-hidden="true"></i> {{'newCustomField' | i18n}}
|
||||
</button>
|
||||
<label for="addFieldType" class="sr-only">{{'type' | i18n}}</label>
|
||||
<select id="addFieldType" name="AddFieldType" [(ngModel)]="addFieldType" class="field-type">
|
||||
<option *ngFor="let o of addFieldTypeOptions" [ngValue]="o.value">{{o.name}}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<app-vault-add-edit-custom-fields [cipher]="cipher" [editMode]="editMode"></app-vault-add-edit-custom-fields>
|
||||
<div class="box" *ngIf="allowOwnershipOptions()">
|
||||
<div class="box-header">
|
||||
{{'ownership' | i18n}}
|
||||
|
||||
@@ -156,7 +156,12 @@ export class CurrentTabComponent implements OnInit, OnDestroy {
|
||||
this.platformUtilsService.copyToClipboard(this.totpCode, { window: window });
|
||||
}
|
||||
if (this.popupUtilsService.inPopup(window)) {
|
||||
BrowserApi.closePopup(window);
|
||||
if (this.platformUtilsService.isFirefox() || this.platformUtilsService.isSafari()) {
|
||||
BrowserApi.closePopup(window);
|
||||
} else {
|
||||
// Slight delay to fix bug in Chromium browsers where popup closes without copying totp to clipboard
|
||||
setTimeout(() => BrowserApi.closePopup(window), 50);
|
||||
}
|
||||
}
|
||||
} catch {
|
||||
this.ngZone.run(() => {
|
||||
|
||||
37
src/popup/vault/view-custom-fields.component.html
Normal file
37
src/popup/vault/view-custom-fields.component.html
Normal file
@@ -0,0 +1,37 @@
|
||||
<ng-container>
|
||||
<div class="box-header">
|
||||
{{'customFields' | i18n}}
|
||||
</div>
|
||||
<div class="box-content">
|
||||
<div class="box-content-row box-content-row-flex" *ngFor="let field of cipher.fields">
|
||||
<div class="row-main">
|
||||
<span class="row-label">{{field.name}}</span>
|
||||
<div *ngIf="field.type === fieldType.Text">
|
||||
{{field.value || ' '}}
|
||||
</div>
|
||||
<div *ngIf="field.type === fieldType.Hidden">
|
||||
<span [hidden]="!field.showValue" class="monospaced show-whitespace">{{field.value}}</span>
|
||||
<span [hidden]="field.showValue" class="monospaced">{{field.maskedValue}}</span>
|
||||
</div>
|
||||
<div *ngIf="field.type === fieldType.Boolean">
|
||||
<i class="fa fa-check-square-o" *ngIf="field.value === 'true'" aria-hidden="true"></i>
|
||||
<i class="fa fa-square-o" *ngIf="field.value !== 'true'" aria-hidden="true"></i>
|
||||
<span class="sr-only">{{field.value}}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="action-buttons">
|
||||
<a class="row-btn" href="#" appStopClick appA11yTitle="{{'toggleVisibility' | i18n}}"
|
||||
*ngIf="field.type === fieldType.Hidden && cipher.viewPassword"
|
||||
(click)="toggleFieldValue(field)">
|
||||
<i class="fa fa-lg" aria-hidden="true"
|
||||
[ngClass]="{'fa-eye': !field.showValue, 'fa-eye-slash': field.showValue}"></i>
|
||||
</a>
|
||||
<a class="row-btn" href="#" appStopClick appA11yTitle="{{'copyValue' | i18n}}"
|
||||
*ngIf="field.value && field.type !== fieldType.Boolean && !(field.type === fieldType.Hidden && !cipher.viewPassword)"
|
||||
(click)="copy(field.value, 'value', field.type === fieldType.Hidden ? 'H_Field' : 'Field')">
|
||||
<i class="fa fa-lg fa-clone" aria-hidden="true"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</ng-container>
|
||||
19
src/popup/vault/view-custom-fields.component.ts
Normal file
19
src/popup/vault/view-custom-fields.component.ts
Normal file
@@ -0,0 +1,19 @@
|
||||
import {
|
||||
Component,
|
||||
} from '@angular/core';
|
||||
|
||||
import { EventService } from 'jslib-common/abstractions/event.service';
|
||||
|
||||
import {
|
||||
ViewCustomFieldsComponent as BaseViewCustomFieldsComponent
|
||||
} from 'jslib-angular/components/view-custom-fields.component';
|
||||
|
||||
@Component({
|
||||
selector: 'app-vault-view-custom-fields',
|
||||
templateUrl: 'view-custom-fields.component.html',
|
||||
})
|
||||
export class ViewCustomFieldsComponent extends BaseViewCustomFieldsComponent {
|
||||
constructor(eventService: EventService) {
|
||||
super(eventService);
|
||||
}
|
||||
}
|
||||
@@ -202,7 +202,7 @@
|
||||
(click)="launch(u)">
|
||||
<i class="fa fa-lg fa-share-square-o" aria-hidden="true"></i>
|
||||
</button>
|
||||
<button type="button" class="row-btn" appStopClick appA11yTitle="{{'copyUri' | i18n}}"
|
||||
<button type="button" class="row-btn"appStopClick appA11yTitle="{{'copyUri' | i18n}}"
|
||||
(click)="copy(u.uri, u.isWebsite ? 'website' : 'uri', 'URI')">
|
||||
<i class="fa fa-lg fa-clone" aria-hidden="true"></i>
|
||||
</button>
|
||||
@@ -221,41 +221,8 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="box" *ngIf="cipher.hasFields">
|
||||
<div class="box-header">
|
||||
{{'customFields' | i18n}}
|
||||
</div>
|
||||
<div class="box-content">
|
||||
<div class="box-content-row box-content-row-flex" *ngFor="let field of cipher.fields">
|
||||
<div class="row-main">
|
||||
<span class="row-label">{{field.name}}</span>
|
||||
<div *ngIf="field.type === fieldType.Text">
|
||||
{{field.value || ' '}}
|
||||
</div>
|
||||
<div *ngIf="field.type === fieldType.Hidden">
|
||||
<span [hidden]="!field.showValue" class="monospaced show-whitespace">{{field.value}}</span>
|
||||
<span [hidden]="field.showValue" class="monospaced">{{field.maskedValue}}</span>
|
||||
</div>
|
||||
<div *ngIf="field.type === fieldType.Boolean">
|
||||
<i class="fa fa-check-square-o" *ngIf="field.value === 'true'" aria-hidden="true"></i>
|
||||
<i class="fa fa-square-o" *ngIf="field.value !== 'true'" aria-hidden="true"></i>
|
||||
<span class="sr-only">{{field.value}}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="action-buttons">
|
||||
<button type="button" class="row-btn" appStopClick appA11yTitle="{{'toggleVisibility' | i18n}}"
|
||||
*ngIf="field.type === fieldType.Hidden && cipher.viewPassword"
|
||||
(click)="toggleFieldValue(field)">
|
||||
<i class="fa fa-lg" aria-hidden="true"
|
||||
[ngClass]="{'fa-eye': !field.showValue, 'fa-eye-slash': field.showValue}"></i>
|
||||
</button>
|
||||
<button type="button" class="row-btn" appStopClick appA11yTitle="{{'copyValue' | i18n}}"
|
||||
*ngIf="field.value && field.type !== fieldType.Boolean && !(field.type === fieldType.Hidden && !cipher.viewPassword)"
|
||||
(click)="copy(field.value, 'value', field.type === fieldType.Hidden ? 'H_Field' : 'Field')">
|
||||
<i class="fa fa-lg fa-clone" aria-hidden="true"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<app-vault-view-custom-fields [cipher]="cipher" [promptPassword]="promptPassword.bind(this)"
|
||||
[copy]="copy.bind(this)"></app-vault-view-custom-fields>
|
||||
</div>
|
||||
<div class="box" *ngIf="cipher.hasAttachments && (canAccessPremium || cipher.organizationId) && showAttachments">
|
||||
<div class="box-header">
|
||||
@@ -269,12 +236,12 @@
|
||||
<i class="fa fa-download fa-fw row-sub-icon" *ngIf="!attachment.downloading" aria-hidden="true"></i>
|
||||
<i class="fa fa-spinner fa-fw fa-spin row-sub-icon" *ngIf="attachment.downloading"
|
||||
aria-hidden="true"></i>
|
||||
</button>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box list">
|
||||
<div class="box-content single-line">
|
||||
<button type="button" class="box-content-row" appStopClick appBlurClick (click)="fillCipher()"
|
||||
<<button type="button" class="box-content-row" appStopClick appBlurClick (click)="fillCipher()"
|
||||
*ngIf="cipher.type !== cipherType.SecureNote && !cipher.isDeleted && !inPopout">
|
||||
<div class="row-main text-primary">
|
||||
<div class="icon text-primary" aria-hidden="true">
|
||||
|
||||
Reference in New Issue
Block a user