Greasy Fork is available in English.

1Password 1-click archive & delete

Adds a 1-Click Delete & Archive Buttons for entries

// ==UserScript==
// @name         1Password 1-click archive & delete
// @namespace    http://tampermonkey.net/
// @version      2.0
// @description  Adds a 1-Click Delete & Archive Buttons for entries
// @namespace    https://greasyfork.org/en/users/807108-jeremy-r
// @author       JRem
// @match        https://*.1password.com/vaults/*/*/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=1password.com
// @require      http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
// @require      https://greasyfork.org/scripts/383527-wait-for-key-elements/code/Wait_for_key_elements.js?version=701631
// @grant        GM_addStyle
// @license MIT
// ==/UserScript==

(function() {
    // Customizable timeout for re-adding buttons after use
    const timeout = "1500";
    // Wait for the buttons to be visible before starting
    waitForKeyElements (
        "#item-details",
        addBtn
    );
    waitForKeyElements (
        "#top-bar-notifications",
        topBtn
    );
    // CSS Style to put both of the new buttons on the same line
    var css = '.clickarchive {margin-left:3px!important;}';
        css += 'div#divdelarc {display: inline-flex !important;margin-left: 0px !important;align-content: center !important;}';
        css += '#topdiv {display: inline-flex !important;}';
    GM_addStyle(css);

    function topBtn() {
        var tdparent = document.querySelector('div[id="title-container"]');
        var topdiv = document.createElement("div");
            topdiv.id = "topdiv";

        tdparent.appendChild(topdiv);

        var topbtn = document.createElement("button");
            topbtn.innerHTML = "Add Buttons";
            topbtn.className= "item-detail-button clickadd";
            topbtn.id= "clickadd";
            topbtn.style.background = "red";
            topbtn.onclick= function(){
                addBtn();
            }
        var div1=document.querySelector('div[id="topdiv"]');
        div1.appendChild(topbtn);
    }

    // Function to add buttons
    function addBtn() {
        // Define Delete Button
        var delbtn = document.createElement("button");
        delbtn.innerHTML = "Delete";
        delbtn.className= "item-detail-button clickdelete";
        delbtn.id= "clickdelete";
        delbtn.style.background = "red";
        delbtn.onclick= function(){
            document.querySelector('button[data-testid="toolbar-edit"]').click();
            document.querySelector('button[data-testid="toolbar-delete"]').click();
            document.querySelector('button[id="submit"]').click();
            // When the buttons are used, the page gets reloaded, however since its using websocket it cant re-add the buttons without help
            // This just tells it to re-add the button 1.5 seconds after it has been clicked.
            // If the buttons are not visible after being used, increase the timeout var at the top
            setTimeout(function(){
                addBtn();
            }, timeout);
        }
        var div = document.querySelector('button[class="item-detail-button"]');

        // Define new DIV to put buttons in
        var newdiv = document.createElement("div");
            newdiv.id = "divdelarc";
        // Append DIV to page
        div.parentElement.appendChild(newdiv);
        // Add Delete button
        newdiv.appendChild(delbtn);

        // Define Archive button
        var archivebtn = document.createElement("button");
            archivebtn.innerHTML = "Archive";
            archivebtn.className= "item-detail-button clickarchive";
            archivebtn.id= "clickarchive";
            archivebtn.style.background = "red";
            archivebtn.onclick= function(){
                document.querySelector('button[data-testid="toolbar-edit"]').click();
                document.querySelector('button[data-testid="toolbar-archive"]').click();
                document.querySelector('button[id="archive-selected-item"]').click();
                // When the buttons are used, the page gets reloaded, however since its using websocket it cant re-add the buttons without help
                // This just tells it to re-add the button 1.5 seconds after it has been clicked.
                // If the buttons are not visible after being used, increase the timeout var at the top
                setTimeout(function(){
                    addBtn();
                }, timeout);
           }
        // Add Archive button to page
        newdiv.appendChild(archivebtn);
    }

})();