From 3fa8602e2cc4d983f989dfbc44ba7a665f62a6b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment?= Date: Fri, 5 Oct 2018 11:55:29 +0200 Subject: [PATCH] update --- src/config.pug | 3 + src/header.pug | 17 +++ src/page-group-chat.pug | 2 + src/page-group-create.pug | 7 ++ src/page-group-edit.pug | 7 ++ src/page-group-profile.pug | 36 ++++++ src/page-group.pug | 18 +++ src/page-groups.pug | 7 ++ src/page-member.pug | 3 +- src/styles/content.scss | 41 +++++-- src/styles/form.scss | 35 ++++++ src/styles/index.scss | 2 +- src/styles/members.scss | 222 ++++++++++++++++++++++++++++++++++++ www/.htaccess | 8 ++ www/images/logo.png | Bin 0 -> 4018 bytes www/images/user.png | Bin 0 -> 8208 bytes www/oidc-client-config.json | 11 ++ 17 files changed, 408 insertions(+), 11 deletions(-) create mode 100644 src/config.pug create mode 100644 src/header.pug create mode 100644 src/page-group-chat.pug create mode 100644 src/page-group-create.pug create mode 100644 src/page-group-edit.pug create mode 100644 src/page-group-profile.pug create mode 100644 src/page-group.pug create mode 100644 src/page-groups.pug create mode 100644 src/styles/form.scss create mode 100644 src/styles/members.scss create mode 100644 www/.htaccess create mode 100644 www/images/logo.png create mode 100644 www/images/user.png create mode 100644 www/oidc-client-config.json diff --git a/src/config.pug b/src/config.pug new file mode 100644 index 0000000..8a83ec0 --- /dev/null +++ b/src/config.pug @@ -0,0 +1,3 @@ +//- var sdn = process.env.SDN || 'http://127.0.0.1:8000' +- var sdn = process.env.SDN || 'https://test-paris.happy-dev.fr' +- var cdn = process.env.CDN || 'https://cdn.happy-dev.fr' \ No newline at end of file diff --git a/src/header.pug b/src/header.pug new file mode 100644 index 0000000..3f945f2 --- /dev/null +++ b/src/header.pug @@ -0,0 +1,17 @@ +#button-toggle +#logo + img(src="/images/logo.png" width=111 height=32) + +#search-bar + div + input#search-input(type='search') + i#search-icon.icon-magnifier(aria-hidden='true') + i#close-search-icon.icon-close(aria-hidden='true') + +#notification + +#profile + img(src="/images/user.png" width=43 height=43) + span + | Sophie + span.icon-arrow-down \ No newline at end of file diff --git a/src/page-group-chat.pug b/src/page-group-chat.pug new file mode 100644 index 0000000..6b6f711 --- /dev/null +++ b/src/page-group-chat.pug @@ -0,0 +1,2 @@ +#group-chat.chat-view(bind-resources) + sib-chat(data-authentication='login', data-auto-login='true', data-bosh-service-url='https://jabber.happy-dev.fr/http-bind/', data-debug='false', data-locales-url='en', bind-resources) \ No newline at end of file diff --git a/src/page-group-create.pug b/src/page-group-create.pug new file mode 100644 index 0000000..6fb9137 --- /dev/null +++ b/src/page-group-create.pug @@ -0,0 +1,7 @@ +#group-create + sib-form( + data-src=`${sdn}/channels/`, + range-owner=`${sdn}/members/`, + widget-members='sib-form-multiple-dropdown', + range-members=`${sdn}/members/` + ) diff --git a/src/page-group-edit.pug b/src/page-group-edit.pug new file mode 100644 index 0000000..452d565 --- /dev/null +++ b/src/page-group-edit.pug @@ -0,0 +1,7 @@ +#group-edit + sib-form( + range-owner=`${sdn}/members/`, + widget-members='sib-form-multiple-dropdown', + range-members=`${sdn}/members/`, + bind-resources + ) diff --git a/src/page-group-profile.pug b/src/page-group-profile.pug new file mode 100644 index 0000000..51b33da --- /dev/null +++ b/src/page-group-profile.pug @@ -0,0 +1,36 @@ +script. + document.addEventListener('WebComponentsReady', function(event) { + class HDAppMember extends SIBWidget { + get template() { + return ` +
+ +
+ `; + } + + render() { + store.get(this.value).then( (value) => { + this._value = value; + this.innerHTML = this.template; + }); + } + } + customElements.define("hdapp-member", HDAppMember); + }); + +#group-profile + sib-display( + data-fields='name, description, owner', + widget-owner='hdapp-member', + bind-resources + ) + h2.section.skills Participants + sib-display( + id-suffix='members', + data-fields='avatar, user', + widget-avatar='sib-display-img', + widget-user='hdapp-userinfo', + bind-resources + ) + diff --git a/src/page-group.pug b/src/page-group.pug new file mode 100644 index 0000000..5af3fa7 --- /dev/null +++ b/src/page-group.pug @@ -0,0 +1,18 @@ +sib-router#group-router(default-route='group-chat') + sib-route(name='group-chat') + div Chat + sib-route(name='group-profile') + div Info + sib-route(name='group-edit') + div Éditer + sib-route(name='group-create') + div Nouveau +#network-views-container + #group-chat + include page-group-chat.pug + #group-profile + include page-group-profile.pug + #group-edit + include page-group-edit.pug + #group-create + include page-group-create.pug diff --git a/src/page-groups.pug b/src/page-groups.pug new file mode 100644 index 0000000..575e18b --- /dev/null +++ b/src/page-groups.pug @@ -0,0 +1,7 @@ +#groups + sib-display#groups-list( + data-src=`${sdn}/channels/`, + data-fields='name, description', + search-fields='name, description', + next='group' + ) diff --git a/src/page-member.pug b/src/page-member.pug index d2724ae..926aed6 100644 --- a/src/page-member.pug +++ b/src/page-member.pug @@ -14,5 +14,4 @@ sib-router#member-router(default-route='member-chat') #member-profile include page-member-profile.pug #member-edit - include page-member-edit.pug -mucreokyordoriptyis7 \ No newline at end of file + include page-member-edit.pug \ No newline at end of file diff --git a/src/styles/content.scss b/src/styles/content.scss index 9d167ff..1d14b1a 100644 --- a/src/styles/content.scss +++ b/src/styles/content.scss @@ -1,7 +1,6 @@ // job offers #offers-list { > div { - display: none; > sib-display { display: block; margin: 1em 0; @@ -11,15 +10,44 @@ &:nth-child(odd) { background-color: $color-white; } - sib-display-div[name=title]{ + sib-display-div[name='title'] { display: block; - @extend h1; - background-color: red; + @extend h2; + } + label { + display: none; + } + hdapp-author { + ul { + @include list-reset(); + } } } } } +// skills +sib-display-lookuplist[name='skills'] { + ul, + li { + display: block; + margin: 0; + padding: 0; + list-style: none; + } + ul { + display: flex; + flex-wrap: wrap; + margin: 0 -0.25em; + } + li { + padding: 0.5em 1em; + border: 1px solid; + border-radius: 0.25em; + margin: 0.25em; + } +} + // chat .chat-view { @@ -32,7 +60,6 @@ } } - .members-list-condensed { display: block; img { @@ -53,10 +80,9 @@ } } - // member-profile && member sib-display#member-info, -#profiles-list>div>sib-display{ +#profiles-list > div > sib-display { display: block; position: relative; background-color: $color-white; @@ -92,4 +118,3 @@ sib-display#member-info, grid-gap: 1em; } } - diff --git a/src/styles/form.scss b/src/styles/form.scss new file mode 100644 index 0000000..99ea8cb --- /dev/null +++ b/src/styles/form.scss @@ -0,0 +1,35 @@ +//button, checkbox, color, date, datetime-local, email, file, hidden, image, month, number, password, radio, range, reset, search, submit, tel, text, time, url, week, datetime + + +sib-form{ + form{ + margin: -.5em; + >*{ + margin: .5em; + } + } + + // text like + input:not([type=button]):not([type=checkbox]):not([type=color]):not([type=file]):not([type=hidden]):not([type=image]):not([type=radio]):not([type=range]):not([type=reset]):not([type=submit]){ + padding: 0.5em; + border: none; + @extend %shadow; + } + + // button like + button, + input[type=button], + input[type=color], + input[type=file], + input[type=reset], + input[type=submit]{ + padding: 0.5em 1em; + border: none; + background-color: $color-yellow; + border-radius: 100em; + } + + input[type="reset"]{ + display: none; + } +} \ No newline at end of file diff --git a/src/styles/index.scss b/src/styles/index.scss index f4d6f8a..8a87e48 100644 --- a/src/styles/index.scss +++ b/src/styles/index.scss @@ -9,6 +9,6 @@ @import 'form'; @import 'content'; -@import 'members'; +// @import 'members'; @import 'menu'; diff --git a/src/styles/members.scss b/src/styles/members.scss new file mode 100644 index 0000000..81fc7a7 --- /dev/null +++ b/src/styles/members.scss @@ -0,0 +1,222 @@ + +// members +%img-circle { + $width: 55%; + display: block; + position: relative; + width: $width; + padding-bottom: $width; + height: 0; + margin: 2em auto; + img { + display: block; + position: absolute; + width: 100%; + height: 100%; + border-radius: 100%; + object-fit: cover; + object-position: center; + } +} + +%member { + sib-display-img { + @extend %img-circle; + } + display: block; + position: relative; + background-color: $color-white; + @extend %shadow; + padding: 0.5em; + cursor: pointer; + + &::before, + &::after { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + transform: scale3d(0, 0, 1); + transition: transform 0.3s ease-out 0s; + background: #eac1; + content: ''; + pointer-events: none; + } + + &::before { + transform-origin: left top; + } + + &::after { + transform-origin: right bottom; + + background: #ace1; + } + + &:hover, + &:focus { + &::before, + &::after { + transform: scale3d(1, 1, 1); + } + } +} + +#profiles-list { + display: block; + div[name='header'] { + border-top: 2em solid $color-grey-light; + border-bottom: 1px solid $color-grey-light; + padding-bottom: 1em; + margin: -0.5em; + padding: 0.5em; + margin-bottom: 1em; + text-align: center; + } + + > div { + display: grid; + margin-top: 1em; + grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); + grid-gap: 1em; + label { + display: none; + } + + > sib-display { + @extend %member; + } + } + + hdapp-userinfo { + display: block; + color: $color-black; + font-size: 1.1em; + margin: 0.5em; + ul, + li { + display: block; + margin: 0; + padding: 0; + list-style: none; + } + } + + div[name='pseudonym'] { + font-size: 0.8em; + div { + display: inline; + } + } +} + + +// member +%detail-section { + font-weight: bold; + font-size: 18px; +} + +#member-chat { + #conversejs { + margin: none; + } +} +#member-info { + background-color: $color-white; + padding: 1em; + @extend %shadow; +} + +#profiles-list, +#member-info { + img { + display: block; + } + + img { + width: 100%; + } + + div[name='name'] { + @extend %detail-section; + padding-top: 10px; + } + + div[name='name'], + div[name='location'] { + display: flex; + } +} + +#member-detail { + #member-info { + sib-display-mailto, + sib-display-tel { + display: block; + } + + a[name='email'], + a[name='number'] { + &::before { + font-family: FontAwesome; + padding-right: 4px; + color: black; + } + } + a[name='email'] { + &::before { + content: '\f0e0'; + } + } + a[name='number'] { + &::before { + content: '\f10b'; + font-size: 22px; + padding-left: 3px; + padding-right: 7px; + } + } + } + + .section { + position: relative; + + h2 { + @extend %detail-section; + margin-top: 40px; + } + } + + #member-skills { + display: flex; + flex-wrap: wrap; + + sib-display { + display: block; + background-color: $color-black; + color: $color-white; + border-radius: 100px; + padding: 3px 10px; + margin-bottom: 5px; + margin-right: 5px; + } + } +} + +@include media('width>phone') { + #member-detail { + #member-info { + sib-display-img { + display: block; + float: right; + width: 300px; + } + } + } +} + +#member-info { + @extend %member; +} diff --git a/www/.htaccess b/www/.htaccess new file mode 100644 index 0000000..5c88e4c --- /dev/null +++ b/www/.htaccess @@ -0,0 +1,8 @@ + + RewriteEngine On + RewriteBase / + RewriteRule \. - [L] + RewriteCond %{REQUEST_FILENAME} !-f + RewriteCond %{REQUEST_FILENAME} !-d + RewriteRule . /index.html [L] + diff --git a/www/images/logo.png b/www/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..d47b12090ca2650956f554ac22fccb7253c2aa2a GIT binary patch literal 4018 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 literal 0 HcmV?d00001 diff --git a/www/images/user.png b/www/images/user.png new file mode 100644 index 0000000000000000000000000000000000000000..e8a30be62d01deaccc406d7062cccba51bd8b4d4 GIT binary patch literal 8208 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