I have a field that is conditioned to show when a reference field is null. I open the collapsible wrapper and it works. If I close the collapsible wrapper and open collapsible wrapper, the conditioning no longer works.
https://drive.google.com/file/d/0B409lhd9sYDcT0VIMmcyTW9xaGM/view?usp=drivesdk
Hi Bill - I looked at your video. if you’re conditionally rendering something based on whether a field value is null or not, and opening/closing the collapsible wrapper empties out the field, that empty field may not show as ‘null’ but empty instead. In other words, null would be undefined, while empty would be defined, and empty. If that’s the case, you may just need to add a second render condition so that the render conditions look for either null or empty.
I tried your recommendation. It seems that I must not be conditioning the collapsible wrapper. When opening a second time, the field is blank because I do the following when collapsing and opening.
I have recreated with accounts and contacts:
<tfg__collapsiblewrapper title=“<div class="LEO_hdrMenuOption">{{#IsBuildingDNAOpen}}Add Member to {{Connected_Engagement__r.DNA__c}} (Open){{/IsBuildingDNAOpen}}{{^IsBuildingDNAOpen}}Add Member to {{Connected_Engagement__r.DNA__c}} (Collapse){{/IsBuildingDNAOpen}}</div>” showheader=“yes” collapsible=“collapsed” deferrenderingcontents=“true” uniqueid=“sk-3KZzeP-157” clickableheader=“true” model=“EngagementOfferDNA_Selected”>
<p>If the member does not exist, then add it here. &nbsp;Then search again.</p>
<tfg__popupcontroller uniqueid=“sk-29EGUt-523” hideclose=“true” disableescape=“true”/>
 
Hi Bill -
Thanks for creating the repro using stock objects, this made it much easier to track down. As I mentioned in in our email, the issue you are having does not have anything to do with the CW. In short, you are encountering a skuid bug unfortunately.
I took your sample page and further simplified it. First, I eliminated the theme of FoxMLS and also remove the JS that was referenced. From there, i then eliminated the CW and a few other components to get to a bare bones repro. The goal with any repro is to eliminate as many layers as possible to reduce the surface area for troubleshooting.
Below, you will find a simplified page that encounters the issue you are facing. The issue stems from the “Remove All Rows” action. There are several other community posts that are logged against unexpected behavior that components have when that action is invoked. Some of those issues were fixed recently but unfortunately, it appears that some still remain. Here is a link to the one I had logged against button sets specifically - https://community.skuid.com/t/remove-all-rows-in-model-action-breaks-conditional-renderi…. I had logged a few others against other components as well.
** Note ** - The repro below identifies three (3) skuid bugs. across two different components - responsive grid & button sets
Using the page below, here are the steps to reproduce. The repro is using skuid 10.0.1.
I’ll leave it to the Skuid team to take it form here:
Steps to reproduce;
1) Create page using XML below
2) preview page
Expected behavior = Actual behavior
"Add New member’ button is visible
“Say hi” button is visible
3) Select an Account
Expected Behavior = Actual behavior
“Add New Member’ is not visible
“Say hi” is not visible
4) Clear the account field
** BUG #1
Expected Behavior
"Add new Member’ is visible
"Say hi’ is visible
Actual Behavior
“Add new Member” is visible
“Say hi” is NOT visible
5) Refresh the page
Expected behavior = Actual behavior
"Add New member’ button is visible
“Say hi” button is visible
6) Select an Account
Expected Behavior = Actual behavior
"Add New Member’ is not visible
“Say hi” is not visible
7) Click ‘start over’ (this mimicks what you had the CW doing)
BUG #2
Expected Behavior
“Add new member” is visible
“Say hi” is visible
Actual behavior
“Add new member” is visible
“Say hi” is NOT visible
BUG #3 **
8) Select an account
Expected Behavior
“Add new member” is NOT visible
“Say hi” is NOT visible
Actual Behavior
“Add new member” is visible
“Say hi’ is NOT visible
Sample Page xml
```
<tfg__collapsiblewrapper title=”<div class="LEO_hdrMenuOption">{{#IsBuildingDNAOpen}}Add Member to {{Connected_Engagement__r.DNA__c}} (Open){{/IsBuildingDNAOpen}}{{^IsBuildingDNAOpen}}Add Member to {{Connected_Engagement__r.DNA__c}} (Collapse){{/IsBuildingDNAOpen}}</div>” showheader=“yes” collapsible=“collapsed” deferrenderingcontents=“true” uniqueid=“sk-3KZzeP-157” clickableheader=“true” model=“EngagementOfferDNA_Selected”>
<p>If the member does not exist, then add it here. &nbsp;Then search again.</p>
<tfg__popupcontroller uniqueid=“sk-29EGUt-523” hideclose=“true” disableescape=“true”/>
&nbs
Hello Bill and Barry, Thank you both for taking the time to illustrate this. It looks like both of your XML pages are using the collapsible wrapper. Barry, might you have meant to post a version of your reproduction page that didn’t make use of this custom component?
Sorry Mark, copy/pasted the wrong page. Here is the version that reflects the above steps to reproduce:
<skuidpage unsavedchangeswarning="yes" personalizationmode="server" useviewportmeta="true" showsidebar="false" showheader="false" tabtooverride="Contact">
<models>
<model id="TempEgagement_Offer" limit="1" query="false" createrowifnonefound="true" datasource="salesforce" type="" sobject="Contact" doclone="" forview="true">
<fields>
<field id="Id"/>
<field id="Name"/>
<field id="AccountId"/>
<field id="Account.Name"/>
<field id="Account.Id"/>
<field id="Account.MasterRecordId"/>
<field id="Account.MasterRecord.Name"/>
<field id="Account.MasterRecord.Id"/>
</fields>
<conditions/>
<actions/>
</model>
</models>
<components>
<pagetitle model="TempEgagement_Offer" uniqueid="sk-31baBM-140">
<maintitle>
<template>{{Name}}</template>
</maintitle>
<subtitle>
<template>{{Model.label}}</template>
</subtitle>
<actions>
<action type="multi" label="Start Over" uniqueid="sk-31d2GG-75">
<actions>
<action type="emptyModelData">
<models>
<model>TempEgagement_Offer</model>
</models>
</action>
<action type="createRow" model="TempEgagement_Offer" appendorprepend="prepend" defaultmodefornewitems="edit" affectedrows="context"/>
</actions>
</action>
</actions>
</pagetitle>
<grid uniqueid="sk-3KZxI6-152">
<divisions>
<division behavior="flex" minwidth="100px" ratio="1">
<components>
<basicfieldeditor showheader="true" showsavecancel="false" showerrorsinline="true" model="TempEgagement_Offer" buttonposition="" uniqueid="sk-1xftgw-283" mode="edit" layout="above">
<columns layoutmode="responsive" columngutter="4px" rowgutter="4px">
<column ratio="1" minwidth="300px" behavior="flex" verticalalign="top">
<sections>
<section title="Section A" collapsible="no" showheader="false">
<fields>
<field id="AccountId" valuehalign="" type="" optionsource="" pagesize="5" required="true" uniqueid="sk-31d2Gc-83">
<renderconditions logictype="and" onhidedatabehavior="keep"/>
<enableconditions/>
<searchfields/>
<filters/>
</field>
</fields>
</section>
</sections>
</column>
</columns>
</basicfieldeditor>
</components>
</division>
<division behavior="flex" verticalalign="top" minwidth="100px" ratio="1">
<components>
<grid uniqueid="sk-31dHrZ-109">
<divisions>
<division behavior="flex" minwidth="100px" ratio="1">
<components>
<buttonset model="TempEgagement_Offer" uniqueid="sk-29DabF-443" position="left">
<buttons>
<button type="multi" label="Add New Member" icon="sk-icon-add" uniqueid="sk-31d2Go-87">
<actions>
<action type="showPopup">
<popup title="" width="90%">
<components>
<tfg__popupcontroller uniqueid="sk-29EGUt-523" hideclose="true" disableescape="true"/>
<grid uniqueid="sk-29Dv9c-485">
<divisions>
<division behavior="flex" minwidth="100px" ratio="1" verticalalign="top">
<components>
<buttonset model="TempEgagement_Offer" uniqueid="sk-29DvkL-490" position="left">
<buttons>
<button type="multi" label="Close" icon="sk-icon-close">
<actions>
<action type="closeTopmostPopup"/>
</actions>
</button>
</buttons>
</buttonset>
<includepanel type="skuid" uniqueid="sk-29DxfD-493" pagename="RM1_Member" module=""/>
</components>
</division>
</divisions>
<styles>
<styleitem type="background" bgtype="none"/>
</styles>
</grid>
</components>
</popup>
</action>
</actions>
</button>
</buttons>
<renderconditions logictype="or"/>
</buttonset>
</components>
</division>
</divisions>
<styles>
<styleitem type="background" bgtype="none"/>
</styles>
<renderconditions logictype="or">
<rendercondition type="blank" operator="=" fieldmodel="TempEgagement_Offer" sourcetype="fieldvalue" nosourcerowbehavior="deactivate" field="AccountId" fieldtargetobjects="Account" value="null" enclosevalueinquotes="false"/>
<rendercondition type="fieldvalue" operator="=" enclosevalueinquotes="true" fieldmodel="TempEgagement_Offer" sourcetype="fieldvalue" nosourcerowbehavior="deactivate" field="AccountId" fieldtargetobjects="Account"/>
</renderconditions>
</grid>
<buttonset uniqueid="sk-31dzOP-141" model="TempEgagement_Offer" position="left">
<buttons>
<button type="multi" label="Say hi" uniqueid="sk-31d_T2-146">
<actions>
<action type="blockUI" message="Hello" timeout="1000"/>
</actions>
</button>
</buttons>
<renderconditions logictype="or">
<rendercondition type="blank" operator="=" fieldmodel="TempEgagement_Offer" sourcetype="fieldvalue" nosourcerowbehavior="deactivate" field="AccountId" fieldtargetobjects="Account" value="null" enclosevalueinquotes="false"/>
<rendercondition type="fieldvalue" operator="=" enclosevalueinquotes="true" fieldmodel="TempEgagement_Offer" sourcetype="fieldvalue" nosourcerowbehavior="deactivate" field="AccountId" fieldtargetobjects="Account"/>
</renderconditions>
</buttonset>
</components>
</division>
</divisions>
<styles>
<styleitem type="background" bgtype="none"/>
</styles>
<renderconditions logictype="and"/>
</grid>
</components>
<resources>
<labels/>
<css/>
<javascript>
</javascript>
</resources>
<styles>
<styleitem type="background" bgtype="none"/>
</styles>
</skuidpage>
Thanks again - this is very helpful.
I wanted to share back the same XML with one additional button added, which itself has conditional rendering. This button’s rendering conditions match what was on the Button Set and Responsive Grid, and the button looks to be rendered/unrendered as expected. I also found that the issue seems to only occur when changes involve blank or null values. A render condition that looks for a specific AccountId, for example will work as expected.
I will bring this to the attention of our developers, and we will update this conversation when a fix is available. I hope that the information I shared above is helpful in looking for a workaround. I also wanted to point out that the responsive grid in Barry’s example does appear to render/unrender its contents as expected, so enclosing your button sets and other content inside a responsive grid which is conditionally rendered should enable the desired behavior.
<skuidpage unsavedchangeswarning="yes" personalizationmode="server" useviewportmeta="true" showsidebar="false" showheader="false" tabtooverride="Contact">
<models>
<model id="TempEgagement_Offer" limit="1" query="false" createrowifnonefound="true" datasource="salesforce" type="" sobject="Contact" doclone="" forview="true">
<fields>
<field id="Id"/>
<field id="Name"/>
<field id="AccountId"/>
<field id="Account.Name"/>
<field id="Account.Id"/>
<field id="Account.MasterRecordId"/>
<field id="Account.MasterRecord.Name"/>
<field id="Account.MasterRecord.Id"/>
</fields>
<conditions/>
<actions/>
</model>
</models>
<components>
<pagetitle model="TempEgagement_Offer" uniqueid="sk-31baBM-140">
<maintitle>
<template>{{Name}}</template>
</maintitle>
<subtitle>
<template>{{Model.label}}</template>
</subtitle>
<actions>
<action type="multi" label="Start Over" uniqueid="sk-31d2GG-75">
<actions>
<action type="emptyModelData">
<models>
<model>TempEgagement_Offer</model>
</models>
</action>
<action type="createRow" model="TempEgagement_Offer" appendorprepend="prepend" defaultmodefornewitems="edit" affectedrows="context"/>
</actions>
</action>
</actions>
</pagetitle>
<grid uniqueid="sk-3KZxI6-152">
<divisions>
<division behavior="flex" minwidth="100px" ratio="1">
<components>
<basicfieldeditor showheader="true" showsavecancel="false" showerrorsinline="true" model="TempEgagement_Offer" buttonposition="" uniqueid="sk-1xftgw-283" mode="edit" layout="above">
<columns layoutmode="responsive" columngutter="4px" rowgutter="4px">
<column ratio="1" minwidth="300px" behavior="flex" verticalalign="top">
<sections>
<section title="Section A" collapsible="no" showheader="false">
<fields>
<field id="AccountId" valuehalign="" type="" optionsource="" pagesize="5" required="true" uniqueid="sk-31d2Gc-83" redirecttype="datasourcedefault">
<renderconditions logictype="and" onhidedatabehavior="keep"/>
<enableconditions/>
<searchfields/>
<filters/>
</field>
</fields>
</section>
</sections>
</column>
</columns>
</basicfieldeditor>
<buttonset uniqueid="sk-37jKwH-180" model="TempEgagement_Offer">
<buttons>
<button type="multi" label="This Button is conditionally rendered" uniqueid="sk-37jLEW-185">
<renderconditions logictype="or">
<rendercondition type="blank" operator="=" fieldmodel="TempEgagement_Offer" sourcetype="fieldvalue" field="AccountId" fieldtargetobjects="Account" value="null" enclosevalueinquotes="false"/>
<rendercondition type="fieldvalue" operator="=" enclosevalueinquotes="true" fieldmodel="TempEgagement_Offer" sourcetype="fieldvalue" field="AccountId" fieldtargetobjects="Account"/>
</renderconditions>
<enableconditions/>
</button>
</buttons>
</buttonset>
</components>
</division>
<division behavior="flex" verticalalign="top" minwidth="100px" ratio="1">
<components>
<grid uniqueid="sk-31dHrZ-109">
<divisions>
<division behavior="flex" minwidth="100px" ratio="1">
<components>
<buttonset model="TempEgagement_Offer" uniqueid="sk-29DabF-443" position="left">
<buttons>
<button type="multi" label="Add New Member" icon="sk-icon-add" uniqueid="sk-31d2Go-87">
<actions>
<action type="showPopup">
<popup title="" width="90%">
<components>
<grid uniqueid="sk-29Dv9c-485">
<divisions>
<division behavior="flex" minwidth="100px" ratio="1" verticalalign="top">
<components>
<buttonset model="TempEgagement_Offer" uniqueid="sk-29DvkL-490" position="left">
<buttons>
<button type="multi" label="Close" icon="sk-icon-close" uniqueid="sk-37gyHM-143">
<actions>
<action type="closeTopmostPopup"/>
</actions>
</button>
</buttons>
</buttonset>
<includepanel type="skuid" uniqueid="sk-29DxfD-493" pagename="RM1_Member" module=""/>
</components>
</division>
</divisions>
<styles>
<styleitem type="background" bgtype="none"/>
</styles>
</grid>
</components>
</popup>
</action>
</actions>
<renderconditions logictype="and"/>
<enableconditions/>
</button>
</buttons>
<renderconditions logictype="or"/>
</buttonset>
</components>
</division>
</divisions>
<styles>
<styleitem type="background" bgtype="none"/>
</styles>
<renderconditions logictype="or">
<rendercondition type="blank" operator="=" fieldmodel="TempEgagement_Offer" sourcetype="fieldvalue" nosourcerowbehavior="deactivate" field="AccountId" fieldtargetobjects="Account" value="null" enclosevalueinquotes="false"/>
<rendercondition type="fieldvalue" operator="=" enclosevalueinquotes="true" fieldmodel="TempEgagement_Offer" sourcetype="fieldvalue" nosourcerowbehavior="deactivate" field="AccountId" fieldtargetobjects="Account"/>
</renderconditions>
</grid>
<buttonset uniqueid="sk-31dzOP-141" model="TempEgagement_Offer" position="left">
<buttons>
<button type="multi" label="Say hi" uniqueid="sk-31d_T2-146">
<actions>
<action type="blockUI" message="Hello" timeout="1000"/>
</actions>
<renderconditions logictype="and"/>
<enableconditions logictype="and"/>
<hotkeys/>
</button>
</buttons>
<renderconditions logictype="or">
<rendercondition type="blank" operator="=" fieldmodel="TempEgagement_Offer" sourcetype="fieldvalue" nosourcerowbehavior="deactivate" field="AccountId" fieldtargetobjects="Account" value="null" enclosevalueinquotes="false"/>
<rendercondition type="fieldvalue" operator="=" fieldmodel="TempEgagement_Offer" sourcetype="fieldvalue" nosourcerowbehavior="deactivate" field="AccountId" fieldtargetobjects="Account" value="0014100000BHuSHAA1" enclosevalueinquotes="true"/>
</renderconditions>
</buttonset>
</components>
</division>
</divisions>
<styles>
<styleitem type="background" bgtype="none"/>
</styles>
<renderconditions logictype="and"/>
</grid>
</components>
<resources>
<labels/>
<css/>
<javascript>
</javascript>
</resources>
<styles>
<styleitem type="background" bgtype="none"/>
</styles>
<interactions/>
</skuidpage>
Hi Mark -
Thanks for looking in to this and the future information. Couple of things:
1) I confirmed that when the conditions are on the button within the buttonset directly and not on the buttonset itself (or the responsive grid), behavior appears to be as expected.
2) Regarding your comment that the responsive grid works as expected, as you’ll see in my “Bug #3”, the responsive grid does not render/unrender as expected. Possibly I’m mis-understanding what you meant there?
Bill - Given Mark’s analysis, if it suits your use case, you should be able to apply the conditions to the button directly (instead of the responsive grid as you have them currently) to work around the issues.
Hi Mark,
Barry’s suggestion will work on the button itself. However in expanding the test I can not get the rich text field to condition or the page title field to condition.
Even if the rich text field where conditionable , it will double or triple the effort if the responsive grid is not conditionable.
Below is the expanded test. Where else does conditions not work?
I use these conditions EVERYWHERE. When will this be fixed?
{{Name}}
{{Model.label}}
TempEgagement_Offer
<p>here is rich text that will not condition</p>
This is a page title that will not condition
&nb
Ah, I had overlooked the relevance of the actions underneath your Start Over button. I see what you’re describing now; clicking Start Over removes all rows from the model and adds a new blank one. The responsive grid renders/unrenders when the value is removed from the field, but as you’ve shown, it does not do so when the row is removed and a new blank row is added. What’s happening is that the Create New Row action doesn’t create a blank record with no Id # - Skuid assigns the new row a temporary Id#, like “sk-3BX-z7-52.” That is actually intended behavior. Instead, pointing the render condition at any other field on the blank row (that doesn’t receive a temporary value) should presumably elicit the desired render/unrender behavior.
Hi Bill,
I mentioned this briefly in my response to Barry above, but I think the Start Over button is not behaving as you want it to because when the action sequence creates a new row, that new row does not have a blank or null ID# - Skuid assigns it one, and that is the intended behavior. Instead of pointing to the ID# field, you could point to just about any other field in that model, as long as creating a new row leaves it blank.
I can’t estimate what the time frame might be for fixing the button set’s conditional rendering for null or blank fields, but it is very helpful to have the fleshed-out reproduction page ready to go, and this conversation has also been fruitful.
But I want the response grid to be hidden if the field is not null or empty. How do I handle the rich text field?
Mark -
I do not believe that the issue is with the “create row” action that results in a row with no “AccountId” field property. The reason I believe this is that when you initially load the page, the model data appears the same (no AccountId property on the model) and the grid/buttonset/button conditional rendering works fine.
What I believe is root cause of the issue is the 'Remove All Rows" action. When this happens, the grid & buttonset are not being properly “resynced” with the model to track new rows and their activity. This is the same issue that has arisen with a few other components in the past (you can search the community for other issues I’ve logged against remove all rows and conditional rendering). It has been quite a while since I’ve immersed myself in the underlying Skuid code, however I’m fairly certain that the “Remove all rows” and how the components track model changes is the key to fixing this.
Bill -
My thought for your situation is to use a wrapper inside of the responsive grid and put the wrapper in the grid and all the other stuff in the wrapper. Unfortunately, it appears that the wrapper component also has the same bug so that solution won’t work.
Mark -
Below is another sample that demonstrates the wrapper issue. It should be considered bug #4.
The XML below includes my original XML, plus your addition of a buttonset with the button conditionally rendered (instead of the buttonset) plus my new addition of the wrapper component.
Building from my previous steps to reproduce, Step #8 now identify two bugs:
** BUG #3 & Bug #4 **
Select an account
Expected Behavior
“Add new member” is NOT visible
“Say hi” is NOT visible
“Wrapper is Conditionally Rendered” is NOT visible
Actual Behavior
“Add new member” is visible (Bug #3)
"Say hi’ is NOT visible
“Wrapper is Conditionally rendered” is visible(Bug #4)
Sample Page XML
<skuidpage unsavedchangeswarning="yes" personalizationmode="server" useviewportmeta="true" showsidebar="false" showheader="false" tabtooverride="Contact">
<models>
<model id="TempEgagement_Offer" limit="1" query="false" createrowifnonefound="true" datasource="salesforce" type="" sobject="Contact" doclone="" forview="true">
<fields>
<field id="Id"/>
<field id="Name"/>
<field id="AccountId"/>
<field id="Account.Name"/>
<field id="Account.Id"/>
<field id="Account.MasterRecordId"/>
<field id="Account.MasterRecord.Name"/>
<field id="Account.MasterRecord.Id"/>
</fields>
<conditions/>
<actions/>
</model>
</models>
<components>
<pagetitle model="TempEgagement_Offer" uniqueid="sk-31baBM-140">
<maintitle>
<template>{{Name}}</template>
</maintitle>
<subtitle>
<template>{{Model.label}}</template>
</subtitle>
<actions>
<action type="multi" label="Start Over" uniqueid="sk-31d2GG-75">
<actions>
<action type="emptyModelData">
<models>
<model>TempEgagement_Offer</model>
</models>
</action>
<action type="createRow" model="TempEgagement_Offer" appendorprepend="prepend" defaultmodefornewitems="edit" affectedrows="context"/>
</actions>
</action>
</actions>
</pagetitle>
<grid uniqueid="sk-3KZxI6-152">
<divisions>
<division behavior="flex" minwidth="100px" ratio="1">
<components>
<basicfieldeditor showheader="true" showsavecancel="false" showerrorsinline="true" model="TempEgagement_Offer" buttonposition="" uniqueid="sk-1xftgw-283" mode="edit" layout="above">
<columns layoutmode="responsive" columngutter="4px" rowgutter="4px">
<column ratio="1" minwidth="300px" behavior="flex" verticalalign="top">
<sections>
<section title="Section A" collapsible="no" showheader="false">
<fields>
<field id="AccountId" valuehalign="" type="" optionsource="" pagesize="5" required="true" uniqueid="sk-31d2Gc-83">
<renderconditions logictype="and" onhidedatabehavior="keep"/>
<enableconditions/>
<searchfields/>
<filters/>
</field>
</fields>
</section>
</sections>
</column>
</columns>
</basicfieldeditor>
</components>
</division>
<division behavior="flex" verticalalign="top" minwidth="100px" ratio="1">
<components>
<grid uniqueid="sk-31dHrZ-109">
<divisions>
<division behavior="flex" minwidth="100px" ratio="1">
<components>
<buttonset model="TempEgagement_Offer" uniqueid="sk-29DabF-443" position="left">
<buttons>
<button type="multi" label="Add New Member" icon="sk-icon-add" uniqueid="sk-31d2Go-87">
<actions>
<action type="showPopup">
<popup title="" width="90%">
<components>
<tfg__popupcontroller uniqueid="sk-29EGUt-523" hideclose="true" disableescape="true"/>
<grid uniqueid="sk-29Dv9c-485">
<divisions>
<division behavior="flex" minwidth="100px" ratio="1" verticalalign="top">
<components>
<buttonset model="TempEgagement_Offer" uniqueid="sk-29DvkL-490" position="left">
<buttons>
<button type="multi" label="Close" icon="sk-icon-close">
<actions>
<action type="closeTopmostPopup"/>
</actions>
</button>
</buttons>
</buttonset>
<includepanel type="skuid" uniqueid="sk-29DxfD-493" pagename="RM1_Member" module=""/>
</components>
</division>
</divisions>
<styles>
<styleitem type="background" bgtype="none"/>
</styles>
</grid>
</components>
</popup>
</action>
</actions>
</button>
</buttons>
<renderconditions logictype="or"/>
</buttonset>
</components>
</division>
</divisions>
<styles>
<styleitem type="background" bgtype="none"/>
</styles>
<renderconditions logictype="or">
<rendercondition type="blank" operator="=" fieldmodel="TempEgagement_Offer" sourcetype="fieldvalue" nosourcerowbehavior="deactivate" field="AccountId" fieldtargetobjects="Account" value="null" enclosevalueinquotes="false"/>
<rendercondition type="fieldvalue" operator="=" enclosevalueinquotes="true" fieldmodel="TempEgagement_Offer" sourcetype="fieldvalue" nosourcerowbehavior="deactivate" field="AccountId" fieldtargetobjects="Account"/>
</renderconditions>
</grid>
<buttonset uniqueid="sk-31dzOP-141" model="TempEgagement_Offer" position="left">
<buttons>
<button type="multi" label="Say hi - Button Set Conditionally Rendered" uniqueid="sk-31d_T2-146">
<actions>
<action type="blockUI" message="Hello" timeout="1000"/>
</actions>
</button>
</buttons>
<renderconditions logictype="or">
<rendercondition type="blank" operator="=" fieldmodel="TempEgagement_Offer" sourcetype="fieldvalue" nosourcerowbehavior="deactivate" field="AccountId" fieldtargetobjects="Account" value="null" enclosevalueinquotes="false"/>
<rendercondition type="fieldvalue" operator="=" enclosevalueinquotes="true" fieldmodel="TempEgagement_Offer" sourcetype="fieldvalue" nosourcerowbehavior="deactivate" field="AccountId" fieldtargetobjects="Account"/>
</renderconditions>
</buttonset>
<buttonset uniqueid="sk-38t4K8-110" model="TempEgagement_Offer" position="left">
<buttons>
<button type="multi" label="Say hi - Button Inside ButtonSet Conditionally Rendered" uniqueid="sk-38t5CW-117">
<actions/>
<renderconditions logictype="or">
<rendercondition type="blank" operator="=" fieldmodel="TempEgagement_Offer" sourcetype="fieldvalue" field="AccountId" fieldtargetobjects="Account" value="null" enclosevalueinquotes="false"/>
<rendercondition type="fieldvalue" operator="=" enclosevalueinquotes="true" fieldmodel="TempEgagement_Offer" sourcetype="fieldvalue" field="AccountId" fieldtargetobjects="Account"/>
</renderconditions>
<enableconditions/>
</button>
</buttons>
</buttonset>
<wrapper uniqueid="sk-3CB3n5-112">
<components>
<buttonset uniqueid="sk-3CB6d9-122" model="TempEgagement_Offer" position="left">
<buttons>
<button type="multi" label="Wrapper Is Conditionally Rendered" uniqueid="sk-3CB6wO-126"/>
</buttons>
</buttonset>
</components>
<styles>
<styleitem type="background"/>
<styleitem type="border"/>
<styleitem type="size"/>
</styles>
<renderconditions logictype="or">
<rendercondition type="blank" operator="=" fieldmodel="TempEgagement_Offer" sourcetype="fieldvalue" nosourcerowbehavior="deactivate" field="AccountId" fieldtargetobjects="Account" value="null" enclosevalueinquotes="false"/>
<rendercondition type="fieldvalue" operator="=" enclosevalueinquotes="true" fieldmodel="TempEgagement_Offer" sourcetype="fieldvalue" nosourcerowbehavior="deactivate" field="AccountId" fieldtargetobjects="Account"/>
</renderconditions>
</wrapper>
</components>
</division>
</divisions>
<styles>
<styleitem type="background" bgtype="none"/>
</styles>
&nbs
Mark -
I further simplified the repro to eliminate the “variables” of null/empty/non-existent AccountID property. The below exhibits the same behavior as the repro page we have been working with but further isolates the issue.
Note that at all times (on initial page load & after start row) the field “HideEverything” always exists on the row in the model.
Instead of using “AccountId”, I have a UI-Only checkbox field that can be manually toggled. All the conditions are based on “HideEverything != true”.
Steps to reproduce:
- Create page using XML below
- Preview page
Expected Behavior = Actual Behavior
all 4 buttons are displayed
- Toggle 'hide everything" to true
Expected = Actual
All 4 buttons are removed
- Toggle “hide everything” to false
Expected
All 4 buttons are visible
Actual - ** Bug #1 **
“Say hi - Button Set Conditionally Rendered” is NOT visible
- Refresh Page
Expected = Actual
all 4 buttons are visible
- Click Start Over
Expected = Actual
All 4 buttons are visible
- Toggle “hide everything” to true
Expected
All 4 buttons are removed
Actual - ** Bug #2, #3 & #4 **
"Responsive Grid Conditionally Rendered is visible
“Say hi - Button Set Conditionally Rendered” is visible
“Wrapper is Conditionally Rendered” is visible
<skuidpage unsavedchangeswarning="yes" personalizationmode="server" useviewportmeta="true" showsidebar="false" showheader="false" tabtooverride="Contact">
<models>
<model id="TempEgagement_Offer" limit="1" query="false" createrowifnonefound="true" datasource="salesforce" type="" sobject="Contact" doclone="" forview="true">
<fields>
<field id="Id"/>
<field id="Name"/>
<field id="HideEverything" uionly="true" displaytype="BOOLEAN" ogdisplaytype="TEXT" defaultvaluetype="fieldvalue" readonly="false" returntype="BOOLEAN" label="Hide Everything" defaultValue="false"/>
</fields>
<conditions/>
<actions/>
</model>
</models>
<components>
<pagetitle model="TempEgagement_Offer" uniqueid="sk-31baBM-140">
<maintitle>
<template>{{Name}}</template>
</maintitle>
<subtitle>
<template>{{Model.label}}</template>
</subtitle>
<actions>
<action type="multi" label="Start Over" uniqueid="sk-31d2GG-75">
<actions>
<action type="emptyModelData">
<models>
<model>TempEgagement_Offer</model>
</models>
</action>
<action type="createRow" model="TempEgagement_Offer" appendorprepend="prepend" defaultmodefornewitems="edit" affectedrows="context"/>
</actions>
</action>
</actions>
</pagetitle>
<grid uniqueid="sk-3KZxI6-152">
<divisions>
<division behavior="flex" minwidth="100px" ratio="1">
<components>
<basicfieldeditor showheader="true" showsavecancel="false" showerrorsinline="true" model="TempEgagement_Offer" buttonposition="" uniqueid="sk-1xftgw-283" mode="edit" layout="above">
<columns layoutmode="responsive" columngutter="4px" rowgutter="4px">
<column ratio="1" minwidth="300px" behavior="flex" verticalalign="top">
<sections>
<section title="Section A" collapsible="no" showheader="false">
<fields>
<field uniqueid="sk-3CFmzN-208" id="HideEverything" valuehalign="" type=""/>
</fields>
</section>
</sections>
</column>
</columns>
</basicfieldeditor>
</components>
</division>
<division behavior="flex" verticalalign="top" minwidth="100px" ratio="1">
<components>
<grid uniqueid="sk-31dHrZ-109">
<divisions>
<division behavior="flex" minwidth="100px" ratio="1">
<components>
<buttonset model="TempEgagement_Offer" uniqueid="sk-29DabF-443" position="left">
<buttons>
<button type="multi" label="Responsive Grid Conditionally Rendered" icon="sk-icon-add" uniqueid="sk-31d2Go-87">
<actions/>
<renderconditions logictype="and"/>
<enableconditions/>
</button>
</buttons>
<renderconditions logictype="or"/>
</buttonset>
</components>
</division>
</divisions>
<styles>
<styleitem type="background" bgtype="none"/>
</styles>
<renderconditions logictype="or">
<rendercondition type="fieldvalue" operator="!=" enclosevalueinquotes="false" fieldmodel="TempEgagement_Offer" sourcetype="fieldvalue" nosourcerowbehavior="deactivate" field="HideEverything" fieldtargetobjects="Contact" value="true"/>
</renderconditions>
</grid>
<buttonset uniqueid="sk-31dzOP-141" model="TempEgagement_Offer" position="left">
<buttons>
<button type="multi" label="Say hi - Button Set Conditionally Rendered" uniqueid="sk-31d_T2-146">
<actions/>
<renderconditions logictype="and"/>
<enableconditions/>
</button>
</buttons>
<renderconditions logictype="or">
<rendercondition type="fieldvalue" operator="!=" fieldmodel="TempEgagement_Offer" sourcetype="fieldvalue" nosourcerowbehavior="deactivate" field="HideEverything" fieldtargetobjects="Contact" value="true" enclosevalueinquotes="false"/>
</renderconditions>
</buttonset>
<buttonset uniqueid="sk-38t4K8-110" model="TempEgagement_Offer" position="left">
<buttons>
<button type="multi" label="Say hi - Button Inside ButtonSet Conditionally Rendered" uniqueid="sk-38t5CW-117">
<actions/>
<renderconditions logictype="or">
<rendercondition type="fieldvalue" operator="!=" fieldmodel="TempEgagement_Offer" sourcetype="fieldvalue" field="HideEverything" fieldtargetobjects="Contact" value="true" enclosevalueinquotes="false"/>
</renderconditions>
<enableconditions/>
</button>
</buttons>
<renderconditions logictype="and"/>
</buttonset>
<wrapper uniqueid="sk-3CB3n5-112">
<components>
<buttonset uniqueid="sk-3CB6d9-122" model="TempEgagement_Offer" position="left">
<buttons>
<button type="multi" label="Wrapper Is Conditionally Rendered" uniqueid="sk-3CB6wO-126">
<renderconditions logictype="and"/>
<enableconditions/>
<actions/>
</button>
</buttons>
<renderconditions logictype="and"/>
</buttonset>
</components>
<styles>
<styleitem type="background"/>
<styleitem type="border"/>
<styleitem type="size"/>
</styles>
<renderconditions logictype="or">
<rendercondition type="fieldvalue" operator="!=" fieldmodel="TempEgagement_Offer" sourcetype="fieldvalue" nosourcerowbehavior="deactivate" field="HideEverything" fieldtargetobjects="Contact" value="true" enclosevalueinquotes="false"/>
</renderconditions>
</wrapper>
</components>
</division>
</divisions>
<styles>
<styleitem type="background" bgtype="none"/>
</styles>
<renderconditions logictype="and"/>
</grid>
</components>
<resources>
<labels/>
<css/>
<javascript/>
</resources>
<styles>
<styleitem type="background" bgtype="none"/>
</styles>
</skuidpage>
Barry, I’m looking at this new example now. The presence of temporary Ids might indeed be a red herring in this scenario. You and Bill have demonstrated the expected behavior, and spent a good amount of time helping get to the bottom of this. I’ll share this new page and reproduction steps with our developers as well, and mark the issue as a regression, since the behavior had already surfaced and been resolved in the past.
Mark -
Thanks for the update. It’s possible that one or more of these are regressions and one or more have never previously been resolved and existed all along. Difficult to say for sure but, as you mention, the key is getting them addressed since there’s definitely issues and inconsistencies.
Bill -
I’ve spent a little time thinking through what your possible workarounds are short of the fixes from Skuid. One idea I had was to “Cancel changes in model” instead of “Remove all rows” but given I believe that your use case is to create a new row in the model on page load, the “Cancel all changes” essentially is the same as “Remove all rows” so that won’t work.
The only other option would be to use "Update Field’ setting the value to blank. this would be the functional equivalent of “remove/create” but leave the row that is in the model in-place and avoid the removal/add which triggers the conditional rendering issues. Be careful with this aproach though if you ever end up saving the row. Also, make sure to update all fields to blank not just the accountid field. I’d need to know more about your specific use case to opine on any other viable workarounds.
Thanks Mark and Barry,
Mark,
When will this be fixed?
Bill, I’m afraid I can’t estimate when it will be fixed. With this Community conversation, we’ve given our developers a good amount of information about the issue, which I’m sure will help their efforts.
did Brooklyn Q2 Point Release - Iteration 1 address this issue?
Unfortunately, the issue remains unresolved at this time.
Does Brooklyn Q2 Point Release - Iteration 2 address this issue?
Hi Bill. The issue is still unresolved in the most recent iteration. We do have this conversation earmarked and connected to the issue internally, and will update it when a fix is available.
On a separate note, I wanted to point out a new action that was released not too long ago, “toggle component.” It may be useful in some of your use cases - it lets you toggle a component’s visibility via the action framework. I haven’t found a way to employ it in the scenario that you’ve discussed on this thread, but it seemed related enough that mentioning it would be worthwhile.
Thanks for the info on “Toggle Component” I missed that one. Any updates on this issue? Whenever I close a collapsible window the conditions do not work. I can not starting adding additional users until this is resolved. What does it take to get this to be addressed?
Hi Bill. The development team has been aware of and working on resolving this. Good progress has been made, and although we don’t know yet when it will be ready to release, a fix is in the works.
Here is more detailed video.
https://drive.google.com/file/d/0B409lhd9sYDcRXN1enNJVGVHc3c/view
Reply
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.