Remove unneeded IIFEs (#2774)

pull/2776/head^2
XhmikosR 2020-06-02 16:23:22 +03:00 committed by GitHub
parent bbfcc0639e
commit e848621b32
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 1610 additions and 1632 deletions

View File

@ -21,6 +21,7 @@ module.exports = {
}, },
name: 'adminlte' name: 'adminlte'
}, },
external: ['jquery'],
plugins: [ plugins: [
babel({ babel({
exclude: 'node_modules/**', exclude: 'node_modules/**',

View File

@ -5,158 +5,156 @@
* -------------------------------------------- * --------------------------------------------
*/ */
const CardRefresh = ($ => { import $ from 'jquery'
/**
* Constants
* ====================================================
*/
const NAME = 'CardRefresh' /**
const DATA_KEY = 'lte.cardrefresh' * Constants
const EVENT_KEY = `.${DATA_KEY}` * ====================================================
const JQUERY_NO_CONFLICT = $.fn[NAME] */
const Event = { const NAME = 'CardRefresh'
LOADED: `loaded${EVENT_KEY}`, const DATA_KEY = 'lte.cardrefresh'
OVERLAY_ADDED: `overlay.added${EVENT_KEY}`, const EVENT_KEY = `.${DATA_KEY}`
OVERLAY_REMOVED: `overlay.removed${EVENT_KEY}` const JQUERY_NO_CONFLICT = $.fn[NAME]
const Event = {
LOADED: `loaded${EVENT_KEY}`,
OVERLAY_ADDED: `overlay.added${EVENT_KEY}`,
OVERLAY_REMOVED: `overlay.removed${EVENT_KEY}`
}
const ClassName = {
CARD: 'card'
}
const Selector = {
CARD: `.${ClassName.CARD}`,
DATA_REFRESH: '[data-card-widget="card-refresh"]'
}
const Default = {
source: '',
sourceSelector: '',
params: {},
trigger: Selector.DATA_REFRESH,
content: '.card-body',
loadInContent: true,
loadOnInit: true,
responseType: '',
overlayTemplate: '<div class="overlay"><i class="fas fa-2x fa-sync-alt fa-spin"></i></div>',
onLoadStart() {
},
onLoadDone(response) {
return response
} }
}
const ClassName = { class CardRefresh {
CARD: 'card' constructor(element, settings) {
} this._element = element
this._parent = element.parents(Selector.CARD).first()
this._settings = $.extend({}, Default, settings)
this._overlay = $(this._settings.overlayTemplate)
const Selector = { if (element.hasClass(ClassName.CARD)) {
CARD: `.${ClassName.CARD}`, this._parent = element
DATA_REFRESH: '[data-card-widget="card-refresh"]' }
}
const Default = { if (this._settings.source === '') {
source: '', throw new Error('Source url was not defined. Please specify a url in your CardRefresh source option.')
sourceSelector: '',
params: {},
trigger: Selector.DATA_REFRESH,
content: '.card-body',
loadInContent: true,
loadOnInit: true,
responseType: '',
overlayTemplate: '<div class="overlay"><i class="fas fa-2x fa-sync-alt fa-spin"></i></div>',
onLoadStart() {
},
onLoadDone(response) {
return response
} }
} }
class CardRefresh { load() {
constructor(element, settings) { this._addOverlay()
this._element = element this._settings.onLoadStart.call($(this))
this._parent = element.parents(Selector.CARD).first()
this._settings = $.extend({}, Default, settings)
this._overlay = $(this._settings.overlayTemplate)
if (element.hasClass(ClassName.CARD)) { $.get(this._settings.source, this._settings.params, response => {
this._parent = element if (this._settings.loadInContent) {
} if (this._settings.sourceSelector !== '') {
response = $(response).find(this._settings.sourceSelector).html()
if (this._settings.source === '') {
throw new Error('Source url was not defined. Please specify a url in your CardRefresh source option.')
}
}
load() {
this._addOverlay()
this._settings.onLoadStart.call($(this))
$.get(this._settings.source, this._settings.params, response => {
if (this._settings.loadInContent) {
if (this._settings.sourceSelector !== '') {
response = $(response).find(this._settings.sourceSelector).html()
}
this._parent.find(this._settings.content).html(response)
} }
this._settings.onLoadDone.call($(this), response) this._parent.find(this._settings.content).html(response)
this._removeOverlay()
}, this._settings.responseType !== '' && this._settings.responseType)
$(this._element).trigger($.Event(Event.LOADED))
}
_addOverlay() {
this._parent.append(this._overlay)
$(this._element).trigger($.Event(Event.OVERLAY_ADDED))
}
_removeOverlay() {
this._parent.find(this._overlay).remove()
$(this._element).trigger($.Event(Event.OVERLAY_REMOVED))
}
// Private
_init() {
$(this).find(this._settings.trigger).on('click', () => {
this.load()
})
if (this._settings.loadOnInit) {
this.load()
}
}
// Static
static _jQueryInterface(config) {
let data = $(this).data(DATA_KEY)
const _options = $.extend({}, Default, $(this).data())
if (!data) {
data = new CardRefresh($(this), _options)
$(this).data(DATA_KEY, typeof config === 'string' ? data : config)
} }
if (typeof config === 'string' && config.match(/load/)) { this._settings.onLoadDone.call($(this), response)
data[config]() this._removeOverlay()
} else { }, this._settings.responseType !== '' && this._settings.responseType)
data._init($(this))
} $(this._element).trigger($.Event(Event.LOADED))
}
} }
/** _addOverlay() {
* Data API this._parent.append(this._overlay)
* ==================================================== $(this._element).trigger($.Event(Event.OVERLAY_ADDED))
*/ }
$(document).on('click', Selector.DATA_REFRESH, function (event) { _removeOverlay() {
if (event) { this._parent.find(this._overlay).remove()
event.preventDefault() $(this._element).trigger($.Event(Event.OVERLAY_REMOVED))
} }
CardRefresh._jQueryInterface.call($(this), 'load') // Private
})
$(() => { _init() {
$(Selector.DATA_REFRESH).each(function () { $(this).find(this._settings.trigger).on('click', () => {
CardRefresh._jQueryInterface.call($(this)) this.load()
}) })
})
/** if (this._settings.loadOnInit) {
* jQuery API this.load()
* ==================================================== }
*/
$.fn[NAME] = CardRefresh._jQueryInterface
$.fn[NAME].Constructor = CardRefresh
$.fn[NAME].noConflict = function () {
$.fn[NAME] = JQUERY_NO_CONFLICT
return CardRefresh._jQueryInterface
} }
return CardRefresh // Static
})(jQuery)
static _jQueryInterface(config) {
let data = $(this).data(DATA_KEY)
const _options = $.extend({}, Default, $(this).data())
if (!data) {
data = new CardRefresh($(this), _options)
$(this).data(DATA_KEY, typeof config === 'string' ? data : config)
}
if (typeof config === 'string' && config.match(/load/)) {
data[config]()
} else {
data._init($(this))
}
}
}
/**
* Data API
* ====================================================
*/
$(document).on('click', Selector.DATA_REFRESH, function (event) {
if (event) {
event.preventDefault()
}
CardRefresh._jQueryInterface.call($(this), 'load')
})
$(() => {
$(Selector.DATA_REFRESH).each(function () {
CardRefresh._jQueryInterface.call($(this))
})
})
/**
* jQuery API
* ====================================================
*/
$.fn[NAME] = CardRefresh._jQueryInterface
$.fn[NAME].Constructor = CardRefresh
$.fn[NAME].noConflict = function () {
$.fn[NAME] = JQUERY_NO_CONFLICT
return CardRefresh._jQueryInterface
}
export default CardRefresh export default CardRefresh

View File

@ -5,239 +5,237 @@
* -------------------------------------------- * --------------------------------------------
*/ */
const CardWidget = ($ => { import $ from 'jquery'
/**
* Constants
* ====================================================
*/
const NAME = 'CardWidget' /**
const DATA_KEY = 'lte.cardwidget' * Constants
const EVENT_KEY = `.${DATA_KEY}` * ====================================================
const JQUERY_NO_CONFLICT = $.fn[NAME] */
const Event = { const NAME = 'CardWidget'
EXPANDED: `expanded${EVENT_KEY}`, const DATA_KEY = 'lte.cardwidget'
COLLAPSED: `collapsed${EVENT_KEY}`, const EVENT_KEY = `.${DATA_KEY}`
MAXIMIZED: `maximized${EVENT_KEY}`, const JQUERY_NO_CONFLICT = $.fn[NAME]
MINIMIZED: `minimized${EVENT_KEY}`,
REMOVED: `removed${EVENT_KEY}` const Event = {
EXPANDED: `expanded${EVENT_KEY}`,
COLLAPSED: `collapsed${EVENT_KEY}`,
MAXIMIZED: `maximized${EVENT_KEY}`,
MINIMIZED: `minimized${EVENT_KEY}`,
REMOVED: `removed${EVENT_KEY}`
}
const ClassName = {
CARD: 'card',
COLLAPSED: 'collapsed-card',
COLLAPSING: 'collapsing-card',
EXPANDING: 'expanding-card',
WAS_COLLAPSED: 'was-collapsed',
MAXIMIZED: 'maximized-card'
}
const Selector = {
DATA_REMOVE: '[data-card-widget="remove"]',
DATA_COLLAPSE: '[data-card-widget="collapse"]',
DATA_MAXIMIZE: '[data-card-widget="maximize"]',
CARD: `.${ClassName.CARD}`,
CARD_HEADER: '.card-header',
CARD_BODY: '.card-body',
CARD_FOOTER: '.card-footer'
}
const Default = {
animationSpeed: 'normal',
collapseTrigger: Selector.DATA_COLLAPSE,
removeTrigger: Selector.DATA_REMOVE,
maximizeTrigger: Selector.DATA_MAXIMIZE,
collapseIcon: 'fa-minus',
expandIcon: 'fa-plus',
maximizeIcon: 'fa-expand',
minimizeIcon: 'fa-compress'
}
class CardWidget {
constructor(element, settings) {
this._element = element
this._parent = element.parents(Selector.CARD).first()
if (element.hasClass(ClassName.CARD)) {
this._parent = element
}
this._settings = $.extend({}, Default, settings)
} }
const ClassName = { collapse() {
CARD: 'card', this._parent.addClass(ClassName.COLLAPSING).children(`${Selector.CARD_BODY}, ${Selector.CARD_FOOTER}`)
COLLAPSED: 'collapsed-card', .slideUp(this._settings.animationSpeed, () => {
COLLAPSING: 'collapsing-card', this._parent.addClass(ClassName.COLLAPSED).removeClass(ClassName.COLLAPSING)
EXPANDING: 'expanding-card',
WAS_COLLAPSED: 'was-collapsed',
MAXIMIZED: 'maximized-card'
}
const Selector = {
DATA_REMOVE: '[data-card-widget="remove"]',
DATA_COLLAPSE: '[data-card-widget="collapse"]',
DATA_MAXIMIZE: '[data-card-widget="maximize"]',
CARD: `.${ClassName.CARD}`,
CARD_HEADER: '.card-header',
CARD_BODY: '.card-body',
CARD_FOOTER: '.card-footer'
}
const Default = {
animationSpeed: 'normal',
collapseTrigger: Selector.DATA_COLLAPSE,
removeTrigger: Selector.DATA_REMOVE,
maximizeTrigger: Selector.DATA_MAXIMIZE,
collapseIcon: 'fa-minus',
expandIcon: 'fa-plus',
maximizeIcon: 'fa-expand',
minimizeIcon: 'fa-compress'
}
class CardWidget {
constructor(element, settings) {
this._element = element
this._parent = element.parents(Selector.CARD).first()
if (element.hasClass(ClassName.CARD)) {
this._parent = element
}
this._settings = $.extend({}, Default, settings)
}
collapse() {
this._parent.addClass(ClassName.COLLAPSING).children(`${Selector.CARD_BODY}, ${Selector.CARD_FOOTER}`)
.slideUp(this._settings.animationSpeed, () => {
this._parent.addClass(ClassName.COLLAPSED).removeClass(ClassName.COLLAPSING)
})
this._parent.find('> ' + Selector.CARD_HEADER + ' ' + this._settings.collapseTrigger + ' .' + this._settings.collapseIcon)
.addClass(this._settings.expandIcon)
.removeClass(this._settings.collapseIcon)
this._element.trigger($.Event(Event.COLLAPSED), this._parent)
}
expand() {
this._parent.addClass(ClassName.EXPANDING).children(`${Selector.CARD_BODY}, ${Selector.CARD_FOOTER}`)
.slideDown(this._settings.animationSpeed, () => {
this._parent.removeClass(ClassName.COLLAPSED).removeClass(ClassName.EXPANDING)
})
this._parent.find('> ' + Selector.CARD_HEADER + ' ' + this._settings.collapseTrigger + ' .' + this._settings.expandIcon)
.addClass(this._settings.collapseIcon)
.removeClass(this._settings.expandIcon)
this._element.trigger($.Event(Event.EXPANDED), this._parent)
}
remove() {
this._parent.slideUp()
this._element.trigger($.Event(Event.REMOVED), this._parent)
}
toggle() {
if (this._parent.hasClass(ClassName.COLLAPSED)) {
this.expand()
return
}
this.collapse()
}
maximize() {
this._parent.find(this._settings.maximizeTrigger + ' .' + this._settings.maximizeIcon)
.addClass(this._settings.minimizeIcon)
.removeClass(this._settings.maximizeIcon)
this._parent.css({
height: this._parent.height(),
width: this._parent.width(),
transition: 'all .15s'
}).delay(150).queue(function () {
$(this).addClass(ClassName.MAXIMIZED)
$('html').addClass(ClassName.MAXIMIZED)
if ($(this).hasClass(ClassName.COLLAPSED)) {
$(this).addClass(ClassName.WAS_COLLAPSED)
}
$(this).dequeue()
}) })
this._element.trigger($.Event(Event.MAXIMIZED), this._parent) this._parent.find('> ' + Selector.CARD_HEADER + ' ' + this._settings.collapseTrigger + ' .' + this._settings.collapseIcon)
} .addClass(this._settings.expandIcon)
.removeClass(this._settings.collapseIcon)
minimize() { this._element.trigger($.Event(Event.COLLAPSED), this._parent)
this._parent.find(this._settings.maximizeTrigger + ' .' + this._settings.minimizeIcon)
.addClass(this._settings.maximizeIcon)
.removeClass(this._settings.minimizeIcon)
this._parent.css('cssText', 'height:' + this._parent[0].style.height + ' !important;' +
'width:' + this._parent[0].style.width + ' !important; transition: all .15s;'
).delay(10).queue(function () {
$(this).removeClass(ClassName.MAXIMIZED)
$('html').removeClass(ClassName.MAXIMIZED)
$(this).css({
height: 'inherit',
width: 'inherit'
})
if ($(this).hasClass(ClassName.WAS_COLLAPSED)) {
$(this).removeClass(ClassName.WAS_COLLAPSED)
}
$(this).dequeue()
})
this._element.trigger($.Event(Event.MINIMIZED), this._parent)
}
toggleMaximize() {
if (this._parent.hasClass(ClassName.MAXIMIZED)) {
this.minimize()
return
}
this.maximize()
}
// Private
_init(card) {
this._parent = card
$(this).find(this._settings.collapseTrigger).click(() => {
this.toggle()
})
$(this).find(this._settings.maximizeTrigger).click(() => {
this.toggleMaximize()
})
$(this).find(this._settings.removeTrigger).click(() => {
this.remove()
})
}
// Static
static _jQueryInterface(config) {
let data = $(this).data(DATA_KEY)
const _options = $.extend({}, Default, $(this).data())
if (!data) {
data = new CardWidget($(this), _options)
$(this).data(DATA_KEY, typeof config === 'string' ? data : config)
}
if (typeof config === 'string' && config.match(/collapse|expand|remove|toggle|maximize|minimize|toggleMaximize/)) {
data[config]()
} else if (typeof config === 'object') {
data._init($(this))
}
}
} }
/** expand() {
* Data API this._parent.addClass(ClassName.EXPANDING).children(`${Selector.CARD_BODY}, ${Selector.CARD_FOOTER}`)
* ==================================================== .slideDown(this._settings.animationSpeed, () => {
*/ this._parent.removeClass(ClassName.COLLAPSED).removeClass(ClassName.EXPANDING)
})
$(document).on('click', Selector.DATA_COLLAPSE, function (event) { this._parent.find('> ' + Selector.CARD_HEADER + ' ' + this._settings.collapseTrigger + ' .' + this._settings.expandIcon)
if (event) { .addClass(this._settings.collapseIcon)
event.preventDefault() .removeClass(this._settings.expandIcon)
}
CardWidget._jQueryInterface.call($(this), 'toggle') this._element.trigger($.Event(Event.EXPANDED), this._parent)
})
$(document).on('click', Selector.DATA_REMOVE, function (event) {
if (event) {
event.preventDefault()
}
CardWidget._jQueryInterface.call($(this), 'remove')
})
$(document).on('click', Selector.DATA_MAXIMIZE, function (event) {
if (event) {
event.preventDefault()
}
CardWidget._jQueryInterface.call($(this), 'toggleMaximize')
})
/**
* jQuery API
* ====================================================
*/
$.fn[NAME] = CardWidget._jQueryInterface
$.fn[NAME].Constructor = CardWidget
$.fn[NAME].noConflict = function () {
$.fn[NAME] = JQUERY_NO_CONFLICT
return CardWidget._jQueryInterface
} }
return CardWidget remove() {
})(jQuery) this._parent.slideUp()
this._element.trigger($.Event(Event.REMOVED), this._parent)
}
toggle() {
if (this._parent.hasClass(ClassName.COLLAPSED)) {
this.expand()
return
}
this.collapse()
}
maximize() {
this._parent.find(this._settings.maximizeTrigger + ' .' + this._settings.maximizeIcon)
.addClass(this._settings.minimizeIcon)
.removeClass(this._settings.maximizeIcon)
this._parent.css({
height: this._parent.height(),
width: this._parent.width(),
transition: 'all .15s'
}).delay(150).queue(function () {
$(this).addClass(ClassName.MAXIMIZED)
$('html').addClass(ClassName.MAXIMIZED)
if ($(this).hasClass(ClassName.COLLAPSED)) {
$(this).addClass(ClassName.WAS_COLLAPSED)
}
$(this).dequeue()
})
this._element.trigger($.Event(Event.MAXIMIZED), this._parent)
}
minimize() {
this._parent.find(this._settings.maximizeTrigger + ' .' + this._settings.minimizeIcon)
.addClass(this._settings.maximizeIcon)
.removeClass(this._settings.minimizeIcon)
this._parent.css('cssText', 'height:' + this._parent[0].style.height + ' !important;' +
'width:' + this._parent[0].style.width + ' !important; transition: all .15s;'
).delay(10).queue(function () {
$(this).removeClass(ClassName.MAXIMIZED)
$('html').removeClass(ClassName.MAXIMIZED)
$(this).css({
height: 'inherit',
width: 'inherit'
})
if ($(this).hasClass(ClassName.WAS_COLLAPSED)) {
$(this).removeClass(ClassName.WAS_COLLAPSED)
}
$(this).dequeue()
})
this._element.trigger($.Event(Event.MINIMIZED), this._parent)
}
toggleMaximize() {
if (this._parent.hasClass(ClassName.MAXIMIZED)) {
this.minimize()
return
}
this.maximize()
}
// Private
_init(card) {
this._parent = card
$(this).find(this._settings.collapseTrigger).click(() => {
this.toggle()
})
$(this).find(this._settings.maximizeTrigger).click(() => {
this.toggleMaximize()
})
$(this).find(this._settings.removeTrigger).click(() => {
this.remove()
})
}
// Static
static _jQueryInterface(config) {
let data = $(this).data(DATA_KEY)
const _options = $.extend({}, Default, $(this).data())
if (!data) {
data = new CardWidget($(this), _options)
$(this).data(DATA_KEY, typeof config === 'string' ? data : config)
}
if (typeof config === 'string' && config.match(/collapse|expand|remove|toggle|maximize|minimize|toggleMaximize/)) {
data[config]()
} else if (typeof config === 'object') {
data._init($(this))
}
}
}
/**
* Data API
* ====================================================
*/
$(document).on('click', Selector.DATA_COLLAPSE, function (event) {
if (event) {
event.preventDefault()
}
CardWidget._jQueryInterface.call($(this), 'toggle')
})
$(document).on('click', Selector.DATA_REMOVE, function (event) {
if (event) {
event.preventDefault()
}
CardWidget._jQueryInterface.call($(this), 'remove')
})
$(document).on('click', Selector.DATA_MAXIMIZE, function (event) {
if (event) {
event.preventDefault()
}
CardWidget._jQueryInterface.call($(this), 'toggleMaximize')
})
/**
* jQuery API
* ====================================================
*/
$.fn[NAME] = CardWidget._jQueryInterface
$.fn[NAME].Constructor = CardWidget
$.fn[NAME].noConflict = function () {
$.fn[NAME] = JQUERY_NO_CONFLICT
return CardWidget._jQueryInterface
}
export default CardWidget export default CardWidget

View File

@ -5,286 +5,283 @@
* -------------------------------------------- * --------------------------------------------
*/ */
const ControlSidebar = ($ => { import $ from 'jquery'
/**
* Constants
* ====================================================
*/
const NAME = 'ControlSidebar' /**
const DATA_KEY = 'lte.controlsidebar' * Constants
const EVENT_KEY = `.${DATA_KEY}` * ====================================================
const JQUERY_NO_CONFLICT = $.fn[NAME] */
const Event = { const NAME = 'ControlSidebar'
COLLAPSED: `collapsed${EVENT_KEY}`, const DATA_KEY = 'lte.controlsidebar'
EXPANDED: `expanded${EVENT_KEY}` const EVENT_KEY = `.${DATA_KEY}`
const JQUERY_NO_CONFLICT = $.fn[NAME]
const Event = {
COLLAPSED: `collapsed${EVENT_KEY}`,
EXPANDED: `expanded${EVENT_KEY}`
}
const Selector = {
CONTROL_SIDEBAR: '.control-sidebar',
CONTROL_SIDEBAR_CONTENT: '.control-sidebar-content',
DATA_TOGGLE: '[data-widget="control-sidebar"]',
HEADER: '.main-header',
FOOTER: '.main-footer'
}
const ClassName = {
CONTROL_SIDEBAR_ANIMATE: 'control-sidebar-animate',
CONTROL_SIDEBAR_OPEN: 'control-sidebar-open',
CONTROL_SIDEBAR_SLIDE: 'control-sidebar-slide-open',
LAYOUT_FIXED: 'layout-fixed',
NAVBAR_FIXED: 'layout-navbar-fixed',
NAVBAR_SM_FIXED: 'layout-sm-navbar-fixed',
NAVBAR_MD_FIXED: 'layout-md-navbar-fixed',
NAVBAR_LG_FIXED: 'layout-lg-navbar-fixed',
NAVBAR_XL_FIXED: 'layout-xl-navbar-fixed',
FOOTER_FIXED: 'layout-footer-fixed',
FOOTER_SM_FIXED: 'layout-sm-footer-fixed',
FOOTER_MD_FIXED: 'layout-md-footer-fixed',
FOOTER_LG_FIXED: 'layout-lg-footer-fixed',
FOOTER_XL_FIXED: 'layout-xl-footer-fixed'
}
const Default = {
controlsidebarSlide: true,
scrollbarTheme: 'os-theme-light',
scrollbarAutoHide: 'l'
}
/**
* Class Definition
* ====================================================
*/
class ControlSidebar {
constructor(element, config) {
this._element = element
this._config = config
this._init()
} }
const Selector = { // Public
CONTROL_SIDEBAR: '.control-sidebar',
CONTROL_SIDEBAR_CONTENT: '.control-sidebar-content',
DATA_TOGGLE: '[data-widget="control-sidebar"]',
HEADER: '.main-header',
FOOTER: '.main-footer'
}
const ClassName = { collapse() {
CONTROL_SIDEBAR_ANIMATE: 'control-sidebar-animate', // Show the control sidebar
CONTROL_SIDEBAR_OPEN: 'control-sidebar-open', if (this._config.controlsidebarSlide) {
CONTROL_SIDEBAR_SLIDE: 'control-sidebar-slide-open', $('html').addClass(ClassName.CONTROL_SIDEBAR_ANIMATE)
LAYOUT_FIXED: 'layout-fixed', $('body').removeClass(ClassName.CONTROL_SIDEBAR_SLIDE).delay(300).queue(function () {
NAVBAR_FIXED: 'layout-navbar-fixed', $(Selector.CONTROL_SIDEBAR).hide()
NAVBAR_SM_FIXED: 'layout-sm-navbar-fixed', $('html').removeClass(ClassName.CONTROL_SIDEBAR_ANIMATE)
NAVBAR_MD_FIXED: 'layout-md-navbar-fixed', $(this).dequeue()
NAVBAR_LG_FIXED: 'layout-lg-navbar-fixed', })
NAVBAR_XL_FIXED: 'layout-xl-navbar-fixed', } else {
FOOTER_FIXED: 'layout-footer-fixed', $('body').removeClass(ClassName.CONTROL_SIDEBAR_OPEN)
FOOTER_SM_FIXED: 'layout-sm-footer-fixed',
FOOTER_MD_FIXED: 'layout-md-footer-fixed',
FOOTER_LG_FIXED: 'layout-lg-footer-fixed',
FOOTER_XL_FIXED: 'layout-xl-footer-fixed'
}
const Default = {
controlsidebarSlide: true,
scrollbarTheme: 'os-theme-light',
scrollbarAutoHide: 'l'
}
/**
* Class Definition
* ====================================================
*/
class ControlSidebar {
constructor(element, config) {
this._element = element
this._config = config
this._init()
} }
// Public $(this._element).trigger($.Event(Event.COLLAPSED))
}
collapse() { show() {
// Show the control sidebar // Collapse the control sidebar
if (this._config.controlsidebarSlide) { if (this._config.controlsidebarSlide) {
$('html').addClass(ClassName.CONTROL_SIDEBAR_ANIMATE) $('html').addClass(ClassName.CONTROL_SIDEBAR_ANIMATE)
$('body').removeClass(ClassName.CONTROL_SIDEBAR_SLIDE).delay(300).queue(function () { $(Selector.CONTROL_SIDEBAR).show().delay(10).queue(function () {
$(Selector.CONTROL_SIDEBAR).hide() $('body').addClass(ClassName.CONTROL_SIDEBAR_SLIDE).delay(300).queue(function () {
$('html').removeClass(ClassName.CONTROL_SIDEBAR_ANIMATE) $('html').removeClass(ClassName.CONTROL_SIDEBAR_ANIMATE)
$(this).dequeue() $(this).dequeue()
}) })
} else { $(this).dequeue()
$('body').removeClass(ClassName.CONTROL_SIDEBAR_OPEN) })
} } else {
$('body').addClass(ClassName.CONTROL_SIDEBAR_OPEN)
$(this._element).trigger($.Event(Event.COLLAPSED))
} }
show() { $(this._element).trigger($.Event(Event.EXPANDED))
// Collapse the control sidebar }
if (this._config.controlsidebarSlide) {
$('html').addClass(ClassName.CONTROL_SIDEBAR_ANIMATE)
$(Selector.CONTROL_SIDEBAR).show().delay(10).queue(function () {
$('body').addClass(ClassName.CONTROL_SIDEBAR_SLIDE).delay(300).queue(function () {
$('html').removeClass(ClassName.CONTROL_SIDEBAR_ANIMATE)
$(this).dequeue()
})
$(this).dequeue()
})
} else {
$('body').addClass(ClassName.CONTROL_SIDEBAR_OPEN)
}
$(this._element).trigger($.Event(Event.EXPANDED)) toggle() {
} const shouldClose = $('body').hasClass(ClassName.CONTROL_SIDEBAR_OPEN) || $('body')
toggle() {
const shouldClose = $('body').hasClass(ClassName.CONTROL_SIDEBAR_OPEN) || $('body')
.hasClass(ClassName.CONTROL_SIDEBAR_SLIDE) .hasClass(ClassName.CONTROL_SIDEBAR_SLIDE)
if (shouldClose) { if (shouldClose) {
// Close the control sidebar // Close the control sidebar
this.collapse() this.collapse()
} else { } else {
// Open the control sidebar // Open the control sidebar
this.show() this.show()
}
} }
}
// Private // Private
_init() { _init() {
this._fixHeight()
this._fixScrollHeight()
$(window).resize(() => {
this._fixHeight() this._fixHeight()
this._fixScrollHeight() this._fixScrollHeight()
})
$(window).resize(() => { $(window).scroll(() => {
this._fixHeight() if ($('body').hasClass(ClassName.CONTROL_SIDEBAR_OPEN) || $('body').hasClass(ClassName.CONTROL_SIDEBAR_SLIDE)) {
this._fixScrollHeight() this._fixScrollHeight()
}) }
})
}
$(window).scroll(() => { _fixScrollHeight() {
if ($('body').hasClass(ClassName.CONTROL_SIDEBAR_OPEN) || $('body').hasClass(ClassName.CONTROL_SIDEBAR_SLIDE)) { if (!$('body').hasClass(ClassName.LAYOUT_FIXED)) {
this._fixScrollHeight() return
}
})
} }
_fixScrollHeight() { const heights = {
if (!$('body').hasClass(ClassName.LAYOUT_FIXED)) { scroll: $(document).height(),
return window: $(window).height(),
} header: $(Selector.HEADER).outerHeight(),
footer: $(Selector.FOOTER).outerHeight()
}
const positions = {
bottom: Math.abs((heights.window + $(window).scrollTop()) - heights.scroll),
top: $(window).scrollTop()
}
const heights = { let navbarFixed = false
scroll: $(document).height(), let footerFixed = false
window: $(window).height(),
header: $(Selector.HEADER).outerHeight(),
footer: $(Selector.FOOTER).outerHeight()
}
const positions = {
bottom: Math.abs((heights.window + $(window).scrollTop()) - heights.scroll),
top: $(window).scrollTop()
}
let navbarFixed = false if (
let footerFixed = false $('body').hasClass(ClassName.NAVBAR_FIXED) ||
if (
$('body').hasClass(ClassName.NAVBAR_FIXED) ||
$('body').hasClass(ClassName.NAVBAR_SM_FIXED) || $('body').hasClass(ClassName.NAVBAR_SM_FIXED) ||
$('body').hasClass(ClassName.NAVBAR_MD_FIXED) || $('body').hasClass(ClassName.NAVBAR_MD_FIXED) ||
$('body').hasClass(ClassName.NAVBAR_LG_FIXED) || $('body').hasClass(ClassName.NAVBAR_LG_FIXED) ||
$('body').hasClass(ClassName.NAVBAR_XL_FIXED) $('body').hasClass(ClassName.NAVBAR_XL_FIXED)
) { ) {
if ($(Selector.HEADER).css('position') === 'fixed') { if ($(Selector.HEADER).css('position') === 'fixed') {
navbarFixed = true navbarFixed = true
}
} }
}
if ( if (
$('body').hasClass(ClassName.FOOTER_FIXED) || $('body').hasClass(ClassName.FOOTER_FIXED) ||
$('body').hasClass(ClassName.FOOTER_SM_FIXED) || $('body').hasClass(ClassName.FOOTER_SM_FIXED) ||
$('body').hasClass(ClassName.FOOTER_MD_FIXED) || $('body').hasClass(ClassName.FOOTER_MD_FIXED) ||
$('body').hasClass(ClassName.FOOTER_LG_FIXED) || $('body').hasClass(ClassName.FOOTER_LG_FIXED) ||
$('body').hasClass(ClassName.FOOTER_XL_FIXED) $('body').hasClass(ClassName.FOOTER_XL_FIXED)
) { ) {
if ($(Selector.FOOTER).css('position') === 'fixed') { if ($(Selector.FOOTER).css('position') === 'fixed') {
footerFixed = true footerFixed = true
}
}
if (positions.top === 0 && positions.bottom === 0) {
$(Selector.CONTROL_SIDEBAR).css('bottom', heights.footer)
$(Selector.CONTROL_SIDEBAR).css('top', heights.header)
$(Selector.CONTROL_SIDEBAR + ', ' + Selector.CONTROL_SIDEBAR + ' ' + Selector.CONTROL_SIDEBAR_CONTENT).css('height', heights.window - (heights.header + heights.footer))
} else if (positions.bottom <= heights.footer) {
if (footerFixed === false) {
$(Selector.CONTROL_SIDEBAR).css('bottom', heights.footer - positions.bottom)
$(Selector.CONTROL_SIDEBAR + ', ' + Selector.CONTROL_SIDEBAR + ' ' + Selector.CONTROL_SIDEBAR_CONTENT).css('height', heights.window - (heights.footer - positions.bottom))
} else {
$(Selector.CONTROL_SIDEBAR).css('bottom', heights.footer)
}
} else if (positions.top <= heights.header) {
if (navbarFixed === false) {
$(Selector.CONTROL_SIDEBAR).css('top', heights.header - positions.top)
$(Selector.CONTROL_SIDEBAR + ', ' + Selector.CONTROL_SIDEBAR + ' ' + Selector.CONTROL_SIDEBAR_CONTENT).css('height', heights.window - (heights.header - positions.top))
} else {
$(Selector.CONTROL_SIDEBAR).css('top', heights.header)
}
} else if (navbarFixed === false) {
$(Selector.CONTROL_SIDEBAR).css('top', 0)
$(Selector.CONTROL_SIDEBAR + ', ' + Selector.CONTROL_SIDEBAR + ' ' + Selector.CONTROL_SIDEBAR_CONTENT).css('height', heights.window)
} else {
$(Selector.CONTROL_SIDEBAR).css('top', heights.header)
} }
} }
_fixHeight() { if (positions.top === 0 && positions.bottom === 0) {
if (!$('body').hasClass(ClassName.LAYOUT_FIXED)) { $(Selector.CONTROL_SIDEBAR).css('bottom', heights.footer)
return $(Selector.CONTROL_SIDEBAR).css('top', heights.header)
$(Selector.CONTROL_SIDEBAR + ', ' + Selector.CONTROL_SIDEBAR + ' ' + Selector.CONTROL_SIDEBAR_CONTENT).css('height', heights.window - (heights.header + heights.footer))
} else if (positions.bottom <= heights.footer) {
if (footerFixed === false) {
$(Selector.CONTROL_SIDEBAR).css('bottom', heights.footer - positions.bottom)
$(Selector.CONTROL_SIDEBAR + ', ' + Selector.CONTROL_SIDEBAR + ' ' + Selector.CONTROL_SIDEBAR_CONTENT).css('height', heights.window - (heights.footer - positions.bottom))
} else {
$(Selector.CONTROL_SIDEBAR).css('bottom', heights.footer)
} }
} else if (positions.top <= heights.header) {
const heights = { if (navbarFixed === false) {
window: $(window).height(), $(Selector.CONTROL_SIDEBAR).css('top', heights.header - positions.top)
header: $(Selector.HEADER).outerHeight(), $(Selector.CONTROL_SIDEBAR + ', ' + Selector.CONTROL_SIDEBAR + ' ' + Selector.CONTROL_SIDEBAR_CONTENT).css('height', heights.window - (heights.header - positions.top))
footer: $(Selector.FOOTER).outerHeight() } else {
$(Selector.CONTROL_SIDEBAR).css('top', heights.header)
} }
} else if (navbarFixed === false) {
$(Selector.CONTROL_SIDEBAR).css('top', 0)
$(Selector.CONTROL_SIDEBAR + ', ' + Selector.CONTROL_SIDEBAR + ' ' + Selector.CONTROL_SIDEBAR_CONTENT).css('height', heights.window)
} else {
$(Selector.CONTROL_SIDEBAR).css('top', heights.header)
}
}
let sidebarHeight = heights.window - heights.header _fixHeight() {
if (!$('body').hasClass(ClassName.LAYOUT_FIXED)) {
return
}
if ( const heights = {
$('body').hasClass(ClassName.FOOTER_FIXED) || window: $(window).height(),
header: $(Selector.HEADER).outerHeight(),
footer: $(Selector.FOOTER).outerHeight()
}
let sidebarHeight = heights.window - heights.header
if (
$('body').hasClass(ClassName.FOOTER_FIXED) ||
$('body').hasClass(ClassName.FOOTER_SM_FIXED) || $('body').hasClass(ClassName.FOOTER_SM_FIXED) ||
$('body').hasClass(ClassName.FOOTER_MD_FIXED) || $('body').hasClass(ClassName.FOOTER_MD_FIXED) ||
$('body').hasClass(ClassName.FOOTER_LG_FIXED) || $('body').hasClass(ClassName.FOOTER_LG_FIXED) ||
$('body').hasClass(ClassName.FOOTER_XL_FIXED) $('body').hasClass(ClassName.FOOTER_XL_FIXED)
) { ) {
if ($(Selector.FOOTER).css('position') === 'fixed') { if ($(Selector.FOOTER).css('position') === 'fixed') {
sidebarHeight = heights.window - heights.header - heights.footer sidebarHeight = heights.window - heights.header - heights.footer
}
}
$(Selector.CONTROL_SIDEBAR + ' ' + Selector.CONTROL_SIDEBAR_CONTENT).css('height', sidebarHeight)
if (typeof $.fn.overlayScrollbars !== 'undefined') {
$(Selector.CONTROL_SIDEBAR + ' ' + Selector.CONTROL_SIDEBAR_CONTENT).overlayScrollbars({
className: this._config.scrollbarTheme,
sizeAutoCapable: true,
scrollbars: {
autoHide: this._config.scrollbarAutoHide,
clickScrolling: true
}
})
} }
} }
// Static $(Selector.CONTROL_SIDEBAR + ' ' + Selector.CONTROL_SIDEBAR_CONTENT).css('height', sidebarHeight)
static _jQueryInterface(operation) { if (typeof $.fn.overlayScrollbars !== 'undefined') {
return this.each(function () { $(Selector.CONTROL_SIDEBAR + ' ' + Selector.CONTROL_SIDEBAR_CONTENT).overlayScrollbars({
let data = $(this).data(DATA_KEY) className: this._config.scrollbarTheme,
const _options = $.extend({}, Default, $(this).data()) sizeAutoCapable: true,
scrollbars: {
if (!data) { autoHide: this._config.scrollbarAutoHide,
data = new ControlSidebar(this, _options) clickScrolling: true
$(this).data(DATA_KEY, data)
} }
if (data[operation] === 'undefined') {
throw new Error(`${operation} is not a function`)
}
data[operation]()
}) })
} }
} }
/** // Static
*
* Data Api implementation
* ====================================================
*/
$(document).on('click', Selector.DATA_TOGGLE, function (event) {
event.preventDefault()
ControlSidebar._jQueryInterface.call($(this), 'toggle') static _jQueryInterface(operation) {
}) return this.each(function () {
let data = $(this).data(DATA_KEY)
const _options = $.extend({}, Default, $(this).data())
/** if (!data) {
* jQuery API data = new ControlSidebar(this, _options)
* ==================================================== $(this).data(DATA_KEY, data)
*/ }
$.fn[NAME] = ControlSidebar._jQueryInterface if (data[operation] === 'undefined') {
$.fn[NAME].Constructor = ControlSidebar throw new Error(`${operation} is not a function`)
$.fn[NAME].noConflict = function () { }
$.fn[NAME] = JQUERY_NO_CONFLICT
return ControlSidebar._jQueryInterface data[operation]()
})
} }
}
return ControlSidebar /**
})(jQuery) *
* Data Api implementation
* ====================================================
*/
$(document).on('click', Selector.DATA_TOGGLE, function (event) {
event.preventDefault()
ControlSidebar._jQueryInterface.call($(this), 'toggle')
})
/**
* jQuery API
* ====================================================
*/
$.fn[NAME] = ControlSidebar._jQueryInterface
$.fn[NAME].Constructor = ControlSidebar
$.fn[NAME].noConflict = function () {
$.fn[NAME] = JQUERY_NO_CONFLICT
return ControlSidebar._jQueryInterface
}
export default ControlSidebar export default ControlSidebar

View File

@ -5,87 +5,85 @@
* -------------------------------------------- * --------------------------------------------
*/ */
const DirectChat = ($ => { import $ from 'jquery'
/**
* Constants
* ====================================================
*/
const NAME = 'DirectChat' /**
const DATA_KEY = 'lte.directchat' * Constants
const JQUERY_NO_CONFLICT = $.fn[NAME] * ====================================================
*/
const Event = { const NAME = 'DirectChat'
TOGGLED: 'toggled{EVENT_KEY}' const DATA_KEY = 'lte.directchat'
const JQUERY_NO_CONFLICT = $.fn[NAME]
const Event = {
TOGGLED: 'toggled{EVENT_KEY}'
}
const Selector = {
DATA_TOGGLE: '[data-widget="chat-pane-toggle"]',
DIRECT_CHAT: '.direct-chat'
}
const ClassName = {
DIRECT_CHAT_OPEN: 'direct-chat-contacts-open'
}
/**
* Class Definition
* ====================================================
*/
class DirectChat {
constructor(element) {
this._element = element
} }
const Selector = { toggle() {
DATA_TOGGLE: '[data-widget="chat-pane-toggle"]', $(this._element).parents(Selector.DIRECT_CHAT).first().toggleClass(ClassName.DIRECT_CHAT_OPEN)
DIRECT_CHAT: '.direct-chat' $(this._element).trigger($.Event(Event.TOGGLED))
} }
const ClassName = { // Static
DIRECT_CHAT_OPEN: 'direct-chat-contacts-open'
static _jQueryInterface(config) {
return this.each(function () {
let data = $(this).data(DATA_KEY)
if (!data) {
data = new DirectChat($(this))
$(this).data(DATA_KEY, data)
}
data[config]()
})
}
}
/**
*
* Data Api implementation
* ====================================================
*/
$(document).on('click', Selector.DATA_TOGGLE, function (event) {
if (event) {
event.preventDefault()
} }
/** DirectChat._jQueryInterface.call($(this), 'toggle')
* Class Definition })
* ====================================================
*/
class DirectChat { /**
constructor(element) { * jQuery API
this._element = element * ====================================================
} */
toggle() { $.fn[NAME] = DirectChat._jQueryInterface
$(this._element).parents(Selector.DIRECT_CHAT).first().toggleClass(ClassName.DIRECT_CHAT_OPEN) $.fn[NAME].Constructor = DirectChat
$(this._element).trigger($.Event(Event.TOGGLED)) $.fn[NAME].noConflict = function () {
} $.fn[NAME] = JQUERY_NO_CONFLICT
return DirectChat._jQueryInterface
// Static }
static _jQueryInterface(config) {
return this.each(function () {
let data = $(this).data(DATA_KEY)
if (!data) {
data = new DirectChat($(this))
$(this).data(DATA_KEY, data)
}
data[config]()
})
}
}
/**
*
* Data Api implementation
* ====================================================
*/
$(document).on('click', Selector.DATA_TOGGLE, function (event) {
if (event) {
event.preventDefault()
}
DirectChat._jQueryInterface.call($(this), 'toggle')
})
/**
* jQuery API
* ====================================================
*/
$.fn[NAME] = DirectChat._jQueryInterface
$.fn[NAME].Constructor = DirectChat
$.fn[NAME].noConflict = function () {
$.fn[NAME] = JQUERY_NO_CONFLICT
return DirectChat._jQueryInterface
}
return DirectChat
})(jQuery)
export default DirectChat export default DirectChat

View File

@ -5,134 +5,132 @@
* -------------------------------------------- * --------------------------------------------
*/ */
const Dropdown = ($ => { import $ from 'jquery'
/**
* Constants
* ====================================================
*/
const NAME = 'Dropdown' /**
const DATA_KEY = 'lte.dropdown' * Constants
const JQUERY_NO_CONFLICT = $.fn[NAME] * ====================================================
*/
const Selector = { const NAME = 'Dropdown'
NAVBAR: '.navbar', const DATA_KEY = 'lte.dropdown'
DROPDOWN_MENU: '.dropdown-menu', const JQUERY_NO_CONFLICT = $.fn[NAME]
DROPDOWN_MENU_ACTIVE: '.dropdown-menu.show',
DROPDOWN_TOGGLE: '[data-toggle="dropdown"]' const Selector = {
NAVBAR: '.navbar',
DROPDOWN_MENU: '.dropdown-menu',
DROPDOWN_MENU_ACTIVE: '.dropdown-menu.show',
DROPDOWN_TOGGLE: '[data-toggle="dropdown"]'
}
const ClassName = {
DROPDOWN_RIGHT: 'dropdown-menu-right'
}
const Default = {
}
/**
* Class Definition
* ====================================================
*/
class Dropdown {
constructor(element, config) {
this._config = config
this._element = element
} }
const ClassName = { // Public
DROPDOWN_RIGHT: 'dropdown-menu-right'
}
const Default = { toggleSubmenu() {
} this._element.siblings().show().toggleClass('show')
/** if (!this._element.next().hasClass('show')) {
* Class Definition this._element.parents(Selector.DROPDOWN_MENU).first().find('.show').removeClass('show').hide()
* ====================================================
*/
class Dropdown {
constructor(element, config) {
this._config = config
this._element = element
} }
// Public this._element.parents('li.nav-item.dropdown.show').on('hidden.bs.dropdown', () => {
$('.dropdown-submenu .show').removeClass('show').hide()
})
}
toggleSubmenu() { fixPosition() {
this._element.siblings().show().toggleClass('show') const elm = $(Selector.DROPDOWN_MENU_ACTIVE)
if (!this._element.next().hasClass('show')) { if (elm.length !== 0) {
this._element.parents(Selector.DROPDOWN_MENU).first().find('.show').removeClass('show').hide() if (elm.hasClass(ClassName.DROPDOWN_RIGHT)) {
elm.css('left', 'inherit')
elm.css('right', 0)
} else {
elm.css('left', 0)
elm.css('right', 'inherit')
} }
this._element.parents('li.nav-item.dropdown.show').on('hidden.bs.dropdown', () => { const offset = elm.offset()
$('.dropdown-submenu .show').removeClass('show').hide() const width = elm.width()
}) const windowWidth = $(window).width()
} const visiblePart = windowWidth - offset.left
fixPosition() { if (offset.left < 0) {
const elm = $(Selector.DROPDOWN_MENU_ACTIVE) elm.css('left', 'inherit')
elm.css('right', (offset.left - 5))
if (elm.length !== 0) { } else if (visiblePart < width) {
if (elm.hasClass(ClassName.DROPDOWN_RIGHT)) { elm.css('left', 'inherit')
elm.css('left', 'inherit') elm.css('right', 0)
elm.css('right', 0)
} else {
elm.css('left', 0)
elm.css('right', 'inherit')
}
const offset = elm.offset()
const width = elm.width()
const windowWidth = $(window).width()
const visiblePart = windowWidth - offset.left
if (offset.left < 0) {
elm.css('left', 'inherit')
elm.css('right', (offset.left - 5))
} else if (visiblePart < width) {
elm.css('left', 'inherit')
elm.css('right', 0)
}
} }
} }
// Static
static _jQueryInterface(config) {
return this.each(function () {
let data = $(this).data(DATA_KEY)
const _config = $.extend({}, Default, $(this).data())
if (!data) {
data = new Dropdown($(this), _config)
$(this).data(DATA_KEY, data)
}
if (config === 'toggleSubmenu' || config === 'fixPosition') {
data[config]()
}
})
}
} }
/** // Static
* Data API
* ====================================================
*/
$(Selector.DROPDOWN_MENU + ' ' + Selector.DROPDOWN_TOGGLE).on('click', function (event) { static _jQueryInterface(config) {
event.preventDefault() return this.each(function () {
event.stopPropagation() let data = $(this).data(DATA_KEY)
const _config = $.extend({}, Default, $(this).data())
Dropdown._jQueryInterface.call($(this), 'toggleSubmenu') if (!data) {
}) data = new Dropdown($(this), _config)
$(this).data(DATA_KEY, data)
}
$(Selector.NAVBAR + ' ' + Selector.DROPDOWN_TOGGLE).on('click', event => { if (config === 'toggleSubmenu' || config === 'fixPosition') {
event.preventDefault() data[config]()
}
setTimeout(function () { })
Dropdown._jQueryInterface.call($(this), 'fixPosition')
}, 1)
})
/**
* jQuery API
* ====================================================
*/
$.fn[NAME] = Dropdown._jQueryInterface
$.fn[NAME].Constructor = Dropdown
$.fn[NAME].noConflict = function () {
$.fn[NAME] = JQUERY_NO_CONFLICT
return Dropdown._jQueryInterface
} }
}
return Dropdown /**
})(jQuery) * Data API
* ====================================================
*/
$(Selector.DROPDOWN_MENU + ' ' + Selector.DROPDOWN_TOGGLE).on('click', function (event) {
event.preventDefault()
event.stopPropagation()
Dropdown._jQueryInterface.call($(this), 'toggleSubmenu')
})
$(Selector.NAVBAR + ' ' + Selector.DROPDOWN_TOGGLE).on('click', event => {
event.preventDefault()
setTimeout(function () {
Dropdown._jQueryInterface.call($(this), 'fixPosition')
}, 1)
})
/**
* jQuery API
* ====================================================
*/
$.fn[NAME] = Dropdown._jQueryInterface
$.fn[NAME].Constructor = Dropdown
$.fn[NAME].noConflict = function () {
$.fn[NAME] = JQUERY_NO_CONFLICT
return Dropdown._jQueryInterface
}
export default Dropdown export default Dropdown

View File

@ -5,233 +5,231 @@
* -------------------------------------------- * --------------------------------------------
*/ */
const Layout = ($ => { import $ from 'jquery'
/**
* Constants
* ====================================================
*/
const NAME = 'Layout' /**
const DATA_KEY = 'lte.layout' * Constants
const JQUERY_NO_CONFLICT = $.fn[NAME] * ====================================================
*/
const Selector = { const NAME = 'Layout'
HEADER: '.main-header', const DATA_KEY = 'lte.layout'
MAIN_SIDEBAR: '.main-sidebar', const JQUERY_NO_CONFLICT = $.fn[NAME]
SIDEBAR: '.main-sidebar .sidebar',
CONTENT: '.content-wrapper', const Selector = {
CONTROL_SIDEBAR_CONTENT: '.control-sidebar-content', HEADER: '.main-header',
CONTROL_SIDEBAR_BTN: '[data-widget="control-sidebar"]', MAIN_SIDEBAR: '.main-sidebar',
FOOTER: '.main-footer', SIDEBAR: '.main-sidebar .sidebar',
PUSHMENU_BTN: '[data-widget="pushmenu"]', CONTENT: '.content-wrapper',
LOGIN_BOX: '.login-box', CONTROL_SIDEBAR_CONTENT: '.control-sidebar-content',
REGISTER_BOX: '.register-box' CONTROL_SIDEBAR_BTN: '[data-widget="control-sidebar"]',
FOOTER: '.main-footer',
PUSHMENU_BTN: '[data-widget="pushmenu"]',
LOGIN_BOX: '.login-box',
REGISTER_BOX: '.register-box'
}
const ClassName = {
SIDEBAR_FOCUSED: 'sidebar-focused',
LAYOUT_FIXED: 'layout-fixed',
CONTROL_SIDEBAR_SLIDE_OPEN: 'control-sidebar-slide-open',
CONTROL_SIDEBAR_OPEN: 'control-sidebar-open'
}
const Default = {
scrollbarTheme: 'os-theme-light',
scrollbarAutoHide: 'l',
panelAutoHeight: true,
loginRegisterAutoHeight: true
}
/**
* Class Definition
* ====================================================
*/
class Layout {
constructor(element, config) {
this._config = config
this._element = element
this._init()
} }
const ClassName = { // Public
SIDEBAR_FOCUSED: 'sidebar-focused',
LAYOUT_FIXED: 'layout-fixed',
CONTROL_SIDEBAR_SLIDE_OPEN: 'control-sidebar-slide-open',
CONTROL_SIDEBAR_OPEN: 'control-sidebar-open'
}
const Default = { fixLayoutHeight(extra = null) {
scrollbarTheme: 'os-theme-light', let controlSidebar = 0
scrollbarAutoHide: 'l',
panelAutoHeight: true,
loginRegisterAutoHeight: true
}
/** if ($('body').hasClass(ClassName.CONTROL_SIDEBAR_SLIDE_OPEN) || $('body').hasClass(ClassName.CONTROL_SIDEBAR_OPEN) || extra === 'control_sidebar') {
* Class Definition controlSidebar = $(Selector.CONTROL_SIDEBAR_CONTENT).height()
* ====================================================
*/
class Layout {
constructor(element, config) {
this._config = config
this._element = element
this._init()
} }
// Public const heights = {
window: $(window).height(),
header: $(Selector.HEADER).length !== 0 ? $(Selector.HEADER).outerHeight() : 0,
footer: $(Selector.FOOTER).length !== 0 ? $(Selector.FOOTER).outerHeight() : 0,
sidebar: $(Selector.SIDEBAR).length !== 0 ? $(Selector.SIDEBAR).height() : 0,
controlSidebar
}
fixLayoutHeight(extra = null) { const max = this._max(heights)
let controlSidebar = 0 let offset = this._config.panelAutoHeight
if ($('body').hasClass(ClassName.CONTROL_SIDEBAR_SLIDE_OPEN) || $('body').hasClass(ClassName.CONTROL_SIDEBAR_OPEN) || extra === 'control_sidebar') { if (offset === true) {
controlSidebar = $(Selector.CONTROL_SIDEBAR_CONTENT).height() offset = 0
} }
const heights = { if (offset !== false) {
window: $(window).height(), if (max === heights.controlSidebar) {
header: $(Selector.HEADER).length !== 0 ? $(Selector.HEADER).outerHeight() : 0, $(Selector.CONTENT).css('min-height', (max + offset))
footer: $(Selector.FOOTER).length !== 0 ? $(Selector.FOOTER).outerHeight() : 0, } else if (max === heights.window) {
sidebar: $(Selector.SIDEBAR).length !== 0 ? $(Selector.SIDEBAR).height() : 0,
controlSidebar
}
const max = this._max(heights)
let offset = this._config.panelAutoHeight
if (offset === true) {
offset = 0
}
if (offset !== false) {
if (max === heights.controlSidebar) {
$(Selector.CONTENT).css('min-height', (max + offset))
} else if (max === heights.window) {
$(Selector.CONTENT).css('min-height', (max + offset) - heights.header - heights.footer)
} else {
$(Selector.CONTENT).css('min-height', (max + offset) - heights.header)
}
if (this._isFooterFixed()) {
$(Selector.CONTENT).css('min-height', parseFloat($(Selector.CONTENT).css('min-height')) + heights.footer)
}
}
if (!$('body').hasClass(ClassName.LAYOUT_FIXED)) {
return
}
if (offset !== false) {
$(Selector.CONTENT).css('min-height', (max + offset) - heights.header - heights.footer) $(Selector.CONTENT).css('min-height', (max + offset) - heights.header - heights.footer)
}
if (typeof $.fn.overlayScrollbars !== 'undefined') {
$(Selector.SIDEBAR).overlayScrollbars({
className: this._config.scrollbarTheme,
sizeAutoCapable: true,
scrollbars: {
autoHide: this._config.scrollbarAutoHide,
clickScrolling: true
}
})
}
}
fixLoginRegisterHeight() {
if ($(Selector.LOGIN_BOX + ', ' + Selector.REGISTER_BOX).length === 0) {
$('body, html').css('height', 'auto')
} else { } else {
const boxHeight = $(Selector.LOGIN_BOX + ', ' + Selector.REGISTER_BOX).height() $(Selector.CONTENT).css('min-height', (max + offset) - heights.header)
}
if ($('body').css('min-height') !== boxHeight) { if (this._isFooterFixed()) {
$('body').css('min-height', boxHeight) $(Selector.CONTENT).css('min-height', parseFloat($(Selector.CONTENT).css('min-height')) + heights.footer)
}
} }
} }
// Private if (!$('body').hasClass(ClassName.LAYOUT_FIXED)) {
return
}
_init() { if (offset !== false) {
// Activate layout height watcher $(Selector.CONTENT).css('min-height', (max + offset) - heights.header - heights.footer)
this.fixLayoutHeight() }
if (this._config.loginRegisterAutoHeight === true) { if (typeof $.fn.overlayScrollbars !== 'undefined') {
this.fixLoginRegisterHeight() $(Selector.SIDEBAR).overlayScrollbars({
} else if (this._config.loginRegisterAutoHeight === parseInt(this._config.loginRegisterAutoHeight, 10)) { className: this._config.scrollbarTheme,
setInterval(this.fixLoginRegisterHeight, this._config.loginRegisterAutoHeight) sizeAutoCapable: true,
scrollbars: {
autoHide: this._config.scrollbarAutoHide,
clickScrolling: true
}
})
}
}
fixLoginRegisterHeight() {
if ($(Selector.LOGIN_BOX + ', ' + Selector.REGISTER_BOX).length === 0) {
$('body, html').css('height', 'auto')
} else {
const boxHeight = $(Selector.LOGIN_BOX + ', ' + Selector.REGISTER_BOX).height()
if ($('body').css('min-height') !== boxHeight) {
$('body').css('min-height', boxHeight)
} }
}
}
$(Selector.SIDEBAR) // Private
.on('collapsed.lte.treeview expanded.lte.treeview', () => {
this.fixLayoutHeight()
})
$(Selector.PUSHMENU_BTN) _init() {
.on('collapsed.lte.pushmenu shown.lte.pushmenu', () => { // Activate layout height watcher
this.fixLayoutHeight() this.fixLayoutHeight()
})
$(Selector.CONTROL_SIDEBAR_BTN) if (this._config.loginRegisterAutoHeight === true) {
.on('collapsed.lte.controlsidebar', () => { this.fixLoginRegisterHeight()
this.fixLayoutHeight() } else if (this._config.loginRegisterAutoHeight === parseInt(this._config.loginRegisterAutoHeight, 10)) {
}) setInterval(this.fixLoginRegisterHeight, this._config.loginRegisterAutoHeight)
.on('expanded.lte.controlsidebar', () => { }
this.fixLayoutHeight('control_sidebar')
})
$(window).resize(() => { $(Selector.SIDEBAR)
.on('collapsed.lte.treeview expanded.lte.treeview', () => {
this.fixLayoutHeight() this.fixLayoutHeight()
}) })
setTimeout(() => { $(Selector.PUSHMENU_BTN)
$('body.hold-transition').removeClass('hold-transition') .on('collapsed.lte.pushmenu shown.lte.pushmenu', () => {
}, 50) this.fixLayoutHeight()
}
_max(numbers) {
// Calculate the maximum number in a list
let max = 0
Object.keys(numbers).forEach(key => {
if (numbers[key] > max) {
max = numbers[key]
}
}) })
return max $(Selector.CONTROL_SIDEBAR_BTN)
} .on('collapsed.lte.controlsidebar', () => {
this.fixLayoutHeight()
_isFooterFixed() {
return $('.main-footer').css('position') === 'fixed'
}
// Static
static _jQueryInterface(config = '') {
return this.each(function () {
let data = $(this).data(DATA_KEY)
const _options = $.extend({}, Default, $(this).data())
if (!data) {
data = new Layout($(this), _options)
$(this).data(DATA_KEY, data)
}
if (config === 'init' || config === '') {
data._init()
} else if (config === 'fixLayoutHeight' || config === 'fixLoginRegisterHeight') {
data[config]()
}
}) })
} .on('expanded.lte.controlsidebar', () => {
this.fixLayoutHeight('control_sidebar')
})
$(window).resize(() => {
this.fixLayoutHeight()
})
setTimeout(() => {
$('body.hold-transition').removeClass('hold-transition')
}, 50)
} }
/** _max(numbers) {
* Data API // Calculate the maximum number in a list
* ==================================================== let max = 0
*/
$(window).on('load', () => { Object.keys(numbers).forEach(key => {
Layout._jQueryInterface.call($('body')) if (numbers[key] > max) {
}) max = numbers[key]
}
})
$(Selector.SIDEBAR + ' a').on('focusin', () => { return max
$(Selector.MAIN_SIDEBAR).addClass(ClassName.SIDEBAR_FOCUSED)
})
$(Selector.SIDEBAR + ' a').on('focusout', () => {
$(Selector.MAIN_SIDEBAR).removeClass(ClassName.SIDEBAR_FOCUSED)
})
/**
* jQuery API
* ====================================================
*/
$.fn[NAME] = Layout._jQueryInterface
$.fn[NAME].Constructor = Layout
$.fn[NAME].noConflict = function () {
$.fn[NAME] = JQUERY_NO_CONFLICT
return Layout._jQueryInterface
} }
return Layout _isFooterFixed() {
})(jQuery) return $('.main-footer').css('position') === 'fixed'
}
// Static
static _jQueryInterface(config = '') {
return this.each(function () {
let data = $(this).data(DATA_KEY)
const _options = $.extend({}, Default, $(this).data())
if (!data) {
data = new Layout($(this), _options)
$(this).data(DATA_KEY, data)
}
if (config === 'init' || config === '') {
data._init()
} else if (config === 'fixLayoutHeight' || config === 'fixLoginRegisterHeight') {
data[config]()
}
})
}
}
/**
* Data API
* ====================================================
*/
$(window).on('load', () => {
Layout._jQueryInterface.call($('body'))
})
$(Selector.SIDEBAR + ' a').on('focusin', () => {
$(Selector.MAIN_SIDEBAR).addClass(ClassName.SIDEBAR_FOCUSED)
})
$(Selector.SIDEBAR + ' a').on('focusout', () => {
$(Selector.MAIN_SIDEBAR).removeClass(ClassName.SIDEBAR_FOCUSED)
})
/**
* jQuery API
* ====================================================
*/
$.fn[NAME] = Layout._jQueryInterface
$.fn[NAME].Constructor = Layout
$.fn[NAME].noConflict = function () {
$.fn[NAME] = JQUERY_NO_CONFLICT
return Layout._jQueryInterface
}
export default Layout export default Layout

View File

@ -5,219 +5,217 @@
* -------------------------------------------- * --------------------------------------------
*/ */
const PushMenu = ($ => { import $ from 'jquery'
/**
* Constants
* ====================================================
*/
const NAME = 'PushMenu' /**
const DATA_KEY = 'lte.pushmenu' * Constants
const EVENT_KEY = `.${DATA_KEY}` * ====================================================
const JQUERY_NO_CONFLICT = $.fn[NAME] */
const Event = { const NAME = 'PushMenu'
COLLAPSED: `collapsed${EVENT_KEY}`, const DATA_KEY = 'lte.pushmenu'
SHOWN: `shown${EVENT_KEY}` const EVENT_KEY = `.${DATA_KEY}`
} const JQUERY_NO_CONFLICT = $.fn[NAME]
const Default = { const Event = {
autoCollapseSize: 992, COLLAPSED: `collapsed${EVENT_KEY}`,
enableRemember: false, SHOWN: `shown${EVENT_KEY}`
noTransitionAfterReload: true }
}
const Selector = { const Default = {
TOGGLE_BUTTON: '[data-widget="pushmenu"]', autoCollapseSize: 992,
BODY: 'body', enableRemember: false,
OVERLAY: '#sidebar-overlay', noTransitionAfterReload: true
WRAPPER: '.wrapper' }
}
const ClassName = { const Selector = {
COLLAPSED: 'sidebar-collapse', TOGGLE_BUTTON: '[data-widget="pushmenu"]',
OPEN: 'sidebar-open', BODY: 'body',
CLOSED: 'sidebar-closed' OVERLAY: '#sidebar-overlay',
} WRAPPER: '.wrapper'
}
/** const ClassName = {
* Class Definition COLLAPSED: 'sidebar-collapse',
* ==================================================== OPEN: 'sidebar-open',
*/ CLOSED: 'sidebar-closed'
}
class PushMenu { /**
constructor(element, options) { * Class Definition
this._element = element * ====================================================
this._options = $.extend({}, Default, options) */
if ($(Selector.OVERLAY).length === 0) { class PushMenu {
this._addOverlay() constructor(element, options) {
} this._element = element
this._options = $.extend({}, Default, options)
this._init() if ($(Selector.OVERLAY).length === 0) {
this._addOverlay()
} }
// Public this._init()
}
expand() { // Public
if (this._options.autoCollapseSize) {
if ($(window).width() <= this._options.autoCollapseSize) { expand() {
$(Selector.BODY).addClass(ClassName.OPEN) if (this._options.autoCollapseSize) {
} if ($(window).width() <= this._options.autoCollapseSize) {
$(Selector.BODY).addClass(ClassName.OPEN)
} }
$(Selector.BODY).removeClass(ClassName.COLLAPSED).removeClass(ClassName.CLOSED)
if (this._options.enableRemember) {
localStorage.setItem(`remember${EVENT_KEY}`, ClassName.OPEN)
}
$(this._element).trigger($.Event(Event.SHOWN))
} }
collapse() { $(Selector.BODY).removeClass(ClassName.COLLAPSED).removeClass(ClassName.CLOSED)
if (this._options.autoCollapseSize) {
if ($(window).width() <= this._options.autoCollapseSize) {
$(Selector.BODY).removeClass(ClassName.OPEN).addClass(ClassName.CLOSED)
}
}
$(Selector.BODY).addClass(ClassName.COLLAPSED) if (this._options.enableRemember) {
localStorage.setItem(`remember${EVENT_KEY}`, ClassName.OPEN)
if (this._options.enableRemember) {
localStorage.setItem(`remember${EVENT_KEY}`, ClassName.COLLAPSED)
}
$(this._element).trigger($.Event(Event.COLLAPSED))
} }
toggle() { $(this._element).trigger($.Event(Event.SHOWN))
if ($(Selector.BODY).hasClass(ClassName.COLLAPSED)) { }
this.expand()
} else { collapse() {
if (this._options.autoCollapseSize) {
if ($(window).width() <= this._options.autoCollapseSize) {
$(Selector.BODY).removeClass(ClassName.OPEN).addClass(ClassName.CLOSED)
}
}
$(Selector.BODY).addClass(ClassName.COLLAPSED)
if (this._options.enableRemember) {
localStorage.setItem(`remember${EVENT_KEY}`, ClassName.COLLAPSED)
}
$(this._element).trigger($.Event(Event.COLLAPSED))
}
toggle() {
if ($(Selector.BODY).hasClass(ClassName.COLLAPSED)) {
this.expand()
} else {
this.collapse()
}
}
autoCollapse(resize = false) {
if (!this._options.autoCollapseSize) {
return
}
if ($(window).width() <= this._options.autoCollapseSize) {
if (!$(Selector.BODY).hasClass(ClassName.OPEN)) {
this.collapse() this.collapse()
} }
} } else if (resize === true) {
if ($(Selector.BODY).hasClass(ClassName.OPEN)) {
autoCollapse(resize = false) { $(Selector.BODY).removeClass(ClassName.OPEN)
if (!this._options.autoCollapseSize) { } else if ($(Selector.BODY).hasClass(ClassName.CLOSED)) {
return this.expand()
}
if ($(window).width() <= this._options.autoCollapseSize) {
if (!$(Selector.BODY).hasClass(ClassName.OPEN)) {
this.collapse()
}
} else if (resize === true) {
if ($(Selector.BODY).hasClass(ClassName.OPEN)) {
$(Selector.BODY).removeClass(ClassName.OPEN)
} else if ($(Selector.BODY).hasClass(ClassName.CLOSED)) {
this.expand()
}
} }
} }
}
remember() { remember() {
if (!this._options.enableRemember) { if (!this._options.enableRemember) {
return return
} }
const toggleState = localStorage.getItem(`remember${EVENT_KEY}`) const toggleState = localStorage.getItem(`remember${EVENT_KEY}`)
if (toggleState === ClassName.COLLAPSED) { if (toggleState === ClassName.COLLAPSED) {
if (this._options.noTransitionAfterReload) { if (this._options.noTransitionAfterReload) {
$('body').addClass('hold-transition').addClass(ClassName.COLLAPSED).delay(50).queue(function () { $('body').addClass('hold-transition').addClass(ClassName.COLLAPSED).delay(50).queue(function () {
$(this).removeClass('hold-transition')
$(this).dequeue()
})
} else {
$('body').addClass(ClassName.COLLAPSED)
}
} else if (this._options.noTransitionAfterReload) {
$('body').addClass('hold-transition').removeClass(ClassName.COLLAPSED).delay(50).queue(function () {
$(this).removeClass('hold-transition') $(this).removeClass('hold-transition')
$(this).dequeue() $(this).dequeue()
}) })
} else { } else {
$('body').removeClass(ClassName.COLLAPSED) $('body').addClass(ClassName.COLLAPSED)
} }
} } else if (this._options.noTransitionAfterReload) {
$('body').addClass('hold-transition').removeClass(ClassName.COLLAPSED).delay(50).queue(function () {
// Private $(this).removeClass('hold-transition')
$(this).dequeue()
_init() {
this.remember()
this.autoCollapse()
$(window).resize(() => {
this.autoCollapse(true)
})
}
_addOverlay() {
const overlay = $('<div />', {
id: 'sidebar-overlay'
})
overlay.on('click', () => {
this.collapse()
})
$(Selector.WRAPPER).append(overlay)
}
// Static
static _jQueryInterface(operation) {
return this.each(function () {
let data = $(this).data(DATA_KEY)
const _options = $.extend({}, Default, $(this).data())
if (!data) {
data = new PushMenu(this, _options)
$(this).data(DATA_KEY, data)
}
if (typeof operation === 'string' && operation.match(/collapse|expand|toggle/)) {
data[operation]()
}
}) })
} else {
$('body').removeClass(ClassName.COLLAPSED)
} }
} }
/** // Private
* Data API
* ====================================================
*/
$(document).on('click', Selector.TOGGLE_BUTTON, event => { _init() {
event.preventDefault() this.remember()
this.autoCollapse()
let button = event.currentTarget $(window).resize(() => {
this.autoCollapse(true)
if ($(button).data('widget') !== 'pushmenu') { })
button = $(button).closest(Selector.TOGGLE_BUTTON)
}
PushMenu._jQueryInterface.call($(button), 'toggle')
})
$(window).on('load', () => {
PushMenu._jQueryInterface.call($(Selector.TOGGLE_BUTTON))
})
/**
* jQuery API
* ====================================================
*/
$.fn[NAME] = PushMenu._jQueryInterface
$.fn[NAME].Constructor = PushMenu
$.fn[NAME].noConflict = function () {
$.fn[NAME] = JQUERY_NO_CONFLICT
return PushMenu._jQueryInterface
} }
return PushMenu _addOverlay() {
})(jQuery) const overlay = $('<div />', {
id: 'sidebar-overlay'
})
overlay.on('click', () => {
this.collapse()
})
$(Selector.WRAPPER).append(overlay)
}
// Static
static _jQueryInterface(operation) {
return this.each(function () {
let data = $(this).data(DATA_KEY)
const _options = $.extend({}, Default, $(this).data())
if (!data) {
data = new PushMenu(this, _options)
$(this).data(DATA_KEY, data)
}
if (typeof operation === 'string' && operation.match(/collapse|expand|toggle/)) {
data[operation]()
}
})
}
}
/**
* Data API
* ====================================================
*/
$(document).on('click', Selector.TOGGLE_BUTTON, event => {
event.preventDefault()
let button = event.currentTarget
if ($(button).data('widget') !== 'pushmenu') {
button = $(button).closest(Selector.TOGGLE_BUTTON)
}
PushMenu._jQueryInterface.call($(button), 'toggle')
})
$(window).on('load', () => {
PushMenu._jQueryInterface.call($(Selector.TOGGLE_BUTTON))
})
/**
* jQuery API
* ====================================================
*/
$.fn[NAME] = PushMenu._jQueryInterface
$.fn[NAME].Constructor = PushMenu
$.fn[NAME].noConflict = function () {
$.fn[NAME] = JQUERY_NO_CONFLICT
return PushMenu._jQueryInterface
}
export default PushMenu export default PushMenu

