mirror of
https://github.com/coderaiser/cloudcmd.git
synced 2026-07-18 00:47:01 +00:00
78 lines
1.5 KiB
JavaScript
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;
|
|
}
|
|
};
|