UI Components
Textbox
- (Browser) HTML text box<input type="text" value="ABC" onblur="myBlur()" onchange="myChange()">
- (Custom component) HTML text box //earlier<cst-textbox model="{inputMdl}" options.bind="{options}" evt-blur-callback="myBlur()">- Note: Options can have style, theme..etc 
- (SLICK component) HTML text box- Near to HTML standards <cst-input type="text" value="ABC" onblur="myBlur()">
- Alternative schema way ```javascriptlet mySchema = {type: "object",required: ["tenderNotificationNumber"],properties: {tenderId: {type: "string", //doubleminLength: 3,maxLength: 500description: "Tender# is required",title:"Tender No",customAttr: {placeHolder: ' Enter',infoText:'Example : TW/ASSAM/2019_Assam_67020_1'}}}}<cst-input json-value="ABC" json-schema="mySchema" json-schema-prop="tenderId">```- Note : for developer quick access in the larger schema 'json-schema-prop' , can be nested too  
 
Dropdown
- (Browser) HTML select<select id="ddlCars"><option value="volvo">Volvo</option><option value="saab">Saab</option><option value="mercedes">Mercedes</option><option value="audi">Audi</option></select>
- (Custom component) HTML dropdown //earlier<cst-dropdown items.bind="{items}" input-id.bind="{inputid}" evt-change-callback="myChange()">- Note: Showing few options/ attributes only 
- (SLICK component) HTML dropdown- Near to HTML standards <cst-select value="mercedes" onchange="myChange()" ite ms.bind="{items}">
- Alternative schema way let mySchema = {type: "object",properties: {RegionId: {type: "int",title:"Region",customAttr: {placeHolder: ' -- Select --',infoText:'Indian states',dataSource: 'MASTER_TBL_GROUP_REGION_LEVEL_1', //to check in page objectdataSourceAPI: '/generic/getMasters?CODE=MASTER_TBL_GROUP_REGION_LEVEL_1',displayType:'dropdown'//radio, longTextBox,variant:'SLIM_MAT'}}}}Note : In form component, group all dataSource & call one API<cst-select json-value="mercedes" json-schema="mySchema" json-schema-prop="RegionId">
 
Form
- (Browser) Independently add all small components & do design 
- No custom component done (earlier in GREAT thought like this as old_form) 
- (SLICK component) Form- only schema way let mySchema = {type: "object",properties: {RegionId: {type: "int",title:"Region",customAttr: {placeHolder: ' -- Select --',infoText:'Indian states',dataSource: 'MASTER_TBL_GROUP_REGION_LEVEL_1', //to check in page objectdataSourceAPI: '/generic/getMasters?CODE=MASTER_TBL_GROUP_REGION_LEVEL_1',displayType:'dropdown'//radio, longTextBox}},tenderId: {type: "string", //doubleminLength: 3,maxLength: 500description: "Tender# is required",title:"Tender No",customAttr: {placeHolder: ' Enter',infoText:'Example : TW/ASSAM/2019_Assam_67020_1'}},customSearchBtn: {type: "string",title:"Search",customAttr: {displayType:'button'}},customClearBtn: {type: "string",title:"Clear",customAttr: {displayType:'button'}},customSaveBtn: {type: "string",title:"Save",customAttr: {displayType:'button',targetFormDataAPI:'/generic/saveMaster?Collection=TENDERS', //in body form objectfunctionModule:'/filePath.js?fn=genericFunc',functionId:'ASL_SHUBHA_GENERIC_2'}}},customLayout:{small:["RegionId","tenderId""customSearchBtn","customClearBtn","customSaveBtn"],medium:["RegionId*3, tenderId","customSearchBtn, customClearBtn","customSaveBtn"]}}Note : Property name like "customSearchBtn" can become element identifier<cst-form json-value="" json-schema="mySchema" on-elm-click="someFunc(propId)" on-elm-change="someFunc(propId)">- Note : Either have different schema for different screens, else common_schema & page_layout schema separate & merge both objects at run time customLayout = Grid/ Flex (have wrap in both ?) - Form should have error summary component too - Think of nested forms, child array items..etc (AfterMT) - In future can't this schema be created by UI (CRM) ? //currently not 
 
- List page 
- Similarly, Summary page containing form, list page, header & quick icons