View File

@ -5,119 +5,117 @@
* -------------------------------------------- * --------------------------------------------
*/ */
const SiteSearch = ($ => { import $ from 'jquery'
/**
* Constants
* ====================================================
*/
const NAME = 'SiteSearch' /**
const DATA_KEY = 'lte.site-search' * Constants
const JQUERY_NO_CONFLICT = $.fn[NAME] * ====================================================
*/
const Selector = { const NAME = 'SiteSearch'
TOGGLE_BUTTON: '[data-widget="site-search"]', const DATA_KEY = 'lte.site-search'
SEARCH_BLOCK: '.site-search-block', const JQUERY_NO_CONFLICT = $.fn[NAME]
SEARCH_BACKDROP: '.site-search-backdrop',
SEARCH_INPUT: '.site-search-block .form-control' const Selector = {
TOGGLE_BUTTON: '[data-widget="site-search"]',
SEARCH_BLOCK: '.site-search-block',
SEARCH_BACKDROP: '.site-search-backdrop',
SEARCH_INPUT: '.site-search-block .form-control'
}
const ClassName = {
OPEN: 'site-search-open'
}
const Default = {
transitionSpeed: 300
}
/**
* Class Definition
* ====================================================
*/
class SiteSearch {
constructor(_element, _options) {
this.element = _element
this.options = $.extend({}, Default, _options)
} }
const ClassName = { // Public
OPEN: 'site-search-open'
open() {
$(Selector.SEARCH_BLOCK).slideDown(this.options.transitionSpeed)
$(Selector.SEARCH_BACKDROP).show(0)
$(Selector.SEARCH_INPUT).focus()
$(Selector.SEARCH_BLOCK).addClass(ClassName.OPEN)
} }
const Default = { close() {
transitionSpeed: 300 $(Selector.SEARCH_BLOCK).slideUp(this.options.transitionSpeed)
$(Selector.SEARCH_BACKDROP).hide(0)
$(Selector.SEARCH_BLOCK).removeClass(ClassName.OPEN)
} }
/** toggle() {
* Class Definition if ($(Selector.SEARCH_BLOCK).hasClass(ClassName.OPEN)) {
* ==================================================== this.close()
*/ } else {
this.open()
class SiteSearch {
constructor(_element, _options) {
this.element = _element
this.options = $.extend({}, Default, _options)
} }
}
// Public // Static
open() { static _jQueryInterface(options) {
$(Selector.SEARCH_BLOCK).slideDown(this.options.transitionSpeed) return this.each(function () {
$(Selector.SEARCH_BACKDROP).show(0) let data = $(this).data(DATA_KEY)
$(Selector.SEARCH_INPUT).focus()
$(Selector.SEARCH_BLOCK).addClass(ClassName.OPEN)
}
close() { if (!data) {
$(Selector.SEARCH_BLOCK).slideUp(this.options.transitionSpeed) data = new SiteSearch(this, options)
$(Selector.SEARCH_BACKDROP).hide(0) $(this).data(DATA_KEY, data)
$(Selector.SEARCH_BLOCK).removeClass(ClassName.OPEN)
}
toggle() {
if ($(Selector.SEARCH_BLOCK).hasClass(ClassName.OPEN)) {
this.close()
} else {
this.open()
} }
}
// Static if (!/toggle|close/.test(options)) {
throw new Error(`Undefined method ${options}`)
}
static _jQueryInterface(options) { data[options]()
return this.each(function () { })
let data = $(this).data(DATA_KEY) }
}
if (!data) { /**
data = new SiteSearch(this, options) * Data API
$(this).data(DATA_KEY, data) * ====================================================
} */
$(document).on('click', Selector.TOGGLE_BUTTON, event => {
event.preventDefault()
if (!/toggle|close/.test(options)) { let button = $(event.currentTarget)
throw new Error(`Undefined method ${options}`)
}
data[options]() if (button.data('widget') !== 'site-search') {
}) button = button.closest(Selector.TOGGLE_BUTTON)
}
} }
/** SiteSearch._jQueryInterface.call(button, 'toggle')
* Data API })
* ====================================================
*/
$(document).on('click', Selector.TOGGLE_BUTTON, event => {
event.preventDefault()
let button = $(event.currentTarget) $(document).on('click', Selector.SEARCH_BACKDROP, event => {
const backdrop = $(event.currentTarget)
SiteSearch._jQueryInterface.call(backdrop, 'close')
})
if (button.data('widget') !== 'site-search') { /**
button = button.closest(Selector.TOGGLE_BUTTON) * jQuery API
} * ====================================================
*/
SiteSearch._jQueryInterface.call(button, 'toggle') $.fn[NAME] = SiteSearch._jQueryInterface
}) $.fn[NAME].Constructor = SiteSearch
$.fn[NAME].noConflict = function () {
$(document).on('click', Selector.SEARCH_BACKDROP, event => { $.fn[NAME] = JQUERY_NO_CONFLICT
const backdrop = $(event.currentTarget) return SiteSearch._jQueryInterface
SiteSearch._jQueryInterface.call(backdrop, 'close') }
})
/**
* jQuery API
* ====================================================
*/
$.fn[NAME] = SiteSearch._jQueryInterface
$.fn[NAME].Constructor = SiteSearch
$.fn[NAME].noConflict = function () {
$.fn[NAME] = JQUERY_NO_CONFLICT
return SiteSearch._jQueryInterface
}
return SiteSearch
})(jQuery)
export default SiteSearch export default SiteSearch

View File

@ -5,214 +5,212 @@
* -------------------------------------------- * --------------------------------------------
*/ */
const Toasts = ($ => { import $ from 'jquery'
/**
* Constants
* ====================================================
*/
const NAME = 'Toasts' /**
const DATA_KEY = 'lte.toasts' * Constants
const EVENT_KEY = `.${DATA_KEY}` * ====================================================
const JQUERY_NO_CONFLICT = $.fn[NAME] */
const Event = { const NAME = 'Toasts'
INIT: `init${EVENT_KEY}`, const DATA_KEY = 'lte.toasts'
CREATED: `created${EVENT_KEY}`, const EVENT_KEY = `.${DATA_KEY}`
REMOVED: `removed${EVENT_KEY}` const JQUERY_NO_CONFLICT = $.fn[NAME]
const Event = {
INIT: `init${EVENT_KEY}`,
CREATED: `created${EVENT_KEY}`,
REMOVED: `removed${EVENT_KEY}`
}
const Selector = {
CONTAINER_TOP_RIGHT: '#toastsContainerTopRight',
CONTAINER_TOP_LEFT: '#toastsContainerTopLeft',
CONTAINER_BOTTOM_RIGHT: '#toastsContainerBottomRight',
CONTAINER_BOTTOM_LEFT: '#toastsContainerBottomLeft'
}
const ClassName = {
TOP_RIGHT: 'toasts-top-right',
TOP_LEFT: 'toasts-top-left',
BOTTOM_RIGHT: 'toasts-bottom-right',
BOTTOM_LEFT: 'toasts-bottom-left'
}
const Position = {
TOP_RIGHT: 'topRight',
TOP_LEFT: 'topLeft',
BOTTOM_RIGHT: 'bottomRight',
BOTTOM_LEFT: 'bottomLeft'
}
const Default = {
position: Position.TOP_RIGHT,
fixed: true,
autohide: false,
autoremove: true,
delay: 1000,
fade: true,
icon: null,
image: null,
imageAlt: null,
imageHeight: '25px',
title: null,
subtitle: null,
close: true,
body: null,
class: null
}
/**
* Class Definition
* ====================================================
*/
class Toasts {
constructor(element, config) {
this._config = config
this._prepareContainer()
$('body').trigger($.Event(Event.INIT))
} }
const Selector = { // Public
CONTAINER_TOP_RIGHT: '#toastsContainerTopRight',
CONTAINER_TOP_LEFT: '#toastsContainerTopLeft',
CONTAINER_BOTTOM_RIGHT: '#toastsContainerBottomRight',
CONTAINER_BOTTOM_LEFT: '#toastsContainerBottomLeft'
}
const ClassName = { create() {
TOP_RIGHT: 'toasts-top-right', const toast = $('<div class="toast" role="alert" aria-live="assertive" aria-atomic="true"/>')
TOP_LEFT: 'toasts-top-left',
BOTTOM_RIGHT: 'toasts-bottom-right',
BOTTOM_LEFT: 'toasts-bottom-left'
}
const Position = { toast.data('autohide', this._config.autohide)
TOP_RIGHT: 'topRight', toast.data('animation', this._config.fade)
TOP_LEFT: 'topLeft',
BOTTOM_RIGHT: 'bottomRight',
BOTTOM_LEFT: 'bottomLeft'
}
const Default = { if (this._config.class) {
position: Position.TOP_RIGHT, toast.addClass(this._config.class)
fixed: true,
autohide: false,
autoremove: true,
delay: 1000,
fade: true,
icon: null,
image: null,
imageAlt: null,
imageHeight: '25px',
title: null,
subtitle: null,
close: true,
body: null,
class: null
}
/**
* Class Definition
* ====================================================
*/
class Toasts {
constructor(element, config) {
this._config = config
this._prepareContainer()
$('body').trigger($.Event(Event.INIT))
} }
// Public if (this._config.delay && this._config.delay != 500) {
toast.data('delay', this._config.delay)
create() {
const toast = $('<div class="toast" role="alert" aria-live="assertive" aria-atomic="true"/>')
toast.data('autohide', this._config.autohide)
toast.data('animation', this._config.fade)
if (this._config.class) {
toast.addClass(this._config.class)
}
if (this._config.delay && this._config.delay != 500) {
toast.data('delay', this._config.delay)
}
const toastHeader = $('<div class="toast-header">')
if (this._config.image != null) {
const toastImage = $('<img />').addClass('rounded mr-2').attr('src', this._config.image).attr('alt', this._config.imageAlt)
if (this._config.imageHeight != null) {
toastImage.height(this._config.imageHeight).width('auto')
}
toastHeader.append(toastImage)
}
if (this._config.icon != null) {
toastHeader.append($('<i />').addClass('mr-2').addClass(this._config.icon))
}
if (this._config.title != null) {
toastHeader.append($('<strong />').addClass('mr-auto').html(this._config.title))
}
if (this._config.subtitle != null) {
toastHeader.append($('<small />').html(this._config.subtitle))
}
if (this._config.close == true) {
const toastClose = $('<button data-dismiss="toast" />').attr('type', 'button').addClass('ml-2 mb-1 close').attr('aria-label', 'Close').append('<span aria-hidden="true">&times;</span>')
if (this._config.title == null) {
toastClose.toggleClass('ml-2 ml-auto')
}
toastHeader.append(toastClose)
}
toast.append(toastHeader)
if (this._config.body != null) {
toast.append($('<div class="toast-body" />').html(this._config.body))
}
$(this._getContainerId()).prepend(toast)
$('body').trigger($.Event(Event.CREATED))
toast.toast('show')
if (this._config.autoremove) {
toast.on('hidden.bs.toast', function () {
$(this).delay(200).remove()
$('body').trigger($.Event(Event.REMOVED))
})
}
} }
// Static const toastHeader = $('<div class="toast-header">')
_getContainerId() { if (this._config.image != null) {
if (this._config.position == Position.TOP_RIGHT) { const toastImage = $('<img />').addClass('rounded mr-2').attr('src', this._config.image).attr('alt', this._config.imageAlt)
return Selector.CONTAINER_TOP_RIGHT
if (this._config.imageHeight != null) {
toastImage.height(this._config.imageHeight).width('auto')
} }
if (this._config.position == Position.TOP_LEFT) { toastHeader.append(toastImage)
return Selector.CONTAINER_TOP_LEFT
}
if (this._config.position == Position.BOTTOM_RIGHT) {
return Selector.CONTAINER_BOTTOM_RIGHT
}
if (this._config.position == Position.BOTTOM_LEFT) {
return Selector.CONTAINER_BOTTOM_LEFT
}
} }
_prepareContainer() { if (this._config.icon != null) {
if ($(this._getContainerId()).length === 0) { toastHeader.append($('<i />').addClass('mr-2').addClass(this._config.icon))
const container = $('<div />').attr('id', this._getContainerId().replace('#', ''))
if (this._config.position == Position.TOP_RIGHT) {
container.addClass(ClassName.TOP_RIGHT)
} else if (this._config.position == Position.TOP_LEFT) {
container.addClass(ClassName.TOP_LEFT)
} else if (this._config.position == Position.BOTTOM_RIGHT) {
container.addClass(ClassName.BOTTOM_RIGHT)
} else if (this._config.position == Position.BOTTOM_LEFT) {
container.addClass(ClassName.BOTTOM_LEFT)
}
$('body').append(container)
}
if (this._config.fixed) {
$(this._getContainerId()).addClass('fixed')
} else {
$(this._getContainerId()).removeClass('fixed')
}
} }
// Static if (this._config.title != null) {
toastHeader.append($('<strong />').addClass('mr-auto').html(this._config.title))
}
static _jQueryInterface(option, config) { if (this._config.subtitle != null) {
return this.each(function () { toastHeader.append($('<small />').html(this._config.subtitle))
const _options = $.extend({}, Default, config) }
const toast = new Toasts($(this), _options)
if (option === 'create') { if (this._config.close == true) {
toast[option]() const toastClose = $('<button data-dismiss="toast" />').attr('type', 'button').addClass('ml-2 mb-1 close').attr('aria-label', 'Close').append('<span aria-hidden="true">&times;</span>')
}
if (this._config.title == null) {
toastClose.toggleClass('ml-2 ml-auto')
}
toastHeader.append(toastClose)
}
toast.append(toastHeader)
if (this._config.body != null) {
toast.append($('<div class="toast-body" />').html(this._config.body))
}
$(this._getContainerId()).prepend(toast)
$('body').trigger($.Event(Event.CREATED))
toast.toast('show')
if (this._config.autoremove) {
toast.on('hidden.bs.toast', function () {
$(this).delay(200).remove()
$('body').trigger($.Event(Event.REMOVED))
}) })
} }
} }
/** // Static
* jQuery API
* ====================================================
*/
$.fn[NAME] = Toasts._jQueryInterface _getContainerId() {
$.fn[NAME].Constructor = Toasts if (this._config.position == Position.TOP_RIGHT) {
$.fn[NAME].noConflict = function () { return Selector.CONTAINER_TOP_RIGHT
$.fn[NAME] = JQUERY_NO_CONFLICT }
return Toasts._jQueryInterface
if (this._config.position == Position.TOP_LEFT) {
return Selector.CONTAINER_TOP_LEFT
}
if (this._config.position == Position.BOTTOM_RIGHT) {
return Selector.CONTAINER_BOTTOM_RIGHT
}
if (this._config.position == Position.BOTTOM_LEFT) {
return Selector.CONTAINER_BOTTOM_LEFT
}
} }
return Toasts _prepareContainer() {
})(jQuery) if ($(this._getContainerId()).length === 0) {
const container = $('<div />').attr('id', this._getContainerId().replace('#', ''))
if (this._config.position == Position.TOP_RIGHT) {
container.addClass(ClassName.TOP_RIGHT)
} else if (this._config.position == Position.TOP_LEFT) {
container.addClass(ClassName.TOP_LEFT)
} else if (this._config.position == Position.BOTTOM_RIGHT) {
container.addClass(ClassName.BOTTOM_RIGHT)
} else if (this._config.position == Position.BOTTOM_LEFT) {
container.addClass(ClassName.BOTTOM_LEFT)
}
$('body').append(container)
}
if (this._config.fixed) {
$(this._getContainerId()).addClass('fixed')
} else {
$(this._getContainerId()).removeClass('fixed')
}
}
// Static
static _jQueryInterface(option, config) {
return this.each(function () {
const _options = $.extend({}, Default, config)
const toast = new Toasts($(this), _options)
if (option === 'create') {
toast[option]()
}
})
}
}
/**
* jQuery API
* ====================================================
*/
$.fn[NAME] = Toasts._jQueryInterface
$.fn[NAME].Constructor = Toasts
$.fn[NAME].noConflict = function () {
$.fn[NAME] = JQUERY_NO_CONFLICT
return Toasts._jQueryInterface
}
export default Toasts export default Toasts

