Skip to content

Commit ecf0b2a

Browse files
committed
Merge branch 'development' into qt-peerreview
2 parents bc69dd0 + 1d4ab26 commit ecf0b2a

4,273 files changed

Lines changed: 110733 additions & 8099 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.travis.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@ env:
1515
global:
1616
# Global variables can go here, for example HUGO_VERSION if we were using Netlify to publish.
1717

18+
# add group: previous to see if this fixes the stalled npm build - 2025-04-14
19+
# remove again 2025-05-08 as builds started breaking again.
20+
# group: previous
21+
1822
branches:
1923
# build only development and production
2024
only:

content/en/docs/apidocs-mxsdk/apidocs/_index.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ aliases:
99
- /apidocs/
1010
- /apidocs-mxsdk/apidocs/authentication/
1111
- /apidocs/index.html
12+
- /apidocs-mxsdk/apidocs/runtime-api/
1213
#If moving or renaming this doc file, implement a temporary redirect and let the respective team know they should update the URL in the product. See Mapping to Products for more details.
1314
---
1415

content/en/docs/apidocs-mxsdk/apidocs/apps/projects-api-v2.md

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,8 @@ type: swagger
55
description: "The Projects API manages your projects and their teams."
66
weight: 100
77
restapi: true
8-
beta: true
98
---
109

11-
{{% alert color="info" %}} This feature is currently in beta. For more information, see [Beta Releases](/releasenotes/beta-features/). {{% /alert %}}
12-
1310
## Introduction
1411

1512
The Mendix Projects API allows you to create, edit or delete your projects.

content/en/docs/apidocs-mxsdk/apidocs/deployment/pipelines-api.md

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,8 @@ url: /apidocs-mxsdk/apidocs/pipelines-api/
44
type: swagger
55
description: "The Pipelines API sends requests to pipelines."
66
weight: 85
7-
beta: true
87
---
98

10-
{{% alert color="info" %}}
11-
This feature is currently in beta. For more information, see [Beta Releases](/releasenotes/beta-features/).
12-
{{% /alert %}}
13-
149
## Introduction
1510

1611
The Pipelines API lets you start a new pipeline run for a saved and activated pipeline design and retrieve the status of a pipeline run.

content/en/docs/apidocs-mxsdk/apidocs/deployment/private-cloud-deploy-api.md

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ The API does not generate unique UUIDs for the resources. You must generate your
102102

103103
The following sections of this document contain sample usage scenarios for the API.
104104

105-
### Using the API to Update the Cluster and Namespace
105+
### Using the API to Update the Cluster and Namespace {#update-cluster}
106106

107107
The following steps will create a cluster, register and install a namespace, add or update a cluster member, and enable development mode for the namespace.
108108

@@ -125,6 +125,21 @@ The following steps will create a cluster, register and install a namespace, add
125125
If required, the invitation for the cluster/namespace member can be auto-accepted by setting `autoAcceptInvite` to true in the update cluster/namespace API request.
126126
{{% /alert %}}
127127

