dropdown.directive.mjs 5.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import { Directive, HostListener, Input } from '@angular/core';
  2. import * as i0 from "@angular/core";
  3. export class DropdownDirective {
  4. constructor(
  5. //private element: ElementRef,
  6. renderer) {
  7. this.renderer = renderer;
  8. this.targetId = '';
  9. this.isVisible = false;
  10. }
  11. onBlur() {
  12. this.close(document.getElementById(this.targetId));
  13. }
  14. onClick() {
  15. this.toggle(document.getElementById(this.targetId));
  16. }
  17. toggle(element) {
  18. this.isVisible = !this.isVisible;
  19. this.renderer.addClass(element, this.isVisible ? 'block' : 'hidden');
  20. this.renderer.removeClass(element, this.isVisible ? 'hidden' : 'block');
  21. }
  22. close(element) {
  23. this.isVisible = false;
  24. this.renderer.addClass(element, 'hidden');
  25. this.renderer.removeClass(element, 'block');
  26. }
  27. static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: DropdownDirective, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
  28. static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.2", type: DropdownDirective, isStandalone: true, selector: "[ctDropdown]", inputs: { targetId: "targetId" }, host: { listeners: { "blur": "onBlur()", "focusout": "onBlur()", "click": "onClick()" } }, ngImport: i0 }); }
  29. }
  30. i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: DropdownDirective, decorators: [{
  31. type: Directive,
  32. args: [{
  33. selector: '[ctDropdown]',
  34. standalone: true,
  35. }]
  36. }], ctorParameters: () => [{ type: i0.Renderer2 }], propDecorators: { targetId: [{
  37. type: Input,
  38. args: [{ required: true }]
  39. }], onBlur: [{
  40. type: HostListener,
  41. args: ['blur']
  42. }, {
  43. type: HostListener,
  44. args: ['focusout']
  45. }], onClick: [{
  46. type: HostListener,
  47. args: ['click']
  48. }] } });
  49. //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2lyY2xldG9uZS9zcmMvbGliL2RpcmVjdGl2ZXMvZHJvcGRvd24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLGVBQWUsQ0FBQzs7QUFNMUUsTUFBTSxPQUFPLGlCQUFpQjtJQUs1QjtJQUNFLDhCQUE4QjtJQUNiLFFBQW1CO1FBQW5CLGFBQVEsR0FBUixRQUFRLENBQVc7UUFOWCxhQUFRLEdBQUcsRUFBRSxDQUFDO1FBRXpDLGNBQVMsR0FBRyxLQUFLLENBQUM7SUFLZixDQUFDO0lBSUosTUFBTTtRQUNKLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFnQixDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUdELE9BQU87UUFDTCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBZ0IsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxNQUFNLENBQUMsT0FBb0I7UUFDekIsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDakMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFvQjtRQUN4QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzlDLENBQUM7OEdBL0JVLGlCQUFpQjtrR0FBakIsaUJBQWlCOzsyRkFBakIsaUJBQWlCO2tCQUo3QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxjQUFjO29CQUN4QixVQUFVLEVBQUUsSUFBSTtpQkFDakI7OEVBRTRCLFFBQVE7c0JBQWxDLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQVd6QixNQUFNO3NCQUZMLFlBQVk7dUJBQUMsTUFBTTs7c0JBQ25CLFlBQVk7dUJBQUMsVUFBVTtnQkFNeEIsT0FBTztzQkFETixZQUFZO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbY3REcm9wZG93bl0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBEcm9wZG93bkRpcmVjdGl2ZSB7XG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIHRhcmdldElkID0gJyc7XG5cbiAgaXNWaXNpYmxlID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgLy9wcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSByZWFkb25seSByZW5kZXJlcjogUmVuZGVyZXIyXG4gICkge31cblxuICBASG9zdExpc3RlbmVyKCdibHVyJylcbiAgQEhvc3RMaXN0ZW5lcignZm9jdXNvdXQnKVxuICBvbkJsdXIoKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLnRhcmdldElkKSBhcyBIVE1MRWxlbWVudCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gIG9uQ2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy50b2dnbGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy50YXJnZXRJZCkgYXMgSFRNTEVsZW1lbnQpO1xuICB9XG5cbiAgdG9nZ2xlKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgdGhpcy5pc1Zpc2libGUgPSAhdGhpcy5pc1Zpc2libGU7XG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhlbGVtZW50LCB0aGlzLmlzVmlzaWJsZSA/ICdibG9jaycgOiAnaGlkZGVuJyk7XG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhlbGVtZW50LCB0aGlzLmlzVmlzaWJsZSA/ICdoaWRkZW4nIDogJ2Jsb2NrJyk7XG4gIH1cblxuICBjbG9zZShlbGVtZW50OiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIHRoaXMuaXNWaXNpYmxlID0gZmFsc2U7XG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhlbGVtZW50LCAnaGlkZGVuJyk7XG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhlbGVtZW50LCAnYmxvY2snKTtcbiAgfVxufVxuIl19