Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

@import throws off indent rule starting with v1.8.0 #779

Closed
cappadona opened this issue Jul 7, 2016 · 1 comment · Fixed by #814
Closed

@import throws off indent rule starting with v1.8.0 #779

cappadona opened this issue Jul 7, 2016 · 1 comment · Fixed by #814
Labels

Comments

@cappadona
Copy link

Upgraded to v1.8.2 earlier today and encountered some funkiness with indentation. Tracked it down to being introduced with v1.8.0.

Here's a sample file to reproduce this issue (using the default config):

indent-fail.scss

@import 'anything';

// Colors variable via accoutrement-color
$colors: (
  'white': hsl(0, 0%, 100%),
  'black': hsl(0, 0%, 0%),
  'aluminum': hsl(193, 6%, 68%),
  'light-gray': 'aluminum' ('tint': 40%),
  'bunker': hsl(210, 6%, 7%),

  // Palette
  'malta': hsl(33, 21%, 69%),
  'soapstone': hsl(39, 30%, 89%),
);

Here's the CLI output when using v1.8.2 (or anything >= v1.8.0):

$ sass-lint indent-fail.scss -v

indent-fail.scss
   9:3  warning  Expected indentation of 6 spaces but found 2  indentation
  11:3  warning  Expected indentation of 6 spaces but found 2  indentation
  12:3  warning  Expected indentation of 6 spaces but found 2  indentation
  13:3  warning  Expected indentation of 6 spaces but found 2  indentation

✖ 4 problems (0 errors, 4 warnings)

here's a diff with a sample file that doesn't exhibit this issue (comment out the the @import):

diff --git a/indent-fail.scss b/indent-pass.scss
index 5b4d9e4..0a9ae5b 100644
--- a/indent-fail.scss
+++ b/indent-pass.scss
@@ -1,4 +1,4 @@
// @import 'anything';

// Colors variable via accoutrement-color
$colors: (

Thanks.

@DanPurdy DanPurdy added the bug label Jul 8, 2016
@DanPurdy
Copy link
Member

DanPurdy commented Jul 8, 2016

@cappadona thanks for the detailed report, 1.8.0 saw massive changes to actually make indentation work for a lot more scenarios and Sass syntax so I think there's obviously still a few edge cases that were missed. I'll look into this one soon.

👍

cappadona added a commit to cul-it/mann-wagon that referenced this issue Jul 15, 2016
Sticking with 1.7.0 for now due to bug with indentation rule, introduced in
v1.8.0

sasstools/sass-lint#779
cappadona added a commit to cul-it/mann-wagon that referenced this issue Oct 19, 2016
* Use semantic-ui modal component for booked reserve

Twofor:

1. Replaces temporary modal via jquery-ui introduced in 75fbe568

2. Search-n-destroy of remaining JS rquests to CDN

* Use loco's javascript_tag filter consistently

* Restore key icon for loanable study rooms

Lost while refactoring semantic-ui and font awesome via webpack.

* Helps to include the font awesome fonts

Doh! Should have been included as part of 65b60953.

* Prefix main font-awesome stylesheet w/ underscore

As per the locomotive docs, the wagon deploy task will precompile and push only
the stylesheet files not beginning with an underscore. So only our primary
stylesheet (main.scss), which imports everything else, should be prefix free.

https://locomotive-v3.readme.io/docs/assets#stylesheets

Includes upgrade to copy-webpack-plugin (v3.0.1) to address a bug when using
globs:

https://github.com/kevlened/copy-webpack-plugin/issues/18

* Use .scss extension for semantic-ui components

When vendorizing these stylesheets use the unminified css as the src and rename
as follows:

* prefix with underscore
* change extension to .scss

This ensures these imported stylesheets will not be precompiled and pushed via
wagon deploy. Additional details in previous commit ff1f57d2.

* Update README to cover npm & webpack details

* Stone center Macs are now in LabStats #341

Gabriel has added 6 of the iMacs, and plans to add the client to the remaining 6
this week. More details in #340.

This should cover all the needed code/logic changes on the front-end.

* Cleanup `use` stragglers from IA re-org #353

* use/computing -> use/technology/computing

* use/equipment -> use/technology/equipment

* use/print-copy-scan -> use/technology/print-copy-scan

* Cleanup `services-support` stragglers #353

IA re-org included renaming `Services & Support` to `Help`

* services-support -> help

Coordinated with back-office tweaks to update URL paths (via slug field):

* services-support/research-help -> help/research-support

* services-support/for-faculty-instructors -> help/faculty-instructors

* services-support/outreach-engagement -> help/outreach

* Refactor GIS consultation template #354

Puts the power of content curation back into the hands of our staff via the
back-office and follows in the footsteps of laptops & desktops, adding the
consultation button via an accessory snippet.

Still would welcome the flexibility of this planned feature in a heartbeat:
https://trello.com/c/qnnObbhJ

* Install sass-lint as dev dependency

Sticking with 1.7.0 for now due to bug with indentation rule, introduced in
v1.8.0

sasstools/sass-lint#779

* Initial config for sass-lint

Extend default config located in node_modules/sass-lint/lib/config/sass-lint.yml

Enable SMACSS property order:
https://github.com/sasstools/sass-lint/blob/develop/lib/config/property-sort-orders/smacss.yml

More configuration details in README:
https://github.com/sasstools/sass-lint#configuring

* Switch to concentric for property-sort-order

And just like that, SMACSS goes out the window becuase I can't break my age-old
habit/preference of `margin` before `width` :)

https://github.com/sasstools/sass-lint/blob/develop/lib/config/property-sort-orders/concentric.yml
http://rhodesmill.org/brandon/2011/concentric-css

* Enable BEM support for sass-lint

https://github.com/sasstools/sass-lint/blob/master/docs/rules/class-name-format.md
https://github.com/sasstools/sass-lint/blob/master/docs/rules/bem-depth.md

Go with the preferred hyphenatedbem convention courtesy of Nicolas Gallagher and
Harry Roberts:

http://csswizardry.com/2013/01/mindbemding-getting-your-head-round-bem-syntax

* We be lintin

Wholesale consistency via sass-lint. Style for Vue components will be addressed
in the next commit.

There are a couple of outliers related to constraints inherent in vendored tools
(semantic-ui & jquery plugins). These will be resolved once the ability to
disable linters from the source is implemented. sasstools/sass-lint#677

* Style linting for Vue components via sass-lint

Kept them separate from previous commit (fd1c9088) in case we need to revert.

* Move to Libsass for compiling

The sass compile times via sprockets is killing me...currently averaging between
14-18 seconds for any change in the sass src.

This is the first step to pass off compiling to Libsass via webpack. Not yet
fully tested with Engine, but so far so good with Wagon, already cutting the
average time in half.

Breaking up the commits here in hope that this will make it easier to track
history since we're moving all sass files to src/stylesheets.

* No need to vendorize sass via copy-webpack-plugin

This just got a whole lot simpler and cleaner. Still using the plugin to copy
over font-awesome fonts, but it's days are numbered...

* Watch & recompile on change via `webpack --watch`

https://webpack.github.io/docs/cli.html#watch-mode-watch

