Skip to content
This repository was archived by the owner on Dec 21, 2022. It is now read-only.

Commit 907e84c

Browse files
authored
Merge pull request #1624 from mendix/feat/WC_1289_internal-feedback-for-language-selector
[WC-1289] internal feedback for language selector
2 parents e09fb53 + cdf5273 commit 907e84c

File tree

9 files changed

+59
-27
lines changed

9 files changed

+59
-27
lines changed

packages/pluggableWidgets/language-selector-web/src/LanguageSelector.editorConfig.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,20 +15,20 @@ export function getPreview(__values: LanguageSelectorPreviewProps, isDarkMode: b
1515
children: [
1616
{
1717
type: "Text",
18-
content: "Current language",
18+
content: "Selected language",
1919
fontColor: isDarkMode ? "#DEDEDE" : "#899499"
2020
},
2121
{ type: "Container", grow: 0.001 }, // small space between items
2222
{
2323
type: "Container",
24-
padding: 6,
24+
padding: 4,
2525
children: [
2626
{
2727
type: "Image",
2828
document: decodeURIComponent(
2929
(isDarkMode ? ArrowLight : ArrowDark).replace("data:image/svg+xml,", "")
3030
),
31-
height: 8
31+
height: 14
3232
}
3333
]
3434
},

packages/pluggableWidgets/language-selector-web/src/LanguageSelector.editorPreview.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { LanguageSwitcher } from "./components/LanguageSwitcher";
55
export const preview = (props: LanguageSelectorPreviewProps): ReactElement => {
66
return (
77
<LanguageSwitcher
8-
preview={false}
8+
preview
99
currentLanguage={{ _guid: "1", value: "Current language" }}
1010
languageList={[{ _guid: "1", value: "Current language" }]}
1111
position={props.position}

packages/pluggableWidgets/language-selector-web/src/LanguageSelector.xml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,10 @@
1212
<caption>Data source</caption>
1313
<description>Recommended: Database data source with System.Language as entity.</description>
1414
</property>
15-
<property key="languageCaption" type="textTemplate" dataSource="languageOptions" required="true">
15+
<property key="languageCaption" type="expression" dataSource="languageOptions" required="true">
1616
<caption>Language caption</caption>
17-
<description>Recommended: {1} with attribute Language.Description as parameter.</description>
17+
<description>Recommended: $currentObject/Description.</description>
18+
<returnType type="String" />
1819
</property>
1920
</propertyGroup>
2021
<propertyGroup caption="General">
Lines changed: 3 additions & 0 deletions
Loading
Lines changed: 2 additions & 2 deletions
Loading
Lines changed: 2 additions & 2 deletions
Loading

packages/pluggableWidgets/language-selector-web/src/components/LanguageSwitcher.tsx

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import {
1414
} from "../utils/document";
1515
import { PositionEnum, TriggerEnum } from "../../typings/LanguageSelectorProps";
1616
import { LanguageItem } from "../LanguageSelector";
17+
import ArrowIcon from "../assets/arrow_black.svg";
1718

1819
export interface LanguageSwitcherProps {
1920
preview: boolean;
@@ -25,12 +26,11 @@ export interface LanguageSwitcherProps {
2526
className: string;
2627
}
2728
export const LanguageSwitcher = (props: LanguageSwitcherProps): ReactElement => {
28-
const preview = !!props.preview;
2929
const { languageList, trigger } = props;
3030
const [visibility, setVisibility] = useState(false);
3131
const ref = useRef<HTMLDivElement>(null);
3232

33-
if (!preview) {
33+
if (!props.preview) {
3434
handleOnClickOutsideElement(ref, () => setVisibility(false));
3535
}
3636

@@ -67,16 +67,17 @@ export const LanguageSwitcher = (props: LanguageSwitcherProps): ReactElement =>
6767
<div ref={ref} className={classNames(props.className, "widget-language-selector", "popupmenu")} {...onHover}>
6868
<div className={"popupmenu-trigger popupmenu-trigger-alignment"} {...onClick}>
6969
<span className="current-language-text">{props.currentLanguage?.value || ""}</span>
70-
<span
71-
className={`language-arrow glyphicon glyphicon-chevron-${visibility ? "up" : "down"}`}
72-
aria-hidden="true"
73-
></span>
70+
<span className="language-arrow" aria-hidden="true">
71+
<img className={`${visibility ? "arrow-up" : "arrow-down"}`} src={ArrowIcon} alt="" />
72+
</span>
7473
</div>
7574
<div className={classNames("popupmenu-menu", `popupmenu-position-${props.position}`)}>
7675
{languageList.map(item => (
7776
<div
7877
key={item._guid}
79-
className={"popupmenu-basic-item"}
78+
className={`popupmenu-basic-item ${
79+
item._guid === props.currentLanguage?._guid ? "active" : ""
80+
}`}
8081
onClick={() => {
8182
if (props.onSelect) {
8283
return props.onSelect(item);

packages/pluggableWidgets/language-selector-web/src/components/__tests__/__snapshots__/LanguageSwitcher.spec.tsx.snap

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,13 @@ exports[`Language switcher renders the structure with empty language list 1`] =
1313
/>
1414
<span
1515
aria-hidden="true"
16-
class="language-arrow glyphicon glyphicon-chevron-down"
17-
/>
16+
class="language-arrow"
17+
>
18+
<img
19+
alt=""
20+
class="arrow-down"
21+
/>
22+
</span>
1823
</div>
1924
<div
2025
class="popupmenu-menu popupmenu-position-left"
@@ -38,14 +43,19 @@ exports[`Language switcher renders the structure with language list and selected
3843
</span>
3944
<span
4045
aria-hidden="true"
41-
class="language-arrow glyphicon glyphicon-chevron-down"
42-
/>
46+
class="language-arrow"
47+
>
48+
<img
49+
alt=""
50+
class="arrow-down"
51+
/>
52+
</span>
4353
</div>
4454
<div
4555
class="popupmenu-menu popupmenu-position-left"
4656
>
4757
<div
48-
class="popupmenu-basic-item"
58+
class="popupmenu-basic-item active"
4959
>
5060
En us
5161
</div>

packages/pluggableWidgets/language-selector-web/src/ui/LanguageSelector.scss

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,36 @@
33
.current-language-text,
44
.language-arrow {
55
color: white;
6+
img {
7+
filter: invert(1);
8+
}
69
}
710
}
811
}
912

1013
.widget-language-selector {
11-
.popupmenu-trigger-alignement {
12-
display: flex;
13-
align-items: center;
14+
.language-arrow {
15+
transition: transform 0.2s ease-in-out 50ms;
16+
img {
17+
height: 14px !important;
18+
&.arrow-up {
19+
transform: rotate(180deg);
20+
}
21+
}
1422
}
1523
.current-language-text {
1624
margin-right: 6px;
25+
font-size: 14px;
1726
}
18-
.popupmenu-basic-item {
19-
border: 1px solid #ced0d3;
27+
.popupmenu-menu {
28+
background: #f8f8f8;
29+
.popupmenu-basic-item {
30+
&.active {
31+
font-weight: 600;
32+
}
33+
&:hover {
34+
background: #ffffff;
35+
}
36+
}
2037
}
2138
}

0 commit comments

Comments
 (0)