open-vault/ui/scripts/codemods/dropdown-transform.js
Hamid Ghaf 27bb03bbc0
adding copyright header (#19555)
* adding copyright header

* fix fmt and a test
2023-03-15 09:00:52 -07:00

45 lines
1.6 KiB
JavaScript

#!/usr/bin/env node
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
/* eslint-env node */
/**
* Codemod to transform BasicDropdown and Tooltip trigger and content components
* As of version 2 of ember-basic-dropdown the yielded component names are now capitalized
* In addition, splattributes are used and class must be passed as an attribute rather than argument
*/
module.exports = () => {
return {
ElementNode(node) {
// ensure we have the right parent node by first looking for BasicDropdown or ToolTip nodes
if (['BasicDropdown', 'ToolTip'].includes(node.tag)) {
node.children.forEach((child) => {
// capitalize trigger and content and transform attributes
if (child.type === 'ElementNode' && child.tag.match(/\.(content|trigger)/gi)) {
const { tag } = child;
const char = tag.charAt(tag.indexOf('.') + 1);
child.tag = tag.replace(char, char.toUpperCase());
// remove @ symbol from class and change @tagName to @htmlTag
// Content component does not use splattributes -- apply class with @defaultClass arg
child.attributes.forEach((attr) => {
if (attr.name.includes('class')) {
if (child.tag.includes('Content')) {
attr.name = '@defaultClass';
} else if (attr.name === '@class') {
attr.name = 'class';
}
} else if (attr.name.includes('tagName')) {
attr.name = '@htmlTag';
}
});
}
});
}
},
};
};