SlideShare una empresa de Scribd logo
1 de 32
Descargar para leer sin conexión
CREATING A STUNNING 
UI WITH ORACLE ADF 
FACES, USING SASS 
ADF SKINNING MADE EASY 
Provided by 
Created by Amr Gawish / gawi.sh / @agawish
WHO AM I 
Amr Ismail Abdellatief Ibrahim Mostafa Hassan Mohammad Ali 
El-Sayed Gawish 
Oracle Middleware Consultant 
Fullstack Middleware Developer 
Oracle ACE associate
PUBLICATIONS
Since 2003 
Based in United Kingdom 
Oracle Platinum Partner 
Oracle Middleware Partner of 2013 
Specialist Reseller of 2014 by CRN 
infomentum.co.uk
ORACLE ADF HAS MANY FACES 
Part of Oracle ADF Family, but can be used on its own 
One of the richest component-based framework 
More than 150+ Ajaxed component 
Charts and Graphs without the fuzz 
Great JavaScript companion library 
Can be optimized for caching 
Has a free version with all that glory 
Much much more...
ORACLE ADF HAS MANY FACES 
Great, but my customer want to be: 
Flat 
Responsive 
Mobile First 
Adaptive 
Metro 
The next facebook
GIVE ADF FACES A NEW SKIN 
Can target all instances of the component for a consistent look 
Obfuscated and optimized for your web use 
Dynamically create different styles for different browsers 
Cacheable 
Great JavaScript companion library 
Can be optimized for caching 
Visual tool for easy editing 
Can extend other skins 
More than just CSS 
One file to rule them all 
Can target agents / accessibility profiles / platform and 
recently viewports 
Optimised for resuabilitiyu using aliases
GIVE ADF FACES A NEW SKIN 
.MyColor:alias{ 
color: #fefefe; 
} .AFDefaultColor:alias { 
-tr-inhibit: color; 
color: -tr-property-ref(".MyColor:alias","color"); 
} 
af|selectOneChoice::label { 
-tr-rule-ref: selector(".AFLabel:alias"); 
} 
@platform window, linux { 
@agent ie and (version: 7) and (version: 8), 
gecko and (version: 1.9) { 
af|inputText::content:rtl { 
background-color:pink; 
} 
} 
}
SKINNING IS NOT CSSING 
We all have been there!
SKINNING IS NOT CSSING 
Problems you face when working with ADF Skinning as a CSS file: 
Component generated HTML doesn't match the front-end 
vision 
Different syntax of CSS 
Can't use browser's prefixed values 
CSS Version 
.my-style{ 
background-image: -moz-linear-gradient(left, red, #f06d06); 
background-image: -webkit-gradient(linear, left top, right top, from(red), to(#f06d06)); 
background-image: -o-linear-gradient(left, red, #f06d06); 
background-image: linear-gradient(to right, red, #f06d06); 
} 
ADF End Result 
.ps20{ 
background-image: linear-gradient(to right, red, #f06d06); 
}
SKINNING IS NOT CSSING 
Why Front-end developers can't create ADF compatible skin 
They need to use JDeveloper and Create ADF application to 
work with 
ADF Skinning style can be intimidating 
Can't work offline 
Adapted CSS may require changing the ADF page components 
structure
SKINNING IS NOT CSSING 
Still there are difficulties for ADF Developers to do skinning 
CSS can be intimidating 
CSS is not DRY enough 
Harder to maintain
MAKE SKINNING SASSY 
SASS (Syntactically Awesome Style Sheets) is an Extension of 
CSS 
Makes very DRY Code 
Can reuse variables 
Can create nested styles 
Can create mixin (methods) and inheritance 
Can use operators 
Can use Loops 
Can use Conditions 
Can use lists and maps (newest version of SASS) 
Works well with ADF skin css syntax 
Mature with great community support 
Generates well formatted CSS
MAKE SKINNING SASSY 
Variables example 
$font-stack: Helvetica, sans-serif; 
$primary-color: darken(#666, 50%); 
.AFDefaultFontFamily:alias { 
font: 100% $font-stack; 
} .AFTextColor:alias{ 
color: $primary-color; 
}
MAKE SKINNING SASSY 
Nesting example 
af|column{ 
background-color: $background-color; 
&::data-cell{ 
border: 0; 
&:selected{ 
border: 1px solid $selected-color; 
} 
} 
}
MAKE SKINNING SASSY 
Mixins example 
@mixin colors($text, $background, $border) { 
color: $text; 
background-color: $background; 
border-color: $border; 
} 
af|button.cancel-button{ 
@include colors(#fff, #c9302c, #ac2925); 
}
MAKE SKINNING SASSY 
Inheritance example 
.reset-border { 
border:0; 
} 
af|messages{ 
@extend .reset-border ; 
border: 1px solid #ccc; 
} 
af|table{ 
@extend .reset-border ; 
background: #cecece; 
}
MAKE SKINNING SASSY 
Operators example 
$page-width: 960px; 
.main-content{ 
width: $page-width / 100 * 65; //width: 624px; 
} .sidebar{ 
width: $page-width / 100 * 35; //width: 336px; 
}
MAKE SKINNING SASSY 
Loop example 
@for $i from 1 through 4{ 
af|button.style-#{$i} { 
width: 60px + ($i * 10); 
} 
}
GUIDE YOUR SASS WITH A COMPASS 
Compass: A SASS framework that includes web's best reusable 
patterns 
Border radius 
Opacity 
Box shadow 
Text Shadow 
and more...
GUIDE YOUR SASS WITH A COMPASS 
Border box example 
@import "compass/css3"; 
@import "compass/utilities"; 
af|button{ 
@include border-radius(25px); 
/* This will generate: 
-moz-border-radius: 25px; 
-webkit-border-radius: 25px; 
border-radius: 25px; 
*/ 
}
GUIDE YOUR SASS WITH A COMPASS 
Opacity example 
@import "compass/css3"; 
af|panelTabbed{ 
@include transparent; 
/* This will generate: 
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0); 
opacity: 0; 
*/ 
} 
af|button:disabled{ 
@include opacity(0.2); 
/* This will generate: 
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=20); 
opacity: 0.2; 
*/ 
}
GUIDE YOUR SASS WITH A COMPASS 
Text shadow example 
$default-text-shadow-color: rgba(red, 0.6); 
$default-text-shadow-blur: 3px; 
$default-text-shadow-v-offset: 1px; 
.main-title{ 
@include single-text-shadow;; 
/* This will generate: 
text-shadow: 0px 1px 3px rgba(255, 0, 0, 0.6); 
*/ 
}
MAXIMIZE PRODUCTIVITY WITH YOUR SKIN 
SASS can maximize productivity and reusability.
MAXIMIZE PRODUCTIVITY OF YOUR SKIN 
By separating your skin into different files, you can achieve: 
Modularity 
Reusability 
Productivity 
All without sacrificing performance
MAXIMIZE PRODUCTIVITY WITH YOUR SKIN 
Example of using SASS modules
MAXIMIZE PRODUCTIVITY WITH YOUR SKIN 
Example of using SASS modules
SKINNING TIPS AND TRICKS 
Through our experiences, here is a small list of things that can 
save you a lot of troubles in the future 
Use non-stretching layout components for responsive design 
Separate global variables of SASS in its own file 
Make sure 
org.apache.myfaces.trinidad.DISABLE_CONTENT_COMPRESSION 
equals false whenever you are developing your skin 
Make sure 
org.apache.myfaces.trinidad.CHECK_FILE_MODIFICATION equals 
true whenever you are developing your skin 
Use a secondary native SASS/CSS file whenever you use version 
lower than 12.1.3 
Be friend with Skin editor, it can provide you great information
SKINNING TIPS AND TRICKS 
Know all AF global aliases very well, they will save you a lot of 
time 
Use SASS variables within your aliases
SKINNING TIPS AND TRICKS 
Minimize the use of !important. Only use it when you don't have 
any choice
Q/A
THANK YOU 
Provided by: 
Amr Gawish / gawi.sh / @agawish

Más contenido relacionado

Destacado

FDA Guidance On PROs By Diane Wild, M Sc
FDA Guidance On PROs By Diane Wild, M ScFDA Guidance On PROs By Diane Wild, M Sc
FDA Guidance On PROs By Diane Wild, M ScchallPHT
 
Bringing Home The Love
Bringing Home The LoveBringing Home The Love
Bringing Home The LoveChris Walker
 
Optimized Internet Marketing
Optimized Internet MarketingOptimized Internet Marketing
Optimized Internet MarketingHans Riemer
 
Users Guide 272 345
Users Guide 272 345Users Guide 272 345
Users Guide 272 345guest7ec644
 
D:\Presentation\Presentation1
D:\Presentation\Presentation1D:\Presentation\Presentation1
D:\Presentation\Presentation1christinacss13
 
Informatie Aan Zee - TTT Digital Architecture
Informatie Aan Zee - TTT Digital ArchitectureInformatie Aan Zee - TTT Digital Architecture
Informatie Aan Zee - TTT Digital ArchitecturePatrick Hochstenbach
 
San Mateo County Fair Overview
San Mateo County Fair OverviewSan Mateo County Fair Overview
San Mateo County Fair Overviewwfa
 
All Access
All AccessAll Access
All Accesswfa
 
صور من معرض الرسوم السادس للأطفال
صور من معرض الرسوم السادس للأطفالصور من معرض الرسوم السادس للأطفال
صور من معرض الرسوم السادس للأطفالakhbardk
 
SEO and Online Marketing - The New Rules for Business
SEO and Online Marketing - The New Rules for BusinessSEO and Online Marketing - The New Rules for Business
SEO and Online Marketing - The New Rules for BusinessHans Riemer
 

Destacado (20)

Gaining Alignment Via Partnering
Gaining Alignment Via PartneringGaining Alignment Via Partnering
Gaining Alignment Via Partnering
 
Deeper Into Electronics - Today Mag Dec 1989
Deeper Into Electronics -  Today Mag Dec 1989Deeper Into Electronics -  Today Mag Dec 1989
Deeper Into Electronics - Today Mag Dec 1989
 
FDA Guidance On PROs By Diane Wild, M Sc
FDA Guidance On PROs By Diane Wild, M ScFDA Guidance On PROs By Diane Wild, M Sc
FDA Guidance On PROs By Diane Wild, M Sc
 
Bringing Home The Love
Bringing Home The LoveBringing Home The Love
Bringing Home The Love
 
Hands-On SEO
Hands-On SEOHands-On SEO
Hands-On SEO
 
Optimized Internet Marketing
Optimized Internet MarketingOptimized Internet Marketing
Optimized Internet Marketing
 
Final presentation
Final presentationFinal presentation
Final presentation
 
Affinity Marketing Programs and the Association’s Dilemma
Affinity Marketing Programs and the Association’s DilemmaAffinity Marketing Programs and the Association’s Dilemma
Affinity Marketing Programs and the Association’s Dilemma
 
L'email marketing
L'email marketingL'email marketing
L'email marketing
 
No Typical Love Story
No Typical Love StoryNo Typical Love Story
No Typical Love Story
 
Users Guide 272 345
Users Guide 272 345Users Guide 272 345
Users Guide 272 345
 
D:\Presentation\Presentation1
D:\Presentation\Presentation1D:\Presentation\Presentation1
D:\Presentation\Presentation1
 
Informatie Aan Zee - TTT Digital Architecture
Informatie Aan Zee - TTT Digital ArchitectureInformatie Aan Zee - TTT Digital Architecture
Informatie Aan Zee - TTT Digital Architecture
 
Open | Linked | Open Linked data
Open | Linked | Open Linked dataOpen | Linked | Open Linked data
Open | Linked | Open Linked data
 
San Mateo County Fair Overview
San Mateo County Fair OverviewSan Mateo County Fair Overview
San Mateo County Fair Overview
 
All Access
All AccessAll Access
All Access
 
Working With Uncle Sam: Washington Building Congress
Working With Uncle Sam: Washington Building CongressWorking With Uncle Sam: Washington Building Congress
Working With Uncle Sam: Washington Building Congress
 
صور من معرض الرسوم السادس للأطفال
صور من معرض الرسوم السادس للأطفالصور من معرض الرسوم السادس للأطفال
صور من معرض الرسوم السادس للأطفال
 
Purchasing Cooperatives and Job Order Contracting Make Sense CJE news 2006 ...
Purchasing Cooperatives and Job Order Contracting Make Sense   CJE news 2006 ...Purchasing Cooperatives and Job Order Contracting Make Sense   CJE news 2006 ...
Purchasing Cooperatives and Job Order Contracting Make Sense CJE news 2006 ...
 
SEO and Online Marketing - The New Rules for Business
SEO and Online Marketing - The New Rules for BusinessSEO and Online Marketing - The New Rules for Business
SEO and Online Marketing - The New Rules for Business
 

Similar a @Agawish creating a stunning ui with oracle adf faces, using sass

Write LESS. DO more.
Write LESS. DO more.Write LESS. DO more.
Write LESS. DO more.Eugene Nor
 
CSS Less framework overview, Pros and Cons
CSS Less framework overview, Pros and ConsCSS Less framework overview, Pros and Cons
CSS Less framework overview, Pros and ConsSanjoy Kr. Paul
 
An Introduction to CSS Preprocessors (SASS & LESS)
An Introduction to CSS Preprocessors (SASS & LESS)An Introduction to CSS Preprocessors (SASS & LESS)
An Introduction to CSS Preprocessors (SASS & LESS)Folio3 Software
 
Modularization css with sass
Modularization css with sassModularization css with sass
Modularization css with sassHuiyi Yan
 
UI Realigning & Refactoring by Jina Bolton
UI Realigning & Refactoring by Jina BoltonUI Realigning & Refactoring by Jina Bolton
UI Realigning & Refactoring by Jina BoltonCodemotion
 
Elegant CSS Design In Drupal: LESS vs Sass
Elegant CSS Design In Drupal: LESS vs SassElegant CSS Design In Drupal: LESS vs Sass
Elegant CSS Design In Drupal: LESS vs SassMediacurrent
 
CSS 開發加速指南-Sass & Compass
CSS 開發加速指南-Sass & CompassCSS 開發加速指南-Sass & Compass
CSS 開發加速指南-Sass & CompassLucien Lee
 
SCSS Implementation
SCSS ImplementationSCSS Implementation
SCSS ImplementationAmey Parab
 
SASS is more than LESS
SASS is more than LESSSASS is more than LESS
SASS is more than LESSItai Koren
 
Client side performance compromises worth making
Client side performance compromises worth makingClient side performance compromises worth making
Client side performance compromises worth makingCathy Lill
 
Sakai Meet MORPHEUS: Slides
Sakai Meet MORPHEUS: SlidesSakai Meet MORPHEUS: Slides
Sakai Meet MORPHEUS: Slidesalienresident
 
Simple introduction Sass
Simple introduction SassSimple introduction Sass
Simple introduction SassZeeshan Ahmed
 
Create SASSy web parts in SPFx
Create SASSy web parts in SPFxCreate SASSy web parts in SPFx
Create SASSy web parts in SPFxStefan Bauer
 
SASS, Compass, Gulp, Greensock
SASS, Compass, Gulp, GreensockSASS, Compass, Gulp, Greensock
SASS, Compass, Gulp, GreensockMarco Pinheiro
 
SAP integration sample payloads for Azure Logic Apps
SAP integration sample payloads for Azure Logic AppsSAP integration sample payloads for Azure Logic Apps
SAP integration sample payloads for Azure Logic AppsDavid Burg
 

Similar a @Agawish creating a stunning ui with oracle adf faces, using sass (20)

Write LESS. DO more.
Write LESS. DO more.Write LESS. DO more.
Write LESS. DO more.
 
CSS Less framework overview, Pros and Cons
CSS Less framework overview, Pros and ConsCSS Less framework overview, Pros and Cons
CSS Less framework overview, Pros and Cons
 
CSS3
CSS3CSS3
CSS3
 
An Introduction to CSS Preprocessors (SASS & LESS)
An Introduction to CSS Preprocessors (SASS & LESS)An Introduction to CSS Preprocessors (SASS & LESS)
An Introduction to CSS Preprocessors (SASS & LESS)
 
Modularization css with sass
Modularization css with sassModularization css with sass
Modularization css with sass
 
UNIT 3.ppt
UNIT 3.pptUNIT 3.ppt
UNIT 3.ppt
 
UI Realigning & Refactoring by Jina Bolton
UI Realigning & Refactoring by Jina BoltonUI Realigning & Refactoring by Jina Bolton
UI Realigning & Refactoring by Jina Bolton
 
Elegant CSS Design In Drupal: LESS vs Sass
Elegant CSS Design In Drupal: LESS vs SassElegant CSS Design In Drupal: LESS vs Sass
Elegant CSS Design In Drupal: LESS vs Sass
 
CSS 開發加速指南-Sass & Compass
CSS 開發加速指南-Sass & CompassCSS 開發加速指南-Sass & Compass
CSS 開發加速指南-Sass & Compass
 
SCSS Implementation
SCSS ImplementationSCSS Implementation
SCSS Implementation
 
SASS is more than LESS
SASS is more than LESSSASS is more than LESS
SASS is more than LESS
 
Client side performance compromises worth making
Client side performance compromises worth makingClient side performance compromises worth making
Client side performance compromises worth making
 
Sakai Meet MORPHEUS: Slides
Sakai Meet MORPHEUS: SlidesSakai Meet MORPHEUS: Slides
Sakai Meet MORPHEUS: Slides
 
Simple introduction Sass
Simple introduction SassSimple introduction Sass
Simple introduction Sass
 
Create SASSy web parts in SPFx
Create SASSy web parts in SPFxCreate SASSy web parts in SPFx
Create SASSy web parts in SPFx
 
[Bauer] SASSy web parts with SPFX
[Bauer] SASSy web parts with SPFX[Bauer] SASSy web parts with SPFX
[Bauer] SASSy web parts with SPFX
 
Create a landing page
Create a landing pageCreate a landing page
Create a landing page
 
SASS Preprocessor
SASS PreprocessorSASS Preprocessor
SASS Preprocessor
 
SASS, Compass, Gulp, Greensock
SASS, Compass, Gulp, GreensockSASS, Compass, Gulp, Greensock
SASS, Compass, Gulp, Greensock
 
SAP integration sample payloads for Azure Logic Apps
SAP integration sample payloads for Azure Logic AppsSAP integration sample payloads for Azure Logic Apps
SAP integration sample payloads for Azure Logic Apps
 

Último

A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 

Último (20)

A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 

@Agawish creating a stunning ui with oracle adf faces, using sass

  • 1. CREATING A STUNNING UI WITH ORACLE ADF FACES, USING SASS ADF SKINNING MADE EASY Provided by Created by Amr Gawish / gawi.sh / @agawish
  • 2. WHO AM I Amr Ismail Abdellatief Ibrahim Mostafa Hassan Mohammad Ali El-Sayed Gawish Oracle Middleware Consultant Fullstack Middleware Developer Oracle ACE associate
  • 4. Since 2003 Based in United Kingdom Oracle Platinum Partner Oracle Middleware Partner of 2013 Specialist Reseller of 2014 by CRN infomentum.co.uk
  • 5. ORACLE ADF HAS MANY FACES Part of Oracle ADF Family, but can be used on its own One of the richest component-based framework More than 150+ Ajaxed component Charts and Graphs without the fuzz Great JavaScript companion library Can be optimized for caching Has a free version with all that glory Much much more...
  • 6. ORACLE ADF HAS MANY FACES Great, but my customer want to be: Flat Responsive Mobile First Adaptive Metro The next facebook
  • 7. GIVE ADF FACES A NEW SKIN Can target all instances of the component for a consistent look Obfuscated and optimized for your web use Dynamically create different styles for different browsers Cacheable Great JavaScript companion library Can be optimized for caching Visual tool for easy editing Can extend other skins More than just CSS One file to rule them all Can target agents / accessibility profiles / platform and recently viewports Optimised for resuabilitiyu using aliases
  • 8. GIVE ADF FACES A NEW SKIN .MyColor:alias{ color: #fefefe; } .AFDefaultColor:alias { -tr-inhibit: color; color: -tr-property-ref(".MyColor:alias","color"); } af|selectOneChoice::label { -tr-rule-ref: selector(".AFLabel:alias"); } @platform window, linux { @agent ie and (version: 7) and (version: 8), gecko and (version: 1.9) { af|inputText::content:rtl { background-color:pink; } } }
  • 9. SKINNING IS NOT CSSING We all have been there!
  • 10. SKINNING IS NOT CSSING Problems you face when working with ADF Skinning as a CSS file: Component generated HTML doesn't match the front-end vision Different syntax of CSS Can't use browser's prefixed values CSS Version .my-style{ background-image: -moz-linear-gradient(left, red, #f06d06); background-image: -webkit-gradient(linear, left top, right top, from(red), to(#f06d06)); background-image: -o-linear-gradient(left, red, #f06d06); background-image: linear-gradient(to right, red, #f06d06); } ADF End Result .ps20{ background-image: linear-gradient(to right, red, #f06d06); }
  • 11. SKINNING IS NOT CSSING Why Front-end developers can't create ADF compatible skin They need to use JDeveloper and Create ADF application to work with ADF Skinning style can be intimidating Can't work offline Adapted CSS may require changing the ADF page components structure
  • 12. SKINNING IS NOT CSSING Still there are difficulties for ADF Developers to do skinning CSS can be intimidating CSS is not DRY enough Harder to maintain
  • 13. MAKE SKINNING SASSY SASS (Syntactically Awesome Style Sheets) is an Extension of CSS Makes very DRY Code Can reuse variables Can create nested styles Can create mixin (methods) and inheritance Can use operators Can use Loops Can use Conditions Can use lists and maps (newest version of SASS) Works well with ADF skin css syntax Mature with great community support Generates well formatted CSS
  • 14. MAKE SKINNING SASSY Variables example $font-stack: Helvetica, sans-serif; $primary-color: darken(#666, 50%); .AFDefaultFontFamily:alias { font: 100% $font-stack; } .AFTextColor:alias{ color: $primary-color; }
  • 15. MAKE SKINNING SASSY Nesting example af|column{ background-color: $background-color; &::data-cell{ border: 0; &:selected{ border: 1px solid $selected-color; } } }
  • 16. MAKE SKINNING SASSY Mixins example @mixin colors($text, $background, $border) { color: $text; background-color: $background; border-color: $border; } af|button.cancel-button{ @include colors(#fff, #c9302c, #ac2925); }
  • 17. MAKE SKINNING SASSY Inheritance example .reset-border { border:0; } af|messages{ @extend .reset-border ; border: 1px solid #ccc; } af|table{ @extend .reset-border ; background: #cecece; }
  • 18. MAKE SKINNING SASSY Operators example $page-width: 960px; .main-content{ width: $page-width / 100 * 65; //width: 624px; } .sidebar{ width: $page-width / 100 * 35; //width: 336px; }
  • 19. MAKE SKINNING SASSY Loop example @for $i from 1 through 4{ af|button.style-#{$i} { width: 60px + ($i * 10); } }
  • 20. GUIDE YOUR SASS WITH A COMPASS Compass: A SASS framework that includes web's best reusable patterns Border radius Opacity Box shadow Text Shadow and more...
  • 21. GUIDE YOUR SASS WITH A COMPASS Border box example @import "compass/css3"; @import "compass/utilities"; af|button{ @include border-radius(25px); /* This will generate: -moz-border-radius: 25px; -webkit-border-radius: 25px; border-radius: 25px; */ }
  • 22. GUIDE YOUR SASS WITH A COMPASS Opacity example @import "compass/css3"; af|panelTabbed{ @include transparent; /* This will generate: filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0); opacity: 0; */ } af|button:disabled{ @include opacity(0.2); /* This will generate: filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=20); opacity: 0.2; */ }
  • 23. GUIDE YOUR SASS WITH A COMPASS Text shadow example $default-text-shadow-color: rgba(red, 0.6); $default-text-shadow-blur: 3px; $default-text-shadow-v-offset: 1px; .main-title{ @include single-text-shadow;; /* This will generate: text-shadow: 0px 1px 3px rgba(255, 0, 0, 0.6); */ }
  • 24. MAXIMIZE PRODUCTIVITY WITH YOUR SKIN SASS can maximize productivity and reusability.
  • 25. MAXIMIZE PRODUCTIVITY OF YOUR SKIN By separating your skin into different files, you can achieve: Modularity Reusability Productivity All without sacrificing performance
  • 26. MAXIMIZE PRODUCTIVITY WITH YOUR SKIN Example of using SASS modules
  • 27. MAXIMIZE PRODUCTIVITY WITH YOUR SKIN Example of using SASS modules
  • 28. SKINNING TIPS AND TRICKS Through our experiences, here is a small list of things that can save you a lot of troubles in the future Use non-stretching layout components for responsive design Separate global variables of SASS in its own file Make sure org.apache.myfaces.trinidad.DISABLE_CONTENT_COMPRESSION equals false whenever you are developing your skin Make sure org.apache.myfaces.trinidad.CHECK_FILE_MODIFICATION equals true whenever you are developing your skin Use a secondary native SASS/CSS file whenever you use version lower than 12.1.3 Be friend with Skin editor, it can provide you great information
  • 29. SKINNING TIPS AND TRICKS Know all AF global aliases very well, they will save you a lot of time Use SASS variables within your aliases
  • 30. SKINNING TIPS AND TRICKS Minimize the use of !important. Only use it when you don't have any choice
  • 31. Q/A
  • 32. THANK YOU Provided by: Amr Gawish / gawi.sh / @agawish