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

Sprint 2 #197

Merged
merged 103 commits into from
Jul 21, 2017
Merged

Sprint 2 #197

merged 103 commits into from
Jul 21, 2017

Conversation

mjoyce91
Copy link
Collaborator

This covers the work completed in Sprint 2

mjoyce91 and others added 30 commits June 28, 2017 18:24
* dev:
  Update README to reference TalentMAP API
Create containers, move results listing and position details to indiv…
Update .pa11y-ci config file structure for correct usage of standard,…
Adding positions as favorites with Local Storage
* dev:
  Remove trailing space from merge conflict fixes
  Add unique IDs for better accessibility
  Merge dev, conditionally load components with favorites button so that it receives props after AJAX
  Add style updates for consistency between results and details
  First stab at using docker-compose for local dev env
  Store IDs in arrays instead of their own keys, ignore localStorage global for linting
  Add different saving types, style updates
  Add position-favoriting with local storage
Cleaning up Code Climate config
mjoyce91 and others added 11 commits July 7, 2017 11:37
* dev:
  Swapping .jsx rules
  Renaming snapshot
  Renaming entrypoint
  Use router context to access route parameters
  Renaming test files
  Correcting renaming
  Renaming to jsx
  Swapping .jsx rules
  Renaming snapshot
  Renaming entrypoint
  Renaming test files
  Correcting renaming
  Renaming to jsx
* dev: (27 commits)
  Add TODO comments to replace hard-coded values with values from the API
  Remove “Loading” text, as it doesn’t account for 0 results
  Only use MemoryRouter on TestUtils components
  Use memory router for Results test
  Resolve and specify some eslint issues
  Swapping .jsx rules
  Renaming snapshot
  Renaming entrypoint
  Use router context to access route parameters
  Renaming test files
  Correcting renaming
  Renaming to jsx
  Add a / to the end of posts endpoint to avoid CORS errors, remove asterisks from static data
  Clean up test for PostMissionData component
  Swapping .jsx rules
  Renaming snapshot
  Renaming entrypoint
  Integrate Post data with API, use real property names, write tests
  Use router context to access route parameters
  Accessibility updates
  ...
Make note of using valid IDs for pa11y tests in readme
@mjoyce91 mjoyce91 requested a review from jseppi July 10, 2017 15:52
Copy link
Contributor

@jseppi jseppi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I made a variety of comments/suggestions/questions.

I realize this is still in early prototype stage, so I don't think these items are necessarily blockers to moving forward, but hopefully are helpful as the app coalesces. Feel free to create new issues to handle them moving forward.

"react/jsx-filename-extension": "off"
// allow test files to import packages in devDependencies
// https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-extraneous-dependencies.md
"import/no-extraneous-dependencies": ["error", {"devDependencies": ["**/*.test.js?(x)"]}]
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the ? in the regex here should go after the x since we're trying to match .js and .jsx, right?

Also, I didn't know about this way of configuring import/no-extraneous-dependencies -- cool!

}

