sweetalert2 11.4.13 → 11.4.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -46,6 +46,10 @@ export const hasClass = (elem, className) => {
46
46
  return true
47
47
  }
48
48
 
49
+ /**
50
+ * @param {HTMLElement} elem
51
+ * @param {SweetAlertOptions} params
52
+ */
49
53
  const removeCustomClasses = (elem, params) => {
50
54
  toArray(elem.classList).forEach((className) => {
51
55
  if (
@@ -58,6 +62,11 @@ const removeCustomClasses = (elem, params) => {
58
62
  })
59
63
  }
60
64
 
65
+ /**
66
+ * @param {HTMLElement} elem
67
+ * @param {SweetAlertOptions} params
68
+ * @param {string} className
69
+ */
61
70
  export const applyCustomClass = (elem, params, className) => {
62
71
  removeCustomClasses(elem, params)
63
72
 
@@ -203,26 +212,54 @@ export const hide = (elem) => {
203
212
  elem.style.display = 'none'
204
213
  }
205
214
 
215
+ /**
216
+ * @param {HTMLElement} parent
217
+ * @param {string} selector
218
+ * @param {string} property
219
+ * @param {string} value
220
+ */
206
221
  export const setStyle = (parent, selector, property, value) => {
222
+ /** @type {HTMLElement} */
207
223
  const el = parent.querySelector(selector)
208
224
  if (el) {
209
225
  el.style[property] = value
210
226
  }
211
227
  }
212
228
 
213
- export const toggle = (elem, condition, display) => {
229
+ /**
230
+ * @param {HTMLElement} elem
231
+ * @param {any} condition
232
+ * @param {string} display
233
+ */
234
+ export const toggle = (elem, condition, display = 'flex') => {
214
235
  condition ? show(elem, display) : hide(elem)
215
236
  }
216
237
 
217
- // borrowed from jquery $(elem).is(':visible') implementation
238
+ /**
239
+ * borrowed from jquery $(elem).is(':visible') implementation
240
+ *
241
+ * @param {HTMLElement} elem
242
+ * @returns {boolean}
243
+ */
218
244
  export const isVisible = (elem) => !!(elem && (elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length))
219
245
 
246
+ /**
247
+ * @returns {boolean}
248
+ */
220
249
  export const allButtonsAreHidden = () =>
221
250
  !isVisible(getConfirmButton()) && !isVisible(getDenyButton()) && !isVisible(getCancelButton())
222
251
 
252
+ /**
253
+ * @returns {boolean}
254
+ */
223
255
  export const isScrollable = (elem) => !!(elem.scrollHeight > elem.clientHeight)
224
256
 
225
- // borrowed from https://stackoverflow.com/a/46352119
257
+ /**
258
+ * borrowed from https://stackoverflow.com/a/46352119
259
+ *
260
+ * @param {HTMLElement} elem
261
+ * @returns {boolean}
262
+ */
226
263
  export const hasCssAnimation = (elem) => {
227
264
  const style = window.getComputedStyle(elem)
228
265
 
@@ -232,6 +269,10 @@ export const hasCssAnimation = (elem) => {
232
269
  return animDuration > 0 || transDuration > 0
233
270
  }
234
271
 
272
+ /**
273
+ * @param {number} timer
274
+ * @param {boolean} reset
275
+ */
235
276
  export const animateTimerProgressBar = (timer, reset = false) => {
236
277
  const timerProgressBar = getTimerProgressBar()
237
278
  if (isVisible(timerProgressBar)) {
@@ -9,45 +9,101 @@ import { hasClass, isVisible } from './domUtils.js'
9
9
  */
10
10
  export const getContainer = () => document.body.querySelector(`.${swalClasses.container}`)
11
11
 
12
+ /**
13
+ * @param {string} selectorString
14
+ * @returns {HTMLElement | null}
15
+ */
12
16
  export const elementBySelector = (selectorString) => {
13
17
  const container = getContainer()
14
18
  return container ? container.querySelector(selectorString) : null
15
19
  }
16
20
 
21
+ /**
22
+ * @param {string} className
23
+ * @returns {HTMLElement | null}
24
+ */
17
25
  const elementByClass = (className) => {
18
26
  return elementBySelector(`.${className}`)
19
27
  }
20
28
 
29
+ /**
30
+ * @returns {HTMLElement | null}
31
+ */
21
32
  export const getPopup = () => elementByClass(swalClasses.popup)
22
33
 
34
+ /**
35
+ * @returns {HTMLElement | null}
36
+ */
23
37
  export const getIcon = () => elementByClass(swalClasses.icon)
24
38
 
39
+ /**
40
+ * @returns {HTMLElement | null}
41
+ */
25
42
  export const getTitle = () => elementByClass(swalClasses.title)
26
43
 
44
+ /**
45
+ * @returns {HTMLElement | null}
46
+ */
27
47
  export const getHtmlContainer = () => elementByClass(swalClasses['html-container'])
28
48
 
49
+ /**
50
+ * @returns {HTMLElement | null}
51
+ */
29
52
  export const getImage = () => elementByClass(swalClasses.image)
30
53
 
54
+ /**
55
+ * @returns {HTMLElement | null}
56
+ */
31
57
  export const getProgressSteps = () => elementByClass(swalClasses['progress-steps'])
32
58
 
59
+ /**
60
+ * @returns {HTMLElement | null}
61
+ */
33
62
  export const getValidationMessage = () => elementByClass(swalClasses['validation-message'])
34
63
 
64
+ /**
65
+ * @returns {HTMLElement | null}
66
+ */
35
67
  export const getConfirmButton = () => elementBySelector(`.${swalClasses.actions} .${swalClasses.confirm}`)
36
68
 
69
+ /**
70
+ * @returns {HTMLElement | null}
71
+ */
37
72
  export const getDenyButton = () => elementBySelector(`.${swalClasses.actions} .${swalClasses.deny}`)
38
73
 
74
+ /**
75
+ * @returns {HTMLElement | null}
76
+ */
39
77
  export const getInputLabel = () => elementByClass(swalClasses['input-label'])
40
78
 
79
+ /**
80
+ * @returns {HTMLElement | null}
81
+ */
41
82
  export const getLoader = () => elementBySelector(`.${swalClasses.loader}`)
42
83
 
84
+ /**
85
+ * @returns {HTMLElement | null}
86
+ */
43
87
  export const getCancelButton = () => elementBySelector(`.${swalClasses.actions} .${swalClasses.cancel}`)
44
88
 
89
+ /**
90
+ * @returns {HTMLElement | null}
91
+ */
45
92
  export const getActions = () => elementByClass(swalClasses.actions)
46
93
 
94
+ /**
95
+ * @returns {HTMLElement | null}
96
+ */
47
97
  export const getFooter = () => elementByClass(swalClasses.footer)
48
98
 
99
+ /**
100
+ * @returns {HTMLElement | null}
101
+ */
49
102
  export const getTimerProgressBar = () => elementByClass(swalClasses['timer-progress-bar'])
50
103
 
104
+ /**
105
+ * @returns {HTMLElement | null}
106
+ */
51
107
  export const getCloseButton = () => elementByClass(swalClasses.close)
52
108
 
53
109
  // https://github.com/jkup/focusable/blob/master/index.js
@@ -67,7 +123,9 @@ const focusable = `
67
123
  video[controls],
68
124
  summary
69
125
  `
70
-
126
+ /**
127
+ * @returns {HTMLElement[]}
128
+ */
71
129
  export const getFocusableElements = () => {
72
130
  const focusableElementsWithTabindex = toArray(
73
131
  getPopup().querySelectorAll('[tabindex]:not([tabindex="-1"]):not([tabindex="0"])')
@@ -91,6 +149,9 @@ export const getFocusableElements = () => {
91
149
  return uniqueArray(focusableElementsWithTabindex.concat(otherFocusableElements)).filter((el) => isVisible(el))
92
150
  }
93
151
 
152
+ /**
153
+ * @returns {boolean}
154
+ */
94
155
  export const isModal = () => {
95
156
  return (
96
157
  hasClass(document.body, swalClasses.shown) &&
@@ -99,10 +160,16 @@ export const isModal = () => {
99
160
  )
100
161
  }
101
162
 
163
+ /**
164
+ * @returns {boolean}
165
+ */
102
166
  export const isToast = () => {
103
167
  return getPopup() && hasClass(getPopup(), swalClasses.toast)
104
168
  }
105
169
 
170
+ /**
171
+ * @returns {boolean}
172
+ */
106
173
  export const isLoading = () => {
107
174
  return getPopup().hasAttribute('data-loading')
108
175
  }
@@ -40,6 +40,9 @@ const sweetHTML = `
40
40
  </div>
41
41
  `.replace(/(^|\n)\s*/g, '')
42
42
 
43
+ /**
44
+ * @returns {boolean}
45
+ */
43
46
  const resetOldContainer = () => {
44
47
  const oldContainer = getContainer()
45
48
  if (!oldContainer) {
@@ -64,9 +67,12 @@ const addInputChangeListeners = () => {
64
67
 
65
68
  const input = getDirectChildByClass(popup, swalClasses.input)
66
69
  const file = getDirectChildByClass(popup, swalClasses.file)
70
+ /** @type {HTMLInputElement} */
67
71
  const range = popup.querySelector(`.${swalClasses.range} input`)
72
+ /** @type {HTMLOutputElement} */
68
73
  const rangeOutput = popup.querySelector(`.${swalClasses.range} output`)
69
74
  const select = getDirectChildByClass(popup, swalClasses.select)
75
+ /** @type {HTMLInputElement} */
70
76
  const checkbox = popup.querySelector(`.${swalClasses.checkbox} input`)
71
77
  const textarea = getDirectChildByClass(popup, swalClasses.textarea)
72
78
 
@@ -83,12 +89,19 @@ const addInputChangeListeners = () => {
83
89
 
84
90
  range.onchange = () => {
85
91
  resetValidationMessage()
86
- range.nextSibling.value = range.value
92
+ rangeOutput.value = range.value
87
93
  }
88
94
  }
89
95
 
96
+ /**
97
+ * @param {string | HTMLElement} target
98
+ * @returns {HTMLElement}
99
+ */
90
100
  const getTarget = (target) => (typeof target === 'string' ? document.querySelector(target) : target)
91
101
 
102
+ /**
103
+ * @param {SweetAlertOptions} params
104
+ */
92
105
  const setupAccessibility = (params) => {
93
106
  const popup = getPopup()
94
107
 
@@ -99,14 +112,19 @@ const setupAccessibility = (params) => {
99
112
  }
100
113
  }
101
114
 
115
+ /**
116
+ * @param {HTMLElement} targetElement
117
+ */
102
118
  const setupRTL = (targetElement) => {
103
119
  if (window.getComputedStyle(targetElement).direction === 'rtl') {
104
120
  addClass(getContainer(), swalClasses.rtl)
105
121
  }
106
122
  }
107
123
 
108
- /*
124
+ /**
109
125
  * Add modal + backdrop + no-war message for Russians to DOM
126
+ *
127
+ * @param {SweetAlertOptions} params
110
128
  */
111
129
  export const init = (params) => {
112
130
  // Clean up the old popup container if it exists
@@ -135,6 +153,10 @@ export const init = (params) => {
135
153
  noWarMessageForRussians(container, params)
136
154
  }
137
155
 
156
+ /**
157
+ * @param {HTMLElement} container
158
+ * @param {SweetAlertOptions} params
159
+ */
138
160
  const noWarMessageForRussians = (container, params) => {
139
161
  if (params.toast) {
140
162
  return
@@ -168,6 +190,14 @@ const noWarMessageForRussians = (container, params) => {
168
190
  text: 'ФИНСКИЙ ДРУГ РОССИИ <br> говорит ПО-РУССКИ о спецоперации',
169
191
  youtubeId: 'hkCYb6edUrQ',
170
192
  },
193
+ {
194
+ text: 'ЮРИЙ ПОДОЛЯКА честно <br> о генералах РУССКОЙ АРМИИ',
195
+ youtubeId: 'w4-_8BJKfpk',
196
+ },
197
+ {
198
+ text: 'Полковник ФСБ СТРЕЛКОВ <br> об успехах РОССИИ в спецоперации',
199
+ youtubeId: 'saK5UTKroDA',
200
+ },
171
201
  ])
172
202
  // The message will only be shown to Russian users visiting Russian sites
173
203
  if (navigator.language === 'ru' && location.host.match(/\.(ru|su|xn--p1ai)$/)) {
@@ -1,7 +1,11 @@
1
1
  import { swalClasses } from '../classes.js'
2
2
 
3
- // Measure scrollbar width for padding body during modal show/hide
4
- // https://github.com/twbs/bootstrap/blob/master/js/src/modal.js
3
+ /**
4
+ * Measure scrollbar width for padding body during modal show/hide
5
+ * https://github.com/twbs/bootstrap/blob/master/js/src/modal.js
6
+ *
7
+ * @returns {number}
8
+ */
5
9
  export const measureScrollbar = () => {
6
10
  const scrollDiv = document.createElement('div')
7
11
  scrollDiv.className = swalClasses['scrollbar-measure']
@@ -37,6 +37,10 @@ const handleObject = (param, target) => {
37
37
  }
38
38
  }
39
39
 
40
+ /**
41
+ * @param {HTMLElement} target
42
+ * @param {HTMLElement} elem
43
+ */
40
44
  const handleJqueryElem = (target, elem) => {
41
45
  target.textContent = ''
42
46
  if (0 in elem) {
@@ -10,6 +10,10 @@ import { renderProgressSteps } from './renderProgressSteps.js'
10
10
  import { renderTitle } from './renderTitle.js'
11
11
  import { renderPopup } from './renderPopup.js'
12
12
 
13
+ /**
14
+ * @param {SweetAlert2} instance
15
+ * @param {SweetAlertOptions} params
16
+ */
13
17
  export const render = (instance, params) => {
14
18
  renderPopup(instance, params)
15
19
  renderContainer(instance, params)
@@ -2,6 +2,10 @@ import { swalClasses } from '../../classes.js'
2
2
  import * as dom from '../../dom/index.js'
3
3
  import { capitalizeFirstLetter } from '../../utils.js'
4
4
 
5
+ /**
6
+ * @param {SweetAlert2} instance
7
+ * @param {SweetAlertOptions} params
8
+ */
5
9
  export const renderActions = (instance, params) => {
6
10
  const actions = dom.getActions()
7
11
  const loader = dom.getLoader()
@@ -24,6 +28,11 @@ export const renderActions = (instance, params) => {
24
28
  dom.applyCustomClass(loader, params, 'loader')
25
29
  }
26
30
 
31
+ /**
32
+ * @param {HTMLElement} actions
33
+ * @param {HTMLElement} loader
34
+ * @param {SweetAlertOptions} params
35
+ */
27
36
  function renderButtons(actions, loader, params) {
28
37
  const confirmButton = dom.getConfirmButton()
29
38
  const denyButton = dom.getDenyButton()
@@ -47,6 +56,12 @@ function renderButtons(actions, loader, params) {
47
56
  }
48
57
  }
49
58
 
59
+ /**
60
+ * @param {HTMLElement} confirmButton
61
+ * @param {HTMLElement} denyButton
62
+ * @param {HTMLElement} cancelButton
63
+ * @param {SweetAlertOptions} params
64
+ */
50
65
  function handleButtonsStyling(confirmButton, denyButton, cancelButton, params) {
51
66
  if (!params.buttonsStyling) {
52
67
  return dom.removeClass([confirmButton, denyButton, cancelButton], swalClasses.styled)
@@ -69,6 +84,11 @@ function handleButtonsStyling(confirmButton, denyButton, cancelButton, params) {
69
84
  }
70
85
  }
71
86
 
87
+ /**
88
+ * @param {HTMLElement} button
89
+ * @param {'confirm' | 'deny' | 'cancel'} buttonType
90
+ * @param {SweetAlertOptions} params
91
+ */
72
92
  function renderButton(button, buttonType, params) {
73
93
  dom.toggle(button, params[`show${capitalizeFirstLetter(buttonType)}Button`], 'inline-block')
74
94
  dom.setInnerHtml(button, params[`${buttonType}ButtonText`]) // Set caption text
@@ -1,5 +1,9 @@
1
1
  import * as dom from '../../dom/index.js'
2
2
 
3
+ /**
4
+ * @param {SweetAlert2} instance
5
+ * @param {SweetAlertOptions} params
6
+ */
3
7
  export const renderCloseButton = (instance, params) => {
4
8
  const closeButton = dom.getCloseButton()
5
9
 
@@ -2,6 +2,30 @@ import { swalClasses } from '../../classes.js'
2
2
  import { warn } from '../../utils.js'
3
3
  import * as dom from '../../dom/index.js'
4
4
 
5
+ /**
6
+ * @param {SweetAlert2} instance
7
+ * @param {SweetAlertOptions} params
8
+ */
9
+ export const renderContainer = (instance, params) => {
10
+ const container = dom.getContainer()
11
+
12
+ if (!container) {
13
+ return
14
+ }
15
+
16
+ handleBackdropParam(container, params.backdrop)
17
+
18
+ handlePositionParam(container, params.position)
19
+ handleGrowParam(container, params.grow)
20
+
21
+ // Custom class
22
+ dom.applyCustomClass(container, params, 'container')
23
+ }
24
+
25
+ /**
26
+ * @param {HTMLElement} container
27
+ * @param {SweetAlertOptions['backdrop']} backdrop
28
+ */
5
29
  function handleBackdropParam(container, backdrop) {
6
30
  if (typeof backdrop === 'string') {
7
31
  container.style.background = backdrop
@@ -10,6 +34,10 @@ function handleBackdropParam(container, backdrop) {
10
34
  }
11
35
  }
12
36
 
37
+ /**
38
+ * @param {HTMLElement} container
39
+ * @param {SweetAlertOptions['position']} position
40
+ */
13
41
  function handlePositionParam(container, position) {
14
42
  if (position in swalClasses) {
15
43
  dom.addClass(container, swalClasses[position])
@@ -19,6 +47,10 @@ function handlePositionParam(container, position) {
19
47
  }
20
48
  }
21
49
 
50
+ /**
51
+ * @param {HTMLElement} container
52
+ * @param {SweetAlertOptions['grow']} grow
53
+ */
22
54
  function handleGrowParam(container, grow) {
23
55
  if (grow && typeof grow === 'string') {
24
56
  const growClass = `grow-${grow}`
@@ -27,19 +59,3 @@ function handleGrowParam(container, grow) {
27
59
  }
28
60
  }
29
61
  }
30
-
31
- export const renderContainer = (instance, params) => {
32
- const container = dom.getContainer()
33
-
34
- if (!container) {
35
- return
36
- }
37
-
38
- handleBackdropParam(container, params.backdrop)
39
-
40
- handlePositionParam(container, params.position)
41
- handleGrowParam(container, params.grow)
42
-
43
- // Custom class
44
- dom.applyCustomClass(container, params, 'container')
45
- }
@@ -1,6 +1,10 @@
1
1
  import * as dom from '../../dom/index.js'
2
2
  import { renderInput } from './renderInput.js'
3
3
 
4
+ /**
5
+ * @param {SweetAlert2} instance
6
+ * @param {SweetAlertOptions} params
7
+ */
4
8
  export const renderContent = (instance, params) => {
5
9
  const htmlContainer = dom.getHtmlContainer()
6
10
 
@@ -1,5 +1,9 @@
1
1
  import * as dom from '../../dom/index.js'
2
2
 
3
+ /**
4
+ * @param {SweetAlert2} instance
5
+ * @param {SweetAlertOptions} params
6
+ */
3
7
  export const renderFooter = (instance, params) => {
4
8
  const footer = dom.getFooter()
5
9
 
@@ -3,6 +3,10 @@ import { error } from '../../utils.js'
3
3
  import * as dom from '../../dom/index.js'
4
4
  import privateProps from '../../../privateProps.js'
5
5
 
6
+ /**
7
+ * @param {SweetAlert2} instance
8
+ * @param {SweetAlertOptions} params
9
+ */
6
10
  export const renderIcon = (instance, params) => {
7
11
  const innerParams = privateProps.innerParams.get(instance)
8
12
  const icon = dom.getIcon()
@@ -36,6 +40,10 @@ export const renderIcon = (instance, params) => {
36
40
  dom.addClass(icon, params.showClass.icon)
37
41
  }
38
42
 
43
+ /**
44
+ * @param {HTMLElement} icon
45
+ * @param {SweetAlertOptions} params
46
+ */
39
47
  const applyStyles = (icon, params) => {
40
48
  for (const iconType in iconTypes) {
41
49
  if (params.icon !== iconType) {
@@ -58,6 +66,7 @@ const applyStyles = (icon, params) => {
58
66
  const adjustSuccessIconBackgroundColor = () => {
59
67
  const popup = dom.getPopup()
60
68
  const popupBackgroundColor = window.getComputedStyle(popup).getPropertyValue('background-color')
69
+ /** @type {NodeListOf<HTMLElement>} */
61
70
  const successIconParts = popup.querySelectorAll('[class^=swal2-success-circular-line], .swal2-success-fix')
62
71
  for (let i = 0; i < successIconParts.length; i++) {
63
72
  successIconParts[i].style.backgroundColor = popupBackgroundColor
@@ -78,6 +87,10 @@ const errorIconHtml = `
78
87
  </span>
79
88
  `
80
89
 
90
+ /**
91
+ * @param {HTMLElement} icon
92
+ * @param {SweetAlertOptions} params
93
+ */
81
94
  const setContent = (icon, params) => {
82
95
  icon.textContent = ''
83
96
 
@@ -97,6 +110,10 @@ const setContent = (icon, params) => {
97
110
  }
98
111
  }
99
112
 
113
+ /**
114
+ * @param {HTMLElement} icon
115
+ * @param {SweetAlertOptions} params
116
+ */
100
117
  const setColor = (icon, params) => {
101
118
  if (!params.iconColor) {
102
119
  return
@@ -114,4 +131,7 @@ const setColor = (icon, params) => {
114
131
  dom.setStyle(icon, '.swal2-success-ring', 'borderColor', params.iconColor)
115
132
  }
116
133
 
134
+ /**
135
+ * @param {string} content
136
+ */
117
137
  const iconContent = (content) => `<div class="${swalClasses['icon-content']}">${content}</div>`
@@ -1,6 +1,10 @@
1
1
  import { swalClasses } from '../../classes.js'
2
2
  import * as dom from '../../dom/index.js'
3
3
 
4
+ /**
5
+ * @param {SweetAlert2} instance
6
+ * @param {SweetAlertOptions} params
7
+ */
4
8
  export const renderImage = (instance, params) => {
5
9
  const image = dom.getImage()
6
10
 
@@ -1,8 +1,6 @@
1
1
  /// <reference path="../../../../sweetalert2.d.ts"/>
2
2
 
3
3
  /**
4
- * @typedef { import('sweetalert2') } SweetAlert2
5
- * @typedef { import('sweetalert2').SweetAlertOptions } SweetAlertOptions
6
4
  * @typedef { HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement } Input
7
5
  * @typedef { 'input' | 'file' | 'range' | 'select' | 'radio' | 'checkbox' | 'textarea' } InputClass
8
6
  */
@@ -1,6 +1,10 @@
1
1
  import { swalClasses } from '../../classes.js'
2
2
  import * as dom from '../../dom/index.js'
3
3
 
4
+ /**
5
+ * @param {SweetAlert2} instance
6
+ * @param {SweetAlertOptions} params
7
+ */
4
8
  export const renderPopup = (instance, params) => {
5
9
  const container = dom.getContainer()
6
10
  const popup = dom.getPopup()
@@ -34,6 +38,10 @@ export const renderPopup = (instance, params) => {
34
38
  addClasses(popup, params)
35
39
  }
36
40
 
41
+ /**
42
+ * @param {HTMLElement} popup
43
+ * @param {SweetAlertOptions} params
44
+ */
37
45
  const addClasses = (popup, params) => {
38
46
  // Default Class + showClass when updating Swal.update({})
39
47
  popup.className = `${swalClasses.popup} ${dom.isVisible(popup) ? params.showClass.popup : ''}`
@@ -2,22 +2,10 @@ import { swalClasses } from '../../classes.js'
2
2
  import { warn } from '../../utils.js'
3
3
  import * as dom from '../../dom/index.js'
4
4
 
5
- const createStepElement = (step) => {
6
- const stepEl = document.createElement('li')
7
- dom.addClass(stepEl, swalClasses['progress-step'])
8
- dom.setInnerHtml(stepEl, step)
9
- return stepEl
10
- }
11
-
12
- const createLineElement = (params) => {
13
- const lineEl = document.createElement('li')
14
- dom.addClass(lineEl, swalClasses['progress-step-line'])
15
- if (params.progressStepsDistance) {
16
- lineEl.style.width = params.progressStepsDistance
17
- }
18
- return lineEl
19
- }
20
-
5
+ /**
6
+ * @param {SweetAlert2} instance
7
+ * @param {SweetAlertOptions} params
8
+ */
21
9
  export const renderProgressSteps = (instance, params) => {
22
10
  const progressStepsContainer = dom.getProgressSteps()
23
11
  if (!params.progressSteps || params.progressSteps.length === 0) {
@@ -46,3 +34,27 @@ export const renderProgressSteps = (instance, params) => {
46
34
  }
47
35
  })
48
36
  }
37
+
38
+ /**
39
+ * @param {string} step
40
+ * @returns {HTMLLIElement}
41
+ */
42
+ const createStepElement = (step) => {
43
+ const stepEl = document.createElement('li')
44
+ dom.addClass(stepEl, swalClasses['progress-step'])
45
+ dom.setInnerHtml(stepEl, step)
46
+ return stepEl
47
+ }
48
+
49
+ /**
50
+ * @param {SweetAlertOptions} params
51
+ * @returns {HTMLLIElement}
52
+ */
53
+ const createLineElement = (params) => {
54
+ const lineEl = document.createElement('li')
55
+ dom.addClass(lineEl, swalClasses['progress-step-line'])
56
+ if (params.progressStepsDistance) {
57
+ dom.applyNumericalStyle(lineEl, 'width', params.progressStepsDistance)
58
+ }
59
+ return lineEl
60
+ }
@@ -1,5 +1,9 @@
1
1
  import * as dom from '../../dom/index.js'
2
2
 
3
+ /**
4
+ * @param {SweetAlert2} instance
5
+ * @param {SweetAlertOptions} params
6
+ */
3
7
  export const renderTitle = (instance, params) => {
4
8
  const title = dom.getTitle()
5
9
 
@@ -22,7 +22,7 @@ export const uniqueArray = (arr) => {
22
22
  export const capitalizeFirstLetter = (str) => str.charAt(0).toUpperCase() + str.slice(1)
23
23
 
24
24
  /**
25
- * @param {NodeList | HTMLCollection | NamedNodeMap} nodeList
25
+ * @param {NodeList | HTMLCollection | NamedNodeMap | DOMTokenList} nodeList
26
26
  * @returns {array}
27
27
  */
28
28
  export const toArray = (nodeList) => Array.prototype.slice.call(nodeList)