@taiga-ui/cdk
Version:
Base library for creating Angular components and applications using Taiga UI principles regarding of actual visual appearance
62 lines (61 loc) • 2.93 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.migrateCheckbox = void 0;
const elements_1 = require("../../../../../utils/templates/elements");
const inputs_1 = require("../../../../../utils/templates/inputs");
const template_resource_1 = require("../../../../../utils/templates/template-resource");
const common_1 = require("./common");
function migrateCheckbox({ resource, recorder, fileSystem, }) {
const template = (0, template_resource_1.getTemplateFromTemplateResource)(resource, fileSystem);
const templateOffset = (0, template_resource_1.getTemplateOffset)(resource);
const elements = (0, elements_1.findElementsByTagName)(template, 'tui-checkbox');
elements.forEach(({ attrs, sourceCodeLocation }) => {
if (!sourceCodeLocation) {
return;
}
(0, common_1.replaceSizeAttr)(attrs, sourceCodeLocation, recorder, templateOffset);
(0, common_1.replaceOpenTag)(sourceCodeLocation, recorder, templateOffset, {
tag: 'tui-checkbox',
directive: 'tuiCheckbox',
type: 'checkbox',
});
(0, common_1.closeStartTag)(sourceCodeLocation, recorder, templateOffset);
(0, common_1.removeClosingTag)(sourceCodeLocation, recorder, templateOffset);
});
(0, elements_1.findElementsByTagName)(template, 'tui-primitive-checkbox').forEach(({ attrs, sourceCodeLocation }) => {
if (!sourceCodeLocation) {
return;
}
(0, common_1.replaceSizeAttr)(attrs, sourceCodeLocation, recorder, templateOffset);
replaceValueAttr(attrs, sourceCodeLocation, recorder, templateOffset);
(0, common_1.replaceOpenTag)(sourceCodeLocation, recorder, templateOffset, {
tag: 'tui-primitive-checkbox',
directive: 'tuiCheckbox',
type: 'checkbox',
});
(0, common_1.closeStartTag)(sourceCodeLocation, recorder, templateOffset);
(0, common_1.removeClosingTag)(sourceCodeLocation, recorder, templateOffset);
});
}
exports.migrateCheckbox = migrateCheckbox;
function replaceValueAttr(attrs, sourceCodeLocation, recorder, templateOffset) {
var _a;
const valueAttr = (0, inputs_1.findAttr)(attrs, 'value');
if (valueAttr) {
const { startOffset, endOffset } = ((_a = sourceCodeLocation.attrs) === null || _a === void 0 ? void 0 : _a[valueAttr.name]) || {
startOffset: 0,
endOffset: 0,
};
recorder.remove(templateOffset + startOffset, endOffset - startOffset);
switch (valueAttr.value) {
case 'false':
case 'null':
return;
case 'true':
recorder.insertRight(templateOffset + startOffset, 'checked ');
return;
default:
recorder.insertRight(templateOffset + startOffset, `[checked]="${valueAttr.value}" `);
}
}
}