UNPKG

@taiga-ui/cdk

Version:

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

46 lines (45 loc) 2.39 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.migrateMobileTabs = void 0; const add_import_to_closest_module_1 = require("../../../../utils/add-import-to-closest-module"); const elements_1 = require("../../../../utils/templates/elements"); const template_resource_1 = require("../../../../utils/templates/template-resource"); const templates_1 = require("../../../utils/templates"); const remove_attrs_1 = require("../utils/remove-attrs"); const TABS_TAG_NAME = 'tui-tabs'; const SEGMENTED_TAG_NAME = 'tui-segmented'; const TAB_ATTRIBUTE_NAME = 'tuiTab'.toLowerCase(); const MOBILE_TABS_ATTRIBUTE_NAME = 'tuiMobileTabs'.toLowerCase(); function migrateMobileTabs({ 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.findElementsWithAttributeOnTag)(template, [MOBILE_TABS_ATTRIBUTE_NAME], [TABS_TAG_NAME]); if (elements.length > 0) { (0, add_import_to_closest_module_1.addImportToClosestModule)(resource.componentPath, 'TuiSegmented', '@taiga-ui/kit'); } elements.forEach((element) => { (0, templates_1.replaceTag)(recorder, element.sourceCodeLocation, TABS_TAG_NAME, SEGMENTED_TAG_NAME, templateOffset); removeMobileTabsAttribute(element, recorder, templateOffset); element.childNodes .filter(isElement) .forEach((element) => removeTabAttribute(element, recorder, templateOffset)); }); } exports.migrateMobileTabs = migrateMobileTabs; function removeTabAttribute({ attrs, sourceCodeLocation }, recorder, templateOffset) { const tabAttr = attrs.find((attr) => attr.name === TAB_ATTRIBUTE_NAME); if (!tabAttr || !sourceCodeLocation) { return; } (0, remove_attrs_1.removeAttrs)([tabAttr], sourceCodeLocation, recorder, templateOffset); } function removeMobileTabsAttribute({ attrs, sourceCodeLocation }, recorder, templateOffset) { const mobileTabsAttr = attrs.find((attr) => attr.name === MOBILE_TABS_ATTRIBUTE_NAME); if (!mobileTabsAttr || !sourceCodeLocation) { return; } (0, remove_attrs_1.removeAttrs)([mobileTabsAttr], sourceCodeLocation, recorder, templateOffset); } function isElement(node) { return Boolean(node.attrs); }