From eaf9f8f763ded31e01c97f36543123df87625674 Mon Sep 17 00:00:00 2001 From: Karl Prieb Date: Tue, 5 Jun 2018 14:02:28 -0300 Subject: [PATCH 01/22] table component --- .../imports/components/modal/directory.css | 53 ++++++++++++------- .../client/imports/components/table.css | 49 ++++++++++++----- .../client/components/table.html | 5 ++ .../rocketchat-ui/client/components/table.js | 4 ++ .../client/views/app/directory.html | 24 ++++----- packages/rocketchat-ui/package.js | 3 ++ 6 files changed, 93 insertions(+), 45 deletions(-) create mode 100644 packages/rocketchat-ui/client/components/table.html create mode 100644 packages/rocketchat-ui/client/components/table.js diff --git a/packages/rocketchat-theme/client/imports/components/modal/directory.css b/packages/rocketchat-theme/client/imports/components/modal/directory.css index bb2b8b6f9ad78..b87fdc906206e 100644 --- a/packages/rocketchat-theme/client/imports/components/modal/directory.css +++ b/packages/rocketchat-theme/client/imports/components/modal/directory.css @@ -16,6 +16,7 @@ min-height: 36px; padding: 0; } + &-search { max-width: 260px; } @@ -34,50 +35,60 @@ .rc-directory-channel { &-wrapper { display: flex; - align-items: center; - margin: 0 -9px; overflow: hidden; + + align-items: center; } &-avatar { - width: 60px; - height: 60px; - margin: 0 9px; flex: 0 0 auto; - background-size: contain; + width: 32px; + height: 32px; + padding: 2px; + background-repeat: no-repeat; background-position: center center; + + background-size: contain; } &-info { display: flex; + overflow: hidden; + flex-direction: column; + width: 1%; - flex-grow: 1; white-space: nowrap; - overflow: hidden; + text-overflow: ellipsis; + flex-grow: 1; } &-name { - font-size: 1rem; - font-weight: 500; - white-space: nowrap; + overflow: hidden; + + white-space: nowrap; + text-overflow: ellipsis; } &-description { - margin-top: 0.625rem; - color: var(--rc-color-primary-light); + overflow: hidden; - text-overflow: ellipsis; + max-width: 200px; + margin-top: 0.625rem; + + text-overflow: ellipsis; + + color: var(--rc-color-primary-light); } &-createdAt { @@ -88,6 +99,7 @@ .rc-directory-content { overflow-x: auto; flex: 1 1 100%; + height: 100vh; & .js-sort { @@ -95,20 +107,23 @@ } } -.rc-table-td--createdAt, -.rc-table-td--users { +.rc-directory-td--createdAt, +.rc-directory-td--users { + + overflow: hidden; + width: 120px; + white-space: nowrap; text-overflow: ellipsis; - overflow: hidden; } -.rc-table-td--users { +.rc-directory-td--users { width: 80px; } @media (width <= 500px) { - .rc-directory-content .rc-table-head { + .rc-directory-content thead { display: none; } diff --git a/packages/rocketchat-theme/client/imports/components/table.css b/packages/rocketchat-theme/client/imports/components/table.css index 3670b60ce6138..37be4f0d2416e 100644 --- a/packages/rocketchat-theme/client/imports/components/table.css +++ b/packages/rocketchat-theme/client/imports/components/table.css @@ -1,38 +1,59 @@ .rc-table { - font-size: 0.875rem; - color: var(--rc-color-primary); width: 100%; + color: var(--rc-color-primary); + + font-size: 0.875rem; + &--fixed { - table-layout:fixed; + table-layout: fixed; } - &-head { + & thead { color: var(--rc-color-primary-light); + & tr { + border-bottom: 1px solid #d8d8d8; + } + + & td { + padding: 0.5rem; + + font-size: 0.75rem; + } + & .rc-icon { fill: var(--rc-color-primary-light); } } - &-body .rc-table-tr { - cursor: pointer; + & tbody { + & tr { + cursor: pointer; - &:hover { - background-color: var(--rc-color-primary-lightest); + &:hover { + background-color: var(--rc-color-primary-lightest); + } } } - &-tr { - box-shadow: 0 1px 2px 0 rgba(31, 35, 41, 0.08); - } + & td { + + padding: 0.25rem 0.5rem; - &-td { - padding: 1.25rem 1rem; vertical-align: middle; + letter-spacing: 0; - &--bold { + font-size: 0.875rem; + + line-height: 1.25rem; + + &.bold { font-weight: 600; } } } + +.tr-dummy { + height: 1rem; +} diff --git a/packages/rocketchat-ui/client/components/table.html b/packages/rocketchat-ui/client/components/table.html new file mode 100644 index 0000000000000..1c0282d55b405 --- /dev/null +++ b/packages/rocketchat-ui/client/components/table.html @@ -0,0 +1,5 @@ + diff --git a/packages/rocketchat-ui/client/components/table.js b/packages/rocketchat-ui/client/components/table.js new file mode 100644 index 0000000000000..8e706ec8b6bff --- /dev/null +++ b/packages/rocketchat-ui/client/components/table.js @@ -0,0 +1,4 @@ +Template.table.onRendered(function() { + const dummyTr = ''; + this.$('tbody').prepend(dummyTr).append(dummyTr); +}); diff --git a/packages/rocketchat-ui/client/views/app/directory.html b/packages/rocketchat-ui/client/views/app/directory.html index 106bb30b1f06d..f6b45aeeec629 100644 --- a/packages/rocketchat-ui/client/views/app/directory.html +++ b/packages/rocketchat-ui/client/views/app/directory.html @@ -21,18 +21,18 @@ {{/header}}
{{#if $eq searchType 'channels'}} - - - - - - + {{#table fixed='true' }} + + + + + - + {{#each searchResults}} - - + - - + {{/each}} -
{{_ "Name"}} {{> icon icon=(sortIcon 'name')}}{{_ "Users"}}{{_ "Created_at"}} {{> icon icon=(sortIcon 'createdAt') }}
{{_ "Name"}} {{> icon icon=(sortIcon 'name')}}{{_ "Users"}}{{_ "Created_at"}} {{> icon icon=(sortIcon 'createdAt') }}
+
{{> avatar username=name roomIcon="true"}}
@@ -46,14 +46,14 @@
{{users}} + {{users}} {{createdAt}}
+ {{/table}} {{/if}} {{#if $eq searchType 'users'}} diff --git a/packages/rocketchat-ui/package.js b/packages/rocketchat-ui/package.js index 343cd8152feb9..8846bce2ef934 100644 --- a/packages/rocketchat-ui/package.js +++ b/packages/rocketchat-ui/package.js @@ -124,6 +124,9 @@ Package.onUse(function(api) { api.addFiles('client/components/icon.html', 'client'); api.addFiles('client/components/icon.js', 'client'); + api.addFiles('client/components/table.html', 'client'); + api.addFiles('client/components/table.js', 'client'); + api.addFiles('client/components/popupList.html', 'client'); api.addFiles('client/components/popupList.js', 'client'); From 2c836914e448abfe2531c3bf1d5494187cc22137 Mon Sep 17 00:00:00 2001 From: Karl Prieb Date: Tue, 5 Jun 2018 18:48:04 -0300 Subject: [PATCH 02/22] table component: fixed header --- .../imports/components/modal/directory.css | 10 +- .../client/imports/components/table.css | 106 +++++++++++++----- .../client/components/table.html | 14 ++- .../rocketchat-ui/client/components/table.js | 5 +- .../client/views/app/directory.html | 32 +++--- 5 files changed, 116 insertions(+), 51 deletions(-) diff --git a/packages/rocketchat-theme/client/imports/components/modal/directory.css b/packages/rocketchat-theme/client/imports/components/modal/directory.css index b87fdc906206e..cb20ac749ce99 100644 --- a/packages/rocketchat-theme/client/imports/components/modal/directory.css +++ b/packages/rocketchat-theme/client/imports/components/modal/directory.css @@ -8,7 +8,6 @@ /* TODO: -plus and -search should be "globals" */ - &-plus { width: 36px; min-width: 36px; @@ -42,12 +41,11 @@ } &-avatar { - flex: 0 0 auto; width: 32px; height: 32px; - padding: 2px; + padding: 3px; background-repeat: no-repeat; background-position: center center; @@ -71,12 +69,15 @@ } &-name { - overflow: hidden; white-space: nowrap; text-overflow: ellipsis; + + & .rc-icon { + font-size: 1rem; + } } &-description { @@ -109,7 +110,6 @@ .rc-directory-td--createdAt, .rc-directory-td--users { - overflow: hidden; width: 120px; diff --git a/packages/rocketchat-theme/client/imports/components/table.css b/packages/rocketchat-theme/client/imports/components/table.css index 37be4f0d2416e..2570714334626 100644 --- a/packages/rocketchat-theme/client/imports/components/table.css +++ b/packages/rocketchat-theme/client/imports/components/table.css @@ -9,24 +9,6 @@ table-layout: fixed; } - & thead { - color: var(--rc-color-primary-light); - - & tr { - border-bottom: 1px solid #d8d8d8; - } - - & td { - padding: 0.5rem; - - font-size: 0.75rem; - } - - & .rc-icon { - fill: var(--rc-color-primary-light); - } - } - & tbody { & tr { cursor: pointer; @@ -37,23 +19,95 @@ } } + & th, & td { + vertical-align: middle; - padding: 0.25rem 0.5rem; + &.bold { + font-weight: 600; + } + } - vertical-align: middle; - letter-spacing: 0; + & th { + height: 0; - font-size: 0.875rem; + padding-top: 0; + padding-bottom: 0; - line-height: 1.25rem; + white-space: nowrap; - &.bold { - font-weight: 600; + color: transparent; + + line-height: 0; + + & > .rc-icon { + display: none; } } + + & td { + padding: 0.25rem 0.5rem; + + font-size: 0.75rem; + line-height: 1rem; + } +} + +.table-wrapper { + position: relative; + + height: 100%; +} + +.table-content-wrapper { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + + display: flex; + flex-direction: column; +} + +.table-content { + display: flex; + flex-direction: column; + + min-height: 0; + flex-grow: 1; +} + +.table-scroll { + overflow: auto; + + min-height: 0; + + margin-top: 2rem; + + border-top: 1px solid #d8d8d8; + flex-grow: 1; +} + +.table-fake-th { + position: absolute; + top: 0; + + padding: 0.5rem; + + text-align: left; + + color: var(--rc-color-primary-light); + + font-size: 0.75rem; + font-weight: 400; + line-height: 1rem; + + & .rc-icon { + fill: var(--rc-color-primary-light); + } } -.tr-dummy { +.table-tr-dummy { height: 1rem; } diff --git a/packages/rocketchat-ui/client/components/table.html b/packages/rocketchat-ui/client/components/table.html index 1c0282d55b405..a3a18f66acc70 100644 --- a/packages/rocketchat-ui/client/components/table.html +++ b/packages/rocketchat-ui/client/components/table.html @@ -1,5 +1,13 @@ diff --git a/packages/rocketchat-ui/client/components/table.js b/packages/rocketchat-ui/client/components/table.js index 8e706ec8b6bff..5342cec8206fd 100644 --- a/packages/rocketchat-ui/client/components/table.js +++ b/packages/rocketchat-ui/client/components/table.js @@ -1,4 +1,7 @@ Template.table.onRendered(function() { - const dummyTr = ''; + const dummyTr = ''; this.$('tbody').prepend(dummyTr).append(dummyTr); + this.$('th').each(function() { + $(this).append(`
${ $(this).html() }
`); + }); }); diff --git a/packages/rocketchat-ui/client/views/app/directory.html b/packages/rocketchat-ui/client/views/app/directory.html index f6b45aeeec629..3d12d435ad855 100644 --- a/packages/rocketchat-ui/client/views/app/directory.html +++ b/packages/rocketchat-ui/client/views/app/directory.html @@ -21,12 +21,12 @@ {{/header}}
{{#if $eq searchType 'channels'}} - {{#table fixed='true' }} + {{#table fixed='true'}}
- - - + + + @@ -56,18 +56,18 @@ {{/table}} {{/if}} {{#if $eq searchType 'users'}} -
{{_ "Name"}} {{> icon icon=(sortIcon 'name')}}{{_ "Users"}}{{_ "Created_at"}} {{> icon icon=(sortIcon 'createdAt') }}{{_ "Name"}} {{> icon icon=(sortIcon 'name')}}{{_ "Users"}}{{_ "Created_at"}} {{> icon icon=(sortIcon 'createdAt') }}
- - - - - + {{#table}} + + + + + - + {{#each searchResults}} - - + - - + {{/each}} -
{{_ "Name"}} {{> icon icon="sort" }}{{_ "Username"}} {{> icon icon="sort" }}{{_ "Created_at"}} {{> icon icon="sort" }}
{{_ "Name"}} {{> icon icon="sort" }}{{_ "Username"}} {{> icon icon="sort" }}{{_ "Created_at"}} {{> icon icon="sort" }}
+
{{> avatar username=username}}
@@ -77,14 +77,14 @@
{{name}} + {{name}} {{createdAt}}
+ {{/table}} {{/if}}
From 1f05bc27e012b3efb035b89c43a9c9b2361b9f67 Mon Sep 17 00:00:00 2001 From: Karl Prieb Date: Wed, 6 Jun 2018 19:31:58 -0300 Subject: [PATCH 03/22] tabs component --- .../imports/components/modal/directory.css | 21 +++------------ .../client/imports/components/tabs.css | 27 +++++++++++++++++++ packages/rocketchat-theme/client/main.css | 5 ++-- .../rocketchat-ui/client/components/tabs.html | 7 +++++ .../rocketchat-ui/client/components/tabs.js | 18 +++++++++++++ .../client/views/app/directory.html | 15 +++-------- .../client/views/app/directory.js | 21 ++++++++++++++- packages/rocketchat-ui/package.js | 3 +++ 8 files changed, 84 insertions(+), 33 deletions(-) create mode 100644 packages/rocketchat-theme/client/imports/components/tabs.css create mode 100644 packages/rocketchat-ui/client/components/tabs.html create mode 100644 packages/rocketchat-ui/client/components/tabs.js diff --git a/packages/rocketchat-theme/client/imports/components/modal/directory.css b/packages/rocketchat-theme/client/imports/components/modal/directory.css index cb20ac749ce99..060ceb38f64ee 100644 --- a/packages/rocketchat-theme/client/imports/components/modal/directory.css +++ b/packages/rocketchat-theme/client/imports/components/modal/directory.css @@ -6,24 +6,9 @@ display: flex; } - - /* TODO: -plus and -search should be "globals" */ - &-plus { - width: 36px; - min-width: 36px; - height: 36px; - min-height: 36px; - padding: 0; - } - &-search { - max-width: 260px; - } - - &-selector, - &-search, - &-plus { - margin: 0 0.5rem; + width: 100%; + padding: 0 0.5rem; } } @@ -98,7 +83,9 @@ } .rc-directory-content { + display: flex; overflow-x: auto; + flex-direction: column; flex: 1 1 100%; height: 100vh; diff --git a/packages/rocketchat-theme/client/imports/components/tabs.css b/packages/rocketchat-theme/client/imports/components/tabs.css new file mode 100644 index 0000000000000..437953d88f5e3 --- /dev/null +++ b/packages/rocketchat-theme/client/imports/components/tabs.css @@ -0,0 +1,27 @@ +.tabs { + display: flex; + + width: 100%; + + margin: 0 -1rem 0.5rem; + padding: 0 0.5rem; + + border-bottom: 1px solid rgba(216,216,216, 0.2); +} + +.tab { + margin: 0 1rem; + padding: 1rem 0; + + cursor: pointer; + + color: var(--rc-color-primary-light); + + font-size: 0.875rem; + line-height: 1.25rem; + + &.active { + color: var(--rc-color-button-primary); + border-bottom: 1px solid var(--rc-color-button-primary); + } +} diff --git a/packages/rocketchat-theme/client/main.css b/packages/rocketchat-theme/client/main.css index 4ac78a1175b07..e5b9b30580bca 100644 --- a/packages/rocketchat-theme/client/main.css +++ b/packages/rocketchat-theme/client/main.css @@ -45,14 +45,13 @@ @import 'imports/components/emojiPicker.css'; @import 'imports/components/table.css'; @import 'imports/components/file-list.css'; - - - +@import 'imports/components/tabs.css'; /* Modal */ @import 'imports/components/modal/full-modal.css'; @import 'imports/components/modal/create-channel.css'; @import 'imports/components/modal/directory.css'; + /* User Info */ @import 'imports/components/userInfo.css'; diff --git a/packages/rocketchat-ui/client/components/tabs.html b/packages/rocketchat-ui/client/components/tabs.html new file mode 100644 index 0000000000000..dfaa4bf593ff7 --- /dev/null +++ b/packages/rocketchat-ui/client/components/tabs.html @@ -0,0 +1,7 @@ + diff --git a/packages/rocketchat-ui/client/components/tabs.js b/packages/rocketchat-ui/client/components/tabs.js new file mode 100644 index 0000000000000..32818c2face48 --- /dev/null +++ b/packages/rocketchat-ui/client/components/tabs.js @@ -0,0 +1,18 @@ +Template.tabs.onRendered(function() { + this.$('.tab').first().addClass('active'); + this.data.tabs.onChange(this.data.tabs.tabs[0].value); +}); + +Template.tabs.events({ + 'click .tab'(e) { + $('.tab').removeClass('active'); + $(e.currentTarget).addClass('active'); + Template.instance().data.tabs.onChange($(e.currentTarget).data('value')); + } +}); + +Template.tabs.helpers({ + tabs() { + return Template.instance().data.tabs.tabs.filter(tab => tab.condition ? tab.condition() : tab); + } +}); diff --git a/packages/rocketchat-ui/client/views/app/directory.html b/packages/rocketchat-ui/client/views/app/directory.html index 3d12d435ad855..406c5aa6cdfeb 100644 --- a/packages/rocketchat-ui/client/views/app/directory.html +++ b/packages/rocketchat-ui/client/views/app/directory.html @@ -1,11 +1,8 @@