diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index eca06b2..704c6db 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -176,24 +176,6 @@ community:
tags:
- deploy
-etuc:
- stage: deployment
- environment:
- name: etuc
- url: https://app.digitalplatformobservatory.org
- before_script:
- - npm ci --cache .npm --prefer-offline --only=production
- script:
- - echo "$APP_CONFIG_DIGITALPLATFORMOBSERVATORY" > config.json
- - echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
- - npm run build
- - scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* etuc@ssh-etuc.happy-dev.fr:~/sib/www/
- only:
- - master
- when: manual
- tags:
- - deploy
-
nantes:
stage: deployment
environment:
@@ -230,15 +212,15 @@ paris:
tags:
- deploy
-toulouse:
+smarttoulouse:
stage: deployment
environment:
- name: toulouse
+ name: smarttoulouse
url: https://smart-toulouse.happy-dev.fr
before_script:
- npm ci --cache .npm --prefer-offline --only=production
script:
- - echo "$APP_CONFIG_TOULOUSE" > config.json
+ - echo "$APP_CONFIG_SMARTTOULOUSE" > config.json
- echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
- npm run build
- scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* smart-toulouse@ssh-smart-toulouse.happy-dev.fr:~/www/
@@ -301,3 +283,327 @@ playground:
when: manual
tags:
- deploy
+
+casaco:
+ stage: deployment
+ environment:
+ name: casaco
+ url: https://casaco.hubl.world
+ before_script:
+ - npm ci --cache .npm --prefer-offline --only=production
+ script:
+ - echo "$APP_CONFIG_CASACO" > config.json
+ - echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
+ - npm run build
+ - scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* casaco@astral.startinblox.com:~/front/
+ only:
+ - master
+ when: manual
+ tags:
+ - deploy
+
+opteos:
+ stage: deployment
+ environment:
+ name: opteos
+ url: https://opteos.hubl.world
+ before_script:
+ - npm ci --cache .npm --prefer-offline --only=production
+ script:
+ - echo "$APP_CONFIG_OPTEOS" > config.json
+ - echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
+ - npm run build
+ - scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* opteos@astral.startinblox.com:~/front/
+ only:
+ - master
+ when: manual
+ tags:
+ - deploy
+
+fnk:
+ stage: deployment
+ environment:
+ name: fnk
+ url: https://fnk.hubl.world
+ before_script:
+ - npm ci --cache .npm --prefer-offline --only=production
+ script:
+ - echo "$APP_CONFIG_FNK" > config.json
+ - echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
+ - npm run build
+ - scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* fnk@astral.startinblox.com:~/front/
+ only:
+ - master
+ when: manual
+ tags:
+ - deploy
+
+labriqueterie:
+ stage: deployment
+ environment:
+ name: labriqueterie
+ url: https://labriqueterie.hubl.world
+ before_script:
+ - npm ci --cache .npm --prefer-offline --only=production
+ script:
+ - echo "$APP_CONFIG_LABRIQUETERIE" > config.json
+ - echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
+ - npm run build
+ - scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* labriqueterie@astral.startinblox.com:~/front/
+ only:
+ - master
+ when: manual
+ tags:
+ - deploy
+
+facttic:
+ stage: deployment
+ environment:
+ name: facttic
+ url: https://facttic.hubl.world
+ before_script:
+ - npm ci --cache .npm --prefer-offline --only=production
+ script:
+ - echo "$APP_CONFIG_FACTTIC" > config.json
+ - echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
+ - npm run build
+ - scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* facttic@astral.startinblox.com:~/front/
+ only:
+ - master
+ when: manual
+ tags:
+ - deploy
+
+cotech:
+ stage: deployment
+ environment:
+ name: cotech
+ url: https://hubl.coops.tech
+ before_script:
+ - npm ci --cache .npm --prefer-offline --only=production
+ script:
+ - echo "$APP_CONFIG_COTECH" > config.json
+ - echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
+ - npm run build
+ - scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* cotech@astral.startinblox.com:~/front/
+ only:
+ - master
+ when: manual
+ tags:
+ - deploy
+
+lelaptop:
+ stage: deployment
+ environment:
+ name: lelaptop
+ url: https://lelaptop.hubl.world
+ before_script:
+ - npm ci --cache .npm --prefer-offline --only=production
+ script:
+ - echo "$APP_CONFIG_LELAPTOP" > config.json
+ - echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
+ - npm run build
+ - scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* lelaptop@astral.startinblox.com:~/front/
+ only:
+ - master
+ when: manual
+ tags:
+ - deploy
+
+virtualassembly:
+ stage: deployment
+ environment:
+ name: virtualassembly
+ url: https://virtual-assembly.hubl.world
+ before_script:
+ - npm ci --cache .npm --prefer-offline --only=production
+ script:
+ - echo "$APP_CONFIG_VIRTUAL_ASS" > config.json
+ - echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
+ - npm run build
+ - scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* virtual-assembly@astral.startinblox.com:~/front/
+ only:
+ - master
+ when: manual
+ tags:
+ - deploy
+
+ouisharequebec:
+ stage: deployment
+ environment:
+ name: ouisharequebec
+ url: https://ouishare-quebec.hubl.world
+ before_script:
+ - npm ci --cache .npm --prefer-offline --only=production
+ script:
+ - echo "$APP_CONFIG_OUISHARE" > config.json
+ - echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
+ - npm run build
+ - scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* ouishare-quebec@astral.startinblox.com:~/front/
+ only:
+ - master
+ when: manual
+ tags:
+ - deploy
+
+nouvelleaquitaine:
+ stage: deployment
+ environment:
+ name: nouvelleaquitaine
+ url: https://app.nouvelle-aquitaine.happy-dev.fr
+ before_script:
+ - npm ci --cache .npm --prefer-offline --only=production
+ script:
+ - echo "$APP_CONFIG_NVLE_AQ" > config.json
+ - echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
+ - npm run build
+ - scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* nouvelle-aquitaine@ssh-nouvelle-aquitaine.happy-dev.fr:~/front/
+ only:
+ - master
+ when: manual
+ tags:
+ - deploy
+
+paca:
+ stage: deployment
+ environment:
+ name: paca
+ url: https://app.paca.happy-dev.fr
+ before_script:
+ - npm ci --cache .npm --prefer-offline --only=production
+ script:
+ - echo "$APP_CONFIG_PACA" > config.json
+ - echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
+ - npm run build
+ - scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* paca@ssh-paca.happy-dev.fr:~/front/
+ only:
+ - master
+ when: manual
+ tags:
+ - deploy
+
+strasbourg:
+ stage: deployment
+ environment:
+ name: strasbourg
+ url: https://app.strasbourg.happy-dev.fr
+ before_script:
+ - npm ci --cache .npm --prefer-offline --only=production
+ script:
+ - echo "$APP_CONFIG_STRASBOURG" > config.json
+ - echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
+ - npm run build
+ - scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* strasbourg@ssh-strasbourg.happy-dev.fr:~/front/
+ only:
+ - master
+ when: manual
+ tags:
+ - deploy
+
+bretagne:
+ stage: deployment
+ environment:
+ name: bretagne
+ url: https://app.bretagne.happy-dev.fr
+ before_script:
+ - npm ci --cache .npm --prefer-offline --only=production
+ script:
+ - echo "$APP_CONFIG_BRETAGNE" > config.json
+ - echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
+ - npm run build
+ - scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* bretagne@ssh-bretagne.happy-dev.fr:~/front/
+ only:
+ - master
+ when: manual
+ tags:
+ - deploy
+
+lemans:
+ stage: deployment
+ environment:
+ name: lemans
+ url: https://app.lemans.happy-dev.fr
+ before_script:
+ - npm ci --cache .npm --prefer-offline --only=production
+ script:
+ - echo "$APP_CONFIG_LEMANS" > config.json
+ - echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
+ - npm run build
+ - scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* lemans@ssh-lemans.happy-dev.fr:~/front/
+ only:
+ - master
+ when: manual
+ tags:
+ - deploy
+
+apidays:
+ stage: deployment
+ environment:
+ name: apidays
+ url: https://apidays.hubl.world
+ before_script:
+ - npm ci --cache .npm --prefer-offline --only=production
+ script:
+ - echo "$APP_CONFIG_APIDAYS" > config.json
+ - echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
+ - npm run build
+ - scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* apidays@astral.startinblox.com:~/front/
+ only:
+ - master
+ when: manual
+ tags:
+ - deploy
+
+ejp:
+ stage: deployment
+ environment:
+ name: ejp
+ url: https://ejp.hubl.world
+ before_script:
+ - npm ci --cache .npm --prefer-offline --only=production
+ script:
+ - echo "$APP_CONFIG_EJP" > config.json
+ - echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
+ - npm run build
+ - scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* georgetown-uni@astral.startinblox.com:~/front/
+ only:
+ - master
+ when: manual
+ tags:
+ - deploy
+
+fichemetierfr:
+ stage: deployment
+ environment:
+ name: fichemetierfr
+ url: https://fichemetier.fr.hubl.world
+ before_script:
+ - npm ci --cache .npm --prefer-offline --only=production
+ script:
+ - echo "$APP_CONFIG_FICHEMETIERFR" > config.json
+ - echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
+ - npm run build
+ - scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* fichemetierfr@astral.startinblox.com:~/front/
+ only:
+ - master
+ when: manual
+ tags:
+ - deploy
+
+toulouse:
+ stage: deployment
+ environment:
+ name: toulouse
+ url: https://app.toulouse.happy-dev.fr
+ before_script:
+ - npm ci --cache .npm --prefer-offline --only=production
+ script:
+ - echo "$APP_CONFIG_TOULOUSE" > config.json
+ - echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
+ - npm run build
+ - scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* toulouse@ssh-toulouse.happy-dev.fr:~/front/
+ only:
+ - master
+ when: manual
+ tags:
+ - deploy
diff --git a/.gitlab/issue_templates/new_instance.md b/.gitlab/issue_templates/new_instance.md
new file mode 100644
index 0000000..a93fe19
--- /dev/null
+++ b/.gitlab/issue_templates/new_instance.md
@@ -0,0 +1,40 @@
+/label ~"New Instance"
+
+# Please fill all these info:
+
+## General info
+
+- Name of the instance:
+- Domain:
+
+## Settings:
+
+- Does the instance allow people to sign up? **Yes / No**
+- Does the instance want new people to get a welcome email? **Yes / No**
+
+## Federation:
+
+- Which current instance should see this new instance data? **Please provide the info module by module and include the instance itself.**
+- Do those current instances agree to share their public data with this new instance? **Yes / No**
+
+Example:
+
+- *Instance G is the new kid in town*
+- *Instance G wants to only see their dashboard, but want to access the circles of A, B, C, D, E & F.*
+- *Instance G wants to be able to chat with users from A, B, C, D, E & F.*
+- *Instance G wants to be able to see A and B job offers*
+
+Let's say every instances agree to this scenario, the issue should describe the following:
+
+- Dashboard: G
+- Circles: A, B, C, D, E, F & G
+- Job offers: A, B, F, G
+- Users: A, B, C, D, E, F & G
+- Profile directory: A, B, C, D, E, F & G
+- G agrees that any new instance can see their public data.
+
+## Cosmetics
+
+- Logo:
+- Favicon:
+- 4 Colors:
\ No newline at end of file
diff --git a/client.sample.happy-dev.css b/client.sample.happy-dev.css
index f75cb0a..2ce6bdc 100644
--- a/client.sample.happy-dev.css
+++ b/client.sample.happy-dev.css
@@ -27,6 +27,12 @@
/* Header's elements */
--color-header-background: var(--color-white);
--color-bell: var(--color-complementary-darken);
+ --color-notification-counter-number: black;
+ --color-notification-summary: #7A7F85;
+ --solid-notifications-theme: var(--color-primary);
+ --color-notification-item-border: #E4E8ED;
+ --color-notification-scrollbar-background: #EDF1FA;
+ --color-notification-scrollbar-track: #BDC2D7;
--color-user-panel-header-text: var(--color-complementary-darken);
--color-user-panel-header-background: var(--color-white);
--color-user-panel-header-text-open: var(--color-white);
diff --git a/src/components/hubl-search-users.js b/src/components/hubl-search-users.js
index ab4300e..c65e58e 100644
--- a/src/components/hubl-search-users.js
+++ b/src/components/hubl-search-users.js
@@ -5,7 +5,7 @@ const HublSearchUsers = widgetFactory(
` input').focus();
+ e.preventDefault();
+ }
+});
\ No newline at end of file
diff --git a/src/scripts/menu-toggle.js b/src/scripts/menu-toggle.js
new file mode 100644
index 0000000..8f96670
--- /dev/null
+++ b/src/scripts/menu-toggle.js
@@ -0,0 +1,11 @@
+document.addEventListener("DOMContentLoaded", () => {
+ const menuWrappers = Array.from(document.querySelectorAll(".menu-wrapper"));
+
+ //- Toggle sub-menus
+ menuWrappers.forEach(menuWrapper => {
+ const menu = menuWrapper.querySelector(".menu");
+ menu.addEventListener("click", e => {
+ menuWrapper.classList.toggle("is-closed");
+ });
+ });
+});
\ No newline at end of file
diff --git a/src/scripts/sib-notifications.js b/src/scripts/sib-notifications.js
deleted file mode 100644
index a6c9ddb..0000000
--- a/src/scripts/sib-notifications.js
+++ /dev/null
@@ -1,60 +0,0 @@
-//- Update badges from notifications list
-async function updateBadges(element) {
- const unreadNotifications = new Map();
- const notifications = element.component.resource;
- if (!notifications) return;
- // Generate unread map
- for (let notification of notifications['ldp:contains']) {
- if (await notification['unread']) {
- const object = await notification['object'];
- unreadNotifications.set(object['@id'], (unreadNotifications.get(object['@id']) || 0) + 1);
- }
- }
- // update badges
- unreadNotifications.forEach((notifNumber, objectId) => {
- const badge = document.querySelector(`solid-fix-badge[data-src="${objectId}"]`);
- if (badge) {
- badge.innerText = notifNumber || '';
- badge.style.display = notifNumber ? 'block' : 'none';
- }
- })
-}
-document.addEventListener("DOMContentLoaded", function (event) {
-
- //- Fix badges performances
- // on load time
- const checkNotificationMenuExist = setInterval(function () { // wait for notification menu to exist
- const notifsMenu = document.getElementById('notifications-list');
- if (notifsMenu) {
- clearInterval(checkNotificationMenuExist);
- notifsMenu.addEventListener('populate', (event) => {
- const checkExist = setInterval(function () { // wait for left menus to exist
- const subMenus = document.querySelectorAll('.sub-menu > solid-display > div');
- if (subMenus.length >= 2) {
- updateBadges(event.target);
- clearInterval(checkExist);
- }
- }, 500);
- }, {
- once: true
- });
- }
- }, 500);
-
- // on refresh notification list
- window.addEventListener('notificationsRefresh', () => {
- document.getElementById('notifications-list').addEventListener('populate', (event) => {
- updateBadges(event.target);
- }, {
- once: true
- });
- });
-
- // on read notification
- window.addEventListener('read', (event) => {
- if (event.detail && event.detail.resource && event.detail.resource['@id']) {
- const badge = document.querySelector(`solid-fix-badge[data-src="${event.detail.resource['@id']}"]`);
- if (badge) badge.style.display = "none";
- }
- });
-});
\ No newline at end of file
diff --git a/src/scripts/unreads-menu.js b/src/scripts/unreads-menu.js
index 66b18b5..bd6abc7 100644
--- a/src/scripts/unreads-menu.js
+++ b/src/scripts/unreads-menu.js
@@ -8,7 +8,7 @@ document.addEventListener("DOMContentLoaded", function (event) {
window.addEventListener('read', (event) => {
if (event.detail && event.detail.resource && event.detail.resource['@id']) {
- const badge = document.querySelector(`solid-fix-badge[data-src="${event.detail.resource['@id']}"]`);
+ const badge = document.querySelector(`solid-badge[data-src="${event.detail.resource['@id']}"]`);
if (badge) badge.parentElement.parentElement.classList.remove('unread');
}
});
diff --git a/src/styles/abstracts/_variables.scss b/src/styles/abstracts/_variables.scss
index ae485e0..03b17c9 100644
--- a/src/styles/abstracts/_variables.scss
+++ b/src/styles/abstracts/_variables.scss
@@ -33,7 +33,6 @@
--color-main-text: var(--color-grey-4);
--color-highlight-primary: var(--color-primary);
--color-user-panel: var(--color-black);
- --color-bell: var(--color-secondary);
--color-avatar-background: var(--color-grey-10);
--color-title: var(--color-secondary);
--color-h1: var(--color-secondary);
@@ -42,6 +41,12 @@
/* Header's elements */
--color-header-background: var(--color-white);
--color-bell: var(--color-secondary);
+ --color-notification-counter-number: var(--color-white);
+ --color-notification-summary: var(--color-grey-4);
+ --solid-notifications-theme: var(--color-primary);
+ --color-notification-item-border: var(--color-grey-12);
+ --color-notification-scrollbar-background: #EDF1FA;
+ --color-notification-scrollbar-track: var(--color-grey-8);
--color-user-panel-header-text: var(--color-secondary);
--color-user-panel-header-background: var(--color-white);
--color-user-panel-header-text-open: var(--color-white);
diff --git a/src/styles/base/form.scss b/src/styles/base/form.scss
index ad3c93b..9234516 100644
--- a/src/styles/base/form.scss
+++ b/src/styles/base/form.scss
@@ -7,6 +7,7 @@
@include breakpoint(lg) {
display: flex;
flex-direction: column;
+ margin-bottom: 0;
transition: all .3s ease;
}
}
@@ -31,7 +32,7 @@
left: 0;
margin: 0;
margin-left: auto;
- margin-top: 109px;
+ margin-top: 32px;
position: relative;
width: auto;
}
diff --git a/src/styles/base/header.scss b/src/styles/base/header.scss
index 1288dff..7966a19 100644
--- a/src/styles/base/header.scss
+++ b/src/styles/base/header.scss
@@ -67,17 +67,17 @@ details {
}
/* End */
-sib-notifications {
+solid-notifications {
color: var(--color-bell);
@include breakpoint(sm) {
padding: 0;
}
- .sib-notifications__container {
+ .solid-notifications__container {
position: relative;
- .sib-notifications__button {
+ .solid-notifications__button {
@include icon('bell');
font-size: 2.5rem;
@@ -93,7 +93,7 @@ sib-notifications {
display: none;
}
- .sib-notifications__counter {
+ .solid-notifications__counter {
left: 2rem;
position: absolute;
top: 1px;
@@ -102,27 +102,157 @@ sib-notifications {
left: 2.1rem;
top: -3px;
}
+
+ span {
+ color: var(--color-notification-counter-number);
+ }
+ }
+ }
+
+ .solid-notifications__triangle-back {
+ display: none;
+ }
+
+ .solid-notifications__triangle-shadow {
+ display: none;
+
+ @include breakpoint(lg) {
+ background: white;
+ display: block;
+ position: absolute;
+ left: auto;
+ right: -2.1em;
+ top: 5em;
+ transform: initial;
+ width: 0;
+ z-index: 4;
+
+ &::after {
+ content: "";
+ position: absolute;
+ width: 0;
+ height: 0;
+ margin-left: -5em;
+ top: 0px;
+ left: 50%;
+ border: 1em solid black;
+ border-color: #fff #fff transparent transparent;
+ transform-origin: 0 0;
+ transform: rotate(-45deg);
+ box-shadow: 6px -6px 10px -3px rgba(92, 97, 104, 0.14);
+ }
}
}
- .sib-notifications__list {
- overflow-x: hidden;
+ .solid-notifications__list {
+ border: none;
+ border-radius: 0;
+ box-shadow: 0 0 7px 0 rgba(92, 97, 104, 0.24);
+ max-height: calc(100vh - 50px);
position: fixed;
left: 0;
- top: 4.5rem;
+ top: 2.5em;
width: 100vw;
-
- @include breakpoint(md) {
- border: 0;
- border-radius: 0;
- }
-
+
@include breakpoint(lg) {
+ max-height: calc(100vh - 93px);
position: absolute;
left: auto;
- right: 0;
- top: 5.6rem;
- width: 300px;
+ right: -2.3em;
+ top: 3.99em;
+ width: 347px;
+ }
+
+ /* Custom scrollbar */
+ overflow: auto;
+ -webkit-overflow-scrolling: touch;
+ -ms-overflow-style: none;
+ scrollbar-width: thin;
+ scrollbar-color: var(--color-notification-scrollbar-track) var(--color-notification-scrollbar-background);
+
+ &::-webkit-scrollbar-track {
+ background: var(--color-notification-scrollbar-background);
+ }
+
+ &::-webkit-scrollbar-thumb {
+ background-color: var(--color-notification-scrollbar-track);
+ border-radius: 6px;
+ }
+
+ &::-webkit-scrollbar {
+ width: 6px;
+ }
+ /* End of custom scrollbar */
+
+ .solid-notifications__item {
+ border-bottom: 1px solid var(--color-notification-item-border);
+
+ .solid-notification {
+ padding: 1.2rem 0 1.5rem;
+
+ .solid-notification__avatar {
+ align-items: center;
+ background: var(--color-avatar-background);
+ display: flex;
+ height: 35px;
+ justify-content: center;
+ margin-left: 1.6rem;
+ margin-right: 1.4rem;
+ overflow: hidden;
+ position: relative;
+ vertical-align: middle;
+ width: 35px;
+
+ img {
+ background-color: var(--color-grey-10);
+ height: 100%;
+ object-fit: cover;
+ object-position: center center;
+ width: 100%;
+ }
+
+ object {
+ height: 45%;
+ width: 45%;
+ }
+ }
+
+ .solid-notification__content {
+ font-family: Open Sans, sans-serif;
+
+ .solid-notification__title {
+ font-size: 1.3rem;
+ font-weight: 600;
+
+ .solid-notification__title__side {
+ font-weight: normal;
+ }
+
+ .solid-notification__title__icon {
+ font-family: simple-line-icons;
+ }
+ }
+
+ .solid-notification__summary {
+ color: var(--color-notification-summary);
+ font-size: 1.2rem;
+ line-height: 1.7rem;
+ margin: 1.1rem 0 0;
+
+ @include breakpoint(320px, 388px) {
+ max-width: 226px;
+ }
+
+ @include breakpoint(lg) {
+ max-width: 256px;
+ }
+ }
+ }
+
+ .solid-notification__read {
+ display: none;
+ }
+ }
}
}
}
diff --git a/src/styles/base/main.scss b/src/styles/base/main.scss
index 23a12a6..835e8db 100644
--- a/src/styles/base/main.scss
+++ b/src/styles/base/main.scss
@@ -61,7 +61,7 @@ solid-dashboard section {
position: sticky;
top: 0;
overflow-x: hidden;
- overflow-y: auto;
+ overflow-y: scroll;
}
&.jsLeftMenu {
@@ -279,6 +279,111 @@ h5 {
width: 15vw;
}
+.project-edit-logo {
+ display: flex;
+ height: 8.5vh;
+ margin-top: 20px;
+ margin-bottom: 30px;
+
+ form {
+ display: flex;
+ }
+
+ hubl-user-avatar {
+ width: 104px;
+ }
+
+ input[type='submit'] {
+ @extend .button,
+ .text-bold,
+ .text-uppercase,
+ .button-primary,
+ .bordered;
+ align-self: center;
+ }
+}
+
+.form-picture {
+
+ form {
+ display: block;
+ text-align: center;
+ margin-bottom: 2.6rem;
+ padding-top: 1.8rem;
+
+ @include breakpoint(lg) {
+ display: flex;
+ width: 100%;
+ }
+
+ hubl-user-avatar {
+ display: inline-block;
+ max-width: 100%;
+ max-height: 16.5vh;
+
+ @include breakpoint(lg) {
+ margin-left: 20px;
+ max-height: 8.5vh;
+ max-width: none;
+ width: calc(35vw - 20px);
+ }
+
+ >object,
+ >img {
+ display: block;
+ max-height: 16.5vh !important;
+
+ @include breakpoint(lg) {
+ max-height: 8.5vh !important;
+ }
+ }
+ }
+
+ input {
+ @extend .button,
+ .text-bold,
+ .text-uppercase,
+ .button-primary,
+ .bordered;
+ margin: 10px 0;
+ width: 100%;
+
+ @include breakpoint(lg) {
+ margin: auto 0 auto 2.2rem;
+ width: auto;
+ }
+ }
+ }
+}
+
+
+
+.p_relative {
+ position: relative;
+}
+
+.flex_column {
+ flex-direction: column;
+}
+
+.flex_vertical-center {
+ align-items: center;
+}
+
+.w90 {
+
+ @include breakpoint(sm) {
+ width: 90%;
+ }
+}
+
+.w100 {
+
+ @include breakpoint(sm) {
+ width: 100%;
+ }
+}
+
.content-box {
@include window-style-modal();
flex-direction: column;
diff --git a/src/styles/base/menu-left.scss b/src/styles/base/menu-left.scss
index 7b070ed..6996fb6 100644
--- a/src/styles/base/menu-left.scss
+++ b/src/styles/base/menu-left.scss
@@ -13,13 +13,21 @@
solid-router {
.menu-wrapper {
- &.is-closed {
- .sub-menu {
- display: none;
+ .menu-icon.icon-arrow-up {
+ visibility: hidden;
+ }
+ @include breakpoint(lg) {
+ .menu-icon.icon-arrow-up {
+ visibility: visible;
}
+ &.is-closed {
+ .sub-menu {
+ display: none;
+ }
- .menu-chevron {
- transform: rotate(180deg);
+ .menu-chevron {
+ transform: rotate(180deg);
+ }
}
}
}
@@ -162,7 +170,7 @@
width: calc(80vw - 71px);
display: block;
background-color: var(--color-secondary);
- color: var(--color-grey-6);
+ color: var(--color-white);
border: 1px solid var(--color-grey-4);
border-radius: 3px;
padding: 4px;
@@ -182,7 +190,7 @@
grid-template-areas: "left middle right";
>* {
- color: var(--color-grey-6);
+ color: var(--color-white);
}
>[data-id="prev"] {
@@ -227,7 +235,7 @@
}
>div {
- color: var(--color-grey-6);
+ color: var(--color-white);
cursor: pointer;
>hubl-menu-fix-url-circle>solid-display>div,
@@ -292,20 +300,3 @@
}
}
}
-
-// Temporary fix for badges
-solid-fix-badge {
- display: none;
- box-sizing: border-box;
- font-family: sans-serif;
- font-size: 12px;
- background-color: var(--sib-notifications-theme, gray);
- color: #36383a;
- border-radius: 50%;
- line-height: 20px;
- width: 20px;
- height: 20px;
- text-align: center;
- font-weight: bold;
- padding-bottom: 0;
-}
diff --git a/src/styles/base/user-thumb.scss b/src/styles/base/user-thumb.scss
index 2541099..8814efb 100644
--- a/src/styles/base/user-thumb.scss
+++ b/src/styles/base/user-thumb.scss
@@ -38,6 +38,7 @@
}
.user-thumb__admin:not(:empty) {
+ display: block !important;
@extend %tag-admin;
}
diff --git a/src/styles/components/_index.scss b/src/styles/components/_index.scss
index d13f842..9f53556 100644
--- a/src/styles/components/_index.scss
+++ b/src/styles/components/_index.scss
@@ -3,4 +3,5 @@
@import 'filters';
@import 'sidebar';
@import 'skills';
-@import 'tags';
\ No newline at end of file
+@import 'tags';
+@import 'project-edit-picture';
diff --git a/src/styles/components/loader.scss b/src/styles/components/loader.scss
new file mode 100644
index 0000000..eef86ae
--- /dev/null
+++ b/src/styles/components/loader.scss
@@ -0,0 +1,75 @@
+.loader {
+ margin: 0 auto;
+ position: relative;
+ width: 80px;
+ height: 20px;
+
+ &.loader-top {
+ top: 30px;
+ }
+
+ div {
+ position: absolute;
+ width: 13px;
+ height: 13px;
+ border-radius: 50%;
+ background: var(--color-menu-background);
+ animation-timing-function: cubic-bezier(0, 1, 1, 0);
+ }
+
+ &.loader-menu div {
+ width: 8px;
+ height: 8px;
+ background: var(--color-menu-text);
+ }
+
+ div:nth-child(1) {
+ left: 8px;
+ animation: lds-ellipsis1 0.6s infinite;
+ }
+
+ div:nth-child(2) {
+ left: 8px;
+ animation: lds-ellipsis2 0.6s infinite;
+ }
+
+ div:nth-child(3) {
+ left: 32px;
+ animation: lds-ellipsis2 0.6s infinite;
+ }
+
+ div:nth-child(4) {
+ left: 56px;
+ animation: lds-ellipsis3 0.6s infinite;
+ }
+}
+
+@keyframes lds-ellipsis1 {
+ 0% {
+ transform: scale(0);
+ }
+
+ 100% {
+ transform: scale(1);
+ }
+}
+
+@keyframes lds-ellipsis3 {
+ 0% {
+ transform: scale(1);
+ }
+
+ 100% {
+ transform: scale(0);
+ }
+}
+
+@keyframes lds-ellipsis2 {
+ 0% {
+ transform: translate(0, 0);
+ }
+
+ 100% {
+ transform: translate(24px, 0);
+ }
+}
diff --git a/src/styles/components/project-edit-picture.scss b/src/styles/components/project-edit-picture.scss
new file mode 100644
index 0000000..e167109
--- /dev/null
+++ b/src/styles/components/project-edit-picture.scss
@@ -0,0 +1,39 @@
+.project-edit-picture {
+
+ >div>*:not(:last-child) {
+ margin-bottom: 2rem;
+ }
+
+ hubl-user-avatar {
+ background: transparent;
+ border-radius: 0;
+ display: inline-block;
+ text-align: center;
+
+ object, img {
+ position: relative;
+ }
+ }
+
+ solid-ac-checker:first-of-type {
+ display: block;
+
+ @include breakpoint(lg) {
+ display: flex;
+ }
+
+ #solid-picture-remove {
+ margin-left: 0;
+ margin-top: 2rem;
+
+ @include breakpoint(lg) {
+ margin-left: 2rem;
+ margin-top: 0;
+ }
+ }
+ }
+
+ solid-ac-checker:last-of-type {
+ align-self: flex-end;
+ }
+}
diff --git a/src/styles/index.scss b/src/styles/index.scss
index 1458359..e92bc08 100644
--- a/src/styles/index.scss
+++ b/src/styles/index.scss
@@ -6,6 +6,7 @@
@import 'abstracts/fonts';
@import 'abstracts/variables';
@import 'abstracts/mixins';
+@import 'components/loader';
@import 'components/icons/index';
@import 'base/main';
@import 'base/about';
diff --git a/src/views/admin/page-admin-circles-create.pug b/src/views/admin/page-admin-circles-create.pug
index 2e94345..4ce3474 100644
--- a/src/views/admin/page-admin-circles-create.pug
+++ b/src/views/admin/page-admin-circles-create.pug
@@ -1,24 +1,31 @@
div.content-box__info.flex
solid-link(class="backlink right", next='admin-circle-list') Retour
- h1.centered Créer un canal
+ h1.centered Créer un cercle
+
+ div#loader-circles-create.loader.loader-top
+ div
+ div
+ div
+ div
solid-form.form.button-register(
data-src=`${endpoints.circles || endpoints.post.circles}`
fields='status, name, description'
+ loader-id='loader-circles-create'
class-status='form-label is-light is-full-width color'
class-name='form-label is-light is-full-width input-text-like'
class-description='form-label is-light is-full-width input-text-like'
- label-status='Statut du canal'
- label-name='Nom du canal *'
- label-description='Sous-titre du canal *'
+ label-status='Statut du cercle'
+ label-name='Nom du cercle *'
+ label-description='Sous-titre du cercle *'
widget-status='hubl-status'
- next='admin-circle-list'
+ next='circle'
submit-button='Enregistrer'
)
diff --git a/src/views/admin/page-admin-circles.pug b/src/views/admin/page-admin-circles.pug
index d6c1e01..b545c7b 100644
--- a/src/views/admin/page-admin-circles.pug
+++ b/src/views/admin/page-admin-circles.pug
@@ -31,12 +31,12 @@
div.admin-header.flex
- h3 Canaux
+ h3 Cercles
solid-link(
class='button text-bold text-uppercase reversed button-primary bordered with-icon icon-plus'
next='admin-circle-create'
- ) Créer un canal
+ ) Créer un cercle
.table-wrapper
.table
@@ -56,6 +56,9 @@
hubl-reactivity(data-src=`${endpoints.circles || endpoints.get.circles}` target-src='${src}')
hubl-reactivity(data-src=`${endpoints.circles || endpoints.get.circles}joinable/` target-src='${src}')
hubl-reactivity(bind-user nested-field="circles" target-src='${src}')
+ if (endpoints.post && endpoints.post.circles) && (endpoints.get && endpoints.get.circles)
+ hubl-reactivity(data-src=`${endpoints.post.circles}joinable/` target-src=`${src}`)
+ hubl-reactivity(data-src=`${endpoints.post.circles}` target-src=`${src}`)
solid-display(
class='table-body'
@@ -63,6 +66,7 @@
bind-user
nested-field='circles'
fields='circle.name, circle.owner, leaveButton'
+ loader-id='loader-admin-circles'
class-circle.name='w280 border cell-with-name'
class-circle.owner='w280 border cell-with-id-card'
@@ -89,12 +93,16 @@
hubl-reactivity(data-src=`${endpoints.circles || endpoints.get.circles}` target-src='${value}')
hubl-reactivity(data-src=`${endpoints.circles || endpoints.get.circles}joinable/` target-src='${value}')
hubl-reactivity(bind-user nested-field="circles" target-src='${value}')
+ if (endpoints.post && endpoints.post.circles) && (endpoints.get && endpoints.get.circles)
+ hubl-reactivity(data-src=`${endpoints.post.circles}joinable/` target-src=`${value}`)
+ hubl-reactivity(data-src=`${endpoints.post.circles}` target-src=`${value}`)
solid-display(
class='table-body'
data-src=`${endpoints.circles || endpoints.get.circles}joinable/`
fields='name, owner, members'
+ loader-id='loader-admin-circles'
class-name='w280 border cell-with-name'
class-owner='w280 border cell-with-id-card'
@@ -106,6 +114,11 @@
order-by="name"
)
+ div#loader-admin-circles.loader.loader-top
+ div
+ div
+ div
+ div
#admin-circle-create.content-box__height(hidden)
include page-admin-circles-create.pug
diff --git a/src/views/admin/page-admin-projects-create.pug b/src/views/admin/page-admin-projects-create.pug
index 57c9748..1bec5c3 100644
--- a/src/views/admin/page-admin-projects-create.pug
+++ b/src/views/admin/page-admin-projects-create.pug
@@ -14,18 +14,22 @@ div.content-box__info.flex
h1.centered Créer un nouveau projet
+ div#loader-projects-create.loader.loader-top
+ div
+ div
+ div
+ div
+
solid-form.form.button-register(
data-src=`${endpoints.projects || endpoints.post.projects}`
- fields='status, line-1(customer.name, name), description, line-2(captain), logo'
+ fields='status, line-1(customer.name, name), line-2(captain)'
+ loader-id='loader-projects-create'
- label-status='Statut du canal*'
- widget-status='hubl-status'
+ label-status='Statut du cercle*'
+ widget-status='solid-form-hidden'
class-status='form-label is-light is-full-width'
-
- label-description='Description du projet'
- class-description='form-label is-light is-full-width input-text-like'
- widget-description='solid-form-textarea'
+ value-status="Private"
label-customer.name='Nom du client*'
class-customer.name='form-label is-light is-half-width input-text-like'
@@ -39,12 +43,8 @@ div.content-box__info.flex
widget-captain='solid-form-auto-completion'
class='input-text-like'
- widget-logo="solid-form-file"
- label-logo="Télécharger un logo"
- class-logo='select-add'
- upload-url-logo=`${endpoints.uploads || endpoints.post.uploads}`
- next='admin-project-list'
+ next='project'
- submit-button='Enregistrer et ajouter des membres'
+ submit-button='Enregistrer'
)
diff --git a/src/views/admin/page-admin-projects.pug b/src/views/admin/page-admin-projects.pug
index a5b066d..c0268b6 100644
--- a/src/views/admin/page-admin-projects.pug
+++ b/src/views/admin/page-admin-projects.pug
@@ -40,6 +40,9 @@
hubl-reactivity(data-src=`${endpoints.projects || endpoints.get.projects}` target-src='${src}')
hubl-reactivity(data-src=`${endpoints.projects || endpoints.get.projects}joinable/` target-src='${src}')
hubl-reactivity(bind-user nested-field="projects" target-src='${src}')
+ if (endpoints.post && endpoints.post.projects) && (endpoints.get && endpoints.get.projects)
+ hubl-reactivity(data-src=`${endpoints.post.projects}joinable/` target-src=`${src}`)
+ hubl-reactivity(data-src=`${endpoints.post.projects}` target-src=`${src}`)
solid-widget(name='hubl-project-captain')
template
@@ -79,6 +82,7 @@
bind-user
nested-field="projects"
fields='project.name, project.members, project.captain, leaveButton'
+ loader-id='loader-admin-projects'
class-project.name='w280 cell border cell-with-name'
class-project.members='w280 cell border cell-with-id-card'
@@ -109,12 +113,16 @@
hubl-reactivity(data-src=`${endpoints.projects || endpoints.get.projects}` target-src='${src}')
hubl-reactivity(data-src=`${endpoints.projects || endpoints.get.projects}joinable/` target-src='${src}')
hubl-reactivity(bind-user nested-field="projects" target-src='${src}')
+ if (endpoints.post && endpoints.post.projects) && (endpoints.get && endpoints.get.projects)
+ hubl-reactivity(data-src=`${endpoints.post.projects}joinable/` target-src=`${value}`)
+ hubl-reactivity(data-src=`${endpoints.post.projects}` target-src=`${value}`)
solid-display(
class='table-body'
data-src=`${endpoints.projects || endpoints.get.projects}joinable/`
fields='name, members, captain, joinButton'
+ loader-id='loader-admin-projects'
class-name='w280 cell border cell-with-name'
class-members='w280 cell border cell-with-id-card'
@@ -130,5 +138,11 @@
order-by="name"
)
+ div#loader-admin-projects.loader.loader-top
+ div
+ div
+ div
+ div
+
#admin-project-create(hidden)
include page-admin-projects-create.pug
\ No newline at end of file
diff --git a/src/views/admin/page-admin-users-create.pug b/src/views/admin/page-admin-users-create.pug
index f52dc81..03b4661 100644
--- a/src/views/admin/page-admin-users-create.pug
+++ b/src/views/admin/page-admin-users-create.pug
@@ -3,10 +3,17 @@ div.content-box__info.flex
h1.centered Ajouter un utilisateur à la plateforme
+ div#loader-users-create.loader.loader-top
+ div
+ div
+ div
+ div
+
solid-form.form.button-register(
data-src=`${endpoints.users || endpoints.post.users}`
fields='line-1(first_name, last_name), line-2(username, email), line-3(password)'
+ loader-id='loader-users-create'
class-first_name='form-label is-light is-half-width input-text-like'
class-last_name='form-label is-light is-half-width input-text-like'
diff --git a/src/views/admin/page-admin-users-edit.pug b/src/views/admin/page-admin-users-edit.pug
index d372cb3..13a9e9a 100644
--- a/src/views/admin/page-admin-users-edit.pug
+++ b/src/views/admin/page-admin-users-edit.pug
@@ -3,24 +3,31 @@ div.content-box__info.flex
h1.centered
span Modifier un utilisateur
+
+ div#loader-users-edit.loader.loader-top
+ div
+ div
+ div
+ div
+
solid-display(
bind-resources=''
fields='name'
+ loader-id='loader-users-edit'
)
solid-form.form.button-register(
bind-resources=''
- fields='line-1(first_name, last_name), line-2(username, email)'
+ fields='line-1(first_name, last_name), line-2(email)'
+ loader-id='loader-users-edit'
class-first_name='form-label is-light is-half-width input-text-like'
class-last_name='form-label is-light is-half-width input-text-like'
- class-username='form-label is-light is-half-width input-text-like'
- class-email='form-label is-light is-half-width input-text-like'
+ class-email='form-label is-light is-full-width input-text-like'
label-first_name='Prénom *'
label-last_name='Nom *'
- label-username='Nom d\'utilisateur *'
label-email='E-mail *'
next='admin-user-list'
diff --git a/src/views/admin/page-admin-users.pug b/src/views/admin/page-admin-users.pug
index 84cd0e7..5494220 100644
--- a/src/views/admin/page-admin-users.pug
+++ b/src/views/admin/page-admin-users.pug
@@ -38,6 +38,7 @@
class='table-body'
data-src=`${endpoints.users || endpoints.get.users}`
fields='cell-1(user-thumb(account.picture, sup(name), sub(username))), actions'
+ loader-id='loader-admin-users'
class-account.picture='avatar user-thumb__picture'
class-name='user-thumb__name'
@@ -53,6 +54,11 @@
order-by='username'
)
+ div#loader-admin-users.loader.loader-top
+ div
+ div
+ div
+ div
#admin-users-create.content-box__height(hidden)
include page-admin-users-create.pug
diff --git a/src/views/circle/page-circle-edit.pug b/src/views/circle/page-circle-edit.pug
index 979ec1c..41e4903 100644
--- a/src/views/circle/page-circle-edit.pug
+++ b/src/views/circle/page-circle-edit.pug
@@ -44,20 +44,26 @@ div.content-box__info
solid-link(class="backlink right", bind-resources, next='circle-profile') Retour
solid-ac-checker(permission='acl:Write', bind-resources)
- h1 Modifie ton canal
+ h1 Modifie ton cercle
+ div#loader-circle-edit.loader.loader-top
+ div
+ div
+ div
+ div
+
solid-form.form.button-register(
bind-resources
fields='status, line-1(name, owner), description'
range-owner=`${endpoints.users || endpoints.get.users}`
- label-status='Statut du canal'
+ label-status='Statut du cercle'
widget-status='hubl-status'
- label-name='Nom du canal'
+ label-name='Nom du cercle'
label-owner='Administrateur ou administratrice'
- label-description='Sous-titre du canal *'
+ label-description='Sous-titre du cercle *'
class-name='form-label is-light is-half-width input-text-like'
class-owner='form-label is-light is-half-width member-select color'
@@ -99,6 +105,7 @@ div.content-box__info
class='table-body'
bind-resources
fields='members'
+ loader-id='loader-circle-edit'
multiple-members=''
widget-members='hubl-team-template-edit'
diff --git a/src/views/circle/page-circle-left.pug b/src/views/circle/page-circle-left.pug
index 0a6b700..5ecf22c 100644
--- a/src/views/circle/page-circle-left.pug
+++ b/src/views/circle/page-circle-left.pug
@@ -1,5 +1,5 @@
#circle-left(hidden)
div.content-box__info.flex(style="padding: 15px")
- p Tu as quitté ce canal.
+ p Tu as quitté ce cercle.
p Pour le rejoindre à nouveau, rends-toi dans le panneau administration ou contacte un administrateur.
diff --git a/src/views/circle/page-circle-notifications.pug b/src/views/circle/page-circle-notifications.pug
new file mode 100644
index 0000000..239c674
--- /dev/null
+++ b/src/views/circle/page-circle-notifications.pug
@@ -0,0 +1,10 @@
+solid-notifications-template(data-rdf-type='hd:circle')
+ template
+ .solid-notification__avatar
+ | ${await author['account.foaf:depiction'] ? `` : ``}
+ .solid-notification__content
+ .solid-notification__title ${await author.name}
+ span.solid-notification__title__side dans
+ span.solid-notification__title__icon ${(await object.status) == 'Public' ? '#' : ''}
+ | ${await object.name}
+ p.solid-notification__summary ${summary}
diff --git a/src/views/circle/page-circle-profile.pug b/src/views/circle/page-circle-profile.pug
index df4f59e..3a699ed 100644
--- a/src/views/circle/page-circle-profile.pug
+++ b/src/views/circle/page-circle-profile.pug
@@ -7,10 +7,17 @@ solid-router(default-route='circle-profile', hidden)
.content-box__info.flex
+ div#loader-circle-profile.loader
+ div
+ div
+ div
+ div
+
.flex.space-between.with-padding.mobile-vertical-align
solid-display.mobile-margin__bottom(
bind-resources
fields='creationDateSet(title, creationDate)'
+ loader-id='loader-circle-profile'
class-title='word-spacing-right'
@@ -19,7 +26,10 @@ solid-router(default-route='circle-profile', hidden)
widget-creationDate='solid-display-date'
)
solid-ac-checker(permission='acl:Append', bind-resources, nested-field='members')
- solid-link(class='button mobile-full-width text-bold text-uppercase reversed button-primary bordered with-icon icon-pencil' next='circle-edit' bind-resources) Modifier et ajouter un membre
+ solid-ac-checker(permission='acl:Delete', bind-resources)
+ solid-link(class='button mobile-full-width text-bold text-uppercase reversed button-primary bordered with-icon icon-pencil' next='circle-edit' bind-resources) Modifier et ajouter un membre
+ solid-ac-checker(no-permission='acl:Delete', bind-resources)
+ solid-link(class='button mobile-full-width text-bold text-uppercase reversed button-primary bordered with-icon icon-pencil' next='circle-edit' bind-resources) Ajouter un membre
div.flex.desktop-button__end
@@ -27,16 +37,18 @@ solid-router(default-route='circle-profile', hidden)
solid-delete(
class='button mobile-full-width text-bold text-uppercase button-primary bordered with-icon icon-trash'
bind-resources
- data-label='Supprimer le canal'
+ data-label='Supprimer le cercle'
)
solid-widget(name='hubl-circle-leave-button')
template
- solid-delete(
- class='button mobile-full-width desktop-btn-margin__left text-bold text-uppercase reversed button-secondary bordered with-icon icon-close'
- data-src="${src}"
- data-label='Quitter le canal'
- )
+ solid-ac-checker(no-permission='acl:Delete', data-src="${src}", nested-field="circle")
+ solid-delete(
+ class='button mobile-full-width desktop-btn-margin__left text-bold text-uppercase reversed button-secondary bordered with-icon icon-close'
+ data-src="${src}"
+ data-label='Quitter le cercle'
+ next='circle-left'
+ )
solid-widget(name='hubl-circle-join-button')
template
@@ -45,14 +57,11 @@ solid-router(default-route='circle-profile', hidden)
data-src=''
nested-field='members'
- fields='user.@id'
- label-user.@id=''
- value-user.@id=''
- widget-user.@id='solid-form-hidden'
+ fields='user.username'
+ value-user.username='hubl-workaround-493'
+ widget-user.username='solid-form-hidden'
- hubl-inherit-bind-user2input="input[name='user.@id']"
-
- submit-button='Rejoindre le canal'
+ submit-button='Rejoindre le cercle'
)
solid-display(
@@ -74,12 +83,11 @@ solid-router(default-route='circle-profile', hidden)
solid-display.block(
bind-resources
fields='members'
+ loader-id='loader-circle-profile'
multiple-members=''
widget-members='hubl-circle-team-template'
)
-
-
#circle-edit.content-box__height(hidden)
include page-circle-edit.pug
diff --git a/src/views/project/page-project-edit.pug b/src/views/project/page-project-edit.pug
index cce893a..82a6c1a 100644
--- a/src/views/project/page-project-edit.pug
+++ b/src/views/project/page-project-edit.pug
@@ -4,57 +4,48 @@ div.content-box__info
solid-link(class='backlink right', bind-resources, next='project-profile') Retour
- h1 Modifie ton projet
+ solid-ac-checker(permission='acl:Write', bind-resources)
+ h1 Modifie ton projet
- solid-form.form.button-register(
- bind-resources
-
- fields='status, line-1(customer.name, name), description'
+ div#loader-project-edit.loader.loader-top
+ div
+ div
+ div
+ div
- label-status='Statut du canal*'
- widget-status='hubl-status'
- class-status='form-label is-light is-full-width member-select color'
+ solid-form.form.button-register(
+ bind-resources
+
+ fields='line-1(customer.name, name)'
- label-name='Nom du projet*'
- class-name='form-label is-light is-half-width input-text-like'
- label-customer.name='Nom du client*'
- class-customer.name='form-label is-light is-half-width input-text-like'
+ label-name='Nom du projet*'
+ class-name='form-label is-light is-half-width input-text-like'
- label-description='Description du projet'
- class-description='form-label is-light is-full-width input-text-like'
- widget-description='solid-form-textarea'
+ label-customer.name='Nom du client*'
+ class-customer.name='form-label is-light is-half-width input-text-like'
- partial=""
+ partial=""
- submit-button='Enregistrer'
- next='project-information'
- )
-
- h2 Photo du projet
-
- solid-form.form-picture(
- bind-resources
- fields='customer.logo'
- widget-customer.logo="hubl-user-avatar"
- submit-button='Edit'
- next='project-picture'
- )
+ submit-button='Enregistrer'
+ next='project-information'
+ )
h2 Liste des membres :
- solid-form.block.select-add(
- bind-resources
- nested-field='members'
- fields='user'
- range-user=`${endpoints.users || endpoints.get.users}`
+ solid-ac-checker(permission='acl:Append', bind-resources, nested-field='members')
+ solid-form.block.select-add(
+ bind-resources
+ nested-field='members'
+ fields='user'
+ range-user=`${endpoints.users || endpoints.get.users}`
- class-user='team form-label is-light'
- label-user=''
- widget-user='solid-form-auto-completion'
+ class-user='team form-label is-light'
+ label-user=''
+ widget-user='solid-form-auto-completion'
- submit-button='Ajouter un membre'
- )
+ submit-button='Ajouter un membre'
+ )
.table-wrapper
.table
@@ -67,6 +58,7 @@ div.content-box__info
class='table-body'
bind-resources
fields='members'
+ loader-id='loader-project-edit'
multiple-members=''
widget-members='hubl-team-template-edit'
diff --git a/src/views/project/page-project-left.pug b/src/views/project/page-project-left.pug
index 0283db4..baac307 100644
--- a/src/views/project/page-project-left.pug
+++ b/src/views/project/page-project-left.pug
@@ -2,4 +2,4 @@
div.content-box__info.flex(style="padding: 15px")
p Tu as quitté ce projet.
- p Ceci est un groupe privé. Pour le rejoindre, rends-toi dans le panneau administration et demande une invitation.
+ p Ceci est un projet privé. Pour le rejoindre, rends-toi dans le panneau administration et demande une invitation.
diff --git a/src/views/project/page-project-picture.pug b/src/views/project/page-project-picture.pug
index 9257a73..7bea1d9 100644
--- a/src/views/project/page-project-picture.pug
+++ b/src/views/project/page-project-picture.pug
@@ -4,7 +4,7 @@ div.content-box__info
h1 Modifier l'image du projet
- solid-picture(
+ solid-picture.project-edit-picture(
bind-resources
upload-src=`${endpoints.uploads || endpoints.post.uploads}`
upload-id="solid-project-edit-picture"
diff --git a/src/views/project/page-project-profile.pug b/src/views/project/page-project-profile.pug
index c3167df..a81fd3e 100644
--- a/src/views/project/page-project-profile.pug
+++ b/src/views/project/page-project-profile.pug
@@ -4,15 +4,21 @@ solid-router(default-route='project-profile', hidden)
#project-profile(hidden)
include ../../templates/hubl-captain.pug
- include ../../templates/hubl-circle-team.pug
include ../../templates/hubl-project-team.pug
.content-box__info.flex
+ div#loader-project-profile.loader
+ div
+ div
+ div
+ div
+
.flex.space-between.with-padding.mobile-vertical-align
solid-display.mobile-margin__bottom(
bind-resources
fields='creationDateSet(title, creationDate)'
+ loader-id='loader-project-profile'
class-title='word-spacing-right'
@@ -21,23 +27,43 @@ solid-router(default-route='project-profile', hidden)
widget-creationDate='solid-display-date'
)
solid-ac-checker(permission='acl:Append', bind-resources, nested-field='members')
- solid-link(class='button mobile-full-width text-bold text-uppercase reversed button-primary bordered with-icon icon-pencil' next='project-edit' bind-resources) Modifier et ajouter un membre
+ solid-ac-checker(permission='acl:Delete', bind-resources)
+ solid-link(class='button mobile-full-width text-bold text-uppercase reversed button-primary bordered with-icon icon-pencil' next='project-edit' bind-resources) Modifier et ajouter un membre
+ solid-ac-checker(no-permission='acl:Delete', bind-resources)
+ solid-link(class='button mobile-full-width text-bold text-uppercase reversed button-primary bordered with-icon icon-pencil' next='project-edit' bind-resources) Ajouter un membre
- solid-display(
- class='flex desktop-button__end'
- bind-resources
- nested-field='members'
- fields='relation'
+ div.flex.desktop-button__end
+ solid-ac-checker(permission='acl:Delete', bind-resources)
+ solid-delete(
+ class='button mobile-full-width text-bold text-uppercase button-primary bordered with-icon icon-trash'
+ bind-resources
+ data-label='Supprimer le projet'
+ )
- action-relation='relation'
- widget-relation='hubl-project-leave-button'
+ solid-widget(name='hubl-project-leave-button')
+ template
+ solid-delete(
+ class='button mobile-full-width desktop-btn-margin__left text-bold text-uppercase reversed button-secondary bordered with-icon icon-close'
+ data-src="${src}"
+ data-label='Quitter le projet'
+ next='project-left'
+ )
- search-fields='user'
- search-widget-user='solid-form-hidden'
- search-value-user=""
+ solid-ac-checker(no-permission='acl:Delete', bind-resources)
+ solid-display(
+ bind-resources
+ nested-field='members'
+ fields='relation'
- hubl-inherit-user-id="search-value-user"
- )
+ action-relation='relation'
+ widget-relation='hubl-project-leave-button'
+
+ search-fields='user'
+ search-widget-user='solid-form-hidden'
+ search-value-user=""
+
+ hubl-inherit-user-id="search-value-user"
+ )
.flex.space-between
solid-display(
@@ -48,13 +74,8 @@ solid-router(default-route='project-profile', hidden)
class-label-captain='h2-like'
widget-captain='hubl-captain'
)
- solid-display(
- class='customer-logo'
- bind-resources
- fields='customer.logo'
-
- widget-customer.logo='solid-display-img'
- )
+
+ br
h2 Equipe :
@@ -66,14 +87,5 @@ solid-router(default-route='project-profile', hidden)
widget-members='hubl-project-team'
)
-
- solid-widget(name='hubl-project-leave-button')
- template
- solid-delete(
- class='button desktop-btn-margin__left text-bold text-uppercase reversed button-secondary bordered with-icon icon-close'
- data-src="${src}"
- data-label='Quitter le groupe'
- )
-
#project-edit.content-box__height(hidden)
include page-project-edit.pug
diff --git a/src/views/user/page-user-notifications.pug b/src/views/user/page-user-notifications.pug
new file mode 100644
index 0000000..ee785d9
--- /dev/null
+++ b/src/views/user/page-user-notifications.pug
@@ -0,0 +1,8 @@
+solid-notifications-template(data-rdf-type='foaf:user')
+ template
+ .solid-notification__avatar
+ | ${await author['account.foaf:depiction'] ? `` : ``}
+ .solid-notification__content
+ .solid-notification__title ${await author.name}
+ span.solid-notification__title__side en privé
+ p.solid-notification__summary ${summary}
\ No newline at end of file