@covalent/markdown-navigator 4.0.0 → 4.1.1-beta.3

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.
Files changed (39) hide show
  1. package/README.md +4 -222
  2. package/covalent-markdown-navigator.d.ts +2 -2
  3. package/esm2020/covalent-markdown-navigator.mjs +5 -0
  4. package/esm2020/markdown-navigator-window/markdown-navigator-window.component.mjs +84 -0
  5. package/esm2020/markdown-navigator-window-directive/markdown-navigator-window.directive.mjs +32 -0
  6. package/esm2020/markdown-navigator-window-service/markdown-navigator-window.service.mjs +130 -0
  7. package/esm2020/markdown-navigator.component.mjs +394 -0
  8. package/esm2020/markdown-navigator.module.mjs +73 -0
  9. package/esm2020/public_api.mjs +6 -0
  10. package/fesm2015/covalent-markdown-navigator.mjs +711 -0
  11. package/fesm2015/covalent-markdown-navigator.mjs.map +1 -0
  12. package/fesm2020/covalent-markdown-navigator.mjs +699 -0
  13. package/fesm2020/covalent-markdown-navigator.mjs.map +1 -0
  14. package/markdown-navigator-window/markdown-navigator-window.component.d.ts +15 -12
  15. package/markdown-navigator-window-directive/markdown-navigator-window.directive.d.ts +4 -1
  16. package/markdown-navigator-window-service/markdown-navigator-window.service.d.ts +3 -0
  17. package/markdown-navigator.component.d.ts +21 -18
  18. package/markdown-navigator.module.d.ts +16 -0
  19. package/package.json +39 -42
  20. package/{public-api.d.ts → public_api.d.ts} +1 -0
  21. package/src/README.md +237 -0
  22. package/bundles/covalent-markdown-navigator.umd.js +0 -1650
  23. package/bundles/covalent-markdown-navigator.umd.js.map +0 -1
  24. package/bundles/covalent-markdown-navigator.umd.min.js +0 -16
  25. package/bundles/covalent-markdown-navigator.umd.min.js.map +0 -1
  26. package/covalent-markdown-navigator.metadata.json +0 -1
  27. package/esm2015/covalent-markdown-navigator.js +0 -11
  28. package/esm2015/index.js +0 -7
  29. package/esm2015/markdown-navigator-window/markdown-navigator-window.component.js +0 -129
  30. package/esm2015/markdown-navigator-window-directive/markdown-navigator-window.directive.js +0 -50
  31. package/esm2015/markdown-navigator-window-service/markdown-navigator-window.service.js +0 -254
  32. package/esm2015/markdown-navigator.component.js +0 -698
  33. package/esm2015/markdown-navigator.module.js +0 -41
  34. package/esm2015/public-api.js +0 -10
  35. package/fesm2015/covalent-markdown-navigator.js +0 -1181
  36. package/fesm2015/covalent-markdown-navigator.js.map +0 -1
  37. package/index.d.ts +0 -1
  38. package/markdown-navigator-window/markdown-navigator-window.component.scss +0 -8
  39. package/markdown-navigator.component.scss +0 -50