View File

@ -5,116 +5,114 @@
* -------------------------------------------- * --------------------------------------------
*/ */
const TodoList = ($ => { import $ from 'jquery'
/**
* Constants
* ====================================================
*/
const NAME = 'TodoList' /**
const DATA_KEY = 'lte.todolist' * Constants
const JQUERY_NO_CONFLICT = $.fn[NAME] * ====================================================
*/
const Selector = { const NAME = 'TodoList'
DATA_TOGGLE: '[data-widget="todo-list"]' const DATA_KEY = 'lte.todolist'
const JQUERY_NO_CONFLICT = $.fn[NAME]
const Selector = {
DATA_TOGGLE: '[data-widget="todo-list"]'
}
const ClassName = {
TODO_LIST_DONE: 'done'
}
const Default = {
onCheck(item) {
return item
},
onUnCheck(item) {
return item
}
}
/**
* Class Definition
* ====================================================
*/
class TodoList {
constructor(element, config) {
this._config = config
this._element = element
this._init()
} }
const ClassName = { // Public
TODO_LIST_DONE: 'done'
}
const Default = { toggle(item) {
onCheck(item) { item.parents('li').toggleClass(ClassName.TODO_LIST_DONE)
return item if (!$(item).prop('checked')) {
}, this.unCheck($(item))
onUnCheck(item) { return
return item
}
}
/**
* Class Definition
* ====================================================
*/
class TodoList {
constructor(element, config) {
this._config = config
this._element = element
this._init()
} }
// Public this.check(item)
}
toggle(item) { check(item) {
item.parents('li').toggleClass(ClassName.TODO_LIST_DONE) this._config.onCheck.call(item)
if (!$(item).prop('checked')) { }
this.unCheck($(item))
return unCheck(item) {
this._config.onUnCheck.call(item)
}
// Private
_init() {
$(Selector.DATA_TOGGLE).find('input:checkbox:checked').parents('li').toggleClass(ClassName.TODO_LIST_DONE)
$(Selector.DATA_TOGGLE).on('change', 'input:checkbox', event => {
this.toggle($(event.target))
})
}
// Static
static _jQueryInterface(config) {
return this.each(function () {
let data = $(this).data(DATA_KEY)
const _options = $.extend({}, Default, $(this).data())
if (!data) {
data = new TodoList($(this), _options)
$(this).data(DATA_KEY, data)
} }
this.check(item) if (config === 'init') {
} data[config]()
}
check(item) { })
this._config.onCheck.call(item)
}
unCheck(item) {
this._config.onUnCheck.call(item)
}
// Private
_init() {
$(Selector.DATA_TOGGLE).find('input:checkbox:checked').parents('li').toggleClass(ClassName.TODO_LIST_DONE)
$(Selector.DATA_TOGGLE).on('change', 'input:checkbox', event => {
this.toggle($(event.target))
})
}
// Static
static _jQueryInterface(config) {
return this.each(function () {
let data = $(this).data(DATA_KEY)
const _options = $.extend({}, Default, $(this).data())
if (!data) {
data = new TodoList($(this), _options)
$(this).data(DATA_KEY, data)
}
if (config === 'init') {
data[config]()
}
})
}
} }
}
/** /**
* Data API * Data API
* ==================================================== * ====================================================
*/ */
$(window).on('load', () => { $(window).on('load', () => {
TodoList._jQueryInterface.call($(Selector.DATA_TOGGLE)) TodoList._jQueryInterface.call($(Selector.DATA_TOGGLE))
}) })
/** /**
* jQuery API * jQuery API
* ==================================================== * ====================================================
*/ */
$.fn[NAME] = TodoList._jQueryInterface $.fn[NAME] = TodoList._jQueryInterface
$.fn[NAME].Constructor = TodoList $.fn[NAME].Constructor = TodoList
$.fn[NAME].noConflict = function () { $.fn[NAME].noConflict = function () {
$.fn[NAME] = JQUERY_NO_CONFLICT $.fn[NAME] = JQUERY_NO_CONFLICT
return TodoList._jQueryInterface return TodoList._jQueryInterface
} }
return TodoList
})(jQuery)
export default TodoList export default TodoList

