cloudcmd/client/modules/config/input.js
2026-03-23 23:48:34 +02:00

78 lines
1.5 KiB
JavaScript

import {encode} from '#common/entity';
const isBool = (a) => typeof a === 'boolean';
const isString = (a) => typeof a === 'string';
const {keys} = Object;
export function getElementByName(selector, element) {
const str = `[data-name="js-${selector}"]`;
return element.querySelector(str);
}
export const getName = (element) => {
const name = element
.getAttribute('data-name')
.replace(/^js-/, '');
return name;
};
export const convert = (config) => {
const result = config;
for (const name of keys(config)) {
const item = config[name];
if (isBool(item)) {
result[name] = setState(item);
continue;
}
if (isString(item)) {
result[name] = encode(item);
continue;
}
}
return result;
};
function setState(state) {
if (state)
return ' checked';
return '';
}
export const getValue = (name, element) => {
const el = getElementByName(name, element);
const {type} = el;
switch(type) {
case 'checkbox':
return el.checked;
case 'number':
return Number(el.value);
default:
return el.value;
}
};
export const setValue = (name, value, element) => {
const el = getElementByName(name, element);
const {type} = el;
switch(type) {
case 'checkbox':
el.checked = value;
break;
default:
el.value = value;
break;
}
};