UGF3777_Gawish-Creating a Stunning UI With Oracle ADF Faces, Using Sass

33
CREATING A STUNNING UI WITH ORACLE ADF FACES, USING SASS ADF SKINNING MADE EASY Special thanks to Created by Amr Gawish / / gawi.sh @agawish

description

Creating UI

Transcript of UGF3777_Gawish-Creating a Stunning UI With Oracle ADF Faces, Using Sass

Page 1: UGF3777_Gawish-Creating a Stunning UI With Oracle ADF Faces, Using Sass

CREATING A STUNNINGUI WITH ORACLE ADFFACES, USING SASS

ADF SKINNING MADE EASYSpecial thanks to

Created by Amr Gawish / / gawi.sh @agawish

Page 2: UGF3777_Gawish-Creating a Stunning UI With Oracle ADF Faces, Using Sass

WHO AM IAmr Ismail Abdellatief Ibrahim Mostafa Hassan Mohammad Ali

El-Sayed Gawish

Oracle Middleware ConsultantFullstack Middleware DeveloperOracle ACE associate

Page 3: UGF3777_Gawish-Creating a Stunning UI With Oracle ADF Faces, Using Sass

PUBLICATIONS

Page 4: UGF3777_Gawish-Creating a Stunning UI With Oracle ADF Faces, Using Sass

Since 2003Based in United KingdomOracle Platinum PartnerOracle Middleware Partner of 2013Specialist Reseller of 2014 by CRNinfomentum.co.uk

Page 5: UGF3777_Gawish-Creating a Stunning UI With Oracle ADF Faces, Using Sass

AGENDAOracle ADF has many FacesGive ADF Faces a new skinSkinning is not CSSingMake skinning SASSyGuide your SASS with a CompassMaximize productivity with your skinSkinning Tips and TricksQ/A

Page 6: UGF3777_Gawish-Creating a Stunning UI With Oracle ADF Faces, Using Sass

ORACLE ADF HAS MANY FACESPart of Oracle ADF Family, but can be used on its ownOne of the richest component-based frameworkMore than 150+ Ajaxed componentCharts and Graphs without the fuzzGreat JavaScript companion libraryCan be optimized for cachingHas a free version with all that gloryMuch much more...

Page 7: UGF3777_Gawish-Creating a Stunning UI With Oracle ADF Faces, Using Sass

ORACLE ADF HAS MANY FACESGreat, but my customer want to be:

FlatResponsiveMobile FirstAdaptiveMetroThe next facebook

Page 8: UGF3777_Gawish-Creating a Stunning UI With Oracle ADF Faces, Using Sass

GIVE ADF FACES A NEW SKINCan target all instances of the component for a consistent lookObfuscated and optimized for your web useDynamically create different styles for different browsersCacheableGreat JavaScript companion libraryCan be optimized for cachingVisual tool for easy editingCan extend other skinsMore than just CSSOne file to rule them allCan target agents / accessibility profiles / platform andrecently viewportsOptimised for resuabilitiyu using aliases

Page 9: UGF3777_Gawish-Creating a Stunning UI With Oracle ADF Faces, Using Sass

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; } }}

Page 10: UGF3777_Gawish-Creating a Stunning UI With Oracle ADF Faces, Using Sass

SKINNING IS NOT CSSINGWe all have been there!

Page 11: UGF3777_Gawish-Creating a Stunning UI With Oracle ADF Faces, Using Sass

SKINNING IS NOT CSSINGProblems you face when working with ADF Skinning as a CSS file:

Component generated HTML doesn't match the front-end visionDifferent syntax of CSSCan'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);}

Page 12: UGF3777_Gawish-Creating a Stunning UI With Oracle ADF Faces, Using Sass

SKINNING IS NOT CSSINGWhy Front-end developers can't create ADF compatible skin

They need to use JDeveloper and Create ADF application towork withADF Skinning style can be intimidatingCan't work offlineAdapted CSS may require changing the ADF page componentsstructure

Page 13: UGF3777_Gawish-Creating a Stunning UI With Oracle ADF Faces, Using Sass

SKINNING IS NOT CSSINGStill there are difficulties for ADF Developers to do skinning

CSS can be intimidatingCSS is not DRY enoughHarder to maintain

Page 14: UGF3777_Gawish-Creating a Stunning UI With Oracle ADF Faces, Using Sass

MAKE SKINNING SASSYSASS (Syntactically Awesome Style Sheets) is an Extension of

CSS

Makes very DRY CodeCan reuse variablesCan create nested stylesCan create mixin (methods) and inheritanceCan use operatorsCan use LoopsCan use ConditionsCan use lists and maps (newest version of SASS)Works well with ADF skin css syntaxMature with great community supportGenerates well formatted CSS

