70
ArcGIS API for JavaScript ArcGIS API for JavaScript Customizing Widgets Customizing Widgets Matt Driscoll – JC Franco – @driskull @arfncode

ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

  • Upload
    others

  • View
    10

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

ArcGISAPIforJavaScriptArcGISAPIforJavaScript

CustomizingWidgetsCustomizingWidgetsMattDriscoll–JCFranco–

@driskull@arfncode

Page 2: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

AgendaAgendaWhatcanbecustomizedCustomizationapproachesDemosQ&A

Page 3: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

CustomizingWidgetsCustomizingWidgetsThemeView

Page 4: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

CustomizingWidgetsCustomizingWidgetsTheme:StylesView:Structure/Functionality

Page 5: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

CustomizationApproachesCustomizationApproaches

Page 6: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

CustomizationApproachesCustomizationApproachesCustomizingatheme

Customstyles(colors,sizing,font...)

Page 7: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

CustomizationApproachesCustomizationApproachesCustomizingatheme

Customstyles(colors,sizing,font...)Customizingawidgetview

CustomUI

Page 8: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI
Page 9: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

PartI:ThemingPartI:Theming

Page 10: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

WhyTheme?WhyTheme?

Page 11: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

WhyTheme?WhyTheme?MatchbrandingMatchthemapContrastwiththemapUser-speci�crequirements(e.g.biggerbuttons)

Page 12: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

EsriThemesEsriThemes10themesareprovidedout-of-the-box:

UsingathemerequiresonlyaslightupdatetotheCSSpath.

<link href="//js.arcgis.com/4.12/esri/themes/<theme-name>/main.css" />

Page 14: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

CustomizingAPIstylingCustomizingAPIstylingAPICSSisusing methodologyforclassnames.

.my-widget__menu--openCanoverrideCSSselectors/usehigherspeci�city

Canbetedious/brittle

BEM

Sample

Page 15: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

ThemingTechnologyThemingTechnology

Page 16: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

Weuse

tocreateourCSS.tocreateourCSS.

Page 17: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

Weuse

tocreateourCSS.tocreateourCSS.

| |sass-lang.com nodejs.org gruntjs.com

Page 18: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

isapowerfulscriptinglanguageforcompilingCSS.isapowerfulscriptinglanguageforcompilingCSS.

Page 19: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

isapowerfulscriptinglanguageforcompilingCSS.isapowerfulscriptinglanguageforcompilingCSS.ModularDRYMakesthemingeasy

Page 20: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

ThemingStepsThemingSteps

Page 21: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

ThemingStepsThemingSteps1.Getthemeutility2.Usetheutility3.Customizeyourtheme4.HostyourCSS�le

Page 22: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

ThemingSetupThemingSetup

Page 23: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

ThemingSetupThemingSetup1.Clonethe jsapi-styles.git2.Runnpm install3.Editsass/my-theme/main.scss4.Seedist/my-theme/main.css

themeutility

Page 24: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

Step1Step1Clonethethemeutilityrepo

Page 25: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

Step1Step1Clonethethemeutilityrepo

github.com/jcfranco/jsapi-styles

git clone https://github.com/jcfranco/jsapi-styles.git

Page 26: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

Step2Step2npm install

Page 27: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

Step2Step2npm install

InstallsthenecessarybitsCreatesasamplethemedirectoryCompilestheCSSfromtheSCSSSpinsupapreviewinyourdefaultbrowser

Page 28: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

Step3Step3EdityourthemeEdityourtheme

sass/my-theme/main.scss

Page 29: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

Step3Step3EdityourthemeEdityourtheme

sass/my-theme/main.scss

Optionally,edityourappOptionally,edityourapp

preview/index.html

Page 30: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

Step4Step4Hostyourstylesheetandanyrelevantassets

Page 31: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

Step4Step4Hostyourstylesheetandanyrelevantassets

Linkyourstylesheetinyourapp

<!-- In your app: --><link href="path/to/your/theme/main.css" />

Page 32: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

ThemingGoalsThemingGoals

Page 33: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

ThemingGoalsThemingGoalsThemeSmartThemeSmart

AvoidaddingadditionalCSSselectorsInstead,useSasstoyouradvantage

Page 34: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

ThemeStructureThemeStructureLet'slookathowthecorethemeisstructured

ColorSizeType