componentDidMount() {
const retrievedKey = localStorage
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Consider extracting all the localStoragelogic into a separate module for easy/independent unit testing and reuse. Alternatively, there are probably some decent modules on npm (like maybe this one https://www.npmjs.com/package/humble-localstorage, though I haven't fully evaluated it).

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Probably another good piece of functionality to move to redux

FavoritesButton.propTypes = {
refKey: PropTypes.string.isRequired,
type: PropTypes.string.isRequired,
iterator: PropTypes.number,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's the purpose of the iterator prop?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jseppi - I was using a generic id for the <button> tags, so this allows a number to be passed in to provide a unique ID (such as when the results list is being rendered).

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Based on your other comment on using wrapper.find('button'), this may not be necessary any more.

render() {
let fromText = null;
fromText = this.props.type === 'fav' ? 'Favorites' : fromText;
fromText = this.props.type === 'compare' ? 'Comparison' : fromText;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this logic could be improved a bit. A cascading if-else or switch statement might work well. Also, use PropTypes.oneOf(['fav', 'compare']) to specify allowed values.

You could also create separate components for each type of button that extends a base class (ie something like ToggleFavoritesButton and ToggleComparisonButton) and get rid of this branching logic altogether.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jseppi Separate components sound like a good idea, especially if the logic for "favoriting" vs "comparing" starts to change as the app matures (different styles, saving to the user's profile vs the session, etc.)

const buttonText = this.getSavedState() ? `Remove from ${fromText}` : `Add to ${fromText}`;
return (
<div>
<button id={`changeSaved-${this.props.type}-${this.props.iterator}`} className={buttonClass} onClick={() => this.toggleSaved()}>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems like the id isn't really necessary here. Looks like maybe it was used to get a reference to the button in the associated tests, but those could be rewritten to wrapper.find('button') instead of wrapper.find('#changeSaved-fav-0')

has_service_needs_differential: PropTypes.boolean,
}),
languages: PropTypes.arrayOf(
PropTypes.shape({
Copy link
Contributor

@jseppi jseppi Jul 11, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perhaps extract some of these PropType definitions into another file so they can be reused. I think this shape of a language, for example, could be reused in ResultsList and PostMissionData.

@@ -143,17 +152,17 @@ class Home extends Component {
</label>
<input
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I missed this in the last review, what about wrapping <input> and <button type="submit"> in a <form> element? That will allow easy submit-on-enter behavior.

onChange={e => this.changeText(e)}
type="search"
name="search"
/>
<div id="enabled-search" className={enableSearch}>
<a href={`/#/results?${qString}`}>
<Link to={`/results?${qString}`}>
<button type="submit">
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wrapping a <button> in a <Link>/<a> seems a bit odd to me. I think using a <form> as mentioned above would help simplify this. You'd have to do the routing in an onSubmit handler, like in the example at https://facebook.github.io/react/docs/forms.html#controlled-components

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And you could use the disabled attribute in the submit button instead of the nearly duplicate <div>s (ie, the ones with id="enabled-search" className={enableSearch}/id="disabled-search" className={disableSearch}).

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jseppi - as I'm going back to review this, I'm remembering why I set it up this way. I wanted to use the default look and feel of the USWDS search bar (with the input and submit button connected to each other), which requires type="search" on the <input>. However, when that's within a form, there's some javascript attached to it which pushes ?search=<your search phrase> to history, which is not what we want, because then we end up with .../?search=german instead of .../results?q=german&<all our other filters>.

Copy link
Contributor

@jseppi jseppi Jul 11, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think in your onSubmit handler you could call e.preventDefault() first.

Here's some quick untested code to explain what I mean:

in render():

<form onSubmit={e => this.onSubmit(e)}>
  <label className="usa-sr-only" htmlFor="search-field">
      Search
  </label>
  <input
    id="search-field"
    value={searchText.value}
    onChange={e => this.changeText(e)}
    type="search"
    name="search"
  />
  <button type="submit" disabled={this.shouldDisableSearch()}>
    <span className="usa-search-submit-text">Search</span>
  </button>
</form>

and then onSubmit would look something like:

onSubmit(e) {
  e.preventDefault();
  // use router API to route to `/results?${qString}`
}

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That seemed to work with the inclusion of withRouter, but might be better left for the redux integration.

}

componentWillMount() {
this.getPost(this.context.router.route.match.params.id);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This very long string of property accessing makes me a bit nervous. I think once this project is switched to Redux you'll probably want to use react-router-redux, which will hopefully help avoid things like this.

https://github.com/reactjs/react-router-redux#how-do-i-access-router-state-in-a-container-component

{results.length ?
<ResultsList results={results} />
:
<div className="usa-grid-full" />
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A simple message shown to the user in the case of no results would probably be good :)

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jseppi - in progress in our redux branch! 👍

@jseppi
Copy link
Contributor

jseppi commented Jul 21, 2017

Want to go ahead and merge this so that we're ready for the sprint 3 code review on Monday?

@burgwyn burgwyn merged commit 02044fa into staging Jul 21, 2017
@burgwyn burgwyn mentioned this pull request Aug 7, 2019
kakumanipk pushed a commit that referenced this pull request Aug 7, 2019
* Increase test coverage (#151)

* Remove ABOUT_URL (#152)

* Update Jest (#153)

* Update Jest

* Update coverageReporters

* Bidder Portfolio Edit View (#144)

* New card design for Bidder Portfolio, including badges (static for now)

* Fallback for no grade

* New UI for Bidder Portfolio row view

* Update name format

* Add Export button to Bidder Portfolio

* Add Edit view for Bidder Portfolio rows

* UI For Bid Portfolio Edit View

* Public Profile "Updates" and Edit UI (#147)

* New card design for Bidder Portfolio, including badges (static for now)

* Fallback for no grade

* New UI for Bidder Portfolio row view

* Update name format

* Add Export button to Bidder Portfolio

* Add Edit view for Bidder Portfolio rows

* UI For Bid Portfolio Edit View

* Add "Updates" section, static edit UI to Public Profile

* Use react-picky to create a multi-select checkbox dropdown to use as a static UI Bid Cycle filter

* Improved test coverage

* Additional tests for SearchResultsExportLink and utilities

* More test coverage (#156)

* More test coverage

* Add test coverage to ListItem

* Add active filter (#158)

* staging -> sprint-8 (#160)

* Set min-width on compare drawer cards in IE11 (#161)

* Redirect standard error, for when file does not exist in CI (#162)

* Use common Export Button component for re-use (#163)

* Handle for when current_assignment is null (#165)

* "Service need" -> "Featured positions" sort name (#167)

* dev -> staging (#166) (#168)

* chore: remove unused props from the Home container

* chore: remove unused props from the HomePagePositionsContainer component

* fix: update profile page based on qa

* Update styles and content in Position Details page based on QA feedback

* fix: add logo to saved search title

* fix: search page updates from qa

* chore: linter fix

* chore: fix linter issue

* fix: search page updates from qa

* chore: linter fix

* Remove feedback button site-wide

* Use object in state instead of array

* Minor edits to Homepage based on QA

* fix: make the pagination link clickable area larger

* fix: use the correct button style

* fix: better accessibility for active pagination tab selection

* fix: use correct button design

* fix: use lodash get so that non-existent nested property doesn't throw error  (#45)

* Use lodash get so that non-existent nested property doesn't throw error

* Check for details.id so that components don't render with an empty object

* Align bid count with data points in ResultsCondensedCard

* Show "Available" filter to all users, not just CDOs (#46)

* Update dashboard styles and content based on QA

* Fix style for bid list container

* Move Bid Count in-line with data points on ResultsCard

* View More -> View more

* Add disabled state for BidListButton based on proposed API updates

* Use real properties from API PR, combine strings

* Use white for button text color

* feature: add remove bid to the bid tracker for draft and submitted bids

* add additional status to the canDeleteBid function

* Add react-toastify and use with bid list additions/removals (#51)

* Add react-toastify and use with bid list additions/removals

* More tests for toast-related functionality

* Check if bid can be deleted and apply disabled status accordingly; update and optimize utility function

* feature: use the can_delete property from the bid rather than calculate client side

* Add loading spinner to Bid List button (#52)

* Compress us-flag.jpg (#53)

* Use react-linkify to automatically hyperlink URLs and email addresses in position capsule descriptions

* Authorization -> Authentication (#54)

* Authorization -> Authentication

* Rename import

* Update pagination and page size defaults in alignment with designs

* Display link, if available, in the glossary

* Add ability to edit links from Glossary editor; update styling for glossary links

* Reduce code complexity, fix long link styles

* Update snapshot

* Add bundlesize (#69)

* Add bundlsize and command

* Refine glob

* Refine maxSize target

* Chore/linter (#67)

* chore: fix linter is scss file

* fix: linter issue

* End of basic auth (#63)

* Delete login form

* Update actions

* Clean up sagas

* Remove isSAML checks

* Refactor sagas, CodeClimate fixes

* CodeClimate linting

* Upate login screen

* Simplify index

* Change to force external login

* get new custom auth working

* remove rest of the basic auth refs from server

* use env vars for env specific paths

* Bidder role - TM-371 (#68)

* Create permissions wrapper and conditionally render content based on bidder role

* remove default fallback prop

* Fix/mock auth (#70)

* fix: override some routes for the webpack dev server so auth works for local development

* fix: fix the conf so we can use the login.html when running the server in prod mode

* Default to true if can_delete property is not found

* Update snapshots

* fix: remove the auth redirect loop and clean up reamining references to the LOGIN_MODE

* TM-410 - display favorites list as 4 across above the large break point (#66)

* fix: display favorites list as 4 across above the large break point

* fix: display favorites list as 4 across above the large break point

* fix: remove the auth redirect loop (#73)

* fix: remove the auth redirect loop and clean up reamining references to the LOGIN_MODE

* no conditional about url

* dev -> staging (#56) (#75)

* chore: remove unnecessary css file from the build output

* chore: update docs regarding apache compression config

* Update bid list due date to match site-wide format

* Use position id instead of position_number to query for position details

* chore: remove unused props from components

* chore: fix err due to incorrect favicon size in manifest

* chore: remove unused props from the Home container

* chore: remove unused props from the HomePagePositionsContainer component

* fix: update profile page based on qa

* Update styles and content in Position Details page based on QA feedback

* fix: add logo to saved search title

* fix: search page updates from qa

* chore: linter fix

* chore: fix linter issue

* fix: search page updates from qa

* chore: linter fix

* Remove feedback button site-wide

* Use object in state instead of array

* Minor edits to Homepage based on QA

* fix: make the pagination link clickable area larger

* fix: use the correct button style

* fix: better accessibility for active pagination tab selection

* fix: use correct button design

* fix: use lodash get so that non-existent nested property doesn't throw error  (#45)

* Use lodash get so that non-existent nested property doesn't throw error

* Check for details.id so that components don't render with an empty object

* Align bid count with data points in ResultsCondensedCard

* Show "Available" filter to all users, not just CDOs (#46)

* Update dashboard styles and content based on QA

* Fix style for bid list container

* Move Bid Count in-line with data points on ResultsCard

* View More -> View more

* Add disabled state for BidListButton based on proposed API updates

* Use real properties from API PR, combine strings

* Use white for button text color

* feature: add remove bid to the bid tracker for draft and submitted bids

* add additional status to the canDeleteBid function

* Add react-toastify and use with bid list additions/removals (#51)

* Add react-toastify and use with bid list additions/removals

* More tests for toast-related functionality

* Check if bid can be deleted and apply disabled status accordingly; update and optimize utility function

* feature: use the can_delete property from the bid rather than calculate client side

* Add loading spinner to Bid List button (#52)

* Compress us-flag.jpg (#53)

* Remove use of skill cone/code to skill (#76)

* Add Public Profile page - links from CDO portfolio, profile/public/:id route, add Assignments section to public profile, re-use of Profile Dashboard (#71)

## Relies on https://github.com/MetaPhase-Consulting/State-TalentMAP-API/pull/24

* Sort bid cycles alphabetically by name (#78)

* feature: download search results in csv format. Resolves TM-439

* chore: use default variable for sort

* chore: reformat the date before file creation

* Simplified search bar v2 (#81)

*  Make use of the existing simple search bar throughout site

* Offsets for homepage

* Redesign compare page (#82)

* Redesign compare page

* Remove old table styles; handle zero comparisons with route to catch it

* feature: move the download button and use the secondary style. resolves TM-511

* fix: set a width on the cards for the favorite positions profile screen (#80)

* fix: set a width on the cards for the favorite positions profile screen. resolves TM-410

* fix: no responsiveness for bid count and favorite buttons on position card displays

* feature: fixed width for all position cards (homepage, favorites, similar positions). Resolves TM-510

* fix: remove unnecessary class and fix padding on grid for correct wrapping

* chore: fixing the wrapping for the larger width

* Fix search styles from breaking on the bidder portfolio

* Reverting the changes to the glossary card due to the new term dialog breaking

* Add link-container class back in

* Update snapshots

* Trigger circleci build

* Code smells (#86)

* Update CodeClimate exclusions for local dev

* Reduce complexity

* Comparison drawer component, add event listeners where needed, remove old comparison UI from results page

* Track old compare choices to maintain sorting during an update

* Add test coverage, use cancel tokens

* Change dropdown menu link name from "Profile" to "Dashboard"

* Remove How to Bid section from position details (#89)

* Homepage QA (#90)

* Remove Inbox icon

* Fetch notifications from any screen, since we no longer use a /login route

* Remove the BetaHeader

* Conditional rendering of Bid Count on Bid Tracker cards, update Results cards data order and style

* Break out compare elements into their own rows, add Bid List button to comparisons, use Set() for bidListToggleIsLoading

* Remove eslint-disable

* feature: include org info for domestic positions (#92)

* Remove bidListToggleIsLoading since that is handled in BidListButton container

* Display the service needs filter as a pill on the results page (#95)

* Add error handling for position details screen (#93)

* Add error handling for position details screen

* Update call to action

* Update based on design feedback

* feature: add bid list button to the favorites cards. TM-512

* dev -> staging

* Make icons consistent throughout profile pages (#102)

* Service Needs -> Featured (#100)

* Add hover to dropdown (#103)

* Update empty saved search list text (#101)

* Add custom filter for including null language positions (#104)

* Remove Status component throughout app (#105)

* fix: change label. TM-632 (#107)

* Adjust elements to grow

* fix: allow export on edge to run

* Styles, add post to top

* Update ordering for data points on Compare page (#110)

* Remove post, add grade to bottom section

* Updates to Bid Tracker (#115)

* Add opacity to on-hold bids

* "priority" -> "pending"

* Prop to hide the delete button for standby bids

* Track favoriting loading state of individual IDs (#108)

* Track favoriting loading state of individual IDs

* Fix proptypes

* Handshake ribbon (#113)

* Re-usable Ribbon component, use Ribbon component to display if handshake has been offered on position

* Display handshake in condensed card, tests and snapshots

* Test coverage (#117)

* Test coverage for AccountDropdown, CompareDrawer, Compare

* Add tests for SetType

* Add toast notifications for favoriting actions (#114)

* Create BoxShadow component and use with various cards (#106)

* dev -> staging (#98) (#119)

* chore: remove unnecessary css file from the build output

* chore: update docs regarding apache compression config

* Update bid list due date to match site-wide format

* Use position id instead of position_number to query for position details

* chore: remove unused props from components

* chore: fix err due to incorrect favicon size in manifest

* chore: remove unused props from the Home container

* chore: remove unused props from the HomePagePositionsContainer component

* fix: update profile page based on qa

* Update styles and content in Position Details page based on QA feedback

* fix: add logo to saved search title

* fix: search page updates from qa

* chore: linter fix

* chore: fix linter issue

* fix: search page updates from qa

* chore: linter fix

* Remove feedback button site-wide

* Use object in state instead of array

* Minor edits to Homepage based on QA

* fix: make the pagination link clickable area larger

* fix: use the correct button style

* fix: better accessibility for active pagination tab selection

* fix: use correct button design

* fix: use lodash get so that non-existent nested property doesn't throw error  (#45)

* Use lodash get so that non-existent nested property doesn't throw error

* Check for details.id so that components don't render with an empty object

* Align bid count with data points in ResultsCondensedCard

* Show "Available" filter to all users, not just CDOs (#46)

* Update dashboard styles and content based on QA

* Fix style for bid list container

* Move Bid Count in-line with data points on ResultsCard

* View More -> View more

* Add disabled state for BidListButton based on proposed API updates

* Use real properties from API PR, combine strings

* Use white for button text color

* feature: add remove bid to the bid tracker for draft and submitted bids

* add additional status to the canDeleteBid function

* Add react-toastify and use with bid list additions/removals (#51)

* Add react-toastify and use with bid list additions/removals

* More tests for toast-related functionality

* Check if bid can be deleted and apply disabled status accordingly; update and optimize utility function

* feature: use the can_delete property from the bid rather than calculate client side

* Add loading spinner to Bid List button (#52)

* Compress us-flag.jpg (#53)

* Use react-linkify to automatically hyperlink URLs and email addresses in position capsule descriptions

* Authorization -> Authentication (#54)

* Authorization -> Authentication

* Rename import

* Update pagination and page size defaults in alignment with designs

* Display link, if available, in the glossary

* Add ability to edit links from Glossary editor; update styling for glossary links

* Reduce code complexity, fix long link styles

* Update snapshot

* Add bundlesize (#69)

* Add bundlsize and command

* Refine glob

* Refine maxSize target

* Chore/linter (#67)

* chore: fix linter is scss file

* fix: linter issue

* End of basic auth (#63)

* Delete login form

* Update actions

* Clean up sagas

* Remove isSAML checks

* Refactor sagas, CodeClimate fixes

* CodeClimate linting

* Upate login screen

* Simplify index

* Change to force external login

* get new custom auth working

* remove rest of the basic auth refs from server

* use env vars for env specific paths

* Bidder role - TM-371 (#68)

* Create permissions wrapper and conditionally render content based on bidder role

* remove default fallback prop

* Fix/mock auth (#70)

* fix: override some routes for the webpack dev server so auth works for local development

* fix: fix the conf so we can use the login.html when running the server in prod mode

* Default to true if can_delete property is not found

* Update snapshots

* fix: remove the auth redirect loop and clean up reamining references to the LOGIN_MODE

* TM-410 - display favorites list as 4 across above the large break point (#66)

* fix: display favorites list as 4 across above the large break point

* fix: display favorites list as 4 across above the large break point

* fix: remove the auth redirect loop (#73)

* fix: remove the auth redirect loop and clean up reamining references to the LOGIN_MODE

* no conditional about url

* dev -> staging (#56) (#75)

* chore: remove unnecessary css file from the build output

* chore: update docs regarding apache compression config

* Update bid list due date to match site-wide format

* Use position id instead of position_number to query for position details

* chore: remove unused props from components

* chore: fix err due to incorrect favicon size in manifest

* chore: remove unused props from the Home container

* chore: remove unused props from the HomePagePositionsContainer component

* fix: update profile page based on qa

* Update styles and content in Position Details page based on QA feedback

* fix: add logo to saved search title

* fix: search page updates from qa

* chore: linter fix

* chore: fix linter issue

* fix: search page updates from qa

* chore: linter fix

* Remove feedback button site-wide

* Use object in state instead of array

* Minor edits to Homepage based on QA

* fix: make the pagination link clickable area larger

* fix: use the correct button style

* fix: better accessibility for active pagination tab selection

* fix: use correct button design

* fix: use lodash get so that non-existent nested property doesn't throw error  (#45)

* Use lodash get so that non-existent nested property doesn't throw error

* Check for details.id so that components don't render with an empty object

* Align bid count with data points in ResultsCondensedCard

* Show "Available" filter to all users, not just CDOs (#46)

* Update dashboard styles and content based on QA

* Fix style for bid list container

* Move Bid Count in-line with data points on ResultsCard

* View More -> View more

* Add disabled state for BidListButton based on proposed API updates

* Use real properties from API PR, combine strings

* Use white for button text color

* feature: add remove bid to the bid tracker for draft and submitted bids

* add additional status to the canDeleteBid function

* Add react-toastify and use with bid list additions/removals (#51)

* Add react-toastify and use with bid list additions/removals

* More tests for toast-related functionality

* Check if bid can be deleted and apply disabled status accordingly; update and optimize utility function

* feature: use the can_delete property from the bid rather than calculate client side

* Add loading spinner to Bid List button (#52)

* Compress us-flag.jpg (#53)

* Remove use of skill cone/code to skill (#76)

* Add Public Profile page - links from CDO portfolio, profile/public/:id route, add Assignments section to public profile, re-use of Profile Dashboard (#71)

## Relies on https://github.com/MetaPhase-Consulting/State-TalentMAP-API/pull/24

* Sort bid cycles alphabetically by name (#78)

* feature: download search results in csv format. Resolves TM-439

* chore: use default variable for sort

* chore: reformat the date before file creation

* Simplified search bar v2 (#81)

*  Make use of the existing simple search bar throughout site

* Offsets for homepage

* Redesign compare page (#82)

* Redesign compare page

* Remove old table styles; handle zero comparisons with route to catch it

* feature: move the download button and use the secondary style. resolves TM-511

* fix: set a width on the cards for the favorite positions profile screen (#80)

* fix: set a width on the cards for the favorite positions profile screen. resolves TM-410

* fix: no responsiveness for bid count and favorite buttons on position card displays

* feature: fixed width for all position cards (homepage, favorites, similar positions). Resolves TM-510

* fix: remove unnecessary class and fix padding on grid for correct wrapping

* chore: fixing the wrapping for the larger width

* Fix search styles from breaking on the bidder portfolio

* Reverting the changes to the glossary card due to the new term dialog breaking

* Add link-container class back in

* Update snapshots

* Trigger circleci build

* Code smells (#86)

* Update CodeClimate exclusions for local dev

* Reduce complexity

* Comparison drawer component, add event listeners where needed, remove old comparison UI from results page

* Track old compare choices to maintain sorting during an update

* Add test coverage, use cancel tokens

* Change dropdown menu link name from "Profile" to "Dashboard"

* Remove How to Bid section from position details (#89)

* Homepage QA (#90)

* Remove Inbox icon

* Fetch notifications from any screen, since we no longer use a /login route

* Remove the BetaHeader

* Conditional rendering of Bid Count on Bid Tracker cards, update Results cards data order and style

* Break out compare elements into their own rows, add Bid List button to comparisons, use Set() for bidListToggleIsLoading

* Remove eslint-disable

* feature: include org info for domestic positions (#92)

* Remove bidListToggleIsLoading since that is handled in BidListButton container

* Display the service needs filter as a pill on the results page (#95)

* Add error handling for position details screen (#93)

* Add error handling for position details screen

* Update call to action

* Update based on design feedback

* dev -> staging

* Make icons consistent throughout profile pages (#102)

* Service Needs -> Featured (#100)

* Add hover to dropdown (#103)

* Sprint 6 merge conflicts (#120)

* dev -> staging (#98)

* chore: remove unnecessary css file from the build output

* chore: update docs regarding apache compression config

* Update bid list due date to match site-wide format

* Use position id instead of position_number to query for position details

* chore: remove unused props from components

* chore: fix err due to incorrect favicon size in manifest

* chore: remove unused props from the Home container

* chore: remove unused props from the HomePagePositionsContainer component

* fix: update profile page based on qa

* Update styles and content in Position Details page based on QA feedback

* fix: add logo to saved search title

* fix: search page updates from qa

* chore: linter fix

* chore: fix linter issue

* fix: search page updates from qa

* chore: linter fix

* Remove feedback button site-wide

* Use object in state instead of array

* Minor edits to Homepage based on QA

* fix: make the pagination link clickable area larger

* fix: use the correct button style

* fix: better accessibility for active pagination tab selection

* fix: use correct button design

* fix: use lodash get so that non-existent nested property doesn't throw error  (#45)

* Use lodash get so that non-existent nested property doesn't throw error

* Check for details.id so that components don't render with an empty object

* Align bid count with data points in ResultsCondensedCard

* Show "Available" filter to all users, not just CDOs (#46)

* Update dashboard styles and content based on QA

* Fix style for bid list container

* Move Bid Count in-line with data points on ResultsCard

* View More -> View more

* Add disabled state for BidListButton based on proposed API updates

* Use real properties from API PR, combine strings

* Use white for button text color

* feature: add remove bid to the bid tracker for draft and submitted bids

* add additional status to the canDeleteBid function

* Add react-toastify and use with bid list additions/removals (#51)

* Add react-toastify and use with bid list additions/removals

* More tests for toast-related functionality

* Check if bid can be deleted and apply disabled status accordingly; update and optimize utility function

* feature: use the can_delete property from the bid rather than calculate client side

* Add loading spinner to Bid List button (#52)

* Compress us-flag.jpg (#53)

* Use react-linkify to automatically hyperlink URLs and email addresses in position capsule descriptions

* Authorization -> Authentication (#54)

* Authorization -> Authentication

* Rename import

* Update pagination and page size defaults in alignment with designs

* Display link, if available, in the glossary

* Add ability to edit links from Glossary editor; update styling for glossary links

* Reduce code complexity, fix long link styles

* Update snapshot

* Add bundlesize (#69)

* Add bundlsize and command

* Refine glob

* Refine maxSize target

* Chore/linter (#67)

* chore: fix linter is scss file

* fix: linter issue

* End of basic auth (#63)

* Delete login form

* Update actions

* Clean up sagas

* Remove isSAML checks

* Refactor sagas, CodeClimate fixes

* CodeClimate linting

* Upate login screen

* Simplify index

* Change to force external login

* get new custom auth working

* remove rest of the basic auth refs from server

* use env vars for env specific paths

* Bidder role - TM-371 (#68)

* Create permissions wrapper and conditionally render content based on bidder role

* remove default fallback prop

* Fix/mock auth (#70)

* fix: override some routes for the webpack dev server so auth works for local development

* fix: fix the conf so we can use the login.html when running the server in prod mode

* Default to true if can_delete property is not found

* Update snapshots

* fix: remove the auth redirect loop and clean up reamining references to the LOGIN_MODE

* TM-410 - display favorites list as 4 across above the large break point (#66)

* fix: display favorites list as 4 across above the large break point

* fix: display favorites list as 4 across above the large break point

* fix: remove the auth redirect loop (#73)

* fix: remove the auth redirect loop and clean up reamining references to the LOGIN_MODE

* no conditional about url

* dev -> staging (#56) (#75)

* chore: remove unnecessary css file from the build output

* chore: update docs regarding apache compression config

* Update bid list due date to match site-wide format

* Use position id instead of position_number to query for position details

* chore: remove unused props from components

* chore: fix err due to incorrect favicon size in manifest

* chore: remove unused props from the Home container

* chore: remove unused props from the HomePagePositionsContainer component

* fix: update profile page based on qa

* Update styles and content in Position Details page based on QA feedback

* fix: add logo to saved search title

* fix: search page updates from qa

* chore: linter fix

* chore: fix linter issue

* fix: search page updates from qa

* chore: linter fix

* Remove feedback button site-wide

* Use object in state instead of array

* Minor edits to Homepage based on QA

* fix: make the pagination link clickable area larger

* fix: use the correct button style

* fix: better accessibility for active pagination tab selection

* fix: use correct button design

* fix: use lodash get so that non-existent nested property doesn't throw error  (#45)

* Use lodash get so that non-existent nested property doesn't throw error

* Check for details.id so that components don't render with an empty object

* Align bid count with data points in ResultsCondensedCard

* Show "Available" filter to all users, not just CDOs (#46)

* Update dashboard styles and content based on QA

* Fix style for bid list container

* Move Bid Count in-line with data points on ResultsCard

* View More -> View more

* Add disabled state for BidListButton based on proposed API updates

* Use real properties from API PR, combine strings

* Use white for button text color

* feature: add remove bid to the bid tracker for draft and submitted bids

* add additional status to the canDeleteBid function

* Add react-toastify and use with bid list additions/removals (#51)

* Add react-toastify and use with bid list additions/removals

* More tests for toast-related functionality

* Check if bid can be deleted and apply disabled status accordingly; update and optimize utility function

* feature: use the can_delete property from the bid rather than calculate client side

* Add loading spinner to Bid List button (#52)

* Compress us-flag.jpg (#53)

* Remove use of skill cone/code to skill (#76)

* Add Public Profile page - links from CDO portfolio, profile/public/:id route, add Assignments section to public profile, re-use of Profile Dashboard (#71)

## Relies on https://github.com/MetaPhase-Consulting/State-TalentMAP-API/pull/24

* Sort bid cycles alphabetically by name (#78)

* feature: download search results in csv format. Resolves TM-439

* chore: use default variable for sort

* chore: reformat the date before file creation

* Simplified search bar v2 (#81)

*  Make use of the existing simple search bar throughout site

* Offsets for homepage

* Redesign compare page (#82)

* Redesign compare page

* Remove old table styles; handle zero comparisons with route to catch it

* feature: move the download button and use the secondary style. resolves TM-511

* fix: set a width on the cards for the favorite positions profile screen (#80)

* fix: set a width on the cards for the favorite positions profile screen. resolves TM-410

* fix: no responsiveness for bid count and favorite buttons on position card displays

* feature: fixed width for all position cards (homepage, favorites, similar positions). Resolves TM-510

* fix: remove unnecessary class and fix padding on grid for correct wrapping

* chore: fixing the wrapping for the larger width

* Fix search styles from breaking on the bidder portfolio

* Reverting the changes to the glossary card due to the new term dialog breaking

* Add link-container class back in

* Update snapshots

* Trigger circleci build

* Code smells (#86)

* Update CodeClimate exclusions for local dev

* Reduce complexity

* Comparison drawer component, add event listeners where needed, remove old comparison UI from results page

* Track old compare choices to maintain sorting during an update

* Add test coverage, use cancel tokens

* Change dropdown menu link name from "Profile" to "Dashboard"

* Remove How to Bid section from position details (#89)

* Homepage QA (#90)

* Remove Inbox icon

* Fetch notifications from any screen, since we no longer use a /login route

* Remove the BetaHeader

* Conditional rendering of Bid Count on Bid Tracker cards, update Results cards data order and style

* Break out compare elements into their own rows, add Bid List button to comparisons, use Set() for bidListToggleIsLoading

* Remove eslint-disable

* feature: include org info for domestic positions (#92)

* Remove bidListToggleIsLoading since that is handled in BidListButton container

* Display the service needs filter as a pill on the results page (#95)

* Add error handling for position details screen (#93)

* Add error handling for position details screen

* Update call to action

* Update based on design feedback

* dev -> staging

* Make icons consistent throughout profile pages (#102)

* Service Needs -> Featured (#100)

* Add hover to dropdown (#103)

* Remove duplicates

* Add toggle component, use static toggle filter in search results (#121)

* Add condensed card layouts for projected vacancy and recently available (#122)

* dev -> staging (#98) (#127)

* chore: remove unnecessary css file from the build output

* chore: update docs regarding apache compression config

* Update bid list due date to match site-wide format

* Use position id instead of position_number to query for position details

* chore: remove unused props from components

* chore: fix err due to incorrect favicon size in manifest

* chore: remove unused props from the Home container

* chore: remove unused props from the HomePagePositionsContainer component

* fix: update profile page based on qa

* Update styles and content in Position Details page based on QA feedback

* fix: add logo to saved search title

* fix: search page updates from qa

* chore: linter fix

* chore: fix linter issue

* fix: search page updates from qa

* chore: linter fix

* Remove feedback button site-wide

* Use object in state instead of array

* Minor edits to Homepage based on QA

* fix: make the pagination link clickable area larger

* fix: use the correct button style

* fix: better accessibility for active pagination tab selection

* fix: use correct button design

* fix: use lodash get so that non-existent nested property doesn't throw error  (#45)

* Use lodash get so that non-existent nested property doesn't throw error

* Check for details.id so that components don't render with an empty object

* Align bid count with data points in ResultsCondensedCard

* Show "Available" filter to all users, not just CDOs (#46)

* Update dashboard styles and content based on QA

* Fix style for bid list container

* Move Bid Count in-line with data points on ResultsCard

* View More -> View more

* Add disabled state for BidListButton based on proposed API updates

* Use real properties from API PR, combine strings

* Use white for button text color

* feature: add remove bid to the bid tracker for draft and submitted bids

* add additional status to the canDeleteBid function

* Add react-toastify and use with bid list additions/removals (#51)

* Add react-toastify and use with bid list additions/removals

* More tests for toast-related functionality

* Check if bid can be deleted and apply disabled status accordingly; update and optimize utility function

* feature: use the can_delete property from the bid rather than calculate client side

* Add loading spinner to Bid List button (#52)

* Compress us-flag.jpg (#53)

* Use react-linkify to automatically hyperlink URLs and email addresses in position capsule descriptions

* Authorization -> Authentication (#54)

* Authorization -> Authentication

* Rename import

* Update pagination and page size defaults in alignment with designs

* Display link, if available, in the glossary

* Add ability to edit links from Glossary editor; update styling for glossary links

* Reduce code complexity, fix long link styles

* Update snapshot

* Add bundlesize (#69)

* Add bundlsize and command

* Refine glob

* Refine maxSize target

* Chore/linter (#67)

* chore: fix linter is scss file

* fix: linter issue

* End of basic auth (#63)

* Delete login form

* Update actions

* Clean up sagas

* Remove isSAML checks

* Refactor sagas, CodeClimate fixes

* CodeClimate linting

* Upate login screen

* Simplify index

* Change to force external login

* get new custom auth working

* remove rest of the basic auth refs from server

* use env vars for env specific paths

* Bidder role - TM-371 (#68)

* Create permissions wrapper and conditionally render content based on bidder role

* remove default fallback prop

* Fix/mock auth (#70)

* fix: override some routes for the webpack dev server so auth works for local development

* fix: fix the conf so we can use the login.html when running the server in prod mode

* Default to true if can_delete property is not found

* Update snapshots

* fix: remove the auth redirect loop and clean up reamining references to the LOGIN_MODE

* TM-410 - display favorites list as 4 across above the large break point (#66)

* fix: display favorites list as 4 across above the large break point

* fix: display favorites list as 4 across above the large break point

* fix: remove the auth redirect loop (#73)

* fix: remove the auth redirect loop and clean up reamining references to the LOGIN_MODE

* no conditional about url

* dev -> staging (#56) (#75)

* chore: remove unnecessary css file from the build output

* chore: update docs regarding apache compression config

* Update bid list due date to match site-wide format

* Use position id instead of position_number to query for position details

* chore: remove unused props from components

* chore: fix err due to incorrect favicon size in manifest

* chore: remove unused props from the Home container

* chore: remove unused props from the HomePagePositionsContainer component

* fix: update profile page based on qa

* Update styles and content in Position Details page based on QA feedback

* fix: add logo to saved search title

* fix: search page updates from qa

* chore: linter fix

* chore: fix linter issue

* fix: search page updates from qa

* chore: linter fix

* Remove feedback button site-wide

* Use object in state instead of array

* Minor edits to Homepage based on QA

* fix: make the pagination link clickable area larger

* fix: use the correct button style

* fix: better accessibility for active pagination tab selection

* fix: use correct button design

* fix: use lodash get so that non-existent nested property doesn't throw error  (#45)

* Use lodash get so that non-existent nested property doesn't throw error

* Check for details.id so that components don't render with an empty object

* Align bid count with data points in ResultsCondensedCard

* Show "Available" filter to all users, not just CDOs (#46)

* Update dashboard styles and content based on QA

* Fix style for bid list container

* Move Bid Count in-line with data points on ResultsCard

* View More -> View more

* Add disabled state for BidListButton based on proposed API updates

* Use real properties from API PR, combine strings

* Use white for button text color

* feature: add remove bid to the bid tracker for draft and submitted bids

* add additional status to the canDeleteBid function

* Add react-toastify and use with bid list additions/removals (#51)

* Add react-toastify and use with bid list additions/removals

* More tests for toast-related functionality

* Check if bid can be deleted and apply disabled status accordingly; update and optimize utility function

* feature: use the can_delete property from the bid rather than calculate client side

* Add loading spinner to Bid List button (#52)

* Compress us-flag.jpg (#53)

* Remove use of skill cone/code to skill (#76)

* Add Public Profile page - links from CDO portfolio, profile/public/:id route, add Assignments section to public profile, re-use of Profile Dashboard (#71)

## Relies on https://github.com/MetaPhase-Consulting/State-TalentMAP-API/pull/24

* Sort bid cycles alphabetically by name (#78)

* feature: download search results in csv format. Resolves TM-439

* chore: use default variable for sort

* chore: reformat the date before file creation

* Simplified search bar v2 (#81)

*  Make use of the existing simple search bar throughout site

* Offsets for homepage

* Redesign compare page (#82)

* Redesign compare page

* Remove old table styles; handle zero comparisons with route to catch it

* feature: move the download button and use the secondary style. resolves TM-511

* fix: set a width on the cards for the favorite positions profile screen (#80)

* fix: set a width on the cards for the favorite positions profile screen. resolves TM-410

* fix: no responsiveness for bid count and favorite buttons on position card displays

* feature: fixed width for all position cards (homepage, favorites, similar positions). Resolves TM-510

* fix: remove unnecessary class and fix padding on grid for correct wrapping

* chore: fixing the wrapping for the larger width

* Fix search styles from breaking on the bidder portfolio

* Reverting the changes to the glossary card due to the new term dialog breaking

* Add link-container class back in

* Update snapshots

* Trigger circleci build

* Code smells (#86)

* Update CodeClimate exclusions for local dev

* Reduce complexity

* Comparison drawer component, add event listeners where needed, remove old comparison UI from results page

* Track old compare choices to maintain sorting during an update

* Add test coverage, use cancel tokens

* Change dropdown menu link name from "Profile" to "Dashboard"

* Remove How to Bid section from position details (#89)

* Homepage QA (#90)

* Remove Inbox icon

* Fetch notifications from any screen, since we no longer use a /login route

* Remove the BetaHeader

* Conditional rendering of Bid Count on Bid Tracker cards, update Results cards data order and style

* Break out compare elements into their own rows, add Bid List button to comparisons, use Set() for bidListToggleIsLoading

* Remove eslint-disable

* feature: include org info for domestic positions (#92)

* Remove bidListToggleIsLoading since that is handled in BidListButton container

* Display the service needs filter as a pill on the results page (#95)

* Add error handling for position details screen (#93)

* Add error handling for position details screen

* Update call to action

* Update based on design feedback

* dev -> staging

* Make icons consistent throughout profile pages (#102)

* Service Needs -> Featured (#100)

* Add hover to dropdown (#103)

* Move "No Language" filter to top of list (#129)

* Projected Vacancy - Saved Search + Results cards (#123)

* Projected vacancy in Saved Searches

* PV in results cards

* Fix typo, increase font size

* Increase filter container width, increase toggle font-size

* Refactor section headers in profile, static UI for projected vacancy notifications for favorites and bid list (#126)

* Pull css-box-shadow repo into app to force es6 to compile

* Chore/autodeploy config (#132)

* chore: update deploy config

* chore: update deploy config

* chore: update deploy config

* chore: update deploy config

* chore: update deploy config

* chore: update deploy config

* chore: use dev branch

* fix: update deploy script

* Compare from Favorites (#124)

* Add condensed card layouts for projected vacancy and recently available

* Add comparison buttons and comparison drawer to Favorites page

* Condensed Bid Tracker (#128)

* Alternate styles for condensed bid tracker, check for condensedView with Context API

* Additional styles/conditional rendering, scroll to bid on Bid Tracker with route id, snapshots

* Show Closed alert, style tweaks

* Style tweak to hide overlay alert for prepanel state

* Feature flags (#130)

* Feature flag implementation

* Feature flags for API

* fix: check for and remove if present the backup dir (#136)

* Remove jQuery and replace with XHR (#137)

* Different text and colors for Approved bids (#139)

* Hide Featured Positions section if positions length is zero (#138)

* Hide Featured Positions section if positions length is zero

* Update snapshot

* Set config.json to preferred defaults in dev environment

* Update index.html to reference API URL from config

* Update deploy.sh to use alternate config

* fix: include the bid count in the sections toggled by the bidding flag

* Add the Beta banner back in

* Use defaultSort prop instead of entire object; refresh state value on componentWillReceiveProps() (#148)

* New card design for Bidder Portfolio (#140)

* New card design for Bidder Portfolio, including badges (static for now)

* Fallback for no grade

* Update name format

* Make disabled badge color accessible

* Use aria-label to describe the meaning of the icon (#149)

* New row design for Bidder Portfolio (#141)

* New card design for Bidder Portfolio, including badges (static for now)

* Fallback for no grade

* New UI for Bidder Portfolio row view

* Update name format

* Add Export button to Bidder Portfolio (#142)

* Add auto-complete dropdown to display CDO list in Bidder Portfolio (#150)

* Increase test coverage (#151)

* Remove ABOUT_URL (#152)

* Update Jest (#153)

* Update Jest

* Update coverageReporters

* Bidder Portfolio Edit View (#144)

* New card design for Bidder Portfolio, including badges (static for now)

* Fallback for no grade

* New UI for Bidder Portfolio row view

* Update name format

* Add Export button to Bidder Portfolio

* Add Edit view for Bidder Portfolio rows

* UI For Bid Portfolio Edit View

* Public Profile "Updates" and Edit UI (#147)

* New card design for Bidder Portfolio, including badges (static for now)

* Fallback for no grade

* New UI for Bidder Portfolio row view

* Update name format

* Add Export button to Bidder Portfolio

* Add Edit view for Bidder Portfolio rows

* UI For Bid Portfolio Edit View

* Add "Updates" section, static edit UI to Public Profile

* Use react-picky to create a multi-select checkbox dropdown to use as a static UI Bid Cycle filter

* Improved test coverage

* Additional tests for SearchResultsExportLink and utilities

* More test coverage (#156)

* More test coverage

* Add test coverage to ListItem

* Add active filter (#158)

* staging -> sprint-8 (#160)

* Set min-width on compare drawer cards in IE11 (#161)

* Redirect standard error, for when file does not exist in CI (#162)

* Use common Export Button component for re-use (#163)

* Handle for when current_assignment is null (#165)

* Integrate react-scroll-up-button to scroll to top on the Results page (#170)

* Integrate react-scroll-up-button to scroll to top on the Results page

* Remove props that had been abstracted to common component

* Update snapshot

* Better handling for Go Back button by tracking back/forward in history state, adding option to ignore repeated pathnames (#164)

* Add redux-persist, add PreferencesWrapper to wrap existing components, persist sort preferences to localStorage (#169)

* Linting - unused import

* Linting - unused prop

* Linting - vendor selector

* Linting - scss

* Add Grade to Compare page (#174)

* Fix/back to top usability (#175)

* Add z-index so that Back to Top button appears on top of Compare drawer

* Add blue focus so that Back to Top border-color is accessible when compare drawer is either open or closed

* Bid Tracker Success link (#176)

* Add link to Bid Tracker in "Add to Bid List" success notification

* Add link to Bid Tracker in "Add to Bid List" success notification

* Add link to Bid Tracker in "Add to Bid List" success notification

* Add link to Bid Tracker in "Add to Bid List" success notification

* Add scaffolding to set global context as a client, update CDO portfolio cards and rows (#171)

* Add comments

* Hover button on results cards to display capsule description (#177)

* Accessibility fixes (#178)

* Accessible color contrast for scroll-to-top button

* Negative tabindex to hide CSVLink element, as the button performs the action, and clicking this element download a blank CSV file

* Use slightly lighter blue for accessibility against link color (#180)

* Deploy edit (#179)

* Change NODE_ENV

* Fix paths

* Projected Vacancy Search (#172)

* Ability to search for projected vacancies, disable search functionalities that don't exist yet

* Remove snapshot tests since this component uses generated shortids

* Accessibility, PV results card layout, new data structure for PV from API

* Hide Post filter when searching PVs

* Use Q.allSettled so that filters aren't "all or nothing" if one fails

* Test coverage, comments

* Test coverage, remove handling for old PV data structure

* Revert to handling unstructured response for bid_seasons endpoint

* Feature/projected vacancy export (#181)

* Ability to search for projected vacancies, disable search functionalities that don't exist yet

* Remove snapshot tests since this component uses generated shortids

* Accessibility, PV results card layout, new data structure for PV from API

* Hide Post filter when searching PVs

* Use Q.allSettled so that filters aren't "all or nothing" if one fails

* Test coverage, comments

* Test coverage, remove handling for old PV data structure

* Revert to handling unstructured response for bid_seasons endpoint

* feature: hide export on projected vacancies for non-superusers. TM-740

* Use the word "Bid Season" when using projected vacancy search (#182)

* Use the word "Bid Season" when using projected vacancy search

* Hide "View position" link if it is a projected vacancy

* Test coverage (#183)

* Use getter on property value (#187)

* Increase limit for glossary terms to load (#185)

* Add link to Saved Search success message (#189)

* Add posted date to position details

* Make header color readable (#190)

* Set uFEFF to false in CSV export to resolve default file format in Excel (#195)

* Feature flag for notifications (#191)

* Add role to persona links (#196)

* Set all flags to true in both configs (#198)

* Convert new/update/delete saved search notifications to toast; remove clone-related props (#192)

* Update/bidder portfolio pagination (#188)

* Use getter on property value

* Update page size and scroll behavior on Bidder Portfolio

* Projected Vacancy Favoriting (#197)

* Functionality to favorite and view favorites for projected vacancies

# Use https://github.com/MetaPhase-Consulting/State-TalentMAP-API/pull/72, need to wait for API to return correct response

* Use new PV query to pull position information, format accordingly

* Test coverage

* Fork react-CSV and add ability to transform data (#186)

* Fork react-CSV and add ability to transform data, use to append "=" sign for numeric strings

* Update snapshot

* Handle nulls in CSV export

* Trigger build (#199)

* Hide Posted date on projected vacancies (#200)

* Add Markdown editor to About page

## uses fake permissions and requests

* Differentiate between full bidding that will eventually be handled by TalentMAP, versus what will be available in FSBid; set this in a feature flag

* Add ability to edit home page banner content

## WIP - Uses fake API requests and wrong permissions

* Use older version of react-loading-skeleton that is compatible with node v6

* Update snapshot

* Add loading state to search filters

* Add Administrator page, ability to download log file

* WIP - Log page

* Test coverage

* Editable Content Areas section

* Update link for Featured Positions

* Full page for notifications

* Implement bulk actions

* Update search placeholder

* Integrate banner with new endpoint

* UI for Admin Data Sync Management

# Not connected to API

* Add cancel token and dispatch handling

* Connect to sync jobs listing

* Update profile menu link order, notifications icon link, style tweak

* Make search input label consistent across home page and results page

* Wrap PV network requests in feature flag

* Ability to run all syncs

* Update config_dev.json

* Use fake endpoint to mock functionality for demo purposes

* Increase button margin

* Update button text, update link to to Notifications page

* Fix glossary search button margin

* Use date_created to display notification time (#227)

* Expands the skill accordion when the user selects the parent checkbox

* Remove the "Are you sure" prompt from the Clear Filters button

* Display OBC URLs on search results cards (#230)

* Update search query to use latest keyword value when a filter is selected

* Replace all uses of "Post" with "Location" (#232)

* Remove Post tag from pills (#243)

* Update and test About page endpoint and component to use real API (#233)

* Homepage banner (#236)

* Feature/homepage banner redesign (#237)

* Homepage banner

* Update design to header, footer and homepage banner

* Remove snapshot since the component uses generated keys

* Fix double render when position is 0

* Remove unnecessary border, increase min-height

* Remove gov banner (#240)

* Homepage banner

* Update design to header, footer and homepage banner

* Remove snapshot since the component uses generated keys

* Fix double render when position is 0

* Remove gov banner, move gold banner below main header

* Update snapshot

* Remove unnecessary border, increase min-height

* Removes the third row of cards on the Home page (#245)

* Simplify the saved search process (#242)

* Simplify the saved search process

* Remove unused

* Feature/glossary redesign (#239)

* Homepage banner

* Update design to header, footer and homepage banner

* Redesign Glossary, group terms by first letter

* Remove snapshot since the component uses generated keys

* Fix double render when position is 0

* Remove unnecessary border, increase min-height

* Move glossary close button z-index to variable

* Additional test coverage (#244)

* Additional test coverage

* More tests, consolidate some component test props

* Resolve a bad merge that deleted the logic to grab the latest keyword search value

* Hide Clear Filters link if no filters are selected (#247)

* Ability to clear search term and re-run query (#248)

* Ability to saved save search for projected vacancy

* Featured Ribbon (#251)

* Add Ribbon for featured positions

* Add styles and configure Featured component so that additional ribbons can be added to cards and details in the future

* Catch profile-related network failures (#252)

* Use q.allSettled when fetching account info so that one bad request doesn't break everything

* Change defaults from empty array to empty object

* Display message if results query has errored

* Bidder Portfolio -> Client Profiles

* Update background gradient so that the image is visible on State Department monitors

* Align "select" all button with notification check boxes

* Make condensed card header clickable (#259)

* Increase test coverage to >98% (#253)

* [WIP] staging/1.1 fixes -> dev (#249)

* sprint-10 -> staging (#201)

* fix: use correct button design

* fix: use lodash get so that non-existent nested property doesn't throw error  (#45)

* Use lodash get so that non-existent nested property doesn't throw error

* Check for details.id so that components don't render with an empty object

* Align bid count with data points in ResultsCondensedCard

* Show "Available" filter to all users, not just CDOs (#46)

* Update dashboard styles and content based on QA

* Fix style for bid list container

* Move Bid Count in-line with data points on ResultsCard

* View More -> View more

* Add disabled state for BidListButton based on proposed API updates

* Use real properties from API PR, combine strings

* Use white for button text color

* feature: add remove bid to the bid tracker for draft and submitted bids

* add additional status to the canDeleteBid function

* Add react-toastify and use with bid list additions/removals (#51)

* Add react-toastify and use with bid list additions/removals

* More tests for toast-related functionality

* Check if bid can be deleted and apply disabled status accordingly; update and optimize utility function

* feature: use the can_delete property from the bid rather than calculate client side

* Add loading spinner to Bid List button (#52)

* Compress us-flag.jpg (#53)

* Use react-linkify to automatically hyperlink URLs and email addresses in position capsule descriptions

* Authorization -> Authentication (#54)

* Authorization -> Authentication

* Rename import

* Update pagination and page size defaults in alignment with designs

* Display link, if available, in the glossary

* Add ability to edit links from Glossary editor; update styling for glossary links

* Reduce code complexity, fix long link styles

* Update snapshot

* Add bundlesize (#69)

* Add bundlsize and command

* Refine glob

* Refine maxSize target

* Chore/linter (#67)

* chore: fix linter is scss file

* fix: linter issue

* End of basic auth (#63)

* Delete login form

* Update actions

* Clean up sagas

* Remove isSAML checks

* Refactor sagas, CodeClimate fixes

* CodeClimate linting

* Upate login screen

* Simplify index

* Change to force external login

* get new custom auth working

* remove rest of the basic auth refs from server

* use env vars for env specific paths

* Bidder role - TM-371 (#68)

* Create permissions wrapper and conditionally render content based on bidder role

* remove default fallback prop

* Fix/mock auth (#70)

* fix: override some routes for the webpack dev server so auth works for local development

* fix: fix the conf so we can use the login.html when running the server in prod mode

* Default to true if can_delete property is not found

* Update snapshots

* fix: remove the auth redirect loop and clean up reamining references to the LOGIN_MODE

* TM-410 - display favorites list as 4 across above the large break point (#66)

* fix: display favorites list as 4 across above the large break point

* fix: display favorites list as 4 across above the large break point

* fix: remove the auth redirect loop (#73)

* fix: remove the auth redirect loop and clean up reamining references to the LOGIN_MODE

* no conditional about url

* dev -> staging (#56) (#75)

* chore: remove unnecessary css file from the build output

* chore: update docs regarding apache compression config

* Update bid list due date to match site-wide format

* Use position id instead of position_number to query for position details

* chore: remove unused props from components

* chore: fix err due to incorrect favicon size in manifest

* chore: remove unused props from the Home container

* chore: remove unused props from the HomePagePositionsContainer component

* fix: update profile page based on qa

* Update styles and content in Position Details page based on QA feedback

* fix: add logo to saved search title

* fix: search page updates from qa

* chore: linter fix

* chore: fix linter issue

* fix: search page updates from qa

* chore: linter fix

* Remove feedback button site-wide

* Use object in state instead of array

* Minor edits to Homepage based on QA

* fix: make the pagination link clickable area larger

* fix: use the correct button style

* fix: better accessibility for active pagination tab selection

* fix: use correct button design

* fix: use lodash get so that non-existent nested property doesn't throw error  (#45)

* Use lodash get so that non-existent nested property doesn't throw error

* Check for details.id so that components don't render with an empty object

* Align bid count with data points in ResultsCondensedCard

* Show "Available" filter to all users, not just CDOs (#46)

* Update dashboard styles and content based on QA

* Fix style for bid list container

* Move Bid Count in-line with data points on ResultsCard

* View More -> View more

* Add disabled state for BidListButton based on proposed API updates

* Use real properties from API PR, combine strings

* Use white for button text color

* feature: add remove bid to the bid tracker for draft and submitted bids

* add additional status to the canDeleteBid function

* Add react-toastify and use with bid list additions/removals (#51)

* Add react-toastify and use with bid list additions/removals

* More tests for toast-related functionality

* Check if bid can be deleted and apply disabled status accordingly; update and optimize utility function

* feature: use the can_delete property from the bid rather than calculate client side

* Add loading spinner to Bid List button (#52)

* Compress us-flag.jpg (#53)

* Remove use of skill cone/code to skill (#76)

* Add Public Profile page - links from CDO portfolio, profile/public/:id route, add Assignments section to public profile, re-use of Profile Dashboard (#71)

## Relies on https://github.com/MetaPhase-Consulting/State-TalentMAP-API/pull/24

* Sort bid cycles alphabetically by name (#78)

* feature: download search results in csv format. Resolves TM-439

* chore: use default variable for sort

* chore: reformat the date before file creation

* Simplified search bar v2 (#81)

*  Make use of the existing simple search bar throughout site

* Offsets for homepage

* Redesign compare page (#82)

* Redesign compare page

* Remove old table styles; handle zero comparisons with route to catch it

* feature: move the download button and use the secondary style. resolves TM-511

* fix: set a width on the cards for the favorite positions profile screen (#80)

* fix: set a width on the cards for the favorite positions profile screen. resolves TM-410

* fix: no responsiveness for bid count and favorite buttons on position card displays

* feature: fixed width for all position cards (homepage, favorites, similar positions). Resolves TM-510

* fix: remove unnecessary class and fix padding on grid for correct wrapping

* chore: fixing the wrapping for the larger width

* Fix search styles from breaking on the bidder portfolio

* Reverting the changes to the glossary card due to the new term dialog breaking

* Add link-container class back in

* Update snapshots

* Trigger circleci build

* Code smells (#86)

* Update CodeClimate exclusions for local dev

* Reduce complexity

* Comparison drawer component, add event listeners where needed, remove old comparison UI from results page

* Track old compare choices to maintain sorting during an update

* Add test coverage, use cancel tokens

* Change dropdown menu link name from "Profile" to "Dashboard"

* Remove How to Bid section from position details (#89)

* Homepage QA (#90)

* Remove Inbox icon

* Fetch notifications from any screen, since we no longer use a /login route

* Remove the BetaHeader

* Conditional rendering of Bid Count on Bid Tracker cards, update Results cards data order and style

* Break out compare elements into their own rows, add Bid List button to comparisons, use Set() for bidListToggleIsLoading

* Remove eslint-disable

* feature: include org info for domestic positions (#92)

* Remove bidListToggleIsLoading since that is handled in BidListButton container

* Display the service needs filter as a pill on the results page (#95)

* Add error handling for position details screen (#93)

* Add error handling for position details screen

* Update call to action

* Update based on design feedback

* feature: add bid list button to the favorites cards. TM-512

* dev -> staging

* Make icons consistent throughout profile pages (#102)

* Service Needs -> Featured (#100)

* Add hover to dropdown (#103)

* Update empty saved search list text (#101)

* Add custom filter for including null language positions (#104)

* Remove Status component throughout app (#105)

* fix: change label. TM-632 (#107)

* Adjust elements to grow

* fix: allow export on edge to run

* Styles, add post to top

* Update ordering for data points on Compare page (#110)

* Remove post, add grade to bottom section

* Updates to Bid Tracker (#115)

* Add opacity to on-hold bids

* "priority" -> "pending"

* Prop to hide the delete button for standby bids

* Track favoriting loading state of individual IDs (#108)

* Track favoriting loading state of individual IDs

* Fix proptypes

* Handshake ribbon (#113)

* Re-usable Ribbon component, use Ribbon component to display if handshake has been offered on position

* Display handshake in condensed card, tests and snapshots

* Test coverage (#117)

* Test coverage for AccountDropdown, CompareDrawer, Compare

* Add tests for SetType

* Add toast notifications for favoriting actions (#114)

* Create BoxShadow component and use with various cards (#106)

* dev -> staging (#98) (#119)

* chore: remove unnecessary css file from the build output

* chore: update docs regarding apache compression config

* Update bid list due date to match site-wide format

* Use position id instead of position_number to query for position details

* chore: remove unused props from components

* chore: fix err due to incorrect favicon size in manifest

*…
kakumanipk pushed a commit that referenced this pull request Aug 28, 2019
* Functionality to favorite and view favorites for projected vacancies

# Use MetaPhase-Consulting/State-TalentMAP-API#72, need to wait for API to return correct response

* Use new PV query to pull position information, format accordingly

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

Successfully merging this pull request may close these issues.

3 participants