package.src.utils.dom.renderers.renderProgressSteps.js Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of sweetalert2 Show documentation
Show all versions of sweetalert2 Show documentation
A beautiful, responsive, customizable and accessible (WAI-ARIA) replacement for JavaScript's popup boxes, supported fork of sweetalert
The newest version!
import { swalClasses } from '../../classes.js'
import * as dom from '../../dom/index.js'
import { warn } from '../../utils.js'
/**
* @param {SweetAlert} instance
* @param {SweetAlertOptions} params
*/
export const renderProgressSteps = (instance, params) => {
const progressStepsContainer = dom.getProgressSteps()
if (!progressStepsContainer) {
return
}
const { progressSteps, currentProgressStep } = params
if (!progressSteps || progressSteps.length === 0 || currentProgressStep === undefined) {
dom.hide(progressStepsContainer)
return
}
dom.show(progressStepsContainer)
progressStepsContainer.textContent = ''
if (currentProgressStep >= progressSteps.length) {
warn(
'Invalid currentProgressStep parameter, it should be less than progressSteps.length ' +
'(currentProgressStep like JS arrays starts from 0)'
)
}
progressSteps.forEach((step, index) => {
const stepEl = createStepElement(step)
progressStepsContainer.appendChild(stepEl)
if (index === currentProgressStep) {
dom.addClass(stepEl, swalClasses['active-progress-step'])
}
if (index !== progressSteps.length - 1) {
const lineEl = createLineElement(params)
progressStepsContainer.appendChild(lineEl)
}
})
}
/**
* @param {string} step
* @returns {HTMLLIElement}
*/
const createStepElement = (step) => {
const stepEl = document.createElement('li')
dom.addClass(stepEl, swalClasses['progress-step'])
dom.setInnerHtml(stepEl, step)
return stepEl
}
/**
* @param {SweetAlertOptions} params
* @returns {HTMLLIElement}
*/
const createLineElement = (params) => {
const lineEl = document.createElement('li')
dom.addClass(lineEl, swalClasses['progress-step-line'])
if (params.progressStepsDistance) {
dom.applyNumericalStyle(lineEl, 'width', params.progressStepsDistance)
}
return lineEl
}