@rippling/rippling-sdk 0.2.0-alpha.55 → 0.2.0-alpha.56
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/examples/manifest/custom-object-creation-workflow/custom-object-creation-workflow.ts +0 -10
- package/examples/manifest/dental-practice-management/dental-practice-management.ts +18 -28
- package/examples/manifest/gym-membership-management/gym-membership-management.ts +18 -31
- package/examples/manifest/simple-todo-app/simple-todo-app.ts +4 -15
- package/lib/manifest/custom-object-page-layout.d.mts +10 -8
- package/lib/manifest/custom-object-page-layout.d.mts.map +1 -1
- package/lib/manifest/custom-object-page-layout.d.ts +10 -8
- package/lib/manifest/custom-object-page-layout.d.ts.map +1 -1
- package/lib/manifest/custom-object-page-layout.js +47 -23
- package/lib/manifest/custom-object-page-layout.js.map +1 -1
- package/lib/manifest/custom-object-page-layout.mjs +47 -23
- package/lib/manifest/custom-object-page-layout.mjs.map +1 -1
- package/lib/manifest/custom-object.d.mts +120 -0
- package/lib/manifest/custom-object.d.mts.map +1 -1
- package/lib/manifest/custom-object.d.ts +120 -0
- package/lib/manifest/custom-object.d.ts.map +1 -1
- package/lib/manifest/custom-object.js +62 -0
- package/lib/manifest/custom-object.js.map +1 -1
- package/lib/manifest/custom-object.mjs +62 -0
- package/lib/manifest/custom-object.mjs.map +1 -1
- package/lib/manifest/existing-manifest-context.d.mts.map +1 -1
- package/lib/manifest/existing-manifest-context.d.ts.map +1 -1
- package/lib/manifest/existing-manifest-context.js +3 -1
- package/lib/manifest/existing-manifest-context.js.map +1 -1
- package/lib/manifest/existing-manifest-context.mjs +3 -1
- package/lib/manifest/existing-manifest-context.mjs.map +1 -1
- package/lib/manifest/field.d.mts +9 -4
- package/lib/manifest/field.d.mts.map +1 -1
- package/lib/manifest/field.d.ts +9 -4
- package/lib/manifest/field.d.ts.map +1 -1
- package/lib/manifest/field.js +14 -4
- package/lib/manifest/field.js.map +1 -1
- package/lib/manifest/field.mjs +14 -4
- package/lib/manifest/field.mjs.map +1 -1
- package/lib/manifest/index.d.mts +1 -1
- package/lib/manifest/index.d.mts.map +1 -1
- package/lib/manifest/index.d.ts +1 -1
- package/lib/manifest/index.d.ts.map +1 -1
- package/lib/manifest/index.js.map +1 -1
- package/lib/manifest/index.mjs +1 -1
- package/lib/manifest/index.mjs.map +1 -1
- package/lib/manifest/list-view.d.mts +6 -6
- package/lib/manifest/list-view.d.mts.map +1 -1
- package/lib/manifest/list-view.d.ts +6 -6
- package/lib/manifest/list-view.d.ts.map +1 -1
- package/lib/manifest/list-view.js +4 -4
- package/lib/manifest/list-view.js.map +1 -1
- package/lib/manifest/list-view.mjs +4 -4
- package/lib/manifest/list-view.mjs.map +1 -1
- package/package.json +1 -1
- package/src/lib/manifest/custom-object-page-layout.ts +60 -30
- package/src/lib/manifest/custom-object.ts +93 -9
- package/src/lib/manifest/existing-manifest-context.ts +8 -2
- package/src/lib/manifest/field.ts +15 -4
- package/src/lib/manifest/index.ts +10 -1
- package/src/lib/manifest/list-view.ts +8 -8
- package/src/version.ts +1 -1
- package/version.d.mts +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
- package/version.mjs +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/lib/manifest/index.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAE3E,OAAO,EACL,UAAU,GAaX,uBAAmB;AAEpB,OAAO,EAAE,GAAG,EAA6C,kBAAc;AAEvE,OAAO,EAAE,QAAQ,EAAsB,uBAAmB;AAE1D,OAAO,
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/lib/manifest/index.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAE3E,OAAO,EACL,UAAU,GAaX,uBAAmB;AAEpB,OAAO,EAAE,GAAG,EAA6C,kBAAc;AAEvE,OAAO,EAAE,QAAQ,EAAsB,uBAAmB;AAE1D,OAAO,EACL,YAAY,GAQb,4BAAwB;AAEzB,OAAO,EACL,wBAAwB,GAGzB,0CAAsC;AAEvC,OAAO,EACL,sBAAsB,GA0DvB,wCAAoC;AAErC,OAAO,EACL,KAAK;AAML,0EAA0E;AAC1E,qEAAqE;AACrE,SAAS,EAET,aAAa,EAEb,UAAU,EAEV,QAAQ,EAER,UAAU,EAEV,WAAW,EAEX,aAAa,EAEb,eAAe,EAEf,SAAS,EAET,aAAa,EAEb,SAAS,EAET,WAAW,EAEX,UAAU,EAEV,YAAY,EAEZ,SAAS,EAET,WAAW,EAEX,gBAAgB,EAEhB,YAAY,EAEZ,YAAY,GAEb,oBAAgB;AAEjB,OAAO,EACL,uBAAuB,GAIxB,wCAAoC;AAErC,OAAO,EACL,WAAW,GAKZ,wBAAoB;AAErB,OAAO,EACL,eAAe,GAQhB,+BAA2B;AAE5B,OAAO,EACL,gBAAgB,EAChB,gBAAgB,IAAI,QAAQ,GAE7B,gCAA4B;AAE7B,OAAO,EACL,IAAI,GAKL,mBAAe;AAEhB,OAAO,EAAE,QAAQ,EAAsB,wBAAoB;AAE3D,OAAO,EACL,UAAU,GAIX,yBAAqB;AAEtB,OAAO,EACL,QAAQ,GAuBT,uBAAmB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type ObjectScope, type SortOrder } from "./_helpers.mjs";
|
|
2
|
-
import type { CustomObject } from "./custom-object.mjs";
|
|
2
|
+
import type { CustomObject, CustomObjectFieldInput } from "./custom-object.mjs";
|
|
3
3
|
import { type ExistingManifestContextOptions } from "./existing-manifest-context.mjs";
|
|
4
4
|
import type { Field } from "./field.mjs";
|
|
5
5
|
import type { ManifestComponentDeletion } from "./manifest-builder.mjs";
|
|
@@ -27,11 +27,11 @@ export interface ListViewDefProps {
|
|
|
27
27
|
*/
|
|
28
28
|
name: string;
|
|
29
29
|
/**
|
|
30
|
-
* Columns to display, as live {@link Field} references. At least one field is required.
|
|
30
|
+
* Columns to display, as live {@link Field} references or standard field names. At least one field is required.
|
|
31
31
|
*
|
|
32
32
|
* Required.
|
|
33
33
|
*/
|
|
34
|
-
fields:
|
|
34
|
+
fields: CustomObjectFieldInput[];
|
|
35
35
|
/**
|
|
36
36
|
* Whether this view is visible to all users (`true`) or only the record owner (`false`).
|
|
37
37
|
*
|
|
@@ -50,7 +50,7 @@ export interface ListViewDefProps {
|
|
|
50
50
|
*
|
|
51
51
|
* Optional.
|
|
52
52
|
*/
|
|
53
|
-
orderBy?:
|
|
53
|
+
orderBy?: CustomObjectFieldInput;
|
|
54
54
|
/**
|
|
55
55
|
* Sort direction. One of `'ASC'` | `'DESC'`. Requires `orderBy` to be set.
|
|
56
56
|
*
|
|
@@ -102,8 +102,8 @@ export interface ListViewDefLoadFromExistingOptions extends ExistingManifestCont
|
|
|
102
102
|
* viewId: 'view_gym_all_members',
|
|
103
103
|
* name: 'All members',
|
|
104
104
|
* description: 'Directory with membership status',
|
|
105
|
-
* fields: [
|
|
106
|
-
* orderBy:
|
|
105
|
+
* fields: ['name', memberEmail, memberPhone, memberStatusField, memberJoinDate],
|
|
106
|
+
* orderBy: 'name',
|
|
107
107
|
* sortOrder: 'ASC',
|
|
108
108
|
* isPublic: true,
|
|
109
109
|
* objectScope: 'all',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-view.d.mts","sourceRoot":"","sources":["../../src/lib/manifest/list-view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,uBAAmB;AAC1E,OAAO,KAAK,EAAE,YAAY,EAAE,4BAAwB;
|
|
1
|
+
{"version":3,"file":"list-view.d.mts","sourceRoot":"","sources":["../../src/lib/manifest/list-view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,uBAAmB;AAC1E,OAAO,KAAK,EAAE,YAAY,EAAE,sBAAsB,EAAE,4BAAwB;AAC5E,OAAO,EAA8B,KAAK,8BAA8B,EAAE,wCAAoC;AAC9G,OAAO,KAAK,EAAE,KAAK,EAAE,oBAAgB;AACrC,OAAO,KAAK,EAAE,yBAAyB,EAAE,+BAA2B;AAQpE,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,MAAM,EAAE,sBAAsB,EAAE,CAAC;IACjC;;;;OAIG;IACH,QAAQ,EAAE,OAAO,CAAC;IAClB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,OAAO,CAAC,EAAE,sBAAsB,CAAC;IACjC;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;;OAIG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B;;;;OAIG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IACpD;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kCAAmC,SAAQ,8BAA8B;IACxF,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,qBAAa,WAAW;IACtB,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAG,yBAAyB,CAAU;IAEnE,MAAM,CAAC,oBAAoB,CAAC,UAAU,EAAE,0BAA0B,GAAG,yBAAyB;IAQ9F,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAS;IAC9C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAU;IACpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAC7C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAwB;IACnD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA0B;IACvD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAmD;IACjF,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;IAEhD;;;;OAIG;gBACS,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,gBAAgB;IAsB/D;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,kCAAuC,GAAG,WAAW;IAItG,uEAAuE;IACvE,MAAM,CAAC,sBAAsB,CAC3B,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC9B,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,KAAK,GACvC,WAAW;IAkBd;;OAEG;IACH,SAAS,IAAI,MAAM;IAInB;;OAEG;IACH,sBAAsB,IAAI,MAAM;IAIhC;;;;;OAKG;IACH,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAiB9B"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type ObjectScope, type SortOrder } from "./_helpers.js";
|
|
2
|
-
import type { CustomObject } from "./custom-object.js";
|
|
2
|
+
import type { CustomObject, CustomObjectFieldInput } from "./custom-object.js";
|
|
3
3
|
import { type ExistingManifestContextOptions } from "./existing-manifest-context.js";
|
|
4
4
|
import type { Field } from "./field.js";
|
|
5
5
|
import type { ManifestComponentDeletion } from "./manifest-builder.js";
|
|
@@ -27,11 +27,11 @@ export interface ListViewDefProps {
|
|
|
27
27
|
*/
|
|
28
28
|
name: string;
|
|
29
29
|
/**
|
|
30
|
-
* Columns to display, as live {@link Field} references. At least one field is required.
|
|
30
|
+
* Columns to display, as live {@link Field} references or standard field names. At least one field is required.
|
|
31
31
|
*
|
|
32
32
|
* Required.
|
|
33
33
|
*/
|
|
34
|
-
fields:
|
|
34
|
+
fields: CustomObjectFieldInput[];
|
|
35
35
|
/**
|
|
36
36
|
* Whether this view is visible to all users (`true`) or only the record owner (`false`).
|
|
37
37
|
*
|
|
@@ -50,7 +50,7 @@ export interface ListViewDefProps {
|
|
|
50
50
|
*
|
|
51
51
|
* Optional.
|
|
52
52
|
*/
|
|
53
|
-
orderBy?:
|
|
53
|
+
orderBy?: CustomObjectFieldInput;
|
|
54
54
|
/**
|
|
55
55
|
* Sort direction. One of `'ASC'` | `'DESC'`. Requires `orderBy` to be set.
|
|
56
56
|
*
|
|
@@ -102,8 +102,8 @@ export interface ListViewDefLoadFromExistingOptions extends ExistingManifestCont
|
|
|
102
102
|
* viewId: 'view_gym_all_members',
|
|
103
103
|
* name: 'All members',
|
|
104
104
|
* description: 'Directory with membership status',
|
|
105
|
-
* fields: [
|
|
106
|
-
* orderBy:
|
|
105
|
+
* fields: ['name', memberEmail, memberPhone, memberStatusField, memberJoinDate],
|
|
106
|
+
* orderBy: 'name',
|
|
107
107
|
* sortOrder: 'ASC',
|
|
108
108
|
* isPublic: true,
|
|
109
109
|
* objectScope: 'all',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-view.d.ts","sourceRoot":"","sources":["../../src/lib/manifest/list-view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,sBAAmB;AAC1E,OAAO,KAAK,EAAE,YAAY,EAAE,2BAAwB;
|
|
1
|
+
{"version":3,"file":"list-view.d.ts","sourceRoot":"","sources":["../../src/lib/manifest/list-view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,sBAAmB;AAC1E,OAAO,KAAK,EAAE,YAAY,EAAE,sBAAsB,EAAE,2BAAwB;AAC5E,OAAO,EAA8B,KAAK,8BAA8B,EAAE,uCAAoC;AAC9G,OAAO,KAAK,EAAE,KAAK,EAAE,mBAAgB;AACrC,OAAO,KAAK,EAAE,yBAAyB,EAAE,8BAA2B;AAQpE,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,MAAM,EAAE,sBAAsB,EAAE,CAAC;IACjC;;;;OAIG;IACH,QAAQ,EAAE,OAAO,CAAC;IAClB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,OAAO,CAAC,EAAE,sBAAsB,CAAC;IACjC;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;;OAIG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B;;;;OAIG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IACpD;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kCAAmC,SAAQ,8BAA8B;IACxF,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,qBAAa,WAAW;IACtB,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAG,yBAAyB,CAAU;IAEnE,MAAM,CAAC,oBAAoB,CAAC,UAAU,EAAE,0BAA0B,GAAG,yBAAyB;IAQ9F,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAS;IAC9C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAU;IACpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAC7C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAwB;IACnD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA0B;IACvD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAmD;IACjF,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;IAEhD;;;;OAIG;gBACS,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,gBAAgB;IAsB/D;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,kCAAuC,GAAG,WAAW;IAItG,uEAAuE;IACvE,MAAM,CAAC,sBAAsB,CAC3B,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC9B,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,KAAK,GACvC,WAAW;IAkBd;;OAEG;IACH,SAAS,IAAI,MAAM;IAInB;;OAEG;IACH,sBAAsB,IAAI,MAAM;IAIhC;;;;;OAKG;IACH,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAiB9B"}
|
|
@@ -17,8 +17,8 @@ const _existing_component_fields_1 = require("./_existing-component-fields.js");
|
|
|
17
17
|
* viewId: 'view_gym_all_members',
|
|
18
18
|
* name: 'All members',
|
|
19
19
|
* description: 'Directory with membership status',
|
|
20
|
-
* fields: [
|
|
21
|
-
* orderBy:
|
|
20
|
+
* fields: ['name', memberEmail, memberPhone, memberStatusField, memberJoinDate],
|
|
21
|
+
* orderBy: 'name',
|
|
22
22
|
* sortOrder: 'ASC',
|
|
23
23
|
* isPublic: true,
|
|
24
24
|
* objectScope: 'all',
|
|
@@ -62,9 +62,9 @@ class ListViewDef {
|
|
|
62
62
|
this._viewId = props.viewId ?? (0, _helpers_1.generateId)('view');
|
|
63
63
|
this._customObjectApiName = customObject.getApiName();
|
|
64
64
|
this._name = props.name;
|
|
65
|
-
this._fields =
|
|
65
|
+
this._fields = props.fields.map((field) => customObject._resolveField(field));
|
|
66
66
|
this._isPublic = props.isPublic;
|
|
67
|
-
this._orderBy = props.orderBy;
|
|
67
|
+
this._orderBy = props.orderBy == null ? undefined : customObject._resolveField(props.orderBy);
|
|
68
68
|
this._sortOrder = props.sortOrder;
|
|
69
69
|
this._objectScope = props.objectScope ?? 'all';
|
|
70
70
|
this._description = props.description;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-view.js","sourceRoot":"","sources":["../../src/lib/manifest/list-view.ts"],"names":[],"mappings":";;;AAAA,4CAA0E;AAE1E,8EAA8G;AAG9G,gFAKsC;AA4FtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAa,WAAW;IAGtB,MAAM,CAAC,oBAAoB,CAAC,UAAsC;QAChE,OAAO;YACL,IAAI,EAAE,WAAW,CAAC,aAAa;YAC/B,OAAO,EAAE,UAAU,CAAC,MAAM;YAC1B,eAAe,EAAE,UAAU,CAAC,aAAa;SAC1C,CAAC;IACJ,CAAC;IAcD;;;;OAIG;IACH,YAAY,YAA0B,EAAE,KAAuB;QAC7D,IAAI,CAAC,KAAK,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACtE,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/C,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACvE,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,IAAI,IAAA,qBAAU,EAAC,MAAM,CAAC,CAAC;QAClD,IAAI,CAAC,oBAAoB,GAAG,YAAY,CAAC,UAAU,EAAE,CAAC;QACtD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"list-view.js","sourceRoot":"","sources":["../../src/lib/manifest/list-view.ts"],"names":[],"mappings":";;;AAAA,4CAA0E;AAE1E,8EAA8G;AAG9G,gFAKsC;AA4FtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAa,WAAW;IAGtB,MAAM,CAAC,oBAAoB,CAAC,UAAsC;QAChE,OAAO;YACL,IAAI,EAAE,WAAW,CAAC,aAAa;YAC/B,OAAO,EAAE,UAAU,CAAC,MAAM;YAC1B,eAAe,EAAE,UAAU,CAAC,aAAa;SAC1C,CAAC;IACJ,CAAC;IAcD;;;;OAIG;IACH,YAAY,YAA0B,EAAE,KAAuB;QAC7D,IAAI,CAAC,KAAK,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACtE,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/C,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACvE,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,IAAI,IAAA,qBAAU,EAAC,MAAM,CAAC,CAAC;QAClD,IAAI,CAAC,oBAAoB,GAAG,YAAY,CAAC,UAAU,EAAE,CAAC;QACtD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9E,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC9F,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC;QAClC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC;QAC/C,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC;QACtC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC;QACxC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC;QAClC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,MAAc,EAAE,UAA8C,EAAE;QACtF,OAAO,IAAA,sDAA0B,EAAC,OAAO,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3E,CAAC;IAED,uEAAuE;IACvE,MAAM,CAAC,sBAAsB,CAC3B,YAA0B,EAC1B,SAA8B,EAC9B,YAAwC;QAExC,MAAM,KAAK,GAAqB;YAC9B,MAAM,EAAE,IAAA,wDAA2B,EAAC,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,aAAa,CAAC;YACpF,IAAI,EAAE,IAAA,wDAA2B,EAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,aAAa,CAAC;YAC/E,WAAW,EAAE,IAAA,yDAA4B,EAAC,SAAS,EAAE,aAAa,CAAC;YACnE,MAAM,EAAE,IAAA,uDAA0B,EAAS,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC,GAAG,CAC5F,CAAC,YAAoB,EAAE,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC,CACrD;YACD,QAAQ,EAAE,IAAA,yDAA4B,EAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAC,aAAa,CAAC;SACvF,CAAC;QACF,IAAI,SAAS,CAAC,cAAc,CAAC,KAAK,SAAS;YAAE,KAAK,CAAC,WAAW,GAAG,SAAS,CAAC,cAAc,CAAC,CAAC;QAC3F,IAAI,SAAS,CAAC,YAAY,CAAC,KAAK,SAAS;YAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC;QACrF,IAAI,SAAS,CAAC,eAAe,CAAC,KAAK,SAAS;YAAE,KAAK,CAAC,YAAY,GAAG,SAAS,CAAC,eAAe,CAAC,CAAC;QAC9F,IAAI,SAAS,CAAC,YAAY,CAAC,KAAK,SAAS;YAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC;QACrF,IAAI,SAAS,CAAC,UAAU,CAAC,IAAI,IAAI;YAAE,KAAK,CAAC,OAAO,GAAG,YAAY,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QACvF,OAAO,IAAI,WAAW,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,sBAAsB;QACpB,OAAO,IAAI,CAAC,oBAAoB,CAAC;IACnC,CAAC;IAED;;;;;OAKG;IACH,MAAM;QACJ,MAAM,CAAC,GAAwB;YAC7B,IAAI,EAAE,WAAW,CAAC,aAAa;YAC/B,eAAe,EAAE,IAAI,CAAC,oBAAoB;YAC1C,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,KAAK;YAChB,MAAM,EAAE,IAAI,CAAC,SAAS;YACtB,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;YAC/C,WAAW,EAAE,IAAI,CAAC,YAAY;SAC/B,CAAC;QACF,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI;YAAE,CAAC,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;QACrE,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI;YAAE,CAAC,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QAC/D,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI;YAAE,CAAC,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;QACtE,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI;YAAE,CAAC,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC;QACxE,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI;YAAE,CAAC,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QAC/D,OAAO,CAAC,CAAC;IACX,CAAC;;AApHH,kCAqHC;AApHiB,yBAAa,GAAG,yBAAkC,CAAC"}
|
|
@@ -14,8 +14,8 @@ import { optionalStringComponentField, requireArrayComponentField, requireBoolea
|
|
|
14
14
|
* viewId: 'view_gym_all_members',
|
|
15
15
|
* name: 'All members',
|
|
16
16
|
* description: 'Directory with membership status',
|
|
17
|
-
* fields: [
|
|
18
|
-
* orderBy:
|
|
17
|
+
* fields: ['name', memberEmail, memberPhone, memberStatusField, memberJoinDate],
|
|
18
|
+
* orderBy: 'name',
|
|
19
19
|
* sortOrder: 'ASC',
|
|
20
20
|
* isPublic: true,
|
|
21
21
|
* objectScope: 'all',
|
|
@@ -59,9 +59,9 @@ export class ListViewDef {
|
|
|
59
59
|
this._viewId = props.viewId ?? generateId('view');
|
|
60
60
|
this._customObjectApiName = customObject.getApiName();
|
|
61
61
|
this._name = props.name;
|
|
62
|
-
this._fields =
|
|
62
|
+
this._fields = props.fields.map((field) => customObject._resolveField(field));
|
|
63
63
|
this._isPublic = props.isPublic;
|
|
64
|
-
this._orderBy = props.orderBy;
|
|
64
|
+
this._orderBy = props.orderBy == null ? undefined : customObject._resolveField(props.orderBy);
|
|
65
65
|
this._sortOrder = props.sortOrder;
|
|
66
66
|
this._objectScope = props.objectScope ?? 'all';
|
|
67
67
|
this._description = props.description;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-view.mjs","sourceRoot":"","sources":["../../src/lib/manifest/list-view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAoC,uBAAmB;AAE1E,OAAO,EAAE,0BAA0B,EAAuC,wCAAoC;AAG9G,OAAO,EACL,4BAA4B,EAC5B,0BAA0B,EAC1B,4BAA4B,EAC5B,2BAA2B,GAC5B,yCAAqC;AA4FtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,OAAO,WAAW;IAGtB,MAAM,CAAC,oBAAoB,CAAC,UAAsC;QAChE,OAAO;YACL,IAAI,EAAE,WAAW,CAAC,aAAa;YAC/B,OAAO,EAAE,UAAU,CAAC,MAAM;YAC1B,eAAe,EAAE,UAAU,CAAC,aAAa;SAC1C,CAAC;IACJ,CAAC;IAcD;;;;OAIG;IACH,YAAY,YAA0B,EAAE,KAAuB;QAC7D,IAAI,CAAC,KAAK,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACtE,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/C,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACvE,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,CAAC,oBAAoB,GAAG,YAAY,CAAC,UAAU,EAAE,CAAC;QACtD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"list-view.mjs","sourceRoot":"","sources":["../../src/lib/manifest/list-view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAoC,uBAAmB;AAE1E,OAAO,EAAE,0BAA0B,EAAuC,wCAAoC;AAG9G,OAAO,EACL,4BAA4B,EAC5B,0BAA0B,EAC1B,4BAA4B,EAC5B,2BAA2B,GAC5B,yCAAqC;AA4FtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,OAAO,WAAW;IAGtB,MAAM,CAAC,oBAAoB,CAAC,UAAsC;QAChE,OAAO;YACL,IAAI,EAAE,WAAW,CAAC,aAAa;YAC/B,OAAO,EAAE,UAAU,CAAC,MAAM;YAC1B,eAAe,EAAE,UAAU,CAAC,aAAa;SAC1C,CAAC;IACJ,CAAC;IAcD;;;;OAIG;IACH,YAAY,YAA0B,EAAE,KAAuB;QAC7D,IAAI,CAAC,KAAK,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACtE,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/C,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACvE,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,CAAC,oBAAoB,GAAG,YAAY,CAAC,UAAU,EAAE,CAAC;QACtD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9E,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC9F,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC;QAClC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC;QAC/C,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC;QACtC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC;QACxC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC;QAClC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,MAAc,EAAE,UAA8C,EAAE;QACtF,OAAO,0BAA0B,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3E,CAAC;IAED,uEAAuE;IACvE,MAAM,CAAC,sBAAsB,CAC3B,YAA0B,EAC1B,SAA8B,EAC9B,YAAwC;QAExC,MAAM,KAAK,GAAqB;YAC9B,MAAM,EAAE,2BAA2B,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,aAAa,CAAC;YACpF,IAAI,EAAE,2BAA2B,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,aAAa,CAAC;YAC/E,WAAW,EAAE,4BAA4B,CAAC,SAAS,EAAE,aAAa,CAAC;YACnE,MAAM,EAAE,0BAA0B,CAAS,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC,GAAG,CAC5F,CAAC,YAAoB,EAAE,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC,CACrD;YACD,QAAQ,EAAE,4BAA4B,CAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAC,aAAa,CAAC;SACvF,CAAC;QACF,IAAI,SAAS,CAAC,cAAc,CAAC,KAAK,SAAS;YAAE,KAAK,CAAC,WAAW,GAAG,SAAS,CAAC,cAAc,CAAC,CAAC;QAC3F,IAAI,SAAS,CAAC,YAAY,CAAC,KAAK,SAAS;YAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC;QACrF,IAAI,SAAS,CAAC,eAAe,CAAC,KAAK,SAAS;YAAE,KAAK,CAAC,YAAY,GAAG,SAAS,CAAC,eAAe,CAAC,CAAC;QAC9F,IAAI,SAAS,CAAC,YAAY,CAAC,KAAK,SAAS;YAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC;QACrF,IAAI,SAAS,CAAC,UAAU,CAAC,IAAI,IAAI;YAAE,KAAK,CAAC,OAAO,GAAG,YAAY,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QACvF,OAAO,IAAI,WAAW,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,sBAAsB;QACpB,OAAO,IAAI,CAAC,oBAAoB,CAAC;IACnC,CAAC;IAED;;;;;OAKG;IACH,MAAM;QACJ,MAAM,CAAC,GAAwB;YAC7B,IAAI,EAAE,WAAW,CAAC,aAAa;YAC/B,eAAe,EAAE,IAAI,CAAC,oBAAoB;YAC1C,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,KAAK;YAChB,MAAM,EAAE,IAAI,CAAC,SAAS;YACtB,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;YAC/C,WAAW,EAAE,IAAI,CAAC,YAAY;SAC/B,CAAC;QACF,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI;YAAE,CAAC,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;QACrE,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI;YAAE,CAAC,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QAC/D,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI;YAAE,CAAC,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;QACtE,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI;YAAE,CAAC,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC;QACxE,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI;YAAE,CAAC,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QAC/D,OAAO,CAAC,CAAC;IACX,CAAC;;AAnHe,yBAAa,GAAG,yBAAkC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { generateId } from './_helpers';
|
|
2
2
|
import { CustomObjectFieldSection } from './custom-object-field-section';
|
|
3
|
-
import type {
|
|
3
|
+
import type {
|
|
4
|
+
CustomObject,
|
|
5
|
+
CustomObjectFieldInput,
|
|
6
|
+
CustomObjectStandardFieldIdentifier,
|
|
7
|
+
} from './custom-object';
|
|
4
8
|
import { getExistingManifestContext, type ExistingManifestContextOptions } from './existing-manifest-context';
|
|
5
9
|
import type { Field } from './field';
|
|
6
10
|
import type { ManifestComponentDeletion } from './manifest-builder';
|
|
@@ -134,14 +138,14 @@ export interface SectionFieldOptions {
|
|
|
134
138
|
/** A typed field entry inside a `fields_section`. */
|
|
135
139
|
export interface SectionField extends SectionFieldOptions {
|
|
136
140
|
/** Field to display. Required. */
|
|
137
|
-
field:
|
|
141
|
+
field: CustomObjectFieldInput;
|
|
138
142
|
}
|
|
139
143
|
|
|
140
144
|
/** @deprecated Use `SectionField` for object entries or `SectionFieldInput` for field arrays. */
|
|
141
145
|
export type SectionFieldRef = SectionField;
|
|
142
146
|
|
|
143
147
|
/** One field entry inside a `fields_section`. */
|
|
144
|
-
export type SectionFieldInput =
|
|
148
|
+
export type SectionFieldInput = CustomObjectFieldInput | SectionField;
|
|
145
149
|
|
|
146
150
|
/** Common edit controls for sections. */
|
|
147
151
|
export interface PageLayoutSectionOptions {
|
|
@@ -655,7 +659,11 @@ function isField(value: unknown): value is Field {
|
|
|
655
659
|
|
|
656
660
|
function isFieldRef(value: SectionFieldInput): value is SectionField {
|
|
657
661
|
const candidate = value as { field?: unknown } | null;
|
|
658
|
-
return
|
|
662
|
+
return (
|
|
663
|
+
candidate != null &&
|
|
664
|
+
typeof candidate === 'object' &&
|
|
665
|
+
(isField(candidate.field) || typeof candidate.field === 'string')
|
|
666
|
+
);
|
|
659
667
|
}
|
|
660
668
|
|
|
661
669
|
const LAYOUT_SECTION_KEY = Symbol('CustomObjectPageLayout.layoutSectionKey');
|
|
@@ -707,6 +715,10 @@ function assertSameObject(customObject: CustomObject, field: Field, sectionKey:
|
|
|
707
715
|
}
|
|
708
716
|
}
|
|
709
717
|
|
|
718
|
+
function assignSectionForLayout(field: Field, section: CustomObjectFieldSection | string): void {
|
|
719
|
+
if (!field.isStandard()) field._assignSection(section);
|
|
720
|
+
}
|
|
721
|
+
|
|
710
722
|
function assertSectionBelongsTo(customObject: CustomObject, section: CustomObjectFieldSection): void {
|
|
711
723
|
if (section.getModelApiName() !== customObject.getApiName()) {
|
|
712
724
|
throw new Error(
|
|
@@ -764,16 +776,18 @@ function normalizeSectionField(
|
|
|
764
776
|
sectionKey: string,
|
|
765
777
|
entry: SectionFieldInput,
|
|
766
778
|
): SerializedSectionField {
|
|
767
|
-
if (isField(entry)) {
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
779
|
+
if (isField(entry) || typeof entry === 'string') {
|
|
780
|
+
const field = customObject._resolveField(entry);
|
|
781
|
+
assertSameObject(customObject, field, sectionKey);
|
|
782
|
+
assignSectionForLayout(field, section);
|
|
783
|
+
return toSerializedSectionField(field.getApiName());
|
|
771
784
|
}
|
|
772
785
|
|
|
773
786
|
if (isFieldRef(entry)) {
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
787
|
+
const field = customObject._resolveField(entry.field);
|
|
788
|
+
assertSameObject(customObject, field, sectionKey);
|
|
789
|
+
assignSectionForLayout(field, section);
|
|
790
|
+
return toSerializedSectionField(field.getApiName(), entry);
|
|
777
791
|
}
|
|
778
792
|
|
|
779
793
|
throw new Error(
|
|
@@ -1246,7 +1260,6 @@ function ensureArrayProperty<T>(record: Record<string, any>, key: string, label:
|
|
|
1246
1260
|
* apiName: 'default',
|
|
1247
1261
|
* name: 'Member',
|
|
1248
1262
|
* layoutId: 'layout_gym_member',
|
|
1249
|
-
* headerEdits: { newTitleField: memberDisplayName.getApiName() },
|
|
1250
1263
|
* tabEdits: {
|
|
1251
1264
|
* newTabs: [{
|
|
1252
1265
|
* key: 'member', name: 'Member', type: 'tab_with_sections',
|
|
@@ -1254,7 +1267,7 @@ function ensureArrayProperty<T>(record: Record<string, any>, key: string, label:
|
|
|
1254
1267
|
* name: 'Profile',
|
|
1255
1268
|
* type: 'fields_section',
|
|
1256
1269
|
* section: profileSection,
|
|
1257
|
-
* fields: [
|
|
1270
|
+
* fields: [{ field: 'name', editable: true }, memberEmail],
|
|
1258
1271
|
* }],
|
|
1259
1272
|
* }],
|
|
1260
1273
|
* systemTabEdits: {},
|
|
@@ -1286,6 +1299,7 @@ export class CustomObjectPageLayout {
|
|
|
1286
1299
|
private readonly _visibilityConditions: VisibilityConditions;
|
|
1287
1300
|
private readonly _blueprintKey: string | undefined;
|
|
1288
1301
|
private readonly _fieldSectionLayoutSections: Map<string, FieldSectionLayoutSection[]>;
|
|
1302
|
+
private readonly _customObject: CustomObject;
|
|
1289
1303
|
|
|
1290
1304
|
/**
|
|
1291
1305
|
* @param customObject - The custom object this layout belongs to.
|
|
@@ -1298,6 +1312,7 @@ export class CustomObjectPageLayout {
|
|
|
1298
1312
|
this._layoutId = props.layoutId ?? generateId('layout');
|
|
1299
1313
|
this._apiName = props.apiName;
|
|
1300
1314
|
this._customObjectApiName = customObject.getApiName();
|
|
1315
|
+
this._customObject = customObject;
|
|
1301
1316
|
this._name = props.name;
|
|
1302
1317
|
this._tabEdits = normalizeTabEdits(customObject, props.tabEdits ?? {});
|
|
1303
1318
|
this._fieldSectionLayoutSections = buildFieldSectionLayoutIndexFromProps(props.tabEdits);
|
|
@@ -1337,6 +1352,7 @@ export class CustomObjectPageLayout {
|
|
|
1337
1352
|
'object_rql_name',
|
|
1338
1353
|
CustomObjectPageLayout.componentType,
|
|
1339
1354
|
),
|
|
1355
|
+
_customObject: customObject,
|
|
1340
1356
|
_name: requireStringComponentField(component, 'name', CustomObjectPageLayout.componentType),
|
|
1341
1357
|
_tabEdits: tabEdits,
|
|
1342
1358
|
_headerEdits: cloneJson(component['header_edits'] ?? {}),
|
|
@@ -1378,7 +1394,7 @@ export class CustomObjectPageLayout {
|
|
|
1378
1394
|
* For loaded layouts, this mutates the preserved `tab_edits` JSON in place
|
|
1379
1395
|
* and normalizes only the inserted field entry.
|
|
1380
1396
|
*/
|
|
1381
|
-
addField(field:
|
|
1397
|
+
addField(field: CustomObjectFieldInput, options: AddPageLayoutFieldOptions): this {
|
|
1382
1398
|
return this.addFields([field], options);
|
|
1383
1399
|
}
|
|
1384
1400
|
|
|
@@ -1389,7 +1405,7 @@ export class CustomObjectPageLayout {
|
|
|
1389
1405
|
* pass `section` to choose the typed field section. Use `sectionKey` only
|
|
1390
1406
|
* when a field section maps to multiple layout sections.
|
|
1391
1407
|
*/
|
|
1392
|
-
addFields(fields:
|
|
1408
|
+
addFields(fields: CustomObjectFieldInput[], options: AddPageLayoutFieldsOptions): this {
|
|
1393
1409
|
if (fields.length === 0) return this;
|
|
1394
1410
|
|
|
1395
1411
|
let fieldSectionForMutation: CustomObjectFieldSection | undefined;
|
|
@@ -1465,7 +1481,7 @@ export class CustomObjectPageLayout {
|
|
|
1465
1481
|
* `CUSTOM_OBJECT_FIELD` component from the manifest.
|
|
1466
1482
|
*/
|
|
1467
1483
|
removeField(field: Field | string, options: RemovePageLayoutFieldOptions = {}): this {
|
|
1468
|
-
const fieldApiName =
|
|
1484
|
+
const fieldApiName = this.fieldApiName(field);
|
|
1469
1485
|
if (isField(field)) this.assertFieldBelongsToLayout(field);
|
|
1470
1486
|
|
|
1471
1487
|
let sectionKey: string | undefined;
|
|
@@ -1843,14 +1859,15 @@ export class CustomObjectPageLayout {
|
|
|
1843
1859
|
}
|
|
1844
1860
|
|
|
1845
1861
|
private serializeFieldForMutation(
|
|
1846
|
-
field:
|
|
1862
|
+
field: CustomObjectFieldInput,
|
|
1847
1863
|
fallbackSectionKey: string,
|
|
1848
1864
|
options: AddPageLayoutFieldOptions,
|
|
1849
1865
|
fieldSection: CustomObjectFieldSection | undefined,
|
|
1850
1866
|
): SerializedSectionField {
|
|
1851
|
-
this.
|
|
1852
|
-
this.
|
|
1853
|
-
|
|
1867
|
+
const resolved = this._resolveField(field);
|
|
1868
|
+
this.assertFieldBelongsToLayout(resolved);
|
|
1869
|
+
this.assignFieldSectionForMutation(resolved, fallbackSectionKey, fieldSection);
|
|
1870
|
+
return toSerializedSectionField(resolved.getApiName(), options);
|
|
1854
1871
|
}
|
|
1855
1872
|
|
|
1856
1873
|
private normalizeSectionFieldForMutation(
|
|
@@ -1858,16 +1875,18 @@ export class CustomObjectPageLayout {
|
|
|
1858
1875
|
sectionKey: string,
|
|
1859
1876
|
entry: SectionFieldInput,
|
|
1860
1877
|
): SerializedSectionField {
|
|
1861
|
-
if (isField(entry)) {
|
|
1862
|
-
this.
|
|
1863
|
-
|
|
1864
|
-
|
|
1878
|
+
if (isField(entry) || typeof entry === 'string') {
|
|
1879
|
+
const field = this._resolveField(entry);
|
|
1880
|
+
this.assertFieldBelongsToLayout(field);
|
|
1881
|
+
assignSectionForLayout(field, section);
|
|
1882
|
+
return toSerializedSectionField(field.getApiName());
|
|
1865
1883
|
}
|
|
1866
1884
|
|
|
1867
1885
|
if (isFieldRef(entry)) {
|
|
1868
|
-
this.
|
|
1869
|
-
|
|
1870
|
-
|
|
1886
|
+
const field = this._resolveField(entry.field);
|
|
1887
|
+
this.assertFieldBelongsToLayout(field);
|
|
1888
|
+
assignSectionForLayout(field, section);
|
|
1889
|
+
return toSerializedSectionField(field.getApiName(), entry);
|
|
1871
1890
|
}
|
|
1872
1891
|
|
|
1873
1892
|
throw new Error(
|
|
@@ -1910,6 +1929,7 @@ export class CustomObjectPageLayout {
|
|
|
1910
1929
|
fallbackSectionKey: string,
|
|
1911
1930
|
fieldSection: CustomObjectFieldSection | undefined,
|
|
1912
1931
|
): void {
|
|
1932
|
+
if (field.isStandard()) return;
|
|
1913
1933
|
const rawFieldSection = fieldSection as CustomObjectFieldSection | string | undefined;
|
|
1914
1934
|
if (rawFieldSection != null) {
|
|
1915
1935
|
if (typeof rawFieldSection === 'string') {
|
|
@@ -1948,6 +1968,16 @@ export class CustomObjectPageLayout {
|
|
|
1948
1968
|
}
|
|
1949
1969
|
}
|
|
1950
1970
|
|
|
1971
|
+
private _resolveField(field: CustomObjectFieldInput): Field {
|
|
1972
|
+
return this._customObject._resolveField(field);
|
|
1973
|
+
}
|
|
1974
|
+
|
|
1975
|
+
private fieldApiName(field: Field | string): FieldRqlName {
|
|
1976
|
+
if (typeof field !== 'string') return field.getApiName();
|
|
1977
|
+
if (field.endsWith('__c')) return field;
|
|
1978
|
+
return this._customObject.standardField(field as CustomObjectStandardFieldIdentifier).getApiName();
|
|
1979
|
+
}
|
|
1980
|
+
|
|
1951
1981
|
private assertFieldSectionBelongsToLayout(section: CustomObjectFieldSection): void {
|
|
1952
1982
|
if (section.getModelApiName() !== this._customObjectApiName) {
|
|
1953
1983
|
throw new Error(
|
|
@@ -2222,7 +2252,7 @@ export class CustomObjectPageLayout {
|
|
|
2222
2252
|
}
|
|
2223
2253
|
|
|
2224
2254
|
private headerFieldApiName(field: Field | FieldRqlName): FieldRqlName {
|
|
2225
|
-
if (typeof field === 'string') return field;
|
|
2255
|
+
if (typeof field === 'string') return this.fieldApiName(field);
|
|
2226
2256
|
this.assertFieldBelongsToLayout(field);
|
|
2227
2257
|
return field.getApiName();
|
|
2228
2258
|
}
|
|
@@ -2283,12 +2313,12 @@ export class CustomObjectPageLayout {
|
|
|
2283
2313
|
customObject: CustomObject,
|
|
2284
2314
|
props: {
|
|
2285
2315
|
section?: CustomObjectFieldSection;
|
|
2286
|
-
fields?:
|
|
2316
|
+
fields?: CustomObjectFieldInput[];
|
|
2287
2317
|
} = {},
|
|
2288
2318
|
): CustomObjectPageLayout {
|
|
2289
2319
|
const coApiName = customObject.getApiName();
|
|
2290
2320
|
const coName = customObject.getName();
|
|
2291
|
-
const fields = props.fields ?? [];
|
|
2321
|
+
const fields = (props.fields ?? []).map((field) => customObject._resolveField(field));
|
|
2292
2322
|
const generalSection =
|
|
2293
2323
|
props.section ??
|
|
2294
2324
|
(() => {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Category } from './category';
|
|
2
2
|
import { getExistingManifestContext, type ExistingManifestContextOptions } from './existing-manifest-context';
|
|
3
|
+
import { Field } from './field';
|
|
3
4
|
import type { ManifestComponent, ManifestComponentDeletion, ManifestScope } from './manifest-builder';
|
|
4
5
|
import { optionalStringComponentField, requireStringComponentField } from './_existing-component-fields';
|
|
5
6
|
|
|
@@ -11,15 +12,9 @@ import { optionalStringComponentField, requireStringComponentField } from './_ex
|
|
|
11
12
|
// ────────────────────────────────────────────────────────────────────────
|
|
12
13
|
|
|
13
14
|
/** Specs for the 9 standard fields every CO ships with. Order matches the backend constant. */
|
|
14
|
-
const STANDARD_FIELD_SPECS
|
|
15
|
-
apiName: string;
|
|
16
|
-
displayName: string;
|
|
17
|
-
description: string;
|
|
18
|
-
dataType: Record<string, any>;
|
|
19
|
-
required: boolean;
|
|
20
|
-
unique: boolean;
|
|
21
|
-
}> = [
|
|
15
|
+
const STANDARD_FIELD_SPECS = [
|
|
22
16
|
{
|
|
17
|
+
key: 'id',
|
|
23
18
|
apiName: 'id',
|
|
24
19
|
displayName: 'ID',
|
|
25
20
|
description: 'The Rippling ID of a record',
|
|
@@ -28,6 +23,7 @@ const STANDARD_FIELD_SPECS: ReadonlyArray<{
|
|
|
28
23
|
unique: true,
|
|
29
24
|
},
|
|
30
25
|
{
|
|
26
|
+
key: 'createdAt',
|
|
31
27
|
apiName: 'created_at',
|
|
32
28
|
displayName: 'Created Date',
|
|
33
29
|
description: 'The date and time a record was created',
|
|
@@ -36,6 +32,7 @@ const STANDARD_FIELD_SPECS: ReadonlyArray<{
|
|
|
36
32
|
unique: false,
|
|
37
33
|
},
|
|
38
34
|
{
|
|
35
|
+
key: 'updatedAt',
|
|
39
36
|
apiName: 'updated_at',
|
|
40
37
|
displayName: 'Last Modified Date',
|
|
41
38
|
description: 'The date and time a record was last updated',
|
|
@@ -44,6 +41,7 @@ const STANDARD_FIELD_SPECS: ReadonlyArray<{
|
|
|
44
41
|
unique: false,
|
|
45
42
|
},
|
|
46
43
|
{
|
|
44
|
+
key: 'systemUpdatedAt',
|
|
47
45
|
apiName: 'system_updated_at',
|
|
48
46
|
displayName: 'System Modified At',
|
|
49
47
|
description: 'The date and time a record was last updated by the system',
|
|
@@ -52,6 +50,7 @@ const STANDARD_FIELD_SPECS: ReadonlyArray<{
|
|
|
52
50
|
unique: false,
|
|
53
51
|
},
|
|
54
52
|
{
|
|
53
|
+
key: 'externalId',
|
|
55
54
|
apiName: 'external_id',
|
|
56
55
|
displayName: 'External ID',
|
|
57
56
|
description: 'The external identifier for a record used in third party integrations',
|
|
@@ -60,6 +59,7 @@ const STANDARD_FIELD_SPECS: ReadonlyArray<{
|
|
|
60
59
|
unique: true,
|
|
61
60
|
},
|
|
62
61
|
{
|
|
62
|
+
key: 'name',
|
|
63
63
|
apiName: 'name',
|
|
64
64
|
displayName: 'Name',
|
|
65
65
|
description: 'A string used to describe a record. This is used for display purposes as well as search',
|
|
@@ -68,6 +68,7 @@ const STANDARD_FIELD_SPECS: ReadonlyArray<{
|
|
|
68
68
|
unique: false,
|
|
69
69
|
},
|
|
70
70
|
{
|
|
71
|
+
key: 'ownerRole',
|
|
71
72
|
apiName: 'owner_role',
|
|
72
73
|
displayName: 'Owner',
|
|
73
74
|
description:
|
|
@@ -82,6 +83,7 @@ const STANDARD_FIELD_SPECS: ReadonlyArray<{
|
|
|
82
83
|
unique: false,
|
|
83
84
|
},
|
|
84
85
|
{
|
|
86
|
+
key: 'lastModifiedBy',
|
|
85
87
|
apiName: 'last_modified_by',
|
|
86
88
|
displayName: 'Last Modified by',
|
|
87
89
|
description: 'The Employee who made the latest change.',
|
|
@@ -95,6 +97,7 @@ const STANDARD_FIELD_SPECS: ReadonlyArray<{
|
|
|
95
97
|
unique: false,
|
|
96
98
|
},
|
|
97
99
|
{
|
|
100
|
+
key: 'createdBy',
|
|
98
101
|
apiName: 'created_by',
|
|
99
102
|
displayName: 'Created by',
|
|
100
103
|
description: 'The Employee who created the record',
|
|
@@ -107,7 +110,56 @@ const STANDARD_FIELD_SPECS: ReadonlyArray<{
|
|
|
107
110
|
required: false,
|
|
108
111
|
unique: false,
|
|
109
112
|
},
|
|
110
|
-
]
|
|
113
|
+
] as const satisfies ReadonlyArray<{
|
|
114
|
+
key: string;
|
|
115
|
+
apiName: string;
|
|
116
|
+
displayName: string;
|
|
117
|
+
description: string;
|
|
118
|
+
dataType: Record<string, any>;
|
|
119
|
+
required: boolean;
|
|
120
|
+
unique: boolean;
|
|
121
|
+
}>;
|
|
122
|
+
|
|
123
|
+
type StandardFieldSpec = (typeof STANDARD_FIELD_SPECS)[number];
|
|
124
|
+
|
|
125
|
+
export type CustomObjectStandardFieldKey = StandardFieldSpec['key'];
|
|
126
|
+
export type CustomObjectStandardFieldApiName = StandardFieldSpec['apiName'];
|
|
127
|
+
export type CustomObjectStandardFieldIdentifier =
|
|
128
|
+
| CustomObjectStandardFieldKey
|
|
129
|
+
| CustomObjectStandardFieldApiName;
|
|
130
|
+
export type CustomObjectStandardFields = Readonly<Record<CustomObjectStandardFieldKey, Field>>;
|
|
131
|
+
export type CustomObjectFieldInput = Field | CustomObjectStandardFieldIdentifier;
|
|
132
|
+
|
|
133
|
+
const STANDARD_FIELD_SPECS_BY_IDENTIFIER = new Map<string, StandardFieldSpec>();
|
|
134
|
+
for (const spec of STANDARD_FIELD_SPECS) {
|
|
135
|
+
STANDARD_FIELD_SPECS_BY_IDENTIFIER.set(spec.key, spec);
|
|
136
|
+
STANDARD_FIELD_SPECS_BY_IDENTIFIER.set(spec.apiName, spec);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
function standardFieldSpec(identifier: string): StandardFieldSpec {
|
|
140
|
+
const spec = STANDARD_FIELD_SPECS_BY_IDENTIFIER.get(identifier);
|
|
141
|
+
if (spec != null) return spec;
|
|
142
|
+
throw new Error(
|
|
143
|
+
`Unknown standard field "${identifier}". Use one of: ` +
|
|
144
|
+
STANDARD_FIELD_SPECS.map((candidate) => candidate.key).join(', ') +
|
|
145
|
+
'.',
|
|
146
|
+
);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
function standardFieldComponent(customObjectApiName: string, spec: StandardFieldSpec): Record<string, any> {
|
|
150
|
+
return new _StandardField(customObjectApiName, spec).toDict();
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
function createStandardFieldsAccessor(customObject: CustomObject): CustomObjectStandardFields {
|
|
154
|
+
const fields = {} as Record<CustomObjectStandardFieldKey, Field>;
|
|
155
|
+
for (const spec of STANDARD_FIELD_SPECS) {
|
|
156
|
+
Object.defineProperty(fields, spec.key, {
|
|
157
|
+
enumerable: true,
|
|
158
|
+
get: () => customObject.standardField(spec.key),
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
return Object.freeze(fields) as CustomObjectStandardFields;
|
|
162
|
+
}
|
|
111
163
|
|
|
112
164
|
/**
|
|
113
165
|
* Minimal `ManifestComponent` that emits a single standard field stub.
|
|
@@ -324,6 +376,9 @@ export class CustomObject implements ManifestScope {
|
|
|
324
376
|
private _pluralLabel: string | null | undefined;
|
|
325
377
|
private _nameFieldDetails: Record<string, any> | null | undefined;
|
|
326
378
|
private _defaultFieldSectionName: string | null | undefined;
|
|
379
|
+
private readonly _standardFieldRefs = new Map<CustomObjectStandardFieldApiName, Field>();
|
|
380
|
+
private _standardFieldResolver: ((apiName: CustomObjectStandardFieldApiName) => Field) | undefined;
|
|
381
|
+
readonly standardFields: CustomObjectStandardFields;
|
|
327
382
|
|
|
328
383
|
/**
|
|
329
384
|
* @param scope - The manifest or parent scope to register this object with.
|
|
@@ -349,6 +404,7 @@ export class CustomObject implements ManifestScope {
|
|
|
349
404
|
this._pluralLabel = props.pluralLabel;
|
|
350
405
|
this._nameFieldDetails = props.nameFieldDetails;
|
|
351
406
|
this._defaultFieldSectionName = props.defaultFieldSectionName;
|
|
407
|
+
this.standardFields = createStandardFieldsAccessor(this);
|
|
352
408
|
scope._register(this);
|
|
353
409
|
|
|
354
410
|
// Backend closed-world validation requires these 9 configs for every new CO.
|
|
@@ -393,6 +449,34 @@ export class CustomObject implements ManifestScope {
|
|
|
393
449
|
return new CustomObject(scope, props);
|
|
394
450
|
}
|
|
395
451
|
|
|
452
|
+
/** Returns a platform-managed standard field on this custom object. */
|
|
453
|
+
standardField(identifier: CustomObjectStandardFieldIdentifier): Field {
|
|
454
|
+
const spec = standardFieldSpec(identifier);
|
|
455
|
+
const cached = this._standardFieldRefs.get(spec.apiName);
|
|
456
|
+
if (cached != null) return cached;
|
|
457
|
+
const field =
|
|
458
|
+
this._standardFieldResolver?.(spec.apiName) ??
|
|
459
|
+
Field._referenceFromExistingComponent(standardFieldComponent(this._apiName, spec));
|
|
460
|
+
this._standardFieldRefs.set(spec.apiName, field);
|
|
461
|
+
return field;
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
/** Alias for {@link standardField}. */
|
|
465
|
+
field(identifier: CustomObjectStandardFieldIdentifier): Field {
|
|
466
|
+
return this.standardField(identifier);
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
/** @internal Resolves object-scoped field inputs accepted by layout/list-view APIs. */
|
|
470
|
+
_resolveField(field: CustomObjectFieldInput): Field {
|
|
471
|
+
return typeof field === 'string' ? this.standardField(field) : field;
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
/** @internal Lets loaded objects return existing standard field refs when present. */
|
|
475
|
+
_setStandardFieldResolver(resolve: (apiName: CustomObjectStandardFieldApiName) => Field): void {
|
|
476
|
+
this._standardFieldResolver = resolve;
|
|
477
|
+
this._standardFieldRefs.clear();
|
|
478
|
+
}
|
|
479
|
+
|
|
396
480
|
private static iconFromExistingComponent(value: unknown): IconConfig | undefined {
|
|
397
481
|
if (value == null || typeof value !== 'object') return undefined;
|
|
398
482
|
const wire = value as Record<string, any>;
|