为features增加了一个callback选项

This commit is contained in:
Xu Chang 2023-12-06 11:17:01 +08:00
parent c74faa0585
commit 4591e6754a
9 changed files with 123 additions and 72 deletions

View File

@ -705,20 +705,28 @@ export function createComponent(option, features) {
}
else {
assert(typeof ele === 'object');
const { feature, behavior } = ele;
this.addFeatureSub(feature, () => {
switch (behavior) {
case 'reRender': {
this.reRender();
return;
const { feature, behavior, callback } = ele;
if (behavior) {
this.addFeatureSub(feature, () => {
switch (behavior) {
case 'reRender': {
this.reRender();
return;
}
default: {
assert(behavior === 'refresh');
this.refresh();
return;
}
}
default: {
assert(behavior === 'refresh');
this.refresh();
return;
}
}
});
});
}
else if (callback) {
callback();
}
else {
this.reRender();
}
}
});
}

View File

@ -579,19 +579,27 @@ export function createComponent(option, features) {
}
else {
assert(typeof ele === 'object');
const { feature, behavior } = ele;
const { feature, behavior, callback } = ele;
this.addFeatureSub(feature, () => {
switch (behavior) {
case 'reRender': {
this.reRender();
return;
}
default: {
assert(behavior === 'refresh');
this.refresh();
return;
if (behavior) {
switch (behavior) {
case 'reRender': {
this.reRender();
return;
}
default: {
assert(behavior === 'refresh');
this.refresh();
return;
}
}
}
else if (callback) {
callback();
}
else {
this.reRender();
}
});
}
});

3
es/types/Page.d.ts vendored
View File

@ -33,7 +33,8 @@ export type RowWithActions<ED extends EntityDict & BaseEntityDict, T extends key
};
type FeatureDef<ED extends EntityDict & BaseEntityDict, Cxt extends AsyncContext<ED>, FrontCxt extends SyncContext<ED>, AD extends Record<string, Aspect<ED, Cxt>>, FD extends Record<string, Feature>> = (keyof (FD & BasicFeatures<ED, Cxt, FrontCxt, AD & CommonAspectDict<ED, Cxt>>)) | {
feature: keyof (FD & BasicFeatures<ED, Cxt, FrontCxt, AD & CommonAspectDict<ED, Cxt>>);
behavior: 'reRender' | 'refresh';
behavior?: 'reRender' | 'refresh';
callback?: () => void;
};
interface ComponentOption<IsList extends boolean, ED extends EntityDict & BaseEntityDict, T extends keyof ED, Cxt extends AsyncContext<ED>, FrontCxt extends SyncContext<ED>, AD extends Record<string, Aspect<ED, Cxt>>, FD extends Record<string, Feature>, FormedData extends Record<string, any>, TData extends DataOption, TProperty extends DataOption, TMethod extends Record<string, Function>, EMethod extends Record<string, Function> = {}> {
isList?: IsList;

View File

@ -708,20 +708,28 @@ function createComponent(option, features) {
}
else {
(0, assert_1.assert)(typeof ele === 'object');
const { feature, behavior } = ele;
this.addFeatureSub(feature, () => {
switch (behavior) {
case 'reRender': {
this.reRender();
return;
const { feature, behavior, callback } = ele;
if (behavior) {
this.addFeatureSub(feature, () => {
switch (behavior) {
case 'reRender': {
this.reRender();
return;
}
default: {
(0, assert_1.assert)(behavior === 'refresh');
this.refresh();
return;
}
}
default: {
(0, assert_1.assert)(behavior === 'refresh');
this.refresh();
return;
}
}
});
});
}
else if (callback) {
callback();
}
else {
this.reRender();
}
}
});
}

View File

@ -584,19 +584,27 @@ function createComponent(option, features) {
}
else {
(0, assert_1.assert)(typeof ele === 'object');
const { feature, behavior } = ele;
const { feature, behavior, callback } = ele;
this.addFeatureSub(feature, () => {
switch (behavior) {
case 'reRender': {
this.reRender();
return;
}
default: {
(0, assert_1.assert)(behavior === 'refresh');
this.refresh();
return;
if (behavior) {
switch (behavior) {
case 'reRender': {
this.reRender();
return;
}
default: {
(0, assert_1.assert)(behavior === 'refresh');
this.refresh();
return;
}
}
}
else if (callback) {
callback();
}
else {
this.reRender();
}
});
}
});

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

@ -33,7 +33,8 @@ export type RowWithActions<ED extends EntityDict & BaseEntityDict, T extends key
};
type FeatureDef<ED extends EntityDict & BaseEntityDict, Cxt extends AsyncContext<ED>, FrontCxt extends SyncContext<ED>, AD extends Record<string, Aspect<ED, Cxt>>, FD extends Record<string, Feature>> = (keyof (FD & BasicFeatures<ED, Cxt, FrontCxt, AD & CommonAspectDict<ED, Cxt>>)) | {
feature: keyof (FD & BasicFeatures<ED, Cxt, FrontCxt, AD & CommonAspectDict<ED, Cxt>>);
behavior: 'reRender' | 'refresh';
behavior?: 'reRender' | 'refresh';
callback?: () => void;
};
interface ComponentOption<IsList extends boolean, ED extends EntityDict & BaseEntityDict, T extends keyof ED, Cxt extends AsyncContext<ED>, FrontCxt extends SyncContext<ED>, AD extends Record<string, Aspect<ED, Cxt>>, FD extends Record<string, Feature>, FormedData extends Record<string, any>, TData extends DataOption, TProperty extends DataOption, TMethod extends Record<string, Function>, EMethod extends Record<string, Function> = {}> {
isList?: IsList;

View File

@ -1045,20 +1045,28 @@ export function createComponent<
this.addFeatureSub(ele, () => this.reRender());
} else {
assert(typeof ele === 'object');
const { feature, behavior } = ele;
this.addFeatureSub(feature, () => {
switch (behavior) {
case 'reRender': {
this.reRender();
return;
const { feature, behavior, callback } = ele;
if (behavior) {
this.addFeatureSub(feature, () => {
switch (behavior) {
case 'reRender': {
this.reRender();
return;
}
default: {
assert(behavior === 'refresh');
this.refresh();
return;
}
}
default: {
assert(behavior === 'refresh');
this.refresh();
return;
}
}
});
});
}
else if (callback) {
callback();
}
else {
this.reRender();
}
}
});
}

View File

@ -902,19 +902,27 @@ export function createComponent<
}
else {
assert(typeof ele === 'object');
const { feature, behavior } = ele;
const { feature, behavior, callback } = ele;
this.addFeatureSub(feature as string, () => {
switch (behavior) {
case 'reRender': {
this.reRender();
return;
}
default: {
assert(behavior === 'refresh');
this.refresh();
return;
if (behavior) {
switch (behavior) {
case 'reRender': {
this.reRender();
return;
}
default: {
assert(behavior === 'refresh');
this.refresh();
return;
}
}
}
else if (callback) {
callback();
}
else {
this.reRender();
}
});
}
}

View File

@ -110,7 +110,8 @@ type FeatureDef<
AD extends Record<string, Aspect<ED, Cxt>>,
FD extends Record<string, Feature>> = (keyof (FD & BasicFeatures<ED, Cxt, FrontCxt, AD & CommonAspectDict<ED, Cxt>>)) | {
feature: keyof (FD & BasicFeatures<ED, Cxt, FrontCxt, AD & CommonAspectDict<ED, Cxt>>);
behavior: 'reRender' | 'refresh';
behavior?: 'reRender' | 'refresh';
callback?: () => void;
};
interface ComponentOption<