Skip to content

Commit bac25fc

Browse files
authored
Merge pull request #931 from topcoder-platform/TSJR-111-skills-UI-updates
TSJR-111 skills UI updates -> feature/standardized-skills
2 parents 7e1250c + c9a8d4a commit bac25fc

File tree

13 files changed

+79
-153
lines changed

13 files changed

+79
-153
lines changed

package.json

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,6 @@
8989
"react-redux": "^8.0.4",
9090
"react-redux-toastr": "^7.6.10",
9191
"react-responsive": "^9.0.0-beta.5",
92-
"react-responsive-masonry": "^2.1.7",
9392
"react-responsive-modal": "^6.2.0",
9493
"react-router-dom": "^6.4.2",
9594
"react-scripts": "5.0.1",
@@ -160,7 +159,6 @@
160159
"@types/react-gtm-module": "^2.0.1",
161160
"@types/react-helmet": "^6.1.6",
162161
"@types/react-redux-toastr": "^7.6.2",
163-
"@types/react-responsive-masonry": "^2.1.1",
164162
"@types/react-router-dom": "^5.3.3",
165163
"@types/redux-actions": "2.6.2",
166164
"@types/redux-logger": "^3.0.9",

src/apps/profiles/src/member-profile/skills/MemberSkillsInfo.module.scss

Lines changed: 5 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -22,30 +22,13 @@
2222
justify-content: space-between;
2323
align-items: center;
2424
margin-bottom: $sp-6;
25-
26-
.skillActions {
27-
display: flex;
28-
align-items: center;
29-
30-
@include ltemd {
31-
flex-direction: column;
32-
align-items: flex-end;
33-
}
34-
35-
> button:nth-child(2) {
36-
margin-left: $sp-4;
37-
38-
@include ltemd {
39-
margin-left: 0;
40-
}
41-
}
42-
}
4325
}
4426

4527
.skillsWrap {
46-
display: flex;
47-
flex-wrap: wrap;
48-
column-gap: $sp-1;
49-
row-gap: $sp-2;
28+
padding-bottom: $sp-8;
29+
30+
@include ltemd {
31+
padding-bottom: $sp-4;
32+
}
5033
}
5134
}

src/apps/profiles/src/member-profile/skills/MemberSkillsInfo.tsx

Lines changed: 8 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ const MemberSkillsInfo: FC<MemberSkillsInfoProps> = (props: MemberSkillsInfoProp
3535

3636
const groupedSkillsByCategory: { [key: string]: UserSkill[] } = useMemo(() => {
3737
const grouped: { [key: string]: UserSkill[] } = {}
38+
const sortedGroupedSkillsByCategory: { [key: string]: UserSkill[] } = {}
3839

3940
memberSkills.forEach((skill: UserSkill) => {
4041
if (grouped[skill.category.name]) {
@@ -44,11 +45,14 @@ const MemberSkillsInfo: FC<MemberSkillsInfoProps> = (props: MemberSkillsInfoProp
4445
}
4546
})
4647

47-
return grouped
48-
}, [memberSkills])
48+
Object.keys(grouped)
49+
.sort()
50+
.forEach(key => {
51+
sortedGroupedSkillsByCategory[key] = grouped[key]
52+
})
4953

50-
const [skillsCatsCollapsed, setSkillsCatsCollapsed]: [boolean, Dispatch<SetStateAction<boolean>>]
51-
= useState<boolean>(true)
54+
return sortedGroupedSkillsByCategory
55+
}, [memberSkills])
5256

5357
const [isEditMode, setIsEditMode]: [boolean, Dispatch<SetStateAction<boolean>>]
5458
= useState<boolean>(false)
@@ -87,10 +91,6 @@ const MemberSkillsInfo: FC<MemberSkillsInfoProps> = (props: MemberSkillsInfoProp
8791
setHowSkillsWorkVisible(false)
8892
}
8993

