diff --git a/build/js/IFrame.js b/build/js/IFrame.js
index 48acbeb71..93f335f2a 100644
--- a/build/js/IFrame.js
+++ b/build/js/IFrame.js
@@ -26,6 +26,7 @@ const SELECTOR_CONTENT_IFRAME = `${SELECTOR_CONTENT_WRAPPER} iframe`
const SELECTOR_TAB_NAV = `${SELECTOR_DATA_TOGGLE}.iframe-mode .nav`
const SELECTOR_TAB_NAVBAR_NAV = `${SELECTOR_DATA_TOGGLE}.iframe-mode .navbar-nav`
const SELECTOR_TAB_NAVBAR_NAV_ITEM = `${SELECTOR_TAB_NAVBAR_NAV} .nav-item`
+const SELECTOR_TAB_NAVBAR_NAV_LINK = `${SELECTOR_TAB_NAVBAR_NAV} .nav-link`
const SELECTOR_TAB_CONTENT = `${SELECTOR_DATA_TOGGLE}.iframe-mode .tab-content`
const SELECTOR_TAB_EMPTY = `${SELECTOR_TAB_CONTENT} .tab-empty`
const SELECTOR_TAB_LOADING = `${SELECTOR_TAB_CONTENT} .tab-loading`
@@ -95,7 +96,7 @@ class IFrame {
navId += `-${Math.floor(Math.random() * 1000)}`
}
- const newNavItem = `
${title}`
+ const newNavItem = `${title}`
$(SELECTOR_TAB_NAVBAR_NAV).append(unescape(escape(newNavItem)))
const newTabItem = ``
@@ -170,7 +171,7 @@ class IFrame {
}
}
- removeActiveTab(type) {
+ removeActiveTab(type, element) {
if (type == 'all') {
$(SELECTOR_TAB_NAVBAR_NAV_ITEM).remove()
$(SELECTOR_TAB_PANE).remove()
@@ -178,6 +179,20 @@ class IFrame {
} else if (type == 'all-other') {
$(`${SELECTOR_TAB_NAVBAR_NAV_ITEM}:not(.active)`).remove()
$(`${SELECTOR_TAB_PANE}:not(.active)`).remove()
+ } else if (type == 'only-this') {
+ const $navClose = $(element)
+ const $navItem = $navClose.parent('.nav-item')
+ const $navItemParent = $navItem.parent()
+ const navItemIndex = $navItem.index()
+ const tabId = $navClose.siblings('.nav-link').attr('aria-controls')
+ $navItem.remove()
+ $(`#${tabId}`).remove()
+ if ($(SELECTOR_TAB_CONTENT).children().length == $(`${SELECTOR_TAB_EMPTY}, ${SELECTOR_TAB_LOADING}`).length) {
+ $(SELECTOR_TAB_EMPTY).show()
+ } else {
+ const prevNavItemIndex = navItemIndex - 1
+ this.switchTab($navItemParent.children().eq(prevNavItemIndex).find('a'))
+ }
} else {
const $navItem = $(`${SELECTOR_TAB_NAVBAR_NAV_ITEM}.active`)
const $navItemParent = $navItem.parent()
@@ -249,14 +264,25 @@ class IFrame {
})
}
- $(document).on('click', SELECTOR_TAB_NAVBAR_NAV_ITEM, e => {
+ $(document).on('click', SELECTOR_TAB_NAVBAR_NAV_LINK, e => {
+ e.preventDefault()
+ this.onTabClick(e.target)
+ this.switchTab(e.target)
+ })
+ $(document).on('click', SELECTOR_TAB_NAVBAR_NAV_LINK, e => {
e.preventDefault()
this.onTabClick(e.target)
this.switchTab(e.target)
})
$(document).on('click', SELECTOR_DATA_TOGGLE_CLOSE, e => {
e.preventDefault()
- this.removeActiveTab(e.target.attributes['data-type'] ? e.target.attributes['data-type'].nodeValue : null)
+ let { target } = e
+
+ if (target.nodeName == 'I') {
+ target = e.target.offsetParent
+ }
+
+ this.removeActiveTab(target.attributes['data-type'] ? target.attributes['data-type'].nodeValue : null, target)
})
$(document).on('click', SELECTOR_DATA_TOGGLE_FULLSCREEN, e => {
e.preventDefault()
diff --git a/build/scss/pages/_iframe.scss b/build/scss/pages/_iframe.scss
index 191d0b93d..061c5ace5 100644
--- a/build/scss/pages/_iframe.scss
+++ b/build/scss/pages/_iframe.scss
@@ -21,6 +21,14 @@ body.iframe-mode-fullscreen {
height: 100%;
&.iframe-mode {
+ .btn-iframe-close {
+ color: $danger;
+ position: absolute;
+ line-height: 1;
+ right: .125rem;
+ top: .125rem;
+ z-index: 10;
+ }
.navbar-nav {
overflow-y: auto;
width: 100%;
@@ -28,6 +36,9 @@ body.iframe-mode-fullscreen {
.nav-link {
white-space: nowrap;
}
+ .nav-item {
+ position: relative;
+ }
}
.tab-content {
position: relative;
diff --git a/iframe.html b/iframe.html
index 9ed26842c..f53214f68 100644
--- a/iframe.html
+++ b/iframe.html
@@ -753,16 +753,13 @@
-
-
-
-
+