Stick with `build` command for now but would like to switch over to `npm start`
once I figure out the best way to get all 3 players syncopated:

* serving via wagon

* watching/compiling via webpack

* reload/hot-sync via browser-sync

Easier said then done having to deal with all of the foreground use of stdout
across the three, but browser-sync-webpack-plugin looks promising.

https://www.npmjs.com/package/browser-sync-webpack-plugin

* Attempt to demystify webpack config

Provide some clarity as to how extract-text-webpack-plugin is being used to
compile the src sass into single file (public/stylesheets/main.css). WIP.

Disabling these css-loader options is useful in dev, but we'll need to decide
how we want to handle the assets in production to optimize performance. To be
clear, this can all be handled via the webpack config (see 'publicPath' option).

https://github.com/webpack/extract-text-webpack-plugin#api

* Use webpack-shell-plugin to remove css bundle

Feels a bit hackish but not sure of a better option at this point. Tried
exporting multiple modules as suggested by Localytics team which also
accomplished the goal (by first writing the bundle to main.css and then over-
writing it via the extract-text-webpack-plugin). Not exactly graceful and also
resulted in a increased compile time. Have this stashed in case I want to
revisit it.

http://eng.localytics.com/faster-sass-builds-with-webpack/#separatingcssfromjavascript

* Fix @import for Google fonts

This throws an error for sass-lint (no-url-protocol) but will be able to avoid
this once the ability to disable linters from the source is implemented. See
fd1c9088 for more details.

* Drop defunct breakpoints from config

Never had been used since this is all handled via susy and breakpoint in
_grids.scss.

* Simpler (& quicker) handling of jQuery dependency

Hat tip to the great post from Raja Rao:
https://medium.com/@rajaraodv/webpack-the-confusing-parts-58712f8fcad9#89f9

Of course, I did run into this little bug in the process:
webpack/webpack/#300

* Add comment explaining removal of CSS bundle

Should have been included as part of 6533bf47.

* Minified css for global semantic-ui components

Savings of 25kb and 50ms...every little bit helps.

* Wagon serve + webpack --watch + browsersync

All together now, via `npm start`. Webpack watching scss & js src changes and
Browsersync keeping tabs on the views.

Happy dev =)

NOTE: Probably will bring back build script in package.json when we're ready for
production

"build": "webpack --progress"

* Revamp today's hours in header

As spec'd in #326. Regardless of breakpoint:

* hours beneath logo & search

* same treatment for main hours & lobby

* always span(full)

* Slight tweak to Browsersync plugin config

Originally when configuring Browsersync integration with `webpack --watch` and
`bundle exec wagon serve -v`, I was running `browser-sync start ...` from the
CLI separately, watching the stylesheets and views directories via `--files`
option. This allowed for CSS injection whenever the compiled main.css was
updated, which is preferred over a full page reload -- every (milli)second
counts.

