Proyectos de Subversion Moodle

Rev

Rev 1 | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 1 Rev 1441
Línea 1... Línea 1...
1
/**
1
/**
2
 * --------------------------------------------------------------------------
2
 * --------------------------------------------------------------------------
3
 * Bootstrap (v4.6.2): alert.js
3
 * Bootstrap alert.js
4
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
4
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
 * --------------------------------------------------------------------------
5
 * --------------------------------------------------------------------------
6
 */
6
 */
Línea 7... Línea 7...
7
 
7
 
-
 
8
import BaseComponent from './base-component'
-
 
9
import EventHandler from './dom/event-handler'
8
import $ from 'jquery'
10
import { enableDismissTrigger } from './util/component-functions'
Línea 9... Línea 11...
9
import Util from './util'
11
import { defineJQueryPlugin } from './util/index'
10
 
12
 
11
/**
13
/**
Línea 12... Línea 14...
12
 * Constants
14
 * Constants
13
 */
-
 
14
 
15
 */
15
const NAME = 'alert'
16
 
16
const VERSION = '4.6.2'
-
 
17
const DATA_KEY = 'bs.alert'
-
 
18
const EVENT_KEY = `.${DATA_KEY}`
-
 
19
const DATA_API_KEY = '.data-api'
-
 
20
const JQUERY_NO_CONFLICT = $.fn[NAME]
-
 
21
 
-
 
Línea 22... Línea 17...
22
const CLASS_NAME_ALERT = 'alert'
17
const NAME = 'alert'
23
const CLASS_NAME_FADE = 'fade'
18
const DATA_KEY = 'bs.alert'
24
const CLASS_NAME_SHOW = 'show'
19
const EVENT_KEY = `.${DATA_KEY}`
25
 
-
 
26
const EVENT_CLOSE = `close${EVENT_KEY}`
20
 
Línea 27... Línea 21...
27
const EVENT_CLOSED = `closed${EVENT_KEY}`
21
const EVENT_CLOSE = `close${EVENT_KEY}`
28
const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`
22
const EVENT_CLOSED = `closed${EVENT_KEY}`
29
 
23
const CLASS_NAME_FADE = 'fade'
Línea 30... Línea -...
30
const SELECTOR_DISMISS = '[data-dismiss="alert"]'
-
 
31
 
-
 
32
/**
24
const CLASS_NAME_SHOW = 'show'
33
 * Class definition
-
 
34
 */
-
 
35
 
25
 
36
class Alert {
26
/**
37
  constructor(element) {
27
 * Class definition
38
    this._element = element
28
 */
Línea 39... Línea 29...
39
  }
29
 
40
 
30
class Alert extends BaseComponent {
41
  // Getters
-
 
42
  static get VERSION() {
-
 
43
    return VERSION
31
  // Getters
44
  }
-
 
Línea 45... Línea -...
45
 
-
 
46
  // Public
-
 
47
  close(element) {
32
  static get NAME() {
48
    let rootElement = this._element
33
    return NAME
49
    if (element) {
34
  }
Línea 50... Línea 35...
50
      rootElement = this._getRootElement(element)
35
 
51
    }
-
 
Línea 52... Línea -...
52
 
-
 
53
    const customEvent = this._triggerCloseEvent(rootElement)
36
  // Public
54
 
37
  close() {
55
    if (customEvent.isDefaultPrevented()) {
38
    const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE)
Línea 56... Línea 39...
56
      return
39
 
57
    }
-
 
58
 
-
 
59
    this._removeElement(rootElement)
-
 
60
  }
-
 
61
 
-
 
62
  dispose() {
-
 
63
    $.removeData(this._element, DATA_KEY)
-
 
64
    this._element = null
-
 
65
  }
-
 
66
 
-
 
67
  // Private
-
 
68
  _getRootElement(element) {
-
 
69
    const selector = Util.getSelectorFromElement(element)
-
 
70
    let parent = false
-
 
71
 
-
 
72
    if (selector) {
-
 
73
      parent = document.querySelector(selector)
-
 
74
    }
-
 
75
 
-
 
76
    if (!parent) {
-
 
77
      parent = $(element).closest(`.${CLASS_NAME_ALERT}`)[0]
-
 
78
    }
-
 
79
 
-
 
80
    return parent
-
 
81
  }
-
 
82
 
-
 
83
  _triggerCloseEvent(element) {
-
 
84
    const closeEvent = $.Event(EVENT_CLOSE)
-
 
85
 
-
 
86
    $(element).trigger(closeEvent)
-
 
87
    return closeEvent
-
 
88
  }
-
 
89
 
-
 
90
  _removeElement(element) {
-
 
91
    $(element).removeClass(CLASS_NAME_SHOW)
-
 
92
 
-
 
93
    if (!$(element).hasClass(CLASS_NAME_FADE)) {
-
 
94
      this._destroyElement(element)
40
    if (closeEvent.defaultPrevented) {
95
      return
41
      return
96
    }
-
 
97
 
42
    }
98
    const transitionDuration = Util.getTransitionDurationFromElement(element)
43
 
99
 
44
    this._element.classList.remove(CLASS_NAME_SHOW)
Línea 100... Línea 45...
100
    $(element)
45
 
101
      .one(Util.TRANSITION_END, event => this._destroyElement(element, event))
46
    const isAnimated = this._element.classList.contains(CLASS_NAME_FADE)
102
      .emulateTransitionEnd(transitionDuration)
47
    this._queueCallback(() => this._destroyElement(), this._element, isAnimated)
103
  }
-
 
104
 
48
  }
105
  _destroyElement(element) {
-
 
106
    $(element)
-
 
107
      .detach()
-
 
108
      .trigger(EVENT_CLOSED)
-
 
109
      .remove()
-
 
Línea 110... Línea 49...
110
  }
49
 
111
 
50
  // Private
112
  // Static
51
  _destroyElement() {
113
  static _jQueryInterface(config) {
-
 
114
    return this.each(function () {
-
 
Línea 115... Línea 52...
115
      const $element = $(this)
52
    this._element.remove()
116
      let data = $element.data(DATA_KEY)
-
 
117
 
-
 
118
      if (!data) {
53
    EventHandler.trigger(this._element, EVENT_CLOSED)
119
        data = new Alert(this)
54
    this.dispose()
Línea 120... Línea 55...
120
        $element.data(DATA_KEY, data)
55
  }
121
      }
56
 
122
 
57
  // Static
123
      if (config === 'close') {
58
  static jQueryInterface(config) {
Línea 124... Línea 59...
124
        data[config](this)
59
    return this.each(function () {
125
      }
60
      const data = Alert.getOrCreateInstance(this)
126
    })
61
 
Línea 127... Línea -...
127
  }
-
 
128
 
-
 
129
  static _handleDismiss(alertInstance) {
-
 
130
    return function (event) {
62
      if (typeof config !== 'string') {
131
      if (event) {
-
 
Línea 132... Línea 63...
132
        event.preventDefault()
63
        return
133
      }
64
      }
134
 
65
 
Línea 135... Línea -...
135
      alertInstance.close(this)
-
 
136
    }
66
      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
137
  }
-
 
138
}
-
 
139
 
-
 
140
/**
-
 
Línea 141... Línea 67...
141
 * Data API implementation
67
        throw new TypeError(`No method named "${config}"`)