layout.ts 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. /**
  2. * --------------------------------------------
  3. * AdminLTE layout.ts
  4. * License MIT
  5. * --------------------------------------------
  6. */
  7. import {
  8. onDOMContentLoaded
  9. } from './util/index'
  10. /**
  11. * ------------------------------------------------------------------------
  12. * Constants
  13. * ------------------------------------------------------------------------
  14. */
  15. const CLASS_NAME_HOLD_TRANSITIONS = 'hold-transition'
  16. const CLASS_NAME_APP_LOADED = 'app-loaded'
  17. /**
  18. * Class Definition
  19. * ====================================================
  20. */
  21. class Layout {
  22. _element: HTMLElement
  23. constructor(element: HTMLElement) {
  24. this._element = element
  25. }
  26. holdTransition(): void {
  27. let resizeTimer: ReturnType<typeof setTimeout>
  28. window.addEventListener('resize', () => {
  29. document.body.classList.add(CLASS_NAME_HOLD_TRANSITIONS)
  30. clearTimeout(resizeTimer)
  31. resizeTimer = setTimeout(() => {
  32. document.body.classList.remove(CLASS_NAME_HOLD_TRANSITIONS)
  33. }, 400)
  34. })
  35. }
  36. }
  37. onDOMContentLoaded(() => {
  38. const data = new Layout(document.body)
  39. data.holdTransition()
  40. setTimeout(() => {
  41. document.body.classList.add(CLASS_NAME_APP_LOADED)
  42. }, 400)
  43. })
  44. export default Layout