-
+
+ [isDisabled]="snapshot.isDisabled"
+ isListView="true"
+ [removeMode]="true"
+ (remove)="removeLoadedAsset(asset)"
+ (update)="notifyOthers(asset)">
@@ -90,4 +95,8 @@
(assetReplaced)="notifyOthers($event)"
(assetUpdated)="notifyOthers($event)"
(dialogClose)="editDone()">
-
\ No newline at end of file
+
+
+
+
\ No newline at end of file
diff --git a/frontend/src/app/features/content/shared/forms/assets-editor.component.ts b/frontend/src/app/features/content/shared/forms/assets-editor.component.ts
index 52ee4bc6c..18b660a77 100644
--- a/frontend/src/app/features/content/shared/forms/assets-editor.component.ts
+++ b/frontend/src/app/features/content/shared/forms/assets-editor.component.ts
@@ -9,7 +9,7 @@ import { CdkDrag, CdkDragDrop, CdkDropList } from '@angular/cdk/drag-drop';
import { NgFor, NgIf } from '@angular/common';
import { booleanAttribute, ChangeDetectionStrategy, Component, forwardRef, Input, OnInit } from '@angular/core';
import { NG_VALUE_ACCESSOR } from '@angular/forms';
-import { AssetComponent, AssetDialogComponent, AssetDto, AssetSelectorComponent, DialogModel, FileDropDirective, LocalStoreService, MessageBus, ModalDirective, ResizedDirective, ResolveAssets, Settings, sorted, StatefulControlComponent, Subscriptions, TranslatePipe, Types } from '@app/shared';
+import { AssetComponent, AssetDialogComponent, AssetDto, AssetSelectorComponent, ChatDialogComponent, DialogModel, FileDropDirective, HTTP, LocalStoreService, MessageBus, ModalDirective, ResizedDirective, ResolveAssets, Settings, sorted, StatefulControlComponent, Subscriptions, TranslatePipe, Types } from '@app/shared';
export const SQX_ASSETS_EDITOR_CONTROL_VALUE_ACCESSOR: any = {
provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => AssetsEditorComponent), multi: true,
@@ -25,10 +25,10 @@ class AssetUpdated {
interface State {
// The uploading files.
- assetFiles: ReadonlyArray
;
+ assetFiles: ReadonlyArray;
// The assets to render.
- assets: ReadonlyArray;
+ assetItems: ReadonlyArray;
// The asset to edit.
editAsset?: AssetDto;
@@ -55,6 +55,7 @@ interface State {
AssetSelectorComponent,
CdkDrag,
CdkDropList,
+ ChatDialogComponent,
FileDropDirective,
ModalDirective,
NgFor,
@@ -69,6 +70,9 @@ export class AssetsEditorComponent extends StatefulControlComponent x.id))) {
+ if (!Types.equals(obj, this.snapshot.assetItems.map(x => x.id))) {
const assetIds: string[] = obj;
this.assetsResolver.resolveMany(obj)
@@ -104,7 +110,7 @@ export class AssetsEditorComponent extends StatefulControlComponent {
this.setAssets(items);
- if (this.snapshot.assets.length !== assetIds.length) {
+ if (this.snapshot.assetItems.length !== assetIds.length) {
this.updateValue();
}
},
@@ -126,7 +132,7 @@ export class AssetsEditorComponent extends StatefulControlComponent {
- this.setAssets(this.snapshot.assets.replacedBy('id', event.asset));
+ this.setAssets(this.snapshot.assetItems.replacedBy('id', event.asset));
}));
}
@@ -135,10 +141,26 @@ export class AssetsEditorComponent extends StatefulControlComponent) {
- this.next({ assets });
+ this.next({ assetItems: assets });
+ }
+
+ public addBlob(content: string | HTTP.UploadFile | null | undefined) {
+ this.chatDialog.hide();
+
+ if (content && !Types.isString(content)) {
+ this.addFiles([content]);
+ }
+ }
+
+ public addAssetFromAI(file: string | HTTP.UploadFile | null | undefined) {
+ this.chatDialog.hide();
+
+ if (!Types.isString(file) && file) {
+ this.addFiles([file]);
+ }
}
- public addFiles(files: ReadonlyArray) {
+ public addFiles(files: ReadonlyArray) {
for (const file of files) {
this.next(s => ({
...s,
@@ -148,7 +170,7 @@ export class AssetsEditorComponent extends StatefulControlComponent) {
- this.setAssets([...this.snapshot.assets, ...assets]);
+ this.setAssets([...this.snapshot.assetItems, ...assets]);
if (assets.length > 0) {
this.updateValue();
@@ -157,12 +179,12 @@ export class AssetsEditorComponent extends StatefulControlComponent ({
...s,
assetFiles: s.assetFiles.removed(file),
- assets: [asset, ...s.assets],
+ assetItems: [asset, ...s.assetItems],
}));
this.updateValue();
@@ -179,13 +201,13 @@ export class AssetsEditorComponent extends StatefulControlComponent ({
...s,
assetFiles: s.assetFiles.removed(file),
@@ -205,7 +227,7 @@ export class AssetsEditorComponent extends StatefulControlComponent x.id);
+ const ids = this.snapshot.assetItems.map(x => x.id);
if (ids.length === 0) {
this.callChange(null);
diff --git a/frontend/src/app/features/content/shared/forms/field-editor.component.html b/frontend/src/app/features/content/shared/forms/field-editor.component.html
index 608b560b0..99f37e1c9 100644
--- a/frontend/src/app/features/content/shared/forms/field-editor.component.html
+++ b/frontend/src/app/features/content/shared/forms/field-editor.component.html
@@ -1,7 +1,7 @@