123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- /**
- * --------------------------------------------
- * AdminLTE Fullscreen.js
- * License MIT
- * --------------------------------------------
- */
- import $ from 'jquery'
- /**
- * Constants
- * ====================================================
- */
- const NAME = 'Fullscreen'
- const DATA_KEY = 'lte.fullscreen'
- const JQUERY_NO_CONFLICT = $.fn[NAME]
- const SELECTOR_DATA_WIDGET = '[data-widget="fullscreen"]'
- const SELECTOR_ICON = `${SELECTOR_DATA_WIDGET} i`
- const EVENT_FULLSCREEN_CHANGE = 'webkitfullscreenchange mozfullscreenchange fullscreenchange MSFullscreenChange'
- const Default = {
- minimizeIcon: 'fa-compress-arrows-alt',
- maximizeIcon: 'fa-expand-arrows-alt'
- }
- /**
- * Class Definition
- * ====================================================
- */
- class Fullscreen {
- constructor(_element, _options) {
- this.element = _element
- this.options = _options
- }
- // Public
- toggle() {
- if (document.fullscreenElement ||
- document.mozFullScreenElement ||
- document.webkitFullscreenElement ||
- document.msFullscreenElement) {
- this.windowed()
- } else {
- this.fullscreen()
- }
- }
- toggleIcon() {
- if (document.fullscreenElement ||
- document.mozFullScreenElement ||
- document.webkitFullscreenElement ||
- document.msFullscreenElement) {
- $(SELECTOR_ICON).removeClass(this.options.maximizeIcon).addClass(this.options.minimizeIcon)
- } else {
- $(SELECTOR_ICON).removeClass(this.options.minimizeIcon).addClass(this.options.maximizeIcon)
- }
- }
- fullscreen() {
- if (document.documentElement.requestFullscreen) {
- document.documentElement.requestFullscreen()
- } else if (document.documentElement.webkitRequestFullscreen) {
- document.documentElement.webkitRequestFullscreen()
- } else if (document.documentElement.msRequestFullscreen) {
- document.documentElement.msRequestFullscreen()
- }
- }
- windowed() {
- if (document.exitFullscreen) {
- document.exitFullscreen()
- } else if (document.webkitExitFullscreen) {
- document.webkitExitFullscreen()
- } else if (document.msExitFullscreen) {
- document.msExitFullscreen()
- }
- }
- // Static
- static _jQueryInterface(config) {
- return this.each(function () {
- let data = $(this).data(DATA_KEY)
- const _config = $.extend({}, Default, typeof config === 'object' ? config : $(this).data())
- if (!data) {
- data = new Fullscreen($(this), _config)
- $(this).data(DATA_KEY, data)
- } else if (typeof config === 'string') {
- if (typeof data[config] === 'undefined') {
- throw new TypeError(`No method named "${config}"`)
- }
- data[config]()
- }
- })
- }
- }
- /**
- * Data API
- * ====================================================
- */
- $(document).on('click', SELECTOR_DATA_WIDGET, function () {
- Fullscreen._jQueryInterface.call($(this), 'toggle')
- })
- $(document).on(EVENT_FULLSCREEN_CHANGE, () => {
- Fullscreen._jQueryInterface.call($(SELECTOR_DATA_WIDGET), 'toggleIcon')
- })
- /**
- * jQuery API
- * ====================================================
- */
- $.fn[NAME] = Fullscreen._jQueryInterface
- $.fn[NAME].Constructor = Fullscreen
- $.fn[NAME].noConflict = function () {
- $.fn[NAME] = JQUERY_NO_CONFLICT
- return Fullscreen._jQueryInterface
- }
- export default Fullscreen
|