diff --git a/app/src/assets/scss/business/_av.scss b/app/src/assets/scss/business/_av.scss
index f710c0dcf..5066cb6d7 100644
--- a/app/src/assets/scss/business/_av.scss
+++ b/app/src/assets/scss/business/_av.scss
@@ -317,6 +317,12 @@
&-img {
height: 100%;
+
+ &--fit {
+ background-size: contain;
+ background-position: center center;
+ background-repeat: no-repeat;
+ }
}
&-content {
diff --git a/app/src/protyle/render/av/gallery/render.ts b/app/src/protyle/render/av/gallery/render.ts
index 2e257a3a0..d6132aa9c 100644
--- a/app/src/protyle/render/av/gallery/render.ts
+++ b/app/src/protyle/render/av/gallery/render.ts
@@ -61,14 +61,25 @@ export const renderGallery = (options: {
viewID: newViewID,
query: query.trim()
}, (response) => {
- const data = response.data;
+ const view: IAVGallery = response.data.view;
if (!options.blockElement.dataset.pageSize) {
- options.blockElement.dataset.pageSize = data.view.pageSize.toString();
+ options.blockElement.dataset.pageSize = view.pageSize.toString();
}
let galleryHTML = "";
// body
- data.view.cards.forEach((item: IAVGalleryItem, rowIndex: number) => {
+ view.cards.forEach((item: IAVGalleryItem, rowIndex: number) => {
galleryHTML += `
`;
+ if (view.coverFrom !== 0) {
+ if (item.coverURL) {
+ galleryHTML += `
`;
+ } else if (!item.coverContent) {
+ galleryHTML += `
`;
+ } else {
+ galleryHTML += `
`;
+ }
+ }
+
+ galleryHTML += '
';
item.values.forEach(cell => {
let checkClass = "";
if (cell.valueType === "checkbox") {
@@ -81,7 +92,7 @@ ${cell.value?.isDetached ? ' data-detached="true"' : ""}
style="${cell.bgColor ? `background-color:${cell.bgColor};` : ""}
${cell.color ? `color:${cell.color};` : ""}">${renderCell(cell.value, rowIndex)}
`;
});
- galleryHTML += "
";
+ galleryHTML += "";
});
let tabHTML = "";
let viewData: IAVView;
@@ -107,17 +118,17 @@ ${cell.color ? `color:${cell.color};` : ""}">${renderCell(cell.value, rowIndex)}
-
+
- ${data.views.length}
+ ${response.data.views.length}
-
+
-
+
@@ -136,13 +147,13 @@ ${cell.color ? `color:${cell.color};` : ""}">${renderCell(cell.value, rowIndex)}
- ${data.isMirror ? `
+ ${response.data.isMirror ? `
` : ""}
- ${data.name || ""}
+ ${response.data.name || ""}
-
+
${galleryHTML}
${Constants.ZWSP}
diff --git a/app/src/types/index.d.ts b/app/src/types/index.d.ts
index 57ace2ea3..5554e573e 100644
--- a/app/src/types/index.d.ts
+++ b/app/src/types/index.d.ts
@@ -839,6 +839,11 @@ interface IAVTable extends IAVView {
}
interface IAVGallery extends IAVView {
+ coverFrom: number; // 0:无,1:内容图,2:资源字段
+ cardSize: number; // 0:小卡片,1:中卡片,2:大卡片
+ fitImage:boolean;
+ showIcon:boolean;
+ wrapField:boolean;
cards: IAVGalleryItem[],
desc: string
fields: IAVColumn[]
@@ -899,6 +904,7 @@ interface IAVRow {
interface IAVGalleryItem {
coverURL?: string;
+ coverContent?: string;
id: string;
values: IAVCell[];
}