ngx-tagify
Version:
Angular library that wraps @yaireo/tagify
1 lines • 19.7 kB
Source Map (JSON)
{"version":3,"file":"ngx-tagify.mjs","sources":["../../../projects/ngx-tagify/src/lib/tagify.service.ts","../../../projects/ngx-tagify/src/lib/tagify.component.ts","../../../projects/ngx-tagify/src/lib/tagify.module.ts","../../../projects/ngx-tagify/src/public-api.ts","../../../projects/ngx-tagify/src/ngx-tagify.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport Tagify, { BaseTagData, TagData } from '@yaireo/tagify';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TagifyService {\n private tagifyMap = new Map<string, Tagify<any>>();\n\n /**\n * Adds a tagify instance, so it is available via service. Used internally.\n */\n add(name: string, tagify: Tagify<any>): void {\n if (this.tagifyMap.get(name)) {\n console.warn(`There already exists a tagify instance with name ${name}!`);\n return;\n }\n this.tagifyMap.set(name, tagify);\n }\n\n /**\n * Get tagify instance for full access to tagify API.\n */\n get<T extends BaseTagData = TagData>(name: string): Tagify<T> | undefined {\n return this.tagifyMap.get(name) as Tagify<T>;\n }\n\n /**\n * Removes a tagify instance from service. Used internally.\n */\n remove(name: string): void {\n this.tagifyMap.delete(name);\n }\n}\n","import {\n AfterViewInit,\n Component,\n effect,\n ElementRef,\n forwardRef,\n inject,\n input,\n OnDestroy,\n output,\n viewChild,\n} from '@angular/core';\nimport { NgClass } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n asyncScheduler,\n BehaviorSubject,\n fromEvent,\n Observable,\n pairwise,\n Subject,\n} from 'rxjs';\nimport { takeUntil, throttleTime } from 'rxjs/operators';\nimport Tagify, { BaseTagData, TagData, TagifySettings } from '@yaireo/tagify';\nimport { TagifyService } from './tagify.service';\nimport { toObservable } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'tagify',\n imports: [NgClass],\n template: `<input [ngClass]=\"inputClass()\" #inputRef />\n <span style=\"display: none\"><ng-content></ng-content></span>`,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TagifyComponent),\n multi: true,\n },\n ],\n})\nexport class TagifyComponent<T extends BaseTagData = TagData>\n implements AfterViewInit, ControlValueAccessor, OnDestroy\n{\n private valueData: string | T[];\n private valueType = 'undefined';\n private onChange: any = Function.prototype;\n private onTouched: any = Function.prototype;\n\n private unsubscribe$ = new Subject<void>();\n private value$ = new BehaviorSubject<string | T[]>(null);\n private tagify: Tagify<T>;\n private skip = false;\n\n private tagifyService = inject(TagifyService);\n private element = inject(ElementRef<HTMLElement>);\n\n inputRef = viewChild<ElementRef<HTMLInputElement>>('inputRef');\n\n settings = input<TagifySettings<T>>({});\n\n name = input<string>('');\n\n whitelist = input<Observable<string[] | T[]>>();\n\n inputClass = input<string>('');\n\n readonly = input<boolean>(false);\n\n disabled = input<boolean>(false);\n\n get value(): string | T[] {\n return this.valueData;\n }\n\n set value(v: string | T[]) {\n if (v !== this.valueData) {\n this.valueData = v;\n this.onChange(v);\n }\n }\n\n add = output<{ tags: T[]; added: T }>();\n remove = output<T[]>();\n tInput = output<string>();\n\n constructor() {\n effect(() => {\n const readonly = this.readonly();\n if (this.tagify) {\n this.tagify.setReadonly(readonly);\n }\n });\n effect(() => {\n const disabled = this.disabled();\n if (this.tagify) {\n this.tagify.setDisabled(disabled);\n }\n });\n toObservable(this.inputClass)\n .pipe(pairwise())\n .subscribe(([oldValue, newValue]) => {\n this.setTagsClass(oldValue, newValue);\n });\n }\n\n ngAfterViewInit(): void {\n const settings = this.settings();\n settings.callbacks = settings.callbacks || {};\n\n if (!Object.prototype.hasOwnProperty.call(settings.callbacks, 'add')) {\n settings.callbacks.add = () =>\n this.add.emit({\n tags: this.tagify.value,\n added: this.tagify.value[this.tagify.value.length - 1],\n });\n }\n\n if (!Object.prototype.hasOwnProperty.call(settings.callbacks, 'remove')) {\n settings.callbacks.remove = () => this.remove.emit(this.tagify.value);\n }\n\n const innerText = this.element.nativeElement.textContent;\n\n this.tagify = new Tagify(this.inputRef().nativeElement, settings);\n\n // add to service if name is provided\n if (this.name().length) {\n this.tagifyService.add(this.name(), this.tagify);\n }\n\n this.tagify.setReadonly(this.readonly());\n this.tagify.setDisabled(this.disabled());\n\n // if there is some text inside component, load this value and skip first change check\n if (innerText.length) {\n this.tagify.loadOriginalValues(innerText);\n this.skip = true;\n setTimeout(() => {\n this.setValue();\n });\n }\n\n // listen to value changes from outside\n this.value$.pipe(takeUntil(this.unsubscribe$)).subscribe((tags) => {\n if (tags === null) return;\n\n if (this.skip) {\n this.skip = false;\n return;\n }\n\n if (this.valueType === 'undefined') {\n this.valueType = typeof tags;\n }\n\n // if string is passed, e.g. via reactive forms\n if (typeof tags === 'string') {\n this.tagify.loadOriginalValues(tags);\n setTimeout(() => {\n this.setValue();\n });\n return;\n }\n\n // add all tags (already existing tags will be skipped\n this.tagify.addTags(tags, false, true);\n\n // remove all tags that are not part of value anymore\n this.tagify.value.forEach((v) => {\n if (!tags.find((t) => t.value === v.value)) {\n // somehow removeTags() with string parameter doesn't always find the tag element\n // this is a workaround for finding the right tag element\n const tagElm = this.tagify\n .getTagElms()\n .find(\n (el) =>\n el.attributes.getNamedItem('value').textContent === v.value,\n );\n this.tagify.removeTags(tagElm);\n }\n });\n });\n\n // listen to tagify events\n this.tagify.on('input', (e) => {\n const value = 'value' in e.detail ? e.detail.value : e.detail.textContent;\n this.tInput.emit(value);\n if (this.valueType === 'string' && this.tagify.settings.mode === 'mix') {\n this.value = this.tagify.getMixedTagsAsString();\n }\n });\n\n fromEvent(this.tagify, 'change')\n .pipe(\n // throttle used to reduce number of value changes when adding/removing a bunch of tags\n throttleTime(0, asyncScheduler, { leading: false, trailing: true }),\n takeUntil(this.unsubscribe$),\n )\n .subscribe(() => {\n this.setValue();\n });\n\n // listen to suggestions updates\n this.whitelist()\n ?.pipe(takeUntil(this.unsubscribe$))\n .subscribe((list) => {\n this.tagify.settings.whitelist = list;\n });\n }\n\n writeValue(tags: string | T[]) {\n this.value$.next(tags);\n }\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n private setValue(): void {\n if (this.valueType === 'string') {\n if (this.tagify.settings.mode === 'mix') {\n this.value = this.tagify.getMixedTagsAsString();\n } else {\n this.value = this.tagify.DOM.originalInput.value;\n }\n } else {\n this.value = this.tagify.value.slice();\n }\n }\n\n /**\n * Tagify creates a `tags` element to which the classes of the `input` element are applied.\n * Changes of `inputClass` are applied automatically to the `input` element, but have to be\n * manually applied to the `tags` element.\n */\n private setTagsClass(oldClass: string, newClass: string): void {\n const tagsElement = this.element.nativeElement.querySelector('tags');\n if (tagsElement) {\n tagsElement.classList.remove(...oldClass.split(/\\s+/));\n tagsElement.classList.add(...newClass.split(/\\s+/));\n }\n }\n\n ngOnDestroy(): void {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n\n this.tagify.destroy();\n\n const instanceName = this.name();\n if (instanceName.length) {\n this.tagifyService.remove(instanceName);\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { TagifyComponent } from './tagify.component';\n\n@NgModule({\n imports: [TagifyComponent],\n exports: [TagifyComponent],\n})\nexport class TagifyModule {}\n","/*\n * Public API Surface of ngx-tagify\n */\nimport Tagify, { TagData, TagifySettings } from '@yaireo/tagify';\n\nexport { Tagify, TagData, TagifySettings };\nexport * from './lib/tagify.service';\nexport * from './lib/tagify.component';\nexport * from './lib/tagify.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}