diff --git a/build/js/IFrame.js b/build/js/IFrame.js
index 427db6c59..47bf025a4 100644
--- a/build/js/IFrame.js
+++ b/build/js/IFrame.js
@@ -20,8 +20,12 @@ const SELECTOR_DATA_TOGGLE = '[data-widget="iframe"]'
const SELECTOR_CONTENT_WRAPPER = '.content-wrapper'
const SELECTOR_CONTENT_IFRAME = `${SELECTOR_CONTENT_WRAPPER} iframe`
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_NAV_LINK = '.nav-link[role="tab"]'
+const SELECTOR_TAB_NAVBAR_NAV_LINK = `${SELECTOR_TAB_NAVBAR_NAV} ${SELECTOR_NAV_LINK}`
const SELECTOR_TAB_CONTENT = `${SELECTOR_DATA_TOGGLE}.iframe-mode .tab-content`
-const SELECTOR_SIDEBAR_MENU_ITEM = '.main-sidebar .nav-item a.nav-link'
+const SELECTOR_TAB_EMPTY = `${SELECTOR_TAB_CONTENT} .tab-empty`
+const SELECTOR_SIDEBAR_MENU_ITEM = '.main-sidebar .nav-item > a.nav-link'
const CLASS_NAME_IFRAME_MODE = 'iframe-mode'
const Default = {
@@ -60,21 +64,23 @@ class IFrame {
const tabId = `panel-${link.replace('.html', '').replace('./', '').replace('/', '-')}-${Math.floor(Math.random() * 1000)}`
const navId = `tab-${link.replace('.html', '').replace('./', '').replace('/', '-')}-${Math.floor(Math.random() * 1000)}`
- const newNavItem = `
${title}`
+ const newNavItem = `${title}`
$(SELECTOR_TAB_NAVBAR_NAV).append(newNavItem)
const newTabItem = ``
$(SELECTOR_TAB_CONTENT).append(newTabItem)
-
- // eslint-disable-next-line no-console
- console.log($(SELECTOR_TAB_CONTENT))
}
openTabSidebar(item) {
const title = $(item).find('p').text()
const link = $(item).attr('href')
+ $(`${SELECTOR_TAB_NAVBAR_NAV} .nav-link[role="tab"]`).tab('dispose')
this.createTab(title, link)
+
+ // eslint-disable-next-line no-console
+ console.log($(SELECTOR_TAB_NAVBAR_NAV))
+ $(`${SELECTOR_TAB_NAVBAR_NAV} ${SELECTOR_NAV_LINK}`).tab()
}
// Private
@@ -82,17 +88,45 @@ class IFrame {
_init() {
if ($(SELECTOR_CONTENT_WRAPPER).hasClass(CLASS_NAME_IFRAME_MODE)) {
this._setupListeners()
- $(SELECTOR_TAB_NAVBAR_NAV)
-
- $(SELECTOR_CONTENT_IFRAME).height($(SELECTOR_CONTENT_WRAPPER).height())
+ this._fixHeight(true)
}
}
_setupListeners() {
+ $(window).on('resize', () => {
+ setTimeout(() => {
+ this._fixHeight()
+ }, 1)
+ })
$(document).on('click', SELECTOR_SIDEBAR_MENU_ITEM, e => {
e.preventDefault()
+ // eslint-disable-next-line no-console
+ console.log($(e.target))
this.openTabSidebar(e.target)
})
+ $(document).on('click', SELECTOR_TAB_NAVBAR_NAV_ITEM, e => {
+ e.preventDefault()
+ $(SELECTOR_TAB_EMPTY).hide()
+ $(`${SELECTOR_TAB_NAVBAR_NAV} .active`).removeClass('active')
+ $(SELECTOR_TAB_NAVBAR_NAV_LINK).tab('dispose')
+ this._fixHeight()
+ $(e.target).tab('show')
+ $(e.target).parents('li').addClass('active')
+ })
+ }
+
+ _fixHeight(tabEmpty = false) {
+ const contentWrapperHeight = parseFloat($(SELECTOR_CONTENT_WRAPPER).css('min-height'))
+ const panelOffset = $('body').data('panel-auto-height')
+ if (tabEmpty == true) {
+ setTimeout(() => {
+ // eslint-disable-next-line no-console
+ console.log(parseFloat(contentWrapperHeight + (panelOffset < 0 ? Math.abs(panelOffset) : panelOffset)))
+ $(SELECTOR_TAB_EMPTY).height(contentWrapperHeight)
+ }, 50)
+ } else {
+ $(SELECTOR_CONTENT_IFRAME).height(contentWrapperHeight)
+ }
}
// Static
diff --git a/build/scss/pages/_iframe.scss b/build/scss/pages/_iframe.scss
index 88b446ad2..3110c8f78 100644
--- a/build/scss/pages/_iframe.scss
+++ b/build/scss/pages/_iframe.scss
@@ -4,6 +4,8 @@ body.iframe-mode {
}
.content-wrapper {
margin-left: 0 !important;
+ margin-top: 0 !important;
+ padding-bottom: 0 !important;
}
.main-header,
.main-footer {
@@ -15,10 +17,21 @@ body.iframe-mode {
height: 100%;
&.iframe-mode {
+ .tab-empty {
+ width: 100%;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ }
+
iframe {
border: 0;
width: 100%;
height: 100%;
+
+ .content-wrapper {
+ padding-bottom: 0 !important;
+ }
}
}
}
diff --git a/iframe.html b/iframe.html
index 0806663e6..db3df2678 100644
--- a/iframe.html
+++ b/iframe.html
@@ -14,7 +14,7 @@
-
+