| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 | 
							- /**
 
-  * --------------------------------------------
 
-  * AdminLTE Treeview.js
 
-  * License MIT
 
-  * --------------------------------------------
 
-  */
 
- import $ from 'jquery'
 
- /**
 
-  * Constants
 
-  * ====================================================
 
-  */
 
- const NAME = 'Treeview'
 
- const DATA_KEY = 'lte.treeview'
 
- const EVENT_KEY = `.${DATA_KEY}`
 
- const JQUERY_NO_CONFLICT = $.fn[NAME]
 
- const EVENT_EXPANDED = `expanded${EVENT_KEY}`
 
- const EVENT_COLLAPSED = `collapsed${EVENT_KEY}`
 
- const EVENT_LOAD_DATA_API = `load${EVENT_KEY}`
 
- const SELECTOR_LI = '.nav-item'
 
- const SELECTOR_LINK = '.nav-link'
 
- const SELECTOR_TREEVIEW_MENU = '.nav-treeview'
 
- const SELECTOR_OPEN = '.menu-open'
 
- const SELECTOR_DATA_WIDGET = '[data-widget="treeview"]'
 
- const CLASS_NAME_OPEN = 'menu-open'
 
- const CLASS_NAME_IS_OPENING = 'menu-is-opening'
 
- const CLASS_NAME_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
 
-   }
 
-   // Public
 
-   init() {
 
-     $(`${SELECTOR_LI}${SELECTOR_OPEN} ${SELECTOR_TREEVIEW_MENU}${SELECTOR_OPEN}`).css('display', 'block')
 
-     this._setupListeners()
 
-   }
 
-   expand(treeviewMenu, parentLi) {
 
-     const expandedEvent = $.Event(EVENT_EXPANDED)
 
-     if (this._config.accordion) {
 
-       const openMenuLi = parentLi.siblings(SELECTOR_OPEN).first()
 
-       const openTreeview = openMenuLi.find(SELECTOR_TREEVIEW_MENU).first()
 
-       this.collapse(openTreeview, openMenuLi)
 
-     }
 
-     parentLi.addClass(CLASS_NAME_IS_OPENING)
 
-     treeviewMenu.stop().slideDown(this._config.animationSpeed, () => {
 
-       parentLi.addClass(CLASS_NAME_OPEN)
 
-       $(this._element).trigger(expandedEvent)
 
-     })
 
-     if (this._config.expandSidebar) {
 
-       this._expandSidebar()
 
-     }
 
-   }
 
-   collapse(treeviewMenu, parentLi) {
 
-     const collapsedEvent = $.Event(EVENT_COLLAPSED)
 
-     parentLi.removeClass(`${CLASS_NAME_IS_OPENING} ${CLASS_NAME_OPEN}`)
 
-     treeviewMenu.stop().slideUp(this._config.animationSpeed, () => {
 
-       $(this._element).trigger(collapsedEvent)
 
-       treeviewMenu.find(`${SELECTOR_OPEN} > ${SELECTOR_TREEVIEW_MENU}`).slideUp()
 
-       treeviewMenu.find(SELECTOR_OPEN).removeClass(`${CLASS_NAME_IS_OPENING} ${CLASS_NAME_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}`)
 
-       }
 
-       if (!treeviewMenu.is(SELECTOR_TREEVIEW_MENU)) {
 
-         return
 
-       }
 
-     }
 
-     event.preventDefault()
 
-     const parentLi = $relativeTarget.parents(SELECTOR_LI).first()
 
-     const isOpen = parentLi.hasClass(CLASS_NAME_OPEN)
 
-     if (isOpen) {
 
-       this.collapse($(treeviewMenu), parentLi)
 
-     } else {
 
-       this.expand($(treeviewMenu), parentLi)
 
-     }
 
-   }
 
-   // Private
 
-   _setupListeners() {
 
-     const elementId = this._element.attr('id') !== undefined ? `#${this._element.attr('id')}` : ''
 
-     $(document).on('click', `${elementId}${this._config.trigger}`, event => {
 
-       this.toggle(event)
 
-     })
 
-   }
 
-   _expandSidebar() {
 
-     if ($('body').hasClass(CLASS_NAME_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
 
 
  |