17 lines
635 B
JavaScript
17 lines
635 B
JavaScript
'use strict';
|
|
(function (w) {
|
|
const states = new Set(['idle', 'good', 'warn', 'danger']);
|
|
const labels = {idle: 'Not available', good: 'Connected', warn: 'Connecting', danger: 'Not working'};
|
|
function set(target, state, label) {
|
|
const element = typeof target === 'string' ? document.getElementById(target) : target;
|
|
if (!element) return;
|
|
const next = states.has(state) ? state : 'idle';
|
|
const text = label || labels[next];
|
|
element.dataset.state = next;
|
|
element.setAttribute('role', 'img');
|
|
element.setAttribute('aria-label', text);
|
|
element.title = text;
|
|
}
|
|
w.CaptionStatus = {set};
|
|
})(window);
|