Skip to content

Commit

Permalink
Filter style update
Browse files Browse the repository at this point in the history
  • Loading branch information
fabienSvstr authored and NicoTuxx committed Jan 16, 2024
1 parent b46253e commit 6349f08
Show file tree
Hide file tree
Showing 5 changed files with 102 additions and 65 deletions.
10 changes: 0 additions & 10 deletions client/src/components/core/ms-dropdown/MsDropdown.vue
Original file line number Diff line number Diff line change
Expand Up @@ -109,16 +109,6 @@ function getIcon(): string {
}
}

.option {
--background-hover: var(--parsec-color-light-primary-50);
--color-hover: var(--ion-color-tertiary);

&.selected {
color: var(--parsec-color-light-primary-700);
font-weight: bold;
}
}

.dropdown-container {
// offset necessary to simulate border 3px on focus with outline (outline 2px + border 1px)
--offset: 2px;
Expand Down
14 changes: 6 additions & 8 deletions client/src/components/core/ms-sorter/MsSorter.vue
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
fill="clear"
@click="openPopover($event)"
id="select-popover-button"
class="filter-button button-medium"
class="filter-button button-small"
:disabled="disabled"
>
<ion-icon
Expand Down Expand Up @@ -78,14 +78,12 @@ async function onDidDismissPopover(popover: any): Promise<void> {
.filter-button {
background: none;
color: var(--parsec-color-light-primary-700);
}
.option {
--background-hover: var(--parsec-color-light-primary-50);
--color-hover: var(--ion-color-tertiary);
height: fit-content;
margin-right: 1rem;
--background-hover: var(--parsec-color-light-secondary-medium);

&.selected {
color: var(--parsec-color-light-primary-700);
font-weight: bold;
&::part(native) {
padding: 0.5rem;
}
}
.ms-sorter-icon {
Expand Down
133 changes: 90 additions & 43 deletions client/src/components/core/ms-sorter/MsSorterPopover.vue
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
<!-- Parsec Cloud (https://parsec.cloud) Copyright (c) BUSL-1.1 2016-present Scille SAS -->

<template>
<ion-list class="container">
<ion-list class="sorter-container">
<ion-item
v-if="sorterLabels"
id="sort-order-button"
class="option body-small"
class="order-button body-sm"
button
@click="onOptionClick()"
>
Expand All @@ -15,25 +15,27 @@
slot="end"
/>
</ion-item>
<ion-item
class="option body"
:class="{ selected: selectedOption?.key === option.key }"
:disabled="option.disabled"
button
lines="none"
v-for="option in options.set"
:key="option.key"
@click="onOptionClick(option)"
>
{{ option.label }}
<ion-icon
slot="end"
:icon="checkmark"
class="checked"
<div class="sorter-list">
<ion-item
class="sorter-list-item body"
:class="{ selected: selectedOption?.key === option.key }"
v-if="selectedOption?.key === option.key"
/>
</ion-item>
:disabled="option.disabled"
button
lines="none"
v-for="option in options.set"
:key="option.key"
@click="onOptionClick(option)"
>
<span class="body">{{ option.label }}</span>
<ion-icon
slot="end"
:icon="checkmark"
class="checked"
:class="{ selected: selectedOption?.key === option.key }"
v-if="selectedOption?.key === option.key"
/>
</ion-item>
</div>
</ion-list>
</template>

Expand Down Expand Up @@ -68,38 +70,83 @@ function onOptionClick(option?: MsOption): void {
</script>

<style lang="scss" scoped>
.option {
--background-hover: var(--parsec-color-light-primary-50);
--background-hover-opacity: 1;
.sorter-container {
padding: 0;
display: flex;
flex-direction: column;
gap: 0.5rem;
}

#sort-order-button {
--background: none;
--color: var(--parsec-color-light-secondary-grey);
--color-hover: var(--parsec-color-light-primary-700);
--border-radius: var(--parsec-radius-4);
--padding-top: 0.375rem;
--padding-bottom: 0.375rem;
--padding-start: 0.75rem;
--padding-end: 0.75rem;
--inner-padding-end: 0;
padding: 0.25rem;
width: 100%;
margin-left: auto;
transition: transform 0.2s ease-in-out;
border-bottom: 1px solid var(--parsec-color-light-secondary-disabled);
cursor: pointer;

&.selected {
color: var(--parsec-color-light-primary-700);
&::part(native) {
width: auto;
margin-left: auto;
}
.checked.selected {
color: var(--parsec-color-light-primary-700);

&:hover {
background: var(--parsec-color-light-secondary-background);
--background-hover: none;
--color-hover: var(--parsec-color-light-secondary-text);

ion-icon {
color: var(--parsec-color-light-secondary-text);
}
}

ion-icon {
margin-left: 1em;
color: var(--parsec-color-light-secondary-grey);
margin: 0;
padding-left: 0.375rem;
font-size: 1rem;
}
}
#sort-order-button {
--background: var(--parsec-color-light-secondary-medium);
--color: var(--parsec-color-light-secondary-text);
--color-hover: var(--parsec-color-light-secondary-text);
--border-radius: 25px;
width: fit-content;
padding-right: 0.5rem;
margin-left: auto;
margin-bottom: 0.5rem;
--min-height: 2rem;

ion-icon {
margin: 0;
padding-left: 0.5rem;
font-size: 1.25rem;
.sorter-list {
padding: 0.25rem;

&-item {
--background-hover: var(--parsec-color-light-secondary-medium);
--background-hover-opacity: 1;
--color: var(--parsec-color-light-secondary-grey);
--color-hover: var(--parsec-color-light-secondary-text);
--border-radius: var(--parsec-radius-4);
--padding-top: 0.25rem;
--padding-bottom: 0.25rem;
--padding-start: 0.75rem;
--padding-end: 0.75rem;
--inner-padding-end: 0;

&.selected {
color: var(--parsec-color-light-primary-700);
--background-hover: none;

span {
font-weight: 600;
}
}
.checked.selected {
color: var(--parsec-color-light-primary-700);
}

ion-icon {
margin: 0 0 0 1em;
font-size: 1.25rem;
}
}
}
</style>
1 change: 1 addition & 0 deletions client/src/theme/components/popovers.scss
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ ion-popover {
.sorter-popover,
.dropdown-popover {
--width: fit-content;
--height: fit-content;
}

/* --- dropdown option popover --- */
Expand Down
9 changes: 5 additions & 4 deletions client/tests/e2e/specs/test_home_page.ts
Original file line number Diff line number Diff line change
Expand Up @@ -61,11 +61,12 @@ describe('Check organization list', () => {
cy.get('@orgList').should('have.length', 5);
// Change sort order
cy.get('#organization-filter-select').contains('Organization').click();
cy.get('.option').should('have.length', 4);
cy.get('.option').eq(2).contains('User Name').click();
cy.get('.sorter-container').find('ion-item').as('item').should('have.length', 4);
cy.get('@item').should('have.length', 4);
cy.get('@item').eq(2).contains('User Name').click();
cy.get('#organization-filter-select').contains('User Name').click();
cy.get('.option').should('have.length', 4);
cy.get('.option').first().contains('Ascending').click();
cy.get('@item').should('have.length', 4);
cy.get('@item').first().contains('Ascending').click();
// Now sorted by user name desc
cy.get('@orgList').first().contains('Malloryy McMalloryFace');
cy.get('@orgList').last().contains('Alicey McAliceFace');
Expand Down

0 comments on commit 6349f08

Please sign in to comment.