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 = `` + const newNavItem = `` $(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 @@ - +
@@ -807,14 +807,11 @@ -
-
- +
+

No tab selected!