128+
### Using the API to Assign a Custom Role to the Namespace Member {#assign-custom-role}
129+
130+
Perform the following steps to create a cluster, register and install a namespace, add a custom role in the Cluster Overview page in the portal, and assign the role to the namespace member:
131+
132+
1. Set up your authentication PAT.
133+
2. Prepare the manifest for both your new cluster and namespace.
134+
3. Configure the namespace by following steps 8-11 of [Using the API to Update the Cluster and Namespace](#update-cluster).
135+
4. Create a custom role in the Cluster Overview page in the portal. This role must be created only on the Portal side.
136+
5. Make a POST `/clusters/{namespaceId}` API call to assign the role that you created in step 4 to the namespace member.
137+
You can obtain the manifest for this update request through GET `/clusters/{namespaceId}`. When updating the namespace, only the role needs to be specified for the namespace member, as the fine-grained permissions are already included in the role created in step 4.
138+
139+
{{% alert color="info" %}}
140+
If required, the invitation for the cluster or namespace member can be auto-accepted by setting `autoAcceptInvite` to true in the update cluster or namespace API request.
141+
{{% /alert %}}
142+
128143
### Using the API to Restart an App {#restart}
129144

130145
The following steps will restart an app by setting the number of instances to zero and then setting it back to the number of instances required.
@@ -169,6 +184,10 @@ The following steps will create a cluster, create a namespace, and create an env
169184
Please note that there is a limited support for Custom permissions in Deploy APIs.
170185
{{% /alert %}}
171186

187+
{{% alert color="info" %}}
188+
In order to create or manage environments in a namespace through an API, the technical contact must have a role assigned to the namespace permissions.
189+
{{% /alert %}}
190+
172191
## API Reference
173192

174193
{{% alert color="info" %}}

content/en/docs/apidocs-mxsdk/apidocs/frontend/client-api.md

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,21 @@ weight: 30
77

88
## Introduction
99

10-
Enrich the user interface of your applications by building on top of our web client APIs. Use standard web technology in combination with our powerful APIs to build any widget you want.
10+
Use our powerful APIs to build any JavaScript action you need.
1111

12-
## Client APIs
12+
## Client API
13+
14+
The Client API is compatible with both the React and the Dojo client.
15+
16+
* [Mendix 10 Client API](https://apidocs.rnd.mendix.com/10/client-mx-api/index.html)
17+
18+
{{% alert color="warning" %}}
19+
The Client API is not supported in widgets. For widget development, please use our [Pluggable Widgets API](/apidocs-mxsdk/apidocs/pluggable-widgets/)
20+
{{% /alert %}}
21+
22+
## Legacy Client APIs
1323

1424
* [Mendix 10 React Client API](https://apidocs.rnd.mendix.com/10/client-react/index.html)
15-
* [Mendix 10 Client API](https://apidocs.rnd.mendix.com/10/client/index.html)
16-
* [Mendix 9 Client API](https://apidocs.rnd.mendix.com/9/client/index.html)
17-
* [Mendix 8 Client API](https://apidocs.rnd.mendix.com/8/client/index.html)
25+
* [Mendix 10 Dojo Client API](https://apidocs.rnd.mendix.com/10/client/index.html)
26+
* [Mendix 9 Dojo Client API](https://apidocs.rnd.mendix.com/9/client/index.html)
27+
* [Mendix 8 Dojo Client API](https://apidocs.rnd.mendix.com/8/client/index.html)

content/en/docs/apidocs-mxsdk/apidocs/frontend/design-properties.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,7 @@ Here is an example of a **Colorpicker** design property using classes:
237237
```js
238238
{
239239
"name": "Background color",
240-
"type": "Colorpicker",
240+
"type": "ColorPicker",
241241
"description": "Description of Background color Property",
242242
"options": [
243243
{
@@ -261,7 +261,7 @@ Here is an example of a **Colorpicker** design property using CSS variables:
261261
```js
262262
{
263263
"name": "Background color",
264-
"type": "Dropdown",
264+
"type": "ColorPicker",
265265
"property": "background-color",
266266
"description": "Description of Background Color Property",
267267
"options": [
@@ -281,7 +281,9 @@ Here is an example of a **Colorpicker** design property using CSS variables:
281281
}
282282
```
283283

284-
Note: if you can not provide a value for the preview, it is recommended to instead use a **Dropdown** design property. If at a later point in time you can provide the preview, you can always change the type from a **Dropdown** to a **Colorpicker**.
284+
If no preview is specified, the value of the CSS variable will be used by default. Therefore, you can omit the preview property if your design property is based on CSS variables. However, if your design property is based on classes, it is recommended to provide a preview.
285+
286+
You can always change the type from a **Colorpicker** to a **Dropdown** if needed.
285287

286288
This is how the **Colorpicker** design property appears:
287289

content/en/docs/apidocs-mxsdk/apidocs/frontend/pluggable-widgets/pluggable-widgets-client-apis/_index.md

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -56,24 +56,40 @@ export interface ActionValue {
5656
}
5757
```
5858

59-
#### 4.1.1 canExecute
59+
#### canExecute {#canexecute}
6060

6161
The flag `canExecute` indicates if an action can be run under current conditions. This prevents executing actions that are not allowed by the app's security settings. User roles can be set in the microflows and nanoflows, allowing users to call them. For more information on user roles and security, see the [Module Security Reference Guide](/refguide/module-security/).
6262

6363
You can also employ this flag when using a **Call microflow** action triggering a microflow with a parameter. Such an action cannot be run until a parameter object is available, for example when a parent data view has finished loading. Attempting to `execute` an action that cannot be run will have no effect, and generates a debug-level warning message.
6464

6565
The exception to this behavior is when the `ActionValue` is returned by [`ListActionValue.get()`](/apidocs-mxsdk/apidocs/pluggable-widgets-client-apis-list-values/#listactionvalue). In this case, the flag will be true when not all arguments have been loaded. Calling `execute()` for an action with loading arguments will run the action as soon as all arguments become available. While waiting, `isExecuting` will be set to `true` and subsequent calls to `execute()` are ignored. If any arguments become unavailable after loading, the action will not run and a debug-level warning message will be logged.
6666

67-
#### 4.1.2 isExecuting
67+
#### isExecuting {#isexecuting}
6868

6969
The flag `isExecuting` indicates whether an action is currently running. A long-running action can take seconds to complete. Your component might use this information to render an inline loading indicator which lets users track loading progress. Often it is not desirable to allow a user to trigger multiple actions in parallel. Therefore, a component (maybe based on a configuration) can decide to skip triggering an action while a previous execution is still in progress.
7070

7171
Note that `isExecuting` indicates only whether the current action is running. It does not indicate whether a target nanoflow, microflow, or object operation is running due to another action.
7272

73-
#### 4.1.3 execute
73+
#### execute {#execute}
7474

7575
The method `execute` triggers the action. It returns nothing and does not guarantee that the action will be started synchronously. But when the action does start, the component will receive a new prop with the `isExecuting` flag set.
7676

77+
When the action property [defines action variables](/apidocs-mxsdk/apidocs/pluggable-widgets-property-types/#action-xml-elements), the `execute()` method expects an object map containing a property for each variable. The variables may be passed as undefined, but need to be set explicitly.
78+
79+
Given an action property that defines two `Decimal` variables `lat` and `long`, and a `String` variable named `label`, its `execute()` method accepts the following input:
80+
81+
```ts
82+
interface MapWidgetProps {
83+
onClick: ActionValue<{ lat: Option<Big>, long: Option<Big>, label: Option<string> }>
84+
}
85+
86+
onClick.execute({
87+
lat: new Big(51.907),
88+
long: new Big(4.488),
89+
label: undefined
90+
});
91+
```
92+
7793
### DynamicValue {#dynamic-value}
7894

7995
`DynamicValue` is used to represent values that can change over time and is used by many property types. It is defined as follows:
@@ -105,7 +121,7 @@ Though the type definition above looks complex, it is fairly simply to use becau
105121

106122
### EditableValue {#editable-value}
107123

108-
`EditableValue` is used to represent values that can be changed by a pluggable widget client component and is passed only to [attribute properties](/apidocs-mxsdk/apidocs/pluggable-widgets-property-types/#attribute). It is defined as follows:
124+
`EditableValue` is used to represent values, either an attribute or a variable, that can be changed by a pluggable widget client component and is passed only to [attribute properties](/apidocs-mxsdk/apidocs/pluggable-widgets-property-types/#attribute). It is defined as follows:
109125

110126
```ts
111127
export interface EditableValue<T extends AttributeValue> {
@@ -135,15 +151,15 @@ The flag `readOnly` indicates whether a value can actually be edited. It will be
135151

136152
The value can be read from the `value` field and modified using `setValue` function. Note that `setValue` returns nothing and does not guarantee that the value is changed synchronously. But when a change is propagated, a component receives a new prop reflecting the change.
137153

138-
When setting a value, a new value might not satisfy certain validation rules — for example a value might be bigger that the underlying attribute allows. In this case, your change will affect only `value` and `displayValue` received through a prop. Your change will not be propagated to an object’s attribute and will not be visible outside of your component. The component will also receive a validation error text through the `validation` field of `EditableValue`.
154+
When setting a value, a new value might not satisfy certain validation rules — for example when an attribute is selected and the new value is bigger than the underlying attribute allows. In this case, your change will affect only `value` and `displayValue` received through a prop. Your change will not be propagated to an object’s attribute and will not be visible outside of your component. The component will also receive a validation error text through the `validation` field of `EditableValue`.
139155

140156
It is possible for a component to extend the defined set of validation rules. A new validator — a function that checks a passed value and returns a validation message string if any — can be provided through the `setValidator` function. A component can have only a single custom validator. The Mendix Platform ensures that custom validators are run whenever necessary, for example when a page is being saved by an end-user. It is best practice to call `setValidator` early in a component's lifecycle — specifically in the [componentDidMount](https://en.reactjs.org/docs/react-component.html#componentdidmount) function.
141157

142-
In practice, many client components present values as nicely formatted strings which take locale-specific settings into account. To facilitate such cases `EditableValue` exposes a field `displayValue` formatted version of `value`, and a method `setTextValue` — a version of `setValue` that takes care of parsing. `setTextValue` also validates that a passed value can be parsed and assigns the target attribute’s type. Similarly to `setValue`, a change to an invalid value will not be propagated further that the prop itself, but a `validation` is reported. Note that if a value cannot be parsed, the prop will contain only a `displayValue` string and `value` will become undefined.
158+
In practice, many client components present values as nicely formatted strings which take locale-specific settings into account. To facilitate such cases `EditableValue` exposes a field `displayValue` which is the formatted version of `value`, and a method `setTextValue` — a version of `setValue` that takes care of parsing. `setTextValue` also validates that a passed value can be parsed and assigned to the target's value type. Similarly to `setValue`, a change to an invalid value will not be propagated further than the prop itself, but a `validation` is reported. Note that if a value cannot be parsed, the prop will contain only a `displayValue` string and `value` will become undefined.
143159

144160
There is a way to use more the convenient `displayValue` and `setTextValue` while retaining control over the format. A component can use a `setFormatter` method passing a formatter object: an object with `format` and `parse` methods. The Mendix Platform provides a convenient way of creating such objects for simple cases. An existing formatter exposed using a `EditableValue.formatter` field can be modified using its `withConfig` method. For complex cases formatters still can be created manually. A formatter can be reset back to default settings by calling `setFormatter(undefined)`.
145161

146-
The optional field `universe` is used to indicate the set of all possible values that can be passed to a `setValue` if a set is limited. Currently, `universe` is provided only when the edited attribute is of the Boolean or enumeration [types](/refguide/attributes/#type).
162+
The optional field `universe` is used to indicate the set of all possible values that can be passed to a `setValue` if a set is limited. Currently, `universe` is provided only when the edited value is of the Boolean or enumeration [types](/refguide/attributes/#type).
147163

148164
### ModifiableValue {#modifiable-value}
149165

@@ -192,7 +208,7 @@ It is possible for a component to extend the defined set of validation rules. A
192208

193209
### IconValue {#icon-value}
194210

195-
`DynamicValue<IconValue>` is used to represent icons: small pictograms in the Mendix Platform. Those can be static or dynamic file- or font-based images. An icon can only be configured through an [icon](/apidocs-mxsdk/apidocs/pluggable-widgets-property-types/#attribute) property. `IconValue` is defined as follows:
211+
`DynamicValue<IconValue>` is used to represent icons: small pictograms in the Mendix Platform. Those can be static or dynamic file- or font-based images. An icon can only be configured through an [icon](/apidocs-mxsdk/apidocs/pluggable-widgets-property-types/#icon) property. `IconValue` is defined as follows:
196212

197213
```ts
198214
interface GlyphIcon {

content/en/docs/apidocs-mxsdk/apidocs/frontend/pluggable-widgets/pluggable-widgets-property-types.md

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ Then the Studio Pro UI for the property appears like this:
134134

135135
Integer is represented as a number input in Studio Pro. It is passed as a `number` prop to a client component.
136136

137-
#### XML Attributes
137+
#### XML Attributes
138138

139139
| Attribute | Required | Attribute Type | Description |
140140
|----------------|----------|----------------|--------------------------------|
@@ -477,7 +477,7 @@ If a `dataSource` attribute is not specified, the client will receive an `Action
477477

478478
When a `dataSource` attribute is specified and configured by the user, it is passed as a [`ListActionValue`](/apidocs-mxsdk/apidocs/pluggable-widgets-client-apis-list-values/#listactionvalue). For more information, see the [Datasource](#datasource) section below.
479479

480-
#### XML Attributes
480+
#### XML Attributes {#xml-attributes}
481481

482482
| Attribute | Required | Attribute Type | Description |
483483
|----------------|----------|----------------|---------------------------------------------------------------------------------------------------------|
@@ -487,6 +487,24 @@ When a `dataSource` attribute is specified and configured by the user, it is pas
487487
| `defaultValue` | No | String | Default value for the property, the format should be `<ModuleId>.<DocumentId>` |
488488
| `defaultType` | No | String | Default type for the property, supported values are `None`, `OpenPage`, `CallNanoflow`, `CallMicroflow` |
489489

490+
#### XML Elements {#action-xml-elements}
491+
492+
`<actionVariables>` — Defines variables a widget provides when calling [execute() on an ActionValue](/apidocs-mxsdk/apidocs/pluggable-widgets-client-apis/#execute). The variables are made available in Studio Pro when configuring [Call a Microflow](/refguide/on-click-event/#call-microflow) and [Call a Nanoflow](/refguide/on-click-event/#call-nanoflow) actions.
493+
494+
`<actionVariable>` (required one or more) — Represents a primitive value provided by the widget as an argument when calling `ActionValue.execute()`. The variable is defined by the following attributes:
495+
496+
* `key` (required) — The identifier of the variable used in Studio Pro and the Pluggable Widgets API.
497+
* `type` (required) — The type of the value that the variable represents. Supported types and their corresponding Typescript type are listed in the table below.
498+
* `caption` (required) — A short description of the variable that is displayed in Studio Pro.
499+
500+
| Action Variable Type | Client Type |
501+
| -------------------- | --------- |
502+
| `String` | `string` |
503+
| `Integer` | `Big` |
504+
| `Decimal` | `Big` |
505+
| `DateTime` | `Date` |
506+
| `Boolean` | `boolean` |
507+
490508
#### Studio Pro UI
491509

492510
When the property is defined as follows:
@@ -502,6 +520,22 @@ Then the Studio Pro UI for the property appears like this:
502520

503521
{{< figure src="/attachments/apidocs-mxsdk/apidocs/pluggable-widgets/pluggable-widgets-property-types/action.png" class="no-border" >}}
504522

523+
When the action exposes variables with the following XML:
524+
525+
```xml
526+
<property key="actionWithVariable" type="action">
527+
<caption>On click</caption>
528+
<description>Action to be performed when button is clicked</description>
529+
<actionVariables>
530+
<actionVariable key="random" type="Decimal" caption="Random number between 0 and 1" />
531+
</actionVariables>
532+
</property>
533+
```
534+
535+
The variable appears in the UI like this:
536+
537+
{{< figure src="/attachments/apidocs-mxsdk/apidocs/pluggable-widgets/pluggable-widgets-property-types/action-variable.png" class="no-border" >}}
538+
505539
### Attribute {#attribute}
506540

507541
The attribute property type allows a widget to work directly with entities' attributes, both reading and writing attributes. Depending on the widget's purposes, a widget should define attribute types it supports.

0 commit comments

Comments
 (0)