90-
function handleExpandAllClick(): void {
91-
setSkillsCatsCollapsed(!skillsCatsCollapsed)
92-
}
93-
9494
return (
9595
<div className={styles.container}>
9696
{
@@ -119,24 +119,13 @@ const MemberSkillsInfo: FC<MemberSkillsInfoProps> = (props: MemberSkillsInfoProp
119119
onClick={handleHowSkillsWorkClick}
120120
variant='linkblue'
121121
/>
122-
{
123-
memberSkills.length > 0 && (
124-
<Button
125-
link
126-
label={skillsCatsCollapsed ? 'Expand all' : 'Collapse all'}
127-
onClick={handleExpandAllClick}
128-
variant='linkblue'
129-
/>
130-
)
131-
}
132122
</div>
133123
</div>
134124

135125
<div className={styles.skillsWrap}>
136126
{memberSkills.length > 0 && (
137127
<GroupedSkillsUI
138128
groupedSkillsByCategory={groupedSkillsByCategory}
139-
skillsCatsCollapsed={skillsCatsCollapsed}
140129
/>
141130
)}
142131
{!memberSkills.length && (

src/libs/shared/lib/components/collapsible-skills-list/CollapsibleSkillsList.tsx

Lines changed: 0 additions & 51 deletions
This file was deleted.

src/libs/shared/lib/components/collapsible-skills-list/index.ts

Lines changed: 0 additions & 1 deletion
This file was deleted.

src/libs/shared/lib/components/grouped-skills-ui/GroupedSkillsUI.module.scss

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,13 @@
22

33
.skillsCategories {
44
flex: 1;
5+
columns: 3 auto;
6+
7+
@include xl {
8+
columns: 2 auto;
9+
}
10+
11+
@include ltelg {
12+
columns: 1 auto;
13+
}
514
}
Lines changed: 23 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,41 @@
11
import { FC } from 'react'
2-
import Masonry, { ResponsiveMasonry } from 'react-responsive-masonry'
32

43
import { UserSkill } from '~/libs/core'
54
import { SkillPill } from '~/libs/shared'
65

7-
import { CollapsibleSkillsList } from '../collapsible-skills-list'
6+
import { SkillsList } from '../skills-list'
87

98
import styles from './GroupedSkillsUI.module.scss'
109

1110
interface GroupedSkillsUIProps {
1211
groupedSkillsByCategory: { [key: string]: UserSkill[] }
13-
skillsCatsCollapsed: boolean
1412
}
1513
const GroupedSkillsUI: FC<GroupedSkillsUIProps> = (props: GroupedSkillsUIProps) => (
16-
<ResponsiveMasonry
14+
<div
1715
className={styles.skillsCategories}
18-
columnsCountBreakPoints={{ 350: 1, 750: 2, 900: 3 }}
1916
>
20-
<Masonry>
21-
{
22-
Object.keys(props.groupedSkillsByCategory)
23-
.map((categoryName: string) => (
17+
{
18+
Object.keys(props.groupedSkillsByCategory)
19+
.map((categoryName: string) => (
2420

25-
<CollapsibleSkillsList
26-
key={categoryName}
27-
header={categoryName}
28-
isCollapsed={props.skillsCatsCollapsed}
29-
>
30-
{
31-
props.groupedSkillsByCategory[categoryName]
32-
.map((skill: UserSkill) => (
33-
<SkillPill
34-
skill={skill}
35-
key={skill.id}
36-
theme='catList'
37-
/>
38-
))
39-
}
40-
</CollapsibleSkillsList>
41-
))
42-
}
43-
</Masonry>
44-
</ResponsiveMasonry>
21+
<SkillsList
22+
key={categoryName}
23+
header={categoryName}
24+
>
25+
{
26+
props.groupedSkillsByCategory[categoryName]
27+
.map((skill: UserSkill) => (
28+
<SkillPill
29+
skill={skill}
30+
key={skill.id}
31+
theme='catList'
32+
/>
33+
))
34+
}
35+
</SkillsList>
36+
))
37+
}
38+
</div>
4539
)
4640

4741
export default GroupedSkillsUI

src/libs/shared/lib/components/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@ export * from './member-skill-editor'
66
export * from './skill-pill'
77
export * from './expandable-list'
88
export * from './grouped-skills-ui'
9-
export * from './collapsible-skills-list'
9+
export * from './skills-list'

src/libs/shared/lib/components/skill-pill/SkillPill.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import classNames from 'classnames'
44
import { IconOutline } from '~/libs/ui'
55
import { UserSkill } from '~/libs/core'
66

7-
import { isSkillVerified } from '../../services'
7+
import { isSkillVerified } from '../../services/standard-skills'
88

99
import styles from './SkillPill.module.scss'
1010

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -25,25 +25,12 @@
2525
display: flex;
2626
justify-content: flex-start;
2727
align-items: flex-start;
28-
cursor: pointer;
2928

3029
.title {
3130
font-weight: 700;
3231
font-size: 14px;
3332
}
3433

35-
.btn {
36-
padding-left: 0;
37-
padding-right: $sp-2;
38-
color: $turq-120;
39-
40-
svg {
41-
flex: 0 0 auto;
42-
color: $turq-120;
43-
@include icon-size(16);
44-
}
45-
}
46-
4734
.badgeCount {
4835
background-color: $black-10;
4936
border-radius: 50%;
@@ -58,11 +45,11 @@
5845
transition: opacity 0.3s ease-in-out;
5946
max-height: auto;
6047
opacity: 1;
61-
padding-left: $sp-8;
48+
padding-left: $sp-4;
6249
margin-top: $sp-1;
6350

6451
@include ltemd {
65-
padding-left: $sp-4;
52+
padding-left: $sp-2;
6653
}
6754
}
6855
}

0 commit comments

Comments
 (0)