UNPKG

@alauda-fe/common

Version:

Alauda frontend team common codes.

57 lines 6.71 kB
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==