UNPKG

@taiga-ui/cdk

Version:

Base library for creating Angular components and applications using Taiga UI principles regarding of actual visual appearance

43 lines (42 loc) 2.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.migrateBlocked = 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"); function migrateBlocked({ 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.findElementsByTagNames)(template, [ 'tui-checkbox-block', 'tui-radio-block', ]); elements.forEach(({ sourceCodeLocation, tagName, attrs }) => { var _a, _b, _c, _d; if (!sourceCodeLocation) { return; } const [, hideIconAttrLocation] = Object.entries(sourceCodeLocation.attrs || {}).find(([name]) => name.includes('hideCheckbox'.toLowerCase()) || name.includes('hideRadio'.toLowerCase())) || []; const [, sizeAttrLocation] = Object.entries(sourceCodeLocation.attrs || {}).find(([name]) => name.includes('size')) || []; const [, ngForAttrLocation] = Object.entries(sourceCodeLocation.attrs || {}).find(([name]) => name.includes('*ngfor')) || []; const [, contentAlignAttrLocation] = Object.entries(sourceCodeLocation.attrs || {}).find(([name]) => name.includes('contentalign')) || []; const sizeAttr = (0, inputs_1.findAttr)(attrs, 'size'); const ngForAttr = (0, inputs_1.findAttr)(attrs, '*ngFor'); const tuiBlock = sizeAttr && (0, inputs_1.isBinding)(sizeAttr) ? '[tuiBlock]' : 'tuiBlock'; const newBlockAttr = `${tuiBlock}${sizeAttr ? `="${sizeAttr.value === 'xs' ? 's' : sizeAttr.value}"` : ''}`; recorder.insertRight(templateOffset + (((_a = sourceCodeLocation.startTag) === null || _a === void 0 ? void 0 : _a.startOffset) || 1) - 1, `<label${ngForAttr ? ` *ngFor="${ngForAttr.value}"` : ''} ${newBlockAttr}${hideIconAttrLocation ? ' appearance=""' : ''}>`); recorder.remove(templateOffset + ((_c = (_b = sourceCodeLocation.endTag) === null || _b === void 0 ? void 0 : _b.startOffset) !== null && _c !== void 0 ? _c : 0), `<${tagName}/>`.length); recorder.insertRight(templateOffset + (((_d = sourceCodeLocation.endTag) === null || _d === void 0 ? void 0 : _d.startOffset) || 1), '</label>'); const attrsToRemove = [ hideIconAttrLocation, sizeAttrLocation, ngForAttrLocation, contentAlignAttrLocation, ].filter((location) => Boolean(location)); attrsToRemove.forEach((location) => { recorder.remove(templateOffset + location.startOffset, location.endOffset - location.startOffset); }); }); } exports.migrateBlocked = migrateBlocked;