diff --git a/README.md b/README.md
index c0764a85..f03b3420 100644
--- a/README.md
+++ b/README.md
@@ -8,12 +8,12 @@ Setup initial environment
Install requirements:
-.. code-block:: console
-
- sudo npm install -g gulp
- npm install
- sudo npm install -g bower
- bower install
- gulp
+```bash
+sudo npm install -g gulp
+npm install
+sudo npm install -g bower
+bower install
+gulp
+```
And go in your browser to: http://localhost:8080/
diff --git a/app/fonts/taiga.eot b/app/fonts/taiga.eot
index 7c1775dd..74a60d0f 100644
Binary files a/app/fonts/taiga.eot and b/app/fonts/taiga.eot differ
diff --git a/app/fonts/taiga.svg b/app/fonts/taiga.svg
index 07f72bc7..ee2f5202 100644
--- a/app/fonts/taiga.svg
+++ b/app/fonts/taiga.svg
@@ -25,4 +25,6 @@
+
+
diff --git a/app/fonts/taiga.ttf b/app/fonts/taiga.ttf
index b6400351..0dfcb41e 100644
Binary files a/app/fonts/taiga.ttf and b/app/fonts/taiga.ttf differ
diff --git a/app/fonts/taiga.woff b/app/fonts/taiga.woff
index 9203115f..9b870813 100644
Binary files a/app/fonts/taiga.woff and b/app/fonts/taiga.woff differ
diff --git a/app/search.jade b/app/search.jade
new file mode 100644
index 00000000..43de05f0
--- /dev/null
+++ b/app/search.jade
@@ -0,0 +1,13 @@
+extends layout
+
+block head
+ title Taiga Project management web application with scrum in mind!
+
+block content
+ sidebar.menu-secondary.sidebar
+ include views/modules/search-in
+
+ section.main.search-result
+ include views/components/mainTitle
+ include views/modules/search-filter
+ include views/modules/search-result-table
\ No newline at end of file
diff --git a/app/styles/components/taskboard-task.scss b/app/styles/components/taskboard-task.scss
new file mode 100644
index 00000000..c5369db4
--- /dev/null
+++ b/app/styles/components/taskboard-task.scss
@@ -0,0 +1,72 @@
+.taskboard-task {
+ background: $postit;
+ margin-bottom: 1rem;
+ position: relative;
+ .taskboard-tagline {
+ @include table-flex();
+ }
+ .taskboard-tag {
+ @include table-flex-child(1, 0, 0, 0);
+ background: $postit-hover; //Fallback
+ height: .3rem;
+ }
+ .taskboard-task-inner {
+ @include table-flex();
+ padding: 1rem .5rem;
+ }
+ .avatar {
+ @include table-flex-child($flex-basis: 50px);
+ a {
+ @extend %small;
+ text-align: center;
+ }
+ img {
+ margin: 0 auto;
+ }
+ figcaption {
+ display: block;
+ overflow: hidden;
+ position: relative;
+ text-overflow: ellipsis;
+ top: 4px;
+ white-space: nowrap;
+ width: 50px;
+ }
+ }
+ .task-num {
+ color: $postit-hover;
+ margin-right: .5em;
+ }
+ .taskboard-text {
+ @include table-flex-child($flex-grow: 10, $flex-basis: 50px, $width: 100px);
+ }
+ .icon-edit,
+ .icon-drag-h {
+ @extend %large;
+ bottom: .2rem;
+ color: $postit-hover;
+ display: none;
+ position: absolute;
+ &:hover {
+ @include transition(color, .3s, linear);
+ color: darken($postit-hover, 15%);
+ }
+ }
+ .icon-edit {
+ right: .5rem;
+ }
+ .icon-drag-h {
+ @extend %xlarge;
+ right: 45%;
+ }
+ &:hover {
+ .icon-edit,
+ .icon-drag-h {
+ display: block;
+ }
+ }
+}
+
+.task-drag {
+ @include box-shadow();
+}
diff --git a/app/styles/dependencies/colors.scss b/app/styles/dependencies/colors.scss
index 1a039f3f..952649ad 100755
--- a/app/styles/dependencies/colors.scss
+++ b/app/styles/dependencies/colors.scss
@@ -21,3 +21,6 @@ $button-green: #699b05;
$button-green-hover: #9dce0a;
$button-gray: #585858;
$button-gray-hover: #879b89;
+
+$postit: #fff0c5;
+$postit-hover: #e3d6b0;
diff --git a/app/styles/dependencies/helpers.scss b/app/styles/dependencies/helpers.scss
index 1561a7bb..667f4ab3 100644
--- a/app/styles/dependencies/helpers.scss
+++ b/app/styles/dependencies/helpers.scss
@@ -3,6 +3,23 @@
box-sizing: border-box;
}
+//Flexbox FTW
+%table-flex {
+ align-content: stretch;
+ align-items: stretch;
+ display: flex;
+ flex-direction: row;
+ flex-wrap: wrap;
+ justify-content: flex-start;
+}
+
+%table-flex-child {
+ flex-basis: 300px;
+ flex-grow: 1;
+ flex-shrink: 0;
+ width: 300px;
+}
+
// #Reset & Basics (Inspired by E. Meyers)
//==================================================
a,
diff --git a/app/styles/dependencies/mixins.scss b/app/styles/dependencies/mixins.scss
index ff163963..be90c214 100644
--- a/app/styles/dependencies/mixins.scss
+++ b/app/styles/dependencies/mixins.scss
@@ -8,3 +8,27 @@
@mixin background-opacity($color: $white, $opacity: .3) {
background: rgba($color, $opacity);
}
+
+// Table Flex - http://devbryce.com/site/flexbox/
+@mixin table-flex() {
+ align-content: stretch;
+ align-items: stretch;
+ display: flex;
+ flex-direction: row;
+ flex-wrap: wrap;
+ justify-content: flex-start;
+}
+
+@mixin table-flex-child($flex-grow: 1, $flex-basis: 300px, $flex-shrink: 0, $width:'') {
+ flex-basis: $flex-basis;
+ flex-grow: $flex-grow;
+ flex-shrink: $flex-shrink;
+ width: $flex-basis;
+ @if #{$width} != null {
+ width: #{$width};
+ }
+}
+
+@mixin box-shadow($h-shadow: 1px, $v-shadow: 1px, $blur: 15px, $spread: 6px, $color: rgba(0, 0, 0, .1)) {
+ box-shadow: $h-shadow $v-shadow $blur $spread $color;
+}
diff --git a/app/styles/dependencies/typography.scss b/app/styles/dependencies/typography.scss
index 37a91b5d..a3cfa641 100755
--- a/app/styles/dependencies/typography.scss
+++ b/app/styles/dependencies/typography.scss
@@ -168,3 +168,9 @@ a:visited {
.icon-iocaine:before {
content: 'r';
}
+.icon-drag-h:before {
+ content: 's';
+}
+.icon-drag-v:before {
+ content: 't';
+}
diff --git a/app/styles/main.scss b/app/styles/main.scss
index ee2b8b27..a4d2d3bf 100755
--- a/app/styles/main.scss
+++ b/app/styles/main.scss
@@ -23,6 +23,7 @@ $prefix-for-spec: true;
@import 'components/popover';
@import 'components/tag';
@import 'components/filter';
+@import 'components/taskboard-task';
//Layout
@import 'layout/base';
@@ -38,6 +39,8 @@ $prefix-for-spec: true;
@import 'modules/filters';
@import 'modules/lightbox';
@import 'modules/taskboard-table';
+@import 'modules/search-filter';
+@import 'modules/search-result-table';
// Responsive
@import 'responsive/mobile';
diff --git a/app/styles/modules/backlog-table.scss b/app/styles/modules/backlog-table.scss
index 6a5d0096..ac605440 100644
--- a/app/styles/modules/backlog-table.scss
+++ b/app/styles/modules/backlog-table.scss
@@ -13,7 +13,7 @@
flex-direction: row;
flex-wrap: nowrap;
justify-content: flex-start;
- padding: .5em 0;
+ padding: 1rem 0 1rem 1rem;
text-align: left;
width: 100%;
@for $i from 1 through 8 {
diff --git a/app/styles/modules/search-filter.scss b/app/styles/modules/search-filter.scss
new file mode 100644
index 00000000..f7c4db00
--- /dev/null
+++ b/app/styles/modules/search-filter.scss
@@ -0,0 +1,24 @@
+.search-filter {
+ ul {
+ border-bottom: 3px solid $gray-light;
+ display: flex;
+ padding-bottom: .5rem;
+ }
+ li {
+ margin-right: 1rem;
+ }
+ a {
+ @extend %large;
+ font-family: 'ostrichSans';
+ opacity: .2;
+ &.active,
+ &:hover {
+ @include transition (opacity .3s linear);
+ color: $blackish;
+ opacity: 1;
+ }
+ }
+ .icon {
+ margin-right: .4rem;
+ }
+}
diff --git a/app/styles/modules/search-result-table.scss b/app/styles/modules/search-result-table.scss
new file mode 100644
index 00000000..a0140714
--- /dev/null
+++ b/app/styles/modules/search-result-table.scss
@@ -0,0 +1,72 @@
+.search-result-table {
+ align-content: stretch;
+ align-items: center;
+ display: flex;
+ flex-direction: column;
+ flex-wrap: wrap;
+ justify-content: flex-start;
+ width: 100%;
+ .row {
+ align-content: stretch;
+ align-items: stretch;
+ display: flex;
+ flex-direction: row;
+ flex-wrap: nowrap;
+ justify-content: flex-start;
+ padding: 1rem 0 1rem 1rem;
+ text-align: left;
+ width: 100%;
+ @for $i from 1 through 8 {
+ .width-#{$i} {
+ flex-basis: 50px;
+ flex-grow: $i;
+ flex-shrink: 0;
+ }
+ }
+ &:hover {
+ background: lighten($green-taiga, 60%);
+ @include transition (background .2s ease-in);
+ }
+ }
+ .row-selected {
+ background: lighten($green-taiga, 60%);
+ @include transition (background .2s ease-in);
+ }
+ .user-story-name {
+ flex-basis: 500px;
+ input {
+ vertical-align: top;
+ }
+ span {
+ display: inline-block;
+ max-width: 70%;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ }
+ .icon {
+ @extend %medium;
+ color: $gray-light;
+ &:hover {
+ color: $grayer;
+ @include transition (color .3s linear);
+ }
+ }
+ }
+ .title {
+ @extend %medium;
+ border-bottom: 1px solid $gray-light;
+ font-family: 'DroidSans-Bold';
+ &:hover {
+ background: transparent;
+ }
+ }
+ .table-main {
+ @extend %small;
+ border-bottom: 1px solid $gray-light;
+ }
+ .status,
+ .points {
+ position: relative;
+ }
+}
diff --git a/app/styles/modules/taskboard-table.scss b/app/styles/modules/taskboard-table.scss
index 4c5c85b6..e75994bf 100644
--- a/app/styles/modules/taskboard-table.scss
+++ b/app/styles/modules/taskboard-table.scss
@@ -1,19 +1,3 @@
-%table-flex {
- align-content: stretch;
- align-items: stretch;
- display: flex;
- flex-direction: row;
- flex-wrap: wrap;
- justify-content: flex-start;
-}
-
-%table-flex-child {
- flex-basis: 300px;
- flex-grow: 1;
- flex-shrink: 0;
- width: 300px;
-}
-
.taskboard-table {
overflow: hidden;
width: 100%;
diff --git a/app/views/components/taskboard-task.jade b/app/views/components/taskboard-task.jade
new file mode 100644
index 00000000..0451cd19
--- /dev/null
+++ b/app/views/components/taskboard-task.jade
@@ -0,0 +1,14 @@
+div.taskboard-task
+ div.taskboard-tagline
+ - for(var y = 0; y < 3; y++)
+ a.taskboard-tag(href="", title="tasboard-tag")
+ div.taskboard-task-inner
+ figure.avatar
+ a(href="", title="UserName")
+ img.avatar(src="http://thecodeplayer.com/u/uifaces/12.jpg", alt="username")
+ figcaption Username
+ p.taskboard-text
+ span.task-num 125
+ span.task-name Crear usuarios que no sepan que tienen que darse de alta para darse de baja y crear contenido bloqueado o no en la plataforma
+ a.icon.icon-edit(href="", title="Edit")
+ a.icon.icon-drag-h(href="", title="Drag&Drop")
diff --git a/app/views/modules/search-filter.jade b/app/views/modules/search-filter.jade
new file mode 100644
index 00000000..a1e9dd57
--- /dev/null
+++ b/app/views/modules/search-filter.jade
@@ -0,0 +1,31 @@
+section.search-filter
+ ul
+ li
+ a.active(href="#")
+ span.icon.icon-bulk
+ | 20 User Stories
+
+ li
+ a(href="#")
+ span.icon.icon-issues
+ | 3 Issues
+
+ li
+ a(href="#")
+ span.icon.icon-bulk
+ | 23 Task
+
+ li
+ a(href="#")
+ span.icon.icon-wiki
+ | 2 Wiki pages
+
+ li
+ a(href="#")
+ span.icon.icon-edit
+ | 12 Documents
+
+ li
+ a(href="#")
+ span.icon.icon-edit
+ | 3 Users
\ No newline at end of file
diff --git a/app/views/modules/search-in.jade b/app/views/modules/search-in.jade
new file mode 100644
index 00000000..5caa8f5f
--- /dev/null
+++ b/app/views/modules/search-in.jade
@@ -0,0 +1,6 @@
+section.search
+ header
+ form
+ fieldset
+ input(type="text", placeholder="Search in...")
+ a.icon.icon-search(href="", title="search")
diff --git a/app/views/modules/search-result-table.jade b/app/views/modules/search-result-table.jade
new file mode 100644
index 00000000..5ab6d748
--- /dev/null
+++ b/app/views/modules/search-result-table.jade
@@ -0,0 +1,14 @@
+section.search-result-table
+ div.row.title
+ div.user-stories.width-4 User Stories
+ div.status.width-2 Status
+ div.points.width-1 Points
+ div.points.width-1 Sprints
+ - for (var x = 0; x < 50; x++)
+ div.row.table-main
+ div.user-stories.width-4
+ div.user-story-name
+ a(href="") Crear el perfil de usuario Senior en el admin
+ div.status.width-2 Status
+ div.points.width-1 12
+ div.points.width-1 54
\ No newline at end of file
diff --git a/app/views/modules/taskboard-table.jade b/app/views/modules/taskboard-table.jade
index c0063d98..efcabd6f 100644
--- a/app/views/modules/taskboard-table.jade
+++ b/app/views/modules/taskboard-table.jade
@@ -29,4 +29,4 @@ div.taskboard-table
div.taskboard_task-playground.task-column
- for(var x = 0; x < 3; x++)
div.task-row
- //- Include tasks
+ include ../components/taskboard-task
diff --git a/csslintrc.json b/csslintrc.json
index 39936c38..0616cb74 100644
--- a/csslintrc.json
+++ b/csslintrc.json
@@ -18,5 +18,6 @@
"unqualified-attributes": false,
"regex-selectors": false,
"floats": false,
- "fallback-colors": false
+ "fallback-colors": false,
+ "adjoining-classes": false
}
diff --git a/gulpfile.js b/gulpfile.js
index 67155945..4bb24597 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -11,7 +11,8 @@ var gulp = require('gulp'),
notify = require("gulp-notify"),
connect = require('gulp-connect'),
scsslint = require('gulp-scss-lint'),
- newer = require('gulp-newer')
+ newer = require('gulp-newer'),
+ plumber = require('gulp-plumber'),
cache = require('gulp-cached');
var paths = {
@@ -28,9 +29,7 @@ var paths = {
gulp.task('jade', function() {
return gulp.src(paths.jade)
- .on('error', function(err) {
- console.log(err);
- })
+ .pipe(plumber())
.pipe(jade({
pretty: true
}))
diff --git a/package.json b/package.json
index 8545bf31..57bac52d 100644
--- a/package.json
+++ b/package.json
@@ -26,6 +26,7 @@
"gulp-minify-html": "^0.1.3",
"gulp-newer": "^0.3.0",
"gulp-notify": "^1.2.5",
+ "gulp-plumber": "^0.6.2",
"gulp-ruby-sass": "^0.4.3",
"gulp-scss-lint": "0.0.6",
"gulp-styledocco": "0.0.1",