Top Banner
ArcGIS API for JavaScript: Customizing Widgets Alan Sangma – @alansangma Matt Driscoll – @driskull JC Franco – @arfncode 1
45

ArcGIS API for JavaScript: Customizing Widgets...ArcGIS API for JavaScript: Customizing Widgets Author Esri Subject 2017 Esri User Conference--Presentation Keywords ArcGIS API for

Jun 08, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: ArcGIS API for JavaScript: Customizing Widgets...ArcGIS API for JavaScript: Customizing Widgets Author Esri Subject 2017 Esri User Conference--Presentation Keywords ArcGIS API for

ArcGIS API for JavaScript: Customizing Widgets

Alan Sangma – @alansangma

Matt Driscoll – @driskull JC

Franco – @arfncode

1

Page 2: ArcGIS API for JavaScript: Customizing Widgets...ArcGIS API for JavaScript: Customizing Widgets Author Esri Subject 2017 Esri User Conference--Presentation Keywords ArcGIS API for

AgendaWhat can be customized Customization approaches with demos Q & A

2

Page 3: ArcGIS API for JavaScript: Customizing Widgets...ArcGIS API for JavaScript: Customizing Widgets Author Esri Subject 2017 Esri User Conference--Presentation Keywords ArcGIS API for

Customizing WidgetsTheming

Changing styles: colors, sizing, font, etc.Implementing widget in a different framework Altering presentation of a widget

3

Page 4: ArcGIS API for JavaScript: Customizing Widgets...ArcGIS API for JavaScript: Customizing Widgets Author Esri Subject 2017 Esri User Conference--Presentation Keywords ArcGIS API for

Customization ApproachesAuthoring a theme Recreating a view Extending a view

4

Page 5: ArcGIS API for JavaScript: Customizing Widgets...ArcGIS API for JavaScript: Customizing Widgets Author Esri Subject 2017 Esri User Conference--Presentation Keywords ArcGIS API for

Ready?

5

Page 6: ArcGIS API for JavaScript: Customizing Widgets...ArcGIS API for JavaScript: Customizing Widgets Author Esri Subject 2017 Esri User Conference--Presentation Keywords ArcGIS API for

L e v e l I

T h e m i n g

6

Page 7: ArcGIS API for JavaScript: Customizing Widgets...ArcGIS API for JavaScript: Customizing Widgets Author Esri Subject 2017 Esri User Conference--Presentation Keywords ArcGIS API for

Level I: ThemingWhy Theme?

Match branding. Match the map.Contrast with the map. Based on the environment.User-specific (e.g. bigger buttons)

7

Page 8: ArcGIS API for JavaScript: Customizing Widgets...ArcGIS API for JavaScript: Customizing Widgets Author Esri Subject 2017 Esri User Conference--Presentation Keywords ArcGIS API for

A powerful scripting language for producing CSS.

8

Page 9: ArcGIS API for JavaScript: Customizing Widgets...ArcGIS API for JavaScript: Customizing Widgets Author Esri Subject 2017 Esri User Conference--Presentation Keywords ArcGIS API for

Why Sass?

It's modular. It's DRY.It makes theming easy.

9

Page 10: ArcGIS API for JavaScript: Customizing Widgets...ArcGIS API for JavaScript: Customizing Widgets Author Esri Subject 2017 Esri User Conference--Presentation Keywords ArcGIS API for

Compiling

10

Page 11: ArcGIS API for JavaScript: Customizing Widgets...ArcGIS API for JavaScript: Customizing Widgets Author Esri Subject 2017 Esri User Conference--Presentation Keywords ArcGIS API for

Let's Create a Theme!1. Create your theme directory.

esri/themes/[your-theme-name]/

2. Create a Sass file in your theme directory.main.scss

@import "../base/core";

3. Compile.4. Include the compiled CSS in your app.

<!-- in your app -->

<link rel="stylesheet" href="esri/themes/[your-theme-name]/main.css">

11

Page 12: ArcGIS API for JavaScript: Customizing Widgets...ArcGIS API for JavaScript: Customizing Widgets Author Esri Subject 2017 Esri User Conference--Presentation Keywords ArcGIS API for

Theme StructureAvoid writing a bunch of CSS selectors.

Include the theme "core" and override the default values.

12

