@yuuvis/client-framework 3.2.2 → 3.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { inject, signal, Injectable, input, linkedSignal, computed, effect, untracked, Component } from '@angular/core';
3
3
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
- import { DmsService, UserService, ContentStreamField, EventService, YuvEventType, TranslatePipe } from '@yuuvis/client-core';
4
+ import { DmsService, UserService, ObjectLockingService, ContentStreamField, EventService, YuvEventType, TranslatePipe } from '@yuuvis/client-core';
5
5
  import { MediaViewerService, defaultViewers, DASHLET_MESSAGE_EVENTS, YuvMediaViewerComponent, MailComponent } from '@yuuvis/media-viewer';
6
6
  import { tap as tap$1 } from 'rxjs';
7
7
  import { tap } from 'rxjs/operators';
@@ -11,12 +11,14 @@ class ObjectPreviewService {
11
11
  this.#dms = inject(DmsService);
12
12
  this.#userService = inject(UserService);
13
13
  this.#mediaViewerService = inject(MediaViewerService);
14
+ this.#objectLockingService = inject(ObjectLockingService);
14
15
  this.#dmsObject = signal(undefined, ...(ngDevMode ? [{ debugName: "#dmsObject" }] : /* istanbul ignore next */ []));
15
16
  this.dmsObject = this.#dmsObject.asReadonly();
16
17
  }
17
18
  #dms;
18
19
  #userService;
19
20
  #mediaViewerService;
21
+ #objectLockingService;
20
22
  #dmsObject;
21
23
  setDmsObject(object) {
22
24
  this.#dmsObject.set(object);
@@ -31,17 +33,40 @@ class ObjectPreviewService {
31
33
  ? `/api/dms/objects/${id}/versions/${version}/contents/renditions/slide?timeout=50000`
32
34
  : `/api/dms/objects/${id}/contents/renditions/slide`;
33
35
  }
34
- return version ? `/api/dms/objects/${id}/versions/${version}/contents/file` : `/api/dms/objects/${id}/contents/file`;
36
+ return version
37
+ ? `/api/dms/objects/${id}/versions/${version}/contents/file`
38
+ : `/api/dms/objects/${id}/contents/file`;
35
39
  }
36
40
  return '';
37
41
  }
38
- #isEmailViewer(object) {
39
- return defaultViewers.filter((viewer) => viewer.type === 'EMAIL')[0].mimeType.includes(object.data[ContentStreamField.MIME_TYPE]);
42
+ getEmailViewerDetails(object, MAIL_APP_ID = 'appSystemmail:') {
43
+ return {
44
+ mediaViewerSrc: this.getMediaViewerSrc(object.id, object.content?.mimeType),
45
+ id: object.id,
46
+ mimeType: object.content?.mimeType,
47
+ metadata: this.getEmailMetadata(object, MAIL_APP_ID)
48
+ };
49
+ }
50
+ getEmailMetadata(object, MAIL_APP_ID = 'appSystemmail:') {
51
+ return {
52
+ type: 'EMAIL',
53
+ header: {
54
+ subject: object.data[`${MAIL_APP_ID}subject`],
55
+ sent: new Date(object.data[`${MAIL_APP_ID}sent`]),
56
+ from: object.data[`${MAIL_APP_ID}from`],
57
+ to: object.data[`${MAIL_APP_ID}to`],
58
+ cc: object.data[`${MAIL_APP_ID}cc`],
59
+ bcc: object.data[`${MAIL_APP_ID}bcc`]
60
+ },
61
+ theme: 'light',
62
+ attachments: object.data[`${MAIL_APP_ID}attachments`]
63
+ };
40
64
  }
41
65
  getViewerDetails(object, version) {
42
66
  if (object) {
43
67
  const type = object?.content && this.#mediaViewerService.getComponentType(object.content.mimeType);
44
68
  // console.log('type', type);
69
+ console.log('isEditable: ', this.#isEditable(object));
45
70
  return this.#isEmailViewer(object)
46
71
  ? this.getEmailViewerDetails(object)
47
72
  : {
@@ -53,39 +78,26 @@ class ObjectPreviewService {
53
78
  name: object.data[ContentStreamField.FILENAME],
54
79
  dmsObject: object?.data,
55
80
  id: object?.id,
56
- editable: true,
81
+ editable: this.#isEditable(object),
57
82
  user: this.#userService.getCurrentUser(),
58
83
  theme: 'light',
59
84
  version,
60
85
  sendEvent: !!(object.content?.mimeType &&
61
- defaultViewers.filter((v) => v.type === 'OFFICE').map((v) => v.mimeType.includes(object.content?.mimeType || '')).length) || false
86
+ defaultViewers
87
+ .filter((viewer) => viewer.type === 'OFFICE')
88
+ .map((viewer) => viewer.mimeType.includes(object.content?.mimeType || '')).length) || false
62
89
  }
63
90
  };
64
91
  }
65
92
  return undefined;
66
93
  }
67
- getEmailViewerDetails(object, MAIL_APP_ID = 'appSystemmail:') {
68
- return {
69
- mediaViewerSrc: this.getMediaViewerSrc(object.id, object.content?.mimeType),
70
- id: object.id,
71
- mimeType: object.content?.mimeType,
72
- metadata: this.getEmailMetadata(object, MAIL_APP_ID)
73
- };
94
+ #isEditable(object) {
95
+ return !this.#objectLockingService.getLockState(object).locked;
74
96
  }
75
- getEmailMetadata(object, MAIL_APP_ID = 'appSystemmail:') {
76
- return {
77
- type: 'EMAIL',
78
- header: {
79
- subject: object.data[`${MAIL_APP_ID}subject`],
80
- sent: new Date(object.data[`${MAIL_APP_ID}sent`]),
81
- from: object.data[`${MAIL_APP_ID}from`],
82
- to: object.data[`${MAIL_APP_ID}to`],
83
- cc: object.data[`${MAIL_APP_ID}cc`],
84
- bcc: object.data[`${MAIL_APP_ID}bcc`]
85
- },
86
- theme: 'light',
87
- attachments: object.data[`${MAIL_APP_ID}attachments`]
88
- };
97
+ #isEmailViewer(object) {
98
+ return defaultViewers
99
+ .filter((viewer) => viewer.type === 'EMAIL')[0]
100
+ .mimeType.includes(object.data[ContentStreamField.MIME_TYPE]);
89
101
  }
