Many years ago, the browser wars raged across the landscape. Developers were forced to use non-standard extensions that worked radically different across other platforms and operating systems - if they worked at all. Doing anything fancy (shiny!) in the browser was a painful process best compared to slowly pulling out your finger nails.
In the midst of this chaos ColdFusion threw a life preserver. It began to offer client side functionality meant to simplify the pain of front end development. Tags like cfgrid were updated from their ancient Java applet roots to support pure HTML, JavaScript, and CSS implementations. It was awesome. Everything worked perfectly. Bells rang. Beer flowed. The end.
Until... that same developer needed to slightly tweak the control. Luckily the UI controls provided arguments for modifying the look and feel of the controls.
Except... the developer needed to change something not supported by the tag! Luckily the developers at Adobe provided a JavaScript hook to get to the underlying control and tweak it.
Except... later on when ColdFusion was updated, the JavaScript library used by the UI stuff was also updated and the code the developers used previously stopped working.
You get the idea. What's a poor developer to do?
Simple. Learn JavaScript. Learn CSS. Don't rely on abstractions. To be clear, sometimes abstractions make sense. It is awesome that ColdFusion handles database pooling and connections for you. You don't want to write those libraries. But everything these UI tags do are things that are easily learnable by a developer. In fact, those of us behind this project would argue strongly that these are critical skills that every web developer should know already.
It is time to stop hiding from JavaScript and just learn it. This is where this project comes in.
This project contains multiple chapters covering the various ColdFusion UI tags. (In some cases a specific tag/argument pair.) Each chapter will follow a similar format.
If you want to contribute, please file issues with any suggestions or bug reports. We also welcome all pull requests!
This project was created by Raymond Camden (http://www.raymondcamden.com) and Adam Cameron (http://cfmlblog.adamcameron.me/) in January of 2014.