diff --git a/flow_screen_components/fsc_flowRadioButtonGroup/.forceignore b/flow_screen_components/fsc_flowRadioButtonGroup/.forceignore
new file mode 100644
index 000000000..4c0adf5b7
--- /dev/null
+++ b/flow_screen_components/fsc_flowRadioButtonGroup/.forceignore
@@ -0,0 +1,15 @@
+# List files or directories below to ignore them when running force:source:push, force:source:pull, and force:source:status
+# More information: https://developer.salesforce.com/docs/atlas.en-us.sfdx_dev.meta/sfdx_dev/sfdx_dev_exclude_source.htm
+#
+
+package.xml
+
+# LWC configuration files
+**/jsconfig.json
+**/.eslintrc.json
+./.sfdx
+./.sf
+./config
+
+# LWC Jest
+**/__tests__/**
\ No newline at end of file
diff --git a/flow_screen_components/fsc_flowRadioButtonGroup/README.md b/flow_screen_components/fsc_flowRadioButtonGroup/README.md
new file mode 100644
index 000000000..afcda4a66
--- /dev/null
+++ b/flow_screen_components/fsc_flowRadioButtonGroup/README.md
@@ -0,0 +1,18 @@
+# Salesforce DX Project: Next Steps
+
+Now that you’ve created a Salesforce DX project, what’s next? Here are some documentation resources to get you started.
+
+## How Do You Plan to Deploy Your Changes?
+
+Do you want to deploy a set of changes, or create a self-contained application? Choose a [development model](https://developer.salesforce.com/tools/vscode/en/user-guide/development-models).
+
+## Configure Your Salesforce DX Project
+
+The `sfdx-project.json` file contains useful configuration information for your project. See [Salesforce DX Project Configuration](https://developer.salesforce.com/docs/atlas.en-us.sfdx_dev.meta/sfdx_dev/sfdx_dev_ws_config.htm) in the _Salesforce DX Developer Guide_ for details about this file.
+
+## Read All About It
+
+- [Salesforce Extensions Documentation](https://developer.salesforce.com/tools/vscode/)
+- [Salesforce CLI Setup Guide](https://developer.salesforce.com/docs/atlas.en-us.sfdx_setup.meta/sfdx_setup/sfdx_setup_intro.htm)
+- [Salesforce DX Developer Guide](https://developer.salesforce.com/docs/atlas.en-us.sfdx_dev.meta/sfdx_dev/sfdx_dev_intro.htm)
+- [Salesforce CLI Command Reference](https://developer.salesforce.com/docs/atlas.en-us.sfdx_cli_reference.meta/sfdx_cli_reference/cli_reference.htm)
diff --git a/flow_screen_components/fsc_flowRadioButtonGroup/config/project-scratch-def.json b/flow_screen_components/fsc_flowRadioButtonGroup/config/project-scratch-def.json
new file mode 100644
index 000000000..08ee94365
--- /dev/null
+++ b/flow_screen_components/fsc_flowRadioButtonGroup/config/project-scratch-def.json
@@ -0,0 +1,5 @@
+{
+ "orgName": "andyhaas company",
+ "edition": "Developer",
+ "features": []
+}
diff --git a/flow_screen_components/fsc_flowRadioButtonGroup/force-app/main/default/lwc/fsc_flowRadioGroup/__tests__/fsc_flowRadioButtonGroup.test.js b/flow_screen_components/fsc_flowRadioButtonGroup/force-app/main/default/lwc/fsc_flowRadioGroup/__tests__/fsc_flowRadioButtonGroup.test.js
new file mode 100644
index 000000000..a0acbd3dd
--- /dev/null
+++ b/flow_screen_components/fsc_flowRadioButtonGroup/force-app/main/default/lwc/fsc_flowRadioGroup/__tests__/fsc_flowRadioButtonGroup.test.js
@@ -0,0 +1,25 @@
+import { createElement } from 'lwc';
+import Fsc_flowRadioButtonGroup from 'c/fsc_flowRadioButtonGroup';
+
+describe('c-fsc-flow-radio-button-group', () => {
+ afterEach(() => {
+ // The jsdom instance is shared across test cases in a single file so reset the DOM
+ while (document.body.firstChild) {
+ document.body.removeChild(document.body.firstChild);
+ }
+ });
+
+ it('TODO: test case generated by CLI command, please fill in test logic', () => {
+ // Arrange
+ const element = createElement('c-fsc-flow-radio-button-group', {
+ is: Fsc_flowRadioButtonGroup
+ });
+
+ // Act
+ document.body.appendChild(element);
+
+ // Assert
+ // const div = element.shadowRoot.querySelector('div');
+ expect(1).toBe(1);
+ });
+});
\ No newline at end of file
diff --git a/flow_screen_components/fsc_flowRadioButtonGroup/force-app/main/default/lwc/fsc_flowRadioGroup/fsc_flowRadioGroup.html b/flow_screen_components/fsc_flowRadioButtonGroup/force-app/main/default/lwc/fsc_flowRadioGroup/fsc_flowRadioGroup.html
new file mode 100644
index 000000000..27b9a3b63
--- /dev/null
+++ b/flow_screen_components/fsc_flowRadioButtonGroup/force-app/main/default/lwc/fsc_flowRadioGroup/fsc_flowRadioGroup.html
@@ -0,0 +1,37 @@
+
+
+
\ No newline at end of file
diff --git a/flow_screen_components/fsc_flowRadioButtonGroup/force-app/main/default/lwc/fsc_flowRadioGroup/fsc_flowRadioGroup.js b/flow_screen_components/fsc_flowRadioButtonGroup/force-app/main/default/lwc/fsc_flowRadioGroup/fsc_flowRadioGroup.js
new file mode 100644
index 000000000..5d6c5da1a
--- /dev/null
+++ b/flow_screen_components/fsc_flowRadioButtonGroup/force-app/main/default/lwc/fsc_flowRadioGroup/fsc_flowRadioGroup.js
@@ -0,0 +1,20 @@
+import { LightningElement, api } from 'lwc';
+
+export default class Fsc_flowRadioGroup extends LightningElement {
+ @api label;
+ @api name;
+ @api options; // [{label: 'Option 1', value: '1'}, {label: 'Option 2', value: '2'}]
+ @api type; // Radio or Button
+ @api fieldLevelHelp;
+ @api disabled;
+ @api required;
+ @api value;
+
+ handleValueChange(event) {
+ this.dispatchEvent(new CustomEvent('valuechange', {
+ detail: {
+ newValue: event.target.value
+ }
+ }));
+ }
+}
\ No newline at end of file
diff --git a/flow_screen_components/fsc_flowRadioButtonGroup/force-app/main/default/lwc/fsc_flowRadioGroup/fsc_flowRadioGroup.js-meta.xml b/flow_screen_components/fsc_flowRadioButtonGroup/force-app/main/default/lwc/fsc_flowRadioGroup/fsc_flowRadioGroup.js-meta.xml
new file mode 100644
index 000000000..f8c5cb4a3
--- /dev/null
+++ b/flow_screen_components/fsc_flowRadioButtonGroup/force-app/main/default/lwc/fsc_flowRadioGroup/fsc_flowRadioGroup.js-meta.xml
@@ -0,0 +1,5 @@
+
+
+ 56.0
+ false
+
\ No newline at end of file
diff --git a/flow_screen_components/fsc_flowRadioButtonGroup/sfdx-project.json b/flow_screen_components/fsc_flowRadioButtonGroup/sfdx-project.json
new file mode 100644
index 000000000..c389bb207
--- /dev/null
+++ b/flow_screen_components/fsc_flowRadioButtonGroup/sfdx-project.json
@@ -0,0 +1,19 @@
+{
+ "packageDirectories": [
+ {
+ "path": "force-app",
+ "default": true,
+ "package": "Flow Radio Button Group for CPE",
+ "versionName": "ver 0.1",
+ "versionNumber": "0.1.0.NEXT",
+ "versionDescription": ""
+ }
+ ],
+ "name": "fsc_flowRadioButtonGroup",
+ "namespace": "",
+ "sfdcLoginUrl": "https://login.salesforce.com",
+ "sourceApiVersion": "56.0",
+ "packageAliases": {
+ "Flow Radio Button Group for CPE": "0Ho5e000000wkSFCAY"
+ }
+}
\ No newline at end of file
diff --git a/lightning_page_components/DetectAndLaunch/force-app/main/default/aura/detectAndLaunch/detectAndLaunchHelper.js b/lightning_page_components/DetectAndLaunch/force-app/main/default/aura/detectAndLaunch/detectAndLaunchHelper.js
index 9b753a12f..7143b6ff1 100755
--- a/lightning_page_components/DetectAndLaunch/force-app/main/default/aura/detectAndLaunch/detectAndLaunchHelper.js
+++ b/lightning_page_components/DetectAndLaunch/force-app/main/default/aura/detectAndLaunch/detectAndLaunchHelper.js
@@ -1,8 +1,28 @@
({
processChangeEvent : function(component, eventParams) {
console.log('entering processChangeEvent');
- if(eventParams.changeType === "CHANGED" || eventParams.changeType === "LOADED") {
+ if(eventParams.changeType === "CHANGED") {
console.log ('changeType is: ' + eventParams.changeType);
+ this.callFlow(component, eventParams);
+ } else if(eventParams.changeType === "REMOVED") {
+ console.log('record is being deleted');
+ //the other launch paths don't work well when the underlying page is deleted
+ var targetUrl = '/flow/' + component.get("v.targetFlowName") + '?recordId=' + component.get("v.recordId"); //added input variable
+ console.log('targetURL is: ' + targetUrl);
+ window.open(targetUrl);
+ } else if(eventParams.changeType === "LOADED") {
+ console.log ('changeType is: ' + eventParams.changeType);
+ this.callFlow(component, eventParams);
+ }
+ },
+
+ callFlow : function(component, eventParams) {
+ console.log('entering callFlow');
+ console.log ('changeType is: ' + eventParams.changeType);
+ var flowApiName = component.get("v.targetFlowName");
+ if (flowApiName == null || flowApiName == undefined) {
+ console.log('flowApiName is null or undefined');
+ } else {
if(component.get("v.launchMode") == 'Modal') {
component.set('v.openModal',true);
@@ -16,49 +36,43 @@
];
var flow = component.find("flow");
- flow.startFlow(component.get("v.targetFlowName"), inputVariable); //added input variable
+ // Check to see if flow is not null before calling startFlow
+ if (flowApiName != null && flowApiName != undefined) {
+ console.log('flow is not null', flowApiName);
+ flow.startFlow(flowApiName, inputVariable); //added input variable
+ } else {
+ console.log('flow is null', flow);
+ }
} else {
//launch modelessly in a tab or browser window
var workspaceAPI = component.find("workspace");
workspaceAPI.isConsoleNavigation().then(function(response) {
- console.log('current workspace is console? : ' + response);
- if (response) {
- //we are in console mode
- workspaceAPI.getFocusedTabInfo()
- .then(function(response) {
- var targetUrl = '/flow/' + component.get("v.targetFlowName") + '?recordId=' + component.get("v.recordId"); //added input variable;
- workspaceAPI.openSubtab({
- parentTabId: response.tabId,
- url: targetUrl,
- focus: true
+ console.log('current workspace is console? : ' + response);
+ if (response) {
+ //we are in console mode
+ workspaceAPI.getFocusedTabInfo()
+ .then(function(response) {
+ var targetUrl = '/flow/' + component.get("v.targetFlowName") + '?recordId=' + component.get("v.recordId"); //added input variable;
+ workspaceAPI.openSubtab({
+ parentTabId: response.tabId,
+ url: targetUrl,
+ focus: true
+ })
+
})
-
- })
- .catch(function(error) {
- console.log(error);
- });
- } else {
- console.log('need to launch flow a different way');
- var targetUrl = '/flow/' + component.get("v.targetFlowName") + '?recordId=' + component.get("v.recordId"); //added input variable;
- console.log('targetURL is: ' + targetUrl);
- window.open(targetUrl);
- }
- })
+ .catch(function(error) {
+ console.log(error);
+ });
+ } else {
+ console.log('need to launch flow a different way');
+ var targetUrl = '/flow/' + component.get("v.targetFlowName") + '?recordId=' + component.get("v.recordId"); //added input variable;
+ console.log('targetURL is: ' + targetUrl);
+ window.open(targetUrl);
+ }
+ })
}
-
-
-
-
- }
- else if(eventParams.changeType === "REMOVED") {
- console.log('record is being deleted');
- //the other launch paths don't work well when the underlying page is deleted
- var targetUrl = '/flow/' + component.get("v.targetFlowName") + '?recordId=' + component.get("v.recordId"); //added input variable
- console.log('targetURL is: ' + targetUrl);
- window.open(targetUrl);
- }
+ }
}
-
})