@nocobase/client-v2 2.1.19 → 2.1.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nocobase/client-v2",
3
- "version": "2.1.19",
3
+ "version": "2.1.20",
4
4
  "license": "Apache-2.0",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.mjs",
@@ -27,11 +27,11 @@
27
27
  "@formily/antd-v5": "1.2.3",
28
28
  "@formily/react": "^2.2.27",
29
29
  "@formily/shared": "^2.2.27",
30
- "@nocobase/evaluators": "2.1.19",
31
- "@nocobase/flow-engine": "2.1.19",
32
- "@nocobase/sdk": "2.1.19",
33
- "@nocobase/shared": "2.1.19",
34
- "@nocobase/utils": "2.1.19",
30
+ "@nocobase/evaluators": "2.1.20",
31
+ "@nocobase/flow-engine": "2.1.20",
32
+ "@nocobase/sdk": "2.1.20",
33
+ "@nocobase/shared": "2.1.20",
34
+ "@nocobase/utils": "2.1.20",
35
35
  "ahooks": "^3.7.2",
36
36
  "antd": "5.24.2",
37
37
  "antd-style": "3.7.1",
@@ -46,5 +46,5 @@
46
46
  "react-i18next": "^11.15.1",
47
47
  "react-router-dom": "^6.30.1"
48
48
  },
49
- "gitHead": "c316683666cfb478cb355b971c8f067a4f925fcb"
49
+ "gitHead": "ca646ba28bb11da083e3436866552932ed780b6f"
50
50
  }
@@ -431,6 +431,10 @@ export abstract class BaseApplication<
431
431
  return getSubAppName(this.getPublicPath()) || null;
432
432
  }
433
433
 
434
+ getCdnUrl() {
435
+ return window['__webpack_public_path__'] || this.getPublicPath();
436
+ }
437
+
434
438
  getPublicPath() {
435
439
  let publicPath = this.options.publicPath || '/';
436
440
  if (!publicPath.endsWith('/')) {
@@ -22,7 +22,6 @@ import {
22
22
  createRecordResolveOnServerWithLocal,
23
23
  } from '@nocobase/flow-engine';
24
24
  import { Button, Form, Skeleton, Space } from 'antd';
25
- import _ from 'lodash';
26
25
  import React from 'react';
27
26
  import { FieldModel } from '../../base/FieldModel';
28
27
  import { FormComponent } from './FormBlockModel';
@@ -46,8 +45,6 @@ export class QuickEditFormModel extends FlowModel {
46
45
  declare resource: SingleRecordResource;
47
46
  declare collection: Collection;
48
47
 
49
- now: number = Date.now();
50
-
51
48
  viewContainer: any;
52
49
  __onSubmitSuccess;
53
50
  _fieldProps: any;
@@ -89,21 +86,22 @@ export class QuickEditFormModel extends FlowModel {
89
86
  onOk,
90
87
  sourceFieldModelUid,
91
88
  } = options;
92
- const model = flowEngine.createModel({
93
- use: 'QuickEditFormModel',
94
- stepParams: {
95
- quickEditFormSettings: {
96
- init: {
97
- dataSourceKey,
98
- collectionName,
99
- fieldPath,
89
+ const sourceFieldModel = sourceFieldModelUid ? flowEngine.getModel<FlowModel>(sourceFieldModelUid) : undefined;
90
+ const model = flowEngine.createModel(
91
+ {
92
+ use: 'QuickEditFormModel',
93
+ stepParams: {
94
+ quickEditFormSettings: {
95
+ init: {
96
+ dataSourceKey,
97
+ collectionName,
98
+ fieldPath,
99
+ },
100
100
  },
101
101
  },
102
102
  },
103
- }) as QuickEditFormModel;
104
-
105
- console.log('QuickEditFormModel.open2', Date.now() - model.now);
106
- model.now = Date.now();
103
+ sourceFieldModel ? { delegate: sourceFieldModel.context } : undefined,
104
+ ) as QuickEditFormModel;
107
105
 
108
106
  await flowEngine.context.viewer.open({
109
107
  type: 'popover',
@@ -122,7 +120,6 @@ export class QuickEditFormModel extends FlowModel {
122
120
  model.__onSubmitSuccess = onSuccess;
123
121
  model._fieldProps = fieldProps;
124
122
  model._onOk = onOk;
125
- console.log('QuickEditFormModel.open3', Date.now() - model.now);
126
123
  return (
127
124
  <FlowModelRenderer
128
125
  fallback={<Skeleton.Input size="small" />}
@@ -171,8 +168,6 @@ export class QuickEditFormModel extends FlowModel {
171
168
  }
172
169
 
173
170
  render() {
174
- console.log('QuickEditFormModel.open4', Date.now() - this.now);
175
-
176
171
  return (
177
172
  <FormComponent model={this}>
178
173
  <div
@@ -8,7 +8,7 @@
8
8
  */
9
9
 
10
10
  import { describe, it, expect, vi, beforeEach } from 'vitest';
11
- import { FlowEngine, SingleRecordResource } from '@nocobase/flow-engine';
11
+ import { FlowEngine, FlowModel, SingleRecordResource } from '@nocobase/flow-engine';
12
12
  import { QuickEditFormModel } from '../QuickEditFormModel';
13
13
 
14
14
  describe('QuickEditFormModel - quick edit save triggers API (regression)', () => {
@@ -18,6 +18,35 @@ describe('QuickEditFormModel - quick edit save triggers API (regression)', () =>
18
18
  engine = new FlowEngine();
19
19
  });
20
20
 
21
+ it('uses source field context when opening quick edit', async () => {
22
+ engine.registerModels({ QuickEditFormModel });
23
+ engine.context.defineProperty('pageActive', { value: { value: false } });
24
+ engine.context.defineProperty('viewer', { value: { open: vi.fn(async () => undefined) } });
25
+
26
+ const page = engine.createModel<FlowModel>({ use: 'FlowModel', uid: 'page' });
27
+ page.context.defineProperty('pageActive', { value: { value: true } });
28
+ const source = engine.createModel<FlowModel>({ use: 'FlowModel', uid: 'source-field', parentId: page.uid });
29
+
30
+ await QuickEditFormModel.open({
31
+ flowEngine: engine,
32
+ target: document.createElement('div'),
33
+ dataSourceKey: 'main',
34
+ collectionName: 'users',
35
+ fieldPath: 'name',
36
+ record: {},
37
+ sourceFieldModelUid: source.uid,
38
+ });
39
+
40
+ let quickEditModel: QuickEditFormModel | undefined;
41
+ engine.forEachModel((model) => {
42
+ if (model instanceof QuickEditFormModel) {
43
+ quickEditModel = model;
44
+ }
45
+ });
46
+
47
+ expect(quickEditModel?.context.pageActive.value).toBe(true);
48
+ });
49
+
21
50
  it('calls update with filterByTk and merges primary key from ctx.collection/record', async () => {
22
51
  // 1) 准备数据源与集合(含主键字段)
23
52
  const dsm = engine.context.dataSourceManager;
@@ -126,6 +126,7 @@ const RenderCell = observer<any>((props) => {
126
126
  fieldPath: dataIndex,
127
127
  record: record,
128
128
  fieldProps: { ...columnModel.props, ...columnModel.subModels.field.props },
129
+ sourceFieldModelUid: columnModel.subModels.field.uid,
129
130
  onOk: (values) => {
130
131
  record[dataIndex] = values[dataIndex];
131
132
  // 仅重渲染单元格