|
@@ -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 = `<li class="nav-item" role="presentation"><a class="nav-link active" id="${navId}" data-toggle="tab" href="#${tabId}" role="tab" aria-controls="${tabId}" aria-selected="true">${title}</a></li>`
|
|
|
+ const newNavItem = `<li class="nav-item" role="presentation"><a class="nav-link" data-toggle="row" id="${navId}" href="#${tabId}" role="tab" aria-controls="${tabId}" aria-selected="false">${title}</a></li>`
|
|
|
$(SELECTOR_TAB_NAVBAR_NAV).append(newNavItem)
|
|
|
|
|
|
const newTabItem = `<div class="tab-pane fade" id="${tabId}" role="tabpanel" aria-labelledby="${navId}"><iframe src="${link}"></iframe></div>`
|
|
|
$(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
|