@yuuvis/client-framework 0.8.0 → 0.9.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.
Files changed (72) hide show
  1. package/actions/lib/actions/delete-action/delete-action.d.ts +1 -0
  2. package/common/index.d.ts +1 -0
  3. package/common/lib/services/error-messages/error-messages.service.d.ts +7 -0
  4. package/common/lib/services/index.d.ts +1 -0
  5. package/esm2022/actions/lib/actions/delete-action/delete-action.mjs +4 -10
  6. package/esm2022/common/index.mjs +2 -1
  7. package/esm2022/common/lib/directives/drag-select.directive.mjs +2 -2
  8. package/esm2022/common/lib/services/error-messages/error-messages.service.mjs +68 -0
  9. package/esm2022/common/lib/services/index.mjs +2 -0
  10. package/esm2022/forms/index.mjs +9 -8
  11. package/esm2022/forms/lib/elements/data-grid/data-grid/data-grid.component.mjs +172 -0
  12. package/esm2022/forms/lib/elements/data-grid/edit-table-data/edit-data.component.mjs +95 -0
  13. package/esm2022/forms/lib/elements/data-grid/model/data-grid.interface.mjs +9 -0
  14. package/esm2022/forms/lib/elements/index.mjs +11 -0
  15. package/esm2022/forms/lib/elements/organization/organization.component.mjs +47 -29
  16. package/esm2022/icons/lib/icons.mjs +3 -2
  17. package/esm2022/metadata-form/lib/metadata-default-templates/metadata-default-templates.component.mjs +5 -4
  18. package/esm2022/metadata-form/lib/metadata-form-element-registry.service.mjs +1 -1
  19. package/esm2022/metadata-form/lib/metadata-form-field/metadata-form-field.component.mjs +7 -52
  20. package/esm2022/object-details/index.mjs +2 -1
  21. package/esm2022/object-details/lib/object-metadata/object-metadata.component.mjs +5 -4
  22. package/esm2022/object-details/lib/retention-badge/retention-badge.component.mjs +27 -0
  23. package/esm2022/object-form/index.mjs +1 -1
  24. package/esm2022/object-form/lib/object-form.component.mjs +2 -1
  25. package/esm2022/object-form/lib/object-form.service.mjs +5 -2
  26. package/esm2022/object-summary/lib/object-summary/object-summary.component.mjs +15 -13
  27. package/esm2022/pagination/lib/pagination.component.mjs +4 -6
  28. package/esm2022/sequence-list/index.mjs +1 -3
  29. package/esm2022/sequence-list/lib/sequence-list.component.mjs +11 -16
  30. package/esm2022/sequence-list/lib/sequence-list.interface.mjs +1 -1
  31. package/esm2022/tile-list/lib/tile/tile.component.mjs +3 -3
  32. package/esm2022/tile-list/lib/tile-extension/extensions/email.extension.mjs +1 -1
  33. package/fesm2022/yuuvis-client-framework-actions.mjs +3 -9
  34. package/fesm2022/yuuvis-client-framework-actions.mjs.map +1 -1
  35. package/fesm2022/yuuvis-client-framework-common.mjs +69 -4
  36. package/fesm2022/yuuvis-client-framework-common.mjs.map +1 -1
  37. package/fesm2022/yuuvis-client-framework-forms.mjs +1194 -909
  38. package/fesm2022/yuuvis-client-framework-forms.mjs.map +1 -1
  39. package/fesm2022/yuuvis-client-framework-icons.mjs +2 -1
  40. package/fesm2022/yuuvis-client-framework-icons.mjs.map +1 -1
  41. package/fesm2022/yuuvis-client-framework-metadata-form.mjs +10 -55
  42. package/fesm2022/yuuvis-client-framework-metadata-form.mjs.map +1 -1
  43. package/fesm2022/yuuvis-client-framework-object-details.mjs +26 -5
  44. package/fesm2022/yuuvis-client-framework-object-details.mjs.map +1 -1
  45. package/fesm2022/yuuvis-client-framework-object-form.mjs +5 -1
  46. package/fesm2022/yuuvis-client-framework-object-form.mjs.map +1 -1
  47. package/fesm2022/yuuvis-client-framework-object-summary.mjs +14 -12
  48. package/fesm2022/yuuvis-client-framework-object-summary.mjs.map +1 -1
  49. package/fesm2022/yuuvis-client-framework-pagination.mjs +3 -5
  50. package/fesm2022/yuuvis-client-framework-pagination.mjs.map +1 -1
  51. package/fesm2022/yuuvis-client-framework-sequence-list.mjs +17 -296
  52. package/fesm2022/yuuvis-client-framework-sequence-list.mjs.map +1 -1
  53. package/fesm2022/yuuvis-client-framework-tile-list.mjs +2 -2
  54. package/fesm2022/yuuvis-client-framework-tile-list.mjs.map +1 -1
  55. package/forms/index.d.ts +1 -7
  56. package/forms/lib/elements/data-grid/data-grid/data-grid.component.d.ts +38 -0
  57. package/forms/lib/elements/data-grid/edit-table-data/edit-data.component.d.ts +21 -0
  58. package/forms/lib/elements/data-grid/model/data-grid.interface.d.ts +14 -0
  59. package/forms/lib/elements/index.d.ts +10 -0
  60. package/forms/lib/elements/organization/organization.component.d.ts +13 -4
  61. package/metadata-form/lib/metadata-form-field/metadata-form-field.component.d.ts +0 -1
  62. package/object-details/index.d.ts +1 -0
  63. package/object-details/lib/retention-badge/retention-badge.component.d.ts +12 -0
  64. package/package.json +10 -10
  65. package/sequence-list/index.d.ts +0 -2
  66. package/sequence-list/lib/sequence-list.component.d.ts +2 -2
  67. package/sequence-list/lib/sequence-list.interface.d.ts +5 -4
  68. package/styles/client-framework.scss +55 -18
  69. package/esm2022/sequence-list/lib/sequence-list-template-manage/sequence-list-template-manage.component.mjs +0 -183
  70. package/esm2022/sequence-list/lib/sequence-list-templates/sequence-list-templates.component.mjs +0 -114
  71. package/sequence-list/lib/sequence-list-template-manage/sequence-list-template-manage.component.d.ts +0 -52
  72. package/sequence-list/lib/sequence-list-templates/sequence-list-templates.component.d.ts +0 -36
