UNPKG

z-paging

Version:

超简单、低耦合!使用wxs+renderjs实现。支持自定义下拉刷新、上拉加载更多、虚拟列表、下拉进入二楼、自动管理空数据图、无闪动聊天分页、本地分页、国际化等数百项配置

2,084 lines (1,799 loc) 63.6 kB
import { AllowedComponentProps, VNodeProps } from './_common' type _Arrayable<T> = T | T[]; /** * i18n配置信息 */ type _I18nText = Partial<Record<'en' | 'zh-Hans' | 'zh-Hant', string>>; declare global { namespace ZPagingEnums { /** * query的触发来源:user-pull-down:用户主动下拉刷新 reload:通过reload触发 refresh:通过refresh触发 load-more:通过滚动到底部加载更多或点击底部加载更多触发 */ type QueryFrom = 'user-pull-down' | 'reload' | 'refresh' | 'load-more'; /** * 下拉刷新状态:default:默认状态 release-to-refresh:松手立即刷新 loading:刷新中 complete:刷新结束 go-f2:松手进入二楼 */ type RefresherStatus = 'default' | 'release-to-refresh' | 'loading' | 'complete' | 'go-f2'; /** * 下拉进入二楼状态: go:二楼开启 close:二楼关闭 */ type GoF2Status = 'go' | 'close'; /** * 底部加载更多状态:default:默认状态 loading:加载中 no-more:没有更多数据 fail:加载失败 */ type LoadMoreStatus = 'default' | 'loading' | 'no-more' | 'fail'; /** * 列表触摸的方向,top代表用户将列表向上移动(scrollTop不断减小),bottom代表用户将列表向下移动(scrollTop不断增大) */ type TouchDirection = 'top' | 'bottom'; } namespace ZPagingParams { /** * z-paging返回数据 * * @since 2.5.3 */ interface ReturnData<T> { /** * 总列表 */ totalList: T[]; /** * 是否没有更多数据 */ noMore: boolean; } /** * 嵌套父容器信息 [list组件](https://uniapp.dcloud.net.cn/component/list.html) * * @since 2.0.4 */ interface SetSpecialEffectsArgs { /** * 和list同时滚动的组件id,应为外层的scroller */ id?: string; /** * 要吸顶的header顶部距离scroller顶部的距离 * - Android暂不支持 * * @default 0 */ headerHeight?: number; } /** * touchmove信息 */ interface RefresherTouchmoveInfo { /** 下拉的距离 */ pullingDistance: number; /** 前后两次回调滑动距离的差值 */ dy: number; /** refresh组件高度 */ viewHeight: number; /** pullingDistance/viewHeight的比值 */ rate: number; } /** * 默认事件处理 */ type DefaultEventHandler = (value: boolean) => void; /** * 使用虚拟列表或内置列表时点击了cell的信息 */ interface InnerCellClickInfo { /** 当前点击的item */ item: any; /** 当前点击的index */ index: number; } /** * 键盘的高度信息 */ interface KeyboardHeightInfo { /** 键盘的高度 */ height: number; } /** * 列表滚动信息(vue) */ interface ScrollInfo { detail: { scrollLeft: number; scrollTop: number; scrollHeight: number; scrollWidth: number; deltaX: number; deltaY: number; } } /** * 列表滚动信息(nvue) */ interface ScrollInfoN { contentSize: { width: number; height: number; }; contentOffset: { x: number; y: number; }; isDragging: boolean; } /** * 滚动结束时触发事件信息 */ interface ScrollendEvent { contentSize: { width: number; height: number; }; contentOffset: { x: number; y: number; }; isDragging: boolean; } /** * 下拉刷新Slot的props */ interface RefresherSlotProps { /** 下拉刷新状态:default:默认状态 release-to-refresh:松手立即刷新 loading:刷新中 complete:刷新结束 go-f2:松手进入二楼 */ refresherStatus: ZPagingEnums.RefresherStatus; } /** * 空数据图Slot的props */ interface EmptySlotProps { /** 是否加载失败: 加载失败,false: 加载成功) */ isLoadFailed: boolean; } /** * 虚拟列表&内置列表中cell Slot的props */ interface InnerListCellSlotProps { /** 当前item */ item: any; /** 当前index */ index: number; } /** * 聊天记录加载中Slot的props */ interface ChatLoadingSlotProps { /** 底部加载更多状态:default:默认状态 loading:加载中 no-more:没有更多数据 fail:加载失败 */ loadingMoreStatus: ZPagingEnums.LoadMoreStatus; } } /** * 虚拟列表数据项 * * @since 2.7.7 */ type ZPagingVirtualItem<T> = T & { /** * 元素真实索引 */ zp_index: number; }; } // ****************************** Props ****************************** declare interface ZPagingProps { // ******************** 数据&布局配置 ******************** /** * 父组件v-model所绑定的list的值 * @default [] */ value?: any[] /** * 自定义初始的pageNo(从第几页开始) * @default 1 */ defaultPageNo?: number /** * 自定义pageSize(每页显示多少条) * - 必须和后端的pageSize一致,例如后端分页的pageSize为15,此属性必须改为15 * @default 10 */ defaultPageSize?: number /** * z-paging是否使用fixed布局 * - 若使用fixed布局,则z-paging的父view无需固定高度,z-paging高度默认铺满屏幕,页面中的view请放在z-paging标签内,需要固定在顶部的view使用slot="top"包住,需要固定在底部的view使用slot="bottom"包住 * @default true * @since 1.5.6 */ fixed?: boolean /** * 是否开启底部安全区域适配 * @default false * @since 1.6.1 */ safeAreaInsetBottom?: boolean /** * 开启底部安全区域适配后,是否使用placeholder形式实现。 * - 为否时滚动区域会自动避开底部安全区域,也就是所有滚动内容都不会挡住底部安全区域,若设置为是,则滚动时滚动内容会挡住底部安全区域,但是当滚动到底部时才会避开底部安全区域 * @default false * @since 2.2.7 */ useSafeAreaPlaceholder?: boolean /** * 使用页面滚动,默认为否。当设置为是时,则使用页面的滚动而非此组件内部的scroll-view的滚动。 * @default false */ usePageScroll?: boolean /** * 使用页面滚动时,是否在不满屏时自动填充满屏幕 * @default true * @since 2.0.6 */ autoFullHeight?: boolean /** * loading(下拉刷新、上拉加载更多)的主题样式,支持black,white * @default 'black' */ defaultThemeStyle?: 'black' | 'white' /** * 设置z-paging的style,部分平台(如微信小程序)无法直接修改组件的style,可使用此属性代替。 */ pagingStyle?: Record<string, any> /** * z-paging的高度,优先级低于paging-style中设置的height * - 传字符串,如100px、100rpx、100% */ height?: string /** * z-paging的宽度,优先级低于paging-style中设置的width * - 传字符串,如100px、100rpx、100% */ width?: string /** * z-paging的最大宽度,优先级低于paging-style中设置的max-width * - 默认为空,也就是铺满窗口宽度,若设置了特定值则会自动添加margin: 0 auto */ maxWidth?: string /** * z-paging的背景色(为css中的background,因此也可以设置渐变,背景图片等),优先级低于paging-style中设置的background-color。 * - 传字符串,如"#ffffff" */ bgColor?: string /** * 是否监听列表触摸方向改变 * @default false * @since 2.3.0 */ watchTouchDirectionChange?: boolean /** * 调用complete后延迟处理的时间,单位为毫秒,优先级高于min-delay * @default 0 * @since 1.9.6 */ delay?: number | string /** * 触发@query后最小延迟处理的时间,单位为毫秒,优先级低于delay * @default 0 * @since 2.0.9 */ minDelay?: number | string /** * 请求失败是否触发reject * @default true * @since 2.6.1 */ callNetworkReject?: boolean /** * z-paging中默认布局的单位 * @default rpx * @since 2.6.7 */ unit?: 'rpx' | 'px' /** * 自动拼接complete中传过来的数组 * - 若设置为false,则complete中传过来的数组会直接覆盖list * @default true * @since 1.8.8 */ concat?: boolean /** * 为保证数据一致,设置当前tab切换时的标识key,并在complete中传递相同key,若二者不一致,则complete将不会生效 * @since 1.6.4 */ dataKey?: number | string | Record<string, any> /** * 【极简写法】自动注入的list名,可自动修改父view(包含ref="paging")中对应name的list值 * - z-paging标签必须设置ref="paging" * @since 1.8.5 */ autowireListName?: string /** * 【极简写法】自动注入的query名,可自动调用父view(包含ref="paging")中的query方法 * - z-paging标签必须设置ref="paging" * @since 1.8.5 */ autowireQueryName?: string /** * 获取分页数据Function,功能与@query类似。若设置了fetch则@query将不再触发。 * @since 2.7.8 */ fetch?: (...args: any[]) => any; /** * fetch的附加参数,fetch配置后有效 * @since 2.7.8 */ fetchParams?: Record<string, any> // ******************** reload相关配置 ******************** /** * z-paging mounted 后自动调用 reload 方法 (mounted 后自动调用接口) * @default true * @since 2.4.3 */ auto?: boolean /** * reload 时自动滚动到顶部 * - 如果reload时list被清空导致占位消失,也可能会自动返回到顶部,因此如果是这种情况还需要将autoCleanListWhenReload设置为false * @default true */ autoScrollToTopWhenReload?: boolean /** * reload时立即自动清空原list若立即自动清空,则在reload之后、请求回调之前页面是空白的 * @default true */ autoCleanListWhenReload?: boolean /** * 列表刷新时自动显示下拉刷新 view * @default false * @since 1.7.2 */ showRefresherWhenReload?: boolean /** * 列表刷新时自动显示加载更多view,且为加载中状态 (仅初始设置有效,不可动态修改) * @default false * @since 1.7.2 */ showLoadingMoreWhenReload?: boolean /** * 组件 created 时立即触发 reload (可解决一些情况下先看到页面再看到 loading 的问题) * - auto 为 true 时有效。为否时将在 mounted+nextTick 后触发 reload * @default false * @since 2.2.3 */ createdReload?: boolean // ******************** 下拉刷新配置 ******************** /** * 是否开启下拉刷新 * @default true */ refresherEnabled?: boolean /** * 设置自定义下拉刷新阈值,默认单位为px。支持传100、"100px"或"100rpx" * - nvue无效 * @default '80rpx' */ refresherThreshold?: number | string /** * 是否开启下拉刷新状态栏占位,适用于隐藏导航栏时,下拉刷新需要避开状态栏高度的情况 * @default false * @since 2.6.1 */ useRefresherStatusBarPlaceholder?: boolean /** * 是否只使用下拉刷新 * - 设置为true后将关闭mounted自动请求数据、关闭滚动到底部加载更多,强制隐藏空数据图 * @default false */ refresherOnly?: boolean /** * 是否使用自定义的下拉刷新,默认为是,即使用z-paging的下拉刷新 * - 设置为false即代表使用uni scroll-view自带的下拉刷新,h5、App、微信小程序以外的平台不支持uni scroll-view自带的下拉刷新 * @default true */ useCustomRefresher?: boolean /** * 用户下拉刷新时是否触发reload方法 * @default true */ reloadWhenRefresh?: boolean /** * 下拉刷新的主题样式,支持black,white * @default 'black' */ refresherThemeStyle?: string /** * 自定义下拉刷新中左侧图标的样式 */ refresherImgStyle?: Record<string, any> /** * 自定义下拉刷新中右侧状态描述文字的样式 */ refresherTitleStyle?: Record<string, any> /** * 自定义下拉刷新中右侧最后更新时间文字的样式 * - show-refresher-update-time为true时有效 */ refresherUpdateTimeStyle?: Record<string, any> /** * 是否实时监听下拉刷新中进度,并通过@refresherTouchmove传递给父组件 * @default false * @since 2.1.0 */ watchRefresherTouchmove?: boolean /** * 是否显示最后更新时间 * @default false * @since 1.6.7 */ showRefresherUpdateTime?: boolean /** * 自定义下拉刷新默认状态下的文字 * - 支持直接传字符串或形如:{'en':'英文','zh-Hans':'简体中文','zh-Hant':'繁体中文'}的i18n配置 * @default '继续下拉刷新' */ refresherDefaultText?: string | _I18nText /** * 自定义下拉刷新松手立即刷新状态下的文字 * - 支持直接传字符串或形如:{'en':'英文','zh-Hans':'简体中文','zh-Hant':'繁体中文'}的i18n配置 * @default '松开立即刷新' */ refresherPullingText?: string | _I18nText /** * 自定义下拉刷新刷新中状态下的文字 * - 支持直接传字符串或形如:{'en':'英文','zh-Hans':'简体中文','zh-Hant':'繁体中文'}的i18n配置 * @default '正在刷新...' */ refresherRefreshingText?: string | _I18nText /** * 自定义下拉刷新刷新结束状态下的文字 * - 支持直接传字符串或形如:{'en':'英文','zh-Hans':'简体中文','zh-Hant':'繁体中文'}的i18n配置 * @default '刷新成功' * @since 2.0.6 */ refresherCompleteText?: string | _I18nText /** * 自定义下拉刷新默认状态下的图片 */ refresherDefaultImg?: string /** * 自定义下拉刷新松手立即刷新状态下的图片 */ refresherPullingImg?: string /** * 自定义下拉刷新刷新中状态下的图片 */ refresherRefreshingImg?: string /** * 自定义下拉刷新刷新结束状态下的图片 */ refresherCompleteImg?: string /** * 自定义下拉刷新刷新中状态下是否展示旋转动画 * @default true * @since 2.5.8 */ refresherRefreshingAnimated?: boolean /** * 是否开启自定义下拉刷新刷新结束回弹动画效果 * @default true */ refresherEndBounceEnabled?: boolean /** * 设置系统下拉刷新默认样式,支持设置 black,white,none * @default 'black' */ refresherDefaultStyle?: string /** * 设置自定义下拉刷新区域背景颜色 * @default '#FFFFFF00' */ refresherBackground?: string /** * 设置固定的自定义下拉刷新区域背景颜色 * @default '#FFFFFF00' */ refresherFixedBackground?: string /** * 设置固定的自定义下拉刷新区域高度 * @default 0 */ refresherFixedBacHeight?: number | string /** * 设置自定义下拉刷新默认状态下回弹动画时间,单位为毫秒 * @default 100 * @since 2.3.1 */ refresherDefaultDuration?: number | string /** * 自定义下拉刷新结束以后延迟收回的时间,单位为毫秒 * @default 0 * @since 2.0.6 */ refresherCompleteDelay?: number | string /** * 自定义下拉刷新结束收回动画时间,单位为毫秒 * @default 300 * @since 2.0.6 */ refresherCompleteDuration?: number | string /** * 下拉刷新时下拉到“松手立即刷新”状态时是否使手机短振动 * @default false * @since 2.4.7 */ refresherVibrate?: boolean /** * 自定义下拉刷新刷新中状态是否允许列表滚动 * @default true */ refresherRefreshingScrollable?: boolean /** * 自定义下拉刷新结束状态下是否允许列表滚动 * @default false * @since 2.1.1 */ refresherCompleteScrollable?: boolean /** * 设置自定义下拉刷新下拉超出阈值后继续下拉位移衰减的比例 * @default 0.65 */ refresherOutRate?: number /** * 是否开启下拉进入二楼功能 * @default false * @since 2.7.7 */ refresherF2Enabled?: boolean /** * 下拉进入二楼阈值 * @default '200rpx' * @since 2.7.7 */ refresherF2Threshold?: number | string /** * 下拉进入二楼动画时间,单位为毫秒 * @default 200 * @since 2.7.7 */ refresherF2Duration?: number | string /** * 下拉进入二楼状态松手后是否弹出二楼 * @default true * @since 2.7.7 */ showRefresherF2?: boolean /** * 设置自定义下拉刷新下拉时实际下拉位移与用户下拉距离的比值 * @default 0.75 * @since 2.3.7 */ refresherPullRate?: number /** * 自定义下拉刷新下拉帧率,默认为40,过高可能会出现抖动问题 * @default 40 */ refresherFps?: number | string /** * 自定义下拉刷新允许触发的最大下拉角度,默认为40度 * - 值小于0或大于90时,代表不受角度限 * @default 40 * @since 2.5.8 */ refresherMaxAngle?: number | string /** * 自定义下拉刷新的角度由未达到最大角度变到达到最大角度时,是否继续下拉刷新手势 * @default false */ refresherAngleEnableChangeContinued?: boolean /** * 下拉刷新时是否禁止下拉刷新view跟随用户触摸竖直移动 * @default false * @since 2.5.8 */ refresherNoTransform?: boolean // ******************** 底部加载更多配置 ******************** /** * 是否启用加载更多数据(含滑动到底部加载更多数据和点击加载更多数据) * @default true */ loadingMoreEnabled?: boolean /** * 距底部/右边多远时,触发 scrolltolower 事件,默认单位为px * - 支持传100、"100px"或"100rpx" * @default '100rpx' */ lowerThreshold?: number | string /** * 是否启用滑动到底部加载更多数据 * @default true */ toBottomLoadingMoreEnabled?: boolean /** * 底部加载更多的主题样式,支持black,white * @default 'black' */ loadingMoreThemeStyle?: string /** * 自定义底部加载更多样式;如:{'background':'red'} * - 此属性无法修改文字样式,修改文字样式请使用loading-more-title-custom-style */ loadingMoreCustomStyle?: Record<string, any> /** * 自定义底部加载更多文字样式;如:{'color':'red'} * @since 2.1.7 */ loadingMoreTitleCustomStyle?: Record<string, any> /** * 自定义底部加载更多加载中动画样式 */ loadingMoreLoadingIconCustomStyle?: Record<string, any> /** * 自定义底部加载更多加载中动画图标类型 * - 可选flower或circle,默认为flower (nvue不支持) * @default 'flower' */ loadingMoreLoadingIconType?: 'flower' | 'circle' /** * 自定义底部加载更多加载中动画图标图片 * - 若设置则使用自定义的动画图标,loading-more-loading-icon-type将无效 (nvue无效) */ loadingMoreLoadingIconCustomImage?: string /** * 底部加载更多加载中view是否展示旋转动画 * - loading-more-loading-icon-custom-image有值时有效,nvue无效 * @default true * @since 1.9.4 */ loadingMoreLoadingAnimated?: boolean /** * 滑动到底部"默认"文字 * - 支持直接传字符串或形如:{'en':'英文','zh-Hans':'简体中文','zh-Hant':'繁体中文'}的i18n配置 * @default '点击加载更多' */ loadingMoreDefaultText?: string | _I18nText /** * 滑动到底部"加载中"文字 * - 支持直接传字符串或形如:{'en':'英文','zh-Hans':'简体中文','zh-Hant':'繁体中文'}的i18n配置 * @default '正在加载...' */ loadingMoreLoadingText?: string | _I18nText /** * 滑动到底部"没有更多"文字 * - 支持直接传字符串或形如:{'en':'英文','zh-Hans':'简体中文','zh-Hant':'繁体中文'}的i18n配置 * @default '没有更多了' */ loadingMoreNoMoreText?: string | _I18nText /** * 滑动到底部"加载失败"文字 * - 支持直接传字符串或形如:{'en':'英文','zh-Hans':'简体中文','zh-Hant':'繁体中文'}的i18n配置 * @default '加载失败,点击重新加载' */ loadingMoreFailText?: string | _I18nText /** * 当没有更多数据且分页内容未超出z-paging时是否隐藏没有更多数据的view * - nvue不支持,nvue中请使用hide-no-more-by-limit控制 * @default false * @since 2.4.3 */ hideNoMoreInside?: boolean /** * 当没有更多数据且分页数组长度少于这个值时,隐藏没有更多数据的view * - 默认为0,代表不限制。此属性优先级高于`hide-no-more-inside` * @default 0 * @since 2.4.3 */ hideNoMoreByLimit?: number /** * 当分页未满一屏时,是否自动加载更多 (nvue无效) * @default false * @since 2.0.0 */ insideMore?: boolean /** * 滑动到底部状态为默认状态时,以加载中的状态展示 * - 若设置为是,可避免滚动到底部看到默认状态然后立刻变为加载中状态的问题,但分页数量未超过一屏时,不会显示【点击加载更多】 * @default false * @since 2.2.0 */ loadingMoreDefaultAsLoading?: boolean /** * 是否显示没有更多数据的view * @default true */ showLoadingMoreNoMoreView?: boolean /** * 是否显示默认的加载更多text * @default true */ showDefaultLoadingMoreText?: boolean /** * 是否显示没有更多数据的分割线,默认为是 * @default true */ showLoadingMoreNoMoreLine?: boolean /** * 自定义底部没有更多数据的分割线样式 */ loadingMoreNoMoreLineCustomStyle?: Record<string, any> // ******************** 空数据与加载失败配置 ******************** /** * 是否强制隐藏空数据图 * @default false */ hideEmptyView?: boolean /** * 空数据图片是否铺满z-paging * - 默认为否,即填充满z-paging内列表(滚动区域)部分。若设置为否,则为填铺满整个z-paging * @default false * @since 2.0.3 */ emptyViewFixed?: boolean /** * 空数据图片是否垂直居中 * - 默认为是,若设置为否即为从空数据容器顶部开始显示 (empty-view-fixed为false时有效) * @default true * @since 2.0.6 */ emptyViewCenter?: boolean /** * 空数据图描述文字 * - 支持直接传字符串或形如:{'en':'英文','zh-Hans':'简体中文','zh-Hant':'繁体中文'}的i18n配置 * @default '没有数据哦~' */ emptyViewText?: string | _I18nText /** * 空数据图图片,默认使用z-paging内置的图片 * - 建议使用绝对路径,开头不要添加"@",请以"/"开头 */ emptyViewImg?: string /** * 空数据图“加载失败”图片,默认使用z-paging内置的图片 * - 建议使用绝对路径,开头不要添加"@",请以"/"开头 * @since 1.6.7 */ emptyViewErrorImg?: string /** * 空数据图点击重新加载文字 * - 支持直接传字符串或形如:{'en':'英文','zh-Hans':'简体中文','zh-Hant':'繁体中文'}的i18n配置 * @default '重新加载' * @since 1.6.7 */ emptyViewReloadText?: string | _I18nText /** * 空数据图“加载失败”描述文字 * - 支持直接传字符串或形如:{'en':'英文','zh-Hans':'简体中文','zh-Hant':'繁体中文'}的i18n配置 * @default '很抱歉,加载失败' * @since 1.6.7 */ emptyViewErrorText?: string | _I18nText /** * 空数据图父view样式 */ emptyViewSuperStyle?: Record<string, any> /** * 空数据图样式,可设置空数据view的top等,如::empty-view-style="{'top':'100rpx'}" */ emptyViewStyle?: Record<string, any> /** * 空数据图img样式 */ emptyViewImgStyle?: Record<string, any> /** * 空数据图描述文字样式 */ emptyViewTitleStyle?: Record<string, any> /** * 空数据图重新加载按钮样式 * @since 1.6.7 */ emptyViewReloadStyle?: Record<string, any> /** * 是否显示空数据图重新加载按钮(无数据时) * @default false * @since 1.6.7 */ showEmptyViewReload?: boolean /** * 加载失败时是否显示空数据图重新加载按钮 * @default true * @since 1.6.7 */ showEmptyViewReloadWhenError?: boolean /** * 加载中时是否自动隐藏空数据图 * @default true */ autoHideEmptyViewWhenLoading?: boolean /** * 用户下拉列表触发下拉刷新加载中时是否自动隐藏空数据图 * @default true * @since 2.0.9 */ autoHideEmptyViewWhenPull?: boolean // ******************** 全屏Loading配置 ******************** /** * 第一次加载后自动隐藏loading slot * @default true */ autoHideLoadingAfterFirstLoaded?: boolean /** * loading slot的父view是否铺满屏幕并固定 * - 设置为true后,插入的loading的父view会铺满全屏。注意:插入的loading需要设置height:100%(nvue为flex:1)才可铺满全屏。loading内的view从导航栏顶部开始,会被导航栏盖住,请妥善处理。 * @default false * @since 2.0.9 */ loadingFullFixed?: boolean /** * 是否自动显示系统Loading:即uni.showLoading * - 若开启则将在刷新列表时(调用reload、refresh时)显示。下拉刷新和滚动到底部加载更多不会显示。 * @default false * @since 2.3.7 */ autoShowSystemLoading?: boolean /** * 显示系统Loading时显示的文字 * - 支持直接传字符串或形如:{'en':'英文','zh-Hans':'简体中文','zh-Hant':'繁体中文'}的i18n配置 * @default '加载中...' * @since 2.3.7 */ systemLoadingText?: string | _I18nText /** * 显示系统Loading时是否显示透明蒙层,防止触摸穿透。H5、App、微信小程序、百度小程序有效。 * @default true * @since 2.3.9 */ systemLoadingMask?: boolean // ******************** 返回顶部按钮配 ******************** /** * 自动显示点击返回顶部按钮 * @default false */ autoShowBackToTop?: boolean /** * 点击返回顶部按钮显示/隐藏的阈值(滚动距离),默认单位为px * - 支持传100、"100px"或"100rpx" * @default 400rpx */ backToTopThreshold?: number | string /** * 点击返回顶部按钮的自定义图片地址 * - 建议使用绝对路径,开头不要添加"@",请以"/"开头 * @default 'z-paging内置的图片' */ backToTopImg?: string /** * 点击返回顶部按钮返回到顶部时是否展示过渡动画 * @default true */ backToTopWithAnimate?: boolean /** * 点击返回顶部按钮与底部的距离,默认单位为px * - 支持传100、"100px"或"100rpx" * @default 160rpx */ backToTopBottom?: number | string /** * 点击返回顶部按钮的自定义样式 */ backToTopStyle?: Record<string, any> // ******************** 虚拟列表&内置列表配置 ******************** /** * 是否使用虚拟列表 * - 使用页面滚动或nvue时,不支持虚拟列表。在nvue中z-paging内置了list组件,效果与虚拟列表类似,并且可以提供更好的性能 * @default false */ useVirtualList?: boolean /** * 在使用虚拟列表时,是否使用兼容模式。兼容模式写法较繁琐,但可提供良好的兼容性。 * @default false * @since 2.4.0 */ useCompatibilityMode?: boolean /** * 使用兼容模式时传递的附加数据,可选、非必须 * @since 2.4.0 */ extraData?: Record<string, any> /** * 虚拟列表cell高度模式,默认为fixed,也就是每个cell高度完全相同,将以第一个cell高度为准进行计算。 * @default 'fixed' */ cellHeightMode?: 'fixed' | 'dynamic' /** * 预加载的列表可视范围(列表高度)页数。此数值越大,则虚拟列表中加载的dom越多,内存消耗越大(会维持在一个稳定值),但增加预加载页面数量可缓解快速滚动短暂白屏问题。 * @default 12 */ preloadPage?: number | string /** * 固定的cell高度,`cell-height-mode=fixed`才有效,若设置了值,则不计算第一个cell高度而使用设置的cell高度。默认单位为px * - 支持传100、"100px"或"100rpx" * @since 2.7.8 */ fixedCellHeight?: number | string /** * 虚拟列表列数,默认为1。常用于每行有多列的情况,例如每行有2列数据,需要将此值设置为2。 * @default 1 * @since 2.2.8 */ virtualListCol?: number | string /** * 虚拟列表scroll取样帧率,默认为80,过低容易出现白屏问题,过高容易出现卡顿问题 * @default 80 */ virtualScrollFps?: number | string /** * 虚拟列表cell id的前缀,适用于一个页面有多个虚拟列表的情况,用以区分不同虚拟列表cell的id * - 注意:请勿传数字或以数字开头的字符串。如设置为list1,则cell的id应为:list1-zp-id-${item.zp_index} * @since 2.8.1 */ virtualCellIdPrefix?: string /** * 是否在z-paging内部循环渲染列表(使用内置列表)。 * @default false */ useInnerList?: boolean /** * 强制关闭inner-list。适用于开启了虚拟列表后需要强制关闭inner-list的情况。 * @default false * @since 2.2.7 */ forceCloseInnerList?: boolean /** * 虚拟列表是否使用swiper-item包裹,默认为否,此属性为了解决vue3+(微信小程序或QQ小程序)中,使用非内置列表写法时,若z-paging在swiper-item内存在无法获取slot插入的cell高度进而导致虚拟列表失败的问题 * - 仅vue3+(微信小程序或QQ小程序)+非内置列表写法虚拟列表有效,其他情况此属性设置任何值都无效,所以如果您在swiper-item内使用z-paging的非内置虚拟列表写法,将此属性设置为true即可 * @default false * @since 2.8.6 */ virtualInSwiperSlot?: boolean /** * 内置列表cell的key名称(仅nvue有效,在nvue中开启use-inner-list时必须填此项) * @since 2.2.7 */ cellKeyName?: string /** * innerList样式 */ innerListStyle?: Record<string, any> /** * innerCell样式 * @since 2.2.8 */ innerCellStyle?: Record<string, any> // ******************** 本地分页配置 ******************** /** * 本地分页时上拉加载更多延迟时间,单位为毫秒 * @default 200 */ localPagingLoadingTime?: number | string // ******************** 聊天记录模式配置 ******************** /** * 使用聊天记录模式,为保证良好的体验。 * @default false */ useChatRecordMode?: boolean; /** * 使用聊天记录模式时是否自动隐藏键盘(在用户触摸列表时候自动隐藏键盘) * @default true * @since 2.3.4 */ autoHideKeyboardWhenChat?: boolean; /** * 使用聊天记录模式中键盘弹出时是否自动调整slot="bottom"高度 * @default true * @since 2.7.4 */ autoAdjustPositionWhenChat?: boolean; /** * 使用聊天记录模式中键盘弹出时是否自动滚动到底部 * @default false * @since 2.7.4 */ autoToBottomWhenChat?: boolean; /** * 使用聊天记录模式中键盘弹出时占位高度偏移距离。默认0rpx。单位px * @default "0px" * @since 2.7.6 */ chatAdjustPositionOffset?: string; /** * 使用聊天记录模式中`reload`时是否显示`chatLoading` * @default false * @since 2.7.4 */ showChatLoadingWhenReload?: boolean; /** * `bottom`的背景色,默认透明,传字符串,如"#ffffff" * @since 2.7.4 */ bottomBgColor?: string; /** * 在聊天记录模式中滑动到顶部状态为默认状态时,是否以加载中的状态展示 * @default true * @since 2.7.5 */ chatLoadingMoreDefaultAsLoading?: boolean; // ******************** scroll-view相关配置 ******************** /** * 控制是否出现滚动条 * @default true */ showScrollbar?: boolean; /** * 是否可以滚动,使用内置scroll-view和nvue时有效 * @default true */ scrollable?: boolean; /** * 是否允许横向滚动 * @default false * @since 2.0.6 */ scrollX?: boolean; /** * iOS设备上滚动到顶部时是否允许回弹效果 * - 关闭回弹效果后可使滚动到顶部后立即下拉可立即触发下拉刷新,但是有吸顶view时滚动到顶部时可能出现抖动 * @default false */ scrollToTopBounceEnabled?: boolean; /** * iOS设备上滚动到底部时是否允许回弹效果。可能会导致使用scroll-view滚动时无法顺利滚动到底部 * @default true */ scrollToBottomBounceEnabled?: boolean; /** * 在设置滚动条位置时使用动画过渡 * @default false */ scrollWithAnimation?: boolean; /** * 值应为某子元素id(id不能以数字开头)。设置哪个方向可滚动,则在哪个方向滚动到该元素。若在一些平台中无效,可以通过调用z-paging的scrollToxxx系列的方法实现。 */ scrollIntoView?: string; /** * iOS点击顶部状态栏、安卓双击标题栏时,滚动条返回顶部。仅支持app-nvue,微信小程序。 * @default true */ enableBackToTop?: boolean; // ******************** nvue独有配置 ******************** /** * nvue中修改列表类型。 * @default "list" */ nvueListIs?: 'list' | 'waterfall' | 'scroller'; /** * waterfall 配置,仅在 nvue 中且 nvueListIs=waterfall 时有效。示例: {'column-gap': 20}。配置参数详情参见: https://uniapp.dcloud.io/component/waterfall */ nvueWaterfallConfig?: Record<string, any>; /** * nvue 控制是否回弹效果,iOS 不支持动态修改。注意: 若禁用回弹效果,下拉刷新将失效。 * @default true */ nvueBounce?: boolean; /** * nvue 中通过代码滚动到顶部/底部时,是否加快动画效果(无滚动动画时无效)。 * @default false * @since 1.9.4 */ nvueFastScroll?: boolean; /** * nvue 中 list 的 id。 * @since 2.0.4 */ nvueListId?: string; /** * 是否隐藏 nvue 列表底部的 tagView,此 view 用于标识滚动到底部位置。 * - 若隐藏则滚动到底部功能将失效。 * - 在 nvue 中实现吸顶+swiper 功能时需将最外层 z-paging 的此属性设置为 true。 * @default false * @since 2.0.4 */ hideNvueBottomTag?: boolean; /** * 设置 nvue 中是否按分页模式(类似竖向 swiper)显示 List。 * @default false * @since 2.3.1 */ nvuePagingEnabled?: boolean; /** * nvue 中控制 onscroll 事件触发的频率。表示两次 onscroll 事件之间列表至少滚动了指定的像素值。单位: px。 * @since 2.3.5 */ offsetAccuracy?: number; // ******************** 缓存配置 ******************** /** * 是否使用缓存。若开启,将自动缓存第一页的数据。注意:默认仅会缓存组件首次加载时第一次请求到的数据,后续的下拉刷新操作不会更新缓存。 * - 必须设置 `cacheKey`,否则缓存无效。 * @default false */ useCache?: boolean; /** * 使用缓存时缓存的 key,用于区分不同列表的缓存数据。 * - useCache为 true 时必须设置,否则缓存无效。 */ cacheKey?: string; /** * 缓存模式。 * - default: 仅缓存组件首次加载时第一次请求到的数据。 * - always: 总是缓存,每次列表刷新(如下拉刷新、调用 reload 等)都会更新缓存。 * @default "default" */ cacheMode?: 'default' | 'always'; // ******************** z-index配置 ******************** /** * slot="top" 的 view 的 z-index。 * - 仅使用页面滚动时有效。 * @default 99 */ topZIndex?: number; /** * z-paging 内容容器父 view 的 z-index。 * @default 1 */ superContentZIndex?: number; /** * z-paging 内容容器部分的 z-index。 * @default 1 */ contentZIndex?: number; /** * 空数据 view 的 z-index。 * @default 9 */ emptyViewZIndex?: number; // ******************** 其他配置 ******************** /** * z-paging 是否自动高度。 * - 自动高度时会自动铺满屏幕,不需要设置父 view 为 100% 等操作。 * - 注意:自动高度可能并不准确。 * @deprecated 建议使用 fixed 代替。 * @default false */ autoHeight?: boolean; /** * z-paging 自动高度时的附加高度。 * - 添加单位 px 或 rpx,默认为 px。 * - 若需要减少高度,请传负数,如 "-10rpx" 或 "10.5px"。 * @deprecated 建议使用 fixed 代替。 * @default "0px" */ autoHeightAddition?: number | string; // ****************************** Events ****************************** // ******************** 数据处理相关事件 ******************** /** * 父组件v-model所绑定的list的值改变时触发此事件 * @param value 列表数据 */ onInput?: (value: any[]) => any /** * 下拉刷新或滚动到底部时会自动触发此方法。z-paging加载时也会触发(若要禁止,请设置:auto="false")。pageNo和pageSize会自动计算好,直接传给服务器即可。 * @param pageNo 当前第几页 * @param pageSize 每页多少条 * @param from query的触发来源:user-pull-down:用户主动下拉刷新 reload:通过reload触发 refresh:通过refresh触发 load-more:通过滚动到底部加载更多或点击底部加载更多触发 */ onQuery?: (pageNo: number, pageSize: number, from: ZPagingEnums.QueryFrom) => void /** * 分页渲染的数组改变时触发 * @param list 最终的分页数据数组 */ onListChange?: (list: any[]) => void // ******************** 下拉刷新相关事件 ******************** /** * 自定义下拉刷新状态改变 * - use-custom-refresher为false时无效 * @param status 下拉刷新状态:default:默认状态 release-to-refresh:松手立即刷新 loading:刷新中 complete:刷新结束 go-f2:松手进入二楼 */ onRefresherStatusChange?: (status: ZPagingEnums.RefresherStatus) => void /** * 自定义下拉刷新下拉开始 * - use-custom-refresher为false时无效 * @param y 当前触摸开始的屏幕点的y值(单位px) */ onRefresherTouchstart?: (y: number) => void /** * 自定义下拉刷新下拉拖动中 * - use-custom-refresher为false时无效 * - 在使用wxs的平台上,为减少wxs与js通信折损,只有在z-paging添加@refresherTouchmove时,wxs才会实时将下拉拖动事件传给js,在微信小程序和QQ小程序中,因$listeners无效,所以必须设置:watch-refresher-touchmove="true"方可使此事件被触发 * @param info touchmove信息 */ onRefresherTouchmove?: (info: ZPagingParams.RefresherTouchmoveInfo) => void /** * 自定义下拉刷新下拉结束 * - use-custom-refresher为false时无效 * @param y 当前触摸开始的屏幕点的y值(单位px) */ onRefresherTouchend?: (y: number) => void /** * 下拉进入二楼状态改变 * - use-custom-refresher为false时无效 * @param y 当前触摸开始的屏幕点的y值(单位px) * @since 2.7.7 */ onRefresherF2Change?: (status: ZPagingEnums.GoF2Status) => void /** * 自定义下拉刷新被触发 */ onRefresh?: () => void /** * 自定义下拉刷新被复位 */ onRestore?: () => void // ******************** 底部加载更多相关事件 ******************** /** * 自定义下拉刷新状态改变 * - use-custom-refresher为false时无效 * @param status 底部加载更多状态:default:默认状态 loading:加载中 no-more:没有更多数据 fail:加载失败 */ onLoadingStatusChange?: (status: ZPagingEnums.LoadMoreStatus) => void // ******************** 空数据与加载失败相关事件 ******************** /** * 点击了空数据图中的重新加载按钮 * @param handler 点击空数据图中重新加载后是否进行reload操作,默认为是。如果需要禁止reload事件,则调用handler(false) * @since 1.8.0 */ onEmptyViewReload?: (handler: ZPagingParams.DefaultEventHandler) => void /** * 点击了空数据图view * @since 2.3.3 */ onEmptyViewClick?: () => void /** * z-paging请求失败状态改变 * @param isLoadFailed 当前是否是请求失败状态,为true代表是,反之为否;默认状态为否 * @since 2.5.0 */ onIsLoadFailedChange?: (isLoadFailed: boolean) => void // ******************** 返回顶部按钮相关事件 ******************** /** * 点击了返回顶部按钮 * @param handler 点击返回顶部按钮后是否滚动到顶部,默认为是。如果需要禁止滚动到顶部事件,则调用handler(false) * @since 2.6.1 */ onBackToTopClick?: (handler: ZPagingParams.DefaultEventHandler) => void // ******************** 虚拟列表&内置列表相关事件 ******************** /** * 虚拟列表当前渲染的数组改变时触发,在虚拟列表中只会渲染可见区域内+预加载页面的数据 * - nvue无效 * @param list 虚拟列表当前渲染的数组 * @since 2.2.7 */ onVirtualListChange?: (list: any[]) => void /** * 使用虚拟列表或内置列表时点击了cell * - nvue无效 * @param list 虚拟列表当前渲染的数组 * @since 2.4.0 */ onInnerCellClick?: (info: ZPagingParams.InnerCellClickInfo) => void /** * 虚拟列表顶部占位高度改变 * - nvue无效 * @param height 虚拟列表顶部占位高度(单位:px) * @since 2.7.12 */ onVirtualPlaceholderTopHeight?: (height: number) => void // ******************** 聊天记录模式相关事件 ******************** /** * 在聊天记录模式下,触摸列表隐藏了键盘 * - nvue无效 * @since 2.3.6 */ onHidedKeyboard?: () => void /** * 键盘高度改变 * @param info 键盘高度信息 * @since 2.7.1 */ onKeyboardHeightChange?: (info: ZPagingParams.KeyboardHeightInfo) => void /** * z-paging列表滚动时触发 * @param event 滚动事件信息,vue使用_ScrollInfo,nvue使用_ScrollInfoN */ onScroll?: (event: ZPagingParams.ScrollInfo | ZPagingParams.ScrollInfoN) => void /** * scrollTop改变时触发,使用点击返回顶部时需要获取scrollTop时可使用此事件 * @param scrollTop */ onScrollTopChange?: (scrollTop: number) => void /** * z-paging内置的scroll-view/list-view/waterfall滚动底部时触发 */ onScrolltolower?: () => void /** * z-paging内置的scroll-view/list-view/waterfall滚动顶部时触发 */ onScrolltoupper?: () => void /** * z-paging内置的list滚动结束时触发 * - 仅nvue有效 * @param event 滚动结束时触发事件信息 * @since 2.7.3 */ onScrollend?: (event: ZPagingParams.ScrollendEvent) => void // ******************** 布局&交互相关事件 ******************** /** * z-paging中内容高度改变时触发 * @param height 改变后的高度 * @since 2.1.3 */ onContentHeightChanged?: (height: number) => void /** * 监听列表触摸方向改变 * - nvue无效 * - 必须同时设置:watch-touch-direction-change="true" * @param direction 列表触摸的方向,top代表用户将列表向上移动(scrollTop不断减小),bottom代表用户将列表向下移动(scrollTop不断增大) * @since 2.3.0 */ onTouchDirectionChange?: (direction: ZPagingEnums.TouchDirection) => void } // ****************************** Slots ****************************** declare interface ZPagingSlots { // ******************** 主体布局Slot ******************** /** * 默认插入的列表view */ ['default']?: () => any /** * 可以将自定义导航栏、tab-view等需要固定的(不需要跟着滚动的)元素放入slot="top"的view中。 * 注意,当有多个需要固定的view时,请用一个view包住它们,并且在这个view上设置slot="top"。需要固定在顶部的view请勿设置position: fixed; * @since 1.5.5 */ ['top']?: () => any /** * 可以将需要固定在底部的(不需要跟着滚动的)元素放入slot="bottom"的view中。 * 注意,当有多个需要固定的view时,请用一个view包住它们,并且在这个view上设置slot="bottom"。需要固定在底部的view请勿设置position: fixed; * @since 1.6.2 */ ['bottom']?: () => any /** * 可以将需要固定在左侧的(不需要跟着滚动的)元素放入slot="left"的view中。 * 注意,当有多个需要固定的view时,请用一个view包住它们,并且在这个view上设置slot="left"。需要固定在左侧的view请勿设置position: fixed; * @since 2.2.3 */ ['left']?: () => any /** * 可以将需要固定在左侧的(不需要跟着滚动的)元素放入slot="right"的view中。 * 注意,当有多个需要固定的view时,请用一个view包住它们,并且在这个view上设置slot="right"。需要固定在右侧的view请勿设置position: fixed; * @since 2.2.3 */ ['right']?: () => any // ******************** 下拉刷新Slot ******************** /** * 自定义下拉刷新view,设置后则不使用uni自带的下拉刷新view和z-paging自定义的下拉刷新view。此view的style必须设置为height:100% * - 在非nvue中,自定义下拉刷新view的高度受refresher-threshold控制,因此如果它的高度不为默认的80rpx,则需要设置refresher-threshold="自定义下拉刷新view的高度" * @param refresherStatus 下拉刷新状态:default:默认状态 release-to-refresh:松手立即刷新 loading:刷新中 complete:刷新结束 go-f2:松手进入二楼 */ ['refresher']?: (props: ZPagingParams.RefresherSlotProps) => any /** * 自定义结束状态下的下拉刷新view,若设置,当下拉刷新结束时,会替换当前状态下的下拉刷新view。 * - 注意:默认情况下您无法看到结束状态的下拉刷新view,除非您设置了refresher-complete-delay并且值足够大,例如:500 * @since 2.1.1 */ ['refresherComplete']?: () => any /** * 自定义松手显示二楼状态下的view * @since 2.7.7 */ ['refresherF2']?: () => any /** * 自定义需要插入二楼的view * @since 2.7.7 */ ['f2']?: () => any // ******************** 底部加载更多Slot ******************** /** * 自定义滑动到底部"默认"状态的view(即"点击加载更多view") */ ['loadingMoreDefault']?: () => any /** * 自定义滑动到底部"加载中"状态的view */ ['loadingMoreLoading']?: () => any /** * 自定义滑动到底部"没有更多数据"状态的view */ ['loadingMoreNoMore']?: () => any /** * 自定义滑动到底部"加载失败"状态的view */ ['loadingMoreFail']?: () => any // ******************** 空数据图Slot ******************** /** * 自定义空数据占位view * @param isLoadFailed 是否加载失败:true: 加载失败,false: 加载成功 */ ['empty']?: (props: ZPagingParams.EmptySlotProps) => any // ******************** 全屏Loading Slot ******************** /** * 自定义页面reload时的加载view * - 注意:这个slot默认仅会在第一次加载时显示,若需要每次reload时都显示,需要将auto-hide-loading-after-first-loaded设置为false */ ['loading']?: () => any // ******************** 返回顶部按钮Slot ******************** /** * 自定义点击返回顶部view * - 注意:此view受“【返回顶部按钮】配置”控制,且其父view默认宽高为76rpx * @since 1.9.4 */ ['backToTop']?: () => any // ******************** 虚拟列表&内置列表Slot ******************** /** * 内置列表中的cell * - use-virtual-list或use-inner-list为true时有效 * @param item 当前item * @param index 当前index * @since 2.2.5 */ ['cell']?: (props: ZPagingParams.InnerListCellSlotProps) => any /** * 内置列表中的header(在cell顶部且跟随列表滚动) * - use-virtual-list或use-inner-list为true时有效 * @since 2.2.5 */ ['header']?: () => any /** * 内置列表中的footer(在cell顶部且跟随列表滚动) * - use-virtual-list或use-inner-list为true时有效 * @since 2.2.5 */ ['footer']?: () => any // ******************** 聊天记录模式Slot ******************** /** * 使用聊天记录模式时自定义顶部加载更多view(除没有更多数据外) * - use-chat-record-mode为true时有效 * @param loadingMoreStatus 底部加载更多状态:default:默认状态 loading:加载中 no-more:没有更多数据 fail:加载失败 */ ['chatLoading']?: (props: ZPagingParams.ChatLoadingSlotProps) => any /** * 使用聊天记录模式时自定义没有更多数据view * - use-chat-record-mode为true时有效 * @since 2.7.5 */ ['chatNoMore']?: () => any } // ****************************** Methods ****************************** declare interface _ZPagingRef<T = any> { // ******************** 数据刷新&处理方法 ******************** /** * 重新加载分页数据,pageNo恢复为默认值,相当于下拉刷新的效果 * * @param [animate=false] 是否展示下拉刷新动画 */ reload: (animate?: boolean) => Promise< ZPagingParams.ReturnData<T>>; /** * 刷新列表数据,pageNo和pageSize不会重置,列表数据会重新从服务端获取 * * @since 2.0.4 * @returns {Promise<ZPagingParams.ReturnData<T>>} Promise,当前最新分页结果: * - resolve 操作成功 * - - `totalList` (T[]): 当前总列表 * - - `noMore` (boolean): 是否没有更多数据 * - reject 操作失败 */ refresh: () => Promise<ZPagingParams.ReturnData<T>>; /** * 刷新列表数据至指定页 * * @since 2.5.9 * @param page 目标页数 * @returns {Promise<ZPagingParams.ReturnData<T>>} Promise,当前最新分页结果: * - resolve 操作成功 * - - `totalList` (T[]): 当前总列表 * - - `noMore` (boolean): 是否没有更多数据 * - reject 操作失败 */ refreshToPage: (page: number) => Promise<ZPagingParams.ReturnData<T>>; /** * 请求结束 * - 当通过complete传进去的数组长度小于pageSize时,则判定为没有更多了 * * @param [data] 请求结果数组 * @param [success=true] 是否请求成功 * @returns {Promise<ZPagingParams.ReturnData<T>>} Promise,当前最新分页结果: * - resolve 操作成功 * - - `totalList` (T[]): 当前总列表 * - - `noMore` (boolean): 是否没有更多数据 * - reject 操作失败 */ complete: (data?: T[] | false, success?: boolean) => Promise<ZPagingParams.ReturnData<T>>; /** * 请求结束 * - 通过total判断是否有更多数据 * * @since 2.0.6 * @param data 请求结果数组 * @param total 列表总长度 * @param [success=true] 是否请求成功 * @returns {Promise<ZPagingParams.ReturnData<T>>} Promise,当前最新分页结果: * - resolve 操作成功 * - - `totalList` (T[]): 当前总列表 * - - `noMore` (boolean): 是否没有更多数据 * - reject 操作失败 */ completeByTotal: (data: T[], total: number, success?: boolean) => Promise<ZPagingParams.ReturnData<T>>; /** * 请求结束 * - 自行判断是否有更多数据 * * @since 1.9.2 * @param data 请求结果数组 * @param noMore 是否没有更多数据 * @param [success=true] 是否请求成功 * @returns {Promise<ZPagingParams.ReturnData<T>>} Promise,当前最新分页结果: * - resolve 操作成功 * - - `totalList` (T[]): 当前总列表 * - - `noMore` (boolean): 是否没有更多数据 * - reject 操作失败 */ completeByNoMore: (data: T[], noMore: boolean, success?: boolean) => Promise<ZPagingParams.ReturnData<T>>; /** * 请求失败 * - 通过方法传入请求失败原因,将请求失败原因传递给z-paging展示 * * @since 2.6.3 * @param cause 请求失败原因 * @returns {Promise<ZPagingParams.ReturnData<T>>} Promise,当前最新分页结果: * - resolve 操作成功 * - - `totalList` (T[]): 当前总列表 * - - `noMore` (boolean): 是否没有更多数据 * - reject 操作失败 */ completeByError: (cause: string) => Promise<ZPagingParams.ReturnData<T>>; /** * 请求结束 * - 保证数据一致 * * @since 1.6.4 * @param data 请求结果数组 * @param key dataKey,需与:data-key绑定的一致 * @param [success=true] 是否请求成功 * @returns {Promise<ZPagingParams.ReturnData<T>>} Promise,当前最新分页结果: * - resolve 操作成功 * - - `totalList` (T[]): 当前总列表 * - - `noMore` (boolean): 是否没有更多数据 * - reject 操作失败 */ completeByKey: (data: T[], key: string, success?: boolean) => Promise<ZPagingParams.ReturnData<T>>; /** * 清空分页数据,pageNo恢复为默认值 * * @since 2.1.0 */ clear: () => void; /** * 从顶部添加数据,不会影响分页的pageNo和pageSize * * @param data 需要添加的数据,可以是一条数据或一组数据 * @param [scrollToTop=true] 是否滚动到顶部,不填默认为true * @param [animate=true] 是否使用动画滚动到顶部 */ addDataFromTop: (data: _Arrayable<T>, scrollToTop?: boolean, animate?: boolean) => void; /** * 【不推荐】重新设置列表数据,调用此方法不会影响pageNo和pageSize,也不会触发请求 * - 适用场景:当需要删除列表中某一项时,将删除对应项后的数组通过此方法传递给z-paging * * @param data 修改后的列表数组 */ resetTotalData: (data: T[]) => void; // ******************** 下拉刷新相关方法 ******************** /** * 终止下拉刷新状态 * * @since 2.1.0 */ endRefresh: () => void; /** * 手动更新自定义下拉刷新view高度 * - 常用于某些情况下使用slot="refresher"插入的view高度未能正确计算导致异常时手动更新其高度 * * @since 2.6.1 */ updateCustomRefresherHeight: () => void; /** * 手动关闭二楼 * * @since 2.7.7 */ closeF2: () => void; // ******************** 底部加载更多相关方法 ******************** /** * 手动触发上拉加载更多 * - 非必须,可依据具体需求使用,例如当z-paging未确定高度时,内部的scroll-view会无限增高,此时z-paging无法得知是否滚动到底部,您可以在页面的onReachBottom中手动调用此方法触发上拉加载更多 * * @param [source] 触发加载更多的来源类型 */ doLoadMore: (source?: "click" | "toBottom") => void; // ******************** 页面滚动&布局相关方法 ******************** /** * 当使用页面滚动并且自定义下拉刷新时,请在页面的onPageScroll中调用此方法,告知z-paging当前的pageScrollTop,否则会导致在任意位置都可以下拉刷新 * - 若引入了mixins,则不需要调用此方法 * * @param scrollTop 从page的onPageScroll中获取的scrollTop */ updatePageScrollTop: (scrollTop: number) => void; /** * 在使用页面滚动并且设置了slot="top"时,默认初次加载会自动获取其高度,并使内部容器下移,当slot="top"的view高度动态改变时,在其高度需要更新时调用此方法 */ updatePageScrollTopHeight: () => void; /** * 在使用页面滚动并且设置了slot="bottom"时,默认初次加载会自动获取其高度,并使内部容器下移,当slot="bottom"的view高度动态改变时,在其高度需要更新时调用此方法 */ updatePageScrollBottomHeight: () => void; /** * 更新slot="left"和slot="right"宽度,当slot="left"或slot="right"宽度动态改变后调用 * * @since 2.3.5 */ updateLeftAndRightWidth: () => void; /** * 更新fixed模式下z-paging的布局,在onShow时候调用,以修复在iOS+h5+tabbar+fixed+底部有安全区域的设备中从tabbar页面跳转到无tabbar页面后返回,底部有一段空白区域的问题 * * @since 2.6.5 */ updateFixedLayout: () => void; // ******************** 虚拟列表相关方法 ******************** /** * 在使用动态高度虚拟列表时,若在列表数组中需要插入某个item,需要调用此方法 * * @since 2.5.9 * @param item 插入的数据项 * @param index 插入的cell位置,若为2,则插入的item在原list的index=1之后,从0开始 */ doInsertVirtualListItem: (item: T, index: number) => void; /** * 在使用动态高度虚拟列表时,手动更新指定cell的缓存高度 * - 当cell高度在初始化之后再次改变时调用 * * @since 2.4.0 * @param index 需要更新的cell在列表中的位置,从0开始 */ didUpdateVirtualListCell: (index: number) => void; /** * 在使用动态高度虚拟列表时,若删除了列表数组中的某个item,需要调用此方法以更新高度缓存数组 * * @since 2.4.0 * @param index 需要更新的cell在列表中的位置,从0开始 */ didDeleteVirtualListCell: (index: number) => void; /** * 手动触发虚拟列表渲染更新,可用于解决例如修改了虚拟列表数组中元素,但展示未更新的情况 * * @since 2.7.11 */ updateVirtualListRender: () => void; // ******************** 本地分页相关方法 ******************** /** * 设置本地分页,请求结束(成功或者失败)调用此方法,将请求的结果传递给z-paging作分页处理 * - 若调用了此方法,则上拉加载更多时内部会自动分页,不会触发@query所绑定的事件 * * @param data 请求结果数组 * @param [success=true] 是否请求成功 * @returns {Promise<ZPagingParams.ReturnData<T>>} Promise,当前最新分页结果: * - resolve 操作成功 * - - `totalList` (T[]): 当前总列表 * - - `noMore` (boolean): 是否没有更多数据 * - reject 操作失败 */ setLocalPaging: (data: T[], success?: boolean) => Promise<ZPagingParams.ReturnData<T>>; // ******************** 聊天记录模式相关方法 ******************** /** * 手动触发滚动到顶部加载更多,聊天记录模式时有效 */ doChatRecordLoadMore: () => void; /** * 添加聊天记录,use-chat-record-mode为true时有效 * * @param data 需要添加的聊天数据,可以是一条数据或一组数据 * @param [scrollToBottom=true] 是否滚动到底部 * @param [animate=true] 是否使用动画滚动到底部 */ addChatRecordData: (data: _Arrayable<T>, scrollToBottom?: boolean, animate?: boolean) => void; // ******************** 滚动到指定位置方法 ******************** /** * 滚动到顶部 * * @param [animate=true] 是否有动画效果 */ scrollToTop: (animate?: boolean) => void; /** * 滚动到底部 * * @param [animate=true] 是否有动画效果 */ scrollToBottom: (animate?: boolean) => void; /** * 滚动到指定view * - vue中有效,若此方法无效,请使用scrollIntoViewByNodeTop * * @param id 需要滚动到的view的id值,不包含"#" * @param [offset=0] 偏移量,单位为px * @param [animate=false] 是否有动画效果 */ scrollIntoViewById: (id: string, offset?: number, animate?: boolean) => void; /** * 滚动到指定view * - vue中有效 * * @since 1.7.4 * @param top 需要滚动的view的top值(通过uni.createSelectorQuery()获取) * @param [offset=0] 偏移量,单位为px * @param [animate=false] 是否有动画效果 */ scrollIntoViewByNodeTop: (top: number, offset?: number, animate?: boolean) => void; /** * y轴滚动到指定位置 * - vue中有效 * - 与scrollIntoViewByNodeTop的不同之处在于,scrollToY传入的是view相对于屏幕的top值,而scrollIntoViewByNodeTop传入的top值并非是固定的,通过uni.createSelectorQuery()获取到的top会因列表滚动而改变 * * @since 2.1.0 * @param y 与顶部的距离,单位为px * @param [offset=0] 偏移量,单位为px * @param [animate=false] 是否有动画效果 */ scrollToY: (y: number, offset?: number, animate?: boolean) => void; /** * x轴滚动到指定位置 * - 非页面滚动且在vue中有效 * * @since 2.8.5 * @param x 与左侧的距离,单位为px * @param [offset=0] 偏移量,单位为px * @param [animate=false] 是否有动画效果 */ scrollToX: (x: number, offset?: number, animate?: boolean) => void; /** * 滚动到指定view * - nvue或虚拟列表中有效 * - 在nvue中的cell必须设置 :ref="`z-paging-${index}`" * * @param index 需要滚动到的view的index(第几个) * @param [offset=0] 偏移量,单位为px * @param [animate=false] 是否有动画效果 */ scrollIntoViewByIndex: (index: number, offset?: number, animate?: boolean) => void; /** * 滚动到指定view * - nvue中有效 * * @param view 需要滚动到的view(通过this.$refs.xxx获取) * @param [offset=0] 偏移量,单位为px * @param [animate=false] 是否有动画效果 */ scrollIntoViewByView: (view: any, offset?: number, animate?: boolean) => void; /** * 设置nvue List的specialEffects * * @since 2.0.4 * @param args 参见https://uniapp.dcloud.io/component/list?id=listsetspecialeffects */ setSpecialEffects: (args: ZPagingParams.SetSpecialEffectsArgs) => void; // ******************** nvue独有方法 ******************** /** * 与{@link setSpecialEffects}相同 * * @since 2.0.4 */ setListSpecialEffects: (args: ZPagingParams.SetSpecialEffectsArgs) => void; // ******************** 缓存相关方法 ******************** /** * 手动更新列表缓存数据,将自动截取v-model绑定的list中的前pageSize条覆盖缓存,请确保在list数据更新到预期结果后再调用此方法 * * @since 2.3.9 */ updateCache: () => void; // ******************** 获取版本号方法 ******************** /** * 获取当前版本号 */ getVersion: () => string; } declare interface _ZPaging { new (): { $props: AllowedComponentProps & VNodeProps & ZPagingProps $slots: ZPagingSlots } } export declare const ZPaging: _ZPaging declare global { interface ZPagingRef<T = any> extends _ZPagingRef<T> {} // 兼容v2.8.1之前的旧版本 interface ZPagingInstance<T = any> extends _ZPagingRef<T> {} }