View File

@ -5,178 +5,176 @@
* -------------------------------------------- * --------------------------------------------
*/ */
const Treeview = ($ => { import $ from 'jquery'
/**
* Constants
* ====================================================
*/
const NAME = 'Treeview' /**
const DATA_KEY = 'lte.treeview' * Constants
const EVENT_KEY = `.${DATA_KEY}` * ====================================================
const JQUERY_NO_CONFLICT = $.fn[NAME] */
const Event = { const NAME = 'Treeview'
EXPANDED: `expanded${EVENT_KEY}`, const DATA_KEY = 'lte.treeview'
COLLAPSED: `collapsed${EVENT_KEY}`, const EVENT_KEY = `.${DATA_KEY}`
LOAD_DATA_API: `load${EVENT_KEY}` const JQUERY_NO_CONFLICT = $.fn[NAME]
const Event = {
EXPANDED: `expanded${EVENT_KEY}`,
COLLAPSED: `collapsed${EVENT_KEY}`,
LOAD_DATA_API: `load${EVENT_KEY}`
}
const Selector = {
LI: '.nav-item',
LINK: '.nav-link',
TREEVIEW_MENU: '.nav-treeview',
OPEN: '.menu-open',
DATA_WIDGET: '[data-widget="treeview"]'
}
const ClassName = {
OPEN: 'menu-open',
IS_OPENING: 'menu-is-opening',
SIDEBAR_COLLAPSED: 'sidebar-collapse'
}
const Default = {
trigger: `${Selector.DATA_WIDGET} ${Selector.LINK}`,
animationSpeed: 300,
accordion: true,
expandSidebar: false,
sidebarButtonSelector: '[data-widget="pushmenu"]'
}
/**
* Class Definition
* ====================================================
*/
class Treeview {
constructor(element, config) {
this._config = config
this._element = element
} }
const Selector = { // Public
LI: '.nav-item',
LINK: '.nav-link', init() {
TREEVIEW_MENU: '.nav-treeview', $(`${Selector.LI}${Selector.OPEN} ${Selector.TREEVIEW_MENU}`).css('display', 'block')
OPEN: '.menu-open', this._setupListeners()
DATA_WIDGET: '[data-widget="treeview"]'
} }
const ClassName = { expand(treeviewMenu, parentLi) {
OPEN: 'menu-open', const expandedEvent = $.Event(Event.EXPANDED)
IS_OPENING: 'menu-is-opening',
SIDEBAR_COLLAPSED: 'sidebar-collapse'
}
const Default = { if (this._config.accordion) {
trigger: `${Selector.DATA_WIDGET} ${Selector.LINK}`, const openMenuLi = parentLi.siblings(Selector.OPEN).first()
animationSpeed: 300, const openTreeview = openMenuLi.find(Selector.TREEVIEW_MENU).first()
accordion: true, this.collapse(openTreeview, openMenuLi)
expandSidebar: false,
sidebarButtonSelector: '[data-widget="pushmenu"]'
}
/**
* Class Definition
* ====================================================
*/
class Treeview {
constructor(element, config) {
this._config = config
this._element = element
} }
// Public parentLi.addClass(ClassName.IS_OPENING)
treeviewMenu.stop().slideDown(this._config.animationSpeed, () => {
parentLi.addClass(ClassName.OPEN)
$(this._element).trigger(expandedEvent)
})
init() { if (this._config.expandSidebar) {
$(`${Selector.LI}${Selector.OPEN} ${Selector.TREEVIEW_MENU}`).css('display', 'block') this._expandSidebar()
this._setupListeners()
} }
}
expand(treeviewMenu, parentLi) { collapse(treeviewMenu, parentLi) {
const expandedEvent = $.Event(Event.EXPANDED) const collapsedEvent = $.Event(Event.COLLAPSED)
if (this._config.accordion) { parentLi.removeClass(`${ClassName.IS_OPENING} ${ClassName.OPEN}`)
const openMenuLi = parentLi.siblings(Selector.OPEN).first() treeviewMenu.stop().slideUp(this._config.animationSpeed, () => {
const openTreeview = openMenuLi.find(Selector.TREEVIEW_MENU).first() $(this._element).trigger(collapsedEvent)
this.collapse(openTreeview, openMenuLi) treeviewMenu.find(`${Selector.OPEN} > ${Selector.TREEVIEW_MENU}`).slideUp()
treeviewMenu.find(Selector.OPEN).removeClass(ClassName.OPEN)
})
}
toggle(event) {
const $relativeTarget = $(event.currentTarget)
const $parent = $relativeTarget.parent()
let treeviewMenu = $parent.find('> ' + Selector.TREEVIEW_MENU)
if (!treeviewMenu.is(Selector.TREEVIEW_MENU)) {
if (!$parent.is(Selector.LI)) {
treeviewMenu = $parent.parent().find('> ' + Selector.TREEVIEW_MENU)
} }
parentLi.addClass(ClassName.IS_OPENING)
treeviewMenu.stop().slideDown(this._config.animationSpeed, () => {
parentLi.addClass(ClassName.OPEN)
$(this._element).trigger(expandedEvent)
})
if (this._config.expandSidebar) {
this._expandSidebar()
}
}
collapse(treeviewMenu, parentLi) {
const collapsedEvent = $.Event(Event.COLLAPSED)
parentLi.removeClass(`${ClassName.IS_OPENING} ${ClassName.OPEN}`)
treeviewMenu.stop().slideUp(this._config.animationSpeed, () => {
$(this._element).trigger(collapsedEvent)
treeviewMenu.find(`${Selector.OPEN} > ${Selector.TREEVIEW_MENU}`).slideUp()
treeviewMenu.find(Selector.OPEN).removeClass(ClassName.OPEN)
})
}
toggle(event) {
const $relativeTarget = $(event.currentTarget)
const $parent = $relativeTarget.parent()
let treeviewMenu = $parent.find('> ' + Selector.TREEVIEW_MENU)
if (!treeviewMenu.is(Selector.TREEVIEW_MENU)) { if (!treeviewMenu.is(Selector.TREEVIEW_MENU)) {
if (!$parent.is(Selector.LI)) { return
treeviewMenu = $parent.parent().find('> ' + Selector.TREEVIEW_MENU)
}
if (!treeviewMenu.is(Selector.TREEVIEW_MENU)) {
return
}
}
event.preventDefault()
const parentLi = $relativeTarget.parents(Selector.LI).first()
const isOpen = parentLi.hasClass(ClassName.OPEN)
if (isOpen) {
this.collapse($(treeviewMenu), parentLi)
} else {
this.expand($(treeviewMenu), parentLi)
} }
} }
// Private event.preventDefault()
_setupListeners() { const parentLi = $relativeTarget.parents(Selector.LI).first()
$(document).on('click', this._config.trigger, event => { const isOpen = parentLi.hasClass(ClassName.OPEN)
this.toggle(event)
})
}
_expandSidebar() { if (isOpen) {
if ($('body').hasClass(ClassName.SIDEBAR_COLLAPSED)) { this.collapse($(treeviewMenu), parentLi)
$(this._config.sidebarButtonSelector).PushMenu('expand') } else {
} this.expand($(treeviewMenu), parentLi)
}
// Static
static _jQueryInterface(config) {
return this.each(function () {
let data = $(this).data(DATA_KEY)
const _options = $.extend({}, Default, $(this).data())
if (!data) {
data = new Treeview($(this), _options)
$(this).data(DATA_KEY, data)
}
if (config === 'init') {
data[config]()
}
})
} }
} }
/** // Private
* Data API
* ====================================================
*/
$(window).on(Event.LOAD_DATA_API, () => { _setupListeners() {
$(Selector.DATA_WIDGET).each(function () { $(document).on('click', this._config.trigger, event => {
Treeview._jQueryInterface.call($(this), 'init') this.toggle(event)
}) })
})
/**
* jQuery API
* ====================================================
*/
$.fn[NAME] = Treeview._jQueryInterface
$.fn[NAME].Constructor = Treeview
$.fn[NAME].noConflict = function () {
$.fn[NAME] = JQUERY_NO_CONFLICT
return Treeview._jQueryInterface
} }
return Treeview _expandSidebar() {
})(jQuery) if ($('body').hasClass(ClassName.SIDEBAR_COLLAPSED)) {
$(this._config.sidebarButtonSelector).PushMenu('expand')
}
}
// Static
static _jQueryInterface(config) {
return this.each(function () {
let data = $(this).data(DATA_KEY)
const _options = $.extend({}, Default, $(this).data())
if (!data) {
data = new Treeview($(this), _options)
$(this).data(DATA_KEY, data)
}
if (config === 'init') {
data[config]()
}
})
}
}
/**
* Data API
* ====================================================
*/
$(window).on(Event.LOAD_DATA_API, () => {
$(Selector.DATA_WIDGET).each(function () {
Treeview._jQueryInterface.call($(this), 'init')
})
})
/**
* jQuery API
* ====================================================
*/
$.fn[NAME] = Treeview._jQueryInterface
$.fn[NAME].Constructor = Treeview
$.fn[NAME].noConflict = function () {
$.fn[NAME] = JQUERY_NO_CONFLICT
return Treeview._jQueryInterface
}
export default Treeview export default Treeview