diff --git a/src/app/view/admin/components/editable-tag/editable-tag.component.ts b/src/app/view/admin/components/editable-tag/editable-tag.component.ts new file mode 100644 index 0000000..89d185f --- /dev/null +++ b/src/app/view/admin/components/editable-tag/editable-tag.component.ts @@ -0,0 +1,71 @@ +import {Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild} from '@angular/core'; + +@Component({ + selector: 'editable-tag', + template: ` + + + + + + `, + styles: [`.editable-tag { + background: rgb(255, 255, 255); + border-style: none; + }`] +}) +export class EditableTagComponent implements OnInit { + + constructor() { + } + + inputVisible = false; + inputValue = ''; + @ViewChild('inputElement', {static: false}) inputElement?: ElementRef; + + @Output() valueChange = new EventEmitter(); + @Input() color: string; + private doubleClickInfo = { + date: null, + }; + + ngOnInit(): void { + } + + showInput(doubleClick: boolean): void { + if (doubleClick) { + if (!this.doubleClickInfo.date) { + this.doubleClickInfo.date = new Date().getTime(); + return + } + if (new Date().getTime() - this.doubleClickInfo.date < 200) { + this.inputVisible = true; + setTimeout(() => { + this.inputElement?.nativeElement.focus(); + }, 10); + } + this.doubleClickInfo.date = new Date().getTime(); + } else { + this.inputVisible = true; + setTimeout(() => { + this.inputElement?.nativeElement.focus(); + }, 10); + } + } + + handleInputConfirm(): void { + this.valueChange.emit(this.inputValue) + this.inputValue = ''; + this.inputVisible = false; + } + +} diff --git a/src/app/view/admin/components/editable-tag/editable-tag.module.ts b/src/app/view/admin/components/editable-tag/editable-tag.module.ts new file mode 100644 index 0000000..e3cd5cd --- /dev/null +++ b/src/app/view/admin/components/editable-tag/editable-tag.module.ts @@ -0,0 +1,22 @@ +import {NgModule} from '@angular/core'; +import {CommonModule} from '@angular/common'; +import {EditableTagComponent} from './editable-tag.component'; +import {NzIconModule, NzInputModule, NzTagModule} from 'ng-zorro-antd'; +import {FormsModule} from '@angular/forms'; + + +@NgModule({ + declarations: [EditableTagComponent], + exports: [ + EditableTagComponent + ], + imports: [ + CommonModule, + NzTagModule, + FormsModule, + NzInputModule, + NzIconModule + ] +}) +export class EditableTagModule { +}