90
102
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: ObjectPreviewService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
91
103
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: ObjectPreviewService, providedIn: 'root' }); }
@@ -114,7 +126,6 @@ class ObjectPreviewComponent {
114
126
  this.viewerDetails = linkedSignal({ ...(ngDevMode ? { debugName: "viewerDetails" } : /* istanbul ignore next */ {}), source: () => ({ object: this.dmsObject(), version: this.version(), metadata: this.metadata() }),
115
127
  computation: ({ object, version, metadata }, previous) => {
116
128
  object = Array.isArray(object) ? object[0] : object;
117
- const prev = previous?.source;
118
129
  if (object && this.#formerContentStreamId !== object.content?.contentStreamId) {
119
130
  const details = object && this.#objectPreviewService.getViewerDetails(object, version);
120
131
  this.#formerContentStreamId = object.content?.contentStreamId;
@@ -136,7 +147,9 @@ class ObjectPreviewComponent {
136
147
  const objectId = this.objectId();
137
148
  const dmsObject = this.dmsObjectInput();
138
149
  untracked(() => {
150
+ // eslint-disable-next-line @typescript-eslint/no-unused-expressions
139
151
  dmsObject && this.#objectPreviewService.setDmsObject(dmsObject);
152
+ // eslint-disable-next-line @typescript-eslint/no-unused-expressions
140
153
  objectId && !dmsObject && this.#objectPreviewService.getDmsObject(objectId).subscribe();
141
154
  });
142
155
  }, ...(ngDevMode ? [{ debugName: "#objectIdEffect" }] : /* istanbul ignore next */ []));
@@ -158,7 +171,7 @@ class ObjectPreviewComponent {
158
171
  [type]="viewerDetailsObj.mimeType"
159
172
  [src]="viewerDetailsObj.mediaViewerSrc ?? null"
160
173
  [metadata]="viewerDetailsObj.metadata"
161
- ></yuv-media-viewer>
174
+ />
162
175
  }
163
176
  @if (isTiff()) {
164
177
  <div class="tiff-warning">
@@ -178,7 +191,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImpo
178
191
  [type]="viewerDetailsObj.mimeType"
179
192
  [src]="viewerDetailsObj.mediaViewerSrc ?? null"
180
193
  [metadata]="viewerDetailsObj.metadata"
181
- ></yuv-media-viewer>
194
+ />
182
195
  }
183
196
  @if (isTiff()) {
184
197
  <div class="tiff-warning">
@@ -1 +1 @@
1
- {"version":3,"file":"yuuvis-client-framework-object-preview.mjs","sources":["../../../../../libs/yuuvis/client-framework/object-preview/src/lib/services/object-preview.service.ts","../../../../../libs/yuuvis/client-framework/object-preview/src/lib/components/object-preview/object-preview.component.ts","../../../../../libs/yuuvis/client-framework/object-preview/src/lib/components/object-email-preview/object-email-preview.component.ts","../../../../../libs/yuuvis/client-framework/object-preview/src/yuuvis-client-framework-object-preview.ts"],"sourcesContent":["import { inject, Injectable, signal } from '@angular/core';\nimport { ContentStreamField, DmsObject, DmsService, UserService } from '@yuuvis/client-core';\nimport { defaultViewers, EmailMetadata, MediaViewerService } from '@yuuvis/media-viewer';\nimport { tap } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ObjectPreviewService {\n readonly #dms = inject(DmsService);\n readonly #userService = inject(UserService);\n readonly #mediaViewerService = inject(MediaViewerService);\n\n #dmsObject = signal<DmsObject | undefined>(undefined);\n\n dmsObject = this.#dmsObject.asReadonly();\n\n setDmsObject(object: DmsObject) {\n this.#dmsObject.set(object);\n }\n\n getDmsObject(id: string) {\n return this.#dms.getDmsObject(id).pipe(tap((dmsObject) => this.#dmsObject.set(dmsObject)));\n }\n\n getMediaViewerSrc(id: string, mimeType: string | undefined, version?: number) {\n if (mimeType) {\n if (mimeType === 'image/tiff') {\n return version\n ? `/api/dms/objects/${id}/versions/${version}/contents/renditions/slide?timeout=50000`\n : `/api/dms/objects/${id}/contents/renditions/slide`;\n }\n return version ? `/api/dms/objects/${id}/versions/${version}/contents/file` : `/api/dms/objects/${id}/contents/file`;\n }\n return '';\n }\n\n #isEmailViewer(object: DmsObject) {\n return defaultViewers.filter((viewer) => viewer.type === 'EMAIL')[0].mimeType.includes(object.data[ContentStreamField.MIME_TYPE] as string);\n }\n\n getViewerDetails(object: DmsObject, version: number | undefined) {\n if (object) {\n const type = object?.content && this.#mediaViewerService.getComponentType(object.content.mimeType);\n\n // console.log('type', type);\n\n return this.#isEmailViewer(object)\n ? this.getEmailViewerDetails(object)\n : {\n mediaViewerSrc: this.getMediaViewerSrc(object.id, object.content?.mimeType, version),\n id: object.id,\n mimeType: object.content?.mimeType,\n metadata: {\n type,\n name: object.data[ContentStreamField.FILENAME] as string,\n dmsObject: object?.data,\n id: object?.id,\n editable: true,\n user: this.#userService.getCurrentUser(),\n theme: 'light',\n version,\n sendEvent:\n !!(\n object.content?.mimeType &&\n defaultViewers.filter((v) => v.type === 'OFFICE').map((v) => v.mimeType.includes(object.content?.mimeType || '')).length\n ) || false\n }\n };\n }\n return undefined;\n }\n\n getEmailViewerDetails(object: DmsObject, MAIL_APP_ID = 'appSystemmail:') {\n return {\n mediaViewerSrc: this.getMediaViewerSrc(object.id, object.content?.mimeType),\n id: object.id,\n mimeType: object.content?.mimeType,\n metadata: this.getEmailMetadata(object, MAIL_APP_ID)\n };\n }\n\n getEmailMetadata(object: DmsObject, MAIL_APP_ID = 'appSystemmail:'): EmailMetadata {\n return {\n type: 'EMAIL',\n header: {\n subject: object.data[`${MAIL_APP_ID}subject`] as string,\n sent: new Date(object.data[`${MAIL_APP_ID}sent`] as string),\n from: object.data[`${MAIL_APP_ID}from`] as string,\n to: object.data[`${MAIL_APP_ID}to`] as string[],\n cc: object.data[`${MAIL_APP_ID}cc`] as string[],\n bcc: object.data[`${MAIL_APP_ID}bcc`] as string[]\n },\n theme: 'light',\n attachments: object.data[`${MAIL_APP_ID}attachments`] as string[]\n };\n }\n}\n","import { Component, computed, effect, inject, input, linkedSignal, untracked, WritableSignal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DmsObject, EventService, TranslatePipe, YuvEventType } from '@yuuvis/client-core';\nimport { DASHLET_MESSAGE_EVENTS, Metadata, YuvMediaViewerComponent } from '@yuuvis/media-viewer';\nimport { tap } from 'rxjs';\nimport { ObjectPreviewService } from '../../services/object-preview.service';\n\ninterface ViewerDetails {\n id: string;\n mimeType: string | undefined;\n mediaViewerSrc: string | undefined;\n metadata: Partial<Metadata>;\n}\n\n@Component({\n selector: 'yuv-object-preview',\n standalone: true,\n imports: [YuvMediaViewerComponent, TranslatePipe],\n template: `\n @let viewerDetailsObj = viewerDetails();\n @if (viewerDetailsObj) {\n <yuv-media-viewer\n class=\"viewer\"\n [id]=\"viewerDetailsObj.id\"\n [type]=\"viewerDetailsObj.mimeType\"\n [src]=\"viewerDetailsObj.mediaViewerSrc ?? null\"\n [metadata]=\"viewerDetailsObj.metadata\"\n ></yuv-media-viewer>\n }\n @if (isTiff()) {\n <div class=\"tiff-warning\">\n <div class=\"tiff-warning-text\">{{ 'yuv.object-preview.tiff-warning' | translate }}</div>\n </div>\n }\n `,\n styles: [\n `\n :host {\n --media-viewer-background-color: transparent;\n height: 100%;\n overflow: hidden;\n display: grid;\n grid-auto-columns: 1fr;\n grid-auto-rows: 1fr;\n grid-template-columns: 1fr;\n grid-template-rows: 1fr max-content;\n gap: 0px 0px;\n grid-template-areas:\n 'viewer'\n 'message';\n }\n .viewer {\n grid-area: viewer;\n background-color: var(--media-viewer-background-color);\n ::ng-deep {\n pdf-paging-area {\n display: flex;\n align-items: center;\n\n .paging-right,\n .paging-left {\n display: flex;\n align-items: center;\n }\n }\n pdf-zoom-toolbar {\n div {\n display: flex;\n align-items: center;\n }\n }\n }\n }\n .tiff-warning {\n grid-area: message;\n text-align: center;\n padding: var(--ymt-spacing-xs) 0;\n\n &-text {\n margin: var(--ymt-spacing-m);\n }\n }\n `\n ]\n})\nexport class ObjectPreviewComponent {\n readonly #objectPreviewService = inject(ObjectPreviewService);\n readonly #event = inject(EventService);\n #formerContentStreamId: string | undefined = undefined;\n\n objectId = input<string | undefined>(undefined);\n dmsObjectInput = input<DmsObject | undefined>(undefined, { alias: 'dmsObject' });\n version = input<number | undefined>(undefined);\n dmsObject = this.#objectPreviewService.dmsObject;\n\n metadata = input<Partial<Metadata>>({});\n\n viewerDetails: WritableSignal<ViewerDetails | null> = linkedSignal({\n source: () => ({ object: this.dmsObject(), version: this.version(), metadata: this.metadata() }),\n computation: ({ object, version, metadata }, previous): ViewerDetails | null => {\n object = Array.isArray(object) ? object[0] : object;\n const prev = previous?.source;\n\n if (object && this.#formerContentStreamId !== object.content?.contentStreamId) {\n const details = object && this.#objectPreviewService.getViewerDetails(object, version);\n this.#formerContentStreamId = object.content?.contentStreamId;\n if (details) {\n return { ...details, metadata: { ...details.metadata, ...metadata } as Partial<Metadata> };\n }\n return null;\n }\n if (previous?.value) {\n return {\n ...(previous.value as any),\n metadata: { ...((previous.value as any)?.metadata as any), ...metadata }\n } as ViewerDetails;\n }\n\n return null;\n }\n });\n\n isTiff = computed(() => this.dmsObject()?.content?.mimeType === 'image/tiff');\n\n #objectIdEffect = effect(() => {\n const objectId = this.objectId();\n const dmsObject = this.dmsObjectInput();\n untracked(() => {\n dmsObject && this.#objectPreviewService.setDmsObject(dmsObject);\n objectId && !dmsObject && this.#objectPreviewService.getDmsObject(objectId).subscribe();\n });\n });\n\n constructor() {\n this.#event\n .on(DASHLET_MESSAGE_EVENTS.OFFICE_DOCUMENT_UPDATE) //, DASHLET_MESSAGE_EVENTS.OFFICE_DOCUMENT_CONVERTED)\n .pipe(\n takeUntilDestroyed(),\n // delay(2000),\n // tap((e) => console.log({ e })),\n tap(() => this.#event.trigger(YuvEventType.DMS_OBJECT_CONTENT_UPDATED, { externalUpdate: true }))\n )\n .subscribe();\n }\n}\n","import { Component, computed, effect, inject, input, untracked } from '@angular/core';\nimport { DmsObject } from '@yuuvis/client-core';\nimport { MailComponent } from '@yuuvis/media-viewer';\nimport { ObjectPreviewService } from '../../services/object-preview.service';\n\n@Component({\n selector: 'yuv-object-email-preview',\n standalone: true,\n imports: [MailComponent],\n template: `\n @let viewerDetailsObj = viewerDetails();\n @if (viewerDetailsObj) {\n <yuv-mail [id]=\"viewerDetailsObj.id\" [src]=\"viewerDetailsObj.mediaViewerSrc\" [metadata]=\"viewerDetailsObj.metadata\"></yuv-mail>\n }\n `,\n styles: `\n :host {\n height: 100%;\n }\n `\n})\nexport class ObjectEmailPreviewComponent {\n #objectPreviwService = inject(ObjectPreviewService);\n\n objectId = input<string | undefined>(undefined);\n dmsObjectInput = input<DmsObject | undefined>(undefined, { alias: 'dmsObject' });\n dmsObject = this.#objectPreviwService.dmsObject;\n\n #objectIdEffect = effect(() => {\n const objectId = this.objectId();\n const dmsObject = this.dmsObjectInput();\n\n untracked(() => {\n dmsObject && this.#objectPreviwService.setDmsObject(dmsObject);\n if (objectId && !dmsObject) {\n this.#objectPreviwService.getDmsObject(objectId).subscribe();\n }\n });\n });\n\n viewerDetails = computed(() => {\n const object = this.dmsObject();\n return object ? this.#objectPreviwService.getEmailViewerDetails(object) : undefined;\n });\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["tap"],"mappings":"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"}
1
+ {"version":3,"file":"yuuvis-client-framework-object-preview.mjs","sources":["../../../../../libs/yuuvis/client-framework/object-preview/src/lib/services/object-preview.service.ts","../../../../../libs/yuuvis/client-framework/object-preview/src/lib/components/object-preview/object-preview.component.ts","../../../../../libs/yuuvis/client-framework/object-preview/src/lib/components/object-email-preview/object-email-preview.component.ts","../../../../../libs/yuuvis/client-framework/object-preview/src/yuuvis-client-framework-object-preview.ts"],"sourcesContent":["import { inject, Injectable, signal } from '@angular/core';\nimport { ContentStreamField, DmsObject, DmsService, ObjectLockingService, UserService } from '@yuuvis/client-core';\nimport { defaultViewers, EmailMetadata, MediaViewerService } from '@yuuvis/media-viewer';\nimport { Observable } from 'rxjs';\nimport { tap } from 'rxjs/operators';\nimport { ViewerDataDefault, ViewerDataEmail } from '../models';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ObjectPreviewService {\n readonly #dms = inject(DmsService);\n readonly #userService = inject(UserService);\n readonly #mediaViewerService = inject(MediaViewerService);\n readonly #objectLockingService = inject(ObjectLockingService);\n\n #dmsObject = signal<DmsObject | undefined>(undefined);\n\n dmsObject = this.#dmsObject.asReadonly();\n\n setDmsObject(object: DmsObject): void {\n this.#dmsObject.set(object);\n }\n\n getDmsObject(id: string): Observable<DmsObject> {\n return this.#dms.getDmsObject(id).pipe(tap((dmsObject) => this.#dmsObject.set(dmsObject)));\n }\n\n getMediaViewerSrc(id: string, mimeType: string | undefined, version?: number): string {\n if (mimeType) {\n if (mimeType === 'image/tiff') {\n return version\n ? `/api/dms/objects/${id}/versions/${version}/contents/renditions/slide?timeout=50000`\n : `/api/dms/objects/${id}/contents/renditions/slide`;\n }\n return version\n ? `/api/dms/objects/${id}/versions/${version}/contents/file`\n : `/api/dms/objects/${id}/contents/file`;\n }\n return '';\n }\n\n getEmailViewerDetails(object: DmsObject, MAIL_APP_ID = 'appSystemmail:'): ViewerDataEmail {\n return {\n mediaViewerSrc: this.getMediaViewerSrc(object.id, object.content?.mimeType),\n id: object.id,\n mimeType: object.content?.mimeType,\n metadata: this.getEmailMetadata(object, MAIL_APP_ID)\n };\n }\n\n getEmailMetadata(object: DmsObject, MAIL_APP_ID = 'appSystemmail:'): EmailMetadata {\n return {\n type: 'EMAIL',\n header: {\n subject: object.data[`${MAIL_APP_ID}subject`] as string,\n sent: new Date(object.data[`${MAIL_APP_ID}sent`] as string),\n from: object.data[`${MAIL_APP_ID}from`] as string,\n to: object.data[`${MAIL_APP_ID}to`] as string[],\n cc: object.data[`${MAIL_APP_ID}cc`] as string[],\n bcc: object.data[`${MAIL_APP_ID}bcc`] as string[]\n },\n theme: 'light',\n attachments: object.data[`${MAIL_APP_ID}attachments`] as string[]\n };\n }\n\n getViewerDetails(object: DmsObject, version: number | undefined): ViewerDataEmail | ViewerDataDefault | undefined {\n if (object) {\n const type = object?.content && this.#mediaViewerService.getComponentType(object.content.mimeType);\n\n // console.log('type', type);\n console.log('isEditable: ', this.#isEditable(object));\n\n return this.#isEmailViewer(object)\n ? this.getEmailViewerDetails(object)\n : {\n mediaViewerSrc: this.getMediaViewerSrc(object.id, object.content?.mimeType, version),\n id: object.id,\n mimeType: object.content?.mimeType,\n metadata: {\n type,\n name: object.data[ContentStreamField.FILENAME] as string,\n dmsObject: object?.data,\n id: object?.id,\n editable: this.#isEditable(object),\n user: this.#userService.getCurrentUser(),\n theme: 'light',\n version,\n sendEvent:\n !!(\n object.content?.mimeType &&\n defaultViewers\n .filter((viewer) => viewer.type === 'OFFICE')\n .map((viewer) => viewer.mimeType.includes(object.content?.mimeType || '')).length\n ) || false\n }\n };\n }\n return undefined;\n }\n\n #isEditable(object: DmsObject): boolean {\n return !this.#objectLockingService.getLockState(object).locked;\n }\n\n #isEmailViewer(object: DmsObject): boolean {\n return defaultViewers\n .filter((viewer) => viewer.type === 'EMAIL')[0]\n .mimeType.includes(object.data[ContentStreamField.MIME_TYPE] as string);\n }\n}\n","import { Component, computed, effect, inject, input, linkedSignal, untracked, WritableSignal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DmsObject, EventService, TranslatePipe, YuvEventType } from '@yuuvis/client-core';\nimport { DASHLET_MESSAGE_EVENTS, Metadata, YuvMediaViewerComponent } from '@yuuvis/media-viewer';\nimport { tap } from 'rxjs';\nimport { ObjectPreviewService } from '../../services/object-preview.service';\n\ninterface ViewerDetails {\n id: string;\n mimeType: string | undefined;\n mediaViewerSrc: string | undefined;\n metadata: Partial<Metadata>;\n}\n\n@Component({\n selector: 'yuv-object-preview',\n standalone: true,\n imports: [YuvMediaViewerComponent, TranslatePipe],\n template: `\n @let viewerDetailsObj = viewerDetails();\n @if (viewerDetailsObj) {\n <yuv-media-viewer\n class=\"viewer\"\n [id]=\"viewerDetailsObj.id\"\n [type]=\"viewerDetailsObj.mimeType\"\n [src]=\"viewerDetailsObj.mediaViewerSrc ?? null\"\n [metadata]=\"viewerDetailsObj.metadata\"\n />\n }\n @if (isTiff()) {\n <div class=\"tiff-warning\">\n <div class=\"tiff-warning-text\">{{ 'yuv.object-preview.tiff-warning' | translate }}</div>\n </div>\n }\n `,\n styles: [\n `\n :host {\n --media-viewer-background-color: transparent;\n height: 100%;\n overflow: hidden;\n display: grid;\n grid-auto-columns: 1fr;\n grid-auto-rows: 1fr;\n grid-template-columns: 1fr;\n grid-template-rows: 1fr max-content;\n gap: 0px 0px;\n grid-template-areas:\n 'viewer'\n 'message';\n }\n .viewer {\n grid-area: viewer;\n background-color: var(--media-viewer-background-color);\n ::ng-deep {\n pdf-paging-area {\n display: flex;\n align-items: center;\n\n .paging-right,\n .paging-left {\n display: flex;\n align-items: center;\n }\n }\n pdf-zoom-toolbar {\n div {\n display: flex;\n align-items: center;\n }\n }\n }\n }\n .tiff-warning {\n grid-area: message;\n text-align: center;\n padding: var(--ymt-spacing-xs) 0;\n\n &-text {\n margin: var(--ymt-spacing-m);\n }\n }\n `\n ]\n})\nexport class ObjectPreviewComponent {\n readonly #objectPreviewService = inject(ObjectPreviewService);\n readonly #event = inject(EventService);\n #formerContentStreamId: string | undefined = undefined;\n\n objectId = input<string | undefined>(undefined);\n dmsObjectInput = input<DmsObject | undefined>(undefined, { alias: 'dmsObject' });\n version = input<number | undefined>(undefined);\n dmsObject = this.#objectPreviewService.dmsObject;\n\n metadata = input<Partial<Metadata>>({});\n\n viewerDetails: WritableSignal<ViewerDetails | null> = linkedSignal({\n source: () => ({ object: this.dmsObject(), version: this.version(), metadata: this.metadata() }),\n computation: ({ object, version, metadata }, previous): ViewerDetails | null => {\n object = Array.isArray(object) ? object[0] : object;\n\n if (object && this.#formerContentStreamId !== object.content?.contentStreamId) {\n const details = object && this.#objectPreviewService.getViewerDetails(object, version);\n this.#formerContentStreamId = object.content?.contentStreamId;\n if (details) {\n return { ...details, metadata: { ...details.metadata, ...metadata } as Partial<Metadata> };\n }\n return null;\n }\n if (previous?.value) {\n return {\n ...previous.value,\n metadata: { ...previous.value?.metadata, ...metadata }\n } as ViewerDetails;\n }\n\n return null;\n }\n });\n\n isTiff = computed(() => this.dmsObject()?.content?.mimeType === 'image/tiff');\n\n #objectIdEffect = effect(() => {\n const objectId = this.objectId();\n const dmsObject = this.dmsObjectInput();\n untracked(() => {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n dmsObject && this.#objectPreviewService.setDmsObject(dmsObject);\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n objectId && !dmsObject && this.#objectPreviewService.getDmsObject(objectId).subscribe();\n });\n });\n\n constructor() {\n this.#event\n .on(DASHLET_MESSAGE_EVENTS.OFFICE_DOCUMENT_UPDATE) //, DASHLET_MESSAGE_EVENTS.OFFICE_DOCUMENT_CONVERTED)\n .pipe(\n takeUntilDestroyed(),\n // delay(2000),\n // tap((e) => console.log({ e })),\n tap(() => this.#event.trigger(YuvEventType.DMS_OBJECT_CONTENT_UPDATED, { externalUpdate: true }))\n )\n .subscribe();\n }\n}\n","import { Component, computed, effect, inject, input, untracked } from '@angular/core';\nimport { DmsObject } from '@yuuvis/client-core';\nimport { MailComponent } from '@yuuvis/media-viewer';\nimport { ObjectPreviewService } from '../../services/object-preview.service';\n\n@Component({\n selector: 'yuv-object-email-preview',\n standalone: true,\n imports: [MailComponent],\n template: `\n @let viewerDetailsObj = viewerDetails();\n @if (viewerDetailsObj) {\n <yuv-mail [id]=\"viewerDetailsObj.id\" [src]=\"viewerDetailsObj.mediaViewerSrc\" [metadata]=\"viewerDetailsObj.metadata\"></yuv-mail>\n }\n `,\n styles: `\n :host {\n height: 100%;\n }\n `\n})\nexport class ObjectEmailPreviewComponent {\n #objectPreviwService = inject(ObjectPreviewService);\n\n objectId = input<string | undefined>(undefined);\n dmsObjectInput = input<DmsObject | undefined>(undefined, { alias: 'dmsObject' });\n dmsObject = this.#objectPreviwService.dmsObject;\n\n #objectIdEffect = effect(() => {\n const objectId = this.objectId();\n const dmsObject = this.dmsObjectInput();\n\n untracked(() => {\n dmsObject && this.#objectPreviwService.setDmsObject(dmsObject);\n if (objectId && !dmsObject) {\n this.#objectPreviwService.getDmsObject(objectId).subscribe();\n }\n });\n });\n\n viewerDetails = computed(() => {\n const object = this.dmsObject();\n return object ? this.#objectPreviwService.getEmailViewerDetails(object) : undefined;\n });\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["tap"],"mappings":"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"}
@@ -234,9 +234,11 @@ class QueryListComponent {
234
234
  * exceeds this value, pagination controls are shown and the user can navigate between
235
235
  * pages via `changePage()` / `goToPage()`.
236
236
  *
237
- * @default SearchService.DEFAULT_QUERY_SIZE
237
+ * Resolution order (see `effectivePageSize`): explicit `pageSize` input takes precedence,
238
+ * otherwise `(query as SearchQuery).size` is used if set, otherwise
239
+ * `SearchService.DEFAULT_QUERY_SIZE` is used.
238
240
  */
239
- this.pageSize = input(SearchService.DEFAULT_QUERY_SIZE, ...(ngDevMode ? [{ debugName: "pageSize" }] : /* istanbul ignore next */ []));
241
+ this.pageSize = input(undefined, ...(ngDevMode ? [{ debugName: "pageSize" }] : /* istanbul ignore next */ []));
240
242
  /**
241
243
  * Enables mouse drag-to-select on list items.
242
244
  *
@@ -293,6 +295,29 @@ class QueryListComponent {
293
295
  * (e.g. to show a visual indicator or adjust layout) without accessing internal state.
294
296
  */
295
297
  this.dropInSize = computed(() => this.#dropInItems().length, ...(ngDevMode ? [{ debugName: "dropInSize" }] : /* istanbul ignore next */ []));
298
+ /**
299
+ * Resolved page size used by both the `mat-paginator` and every server request.
300
+ *
301
+ * Falls back through three sources, in order:
302
+ * 1. The explicit `pageSize` input, when the consumer has provided one.
303
+ * 2. `(query as SearchQuery).size`, when the query is a `SearchQuery` object that
304
+ * already declares its own page size — keeps server response and paginator in
305
+ * sync when the consumer only configures the query.
306
+ * 3. `SearchService.DEFAULT_QUERY_SIZE` as the final default.
307
+ *
308
+ * Used internally to avoid the bug where `mat-paginator` and the server pageination
309
+ * use different page sizes (paginator showing e.g. "1-25 of 43" while `getPage()`
310
+ * asks the server for skip=50 — landing on an empty page).
311
+ */
312
+ this.effectivePageSize = computed(() => {
313
+ const inputSize = this.pageSize();
314
+ if (inputSize !== undefined)
315
+ return inputSize;
316
+ const query = this.query();
317
+ if (query && typeof query !== 'string' && query.size)
318
+ return query.size;
319
+ return SearchService.DEFAULT_QUERY_SIZE;
320
+ }, ...(ngDevMode ? [{ debugName: "effectivePageSize" }] : /* istanbul ignore next */ []));
296
321
  /**
297
322
  * The final list of items rendered by the template.
298
323
  *
@@ -483,6 +508,47 @@ class QueryListComponent {
483
508
  this.list().scrollToTop();
484
509
  }
485
510
  }
511
+ /**
512
+ * Surgically removes specific items from the drop-in set by their stable IDs.
513
+ *
514
+ * Filters `#dropInItems` to drop any entry whose `idProperty` value is in `ids`,
515
+ * leaving the remaining drop-ins (and the rest of the result list) untouched.
516
+ * The structural shift is handled by the rendering pipeline — `resultItems`
517
+ * recomputes automatically, and the leading `drop-in` class follows the new
518
+ * (smaller) `dropInSize()`.
519
+ *
520
+ * This method intentionally does **not** mutate the inner list's selection
521
+ * state. The caller (typically `TileListComponent.removeDropItems`) is in a
522
+ * better position to decide whether to clear, shift, or preserve selection,
523
+ * because it tracks selection at a higher level by stable object identity.
524
+ *
525
+ * Requires `idProperty` to be set — without it items cannot be identified
526
+ * and the call is a no-op (returns 0).
527
+ *
528
+ * **Typical use case:** an upstream deletion (e.g. `DmsService.deleteDmsObject`)
529
+ * removed an object that is currently rendered as a drop-in. Without removing
530
+ * it from `#dropInItems`, the deleted tile would remain visible after `refresh()`
531
+ * because the framework treats drop-ins as authoritative and prepends them to
532
+ * every refreshed result set.
533
+ *
534
+ * @param ids Array of ID values (as resolved via `idProperty`) to remove.
535
+ * @returns Number of items that were actually removed from the drop-in set.
536
+ */
537
+ removeDropItems(ids) {
538
+ if (ids.length === 0)
539
+ return 0;
540
+ const idProp = this.idProperty();
541
+ if (!idProp)
542
+ return 0;
543
+ const removeSet = new Set(ids);
544
+ const before = this.#dropInItems();
545
+ const after = before.filter((item) => !removeSet.has(item[idProp]));
546
+ const removedCount = before.length - after.length;
547
+ if (removedCount === 0)
548
+ return 0;
549
+ this.#dropInItems.set(after);
550
+ return removedCount;
551
+ }
486
552
  /**
487
553
  * Programmatically replaces the entire selection with the given indices.
488
554
  *
@@ -594,9 +660,7 @@ class QueryListComponent {
594
660
  if (!query)
595
661
  return;
596
662
  this.busy.set(true);
597
- this.#searchService
598
- .getPage(query, page, this.pageSize(), this.includePermissions())
599
- .subscribe({
663
+ this.#searchService.getPage(query, page, this.effectivePageSize(), this.includePermissions()).subscribe({
600
664
  next: (res) => {
601
665
  this.#setupPagination(res);
602
666
  this.#listItemUpdates.set({});
@@ -622,9 +686,10 @@ class QueryListComponent {
622
686
  #executeQuery(query) {
623
687
  if (query && !this.busy()) {
624
688
  this.busy.set(true);
689
+ const size = this.effectivePageSize();
625
690
  (typeof query === 'string'
626
- ? this.#searchService.searchCmis(query, this.pageSize(), this.includePermissions())
627
- : this.#searchService.search(query)).subscribe({
691
+ ? this.#searchService.searchCmis(query, size, this.includePermissions())
692
+ : this.#searchService.search({ ...query, size })).subscribe({
628
693
  next: (res) => {
629
694
  this.#setupPagination(res);
630
695
  this.#listItemUpdates.set({});
@@ -652,7 +717,7 @@ class QueryListComponent {
652
717
  //#region Effects
653
718
  #executeQueryEffect;
654
719
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: QueryListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
655
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.12", type: QueryListComponent, isStandalone: true, selector: "yuv-query-list", inputs: { query: { classPropertyName: "query", publicName: "query", isSignal: true, isRequired: false, transformFunction: null }, idProperty: { classPropertyName: "idProperty", publicName: "idProperty", isSignal: true, isRequired: false, transformFunction: null }, transformer: { classPropertyName: "transformer", publicName: "transformer", isSignal: true, isRequired: false, transformFunction: null }, preventChangeUntil: { classPropertyName: "preventChangeUntil", publicName: "preventChangeUntil", isSignal: true, isRequired: false, transformFunction: null }, autoSelect: { classPropertyName: "autoSelect", publicName: "autoSelect", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, enableDragSelect: { classPropertyName: "enableDragSelect", publicName: "enableDragSelect", isSignal: true, isRequired: false, transformFunction: null }, multiselect: { classPropertyName: "multiselect", publicName: "multiselect", isSignal: true, isRequired: false, transformFunction: null }, selfHandleSelection: { classPropertyName: "selfHandleSelection", publicName: "selfHandleSelection", isSignal: true, isRequired: false, transformFunction: null }, includePermissions: { classPropertyName: "includePermissions", publicName: "includePermissions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemSelect: "itemSelect", dragSelectChange: "dragSelectChange", itemDoubleClick: "itemDoubleClick", queryResult: "queryResult" }, host: { properties: { "class.pagination": "!!pagination()" } }, queries: [{ propertyName: "itemTemplate", first: true, predicate: ["yuvQueryListItem"], descendants: true, isSignal: true }, { propertyName: "emptyTemplate", first: true, predicate: ["yuvQueryListEmpty"], descendants: true, isSignal: true }], viewQueries: [{ propertyName: "list", first: true, predicate: ["list"], descendants: true, isSignal: true }], ngImport: i0, template: "<yuv-list\n #list\n [multiselect]=\"multiselect()\"\n [autoSelect]=\"autoSelect()\"\n [preventChangeUntil]=\"preventChangeUntil()\"\n [selfHandleClick]=\"true\"\n [selfHandleSelection]=\"selfHandleSelection()\"\n [yuvDragSelect]=\"{ disabled: !enableDragSelect() || !multiselect() || isTouchDevice }\"\n (dragSelectChange)=\"onDragSelectChange($event)\"\n (dragSelect)=\"onDragSelect($event)\"\n (itemSelect)=\"itemSelect.emit($event)\"\n>\n @for (resultItem of resultItems(); track trackItem(resultItem, $index)) {\n <div\n yuvListItem\n yuvDragSelectItem\n [class.drop-in]=\"$index < dropInSize()\"\n (click.single)=\"onItemClick($index, $event)\"\n (click.double)=\"onItemDoubleClick($index, $event)\"\n >\n <ng-container *ngTemplateOutlet=\"itemTemplate() || null; context: { $implicit: resultItem, index: $index }\" />\n </div>\n } @empty {\n <ng-container *ngTemplateOutlet=\"emptyTemplate() || null\" />\n }\n</yuv-list>\n@if (pagination(); as pag) {\n <mat-paginator\n class=\"paginator\"\n [length]=\"pag.total\"\n [pageSize]=\"pageSize()\"\n (page)=\"changePage($event)\"\n hidePageSize\n />\n}\n", styles: [":host{--paging-background: var(--ymt-surface);--drop-in-item-outline: 2px dashed rgb(from var(--ymt-primary) r g b / .9);--drop-in-item-outline-offset: -3px;display:flex;flex-direction:column;max-height:100%}:host [yuvListItem].drop-in{outline:var(--drop-in-item-outline);outline-offset:var(--drop-in-item-outline-offset);overflow:hidden}:host yuv-list{flex:1;overflow-y:auto}:host mat-paginator{flex:0 0 auto;font:inherit;border-block-start:1px solid var(--ymt-outline-variant);background-color:var(--paging-background)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: YuvListModule }, { kind: "component", type: i2.ListComponent, selector: "yuv-list", inputs: ["preventChangeUntil", "multiselect", "selfHandleSelection", "selfHandleClick", "autoSelect", "disableSelection"], outputs: ["itemSelect", "itemFocus"] }, { kind: "directive", type: i2.ListItemDirective, selector: "[yuvListItem]", inputs: ["disabled", "active", "selected"] }, { kind: "directive", type: ClickDoubleDirective, selector: "[click.single],[click.double]", inputs: ["debounceTime"], outputs: ["click.double", "click.single"] }, { kind: "directive", type: DragSelectDirective, selector: "[yuvDragSelect]", inputs: ["yuvDragSelect"], outputs: ["dragSelectChange", "dragSelect"] }, { kind: "directive", type: DragSelectItemDirective, selector: "[yuvDragSelectItem]" }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i3.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
720
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.12", type: QueryListComponent, isStandalone: true, selector: "yuv-query-list", inputs: { query: { classPropertyName: "query", publicName: "query", isSignal: true, isRequired: false, transformFunction: null }, idProperty: { classPropertyName: "idProperty", publicName: "idProperty", isSignal: true, isRequired: false, transformFunction: null }, transformer: { classPropertyName: "transformer", publicName: "transformer", isSignal: true, isRequired: false, transformFunction: null }, preventChangeUntil: { classPropertyName: "preventChangeUntil", publicName: "preventChangeUntil", isSignal: true, isRequired: false, transformFunction: null }, autoSelect: { classPropertyName: "autoSelect", publicName: "autoSelect", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, enableDragSelect: { classPropertyName: "enableDragSelect", publicName: "enableDragSelect", isSignal: true, isRequired: false, transformFunction: null }, multiselect: { classPropertyName: "multiselect", publicName: "multiselect", isSignal: true, isRequired: false, transformFunction: null }, selfHandleSelection: { classPropertyName: "selfHandleSelection", publicName: "selfHandleSelection", isSignal: true, isRequired: false, transformFunction: null }, includePermissions: { classPropertyName: "includePermissions", publicName: "includePermissions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemSelect: "itemSelect", dragSelectChange: "dragSelectChange", itemDoubleClick: "itemDoubleClick", queryResult: "queryResult" }, host: { properties: { "class.pagination": "!!pagination()" } }, queries: [{ propertyName: "itemTemplate", first: true, predicate: ["yuvQueryListItem"], descendants: true, isSignal: true }, { propertyName: "emptyTemplate", first: true, predicate: ["yuvQueryListEmpty"], descendants: true, isSignal: true }], viewQueries: [{ propertyName: "list", first: true, predicate: ["list"], descendants: true, isSignal: true }], ngImport: i0, template: "<yuv-list\n #list\n [multiselect]=\"multiselect()\"\n [autoSelect]=\"autoSelect()\"\n [preventChangeUntil]=\"preventChangeUntil()\"\n [selfHandleClick]=\"true\"\n [selfHandleSelection]=\"selfHandleSelection()\"\n [yuvDragSelect]=\"{ disabled: !enableDragSelect() || !multiselect() || isTouchDevice }\"\n (dragSelectChange)=\"onDragSelectChange($event)\"\n (dragSelect)=\"onDragSelect($event)\"\n (itemSelect)=\"itemSelect.emit($event)\"\n>\n @for (resultItem of resultItems(); track trackItem(resultItem, $index)) {\n <div\n yuvListItem\n yuvDragSelectItem\n [class.drop-in]=\"$index < dropInSize()\"\n (click.single)=\"onItemClick($index, $event)\"\n (click.double)=\"onItemDoubleClick($index, $event)\"\n >\n <ng-container *ngTemplateOutlet=\"itemTemplate() || null; context: { $implicit: resultItem, index: $index }\" />\n </div>\n } @empty {\n <ng-container *ngTemplateOutlet=\"emptyTemplate() || null\" />\n }\n</yuv-list>\n@if (pagination(); as pag) {\n <mat-paginator\n class=\"paginator\"\n [length]=\"pag.total\"\n [pageSize]=\"effectivePageSize()\"\n (page)=\"changePage($event)\"\n hidePageSize\n />\n}\n", styles: [":host{--paging-background: var(--ymt-surface);--drop-in-item-outline: 2px dashed rgb(from var(--ymt-primary) r g b / .9);--drop-in-item-outline-offset: -3px;display:flex;flex-direction:column;max-height:100%}:host [yuvListItem].drop-in{outline:var(--drop-in-item-outline);outline-offset:var(--drop-in-item-outline-offset);overflow:hidden}:host yuv-list{flex:1;overflow-y:auto}:host mat-paginator{flex:0 0 auto;font:inherit;border-block-start:1px solid var(--ymt-outline-variant);background-color:var(--paging-background)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: YuvListModule }, { kind: "component", type: i2.ListComponent, selector: "yuv-list", inputs: ["preventChangeUntil", "multiselect", "selfHandleSelection", "selfHandleClick", "autoSelect", "disableSelection"], outputs: ["itemSelect", "itemFocus"] }, { kind: "directive", type: i2.ListItemDirective, selector: "[yuvListItem]", inputs: ["disabled", "active", "selected"] }, { kind: "directive", type: ClickDoubleDirective, selector: "[click.single],[click.double]", inputs: ["debounceTime"], outputs: ["click.double", "click.single"] }, { kind: "directive", type: DragSelectDirective, selector: "[yuvDragSelect]", inputs: ["yuvDragSelect"], outputs: ["dragSelectChange", "dragSelect"] }, { kind: "directive", type: DragSelectItemDirective, selector: "[yuvDragSelectItem]" }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i3.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
656
721
  }
657
722
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: QueryListComponent, decorators: [{
658
723
  type: Component,
@@ -663,7 +728,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImpo
663
728
  DragSelectDirective,
664
729
  DragSelectItemDirective,
665
730
  MatPaginatorModule
666
- ], host: { '[class.pagination]': '!!pagination()' }, changeDetection: ChangeDetectionStrategy.OnPush, template: "<yuv-list\n #list\n [multiselect]=\"multiselect()\"\n [autoSelect]=\"autoSelect()\"\n [preventChangeUntil]=\"preventChangeUntil()\"\n [selfHandleClick]=\"true\"\n [selfHandleSelection]=\"selfHandleSelection()\"\n [yuvDragSelect]=\"{ disabled: !enableDragSelect() || !multiselect() || isTouchDevice }\"\n (dragSelectChange)=\"onDragSelectChange($event)\"\n (dragSelect)=\"onDragSelect($event)\"\n (itemSelect)=\"itemSelect.emit($event)\"\n>\n @for (resultItem of resultItems(); track trackItem(resultItem, $index)) {\n <div\n yuvListItem\n yuvDragSelectItem\n [class.drop-in]=\"$index < dropInSize()\"\n (click.single)=\"onItemClick($index, $event)\"\n (click.double)=\"onItemDoubleClick($index, $event)\"\n >\n <ng-container *ngTemplateOutlet=\"itemTemplate() || null; context: { $implicit: resultItem, index: $index }\" />\n </div>\n } @empty {\n <ng-container *ngTemplateOutlet=\"emptyTemplate() || null\" />\n }\n</yuv-list>\n@if (pagination(); as pag) {\n <mat-paginator\n class=\"paginator\"\n [length]=\"pag.total\"\n [pageSize]=\"pageSize()\"\n (page)=\"changePage($event)\"\n hidePageSize\n />\n}\n", styles: [":host{--paging-background: var(--ymt-surface);--drop-in-item-outline: 2px dashed rgb(from var(--ymt-primary) r g b / .9);--drop-in-item-outline-offset: -3px;display:flex;flex-direction:column;max-height:100%}:host [yuvListItem].drop-in{outline:var(--drop-in-item-outline);outline-offset:var(--drop-in-item-outline-offset);overflow:hidden}:host yuv-list{flex:1;overflow-y:auto}:host mat-paginator{flex:0 0 auto;font:inherit;border-block-start:1px solid var(--ymt-outline-variant);background-color:var(--paging-background)}\n"] }]
731
+ ], host: { '[class.pagination]': '!!pagination()' }, changeDetection: ChangeDetectionStrategy.OnPush, template: "<yuv-list\n #list\n [multiselect]=\"multiselect()\"\n [autoSelect]=\"autoSelect()\"\n [preventChangeUntil]=\"preventChangeUntil()\"\n [selfHandleClick]=\"true\"\n [selfHandleSelection]=\"selfHandleSelection()\"\n [yuvDragSelect]=\"{ disabled: !enableDragSelect() || !multiselect() || isTouchDevice }\"\n (dragSelectChange)=\"onDragSelectChange($event)\"\n (dragSelect)=\"onDragSelect($event)\"\n (itemSelect)=\"itemSelect.emit($event)\"\n>\n @for (resultItem of resultItems(); track trackItem(resultItem, $index)) {\n <div\n yuvListItem\n yuvDragSelectItem\n [class.drop-in]=\"$index < dropInSize()\"\n (click.single)=\"onItemClick($index, $event)\"\n (click.double)=\"onItemDoubleClick($index, $event)\"\n >\n <ng-container *ngTemplateOutlet=\"itemTemplate() || null; context: { $implicit: resultItem, index: $index }\" />\n </div>\n } @empty {\n <ng-container *ngTemplateOutlet=\"emptyTemplate() || null\" />\n }\n</yuv-list>\n@if (pagination(); as pag) {\n <mat-paginator\n class=\"paginator\"\n [length]=\"pag.total\"\n [pageSize]=\"effectivePageSize()\"\n (page)=\"changePage($event)\"\n hidePageSize\n />\n}\n", styles: [":host{--paging-background: var(--ymt-surface);--drop-in-item-outline: 2px dashed rgb(from var(--ymt-primary) r g b / .9);--drop-in-item-outline-offset: -3px;display:flex;flex-direction:column;max-height:100%}:host [yuvListItem].drop-in{outline:var(--drop-in-item-outline);outline-offset:var(--drop-in-item-outline-offset);overflow:hidden}:host yuv-list{flex:1;overflow-y:auto}:host mat-paginator{flex:0 0 auto;font:inherit;border-block-start:1px solid var(--ymt-outline-variant);background-color:var(--paging-background)}\n"] }]
667
732
  }], ctorParameters: () => [], propDecorators: { list: [{ type: i0.ViewChild, args: ['list', { isSignal: true }] }], itemTemplate: [{ type: i0.ContentChild, args: ['yuvQueryListItem', { isSignal: true }] }], emptyTemplate: [{ type: i0.ContentChild, args: ['yuvQueryListEmpty', { isSignal: true }] }], query: [{ type: i0.Input, args: [{ isSignal: true, alias: "query", required: false }] }], idProperty: [{ type: i0.Input, args: [{ isSignal: true, alias: "idProperty", required: false }] }], transformer: [{ type: i0.Input, args: [{ isSignal: true, alias: "transformer", required: false }] }], preventChangeUntil: [{ type: i0.Input, args: [{ isSignal: true, alias: "preventChangeUntil", required: false }] }], autoSelect: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoSelect", required: false }] }], itemSelect: [{ type: i0.Output, args: ["itemSelect"] }], dragSelectChange: [{ type: i0.Output, args: ["dragSelectChange"] }], itemDoubleClick: [{ type: i0.Output, args: ["itemDoubleClick"] }], queryResult: [{ type: i0.Output, args: ["queryResult"] }], pageSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "pageSize", required: false }] }], enableDragSelect: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableDragSelect", required: false }] }], multiselect: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiselect", required: false }] }], selfHandleSelection: [{ type: i0.Input, args: [{ isSignal: true, alias: "selfHandleSelection", required: false }] }], includePermissions: [{ type: i0.Input, args: [{ isSignal: true, alias: "includePermissions", required: false }] }] } });
668
733
 
669
734
  const cmp = [QueryListComponent];