@alauda-fe/common
Version:
Alauda frontend team common codes.
57 lines • 6.71 kB
JavaScript
import { Directive, ElementRef } from '@angular/core';
import * as i0 from "@angular/core";
// base from alauda-ui export
const formatDataTestId = (input) => {
if (!input)
return '';
return input
.replaceAll('\r', '')
.replaceAll('\n', '')
.replaceAll('\\s', '')
.replaceAll(' ', '')
.slice(0, 63); // 避免有些text-content 太长不利于阅读,产生的副作用不会影响对元素的识别
};
const getDataTextContent = (element, type) => {
switch (type) {
case 'INPUT': {
return (element.getAttribute('formcontrolname') ||
element.getAttribute('name') ||
element.getAttribute('placeholder') ||
'');
}
default: {
return element.textContent;
}
}
};
const generateDataTestId = (ei) => {
const prefix = ei.nodeName;
const textContent = getDataTextContent(ei);
return ei.dataset.test || formatDataTestId(`${prefix}/${textContent}`);
};
export class E2eAttributeBindingDirective {
constructor(el) {
this.el = el;
}
ngAfterViewInit() {
this.setDataTestId();
}
setDataTestId() {
const currentAttr = generateDataTestId(this.el.nativeElement);
if (currentAttr !== this.el.nativeElement.dataset.test) {
this.el.nativeElement.dataset.test = currentAttr;
}
}
static { this.ɵfac = function E2eAttributeBindingDirective_Factory(t) { return new (t || E2eAttributeBindingDirective)(i0.ɵɵdirectiveInject(i0.ElementRef)); }; }
static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: E2eAttributeBindingDirective, selectors: [["", "click", ""], ["", "routerLink", ""], ["a", "href", ""], ["", "auiTooltip", ""], ["", "auiDropdown", ""]], standalone: true }); }
}
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(E2eAttributeBindingDirective, [{
type: Directive,
args: [{
selector:
// eslint-disable-next-line @angular-eslint/directive-selector
'[click],[routerLink],a[href],[auiTooltip],[auiDropdown]',
standalone: true,
}]
}], () => [{ type: i0.ElementRef }], null); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZTJlLWF0dHJpYnV0ZS1iaW5kaW5nLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9lZmZlY3QtZGlyZWN0aXZlL2UyZS1hdHRyaWJ1dGUtYmluZGluZy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUVyRSw2QkFBNkI7QUFDN0IsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFO0lBQ3pDLElBQUksQ0FBQyxLQUFLO1FBQUUsT0FBTyxFQUFFLENBQUM7SUFDdEIsT0FBTyxLQUFLO1NBQ1QsVUFBVSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7U0FDcEIsVUFBVSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7U0FDcEIsVUFBVSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUM7U0FDckIsVUFBVSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUM7U0FDbkIsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLDRDQUE0QztBQUMvRCxDQUFDLENBQUM7QUFFRixNQUFNLGtCQUFrQixHQUFHLENBQUMsT0FBb0IsRUFBRSxJQUFhLEVBQUUsRUFBRTtJQUNqRSxRQUFRLElBQUksRUFBRSxDQUFDO1FBQ2IsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ2IsT0FBTyxDQUNMLE9BQU8sQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUM7Z0JBQ3ZDLE9BQU8sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO2dCQUM1QixPQUFPLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQztnQkFDbkMsRUFBRSxDQUNILENBQUM7UUFDSixDQUFDO1FBQ0QsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUNSLE9BQU8sT0FBTyxDQUFDLFdBQVcsQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUMsQ0FBQztBQUVGLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxFQUFlLEVBQUUsRUFBRTtJQUM3QyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDO0lBQzNCLE1BQU0sV0FBVyxHQUFHLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksZ0JBQWdCLENBQUMsR0FBRyxNQUFNLElBQUksV0FBVyxFQUFFLENBQUMsQ0FBQztBQUN6RSxDQUFDLENBQUM7QUFRRixNQUFNLE9BQU8sNEJBQTRCO0lBQ3ZDLFlBQTZCLEVBQTJCO1FBQTNCLE9BQUUsR0FBRixFQUFFLENBQXlCO0lBQUcsQ0FBQztJQUU1RCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxhQUFhO1FBQ1gsTUFBTSxXQUFXLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM5RCxJQUFJLFdBQVcsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDdkQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksR0FBRyxXQUFXLENBQUM7UUFDbkQsQ0FBQztJQUNILENBQUM7NkZBWlUsNEJBQTRCO29FQUE1Qiw0QkFBNEI7O2lGQUE1Qiw0QkFBNEI7Y0FOeEMsU0FBUztlQUFDO2dCQUNULFFBQVE7Z0JBQ04sOERBQThEO2dCQUM5RCx5REFBeUQ7Z0JBQzNELFVBQVUsRUFBRSxJQUFJO2FBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8vIGJhc2UgZnJvbSBhbGF1ZGEtdWkgZXhwb3J0XG5jb25zdCBmb3JtYXREYXRhVGVzdElkID0gKGlucHV0OiBzdHJpbmcpID0+IHtcbiAgaWYgKCFpbnB1dCkgcmV0dXJuICcnO1xuICByZXR1cm4gaW5wdXRcbiAgICAucmVwbGFjZUFsbCgnXFxyJywgJycpXG4gICAgLnJlcGxhY2VBbGwoJ1xcbicsICcnKVxuICAgIC5yZXBsYWNlQWxsKCdcXFxccycsICcnKVxuICAgIC5yZXBsYWNlQWxsKCcgJywgJycpXG4gICAgLnNsaWNlKDAsIDYzKTsgLy8g6YG/5YWN5pyJ5LqbdGV4dC1jb250ZW50IOWkqumVv+S4jeWIqeS6jumYheivu++8jOS6p+eUn+eahOWJr+S9nOeUqOS4jeS8muW9seWTjeWvueWFg+e0oOeahOivhuWIq1xufTtcblxuY29uc3QgZ2V0RGF0YVRleHRDb250ZW50ID0gKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCB0eXBlPzogc3RyaW5nKSA9PiB7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgJ0lOUFVUJzoge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2Zvcm1jb250cm9sbmFtZScpIHx8XG4gICAgICAgIGVsZW1lbnQuZ2V0QXR0cmlidXRlKCduYW1lJykgfHxcbiAgICAgICAgZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3BsYWNlaG9sZGVyJykgfHxcbiAgICAgICAgJydcbiAgICAgICk7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHJldHVybiBlbGVtZW50LnRleHRDb250ZW50O1xuICAgIH1cbiAgfVxufTtcblxuY29uc3QgZ2VuZXJhdGVEYXRhVGVzdElkID0gKGVpOiBIVE1MRWxlbWVudCkgPT4ge1xuICBjb25zdCBwcmVmaXggPSBlaS5ub2RlTmFtZTtcbiAgY29uc3QgdGV4dENvbnRlbnQgPSBnZXREYXRhVGV4dENvbnRlbnQoZWkpO1xuICByZXR1cm4gZWkuZGF0YXNldC50ZXN0IHx8IGZvcm1hdERhdGFUZXN0SWQoYCR7cHJlZml4fS8ke3RleHRDb250ZW50fWApO1xufTtcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOlxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLXNlbGVjdG9yXG4gICAgJ1tjbGlja10sW3JvdXRlckxpbmtdLGFbaHJlZl0sW2F1aVRvb2x0aXBdLFthdWlEcm9wZG93bl0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBFMmVBdHRyaWJ1dGVCaW5kaW5nRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZWw6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSB7fVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldERhdGFUZXN0SWQoKTtcbiAgfVxuXG4gIHNldERhdGFUZXN0SWQoKSB7XG4gICAgY29uc3QgY3VycmVudEF0dHIgPSBnZW5lcmF0ZURhdGFUZXN0SWQodGhpcy5lbC5uYXRpdmVFbGVtZW50KTtcbiAgICBpZiAoY3VycmVudEF0dHIgIT09IHRoaXMuZWwubmF0aXZlRWxlbWVudC5kYXRhc2V0LnRlc3QpIHtcbiAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5kYXRhc2V0LnRlc3QgPSBjdXJyZW50QXR0cjtcbiAgICB9XG4gIH1cbn1cbiJdfQ==