@clinic/clinic-common
Version:
Shared parts between the Clinic.js suite
30 lines (24 loc) • 803 B
JavaScript
module.exports = (options = {}) => {
const button = document.createElement('button')
const btnOptions = options
if (btnOptions.onClick) {
button.addEventListener('click', btnOptions.onClick)
}
button.update = (options) => {
_render(Object.assign({}, btnOptions, options))
}
function _render ({ label, classNames = [], leftIcon = '', rightIcon = '', disabled = false, onClick, title = '' }) {
button.disabled = disabled
button.title = title
button.className = ['nc-button', ...(options.classNames || [])].join(' ')
button.innerHTML = `
<span class='nc-button__inner-container'>
${leftIcon}
${label ? `<span class="nc-button__label">${label}</span>` : ''}
${rightIcon}
</span>
`
}
button.update(options)
return button
}