@koobiq/components 20.0.0 → 20.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/accordion/accordion-trigger.component.scss +0 -18
- package/accordion/accordion.component.scss +9 -2
- package/actions-panel/index.d.ts +1 -0
- package/alert/_alert-theme.scss +0 -4
- package/alert/alert-tokens.scss +4 -4
- package/app-switcher/app-switcher-dropdown-app.scss +2 -0
- package/breadcrumbs/breadcrumbs.scss +4 -0
- package/breadcrumbs/index.d.ts +2 -1
- package/button/button-group.scss +42 -2
- package/button-toggle/button-toggle.scss +23 -0
- package/button-toggle/index.d.ts +3 -1
- package/checkbox/checkbox.scss +5 -4
- package/clamped-text/index.d.ts +1 -0
- package/core/index.d.ts +402 -13
- package/core/styles/common/_animation.scss +4 -0
- package/core/styles/theming/_components-theming.scss +1 -1
- package/core/styles/theming/_scrollbar-theme.scss +4 -0
- package/datepicker/_datepicker-theme.scss +1 -1
- package/datepicker/datepicker-toggle.scss +3 -3
- package/dl/index.d.ts +1 -0
- package/dropdown/dropdown.scss +2 -2
- package/fesm2022/koobiq-components-accordion.mjs +4 -4
- package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
- package/fesm2022/koobiq-components-actions-panel.mjs +14 -5
- package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -1
- package/fesm2022/koobiq-components-alert.mjs +2 -2
- package/fesm2022/koobiq-components-alert.mjs.map +1 -1
- package/fesm2022/koobiq-components-app-switcher.mjs +6 -6
- package/fesm2022/koobiq-components-app-switcher.mjs.map +1 -1
- package/fesm2022/koobiq-components-breadcrumbs.mjs +6 -4
- package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
- package/fesm2022/koobiq-components-button-toggle.mjs +9 -6
- package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-button.mjs +4 -4
- package/fesm2022/koobiq-components-button.mjs.map +1 -1
- package/fesm2022/koobiq-components-checkbox.mjs +2 -2
- package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
- package/fesm2022/koobiq-components-clamped-text.mjs +4 -0
- package/fesm2022/koobiq-components-clamped-text.mjs.map +1 -1
- package/fesm2022/koobiq-components-code-block.mjs +4 -0
- package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
- package/fesm2022/koobiq-components-core.mjs +449 -112
- package/fesm2022/koobiq-components-core.mjs.map +1 -1
- package/fesm2022/koobiq-components-datepicker.mjs +5 -5
- package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-dl.mjs +3 -2
- package/fesm2022/koobiq-components-dl.mjs.map +1 -1
- package/fesm2022/koobiq-components-dropdown.mjs +8 -13
- package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-file-upload.mjs +33 -22
- package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
- package/fesm2022/koobiq-components-filter-bar.mjs +974 -758
- package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-flag.mjs +66 -0
- package/fesm2022/koobiq-components-flag.mjs.map +1 -0
- package/fesm2022/koobiq-components-form-field.mjs +2 -2
- package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
- package/fesm2022/koobiq-components-icon.mjs +2 -2
- package/fesm2022/koobiq-components-icon.mjs.map +1 -1
- package/fesm2022/koobiq-components-inline-edit.mjs +27 -6
- package/fesm2022/koobiq-components-inline-edit.mjs.map +1 -1
- package/fesm2022/koobiq-components-list.mjs +39 -20
- package/fesm2022/koobiq-components-list.mjs.map +1 -1
- package/fesm2022/koobiq-components-loader-overlay.mjs +2 -2
- package/fesm2022/koobiq-components-loader-overlay.mjs.map +1 -1
- package/fesm2022/koobiq-components-modal.mjs +9 -5
- package/fesm2022/koobiq-components-modal.mjs.map +1 -1
- package/fesm2022/koobiq-components-navbar.mjs +10 -9
- package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-notification-center.mjs +178 -19
- package/fesm2022/koobiq-components-notification-center.mjs.map +1 -1
- package/fesm2022/koobiq-components-overflow-items.mjs +12 -4
- package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
- package/fesm2022/koobiq-components-popover.mjs +4 -4
- package/fesm2022/koobiq-components-popover.mjs.map +1 -1
- package/fesm2022/koobiq-components-progress-bar.mjs +2 -2
- package/fesm2022/koobiq-components-progress-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-progress-spinner.mjs +2 -2
- package/fesm2022/koobiq-components-progress-spinner.mjs.map +1 -1
- package/fesm2022/koobiq-components-radio.mjs +3 -7
- package/fesm2022/koobiq-components-radio.mjs.map +1 -1
- package/fesm2022/koobiq-components-select.mjs +38 -16
- package/fesm2022/koobiq-components-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidebar.mjs +4 -0
- package/fesm2022/koobiq-components-sidebar.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidepanel.mjs +3 -3
- package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
- package/fesm2022/koobiq-components-skeleton.mjs +2 -2
- package/fesm2022/koobiq-components-skeleton.mjs.map +1 -1
- package/fesm2022/koobiq-components-split-button.mjs +2 -2
- package/fesm2022/koobiq-components-split-button.mjs.map +1 -1
- package/fesm2022/koobiq-components-splitter.mjs +6 -2
- package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
- package/fesm2022/koobiq-components-table.mjs +8 -6
- package/fesm2022/koobiq-components-table.mjs.map +1 -1
- package/fesm2022/koobiq-components-tabs.mjs +19 -7
- package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
- package/fesm2022/koobiq-components-tags.mjs +7 -0
- package/fesm2022/koobiq-components-tags.mjs.map +1 -1
- package/fesm2022/koobiq-components-textarea.mjs +7 -14
- package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
- package/fesm2022/koobiq-components-time-range.mjs +4 -4
- package/fesm2022/koobiq-components-time-range.mjs.map +1 -1
- package/fesm2022/koobiq-components-timezone.mjs +6 -0
- package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
- package/fesm2022/koobiq-components-title.mjs +132 -14
- package/fesm2022/koobiq-components-title.mjs.map +1 -1
- package/fesm2022/koobiq-components-toast.mjs +1 -1
- package/fesm2022/koobiq-components-toast.mjs.map +1 -1
- package/fesm2022/koobiq-components-toggle.mjs +2 -2
- package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-tooltip.mjs +50 -2
- package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree-select.mjs +44 -11
- package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree.mjs +67 -41
- package/fesm2022/koobiq-components-tree.mjs.map +1 -1
- package/fesm2022/koobiq-components-username.mjs +16 -3
- package/fesm2022/koobiq-components-username.mjs.map +1 -1
- package/file-upload/file-upload-tokens.scss +1 -0
- package/file-upload/index.d.ts +10 -7
- package/filter-bar/_filter-bar-theme.scss +86 -0
- package/filter-bar/filter-bar-tokens.scss +6 -0
- package/filter-bar/filter-bar.scss +10 -4
- package/filter-bar/filter-refresher.scss +1 -1
- package/filter-bar/filters.scss +23 -19
- package/filter-bar/index.d.ts +707 -338
- package/filter-bar/pipes/base-pipe.scss +14 -35
- package/filter-bar/pipes/pipe-date.scss +20 -14
- package/filter-bar/pipes/pipe-multi-tree-select.scss +5 -3
- package/filter-bar/pipes/pipe-multiselect.scss +5 -3
- package/filter-bar/pipes/pipe-readonly.scss +4 -13
- package/filter-bar/pipes/pipe-select.scss +3 -1
- package/filter-bar/pipes/pipe-tree-select.scss +3 -1
- package/flag/flag.scss +53 -0
- package/flag/index.d.ts +44 -0
- package/icon/icon-item-tokens.scss +1 -1
- package/inline-edit/index.d.ts +5 -0
- package/inline-edit/inline-edit.scss +7 -7
- package/link/link-tokens.scss +2 -2
- package/list/index.d.ts +11 -2
- package/loader-overlay/loader-overlay-tokens.scss +1 -1
- package/modal/_modal-animation.scss +6 -6
- package/modal/_modal-theme.scss +5 -0
- package/modal/index.d.ts +3 -1
- package/modal/modal.scss +15 -0
- package/navbar/index.d.ts +1 -0
- package/navbar/navbar-item.scss +9 -0
- package/notification-center/_notification-center-theme.scss +2 -1
- package/notification-center/index.d.ts +88 -3
- package/notification-center/notification-center.scss +42 -4
- package/notification-center/notification-item.scss +3 -2
- package/overflow-items/index.d.ts +1 -0
- package/package.json +7 -3
- package/prebuilt-themes/dark-theme.css +1 -1
- package/prebuilt-themes/light-theme.css +1 -1
- package/prebuilt-themes/theme.css +1 -1
- package/progress-bar/progress-bar.scss +4 -0
- package/progress-spinner/progress-spinner.scss +5 -1
- package/radio/index.d.ts +1 -5
- package/radio/radio.scss +18 -4
- package/schematics/collection.json +5 -0
- package/schematics/migrations/filter-bar-signals/README.md +66 -0
- package/schematics/migrations/filter-bar-signals/data.js +72 -0
- package/schematics/migrations/filter-bar-signals/index.js +316 -0
- package/schematics/migrations/filter-bar-signals/schema.json +20 -0
- package/schematics/migrations.json +5 -0
- package/schematics/ng-add/index.js +1 -1
- package/select/index.d.ts +10 -2
- package/sidebar/index.d.ts +1 -0
- package/skeleton/skeleton.scss +4 -0
- package/split-button/_split-button-theme.scss +2 -2
- package/splitter/_splitter-theme.scss +2 -2
- package/splitter/index.d.ts +1 -0
- package/table/_table-theme.scss +4 -0
- package/table/index.d.ts +3 -2
- package/tabs/index.d.ts +2 -0
- package/tabs/tab-header.scss +1 -0
- package/tabs/tabs-tokens.scss +1 -1
- package/textarea/index.d.ts +0 -1
- package/time-range/time-range.scss +0 -8
- package/timepicker/timepicker.scss +2 -2
- package/timezone/index.d.ts +1 -0
- package/title/index.d.ts +92 -2
- package/tooltip/index.d.ts +51 -3
- package/tree/_tree-theme.scss +2 -7
- package/tree/index.d.ts +19 -4
- package/tree/toggle.scss +5 -0
- package/tree/tree-option.scss +0 -4
- package/tree-select/_tree-select-theme.scss +1 -1
- package/tree-select/index.d.ts +9 -2
- package/username/index.d.ts +20 -2
|
@@ -950,6 +950,8 @@ class KbqTagList {
|
|
|
950
950
|
// it back to the first tag when the user tabs out.
|
|
951
951
|
this.keyManager.tabOut.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {
|
|
952
952
|
this._tabIndex = -1;
|
|
953
|
+
// Direct DOM write since the binding update is deferred with eventCoalescing.
|
|
954
|
+
this.elementRef.nativeElement.tabIndex = -1;
|
|
953
955
|
setTimeout(() => {
|
|
954
956
|
this._tabIndex = this.userTabIndex || 0;
|
|
955
957
|
this.changeDetectorRef.markForCheck();
|
|
@@ -1472,6 +1474,11 @@ class KbqTagInput {
|
|
|
1472
1474
|
return;
|
|
1473
1475
|
}
|
|
1474
1476
|
if (isSeparatorKey) {
|
|
1477
|
+
if (event.keyCode === ENTER$1 &&
|
|
1478
|
+
this.autocompleteTrigger?.panelOpen &&
|
|
1479
|
+
this.autocompleteTrigger?.activeOption) {
|
|
1480
|
+
return;
|
|
1481
|
+
}
|
|
1475
1482
|
this.emitTagEnd();
|
|
1476
1483
|
event.preventDefault();
|
|
1477
1484
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koobiq-components-tags.mjs","sources":["../../../packages/components/tags/tag-default-options.ts","../../../packages/components/tags/tag.component.ts","../../../packages/components/tags/tag-list.component.ts","../../../packages/components/tags/tag-input.ts","../../../packages/components/tags/tag.module.ts","../../../packages/components/tags/koobiq-components-tags.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { KbqTagSeparator } from './tag-input';\n\n/** Default options, for the chips module, that can be overridden. */\nexport interface KbqTagsDefaultOptions {\n /** The list of key codes that will trigger a chipEnd event. */\n separatorKeyCodes: number[];\n separators?: { [key: number]: KbqTagSeparator };\n addOnPaste?: boolean;\n}\n\n/** Injection token to be used to override the default options for the chips module. */\nexport const KBQ_TAGS_DEFAULT_OPTIONS = new InjectionToken<KbqTagsDefaultOptions>('kbq-tags-default-options');\n","import { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\nimport { CdkDrag } from '@angular/cdk/drag-drop';\nimport { BACKSPACE, DELETE, ENTER, ESCAPE, F2, SPACE } from '@angular/cdk/keycodes';\nimport {\n AfterContentInit,\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n contentChild,\n contentChildren as contentChildren_1,\n DestroyRef,\n Directive,\n ElementRef,\n forwardRef,\n inject,\n Input,\n input,\n OnDestroy,\n output,\n signal,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n hasModifierKey,\n IFocusableOption,\n isNull,\n KBQ_TITLE_TEXT_REF,\n KbqColorDirective,\n KbqComponentColors,\n KbqFieldSizingContent,\n KbqTitleTextRef\n} from '@koobiq/components/core';\nimport { KbqIcon } from '@koobiq/components/icon';\nimport { Subject } from 'rxjs';\nimport { KbqTagList } from './tag-list.component';\n\n/**\n * Event object emitted by KbqTag.\n */\nexport type KbqTagEvent = {\n tag: KbqTag;\n};\n\n/**\n * Event object emitted by KbqTag when the tag is edited.\n */\nexport class KbqTagEditChange {\n constructor(\n public readonly tag: KbqTag,\n public readonly type: 'start' | 'submit' | 'cancel',\n public readonly reason: string\n ) {}\n}\n\n/** Event object emitted by KbqTag when selected or deselected. */\nexport class KbqTagSelectionChange {\n constructor(\n public source: KbqTag,\n public selected: boolean,\n public isUserInput = false\n ) {}\n}\n\n/**\n * Event object emitted when the KbqTag is focused.\n */\nexport type KbqTagFocusEvent = KbqTagEvent & {\n origin: FocusOrigin;\n};\n\nconst TAG_ATTRIBUTE_NAMES = ['kbq-basic-tag'];\n\nconst getTagEditInputMissingError = (): Error => {\n return Error('Editable kbq-tag must contain a KbqTagEditInput.');\n};\n\n/**\n * Object passed to the drag data event when a tag is being dragged.\n *\n * @docs-private\n */\nexport type KbqTagDragData = KbqTagEvent;\n\n/**\n * Dummy directive to add CSS class to tag avatar.\n * @docs-private\n */\n@Directive({\n selector: 'kbq-tag-avatar, [kbqTagAvatar]',\n host: { class: 'kbq-tag-avatar' }\n})\nexport class KbqTagAvatar {}\n\n/**\n * Dummy directive to add CSS class to tag trailing icon.\n * @docs-private\n */\n@Directive({\n selector: 'kbq-tag-trailing-icon, [kbqTagTrailingIcon]',\n host: { class: 'kbq-tag-trailing-icon' }\n})\nexport class KbqTagTrailingIcon {}\n\n/**\n * Directive to add submit behavior for the editable tag.\n */\n@Directive({\n selector: '[kbqTagEditSubmit]',\n host: {\n class: 'kbq-tag-edit-submit',\n '[attr.tabindex]': '-1',\n\n '(click)': 'tag.submitEditing(\"click\")'\n },\n exportAs: 'kbqTagEditSubmit'\n})\nexport class KbqTagEditSubmit {\n /** @docs-private */\n protected readonly tag = inject(KbqTag);\n}\n\n/**\n * Directive to add input behavior for the editable tag.\n */\n@Directive({\n selector: '[kbqTagEditInput]',\n host: {\n class: 'kbq-tag-edit-input',\n\n '(keydown)': 'handleKeydown($event)',\n '(click)': 'handleClick($event)'\n },\n hostDirectives: [KbqFieldSizingContent],\n exportAs: 'kbqTagEditInput'\n})\nexport class KbqTagEditInput {\n private readonly tag = inject(KbqTag);\n\n /** @docs-private */\n protected handleClick(event: MouseEvent): void {\n event.stopPropagation();\n }\n\n /** @docs-private */\n protected handleKeydown(event: KeyboardEvent): void {\n switch (event.keyCode) {\n case ESCAPE: {\n event.stopPropagation();\n this.tag.cancelEditing('escape');\n break;\n }\n case ENTER: {\n event.stopPropagation();\n this.tag.submitEditing('enter');\n break;\n }\n\n // We should prevent KbqTag from receiving these keydown events\n case BACKSPACE:\n case SPACE:\n case DELETE: {\n event.stopPropagation();\n break;\n }\n\n default:\n }\n }\n}\n\n@Component({\n selector: 'kbq-tag, [kbq-tag], kbq-basic-tag, [kbq-basic-tag]',\n template: `\n <div class=\"kbq-tag__wrapper\">\n <ng-content select=\"[kbq-icon]:not([kbqTagRemove]):not([kbqTagEditSubmit])\" />\n <span #kbqTitleText class=\"kbq-tag__text\">\n @if (editing()) {\n <ng-content select=\"[kbqTagEditInput]\" />\n } @else {\n <ng-content />\n }\n </span>\n @if (editing()) {\n <ng-content select=\"[kbqTagEditSubmit]\" />\n } @else {\n @if (removable) {\n <ng-content select=\"[kbqTagRemove]\" />\n }\n }\n </div>\n `,\n styleUrls: ['./tag.scss'],\n providers: [{ provide: KBQ_TITLE_TEXT_REF, useExisting: KbqTag }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-tag',\n '[attr.tabindex]': 'tabindex',\n '[attr.disabled]': 'disabled || null',\n '[class.kbq-selected]': 'selected',\n '[class.kbq-tag-with-avatar]': 'avatar()',\n '[class.kbq-tag-with-icon]': 'contentChildren()',\n '[class.kbq-tag-with-trailing-icon]': 'trailingIcon() || removeIcon()',\n '[class.kbq-disabled]': 'disabled',\n '[class.kbq-tag_editable]': 'editable',\n '[class.kbq-tag_editing]': 'editing()',\n '[class.kbq-tag_removable]': 'removable',\n '[class.kbq-tag_selectable]': 'selectable',\n '[class.kbq-tag_draggable]': 'draggable',\n '(dblclick)': 'handleDblClick($event)',\n '(click)': 'handleClick($event)',\n '(keydown)': 'handleKeydown($event)'\n },\n hostDirectives: [CdkDrag],\n exportAs: 'kbqTag'\n})\nexport class KbqTag\n extends KbqColorDirective\n implements IFocusableOption, OnDestroy, KbqTitleTextRef, AfterContentInit, AfterViewInit\n{\n changeDetectorRef = inject(ChangeDetectorRef);\n\n private readonly focusMonitor = inject(FocusMonitor);\n private readonly tagList = inject(KbqTagList, { optional: true });\n private readonly drag: CdkDrag<KbqTagDragData> = inject(CdkDrag, { host: true });\n private readonly destroyRef = inject(DestroyRef);\n\n /** @docs-private */\n readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /**\n * Emits when the tag is focused.\n *\n * @docs-private\n */\n readonly onFocus = new Subject<KbqTagFocusEvent>();\n\n /**\n * Emits when the tag is blurred.\n *\n * @docs-private\n */\n readonly onBlur = new Subject<KbqTagEvent>();\n\n /** @docs-private */\n readonly nativeElement = this.elementRef.nativeElement;\n\n /**\n * Whether the tag has focus.\n *\n * @docs-private\n */\n hasFocus: boolean = false;\n\n /** Whether the tag is editable. */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input({ transform: booleanAttribute })\n get editable(): boolean {\n return this._editable ?? !!this.tagList?.editable();\n }\n\n set editable(value: boolean) {\n this._editable = value;\n }\n\n private _editable: boolean | undefined;\n\n /** Whether the tag edits can't be submitted. */\n readonly preventEditSubmit = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n private readonly editInputElementRef = contentChild(KbqTagEditInput, { read: ElementRef });\n\n /**\n * Emits event when the tag is edited.\n */\n readonly editChange = output<KbqTagEditChange>();\n\n /**\n * @docs-private\n */\n protected readonly editing = signal(false);\n\n /**\n * @docs-private\n */\n @ViewChild('kbqTitleText') readonly textElement: ElementRef<HTMLSpanElement>;\n\n readonly contentChildren = contentChildren_1(KbqIcon);\n\n /** The tag avatar */\n readonly avatar = contentChild(KbqTagAvatar);\n\n /** The tag's trailing icon. */\n readonly trailingIcon = contentChild(KbqTagTrailingIcon);\n\n /** The tag's remove toggler. */\n readonly removeIcon = contentChild(forwardRef(() => KbqTagRemove));\n\n /** Emitted when the tag is selected or deselected. */\n readonly selectionChange = output<KbqTagSelectionChange>();\n\n /** Emitted when the tag is destroyed and leaving the DOM. */\n readonly destroyed = output<KbqTagEvent>();\n\n /**\n * Emitted when a tag is to be removed.\n * Fires on programmatic and UI removal (click or keyboard).\n */\n readonly removed = output<KbqTagEvent>();\n\n /** Whether the tag is selected. */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input({ transform: booleanAttribute })\n get selected(): boolean {\n return this._selected;\n }\n\n set selected(value: boolean) {\n this.setSelectedState(value, { emitEvent: true });\n }\n\n private _selected: boolean = false;\n\n /** The value of the tag. Defaults to the content inside `<kbq-tag>` tags. */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get value(): any {\n return this._value ?? this.elementRef.nativeElement.textContent?.trim();\n }\n\n set value(value: any) {\n this._value = value;\n }\n\n private _value: any;\n\n /**\n * Whether the tag is selectable.\n */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input({ transform: booleanAttribute })\n get selectable(): boolean {\n return this._selectable || !!this.tagList?.selectable();\n }\n\n set selectable(value: boolean) {\n this._selectable = value;\n }\n\n private _selectable: boolean = false;\n\n /**\n * Determines whether the tag is removable.\n */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input({ transform: booleanAttribute })\n get removable(): boolean {\n return this._removable && (this.tagList?.removable ?? true);\n }\n\n set removable(value: boolean) {\n this._removable = value;\n }\n\n private _removable: boolean = true;\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get tabindex() {\n if (this.disabled) return null;\n if (this._tabindex === -1 && this.selectable && !this.tagList) return 0;\n\n return this._tabindex;\n }\n\n set tabindex(value: any) {\n this._tabindex = value;\n }\n\n private _tabindex = -1;\n\n /**\n * Whether the tag is disabled.\n */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input({ transform: booleanAttribute })\n get disabled(): boolean {\n return this._disabled || (this.tagList?.disabled ?? false);\n }\n\n set disabled(value: boolean) {\n this._disabled = value;\n this.syncDragDisabledState();\n }\n\n private _disabled: boolean = false;\n\n /**\n * Whether the tag is draggable.\n *\n * @docs-private\n */\n protected get draggable(): boolean {\n return (this.tagList?.draggable ?? false) && !this.disabled;\n }\n\n constructor() {\n super();\n\n this.color = KbqComponentColors.ContrastFade;\n this.setDefaultColor(KbqComponentColors.ContrastFade);\n\n this.addHostClassName();\n this.setupDragInitialProperties();\n }\n\n ngAfterContentInit() {\n this.addClassModificatorForIcons();\n }\n\n ngAfterViewInit(): void {\n this.setupFocusMonitor();\n }\n\n ngOnDestroy(): void {\n this.cancelEditing('destroy');\n this.focusMonitor.stopMonitoring(this.elementRef);\n this.destroyed.emit({ tag: this });\n }\n\n /** @docs-private */\n addClassModificatorForIcons() {\n const icons = this.contentChildren().map((item) => item.elementRef.nativeElement);\n\n if (icons.length === 1) {\n const iconElement = icons[0];\n\n if (iconElement.classList.contains('kbq-tag-remove')) {\n iconElement.classList.add('kbq-icon_right');\n this.nativeElement.classList.add('kbq-right-icon');\n } else {\n iconElement.classList.add('kbq-icon_left');\n this.nativeElement.classList.add('kbq-left-icon');\n }\n } else if (icons.length > 1) {\n const firstIconElement = icons[0];\n const secondIconElement = icons[1];\n\n firstIconElement.classList.add('kbq-icon_left');\n secondIconElement.classList.add('kbq-icon_right');\n }\n }\n\n /** @docs-private */\n addHostClassName() {\n // Add class for the different tags\n for (const attr of TAG_ATTRIBUTE_NAMES) {\n if (\n this.elementRef.nativeElement.hasAttribute(attr) ||\n this.elementRef.nativeElement.tagName.toLowerCase() === attr\n ) {\n (this.elementRef.nativeElement as HTMLElement).classList.add(attr);\n\n return;\n }\n }\n\n (this.elementRef.nativeElement as HTMLElement).classList.add('kbq-standard-tag');\n }\n\n /**\n * Selects the tag.\n */\n select(): void {\n if (this.disabled || !this.selectable) return;\n\n this.setSelectedState(true, { emitEvent: true });\n }\n\n /**\n * Deselects the tag.\n */\n deselect(): void {\n if (this.disabled || !this.selectable) return;\n\n this.setSelectedState(false, { emitEvent: true });\n }\n\n /**\n * Selects the tag and emits event with isUserInput flag.\n *\n * @docs-private\n */\n selectViaInteraction(): void {\n if (this.disabled || !this.selectable) return;\n\n this.setSelectedState(true, { isUserInput: true, emitEvent: true });\n }\n\n /**\n * Toggles the current selected state of the tag.\n */\n toggleSelected(isUserInput: boolean = false): boolean {\n if (this.disabled || !this.selectable) return this.selected;\n\n this.setSelectedState(!this.selected, { isUserInput, emitEvent: true });\n\n return this.selected;\n }\n\n /** Focuses the tag. */\n focus(): void {\n if (this.disabled) return;\n\n this.elementRef.nativeElement.focus();\n }\n\n /**\n * Allows for programmatic removal of the tag. Called by the KbqTagList when the DELETE or\n * BACKSPACE keys are pressed.\n *\n * Informs any listeners of the removal request. Does not remove the tag from the DOM.\n */\n remove(): void {\n if (this.removable) {\n this.removed.emit({ tag: this });\n }\n }\n\n /** @docs-private */\n handleClick(event: MouseEvent): void {\n if (this.disabled || this.editing()) {\n event.preventDefault();\n\n return;\n }\n\n if (\n // We should toggle selection only if tag inside of a tag list.\n // Single tag can only be toggled on focus or blur.\n this.tagList &&\n this.selectable &&\n hasModifierKey(event, 'metaKey', 'ctrlKey', 'shiftKey')\n ) {\n this.toggleSelected(true);\n\n // We should stop event propagation to prevent the tag list from handling the click event.\n event.stopPropagation();\n\n return;\n }\n\n if (!this.tagList && this.selectable) {\n this.toggleSelected(true);\n }\n }\n\n /** @docs-private */\n handleKeydown(event: KeyboardEvent): void {\n if (this.disabled || this.editing()) return;\n\n switch (event.keyCode) {\n case DELETE:\n case BACKSPACE: {\n // If there is a tag list and it has selected tags, remove them, otherwise remove focused tag.\n if (this.tagList?.selected.length) {\n this.tagList.removeSelected();\n } else {\n this.remove();\n }\n\n // Always prevent so page navigation does not occur\n event.preventDefault();\n break;\n }\n case SPACE: {\n this.toggleSelected(true);\n this.focusMonitor.focusVia(this.elementRef, 'keyboard');\n\n // Always prevent space from scrolling the page since the list has focus\n event.preventDefault();\n break;\n }\n case F2:\n case ENTER:\n this.startEditing(event.key);\n break;\n default:\n }\n }\n\n /** @docs-private */\n blur(): void {\n this.elementRef.nativeElement.blur();\n }\n\n /** @docs-private */\n protected handleDblClick(event: MouseEvent): void {\n if (this.disabled || !this.editable) return;\n\n event.stopPropagation();\n this.startEditing('dblclick');\n }\n\n private startEditing(reason: string): void {\n if (!this.editable || this.editing()) return;\n\n this.editing.set(true);\n this.editChange.emit({ tag: this, type: 'start', reason });\n\n setTimeout(() => {\n const input = this.editInputElementRef()?.nativeElement;\n\n if (!input) throw getTagEditInputMissingError();\n\n this.focusMonitor.focusVia(this.elementRef.nativeElement, 'keyboard');\n input.select();\n });\n }\n\n /** @docs-private */\n cancelEditing(reason: string): void {\n if (!this.editing()) return;\n\n this.editing.set(false);\n this.editChange.emit({ tag: this, type: 'cancel', reason });\n\n this.textElement.nativeElement.scrollTo?.({ left: 0, behavior: 'instant' });\n }\n\n /** @docs-private */\n submitEditing(reason: string): void {\n if (!this.editing() || this.preventEditSubmit()) return;\n\n this.editing.set(false);\n this.editChange.emit({ tag: this, type: 'submit', reason });\n\n this.textElement.nativeElement.scrollTo?.({ left: 0, behavior: 'instant' });\n }\n\n /**\n * Sets the selected state of the tag.\n *\n * @docs-private\n */\n setSelectedState(selected: boolean, options: Partial<{ isUserInput: boolean; emitEvent: boolean }> = {}): void {\n const { isUserInput = false, emitEvent = false } = options;\n\n if (selected !== this.selected) {\n this._selected = selected;\n\n if (emitEvent) {\n this.selectionChange.emit({\n source: this,\n isUserInput,\n selected: this.selected\n });\n }\n\n this.changeDetectorRef.markForCheck();\n }\n }\n\n private setupDragInitialProperties(): void {\n this.syncDragDisabledState();\n\n this.drag.started.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.drag.data = { tag: this };\n });\n }\n\n private syncDragDisabledState(): void {\n this.drag.disabled = !this.draggable;\n }\n\n private setupFocusMonitor(): void {\n this.focusMonitor.monitor(this.elementRef, true).subscribe((origin) => {\n if (this.disabled) return;\n\n const hasFocus = !isNull(origin);\n\n if (hasFocus !== this.hasFocus) {\n this.hasFocus = hasFocus;\n\n if (this.hasFocus) {\n this.onFocus.next({ tag: this, origin });\n if (!this.tagList && origin !== 'mouse') this.select();\n } else {\n this.onBlur.next({ tag: this });\n this.cancelEditing('blur');\n if (!this.tagList) this.deselect();\n }\n\n this.changeDetectorRef.markForCheck();\n }\n });\n }\n}\n\n/**\n *\n * Example:\n *\n * `<kbq-tag>\n * <kbq-icon kbqTagRemove>cancel</kbq-icon>\n * </kbq-tag>`\n *\n * You *may* use a custom icon, but you may need to override the `kbq-tag-remove` positioning\n * styles to properly center the icon within the tag.\n */\n@Directive({\n selector: '[kbqTagRemove]',\n host: {\n class: 'kbq-tag-remove kbq-tag-trailing-icon',\n '[attr.tabindex]': '-1',\n '(click)': 'handleClick($event)',\n '(focus)': 'focus($event)'\n }\n})\nexport class KbqTagRemove {\n protected parentTag = inject(KbqTag);\n\n /** @docs-private */\n focus(event: FocusEvent): void {\n event.stopPropagation();\n }\n\n /**\n * Calls the parent tag's public `remove()` method if applicable.\n *\n * @docs-private\n */\n handleClick(event: Event): void {\n if (this.parentTag.removable) {\n this.parentTag.hasFocus = true;\n\n this.parentTag.remove();\n }\n\n // We need to stop event propagation because otherwise the event will bubble up to the\n // form field and cause the `onContainerClick` method to be invoked. This method would then\n // reset the focused tag that has been focused after tag removal. Usually the parent\n // the parent click listener of the `KbqTag` would prevent propagation, but it can happen\n // that the tag is being removed before the event bubbles up.\n event.stopPropagation();\n }\n}\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { CdkDragDrop, CdkDropList } from '@angular/cdk/drag-drop';\nimport { BACKSPACE, END, HOME, LEFT_ARROW, TAB } from '@angular/cdk/keycodes';\nimport {\n AfterContentInit,\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n contentChild,\n ContentChildren,\n DestroyRef,\n DoCheck,\n ElementRef,\n forwardRef,\n inject,\n Input,\n input,\n OnDestroy,\n output,\n QueryList,\n ViewEncapsulation\n} from '@angular/core';\nimport { outputToObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, FormGroupDirective, NgControl, NgForm, UntypedFormControl } from '@angular/forms';\nimport { CanUpdateErrorState, ErrorStateMatcher, FocusKeyManager, isNull, isSelectAll } from '@koobiq/components/core';\nimport { KbqCleaner, KbqFormFieldControl } from '@koobiq/components/form-field';\nimport { merge, Observable, Subject } from 'rxjs';\nimport { filter, startWith, takeUntil } from 'rxjs/operators';\nimport { KbqTagTextControl } from './tag-text-control';\nimport {\n KbqTag,\n KbqTagDragData,\n KbqTagEditChange,\n KbqTagEvent,\n KbqTagFocusEvent,\n KbqTagSelectionChange\n} from './tag.component';\n\n// Increasing integer for generating unique ids for tag-list components.\nlet nextUniqueId = 0;\n\n/** Change event object that is emitted when the tag list value has changed. */\nexport class KbqTagListChange {\n constructor(\n public source: KbqTagList,\n public value: any\n ) {}\n}\n\nexport type KbqTagListDroppedEvent = Pick<CdkDragDrop<unknown>, 'event' | 'previousIndex' | 'currentIndex'> & {\n tag: KbqTag;\n};\n\n@Component({\n selector: 'kbq-tag-list',\n template: `\n <div class=\"kbq-tags-list__list-container\">\n <ng-content />\n </div>\n\n @if (canShowCleaner) {\n <div class=\"kbq-tags-list__cleaner\">\n <ng-content select=\"kbq-cleaner\" />\n </div>\n }\n `,\n styleUrls: ['tag-list.scss', 'tag-tokens.scss'],\n providers: [{ provide: KbqFormFieldControl, useExisting: KbqTagList }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-tag-list',\n '[class.kbq-disabled]': 'disabled',\n '[class.kbq-invalid]': 'errorState',\n '[class.kbq-tag-list_selectable]': 'selectable()',\n '[class.kbq-tag-list_editable]': 'editable()',\n '[class.kbq-tag-list_removable]': 'removable',\n '[class.kbq-tag-list_draggable]': 'draggable',\n '[attr.tabindex]': 'tabIndex',\n '[id]': 'uid',\n '(focus)': 'focus()',\n '(blur)': 'blur()',\n '(keydown)': 'keydown($event)'\n },\n hostDirectives: [CdkDropList],\n exportAs: 'kbqTagList'\n})\nexport class KbqTagList\n implements\n KbqFormFieldControl<any>,\n ControlValueAccessor,\n AfterContentInit,\n DoCheck,\n OnDestroy,\n CanUpdateErrorState,\n AfterViewInit\n{\n protected elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private changeDetectorRef = inject(ChangeDetectorRef);\n defaultErrorStateMatcher = inject(ErrorStateMatcher);\n private dir = inject(Directionality, { optional: true });\n parentForm = inject(NgForm, { optional: true });\n parentFormGroup = inject(FormGroupDirective, { optional: true });\n ngControl = inject(NgControl, { optional: true, self: true })!;\n\n private readonly dropList = inject(CdkDropList, { host: true });\n private readonly destroyRef = inject(DestroyRef);\n private readonly focusMonitor = inject(FocusMonitor);\n\n /**\n * Implemented as part of KbqFormFieldControl.\n *\n * @docs-private\n */\n readonly controlType: string = 'tag-list';\n\n /**\n * Emits whenever the component state changes and should cause the parent\n * form-field to update. Implemented as part of `KbqFormFieldControl`.\n * @docs-private\n */\n readonly stateChanges = new Subject<void>();\n\n /**\n * Combined stream of all of the child tags' selection change events.\n *\n * @docs-private\n */\n get tagSelectionChanges(): Observable<KbqTagSelectionChange> {\n return merge(...this.tags.map((tag) => outputToObservable(tag.selectionChange)));\n }\n\n /**\n * Combined stream of all of the child tags' focus change events.\n *\n * @docs-private\n */\n get tagFocusChanges(): Observable<KbqTagFocusEvent> {\n return merge(...this.tags.map((tag) => tag.onFocus));\n }\n\n /**\n * Combined stream of all of the child tags' blur change events.\n *\n * @docs-private\n */\n get tagBlurChanges(): Observable<KbqTagEvent> {\n return merge(...this.tags.map((tag) => tag.onBlur));\n }\n\n /**\n * Combined stream of all of the child tags' destroyed events.\n *\n * @docs-private\n */\n get tagRemoveChanges(): Observable<KbqTagEvent> {\n return merge(...this.tags.map((tag) => outputToObservable(tag.destroyed)));\n }\n\n /**\n * Combined stream of all of the child tags' removal request events.\n *\n * @docs-private\n */\n protected get tagBeforeRemoveChanges(): Observable<KbqTagEvent> {\n return merge(...this.tags.map((tag) => outputToObservable(tag.removed)));\n }\n\n /**\n * Combined stream of all of the child tags' edit change events.\n *\n * @docs-private\n */\n get tagEditChanges(): Observable<KbqTagEditChange> {\n return merge(...this.tags.map((tag) => outputToObservable(tag.editChange)));\n }\n\n /**\n * The array of selected tags inside tag list.\n *\n * @docs-private\n */\n get selected(): KbqTag[] {\n return this.tags.filter(({ selected }) => selected);\n }\n\n /** @docs-private */\n get canShowCleaner(): boolean {\n return !!this.cleaner() && this.tags.length > 0;\n }\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get value(): any {\n return this._value;\n }\n\n set value(value: any) {\n this._value = value;\n }\n\n private _value: any;\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n get id(): string {\n return this.tagInput ? this.tagInput.id : this.uid;\n }\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get required(): boolean {\n return this._required;\n }\n\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n\n this.stateChanges.next();\n }\n\n private _required: boolean = false;\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get placeholder(): string {\n return this.tagInput ? this.tagInput.placeholder : this._placeholder;\n }\n\n set placeholder(value: string) {\n this._placeholder = value;\n this.stateChanges.next();\n }\n\n private _placeholder: string;\n\n /** Whether any tags or the kbqTagInput inside of this tag-list has focus. */\n get focused(): boolean {\n return (this.tagInput && this.tagInput.focused) || this.hasFocusedTag();\n }\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n get empty(): boolean {\n return (!this.tagInput || this.tagInput.empty) && this.tags.length === 0;\n }\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n get shouldLabelFloat(): boolean {\n return !this.empty || this.focused;\n }\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input({ transform: booleanAttribute })\n get disabled(): boolean {\n return this.ngControl ? !!this.ngControl.disabled : this._disabled;\n }\n\n set disabled(value: boolean) {\n this._disabled = value;\n this.syncDropListDisabledState();\n }\n\n private _disabled: boolean = false;\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input({ transform: booleanAttribute })\n get draggable(): boolean {\n return this._draggable && !this.disabled;\n }\n\n set draggable(value: boolean) {\n this._draggable = value;\n this.syncDropListDisabledState();\n }\n\n private _draggable: boolean = false;\n\n /**\n * Emits when the user drops tag inside tag list container.\n */\n readonly dropped = output<KbqTagListDroppedEvent>();\n\n /**\n * Whether or not this tag list is selectable. When a tag list is not selectable,\n * the selected states for all the tags inside the tag list are always ignored.\n */\n readonly selectable = input(true, { transform: booleanAttribute });\n\n /** Whether the tags in the list are editable. */\n readonly editable = input(false, { transform: booleanAttribute });\n\n /** Whether the tags in the list are removable. */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input({ transform: booleanAttribute })\n get removable(): boolean {\n return this._removable;\n }\n\n set removable(value: boolean) {\n this._removable = value;\n this.syncTagsRemovableState();\n }\n\n private _removable = true;\n\n /**\n * Tab index of the tag list. This property is ignored when the tag list contains a tag input or is disabled.\n *\n * @docs-private\n */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get tabIndex(): number | null {\n return this.disabled || this.tagInput ? null : this._tabIndex;\n }\n\n set tabIndex(value: number) {\n this.userTabIndex = value;\n this._tabIndex = value;\n }\n\n private _tabIndex = 0;\n\n /**\n * Event that emits whenever the raw value of the tag-list changes. This is here primarily\n * to facilitate the two-way binding for the `value` input.\n * @docs-private\n */\n readonly valueChange = output<any>();\n\n /** @docs-private */\n uid: string = `kbq-tag-list-${nextUniqueId++}`;\n\n /**\n * User defined tab index.\n * When it is not null, use user defined tab index. Otherwise use tabIndex\n *\n * @docs-private\n */\n userTabIndex: number | null = null;\n\n /** @docs-private */\n keyManager: FocusKeyManager<KbqTag>;\n\n /** An object used to control when error messages are shown. */\n // TODO: Skipped for migration because:\n // This input overrides a field from a superclass, while the superclass field\n // is not migrated.\n @Input() errorStateMatcher: ErrorStateMatcher;\n\n /** Event emitted when the selected tag list value has been changed by the user. */\n readonly change = output<KbqTagListChange>();\n\n /** @docs-private */\n readonly cleaner = contentChild<KbqCleaner>('kbqTagListCleaner');\n\n /**\n * The tag components contained within this tag list.\n *\n * @docs-private\n */\n @ContentChildren(forwardRef(() => KbqTag), {\n // Need to use `descendants: true`,\n // Ivy will no longer match indirect descendants if it's left as false.\n descendants: true\n })\n tags: QueryList<KbqTag>;\n\n /**\n * Whether the component is in an error state.\n *\n * @docs-private\n */\n errorState: boolean = false;\n\n /** The tag input to add more tags */\n private tagInput: KbqTagTextControl;\n\n /** True when the next `tags.changes` emission is triggered by a UI action, not programmatic update. */\n private pendingUIChange = false;\n\n /**\n * When a tag is destroyed, we store the index of the destroyed tag until the tags\n * query list notifies about the update. This is necessary because we cannot determine an\n * appropriate tag that should receive focus until the array of tags updated completely.\n */\n private lastDestroyedTagIndex: number | null = null;\n\n /** Triggers unsubscription from all per-tags streams when tags are reset. */\n private readonly tagsSubscriptions$ = new Subject<void>();\n\n constructor() {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n\n this.setupDropListInitialProperties();\n }\n\n ngDoCheck() {\n if (this.ngControl) {\n // We need to re-evaluate this on every change detection cycle, because there are some\n // error triggers that we can't subscribe to (e.g. parent form submissions). This means\n // that whatever logic is in here has to be super lean or we risk destroying the performance.\n this.updateErrorState();\n }\n }\n\n ngAfterContentInit() {\n this.keyManager = new FocusKeyManager<KbqTag>(this.tags)\n .withVerticalOrientation()\n .withHorizontalOrientation(this.dir ? this.dir.value : 'ltr')\n .skipPredicate(({ disabled }) => disabled);\n\n if (this.dir) {\n this.dir.change\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((dir) => this.keyManager.withHorizontalOrientation(dir));\n }\n\n // Prevents the tag list from capturing focus and redirecting\n // it back to the first tag when the user tabs out.\n this.keyManager.tabOut.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this._tabIndex = -1;\n\n setTimeout(() => {\n this._tabIndex = this.userTabIndex || 0;\n this.changeDetectorRef.markForCheck();\n });\n });\n\n // When the list changes, re-subscribe\n this.tags.changes\n .pipe(startWith(null), takeUntilDestroyed(this.destroyRef))\n .subscribe((currentTags: QueryList<KbqTag> | null) => {\n this.resetTags();\n\n // Check to see if we need to update our tab index\n this.updateTabIndex();\n\n // Check to see if we have a destroyed tag and need to refocus\n this.updateFocusForDestroyedTags();\n\n // Defer setting the value in order to avoid the \"Expression\n // has changed after it was checked\" errors from Angular.\n Promise.resolve().then(() => {\n this.stateChanges.next();\n\n if (currentTags && this.pendingUIChange) {\n this.pendingUIChange = false;\n this.propagateTagsChanges();\n }\n });\n });\n }\n\n ngAfterViewInit(): void {\n this.setupFocusMonitor();\n }\n\n ngOnDestroy() {\n this.stateChanges.complete();\n this.focusMonitor.stopMonitoring(this.elementRef);\n this.tagsSubscriptions$.next();\n }\n\n /** @docs-private */\n updateErrorState() {\n const oldState = this.errorState;\n const parent = this.parentFormGroup || this.parentForm;\n const matcher = this.errorStateMatcher || this.defaultErrorStateMatcher;\n const control = this.ngControl ? (this.ngControl.control as UntypedFormControl) : null;\n const newState = matcher.isErrorState(control, parent);\n\n if (newState !== oldState) {\n this.errorState = newState;\n this.stateChanges.next();\n }\n }\n\n /** @docs-private */\n onTouched = () => {};\n\n /** @docs-private */\n onChange: (value: any) => void = () => {};\n\n /** Notifies that the next `tags.changes` emission is UI-initiated. */\n notifyPendingTagChange(): void {\n this.pendingUIChange = true;\n }\n\n /**\n * Associates an HTML input element with this tag list.\n *\n * @docs-private\n */\n registerInput(inputElement: KbqTagTextControl): void {\n this.tagInput = inputElement;\n\n // todo need rethink about it (#DS-3740)\n if (this.ngControl && inputElement.ngControl?.statusChanges) {\n inputElement.ngControl.statusChanges.subscribe(() =>\n this.ngControl.control!.setErrors(inputElement.ngControl!.errors)\n );\n }\n }\n\n /**\n * Implemented as part of ControlValueAccessor.\n */\n writeValue(value: any): void {\n this.value = value;\n }\n\n /**\n * Implemented as part of ControlValueAccessor.\n */\n registerOnChange(fn: (value: any) => void): void {\n this.onChange = fn;\n }\n\n /**\n * Implemented as part of ControlValueAccessor.\n */\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n /**\n * Implemented as part of ControlValueAccessor.\n */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.stateChanges.next();\n }\n\n /**\n * Implemented as part of KbqFormFieldControl.\n *\n * @docs-private\n */\n onContainerClick(): void {\n this.focus();\n }\n\n /**\n * Focuses the tag list. If there is a tag input, focuses that instead.\n */\n focus(): void {\n if (this.disabled) return;\n\n if (this.tagInput) {\n this.focusInput();\n this.stateChanges.next();\n\n return;\n }\n\n if (this.tags.length > 0) {\n this.keyManager.setFirstItemActive();\n this.stateChanges.next();\n\n return;\n }\n }\n\n /**\n * Focuses the tag input inside the tag list.\n *\n * @docs-private\n */\n focusInput() {\n if (this.tagInput) {\n this.tagInput.focus();\n }\n }\n\n /**\n * Pass events to the keyboard manager. Available here for tests.\n *\n * @docs-private\n */\n keydown(event: KeyboardEvent): void {\n const target = event.target as HTMLElement | null;\n\n if (this.disabled || isNull(target)) return;\n\n const shouldSelectAll = this.selectable() && isSelectAll(event);\n\n if (this.isInputEmpty(target)) {\n if (\n event.keyCode === BACKSPACE ||\n event.keyCode === LEFT_ARROW ||\n (event.keyCode === TAB && event.shiftKey)\n ) {\n this.keyManager.setLastItemActive();\n event.preventDefault();\n\n return;\n }\n\n if (shouldSelectAll) {\n this.selectAll();\n this.keyManager.setLastItemActive();\n event.preventDefault();\n\n return;\n }\n } else if (this.isTagElement(target)) {\n if (event.keyCode === HOME) {\n this.keyManager.setFirstItemActive();\n event.preventDefault();\n } else if (event.keyCode === END) {\n this.keyManager.setLastItemActive();\n event.preventDefault();\n } else if (shouldSelectAll) {\n this.selectAll();\n this.keyManager.setLastItemActive();\n event.preventDefault();\n } else {\n this.keyManager.onKeydown(event);\n }\n\n this.stateChanges.next();\n }\n }\n\n /** When blurred, mark the field as touched when focus moved outside the tag list. */\n blur() {\n if (!this.hasFocusedTag()) {\n this.keyManager.setActiveItem(-1);\n }\n\n if (!this.disabled) {\n if (this.tagInput) {\n // If there's a tag input, we should check whether the focus moved to tag input.\n // If the focus is not moved to tag input, mark the field as touched. If the focus moved\n // to tag input, do nothing.\n // Timeout is needed to wait for the focus() event trigger on tag input.\n setTimeout(() => {\n if (!this.focused) {\n this.markAsTouched();\n }\n });\n } else {\n // If there's no tag input, then mark the field as touched.\n this.markAsTouched();\n }\n }\n }\n\n /** Mark the field as touched */\n markAsTouched() {\n this.onTouched();\n this.changeDetectorRef.markForCheck();\n this.stateChanges.next();\n }\n\n /**\n * Check the tab index as you should not be allowed to focus an empty list.\n *\n * @docs-private\n */\n protected updateTabIndex(): void {\n // If we have 0 tags, we should not allow keyboard focus\n this._tabIndex = this.userTabIndex || (this.tags.length === 0 ? -1 : 0);\n }\n\n /**\n * If the amount of tags changed, we need to update the\n * key manager state and focus the next closest tag.\n *\n * @docs-private\n */\n protected updateFocusForDestroyedTags() {\n if (this.lastDestroyedTagIndex != null) {\n if (this.tags.length) {\n const newTagIndex = Math.min(this.lastDestroyedTagIndex, this.tags.length - 1);\n\n this.keyManager.setActiveItem(newTagIndex);\n } else {\n this.focusInput();\n }\n }\n\n this.lastDestroyedTagIndex = null;\n }\n\n /**\n * Utility to ensure all indexes are valid.\n *\n * @param index The index to be checked.\n * @returns True if the index is valid for our list of tags.\n */\n private isValidIndex(index: number): boolean {\n return index >= 0 && index < this.tags.length;\n }\n\n private isInputElement(element: HTMLElement): element is HTMLInputElement {\n return element.nodeName.toLowerCase() === 'input';\n }\n\n private isInputEmpty(element: HTMLElement): boolean {\n if (!this.isInputElement(element)) return false;\n\n return !element.value;\n }\n\n private isTagElement(element: HTMLElement): boolean {\n return element.classList.contains('kbq-tag');\n }\n\n private selectAll(): void {\n this.tags.forEach((tag) => tag.selectViaInteraction());\n }\n\n /**\n * Unselects all tags in the list.\n *\n * @docs-private\n */\n unselectAll(): void {\n this.tags.forEach((tag) => tag.setSelectedState(false));\n }\n\n /**\n * Removes all selected tags from the list.\n *\n * @docs-private\n */\n removeSelected(): void {\n this.selected.forEach((tag) => tag.remove());\n }\n\n private propagateTagsChanges(): void {\n const valueToEmit: any = this.tags.map((tag) => tag.value);\n\n this._value = valueToEmit;\n this.change.emit(new KbqTagListChange(this, valueToEmit));\n this.valueChange.emit(valueToEmit);\n this.onChange(valueToEmit);\n this.changeDetectorRef.markForCheck();\n }\n\n private resetTags(): void {\n this.tagsSubscriptions$.next();\n this.listenToTagsFocus();\n this.listenToTagsRemoved();\n this.listenToTagsEdit();\n }\n\n /** Listens to user-generated selection events on each tag. */\n private listenToTagsFocus(): void {\n this.tagFocusChanges.pipe(takeUntil(this.tagsSubscriptions$)).subscribe(({ tag, origin }) => {\n const tagIndex = this.tags.toArray().indexOf(tag);\n\n if (this.isValidIndex(tagIndex)) {\n this.keyManager.setFocusOrigin(origin);\n this.keyManager.updateActiveItem(tagIndex);\n }\n\n this.stateChanges.next();\n });\n\n this.tagBlurChanges.pipe(takeUntil(this.tagsSubscriptions$)).subscribe(() => {\n this.blur();\n\n this.stateChanges.next();\n });\n }\n\n private listenToTagsRemoved(): void {\n this.tagRemoveChanges.pipe(takeUntil(this.tagsSubscriptions$)).subscribe((event) => {\n const tag = event.tag;\n const tagIndex = this.tags.toArray().indexOf(event.tag);\n\n // In case the tag that will be removed is currently focused, we temporarily store\n // the index in order to be able to determine an appropriate sibling tag that will\n // receive focus.\n if (this.isValidIndex(tagIndex) && tag.hasFocus) {\n this.lastDestroyedTagIndex = tagIndex;\n }\n });\n\n // Set the pending flag so the subsequent `tags.changes` is treated as UI action.\n this.tagBeforeRemoveChanges\n .pipe(takeUntil(this.tagsSubscriptions$))\n .subscribe(() => (this.pendingUIChange = true));\n }\n\n private listenToTagsEdit(): void {\n this.tagEditChanges\n .pipe(\n filter(({ type }) => type === 'submit'),\n takeUntil(this.tagsSubscriptions$)\n )\n .subscribe(() => this.propagateTagsChanges());\n }\n\n /** Checks whether any of the tags is focused. */\n private hasFocusedTag() {\n return this.tags.some((tag) => tag.hasFocus);\n }\n\n private syncTagsRemovableState(): void {\n this.tags?.forEach((tag) => (tag.removable = this.removable));\n }\n\n private setupDropListInitialProperties(): void {\n this.syncDropListDisabledState();\n this.dropList.elementContainerSelector = '.kbq-tags-list__list-container';\n this.dropList.orientation = 'mixed';\n this.dropList.dropped\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(({ currentIndex, previousIndex, event, item }) => {\n this.pendingUIChange = true;\n\n const { tag }: KbqTagDragData = item.data;\n\n this.dropped.emit({ currentIndex, previousIndex, event, tag });\n });\n }\n\n private syncDropListDisabledState(): void {\n this.dropList.disabled = !this.draggable;\n }\n\n private setupFocusMonitor(): void {\n this.focusMonitor.monitor(this.elementRef, true).subscribe((origin) => {\n if (!origin) this.unselectAll();\n });\n }\n}\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n booleanAttribute,\n Directive,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n input,\n OnChanges,\n output\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { KbqAutocompleteTrigger } from '@koobiq/components/autocomplete';\nimport { COMMA, ENTER, hasModifierKey, KbqFieldSizingContent, SEMICOLON, SPACE, TAB } from '@koobiq/components/core';\nimport { KbqTrim } from '@koobiq/components/form-field';\nimport { KBQ_TAGS_DEFAULT_OPTIONS, KbqTagsDefaultOptions } from './tag-default-options';\nimport { KbqTagList } from './tag-list.component';\nimport { KbqTagTextControl } from './tag-text-control';\n\nconst KBQ_TAG_INPUT_DEFAULT_SEPARATORS: { [key: number]: KbqTagSeparator } = {\n [ENTER]: { symbol: /\\r?\\n/, key: 'Enter' },\n [TAB]: { symbol: /\\t/, key: 'Tab' },\n [SPACE]: { symbol: / /, key: ' ' },\n [COMMA]: { symbol: /,/, key: ',' },\n [SEMICOLON]: { symbol: /;/, key: ';' }\n};\n\n/** Represents an input event on a `kbqTagInput`. */\nexport interface KbqTagInputEvent {\n /** The native `<input>` element that the event is being fired for. */\n input: HTMLInputElement;\n\n /** The value of the input. */\n value: string;\n}\n\nexport interface KbqTagSeparator {\n symbol: RegExp;\n key: string;\n}\n// Increasing integer for generating unique ids.\nlet nextUniqueId = 0;\n\n/**\n * Directive that adds tag-specific behaviors to an input element inside `<kbq-form-field>`.\n * May be placed inside or outside of an `<kbq-tag-list>`.\n */\n@Directive({\n selector: 'input[kbqTagInputFor]',\n host: {\n class: 'kbq-tag-input',\n '[id]': 'id',\n '[attr.disabled]': 'disabled || null',\n '[attr.placeholder]': 'placeholder || null',\n '(keydown)': 'onKeydown($event)',\n '(blur)': 'blur($event)',\n '(focus)': 'onFocus()',\n '(input)': 'onInput()',\n '(paste)': 'onPaste($event)'\n },\n hostDirectives: [KbqFieldSizingContent],\n exportAs: 'kbqTagInput, kbqTagInputFor'\n})\nexport class KbqTagInput implements KbqTagTextControl, OnChanges {\n private elementRef = inject<ElementRef<HTMLInputElement>>(ElementRef);\n private defaultOptions = inject<KbqTagsDefaultOptions>(KBQ_TAGS_DEFAULT_OPTIONS);\n private trimDirective = inject(KbqTrim, { optional: true, self: true });\n ngControl = inject(NgControl, { optional: true, self: true })!;\n autocompleteTrigger? = inject(KbqAutocompleteTrigger, { optional: true, self: true });\n /** Whether the control is focused. */\n focused: boolean = false;\n\n /**\n * The list of key codes that will trigger a tagEnd event.\n *\n * Defaults to `[ENTER]`.\n */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input('kbqTagInputSeparatorKeyCodes')\n set separatorKeyCodes(value: number[]) {\n this._separatorKeyCodes = value || [];\n }\n\n private _separatorKeyCodes: number[] = this.defaultOptions.separatorKeyCodes;\n\n /** @docs-private */\n get separators(): KbqTagSeparator[] {\n return this._separatorKeyCodes.reduce((acc: any, key) => {\n const separator = this.getSeparatorByKeyCode(key);\n\n return separator ? [...acc, separator] : acc;\n }, []);\n }\n\n private _separators = this.defaultOptions.separators || KBQ_TAG_INPUT_DEFAULT_SEPARATORS;\n\n /** Emitted when a tag is to be added. */\n readonly tagEnd = output<KbqTagInputEvent>({ alias: 'kbqTagInputTokenEnd' });\n\n /** A value indicating whether allow/prevent tags duplication */\n readonly distinct = input<boolean>(false);\n\n /** The input's placeholder text. */\n // TODO: Skipped for migration because:\n // This input overrides a field from a superclass, while the superclass field\n // is not migrated.\n @Input() placeholder: string = '';\n\n /** Unique id for the input. */\n // TODO: Skipped for migration because:\n // This input overrides a field from a superclass, while the superclass field\n // is not migrated.\n @Input() id: string = `kbq-tag-list-input-${nextUniqueId++}`;\n\n /** Register input for tag list */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input('kbqTagInputFor')\n set tagList(value: KbqTagList) {\n if (value) {\n this._tagList = value;\n this._tagList.registerInput(this);\n }\n }\n\n private _tagList: KbqTagList;\n\n /**\n * Whether or not the tagEnd event will be emitted when the input is blurred.\n */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input('kbqTagInputAddOnBlur')\n get addOnBlur(): boolean {\n return this._addOnBlur;\n }\n\n set addOnBlur(value: boolean) {\n this._addOnBlur = coerceBooleanProperty(value);\n }\n\n private _addOnBlur: boolean = true;\n\n /**\n * Whether the tagEnd event will be emitted when the text pasted.\n * @default true\n */\n readonly addOnPaste = input(this.defaultOptions.addOnPaste ?? true, {\n alias: 'kbqTagInputAddOnPaste',\n transform: booleanAttribute\n });\n\n /** Whether the input is disabled. */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get disabled(): boolean {\n return this._disabled || (this._tagList && this._tagList.disabled);\n }\n\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n }\n\n private _disabled: boolean = false;\n\n /** Whether the input is empty. */\n get empty(): boolean {\n return !this.inputElement.value;\n }\n\n /** The native input element to which this directive is attached. */\n private inputElement: HTMLInputElement;\n\n constructor() {\n this.inputElement = this.elementRef.nativeElement as HTMLInputElement;\n }\n\n ngOnChanges() {\n this._tagList.stateChanges.next();\n }\n\n /** @docs-private */\n onKeydown(event: KeyboardEvent) {\n const isSeparatorKey = this.isSeparatorKey(event);\n\n if (!this.inputElement.value) {\n if (isSeparatorKey) {\n event.preventDefault();\n }\n\n this._tagList.keydown(event);\n event.stopPropagation();\n\n return;\n }\n\n if (isSeparatorKey) {\n this.emitTagEnd();\n\n event.preventDefault();\n }\n }\n\n /** Checks to see if the blur should emit the (tagEnd) event. */\n blur(event: FocusEvent) {\n this.focused = false;\n\n // Blur the tag list if it is not focused\n if (!this._tagList.focused) {\n this.triggerValidation();\n\n this._tagList.blur();\n }\n\n if (this.addOnBlur && (this.autocompleteTrigger?.onInputBlur()(event) || true)) {\n this.emitTagEnd();\n }\n\n this._tagList.stateChanges.next();\n }\n\n triggerValidation() {\n if (!this.hasControl()) {\n return;\n }\n\n (this.ngControl.statusChanges as EventEmitter<string | null>).emit(this.ngControl.status);\n }\n\n /** Checks to see if the (tagEnd) event needs to be emitted. */\n emitTagEnd() {\n if (!this.hasControl() || (this.hasControl() && !this.ngControl.invalid)) {\n if (this.distinct() && this.hasDuplicates) return;\n\n this._tagList?.notifyPendingTagChange();\n this.tagEnd.emit({ input: this.inputElement, value: this.trimValue(this.inputElement.value) });\n }\n }\n\n get hasDuplicates(): boolean {\n return this._tagList.tags\n .map(({ value }) => value)\n .some((tagValue) => tagValue === this.trimValue(this.inputElement.value));\n }\n\n onInput() {\n // Let tag list know whenever the value changes.\n this._tagList.stateChanges.next();\n }\n\n onPaste($event: ClipboardEvent) {\n if (!$event.clipboardData) {\n return;\n }\n\n const data = $event.clipboardData.getData('text');\n\n if ((data && data.length === 0) || !this.addOnPaste()) {\n return;\n }\n\n const separatorsInString = this.getSeparatorsForString(data);\n\n // prettier-ignore\n const dividedString: string[] = separatorsInString.length > 0 ?\n [...data.split(new RegExp(`${separatorsInString.join('|')}`))] :\n [data];\n\n let items: string[] = dividedString.map((item) => this.trimValue(item));\n\n if (items.length === 0) {\n items.push(data);\n }\n\n if (this.distinct()) {\n const tagValues: string[] = this._tagList.tags.map(({ value }) => value);\n\n items = items.filter((item) => !tagValues.includes(item));\n }\n\n if (items.length) {\n this._tagList?.notifyPendingTagChange();\n }\n\n items.forEach((item) => this.tagEnd.emit({ input: this.inputElement, value: item }));\n\n $event.preventDefault();\n $event.stopPropagation();\n }\n\n /** @docs-private */\n onFocus(): void {\n this.focused = true;\n this._tagList.unselectAll();\n this._tagList.stateChanges.next();\n }\n\n /** Focuses the input. */\n focus(): void {\n this.inputElement.focus();\n }\n\n private getSeparatorsForString(value: string): string[] {\n return this.separators\n .filter((separator) => value.search(separator.symbol) > -1)\n .map((separator) => separator.symbol.source);\n }\n\n private trimValue(value) {\n return this.trimDirective ? this.trimDirective.trim(value) : value;\n }\n\n private getSeparatorByKeyCode(keyCode: number): KbqTagSeparator | null {\n const sep = this._separators[keyCode];\n\n if (sep) {\n return sep;\n }\n\n return null;\n }\n\n private hasControl(): boolean {\n return !!this.ngControl;\n }\n\n /** Checks whether a keycode is one of the configured separators. */\n private isSeparatorKey(event: KeyboardEvent) {\n return this.separators.some((separator) => separator.key === event.key && !hasModifierKey(event));\n }\n}\n","import { PlatformModule } from '@angular/cdk/platform';\nimport { NgModule } from '@angular/core';\nimport { ENTER } from '@koobiq/components/core';\nimport { KBQ_TAGS_DEFAULT_OPTIONS, KbqTagsDefaultOptions } from './tag-default-options';\nimport { KbqTagInput } from './tag-input';\nimport { KbqTagList } from './tag-list.component';\nimport {\n KbqTag,\n KbqTagAvatar,\n KbqTagEditInput,\n KbqTagEditSubmit,\n KbqTagRemove,\n KbqTagTrailingIcon\n} from './tag.component';\n\nconst COMPONENTS = [\n KbqTagEditSubmit,\n KbqTagEditInput\n];\n\n@NgModule({\n imports: [\n PlatformModule,\n ...COMPONENTS,\n KbqTagList,\n KbqTag,\n KbqTagInput,\n KbqTagTrailingIcon,\n KbqTagAvatar,\n KbqTagRemove\n ],\n providers: [\n {\n provide: KBQ_TAGS_DEFAULT_OPTIONS,\n useValue: { separatorKeyCodes: [ENTER] } as KbqTagsDefaultOptions\n }\n ],\n exports: [\n KbqTagList,\n KbqTag,\n KbqTagInput,\n KbqTagTrailingIcon,\n KbqTagAvatar,\n KbqTagRemove,\n ...COMPONENTS\n ]\n})\nexport class KbqTagsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["contentChildren_1","nextUniqueId","i1","ENTER","TAB","SPACE"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"koobiq-components-tags.mjs","sources":["../../../packages/components/tags/tag-default-options.ts","../../../packages/components/tags/tag.component.ts","../../../packages/components/tags/tag-list.component.ts","../../../packages/components/tags/tag-input.ts","../../../packages/components/tags/tag.module.ts","../../../packages/components/tags/koobiq-components-tags.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { KbqTagSeparator } from './tag-input';\n\n/** Default options, for the chips module, that can be overridden. */\nexport interface KbqTagsDefaultOptions {\n /** The list of key codes that will trigger a chipEnd event. */\n separatorKeyCodes: number[];\n separators?: { [key: number]: KbqTagSeparator };\n addOnPaste?: boolean;\n}\n\n/** Injection token to be used to override the default options for the chips module. */\nexport const KBQ_TAGS_DEFAULT_OPTIONS = new InjectionToken<KbqTagsDefaultOptions>('kbq-tags-default-options');\n","import { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\nimport { CdkDrag } from '@angular/cdk/drag-drop';\nimport { BACKSPACE, DELETE, ENTER, ESCAPE, F2, SPACE } from '@angular/cdk/keycodes';\nimport {\n AfterContentInit,\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n contentChild,\n contentChildren as contentChildren_1,\n DestroyRef,\n Directive,\n ElementRef,\n forwardRef,\n inject,\n Input,\n input,\n OnDestroy,\n output,\n signal,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n hasModifierKey,\n IFocusableOption,\n isNull,\n KBQ_TITLE_TEXT_REF,\n KbqColorDirective,\n KbqComponentColors,\n KbqFieldSizingContent,\n KbqTitleTextRef\n} from '@koobiq/components/core';\nimport { KbqIcon } from '@koobiq/components/icon';\nimport { Subject } from 'rxjs';\nimport { KbqTagList } from './tag-list.component';\n\n/**\n * Event object emitted by KbqTag.\n */\nexport type KbqTagEvent = {\n tag: KbqTag;\n};\n\n/**\n * Event object emitted by KbqTag when the tag is edited.\n */\nexport class KbqTagEditChange {\n constructor(\n public readonly tag: KbqTag,\n public readonly type: 'start' | 'submit' | 'cancel',\n public readonly reason: string\n ) {}\n}\n\n/** Event object emitted by KbqTag when selected or deselected. */\nexport class KbqTagSelectionChange {\n constructor(\n public source: KbqTag,\n public selected: boolean,\n public isUserInput = false\n ) {}\n}\n\n/**\n * Event object emitted when the KbqTag is focused.\n */\nexport type KbqTagFocusEvent = KbqTagEvent & {\n origin: FocusOrigin;\n};\n\nconst TAG_ATTRIBUTE_NAMES = ['kbq-basic-tag'];\n\nconst getTagEditInputMissingError = (): Error => {\n return Error('Editable kbq-tag must contain a KbqTagEditInput.');\n};\n\n/**\n * Object passed to the drag data event when a tag is being dragged.\n *\n * @docs-private\n */\nexport type KbqTagDragData = KbqTagEvent;\n\n/**\n * Dummy directive to add CSS class to tag avatar.\n * @docs-private\n */\n@Directive({\n selector: 'kbq-tag-avatar, [kbqTagAvatar]',\n host: { class: 'kbq-tag-avatar' }\n})\nexport class KbqTagAvatar {}\n\n/**\n * Dummy directive to add CSS class to tag trailing icon.\n * @docs-private\n */\n@Directive({\n selector: 'kbq-tag-trailing-icon, [kbqTagTrailingIcon]',\n host: { class: 'kbq-tag-trailing-icon' }\n})\nexport class KbqTagTrailingIcon {}\n\n/**\n * Directive to add submit behavior for the editable tag.\n */\n@Directive({\n selector: '[kbqTagEditSubmit]',\n host: {\n class: 'kbq-tag-edit-submit',\n '[attr.tabindex]': '-1',\n\n '(click)': 'tag.submitEditing(\"click\")'\n },\n exportAs: 'kbqTagEditSubmit'\n})\nexport class KbqTagEditSubmit {\n /** @docs-private */\n protected readonly tag = inject(KbqTag);\n}\n\n/**\n * Directive to add input behavior for the editable tag.\n */\n@Directive({\n selector: '[kbqTagEditInput]',\n host: {\n class: 'kbq-tag-edit-input',\n\n '(keydown)': 'handleKeydown($event)',\n '(click)': 'handleClick($event)'\n },\n hostDirectives: [KbqFieldSizingContent],\n exportAs: 'kbqTagEditInput'\n})\nexport class KbqTagEditInput {\n private readonly tag = inject(KbqTag);\n\n /** @docs-private */\n protected handleClick(event: MouseEvent): void {\n event.stopPropagation();\n }\n\n /** @docs-private */\n protected handleKeydown(event: KeyboardEvent): void {\n switch (event.keyCode) {\n case ESCAPE: {\n event.stopPropagation();\n this.tag.cancelEditing('escape');\n break;\n }\n case ENTER: {\n event.stopPropagation();\n this.tag.submitEditing('enter');\n break;\n }\n\n // We should prevent KbqTag from receiving these keydown events\n case BACKSPACE:\n case SPACE:\n case DELETE: {\n event.stopPropagation();\n break;\n }\n\n default:\n }\n }\n}\n\n@Component({\n selector: 'kbq-tag, [kbq-tag], kbq-basic-tag, [kbq-basic-tag]',\n template: `\n <div class=\"kbq-tag__wrapper\">\n <ng-content select=\"[kbq-icon]:not([kbqTagRemove]):not([kbqTagEditSubmit])\" />\n <span #kbqTitleText class=\"kbq-tag__text\">\n @if (editing()) {\n <ng-content select=\"[kbqTagEditInput]\" />\n } @else {\n <ng-content />\n }\n </span>\n @if (editing()) {\n <ng-content select=\"[kbqTagEditSubmit]\" />\n } @else {\n @if (removable) {\n <ng-content select=\"[kbqTagRemove]\" />\n }\n }\n </div>\n `,\n styleUrls: ['./tag.scss'],\n providers: [{ provide: KBQ_TITLE_TEXT_REF, useExisting: KbqTag }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-tag',\n '[attr.tabindex]': 'tabindex',\n '[attr.disabled]': 'disabled || null',\n '[class.kbq-selected]': 'selected',\n '[class.kbq-tag-with-avatar]': 'avatar()',\n '[class.kbq-tag-with-icon]': 'contentChildren()',\n '[class.kbq-tag-with-trailing-icon]': 'trailingIcon() || removeIcon()',\n '[class.kbq-disabled]': 'disabled',\n '[class.kbq-tag_editable]': 'editable',\n '[class.kbq-tag_editing]': 'editing()',\n '[class.kbq-tag_removable]': 'removable',\n '[class.kbq-tag_selectable]': 'selectable',\n '[class.kbq-tag_draggable]': 'draggable',\n '(dblclick)': 'handleDblClick($event)',\n '(click)': 'handleClick($event)',\n '(keydown)': 'handleKeydown($event)'\n },\n hostDirectives: [CdkDrag],\n exportAs: 'kbqTag'\n})\nexport class KbqTag\n extends KbqColorDirective\n implements IFocusableOption, OnDestroy, KbqTitleTextRef, AfterContentInit, AfterViewInit\n{\n changeDetectorRef = inject(ChangeDetectorRef);\n\n private readonly focusMonitor = inject(FocusMonitor);\n private readonly tagList = inject(KbqTagList, { optional: true });\n private readonly drag: CdkDrag<KbqTagDragData> = inject(CdkDrag, { host: true });\n private readonly destroyRef = inject(DestroyRef);\n\n /** @docs-private */\n readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /**\n * Emits when the tag is focused.\n *\n * @docs-private\n */\n readonly onFocus = new Subject<KbqTagFocusEvent>();\n\n /**\n * Emits when the tag is blurred.\n *\n * @docs-private\n */\n readonly onBlur = new Subject<KbqTagEvent>();\n\n /** @docs-private */\n readonly nativeElement = this.elementRef.nativeElement;\n\n /**\n * Whether the tag has focus.\n *\n * @docs-private\n */\n hasFocus: boolean = false;\n\n /** Whether the tag is editable. */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input({ transform: booleanAttribute })\n get editable(): boolean {\n return this._editable ?? !!this.tagList?.editable();\n }\n\n set editable(value: boolean) {\n this._editable = value;\n }\n\n private _editable: boolean | undefined;\n\n /** Whether the tag edits can't be submitted. */\n readonly preventEditSubmit = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n private readonly editInputElementRef = contentChild(KbqTagEditInput, { read: ElementRef });\n\n /**\n * Emits event when the tag is edited.\n */\n readonly editChange = output<KbqTagEditChange>();\n\n /**\n * @docs-private\n */\n protected readonly editing = signal(false);\n\n /**\n * @docs-private\n */\n @ViewChild('kbqTitleText') readonly textElement: ElementRef<HTMLSpanElement>;\n\n readonly contentChildren = contentChildren_1(KbqIcon);\n\n /** The tag avatar */\n readonly avatar = contentChild(KbqTagAvatar);\n\n /** The tag's trailing icon. */\n readonly trailingIcon = contentChild(KbqTagTrailingIcon);\n\n /** The tag's remove toggler. */\n readonly removeIcon = contentChild(forwardRef(() => KbqTagRemove));\n\n /** Emitted when the tag is selected or deselected. */\n readonly selectionChange = output<KbqTagSelectionChange>();\n\n /** Emitted when the tag is destroyed and leaving the DOM. */\n readonly destroyed = output<KbqTagEvent>();\n\n /**\n * Emitted when a tag is to be removed.\n * Fires on programmatic and UI removal (click or keyboard).\n */\n readonly removed = output<KbqTagEvent>();\n\n /** Whether the tag is selected. */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input({ transform: booleanAttribute })\n get selected(): boolean {\n return this._selected;\n }\n\n set selected(value: boolean) {\n this.setSelectedState(value, { emitEvent: true });\n }\n\n private _selected: boolean = false;\n\n /** The value of the tag. Defaults to the content inside `<kbq-tag>` tags. */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get value(): any {\n return this._value ?? this.elementRef.nativeElement.textContent?.trim();\n }\n\n set value(value: any) {\n this._value = value;\n }\n\n private _value: any;\n\n /**\n * Whether the tag is selectable.\n */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input({ transform: booleanAttribute })\n get selectable(): boolean {\n return this._selectable || !!this.tagList?.selectable();\n }\n\n set selectable(value: boolean) {\n this._selectable = value;\n }\n\n private _selectable: boolean = false;\n\n /**\n * Determines whether the tag is removable.\n */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input({ transform: booleanAttribute })\n get removable(): boolean {\n return this._removable && (this.tagList?.removable ?? true);\n }\n\n set removable(value: boolean) {\n this._removable = value;\n }\n\n private _removable: boolean = true;\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get tabindex() {\n if (this.disabled) return null;\n if (this._tabindex === -1 && this.selectable && !this.tagList) return 0;\n\n return this._tabindex;\n }\n\n set tabindex(value: any) {\n this._tabindex = value;\n }\n\n private _tabindex = -1;\n\n /**\n * Whether the tag is disabled.\n */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input({ transform: booleanAttribute })\n get disabled(): boolean {\n return this._disabled || (this.tagList?.disabled ?? false);\n }\n\n set disabled(value: boolean) {\n this._disabled = value;\n this.syncDragDisabledState();\n }\n\n private _disabled: boolean = false;\n\n /**\n * Whether the tag is draggable.\n *\n * @docs-private\n */\n protected get draggable(): boolean {\n return (this.tagList?.draggable ?? false) && !this.disabled;\n }\n\n constructor() {\n super();\n\n this.color = KbqComponentColors.ContrastFade;\n this.setDefaultColor(KbqComponentColors.ContrastFade);\n\n this.addHostClassName();\n this.setupDragInitialProperties();\n }\n\n ngAfterContentInit() {\n this.addClassModificatorForIcons();\n }\n\n ngAfterViewInit(): void {\n this.setupFocusMonitor();\n }\n\n ngOnDestroy(): void {\n this.cancelEditing('destroy');\n this.focusMonitor.stopMonitoring(this.elementRef);\n this.destroyed.emit({ tag: this });\n }\n\n /** @docs-private */\n addClassModificatorForIcons() {\n const icons = this.contentChildren().map((item) => item.elementRef.nativeElement);\n\n if (icons.length === 1) {\n const iconElement = icons[0];\n\n if (iconElement.classList.contains('kbq-tag-remove')) {\n iconElement.classList.add('kbq-icon_right');\n this.nativeElement.classList.add('kbq-right-icon');\n } else {\n iconElement.classList.add('kbq-icon_left');\n this.nativeElement.classList.add('kbq-left-icon');\n }\n } else if (icons.length > 1) {\n const firstIconElement = icons[0];\n const secondIconElement = icons[1];\n\n firstIconElement.classList.add('kbq-icon_left');\n secondIconElement.classList.add('kbq-icon_right');\n }\n }\n\n /** @docs-private */\n addHostClassName() {\n // Add class for the different tags\n for (const attr of TAG_ATTRIBUTE_NAMES) {\n if (\n this.elementRef.nativeElement.hasAttribute(attr) ||\n this.elementRef.nativeElement.tagName.toLowerCase() === attr\n ) {\n (this.elementRef.nativeElement as HTMLElement).classList.add(attr);\n\n return;\n }\n }\n\n (this.elementRef.nativeElement as HTMLElement).classList.add('kbq-standard-tag');\n }\n\n /**\n * Selects the tag.\n */\n select(): void {\n if (this.disabled || !this.selectable) return;\n\n this.setSelectedState(true, { emitEvent: true });\n }\n\n /**\n * Deselects the tag.\n */\n deselect(): void {\n if (this.disabled || !this.selectable) return;\n\n this.setSelectedState(false, { emitEvent: true });\n }\n\n /**\n * Selects the tag and emits event with isUserInput flag.\n *\n * @docs-private\n */\n selectViaInteraction(): void {\n if (this.disabled || !this.selectable) return;\n\n this.setSelectedState(true, { isUserInput: true, emitEvent: true });\n }\n\n /**\n * Toggles the current selected state of the tag.\n */\n toggleSelected(isUserInput: boolean = false): boolean {\n if (this.disabled || !this.selectable) return this.selected;\n\n this.setSelectedState(!this.selected, { isUserInput, emitEvent: true });\n\n return this.selected;\n }\n\n /** Focuses the tag. */\n focus(): void {\n if (this.disabled) return;\n\n this.elementRef.nativeElement.focus();\n }\n\n /**\n * Allows for programmatic removal of the tag. Called by the KbqTagList when the DELETE or\n * BACKSPACE keys are pressed.\n *\n * Informs any listeners of the removal request. Does not remove the tag from the DOM.\n */\n remove(): void {\n if (this.removable) {\n this.removed.emit({ tag: this });\n }\n }\n\n /** @docs-private */\n handleClick(event: MouseEvent): void {\n if (this.disabled || this.editing()) {\n event.preventDefault();\n\n return;\n }\n\n if (\n // We should toggle selection only if tag inside of a tag list.\n // Single tag can only be toggled on focus or blur.\n this.tagList &&\n this.selectable &&\n hasModifierKey(event, 'metaKey', 'ctrlKey', 'shiftKey')\n ) {\n this.toggleSelected(true);\n\n // We should stop event propagation to prevent the tag list from handling the click event.\n event.stopPropagation();\n\n return;\n }\n\n if (!this.tagList && this.selectable) {\n this.toggleSelected(true);\n }\n }\n\n /** @docs-private */\n handleKeydown(event: KeyboardEvent): void {\n if (this.disabled || this.editing()) return;\n\n switch (event.keyCode) {\n case DELETE:\n case BACKSPACE: {\n // If there is a tag list and it has selected tags, remove them, otherwise remove focused tag.\n if (this.tagList?.selected.length) {\n this.tagList.removeSelected();\n } else {\n this.remove();\n }\n\n // Always prevent so page navigation does not occur\n event.preventDefault();\n break;\n }\n case SPACE: {\n this.toggleSelected(true);\n this.focusMonitor.focusVia(this.elementRef, 'keyboard');\n\n // Always prevent space from scrolling the page since the list has focus\n event.preventDefault();\n break;\n }\n case F2:\n case ENTER:\n this.startEditing(event.key);\n break;\n default:\n }\n }\n\n /** @docs-private */\n blur(): void {\n this.elementRef.nativeElement.blur();\n }\n\n /** @docs-private */\n protected handleDblClick(event: MouseEvent): void {\n if (this.disabled || !this.editable) return;\n\n event.stopPropagation();\n this.startEditing('dblclick');\n }\n\n private startEditing(reason: string): void {\n if (!this.editable || this.editing()) return;\n\n this.editing.set(true);\n this.editChange.emit({ tag: this, type: 'start', reason });\n\n setTimeout(() => {\n const input = this.editInputElementRef()?.nativeElement;\n\n if (!input) throw getTagEditInputMissingError();\n\n this.focusMonitor.focusVia(this.elementRef.nativeElement, 'keyboard');\n input.select();\n });\n }\n\n /** @docs-private */\n cancelEditing(reason: string): void {\n if (!this.editing()) return;\n\n this.editing.set(false);\n this.editChange.emit({ tag: this, type: 'cancel', reason });\n\n this.textElement.nativeElement.scrollTo?.({ left: 0, behavior: 'instant' });\n }\n\n /** @docs-private */\n submitEditing(reason: string): void {\n if (!this.editing() || this.preventEditSubmit()) return;\n\n this.editing.set(false);\n this.editChange.emit({ tag: this, type: 'submit', reason });\n\n this.textElement.nativeElement.scrollTo?.({ left: 0, behavior: 'instant' });\n }\n\n /**\n * Sets the selected state of the tag.\n *\n * @docs-private\n */\n setSelectedState(selected: boolean, options: Partial<{ isUserInput: boolean; emitEvent: boolean }> = {}): void {\n const { isUserInput = false, emitEvent = false } = options;\n\n if (selected !== this.selected) {\n this._selected = selected;\n\n if (emitEvent) {\n this.selectionChange.emit({\n source: this,\n isUserInput,\n selected: this.selected\n });\n }\n\n this.changeDetectorRef.markForCheck();\n }\n }\n\n private setupDragInitialProperties(): void {\n this.syncDragDisabledState();\n\n this.drag.started.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.drag.data = { tag: this };\n });\n }\n\n private syncDragDisabledState(): void {\n this.drag.disabled = !this.draggable;\n }\n\n private setupFocusMonitor(): void {\n this.focusMonitor.monitor(this.elementRef, true).subscribe((origin) => {\n if (this.disabled) return;\n\n const hasFocus = !isNull(origin);\n\n if (hasFocus !== this.hasFocus) {\n this.hasFocus = hasFocus;\n\n if (this.hasFocus) {\n this.onFocus.next({ tag: this, origin });\n if (!this.tagList && origin !== 'mouse') this.select();\n } else {\n this.onBlur.next({ tag: this });\n this.cancelEditing('blur');\n if (!this.tagList) this.deselect();\n }\n\n this.changeDetectorRef.markForCheck();\n }\n });\n }\n}\n\n/**\n *\n * Example:\n *\n * `<kbq-tag>\n * <kbq-icon kbqTagRemove>cancel</kbq-icon>\n * </kbq-tag>`\n *\n * You *may* use a custom icon, but you may need to override the `kbq-tag-remove` positioning\n * styles to properly center the icon within the tag.\n */\n@Directive({\n selector: '[kbqTagRemove]',\n host: {\n class: 'kbq-tag-remove kbq-tag-trailing-icon',\n '[attr.tabindex]': '-1',\n '(click)': 'handleClick($event)',\n '(focus)': 'focus($event)'\n }\n})\nexport class KbqTagRemove {\n protected parentTag = inject(KbqTag);\n\n /** @docs-private */\n focus(event: FocusEvent): void {\n event.stopPropagation();\n }\n\n /**\n * Calls the parent tag's public `remove()` method if applicable.\n *\n * @docs-private\n */\n handleClick(event: Event): void {\n if (this.parentTag.removable) {\n this.parentTag.hasFocus = true;\n\n this.parentTag.remove();\n }\n\n // We need to stop event propagation because otherwise the event will bubble up to the\n // form field and cause the `onContainerClick` method to be invoked. This method would then\n // reset the focused tag that has been focused after tag removal. Usually the parent\n // the parent click listener of the `KbqTag` would prevent propagation, but it can happen\n // that the tag is being removed before the event bubbles up.\n event.stopPropagation();\n }\n}\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { CdkDragDrop, CdkDropList } from '@angular/cdk/drag-drop';\nimport { BACKSPACE, END, HOME, LEFT_ARROW, TAB } from '@angular/cdk/keycodes';\nimport {\n AfterContentInit,\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n contentChild,\n ContentChildren,\n DestroyRef,\n DoCheck,\n ElementRef,\n forwardRef,\n inject,\n Input,\n input,\n OnDestroy,\n output,\n QueryList,\n ViewEncapsulation\n} from '@angular/core';\nimport { outputToObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, FormGroupDirective, NgControl, NgForm, UntypedFormControl } from '@angular/forms';\nimport { CanUpdateErrorState, ErrorStateMatcher, FocusKeyManager, isNull, isSelectAll } from '@koobiq/components/core';\nimport { KbqCleaner, KbqFormFieldControl } from '@koobiq/components/form-field';\nimport { merge, Observable, Subject } from 'rxjs';\nimport { filter, startWith, takeUntil } from 'rxjs/operators';\nimport { KbqTagTextControl } from './tag-text-control';\nimport {\n KbqTag,\n KbqTagDragData,\n KbqTagEditChange,\n KbqTagEvent,\n KbqTagFocusEvent,\n KbqTagSelectionChange\n} from './tag.component';\n\n// Increasing integer for generating unique ids for tag-list components.\nlet nextUniqueId = 0;\n\n/** Change event object that is emitted when the tag list value has changed. */\nexport class KbqTagListChange {\n constructor(\n public source: KbqTagList,\n public value: any\n ) {}\n}\n\nexport type KbqTagListDroppedEvent = Pick<CdkDragDrop<unknown>, 'event' | 'previousIndex' | 'currentIndex'> & {\n tag: KbqTag;\n};\n\n@Component({\n selector: 'kbq-tag-list',\n template: `\n <div class=\"kbq-tags-list__list-container\">\n <ng-content />\n </div>\n\n @if (canShowCleaner) {\n <div class=\"kbq-tags-list__cleaner\">\n <ng-content select=\"kbq-cleaner\" />\n </div>\n }\n `,\n styleUrls: ['tag-list.scss', 'tag-tokens.scss'],\n providers: [{ provide: KbqFormFieldControl, useExisting: KbqTagList }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-tag-list',\n '[class.kbq-disabled]': 'disabled',\n '[class.kbq-invalid]': 'errorState',\n '[class.kbq-tag-list_selectable]': 'selectable()',\n '[class.kbq-tag-list_editable]': 'editable()',\n '[class.kbq-tag-list_removable]': 'removable',\n '[class.kbq-tag-list_draggable]': 'draggable',\n '[attr.tabindex]': 'tabIndex',\n '[id]': 'uid',\n '(focus)': 'focus()',\n '(blur)': 'blur()',\n '(keydown)': 'keydown($event)'\n },\n hostDirectives: [CdkDropList],\n exportAs: 'kbqTagList'\n})\nexport class KbqTagList\n implements\n KbqFormFieldControl<any>,\n ControlValueAccessor,\n AfterContentInit,\n DoCheck,\n OnDestroy,\n CanUpdateErrorState,\n AfterViewInit\n{\n protected elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private changeDetectorRef = inject(ChangeDetectorRef);\n defaultErrorStateMatcher = inject(ErrorStateMatcher);\n private dir = inject(Directionality, { optional: true });\n parentForm = inject(NgForm, { optional: true });\n parentFormGroup = inject(FormGroupDirective, { optional: true });\n ngControl = inject(NgControl, { optional: true, self: true })!;\n\n private readonly dropList = inject(CdkDropList, { host: true });\n private readonly destroyRef = inject(DestroyRef);\n private readonly focusMonitor = inject(FocusMonitor);\n\n /**\n * Implemented as part of KbqFormFieldControl.\n *\n * @docs-private\n */\n readonly controlType: string = 'tag-list';\n\n /**\n * Emits whenever the component state changes and should cause the parent\n * form-field to update. Implemented as part of `KbqFormFieldControl`.\n * @docs-private\n */\n readonly stateChanges = new Subject<void>();\n\n /**\n * Combined stream of all of the child tags' selection change events.\n *\n * @docs-private\n */\n get tagSelectionChanges(): Observable<KbqTagSelectionChange> {\n return merge(...this.tags.map((tag) => outputToObservable(tag.selectionChange)));\n }\n\n /**\n * Combined stream of all of the child tags' focus change events.\n *\n * @docs-private\n */\n get tagFocusChanges(): Observable<KbqTagFocusEvent> {\n return merge(...this.tags.map((tag) => tag.onFocus));\n }\n\n /**\n * Combined stream of all of the child tags' blur change events.\n *\n * @docs-private\n */\n get tagBlurChanges(): Observable<KbqTagEvent> {\n return merge(...this.tags.map((tag) => tag.onBlur));\n }\n\n /**\n * Combined stream of all of the child tags' destroyed events.\n *\n * @docs-private\n */\n get tagRemoveChanges(): Observable<KbqTagEvent> {\n return merge(...this.tags.map((tag) => outputToObservable(tag.destroyed)));\n }\n\n /**\n * Combined stream of all of the child tags' removal request events.\n *\n * @docs-private\n */\n protected get tagBeforeRemoveChanges(): Observable<KbqTagEvent> {\n return merge(...this.tags.map((tag) => outputToObservable(tag.removed)));\n }\n\n /**\n * Combined stream of all of the child tags' edit change events.\n *\n * @docs-private\n */\n get tagEditChanges(): Observable<KbqTagEditChange> {\n return merge(...this.tags.map((tag) => outputToObservable(tag.editChange)));\n }\n\n /**\n * The array of selected tags inside tag list.\n *\n * @docs-private\n */\n get selected(): KbqTag[] {\n return this.tags.filter(({ selected }) => selected);\n }\n\n /** @docs-private */\n get canShowCleaner(): boolean {\n return !!this.cleaner() && this.tags.length > 0;\n }\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get value(): any {\n return this._value;\n }\n\n set value(value: any) {\n this._value = value;\n }\n\n private _value: any;\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n get id(): string {\n return this.tagInput ? this.tagInput.id : this.uid;\n }\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get required(): boolean {\n return this._required;\n }\n\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n\n this.stateChanges.next();\n }\n\n private _required: boolean = false;\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get placeholder(): string {\n return this.tagInput ? this.tagInput.placeholder : this._placeholder;\n }\n\n set placeholder(value: string) {\n this._placeholder = value;\n this.stateChanges.next();\n }\n\n private _placeholder: string;\n\n /** Whether any tags or the kbqTagInput inside of this tag-list has focus. */\n get focused(): boolean {\n return (this.tagInput && this.tagInput.focused) || this.hasFocusedTag();\n }\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n get empty(): boolean {\n return (!this.tagInput || this.tagInput.empty) && this.tags.length === 0;\n }\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n get shouldLabelFloat(): boolean {\n return !this.empty || this.focused;\n }\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input({ transform: booleanAttribute })\n get disabled(): boolean {\n return this.ngControl ? !!this.ngControl.disabled : this._disabled;\n }\n\n set disabled(value: boolean) {\n this._disabled = value;\n this.syncDropListDisabledState();\n }\n\n private _disabled: boolean = false;\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input({ transform: booleanAttribute })\n get draggable(): boolean {\n return this._draggable && !this.disabled;\n }\n\n set draggable(value: boolean) {\n this._draggable = value;\n this.syncDropListDisabledState();\n }\n\n private _draggable: boolean = false;\n\n /**\n * Emits when the user drops tag inside tag list container.\n */\n readonly dropped = output<KbqTagListDroppedEvent>();\n\n /**\n * Whether or not this tag list is selectable. When a tag list is not selectable,\n * the selected states for all the tags inside the tag list are always ignored.\n */\n readonly selectable = input(true, { transform: booleanAttribute });\n\n /** Whether the tags in the list are editable. */\n readonly editable = input(false, { transform: booleanAttribute });\n\n /** Whether the tags in the list are removable. */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input({ transform: booleanAttribute })\n get removable(): boolean {\n return this._removable;\n }\n\n set removable(value: boolean) {\n this._removable = value;\n this.syncTagsRemovableState();\n }\n\n private _removable = true;\n\n /**\n * Tab index of the tag list. This property is ignored when the tag list contains a tag input or is disabled.\n *\n * @docs-private\n */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get tabIndex(): number | null {\n return this.disabled || this.tagInput ? null : this._tabIndex;\n }\n\n set tabIndex(value: number) {\n this.userTabIndex = value;\n this._tabIndex = value;\n }\n\n private _tabIndex = 0;\n\n /**\n * Event that emits whenever the raw value of the tag-list changes. This is here primarily\n * to facilitate the two-way binding for the `value` input.\n * @docs-private\n */\n readonly valueChange = output<any>();\n\n /** @docs-private */\n uid: string = `kbq-tag-list-${nextUniqueId++}`;\n\n /**\n * User defined tab index.\n * When it is not null, use user defined tab index. Otherwise use tabIndex\n *\n * @docs-private\n */\n userTabIndex: number | null = null;\n\n /** @docs-private */\n keyManager: FocusKeyManager<KbqTag>;\n\n /** An object used to control when error messages are shown. */\n // TODO: Skipped for migration because:\n // This input overrides a field from a superclass, while the superclass field\n // is not migrated.\n @Input() errorStateMatcher: ErrorStateMatcher;\n\n /** Event emitted when the selected tag list value has been changed by the user. */\n readonly change = output<KbqTagListChange>();\n\n /** @docs-private */\n readonly cleaner = contentChild<KbqCleaner>('kbqTagListCleaner');\n\n /**\n * The tag components contained within this tag list.\n *\n * @docs-private\n */\n @ContentChildren(forwardRef(() => KbqTag), {\n // Need to use `descendants: true`,\n // Ivy will no longer match indirect descendants if it's left as false.\n descendants: true\n })\n tags: QueryList<KbqTag>;\n\n /**\n * Whether the component is in an error state.\n *\n * @docs-private\n */\n errorState: boolean = false;\n\n /** The tag input to add more tags */\n private tagInput: KbqTagTextControl;\n\n /** True when the next `tags.changes` emission is triggered by a UI action, not programmatic update. */\n private pendingUIChange = false;\n\n /**\n * When a tag is destroyed, we store the index of the destroyed tag until the tags\n * query list notifies about the update. This is necessary because we cannot determine an\n * appropriate tag that should receive focus until the array of tags updated completely.\n */\n private lastDestroyedTagIndex: number | null = null;\n\n /** Triggers unsubscription from all per-tags streams when tags are reset. */\n private readonly tagsSubscriptions$ = new Subject<void>();\n\n constructor() {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n\n this.setupDropListInitialProperties();\n }\n\n ngDoCheck() {\n if (this.ngControl) {\n // We need to re-evaluate this on every change detection cycle, because there are some\n // error triggers that we can't subscribe to (e.g. parent form submissions). This means\n // that whatever logic is in here has to be super lean or we risk destroying the performance.\n this.updateErrorState();\n }\n }\n\n ngAfterContentInit() {\n this.keyManager = new FocusKeyManager<KbqTag>(this.tags)\n .withVerticalOrientation()\n .withHorizontalOrientation(this.dir ? this.dir.value : 'ltr')\n .skipPredicate(({ disabled }) => disabled);\n\n if (this.dir) {\n this.dir.change\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((dir) => this.keyManager.withHorizontalOrientation(dir));\n }\n\n // Prevents the tag list from capturing focus and redirecting\n // it back to the first tag when the user tabs out.\n this.keyManager.tabOut.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this._tabIndex = -1;\n // Direct DOM write since the binding update is deferred with eventCoalescing.\n this.elementRef.nativeElement.tabIndex = -1;\n\n setTimeout(() => {\n this._tabIndex = this.userTabIndex || 0;\n this.changeDetectorRef.markForCheck();\n });\n });\n\n // When the list changes, re-subscribe\n this.tags.changes\n .pipe(startWith(null), takeUntilDestroyed(this.destroyRef))\n .subscribe((currentTags: QueryList<KbqTag> | null) => {\n this.resetTags();\n\n // Check to see if we need to update our tab index\n this.updateTabIndex();\n\n // Check to see if we have a destroyed tag and need to refocus\n this.updateFocusForDestroyedTags();\n\n // Defer setting the value in order to avoid the \"Expression\n // has changed after it was checked\" errors from Angular.\n Promise.resolve().then(() => {\n this.stateChanges.next();\n\n if (currentTags && this.pendingUIChange) {\n this.pendingUIChange = false;\n this.propagateTagsChanges();\n }\n });\n });\n }\n\n ngAfterViewInit(): void {\n this.setupFocusMonitor();\n }\n\n ngOnDestroy() {\n this.stateChanges.complete();\n this.focusMonitor.stopMonitoring(this.elementRef);\n this.tagsSubscriptions$.next();\n }\n\n /** @docs-private */\n updateErrorState() {\n const oldState = this.errorState;\n const parent = this.parentFormGroup || this.parentForm;\n const matcher = this.errorStateMatcher || this.defaultErrorStateMatcher;\n const control = this.ngControl ? (this.ngControl.control as UntypedFormControl) : null;\n const newState = matcher.isErrorState(control, parent);\n\n if (newState !== oldState) {\n this.errorState = newState;\n this.stateChanges.next();\n }\n }\n\n /** @docs-private */\n onTouched = () => {};\n\n /** @docs-private */\n onChange: (value: any) => void = () => {};\n\n /** Notifies that the next `tags.changes` emission is UI-initiated. */\n notifyPendingTagChange(): void {\n this.pendingUIChange = true;\n }\n\n /**\n * Associates an HTML input element with this tag list.\n *\n * @docs-private\n */\n registerInput(inputElement: KbqTagTextControl): void {\n this.tagInput = inputElement;\n\n // todo need rethink about it (#DS-3740)\n if (this.ngControl && inputElement.ngControl?.statusChanges) {\n inputElement.ngControl.statusChanges.subscribe(() =>\n this.ngControl.control!.setErrors(inputElement.ngControl!.errors)\n );\n }\n }\n\n /**\n * Implemented as part of ControlValueAccessor.\n */\n writeValue(value: any): void {\n this.value = value;\n }\n\n /**\n * Implemented as part of ControlValueAccessor.\n */\n registerOnChange(fn: (value: any) => void): void {\n this.onChange = fn;\n }\n\n /**\n * Implemented as part of ControlValueAccessor.\n */\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n /**\n * Implemented as part of ControlValueAccessor.\n */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.stateChanges.next();\n }\n\n /**\n * Implemented as part of KbqFormFieldControl.\n *\n * @docs-private\n */\n onContainerClick(): void {\n this.focus();\n }\n\n /**\n * Focuses the tag list. If there is a tag input, focuses that instead.\n */\n focus(): void {\n if (this.disabled) return;\n\n if (this.tagInput) {\n this.focusInput();\n this.stateChanges.next();\n\n return;\n }\n\n if (this.tags.length > 0) {\n this.keyManager.setFirstItemActive();\n this.stateChanges.next();\n\n return;\n }\n }\n\n /**\n * Focuses the tag input inside the tag list.\n *\n * @docs-private\n */\n focusInput() {\n if (this.tagInput) {\n this.tagInput.focus();\n }\n }\n\n /**\n * Pass events to the keyboard manager. Available here for tests.\n *\n * @docs-private\n */\n keydown(event: KeyboardEvent): void {\n const target = event.target as HTMLElement | null;\n\n if (this.disabled || isNull(target)) return;\n\n const shouldSelectAll = this.selectable() && isSelectAll(event);\n\n if (this.isInputEmpty(target)) {\n if (\n event.keyCode === BACKSPACE ||\n event.keyCode === LEFT_ARROW ||\n (event.keyCode === TAB && event.shiftKey)\n ) {\n this.keyManager.setLastItemActive();\n event.preventDefault();\n\n return;\n }\n\n if (shouldSelectAll) {\n this.selectAll();\n this.keyManager.setLastItemActive();\n event.preventDefault();\n\n return;\n }\n } else if (this.isTagElement(target)) {\n if (event.keyCode === HOME) {\n this.keyManager.setFirstItemActive();\n event.preventDefault();\n } else if (event.keyCode === END) {\n this.keyManager.setLastItemActive();\n event.preventDefault();\n } else if (shouldSelectAll) {\n this.selectAll();\n this.keyManager.setLastItemActive();\n event.preventDefault();\n } else {\n this.keyManager.onKeydown(event);\n }\n\n this.stateChanges.next();\n }\n }\n\n /** When blurred, mark the field as touched when focus moved outside the tag list. */\n blur() {\n if (!this.hasFocusedTag()) {\n this.keyManager.setActiveItem(-1);\n }\n\n if (!this.disabled) {\n if (this.tagInput) {\n // If there's a tag input, we should check whether the focus moved to tag input.\n // If the focus is not moved to tag input, mark the field as touched. If the focus moved\n // to tag input, do nothing.\n // Timeout is needed to wait for the focus() event trigger on tag input.\n setTimeout(() => {\n if (!this.focused) {\n this.markAsTouched();\n }\n });\n } else {\n // If there's no tag input, then mark the field as touched.\n this.markAsTouched();\n }\n }\n }\n\n /** Mark the field as touched */\n markAsTouched() {\n this.onTouched();\n this.changeDetectorRef.markForCheck();\n this.stateChanges.next();\n }\n\n /**\n * Check the tab index as you should not be allowed to focus an empty list.\n *\n * @docs-private\n */\n protected updateTabIndex(): void {\n // If we have 0 tags, we should not allow keyboard focus\n this._tabIndex = this.userTabIndex || (this.tags.length === 0 ? -1 : 0);\n }\n\n /**\n * If the amount of tags changed, we need to update the\n * key manager state and focus the next closest tag.\n *\n * @docs-private\n */\n protected updateFocusForDestroyedTags() {\n if (this.lastDestroyedTagIndex != null) {\n if (this.tags.length) {\n const newTagIndex = Math.min(this.lastDestroyedTagIndex, this.tags.length - 1);\n\n this.keyManager.setActiveItem(newTagIndex);\n } else {\n this.focusInput();\n }\n }\n\n this.lastDestroyedTagIndex = null;\n }\n\n /**\n * Utility to ensure all indexes are valid.\n *\n * @param index The index to be checked.\n * @returns True if the index is valid for our list of tags.\n */\n private isValidIndex(index: number): boolean {\n return index >= 0 && index < this.tags.length;\n }\n\n private isInputElement(element: HTMLElement): element is HTMLInputElement {\n return element.nodeName.toLowerCase() === 'input';\n }\n\n private isInputEmpty(element: HTMLElement): boolean {\n if (!this.isInputElement(element)) return false;\n\n return !element.value;\n }\n\n private isTagElement(element: HTMLElement): boolean {\n return element.classList.contains('kbq-tag');\n }\n\n private selectAll(): void {\n this.tags.forEach((tag) => tag.selectViaInteraction());\n }\n\n /**\n * Unselects all tags in the list.\n *\n * @docs-private\n */\n unselectAll(): void {\n this.tags.forEach((tag) => tag.setSelectedState(false));\n }\n\n /**\n * Removes all selected tags from the list.\n *\n * @docs-private\n */\n removeSelected(): void {\n this.selected.forEach((tag) => tag.remove());\n }\n\n private propagateTagsChanges(): void {\n const valueToEmit: any = this.tags.map((tag) => tag.value);\n\n this._value = valueToEmit;\n this.change.emit(new KbqTagListChange(this, valueToEmit));\n this.valueChange.emit(valueToEmit);\n this.onChange(valueToEmit);\n this.changeDetectorRef.markForCheck();\n }\n\n private resetTags(): void {\n this.tagsSubscriptions$.next();\n this.listenToTagsFocus();\n this.listenToTagsRemoved();\n this.listenToTagsEdit();\n }\n\n /** Listens to user-generated selection events on each tag. */\n private listenToTagsFocus(): void {\n this.tagFocusChanges.pipe(takeUntil(this.tagsSubscriptions$)).subscribe(({ tag, origin }) => {\n const tagIndex = this.tags.toArray().indexOf(tag);\n\n if (this.isValidIndex(tagIndex)) {\n this.keyManager.setFocusOrigin(origin);\n this.keyManager.updateActiveItem(tagIndex);\n }\n\n this.stateChanges.next();\n });\n\n this.tagBlurChanges.pipe(takeUntil(this.tagsSubscriptions$)).subscribe(() => {\n this.blur();\n\n this.stateChanges.next();\n });\n }\n\n private listenToTagsRemoved(): void {\n this.tagRemoveChanges.pipe(takeUntil(this.tagsSubscriptions$)).subscribe((event) => {\n const tag = event.tag;\n const tagIndex = this.tags.toArray().indexOf(event.tag);\n\n // In case the tag that will be removed is currently focused, we temporarily store\n // the index in order to be able to determine an appropriate sibling tag that will\n // receive focus.\n if (this.isValidIndex(tagIndex) && tag.hasFocus) {\n this.lastDestroyedTagIndex = tagIndex;\n }\n });\n\n // Set the pending flag so the subsequent `tags.changes` is treated as UI action.\n this.tagBeforeRemoveChanges\n .pipe(takeUntil(this.tagsSubscriptions$))\n .subscribe(() => (this.pendingUIChange = true));\n }\n\n private listenToTagsEdit(): void {\n this.tagEditChanges\n .pipe(\n filter(({ type }) => type === 'submit'),\n takeUntil(this.tagsSubscriptions$)\n )\n .subscribe(() => this.propagateTagsChanges());\n }\n\n /** Checks whether any of the tags is focused. */\n private hasFocusedTag() {\n return this.tags.some((tag) => tag.hasFocus);\n }\n\n private syncTagsRemovableState(): void {\n this.tags?.forEach((tag) => (tag.removable = this.removable));\n }\n\n private setupDropListInitialProperties(): void {\n this.syncDropListDisabledState();\n this.dropList.elementContainerSelector = '.kbq-tags-list__list-container';\n this.dropList.orientation = 'mixed';\n this.dropList.dropped\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(({ currentIndex, previousIndex, event, item }) => {\n this.pendingUIChange = true;\n\n const { tag }: KbqTagDragData = item.data;\n\n this.dropped.emit({ currentIndex, previousIndex, event, tag });\n });\n }\n\n private syncDropListDisabledState(): void {\n this.dropList.disabled = !this.draggable;\n }\n\n private setupFocusMonitor(): void {\n this.focusMonitor.monitor(this.elementRef, true).subscribe((origin) => {\n if (!origin) this.unselectAll();\n });\n }\n}\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n booleanAttribute,\n Directive,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n input,\n OnChanges,\n output\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { KbqAutocompleteTrigger } from '@koobiq/components/autocomplete';\nimport { COMMA, ENTER, hasModifierKey, KbqFieldSizingContent, SEMICOLON, SPACE, TAB } from '@koobiq/components/core';\nimport { KbqTrim } from '@koobiq/components/form-field';\nimport { KBQ_TAGS_DEFAULT_OPTIONS, KbqTagsDefaultOptions } from './tag-default-options';\nimport { KbqTagList } from './tag-list.component';\nimport { KbqTagTextControl } from './tag-text-control';\n\nconst KBQ_TAG_INPUT_DEFAULT_SEPARATORS: { [key: number]: KbqTagSeparator } = {\n [ENTER]: { symbol: /\\r?\\n/, key: 'Enter' },\n [TAB]: { symbol: /\\t/, key: 'Tab' },\n [SPACE]: { symbol: / /, key: ' ' },\n [COMMA]: { symbol: /,/, key: ',' },\n [SEMICOLON]: { symbol: /;/, key: ';' }\n};\n\n/** Represents an input event on a `kbqTagInput`. */\nexport interface KbqTagInputEvent {\n /** The native `<input>` element that the event is being fired for. */\n input: HTMLInputElement;\n\n /** The value of the input. */\n value: string;\n}\n\nexport interface KbqTagSeparator {\n symbol: RegExp;\n key: string;\n}\n// Increasing integer for generating unique ids.\nlet nextUniqueId = 0;\n\n/**\n * Directive that adds tag-specific behaviors to an input element inside `<kbq-form-field>`.\n * May be placed inside or outside of an `<kbq-tag-list>`.\n */\n@Directive({\n selector: 'input[kbqTagInputFor]',\n host: {\n class: 'kbq-tag-input',\n '[id]': 'id',\n '[attr.disabled]': 'disabled || null',\n '[attr.placeholder]': 'placeholder || null',\n '(keydown)': 'onKeydown($event)',\n '(blur)': 'blur($event)',\n '(focus)': 'onFocus()',\n '(input)': 'onInput()',\n '(paste)': 'onPaste($event)'\n },\n hostDirectives: [KbqFieldSizingContent],\n exportAs: 'kbqTagInput, kbqTagInputFor'\n})\nexport class KbqTagInput implements KbqTagTextControl, OnChanges {\n private elementRef = inject<ElementRef<HTMLInputElement>>(ElementRef);\n private defaultOptions = inject<KbqTagsDefaultOptions>(KBQ_TAGS_DEFAULT_OPTIONS);\n private trimDirective = inject(KbqTrim, { optional: true, self: true });\n ngControl = inject(NgControl, { optional: true, self: true })!;\n autocompleteTrigger? = inject(KbqAutocompleteTrigger, { optional: true, self: true });\n /** Whether the control is focused. */\n focused: boolean = false;\n\n /**\n * The list of key codes that will trigger a tagEnd event.\n *\n * Defaults to `[ENTER]`.\n */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input('kbqTagInputSeparatorKeyCodes')\n set separatorKeyCodes(value: number[]) {\n this._separatorKeyCodes = value || [];\n }\n\n private _separatorKeyCodes: number[] = this.defaultOptions.separatorKeyCodes;\n\n /** @docs-private */\n get separators(): KbqTagSeparator[] {\n return this._separatorKeyCodes.reduce((acc: any, key) => {\n const separator = this.getSeparatorByKeyCode(key);\n\n return separator ? [...acc, separator] : acc;\n }, []);\n }\n\n private _separators = this.defaultOptions.separators || KBQ_TAG_INPUT_DEFAULT_SEPARATORS;\n\n /** Emitted when a tag is to be added. */\n readonly tagEnd = output<KbqTagInputEvent>({ alias: 'kbqTagInputTokenEnd' });\n\n /** A value indicating whether allow/prevent tags duplication */\n readonly distinct = input<boolean>(false);\n\n /** The input's placeholder text. */\n // TODO: Skipped for migration because:\n // This input overrides a field from a superclass, while the superclass field\n // is not migrated.\n @Input() placeholder: string = '';\n\n /** Unique id for the input. */\n // TODO: Skipped for migration because:\n // This input overrides a field from a superclass, while the superclass field\n // is not migrated.\n @Input() id: string = `kbq-tag-list-input-${nextUniqueId++}`;\n\n /** Register input for tag list */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input('kbqTagInputFor')\n set tagList(value: KbqTagList) {\n if (value) {\n this._tagList = value;\n this._tagList.registerInput(this);\n }\n }\n\n private _tagList: KbqTagList;\n\n /**\n * Whether or not the tagEnd event will be emitted when the input is blurred.\n */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input('kbqTagInputAddOnBlur')\n get addOnBlur(): boolean {\n return this._addOnBlur;\n }\n\n set addOnBlur(value: boolean) {\n this._addOnBlur = coerceBooleanProperty(value);\n }\n\n private _addOnBlur: boolean = true;\n\n /**\n * Whether the tagEnd event will be emitted when the text pasted.\n * @default true\n */\n readonly addOnPaste = input(this.defaultOptions.addOnPaste ?? true, {\n alias: 'kbqTagInputAddOnPaste',\n transform: booleanAttribute\n });\n\n /** Whether the input is disabled. */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get disabled(): boolean {\n return this._disabled || (this._tagList && this._tagList.disabled);\n }\n\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n }\n\n private _disabled: boolean = false;\n\n /** Whether the input is empty. */\n get empty(): boolean {\n return !this.inputElement.value;\n }\n\n /** The native input element to which this directive is attached. */\n private inputElement: HTMLInputElement;\n\n constructor() {\n this.inputElement = this.elementRef.nativeElement as HTMLInputElement;\n }\n\n ngOnChanges() {\n this._tagList.stateChanges.next();\n }\n\n /** @docs-private */\n onKeydown(event: KeyboardEvent) {\n const isSeparatorKey = this.isSeparatorKey(event);\n\n if (!this.inputElement.value) {\n if (isSeparatorKey) {\n event.preventDefault();\n }\n\n this._tagList.keydown(event);\n event.stopPropagation();\n\n return;\n }\n\n if (isSeparatorKey) {\n if (\n event.keyCode === ENTER &&\n this.autocompleteTrigger?.panelOpen &&\n this.autocompleteTrigger?.activeOption\n ) {\n return;\n }\n\n this.emitTagEnd();\n\n event.preventDefault();\n }\n }\n\n /** Checks to see if the blur should emit the (tagEnd) event. */\n blur(event: FocusEvent) {\n this.focused = false;\n\n // Blur the tag list if it is not focused\n if (!this._tagList.focused) {\n this.triggerValidation();\n\n this._tagList.blur();\n }\n\n if (this.addOnBlur && (this.autocompleteTrigger?.onInputBlur()(event) || true)) {\n this.emitTagEnd();\n }\n\n this._tagList.stateChanges.next();\n }\n\n triggerValidation() {\n if (!this.hasControl()) {\n return;\n }\n\n (this.ngControl.statusChanges as EventEmitter<string | null>).emit(this.ngControl.status);\n }\n\n /** Checks to see if the (tagEnd) event needs to be emitted. */\n emitTagEnd() {\n if (!this.hasControl() || (this.hasControl() && !this.ngControl.invalid)) {\n if (this.distinct() && this.hasDuplicates) return;\n\n this._tagList?.notifyPendingTagChange();\n this.tagEnd.emit({ input: this.inputElement, value: this.trimValue(this.inputElement.value) });\n }\n }\n\n get hasDuplicates(): boolean {\n return this._tagList.tags\n .map(({ value }) => value)\n .some((tagValue) => tagValue === this.trimValue(this.inputElement.value));\n }\n\n onInput() {\n // Let tag list know whenever the value changes.\n this._tagList.stateChanges.next();\n }\n\n onPaste($event: ClipboardEvent) {\n if (!$event.clipboardData) {\n return;\n }\n\n const data = $event.clipboardData.getData('text');\n\n if ((data && data.length === 0) || !this.addOnPaste()) {\n return;\n }\n\n const separatorsInString = this.getSeparatorsForString(data);\n\n // prettier-ignore\n const dividedString: string[] = separatorsInString.length > 0 ?\n [...data.split(new RegExp(`${separatorsInString.join('|')}`))] :\n [data];\n\n let items: string[] = dividedString.map((item) => this.trimValue(item));\n\n if (items.length === 0) {\n items.push(data);\n }\n\n if (this.distinct()) {\n const tagValues: string[] = this._tagList.tags.map(({ value }) => value);\n\n items = items.filter((item) => !tagValues.includes(item));\n }\n\n if (items.length) {\n this._tagList?.notifyPendingTagChange();\n }\n\n items.forEach((item) => this.tagEnd.emit({ input: this.inputElement, value: item }));\n\n $event.preventDefault();\n $event.stopPropagation();\n }\n\n /** @docs-private */\n onFocus(): void {\n this.focused = true;\n this._tagList.unselectAll();\n this._tagList.stateChanges.next();\n }\n\n /** Focuses the input. */\n focus(): void {\n this.inputElement.focus();\n }\n\n private getSeparatorsForString(value: string): string[] {\n return this.separators\n .filter((separator) => value.search(separator.symbol) > -1)\n .map((separator) => separator.symbol.source);\n }\n\n private trimValue(value) {\n return this.trimDirective ? this.trimDirective.trim(value) : value;\n }\n\n private getSeparatorByKeyCode(keyCode: number): KbqTagSeparator | null {\n const sep = this._separators[keyCode];\n\n if (sep) {\n return sep;\n }\n\n return null;\n }\n\n private hasControl(): boolean {\n return !!this.ngControl;\n }\n\n /** Checks whether a keycode is one of the configured separators. */\n private isSeparatorKey(event: KeyboardEvent) {\n return this.separators.some((separator) => separator.key === event.key && !hasModifierKey(event));\n }\n}\n","import { PlatformModule } from '@angular/cdk/platform';\nimport { NgModule } from '@angular/core';\nimport { ENTER } from '@koobiq/components/core';\nimport { KBQ_TAGS_DEFAULT_OPTIONS, KbqTagsDefaultOptions } from './tag-default-options';\nimport { KbqTagInput } from './tag-input';\nimport { KbqTagList } from './tag-list.component';\nimport {\n KbqTag,\n KbqTagAvatar,\n KbqTagEditInput,\n KbqTagEditSubmit,\n KbqTagRemove,\n KbqTagTrailingIcon\n} from './tag.component';\n\nconst COMPONENTS = [\n KbqTagEditSubmit,\n KbqTagEditInput\n];\n\n@NgModule({\n imports: [\n PlatformModule,\n ...COMPONENTS,\n KbqTagList,\n KbqTag,\n KbqTagInput,\n KbqTagTrailingIcon,\n KbqTagAvatar,\n KbqTagRemove\n ],\n providers: [\n {\n provide: KBQ_TAGS_DEFAULT_OPTIONS,\n useValue: { separatorKeyCodes: [ENTER] } as KbqTagsDefaultOptions\n }\n ],\n exports: [\n KbqTagList,\n KbqTag,\n KbqTagInput,\n KbqTagTrailingIcon,\n KbqTagAvatar,\n KbqTagRemove,\n ...COMPONENTS\n ]\n})\nexport class KbqTagsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["contentChildren_1","nextUniqueId","i1","ENTER","TAB","SPACE"],"mappings":"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"}
|