diff --git a/.codeclimate.yml b/.codeclimate.yml new file mode 100644 index 00000000..fa6cf5be --- /dev/null +++ b/.codeclimate.yml @@ -0,0 +1,7 @@ +languages: + JavaScript: true + +exclude_paths: + - "build/*" + - "test/*" + - "gulpfile.js" diff --git a/.gitignore b/.gitignore index 66df52dc..5cbd1128 100644 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,9 @@ # Package/Dependencies lib/ -bower_components/ node_modules/ # Build Output dist/ -coverage/ reports/ # Transient Build Output @@ -14,4 +12,6 @@ reports/ # Others .DS_Store -.idea \ No newline at end of file +.idea +.vs/ +.settings/ \ No newline at end of file diff --git a/.jshintrc b/.jshintrc index 98bbf1f6..8d9fa9b4 100644 --- a/.jshintrc +++ b/.jshintrc @@ -1,31 +1,23 @@ { - "esnext": true, + "browser": true, + "camelcase": true, "curly": true, "eqeqeq": true, - "latedef": false, - "unused": true, - "undef": false, - "white": true, - "proto": true, - "newcap": true, - "maxdepth": 5, - "laxbreak": true, - "indent": 4, + "esnext": true, "freeze": true, - "camelcase": true, - "browser": true, - "globals": { - "angular": false, - "define": false, - "require": false, - "angular": false, - "window": false, - "localStorage": false, - "FormData": false, - "inject": false, - "module": false, - "document": false, - "$": false, - "moment": false - } + "immed": true, + "indent": 4, + "latedef": "nofunc", + "laxbreak": true, + "maxdepth": 4, + "maxparams": 5, + "newcap": true, + "noarg": true, + "nonbsp": true, + "nonew": true, + "proto": true, + "quotmark": "single", + "undef": false, + "unused": "strict", + "white": true } diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000..93df81a3 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,22 @@ +language: node_js + +notifications: + slack: + rooms: + - secure: "DdtU4qimOtkilUhk3JbKgqmceemoeZ6NgBOK408wi/UP+YNKc1g/zbh0cRF8xoMxUTKOnV1xn7p5MbXRkLbG0jbLiSSdZNkte83GKI+rHmHq5IF+wAcXrwLO+oSFaUDdkQREqMwgPoiQw1OhrMROWj2IW0ynbv08Lr9TfN+jlK4Oj4JEIOb2xNSHgqJexBWKR+qg3JPdSL2kbY6J1PZZ6gqvopQUYOO0toziyUiqdcVpzPBxn6fufL9URybOJdLJI9qnosBNCzzhe8NWoqxNwCLCnF4Pu01249edmtViFFO+ayipfcF+qwiPAcWXgXYl1raRA6h59WDN+Qv/XjHZDXZTJccSXi7tX1J+OelF2S3Tz4HgAKpn+cbmm6VwtrNdsRxHIxuRCaAPBp/SciuLoF0NtwGtXpes1T2cFku1lPDV3/j6FVeMJUHCYF7birjRroY1jveURJxRaKDclmO5UgxYMx2uiO9vltNRgsaKtBtFvkA5oBHxwm6guCRlDI8Vz6VbgvRfA9JC4Cbnoeokmrrea+gcXS35Lh+FdjEPtpSbzeajHwZRxEOmSjwTF/TDH6RItB41jv5YNuTMt+E8uW3585NVcgILQMNFThP5WadwZVRuzVt/3/Zpdx9n/uGqubBgV6UMT+mhuHmyV6NlyO71s4aAMv/XW0zVz6hvggc=" + +branches: + only: + - development + +before_script: + - npm install gulp -g + - npm install bower -g + +script: + - bower install + - gulp travis:build + +after_success: + - npm install codeclimate-test-reporter -g + - CODECLIMATE_REPO_TOKEN=process.env.CODECLIMATE_REPO_TOKEN codeclimate-test-reporter < reports/lcov/lcov.info \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..5d052137 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,8 @@ +# Contributing +Coming soon... + +## (Internal) Before Committing +* Make sure to write karma/protractor tests for any new code +* Run `gulp test` - fix any errors +* Run `gulp protractor` - fix any errors +* Push! \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..774f4729 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2015 Bullhorn + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index 5327c573..33611bb6 100644 --- a/README.md +++ b/README.md @@ -1,36 +1,74 @@ -# Bullhorn - Career Portal - -## Prerequisites -You will need the following things properly installed on your computer. - -* [Git](http://git-scm.com/) -* [Node.js](http://nodejs.org/) -* Bower `npm install -g bower` -* Gulp `npm install -g gulp` - -## Installation -* `git clone REPO` -* `cd career-portal` -* `npm install && bower install` - -## Running / Development -* `gulp serve` - runs the client with live-reload - -## Before Committing -* Make sure to write karma/protractor tests for any new code -* Run `gulp test` - fix any errors -* Run `gulp protractor` - fix any errors -* Push! - -### All GULP Tasks Available -* `gulp` or `gulp build` to build an optimized version of your application in `/dist` -* `gulp serve` to launch a browser sync server on your source files (will also build the extension on changes too) -* `gulp serve:dist` to launch a server on your optimized application -* `gulp test` to launch your unit tests with Karma -* `gulp test:auto` to launch your unit tests with Karma in watch mode -* `gulp protractor` to launch your e2e tests with Protractor -* `gulp protractor:dist` to launch your e2e tests with Protractor on the dist files - -### "Nice-To-Have" Utilities -* [NPM-Check-Updates](https://github.com/tjunnone/npm-check-updates) - Checks for updates of node modules with CLI -* [Bower-Check-Updates](https://github.com/se-panfilov/bower-check-updates) - Checks for updates of bower dependencies with CLI +# Bullhorn Career Portal +A Bullhorn Platform SDK sample. Allow candidates to search for and apply to jobs. + +[![Build Status](https://travis-ci.org/bullhorn/career-portal.svg?branch=development)](https://travis-ci.org/bullhorn/career-portal) +[![Dependency Status](https://gemnasium.com/bullhorn/career-portal.svg)](https://gemnasium.com/bullhorn/career-portal) +[![Code Climate](https://codeclimate.com/github/bullhorn/career-portal/badges/gpa.svg)](https://codeclimate.com/github/bullhorn/career-portal) +[![Test Coverage](https://codeclimate.com/github/bullhorn/career-portal/badges/coverage.svg)](https://codeclimate.com/github/bullhorn/career-portal/coverage) + +[Bullhorn Career Portal](http://www.bullhornt.com/) is the next-generation way to share jobs and source candidates from your Bullhorn ATS/CRM instance. Download, configure and host your own career portal, or fork the source code and make it your own. + +## Releases + +[Latest Stable Version](https://github.com/bullhorn/career-portal/releases/tag/v0.9.1) + +Prior Versions +* [v0.9.0](https://github.com/bullhorn/career-portal/releases/tag/v0.9.0) +* [v0.0.0](https://github.com/bullhorn/career-portal/releases/tag/v0.0.0) + +## Contribute + +There are many ways to [contribute](https://github.com/bullhorn/career-portal/blob/master/CONTRIBUTING.md) to Bullhorn Career Portal. +* [Submit bugs](https://github.com/bullhorn/career-portal/issues) and help us verify fixes as they are checked in. +* Review the [source code changes](https://github.com/bullhorn/career-portal/pulls). +* [Contribute bug fixes](https://github.com/bullhorn/career-portal/blob/master/CONTRIBUTING.md). + +## Documentation + +* [Hosting](http://www.bullhorn.com) +* [Bullhorn REST API Reference](http://developer.bullhorn.com/articles/getting_started) +* [Bullhorn Platform](http://bullhorn.github.io/platform/) +* [Homepage](http://www.bullhorn.com/) + +## Building + +In order to build the Bullhorn Career Portal, ensure that you have [Git](http://git-scm.com/downloads) and [Node.js](http://nodejs.org/) installed. + +Clone a copy of the repo: + +``` +git clone https://github.com/bullhorn/career-portal.git +``` + +Change to the Career Portal directory: + +``` +cd career-portal +``` + +Install build tools and dev dependencies: + +``` +npm install -g bower +npm install -g gulp +npm install +bower install + +``` + +Use one of the following to build and test: + +``` +gulp # Build an optimized version of Career Portal in `/dist` +gulp build # Build an optimized version of Career Portal in `/dist` +gulp serve # Launch a BrowserSync server on source files, building extensions on changes +gulp serve:dist # Launch a server on optimized version of Career Portal +gulp test # Execute unit tests with Karma +gulp test:auto # Execute unit tests with Karma in watch mode +gulp protractor # Execute e2e tests with Protractor +gulp protractor:dist # Execute e2e tests with Protractor on build output +``` + +### Additional Utilities +* [NPM-Check-Updates](https://github.com/tjunnone/npm-check-updates) # Checks for updates of node modules with CLI +* [Bower-Check-Updates](https://github.com/se-panfilov/bower-check-updates) # Checks for updates of bower dependencies with CLI diff --git a/bower.json b/bower.json index cb01f664..7a9c7f79 100644 --- a/bower.json +++ b/bower.json @@ -1,26 +1,28 @@ { "name": "CareerPortal", "version": "0.9.1", + "version": "1.0.0", "dependencies": { - "angular": "~1.4.0", - "angular-animate": "~1.4.0", + "angular": "~1.4.3", + "angular-animate": "~1.4.3", + "angular-deferred-bootstrap": "~0.1.7", "angular-localization": "~1.2.1", - "angular-sanitize": "~1.4.0", + "angular-sanitize": "~1.4.3", "angular-tooltips": "~0.1.18", - "angular-touch": "~1.4.0", + "angular-touch": "~1.4.3", "angular-ui-router": "~0.2.15", - "bullhorn-icons": "git@github.com:bullhorn/bullhorn-icons.git#development", - "moment": "~2.10.5", + "bullhorn-icons": "~1.0.1", + "moment": "~2.10.6", "ng-fastclick": "~1.0.1", - "ng-file-upload": "~6.0.2", + "ng-file-upload": "~6.0.4", "normalize.css": "~3.0.3", "roboto-fontface": "~0.4.3", - "angular-deferred-bootstrap": "~0.1.7" + "ng-device-detector": "~1.1.8" }, "devDependencies": { - "angular-mocks": "~1.4.0" + "angular-mocks": "~1.4.3" }, "resolutions": { - "angular": "~1.4.0" + "angular": "~1.4.3" } } diff --git a/build/build.js b/build/build.js index 0ca2161f..d0c9d904 100644 --- a/build/build.js +++ b/build/build.js @@ -33,9 +33,9 @@ gulp.task('html', ['inject', 'partials'], function () { addRootSlash: false }; - var htmlFilter = $.filter('*.html'); - var jsFilter = $.filter('**/*.js'); - var cssFilter = $.filter('**/*.css'); + var htmlFilter = $.filter('*.html', {restore: true}); + var jsFilter = $.filter('**/*.js', {restore: true}); + var cssFilter = $.filter('**/*.css', {restore: true}); var assets; return gulp.src(path.join(conf.paths.tmp, '/serve/*.html')) @@ -44,11 +44,11 @@ gulp.task('html', ['inject', 'partials'], function () { .pipe($.rev()) .pipe(jsFilter) .pipe($.ngAnnotate()) - //.pipe($.uglify({ preserveComments: $.uglifySaveLicense })).on('error', conf.errorHandler('Uglify')) - .pipe(jsFilter.restore()) + .pipe($.uglify({ preserveComments: $.uglifySaveLicense })).on('error', conf.errorHandler('Uglify')) + .pipe(jsFilter.restore) .pipe(cssFilter) .pipe($.csso()) - .pipe(cssFilter.restore()) + .pipe(cssFilter.restore) .pipe(assets.restore()) .pipe($.useref()) .pipe($.revReplace()) @@ -59,7 +59,7 @@ gulp.task('html', ['inject', 'partials'], function () { quotes: true, conditionals: true })) - .pipe(htmlFilter.restore()) + .pipe(htmlFilter.restore) .pipe(gulp.dest(path.join(conf.paths.dist, '/'))) .pipe($.size({title: path.join(conf.paths.dist, '/'), showFiles: true})); }); diff --git a/gulpfile.js b/gulpfile.js index 8cb9ef06..0edc7b1c 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -31,6 +31,10 @@ gulp.task('jenkins:build', function (done) { runSequence('clean', 'build', 'version', 'test:jenkins', 'report:plato', done); }); +gulp.task('travis:build', function (done) { + runSequence('clean', 'build', 'test:jenkins', done); +}); + gulp.task('version', function () { var pkg = JSON.parse(fs.readFileSync('./package.json')); var data = ''; diff --git a/jsconfig.json b/jsconfig.json new file mode 100644 index 00000000..563b19ef --- /dev/null +++ b/jsconfig.json @@ -0,0 +1,5 @@ +{ + "compilerOptions": { + "target": "ES6" + } +} \ No newline at end of file diff --git a/package.json b/package.json index 20cdc430..fc808cab 100644 --- a/package.json +++ b/package.json @@ -1,65 +1,65 @@ { "name": "CareerPortal", - "version": "0.0.1", - "dependencies": {}, - "scripts": { - "test": "gulp test" - }, + "version": "1.0.0", "devDependencies": { - "babel-core": "~5.5.8", - "babel-loader": "~5.1.4", - "browser-sync": "~2.7.12", + "babel-core": "~5.8.21", + "babel-loader": "~5.3.2", + "browser-sync": "~2.8.2", "browser-sync-spa": "~1.0.2", - "chalk": "~1.0.0", + "chalk": "~1.1.0", "concat-stream": "~1.5.0", "dateformat": "^1.0.11", "del": "~1.2.0", "gulp": "^3.9.0", - "gulp-angular-templatecache": "~1.6.0", + "gulp-angular-templatecache": "~1.7.0", "gulp-autoprefixer": "~2.3.1", "gulp-babel": "^5.2.0", "gulp-csso": "~1.0.0", - "gulp-filter": "~2.0.2", - "gulp-flatten": "~0.0.4", - "gulp-inject": "~1.3.1", - "gulp-jshint": "~1.11.0", + "gulp-filter": "~3.0.0", + "gulp-flatten": "~0.1.1", + "gulp-inject": "~1.5.0", + "gulp-jshint": "~1.11.2", "gulp-load-plugins": "~0.10.0", - "gulp-minify-html": "~1.0.3", - "gulp-ng-annotate": "~1.0.0", + "gulp-minify-html": "~1.0.4", + "gulp-ng-annotate": "~1.1.0", "gulp-protractor": "~1.0.0", "gulp-rename": "~1.2.2", - "gulp-replace": "~0.5.3", - "gulp-rev": "~5.0.0", + "gulp-replace": "~0.5.4", + "gulp-rev": "~5.1.0", "gulp-rev-replace": "~0.4.2", - "gulp-sass": "~2.0.1", - "gulp-size": "~1.2.1", + "gulp-sass": "~2.0.4", + "gulp-size": "~1.2.3", "gulp-sourcemaps": "~1.5.2", "gulp-uglify": "~1.2.0", - "gulp-useref": "~1.2.0", - "gulp-util": "~3.0.5", + "gulp-useref": "~1.3.0", + "gulp-util": "~3.0.6", "gulp-webpack": "~1.5.0", - "http-proxy-middleware": "~0.0.5", + "http-proxy-middleware": "~0.5.0", "jscs-loader": "^0.2.0", "jshint-loader": "~0.8.3", - "jshint-stylish": "~2.0.0", + "jshint-summary": "^0.4.0", "json-loader": "^0.5.2", - "karma": "~0.12.36", - "karma-coverage": "^0.4.2", - "karma-jasmine": "~0.3.5", + "karma": "~0.13.8", + "karma-coverage": "^0.5.0", + "karma-jasmine": "~0.3.6", "karma-ng-html2js-preprocessor": "~0.1.2", - "karma-phantomjs-launcher": "~0.2.0", - "lodash": "~3.9.3", - "main-bower-files": "~2.8.0", - "merge-stream": "~0.1.7", + "karma-phantomjs-launcher": "~0.2.1", + "lodash": "~3.10.1", + "main-bower-files": "~2.9.0", + "merge-stream": "~0.1.8", "plato": "^1.5.0", "require-dir": "~0.3.0", "run-sequence": "^1.1.2", "uglify-save-license": "~0.4.1", "wiredep": "~2.2.2", "wrench": "~1.5.8", - "yargs": "^3.17.1" + "yargs": "^3.18.0" }, "engines": { "node": ">=0.10.0" + }, + "repository": { + "type": "git", + "url": "https://github.com/bullhorn/career-portal.git" } } diff --git a/src/app/detail/detail.controller.js b/src/app/detail/detail.controller.js index 61ea3b0b..83cb9349 100644 --- a/src/app/detail/detail.controller.js +++ b/src/app/detail/detail.controller.js @@ -1,4 +1,5 @@ class JobDetailController { + /* jshint -W072 */ constructor($window, $location, ShareService, SearchService, SharedData, job, moment) { 'ngInject'; @@ -16,6 +17,7 @@ class JobDetailController { // Set the view state this.SharedData.viewState = 'overview-open'; } + /* jshint +W072 */ shareFacebook(job) { return this.ShareService.facebook(job); diff --git a/src/app/detail/detail.html b/src/app/detail/detail.html index 3baa7e9b..b5d393ac 100644 --- a/src/app/detail/detail.html +++ b/src/app/detail/detail.html @@ -1,6 +1,6 @@
- {{'common.addedLabel' | i18n}} - {{::detail.getDisplayDate(detail.job.dateLastPublished)}} + {{'common.addedLabel' | i18n}} - {{::detail.getDisplayDate(detail.job.dateLastPublished)}} {{::detail.job.title}} diff --git a/src/app/filters/striphtml.filter.js b/src/app/filters/striphtml.filter.js index da949102..18332b0a 100644 --- a/src/app/filters/striphtml.filter.js +++ b/src/app/filters/striphtml.filter.js @@ -13,12 +13,14 @@ class StripHtml { if (semicolonIndex > 0) { var entity = s.substring(i + 1, semicolonIndex); if (entity.length > 1 && entity.charAt(0) === '#') { + /* jshint -W073 */ if (entity.charAt(1) === 'x' || entity.charAt(1) === 'X') { ch = String.fromCharCode('0' + entity.substring(1)); - } //jshint ignore:line + } else { ch = String.fromCharCode(entity.substring(1)); - } //jshint ignore:line + } + /* jshint +W073 */ } else { switch (entity) { case ' quot ': diff --git a/src/app/header/header.directive.js b/src/app/header/header.directive.js index 0d60aeda..7ec88832 100644 --- a/src/app/header/header.directive.js +++ b/src/app/header/header.directive.js @@ -9,9 +9,15 @@ class CareerPortalHeaderController { toggleFilters() { var $portalCanvas = document.querySelector('.portal-canvas'); + var $mask = document.querySelector('#mask'); + if ($portalCanvas) { $portalCanvas.classList.toggle('show-nav'); } + + if ($mask) { + $mask.classList.toggle('active'); + } } goBack() { diff --git a/src/app/header/header.scss b/src/app/header/header.scss index 328c2a37..5dc841b1 100644 --- a/src/app/header/header.scss +++ b/src/app/header/header.scss @@ -38,6 +38,7 @@ header.app { > button.toggle-filters { display: inline-block; + z-index: $header-z-index + 1; > .badge { position: absolute; diff --git a/src/app/index.module.js b/src/app/index.module.js index 3f01d289..c47e0bad 100644 --- a/src/app/index.module.js +++ b/src/app/index.module.js @@ -18,7 +18,7 @@ import SharedData from './services/shared.factory'; import StripHtmlFilter from './filters/striphtml.filter'; import OmitFiltersFilter from './filters/omitfilters.filter'; -angular.module('CareerPortal', ['ngAnimate', 'ngTouch', 'ngSanitize', 'ui.router', 'ngFileUpload', '720kb.tooltips', 'ng-fastclick', 'ngLocalize', 'ngLocalize.Config', 'ngLocalize.InstalledLanguages', 'ngLocalize.Events']) +angular.module('CareerPortal', ['ngAnimate', 'ngTouch', 'ngSanitize', 'ui.router', 'ngFileUpload', '720kb.tooltips', 'ng.deviceDetector', 'ng-fastclick', 'ngLocalize', 'ngLocalize.Config', 'ngLocalize.InstalledLanguages', 'ngLocalize.Events']) .constant('moment', moment) .constant('localeConf', {}) .constant('localeSupported', []) diff --git a/src/app/index.route.js b/src/app/index.route.js index cfc97944..bdc72d3a 100644 --- a/src/app/index.route.js +++ b/src/app/index.route.js @@ -14,7 +14,7 @@ function routerConfig($stateProvider, $urlRouterProvider) { controller: 'JobDetailController', controllerAs: 'detail', resolve: { - job: function (SearchService, $stateParams, $q, $log, $location) { + job: function (SearchService, $stateParams, $q, $location) { var deferred = $q.defer(); SearchService.loadJobData($stateParams.id, function (job) { diff --git a/src/app/index.scss b/src/app/index.scss index 0b55d338..7e953eff 100644 --- a/src/app/index.scss +++ b/src/app/index.scss @@ -166,4 +166,24 @@ div.no-data-message { content: " "; clear: both; height: 0; +} + +.mask { + position: fixed; + z-index: $header-z-index; + top: 0; + left: 0; + overflow: hidden; + width: 0; + height: 0; + background-color: #000; + opacity: 0; + transition: opacity 0.3s, width 0s 0.3s, height 0s 0.3s; + + &.active { + width: 100%; + height: 100%; + opacity: 0.2; + transition: opacity 0.3s; + } } \ No newline at end of file diff --git a/src/app/list/list.controller.js b/src/app/list/list.controller.js index c3ed61c1..c1352058 100644 --- a/src/app/list/list.controller.js +++ b/src/app/list/list.controller.js @@ -15,7 +15,7 @@ class JobListController { var now = moment(); if (now.diff(momentDate, 'days') > 1) { - return momentDate.format('MM/DD/YY h:mm a'); + return momentDate.format('MM/DD/YY'); } return momentDate.fromNow(); } diff --git a/src/app/list/list.html b/src/app/list/list.html index 4c7627f4..22646b1e 100644 --- a/src/app/list/list.html +++ b/src/app/list/list.html @@ -4,7 +4,7 @@

diff --git a/src/app/modal/modal.directive.js b/src/app/modal/modal.directive.js index 991d41ec..1a2c30e0 100644 --- a/src/app/modal/modal.directive.js +++ b/src/app/modal/modal.directive.js @@ -1,5 +1,6 @@ class CareerPortalModalController { - constructor(SharedData, $location, SearchService, ApplyService, configuration, locale, $filter) { + /* jshint -W072 */ + constructor(SharedData, $location, SearchService, ApplyService, configuration, locale, $filter, detectUtils) { 'ngInject'; this.SharedData = SharedData; @@ -9,12 +10,15 @@ class CareerPortalModalController { this.configuration = configuration; this.locale = locale; this.$filter = $filter; + this.isMobile = detectUtils.isMobile(); // Initialize the model this.ApplyService.initializeModel(); this.closeModal(); } + /* jshint +W072 */ + closeModal(applyForm) { this.SharedData.modalState = 'closed'; this.showForm = true; diff --git a/src/app/modal/modal.html b/src/app/modal/modal.html index 40680812..96faa0ba 100644 --- a/src/app/modal/modal.html +++ b/src/app/modal/modal.html @@ -62,7 +62,7 @@

{{'modal.successSubHeading' | i18n}}

{{'modal.resumeFilePlaceholder' | i18n}} - + {{modal.resumeUploadErrorMessage}} diff --git a/src/app/modal/modal.scss b/src/app/modal/modal.scss index 90392ea8..b800360f 100644 --- a/src/app/modal/modal.scss +++ b/src/app/modal/modal.scss @@ -14,13 +14,13 @@ margin: auto; height: 100%; width: 100%; - max-width: 500px; background: $white; box-shadow: 0px 1px 10px rgba(0, 0, 0, 0.35); overflow: hidden; position: relative; @include tablet() { + max-width: 500px; margin: 80px auto; height: auto; @@ -37,13 +37,17 @@ > header { background: $primary; - padding: 1em 3em 2em 2em; + padding: 0.5em 3em 1.3em 1em; display: block; color: $white; height: auto; position: relative; text-align: left; + @include tablet() { + padding: 1em 3em 2em 2em; + } + > section { > h2 { font-size: 1.8em; @@ -94,15 +98,18 @@ } > div.main { - padding: 1em 1em 60px; + padding: 1em; + overflow: auto; + height: calc(100% - 60px - 120px); @include tablet() { padding: 2em 2em; + height: auto; } > form.apply-form { > div.form-field { - margin: 1.5em 0; + margin: 1em 0; @include desktop() { margin: 2em 0; @@ -188,14 +195,6 @@ color: lighten($dark-bg, 20%); } - > .field-label { - display: none; - - @include desktop() { - display: inline-block; - } - } - > .error { margin-top: 0; float: right; diff --git a/src/app/services/share.service.js b/src/app/services/share.service.js index c12b79bf..21b737b4 100644 --- a/src/app/services/share.service.js +++ b/src/app/services/share.service.js @@ -21,7 +21,7 @@ class ShareService { get requestParams() { return this._.requestParams || (this._.requestParams = { - facebook: () => '?display=popup&app_id=' + this.config.keys.facebook + '&href=' + encodeURIComponent(window.location.href) + '&redirect_uri=' + encodeURIComponent(window.location.href), + facebook: () => '?display=popup&app_id=' + this.config.keys.facebook + '&href=' + encodeURIComponent(window.location.href) + '&redirect_uri=' + encodeURIComponent('https://www.facebook.com/'), twitter: job => '?text=' + encodeURIComponent(this.description(job)) + '&url=' + encodeURIComponent(window.location.href), linkedin: job => '?mini=true&source=Bullhorn%20Carrer%20Portal&title=' + encodeURIComponent(this.description(job)) + '&url=' + encodeURIComponent(window.location.href), email: job => '?subject=' + encodeURIComponent(job.title) + '&body=' + this.description(job, window.location.href) @@ -53,4 +53,4 @@ class ShareService { } } -export default ShareService; \ No newline at end of file +export default ShareService; diff --git a/src/app/sidebar/sidebar.directive.js b/src/app/sidebar/sidebar.directive.js index 2d8af3e0..0ab1973d 100644 --- a/src/app/sidebar/sidebar.directive.js +++ b/src/app/sidebar/sidebar.directive.js @@ -1,5 +1,5 @@ class CareerPortalSidebarController { - constructor(SharedData, $location, SearchService, $timeout) { + constructor($scope, SharedData, $location, SearchService, $timeout) { 'ngInject'; this.SharedData = SharedData; @@ -16,6 +16,14 @@ class CareerPortalSidebarController { // Set the grid state this.SharedData.gridState = 'list-view'; + + $scope.$watchCollection(angular.bind(this, function () { + return this.SearchService.searchParams.category; + }), this.updateFilterCountsAnonymous()); + + $scope.$watchCollection(angular.bind(this, function () { + return this.SearchService.searchParams.location; + }), this.updateFilterCountsAnonymous()); } updateLocationLimitTo(value) { diff --git a/src/app/sidebar/sidebar.html b/src/app/sidebar/sidebar.html index 04e646ad..8fa2d052 100644 --- a/src/app/sidebar/sidebar.html +++ b/src/app/sidebar/sidebar.html @@ -28,7 +28,7 @@

{{'sidebar.locationSectionHeading' | i18n}}

-
+
{{location.idCount}} diff --git a/src/app/sidebar/sidebar.scss b/src/app/sidebar/sidebar.scss index 14c0d757..ae4a16b8 100644 --- a/src/app/sidebar/sidebar.scss +++ b/src/app/sidebar/sidebar.scss @@ -106,6 +106,10 @@ aside { &:focus { outline: none; } + + &::-ms-clear { + display: none; + } } } diff --git a/src/favicon.ico b/src/favicon.ico index 5e6bfbef..be2256c2 100644 Binary files a/src/favicon.ico and b/src/favicon.ico differ