@pitcher/canvas-ui 2025.12.19-075910-beta → 2025.12.19-090420-beta
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/canvas-ui.css +17 -17
- package/canvas-ui.js +586 -64
- package/canvas-ui.js.map +1 -1
- package/lib/apps/canvas-builder/composables/useCanvas.d.ts +5 -0
- package/lib/composables/useSmartStore.d.ts +25 -0
- package/lib/main.lib.d.ts +2 -0
- package/lib/sdk/api/HighLevelApi.d.ts +1 -1
- package/lib/sdk/api/modules/query.d.ts +17 -21
- package/lib/sdk/main.d.ts +3 -3
- package/lib/sdk/payload.types.d.ts +0 -14
- package/lib/types/instanceSettings.types.d.ts +1 -0
- package/lib/util/smart-store.util.d.ts +40 -0
- package/lib/util/smart-store.util.spec.d.ts +1 -0
- package/locale/de.json +0 -1
- package/locale/el.json +0 -1
- package/locale/en.json +0 -1
- package/locale/es.json +0 -1
- package/locale/fr.json +0 -1
- package/locale/it.json +0 -1
- package/locale/ja.json +0 -1
- package/locale/nl.json +0 -1
- package/locale/pl.json +0 -1
- package/locale/pt-br.json +0 -1
- package/locale/pt.json +0 -1
- package/locale/th.json +0 -1
- package/locale/tr.json +0 -1
- package/locale/zh.json +0 -1
- package/package.json +1 -1
|
@@ -4865,6 +4865,7 @@ export default function useCanvas(): {
|
|
|
4865
4865
|
enable_recents?: boolean | undefined;
|
|
4866
4866
|
enable_favorites?: boolean | undefined;
|
|
4867
4867
|
enable_sync_file_filtering?: boolean | undefined;
|
|
4868
|
+
enable_sfdc_sync?: boolean | undefined;
|
|
4868
4869
|
time_format?: string | undefined;
|
|
4869
4870
|
date_format?: string | undefined;
|
|
4870
4871
|
is_file_expiration_mandatory?: boolean | undefined;
|
|
@@ -4907,6 +4908,7 @@ export default function useCanvas(): {
|
|
|
4907
4908
|
enable_multipeer_connectivity?: boolean;
|
|
4908
4909
|
enable_syncbox?: boolean;
|
|
4909
4910
|
enable_sync_file_filtering?: boolean;
|
|
4911
|
+
enable_sfdc_sync?: boolean;
|
|
4910
4912
|
time_format?: string;
|
|
4911
4913
|
date_format?: string;
|
|
4912
4914
|
is_file_expiration_mandatory?: boolean;
|
|
@@ -5195,6 +5197,7 @@ export default function useCanvas(): {
|
|
|
5195
5197
|
enable_recents?: boolean | undefined;
|
|
5196
5198
|
enable_favorites?: boolean | undefined;
|
|
5197
5199
|
enable_sync_file_filtering?: boolean | undefined;
|
|
5200
|
+
enable_sfdc_sync?: boolean | undefined;
|
|
5198
5201
|
time_format?: string | undefined;
|
|
5199
5202
|
date_format?: string | undefined;
|
|
5200
5203
|
is_file_expiration_mandatory?: boolean | undefined;
|
|
@@ -5517,6 +5520,7 @@ export default function useCanvas(): {
|
|
|
5517
5520
|
readonly enable_recents?: boolean | undefined;
|
|
5518
5521
|
readonly enable_favorites?: boolean | undefined;
|
|
5519
5522
|
readonly enable_sync_file_filtering?: boolean | undefined;
|
|
5523
|
+
readonly enable_sfdc_sync?: boolean | undefined;
|
|
5520
5524
|
readonly time_format?: string | undefined;
|
|
5521
5525
|
readonly date_format?: string | undefined;
|
|
5522
5526
|
readonly is_file_expiration_mandatory?: boolean | undefined;
|
|
@@ -5838,6 +5842,7 @@ export default function useCanvas(): {
|
|
|
5838
5842
|
readonly enable_recents?: boolean | undefined;
|
|
5839
5843
|
readonly enable_favorites?: boolean | undefined;
|
|
5840
5844
|
readonly enable_sync_file_filtering?: boolean | undefined;
|
|
5845
|
+
readonly enable_sfdc_sync?: boolean | undefined;
|
|
5841
5846
|
readonly time_format?: string | undefined;
|
|
5842
5847
|
readonly date_format?: string | undefined;
|
|
5843
5848
|
readonly is_file_expiration_mandatory?: boolean | undefined;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Ref } from 'vue';
|
|
2
|
+
import { PitcherEnv } from '../sdk/interfaces';
|
|
3
|
+
/**
|
|
4
|
+
* Composable for SmartStore availability checks
|
|
5
|
+
*
|
|
6
|
+
* SmartStore is Salesforce Mobile SDK's local database for offline data access on iOS.
|
|
7
|
+
* It requires both iOS mode and the enable_sfdc_sync instance setting to be enabled.
|
|
8
|
+
*
|
|
9
|
+
* @param env - Optional reactive environment object from app store (avoids redundant API calls)
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* // With app store env (recommended - avoids API calls)
|
|
13
|
+
* const appStore = useAppStore()
|
|
14
|
+
* const { shouldUseSmartStore } = useSmartStore(appStore.env)
|
|
15
|
+
* const enabled = shouldUseSmartStore.value
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* // Without env (for canvas-ui internal usage)
|
|
19
|
+
* const { generateTempSalesforceId } = useSmartStore()
|
|
20
|
+
* const tempId = generateTempSalesforceId('00U')
|
|
21
|
+
*/
|
|
22
|
+
export declare function useSmartStore(env?: Ref<PitcherEnv | null> | PitcherEnv | null): {
|
|
23
|
+
shouldUseSmartStore: import('vue').ComputedRef<boolean>;
|
|
24
|
+
generateTempSalesforceId: (objectPrefix: string) => string;
|
|
25
|
+
};
|
package/lib/main.lib.d.ts
CHANGED
|
@@ -137,6 +137,7 @@ export * as agendaSelector from './apps/agenda-selector/export';
|
|
|
137
137
|
export { default as useTheme } from './composables/useTheme';
|
|
138
138
|
export { default as useThemeVars } from './composables/useThemeVars';
|
|
139
139
|
export { default as useBindValidation } from './composables/useBindValidation';
|
|
140
|
+
export { useSmartStore } from './composables/useSmartStore';
|
|
140
141
|
export { default as useFileDisplayHelpers } from './composables/useFileDisplayHelpers';
|
|
141
142
|
export { default as useFolderNameDescription } from './composables/useFolderNameDescription';
|
|
142
143
|
export { default as useCanvasOverlay } from './composables/useCanvasOverlay';
|
|
@@ -196,6 +197,7 @@ export * from './util/storage.util';
|
|
|
196
197
|
export * from './util/handlebars';
|
|
197
198
|
export * from './apps/collection-selector/utils/content-selector-adapter.util';
|
|
198
199
|
export * from './util/soql.util.ts';
|
|
200
|
+
export * from './util/smart-store.util';
|
|
199
201
|
export * from './util/app.util';
|
|
200
202
|
export * from './utils/iframeInitialize';
|
|
201
203
|
export * from './sdk/main';
|
|
@@ -233,6 +233,7 @@ export declare function createHighLevelApi(options?: ApiOptions): {
|
|
|
233
233
|
}): Promise<void>;
|
|
234
234
|
query(payload: import('../payload.types').QueryPayload): Promise<any>;
|
|
235
235
|
crmQuery(payload: import('../payload.types').CRMQueryPayload): Promise<any>;
|
|
236
|
+
crmQueryAdaptive(payload: import('../payload.types').CRMQueryPayload): Promise<any>;
|
|
236
237
|
crmSmartQuery(payload: import('../payload.types').CRMQueryPayload): Promise<Array<any>>;
|
|
237
238
|
crmSmartObjectMetadata(payload: import('../payload.types').CRMSmartObjectMetadataPayload): Promise<any>;
|
|
238
239
|
crmSmartUpsertObjects(payload: import('../payload.types').UpsertCRMObjectsPayload): Promise<any>;
|
|
@@ -240,7 +241,6 @@ export declare function createHighLevelApi(options?: ApiOptions): {
|
|
|
240
241
|
crmSmartDeleteObjects(payload: import('../payload.types').CRMSmartDeleteObjectsPayload): Promise<any>;
|
|
241
242
|
crmCreate(payload: import('../payload.types').CRMCreatePayload): Promise<any>;
|
|
242
243
|
crmUpsert(payload: import('../payload.types').CRMUpsertPayload): Promise<any>;
|
|
243
|
-
crmDescribe(payload: import('../payload.types').CRMDescribePayload): Promise<any>;
|
|
244
244
|
getFolders(payload: import('../payload.types').FolderListRequest): Promise<import('../../main.lib').PaginatedFolderList>;
|
|
245
245
|
getFolder(payload?: {
|
|
246
246
|
id: import('../../main.lib').FolderRetrieve["id"];
|
|
@@ -1,6 +1,22 @@
|
|
|
1
|
-
import { QueryPayload, CRMQueryPayload, UpsertCRMObjectsPayload, CRMSmartObjectValidationRulesPayload, CRMSmartObjectMetadataPayload, CRMSmartDeleteObjectsPayload, CRMCreatePayload, CRMUpsertPayload
|
|
1
|
+
import { QueryPayload, CRMQueryPayload, UpsertCRMObjectsPayload, CRMSmartObjectValidationRulesPayload, CRMSmartObjectMetadataPayload, CRMSmartDeleteObjectsPayload, CRMCreatePayload, CRMUpsertPayload } from '../../payload.types';
|
|
2
2
|
export declare function query(payload: QueryPayload): Promise<any>;
|
|
3
3
|
export declare function crmQuery(payload: CRMQueryPayload): Promise<any>;
|
|
4
|
+
/**
|
|
5
|
+
* Executes a CRM query with automatic iOS/SmartStore adaptation.
|
|
6
|
+
*
|
|
7
|
+
* On iOS devices with the 'enable_sfdc_sync' instance setting enabled,
|
|
8
|
+
* this function automatically converts SOQL queries to SmartStore Smart SQL format
|
|
9
|
+
* and uses the local SmartStore for offline data access.
|
|
10
|
+
* On other platforms or when the setting is disabled, it uses the standard CRM query API.
|
|
11
|
+
*
|
|
12
|
+
* @param {CRMQueryPayload} payload - The query payload containing the SOQL query string.
|
|
13
|
+
* @returns {Promise<any>} - Promise resolving with query results.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* // Works on all platforms - automatically adapts for iOS with enable_sfdc_sync instance setting
|
|
17
|
+
* const result = await crmQueryAdaptive({ query: 'SELECT Id, Name FROM Account WHERE Active = true' })
|
|
18
|
+
*/
|
|
19
|
+
export declare function crmQueryAdaptive(payload: CRMQueryPayload): Promise<any>;
|
|
4
20
|
/**
|
|
5
21
|
* Executes a SmartStore query against local CRM data (iOS only).
|
|
6
22
|
* Uses Salesforce Mobile SDK SmartStore query syntax.
|
|
@@ -153,23 +169,3 @@ export declare function crmCreate(payload: CRMCreatePayload): Promise<any>;
|
|
|
153
169
|
* })
|
|
154
170
|
*/
|
|
155
171
|
export declare function crmUpsert(payload: CRMUpsertPayload): Promise<any>;
|
|
156
|
-
/**
|
|
157
|
-
* Retrieves metadata/describe for a CRM object (Web only).
|
|
158
|
-
* Uses Salesforce REST API to fetch object metadata including fields and picklist values.
|
|
159
|
-
*
|
|
160
|
-
* @param {CRMDescribePayload} payload - The describe payload containing the sobject name.
|
|
161
|
-
* @returns {Promise<any>} - Promise resolving with the object metadata including fields and picklist values.
|
|
162
|
-
* @throws {Error} - Throws an error if the payload is invalid.
|
|
163
|
-
*
|
|
164
|
-
* @example
|
|
165
|
-
* // Web only method to get CRM object metadata.
|
|
166
|
-
* api.crmDescribe({ sobject: 'Account' })
|
|
167
|
-
* .then(metadata => {
|
|
168
|
-
* // Access fields
|
|
169
|
-
* console.log(metadata.fields)
|
|
170
|
-
* // Access picklist values for a specific field
|
|
171
|
-
* const industryField = metadata.fields.find(f => f.name === 'Industry')
|
|
172
|
-
* console.log(industryField.picklistValues)
|
|
173
|
-
* })
|
|
174
|
-
*/
|
|
175
|
-
export declare function crmDescribe(payload: CRMDescribePayload): Promise<any>;
|
package/lib/sdk/main.d.ts
CHANGED
|
@@ -304,6 +304,7 @@ export declare function useApi(options?: ApiOptions): {
|
|
|
304
304
|
}): Promise<void>;
|
|
305
305
|
query(payload: import('./payload.types').QueryPayload): Promise<any>;
|
|
306
306
|
crmQuery(payload: import('./payload.types').CRMQueryPayload): Promise<any>;
|
|
307
|
+
crmQueryAdaptive(payload: import('./payload.types').CRMQueryPayload): Promise<any>;
|
|
307
308
|
crmSmartQuery(payload: import('./payload.types').CRMQueryPayload): Promise<Array<any>>;
|
|
308
309
|
crmSmartObjectMetadata(payload: import('./payload.types').CRMSmartObjectMetadataPayload): Promise<any>;
|
|
309
310
|
crmSmartUpsertObjects(payload: import('./payload.types').UpsertCRMObjectsPayload): Promise<any>;
|
|
@@ -311,7 +312,6 @@ export declare function useApi(options?: ApiOptions): {
|
|
|
311
312
|
crmSmartDeleteObjects(payload: import('./payload.types').CRMSmartDeleteObjectsPayload): Promise<any>;
|
|
312
313
|
crmCreate(payload: import('./payload.types').CRMCreatePayload): Promise<any>;
|
|
313
314
|
crmUpsert(payload: import('./payload.types').CRMUpsertPayload): Promise<any>;
|
|
314
|
-
crmDescribe(payload: import('./payload.types').CRMDescribePayload): Promise<any>;
|
|
315
315
|
getFolders(payload: import('./payload.types').FolderListRequest): Promise<import('../main.lib').PaginatedFolderList>;
|
|
316
316
|
getFolder(payload?: {
|
|
317
317
|
id: import('../main.lib').FolderRetrieve["id"];
|
|
@@ -590,6 +590,7 @@ export declare function useApi(options?: ApiOptions): {
|
|
|
590
590
|
}): Promise<void>;
|
|
591
591
|
query(payload: import('./payload.types').QueryPayload): Promise<any>;
|
|
592
592
|
crmQuery(payload: import('./payload.types').CRMQueryPayload): Promise<any>;
|
|
593
|
+
crmQueryAdaptive(payload: import('./payload.types').CRMQueryPayload): Promise<any>;
|
|
593
594
|
crmSmartQuery(payload: import('./payload.types').CRMQueryPayload): Promise<Array<any>>;
|
|
594
595
|
crmSmartObjectMetadata(payload: import('./payload.types').CRMSmartObjectMetadataPayload): Promise<any>;
|
|
595
596
|
crmSmartUpsertObjects(payload: import('./payload.types').UpsertCRMObjectsPayload): Promise<any>;
|
|
@@ -597,7 +598,6 @@ export declare function useApi(options?: ApiOptions): {
|
|
|
597
598
|
crmSmartDeleteObjects(payload: import('./payload.types').CRMSmartDeleteObjectsPayload): Promise<any>;
|
|
598
599
|
crmCreate(payload: import('./payload.types').CRMCreatePayload): Promise<any>;
|
|
599
600
|
crmUpsert(payload: import('./payload.types').CRMUpsertPayload): Promise<any>;
|
|
600
|
-
crmDescribe(payload: import('./payload.types').CRMDescribePayload): Promise<any>;
|
|
601
601
|
getFolders(payload: import('./payload.types').FolderListRequest): Promise<import('../main.lib').PaginatedFolderList>;
|
|
602
602
|
getFolder(payload?: {
|
|
603
603
|
id: import('../main.lib').FolderRetrieve["id"];
|
|
@@ -812,6 +812,7 @@ export declare function useApi(options?: ApiOptions): {
|
|
|
812
812
|
}): Promise<ArrayBuffer>;
|
|
813
813
|
query(payload: import('./payload.types').QueryPayload): Promise<any>;
|
|
814
814
|
crmQuery(payload: import('./payload.types').CRMQueryPayload): Promise<any>;
|
|
815
|
+
crmQueryAdaptive(payload: import('./payload.types').CRMQueryPayload): Promise<any>;
|
|
815
816
|
crmSmartQuery(payload: import('./payload.types').CRMQueryPayload): Promise<Array<any>>;
|
|
816
817
|
crmSmartObjectMetadata(payload: import('./payload.types').CRMSmartObjectMetadataPayload): Promise<any>;
|
|
817
818
|
crmSmartUpsertObjects(payload: import('./payload.types').UpsertCRMObjectsPayload): Promise<any>;
|
|
@@ -819,7 +820,6 @@ export declare function useApi(options?: ApiOptions): {
|
|
|
819
820
|
crmSmartDeleteObjects(payload: import('./payload.types').CRMSmartDeleteObjectsPayload): Promise<any>;
|
|
820
821
|
crmCreate(payload: import('./payload.types').CRMCreatePayload): Promise<any>;
|
|
821
822
|
crmUpsert(payload: import('./payload.types').CRMUpsertPayload): Promise<any>;
|
|
822
|
-
crmDescribe(payload: import('./payload.types').CRMDescribePayload): Promise<any>;
|
|
823
823
|
getFolders(payload: import('./payload.types').FolderListRequest): Promise<import('../main.lib').PaginatedFolderList>;
|
|
824
824
|
getFolder(payload?: {
|
|
825
825
|
id: import('../main.lib').FolderRetrieve["id"];
|
|
@@ -404,17 +404,3 @@ export interface CRMUpsertPayload {
|
|
|
404
404
|
*/
|
|
405
405
|
service?: CRMServiceType;
|
|
406
406
|
}
|
|
407
|
-
/**
|
|
408
|
-
* Payload for retrieving CRM object metadata/describe (Web only).
|
|
409
|
-
* Uses Salesforce REST API to fetch object metadata including fields and picklist values.
|
|
410
|
-
*/
|
|
411
|
-
export interface CRMDescribePayload {
|
|
412
|
-
/**
|
|
413
|
-
* The Salesforce object type to describe (e.g., 'Account', 'Contact', 'Opportunity').
|
|
414
|
-
*/
|
|
415
|
-
sobject: string;
|
|
416
|
-
/**
|
|
417
|
-
* Optional name of the CRM service to use.
|
|
418
|
-
*/
|
|
419
|
-
service?: CRMServiceType;
|
|
420
|
-
}
|
|
@@ -60,6 +60,7 @@ export type InstanceSettings = OrganizationSettings & {
|
|
|
60
60
|
enable_multipeer_connectivity?: boolean;
|
|
61
61
|
enable_syncbox?: boolean;
|
|
62
62
|
enable_sync_file_filtering?: boolean;
|
|
63
|
+
enable_sfdc_sync?: boolean;
|
|
63
64
|
time_format?: string;
|
|
64
65
|
date_format?: string;
|
|
65
66
|
is_file_expiration_mandatory?: boolean;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SmartStore Smart SQL Query Utilities
|
|
3
|
+
*
|
|
4
|
+
* This module provides utilities for converting SOQL queries to SmartStore Smart SQL format
|
|
5
|
+
* for offline data access on iOS devices using Salesforce Mobile SDK.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Comprehensive SOQL to SmartStore Smart Query converter
|
|
9
|
+
*
|
|
10
|
+
* Converts standard SOQL queries to SmartStore Smart SQL format for offline use on iOS.
|
|
11
|
+
* Handles SELECT, FROM, WHERE, ORDER BY, GROUP BY, HAVING, LIMIT, OFFSET,
|
|
12
|
+
* aggregate functions, and relationship fields.
|
|
13
|
+
*
|
|
14
|
+
* SmartStore stores denormalized data, so relationship fields are accessed directly
|
|
15
|
+
* within the soup using the full relationship path (e.g., Child_Account_vod__r.Name).
|
|
16
|
+
*
|
|
17
|
+
* @param soqlQuery - The SOQL query string to convert
|
|
18
|
+
* @returns The converted SmartStore Smart SQL query string
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* // Simple query
|
|
22
|
+
* convertSoqlToSmartQuery('SELECT Id, Name FROM Account WHERE Active = true')
|
|
23
|
+
* // Returns: SELECT {Account:Id}, {Account:Name} FROM {Account} WHERE {Account:Active} = true
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* // With relationship fields (denormalized access - no joins needed)
|
|
27
|
+
* convertSoqlToSmartQuery('SELECT Id, Child_Account_vod__r.Name FROM Child_Account_vod__c')
|
|
28
|
+
* // Returns: SELECT {Child_Account_vod__c:Id}, {Child_Account_vod__c:Child_Account_vod__r.Name} FROM {Child_Account_vod__c}
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* // With aggregate functions
|
|
32
|
+
* convertSoqlToSmartQuery('SELECT COUNT(Id), Industry FROM Account GROUP BY Industry')
|
|
33
|
+
* // Returns: SELECT COUNT({Account:Id}), {Account:Industry} FROM {Account} GROUP BY {Account:Industry}
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* // With ORDER BY and LIMIT
|
|
37
|
+
* convertSoqlToSmartQuery('SELECT Id, Name FROM Contact ORDER BY LastName ASC, FirstName DESC LIMIT 100')
|
|
38
|
+
* // Returns: SELECT {Contact:Id}, {Contact:Name} FROM {Contact} ORDER BY {Contact:LastName} ASC, {Contact:FirstName} DESC LIMIT 100
|
|
39
|
+
*/
|
|
40
|
+
export declare function convertSoqlToSmartQuery(soqlQuery: string): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/locale/de.json
CHANGED
package/locale/el.json
CHANGED
package/locale/en.json
CHANGED
package/locale/es.json
CHANGED
package/locale/fr.json
CHANGED
package/locale/it.json
CHANGED
package/locale/ja.json
CHANGED
package/locale/nl.json
CHANGED
package/locale/pl.json
CHANGED
package/locale/pt-br.json
CHANGED
package/locale/pt.json
CHANGED
package/locale/th.json
CHANGED
package/locale/tr.json
CHANGED
package/locale/zh.json
CHANGED