From f786d0f183b389d0f20a48ece60439adb14185bc Mon Sep 17 00:00:00 2001 From: Samuel Colvin Date: Fri, 12 Jan 2018 15:28:22 +0000 Subject: [PATCH 01/15] list view --- src/components/App.js | 8 ++-- src/components/contractors/Contractors.js | 22 +++++---- src/components/contractors/Grid.js | 47 -------------------- src/components/contractors/List.js | 30 +++++++++++++ src/components/contractors/SelectSubjects.js | 29 ++++++++++++ src/index.js | 2 +- src/main.scss | 1 + src/styles/contractors.scss | 25 +++++++++++ src/styles/grid.scss | 23 ---------- src/tests/index.test.js | 2 +- 10 files changed, 104 insertions(+), 85 deletions(-) delete mode 100644 src/components/contractors/Grid.js create mode 100644 src/components/contractors/List.js create mode 100644 src/components/contractors/SelectSubjects.js create mode 100644 src/styles/contractors.scss diff --git a/src/components/App.js b/src/components/App.js index 0a36f685..99d6bb5e 100644 --- a/src/components/App.js +++ b/src/components/App.js @@ -61,13 +61,13 @@ class App extends Component { render () { if (this.state.error) { return {this.state.error} - } else if (this.props.config.mode === 'grid') { - return } else if (this.props.config.mode === 'enquiry') { return - } else { - // enquiry-modal + } else if (this.props.config.mode === 'enquiry-modal') { return + } else { + // grid or list + return } } } diff --git a/src/components/contractors/Contractors.js b/src/components/contractors/Contractors.js index 628e8090..557553c5 100644 --- a/src/components/contractors/Contractors.js +++ b/src/components/contractors/Contractors.js @@ -1,8 +1,10 @@ import React, { Component } from 'react' import {Route} from 'react-router-dom' import {async_start, slugify} from '../../utils' -import Grid from './Grid' +import {If} from '../shared/Tools' +import {Grid, List} from './List' import ConModal from './ConModal' +import SelectSubjects from './SelectSubjects' class Contractors extends Component { constructor (props) { @@ -75,15 +77,17 @@ class Contractors extends Component { } render () { + const DisplayComponent = this.props.config.mode === 'grid' ? Grid : List return ( -
- +
+ + + + ( { - let description = '' - if (props.selected_subject) { - const msg_id_suffix = props.contractors.length === 1 ? 'single' : 'plural' - description = props.root.get_text('subject_filter_summary_' + msg_id_suffix, { - count: props.contractors.length, - subject: props.selected_subject.name, - }) - } - return ( -
- -
- +
, +
+ {description} +
+ ] +} + +export default SelectSubject diff --git a/src/index.js b/src/index.js index f5fb49ba..2d262117 100644 --- a/src/index.js +++ b/src/index.js @@ -40,7 +40,7 @@ const STRINGS = { subject_filter_summary_plural: '{subject}: showing {count} results', } -const MODES = ['grid', 'enquiry', 'enquiry-modal'] +const MODES = ['grid', 'list', 'enquiry', 'enquiry-modal'] const ROUTER_MODES = ['hash', 'history'] window.socket = function (public_key, config) { diff --git a/src/main.scss b/src/main.scss index e232225e..c0041936 100644 --- a/src/main.scss +++ b/src/main.scss @@ -22,6 +22,7 @@ @import './styles/enquiry'; @import './styles/enquiry-button'; @import './styles/tools'; +@import './styles/contractors'; @import './styles/grid'; @import './styles/input'; @import './styles/modal'; diff --git a/src/styles/contractors.scss b/src/styles/contractors.scss new file mode 100644 index 00000000..4fa24a3c --- /dev/null +++ b/src/styles/contractors.scss @@ -0,0 +1,25 @@ +.tcs-contractors { + padding: 10px; +} + +.subject-select { + width: 50%; + margin: 0 0 0 auto; + padding: 0 2px; + box-sizing: border-box; +} + +@media(max-width: 600px) { + .subject-select { + width: 100%; + } +} + +@media(max-width: 400px) { + .subject-select { + width: 100%; + } + .tcs-contractors { + padding: 10px 2px; + } +} diff --git a/src/styles/grid.scss b/src/styles/grid.scss index f48fff20..3f0fea94 100644 --- a/src/styles/grid.scss +++ b/src/styles/grid.scss @@ -1,16 +1,5 @@ @import '../conf'; -.tcs-grid { - padding: 10px; -} - -.subject-select { - width: 50%; - margin: 0 0 0 auto; - padding: 0 2px; - box-sizing: border-box; -} - .tcs-summary { padding: 5px 2px 0; text-align: right; @@ -19,12 +8,6 @@ min-height: 18px; } -@media(max-width: 600px) { - .subject-select { - width: 100%; - } -} - .tcs-flex { display: flex; flex-wrap: wrap; @@ -68,12 +51,6 @@ } @media(max-width: 400px) { - .subject-select { - width: 100%; - } - .tcs-grid { - padding: 10px 2px; - } .tcs-col { padding: 10px 2px 20px; } diff --git a/src/tests/index.test.js b/src/tests/index.test.js index 8ef94250..e822a139 100644 --- a/src/tests/index.test.js +++ b/src/tests/index.test.js @@ -12,7 +12,7 @@ it('renders grid', () => { const r = window.socket('good') expect(r.goto).toBeTruthy() expect(r.config.contractor_filter).toEqual({}) - expect(div.querySelectorAll('.tcs-grid').length).toBe(1) + expect(div.querySelectorAll('.tcs-contractors').length).toBe(1) // console.log(pretty_html(div.innerHTML)) }) From cb6c528e0ff3fe709dcbb545d4b0b5c9fc4ef525 Mon Sep 17 00:00:00 2001 From: Samuel Colvin Date: Fri, 12 Jan 2018 18:06:35 +0000 Subject: [PATCH 02/15] pretty list view --- public/index.html | 9 +++- src/components/contractors/Contractors.js | 2 +- src/components/contractors/List.js | 38 ++++++++++++---- src/conf.scss | 4 +- src/index.js | 1 + src/main.scss | 1 + src/styles/con-modal.scss | 16 ------- src/styles/contractors.scss | 42 ++++++++++++++++++ src/styles/grid.scss | 48 ++++++++------------ src/styles/list.scss | 53 +++++++++++++++++++++++ 10 files changed, 157 insertions(+), 57 deletions(-) create mode 100644 src/styles/list.scss diff --git a/public/index.html b/public/index.html index 25907bcf..c4968693 100644 --- a/public/index.html +++ b/public/index.html @@ -27,6 +27,7 @@
+
+ diff --git a/src/styles/list.scss b/src/styles/list.scss index 14bf98d1..f83037f1 100644 --- a/src/styles/list.scss +++ b/src/styles/list.scss @@ -46,8 +46,35 @@ $box-height: 186px; .tcs-list-extra { display: grid; - grid-template-rows: 100px 1fr auto; + grid-template-rows: auto 1fr; .tcs-stars { grid-row: span 2; } } + +@media(max-width: 600px) { + .tcs-list { + .tcs-item { + grid-template-columns: $dft-image-size auto; + } + .tcs-primary-description { + display: none; + } + h3.tcs-name { + font-size: 20px; + } + .tcs-aside { + font-size: 16px; + } + } + .tcs-image-col { + grid-row: 1 / span 2; + } + + .tcs-list-extra { + grid-template-rows: auto; + .tcs-stars { + grid-row: span 1; + } + } +} From 294bf7b39a618d49022db422ae232fb5001cdd01 Mon Sep 17 00:00:00 2001 From: Samuel Colvin Date: Mon, 22 Jan 2018 13:47:34 +0000 Subject: [PATCH 11/15] more css similarity fixes --- src/components/enquiry/EnquiryButton.js | 2 +- src/styles/contractors.scss | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/enquiry/EnquiryButton.js b/src/components/enquiry/EnquiryButton.js index 1921a714..bce00782 100644 --- a/src/components/enquiry/EnquiryButton.js +++ b/src/components/enquiry/EnquiryButton.js @@ -5,7 +5,7 @@ import EnquiryModal from './EnquiryModal' const EnquiryButton = ({root, config}) => (
- + {root.get_text('enquiry_button')} diff --git a/src/styles/contractors.scss b/src/styles/contractors.scss index 03b39f42..8ebd810a 100644 --- a/src/styles/contractors.scss +++ b/src/styles/contractors.scss @@ -27,8 +27,8 @@ } .tcs-item { - text-decoration: none; - user-select: none; + text-decoration: none !important; + user-select: none !important; h3.tcs-name { white-space: nowrap; overflow: hidden; From b84dadc7f5672b5c72a4be32f9086c45da67f9bd Mon Sep 17 00:00:00 2001 From: Samuel Colvin Date: Mon, 22 Jan 2018 16:48:21 +0000 Subject: [PATCH 12/15] adding pagination --- public/index.html | 3 +- src/components/contractors/Contractors.js | 53 +++++++++++++++++++---- src/components/contractors/List.js | 5 +-- src/index.js | 6 ++- src/styles/contractors.scss | 25 +++++++++++ src/utils.js | 2 + 6 files changed, 80 insertions(+), 14 deletions(-) diff --git a/public/index.html b/public/index.html index 852475cd..a4a749dc 100644 --- a/public/index.html +++ b/public/index.html @@ -40,10 +40,11 @@