UNPKG

@rxap/ngx-changelog

Version:

This package provides Angular components and services to display changelogs within an application. It fetches changelog data from a remote source and presents it in a user-friendly dialog or component, allowing users to view updates and changes. The packa

1 lines 25.1 kB
{"version":3,"file":"rxap-ngx-changelog.mjs","sources":["../../../../../packages/angular/changelog/src/lib/openapi/remote-methods/changelog-controller-get-latest.remote-method.ts","../../../../../packages/angular/changelog/src/lib/openapi/remote-methods/changelog-controller-get-version.remote-method.ts","../../../../../packages/angular/changelog/src/lib/openapi/remote-methods/changelog-controller-list.remote-method.ts","../../../../../packages/angular/changelog/src/lib/changelog/changelog.component.ts","../../../../../packages/angular/changelog/src/lib/changelog/changelog.component.html","../../../../../packages/angular/changelog/src/lib/changelog-dialog/changelog-dialog.component.ts","../../../../../packages/angular/changelog/src/lib/changelog-dialog/changelog-dialog.component.html","../../../../../packages/angular/changelog/src/lib/changelog.service.ts","../../../../../packages/angular/changelog/src/lib/provide-changelog.ts","../../../../../packages/angular/changelog/src/index.ts","../../../../../packages/angular/changelog/src/rxap-ngx-changelog.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport {\n OpenApiRemoteMethod,\n OpenApiRemoteMethodParameter,\n RxapOpenApiRemoteMethod,\n} from '@rxap/open-api/remote-method';\nimport { ChangelogControllerGetLatestParameter } from '../parameters/changelog-controller-get-latest.parameter';\nimport { ChangelogControllerGetLatestResponse } from '../responses/changelog-controller-get-latest.response';\n\n@Injectable({\n providedIn: 'root',\n})\n@RxapOpenApiRemoteMethod({\n serverId: 'service-changelog',\n operationId: 'ChangelogController_getLatest',\n operation: '{\"operationId\":\"ChangelogController_getLatest\",\"parameters\":[{\"name\":\"application\",\"required\":true,\"in\":\"path\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\",\"properties\":{\"general\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"application\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"required\":[\"general\",\"application\"]}}}}},\"method\":\"get\",\"path\":\"/latest/{application}\"}',\n})\nexport class ChangelogControllerGetLatestRemoteMethod\n extends OpenApiRemoteMethod<ChangelogControllerGetLatestResponse, ChangelogControllerGetLatestParameter, void> {\n public override call(parameters: OpenApiRemoteMethodParameter<ChangelogControllerGetLatestParameter, void>): Promise<ChangelogControllerGetLatestResponse> {\n return super.call(parameters);\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n OpenApiRemoteMethod,\n OpenApiRemoteMethodParameter,\n RxapOpenApiRemoteMethod,\n} from '@rxap/open-api/remote-method';\nimport { ChangelogControllerGetVersionParameter } from '../parameters/changelog-controller-get-version.parameter';\nimport { ChangelogControllerGetVersionResponse } from '../responses/changelog-controller-get-version.response';\n\n@Injectable({\n providedIn: 'root',\n})\n@RxapOpenApiRemoteMethod({\n serverId: 'service-changelog',\n operationId: 'ChangelogController_getVersion',\n operation: '{\"operationId\":\"ChangelogController_getVersion\",\"parameters\":[{\"name\":\"version\",\"required\":true,\"in\":\"path\",\"schema\":{\"type\":\"string\"}},{\"name\":\"application\",\"required\":true,\"in\":\"path\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\",\"properties\":{\"general\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"application\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"required\":[\"general\",\"application\"]}}}}},\"method\":\"get\",\"path\":\"/{version}/{application}\"}',\n})\nexport class ChangelogControllerGetVersionRemoteMethod\n extends OpenApiRemoteMethod<ChangelogControllerGetVersionResponse, ChangelogControllerGetVersionParameter, void> {\n public override call(parameters: OpenApiRemoteMethodParameter<ChangelogControllerGetVersionParameter, void>): Promise<ChangelogControllerGetVersionResponse> {\n return super.call(parameters);\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n OpenApiRemoteMethod,\n RxapOpenApiRemoteMethod,\n} from '@rxap/open-api/remote-method';\nimport { ChangelogControllerListResponse } from '../responses/changelog-controller-list.response';\n\n@Injectable({\n providedIn: 'root',\n})\n@RxapOpenApiRemoteMethod({\n serverId: 'service-changelog',\n operationId: 'ChangelogController_list',\n operation: '{\"operationId\":\"ChangelogController_list\",\"parameters\":[],\"responses\":{\"200\":{\"content\":{\"application/json\":{\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}}}}},\"method\":\"get\",\"path\":\"/available-versions\"}',\n})\nexport class ChangelogControllerListRemoteMethod\n extends OpenApiRemoteMethod<ChangelogControllerListResponse, void, void> {\n public override call(): Promise<ChangelogControllerListResponse> {\n return super.call();\n }\n}\n","import {\n NgClass,\n NgForOf,\n NgIf,\n} from '@angular/common';\nimport {\n Component,\n computed,\n inject,\n OnInit,\n signal,\n} from '@angular/core';\nimport { MethodTemplateDirective } from '@rxap/directives';\nimport { RXAP_ENVIRONMENT } from '@rxap/environment';\nimport { MarkdownModule } from 'ngx-markdown';\nimport { ChangelogControllerGetVersionRemoteMethod } from '../openapi/remote-methods/changelog-controller-get-version.remote-method';\nimport { ChangelogControllerListRemoteMethod } from '../openapi/remote-methods/changelog-controller-list.remote-method';\n\n@Component({\n selector: 'rxap-changelog',\n imports: [\n MethodTemplateDirective,\n MarkdownModule,\n NgForOf,\n NgIf,\n NgClass,\n ],\n templateUrl: './changelog.component.html',\n styleUrls: ['./changelog.component.scss']\n})\nexport class ChangelogComponent implements OnInit {\n\n public readonly availableVersions = signal<string[]>([]);\n public readonly error = signal<string | null>(null);\n public readonly activeIndex = signal(-1);\n public readonly selectedVersion = computed(() => {\n const activeIndex = this.activeIndex();\n const availableVersions = this.availableVersions();\n if (activeIndex > -1) {\n return availableVersions[activeIndex] ?? 'latest';\n }\n return availableVersions[availableVersions.length - 1] ?? 'latest';\n });\n\n public readonly displayedButtons = computed(() => {\n let activeIndex = this.activeIndex();\n if (activeIndex === -1) {\n activeIndex = this.availableVersions().length - 1;\n }\n let start = Math.max(0, activeIndex - 2);\n let end = Math.min(this.availableVersions().length, activeIndex + 3);\n if (end - start < 5) {\n if (start === 0) {\n end += 5 - (end - start);\n } else {\n start -= 5 - (end - start);\n }\n }\n end = Math.min(this.availableVersions().length, end);\n start = Math.max(0, start);\n return Array.from(\n { length: end - start },\n (_, i) => ({\n index: start + i,\n version: this.availableVersions()[start + i],\n }),\n );\n });\n\n public readonly application = inject(RXAP_ENVIRONMENT).app;\n\n public readonly getChangelogMethod = inject(ChangelogControllerGetVersionRemoteMethod);\n\n public readonly getChangelogMethodParameters = computed(() => ({\n parameters: {\n version: this.selectedVersion(),\n application: this.application,\n },\n }));\n\n private readonly getAvailableVersionsMethod = inject(ChangelogControllerListRemoteMethod);\n\n ngOnInit() {\n this.loadAvailableVersions();\n }\n\n private async loadAvailableVersions() {\n try {\n const availableVersions = await this.getAvailableVersionsMethod.call();\n this.availableVersions.set(availableVersions);\n this.activeIndex.set(availableVersions.length - 1);\n } catch (e: any) {\n this.error.set(e.message);\n }\n }\n\n}\n","<ng-container *ngIf=\"error(); else noError\">\n <h2 class=\"text-2xl pb-2\" i18n>Something has gone wrong!</h2>\n <p i18n>Unable to load the application changelog</p>\n</ng-container>\n<ng-template #noError>\n<div class=\"flex flex-col gap-3\">\n <ng-container *ngIf=\"availableVersions().length\">\n <div class=\"controls flex justify-center space-x-2 my-4\">\n <button\n (click)=\"activeIndex.set(activeIndex() - 1)\"\n [disabled]=\"activeIndex() <= 0\"\n [ngClass]=\"{\n 'bg-gray-100 dark:bg-gray-900': activeIndex() <= 0,\n 'hover:bg-gray-300': activeIndex() > 0,\n }\"\n class=\"px-4 py-2 bg-gray-200 dark:bg-gray-800 dark:hover:bg-gray-900 transition-colors duration-150 rounded\">Previous\n </button>\n <button (click)=\"activeIndex.set(item.index)\"\n *ngFor=\"let item of displayedButtons()\"\n [ngClass]=\"{\n 'bg-primary-500': item.index === activeIndex(),\n 'bg-gray-200 dark:bg-gray-800 dark:hover:bg-gray-900 hover:bg-gray-300 transition-colors duration-150': item.index !== activeIndex()\n }\"\n class=\"px-4 py-2 rounded\">\n {{ item.version }}\n </button>\n <button\n (click)=\"activeIndex.set(activeIndex() + 1)\"\n [disabled]=\"activeIndex() >= availableVersions().length - 1\"\n [ngClass]=\"{\n 'bg-gray-100 dark:bg-gray-900': activeIndex() >= availableVersions().length - 1,\n 'hover:bg-gray-300': activeIndex() < availableVersions().length - 1,\n }\"\n class=\"px-4 py-2 bg-gray-200 dark:bg-gray-800 dark:hover:bg-gray-900 hover:bg-gray-300 transition-colors duration-150 rounded\">Next\n </button>\n </div>\n <hr>\n </ng-container>\n <div class=\"flex flex-col gap-6 p-8 overflow-auto\" style=\"max-height: 60vh\">\n <ng-container *rxapMethod=\"let changelog call getChangelogMethod; parameters: getChangelogMethodParameters()\">\n <markdown *ngFor=\"let general of changelog.general\" [data]=\"general\" class=\"prose dark:prose-invert\">\n </markdown>\n <markdown *ngFor=\"let application of changelog.application\" [data]=\"application\" class=\"prose dark:prose-invert\">\n </markdown>\n </ng-container>\n </div>\n</div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ChangelogComponent } from '../changelog/changelog.component';\n\n@Component({\n selector: 'rxap-changelog-dialog',\n imports: [CommonModule, ChangelogComponent, FormsModule],\n templateUrl: './changelog-dialog.component.html',\n styleUrls: ['./changelog-dialog.component.scss']\n})\nexport class ChangelogDialogComponent implements AfterViewInit {\n\n @ViewChild('dialog', { static: true })\n public dialog!: ElementRef<HTMLDialogElement>;\n\n @Output()\n public closeDialog = new EventEmitter<boolean>();\n\n public remember = true;\n\n ngAfterViewInit() {\n this.dialog.nativeElement.showModal();\n }\n\n close(remember: boolean = this.remember) {\n this.dialog.nativeElement.close();\n this.closeDialog.emit(remember);\n }\n\n}\n","<dialog #dialog\n class=\"max-w-6xl rounded overflow-auto drop-shadow-2xl bg-white text-black dark:bg-black dark:text-white flex flex-col gap-3 p-6\">\n <rxap-changelog></rxap-changelog>\n <div class=\"flex flex-row justify-end gap-6\">\n <div class=\"flex flex-row gap-3 items-center\">\n <input [(ngModel)]=\"remember\" id=\"rxap-changelog-remember\" type=\"checkbox\">\n <label for=\"rxap-changelog-remember\" i18n>Don't show again until next new version</label>\n </div>\n <button (click)=\"close()\" class=\"px-4 py-2 rounded bg-primary-500\" i18n>close</button>\n </div>\n</dialog>\n","import {\n ApplicationRef,\n createComponent,\n inject,\n Injectable,\n} from '@angular/core';\nimport { RXAP_ENVIRONMENT } from '@rxap/environment';\nimport { take } from 'rxjs';\nimport { tap } from 'rxjs/operators';\nimport { ChangelogDialogComponent } from './changelog-dialog/changelog-dialog.component';\n\nexport const RXAP_CHANGELOG_LAST_VERSION = 'RXAP_CHANGELOG_LAST_VERSION';\nexport const RXAP_CHANGELOG_DISABLED = 'RXAP_CHANGELOG_DISABLED';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ChangelogService {\n\n private readonly version = inject(RXAP_ENVIRONMENT).name;\n\n private readonly applicationRef = inject(ApplicationRef);\n\n public showChangelogDialog() {\n const body = document.getElementsByTagName('body')[0];\n const div = document.createElement('div');\n body.appendChild(div);\n const componentRef = createComponent(ChangelogDialogComponent, {\n hostElement: div,\n environmentInjector: this.applicationRef.injector,\n });\n this.applicationRef.attachView(componentRef.hostView);\n componentRef.instance.closeDialog.pipe(\n take(1),\n tap(remember => {\n componentRef.destroy();\n body.removeChild(div);\n div.remove();\n if (remember && this.version) {\n this.lastVersion = this.version;\n }\n }),\n ).subscribe();\n }\n\n public get isDisabled(): boolean {\n return localStorage.getItem(RXAP_CHANGELOG_DISABLED) === 'true';\n }\n\n public get lastVersion(): string | null {\n return localStorage.getItem(RXAP_CHANGELOG_LAST_VERSION);\n }\n\n public set lastVersion(version: string | null) {\n if (version) {\n localStorage.setItem(RXAP_CHANGELOG_LAST_VERSION, version);\n } else {\n localStorage.removeItem(RXAP_CHANGELOG_LAST_VERSION);\n }\n }\n\n public showChangelogDialogIfNewVersion() {\n\n if (this.isDisabled) {\n return;\n }\n\n const lastVersion = this.lastVersion;\n\n if (this.version && lastVersion && this.version !== lastVersion) {\n this.lastVersion = null;\n }\n\n if (this.lastVersion === this.version) {\n return;\n }\n\n this.showChangelogDialog();\n\n }\n\n}\n","import { Provider, inject, provideAppInitializer } from '@angular/core';\nimport { ChangelogService } from './changelog.service';\n\nexport function ProvideChangelog() {\n return provideAppInitializer(() => {\n const initializerFn = ((changelogService: ChangelogService) => () => changelogService.showChangelogDialogIfNewVersion())(inject(ChangelogService));\n return initializerFn();\n });\n}\n","// region openapi responses\nexport * from './lib/openapi/responses/changelog-controller-get-latest.response';\nexport * from './lib/openapi/responses/changelog-controller-get-version.response';\nexport * from './lib/openapi/responses/changelog-controller-list.response';\n// endregion\n\n// region openapi remote-methods\nexport * from './lib/openapi/remote-methods/changelog-controller-get-latest.remote-method';\nexport * from './lib/openapi/remote-methods/changelog-controller-get-version.remote-method';\nexport * from './lib/openapi/remote-methods/changelog-controller-list.remote-method';\n// endregion\n\n// region openapi parameters\nexport * from './lib/openapi/parameters/changelog-controller-get-latest.parameter';\nexport * from './lib/openapi/parameters/changelog-controller-get-version.parameter';\n// endregion\n\n// region openapi components\nexport * from './lib/openapi/components/changelog-dto';\n// endregion\n\n// region changelog-dialog\nexport * from './lib/changelog-dialog/changelog-dialog.component';\n// endregion\n\n// region changelog\nexport * from './lib/changelog/changelog.component';\n// endregion\n\n// region \nexport * from './lib/changelog.service';\nexport * from './lib/provide-changelog';\n// endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}