@ng-flexy/form
Version:
Flexy components and tools to build Angular 8+ applications
29 lines • 4.53 kB
JavaScript
import * as jsonata_ from 'jsonata';
const jsonata = jsonata_;
export function bindAttributes(schema, nativeEl, renderer, data) {
if (nativeEl && renderer && schema.attributes) {
Object.keys(schema.attributes).forEach(attrKey => {
if (typeof schema.attributes[attrKey] === 'object') {
const attrValues = [];
Object.keys(schema.attributes[attrKey]).forEach(oKey => {
if (schema.attributes[attrKey][oKey]) {
try {
const is = jsonata(schema.attributes[attrKey][oKey]).evaluate(data);
if (is) {
attrValues.push(oKey);
}
}
catch (e) {
// do nothing
}
}
});
renderer.setAttribute(nativeEl, attrKey, attrValues.join(' '));
}
else if (typeof schema.attributes[attrKey] === 'string') {
renderer.setAttribute(nativeEl, attrKey, schema.attributes[attrKey]);
}
});
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ci5iaW5kZXIudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3JtL3NyYy9saWIvY29tcG9uZW50cy9hdHRyLmJpbmRlci51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEtBQUssUUFBUSxNQUFNLFNBQVMsQ0FBQztBQUVwQyxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUM7QUFFekIsTUFBTSxVQUFVLGNBQWMsQ0FBQyxNQUFrQyxFQUFFLFFBQVEsRUFBRSxRQUFtQixFQUFFLElBQW1CO0lBQ25ILElBQUksUUFBUSxJQUFJLFFBQVEsSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFO1FBQzdDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUMvQyxJQUFJLE9BQU8sTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxRQUFRLEVBQUU7Z0JBQ2xELE1BQU0sVUFBVSxHQUFhLEVBQUUsQ0FBQztnQkFDaEMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO29CQUNyRCxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUU7d0JBQ3BDLElBQUk7NEJBQ0YsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7NEJBQ3BFLElBQUksRUFBRSxFQUFFO2dDQUNOLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7NkJBQ3ZCO3lCQUNGO3dCQUFDLE9BQU8sQ0FBQyxFQUFFOzRCQUNWLGFBQWE7eUJBQ2Q7cUJBQ0Y7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsUUFBUSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUNoRTtpQkFBTSxJQUFJLE9BQU8sTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxRQUFRLEVBQUU7Z0JBQ3pELFFBQVEsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBVyxDQUFDLENBQUM7YUFDaEY7UUFDSCxDQUFDLENBQUMsQ0FBQztLQUNKO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmxleHlGb3JtRmllbGRMYXlvdXRTY2hlbWEgfSBmcm9tICcuLi9tb2RlbHMvbGF5b3V0LXNjaGVtYS5tb2RlbCc7XG5pbXBvcnQgKiBhcyBqc29uYXRhXyBmcm9tICdqc29uYXRhJztcbmltcG9ydCB7IEZsZXh5Rm9ybURhdGEgfSBmcm9tICcuLi9tb2RlbHMvZm9ybS5kYXRhJztcbmNvbnN0IGpzb25hdGEgPSBqc29uYXRhXztcblxuZXhwb3J0IGZ1bmN0aW9uIGJpbmRBdHRyaWJ1dGVzKHNjaGVtYTogRmxleHlGb3JtRmllbGRMYXlvdXRTY2hlbWEsIG5hdGl2ZUVsLCByZW5kZXJlcjogUmVuZGVyZXIyLCBkYXRhOiBGbGV4eUZvcm1EYXRhKSB7XG4gIGlmIChuYXRpdmVFbCAmJiByZW5kZXJlciAmJiBzY2hlbWEuYXR0cmlidXRlcykge1xuICAgIE9iamVjdC5rZXlzKHNjaGVtYS5hdHRyaWJ1dGVzKS5mb3JFYWNoKGF0dHJLZXkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBzY2hlbWEuYXR0cmlidXRlc1thdHRyS2V5XSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgY29uc3QgYXR0clZhbHVlczogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgT2JqZWN0LmtleXMoc2NoZW1hLmF0dHJpYnV0ZXNbYXR0cktleV0pLmZvckVhY2gob0tleSA9PiB7XG4gICAgICAgICAgaWYgKHNjaGVtYS5hdHRyaWJ1dGVzW2F0dHJLZXldW29LZXldKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBjb25zdCBpcyA9IGpzb25hdGEoc2NoZW1hLmF0dHJpYnV0ZXNbYXR0cktleV1bb0tleV0pLmV2YWx1YXRlKGRhdGEpO1xuICAgICAgICAgICAgICBpZiAoaXMpIHtcbiAgICAgICAgICAgICAgICBhdHRyVmFsdWVzLnB1c2gob0tleSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgLy8gZG8gbm90aGluZ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJlbmRlcmVyLnNldEF0dHJpYnV0ZShuYXRpdmVFbCwgYXR0cktleSwgYXR0clZhbHVlcy5qb2luKCcgJykpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygc2NoZW1hLmF0dHJpYnV0ZXNbYXR0cktleV0gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJlbmRlcmVyLnNldEF0dHJpYnV0ZShuYXRpdmVFbCwgYXR0cktleSwgc2NoZW1hLmF0dHJpYnV0ZXNbYXR0cktleV0gYXMgc3RyaW5nKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIl19