diff --git a/src/assets/index.html b/src/assets/index.html
index c03ee6d..ca4c3c7 100644
--- a/src/assets/index.html
+++ b/src/assets/index.html
@@ -35,76 +35,73 @@
{% inline "assorted.svg" %}
-
-
+
+
{% inline "more-horizontal.svg" %}
-
+
+
-
+
+
-
-
+
+
+
+
-
+
- Refresh
-
+
+
+
-
+
- Sort by
-
+
+
-
+
+
-
- Subscriptions
-
+
+
+
+
-
+
+
{% inline "upload.svg" %}
Export
-
-
-
+
+
+
-
-
+
+
+
-
+
+
-
-
+
+
{% inline "more-vertical.svg" %}
- {{ folder.title }}
- Rename
-
-
- Delete
-
-
+
+
+
+
+
-
-
+
+
{% inline "more-vertical.svg" %}
- {{ feed.title }}
- Visit Website
-
- Rename
-
- Move to...
-
+
+ Visit Website
+
+
+
+
+
-
+
-
+
+
-
-
+
+
-
+
+
diff --git a/src/assets/javascripts/app.js b/src/assets/javascripts/app.js
index 04cfde0..519e58a 100644
--- a/src/assets/javascripts/app.js
+++ b/src/assets/javascripts/app.js
@@ -83,6 +83,55 @@ Vue.component('drag', {
},
})
+Vue.component('dropdown', {
+ props: ['class', 'toggle-class', 'ref'],
+ data: function() {
+ return {open: false, openClass: ''}
+ },
+ template: `
+
+
+
+
+ `,
+ computed: {
+ btnToggleClass: function() {
+ var c = this.$props.toggleClass || ''
+ c += ' dropdown-toggle dropdown-toggle-no-caret'
+ c += this.open ? ' open' : ''
+ return c.trim()
+ }
+ },
+ methods: {
+ toggle: function(e) {
+ if (this.open) {
+ this.hide()
+ } else {
+ e.stopPropagation()
+ this.show()
+ }
+ },
+ show: function(e) {
+ this.open = true
+ this.openClass = ' show'
+ this.$refs.menu.style.right = '0'
+ this.$refs.menu.style.left = 'auto'
+ this.$refs.menu.style.top = (this.$refs.btn.offsetHeight) + 'px'
+ document.addEventListener('click', this.clickHandler)
+ },
+ hide: function() {
+ this.open = false
+ this.openClass = ''
+ document.removeEventListener('click', this.clickHandler)
+ },
+ clickHandler: function(e) {
+ if (e.target.closest('.dropdown') == null) this.hide()
+ if (e.target.closest('.dropdown-item') != null) this.hide()
+ }
+ },
+})
+
function dateRepr(d) {
var sec = (new Date().getTime() - d.getTime()) / 1000
var neg = sec < 0
diff --git a/src/assets/stylesheets/app.css b/src/assets/stylesheets/app.css
index 9e94ef9..8726355 100644
--- a/src/assets/stylesheets/app.css
+++ b/src/assets/stylesheets/app.css
@@ -53,17 +53,18 @@ select.form-control:not([multiple]):not([size]) {
padding-right: 0;
}
-.dropdown-menu {
+.settings-dropdown .dropdown-menu {
padding: 0;
box-shadow: 0px 1px 5px rgba(0, 0, 0, 0.07);
overflow: hidden;
}
-.dropdown-item, .dropdown-header {
+.settings-dropdown .dropdown-item,
+.settings-dropdown .dropdown-header {
padding: .375rem 1rem;
}
-.dropdown-divider {
+.settings-dropdown .dropdown-divider {
margin: 0;
}
@@ -71,16 +72,16 @@ select.form-control:not([multiple]):not([size]) {
outline: none;
}
+.settings-dropdown .dropdown-item {
+ cursor: pointer;
+}
+
.settings-dropdown .dropdown-item:focus {
outline: none;
}
-.settings-dropdown.large .dropdown-item {
- padding: .5rem 1rem;
-}
-
-.dropdown-danger .dropdown-item {
- color: #dc3545!important;
+.settings-dropdown form:focus {
+ outline: none;
}
.modal-backdrop {
@@ -92,10 +93,6 @@ select.form-control:not([multiple]):not([size]) {
transform: none !important;
}
-.b-dropdown-form:focus {
- outline: none;
-}
-
.popover:focus {
outline: none;
}