SlideShare ist ein Scribd-Unternehmen logo
1 von 32
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Andere mochten auch

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
 

Andere mochten auch (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
 

Ähnlich wie @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
 

Ähnlich wie @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
 

Kürzlich hochgeladen

08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
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
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
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
 
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
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
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
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 

Kürzlich hochgeladen (20)

08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
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
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
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
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
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
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 

@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