@yuuvis/client-framework 2.1.15 → 2.1.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/common/lib/services/form-translate/form-translate.service.d.ts +15 -0
- package/common/lib/services/index.d.ts +1 -0
- package/fesm2022/yuuvis-client-framework-autocomplete.mjs +2 -4
- package/fesm2022/yuuvis-client-framework-autocomplete.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-common.mjs +70 -2
- package/fesm2022/yuuvis-client-framework-common.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-forms.mjs +5 -5
- package/fesm2022/yuuvis-client-framework-forms.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-metadata-form.mjs +4 -4
- package/fesm2022/yuuvis-client-framework-metadata-form.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-object-details.mjs +14 -8
- package/fesm2022/yuuvis-client-framework-object-details.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-object-summary.mjs +2 -2
- package/fesm2022/yuuvis-client-framework-object-summary.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-object-versions.mjs +2 -2
- package/fesm2022/yuuvis-client-framework-object-versions.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-renderer.mjs +117 -19
- package/fesm2022/yuuvis-client-framework-renderer.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-widget-grid.mjs +4 -4
- package/fesm2022/yuuvis-client-framework-widget-grid.mjs.map +1 -1
- package/lib/assets/i18n/de.json +21 -2
- package/lib/assets/i18n/en.json +22 -3
- package/object-details/lib/object-details-header/object-details-header.component.d.ts +1 -0
- package/package.json +4 -4
- package/renderer/lib/property-renderer/boolean.renderer.component.d.ts +6 -0
- package/renderer/lib/property-renderer/index.d.ts +11 -0
- package/renderer/lib/property-renderer/table.renderer.component.d.ts +9 -0
- package/renderer/lib/services/renderer/renderer.interface.d.ts +2 -6
- package/renderer/lib/services/renderer/renderer.service.d.ts +1 -1
- package/widget-grid/lib/widget-grid.component.d.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yuuvis-client-framework-renderer.mjs","sources":["../../../../../libs/yuuvis/client-framework/renderer/src/lib/property-renderer/abstract.renderer.ts","../../../../../libs/yuuvis/client-framework/renderer/src/lib/property-renderer/datetime.renderer.ts","../../../../../libs/yuuvis/client-framework/renderer/src/lib/property-renderer/decimal.renderer.component.ts","../../../../../libs/yuuvis/client-framework/renderer/src/lib/property-renderer/filesize.renderer.component.ts","../../../../../libs/yuuvis/client-framework/renderer/src/lib/property-renderer/icon.renderer.component.ts","../../../../../libs/yuuvis/client-framework/renderer/src/lib/property-renderer/integer.renderer.component.ts","../../../../../libs/yuuvis/client-framework/renderer/src/lib/property-renderer/organization.renderer.ts","../../../../../libs/yuuvis/client-framework/renderer/src/lib/property-renderer/string.renderer.component.ts","../../../../../libs/yuuvis/client-framework/renderer/src/lib/property-renderer/unknown.renderer.ts","../../../../../libs/yuuvis/client-framework/renderer/src/lib/services/renderer/renderer.service.ts","../../../../../libs/yuuvis/client-framework/renderer/src/lib/renderer.directive.ts","../../../../../libs/yuuvis/client-framework/renderer/src/yuuvis-client-framework-renderer.ts"],"sourcesContent":["import { Component, inject, input } from '@angular/core';\nimport { SchemaResponseFieldDefinition, SystemService } from '@yuuvis/client-core';\n\n/**\n * Abstract class to be extended by property renderers\n */\n@Component({\n selector: 'yuv-abstract-renderer',\n standalone: true,\n template: ''\n})\nexport abstract class AbstractRendererComponent<T = string, U = null> {\n #system = inject(SystemService);\n\n propertyName = input.required<string>();\n value = input.required<T | null>();\n meta = input<Record<string, unknown> | U>();\n\n protected getProperty(): SchemaResponseFieldDefinition | undefined {\n return this.#system.system?.allFields[this.propertyName()];\n }\n}\n","import { Component } from '@angular/core';\nimport { AbstractRendererComponent } from './abstract.renderer';\nimport { LocaleDatePipe } from '@yuuvis/client-core';\n\n@Component({\n selector: 'yuv-datetime-renderer',\n standalone: true,\n imports: [LocaleDatePipe],\n template: '{{(value() || undefined) | localeDate}}',\n styles: [\n `\n :host {\n display: inline-block;\n padding: var(--tile-slot-padding);\n }\n `\n ]\n})\nexport class DateTimeRendererComponent extends AbstractRendererComponent<Date> {}\n","import { Component } from '@angular/core';\nimport { AbstractRendererComponent } from './abstract.renderer';\n\n@Component({\n selector: 'yuv-decimal-renderer',\n standalone: true,\n template: '{{value()}}',\n styles: [\n `\n :host {\n display: inline-block;\n padding: var(--tile-slot-padding);\n }\n `\n ]\n})\nexport class DecimalRendererComponent extends AbstractRendererComponent<number> {\n // TODO: deal with precision and scale\n}\n","import { Component, computed } from '@angular/core';\nimport { AbstractRendererComponent } from './abstract.renderer';\nimport { FileSizePipe } from '@yuuvis/client-core';\n\n@Component({\n selector: 'yuv-string-renderer',\n imports: [FileSizePipe],\n standalone: true,\n template: '{{parsedValue() | fileSize}}',\n styles: [\n `\n :host {\n display: inline-block;\n padding: var(--tile-slot-padding);\n }\n `\n ]\n})\nexport class FileSizeRendererComponent extends AbstractRendererComponent {\n parsedValue = computed<number>(() => {\n let n = 0;\n const v = this.value();\n if (v)\n try {\n n = parseInt(v);\n } catch (e) {\n console.error(e);\n }\n return n;\n });\n}\n","import { Component, effect, inject } from '@angular/core';\nimport { MatIcon, MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { ObjectTypeIconComponent } from '@yuuvis/client-framework/icons';\nimport { AbstractRendererComponent } from './abstract.renderer';\n\n@Component({\n selector: 'yuv-icon-renderer',\n standalone: true,\n imports: [ObjectTypeIconComponent, MatIcon],\n template: ` @let icon = value();\n @if (propertyName() !== 'custom') {\n <yuv-object-type-icon [objectTypeId]=\"icon || ''\"></yuv-object-type-icon>\n } @else if (icon !== null) {\n @let metaData = meta();\n @if (metaData && metaData['isFontIcon']) {\n <mat-icon>{{ icon }}</mat-icon>\n } @else {\n <mat-icon [svgIcon]=\"customId\"></mat-icon>\n }\n }`,\n styles: [\n `\n :host {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--tile-slot-padding);\n yuv-icon,\n yuv-object-type-icon {\n --icon-size: var(--icon-renderer-icon-size);\n width: var(--icon-size);\n height: var(--icon-size);\n }\n }\n `\n ]\n})\nexport class IconRendererComponent extends AbstractRendererComponent {\n readonly #iconRegistry = inject(MatIconRegistry);\n\n readonly #sanitizer = inject(DomSanitizer);\n protected readonly customId = crypto.randomUUID();\n\n #registerIconsEffect = effect(async () => {\n const meta = this.meta();\n this.propertyName() === 'custom' &&\n !(meta && meta['isFontIcon']) &&\n this.#iconRegistry.addSvgIconLiteral(this.customId, this.#sanitizer.bypassSecurityTrustHtml(this.value() as string));\n });\n}\n","import { Component } from '@angular/core';\nimport { AbstractRendererComponent } from './abstract.renderer';\n\n@Component({\n selector: 'yuv-integer-renderer',\n standalone: true,\n template: '{{value()}}',\n styles: [\n `\n :host {\n display: inline-block;\n padding: var(--tile-slot-padding);\n }\n `\n ]\n})\nexport class IntegerRendererComponent extends AbstractRendererComponent<number> {}\n","import { Component, computed } from '@angular/core';\nimport { AbstractRendererComponent } from './abstract.renderer';\n\n@Component({\n selector: 'yuv-organization-renderer',\n imports: [],\n standalone: true,\n template: '{{resolvedValue()}}',\n styles: [\n `\n :host {\n padding: var(--tile-slot-padding);\n display: var(--yuv-renderer-display, inline-block);\n }\n `\n ]\n})\nexport class OrganizationRendererComponent extends AbstractRendererComponent {\n resolvedValue = computed<string>(() => {\n const m = this.meta();\n return (m ? m['title'] : this.value() || '') as string;\n });\n}\n","import { Component } from '@angular/core';\nimport { AbstractRendererComponent } from './abstract.renderer';\n\n@Component({\n selector: 'yuv-string-renderer',\n standalone: true,\n template: '{{value()}}',\n styles: [\n `\n :host {\n display: inline-block;\n padding: var(--tile-slot-padding);\n }\n `\n ]\n})\nexport class StringRendererComponent extends AbstractRendererComponent {}\n","import { Component } from '@angular/core';\nimport { AbstractRendererComponent } from './abstract.renderer';\n\n@Component({\n selector: 'yuv-unknown-renderer',\n standalone: true,\n imports: [],\n template: '{{value()}}',\n styles: [\n `\n :host {\n display: inline-block;\n padding: var(--tile-slot-padding);\n }\n `\n ]\n})\nexport class UnknownRendererComponent extends AbstractRendererComponent<any> {}\n","import { Injectable, Type, inject, signal } from '@angular/core';\nimport { ContentStreamField, InternalFieldType, RendererType, SchemaResponseFieldDefinition, SystemService } from '@yuuvis/client-core';\nimport { DateTimeRendererComponent } from '../../property-renderer/datetime.renderer';\nimport { DecimalRendererComponent } from '../../property-renderer/decimal.renderer.component';\nimport { FileSizeRendererComponent } from '../../property-renderer/filesize.renderer.component';\nimport { IconRendererComponent } from '../../property-renderer/icon.renderer.component';\nimport { IntegerRendererComponent } from '../../property-renderer/integer.renderer.component';\nimport { OrganizationRendererComponent } from '../../property-renderer/organization.renderer';\nimport { StringRendererComponent } from '../../property-renderer/string.renderer.component';\nimport { UnknownRendererComponent } from '../../property-renderer/unknown.renderer';\nimport { RendererComponent } from './renderer.interface';\nimport { AbstractRendererComponent } from '../../property-renderer/abstract.renderer';\n\n/**\n * Service for managing property type renderers. Renderers are components that will render certain\n * property types.\n *\n * You are able to register your own renderer to overwrite an existing one or provide a custom\n * renderer for your context.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class RendererService {\n private system = inject(SystemService);\n\n #renderers = signal<Record<string, Type<RendererComponent>>>({});\n\n constructor() {\n const initialRenderers: Record<string, Type<RendererComponent>> = {\n integer: IntegerRendererComponent,\n decimal: DecimalRendererComponent,\n datetime: DateTimeRendererComponent,\n icon: IconRendererComponent,\n string: StringRendererComponent\n };\n initialRenderers[InternalFieldType.STRING_ORGANIZATION] = OrganizationRendererComponent;\n initialRenderers[ContentStreamField.LENGTH] = FileSizeRendererComponent;\n this.#renderers.set(initialRenderers);\n }\n\n getRendererByType(type: RendererType): Type<RendererComponent> {\n return this.#renderers()[type] || UnknownRendererComponent;\n }\n\n getRenderer(propertyName: string, typeName?: string): Type<RendererComponent> {\n // try to find a renderer based on property and object type\n let r = this.#renderers()[this._getKey(propertyName, typeName)];\n if (!r) {\n // not special renderer found so we'll try to get one for the internal type\n // of the given property\n const srf: SchemaResponseFieldDefinition | undefined = this.system.system && this.system.system.allFields[propertyName];\n if (srf) {\n r = this.getRendererByType(this.system.getInternalFormElementType(srf.propertyType, srf.classifications));\n }\n }\n\n return r || UnknownRendererComponent;\n }\n\n /**\n * Register a renderer for a particular property. Providing `typeName` will register that renderer\n * for a certain context (use same inputs when calling `getRenderer()`).\n * @param cmp The component to actually render the property\n * @param propertyName property name (used for registering the renderer for a certain context)\n * @param typeName Optional type name (used for registering the renderer for a certain context)\n */\n registerRenderer(cmp: Type<AbstractRendererComponent>, propertyName: string, typeName?: string) {\n this.#renderers.update((curr) => ({ ...curr, ...{ [this._getKey(propertyName, typeName)]: cmp } }));\n }\n\n /**\n *\n * @param type The type of property this renderer is supposed to be used for\n */\n registerRendererByType(type: RendererType, cmp: Type<RendererComponent>) {\n this.#renderers.update((curr) => ({ ...curr, ...{ [type]: cmp } }));\n }\n\n // Generate the unique key for a renderer\n private _getKey(propertyName: string, typeName?: string): string {\n const k = [propertyName];\n typeName && k.push(typeName);\n return k.join('-');\n }\n}\n","import { ComponentRef, Directive, Injector, Type, ViewContainerRef, effect, inject, input, runInInjectionContext } from '@angular/core';\nimport { RendererComponent, RendererDirectiveInput } from './services/renderer/renderer.interface';\nimport { RendererService } from './services/renderer/renderer.service';\n\n/**\n * Structural directive for rendering an obect type property\n */\n@Directive({\n selector: '[yuvRenderer]',\n standalone: true\n})\nexport class RendererDirective {\n private readonly rendererService = inject(RendererService);\n private readonly containerRef = inject(ViewContainerRef);\n private readonly injector = inject(Injector);\n\n component!: ComponentRef<RendererComponent>;\n\n private _rendererInput?: RendererDirectiveInput;\n\n yuvRenderer = input<RendererDirectiveInput | undefined>(undefined);\n\n #yuvRendererEffect = effect(() => {\n const i = this.yuvRenderer();\n if (i && !this._alreadyRendered(i)) {\n this._rendererInput = i;\n\n if (i) {\n if (this.component) this.containerRef.clear();\n const cmp: Type<RendererComponent> = i.rendererType\n ? this.rendererService.getRendererByType(i.rendererType)\n : this.rendererService.getRenderer(i.propertyName);\n\n this.component = this.containerRef.createComponent(cmp);\n // pass inputs to the renderer. As they are signals they need an injection context\n runInInjectionContext(this.injector, () => {\n this.component.setInput('propertyName', i.propertyName);\n this.component.setInput('value', i.value);\n if (i.meta) this.component.setInput('meta', i.meta);\n });\n } else {\n this.containerRef.clear();\n }\n }\n });\n\n private _alreadyRendered(i: RendererDirectiveInput): boolean {\n return !!this._rendererInput && JSON.stringify(this._rendererInput) === JSON.stringify(i);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"yuuvis-client-framework-renderer.mjs","sources":["../../../../../libs/yuuvis/client-framework/renderer/src/lib/property-renderer/abstract.renderer.ts","../../../../../libs/yuuvis/client-framework/renderer/src/lib/property-renderer/boolean.renderer.component.ts","../../../../../libs/yuuvis/client-framework/renderer/src/lib/property-renderer/datetime.renderer.ts","../../../../../libs/yuuvis/client-framework/renderer/src/lib/property-renderer/decimal.renderer.component.ts","../../../../../libs/yuuvis/client-framework/renderer/src/lib/property-renderer/filesize.renderer.component.ts","../../../../../libs/yuuvis/client-framework/renderer/src/lib/property-renderer/icon.renderer.component.ts","../../../../../libs/yuuvis/client-framework/renderer/src/lib/property-renderer/integer.renderer.component.ts","../../../../../libs/yuuvis/client-framework/renderer/src/lib/property-renderer/organization.renderer.ts","../../../../../libs/yuuvis/client-framework/renderer/src/lib/property-renderer/string.renderer.component.ts","../../../../../libs/yuuvis/client-framework/renderer/src/lib/property-renderer/table.renderer.component.ts","../../../../../libs/yuuvis/client-framework/renderer/src/lib/property-renderer/unknown.renderer.ts","../../../../../libs/yuuvis/client-framework/renderer/src/lib/services/renderer/renderer.service.ts","../../../../../libs/yuuvis/client-framework/renderer/src/lib/renderer.directive.ts","../../../../../libs/yuuvis/client-framework/renderer/src/yuuvis-client-framework-renderer.ts"],"sourcesContent":["import { Component, inject, input } from '@angular/core';\nimport { SchemaResponseFieldDefinition, SystemService } from '@yuuvis/client-core';\n\n/**\n * Abstract class to be extended by property renderers\n */\n@Component({\n selector: 'yuv-abstract-renderer',\n template: ''\n})\nexport abstract class AbstractRendererComponent<T = string, U = null> {\n #system = inject(SystemService);\n\n propertyName = input.required<string>();\n value = input.required<T | null>();\n meta = input<Record<string, unknown> | U>();\n\n protected getProperty(): SchemaResponseFieldDefinition | undefined {\n return this.#system.system?.allFields[this.propertyName()];\n }\n}\n","import { Component } from '@angular/core';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { AbstractRendererComponent } from './abstract.renderer';\nimport { MatIcon } from '@angular/material/icon';\n\n@Component({\n selector: 'yuv-boolean-renderer',\n imports: [MatIcon],\n template: ` <mat-icon>{{ value() ? 'check_box' : 'check_box_outline_blank' }}</mat-icon>`,\n styles: [\n `\n :host {\n --mdc-checkbox-state-layer-size: 18px;\n display: flex;\n padding: var(--tile-slot-padding);\n }\n `\n ]\n})\nexport class BooleanRendererComponent extends AbstractRendererComponent {}\n","import { Component } from '@angular/core';\nimport { AbstractRendererComponent } from './abstract.renderer';\nimport { LocaleDatePipe } from '@yuuvis/client-core';\n\n@Component({\n selector: 'yuv-datetime-renderer',\n imports: [LocaleDatePipe],\n template: '{{(value() || undefined) | localeDate}}',\n styles: [\n `\n :host {\n display: inline-block;\n padding: var(--tile-slot-padding);\n }\n `\n ]\n})\nexport class DateTimeRendererComponent extends AbstractRendererComponent<Date> {}\n","import { Component } from '@angular/core';\nimport { AbstractRendererComponent } from './abstract.renderer';\n\n@Component({\n selector: 'yuv-decimal-renderer',\n template: '{{value()}}',\n styles: [\n `\n :host {\n display: inline-block;\n padding: var(--tile-slot-padding);\n }\n `\n ]\n})\nexport class DecimalRendererComponent extends AbstractRendererComponent<number> {\n // TODO: deal with precision and scale\n}\n","import { Component, computed } from '@angular/core';\nimport { AbstractRendererComponent } from './abstract.renderer';\nimport { FileSizePipe } from '@yuuvis/client-core';\n\n@Component({\n selector: 'yuv-string-renderer',\n imports: [FileSizePipe],\n template: '{{parsedValue() | fileSize}}',\n styles: [\n `\n :host {\n display: inline-block;\n padding: var(--tile-slot-padding);\n }\n `\n ]\n})\nexport class FileSizeRendererComponent extends AbstractRendererComponent {\n parsedValue = computed<number>(() => {\n let n = 0;\n const v = this.value();\n if (v)\n try {\n n = parseInt(v);\n } catch (e) {\n console.error(e);\n }\n return n;\n });\n}\n","import { Component, effect, inject } from '@angular/core';\nimport { MatIcon, MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { ObjectTypeIconComponent } from '@yuuvis/client-framework/icons';\nimport { AbstractRendererComponent } from './abstract.renderer';\n\n@Component({\n selector: 'yuv-icon-renderer',\n imports: [ObjectTypeIconComponent, MatIcon],\n template: ` @let icon = value();\n @if (propertyName() !== 'custom') {\n <yuv-object-type-icon [objectTypeId]=\"icon || ''\"></yuv-object-type-icon>\n } @else if (icon !== null) {\n @let metaData = meta();\n @if (metaData && metaData['isFontIcon']) {\n <mat-icon>{{ icon }}</mat-icon>\n } @else {\n <mat-icon [svgIcon]=\"customId\"></mat-icon>\n }\n }`,\n styles: [\n `\n :host {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--tile-slot-padding);\n yuv-icon,\n yuv-object-type-icon {\n --icon-size: var(--icon-renderer-icon-size);\n width: var(--icon-size);\n height: var(--icon-size);\n }\n }\n `\n ]\n})\nexport class IconRendererComponent extends AbstractRendererComponent {\n readonly #iconRegistry = inject(MatIconRegistry);\n\n readonly #sanitizer = inject(DomSanitizer);\n protected readonly customId = crypto.randomUUID();\n\n #registerIconsEffect = effect(async () => {\n const meta = this.meta();\n this.propertyName() === 'custom' &&\n !(meta && meta['isFontIcon']) &&\n this.#iconRegistry.addSvgIconLiteral(this.customId, this.#sanitizer.bypassSecurityTrustHtml(this.value() as string));\n });\n}\n","import { Component } from '@angular/core';\nimport { AbstractRendererComponent } from './abstract.renderer';\n\n@Component({\n selector: 'yuv-integer-renderer',\n template: '{{value()}}',\n styles: [\n `\n :host {\n display: inline-block;\n padding: var(--tile-slot-padding);\n }\n `\n ]\n})\nexport class IntegerRendererComponent extends AbstractRendererComponent<number> {}\n","import { Component, computed } from '@angular/core';\nimport { AbstractRendererComponent } from './abstract.renderer';\n\n@Component({\n selector: 'yuv-organization-renderer',\n standalone: true,\n template: '{{resolvedValue()}}',\n styles: [\n `\n :host {\n padding: var(--tile-slot-padding);\n display: var(--yuv-renderer-display, inline-block);\n }\n `\n ]\n})\nexport class OrganizationRendererComponent extends AbstractRendererComponent {\n resolvedValue = computed<string>(() => {\n const m = this.meta();\n return (m ? m['title'] : this.value() || '') as string;\n });\n}\n","import { Component } from '@angular/core';\nimport { AbstractRendererComponent } from './abstract.renderer';\n\n@Component({\n selector: 'yuv-string-renderer',\n template: '{{value()}}',\n styles: [\n `\n :host {\n display: inline-block;\n padding: var(--tile-slot-padding);\n }\n `\n ]\n})\nexport class StringRendererComponent extends AbstractRendererComponent {}\n","import { CommonModule } from '@angular/common';\nimport { Component, computed } from '@angular/core';\nimport { TranslateModule } from '@yuuvis/client-core';\nimport { AbstractRendererComponent } from './abstract.renderer';\n@Component({\n selector: 'yuv-table-renderer',\n standalone: true,\n imports: [CommonModule, TranslateModule],\n template: `\n <div class=\"table-container\">\n <table>\n <thead>\n <tr>\n @for (header of tableHeaders(); track header) {\n <th>{{ header }}</th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of tableData(); track $index) {\n <tr>\n @for (header of tableHeaders(); track header) {\n <td>{{ row[header] }}</td>\n }\n </tr>\n }\n </tbody>\n </table>\n @if (reducedData()) {\n <p>\n {{ 'yuv.table.renderer.moreEntries' | translate: { count: value()?.length } }}\n </p>\n }\n </div>\n `,\n styles: [\n `\n :host {\n display: flex;\n padding: var(--tile-slot-padding);\n width: 100%;\n }\n\n .table-container {\n width: 100%;\n overflow-x: auto;\n max-width: 100%;\n }\n\n table {\n width: 100%;\n border-collapse: collapse;\n min-width: 400px;\n }\n\n th,\n td {\n padding: 8px;\n text-align: left;\n border-bottom: 1px solid var(--ymt-outline-variant);\n }\n\n th {\n background-color: var(--_object-summary-section-background, #f2f2f2);\n font-weight: bold;\n }\n\n tr:hover {\n background-color: var(--ymt-hover-background);\n }\n `\n ]\n})\nexport class TableRendererComponent extends AbstractRendererComponent<any[]> {\n protected tableHeaders = computed(() => {\n const value = this.value();\n if (!value || !value.length) return [];\n\n // Extract all unique headers from the data\n const headers = new Set<string>();\n value.forEach((item) => {\n Object.keys(item).forEach((key) => headers.add(key));\n });\n\n return Array.from(headers);\n });\n\n protected tableData = computed(() => {\n const data = this.value() || [];\n if (data.length > 10) {\n return data.slice(0, 10);\n }\n return data;\n });\n\n protected reducedData = computed(() => {\n const data = this.value() || [];\n return data.length > 10;\n });\n}\n","import { Component } from '@angular/core';\nimport { AbstractRendererComponent } from './abstract.renderer';\n\n@Component({\n selector: 'yuv-unknown-renderer',\n template: '{{value()}}',\n styles: [\n `\n :host {\n display: inline-block;\n padding: var(--tile-slot-padding);\n }\n `\n ]\n})\nexport class UnknownRendererComponent extends AbstractRendererComponent<any> {}\n","import { Injectable, Type, inject, signal } from '@angular/core';\nimport { ContentStreamField, InternalFieldType, RendererType, SchemaResponseFieldDefinition, SystemService } from '@yuuvis/client-core';\nimport { RendererComponent } from './renderer.interface';\nimport {\n AbstractRendererComponent,\n BooleanRendererComponent,\n DateTimeRendererComponent,\n DecimalRendererComponent,\n FileSizeRendererComponent,\n IconRendererComponent,\n IntegerRendererComponent,\n OrganizationRendererComponent,\n StringRendererComponent,\n UnknownRendererComponent\n} from '../../property-renderer';\nimport { TableRendererComponent } from '../../property-renderer/table.renderer.component';\n\n/**\n * Service for managing property type renderers. Renderers are components that will render certain\n * property types.\n *\n * You are able to register your own renderer to overwrite an existing one or provide a custom\n * renderer for your context.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class RendererService {\n private system = inject(SystemService);\n\n #renderers = signal<Record<string, Type<RendererComponent>>>({});\n\n constructor() {\n const initialRenderers: Record<string, Type<RendererComponent>> = {\n integer: IntegerRendererComponent,\n decimal: DecimalRendererComponent,\n datetime: DateTimeRendererComponent,\n icon: IconRendererComponent,\n string: StringRendererComponent,\n boolean: BooleanRendererComponent,\n table: TableRendererComponent\n };\n initialRenderers[InternalFieldType.STRING_ORGANIZATION] = OrganizationRendererComponent;\n initialRenderers[ContentStreamField.LENGTH] = FileSizeRendererComponent;\n this.#renderers.set(initialRenderers);\n }\n\n getRendererByType(type: RendererType): Type<RendererComponent> {\n return this.#renderers()[type] || UnknownRendererComponent;\n }\n\n getRenderer(propertyName: string, typeName?: string): Type<RendererComponent> {\n // try to find a renderer based on property and object type\n let r = this.#renderers()[this._getKey(propertyName, typeName)];\n\n if (!r) {\n // not special renderer found so we'll try to get one for the internal type\n // of the given property\n const srf: SchemaResponseFieldDefinition | undefined = this.system.system && this.system.system.allFields[propertyName];\n if (srf) {\n r = this.getRendererByType(this.system.getInternalFormElementType(srf.propertyType, srf.classifications));\n }\n }\n\n return r || UnknownRendererComponent;\n }\n\n /**\n * Register a renderer for a particular property. Providing `typeName` will register that renderer\n * for a certain context (use same inputs when calling `getRenderer()`).\n * @param cmp The component to actually render the property\n * @param propertyName property name (used for registering the renderer for a certain context)\n * @param typeName Optional type name (used for registering the renderer for a certain context)\n */\n registerRenderer(cmp: Type<AbstractRendererComponent>, propertyName: string, typeName?: string) {\n this.#renderers.update((curr) => ({ ...curr, ...{ [this._getKey(propertyName, typeName)]: cmp } }));\n }\n\n /**\n *\n * @param type The type of property this renderer is supposed to be used for\n */\n registerRendererByType(type: RendererType, cmp: Type<RendererComponent>) {\n this.#renderers.update((curr) => ({ ...curr, ...{ [type]: cmp } }));\n }\n\n // Generate the unique key for a renderer\n private _getKey(propertyName: string, typeName?: string): string {\n const k = [propertyName];\n typeName && k.push(typeName);\n return k.join('-');\n }\n}\n","import { ComponentRef, Directive, Injector, Type, ViewContainerRef, effect, inject, input, runInInjectionContext } from '@angular/core';\nimport { RendererComponent, RendererDirectiveInput } from './services/renderer/renderer.interface';\nimport { RendererService } from './services/renderer/renderer.service';\n\n/**\n * Structural directive for rendering an obect type property\n */\n@Directive({\n selector: '[yuvRenderer]',\n standalone: true\n})\nexport class RendererDirective {\n private readonly rendererService = inject(RendererService);\n private readonly containerRef = inject(ViewContainerRef);\n private readonly injector = inject(Injector);\n\n component!: ComponentRef<RendererComponent>;\n\n private _rendererInput?: RendererDirectiveInput;\n\n yuvRenderer = input<RendererDirectiveInput | undefined>(undefined);\n\n #yuvRendererEffect = effect(() => {\n const i = this.yuvRenderer();\n if (i && !this._alreadyRendered(i)) {\n this._rendererInput = i;\n\n if (i) {\n if (this.component) this.containerRef.clear();\n\n const cmp: Type<RendererComponent> = i.rendererType\n ? this.rendererService.getRendererByType(i.rendererType)\n : this.rendererService.getRenderer(i.propertyName);\n\n this.component = this.containerRef.createComponent(cmp);\n // pass inputs to the renderer. As they are signals they need an injection context\n // runInInjectionContext(this.injector, () => { // FOLLOWUP: this is not needed anymore with the new input() API\n this.component.setInput('propertyName', i.propertyName);\n this.component.setInput('value', i.value);\n if (i.meta) this.component.setInput('meta', i.meta);\n // });\n } else {\n this.containerRef.clear();\n }\n }\n });\n\n private _alreadyRendered(i: RendererDirectiveInput): boolean {\n return !!this._rendererInput && JSON.stringify(this._rendererInput) === JSON.stringify(i);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -637,7 +637,7 @@ class YuvWidgetGridComponent {
|
|
|
637
637
|
this.gridChange.emit(mapped);
|
|
638
638
|
}
|
|
639
639
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.12", ngImport: i0, type: YuvWidgetGridComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
640
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.12", type: YuvWidgetGridComponent, isStandalone: true, selector: "yuv-widget-grid", inputs: { gridConfig: { classPropertyName: "gridConfig", publicName: "gridConfig", isSignal: true, isRequired: false, transformFunction: null }, editMode: { classPropertyName: "editMode", publicName: "editMode", isSignal: true, isRequired: false, transformFunction: null }, gridItemConfig: { classPropertyName: "gridItemConfig", publicName: "gridItemConfig", isSignal: true, isRequired: false, transformFunction: null }, buckets: { classPropertyName: "buckets", publicName: "buckets", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { gridChange: "gridChange", gridItemEvent: "gridItemEvent", widgetPickerOpen: "widgetPickerOpen" }, host: { properties: { "class.widget-grid-edit": "editMode()" } }, providers: [WidgetGridService], viewQueries: [{ propertyName: "gridsterItems", first: true, predicate: GridsterItemComponent, descendants: true, isSignal: true }, { propertyName: "widgetPicker", first: true, predicate: ["widgetPicker"], descendants: true, read: TemplateRef, isSignal: true }], ngImport: i0, template: "@if (_editMode()) {\n <button class=\"fab\" mat-fab [attr.aria-label]=\"'yuv.widget-grid.widget.add.label' | translate\" (click)=\"addItem()\">\n <mat-icon>add</mat-icon>\n </button>\n}\n\n@if (widgetGrid.length === 0 && !_editMode()) {\n <div class=\"empty\"
|
|
640
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.12", type: YuvWidgetGridComponent, isStandalone: true, selector: "yuv-widget-grid", inputs: { gridConfig: { classPropertyName: "gridConfig", publicName: "gridConfig", isSignal: true, isRequired: false, transformFunction: null }, editMode: { classPropertyName: "editMode", publicName: "editMode", isSignal: true, isRequired: false, transformFunction: null }, gridItemConfig: { classPropertyName: "gridItemConfig", publicName: "gridItemConfig", isSignal: true, isRequired: false, transformFunction: null }, buckets: { classPropertyName: "buckets", publicName: "buckets", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { gridChange: "gridChange", gridItemEvent: "gridItemEvent", widgetPickerOpen: "widgetPickerOpen" }, host: { properties: { "class.widget-grid-edit": "editMode()" } }, providers: [WidgetGridService], viewQueries: [{ propertyName: "gridsterItems", first: true, predicate: GridsterItemComponent, descendants: true, isSignal: true }, { propertyName: "widgetPicker", first: true, predicate: ["widgetPicker"], descendants: true, read: TemplateRef, isSignal: true }], ngImport: i0, template: "@if (_editMode()) {\n <button class=\"fab\" mat-fab [attr.aria-label]=\"'yuv.widget-grid.widget.add.label' | translate\" (click)=\"addItem()\">\n <mat-icon>add</mat-icon>\n </button>\n}\n\n@if (widgetGrid.length === 0 && !_editMode()) {\n <div class=\"empty\"> \n <!-- <p>{{ 'yuv.widget-grid.empty' | translate }}</p>\n <button ymtButton=\"primary\" (click)=\"_editMode.set(true)\"> \n {{'yuv.widget-grid.empty.create' | translate}}</button> -->\n <ng-content select=\".empty\"><p>{{ 'yuv.widget-grid.empty' | translate }}</p></ng-content>\n </div>\n} @else {\n <gridster [options]=\"options\">\n @for (item of widgetGrid; track item.id) {\n <gridster-item [item]=\"item\">\n @if (_editMode()) {\n <div class=\"toolbar\">\n <!-- drag handle -->\n <mat-icon class=\"dragHandle ymt-icon--size-s\">drag_indicator</mat-icon>\n <!-- edit -->\n <button mat-icon-button (click)=\"openWidgetPicker(item)\"><mat-icon class=\"ymt-icon--size-s\">edit</mat-icon></button>\n <!-- remove -->\n <button mat-icon-button (click)=\"removeItem(item)\"><mat-icon class=\"ymt-icon--size-s\">clear</mat-icon></button>\n </div>\n }\n <div class=\"cmp\">\n <ng-container *ngComponentOutlet=\"item.widget; ndcDynamicInputs: item.widgetConfigMap\"></ng-container>\n </div>\n </gridster-item>\n }\n </gridster>\n}\n<ng-template #widgetPicker>\n <yuv-widget-picker [pickerData]=\"widgetPickerData\" [buckets]=\"buckets()\"></yuv-widget-picker>\n</ng-template>\n", styles: [":host{--_widget-grid-toolbar-background: var(--widget-grid-toolbar-background, var(--ymt-surface));--_widget-grid-on-toolbar: var(--widget-grid-on-toolbar, var(--ymt-on-surface));position:relative}:host .fab{position:absolute;inset-inline-end:var(--ymt-spacing-m);inset-block-end:var(--ymt-spacing-m);z-index:100}:host .cmp{height:100%}:host.widget-grid-edit gridster-item{outline:1px solid var(--ymt-outline);outline-offset:-1px}:host .empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:var(--ymt-on-surface);font:var(--ymt-font-body-medium)}:host .empty p{padding:var(--ymt-spacing-m);max-width:45ch;text-align:center}:host gridster{background-color:transparent}:host gridster ::ng-deep .gridster-column,:host gridster ::ng-deep .gridster-row{border-color:var(--ymt-outline-variant);transition:none}:host gridster-item{transition:none;background-color:transparent}:host gridster-item .toolbar{position:absolute;z-index:1;background-color:var(--_widget-grid-toolbar-background);color:var(--_widget-grid-on-toolbar);right:0;top:var(--ymt-spacing-xs);padding:var(--ymt-spacing-xs);gap:var(--ymt-spacing-s);display:flex;flex-flow:row nowrap;align-items:center;outline:1px solid var(--ymt-outline);outline-offset:-1px}:host gridster-item .toolbar button{color:currentColor}:host gridster-item .dragHandle{display:flex;flex-flow:column;align-items:center;justify-content:center;padding:0 var(--ymt-spacing-s);cursor:move}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }, { kind: "ngmodule", type: DynamicIoModule }, { kind: "directive", type: i4.ComponentOutletInjectorDirective, selector: "[ngComponentOutlet]", exportAs: ["ndcComponentOutletInjector"] }, { kind: "directive", type: i4.ComponentOutletIoDirective, selector: "[ngComponentOutletNdcDynamicInputs],[ngComponentOutletNdcDynamicOutputs]", inputs: ["ngComponentOutletNdcDynamicInputs", "ngComponentOutletNdcDynamicOutputs"], exportAs: ["ndcDynamicIo"] }, { kind: "ngmodule", type: SignalComponentIoModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "component", type: GridsterComponent, selector: "gridster", inputs: ["options"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i5.MatFabButton, selector: "button[mat-fab]", inputs: ["extended"], exportAs: ["matButton"] }, { kind: "component", type: WidgetPickerComponent, selector: "yuv-widget-picker", inputs: ["pickerData", "buckets"], outputs: ["picked", "canceled"] }, { kind: "component", type: GridsterItemComponent, selector: "gridster-item", inputs: ["item"], outputs: ["itemInit", "itemChange", "itemResize"] }] }); }
|
|
641
641
|
}
|
|
642
642
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.12", ngImport: i0, type: YuvWidgetGridComponent, decorators: [{
|
|
643
643
|
type: Component,
|
|
@@ -652,7 +652,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.12", ngImpo
|
|
|
652
652
|
WidgetPickerComponent,
|
|
653
653
|
GridsterItemComponent,
|
|
654
654
|
YmtButtonDirective
|
|
655
|
-
], providers: [WidgetGridService], host: { '[class.widget-grid-edit]': 'editMode()' }, template: "@if (_editMode()) {\n <button class=\"fab\" mat-fab [attr.aria-label]=\"'yuv.widget-grid.widget.add.label' | translate\" (click)=\"addItem()\">\n <mat-icon>add</mat-icon>\n </button>\n}\n\n@if (widgetGrid.length === 0 && !_editMode()) {\n <div class=\"empty\"
|
|
655
|
+
], providers: [WidgetGridService], host: { '[class.widget-grid-edit]': 'editMode()' }, template: "@if (_editMode()) {\n <button class=\"fab\" mat-fab [attr.aria-label]=\"'yuv.widget-grid.widget.add.label' | translate\" (click)=\"addItem()\">\n <mat-icon>add</mat-icon>\n </button>\n}\n\n@if (widgetGrid.length === 0 && !_editMode()) {\n <div class=\"empty\"> \n <!-- <p>{{ 'yuv.widget-grid.empty' | translate }}</p>\n <button ymtButton=\"primary\" (click)=\"_editMode.set(true)\"> \n {{'yuv.widget-grid.empty.create' | translate}}</button> -->\n <ng-content select=\".empty\"><p>{{ 'yuv.widget-grid.empty' | translate }}</p></ng-content>\n </div>\n} @else {\n <gridster [options]=\"options\">\n @for (item of widgetGrid; track item.id) {\n <gridster-item [item]=\"item\">\n @if (_editMode()) {\n <div class=\"toolbar\">\n <!-- drag handle -->\n <mat-icon class=\"dragHandle ymt-icon--size-s\">drag_indicator</mat-icon>\n <!-- edit -->\n <button mat-icon-button (click)=\"openWidgetPicker(item)\"><mat-icon class=\"ymt-icon--size-s\">edit</mat-icon></button>\n <!-- remove -->\n <button mat-icon-button (click)=\"removeItem(item)\"><mat-icon class=\"ymt-icon--size-s\">clear</mat-icon></button>\n </div>\n }\n <div class=\"cmp\">\n <ng-container *ngComponentOutlet=\"item.widget; ndcDynamicInputs: item.widgetConfigMap\"></ng-container>\n </div>\n </gridster-item>\n }\n </gridster>\n}\n<ng-template #widgetPicker>\n <yuv-widget-picker [pickerData]=\"widgetPickerData\" [buckets]=\"buckets()\"></yuv-widget-picker>\n</ng-template>\n", styles: [":host{--_widget-grid-toolbar-background: var(--widget-grid-toolbar-background, var(--ymt-surface));--_widget-grid-on-toolbar: var(--widget-grid-on-toolbar, var(--ymt-on-surface));position:relative}:host .fab{position:absolute;inset-inline-end:var(--ymt-spacing-m);inset-block-end:var(--ymt-spacing-m);z-index:100}:host .cmp{height:100%}:host.widget-grid-edit gridster-item{outline:1px solid var(--ymt-outline);outline-offset:-1px}:host .empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:var(--ymt-on-surface);font:var(--ymt-font-body-medium)}:host .empty p{padding:var(--ymt-spacing-m);max-width:45ch;text-align:center}:host gridster{background-color:transparent}:host gridster ::ng-deep .gridster-column,:host gridster ::ng-deep .gridster-row{border-color:var(--ymt-outline-variant);transition:none}:host gridster-item{transition:none;background-color:transparent}:host gridster-item .toolbar{position:absolute;z-index:1;background-color:var(--_widget-grid-toolbar-background);color:var(--_widget-grid-on-toolbar);right:0;top:var(--ymt-spacing-xs);padding:var(--ymt-spacing-xs);gap:var(--ymt-spacing-s);display:flex;flex-flow:row nowrap;align-items:center;outline:1px solid var(--ymt-outline);outline-offset:-1px}:host gridster-item .toolbar button{color:currentColor}:host gridster-item .dragHandle{display:flex;flex-flow:column;align-items:center;justify-content:center;padding:0 var(--ymt-spacing-s);cursor:move}\n"] }]
|
|
656
656
|
}], ctorParameters: () => [] });
|
|
657
657
|
|
|
658
658
|
class WorkspaceEditComponent {
|
|
@@ -883,7 +883,7 @@ class YuvWidgetGridWorkspacesComponent {
|
|
|
883
883
|
this.configChange.emit(this._workspaceConfig());
|
|
884
884
|
}
|
|
885
885
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.12", ngImport: i0, type: YuvWidgetGridWorkspacesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
886
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.12", type: YuvWidgetGridWorkspacesComponent, isStandalone: true, selector: "yuv-widget-grid-workspaces", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, workspaceConfig: { classPropertyName: "workspaceConfig", publicName: "workspaceConfig", isSignal: true, isRequired: false, transformFunction: null }, buckets: { classPropertyName: "buckets", publicName: "buckets", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { configChange: "configChange", gridItemEvent: "gridItemEvent", editModeChange: "editModeChange" }, ngImport: i0, template: "@let ws = workspace();\n\n<div class=\"toolbar\">\n @if (ws) {\n @let workspaces = _workspaceConfig()?.workspaces || [];\n <button mat-icon-button [disabled]=\"editMode()\" [matMenuTriggerFor]=\"workspacePickerMenu\"><mat-icon>menu</mat-icon></button>\n\n <mat-menu #workspacePickerMenu=\"matMenu\">\n @for (ws of workspaces; track ws.id) {\n <button mat-menu-item (click)=\"setWorkspace(ws.id)\">{{ ws.label }}</button>\n }\n <mat-divider></mat-divider>\n <button mat-menu-item (click)=\"openWorkspaceDialog(true, tplWworkspaceEdit)\">{{ 'yuv.widget-grid.workspaces.workspace.menu.create' | translate }}</button>\n </mat-menu>\n\n @if (!editMode()) {\n <h2 class=\"label\">{{ ws.label }}</h2>\n <button mat-icon-button [matMenuTriggerFor]=\"workspaceMenu\"><mat-icon>more_vert</mat-icon></button>\n <mat-menu #workspaceMenu=\"matMenu\">\n <button mat-menu-item (click)=\"editMode.set(!editMode())\">{{ 'yuv.widget-grid.workspaces.workspace.menu.edit' | translate }}</button>\n <button mat-menu-item (click)=\"deleteCurrentWorkspace()\">{{ 'yuv.widget-grid.workspaces.workspace.menu.delete' | translate }}</button>\n </mat-menu>\n } @else {\n <input type=\"text\" class=\"label\" [formControl]=\"workspaceLabelControl\" />\n <button ymtButton=\"secondary\" (click)=\"revertWorkspaceConfig()\">\n {{ 'yuv.widget-grid.workspaces.editMode.cancel' | translate }}\n </button>\n <button ymtButton=\"primary\" (click)=\"persistWorkspaceConfig()\">\n {{ 'yuv.widget-grid.workspaces.editMode.save' | translate }}\n </button>\n }\n }\n</div>\n\n@if (ws) {\n <yuv-widget-grid\n [gridConfig]=\"_workspaceOptions().gridConfig\"\n [gridItemConfig]=\"gridItemConfig()\"\n [buckets]=\"buckets()\"\n [editMode]=\"editMode()\"\n (gridChange)=\"onGridChange($event)\"\n (gridItemEvent)=\"onGridEvent($event)\"\n >\n </yuv-widget-grid>\n} @else {\n <div class=\"empty\">\n <p>{{ 'yuv.widget-grid.workspaces.empty' | translate }}</p>\n <button ymtButton=\"primary\" (click)=\"openWorkspaceDialog(true, tplWworkspaceEdit)\">\n {{ 'yuv.widget-grid.workspaces.empty.button.create' | translate }}\n </button>\n </div>\n}\n\n<ng-template #tplWworkspaceEdit>\n <yuv-workspace-edit [workspaceForm]=\"workspaceForm\" (workspaceSubmit)=\"saveWorkspace()\"></yuv-workspace-edit>\n</ng-template>\n", styles: [":host{display:flex;flex-direction:column;height:100%;overflow-y:auto}:host .toolbar{display:flex;flex-direction:row;align-items:center;gap:var(--ymt-spacing-m)}:host .toolbar .label{flex:1;font:var(--ymt-font-headline-medium);letter-spacing:var(--ymt-font-headline-medium-tracking);margin-inline:0;margin-block:.75em;padding-inline:.25em 0;padding-block:.25em}:host .toolbar input.label{border:0;background-color:transparent;outline:1px solid var(--ymt-outline)}:host yuv-widget-grid{flex:1}:host
|
|
886
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.12", type: YuvWidgetGridWorkspacesComponent, isStandalone: true, selector: "yuv-widget-grid-workspaces", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, workspaceConfig: { classPropertyName: "workspaceConfig", publicName: "workspaceConfig", isSignal: true, isRequired: false, transformFunction: null }, buckets: { classPropertyName: "buckets", publicName: "buckets", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { configChange: "configChange", gridItemEvent: "gridItemEvent", editModeChange: "editModeChange" }, ngImport: i0, template: "@let ws = workspace();\n\n<div class=\"toolbar\">\n @if (ws) {\n @let workspaces = _workspaceConfig()?.workspaces || [];\n <button mat-icon-button [disabled]=\"editMode()\" [matMenuTriggerFor]=\"workspacePickerMenu\"><mat-icon>menu</mat-icon></button>\n\n <mat-menu #workspacePickerMenu=\"matMenu\">\n @for (ws of workspaces; track ws.id) {\n <button mat-menu-item (click)=\"setWorkspace(ws.id)\">{{ ws.label }}</button>\n }\n <mat-divider></mat-divider>\n <button mat-menu-item (click)=\"openWorkspaceDialog(true, tplWworkspaceEdit)\">{{ 'yuv.widget-grid.workspaces.workspace.menu.create' | translate }}</button>\n </mat-menu>\n\n @if (!editMode()) {\n <h2 class=\"label\">{{ ws.label }}</h2>\n <button mat-icon-button [matMenuTriggerFor]=\"workspaceMenu\"><mat-icon>more_vert</mat-icon></button>\n <mat-menu #workspaceMenu=\"matMenu\">\n <button mat-menu-item (click)=\"editMode.set(!editMode())\">{{ 'yuv.widget-grid.workspaces.workspace.menu.edit' | translate }}</button>\n <button mat-menu-item (click)=\"deleteCurrentWorkspace()\">{{ 'yuv.widget-grid.workspaces.workspace.menu.delete' | translate }}</button>\n </mat-menu>\n } @else {\n <input type=\"text\" class=\"label\" [formControl]=\"workspaceLabelControl\" />\n <button ymtButton=\"secondary\" (click)=\"revertWorkspaceConfig()\">\n {{ 'yuv.widget-grid.workspaces.editMode.cancel' | translate }}\n </button>\n <button ymtButton=\"primary\" (click)=\"persistWorkspaceConfig()\">\n {{ 'yuv.widget-grid.workspaces.editMode.save' | translate }}\n </button>\n }\n }\n</div>\n\n@if (ws) {\n <yuv-widget-grid\n [gridConfig]=\"_workspaceOptions().gridConfig\"\n [gridItemConfig]=\"gridItemConfig()\"\n [buckets]=\"buckets()\"\n [editMode]=\"editMode()\"\n (gridChange)=\"onGridChange($event)\"\n (gridItemEvent)=\"onGridEvent($event)\"\n >\n <div class=\"empty\">\n <p>{{ 'yuv.widget-grid.empty' | translate }}</p>\n <button ymtButton=\"primary\" (click)=\"editMode.set(true)\">\n {{ 'yuv.widget-grid.empty.create' | translate }}\n </button>\n </div>\n </yuv-widget-grid>\n} @else {\n <div class=\"empty\">\n <p>{{ 'yuv.widget-grid.workspaces.empty' | translate }}</p>\n <button ymtButton=\"primary\" (click)=\"openWorkspaceDialog(true, tplWworkspaceEdit)\">\n {{ 'yuv.widget-grid.workspaces.empty.button.create' | translate }}\n </button>\n </div>\n}\n\n<ng-template #tplWworkspaceEdit>\n <yuv-workspace-edit [workspaceForm]=\"workspaceForm\" (workspaceSubmit)=\"saveWorkspace()\"></yuv-workspace-edit>\n</ng-template>\n", styles: [":host{display:flex;flex-direction:column;height:100%;overflow-y:auto}:host .toolbar{display:flex;flex-direction:row;align-items:center;gap:var(--ymt-spacing-m)}:host .toolbar .label{flex:1;font:var(--ymt-font-headline-medium);letter-spacing:var(--ymt-font-headline-medium-tracking);margin-inline:0;margin-block:.75em;padding-inline:.25em 0;padding-block:.25em}:host .toolbar input.label{border:0;background-color:transparent;outline:1px solid var(--ymt-outline)}:host yuv-widget-grid{flex:1}:host .empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: YuvWidgetGridComponent, selector: "yuv-widget-grid", inputs: ["gridConfig", "editMode", "gridItemConfig", "buckets"], outputs: ["gridChange", "gridItemEvent", "widgetPickerOpen"] }, { kind: "directive", type: YmtButtonDirective, selector: "button[ymtButton], a[ymtButton]", inputs: ["ymtButton", "disabled", "aria-disabled", "disableRipple", "disabledInteractive", "button-size"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i4$3.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i4$3.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4$3.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i3$1.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "component", type: WorkspaceEditComponent, selector: "yuv-workspace-edit", inputs: ["workspaceForm"], outputs: ["workspaceSubmit"] }] }); }
|
|
887
887
|
}
|
|
888
888
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.12", ngImport: i0, type: YuvWidgetGridWorkspacesComponent, decorators: [{
|
|
889
889
|
type: Component,
|
|
@@ -900,7 +900,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.12", ngImpo
|
|
|
900
900
|
MatDividerModule,
|
|
901
901
|
TranslateModule,
|
|
902
902
|
WorkspaceEditComponent
|
|
903
|
-
], template: "@let ws = workspace();\n\n<div class=\"toolbar\">\n @if (ws) {\n @let workspaces = _workspaceConfig()?.workspaces || [];\n <button mat-icon-button [disabled]=\"editMode()\" [matMenuTriggerFor]=\"workspacePickerMenu\"><mat-icon>menu</mat-icon></button>\n\n <mat-menu #workspacePickerMenu=\"matMenu\">\n @for (ws of workspaces; track ws.id) {\n <button mat-menu-item (click)=\"setWorkspace(ws.id)\">{{ ws.label }}</button>\n }\n <mat-divider></mat-divider>\n <button mat-menu-item (click)=\"openWorkspaceDialog(true, tplWworkspaceEdit)\">{{ 'yuv.widget-grid.workspaces.workspace.menu.create' | translate }}</button>\n </mat-menu>\n\n @if (!editMode()) {\n <h2 class=\"label\">{{ ws.label }}</h2>\n <button mat-icon-button [matMenuTriggerFor]=\"workspaceMenu\"><mat-icon>more_vert</mat-icon></button>\n <mat-menu #workspaceMenu=\"matMenu\">\n <button mat-menu-item (click)=\"editMode.set(!editMode())\">{{ 'yuv.widget-grid.workspaces.workspace.menu.edit' | translate }}</button>\n <button mat-menu-item (click)=\"deleteCurrentWorkspace()\">{{ 'yuv.widget-grid.workspaces.workspace.menu.delete' | translate }}</button>\n </mat-menu>\n } @else {\n <input type=\"text\" class=\"label\" [formControl]=\"workspaceLabelControl\" />\n <button ymtButton=\"secondary\" (click)=\"revertWorkspaceConfig()\">\n {{ 'yuv.widget-grid.workspaces.editMode.cancel' | translate }}\n </button>\n <button ymtButton=\"primary\" (click)=\"persistWorkspaceConfig()\">\n {{ 'yuv.widget-grid.workspaces.editMode.save' | translate }}\n </button>\n }\n }\n</div>\n\n@if (ws) {\n <yuv-widget-grid\n [gridConfig]=\"_workspaceOptions().gridConfig\"\n [gridItemConfig]=\"gridItemConfig()\"\n [buckets]=\"buckets()\"\n [editMode]=\"editMode()\"\n (gridChange)=\"onGridChange($event)\"\n (gridItemEvent)=\"onGridEvent($event)\"\n >\n </yuv-widget-grid>\n} @else {\n <div class=\"empty\">\n <p>{{ 'yuv.widget-grid.workspaces.empty' | translate }}</p>\n <button ymtButton=\"primary\" (click)=\"openWorkspaceDialog(true, tplWworkspaceEdit)\">\n {{ 'yuv.widget-grid.workspaces.empty.button.create' | translate }}\n </button>\n </div>\n}\n\n<ng-template #tplWworkspaceEdit>\n <yuv-workspace-edit [workspaceForm]=\"workspaceForm\" (workspaceSubmit)=\"saveWorkspace()\"></yuv-workspace-edit>\n</ng-template>\n", styles: [":host{display:flex;flex-direction:column;height:100%;overflow-y:auto}:host .toolbar{display:flex;flex-direction:row;align-items:center;gap:var(--ymt-spacing-m)}:host .toolbar .label{flex:1;font:var(--ymt-font-headline-medium);letter-spacing:var(--ymt-font-headline-medium-tracking);margin-inline:0;margin-block:.75em;padding-inline:.25em 0;padding-block:.25em}:host .toolbar input.label{border:0;background-color:transparent;outline:1px solid var(--ymt-outline)}:host yuv-widget-grid{flex:1}:host
|
|
903
|
+
], template: "@let ws = workspace();\n\n<div class=\"toolbar\">\n @if (ws) {\n @let workspaces = _workspaceConfig()?.workspaces || [];\n <button mat-icon-button [disabled]=\"editMode()\" [matMenuTriggerFor]=\"workspacePickerMenu\"><mat-icon>menu</mat-icon></button>\n\n <mat-menu #workspacePickerMenu=\"matMenu\">\n @for (ws of workspaces; track ws.id) {\n <button mat-menu-item (click)=\"setWorkspace(ws.id)\">{{ ws.label }}</button>\n }\n <mat-divider></mat-divider>\n <button mat-menu-item (click)=\"openWorkspaceDialog(true, tplWworkspaceEdit)\">{{ 'yuv.widget-grid.workspaces.workspace.menu.create' | translate }}</button>\n </mat-menu>\n\n @if (!editMode()) {\n <h2 class=\"label\">{{ ws.label }}</h2>\n <button mat-icon-button [matMenuTriggerFor]=\"workspaceMenu\"><mat-icon>more_vert</mat-icon></button>\n <mat-menu #workspaceMenu=\"matMenu\">\n <button mat-menu-item (click)=\"editMode.set(!editMode())\">{{ 'yuv.widget-grid.workspaces.workspace.menu.edit' | translate }}</button>\n <button mat-menu-item (click)=\"deleteCurrentWorkspace()\">{{ 'yuv.widget-grid.workspaces.workspace.menu.delete' | translate }}</button>\n </mat-menu>\n } @else {\n <input type=\"text\" class=\"label\" [formControl]=\"workspaceLabelControl\" />\n <button ymtButton=\"secondary\" (click)=\"revertWorkspaceConfig()\">\n {{ 'yuv.widget-grid.workspaces.editMode.cancel' | translate }}\n </button>\n <button ymtButton=\"primary\" (click)=\"persistWorkspaceConfig()\">\n {{ 'yuv.widget-grid.workspaces.editMode.save' | translate }}\n </button>\n }\n }\n</div>\n\n@if (ws) {\n <yuv-widget-grid\n [gridConfig]=\"_workspaceOptions().gridConfig\"\n [gridItemConfig]=\"gridItemConfig()\"\n [buckets]=\"buckets()\"\n [editMode]=\"editMode()\"\n (gridChange)=\"onGridChange($event)\"\n (gridItemEvent)=\"onGridEvent($event)\"\n >\n <div class=\"empty\">\n <p>{{ 'yuv.widget-grid.empty' | translate }}</p>\n <button ymtButton=\"primary\" (click)=\"editMode.set(true)\">\n {{ 'yuv.widget-grid.empty.create' | translate }}\n </button>\n </div>\n </yuv-widget-grid>\n} @else {\n <div class=\"empty\">\n <p>{{ 'yuv.widget-grid.workspaces.empty' | translate }}</p>\n <button ymtButton=\"primary\" (click)=\"openWorkspaceDialog(true, tplWworkspaceEdit)\">\n {{ 'yuv.widget-grid.workspaces.empty.button.create' | translate }}\n </button>\n </div>\n}\n\n<ng-template #tplWworkspaceEdit>\n <yuv-workspace-edit [workspaceForm]=\"workspaceForm\" (workspaceSubmit)=\"saveWorkspace()\"></yuv-workspace-edit>\n</ng-template>\n", styles: [":host{display:flex;flex-direction:column;height:100%;overflow-y:auto}:host .toolbar{display:flex;flex-direction:row;align-items:center;gap:var(--ymt-spacing-m)}:host .toolbar .label{flex:1;font:var(--ymt-font-headline-medium);letter-spacing:var(--ymt-font-headline-medium-tracking);margin-inline:0;margin-block:.75em;padding-inline:.25em 0;padding-block:.25em}:host .toolbar input.label{border:0;background-color:transparent;outline:1px solid var(--ymt-outline)}:host yuv-widget-grid{flex:1}:host .empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center}\n"] }]
|
|
904
904
|
}] });
|
|
905
905
|
|
|
906
906
|
const cmp = [
|