From 07796e769a0462e477ff09cfb6d5c2d32ab42998 Mon Sep 17 00:00:00 2001 From: Andy Zhao Date: Fri, 3 May 2019 10:17:12 -0400 Subject: [PATCH] Move new listing form to Preact (#2674) * Fix typo * Use preact for new listing form * Send proper max tag amount in error msg * Add styles back in for edit page --- .../stylesheets/classified_listings.scss | 52 ++- .../stylesheets/classified_listings_form.scss | 1 + .../listings/elements/bodyMarkdown.jsx | 26 ++ .../listings/elements/categories.jsx | 56 +++ .../listings/elements/organizationField.jsx | 0 app/javascript/listings/elements/tags.jsx | 335 ++++++++++++++++++ app/javascript/listings/elements/title.jsx | 32 ++ app/javascript/listings/listingForm.jsx | 63 ++++ app/javascript/packs/listingForm.jsx | 15 + app/models/classified_listing.rb | 4 +- app/views/classified_listings/_form.html.erb | 34 +- app/views/classified_listings/new.html.erb | 2 +- 12 files changed, 589 insertions(+), 31 deletions(-) create mode 100644 app/assets/stylesheets/classified_listings_form.scss create mode 100644 app/javascript/listings/elements/bodyMarkdown.jsx create mode 100644 app/javascript/listings/elements/categories.jsx create mode 100644 app/javascript/listings/elements/organizationField.jsx create mode 100644 app/javascript/listings/elements/tags.jsx create mode 100644 app/javascript/listings/elements/title.jsx create mode 100644 app/javascript/listings/listingForm.jsx create mode 100644 app/javascript/packs/listingForm.jsx diff --git a/app/assets/stylesheets/classified_listings.scss b/app/assets/stylesheets/classified_listings.scss index dbd89bf33..012b6be45 100644 --- a/app/assets/stylesheets/classified_listings.scss +++ b/app/assets/stylesheets/classified_listings.scss @@ -186,7 +186,7 @@ * { box-sizing: border-box; } - .listings-back-buton { + .listings-back-button { font-size: 0.8em; margin: 5px 0px 10px; display: block; @@ -263,4 +263,52 @@ font-size: 0.8em; } } -} \ No newline at end of file +} + +.field { + font-size: 18px; +} + +.listingform__input { + margin-top: 10px; +} + +.listingform__bodymarkdown { + width: 100%; + height: 300px; + padding: 5px; + font-size: 17px; + border-radius: 3px; + background: white; + background: var(--theme-container-background, white); + color: $black; + color: var(--theme-color, $black); + border: 1px solid $light-medium-gray; +} + +.listingform__tagoptionrow { + padding: 10px; + cursor: pointer; + &:hover { + background: lighten($green, 27%); + color: $black; + } +} + +.listingform__tagoptionrow--active { + background: $green; + color: $black; + &:hover { + background: darken($green, 10%); + } +} + +.listingform__label { + width: 100%; + display: inline-block; + font-size: 0.7em; + margin: 8px 0px 3px 0px; + border-radius: 3px; + padding: 6px 0px; + font-weight: bold; +} diff --git a/app/assets/stylesheets/classified_listings_form.scss b/app/assets/stylesheets/classified_listings_form.scss new file mode 100644 index 000000000..d73a900db --- /dev/null +++ b/app/assets/stylesheets/classified_listings_form.scss @@ -0,0 +1 @@ +@import 'variables'; diff --git a/app/javascript/listings/elements/bodyMarkdown.jsx b/app/javascript/listings/elements/bodyMarkdown.jsx new file mode 100644 index 000000000..fbc3cebbc --- /dev/null +++ b/app/javascript/listings/elements/bodyMarkdown.jsx @@ -0,0 +1,26 @@ +import { h } from 'preact'; +import PropTypes from 'prop-types'; + +const BodyMarkdown = ({ onChange, defaultValue }) => ( +
+