import React, { useEffect, useState } from 'react'; import { ScrollView, Text, View, Image } from '@tarojs/components'; import classNames from 'classnames'; const arrowUp = 'https://wanmi-b2b-x-site.oss-cn-shanghai.aliyuncs.com/pandora-ui/assets/templates/images/screen/icon-arrow-up.png'; const arrowDown = 'https://wanmi-b2b-x-site.oss-cn-shanghai.aliyuncs.com/pandora-ui/assets/templates/images/screen/icon-arrow-down.png'; import connect from '../connect'; import { CompDefault, MetaProps } from '../data-channel'; import fetchMock from '../../common/fetch-mock'; export interface Props extends MetaProps { // 数据url url: string; // 数据输出通道 onChange: Function; } export interface State { // 下拉打开状态 expandFlag: boolean; // 当前项id current: string | number; // tabs列表 items: any[]; } const defaultValue: CompDefault = { props: { url: '/xxx-list', onChange: (_value) => {}, }, state: { current: 0, items: [], expandFlag: false, }, meta: { inners: [{ key: 'items', keyMap: { id: 'id', name: 'title' } }], }, }; /** * 下拉tabs */ const TabsExpand: React.FC = ({ url, onChange, meta }) => { let [expandFlag, setExpandFlag] = useState(defaultValue.state.expandFlag); const [current, setCurrent] = useState(defaultValue.state.current); const [items, setItems] = useState(defaultValue.state.items); const [currentKey, setCurrentKey] = useState('key1'); useEffect(() => { (async () => { const dataList = await fetchMock.fetchList('', {}); setItems(dataList); })(); }, [url]); const expandStyle = classNames( 'expandIcon', 'expandIconExpand', expandFlag && 'selected', ); return ( {items.map((item) => { const keyMap = meta.inners[0].keyMap; const id = item[keyMap.id]; const active = current === id; return ( { setCurrent(id); onChange({ value: id, meta: meta?.output, }); setExpandFlag(false); }}> {item[keyMap.name]} ); })} setExpandFlag(!expandFlag)}> 全部 {expandFlag && ( {items.map((item) => { const keyMap = meta.inners[0].keyMap; const id = item[keyMap.id]; const active = current === id; return ( { setCurrentKey(`key${id}`); setCurrent(id); setExpandFlag(false); onChange({ value: id, meta: meta?.output, }); }}> {item[keyMap.name]} ); })} setExpandFlag(false)} /> )} ); }; export default connect(TabsExpand, defaultValue);