@rippling/rippling-sdk 0.2.0-alpha.36 → 0.2.0-alpha.38
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/client.d.mts +7 -1
- package/client.d.mts.map +1 -1
- package/client.d.ts +7 -1
- package/client.d.ts.map +1 -1
- package/client.js +7 -1
- package/client.js.map +1 -1
- package/client.mjs +7 -1
- package/client.mjs.map +1 -1
- package/examples/manifest/dental-practice-management/dental-practice-management.ts +21 -34
- package/examples/manifest/gym-membership-management/gym-membership-management.ts +27 -38
- package/examples/manifest/gym-membership-management/manifest.json +1 -1
- package/examples/sdui/sdui-crud-todo/sdui-crud-todo.ts +3 -3
- package/examples/sdui/sdui-showcase/sdui-showcase.ts +6 -11
- package/examples/sdui/sdui-tab-multi-view/sdui-tab-multi-view.ts +14 -24
- package/examples/sdui/vote/vote.ts +7 -11
- package/internal/utils/log.d.mts.map +1 -1
- package/internal/utils/log.d.ts.map +1 -1
- package/internal/utils/log.js +2 -0
- package/internal/utils/log.js.map +1 -1
- package/internal/utils/log.mjs +2 -0
- package/internal/utils/log.mjs.map +1 -1
- package/lib/manifest/category.d.mts +4 -2
- package/lib/manifest/category.d.mts.map +1 -1
- package/lib/manifest/category.d.ts +4 -2
- package/lib/manifest/category.d.ts.map +1 -1
- package/lib/manifest/category.js +2 -2
- package/lib/manifest/category.js.map +1 -1
- package/lib/manifest/category.mjs +2 -2
- package/lib/manifest/category.mjs.map +1 -1
- package/lib/manifest/custom-object-field-section.d.mts +4 -0
- package/lib/manifest/custom-object-field-section.d.mts.map +1 -1
- package/lib/manifest/custom-object-field-section.d.ts +4 -0
- package/lib/manifest/custom-object-field-section.d.ts.map +1 -1
- package/lib/manifest/custom-object-field-section.js +6 -0
- package/lib/manifest/custom-object-field-section.js.map +1 -1
- package/lib/manifest/custom-object-field-section.mjs +6 -0
- package/lib/manifest/custom-object-field-section.mjs.map +1 -1
- package/lib/manifest/custom-object-page-layout.d.mts +23 -13
- package/lib/manifest/custom-object-page-layout.d.mts.map +1 -1
- package/lib/manifest/custom-object-page-layout.d.ts +23 -13
- package/lib/manifest/custom-object-page-layout.d.ts.map +1 -1
- package/lib/manifest/custom-object-page-layout.js +122 -9
- package/lib/manifest/custom-object-page-layout.js.map +1 -1
- package/lib/manifest/custom-object-page-layout.mjs +122 -9
- package/lib/manifest/custom-object-page-layout.mjs.map +1 -1
- package/lib/manifest/custom-object.d.mts +30 -1
- package/lib/manifest/custom-object.d.mts.map +1 -1
- package/lib/manifest/custom-object.d.ts +30 -1
- package/lib/manifest/custom-object.d.ts.map +1 -1
- package/lib/manifest/custom-object.js +15 -1
- package/lib/manifest/custom-object.js.map +1 -1
- package/lib/manifest/custom-object.mjs +15 -1
- package/lib/manifest/custom-object.mjs.map +1 -1
- package/lib/manifest/field.d.mts +25 -3
- package/lib/manifest/field.d.mts.map +1 -1
- package/lib/manifest/field.d.ts +25 -3
- package/lib/manifest/field.d.ts.map +1 -1
- package/lib/manifest/field.js +28 -2
- package/lib/manifest/field.js.map +1 -1
- package/lib/manifest/field.mjs +28 -2
- 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.map +1 -1
- package/lib/manifest/manifest-builder.d.mts +1 -1
- package/lib/manifest/manifest-builder.d.ts +1 -1
- package/lib/manifest/manifest-builder.js +1 -1
- package/lib/manifest/manifest-builder.mjs +1 -1
- package/lib/manifest/manifest-function.d.mts +8 -2
- package/lib/manifest/manifest-function.d.mts.map +1 -1
- package/lib/manifest/manifest-function.d.ts +8 -2
- package/lib/manifest/manifest-function.d.ts.map +1 -1
- package/lib/manifest/manifest-function.js +8 -2
- package/lib/manifest/manifest-function.js.map +1 -1
- package/lib/manifest/manifest-function.mjs +8 -2
- package/lib/manifest/manifest-function.mjs.map +1 -1
- package/lib/sdui/actions.d.mts.map +1 -1
- package/lib/sdui/actions.d.ts.map +1 -1
- package/lib/sdui/actions.js +23 -13
- package/lib/sdui/actions.js.map +1 -1
- package/lib/sdui/actions.mjs +23 -13
- package/lib/sdui/actions.mjs.map +1 -1
- package/lib/sdui/component.d.mts +28 -11
- package/lib/sdui/component.d.mts.map +1 -1
- package/lib/sdui/component.d.ts +28 -11
- package/lib/sdui/component.d.ts.map +1 -1
- package/lib/sdui/component.js +69 -36
- package/lib/sdui/component.js.map +1 -1
- package/lib/sdui/component.mjs +69 -36
- package/lib/sdui/component.mjs.map +1 -1
- package/lib/sdui/components.d.mts +1141 -132
- package/lib/sdui/components.d.mts.map +1 -1
- package/lib/sdui/components.d.ts +1141 -132
- package/lib/sdui/components.d.ts.map +1 -1
- package/lib/sdui/components.js +834 -206
- package/lib/sdui/components.js.map +1 -1
- package/lib/sdui/components.mjs +830 -203
- package/lib/sdui/components.mjs.map +1 -1
- package/lib/sdui/directives.d.mts.map +1 -1
- package/lib/sdui/directives.d.ts.map +1 -1
- package/lib/sdui/directives.js +4 -1
- package/lib/sdui/directives.js.map +1 -1
- package/lib/sdui/directives.mjs +4 -1
- package/lib/sdui/directives.mjs.map +1 -1
- package/lib/sdui/index.d.mts +314 -261
- package/lib/sdui/index.d.mts.map +1 -1
- package/lib/sdui/index.d.ts +314 -261
- package/lib/sdui/index.d.ts.map +1 -1
- package/lib/sdui/index.js +255 -204
- package/lib/sdui/index.js.map +1 -1
- package/lib/sdui/index.mjs +128 -103
- package/lib/sdui/index.mjs.map +1 -1
- package/lib/sdui/propTypes.d.mts +6330 -0
- package/lib/sdui/propTypes.d.mts.map +1 -0
- package/lib/sdui/propTypes.d.ts +6330 -0
- package/lib/sdui/propTypes.d.ts.map +1 -0
- package/lib/sdui/propTypes.js +14 -0
- package/lib/sdui/propTypes.js.map +1 -0
- package/lib/sdui/propTypes.mjs +13 -0
- package/lib/sdui/propTypes.mjs.map +1 -0
- package/lib/sdui/render.d.mts +1 -1
- package/lib/sdui/render.d.mts.map +1 -1
- package/lib/sdui/render.d.ts +1 -1
- package/lib/sdui/render.d.ts.map +1 -1
- package/lib/sdui/render.js +11 -3
- package/lib/sdui/render.js.map +1 -1
- package/lib/sdui/render.mjs +11 -3
- package/lib/sdui/render.mjs.map +1 -1
- package/lib/sdui/state.d.mts.map +1 -1
- package/lib/sdui/state.d.ts.map +1 -1
- package/lib/sdui/state.js +3 -1
- package/lib/sdui/state.js.map +1 -1
- package/lib/sdui/state.mjs +3 -1
- package/lib/sdui/state.mjs.map +1 -1
- package/package.json +1 -1
- package/resources/company-legal-entities.d.mts +180 -0
- package/resources/company-legal-entities.d.mts.map +1 -0
- package/resources/company-legal-entities.d.ts +180 -0
- package/resources/company-legal-entities.d.ts.map +1 -0
- package/resources/company-legal-entities.js +30 -0
- package/resources/company-legal-entities.js.map +1 -0
- package/resources/company-legal-entities.mjs +26 -0
- package/resources/company-legal-entities.mjs.map +1 -0
- package/resources/earning-types.d.mts +1 -6
- package/resources/earning-types.d.mts.map +1 -1
- package/resources/earning-types.d.ts +1 -6
- package/resources/earning-types.d.ts.map +1 -1
- package/resources/earning-types.js +1 -1
- package/resources/earning-types.mjs +1 -1
- package/resources/earnings-inputs.d.mts +1 -1
- package/resources/earnings-inputs.d.ts +1 -1
- package/resources/earnings-inputs.js +1 -1
- package/resources/earnings-inputs.mjs +1 -1
- package/resources/index.d.mts +2 -1
- package/resources/index.d.mts.map +1 -1
- package/resources/index.d.ts +2 -1
- package/resources/index.d.ts.map +1 -1
- package/resources/index.js +5 -3
- package/resources/index.js.map +1 -1
- package/resources/index.mjs +2 -1
- package/resources/index.mjs.map +1 -1
- package/resources/legal-entities.d.mts +1 -1
- package/resources/legal-entities.d.mts.map +1 -1
- package/resources/legal-entities.d.ts +1 -1
- package/resources/legal-entities.d.ts.map +1 -1
- package/resources/payroll-runs/index.d.mts +3 -0
- package/resources/payroll-runs/index.d.mts.map +1 -0
- package/resources/payroll-runs/index.d.ts +3 -0
- package/resources/payroll-runs/index.d.ts.map +1 -0
- package/resources/payroll-runs/index.js +9 -0
- package/resources/payroll-runs/index.js.map +1 -0
- package/resources/payroll-runs/index.mjs +4 -0
- package/resources/payroll-runs/index.mjs.map +1 -0
- package/resources/payroll-runs/payroll-runs.d.mts +199 -0
- package/resources/payroll-runs/payroll-runs.d.mts.map +1 -0
- package/resources/payroll-runs/payroll-runs.d.ts +199 -0
- package/resources/payroll-runs/payroll-runs.d.ts.map +1 -0
- package/resources/payroll-runs/payroll-runs.js +40 -0
- package/resources/payroll-runs/payroll-runs.js.map +1 -0
- package/resources/payroll-runs/payroll-runs.mjs +35 -0
- package/resources/payroll-runs/payroll-runs.mjs.map +1 -0
- package/resources/payroll-runs/worker-payroll-records.d.mts +200 -0
- package/resources/payroll-runs/worker-payroll-records.d.mts.map +1 -0
- package/resources/payroll-runs/worker-payroll-records.d.ts +200 -0
- package/resources/payroll-runs/worker-payroll-records.d.ts.map +1 -0
- package/resources/payroll-runs/worker-payroll-records.js +23 -0
- package/resources/payroll-runs/worker-payroll-records.js.map +1 -0
- package/resources/payroll-runs/worker-payroll-records.mjs +19 -0
- package/resources/payroll-runs/worker-payroll-records.mjs.map +1 -0
- package/resources/payroll-runs.d.mts +1 -194
- package/resources/payroll-runs.d.mts.map +1 -1
- package/resources/payroll-runs.d.ts +1 -194
- package/resources/payroll-runs.d.ts.map +1 -1
- package/resources/payroll-runs.js +2 -28
- package/resources/payroll-runs.js.map +1 -1
- package/resources/payroll-runs.mjs +1 -26
- package/resources/payroll-runs.mjs.map +1 -1
- package/src/client.ts +27 -7
- package/src/internal/utils/log.ts +2 -0
- package/src/lib/manifest/category.ts +7 -5
- package/src/lib/manifest/custom-object-field-section.ts +7 -0
- package/src/lib/manifest/custom-object-page-layout.ts +225 -18
- package/src/lib/manifest/custom-object.ts +30 -1
- package/src/lib/manifest/field.ts +29 -3
- package/src/lib/manifest/index.ts +2 -0
- package/src/lib/manifest/manifest-builder.ts +1 -1
- package/src/lib/manifest/manifest-function.ts +8 -2
- package/src/lib/sdui/actions.ts +23 -10
- package/src/lib/sdui/component.ts +84 -44
- package/src/lib/sdui/components.ts +1627 -212
- package/src/lib/sdui/directives.ts +4 -1
- package/src/lib/sdui/index.ts +565 -200
- package/src/lib/sdui/propTypes.ts +8470 -0
- package/src/lib/sdui/render.ts +13 -5
- package/src/lib/sdui/state.ts +8 -2
- package/src/resources/company-legal-entities.ts +237 -0
- package/src/resources/earning-types.ts +1 -7
- package/src/resources/earnings-inputs.ts +1 -1
- package/src/resources/index.ts +8 -1
- package/src/resources/legal-entities.ts +1 -1
- package/src/resources/payroll-runs/index.ts +15 -0
- package/src/resources/payroll-runs/payroll-runs.ts +270 -0
- package/src/resources/payroll-runs/worker-payroll-records.ts +255 -0
- package/src/resources/payroll-runs.ts +1 -249
- 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
|
@@ -2,6 +2,115 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.CustomObjectPageLayout = void 0;
|
|
4
4
|
const _helpers_1 = require("./_helpers.js");
|
|
5
|
+
const custom_object_field_section_1 = require("./custom-object-field-section.js");
|
|
6
|
+
function isField(value) {
|
|
7
|
+
const candidate = value;
|
|
8
|
+
return (candidate != null &&
|
|
9
|
+
typeof candidate.getApiName === 'function' &&
|
|
10
|
+
typeof candidate.getCustomObjectApiName === 'function' &&
|
|
11
|
+
typeof candidate.getSectionId === 'function' &&
|
|
12
|
+
typeof candidate._assignSection === 'function');
|
|
13
|
+
}
|
|
14
|
+
function isFieldRef(value) {
|
|
15
|
+
const candidate = value;
|
|
16
|
+
return candidate != null && typeof candidate === 'object' && isField(candidate.field);
|
|
17
|
+
}
|
|
18
|
+
function assertSameObject(customObject, field, sectionKey) {
|
|
19
|
+
if (field.getCustomObjectApiName() !== customObject.getApiName()) {
|
|
20
|
+
throw new Error(`CustomObjectPageLayout fields_section "${sectionKey}" references field "${field.getApiName()}" ` +
|
|
21
|
+
`from "${field.getCustomObjectApiName()}", but the layout belongs to "${customObject.getApiName()}".`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function assertSectionBelongsTo(customObject, section) {
|
|
25
|
+
if (section.getModelApiName() !== customObject.getApiName()) {
|
|
26
|
+
throw new Error(`CustomObjectPageLayout section "${section.getSectionId()}" belongs to "${section.getModelApiName()}", ` +
|
|
27
|
+
`but the layout belongs to "${customObject.getApiName()}".`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
function toSerializedSectionField(fieldRqlName, options = {}) {
|
|
31
|
+
const normalized = { fieldRqlName };
|
|
32
|
+
if (options.hidden != null)
|
|
33
|
+
normalized.hidden = options.hidden;
|
|
34
|
+
if (options.editable != null)
|
|
35
|
+
normalized.editable = options.editable;
|
|
36
|
+
if (options.movementOption != null)
|
|
37
|
+
normalized.movementOption = options.movementOption;
|
|
38
|
+
return normalized;
|
|
39
|
+
}
|
|
40
|
+
function normalizeSectionField(customObject, section, sectionKey, entry) {
|
|
41
|
+
if (isField(entry)) {
|
|
42
|
+
assertSameObject(customObject, entry, sectionKey);
|
|
43
|
+
entry._assignSection(section);
|
|
44
|
+
return toSerializedSectionField(entry.getApiName());
|
|
45
|
+
}
|
|
46
|
+
if (isFieldRef(entry)) {
|
|
47
|
+
assertSameObject(customObject, entry.field, sectionKey);
|
|
48
|
+
entry.field._assignSection(section);
|
|
49
|
+
return toSerializedSectionField(entry.field.getApiName(), entry);
|
|
50
|
+
}
|
|
51
|
+
throw new Error(`CustomObjectPageLayout fields_section "${sectionKey}" has an invalid field entry; ` +
|
|
52
|
+
'pass a Field instance or { field }.');
|
|
53
|
+
}
|
|
54
|
+
function normalizeFieldsSection(customObject, input) {
|
|
55
|
+
assertSectionBelongsTo(customObject, input.section);
|
|
56
|
+
const key = input.key ?? input.section.getSectionId();
|
|
57
|
+
const name = input.name ?? input.section.getName();
|
|
58
|
+
const normalized = {
|
|
59
|
+
key,
|
|
60
|
+
name,
|
|
61
|
+
type: 'fields_section',
|
|
62
|
+
fields: input.fields.map((field) => normalizeSectionField(customObject, input.section, key, field)),
|
|
63
|
+
};
|
|
64
|
+
if (input.layout != null)
|
|
65
|
+
normalized.layout = input.layout;
|
|
66
|
+
return normalized;
|
|
67
|
+
}
|
|
68
|
+
function normalizeTab(customObject, tab) {
|
|
69
|
+
if (tab.type === 'custom_tab')
|
|
70
|
+
return tab;
|
|
71
|
+
return {
|
|
72
|
+
...tab,
|
|
73
|
+
sections: tab.sections.map((section) => normalizeFieldsSection(customObject, section)),
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
function normalizeSystemSectionEdit(customObject, tabKey, sectionKey, edit) {
|
|
77
|
+
const { newFields: _newFields, ...rest } = edit;
|
|
78
|
+
const normalized = { ...rest };
|
|
79
|
+
if (edit.newFields != null) {
|
|
80
|
+
normalized.newFields = edit.newFields.map((field) => normalizeSectionField(customObject, sectionKey, `${tabKey}.${sectionKey}`, field));
|
|
81
|
+
}
|
|
82
|
+
return normalized;
|
|
83
|
+
}
|
|
84
|
+
function normalizeSystemTabEdit(customObject, tabKey, edit) {
|
|
85
|
+
const { newSections: _newSections, systemSectionEdits: _systemSectionEdits, ...rest } = edit;
|
|
86
|
+
const normalized = { ...rest };
|
|
87
|
+
if (edit.newSections != null) {
|
|
88
|
+
normalized.newSections = edit.newSections.map((section) => normalizeFieldsSection(customObject, section));
|
|
89
|
+
}
|
|
90
|
+
if (edit.systemSectionEdits != null) {
|
|
91
|
+
const systemSectionEdits = {};
|
|
92
|
+
for (const [sectionKey, sectionEdit] of Object.entries(edit.systemSectionEdits)) {
|
|
93
|
+
systemSectionEdits[sectionKey] = normalizeSystemSectionEdit(customObject, tabKey, sectionKey, sectionEdit);
|
|
94
|
+
}
|
|
95
|
+
normalized.systemSectionEdits = systemSectionEdits;
|
|
96
|
+
}
|
|
97
|
+
return normalized;
|
|
98
|
+
}
|
|
99
|
+
function normalizeTabEdits(customObject, tabEdits) {
|
|
100
|
+
const { newTabs: _newTabs, systemTabEdits: _systemTabEdits, ...rest } = tabEdits;
|
|
101
|
+
const normalized = { ...rest };
|
|
102
|
+
if (tabEdits.newTabs != null) {
|
|
103
|
+
normalized.newTabs = tabEdits.newTabs.map((tab) => normalizeTab(customObject, tab));
|
|
104
|
+
}
|
|
105
|
+
if (tabEdits.systemTabEdits != null) {
|
|
106
|
+
const systemTabEdits = {};
|
|
107
|
+
for (const [tabKey, tabEdit] of Object.entries(tabEdits.systemTabEdits)) {
|
|
108
|
+
systemTabEdits[tabKey] = normalizeSystemTabEdit(customObject, tabKey, tabEdit);
|
|
109
|
+
}
|
|
110
|
+
normalized.systemTabEdits = systemTabEdits;
|
|
111
|
+
}
|
|
112
|
+
return normalized;
|
|
113
|
+
}
|
|
5
114
|
// ---------------------------------------------------------------------------
|
|
6
115
|
// Class
|
|
7
116
|
// ---------------------------------------------------------------------------
|
|
@@ -29,11 +138,11 @@ const _helpers_1 = require("./_helpers.js");
|
|
|
29
138
|
* newTabs: [{
|
|
30
139
|
* key: 'member', name: 'Member', type: 'tab_with_sections',
|
|
31
140
|
* sections: [{
|
|
32
|
-
* key: 'profile',
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
* ],
|
|
141
|
+
* key: 'profile',
|
|
142
|
+
* name: 'Profile',
|
|
143
|
+
* type: 'fields_section',
|
|
144
|
+
* section: profileSection,
|
|
145
|
+
* fields: [memberFirstName, memberEmail],
|
|
37
146
|
* }],
|
|
38
147
|
* }],
|
|
39
148
|
* systemTabEdits: {},
|
|
@@ -60,7 +169,7 @@ class CustomObjectPageLayout {
|
|
|
60
169
|
this._apiName = props.apiName;
|
|
61
170
|
this._customObjectApiName = customObject.getApiName();
|
|
62
171
|
this._name = props.name;
|
|
63
|
-
this._tabEdits = props.tabEdits ?? {};
|
|
172
|
+
this._tabEdits = normalizeTabEdits(customObject, props.tabEdits ?? {});
|
|
64
173
|
this._headerEdits = props.headerEdits ?? {};
|
|
65
174
|
this._visibilityConditions = props.visibilityConditions ?? {};
|
|
66
175
|
this._blueprintKey = props.blueprintKey;
|
|
@@ -125,6 +234,11 @@ class CustomObjectPageLayout {
|
|
|
125
234
|
static basic(customObject, props = {}) {
|
|
126
235
|
const coApiName = customObject.getApiName();
|
|
127
236
|
const coName = customObject.getName();
|
|
237
|
+
const sectionPrefix = coApiName.replace(/__c$/, '').replace(/[^a-zA-Z0-9]+/g, '_');
|
|
238
|
+
const generalSection = new custom_object_field_section_1.CustomObjectFieldSection(customObject, {
|
|
239
|
+
sectionId: `sec_${sectionPrefix}_general`,
|
|
240
|
+
name: 'General',
|
|
241
|
+
});
|
|
128
242
|
return new CustomObjectPageLayout(customObject, {
|
|
129
243
|
apiName: 'default',
|
|
130
244
|
name: `${coName} Layout`,
|
|
@@ -139,9 +253,8 @@ class CustomObjectPageLayout {
|
|
|
139
253
|
key: 'general',
|
|
140
254
|
name: 'General',
|
|
141
255
|
type: 'fields_section',
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
})),
|
|
256
|
+
section: generalSection,
|
|
257
|
+
fields: props.fields ?? [],
|
|
145
258
|
},
|
|
146
259
|
],
|
|
147
260
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custom-object-page-layout.js","sourceRoot":"","sources":["../../src/lib/manifest/custom-object-page-layout.ts"],"names":[],"mappings":";;;AAAA,4CAAwC;
|
|
1
|
+
{"version":3,"file":"custom-object-page-layout.js","sourceRoot":"","sources":["../../src/lib/manifest/custom-object-page-layout.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,113 @@
|
|
|
1
1
|
import { generateId } from "./_helpers.mjs";
|
|
2
|
+
import { CustomObjectFieldSection } from "./custom-object-field-section.mjs";
|
|
3
|
+
function isField(value) {
|
|
4
|
+
const candidate = value;
|
|
5
|
+
return (candidate != null &&
|
|
6
|
+
typeof candidate.getApiName === 'function' &&
|
|
7
|
+
typeof candidate.getCustomObjectApiName === 'function' &&
|
|
8
|
+
typeof candidate.getSectionId === 'function' &&
|
|
9
|
+
typeof candidate._assignSection === 'function');
|
|
10
|
+
}
|
|
11
|
+
function isFieldRef(value) {
|
|
12
|
+
const candidate = value;
|
|
13
|
+
return candidate != null && typeof candidate === 'object' && isField(candidate.field);
|
|
14
|
+
}
|
|
15
|
+
function assertSameObject(customObject, field, sectionKey) {
|
|
16
|
+
if (field.getCustomObjectApiName() !== customObject.getApiName()) {
|
|
17
|
+
throw new Error(`CustomObjectPageLayout fields_section "${sectionKey}" references field "${field.getApiName()}" ` +
|
|
18
|
+
`from "${field.getCustomObjectApiName()}", but the layout belongs to "${customObject.getApiName()}".`);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
function assertSectionBelongsTo(customObject, section) {
|
|
22
|
+
if (section.getModelApiName() !== customObject.getApiName()) {
|
|
23
|
+
throw new Error(`CustomObjectPageLayout section "${section.getSectionId()}" belongs to "${section.getModelApiName()}", ` +
|
|
24
|
+
`but the layout belongs to "${customObject.getApiName()}".`);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
function toSerializedSectionField(fieldRqlName, options = {}) {
|
|
28
|
+
const normalized = { fieldRqlName };
|
|
29
|
+
if (options.hidden != null)
|
|
30
|
+
normalized.hidden = options.hidden;
|
|
31
|
+
if (options.editable != null)
|
|
32
|
+
normalized.editable = options.editable;
|
|
33
|
+
if (options.movementOption != null)
|
|
34
|
+
normalized.movementOption = options.movementOption;
|
|
35
|
+
return normalized;
|
|
36
|
+
}
|
|
37
|
+
function normalizeSectionField(customObject, section, sectionKey, entry) {
|
|
38
|
+
if (isField(entry)) {
|
|
39
|
+
assertSameObject(customObject, entry, sectionKey);
|
|
40
|
+
entry._assignSection(section);
|
|
41
|
+
return toSerializedSectionField(entry.getApiName());
|
|
42
|
+
}
|
|
43
|
+
if (isFieldRef(entry)) {
|
|
44
|
+
assertSameObject(customObject, entry.field, sectionKey);
|
|
45
|
+
entry.field._assignSection(section);
|
|
46
|
+
return toSerializedSectionField(entry.field.getApiName(), entry);
|
|
47
|
+
}
|
|
48
|
+
throw new Error(`CustomObjectPageLayout fields_section "${sectionKey}" has an invalid field entry; ` +
|
|
49
|
+
'pass a Field instance or { field }.');
|
|
50
|
+
}
|
|
51
|
+
function normalizeFieldsSection(customObject, input) {
|
|
52
|
+
assertSectionBelongsTo(customObject, input.section);
|
|
53
|
+
const key = input.key ?? input.section.getSectionId();
|
|
54
|
+
const name = input.name ?? input.section.getName();
|
|
55
|
+
const normalized = {
|
|
56
|
+
key,
|
|
57
|
+
name,
|
|
58
|
+
type: 'fields_section',
|
|
59
|
+
fields: input.fields.map((field) => normalizeSectionField(customObject, input.section, key, field)),
|
|
60
|
+
};
|
|
61
|
+
if (input.layout != null)
|
|
62
|
+
normalized.layout = input.layout;
|
|
63
|
+
return normalized;
|
|
64
|
+
}
|
|
65
|
+
function normalizeTab(customObject, tab) {
|
|
66
|
+
if (tab.type === 'custom_tab')
|
|
67
|
+
return tab;
|
|
68
|
+
return {
|
|
69
|
+
...tab,
|
|
70
|
+
sections: tab.sections.map((section) => normalizeFieldsSection(customObject, section)),
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
function normalizeSystemSectionEdit(customObject, tabKey, sectionKey, edit) {
|
|
74
|
+
const { newFields: _newFields, ...rest } = edit;
|
|
75
|
+
const normalized = { ...rest };
|
|
76
|
+
if (edit.newFields != null) {
|
|
77
|
+
normalized.newFields = edit.newFields.map((field) => normalizeSectionField(customObject, sectionKey, `${tabKey}.${sectionKey}`, field));
|
|
78
|
+
}
|
|
79
|
+
return normalized;
|
|
80
|
+
}
|
|
81
|
+
function normalizeSystemTabEdit(customObject, tabKey, edit) {
|
|
82
|
+
const { newSections: _newSections, systemSectionEdits: _systemSectionEdits, ...rest } = edit;
|
|
83
|
+
const normalized = { ...rest };
|
|
84
|
+
if (edit.newSections != null) {
|
|
85
|
+
normalized.newSections = edit.newSections.map((section) => normalizeFieldsSection(customObject, section));
|
|
86
|
+
}
|
|
87
|
+
if (edit.systemSectionEdits != null) {
|
|
88
|
+
const systemSectionEdits = {};
|
|
89
|
+
for (const [sectionKey, sectionEdit] of Object.entries(edit.systemSectionEdits)) {
|
|
90
|
+
systemSectionEdits[sectionKey] = normalizeSystemSectionEdit(customObject, tabKey, sectionKey, sectionEdit);
|
|
91
|
+
}
|
|
92
|
+
normalized.systemSectionEdits = systemSectionEdits;
|
|
93
|
+
}
|
|
94
|
+
return normalized;
|
|
95
|
+
}
|
|
96
|
+
function normalizeTabEdits(customObject, tabEdits) {
|
|
97
|
+
const { newTabs: _newTabs, systemTabEdits: _systemTabEdits, ...rest } = tabEdits;
|
|
98
|
+
const normalized = { ...rest };
|
|
99
|
+
if (tabEdits.newTabs != null) {
|
|
100
|
+
normalized.newTabs = tabEdits.newTabs.map((tab) => normalizeTab(customObject, tab));
|
|
101
|
+
}
|
|
102
|
+
if (tabEdits.systemTabEdits != null) {
|
|
103
|
+
const systemTabEdits = {};
|
|
104
|
+
for (const [tabKey, tabEdit] of Object.entries(tabEdits.systemTabEdits)) {
|
|
105
|
+
systemTabEdits[tabKey] = normalizeSystemTabEdit(customObject, tabKey, tabEdit);
|
|
106
|
+
}
|
|
107
|
+
normalized.systemTabEdits = systemTabEdits;
|
|
108
|
+
}
|
|
109
|
+
return normalized;
|
|
110
|
+
}
|
|
2
111
|
// ---------------------------------------------------------------------------
|
|
3
112
|
// Class
|
|
4
113
|
// ---------------------------------------------------------------------------
|
|
@@ -26,11 +135,11 @@ import { generateId } from "./_helpers.mjs";
|
|
|
26
135
|
* newTabs: [{
|
|
27
136
|
* key: 'member', name: 'Member', type: 'tab_with_sections',
|
|
28
137
|
* sections: [{
|
|
29
|
-
* key: 'profile',
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
* ],
|
|
138
|
+
* key: 'profile',
|
|
139
|
+
* name: 'Profile',
|
|
140
|
+
* type: 'fields_section',
|
|
141
|
+
* section: profileSection,
|
|
142
|
+
* fields: [memberFirstName, memberEmail],
|
|
34
143
|
* }],
|
|
35
144
|
* }],
|
|
36
145
|
* systemTabEdits: {},
|
|
@@ -57,7 +166,7 @@ export class CustomObjectPageLayout {
|
|
|
57
166
|
this._apiName = props.apiName;
|
|
58
167
|
this._customObjectApiName = customObject.getApiName();
|
|
59
168
|
this._name = props.name;
|
|
60
|
-
this._tabEdits = props.tabEdits ?? {};
|
|
169
|
+
this._tabEdits = normalizeTabEdits(customObject, props.tabEdits ?? {});
|
|
61
170
|
this._headerEdits = props.headerEdits ?? {};
|
|
62
171
|
this._visibilityConditions = props.visibilityConditions ?? {};
|
|
63
172
|
this._blueprintKey = props.blueprintKey;
|
|
@@ -122,6 +231,11 @@ export class CustomObjectPageLayout {
|
|
|
122
231
|
static basic(customObject, props = {}) {
|
|
123
232
|
const coApiName = customObject.getApiName();
|
|
124
233
|
const coName = customObject.getName();
|
|
234
|
+
const sectionPrefix = coApiName.replace(/__c$/, '').replace(/[^a-zA-Z0-9]+/g, '_');
|
|
235
|
+
const generalSection = new CustomObjectFieldSection(customObject, {
|
|
236
|
+
sectionId: `sec_${sectionPrefix}_general`,
|
|
237
|
+
name: 'General',
|
|
238
|
+
});
|
|
125
239
|
return new CustomObjectPageLayout(customObject, {
|
|
126
240
|
apiName: 'default',
|
|
127
241
|
name: `${coName} Layout`,
|
|
@@ -136,9 +250,8 @@ export class CustomObjectPageLayout {
|
|
|
136
250
|
key: 'general',
|
|
137
251
|
name: 'General',
|
|
138
252
|
type: 'fields_section',
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
})),
|
|
253
|
+
section: generalSection,
|
|
254
|
+
fields: props.fields ?? [],
|
|
142
255
|
},
|
|
143
256
|
],
|
|
144
257
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custom-object-page-layout.mjs","sourceRoot":"","sources":["../../src/lib/manifest/custom-object-page-layout.ts"],"names":[],"mappings":"OAAO,EAAE,UAAU,EAAE;
|
|
1
|
+
{"version":3,"file":"custom-object-page-layout.mjs","sourceRoot":"","sources":["../../src/lib/manifest/custom-object-page-layout.ts"],"names":[],"mappings":"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"}
|
|
@@ -75,6 +75,21 @@ export interface CustomObjectProps {
|
|
|
75
75
|
* Overrides for the auto-number name field — controls the format string and starting number.
|
|
76
76
|
* Leave `null` to use the default name field behavior.
|
|
77
77
|
*
|
|
78
|
+
* Example:
|
|
79
|
+
* ```ts
|
|
80
|
+
* nameFieldDetails: {
|
|
81
|
+
* is_autonumber_field: true,
|
|
82
|
+
* starting_number: 1,
|
|
83
|
+
* autonumber_format: 'EXP-{0000}',
|
|
84
|
+
* }
|
|
85
|
+
* ```
|
|
86
|
+
*
|
|
87
|
+
* @remarks
|
|
88
|
+
* The backend auto-appends `{0000}` to `autonumber_format` if the format string
|
|
89
|
+
* doesn't already contain a sequence token — so `'EXP-'` becomes `'EXP-{0000}'`
|
|
90
|
+
* on the wire. Include the token explicitly when you want a different width
|
|
91
|
+
* (e.g. `'EXP-{00000}'`).
|
|
92
|
+
*
|
|
78
93
|
* Optional. @default null
|
|
79
94
|
*/
|
|
80
95
|
nameFieldDetails?: Record<string, any> | null;
|
|
@@ -100,7 +115,7 @@ export interface CustomObjectProps {
|
|
|
100
115
|
* name: 'Gym Membership Management',
|
|
101
116
|
* });
|
|
102
117
|
*
|
|
103
|
-
* const gymCategory = new Category(manifest, { apiName: 'gym__c', name: 'Gym' });
|
|
118
|
+
* const gymCategory = new Category(manifest, { apiName: 'gym__c', name: 'Gym', description: 'Gym domain' });
|
|
104
119
|
*
|
|
105
120
|
* const memberObj = new CustomObject(manifest, {
|
|
106
121
|
* apiName: 'gym_member__c',
|
|
@@ -125,6 +140,20 @@ export interface CustomObjectProps {
|
|
|
125
140
|
* with `DEPENDENCY_ERROR: Page layout config for CO (api_name=...) not found in package
|
|
126
141
|
* configs. CO requires at least one page layout in the package.`
|
|
127
142
|
* Use {@link CustomObjectPageLayout.basic} for a minimal single-tab layout.
|
|
143
|
+
*
|
|
144
|
+
* **Consider defining at least one {@link ListViewDef}.** Without a list view,
|
|
145
|
+
* the records page has nothing to display by default — users land on an empty grid.
|
|
146
|
+
* Consider shipping a "default" view with the columns most users want to see
|
|
147
|
+
* (typically `name`, the status / category field, owner, and `created_at`), sorted
|
|
148
|
+
* however the records are most commonly browsed.
|
|
149
|
+
*
|
|
150
|
+
* **Consider system fields before authoring new ones.** Every CO ships with
|
|
151
|
+
* `owner_role`, `created_by`, and `last_modified_by` (all `Employee` references),
|
|
152
|
+
* plus `name`, `created_at`, `updated_at`, `external_id`, and `id`. For any
|
|
153
|
+
* "the employee responsible for this record" semantics, consider using
|
|
154
|
+
* `owner_role` rather than adding a new {@link LookupField} targeting `'role'`.
|
|
155
|
+
* `owner_role` drives Rippling's record-level permissions, so a parallel field
|
|
156
|
+
* can fragment ownership and complicate the permission story.
|
|
128
157
|
*/
|
|
129
158
|
export declare class CustomObject implements ManifestScope {
|
|
130
159
|
private readonly _scope;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custom-object.d.mts","sourceRoot":"","sources":["../../src/lib/manifest/custom-object.ts"],"names":[],"mappings":"OAAO,EAAE,QAAQ,EAAE;OACZ,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE;AA4IhD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;OAKG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC5B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B;;;;OAIG;IACH,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IACzB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B
|
|
1
|
+
{"version":3,"file":"custom-object.d.mts","sourceRoot":"","sources":["../../src/lib/manifest/custom-object.ts"],"names":[],"mappings":"OAAO,EAAE,QAAQ,EAAE;OACZ,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE;AA4IhD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;OAKG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC5B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B;;;;OAIG;IACH,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IACzB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IAC9C;;;;OAIG;IACH,uBAAuB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AACH,qBAAa,YAAa,YAAW,aAAa;IAChD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoB;IAC9C,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,KAAK,CAAgC;IAC7C,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,iBAAiB,CAAyC;IAClE,OAAO,CAAC,wBAAwB,CAA4B;IAE5D;;;;OAIG;gBACS,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,iBAAiB;IAqB1D,iFAAiF;IACjF,SAAS,CAAC,SAAS,EAAE,iBAAiB,GAAG,IAAI;IAI7C;;;;OAIG;IACH,UAAU,IAAI,MAAM;IAIpB;;OAEG;IACH,OAAO,IAAI,MAAM;IAIjB;;;;;OAKG;IACH,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CA0B9B"}
|
|
@@ -75,6 +75,21 @@ export interface CustomObjectProps {
|
|
|
75
75
|
* Overrides for the auto-number name field — controls the format string and starting number.
|
|
76
76
|
* Leave `null` to use the default name field behavior.
|
|
77
77
|
*
|
|
78
|
+
* Example:
|
|
79
|
+
* ```ts
|
|
80
|
+
* nameFieldDetails: {
|
|
81
|
+
* is_autonumber_field: true,
|
|
82
|
+
* starting_number: 1,
|
|
83
|
+
* autonumber_format: 'EXP-{0000}',
|
|
84
|
+
* }
|
|
85
|
+
* ```
|
|
86
|
+
*
|
|
87
|
+
* @remarks
|
|
88
|
+
* The backend auto-appends `{0000}` to `autonumber_format` if the format string
|
|
89
|
+
* doesn't already contain a sequence token — so `'EXP-'` becomes `'EXP-{0000}'`
|
|
90
|
+
* on the wire. Include the token explicitly when you want a different width
|
|
91
|
+
* (e.g. `'EXP-{00000}'`).
|
|
92
|
+
*
|
|
78
93
|
* Optional. @default null
|
|
79
94
|
*/
|
|
80
95
|
nameFieldDetails?: Record<string, any> | null;
|
|
@@ -100,7 +115,7 @@ export interface CustomObjectProps {
|
|
|
100
115
|
* name: 'Gym Membership Management',
|
|
101
116
|
* });
|
|
102
117
|
*
|
|
103
|
-
* const gymCategory = new Category(manifest, { apiName: 'gym__c', name: 'Gym' });
|
|
118
|
+
* const gymCategory = new Category(manifest, { apiName: 'gym__c', name: 'Gym', description: 'Gym domain' });
|
|
104
119
|
*
|
|
105
120
|
* const memberObj = new CustomObject(manifest, {
|
|
106
121
|
* apiName: 'gym_member__c',
|
|
@@ -125,6 +140,20 @@ export interface CustomObjectProps {
|
|
|
125
140
|
* with `DEPENDENCY_ERROR: Page layout config for CO (api_name=...) not found in package
|
|
126
141
|
* configs. CO requires at least one page layout in the package.`
|
|
127
142
|
* Use {@link CustomObjectPageLayout.basic} for a minimal single-tab layout.
|
|
143
|
+
*
|
|
144
|
+
* **Consider defining at least one {@link ListViewDef}.** Without a list view,
|
|
145
|
+
* the records page has nothing to display by default — users land on an empty grid.
|
|
146
|
+
* Consider shipping a "default" view with the columns most users want to see
|
|
147
|
+
* (typically `name`, the status / category field, owner, and `created_at`), sorted
|
|
148
|
+
* however the records are most commonly browsed.
|
|
149
|
+
*
|
|
150
|
+
* **Consider system fields before authoring new ones.** Every CO ships with
|
|
151
|
+
* `owner_role`, `created_by`, and `last_modified_by` (all `Employee` references),
|
|
152
|
+
* plus `name`, `created_at`, `updated_at`, `external_id`, and `id`. For any
|
|
153
|
+
* "the employee responsible for this record" semantics, consider using
|
|
154
|
+
* `owner_role` rather than adding a new {@link LookupField} targeting `'role'`.
|
|
155
|
+
* `owner_role` drives Rippling's record-level permissions, so a parallel field
|
|
156
|
+
* can fragment ownership and complicate the permission story.
|
|
128
157
|
*/
|
|
129
158
|
export declare class CustomObject implements ManifestScope {
|
|
130
159
|
private readonly _scope;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custom-object.d.ts","sourceRoot":"","sources":["../../src/lib/manifest/custom-object.ts"],"names":[],"mappings":"OAAO,EAAE,QAAQ,EAAE;OACZ,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE;AA4IhD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;OAKG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC5B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B;;;;OAIG;IACH,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IACzB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B
|
|
1
|
+
{"version":3,"file":"custom-object.d.ts","sourceRoot":"","sources":["../../src/lib/manifest/custom-object.ts"],"names":[],"mappings":"OAAO,EAAE,QAAQ,EAAE;OACZ,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE;AA4IhD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;OAKG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC5B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B;;;;OAIG;IACH,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IACzB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IAC9C;;;;OAIG;IACH,uBAAuB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AACH,qBAAa,YAAa,YAAW,aAAa;IAChD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoB;IAC9C,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,KAAK,CAAgC;IAC7C,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,iBAAiB,CAAyC;IAClE,OAAO,CAAC,wBAAwB,CAA4B;IAE5D;;;;OAIG;gBACS,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,iBAAiB;IAqB1D,iFAAiF;IACjF,SAAS,CAAC,SAAS,EAAE,iBAAiB,GAAG,IAAI;IAI7C;;;;OAIG;IACH,UAAU,IAAI,MAAM;IAIpB;;OAEG;IACH,OAAO,IAAI,MAAM;IAIjB;;;;;OAKG;IACH,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CA0B9B"}
|
|
@@ -142,7 +142,7 @@ class _StandardField {
|
|
|
142
142
|
* name: 'Gym Membership Management',
|
|
143
143
|
* });
|
|
144
144
|
*
|
|
145
|
-
* const gymCategory = new Category(manifest, { apiName: 'gym__c', name: 'Gym' });
|
|
145
|
+
* const gymCategory = new Category(manifest, { apiName: 'gym__c', name: 'Gym', description: 'Gym domain' });
|
|
146
146
|
*
|
|
147
147
|
* const memberObj = new CustomObject(manifest, {
|
|
148
148
|
* apiName: 'gym_member__c',
|
|
@@ -167,6 +167,20 @@ class _StandardField {
|
|
|
167
167
|
* with `DEPENDENCY_ERROR: Page layout config for CO (api_name=...) not found in package
|
|
168
168
|
* configs. CO requires at least one page layout in the package.`
|
|
169
169
|
* Use {@link CustomObjectPageLayout.basic} for a minimal single-tab layout.
|
|
170
|
+
*
|
|
171
|
+
* **Consider defining at least one {@link ListViewDef}.** Without a list view,
|
|
172
|
+
* the records page has nothing to display by default — users land on an empty grid.
|
|
173
|
+
* Consider shipping a "default" view with the columns most users want to see
|
|
174
|
+
* (typically `name`, the status / category field, owner, and `created_at`), sorted
|
|
175
|
+
* however the records are most commonly browsed.
|
|
176
|
+
*
|
|
177
|
+
* **Consider system fields before authoring new ones.** Every CO ships with
|
|
178
|
+
* `owner_role`, `created_by`, and `last_modified_by` (all `Employee` references),
|
|
179
|
+
* plus `name`, `created_at`, `updated_at`, `external_id`, and `id`. For any
|
|
180
|
+
* "the employee responsible for this record" semantics, consider using
|
|
181
|
+
* `owner_role` rather than adding a new {@link LookupField} targeting `'role'`.
|
|
182
|
+
* `owner_role` drives Rippling's record-level permissions, so a parallel field
|
|
183
|
+
* can fragment ownership and complicate the permission story.
|
|
170
184
|
*/
|
|
171
185
|
class CustomObject {
|
|
172
186
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custom-object.js","sourceRoot":"","sources":["../../src/lib/manifest/custom-object.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"custom-object.js","sourceRoot":"","sources":["../../src/lib/manifest/custom-object.ts"],"names":[],"mappings":"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"}
|
|
@@ -139,7 +139,7 @@ class _StandardField {
|
|
|
139
139
|
* name: 'Gym Membership Management',
|
|
140
140
|
* });
|
|
141
141
|
*
|
|
142
|
-
* const gymCategory = new Category(manifest, { apiName: 'gym__c', name: 'Gym' });
|
|
142
|
+
* const gymCategory = new Category(manifest, { apiName: 'gym__c', name: 'Gym', description: 'Gym domain' });
|
|
143
143
|
*
|
|
144
144
|
* const memberObj = new CustomObject(manifest, {
|
|
145
145
|
* apiName: 'gym_member__c',
|
|
@@ -164,6 +164,20 @@ class _StandardField {
|
|
|
164
164
|
* with `DEPENDENCY_ERROR: Page layout config for CO (api_name=...) not found in package
|
|
165
165
|
* configs. CO requires at least one page layout in the package.`
|
|
166
166
|
* Use {@link CustomObjectPageLayout.basic} for a minimal single-tab layout.
|
|
167
|
+
*
|
|
168
|
+
* **Consider defining at least one {@link ListViewDef}.** Without a list view,
|
|
169
|
+
* the records page has nothing to display by default — users land on an empty grid.
|
|
170
|
+
* Consider shipping a "default" view with the columns most users want to see
|
|
171
|
+
* (typically `name`, the status / category field, owner, and `created_at`), sorted
|
|
172
|
+
* however the records are most commonly browsed.
|
|
173
|
+
*
|
|
174
|
+
* **Consider system fields before authoring new ones.** Every CO ships with
|
|
175
|
+
* `owner_role`, `created_by`, and `last_modified_by` (all `Employee` references),
|
|
176
|
+
* plus `name`, `created_at`, `updated_at`, `external_id`, and `id`. For any
|
|
177
|
+
* "the employee responsible for this record" semantics, consider using
|
|
178
|
+
* `owner_role` rather than adding a new {@link LookupField} targeting `'role'`.
|
|
179
|
+
* `owner_role` drives Rippling's record-level permissions, so a parallel field
|
|
180
|
+
* can fragment ownership and complicate the permission story.
|
|
167
181
|
*/
|
|
168
182
|
export class CustomObject {
|
|
169
183
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custom-object.mjs","sourceRoot":"","sources":["../../src/lib/manifest/custom-object.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"custom-object.mjs","sourceRoot":"","sources":["../../src/lib/manifest/custom-object.ts"],"names":[],"mappings":"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"}
|