Dynamic Input Field Lightning Component

For a project I am currently working on I wanted to implement a dynamic input field that set it’s body based on the user’s selection of the type of query they are making. There are 6 possible fields the user can query on and these 6 fields can be mapped to 3 types of queries — Date Picker, Date Rage and Input Text. Using what I have learned in dev 601 with Mike Topalovich (kudos again to Mike), I have been actively pairing down and generic-izing (?) every component I build. So this solution needed to be both generic to the given situation and also flexible enough to accommodate the variety of options needed. I ended up creating a simple component to hold the dynamic input field which has optional parameters of “name” and “dynamicSetting”. I wasn’t able to pass the change value to the dynamicSetting on the created component so I have an attribute in the parent that controls the colored label showing the value of the date slider. This is also the value that would be passed to the APEX controller to execute the query.

The main controller passes the value from the onclick event to the helper and runs through a Switch statement mapping the type to the proper input field body. Then the helper sets the body of the dynamic input field accordingly. I declare the dynamicInputField.cmp as a dependency when I load the parent component to avoid trips to the server. I am pretty happy with the result and my only ToDo is minimize the code within the Switch statement to reduce what feels like duplicative javascript. Here are the views of the 3 possible input fields:

Why Lightning is Making Salesforce Even Better For Developers & Admins

I have been developing with the SFDC platform for several years. In this time I have surmounted many a learning curve and devised copious work arounds for dead ends that I have run into because of system limitations. These challenges have been exciting to overcome but have often meant adding code that I knew I would one day be back to refactor. Salesforce has been sold as a clicks not code development platform but as anyone who has implemented SFDC knows there is a limit to where configuration alone can take you. I think this has created divisions between admins and developers. There has not been until now, a way to handoff your beautifully written and toiled over code solutions to your admin wizard friends. Along came Lightning and everything changes…

Adoption is still low because so many users are married to their Classic UI and are not inclined to invest in making the switch or are not sure where to begin. I think that Lightning adoption will grow as more developers understand the power of the framework. I am taking the Dev 601 course this week with Mike Topalovich. Although I have been building some Lightning Components over the past few months, I am finding lots of good nuggets that I have not yet discovered in this training. Kudos to Mike for his depth of knowledge on this subject and for keeping some levity through the tech talk!

Here are some of my favorite learnings so far:

  • Components are your lego blocks… developing with SFDC is now modular by design!
  • <Lightning:layout> component gives you the Grid for free! Crowds go wild… especially those who have toiled over SLDS styling for days….
  • <aura:if> is magical…. I can see use cases with this involving custom component configuration by admins.
  • Expose your components for use by your Admin friends and make them configurable by adding a Design Resource
  • LEX is still a work in progress but there is something special about the SFDC developer community…. (just look at StackOverflow if you don’t believe me) I know that the innovation of folks working with SFDC LEX will grow exponentially now that we have just been given this awesome new set of tools for our toolkit!
  • Javascript, Javascript everywhere…. If you are a JS dork like I am, this is just great news.

….More to come!

 

Human and Able

The engineer at Google who wrote the sexist manifesto about why people without a Y chromosome are less fit for technical jobs is unfortunately, not alone in his small-mindedness. All humans who are not white males —that fit into one of the desired buckets for what white maleness should look like in America— are aware that there are people around us with hate in their hearts and smallness in their heads. The problem is that in the past year the conversation has been brought to the fore as certain political factions and certain former reality tv stars have taken over a certain house that is white and also near to Delaware… read between the lines folks. There are some who might argue that it is healthy to bring the discussion to light. I would argue that you should leave that pimple alone and let the puss stay where it is otherwise you might end up with an ugly scar. Hate, racism and bigotry are facets of our animalistic-lizard-brain tendency toward tribalism and have always been floating around in the hearts and minds of human beings. The trigger for activating the small-mindedness can be anything from rejection, repressed sexuality, or just simple ignorance. To argue that we should allow ourselves to indulge these base and lesser instincts is to suggest that we should plunge ourselves back into the pages of ancient history. We have come far but we must actively ensure that our progress is guarded and tended otherwise the weeds will encroach and the crop will be spoiled. Civility is not just burying, it is not about political correctness or liberal elitism. Civility is about knowing that one’s own opinion is not the truth and maintaining an openness to others because it is good for them and good for ourselves and ultimately good for humanity when we create space for diverse thought and education. Free speech is not the same as hate speech. Having a conversation about diversity does not mean spewing your poisoned inner workings to the world. Most importantly, dialogue that encourages diversity must come from a place of love and not from fear.