From c5e6d4f140ed0deba7cdec2e2d9fbd3e63bb5f9e Mon Sep 17 00:00:00 2001 From: Phuoc Nguyen Date: Wed, 28 Apr 2021 16:29:01 +0700 Subject: [PATCH] Add Masonry Grid --- client/constants/Pattern.ts | 1 + client/pages/ExplorePage.tsx | 1 + client/patterns/card-layout/Details.tsx | 54 +++---- client/patterns/masonry-grid/Cover.tsx | 45 ++++++ client/patterns/masonry-grid/Details.tsx | 86 ++++++++++ client/patterns/masonry-grid/masonry-grid.css | 20 +++ client/patterns/simple-grid/Details.tsx | 150 +++++++++--------- 7 files changed, 253 insertions(+), 104 deletions(-) create mode 100644 client/patterns/masonry-grid/Cover.tsx create mode 100644 client/patterns/masonry-grid/Details.tsx create mode 100644 client/patterns/masonry-grid/masonry-grid.css diff --git a/client/constants/Pattern.ts b/client/constants/Pattern.ts index 68ed829..51183e5 100644 --- a/client/constants/Pattern.ts +++ b/client/constants/Pattern.ts @@ -45,6 +45,7 @@ enum Pattern { KeyboardShortcut = 'Keyboard shortcut', LayeredCard = 'Layered card', LinedPaper = 'Lined paper', + MasonryGrid = 'Masonry grid', MediaObject = 'Media object', MegaMenu = 'Mega menu', Menu = 'Menu', diff --git a/client/pages/ExplorePage.tsx b/client/pages/ExplorePage.tsx index 4f94f09..331e598 100644 --- a/client/pages/ExplorePage.tsx +++ b/client/pages/ExplorePage.tsx @@ -52,6 +52,7 @@ const ExplorePage = () => {
+ diff --git a/client/patterns/card-layout/Details.tsx b/client/patterns/card-layout/Details.tsx index e8e9b47..f464b77 100644 --- a/client/patterns/card-layout/Details.tsx +++ b/client/patterns/card-layout/Details.tsx @@ -21,8 +21,7 @@ const Details: React.FC<{}> = () => { -
- @@ -53,40 +52,39 @@ css={` padding-right: 8px; } `} + > +
-
- { - Array(10).fill(0).map((_, index) => { - return ( -
- -
- ); - }) - } -
+ { + Array(10).fill(0).map((_, index) => { + return ( +
+ +
+ ); + }) + }
- -
+
+ - + ); }; diff --git a/client/patterns/masonry-grid/Cover.tsx b/client/patterns/masonry-grid/Cover.tsx new file mode 100644 index 0000000..74a8e8d --- /dev/null +++ b/client/patterns/masonry-grid/Cover.tsx @@ -0,0 +1,45 @@ +/** + * A collection of popular layouts and patterns made with CSS (https://csslayout.io) + * (c) 2019 - 2021 Nguyen Huu Phuoc + */ + +import * as React from 'react'; + +import Frame from '../../placeholders/Frame'; +import Rectangle from '../../placeholders/Rectangle'; + +const Cover: React.FC<{}> = () => { + return ( + +
+
+
+
+
+
+
+
+
+
+
+
+ + ); +}; + +export default Cover; diff --git a/client/patterns/masonry-grid/Details.tsx b/client/patterns/masonry-grid/Details.tsx new file mode 100644 index 0000000..9c3d08c --- /dev/null +++ b/client/patterns/masonry-grid/Details.tsx @@ -0,0 +1,86 @@ +/** + * A collection of popular layouts and patterns made with CSS (https://csslayout.io) + * (c) 2019 - 2021 Nguyen Huu Phuoc + */ + +import * as React from 'react'; +import { Helmet } from 'react-helmet'; + +import RelatedPatterns from '../../components/RelatedPatterns'; +import Pattern from '../../constants/Pattern'; +import DetailsLayout from '../../layouts/DetailsLayout'; +import BrowserFrame from '../../placeholders/BrowserFrame'; +import Rectangle from '../../placeholders/Rectangle'; + +import './masonry-grid.css'; + +const Details: React.FC<{}> = () => { + return ( + + + + + + + + + +
...
+ + +
+`} +css={` +.masonry-grid { + /* It is split into 3 columns */ + column-count: 3; + + /* The space between columns */ + column-gap: 1rem; + + /* Misc */ + width: 100%; +} + +.masonry-grid__item { + /* Prevent a column from breaking into multiple columns */ + break-inside: avoid; + + /* Misc */ + margin-bottom: 1rem; +} +`} + > +
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + + + ); +}; + +export default Details; diff --git a/client/patterns/masonry-grid/masonry-grid.css b/client/patterns/masonry-grid/masonry-grid.css new file mode 100644 index 0000000..f26a81b --- /dev/null +++ b/client/patterns/masonry-grid/masonry-grid.css @@ -0,0 +1,20 @@ +/** + * A collection of popular layouts and patterns made with CSS (https://csslayout.io) + * (c) 2019 - 2021 Nguyen Huu Phuoc + */ + +.masonry-grid { + column-count: 3; + column-gap: 1rem; + + /* Misc */ + width: 100%; +} + +.masonry-grid__item { + /* Prevent a column from breaking into multiple columns */ + break-inside: avoid; + + /* Misc */ + margin-bottom: 1rem; +} diff --git a/client/patterns/simple-grid/Details.tsx b/client/patterns/simple-grid/Details.tsx index 0f18d59..842afc1 100644 --- a/client/patterns/simple-grid/Details.tsx +++ b/client/patterns/simple-grid/Details.tsx @@ -21,8 +21,7 @@ const Details: React.FC<{}> = () => { -
-
@@ -57,92 +56,91 @@ css={` flex: 1; } `} + > +
-
-
-
-
- -
-
- -
+
+
+
+
- -
-
- -
-
- -
-
- -
+
+
+
-
-
- -
-
- -
-
- -
+
+
+
- -
-
- -
-
- -
+
+
- -
-
- -
-
- -
-
- -
-
- -
+
+
+
-
-
- -
-
- -
-
- -
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
- -
+
+ - + ); };