Page 13: ArcGIS API for JavaScript: Customizing Widgets...ArcGIS API for JavaScript: Customizing Widgets Author Esri Subject 2017 Esri User Conference--Presentation Keywords ArcGIS API for

Theme StructureThe theme core brings in three main variable files:

base/_colorVariables.scss

base/_sizes.scss

base/_type.scss

These set the default values.

13

Page 14: ArcGIS API for JavaScript: Customizing Widgets...ArcGIS API for JavaScript: Customizing Widgets Author Esri Subject 2017 Esri User Conference--Presentation Keywords ArcGIS API for

Theme StructureDefault

Any value assignment overrides the !default value.

But wait...there's more!

// Inside base/_colorVariables.scss

$background_color : #fff !default ;

// Inside esri/themes/[your-theme-name]/main.scss

$background_color : #cc4b09;

14

Page 15: ArcGIS API for JavaScript: Customizing Widgets...ArcGIS API for JavaScript: Customizing Widgets Author Esri Subject 2017 Esri User Conference--Presentation Keywords ArcGIS API for

Theme StructureOverride the four main color variables...

...then magic!

$text_color : #fff; // white

$background_color : #cc4b09; // mario

$anchor_color : #ffbaaa; // luigi

$button_text_color : #ffbaaa; // luigi

Theming Guide

15

Page 17: ArcGIS API for JavaScript: Customizing Widgets...ArcGIS API for JavaScript: Customizing Widgets Author Esri Subject 2017 Esri User Conference--Presentation Keywords ArcGIS API for

Level I: Theming RecapUse Sass for easy theming. Theme structure

Color SizeTypography

Use the core and override values.

17

Page 18: ArcGIS API for JavaScript: Customizing Widgets...ArcGIS API for JavaScript: Customizing Widgets Author Esri Subject 2017 Esri User Conference--Presentation Keywords ArcGIS API for

L E V E L U P !

18

Page 19: ArcGIS API for JavaScript: Customizing Widgets...ArcGIS API for JavaScript: Customizing Widgets Author Esri Subject 2017 Esri User Conference--Presentation Keywords ArcGIS API for

L E V E L I I

V i e w s

19

Page 20: ArcGIS API for JavaScript: Customizing Widgets...ArcGIS API for JavaScript: Customizing Widgets Author Esri Subject 2017 Esri User Conference--Presentation Keywords ArcGIS API for

Level II: Widget Composition

Widgets are composed of Views & ViewModels

ReusableUI replacement Framework integration

20

Page 21: ArcGIS API for JavaScript: Customizing Widgets...ArcGIS API for JavaScript: Customizing Widgets Author Esri Subject 2017 Esri User Conference--Presentation Keywords ArcGIS API for

Level II: ViewsPresentation of the WidgetUses ViewModel APIs to render the UI View-specific logic resides here

21

Page 23: ArcGIS API for JavaScript: Customizing Widgets...ArcGIS API for JavaScript: Customizing Widgets Author Esri Subject 2017 Esri User Conference--Presentation Keywords ArcGIS API for

Views: Let's customize!Lets create a custom widget view.

Using...

jQueryPlugin creation

Bootstrap

23

Page 25: ArcGIS API for JavaScript: Customizing Widgets...ArcGIS API for JavaScript: Customizing Widgets Author Esri Subject 2017 Esri User Conference--Presentation Keywords ArcGIS API for

Level II: Views RecapWhat have we learned about Widget Views?

ViewsFace of the widgetRenders the viewModel brainsView separation allows framework integration Views can be downloaded on API docsCan create views in other frameworks using ViewModels

25

Page 26: ArcGIS API for JavaScript: Customizing Widgets...ArcGIS API for JavaScript: Customizing Widgets Author Esri Subject 2017 Esri User Conference--Presentation Keywords ArcGIS API for

L E V E L U P !

26

Page 27: ArcGIS API for JavaScript: Customizing Widgets...ArcGIS API for JavaScript: Customizing Widgets Author Esri Subject 2017 Esri User Conference--Presentation Keywords ArcGIS API for

L E V E L I I I

E x t e n d i n g a V i e w

27

Page 28: ArcGIS API for JavaScript: Customizing Widgets...ArcGIS API for JavaScript: Customizing Widgets Author Esri Subject 2017 Esri User Conference--Presentation Keywords ArcGIS API for