@@ -0,0 +1 @@
1
+ {"version":3,"file":"covalent-markdown-navigator.mjs","sources":["../../../../libs/markdown-navigator/src/markdown-navigator.component.ts","../../../../libs/markdown-navigator/src/markdown-navigator.component.html","../../../../libs/markdown-navigator/src/markdown-navigator-window/markdown-navigator-window.component.ts","../../../../libs/markdown-navigator/src/markdown-navigator-window/markdown-navigator-window.component.html","../../../../libs/markdown-navigator/src/markdown-navigator-window-service/markdown-navigator-window.service.ts","../../../../libs/markdown-navigator/src/markdown-navigator-window-directive/markdown-navigator-window.directive.ts","../../../../libs/markdown-navigator/src/markdown-navigator.module.ts","../../../../libs/markdown-navigator/src/covalent-markdown-navigator.ts"],"sourcesContent":["import {\n Component,\n Input,\n OnChanges,\n SimpleChanges,\n HostListener,\n ViewChild,\n ElementRef,\n ChangeDetectorRef,\n ChangeDetectionStrategy,\n Type,\n Output,\n EventEmitter,\n SecurityContext,\n} from '@angular/core';\nimport {\n removeLeadingHash,\n isAnchorLink,\n TdMarkdownLoaderService,\n} from '@covalent/markdown';\nimport { ITdFlavoredMarkdownButtonClickEvent } from '@covalent/flavored-markdown';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { HttpClient } from '@angular/common/http';\nimport { ICopyCodeTooltips } from '@covalent/highlight';\nimport { firstValueFrom } from 'rxjs';\n\nexport interface IMarkdownNavigatorItem {\n id?: string;\n title?: string;\n url?: string;\n httpOptions?: object;\n markdownString?: string; // raw markdown\n anchor?: string;\n children?: IMarkdownNavigatorItem[];\n childrenUrl?: string;\n description?: string;\n icon?: string;\n footer?: Type<any>;\n startAtLink?: IMarkdownNavigatorItem;\n}\n\nexport interface IMarkdownNavigatorLabels {\n goHome?: string;\n goBack?: string;\n emptyState?: string;\n}\n\nexport type IMarkdownNavigatorCompareWith = (\n o1: IMarkdownNavigatorItem,\n o2: IMarkdownNavigatorItem\n) => boolean;\n\nexport const DEFAULT_MARKDOWN_NAVIGATOR_LABELS: IMarkdownNavigatorLabels = {\n goHome: 'Go home',\n goBack: 'Go back',\n emptyState: 'No item(s) to display',\n};\n\n@Component({\n selector: 'td-markdown-navigator',\n templateUrl: './markdown-navigator.component.html',\n styleUrls: ['./markdown-navigator.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TdMarkdownNavigatorComponent implements OnChanges {\n /**\n * items: IMarkdownNavigatorItem[]\n *\n * List of IMarkdownNavigatorItems to be rendered\n */\n @Input() items?: IMarkdownNavigatorItem[];\n\n /**\n * labels?: IMarkdownNavigatorLabels\n *\n * Translated labels\n */\n @Input() labels?: IMarkdownNavigatorLabels;\n\n /**\n * startAt?: IMarkdownNavigatorItem | IMarkdownNavigatorItem[];\n *\n * Item or path to start at\n */\n @Input() startAt?: IMarkdownNavigatorItem | IMarkdownNavigatorItem[];\n\n /**\n * copyCodeToClipboard?: boolean\n *\n * Display copy button on code snippets to copy code to clipboard.\n *\n */\n @Input() copyCodeToClipboard? = false;\n\n /**\n * copyCodeTooltips?: ICopyCodeTooltips\n *\n * Tooltips for copy button to copy and upon copying.\n */\n @Input() copyCodeTooltips?: ICopyCodeTooltips = {};\n\n /**\n * footer?: Type<any>\n *\n * Component to be displayed in footer\n */\n @Input() footer?: any;\n\n /**\n * compareWith?: IMarkdownNavigatorCompareWith\n *\n * Function used to find startAt item\n * Defaults to comparison by strict equality (===)\n */\n @Input() compareWith?: IMarkdownNavigatorCompareWith;\n\n @Output() buttonClicked: EventEmitter<ITdFlavoredMarkdownButtonClickEvent> =\n new EventEmitter();\n\n @ViewChild('markdownWrapper') markdownWrapper!: ElementRef;\n\n historyStack: IMarkdownNavigatorItem[] = []; // history\n currentMarkdownItem?: IMarkdownNavigatorItem; // currently rendered\n currentMenuItems?: IMarkdownNavigatorItem[] = []; // current menu items\n\n loading = false;\n\n markdownLoaderError?: string;\n childrenUrlError?: string;\n\n constructor(\n private _markdownUrlLoaderService: TdMarkdownLoaderService,\n private _changeDetectorRef: ChangeDetectorRef,\n private _sanitizer: DomSanitizer,\n private _http: HttpClient\n ) {}\n\n @HostListener('click', ['$event'])\n clickListener(event: Event): void {\n const element: HTMLElement = <HTMLElement>event.srcElement;\n if (\n element.matches('a[href]') &&\n isMarkdownHref(<HTMLAnchorElement>element)\n ) {\n this.handleLinkClick(event);\n }\n }\n\n get showGoBackButton(): boolean {\n return this.historyStack.length > 0;\n }\n\n get showHomeButton(): boolean {\n return this.historyStack.length > 1;\n }\n\n get showHeader(): boolean {\n return (\n this.showHomeButton || this.showGoBackButton || !!this.currentItemTitle\n );\n }\n\n get showMenu(): boolean {\n const showMenu = this.currentMenuItems && this.currentMenuItems.length > 0;\n return showMenu ?? false;\n }\n\n get showTdMarkdownLoader(): boolean {\n return (\n !!this.currentMarkdownItem &&\n !!this.currentMarkdownItem.url &&\n !this.showTdMarkdown\n );\n }\n\n get showTdMarkdown(): boolean {\n return (\n !!this.currentMarkdownItem && !!this.currentMarkdownItem.markdownString\n );\n }\n\n get url(): string | undefined {\n if (this.currentMarkdownItem) {\n return this.currentMarkdownItem.url;\n }\n return undefined;\n }\n\n get footerComponent(): any {\n if (this.currentMarkdownItem && this.currentMarkdownItem.footer) {\n return this.currentMarkdownItem.footer;\n }\n return this.footer;\n }\n get httpOptions(): object | undefined {\n if (this.currentMarkdownItem) {\n return this.currentMarkdownItem.httpOptions;\n }\n return undefined;\n }\n get markdownString(): string | undefined {\n if (this.currentMarkdownItem) {\n return this.currentMarkdownItem.markdownString;\n }\n return undefined;\n }\n\n get anchor(): string | undefined {\n if (this.currentMarkdownItem) {\n return this.currentMarkdownItem.anchor;\n }\n return undefined;\n }\n\n get showEmptyState(): boolean {\n return !this.items || this.items.length < 1;\n }\n\n get goHomeLabel(): string | undefined {\n return (\n (this.labels && this.labels.goHome) ||\n DEFAULT_MARKDOWN_NAVIGATOR_LABELS.goHome\n );\n }\n\n get goBackLabel(): string | undefined {\n return (\n (this.labels && this.labels.goBack) ||\n DEFAULT_MARKDOWN_NAVIGATOR_LABELS.goBack\n );\n }\n\n get emptyStateLabel(): string | undefined {\n return (\n (this.labels && this.labels.emptyState) ||\n DEFAULT_MARKDOWN_NAVIGATOR_LABELS.emptyState\n );\n }\n\n get currentItemTitle(): string {\n if (this.historyStack.length < 1) {\n return '';\n } else if (this.currentMarkdownItem) {\n return this.getTitle(this.currentMarkdownItem);\n } else if (this.historyStack.length > 0) {\n return this.getTitle(this.historyStack[this.historyStack.length - 1]);\n }\n return '';\n }\n\n async ngOnChanges(changes: SimpleChanges): Promise<void> {\n if (changes['items']) {\n this.reset();\n }\n if (changes['startAt'] && this.items && this.startAt) {\n this._jumpTo(this.startAt, undefined);\n }\n }\n\n hasChildrenOrChildrenUrl(item: IMarkdownNavigatorItem): boolean {\n return (item.children && item.children.length > 0) || !!item.childrenUrl;\n }\n clearErrors(): void {\n this.markdownLoaderError = undefined;\n this.childrenUrlError = undefined;\n }\n\n reset(): void {\n this.loading = false;\n this.clearErrors();\n // if single item and no children\n if (\n this.items &&\n this.items.length === 1 &&\n !this.hasChildrenOrChildrenUrl(this.items[0])\n ) {\n this.currentMenuItems = [];\n this.currentMarkdownItem = this.items[0];\n } else {\n this.currentMenuItems = this.items;\n this.currentMarkdownItem = undefined;\n }\n this.historyStack = [];\n this._changeDetectorRef.markForCheck();\n }\n\n goBack(): void {\n this.loading = false;\n this.clearErrors();\n if (this.historyStack.length > 1) {\n let parent: IMarkdownNavigatorItem | undefined =\n this.historyStack[this.historyStack.length - 2];\n\n if (parent?.startAtLink) {\n parent = this.historyStack[this.historyStack.length - 3]\n ? this.historyStack[this.historyStack.length - 3]\n : undefined;\n this.historyStack = this.historyStack.slice(0, -1);\n }\n\n if (parent) {\n this.currentMarkdownItem = parent;\n this.historyStack = this.historyStack.slice(0, -1);\n this.setChildrenAsCurrentMenuItems(parent);\n } else {\n this.reset();\n }\n } else {\n // one level down just go to root\n this.reset();\n }\n this._changeDetectorRef.markForCheck();\n }\n\n handleItemSelected(item: IMarkdownNavigatorItem): void {\n this.clearErrors();\n this.currentMarkdownItem = item;\n this.historyStack = [...this.historyStack, item];\n this.setChildrenAsCurrentMenuItems(item);\n this._changeDetectorRef.markForCheck();\n }\n\n async setChildrenAsCurrentMenuItems(\n item: IMarkdownNavigatorItem\n ): Promise<void> {\n this.currentMenuItems = [];\n this.loading = true;\n this._changeDetectorRef.markForCheck();\n\n const stackSnapshot: IMarkdownNavigatorItem[] = this.historyStack;\n let children: IMarkdownNavigatorItem[] = [];\n if (item.children) {\n children = item.children;\n } else if (item.childrenUrl) {\n children = await this.loadChildrenUrl(item);\n }\n if (children && children.length && item.startAtLink) {\n this._jumpTo(item.startAtLink, children);\n }\n const newStackSnapshot: IMarkdownNavigatorItem[] = this.historyStack;\n if (\n stackSnapshot.length === newStackSnapshot.length &&\n stackSnapshot.every(\n (stackItem: IMarkdownNavigatorItem, index: number) =>\n stackItem === newStackSnapshot[index]\n )\n ) {\n this.currentMenuItems = children;\n }\n\n this.loading = false;\n this._changeDetectorRef.markForCheck();\n }\n\n async loadChildrenUrl(\n item: IMarkdownNavigatorItem\n ): Promise<IMarkdownNavigatorItem[]> {\n const sanitizedUrl =\n this._sanitizer.sanitize(SecurityContext.URL, item.childrenUrl ?? null) ??\n '';\n try {\n return await firstValueFrom<IMarkdownNavigatorItem[]>(\n this._http.get<IMarkdownNavigatorItem[]>(sanitizedUrl, {\n ...item.httpOptions,\n })\n );\n } catch (error: any) {\n this.handleChildrenUrlError(error);\n return [];\n }\n }\n\n getTitle(item: IMarkdownNavigatorItem): string {\n if (!item) {\n return '';\n }\n return (\n removeLeadingHash(item.anchor ?? '') ||\n item.title ||\n getTitleFromUrl(item.url ?? '') ||\n getTitleFromMarkdownString(item.markdownString ?? '') ||\n ''\n ).trim();\n }\n\n getIcon(item: IMarkdownNavigatorItem): string {\n return item?.icon || 'subject';\n }\n\n handleChildrenUrlError(error: Error): void {\n this.childrenUrlError = error.message;\n this._changeDetectorRef.markForCheck();\n }\n handleMarkdownLoaderError(error: Error): void {\n this.markdownLoaderError = error ? error.message : '';\n this._changeDetectorRef.markForCheck();\n }\n\n private async _jumpTo(\n itemOrPath: IMarkdownNavigatorItem | IMarkdownNavigatorItem[],\n children?: IMarkdownNavigatorItem[]\n ): Promise<void> {\n const historyStack: IMarkdownNavigatorItem[] = this.historyStack;\n this.reset();\n if (this.items && this.items.length > 0) {\n let path: IMarkdownNavigatorItem[] | undefined = [];\n if (Array.isArray(itemOrPath)) {\n path = await this.followPath(this.items, itemOrPath);\n } else if (children && children.length > 0) {\n this.historyStack = historyStack;\n path = this.findPath(children, itemOrPath);\n } else {\n path = this.findPath(this.items, itemOrPath);\n }\n (path || []).forEach((pathItem: IMarkdownNavigatorItem) =>\n this.handleItemSelected(pathItem)\n );\n }\n this._changeDetectorRef.markForCheck();\n }\n\n private async followPath(\n items: IMarkdownNavigatorItem[],\n path: IMarkdownNavigatorItem[]\n ): Promise<IMarkdownNavigatorItem[]> {\n let pathItems: IMarkdownNavigatorItem[] = [];\n let currentLevel: IMarkdownNavigatorItem[] = items;\n const compareWith: IMarkdownNavigatorCompareWith =\n this.compareWith || defaultCompareWith;\n for (const pathItem of path) {\n const foundItem: IMarkdownNavigatorItem | undefined = currentLevel.find(\n (item: IMarkdownNavigatorItem) => compareWith(pathItem, item)\n );\n\n if (foundItem) {\n pathItems = [...pathItems, foundItem];\n\n if (foundItem.children) {\n currentLevel = foundItem.children;\n } else if (foundItem.childrenUrl) {\n currentLevel = await this.loadChildrenUrl(foundItem);\n }\n } else {\n break;\n }\n }\n if (pathItems.length !== path.length) {\n pathItems = [];\n }\n return pathItems;\n }\n\n private findPath(\n items?: IMarkdownNavigatorItem[],\n item?: IMarkdownNavigatorItem\n ): IMarkdownNavigatorItem[] | undefined {\n const compareWith: IMarkdownNavigatorCompareWith =\n this.compareWith || defaultCompareWith;\n if (items) {\n for (const child of items) {\n if (item && compareWith(child, item)) {\n return [child];\n }\n const ancestors: IMarkdownNavigatorItem[] | undefined = this.findPath(\n child.children,\n item\n );\n if (ancestors) {\n return [child, ...ancestors];\n }\n }\n }\n return undefined;\n }\n\n private async handleLinkClick(event: Event): Promise<void> {\n event.preventDefault();\n const link: HTMLAnchorElement = <HTMLAnchorElement>event.target;\n const url: URL = new URL(link.href);\n this.loading = true;\n this._changeDetectorRef.markForCheck();\n try {\n const markdownString: string = await this._markdownUrlLoaderService.load(\n url.href\n );\n // pass in url to be able to use currentMarkdownItem.url later on\n this.handleItemSelected({ markdownString, url: url.href });\n this.markdownWrapper.nativeElement.scrollTop = 0;\n } catch (error) {\n const win = window.open(url.href, '_blank');\n win?.focus();\n } finally {\n this.loading = false;\n }\n this._changeDetectorRef.markForCheck();\n }\n}\n\nfunction getTitleFromUrl(url: string): string {\n if (url) {\n const temp: URL = new URL(url);\n if (temp.hash) {\n return removeLeadingHash(temp.hash);\n } else {\n const path: string[] = temp.pathname.split('/');\n const fileName: string = path[path.length - 1];\n return fileName.replace(/\\.[^/.]+$/, ''); // remove .md\n }\n }\n return '';\n}\n\nfunction getTitleFromMarkdownString(markdownString: string): string {\n if (markdownString) {\n const firstLine: string =\n markdownString.split(/[\\r\\n]+/).find((line: string) => !!line) ?? '';\n return removeLeadingHash(firstLine).trim();\n }\n return '';\n}\n\nfunction isMarkdownHref(anchor: HTMLAnchorElement): boolean {\n return !isAnchorLink(anchor) && anchor.pathname.endsWith('.md');\n}\nfunction defaultCompareWith(\n o1: IMarkdownNavigatorItem,\n o2: IMarkdownNavigatorItem\n): boolean {\n if (o1.id && o2.id) {\n return o1.id === o2.id;\n }\n return o1 === o2;\n}\n","<ng-container *ngIf=\"!showEmptyState\">\n <mat-progress-bar\n *ngIf=\"loading\"\n mode=\"indeterminate\"\n color=\"accent\"\n ></mat-progress-bar>\n\n <ng-container *ngIf=\"showHeader\">\n <div [style.display]=\"'flex'\">\n <button\n id=\"td-markdown-navigator-home-button\"\n *ngIf=\"showHomeButton\"\n mat-icon-button\n [matTooltip]=\"goHomeLabel ?? ''\"\n (click)=\"reset()\"\n [attr.data-test]=\"'home-button'\"\n >\n <mat-icon [attr.aria-label]=\"goHomeLabel\">home</mat-icon>\n </button>\n\n <button\n id=\"td-markdown-navigator-back-button\"\n *ngIf=\"showGoBackButton\"\n mat-icon-button\n [matTooltip]=\"goBackLabel ?? ''\"\n (click)=\"goBack()\"\n [attr.data-test]=\"'back-button'\"\n >\n <mat-icon [attr.aria-label]=\"goBackLabel\">arrow_back</mat-icon>\n </button>\n <span\n flex\n *ngIf=\"currentItemTitle\"\n class=\"mat-body-2 title truncate\"\n [attr.data-test]=\"'title'\"\n >\n {{ currentItemTitle }}\n </span>\n </div>\n\n <mat-divider [style.position]=\"'relative'\"></mat-divider>\n </ng-container>\n\n <div class=\"scroll-area\" id=\"td-markdown-navigator-content\">\n <div\n *ngIf=\"showTdMarkdownLoader || showTdMarkdown\"\n class=\"markdown-wrapper\"\n #markdownWrapper\n >\n <td-message\n *ngIf=\"markdownLoaderError\"\n [sublabel]=\"markdownLoaderError\"\n color=\"warn\"\n icon=\"error\"\n [attr.data-test]=\"'markdown-loader-error'\"\n ></td-message>\n <td-flavored-markdown-loader\n *ngIf=\"showTdMarkdownLoader\"\n [url]=\"url ?? ''\"\n [httpOptions]=\"httpOptions ?? {}\"\n [anchor]=\"anchor ?? ''\"\n [copyCodeToClipboard]=\"copyCodeToClipboard\"\n [copyCodeTooltips]=\"copyCodeTooltips\"\n (loadFailed)=\"handleMarkdownLoaderError($event)\"\n ></td-flavored-markdown-loader>\n <td-flavored-markdown\n *ngIf=\"showTdMarkdown\"\n [content]=\"markdownString ?? ''\"\n [hostedUrl]=\"url ?? ''\"\n [anchor]=\"anchor ?? ''\"\n [copyCodeToClipboard]=\"copyCodeToClipboard\"\n [copyCodeTooltips]=\"copyCodeTooltips\"\n (buttonClicked)=\"buttonClicked.emit($event)\"\n ></td-flavored-markdown>\n </div>\n\n <td-message\n *ngIf=\"childrenUrlError\"\n [sublabel]=\"childrenUrlError\"\n color=\"warn\"\n icon=\"error\"\n [attr.data-test]=\"'children-url-error'\"\n ></td-message>\n <div *ngIf=\"showMenu\" class=\"td-markdown-list\">\n <mat-action-list>\n <button\n *ngFor=\"let item of currentMenuItems; index as index\"\n [id]=\"\n 'td-markdown-navigator-list-item-' + (item.id ? item.id : index)\n \"\n (click)=\"handleItemSelected(item)\"\n mat-list-item\n [matTooltip]=\"getTitle(item)\"\n matTooltipPosition=\"before\"\n matTooltipShowDelay=\"500\"\n >\n <mat-icon matListIcon>\n {{ getIcon(item) }}\n </mat-icon>\n <span matLine class=\"truncate\">\n {{ getTitle(item) }}\n </span>\n <span matLine class=\"truncate\">{{ item.description }}</span>\n <mat-divider></mat-divider>\n </button>\n </mat-action-list>\n </div>\n\n <ng-container *ngComponentOutlet=\"footerComponent\"></ng-container>\n </div>\n</ng-container>\n\n<div\n *ngIf=\"showEmptyState\"\n layout=\"column\"\n layout-align=\"center center\"\n class=\"empty-state\"\n>\n <mat-icon matListAvatar>subject</mat-icon>\n <h2>{{ emptyStateLabel }}</h2>\n</div>\n","import {\n Component,\n Output,\n EventEmitter,\n Input,\n ChangeDetectionStrategy,\n Type,\n} from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\nimport {\n IMarkdownNavigatorItem,\n IMarkdownNavigatorLabels,\n IMarkdownNavigatorCompareWith,\n} from '../markdown-navigator.component';\nimport { ITdFlavoredMarkdownButtonClickEvent } from '@covalent/flavored-markdown';\nimport { ICopyCodeTooltips } from '@covalent/highlight';\n\nexport interface IMarkdownNavigatorWindowLabels\n extends IMarkdownNavigatorLabels {\n title?: string;\n close?: string;\n dock?: string;\n unDock?: string;\n}\nexport const DEFAULT_MARKDOWN_NAVIGATOR_WINDOW_LABELS: IMarkdownNavigatorWindowLabels =\n {\n title: 'Help',\n close: 'Close',\n dock: 'Dock',\n unDock: 'Undock',\n };\n\n@Component({\n selector: 'td-markdown-navigator-window',\n templateUrl: './markdown-navigator-window.component.html',\n styleUrls: ['./markdown-navigator-window.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TdMarkdownNavigatorWindowComponent {\n @Input() items?: IMarkdownNavigatorItem[];\n @Input() labels?: IMarkdownNavigatorWindowLabels;\n @Input() toolbarColor: ThemePalette = 'primary';\n @Input() startAt?: IMarkdownNavigatorItem | IMarkdownNavigatorItem[];\n @Input() compareWith?: IMarkdownNavigatorCompareWith;\n @Input() docked? = false;\n @Input() copyCodeToClipboard? = false;\n @Input() copyCodeTooltips?: ICopyCodeTooltips = {};\n @Input() footer?: Type<any>;\n\n @Output() closed: EventEmitter<void> = new EventEmitter();\n @Output() dockToggled: EventEmitter<boolean> = new EventEmitter();\n @Output() buttonClicked: EventEmitter<ITdFlavoredMarkdownButtonClickEvent> =\n new EventEmitter();\n\n get markdownNavigatorLabels(): IMarkdownNavigatorLabels | undefined {\n if (!this.labels) {\n return undefined;\n }\n\n const { goHome, goBack, emptyState }: IMarkdownNavigatorWindowLabels =\n this.labels;\n return {\n goHome,\n goBack,\n emptyState,\n };\n }\n get titleLabel(): string | undefined {\n return (\n (this.labels && this.labels.title) ||\n DEFAULT_MARKDOWN_NAVIGATOR_WINDOW_LABELS.title\n );\n }\n\n get closeLabel(): string | undefined {\n return (\n (this.labels && this.labels.close) ||\n DEFAULT_MARKDOWN_NAVIGATOR_WINDOW_LABELS.close\n );\n }\n\n get toggleDockedStateLabel(): string | undefined {\n if (this.docked) {\n return (\n (this.labels && this.labels.unDock) ||\n DEFAULT_MARKDOWN_NAVIGATOR_WINDOW_LABELS.unDock\n );\n } else {\n return (\n (this.labels && this.labels.dock) ||\n DEFAULT_MARKDOWN_NAVIGATOR_WINDOW_LABELS.dock\n );\n }\n }\n\n toggleDockedState(): void {\n this.dockToggled.emit(this.docked);\n }\n}\n","<td-window-dialog\n [toolbarColor]=\"toolbarColor\"\n [docked]=\"docked\"\n [title]=\"titleLabel\"\n [toggleDockedStateLabel]=\"toggleDockedStateLabel\"\n [closeLabel]=\"closeLabel\"\n (dockToggled)=\"toggleDockedState()\"\n (closed)=\"closed.emit()\"\n>\n <td-markdown-navigator\n [items]=\"items\"\n [labels]=\"markdownNavigatorLabels\"\n [style.display]=\"docked ? 'none' : 'inherit'\"\n [startAt]=\"startAt\"\n [compareWith]=\"compareWith\"\n [footer]=\"footer\"\n [copyCodeToClipboard]=\"copyCodeToClipboard\"\n [copyCodeTooltips]=\"copyCodeTooltips\"\n (buttonClicked)=\"buttonClicked.emit($event)\"\n ></td-markdown-navigator>\n</td-window-dialog>\n","import {\n Injectable,\n Inject,\n RendererFactory2,\n Renderer2,\n Type,\n} from '@angular/core';\nimport {\n MatDialogRef,\n MatDialogConfig,\n DialogPosition,\n} from '@angular/material/dialog';\nimport { ThemePalette } from '@angular/material/core';\nimport {\n TdMarkdownNavigatorWindowComponent,\n IMarkdownNavigatorWindowLabels,\n} from '../markdown-navigator-window/markdown-navigator-window.component';\nimport {\n TdDialogService,\n IDraggableRefs,\n ResizableDraggableDialog,\n} from '@covalent/core/dialogs';\nimport { DragRef, Point } from '@angular/cdk/drag-drop/drag-ref';\nimport { DOCUMENT } from '@angular/common';\nimport {\n IMarkdownNavigatorItem,\n IMarkdownNavigatorCompareWith,\n} from '../markdown-navigator.component';\nimport { ICopyCodeTooltips } from '@covalent/highlight';\n\nexport interface IMarkdownNavigatorWindowConfig {\n items: IMarkdownNavigatorItem[];\n dialogConfig?: MatDialogConfig;\n labels?: IMarkdownNavigatorWindowLabels;\n toolbarColor?: ThemePalette;\n startAt?: IMarkdownNavigatorItem | IMarkdownNavigatorItem[];\n compareWith?: IMarkdownNavigatorCompareWith;\n copyCodeToClipboard?: boolean;\n copyCodeTooltips?: ICopyCodeTooltips;\n footer?: Type<any>;\n}\n\nconst CDK_OVERLAY_CUSTOM_CLASS = 'td-window-dialog';\n\nconst DEFAULT_POSITION: DialogPosition = { bottom: '0px', right: '0px' };\nconst DEFAULT_WIDTH = '360px';\nconst DEFAULT_HEIGHT = '75vh';\nconst MIN_HEIGHT = '56px';\nconst MAX_WIDTH = '100vw';\n\nconst DEFAULT_DRAGGABLE_DIALOG_CONFIG: MatDialogConfig = {\n hasBackdrop: false,\n closeOnNavigation: true,\n panelClass: [CDK_OVERLAY_CUSTOM_CLASS],\n position: DEFAULT_POSITION,\n height: DEFAULT_HEIGHT,\n width: DEFAULT_WIDTH,\n maxWidth: MAX_WIDTH,\n};\n\ninterface IDialogDimensions {\n width: string;\n height: string;\n}\n\n@Injectable()\nexport class TdMarkdownNavigatorWindowService {\n private _renderer2: Renderer2;\n private dragRef!: DragRef;\n private resizableDraggableDialog!: ResizableDraggableDialog;\n private markdownNavigatorWindowDialog!: MatDialogRef<TdMarkdownNavigatorWindowComponent>;\n private markdownNavigatorWindowDialogsOpen = 0;\n\n constructor(\n private _tdDialogService: TdDialogService,\n @Inject(DOCUMENT) private _document: any,\n private rendererFactory: RendererFactory2\n ) {\n this._renderer2 = rendererFactory.createRenderer(undefined, null);\n }\n\n public open(\n config: IMarkdownNavigatorWindowConfig\n ): MatDialogRef<TdMarkdownNavigatorWindowComponent> {\n this.close();\n\n const configClass = config?.dialogConfig?.panelClass;\n const panelClass =\n configClass && !Array.isArray(configClass) ? [configClass] : [];\n\n const draggableConfig: MatDialogConfig = {\n ...DEFAULT_DRAGGABLE_DIALOG_CONFIG,\n ...config.dialogConfig,\n ...panelClass,\n };\n const {\n matDialogRef,\n dragRefSubject,\n }: IDraggableRefs<TdMarkdownNavigatorWindowComponent> = this._tdDialogService.openDraggable(\n {\n component: TdMarkdownNavigatorWindowComponent,\n config: draggableConfig,\n dragHandleSelectors: ['.td-window-dialog-toolbar'],\n draggableClass: 'td-draggable-markdown-navigator-window',\n }\n );\n this.markdownNavigatorWindowDialog = matDialogRef;\n this.markdownNavigatorWindowDialog.componentInstance.items = config.items;\n this.markdownNavigatorWindowDialog.componentInstance.labels = config.labels;\n this.markdownNavigatorWindowDialog.componentInstance.startAt =\n config.startAt;\n this.markdownNavigatorWindowDialog.componentInstance.copyCodeToClipboard =\n config.copyCodeToClipboard;\n this.markdownNavigatorWindowDialog.componentInstance.copyCodeTooltips =\n config.copyCodeTooltips;\n this.markdownNavigatorWindowDialog.componentInstance.compareWith =\n config.compareWith;\n this.markdownNavigatorWindowDialog.componentInstance.toolbarColor =\n 'toolbarColor' in config ? config.toolbarColor : 'primary';\n this.markdownNavigatorWindowDialogsOpen++;\n this.markdownNavigatorWindowDialog.componentInstance.footer = config.footer;\n dragRefSubject.subscribe((dragRf: DragRef) => {\n this.dragRef = dragRf;\n this.resizableDraggableDialog = new ResizableDraggableDialog(\n this._document,\n this._renderer2,\n this.markdownNavigatorWindowDialog,\n this.dragRef\n );\n });\n this._handleEvents();\n return this.markdownNavigatorWindowDialog;\n }\n\n public close(): void {\n if (this.markdownNavigatorWindowDialog) {\n if (this.resizableDraggableDialog) {\n this.resizableDraggableDialog.detach();\n }\n this.markdownNavigatorWindowDialog.close();\n }\n }\n\n public get isOpen(): boolean {\n return this.markdownNavigatorWindowDialogsOpen > 0;\n }\n\n private _handleEvents(): void {\n let position: Point;\n let dimensions: IDialogDimensions;\n this.markdownNavigatorWindowDialog.componentInstance.closed.subscribe(() =>\n this.close()\n );\n this.markdownNavigatorWindowDialog.componentInstance.dockToggled.subscribe(\n (docked: boolean) => {\n if (docked) {\n this.markdownNavigatorWindowDialog.componentInstance.docked = false;\n this.markdownNavigatorWindowDialog.updateSize(\n dimensions.width,\n dimensions.height\n );\n this.markdownNavigatorWindowDialog.updatePosition({\n top: '0px',\n right: '0px',\n bottom: '0px',\n left: '0px',\n });\n this.dragRef.setFreeDragPosition(position);\n this.dragRef.disabled = false;\n this.resizableDraggableDialog.attach();\n } else {\n dimensions = this._getDialogSize(this.markdownNavigatorWindowDialog);\n position = this.dragRef.getFreeDragPosition();\n this.markdownNavigatorWindowDialog.componentInstance.docked = true;\n this.markdownNavigatorWindowDialog.updateSize(\n DEFAULT_WIDTH,\n MIN_HEIGHT\n );\n this.markdownNavigatorWindowDialog.updatePosition(DEFAULT_POSITION);\n this.dragRef.reset();\n this.dragRef.disabled = true;\n this.resizableDraggableDialog.detach();\n }\n }\n );\n this.markdownNavigatorWindowDialog\n .afterClosed()\n .toPromise()\n .then(() => {\n this.markdownNavigatorWindowDialogsOpen--;\n });\n }\n\n private _getDialogSize(\n dialogRef: MatDialogRef<TdMarkdownNavigatorWindowComponent>\n ): IDialogDimensions {\n const { width, height } = getComputedStyle(\n this._document.getElementById(dialogRef.id).parentElement\n );\n return {\n width,\n height,\n };\n }\n}\n","import { Directive, HostListener, Input } from '@angular/core';\nimport {\n TdMarkdownNavigatorWindowService,\n IMarkdownNavigatorWindowConfig,\n} from '../markdown-navigator-window-service/markdown-navigator-window.service';\n\n@Directive({\n selector: '[tdMarkdownNavigatorWindow]',\n})\nexport class TdMarkdownNavigatorWindowDirective {\n @Input('tdMarkdownNavigatorWindow') config?: IMarkdownNavigatorWindowConfig;\n @Input() disabled = false;\n constructor(\n private _markdownNavigatorWindowService: TdMarkdownNavigatorWindowService\n ) {}\n\n @HostListener('click') click(): void {\n if (!this.disabled && this.config) {\n this._markdownNavigatorWindowService.open(this.config);\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TdMarkdownNavigatorComponent } from './markdown-navigator.component';\nimport { TdMarkdownNavigatorWindowComponent } from './markdown-navigator-window/markdown-navigator-window.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatListModule } from '@angular/material/list';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { CovalentFlavoredMarkdownModule } from '@covalent/flavored-markdown';\nimport { CovalentDialogsModule } from '@covalent/core/dialogs';\nimport { CovalentMessageModule } from '@covalent/core/message';\nimport { TdMarkdownNavigatorWindowDirective } from './markdown-navigator-window-directive/markdown-navigator-window.directive';\nimport { TdMarkdownNavigatorWindowService } from './markdown-navigator-window-service/markdown-navigator-window.service';\n\n@NgModule({\n imports: [\n CommonModule,\n\n // material\n MatButtonModule,\n MatTooltipModule,\n MatListModule,\n MatIconModule,\n MatProgressBarModule,\n CovalentMessageModule,\n CovalentFlavoredMarkdownModule,\n CovalentDialogsModule,\n ],\n declarations: [\n TdMarkdownNavigatorComponent,\n TdMarkdownNavigatorWindowComponent,\n TdMarkdownNavigatorWindowDirective,\n ],\n exports: [\n TdMarkdownNavigatorComponent,\n TdMarkdownNavigatorWindowComponent,\n TdMarkdownNavigatorWindowDirective,\n ],\n providers: [TdMarkdownNavigatorWindowService],\n})\nexport class CovalentMarkdownNavigatorModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ import { ThemePalette } from '@angular/material/core';
3
3
  import { IMarkdownNavigatorItem, IMarkdownNavigatorLabels, IMarkdownNavigatorCompareWith } from '../markdown-navigator.component';
4
4
  import { ITdFlavoredMarkdownButtonClickEvent } from '@covalent/flavored-markdown';
5
5
  import { ICopyCodeTooltips } from '@covalent/highlight';
6
+ import * as i0 from "@angular/core";
6
7
  export interface IMarkdownNavigatorWindowLabels extends IMarkdownNavigatorLabels {
7
8
  title?: string;
8
9
  close?: string;
@@ -11,21 +12,23 @@ export interface IMarkdownNavigatorWindowLabels extends IMarkdownNavigatorLabels
11
12
  }
12
13
  export declare const DEFAULT_MARKDOWN_NAVIGATOR_WINDOW_LABELS: IMarkdownNavigatorWindowLabels;
13
14
  export declare class TdMarkdownNavigatorWindowComponent {
14
- items: IMarkdownNavigatorItem[];
15
- labels: IMarkdownNavigatorWindowLabels;
15
+ items?: IMarkdownNavigatorItem[];
16
+ labels?: IMarkdownNavigatorWindowLabels;
16
17
  toolbarColor: ThemePalette;
17
- startAt: IMarkdownNavigatorItem | IMarkdownNavigatorItem[];
18
- compareWith: IMarkdownNavigatorCompareWith;
19
- docked: boolean;
20
- copyCodeToClipboard: boolean;
21
- copyCodeTooltips: ICopyCodeTooltips;
22
- footer: Type<any>;
18
+ startAt?: IMarkdownNavigatorItem | IMarkdownNavigatorItem[];
19
+ compareWith?: IMarkdownNavigatorCompareWith;
20
+ docked?: boolean | undefined;
21
+ copyCodeToClipboard?: boolean | undefined;
22
+ copyCodeTooltips?: ICopyCodeTooltips;
23
+ footer?: Type<any>;
23
24
  closed: EventEmitter<void>;
24
25
  dockToggled: EventEmitter<boolean>;
25
26
  buttonClicked: EventEmitter<ITdFlavoredMarkdownButtonClickEvent>;
26
- get markdownNavigatorLabels(): IMarkdownNavigatorLabels;
27
- get titleLabel(): string;
28
- get closeLabel(): string;
29
- get toggleDockedStateLabel(): string;
27
+ get markdownNavigatorLabels(): IMarkdownNavigatorLabels | undefined;
28
+ get titleLabel(): string | undefined;
29
+ get closeLabel(): string | undefined;
30
+ get toggleDockedStateLabel(): string | undefined;
30
31
  toggleDockedState(): void;
32
+ static ɵfac: i0.ɵɵFactoryDeclaration<TdMarkdownNavigatorWindowComponent, never>;
33
+ static ɵcmp: i0.ɵɵComponentDeclaration<TdMarkdownNavigatorWindowComponent, "td-markdown-navigator-window", never, { "items": "items"; "labels": "labels"; "toolbarColor": "toolbarColor"; "startAt": "startAt"; "compareWith": "compareWith"; "docked": "docked"; "copyCodeToClipboard": "copyCodeToClipboard"; "copyCodeTooltips": "copyCodeTooltips"; "footer": "footer"; }, { "closed": "closed"; "dockToggled": "dockToggled"; "buttonClicked": "buttonClicked"; }, never, never>;
31
34
  }
@@ -1,8 +1,11 @@
1
1
  import { TdMarkdownNavigatorWindowService, IMarkdownNavigatorWindowConfig } from '../markdown-navigator-window-service/markdown-navigator-window.service';
2
+ import * as i0 from "@angular/core";
2
3
  export declare class TdMarkdownNavigatorWindowDirective {
3
4
  private _markdownNavigatorWindowService;
4
- config: IMarkdownNavigatorWindowConfig;
5
+ config?: IMarkdownNavigatorWindowConfig;
5
6
  disabled: boolean;
6
7
  constructor(_markdownNavigatorWindowService: TdMarkdownNavigatorWindowService);
7
8
  click(): void;
9
+ static ɵfac: i0.ɵɵFactoryDeclaration<TdMarkdownNavigatorWindowDirective, never>;
10
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TdMarkdownNavigatorWindowDirective, "[tdMarkdownNavigatorWindow]", never, { "config": "tdMarkdownNavigatorWindow"; "disabled": "disabled"; }, {}, never>;
8
11
  }
@@ -5,6 +5,7 @@ import { TdMarkdownNavigatorWindowComponent, IMarkdownNavigatorWindowLabels } fr
5
5
  import { TdDialogService } from '@covalent/core/dialogs';
6
6
  import { IMarkdownNavigatorItem, IMarkdownNavigatorCompareWith } from '../markdown-navigator.component';
7
7
  import { ICopyCodeTooltips } from '@covalent/highlight';
8
+ import * as i0 from "@angular/core";
8
9
  export interface IMarkdownNavigatorWindowConfig {
9
10
  items: IMarkdownNavigatorItem[];
10
11
  dialogConfig?: MatDialogConfig;
@@ -31,4 +32,6 @@ export declare class TdMarkdownNavigatorWindowService {
31
32
  get isOpen(): boolean;
32
33
  private _handleEvents;
33
34
  private _getDialogSize;
35
+ static ɵfac: i0.ɵɵFactoryDeclaration<TdMarkdownNavigatorWindowService, never>;
36
+ static ɵprov: i0.ɵɵInjectableDeclaration<TdMarkdownNavigatorWindowService>;
34
37
  }
@@ -4,6 +4,7 @@ import { ITdFlavoredMarkdownButtonClickEvent } from '@covalent/flavored-markdown
4
4
  import { DomSanitizer } from '@angular/platform-browser';
5
5
  import { HttpClient } from '@angular/common/http';
6
6
  import { ICopyCodeTooltips } from '@covalent/highlight';
7
+ import * as i0 from "@angular/core";
7
8
  export interface IMarkdownNavigatorItem {
8
9
  id?: string;
9
10
  title?: string;
@@ -35,53 +36,53 @@ export declare class TdMarkdownNavigatorComponent implements OnChanges {
35
36
  *
36
37
  * List of IMarkdownNavigatorItems to be rendered
37
38
  */
38
- items: IMarkdownNavigatorItem[];
39
+ items?: IMarkdownNavigatorItem[];
39
40
  /**
40
41
  * labels?: IMarkdownNavigatorLabels
41
42
  *
42
43
  * Translated labels
43
44
  */
44
- labels: IMarkdownNavigatorLabels;
45
+ labels?: IMarkdownNavigatorLabels;
45
46
  /**
46
47
  * startAt?: IMarkdownNavigatorItem | IMarkdownNavigatorItem[];
47
48
  *
48
49
  * Item or path to start at
49
50
  */
50
- startAt: IMarkdownNavigatorItem | IMarkdownNavigatorItem[];
51
+ startAt?: IMarkdownNavigatorItem | IMarkdownNavigatorItem[];
51
52
  /**
52
53
  * copyCodeToClipboard?: boolean
53
54
  *
54
55
  * Display copy button on code snippets to copy code to clipboard.
55
56
  *
56
57
  */
57
- copyCodeToClipboard: boolean;
58
+ copyCodeToClipboard?: boolean | undefined;
58
59
  /**
59
60
  * copyCodeTooltips?: ICopyCodeTooltips
60
61
  *
61
62
  * Tooltips for copy button to copy and upon copying.
62
63
  */
63
- copyCodeTooltips: ICopyCodeTooltips;
64
+ copyCodeTooltips?: ICopyCodeTooltips;
64
65
  /**
65
66
  * footer?: Type<any>
66
67
  *
67
68
  * Component to be displayed in footer
68
69
  */
69
- footer: Type<any>;
70
+ footer?: any;
70
71
  /**
71
72
  * compareWith?: IMarkdownNavigatorCompareWith
72
73
  *
73
74
  * Function used to find startAt item
74
75
  * Defaults to comparison by strict equality (===)
75
76
  */
76
- compareWith: IMarkdownNavigatorCompareWith;
77
+ compareWith?: IMarkdownNavigatorCompareWith;
77
78
  buttonClicked: EventEmitter<ITdFlavoredMarkdownButtonClickEvent>;
78
79
  markdownWrapper: ElementRef;
79
80
  historyStack: IMarkdownNavigatorItem[];
80
- currentMarkdownItem: IMarkdownNavigatorItem;
81
- currentMenuItems: IMarkdownNavigatorItem[];
81
+ currentMarkdownItem?: IMarkdownNavigatorItem;
82
+ currentMenuItems?: IMarkdownNavigatorItem[];
82
83
  loading: boolean;
83
- markdownLoaderError: string;
84
- childrenUrlError: string;
84
+ markdownLoaderError?: string;
85
+ childrenUrlError?: string;
85
86
  constructor(_markdownUrlLoaderService: TdMarkdownLoaderService, _changeDetectorRef: ChangeDetectorRef, _sanitizer: DomSanitizer, _http: HttpClient);
86
87
  clickListener(event: Event): void;
87
88
  get showGoBackButton(): boolean;
@@ -90,15 +91,15 @@ export declare class TdMarkdownNavigatorComponent implements OnChanges {
90
91
  get showMenu(): boolean;
91
92
  get showTdMarkdownLoader(): boolean;
92
93
  get showTdMarkdown(): boolean;
93
- get url(): string;
94
+ get url(): string | undefined;
94
95
  get footerComponent(): any;
95
- get httpOptions(): object;
96
- get markdownString(): string;
97
- get anchor(): string;
96
+ get httpOptions(): object | undefined;
97
+ get markdownString(): string | undefined;
98
+ get anchor(): string | undefined;
98
99
  get showEmptyState(): boolean;
99
- get goHomeLabel(): string;
100
- get goBackLabel(): string;
101
- get emptyStateLabel(): string;
100
+ get goHomeLabel(): string | undefined;
101
+ get goBackLabel(): string | undefined;
102
+ get emptyStateLabel(): string | undefined;
102
103
  get currentItemTitle(): string;
103
104
  ngOnChanges(changes: SimpleChanges): Promise<void>;
104
105
  hasChildrenOrChildrenUrl(item: IMarkdownNavigatorItem): boolean;
@@ -116,4 +117,6 @@ export declare class TdMarkdownNavigatorComponent implements OnChanges {
116
117
  private followPath;
117
118
  private findPath;
118
119
  private handleLinkClick;
120
+ static ɵfac: i0.ɵɵFactoryDeclaration<TdMarkdownNavigatorComponent, never>;
121
+ static ɵcmp: i0.ɵɵComponentDeclaration<TdMarkdownNavigatorComponent, "td-markdown-navigator", never, { "items": "items"; "labels": "labels"; "startAt": "startAt"; "copyCodeToClipboard": "copyCodeToClipboard"; "copyCodeTooltips": "copyCodeTooltips"; "footer": "footer"; "compareWith": "compareWith"; }, { "buttonClicked": "buttonClicked"; }, never, never>;
119
122
  }
@@ -1,2 +1,18 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "./markdown-navigator.component";
3
+ import * as i2 from "./markdown-navigator-window/markdown-navigator-window.component";
4
+ import * as i3 from "./markdown-navigator-window-directive/markdown-navigator-window.directive";
5
+ import * as i4 from "@angular/common";
6
+ import * as i5 from "@angular/material/button";
7
+ import * as i6 from "@angular/material/tooltip";
8
+ import * as i7 from "@angular/material/list";
9
+ import * as i8 from "@angular/material/icon";
10
+ import * as i9 from "@angular/material/progress-bar";
11
+ import * as i10 from "@covalent/core/message";
12
+ import * as i11 from "@covalent/flavored-markdown";
13
+ import * as i12 from "@covalent/core/dialogs";
1
14
  export declare class CovalentMarkdownNavigatorModule {
15
+ static ɵfac: i0.ɵɵFactoryDeclaration<CovalentMarkdownNavigatorModule, never>;
16
+ static ɵmod: i0.ɵɵNgModuleDeclaration<CovalentMarkdownNavigatorModule, [typeof i1.TdMarkdownNavigatorComponent, typeof i2.TdMarkdownNavigatorWindowComponent, typeof i3.TdMarkdownNavigatorWindowDirective], [typeof i4.CommonModule, typeof i5.MatButtonModule, typeof i6.MatTooltipModule, typeof i7.MatListModule, typeof i8.MatIconModule, typeof i9.MatProgressBarModule, typeof i10.CovalentMessageModule, typeof i11.CovalentFlavoredMarkdownModule, typeof i12.CovalentDialogsModule], [typeof i1.TdMarkdownNavigatorComponent, typeof i2.TdMarkdownNavigatorWindowComponent, typeof i3.TdMarkdownNavigatorWindowDirective]>;
17
+ static ɵinj: i0.ɵɵInjectorDeclaration<CovalentMarkdownNavigatorModule>;
2
18
  }
package/package.json CHANGED
@@ -1,48 +1,45 @@
1
1
  {
2
2
  "name": "@covalent/markdown-navigator",
3
- "version": "4.0.0",
4
- "description": "Teradata UI Platform Markdown Navigator Module",
5
- "keywords": [
6
- "angular",
7
- "components",
8
- "covalent",
9
- "markdown",
10
- "markdown navigator",
11
- "markdown-navigator",
12
- "documentation navigator",
13
- "inline docs",
14
- "docs",
15
- "help"
16
- ],
17
- "repository": {
18
- "type": "git",
19
- "url": "https://github.com/teradata/covalent.git"
20
- },
21
- "bugs": {
22
- "url": "https://github.com/teradata/covalent/issues"
23
- },
24
- "license": "MIT",
25
- "author": "Teradata UX",
26
- "contributors": [
27
- "Christian Memije <christian.memije@teradata.com>"
28
- ],
3
+ "version": "4.1.1-beta.3",
29
4
  "peerDependencies": {
30
- "@angular/core": "^9.0.0 || ^10.0.0-0 || ^11.0.0-0",
31
- "@angular/common": "^9.0.0 || ^10.0.0-0 || ^11.0.0-0",
32
- "@angular/material": "^9.0.0 || ^10.0.0-0 || ^11.0.0-0",
33
- "@angular/cdk": "^9.0.0 || ^10.0.0-0 || ^11.0.0-0",
34
- "@covalent/core": "^4.0.0",
35
- "@covalent/flavored-markdown": "^4.0.0"
5
+ "@angular/common": "^13.2.0",
6
+ "@angular/core": "^13.2.0",
7
+ "@angular/platform-browser": "~13.2.0",
8
+ "@angular/cdk": "^13.2.1",
9
+ "@angular/material": "^13.2.1",
10
+ "rxjs": "~7.4.0",
11
+ "@covalent/flavored-markdown": "4.1.1-beta.3",
12
+ "@covalent/markdown": "4.1.1-beta.3",
13
+ "showdown": "^2.0.0-alpha",
14
+ "@covalent/highlight": "4.1.1-beta.3",
15
+ "highlight.js": "^11.4.0",
16
+ "@covalent/core": "4.1.1-beta.3",
17
+ "@angular/router": "~13.2.0",
18
+ "@angular/animations": "~13.2.0",
19
+ "@angular/forms": "~13.2.0",
20
+ "@angular/platform-browser-dynamic": "~13.2.0"
36
21
  },
37
- "main": "bundles/covalent-markdown-navigator.umd.js",
38
- "module": "fesm2015/covalent-markdown-navigator.js",
39
- "es2015": "fesm2015/covalent-markdown-navigator.js",
40
- "esm2015": "esm2015/covalent-markdown-navigator.js",
41
- "fesm2015": "fesm2015/covalent-markdown-navigator.js",
42
- "typings": "covalent-markdown-navigator.d.ts",
43
- "metadata": "covalent-markdown-navigator.metadata.json",
44
- "sideEffects": false,
45
22
  "dependencies": {
46
- "tslib": "^2.0.0"
47
- }
23
+ "tslib": "^2.3.0"
24
+ },
25
+ "module": "fesm2015/covalent-markdown-navigator.mjs",
26
+ "es2020": "fesm2020/covalent-markdown-navigator.mjs",
27
+ "esm2020": "esm2020/covalent-markdown-navigator.mjs",
28
+ "fesm2020": "fesm2020/covalent-markdown-navigator.mjs",
29
+ "fesm2015": "fesm2015/covalent-markdown-navigator.mjs",
30
+ "typings": "covalent-markdown-navigator.d.ts",
31
+ "exports": {
32
+ "./package.json": {
33
+ "default": "./package.json"
34
+ },
35
+ ".": {
36
+ "types": "./covalent-markdown-navigator.d.ts",
37
+ "esm2020": "./esm2020/covalent-markdown-navigator.mjs",
38
+ "es2020": "./fesm2020/covalent-markdown-navigator.mjs",
39
+ "es2015": "./fesm2015/covalent-markdown-navigator.mjs",
40
+ "node": "./fesm2015/covalent-markdown-navigator.mjs",
41
+ "default": "./fesm2020/covalent-markdown-navigator.mjs"
42
+ }
43
+ },
44
+ "sideEffects": false
48
45
  }
@@ -1,4 +1,5 @@
1
1
  export * from './markdown-navigator.module';
2
2
  export * from './markdown-navigator.component';
3
3
  export * from './markdown-navigator-window/markdown-navigator-window.component';
4
+ export * from './markdown-navigator-window-directive/markdown-navigator-window.directive';
4
5
  export * from './markdown-navigator-window-service/markdown-navigator-window.service';
package/src/README.md ADDED
@@ -0,0 +1,237 @@
1
+ # MarkdownNavigatorComponent
2
+
3
+ A component for rendering and navigating through markdown, such as documentation. Supports github urls.
4
+
5
+ ## API Summary
6
+
7
+ #### Inputs
8
+
9
+ - items: IMarkdownNavigatorItem[]
10
+ - List of IMarkdownNavigatorItems to be rendered
11
+ - labels?: IMarkdownNavigatorLabels
12
+ - Translated labels
13
+ - startAt?: IMarkdownNavigatorItem | IMarkdownNavigatorItem[]
14
+ - Item or path to jump to
15
+ - compareWith?: IMarkdownNavigatorCompareWith
16
+ - Function used to find startAt item
17
+ - Defaults to comparison by strict equality (===)
18
+ - footer:? Type<any>
19
+ - Custom component to be used as global footer
20
+ - copyCodeToClipboard?: boolean
21
+ - Display copy button on code snippets to copy code to clipboard.
22
+ - copyCodeTooltips?: ICopyCodeTooltips
23
+ - Tooltips for copy button to copy and upon copying.
24
+
25
+ #### Outputs
26
+
27
+ - buttonClicked: ITdFlavoredMarkdownButtonClickEvent
28
+ - Emitted when a button is clicked
29
+
30
+ For reference:
31
+
32
+ ```typescript
33
+ interface IMarkdownNavigatorItem {
34
+ id?: string; // used to compare items by default and as attr id for content
35
+ title?: string;
36
+ url?: string;
37
+ httpOptions?: object;
38
+ markdownString?: string; // raw markdown
39
+ anchor?: string;
40
+ children?: IMarkdownNavigatorItem[];
41
+ childrenUrl?: string;
42
+ description?: string;
43
+ icon?: string;
44
+ footer?: Type<any>;
45
+ }
46
+
47
+ interface ICopyCodeTooltips {
48
+ copy?: string;
49
+ copied?: string;
50
+ }
51
+ ```
52
+
53
+ ## Setup
54
+
55
+ ```typescript
56
+ import { CovalentMarkdownNavigatorModule } from '@covalent/markdown-navigator';
57
+ @NgModule({
58
+ imports: [CovalentMarkdownNavigatorModule],
59
+ })
60
+ export class MyModule {}
61
+ ```
62
+
63
+ ## Usage
64
+
65
+ ```html
66
+ <td-markdown-navigator [items]="items"></td-markdown-navigator>
67
+ ```
68
+
69
+ ```typescript
70
+ const items = [
71
+ {
72
+ id: 'covalent',
73
+ title: 'Covalent',
74
+ children: [
75
+ {
76
+ id: 'component',
77
+ title: 'Components',
78
+ children: [
79
+ {
80
+ id: 'td-loading',
81
+ url: 'https://raw.githubusercontent.com/Teradata/covalent/develop/src/platform/core/loading/README.md',
82
+ title: 'tdLoading',
83
+ },
84
+ ],
85
+ },
86
+ ],
87
+ },
88
+ ];
89
+ ```
90
+
91
+ # MarkdownNavigatorWindowComponent
92
+
93
+ A component that contains a MarkdownNavigator component and a toolbar
94
+
95
+ ## API Summary
96
+
97
+ #### Inputs
98
+
99
+ - items: IMarkdownNavigatorItem[]
100
+ - List of IMarkdownNavigatorItems to be rendered
101
+ - labels?: IMarkdownNavigatorLabels
102
+ - Translated labels
103
+ - startAt?: IMarkdownNavigatorItem | IMarkdownNavigatorItem[]
104
+ - Item or path to jump to
105
+ - compareWith?: IMarkdownNavigatorCompareWith
106
+ - Function used to find startAt item
107
+ - Defaults to comparison by strict equality (===)
108
+ - toolbarColor?: ThemePalette
109
+ - Toolbar color
110
+ - Defaults to 'primary'
111
+ - footer:? Type<any>;
112
+ - Custom component to be used as global footer
113
+
114
+ #### Outputs
115
+
116
+ - closed: void
117
+ - Event emitted when the close button is clicked.
118
+ - buttonClicked: ITdFlavoredMarkdownButtonClickEvent
119
+ - Emitted when a button is clicked
120
+
121
+ ## Setup
122
+
123
+ ```typescript
124
+ import { CovalentMarkdownNavigatorModule } from '@covalent/markdown-navigator';
125
+ @NgModule({
126
+ imports: [CovalentMarkdownNavigatorModule],
127
+ })
128
+ export class MyModule {}
129
+ ```
130
+
131
+ ## Usage
132
+
133
+ ```html
134
+ <td-markdown-navigator-window [items]="items"></td-markdown-navigator-window>
135
+ ```
136
+
137
+ # MarkdownNavigatorWindowService
138
+
139
+ A service that opens a MarkdownNavigatorWindowComponent inside a draggable dialog. Uses the openDraggable method of the TdDialogService.
140
+
141
+ ## API Summary
142
+
143
+ #### Methods
144
+
145
+ - open: function(config: IMarkdownNavigatorWindowConfig)
146
+ - Opens a MarkdownNavigatorWindowComponent inside a draggable dialog.
147
+
148
+ For reference:
149
+
150
+ ```typescript
151
+ interface IMarkdownNavigatorWindowConfig {
152
+ items: IMarkdownNavigatorItem[];
153
+ dialogConfig?: MatDialogConfig;
154
+ labels?: IMarkdownNavigatorWindowLabels;
155
+ toolbarColor?: ThemePalette;
156
+ startAt?: IMarkdownNavigatorItem | IMarkdownNavigatorItem[];
157
+ compareWith?: IMarkdownNavigatorCompareWith;
158
+ footer?: Type<any>;
159
+ }
160
+ ```
161
+
162
+ ## Setup
163
+
164
+ ```typescript
165
+ import { CovalentMarkdownNavigatorModule } from '@covalent/markdown-navigator';
166
+ @NgModule({
167
+ imports: [CovalentMarkdownNavigatorModule],
168
+ })
169
+ export class MyModule {}
170
+ ```
171
+
172
+ ## Usage
173
+
174
+ ```typescript
175
+ import {
176
+ TdMarkdownNavigatorWindowComponent,
177
+ TdMarkdownNavigatorWindowService,
178
+ IMarkdownNavigatorItem,
179
+ } from '@covalent/markdown-navigator';
180
+ import { MatDialogRef } from '@angular/material/dialog';
181
+
182
+ export class SampleComponent {
183
+ constructor(
184
+ private _markdownNavigatorWindowService: TdMarkdownNavigatorWindowService
185
+ ) {}
186
+
187
+ ngOnInit(): void {
188
+ const ref: MatDialogRef<TdMarkdownNavigatorWindowComponent> =
189
+ this._markdownNavigatorWindowService.open({
190
+ items: [
191
+ {
192
+ url: 'https://github.com/Teradata/covalent/blob/develop/README.md',
193
+ },
194
+ ],
195
+ });
196
+ ref.afterOpened().subscribe(() => {});
197
+ ref.afterClosed().subscribe(() => {});
198
+ }
199
+ }
200
+ ```
201
+
202
+ # MarkdownNavigatorWindowDirective
203
+
204
+ A directive that calls the TdMarkdownNavigatorWindowService open method on click events.
205
+
206
+ ## API Summary
207
+
208
+ #### Inputs
209
+
210
+ - tdMarkdownNavigatorWindow: IMarkdownNavigatorWindowConfig
211
+ - Config to open window with
212
+ - disabled: boolean
213
+ - Whether disabled or not
214
+
215
+ ## Setup
216
+
217
+ ```typescript
218
+ import { CovalentMarkdownNavigatorModule } from '@covalent/markdown-navigator';
219
+ @NgModule({
220
+ imports: [CovalentMarkdownNavigatorModule],
221
+ })
222
+ export class MyModule {}
223
+ ```
224
+
225
+ ## Usage
226
+
227
+ Example:
228
+
229
+ ```html
230
+ <button
231
+ mat-button
232
+ [tdMarkdownNavigatorWindow]="{ items: [] }"
233
+ [disabled]="false"
234
+ >
235
+ Open window
236
+ </button>
237
+ ```