├── example └── main │ └── default │ ├── aura │ └── JsonViewApp │ │ ├── JsonViewApp.css │ │ ├── JsonViewAppHelper.js │ │ ├── JsonViewAppRenderer.js │ │ ├── JsonViewAppController.js │ │ ├── JsonViewApp.app │ │ ├── JsonViewApp.auradoc │ │ ├── JsonViewApp.app-meta.xml │ │ └── JsonViewApp.svg │ ├── objects │ └── Account │ │ ├── Account.object-meta.xml │ │ └── fields │ │ └── JSON_Test__c.field-meta.xml │ ├── lwc │ ├── jsonViewerExample │ │ ├── jsonViewerExample.html │ │ ├── jsonViewerExample.js-meta.xml │ │ └── jsonViewerExample.js │ └── jsconfig.json │ ├── pages │ ├── JsonViewPage.page-meta.xml │ └── JsonViewPage.page │ ├── flexipages │ └── AccountJSONViewRecordPage.flexipage-meta.xml │ └── layouts │ └── Account-JSON View Account Layout.layout-meta.xml ├── react-app ├── types.d.ts ├── index.tsx └── components │ └── JSONViewer.tsx ├── LWC-demo.gif ├── force-app └── main │ └── default │ ├── lwc │ ├── .eslintrc.json │ ├── jsonReactContainer │ │ ├── jsonReactContainer.html │ │ ├── jsonReactContainer.js-meta.xml │ │ └── jsonReactContainer.js │ └── jsconfig.json │ └── staticresources │ └── app.resource-meta.xml ├── .prettierignore ├── config └── project-scratch-def.json ├── tsconfig.json ├── .prettierrc ├── changelog.md ├── .forceignore ├── .gitignore ├── sfdx-project.json ├── package.json ├── LICENSE ├── webpack.config.js └── README.md /example/main/default/aura/JsonViewApp/JsonViewApp.css: -------------------------------------------------------------------------------- 1 | .THIS { 2 | } -------------------------------------------------------------------------------- /react-app/types.d.ts: -------------------------------------------------------------------------------- 1 | declare module "@salesforce/design-system-react" -------------------------------------------------------------------------------- /LWC-demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/callawaycloud/lwc-json-view/HEAD/LWC-demo.gif -------------------------------------------------------------------------------- /example/main/default/aura/JsonViewApp/JsonViewAppHelper.js: -------------------------------------------------------------------------------- 1 | ({ 2 | helperMethod : function() { 3 | 4 | } 5 | }) -------------------------------------------------------------------------------- /force-app/main/default/lwc/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["@salesforce/eslint-config-lwc/recommended"] 3 | } 4 | -------------------------------------------------------------------------------- /example/main/default/aura/JsonViewApp/JsonViewAppRenderer.js: -------------------------------------------------------------------------------- 1 | ({ 2 | 3 | // Your renderer method overrides go here 4 | 5 | }) -------------------------------------------------------------------------------- /example/main/default/aura/JsonViewApp/JsonViewAppController.js: -------------------------------------------------------------------------------- 1 | ({ 2 | myAction : function(component, event, helper) { 3 | 4 | } 5 | }) -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | # List files or directories below to ignore them when running prettier 2 | # More information: https://prettier.io/docs/en/ignore.html 3 | # 4 | 5 | .sfdx -------------------------------------------------------------------------------- /example/main/default/objects/Account/Account.object-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /example/main/default/aura/JsonViewApp/JsonViewApp.app: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /config/project-scratch-def.json: -------------------------------------------------------------------------------- 1 | { 2 | "orgName": "charlesjonas Company", 3 | "edition": "Developer", 4 | "features": [], 5 | "settings": { 6 | "orgPreferenceSettings": { 7 | "s1DesktopEnabled": true 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "outDir": "./dist/", 4 | "sourceMap": true, 5 | "noImplicitAny": true, 6 | "module": "commonjs", 7 | "target": "es6", 8 | "jsx": "react" 9 | } 10 | } -------------------------------------------------------------------------------- /example/main/default/aura/JsonViewApp/JsonViewApp.auradoc: -------------------------------------------------------------------------------- 1 | 2 | Documentation 3 | 4 | Example Description 5 | 6 | -------------------------------------------------------------------------------- /force-app/main/default/lwc/jsonReactContainer/jsonReactContainer.html: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /force-app/main/default/staticresources/app.resource-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Private 4 | application/javascript 5 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "trailingComma": "none", 3 | "overrides": [ 4 | { 5 | "files": "**/lwc/**/*.html", 6 | "options": { "parser": "lwc" } 7 | }, 8 | { 9 | "files": "*.{cmp,page,component}", 10 | "options": { "parser": "html" } 11 | } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /example/main/default/aura/JsonViewApp/JsonViewApp.app-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 48.0 4 | A Lightning Application Bundle 5 | 6 | -------------------------------------------------------------------------------- /changelog.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | All notable changes to this project will be documented in this file. 4 | 5 | ## 0.1.0 6 | 7 | ### Added functionality to view JSON text 8 | 9 | ## 0.2.0 10 | 11 | ### Added functionality to pass react-json-props, which can be used to implement edit functionality 12 | 13 | ### Added example project metadata 14 | -------------------------------------------------------------------------------- /react-app/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react"; 2 | import * as ReactDOM from "react-dom"; 3 | 4 | import { JSONViewer, JSONViewerProps } from "./components/JSONViewer"; 5 | 6 | (window as any).mount = (el: any, injected: JSONViewerProps) => { 7 | console.log(injected); 8 | 9 | ReactDOM.render(, el); 10 | }; 11 | -------------------------------------------------------------------------------- /example/main/default/lwc/jsonViewerExample/jsonViewerExample.html: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /.forceignore: -------------------------------------------------------------------------------- 1 | # List files or directories below to ignore them when running force:source:push, force:source:pull, and force:source:status 2 | # More information: https://developer.salesforce.com/docs/atlas.en-us.sfdx_dev.meta/sfdx_dev/sfdx_dev_exclude_source.htm 3 | # 4 | 5 | package.xml 6 | 7 | **/profiles 8 | 9 | # LWC configuration files 10 | **/jsconfig.json 11 | **/.eslintrc.json 12 | 13 | # LWC Jest 14 | **/__tests__/** -------------------------------------------------------------------------------- /example/main/default/objects/Account/fields/JSON_Test__c.field-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | JSON_Test__c 4 | false 5 | 6 | 32768 7 | false 8 | LongTextArea 9 | 3 10 | 11 | -------------------------------------------------------------------------------- /example/main/default/lwc/jsonViewerExample/jsonViewerExample.js-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 48.0 4 | true 5 | 6 | lightning__AppPage 7 | lightning__RecordPage 8 | lightning__HomePage 9 | 10 | -------------------------------------------------------------------------------- /force-app/main/default/lwc/jsonReactContainer/jsonReactContainer.js-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 48.0 4 | true 5 | 6 | lightning__AppPage 7 | lightning__RecordPage 8 | lightning__HomePage 9 | 10 | -------------------------------------------------------------------------------- /example/main/default/pages/JsonViewPage.page-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 48.0 4 | false 5 | false 6 | 7 | 8 | 1 9 | 0 10 | trlhdtips 11 | 12 | 13 | -------------------------------------------------------------------------------- /example/main/default/pages/JsonViewPage.page: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 |
5 | 6 | 19 |
-------------------------------------------------------------------------------- /force-app/main/default/lwc/jsonReactContainer/jsonReactContainer.js: -------------------------------------------------------------------------------- 1 | /* global moment */ 2 | import { LightningElement, wire, api, track } from "lwc"; 3 | import { loadScript } from "lightning/platformResourceLoader"; 4 | import App from "@salesforce/resourceUrl/app"; 5 | 6 | export default class JsonReactContainer extends LightningElement { 7 | @api jsonText; 8 | @api reactJsonViewProps; 9 | 10 | renderedCallback() { 11 | Promise.all([loadScript(this, App)]).then(() => { 12 | mount(this.template.querySelector("div"), { 13 | jsonText: this.jsonText, 14 | reactJsonViewProps: this.reactJsonViewProps 15 | }); 16 | }); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /example/main/default/lwc/jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "experimentalDecorators": true, 4 | "baseUrl": ".", 5 | "paths": { 6 | "c/jsonReactContainer": [ 7 | "../../../../force-app/main/default/lwc/jsonReactContainer/jsonReactContainer.js" 8 | ], 9 | "c/jsonViewerExample": [ 10 | "jsonViewerExample/jsonViewerExample.js" 11 | ] 12 | } 13 | }, 14 | "include": [ 15 | "**/*", 16 | "../../../../.sfdx/typings/lwc/**/*.d.ts" 17 | ], 18 | "typeAcquisition": { 19 | "include": [ 20 | "jest" 21 | ] 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /force-app/main/default/lwc/jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "experimentalDecorators": true, 4 | "baseUrl": ".", 5 | "paths": { 6 | "c/jsonReactContainer": [ 7 | "jsonReactContainer/jsonReactContainer.js" 8 | ], 9 | "c/jsonViewerExample": [ 10 | "../../../../example/main/default/lwc/jsonViewerExample/jsonViewerExample.js" 11 | ] 12 | } 13 | }, 14 | "include": [ 15 | "**/*", 16 | "../../../../.sfdx/typings/lwc/**/*.d.ts" 17 | ], 18 | "typeAcquisition": { 19 | "include": [ 20 | "jest" 21 | ] 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # This file is used for Git repositories to specify intentionally untracked files that Git should ignore. 2 | # If you are not using git, you can delete this file. For more information see: https://git-scm.com/docs/gitignore 3 | # For useful gitignore templates see: https://github.com/github/gitignore 4 | 5 | # Salesforce cache 6 | .sfdx/ 7 | 8 | # Logs 9 | logs 10 | *.log 11 | npm-debug.log* 12 | yarn-debug.log* 13 | yarn-error.log* 14 | 15 | # Dependency directories 16 | node_modules/ 17 | 18 | # Eslint cache 19 | .eslintcache 20 | 21 | # MacOS system files 22 | .DS_Store 23 | 24 | # Windows system files 25 | Thumbs.db 26 | ehthumbs.db 27 | [Dd]esktop.ini 28 | $RECYCLE.BIN/ 29 | 30 | dist -------------------------------------------------------------------------------- /example/main/default/aura/JsonViewApp/JsonViewApp.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /sfdx-project.json: -------------------------------------------------------------------------------- 1 | { 2 | "packageDirectories": [ 3 | { 4 | "path": "force-app", 5 | "default": true, 6 | "package": "lwc-json-view", 7 | "versionName": "ver 0.2", 8 | "versionNumber": "0.2.0.NEXT" 9 | }, 10 | { 11 | "path": "example", 12 | "default": false 13 | } 14 | ], 15 | "namespace": "", 16 | "sfdcLoginUrl": "https://login.salesforce.com", 17 | "sourceApiVersion": "46.0", 18 | "packageAliases": { 19 | "lwc-json-view": "0Ho1C000000002HSAQ", 20 | "lwc-json-view@0.1.0-1": "04t1C000000goH5QAI", 21 | "lwc-json-view@0.2.0-1": "04t1C000000goKJQAY" 22 | } 23 | } -------------------------------------------------------------------------------- /react-app/components/JSONViewer.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react"; 2 | import { Card, Button } from "@salesforce/design-system-react"; 3 | import ReactJson from "react-json-view"; 4 | // use the component in your app! 5 | export interface JSONViewerProps { 6 | jsonText: any; 7 | reactJsonViewProps: any; 8 | } 9 | export const JSONViewer = (props: JSONViewerProps) => { 10 | if (!props.jsonText) { 11 | return  ; 12 | } 13 | 14 | console.log(props.reactJsonViewProps); 15 | return ( 16 | 17 | 21 | 22 | ); 23 | }; 24 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "lwc-react", 3 | "version": "1.0.0", 4 | "description": "This guide helps Salesforce developers who are new to Visual Studio Code go from zero to a deployed app using Salesforce Extensions for VS Code and Salesforce CLI.", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1", 8 | "build": "npx webpack react-app && cp dist/main.js force-app/main/default/staticresources/app.js", 9 | "deploy": "npm run build && sfdx force:source:deploy -p force-app" 10 | }, 11 | "author": "", 12 | "license": "ISC", 13 | "devDependencies": { 14 | "@types/react": "^16.8.23", 15 | "@types/react-dom": "^16.8.4", 16 | "source-map-loader": "^0.2.4", 17 | "ts-loader": "^6.0.4", 18 | "typescript": "^3.5.3", 19 | "webpack": "^4.36.1", 20 | "webpack-cli": "^3.3.6" 21 | }, 22 | "dependencies": { 23 | "@salesforce-ux/design-system": "^2.9.4", 24 | "@salesforce/design-system-react": "^0.10.9", 25 | "react": "16.8.3", 26 | "react-dom": "^16.8.6", 27 | "react-json-view": "^1.19.1" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 Callaway Cloud 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | mode: "production", 3 | 4 | // Enable sourcemaps for debugging webpack's output. 5 | devtool: "source-map", 6 | 7 | resolve: { 8 | // Add '.ts' and '.tsx' as resolvable extensions. 9 | extensions: [".js", ".ts", ".tsx"] 10 | }, 11 | 12 | module: { 13 | rules: [ 14 | { 15 | test: /\.(ts|js)x?$/, 16 | exclude: /node_modules/, 17 | use: [ 18 | { 19 | loader: "ts-loader" 20 | } 21 | ] 22 | }, 23 | // All output '.js' files will have any sourcemaps re-processed by 'source-map-loader'. 24 | { 25 | enforce: "pre", 26 | test: /\.js$/, 27 | loader: "source-map-loader" 28 | } 29 | ] 30 | }, 31 | 32 | // // When importing a module whose path matches one of the following, just 33 | // // assume a corresponding global variable exists and use that instead. 34 | // // This is important because it allows us to avoid bundling all of our 35 | // // dependencies, which allows browsers to cache those libraries between builds. 36 | // externals: { 37 | // "lightning/navigation": "lightning" 38 | // // "react-dom": "ReactDOM" 39 | // } 40 | }; -------------------------------------------------------------------------------- /example/main/default/lwc/jsonViewerExample/jsonViewerExample.js: -------------------------------------------------------------------------------- 1 | import { LightningElement, wire, api, track } from "lwc"; 2 | import { getRecord, updateRecord } from "lightning/uiRecordApi"; 3 | const FIELDS = ["Account.Id", "Account.JSON_Test__c"]; 4 | import JSON_TEST_FIELD from "@salesforce/schema/Account.JSON_Test__c"; 5 | import ID_FIELD from "@salesforce/schema/Account.Id"; 6 | 7 | export default class JsonViewerExample extends LightningElement { 8 | @api recordId; 9 | @track account; 10 | 11 | @wire(getRecord, { 12 | recordId: "$recordId", 13 | fields: [JSON_TEST_FIELD, ID_FIELD] 14 | }) 15 | wiredAccount({ error, data }) { 16 | if (data) { 17 | this.record = data; 18 | this.account = data; 19 | this.error = undefined; 20 | 21 | this.jsontext = this.record.fields.JSON_Test__c.value; 22 | 23 | if (!this.jsontext) { 24 | this.jsontext = "{}"; 25 | } 26 | } else if (error) { 27 | this.error = error; 28 | this.record = undefined; 29 | } 30 | } 31 | 32 | @api 33 | jsontext; 34 | 35 | reactJsonViewProps = { 36 | name: false, 37 | displayDataTypes: false, 38 | onEdit: edit => { 39 | this.editJson(edit); 40 | }, 41 | onAdd: edit => { 42 | this.editJson(edit); 43 | }, 44 | onDelete: edit => { 45 | this.editJson(edit); 46 | } 47 | }; 48 | 49 | editJson(edit) { 50 | const fields = {}; 51 | fields[JSON_TEST_FIELD.fieldApiName] = JSON.stringify(edit.updated_src); 52 | fields[ID_FIELD.fieldApiName] = this.recordId; 53 | 54 | const recordInput = { fields }; 55 | 56 | updateRecord(recordInput) 57 | .then(() => {}) 58 | .catch(error => { 59 | console.log(error); 60 | }); 61 | this.jsontext = JSON.stringify(edit.updated_src); 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # LWC React-Webpack Container 2 | 3 | Demo: 4 | 5 | LWC Demo 6 | 7 | A Lightning Web Component that utilizes React and react-json-view to display JSON text within Salesforce. 8 | 9 | ## Setup 10 | 11 | 1. Install in your org 12 | - https://[your-domain-here].lightning.force.com/packaging/installPackage.apexp?p0=04t1C000000goKJQAY 13 | 2. Create a LWC to implement in your org 14 | - Review example implementation for guidance 15 | 16 | ## Usage 17 | 18 | 1. View and edit fields where JSON text is stored 19 | - To enable edit functionality, please review the example below for passing react-json-view props 20 | 21 | ### Pass react-json-view props 22 | 23 | - Any props in react-json-view is supported by passing as an object to reactJsonViewProps 24 | 25 | - Lightning Web Component example: 26 | 27 | - LWC html file 28 | 29 | ```html 30 | 34 | ``` 35 | 36 | - LWC js file 37 | 38 | ```javascript 39 | reactJsonViewProps = { 40 | name: false, 41 | displayDataTypes: false, 42 | onEdit: edit => { 43 | this.editJson(edit); 44 | }, 45 | onAdd: edit => { 46 | this.editJson(edit); 47 | }, 48 | onDelete: edit => { 49 | this.editJson(edit); 50 | } 51 | }; 52 | 53 | editJson(edit) { 54 | const fields = {}; 55 | fields[JSON_TEST_FIELD.fieldApiName] = JSON.stringify(edit.updated_src); 56 | fields[ID_FIELD.fieldApiName] = this.recordId; 57 | 58 | const recordInput = { fields }; 59 | 60 | updateRecord(recordInput) 61 | .then(() => {}) 62 | .catch(error => { 63 | console.log(error); 64 | }); 65 | this.jsontext = JSON.stringify(edit.updated_src); 66 | } 67 | ``` 68 | 69 | * Classic example: 70 | 71 | - Utilizes the LWC above an uses a Visualforce Page to render the component 72 | - Visualforce Page example: 73 | 74 | ```html 75 | 76 | 77 |
78 | 79 | 85 |
86 | ``` 87 | 88 | ## Demo 89 | 90 | - Install in your org 91 | - https://[your-domain-here].lightning.force.com/packaging/installPackage.apexp?p0=04t1C000000goKJQAY 92 | - clone lwc-json-view and deploy the example directory to your org 93 | - `sfdx force:org:open` 94 | 95 | - For Lightning: 96 | 97 | 1. Assign AccountJSONViewRecordPage as the Lightning Record Page for the Account object 98 | 2. Give users edit access to JSON Test field on Account 99 | 3. Go to any Account and go to the JSON Test component to update the JSON Test field 100 | 101 | - For Classic: 102 | 103 | 1. Give users access to Visualforce Page JsonViewPage 104 | 2. Assign JSON View Account Layout as the Account page layout 105 | 3. Go to any Account and go to the JsonViewPage Visualforce Page section to update the JSON Test field 106 | 107 | ## Contributing 108 | 109 | - lwc-json-view 110 | 111 | ### Release Update 112 | 113 | - Create version 114 | 115 | 1. Update `versionName` & `versionNumber` in `sfdx-project.json` 116 | 2. run `sfdx force:package:version:create -p lwc-json-view -d force-app -x --wait 10 -v ccc-prod` 117 | 118 | - "promote" Version 119 | 120 | 1. Get `04txxxxxx` version from previous step 121 | 2. `sfdx force:package:version:promote -p 04txxxxxx` 122 | 123 | - Update install instructions in readme 124 | 125 | - Add release on github 126 | -------------------------------------------------------------------------------- /example/main/default/flexipages/AccountJSONViewRecordPage.flexipage-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | collapsed 7 | false 8 | 9 | 10 | hideChatterActions 11 | false 12 | 13 | 14 | numVisibleActions 15 | 3 16 | 17 | force:highlightsPanel 18 | 19 | Replace 20 | header 21 | Region 22 | 23 | 24 | 25 | cooper:companyInsightTeaserCard 26 | 27 | 28 | 29 | displayOption 30 | BOTH 31 | 32 | runtime_sales_merge:mergeCandidatesPreviewCard 33 | 34 | 35 | 36 | relatedListComponentOverride 37 | NONE 38 | 39 | 40 | rowsToDisplay 41 | 10 42 | 43 | 44 | showActionBar 45 | true 46 | 47 | force:relatedListContainer 48 | 49 | Replace 50 | relatedTabContent 51 | Facet 52 | 53 | 54 | 55 | force:detailPanel 56 | 57 | Replace 58 | detailTabContent 59 | Facet 60 | 61 | 62 | 63 | runtime_sales_social:socialPanel 64 | 65 | Replace 66 | newsTabContent 67 | Facet 68 | 69 | 70 | 71 | 72 | active 73 | false 74 | 75 | 76 | body 77 | relatedTabContent 78 | 79 | 80 | title 81 | Standard.Tab.relatedLists 82 | 83 | flexipage:tab 84 | 85 | 86 | 87 | active 88 | true 89 | 90 | 91 | body 92 | detailTabContent 93 | 94 | 95 | title 96 | Standard.Tab.detail 97 | 98 | flexipage:tab 99 | 100 | 101 | 102 | body 103 | newsTabContent 104 | 105 | 106 | title 107 | Standard.Tab.news 108 | 109 | flexipage:tab 110 | 111 | Replace 112 | maintabs 113 | Facet 114 | 115 | 116 | 117 | 118 | tabs 119 | maintabs 120 | 121 | flexipage:tabset 122 | 123 | Replace 124 | main 125 | Region 126 | 127 | 128 | 129 | runtime_sales_activities:activityPanel 130 | 131 | Replace 132 | activityTabContent 133 | Facet 134 | 135 | 136 | 137 | forceChatter:recordFeedContainer 138 | 139 | Replace 140 | feedTabContent 141 | Facet 142 | 143 | 144 | 145 | 146 | active 147 | true 148 | 149 | 150 | body 151 | activityTabContent 152 | 153 | 154 | title 155 | Standard.Tab.activity 156 | 157 | flexipage:tab 158 | 159 | 160 | 161 | body 162 | feedTabContent 163 | 164 | 165 | title 166 | Standard.Tab.collaborate 167 | 168 | flexipage:tab 169 | 170 | Replace 171 | sidebartabs 172 | Facet 173 | 174 | 175 | 176 | jsonViewerExample 177 | 178 | 179 | 180 | tabs 181 | sidebartabs 182 | 183 | flexipage:tabset 184 | 185 | Replace 186 | sidebar 187 | Region 188 | 189 | AccountJSONViewRecordPage 190 | sfa__Account_rec_L 191 | Account 192 | 195 | RecordPage 196 | -------------------------------------------------------------------------------- /example/main/default/layouts/Account-JSON View Account Layout.layout-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Submit 4 | 5 | false 6 | false 7 | true 8 | 9 | 10 | 11 | Edit 12 | OwnerId 13 | 14 | 15 | Required 16 | Name 17 | 18 | 19 | Edit 20 | ParentId 21 | 22 | 23 | Edit 24 | AccountNumber 25 | 26 | 27 | Edit 28 | Site 29 | 30 | 31 | Edit 32 | Type 33 | 34 | 35 | Edit 36 | Industry 37 | 38 | 39 | Edit 40 | AnnualRevenue 41 | 42 | 43 | 44 | 45 | Edit 46 | Rating 47 | 48 | 49 | Edit 50 | Phone 51 | 52 | 53 | Edit 54 | Fax 55 | 56 | 57 | Edit 58 | Website 59 | 60 | 61 | Edit 62 | TickerSymbol 63 | 64 | 65 | Edit 66 | Ownership 67 | 68 | 69 | Edit 70 | NumberOfEmployees 71 | 72 | 73 | Edit 74 | Sic 75 | 76 | 77 | 78 | 79 | 80 | false 81 | false 82 | true 83 | 84 | 85 | 86 | Edit 87 | BillingAddress 88 | 89 | 90 | 91 | 92 | Edit 93 | ShippingAddress 94 | 95 | 96 | 97 | 98 | 99 | false 100 | false 101 | true 102 | 103 | 104 | 105 | Edit 106 | CustomerPriority__c 107 | 108 | 109 | Edit 110 | SLAExpirationDate__c 111 | 112 | 113 | Edit 114 | NumberofLocations__c 115 | 116 | 117 | Edit 118 | Active__c 119 | 120 | 121 | 200 122 | JsonViewPage 123 | false 124 | true 125 | 100% 126 | 127 | 128 | 129 | 130 | Edit 131 | SLA__c 132 | 133 | 134 | Edit 135 | SLASerialNumber__c 136 | 137 | 138 | Edit 139 | UpsellOpportunity__c 140 | 141 | 142 | 143 | 144 | 145 | false 146 | false 147 | true 148 | 149 | 150 | 151 | Readonly 152 | CreatedById 153 | 154 | 155 | 156 | 157 | Readonly 158 | LastModifiedById 159 | 160 | 161 | 162 | 163 | 164 | false 165 | false 166 | true 167 | 168 | 169 | 170 | Edit 171 | Description 172 | 173 | 174 | 175 | 176 | 177 | true 178 | false 179 | false 180 | 181 | 182 | 183 | Billing 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | runtime_sales_social:socialPanel 194 | 195 | 196 | 197 | 198 | FULL_NAME 199 | CONTACT.TITLE 200 | CONTACT.EMAIL 201 | CONTACT.PHONE1 202 | RelatedContactList 203 | 204 | 205 | OPPORTUNITY.NAME 206 | OPPORTUNITY.STAGE_NAME 207 | OPPORTUNITY.AMOUNT 208 | OPPORTUNITY.CLOSE_DATE 209 | RelatedOpportunityList 210 | 211 | 212 | CASES.CASE_NUMBER 213 | NAME 214 | CASES.SUBJECT 215 | CASES.PRIORITY 216 | CASES.CREATED_DATE_DATE_ONLY 217 | CASES.STATUS 218 | OWNER_NAME 219 | RelatedCaseList 220 | 221 | 222 | TASK.SUBJECT 223 | TASK.WHO_NAME 224 | TASK.WHAT_NAME 225 | ACTIVITY.TASK 226 | TASK.DUE_DATE 227 | TASK.STATUS 228 | TASK.PRIORITY 229 | CORE.USERS.FULL_NAME 230 | RelatedActivityList 231 | 232 | 233 | TASK.SUBJECT 234 | TASK.WHO_NAME 235 | TASK.WHAT_NAME 236 | ACTIVITY.TASK 237 | TASK.DUE_DATE 238 | CORE.USERS.FULL_NAME 239 | TASK.LAST_UPDATE 240 | RelatedHistoryList 241 | 242 | 243 | RelatedNoteList 244 | 245 | 246 | ACCOUNT.NAME 247 | OPPORTUNITY.NAME 248 | PARTNER.ROLE 249 | RelatedPartnerList 250 | 251 | ParentId 252 | false 253 | false 254 | false 255 | false 256 | false 257 | 258 | 00h6g000007khMW 259 | 4 260 | 0 261 | Default 262 | 263 | --------------------------------------------------------------------------------