Skip to content

Commit f9b1683

Browse files
authored
Merge pull request #1 from JelteMX/feature/string_manipulation
Feature/string manipulation
2 parents a35a1d9 + 44f727a commit f9b1683

File tree

10 files changed

+2628
-2011
lines changed

10 files changed

+2628
-2011
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
11
dist/
22
node_modules/
33
*.log
4+
.env
5+
.vscode

README.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1+
[![Apache License](https://img.shields.io/badge/license-Apache%202.0-orange.svg?style=flat-square)](http://www.apache.org/licenses/LICENSE-2.0)
12
[![Dependencies](https://david-dm.org/JelteMX/mendix-attribute-helper-widget.svg)]([https://david-dm.org/JelteMX/mendix-attribute-helper-widget](https://david-dm.org/JelteMX/mendix-attribute-helper-widget))
23
[![DevDependencies](https://david-dm.org/JelteMX/mendix-attribute-helper-widget/dev-status.svg)]([https://david-dm.org/JelteMX/mendix-attribute-helper-widget?type=dev](https://david-dm.org/JelteMX/mendix-attribute-helper-widget?type=dev))
34
[![Support](https://img.shields.io/badge/Support-Community%20(no%20active%20support)-orange.svg)](https://docs.mendix.com/developerportal/app-store/app-store-content-support)
45
[![Studio](https://img.shields.io/badge/Studio%20version-8.0%2B-blue.svg)](https://appstore.home.mendix.com/link/modeler/)
5-
![GitHub release](https://img.shields.io/github/release/JelteMX/mendix-attribute-helper-widget)
6-
![GitHub issues](https://img.shields.io/github/issues/JelteMX/mendix-attribute-helper-widget)
6+
[![GitHub release](https://img.shields.io/github/release/JelteMX/mendix-attribute-helper-widget)](https://github.com/JelteMX/mendix-attribute-helper-widget/releases/latest)
7+
[![GitHub issues](https://img.shields.io/github/issues/JelteMX/mendix-attribute-helper-widget)](https://github.com/JelteMX/mendix-attribute-helper-widget/issues)
8+
[![DeepScan grade](https://deepscan.io/api/teams/7221/projects/9848/branches/130760/badge/grade.svg)](https://deepscan.io/dashboard#view=project&tid=7221&pid=9848&bid=130760)
79

810
# Attribute Helper Widget
911

@@ -21,6 +23,7 @@ A widget that sets attributes on elements, based on your attribute values in you
2123
- Select a (custom) HTML-attribute like `data-custom-attribute`
2224
- Select a text-value for this attribute, where you can use attribute values from you context object. For example `{1}`, where the first argument will be the String value `Name` in your Mendix object
2325
- The widget will set the following attribute on the selected element(s): `data-custom-attribute="Value"`. This can then be used in styling your application.
26+
- You can manipulate the value before you set it: Remove spaces, make it Uppercase/Lowercase
2427

2528
## Alternatives
2629

assets/settings3.png

9.6 KB
Loading

assets/settings4.png

-29.9 KB
Loading

package-lock.json

Lines changed: 2570 additions & 1996 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,14 @@
11
{
22
"name": "attributehelper",
33
"widgetName": "AttributeHelper",
4-
"version": "1.0.0",
4+
"version": "1.1.0",
55
"description": "Set attributes on elements based on your context",
66
"copyright": "Mendix 2019",
77
"author": "Jelte Lagendijk <[email protected]>",
88
"config": {
9-
"widgetPath": "/Volumes/[C] Windows 10.hidden/Projects/MendixProjects/AttributeHelperWidget-main/widgets",
10-
"projectPath": "/Volumes/[C] Windows 10.hidden/Projects/MendixProjects/AttributeHelperWidget-main/",
11-
"mendixHost": "http://10.211.55.3:8080",
12-
"_widgetPath": "./dist/MxTestProject/widgets",
13-
"_projectPath": "./dist/MxTestProject/",
14-
"_mendixHost": "http://localhost:8080",
9+
"widgetPath": "./dist/MxTestProject/widgets",
10+
"projectPath": "./dist/MxTestProject/",
11+
"mendixHost": "http://windows:8080",
1512
"developmentPort": "3000"
1613
},
1714
"packagePath": "mendix",
@@ -26,7 +23,7 @@
2623
},
2724
"license": "Apache-2.0",
2825
"devDependencies": {
29-
"@mendix/pluggable-widgets-tools": "^8.2.0",
26+
"@mendix/pluggable-widgets-tools": "^8.6.0",
3027
"@types/big.js": "^4.0.5",
3128
"@types/classnames": "^2.2.4",
3229
"@types/jest": "^24.0.0",

src/AttributeHelper.tsx

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,9 @@ class AttributeHelper extends Component<AttributeHelperContainerProps> {
4545
transformSiblingFilter,
4646
transformTextTemplate,
4747
transformSiblingSubFilter,
48-
transformParentsSelector
48+
transformParentsSelector,
49+
transformRemoveSpaces,
50+
transformTextTransform
4951
} = transformation;
5052
if (transformTextTemplate.status !== "available") {
5153
return;
@@ -54,17 +56,30 @@ class AttributeHelper extends Component<AttributeHelperContainerProps> {
5456
console.warn(`Widget tries to change ${transformAttribute} attribute, this is prohibited`);
5557
return;
5658
}
59+
60+
let value = transformTextTemplate.value;
61+
62+
if (transformRemoveSpaces) {
63+
value = value.replace(/\s/g, "");
64+
}
65+
66+
if (transformTextTransform === "lowercase") {
67+
value = value.toLowerCase();
68+
} else if (transformTextTransform === "uppercase") {
69+
value = value.toUpperCase();
70+
}
71+
5772
if ((transformElement === "general" && selectorSelection === "parent") || transformElement === "parent") {
5873
const selector = transformElement === "general" ? selectorParentsSelector : transformParentsSelector;
59-
this.handleParent($el, transformAttribute, transformTextTemplate.value, selector);
74+
this.handleParent($el, transformAttribute, value, selector);
6075
} else if (
6176
(transformElement === "general" && selectorSelection === "sibling") ||
6277
transformElement === "sibling"
6378
) {
6479
this.handleSiblings(
6580
$el,
6681
transformAttribute,
67-
transformTextTemplate.value,
82+
value,
6883
transformElement === "general" ? selectorSiblingFilter : transformSiblingFilter,
6984
transformElement === "general" ? selectorSiblingSubFilter : transformSiblingSubFilter
7085
);

src/AttributeHelper.xml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,21 @@
2323
<category>Data</category>
2424
<description>Template for the value. In this you can use a text-template where you have access to values of attributes in the context object.</description>
2525
</property>
26+
<property key="transformRemoveSpaces" type="boolean" defaultValue="false">
27+
<caption>Remove spaces</caption>
28+
<category>Data</category>
29+
<description>Remove any spaces from the value.</description>
30+
</property>
31+
<property key="transformTextTransform" type="enumeration" defaultValue="none">
32+
<caption>Transform</caption>
33+
<category>Data</category>
34+
<description>Text transformation can be used when you need to make the text Uppercase/Lowercase</description>
35+
<enumerationValues>
36+
<enumerationValue key="none">None</enumerationValue>
37+
<enumerationValue key="uppercase">Uppercase</enumerationValue>
38+
<enumerationValue key="lowercase">Lowercase</enumerationValue>
39+
</enumerationValues>
40+
</property>
2641
<!-- Elements -->
2742
<property key="transformElement" type="enumeration" defaultValue="general">
2843
<caption>Element</caption>

src/package.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="utf-8" ?>
22
<package xmlns="http://www.mendix.com/package/1.0/">
3-
<clientModule name="AttributeHelper" version="1.0.0" xmlns="http://www.mendix.com/clientModule/1.0/">
3+
<clientModule name="AttributeHelper" version="1.1.0" xmlns="http://www.mendix.com/clientModule/1.0/">
44
<widgetFiles>
55
<widgetFile path="AttributeHelper.xml"/>
66
</widgetFiles>

typings/AttributeHelperProps.d.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,15 @@ interface CommonProps {
1414
tabIndex: number;
1515
}
1616

17+
export type TransformTextTransformEnum = "none" | "uppercase" | "lowercase";
18+
1719
export type TransformElementEnum = "general" | "parent" | "sibling";
1820

1921
export interface TransformationsType {
2022
transformAttribute: string;
2123
transformTextTemplate: DynamicValue<string>;
24+
transformRemoveSpaces: boolean;
25+
transformTextTransform: TransformTextTransformEnum;
2226
transformElement: TransformElementEnum;
2327
transformSiblingFilter?: string;
2428
transformSiblingSubFilter?: string;
@@ -30,6 +34,8 @@ export type SelectorSelectionEnum = "parent" | "sibling";
3034
export interface TransformationsPreviewType {
3135
transformAttribute: string;
3236
transformTextTemplate: string;
37+
transformRemoveSpaces: boolean;
38+
transformTextTransform: TransformTextTransformEnum;
3339
transformElement: TransformElementEnum;
3440
transformSiblingFilter?: string;
3541
transformSiblingSubFilter?: string;
@@ -39,6 +45,8 @@ export interface TransformationsPreviewType {
3945
export interface TransformationsVisibilityType {
4046
transformAttribute: boolean;
4147
transformTextTemplate: boolean;
48+
transformRemoveSpaces: boolean;
49+
transformTextTransform: boolean;
4250
transformElement: boolean;
4351
transformSiblingFilter: boolean;
4452
transformSiblingSubFilter: boolean;
@@ -53,7 +61,10 @@ export interface AttributeHelperContainerProps extends CommonProps {
5361
selectorParentsSelector?: string;
5462
}
5563

56-
export interface AttributeHelperPreviewProps extends CommonProps {
64+
export interface AttributeHelperPreviewProps {
65+
class: string;
66+
style: string;
67+
styleObject: CSSProperties;
5768
transformations: TransformationsPreviewType[];
5869
selectorSelection: SelectorSelectionEnum;
5970
selectorSiblingFilter?: string;

0 commit comments

Comments
 (0)