Reviewed-on: daoyoucloud/tachycode#738 Co-authored-by: wjh <wwwjh0710@163.com> Co-committed-by: wjh <wwwjh0710@163.com>
This commit is contained in:
parent
c7c497659d
commit
9d1d490f6e
5
.changeset/cyan-papayas-peel.md
Normal file
5
.changeset/cyan-papayas-peel.md
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"@hera/plugin-mobile": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
优化筛选组件在文本框情况时候延迟2s,轮播图组件没有数据添加提示
|
@ -2,38 +2,54 @@ import { BlockItem, css, useDesignable, useRequest, withDynamicSchemaProps } fro
|
|||||||
import { useFieldSchema } from '@nocobase/schema';
|
import { useFieldSchema } from '@nocobase/schema';
|
||||||
import { Swiper } from 'antd-mobile';
|
import { Swiper } from 'antd-mobile';
|
||||||
import React, { useEffect, useState } from 'react';
|
import React, { useEffect, useState } from 'react';
|
||||||
import { useNavigate } from 'react-router-dom';
|
|
||||||
|
|
||||||
export const SwiperBlock = withDynamicSchemaProps((props) => {
|
export const SwiperBlock = withDynamicSchemaProps((props) => {
|
||||||
const { fieldValue, data, changeNav } = props;
|
const { fieldValue, data, changeNav } = props;
|
||||||
if (!data) return;
|
if (!data) return;
|
||||||
const items = data['data']
|
const items = data['data'].length
|
||||||
?.map((imgItem, index) => {
|
? data['data']
|
||||||
return imgItem[fieldValue] ? (
|
.map((imgItem, index) => {
|
||||||
<Swiper.Item key={index}>
|
return imgItem[fieldValue][0]?.url ? (
|
||||||
|
<Swiper.Item key={index}>
|
||||||
|
<div
|
||||||
|
className={swiperStyle}
|
||||||
|
style={{
|
||||||
|
backgroundImage: `url(${imgItem[fieldValue][0]?.url})`,
|
||||||
|
backgroundSize: '100% 100%',
|
||||||
|
backgroundAttachment: 'fixed',
|
||||||
|
}}
|
||||||
|
onClick={() => {
|
||||||
|
changeNav(imgItem);
|
||||||
|
}}
|
||||||
|
></div>
|
||||||
|
</Swiper.Item>
|
||||||
|
) : (
|
||||||
|
<Swiper.Item key={index}>
|
||||||
|
<div
|
||||||
|
className={swiperStyle}
|
||||||
|
style={{
|
||||||
|
backgroundColor: '#e0e0e0',
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
无法加载此内容
|
||||||
|
</div>
|
||||||
|
</Swiper.Item>
|
||||||
|
);
|
||||||
|
})
|
||||||
|
.filter(Boolean)
|
||||||
|
: [
|
||||||
|
<Swiper.Item key={0}>
|
||||||
<div
|
<div
|
||||||
className={css`
|
className={swiperStyle}
|
||||||
height: 20vh;
|
|
||||||
color: #ffffff;
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
font-size: 48px;
|
|
||||||
user-select: none;
|
|
||||||
`}
|
|
||||||
style={{
|
style={{
|
||||||
backgroundImage: `url(${imgItem[fieldValue][0].url})`,
|
backgroundColor: '#e0e0e0',
|
||||||
backgroundSize: '100% 100%',
|
|
||||||
backgroundAttachment: 'fixed',
|
|
||||||
}}
|
}}
|
||||||
onClick={() => {
|
>
|
||||||
changeNav(imgItem);
|
当前区块没有可加载数据
|
||||||
}}
|
</div>
|
||||||
></div>
|
</Swiper.Item>,
|
||||||
</Swiper.Item>
|
];
|
||||||
) : null;
|
|
||||||
})
|
|
||||||
.filter(Boolean);
|
|
||||||
return (
|
return (
|
||||||
<BlockItem>
|
<BlockItem>
|
||||||
<Swiper loop autoplay>
|
<Swiper loop autoplay>
|
||||||
@ -42,3 +58,13 @@ export const SwiperBlock = withDynamicSchemaProps((props) => {
|
|||||||
</BlockItem>
|
</BlockItem>
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const swiperStyle = css`
|
||||||
|
height: 20vh;
|
||||||
|
color: #ffffff;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
font-size: 25px;
|
||||||
|
user-select: none;
|
||||||
|
`;
|
||||||
|
@ -8,6 +8,7 @@ import {
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { createGridCardBlockSchema } from '../../schma-block/schema-create/createGridCardBlockSchma';
|
import { createGridCardBlockSchema } from '../../schma-block/schema-create/createGridCardBlockSchma';
|
||||||
import { ISchema } from '@nocobase/schema';
|
import { ISchema } from '@nocobase/schema';
|
||||||
|
import { Toast } from 'antd-mobile';
|
||||||
|
|
||||||
export const SwiperBlockInitializer = () => {
|
export const SwiperBlockInitializer = () => {
|
||||||
const { insert } = useSchemaInitializer();
|
const { insert } = useSchemaInitializer();
|
||||||
@ -17,7 +18,10 @@ export const SwiperBlockInitializer = () => {
|
|||||||
const onCreateBlockSchema = async ({ item }) => {
|
const onCreateBlockSchema = async ({ item }) => {
|
||||||
const collection = cm.getCollection(item.name);
|
const collection = cm.getCollection(item.name);
|
||||||
const value = collection.fields.find((field) => field.interface === 'attachment');
|
const value = collection.fields.find((field) => field.interface === 'attachment');
|
||||||
if (!value) return;
|
if (!value) {
|
||||||
|
Toast.show({ content: '当前数据源暂无可加载数据' });
|
||||||
|
return;
|
||||||
|
}
|
||||||
const schema: ISchema = {
|
const schema: ISchema = {
|
||||||
type: 'void',
|
type: 'void',
|
||||||
name: item.name,
|
name: item.name,
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { useMemo, useState } from 'react';
|
import { useMemo, useRef, useState } from 'react';
|
||||||
import { useFieldSchema } from '@nocobase/schema';
|
import { useFieldSchema } from '@nocobase/schema';
|
||||||
import { useCollection, useCollectionManager, useDesignable, useDesigner } from '@nocobase/client';
|
import { useCollection, useCollectionManager, useDesignable, useDesigner } from '@nocobase/client';
|
||||||
import {
|
import {
|
||||||
@ -79,10 +79,14 @@ export const useTabSearchCollapsibleInputItemAction = (props) => {
|
|||||||
setCustomLabelKey(label as string);
|
setCustomLabelKey(label as string);
|
||||||
};
|
};
|
||||||
const onInputChange = (v) => {
|
const onInputChange = (v) => {
|
||||||
|
const timeout = { current: null };
|
||||||
|
clearTimeout(timeout.current);
|
||||||
const inputValue = v.target?.value || v;
|
const inputValue = v.target?.value || v;
|
||||||
setValue(inputValue);
|
setValue(inputValue);
|
||||||
if (inputValue === '') {
|
if (inputValue === '') {
|
||||||
onSelect(inputValue);
|
timeout.current = setTimeout(() => {
|
||||||
|
onSelect(inputValue);
|
||||||
|
}, 2000);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
const onButtonClick = () => {
|
const onButtonClick = () => {
|
||||||
|
Loading…
Reference in New Issue
Block a user