@taiga-ui/cdk
Version:
Base library for creating Angular components and applications using Taiga UI principles regarding of actual visual appearance
60 lines • 3.52 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.migrateFieldError = migrateFieldError;
const insert_todo_1 = require("../../../../utils/insert-todo");
const elements_1 = require("../../../../utils/templates/elements");
const template_resource_1 = require("../../../../utils/templates/template-resource");
function migrateFieldError(data) {
migrateFieldErrorContentPipe(data);
migrateFieldErrorPipe(data);
}
function migrateFieldErrorContentPipe({ 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.findElementsInTemplateByFn)(template, (el) => { var _a; return (_a = el.attrs) === null || _a === void 0 ? void 0 : _a.some((attr) => attr.value.includes('tuiFieldErrorContent')); });
elements.forEach(({ attrs, sourceCodeLocation }) => {
var _a;
const attr = attrs.find((attr) => attr.value.includes('tuiFieldErrorContent'));
if (!attr || !sourceCodeLocation) {
return;
}
const { startOffset, endOffset } = ((_a = sourceCodeLocation === null || sourceCodeLocation === void 0 ? void 0 : sourceCodeLocation.attrs) === null || _a === void 0 ? void 0 : _a[attr.name]) || {
startOffset: 0,
endOffset: 0,
};
recorder.remove(templateOffset + startOffset + attr.name.length, endOffset - (startOffset + attr.name.length));
recorder.insertRight(templateOffset + startOffset + attr.name.length, `="${attr.value.replace(/\|\s*tuiFieldErrorContent/, '| tuiError')}"`);
});
}
function migrateFieldErrorPipe({ 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.findElementsInTemplateByFn)(template, (el) => {
var _a;
return (_a = el.attrs) === null || _a === void 0 ? void 0 : _a.some((attr) => attr.value.includes('tuiFieldError') &&
!attr.value.includes('tuiFieldErrorContent'));
});
elements.forEach(({ tagName, attrs, sourceCodeLocation }) => {
var _a;
const attr = attrs.find((attr) => attr.value.includes('tuiFieldError') &&
!attr.value.includes('tuiFieldErrorContent'));
if (!attr || !sourceCodeLocation) {
return;
}
if (tagName !== 'tui-error') {
recorder.insertLeft(templateOffset + sourceCodeLocation.startOffset, `<!-- ${insert_todo_1.TODO_MARK} could not migrate \`tuiFieldError\` automatically. The directive must be used on a <tui-error> element. Likely, you want to use \`tuiError\` pipe. -->`);
return;
}
const order = attr.value.split(/\s*\|\s*tuiFieldError/)[0] || '';
const { startOffset, endOffset } = ((_a = sourceCodeLocation === null || sourceCodeLocation === void 0 ? void 0 : sourceCodeLocation.attrs) === null || _a === void 0 ? void 0 : _a[attr.name]) || {
startOffset: 0,
endOffset: 0,
};
recorder.remove(templateOffset + startOffset, endOffset - startOffset);
if (order === '[]') {
return;
}
recorder.insertRight(templateOffset + startOffset, `[order]="${order}"`);
});
}
//# sourceMappingURL=migrate-field-error.js.map