@yuuvis/client-framework 3.0.0-beta.20.2 → 3.0.0-beta.21.1
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/autocomplete/README.md +1 -1
- package/common/README.md +1 -1
- package/fesm2022/yuuvis-client-framework-actions.mjs +25 -25
- package/fesm2022/yuuvis-client-framework-actions.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-app-bar.mjs +6 -6
- package/fesm2022/yuuvis-client-framework-app-bar.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-autocomplete.mjs +5 -236
- package/fesm2022/yuuvis-client-framework-autocomplete.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-breadcrumb.mjs +4 -4
- package/fesm2022/yuuvis-client-framework-breadcrumb.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-clipboard.mjs +7 -6
- package/fesm2022/yuuvis-client-framework-clipboard.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-common.mjs +3 -1793
- package/fesm2022/yuuvis-client-framework-common.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-datepicker.mjs +51 -51
- package/fesm2022/yuuvis-client-framework-datepicker.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-forms.mjs +154 -167
- package/fesm2022/yuuvis-client-framework-forms.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-icons.mjs +14 -14
- package/fesm2022/yuuvis-client-framework-icons.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-list.mjs +3 -679
- package/fesm2022/yuuvis-client-framework-list.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-master-details.mjs +3 -136
- package/fesm2022/yuuvis-client-framework-master-details.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-metadata-form-defaults.mjs +7 -7
- package/fesm2022/yuuvis-client-framework-metadata-form-defaults.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-metadata-form.mjs +28 -28
- package/fesm2022/yuuvis-client-framework-metadata-form.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-object-details.mjs +92 -95
- package/fesm2022/yuuvis-client-framework-object-details.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-object-flavor.mjs +46 -44
- package/fesm2022/yuuvis-client-framework-object-flavor.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-object-form.mjs +47 -47
- package/fesm2022/yuuvis-client-framework-object-form.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-object-preview.mjs +37 -58
- package/fesm2022/yuuvis-client-framework-object-preview.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-object-relationship.mjs +80 -80
- package/fesm2022/yuuvis-client-framework-object-relationship.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-object-summary.mjs +37 -38
- package/fesm2022/yuuvis-client-framework-object-summary.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-object-versions.mjs +20 -20
- package/fesm2022/yuuvis-client-framework-object-versions.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-overflow-hidden.mjs +3 -62
- package/fesm2022/yuuvis-client-framework-overflow-hidden.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-overflow-menu.mjs +3 -129
- package/fesm2022/yuuvis-client-framework-overflow-menu.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-pagination.mjs +5 -5
- package/fesm2022/yuuvis-client-framework-pagination.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-popout.mjs +3 -239
- package/fesm2022/yuuvis-client-framework-popout.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-query-list.mjs +26 -28
- package/fesm2022/yuuvis-client-framework-query-list.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-renderer.mjs +51 -51
- package/fesm2022/yuuvis-client-framework-renderer.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-sequence-list.mjs +7 -7
- package/fesm2022/yuuvis-client-framework-sequence-list.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-simple-search.mjs +4 -4
- package/fesm2022/yuuvis-client-framework-simple-search.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-sort.mjs +34 -55
- package/fesm2022/yuuvis-client-framework-sort.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-split-view.mjs +3 -321
- package/fesm2022/yuuvis-client-framework-split-view.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-tile-list.mjs +88 -90
- package/fesm2022/yuuvis-client-framework-tile-list.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-token-search.mjs +21 -21
- package/fesm2022/yuuvis-client-framework-token-search.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-tree.mjs +16 -16
- package/fesm2022/yuuvis-client-framework-tree.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-upload-progress.mjs +15 -15
- package/fesm2022/yuuvis-client-framework-upload-progress.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-widget-grid.mjs +3 -946
- package/fesm2022/yuuvis-client-framework-widget-grid.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework.mjs +22 -22
- package/fesm2022/yuuvis-client-framework.mjs.map +1 -1
- package/lib/assets/i18n/de.json +1 -55
- package/lib/assets/i18n/en.json +1 -55
- package/list/README.md +1 -1
- package/master-details/README.md +1 -1
- package/overflow-hidden/README.md +1 -1
- package/overflow-menu/README.md +1 -1
- package/package.json +50 -48
- package/popout/README.md +1 -1
- package/split-view/README.md +1 -1
- package/types/yuuvis-client-framework-autocomplete.d.ts +1 -0
- package/{clipboard/index.d.ts → types/yuuvis-client-framework-clipboard.d.ts} +1 -1
- package/types/yuuvis-client-framework-common.d.ts +1 -0
- package/types/yuuvis-client-framework-list.d.ts +1 -0
- package/types/yuuvis-client-framework-master-details.d.ts +1 -0
- package/{object-flavor/index.d.ts → types/yuuvis-client-framework-object-flavor.d.ts} +1 -0
- package/types/yuuvis-client-framework-overflow-hidden.d.ts +1 -0
- package/types/yuuvis-client-framework-overflow-menu.d.ts +1 -0
- package/types/yuuvis-client-framework-popout.d.ts +1 -0
- package/{renderer/index.d.ts → types/yuuvis-client-framework-renderer.d.ts} +2 -2
- package/types/yuuvis-client-framework-split-view.d.ts +1 -0
- package/types/yuuvis-client-framework-widget-grid.d.ts +1 -0
- package/widget-grid/README.md +1 -46
- package/autocomplete/index.d.ts +0 -89
- package/common/index.d.ts +0 -536
- package/list/index.d.ts +0 -380
- package/master-details/index.d.ts +0 -69
- package/overflow-hidden/index.d.ts +0 -28
- package/overflow-menu/index.d.ts +0 -52
- package/popout/index.d.ts +0 -106
- package/split-view/index.d.ts +0 -197
- package/widget-grid/index.d.ts +0 -299
- /package/{actions/index.d.ts → types/yuuvis-client-framework-actions.d.ts} +0 -0
- /package/{app-bar/index.d.ts → types/yuuvis-client-framework-app-bar.d.ts} +0 -0
- /package/{breadcrumb/index.d.ts → types/yuuvis-client-framework-breadcrumb.d.ts} +0 -0
- /package/{datepicker/index.d.ts → types/yuuvis-client-framework-datepicker.d.ts} +0 -0
- /package/{forms/index.d.ts → types/yuuvis-client-framework-forms.d.ts} +0 -0
- /package/{icons/index.d.ts → types/yuuvis-client-framework-icons.d.ts} +0 -0
- /package/{metadata-form-defaults/index.d.ts → types/yuuvis-client-framework-metadata-form-defaults.d.ts} +0 -0
- /package/{metadata-form/index.d.ts → types/yuuvis-client-framework-metadata-form.d.ts} +0 -0
- /package/{object-details/index.d.ts → types/yuuvis-client-framework-object-details.d.ts} +0 -0
- /package/{object-form/index.d.ts → types/yuuvis-client-framework-object-form.d.ts} +0 -0
- /package/{object-preview/index.d.ts → types/yuuvis-client-framework-object-preview.d.ts} +0 -0
- /package/{object-relationship/index.d.ts → types/yuuvis-client-framework-object-relationship.d.ts} +0 -0
- /package/{object-summary/index.d.ts → types/yuuvis-client-framework-object-summary.d.ts} +0 -0
- /package/{object-versions/index.d.ts → types/yuuvis-client-framework-object-versions.d.ts} +0 -0
- /package/{pagination/index.d.ts → types/yuuvis-client-framework-pagination.d.ts} +0 -0
- /package/{query-list/index.d.ts → types/yuuvis-client-framework-query-list.d.ts} +0 -0
- /package/{sequence-list/index.d.ts → types/yuuvis-client-framework-sequence-list.d.ts} +0 -0
- /package/{simple-search/index.d.ts → types/yuuvis-client-framework-simple-search.d.ts} +0 -0
- /package/{sort/index.d.ts → types/yuuvis-client-framework-sort.d.ts} +0 -0
- /package/{tile-list/index.d.ts → types/yuuvis-client-framework-tile-list.d.ts} +0 -0
- /package/{token-search/index.d.ts → types/yuuvis-client-framework-token-search.d.ts} +0 -0
- /package/{tree/index.d.ts → types/yuuvis-client-framework-tree.d.ts} +0 -0
- /package/{upload-progress/index.d.ts → types/yuuvis-client-framework-upload-progress.d.ts} +0 -0
- /package/{index.d.ts → types/yuuvis-client-framework.d.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yuuvis-client-framework-object-versions.mjs","sources":["../../../../../libs/yuuvis/client-framework/object-versions/src/lib/object-versions.component.ts","../../../../../libs/yuuvis/client-framework/object-versions/src/lib/object-versions.component.html","../../../../../libs/yuuvis/client-framework/object-versions/src/lib/object-versions.module.ts","../../../../../libs/yuuvis/client-framework/object-versions/src/yuuvis-client-framework-object-versions.ts"],"sourcesContent":["import { Component, computed, effect, inject, input, output, signal, untracked, viewChild } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport {\n DmsObject,\n DmsService,\n LocaleDatePipe,\n TranslatePipe,\n TranslateService,\n VirtualObjectType\n} from '@yuuvis/client-core';\nimport { BusyOverlayDirective, ConfirmService, LayoutSettingsService } from '@yuuvis/client-framework/common';\nimport { ListComponent, YuvListModule } from '@yuuvis/client-framework/list';\nimport { ObjectDetailsHeaderComponent } from '@yuuvis/client-framework/object-details';\nimport { ObjectPreviewComponent } from '@yuuvis/client-framework/object-preview';\nimport { ObjectSummaryDataComponent } from '@yuuvis/client-framework/object-summary';\nimport { YuvSplitViewModule } from '@yuuvis/client-framework/split-view';\nimport { Metadata } from '@yuuvis/media-viewer';\nimport { finalize, switchMap } from 'rxjs';\n\n@Component({\n selector: 'yuv-object-versions',\n imports: [\n YuvSplitViewModule,\n TranslatePipe,\n ObjectPreviewComponent,\n ObjectDetailsHeaderComponent,\n YuvListModule,\n BusyOverlayDirective,\n ObjectSummaryDataComponent,\n MatTabsModule,\n MatIconModule,\n MatButtonModule,\n MatTooltipModule,\n LocaleDatePipe\n ],\n templateUrl: './object-versions.component.html',\n styleUrl: './object-versions.component.scss'\n})\nexport class ObjectVersionsComponent {\n #layoutSettingsService = inject(LayoutSettingsService);\n #dmsService = inject(DmsService);\n #confirm = inject(ConfirmService);\n\n private translate = inject(TranslateService);\n\n versionList = viewChild(ListComponent);\n #versionListEffect = effect(() => {\n const list = this.versionList();\n if (list) setTimeout(() => list.focus(), 100);\n this.#preSelect();\n });\n\n dmsObject = input.required<DmsObject>();\n #dmsObjectEffect = effect(() => {\n const o = this.dmsObject();\n if (o) this.#fetchVersions(o);\n });\n\n /**\n * Object type to use for retrieving header data\n */\n type = input.required<VirtualObjectType>();\n /**\n * If the object config for the given type has been stored in a certain bucket, this\n * bucket can be provided here. If no bucket is set, the config will be retrieved\n * from the main object config\n */\n objectConfigBucket = input<string | undefined>(undefined);\n\n objectRestored = output<number>();\n\n splitGutterSize = this.#layoutSettingsService.DEFAULT_SPLIT_VIEW_GUTTER_SIZE;\n busy = signal<boolean>(false);\n versions = signal<DmsObject[]>([]);\n #versionsEffect = effect(() => {\n this.versions();\n untracked(() => {\n this.#preSelect();\n });\n });\n selectedVersion = signal<DmsObject | undefined>(undefined);\n error = signal<string | undefined>(undefined);\n\n selectedIndex = signal<number | null>(null);\n isCurrentVersion = computed(() => {\n const index = this.selectedIndex();\n return index === 0;\n });\n metadata: Partial<Metadata> = {\n editable: false\n };\n\n #preSelect() {\n const vl = this.versionList();\n if (vl && !this.selectedVersion()) {\n vl.select(0);\n }\n }\n\n itemSelected(selectedIndex: number[]) {\n const idx = selectedIndex[0];\n this.selectedIndex.set(idx);\n this.selectedVersion.set(this.versions()[idx]);\n }\n\n downloadCurrentVersion() {\n const o = this.selectedVersion();\n if (o) this.#dmsService.downloadContent([o], true);\n }\n\n restoreCurrentVersion() {\n const o = this.selectedVersion();\n\n if (o) {\n this.#confirm\n .confirm({\n title: this.translate.instant('yuv.object-versions.actions.restore'),\n message: this.translate.instant('yuv.object-versions.actions.restore.confirm.message', {\n version: o.version\n })\n })\n .subscribe((confirmed: boolean) => {\n if (confirmed) this.#executeRestoreCurrentVersion(o);\n });\n }\n }\n\n #executeRestoreCurrentVersion(version: DmsObject) {\n this.busy.set(true);\n this.#dmsService\n .restoreDmsObject(version.id, version.version)\n .pipe(\n switchMap((dmsObject: DmsObject) => this.#dmsService.getDmsObjectVersions(dmsObject.id)),\n finalize(() => this.busy.set(false))\n )\n .subscribe({\n next: (versions: DmsObject[]) => {\n this.versions.set(versions);\n this.versionList()?.select(0);\n this.objectRestored.emit(version.version);\n }\n });\n }\n\n #fetchVersions(dmsObject: DmsObject) {\n // if the dms object only has one version we do not need to ask the backend\n if (dmsObject.version === 1) {\n this.versions.set([dmsObject]);\n } else {\n this.busy.set(true);\n this.#dmsService\n .getDmsObjectVersions(dmsObject.id)\n .pipe(finalize(() => this.busy.set(false)))\n .subscribe({\n next: (versions: DmsObject[]) => {\n this.versions.set(versions);\n },\n error: (e) => {\n this.error.set(this.translate.instant('yuv.object-versions.error.fetch-versions'));\n console.error(e);\n }\n });\n }\n }\n}\n","@let err = error();\n@if (!err) {\n <yuv-split-view [gutterSize]=\"splitGutterSize\" layoutSettingsID=\"yuv.object-versions.split\">\n <!-- version details -->\n <ng-template yuvSplitArea [size]=\"60\">\n <div class=\"version-details ymt-panel\" [yuvBusyOverlay]=\"busy()\">\n @let selected = selectedVersion();\n @if (selected) {\n <ng-template #headerActions>\n <button mat-icon-button (click)=\"downloadCurrentVersion()\" [matTooltip]=\"'yuv.object-versions.actions.download' | translate\">\n <mat-icon>download</mat-icon>\n </button>\n <button\n mat-icon-button\n (click)=\"restoreCurrentVersion()\"\n [disabled]=\"isCurrentVersion()\"\n [matTooltip]=\"'yuv.object-versions.actions.restore' | translate\"\n >\n <mat-icon>restore_page</mat-icon>\n </button>\n </ng-template>\n <yuv-object-details-header [dmsObject]=\"selected\" [type]=\"type()\" [bucket]=\"objectConfigBucket()\" [actions]=\"headerActions\">\n </yuv-object-details-header>\n\n <mat-tab-group class=\"version-tabs\">\n <mat-tab [label]=\"'yuv.object-versions.tabs.content.title' | translate\">\n <ng-template matTabContent>\n <yuv-object-preview [metadata]=\"metadata\" [dmsObject]=\"selected\" [version]=\"selected.version\"></yuv-object-preview>\n </ng-template>\n </mat-tab>\n <mat-tab [label]=\"'yuv.object-versions.tabs.indexdata.title' | translate\">\n <ng-template matTabContent>\n <div class=\"metadata\">\n <yuv-object-summary-data [dmsObject]=\"selected\" [showAppliedFlavors]=\"true\"></yuv-object-summary-data>\n </div>\n </ng-template> </mat-tab\n ></mat-tab-group>\n }\n </div>\n </ng-template>\n\n <!-- versions list -->\n <ng-template yuvSplitArea [size]=\"40\">\n <div class=\"version-list ymt-panel\">\n <yuv-list selectOnEnter=\"true\" (itemSelect)=\"itemSelected($event)\">\n @for (v of versions(); track v.version) {\n <div class=\"version\" yuvListItem>\n <div class=\"label\">{{ 'yuv.object-versions.list.version' | translate: { version: v.version } }}</div>\n\n <span class=\"modified-on\">{{ v.modified.on | localeDate }}</span>\n <span class=\"modified-by\">{{ v.modified.by.title }}</span>\n </div>\n }\n </yuv-list>\n </div>\n </ng-template>\n </yuv-split-view>\n} @else {\n <div class=\"error\">\n <p>{{ err }}</p>\n </div>\n}\n","import { NgModule } from '@angular/core';\nimport { ObjectVersionsComponent } from './object-versions.component';\n\nconst cmp = [ObjectVersionsComponent];\n@NgModule({\n imports: cmp,\n exports: cmp\n})\nexport class YuvObjectVersionsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"yuuvis-client-framework-object-versions.mjs","sources":["../../../../../libs/yuuvis/client-framework/object-versions/src/lib/object-versions.component.ts","../../../../../libs/yuuvis/client-framework/object-versions/src/lib/object-versions.component.html","../../../../../libs/yuuvis/client-framework/object-versions/src/lib/object-versions.module.ts","../../../../../libs/yuuvis/client-framework/object-versions/src/yuuvis-client-framework-object-versions.ts"],"sourcesContent":["import { Component, computed, effect, inject, input, output, signal, untracked, viewChild } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport {\n DmsObject,\n DmsService,\n LocaleDatePipe,\n TranslatePipe,\n TranslateService,\n VirtualObjectType\n} from '@yuuvis/client-core';\nimport { BusyOverlayDirective, ConfirmService, LayoutSettingsService } from '@yuuvis/client-framework/common';\nimport { ListComponent, YuvListModule } from '@yuuvis/client-framework/list';\nimport { ObjectDetailsHeaderComponent } from '@yuuvis/client-framework/object-details';\nimport { ObjectPreviewComponent } from '@yuuvis/client-framework/object-preview';\nimport { ObjectSummaryDataComponent } from '@yuuvis/client-framework/object-summary';\nimport { YuvSplitViewModule } from '@yuuvis/client-framework/split-view';\nimport { Metadata } from '@yuuvis/media-viewer';\nimport { finalize, switchMap } from 'rxjs';\n\n@Component({\n selector: 'yuv-object-versions',\n imports: [\n YuvSplitViewModule,\n TranslatePipe,\n ObjectPreviewComponent,\n ObjectDetailsHeaderComponent,\n YuvListModule,\n BusyOverlayDirective,\n ObjectSummaryDataComponent,\n MatTabsModule,\n MatIconModule,\n MatButtonModule,\n MatTooltipModule,\n LocaleDatePipe\n ],\n templateUrl: './object-versions.component.html',\n styleUrl: './object-versions.component.scss'\n})\nexport class ObjectVersionsComponent {\n #layoutSettingsService = inject(LayoutSettingsService);\n #dmsService = inject(DmsService);\n #confirm = inject(ConfirmService);\n\n private translate = inject(TranslateService);\n\n versionList = viewChild(ListComponent);\n #versionListEffect = effect(() => {\n const list = this.versionList();\n if (list) setTimeout(() => list.focus(), 100);\n this.#preSelect();\n });\n\n dmsObject = input.required<DmsObject>();\n #dmsObjectEffect = effect(() => {\n const o = this.dmsObject();\n if (o) this.#fetchVersions(o);\n });\n\n /**\n * Object type to use for retrieving header data\n */\n type = input.required<VirtualObjectType>();\n /**\n * If the object config for the given type has been stored in a certain bucket, this\n * bucket can be provided here. If no bucket is set, the config will be retrieved\n * from the main object config\n */\n objectConfigBucket = input<string | undefined>(undefined);\n\n objectRestored = output<number>();\n\n splitGutterSize = this.#layoutSettingsService.DEFAULT_SPLIT_VIEW_GUTTER_SIZE;\n busy = signal<boolean>(false);\n versions = signal<DmsObject[]>([]);\n #versionsEffect = effect(() => {\n this.versions();\n untracked(() => {\n this.#preSelect();\n });\n });\n selectedVersion = signal<DmsObject | undefined>(undefined);\n error = signal<string | undefined>(undefined);\n\n selectedIndex = signal<number | null>(null);\n isCurrentVersion = computed(() => {\n const index = this.selectedIndex();\n return index === 0;\n });\n metadata: Partial<Metadata> = {\n editable: false\n };\n\n #preSelect() {\n const vl = this.versionList();\n if (vl && !this.selectedVersion()) {\n vl.select(0);\n }\n }\n\n itemSelected(selectedIndex: number[]) {\n const idx = selectedIndex[0];\n this.selectedIndex.set(idx);\n this.selectedVersion.set(this.versions()[idx]);\n }\n\n downloadCurrentVersion() {\n const o = this.selectedVersion();\n if (o) this.#dmsService.downloadContent([o], true);\n }\n\n restoreCurrentVersion() {\n const o = this.selectedVersion();\n\n if (o) {\n this.#confirm\n .confirm({\n title: this.translate.instant('yuv.object-versions.actions.restore'),\n message: this.translate.instant('yuv.object-versions.actions.restore.confirm.message', {\n version: o.version\n })\n })\n .subscribe((confirmed: boolean) => {\n if (confirmed) this.#executeRestoreCurrentVersion(o);\n });\n }\n }\n\n #executeRestoreCurrentVersion(version: DmsObject) {\n this.busy.set(true);\n this.#dmsService\n .restoreDmsObject(version.id, version.version)\n .pipe(\n switchMap((dmsObject: DmsObject) => this.#dmsService.getDmsObjectVersions(dmsObject.id)),\n finalize(() => this.busy.set(false))\n )\n .subscribe({\n next: (versions: DmsObject[]) => {\n this.versions.set(versions);\n this.versionList()?.select(0);\n this.objectRestored.emit(version.version);\n }\n });\n }\n\n #fetchVersions(dmsObject: DmsObject) {\n // if the dms object only has one version we do not need to ask the backend\n if (dmsObject.version === 1) {\n this.versions.set([dmsObject]);\n } else {\n this.busy.set(true);\n this.#dmsService\n .getDmsObjectVersions(dmsObject.id)\n .pipe(finalize(() => this.busy.set(false)))\n .subscribe({\n next: (versions: DmsObject[]) => {\n this.versions.set(versions);\n },\n error: (e) => {\n this.error.set(this.translate.instant('yuv.object-versions.error.fetch-versions'));\n console.error(e);\n }\n });\n }\n }\n}\n","@let err = error();\n@if (!err) {\n <yuv-split-view [gutterSize]=\"splitGutterSize\" layoutSettingsID=\"yuv.object-versions.split\">\n <!-- version details -->\n <ng-template yuvSplitArea [size]=\"60\">\n <div class=\"version-details ymt-panel\" [yuvBusyOverlay]=\"busy()\">\n @let selected = selectedVersion();\n @if (selected) {\n <ng-template #headerActions>\n <button mat-icon-button (click)=\"downloadCurrentVersion()\" [matTooltip]=\"'yuv.object-versions.actions.download' | translate\">\n <mat-icon>download</mat-icon>\n </button>\n <button\n mat-icon-button\n (click)=\"restoreCurrentVersion()\"\n [disabled]=\"isCurrentVersion()\"\n [matTooltip]=\"'yuv.object-versions.actions.restore' | translate\"\n >\n <mat-icon>restore_page</mat-icon>\n </button>\n </ng-template>\n <yuv-object-details-header [dmsObject]=\"selected\" [type]=\"type()\" [bucket]=\"objectConfigBucket()\" [actions]=\"headerActions\">\n </yuv-object-details-header>\n\n <mat-tab-group class=\"version-tabs\">\n <mat-tab [label]=\"'yuv.object-versions.tabs.content.title' | translate\">\n <ng-template matTabContent>\n <yuv-object-preview [metadata]=\"metadata\" [dmsObject]=\"selected\" [version]=\"selected.version\"></yuv-object-preview>\n </ng-template>\n </mat-tab>\n <mat-tab [label]=\"'yuv.object-versions.tabs.indexdata.title' | translate\">\n <ng-template matTabContent>\n <div class=\"metadata\">\n <yuv-object-summary-data [dmsObject]=\"selected\" [showAppliedFlavors]=\"true\"></yuv-object-summary-data>\n </div>\n </ng-template> </mat-tab\n ></mat-tab-group>\n }\n </div>\n </ng-template>\n\n <!-- versions list -->\n <ng-template yuvSplitArea [size]=\"40\">\n <div class=\"version-list ymt-panel\">\n <yuv-list selectOnEnter=\"true\" (itemSelect)=\"itemSelected($event)\">\n @for (v of versions(); track v.version) {\n <div class=\"version\" yuvListItem>\n <div class=\"label\">{{ 'yuv.object-versions.list.version' | translate: { version: v.version } }}</div>\n\n <span class=\"modified-on\">{{ v.modified.on | localeDate }}</span>\n <span class=\"modified-by\">{{ v.modified.by.title }}</span>\n </div>\n }\n </yuv-list>\n </div>\n </ng-template>\n </yuv-split-view>\n} @else {\n <div class=\"error\">\n <p>{{ err }}</p>\n </div>\n}\n","import { NgModule } from '@angular/core';\nimport { ObjectVersionsComponent } from './object-versions.component';\n\nconst cmp = [ObjectVersionsComponent];\n@NgModule({\n imports: cmp,\n exports: cmp\n})\nexport class YuvObjectVersionsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,70 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
import { inject, ElementRef, contentChild, signal, Component, NgModule } from '@angular/core';
|
|
3
|
-
import * as i1 from '@angular/common';
|
|
4
|
-
import { CommonModule } from '@angular/common';
|
|
1
|
+
export * from '@yuuvis/client-components/overflow-hidden';
|
|
5
2
|
|
|
6
3
|
/**
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* is not enough space to render the whole component anymore (it would overflow) another component
|
|
10
|
-
* can take it's place. If you do not specify that replace-component, the component will just
|
|
11
|
-
* disappear and make room for other more important components.
|
|
4
|
+
* @deprecated Import from `@yuuvis/client-components/overflow-hidden` instead.
|
|
5
|
+
* This entry point is a backward-compatibility shim and will be removed in a future release.
|
|
12
6
|
*/
|
|
13
|
-
class OverflowHiddenComponent {
|
|
14
|
-
constructor() {
|
|
15
|
-
this.#elRef = inject(ElementRef);
|
|
16
|
-
// component/content to be rendered when there is enough space
|
|
17
|
-
this.defaultSlot = contentChild.required('yuvDefaultSlot');
|
|
18
|
-
// component/content to be rendered when the default component overflows
|
|
19
|
-
this.overflowSlot = contentChild('yuvOverflowSlot', ...(ngDevMode ? [{ debugName: "overflowSlot" }] : []));
|
|
20
|
-
this.overflow = signal(false, ...(ngDevMode ? [{ debugName: "overflow" }] : []));
|
|
21
|
-
}
|
|
22
|
-
#elRef;
|
|
23
|
-
#contentObserver;
|
|
24
|
-
#initObserver() {
|
|
25
|
-
this.#contentObserver = new IntersectionObserver((entries) => {
|
|
26
|
-
const overflowContainer = entries[0];
|
|
27
|
-
this.overflow.set(overflowContainer.intersectionRatio < 1);
|
|
28
|
-
}, {
|
|
29
|
-
threshold: [1],
|
|
30
|
-
root: this.#elRef.nativeElement
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
ngAfterViewInit() {
|
|
34
|
-
this.#initObserver();
|
|
35
|
-
this.#contentObserver?.observe(this.#elRef.nativeElement.querySelector('.default'));
|
|
36
|
-
}
|
|
37
|
-
ngOnDestroy() {
|
|
38
|
-
if (this.#contentObserver)
|
|
39
|
-
this.#contentObserver.disconnect();
|
|
40
|
-
}
|
|
41
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: OverflowHiddenComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
42
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.19", type: OverflowHiddenComponent, isStandalone: true, selector: "yuv-overflow-hidden", host: { properties: { "class.overflowing": "overflow()" } }, queries: [{ propertyName: "defaultSlot", first: true, predicate: ["yuvDefaultSlot"], descendants: true, isSignal: true }, { propertyName: "overflowSlot", first: true, predicate: ["yuvOverflowSlot"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"default\">\n <ng-container *ngTemplateOutlet=\"defaultSlot()\"></ng-container>\n</div>\n@let os = overflowSlot();\n@if (os) {\n <div class=\"overflow\">\n <ng-container *ngTemplateOutlet=\"os\"></ng-container>\n </div>\n}\n", styles: [":host{display:grid;grid-template-columns:auto;grid-template-rows:auto;align-items:center;overflow:hidden}:host.overflowing .default{opacity:0;z-index:0}:host.overflowing .overflow{opacity:1;z-index:1}:host .default,:host .overflow{grid-column:1;grid-row:1;z-index:1}:host .overflow{opacity:0;z-index:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
|
|
43
|
-
}
|
|
44
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: OverflowHiddenComponent, decorators: [{
|
|
45
|
-
type: Component,
|
|
46
|
-
args: [{ selector: 'yuv-overflow-hidden', imports: [CommonModule], host: {
|
|
47
|
-
'[class.overflowing]': 'overflow()'
|
|
48
|
-
}, template: "<div class=\"default\">\n <ng-container *ngTemplateOutlet=\"defaultSlot()\"></ng-container>\n</div>\n@let os = overflowSlot();\n@if (os) {\n <div class=\"overflow\">\n <ng-container *ngTemplateOutlet=\"os\"></ng-container>\n </div>\n}\n", styles: [":host{display:grid;grid-template-columns:auto;grid-template-rows:auto;align-items:center;overflow:hidden}:host.overflowing .default{opacity:0;z-index:0}:host.overflowing .overflow{opacity:1;z-index:1}:host .default,:host .overflow{grid-column:1;grid-row:1;z-index:1}:host .overflow{opacity:0;z-index:0}\n"] }]
|
|
49
|
-
}], propDecorators: { defaultSlot: [{ type: i0.ContentChild, args: ['yuvDefaultSlot', { isSignal: true }] }], overflowSlot: [{ type: i0.ContentChild, args: ['yuvOverflowSlot', { isSignal: true }] }] } });
|
|
50
|
-
|
|
51
|
-
const cmp = [OverflowHiddenComponent];
|
|
52
|
-
class YuvOverflowHiddenModule {
|
|
53
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: YuvOverflowHiddenModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
54
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.19", ngImport: i0, type: YuvOverflowHiddenModule, imports: [OverflowHiddenComponent], exports: [OverflowHiddenComponent] }); }
|
|
55
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: YuvOverflowHiddenModule, imports: [cmp] }); }
|
|
56
|
-
}
|
|
57
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: YuvOverflowHiddenModule, decorators: [{
|
|
58
|
-
type: NgModule,
|
|
59
|
-
args: [{
|
|
60
|
-
imports: cmp,
|
|
61
|
-
exports: cmp
|
|
62
|
-
}]
|
|
63
|
-
}] });
|
|
64
7
|
|
|
65
8
|
/**
|
|
66
9
|
* Generated bundle index. Do not edit.
|
|
67
10
|
*/
|
|
68
|
-
|
|
69
|
-
export { OverflowHiddenComponent, YuvOverflowHiddenModule };
|
|
70
11
|
//# sourceMappingURL=yuuvis-client-framework-overflow-hidden.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yuuvis-client-framework-overflow-hidden.mjs","sources":["../../../../../libs/yuuvis/client-framework/overflow-hidden/src/
|
|
1
|
+
{"version":3,"file":"yuuvis-client-framework-overflow-hidden.mjs","sources":["../../../../../libs/yuuvis/client-framework/overflow-hidden/src/index.ts","../../../../../libs/yuuvis/client-framework/overflow-hidden/src/yuuvis-client-framework-overflow-hidden.ts"],"sourcesContent":["/**\n * @deprecated Import from `@yuuvis/client-components/overflow-hidden` instead.\n * This entry point is a backward-compatibility shim and will be removed in a future release.\n */\nexport * from '@yuuvis/client-components/overflow-hidden';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;AAAA;;;AAGG;;ACHH;;AAEG"}
|
|
@@ -1,137 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
import { inject, ElementRef, input, effect, computed, signal, Component, NgModule } from '@angular/core';
|
|
3
|
-
import * as i1 from '@angular/common';
|
|
4
|
-
import { CommonModule } from '@angular/common';
|
|
5
|
-
import * as i2 from '@angular/material/button';
|
|
6
|
-
import { MatButtonModule } from '@angular/material/button';
|
|
7
|
-
import * as i4 from '@angular/material/icon';
|
|
8
|
-
import { MatIconModule } from '@angular/material/icon';
|
|
9
|
-
import * as i3 from '@angular/material/menu';
|
|
10
|
-
import { MatMenuModule } from '@angular/material/menu';
|
|
11
|
-
import * as i5 from '@angular/material/tooltip';
|
|
12
|
-
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
1
|
+
export * from '@yuuvis/client-components/overflow-menu';
|
|
13
2
|
|
|
14
3
|
/**
|
|
15
|
-
*
|
|
16
|
-
* be
|
|
4
|
+
* @deprecated Import from `@yuuvis/client-components/overflow-menu` instead.
|
|
5
|
+
* This entry point is a backward-compatibility shim and will be removed in a future release.
|
|
17
6
|
*/
|
|
18
|
-
class OverflowMenuComponent {
|
|
19
|
-
constructor() {
|
|
20
|
-
this.#elRef = inject(ElementRef);
|
|
21
|
-
this.overflowIcon = input('more_horiz', ...(ngDevMode ? [{ debugName: "overflowIcon" }] : []));
|
|
22
|
-
this.groupLabels = input(...(ngDevMode ? [undefined, { debugName: "groupLabels" }] : []));
|
|
23
|
-
/**
|
|
24
|
-
* Items of the menu
|
|
25
|
-
*/
|
|
26
|
-
this.menuItems = input([], ...(ngDevMode ? [{ debugName: "menuItems" }] : []));
|
|
27
|
-
this.#menuItemsEffect = effect(() => {
|
|
28
|
-
this.#observe(this.menuItems());
|
|
29
|
-
}, ...(ngDevMode ? [{ debugName: "#menuItemsEffect" }] : []));
|
|
30
|
-
this.vertical = input(false, ...(ngDevMode ? [{ debugName: "vertical" }] : []));
|
|
31
|
-
this.__menuGroups = computed(() => this.#groupItems(this.__menuItems()), ...(ngDevMode ? [{ debugName: "__menuGroups" }] : []));
|
|
32
|
-
this.__menuItems = computed(() => {
|
|
33
|
-
return this.menuItems().map((i) => ({ ...i, overflow: false }));
|
|
34
|
-
}, ...(ngDevMode ? [{ debugName: "__menuItems" }] : []));
|
|
35
|
-
this.overflowGroups = signal([], ...(ngDevMode ? [{ debugName: "overflowGroups" }] : []));
|
|
36
|
-
this.#itemObserver = {
|
|
37
|
-
observer: undefined,
|
|
38
|
-
observedElements: []
|
|
39
|
-
};
|
|
40
|
-
this.activeStyles = {};
|
|
41
|
-
}
|
|
42
|
-
#elRef;
|
|
43
|
-
#menuItemsEffect;
|
|
44
|
-
#itemObserver;
|
|
45
|
-
#initObservers() {
|
|
46
|
-
// observe tab navigation elements to show navigation controls (arrow buttons) once
|
|
47
|
-
// the first or the last tab is not visible anymore
|
|
48
|
-
this.#itemObserver.observer = new IntersectionObserver((entries) => {
|
|
49
|
-
entries.forEach((e, i) => {
|
|
50
|
-
const id = e.target.getAttribute('data-item-id');
|
|
51
|
-
const _i = this.__menuItems().find((mi) => id === mi.id);
|
|
52
|
-
if (_i)
|
|
53
|
-
_i.overflow = !e.isIntersecting;
|
|
54
|
-
const overflowTrigger = this.#elRef.nativeElement.querySelector('button.overflow-trigger');
|
|
55
|
-
if (overflowTrigger) {
|
|
56
|
-
!this.__menuItems().find((i) => i.overflow) ? overflowTrigger.setAttribute('inert', 'true') : overflowTrigger.removeAttribute('inert');
|
|
57
|
-
}
|
|
58
|
-
const intersecting = !e.isIntersecting;
|
|
59
|
-
if (intersecting)
|
|
60
|
-
e.target.setAttribute('inert', 'true');
|
|
61
|
-
else
|
|
62
|
-
e.target.removeAttribute('inert');
|
|
63
|
-
});
|
|
64
|
-
this.overflowGroups.set(this.#groupItems(this.__menuItems().filter((i) => i.overflow)));
|
|
65
|
-
}, {
|
|
66
|
-
threshold: 1,
|
|
67
|
-
root: this.#elRef.nativeElement.querySelector('.overflow-wrapper')
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
#observe(items) {
|
|
71
|
-
setTimeout(() => {
|
|
72
|
-
if (this.#itemObserver.observer) {
|
|
73
|
-
// cleanup existing observed elements
|
|
74
|
-
this.#itemObserver.observedElements.forEach((e) => this.#itemObserver.observer.unobserve(e));
|
|
75
|
-
this.#itemObserver.observedElements = [];
|
|
76
|
-
if (items.length > 0) {
|
|
77
|
-
this.#itemObserver.observedElements = this.#elRef.nativeElement.querySelectorAll('.menu-item');
|
|
78
|
-
this.#itemObserver.observedElements.forEach((e) => this.#itemObserver.observer.observe(e));
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
#groupItems(items) {
|
|
84
|
-
const g = this.#groupBy(items, 'group');
|
|
85
|
-
return Object.keys(g).map((id) => ({
|
|
86
|
-
id,
|
|
87
|
-
items: g[id]
|
|
88
|
-
}));
|
|
89
|
-
}
|
|
90
|
-
#groupBy(arr, key) {
|
|
91
|
-
return arr.reduce((rv, x) => {
|
|
92
|
-
(rv[x[key]] = rv[x[key]] || []).push(x);
|
|
93
|
-
return rv;
|
|
94
|
-
}, {});
|
|
95
|
-
}
|
|
96
|
-
ngAfterViewInit() {
|
|
97
|
-
this.#initObservers();
|
|
98
|
-
// get active styles
|
|
99
|
-
const style = window.getComputedStyle(this.#elRef.nativeElement);
|
|
100
|
-
this.activeStyles = {
|
|
101
|
-
'background-color': style.getPropertyValue('--menu-active-background'),
|
|
102
|
-
'color': style.getPropertyValue('--menu-on-active'),
|
|
103
|
-
};
|
|
104
|
-
}
|
|
105
|
-
ngOnDestroy() {
|
|
106
|
-
if (this.#itemObserver.observer)
|
|
107
|
-
this.#itemObserver.observer.disconnect();
|
|
108
|
-
}
|
|
109
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: OverflowMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
110
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.19", type: OverflowMenuComponent, isStandalone: true, selector: "yuv-overflow-menu", inputs: { overflowIcon: { classPropertyName: "overflowIcon", publicName: "overflowIcon", isSignal: true, isRequired: false, transformFunction: null }, groupLabels: { classPropertyName: "groupLabels", publicName: "groupLabels", isSignal: true, isRequired: false, transformFunction: null }, menuItems: { classPropertyName: "menuItems", publicName: "menuItems", isSignal: true, isRequired: false, transformFunction: null }, vertical: { classPropertyName: "vertical", publicName: "vertical", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.vertical": "vertical()" } }, ngImport: i0, template: "<div class=\"overflow-wrapper\">\n @for (group of __menuGroups(); track group.id) {\n <section>\n @for (item of group.items; track item.id) {\n <button\n mat-icon-button\n class=\"menu-item\"\n [disabled]=\"item.disabled\"\n [ngClass]=\"{ active: item.active }\"\n [matTooltip]=\"item.label\"\n [matTooltipPosition]=\"vertical() ? 'after' : 'below'\"\n [attr.data-item-id]=\"item.id\"\n (click)=\"item.callback(item)\"\n >\n @if (item.svgIcon) {\n <mat-icon [svgIcon]=\"item.svgIcon\"></mat-icon>\n } @else {\n <mat-icon>{{ item.icon }}</mat-icon>\n }\n </button>\n }\n </section>\n }\n</div>\n\n<button class=\"overflow-trigger\" inert=\"true\" mat-icon-button [matMenuTriggerFor]=\"menu\">\n <mat-icon>{{ overflowIcon() }}</mat-icon>\n</button>\n<mat-menu #menu=\"matMenu\">\n @let gl = groupLabels();\n @for (g of overflowGroups(); track g.id) {\n @if (gl && gl[g.id]) {\n <div class=\"group\">{{ gl[g.id] }}</div>\n }\n @for (item of g.items; track item.id) {\n <div class=\"menu-item\" mat-menu-item [disabled]=\"item.disabled\" [ngStyle]=\"item.active ? activeStyles : {}\" (click)=\"item.callback(item)\">\n @if (item.svgIcon) {\n <mat-icon [svgIcon]=\"item.svgIcon\"></mat-icon>\n } @else {\n <mat-icon>{{ item.icon }}</mat-icon>\n }\n <span> {{ item.label }} </span>\n </div>\n }\n }\n</mat-menu>\n", styles: [":host{--menu-group-divider-color: var(--ymt-outline-variant);--menu-item-gap: 2px;--menu-item-padding: var(--ymt-spacing-xs);--menu-item-icon-size: 24px;--menu-item-overflow-padding: var(--menu-item-padding);--menu-item-overflow-icon-size: var(--menu-item-icon-size);--menu-item-max-label-width: 20ch;--menu-item-flow: row;--menu-active-background: var(--ymt-primary-container);--menu-on-active: var(--ymt-on-primary-container);overflow:hidden;display:flex;align-items:center;flex-wrap:nowrap}:host.vertical{height:100%;flex-direction:column}:host.vertical .overflow-wrapper>section{flex-direction:column}:host.noLabel .menu-item span{display:none}:host .overflow-wrapper{overflow:hidden;display:flex}:host .overflow-wrapper>section{display:flex;gap:var(--menu-item-gap)}:host .overflow-wrapper>section:not(:first-child){border-inline-start:1px solid var(--menu-group-divider-color);padding-inline-start:var(--ymt-spacing-xs)}:host .menu-item{display:flex;align-items:center;border-radius:var(--ymt-corner-s)}:host .menu-item:after{content:\"\";height:var(--ymt-sizing-3xs);width:var(--ymt-sizing-xs);border-radius:var(--ymt-corner-full);position:absolute;left:50%;bottom:0;transform:translate3d(-50%,0,0);background-color:transparent;transition:background-color .1s ease-in-out}:host .menu-item.active:after{background-color:var(--menu-active-background);background-color:var(--ymt-primary);color:var(--menu-on-active)}:host .menu-item[inert=true]{opacity:0}:host .overflow-trigger{opacity:0;display:none}:host .overflow-trigger:not([inert=true]){opacity:1;display:inline}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i3.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i3.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i3.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
|
|
111
|
-
}
|
|
112
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: OverflowMenuComponent, decorators: [{
|
|
113
|
-
type: Component,
|
|
114
|
-
args: [{ selector: 'yuv-overflow-menu', imports: [CommonModule, MatButtonModule, MatMenuModule, MatIconModule, MatTooltipModule], host: {
|
|
115
|
-
'[class.vertical]': 'vertical()'
|
|
116
|
-
}, template: "<div class=\"overflow-wrapper\">\n @for (group of __menuGroups(); track group.id) {\n <section>\n @for (item of group.items; track item.id) {\n <button\n mat-icon-button\n class=\"menu-item\"\n [disabled]=\"item.disabled\"\n [ngClass]=\"{ active: item.active }\"\n [matTooltip]=\"item.label\"\n [matTooltipPosition]=\"vertical() ? 'after' : 'below'\"\n [attr.data-item-id]=\"item.id\"\n (click)=\"item.callback(item)\"\n >\n @if (item.svgIcon) {\n <mat-icon [svgIcon]=\"item.svgIcon\"></mat-icon>\n } @else {\n <mat-icon>{{ item.icon }}</mat-icon>\n }\n </button>\n }\n </section>\n }\n</div>\n\n<button class=\"overflow-trigger\" inert=\"true\" mat-icon-button [matMenuTriggerFor]=\"menu\">\n <mat-icon>{{ overflowIcon() }}</mat-icon>\n</button>\n<mat-menu #menu=\"matMenu\">\n @let gl = groupLabels();\n @for (g of overflowGroups(); track g.id) {\n @if (gl && gl[g.id]) {\n <div class=\"group\">{{ gl[g.id] }}</div>\n }\n @for (item of g.items; track item.id) {\n <div class=\"menu-item\" mat-menu-item [disabled]=\"item.disabled\" [ngStyle]=\"item.active ? activeStyles : {}\" (click)=\"item.callback(item)\">\n @if (item.svgIcon) {\n <mat-icon [svgIcon]=\"item.svgIcon\"></mat-icon>\n } @else {\n <mat-icon>{{ item.icon }}</mat-icon>\n }\n <span> {{ item.label }} </span>\n </div>\n }\n }\n</mat-menu>\n", styles: [":host{--menu-group-divider-color: var(--ymt-outline-variant);--menu-item-gap: 2px;--menu-item-padding: var(--ymt-spacing-xs);--menu-item-icon-size: 24px;--menu-item-overflow-padding: var(--menu-item-padding);--menu-item-overflow-icon-size: var(--menu-item-icon-size);--menu-item-max-label-width: 20ch;--menu-item-flow: row;--menu-active-background: var(--ymt-primary-container);--menu-on-active: var(--ymt-on-primary-container);overflow:hidden;display:flex;align-items:center;flex-wrap:nowrap}:host.vertical{height:100%;flex-direction:column}:host.vertical .overflow-wrapper>section{flex-direction:column}:host.noLabel .menu-item span{display:none}:host .overflow-wrapper{overflow:hidden;display:flex}:host .overflow-wrapper>section{display:flex;gap:var(--menu-item-gap)}:host .overflow-wrapper>section:not(:first-child){border-inline-start:1px solid var(--menu-group-divider-color);padding-inline-start:var(--ymt-spacing-xs)}:host .menu-item{display:flex;align-items:center;border-radius:var(--ymt-corner-s)}:host .menu-item:after{content:\"\";height:var(--ymt-sizing-3xs);width:var(--ymt-sizing-xs);border-radius:var(--ymt-corner-full);position:absolute;left:50%;bottom:0;transform:translate3d(-50%,0,0);background-color:transparent;transition:background-color .1s ease-in-out}:host .menu-item.active:after{background-color:var(--menu-active-background);background-color:var(--ymt-primary);color:var(--menu-on-active)}:host .menu-item[inert=true]{opacity:0}:host .overflow-trigger{opacity:0;display:none}:host .overflow-trigger:not([inert=true]){opacity:1;display:inline}\n"] }]
|
|
117
|
-
}], propDecorators: { overflowIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "overflowIcon", required: false }] }], groupLabels: [{ type: i0.Input, args: [{ isSignal: true, alias: "groupLabels", required: false }] }], menuItems: [{ type: i0.Input, args: [{ isSignal: true, alias: "menuItems", required: false }] }], vertical: [{ type: i0.Input, args: [{ isSignal: true, alias: "vertical", required: false }] }] } });
|
|
118
|
-
|
|
119
|
-
class YuvOverflowMenuModule {
|
|
120
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: YuvOverflowMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
121
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.19", ngImport: i0, type: YuvOverflowMenuModule, imports: [OverflowMenuComponent], exports: [OverflowMenuComponent] }); }
|
|
122
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: YuvOverflowMenuModule, imports: [OverflowMenuComponent] }); }
|
|
123
|
-
}
|
|
124
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: YuvOverflowMenuModule, decorators: [{
|
|
125
|
-
type: NgModule,
|
|
126
|
-
args: [{
|
|
127
|
-
imports: [OverflowMenuComponent],
|
|
128
|
-
exports: [OverflowMenuComponent]
|
|
129
|
-
}]
|
|
130
|
-
}] });
|
|
131
7
|
|
|
132
8
|
/**
|
|
133
9
|
* Generated bundle index. Do not edit.
|
|
134
10
|
*/
|
|
135
|
-
|
|
136
|
-
export { OverflowMenuComponent, YuvOverflowMenuModule };
|
|
137
11
|
//# sourceMappingURL=yuuvis-client-framework-overflow-menu.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yuuvis-client-framework-overflow-menu.mjs","sources":["../../../../../libs/yuuvis/client-framework/overflow-menu/src/lib/overflow-menu.component.ts","../../../../../libs/yuuvis/client-framework/overflow-menu/src/lib/overflow-menu.component.html","../../../../../libs/yuuvis/client-framework/overflow-menu/src/lib/overflow-menu.module.ts","../../../../../libs/yuuvis/client-framework/overflow-menu/src/yuuvis-client-framework-overflow-menu.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { AfterViewInit, Component, computed, effect, ElementRef, inject, input, OnDestroy, signal } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { OverflowMenuItem } from './overflow-menu.interface';\n\ntype __MenuItem = OverflowMenuItem & { overflow: boolean };\ninterface MenuGroup {\n id: string;\n items: __MenuItem[];\n}\n\n/**\n * Renders items in a toolbar. If menu items provide a 'group' property they will\n * be organized in sections.\n */\n@Component({\n selector: 'yuv-overflow-menu',\n imports: [CommonModule, MatButtonModule, MatMenuModule, MatIconModule, MatTooltipModule],\n templateUrl: './overflow-menu.component.html',\n styleUrl: './overflow-menu.component.scss',\n host: {\n '[class.vertical]': 'vertical()'\n }\n})\nexport class OverflowMenuComponent implements AfterViewInit, OnDestroy {\n #elRef = inject(ElementRef);\n\n overflowIcon = input<string>('more_horiz');\n groupLabels = input<Record<string, string>>();\n\n /**\n * Items of the menu\n */\n menuItems = input<OverflowMenuItem[]>([]);\n #menuItemsEffect = effect(() => {\n this.#observe(this.menuItems());\n });\n\n vertical = input<boolean>(false);\n\n __menuGroups = computed<MenuGroup[]>(() => this.#groupItems(this.__menuItems()));\n\n private __menuItems = computed<__MenuItem[]>(() => {\n return this.menuItems().map((i) => ({ ...i, overflow: false }));\n });\n\n overflowGroups = signal<MenuGroup[]>([]);\n\n #itemObserver: {\n observer: IntersectionObserver | undefined;\n observedElements: Element[];\n } = {\n observer: undefined,\n observedElements: []\n };\n\n activeStyles = {};\n\n #initObservers() {\n // observe tab navigation elements to show navigation controls (arrow buttons) once\n // the first or the last tab is not visible anymore\n this.#itemObserver.observer = new IntersectionObserver(\n (entries) => {\n entries.forEach((e, i) => {\n const id = e.target.getAttribute('data-item-id');\n const _i: __MenuItem | undefined = this.__menuItems().find((mi) => id === mi.id);\n if (_i) _i.overflow = !e.isIntersecting;\n const overflowTrigger = (this.#elRef.nativeElement as HTMLElement).querySelector('button.overflow-trigger');\n\n if (overflowTrigger) {\n !this.__menuItems().find((i) => i.overflow) ? overflowTrigger.setAttribute('inert', 'true') : overflowTrigger.removeAttribute('inert');\n }\n const intersecting = !e.isIntersecting;\n if (intersecting) e.target.setAttribute('inert', 'true');\n else e.target.removeAttribute('inert');\n });\n\n this.overflowGroups.set(this.#groupItems(this.__menuItems().filter((i) => i.overflow)));\n },\n {\n threshold: 1,\n root: this.#elRef.nativeElement.querySelector('.overflow-wrapper')\n }\n );\n }\n\n #observe(items: OverflowMenuItem[]) {\n setTimeout(() => {\n if (this.#itemObserver.observer) {\n // cleanup existing observed elements\n this.#itemObserver.observedElements.forEach((e) => this.#itemObserver.observer!.unobserve(e));\n this.#itemObserver.observedElements = [];\n\n if (items.length > 0) {\n this.#itemObserver.observedElements = this.#elRef.nativeElement.querySelectorAll('.menu-item');\n this.#itemObserver.observedElements.forEach((e) => this.#itemObserver.observer!.observe(e));\n }\n }\n });\n }\n\n #groupItems(items: OverflowMenuItem[]): MenuGroup[] {\n const g = this.#groupBy(items, 'group');\n return Object.keys(g).map((id) => ({\n id,\n items: g[id]\n }));\n }\n\n #groupBy(arr: any[], key: string): Record<string, any> {\n return arr.reduce((rv, x) => {\n (rv[x[key]] = rv[x[key]] || []).push(x);\n return rv;\n }, {});\n }\n\n ngAfterViewInit(): void {\n this.#initObservers();\n // get active styles\n const style = window.getComputedStyle(this.#elRef.nativeElement);\n this.activeStyles = {\n 'background-color': style.getPropertyValue('--menu-active-background'),\n 'color': style.getPropertyValue('--menu-on-active'),\n }\n\n }\n\n ngOnDestroy(): void {\n if (this.#itemObserver.observer) this.#itemObserver.observer.disconnect();\n }\n}\n","<div class=\"overflow-wrapper\">\n @for (group of __menuGroups(); track group.id) {\n <section>\n @for (item of group.items; track item.id) {\n <button\n mat-icon-button\n class=\"menu-item\"\n [disabled]=\"item.disabled\"\n [ngClass]=\"{ active: item.active }\"\n [matTooltip]=\"item.label\"\n [matTooltipPosition]=\"vertical() ? 'after' : 'below'\"\n [attr.data-item-id]=\"item.id\"\n (click)=\"item.callback(item)\"\n >\n @if (item.svgIcon) {\n <mat-icon [svgIcon]=\"item.svgIcon\"></mat-icon>\n } @else {\n <mat-icon>{{ item.icon }}</mat-icon>\n }\n </button>\n }\n </section>\n }\n</div>\n\n<button class=\"overflow-trigger\" inert=\"true\" mat-icon-button [matMenuTriggerFor]=\"menu\">\n <mat-icon>{{ overflowIcon() }}</mat-icon>\n</button>\n<mat-menu #menu=\"matMenu\">\n @let gl = groupLabels();\n @for (g of overflowGroups(); track g.id) {\n @if (gl && gl[g.id]) {\n <div class=\"group\">{{ gl[g.id] }}</div>\n }\n @for (item of g.items; track item.id) {\n <div class=\"menu-item\" mat-menu-item [disabled]=\"item.disabled\" [ngStyle]=\"item.active ? activeStyles : {}\" (click)=\"item.callback(item)\">\n @if (item.svgIcon) {\n <mat-icon [svgIcon]=\"item.svgIcon\"></mat-icon>\n } @else {\n <mat-icon>{{ item.icon }}</mat-icon>\n }\n <span> {{ item.label }} </span>\n </div>\n }\n }\n</mat-menu>\n","import { NgModule } from '@angular/core';\nimport { OverflowMenuComponent } from './overflow-menu.component';\n\n@NgModule({\n imports: [OverflowMenuComponent],\n exports: [OverflowMenuComponent]\n})\nexport class YuvOverflowMenuModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;AAcA;;;AAGG;MAUU,qBAAqB,CAAA;AATlC,IAAA,WAAA,GAAA;AAUE,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;AAE3B,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAS,YAAY,wDAAC;QAC1C,IAAA,CAAA,WAAW,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAA0B;AAE7C;;AAEG;AACH,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAqB,EAAE,qDAAC;AACzC,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,MAAK;YAC7B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;AACjC,QAAA,CAAC,4DAAC;AAEF,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;AAEhC,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAc,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,wDAAC;AAExE,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAe,MAAK;YAChD,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;AACjE,QAAA,CAAC,uDAAC;AAEF,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAc,EAAE,0DAAC;AAExC,QAAA,IAAA,CAAA,aAAa,GAGT;AACF,YAAA,QAAQ,EAAE,SAAS;AACnB,YAAA,gBAAgB,EAAE;SACnB;QAED,IAAA,CAAA,YAAY,GAAG,EAAE;AA0ElB,IAAA;AAzGC,IAAA,MAAM;AASN,IAAA,gBAAgB;AAchB,IAAA,aAAa;IAUb,cAAc,GAAA;;;QAGZ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,IAAI,oBAAoB,CACpD,CAAC,OAAO,KAAI;YACV,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;gBACvB,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,cAAc,CAAC;gBAChD,MAAM,EAAE,GAA2B,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AAChF,gBAAA,IAAI,EAAE;AAAE,oBAAA,EAAE,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,cAAc;AACvC,gBAAA,MAAM,eAAe,GAAI,IAAI,CAAC,MAAM,CAAC,aAA6B,CAAC,aAAa,CAAC,yBAAyB,CAAC;gBAE3G,IAAI,eAAe,EAAE;AACnB,oBAAA,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,eAAe,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,eAAe,CAAC,eAAe,CAAC,OAAO,CAAC;gBACxI;AACA,gBAAA,MAAM,YAAY,GAAG,CAAC,CAAC,CAAC,cAAc;AACtC,gBAAA,IAAI,YAAY;oBAAE,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC;;AACnD,oBAAA,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC;AACxC,YAAA,CAAC,CAAC;YAEF,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AACzF,QAAA,CAAC,EACD;AACE,YAAA,SAAS,EAAE,CAAC;YACZ,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC,mBAAmB;AAClE,SAAA,CACF;IACH;AAEA,IAAA,QAAQ,CAAC,KAAyB,EAAA;QAChC,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;;gBAE/B,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,QAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC7F,gBAAA,IAAI,CAAC,aAAa,CAAC,gBAAgB,GAAG,EAAE;AAExC,gBAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACpB,oBAAA,IAAI,CAAC,aAAa,CAAC,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,gBAAgB,CAAC,YAAY,CAAC;oBAC9F,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,QAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC7F;YACF;AACF,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,WAAW,CAAC,KAAyB,EAAA;QACnC,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;AACvC,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM;YACjC,EAAE;AACF,YAAA,KAAK,EAAE,CAAC,CAAC,EAAE;AACZ,SAAA,CAAC,CAAC;IACL;IAEA,QAAQ,CAAC,GAAU,EAAE,GAAW,EAAA;QAC9B,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,KAAI;YAC1B,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;AACvC,YAAA,OAAO,EAAE;QACX,CAAC,EAAE,EAAE,CAAC;IACR;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,cAAc,EAAE;;AAErB,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;QAChE,IAAI,CAAC,YAAY,GAAG;AAClB,YAAA,kBAAkB,EAAE,KAAK,CAAC,gBAAgB,CAAC,0BAA0B,CAAC;AACtE,YAAA,OAAO,EAAE,KAAK,CAAC,gBAAgB,CAAC,kBAAkB,CAAC;SACpD;IAEH;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ;AAAE,YAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,EAAE;IAC3E;+GAzGW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3BlC,0gDA8CA,EAAA,MAAA,EAAA,CAAA,yiDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED1BY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sFAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAO5E,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBATjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAAA,OAAA,EACpB,CAAC,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,CAAC,EAAA,IAAA,EAGlF;AACJ,wBAAA,kBAAkB,EAAE;AACrB,qBAAA,EAAA,QAAA,EAAA,0gDAAA,EAAA,MAAA,EAAA,CAAA,yiDAAA,CAAA,EAAA;;;MElBU,qBAAqB,CAAA;+GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAArB,qBAAqB,EAAA,OAAA,EAAA,CAHtB,qBAAqB,CAAA,EAAA,OAAA,EAAA,CACrB,qBAAqB,CAAA,EAAA,CAAA,CAAA;AAEpB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,YAHtB,qBAAqB,CAAA,EAAA,CAAA,CAAA;;4FAGpB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,qBAAqB,CAAC;oBAChC,OAAO,EAAE,CAAC,qBAAqB;AAChC,iBAAA;;;ACND;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"yuuvis-client-framework-overflow-menu.mjs","sources":["../../../../../libs/yuuvis/client-framework/overflow-menu/src/index.ts","../../../../../libs/yuuvis/client-framework/overflow-menu/src/yuuvis-client-framework-overflow-menu.ts"],"sourcesContent":["/**\n * @deprecated Import from `@yuuvis/client-components/overflow-menu` instead.\n * This entry point is a backward-compatibility shim and will be removed in a future release.\n */\nexport * from '@yuuvis/client-components/overflow-menu';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;AAAA;;;AAGG;;ACHH;;AAEG"}
|
|
@@ -10,14 +10,14 @@ import { YUV_ICONS, YuvIconComponent } from '@yuuvis/client-framework/icons';
|
|
|
10
10
|
class PaginationComponent {
|
|
11
11
|
constructor() {
|
|
12
12
|
this.#fb = inject(FormBuilder);
|
|
13
|
-
this.pagination = input.required(...(ngDevMode ? [{ debugName: "pagination" }] : []));
|
|
13
|
+
this.pagination = input.required(...(ngDevMode ? [{ debugName: "pagination" }] : /* istanbul ignore next */ []));
|
|
14
14
|
this.#paginationEffect = effect(() => {
|
|
15
15
|
const pageCtrl = this.pagingForm.get('page');
|
|
16
16
|
if (pageCtrl) {
|
|
17
17
|
pageCtrl.setValue(`${this.pagination().page}`);
|
|
18
18
|
pageCtrl.setValidators([Validators.required, Validators.pattern('[0-9]+'), Validators.min(1), Validators.max(this.pagination().pages)]);
|
|
19
19
|
}
|
|
20
|
-
}, ...(ngDevMode ? [{ debugName: "#paginationEffect" }] : []));
|
|
20
|
+
}, ...(ngDevMode ? [{ debugName: "#paginationEffect" }] : /* istanbul ignore next */ []));
|
|
21
21
|
this.pageChange = output();
|
|
22
22
|
this.pagingForm = this.#fb.group({ page: [''] });
|
|
23
23
|
this.icons = {
|
|
@@ -37,10 +37,10 @@ class PaginationComponent {
|
|
|
37
37
|
page: `${this.pagination().page}`
|
|
38
38
|
});
|
|
39
39
|
}
|
|
40
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
41
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "
|
|
40
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: PaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
41
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.9", type: PaginationComponent, isStandalone: true, selector: "yuv-pagination", inputs: { pagination: { classPropertyName: "pagination", publicName: "pagination", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { pageChange: "pageChange" }, ngImport: i0, template: "<div class=\"total\">{{ pagination().total }}</div>\n<div class=\"controls\">\n <button [disabled]=\"pagination().page === 1\" (click)=\"pageChange.emit(1)\">\n <yuv-icon class=\"first\" [svg]=\"icons.arrowLast\"></yuv-icon>\n </button>\n <button [disabled]=\"pagination().page <= 1\" (click)=\"pageChange.emit(pagination().page - 1)\">\n <yuv-icon class=\"prev\" [svg]=\"icons.arrowNext\"></yuv-icon>\n </button>\n\n <form (ngSubmit)=\"onPagingFormSubmit()\" [formGroup]=\"pagingForm\">\n <input (blur)=\"onInputBlur()\" type=\"number\" formControlName=\"page\" />\n <div>{{ pagination().pages }}</div>\n </form>\n\n <button [disabled]=\"pagination().page >= pagination().pages\" (click)=\"pageChange.emit(pagination().page + 1)\">\n <yuv-icon class=\"next\" [svg]=\"icons.arrowNext\"></yuv-icon>\n </button>\n <button [disabled]=\"pagination().page === pagination().pages\" (click)=\"pageChange.emit(pagination().pages)\">\n <yuv-icon class=\"last\" [svg]=\"icons.arrowLast\"></yuv-icon>\n </button>\n</div>\n", styles: [":host{--_paging-button-size: var(--paging-button-size, 18px);--_paging-margin: var(--paging-margin, var(--ymt-spacing-xs));--_paging-padding: var(--paging-padding, var(--ymt-spacing-2xs));--_paging-border: var(--paging-border-radius, 4px);--_paging-background: var(--paging-background, var(--ymt-surface-panel));display:flex;justify-content:space-between;align-items:center;padding:var(--_paging-padding);background-color:var(--_paging-background);border-radius:var(--_paging-border-radius)}:host .controls{display:flex;justify-content:space-between;align-items:center}:host .total{font:var(--ymt-font-body-subtle);color:var(--ymt-text-color-subtle);padding-inline:.25em;line-height:1em}:host button{padding:0;display:flex;--icon-size: var(--_paging-button-size)}:host button .first,:host button .prev{transform:rotate(180deg)}:host form{display:flex;border:1px solid var(--ymt-outline-variant);margin:0 4px;align-items:baseline}:host form>*{font:var(--ymt-font-body-subtle);color:var(--ymt-text-color-subtle);padding-inline:.25em}:host form>div{-webkit-user-select:none;user-select:none}:host form input{width:3em;line-height:1em;text-align:right;border:0;background-color:transparent;border-inline-end:1px solid var(--ymt-outline-variant)}:host form input.ng-invalid{color:var(--ymt-danger)}\n"], dependencies: [{ kind: "component", type: YuvIconComponent, selector: "yuv-icon", inputs: ["label", "svg", "svgSrc"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] }); }
|
|
42
42
|
}
|
|
43
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
43
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: PaginationComponent, decorators: [{
|
|
44
44
|
type: Component,
|
|
45
45
|
args: [{ selector: 'yuv-pagination', standalone: true, imports: [YuvIconComponent, ReactiveFormsModule], template: "<div class=\"total\">{{ pagination().total }}</div>\n<div class=\"controls\">\n <button [disabled]=\"pagination().page === 1\" (click)=\"pageChange.emit(1)\">\n <yuv-icon class=\"first\" [svg]=\"icons.arrowLast\"></yuv-icon>\n </button>\n <button [disabled]=\"pagination().page <= 1\" (click)=\"pageChange.emit(pagination().page - 1)\">\n <yuv-icon class=\"prev\" [svg]=\"icons.arrowNext\"></yuv-icon>\n </button>\n\n <form (ngSubmit)=\"onPagingFormSubmit()\" [formGroup]=\"pagingForm\">\n <input (blur)=\"onInputBlur()\" type=\"number\" formControlName=\"page\" />\n <div>{{ pagination().pages }}</div>\n </form>\n\n <button [disabled]=\"pagination().page >= pagination().pages\" (click)=\"pageChange.emit(pagination().page + 1)\">\n <yuv-icon class=\"next\" [svg]=\"icons.arrowNext\"></yuv-icon>\n </button>\n <button [disabled]=\"pagination().page === pagination().pages\" (click)=\"pageChange.emit(pagination().pages)\">\n <yuv-icon class=\"last\" [svg]=\"icons.arrowLast\"></yuv-icon>\n </button>\n</div>\n", styles: [":host{--_paging-button-size: var(--paging-button-size, 18px);--_paging-margin: var(--paging-margin, var(--ymt-spacing-xs));--_paging-padding: var(--paging-padding, var(--ymt-spacing-2xs));--_paging-border: var(--paging-border-radius, 4px);--_paging-background: var(--paging-background, var(--ymt-surface-panel));display:flex;justify-content:space-between;align-items:center;padding:var(--_paging-padding);background-color:var(--_paging-background);border-radius:var(--_paging-border-radius)}:host .controls{display:flex;justify-content:space-between;align-items:center}:host .total{font:var(--ymt-font-body-subtle);color:var(--ymt-text-color-subtle);padding-inline:.25em;line-height:1em}:host button{padding:0;display:flex;--icon-size: var(--_paging-button-size)}:host button .first,:host button .prev{transform:rotate(180deg)}:host form{display:flex;border:1px solid var(--ymt-outline-variant);margin:0 4px;align-items:baseline}:host form>*{font:var(--ymt-font-body-subtle);color:var(--ymt-text-color-subtle);padding-inline:.25em}:host form>div{-webkit-user-select:none;user-select:none}:host form input{width:3em;line-height:1em;text-align:right;border:0;background-color:transparent;border-inline-end:1px solid var(--ymt-outline-variant)}:host form input.ng-invalid{color:var(--ymt-danger)}\n"] }]
|
|
46
46
|
}], propDecorators: { pagination: [{ type: i0.Input, args: [{ isSignal: true, alias: "pagination", required: true }] }], pageChange: [{ type: i0.Output, args: ["pageChange"] }] } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yuuvis-client-framework-pagination.mjs","sources":["../../../../../libs/yuuvis/client-framework/pagination/src/lib/pagination.component.ts","../../../../../libs/yuuvis/client-framework/pagination/src/lib/pagination.component.html","../../../../../libs/yuuvis/client-framework/pagination/src/yuuvis-client-framework-pagination.ts"],"sourcesContent":["\nimport { Component, effect, inject, input, output } from '@angular/core';\nimport { FormBuilder, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { YUV_ICONS, YuvIconComponent } from '@yuuvis/client-framework/icons';\nimport { Pagination } from './pagination.interface';\n\n/**\n * @deprecated\n */\n@Component({\n selector: 'yuv-pagination',\n standalone: true,\n imports: [YuvIconComponent, ReactiveFormsModule],\n templateUrl: './pagination.component.html',\n styleUrl: './pagination.component.scss'\n})\nexport class PaginationComponent {\n #fb = inject(FormBuilder);\n pagination = input.required<Pagination>();\n #paginationEffect = effect(() => {\n const pageCtrl = this.pagingForm.get('page');\n if (pageCtrl) {\n pageCtrl.setValue(`${this.pagination().page}`);\n pageCtrl.setValidators([Validators.required, Validators.pattern('[0-9]+'), Validators.min(1), Validators.max(this.pagination().pages)]);\n }\n });\n\n pageChange = output<number>();\n pagingForm = this.#fb.group({ page: [''] });\n readonly icons = {\n arrowNext: YUV_ICONS.arrowNext,\n arrowLast: YUV_ICONS.arrowLast\n };\n\n onPagingFormSubmit() {\n if (this.pagingForm.valid && this.pagingForm.value.page) {\n this.pageChange.emit(parseInt(this.pagingForm.value.page));\n }\n }\n\n onInputBlur() {\n this.pagingForm.patchValue({\n page: `${this.pagination().page}`\n });\n }\n}\n","<div class=\"total\">{{ pagination().total }}</div>\n<div class=\"controls\">\n <button [disabled]=\"pagination().page === 1\" (click)=\"pageChange.emit(1)\">\n <yuv-icon class=\"first\" [svg]=\"icons.arrowLast\"></yuv-icon>\n </button>\n <button [disabled]=\"pagination().page <= 1\" (click)=\"pageChange.emit(pagination().page - 1)\">\n <yuv-icon class=\"prev\" [svg]=\"icons.arrowNext\"></yuv-icon>\n </button>\n\n <form (ngSubmit)=\"onPagingFormSubmit()\" [formGroup]=\"pagingForm\">\n <input (blur)=\"onInputBlur()\" type=\"number\" formControlName=\"page\" />\n <div>{{ pagination().pages }}</div>\n </form>\n\n <button [disabled]=\"pagination().page >= pagination().pages\" (click)=\"pageChange.emit(pagination().page + 1)\">\n <yuv-icon class=\"next\" [svg]=\"icons.arrowNext\"></yuv-icon>\n </button>\n <button [disabled]=\"pagination().page === pagination().pages\" (click)=\"pageChange.emit(pagination().pages)\">\n <yuv-icon class=\"last\" [svg]=\"icons.arrowLast\"></yuv-icon>\n </button>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAMA;;AAEG;MAQU,mBAAmB,CAAA;AAPhC,IAAA,WAAA,GAAA;AAQE,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC;AACzB,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,QAAQ,
|
|
1
|
+
{"version":3,"file":"yuuvis-client-framework-pagination.mjs","sources":["../../../../../libs/yuuvis/client-framework/pagination/src/lib/pagination.component.ts","../../../../../libs/yuuvis/client-framework/pagination/src/lib/pagination.component.html","../../../../../libs/yuuvis/client-framework/pagination/src/yuuvis-client-framework-pagination.ts"],"sourcesContent":["\nimport { Component, effect, inject, input, output } from '@angular/core';\nimport { FormBuilder, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { YUV_ICONS, YuvIconComponent } from '@yuuvis/client-framework/icons';\nimport { Pagination } from './pagination.interface';\n\n/**\n * @deprecated\n */\n@Component({\n selector: 'yuv-pagination',\n standalone: true,\n imports: [YuvIconComponent, ReactiveFormsModule],\n templateUrl: './pagination.component.html',\n styleUrl: './pagination.component.scss'\n})\nexport class PaginationComponent {\n #fb = inject(FormBuilder);\n pagination = input.required<Pagination>();\n #paginationEffect = effect(() => {\n const pageCtrl = this.pagingForm.get('page');\n if (pageCtrl) {\n pageCtrl.setValue(`${this.pagination().page}`);\n pageCtrl.setValidators([Validators.required, Validators.pattern('[0-9]+'), Validators.min(1), Validators.max(this.pagination().pages)]);\n }\n });\n\n pageChange = output<number>();\n pagingForm = this.#fb.group({ page: [''] });\n readonly icons = {\n arrowNext: YUV_ICONS.arrowNext,\n arrowLast: YUV_ICONS.arrowLast\n };\n\n onPagingFormSubmit() {\n if (this.pagingForm.valid && this.pagingForm.value.page) {\n this.pageChange.emit(parseInt(this.pagingForm.value.page));\n }\n }\n\n onInputBlur() {\n this.pagingForm.patchValue({\n page: `${this.pagination().page}`\n });\n }\n}\n","<div class=\"total\">{{ pagination().total }}</div>\n<div class=\"controls\">\n <button [disabled]=\"pagination().page === 1\" (click)=\"pageChange.emit(1)\">\n <yuv-icon class=\"first\" [svg]=\"icons.arrowLast\"></yuv-icon>\n </button>\n <button [disabled]=\"pagination().page <= 1\" (click)=\"pageChange.emit(pagination().page - 1)\">\n <yuv-icon class=\"prev\" [svg]=\"icons.arrowNext\"></yuv-icon>\n </button>\n\n <form (ngSubmit)=\"onPagingFormSubmit()\" [formGroup]=\"pagingForm\">\n <input (blur)=\"onInputBlur()\" type=\"number\" formControlName=\"page\" />\n <div>{{ pagination().pages }}</div>\n </form>\n\n <button [disabled]=\"pagination().page >= pagination().pages\" (click)=\"pageChange.emit(pagination().page + 1)\">\n <yuv-icon class=\"next\" [svg]=\"icons.arrowNext\"></yuv-icon>\n </button>\n <button [disabled]=\"pagination().page === pagination().pages\" (click)=\"pageChange.emit(pagination().pages)\">\n <yuv-icon class=\"last\" [svg]=\"icons.arrowLast\"></yuv-icon>\n </button>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|