@@ -1 +1 @@
1
- {"version":3,"file":"yuuvis-client-framework-tile-list.mjs","sources":["../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-extension/tile-extension.service.ts","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-extension/directive/tile-extension.directive.ts","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile/tile.component.ts","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile/tile.component.html","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-list/tile-list.component.ts","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-list/tile-list.component.html","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-config/action-select/action-select.component.ts","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-config/action-select/action-select.component.html","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-config/icon-select/icon-select.component.ts","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-config/icon-select/icon-select.component.html","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-config/property-select/property-select.component.ts","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-config/property-select/property-select.component.html","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-config/tile-config-tile/tile-config-tile.component.ts","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-config/tile-config-tile/tile-config-tile.component.html","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-config/tile-config.component.ts","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-config/tile-config.component.html","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-config/tile-config-trigger/tile-config-trigger.component.ts","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-config/tile-config-trigger/tile-config-trigger.component.html","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-extension/extensions/email.extension.ts","../../../../../libs/yuuvis/client-framework/tile-list/src/yuuvis-client-framework-tile-list.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { TileExtension } from '@yuuvis/client-shell-core';\nimport { EmailTileExtensionComponent } from './extensions/email.extension';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TileExtensionService {\n private _extensions: Record<string, TileExtension> = {};\n\n constructor() {\n // this.registerTileExtension({\n // // typeId: 'appSystemmail:email',\n // typeId: 'system:document',\n // cmp: EmailTileExtensionComponent\n // });\n }\n\n registerTileExtension(ext: TileExtension) {\n this._extensions[ext.typeId] = ext;\n }\n\n hasTileExtension(objectTypeId: string): boolean {\n return !!this._extensions[objectTypeId];\n }\n\n /**\n * Get tile extensions for a certain type\n * @param typeId ID of the type to fetch extesion for (objectTypeID or secondaryObjectTypeID)\n * @returns\n */\n getTileExtension(typeId: string): TileExtension | undefined {\n return this._extensions[typeId];\n }\n}\n","import { ComponentRef, Directive, Input, ViewContainerRef, effect, inject, input, signal } from '@angular/core';\nimport { TileExtensionService } from '../tile-extension.service';\nimport { TileExtension, TileExtensionComponent, TileExtensionDirectiveInput } from '@yuuvis/client-shell-core';\n\n@Directive({\n selector: '[yuvTileExtension]',\n standalone: true\n})\nexport class TileExtensionDirective {\n readonly #tileExtensioService = inject(TileExtensionService);\n readonly #containerRef = inject(ViewContainerRef);\n\n component!: ComponentRef<TileExtensionComponent>;\n\n yuvTileExtension = input.required<TileExtensionDirectiveInput>();\n\n #yuvTileExtensionEffect = effect(() => {\n const tile = this.yuvTileExtension();\n if (tile.typeId) {\n const ext = this.#tileExtensioService.getTileExtension(tile.typeId);\n if (ext) this._render(ext, tile.data);\n }\n });\n\n private _render(ext: TileExtension, data?: any) {\n if (this.component) this.#containerRef.clear();\n this.component = this.#containerRef.createComponent(ext.cmp);\n this.component.setInput('data', data);\n }\n}\n","import { Component, ElementRef, computed, inject, input } from '@angular/core';\nimport { DmsObject, DmsService, ObjectConfigAction } from '@yuuvis/client-core';\nimport { Action, ActionContext, ActionsService } from '@yuuvis/client-framework/actions';\nimport { RendererDirective } from '@yuuvis/client-framework/renderer';\nimport { YvcIconModule } from '@yuuvis/components/icon';\nimport { switchMap } from 'rxjs';\nimport { TileExtensionDirective } from '../tile-extension/directive/tile-extension.directive';\nimport { TileData } from '../tile-list/tile-list.interface';\n\n@Component({\n selector: 'yuv-tile',\n standalone: true,\n imports: [YvcIconModule, RendererDirective, TileExtensionDirective],\n templateUrl: './tile.component.html',\n styleUrl: './tile.component.scss'\n})\nexport class TileComponent {\n elRef = inject(ElementRef);\n private dmsService = inject(DmsService);\n private actionService = inject(ActionsService);\n\n tile = input.required<TileData>();\n actionContext = input<ActionContext>();\n\n actions = computed<Action[]>(() => {\n const actionsList: Action[] = [];\n if (this.tile().actions?.length) {\n this.tile().actions?.forEach((a: ObjectConfigAction) => {\n const aa: Action | undefined = this.actionService.getActionById(a.id, this.actionContext());\n if (aa) actionsList.push(aa);\n });\n }\n return actionsList;\n });\n rendererInputs = computed(() => {\n return {\n icon: this.tile().icon,\n title: this.tile().title,\n description: this.tile().description,\n meta: this.tile().meta,\n aside: this.tile().aside\n };\n });\n\n executeAction(a: Action, evt: Event) {\n evt.preventDefault();\n evt.stopPropagation();\n\n this.dmsService\n .getDmsObject(this.tile().id)\n .pipe(switchMap((o: DmsObject) => a.run([o])))\n .subscribe();\n }\n}\n","<div data-slot=\"icon\">\n <ng-container *yuvRenderer=\"rendererInputs().icon\"></ng-container>\n</div>\n\n<div class=\"slots\">\n <div data-slot=\"title\">\n <ng-container *yuvRenderer=\"rendererInputs().title\"></ng-container>\n </div>\n \n <div data-slot=\"actions\">\n @for (a of actions(); track a.id) {\n <button [title]=\"a.label\" (click)=\"executeAction(a, $event)\"><yvc-icon [svg]=\"a.icon\"></yvc-icon></button>\n }\n </div>\n \n <div data-slot=\"description\">\n <ng-container *yuvRenderer=\"rendererInputs().description\"></ng-container>\n </div>\n \n <div data-slot=\"aside\">\n <ng-container *yuvRenderer=\"rendererInputs().aside\"></ng-container>\n </div>\n \n <div data-slot=\"meta\">\n <ng-container *yuvRenderer=\"rendererInputs().meta\"></ng-container>\n </div>\n \n <div data-slot=\"badges\">{{ tile().badges }}</div>\n \n <div class=\"extension\">\n <ng-container *yuvTileExtension=\"{ typeId: tile().objectTypeId, data: tile().instanceData }\"></ng-container>\n </div>\n</div>\n","import { NgClass, NgStyle } from '@angular/common';\nimport {\n Component,\n DestroyRef,\n ElementRef,\n HostBinding,\n HostListener,\n OnDestroy,\n OnInit,\n computed,\n contentChild,\n effect,\n inject,\n input,\n output,\n signal,\n untracked,\n viewChildren\n} from '@angular/core';\nimport {\n BaseObjectTypeField,\n DeviceService,\n DmsObject,\n EventService,\n ObjectConfigRecord,\n ObjectConfigService,\n ResolvedObjectConfigItem,\n SearchQuery,\n SearchResult,\n SearchService,\n SystemService,\n TranslateModule,\n YuvEvent,\n YuvEventType\n} from '@yuuvis/client-core';\nimport { ClickDoubleDirective, DragSelectDirective, DragSelectItemDirective } from '@yuuvis/client-framework/common';\nimport { TileComponent } from '../tile/tile.component';\n\nimport { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { YUV_ICONS } from '@yuuvis/client-framework/icons';\nimport { Pagination, PaginationComponent } from '@yuuvis/client-framework/pagination';\nimport { ObjectFlavor } from '@yuuvis/client-shell-core';\nimport { YvcIconModule } from '@yuuvis/components/icon';\nimport { YvcOverlayModule } from '@yuuvis/components/overlay';\nimport { TileData, TileListConfigOptions, TileListHighlight } from './tile-list.interface';\nimport { finalize, Subscription } from 'rxjs';\nimport { ListItemDirective } from '@yuuvis/client-framework/list';\n\n/**\n * List that renders the result of a search query as object config based tiles. It also contains a component to\n * set up that configuration.\n *\n * ## Paging\n * If the search result contains more items than the page size, the list will show a\n * pagination control to navigate inbetween the pages.\n *\n * ## Staggered animation\n * Adding a class of `staggered` to the `yuv-tile-list` component will animate\n * the tiles in a staggered way (only if the user has not set up the OS to not\n * play animation).\n */\n@Component({\n selector: 'yuv-tile-list',\n standalone: true,\n providers: [],\n imports: [\n NgClass,\n NgStyle,\n TileComponent,\n TranslateModule,\n ReactiveFormsModule,\n YvcOverlayModule,\n PaginationComponent,\n YvcIconModule,\n ListItemDirective,\n ClickDoubleDirective,\n DragSelectDirective,\n DragSelectItemDirective\n ],\n templateUrl: './tile-list.component.html',\n styleUrl: './tile-list.component.scss',\n host: {\n tabindex: '0',\n role: 'listbox'\n }\n})\nexport class TileListComponent implements OnInit, OnDestroy {\n #objectConfigService = inject(ObjectConfigService);\n #system = inject(SystemService);\n #searchService = inject(SearchService);\n #destroyRef = inject(DestroyRef);\n #device = inject(DeviceService);\n #elRef = inject(ElementRef);\n #events = inject(EventService);\n\n emptyContent = contentChild<ElementRef>('empty');\n isTouchDevice = this.#device.isTouchEnabled;\n\n tiles = viewChildren(TileComponent);\n\n listItems = viewChildren(ListItemDirective);\n #listItemsEffect = effect(() => {\n if (this._keyManager) this._keyManager.destroy();\n this._keyManager = new ActiveDescendantKeyManager(this.listItems() || []).withWrap();\n });\n\n searchResultSubscription = new Subscription();\n\n #openContextMenu = signal<{ event: MouseEvent } | null>(null);\n #contextFlag = signal(false);\n\n @HostListener('contextmenu', ['$event'])\n onContextMenu(event: MouseEvent | PointerEvent) {\n event.preventDefault();\n if (this.#contextFlag()) {\n this.#contextFlag.set(false);\n return;\n }\n\n setTimeout(() => {\n this.ctxMenu.emit({ event, selection: this.selection() });\n }, 200);\n }\n\n @HostListener('mousedown', ['$event'])\n onMouseDown(event: MouseEvent) {\n // TODO: Clicking on the scrollbar also resets selection ... need to find a different way\n // (event.target as HTMLElement).parentElement?.tagName === 'YUV-TILE-LIST' && this.#select(-1);\n if (event.button === 2) {\n this.#contextFlag.set(true);\n this.onContextMenu(event);\n }\n }\n\n @HostListener('keydown.control.c', ['$event'])\n onCopy(event: KeyboardEvent) {\n event.preventDefault();\n if (this._selection.length) this.copy.emit(this._selectionToTileData());\n }\n @HostListener('keydown.control.x', ['$event'])\n onCut(event: KeyboardEvent) {\n event.preventDefault();\n if (this._selection.length) this.cut.emit(this._selectionToTileData());\n }\n @HostListener('keydown', ['$event'])\n onKeydown(event: KeyboardEvent) {\n switch (event.code) {\n case 'Escape': {\n this.clearSelection();\n break;\n }\n case 'Enter': {\n // same as double click\n const aii: number = this._keyManager.activeItemIndex !== null ? this._keyManager.activeItemIndex : -1;\n if (aii >= 0) {\n this.itemDblClick.emit(this.items[aii]);\n }\n break;\n }\n case 'Space': {\n // same as single click\n const aii: number = this._keyManager.activeItemIndex !== null ? this._keyManager.activeItemIndex : -1;\n if (aii >= 0) {\n this.select(this.items[aii], event);\n }\n break;\n }\n default: {\n this._keyManager?.onKeydown(event);\n }\n }\n }\n\n private _keyManager!: ActiveDescendantKeyManager<ListItemDirective>;\n\n _busy = signal(false);\n #_busyEffect = effect(() => {\n this.busy.emit(this._busy());\n });\n private oc?: ObjectConfigRecord;\n // state of pagination\n @HostBinding('class.pagination') pagination?: Pagination;\n private _selection: number[] = [];\n private _lastSelection?: number;\n\n selectedTile = signal<TileData[]>([]);\n empytIcon = signal<string>(YUV_ICONS.trash);\n /**\n * The ID of the selected list item\n */\n selection = signal<string[]>([]);\n /**\n * Tile configurations are stored globally for all apps. If you want a\n * separate config for your app/component you can specify a bucket. A bucket\n * is basically an ID where your custom tile config will be stored and\n * retrieved. Buckets should be unique so be sure to use a unique namespace.\n */\n bucket = input<string>();\n /**\n * Sets up the ability to select multile tiles\n */\n multiselect = input<boolean>(false);\n\n options = input<TileListConfigOptions | undefined>(undefined);\n\n flavor = input<ObjectFlavor>();\n\n flavorEffect = effect(() => {\n const f = this.flavor();\n if (f) this.applyFlavor(f);\n });\n appliedFlavor?: ObjectFlavor;\n /**\n * The search query to be executed\n */\n query = input<SearchQuery | null>();\n\n // Items to be preselected (TODO: remove after refactoring ???)\n preselect = input<string[]>();\n\n highlights = input<TileListHighlight[] | null>([]);\n highlightStyles = computed<Record<string, Record<string, unknown>>>(() => {\n const x: Record<string, Record<string, unknown>> = {};\n (this.highlights() || []).forEach((highlight) => {\n highlight.ids.forEach((id) => {\n if (!x[id]) x[id] = {};\n x[id] = { ...x[id], ...highlight.cssStyles };\n });\n });\n return x;\n });\n\n /**\n * Emitted when a list item has been selected\n */\n itemSelect = output<TileData>();\n copy = output<TileData[]>();\n cut = output<TileData[]>();\n busy = output<boolean>();\n queryResult = output<{ totalCount: number }>();\n\n /**\n * Emitted when selected items changed. If 'multiselect' input is set to true, this will\n * emit the whole selection, while 'itemSelect' will only emit the item that currently\n * has bee added to the selection.\n */\n selectionChange = output<TileData[]>();\n\n /**\n * Emitted when a list item has been doubleclicked\n */\n itemDblClick = output<TileData>();\n\n ctxMenu = output<{ event: MouseEvent | PointerEvent; selection: any }>();\n\n // the items rendered in the list\n items: TileData[] = [];\n private _rawResult?: SearchResult;\n searchExecuted = false;\n\n #query?: SearchQuery | null;\n #executeQueryEffect = effect(() => {\n // execute the query each time it changes\n this.#query = this.query();\n if (this.#query && this.oc)\n untracked(() => {\n this._executeQuery(this.#query || undefined);\n this.empytIcon.set(YUV_ICONS.refresh);\n });\n });\n\n constructor() {\n this.#events\n .on(YuvEventType.DMS_OBJECT_UPDATED)\n .pipe(takeUntilDestroyed())\n .subscribe((e: YuvEvent) => {\n const dmsObject = e.data as DmsObject;\n // check if the updated object is part of the list\n this.items.findIndex((item) => item.id === dmsObject.id) >= 0 && this.updateTileList([dmsObject]);\n });\n }\n\n contextMenuHandler(event: MouseEvent, index: number) {\n if (!coerceBooleanProperty(this.tiles()[index].elRef.nativeElement.ariaSelected)) {\n this._selectByIndex(index, event);\n }\n }\n\n select(i: TileData, evt: MouseEvent | KeyboardEvent) {\n const idx = this.items.findIndex((item) => item.id === i.id);\n this._selectByIndex(idx, evt);\n }\n\n onDragSelectChange(sel: number[]) {\n if (this._keyManager.activeItemIndex !== -1) this._keyManager.setActiveItem(-1);\n\n this._selection = sel;\n this._selection.sort();\n this.listItems().forEach((item: ListItemDirective, i: number) => (item.selected = this._selection.includes(i)));\n }\n\n onDragSelect(sel: number[]) {\n this.#elRef.nativeElement.focus();\n this._selection = sel;\n this._keyManager.setActiveItem(sel[0] || 0);\n const tiles = this._selectionToTileData();\n this.selectionChange.emit(tiles);\n }\n\n private _selectByIndex(idx: number, evt?: MouseEvent | KeyboardEvent) {\n this._keyManager.setActiveItem(idx);\n this.#select(idx, evt?.shiftKey, evt?.ctrlKey);\n }\n\n refresh() {\n if (this.#query) {\n if (this.pagination) {\n this.goToPage(this.pagination.page);\n } else this._executeQuery(this.query() || undefined);\n }\n }\n\n applyFlavor(flavor: ObjectFlavor) {\n this.appliedFlavor = this.appliedFlavor?.id === flavor.id ? undefined : flavor;\n if (this._rawResult) this.items = this._mapSearchResult(this._rawResult);\n }\n\n clearSelection(silent = false) {\n if (this._selection.length) {\n this._selection = [];\n this._keyManager.setActiveItem(-1);\n this.listItems().forEach((item: ListItemDirective, i: number) => (item.selected = false));\n if (!silent) this.selectionChange.emit([]);\n }\n }\n\n selectNext() {\n if (this._lastSelection) {\n let i = this._lastSelection + 1;\n if (i > this.items.length) i = 0;\n this.#select(i);\n }\n }\n selectPrev() {\n if (this._lastSelection) {\n let i = this._lastSelection - 1;\n if (i < 0) i = this.items.length - 1;\n this.#select(this._lastSelection - 1);\n }\n }\n\n goToPage(page: number) {\n if (!this.#query) return;\n this._busy.set(true);\n this.#searchService\n .getPage(this.#query, page)\n .pipe(finalize(() => this._busy.set(false)))\n .subscribe({\n next: (res: SearchResult) => {\n this.#setupPagination(res);\n this.items = this._mapSearchResult(res);\n },\n error: (err) => {\n // TODO: how should errors be handles in case hat loading pages fail\n }\n });\n }\n\n #select(index: number, shiftKey = false, ctrlKey = false) {\n this.#elRef.nativeElement.focus();\n if (index === -1) this._selection = [];\n else {\n if (this.multiselect()) {\n this._selection = this._selection.filter((i) => i !== index);\n if (ctrlKey) {\n // if ctrl key add to selection\n this._selection.push(index);\n } else if (shiftKey) {\n // add range\n if (this._lastSelection !== undefined) {\n const startIndex = this._lastSelection < index ? this._lastSelection : index;\n const endIndex = this._lastSelection > index ? this._lastSelection : index;\n for (let i = startIndex; i <= endIndex; i++) {\n this._selection.push(i);\n }\n } else {\n this._selection = [index];\n }\n } else {\n this._selection = [index];\n }\n } else this._selection = [index];\n this._selection = [...new Set(this._selection)];\n }\n this._lastSelection = this._selection.length === 0 ? undefined : index;\n this._selection.sort();\n\n this.listItems().forEach((item: ListItemDirective, i: number) => (item.selected = this._selection.includes(i)));\n const tiles = this._selectionToTileData();\n this.selectionChange.emit(tiles);\n tiles.length === 1 && this.itemSelect.emit(tiles[0]);\n this.selectedTile.set(this._selection.map((idx) => this.items[idx]));\n }\n\n private _selectionToTileData(): TileData[] {\n return this._selection.map((idx) => this.items[idx]);\n }\n\n private _executeQuery(q: SearchQuery | undefined) {\n if (q && this.#system.system) {\n this.searchExecuted = false;\n // reset items to avoid old data being shown while new stuff is loaded\n this.items = [];\n // q.fields = Object.keys(this.#system.system.allFields);\n q.fields = undefined;\n this._busy.set(true);\n this.searchResultSubscription = this.#searchService\n .search(q)\n .pipe(finalize(() => this._busy.set(false)))\n .subscribe({\n next: (res: SearchResult) => {\n this.#setupPagination(res);\n this.items = this._mapSearchResult(res);\n this.queryResult.emit({ totalCount: res.items.length });\n\n const preselect = this.preselect();\n if (preselect) {\n preselect.forEach((id) => {\n const idx = this.items.findIndex((item) => item.id === id);\n if (idx >= 0) this._selectByIndex(idx);\n });\n }\n },\n error: (err) => console.error(err)\n });\n }\n }\n\n #setupPagination(searchResult: SearchResult) {\n this.pagination = undefined;\n if (this.#query && searchResult.totalNumItems > (this.#query.size || SearchService.DEFAULT_QUERY_SIZE)) {\n this.pagination = {\n total: searchResult.totalNumItems,\n pages: Math.ceil(searchResult.totalNumItems / (this.#query?.size || SearchService.DEFAULT_QUERY_SIZE)),\n page: (!this.#query?.from ? 0 : this.#query.from / (this.#query?.size || SearchService.DEFAULT_QUERY_SIZE)) + 1\n };\n }\n }\n\n #mapToTileData(objects: DmsObject[]): TileData[] {\n return objects.map((dmsObject) => {\n const sots = dmsObject.sots || [];\n\n let oc = this.oc![dmsObject.objectTypeId];\n\n // check if result oitem matches virtual config type\n const cfgTypes = this.options()?.configTypes || [];\n\n cfgTypes.forEach((cft) => {\n const matchesType = !cft.objectType || cft.objectType === dmsObject.objectTypeId;\n const matchesSOTs = !cft.sots || !cft.sots.length || cft.sots.every((sot) => sots.includes(sot));\n\n if (matchesType && matchesSOTs) oc = this.oc![cft.id];\n });\n\n // only apply a flavor if the object has that SOT\n const ownAppliedFlavor = this.appliedFlavor && sots.includes(this.appliedFlavor.sot) && this.oc![this.appliedFlavor.sot];\n if (ownAppliedFlavor) {\n oc = this.oc![this.appliedFlavor!.id];\n }\n\n if (!oc) oc = this.#objectConfigService.getDefaultConfig(dmsObject.objectTypeId);\n\n const tli: TileData = {\n objectTypeId: dmsObject.objectTypeId,\n id: dmsObject.id,\n actions: oc.actions,\n badges: oc.badges,\n instanceData: dmsObject.data,\n dmsObject,\n title: oc.title ? this.#getResolvedObjectConfigItem(oc.title.propertyName, dmsObject.data) : { propertyName: '', value: '' }\n };\n\n tli.icon = oc.icon\n ? {\n rendererType: 'icon',\n propertyName: 'custom',\n value: oc.icon.svg\n }\n : {\n rendererType: 'icon',\n propertyName: BaseObjectTypeField.OBJECT_TYPE_ID,\n value: ownAppliedFlavor && this.appliedFlavor ? this.appliedFlavor.sot : dmsObject.objectTypeId\n };\n if (oc.description) tli.description = this.#getResolvedObjectConfigItem(oc.description.propertyName, dmsObject.data);\n if (oc.meta) tli.meta = this.#getResolvedObjectConfigItem(oc.meta.propertyName, dmsObject.data);\n if (oc.aside) tli.aside = this.#getResolvedObjectConfigItem(oc.aside.propertyName, dmsObject.data);\n\n return tli;\n });\n }\n\n private _mapSearchResult(res: SearchResult): TileData[] {\n this.searchExecuted = true;\n this._rawResult = res;\n return this.oc ? this.#mapToTileData(res.items.map((i) => new DmsObject(i))) : [];\n }\n\n #getResolvedObjectConfigItem(propertyName: string, instanceData: Record<string, unknown>): ResolvedObjectConfigItem {\n const item: ResolvedObjectConfigItem = {\n propertyName: propertyName,\n value: instanceData[propertyName]\n };\n // Meta data are considered properties that start with the property name followed by an underscore.\n // Organization fields for example have an additional property 'xyz_title' that contains the resolved\n // name of a user while the value itself is the users ID.\n const metaData = Object.keys(instanceData)\n .filter((key) => key.startsWith(propertyName + '_'))\n .map((key) => ({ [key.substring(key.indexOf('_') + 1)]: instanceData[key] }));\n\n // If there are meta data properties, they'll be merged into a Record where the\n // key is the property name without the underscore and the actual properties name.\n // So { 'xyz_title': 'John Doe' } will be merged into { title: 'John Doe' }\n if (metaData.length) {\n const meta = metaData.reduce((acc, cur) => ({ ...acc, ...cur }), {});\n item.meta = meta;\n }\n\n return item;\n }\n\n updateTileList(listItems: DmsObject[]) {\n listItems.forEach((item) => {\n const idx = this.items.findIndex((listItem) => listItem.id === item.id);\n if (idx >= 0 && this.oc) {\n const mappedTileData = this.#mapToTileData([item]);\n this.items[idx] = mappedTileData[0];\n }\n });\n }\n\n ngOnInit(): void {\n this.#objectConfigService\n .getObjectConfigs$(this.bucket() || '', true)\n .pipe(takeUntilDestroyed(this.#destroyRef))\n .subscribe({\n next: (res: ObjectConfigRecord) => {\n this.oc = res;\n const q = this.query();\n q && this._executeQuery(q);\n }\n });\n }\n\n ngOnDestroy(): void {\n this._keyManager?.destroy();\n this.searchResultSubscription.unsubscribe();\n }\n}\n","<div\n class=\"tiles\"\n [yuvDragSelect]=\"{ disabled: !this.multiselect() || isTouchDevice }\"\n (dragSelectChange)=\"onDragSelectChange($event)\"\n (dragSelect)=\"onDragSelect($event)\"\n>\n @for (i of items; track i.id) {\n <yuv-tile\n yuvDragSelectItem\n yuvListItem\n [style.--i]=\"$index\"\n [attr.aria-selected]=\"selection().includes(i.id)\"\n (click.single)=\"select(i, $event)\"\n (click.double)=\"itemDblClick.emit(i)\"\n [ngClass]=\"{ selected: selection().includes(i.id), last: $last }\"\n [actionContext]=\"options()?.actionContext\"\n [tile]=\"i\"\n [ngStyle]=\"highlightStyles()[i.id]\"\n (contextmenu)=\"contextMenuHandler($event, $index)\"\n ></yuv-tile>\n } @empty {\n <div class=\"empyt-list\">\n @if (searchExecuted && emptyContent()) {\n <ng-content></ng-content>\n }\n </div>\n }\n <div class=\"offset\" (click)=\"clearSelection()\"></div>\n</div>\n@if (pagination) {\n <yuv-pagination [pagination]=\"pagination\" (pageChange)=\"goToPage($event)\"></yuv-pagination>\n}\n","import { NgClass } from '@angular/common';\nimport { Component, Signal, computed, inject, input, output } from '@angular/core';\nimport { VirtualObjectType } from '@yuuvis/client-core';\nimport { Action, ActionsService } from '@yuuvis/client-framework/actions';\nimport { YvcIconModule } from '@yuuvis/components/icon';\n\n@Component({\n selector: 'yuv-tile-action-select',\n standalone: true,\n imports: [NgClass, YvcIconModule],\n templateUrl: './action-select.component.html',\n styleUrl: './action-select.component.scss'\n})\nexport class ActionSelectComponent {\n private actionService = inject(ActionsService);\n\n objectType = input.required<VirtualObjectType>();\n actions: Signal<Action[]> = computed<Action[]>(() => (this.objectType() ? this.actionService.getActionsForType(this.objectType().id) : []));\n\n selectedActionIds = input<string[]>([]);\n actionSelect = output<Action>();\n}\n","<div class=\"actions\">\n @for (a of actions(); track a.id) {\n <button [ngClass]=\"{ selected: selectedActionIds().includes(a.id) }\" (click)=\"actionSelect.emit(a)\">\n <yvc-icon [svg]=\"a.icon!\"></yvc-icon>{{ a.label }}\n </button>\n }\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, input, output } from '@angular/core';\nimport { TranslateModule, VirtualObjectType } from '@yuuvis/client-core';\n\n@Component({\n selector: 'yuv-icon-select',\n standalone: true,\n imports: [CommonModule, TranslateModule],\n templateUrl: './icon-select.component.html',\n styleUrl: './icon-select.component.scss'\n})\nexport class IconSelectComponent {\n objectType = input<VirtualObjectType>();\n iconSelect = output<string | null>();\n\n async createIcon(inputEl: HTMLInputElement) {\n const file: File | undefined = inputEl.files ? inputEl.files[0] : undefined;\n if (file) {\n const text = await file.text();\n this.#emit(text);\n } else this.#emit(null);\n }\n\n reset() {\n this.#emit(null);\n }\n\n #emit(data: string | null) {\n this.iconSelect.emit(data);\n }\n}\n","<input style=\"display: none\" #fileInput type=\"file\" accept=\".svg\" (change)=\"createIcon(fileInput)\" />\n\n<button class=\"primary\" (click)=\"fileInput.click()\">{{ 'yuv.tile-config.icon-select.pick' | translate }}</button>\n<button class=\"secondary\" (click)=\"reset()\">{{ 'yuv.tile-config.icon-select.reset' | translate }}</button>\n","import { NgClass } from '@angular/common';\nimport { Component, computed, effect, inject, input, output, signal, untracked } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n BaseObjectTypeField,\n ContentStreamField,\n ObjectConfigProperty,\n ObjectTypeField,\n SecondaryObjectType,\n Sort,\n SystemService,\n TranslateModule,\n Utils,\n VirtualObjectType\n} from '@yuuvis/client-core';\nimport { ICONS, YvcIconModule } from '@yuuvis/components/icon';\n\ntype TypeProperty = { label: string; baseProperty?: boolean } & Partial<ObjectTypeField>;\n\n@Component({\n selector: 'yuv-tile-property-select',\n standalone: true,\n imports: [NgClass, FormsModule, TranslateModule, YvcIconModule],\n templateUrl: './property-select.component.html',\n styleUrl: './property-select.component.scss'\n})\nexport class PropertySelectComponent {\n private system = inject(SystemService);\n\n // fields that should not be available to be placed in the slots\n readonly #excludeFields: string[] = [\n BaseObjectTypeField.PARENT_ID,\n BaseObjectTypeField.PARENT_OBJECT_TYPE_ID,\n BaseObjectTypeField.OBJECT_ID,\n BaseObjectTypeField.OBJECT_TYPE_ID,\n BaseObjectTypeField.BASE_TYPE_ID,\n BaseObjectTypeField.PARENT_VERSION_NUMBER,\n BaseObjectTypeField.SECONDARY_OBJECT_TYPE_IDS,\n BaseObjectTypeField.TAGS,\n BaseObjectTypeField.TENANT,\n BaseObjectTypeField.TRACE_ID,\n ContentStreamField.REPOSITORY_ID,\n ContentStreamField.DIGEST,\n ContentStreamField.ARCHIVE_PATH,\n ContentStreamField.ID,\n ContentStreamField.RANGE\n ];\n\n objectTypeFields: TypeProperty[] = [];\n\n clearIcon = ICONS.clear;\n\n query = signal<string | null>(null);\n\n objectType = input<VirtualObjectType>();\n filteredObjectTypeFields = computed<TypeProperty[]>(() => {\n return this.query() !== null\n ? this.objectTypeFields.filter((otf) => otf.label.toLowerCase().indexOf(this.query()?.toLocaleLowerCase() || '') !== -1)\n : this.getObjectTypeFields(this.objectType());\n });\n\n objectTypesEffect = effect(() => {\n untracked(() => this.getObjectTypeFields(this.objectType()));\n });\n\n selectedProperty = input<ObjectConfigProperty>();\n\n propertySelect = output<TypeProperty | undefined>();\n\n selectProperty(field: TypeProperty) {\n this.propertySelect.emit(field);\n }\n\n removeProperty(evt: MouseEvent | KeyboardEvent) {\n evt.stopPropagation();\n \n this.propertySelect.emit(undefined);\n }\n\n private getObjectTypeFields(type?: VirtualObjectType) {\n if (!type) return [];\n // load properties\n const otf: TypeProperty[] = [];\n if (type.sots && type.sots.length > 0) {\n type.sots.forEach((s: string) => {\n const sot: SecondaryObjectType | undefined = this.system.getSecondaryObjectType(s);\n if (sot)\n sot.fields.forEach((of) =>\n otf.push({\n id: of.id,\n label: this._getLabel(of)\n })\n );\n });\n }\n\n let objectTypeProperties: TypeProperty[] = [];\n if (type.objectType) {\n const ot = this.system.getObjectType(type.objectType);\n objectTypeProperties = (ot?.fields || []).map((otf) => ({ ...otf, label: this._getLabel(otf), baseProperty: true }));\n }\n\n this.objectTypeFields = [...objectTypeProperties, ...otf]\n .filter((f) => f.id && !this.#excludeFields.includes(f.id))\n // sort alphanummeric by label\n .sort(Utils.sortValues('label', Sort.ASC))\n // put base properties at the end\n .sort(Utils.sortValues('baseProperty', Sort.ASC));\n return this.objectTypeFields;\n }\n\n private _getLabel(otf: ObjectTypeField): string {\n return this.system.getLocalizedLabel(otf.id) || otf.id;\n }\n}\n","<!-- TODO: enable once filtering of properties makes sense -->\n<!-- <form class=\"filter\">\n <div class=\"filter-input\">\n <input type=\"text\" [placeholder]=\"'yuv.tile-config.property-select.filter.placeholder' | translate\" name=\"query\" [(ngModel)]=\"query\" />\n @if (query()) {\n <button class=\"icn\" (click)=\"query.set(null)\">\n <yvc-icon [svg]=\"clearIcon\"></yvc-icon>\n </button>\n }\n </div>\n</form> -->\n\n<ul class=\"properties\">\n @for (p of filteredObjectTypeFields(); track $index) {\n <li [ngClass]=\"{ baseProperty: p.baseProperty, selected: p.id === selectedProperty()?.propertyName }\" (click)=\"selectProperty(p)\">\n <div class=\"label\">{{ p.label }}</div>\n <button (click)=\"removeProperty($event)\"><yvc-icon [svg]=\"clearIcon\"></yvc-icon>\n </button>\n </li>\n }\n</ul>\n","import { Component, ElementRef, computed, inject, input, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ObjectConfig, ObjectConfigAction, ObjectConfigProperty, SystemService } from '@yuuvis/client-core';\nimport { YvcIconModule } from '@yuuvis/components/icon';\nimport { Action, ActionsService } from '@yuuvis/client-framework/actions';\nimport { ObjectTypeIconComponent } from '@yuuvis/client-framework/icons';\n\n/**\n * Component for setting up a tile config\n */\n@Component({\n selector: 'yuv-tile-config-tile',\n standalone: true,\n imports: [YvcIconModule, CommonModule, ObjectTypeIconComponent],\n templateUrl: './tile-config-tile.component.html',\n styleUrl: './tile-config-tile.component.scss'\n})\nexport class TileConfigTileComponent {\n private readonly actionService = inject(ActionsService);\n private readonly elRef = inject(ElementRef);\n #system = inject(SystemService);\n\n disableIconSlot = input<boolean>();\n disableBadgesSlot = input<boolean>();\n\n objectConfigInput = input.required<ObjectConfig>({ alias: 'objectConfig' });\n objectConfig = computed<ObjectConfig>(() => {\n const oc = this.objectConfigInput();\n if (oc) {\n [oc.title, oc.description, oc.meta, oc.aside].forEach((field: ObjectConfigProperty | undefined) => {\n if (field) {\n const label = this.#system.getLocalizedLabel(field.propertyName);\n field.label = label || field.label || field.propertyName;\n }\n });\n }\n return oc;\n });\n\n actions = computed<Action[]>(() => {\n const actionsList: Action[] = [];\n const ocActions = this.objectConfig();\n if (ocActions.actions?.length) {\n ocActions.actions?.forEach((a: ObjectConfigAction) => {\n const aa: Action | undefined = this.actionService.getActionById(a.id);\n if (aa) actionsList.push(aa);\n });\n }\n return actionsList;\n });\n\n slotSelect = output<string>();\n\n selectSlot(slot: string) {\n if(this.disableIconSlot() && slot === 'icon') return;\n this.slotSelect.emit(slot);\n\n // set active state\n (this.elRef.nativeElement as HTMLElement).querySelectorAll('[data-slot]').forEach((e) => {\n if (e.getAttribute('data-slot') === slot) e.classList.add('active');\n else e.classList.remove('active');\n });\n }\n}\n","@let oc = objectConfig();\n\n<div data-slot=\"icon\" [attr.disabled]=\"disableIconSlot()\" (click)=\"selectSlot('icon')\">\n @if (oc.icon) {\n <yvc-icon [svg]=\"oc.icon.svg\"></yvc-icon>\n } @else {\n <yuv-object-type-icon [objectTypeId]=\"oc.objectTypeId\"></yuv-object-type-icon>\n }\n</div>\n<div data-slot=\"title\" (click)=\"selectSlot('title')\">{{ oc.title?.label }}</div>\n<div data-slot=\"actions\" (click)=\"selectSlot('actions')\">\n @for (a of actions(); track a.id) {\n <button [title]=\"a.label\"><yvc-icon [svg]=\"a.icon\"></yvc-icon></button>\n }\n</div>\n<div data-slot=\"description\" (click)=\"selectSlot('description')\">{{ oc.description?.label }}</div>\n<div data-slot=\"aside\" (click)=\"selectSlot('aside')\">{{ oc.aside?.label }}</div>\n<div data-slot=\"meta\" (click)=\"selectSlot('meta')\">{{ oc.meta?.label }}</div>\n@if (!disableBadgesSlot()) {\n <div data-slot=\"badges\" (click)=\"selectSlot('badges')\">\n <!-- {{ tile().badges }} -->\n {{ oc.badges }}\n </div>\n}\n","import { NgClass } from '@angular/common';\nimport { Component, computed, inject, input, output, Signal } from '@angular/core';\nimport {\n GenericObjectType,\n ObjectConfig,\n ObjectConfigAction,\n ObjectConfigBadge,\n ObjectConfigIcon,\n ObjectConfigProperty,\n ObjectConfigService,\n ObjectTypeField,\n SystemService,\n TranslateModule,\n VirtualObjectType\n} from '@yuuvis/client-core';\nimport { Action } from '@yuuvis/client-framework/actions';\nimport { ObjectTypeIconComponent } from '@yuuvis/client-framework/icons';\nimport { ListComponent, ListItemDirective } from '@yuuvis/client-framework/list';\nimport { ObjectFlavor } from '@yuuvis/client-shell-core';\nimport { ICONS, YvcIconModule } from '@yuuvis/components/icon';\nimport { YvcSplitViewModule } from '@yuuvis/components/split-view';\nimport { ActionSelectComponent } from './action-select/action-select.component';\nimport { IconSelectComponent } from './icon-select/icon-select.component';\nimport { PropertySelectComponent } from './property-select/property-select.component';\nimport { TileConfigTileComponent } from './tile-config-tile/tile-config-tile.component';\n\n@Component({\n selector: 'yuv-tile-config',\n standalone: true,\n imports: [\n NgClass,\n YvcSplitViewModule,\n ObjectTypeIconComponent,\n TileConfigTileComponent,\n IconSelectComponent,\n PropertySelectComponent,\n ActionSelectComponent,\n YvcIconModule,\n TranslateModule,\n ListComponent,\n ListItemDirective\n ],\n templateUrl: './tile-config.component.html',\n styleUrls: ['./tile-config.component.scss']\n})\nexport class TileConfigComponent {\n #objectConfigService = inject(ObjectConfigService);\n #system = inject(SystemService);\n\n /**\n * Tile configurations are stored globally for all apps. If you want a\n * separate config for your app/component you can specify a bucket. A bucket\n * is basically an ID where your custom tile config will be stored and\n * retrieved. Buckets should be unique so be sure to use a unique namespace.\n */\n bucket = input<string | undefined>(undefined);\n bucketLabel = input<string | undefined>(undefined);\n\n configTypes = input<VirtualObjectType[] | undefined>(undefined);\n configFlavors = input<ObjectFlavor[]>([]);\n\n types: Signal<{ id: string; icon?: string; flavor?: boolean; data: ObjectFlavor | VirtualObjectType }[]> = computed(() => {\n const ct = this.configTypes() || [];\n const cf: VirtualObjectType[] = [];\n // TODO: enable when flavors are supported in tile config\n // const cf = this.configFlavors() || [];\n return [...ct.map((t) => ({ id: t.id, icon: t.icon, data: t })), ...cf.map((f) => ({ id: f.id, icon: f.icon, flavor: true, data: f }))];\n });\n\n save = output();\n cancel = output();\n\n selectedType?: VirtualObjectType;\n selectedTypeProperties: ObjectTypeField[] = [];\n\n private _emptyObjectConfig: ObjectConfig = {\n objectTypeId: '',\n title: { propertyName: '', label: '' },\n description: { propertyName: '', label: '' },\n meta: { propertyName: '', label: '' },\n aside: { propertyName: '', label: '' },\n actions: [],\n badges: []\n };\n\n objectConfig?: ObjectConfig;\n selectedSlot?: string;\n flavors: ObjectFlavor[] = [];\n\n icons = {\n clear: ICONS.clear\n };\n\n // getObjectFlavorEffect = effect(() => {\n // this.flavors = this.configFlavors();\n // });\n\n getConfigValue(p: string): ObjectConfigIcon | ObjectConfigProperty | ObjectConfigAction | ObjectConfigBadge | undefined {\n return this.objectConfig ? (this.objectConfig as any)[p] : undefined;\n }\n\n getConfigProperty(p: string): ObjectConfigProperty | undefined {\n return this.getConfigValue(p) as ObjectConfigProperty;\n }\n\n getSelectedActions(): string[] {\n return this.objectConfig?.actions ? this.objectConfig.actions.map((a) => a.id) : [];\n }\n\n slotSelect(item: string) {\n this.selectedSlot = item;\n }\n\n itemSelected(idx: number[]) {\n const t = this.types()[idx[0]];\n if (!t) return;\n if (t.flavor) this.#selectFlavor(t.data as ObjectFlavor);\n else this.#selectType(t.data as VirtualObjectType);\n }\n\n #selectFlavor(flavor: ObjectFlavor) {\n const t: GenericObjectType | undefined = this.#system.getObjectType(flavor.sot);\n if (t)\n this.#selectType({\n id: flavor.id,\n objectType: flavor.objectTypeID,\n sots: [flavor.sot]\n });\n }\n\n async #selectType(t: VirtualObjectType) {\n this.selectedType = t;\n\n // load tile config\n this.objectConfig = await this.#objectConfigService.getObjectConfig(t, this.bucket() || '');\n\n if (!this.objectConfig) {\n this.objectConfig = {\n ...this._emptyObjectConfig,\n objectTypeId: t.id\n };\n }\n }\n\n iconSelected(icon: string | null) {\n if (this.objectConfig) this.objectConfig.icon = icon ? { svg: icon } : undefined;\n }\n\n propertySelected(tileSlot: string, field?: Partial<ObjectTypeField>) {\n const p: any = {};\n p[tileSlot] = field\n ? {\n label: field.label,\n propertyName: field.id\n }\n : undefined;\n\n this.objectConfig = structuredClone({\n ...this.objectConfig,\n ...p\n });\n }\n\n actionSelected(action: Action) {\n if (this.objectConfig) {\n if (!this.objectConfig?.actions) this.objectConfig.actions = [];\n\n const idx = this.objectConfig.actions.findIndex((a) => a.id === action.id);\n if (idx !== -1) this.objectConfig.actions.splice(idx, 1);\n else this.objectConfig.actions.push({ id: action.id });\n this.objectConfig = structuredClone(this.objectConfig);\n }\n }\n\n saveConfig() {\n this._saveTileConfig();\n }\n\n private _saveTileConfig() {\n if (this.selectedType && this.objectConfig) {\n this.#objectConfigService.saveObjectConfig(this.selectedType, this.objectConfig, this.bucket()).subscribe((_) => this.save.emit());\n }\n }\n}\n","<header>\n <h1>{{ 'yuv.tile-config.title' | translate }}</h1>\n <div class=\"bucket\">{{ bucketLabel() }}</div>\n @if (cancel) {\n <button class=\"icon\" (click)=\"cancel.emit()\">\n <yvc-icon [svg]=\"icons.clear\"></yvc-icon>\n </button>\n }\n</header>\n\n<yvc-split-view [gutterSize]=\"1\" [layoutSettingsID]=\"'yuv.framework.tile-config.layout'\">\n <!-- list of types -->\n <ng-template yvcSplitArea [size]=\"30\">\n <div class=\"types\">\n <yuv-list (itemSelect)=\"itemSelected($event)\">\n @for (t of types() || []; track t.id) {\n <div yuvListItem>\n @if (t.icon) {\n <yvc-icon [svg]=\"t.icon\"></yvc-icon>\n } @else {\n <yuv-object-type-icon [objectTypeId]=\"t.id\"></yuv-object-type-icon>\n }\n {{ t.id | translate }}\n </div>\n }\n </yuv-list>\n </div>\n </ng-template>\n\n <!-- selected type details-->\n <ng-template yvcSplitArea [size]=\"70\">\n <div class=\"details\">\n @if (selectedType) {\n <header>{{ selectedType.id | translate }}</header>\n <div class=\"dummy-preview\">\n <yuv-tile-config-tile [disableIconSlot]=\"true\" [disableBadgesSlot]=\"true\" [objectConfig]=\"objectConfig!\" (slotSelect)=\"slotSelect($event)\"></yuv-tile-config-tile>\n </div>\n <main>\n @if (selectedSlot === 'icon') {\n <h2>{{ 'yuv.tile-config.slot.icon.headline' | translate }}</h2>\n <yuv-icon-select [objectType]=\"selectedType\" (iconSelect)=\"iconSelected($event)\"></yuv-icon-select>\n } @else if (selectedSlot === 'badges') {\n <div class=\"placeholder empty\">\n <p>Future feature: Select badges (like: is favorite, ratings, ...)</p>\n </div>\n } @else if (!selectedSlot) {\n } @else if (selectedSlot === 'actions') {\n <h2>{{ 'yuv.tile-config.slot.action.headline' | translate }}</h2>\n <yuv-tile-action-select\n [objectType]=\"selectedType\"\n [selectedActionIds]=\"getSelectedActions()\"\n (actionSelect)=\"actionSelected($event)\"\n ></yuv-tile-action-select>\n } @else {\n <h2>{{ 'yuv.tile-config.slot.property.headline' | translate }}</h2>\n <yuv-tile-property-select\n [objectType]=\"selectedType\"\n [selectedProperty]=\"getConfigProperty(selectedSlot)\"\n (propertySelect)=\"propertySelected(selectedSlot, $event)\"\n ></yuv-tile-property-select>\n }\n </main>\n <footer>\n <button class=\"primary\" (click)=\"saveConfig()\">{{ 'yuv.tile-config.button.save' | translate }}</button>\n </footer>\n } @else {\n <div class=\"placeholder empty\">\n <h2>{{ 'yuv.tile-config.details.empty.title' | translate }}</h2>\n <p>{{ 'yuv.tile-config.details.empty.description' | translate }}</p>\n </div>\n }\n </div>\n </ng-template>\n</yvc-split-view>\n","import { CommonModule } from '@angular/common';\nimport { Component, TemplateRef, inject, input, viewChild } from '@angular/core';\nimport { YUV_ICONS } from '@yuuvis/client-framework/icons';\nimport { YvcIconModule } from '@yuuvis/components/icon';\nimport { YvcOverlayConfig, YvcOverlayRef, YvcOverlayService } from '@yuuvis/components/overlay';\nimport { TileConfigComponent } from '../tile-config.component';\nimport { TileListConfigOptions } from '../../tile-list/tile-list.interface';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n selector: 'yuv-tile-config-trigger',\n standalone: true,\n imports: [CommonModule, TileConfigComponent, YvcIconModule, TranslateModule],\n templateUrl: './tile-config-trigger.component.html',\n styleUrl: './tile-config-trigger.component.scss'\n})\nexport class TileConfigTriggerComponent {\n private overlayService = inject(YvcOverlayService);\n\n tplTileConfig = viewChild.required<TemplateRef<any>>('tplTileConfig');\n\n private _oRef?: YvcOverlayRef;\n\n icon = input<string>(YUV_ICONS.settings);\n bucket = input<string>();\n bucketLabel = input<string | undefined>();\n options = input<TileListConfigOptions | undefined>(undefined);\n\n\n openTileConfigOverlay() {\n const popoverConfig: YvcOverlayConfig = {\n height: '80%',\n width: '80%'\n // maxWidth: '400px',\n // data: {\n // bucket: this.bucket\n // }\n };\n\n this._oRef = this.overlayService.open(this.tplTileConfig(), null, popoverConfig);\n }\n\n onObjectConfigSave() {\n if (this._oRef) this._oRef.close();\n }\n \n onObjectConfigCancel() {\n if (this._oRef) this._oRef.close();\n }\n}\n","<button class=\"settings icon\" (click)=\"openTileConfigOverlay()\"\ntitle=\"{{ 'yuv.tile-config.trigger.tooltip' | translate }}\"\n><yvc-icon [svg]=\"icon()\"></yvc-icon></button>\n\n<ng-template #tplTileConfig>\n <yuv-tile-config\n (save)=\"onObjectConfigSave()\"\n (cancel)=\"onObjectConfigCancel()\"\n [bucket]=\"bucket() || undefined\"\n [bucketLabel]=\"bucketLabel()\"\n [configTypes]=\"options()?.configTypes\"\n [configFlavors]=\"options()?.configFlavors || []\"\n ></yuv-tile-config>\n</ng-template>\n","import { NgClass } from '@angular/common';\nimport { Component, computed, effect, input, signal } from '@angular/core';\nimport { TileExtensionComponent } from '@yuuvis/client-shell-core';\n\n@Component({\n selector: 'yuv-email-tile-extension',\n standalone: true,\n imports: [NgClass],\n template: `\n @if (hasAttachements()) {\n <span>{{ attachments().length }}</span>\n <svg class=\"icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"#5f6368\" viewBox=\"0 -960 960 960\">\n <path\n d=\"M720-330q0 104-73 177T470-80q-104 0-177-73t-73-177v-370q0-75 52.5-127.5T400-880q75 0 127.5 52.5T580-700v350q0 46-32 78t-78 32q-46 0-78-32t-32-78v-370h80v370q0 13 8.5 21.5T470-320q13 0 21.5-8.5T500-350v-350q-1-42-29.5-71T400-800q-42 0-71 29t-29 71v370q-1 71 49 120.5T470-160q70 0 119-49.5T640-330v-390h80v390Z\"\n />\n </svg>\n }\n `,\n styles: [\n `\n :host {\n display: flex;\n justify-content: end;\n margin-top: 0.5rem;\n\n .icon {\n height: 1rem;\n }\n }\n `\n ],\n host: {\n '[class.attachments]': 'hasAttachements()'\n }\n})\nexport class EmailTileExtensionComponent implements TileExtensionComponent {\n data = input.required<any>();\n attachments = computed(() => this.data()['appSystemmail:attachments'] || []);\n hasAttachements = computed(() => !!this.data()['appSystemmail:attachmentCount']);\n\n onClick(a: string, evt: Event) {\n evt.preventDefault();\n evt.stopPropagation();\n\n alert(`You clicked '${a}' my friend.`);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i3","TranslateModule","i2"],"mappings":"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"}
1
+ {"version":3,"file":"yuuvis-client-framework-tile-list.mjs","sources":["../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-extension/tile-extension.service.ts","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-extension/directive/tile-extension.directive.ts","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile/tile.component.ts","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile/tile.component.html","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-list/tile-list.component.ts","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-list/tile-list.component.html","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-config/action-select/action-select.component.ts","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-config/action-select/action-select.component.html","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-config/icon-select/icon-select.component.ts","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-config/icon-select/icon-select.component.html","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-config/property-select/property-select.component.ts","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-config/property-select/property-select.component.html","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-config/tile-config-tile/tile-config-tile.component.ts","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-config/tile-config-tile/tile-config-tile.component.html","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-config/tile-config.component.ts","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-config/tile-config.component.html","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-config/tile-config-trigger/tile-config-trigger.component.ts","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-config/tile-config-trigger/tile-config-trigger.component.html","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-extension/extensions/email.extension.ts","../../../../../libs/yuuvis/client-framework/tile-list/src/yuuvis-client-framework-tile-list.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { TileExtension } from '@yuuvis/client-shell-core';\nimport { EmailTileExtensionComponent } from './extensions/email.extension';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TileExtensionService {\n private _extensions: Record<string, TileExtension> = {};\n\n constructor() {\n // this.registerTileExtension({\n // // typeId: 'appSystemmail:email',\n // typeId: 'system:document',\n // cmp: EmailTileExtensionComponent\n // });\n }\n\n registerTileExtension(ext: TileExtension) {\n this._extensions[ext.typeId] = ext;\n }\n\n hasTileExtension(objectTypeId: string): boolean {\n return !!this._extensions[objectTypeId];\n }\n\n /**\n * Get tile extensions for a certain type\n * @param typeId ID of the type to fetch extesion for (objectTypeID or secondaryObjectTypeID)\n * @returns\n */\n getTileExtension(typeId: string): TileExtension | undefined {\n return this._extensions[typeId];\n }\n}\n","import { ComponentRef, Directive, Input, ViewContainerRef, effect, inject, input, signal } from '@angular/core';\nimport { TileExtensionService } from '../tile-extension.service';\nimport { TileExtension, TileExtensionComponent, TileExtensionDirectiveInput } from '@yuuvis/client-shell-core';\n\n@Directive({\n selector: '[yuvTileExtension]',\n standalone: true\n})\nexport class TileExtensionDirective {\n readonly #tileExtensioService = inject(TileExtensionService);\n readonly #containerRef = inject(ViewContainerRef);\n\n component!: ComponentRef<TileExtensionComponent>;\n\n yuvTileExtension = input.required<TileExtensionDirectiveInput>();\n\n #yuvTileExtensionEffect = effect(() => {\n const tile = this.yuvTileExtension();\n if (tile.typeId) {\n const ext = this.#tileExtensioService.getTileExtension(tile.typeId);\n if (ext) this._render(ext, tile.data);\n }\n });\n\n private _render(ext: TileExtension, data?: any) {\n if (this.component) this.#containerRef.clear();\n this.component = this.#containerRef.createComponent(ext.cmp);\n this.component.setInput('data', data);\n }\n}\n","import { Component, ElementRef, computed, inject, input } from '@angular/core';\nimport { DmsObject, DmsService, ObjectConfigAction } from '@yuuvis/client-core';\nimport { Action, ActionContext, ActionsService } from '@yuuvis/client-framework/actions';\nimport { RendererDirective } from '@yuuvis/client-framework/renderer';\nimport { YvcIconModule } from '@yuuvis/components/icon';\nimport { switchMap } from 'rxjs';\nimport { TileExtensionDirective } from '../tile-extension/directive/tile-extension.directive';\nimport { TileData } from '../tile-list/tile-list.interface';\n\n@Component({\n selector: 'yuv-tile',\n standalone: true,\n imports: [YvcIconModule, RendererDirective, TileExtensionDirective],\n templateUrl: './tile.component.html',\n styleUrl: './tile.component.scss'\n})\nexport class TileComponent {\n elRef = inject(ElementRef);\n private dmsService = inject(DmsService);\n private actionService = inject(ActionsService);\n\n tile = input.required<TileData>();\n actionContext = input<ActionContext>();\n\n actions = computed<Action[]>(() => {\n const actionsList: Action[] = [];\n if (this.tile().actions?.length) {\n this.tile().actions?.forEach((a: ObjectConfigAction) => {\n const aa: Action | undefined = this.actionService.getActionById(a.id, this.actionContext());\n if (aa) actionsList.push(aa);\n });\n }\n return actionsList;\n });\n rendererInputs = computed(() => {\n return {\n icon: this.tile().icon,\n title: this.tile().title,\n description: this.tile().description,\n meta: this.tile().meta,\n aside: this.tile().aside\n };\n });\n\n executeAction(a: Action, evt: Event) {\n evt.preventDefault();\n evt.stopPropagation();\n\n this.dmsService\n .getDmsObject(this.tile().id)\n .pipe(switchMap((o: DmsObject) => a.run([o])))\n .subscribe();\n }\n}\n","<div data-slot=\"icon\">\n <ng-container *yuvRenderer=\"rendererInputs().icon\"></ng-container>\n</div>\n\n<div class=\"slots\">\n <div data-slot=\"title\">\n <ng-container *yuvRenderer=\"rendererInputs().title\"></ng-container>\n </div>\n \n <div data-slot=\"actions\">\n @for (a of actions(); track a.id) {\n <button [title]=\"a.label\" (click)=\"executeAction(a, $event)\"><yvc-icon inert=\"true\" [svg]=\"a.icon\"></yvc-icon></button>\n }\n </div>\n \n <div data-slot=\"description\">\n <ng-container *yuvRenderer=\"rendererInputs().description\"></ng-container>\n </div>\n \n <div data-slot=\"aside\">\n <ng-container *yuvRenderer=\"rendererInputs().aside\"></ng-container>\n </div>\n \n <div data-slot=\"meta\">\n <ng-container *yuvRenderer=\"rendererInputs().meta\"></ng-container>\n </div>\n \n <div data-slot=\"badges\">{{ tile().badges }}</div>\n \n <div class=\"extension\">\n <ng-container *yuvTileExtension=\"{ typeId: tile().objectTypeId, data: tile().instanceData }\"></ng-container>\n </div>\n</div>\n","import { NgClass, NgStyle } from '@angular/common';\nimport {\n Component,\n DestroyRef,\n ElementRef,\n HostBinding,\n HostListener,\n OnDestroy,\n OnInit,\n computed,\n contentChild,\n effect,\n inject,\n input,\n output,\n signal,\n untracked,\n viewChildren\n} from '@angular/core';\nimport {\n BaseObjectTypeField,\n DeviceService,\n DmsObject,\n EventService,\n ObjectConfigRecord,\n ObjectConfigService,\n ResolvedObjectConfigItem,\n SearchQuery,\n SearchResult,\n SearchService,\n SystemService,\n TranslateModule,\n YuvEvent,\n YuvEventType\n} from '@yuuvis/client-core';\nimport { ClickDoubleDirective, DragSelectDirective, DragSelectItemDirective } from '@yuuvis/client-framework/common';\nimport { TileComponent } from '../tile/tile.component';\n\nimport { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { YUV_ICONS } from '@yuuvis/client-framework/icons';\nimport { Pagination, PaginationComponent } from '@yuuvis/client-framework/pagination';\nimport { ObjectFlavor } from '@yuuvis/client-shell-core';\nimport { YvcIconModule } from '@yuuvis/components/icon';\nimport { YvcOverlayModule } from '@yuuvis/components/overlay';\nimport { TileData, TileListConfigOptions, TileListHighlight } from './tile-list.interface';\nimport { finalize, Subscription } from 'rxjs';\nimport { ListItemDirective } from '@yuuvis/client-framework/list';\n\n/**\n * List that renders the result of a search query as object config based tiles. It also contains a component to\n * set up that configuration.\n *\n * ## Paging\n * If the search result contains more items than the page size, the list will show a\n * pagination control to navigate inbetween the pages.\n *\n * ## Staggered animation\n * Adding a class of `staggered` to the `yuv-tile-list` component will animate\n * the tiles in a staggered way (only if the user has not set up the OS to not\n * play animation).\n */\n@Component({\n selector: 'yuv-tile-list',\n standalone: true,\n providers: [],\n imports: [\n NgClass,\n NgStyle,\n TileComponent,\n TranslateModule,\n ReactiveFormsModule,\n YvcOverlayModule,\n PaginationComponent,\n YvcIconModule,\n ListItemDirective,\n ClickDoubleDirective,\n DragSelectDirective,\n DragSelectItemDirective\n ],\n templateUrl: './tile-list.component.html',\n styleUrl: './tile-list.component.scss',\n host: {\n tabindex: '0',\n role: 'listbox'\n }\n})\nexport class TileListComponent implements OnInit, OnDestroy {\n #objectConfigService = inject(ObjectConfigService);\n #system = inject(SystemService);\n #searchService = inject(SearchService);\n #destroyRef = inject(DestroyRef);\n #device = inject(DeviceService);\n #elRef = inject(ElementRef);\n #events = inject(EventService);\n\n emptyContent = contentChild<ElementRef>('empty');\n isTouchDevice = this.#device.isTouchEnabled;\n\n tiles = viewChildren(TileComponent);\n\n listItems = viewChildren(ListItemDirective);\n #listItemsEffect = effect(() => {\n if (this._keyManager) this._keyManager.destroy();\n this._keyManager = new ActiveDescendantKeyManager(this.listItems() || []).withWrap();\n });\n\n searchResultSubscription = new Subscription();\n\n #openContextMenu = signal<{ event: MouseEvent } | null>(null);\n #contextFlag = signal(false);\n\n @HostListener('contextmenu', ['$event'])\n onContextMenu(event: MouseEvent | PointerEvent) {\n event.preventDefault();\n if (this.#contextFlag()) {\n this.#contextFlag.set(false);\n return;\n }\n\n setTimeout(() => {\n this.ctxMenu.emit({ event, selection: this.selection() });\n }, 200);\n }\n\n @HostListener('mousedown', ['$event'])\n onMouseDown(event: MouseEvent) {\n // TODO: Clicking on the scrollbar also resets selection ... need to find a different way\n // (event.target as HTMLElement).parentElement?.tagName === 'YUV-TILE-LIST' && this.#select(-1);\n if (event.button === 2) {\n this.#contextFlag.set(true);\n this.onContextMenu(event);\n }\n }\n\n @HostListener('keydown.control.c', ['$event'])\n onCopy(event: KeyboardEvent) {\n event.preventDefault();\n if (this._selection.length) this.copy.emit(this._selectionToTileData());\n }\n @HostListener('keydown.control.x', ['$event'])\n onCut(event: KeyboardEvent) {\n event.preventDefault();\n if (this._selection.length) this.cut.emit(this._selectionToTileData());\n }\n @HostListener('keydown', ['$event'])\n onKeydown(event: KeyboardEvent) {\n switch (event.code) {\n case 'Escape': {\n this.clearSelection();\n break;\n }\n case 'Enter': {\n // same as double click\n const aii: number = this._keyManager.activeItemIndex !== null ? this._keyManager.activeItemIndex : -1;\n if (aii >= 0) {\n this.itemDblClick.emit(this.items[aii]);\n }\n break;\n }\n case 'Space': {\n // same as single click\n const aii: number = this._keyManager.activeItemIndex !== null ? this._keyManager.activeItemIndex : -1;\n if (aii >= 0) {\n this.select(this.items[aii], event);\n }\n break;\n }\n default: {\n this._keyManager?.onKeydown(event);\n }\n }\n }\n\n private _keyManager!: ActiveDescendantKeyManager<ListItemDirective>;\n\n _busy = signal(false);\n #_busyEffect = effect(() => {\n this.busy.emit(this._busy());\n });\n private oc?: ObjectConfigRecord;\n // state of pagination\n @HostBinding('class.pagination') pagination?: Pagination;\n private _selection: number[] = [];\n private _lastSelection?: number;\n\n selectedTile = signal<TileData[]>([]);\n empytIcon = signal<string>(YUV_ICONS.trash);\n /**\n * The ID of the selected list item\n */\n selection = signal<string[]>([]);\n /**\n * Tile configurations are stored globally for all apps. If you want a\n * separate config for your app/component you can specify a bucket. A bucket\n * is basically an ID where your custom tile config will be stored and\n * retrieved. Buckets should be unique so be sure to use a unique namespace.\n */\n bucket = input<string>();\n /**\n * Sets up the ability to select multile tiles\n */\n multiselect = input<boolean>(false);\n\n options = input<TileListConfigOptions | undefined>(undefined);\n\n flavor = input<ObjectFlavor>();\n\n flavorEffect = effect(() => {\n const f = this.flavor();\n if (f) this.applyFlavor(f);\n });\n appliedFlavor?: ObjectFlavor;\n /**\n * The search query to be executed\n */\n query = input<SearchQuery | null>();\n\n // Items to be preselected (TODO: remove after refactoring ???)\n preselect = input<string[]>();\n\n highlights = input<TileListHighlight[] | null>([]);\n highlightStyles = computed<Record<string, Record<string, unknown>>>(() => {\n const x: Record<string, Record<string, unknown>> = {};\n (this.highlights() || []).forEach((highlight) => {\n highlight.ids.forEach((id) => {\n if (!x[id]) x[id] = {};\n x[id] = { ...x[id], ...highlight.cssStyles };\n });\n });\n return x;\n });\n\n /**\n * Emitted when a list item has been selected\n */\n itemSelect = output<TileData>();\n copy = output<TileData[]>();\n cut = output<TileData[]>();\n busy = output<boolean>();\n queryResult = output<{ totalCount: number }>();\n\n /**\n * Emitted when selected items changed. If 'multiselect' input is set to true, this will\n * emit the whole selection, while 'itemSelect' will only emit the item that currently\n * has bee added to the selection.\n */\n selectionChange = output<TileData[]>();\n\n /**\n * Emitted when a list item has been doubleclicked\n */\n itemDblClick = output<TileData>();\n\n ctxMenu = output<{ event: MouseEvent | PointerEvent; selection: any }>();\n\n // the items rendered in the list\n items: TileData[] = [];\n private _rawResult?: SearchResult;\n searchExecuted = false;\n\n #query?: SearchQuery | null;\n #executeQueryEffect = effect(() => {\n // execute the query each time it changes\n this.#query = this.query();\n if (this.#query && this.oc)\n untracked(() => {\n this._executeQuery(this.#query || undefined);\n this.empytIcon.set(YUV_ICONS.refresh);\n });\n });\n\n constructor() {\n this.#events\n .on(YuvEventType.DMS_OBJECT_UPDATED)\n .pipe(takeUntilDestroyed())\n .subscribe((e: YuvEvent) => {\n const dmsObject = e.data as DmsObject;\n // check if the updated object is part of the list\n this.items.findIndex((item) => item.id === dmsObject.id) >= 0 && this.updateTileList([dmsObject]);\n });\n }\n\n contextMenuHandler(event: MouseEvent, index: number) {\n if (!coerceBooleanProperty(this.tiles()[index].elRef.nativeElement.ariaSelected)) {\n this._selectByIndex(index, event);\n }\n }\n\n select(i: TileData, evt: MouseEvent | KeyboardEvent) {\n const idx = this.items.findIndex((item) => item.id === i.id);\n this._selectByIndex(idx, evt);\n }\n\n onDragSelectChange(sel: number[]) {\n if (this._keyManager.activeItemIndex !== -1) this._keyManager.setActiveItem(-1);\n\n this._selection = sel;\n this._selection.sort();\n this.listItems().forEach((item: ListItemDirective, i: number) => (item.selected = this._selection.includes(i)));\n }\n\n onDragSelect(sel: number[]) {\n this.#elRef.nativeElement.focus();\n this._selection = sel;\n this._keyManager.setActiveItem(sel[0] || 0);\n const tiles = this._selectionToTileData();\n this.selectionChange.emit(tiles);\n }\n\n private _selectByIndex(idx: number, evt?: MouseEvent | KeyboardEvent) {\n this._keyManager.setActiveItem(idx);\n this.#select(idx, evt?.shiftKey, evt?.ctrlKey);\n }\n\n refresh() {\n if (this.#query) {\n if (this.pagination) {\n this.goToPage(this.pagination.page);\n } else this._executeQuery(this.query() || undefined);\n }\n }\n\n applyFlavor(flavor: ObjectFlavor) {\n this.appliedFlavor = this.appliedFlavor?.id === flavor.id ? undefined : flavor;\n if (this._rawResult) this.items = this._mapSearchResult(this._rawResult);\n }\n\n clearSelection(silent = false) {\n if (this._selection.length) {\n this._selection = [];\n this._keyManager.setActiveItem(-1);\n this.listItems().forEach((item: ListItemDirective, i: number) => (item.selected = false));\n if (!silent) this.selectionChange.emit([]);\n }\n }\n\n selectNext() {\n if (this._lastSelection) {\n let i = this._lastSelection + 1;\n if (i > this.items.length) i = 0;\n this.#select(i);\n }\n }\n selectPrev() {\n if (this._lastSelection) {\n let i = this._lastSelection - 1;\n if (i < 0) i = this.items.length - 1;\n this.#select(this._lastSelection - 1);\n }\n }\n\n goToPage(page: number) {\n if (!this.#query) return;\n this._busy.set(true);\n this.#searchService\n .getPage(this.#query, page)\n .pipe(finalize(() => this._busy.set(false)))\n .subscribe({\n next: (res: SearchResult) => {\n this.#setupPagination(res);\n this.items = this._mapSearchResult(res);\n },\n error: (err) => {\n // TODO: how should errors be handles in case hat loading pages fail\n }\n });\n }\n\n #select(index: number, shiftKey = false, ctrlKey = false) {\n this.#elRef.nativeElement.focus();\n if (index === -1) this._selection = [];\n else {\n if (this.multiselect()) {\n this._selection = this._selection.filter((i) => i !== index);\n if (ctrlKey) {\n // if ctrl key add to selection\n this._selection.push(index);\n } else if (shiftKey) {\n // add range\n if (this._lastSelection !== undefined) {\n const startIndex = this._lastSelection < index ? this._lastSelection : index;\n const endIndex = this._lastSelection > index ? this._lastSelection : index;\n for (let i = startIndex; i <= endIndex; i++) {\n this._selection.push(i);\n }\n } else {\n this._selection = [index];\n }\n } else {\n this._selection = [index];\n }\n } else this._selection = [index];\n this._selection = [...new Set(this._selection)];\n }\n this._lastSelection = this._selection.length === 0 ? undefined : index;\n this._selection.sort();\n\n this.listItems().forEach((item: ListItemDirective, i: number) => (item.selected = this._selection.includes(i)));\n const tiles = this._selectionToTileData();\n this.selectionChange.emit(tiles);\n tiles.length === 1 && this.itemSelect.emit(tiles[0]);\n this.selectedTile.set(this._selection.map((idx) => this.items[idx]));\n }\n\n private _selectionToTileData(): TileData[] {\n return this._selection.map((idx) => this.items[idx]);\n }\n\n private _executeQuery(q: SearchQuery | undefined) {\n if (q && this.#system.system) {\n this.searchExecuted = false;\n // reset items to avoid old data being shown while new stuff is loaded\n this.items = [];\n // q.fields = Object.keys(this.#system.system.allFields);\n q.fields = undefined;\n this._busy.set(true);\n this.searchResultSubscription = this.#searchService\n .search(q)\n .pipe(finalize(() => this._busy.set(false)))\n .subscribe({\n next: (res: SearchResult) => {\n this.#setupPagination(res);\n this.items = this._mapSearchResult(res);\n this.queryResult.emit({ totalCount: res.items.length });\n\n const preselect = this.preselect();\n if (preselect) {\n preselect.forEach((id) => {\n const idx = this.items.findIndex((item) => item.id === id);\n if (idx >= 0) this._selectByIndex(idx);\n });\n }\n },\n error: (err) => console.error(err)\n });\n }\n }\n\n #setupPagination(searchResult: SearchResult) {\n this.pagination = undefined;\n if (this.#query && searchResult.totalNumItems > (this.#query.size || SearchService.DEFAULT_QUERY_SIZE)) {\n this.pagination = {\n total: searchResult.totalNumItems,\n pages: Math.ceil(searchResult.totalNumItems / (this.#query?.size || SearchService.DEFAULT_QUERY_SIZE)),\n page: (!this.#query?.from ? 0 : this.#query.from / (this.#query?.size || SearchService.DEFAULT_QUERY_SIZE)) + 1\n };\n }\n }\n\n #mapToTileData(objects: DmsObject[]): TileData[] {\n return objects.map((dmsObject) => {\n const sots = dmsObject.sots || [];\n\n let oc = this.oc![dmsObject.objectTypeId];\n\n // check if result oitem matches virtual config type\n const cfgTypes = this.options()?.configTypes || [];\n\n cfgTypes.forEach((cft) => {\n const matchesType = !cft.objectType || cft.objectType === dmsObject.objectTypeId;\n const matchesSOTs = !cft.sots || !cft.sots.length || cft.sots.every((sot) => sots.includes(sot));\n\n if (matchesType && matchesSOTs) oc = this.oc![cft.id];\n });\n\n // only apply a flavor if the object has that SOT\n const ownAppliedFlavor = this.appliedFlavor && sots.includes(this.appliedFlavor.sot) && this.oc![this.appliedFlavor.sot];\n if (ownAppliedFlavor) {\n oc = this.oc![this.appliedFlavor!.id];\n }\n\n if (!oc) oc = this.#objectConfigService.getDefaultConfig(dmsObject.objectTypeId);\n\n const tli: TileData = {\n objectTypeId: dmsObject.objectTypeId,\n id: dmsObject.id,\n actions: oc.actions,\n badges: oc.badges,\n instanceData: dmsObject.data,\n dmsObject,\n title: oc.title ? this.#getResolvedObjectConfigItem(oc.title.propertyName, dmsObject.data) : { propertyName: '', value: '' }\n };\n\n tli.icon = oc.icon\n ? {\n rendererType: 'icon',\n propertyName: 'custom',\n value: oc.icon.svg\n }\n : {\n rendererType: 'icon',\n propertyName: BaseObjectTypeField.OBJECT_TYPE_ID,\n value: ownAppliedFlavor && this.appliedFlavor ? this.appliedFlavor.sot : dmsObject.objectTypeId\n };\n if (oc.description) tli.description = this.#getResolvedObjectConfigItem(oc.description.propertyName, dmsObject.data);\n if (oc.meta) tli.meta = this.#getResolvedObjectConfigItem(oc.meta.propertyName, dmsObject.data);\n if (oc.aside) tli.aside = this.#getResolvedObjectConfigItem(oc.aside.propertyName, dmsObject.data);\n\n return tli;\n });\n }\n\n private _mapSearchResult(res: SearchResult): TileData[] {\n this.searchExecuted = true;\n this._rawResult = res;\n return this.oc ? this.#mapToTileData(res.items.map((i) => new DmsObject(i))) : [];\n }\n\n #getResolvedObjectConfigItem(propertyName: string, instanceData: Record<string, unknown>): ResolvedObjectConfigItem {\n const item: ResolvedObjectConfigItem = {\n propertyName: propertyName,\n value: instanceData[propertyName]\n };\n // Meta data are considered properties that start with the property name followed by an underscore.\n // Organization fields for example have an additional property 'xyz_title' that contains the resolved\n // name of a user while the value itself is the users ID.\n const metaData = Object.keys(instanceData)\n .filter((key) => key.startsWith(propertyName + '_'))\n .map((key) => ({ [key.substring(key.indexOf('_') + 1)]: instanceData[key] }));\n\n // If there are meta data properties, they'll be merged into a Record where the\n // key is the property name without the underscore and the actual properties name.\n // So { 'xyz_title': 'John Doe' } will be merged into { title: 'John Doe' }\n if (metaData.length) {\n const meta = metaData.reduce((acc, cur) => ({ ...acc, ...cur }), {});\n item.meta = meta;\n }\n\n return item;\n }\n\n updateTileList(listItems: DmsObject[]) {\n listItems.forEach((item) => {\n const idx = this.items.findIndex((listItem) => listItem.id === item.id);\n if (idx >= 0 && this.oc) {\n const mappedTileData = this.#mapToTileData([item]);\n this.items[idx] = mappedTileData[0];\n }\n });\n }\n\n ngOnInit(): void {\n this.#objectConfigService\n .getObjectConfigs$(this.bucket() || '', true)\n .pipe(takeUntilDestroyed(this.#destroyRef))\n .subscribe({\n next: (res: ObjectConfigRecord) => {\n this.oc = res;\n const q = this.query();\n q && this._executeQuery(q);\n }\n });\n }\n\n ngOnDestroy(): void {\n this._keyManager?.destroy();\n this.searchResultSubscription.unsubscribe();\n }\n}\n","<div\n class=\"tiles\"\n [yuvDragSelect]=\"{ disabled: !this.multiselect() || isTouchDevice }\"\n (dragSelectChange)=\"onDragSelectChange($event)\"\n (dragSelect)=\"onDragSelect($event)\"\n>\n @for (i of items; track i.id) {\n <yuv-tile\n yuvDragSelectItem\n yuvListItem\n [style.--i]=\"$index\"\n [attr.aria-selected]=\"selection().includes(i.id)\"\n (click.single)=\"select(i, $event)\"\n (click.double)=\"itemDblClick.emit(i)\"\n [ngClass]=\"{ selected: selection().includes(i.id), last: $last }\"\n [actionContext]=\"options()?.actionContext\"\n [tile]=\"i\"\n [ngStyle]=\"highlightStyles()[i.id]\"\n (contextmenu)=\"contextMenuHandler($event, $index)\"\n ></yuv-tile>\n } @empty {\n <div class=\"empyt-list\">\n @if (searchExecuted && emptyContent()) {\n <ng-content></ng-content>\n }\n </div>\n }\n <div class=\"offset\" (click)=\"clearSelection()\"></div>\n</div>\n@if (pagination) {\n <yuv-pagination [pagination]=\"pagination\" (pageChange)=\"goToPage($event)\"></yuv-pagination>\n}\n","import { NgClass } from '@angular/common';\nimport { Component, Signal, computed, inject, input, output } from '@angular/core';\nimport { VirtualObjectType } from '@yuuvis/client-core';\nimport { Action, ActionsService } from '@yuuvis/client-framework/actions';\nimport { YvcIconModule } from '@yuuvis/components/icon';\n\n@Component({\n selector: 'yuv-tile-action-select',\n standalone: true,\n imports: [NgClass, YvcIconModule],\n templateUrl: './action-select.component.html',\n styleUrl: './action-select.component.scss'\n})\nexport class ActionSelectComponent {\n private actionService = inject(ActionsService);\n\n objectType = input.required<VirtualObjectType>();\n actions: Signal<Action[]> = computed<Action[]>(() => (this.objectType() ? this.actionService.getActionsForType(this.objectType().id) : []));\n\n selectedActionIds = input<string[]>([]);\n actionSelect = output<Action>();\n}\n","<div class=\"actions\">\n @for (a of actions(); track a.id) {\n <button [ngClass]=\"{ selected: selectedActionIds().includes(a.id) }\" (click)=\"actionSelect.emit(a)\">\n <yvc-icon [svg]=\"a.icon!\"></yvc-icon>{{ a.label }}\n </button>\n }\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, input, output } from '@angular/core';\nimport { TranslateModule, VirtualObjectType } from '@yuuvis/client-core';\n\n@Component({\n selector: 'yuv-icon-select',\n standalone: true,\n imports: [CommonModule, TranslateModule],\n templateUrl: './icon-select.component.html',\n styleUrl: './icon-select.component.scss'\n})\nexport class IconSelectComponent {\n objectType = input<VirtualObjectType>();\n iconSelect = output<string | null>();\n\n async createIcon(inputEl: HTMLInputElement) {\n const file: File | undefined = inputEl.files ? inputEl.files[0] : undefined;\n if (file) {\n const text = await file.text();\n this.#emit(text);\n } else this.#emit(null);\n }\n\n reset() {\n this.#emit(null);\n }\n\n #emit(data: string | null) {\n this.iconSelect.emit(data);\n }\n}\n","<input style=\"display: none\" #fileInput type=\"file\" accept=\".svg\" (change)=\"createIcon(fileInput)\" />\n\n<button class=\"primary\" (click)=\"fileInput.click()\">{{ 'yuv.tile-config.icon-select.pick' | translate }}</button>\n<button class=\"secondary\" (click)=\"reset()\">{{ 'yuv.tile-config.icon-select.reset' | translate }}</button>\n","import { NgClass } from '@angular/common';\nimport { Component, computed, effect, inject, input, output, signal, untracked } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n BaseObjectTypeField,\n ContentStreamField,\n ObjectConfigProperty,\n ObjectTypeField,\n SecondaryObjectType,\n Sort,\n SystemService,\n TranslateModule,\n Utils,\n VirtualObjectType\n} from '@yuuvis/client-core';\nimport { ICONS, YvcIconModule } from '@yuuvis/components/icon';\n\ntype TypeProperty = { label: string; baseProperty?: boolean } & Partial<ObjectTypeField>;\n\n@Component({\n selector: 'yuv-tile-property-select',\n standalone: true,\n imports: [NgClass, FormsModule, TranslateModule, YvcIconModule],\n templateUrl: './property-select.component.html',\n styleUrl: './property-select.component.scss'\n})\nexport class PropertySelectComponent {\n private system = inject(SystemService);\n\n // fields that should not be available to be placed in the slots\n readonly #excludeFields: string[] = [\n BaseObjectTypeField.PARENT_ID,\n BaseObjectTypeField.PARENT_OBJECT_TYPE_ID,\n BaseObjectTypeField.OBJECT_ID,\n BaseObjectTypeField.OBJECT_TYPE_ID,\n BaseObjectTypeField.BASE_TYPE_ID,\n BaseObjectTypeField.PARENT_VERSION_NUMBER,\n BaseObjectTypeField.SECONDARY_OBJECT_TYPE_IDS,\n BaseObjectTypeField.TAGS,\n BaseObjectTypeField.TENANT,\n BaseObjectTypeField.TRACE_ID,\n ContentStreamField.REPOSITORY_ID,\n ContentStreamField.DIGEST,\n ContentStreamField.ARCHIVE_PATH,\n ContentStreamField.ID,\n ContentStreamField.RANGE\n ];\n\n objectTypeFields: TypeProperty[] = [];\n\n clearIcon = ICONS.clear;\n\n query = signal<string | null>(null);\n\n objectType = input<VirtualObjectType>();\n filteredObjectTypeFields = computed<TypeProperty[]>(() => {\n return this.query() !== null\n ? this.objectTypeFields.filter((otf) => otf.label.toLowerCase().indexOf(this.query()?.toLocaleLowerCase() || '') !== -1)\n : this.getObjectTypeFields(this.objectType());\n });\n\n objectTypesEffect = effect(() => {\n untracked(() => this.getObjectTypeFields(this.objectType()));\n });\n\n selectedProperty = input<ObjectConfigProperty>();\n\n propertySelect = output<TypeProperty | undefined>();\n\n selectProperty(field: TypeProperty) {\n this.propertySelect.emit(field);\n }\n\n removeProperty(evt: MouseEvent | KeyboardEvent) {\n evt.stopPropagation();\n \n this.propertySelect.emit(undefined);\n }\n\n private getObjectTypeFields(type?: VirtualObjectType) {\n if (!type) return [];\n // load properties\n const otf: TypeProperty[] = [];\n if (type.sots && type.sots.length > 0) {\n type.sots.forEach((s: string) => {\n const sot: SecondaryObjectType | undefined = this.system.getSecondaryObjectType(s);\n if (sot)\n sot.fields.forEach((of) =>\n otf.push({\n id: of.id,\n label: this._getLabel(of)\n })\n );\n });\n }\n\n let objectTypeProperties: TypeProperty[] = [];\n if (type.objectType) {\n const ot = this.system.getObjectType(type.objectType);\n objectTypeProperties = (ot?.fields || []).map((otf) => ({ ...otf, label: this._getLabel(otf), baseProperty: true }));\n }\n\n this.objectTypeFields = [...objectTypeProperties, ...otf]\n .filter((f) => f.id && !this.#excludeFields.includes(f.id))\n // sort alphanummeric by label\n .sort(Utils.sortValues('label', Sort.ASC))\n // put base properties at the end\n .sort(Utils.sortValues('baseProperty', Sort.ASC));\n return this.objectTypeFields;\n }\n\n private _getLabel(otf: ObjectTypeField): string {\n return this.system.getLocalizedLabel(otf.id) || otf.id;\n }\n}\n","<!-- TODO: enable once filtering of properties makes sense -->\n<!-- <form class=\"filter\">\n <div class=\"filter-input\">\n <input type=\"text\" [placeholder]=\"'yuv.tile-config.property-select.filter.placeholder' | translate\" name=\"query\" [(ngModel)]=\"query\" />\n @if (query()) {\n <button class=\"icn\" (click)=\"query.set(null)\">\n <yvc-icon [svg]=\"clearIcon\"></yvc-icon>\n </button>\n }\n </div>\n</form> -->\n\n<ul class=\"properties\">\n @for (p of filteredObjectTypeFields(); track $index) {\n <li [ngClass]=\"{ baseProperty: p.baseProperty, selected: p.id === selectedProperty()?.propertyName }\" (click)=\"selectProperty(p)\">\n <div class=\"label\">{{ p.label }}</div>\n <button (click)=\"removeProperty($event)\"><yvc-icon [svg]=\"clearIcon\"></yvc-icon>\n </button>\n </li>\n }\n</ul>\n","import { Component, ElementRef, computed, inject, input, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ObjectConfig, ObjectConfigAction, ObjectConfigProperty, SystemService } from '@yuuvis/client-core';\nimport { YvcIconModule } from '@yuuvis/components/icon';\nimport { Action, ActionsService } from '@yuuvis/client-framework/actions';\nimport { ObjectTypeIconComponent } from '@yuuvis/client-framework/icons';\n\n/**\n * Component for setting up a tile config\n */\n@Component({\n selector: 'yuv-tile-config-tile',\n standalone: true,\n imports: [YvcIconModule, CommonModule, ObjectTypeIconComponent],\n templateUrl: './tile-config-tile.component.html',\n styleUrl: './tile-config-tile.component.scss'\n})\nexport class TileConfigTileComponent {\n private readonly actionService = inject(ActionsService);\n private readonly elRef = inject(ElementRef);\n #system = inject(SystemService);\n\n disableIconSlot = input<boolean>();\n disableBadgesSlot = input<boolean>();\n\n objectConfigInput = input.required<ObjectConfig>({ alias: 'objectConfig' });\n objectConfig = computed<ObjectConfig>(() => {\n const oc = this.objectConfigInput();\n if (oc) {\n [oc.title, oc.description, oc.meta, oc.aside].forEach((field: ObjectConfigProperty | undefined) => {\n if (field) {\n const label = this.#system.getLocalizedLabel(field.propertyName);\n field.label = label || field.label || field.propertyName;\n }\n });\n }\n return oc;\n });\n\n actions = computed<Action[]>(() => {\n const actionsList: Action[] = [];\n const ocActions = this.objectConfig();\n if (ocActions.actions?.length) {\n ocActions.actions?.forEach((a: ObjectConfigAction) => {\n const aa: Action | undefined = this.actionService.getActionById(a.id);\n if (aa) actionsList.push(aa);\n });\n }\n return actionsList;\n });\n\n slotSelect = output<string>();\n\n selectSlot(slot: string) {\n if(this.disableIconSlot() && slot === 'icon') return;\n this.slotSelect.emit(slot);\n\n // set active state\n (this.elRef.nativeElement as HTMLElement).querySelectorAll('[data-slot]').forEach((e) => {\n if (e.getAttribute('data-slot') === slot) e.classList.add('active');\n else e.classList.remove('active');\n });\n }\n}\n","@let oc = objectConfig();\n\n<div data-slot=\"icon\" [attr.disabled]=\"disableIconSlot()\" (click)=\"selectSlot('icon')\">\n @if (oc.icon) {\n <yvc-icon [svg]=\"oc.icon.svg\"></yvc-icon>\n } @else {\n <yuv-object-type-icon [objectTypeId]=\"oc.objectTypeId\"></yuv-object-type-icon>\n }\n</div>\n<div data-slot=\"title\" (click)=\"selectSlot('title')\">{{ oc.title?.label }}</div>\n<div data-slot=\"actions\" (click)=\"selectSlot('actions')\">\n @for (a of actions(); track a.id) {\n <button [title]=\"a.label\"><yvc-icon [svg]=\"a.icon\"></yvc-icon></button>\n }\n</div>\n<div data-slot=\"description\" (click)=\"selectSlot('description')\">{{ oc.description?.label }}</div>\n<div data-slot=\"aside\" (click)=\"selectSlot('aside')\">{{ oc.aside?.label }}</div>\n<div data-slot=\"meta\" (click)=\"selectSlot('meta')\">{{ oc.meta?.label }}</div>\n@if (!disableBadgesSlot()) {\n <div data-slot=\"badges\" (click)=\"selectSlot('badges')\">\n <!-- {{ tile().badges }} -->\n {{ oc.badges }}\n </div>\n}\n","import { NgClass } from '@angular/common';\nimport { Component, computed, inject, input, output, Signal } from '@angular/core';\nimport {\n GenericObjectType,\n ObjectConfig,\n ObjectConfigAction,\n ObjectConfigBadge,\n ObjectConfigIcon,\n ObjectConfigProperty,\n ObjectConfigService,\n ObjectTypeField,\n SystemService,\n TranslateModule,\n VirtualObjectType\n} from '@yuuvis/client-core';\nimport { Action } from '@yuuvis/client-framework/actions';\nimport { ObjectTypeIconComponent } from '@yuuvis/client-framework/icons';\nimport { ListComponent, ListItemDirective } from '@yuuvis/client-framework/list';\nimport { ObjectFlavor } from '@yuuvis/client-shell-core';\nimport { ICONS, YvcIconModule } from '@yuuvis/components/icon';\nimport { YvcSplitViewModule } from '@yuuvis/components/split-view';\nimport { ActionSelectComponent } from './action-select/action-select.component';\nimport { IconSelectComponent } from './icon-select/icon-select.component';\nimport { PropertySelectComponent } from './property-select/property-select.component';\nimport { TileConfigTileComponent } from './tile-config-tile/tile-config-tile.component';\n\n@Component({\n selector: 'yuv-tile-config',\n standalone: true,\n imports: [\n NgClass,\n YvcSplitViewModule,\n ObjectTypeIconComponent,\n TileConfigTileComponent,\n IconSelectComponent,\n PropertySelectComponent,\n ActionSelectComponent,\n YvcIconModule,\n TranslateModule,\n ListComponent,\n ListItemDirective\n ],\n templateUrl: './tile-config.component.html',\n styleUrls: ['./tile-config.component.scss']\n})\nexport class TileConfigComponent {\n #objectConfigService = inject(ObjectConfigService);\n #system = inject(SystemService);\n\n /**\n * Tile configurations are stored globally for all apps. If you want a\n * separate config for your app/component you can specify a bucket. A bucket\n * is basically an ID where your custom tile config will be stored and\n * retrieved. Buckets should be unique so be sure to use a unique namespace.\n */\n bucket = input<string | undefined>(undefined);\n bucketLabel = input<string | undefined>(undefined);\n\n configTypes = input<VirtualObjectType[] | undefined>(undefined);\n configFlavors = input<ObjectFlavor[]>([]);\n\n types: Signal<{ id: string; icon?: string; flavor?: boolean; data: ObjectFlavor | VirtualObjectType }[]> = computed(() => {\n const ct = this.configTypes() || [];\n const cf: VirtualObjectType[] = [];\n // TODO: enable when flavors are supported in tile config\n // const cf = this.configFlavors() || [];\n return [...ct.map((t) => ({ id: t.id, icon: t.icon, data: t })), ...cf.map((f) => ({ id: f.id, icon: f.icon, flavor: true, data: f }))];\n });\n\n save = output();\n cancel = output();\n\n selectedType?: VirtualObjectType;\n selectedTypeProperties: ObjectTypeField[] = [];\n\n private _emptyObjectConfig: ObjectConfig = {\n objectTypeId: '',\n title: { propertyName: '', label: '' },\n description: { propertyName: '', label: '' },\n meta: { propertyName: '', label: '' },\n aside: { propertyName: '', label: '' },\n actions: [],\n badges: []\n };\n\n objectConfig?: ObjectConfig;\n selectedSlot?: string;\n flavors: ObjectFlavor[] = [];\n\n icons = {\n clear: ICONS.clear\n };\n\n // getObjectFlavorEffect = effect(() => {\n // this.flavors = this.configFlavors();\n // });\n\n getConfigValue(p: string): ObjectConfigIcon | ObjectConfigProperty | ObjectConfigAction | ObjectConfigBadge | undefined {\n return this.objectConfig ? (this.objectConfig as any)[p] : undefined;\n }\n\n getConfigProperty(p: string): ObjectConfigProperty | undefined {\n return this.getConfigValue(p) as ObjectConfigProperty;\n }\n\n getSelectedActions(): string[] {\n return this.objectConfig?.actions ? this.objectConfig.actions.map((a) => a.id) : [];\n }\n\n slotSelect(item: string) {\n this.selectedSlot = item;\n }\n\n itemSelected(idx: number[]) {\n const t = this.types()[idx[0]];\n if (!t) return;\n if (t.flavor) this.#selectFlavor(t.data as ObjectFlavor);\n else this.#selectType(t.data as VirtualObjectType);\n }\n\n #selectFlavor(flavor: ObjectFlavor) {\n const t: GenericObjectType | undefined = this.#system.getObjectType(flavor.sot);\n if (t)\n this.#selectType({\n id: flavor.id,\n objectType: flavor.objectTypeID,\n sots: [flavor.sot]\n });\n }\n\n async #selectType(t: VirtualObjectType) {\n this.selectedType = t;\n\n // load tile config\n this.objectConfig = await this.#objectConfigService.getObjectConfig(t, this.bucket() || '');\n\n if (!this.objectConfig) {\n this.objectConfig = {\n ...this._emptyObjectConfig,\n objectTypeId: t.id\n };\n }\n }\n\n iconSelected(icon: string | null) {\n if (this.objectConfig) this.objectConfig.icon = icon ? { svg: icon } : undefined;\n }\n\n propertySelected(tileSlot: string, field?: Partial<ObjectTypeField>) {\n const p: any = {};\n p[tileSlot] = field\n ? {\n label: field.label,\n propertyName: field.id\n }\n : undefined;\n\n this.objectConfig = structuredClone({\n ...this.objectConfig,\n ...p\n });\n }\n\n actionSelected(action: Action) {\n if (this.objectConfig) {\n if (!this.objectConfig?.actions) this.objectConfig.actions = [];\n\n const idx = this.objectConfig.actions.findIndex((a) => a.id === action.id);\n if (idx !== -1) this.objectConfig.actions.splice(idx, 1);\n else this.objectConfig.actions.push({ id: action.id });\n this.objectConfig = structuredClone(this.objectConfig);\n }\n }\n\n saveConfig() {\n this._saveTileConfig();\n }\n\n private _saveTileConfig() {\n if (this.selectedType && this.objectConfig) {\n this.#objectConfigService.saveObjectConfig(this.selectedType, this.objectConfig, this.bucket()).subscribe((_) => this.save.emit());\n }\n }\n}\n","<header>\n <h1>{{ 'yuv.tile-config.title' | translate }}</h1>\n <div class=\"bucket\">{{ bucketLabel() }}</div>\n @if (cancel) {\n <button class=\"icon\" (click)=\"cancel.emit()\">\n <yvc-icon [svg]=\"icons.clear\"></yvc-icon>\n </button>\n }\n</header>\n\n<yvc-split-view [gutterSize]=\"1\" [layoutSettingsID]=\"'yuv.framework.tile-config.layout'\">\n <!-- list of types -->\n <ng-template yvcSplitArea [size]=\"30\">\n <div class=\"types\">\n <yuv-list (itemSelect)=\"itemSelected($event)\">\n @for (t of types() || []; track t.id) {\n <div yuvListItem>\n @if (t.icon) {\n <yvc-icon [svg]=\"t.icon\"></yvc-icon>\n } @else {\n <yuv-object-type-icon [objectTypeId]=\"t.id\"></yuv-object-type-icon>\n }\n {{ t.id | translate }}\n </div>\n }\n </yuv-list>\n </div>\n </ng-template>\n\n <!-- selected type details-->\n <ng-template yvcSplitArea [size]=\"70\">\n <div class=\"details\">\n @if (selectedType) {\n <header>{{ selectedType.id | translate }}</header>\n <div class=\"dummy-preview\">\n <yuv-tile-config-tile [disableIconSlot]=\"true\" [disableBadgesSlot]=\"true\" [objectConfig]=\"objectConfig!\" (slotSelect)=\"slotSelect($event)\"></yuv-tile-config-tile>\n </div>\n <main>\n @if (selectedSlot === 'icon') {\n <h2>{{ 'yuv.tile-config.slot.icon.headline' | translate }}</h2>\n <yuv-icon-select [objectType]=\"selectedType\" (iconSelect)=\"iconSelected($event)\"></yuv-icon-select>\n } @else if (selectedSlot === 'badges') {\n <div class=\"placeholder empty\">\n <p>Future feature: Select badges (like: is favorite, ratings, ...)</p>\n </div>\n } @else if (!selectedSlot) {\n } @else if (selectedSlot === 'actions') {\n <h2>{{ 'yuv.tile-config.slot.action.headline' | translate }}</h2>\n <yuv-tile-action-select\n [objectType]=\"selectedType\"\n [selectedActionIds]=\"getSelectedActions()\"\n (actionSelect)=\"actionSelected($event)\"\n ></yuv-tile-action-select>\n } @else {\n <h2>{{ 'yuv.tile-config.slot.property.headline' | translate }}</h2>\n <yuv-tile-property-select\n [objectType]=\"selectedType\"\n [selectedProperty]=\"getConfigProperty(selectedSlot)\"\n (propertySelect)=\"propertySelected(selectedSlot, $event)\"\n ></yuv-tile-property-select>\n }\n </main>\n <footer>\n <button class=\"primary\" (click)=\"saveConfig()\">{{ 'yuv.tile-config.button.save' | translate }}</button>\n </footer>\n } @else {\n <div class=\"placeholder empty\">\n <h2>{{ 'yuv.tile-config.details.empty.title' | translate }}</h2>\n <p>{{ 'yuv.tile-config.details.empty.description' | translate }}</p>\n </div>\n }\n </div>\n </ng-template>\n</yvc-split-view>\n","import { CommonModule } from '@angular/common';\nimport { Component, TemplateRef, inject, input, viewChild } from '@angular/core';\nimport { YUV_ICONS } from '@yuuvis/client-framework/icons';\nimport { YvcIconModule } from '@yuuvis/components/icon';\nimport { YvcOverlayConfig, YvcOverlayRef, YvcOverlayService } from '@yuuvis/components/overlay';\nimport { TileConfigComponent } from '../tile-config.component';\nimport { TileListConfigOptions } from '../../tile-list/tile-list.interface';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n selector: 'yuv-tile-config-trigger',\n standalone: true,\n imports: [CommonModule, TileConfigComponent, YvcIconModule, TranslateModule],\n templateUrl: './tile-config-trigger.component.html',\n styleUrl: './tile-config-trigger.component.scss'\n})\nexport class TileConfigTriggerComponent {\n private overlayService = inject(YvcOverlayService);\n\n tplTileConfig = viewChild.required<TemplateRef<any>>('tplTileConfig');\n\n private _oRef?: YvcOverlayRef;\n\n icon = input<string>(YUV_ICONS.settings);\n bucket = input<string>();\n bucketLabel = input<string | undefined>();\n options = input<TileListConfigOptions | undefined>(undefined);\n\n\n openTileConfigOverlay() {\n const popoverConfig: YvcOverlayConfig = {\n height: '80%',\n width: '80%'\n // maxWidth: '400px',\n // data: {\n // bucket: this.bucket\n // }\n };\n\n this._oRef = this.overlayService.open(this.tplTileConfig(), null, popoverConfig);\n }\n\n onObjectConfigSave() {\n if (this._oRef) this._oRef.close();\n }\n \n onObjectConfigCancel() {\n if (this._oRef) this._oRef.close();\n }\n}\n","<button class=\"settings icon\" (click)=\"openTileConfigOverlay()\"\ntitle=\"{{ 'yuv.tile-config.trigger.tooltip' | translate }}\"\n><yvc-icon [svg]=\"icon()\"></yvc-icon></button>\n\n<ng-template #tplTileConfig>\n <yuv-tile-config\n (save)=\"onObjectConfigSave()\"\n (cancel)=\"onObjectConfigCancel()\"\n [bucket]=\"bucket() || undefined\"\n [bucketLabel]=\"bucketLabel()\"\n [configTypes]=\"options()?.configTypes\"\n [configFlavors]=\"options()?.configFlavors || []\"\n ></yuv-tile-config>\n</ng-template>\n","import { NgClass } from '@angular/common';\nimport { Component, computed, input } from '@angular/core';\nimport { TileExtensionComponent } from '@yuuvis/client-shell-core';\n\n@Component({\n selector: 'yuv-email-tile-extension',\n standalone: true,\n imports: [NgClass],\n template: `\n @if (hasAttachements()) {\n <span>{{ attachments().length }}</span>\n <svg class=\"icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"#5f6368\" viewBox=\"0 -960 960 960\">\n <path\n d=\"M720-330q0 104-73 177T470-80q-104 0-177-73t-73-177v-370q0-75 52.5-127.5T400-880q75 0 127.5 52.5T580-700v350q0 46-32 78t-78 32q-46 0-78-32t-32-78v-370h80v370q0 13 8.5 21.5T470-320q13 0 21.5-8.5T500-350v-350q-1-42-29.5-71T400-800q-42 0-71 29t-29 71v370q-1 71 49 120.5T470-160q70 0 119-49.5T640-330v-390h80v390Z\"\n />\n </svg>\n }\n `,\n styles: [\n `\n :host {\n display: flex;\n justify-content: end;\n margin-top: 0.5rem;\n\n .icon {\n height: 1rem;\n }\n }\n `\n ],\n host: {\n '[class.attachments]': 'hasAttachements()'\n }\n})\nexport class EmailTileExtensionComponent implements TileExtensionComponent {\n data = input.required<any>();\n attachments = computed(() => this.data()['appSystemmail:attachments'] || []);\n hasAttachements = computed(() => !!this.data()['appSystemmail:attachmentCount']);\n\n onClick(a: string, evt: Event) {\n evt.preventDefault();\n evt.stopPropagation();\n\n alert(`You clicked '${a}' my friend.`);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i3","TranslateModule","i2"],"mappings":"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"}
package/forms/index.d.ts CHANGED
@@ -1,11 +1,5 @@
1
- export { CatalogComponent } from './lib/elements/catalog/catalog.component';
2
- export { DatetimeRangeComponent } from './lib/elements/datetime-range/datetime-range.component';
3
- export { DatetimeComponent } from './lib/elements/datetime/datetime.component';
4
- export { NumberRangeComponent } from './lib/elements/number-range/number-range.component';
5
- export { NumberComponent } from './lib/elements/number/number.component';
6
- export { OrganizationComponent } from './lib/elements/organization/organization.component';
7
- export { StringComponent } from './lib/elements/string/string.component';
8
1
  export { FormInputComponent } from './lib/form-input/form-input.component';
2
+ export * from './lib/elements';
9
3
  export * from './lib/forms.module';
10
4
  export * from './lib/elements/range-select-date/range-select-date.component';
11
5
  export * from './lib/elements/range-select-date/range-select-date.interface';
@@ -0,0 +1,38 @@
1
+ import { ControlValueAccessor } from '@angular/forms';
2
+ import { Situation, TranslateService } from '@yuuvis/client-core';
3
+ import { DataGridSizeType } from '../model/data-grid.interface';
4
+ import * as i0 from "@angular/core";
5
+ export declare class DataGridComponent implements ControlValueAccessor {
6
+ #private;
7
+ readonly trnaslate: TranslateService;
8
+ situation: import("@angular/core").InputSignal<Situation>;
9
+ formElement: import("@angular/core").InputSignal<Record<string, any> | undefined>;
10
+ formControl: import("@angular/core").InputSignal<any>;
11
+ classifications: import("@angular/core").InputSignal<string[]>;
12
+ readonly: import("@angular/core").InputSignal<boolean>;
13
+ size: import("@angular/core").InputSignal<DataGridSizeType>;
14
+ displayedColumns: import("@angular/core").WritableSignal<any[]>;
15
+ displayedColumnsWithActions: import("@angular/core").WritableSignal<string[]>;
16
+ dataSource: import("@angular/core").WritableSignal<any[]>;
17
+ tableLabel: import("@angular/core").Signal<any>;
18
+ selectedRow: import("@angular/core").WritableSignal<null>;
19
+ initalTableUpdate: boolean;
20
+ icons: {
21
+ add: any;
22
+ more: any;
23
+ };
24
+ copyLine(element: any): void;
25
+ onMenuTriggert(element: any | null): void;
26
+ editRow(element: any): void;
27
+ addRow(): void;
28
+ removeRow(element: any): void;
29
+ propagateChange: (fn: () => void) => void;
30
+ validationChange: () => void;
31
+ writeValue(obj: any): void;
32
+ registerOnChange(fn: any): void;
33
+ registerOnTouched(fn: any): void;
34
+ setDisabledState?(isDisabled: boolean): void;
35
+ onValueChange(e: any): void;
36
+ static ɵfac: i0.ɵɵFactoryDeclaration<DataGridComponent, never>;
37
+ static ɵcmp: i0.ɵɵComponentDeclaration<DataGridComponent, "yuv-data-grid", never, { "situation": { "alias": "situation"; "required": false; "isSignal": true; }; "formElement": { "alias": "formElement"; "required": false; "isSignal": true; }; "formControl": { "alias": "formControl"; "required": false; "isSignal": true; }; "classifications": { "alias": "classifications"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
38
+ }
@@ -0,0 +1,21 @@
1
+ import { OnInit } from '@angular/core';
2
+ import { FormGroup } from '@angular/forms';
3
+ import { Situation } from '@yuuvis/client-core';
4
+ import * as i0 from "@angular/core";
5
+ export declare class EditTableDataComponent<T = any> implements OnInit {
6
+ #private;
7
+ errorMassage: import("@angular/core").WritableSignal<any[] | null>;
8
+ tableForm: FormGroup;
9
+ isInnerTableForm: import("@angular/core").InputSignal<boolean>;
10
+ formElement: {
11
+ [key: string]: any;
12
+ };
13
+ situation: Situation;
14
+ header: string;
15
+ adding: boolean | undefined;
16
+ cancel(): void;
17
+ submit(): void;
18
+ ngOnInit(): void;
19
+ static ɵfac: i0.ɵɵFactoryDeclaration<EditTableDataComponent<any>, never>;
20
+ static ɵcmp: i0.ɵɵComponentDeclaration<EditTableDataComponent<any>, "yuv-edit-table-data", never, { "isInnerTableForm": { "alias": "isInnerTableForm"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
21
+ }
@@ -0,0 +1,14 @@
1
+ export declare enum DataGridSizeType {
2
+ SMALL = "small",
3
+ MEDIUM = "medium",
4
+ LARGE = "large",
5
+ XLARGE = "extra-large",
6
+ AUTO = "auto"
7
+ }
8
+ export interface DataGridSize {
9
+ extralarge: DataGridSizeType.XLARGE;
10
+ large: DataGridSizeType.LARGE;
11
+ medium: DataGridSizeType.MEDIUM;
12
+ small: DataGridSizeType.SMALL;
13
+ auto: DataGridSizeType.AUTO;
14
+ }
@@ -0,0 +1,10 @@
1
+ export * from './catalog/catalog.component';
2
+ export * from './data-grid/data-grid/data-grid.component';
3
+ export * from './datetime/datetime.component';
4
+ export * from './datetime-range/datetime-range.component';
5
+ export * from './number/number.component';
6
+ export * from './number-range/number-range.component';
7
+ export * from './organization/organization.component';
8
+ export * from './range-select-date/range-select-date.component';
9
+ export * from './range-select-filesize/range-select-filesize.component';
10
+ export * from './string/string.component';