@smt-ui/component
Advanced tools
Comparing version 0.0.30-alpha.0 to 0.0.31-alpha.0
{ | ||
"editor": { | ||
"curPath": "", | ||
"expands": [], | ||
"curPath": "/Volumes/code/work/swan-ui/packages/component/src/icon/src/index.swan", | ||
"expands": [ | ||
"/Volumes/code/work/swan-ui/packages/component/src", | ||
"/Volumes/code/work/swan-ui/packages/component/src/icon", | ||
"/Volumes/code/work/swan-ui/packages/component/src/icon/src" | ||
], | ||
"markdownUploadTimeMap": {}, | ||
"paths": [], | ||
"recentlyFiles": [] | ||
"paths": [ | ||
"/Volumes/code/work/swan-ui/packages/component/src/icon/src/index.swan" | ||
], | ||
"recentlyFiles": [ | ||
"/Volumes/code/work/swan-ui/packages/component/src/icon/src/index.swan", | ||
"/Volumes/code/work/swan-ui/packages/component/src/icon/src/index.json", | ||
"/Volumes/code/work/swan-ui/packages/component/src/icon/src/index.js" | ||
] | ||
} | ||
} |
{ | ||
"name": "@smt-ui/component", | ||
"version": "0.0.30-alpha.0", | ||
"version": "0.0.31-alpha.0", | ||
"description": "extension base", | ||
@@ -36,3 +36,3 @@ "author": "jialipeng <jialipeng@baidu.com>", | ||
}, | ||
"gitHead": "d1c7689e49ca30d1d032230fd6e3dd6f84fd7866" | ||
"gitHead": "76ff6cebc1298b670d3c5c4127e11fe7ac222323" | ||
} |
@@ -1,1 +0,1 @@ | ||
{"npmPackageName":"@smt-ui/component","npmPackageVersion":"0.0.26-alpha.0","componentsList":[{"name":"layout","label":"布局组件","icon":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NiA2NiI+PHBhdGggZD0iTTIzLjkgMjUuOGMtMS40IDAtMi41IDEuMS0yLjUgMi41VjM5YzAgMS40IDEuMSAyLjUgMi41IDIuNXMyLjUtMS4xIDIuNS0yLjVWMjguM2MwLTEuNC0xLjEtMi41LTIuNS0yLjV6TTQ1LjkgMjYuOWMtMS0xLTIuNS0xLTMuNSAwTDM4IDMxLjNjLS42LjYtLjkgMS40LS44IDIuMi0uMS44LjIgMS42LjggMi4xbDQuNCA0LjRjLjUuNSAxLjEuNyAxLjguN3MxLjMtLjMgMS44LS43LjctMS4xLjctMS44LS4zLTEuMy0uNy0xLjhsLTMtMyAzLTNjLjktLjkuOS0yLjUtLjEtMy41eiIvPjxwYXRoIGQ9Ik01MC44IDE0LjdjLTMuNy0xLjgtMTAuNC0zLjEtMTcuNi0zLjItNy4yLjEtMTQgMS4zLTE3LjcgMy4yLTUuNyAyLjctOCA4LjMtOCAxOS4yIDAgOC43IDIuNCAxNSA2LjUgMTcuMiA1LjMgMi43IDEwLjEgMy42IDE5LjEgMy42IDkuMSAwIDEzLjktLjkgMTktMy41IDQuMi0yLjMgNi42LTguNyA2LjYtMTcuMyAwLTEwLjgtMi40LTE2LjUtNy45LTE5LjJ6bTIuOSAxOS4xYzAgNy40LTIgMTEuOC0zLjkgMTIuOS0zLjggMS45LTcuNiAyLjktMTYuNyAyLjktOSAwLTEyLjktMS0xNi44LTIuOS0xLjktMS0zLjgtNS41LTMuOC0xMi45IDAtOC43IDEuNS0xMi45IDUuMS0xNC44IDMtMS41IDkuMi0yLjYgMTUuNS0yLjYgNi4zLjEgMTIuNSAxLjIgMTUuNSAyLjYgMy42IDEuOSA1LjEgNi4xIDUuMSAxNC44eiIvPjwvc3ZnPg==","components":[{"name":"smt-feed-item","label":"信息流子项","description":"信息流子项:包括左文右图、纯文本、上文下图、多图及视频模式。","codeSnap":"<smt-feed-item theme='default' content='title: '宠物自己在家时, 如何帮助它度过孤独时光',infoSource: '萌宠在家',commentsNum: 2' status='0'></smt-feed-item>","groups":"layout","fragement":"swanide://fragment/afebdafc13cda2201207a3d6721577481577175550244","properties":{"attributes":[{"name":"theme","type":"string","description":"信息流子项的主题","required":"true","default":"default"},{"name":"content","type":"Object","description":"信息流子项目的内容","required":"true","default":"{title: '标题',infoSource: '网易新闻',commentsNum: 2,images: []}"},{"name":"video","type":"Object","description":"是否为视频和视频信息","required":"false","default":"{isVideo: true, time: '05:00'}"},{"name":"status","type":"String","description":"阅读状态:0未读,1已读","required":"false","default":"0"}],"events":[{"name":"bindfeeditemtap","type":"Event","description":"点击feed-item之后的回调","required":"false","default":"-"}]},"type":"component","doc":"https://smartprogram.baidu.com/docs/develop/component/smt-feed-item","demoUri":"https://b.bdstatic.com/miniapp/assets/images/doc_demo//smt-feed-item.png","usingComponents":{"smt-feed-item":"@smt-ui/component/src/feed-item"}},{"name":"smt-feed","label":"信息流","description":"信息流组件,可配置下拉刷新、列表加载、上滑加载功能,适合于feed信息场景,并可放置在页面的任何部分;同时组件包含手势下拉以及api调用两种使用方式\n* 注意:\n1. 和scroll-view一样,信息流组件作为局部滚动组件,必须在它的父级或本身指定高度\n2. 组件本身使用了async/await语法,如出现regenerater等报错,请在开发者工具“项目信息”中开启“增强编译”\n3. 当同时启用下拉刷新和上滑加载且请求不稳定时,可使用CancelToken取消先前的请求","codeSnap":"<smt-feed></smt-feed>","groups":"layout","properties":{"attributes":[{"name":"theme","type":"String","description":"主题配置,默认浅色;深色主题请指定dark","required":"false","default":"-"},{"name":"loadingHeight","type":"Number","description":"加载、话术区域高度,单位为设备px,转换方法: import {upx2dpx} from '@smt-ui/component/src/common/utils/px';","required":"false","default":"192px(设计稿宽度为1242)"},{"name":"pullToRefresh","type":"Boolean","description":"是否开启手势下拉刷新; 默认只能通过组件api调起","required":"false","default":"false"},{"name":"lowerThreshold","type":"Number","description":"触发scrolltolower事件的阈值","required":"false","default":"150px(设备上的px)"},{"name":"text","type":"String","description":"加载成功时的展示话术","required":"false","default":"建议最多显示18个汉字,超出内容截断"},{"name":"refresh","type":"EventHandle","description":"手势滑动触发加载时,响应该onRefresh事件; 通过调用api加载,不会触发该事件","required":"false","default":""},{"name":"startRefresh","type":"EventHandle","description":"手动调用该api,触发加载","required":"false","default":""},{"name":"stopRefresh","type":"EventHandle","description":"手动调用该api,停止加载,并弹出加载提示(对应属性text);可使用await等待关闭动画结束","required":"false","default":""},{"name":"closeLoading","type":"EventHandle","description":"手动调用该api,立即关闭加载,不弹出加载提示;例如接口异常,建义直接关闭加载(小球交替一次大约为500ms,调用前可加延时避免关闭太快)","required":"false","default":""},{"name":"ext-cls-feed","type":"externalClass","description":"组件整体class名","required":"false","default":"-"},{"name":"ext-cls-loading","type":"externalClass","description":"加载区域class名","required":"false","default":"-"},{"name":"ext-cls-circle-left","type":"externalClass","description":"加载中左侧小球class名","required":"false","default":"-"},{"name":"ext-cls-circle-right","type":"externalClass","description":"加载中右侧小球class名","required":"false","default":"-"},{"name":"ext-cls-content","type":"externalClass","description":"滚动区域class名","required":"false","default":"-"},{"name":"ext-cls-result","type":"externalClass","description":"加载话术外框class名","required":"false","default":"-"},{"name":"ext-cls-result-text","type":"externalClass","description":"加载话术文字class名","required":"false","default":"-"}],"events":[{"name":"bindscroll","type":"Event","description":"滚动时触发,返回当前组件的值","required":"false","default":"-"}]},"type":"component","doc":"https://smartprogram.baidu.com/docs/develop/component/smt-feed","demoUri":"https://b.bdstatic.com/miniapp/assets/images/doc_demo//smt-feed.png","usingComponents":{"smt-feed":"@smt-ui/component/src/feed"}},{"name":"smt-icon","label":"图标","description":"包括天气、系统设置、互动社交、生活服务、书籍影音、政务服务、交通出行7个行业类别的图标。请扫描示例二维码查看图标全集。","codeSnap":"<smt-icon name='add'></smt-icon>","groups":"layout","properties":{"attributes":[{"name":"name","type":"String","description":"icon的英文名称","required":"true"},{"name":"color","type":"String, Array.<String>","description":"icon的颜色,多色图标支持传入色值的数组"},{"name":"size","type":"Number","description":"icon的尺寸,单位px","default":25}],"events":[]},"type":"component","doc":"https://smartprogram.baidu.com/docs/develop/component/smt-icon","demoUri":"https://b.bdstatic.com/miniapp/assets/images/doc_demo//smt-icon.png","usingComponents":{"smt-icon":"@smt-ui/component/src/icon"}},{"name":"smt-page-status","label":"空态/缺省组件","description":"空态/缺省组件,可用于全屏和半屏。用于展示页面加载,页面异常-有操作、页面异常-无操作三种页面状态。","codeSnap":"<page-status></page-status>","groups":"layout","properties":{"attributes":[{"name":"theme","type":"String","description":"主题配置,默认浅色;深色主题请指定dark","required":"false","default":""},{"name":"loading","type":"Boolean","description":"页面状态配置,默认不展示加载状态页面","required":"false","default":"false"},{"name":"icon","type":"String","description":"空态/缺省页面下的图标名称","required":"false","default":"content"},{"name":"loadingTitle","type":"String","description":"加载页面下的标题文案","required":"false","default":"正在加载..."},{"name":"title","type":"String","description":"空态/缺省页面下的标题文案","required":"false","default":"单行标题"},{"name":"desc","type":"String","description":"空态/缺省页面下的描述文案","required":"false","default":""},{"name":"showBtn","type":"Boolean","description":"是否展示空态/缺省页面下的操作按钮,默认展示","required":"false","default":"true"},{"name":"btnText","type":"String","description":"空态/缺省页面下,操作按钮的描述文案,建议最多显示4个汉字,超出内容截断","required":"false","default":"重新加载"},{"name":"reloading","type":"EventHandle","description":"空态/缺省页面下,点击操作按钮时触发","required":"false","default":""}],"events":[]},"type":"component","doc":"https://smartprogram.baidu.com/docs/develop/component/smt-page-status","demoUri":"https://b.bdstatic.com/miniapp/assets/images/doc_demo//smt-page-status.png","usingComponents":{"smt-page-status":"@smt-ui/component/src/page-status"}},{"name":"smt-refresh","label":"刷新","description":"可用于页面任意区域,不包含手势交互;建议直接使用smt-feed下拉刷新,该组件包含下拉功能。","codeSnap":"<smt-refresh offset-y=\"{{0}}\" status=\"{{1}}\" text=\"为你推荐15条更新\"></smt-refresh>","fragement":"swanide://fragment/51f1e7d8841665748fa17a940eab12de1577181667851","groups":"layout","properties":{"attributes":[{"name":"theme","type":"String","description":"主题配置,默认浅色;深色主题请指定dark","required":"false","default":"-"},{"name":"loadingHgt","type":"Number","description":"加载区域高度","required":"false","default":"192px(需转换为设备尺寸)"},{"name":"offsetY","type":"Number","description":"垂直移动距离,*建议后续在sjs中使用","required":"false","default":"0"},{"name":"status","type":"Number","description":"加载状态 0: 未开始 1: 加载中 2: 展示话术","required":"false","default":"0"},{"name":"text","type":"String","description":"加载成功时的展示话术","required":"false","default":"建议最多显示18个汉字,超出内容截断"}],"events":[]},"type":"component","doc":"https://smartprogram.baidu.com/docs/develop/component/smt-refresh","demoUri":"https://b.bdstatic.com/miniapp/assets/images/doc_demo//smt-refresh.png","usingComponents":{"smt-refresh":"@smt-ui/component/src/refresh"}},{"name":"smt-spin","label":"加载","description":"加载组件,可用于全屏和半屏。用于展示加载状态,点击加载、正在加载、加载完成、重新加载四种状态。","codeSnap":"<spin status='1'></spin>","groups":"layout","fragement":"swanide://fragment/25af44248f8aad73b64e274ead38d6151577191316430","properties":{"attributes":[{"name":"status","type":"Number","description":"加载状态配置","required":"true"},{"name":"theme","type":"String","description":"主题配置,默认浅色;深色主题请指定dark","required":"false","default":""},{"name":"textConfig","type":"Array","description":"加载状态对应的文案","required":"false","default":"['点击加载更多', '正在加载...', '已经到底啦', '加载失败 点击重新加载']"},{"name":"secureBottom","type":"Boolean","description":"默认兼容iPhoneX 及以上型号底部安全区,非全屏可关闭","required":"false","default":"true"}],"events":[]},"type":"component","doc":"https://smartprogram.baidu.com/docs/develop/component/smt-spin","demoUri":"https://b.bdstatic.com/miniapp/assets/images/doc_demo//smt-spin.png","usingComponents":{"smt-spin":"@smt-ui/component/src/spin"}}]}]} | ||
{"npmPackageName":"@smt-ui/component","npmPackageVersion":"0.0.30-alpha.0","componentsList":[{"name":"layout","label":"布局组件","icon":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NiA2NiI+PHBhdGggZD0iTTIzLjkgMjUuOGMtMS40IDAtMi41IDEuMS0yLjUgMi41VjM5YzAgMS40IDEuMSAyLjUgMi41IDIuNXMyLjUtMS4xIDIuNS0yLjVWMjguM2MwLTEuNC0xLjEtMi41LTIuNS0yLjV6TTQ1LjkgMjYuOWMtMS0xLTIuNS0xLTMuNSAwTDM4IDMxLjNjLS42LjYtLjkgMS40LS44IDIuMi0uMS44LjIgMS42LjggMi4xbDQuNCA0LjRjLjUuNSAxLjEuNyAxLjguN3MxLjMtLjMgMS44LS43LjctMS4xLjctMS44LS4zLTEuMy0uNy0xLjhsLTMtMyAzLTNjLjktLjkuOS0yLjUtLjEtMy41eiIvPjxwYXRoIGQ9Ik01MC44IDE0LjdjLTMuNy0xLjgtMTAuNC0zLjEtMTcuNi0zLjItNy4yLjEtMTQgMS4zLTE3LjcgMy4yLTUuNyAyLjctOCA4LjMtOCAxOS4yIDAgOC43IDIuNCAxNSA2LjUgMTcuMiA1LjMgMi43IDEwLjEgMy42IDE5LjEgMy42IDkuMSAwIDEzLjktLjkgMTktMy41IDQuMi0yLjMgNi42LTguNyA2LjYtMTcuMyAwLTEwLjgtMi40LTE2LjUtNy45LTE5LjJ6bTIuOSAxOS4xYzAgNy40LTIgMTEuOC0zLjkgMTIuOS0zLjggMS45LTcuNiAyLjktMTYuNyAyLjktOSAwLTEyLjktMS0xNi44LTIuOS0xLjktMS0zLjgtNS41LTMuOC0xMi45IDAtOC43IDEuNS0xMi45IDUuMS0xNC44IDMtMS41IDkuMi0yLjYgMTUuNS0yLjYgNi4zLjEgMTIuNSAxLjIgMTUuNSAyLjYgMy42IDEuOSA1LjEgNi4xIDUuMSAxNC44eiIvPjwvc3ZnPg==","components":[{"name":"smt-feed-item","label":"信息流子项","description":"信息流子项:包括左文右图、纯文本、上文下图、多图及视频模式。","codeSnap":"<smt-feed-item theme='default' content='title: '宠物自己在家时, 如何帮助它度过孤独时光',infoSource: '萌宠在家',commentsNum: 2' status='0'></smt-feed-item>","groups":"layout","fragement":"swanide://fragment/afebdafc13cda2201207a3d6721577481577175550244","properties":{"attributes":[{"name":"theme","type":"string","description":"信息流子项的主题","required":"是","default":"default"},{"name":"content","type":"Object","description":"信息流子项目的内容","required":"是","default":"{title: '标题',infoSource: '网易新闻',commentsNum: 2,images: []}"},{"name":"video","type":"Object","description":"是否为视频和视频信息","required":"否","default":"{isVideo: true, time: '05:00'}"},{"name":"status","type":"String","description":"阅读状态:0未读,1已读","required":"否","default":"0"}],"events":[{"name":"bindfeeditemtap","type":"Event","description":"点击feed-item之后的回调","required":"否","default":"-"}]},"type":"component","doc":"https://smartprogram.baidu.com/docs/develop/component/smt-feed-item","qrCode":"https://b.bdstatic.com/miniapp/assets/images/doc_demo/smt-feed-item.png","usingComponents":{"smt-feed-item":"@smt-ui/component/src/feed-item"}},{"name":"smt-feed","label":"信息流","description":"信息流组件,可配置下拉刷新、列表加载、上滑加载功能,适用于列表信息展示,并可放置在页面的任何部分;组件包含手势下拉以及api调用两种使用方式\n* 注意:\n1. 和scroll-view一样,信息流组件作为局部滚动组件,必须在它的父级或本身指定高度\n2. 当同时启用下拉刷新和上滑加载且请求不稳定时,可使用CancelToken取消先前的请求","codeSnap":"<smt-feed pull-to-refresh><view>list</view></smt-feed>","groups":"layout","fragement":"swanide://fragment/7b9bf19d0c974d45d9b68fd9fc4429b31577200628346","properties":{"attributes":[{"name":"theme","type":"String","description":"主题配置,默认浅色;深色主题请指定dark","required":"否","default":"-"},{"name":"loadingHeight","type":"Number","description":"加载、话术区域高度,单位为设备px,转换方法: import {upx2dpx} from '@smt-ui/component/src/common/utils/px';","required":"否","default":"192px(设计稿宽度为1242)"},{"name":"pullToRefresh","type":"Boolean","description":"是否开启手势下拉刷新; 默认只能通过组件api调起","required":"否","default":"false"},{"name":"lowerThreshold","type":"Number","description":"触发scrolltolower事件的阈值","required":"否","default":"150px(设备上的px)"},{"name":"text","type":"String","description":"加载成功时的展示话术","required":"否","default":"建议最多显示18个汉字,超出内容截断"},{"name":"refresh","type":"EventHandle","description":"手势滑动触发加载时,响应该onRefresh事件; 通过调用api加载,不会触发该事件","required":"否","default":""},{"name":"startRefresh","type":"EventHandle","description":"手动调用该api,触发加载","required":"否","default":""},{"name":"stopRefresh","type":"EventHandle","description":"手动调用该api,停止加载,并弹出加载提示(对应属性text);可使用await等待关闭动画结束","required":"否","default":""},{"name":"closeLoading","type":"EventHandle","description":"手动调用该api,立即关闭加载,不弹出加载提示;例如接口异常,建义直接关闭加载(小球交替一次大约为500ms,调用前可加延时避免关闭太快)","required":"否","default":""},{"name":"smt-feed-container","type":"externalClass","description":"组件整体class名","required":"否","default":"-"},{"name":"smt-feed-loading","type":"externalClass","description":"加载区域class名","required":"否","default":"-"},{"name":"smt-feed-content","type":"externalClass","description":"滚动区域class名,用于设置ios回弹背景","required":"false","default":""},{"name":"smt-refresh-circle-left","type":"externalClass","description":"加载中左侧小球class名","required":"否","default":"-"},{"name":"smt-refresh-circle-right","type":"externalClass","description":"加载中右侧小球class名","required":"否","default":"-"},{"name":"ext-cls-content","type":"externalClass","description":"滚动区域class名","required":"否","default":"-"},{"name":"smt-refresh-result-container","type":"externalClass","description":"加载话术外框class名","required":"否","default":"-"},{"name":"ext-cls-result-text","type":"externalClass","description":"加载话术文字class名","required":"否","default":"-"}],"events":[{"name":"bindscroll","type":"Event","description":"滚动时触发,返回当前组件的值","required":"否","default":"-"}]},"type":"component","doc":"https://smartprogram.baidu.com/docs/develop/component/smt-feed","qrCode":"https://b.bdstatic.com/miniapp/assets/images/doc_demo/smt-feed.png","usingComponents":{"smt-feed":"@smt-ui/component/src/feed"}},{"name":"smt-icon","label":"图标","description":"包括天气、系统设置、互动社交、生活服务、书籍影音、政务服务、交通出行7个行业类别的图标。请扫描示例二维码查看图标全集。","codeSnap":"<smt-icon name='add'></smt-icon>","groups":"layout","fragement":"swanide://fragment/1151cb408d98313c4e79bb6a62755bfa1577193673206","properties":{"attributes":[{"name":"name","type":"String","description":"icon的英文名称","required":"是"},{"name":"color","type":"String, Array.<String>","description":"icon的颜色,多色图标支持传入色值的数组"},{"name":"size","type":"Number","description":"icon的尺寸,单位px","default":25}],"events":[]},"type":"component","doc":"https://smartprogram.baidu.com/docs/develop/component/smt-icon","qrCode":"https://b.bdstatic.com/miniapp/assets/images/doc_demo/smt-icon.png","usingComponents":{"smt-icon":"@smt-ui/component/src/icon"}},{"name":"smt-page-status","label":"页面状态组件","description":"页面状态组件,可用于全屏和半屏。用于展示页面加载,页面异常-有操作、页面异常-无操作三种页面状态。","codeSnap":"<smt-page-status></smt-page-status>","groups":"layout","fragment":"swanide://fragment/4cc92982287ac8a30b5fe19f220dc8f71577190736077","properties":{"attributes":[{"name":"theme","type":"String","description":"主题配置,默认浅色;沉浸式主题请指定dark","required":"否","default":""},{"name":"loading","type":"Boolean","description":"页面状态配置,默认不展示加载状态页面","required":"否","default":"false"},{"name":"icon","type":"String","description":"空态/缺省页面下的图标名称","required":"否","default":"content"},{"name":"loadingTitle","type":"String","description":"加载页面下的标题文案","required":"否","default":"正在加载..."},{"name":"title","type":"String","description":"空态/缺省页面下的标题文案","required":"否","default":"单行标题"},{"name":"desc","type":"String","description":"空态/缺省页面下的描述文案","required":"否","default":""},{"name":"showBtn","type":"Boolean","description":"是否展示空态/缺省页面下的操作按钮,默认展示","required":"否","default":"true"},{"name":"btnText","type":"String","description":"空态/缺省页面下,操作按钮的描述文案,建议最多显示4个汉字,超出内容截断","required":"否","default":"重新加载"}],"events":[{"name":"reloading","type":"Event","description":"空态/缺省页面下,点击操作按钮时触发","required":"否","default":"-"}]},"type":"component","doc":"https://smartprogram.baidu.com/docs/develop/component/smt-page-status","qrCode":"https://b.bdstatic.com/miniapp/assets/images/doc_demo/smt-page-status.png","usingComponents":{"smt-page-status":"@smt-ui/component/src/page-status"}},{"name":"smt-refresh","label":"刷新","description":"可用于页面任意区域;使用时需自行添加下拉逻辑改变offset-y参数;smt-feed组件对smt-refresh进行了封装,支持手势交互和api调起刷新。","codeSnap":"<smt-refresh offset-y=\"{{0}}\" status=\"{{1}}\" text=\"为你推荐15条更新\"></smt-refresh>","fragement":"swanide://fragment/598510a21b650b89e2e5d13c814dc46c1577192328823","groups":"layout","properties":{"attributes":[{"name":"theme","type":"String","description":"主题配置,默认浅色;深色主题请指定dark","required":"否","default":"-"},{"name":"loadingHgt","type":"Number","description":"加载区域高度","required":"否","default":"192px(需转换为设备尺寸)"},{"name":"offsetY","type":"Number","description":"垂直移动距离,*建议后续在sjs中使用","required":"否","default":"0"},{"name":"status","type":"Number","description":"加载状态 0: 未开始 1: 加载中 2: 展示话术","required":"否","default":"0"},{"name":"text","type":"String","description":"加载成功时的展示话术","required":"否","default":"建议最多显示18个汉字,超出内容截断"}],"events":[]},"type":"component","doc":"https://smartprogram.baidu.com/docs/develop/component/smt-refresh","qrCode":"https://b.bdstatic.com/miniapp/assets/images/doc_demo/smt-refresh.png","usingComponents":{"smt-refresh":"@smt-ui/component/src/refresh"}},{"name":"smt-spin","label":"加载","description":"加载组件,可用于全屏和半屏。用于展示加载状态,点击加载、正在加载、加载完成、重新加载四种状态。","codeSnap":"<spin status='1'></spin>","groups":"layout","fragement":"swanide://fragment/25af44248f8aad73b64e274ead38d6151577191316430","properties":{"attributes":[{"name":"status","type":"Number","description":"加载状态配置","required":"是"},{"name":"theme","type":"String","description":"主题配置,默认浅色;深色主题请指定dark","required":"否","default":""},{"name":"textConfig","type":"Array","description":"加载状态对应的文案","required":"否","default":"['点击加载更多', '正在加载...', '已经到底啦', '加载失败 点击重新加载']"},{"name":"secureBottom","type":"Boolean","description":"默认兼容iPhoneX 及以上型号底部安全区,非全屏可关闭","required":"否","default":"true"}],"events":[]},"type":"component","doc":"https://smartprogram.baidu.com/docs/develop/component/smt-spin","qrCode":"https://b.bdstatic.com/miniapp/assets/images/doc_demo/smt-spin.png","usingComponents":{"smt-spin":"@smt-ui/component/src/spin"}}]}]} |
@@ -15,3 +15,3 @@ /** | ||
'history', | ||
'message', | ||
'comment', | ||
'authority', | ||
@@ -18,0 +18,0 @@ 'delete', |
@@ -18,3 +18,3 @@ { | ||
"description": "信息流子项的主题", | ||
"required": "true", | ||
"required": "是", | ||
"default": "default" | ||
@@ -26,3 +26,3 @@ }, | ||
"description": "信息流子项目的内容", | ||
"required": "true", | ||
"required": "是", | ||
"default": "{title: '标题',infoSource: '网易新闻',commentsNum: 2,images: []}" | ||
@@ -34,3 +34,3 @@ }, | ||
"description": "是否为视频和视频信息", | ||
"required": "false", | ||
"required": "否", | ||
"default": "{isVideo: true, time: '05:00'}" | ||
@@ -41,3 +41,3 @@ }, { | ||
"description": "阅读状态:0未读,1已读", | ||
"required": "false", | ||
"required": "否", | ||
"default": "0" | ||
@@ -50,3 +50,3 @@ }], | ||
"description": "点击feed-item之后的回调", | ||
"required": "false", | ||
"required": "否", | ||
"default": "-" | ||
@@ -53,0 +53,0 @@ } |
@@ -10,6 +10,6 @@ #### 组件名称 | ||
|---|---|---|---|---| | ||
|theme |string |true|default|信息流子项的主题| | ||
|content |Object |true|{title: '标题',infoSource: '网易新闻',commentsNum: 2,images: []}|信息流子项目的内容| | ||
|video |Object |false|{isVideo: true, time: '05:00'}|是否为视频和视频信息| | ||
|status |String |false|0|阅读状态:0未读,1已读| | ||
|theme |string |是|default|信息流子项的主题| | ||
|content |Object |是|{title: '标题',infoSource: '网易新闻',commentsNum: 2,images: []}|信息流子项目的内容| | ||
|video |Object |否|{isVideo: true, time: '05:00'}|是否为视频和视频信息| | ||
|status |String |否|0|阅读状态:0未读,1已读| | ||
@@ -16,0 +16,0 @@ #### 代码示例 |
{ | ||
"name": "smt-feed", | ||
"label": "信息流", | ||
"description": "信息流组件,可配置下拉刷新、列表加载、上滑加载功能,适合于feed信息场景,并可放置在页面的任何部分;同时组件包含手势下拉以及api调用两种使用方式\n* 注意:\n1. 和scroll-view一样,信息流组件作为局部滚动组件,必须在它的父级或本身指定高度\n2. 组件本身使用了async/await语法,如出现regenerater等报错,请在开发者工具“项目信息”中开启“增强编译”\n3. 当同时启用下拉刷新和上滑加载且请求不稳定时,可使用CancelToken取消先前的请求", | ||
"codeSnap": "<smt-feed></smt-feed>", | ||
"description": "信息流组件,可配置下拉刷新、列表加载、上滑加载功能,适用于列表信息展示,并可放置在页面的任何部分;组件包含手势下拉以及api调用两种使用方式\n* 注意:\n1. 和scroll-view一样,信息流组件作为局部滚动组件,必须在它的父级或本身指定高度\n2. 当同时启用下拉刷新和上滑加载且请求不稳定时,可使用CancelToken取消先前的请求", | ||
"codeSnap": "<smt-feed pull-to-refresh><view>list</view></smt-feed>", | ||
"groups": "layout", | ||
"demoCode": { | ||
"s": "<tabs\n tabs-background-color=\"#3388ff\"\n tabs-underline-color = \"#fff\"\n tabs-inactive-text-color=\"#fff\"\n tabs-active-text-color=\"#fff\"\n bindtabchange=\"tabChange\"\n active-name=\"{{activeName}}\">\n <tab-item\n s-for=\"item in ['下拉刷新', '自动刷新']\"\n name=\"{{item}}\"\n label=\"{{item}}\"\n />\n </tabs>\n <!-- 下拉刷新 -->\n <smt-feed\n s-if=\"{{activeName === '下拉刷新'}}\"\n class=\"smt-feed pull-down-refresh\"\n pull-to-refresh\n bind:refresh=\"onRefresh\"\n bind:scrolltolower=\"scrollToLower\"\n text=\"{{text}}\"\n >\n <list list=\"{{list}}\"></list>\n <smt-spin status=\"{{status}}\" bind:tap=\"reload\"></smt-spin>\n </smt-feed>\n\n <!-- 自动刷新 -->\n <smt-feed\n s-elif=\"{{activeName === '自动刷新'}}\"\n class=\"smt-feed auto-refresh\"\n text=\"{{text}}\"\n >\n <list list=\"{{list}}\"></list>\n </smt-feed>", | ||
"js": "import {selComponent, syncSetData} from '../../../../../src/common/utils/index';\n\nPage({\n data: {\n activeName: '下拉刷新',\n list: Array.from({length: 15}, (_, i) => i),\n text: '',\n status: 1\n },\n\n tabChange({detail}) {\n console.log(detail);\n this.setData({\n activeName: detail.name\n },\n () => this.autoRefresh(detail.name));\n },\n\n /**\n * 请求时长1200ms\n */\n async fetchData(ms = 1200) {\n const empty = Math.random() > .7;\n const fail = Math.random() > .9;\n const data = {\n code: fail ? -1 : 0,\n data: fail || empty ? null : Array.from({length: Math.random() * 10 + 10 | 0}, (_, i) => i)\n };\n return new Promise(r => setTimeout(() => r(data), ms));\n },\n\n async onRefresh() {\n console.log('触发 onRefresh');\n const refresh = await selComponent(this, '.pull-down-refresh');\n const {code, data: list} = await this.fetchData();\n if (code !== 0) {\n swan.showToast({title: '网络错误', mask: true, icon: 'none'});\n refresh.closeLoading();\n return;\n }\n await syncSetData(this, {\n status: 1,\n list: list || this.data.list,\n text: list ? `本次共加载${list.length}条数据!` : '暂时没有更新,休息一下'\n });\n refresh.stopRefresh();\n },\n\n async autoRefresh() {\n if (this.data.activeName === '自动刷新') {\n const clkRefresh = await selComponent(this, '.auto-refresh');\n const autoLoad = async () => {\n clkRefresh.startRefresh();\n const {code, data: list} = await this.fetchData();\n if (code !== 0) {\n swan.showToast({title: '网络错误', mask: true, icon: 'none'});\n clkRefresh.closeLoading();\n return;\n }\n await syncSetData(this, {\n status: 0,\n list: list || this.data.list,\n text: list ? `本次共加载${list.length}条数据!` : '暂时没有更新,休息一下'\n });\n await new Promise(r => setTimeout(r, 1500)); // 1500ms 之后再关闭: 手动关闭不需要等小球转3圈\n await clkRefresh.stopRefresh();\n await new Promise(r => setTimeout(r, 500)); // 加载完一轮等500ms\n this.data.activeName === '自动刷新' && await autoLoad();\n };\n autoLoad();\n }\n },\n\n async scrollToLower() {\n const {code, data: list} = await this.fetchData();\n const fail = code !== 0;\n const end = !list;\n if (fail || end) {\n this.setData({\n status: fail ? 3 : 2\n });\n return;\n }\n await syncSetData(this, {\n list: list.concat(this.data.list || [])\n });\n },\n\n async reload() {\n if (this.data.status !== 0 && this.data.status !== 3) {\n return;\n }\n await syncSetData(this, {status: 1});\n this.scrollToLower();\n }\n});\n", | ||
"s": "<!-- 手势下拉刷新 & 触底加载 -->\n<smt-feed\n class=\"smt-feed pull-down-refresh\"\n pull-to-refresh\n bind:refresh=\"onRefresh\"\n bind:scrolltolower=\"scrollToLower\"\n text=\"{{PullText}}\"\n>\n <list list=\"{{list}}\"></list>\n <smt-spin status=\"{{status}}\" bind:tap=\"reload\"></smt-spin>\n</smt-feed>", | ||
"js": "async onRefresh() {\n const refresh = await selComponent(this, '.pull-down-refresh');\n const {data: list} = await fetchData();\n await syncSetData(this, {\n status: 1,\n count: 0,\n list: list || this.data.list,\n text: list ? `为你推荐${list.length}条更新` : '暂时没有更新,休息一下'\n });\n refresh.stopRefresh();\n},\n\nasync scrollToLower() {\n const {data: list} = await fetchData();\n const fail = this.data.count === 3;\n const end = this.data.count === 5;\n if (fail || end) {\n this.setData({\n status: fail ? 3 : 2\n });\n return;\n }\n await syncSetData(this, {\n list: list.concat(this.data.list || []),\n count: ++this.data.count\n });\n}", | ||
"css": ".smt-feed {\n display: block;\n height: calc(100vh - 40px);\n}" | ||
}, | ||
"fragement": "swanide://fragment/7b9bf19d0c974d45d9b68fd9fc4429b31577200628346", | ||
"properties": { | ||
@@ -18,3 +19,3 @@ "attributes": [ | ||
"description": "主题配置,默认浅色;深色主题请指定dark", | ||
"required": "false", | ||
"required": "否", | ||
"default": "-" | ||
@@ -26,3 +27,3 @@ }, | ||
"description": "加载、话术区域高度,单位为设备px,转换方法: import {upx2dpx} from '@smt-ui/component/src/common/utils/px';", | ||
"required": "false", | ||
"required": "否", | ||
"default": "192px(设计稿宽度为1242)" | ||
@@ -34,3 +35,3 @@ }, | ||
"description": "是否开启手势下拉刷新; 默认只能通过组件api调起", | ||
"required": "false", | ||
"required": "否", | ||
"default": "false" | ||
@@ -42,3 +43,3 @@ }, | ||
"description": "触发scrolltolower事件的阈值", | ||
"required": "false", | ||
"required": "否", | ||
"default": "150px(设备上的px)" | ||
@@ -50,3 +51,3 @@ }, | ||
"description": "加载成功时的展示话术", | ||
"required": "false", | ||
"required": "否", | ||
"default": "建议最多显示18个汉字,超出内容截断" | ||
@@ -58,3 +59,3 @@ }, | ||
"description": "手势滑动触发加载时,响应该onRefresh事件; 通过调用api加载,不会触发该事件", | ||
"required": "false", | ||
"required": "否", | ||
"default": "" | ||
@@ -66,3 +67,3 @@ }, | ||
"description": "手动调用该api,触发加载", | ||
"required": "false", | ||
"required": "否", | ||
"default": "" | ||
@@ -74,3 +75,3 @@ }, | ||
"description": "手动调用该api,停止加载,并弹出加载提示(对应属性text);可使用await等待关闭动画结束", | ||
"required": "false", | ||
"required": "否", | ||
"default": "" | ||
@@ -82,31 +83,38 @@ }, | ||
"description": "手动调用该api,立即关闭加载,不弹出加载提示;例如接口异常,建义直接关闭加载(小球交替一次大约为500ms,调用前可加延时避免关闭太快)", | ||
"required": "false", | ||
"required": "否", | ||
"default": "" | ||
}, | ||
{ | ||
"name": "ext-cls-feed", | ||
"name": "smt-feed-container", | ||
"type": "externalClass", | ||
"description": "组件整体class名", | ||
"required": "false", | ||
"required": "否", | ||
"default": "-" | ||
}, | ||
{ | ||
"name": "ext-cls-loading", | ||
"name": "smt-feed-loading", | ||
"type": "externalClass", | ||
"description": "加载区域class名", | ||
"required": "false", | ||
"required": "否", | ||
"default": "-" | ||
}, | ||
{ | ||
"name": "ext-cls-circle-left", | ||
"name": "smt-feed-content", | ||
"type": "externalClass", | ||
"description": "滚动区域class名,用于设置ios回弹背景", | ||
"required": "false", | ||
"default": "" | ||
}, | ||
{ | ||
"name": "smt-refresh-circle-left", | ||
"type": "externalClass", | ||
"description": "加载中左侧小球class名", | ||
"required": "false", | ||
"required": "否", | ||
"default": "-" | ||
}, | ||
{ | ||
"name": "ext-cls-circle-right", | ||
"name": "smt-refresh-circle-right", | ||
"type": "externalClass", | ||
"description": "加载中右侧小球class名", | ||
"required": "false", | ||
"required": "否", | ||
"default": "-" | ||
@@ -118,10 +126,10 @@ }, | ||
"description": "滚动区域class名", | ||
"required": "false", | ||
"required": "否", | ||
"default": "-" | ||
}, | ||
{ | ||
"name": "ext-cls-result", | ||
"name": "smt-refresh-result-container", | ||
"type": "externalClass", | ||
"description": "加载话术外框class名", | ||
"required": "false", | ||
"required": "否", | ||
"default": "-" | ||
@@ -133,3 +141,3 @@ }, | ||
"description": "加载话术文字class名", | ||
"required": "false", | ||
"required": "否", | ||
"default": "-" | ||
@@ -143,3 +151,3 @@ } | ||
"description": "滚动时触发,返回当前组件的值", | ||
"required": "false", | ||
"required": "否", | ||
"default": "-" | ||
@@ -146,0 +154,0 @@ } |
@@ -5,7 +5,6 @@ #### 组件名称 | ||
#### 解释: | ||
信息流组件,可配置下拉刷新、列表加载、上滑加载功能,适合于feed信息场景,并可放置在页面的任何部分;同时组件包含手势下拉以及api调用两种使用方式 | ||
信息流组件,可配置下拉刷新、列表加载、上滑加载功能,适用于列表信息展示,并可放置在页面的任何部分;组件包含手势下拉以及api调用两种使用方式 | ||
* 注意: | ||
1. 和scroll-view一样,信息流组件作为局部滚动组件,必须在它的父级或本身指定高度 | ||
2. 组件本身使用了async/await语法,如出现regenerater等报错,请在开发者工具“项目信息”中开启“增强编译” | ||
3. 当同时启用下拉刷新和上滑加载且请求不稳定时,可使用CancelToken取消先前的请求 | ||
2. 当同时启用下拉刷新和上滑加载且请求不稳定时,可使用CancelToken取消先前的请求 | ||
@@ -15,18 +14,19 @@ #### 属性说明: | ||
|---|---|---|---|---| | ||
|theme |String |false|-|主题配置,默认浅色;深色主题请指定dark| | ||
|loadingHeight |Number |false|192px(设计稿宽度为1242)|加载、话术区域高度,单位为设备px,转换方法: import {upx2dpx} from '@smt-ui/component/src/common/utils/px';| | ||
|pullToRefresh |Boolean |false|false|是否开启手势下拉刷新; 默认只能通过组件api调起| | ||
|lowerThreshold |Number |false|150px(设备上的px)|触发scrolltolower事件的阈值| | ||
|text |String |false|建议最多显示18个汉字,超出内容截断|加载成功时的展示话术| | ||
|refresh |EventHandle |false||手势滑动触发加载时,响应该onRefresh事件; 通过调用api加载,不会触发该事件| | ||
|startRefresh |EventHandle |false||手动调用该api,触发加载| | ||
|stopRefresh |EventHandle |false||手动调用该api,停止加载,并弹出加载提示(对应属性text);可使用await等待关闭动画结束| | ||
|closeLoading |EventHandle |false||手动调用该api,立即关闭加载,不弹出加载提示;例如接口异常,建义直接关闭加载(小球交替一次大约为500ms,调用前可加延时避免关闭太快)| | ||
|ext-cls-feed |externalClass |false|-|组件整体class名| | ||
|ext-cls-loading |externalClass |false|-|加载区域class名| | ||
|ext-cls-circle-left |externalClass |false|-|加载中左侧小球class名| | ||
|ext-cls-circle-right |externalClass |false|-|加载中右侧小球class名| | ||
|ext-cls-content |externalClass |false|-|滚动区域class名| | ||
|ext-cls-result |externalClass |false|-|加载话术外框class名| | ||
|ext-cls-result-text |externalClass |false|-|加载话术文字class名| | ||
|theme |String |否|-|主题配置,默认浅色;深色主题请指定dark| | ||
|loadingHeight |Number |否|192px(设计稿宽度为1242)|加载、话术区域高度,单位为设备px,转换方法: import {upx2dpx} from '@smt-ui/component/src/common/utils/px';| | ||
|pullToRefresh |Boolean |否|false|是否开启手势下拉刷新; 默认只能通过组件api调起| | ||
|lowerThreshold |Number |否|150px(设备上的px)|触发scrolltolower事件的阈值| | ||
|text |String |否|建议最多显示18个汉字,超出内容截断|加载成功时的展示话术| | ||
|refresh |EventHandle |否||手势滑动触发加载时,响应该onRefresh事件; 通过调用api加载,不会触发该事件| | ||
|startRefresh |EventHandle |否||手动调用该api,触发加载| | ||
|stopRefresh |EventHandle |否||手动调用该api,停止加载,并弹出加载提示(对应属性text);可使用await等待关闭动画结束| | ||
|closeLoading |EventHandle |否||手动调用该api,立即关闭加载,不弹出加载提示;例如接口异常,建义直接关闭加载(小球交替一次大约为500ms,调用前可加延时避免关闭太快)| | ||
|smt-feed-container |externalClass |否|-|组件整体class名| | ||
|smt-feed-loading |externalClass |否|-|加载区域class名| | ||
|smt-feed-content |externalClass |false||滚动区域class名,用于设置ios回弹背景| | ||
|smt-refresh-circle-left |externalClass |否|-|加载中左侧小球class名| | ||
|smt-refresh-circle-right |externalClass |否|-|加载中右侧小球class名| | ||
|ext-cls-content |externalClass |否|-|滚动区域class名| | ||
|smt-refresh-result-container |externalClass |否|-|加载话术外框class名| | ||
|ext-cls-result-text |externalClass |否|-|加载话术文字class名| | ||
@@ -36,136 +36,43 @@ #### 代码示例 | ||
``` | ||
<tabs | ||
tabs-background-color="#3388ff" | ||
tabs-underline-color = "#fff" | ||
tabs-inactive-text-color="#fff" | ||
tabs-active-text-color="#fff" | ||
bindtabchange="tabChange" | ||
active-name="{{activeName}}"> | ||
<tab-item | ||
s-for="item in ['下拉刷新', '自动刷新']" | ||
name="{{item}}" | ||
label="{{item}}" | ||
/> | ||
</tabs> | ||
<!-- 下拉刷新 --> | ||
<smt-feed | ||
s-if="{{activeName === '下拉刷新'}}" | ||
class="smt-feed pull-down-refresh" | ||
pull-to-refresh | ||
bind:refresh="onRefresh" | ||
bind:scrolltolower="scrollToLower" | ||
text="{{text}}" | ||
> | ||
<list list="{{list}}"></list> | ||
<smt-spin status="{{status}}" bind:tap="reload"></smt-spin> | ||
</smt-feed> | ||
<!-- 自动刷新 --> | ||
<smt-feed | ||
s-elif="{{activeName === '自动刷新'}}" | ||
class="smt-feed auto-refresh" | ||
text="{{text}}" | ||
> | ||
<list list="{{list}}"></list> | ||
</smt-feed> | ||
<!-- 手势下拉刷新 & 触底加载 --> | ||
<smt-feed | ||
class="smt-feed pull-down-refresh" | ||
pull-to-refresh | ||
bind:refresh="onRefresh" | ||
bind:scrolltolower="scrollToLower" | ||
text="{{PullText}}" | ||
> | ||
<list list="{{list}}"></list> | ||
<smt-spin status="{{status}}" bind:tap="reload"></smt-spin> | ||
</smt-feed> | ||
``` | ||
js: | ||
``` | ||
import {selComponent, syncSetData} from '../../../../../src/common/utils/index'; | ||
async onRefresh() { | ||
const refresh = await selComponent(this, '.pull-down-refresh'); | ||
const {data: list} = await fetchData(); | ||
await syncSetData(this, { | ||
status: 1, | ||
count: 0, | ||
list: list || this.data.list, | ||
text: list ? `为你推荐${list.length}条更新` : '暂时没有更新,休息一下' | ||
}); | ||
refresh.stopRefresh(); | ||
}, | ||
Page({ | ||
data: { | ||
activeName: '下拉刷新', | ||
list: Array.from({length: 15}, (_, i) => i), | ||
text: '', | ||
status: 1 | ||
}, | ||
tabChange({detail}) { | ||
console.log(detail); | ||
async scrollToLower() { | ||
const {data: list} = await fetchData(); | ||
const fail = this.data.count === 3; | ||
const end = this.data.count === 5; | ||
if (fail || end) { | ||
this.setData({ | ||
activeName: detail.name | ||
}, | ||
() => this.autoRefresh(detail.name)); | ||
}, | ||
/** | ||
* 请求时长1200ms | ||
*/ | ||
async fetchData(ms = 1200) { | ||
const empty = Math.random() > .7; | ||
const fail = Math.random() > .9; | ||
const data = { | ||
code: fail ? -1 : 0, | ||
data: fail || empty ? null : Array.from({length: Math.random() * 10 + 10 | 0}, (_, i) => i) | ||
}; | ||
return new Promise(r => setTimeout(() => r(data), ms)); | ||
}, | ||
async onRefresh() { | ||
console.log('触发 onRefresh'); | ||
const refresh = await selComponent(this, '.pull-down-refresh'); | ||
const {code, data: list} = await this.fetchData(); | ||
if (code !== 0) { | ||
swan.showToast({title: '网络错误', mask: true, icon: 'none'}); | ||
refresh.closeLoading(); | ||
return; | ||
} | ||
await syncSetData(this, { | ||
status: 1, | ||
list: list || this.data.list, | ||
text: list ? `本次共加载${list.length}条数据!` : '暂时没有更新,休息一下' | ||
status: fail ? 3 : 2 | ||
}); | ||
refresh.stopRefresh(); | ||
}, | ||
async autoRefresh() { | ||
if (this.data.activeName === '自动刷新') { | ||
const clkRefresh = await selComponent(this, '.auto-refresh'); | ||
const autoLoad = async () => { | ||
clkRefresh.startRefresh(); | ||
const {code, data: list} = await this.fetchData(); | ||
if (code !== 0) { | ||
swan.showToast({title: '网络错误', mask: true, icon: 'none'}); | ||
clkRefresh.closeLoading(); | ||
return; | ||
} | ||
await syncSetData(this, { | ||
status: 0, | ||
list: list || this.data.list, | ||
text: list ? `本次共加载${list.length}条数据!` : '暂时没有更新,休息一下' | ||
}); | ||
await new Promise(r => setTimeout(r, 1500)); // 1500ms 之后再关闭: 手动关闭不需要等小球转3圈 | ||
await clkRefresh.stopRefresh(); | ||
await new Promise(r => setTimeout(r, 500)); // 加载完一轮等500ms | ||
this.data.activeName === '自动刷新' && await autoLoad(); | ||
}; | ||
autoLoad(); | ||
} | ||
}, | ||
async scrollToLower() { | ||
const {code, data: list} = await this.fetchData(); | ||
const fail = code !== 0; | ||
const end = !list; | ||
if (fail || end) { | ||
this.setData({ | ||
status: fail ? 3 : 2 | ||
}); | ||
return; | ||
} | ||
await syncSetData(this, { | ||
list: list.concat(this.data.list || []) | ||
}); | ||
}, | ||
async reload() { | ||
if (this.data.status !== 0 && this.data.status !== 3) { | ||
return; | ||
} | ||
await syncSetData(this, {status: 1}); | ||
this.scrollToLower(); | ||
return; | ||
} | ||
}); | ||
await syncSetData(this, { | ||
list: list.concat(this.data.list || []), | ||
count: ++this.data.count | ||
}); | ||
} | ||
``` | ||
@@ -172,0 +79,0 @@ css: |
@@ -7,2 +7,3 @@ { | ||
"groups": "layout", | ||
"fragement": "swanide://fragment/1151cb408d98313c4e79bb6a62755bfa1577193673206", | ||
"demoCode": { | ||
@@ -19,3 +20,3 @@ "s": "<view>\n <smt-icon name=\"add\" color=\"{{color1}}\" />\n <smt-icon name=\"smart-game-m\" size=\"30\" color=\"{{color2}}\"/>\n</view>", | ||
"description": "icon的英文名称", | ||
"required": "true" | ||
"required": "是" | ||
}, | ||
@@ -22,0 +23,0 @@ { |
@@ -10,3 +10,3 @@ #### 组件名称 | ||
|---|---|---|---|---| | ||
|name |String |true||icon的英文名称| | ||
|name |String |是||icon的英文名称| | ||
|color |String, Array.<String> |||icon的颜色,多色图标支持传入色值的数组| | ||
@@ -13,0 +13,0 @@ |size |Number ||25|icon的尺寸,单位px| |
{ | ||
"name": "smt-page-status", | ||
"label": "空态/缺省组件", | ||
"description": "空态/缺省组件,可用于全屏和半屏。用于展示页面加载,页面异常-有操作、页面异常-无操作三种页面状态。", | ||
"codeSnap": "<page-status></page-status>", | ||
"label": "页面状态组件", | ||
"description": "页面状态组件,可用于全屏和半屏。用于展示页面加载,页面异常-有操作、页面异常-无操作三种页面状态。", | ||
"codeSnap": "<smt-page-status></smt-page-status>", | ||
"groups": "layout", | ||
"fragment": "swanide://fragment/4cc92982287ac8a30b5fe19f220dc8f71577190736077", | ||
"demoCode": { | ||
@@ -17,4 +18,4 @@ "s": "<smt-page-status \n class=\"content\"\n loading=\"{{loading}}\"\n title=\"网络不给力,请稍后再试\" >\n</smt-page-status>", | ||
"type": "String", | ||
"description": "主题配置,默认浅色;深色主题请指定dark", | ||
"required": "false", | ||
"description": "主题配置,默认浅色;沉浸式主题请指定dark", | ||
"required": "否", | ||
"default": "" | ||
@@ -26,3 +27,3 @@ }, | ||
"description": "页面状态配置,默认不展示加载状态页面", | ||
"required": "false", | ||
"required": "否", | ||
"default": "false" | ||
@@ -34,3 +35,3 @@ }, | ||
"description": "空态/缺省页面下的图标名称", | ||
"required": "false", | ||
"required": "否", | ||
"default": "content" | ||
@@ -42,3 +43,3 @@ }, | ||
"description": "加载页面下的标题文案", | ||
"required": "false", | ||
"required": "否", | ||
"default": "正在加载..." | ||
@@ -50,3 +51,3 @@ }, | ||
"description": "空态/缺省页面下的标题文案", | ||
"required": "false", | ||
"required": "否", | ||
"default": "单行标题" | ||
@@ -58,3 +59,3 @@ }, | ||
"description": "空态/缺省页面下的描述文案", | ||
"required": "false", | ||
"required": "否", | ||
"default": "" | ||
@@ -66,3 +67,3 @@ }, | ||
"description": "是否展示空态/缺省页面下的操作按钮,默认展示", | ||
"required": "false", | ||
"required": "否", | ||
"default": "true" | ||
@@ -74,15 +75,16 @@ }, | ||
"description": "空态/缺省页面下,操作按钮的描述文案,建议最多显示4个汉字,超出内容截断", | ||
"required": "false", | ||
"required": "否", | ||
"default": "重新加载" | ||
}, | ||
} | ||
], | ||
"events": [ | ||
{ | ||
"name": "reloading", | ||
"type": "EventHandle", | ||
"type": "Event", | ||
"description": "空态/缺省页面下,点击操作按钮时触发", | ||
"required": "false", | ||
"default": "" | ||
"required": "否", | ||
"default": "-" | ||
} | ||
], | ||
"events": [] | ||
] | ||
} | ||
} |
@@ -5,3 +5,3 @@ #### 组件名称 | ||
#### 解释: | ||
空态/缺省组件,可用于全屏和半屏。用于展示页面加载,页面异常-有操作、页面异常-无操作三种页面状态。 | ||
页面状态组件,可用于全屏和半屏。用于展示页面加载,页面异常-有操作、页面异常-无操作三种页面状态。 | ||
@@ -11,11 +11,10 @@ #### 属性说明: | ||
|---|---|---|---|---| | ||
|theme |String |false||主题配置,默认浅色;深色主题请指定dark| | ||
|loading |Boolean |false|false|页面状态配置,默认不展示加载状态页面| | ||
|icon |String |false|content|空态/缺省页面下的图标名称| | ||
|loadingTitle |String |false|正在加载...|加载页面下的标题文案| | ||
|title |String |false|单行标题|空态/缺省页面下的标题文案| | ||
|desc |String |false||空态/缺省页面下的描述文案| | ||
|showBtn |Boolean |false|true|是否展示空态/缺省页面下的操作按钮,默认展示| | ||
|btnText |String |false|重新加载|空态/缺省页面下,操作按钮的描述文案,建议最多显示4个汉字,超出内容截断| | ||
|reloading |EventHandle |false||空态/缺省页面下,点击操作按钮时触发| | ||
|theme |String |否||主题配置,默认浅色;沉浸式主题请指定dark| | ||
|loading |Boolean |否|false|页面状态配置,默认不展示加载状态页面| | ||
|icon |String |否|content|空态/缺省页面下的图标名称| | ||
|loadingTitle |String |否|正在加载...|加载页面下的标题文案| | ||
|title |String |否|单行标题|空态/缺省页面下的标题文案| | ||
|desc |String |否||空态/缺省页面下的描述文案| | ||
|showBtn |Boolean |否|true|是否展示空态/缺省页面下的操作按钮,默认展示| | ||
|btnText |String |否|重新加载|空态/缺省页面下,操作按钮的描述文案,建议最多显示4个汉字,超出内容截断| | ||
@@ -22,0 +21,0 @@ #### 代码示例 |
{ | ||
"name": "smt-refresh", | ||
"label": "刷新", | ||
"description": "可用于页面任意区域,不包含手势交互;建议直接使用smt-feed下拉刷新,该组件包含下拉功能。", | ||
"description": "可用于页面任意区域;使用时需自行添加下拉逻辑改变offset-y参数;smt-feed组件对smt-refresh进行了封装,支持手势交互和api调起刷新。", | ||
"codeSnap": "<smt-refresh offset-y=\"{{0}}\" status=\"{{1}}\" text=\"为你推荐15条更新\"></smt-refresh>", | ||
"fragement": "swanide://fragment/51f1e7d8841665748fa17a940eab12de1577181667851", | ||
"fragement": "swanide://fragment/598510a21b650b89e2e5d13c814dc46c1577192328823", | ||
"groups": "layout", | ||
"demoCode": { | ||
"s": "<tabs\n tabs-background-color=\"#3388ff\"\n tabs-underline-color = \"#fff\"\n tabs-inactive-text-color=\"#fff\"\n tabs-active-text-color=\"#fff\"\n bindtabchange=\"tabChange\"\n active-name=\"{{activeName}}\">\n <tab-item\n s-for=\"item in ['下拉刷新', '自动刷新']\"\n name=\"{{item}}\"\n label=\"{{item}}\"\n />\n </tabs>\n <!-- 下拉刷新 -->\n <smt-feed\n s-if=\"{{activeName === '下拉刷新'}}\"\n class=\"smt-feed pull-down-refresh\"\n pull-to-refresh\n bind:refresh=\"onRefresh\"\n bind:scrolltolower=\"scrollToLower\"\n text=\"{{text}}\"\n >\n <list list=\"{{list}}\"></list>\n <smt-spin status=\"{{status}}\" bind:tap=\"reload\"></smt-spin>\n </smt-feed>\n\n <!-- 自动刷新 -->\n <smt-feed\n s-elif=\"{{activeName === '自动刷新'}}\"\n class=\"smt-feed auto-refresh\"\n text=\"{{text}}\"\n >\n <list list=\"{{list}}\"></list>\n </smt-feed>", | ||
"js": "import {selComponent, syncSetData} from '../../../../../src/common/utils/index';\n\nPage({\n data: {\n activeName: '下拉刷新',\n list: Array.from({length: 15}, (_, i) => i),\n text: '',\n status: 1\n },\n\n tabChange({detail}) {\n console.log(detail);\n this.setData({\n activeName: detail.name\n },\n () => this.autoRefresh(detail.name));\n },\n\n /**\n * 请求时长1200ms\n */\n async fetchData(ms = 1200) {\n const empty = Math.random() > .7;\n const fail = Math.random() > .9;\n const data = {\n code: fail ? -1 : 0,\n data: fail || empty ? null : Array.from({length: Math.random() * 10 + 10 | 0}, (_, i) => i)\n };\n return new Promise(r => setTimeout(() => r(data), ms));\n },\n\n async onRefresh() {\n console.log('触发 onRefresh');\n const refresh = await selComponent(this, '.pull-down-refresh');\n const {code, data: list} = await this.fetchData();\n if (code !== 0) {\n swan.showToast({title: '网络错误', mask: true, icon: 'none'});\n refresh.closeLoading();\n return;\n }\n await syncSetData(this, {\n status: 1,\n list: list || this.data.list,\n text: list ? `本次共加载${list.length}条数据!` : '暂时没有更新,休息一下'\n });\n refresh.stopRefresh();\n },\n\n async autoRefresh() {\n if (this.data.activeName === '自动刷新') {\n const clkRefresh = await selComponent(this, '.auto-refresh');\n const autoLoad = async () => {\n clkRefresh.startRefresh();\n const {code, data: list} = await this.fetchData();\n if (code !== 0) {\n swan.showToast({title: '网络错误', mask: true, icon: 'none'});\n clkRefresh.closeLoading();\n return;\n }\n await syncSetData(this, {\n status: 0,\n list: list || this.data.list,\n text: list ? `本次共加载${list.length}条数据!` : '暂时没有更新,休息一下'\n });\n await new Promise(r => setTimeout(r, 1500)); // 1500ms 之后再关闭: 手动关闭不需要等小球转3圈\n await clkRefresh.stopRefresh();\n await new Promise(r => setTimeout(r, 500)); // 加载完一轮等500ms\n this.data.activeName === '自动刷新' && await autoLoad();\n };\n autoLoad();\n }\n },\n\n async scrollToLower() {\n const {code, data: list} = await this.fetchData();\n const fail = code !== 0;\n const end = !list;\n if (fail || end) {\n this.setData({\n status: fail ? 3 : 2\n });\n return;\n }\n await syncSetData(this, {\n list: list.concat(this.data.list || [])\n });\n },\n\n async reload() {\n if (this.data.status !== 0 && this.data.status !== 3) {\n return;\n }\n await syncSetData(this, {status: 1});\n " | ||
"s": "<!-- 刷新:不包含手势交互,需通过改变offset-y和status自定义交互 -->\n<smt-refresh status=\"{{status}}\" offset-y=\"{{offsetY}}\" text=\"为您推荐xx条更新\"></smt-refresh>\n\n<!-- 信息流:包含手势交互 -->\n<smt-feed\n class=\"smt-feed\"\n theme=\"{{dark ? 'dark' : ''}}\"\n pull-to-refresh\n bind:refresh=\"onRefresh\"\n text=\"{{text}}\"\n>\n <list list=\"{{list}}\" theme=\"{{dark ? 'dark' : ''}}\"></list>\n</smt-feed>", | ||
"js": "async onRefresh() {\n console.log('触发 onRefresh');\n const refresh = await selComponent(this, '.pull-down-refresh');\n const {code, data: list} = await this.fetchData();\n if (code !== 0) {\n swan.showToast({title: '网络错误', mask: true, icon: 'none'});\n refresh.closeLoading();\n return;\n }\n await syncSetData(this, {\n status: 1,\n list: list || this.data.list,\n text: list ? `本次共加载${list.length}条数据!` : '暂时没有更新,休息一下'\n });\n refresh.stopRefresh();\n}", | ||
"css": ".smt-feed {\n height: 3.51rem;\n display: block;\n background-color: #fff;\n}" | ||
}, | ||
@@ -18,3 +19,3 @@ "properties": { | ||
"description": "主题配置,默认浅色;深色主题请指定dark", | ||
"required": "false", | ||
"required": "否", | ||
"default": "-" | ||
@@ -26,3 +27,3 @@ }, | ||
"description": "加载区域高度", | ||
"required": "false", | ||
"required": "否", | ||
"default": "192px(需转换为设备尺寸)" | ||
@@ -34,3 +35,3 @@ }, | ||
"description": "垂直移动距离,*建议后续在sjs中使用", | ||
"required": "false", | ||
"required": "否", | ||
"default": "0" | ||
@@ -42,3 +43,3 @@ }, | ||
"description": "加载状态 0: 未开始 1: 加载中 2: 展示话术", | ||
"required": "false", | ||
"required": "否", | ||
"default": "0" | ||
@@ -50,3 +51,3 @@ }, | ||
"description": "加载成功时的展示话术", | ||
"required": "false", | ||
"required": "否", | ||
"default": "建议最多显示18个汉字,超出内容截断" | ||
@@ -53,0 +54,0 @@ } |
@@ -5,3 +5,3 @@ #### 组件名称 | ||
#### 解释: | ||
可用于页面任意区域,不包含手势交互;建议直接使用smt-feed下拉刷新,该组件包含下拉功能。 | ||
可用于页面任意区域;使用时需自行添加下拉逻辑改变offset-y参数;smt-feed组件对smt-refresh进行了封装,支持手势交互和api调起刷新。 | ||
@@ -11,7 +11,7 @@ #### 属性说明: | ||
|---|---|---|---|---| | ||
|theme |String |false|-|主题配置,默认浅色;深色主题请指定dark| | ||
|loadingHgt |Number |false|192px(需转换为设备尺寸)|加载区域高度| | ||
|offsetY |Number |false|0|垂直移动距离,*建议后续在sjs中使用| | ||
|status |Number |false|0|加载状态 0: 未开始 1: 加载中 2: 展示话术| | ||
|text |String |false|建议最多显示18个汉字,超出内容截断|加载成功时的展示话术| | ||
|theme |String |否|-|主题配置,默认浅色;深色主题请指定dark| | ||
|loadingHgt |Number |否|192px(需转换为设备尺寸)|加载区域高度| | ||
|offsetY |Number |否|0|垂直移动距离,*建议后续在sjs中使用| | ||
|status |Number |否|0|加载状态 0: 未开始 1: 加载中 2: 展示话术| | ||
|text |String |否|建议最多显示18个汉字,超出内容截断|加载成功时的展示话术| | ||
@@ -21,137 +21,42 @@ #### 代码示例 | ||
``` | ||
<tabs | ||
tabs-background-color="#3388ff" | ||
tabs-underline-color = "#fff" | ||
tabs-inactive-text-color="#fff" | ||
tabs-active-text-color="#fff" | ||
bindtabchange="tabChange" | ||
active-name="{{activeName}}"> | ||
<tab-item | ||
s-for="item in ['下拉刷新', '自动刷新']" | ||
name="{{item}}" | ||
label="{{item}}" | ||
/> | ||
</tabs> | ||
<!-- 下拉刷新 --> | ||
<smt-feed | ||
s-if="{{activeName === '下拉刷新'}}" | ||
class="smt-feed pull-down-refresh" | ||
pull-to-refresh | ||
bind:refresh="onRefresh" | ||
bind:scrolltolower="scrollToLower" | ||
text="{{text}}" | ||
> | ||
<list list="{{list}}"></list> | ||
<smt-spin status="{{status}}" bind:tap="reload"></smt-spin> | ||
</smt-feed> | ||
<!-- 刷新:不包含手势交互,需通过改变offset-y和status自定义交互 --> | ||
<smt-refresh status="{{status}}" offset-y="{{offsetY}}" text="为您推荐xx条更新"></smt-refresh> | ||
<!-- 自动刷新 --> | ||
<smt-feed | ||
s-elif="{{activeName === '自动刷新'}}" | ||
class="smt-feed auto-refresh" | ||
text="{{text}}" | ||
> | ||
<list list="{{list}}"></list> | ||
</smt-feed> | ||
<!-- 信息流:包含手势交互 --> | ||
<smt-feed | ||
class="smt-feed" | ||
theme="{{dark ? 'dark' : ''}}" | ||
pull-to-refresh | ||
bind:refresh="onRefresh" | ||
text="{{text}}" | ||
> | ||
<list list="{{list}}" theme="{{dark ? 'dark' : ''}}"></list> | ||
</smt-feed> | ||
``` | ||
js: | ||
``` | ||
import {selComponent, syncSetData} from '../../../../../src/common/utils/index'; | ||
Page({ | ||
data: { | ||
activeName: '下拉刷新', | ||
list: Array.from({length: 15}, (_, i) => i), | ||
text: '', | ||
status: 1 | ||
}, | ||
tabChange({detail}) { | ||
console.log(detail); | ||
this.setData({ | ||
activeName: detail.name | ||
}, | ||
() => this.autoRefresh(detail.name)); | ||
}, | ||
/** | ||
* 请求时长1200ms | ||
*/ | ||
async fetchData(ms = 1200) { | ||
const empty = Math.random() > .7; | ||
const fail = Math.random() > .9; | ||
const data = { | ||
code: fail ? -1 : 0, | ||
data: fail || empty ? null : Array.from({length: Math.random() * 10 + 10 | 0}, (_, i) => i) | ||
}; | ||
return new Promise(r => setTimeout(() => r(data), ms)); | ||
}, | ||
async onRefresh() { | ||
console.log('触发 onRefresh'); | ||
const refresh = await selComponent(this, '.pull-down-refresh'); | ||
const {code, data: list} = await this.fetchData(); | ||
if (code !== 0) { | ||
swan.showToast({title: '网络错误', mask: true, icon: 'none'}); | ||
refresh.closeLoading(); | ||
return; | ||
} | ||
await syncSetData(this, { | ||
status: 1, | ||
list: list || this.data.list, | ||
text: list ? `本次共加载${list.length}条数据!` : '暂时没有更新,休息一下' | ||
}); | ||
refresh.stopRefresh(); | ||
}, | ||
async autoRefresh() { | ||
if (this.data.activeName === '自动刷新') { | ||
const clkRefresh = await selComponent(this, '.auto-refresh'); | ||
const autoLoad = async () => { | ||
clkRefresh.startRefresh(); | ||
const {code, data: list} = await this.fetchData(); | ||
if (code !== 0) { | ||
swan.showToast({title: '网络错误', mask: true, icon: 'none'}); | ||
clkRefresh.closeLoading(); | ||
return; | ||
} | ||
await syncSetData(this, { | ||
status: 0, | ||
list: list || this.data.list, | ||
text: list ? `本次共加载${list.length}条数据!` : '暂时没有更新,休息一下' | ||
}); | ||
await new Promise(r => setTimeout(r, 1500)); // 1500ms 之后再关闭: 手动关闭不需要等小球转3圈 | ||
await clkRefresh.stopRefresh(); | ||
await new Promise(r => setTimeout(r, 500)); // 加载完一轮等500ms | ||
this.data.activeName === '自动刷新' && await autoLoad(); | ||
}; | ||
autoLoad(); | ||
} | ||
}, | ||
async scrollToLower() { | ||
const {code, data: list} = await this.fetchData(); | ||
const fail = code !== 0; | ||
const end = !list; | ||
if (fail || end) { | ||
this.setData({ | ||
status: fail ? 3 : 2 | ||
}); | ||
return; | ||
} | ||
await syncSetData(this, { | ||
list: list.concat(this.data.list || []) | ||
}); | ||
}, | ||
async reload() { | ||
if (this.data.status !== 0 && this.data.status !== 3) { | ||
return; | ||
} | ||
await syncSetData(this, {status: 1}); | ||
async onRefresh() { | ||
console.log('触发 onRefresh'); | ||
const refresh = await selComponent(this, '.pull-down-refresh'); | ||
const {code, data: list} = await this.fetchData(); | ||
if (code !== 0) { | ||
swan.showToast({title: '网络错误', mask: true, icon: 'none'}); | ||
refresh.closeLoading(); | ||
return; | ||
} | ||
await syncSetData(this, { | ||
status: 1, | ||
list: list || this.data.list, | ||
text: list ? `本次共加载${list.length}条数据!` : '暂时没有更新,休息一下' | ||
}); | ||
refresh.stopRefresh(); | ||
} | ||
``` | ||
css: | ||
``` | ||
.smt-feed { | ||
height: 3.51rem; | ||
display: block; | ||
background-color: #fff; | ||
} | ||
``` |
@@ -19,3 +19,3 @@ { | ||
"description": "加载状态配置", | ||
"required": "true" | ||
"required": "是" | ||
}, | ||
@@ -26,3 +26,3 @@ { | ||
"description": "主题配置,默认浅色;深色主题请指定dark", | ||
"required": "false", | ||
"required": "否", | ||
"default": "" | ||
@@ -34,3 +34,3 @@ }, | ||
"description": "加载状态对应的文案", | ||
"required": "false", | ||
"required": "否", | ||
"default": "['点击加载更多', '正在加载...', '已经到底啦', '加载失败 点击重新加载']" | ||
@@ -42,3 +42,3 @@ }, | ||
"description": "默认兼容iPhoneX 及以上型号底部安全区,非全屏可关闭", | ||
"required": "false", | ||
"required": "否", | ||
"default": "true" | ||
@@ -45,0 +45,0 @@ } |
@@ -10,6 +10,6 @@ #### 组件名称 | ||
|---|---|---|---|---| | ||
|status |Number |true||加载状态配置| | ||
|theme |String |false||主题配置,默认浅色;深色主题请指定dark| | ||
|textConfig |Array |false|['点击加载更多', '正在加载...', '已经到底啦', '加载失败 点击重新加载']|加载状态对应的文案| | ||
|secureBottom |Boolean |false|true|默认兼容iPhoneX 及以上型号底部安全区,非全屏可关闭| | ||
|status |Number |是||加载状态配置| | ||
|theme |String |否||主题配置,默认浅色;深色主题请指定dark| | ||
|textConfig |Array |否|['点击加载更多', '正在加载...', '已经到底啦', '加载失败 点击重新加载']|加载状态对应的文案| | ||
|secureBottom |Boolean |否|true|默认兼容iPhoneX 及以上型号底部安全区,非全屏可关闭| | ||
@@ -16,0 +16,0 @@ #### 代码示例 |
@@ -1,1 +0,1 @@ | ||
{"name":"component","label":"布局组件","type":"component","configPath":"./smart-design-config.json","version":"0.0.26-alpha.0"} | ||
{"name":"component","label":"布局组件","type":"component","configPath":"./smart-design-config.json","version":"0.0.30-alpha.0"} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
2736
869085