Page 35: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

ThemeStructureThemeStructureLet'slookathowthecorethemeisstructured

Color:color.scssSize:sizes.scssType:type.scss

Page 36: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

ThemeStructureThemeStructureDefaultDefault

Anyvalueassignmentoverridesthe!defaultvalue.

// Inside base/_color_.scss$background-color: #fff !default;

// Inside sass/my-theme/main.scss$background-color: #e3000b;

Page 37: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

ThemeStructureThemeStructureDefaultDefault

Anyvalueassignmentoverridesthe!defaultvalue.

Butwait...there'smore!

// Inside base/_color_.scss$background-color: #fff !default;

// Inside sass/my-theme/main.scss$background-color: #e3000b;

Page 38: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

ThemeStructureThemeStructureOverridethecorecolorvariables...

$font-color: #fff; $interactive-font-color: #fff; $background-color: #e3000b; $button-color: #fff;

Page 39: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

ThemeStructureThemeStructureOverridethecorecolorvariables...

...thenmagic!

$font-color: #fff; $interactive-font-color: #fff; $background-color: #e3000b; $button-color: #fff;

Page 40: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

Magic*Magic*Using$button-colorwecansetadefaulthovercolor.

$button-color--hover: darken($button-color, 10%) !default; // ...etc

Page 42: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

LetsmakeathemeLetsmakeatheme

Page 43: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

LetsmakeathemeLetsmakeathemeBrandcolors

Page 44: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

CustomThemeCustomThemeBlockyMcBricks:Fineminiatureplasticbricks

Page 46: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

ThemingRecapThemingRecapUseSass&thethemeutilitytoyouradvantageThemestructure

ColorSizeTypography

Usethecorevariablesandoverridetheirvalues

Page 47: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

PartII:CustomizingwidgetviewsPartII:Customizingwidgetviews

Page 48: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

Widget=View+ViewModelWidget=View+ViewModel

Page 49: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

Widget=View+ViewModelWidget=View+ViewModelPresentationisseparatefrombusinesslogic

ReusableUIreplacementFrameworkintegration

Page 50: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

ViewsViews

Page 51: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

ViewsViewsPresentationoftheWidgetUsesViewModelAPIstorendertheUIView-speci�clogicresideshereExtendsesri/widgets/Widget

Page 52: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

Widget(Base)ClassWidget(Base)Classesri/widgets/Widget

Page 53: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

Widget(Base)ClassWidget(Base)Classesri/widgets/Widget

ProvideslifecycleAPIconsistency

Page 54: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

WidgetLifecycleWidgetLifecycle

Page 55: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

WidgetLifecycleWidgetLifecycleconstructor()postInitialize()render()destroy()

Page 56: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

render()render()

Page 57: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

render()render()De�nesUIJSXReactstorenderableproperties(privateorpublic)VirtualDOM

Page 59: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

CustomizingawidgetviewCustomizingawidgetviewBricki�ed™Bookmarkswidget

         

Page 61: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

CustomizingawidgetviewrecapCustomizingawidgetviewrecap

Page 62: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

CustomizingawidgetviewrecapCustomizingawidgetviewrecapWidget=View+ViewModel

ReusableUIreplacementFrameworkintegration

Page 63: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

CustomizingawidgetviewrecapCustomizingawidgetviewrecapWidget=View+ViewModel

ReusableUIreplacementFrameworkintegration

ExtendedexistingwidgetLifecycleCustomrendering(overrides)

Page 64: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

ConclusionConclusionThemedbychangingcolors,sizing,etc.Alteredpresentation(customUI)

Page 65: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

RecommendedSessionsRecommendedSessionsArcGISAPIforJavaScript:TheRoadAheadBuildingWebAppswiththeArcGISAPIforJavaScript

Page 67: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

ShareyourappsandsuggestionswithShareyourappsandsuggestionswithusus

CoolappsAPIfeedbackIdeasforthenextUC

[email protected]

Page 68: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI
Page 69: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

Questions?Questions?ForexampleForexample

�WherecanI�ndtheslides/source?

� �esriurl.com/customwidgetsuc2019

Page 70: ArcGIS API for JavaScript - esri.com · Customization Approaches Customizing a theme Custom styles (colors, sizing, font...) Customizing a widget view Custom UI

ThankYou!ThankYou!