Level III: Extending a ViewWhy?

ReusableSame ecosystem

How?JS API v4.4esri/widgets/Widget TypeScript

28

Page 29: ArcGIS API for JavaScript: Customizing Widgets...ArcGIS API for JavaScript: Customizing Widgets Author Esri Subject 2017 Esri User Conference--Presentation Keywords ArcGIS API for

esri/widgets/Widget

Provides lifecycle API consistency

29

Page 30: ArcGIS API for JavaScript: Customizing Widgets...ArcGIS API for JavaScript: Customizing Widgets Author Esri Subject 2017 Esri User Conference--Presentation Keywords ArcGIS API for

Lifecycleconstructor postInitialize render destroy

30

Page 31: ArcGIS API for JavaScript: Customizing Widgets...ArcGIS API for JavaScript: Customizing Widgets Author Esri Subject 2017 Esri User Conference--Presentation Keywords ArcGIS API for

renderDefines UI Reacts to state Uses JSX

31

Page 32: ArcGIS API for JavaScript: Customizing Widgets...ArcGIS API for JavaScript: Customizing Widgets Author Esri Subject 2017 Esri User Conference--Presentation Keywords ArcGIS API for

TypeScriptTyped JavaScriptJS of the future, now IDE support

Visual Studio WebStorm Sublimeand more!

32

Page 34: ArcGIS API for JavaScript: Customizing Widgets...ArcGIS API for JavaScript: Customizing Widgets Author Esri Subject 2017 Esri User Conference--Presentation Keywords ArcGIS API for

33

Page 35: ArcGIS API for JavaScript: Customizing Widgets...ArcGIS API for JavaScript: Customizing Widgets Author Esri Subject 2017 Esri User Conference--Presentation Keywords ArcGIS API for

Level III: Extending a View Recap

Reusable View/ViewModel

Same ecosystem No extra libraries

Extended existing widget LifecycleTypeScript

34

Page 36: ArcGIS API for JavaScript: Customizing Widgets...ArcGIS API for JavaScript: Customizing Widgets Author Esri Subject 2017 Esri User Conference--Presentation Keywords ArcGIS API for

L E V E L U P !

35

Page 37: ArcGIS API for JavaScript: Customizing Widgets...ArcGIS API for JavaScript: Customizing Widgets Author Esri Subject 2017 Esri User Conference--Presentation Keywords ArcGIS API for

L E V E L I V

P u t i t a l l t o g e t h e r .

36

Page 38: ArcGIS API for JavaScript: Customizing Widgets...ArcGIS API for JavaScript: Customizing Widgets Author Esri Subject 2017 Esri User Conference--Presentation Keywords ArcGIS API for

ConclusionAuthored a theme Recreated a view Extended a view

37

Page 39: ArcGIS API for JavaScript: Customizing Widgets...ArcGIS API for JavaScript: Customizing Widgets Author Esri Subject 2017 Esri User Conference--Presentation Keywords ArcGIS API for

Suggested SessionDeveloping Your Own Widget with the ArcGIS API for JavaScript

38

Page 41: ArcGIS API for JavaScript: Customizing Widgets...ArcGIS API for JavaScript: Customizing Widgets Author Esri Subject 2017 Esri User Conference--Presentation Keywords ArcGIS API for

The source code!esriurl.com/customwidgetsuc2017

40

Page 42: ArcGIS API for JavaScript: Customizing Widgets...ArcGIS API for JavaScript: Customizing Widgets Author Esri Subject 2017 Esri User Conference--Presentation Keywords ArcGIS API for

41

Page 43: ArcGIS API for JavaScript: Customizing Widgets...ArcGIS API for JavaScript: Customizing Widgets Author Esri Subject 2017 Esri User Conference--Presentation Keywords ArcGIS API for

Questions?

42

Page 44: ArcGIS API for JavaScript: Customizing Widgets...ArcGIS API for JavaScript: Customizing Widgets Author Esri Subject 2017 Esri User Conference--Presentation Keywords ArcGIS API for

43

Page 45: ArcGIS API for JavaScript: Customizing Widgets...ArcGIS API for JavaScript: Customizing Widgets Author Esri Subject 2017 Esri User Conference--Presentation Keywords ArcGIS API for

44