This commit is contained in:
Xu Chang 2022-11-22 11:42:59 +08:00
parent 1ba0b64037
commit 2f595853a1
9 changed files with 35 additions and 14 deletions

View File

@ -20,6 +20,11 @@ var OakProperties = {
};
var oakBehavior = Behavior({
methods: {
setDisablePulldownRefresh: function (able) {
this.setState({
oakDisablePulldownRefresh: able,
});
},
t: function (key, params) {
// common: {
// GREETING: 'Hello {{name}}, nice to see you.',
@ -138,7 +143,7 @@ var oakBehavior = Behavior({
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
if (!(!this.state.oakLoading && this.iAmThePage())) return [3 /*break*/, 2];
if (!(!this.state.oakLoading && this.iAmThePage() && !this.state.oakDisablePulldownRefresh && !this.props.oakDisablePulldownRefresh)) return [3 /*break*/, 2];
return [4 /*yield*/, this.refresh()];
case 1:
_a.sent();

View File

@ -14,6 +14,11 @@ var OakComponentBase = /** @class */ (function (_super) {
function OakComponentBase() {
return _super !== null && _super.apply(this, arguments) || this;
}
OakComponentBase.prototype.setDisablePulldownRefresh = function (able) {
this.setState({
oakDisablePulldownRefresh: able,
});
};
OakComponentBase.prototype.onPathSet = function () {
return page_common_1.onPathSet.call(this, this.oakOption);
};
@ -394,6 +399,7 @@ function createComponent(option, features) {
_this.checkReachBottom();
};
var methodProps = {
setDisablePulldownRefresh: function (able) { return _this.setDisablePulldownRefresh(able); },
t: function (key, params) { return _this.t(key, params); },
execute: function (action) {
return _this.execute(action);
@ -524,7 +530,9 @@ function createComponent(option, features) {
return this.props.routeMatch;
};
OakComponentWrapper.prototype.supportPullDownRefresh = function () {
return this.props.width === 'xs' && this.iAmThePage();
var _a = this.props.oakDisablePulldownRefresh, oakDisablePulldownRefresh = _a === void 0 ? false : _a;
var disable2 = this.state.oakDisablePulldownRefresh;
return this.props.width === 'xs' && this.iAmThePage() && !oakDisablePulldownRefresh && !disable2;
};
OakComponentWrapper.prototype.registerPageScroll = function () {
window.addEventListener('scroll', this.scrollEvent);
@ -590,9 +598,8 @@ function createComponent(option, features) {
OakComponentWrapper.prototype.render = function () {
var _this = this;
var oakPullDownRefreshLoading = this.state.oakPullDownRefreshLoading;
var _a = this.props.oakDisablePulldownRefresh, oakDisablePulldownRefresh = _a === void 0 ? false : _a;
var Render = getRender.call(this);
if (this.supportPullDownRefresh() && !oakDisablePulldownRefresh) {
if (this.supportPullDownRefresh()) {
var Child = react_1.default.cloneElement((0, jsx_runtime_1.jsx)(web_1.PullToRefresh, { onRefresh: function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {

View File

@ -8,6 +8,6 @@
import React from 'react';
declare const withRouter: (Component: React.ComponentType<any>, { path, properties }: {
path?: string | undefined;
properties?: WechatMiniprogram.Component.PropertyOption | undefined;
properties?: Record<string, WechatMiniprogram.Component.AllProperty | FunctionConstructor> | undefined;
}) => React.ForwardRefExoticComponent<React.RefAttributes<unknown>>;
export default withRouter;

5
lib/types/Page.d.ts vendored
View File

@ -118,6 +118,7 @@ export declare type OakNavigateToParameters<ED extends EntityDict & BaseEntityDi
[k: string]: any;
};
export declare type OakCommonComponentMethods<ED extends EntityDict & BaseEntityDict, T extends keyof ED> = {
setDisablePulldownRefresh: (able: boolean) => void;
sub: (type: string, callback: Function) => void;
unsub: (type: string, callback: Function) => void;
pub: (type: string, options?: any) => void;
@ -182,6 +183,7 @@ export declare type OakListComponentMethods<ED extends EntityDict & BaseEntityDi
addItem: (data: Omit<ED[T]['CreateSingle']['data'], 'id'>, beforeExecute?: () => Promise<void>, afterExecute?: () => Promise<void>) => void;
removeItem: (id: string, beforeExecute?: () => Promise<void>, afterExecute?: () => Promise<void>) => void;
updateItem: (data: ED[T]['Update']['data'], id: string, action?: ED[T]['Action'], beforeExecute?: () => Promise<void>, afterExecute?: () => Promise<void>) => void;
recoverItem: (id: string) => void;
};
declare type ComponentOnPropsChangeOption = {
path?: string;
@ -206,9 +208,10 @@ export declare type OakComponentData<ED extends EntityDict & BaseEntityDict, T e
oakEntity: T;
oakFullpath: string;
oakLegalActions?: ED[T]['Action'][];
oakDisablePulldownRefresh: boolean;
};
export declare type MakeOakComponent<ED extends EntityDict & BaseEntityDict, Cxt extends AsyncContext<ED>, FrontCxt extends SyncContext<ED>, AD extends Record<string, Aspect<ED, Cxt>>, FD extends Record<string, Feature>> = <T extends keyof ED, FormedData extends WechatMiniprogram.Component.DataOption, IsList extends boolean, TData extends WechatMiniprogram.Component.DataOption, TProperty extends WechatMiniprogram.Component.PropertyOption, TMethod extends WechatMiniprogram.Component.MethodOption>(options: OakComponentOption<ED, T, Cxt, FrontCxt, AD, FD, FormedData, IsList, TData, TProperty, TMethod>) => React.ComponentType<any>;
export declare type WebComponentCommonMethodNames = 'setNotification' | 'setMessage' | 'navigateTo' | 'navigateBack' | 'redirectTo' | 'clean' | 't' | 'execute' | 'refresh';
export declare type WebComponentCommonMethodNames = 'setNotification' | 'setMessage' | 'navigateTo' | 'navigateBack' | 'redirectTo' | 'clean' | 't' | 'execute' | 'refresh' | 'setDisablePulldownRefresh';
export declare type WebComponentListMethodNames = 'loadMore' | 'setFilters' | 'addNamedFilter' | 'removeNamedFilter' | 'removeNamedFilterByName' | 'setNamedSorters' | 'addNamedSorter' | 'removeNamedSorter' | 'removeNamedSorterByName' | 'setPageSize' | 'setCurrentPage' | 'addItem' | 'removeItem' | 'updateItem';
export declare type WebComponentSingleMethodNames = 'update' | 'remove';
export declare type WebComponentProps<ED extends EntityDict & BaseEntityDict, T extends keyof ED, IsList extends boolean, TData extends WechatMiniprogram.Component.DataOption = {}, TMethod extends WechatMiniprogram.Component.MethodOption = {}> = {

View File

@ -1,6 +1,6 @@
{
"name": "oak-frontend-base",
"version": "1.0.15",
"version": "2.0.1",
"description": "oak框架中前端与业务逻辑无关的平台部分",
"author": {
"name": "XuChang"

View File

@ -70,7 +70,7 @@ export function initialize<
);
}
const aspectDict2 = Object.assign({}, aspectDict, commonAspectDict);
const checkers2 = (checkers || []).concat(createDynamicCheckers<ED>(storageSchema));
const checkers2 = (checkers || []).concat(createDynamicCheckers<ED, Cxt>(storageSchema));
const triggers2 = createDynamicTriggers<ED, Cxt>(storageSchema).concat(triggers || []);
const debugStore = createDebugStore(
storageSchema,
@ -124,7 +124,7 @@ export function initialize<
}
Object.assign(features, basicFeatures, userDefinedfeatures);
checkers2.forEach((checker) => cacheStore.registerChecker(checker));
checkers2.forEach((checker) => cacheStore.registerChecker(checker as Checker<ED, keyof ED, SyncContext<ED>>));
if (actionDict) {
const { checkers: adCheckers } = analyzeActionDefDict(
storageSchema,

View File

@ -51,7 +51,7 @@ export function initialize<
checkers?: Array<Checker<ED, keyof ED, FrontCxt | Cxt>>,
actionDict?: ActionDictOfEntityDict<ED>
) {
const checkers2 = (checkers || []).concat(createDynamicCheckers<ED>(storageSchema));
const checkers2 = (checkers || []).concat(createDynamicCheckers<ED, Cxt>(storageSchema));
const features = {} as FD & BasicFeatures<ED, Cxt, FrontCxt, AD & CommonAspectDict<ED, Cxt>>;
@ -83,7 +83,7 @@ export function initialize<
}
Object.assign(features, basicFeatures, userDefinedfeatures);
checkers2.forEach((checker) => cacheStore.registerChecker(checker));
checkers2.forEach((checker) => cacheStore.registerChecker(checker as Checker<ED, keyof ED, SyncContext<ED>>));
if (actionDict) {
const { checkers: adCheckers } = analyzeActionDefDict(
storageSchema,

View File

@ -47,7 +47,7 @@ const oakBehavior = Behavior<
WechatMiniprogram.Component.PropertyOption,
OakCommonComponentMethods<EDD, keyof EDD> & OakListComponentMethods<EDD, keyof EDD> & OakSingleComponentMethods<EDD, keyof EDD> & {
iAmThePage: () => boolean;
setState: (data: Record<string, any>, callback: () => void) => void;
setState: (data: Record<string, any>, callback?: () => void) => void;
onLoad: (query: Record<string, any>) => Promise<void>;
onPullDownRefresh: () => Promise<void>;
onReachBottom: () => Promise<void>;
@ -83,6 +83,11 @@ const oakBehavior = Behavior<
>
}>({
methods: {
setDisablePulldownRefresh(able) {
this.setState({
oakDisablePulldownRefresh: able,
});
},
t(key: string, params?: object) {
// common: {
// GREETING: 'Hello {{name}}, nice to see you.',
@ -123,7 +128,7 @@ const oakBehavior = Behavior<
return false;
},
setState(data: Record<string, any>, callback: () => void) {
setState(data: Record<string, any>, callback?: () => void) {
this.setData(data, () => {
this.state = this.data;
callback && callback.call(this);
@ -194,7 +199,7 @@ const oakBehavior = Behavior<
},
async onPullDownRefresh() {
if (!this.state.oakLoading && this.iAmThePage()) {
if (!this.state.oakLoading && this.iAmThePage() && !this.state.oakDisablePulldownRefresh && !this.props.oakDisablePulldownRefresh) {
await this.refresh();
}
await wx.stopPullDownRefresh();

View File

@ -292,6 +292,7 @@ export type OakListComponentMethods<ED extends EntityDict & BaseEntityDict, T ex
addItem: (data: Omit<ED[T]['CreateSingle']['data'], 'id'>, beforeExecute?: () => Promise<void>, afterExecute?: () => Promise<void>) => void;
removeItem: (id: string, beforeExecute?: () => Promise<void>, afterExecute?: () => Promise<void>) => void;
updateItem: (data: ED[T]['Update']['data'], id: string, action?: ED[T]['Action'], beforeExecute?: () => Promise<void>, afterExecute?: () => Promise<void>) => void;
recoverItem: (id: string) => void;
};
type ComponentOnPropsChangeOption = {