UNPKG

@ng-doc/app

Version:

<!-- PROJECT LOGO --> <br /> <div align="center"> <a href="https://github.com/ng-doc/ng-doc"> <img src="https://ng-doc.com/assets/images/ng-doc.svg?raw=true" alt="Logo" height="150px"> </a>

1 lines 10.7 kB
{"version":3,"file":"ng-doc-app-components-search-dialog.mjs","sources":["../../../../libs/app/components/search-dialog/search-dialog.component.ts","../../../../libs/app/components/search-dialog/search-dialog.component.html","../../../../libs/app/components/search-dialog/ng-doc-app-components-search-dialog.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n forwardRef,\n inject,\n ViewChild,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { RouterLink } from '@angular/router';\nimport { NgDocSearchResult } from '@ng-doc/app/interfaces';\nimport { NgDocSanitizeHtmlPipe } from '@ng-doc/app/pipes';\nimport {\n NG_DOC_DIALOG_DATA,\n NgDocAutofocusDirective,\n NgDocDataListComponent,\n NgDocDropdownComponent,\n NgDocExecutePipe,\n NgDocFocusCatcherDirective,\n NgDocHighlighterPipe,\n NgDocHighlightPosition,\n NgDocIconComponent,\n NgDocInputStringDirective,\n NgDocInputWrapperComponent,\n NgDocLetDirective,\n NgDocSpinnerComponent,\n NgDocTagComponent,\n NgDocTextComponent,\n popupAnimation,\n StatedObservable,\n} from '@ng-doc/ui-kit';\nimport { NgDocListHost, NgDocOverlayRef } from '@ng-doc/ui-kit/classes';\n\nexport interface NgDocSearchDialogData {\n term: string;\n search: (query: string) => void;\n searchResults: StatedObservable<NgDocSearchResult[]>;\n}\n\n@Component({\n animations: [popupAnimation],\n selector: 'ng-doc-search-dialog',\n imports: [\n CommonModule,\n NgDocInputWrapperComponent,\n NgDocInputStringDirective,\n NgDocAutofocusDirective,\n NgDocIconComponent,\n NgDocDataListComponent,\n RouterLink,\n NgDocTagComponent,\n NgDocTextComponent,\n NgDocHighlighterPipe,\n NgDocSanitizeHtmlPipe,\n NgDocFocusCatcherDirective,\n NgDocDropdownComponent,\n NgDocLetDirective,\n NgDocSpinnerComponent,\n NgDocExecutePipe,\n FormsModule,\n ],\n templateUrl: './search-dialog.component.html',\n styleUrl: './search-dialog.component.scss',\n providers: [\n {\n provide: NgDocListHost,\n useExisting: forwardRef(() => NgDocSearchDialogComponent),\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[@popupAnimation]': 'true',\n },\n})\nexport class NgDocSearchDialogComponent implements NgDocListHost {\n @ViewChild('inputElement', { read: ElementRef })\n inputElement!: ElementRef<HTMLElement>;\n\n @ViewChild('resultContent', { read: ElementRef })\n resultContent?: ElementRef<HTMLElement>;\n\n protected searchTerm: string = '';\n protected readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n protected readonly overlayRef = inject(NgDocOverlayRef);\n protected readonly data = inject<NgDocSearchDialogData>(NG_DOC_DIALOG_DATA);\n\n constructor() {\n this.searchTerm = this.data.term;\n }\n\n search(query: string): void {\n this.data.search(query);\n\n if (this.resultContent) {\n this.resultContent.nativeElement.scrollTop = 0;\n }\n }\n\n getPositions<T extends NgDocSearchResult, K extends keyof T['positions']>(\n key: K,\n item: T,\n ): NgDocHighlightPosition[] {\n return item.positions[key] ?? [];\n }\n\n get listHostOrigin(): ElementRef<HTMLElement> {\n return this.inputElement ?? this.elementRef;\n }\n}\n","<div class=\"ng-doc-search-dialog-container\">\n <ng-doc-input-wrapper>\n <ng-doc-icon icon=\"search\" ngDocInputWrapperLeft></ng-doc-icon>\n <input\n ngDocInputString\n ngDocAutofocus\n [selectAll]=\"true\"\n placeholder=\"Find or ask anything...\"\n [(ngModel)]=\"searchTerm\"\n (ngModelChange)=\"search($event)\"\n #inputElement />\n </ng-doc-input-wrapper>\n\n <div\n class=\"ng-doc-search-result-content\"\n *ngIf=\"data.searchResults | async as state\"\n #resultContent>\n <ng-doc-data-list\n [items]=\"state?.result ?? []\"\n [itemContent]=\"itemContent\"\n [emptyContent]=\"emptyContent\">\n <ng-template let-item #itemContent>\n <a\n class=\"ng-doc-search-option\"\n [routerLink]=\"item.index.route\"\n [fragment]=\"item.index.fragment\"\n (click)=\"overlayRef.close()\">\n <div class=\"ng-doc-search-option-header\">\n <ng-doc-tag size=\"small\" [attr.data-ng-doc-page-type]=\"item.index.pageType\">\n {{ item.index.pageType }}\n </ng-doc-tag>\n <span class=\"ng-doc-search-option-breadcrumbs\" ng-doc-text>\n <ng-container *ngFor=\"let breadcrum of item.index.breadcrumbs; let i = index\">\n <span>{{ breadcrum }}</span>\n <span\n class=\"ng-doc-search-option-breadcrumb-divider\"\n *ngIf=\"i !== item.index.breadcrumbs.length - 1\"\n ><b>•</b></span\n >\n </ng-container>\n </span>\n </div>\n <h5\n class=\"ng-doc-search-section-title\"\n ng-doc-text\n [innerHTML]=\"\n (item.index.section\n | ngDocHighlighterPipe: (getPositions | execute: 'section' : item)\n | ngDocSanitizeHtml) || item.index.title\n \"></h5>\n <div\n *ngIf=\"item.index.content\"\n class=\"ng-doc-search-content\"\n [innerHTML]=\"\n item.index.content\n | ngDocHighlighterPipe: (getPositions | execute: 'content' : item)\n | ngDocSanitizeHtml\n \"\n ng-doc-text></div>\n </a>\n </ng-template>\n <ng-template #emptyContent>\n <ng-container *ngIf=\"!state?.pending\">\n <div class=\"ng-doc-search-empty\">\n <ng-container *ngIf=\"searchTerm.length\">Nothing found</ng-container>\n <ng-container *ngIf=\"!searchTerm.length\">Please enter your search query </ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"state?.pending\">\n <div class=\"ng-doc-search-progress\">\n <ng-doc-spinner size=\"small\"></ng-doc-spinner>\n Searching...\n </div>\n </ng-container>\n </ng-template>\n </ng-doc-data-list>\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}