Page 15: UGF3777_Gawish-Creating a Stunning UI With Oracle ADF Faces, Using Sass

MAKE SKINNING SASSYVariables example

$font-stack: Helvetica, sans-serif;$primary-color: darken(#666, 50%);

.AFDefaultFontFamily:alias { font: 100% $font-stack;}.AFTextColor:alias{ color: $primary-color;}

Page 16: UGF3777_Gawish-Creating a Stunning UI With Oracle ADF Faces, Using Sass

MAKE SKINNING SASSYNesting example

af|column{

background-color: $background-color;

&::data-cell{

border: 0;

&:selected{ border: 1px solid $selected-color; } }}

Page 17: UGF3777_Gawish-Creating a Stunning UI With Oracle ADF Faces, Using Sass

MAKE SKINNING SASSYMixins example

@mixin colors($text, $background, $border) { color: $text; background-color: $background; border-color: $border;}

af|button.cancel-button{ @include colors(#fff, #c9302c, #ac2925);}

Page 18: UGF3777_Gawish-Creating a Stunning UI With Oracle ADF Faces, Using Sass

MAKE SKINNING SASSYInheritance example

.reset-border { border:0;}

af|messages{ @extend .reset-border ; border: 1px solid #ccc;}

af|table{ @extend .reset-border ; background: #cecece;}

Page 19: UGF3777_Gawish-Creating a Stunning UI With Oracle ADF Faces, Using Sass

MAKE SKINNING SASSYOperators example

$page-width: 960px;

.main-content{ width: $page-width / 100 * 65; //width: 624px;}.sidebar{ width: $page-width / 100 * 35; //width: 336px;}

Page 20: UGF3777_Gawish-Creating a Stunning UI With Oracle ADF Faces, Using Sass

MAKE SKINNING SASSYLoop example

@for $i from 1 through 4{ af|button.style-#{$i} { width: 60px + ($i * 10); }}

Page 21: UGF3777_Gawish-Creating a Stunning UI With Oracle ADF Faces, Using Sass

GUIDE YOUR SASS WITH A COMPASSCompass: A SASS framework that includes web's best reusable

patterns

Border radius

OpacityBox shadowText Shadowand more...

Page 22: UGF3777_Gawish-Creating a Stunning UI With Oracle ADF Faces, Using Sass

GUIDE YOUR SASS WITH A COMPASSBorder 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; */}

Page 23: UGF3777_Gawish-Creating a Stunning UI With Oracle ADF Faces, Using Sass

GUIDE YOUR SASS WITH A COMPASSOpacity 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; */}

Page 24: UGF3777_Gawish-Creating a Stunning UI With Oracle ADF Faces, Using Sass

GUIDE YOUR SASS WITH A COMPASSText 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); */}

Page 25: UGF3777_Gawish-Creating a Stunning UI With Oracle ADF Faces, Using Sass

MAXIMIZE PRODUCTIVITY WITH YOUR SKINSASS can maximize productivity and reusability.

Page 26: UGF3777_Gawish-Creating a Stunning UI With Oracle ADF Faces, Using Sass

MAXIMIZE PRODUCTIVITY OF YOUR SKINBy separating your skin into different files, you can achieve:

ModularityReusabilityProductivity

All without sacrificing performance

Page 27: UGF3777_Gawish-Creating a Stunning UI With Oracle ADF Faces, Using Sass

MAXIMIZE PRODUCTIVITY WITH YOUR SKINExample of using SASS modules

Page 28: UGF3777_Gawish-Creating a Stunning UI With Oracle ADF Faces, Using Sass

MAXIMIZE PRODUCTIVITY WITH YOUR SKINExample of using SASS modules

Page 29: UGF3777_Gawish-Creating a Stunning UI With Oracle ADF Faces, Using Sass

SKINNING TIPS AND TRICKSThrough 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 designSeparate global variables of SASS in its own fileUse a secondary native SASS/CSS file whenever you useversion lower than 12.1.3Be friend with Skin editor, it can provide you great information

Page 30: UGF3777_Gawish-Creating a Stunning UI With Oracle ADF Faces, Using Sass

SKINNING TIPS AND TRICKSKnow all AF global aliases very well, they will save you a lot of

time

Use SASS variables within your aliases

Page 31: UGF3777_Gawish-Creating a Stunning UI With Oracle ADF Faces, Using Sass

SKINNING TIPS AND TRICKSMinimize the use of !important. Only use it when you don't have

any choice

Page 32: UGF3777_Gawish-Creating a Stunning UI With Oracle ADF Faces, Using Sass

Q/A

Page 33: UGF3777_Gawish-Creating a Stunning UI With Oracle ADF Faces, Using Sass

THANK YOUSpecial Thanks to:

Amr Gawish / / gawi.sh @agawish