From 0d3bbe4c478859d8c26f47aa4ab930ed69d2e37d Mon Sep 17 00:00:00 2001 From: Emmanuel Pilande Date: Tue, 14 Jun 2016 14:46:41 -1000 Subject: [PATCH 01/21] Set up Resource component Signed-off-by: Emmanuel Pilande --- src/examples/Examples.js | 24 +++++++++++++++++ src/modules/Resources.js | 58 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 82 insertions(+) create mode 100644 src/modules/Resources.js diff --git a/src/examples/Examples.js b/src/examples/Examples.js index 9e2f7ec..7536533 100644 --- a/src/examples/Examples.js +++ b/src/examples/Examples.js @@ -6,6 +6,7 @@ var Route = Router.Route; var Box = require('grommet/components/Box'); var Marquee = require('../modules/Marquee'); var MarqueeGrommet = require('../modules/MarqueeGrommet'); +var Resources = require('../modules/Resources'); var Header = require('./Header'); var Examples = React.createClass({ @@ -90,6 +91,29 @@ var Examples = React.createClass({ justify="end" />

Grommet-only Marquee (no parallax, responsiveness)

{this._loremIpsum()} + + + ); } diff --git a/src/modules/Resources.js b/src/modules/Resources.js new file mode 100644 index 0000000..370eb0c --- /dev/null +++ b/src/modules/Resources.js @@ -0,0 +1,58 @@ +// (C) Copyright 2014-2015 Hewlett Packard Enterprise Development LP + +import React, { Component, PropTypes } from 'react'; +import classnames from 'classnames'; +import Box from 'grommet/components/Box'; +import Heading from 'grommet/components/Heading'; +import Tiles from 'grommet/components/Tiles'; +import Paragraph from 'grommet/components/Paragraph'; + +const CLASS_ROOT = 'resources'; + +export default class Resources extends Component { + render () { + const { header, subHeader, tiles } = this.props; + + const classes = classnames( + CLASS_ROOT, + this.props.className + ); + + let subHeaderMarkup; + if (subHeader) { + subHeaderMarkup = ( + + {subHeader} + + ); + } + + const resourceTiles = tiles.map((tile, key) => { + return
{tile.title}
; + }); + + return ( + + {header} + {subHeaderMarkup} + + {resourceTiles} + + + ); + } +}; + +Resources.propTypes = { + header: PropTypes.string, + subHeader: PropTypes.string, + tiles: PropTypes.arrayOf(PropTypes.shape({ + thumbnail: PropTypes.string, + title: PropTypes.string, + description: PropTypes.string + })) +}; + +Resources.defaultProps = { + header: 'Resources' +}; From 937a17240b0d0b7de4ac12d7f91a79d0a19a44d2 Mon Sep 17 00:00:00 2001 From: Emmanuel Pilande Date: Tue, 14 Jun 2016 17:32:01 -1000 Subject: [PATCH 02/21] Set up Resource Tile component Signed-off-by: Emmanuel Pilande --- src/modules/Resources.js | 9 +++++---- src/modules/ResourcesTile.js | 38 ++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 4 deletions(-) create mode 100644 src/modules/ResourcesTile.js diff --git a/src/modules/Resources.js b/src/modules/Resources.js index 370eb0c..b8bf0e4 100644 --- a/src/modules/Resources.js +++ b/src/modules/Resources.js @@ -6,6 +6,7 @@ import Box from 'grommet/components/Box'; import Heading from 'grommet/components/Heading'; import Tiles from 'grommet/components/Tiles'; import Paragraph from 'grommet/components/Paragraph'; +import ResourcesTile from './ResourcesTile'; const CLASS_ROOT = 'resources'; @@ -28,14 +29,14 @@ export default class Resources extends Component { } const resourceTiles = tiles.map((tile, key) => { - return
{tile.title}
; + return ; }); return ( - + {header} {subHeaderMarkup} - + {resourceTiles} @@ -50,7 +51,7 @@ Resources.propTypes = { thumbnail: PropTypes.string, title: PropTypes.string, description: PropTypes.string - })) + })).isRequired }; Resources.defaultProps = { diff --git a/src/modules/ResourcesTile.js b/src/modules/ResourcesTile.js new file mode 100644 index 0000000..0ceb738 --- /dev/null +++ b/src/modules/ResourcesTile.js @@ -0,0 +1,38 @@ +// (C) Copyright 2014-2015 Hewlett Packard Enterprise Development LP + +import React, { Component, PropTypes } from 'react'; +import classnames from 'classnames'; +import Box from 'grommet/components/Box'; +import Heading from 'grommet/components/Heading'; +import Tile from 'grommet/components/Tile'; +import Paragraph from 'grommet/components/Paragraph'; +import Image from 'grommet/components/Image'; + +const CLASS_ROOT = 'resources-tile'; + +export default class ResourcesTile extends Component { + render () { + const { thumbnail, title, description } = this.props; + + const classes = classnames( + CLASS_ROOT, + this.props.className + ); + + return ( + + + + {title} + {description} + + + ); + } +}; + +ResourcesTile.propTypes = { + title: PropTypes.string.isRequired, + description: PropTypes.string.isRequired, + thumbnail: PropTypes.string.isRequired +}; From a4f821917b26f207e19a14c3857c9b435b69afde Mon Sep 17 00:00:00 2001 From: Emmanuel Pilande Date: Tue, 14 Jun 2016 17:35:46 -1000 Subject: [PATCH 03/21] Display thumbnail & add responsive styles Signed-off-by: Emmanuel Pilande --- src/examples/Examples.js | 8 +++----- src/modules/ResourcesTile.js | 15 +++++++++++---- src/scss/_objects.modules.scss | 2 ++ src/scss/_objects.resources-tile.scss | 7 +++++++ src/scss/_objects.resources.scss | 9 +++++++++ 5 files changed, 32 insertions(+), 9 deletions(-) create mode 100644 src/scss/_objects.resources-tile.scss create mode 100644 src/scss/_objects.resources.scss diff --git a/src/examples/Examples.js b/src/examples/Examples.js index 7536533..57ca6cb 100644 --- a/src/examples/Examples.js +++ b/src/examples/Examples.js @@ -93,21 +93,19 @@ var Examples = React.createClass({ {this._loremIpsum()} - - + + + {title} {description} diff --git a/src/scss/_objects.modules.scss b/src/scss/_objects.modules.scss index ecc349a..6c270b2 100644 --- a/src/scss/_objects.modules.scss +++ b/src/scss/_objects.modules.scss @@ -1,4 +1,6 @@ @import 'objects.marquee'; +@import 'objects.resources'; +@import 'objects.resources-tile'; .grommet.app { position: relative; diff --git a/src/scss/_objects.resources-tile.scss b/src/scss/_objects.resources-tile.scss new file mode 100644 index 0000000..f2c161f --- /dev/null +++ b/src/scss/_objects.resources-tile.scss @@ -0,0 +1,7 @@ +.resources-tile { + + &__thumbnail { + width: 100px; + height: 100px; + } +} diff --git a/src/scss/_objects.resources.scss b/src/scss/_objects.resources.scss new file mode 100644 index 0000000..4332ef9 --- /dev/null +++ b/src/scss/_objects.resources.scss @@ -0,0 +1,9 @@ +.resources { + + .tiles > .tile { + + @include media-query(palm) { + flex-basis: 400px; + } + } +} From a9046c8e6b7d6e37fae2b27bffb533f997673cff Mon Sep 17 00:00:00 2001 From: Emmanuel Pilande Date: Tue, 14 Jun 2016 17:50:47 -1000 Subject: [PATCH 04/21] Remove padding on Tiles Signed-off-by: Emmanuel Pilande --- src/modules/Resources.js | 2 +- src/scss/_objects.resources.scss | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/modules/Resources.js b/src/modules/Resources.js index b8bf0e4..8214f41 100644 --- a/src/modules/Resources.js +++ b/src/modules/Resources.js @@ -36,7 +36,7 @@ export default class Resources extends Component { {header} {subHeaderMarkup} - + {resourceTiles} diff --git a/src/scss/_objects.resources.scss b/src/scss/_objects.resources.scss index 4332ef9..6ea37e3 100644 --- a/src/scss/_objects.resources.scss +++ b/src/scss/_objects.resources.scss @@ -1,9 +1,13 @@ .resources { - .tiles > .tile { + .tiles { + margin: -12px; - @include media-query(palm) { - flex-basis: 400px; + > .tile { + + @include media-query(lap-and-up) { + flex-basis: 400px; + } } } } From 3f8f976149b82088740ab417730b05928b700563 Mon Sep 17 00:00:00 2001 From: Emmanuel Pilande Date: Tue, 14 Jun 2016 18:12:59 -1000 Subject: [PATCH 05/21] Update example to use thumbnails from design Signed-off-by: Emmanuel Pilande --- src/examples/Examples.js | 6 +++--- src/img/resource-img-1.png | Bin 0 -> 20150 bytes src/img/resource-img-2.png | Bin 0 -> 21290 bytes src/img/resource-img-3.png | Bin 0 -> 18870 bytes 4 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 src/img/resource-img-1.png create mode 100644 src/img/resource-img-2.png create mode 100644 src/img/resource-img-3.png diff --git a/src/examples/Examples.js b/src/examples/Examples.js index 57ca6cb..02b21f1 100644 --- a/src/examples/Examples.js +++ b/src/examples/Examples.js @@ -95,17 +95,17 @@ var Examples = React.createClass({ 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 literal 0 HcmV?d00001 diff --git a/src/img/resource-img-2.png b/src/img/resource-img-2.png new file mode 100644 index 0000000000000000000000000000000000000000..71586a0ea77d42891d2e3f3a32011a39e96fbfe1 GIT binary patch literal 21290 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≶Jv+zUy4r*3{dBm-Ou}h{LF3pS zsiZ-xJoUi)B2HBRssYvxjUn*%7-_n^a0HGG;652a9}kL>Fo=cJF`w~018FGUX7&{K zVPXm#-(kd!G*F6^mAZNL%HK178;}nsCCOBPJW!MDQB8r7ATWej9&r2eKAcOiC5xfw zGq!oTT}q+y^WB{~-(e=qSw+`TZ_7;&i8<^Qz^fhYW|J`>>@Pcn!>K!^oCRWlGx0eD zfm#rd#{T_wtG8dhc9|#{^_m%e^~q=~jVnWhULzB zXWfXnU5`Xf5)Cd$BxJ@b!@HV?pEyZngn)4q+zqDIIjYq3A=v{FF{ECQ8E=CC3?L)- z%v}K%)xlz5+n(C`{)od9s~9RM(J;Wr$E$3l$dy^lQ;fY%(K{V$)t zd`>B^M3aZMD?mH;ICCZ^M;kI;3m_#x3?mrkbu%4&AdIygu9*mI8`7fqMQuCjJa#%h zt(EqLi`_7$qtU)VPrMZO(RZWm0*miMb2|9%j&pDp275JB4tgY2xn_977qcm zQ=y%Dun_LvLZuKjSuMes#JG`%r&~|SXPh3rwuR;`n;TQ1fI$`<|{uDWj2S zQp8KJ$09auqlc$^mnl&VLN*SJ4qIr#CXqHCdikR0Inct#`z>N%^s!9~5g-IOnu$Sm zIGHHljEW!+2!RGm@O}z>X~j6finoPoW`C508Y(kvVB;2y9m<=QieWgCf4A5hR%M#xKNY~=eQFASB-fZ^X;08uGgxrwY$31RA%b3 zNFDj`{YE&v41^(e>6zzIHM&R&ZIx-$jw(B8(@$DQsmhrcfP|bc#HhMjPu*GjtI+CP z3ydqxmg}ZV!xRfj&o)OY*7n2raFs3d*=6r{)r&cx$zJx%C z_0KtqWkK2ZOJeZ;<#%{)*sL!f{3be|&w(soe*6Ew|Nndi{s*0#@Rjim+(7^U002ov JPDHLkV1m1Jd^`XE literal 0 HcmV?d00001 From 29f3b789242577007e054adf24414144f03ee561 Mon Sep 17 00:00:00 2001 From: Emmanuel Pilande Date: Tue, 14 Jun 2016 18:23:46 -1000 Subject: [PATCH 06/21] Uppercase resource title Signed-off-by: Emmanuel Pilande --- src/modules/ResourcesTile.js | 2 +- src/scss/_objects.resources-tile.scss | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/modules/ResourcesTile.js b/src/modules/ResourcesTile.js index 301b15a..9e678f8 100644 --- a/src/modules/ResourcesTile.js +++ b/src/modules/ResourcesTile.js @@ -30,7 +30,7 @@ export default class ResourcesTile extends Component { flex={false} /> - {title} + {title} {description} diff --git a/src/scss/_objects.resources-tile.scss b/src/scss/_objects.resources-tile.scss index f2c161f..ce14a07 100644 --- a/src/scss/_objects.resources-tile.scss +++ b/src/scss/_objects.resources-tile.scss @@ -4,4 +4,8 @@ width: 100px; height: 100px; } + + .heading--uppercase { + letter-spacing: normal; + } } From b7ecd35f900206d1ca5e7b195809088c09655b4d Mon Sep 17 00:00:00 2001 From: Emmanuel Pilande Date: Tue, 14 Jun 2016 18:35:12 -1000 Subject: [PATCH 07/21] Fix spacing with subheader Signed-off-by: Emmanuel Pilande --- src/modules/Resources.js | 2 +- src/scss/_objects.resources.scss | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/modules/Resources.js b/src/modules/Resources.js index 8214f41..30b666a 100644 --- a/src/modules/Resources.js +++ b/src/modules/Resources.js @@ -22,7 +22,7 @@ export default class Resources extends Component { let subHeaderMarkup; if (subHeader) { subHeaderMarkup = ( - + {subHeader} ); diff --git a/src/scss/_objects.resources.scss b/src/scss/_objects.resources.scss index 6ea37e3..d66996d 100644 --- a/src/scss/_objects.resources.scss +++ b/src/scss/_objects.resources.scss @@ -1,5 +1,9 @@ .resources { + &__subheader.paragraph { + margin-top: 0; + } + .tiles { margin: -12px; From 837331894f5813d1705d513b45c144371573d4ec Mon Sep 17 00:00:00 2001 From: Emmanuel Pilande Date: Wed, 15 Jun 2016 10:44:49 -1000 Subject: [PATCH 08/21] Change thumbnail prop to take URL Signed-off-by: Emmanuel Pilande --- src/examples/Examples.js | 6 +++--- src/modules/ResourcesTile.js | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/examples/Examples.js b/src/examples/Examples.js index 02b21f1..493df7b 100644 --- a/src/examples/Examples.js +++ b/src/examples/Examples.js @@ -95,17 +95,17 @@ var Examples = React.createClass({ Date: Wed, 15 Jun 2016 11:01:56 -1000 Subject: [PATCH 09/21] Add Resources doc page Signed-off-by: Emmanuel Pilande --- src/develop/Develop.js | 2 + src/develop/components/ResourcesDoc.js | 79 ++++++++++++++++++++++++++ 2 files changed, 81 insertions(+) create mode 100644 src/develop/components/ResourcesDoc.js diff --git a/src/develop/Develop.js b/src/develop/Develop.js index bcb59ec..d9997af 100644 --- a/src/develop/Develop.js +++ b/src/develop/Develop.js @@ -19,6 +19,7 @@ var DashboardDoc = require('./patterns/DashboardDoc'); var NavigationDoc = require('./patterns/NavigationDoc'); var MarqueeDoc = require('./components/MarqueeDoc'); var WorldMapDoc = require('./components/WorldMapDoc'); +var ResourcesDoc = require('./components/ResourcesDoc'); //hjjs configuration var hljs = require('highlight.js/lib/highlight'); @@ -47,6 +48,7 @@ var CONTENTS = [ contents: [ {route: 'develop_box', label: 'Box', component: BoxDoc}, {route: 'develop_marquee', label: 'Marquee', component: MarqueeDoc}, + {route: 'develop_resources', label: 'Resources', component: ResourcesDoc}, {route: 'develop_world-map', label: 'WorldMap', component: WorldMapDoc} ] } diff --git a/src/develop/components/ResourcesDoc.js b/src/develop/components/ResourcesDoc.js new file mode 100644 index 0000000..aa8f41d --- /dev/null +++ b/src/develop/components/ResourcesDoc.js @@ -0,0 +1,79 @@ +// (C) Copyright 2014-2015 Hewlett Packard Enterprise Development LP + +var React = require('react'); +var jsxToString = require('jsx-to-string'); +var DocsArticle = require('../../DocsArticle'); +var Resources = require('../../modules/Resources'); + +Resources.displayName = 'Resources'; + +var inline = ""; + +var ResourcesDoc = React.createClass({ + + contextTypes: { + routePrefix: React.PropTypes.string.isRequired + }, + + _renderCode(name, jsx) { + return ( +
+

{name}

+
+ {jsx} +
+

+          {jsxToString(jsx)}
+        
+
+ ); + }, + + render: function() { + var simpleResources = ( + + ); + + return ( + + +

The Resources module.

+
{inline}
+ +
+

Resources Options

+
+
tiles {`[{thumbnail: , title: , description: }, ...]`}
+
An array of resource tiles.
+
+
+ +
+

Examples

+ + {this._renderCode('Default', simpleResources)} +
+
+ ); + } +}); + +module.exports = ResourcesDoc; From 18a7a8c71baa3e2dc61ee9a9a8648d9e9ac5c0cf Mon Sep 17 00:00:00 2001 From: Emmanuel Pilande Date: Wed, 15 Jun 2016 12:37:29 -1000 Subject: [PATCH 10/21] Add white background to resource tile The resource tiles should always have a white background as they're essentially a card so the content can read better within the accordion. Signed-off-by: Emmanuel Pilande --- src/scss/_objects.resources-tile.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/src/scss/_objects.resources-tile.scss b/src/scss/_objects.resources-tile.scss index ce14a07..9c3fb99 100644 --- a/src/scss/_objects.resources-tile.scss +++ b/src/scss/_objects.resources-tile.scss @@ -1,4 +1,5 @@ .resources-tile { + background-color: #fff; &__thumbnail { width: 100px; From 61a846916f13fc90db6a55cc301c2d5d3e609c0e Mon Sep 17 00:00:00 2001 From: Emmanuel Pilande Date: Tue, 21 Jun 2016 17:47:03 -1000 Subject: [PATCH 11/21] Update examples, move Resources into accordion Signed-off-by: Emmanuel Pilande --- src/examples/Examples.js | 40 +++++++++++++++++++--------------------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/src/examples/Examples.js b/src/examples/Examples.js index 6fc656e..8687f18 100644 --- a/src/examples/Examples.js +++ b/src/examples/Examples.js @@ -112,6 +112,25 @@ var Examples = React.createClass({ linkIcon={} linkText="Watch Now" /> + @@ -135,27 +154,6 @@ var Examples = React.createClass({
{this._loremIpsum()} - - - ); } From 90ea799792ee6dd8f7a487cdd084cd263933aa8e Mon Sep 17 00:00:00 2001 From: Emmanuel Pilande Date: Tue, 21 Jun 2016 17:51:17 -1000 Subject: [PATCH 12/21] Fix spacing issue with resource tile Signed-off-by: Emmanuel Pilande --- src/scss/_objects.callout.scss | 4 +++- src/scss/_objects.resources.scss | 9 ++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/scss/_objects.callout.scss b/src/scss/_objects.callout.scss index 2566adf..e15f133 100644 --- a/src/scss/_objects.callout.scss +++ b/src/scss/_objects.callout.scss @@ -14,7 +14,9 @@ } &__content { - max-width: $size-small; + @include media-query(lap-and-up) { + max-width: $size-small; + } } .heading--uppercase { diff --git a/src/scss/_objects.resources.scss b/src/scss/_objects.resources.scss index d66996d..b481133 100644 --- a/src/scss/_objects.resources.scss +++ b/src/scss/_objects.resources.scss @@ -5,12 +5,11 @@ } .tiles { - margin: -12px; + @include media-query(lap-and-up) { + margin: -12px; - > .tile { - - @include media-query(lap-and-up) { - flex-basis: 400px; + > .tile { + flex-basis: 411px; } } } From f55ed333404c195a2711a08a548b2da430c3e7bb Mon Sep 17 00:00:00 2001 From: Emmanuel Pilande Date: Wed, 22 Jun 2016 12:59:51 -1000 Subject: [PATCH 13/21] Fix typo Signed-off-by: Emmanuel Pilande --- src/examples/Examples.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/examples/Examples.js b/src/examples/Examples.js index 8687f18..c9deea5 100644 --- a/src/examples/Examples.js +++ b/src/examples/Examples.js @@ -132,7 +132,7 @@ var Examples = React.createClass({ ]} /> - + Manage control, compliance and cost through our value-added Licensing, Advisory Services and Software Asset Management. From 47f1f152529bb53eb04f5541378c48172eb4377d Mon Sep 17 00:00:00 2001 From: Emmanuel Pilande Date: Wed, 22 Jun 2016 23:31:20 -1000 Subject: [PATCH 14/21] Add ResourcesTile option docs Signed-off-by: Emmanuel Pilande --- src/develop/components/ResourcesDoc.js | 14 +++++++++++++- src/modules/Resources.js | 6 +++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/develop/components/ResourcesDoc.js b/src/develop/components/ResourcesDoc.js index aa8f41d..1d7f25b 100644 --- a/src/develop/components/ResourcesDoc.js +++ b/src/develop/components/ResourcesDoc.js @@ -62,7 +62,19 @@ var ResourcesDoc = React.createClass({

Resources Options

tiles {`[{thumbnail: , title: , description: }, ...]`}
-
An array of resource tiles.
+
An array of resource tiles. Required.
+
+ + +
+

ResourcesTile Options

+
+
thumbnail {'{string}'}
+
Url path to image. Required.
+
title {'{string}'}
+
Resource title. Required.
+
description {'{string}'}
+
Resource description. Required.
diff --git a/src/modules/Resources.js b/src/modules/Resources.js index 30b666a..e0623e7 100644 --- a/src/modules/Resources.js +++ b/src/modules/Resources.js @@ -48,9 +48,9 @@ Resources.propTypes = { header: PropTypes.string, subHeader: PropTypes.string, tiles: PropTypes.arrayOf(PropTypes.shape({ - thumbnail: PropTypes.string, - title: PropTypes.string, - description: PropTypes.string + thumbnail: PropTypes.string.isRequired, + title: PropTypes.string.isRequired, + description: PropTypes.string.isRequired })).isRequired }; From 738fe155da6319f1b5701e3ad14522d00ef08589 Mon Sep 17 00:00:00 2001 From: Emmanuel Pilande Date: Thu, 23 Jun 2016 14:33:33 -1000 Subject: [PATCH 15/21] Set backgroundImage prop on box instead of inline style Signed-off-by: Emmanuel Pilande --- src/modules/ResourcesTile.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/modules/ResourcesTile.js b/src/modules/ResourcesTile.js index 661c1af..aa0b475 100644 --- a/src/modules/ResourcesTile.js +++ b/src/modules/ResourcesTile.js @@ -18,15 +18,11 @@ export default class ResourcesTile extends Component { this.props.className ); - const thumbnailStyles = { - backgroundImage: `url(${thumbnail})` - }; - return ( From 87a09594daffacab0e987c9d3d7a16b500acd71c Mon Sep 17 00:00:00 2001 From: Emmanuel Pilande Date: Thu, 23 Jun 2016 15:34:25 -1000 Subject: [PATCH 16/21] Remove custom resources subheader style Signed-off-by: Emmanuel Pilande --- src/modules/Resources.js | 10 ++++++---- src/scss/_objects.resources.scss | 4 ---- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/modules/Resources.js b/src/modules/Resources.js index e0623e7..b7b55c0 100644 --- a/src/modules/Resources.js +++ b/src/modules/Resources.js @@ -22,7 +22,7 @@ export default class Resources extends Component { let subHeaderMarkup; if (subHeader) { subHeaderMarkup = ( - + {subHeader} ); @@ -33,9 +33,11 @@ export default class Resources extends Component { }); return ( - - {header} - {subHeaderMarkup} + + + {header} + {subHeaderMarkup} + {resourceTiles} diff --git a/src/scss/_objects.resources.scss b/src/scss/_objects.resources.scss index b481133..d479113 100644 --- a/src/scss/_objects.resources.scss +++ b/src/scss/_objects.resources.scss @@ -1,9 +1,5 @@ .resources { - &__subheader.paragraph { - margin-top: 0; - } - .tiles { @include media-query(lap-and-up) { margin: -12px; From ca73d6a92b7323aa97cafc1697f2e0f399796338 Mon Sep 17 00:00:00 2001 From: Emmanuel Pilande Date: Thu, 23 Jun 2016 15:35:18 -1000 Subject: [PATCH 17/21] Use existing Grommet variables Signed-off-by: Emmanuel Pilande --- src/scss/_objects.resources-tile.scss | 6 +++--- src/scss/_objects.resources.scss | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/scss/_objects.resources-tile.scss b/src/scss/_objects.resources-tile.scss index 9c3fb99..94e4fb7 100644 --- a/src/scss/_objects.resources-tile.scss +++ b/src/scss/_objects.resources-tile.scss @@ -1,9 +1,9 @@ .resources-tile { - background-color: #fff; + background-color: $background-color; &__thumbnail { - width: 100px; - height: 100px; + width: $graphic-small-size; + height: $graphic-small-size; } .heading--uppercase { diff --git a/src/scss/_objects.resources.scss b/src/scss/_objects.resources.scss index d479113..44e0dee 100644 --- a/src/scss/_objects.resources.scss +++ b/src/scss/_objects.resources.scss @@ -2,10 +2,10 @@ .tiles { @include media-query(lap-and-up) { - margin: -12px; + margin: halve(-$inuit-base-spacing-unit); > .tile { - flex-basis: 411px; + flex-basis: $inuit-base-spacing-unit * 17; } } } From 72bb030bbdd68302b99ea1b48da01321f34d46df Mon Sep 17 00:00:00 2001 From: Emmanuel Pilande Date: Wed, 17 Aug 2016 11:53:10 -1000 Subject: [PATCH 18/21] Fix linting error & spacing issues --- src/examples/Examples.js | 1 - src/scss/_objects.resources-tile.scss | 2 +- src/scss/_objects.resources.scss | 4 ++-- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/examples/Examples.js b/src/examples/Examples.js index 5fab65b..df5917b 100644 --- a/src/examples/Examples.js +++ b/src/examples/Examples.js @@ -15,7 +15,6 @@ var ContentCard = require('../modules/ContentCard'); var MarqueeParallax = require('../modules/MarqueeParallax'); var Accordion = require('../modules/Accordion'); var AccordionPanel = require('../modules/AccordionPanel'); -var Callout = require('../modules/Callout'); var Resources = require('../modules/Resources'); var Header = require('./Header'); diff --git a/src/scss/_objects.resources-tile.scss b/src/scss/_objects.resources-tile.scss index 2b495df..06c9738 100644 --- a/src/scss/_objects.resources-tile.scss +++ b/src/scss/_objects.resources-tile.scss @@ -6,7 +6,7 @@ height: $graphic-small-size; } - .heading--uppercase { + .grommetux-heading--uppercase { letter-spacing: normal; } } diff --git a/src/scss/_objects.resources.scss b/src/scss/_objects.resources.scss index c40cc84..688c83b 100644 --- a/src/scss/_objects.resources.scss +++ b/src/scss/_objects.resources.scss @@ -1,10 +1,10 @@ .resources { - .tiles { + .grommetux-tiles { @include media-query(lap-and-up) { margin: halve(-$inuit-base-spacing-unit); - > .tile { + > .grommetux-tile { flex-basis: $inuit-base-spacing-unit * 17; } } From 3e71a8c3017f81f33eb1652c6c13d09ce1b3d73c Mon Sep 17 00:00:00 2001 From: Emmanuel Pilande Date: Wed, 17 Aug 2016 22:15:10 -1000 Subject: [PATCH 19/21] Handle resource tile click --- src/modules/Resources.js | 3 ++- src/modules/ResourcesTile.js | 32 ++++++++++++++++++++++++++++---- 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/src/modules/Resources.js b/src/modules/Resources.js index b7b55c0..d629d8c 100644 --- a/src/modules/Resources.js +++ b/src/modules/Resources.js @@ -52,7 +52,8 @@ Resources.propTypes = { tiles: PropTypes.arrayOf(PropTypes.shape({ thumbnail: PropTypes.string.isRequired, title: PropTypes.string.isRequired, - description: PropTypes.string.isRequired + description: PropTypes.string.isRequired, + link: PropTypes.string })).isRequired }; diff --git a/src/modules/ResourcesTile.js b/src/modules/ResourcesTile.js index aa0b475..939608c 100644 --- a/src/modules/ResourcesTile.js +++ b/src/modules/ResourcesTile.js @@ -10,16 +10,39 @@ import Paragraph from 'grommet/components/Paragraph'; const CLASS_ROOT = 'resources-tile'; export default class ResourcesTile extends Component { + constructor (props) { + super(props); + this._handleClick = this._handleClick.bind(this); + } + + _handleClick () { + window.location.href = this.props.link; + } + render () { - const { thumbnail, title, description } = this.props; + const { + className, + thumbnail, + title, + description, + link, + ...props + } = this.props; const classes = classnames( CLASS_ROOT, - this.props.className + className ); return ( - + Date: Wed, 17 Aug 2016 22:16:14 -1000 Subject: [PATCH 20/21] Update example & docs page --- src/develop/components/ResourcesDoc.js | 6 ++++-- src/examples/Examples.js | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/develop/components/ResourcesDoc.js b/src/develop/components/ResourcesDoc.js index 1d7f25b..89e8076 100644 --- a/src/develop/components/ResourcesDoc.js +++ b/src/develop/components/ResourcesDoc.js @@ -36,12 +36,14 @@ var ResourcesDoc = React.createClass({ { thumbnail: '/docs/img/resource-img-1.png', title: 'Brochure', - description: 'Enable workplace productivity HPE Transformation Workshop' + description: 'Enable workplace productivity HPE Transformation Workshop', + link: '/docs/hpe/develop/resources' }, { thumbnail: '/docs/img/resource-img-2.png', title: 'Solution Brief', - description: 'Digital Context Aware Solutions' + description: 'Digital Context Aware Solutions', + onClick: () => console.log('Hello') }, { thumbnail: '/docs/img/resource-img-3.png', diff --git a/src/examples/Examples.js b/src/examples/Examples.js index 7e0d5ce..252f05b 100644 --- a/src/examples/Examples.js +++ b/src/examples/Examples.js @@ -249,12 +249,14 @@ var Examples = React.createClass({ { thumbnail: '/docs/img/resource-img-1.png', title: 'Brochure', - description: 'Enable workplace productivity HPE Transformation Workshop' + description: 'Enable workplace productivity HPE Transformation Workshop', + link: '/docs/hpe/develop/resources' }, { thumbnail: '/docs/img/resource-img-2.png', title: 'Solution Brief', - description: 'Digital Context Aware Solutions' + description: 'Digital Context Aware Solutions', + onClick: () => console.log('Hello') }, { thumbnail: '/docs/img/resource-img-3.png', From ead2d0e95c3e6c9242534811432ec80221f8cc18 Mon Sep 17 00:00:00 2001 From: Emmanuel Pilande Date: Wed, 17 Aug 2016 22:27:52 -1000 Subject: [PATCH 21/21] Add link to docs --- src/develop/components/ResourcesDoc.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/develop/components/ResourcesDoc.js b/src/develop/components/ResourcesDoc.js index 89e8076..4c04c86 100644 --- a/src/develop/components/ResourcesDoc.js +++ b/src/develop/components/ResourcesDoc.js @@ -63,7 +63,7 @@ var ResourcesDoc = React.createClass({

Resources Options

-
tiles {`[{thumbnail: , title: , description: }, ...]`}
+
tiles {`[{thumbnail: , title: , description: , link: }, ...]`}
An array of resource tiles. Required.
@@ -77,6 +77,8 @@ var ResourcesDoc = React.createClass({
Resource title. Required.
description {'{string}'}
Resource description. Required.
+
link {'{string}'}
+
URL where the link should go.