I didn't realize I lost this feature when moving over to `browser-sync-webpack-
plugin` in 2dfe9ebe. This restores CSS injection thanks to the `reload` option
provided by the plugin:

https://www.npmjs.com/package/browser-sync-webpack-plugin#advanced

* Introduce cul-nav component

Also prep for mobile handling of search and cul-nav (toggle buttons in
cu-banner) but content is hidden for now. Most likely will handle these via
semantic-ui `sidebar` module and/or `visibility` behavior.

Mega-menu tweaks up next.

* Mega-menu tweaks to align with new site nav

* Drop course reserves & research guides from home

* Available Now becomes Today @ Mann

New layout as per mockup. Consultation desks are still hardcoded for now.

* Events/Exhibits, Workshops/Classes as per mockup

As good as it's going to get for now with the limited content to work with.

* Housekeeping - organize variable declarations

* First go at Meet Our Librarians on home page (WIP)

As per mockup in #326. Remaining work:

* tweak susy layout (gutter-position: split?) to better handle this component at
  all breakpoints

* filter on librarians via `with_scope` tag, but content type needs to be
  updated first to include a field to filter on

* test with real content for all fields (areas of expertise!)

* determine where "All experts" link points to

* decide whether "View profile" link will be live for v1.0

* Minor tweaks to Meet our Librarians

Cleanup on aisle 6. Should have been included with previous commit.

* Switch to split gutters for susy layout

Default is to add the gutter each column but with `split`, equal margin is added
before (left) and after (right) each column. This allows us to no longer be
concerned with "edge cases" (i.e. using the `last` keyword), but now we do need
to pay attention to nesting:

http://susydocs.oddbird.net/en/latest/toolkit/#nesting

Overall, this feels like a big win and makes our layout all that more flexible.
Next step is sweep the scss for holdouts of the edge keywords to put this theory
to the test.

* Drop unnecessary use of last keyword (susy)

Split gutters are as advertised (see previous commit for context, 1ceedf9e).
Loving susy that much more right now.

Also dropped _guides.scss which should have been included as part of cc49c256
when the component was dropped from the home page.

* More padding for featured librarians at $allout bp

And the second style for the largest breakpoint sees the light of day. Shout out
to f88c834!

* Line height treatment for meet-librarians

* Rework layout to use susy's pad mixin for main

Should provide more flexibility (vs. set width + auto margins) down the road
when we want to have the carousel bleed full width.

* Fix space-finder width at first two breakpoints

Override default semantic-ui margins for cards.

* Add ZenHub badge to README

* Watch compiled JS with Browsersync

* Generalize language for sample Wagon deploy config

* Update deploy.yml.example to match README

* Pin Bitters (via GitHub) and jquery-ui modules

This was causing build and runtime errors when attempting to start from scratch.

I reached out to Thoughtbot and they've already addressed the Bitters issue
although it has not yet been merged. thoughtbot/bitters#257

* Stop tracking compiled JS (#396)

* Meet Our Librarians: filter on librarians & hide empty fields (#397)

* Identify librarians & filter on them for homepage

Add `librarian` field (boolean) to staff content type and use `with_scope` tag
to filter on them for meet-librarians. #364

* Display expertise & liaison only if populated #367

* Course reserves link in header #360 (#398)

* Basic room reservation form to test api

* Basic room reservation form to test api

* Stop tracking compiled JS -- for real (#400)

Doh. Forgot to remove the files from the git index so that git would truly
forget about them. Should have been included as part of #396.

* Site feedback form (#411)

* Content type for staff feedback form

* Template, styles and JS for site feedback form

Had to resort to JS for capturing the page referer since this is not provided
via Liquid (drop) by Locomotive. Seems reasonable that it should though, so I
might submit a PR...

No JS validation just yet, but does render errors returned from Locomotive based
on whether a field is required.

* Request referer via Locomotive's global drop

Liquid FTW. locomotivecms/steam#73

* Placeholder value for contact page editable elem

* Comment out dropdown component for semantic-ui

Not currently using it due to poor mobile UX, but leave it here for future
reference in case we want to revisit.

* Dirt simple validation w/ semantic-ui (first pass)

Check that all required fields are populated. More to come.

* Step up the validation game with semantic-ui

Includes:

* ensure valid email and url

* inline prompts, onblur for each input field

Watch out for this bugfix regarding `content_type.errors` now properly returning
`false` instead of an empty hash when error free: locomotivecms/steam#68

This tripped me up since we just bumped to latest Steam.

* Research guides - don't call it a comeback (#419)

* Temp template for dynamic research guides listing

Resurrected from what was dropped from the homepage in cc49c256. #417

* Welcome research guides to the header #404

Switching .accessory-nav to absolute positioning has added benefit of
addressing #414 as well. Very nice.

Accessory nav is currently hidden at mobile breakpoints and most likely will be
added to hamburger menu if we stick with this.

* Homepage rapidfire (#420)

* Drop Book a Consultation button from homepage #366

* Link up consultation heading on homepage #365

* Link up study spaces heading on homepage #390

* Switch to latest scrapinghub job for search index (#421)

In prep for round 3 of usability testing. #418

* links on footer for floor plans

* Semantic ui-form submission, no success or error yet

* Semantic ui-form submission, no success or error yet

* Use ajax success and error methods to catch errors.

* Use ajax success and error methods to catch errors.

* More fields, with success/error messages and some styling.

* More fields, with success/error messages and some styling.

* Fix autofocus in modal.

* Fix autofocus in modal.

* Hide colleague info from forms.

* Hide colleague info from forms.

* Removed request a purchase form, filter from events, and navigation from events page.

* Removed request a purchase form, filter from events, and navigation from events page.

* staff directory as cards instead of table

sort by last name, first name or division and filter by division

* link to all experts, placeholder img on home page for librarians wo photo

* fix broken link staff cards

* fix broken link staff cards

* Scroll booked form modal to top on submit

* Scroll booked form modal to top on submit

* Use theme_image_url for pulling assets

* Use theme_image_url for pulling assets

* layout toggle (table/grid) staff directory & add column count to grid

* layout toggle (table/grid) staff directory & add column count to grid

* fix path to show all staff

* fix path to show all staff

* consultation form with content type/data

* change directory location for request a consultation + remove required on phone

* fix request consultation submit success won't show form just success msg

* request course instruction form

* Refactor instruction request form #300 (#432)

Two-fold:

1. Use `main/dynamic` block instead of overriding entire `main` block and
negating the ability for content curators to edit page content from the back-
office

2. Include form as snippet -- allows us to keep all forms in one directory

* Addresses #429 and #337. Update live room availability:
1. Added additional field to spaces content type to enter comma separated room id's from libcal
2. Used room id's form content types for room availability.
3. Fixed a minor bug with next available time.

* Update to latest mann_liquid_extensions gem, and cleanup site.yml

* Address semantic-ui duplication introduced by calendar component (#436)

* Use popup component from semantic-ui-css package

As we do for all other components provided as part of semantic-ui core.

* Drop npm dependency on semantic-ui calendar fork

Introduced in 8513bdc / 5fa6ce6 (duped due to inadvertent rebasing).

Resorting to downloading the minified assets for calendar component directly
from GitHub fork for now as recommended by contributor:
https://github.com/Semantic-Org/Semantic-UI/pull/3256#issuecomment-224113834

Storing in `src/js/vendor` which has been added as a resolvable path in webpack
config.

Downloaded latest as of today (mdehoog/Semantic-UI@2c10c1f)
https://github.com/mdehoog/Semantic-UI/tree/calendar-dist

Calendars on instruction request form are fully functional, but the Booked
reservation form needs a minor tweak...up next.

* Initialize sui calendar component after modal

Calendar component failed to initialize properly when it was called via onLoad
after ripping out semantic-ui duplication.

This quick-n-dirty fix addresses the issue but this is still ripe for additional
refactoring. It looks like Booked is about get the boot, so I'm going no
further at this point.

* Libcal iframe (#456)

* Proof of concept for LibCal public form via iframe

Using semantic-ui modal and embed components, but most likely ditching embed
since it generates an iframe sans scroll bars.

This is currently hard-coded for Mann 102 only for demo purposes. Will need to
abstract the logic if we decide we're happy with this approach.

* Drop sui embed component & use iframe directly

Default template for embed component disables scrolling within iframe:
https://github.com/Semantic-Org/Semantic-UI/blob/2.2.2/dist/components/embed.js#L669

But we scrolling because the content of the iframe changes (expands) as
user interacts with LibCal form.

The main downside to this approach is that we need to set an explicit iframe
height in pixels. Currently using 625px, but might end up reducing it if I can
remove some elements (header, breadcrumb, footer) from iframe content. Nice
thing is that because the modal is responsive this adapts nicely at all
breakpoints.

It does appear that you can provide a custom template for embed component, but
not in the mood to mess with it right now. Can revisit later if necessary:
http://semantic-ui.com/modules/embed.html#/settings

* Prep handling multiple LibCal widgets on same page

Logic is still hardcoded for Mann 102 only for demo purposes, but this will be
needed when we extend the behavior to Mann 100, Lobby tabling and Stone
Classroom.

* Bump to latest wagon 2.2.0.rc1 (#457)

This, in turn, depends on latest steam 1.2.0.rc1, which includes both of our
merged PRs:

* Authorization header for consume tag (locomotivecms/steam#67)

* Request referer in global drop (locomotivecms/steam#73)

* Adios booked (#459)

* Strip all (most) references of Booked

Leaving events (Vue.js) related integrations for Tahir to address.

* Use snippet for reservable space button

DRY it up.

* Trigger LibCal widget vs. full via content data

Introduces new field for LibCal group public page URL (aka friendly URL) and
abstracts out the specific implementation used to demo with Mann 102 in #456.

* No need to wrap reserve button within an anchor

This was only causing the browser to append a pound sign to the URL which makes
the history messy. Yes, another approach could have been to use
event.preventDefault(), but this is simpler and cleaner.

P.S. The title attribute originally on the anchor, was moved to the button.

* Clarify differences btw reservation system fields

Make it a point to clearly indicate that two of them apply to LibCal only.

* Spaces megamenu (#461)

* Front-load previous changes to spaces_types

We haven't been making a habit of commmiting changes to the data unless we have
code that depends on particular values. This is one of those exceptions but I
first need to clear the table so it's more obvious what changes were made for
this particular feature.

* Manually build subnav for Find a Space in megamenu

Unfortunately, we don't have access to the `contents` drop (or any other drop
for that matter) from within the nav snippet.

* Tack on "All Spaces" to Find a Space subnav

As per comment on #344
https://github.com/cul-it/mann-wagon/issues/344#issuecomment-234378749

* Spotlight content type (#462)

* New content type for spotlights

Generated via wagon:
https://locomotive-v3.readme.io/docs/define-a-content-type#generate-it-with-wagon

$ bundle exec wagon generate content_type spotlights name:string caption:text image:file start_date:date_time end_date:date_time url:string

* Customize spotlights content type post wagon gen

* Using iCal feed for LibCal rooms from MannServices. Addresses #434, #445
Hardcoded id's from MannServices for now. Should create a new field for spaces content type to hold this value and use that to get the data.

* Refactor layouts (#463)

* New approach to primary (top-level) page layouts

Two kinds of primary pages:

1. Those that show up in the primary nav and are landing pages (collection of
   links to children pages without any content themselves). These will use
   `primary-landing` layout.

   * Use the Library
   * Get Help
   * News & Events

2. Those that aren't in the primary nav, have content of their own, and aren't
   templates for content types. These will use the `primary` layout.

   * About Us
   * Contact Us

* Convert to straight up liquid -- no Haml

* First go at gallery layout for landing pages

No images yet and no special handling for the problem child (aka Find a Space).

Notice that this new `landing` snippet is very similar to the `primary-nav`
snippet. Would be nice to DRY this up down the road.

* Add placeholder images for landing page

Temporarily using `placeholder-staff.jpg` --need to generalize this-- and
haven't yet implemented the editable file for the `primary-landing` layout. Both
of these up next.

* Generalize placeholder image

Refactor placeholder logic for staff directory while we're at it using the
default filter:
https://locomotive-v3.readme.io/docs/filters#default

* Initial attempt at editable_file for section-photo

This works as expected when serving the site via wagon, but the editable_file
included within the `page.editable_elements` drop always returns `nil` when
serving the site via engine.

Only applied this temporary `section-new` layout to a single page
(/use/technology) for now. Major overhaul to layouts coming up.

* Bite the bullet; track all existing pages

Had been trying to avoid this but enough is enough. This commit ensures every
page is extending the correct layout or parent, and renames the old `section`
layout to `basic-page` -- homage to JCR :)

Add all pages and pass on the content/data for editable_elements (contained in
the YAML header of each file).

There are some exceptions to this where the editable_element was incorrect and I
didn't want to risk losing content again.

* Temporarily comment out editable_file debugging

* Fill-in subpages for Find a Space on 'Use' landing

Extract the array creation originally in `primary-nav` snippet (44a87bfb) into a
snippet of its own so it can be reused here.

The `landing` and `primary-nav` snippets are even more similar after this
commit. I've said it before (c80e7c08) and I'll say it again... these two are
ripe for DRYing up.

* Line-height and margin for landing subpage listing

Improve readability when a list item wraps to multiple lines.

* Unlink secondary pages in megamenu

Now that we have the landing pages in place, we don't want to send users to
secondary pages. Still need to address the breadcrumbs.

* Render description on section pages

Initially was thinking we would go out of our way to hide the section pages
(redirects & breadcrumb voodoo), but after implementing most of the IA refactor,
I think there's a cleaner approach that helps to avoid a maintenance headache.

While we aren't linking to the section pages (secondary level) in the megamenu,
we're going to leave them linkable in the breadcrumbs and do a reasonable job
rendering them for any user who wants to browse/explore via the site hierarchy.

* DRY up `landing` and `primary-nav` snippets

Via `nav-builder` snippet which relies on passing the component name and then
BEM conventions take over from there.

* Rename `primary-nav` snippet to `nav-megamenu`

More descriptive of what it's responsible for and keeps all the nav snippets
together in the directory by using the common prefix.

* First go at url's for single events and filters
Url's are setup for events, and filters (except date)
	- Using [vue-router] (https://github.com/vuejs/vue-router) for mapping url's to view
	- Using Semantic UI modal for single event
	- Using Semantic UI accordion for future events (for localist events, similar to events.cornell.edu)
	- Removed js-cookie and booked references from events
	- Loaded jQuery via webpack to make it available to all libraries, needed for [Semantic UI to work in Vue] (http://stackoverflow.com/questions/36676215/using-vue-js-with-semantic-ui)
	- Using Mannservices for JSON data from LibCal room reservations

* News content type (#468)

* Initial content type for news
Generated via wagon:
https://locomotive-v3.readme.io/docs/define-a-content-type#generate-it-with-wagon

$ bundle exec wagon generate content_type news title:string date:date body:text tags:tags image:file image_align:select featured:boolean

* Customize news content type post wagon generate

* No need to shim jQuery in web pack, import works.
Remove vue-router, not needed since using query params, and javascript can handle that.
Clean up and vue-linting.

* Update hours gem to latest ref, fixes bug if status 24 hours

* Monthly view widget for LibCal hours.
See the preview widget code in LibCal for styling information.

* Combine LibCal timeslots for the same booking

* Spotlights carousel (#474)

* Initial go at spotlights carousel

Using slick carousel via npm. This commit includes test images for now. The plan
is to utilize thes spotlights content type (debugging forloop is already in
place).

Not yet full width as originally demonstrated in mockup and also not configured
for all breakpoints.

* Indicator dots for slick.js carousel

Finally addressing loading fonts and images in Webpack via `file-loader` and
`url-loader`. Will want to apply similar approach for Font Awesome.

Responsive handling up next.

* Responsive spotlights carousel

Slick.js can't handle em breakpoints, so used pixel equivalence.

* Use spotlights content_type instead of test images

Images courtesy of Jenny and Karl and added as entries to spotlights
content_type via back-office.

Implemented:

* filter on active spotlights (using start_date and end_date)

* name as alt attribute for image, caption as title attribute

* initiate the carousel only if there are at least two active spotlights

* if less than two active spotlights, just render the image

@todo:

* need to account for inevitable scenario where there are zero active spotlights

* Delay reveal of megamenu by 200ms & add down caret (#482)

This is a very quick & simple first attempt to address the number one issue we
observed in multiple rounds of usability testing where users were inadvertently
triggering the megamenu as the moved the cursor past the top level pages in the
navigation.

This current implementation is problematic on touch devices, so rest assured
this is not the final approach.

* Fix ordering of events on homepage, similar to events page

* Switch to latest scrapinghub job for search index (#483)

In prep for staff show 'n tell.

* Filter out past LibCal room reservations from default reservations.

* Don't toggle week/month view.

* Events nav handling (#484)

* Move upcoming events page to new path

Following Tobi's lead from back-office. That old path was crrrraaaazzzyyy ;)

* Move Vue.js events app to new location

Tahir and I discussed this and would be nice to pass the correct path to Vue via
Locomotive's `path_to` tag instead of having to manually keep it synced within
Vue.

* Readme refresh (#485)

* Clarify that default browser will auto-launch

And that Browsersync is tracking source SCSS.

* Subtle clarification of wagon as CLI for local dev

* List prerequesites

* Booked begone (#487)

* Drop Booked fields from site metafields

This is the last vestigial holdout from Booked. RIP.

* Better documentation on auth methods for APIs

* Experts carousel (#488)

* Rename "Meet Our Librarians" to "Meet Our Experts"

Update components and snippets to follow suit. #452

* First go at carousel for meet our experts

Todo:

* Refactor SCSS components to address both homepage carousels

* Consider using CommonsChunkPlugin for Webpack for shared/common code

* Refactor carousel impl; now we have 2 on homepage

Happy happy joy joy!

Includes:

* tweak existing SCSS Webpack loader (extracting to CSS) to target only
  main.scss

* introduce new SCSS loader to handle any Sass imported via JS components
  - no funny business extracting to CSS -- straight up !style!css!sass

* now importing `spotlights` and `meet-experts` components via JS so remove
  leading underscore from filenames and introduce new `carousel` component,
  which both import (via Sass)
  - these components need to import all of the dependent mixin libraries also
    imported in main.scss (breakpoint, susy, bourbon, etc) plus the config
    variables (config, grid)
  - might take this a step further down the road and create two Sass files, one
    that imports the mixin libs and the other that imports the config variables,
    which could then be imported instead...stil undecided

The experts carousel is responsive and shows only 2 slides/experts at the
default mobile first breakpoint. There is a rendering issue at this breakpoint
(the Book a Consultation button is too wide) for the available span, but not
going to worry about it at the moment since there are rumors that this feature
might be removed from the v1 release.

* Remove temp hack from _shame.scss for meet-experts

Temp hack is no more, but in return now we have multiple carousels on the
homepage. You win some, you lose some.

* Consistency in regex for Webpack loaders

* Refactor Sass src to accomodate component imports

I'm liking this...the helpers directory has been riding the bench all this time,
screaming "Put me in, Coach" and this just makes almost too much sense ;)

Includes:

* @import for mixin libraries moved to `helpers/_mixins.scss`

* rips (mostly) Susy related variables out of `layout/_grid.scss` and into
  `_config.scss` where they belong

* simplifies @import's within Webpack imported components (for now that's the
  two homepage carousels -- spotlights & experts)

* Cleanup old variable for random 3 librarians

No longer needed due to the carousel. Should have been included with #488.

* Consult form tweak (#489)

Finalize consultation request form

* Drop inadvertent session debugging from forms

Clean up on aisle 6. Accidentally committed for original site feedback form and
then copied over to the rest of them.

* Final (almost) tweaks to instruction request form (#491)

* Remove "Course Web Page" option from instruct type

Add new boolean field to indicate interest in creation of a LibGuide. As per
conversation with Kelee in #300.

* Set explicit value for checkbox input

For some reason, Locomotive will set a value of 'on' for a checked checkbox,
instead of 1 or true as expected. This results in the user's actual response not
being submitted properly since the underlying field is a boolean.

Don't ask how long it took me to debug this, but once I confirmed what the
submitted value was, a quick search in the repo uncovered
locomotivecms/engine#399. An oldie, but goodie.

* A little less casual for the submit button

As per feedback during staff show 'n tell. Especially important for the
instruction request form, whose primary audience is faculty.

* Enable multiple selection for course instruct type

Kinda. Sort of. Here's the deal:

* the select field type in locomotive does not support multiple values

* so although the UI now allows for multiple selections, only the first one is
  being stored

* if you're thinking we can just change the field type, that would be great, but
  moving away from the `select` field type means we can no longer manage the
  options presented to the user from within the back-office and it would need to
  be handled via code...not ideal

* I've got a few ideas/workarounds for this, which I will pursue next

* one more thing...the delete icon that should appear with each selected option
  is currently not rendering due to the previously mentioned issue with SUI
  v2.2.2 method of porting Font Awesome. I still plan on addressing this at some
  point.

* Functional multi-select instruction types

Follow-up from previous commit 386de3b which details how multiple values could
be selected but not stored. This workaround involves introduction of a new
field, which means we now have two fields to support multiple values for
instruction types:

1. `instruction_types_managed_list` field (field type: select) to manage the
   options

2. `insruction_types` field (field type: tags) to store the user selected and
   submitted values

This approach does introduce a wrinkle into the patterns we've established for
form-building, but it allows content editors to manage select options from the
back-office instead of locking this up in code. An alternative considered was to
manage the options via `site_metafields`, but this has the disadvantage of
requiring the content editor to go to two disparate sections of the back- office
to accomplish the same task...

Also note the following additional special handling to accommodate this feature:

* element name in the liquid markup for the form has trailing '[]'
  `content[instruction_types][]`

* SUI validation doesn't like this name, so using the `data-validate` attribute
  as the identifier

* Form validation cleanup (#493)

* Correct field type for 3rd date on instruct form

* Retain checkbox val after server-side validation

Rare that this scenario would ever be encountered (unless JS is disabled), but
still...

* Email is required field for consultation request

Already set on the JS validation side, but should also be applied directly to
the content_type as well.

* Fix validation bug in consult & instruct forms

This is for server-side validation only, which admittedly should be a rare
occurence since it would only be encountered when JS is disabled.

To retain values from the current submission in progress, the singular version
of the content type's slug should be used.

This is an easily missed detail in the Locomotive guide:
https://locomotive-v3.readme.io/docs/create-a-contact-
form#2-create-a-form

Also, note that when it comes to `select` fields, this server-side validation
will only work when serving the site via engine.

* Watching data in vue.js before triggering method to merge data from multiple sources.
Template should have a single root-level, otherwise throws Fragment instance errors, see https://vuejs.org/guide/components.html#Fragment-Instance for details

* Fix single event call for LibCal, to reflect the new data structure

* Style LibCal monthly hours widget (#519)

* Bundle hours page styles via webpack

No longer imported via main.scss. All possible thanks to 9d1c31e.

* Hours in pure liquid...Haml be gone

* Consistency btw variable & name

Doh...forgot about this when refactoring in 697e275.

* Style the LibCal monthly hours widget

This is mostly good to go, but might replace the full day of the week name with
the 3-character abbreviation via JS due to overlap/crowding at mobile first
(portrait).

* Separate component for LibCal monthly hours widget

* Use variation of closed color for LibCal widget

* Month/Week toggle now reflects current status

Previously was not toggling active state.

This switching still needs work. Ideally, when going from week to month or vice
versa, the current week/month wouldn't be reset to today. The expected behavior
would be to just switch views and not jump to a different point in time.

Will add a new issue to address this.

* Events cleanup (#523)

* Drop featured events for launch #522

Will revisit for potential enhancement in `v1.x`.

* More breathing room btw events & filters #410

Also fix typo in _shame.scss.

* IA cleanup (#524)

* Move Upcoming Workshops as child of Events

Reflects recent change made by Tobi in back-office. This illuminates the trouble
with tracking pages, even stubs of the pages, in version control.

* Track stub of straggler tutorial pages

Should have been included as part of c572430 while working on #463.

* Update title of basic-page layout #505

So now it's accurately identified in the select list in the back-office.

* When building nav, ensure page is published #510

Previously was only testing that it was listed, but both must be true.

* Events from r25 web service, and default number of days using metafields

* Loader gif, semantic ui

* Check r25 event key, otherwise breaks on weekends.
Text changes based on #453, #504
Filter button, and display only if filter applied, see #507

* Workshops nav shuffle (#526)

* Remove redirect for workshops after IA shuffle

This is all in an effort to keep Git in sync with back-office changes. Once
again, tracking stubs of all pages in version control = trouble.

Seriously reconsidering this decision. Might be worth going back to ignoring all
pages by default and only explicitly tracking those we are manipulating via
code. And the safest way to do that might be to keep most of the juicy bits in
snippets and this way we're only tracking a handful of includes at the page
level.

* Fix section layout title & reveal in back-office

No longer new and should be selectable from back-office. Continuation of
eac466b.

* Rename template files for tutorial pages (#527)

Should have happened alongside the slug change introduced in 59f52e6 earlier
today, when we first tracked these page stubs.

Almost a guarantee at this point that we'll untrack all of these stubs (see
0ecc646), but just in case that doesn't happen...

* Test listed & published status for layouts #525 (#528)

Follow mega menu's lead from #510. All about consistency.

* New fields and namespace for events configuration.

* Events improvements (#533)

* Fix recurring events date, addresses #511
Default days of events data to load if not set in back office

* Display additional dates link for localist recurring events, #515

* New filter to hide event type, used to hide 'Class/ Workshop' on "All Events & Exhibits" section on homepage, #531

* Don't display past events on initial load, #532

* Add links to CUL events page and CUL workshops page from Mann Events page #512

* Ignore pages and double-down on snippets (#538)

* Ignore all pages by default #529

Introduces a directory-specific .gitignore for app/views/pages. This should help
prevent headaches trying to keep repo in sync with content changes happening in
back-office. We'll need to edit the list of exceptions as we introduce new
dynamic content.

Default is to ignore all pages. Here are the exceptions to that rule (aka what
will be tracked):

* all layouts (target a sub-dir so future proof)

* all content-type templates (target file name pattern so future-proof)

* 3 top-level pages (makes it easier to develop nav when serving via wagon)

* specific pages (that provide dynamic content)

This initial list of exceptions should look awfully familiar to the pages in the
repo prior to the refactoring (#463) that starting tracking everything:
https://github.com/cul-it/mann-wagon/tree/5f16bb3e10d5730265a7d106f397b2199b96b03a/app/views/pages

* Adios Haml (almost)

Converts all remaining Haml templates to straight-up Liquid, with a single
exception of `basic-page` layout. The reason being that we still need to rely on
Haml for whitespace control, until Locomotive's fork of Liquid merge's upstream
changes to take advantage of the new whitespace controls. locomotivecms/steam#76

This also includes a tweak to `.page-content` style so it's nested in Susy
layout.

* The final piece to the puzzle - lean on snippets

As mentioned in #529, move all custom templating out of pages and into snippets,
so the pages are only left with includes. This will help safeguard against an
end-user accidentally erasing code in the back-office when switching layouts.

https://locomotive-v3.readme.io/docs/layouts#use-layouts

* Event fixes (#546)

* Forgot to cleanup testing for additional days on recurring events, #511

* Fix #536, some libcal events still showing in 30 minute slots. Affected lobby only, since data is combined for two lobby spaces.

* Handle hiding of past libcal events separately, due to 30 minute slots, #536
Use promise for libcal rooms as well, ensuring all data before merging, #545

* See comments in #534, use site metafields to specify number of days for r25 events to load on home page.

* #520, When switching between week/month view, don't reset the calendar to current date. (#547)

* Wysihtml styles (#550)

* Basic styles for ordered/unordered lists via RTE

* Basic styles for headings via RTE (h3-h6 only)

Currently we're not restricting the use of h1 and h2 via wysihtml, but that
would be ideal.

* 1. Use vue-router for the app, to prevent page reload on url changes when opening and closing modal (#554)

2. Modal from homepage stays on  homepage
3. Set the date of the modal to the event clicked

* Course reserves (#555)

* Start tracking existing course reserves page

More like tracking it once again ;)

* Initial go at course reserves in Vue (WIP)

* course reserves page includes snippet

* snippet immediately passes off to Vue

* tweak Webpack config to use babel-loader for course-reserves
  -- leaves events Vue app untouched

* table of reserve items treats everything the same at the moment

TODO:

* improve performance of initial load for course list
  -- should look into caching this and potentially even moving it into Liquid
  since I believe the caching within vue-resource would be specific to each
  user/session.

* decorators for items based on item type

* link to Blackboard for eletronic resources

* styles

* Render table only when there are items to display

Plus some styles for course title & instructor.

* Sync course reserves page content from back office

* Stick with kebab-case for asset file names

* New child component for course reserves

Each reserve item for a course is passed to the reserve-item component. There's
a bunch of view logic that needs to happen per item and this component currently
handles that in a single itemLogistics() method.

Includes styling and handling of the following:

* label electronic resources as "Online" & link to Blackboard

* badge available items

* identify location of all physical items not at Mann

More to come...

* Format due dates & indicate overdue items

Moment.js with the big assist.

* Tweak online logic for better consistency

There is some dirty data being returned that requires additional scrubbing. Also
upped the anty on the logical operators.

* Table striping for reserve items

* Title handling when reserve item is an article

Similar to what we're doing on the current site, but now the article title
doesn't take center stage if present.

* Build course list in Liquid = server-side caching

This eliminates the CourseReserves Vue component, since the root vm can now pass
off directly to the ReserveItem component.

I didn't see a better way around the long load times for the course list from
libservices. Using Locomotive's consume tag, we can cache the response (only
applies when the site is hosted via engine). Currently caching for 1 hr.

Looking into vue-resource, it does appear to be possible to cache the response
via interceptors, but this would still be client-side which means any visitor
would experience this initial long load for course listings.
https://github.com/vuejs/vue-resource/issues/252#issuecomment-243611698
https://github.com/vuejs/vue-resource/blob/master/docs/http.md#interceptors

* Events path (#564)

* Add back r25 default days prop and fix typo

* Catch online events in localist, #506.

* Remove hard-coded path to events page, use path_to, JS variable and props instead.

* Update filters on homepage template for single event

* Software list (#567)

* Start tracking existing software page

* Remove straggler editable elements

Leftover from when the page was extending the section layout, potentially
inadvertently by extending the parent by default.

* Rough-in the software list table

Proof of concept:

* Fetch raw CSV as string via raw.githubusercontent.com

* Parse and convert to JSON via csvtojson package

* Render as table...no frills

This looks promising. If you checkout this commit, this feature will not be
functional since the CSV currently resides in a private repo and I'm not
including the token. The current plan is to create a new public repo for the
CSV.

I'll most likely move the fetching of the CSV into Liquid to take advantage of
rails caching (following the lead of course-reserves).

* Switch to new public GitHub repo for csv fetching

Public = no token :)

* Once again switch to fetch data via Loco's consume

The fetching part was simple and was done to take advantage of Rails caching
(caching the response for an hour here as well).

The painful part was returning the multiline response string to its original
form so that it could be passed to Vue. I expect this would have been easier if
Locomotive's fork of Liquid was running the latest improvements to whitespace
control introduced upstream this past summer. See locomotivecms/steam#76

* Comment to explain empty modules in webpack config

Should have included this as part of 39f107c.

* Style the software table

Only thing left on the list is a fixed header...

* Sticky table headers via stickySort plugin

This was trickier than it appeared. Most of the sticky techniques would result
in the table collapsing when the thead was pulled out of the content flow. This
plugin takes a different approach (adding a wrapper element and copies classes
over). It's not perfect, but it avoids me having to write something from
scratch and gets the job done for now.

* Course reserves table (#568)

* Semantic-ui table component for course reserves

Use collapsing variation to address dynamic column widths. #566

* Semantic-ui striping for course reserves

* Don't stack table columns for mobile

And update styles related to font-size to override sui defaults.

* Events curated filters (#572)

* Curated event type and event locations as content types

* Remove console.log

* Reservations required in advance #569, and adjust availability logic #544 (#573)

* Libcal My Scheduler (#574)

* New LibCal UID field in staff content type #322

This is needed to embed the My Scheduler widget.

* Snippet to render staff consultation button #560

Refactor existing one-off snippet used as proof of concept for GIS consultation.

This snippet should be passed two variables:

* `libcal_uid` [Required]
   - LibCal user ID

* `flying_solo`
   - defaults to false
   - if true, the snippet will generate a script tag that sources LibCal's
     MyScheduler script

* Add book a consultation button to staff directory

Per applicable staff member. #560

* Sass component for consultation button

The power of BEM.

* Display loaders on the selected section for an event, #559 (#578)

* Today at Mann tweaks (#583)

* New label for Find all Spaces button #440

* Drop consultation section from available now #501

Rework Today at Mann (aka available now) layout to minimize vertical space by
splitting up study spaces into two groupings/columns. Thanks to Susy for making
this painless. Logic for splitting up study spaces is far from ideal...it
expects 8 study spaces and splits them in half, but this can be improved to be
more flexible if we adjust the number of study spaces down the road.

* Next available popup for study spaces via sui

Been wanting to add this enhancement for a while...

* Drop spaces-quiet.js

No longer necessary. Follow lead from next available status in previous commit
651fc6f and use sui's CSS only version of the popup component (tooltip).

http://semantic-ui.com/modules/popup.html#tooltip

* Top left position for available now sui popup

Leads to more reliable behavior of actually displaying the tooltip on-screen
when at smaller breakpoints. Kind of a moot point since the popup component is
non-functional for touch devices, but just in case that ever changes down the
road ;)

* Conditional events api calls (#584)

* Homepage r25 default days back in place

* Check if data is already loaded before making new calls to the web services.
Addresses #581 and #582

* Advance reservations (#586)

* Reservations required in advance #569, and adjust availability logic #544

* New boolean field for spaces content type to indicate advanced reservation required #569

* Tweaks to Meet Our Librarians on homepage (#588)

* Drop View Profile link from meet our experts #585

This will be implemented after launch. See #374.

* Move dots above carousel for meet experts #494

Hat tip to simeydotme:
https://www.reddit.com/r/slickcarousel/comments/2mcdmb/request_for_dotsposition

* Escape strings from curated event filter content type (#589)

* Display uncurated event filters, #580 (#593)

* Fix typo introduced in PR #580

* Handle comma in event filters, #594 (#596)

* Site Search via Google CSE (#597)

* Initial go at Google CSE #557 #509

Using the `<gcse:searchresults-only>` component and sticking with our
own/existing search box for now. We can revisit this later if we end up wanting
to get fancy with autocomplete, etc.

Some quick style overrides to make this fit in some more. Current indexing of
dev site is limited and right away I'm realizing that we need to update the
`<title>` value for our pages. That's next.

* Use page.title for document <title>

Previously was using `site.name` which meant all results in Google CSE were
labeled identically as "Mann Library". Ouch.

* Update placeholder text for search box #449

Not just any site...this site.

* Search result higlighting & Susy nesting fix

* Iterate search results style and behavior (#598)

* Tone down search result highlighting a page title

Less is more...

* Tighten up elements within each CSE result

More overriding of default styles.

* Lato font for search results

Now they look like they belong here.

* Target _self for search result links

Google CSE default is `_blank`:
https://developers.google.com/custom-search/docs/element#supported_attributes

* Overhaul to Find a Space cards (#599)

* Shimmy & shake for spaces cards #591

Use link card and utilize multiple anchors to avoid nested anchors. Not
completely thrilled with this approach because it leads to certain areas of
whitespace that appear clickable but are misleading. Might try adding click
event to .description div to address this.

* Bump All Spaces to the front of the class

First in subnav list as suggested during staff show 'n tell.

* New icon for quiet study spaces

Utilzing Font Awesome's stackable icons. Don't know why I didn't think of this
earlier.

* A cleaner JS version of shimmy & shake #591

As eluded to in 2530d95. This relies on a click event for the card's .content
div and adding a listener that stops event bubbling on any nested anchors
within.

* Comment out hardcoded hours for spaces #590

* Hotfix for reserve button libcal modal #591

* AppSpider response & new Font Awesome font handling (#618)

* Drop commented out `image_tag` #465

Pretty sure this was tripping up AppSpider and is responsible for a false
positive on the Local File Include (LFI) vulnerability.

An alternative way to address this would have been to wrap it in Liquid comment
syntax instead of HTML.

* Use url & file loaders for Font Awesome fonts #492

Drop the nonsense of copy-webpack-plugin, as called out in 5f57190.

Now semantic-ui's icon component (port of Font Awesome) works as expected which
means we have the delete option on the multiple value dropdown component and the
previous/next navigation on the datepicker/calendar component (#491), to name a
few.

Added bonus is that this should also address the second false positive from the
recent AppSpider scan (#465), Nginx NULL code vulnerability, related to serving
fontawesome-webfont.ttf.

* Spotlight improvements (#619)

* Switch spotlight caption field to string #571

We don't want wysihtml or markup, so text field was an unnecessary evil.

* Link spotlights with populated URL field #570

* Fallback spotlight images when none active #495

Includes:

* Start date field is no longer required

* Boolean field to indicate whether spotlight is a fallback image

* Limits rendering to 2 fallback images max, 5 otherwise

* Add image dimensions & file format as hint #476

* Utilize Liquid's forloop object #495

Cleaner and simpler then assigning and incrementing a counter as initially
implemented in dd904c5. Always forget about this built-in provided by Liquid
core:
https://help.shopify.com/themes/liquid/objects/for-loops

Also remove todo comment for handling scenario when there are no active
spotlights.

* Bump to latest wagon 2.2.0.rc2 (#620)

Which in turn depends on latest steam `1.2.0.rc2`.

* Use Font Awesome CDN (#621)

My previous attempt to refactor the Font Awesome font handling in 3c4bbc0 was
too good to be true. Browser cache was spoofing expected functionality when
reality was far from it. I could go back to using copy-webpack-plugin, but that
would put us in the same spot with AppSpider scan #465.

So...keep it simple and go with the CDN until further notice. Should keep
everyone happy in the meantime.

* Adjust logic for spotlights fallback #495 (#622)

As defined in a comment on the thread:
https://github.com/cul-it/mann-wagon/issues/495#issuecomment-251718010

* 5 active spotlights max

* 3 spotlights min

* If active spotlights < 3, supplement with fallback image(s) up to 3 total

* fallback images are capped at 3 max

* Prominent event filters (#624)

* Display applied filters on top of the events container

* Overhaul events calendar filters sidebar

* drop shadow on events listing for further distinction between columns

* semantic-ui label component (ribbon variation) for filter headings

* re-order elements, placing datepicker under filter heading and labeling "By
  date"

* move selected date above datepicker

* semantic-ui labeled icon button for clear all filters button

* More obvious states of events filters in sidebar

* embolden ;)

* change font color to site's default text color (not link color)

* use red X for removing filter

Next up is to define some style to applied filters displayed at the top of the
events container.

* Style applied filters at top of the container

Using semantic-ui labeled icon button component. This includes a label of
"Current filters:" but I'm going to err on the side of less is more and drop
that in the next commit.

* Drop current filters label as promised

* Consistent LibCal field names, removed the extra ":" for Event type

* New color palette (#633)

* White 45px CU banner

Plus drop the dream of creating a complete component with red and gray
variations. Save that for a rainy day.

* Simplified Mann logo, initial color palette tweaks

Hold onto your hats...

* drop any unused original palette bloat

* move holdouts under "accessory" to be addressed later

* holdouts include original alabaster (collision in name only with alabaster-new)

* apply palette to Mann logo, standard links and footer

* Apply new color palette to site nav & mega menu

* Apply color palette to accessory/cul nav

Original accessory nav was for course reserves & research guides, but usability
testing showed that this area of the page (upper right) was easily overlooked.
This moves course reserves into previous "CUL" nav and renames that component to
accessory nav. My Account gets bumped and will return in upper right. Research
guides gets dropped from header completely.

* Return of my acct to upper right w/ site search

Still need to handle mobile breakpoints (search icon and hamburger menu).

* Apply color palette to hours in header

Still needs some work, especially at smaller breakpoints. This will most likely
involve some coordination with display logic in mann_liquid_extensions.

* Apply color palette to available now

Includes some house cleaning of study room availability logic.

* Drop orange for consultation button #403

* Footer tweaks #412 #623

* add some links

* title attributes for all anchors

* phone icon ftw

* increase top margin

* Address bugs and feedback after applying color palette (#638)

* More breathing room for my account & search #634

* Quick styling for mobile nav according to palette

This will be fully addressed in #359.

* Link all headings in footer & style appropriately

As first reported in #635.

* Tweak size & layout of site & accessory navs

Ensure they play nicely together across the breakpoints.

* Catch errors from api calls, and display user friendly message. #249 (#639)

* Homepage fix (#640)

* Drop old Mann logo

Should have been included as part of #633.

* Alphabetically sort selectors in events-home

* Fix Susy layout around events-home component #557

Includes some tweaking on the top margin applied to <section> elements on the
homepage.

* Equal columns for events sections on homepage #612

Flexbox FTW.

* More elbow room around meet-experts component

* Move Find all Spaces button adjacent to heading

As demoed in latest mockup.

* Content type adjustments  (#641)

* Note field for spaces content type #442

* Refactor reservation systems & reserve button #592

No need for the multiple URLs since we ended up not defining the API calls here.
This also introduces changes to logic for the reserve button so that non LibCal
spaces will link to a new page/tab for the reservation form (no modal).

* Clarify the curated event fields via hints

* SmartMap URL field for curated event location #611

* Sync moving of request a consult in back-office (#642)

* Logic tweak for spaces note #442 (#643)

Would have caught this sooner if there was better truthy/falsy consistency
between engine and wagon...

* Software form (#646)

* Software requests content type (#298)

* New content type for software_requests

Generated via wagon:
https://locomotive-v3.readme.io/docs/define-a-content-type#generate-it-with-wagon

$ bundle exec wagon generate content_type software_requests name:string email:string phone:string department:string affiliation:select course_related:boolean title:string company:string url:string platform:select licenses:string date:date delivery:select location:select notes:text

* Customize software_requests content type post wagon gen

* Track software request page

* Initial go at software request form

* Date range for sui calendar component

With the big assist from Moment.js.

* Add messages for software title & licenses field

Just following the lead of the existing form on the current site.

* Refine styles for mann forms

* Apply updated form styles to instruct request form

All about consistency

* Drop holdout for defunct purchase request form

Should have been included with e579358/4c04226.

* Purge webpack config of purchase request form (#647)

Speaking of stragglers/holdouts...doh. Should have been included with 42f3e1b.

* Switch to paid search engine - peace out ads #509 (#648)

* Adios contact us (#649)

* Unlink Contact Us heading in footer

It was broken anyway (missing closing tag).

* Sync contact page removal & site feedback to root

* Ensure Cornell University is 16px in the banner (#650)

* Vendorize sui icon component (#651)

To avoid collision with Font Awesome for the search bar on any page that was
importing the icon component (forms and events calendar).

* Last minute fixes for the software request form (#652)

* platform_managed_list SHOULD NOT be required

* licenses field was tracking value of url field

* helps to include value for delivery field...whoops

* a little more personal with the thank you message

* Keep more link at bottom of events-home container (#653)

An improvement to the equal height events groupings from 4703c70 for #612.

* Apply stickyheaders after softwareList is created (#654)

This is the key to the bug in #606 and the reason why I was not able to reliably
reproduce this is because when hosting the site on wagon, `$(window).load` would
trigger after the Vue component was updated, but in the opposite order when
hosting on engine. We can ensure the proper order by utilizing Vue's watch
method.

* More sui icon vs font awesome cleanup (#655)

In the aftermath of 95f2b77 for #626. Hat tip to Tobi for catching these
stragglers.

* pretty much all of the icons for space-finder

* all icons on staff directory page

* Track equipment pages

* Ensure custom spaces subnav is alpha sorted (#658)

Rely on Liquid's sort filter and not the developer ;)

* Update gem ref, addresses #664 (#659)

* Equipment availability (#657)

* Equipment availability pages, addresses #616

* Synced equipment pages from production

* Untrack equipment pages

* Revert "Untrack equipment pages"

This reverts commit b3644024be40719fda4f7376c04d7d5fc833581e.

* Updated pages gitignore to match dev branch

* Applied patch to equipment list, thanks Nick
Modified child pages script, hardcoded headings for each equipment type
Cleaned up unused liquid variables and removed sticky script

* Ignore events marked duplicate in LibCal, addresses #666 (#669)

* Duplicate events (#670)

* Ignore events marked duplicate in LibCal, addresses #666

* Addresses #666, updated label to catch duplicate events

* Sync IA changes from back-office (GIS at Mann, course reserves redirect) (#674)

* Sync move of GIS at Mann in back-office

Should have caught this while working on #642.

* Further specificity for tracking course reserves

Necessary due to redirect with same filename at `use/borrow-request-renew/course-reserves.liquid`.

* Display events with no end time from localist by default (#675)

* Second condition for LibCal reserve button logic (#676)

Yet another example of the dev instance Engine evaluating an empty string as
truthy.

* Sync move of events calendar from back-office (#677)

Path is now `/news-events/events/calendar`.

* Update gem ref to latest mann_liquid_extensions, addresses #656 (#678)

* Footer cleanup (#679)

* Dynamically build about subnav in footer

* Alpha sort footer styles

* Mann logo in footer

* Don't shrink floorplans -- equal opportunity

* Better responsive proportions for footer

Plus social media icons in white to adhere to color palette.

* Use handle for filtering about page via with_scope (#680)

Wagon had no issue with the slug, but Engine required the handle. Better choice
anyway, since the handle is actually unique ;)

* Render basement status only if closed #617 (#681)

As it always should have been...

* Process response from latest http request, addresses #671 (#682)

* Pass promise to the method (#683)

Fixes bug in #682

* News (#684)

* …
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants