From 4f3cf8c55b6d8cfad0c89b60166528a88cc8455f Mon Sep 17 00:00:00 2001 From: ConnorLand <47385345+ConnorLand@users.noreply.github.com> Date: Tue, 1 Sep 2026 10:46:52 +0200 Subject: [PATCH 01/26] fix dashes --- .../en/docs/apidocs-mxsdk/apidocs/deployment/deploy-api-2.md | 4 ++-- .../apidocs/frontend/design-properties/_index.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/content/en/docs/apidocs-mxsdk/apidocs/deployment/deploy-api-2.md b/content/en/docs/apidocs-mxsdk/apidocs/deployment/deploy-api-2.md index e12cc9f031b..18ad1c617b4 100644 --- a/content/en/docs/apidocs-mxsdk/apidocs/deployment/deploy-api-2.md +++ b/content/en/docs/apidocs-mxsdk/apidocs/deployment/deploy-api-2.md @@ -64,7 +64,7 @@ For apps on Mendix Cloud, it is not possible to upload files bigger than 1 GB to ##### Request Parameters * `AppId` (String): Subdomain name of an app -* `PackageName` (String): the name given to the package (MDA) when it is uploaded — if this is omitted, it will be given the name *default.mda* +* `PackageName` (String): the name given to the package (MDA) when it is uploaded—if this is omitted, it will be given the name *default.mda* * `file` (File): Deployment package as multipart/form-data (see [IETF RFC 7578: Returning Values from Forms: multipart/form-data](https://tools.ietf.org/html/rfc7578)) ##### Example Request @@ -106,7 +106,7 @@ The API call returns the following JSON: Where: * `` is the ID of the package which will be created by the API -* `` is the ID of the job that is creating the package — the status of the job can be interrogated with the [Job Status](#job-status) API +* `` is the ID of the job that is creating the package—the status of the job can be interrogated with the [Job Status](#job-status) API ### Job Status{#job-status} diff --git a/content/en/docs/apidocs-mxsdk/apidocs/frontend/design-properties/_index.md b/content/en/docs/apidocs-mxsdk/apidocs/frontend/design-properties/_index.md index 5edebd2557e..b149f020e2c 100644 --- a/content/en/docs/apidocs-mxsdk/apidocs/frontend/design-properties/_index.md +++ b/content/en/docs/apidocs-mxsdk/apidocs/frontend/design-properties/_index.md @@ -607,7 +607,7 @@ The design property above was renamed from **my Dropdown Propery** to **My Dropd This feature was introduced in Mendix 9. {{% /alert %}} -It is also possible to rename an option of a **Dropdown** property to a separate **Toggle** property. In this case, the old name of the **Toggle** property consists of the **Dropdown** property's name and the option's name separated by two colons. It is not required for the **Dropdown** property to still exist — it may have been removed entirely. +It is also possible to rename an option of a **Dropdown** property to a separate **Toggle** property. In this case, the old name of the **Toggle** property consists of the **Dropdown** property's name and the option's name separated by two colons. It is not required for the **Dropdown** property to still exist—it may have been removed entirely. Here is an example of a **Toggle** property that was renamed from a **Dropdown** option: @@ -659,7 +659,7 @@ The design property above is a replacement for the removed properties **Bold tex ### Renaming a Dropdown Option to a Spacing Option -You can rename options of a **Dropdown** property to an option of a **Spacing** property. In this case, the old name of the renamed options consists of the **Dropdown** property's name and the option's name separated by two colons. It is not required for the original property to still exist — it may have been removed entirely. +You can rename options of a **Dropdown** property to an option of a **Spacing** property. In this case, the old name of the renamed options consists of the **Dropdown** property's name and the option's name separated by two colons. It is not required for the original property to still exist—it may have been removed entirely. Here is an example of a **Spacing** property that includes options that have been renamed from a **Dropdown** option: From bc79701bad042beaf94bd7db40869a6c93a207f7 Mon Sep 17 00:00:00 2001 From: ConnorLand <47385345+ConnorLand@users.noreply.github.com> Date: Tue, 1 Sep 2026 10:49:01 +0200 Subject: [PATCH 02/26] delete spaces --- .../frontend/design-properties/design-properties-10.md | 4 ++-- .../apidocs/frontend/design-properties/design-properties-9.md | 2 +- .../apidocs/studio-pro-10/pluggable-widgets/_index.md | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/content/en/docs/apidocs-mxsdk/apidocs/frontend/design-properties/design-properties-10.md b/content/en/docs/apidocs-mxsdk/apidocs/frontend/design-properties/design-properties-10.md index 5cffac10e18..bf8bbfae1d2 100644 --- a/content/en/docs/apidocs-mxsdk/apidocs/frontend/design-properties/design-properties-10.md +++ b/content/en/docs/apidocs-mxsdk/apidocs/frontend/design-properties/design-properties-10.md @@ -587,7 +587,7 @@ The design property above was renamed from **my Dropdown Propery** to **My Dropd This feature was introduced in Mendix 9. {{% /alert %}} -It is also possible to rename an option of a **Dropdown** property to a separate **Toggle** property. In this case, the old name of the **Toggle** property consists of the **Dropdown** property's name and the option's name separated by two colons. It is not required for the **Dropdown** property to still exist — it may have been removed entirely. +It is also possible to rename an option of a **Dropdown** property to a separate **Toggle** property. In this case, the old name of the **Toggle** property consists of the **Dropdown** property's name and the option's name separated by two colons. It is not required for the **Dropdown** property to still exist—it may have been removed entirely. Here is an example of a **Toggle** property that was renamed from a **Dropdown** option: @@ -639,7 +639,7 @@ The design property above is a replacement for the removed properties **Bold tex ### Renaming a Dropdown Option to a Spacing Option -You can rename options of a **Dropdown** property to an option of a **Spacing** property. In this case, the old name of the renamed options consists of the **Dropdown** property's name and the option's name separated by two colons. It is not required for the original property to still exist — it may have been removed entirely. +You can rename options of a **Dropdown** property to an option of a **Spacing** property. In this case, the old name of the renamed options consists of the **Dropdown** property's name and the option's name separated by two colons. It is not required for the original property to still exist—it may have been removed entirely. Here is an example of a **Spacing** property that includes options that have been renamed from a **Dropdown** option: diff --git a/content/en/docs/apidocs-mxsdk/apidocs/frontend/design-properties/design-properties-9.md b/content/en/docs/apidocs-mxsdk/apidocs/frontend/design-properties/design-properties-9.md index 2995e67e085..1398c06dac1 100644 --- a/content/en/docs/apidocs-mxsdk/apidocs/frontend/design-properties/design-properties-9.md +++ b/content/en/docs/apidocs-mxsdk/apidocs/frontend/design-properties/design-properties-9.md @@ -219,7 +219,7 @@ The design property above was renamed from **my Dropdown Propery** to **My Dropd This feature was introduced in Mendix 9. {{% /alert %}} -It is also possible to rename an option of a **Dropdown** property to a separate **Toggle** property. In this case, the old name of the **Toggle** property consists of the **Dropdown** property's name and the option's name separated by two colons. It is not required for the **Dropdown** property to still exist — it may have been removed entirely. +It is also possible to rename an option of a **Dropdown** property to a separate **Toggle** property. In this case, the old name of the **Toggle** property consists of the **Dropdown** property's name and the option's name separated by two colons. It is not required for the **Dropdown** property to still exist—it may have been removed entirely. Here is an example of a **Toggle** property that was renamed from a **Dropdown** option: diff --git a/content/en/docs/apidocs-mxsdk/apidocs/studio-pro-10/pluggable-widgets/_index.md b/content/en/docs/apidocs-mxsdk/apidocs/studio-pro-10/pluggable-widgets/_index.md index c66041e002c..d095b7f2e22 100755 --- a/content/en/docs/apidocs-mxsdk/apidocs/studio-pro-10/pluggable-widgets/_index.md +++ b/content/en/docs/apidocs-mxsdk/apidocs/studio-pro-10/pluggable-widgets/_index.md @@ -35,9 +35,9 @@ The essential part of a pluggable widget is its client component: a React compon The client component is mainly focused on presentation and interaction with an end-user, while data fetching, validation, and updating are handled by the Mendix Platform. Mendix provides your component with APIs which follow a [unidirectional data flow pattern](https://www.geeksforgeeks.org/unidirectional-data-flow/), much like the [Redux](https://redux.js.org/basics/data-flow) and [Flux](https://facebook.github.io/flux/docs/in-depth-overview#structure-and-data-flow) APIs. Mendix follows the “batteries included but removable” motto. You do not have to care about nuances if standard behavior suffices for you, but you can adjust behaviors when required. -A widget component is [mounted](https://en.reactjs.org/docs/react-component.html#mounting) and [unmounted](https://en.reactjs.org/docs/react-component.html#unmounting) when a widget is shown or hidden — for example when a page is opened or due to [conditional visibility](/refguide/common-widget-properties/#visibility-properties). A component receives [props](https://en.reactjs.org/docs/components-and-props.html) which resemble properties described in its widget definition XML file. A prop's key comes from the [`key`](#key-attribute) attribute, and its value is based on the configuration of the property. Prop values are immutable, but the Mendix Platform re-renders the component passing new values when necessary. +A widget component is [mounted](https://en.reactjs.org/docs/react-component.html#mounting) and [unmounted](https://en.reactjs.org/docs/react-component.html#unmounting) when a widget is shown or hidden—for example when a page is opened or due to [conditional visibility](/refguide/common-widget-properties/#visibility-properties). A component receives [props](https://en.reactjs.org/docs/components-and-props.html) which resemble properties described in its widget definition XML file. A prop's key comes from the [`key`](#key-attribute) attribute, and its value is based on the configuration of the property. Prop values are immutable, but the Mendix Platform re-renders the component passing new values when necessary. -A prop value is often not just a primitive value, but an object whose structure depends on the [`type`](#type-attribute) of its widget's property. A prop's values can expose data, metadata, and associated actions — whatever is applicable for the property. Here is an example of one interface. It is a value for an action property, such as the type you would find in the [On click](/refguide/on-click-event/#on-click) property of an action button: +A prop value is often not just a primitive value, but an object whose structure depends on the [`type`](#type-attribute) of its widget's property. A prop's values can expose data, metadata, and associated actions—whatever is applicable for the property. Here is an example of one interface. It is a value for an action property, such as the type you would find in the [On click](/refguide/on-click-event/#on-click) property of an action button: ```ts export interface ActionValue { From 994e5d8951608b54baf7e2cd897365a5af6c6e0e Mon Sep 17 00:00:00 2001 From: ConnorLand <47385345+ConnorLand@users.noreply.github.com> Date: Tue, 1 Sep 2026 10:54:58 +0200 Subject: [PATCH 03/26] replace dashes --- .../studio-pro-10/pluggable-widgets/_index.md | 28 +++++++-------- .../pluggable-widgets-property-types.md | 34 +++++++++---------- 2 files changed, 31 insertions(+), 31 deletions(-) diff --git a/content/en/docs/apidocs-mxsdk/apidocs/studio-pro-10/pluggable-widgets/_index.md b/content/en/docs/apidocs-mxsdk/apidocs/studio-pro-10/pluggable-widgets/_index.md index d095b7f2e22..07247b2eb35 100755 --- a/content/en/docs/apidocs-mxsdk/apidocs/studio-pro-10/pluggable-widgets/_index.md +++ b/content/en/docs/apidocs-mxsdk/apidocs/studio-pro-10/pluggable-widgets/_index.md @@ -125,20 +125,20 @@ Here is an example of a widget’s attributes section: This section is generated based on options chosen while running the Mendix Pluggable Widget Generator. You will rarely need to modify it after it is generated. This sample widget features several widget attributes: -* `id` — This the fully qualified name of the widget called widget ID. Using widget ID, the Mendix Platform distinguishes widgets from each other. Widget ID should never be changed after a widget is used in an app or is published in the Marketplace. Reverse domain-style names, as in example above, are recommended. -* `pluginWidget` — This should always be set to `true`. This way, the Mendix Platform can distinguish between the newer pluggable widgets and the older custom widgets. -* `offlineCapable` — This shows if a widget can work while an app is offline. For more information on offline apps, see the [Offline-First](/refguide/offline-first/) guide. A widget that fetches information from a third-party API, for example a widget that fetches airline ticket prices, could not function without an internet connection. If a widget cannot work offline, Mendix Studio Pro will forbid its use on pages that must be available offline. -* `supportedPlatform` — This shows the platforms a widget is compatible with. `Web` describes widgets that are only compatible with web and hybrid mobile apps. `Native` describes widgets that are compatible with native mobile apps. +* `id` – This the fully qualified name of the widget called widget ID. Using widget ID, the Mendix Platform distinguishes widgets from each other. Widget ID should never be changed after a widget is used in an app or is published in the Marketplace. Reverse domain-style names, as in example above, are recommended. +* `pluginWidget` – This should always be set to `true`. This way, the Mendix Platform can distinguish between the newer pluggable widgets and the older custom widgets. +* `offlineCapable` – This shows if a widget can work while an app is offline. For more information on offline apps, see the [Offline-First](/refguide/offline-first/) guide. A widget that fetches information from a third-party API, for example a widget that fetches airline ticket prices, could not function without an internet connection. If a widget cannot work offline, Mendix Studio Pro will forbid its use on pages that must be available offline. +* `supportedPlatform` – This shows the platforms a widget is compatible with. `Web` describes widgets that are only compatible with web and hybrid mobile apps. `Native` describes widgets that are compatible with native mobile apps. ### Widget Description {#widget-description} -The presentation of the widget in Studio Pro is determined by the first set of elements inside the widget tag. The order of these descriptive tags is important, and is demonstrated in the list below. Only the name and description tags are mandatory — the others are optional. The description can be omitted with a self-closing tag: ``: +The presentation of the widget in Studio Pro is determined by the first set of elements inside the widget tag. The order of these descriptive tags is important, and is demonstrated in the list below. Only the name and description tags are mandatory—the others are optional. The description can be omitted with a self-closing tag: ``: -* `name` — The display name of the widget. -* `description` — A short written description of the widget. -* `studioProCategory` — See [Toolbox Category](#toolbox-category). -* `helpUrl` — See [Help Page](#help). -* `icon` — See [Icon](#icon). +* `name` – The display name of the widget. +* `description` – A short written description of the widget. +* `studioProCategory` – See [Toolbox Category](#toolbox-category). +* `helpUrl` – See [Help Page](#help). +* `icon` – See [Icon](#icon). ```xml My Progress Card @@ -299,10 +299,10 @@ This section will explain the shape of the widget property. For more detailed in Some properties can or must have more attributes or tags. This depends on the `type` property. The following elements should be present for every property: -* `key` — This element is a property's unique, single-word identifier. The `key` elements are used internally to identify properties, so they should never change after a widget is used in an app or is published in the Marketplace. A `key` element also identifies a property value when it is passed to a pluggable widget’s client component. -* `type` — This element is a property's type. The `type` element defines which values can be configured for a property, which UI is used in the Mendix Studio Pro, and what type of value a pluggable widget’s client component receives. -* `caption` — This element is a short label identifying a property to a modeling developer. The first letter of a caption should be capitalized. -* `description` — This element is a longer description of a property. A description should be capitalized and limited to one or two sentences. +* `key` – This element is a property's unique, single-word identifier. The `key` elements are used internally to identify properties, so they should never change after a widget is used in an app or is published in the Marketplace. A `key` element also identifies a property value when it is passed to a pluggable widget’s client component. +* `type` – This element is a property's type. The `type` element defines which values can be configured for a property, which UI is used in the Mendix Studio Pro, and what type of value a pluggable widget’s client component receives. +* `caption` – This element is a short label identifying a property to a modeling developer. The first letter of a caption should be capitalized. +* `description` – This element is a longer description of a property. A description should be capitalized and limited to one or two sentences. Here is how a caption and description look in Studio Pro: diff --git a/content/en/docs/apidocs-mxsdk/apidocs/studio-pro-10/pluggable-widgets/pluggable-widgets-property-types.md b/content/en/docs/apidocs-mxsdk/apidocs/studio-pro-10/pluggable-widgets/pluggable-widgets-property-types.md index 4a149d7747c..19a5b25dd81 100644 --- a/content/en/docs/apidocs-mxsdk/apidocs/studio-pro-10/pluggable-widgets/pluggable-widgets-property-types.md +++ b/content/en/docs/apidocs-mxsdk/apidocs/studio-pro-10/pluggable-widgets/pluggable-widgets-property-types.md @@ -51,9 +51,9 @@ This defines a property's type. A `type` must be one of the following: ### XML Elements -`` (required) — This defines the property name visible for the user (not the end-user) while configuring the widget in Studio Pro. +`` (required) – This defines the property name visible for the user (not the end-user) while configuring the widget in Studio Pro. -`` (required) — This is a description which explains a property's purpose. +`` (required) – This is a description which explains a property's purpose. ## Static Types @@ -196,7 +196,7 @@ The enumeration property type allows a user to select one out of multiple option #### XML Elements -`` (required) — One `` element must be declared with multiple `` elements inside in order to define possible enumeration values. A `key` attribute is required for every enumeration value as well as a caption. Enter enumeration values like this: +`` (required) – One `` element must be declared with multiple `` elements inside in order to define possible enumeration values. A `key` attribute is required for every enumeration value as well as a caption. Enter enumeration values like this: ```xml My enum option caption @@ -353,7 +353,7 @@ When a `dataSource` attribute is specified and configured by the user, it is pas #### XML Elements -`` (required) — An expression property must contain a `` element in order to define the return type of the expression. The Mendix Platform will ensure the that configured expression returns the correct data type. +`` (required) – An expression property must contain a `` element in order to define the return type of the expression. The Mendix Platform will ensure the that configured expression returns the correct data type. The return type of the expression must be defined using either the `type` or the `assignableTo` attribute. It is not allowed to specify both. @@ -441,7 +441,7 @@ When a `dataSource` attribute is specified and configured by the user, it is pas #### XML Elements -`` — Allows a user to set a default value for text templates for different languages using `` elements with a `lang` attribute representing [ISO 639](https://en.wikipedia.org/wiki/ISO_639) code of the language. Available languages are listed in the [Languages Tab](/refguide10/app-settings/#languages-tab) in Studio Pro. +`` – Allows a user to set a default value for text templates for different languages using `` elements with a `lang` attribute representing [ISO 639](https://en.wikipedia.org/wiki/ISO_639) code of the language. Available languages are listed in the [Languages Tab](/refguide10/app-settings/#languages-tab) in Studio Pro. #### Studio Pro UI @@ -491,13 +491,13 @@ When a `dataSource` attribute is specified and configured by the user, it is pas Action variables were introduced in Mendix [10.21](/releasenotes/studio-pro/10.21/#pluggable-widget-api-action-variables). {{% /alert %}} -`` — Defines the variables a widget provides when calling [execute() on an ActionValue](/apidocs-mxsdk/apidocs/pluggable-widgets-client-apis-10/#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. +`` – Defines the variables a widget provides when calling [execute() on an ActionValue](/apidocs-mxsdk/apidocs/pluggable-widgets-client-apis-10/#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. -`` (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: +`` (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: -* `key` (required) — The identifier of the variable used in Studio Pro and the Pluggable Widgets API. -* `type` (required) — The type of the value that the variable represents. Supported types and their corresponding Typescript type are listed in the table below. -* `caption` (required) — A short description of the variable that is displayed in Studio Pro. +* `key` (required) – The identifier of the variable used in Studio Pro and the Pluggable Widgets API. +* `type` (required) – The type of the value that the variable represents. Supported types and their corresponding Typescript type are listed in the table below. +* `caption` (required) – A short description of the variable that is displayed in Studio Pro. | Action Variable Type | Client Type | | -------------------- | --------- | @@ -559,9 +559,9 @@ When a `dataSource` attribute is specified and configured by the user, it is pas #### XML Elements -`` (required) — This element encapsulates `` elements which declare supported attribute types available while configuring the attribute property in Studio Pro. +`` (required) – This element encapsulates `` elements which declare supported attribute types available while configuring the attribute property in Studio Pro. -`` (required one or more) — this element defines the allowed attribute type in the `name` attribute. +`` (required one or more) – This element defines the allowed attribute type in the `name` attribute. | Supported Attribute Types | Corresponding Types Client Components Receive | |---------------------------|-----------------------------------------------| @@ -622,9 +622,9 @@ When a `dataSource` attribute is specified and configured by the user, it is pas #### XML Elements -`` (required) — This element encapsulates `` elements which declare supported association types available while configuring the association property in Studio Pro. +`` (required) – This element encapsulates `` elements which declare supported association types available while configuring the association property in Studio Pro. -`` (required one or more) — this element defines the allowed association type in the `name` attribute. +`` (required one or more) – This element defines the allowed association type in the `name` attribute. | Supported Attribute Types | Corresponding Types Client Components Receive | |---------------------------|-----------------------------------------------| @@ -670,7 +670,7 @@ The object property type allows to create an arbitrary list of properties. #### XML Elements -`` (required) — This encapsulates the list or properties to be configured. For more information on property groups, see the [Property Groups](/apidocs-mxsdk/apidocs/pluggable-widgets-10/#property-groups) section of *Pluggable Widgets API*. Properties must be grouped by `` elements. Nested object properties are not supported. +`` (required) – This encapsulates the list or properties to be configured. For more information on property groups, see the [Property Groups](/apidocs-mxsdk/apidocs/pluggable-widgets-10/#property-groups) section of *Pluggable Widgets API*. Properties must be grouped by `` elements. Nested object properties are not supported. #### Studio Pro UI @@ -797,9 +797,9 @@ The selection property allows a widget to read and set a selection that can be u #### XML Elements -`` (required) — This element encapsulates `` elements which declare supported selection types available while configuring the selection property in Studio Pro. +`` (required) – This element encapsulates `` elements which declare supported selection types available while configuring the selection property in Studio Pro. -`` (required one or more) — This element defines the selection type in the `name` attribute. +`` (required one or more) – This element defines the selection type in the `name` attribute. | Supported Selection Types | Corresponding Types Client Components Receive | |---------------------------|-----------------------------------------------| From cc44001b0e1e338bb66e0c8b496aca2d45ff6f11 Mon Sep 17 00:00:00 2001 From: ConnorLand <47385345+ConnorLand@users.noreply.github.com> Date: Tue, 1 Sep 2026 11:00:03 +0200 Subject: [PATCH 04/26] edit dashes these commits are going to be really boring to name --- .../pluggable-widgets-client-apis/_index.md | 10 +++---- .../studio-pro-11/pluggable-widgets/_index.md | 30 +++++++++---------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/content/en/docs/apidocs-mxsdk/apidocs/studio-pro-10/pluggable-widgets/pluggable-widgets-client-apis/_index.md b/content/en/docs/apidocs-mxsdk/apidocs/studio-pro-10/pluggable-widgets/pluggable-widgets-client-apis/_index.md index f9b3f58c6aa..901c55bc470 100644 --- a/content/en/docs/apidocs-mxsdk/apidocs/studio-pro-10/pluggable-widgets/pluggable-widgets-client-apis/_index.md +++ b/content/en/docs/apidocs-mxsdk/apidocs/studio-pro-10/pluggable-widgets/pluggable-widgets-client-apis/_index.md @@ -153,11 +153,11 @@ The flag `readOnly` indicates whether a value can actually be edited. It will be 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. -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`. +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`. -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. +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. -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. +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. 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)`. @@ -178,7 +178,7 @@ interface SimpleFormatter { ##### Built-in Formatter Types {#built-in-formatter-types} -The Mendix platform provides two typed, configurable built-in formatters that extend `SimpleFormatter`: `NumberFormatter` and `DateTimeFormatter`. The actual type of `EditableValue.formatter` is `ValueFormatter` — a union that covers both built-in and plain formatters: +The Mendix platform provides two typed, configurable built-in formatters that extend `SimpleFormatter`: `NumberFormatter` and `DateTimeFormatter`. The actual type of `EditableValue.formatter` is `ValueFormatter`—a union that covers both built-in and plain formatters: ```ts type ValueFormatter = @@ -349,7 +349,7 @@ The value can be read from the `value` field and modified using the `setValue` f When setting a value, the `ObjectItem` must be items from the selectable object's data source. 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. -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. +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. ### IconValue {#icon-value} diff --git a/content/en/docs/apidocs-mxsdk/apidocs/studio-pro-11/pluggable-widgets/_index.md b/content/en/docs/apidocs-mxsdk/apidocs/studio-pro-11/pluggable-widgets/_index.md index 878e0af7004..3791b6311c6 100644 --- a/content/en/docs/apidocs-mxsdk/apidocs/studio-pro-11/pluggable-widgets/_index.md +++ b/content/en/docs/apidocs-mxsdk/apidocs/studio-pro-11/pluggable-widgets/_index.md @@ -36,9 +36,9 @@ The essential part of a pluggable widget is its client component: a React compon The client component is mainly focused on presentation and interaction with an end-user, while data fetching, validation, and updating are handled by the Mendix Platform. Mendix provides your component with APIs which follow a [unidirectional data flow pattern](https://www.geeksforgeeks.org/unidirectional-data-flow/), much like the [Redux](https://redux.js.org/basics/data-flow) and [Flux](https://facebook.github.io/flux/docs/in-depth-overview#structure-and-data-flow) APIs. Mendix follows the “batteries included but removable” motto. You do not have to care about nuances if standard behavior suffices for you, but you can adjust behaviors when required. -A widget component is [mounted](https://en.reactjs.org/docs/react-component.html#mounting) and [unmounted](https://en.reactjs.org/docs/react-component.html#unmounting) when a widget is shown or hidden — for example when a page is opened or due to [conditional visibility](/refguide/common-widget-properties/#visibility-properties). A component receives [props](https://en.reactjs.org/docs/components-and-props.html) which resemble properties described in its widget definition XML file. A prop's key comes from the [`key`](#key-attribute) attribute, and its value is based on the configuration of the property. Prop values are immutable, but the Mendix Platform re-renders the component passing new values when necessary. +A widget component is [mounted](https://en.reactjs.org/docs/react-component.html#mounting) and [unmounted](https://en.reactjs.org/docs/react-component.html#unmounting) when a widget is shown or hidden—for example when a page is opened or due to [conditional visibility](/refguide/common-widget-properties/#visibility-properties). A component receives [props](https://en.reactjs.org/docs/components-and-props.html) which resemble properties described in its widget definition XML file. A prop's key comes from the [`key`](#key-attribute) attribute, and its value is based on the configuration of the property. Prop values are immutable, but the Mendix Platform re-renders the component passing new values when necessary. -A prop value is often not just a primitive value, but an object whose structure depends on the [`type`](#type-attribute) of its widget's property. A prop's values can expose data, metadata, and associated actions — whatever is applicable for the property. Here is an example of one interface. It is a value for an action property, such as the type you would find in the [On click](/refguide/on-click-event/#on-click) property of an action button: +A prop value is often not just a primitive value, but an object whose structure depends on the [`type`](#type-attribute) of its widget's property. A prop's values can expose data, metadata, and associated actions—whatever is applicable for the property. Here is an example of one interface. It is a value for an action property, such as the type you would find in the [On click](/refguide/on-click-event/#on-click) property of an action button: ```ts export interface ActionValue { @@ -125,20 +125,20 @@ Here is an example of a widget’s attributes section: This section is generated based on options chosen while running the Mendix Pluggable Widget Generator. You will rarely need to modify it after it is generated. This sample widget features several widget attributes: -* `id` — This the fully qualified name of the widget called widget ID. Using widget ID, the Mendix Platform distinguishes widgets from each other. Widget ID should never be changed after a widget is used in an app or is published in the Marketplace. Reverse domain-style names, as in example above, are recommended. -* `pluginWidget` — This should always be set to `true`. This way, the Mendix Platform can distinguish between the newer pluggable widgets and the older custom widgets. -* `offlineCapable` — This shows if a widget can work while an app is offline. For more information on offline apps, see the [Offline-First](/refguide/offline-first/) guide. A widget that fetches information from a third-party API, for example a widget that fetches airline ticket prices, could not function without an internet connection. If a widget cannot work offline, Mendix Studio Pro will forbid its use on pages that must be available offline. -* `supportedPlatform` — This shows the platforms a widget is compatible with. `Web` describes widgets that are only compatible with web and hybrid mobile apps. `Native` describes widgets that are compatible with native mobile apps. +* `id` – This the fully qualified name of the widget called widget ID. Using widget ID, the Mendix Platform distinguishes widgets from each other. Widget ID should never be changed after a widget is used in an app or is published in the Marketplace. Reverse domain-style names, as in example above, are recommended. +* `pluginWidget` – This should always be set to `true`. This way, the Mendix Platform can distinguish between the newer pluggable widgets and the older custom widgets. +* `offlineCapable` – This shows if a widget can work while an app is offline. For more information on offline apps, see the [Offline-First](/refguide/offline-first/) guide. A widget that fetches information from a third-party API, for example a widget that fetches airline ticket prices, could not function without an internet connection. If a widget cannot work offline, Mendix Studio Pro will forbid its use on pages that must be available offline. +* `supportedPlatform` – This shows the platforms a widget is compatible with. `Web` describes widgets that are only compatible with web and hybrid mobile apps. `Native` describes widgets that are compatible with native mobile apps. ### Widget Description {#widget-description} The presentation of the widget in Studio Pro is determined by the first set of elements inside the widget tag. The order of these descriptive tags is important, and is demonstrated in the list below. Only the name and description tags are mandatory — the others are optional. The description can be omitted with a self-closing tag: ``: -* `name` — The display name of the widget. -* `description` — A short written description of the widget. -* `studioProCategory` — See [Toolbox Category](#toolbox-category). -* `helpUrl` — See [Help Page](#help). -* `icon` — See [Icon](#icon). +* `name` – The display name of the widget. +* `description` – A short written description of the widget. +* `studioProCategory` – See [Toolbox Category](#toolbox-category). +* `helpUrl` – See [Help Page](#help). +* `icon` – See [Icon](#icon). ```xml My Progress Card @@ -386,10 +386,10 @@ This section will explain the shape of the widget property. For more detailed in Some properties can or must have more attributes or tags. This depends on the `type` property. The following elements should be present for every property: -* `key` — This element is a property's unique, single-word identifier. The `key` elements are used internally to identify properties, so they should never change after a widget is used in an app or is published in the Marketplace. A `key` element also identifies a property value when it is passed to a pluggable widget’s client component. -* `type` — This element is a property's type. The `type` element defines which values can be configured for a property, which UI is used in the Mendix Studio Pro, and what type of value a pluggable widget’s client component receives. -* `caption` — This element is a short label identifying a property to a modeling developer. The first letter of a caption should be capitalized. -* `description` — This element is a longer description of a property. A description should be capitalized and limited to one or two sentences. +* `key` – This element is a property's unique, single-word identifier. The `key` elements are used internally to identify properties, so they should never change after a widget is used in an app or is published in the Marketplace. A `key` element also identifies a property value when it is passed to a pluggable widget’s client component. +* `type` – This element is a property's type. The `type` element defines which values can be configured for a property, which UI is used in the Mendix Studio Pro, and what type of value a pluggable widget’s client component receives. +* `caption` – This element is a short label identifying a property to a modeling developer. The first letter of a caption should be capitalized. +* `description` – This element is a longer description of a property. A description should be capitalized and limited to one or two sentences. Here is how a caption and description look in Studio Pro: From 5d8033134501607c3958385217256dc57b1e352b Mon Sep 17 00:00:00 2001 From: ConnorLand <47385345+ConnorLand@users.noreply.github.com> Date: Tue, 1 Sep 2026 11:03:52 +0200 Subject: [PATCH 05/26] replace dashes --- .../studio-pro-11/pluggable-widgets/_index.md | 2 +- .../pluggable-widgets-property-types.md | 34 +++++++++---------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/content/en/docs/apidocs-mxsdk/apidocs/studio-pro-11/pluggable-widgets/_index.md b/content/en/docs/apidocs-mxsdk/apidocs/studio-pro-11/pluggable-widgets/_index.md index 3791b6311c6..02451a269c6 100644 --- a/content/en/docs/apidocs-mxsdk/apidocs/studio-pro-11/pluggable-widgets/_index.md +++ b/content/en/docs/apidocs-mxsdk/apidocs/studio-pro-11/pluggable-widgets/_index.md @@ -132,7 +132,7 @@ This section is generated based on options chosen while running the Mendix Plugg ### Widget Description {#widget-description} -The presentation of the widget in Studio Pro is determined by the first set of elements inside the widget tag. The order of these descriptive tags is important, and is demonstrated in the list below. Only the name and description tags are mandatory — the others are optional. The description can be omitted with a self-closing tag: ``: +The presentation of the widget in Studio Pro is determined by the first set of elements inside the widget tag. The order of these descriptive tags is important, and is demonstrated in the list below. Only the name and description tags are mandatory—the others are optional. The description can be omitted with a self-closing tag: ``: * `name` – The display name of the widget. * `description` – A short written description of the widget. diff --git a/content/en/docs/apidocs-mxsdk/apidocs/studio-pro-11/pluggable-widgets/pluggable-widgets-property-types.md b/content/en/docs/apidocs-mxsdk/apidocs/studio-pro-11/pluggable-widgets/pluggable-widgets-property-types.md index 609e77faadf..8b95f012807 100644 --- a/content/en/docs/apidocs-mxsdk/apidocs/studio-pro-11/pluggable-widgets/pluggable-widgets-property-types.md +++ b/content/en/docs/apidocs-mxsdk/apidocs/studio-pro-11/pluggable-widgets/pluggable-widgets-property-types.md @@ -65,9 +65,9 @@ This defines a property's type. A `type` must be one of the following: ### XML Elements -`` (required) — This defines the property name visible for the user (not the end-user) while configuring the widget in Studio Pro. +`` (required) – This defines the property name visible for the user (not the end-user) while configuring the widget in Studio Pro. -`` (required) — This is a description which explains a property's purpose. +`` (required) – This is a description which explains a property's purpose. ## Static Types @@ -210,7 +210,7 @@ The enumeration property type allows a user to select one out of multiple option #### XML Elements -`` (required) — One `` element must be declared with multiple `` elements inside in order to define possible enumeration values. A `key` attribute is required for every enumeration value as well as a caption. Enter enumeration values like this: +`` (required) – One `` element must be declared with multiple `` elements inside in order to define possible enumeration values. A `key` attribute is required for every enumeration value as well as a caption. Enter enumeration values like this: ```xml My enum option caption @@ -366,7 +366,7 @@ When a `dataSource` attribute is specified and configured by the user, it is pas #### XML Elements -`` (required) — An expression property must contain a `` element in order to define the return type of the expression. The Mendix Platform will ensure the that configured expression returns the correct data type. +`` (required) – An expression property must contain a `` element in order to define the return type of the expression. The Mendix Platform will ensure the that configured expression returns the correct data type. The return type of the expression must be defined using either the `type` or the `assignableTo` attribute. It is not allowed to specify both. @@ -454,7 +454,7 @@ When a `dataSource` attribute is specified and configured by the user, it is pas #### XML Elements -`` — Allows a user to set a default value for text templates for different languages using `` elements with a `lang` attribute representing [ISO 639](https://en.wikipedia.org/wiki/ISO_639) code of the language. Available languages are listed in the [Languages Tab](/refguide/languages-tab/) in Studio Pro. +`` – Allows a user to set a default value for text templates for different languages using `` elements with a `lang` attribute representing [ISO 639](https://en.wikipedia.org/wiki/ISO_639) code of the language. Available languages are listed in the [Languages Tab](/refguide/languages-tab/) in Studio Pro. #### Studio Pro UI @@ -498,13 +498,13 @@ Action properties can be preconfigured using the `defaultValue` and `defaultType #### XML Elements {#action-xml-elements} -`` — 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. Action variables are automatically mapped to parameters of the same name (`key`) and type. +`` – 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. Action variables are automatically mapped to parameters of the same name (`key`) and type. -`` (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: +`` (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: -* `key` (required) — The identifier of the variable used in Studio Pro and the Pluggable Widgets API. -* `type` (required) — The type of the value that the variable represents. Supported types and their corresponding Typescript type are listed in the table below. -* `caption` (required) — A short description of the variable that is displayed in Studio Pro. +* `key` (required) – The identifier of the variable used in Studio Pro and the Pluggable Widgets API. +* `type` (required) – The type of the value that the variable represents. Supported types and their corresponding Typescript type are listed in the table below. +* `caption` (required) – A short description of the variable that is displayed in Studio Pro. | Action Variable Type | Client Type | | -------------------- | --------- | @@ -566,9 +566,9 @@ When a `dataSource` attribute is specified and configured by the user, it is pas #### XML Elements -`` (required) — This element encapsulates `` elements which declare supported attribute types available while configuring the attribute property in Studio Pro. +`` (required) – This element encapsulates `` elements which declare supported attribute types available while configuring the attribute property in Studio Pro. -`` (required one or more) — this element defines the allowed attribute type in the `name` attribute. +`` (required one or more) – This element defines the allowed attribute type in the `name` attribute. | Supported Attribute Types | Corresponding Types Client Components Receive | |---------------------------|-----------------------------------------------| @@ -629,9 +629,9 @@ When a `dataSource` attribute is specified and configured by the user, it is pas #### XML Elements -`` (required) — This element encapsulates `` elements which declare supported association types available while configuring the association property in Studio Pro. +`` (required) – This element encapsulates `` elements which declare supported association types available while configuring the association property in Studio Pro. -`` (required one or more) — this element defines the allowed association type in the `name` attribute. +`` (required one or more) – This element defines the allowed association type in the `name` attribute. | Supported Attribute Types | Corresponding Types Client Components Receive | |---------------------------|-----------------------------------------------| @@ -677,7 +677,7 @@ The object property type allows to create an arbitrary list of properties. #### XML Elements -`` (required) — This encapsulates the list or properties to be configured. For more information on property groups, see the [Property Groups](/apidocs-mxsdk/apidocs/pluggable-widgets/#property-groups) section of *Pluggable Widgets API*. Properties must be grouped by `` elements. Nested object properties are not supported. +`` (required) – This encapsulates the list or properties to be configured. For more information on property groups, see the [Property Groups](/apidocs-mxsdk/apidocs/pluggable-widgets/#property-groups) section of *Pluggable Widgets API*. Properties must be grouped by `` elements. Nested object properties are not supported. #### Studio Pro UI @@ -849,9 +849,9 @@ The `dataSource` attribute must refer to a [list data source](#list-datasource). #### XML Elements -`` (required) — This element encapsulates `` elements which declare supported selection types available while configuring the selection property in Studio Pro. +`` (required) – This element encapsulates `` elements which declare supported selection types available while configuring the selection property in Studio Pro. -`` (required one or more) — This element defines the selection type in the `name` attribute. +`` (required one or more) – This element defines the selection type in the `name` attribute. | Supported Selection Types | Corresponding Types Client Components Receive | |---------------------------|-----------------------------------------------| From 31b3b355a352dce33e3c845773f7b5e1730e7f74 Mon Sep 17 00:00:00 2001 From: ConnorLand <47385345+ConnorLand@users.noreply.github.com> Date: Tue, 1 Sep 2026 11:10:30 +0200 Subject: [PATCH 06/26] fix dashes --- .../pluggable-widgets-client-apis/_index.md | 12 ++-- .../pluggable-widgets-client-apis-9/_index.md | 8 +-- .../pluggable-widgets-property-types-9.md | 20 +++--- .../contribute-to-mendix-docs/icon-demo.md | 2 +- .../company/company-settings.md | 4 +- .../software-composition/components.md | 62 +++++++++---------- 6 files changed, 54 insertions(+), 54 deletions(-) diff --git a/content/en/docs/apidocs-mxsdk/apidocs/studio-pro-11/pluggable-widgets/pluggable-widgets-client-apis/_index.md b/content/en/docs/apidocs-mxsdk/apidocs/studio-pro-11/pluggable-widgets/pluggable-widgets-client-apis/_index.md index ba898727cf3..61cea9d87ac 100644 --- a/content/en/docs/apidocs-mxsdk/apidocs/studio-pro-11/pluggable-widgets/pluggable-widgets-client-apis/_index.md +++ b/content/en/docs/apidocs-mxsdk/apidocs/studio-pro-11/pluggable-widgets/pluggable-widgets-client-apis/_index.md @@ -151,9 +151,9 @@ The flag `readOnly` indicates whether a value can actually be edited. It will be 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. -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`. +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`. -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. +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. 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. @@ -176,7 +176,7 @@ interface SimpleFormatter { ##### Built-in Formatter Types {#built-in-formatter-types} -The Mendix platform provides two typed, configurable built-in formatters that extend `SimpleFormatter`: `NumberFormatter` and `DateTimeFormatter`. The actual type of `EditableValue.formatter` is `ValueFormatter` — a union that covers both built-in and plain formatters: +The Mendix platform provides two typed, configurable built-in formatters that extend `SimpleFormatter`: `NumberFormatter` and `DateTimeFormatter`. The actual type of `EditableValue.formatter` is `ValueFormatter`—a union that covers both built-in and plain formatters: ```ts type ValueFormatter = @@ -327,11 +327,11 @@ The flag `readOnly` indicates whether a value can actually be edited. The `readO 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. -When setting a value, a new value might not satisfy certain validation rules — for example when a file is selected and the new value is bigger than the underlying file allows, or the file type is not allowed. In this case, your change will affect only `value` received through a prop. Your change will not be propagated to an object and will not be visible outside of youAllowUpload (Optional) +When setting a value, a new value might not satisfy certain validation rules—for example when a file is selected and the new value is bigger than the underlying file allows, or the file type is not allowed. In this case, your change will affect only `value` received through a prop. Your change will not be propagated to an object and will not be visible outside of youAllowUpload (Optional) This component. The component will also receive a validation error text through the `validation` field of `EditableFileValue`. -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. +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. ### EditableImageValue {#editable-image-value} @@ -388,7 +388,7 @@ The value can be read from the `value` field and modified using the `setValue` f When setting a value, the `ObjectItem` must be items from the selectable object's data source. 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. -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. +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. ### IconValue {#icon-value} diff --git a/content/en/docs/apidocs-mxsdk/apidocs/studio-pro-9/pluggable-widgets/pluggable-widgets-client-apis-9/_index.md b/content/en/docs/apidocs-mxsdk/apidocs/studio-pro-9/pluggable-widgets/pluggable-widgets-client-apis-9/_index.md index 2c6b8ece941..edc87f08582 100644 --- a/content/en/docs/apidocs-mxsdk/apidocs/studio-pro-9/pluggable-widgets/pluggable-widgets-client-apis-9/_index.md +++ b/content/en/docs/apidocs-mxsdk/apidocs/studio-pro-9/pluggable-widgets/pluggable-widgets-client-apis-9/_index.md @@ -123,11 +123,11 @@ The flag `readOnly` indicates whether a value can actually be edited. It will be 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. -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`. +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`. -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. +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. -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. +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. 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)`. @@ -319,7 +319,7 @@ The value can be read from the `value` field and modified using the `setValue` f When setting a value, the `ObjectItem` must be items from the selectable object's data source. 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. -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. +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. ### IconValue {#icon-value} diff --git a/content/en/docs/apidocs-mxsdk/apidocs/studio-pro-9/pluggable-widgets/pluggable-widgets-property-types-9.md b/content/en/docs/apidocs-mxsdk/apidocs/studio-pro-9/pluggable-widgets/pluggable-widgets-property-types-9.md index c82ed2befc0..66570940199 100644 --- a/content/en/docs/apidocs-mxsdk/apidocs/studio-pro-9/pluggable-widgets/pluggable-widgets-property-types-9.md +++ b/content/en/docs/apidocs-mxsdk/apidocs/studio-pro-9/pluggable-widgets/pluggable-widgets-property-types-9.md @@ -50,9 +50,9 @@ This defines a property's type. A `type` must be one of the following: ### XML Elements -`` (required) — This defines the property name visible for the user (not the end-user) while configuring the widget in Studio Pro. +`` (required) – This defines the property name visible for the user (not the end-user) while configuring the widget in Studio Pro. -`` (required) — This is a description which explains a property's purpose. +`` (required) – This is a description which explains a property's purpose. ## Static Types @@ -195,7 +195,7 @@ The enumeration property type allows a user to select one out of multiple option #### XML Elements -`` (required) — One `` element must be declared with multiple `` elements inside in order to define possible enumeration values. A `key` attribute is required for every enumeration value as well as a caption. Enter enumeration values like this: +`` (required) – One `` element must be declared with multiple `` elements inside in order to define possible enumeration values. A `key` attribute is required for every enumeration value as well as a caption. Enter enumeration values like this: ```xml My enum option caption @@ -352,7 +352,7 @@ When a `dataSource` attribute is specified and configured by the user, it is pas #### XML Elements -`` (required) — An expression property must contain a `` element in order to define the return type of the expression. The Mendix Platform will ensure the that configured expression returns the correct data type. +`` (required) – An expression property must contain a `` element in order to define the return type of the expression. The Mendix Platform will ensure the that configured expression returns the correct data type. The return type of the expression must be defined using either the `type` or the `assignableTo` attribute. It is not allowed to specify both. @@ -448,7 +448,7 @@ When a `dataSource` attribute is specified and configured by the user, it is pas #### XML Elements -`` — Allows a user to set a default value for text templates for different languages using `` elements with a `lang` attribute representing [ISO 639](https://en.wikipedia.org/wiki/ISO_639) code of the language. Available languages are listed in the [Languages Tab](/refguide10/app-settings/#languages-tab) in Studio Pro. +`` – Allows a user to set a default value for text templates for different languages using `` elements with a `lang` attribute representing [ISO 639](https://en.wikipedia.org/wiki/ISO_639) code of the language. Available languages are listed in the [Languages Tab](/refguide10/app-settings/#languages-tab) in Studio Pro. #### Studio Pro UI @@ -521,9 +521,9 @@ When a `dataSource` attribute is specified and configured by the user, it is pas #### XML Elements -`` (required) — This element encapsulates `` elements which declare supported attribute types available while configuring the attribute property in Studio Pro. +`` (required) – This element encapsulates `` elements which declare supported attribute types available while configuring the attribute property in Studio Pro. -`` (required one or more) — this element defines the allowed attribute type in the `name` attribute. +`` (required one or more) – This element defines the allowed attribute type in the `name` attribute. | Supported Attribute Types | Corresponding Types Client Components Receive | |---------------------------|-----------------------------------------------| @@ -591,9 +591,9 @@ When a `dataSource` attribute is specified and configured by the user, it is pas #### XML Elements -`` (required) — This element encapsulates `` elements which declare supported association types available while configuring the association property in Studio Pro. +`` (required) – This element encapsulates `` elements which declare supported association types available while configuring the association property in Studio Pro. -`` (required one or more) — this element defines the allowed association type in the `name` attribute. +`` (required one or more) – This element defines the allowed association type in the `name` attribute. | Supported Attribute Types | Corresponding Types Client Components Receive | |---------------------------|-----------------------------------------------| @@ -639,7 +639,7 @@ The object property type allows to create an arbitrary list of properties. #### XML Elements -`` (required) — This encapsulates the list or properties to be configured. For more information on property groups, see the [Property Groups](/apidocs-mxsdk/apidocs/pluggable-widgets/#property-groups) section of *Pluggable Widgets API*. Properties must be grouped by `` elements. Nested object properties are not supported. +`` (required) – This encapsulates the list or properties to be configured. For more information on property groups, see the [Property Groups](/apidocs-mxsdk/apidocs/pluggable-widgets/#property-groups) section of *Pluggable Widgets API*. Properties must be grouped by `` elements. Nested object properties are not supported. #### Studio Pro UI diff --git a/content/en/docs/community-tools/contribute-to-mendix-docs/icon-demo.md b/content/en/docs/community-tools/contribute-to-mendix-docs/icon-demo.md index 8185011d3e5..03d9d00efe2 100644 --- a/content/en/docs/community-tools/contribute-to-mendix-docs/icon-demo.md +++ b/content/en/docs/community-tools/contribute-to-mendix-docs/icon-demo.md @@ -22,7 +22,7 @@ To see more information about the pipeline, click **Details** ({{% icon name="no This shortcode has two attributes: -* `name` (required) — This must exactly match the name of the file in the *docs/static/mx-icons* library. +* `name` (required) – This must exactly match the name of the file in the *docs/static/mx-icons* library. * `color` (optional) – By default, the icon has the same color as the surrounding text. You can override this by specifying an optional `color` attribute, like this: {{% icon name="alert-circle" color="red" %}}. You can set the color to green, red, blue, gray, yellow, or purple. {{% alert color="info" %}}For details on the icon style guidance, see the [Documentation Style Guide](https://mendix.atlassian.net/wiki/spaces/RNDHB/pages/2510061889/Images+and+Icons#Icons).{{% /alert %}} diff --git a/content/en/docs/control-center/company/company-settings.md b/content/en/docs/control-center/company/company-settings.md index 8586de77d5a..2a7659dfbf7 100644 --- a/content/en/docs/control-center/company/company-settings.md +++ b/content/en/docs/control-center/company/company-settings.md @@ -38,7 +38,7 @@ After you click **Add security contact** and add the required **Name** and **Ema For an existing security contact, there are two menu options available: -* **Edit** — Edit the Security Contact's **Name**. -* **Delete** — Delete the existing Security Contact. This is the first step in changing a validated Security Contact. After you make the deletion, you can add the new Security Contact. +* **Edit** – Edit the Security Contact's **Name**. +* **Delete** – Delete the existing Security Contact. This is the first step in changing a validated Security Contact. After you make the deletion, you can add the new Security Contact. For more information on security issues, see [Security Advisories](/releasenotes/security-advisories/). diff --git a/content/en/docs/control-center/security/software-composition/components.md b/content/en/docs/control-center/security/software-composition/components.md index 416969fc8c0..321cb7e54d0 100644 --- a/content/en/docs/control-center/security/software-composition/components.md +++ b/content/en/docs/control-center/security/software-composition/components.md @@ -16,14 +16,14 @@ The **Components** tab gives an overview of all the unique components used acros The **Insights** cards display the following details: -* **Marketplace** — The number of private and public Marketplace components used throughout your apps. These can be: +* **Marketplace** – The number of private and public Marketplace components used throughout your apps. These can be: * Modules * Widgets * Framework -* **Support type** — The number of Marketplace components divided into content support categories. -* **Summary** — The number of findings in each severity category, along with a rolling average of how the number of findings has evolved over the past 30 days, expressed as a percentage. +* **Support type** – The number of Marketplace components divided into content support categories. +* **Summary** – The number of findings in each severity category, along with a rolling average of how the number of findings has evolved over the past 30 days, expressed as a percentage. ## Component List @@ -35,26 +35,26 @@ The following options are available above the list of components: The component list contains the following information: -* **Component** — The name of the component. -* **Type** — The type of component, which can be one of the following: +* **Component** – The name of the component. +* **Type** – The type of component, which can be one of the following: - * **Module** — Standard marketplace module imported from the Marketplace, such as [Community Commons](https://marketplace.mendix.com/link/component/170), or a module created by the developer. - * **Widget** — User interface elements downloaded from the Marketplace, such as [Charts](https://marketplace.mendix.com/link/component/105695), or a widget created by the developer. - * **Framework** — The Mendix Runtime version, for example 10.12.0 - * **Jar** — Java libraries imported into your app using [Managed Dependencies](/refguide/managed-dependencies/), or those manually added in the **userlib** folder depending on the Studio Pro version used, such as `org.apache.commons.io`. - * **npms** — `npm` libraries that are used in your [JavaScript actions](/refguide/javascript-actions/). - * **Unknown** — When the type of the component is none of the above and hence undetermined. + * **Module** – Standard marketplace module imported from the Marketplace, such as [Community Commons](https://marketplace.mendix.com/link/component/170), or a module created by the developer. + * **Widget** – User interface elements downloaded from the Marketplace, such as [Charts](https://marketplace.mendix.com/link/component/105695), or a widget created by the developer. + * **Framework** – The Mendix Runtime version, for example 10.12.0 + * **Jar** – Java libraries imported into your app using [Managed Dependencies](/refguide/managed-dependencies/), or those manually added in the **userlib** folder depending on the Studio Pro version used, such as `org.apache.commons.io`. + * **npms** – `npm` libraries that are used in your [JavaScript actions](/refguide/javascript-actions/). + * **Unknown** – When the type of the component is none of the above and hence undetermined. -* **Support type** — The support type of the Marketplace component. This can be **Mendix**, **Partner**, or **Community**. +* **Support type** – The support type of the Marketplace component. This can be **Mendix**, **Partner**, or **Community**. For more information, refer to [Content Support Categories](/appstore/marketplace-content-support/#category). -* **Version** — The version of the component that is being used. -* **Findings** — The number of findings of each type, color-coded according to severity level. -* **License** — For components derived from the Mendix Marketplace, this is the end-user license for the component. +* **Version** – The version of the component that is being used. +* **Findings** – The number of findings of each type, color-coded according to severity level. +* **License** – For components derived from the Mendix Marketplace, this is the end-user license for the component. * **Marketplace** – Whether the component is **Public** or **Private**. A public component is available to the whole Mendix community in the Marketplace, while a private component is only available for your organisation. On the Marketplace homepage, you can use the **Visibility** filter to display specific components. * **Apps using component** – The number of apps where the component is used. -* **Latest version** — For components derived from the Mendix Marketplace, this is the latest version of the component. -* **Publisher** — For components derived from the Mendix Marketplace, this is the name of the organization that published the component. -* **View details** — Clicking this opens the [Component Details](#component-details) page. +* **Latest version** – For components derived from the Mendix Marketplace, this is the latest version of the component. +* **Publisher** – For components derived from the Mendix Marketplace, this is the name of the organization that published the component. +* **View details** – Clicking this opens the [Component Details](#component-details) page. * Column customization ({{% icon name="view" %}}) – You can customize the columns of the list by clicking the {{% icon name="view" %}} icon and selecting or deselecting options. To export the information corresponding to selected items in the list to an Excel file, select the checkboxes of the items in the list, then click **Selection Export** that appears at the bottom of the page. @@ -77,18 +77,18 @@ The following options are available above the list: The finding list contains the following information: -* **Severity** — The severity of the finding related to that component. -* **Finding Type** — The type of finding, which can be **Outdated** or **Deprecated**. -* **App Name** — The app in which the component is identified as a vulnerability. -* **Environment** — The name of the environment where the app is running. -* **Target Cloud** — The type of cloud where the deployment package is deployed. -* **Age** — The number of days that the finding has been applicable, computed as follows: +* **Severity** – The severity of the finding related to that component. +* **Finding Type** – The type of finding, which can be **Outdated** or **Deprecated**. +* **App Name** – The app in which the component is identified as a vulnerability. +* **Environment** – The name of the environment where the app is running. +* **Target Cloud** – The type of cloud where the deployment package is deployed. +* **Age** – The number of days that the finding has been applicable, computed as follows: * Deprecated components: The current date - The date when the component was deprecated * Outdated components: The current date - The publish date of the first higher runtime compatible version * Vulnerable components: The number of days since the date when the CVSS score was computed -* Column customization ({{% icon name="view" %}}) — You can customize the columns in the list by clicking the {{% icon name="view" %}} icon and selecting or deselecting options. +* Column customization ({{% icon name="view" %}}) – You can customize the columns in the list by clicking the {{% icon name="view" %}} icon and selecting or deselecting options. #### Finding and Component Details @@ -127,9 +127,9 @@ The following options are available above the list: The component usage list contains the following information: -* **App Name** — The name of the app where the component is used. -* **Environment** — The name of the environment where the app using the component is deployed. -* **Runtime** — The runtime version to which the component is compatible. -* **Target Cloud** — The type of cloud where the deployment package is deployed. -* **Technical Contact** — The Technical Contact of the app. -* Column customization ({{% icon name="view" %}}) — You can customize the columns in the list by clicking the {{% icon name="view" %}} icon and selecting or deselecting options. +* **App Name** – The name of the app where the component is used. +* **Environment** – The name of the environment where the app using the component is deployed. +* **Runtime** – The runtime version to which the component is compatible. +* **Target Cloud** – The type of cloud where the deployment package is deployed. +* **Technical Contact** – The Technical Contact of the app. +* Column customization ({{% icon name="view" %}}) – You can customize the columns in the list by clicking the {{% icon name="view" %}} icon and selecting or deselecting options. From ee653f0e8a26bc872bec0f0c90ed8b1a5712117e Mon Sep 17 00:00:00 2001 From: ConnorLand <47385345+ConnorLand@users.noreply.github.com> Date: Tue, 1 Sep 2026 11:24:21 +0200 Subject: [PATCH 07/26] replace dashes --- .../security/software-composition/overview.md | 60 +++++++++---------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/content/en/docs/control-center/security/software-composition/overview.md b/content/en/docs/control-center/security/software-composition/overview.md index 32e774d7ade..278b4b2d88f 100755 --- a/content/en/docs/control-center/security/software-composition/overview.md +++ b/content/en/docs/control-center/security/software-composition/overview.md @@ -39,18 +39,18 @@ The following options are available above the list of application environments: The app list is sorted based on the number of findings and their severity, from highest to lowest. It contains the following information: -* **App Name** — The name of the app. -* **Environment** — The name of the environment. -* **Runtime** — The Mendix Runtime version. -* **Findings** — The number of findings of each type, color-coded according to severity level. +* **App Name** – The name of the app. +* **Environment** – The name of the environment. +* **Runtime** – The Mendix Runtime version. +* **Findings** – The number of findings of each type, color-coded according to severity level. * **Policy Status** – The number of policies that the app violates. For details on each policy, click this line item, then go to the **Policy Status** tab of the app. -* **Technical Contact** — The Technical Contact of the app. -* **Target Cloud** — The type of cloud where the deployment package is deployed. Currently, the following types of cloud are supported: +* **Technical Contact** – The Technical Contact of the app. +* **Target Cloud** – The type of cloud where the deployment package is deployed. Currently, the following types of cloud are supported: * Mendix Free Cloud * Mendix Cloud (including Mendix Cloud Dedicated) * Mendix on Kubernetes (connected) -* Column customization ({{% icon name="view" %}}) — You can customize the columns in the list by clicking the {{% icon name="view" %}} icon and selecting or deselecting options. -* **View details** — Clicking this opens the [Application Environment Summary](#app-env-summary) page, if it is available. The **View details** button is grayed out when an SBOM is not available for the selected application environment. Ensure you are on a compatible runtime version and have created a new deployment package in order to have components visible here. +* Column customization ({{% icon name="view" %}}) – You can customize the columns in the list by clicking the {{% icon name="view" %}} icon and selecting or deselecting options. +* **View details** – Clicking this opens the [Application Environment Summary](#app-env-summary) page, if it is available. The **View details** button is grayed out when an SBOM is not available for the selected application environment. Ensure you are on a compatible runtime version and have created a new deployment package in order to have components visible here. To export the information corresponding to selected items in the list to an Excel file, select the checkboxes of the items in the list, then click **Selection Export** that appears at the bottom of the page. @@ -89,22 +89,22 @@ The following options are available above the list: The finding list contains the following information: -* **Severity** — The severity level of the finding related to that component. -* **Finding Type** — The type of finding, which can be **Outdated**, **Deprecated**, or **Vulnerable**. -* **Component** — The name of the component used in the app. Clicking this takes you to the corresponding Mendix Marketplace page. -* **Version** — The version of the component that is used in the app. -* **Type** — The type of component. -* **Support type** — This shows the support type of the Marketplace component. It can be **Mendix**, **Partner**, or **Community**. For more information, refer to [Content Support Categories](/appstore/marketplace-content-support/#category). -* **Age** — The number of days that the finding has been applicable, computed as follows: +* **Severity** – The severity level of the finding related to that component. +* **Finding Type** – The type of finding, which can be **Outdated**, **Deprecated**, or **Vulnerable**. +* **Component** – The name of the component used in the app. Clicking this takes you to the corresponding Mendix Marketplace page. +* **Version** – The version of the component that is used in the app. +* **Type** – The type of component. +* **Support type** – This shows the support type of the Marketplace component. It can be **Mendix**, **Partner**, or **Community**. For more information, refer to [Content Support Categories](/appstore/marketplace-content-support/#category). +* **Age** – The number of days that the finding has been applicable, computed as follows: * Deprecated components: the current date - the date when the component was deprecated * Outdated components: the current date - the publish date of the first higher runtime compatible version -* **Outdated since version** — The version that caused the currently used version to become outdated. This only applies to outdated components. -* **Outdated since version publish date** — The release date of the version that caused the currently used version to become outdated. This only applies to outdated components. -* **Deprecated since version** — The version when the component became deprecated. -* **Deprecated since version publish date** — The release date of the version when the component became deprecated. -* Column customization ({{% icon name="view" %}}) — You can customize the columns in the list by clicking the {{% icon name="view" %}} icon and selecting or deselecting options. +* **Outdated since version** – The version that caused the currently used version to become outdated. This only applies to outdated components. +* **Outdated since version publish date** – The release date of the version that caused the currently used version to become outdated. This only applies to outdated components. +* **Deprecated since version** – The version when the component became deprecated. +* **Deprecated since version publish date** – The release date of the version when the component became deprecated. +* Column customization ({{% icon name="view" %}}) – You can customize the columns in the list by clicking the {{% icon name="view" %}} icon and selecting or deselecting options. #### Finding and Component Details @@ -140,23 +140,23 @@ The following options are available above the list: The component usage list contains the following information: -* **Component** — The name of the component. +* **Component** – The name of the component. * **Version** – The version of the component that is being used. -* **Type** — The type of component, which can be one of the following: +* **Type** – The type of component, which can be one of the following: - * **Module** — Standard marketplace module imported from the Marketplace, such as [Community Commons](https://marketplace.mendix.com/link/component/170). - * **Widget** — User interface elements downloaded from the Marketplace, such as [Charts](https://marketplace.mendix.com/link/component/105695). - * **Framework** — The Mendix Runtime version, for example 10.12.0 - * **Jar** — Java libraries imported into your app using [Managed Dependencies](/refguide/managed-dependencies/), or those manually added in the **userlib** folder depending on the Studio Pro version used, such as `org.apache.commons.io`. - * **npms** — `npm` libraries that are used in your [JavaScript actions](/refguide/javascript-actions/). - * **Unknown** — When the type of the component is none of the above and hence undetermined. + * **Module** – Standard marketplace module imported from the Marketplace, such as [Community Commons](https://marketplace.mendix.com/link/component/170). + * **Widget** – User interface elements downloaded from the Marketplace, such as [Charts](https://marketplace.mendix.com/link/component/105695). + * **Framework** – The Mendix Runtime version, for example 10.12.0 + * **Jar** – Java libraries imported into your app using [Managed Dependencies](/refguide/managed-dependencies/), or those manually added in the **userlib** folder depending on the Studio Pro version used, such as `org.apache.commons.io`. + * **npms** – `npm` libraries that are used in your [JavaScript actions](/refguide/javascript-actions/). + * **Unknown** – When the type of the component is none of the above and hence undetermined. * **Support type** – The support type of the Marketplace component. This can be **Mendix**, **Partner**, or **Community**. For more information, refer to [Content Support Categories](/appstore/marketplace-content-support/#category). * **License** – For components derived from the Mendix Marketplace, this is the end-user license for the component. * **Latest version** – For components derived from the Mendix Marketplace, this is the latest version of the component. * **Marketplace** – Whether the component is **Public** or **Private**. A public component is available to the whole Mendix community in the Marketplace, while a private component is only available for your organisation. On the Marketplace homepage, you can use the **Visibility** filter to display specific components. -* **Latest Runtime Compatible Version** — The most recent runtime version to which the component is compatible. +* **Latest Runtime Compatible Version** – The most recent runtime version to which the component is compatible. * **Publisher** – For components derived from the Mendix Marketplace, this is the name of the organization that published the component. * Column customization ({{% icon name="view" %}}) – You can customize the columns of the list by clicking the {{% icon name="view" %}} icon and selecting or deselecting options. @@ -182,7 +182,7 @@ The **Policy Status** tab displays a list of the policies that the app violates, * **Failure Condition(s)** – The conditions under which the policy is considered violated. * **Checkpoints & Action(s)** – The trigger which causes the policy to be checked, and the action that is taken if the policy is violated. -* Column customization ({{% icon name="view" %}}) — You can customize the columns in the list by clicking the {{% icon name="view" %}} icon and selecting or deselecting options. +* Column customization ({{% icon name="view" %}}) – You can customize the columns in the list by clicking the {{% icon name="view" %}} icon and selecting or deselecting options. You can search a policy by its name, and export all information on this tab to an Excel file. From f639b714a9449c2f3e86571ad65b238f6a0269a6 Mon Sep 17 00:00:00 2001 From: ConnorLand <47385345+ConnorLand@users.noreply.github.com> Date: Tue, 1 Sep 2026 11:41:05 +0200 Subject: [PATCH 08/26] replace dashes --- .../software-composition/policy-status.md | 2 +- .../software-composition/scoring-criteria.md | 4 +- .../deployment/deploying-to-mindsphere.md | 2 +- .../general/software-composition.md | 80 +++++++++---------- 4 files changed, 44 insertions(+), 44 deletions(-) diff --git a/content/en/docs/control-center/security/software-composition/policy-status.md b/content/en/docs/control-center/security/software-composition/policy-status.md index f6704676d5a..a820a7e6831 100755 --- a/content/en/docs/control-center/security/software-composition/policy-status.md +++ b/content/en/docs/control-center/security/software-composition/policy-status.md @@ -14,5 +14,5 @@ The **Policy Status** tab lists the policies that apply to all apps in your land * **Package Name** – The name of the package which violated the policy. * **Environment Name** – If applicable, the name of the environment where the violating app package is deployed. * **Runtime** – The runtime version of the deployment package. -* **Target Cloud** — The type of cloud where the deployment package is deployed. +* **Target Cloud** – The type of cloud where the deployment package is deployed. * **Last Checked On** – The date when the policy was last checked. diff --git a/content/en/docs/control-center/security/software-composition/scoring-criteria.md b/content/en/docs/control-center/security/software-composition/scoring-criteria.md index 894d2842ee2..fb976461c5f 100644 --- a/content/en/docs/control-center/security/software-composition/scoring-criteria.md +++ b/content/en/docs/control-center/security/software-composition/scoring-criteria.md @@ -36,8 +36,8 @@ For example, if you set a **Low** severity to 30 days, and if a new version of t There are two ways to adjust the scoring criteria: -* Change the condition — You can increase the number of days so the teams have more time to update their apps. -* Turn off the finding — You can turn off some or all findings if you do not want teams to focus on them. +* Change the condition – You can increase the number of days so the teams have more time to update their apps. +* Turn off the finding – You can turn off some or all findings if you do not want teams to focus on them. ### Deprecated diff --git a/content/en/docs/deployment/deploying-to-mindsphere.md b/content/en/docs/deployment/deploying-to-mindsphere.md index 6cb18827f4b..25cc781c96c 100644 --- a/content/en/docs/deployment/deploying-to-mindsphere.md +++ b/content/en/docs/deployment/deploying-to-mindsphere.md @@ -32,7 +32,7 @@ To help you with your first Insights Hub apps, there is also an example app whic To deploy and register your app within Insights Hub you need the following prerequisites. * An Insights Hub user account on a **Developer** or a **Start for Free** tenant -* An Insights Hub developer role: either `mdsp:core:Developer` or `mdsp:core:DeveloperAdmin` — these are already granted on Start for Free tenants. +* An Insights Hub developer role: either `mdsp:core:Developer` or `mdsp:core:DeveloperAdmin`—these are already granted on Start for Free tenants. * [Mendix Studio Pro](https://marketplace.mendix.com/) The following are also required if you want to deploy and run the Mendix app on Insights Hub Cloud Foundry: diff --git a/content/en/docs/deployment/general/software-composition.md b/content/en/docs/deployment/general/software-composition.md index e2b1304cf95..7919a934331 100644 --- a/content/en/docs/deployment/general/software-composition.md +++ b/content/en/docs/deployment/general/software-composition.md @@ -89,20 +89,20 @@ The following options are available above the list of deployment packages: The list contains the following information: -* **Deployment Package** — The name of the deployment package. -* **Environment** — The name of the environment where the package is deployed. -* **Runtime** — The Mendix Runtime version. -* **Findings** — The number of findings of each type, color-coded according to severity level. +* **Deployment Package** – The name of the deployment package. +* **Environment** – The name of the environment where the package is deployed. +* **Runtime** – The Mendix Runtime version. +* **Findings** – The number of findings of each type, color-coded according to severity level. {{% alert color="warning" %}}Findings are calculated for all software packages that are built. However, if a package is not deployed, we will stop updating its findings after 30 days. These findings will be grayed out and displayed as 0.{{% /alert %}} * **Policy Status** – The number of policies that the app violates. For details on each policy, click this line item, then go to the [Policy Status tab](#policy-status) of the app. -* **Version** — The version of the deployment package on this app environment. -* **Technical Contact** — The Technical Contact of the app. -* **Target Cloud** — The type of cloud where the deployment package is deployed. Currently, the following types of cloud are supported: +* **Version** – The version of the deployment package on this app environment. +* **Technical Contact** – The Technical Contact of the app. +* **Target Cloud** – The type of cloud where the deployment package is deployed. Currently, the following types of cloud are supported: * Mendix Free Cloud * Mendix Cloud (including Mendix Cloud Dedicated) * Mendix on Kubernetes (connected) -* Column customization ({{% icon name="view" %}}) — You can customize the columns in the list by clicking the {{% icon name="view" %}} icon and selecting or deselecting options. -* **View details** — Clicking this opens the [Deployed Package Details](#deployed-package-details) page, if it is available. The **View details** button is grayed out when an SBOM is not available for the selected deployment package. Ensure you are on a compatible runtime version and create a new deployment package in order to get component visibility here. +* Column customization ({{% icon name="view" %}}) – You can customize the columns in the list by clicking the {{% icon name="view" %}} icon and selecting or deselecting options. +* **View details** – Clicking this opens the [Deployed Package Details](#deployed-package-details) page, if it is available. The **View details** button is grayed out when an SBOM is not available for the selected deployment package. Ensure you are on a compatible runtime version and create a new deployment package in order to get component visibility here. ### Deployment Package Details {#deployed-package-details} @@ -185,9 +185,9 @@ The **Components** tab gives an overview of all the unique components deployed i The **Insights** cards display the following details: -* **Marketplace** — The number of private and public Marketplace components used throughout your apps. -* **Support type** — The number of Marketplace components divided into content support categories. -* **Summary** — The number of findings in each severity category, along with a rolling average of how the number of findings has evolved over the past 30 days, expressed as a percentage. +* **Marketplace** – The number of private and public Marketplace components used throughout your apps. +* **Support type** – The number of Marketplace components divided into content support categories. +* **Summary** – The number of findings in each severity category, along with a rolling average of how the number of findings has evolved over the past 30 days, expressed as a percentage. ### Component List @@ -199,25 +199,25 @@ The following options are available above the list of components: The component list contains the following information: -* **Component** — The name of the component. -* **Type** — The type of component, which can be one of the following: +* **Component** – The name of the component. +* **Type** – The type of component, which can be one of the following: - * **Module** — Standard marketplace module imported from the Marketplace, such as [Community Commons](https://marketplace.mendix.com/link/component/170), or a module created by the developer. - * **Widget** — User interface elements downloaded from the Marketplace, such as [Charts](https://marketplace.mendix.com/link/component/105695), or a widget created by the developer. - * **Framework** — The Mendix Runtime version, for example 10.12.0 - * **Jar** — Java libraries imported into your app using [Managed Dependencies](/refguide/managed-dependencies/), or those manually added in the **userlib** folder depending on the Studio Pro version used, such as `org.apache.commons.io`. - * **npms** — `npm` libraries that are used in your [JavaScript actions](/refguide/javascript-actions/). - * **Unknown** — When the type of the component is none of the above and hence undetermined. + * **Module** – Standard marketplace module imported from the Marketplace, such as [Community Commons](https://marketplace.mendix.com/link/component/170), or a module created by the developer. + * **Widget** – User interface elements downloaded from the Marketplace, such as [Charts](https://marketplace.mendix.com/link/component/105695), or a widget created by the developer. + * **Framework** – The Mendix Runtime version, for example 10.12.0 + * **Jar** – Java libraries imported into your app using [Managed Dependencies](/refguide/managed-dependencies/), or those manually added in the **userlib** folder depending on the Studio Pro version used, such as `org.apache.commons.io`. + * **npms** – `npm` libraries that are used in your [JavaScript actions](/refguide/javascript-actions/). + * **Unknown** – When the type of the component is none of the above and hence undetermined. -* **Support type** — The support type of the Marketplace component. This can be **Mendix**, **Partner**, or **Community**. +* **Support type** – The support type of the Marketplace component. This can be **Mendix**, **Partner**, or **Community**. For more information, refer to [Content Support Categories](/appstore/marketplace-content-support/#category). -* **Version** — The version of the component that is being used. -* **Findings** — The number of findings of each type, color-coded according to severity level. -* **License** — For components derived from the Mendix Marketplace, this is the end-user license for the component. +* **Version** – The version of the component that is being used. +* **Findings** – The number of findings of each type, color-coded according to severity level. +* **License** – For components derived from the Mendix Marketplace, this is the end-user license for the component. * **Marketplace** – Whether the component is **Public** or **Private**. A public component is available to the whole Mendix community in the Marketplace, while a private component is only available for your organisation. On the Marketplace homepage, you can use the **Visibility** filter to display specific components. -* **Latest version** — For components derived from the Mendix Marketplace, this is the latest version of the component. -* **Publisher** — For components derived from the Mendix Marketplace, this is the name of the organization that published the component. -* **View details** — Clicking this opens the [Component App Details](#component-usage) page. +* **Latest version** – For components derived from the Mendix Marketplace, this is the latest version of the component. +* **Publisher** – For components derived from the Mendix Marketplace, this is the name of the organization that published the component. +* **View details** – Clicking this opens the [Component App Details](#component-usage) page. * Column customization ({{% icon name="view" %}}) – You can customize the columns of the list by clicking the {{% icon name="view" %}} icon and selecting or deselecting options. To export the information corresponding to selected items in the list to an Excel file, select the checkboxes of the items in the list, then click **Selection Export** that appears at the bottom of the page. @@ -250,12 +250,12 @@ The following options are available above the list: The finding list contains the following information: -* **Severity** — The severity of the finding related to that component. -* **Finding Type** — The type of finding, which can be **Outdated** or **Deprecated**. -* **Deployment Package** — The deployment package in which the component is identified as a risk. -* **Environment** — The name of the environment where the app is running. -* **Target Cloud** — The type of cloud where the deployment package is deployed. -* **Age** — The number of days that the finding has been applicable, computed as follows: +* **Severity** – The severity of the finding related to that component. +* **Finding Type** – The type of finding, which can be **Outdated** or **Deprecated**. +* **Deployment Package** – The deployment package in which the component is identified as a risk. +* **Environment** – The name of the environment where the app is running. +* **Target Cloud** – The type of cloud where the deployment package is deployed. +* **Age** – The number of days that the finding has been applicable, computed as follows: * Deprecated components: The current date - The date when the component was deprecated * Outdated components: The current date - The publish date of the first higher runtime compatible version @@ -294,12 +294,12 @@ The following options are available above the list: The component usage list contains the following information: -* **Deployment Package** — The name of the deployment package where the component is used. -* **Environment** — The name of the environment where the app using the component is deployed. -* **Runtime** — The runtime version to which the component is compatible. -* **Version** — The version of the impacted deployment package. -* **Target Cloud** — The type of cloud where the deployment package is deployed. -* Column customization ({{% icon name="view" %}}) — You can customize the columns in the list by clicking the {{% icon name="view" %}} icon and selecting or deselecting options. +* **Deployment Package** – The name of the deployment package where the component is used. +* **Environment** – The name of the environment where the app using the component is deployed. +* **Runtime** – The runtime version to which the component is compatible. +* **Version** – The version of the impacted deployment package. +* **Target Cloud** – The type of cloud where the deployment package is deployed. +* **Column customization** ({{% icon name="view" %}}) – You can customize the columns in the list by clicking the {{% icon name="view" %}} icon and selecting or deselecting options. ## Policy Status @@ -309,5 +309,5 @@ The **Policy Status** tab lists the policies that apply to all the deployment pa * **Package Name** – The name of the package which violated the policy. * **Environment Name** – If applicable, the name of the environment where the violating app package is deployed. * **Runtime** – The runtime version of the deployment package. -* **Target Cloud** — The type of cloud where the deployment package is deployed. +* **Target Cloud** – The type of cloud where the deployment package is deployed. * **Last Checked On** – The date when the policy was last checked. From 6f93938d1900db77356dfe784b120e7483084805 Mon Sep 17 00:00:00 2001 From: ConnorLand <47385345+ConnorLand@users.noreply.github.com> Date: Tue, 1 Sep 2026 11:43:14 +0200 Subject: [PATCH 09/26] fix dashes --- .../en/docs/deployment/general/software-composition.md | 4 ++-- .../certificates/use-a-client-certificate.md | 2 +- .../mendix-cloud-deploy/monitoring-with-apm/_index.md | 2 +- .../ms-windows/updating-a-mendix-application.md | 2 +- content/en/docs/deployment/pad/docker-pad.md | 6 +++--- .../private-cloud/private-cloud-cluster/_index.md | 2 +- .../private-cloud-cluster/private-cloud-registry.md | 8 ++++---- .../deployment/private-cloud/secret-store-credentials.md | 2 +- 8 files changed, 14 insertions(+), 14 deletions(-) diff --git a/content/en/docs/deployment/general/software-composition.md b/content/en/docs/deployment/general/software-composition.md index 7919a934331..dd126951ba5 100644 --- a/content/en/docs/deployment/general/software-composition.md +++ b/content/en/docs/deployment/general/software-composition.md @@ -169,7 +169,7 @@ The **Policy Status** tab at the deployment package level displays a list of the * **Failure Condition(s)** – The conditions under which the policy is considered violated. * **Checkpoints & Action(s)** – The trigger which causes the policy to be checked, and the action that is taken if the policy is violated. -* Column customization ({{% icon name="view" %}}) — You can customize the columns in the list by clicking the {{% icon name="view" %}} icon and selecting or deselecting options. +* **Column customization** ({{% icon name="view" %}}) – You can customize the columns in the list by clicking the {{% icon name="view" %}} icon and selecting or deselecting options. You can search a policy by its name, and export all information on this tab to an Excel file. @@ -260,7 +260,7 @@ The finding list contains the following information: * Deprecated components: The current date - The date when the component was deprecated * Outdated components: The current date - The publish date of the first higher runtime compatible version -* Column customization ({{% icon name="view" %}}) — You can customize the columns in the list by clicking the {{% icon name="view" %}} icon and selecting or deselecting options. +* **Column customization** ({{% icon name="view" %}}) – You can customize the columns in the list by clicking the {{% icon name="view" %}} icon and selecting or deselecting options. ##### Finding and Component Details diff --git a/content/en/docs/deployment/mendix-cloud-deploy/certificates/use-a-client-certificate.md b/content/en/docs/deployment/mendix-cloud-deploy/certificates/use-a-client-certificate.md index 8e3889502c5..1706a520144 100644 --- a/content/en/docs/deployment/mendix-cloud-deploy/certificates/use-a-client-certificate.md +++ b/content/en/docs/deployment/mendix-cloud-deploy/certificates/use-a-client-certificate.md @@ -27,7 +27,7 @@ If you require true "zero trust" mTLS where standard internet CAs should not be ## Prerequisites -* A PKCS12 certificate file that contains a private key — these files typically have the *.pfx* or *.p12* file extension +* A PKCS12 certificate file that contains a private key—these files typically have the *.pfx* or *.p12* file extension * The password to open that file ## Running Locally diff --git a/content/en/docs/deployment/mendix-cloud-deploy/monitoring-with-apm/_index.md b/content/en/docs/deployment/mendix-cloud-deploy/monitoring-with-apm/_index.md index c4218364874..1b8c23a0187 100644 --- a/content/en/docs/deployment/mendix-cloud-deploy/monitoring-with-apm/_index.md +++ b/content/en/docs/deployment/mendix-cloud-deploy/monitoring-with-apm/_index.md @@ -67,7 +67,7 @@ The metrics from your app's environment are supplied in the following namespaces * jetty – metrics from the ingress controller of the app * jvm – metrics from the Java virtual machine in which the Mendix runtime runs * postgresql – database metrics specific to PostgreSQL databases -* system – metrics from the base system running on the platform or PaaS — in Datadog, these are disabled by default but can be enabled using the [`DD_ENABLE_CHECKS`](/developerportal/operate/datadog-metrics/#system-metrics) environment variable. +* system – metrics from the base system running on the platform or PaaS—in Datadog, these are disabled by default but can be enabled using the [`DD_ENABLE_CHECKS`](/developerportal/operate/datadog-metrics/#system-metrics) environment variable. Many of these metrics are described in more detail in [Metrics – Mendix Runtime](/refguide/metrics/). diff --git a/content/en/docs/deployment/on-premises-design/ms-windows/updating-a-mendix-application.md b/content/en/docs/deployment/on-premises-design/ms-windows/updating-a-mendix-application.md index e14850e90fb..706cb0714df 100644 --- a/content/en/docs/deployment/on-premises-design/ms-windows/updating-a-mendix-application.md +++ b/content/en/docs/deployment/on-premises-design/ms-windows/updating-a-mendix-application.md @@ -25,7 +25,7 @@ Before every update it is recommended that you create a backup of your data and {{< figure src="/attachments/deployment/on-premises-design/ms-windows/updating-a-mendix-application/2_click_update.png" alt="Step 2, Start the update process" class="no-border" >}} -3. The **Update App** popup that appears shows you information about the current active app. The **App version** shows the release number of the deployment package that is currently running on this server. The **Mendix server version** shows the version of the server distribution being used by the app — this is the same as the Studio Pro version with which the deployment package was created. +3. The **Update App** popup that appears shows you information about the current active app. The **App version** shows the release number of the deployment package that is currently running on this server. The **Mendix server version** shows the version of the server distribution being used by the app—this is the same as the Studio Pro version with which the deployment package was created. {{< figure src="/attachments/deployment/on-premises-design/ms-windows/updating-a-mendix-application/3_update_app.png" alt="Step 3, Release details and overview of all server versions" class="no-border" >}} diff --git a/content/en/docs/deployment/pad/docker-pad.md b/content/en/docs/deployment/pad/docker-pad.md index 9360ee26129..0c4c6f07b3d 100644 --- a/content/en/docs/deployment/pad/docker-pad.md +++ b/content/en/docs/deployment/pad/docker-pad.md @@ -220,7 +220,7 @@ The following log levels are supported (in order of verbosity): | Log Level | Description | | --------- | ----------- | -| `TRACE` | Most verbose — logs all internal operations | +| `TRACE` | Most verbose—logs all internal operations | | `DEBUG` | Detailed diagnostic information | | `INFO` | General operational messages (default) | | `WARNING` | Potentially harmful situations | @@ -234,8 +234,8 @@ The Mendix Runtime exposes health check endpoints that can be used to monitor th | EndPoint | Description | | -------- | ----------- | | `/health` | Returns the overall health status of the app | -| `/health/live` | Returns the liveness status — indicates if the app is running | -| `/health/ready` | Returns the readiness status — indicates if the app is ready to serve traffic | +| `/health/live` | Returns the liveness status—indicates if the app is running | +| `/health/ready` | Returns the readiness status—indicates if the app is ready to serve traffic | These endpoints are especially useful when integrating with orchestration platforms such as Kubernetes, which rely on liveness and readiness probes to manage container lifecycle. diff --git a/content/en/docs/deployment/private-cloud/private-cloud-cluster/_index.md b/content/en/docs/deployment/private-cloud/private-cloud-cluster/_index.md index fc38c725864..d27413e1a41 100644 --- a/content/en/docs/deployment/private-cloud/private-cloud-cluster/_index.md +++ b/content/en/docs/deployment/private-cloud/private-cloud-cluster/_index.md @@ -979,7 +979,7 @@ When you add a cluster manager, the user will have most of the access which the The only limitations are that: -* An added cluster manager will not be able to operate on or manage the environments created in the namespaces which are already in the cluster — they need to be added as a member of the application if they want to manage existing environments in the namespaces. +* An added cluster manager will not be able to operate on or manage the environments created in the namespaces which are already in the cluster—they need to be added as a member of the application if they want to manage existing environments in the namespaces. * Cluster managers who are added to the cluster cannot remove the cluster manager who created the cluster. {{% /alert %}} diff --git a/content/en/docs/deployment/private-cloud/private-cloud-cluster/private-cloud-registry.md b/content/en/docs/deployment/private-cloud/private-cloud-cluster/private-cloud-registry.md index 04fda039c8e..7537efac6fe 100644 --- a/content/en/docs/deployment/private-cloud/private-cloud-cluster/private-cloud-registry.md +++ b/content/en/docs/deployment/private-cloud/private-cloud-cluster/private-cloud-registry.md @@ -179,8 +179,8 @@ To use ACR with the Mendix Operator, you will need to: Use the following configuration options: -* **Registry Name** - Path in the Azure Container Registry — for example `mendix-apps/mynamespace`. -* **Registry URL** - domain name (login name) of the ACR registry, for example `example.azurecr.io` +* **Registry Name** - Path in the Azure Container Registry—for example `mendix-apps/mynamespace`. +* **Registry URL** - Domain name (login name) of the ACR registry, for example `example.azurecr.io` * **Kubernetes Service Account** - the Kubernetes service account that was linked with the Azure workload identity step 2; the Kubernetes Service Account will be created automatically when you apply the changes. * **AZWI Client ID** - the workload identity `USER_ASSIGNED_CLIENT_ID` created on step 2, for example `00000000-0000-0000-0000-000000000000`. @@ -211,8 +211,8 @@ On the Kubernetes side, the Mendix Operator will use a Kubernetes Service Accoun Use the following configuration options: -* **Registry Name** - Google Artifact Registry full path name — for example `my-google-account-id/my-registry/dev-repo`. -* **Registry URL** - container or artifact registry host — for example `us.gcr.io` or `europe-west4-docker.pkg.dev`. +* **Registry Name** - Google Artifact Registry full path name—for example `my-google-account-id/my-registry/dev-repo`. +* **Registry URL** - container or artifact registry host—for example `us.gcr.io` or `europe-west4-docker.pkg.dev`. * **GCP Service Account** - the GCP account name created on step 1, for example `service-account-name@project-id.iam.gserviceaccount.com`. * **Kubernetes Service Account** - the Kubernetes service account that was linked with the GCP service account on step 3; the Kubernetes Service Account will be created automatically when you apply the changes. diff --git a/content/en/docs/deployment/private-cloud/secret-store-credentials.md b/content/en/docs/deployment/private-cloud/secret-store-credentials.md index 6dfb9e51d37..740596afaa7 100644 --- a/content/en/docs/deployment/private-cloud/secret-store-credentials.md +++ b/content/en/docs/deployment/private-cloud/secret-store-credentials.md @@ -1071,7 +1071,7 @@ When implementing a secret store, keep in mind the following considerations: * In Mendix 9.22 or above, database password rotation is processed without restarting the app. * Dynamic secrets in HashiCorp Vault are supported - from the app environment, they are identical to regular secrets. * The internal name of the environment must match an existing `ServiceAccount` and `SecretProviderClass` (or regular Kubernetes Secret). -* CSI Secrets Storage can override app settings — if a parameter is configured in the Mendix Portal or `MendixApp` CR, the value from CSI Secrets Storage will have a higher priority and will override the value specified elsewhere. For example, CSI Secrets Storage can override the `MxAdmin` password, app constants, and runtime custom settings. +* CSI Secrets Storage can override app settings—if a parameter is configured in the Mendix Portal or `MendixApp` CR, the value from CSI Secrets Storage will have a higher priority and will override the value specified elsewhere. For example, CSI Secrets Storage can override the `MxAdmin` password, app constants, and runtime custom settings. * If the secret is expected to be synchronized from an external source, create configuration for this synchronization process. For example, the [External Secrets Operator](https://external-secrets.io) needs an addititional `ExternalSecret` CR to specify where to get the data and any additional processing rules. * Consider enabling etcd encryption, which is available in [AWS EKS](https://docs.aws.amazon.com/eks/latest/userguide/enable-kms.html), [Azure AKS](https://learn.microsoft.com/en-us/azure/aks/use-kms-etcd-encryption) and other enterprise-grade Kubernetes distributions. * If the namespace has both a `SecretProviderClass` and regular Kubernetes Secret that match a `<{Mendix App CR name}>`, the `SecretProviderClass` takes priority, and the regular Kubernetes Secret will be ignored. From 8aa1812a4f1a43ff20c711701b1c56c580637688 Mon Sep 17 00:00:00 2001 From: ConnorLand <47385345+ConnorLand@users.noreply.github.com> Date: Tue, 1 Sep 2026 11:50:15 +0200 Subject: [PATCH 10/26] fix dashes and formatting --- .../private-cloud-standard-operator.md | 16 ++++---- .../private-cloud-deploy/_index.md | 8 ++-- .../private-cloud-technical-appendix-01.md | 8 ++-- .../docs/deployment/sap-btp/sap-autoscaler.md | 2 +- .../deployment/sap-btp/sap-environments.md | 2 +- .../developerportal/app-insights/feedback.md | 4 +- .../digital-execution/compass.md | 22 +++++----- .../implement-mendix/first-project.md | 6 +-- .../implement-mendix/getting-started.md | 40 +++++++++---------- 9 files changed, 54 insertions(+), 54 deletions(-) diff --git a/content/en/docs/deployment/private-cloud/private-cloud-cluster/private-cloud-standard-operator.md b/content/en/docs/deployment/private-cloud/private-cloud-cluster/private-cloud-standard-operator.md index 4c268ac6b1e..19532d2f157 100644 --- a/content/en/docs/deployment/private-cloud/private-cloud-cluster/private-cloud-standard-operator.md +++ b/content/en/docs/deployment/private-cloud/private-cloud-cluster/private-cloud-standard-operator.md @@ -150,14 +150,14 @@ For example, if you'd like to change the database hostname, or if you exited wit The options do the following: -* **Database Plan** – will create a new database plan for your cluster — you must have at least one database plan in your namespace, but you can have more than one -* **Storage Plan** – will create a new storage plan for your cluster — you must have at least one storage plan in your namespace, but you can have more than one -* **Ingress** – will configure the ingress for your namespace — if there is already an ingress, this will replace it with new settings -* **Registry** – will configure a registry for your namespace — if there is already a registry, this will replace it with new settings -* **Proxy** – will configure a proxy for your namespace — if there is already a proxy, this will replace it with new settings -* **Custom TLS** – will configure custom CA trust for your namespace — if there is already a custom CA trust configuration, this will replace it with new settings - -1. Select the options you need to configure – the first time you configure your namespace you must check *all the first four options*. **Proxy** is optional. +* **Database Plan** – will create a new database plan for your cluster—you must have at least one database plan in your namespace, but you can have more than one +* **Storage Plan** – will create a new storage plan for your cluster—you must have at least one storage plan in your namespace, but you can have more than one +* **Ingress** – will configure the ingress for your namespace—if there is already an ingress, this will replace it with new settings +* **Registry** – will configure a registry for your namespace—if there is already a registry, this will replace it with new settings +* **Proxy** – will configure a proxy for your namespace—if there is already a proxy, this will replace it with new settings +* **Custom TLS** – will configure custom CA trust for your namespace—if there is already a custom CA trust configuration, this will replace it with new settings + +1. Select the options you need to configure—the first time you configure your namespace you must check *all the first four options*. **Proxy** is optional. 2. Click **Configure Namespace**. diff --git a/content/en/docs/deployment/private-cloud/private-cloud-deploy/_index.md b/content/en/docs/deployment/private-cloud/private-cloud-deploy/_index.md index 595a9a282d0..3887675d67a 100644 --- a/content/en/docs/deployment/private-cloud/private-cloud-deploy/_index.md +++ b/content/en/docs/deployment/private-cloud/private-cloud-deploy/_index.md @@ -398,7 +398,7 @@ This button contains a list of actions which you can perform quickly on the envi * **Transport Package** – allows you to deploy the deployment package in the current environment to another environment within the app, or to redeploy it in the current environment * **Environment Logs** – takes you to the log page defined by the cluster manager when they registered the namespace * **Model Options** – allows you to change the running of scheduled events and the values of constants for your app by taking you to the **Model Options** tab of the **Environment Details** page -* **Stop Application** — stops the application by reducing the number of replicas to zero; when you restart the application, the number of replicas set in the application will be started +* **Stop Application** – stops the application by reducing the number of replicas to zero; when you restart the application, the number of replicas set in the application will be started * **Delete Environment** – allows you to delete the environment (see [Current Limitations](#limitations) for additional details about what is deleted); if you select this action, you must confirm your choice before the environment is deleted * **Set as Studio Pro Deployment target** – allows you to select the default target environment for Studio Pro deployment @@ -528,7 +528,7 @@ By default, there will be no admin password set for your environment. This means ##### Delete Environment -This deletes the environment — you will be asked to confirm this action. +This deletes the environment—you will be asked to confirm this action. If the Mendix Gateway Agent is not connected, you can still delete the environment information in Mendix Portal. However, the actual environment will not be deleted and you will have to do this manually. @@ -536,9 +536,9 @@ If the environment cannot be deleted, you will receive a warning, but can go ahe {{< figure src="/attachments/deployment/private-cloud/private-cloud-deploy/delete-environment.png" class="no-border" >}} -For a *connected* cluster, the top level MendixApp CRD will be deleted from the namespace – this will cause the following environment resources set up by the Operator to be garbage collected: +For a *connected* cluster, the top level MendixApp CRD will be deleted from the namespace—this will cause the following environment resources set up by the Operator to be garbage collected: -* The database will be dropped and the database user will be deleted from the database server — databases and users from other environments will remain untouched. +* The database will be dropped and the database user will be deleted from the database server—databases and users from other environments will remain untouched. {{% alert color="info" %}}If the storage plan is using a JDBC plan (not Postgres or SQL Server), the database and the user will remain untouched.{{% /alert %}} diff --git a/content/en/docs/deployment/private-cloud/private-cloud-technical-appendix/private-cloud-technical-appendix-01.md b/content/en/docs/deployment/private-cloud/private-cloud-technical-appendix/private-cloud-technical-appendix-01.md index 3c0d9b37b2a..ea52518a0e3 100644 --- a/content/en/docs/deployment/private-cloud/private-cloud-technical-appendix/private-cloud-technical-appendix-01.md +++ b/content/en/docs/deployment/private-cloud/private-cloud-technical-appendix/private-cloud-technical-appendix-01.md @@ -86,7 +86,7 @@ If the `mendix-operator` deployment is stopped and started again after some time Most resources are managed (owned) by the Operator, which means the Operator will roll back any properties it doesn't expect, allowing the Operator to automatically recover (heal) non-working configurations. -It is safe to update the an existing `MendixApp` CR while the Operator is still processing changes. For example, if you have decided to deploy a new MDA, but forgot to update some microflow constants, you can edit (update) the `MendixApp` CR immediately with the right configuration — the Mendix Operator will cancel any changes it is still processing and start applying the updated configuration. +It is safe to update the an existing `MendixApp` CR while the Operator is still processing changes. For example, if you have decided to deploy a new MDA, but forgot to update some microflow constants, you can edit (update) the `MendixApp` CR immediately with the right configuration—the Mendix Operator will cancel any changes it is still processing and start applying the updated configuration. However, do not modify resources (deployments, services, or ConfigMaps) which are not covered in the documentation. This might lead to the Operator seeing that a resource needs to be updated and either not being able to process changes to reach the desired state or rolling back your changes. @@ -99,7 +99,7 @@ Mendix on Kubernetes includes multiple Custom Resources (CRs). These CRs provide the configuration for the Operator: * `OperatorConfiguration` specifies a common configuration for all environments in a namespace. Most of the `OperatorConfiguration` can be managed with the Mendix on Kubernetes Configuration Tool `mxpc-cli`, with a few advanced options that can be updated manually. -* `OperatorVersion` is used to specify Operator versions and the registry containing auxiliary container images. This CR should not be modified manually — it is updated automatically when the Operator is installed or upgraded. +* `OperatorVersion` is used to specify Operator versions and the registry containing auxiliary container images. This CR should not be modified manually—it is updated automatically when the Operator is installed or upgraded. * `StoragePlan` provides the Operator with instructions on how to provide a database or file blob storage to a new environment, and how to clean up storage after an environment has been deleted. It is not meant to be edited manually, the `mxpc-cli` Cloud Configuration Tool creates and updates `StoragePlan` CRs and ensures that the configuration is valid. #### CRs Which Control the App Environment @@ -135,7 +135,7 @@ If you want to prevent developers from accessing secrets or other Kubernetes obj ### Scope -Mendix Operator is limited in scope to one namespace. If you need to use the Mendix Operator in multiple namespaces, you have to install it and configure it in each namespace. This allows the use of multiple versions of the Operator, with different configurations, in the same cluster — as long as each Operator runs in its own dedicated namespace. +Mendix Operator is limited in scope to one namespace. If you need to use the Mendix Operator in multiple namespaces, you have to install it and configure it in each namespace. This allows the use of multiple versions of the Operator, with different configurations, in the same cluster—as long as each Operator runs in its own dedicated namespace. It is not possible to install one global instance of the Operator for the entire cluster. On the other hand, CRDs are global within the cluster. Since all Mendix Operators in a cluster will be using the same shared CRD, it is critical that the latest version of the CRDs are installed in a cluster. See the [Mendix on Kubernetes upgrade instructions](/developerportal/deploy/private-cloud-upgrade-guide/) for more information. @@ -152,7 +152,7 @@ Some actions, such as building a container image or managing an Azure SQL databa For example, building a container image can take several minutes. To push the resulting image into a registry, additional authentication helpers might be required. Databases and file storage buckets require client libraries – and in some cases additional packages. -For some tasks, the Operator uses “task” pods: pods that execute a certain task and then terminate. These pods are an equivalent to CI/CD jobs — the Operator will provide all parameters to the task, then wait for the pod to complete and check its final status. +For some tasks, the Operator uses “task” pods: pods that execute a certain task and then terminate. These pods are an equivalent to CI/CD jobs—the Operator will provide all parameters to the task, then wait for the pod to complete and check its final status. This allows the Operator to support extensions and provider-specific add-ons that are delivered as separate containers, keeping the Operator image compact and free of code and dependencies that are optional. Running separate pods also allows the Operator to be restarted without interrupting any tasks that are in progress. This approach also allows lengthy or resource-consuming tasks to run separately from the Operator, in separate pods or even on different nodes, without consuming resources from the Operator. diff --git a/content/en/docs/deployment/sap-btp/sap-autoscaler.md b/content/en/docs/deployment/sap-btp/sap-autoscaler.md index e2f8f98663a..a4cfd6d99d9 100644 --- a/content/en/docs/deployment/sap-btp/sap-autoscaler.md +++ b/content/en/docs/deployment/sap-btp/sap-autoscaler.md @@ -25,7 +25,7 @@ Selecting the **autoscaler** service expands the entry to allow you to enter mor You need to specify the following: * **Plan** – the plan you wish to use for the autoscaler, either *Lite* or *Standard* -* **File** – the file which contains the JSON to configure the autoscaler — more information, including the contents of the configuration file can be found in [Application Autoscaler Service](https://help.sap.com/docs/application-autoscaler/application-autoscaler/defining-scaling-policy) on the SAP Help Portal +* **File** – the file which contains the JSON to configure the autoscaler—more information, including the contents of the configuration file can be found in [Application Autoscaler Service](https://help.sap.com/docs/application-autoscaler/application-autoscaler/defining-scaling-policy) on the SAP Help Portal Having provided this information, you can click **Connect Services** to connect the autoscaler to your app. diff --git a/content/en/docs/deployment/sap-btp/sap-environments.md b/content/en/docs/deployment/sap-btp/sap-environments.md index 4068ee4a7ec..056d75000cb 100644 --- a/content/en/docs/deployment/sap-btp/sap-environments.md +++ b/content/en/docs/deployment/sap-btp/sap-environments.md @@ -25,7 +25,7 @@ The environment details page contains the following tabs: * [General](#general-tab) – how the application is deployed on SAP BTP * [Model Options](#model-options-tab) – application constants and scheduled events * [Services](#binding-services) – Cloud Foundry service management -* [Runtime](#runtime-tab) – custom environment variables which define **User-Provided Variables** in the SAP Cloud Foundry environment — pre-defined variables can be used to control the behavior of the Mendix Runtime +* [Runtime](#runtime-tab) – custom environment variables which define **User-Provided Variables** in the SAP Cloud Foundry environment—pre-defined variables can be used to control the behavior of the Mendix Runtime {{< figure src="/attachments/deployment/sap-btp/sap-env-details/env-details.png" alt="" >}} diff --git a/content/en/docs/developerportal/app-insights/feedback.md b/content/en/docs/developerportal/app-insights/feedback.md index c730ecea086..f23ad8255d4 100644 --- a/content/en/docs/developerportal/app-insights/feedback.md +++ b/content/en/docs/developerportal/app-insights/feedback.md @@ -257,9 +257,9 @@ The following items are available: * **Communication** – This section is made up of the following tabs: - * **Team Comments** — Displays all the comments left by your team for this feedback. You can leave comments here and add attachments to each comment. + * **Team Comments** – Displays all the comments left by your team for this feedback. You can leave comments here and add attachments to each comment. Comments submitted to this tab are only visible to your team members. - * **Contact Submitter** — Allows you to read messages from the reporter and reply to them. Whenever the reporter sends a message, it is shown in this section. Once you reply to a message from the reporter, they receive an email. + * **Contact Submitter** – Allows you to read messages from the reporter and reply to them. Whenever the reporter sends a message, it is shown in this section. Once you reply to a message from the reporter, they receive an email. For more information, see the [What Happens to a User After They Submit Feedback](#what-happens-to-user) section. ### Creating Stories with Maia {#create-with-maia} diff --git a/content/en/docs/developerportal/digital-execution/compass.md b/content/en/docs/developerportal/digital-execution/compass.md index ad3ca2a2533..d43a05916fe 100644 --- a/content/en/docs/developerportal/digital-execution/compass.md +++ b/content/en/docs/developerportal/digital-execution/compass.md @@ -73,12 +73,12 @@ You can view and manage tasks by performing the following steps: 1. In the **Program** section, click **Tasks**. 2. To add a new task, click **Add Task**, and then provide the following information: - * **Name** — Required. An identifying name for the task. - * **Status** — By default, new tasks are created with the status **To do**, but you can also mark them as already done. - * **Description** — As a best practice, provide a detailed description, so that the person working on the task has sufficient information to complete it. - * **Deadline** — The deadline of the task. - * **Assigned to** — The team member who must complete the task. - * **Milestone** — The milestone with which the task is associated. + * **Name** – Required. An identifying name for the task. + * **Status** – By default, new tasks are created with the status **To do**, but you can also mark them as already done. + * **Description** – As a best practice, provide a detailed description, so that the person working on the task has sufficient information to complete it. + * **Deadline** – The deadline of the task. + * **Assigned to** – The team member who must complete the task. + * **Milestone** – The milestone with which the task is associated. 3. Click **Save**. @@ -102,11 +102,11 @@ As a best practice, it can be helpful to organize a workshop with your team, so The **Area of Focus** section lists the following topics to plan for and consider as part of your goal-setting. -* **People** — Goals associated with your team. For example, you may decide that you need to train five Mendix developers within the next three months. -* **Platform** — Goals to integrate Mendix into your software development lifecycle. -* **Portfolio** — The offerings where low-code can bring high value to your organization. -* **Process** — Goals associated with your business processes. For example, you may decide to implement scrum. -* **Promotion** — Goals to help you celebrate your successes and motivate your team to build with Mendix. +* **People** – Goals associated with your team. For example, you may decide that you need to train five Mendix developers within the next three months. +* **Platform** – Goals to integrate Mendix into your software development lifecycle. +* **Portfolio** – The offerings where low-code can bring high value to your organization. +* **Process** – Goals associated with your business processes. For example, you may decide to implement scrum. +* **Promotion** – Goals to help you celebrate your successes and motivate your team to build with Mendix. These focus areas are based on the [5 Ps of digital transformation](https://www.mendix.com/glossary/digital-execution/#what-are-the-5-ps-of-digital-transformation). You can define your own measurable key results for each of those areas. diff --git a/content/en/docs/developerportal/digital-execution/implement-mendix/first-project.md b/content/en/docs/developerportal/digital-execution/implement-mendix/first-project.md index a9f32d0519a..8bd7222d301 100644 --- a/content/en/docs/developerportal/digital-execution/implement-mendix/first-project.md +++ b/content/en/docs/developerportal/digital-execution/implement-mendix/first-project.md @@ -57,7 +57,7 @@ During sprint 0, you need to lay the groundwork for a successful project by focu You need to determine which Agile practices will become your organizational standard. This could be: -* Scrum — The Mendix platform is optimized for Scrum at the team level. +* Scrum – The Mendix platform is optimized for Scrum at the team level. * Kanban * Other variants @@ -99,9 +99,9 @@ Certain requirements, such as access management or standardized navigation, are Here are a few topics to keep in mind: -* End-user login — Every app needs a way for end-users to get access to it. We advise using the [OIDC SSO module](/appstore/modules/oidc/) for your B2E apps. This is the easiest and most flexible approach for Single Sign-On, and is supported by Microsoft’s Entra ID and most other IdPs. As an alternative, you can use [SAML](/appstore/modules/saml/) for regulated B2C-apps, [LDAP](/appstore/modules/ldap/) for on-prem apps, or the [Forgot My Password](/appstore/modules/forgot-password/) module for non-SSO apps. +* End-user login – Every app needs a way for end-users to get access to it. We advise using the [OIDC SSO module](/appstore/modules/oidc/) for your B2E apps. This is the easiest and most flexible approach for Single Sign-On, and is supported by Microsoft’s Entra ID and most other IdPs. As an alternative, you can use [SAML](/appstore/modules/saml/) for regulated B2C-apps, [LDAP](/appstore/modules/ldap/) for on-prem apps, or the [Forgot My Password](/appstore/modules/forgot-password/) module for non-SSO apps. -* Getting familiar with the Marketplace — Low-code development may be fast, but using modules or content from the Marketplace may even be faster. You may find modules relevant to your portfolio or your first app in particular and create a shortlist for your teams. Marketplace content may be supported by Mendix, by Mendix partners or by the Mendix community. +* Getting familiar with the Marketplace – Low-code development may be fast, but using modules or content from the Marketplace may even be faster. You may find modules relevant to your portfolio or your first app in particular and create a shortlist for your teams. Marketplace content may be supported by Mendix, by Mendix partners or by the Mendix community. ### Continuous Collaboration Through Mendix diff --git a/content/en/docs/developerportal/digital-execution/implement-mendix/getting-started.md b/content/en/docs/developerportal/digital-execution/implement-mendix/getting-started.md index 7e629506cad..0e7eae1377c 100644 --- a/content/en/docs/developerportal/digital-execution/implement-mendix/getting-started.md +++ b/content/en/docs/developerportal/digital-execution/implement-mendix/getting-started.md @@ -145,20 +145,20 @@ Follow these steps: We recommend that you start by adding at least three app ideas to your portfolio, and picking one based on this checklist: -* Go live quickly — One of the main goals of your first app is to validate your ability to rapidly bring new ideas to market. Therefore, Mendix recommends selecting an app that is limited in scope and can work independently in production. -* Keep visibility in mind — Your first app should be highly visible within the organization. It must have executive support, and also deliver tangible business value. -* Involve business stakeholders — Requirements are often unclear and need to be refined through collaboration with, and feedback from, business stakeholders. -* Limit dependencies — Avoid external factors over which you have little or no control. They can quickly diminish the productivity advantage offered by the Mendix platform. -* Start with high-level requirements — It is a good idea to start with a high-level goal rather than having detailed requirements. Then, have at least two follow-up iterations so that you can capture and refine requirements. -* Do not get discouraged by failure — Good first apps are often ones that your organization previously failed to deliver. They teach you how to learn from mistakes and how to collaborate better. -* Create a smart app — To ensure that it delivers the best possible experience, the app should be intelligent, contextual and proactive. Develop an app that uses AI to personalize a user’s experience. -* Apply the complexity matrix — Using the complexity matrix is a great way to assess the right projects for your Start stage portfolio. +* **Go live quickly** – One of the main goals of your first app is to validate your ability to rapidly bring new ideas to market. Therefore, Mendix recommends selecting an app that is limited in scope and can work independently in production. +* **Keep visibility in mind** – Your first app should be highly visible within the organization. It must have executive support, and also deliver tangible business value. +* **Involve business stakeholders** – Requirements are often unclear and need to be refined through collaboration with, and feedback from, business stakeholders. +* **Limit dependencies** – Avoid external factors over which you have little or no control. They can quickly diminish the productivity advantage offered by the Mendix platform. +* **Start with high-level requirements** – It is a good idea to start with a high-level goal rather than having detailed requirements. Then, have at least two follow-up iterations so that you can capture and refine requirements. +* **Do not get discouraged by failure** – Good first apps are often ones that your organization previously failed to deliver. They teach you how to learn from mistakes and how to collaborate better. +* **Create a smart app** – To ensure that it delivers the best possible experience, the app should be intelligent, contextual and proactive. Develop an app that uses AI to personalize a user’s experience. +* **Apply the complexity matrix** – Using the complexity matrix is a great way to assess the right projects for your Start stage portfolio. Exposure is the amount of usage or availability of an app. Complexity stands for how technically complex an app is, such as how many integrations it requires. {{< figure src="/attachments/quickstarts/leading-mendix-implementation/level-of-complexity.png" >}} -* Think of the projects that Mendix is a good fit for — Mendix fits a wide variety of software apps, but some really stand out as a perfect fit: +* Think of the projects that Mendix is a good fit for—Mendix fits a wide variety of software apps, but some really stand out as a perfect fit: * Any software requirement where there is no readily available solution * Software projects where the requirements are not very clear yet, and the business requires flexibility during the development process @@ -199,26 +199,26 @@ We recommend that you start by adding at least three app ideas to your portfolio By thoroughly defining the app’s purpose and value, you provide a clear roadmap for development. You thus align the project with organizational goals, and set the stage for successful implementation and adoption. These are some things to keep in mind: -* Business value proposition — Clearly articulate the app's value proposition in terms of the problem it is trying to solve, and the benefits it is trying to bring to the business. -* User experience and satisfaction: +* **Business value proposition** – Clearly articulate the app's value proposition in terms of the problem it is trying to solve, and the benefits it is trying to bring to the business. +* **User experience and satisfaction**: * Identify the target audience or users who will benefit from the app. Understanding end-users helps in tailoring the app to their needs. * Consider the user experience as a critical aspect of the app's value. An intuitive and user-friendly interface enhances user satisfaction and adoption. * Value is often derived not just from functionalities, but also from how easily and effectively users can accomplish their tasks. -* Efficiency and productivity: +* **Efficiency and productivity**: * Assess how the app improves operational efficiency and productivity. Identify areas where manual processes can be automated, reducing errors and saving time. * Highlight any potential cost savings or resource optimization achieved through the app. -* Innovation and competitive advantage: +* **Innovation and competitive advantage**: * If applicable, emphasize how the app introduces innovative solutions or features that set your organization apart from competitors. * Consider how the app positions the organization for future growth and adaptation to changing market conditions. -* Adaptability and scalability — Highlight the app's adaptability to changing business needs, and its scalability to accommodate future growth. -* Measurable objectives: +* **Adaptability and scalability** – Highlight the app's adaptability to changing business needs, and its scalability to accommodate future growth. +* **Measurable objectives**: * Establish measurable objectives to gauge the success of the app. Define key performance indicators (KPIs) that will help evaluate its impact on business processes, efficiency, or other relevant metrics. * Measurable objectives provide a basis for assessing the app's effectiveness and return on investment. -* Alignment with organizational goals: +* **Alignment with organizational goals**: * Confirm that the app's purpose aligns with the overall goals and vision of the organization. It should contribute positively to the strategic direction of the company. * Understand how the app fits into the larger ecosystem of organizational processes and systems. @@ -277,11 +277,11 @@ This table outlines the Mendix on Kubernetes responsibility matrix: With Mendix, you have multiple options to choose from for the development of your apps: -* In-house development — Train and/or hire Mendix developers to develop and support all your Mendix apps. +* **In-house development** – Train and/or hire Mendix developers to develop and support all your Mendix apps. When training in-house, we recommend choosing individuals who either have a traditional development background or have some understanding of object-oriented programming (OOP)). Beyond the technical side, Mendix recommends looking for individuals who can provide consulting to your business team. -* Mendix partner — Work with one of our certified Mendix partners to support your app development. Our directory of partners is listed [here](https://developerprofiles.mendix.com/link/partneroverview), but your Mendix team is a great resource to identify a good fit for you. +* **Mendix partner** – Work with one of our certified Mendix partners to support your app development. Our directory of partners is listed [here](https://developerprofiles.mendix.com/link/partneroverview), but your Mendix team is a great resource to identify a good fit for you. This can be a great option to get your project kick-started, or if you have no future goals of building out your internal development team. -* Mendix Expert Services — Choosing Mendix Expert Services is the right option if you plan on building out your internal team and need enablement and support alongside app development. Expert Services can help prove the value of the Mendix internally while simultaneously coaching your team on how to continue with the apps. -* Hybrid — You can simultaneously grow your in-house team and supplement with a Mendix partner and/or our Expert Services team. +* **Mendix Expert Services** – Choosing Mendix Expert Services is the right option if you plan on building out your internal team and need enablement and support alongside app development. Expert Services can help prove the value of the Mendix internally while simultaneously coaching your team on how to continue with the apps. +* **Hybrid** – You can simultaneously grow your in-house team and supplement with a Mendix partner and/or our Expert Services team. Regardless of which option you choose, we always recommend that at least one person internally has been trained on Mendix and is technically capable of directing the project. Outsourcing every technical role creates a siloed development team that does not truly understand your business needs. From 4833af79a3bb28c91de2d702d1bc3823b8e099bd Mon Sep 17 00:00:00 2001 From: ConnorLand <47385345+ConnorLand@users.noreply.github.com> Date: Tue, 1 Sep 2026 14:46:54 +0200 Subject: [PATCH 11/26] Fix dashes --- .../implement-mendix/start-program.md | 14 +++++++------- .../project-management/epics/board.md | 10 +++++----- .../project-management/epics/planning.md | 2 +- .../genai/mendix-cloud-genai/mendix-cloud-grp.md | 2 +- .../v2/reference-guide/mcp-modules/mcp-server.md | 2 +- .../best-practices-javascript-actions.md | 2 +- .../build-javascript-actions/_index.md | 2 +- .../create-native-javascript-action.md | 7 +++---- 8 files changed, 20 insertions(+), 21 deletions(-) diff --git a/content/en/docs/developerportal/digital-execution/implement-mendix/start-program.md b/content/en/docs/developerportal/digital-execution/implement-mendix/start-program.md index 026a59d8947..d22efd9a703 100755 --- a/content/en/docs/developerportal/digital-execution/implement-mendix/start-program.md +++ b/content/en/docs/developerportal/digital-execution/implement-mendix/start-program.md @@ -41,17 +41,17 @@ Getting all the required knowledge in each team might be difficult while keeping The core team is made up of the following: -* Product Owner (PO) — Responsible for defining the direction of a project. They have a clear understanding of what the business and users need from the product being developed and the value to be delivered, and they translate these needs to the Scrum team. Ideally, a PO would have these five key [skills & characteristics.](https://www.mendix.com/blog/5-important-product-owner-skills-for-rapid-app-dev/). The PO is expected to do the following: +* **Product Owner (PO)** – Responsible for defining the direction of a project. They have a clear understanding of what the business and users need from the product being developed and the value to be delivered, and they translate these needs to the Scrum team. Ideally, a PO would have these five key [skills & characteristics.](https://www.mendix.com/blog/5-important-product-owner-skills-for-rapid-app-dev/). The PO is expected to do the following: * Be a liaison between the business and the development team to build, prioritize, and manage the backlog to drive production forward. * Ensure the product being developed delivers the required value for the business and users. * Accept or reject the completed work. -* Scrum Master (SM) — Ensures that the team follows Agile best practices and oversees addressing and removing any productivity blockers that may come up. Essentially, the SM is the authority in Agile and Scrum, and keeps the team working together efficiently and effectively. The SM is expected to do the following: +* **Scrum Master (SM)** – Ensures that the team follows Agile best practices and oversees addressing and removing any productivity blockers that may come up. Essentially, the SM is the authority in Agile and Scrum, and keeps the team working together efficiently and effectively. The SM is expected to do the following: * Be a supportive leader. * Help POs define the product’s value, plan work, and manage the backlog. * Help developers self-organize. -* Development Team — Consists of the people who actually build the app. They are responsible for turning requirements into functionality, based on the input provided by the Product Owner. The development team: +* **Development Team** – Consists of the people who actually build the app. They are responsible for turning requirements into functionality, based on the input provided by the Product Owner. The development team: * Is comprised of one or more people with the skills needed to build the product as envisioned by the PO. * May be comprised of non-developers and traditional developers alike: architects, writers, technical BAs, designers, and other specialized roles can all be part of the development team. @@ -59,9 +59,9 @@ The core team is made up of the following: Accelerators are the following: -* Business Analyst (BA) or Subject Matter Expert (SME) — They get involved when a team requires detailed knowledge about such subjects as UX/UI, QA, testing and integration. -* Business Owner — The primary stakeholder who is ultimately responsible and accountable for the end-result of the project and product, including the actual value delivered. -* Stakeholders — The end-users of the product under development, who represent strategical, tactical, and operational levels of the business. +* **Business Analyst (BA)** or **Subject Matter Expert (SME)** – They get involved when a team requires detailed knowledge about such subjects as UX/UI, QA, testing and integration. +* **Business Owner** – The primary stakeholder who is ultimately responsible and accountable for the end-result of the project and product, including the actual value delivered. +* **Stakeholders** – The end-users of the product under development, who represent strategical, tactical, and operational levels of the business. Your team does not have to fit this exact mold, but it is important that all the responsibilities outlined here are covered to ensure success in your low-code program. This is a typical team structure: @@ -141,7 +141,7 @@ A sample agenda of a successful program kickoff can include: * Why Mendix was chosen * Business and IT alignment on: - * Organizational challenges and needs Mendix is solving (this is where your low-code vision will be very important — you always need to be able to tie Mendix work back to the larger business needs) + * Organizational challenges and needs Mendix is solving (this is where your low-code vision will be very important—you always need to be able to tie Mendix work back to the larger business needs) * An overview of the Mendix vision and strategy for your organization: * Goals and success at both the organizational and project levels * Important milestones diff --git a/content/en/docs/developerportal/project-management/epics/board.md b/content/en/docs/developerportal/project-management/epics/board.md index ddc57f5a500..2aa298c8253 100644 --- a/content/en/docs/developerportal/project-management/epics/board.md +++ b/content/en/docs/developerportal/project-management/epics/board.md @@ -10,19 +10,19 @@ The **Board** page gives an overview of all the stories that your team is curren In the upper-right corner of the page, you can find the following items: -* **Create Story** — Enables you to create a new story. +* **Create Story** – Enables you to create a new story. You can also use Maia to create a story. Refer to the [Creating and Refining Stories with Maia](#create-with-maia) section. -* **More Options** ({{% icon name="three-dots-menu-horizontal" %}}) — Clicking this displays the following options: +* **More Options** ({{% icon name="three-dots-menu-horizontal" %}}) – Clicking this displays the following options: - * **Create Epic** — Enables you to create a new epic. - * **Settings** — Enables you to configure board settings, as follows: + * **Create Epic** – Enables you to create a new epic. + * **Settings** – Enables you to configure board settings, as follows: * Configure tags. * Switch between the Scrum and Kanban board types. * Configure toast notifications. -* Search box — You can search stories based on story title, tags, epic name, assignee (including unassigned stories), and story ID. You can use the search box in combination with the filter. +* **Search box** – You can search stories based on story title, tags, epic name, assignee (including unassigned stories), and story ID. You can use the search box in combination with the filter. ## Creating and Refining Stories with Maia {#create-with-maia} diff --git a/content/en/docs/developerportal/project-management/epics/planning.md b/content/en/docs/developerportal/project-management/epics/planning.md index 1c0b3c5d0c3..0af9b23a210 100644 --- a/content/en/docs/developerportal/project-management/epics/planning.md +++ b/content/en/docs/developerportal/project-management/epics/planning.md @@ -93,7 +93,7 @@ For Windows, you can use the following keyboard shortcuts to select stories on t ## Scrum Planning vs Kanban Planning {#different-plannings} -The **Planning** page offers different features to accommodate two different workflows: Scrum or Kanban. Depending on your choice of board type — Scrum or Kanban —, the **Board** page looks a bit different. +The **Planning** page offers different features to accommodate two different workflows: Scrum or Kanban. Depending on your choice of board type—Scrum or Kanban—the **Board** page looks a bit different. {{% alert color="info" %}}You can select your board type on the [Planning](/developerportal/project-management/epics/planning/#board-type) page.{{% /alert %}} diff --git a/content/en/docs/genai/mendix-cloud-genai/mendix-cloud-grp.md b/content/en/docs/genai/mendix-cloud-genai/mendix-cloud-grp.md index deb4b89a43e..a95bbe3a726 100644 --- a/content/en/docs/genai/mendix-cloud-genai/mendix-cloud-grp.md +++ b/content/en/docs/genai/mendix-cloud-genai/mendix-cloud-grp.md @@ -18,7 +18,7 @@ Model Resource Packs now use a Cloud Token for the GenAI Units conversion that a * Model Resource Packs offer access to large language model capacity. You choose a monthly Cloud Token amount, which is converted to [GenAI Units](/agents/mx-cloud-genai/Navigate-MxGenAI/#what-are-tokens-and-genai-units) at a rate of 100 GenAI Units per Cloud Token. GenAI Units are consumed against a model-specific exchange rate, so you can use any supported Anthropic Claude model, for example, Haiku, Sonnet, or Opus from a single resource. -* Embeddings Resource Packs provide access to Cohere Embed models for generating embedding vectors. New model versions are automatically available on your existing resource as Mendix adds them — no resource changes or key updates are required. For a full list of available models, see [Supported Models](#supported-models). +* Embeddings Resource Packs provide access to Cohere Embed models for generating embedding vectors. New model versions are automatically available on your existing resource as Mendix adds them—no resource changes or key updates are required. For a full list of available models, see [Supported Models](#supported-models). * Knowledge Base Resource Packs provide an OpenSearch-based vector database to support Retrieval-Augmented Generation (RAG), Semantic Search, and other Generative AI use cases. diff --git a/content/en/docs/genai/v2/reference-guide/mcp-modules/mcp-server.md b/content/en/docs/genai/v2/reference-guide/mcp-modules/mcp-server.md index ee5b531b419..29c4acb5bac 100644 --- a/content/en/docs/genai/v2/reference-guide/mcp-modules/mcp-server.md +++ b/content/en/docs/genai/v2/reference-guide/mcp-modules/mcp-server.md @@ -84,7 +84,7 @@ The selected microflow must adhere to the following principles: * Input needs to be the same as described in the `Schema` attribute (only primitives and/or an object of type `MCPServer.Tool` are supported). If no Schema is passed in the `Add tool` action, it will be automatically created based on the microflow's input parameters, by setting all of them as required. * The return value must be either of type `String` or `TextContent`. You can create a `TextContent` object within the microflow to return the relevant information to the model based on the outcome of the microflow. -When the tool microflow returns a `TextContent` object, you can set `IsError = True` to signal a handled error to the client. Use the `Content` attribute to describe what went wrong, for example, in a structured format — or to indicate that the LLM can retry. This requires the microflow to return `TextContent` directly; a microflow with a plain `String` return type cannot set `IsError` and always returns `IsError = False`. If the microflow throws an uncaught exception, `IsError` is set to `True` automatically, the full exception is logged server-side, and the client receives a generic error message with no internal details. +When the tool microflow returns a `TextContent` object, you can set `IsError = True` to signal a handled error to the client. Use the `Content` attribute to describe what went wrong, for example, in a structured format—or to indicate that the LLM can retry. This requires the microflow to return `TextContent` directly; a microflow with a plain `String` return type cannot set `IsError` and always returns `IsError = False`. If the microflow throws an uncaught exception, `IsError` is set to `True` automatically, the full exception is logged server-side, and the client receives a generic error message with no internal details. For example, see the `Example Implementations` folder inside the module. diff --git a/content/en/docs/howto/extensibility/best-practices-javascript-actions.md b/content/en/docs/howto/extensibility/best-practices-javascript-actions.md index 6299581f069..15b06a04140 100644 --- a/content/en/docs/howto/extensibility/best-practices-javascript-actions.md +++ b/content/en/docs/howto/extensibility/best-practices-javascript-actions.md @@ -313,7 +313,7 @@ async function GetUserNameSampleRest(userID) { Explaining the Fetch API code: -* The URL refers to a sample API that returns a JSON object `{ id: string, name: string }`, and `fetch` is a browser API for retrieving data which returns a promise (see the [MDI Fetch API documentation](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) — the response is a promise that is converted into data with the `.json()` function (the name is accessed and returned) +* The URL refers to a sample API that returns a JSON object `{ id: string, name: string }`, and `fetch` is a browser API for retrieving data which returns a promise (see the [MDI Fetch API documentation](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)—the response is a promise that is converted into data with the `.json()` function (the name is accessed and returned) * As this is an async function, error handling at all three steps: fetch, parse JSON, and accessing the data can be done inside a single `try...catch` block (for a more detailed explanation, see the [MDN documentation for error handling with async/await](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Asynchronous/Async_await#adding_error_handling)). diff --git a/content/en/docs/howto/extensibility/build-javascript-actions/_index.md b/content/en/docs/howto/extensibility/build-javascript-actions/_index.md index 5f04f144229..9aa103d65ac 100644 --- a/content/en/docs/howto/extensibility/build-javascript-actions/_index.md +++ b/content/en/docs/howto/extensibility/build-javascript-actions/_index.md @@ -5,7 +5,7 @@ weight: 40 description: "Presents a series of how-tos to build JavaScript actions step by step." --- -Nanoflows are even more powerful with pluggable nanoflow actions — called JavaScript actions. With JavaScript actions, the standard set of actions can be extended with new functionality. This how-to series teaches you to harness the power of JavaScript actions step by step: +Nanoflows are even more powerful with pluggable nanoflow actions—called JavaScript actions. With JavaScript actions, the standard set of actions can be extended with new functionality. This how-to series teaches you to harness the power of JavaScript actions step by step: * [Build JavaScript Actions: Part 1 (Basic)](/howto/extensibility/write-javascript-actions/) * [Build JavaScript Actions: Part 2 (Advanced)](/howto/extensibility/write-javascript-github/) diff --git a/content/en/docs/howto/extensibility/build-javascript-actions/create-native-javascript-action.md b/content/en/docs/howto/extensibility/build-javascript-actions/create-native-javascript-action.md index 3115758057d..c789a17185d 100644 --- a/content/en/docs/howto/extensibility/build-javascript-actions/create-native-javascript-action.md +++ b/content/en/docs/howto/extensibility/build-javascript-actions/create-native-javascript-action.md @@ -224,11 +224,10 @@ Congratulations for completing this NFC tutorial! To go beyond the lessons you h ### Hardening the Code {#hardening-nfc-action-code} -Now you have a working NFC scanner. However, you can improve it for both Android and iOS. +Now you have a working NFC scanner. However, you can improve it for both Android and iOS: -**On Android** — NFC scanning can be switched off. Also, scanning should be canceled if the back button is clicked. - -**On iOS** — Scanning can be canceled when the **Ready to Scan** dialog box is up. +* **On Android** – NFC scanning can be switched off. Also, scanning should be canceled if the back button is clicked. +* **On iOS** – Scanning can be canceled when the **Ready to Scan** dialog box is up. To implement these capabilities, replace all the **USER CODE** in the **ReadNFCTag** JavaScript action with the following code, then repeat the steps in the [Building a Native Custom Developer App](#custom-developer-app) section above to build and install the updated app on your device: From 84ee0ff6102c34add513e8a7c617f261201957a3 Mon Sep 17 00:00:00 2001 From: ConnorLand <47385345+ConnorLand@users.noreply.github.com> Date: Tue, 1 Sep 2026 14:50:00 +0200 Subject: [PATCH 12/26] edit dashes --- .../write-javascript-actions.md | 2 +- .../write-javascript-github.md | 4 ++-- .../pluggable-widgets/create-a-pluggable-widget-two.md | 10 +++++----- .../en/docs/howto/front-end/layouts-and-snippets.md | 8 ++++---- .../en/docs/howto/front-end/use-navigation-layouts.md | 8 ++++---- 5 files changed, 16 insertions(+), 16 deletions(-) diff --git a/content/en/docs/howto/extensibility/build-javascript-actions/write-javascript-actions.md b/content/en/docs/howto/extensibility/build-javascript-actions/write-javascript-actions.md index 9861231bfea..389c01b9040 100644 --- a/content/en/docs/howto/extensibility/build-javascript-actions/write-javascript-actions.md +++ b/content/en/docs/howto/extensibility/build-javascript-actions/write-javascript-actions.md @@ -8,7 +8,7 @@ description: "This how-to teaches you how to create a JavaScript action." ## Introduction -Nanoflows are more powerful with pluggable nanoflow actions — called JavaScript actions. With JavaScript actions, the standard set of actions can be extended with new functionality. A JavaScript action is a reusable action based on JavaScript that runs in the client just like the nanoflow, and can use capabilities such as HTML5 browser functions, Cordova plugins, and React Native modules. JavaScript actions are similar to [Java actions](/refguide/java-actions/), but run on the client instead of the server. To share them inside your organization, JavaScript actions can be distributed and downloaded through the private [Mendix Marketplace](https://marketplace.mendix.com/). +Nanoflows are more powerful with pluggable nanoflow actions—called JavaScript actions. With JavaScript actions, the standard set of actions can be extended with new functionality. A JavaScript action is a reusable action based on JavaScript that runs in the client just like the nanoflow, and can use capabilities such as HTML5 browser functions, Cordova plugins, and React Native modules. JavaScript actions are similar to [Java actions](/refguide/java-actions/), but run on the client instead of the server. To share them inside your organization, JavaScript actions can be distributed and downloaded through the private [Mendix Marketplace](https://marketplace.mendix.com/). This how-to teaches you how to do the following: diff --git a/content/en/docs/howto/extensibility/build-javascript-actions/write-javascript-github.md b/content/en/docs/howto/extensibility/build-javascript-actions/write-javascript-github.md index 321739dbbea..21bf793e392 100644 --- a/content/en/docs/howto/extensibility/build-javascript-actions/write-javascript-github.md +++ b/content/en/docs/howto/extensibility/build-javascript-actions/write-javascript-github.md @@ -8,7 +8,7 @@ description: "This advanced how-to teaches you to make a JavaScript action which ## Introduction -Nanoflows are even more powerful with pluggable nanoflow actions — called JavaScript actions. [How to Build JavaScript Actions: Part 1 (Basic)](/howto/extensibility/write-javascript-actions/) shows you how to create a JavaScript TextToSpeech action, expose it as a nanoflow action, and then use it in a demo. In this advanced how-to you will learn to call a REST service, use a generic return type, and make an API to enhance the power of your JavaScript actions. +Nanoflows are even more powerful with pluggable nanoflow actions—called JavaScript actions. [How to Build JavaScript Actions: Part 1 (Basic)](/howto/extensibility/write-javascript-actions/) shows you how to create a JavaScript TextToSpeech action, expose it as a nanoflow action, and then use it in a demo. In this advanced how-to you will learn to call a REST service, use a generic return type, and make an API to enhance the power of your JavaScript actions. This how-to teaches you how to do the following: @@ -26,7 +26,7 @@ This how-to teaches you how to do the following: In [Creating a "Search GitHub User" JavaScript Action](#create-a-search) below, you will make an API which allows you to search for GitHub users. Before continuing, you can do the following to practice your API skills: * Learn how the GitHub API works using the [GitHub developer documentation](https://developer.github.com/v3/search/#search-users) -* Use test tooling to see how the GitHub API in action — an HTTP GET request of the URL `https://api.github.com/search/users?q=test` will result in a JSON response which you should study +* Use test tooling to see how the GitHub API in action—an HTTP GET request of the URL `https://api.github.com/search/users?q=test` will result in a JSON response which you should study ## Downloading the App Package diff --git a/content/en/docs/howto/extensibility/pluggable-widgets/create-a-pluggable-widget-two.md b/content/en/docs/howto/extensibility/pluggable-widgets/create-a-pluggable-widget-two.md index 5be28cb4029..5f1e83deea4 100644 --- a/content/en/docs/howto/extensibility/pluggable-widgets/create-a-pluggable-widget-two.md +++ b/content/en/docs/howto/extensibility/pluggable-widgets/create-a-pluggable-widget-two.md @@ -112,7 +112,7 @@ To add these restrictions, follow the instructions below: Explaining the code: - * The property `disabled` in an input element will behave according to the HTML's specifications — it will not respond to user actions, cannot be focused, is removed from the tab order, and will not fire any events + * The property `disabled` in an input element will behave according to the HTML's specifications—it will not respond to user actions, cannot be focused, is removed from the tab order, and will not fire any events 5. When you select **Never** for your TextBox widget's `Editable` property in Studio Pro, the widget will function like this: @@ -205,7 +205,7 @@ This section teaches you how to add validation to your TextBox widget. Using mic Explaining the code: - * React nodes each require a root element — to create a non-rendering element and group the container elements, a `Fragment` can be used + * React nodes each require a root element—to create a non-rendering element and group the container elements, a `Fragment` can be used * When there is no error the validation will be empty, the `Alert` will not show, and the component will return `null` Now, your widget will show validation feedback from its microflow: @@ -270,8 +270,8 @@ Validation can come from a modeled microflow or nanoflow, but can also be widget Explaining the code: * The `useEffect` is a hook used in a React component, and is only called once - * The custom validator is registered to the attribute, and is called after each `setValue` call — the new value is only accepted when the validator returns no string - * When the validator returns an error message, it will passed to the attribute, and a re-render is triggered — the standard `this.props.textAttribute.validation` will get the message and display it in the same way as the validation feedback + * The custom validator is registered to the attribute, and is called after each `setValue` call—the new value is only accepted when the validator returns no string + * When the validator returns an error message, it will passed to the attribute, and a re-render is triggered—the standard `this.props.textAttribute.validation` will get the message and display it in the same way as the validation feedback 3. When entering text and removing all characters, the following error is shown: @@ -406,7 +406,7 @@ Until now the components did not keep any state. Each keystroke passed through t * The `useEffect` is a React hook that allows running code whenever its dependencies are changed * The `useState` is another React hook that provides a read-only object for accessing the widget's state, and a function that can be used to update it (and hence trigger a component update) * The state `editedValue` will be empty until the input value is changed by the user - * The `onBlur` function will set the new value in the attribute through the container component — the state is reset, and the new value is received by an update of the attribute (which will propagate as a new property value) + * The `onBlur` function will set the new value in the attribute through the container component—the state is reset, and the new value is received by an update of the attribute (which will propagate as a new property value) * The `onLeave` function will set the value. The `setValue` function will automatically call the onChange action, as this is connected with the XML configuration ### Adding Accessibility diff --git a/content/en/docs/howto/front-end/layouts-and-snippets.md b/content/en/docs/howto/front-end/layouts-and-snippets.md index 3efd12c444b..c2b618ec40d 100644 --- a/content/en/docs/howto/front-end/layouts-and-snippets.md +++ b/content/en/docs/howto/front-end/layouts-and-snippets.md @@ -22,8 +22,8 @@ This section describes what a layout consists of and what its value is. When you look at a page, you can see that a page consists of two important components: -* Layout — the structure of the page (just like PowerPoint has one or more layout presets) -* Content — what is displayed within the structure of the page +* **Layout** – The structure of the page (just like PowerPoint has one or more layout presets). +* **Content** – What is displayed within the structure of the page. While modeling the pages, you select a layout when a page is created. @@ -132,8 +132,8 @@ The simple menu bar widget shows a configured menu in the form of a horizontal b The items that are shown in the menu widget are determined by the menu source. A menu widget is either filled from a menu configured in the **Navigation** document or a **Menu** page resource: -* **App** > **Navigation** — when selected, the menu items are taken from one of the menus defined in this document; use this for the main menu of your application -* **Add Other** > **Menu** — when selected, the menu items are taken from this page resource; use this menu for auxiliary menus +* **App** > **Navigation** – When selected, the menu items are taken from one of the menus defined in this document; use this for the main menu of your application. +* **Add Other** > **Menu** – When selected, the menu items are taken from this page resource; use this menu for auxiliary menus. When you have selected the app navigation as source, the device profile must be determined for the correct navigation menu: diff --git a/content/en/docs/howto/front-end/use-navigation-layouts.md b/content/en/docs/howto/front-end/use-navigation-layouts.md index 213a352236b..8dc53dded06 100644 --- a/content/en/docs/howto/front-end/use-navigation-layouts.md +++ b/content/en/docs/howto/front-end/use-navigation-layouts.md @@ -35,11 +35,11 @@ It has three regions: top, left, and center. The top region contains the brand l The navigation menu of Atlas Default is a toggled menu. Options for this toggled menu are to **shrink content (initially open)** or to **shrink content (initially closed)**: -* **Shrink content (initially open)** — the navigation menu will initially start open at its maximum width, displaying both the menu item's description and icon. When toggled it will move to its minimum width and display just the menu item's icon. The page's content (center region) also starts shrunk to make space for the open menu: +* **Shrink content (initially open)** – The navigation menu will initially start open at its maximum width, displaying both the menu item's description and icon. When toggled it will move to its minimum width and display just the menu item's icon. The page's content (center region) also starts shrunk to make space for the open menu: {{< figure src="/attachments/howto/front-end/use-navigation-layouts/2.1_shrinkingcontentopenoption.gif" width="350" class="no-border" >}} -* **Shrink content (initially closed)** — the navigation menu will initially start closed at its minimum width displaying just the menu item's icon. When toggled it will move to its maximum width and display both the menu item's icon and description. The page's content (center region) does not start shrunk, but will shrink when sidebar is toggled: +* **Shrink content (initially closed)** – The navigation menu will initially start closed at its minimum width displaying just the menu item's icon. When toggled it will move to its maximum width and display both the menu item's icon and description. The page's content (center region) does not start shrunk, but will shrink when sidebar is toggled: {{< figure src="/attachments/howto/front-end/use-navigation-layouts/2.1_shrinkingcontentclosedoption.gif" width="350" class="no-border" >}} @@ -56,11 +56,11 @@ It has three regions: top, left, and center. The top region contains both the br The options for the sidebar (unlike the Atlas Default) are only applicable at phone screen size. You then have two options for how the sidebar is toggled: **slide over content** and **push content aside**: -* **Slide over content** — the sidebar will move to overlay on top of the content, hiding a portion (depends on the width of the sidebar) of the content: +* **Slide over content** – The sidebar will move to overlay on top of the content, hiding a portion (depends on the width of the sidebar) of the content: {{< figure src="/attachments/howto/front-end/use-navigation-layouts/2.2_slidingovercontent.gif" width="350" class="no-border" >}} -* **Push content aside** — the sidebar will push the content off-screen: +* **Push content aside** – The sidebar will push the content off-screen: {{< figure src="/attachments/howto/front-end/use-navigation-layouts/2.2_pushingcontentaside.gif" width="350" class="no-border" >}} From 56fecf996fe388876fe2d35672769f373389c1e0 Mon Sep 17 00:00:00 2001 From: ConnorLand <47385345+ConnorLand@users.noreply.github.com> Date: Tue, 1 Sep 2026 14:53:39 +0200 Subject: [PATCH 13/26] Fix dashes --- .../docs/howto/front-end/atlas-ui/_index.md | 12 +++--- .../create-a-company-design-system.md | 2 +- .../atlas-ui/customize-styling-new.md | 42 +++++++++---------- .../front-end/atlas-ui/get-started/_index.md | 22 ++++------ .../best-practices-javascript-actions.md | 2 +- .../build-javascript-actions/_index.md | 2 +- 6 files changed, 38 insertions(+), 44 deletions(-) diff --git a/content/en/docs/howto/front-end/atlas-ui/_index.md b/content/en/docs/howto/front-end/atlas-ui/_index.md index e7a97d7e294..5f7896a6d4e 100644 --- a/content/en/docs/howto/front-end/atlas-ui/_index.md +++ b/content/en/docs/howto/front-end/atlas-ui/_index.md @@ -13,9 +13,9 @@ Atlas comes with a default design system which can be fully tailored and extende The following how-tos are available here: -* [Get Started](/howto/front-end/get-started/) — Learn more about Atlas UI and get started on your first customizations. -* [Customize Styling](/howto/front-end/customize-styling-new/) — Customize your styling in deeper ways. Specifically, you will see how our progressive and web apps use SASS (SCSS) and our native mobile apps use JavaScript to create your app's styling. -* [Configure Module-Level Theme Settings](/howto/front-end/module-level-theme-settings/) — Use module-level theme settings to control theme system behavior. This allows you to control which elements your developers can and cannot use. -* [Create a Company Design System](/howto/front-end/create-a-company-design-system/) — Create a company design system: a "UI kit" which contains all the elements that a team needs to design, realize, and develop a product. -* [Extend Design Properties](/howto/front-end/extend-design-properties/) — Learn the basics of design properties and how to make your own. -* [Atlas UI Kit for Figma](/howto/front-end/figma-ui-kit/) — Learn how to set up and use the Atlas UI Kit for Figma. +* [Get Started](/howto/front-end/get-started/) – Learn more about Atlas UI and get started on your first customizations. +* [Customize Styling](/howto/front-end/customize-styling-new/) – Customize your styling in deeper ways. Specifically, you will see how our progressive and web apps use SASS (SCSS) and our native mobile apps use JavaScript to create your app's styling. +* [Configure Module-Level Theme Settings](/howto/front-end/module-level-theme-settings/) – Use module-level theme settings to control theme system behavior. This allows you to control which elements your developers can and cannot use. +* [Create a Company Design System](/howto/front-end/create-a-company-design-system/) – Create a company design system: a "UI kit" which contains all the elements that a team needs to design, realize, and develop a product. +* [Extend Design Properties](/howto/front-end/extend-design-properties/) – Learn the basics of design properties and how to make your own. +* [Atlas UI Kit for Figma](/howto/front-end/figma-ui-kit/) – Learn how to set up and use the Atlas UI Kit for Figma. diff --git a/content/en/docs/howto/front-end/atlas-ui/create-a-company-design-system.md b/content/en/docs/howto/front-end/atlas-ui/create-a-company-design-system.md index e853abc1151..9ffe4951c03 100644 --- a/content/en/docs/howto/front-end/atlas-ui/create-a-company-design-system.md +++ b/content/en/docs/howto/front-end/atlas-ui/create-a-company-design-system.md @@ -32,7 +32,7 @@ There are several things you can do to customize your company theme module: * Customize the styling as described in the [Create a Theme Module](/howto/front-end/customize-styling-new/#create-theme-mod) section of *How to Customize Styling* * Based on new styling, you can [add design properties](/howto/front-end/extend-design-properties/) -* Add your own layouts, page templates, building blocks — or change the existing ones +* Add your own layouts, page templates, building blocks—or change the existing ones ## Extending and Previewing diff --git a/content/en/docs/howto/front-end/atlas-ui/customize-styling-new.md b/content/en/docs/howto/front-end/atlas-ui/customize-styling-new.md index d312c90c74d..db17dba94cd 100644 --- a/content/en/docs/howto/front-end/atlas-ui/customize-styling-new.md +++ b/content/en/docs/howto/front-end/atlas-ui/customize-styling-new.md @@ -276,27 +276,27 @@ To facilitate app- and module-level styling, the following file and folder struc The bullets below describe the file structure for the theme folder and for modules: * **theme** - * **web** — This folder contains app specific styling resources for (progressive) web apps. - * *custom-variables.scss* — This file contains the theme setting which can be configured to easily change colors, font, spacing etc. - * *main.scss* — This file is the starting point for adding custom styling. - * *exclusion-variables.scss* — This file contains variables that can be toggled to optionally exclude Atlas core styling. - * *settings.json* — This file contains the (external) CSS files that should be loaded. This includes the CSS result of the SASS compilation. - * **native** — This folder contains app specific styling resources for native mobile apps. - * *custom-variables.js* — This file contains the theme setting which can be configured to easily change colors, font, spacing etc. - * *main.js* — This file is the starting point for adding custom styling. - * *exclusionVariables.js* — This file contains variables that can be toggled to optionally exclude Atlas core styling. -* **themesource** — This folder contains module specific styling and resources. Every module has a folder that can contain styling resources. - * **Atlas_core** (required) — This folder from the Atlas core module which is the core for all Mendix apps. This module should always be part of an app as other modules depend on this and it contains all the styling for the Mendix widget. The content of this folder should not be changed as that will cause issues with migrating/updating to newer versions. For information about disabling default styling from this module see [Disabling Default Styling](#disable-default) below. - * **web** — This folder (and subfolders) contain the web resources for the standard Mendix supported widgets. - * **native** — This folder (and subfolders) contain the native mobile resources for the standard Mendix supported widgets. - * **{MODULE_NAME}** — Per module a folder is created which can contain styling resources for (progressive) web apps and native mobile apps. - * **web** — This folder contains re-usable web resources - * *main.scss* — This file is the starting point for the module web based styling. - * *design-properties.json* — This file contains additional design properties or additional options for existing design properties that are based on the classes defined in this module. - * **native** — This folder contains re-usable native mobile resources. - * *main.js* — This file is the starting point for the module native mobile based styling. - * *design-properties.json* — This file contains additional design properties or additional options for existing design properties that are based on the classes defined in this module. - * **public** — This folder can contain other re-usable resources like a custom *login.html* page or images and fonts used from your web styling. + * **web** – This folder contains app specific styling resources for (progressive) web apps. + * *custom-variables.scss* – This file contains the theme setting which can be configured to easily change colors, font, spacing etc. + * *main.scss* – This file is the starting point for adding custom styling. + * *exclusion-variables.scss* – This file contains variables that can be toggled to optionally exclude Atlas core styling. + * *settings.json* – This file contains the (external) CSS files that should be loaded. This includes the CSS result of the SASS compilation. + * **native** – This folder contains app specific styling resources for native mobile apps. + * *custom-variables.js* – This file contains the theme setting which can be configured to easily change colors, font, spacing etc. + * *main.js* – This file is the starting point for adding custom styling. + * *exclusionVariables.js* – This file contains variables that can be toggled to optionally exclude Atlas core styling. +* **themesource** – This folder contains module specific styling and resources. Every module has a folder that can contain styling resources. + * **Atlas_core** (required) – This folder from the Atlas core module which is the core for all Mendix apps. This module should always be part of an app as other modules depend on this and it contains all the styling for the Mendix widget. The content of this folder should not be changed as that will cause issues with migrating/updating to newer versions. For information about disabling default styling from this module see [Disabling Default Styling](#disable-default) below. + * **web** – This folder (and subfolders) contain the web resources for the standard Mendix supported widgets. + * **native** – This folder (and subfolders) contain the native mobile resources for the standard Mendix supported widgets. + * **{MODULE_NAME}** – Per module a folder is created which can contain styling resources for (progressive) web apps and native mobile apps. + * **web** – This folder contains re-usable web resources + * *main.scss* – This file is the starting point for the module web based styling. + * *design-properties.json* – This file contains additional design properties or additional options for existing design properties that are based on the classes defined in this module. + * **native** – This folder contains re-usable native mobile resources. + * *main.js* – This file is the starting point for the module native mobile based styling. + * *design-properties.json* – This file contains additional design properties or additional options for existing design properties that are based on the classes defined in this module. + * **public** – This folder can contain other re-usable resources like a custom *login.html* page or images and fonts used from your web styling. ## Styling output {#styling-output} diff --git a/content/en/docs/howto/front-end/atlas-ui/get-started/_index.md b/content/en/docs/howto/front-end/atlas-ui/get-started/_index.md index 9898361488e..18db23dede4 100644 --- a/content/en/docs/howto/front-end/atlas-ui/get-started/_index.md +++ b/content/en/docs/howto/front-end/atlas-ui/get-started/_index.md @@ -14,11 +14,9 @@ The Atlas UI framework enables all types of developers to build consistent and b Atlas UI has a philosophy based on the core principles described below. These principles guide all our design decisions at Mendix, and we encourage every Mendix user to adopt them when building their own apps. -**Simplicity** — Freedom from complexity: we strive for simplicity to help you focus on what is important. - -**Harmony** — Create familiarity and consistency throughout your apps' landscape, regardless of the device you use. - -**Flexibility** — Design apps that look good and scale in all situations without losing an intuitive and consistent experience. +* **Simplicity** – Freedom from complexity: we strive for simplicity to help you focus on what is important. +* **Harmony** – Create familiarity and consistency throughout your apps' landscape, regardless of the device you use. +* **Flexibility** – Design apps that look good and scale in all situations without losing an intuitive and consistent experience. ## Design Elements @@ -26,15 +24,11 @@ Our UI library is fully integrated into Mendix Studio Pro. After creating a page {{< figure src="/attachments/howto/front-end/atlas-ui/get-started/designelements.png" alt="Atlas UI design elements" class="no-border" >}} -1. **Navigation Layouts** — When building a Mendix app, the first thing you do is choose a navigation layout. These layouts are the frame within which your dynamic pages are housed, and they provide consistent structure throughout your app. - -2. **Page Templates** — Page templates are predesigned collections of building blocks that can be used as-is, or you can enhance them with custom building blocks and widgets. - -3. **Building Blocks** — Building blocks are single-purpose user interface elements and are comprised of multiple widgets. Multiple building blocks are usually used together on one page. - -4. **Widgets** — Widgets are small user interface elements (alerts, buttons, charts, etc.) used to enhance existing building blocks. - -5. **Design Properties** — You can further customize widgets by changing their design properties. Colors, text, and many other variables can be altered to make the widget what you need it to be. +1. **Navigation Layouts** – When building a Mendix app, the first thing you do is choose a navigation layout. These layouts are the frame within which your dynamic pages are housed, and they provide consistent structure throughout your app. +2. **Page Templates** – Page templates are predesigned collections of building blocks that can be used as-is, or you can enhance them with custom building blocks and widgets. +3. **Building Blocks** – Building blocks are single-purpose user interface elements and are comprised of multiple widgets. Multiple building blocks are usually used together on one page. +4. **Widgets** – Widgets are small user interface elements (alerts, buttons, charts, etc.) used to enhance existing building blocks. +5. **Design Properties** – You can further customize widgets by changing their design properties. Colors, text, and many other variables can be altered to make the widget what you need it to be. ## Default Look and Feel diff --git a/content/en/docs/howto10/extensibility/best-practices-javascript-actions.md b/content/en/docs/howto10/extensibility/best-practices-javascript-actions.md index c037ad0e8bf..42f16b7cd91 100644 --- a/content/en/docs/howto10/extensibility/best-practices-javascript-actions.md +++ b/content/en/docs/howto10/extensibility/best-practices-javascript-actions.md @@ -345,7 +345,7 @@ async function GetUserNameSampleRest(userID) { Explaining the Fetch API code: -* The URL refers to a sample API that returns a JSON object `{ id: string, name: string }`, and `fetch` is a browser API for retrieving data which returns a promise (see the [MDI Fetch API documentation](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) — the response is a promise that is converted into data with the `.json()` function (the name is accessed and returned) +* The URL refers to a sample API that returns a JSON object `{ id: string, name: string }`, and `fetch` is a browser API for retrieving data which returns a promise (see the [MDI Fetch API documentation](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)—the response is a promise that is converted into data with the `.json()` function (the name is accessed and returned) * As this is an async function, error handling at all three steps: fetch, parse JSON, and accessing the data can be done inside a single `try...catch` block (for a more detailed explanation, see the [MDN documentation for error handling with async/await](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Asynchronous/Async_await#adding_error_handling)). diff --git a/content/en/docs/howto10/extensibility/build-javascript-actions/_index.md b/content/en/docs/howto10/extensibility/build-javascript-actions/_index.md index 714e6c98ed0..d906e560413 100644 --- a/content/en/docs/howto10/extensibility/build-javascript-actions/_index.md +++ b/content/en/docs/howto10/extensibility/build-javascript-actions/_index.md @@ -5,7 +5,7 @@ weight: 40 description: "Presents a series of how-tos to build JavaScript actions step by step." --- -Nanoflows are even more powerful with pluggable nanoflow actions — called JavaScript actions. With JavaScript actions, the standard set of actions can be extended with new functionality. This how-to series teaches you to harness the power of JavaScript actions step by step: +Nanoflows are even more powerful with pluggable nanoflow actions—called JavaScript actions. With JavaScript actions, the standard set of actions can be extended with new functionality. This how-to series teaches you to harness the power of JavaScript actions step by step: * [Build JavaScript Actions: Part 1 (Basic)](/howto10/extensibility/write-javascript-actions/) * [Build JavaScript Actions: Part 2 (Advanced)](/howto10/extensibility/write-javascript-github/) From 6b01a5ae002ad0f8d5a38616c12c83b62524eba7 Mon Sep 17 00:00:00 2001 From: ConnorLand <47385345+ConnorLand@users.noreply.github.com> Date: Tue, 1 Sep 2026 15:02:03 +0200 Subject: [PATCH 14/26] edit dashes --- .../create-native-javascript-action.md | 7 +++---- .../write-javascript-actions.md | 2 +- .../write-javascript-github.md | 4 ++-- .../pluggable-widgets/create-a-pluggable-widget-two.md | 10 +++++----- .../en/docs/howto10/front-end/layouts-and-snippets.md | 4 ++-- 5 files changed, 13 insertions(+), 14 deletions(-) diff --git a/content/en/docs/howto10/extensibility/build-javascript-actions/create-native-javascript-action.md b/content/en/docs/howto10/extensibility/build-javascript-actions/create-native-javascript-action.md index f8e95f3f973..7dd77ece38c 100644 --- a/content/en/docs/howto10/extensibility/build-javascript-actions/create-native-javascript-action.md +++ b/content/en/docs/howto10/extensibility/build-javascript-actions/create-native-javascript-action.md @@ -224,11 +224,10 @@ Congratulations for completing this NFC tutorial! To go beyond the lessons you h ### Hardening the Code {#hardening-nfc-action-code} -Now you have a working NFC scanner. However, you can improve it for both Android and iOS. +Now you have a working NFC scanner. However, you can improve it for both Android and iOS: -**On Android** — NFC scanning can be switched off. Also, scanning should be canceled if the back button is clicked. - -**On iOS** — Scanning can be canceled when the **Ready to Scan** dialog box is up. +* **On Android** – NFC scanning can be switched off. Also, scanning should be canceled if the back button is clicked. +* **On iOS** – Scanning can be canceled when the **Ready to Scan** dialog box is up. To implement these capabilities, replace all the **USER CODE** in the **ReadNFCTag** JavaScript action with the following code, then repeat the steps in the [Building a Native Custom Developer App](#custom-developer-app) section above to build and install the updated app on your device: diff --git a/content/en/docs/howto10/extensibility/build-javascript-actions/write-javascript-actions.md b/content/en/docs/howto10/extensibility/build-javascript-actions/write-javascript-actions.md index b4e39db7330..906044935c4 100644 --- a/content/en/docs/howto10/extensibility/build-javascript-actions/write-javascript-actions.md +++ b/content/en/docs/howto10/extensibility/build-javascript-actions/write-javascript-actions.md @@ -8,7 +8,7 @@ description: "This how-to teaches you how to create a JavaScript action." ## Introduction -Nanoflows are more powerful with pluggable nanoflow actions — called JavaScript actions. With JavaScript actions, the standard set of actions can be extended with new functionality. A JavaScript action is a reusable action based on JavaScript that runs in the client just like the nanoflow, and can use capabilities such as HTML5 browser functions, Cordova plugins, and React Native modules. JavaScript actions are similar to [Java actions](/refguide10/java-actions/), but run on the client instead of the server. To share them inside your organization, JavaScript actions can be distributed and downloaded through the private [Mendix Marketplace](https://marketplace.mendix.com/). +Nanoflows are more powerful with pluggable nanoflow actions—called JavaScript actions. With JavaScript actions, the standard set of actions can be extended with new functionality. A JavaScript action is a reusable action based on JavaScript that runs in the client just like the nanoflow, and can use capabilities such as HTML5 browser functions, Cordova plugins, and React Native modules. JavaScript actions are similar to [Java actions](/refguide10/java-actions/), but run on the client instead of the server. To share them inside your organization, JavaScript actions can be distributed and downloaded through the private [Mendix Marketplace](https://marketplace.mendix.com/). This how-to teaches you how to do the following: diff --git a/content/en/docs/howto10/extensibility/build-javascript-actions/write-javascript-github.md b/content/en/docs/howto10/extensibility/build-javascript-actions/write-javascript-github.md index f529f69ff0d..2ecc1520416 100644 --- a/content/en/docs/howto10/extensibility/build-javascript-actions/write-javascript-github.md +++ b/content/en/docs/howto10/extensibility/build-javascript-actions/write-javascript-github.md @@ -8,7 +8,7 @@ description: "This advanced how-to teaches you to make a JavaScript action which ## Introduction -Nanoflows are even more powerful with pluggable nanoflow actions — called JavaScript actions. [How to Build JavaScript Actions: Part 1 (Basic)](/howto10/extensibility/write-javascript-actions/) shows you how to create a JavaScript TextToSpeech action, expose it as a nanoflow action, and then use it in a demo. In this advanced how-to you will learn to call a REST service, use a generic return type, and make an API to enhance the power of your JavaScript actions. +Nanoflows are even more powerful with pluggable nanoflow actions—called JavaScript actions. [How to Build JavaScript Actions: Part 1 (Basic)](/howto10/extensibility/write-javascript-actions/) shows you how to create a JavaScript TextToSpeech action, expose it as a nanoflow action, and then use it in a demo. In this advanced how-to you will learn to call a REST service, use a generic return type, and make an API to enhance the power of your JavaScript actions. {{% alert color="warning" %}} The code on this page assumes you are using Mendix version 10.23.0 or above. If you are using a previous version, you can refer to the code in the Mendix 9 version of [Build JavaScript Actions: Part 2 (Advanced)](/howto9/extensibility/write-javascript-github/). @@ -30,7 +30,7 @@ This how-to teaches you how to do the following: In [Creating a "Search GitHub User" JavaScript Action](#create-a-search) below, you will make an API which allows you to search for GitHub users. Before continuing, you can do the following to practice your API skills: * Learn how the GitHub API works using the [GitHub developer documentation](https://developer.github.com/v3/search/#search-users) -* Use test tooling to see how the GitHub API in action — an HTTP GET request of the URL `https://api.github.com/search/users?q=test` will result in a JSON response which you should study +* Use test tooling to see how the GitHub API in action—an HTTP GET request of the URL `https://api.github.com/search/users?q=test` will result in a JSON response which you should study ## Downloading the App Package diff --git a/content/en/docs/howto10/extensibility/pluggable-widgets/create-a-pluggable-widget-two.md b/content/en/docs/howto10/extensibility/pluggable-widgets/create-a-pluggable-widget-two.md index eb01079c648..2ddb2c1a499 100644 --- a/content/en/docs/howto10/extensibility/pluggable-widgets/create-a-pluggable-widget-two.md +++ b/content/en/docs/howto10/extensibility/pluggable-widgets/create-a-pluggable-widget-two.md @@ -112,7 +112,7 @@ To add these restrictions, follow the instructions below: Explaining the code: - * The property `disabled` in an input element will behave according to the HTML's specifications — it will not respond to user actions, cannot be focused, is removed from the tab order, and will not fire any events + * The property `disabled` in an input element will behave according to the HTML's specifications—it will not respond to user actions, cannot be focused, is removed from the tab order, and will not fire any events 5. When you select **Never** for your TextBox widget's `Editable` property in Studio Pro, the widget will function like this: @@ -205,7 +205,7 @@ This section teaches you how to add validation to your TextBox widget. Using mic Explaining the code: - * React nodes each require a root element — to create a non-rendering element and group the container elements, a `Fragment` can be used + * React nodes each require a root element—to create a non-rendering element and group the container elements, a `Fragment` can be used * When there is no error the validation will be empty, the `Alert` will not show, and the component will return `null` Now, your widget will show validation feedback from its microflow: @@ -270,8 +270,8 @@ Validation can come from a modeled microflow or nanoflow, but can also be widget Explaining the code: * The `useEffect` is a hook used in a React component, and is only called once - * The custom validator is registered to the attribute, and is called after each `setValue` call — the new value is only accepted when the validator returns no string - * When the validator returns an error message, it will passed to the attribute, and a re-render is triggered — the standard `this.props.textAttribute.validation` will get the message and display it in the same way as the validation feedback + * The custom validator is registered to the attribute, and is called after each `setValue` call—the new value is only accepted when the validator returns no string + * When the validator returns an error message, it will passed to the attribute, and a re-render is triggered—the standard `this.props.textAttribute.validation` will get the message and display it in the same way as the validation feedback 3. When entering text and removing all characters, the following error is shown: @@ -406,7 +406,7 @@ Until now the components did not keep any state. Each keystroke passed through t * The `useEffect` is a React hook that allows running code whenever its dependencies are changed * The `useState` is another React hook that provides a read-only object for accessing the widget's state, and a function that can be used to update it (and hence trigger a component update) * The state `editedValue` will be empty until the input value is changed by the user - * The `onBlur` function will set the new value in the attribute through the container component — the state is reset, and the new value is received by an update of the attribute (which will propagate as a new property value) + * The `onBlur` function will set the new value in the attribute through the container component—the state is reset, and the new value is received by an update of the attribute (which will propagate as a new property value) * The `onLeave` function will set the value. The `setValue` function will automatically call the onChange action, as this is connected with the XML configuration ### Adding Accessibility diff --git a/content/en/docs/howto10/front-end/layouts-and-snippets.md b/content/en/docs/howto10/front-end/layouts-and-snippets.md index f787354eb97..4c43ab90be2 100644 --- a/content/en/docs/howto10/front-end/layouts-and-snippets.md +++ b/content/en/docs/howto10/front-end/layouts-and-snippets.md @@ -22,8 +22,8 @@ This section describes what a layout consists of and what its value is. When you look at a page, you can see that a page consists of two important components: -* Layout — the structure of the page (just like PowerPoint has one or more layout presets) -* Content — what is displayed within the structure of the page +* Layout – The structure of the page (just like PowerPoint has one or more layout presets). +* Content – What is displayed within the structure of the page. While modeling the pages, you select a layout when a page is created. From f5a2c12aef56399be83456b4e8d4654ddb07bb39 Mon Sep 17 00:00:00 2001 From: ConnorLand <47385345+ConnorLand@users.noreply.github.com> Date: Tue, 1 Sep 2026 15:03:58 +0200 Subject: [PATCH 15/26] fix dashes --- content/en/docs/howto10/front-end/atlas-ui/_index.md | 10 +++++----- .../en/docs/howto10/front-end/layouts-and-snippets.md | 8 ++++---- .../docs/howto10/front-end/use-navigation-layouts.md | 8 ++++---- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/content/en/docs/howto10/front-end/atlas-ui/_index.md b/content/en/docs/howto10/front-end/atlas-ui/_index.md index e63b566d81d..539173a00bd 100644 --- a/content/en/docs/howto10/front-end/atlas-ui/_index.md +++ b/content/en/docs/howto10/front-end/atlas-ui/_index.md @@ -13,9 +13,9 @@ Atlas comes with a default design system which can be fully tailored and extende The following how-tos are available here: -* [Get Started](/howto10/front-end/get-started/) — Learn more about Atlas UI and get started on your first customizations. -* [Customize Styling](/howto10/front-end/customize-styling-new/) — Customize your styling in deeper ways. Specifically, you will see how our progressive and web apps use SASS (SCSS) and our native mobile apps use JavaScript to create your app's styling. -* [Configure Module-Level Theme Settings](/howto10/front-end/module-level-theme-settings/) — Use module-level theme settings to control theme system behavior. This allows you to control which elements your developers can and cannot use. +* [Get Started](/howto10/front-end/get-started/) – Learn more about Atlas UI and get started on your first customizations. +* [Customize Styling](/howto10/front-end/customize-styling-new/) – Customize your styling in deeper ways. Specifically, you will see how our progressive and web apps use SASS (SCSS) and our native mobile apps use JavaScript to create your app's styling. +* [Configure Module-Level Theme Settings](/howto10/front-end/module-level-theme-settings/) – Use module-level theme settings to control theme system behavior. This allows you to control which elements your developers can and cannot use. * [Create a Company Design System](/howto10/front-end/create-a-company-design-system/) — Create a company design system: a "UI kit" which contains all the elements that a team needs to design, realize, and develop a product. -* [Extend Design Properties](/howto10/front-end/extend-design-properties/) — Learn the basics of design properties and how to make your own. -* [Atlas UI Kit for Figma](/howto10/front-end/figma-ui-kit/) — Learn how to set up and use the Atlas UI Kit for Figma. +* [Extend Design Properties](/howto10/front-end/extend-design-properties/) – Learn the basics of design properties and how to make your own. +* [Atlas UI Kit for Figma](/howto10/front-end/figma-ui-kit/) – Learn how to set up and use the Atlas UI Kit for Figma. diff --git a/content/en/docs/howto10/front-end/layouts-and-snippets.md b/content/en/docs/howto10/front-end/layouts-and-snippets.md index 4c43ab90be2..0b2c2280322 100644 --- a/content/en/docs/howto10/front-end/layouts-and-snippets.md +++ b/content/en/docs/howto10/front-end/layouts-and-snippets.md @@ -22,8 +22,8 @@ This section describes what a layout consists of and what its value is. When you look at a page, you can see that a page consists of two important components: -* Layout – The structure of the page (just like PowerPoint has one or more layout presets). -* Content – What is displayed within the structure of the page. +* **Layout** – The structure of the page (just like PowerPoint has one or more layout presets). +* **Content** – What is displayed within the structure of the page. While modeling the pages, you select a layout when a page is created. @@ -132,8 +132,8 @@ The simple menu bar widget shows a configured menu in the form of a horizontal b The items that are shown in the menu widget are determined by the menu source. A menu widget is either filled from a menu configured in the **Navigation** document or a **Menu** page resource: -* **App** > **Navigation** — when selected, the menu items are taken from one of the menus defined in this document; use this for the main menu of your application -* **Add Other** > **Menu** — when selected, the menu items are taken from this page resource; use this menu for auxiliary menus +* **App** > **Navigation** – When selected, the menu items are taken from one of the menus defined in this document; use this for the main menu of your application. +* **Add Other** > **Menu** – When selected, the menu items are taken from this page resource; use this menu for auxiliary menus. When you have selected the app navigation as source, the device profile must be determined for the correct navigation menu: diff --git a/content/en/docs/howto10/front-end/use-navigation-layouts.md b/content/en/docs/howto10/front-end/use-navigation-layouts.md index 58df0e954ea..7efb6e0dfd8 100644 --- a/content/en/docs/howto10/front-end/use-navigation-layouts.md +++ b/content/en/docs/howto10/front-end/use-navigation-layouts.md @@ -35,11 +35,11 @@ It has three regions: top, left, and center. The top region contains the brand l The navigation menu of Atlas Default is a toggled menu. Options for this toggled menu are to **shrink content (initially open)** or to **shrink content (initially closed)**: -* **Shrink content (initially open)** — the navigation menu will initially start open at its maximum width, displaying both the menu item's description and icon. When toggled it will move to its minimum width and display just the menu item's icon. The page's content (center region) also starts shrunk to make space for the open menu: +* **Shrink content (initially open)** – The navigation menu will initially start open at its maximum width, displaying both the menu item's description and icon. When toggled it will move to its minimum width and display just the menu item's icon. The page's content (center region) also starts shrunk to make space for the open menu: {{< figure src="/attachments/howto10/front-end/use-navigation-layouts/2.1_shrinkingcontentopenoption.gif" width="350" class="no-border" >}} -* **Shrink content (initially closed)** — the navigation menu will initially start closed at its minimum width displaying just the menu item's icon. When toggled it will move to its maximum width and display both the menu item's icon and description. The page's content (center region) does not start shrunk, but will shrink when sidebar is toggled: +* **Shrink content (initially closed)** – The navigation menu will initially start closed at its minimum width displaying just the menu item's icon. When toggled it will move to its maximum width and display both the menu item's icon and description. The page's content (center region) does not start shrunk, but will shrink when sidebar is toggled: {{< figure src="/attachments/howto10/front-end/use-navigation-layouts/2.1_shrinkingcontentclosedoption.gif" width="350" class="no-border" >}} @@ -56,11 +56,11 @@ It has three regions: top, left, and center. The top region contains both the br The options for the sidebar (unlike the Atlas Default) are only applicable at phone screen size. You then have two options for how the sidebar is toggled: **slide over content** and **push content aside**: -* **Slide over content** — the sidebar will move to overlay on top of the content, hiding a portion (depends on the width of the sidebar) of the content: +* **Slide over content** – The sidebar will move to overlay on top of the content, hiding a portion (depends on the width of the sidebar) of the content: {{< figure src="/attachments/howto10/front-end/use-navigation-layouts/2.2_slidingovercontent.gif" width="350" class="no-border" >}} -* **Push content aside** — the sidebar will push the content off-screen: +* **Push content aside** – The sidebar will push the content off-screen: {{< figure src="/attachments/howto10/front-end/use-navigation-layouts/2.2_pushingcontentaside.gif" width="350" class="no-border" >}} From e8fb80dc809bb98e40e1ac69110fff181773e90b Mon Sep 17 00:00:00 2001 From: ConnorLand <47385345+ConnorLand@users.noreply.github.com> Date: Tue, 1 Sep 2026 15:10:00 +0200 Subject: [PATCH 16/26] fix dashes --- .../docs/howto10/front-end/atlas-ui/_index.md | 2 +- .../create-a-company-design-system.md | 2 +- .../atlas-ui/customize-styling-new.md | 46 +++++++++---------- .../front-end/atlas-ui/get-started/_index.md | 24 ++++------ .../migrating-your-mendix-database.md | 2 +- .../best-practices-javascript-actions.md | 2 +- .../build-javascript-actions/_index.md | 2 +- .../create-native-javascript-action.md | 7 ++- .../write-javascript-actions.md | 2 +- .../write-javascript-github.md | 4 +- .../create-a-pluggable-widget-one.md | 10 ++-- .../create-a-pluggable-widget-two.md | 14 +++--- .../howto9/front-end/layouts-and-snippets.md | 8 ++-- 13 files changed, 59 insertions(+), 66 deletions(-) diff --git a/content/en/docs/howto10/front-end/atlas-ui/_index.md b/content/en/docs/howto10/front-end/atlas-ui/_index.md index 539173a00bd..8fc9b27a8c8 100644 --- a/content/en/docs/howto10/front-end/atlas-ui/_index.md +++ b/content/en/docs/howto10/front-end/atlas-ui/_index.md @@ -16,6 +16,6 @@ The following how-tos are available here: * [Get Started](/howto10/front-end/get-started/) – Learn more about Atlas UI and get started on your first customizations. * [Customize Styling](/howto10/front-end/customize-styling-new/) – Customize your styling in deeper ways. Specifically, you will see how our progressive and web apps use SASS (SCSS) and our native mobile apps use JavaScript to create your app's styling. * [Configure Module-Level Theme Settings](/howto10/front-end/module-level-theme-settings/) – Use module-level theme settings to control theme system behavior. This allows you to control which elements your developers can and cannot use. -* [Create a Company Design System](/howto10/front-end/create-a-company-design-system/) — Create a company design system: a "UI kit" which contains all the elements that a team needs to design, realize, and develop a product. +* [Create a Company Design System](/howto10/front-end/create-a-company-design-system/) – Create a company design system: a "UI kit" which contains all the elements that a team needs to design, realize, and develop a product. * [Extend Design Properties](/howto10/front-end/extend-design-properties/) – Learn the basics of design properties and how to make your own. * [Atlas UI Kit for Figma](/howto10/front-end/figma-ui-kit/) – Learn how to set up and use the Atlas UI Kit for Figma. diff --git a/content/en/docs/howto10/front-end/atlas-ui/create-a-company-design-system.md b/content/en/docs/howto10/front-end/atlas-ui/create-a-company-design-system.md index 9f4aa7f9883..b30d8a2b0cb 100644 --- a/content/en/docs/howto10/front-end/atlas-ui/create-a-company-design-system.md +++ b/content/en/docs/howto10/front-end/atlas-ui/create-a-company-design-system.md @@ -32,7 +32,7 @@ There are several things you can do to customize your company theme module: * Customize the styling as described in the [Create a Theme Module](/howto10/front-end/customize-styling-new/#create-theme-mod) section of *How to Customize Styling* * Based on new styling, you can [add design properties](/howto10/front-end/extend-design-properties/) -* Add your own layouts, page templates, building blocks — or change the existing ones +* Add your own layouts, page templates, building blocks—or change the existing ones ## Extending and Previewing diff --git a/content/en/docs/howto10/front-end/atlas-ui/customize-styling-new.md b/content/en/docs/howto10/front-end/atlas-ui/customize-styling-new.md index d0e1af3d1f7..0b1440649c6 100644 --- a/content/en/docs/howto10/front-end/atlas-ui/customize-styling-new.md +++ b/content/en/docs/howto10/front-end/atlas-ui/customize-styling-new.md @@ -276,27 +276,27 @@ To facilitate app- and module-level styling, the following file and folder struc The bullets below describe the file structure for the theme folder and for modules: * **theme** - * **web** — This folder contains app specific styling resources for (progressive) web apps. - * *custom-variables.scss* — This file contains the theme setting which can be configured to easily change colors, font, spacing etc. - * *main.scss* — This file is the starting point for adding custom styling. - * *exclusion-variables.scss* — This file contains variables that can be toggled to optionally exclude Atlas core styling. - * *settings.json* — This file contains the (external) CSS files that should be loaded. This includes the CSS result of the SASS compilation. - * **native** — This folder contains app specific styling resources for native mobile apps. - * *custom-variables.js* — This file contains the theme setting which can be configured to easily change colors, font, spacing etc. - * *main.js* — This file is the starting point for adding custom styling. - * *exclusionVariables.js* — This file contains variables that can be toggled to optionally exclude Atlas core styling. -* **themesource** — This folder contains module specific styling and resources. Every module has a folder that can contain styling resources. - * **Atlas_core** (required) — This folder from the Atlas core module which is the core for all Mendix apps. This module should always be part of an app as other modules depend on this and it contains all the styling for the Mendix widget. The content of this folder should not be changed as that will cause issues with migrating/updating to newer versions. For information about disabling default styling from this module see [Disabling Default Styling](#disable-default) below. - * **web** — This folder (and subfolders) contain the web resources for the standard Mendix supported widgets. - * **native** — This folder (and subfolders) contain the native mobile resources for the standard Mendix supported widgets. - * **{MODULE_NAME}** — Per module a folder is created which can contain styling resources for (progressive) web apps and native mobile apps. - * **web** — This folder contains re-usable web resources - * *main.scss* — This file is the starting point for the module web based styling. - * *design-properties.json* — This file contains additional design properties or additional options for existing design properties that are based on the classes defined in this module. - * **native** — This folder contains re-usable native mobile resources. - * *main.js* — This file is the starting point for the module native mobile based styling. - * *design-properties.json* — This file contains additional design properties or additional options for existing design properties that are based on the classes defined in this module. - * **public** — This folder can contain other re-usable resources like a custom *login.html* page or images and fonts used from your web styling. + * **web** – This folder contains app specific styling resources for (progressive) web apps. + * *custom-variables.scss* – This file contains the theme setting which can be configured to easily change colors, font, spacing etc. + * *main.scss* – This file is the starting point for adding custom styling. + * *exclusion-variables.scss* – This file contains variables that can be toggled to optionally exclude Atlas core styling. + * *settings.json* – This file contains the (external) CSS files that should be loaded. This includes the CSS result of the SASS compilation. + * **native** – This folder contains app specific styling resources for native mobile apps. + * *custom-variables.js* – This file contains the theme setting which can be configured to easily change colors, font, spacing etc. + * *main.js* – This file is the starting point for adding custom styling. + * *exclusionVariables.js* – This file contains variables that can be toggled to optionally exclude Atlas core styling. +* **themesource** – This folder contains module specific styling and resources. Every module has a folder that can contain styling resources. + * **Atlas_core** (required) – This folder from the Atlas core module which is the core for all Mendix apps. This module should always be part of an app as other modules depend on this and it contains all the styling for the Mendix widget. The content of this folder should not be changed as that will cause issues with migrating/updating to newer versions. For information about disabling default styling from this module see [Disabling Default Styling](#disable-default) below. + * **web** – This folder (and subfolders) contain the web resources for the standard Mendix supported widgets. + * **native** – This folder (and subfolders) contain the native mobile resources for the standard Mendix supported widgets. + * **{MODULE_NAME}** – Per module a folder is created which can contain styling resources for (progressive) web apps and native mobile apps. + * **web** – This folder contains re-usable web resources + * *main.scss* – This file is the starting point for the module web based styling. + * *design-properties.json* – This file contains additional design properties or additional options for existing design properties that are based on the classes defined in this module. + * **native** – This folder contains re-usable native mobile resources. + * *main.js* – This file is the starting point for the module native mobile based styling. + * *design-properties.json* – This file contains additional design properties or additional options for existing design properties that are based on the classes defined in this module. + * **public** – This folder can contain other re-usable resources like a custom *login.html* page or images and fonts used from your web styling. ## Styling output {#styling-output} @@ -356,7 +356,7 @@ Pick the button widget as an example. The success button is by default styled as {{< figure src="/attachments/howto10/front-end/atlas-ui/customize-styling-new/exclusion-vars-fig1.png" alt="Figure 1" class="no-border" >}} -**Figure 1 - All Styles Enabled** +**Figure 1 – All Styles Enabled** To exclude additional styles, like the success button styles, the button helper styles need to be disabled. This can be achieved by setting the variable `$exclude-button-helpers` to `true`: @@ -492,7 +492,7 @@ The resulting success button is visible in **Figure 6**. Note that the button te {{< figure src="/attachments/howto10/front-end/atlas-ui/customize-styling-new/exclusion-vars-fig6.png" alt="Figure 6" class="no-border" >}} -**Figure 6 - All Styles Disabled (Button Text is White)** +**Figure 6 – All Styles Disabled (Button Text is White)** All supported exclusion variables for native mobile are: diff --git a/content/en/docs/howto10/front-end/atlas-ui/get-started/_index.md b/content/en/docs/howto10/front-end/atlas-ui/get-started/_index.md index edcf4a6c158..c690589ca03 100644 --- a/content/en/docs/howto10/front-end/atlas-ui/get-started/_index.md +++ b/content/en/docs/howto10/front-end/atlas-ui/get-started/_index.md @@ -12,13 +12,11 @@ The Atlas UI framework enables all types of developers to build consistent and b ## Design Principles -Atlas UI has a philosophy based on the core principles described below. These principles guide all our design decisions at Mendix, and we encourage every Mendix user to adopt them when building their own apps. +Atlas UI has a philosophy based on the core principles described below. These principles guide all our design decisions at Mendix, and we encourage every Mendix user to adopt them when building their own apps: -**Simplicity** — Freedom from complexity: we strive for simplicity to help you focus on what is important. - -**Harmony** — Create familiarity and consistency throughout your apps' landscape, regardless of the device you use. - -**Flexibility** — Design apps that look good and scale in all situations without losing an intuitive and consistent experience. +* **Simplicity** – Freedom from complexity: we strive for simplicity to help you focus on what is important. +* **Harmony** – Create familiarity and consistency throughout your apps' landscape, regardless of the device you use. +* **Flexibility** – Design apps that look good and scale in all situations without losing an intuitive and consistent experience. ## Design Elements @@ -26,15 +24,11 @@ Our UI library is fully integrated into Mendix Studio Pro. After creating a page {{< figure src="/attachments/howto10/front-end/atlas-ui/get-started/designelements.png" alt="Atlas UI design elements" class="no-border" >}} -1. **Navigation Layouts** — When building a Mendix app, the first thing you do is choose a navigation layout. These layouts are the frame within which your dynamic pages are housed, and they provide consistent structure throughout your app. - -2. **Page Templates** — Page templates are predesigned collections of building blocks that can be used as-is, or you can enhance them with custom building blocks and widgets. - -3. **Building Blocks** — Building blocks are single-purpose user interface elements and are comprised of multiple widgets. Multiple building blocks are usually used together on one page. - -4. **Widgets** — Widgets are small user interface elements (alerts, buttons, charts, etc.) used to enhance existing building blocks. - -5. **Design Properties** — You can further customize widgets by changing their design properties. Colors, text, and many other variables can be altered to make the widget what you need it to be. +1. **Navigation Layouts** – When building a Mendix app, the first thing you do is choose a navigation layout. These layouts are the frame within which your dynamic pages are housed, and they provide consistent structure throughout your app. +2. **Page Templates** – Page templates are predesigned collections of building blocks that can be used as-is, or you can enhance them with custom building blocks and widgets. +3. **Building Blocks** – Building blocks are single-purpose user interface elements and are comprised of multiple widgets. Multiple building blocks are usually used together on one page. +4. **Widgets** – Widgets are small user interface elements (alerts, buttons, charts, etc.) used to enhance existing building blocks. +5. **Design Properties** – You can further customize widgets by changing their design properties. Colors, text, and many other variables can be altered to make the widget what you need it to be. ## Default Look and Feel diff --git a/content/en/docs/howto9/data-models/migrating-your-mendix-database.md b/content/en/docs/howto9/data-models/migrating-your-mendix-database.md index 83325d6751b..250f68270e4 100644 --- a/content/en/docs/howto9/data-models/migrating-your-mendix-database.md +++ b/content/en/docs/howto9/data-models/migrating-your-mendix-database.md @@ -55,7 +55,7 @@ These settings can be configured as follows: You can migrate databases using Studio Pro, the Service Console, or m2ee-tools. The Service Console gives you the advantage of seeing a progress bar during the copy process, which is handy if you copy a lot of data which takes a long time to execute. {{% alert color="info" %}} -Database migration is handled by Mendix as a normal database synchronization phase during the start-up process of an app. When using m2ee-tools, it is possible that during the start-up process you will get to see messages like ‘The database has to be synchronized’ or you will see an empty message. You can ignore these messages — the database migration will be performed. +Database migration is handled by Mendix as a normal database synchronization phase during the start-up process of an app. When using m2ee-tools, it is possible that during the start-up process you will get to see messages like ‘The database has to be synchronized’ or you will see an empty message. You can ignore these messages—the database migration will be performed. {{% /alert %}} {{% alert color="warning" %}} diff --git a/content/en/docs/howto9/extensibility/best-practices-javascript-actions.md b/content/en/docs/howto9/extensibility/best-practices-javascript-actions.md index 71f282695f4..9edac4a1ad0 100644 --- a/content/en/docs/howto9/extensibility/best-practices-javascript-actions.md +++ b/content/en/docs/howto9/extensibility/best-practices-javascript-actions.md @@ -352,7 +352,7 @@ async function GetUserNameSampleRest(userID) { Explaining the Fetch API code: -* The URL refers to a sample API that returns a JSON object `{ id: string, name: string }`, and `fetch` is a browser API for retrieving data which returns a promise (see the [MDI Fetch API documentation](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) — the response is a promise that is converted into data with the `.json()` function (the name is accessed and returned) +* The URL refers to a sample API that returns a JSON object `{ id: string, name: string }`, and `fetch` is a browser API for retrieving data which returns a promise (see the [MDI Fetch API documentation](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)—the response is a promise that is converted into data with the `.json()` function (the name is accessed and returned) * As this is an async function, error handling at all three steps: fetch, parse JSON, and accessing the data can be done inside a single `try...catch` block (for a more detailed explanation, see the [MDN documentation for error handling with async/await](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Asynchronous/Async_await#adding_error_handling)). diff --git a/content/en/docs/howto9/extensibility/build-javascript-actions/_index.md b/content/en/docs/howto9/extensibility/build-javascript-actions/_index.md index 12abdb3cef2..99e11ad42ec 100644 --- a/content/en/docs/howto9/extensibility/build-javascript-actions/_index.md +++ b/content/en/docs/howto9/extensibility/build-javascript-actions/_index.md @@ -5,7 +5,7 @@ weight: 40 description: "Presents a series of how-tos to build JavaScript actions step by step." --- -Nanoflows are even more powerful with pluggable nanoflow actions — called JavaScript actions. With JavaScript actions, the standard set of actions can be extended with new functionality. This how-to series teaches you how to harness the power of JavaScript actions step by step: +Nanoflows are even more powerful with pluggable nanoflow actions—called JavaScript actions. With JavaScript actions, the standard set of actions can be extended with new functionality. This how-to series teaches you how to harness the power of JavaScript actions step by step: * [Build JavaScript Actions: Part 1 (Basic)](/howto9/extensibility/write-javascript-actions/) * [Build JavaScript Actions: Part 2 (Advanced)](/howto9/extensibility/write-javascript-github/) diff --git a/content/en/docs/howto9/extensibility/build-javascript-actions/create-native-javascript-action.md b/content/en/docs/howto9/extensibility/build-javascript-actions/create-native-javascript-action.md index 551ec383c81..81e46fb1148 100644 --- a/content/en/docs/howto9/extensibility/build-javascript-actions/create-native-javascript-action.md +++ b/content/en/docs/howto9/extensibility/build-javascript-actions/create-native-javascript-action.md @@ -224,11 +224,10 @@ Congratulations for completing this NFC tutorial! To go beyond the lessons you h ### Hardening the Code {#hardening-nfc-action-code} -Now you have a working NFC scanner. However, you can improve it for both Android and iOS. +Now you have a working NFC scanner. However, you can improve it for both Android and iOS: -**On Android** — NFC scanning can be switched off. Also, scanning should be canceled if the back button is clicked. - -**On iOS** — Scanning can be canceled when the **Ready to Scan** dialog box is up. +* **On Android** – NFC scanning can be switched off. Also, scanning should be canceled if the back button is clicked. +* **On iOS** – Scanning can be canceled when the **Ready to Scan** dialog box is up. To implement these capabilities, replace all the **USER CODE** in the **ReadNFCTag** JavaScript action with the following code, then repeat the steps in the [Building a Native Custom Developer App](#custom-developer-app) section above to build and install the updated app on your device: diff --git a/content/en/docs/howto9/extensibility/build-javascript-actions/write-javascript-actions.md b/content/en/docs/howto9/extensibility/build-javascript-actions/write-javascript-actions.md index c1ac6c36242..ade15668fd1 100644 --- a/content/en/docs/howto9/extensibility/build-javascript-actions/write-javascript-actions.md +++ b/content/en/docs/howto9/extensibility/build-javascript-actions/write-javascript-actions.md @@ -8,7 +8,7 @@ description: "This how-to teaches you how to create a JavaScript action." ## Introduction -Nanoflows are more powerful with pluggable nanoflow actions — called JavaScript actions. With JavaScript actions, the standard set of actions can be extended with new functionality. A JavaScript action is a reusable action based on JavaScript that runs in the client just like the nanoflow, and can use capabilities such as HTML5 browser functions, Cordova plugins, and React Native modules. JavaScript actions are similar to [Java actions](/refguide9/java-actions/), but run on the client instead of the server. To share them inside your organization, JavaScript actions can be distributed and downloaded through the private [Mendix Marketplace](https://marketplace.mendix.com/). +Nanoflows are more powerful with pluggable nanoflow actions—called JavaScript actions. With JavaScript actions, the standard set of actions can be extended with new functionality. A JavaScript action is a reusable action based on JavaScript that runs in the client just like the nanoflow, and can use capabilities such as HTML5 browser functions, Cordova plugins, and React Native modules. JavaScript actions are similar to [Java actions](/refguide9/java-actions/), but run on the client instead of the server. To share them inside your organization, JavaScript actions can be distributed and downloaded through the private [Mendix Marketplace](https://marketplace.mendix.com/). This how-to teaches you how to do the following: diff --git a/content/en/docs/howto9/extensibility/build-javascript-actions/write-javascript-github.md b/content/en/docs/howto9/extensibility/build-javascript-actions/write-javascript-github.md index 9a9726319b8..dd49af52d7c 100644 --- a/content/en/docs/howto9/extensibility/build-javascript-actions/write-javascript-github.md +++ b/content/en/docs/howto9/extensibility/build-javascript-actions/write-javascript-github.md @@ -8,7 +8,7 @@ description: "This advanced how-to teaches you how to make a JavaScript action w ## Introduction -Nanoflows are even more powerful with pluggable nanoflow actions — called JavaScript actions. [How to Build JavaScript Actions: Part 1 (Basic)](/howto9/extensibility/write-javascript-actions/) shows you how to create a JavaScript TextToSpeech action, expose it as a nanoflow action, and then use it in a demo. In this advanced how-to you will learn to call a REST service, use a generic return type, and make an API to enhance the power of your JavaScript actions. +Nanoflows are even more powerful with pluggable nanoflow actions—called JavaScript actions. [How to Build JavaScript Actions: Part 1 (Basic)](/howto9/extensibility/write-javascript-actions/) shows you how to create a JavaScript TextToSpeech action, expose it as a nanoflow action, and then use it in a demo. In this advanced how-to you will learn to call a REST service, use a generic return type, and make an API to enhance the power of your JavaScript actions. This how-to teaches you how to do the following: @@ -26,7 +26,7 @@ This how-to teaches you how to do the following: In [Creating a "Search GitHub User" JavaScript Action](#create-a-search) below, you will make an API which allows you to search for GitHub users. Before continuing, you can do the following to practice your API skills: * Learn how the GitHub API works using the [GitHub developer documentation](https://developer.github.com/v3/search/#search-users) -* Use test tooling to see how the GitHub API in action — an HTTP GET request of the URL `https://api.github.com/search/users?q=test` will result in a JSON response which you should study +* Use test tooling to see how the GitHub API in action—an HTTP GET request of the URL `https://api.github.com/search/users?q=test` will result in a JSON response which you should study ## Downloading the App Package diff --git a/content/en/docs/howto9/extensibility/pluggable-widgets/create-a-pluggable-widget-one.md b/content/en/docs/howto9/extensibility/pluggable-widgets/create-a-pluggable-widget-one.md index b0bbaf8be78..ad62046751c 100644 --- a/content/en/docs/howto9/extensibility/pluggable-widgets/create-a-pluggable-widget-one.md +++ b/content/en/docs/howto9/extensibility/pluggable-widgets/create-a-pluggable-widget-one.md @@ -160,7 +160,7 @@ Open the *(YourMendixApp)/CustomWidgets/TextBox* folder in your IDE of choice (a Explaining the code: - * The interface defines the properties of the React components — the value is passed to the component and it will render an HTML input element with the given value + * The interface defines the properties of the React components—the value is passed to the component and it will render an HTML input element with the given value * The component is a class extending `Component` and should be exported to be used in other components * The render method is the only required function in a component, and it will return the expected DOM for the browser (for more information, see React’s [component documentation](https://reactjs.org/docs/react-component.html)) 5. The container component *TextBox.tsx* receives the properties in the runtime, and forwards the data to the display component. The container works like glue between the Mendix application and the display component. In the *TextBox.tsx* overwrite the render function until they look like this: @@ -185,7 +185,7 @@ Open the *(YourMendixApp)/CustomWidgets/TextBox* folder in your IDE of choice (a Explaining the code: - * The `textAttribute` is an object that will automatically have the actual data stored in the attribute — when the data is changed, it will cause an update of the component, and the new data will be displayed in the input + * The `textAttribute` is an object that will automatically have the actual data stored in the attribute—when the data is changed, it will cause an update of the component, and the new data will be displayed in the input 6. Alter *Textbox.editorPreview.tsx* by adding the `TextInput` import to *Textbox.editorPreview.tsx*: @@ -335,8 +335,8 @@ The value from the attribute can be displayed and updated using the other input, Explaining the code: - * JavaScript can pass functions from one object to another — this way, the Mendix API stays in the container `TextBox component` and provides a function to the display component to pass updates back to the attribute - * When a function is passed to another component, the function might have a scoping issue — this can be solved by binding the context `this` to the function before passing it to the display component (for more information, see this [freeCodeCamp blog post](https://medium.freecodecamp.org/this-is-why-we-need-to-bind-event-handlers-in-class-components-in-react-f7ea1a6f93eb)) + * JavaScript can pass functions from one object to another—this way, the Mendix API stays in the container `TextBox component` and provides a function to the display component to pass updates back to the attribute + * When a function is passed to another component, the function might have a scoping issue—this can be solved by binding the context `this` to the function before passing it to the display component (for more information, see this [freeCodeCamp blog post](https://medium.freecodecamp.org/this-is-why-we-need-to-bind-event-handlers-in-class-components-in-react-f7ea1a6f93eb)) 2. In *components/TextInput.tsx*, handle the change events of the input and pass the new value to the `onUpdate` function of the container component: @@ -382,7 +382,7 @@ The value from the attribute can be displayed and updated using the other input, * The input's `value` is set by the `this.props.value`, and this property is not changed directly; the update function will use the `setValue` to trigger a re-render with the updated property * There are two ways of handling input changes in React: [controlled components](https://reactjs.org/docs/forms.html#controlled-components) or [uncontrolled components](https://reactjs.org/docs/uncontrolled-components.html) * The `onUpdate` function is optional and it should be checked for availability before executing it - * The custom widget TextBox will still not pass text to the Text box widget after this step — it will gain this functionality in [Build a Text Box Pluggable Widget: Part 2 (Advanced)](/howto9/extensibility/create-a-pluggable-widget-two/). + * The custom widget TextBox will still not pass text to the Text box widget after this step—it will gain this functionality in [Build a Text Box Pluggable Widget: Part 2 (Advanced)](/howto9/extensibility/create-a-pluggable-widget-two/). Congratulations, you have now made a fully functional input widget! diff --git a/content/en/docs/howto9/extensibility/pluggable-widgets/create-a-pluggable-widget-two.md b/content/en/docs/howto9/extensibility/pluggable-widgets/create-a-pluggable-widget-two.md index 7ece53c26a7..9cfeca7d7c9 100644 --- a/content/en/docs/howto9/extensibility/pluggable-widgets/create-a-pluggable-widget-two.md +++ b/content/en/docs/howto9/extensibility/pluggable-widgets/create-a-pluggable-widget-two.md @@ -123,7 +123,7 @@ To add these restrictions, follow the instructions below: Explaining the code: - * The property `disabled` in an input element will behave according to the HTML's specifications — it will not respond to user actions, cannot be focused, is removed from the tab order, and will not fire any events + * The property `disabled` in an input element will behave according to the HTML's specifications—it will not respond to user actions, cannot be focused, is removed from the tab order, and will not fire any events 5. When you select **Never** for your TextBox widget's `Editable` property in Mendix Studio Pro, the widget will function like this: @@ -215,7 +215,7 @@ This section teaches you how to add validation to your TextBox widget. Using mic Explaining the code: - * React nodes each require a root element — to create a non-rendering element and group the container elements, a `Fragment` can be used + * React nodes each require a root element—to create a non-rendering element and group the container elements, a `Fragment` can be used * When there is no error the validation will be empty, the `Alert` will not show, and the component will return `null` Now, your widget will show validation feedback from its microflow: @@ -268,8 +268,8 @@ Validation can come from a modeled microflow or nanoflow, but can also be widget Explaining the code: * The `componentDidMount` is a lifecycle method of the React component, and is only called once - * The custom validator is registered to the attribute, and is called after each `setValue` call — the new value is only accepted when the validator returns no string - * When the validator returns an error message, it will passed to the attribute, and a re-render is triggered — the standard `this.props.textAttribute.validation` will get the message and display it in the same way as the validation feedback + * The custom validator is registered to the attribute, and is called after each `setValue` call—the new value is only accepted when the validator returns no string + * When the validator returns an error message, it will passed to the attribute, and a re-render is triggered—the standard `this.props.textAttribute.validation` will get the message and display it in the same way as the validation feedback 3. When entering text and removing all characters, the following error is shown: @@ -429,7 +429,7 @@ Until now the components did not keep any state. Each keystroke passed through t * The `componentDidUpdate` function is a React lifecycle function that is called before rendering, directly after an update of the properties * The state `editedValue` will be empty until the input value is changed by the user * The `setState` function will update the state and will re-render the component (in the rendering, the new value is taken from `editedValue`) - * The `onBlur` function will set the new value in the attribute through the container component — the state is reset, and the new value is received by an update of the attribute (which will propagate as a new property value) + * The `onBlur` function will set the new value in the attribute through the container component—the state is reset, and the new value is received by an update of the attribute (which will propagate as a new property value) * The `onLeave` function will set the value. The `setValue` function will automatically call the onChange action, as this is connected with the XML configuration ### Adding Accessibility @@ -532,8 +532,8 @@ To make the input widget more accessible for people using screen readers, you wi Explaining the code: - * The `Label` component provided by the platform has a `for` attribute which will have a reference to the widget's ID — you must set the ID for the screen reader, so that it can link the label to the `this` input - * The `Label` component will have an ID `-label` — you must link the input's `aria-labelledby` to the ID of the label + * The `Label` component provided by the platform has a `for` attribute which will have a reference to the widget's ID—you must set the ID for the screen reader, so that it can link the label to the `this` input + * The `Label` component will have an ID `-label`—you must link the input's `aria-labelledby` to the ID of the label You have now made your widget compatible with screen readers. If a screen reader is describing your app aloud, it will list the widget elements to the user. diff --git a/content/en/docs/howto9/front-end/layouts-and-snippets.md b/content/en/docs/howto9/front-end/layouts-and-snippets.md index 426176023f6..6dafa81d093 100644 --- a/content/en/docs/howto9/front-end/layouts-and-snippets.md +++ b/content/en/docs/howto9/front-end/layouts-and-snippets.md @@ -22,8 +22,8 @@ This section describes what a layout consists of and what its value is. When you look at a page, you can see that a page consists of two important components: -* Layout — the structure of the page (just like PowerPoint has one or more layout presets) -* Content — what is displayed within the structure of the page +* **Layout** – The structure of the page (just like PowerPoint has one or more layout presets). +* **Content** – What is displayed within the structure of the page. While modeling the pages, you select a layout when a page is created. @@ -132,8 +132,8 @@ The simple menu bar widget shows a configured menu in the form of a horizontal b The items that are shown in the menu widget are determined by the menu source. A menu widget is either filled from a menu configured in the **Navigation** document or a **Menu** page resource: -* **App** > **Navigation** — when selected, the menu items are taken from one of the menus defined in this document; use this for the main menu of your application -* **Add Other** > **Menu** — when selected, the menu items are taken from this page resource; use this menu for auxiliary menus +* **App** > **Navigation** – When selected, the menu items are taken from one of the menus defined in this document; use this for the main menu of your application. +* **Add Other** > **Menu** – When selected, the menu items are taken from this page resource; use this menu for auxiliary menus. When you have selected the app navigation as source, the device profile must be determined for the correct navigation menu: From 9ced4f9157df24198bf89ce2f3aacb6d49021f7f Mon Sep 17 00:00:00 2001 From: ConnorLand <47385345+ConnorLand@users.noreply.github.com> Date: Tue, 1 Sep 2026 15:13:17 +0200 Subject: [PATCH 17/26] fix dashes --- .../docs/howto9/front-end/atlas-ui/_index.md | 10 ++-- .../create-a-company-design-system.md | 2 +- .../atlas-ui/customize-styling-new.md | 48 +++++++++---------- .../front-end/use-navigation-layouts.md | 8 ++-- 4 files changed, 34 insertions(+), 34 deletions(-) diff --git a/content/en/docs/howto9/front-end/atlas-ui/_index.md b/content/en/docs/howto9/front-end/atlas-ui/_index.md index 9b59fcfe6c3..805492f7135 100644 --- a/content/en/docs/howto9/front-end/atlas-ui/_index.md +++ b/content/en/docs/howto9/front-end/atlas-ui/_index.md @@ -17,8 +17,8 @@ Atlas comes with a default design system which can be fully tailored and extende The following how-tos are available here: -* [Get Started](/howto9/front-end/get-started/) — Learn more about Atlas UI and get started on your first customizations. -* [Customize Styling](/howto9/front-end/customize-styling-new/) — Customize your styling in deeper ways. Specifically, you will see how our progressive and web apps use SASS (SCSS) and our native mobile apps use JavaScript to create your app's styling. -* [Configure Module-Level Theme Settings](/howto9/front-end/module-level-theme-settings/) — Use module-level theme settings to control theme system behavior. This allows you to control which elements your developers can and cannot use. -* [Create a Company Design System](/howto9/front-end/create-a-company-design-system/) — Create a company design system: a "UI kit" which contains all the elements that a team needs to design, realize, and develop a product. -* [Extend Design Properties](/howto9/front-end/extend-design-properties/) — Learn the basics of design properties and how to make your own. +* [Get Started](/howto9/front-end/get-started/) – Learn more about Atlas UI and get started on your first customizations. +* [Customize Styling](/howto9/front-end/customize-styling-new/) – Customize your styling in deeper ways. Specifically, you will see how our progressive and web apps use SASS (SCSS) and our native mobile apps use JavaScript to create your app's styling. +* [Configure Module-Level Theme Settings](/howto9/front-end/module-level-theme-settings/) – Use module-level theme settings to control theme system behavior. This allows you to control which elements your developers can and cannot use. +* [Create a Company Design System](/howto9/front-end/create-a-company-design-system/) – Create a company design system: a "UI kit" which contains all the elements that a team needs to design, realize, and develop a product. +* [Extend Design Properties](/howto9/front-end/extend-design-properties/) – Learn the basics of design properties and how to make your own. diff --git a/content/en/docs/howto9/front-end/atlas-ui/create-a-company-design-system.md b/content/en/docs/howto9/front-end/atlas-ui/create-a-company-design-system.md index 1d43898c8f5..704d8595c4c 100644 --- a/content/en/docs/howto9/front-end/atlas-ui/create-a-company-design-system.md +++ b/content/en/docs/howto9/front-end/atlas-ui/create-a-company-design-system.md @@ -32,7 +32,7 @@ There are several things you can do to customize your company theme module: * Customize the styling as described in the [Create a Theme Module](/howto9/front-end/customize-styling-new/#create-theme-mod) section of *How to Customize Styling* * Based on new styling, you can [add design properties](/howto9/front-end/extend-design-properties/) -* Add your own layouts, page templates, building blocks — or change the existing ones +* Add your own layouts, page templates, building blocks—or change the existing ones ## Extending and Previewing diff --git a/content/en/docs/howto9/front-end/atlas-ui/customize-styling-new.md b/content/en/docs/howto9/front-end/atlas-ui/customize-styling-new.md index 5886584d773..6189787e53a 100644 --- a/content/en/docs/howto9/front-end/atlas-ui/customize-styling-new.md +++ b/content/en/docs/howto9/front-end/atlas-ui/customize-styling-new.md @@ -276,29 +276,29 @@ To facilitate app- and module-level styling, the following file and folder struc The bullets below describe the file structure for the theme folder and for modules: * **theme** - * **web** — This folder contains app specific styling resources for (progressive) web apps. - * *custom-variables.scss* — This file contains the theme setting which can be configured to easily change colors, font, spacing etc. - * *main.scss* — This file is the starting point for adding custom styling. - * *exclusion-variables.scss* — This file contains variables that can be toggled to optionally exclude Atlas core styling. - * *settings.json* — This file contains the (external) CSS files that should be loaded. This includes the CSS result of the SASS compilation. - * **native** — This folder contains app specific styling resources for native mobile apps. - * *custom-variables.js* — This file contains the theme setting which can be configured to easily change colors, font, spacing etc. - * *main.js* — This file is the starting point for adding custom styling. - * *exclusionVariables.js* — This file contains variables that can be toggled to optionally exclude Atlas core styling. -* **themesource** — This folder contains module specific styling and resources. Every module has a folder that can contain styling resources. - * **Atlas_core** (required) — This folder from the Atlas core module which is the core for all Mendix apps. This module should always be part of an app as other modules depend on this and it contains all the styling for the Mendix widget. The content of this folder should not be changed as that will cause issues with migrating/updating to newer versions. For information about disabling default styling from this module see [Disabling Default Styling](#disable-default) below. - * **web** — This folder (and subfolders) contain the web resources for the standard Mendix supported widgets. - * **native** — This folder (and subfolders) contain the native mobile resources for the standard Mendix supported widgets. - * **{MODULE_NAME}** — Per module a folder is created which can contain styling resources for (progressive) web apps and native mobile apps. - * **web** — This folder contains re-usable web resources - * *main.scss* — This file is the starting point for the module web based styling. - * *design-properties.json* — This file contains additional design properties or additional options for existing design properties that are based on the classes defined in this module. - * **native** — This folder contains re-usable native mobile resources. - * *main.js* — This file is the starting point for the module native mobile based styling. - * *design-properties.json* — This file contains additional design properties or additional options for existing design properties that are based on the classes defined in this module. - * **public** — This folder can contain other re-usable resources like a custom *login.html* page or images and fonts used from your web styling. - -## Styling output {#styling-output} + * **web** – This folder contains app specific styling resources for (progressive) web apps. + * *custom-variables.scss* – This file contains the theme setting which can be configured to easily change colors, font, spacing etc. + * *main.scss* – This file is the starting point for adding custom styling. + * *exclusion-variables.scss* – This file contains variables that can be toggled to optionally exclude Atlas core styling. + * *settings.json* – This file contains the (external) CSS files that should be loaded. This includes the CSS result of the SASS compilation. + * **native** – This folder contains app specific styling resources for native mobile apps. + * *custom-variables.js* – This file contains the theme setting which can be configured to easily change colors, font, spacing etc. + * *main.js* – This file is the starting point for adding custom styling. + * *exclusionVariables.js* – This file contains variables that can be toggled to optionally exclude Atlas core styling. +* **themesource** – This folder contains module specific styling and resources. Every module has a folder that can contain styling resources. + * **Atlas_core** (required) – This folder from the Atlas core module which is the core for all Mendix apps. This module should always be part of an app as other modules depend on this and it contains all the styling for the Mendix widget. The content of this folder should not be changed as that will cause issues with migrating/updating to newer versions. For information about disabling default styling from this module see [Disabling Default Styling](#disable-default) below. + * **web** – This folder (and subfolders) contain the web resources for the standard Mendix supported widgets. + * **native** – This folder (and subfolders) contain the native mobile resources for the standard Mendix supported widgets. + * **{MODULE_NAME}** – Per module a folder is created which can contain styling resources for (progressive) web apps and native mobile apps. + * **web** – This folder contains re-usable web resources + * *main.scss* – This file is the starting point for the module web based styling. + * *design-properties.json* – This file contains additional design properties or additional options for existing design properties that are based on the classes defined in this module. + * **native** – This folder contains re-usable native mobile resources. + * *main.js* – This file is the starting point for the module native mobile based styling. + * *design-properties.json* – This file contains additional design properties or additional options for existing design properties that are based on the classes defined in this module. + * **public** – This folder can contain other re-usable resources like a custom *login.html* page or images and fonts used from your web styling. + +## Styling Output {#styling-output} With the modular structure of the styling of Mendix app, the styling files are placed in different folders. Studio Pro automatically combines the files to a single output (stylesheet for web and JavaScript for native) which is used by the app in the browser or on the device. The following sections describe in more detail how this is done. @@ -344,7 +344,7 @@ If there are errors during the bundling, these will be shown in Studio Pro and t For more details on styling native mobile apps see the [Native Mobile Styling](/refguide9/native-styling-refguide/) Reference Guide. -## Disabling default styling from Atlas Core {#disable-default} +## Disabling Default Styling from Atlas Core {#disable-default} Mendix provides styling for the platform supported widgets in the Atlas core module. In general, for every widget there is base styling to provide a default look and feel for the widget and helper styling, which can be seen as additional styling and variations that can be used to fit the widget into its context. Styling can be overridden, but in some cases it can be preferred to disable this default styling. This is possible by excluding styling using variables which can be set in the exclusion variables file. diff --git a/content/en/docs/howto9/front-end/use-navigation-layouts.md b/content/en/docs/howto9/front-end/use-navigation-layouts.md index 1fc2f10095f..b605b0cc9d3 100644 --- a/content/en/docs/howto9/front-end/use-navigation-layouts.md +++ b/content/en/docs/howto9/front-end/use-navigation-layouts.md @@ -35,11 +35,11 @@ It has three regions: top, left, and center. The top region contains the brand l The navigation menu of Atlas Default is a toggled menu. Options for this toggled menu are to **shrink content (initially open)** or to **shrink content (initially closed)**: -* **Shrink content (initially open)** — the navigation menu will initially start open at its maximum width, displaying both the menu item's description and icon. When toggled it will move to its minimum width and display just the menu item's icon. The page's content (center region) also starts shrunk to make space for the open menu: +* **Shrink content (initially open)** – The navigation menu will initially start open at its maximum width, displaying both the menu item's description and icon. When toggled it will move to its minimum width and display just the menu item's icon. The page's content (center region) also starts shrunk to make space for the open menu: {{< figure src="/attachments/howto9/front-end/use-navigation-layouts/2.1_shrinkingcontentopenoption.gif" width="350" class="no-border" >}} -* **Shrink content (initially closed)** — the navigation menu will initially start closed at its minimum width displaying just the menu item's icon. When toggled it will move to its maximum width and display both the menu item's icon and description. The page's content (center region) does not start shrunk, but will shrink when sidebar is toggled: +* **Shrink content (initially closed)** – The navigation menu will initially start closed at its minimum width displaying just the menu item's icon. When toggled it will move to its maximum width and display both the menu item's icon and description. The page's content (center region) does not start shrunk, but will shrink when sidebar is toggled: {{< figure src="/attachments/howto9/front-end/use-navigation-layouts/2.1_shrinkingcontentclosedoption.gif" width="350" class="no-border" >}} @@ -56,11 +56,11 @@ It has three regions: top, left, and center. The top region contains both the br The options for the sidebar (unlike the Atlas Default) are only applicable at phone screen size. You then have two options for how the sidebar is toggled: **slide over content** and **push content aside**: -* **Slide over content** — the sidebar will move to overlay on top of the content, hiding a portion (depends on the width of the sidebar) of the content: +* **Slide over content** – The sidebar will move to overlay on top of the content, hiding a portion (depends on the width of the sidebar) of the content: {{< figure src="/attachments/howto9/front-end/use-navigation-layouts/2.2_slidingovercontent.gif" width="350" class="no-border" >}} -* **Push content aside** — the sidebar will push the content off-screen: +* **Push content aside** – The sidebar will push the content off-screen: {{< figure src="/attachments/howto9/front-end/use-navigation-layouts/2.2_pushingcontentaside.gif" width="350" class="no-border" >}} From 69fa5274dc12bc33f0922213cc19530095c1a722 Mon Sep 17 00:00:00 2001 From: ConnorLand <47385345+ConnorLand@users.noreply.github.com> Date: Tue, 1 Sep 2026 15:23:31 +0200 Subject: [PATCH 18/26] fix dashes --- .../front-end/atlas-ui/get-started/_index.md | 24 +++++++------------ .../integration/use-a-client-certificate.md | 2 +- .../services-not-included.md | 10 ++++---- .../3d-viewer/installation-configuration.md | 2 +- .../mindsphere/mindsphere-api-only.md | 2 +- .../mindsphere/mindsphere-mobile-native.md | 4 ++-- .../releasing-versioning.md | 8 +++---- .../connector-best-practices/testing.md | 8 +++---- .../manage-content/upload-content/_index.md | 10 ++++---- .../upload-content/oss-compliance.md | 12 +++++----- .../modules/SAML/_index.md | 6 ++--- .../modules/SAML/advanced-configuration.md | 2 +- .../aws/amazon-rds-database-connector.md | 2 +- .../modules/calendar.md | 2 +- .../data-widgets/data-grid-2-properties.md | 2 +- .../modules/data-widgets/data-grid-2.md | 22 ++++++++--------- .../modules/data-widgets/selection-helper.md | 14 +++++------ .../modules/file-uploader.md | 14 +++++------ .../modules/mendix-sso.md | 6 ++--- .../modules/oidc.md | 16 ++++++------- .../modules/sap/sap-bapi-connector.md | 4 ++-- .../modules/sap/sap-odata-connector.md | 4 ++-- 22 files changed, 84 insertions(+), 92 deletions(-) diff --git a/content/en/docs/howto9/front-end/atlas-ui/get-started/_index.md b/content/en/docs/howto9/front-end/atlas-ui/get-started/_index.md index 5ff051e14bb..bea5a007bf1 100644 --- a/content/en/docs/howto9/front-end/atlas-ui/get-started/_index.md +++ b/content/en/docs/howto9/front-end/atlas-ui/get-started/_index.md @@ -12,13 +12,11 @@ The Atlas UI framework enables all types of developers to build consistent and b ## Design Principles -Atlas UI has a philosophy based on the core principles described below. These principles guide all our design decisions at Mendix, and we encourage every Mendix user to adopt them when building their own apps. +Atlas UI has a philosophy based on the core principles described below. These principles guide all our design decisions at Mendix, and we encourage every Mendix user to adopt them when building their own apps: -**Simplicity** — Freedom from complexity: we strive for simplicity to help you focus on what is important. - -**Harmony** — Create familiarity and consistency throughout your apps' landscape, regardless of the device you use. - -**Flexibility** — Design apps that look good and scale in all situations without losing an intuitive and consistent experience. +* **Simplicity** – Freedom from complexity: we strive for simplicity to help you focus on what is important. +* **Harmony** – Create familiarity and consistency throughout your apps' landscape, regardless of the device you use. +* **Flexibility** – Design apps that look good and scale in all situations without losing an intuitive and consistent experience. ## Design Elements @@ -26,15 +24,11 @@ Our UI library is fully integrated into Mendix Studio Pro. After choosing a navi {{< figure src="/attachments/howto9/front-end/atlas-ui/get-started/designelements.png" alt="Atlas UI design elements" class="no-border" >}} -1. **Navigation Layouts** — When building a Mendix app, the first thing you do is choose a navigation layout. These layouts are the frame within which your dynamic pages are housed, and they provide consistent structure throughout your app. - -2. **Page Templates** — Page templates are predesigned collections of building blocks that can be used as-is, or you can enhance them with custom building blocks and widgets. - -3. **Building Blocks** — Building blocks are single-purpose user interface elements and are comprised of multiple widgets. Multiple building blocks are usually used together on one page. - -4. **Widgets** — Widgets are small user interface elements (alerts, buttons, charts, etc.) used to enhance existing building blocks. - -5. **Design Properties** — You can further customize widgets by changing their design properties. Colors, text, and many other variables can be altered to make the widget what you need it to be. +1. **Navigation Layouts** – When building a Mendix app, the first thing you do is choose a navigation layout. These layouts are the frame within which your dynamic pages are housed, and they provide consistent structure throughout your app. +2. **Page Templates** – Page templates are predesigned collections of building blocks that can be used as-is, or you can enhance them with custom building blocks and widgets. +3. **Building Blocks** – Building blocks are single-purpose user interface elements and are comprised of multiple widgets. Multiple building blocks are usually used together on one page. +4. **Widgets** – Widgets are small user interface elements (alerts, buttons, charts, etc.) used to enhance existing building blocks. +5. **Design Properties** – You can further customize widgets by changing their design properties. Colors, text, and many other variables can be altered to make the widget what you need it to be. ## Default Look and Feel diff --git a/content/en/docs/howto9/integration/use-a-client-certificate.md b/content/en/docs/howto9/integration/use-a-client-certificate.md index be60e466090..78abd0c2fc5 100644 --- a/content/en/docs/howto9/integration/use-a-client-certificate.md +++ b/content/en/docs/howto9/integration/use-a-client-certificate.md @@ -19,7 +19,7 @@ This how-to teaches you how to do the following: ## Prerequisites -* A PKCS12 certificate file that contains a private key — these files typically have the *.pfx* or *.p12* file extension +* A PKCS12 certificate file that contains a private key—these files typically have the *.pfx* or *.p12* file extension * The password to open that file ## Running Locally diff --git a/content/en/docs/marketplace/industry/xcelerator/platform-supported/teamcenter-connector/services-not-included.md b/content/en/docs/marketplace/industry/xcelerator/platform-supported/teamcenter-connector/services-not-included.md index 82ab3c0156e..bf4135388a7 100644 --- a/content/en/docs/marketplace/industry/xcelerator/platform-supported/teamcenter-connector/services-not-included.md +++ b/content/en/docs/marketplace/industry/xcelerator/platform-supported/teamcenter-connector/services-not-included.md @@ -57,11 +57,11 @@ $Response[/Association] Where: -* **Association** — Optional association name on the given entity type. Multiple associations can be sequenced, each separated by a '/'. -* **Attribute** — Optional attribute name on the given entity type. -* **Instruction** — Optional instruction to be applied to the substitution. Multiple instructions can be used, each separated with a semicolon. The supported instructions are: -* **AttributeAsArray** — single valued JSONArray for each attribute value. -* **DateFormat=Format** — Use the custom date format for serializing date attributes. +* **Association** – Optional association name on the given entity type. Multiple associations can be sequenced, each separated by a '/'. +* **Attribute** – Optional attribute name on the given entity type. +* **Instruction** – Optional instruction to be applied to the substitution. Multiple instructions can be used, each separated with a semicolon. The supported instructions are: +* **AttributeAsArray** – Single valued JSONArray for each attribute value. +* **DateFormat=Format** – Use the custom date format for serializing date attributes. * **ignoreNull** – Use to omit the key if the value of that key is null. Examples of which attributes that will be mapped: diff --git a/content/en/docs/marketplace/industry/xcelerator/siemens-supported/3d-viewer/installation-configuration.md b/content/en/docs/marketplace/industry/xcelerator/siemens-supported/3d-viewer/installation-configuration.md index 108935a4ef3..9040d843f3e 100644 --- a/content/en/docs/marketplace/industry/xcelerator/siemens-supported/3d-viewer/installation-configuration.md +++ b/content/en/docs/marketplace/industry/xcelerator/siemens-supported/3d-viewer/installation-configuration.md @@ -152,7 +152,7 @@ For this widget to visualize a model correctly, set the following properties: * On the **Transport** tab, make sure the **HttpEndpoint** is set to **@Viewer3D.HttpEndpoint** or **visualization** * On the **Appearance** tab, make sure the widget has a fixed height (for example, set **Style** to **height:600px**, or make sure height of its parent is fixed); otherwise, the viewer will expand indefinitely * On the **General** tab, there are some optional customization options for changing the widget's behavior: - * **Viewer ID** – sets the id for the widget — this can be used later to get the viewer instance + * **Viewer ID** – sets the id for the widget—this can be used later to get the viewer instance * **Show coordinate system** – determines if a coordinate system will appear at the lower-left corner of the viewer * **Show navigation cube** – determines if a navigation cube will appear at the upper-right corner of the viewer * **Show tooltip** determines if a tooltip will appear when the end-user clicks a model part; this accepts a Boolean value diff --git a/content/en/docs/marketplace/industry/xcelerator/siemens-supported/mindsphere/mindsphere-api-only.md b/content/en/docs/marketplace/industry/xcelerator/siemens-supported/mindsphere/mindsphere-api-only.md index a810c0bfab3..64630e2a313 100644 --- a/content/en/docs/marketplace/industry/xcelerator/siemens-supported/mindsphere/mindsphere-api-only.md +++ b/content/en/docs/marketplace/industry/xcelerator/siemens-supported/mindsphere/mindsphere-api-only.md @@ -18,7 +18,7 @@ Please note that this way is not a full integration with Insights Hub and has th * You cannot make your app multitenant – see [Multi-tenancy](/appstore/industry/mindsphere/mindsphere-development-considerations/#multitenancy) in *Insights Hub Development Considerations* for more information on multitenancy * Your app cannot be deployed to the Insights Hub platform and cannot be added to the Insights Hub Developer Cockpit -* End-users cannot use Insights Hub credentials to sign in to your app, so Insights Hub does not know anything about individual app end-users — you must design your app to handle any required security for each end-user +* End-users cannot use Insights Hub credentials to sign in to your app, so Insights Hub does not know anything about individual app end-users—you must design your app to handle any required security for each end-user * You cannot use the fine grain access control on asset level via SDS. If you prefer a full Insights Hub app, please see [Insights Hub Development Considerations](/appstore/industry/mindsphere/mindsphere-development-considerations/), [Insights Hub Module Details](/appstore/industry/mindsphere/mindsphere-module-details/) or follow the following learning paths: diff --git a/content/en/docs/marketplace/industry/xcelerator/siemens-supported/mindsphere/mindsphere-mobile-native.md b/content/en/docs/marketplace/industry/xcelerator/siemens-supported/mindsphere/mindsphere-mobile-native.md index 56cb3d9bb2f..9994ee83bcd 100644 --- a/content/en/docs/marketplace/industry/xcelerator/siemens-supported/mindsphere/mindsphere-mobile-native.md +++ b/content/en/docs/marketplace/industry/xcelerator/siemens-supported/mindsphere/mindsphere-mobile-native.md @@ -46,8 +46,8 @@ The **Siemens Insights Hub Mobile Starter Application** template provides the ab * ```Type = Mobile``` * ```Infrastructure = none``` - * ```Display Name``` — give your app a nice display Name. Currently this name is only used in Developer Cockpit - * ```Internal Name``` — give an internal name. We need this name later and will call it **internal_name** + * ```Display Name``` – Give your app a nice display Name. Currently this name is only used in Developer Cockpit + * ```Internal Name``` – Give an internal name. We need this name later and will call it **internal_name** * ```Version = 1.0.0``` {{< figure src="/attachments/partners/siemens/mindsphere/mindsphere-mobile-native/DC_CreateApp.png" alt="DeveloperCockpit" >}} diff --git a/content/en/docs/marketplace/manage-content/create-content/create-connectors/connector-best-practices/releasing-versioning.md b/content/en/docs/marketplace/manage-content/create-content/create-connectors/connector-best-practices/releasing-versioning.md index ad3e9900b1d..14f831a09f0 100644 --- a/content/en/docs/marketplace/manage-content/create-content/create-connectors/connector-best-practices/releasing-versioning.md +++ b/content/en/docs/marketplace/manage-content/create-content/create-connectors/connector-best-practices/releasing-versioning.md @@ -19,8 +19,6 @@ Ensure a new release includes the following: The [Updating Existing Marketplace Content](/appstore/submit-content/#updating) section of *Uploading to the Marketplace* provides explanations of the recommended versioning system. The following points go into more detail on the versioning number system: -* Major version — This is the first digit. This number goes up when you release major breaking changes, or at the very least a major new feature, as part of your connector. Determining what is major is up to you. You can deploy minor/patch versions for older major versions when you have bugs that need resolving. - -* Minor version — This is the second digit. This number goes up when you release minor changes that do not break backwards compatibility, and that fix some bugs, or add small new features. Depending on your development cycle, this could be intermediate releases in smaller batches. - -* Patch version — This is the third digit. This number goes up when you really have to patch a bug for a specific version and it cannot be released as part of your next major or minor version. While it is allowed to add new patch versions to older major versions, you cannot add patch versions to older minor versions within the Marketplace. +* **Major version** – This is the first digit. This number goes up when you release major breaking changes, or at the very least a major new feature, as part of your connector. Determining what is major is up to you. You can deploy minor/patch versions for older major versions when you have bugs that need resolving. +* **Minor version** – This is the second digit. This number goes up when you release minor changes that do not break backwards compatibility, and that fix some bugs, or add small new features. Depending on your development cycle, this could be intermediate releases in smaller batches. +* **Patch version** – This is the third digit. This number goes up when you really have to patch a bug for a specific version and it cannot be released as part of your next major or minor version. While it is allowed to add new patch versions to older major versions, you cannot add patch versions to older minor versions within the Marketplace. diff --git a/content/en/docs/marketplace/manage-content/create-content/create-connectors/connector-best-practices/testing.md b/content/en/docs/marketplace/manage-content/create-content/create-connectors/connector-best-practices/testing.md index 60f922dc2b4..e989203bbfa 100644 --- a/content/en/docs/marketplace/manage-content/create-content/create-connectors/connector-best-practices/testing.md +++ b/content/en/docs/marketplace/manage-content/create-content/create-connectors/connector-best-practices/testing.md @@ -22,10 +22,10 @@ Java unit tests are a good way to automate the testing of your Java code. This i The following tools are part of the testing process of custom Java code in your Mendix app: -* [JUnit](https://junit.org/junit5/) — This allows you to run Java unit tests easily. -* [Mockito](https://site.mockito.org/) — This allows you to mock Java classes. You can fake a class during a test so that it thinks that it deals with a real class, while it is actually just behaving like one. -* [JaCoCo](https://www.jacoco.org/jacoco/trunk/index.html) (Java Code Coverage) — This helps you check how well your code is covered by tests. -* [Gradle](https://gradle.org/) — This pulls everything together to manage Java dependencies, and provides a way to work with JUnit and Mockito. +* [JUnit](https://junit.org/junit5/) – This allows you to run Java unit tests easily. +* [Mockito](https://site.mockito.org/) – This allows you to mock Java classes. You can fake a class during a test so that it thinks that it deals with a real class, while it is actually just behaving like one. +* [JaCoCo](https://www.jacoco.org/jacoco/trunk/index.html) (Java Code Coverage) – This helps you check how well your code is covered by tests. +* [Gradle](https://gradle.org/) – This pulls everything together to manage Java dependencies, and provides a way to work with JUnit and Mockito. Gradle can handle managing Java dependencies and running [JUnit](https://junit.org) tests. Read about setting up Gradle in the [Extending App Setup for Building Connectors with Java](/appstore/creating-content/best-practices/development/#extend-app-java) section of *Development*. If you have a pipeline, Mendix recommends running your tests as part of it. ### Using the Java Unit Test Reference diff --git a/content/en/docs/marketplace/manage-content/upload-content/_index.md b/content/en/docs/marketplace/manage-content/upload-content/_index.md index 6334bad41f7..2e826023d5b 100755 --- a/content/en/docs/marketplace/manage-content/upload-content/_index.md +++ b/content/en/docs/marketplace/manage-content/upload-content/_index.md @@ -25,13 +25,13 @@ Before diving in, make sure you have read [Marketplace Home Page](/appstore/home To get started, click **Add Content** in the left panel of the Marketplace home screen. You are presented with the **Before You Get Started** dialog, which outlines the resources you will need for uploading your component. Once you make sure you have everything, click **Next**, then go through the steps in the following sections to add content. -Some fields are mandatory, while others are optional — this is indicated in the user interface. +Some fields are mandatory, while others are optional—this is indicated in the user interface. On each page of the upload flow, click one of these buttons: -* **Save and Exit** — Save the details you have entered so far for the draft. You can access the draft via the [My Drafts](/appstore/home-page/#my-drafts) link in the top bar. +* **Save and Exit** – Save the details you have entered so far for the draft. You can access the draft via the [My Drafts](/appstore/home-page/#my-drafts) link in the top bar. This button is not displayed if you are editing a component. -* **Next** — Go to the next page of the upload flow. +* **Next** – Go to the next page of the upload flow. ### Uploading a Component {#general} @@ -185,8 +185,8 @@ From the preview window, you can either return to the editing flow, or publish t If you choose to publish the component, you will see one of these two buttons: -* **Publish Component** — This is displayed when publishing a new component or component version. -* **Publish Changes** — This is displayed when publishing changes to an existing component. +* **Publish Component** – This is displayed when publishing a new component or component version. +* **Publish Changes** – This is displayed when publishing changes to an existing component. ### Publishing {#publish} diff --git a/content/en/docs/marketplace/manage-content/upload-content/oss-compliance.md b/content/en/docs/marketplace/manage-content/upload-content/oss-compliance.md index 2482fed94b4..85c254a1a0d 100755 --- a/content/en/docs/marketplace/manage-content/upload-content/oss-compliance.md +++ b/content/en/docs/marketplace/manage-content/upload-content/oss-compliance.md @@ -25,7 +25,7 @@ However, improper use of OSS, especially without proper attribution or in violat To ensure your Marketplace contribution is OSS-compliant, you must include the following: -* A `README.md` file — This should include the following overview and usage information: +* **A `README.md` file** – This should include the following overview and usage information: * What the project does * Installation and usage instructions @@ -33,13 +33,13 @@ To ensure your Marketplace contribution is OSS-compliant, you must include the f * Contribution or support details, if applicable * Licensing summary -* A `LICENSE` file — This should include a legal declaration that clearly states the open-source license for the project: +* **A `LICENSE` file** – This should include a legal declaration that clearly states the open-source license for the project: * Choose a standard license, such as MIT, Apache 2.0, or BSD-3-Clause. * Include the full, unmodified license text. * Ensure compatibility with any third-party code included. -* Third-party notices — If your module includes other OSS libraries: +* **Third-party notices** – If your module includes other OSS libraries: * Include a `NOTICE` or `third-party-licenses.txt` file. * List each OSS component, its license, and any required attributions. @@ -69,9 +69,9 @@ If your component includes or links to any of the aforementioned licenses, you m These practices are not mandatory, but highly recommended: -* Semantic Versioning (SemVer) — Communicate changes and updates. -* Security Notes — Mention known vulnerabilities or risks. -* Metadata — Include the contributor, the repository URL, and the license type in your component descriptor. +* **Semantic Versioning (SemVer)** – Communicate changes and updates. +* **Security Notes** – Mention known vulnerabilities or risks. +* **Metadata** – Include the contributor, the repository URL, and the license type in your component descriptor. ## Submission Checklist diff --git a/content/en/docs/marketplace/platform-supported-content/modules/SAML/_index.md b/content/en/docs/marketplace/platform-supported-content/modules/SAML/_index.md index 712326a887a..6c769769d7c 100644 --- a/content/en/docs/marketplace/platform-supported-content/modules/SAML/_index.md +++ b/content/en/docs/marketplace/platform-supported-content/modules/SAML/_index.md @@ -26,16 +26,16 @@ Mendix also offers an [OIDC SSO](/appstore/modules/oidc/) module if you want to The following use cases are supported by both the SAML and OIDC SSO modules: * Your app is designed for your company’s employees, and you want these employees to sign in to your app using corporate credentials hosted by your identity provider (IdP). -* Authenticating against your Microsoft Active Directory server in a secure manner utilizing the SAML capabilities of Active Directory Federation Services (ADFS) — the SAML protocol allows for the encryption of all information transferred between the two servers, so, VPN connections, LDAP, or Kerberos authentication are no longer needed. +* Authenticating against your Microsoft Active Directory server in a secure manner utilizing the SAML capabilities of Active Directory Federation Services (ADFS)—the SAML protocol allows for the encryption of all information transferred between the two servers, so, VPN connections, LDAP, or Kerberos authentication are no longer needed. The following use cases are supported by SAML: * Implementing SSO in your Mendix App through a Shibboleth Identity Provider. * Identifying the end-users of your Mendix app through SAML-enabled national identity schemes such as eHerkenning, a Dutch eID scheme for B2B or B2G scenarios, or DigiD, which gives Dutch citizens access to (semi) governmental services. - {{% alert color="info" %}}Some of these identity schemes use optional features of SAML, which are not yet supported in the SAML SSO module — see [Limitations](#limitations) for more information.{{% /alert %}} + {{% alert color="info" %}}Some of these identity schemes use optional features of SAML, which are not yet supported in the SAML SSO module—see [Limitations](#limitations) for more information.{{% /alert %}} -* Authenticating within a Mendix session — for example, requiring end-users to re-authenticate shortly before they are allowed to do critical transactions in your app, or having a second user authenticate within the context of the first user’s session in your Mendix app. +* Authenticating within a Mendix session—for example, requiring end-users to re-authenticate shortly before they are allowed to do critical transactions in your app, or having a second user authenticate within the context of the first user’s session in your Mendix app. * Single Logout is supported. ### Features diff --git a/content/en/docs/marketplace/platform-supported-content/modules/SAML/advanced-configuration.md b/content/en/docs/marketplace/platform-supported-content/modules/SAML/advanced-configuration.md index ea301d56e0b..140d479d1d7 100644 --- a/content/en/docs/marketplace/platform-supported-content/modules/SAML/advanced-configuration.md +++ b/content/en/docs/marketplace/platform-supported-content/modules/SAML/advanced-configuration.md @@ -35,7 +35,7 @@ To use a CA certificate, upload it as your key store file as described in [Manag Remember to do the following: * Set the certificate password in the `KeystorePassword` constant of your app to be able to read the contents of the uploaded key store. -* Use an alias for the certificate — this must be the name parameter that is provided when creating the certificate you are uploading. If the values do not match, the SAML module will fall back to using a self-signed certificate instead. +* Use an alias for the certificate—this must be the name parameter that is provided when creating the certificate you are uploading. If the values do not match, the SAML module will fall back to using a self-signed certificate instead. * The value of the configured SP EntityID must match the alias that is included in the uploaded key store. ### Customizing the Login Page diff --git a/content/en/docs/marketplace/platform-supported-content/modules/aws/amazon-rds-database-connector.md b/content/en/docs/marketplace/platform-supported-content/modules/aws/amazon-rds-database-connector.md index be08e1804da..86f95646483 100644 --- a/content/en/docs/marketplace/platform-supported-content/modules/aws/amazon-rds-database-connector.md +++ b/content/en/docs/marketplace/platform-supported-content/modules/aws/amazon-rds-database-connector.md @@ -10,7 +10,7 @@ aliases: ## Introduction -Amazon Relational Database Service (Amazon RDS) is a collection of managed services that makes it simple to set up, operate, and scale databases in the cloud. You can choose from seven popular engines — [Amazon Aurora with MySQL compatibility](https://aws.amazon.com/rds/aurora/?pg=ln&sec=hiw), [Amazon Aurora with PostgreSQL compatibility](https://aws.amazon.com/rds/aurora/?pg=ln&sec=hiw), [MySQL](https://aws.amazon.com/rds/mysql/?pg=ln&sec=hiw), [MariaDB](https://aws.amazon.com/rds/mariadb/?pg=ln&sec=hiw), [PostgreSQL](https://aws.amazon.com/rds/postgresql/?pg=ln&sec=hiw), [Oracle](https://aws.amazon.com/rds/oracle/?pg=ln&sec=hiw), and [SQL Server](https://aws.amazon.com/rds/sqlserver/?pg=ln&sec=hiw) — and deploy on-premises with [Amazon RDS on AWS Outposts](https://aws.amazon.com/rds/outposts/?pg=ln&sec=hiw). +Amazon Relational Database Service (Amazon RDS) is a collection of managed services that makes it simple to set up, operate, and scale databases in the cloud. You can choose from seven popular engines—[Amazon Aurora with MySQL compatibility](https://aws.amazon.com/rds/aurora/?pg=ln&sec=hiw), [Amazon Aurora with PostgreSQL compatibility](https://aws.amazon.com/rds/aurora/?pg=ln&sec=hiw), [MySQL](https://aws.amazon.com/rds/mysql/?pg=ln&sec=hiw), [MariaDB](https://aws.amazon.com/rds/mariadb/?pg=ln&sec=hiw), [PostgreSQL](https://aws.amazon.com/rds/postgresql/?pg=ln&sec=hiw), [Oracle](https://aws.amazon.com/rds/oracle/?pg=ln&sec=hiw), and [SQL Server](https://aws.amazon.com/rds/sqlserver/?pg=ln&sec=hiw)—and deploy on-premises with [Amazon RDS on AWS Outposts](https://aws.amazon.com/rds/outposts/?pg=ln&sec=hiw). This how-to uses PostgreSQL as an example to integrate your Mendix app with Amazon RDS. diff --git a/content/en/docs/marketplace/platform-supported-content/modules/calendar.md b/content/en/docs/marketplace/platform-supported-content/modules/calendar.md index 18c0c02c7bd..c1dd45af94f 100644 --- a/content/en/docs/marketplace/platform-supported-content/modules/calendar.md +++ b/content/en/docs/marketplace/platform-supported-content/modules/calendar.md @@ -55,7 +55,7 @@ The calendar module provides default **CalendarEvent** entity in the domain mode * **Time format** – Set the format in which the time is displayed. * **Day start hour** – The hour when the day starts. Choose a value between 0 and 23. * **Day end hour** – The hour when the day ends. Choose a value between 0 and 24. -* **Show all events** — If set to **yes**, the calendar displays all events in a day without "more" links. +* **Show all events** – If set to **yes**, the calendar displays all events in a day without "more" links. ### Custom View Tab diff --git a/content/en/docs/marketplace/platform-supported-content/modules/data-widgets/data-grid-2-properties.md b/content/en/docs/marketplace/platform-supported-content/modules/data-widgets/data-grid-2-properties.md index 976d6d03571..5acd7d86c13 100644 --- a/content/en/docs/marketplace/platform-supported-content/modules/data-widgets/data-grid-2-properties.md +++ b/content/en/docs/marketplace/platform-supported-content/modules/data-widgets/data-grid-2-properties.md @@ -171,7 +171,7 @@ This flag controls column hiding for the entire data grid. If set to **No**, the This property controls whether filter states are saved as part of user personalization settings or not. When enabled, the system preserves filter input values, selected filter types, applied filter combinations, filter visibility states, and custom filter configurations in the user's personalization profile. -Filter states can be stored in browser localStorage or database attributes depending on personalization configuration. When enabled, users' filter preferences persist across sessions and page refreshes. When disabled, filters reset to default values on every page load — useful for shared screens, dashboards, or public interfaces. +Filter states can be stored in browser localStorage or database attributes depending on personalization configuration. When enabled, users' filter preferences persist across sessions and page refreshes. When disabled, filters reset to default values on every page load—useful for shared screens, dashboards, or public interfaces. #### Attribute diff --git a/content/en/docs/marketplace/platform-supported-content/modules/data-widgets/data-grid-2.md b/content/en/docs/marketplace/platform-supported-content/modules/data-widgets/data-grid-2.md index 0ad72dd3338..1d741777591 100644 --- a/content/en/docs/marketplace/platform-supported-content/modules/data-widgets/data-grid-2.md +++ b/content/en/docs/marketplace/platform-supported-content/modules/data-widgets/data-grid-2.md @@ -109,8 +109,8 @@ The **Paging Buttons** option will render the default buttons as the previous da You can configure pagination based on the following properties: -* **Position** — The **Position of paging button** options allow you to position paging buttons above or below the data grid. -* **Visibility** — The **Show paging buttons** options allow you to always show paging, or to automatically show and hide paging based on the amount of available data compared to the display limit per page. +* **Position** – The **Position of paging button** options allow you to position paging buttons above or below the data grid. +* **Visibility** – The **Show paging buttons** options allow you to always show paging, or to automatically show and hide paging based on the amount of available data compared to the display limit per page. ### Virtual Scrolling @@ -162,9 +162,9 @@ You can define how each cell will be rendered in the data grid. We offer three c {{< figure src="/attachments/appstore/platform-supported-content/modules/data-widgets/data-grid-2/column-width.png" alt="Settings for column width for each column item" class="no-border" >}} -* **Auto-fill** — With this option it will auto define the width of your column, if all columns are using auto-fill, it will divide evenly the same width, if another column is configured with auto-fit or manual, it will fill the available space. -* **Auto-fit** — Content With this option it will calculate the width of your column based on the content of each row. -* **Manual** — With this option you will manually define the size of your column based of flexbox grow values, for more information, please [check here](https://www.w3.org/TR/css-flexbox-1/). +* **Auto-fill** – With this option it will auto define the width of your column, if all columns are using auto-fill, it will divide evenly the same width, if another column is configured with auto-fit or manual, it will fill the available space. +* **Auto-fit** – Content With this option it will calculate the width of your column based on the content of each row. +* **Manual** – With this option you will manually define the size of your column based of flexbox grow values, for more information, please [check here](https://www.w3.org/TR/css-flexbox-1/). ### Alignment @@ -212,10 +212,10 @@ Association filtering configuration has been moved from column properties to the The dropdown filter widget supports association filtering when configured in custom mode: -* **Entity (Association)** — defines the association that will be used for filtering -* **Selectable objects** — defines data source for filter options, returning list of all possible entities that could be associated -* **Use lazy load** — controls when filter options are loaded. When set to **No** (recommended), data is fetched immediately providing better personalization support. When set to **Yes**, data is fetched only when the filter is opened, improving initial load times but limiting personalization capabilities -* **Option caption** — expression used as caption for each option in the dropdown +* **Entity (Association)** – Defines the association that will be used for filtering. +* **Selectable objects** – Defines data source for filter options, returning list of all possible entities that could be associated. +* **Use lazy load** – Controls when filter options are loaded. When set to **No** (recommended), data is fetched immediately providing better personalization support. When set to **Yes**, data is fetched only when the filter is opened, improving initial load times but limiting personalization capabilities. +* **Option caption** – Sets the expression used as caption for each option in the dropdown. ### Visible {#visible-filter} @@ -363,8 +363,8 @@ When a drop-down filter is used in conjunction with an [Association Filter](#ass When adding a new option, the following properties are required: -* **Caption** — The text being rendered for each option in the drop-down. -* **Value** — The corresponding value that will be compared, if a value is being compared with an enumeration, it should match exactly the enumeration value. This property allows the usage of expression (you can use conditionals to apply dynamic values). +* **Caption** – The text being rendered for each option in the drop-down. +* **Value** – The corresponding value that will be compared, if a value is being compared with an enumeration, it should match exactly the enumeration value. This property allows the usage of expression (you can use conditionals to apply dynamic values). {{< figure src="/attachments/appstore/platform-supported-content/modules/data-widgets/data-grid-2/dropdown-filter-item.png" alt="Example of settings for new option" class="no-border" >}} diff --git a/content/en/docs/marketplace/platform-supported-content/modules/data-widgets/selection-helper.md b/content/en/docs/marketplace/platform-supported-content/modules/data-widgets/selection-helper.md index 25146c1e46e..146429417f0 100644 --- a/content/en/docs/marketplace/platform-supported-content/modules/data-widgets/selection-helper.md +++ b/content/en/docs/marketplace/platform-supported-content/modules/data-widgets/selection-helper.md @@ -17,8 +17,8 @@ Here is an example of a Selection Helper widget in a Gallery: Before using the Selection Helper widget, ensure the following: -* **For Gallery** — Gallery widget is configured with Selection set to Multi. -* **For Data Grid 2** — Data Grid 2 is configured with Selection set to Multi. +* **For Gallery** – Gallery widget is configured with Selection set to Multi. +* **For Data Grid 2** – Data Grid 2 is configured with Selection set to Multi. The Selection Helper must be placed inside the data widget's header content area. For specific guidance, see the subsections below. @@ -40,16 +40,16 @@ The Selection Helper must be placed inside the data widget's header content area Controls how the selection control appears to users: -* **Check box** (default) — Displays a standard checkbox that reflects the current selection state. -* **Custom** — Allows you to define custom widgets for different selection states. +* **Check box** (default) – Displays a standard checkbox that reflects the current selection state. +* **Custom** – Allows you to define custom widgets for different selection states. #### Custom Style Available when `Style` is set to `Custom`. Defines custom widgets that display based on the current selection state: -* **None Selected Widget** — Widget displayed when no items are currently selected. Usually contains **Select all** controls or empty state indicators. -* **Some Selected Widget** — Widget displayed when some (but not all) items are selected. Often used to show **Select all** controls or partial selection indicators. -* **All Selected Widget** — Widget displayed when all visible items in the grid are selected. Typically used to show **Clear selection** controls or indicators. +* **None Selected Widget** – Widget displayed when no items are currently selected. Usually contains **Select all** controls or empty state indicators. +* **Some Selected Widget** – Widget displayed when some (but not all) items are selected. Often used to show **Select all** controls or partial selection indicators. +* **All Selected Widget** – Widget displayed when all visible items in the grid are selected. Typically used to show **Clear selection** controls or indicators. Here is an example of a **Selection Helper** widget with a custom style configured: diff --git a/content/en/docs/marketplace/platform-supported-content/modules/file-uploader.md b/content/en/docs/marketplace/platform-supported-content/modules/file-uploader.md index 93b2aa088d6..80fa7b1e309 100644 --- a/content/en/docs/marketplace/platform-supported-content/modules/file-uploader.md +++ b/content/en/docs/marketplace/platform-supported-content/modules/file-uploader.md @@ -56,8 +56,8 @@ For an advanced setup, useful when modifying the context entity is not possible, ##### Upload Mode -* **Files** — Allows all file types by default, and adds a configuration option to specify a custom set of allowed file types. -* **Images** — Limits uploads to images and shows a preview thumbnail. +* **Files** – Allows all file types by default, and adds a configuration option to specify a custom set of allowed file types. +* **Images** – Limits uploads to images and shows a preview thumbnail. ##### Associated Files / Associated Images @@ -111,11 +111,11 @@ Allows the use of custom action buttons that will be displayed on the right side Adds custom buttons that will be used in the file uploader: -* **Caption** — Caption text configuration for the custom button. -* **Icon** — Provides icon configuration for the custom button. -* **Action** — Provides **On click** action configuration for the custom button. -* **Default file action** — If set to **Yes**, the action in the button will be used as the default click action for the file. -* **Visible** — If set to **False**, the button will be hidden. +* **Caption** – Caption text configuration for the custom button. +* **Icon** – Provides icon configuration for the custom button. +* **Action** – Provides **On click** action configuration for the custom button. +* **Default file action** – If set to **Yes**, the action in the button will be used as the default click action for the file. +* **Visible** – If set to **False**, the button will be hidden. ### Nanoflows diff --git a/content/en/docs/marketplace/platform-supported-content/modules/mendix-sso.md b/content/en/docs/marketplace/platform-supported-content/modules/mendix-sso.md index 44c02f056b0..6c9e6e13645 100644 --- a/content/en/docs/marketplace/platform-supported-content/modules/mendix-sso.md +++ b/content/en/docs/marketplace/platform-supported-content/modules/mendix-sso.md @@ -155,7 +155,7 @@ You can deactivate Mendix SSO in two simple steps. This will remove the end-user To deactivate Mendix SSO, follow these two steps: -1. Follow the instructions below to rename the original login file (by default *login-without-sso.html*) in the **theme/web** or **theme** folder of your app to *login.html* — this removes the single sign-on button from your sign in screen: +1. Follow the instructions below to rename the original login file (by default *login-without-sso.html*) in the **theme/web** or **theme** folder of your app to *login.html*—this removes the single sign-on button from your sign in screen: 1. Open your app directory in File Explorer by selecting the menu item **App** > **Show App Directory in Explorer**. 2. Go to the **theme/web** folder (for Mendix versions below 9.0.0, this is the **theme** folder). @@ -395,7 +395,7 @@ The TokensOverview page allows administrators to see all tokens that have been i {{< figure src="/attachments/appstore/platform-supported-content/modules/mendix-sso/token-administration.png" alt="List of all Mendix SSO tokens issued to the app" class="no-border" >}} -The page can be used for troubleshooting — you can see the creation and expiry dates of the tokens, and by clicking **View**, you can view the values held in the tokens. +The page can be used for troubleshooting—you can see the creation and expiry dates of the tokens, and by clicking **View**, you can view the values held in the tokens. The **ID Token** is held in *JWT* format, so you can paste it into a [JWT decoder](https://jwt.io) to confirm what information it holds. @@ -409,7 +409,7 @@ The **MyTokensOverview** page allows end-users to see their own access tokens. {{< figure src="/attachments/appstore/platform-supported-content/modules/mendix-sso/my-tokens.png" alt="List of all my Mendix SSO tokens" class="no-border" >}} -The page can be used for troubleshooting — the end-user can see the creation and expiry dates of the tokens, and by clicking **View**, they can view the values held in the tokens. This can be useful for troubleshooting if the end-user is having difficulty getting proper access to the app. +The page can be used for troubleshooting—the end-user can see the creation and expiry dates of the tokens, and by clicking **View**, they can view the values held in the tokens. This can be useful for troubleshooting if the end-user is having difficulty getting proper access to the app. #### Displaying Tokens Using Snippets diff --git a/content/en/docs/marketplace/platform-supported-content/modules/oidc.md b/content/en/docs/marketplace/platform-supported-content/modules/oidc.md index 47d3bf0d3bc..a32f2ccca85 100644 --- a/content/en/docs/marketplace/platform-supported-content/modules/oidc.md +++ b/content/en/docs/marketplace/platform-supported-content/modules/oidc.md @@ -493,7 +493,7 @@ For more information on creating user provisioning with constants, see the [Depl The following constants are optional: -* **ClientAuthenticationMethod** (*default: client_secret_basic*) – the client authentication method — the caption of OIDC.ENU_ClientAuthenticationMethod +* **ClientAuthenticationMethod** (*default: client_secret_basic*) – The client authentication method—the caption of OIDC.ENU_ClientAuthenticationMethod Examples: `client_secret_post`, `client_secret_basic`, or `private_key_jwt` @@ -517,17 +517,17 @@ when you set **ClientAuthenticationMethod** as `private_key_jwt`, you do not nee Example: `OIDC.Default_SAM_TokenProcessing_CustomATP` -* **CustomATPTokenType**: an optional deploy-time constant — when **CustomATP** is enabled, optionally, **CustomATPTokenType** can be set to `ID-TOKEN`. Default is `ACCESS-TOKEN`. +* **CustomATPTokenType**: an optional deploy-time constant—when **CustomATP** is enabled, optionally, **CustomATPTokenType** can be set to `ID-TOKEN`. Default is `ACCESS-TOKEN`. Example: `ID-TOKEN` * **CustomCallbackURL** – the custom callback URL -* **SelectedClaim** – selected claim values — multiple values can be separated by a space +* **SelectedClaim** – selected claim values—multiple values can be separated by a space Example: `auth_time created_at` -* **SelectedScope** – selected scopes — multiple values can be separated by a space +* **SelectedScope** – selected scopes—multiple values can be separated by a space Example: `openid profile email` @@ -537,7 +537,7 @@ when you set **ClientAuthenticationMethod** as `private_key_jwt`, you do not nee * **SessionEndPoint** – the end session endpoint -* **ACRValues** – selected ACRvalues — the selected Acr with multiple values separated by a space +* **ACRValues** – selected ACRvalues—the selected Acr with multiple values separated by a space Example: `acr1 acr2` @@ -569,7 +569,7 @@ The following constants are mandatory when creating an OIDC SSO Client Credentia * **ClientAlias** – the client alias * **AutomaticConfigurationURL** – the URL of the well-known endpoint (ending with `/.well-known/openid-configuration`) -* **CustomATP** – a custom access token processing microflow — the value of `CompleteName` in the `mxmodelreflection$microflows` table +* **CustomATP** – a custom access token processing microflow—the value of `CompleteName` in the `mxmodelreflection$microflows` table Example: `OIDC.Default_SAM_TokenProcessing_CustomATP` * **IsClientGrantOnly** (*default: false*) – allow to create Client Credential Configuration in the application @@ -927,7 +927,7 @@ If you want to use the information in an access token which is a JWT, you need t * The OIDC module provides you with default microflows for parsing access tokens from the following IdPs: - * Siemens SAM – in this case the `sws.samauth.role.name` claim is interpreted — for example: + * Siemens SAM – in this case the `sws.samauth.role.name` claim is interpreted—for example: ```json "sws.samauth.role.name": [ @@ -935,7 +935,7 @@ If you want to use the information in an access token which is a JWT, you need t ] ``` - * Microsoft Entra ID – in this case the `roles` claim is interpreted, using the roles claim in the access token — for example: + * Microsoft Entra ID – in this case the `roles` claim is interpreted, using the roles claim in the access token—for example: ```json "roles": [ diff --git a/content/en/docs/marketplace/platform-supported-content/modules/sap/sap-bapi-connector.md b/content/en/docs/marketplace/platform-supported-content/modules/sap/sap-bapi-connector.md index 2cffa4d88ad..d86a1817b5f 100644 --- a/content/en/docs/marketplace/platform-supported-content/modules/sap/sap-bapi-connector.md +++ b/content/en/docs/marketplace/platform-supported-content/modules/sap/sap-bapi-connector.md @@ -159,8 +159,8 @@ The following JCo Properties map directly to these constants in the module: If you need to set additional JCoProperties for which a constant is not available, you can create a list of objects of the `Property` entity (see the domain model section, below) and use the [GetJCoDestination](#get-jco-destination) action. You need to set the following attributes in the `Property` object: -* Name – the JCoProperty key — for example to set maximum pool size, Name would be `jco.pool.maxpoolsize` -* Value – the value to be assigned to this property +* **Name** – The JCoProperty key—for example to set maximum pool size, Name would be `jco.pool.maxpoolsize`. +* **Value** – The value to be assigned to this property. #### Connecting Using an SNC Connection diff --git a/content/en/docs/marketplace/platform-supported-content/modules/sap/sap-odata-connector.md b/content/en/docs/marketplace/platform-supported-content/modules/sap/sap-odata-connector.md index d0439ccbbeb..717d1b016af 100644 --- a/content/en/docs/marketplace/platform-supported-content/modules/sap/sap-odata-connector.md +++ b/content/en/docs/marketplace/platform-supported-content/modules/sap/sap-odata-connector.md @@ -867,8 +867,8 @@ This domain model is part of the OData Connector for SAP solutions module and ca * **Message** – the textual description or reason phrase from the HTTP status line * **Payload** – the raw HTTP response content for the operation. Internally parsed by: - * Fetch Batch Response (Single) — for individual entity responses - * Fetch Batch Response (List) — for list-type responses + * **Fetch Batch Response (Single)** – for individual entity responses + * **Fetch Batch Response (List)** – for list-type responses * **ChangeSet** – indicates whether the **BatchResponse** is part of a ChangeSet, a grouped set of write operations From 0ba11827101fd3f77d5a36a491c3bfcf06bbf356 Mon Sep 17 00:00:00 2001 From: ConnorLand <47385345+ConnorLand@users.noreply.github.com> Date: Wed, 2 Sep 2026 13:36:24 +0200 Subject: [PATCH 19/26] fix dashes --- .../modules/sap/sap-ui-resources/_index.md | 4 ++-- .../modules/scim/using-scim-with-sso-module.md | 8 ++++---- .../snowflake/snowflake-ai-data-connector.md | 2 +- .../services/oidc-provider.md | 2 +- .../widgets/charts/charts-custom-usage.md | 14 +++++++------- .../widgets/charts/charts-theme.md | 2 +- .../platform-supported-content/widgets/combobox.md | 3 +-- .../widgets/document-viewer.md | 12 ++++++------ .../widgets/markdown-viewer.md | 6 +++--- content/en/docs/mendix-portal/maia-portal.md | 10 +++++----- .../en/docs/mendix-portal/mendix-profile/_index.md | 2 +- .../mendix-portal/mendix-profile/user-settings.md | 2 +- .../nist-controls/ac/pmp-nist-ac0204.md | 4 ++-- .../nist-controls/ac/pmp-nist-ac0207.md | 2 +- .../nist-controls/ac/pmp-nist-ac0421.md | 8 ++++---- 15 files changed, 40 insertions(+), 41 deletions(-) diff --git a/content/en/docs/marketplace/platform-supported-content/modules/sap/sap-ui-resources/_index.md b/content/en/docs/marketplace/platform-supported-content/modules/sap/sap-ui-resources/_index.md index e731717c617..9defe5d7498 100644 --- a/content/en/docs/marketplace/platform-supported-content/modules/sap/sap-ui-resources/_index.md +++ b/content/en/docs/marketplace/platform-supported-content/modules/sap/sap-ui-resources/_index.md @@ -31,9 +31,9 @@ More information on using SAP Fiori design in your Mendix app is available in th * [Widgets](#widgets) – Mendix core widgets having SAP Fiori styling * [Building Blocks](#building-blocks) – groups of widgets which can be used to quickly create SAP Fiori styled pages -* [Layouts](#layouts) – different styles of page which can be used in your app — for example, Master/detail or Pop-Up +* [Layouts](#layouts) – different styles of page which can be used in your app—for example, Master/detail or Pop-Up * [Page Templates](#page-templates) – readily-available page templates which are already styled ready for you to use in your Mendix app -* [Theme Selector](#theme-selector) – switch between different theme — for example *light* and *dark* +* [Theme Selector](#theme-selector) – switch between different theme—for example *light* and *dark* ## Widgets{#widgets} diff --git a/content/en/docs/marketplace/platform-supported-content/modules/scim/using-scim-with-sso-module.md b/content/en/docs/marketplace/platform-supported-content/modules/scim/using-scim-with-sso-module.md index e1fb4a9b733..3d8b4f815bf 100644 --- a/content/en/docs/marketplace/platform-supported-content/modules/scim/using-scim-with-sso-module.md +++ b/content/en/docs/marketplace/platform-supported-content/modules/scim/using-scim-with-sso-module.md @@ -39,11 +39,11 @@ By mapping the SCIM `externalId` to the `System.User.Name` attribute and configu {{< figure src="/attachments/appstore/platform-supported-content/modules/scim/using-with-oidc/scim-principal-attribute.png" >}} -### Scenario 2: SSO Unique Identifier Not Supported by the SCIM — Using an Alternative Stable Attribute {#alternative-stable-attribute} +### Scenario 2: SSO Unique Identifier Not Supported by the SCIM—Using an Alternative Stable Attribute {#alternative-stable-attribute} This scenario applies when a Mendix application has already provisioned users through the OIDC SSO module, but the principal IdP attribute (for example, `sub`) in the OIDC used for authentication is not available in the SCIM provisioning payload. -A typical example of this scenario is Entra ID as IdP, where the OIDC `sub` claim is used as the primary unique identifier, and a second, stable identifier is mapped as a secondary identifier through OIDC attribute mapping. If the stable secondary identifier is not already mapped, refer to the [Scenario 3: No Existing Shared Identifier — Introducing a New Stable Attribute](#new-stable-attribute) section below. +A typical example of this scenario is Entra ID as IdP, where the OIDC `sub` claim is used as the primary unique identifier, and a second, stable identifier is mapped as a secondary identifier through OIDC attribute mapping. If the stable secondary identifier is not already mapped, refer to the [Scenario 3: No Existing Shared Identifier—Introducing a New Stable Attribute](#new-stable-attribute) section below. In the existing setup, users authenticate via OIDC using a unique IdP claim such as `sub` (for example, `00u12abcD3XYZpqRs5d6`). This claim is mapped to `System.User.Name` and configured as the OIDC principal attribute. Additionally, a stable secondary identifier such as `preferred_username` is already mapped and stored for example, in the `customuserentity.FullName` attribute (for example, `johndoe@company.com`). @@ -87,7 +87,7 @@ If the organization decides to standardize on `oid` as the long-term unique iden This alignment ensures that both authentication (OIDC) and provisioning (SCIM) consistently reference the same Mendix user based on a single, stable identifier. -### Scenario 3: No Existing Shared Identifier — Introducing a New Stable Attribute {#new-stable-attribute} +### Scenario 3: No Existing Shared Identifier—Introducing a New Stable Attribute {#new-stable-attribute} This scenario applies when a Mendix application has already provisioned users through the OIDC SSO module, but no identifier suitable for SCIM correlation exists in the Mendix user data. @@ -104,7 +104,7 @@ Map a stable, unique claim from the IdP, for example, map `preferred_username` Require existing users to log in via OIDC after the mapping is applied, so the new attribute is stored in Mendix. 3. Align SCIM configuration: -Configure SCIM to use the newly populated attribute for user matching and follow the same SCIM principal attribute and mapping approach described in the [SSO Unique Identifier Not Supported by the SCIM — Using an Alternative Stable Attribute](#alternative-stable-attribute) section above. +Configure SCIM to use the newly populated attribute for user matching and follow the same SCIM principal attribute and mapping approach described in the [SSO Unique Identifier Not Supported by the SCIM—Using an Alternative Stable Attribute](#alternative-stable-attribute) section above. By introducing a shared, stable identifier and ensuring it is populated for all existing users, Mendix can reliably correlate SCIM provisioning requests with OIDC-authenticated users and update existing records instead of creating duplicates. diff --git a/content/en/docs/marketplace/platform-supported-content/modules/snowflake/snowflake-ai-data-connector.md b/content/en/docs/marketplace/platform-supported-content/modules/snowflake/snowflake-ai-data-connector.md index 8138c205d23..8d81adae31d 100644 --- a/content/en/docs/marketplace/platform-supported-content/modules/snowflake/snowflake-ai-data-connector.md +++ b/content/en/docs/marketplace/platform-supported-content/modules/snowflake/snowflake-ai-data-connector.md @@ -173,7 +173,7 @@ Instead of putting values directly into your SQL, you can use `?` placeholders a In Mendix, you do this by creating a `Statement` entity with a SQL query that includes `?`. Then, you add `Binding` entities to provide the values for those placeholders. -Each `Binding` is linked to the `Statement`. The order of the bindings matters — the first binding fills the first `?`, the second fills the second `?`, and so on. +Each `Binding` is linked to the `Statement`. The order of the bindings matters—the first binding fills the first `?`, the second fills the second `?`, and so on. Make sure the number of bindings matches the number of `?` placeholders in your SQL. Otherwise, the execution will fail due to mismatched parameters. diff --git a/content/en/docs/marketplace/platform-supported-content/services/oidc-provider.md b/content/en/docs/marketplace/platform-supported-content/services/oidc-provider.md index 08fe4dff3d0..24408204bc8 100644 --- a/content/en/docs/marketplace/platform-supported-content/services/oidc-provider.md +++ b/content/en/docs/marketplace/platform-supported-content/services/oidc-provider.md @@ -290,7 +290,7 @@ If you cannot use automatic registration, you can register the client manually: 1. Additionally, you need to add below information if you select **Allow Authorization-Code grant type**: - * **Post Logout redirect URI** – the fully qualified logout url, `/logout` — for example, for testing a local OIDC SSO app on port `8081`, `http://localhost:8081/logout` + * **Post Logout redirect URI** – the fully qualified logout url, `/logout`—for example, for testing a local OIDC SSO app on port `8081`, `http://localhost:8081/logout` * **Redirect URI** – Redirects support both URIs with and without a port. For example, `http://localhost/oauth/v2/callback` and `http://localhost:8081/oauth/v2/callback` for testing a local OIDC SSO app on port `8081`. * **Back channel logout session support** * **Front channel Logout URI** diff --git a/content/en/docs/marketplace/platform-supported-content/widgets/charts/charts-custom-usage.md b/content/en/docs/marketplace/platform-supported-content/widgets/charts/charts-custom-usage.md index 51b1b710d03..b6642e89b9e 100644 --- a/content/en/docs/marketplace/platform-supported-content/widgets/charts/charts-custom-usage.md +++ b/content/en/docs/marketplace/platform-supported-content/widgets/charts/charts-custom-usage.md @@ -103,16 +103,16 @@ Since the introduction of design mode, react-ready widgets can render data as it These are the dimension configurations for custom charts: -* **Width** — Determines the width size for the custom charts. User can choose to use either pixels (px) or percentage (%). -* **Height** — Determine the height size for the custom charts. User can choose to use either pixels (px), percentage (%), or Viewport (vh). Choosing setting to **Auto** will allow user to set minimum and maximum height instead. -* **Minimum Height** — Determines the minimum size for the custom charts container. -* **Maximum Height** — Determines the maximum size for the custom charts container. -* **Vertical Overflow** — If maximum height is set, vertical overflow will determine the widget's behavior to show overflowing content if it reached height size larger than the maximum height allowed. +* **Width** – Determines the width size for the custom charts. User can choose to use either pixels (px) or percentage (%). +* **Height** – Determine the height size for the custom charts. User can choose to use either pixels (px), percentage (%), or Viewport (vh). Choosing setting to **Auto** will allow user to set minimum and maximum height instead. +* **Minimum Height** – Determines the minimum size for the custom charts container. +* **Maximum Height** – Determines the maximum size for the custom charts container. +* **Vertical Overflow** – If maximum height is set, vertical overflow will determine the widget's behavior to show overflowing content if it reached height size larger than the maximum height allowed. ## Events -* **On Click** — Determines the actions that will be triggered if parts of the custom charts is clicked. -* **Event data attribute** — The string value that the chart uses when click events occur. User can use this same attribute as the parameters for on-click events action to retrieve the data from the custom chart: +* **On Click** – Determines the actions that will be triggered if parts of the custom charts is clicked. +* **Event data attribute** – The string value that the chart uses when click events occur. User can use this same attribute as the parameters for on-click events action to retrieve the data from the custom chart: {{< figure src="/attachments/appstore/platform-supported-content/widgets/charts/charts-tutorials/charts-any-usage/custom-chart-events-attribute.png" alt="Setup on click events" class="no-border" >}} diff --git a/content/en/docs/marketplace/platform-supported-content/widgets/charts/charts-theme.md b/content/en/docs/marketplace/platform-supported-content/widgets/charts/charts-theme.md index ad6cf53f6fb..df744e7ce04 100644 --- a/content/en/docs/marketplace/platform-supported-content/widgets/charts/charts-theme.md +++ b/content/en/docs/marketplace/platform-supported-content/widgets/charts/charts-theme.md @@ -77,7 +77,7 @@ To add a theme file which will apply to all charts in the app, follow these step {{% alert color="info" %}}Please note that
* the file name is case sensitive
* the file extension is `json`
- * the file must contain a *json* object, even if this is empty — for example `{ }` + * the file must contain a *json* object, even if this is empty—for example `{ }` {{% /alert %}} ### Changing the Font Globally diff --git a/content/en/docs/marketplace/platform-supported-content/widgets/combobox.md b/content/en/docs/marketplace/platform-supported-content/widgets/combobox.md index 991d58ed8cf..7982e03ada2 100644 --- a/content/en/docs/marketplace/platform-supported-content/widgets/combobox.md +++ b/content/en/docs/marketplace/platform-supported-content/widgets/combobox.md @@ -183,5 +183,4 @@ For more information, see [Common Section](/refguide/common-widget-properties/#c ### Editable Behavior Without a Store Value When using a combo box inside a data view, the widget relies on a store value attribute to determine its editable state. If no store value attribute is configured, the **Editability** setting of the data view (set to **Never** or **Conditionally**) will not be applied to the combo box. This occurs because, without a target attribute, the combo box has no reference for whether it should be editable. - -**Workaround** — To ensure correct behavior, copy and paste the **Editability** setting from the data view directly into each combo box individually. +* **Workaround** – To ensure correct behavior, copy and paste the **Editability** setting from the data view directly into each combo box individually. diff --git a/content/en/docs/marketplace/platform-supported-content/widgets/document-viewer.md b/content/en/docs/marketplace/platform-supported-content/widgets/document-viewer.md index 6b0a8857eb9..19b44ae1197 100644 --- a/content/en/docs/marketplace/platform-supported-content/widgets/document-viewer.md +++ b/content/en/docs/marketplace/platform-supported-content/widgets/document-viewer.md @@ -40,17 +40,17 @@ To configure this widget, follow these steps: These are the dimension configurations for document viewer: -* **Width** — Determines the width size for the document viewer. The developer can choose to use either pixels (px), percentage (%), or **Fit to content**. -* **Height** — Determine the height size for the document viewer. The developer can choose to use either pixels (px), percentage (%), or **Viewport** (vp). Choosing setting to **Auto** will allow the developer to set minimum and maximum heights instead. -* **Minimum Height** — Determines the minimum size for the custom charts container. -* **Maximum Height** — Determines the maximum size for the custom charts container. -* **Vertical Overflow** — If maximum height is set, vertical overflow will determine the widget's behavior to show overflowing content if that content exceeded the maximum height allowed. +* **Width** – Determines the width size for the document viewer. The developer can choose to use either pixels (px), percentage (%), or **Fit to content**. +* **Height** – Determine the height size for the document viewer. The developer can choose to use either pixels (px), percentage (%), or **Viewport** (vp). Choosing setting to **Auto** will allow the developer to set minimum and maximum heights instead. +* **Minimum Height** – Determines the minimum size for the custom charts container. +* **Maximum Height** – Determines the maximum size for the custom charts container. +* **Vertical Overflow** – If maximum height is set, vertical overflow will determine the widget's behavior to show overflowing content if that content exceeded the maximum height allowed. ## Advanced {#advanced} The **Advanced** tab allows you to configure settings for features beyond the normal configurations: -* **PDF.js worker URL** — Configures the path for PDF.js worker script. This worker script is needed to render PDF type document using a [PDF.js](https://github.com/mozilla/pdf.js?tab=readme-ov-file#including-via-a-cdn) library. +* **PDF.js worker URL** – Configures the path for PDF.js worker script. This worker script is needed to render PDF type document using a [PDF.js](https://github.com/mozilla/pdf.js?tab=readme-ov-file#including-via-a-cdn) library. * If left empty, the document viewer widget will retrieve PDF.js from CDN `http://unpkg.com/pdfjs-dist@4.8.69/build/pdf.worker.min.mjs`. * Alternatively, users can grab `pdf.worker.mjs` from `{LOCAL DEV PROJECT FOLDER HERE}/deployment/web/widgets/com/mendix/shared/pdfjs/pdf.worker.mjs`, put it into their own `App Module -> Styling/web/js/pdf.worker.mjs` file, and then set `./js/pdf.worker.mjs` as the worker URL configuration. This is the recommended practice to support [CSP](/howto/security/csp/). diff --git a/content/en/docs/marketplace/platform-supported-content/widgets/markdown-viewer.md b/content/en/docs/marketplace/platform-supported-content/widgets/markdown-viewer.md index 76da97d09f3..306e195a14b 100644 --- a/content/en/docs/marketplace/platform-supported-content/widgets/markdown-viewer.md +++ b/content/en/docs/marketplace/platform-supported-content/widgets/markdown-viewer.md @@ -54,9 +54,9 @@ Optionally, you can configure the widget further: The widget renders its content inside a container with the `widget-markdown` CSS class. The following default styles are applied: -* **Tables** — rendered with borders, padding, and left-aligned text. Header cells have a light gray background -* **Images** — render at a maximum of 35% of the container width by default -* **Horizontal rules** — span the full width of the container +* **Tables** – Renders with borders, padding, and left-aligned text. Header cells have a light gray background. +* **Images** – Renders at a maximum of 35% of the container width by default. +* **Horizontal rules** – Spans the full width of the container. You can override these styles by targeting the `.widget-markdown` class in your custom SCSS or theme. diff --git a/content/en/docs/mendix-portal/maia-portal.md b/content/en/docs/mendix-portal/maia-portal.md index d2a0adef9ab..f40a437ff92 100644 --- a/content/en/docs/mendix-portal/maia-portal.md +++ b/content/en/docs/mendix-portal/maia-portal.md @@ -17,16 +17,16 @@ Mendix AI Assistance (Maia) refers to Mendix Platform capabilities that leverage These are the tasks you can achieve with Maia in Mendix Portal: -* **Maia Chat** — A built-in chat interface. For more information, refer to [Maia Chat](#maia-chat). -* **Maia Rewrite** — An AI-assisted writing aid integrated within the Mendix Community posting interface, which helps you ask properly formatted questions that are more likely to be answered. For more information on how to use it, refer to the [Asking Your Question](/community-tools/mendix-community/#asking-question) section in *Mendix Community*. -* **Maia Summarize** — An AI-assisted summarizing aid which condenses lengthy discussions for a question posted on Mendix Community into key points, making it easier for you to find solutions to your questions without having to plough through every single answer in the thread. For more information on how to use it, refer to the [Question Details](/community-tools/mendix-community/#question-details) section in *Mendix Community*. -* **Create Story with Maia** — An AI-assisted tool that helps you easily create stories. This option is available in the following places: +* **Maia Chat** – A built-in chat interface. For more information, refer to [Maia Chat](#maia-chat). +* **Maia Rewrite** – An AI-assisted writing aid integrated within the Mendix Community posting interface, which helps you ask properly formatted questions that are more likely to be answered. For more information on how to use it, refer to the [Asking Your Question](/community-tools/mendix-community/#asking-question) section in *Mendix Community*. +* **Maia Summarize** – An AI-assisted summarizing aid which condenses lengthy discussions for a question posted on Mendix Community into key points, making it easier for you to find solutions to your questions without having to plough through every single answer in the thread. For more information on how to use it, refer to the [Question Details](/community-tools/mendix-community/#question-details) section in *Mendix Community*. +* **Create Story with Maia** – An AI-assisted tool that helps you easily create stories. This option is available in the following places: * On the [Board](/developerportal/project-management/epics/board/) page * On the [Planning](/developerportal/project-management/epics/planning/) page * On the [Feedback](/developerportal/app-insights/feedback/#create-with-maia) page -* **Refine Story with Maia** — An AI-assisted tool that allows you to refine a previously created story with the help of Maia. This option is available for stories in the following places: +* **Refine Story with Maia** – An AI-assisted tool that allows you to refine a previously created story with the help of Maia. This option is available for stories in the following places: * On the [Board](/developerportal/project-management/epics/board/) page * On the [Planning](/developerportal/project-management/epics/planning/) page diff --git a/content/en/docs/mendix-portal/mendix-profile/_index.md b/content/en/docs/mendix-portal/mendix-profile/_index.md index af24f9ea946..6b2eb43b84e 100644 --- a/content/en/docs/mendix-portal/mendix-profile/_index.md +++ b/content/en/docs/mendix-portal/mendix-profile/_index.md @@ -48,7 +48,7 @@ The first profile card below the header presents your **Stats**, which are your {{< figure src="/attachments/community-tools/mendix-profile/stats.png" width="350" class="no-border" >}} {{% alert color="warning" %}} -Don't be disappointed if you have a low number of points — everyone in the Mendix community started that way, even our Expert developers. There are plenty of opportunities to gain more points and climb the [Leaderboard](#leaderboard). +Don't be disappointed if you have a low number of points—everyone in the Mendix community started that way, even our Expert developers. There are plenty of opportunities to gain more points and climb the [Leaderboard](#leaderboard). {{% /alert %}} ## Badges {#badges} diff --git a/content/en/docs/mendix-portal/mendix-profile/user-settings.md b/content/en/docs/mendix-portal/mendix-profile/user-settings.md index c1665e3fb0f..16ec0949f0b 100644 --- a/content/en/docs/mendix-portal/mendix-profile/user-settings.md +++ b/content/en/docs/mendix-portal/mendix-profile/user-settings.md @@ -68,7 +68,7 @@ Follow these steps to merge your profiles: 2. In the dialog box that is displayed, enter the email address of one of the accounts linked to the profile you want to transfer information from, then click **Next**. 3. Choose an email address to receive a verification code. Make sure this is an email address you have access to. This step is needed to verify that you are the owner of the Mendix profile you are trying to merge. 4. Enter the verification code you received via the selected email address. -5. After clicking **Verify**, you will see an overview of the profile information that will be deleted and kept. This includes earned points, achievements, certifications, and Academy progress that will be merged to your target profile. Note that credits cannot be merged — they remain on the accounts where they were earned. +5. After clicking **Verify**, you will see an overview of the profile information that will be deleted and kept. This includes earned points, achievements, certifications, and Academy progress that will be merged to your target profile. Note that credits cannot be merged—they remain on the accounts where they were earned. 6. To proceed with the merge, click **Merge**. You will be notified once the merge is completed. {{% alert color="info" %}} diff --git a/content/en/docs/private-platform/nist-controls/ac/pmp-nist-ac0204.md b/content/en/docs/private-platform/nist-controls/ac/pmp-nist-ac0204.md index fbcf4bf2f95..f44300d0923 100644 --- a/content/en/docs/private-platform/nist-controls/ac/pmp-nist-ac0204.md +++ b/content/en/docs/private-platform/nist-controls/ac/pmp-nist-ac0204.md @@ -29,13 +29,13 @@ The following controls are related to this control: ### Customer Responsibility -This control is implemented at the Identity Provider (IdP) level and is the responsibility of the customer's IdP administrator. For Private Mendix Platform integrated with the IdP through Single Sign-On (SSO), no additional implementation is required on the Private Mendix Platform side, as all account lifecycle events — including creation, modification, enabling, disabling, and removal — are managed and audited centrally by the IdP. +This control is implemented at the Identity Provider (IdP) level and is the responsibility of the customer's IdP administrator. For Private Mendix Platform integrated with the IdP through Single Sign-On (SSO), no additional implementation is required on the Private Mendix Platform side, as all account lifecycle events—including creation, modification, enabling, disabling, and removal—are managed and audited centrally by the IdP. ## Guidance ### Customer Responsibility -As an example IdP, Microsoft Entra ID natively captures all account lifecycle events — including creation, modification, enabling, disabling, and removal — through its built-in Audit Logs. If using Entra ID the control could be fulfilled as follows: +As an example IdP, Microsoft Entra ID natively captures all account lifecycle events—including creation, modification, enabling, disabling, and removal—through its built-in Audit Logs. If using Entra ID the control could be fulfilled as follows: * To meet the automated notification requirement, organizations can export audit logs to Azure Monitor or Microsoft Sentinel and configure alert rules with Action Groups to notify designated personnel or roles in real time. * For long-term log retention, audit logs should be forwarded to a Log Analytics Workspace or Azure Storage Account via Diagnostic Settings. diff --git a/content/en/docs/private-platform/nist-controls/ac/pmp-nist-ac0207.md b/content/en/docs/private-platform/nist-controls/ac/pmp-nist-ac0207.md index 15b0e9a8d64..6c826b09b3e 100644 --- a/content/en/docs/private-platform/nist-controls/ac/pmp-nist-ac0207.md +++ b/content/en/docs/private-platform/nist-controls/ac/pmp-nist-ac0207.md @@ -34,7 +34,7 @@ Privileged roles are organization-defined roles assigned to individuals that all Customers are responsible for defining and documenting their organization-specific privileged roles in alignment with job functions and the principle of least privilege, establishing formal processes for requesting, approving, and provisioning privileged access within Private Mendix Platform. They must conduct periodic access reviews to ensure role assignments remain appropriate, and supplement the platform's built-in monitoring audit logging tools to capture a complete trail of privileged role changes. -Additionally, customers are responsible for defining and enforcing actions when privileged access is no longer appropriate — including integrating role revocation with Identity Provider (IdP) workflows to ensure timely de-provisioning upon employee offboarding or role changes, and establishing internal SLAs to govern the timeliness of such actions. +Additionally, customers are responsible for defining and enforcing actions when privileged access is no longer appropriate—including integrating role revocation with Identity Provider (IdP) workflows to ensure timely de-provisioning upon employee offboarding or role changes, and establishing internal SLAs to govern the timeliness of such actions. ## Guidance diff --git a/content/en/docs/private-platform/nist-controls/ac/pmp-nist-ac0421.md b/content/en/docs/private-platform/nist-controls/ac/pmp-nist-ac0421.md index 755ff7193ac..4025f22341e 100644 --- a/content/en/docs/private-platform/nist-controls/ac/pmp-nist-ac0421.md +++ b/content/en/docs/private-platform/nist-controls/ac/pmp-nist-ac0421.md @@ -36,10 +36,10 @@ The customer (application developer or builder) is responsible for implementing The Private Mendix Platform provides the capability for application builders to implement custom microflows that precisely target and control information flows within their applications. Microflows can be designed to: -* Enforce data routing rules — ensuring information is only passed between authorized entities or modules. -* Implement conditional access logic — restricting data flows based on user roles, security contexts, or classification levels. -* Separate information flows by domain — isolating data between different business units, tenants, or sensitivity levels within the same application. -* Log and audit information flows — capturing flow events for monitoring and compliance purposes. +* Enforce data routing rules – Ensuring information is only passed between authorized entities or modules. +* Implement conditional access logic – Restricting data flows based on user roles, security contexts, or classification levels. +* Separate information flows by domain – Isolating data between different business units, tenants, or sensitivity levels within the same application. +* Log and audit information flows – Capturing flow events for monitoring and compliance purposes. Application builders are responsible for designing microflows that align with the physical and logical separation requirements defined by their organization's security policies. From a25ba6f9bf7aa6678b7737947ec194555c9fb60e Mon Sep 17 00:00:00 2001 From: ConnorLand <47385345+ConnorLand@users.noreply.github.com> Date: Wed, 2 Sep 2026 13:40:09 +0200 Subject: [PATCH 20/26] fix dashes --- .../nist-controls/sc/pmp-nist-sc2303.md | 18 ++++++------- .../nist-controls/sc/pmp-nist-sc2305.md | 2 +- .../nist-controls/sc/pmp-nist-sc28.md | 2 +- .../upgrading-from-10-to-11/_index.md | 2 +- .../atlas4-migration.md | 26 +++++++++---------- 5 files changed, 25 insertions(+), 25 deletions(-) diff --git a/content/en/docs/private-platform/nist-controls/sc/pmp-nist-sc2303.md b/content/en/docs/private-platform/nist-controls/sc/pmp-nist-sc2303.md index 6eb77c69b8a..09b062eebb8 100644 --- a/content/en/docs/private-platform/nist-controls/sc/pmp-nist-sc2303.md +++ b/content/en/docs/private-platform/nist-controls/sc/pmp-nist-sc2303.md @@ -65,12 +65,12 @@ The following is a screenshot of an active Private Mendix Platform database sess The cookie table explicitly documents XASSESSIONID as: * Source: Runtime (that is, generated server-side by the Mendix Runtime, not by the client) -* HttpOnly: true — inaccessible to JavaScript, preventing client-side session ID theft or +* HttpOnly: true – inaccessible to JavaScript, preventing client-side session ID theft or manipulation * Purpose: "Holds the ID of the user's session" * Duration: Session timeout (standard) or 1 year (offline sessions) -The fact that XASSESSIONID is Runtime-sourced and HttpOnly is direct evidence that only the system generates session identifiers — clients cannot inject or manipulate session ID values. This +The fact that XASSESSIONID is Runtime-sourced and HttpOnly is direct evidence that only the system generates session identifiers—clients cannot inject or manipulate session ID values. This satisfies the NIST requirement that "only session identifiers that are system-generated" are recognized. @@ -80,7 +80,7 @@ recognized. * Location: **General Runtime Settings > com.mendix.core.SessionIdCookieName** The setting only controls the cookie name (default: XASSESSIONID), not the session ID value. There is no setting that allows external parties to specify, seed, or influence the session identifier -value. The runtime generates the session ID value internally — the cookie name is the only +value. The runtime generates the session ID value internally—the cookie name is the only configurable element. This architectural constraint enforces system-only session ID generation. ### Session Persistence and Cluster-Wide Uniqueness @@ -88,11 +88,11 @@ configurable element. This architectural constraint enforces system-only session * Documentation: [Clustered Mendix Runtime](/refguide/clustered-mendix-runtime/) * Section: Session Handling in Clustered Environments -Sessions are always persisted in the database. In a clustered Private Mendix Platform deployment (multiple runtime pods), sessions are stored in the shared PostgreSQL database. This architecture requires each session identifier to be globally unique across all pods — any collision would result in a session conflict visible at the database level. The caching behavior (`SessionValidationTimeout`, default 30 seconds) confirms that session IDs are validated against the authoritative database store, not just local node memory. This design enforces uniqueness as a hard database constraint. +Sessions are always persisted in the database. In a clustered Private Mendix Platform deployment (multiple runtime pods), sessions are stored in the shared PostgreSQL database. This architecture requires each session identifier to be globally unique across all pods—any collision would result in a session conflict visible at the database level. The caching behavior (`SessionValidationTimeout`, default 30 seconds) confirms that session IDs are validated against the authoritative database store, not just local node memory. This design enforces uniqueness as a hard database constraint. ### FIPS 140-2 Mode: Cryptographic Randomness for Session ID Generation -[SC-13](/private-mendix-platform/nist-controls/sc-13/) confirms that `fips_enabled: 1` across all Mendix components including the Mendix Runtime. When FIPS 140-2 mode is active in the JVM, Java's SecureRandom is automatically bound to a FIPS-validated Deterministic Random Bit Generator (DRBG). Any session ID generated by the Runtime under FIPS mode is therefore produced using FIPS-validated cryptographic randomness. This directly satisfies the NIST SC-23(3) requirement for organization-defined randomness requirements — in a FedRAMP Moderate context, FIPS 140-2 validated randomness is the required standard. +[SC-13](/private-mendix-platform/nist-controls/sc-13/) confirms that `fips_enabled: 1` across all Mendix components including the Mendix Runtime. When FIPS 140-2 mode is active in the JVM, Java's SecureRandom is automatically bound to a FIPS-validated Deterministic Random Bit Generator (DRBG). Any session ID generated by the Runtime under FIPS mode is therefore produced using FIPS-validated cryptographic randomness. This directly satisfies the NIST SC-23(3) requirement for organization-defined randomness requirements—in a FedRAMP Moderate context, FIPS 140-2 validated randomness is the required standard. SC-13 lists the Runtime as FIPS-capable: *Mendix Runtime – Executes applications with FIPS-compliant cryptography for data at rest, data in transit, and digital signatures.* @@ -113,10 +113,10 @@ SessionValidationTimeout** * `SessionTimeout` (default 10 min): Sessions expire after inactivity. Expired session IDs are invalidated and cannot be reused. * `AbsoluteSessionTimeout` (introduced Mendix 11.4.0): Regardless of activity, sessions are -invalidated after a hard time limit — preventing indefinite reuse of any session identifier. +invalidated after a hard time limit, preventing indefinite reuse of any session identifier. * `SessionValidationTimeout` (default 30 sec): Cross-node session cache lifetime. Limits the window in which an invalidated session ID could still be served from a node cache. -Together these settings prevent session ID reuse — a previously valid identifier becomes +Together these settings prevent session ID reuse—a previously valid identifier becomes permanently invalid after expiry, satisfying the supplemental guidance goal to curtail adversaries from reusing previously valid session IDs. @@ -127,7 +127,7 @@ adversaries from reusing previously valid session IDs. Private Mendix Platform adds an admin-configurable layer on top of Runtime session management: -* `Maximum Concurrent Sessions Per User Account` — "if set to 0, logging in while another session is running ends the previous session and logs the user off" This setting, when configured, actively invalidates existing session IDs when a new session is created — ensuring that old session identifiers cannot persist alongside new ones. This is a PMP-specific control that augments the Runtime's uniqueness guarantee. +* `Maximum Concurrent Sessions Per User Account` – "if set to 0, logging in while another session is running ends the previous session and logs the user off" This setting, when configured, actively invalidates existing session IDs when a new session is created—ensuring that old session identifiers cannot persist alongside new ones. This is a PMP-specific control that augments the Runtime's uniqueness guarantee. ### Authentication Token: Additional HttpOnly Cryptographic Token @@ -140,4 +140,4 @@ In addition to `XASSESSIONID`, the Runtime issues a separate `authtoken` cookie: * HttpOnly: `true` * Duration: Token expiration period -This is a second server-generated cryptographic identifier stored separately from the session ID, used for long-lived authentication persistence. Both tokens are Runtime-generated, HttpOnly, and serve independent purposes — XASSESSIONID for the current session, authtoken for persistent authentication. This layered, server-generated approach is consistent with the SC-23(3) requirement for system-generated identifiers. +This is a second server-generated cryptographic identifier stored separately from the session ID, used for long-lived authentication persistence. Both tokens are Runtime-generated, HttpOnly, and serve independent purposes—XASSESSIONID for the current session, authtoken for persistent authentication. This layered, server-generated approach is consistent with the SC-23(3) requirement for system-generated identifiers. diff --git a/content/en/docs/private-platform/nist-controls/sc/pmp-nist-sc2305.md b/content/en/docs/private-platform/nist-controls/sc/pmp-nist-sc2305.md index 59da84f2771..cfcc45ee3bd 100644 --- a/content/en/docs/private-platform/nist-controls/sc/pmp-nist-sc2305.md +++ b/content/en/docs/private-platform/nist-controls/sc/pmp-nist-sc2305.md @@ -61,7 +61,7 @@ It is the customer's responsibility to: The following evidence demonstrates compliance with SC-23 (05): -* The Mendix Operator used by Private Mendix Platform [supports custom CA trust store — enforces org-defined CAs for all runtime/app TLS](/developerportal/deploy/standard-operator/#custom-tls). +* The Mendix Operator used by Private Mendix Platform [supports custom CA trust store—enforces org-defined CAs for all runtime/app TLS](/developerportal/deploy/standard-operator/#custom-tls). * The Admin mode of Private Mendix Platform [explicitly instructs](/private-mendix-platform/reference-guide/admin/system/#configure-import) configuring CA trust for internal HTTPS. * The Runtime [CACertificates setting pins CA trust for apps' outbound TLS](https://docs.mendix.com/refguide/custom-settings/#cacertificates). * Ingress TLS through `cert-manager/secretName` [restricts inbound sessions to approved CA certs](/developerportal/deploy/private-cloud-cluster/private-cloud-ingress-settings/advanced/) diff --git a/content/en/docs/private-platform/nist-controls/sc/pmp-nist-sc28.md b/content/en/docs/private-platform/nist-controls/sc/pmp-nist-sc28.md index b4474df3f1b..f19db8fa3ea 100644 --- a/content/en/docs/private-platform/nist-controls/sc/pmp-nist-sc28.md +++ b/content/en/docs/private-platform/nist-controls/sc/pmp-nist-sc28.md @@ -98,7 +98,7 @@ A report detailing Cryptographic Control and Key Management is available in [Con The Mendix Runtime custom settings expose a dedicated encryption-at-rest configuration for S3-backed file document storage: -* `com.mendix.storage.s3.EncryptionKeys` — List of keys which can be used to encrypt and decrypt data at rest in S3. The right key to decrypt the data with is automatically selected. +* `com.mendix.storage.s3.EncryptionKeys` – List of keys which can be used to encrypt and decrypt data at rest in S3. The right key to decrypt the data with is automatically selected. * Supports key rotation with multiple base64-encoded keys. * Mendix 11.6.0 and newer enforces AES as the only supported algorithm. diff --git a/content/en/docs/refguide/installation/upgrading-from-10-to-11/_index.md b/content/en/docs/refguide/installation/upgrading-from-10-to-11/_index.md index 70ba3212636..9cc1c61ce96 100644 --- a/content/en/docs/refguide/installation/upgrading-from-10-to-11/_index.md +++ b/content/en/docs/refguide/installation/upgrading-from-10-to-11/_index.md @@ -58,7 +58,7 @@ After the upgrade of your marketplace content, take the next steps: 1. Fix any deprecation warnings you see in development in Studio Pro, as well as in the Mendix Runtime using your console and browser console. These deprecations could include, but are not limited to, the following: * [Document Templates](/refguide/document-templates/): deprecated in 10.24 * [Dojo-based Mendix Client](/refguide/mendix-client/): deprecated in 11.0 - * Deprecated Java Version: depending on your Java version you may see errors — to resolve those errors, see [Java Version Migration](/refguide/java-version-migration/) + * Deprecated Java Version: depending on your Java version you may see errors—to resolve those errors, see [Java Version Migration](/refguide/java-version-migration/) 1. Review the major changes in the sections below. 1. Run your app, test all functionality, and ensure it works without error. 1. Back up or commit your Mendix 10 app so you can return to it if necessary. diff --git a/content/en/docs/refguide/installation/upgrading-from-10-to-11/atlas4-migration.md b/content/en/docs/refguide/installation/upgrading-from-10-to-11/atlas4-migration.md index 31d50fefeb9..273d63b673d 100644 --- a/content/en/docs/refguide/installation/upgrading-from-10-to-11/atlas4-migration.md +++ b/content/en/docs/refguide/installation/upgrading-from-10-to-11/atlas4-migration.md @@ -55,15 +55,15 @@ Always create a full backup of your Mendix project before beginning this migrati To understand the major change between v3 and v4, it is important to grasp the difference between SASS and CSS variables: -* **SASS (Syntactically Awesome Style Sheets)** — SASS is a **pre-processor**. This means your SASS code, including its variables, is processed and compiled into standard CSS **before** your application is deployed and run in a web browser. SASS variables are essentially placeholders that get replaced with their final values during this compilation step. The browser never "sees" a SASS variable. -* **CSS Custom Properties (CSS Variables)** — CSS variables are a native feature of web browsers. They are **interpreted at runtime**, meaning the browser understands and can directly work with them as your application is running. +* **SASS (Syntactically Awesome Style Sheets)** – SASS is a **pre-processor**. This means your SASS code, including its variables, is processed and compiled into standard CSS **before** your application is deployed and run in a web browser. SASS variables are essentially placeholders that get replaced with their final values during this compilation step. The browser never "sees" a SASS variable. +* **CSS Custom Properties (CSS Variables)** – CSS variables are a native feature of web browsers. They are **interpreted at runtime**, meaning the browser understands and can directly work with them as your application is running. This distinction is crucial because it unlocks powerful capabilities: -* **Dynamic Theming & White-labeling:** — Since CSS variables are interpreted at runtime, their values can be changed dynamically using JavaScript. This allows you to easily implement features like dark mode, user-selected themes, or even completely changed branding (white-labeling) without recompiling your application's SASS. -* **Integration with Mendix Design Properties** — Mendix Studio Pro's [design properties](/howto/front-end/extend-design-properties/) can directly set CSS variables or use them as values, providing a more intuitive and flexible way to customize components and layouts directly within the IDE. -* **Easier Debugging** — You can inspect and modify CSS variables directly in your browser's developer tools, which makes debugging styling issues more straightforward. -* **Modern Web Standards** — CSS variables align with the latest web technologies ensures better long-term compatibility, performance, and maintainability. +* **Dynamic Theming & White-labeling:** – Since CSS variables are interpreted at runtime, their values can be changed dynamically using JavaScript. This allows you to easily implement features like dark mode, user-selected themes, or even completely changed branding (white-labeling) without recompiling your application's SASS. +* **Integration with Mendix Design Properties** – Mendix Studio Pro's [design properties](/howto/front-end/extend-design-properties/) can directly set CSS variables or use them as values, providing a more intuitive and flexible way to customize components and layouts directly within the IDE. +* **Easier Debugging** – You can inspect and modify CSS variables directly in your browser's developer tools, which makes debugging styling issues more straightforward. +* **Modern Web Standards** – CSS variables align with the latest web technologies ensures better long-term compatibility, performance, and maintainability. {{% alert color="info" %}} CSS variables are supported in all modern browsers (Chrome, Firefox, Safari, Edge). Internet Explorer 11 does not support CSS variables. If you need to support IE11, you must maintain a separate fallback stylesheet or consider an alternate approach. @@ -240,9 +240,9 @@ The Atlas core theme (`themesource/atlas_core/web/themes/_theme-default.scss`) u Atlas 4 has backward compatibility which helps modules using SASS variables still function. However, there are some limitations due to how the two technologies work (pre-processor versus runtime interpretation): -* **`_theme-default.scss` (Atlas variables with default values)** — This file, located at `themesource/atlas_core/web/themes/_theme-default.scss`, defines the **official Atlas 4 CSS variables**. These are the variables your custom theme should aim to use. You will notice that many of these variables share names with their SASS predecessors (for example, `--brand-primary`, `--font-size-default`), but are now true CSS variables. +* **`_theme-default.scss` (Atlas variables with default values)** – This file, located at `themesource/atlas_core/web/themes/_theme-default.scss`, defines the **official Atlas 4 CSS variables**. These are the variables your custom theme should aim to use. You will notice that many of these variables share names with their SASS predecessors (for example, `--brand-primary`, `--font-size-default`), but are now true CSS variables. -* **`_css-variables-mappings.scss` (Compatibility file)** — This file, located at `themesource/atlas_core/web/_css-variables-mappings.scss`, defines a mixin `legacy-variables()`. When this mixin is included (which Atlas does internally), it creates **CSS variables with the same names as many of the old Atlas SASS variables**, and assigns them the **compiled value of those SASS variables** using SASS interpolation (`#{$variable}`). +* **`_css-variables-mappings.scss` (Compatibility file)** – This file, located at `themesource/atlas_core/web/_css-variables-mappings.scss`, defines a mixin `legacy-variables()`. When this mixin is included (which Atlas does internally), it creates **CSS variables with the same names as many of the old Atlas SASS variables**, and assigns them the **compiled value of those SASS variables** using SASS interpolation (`#{$variable}`). **Example from `_css-variables-mappings.scss`:** @@ -316,7 +316,7 @@ This section, where you convert `theme/web/custom-variables.scss`, is critical f + } ``` -1. Handle Imports (if any) — If your `custom-variables.scss` previously imported other SASS files that defined variables (for example `@import 'my-design-system/_colors.scss';`), those imported files also need to be updated to declare CSS variables within a `:root` block. +1. Handle Imports (if any) – If your `custom-variables.scss` previously imported other SASS files that defined variables (for example `@import 'my-design-system/_colors.scss';`), those imported files also need to be updated to declare CSS variables within a `:root` block. ### 2.3 Updating SASS Variable Usage in Your SCSS Files @@ -465,7 +465,7 @@ This section addresses common problems you might encounter during the Atlas 4 mi ### Issue: Styles Not Applying After Migration -**Symptoms** — Your application looks unstyled, or uses default colors instead of your custom theme's. +**Symptoms** – Your application looks unstyled, or uses default colors instead of your custom theme's. **Possible Causes & Solutions:** @@ -483,7 +483,7 @@ This section addresses common problems you might encounter during the Atlas 4 mi ### Issue: CSS Variables Not Recognized -**Symptoms** — Browser developer tools show `var(--variable-name)` as an invalid property value. +**Symptoms** – Browser developer tools show `var(--variable-name)` as an invalid property value. **Possible Causes & Solutions:** @@ -498,7 +498,7 @@ This section addresses common problems you might encounter during the Atlas 4 mi ### Issue: Colors Look Different After Migration -**Symptoms** — Colors do not match your previous Atlas 3 theme. +**Symptoms** – Colors do not match your previous Atlas 3 theme. **Possible Causes & Solutions:** @@ -513,7 +513,7 @@ This section addresses common problems you might encounter during the Atlas 4 mi ### Issue: Module Styling Inconsistent -**Symptoms** — Some pages or widgets look correct, others use default styling. +**Symptoms** – Some pages or widgets look correct, others use default styling. **Possible Causes & Solutions:** From 0df977bd19b5d037eacbdeb04f0b0aa287a396a9 Mon Sep 17 00:00:00 2001 From: ConnorLand <47385345+ConnorLand@users.noreply.github.com> Date: Wed, 2 Sep 2026 13:41:05 +0200 Subject: [PATCH 21/26] edit dashes --- .../maia-make/maia-mcp.md | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/content/en/docs/refguide/mendix-ai-assistance/maia-make/maia-mcp.md b/content/en/docs/refguide/mendix-ai-assistance/maia-make/maia-mcp.md index 305904a8603..40c064af2fc 100644 --- a/content/en/docs/refguide/mendix-ai-assistance/maia-make/maia-mcp.md +++ b/content/en/docs/refguide/mendix-ai-assistance/maia-make/maia-mcp.md @@ -15,7 +15,7 @@ This feature was released as part of [Maia Make](/refguide/maia-make/) capabilit To use Maia MCP Client, an internet connection and signing in to Studio Pro are required. {{% /alert %}} -Maia MCP Client, available from Studio Pro 11.8, helps you connect Maia to external [Model Context Protocol (MCP)](https://modelcontextprotocol.io/introduction) servers. Once connected, Maia can call tools provided by these servers during chat — for example, querying an external API, looking up design assets, or interacting with third-party services. You can find available MCP servers on the [MCP servers directory](https://modelcontextprotocol.io/examples). +Maia MCP Client, available from Studio Pro 11.8, helps you connect Maia to external [Model Context Protocol (MCP)](https://modelcontextprotocol.io/introduction) servers. Once connected, Maia can call tools provided by these servers during chat—for example, querying an external API, looking up design assets, or interacting with third-party services. You can find available MCP servers on the [MCP servers directory](https://modelcontextprotocol.io/examples). For information on the current limitations, see the [Limitations](#limitations) section below. @@ -49,23 +49,23 @@ Tools from new preset connections are disabled by default. Enable the tools you To add a server, click **+ Add MCP Server**, fill in the following fields, and click **OK**: -* **Server Name** — A display name. Must be unique among your configured servers. -* **URL** — The server endpoint. Must use `https://` or `http://`. -* **Connection type** — **HTTP (Streamable)** for most servers, or **SSE (Legacy)** for older servers that use Server-Sent Events instead of Streamable HTTP. -* **Authentication** — See the [Authentication](#authentication) section below. +* **Server Name** – A display name. Must be unique among your configured servers. +* **URL** – The server endpoint. Must use `https://` or `http://`. +* **Connection type** – **HTTP (Streamable)** for most servers, or **SSE (Legacy)** for older servers that use Server-Sent Events instead of Streamable HTTP. +* **Authentication** – See the [Authentication](#authentication) section below. #### Authentication {#authentication} Choose how Studio Pro authenticates with the MCP server: -* **No Auth** — select this for servers that do not require credentials. -* **Bearer Token** — paste an API token or personal access token. The token is stored securely and is not exposed after entry. -* **Mendix Identity** — authenticates using the Mendix account you are already signed in to Studio Pro with. No extra credentials are needed. Use this option when connecting to MCP services provided by Mendix. -* **OAuth 2.1** — a browser window opens so you can authorize Studio Pro with the server's provider. Two optional fields appear: - * **Client ID** — required if the server does not support automatic client registration. - * **Client Secret** — required by some providers (for example, GitHub). +* **No Auth** – select this for servers that do not require credentials. +* **Bearer Token** – paste an API token or personal access token. The token is stored securely and is not exposed after entry. +* **Mendix Identity** – authenticates using the Mendix account you are already signed in to Studio Pro with. No extra credentials are needed. Use this option when connecting to MCP services provided by Mendix. +* **OAuth 2.1** – a browser window opens so you can authorize Studio Pro with the server's provider. Two optional fields appear: + * **Client ID** – required if the server does not support automatic client registration. + * **Client Secret** – required by some providers (for example, GitHub). -Most major providers — including GitHub and Figma — do not support automatic client registration. For these, you must first create an OAuth application in the provider's developer portal and then enter the **Client ID** (and **Client Secret** if required). +Most major providers—including GitHub and Figma—do not support automatic client registration. For these, you must first create an OAuth application in the provider's developer portal and then enter the **Client ID** (and **Client Secret** if required). ##### Example: Connecting to GitHub Copilot MCP {#github-example} From f5c19874486a60b1840a3320c25e099e48d7cf76 Mon Sep 17 00:00:00 2001 From: ConnorLand <47385345+ConnorLand@users.noreply.github.com> Date: Wed, 2 Sep 2026 13:48:41 +0200 Subject: [PATCH 22/26] fix dashes --- .../maia-make/maia-mcp.md | 14 +++---- .../maia-make/maia-web-fetch.md | 16 ++++---- .../maia-make/studio-pro-mcp-server.md | 6 +-- .../mobile/best-practices/compound-object.md | 2 +- .../building-efficient-mobile-apps/hermes.md | 8 ++-- .../network-request-timeout.md | 4 +- .../native-styling.md | 2 +- .../navigation/_index.md | 2 +- .../build-mendix-native-appcircle.md | 24 +++++------ .../pwa-wrapper/pwa-wrapper-security.md | 8 ++-- .../pwa-wrapper-troubleshooting.md | 6 +-- .../use-min-older-sp.md | 6 +-- .../prerequisites.md | 2 +- .../progressive-web-app/_index.md | 2 +- .../push-notifications/notif-pwa-wrapper.md | 4 +- ...-google-firebase-cloud-messaging-server.md | 2 +- .../parse-and-format-date-function-calls.md | 2 +- .../accessibility-best-practices.md | 16 ++++---- .../consistency-errors-pages.md | 2 +- .../associations/association-storage.md | 2 +- .../generalization-and-association.md | 2 +- .../server-side-paging.md | 4 +- .../external-database-connector/_index.md | 40 +++++++++---------- 23 files changed, 88 insertions(+), 88 deletions(-) diff --git a/content/en/docs/refguide/mendix-ai-assistance/maia-make/maia-mcp.md b/content/en/docs/refguide/mendix-ai-assistance/maia-make/maia-mcp.md index 40c064af2fc..f6f5b0c43d0 100644 --- a/content/en/docs/refguide/mendix-ai-assistance/maia-make/maia-mcp.md +++ b/content/en/docs/refguide/mendix-ai-assistance/maia-make/maia-mcp.md @@ -71,15 +71,15 @@ Most major providers—including GitHub and Figma—do not support automatic cli 1. Go to [GitHub Developer Settings](https://github.com/settings/developers) and click **New OAuth App**. 2. Fill in the following information: - * **Application name** — for example, `Mendix Studio Pro` - * **Homepage URL** — for example, `https://mendix.com` - * **Authorization callback URL** — `http://localhost:44380/mcp/oauth/callback` (GitHub allows only one; see [Callback URL](#callback-url)) + * **Application name** – for example, `Mendix Studio Pro` + * **Homepage URL** – for example, `https://mendix.com` + * **Authorization callback URL** – `http://localhost:44380/mcp/oauth/callback` (GitHub allows only one; see [Callback URL](#callback-url)) 3. Click **Register application**, then copy the **Client ID**. -4. Click **Generate a new client secret** and copy it — GitHub shows it only once. +4. Click **Generate a new client secret** and copy it – GitHub shows it only once. 5. In Studio Pro, add a server with the following details: - * **URL** — `https://api.githubcopilot.com/mcp/` - * **Authentication** — **OAuth 2.1** - * **Client ID** and **Client Secret** — from the steps above + * **URL** – `https://api.githubcopilot.com/mcp/` + * **Authentication** – **OAuth 2.1** + * **Client ID** and **Client Secret** – from the steps above 6. Click **Add**, authorize in the browser, and the connection completes. {{% alert color="info" %}} diff --git a/content/en/docs/refguide/mendix-ai-assistance/maia-make/maia-web-fetch.md b/content/en/docs/refguide/mendix-ai-assistance/maia-make/maia-web-fetch.md index 90306b3b91b..b7cda0a02af 100644 --- a/content/en/docs/refguide/mendix-ai-assistance/maia-make/maia-web-fetch.md +++ b/content/en/docs/refguide/mendix-ai-assistance/maia-make/maia-web-fetch.md @@ -40,19 +40,19 @@ Maia can retrieve the following types of content: Maia cannot access the following: -* **Internal or private addresses** — Maia does not fetch from localhost, private IP ranges (like 192.168.x.x or 10.0.0.x), or your local machine's internal services. -* **Binary content** — Images, videos, PDFs, and archives cannot be fetched. If a URL serves binary content, Maia is not able to read it. -* **Very large responses** — Responses larger than 1 MB are rejected. -* **Non-HTTPS URLs** — Only secure HTTPS connections are supported. +* **Internal or private addresses** – Maia does not fetch from localhost, private IP ranges (like 192.168.x.x or 10.0.0.x), or your local machine's internal services. +* **Binary content** – Images, videos, PDFs, and archives cannot be fetched. If a URL serves binary content, Maia is not able to read it. +* **Very large responses** – Responses larger than 1 MB are rejected. +* **Non-HTTPS URLs** – Only secure HTTPS connections are supported. ## Troubleshooting {#troubleshooting} If Maia says it cannot fetch a URL, check the following: -* **Is it a public URL?** — The URL must be accessible without authentication and must point to a public server, not an internal service. -* **Does the server block automated access?** — Some servers reject requests from automated clients. Maia may not be able to bypass these restrictions. -* **Is it binary content?** — If the URL returns images, PDFs, or other non-text formats, Maia cannot process it. -* **Is the response too large?** — Very large pages or files may exceed the size limit. +* **Is it a public URL?** – The URL must be accessible without authentication and must point to a public server, not an internal service. +* **Does the server block automated access?** – Some servers reject requests from automated clients. Maia may not be able to bypass these restrictions. +* **Is it binary content?** – If the URL returns images, PDFs, or other non-text formats, Maia cannot process it. +* **Is the response too large?** – Very large pages or files may exceed the size limit. ## Read More diff --git a/content/en/docs/refguide/mendix-ai-assistance/maia-make/studio-pro-mcp-server.md b/content/en/docs/refguide/mendix-ai-assistance/maia-make/studio-pro-mcp-server.md index dd721ae08c3..ade00534015 100644 --- a/content/en/docs/refguide/mendix-ai-assistance/maia-make/studio-pro-mcp-server.md +++ b/content/en/docs/refguide/mendix-ai-assistance/maia-make/studio-pro-mcp-server.md @@ -19,8 +19,8 @@ Studio Pro MCP Server enables bring your own agent (BYO Agent) capabilities, all It has the following key highlights: -* Full Maia feature parity — The MCP Server exposes the same capabilities that Maia offers within Studio Pro. -* Live updates — Any changes made through Maia via the MCP Server are reflected in real time within Studio Pro. +* Full Maia feature parity – The MCP Server exposes the same capabilities that Maia offers within Studio Pro. +* Live updates – Any changes made through Maia via the MCP Server are reflected in real time within Studio Pro. {{% alert color="info" %}} When you connect external agents or AI tools to Studio Pro's MCP Server, those tools consume tokens from your own LLM provider account each time they interact with Maia. Because these requests occur outside of the Mendix environment, usage and billing details are managed through your LLM provider's dashboard rather than within Mendix. @@ -43,7 +43,7 @@ Replace `` with your preferred server name and `` with the port conf The following limitations apply only to Studio Pro 11.10: * The MCP Server cannot generate pages. -* Web fetch is blocking — When a web fetch tool call is performed by the MCP Client, the operation awaits user approval in Studio Pro. For more information, see [Maia Web Fetch](/refguide/maia-web-fetch/). +* Web fetch is blocking – When a web fetch tool call is performed by the MCP Client, the operation awaits user approval in Studio Pro. For more information, see [Maia Web Fetch](/refguide/maia-web-fetch/). ## Read More diff --git a/content/en/docs/refguide/mobile/best-practices/compound-object.md b/content/en/docs/refguide/mobile/best-practices/compound-object.md index 8c2127b4c7e..e50033786ea 100644 --- a/content/en/docs/refguide/mobile/best-practices/compound-object.md +++ b/content/en/docs/refguide/mobile/best-practices/compound-object.md @@ -53,7 +53,7 @@ To implement this pattern, do the following: To improve your apps further, consult the following recommendations: * The after commit event handlers used in the best practice can lead to performance issues if the target object or a related object changes frequently. In this case, use a designated update microflow instead of after commit event handlers. -* If associations to related objects can be empty, be sure to handle this in the update microflow — for example by using the expression `if ($Store=empty) then '-' else $Store/Name`. +* If associations to related objects can be empty, be sure to handle this in the update microflow—for example by using the expression `if ($Store=empty) then '-' else $Store/Name`. * It is often useful for compound objects to store aggregate values, such as the number of related objects. These can be computed using the appropriate **List Aggregation** action in the update microflow. * It is assumed that compound objects are not changed by the offline client. If this is needed, combine the compound object with a [Request Object](/refguide/mobile/best-practices/request-object/). * Combine the compound object with [Incremental Synchronization](/refguide/mobile/best-practices/incremental-synchronization/) to further increase synchronization performance. diff --git a/content/en/docs/refguide/mobile/building-efficient-mobile-apps/hermes.md b/content/en/docs/refguide/mobile/building-efficient-mobile-apps/hermes.md index 84cd146af8e..7c42fadb2b3 100644 --- a/content/en/docs/refguide/mobile/building-efficient-mobile-apps/hermes.md +++ b/content/en/docs/refguide/mobile/building-efficient-mobile-apps/hermes.md @@ -9,7 +9,7 @@ aliases: ## Introduction -As Mendix applications grow in complexity and scale, optimizing performance is essential for a smooth user experience. The Hermes engine, an optimized JavaScript engine designed for React Native, offers significant performance enhancements — particularly in terms of application startup time and runtime efficiency. This guide will introduce the Hermes engine, describe its benefits, and explain its impact on code. +As Mendix applications grow in complexity and scale, optimizing performance is essential for a smooth user experience. The Hermes engine, an optimized JavaScript engine designed for React Native, offers significant performance enhancements—particularly in terms of application startup time and runtime efficiency. This guide will introduce the Hermes engine, describe its benefits, and explain its impact on code. {{% alert color="info" %}} Hermes is enabled for all projects with no option to disable it. @@ -19,9 +19,9 @@ Hermes is enabled for all projects with no option to disable it. The Hermes engine can provide substantial performance improvements for Mendix applications. Key benefits include: -* **Faster Startup Times** — Hermes compiles JavaScript into bytecode ahead of time, reducing the time used to parse and execute JavaScript at startup. -* **Reduced Memory Usage** — Hermes features efficient garbage collection and memory management, which can lead to lower memory consumption. -* **Improved Execution Speed** — Hermes optimizes the execution of JavaScript, enhancing the performance of complex operations and interactions within the application. +* **Faster Startup Times** – Hermes compiles JavaScript into bytecode ahead of time, reducing the time used to parse and execute JavaScript at startup. +* **Reduced Memory Usage** – Hermes features efficient garbage collection and memory management, which can lead to lower memory consumption. +* **Improved Execution Speed** – Hermes optimizes the execution of JavaScript, enhancing the performance of complex operations and interactions within the application. These performance gains are particularly noticeable in applications with extensive JavaScript logic or large data sets. diff --git a/content/en/docs/refguide/mobile/building-efficient-mobile-apps/network-request-timeout.md b/content/en/docs/refguide/mobile/building-efficient-mobile-apps/network-request-timeout.md index 0bbf315c90e..f2a7008035b 100644 --- a/content/en/docs/refguide/mobile/building-efficient-mobile-apps/network-request-timeout.md +++ b/content/en/docs/refguide/mobile/building-efficient-mobile-apps/network-request-timeout.md @@ -25,5 +25,5 @@ Exclusions ensure that complex operations (like data synchronization and server- The following operations are excluded from the configured timeout settings: -* **Data Synchronization Operations** — all `synchronize_objects` calls -* **Microflow Runtime Operations** — all `runtimeOperation` calls +* **Data Synchronization Operations** – all `synchronize_objects` calls +* **Microflow Runtime Operations** – all `runtimeOperation` calls diff --git a/content/en/docs/refguide/mobile/designing-mobile-user-interfaces/native-styling.md b/content/en/docs/refguide/mobile/designing-mobile-user-interfaces/native-styling.md index c09c4a116a3..0fce35b9f95 100644 --- a/content/en/docs/refguide/mobile/designing-mobile-user-interfaces/native-styling.md +++ b/content/en/docs/refguide/mobile/designing-mobile-user-interfaces/native-styling.md @@ -27,7 +27,7 @@ For each app, styling is stored in the **theme** and **themesource** folders. Fr These folders have strict protocols: * Users should only add or change styling in **theme/native** or in their own user-defined module **themesource/your-module/native** folder (if they plan to create a reusable theming module) -* The **native** folder has two files: *main.js* and *custom-variables.js* — when changing the styling, always copy the variable you want to change from *themesource/atlas_core/native/variables.js* to *theme/native/custom-variables.js* +* The **native** folder has two files: *main.js* and *custom-variables.js*—when changing the styling, always copy the variable you want to change from *themesource/atlas_core/native/variables.js* to *theme/native/custom-variables.js* * The *custom-variables.js* file will overwrite the *variables.js* file—do not change anything in the **themesource/atlas_core/native** folder directly, as this makes updating Atlas more difficult * Any variables you want to change or add should be put in *custom-variables.js* * Any classes you want to change or add should be put in *theme/native/main.js* or in your own user-defined module's *themesource/your-module/native/main.js*. diff --git a/content/en/docs/refguide/mobile/designing-mobile-user-interfaces/navigation/_index.md b/content/en/docs/refguide/mobile/designing-mobile-user-interfaces/navigation/_index.md index 48ec31cf9d5..b7ccc726d67 100644 --- a/content/en/docs/refguide/mobile/designing-mobile-user-interfaces/navigation/_index.md +++ b/content/en/docs/refguide/mobile/designing-mobile-user-interfaces/navigation/_index.md @@ -69,7 +69,7 @@ There are only a few steps needed to be done to create a **Sidebar** in your nat {{< figure src="/attachments/refguide/mobile/native-mobile/native-navigation/includesidebar.png" alt="Include a sidebar" >}} -Then, decide which screen in your project will have a **Sidebar** and apply the appropriate layout — **NativePhone_SideMenu** in our case: +Then, decide which screen in your project will have a **Sidebar** and apply the appropriate layout—**NativePhone_SideMenu** in our case: {{< figure src="/attachments/refguide/mobile/native-mobile/native-navigation/selectsidebarlayout.png" alt="Select a sidebar layout" >}} diff --git a/content/en/docs/refguide/mobile/distributing-mobile-apps/building-native-apps/build-mendix-native-appcircle.md b/content/en/docs/refguide/mobile/distributing-mobile-apps/building-native-apps/build-mendix-native-appcircle.md index 052579578d0..fb1399d4687 100644 --- a/content/en/docs/refguide/mobile/distributing-mobile-apps/building-native-apps/build-mendix-native-appcircle.md +++ b/content/en/docs/refguide/mobile/distributing-mobile-apps/building-native-apps/build-mendix-native-appcircle.md @@ -47,8 +47,8 @@ To add a certificate, do the following: 1. Go to the **Signing Identities** module from the left navigation menu and select **Apple Certificates**. 1. Click **Add New** and choose one of the following: - * **Create an Apple Certificate** — Generates a certificate via your App Store Connect API Key. Select a Certificate Signing Request (CSR) or generate one, then choose the certificate type (Apple Distribution). - * **Upload Certificate Bundle (.p12)** — Upload a pre-existing *.p12* file directly. + * **Create an Apple Certificate** – Generates a certificate via your App Store Connect API Key. Select a Certificate Signing Request (CSR) or generate one, then choose the certificate type (Apple Distribution). + * **Upload Certificate Bundle (.p12)** – Upload a pre-existing *.p12* file directly. {{< figure src="/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/apple-certificates.png" alt="Repository connection options in Appcircle" class="no-border" >}} @@ -62,9 +62,9 @@ To add a provisioning profile, do the following: 1. In the **Signing Identities** module, select **Apple Profiles**. 1. Enact one of the following methods: - * **Register a New Profile** — Select a distribution method (App Store, Ad Hoc, or Enterprise), an App ID, and a certificate. Appcircle registers the profile on the Apple Developer Portal automatically. - * **Fetch from App Store Connect** — Select **Get Provisioning Profiles from App Store Connect** and import profiles from your account. - * **Upload manually** — Upload one or more *.mobileprovision* files. Profiles are automatically matched with certificates; a green checkmark indicates a match. + * **Register a New Profile** – Select a distribution method (App Store, Ad Hoc, or Enterprise), an App ID, and a certificate. Appcircle registers the profile on the Apple Developer Portal automatically. + * **Fetch from App Store Connect** – Select **Get Provisioning Profiles from App Store Connect** and import profiles from your account. + * **Upload manually** – Upload one or more *.mobileprovision* files. Profiles are automatically matched with certificates; a green checkmark indicates a match. {{< figure src="/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/apple-profiles.png" alt="Repository connection options in Appcircle" class="no-border" >}} @@ -72,12 +72,12 @@ To add a provisioning profile, do the following: In the **Build** module, open the iOS build profile and go to **Build Configuration**. Under the **Signing** section, choose one of the following signing methods: -* **Automatic Signing** — Appcircle automatically handles provisioning profile management during the build. This process requires the following prerequisites be met: +* **Automatic Signing** – Appcircle automatically handles provisioning profile management during the build. This process requires the following prerequisites be met: * Xcode 13 or above * A **Developer** or **Distribution** certificate * An **App Store Connect API key** (configured in the **API Integrations** settings) * The bundle identifier must already be registered in your Apple Developer account -* **Manual Signing** — You manually select the certificate and provisioning profile for each build configuration. This gives you full control over which profiles are used. Select your bundle identifier from the dropdown, then choose the provisioning profile you added in the **Signing Identities** module. The certificate will be automatically matched based on the profile. +* **Manual Signing** – You manually select the certificate and provisioning profile for each build configuration. This gives you full control over which profiles are used. Select your bundle identifier from the dropdown, then choose the provisioning profile you added in the **Signing Identities** module. The certificate will be automatically matched based on the profile. {{< figure src="/attachments/refguide/mobile/distributing-mobile-apps/building-native-apps/appcircle/assign-code-signing.png" alt="Repository connection options in Appcircle" class="no-border" >}} @@ -128,8 +128,8 @@ Environment variables let you configure build-time and runtime settings without Appcircle provides two levels of environment variable configuration: -* **Global environment variables** — shared across all build profiles in your organization -* **Build profile environment variables** — specific to a single build profile +* **Global environment variables** – Shared across all build profiles in your organization. +* **Build profile environment variables** – Specific to a single build profile. ### Common Use Cases @@ -172,8 +172,8 @@ To configure environment variables for a specific build profile, do the followin Environment variables configured in Appcircle are available during the build process. How you access them depends on your app's configuration: -* **React Native environment files** — If your app uses *.env* files or libraries like `react-native-config`, you can pass Appcircle environment variables to these configuration files using custom build scripts. -* **Build scripts** — Environment variables are accessible in workflow steps and custom scripts using standard environment variable syntax (for example, `$RUNTIME_URL` in shell scripts). +* **React Native environment files** – If your app uses *.env* files or libraries like `react-native-config`, you can pass Appcircle environment variables to these configuration files using custom build scripts. +* **Build scripts** – Environment variables are accessible in workflow steps and custom scripts using standard environment variable syntax (for example, `$RUNTIME_URL` in shell scripts). For more details on environment variable management and advanced configurations, see [Appcircle's environment variables documentation](https://docs.appcircle.io/environment-variables/). @@ -192,7 +192,7 @@ Appcircle has 70+ native pipeline integration steps. You can see all steps in th {{% /alert %}} {{% alert color="info" %}} -Older versions of Mendix might require a specific Node version. The Appcircle workflow already includes a [Node Install](https://docs.appcircle.io/workflows/react-native-specific-workflow-steps/node-install) step — simply update the version number there to match the version in the **.nvmrc** file of your app's generated native template. +Older versions of Mendix might require a specific Node version. The Appcircle workflow already includes a [Node Install](https://docs.appcircle.io/workflows/react-native-specific-workflow-steps/node-install) step—simply update the version number there to match the version in the **.nvmrc** file of your app's generated native template. {{% /alert %}} ### Set Up Automatic Builds diff --git a/content/en/docs/refguide/mobile/distributing-mobile-apps/pwa-wrapper/pwa-wrapper-security.md b/content/en/docs/refguide/mobile/distributing-mobile-apps/pwa-wrapper/pwa-wrapper-security.md index d45d435e93f..98f96a9820b 100644 --- a/content/en/docs/refguide/mobile/distributing-mobile-apps/pwa-wrapper/pwa-wrapper-security.md +++ b/content/en/docs/refguide/mobile/distributing-mobile-apps/pwa-wrapper/pwa-wrapper-security.md @@ -60,9 +60,9 @@ PWA Wrapper needs a Java runtime to execute the build tools listed above. It sea | Step | Method | | --- | --- | | 1 | Read the `JAVA_HOME` environment variable, if set | -| 2 | Run `/usr/libexec/java_home` — the operating-system JDK registry | +| 2 | Run `/usr/libexec/java_home`—the operating-system JDK registry | | 3 | Resolve `java` on the shell `PATH` (equivalent to `which java`) | -| 4 | Scan `/Library/Java/JavaVirtualMachines/` — the standard directory where installers such as Adoptium/Temurin, Oracle, and Azul place JDKs | +| 4 | Scan `/Library/Java/JavaVirtualMachines/`—the standard directory where installers such as Adoptium/Temurin, Oracle, and Azul place JDKs | ### Windows Method @@ -74,9 +74,9 @@ If no usable JDK is found, the build fails with an error that instructs the user PWA Wrapper needs to locate the Mendix Studio Pro installation to access the runtime and SDK files it uses during the build: -* macOS — The extension scans `/Applications/` and `~/Applications/` for app bundles whose names match "Mendix Studio Pro" or "Studio Pro". Among all matches that contain a valid `runtime/` subdirectory, it selects the one with the highest version number. +* macOS – The extension scans `/Applications/` and `~/Applications/` for app bundles whose names match "Mendix Studio Pro" or "Studio Pro". Among all matches that contain a valid `runtime/` subdirectory, it selects the one with the highest version number. -* Windows — Auto-detection is not performed. The Studio Pro path must be provided explicitly via a CLI argument, a `.env` file, or a `.launch` file. +* Windows – Auto-detection is not performed. The Studio Pro path must be provided explicitly via a CLI argument, a `.env` file, or a `.launch` file. ## Summary for Reviewers diff --git a/content/en/docs/refguide/mobile/distributing-mobile-apps/pwa-wrapper/pwa-wrapper-troubleshooting.md b/content/en/docs/refguide/mobile/distributing-mobile-apps/pwa-wrapper/pwa-wrapper-troubleshooting.md index 77fb27d4bcf..a8381a8a082 100644 --- a/content/en/docs/refguide/mobile/distributing-mobile-apps/pwa-wrapper/pwa-wrapper-troubleshooting.md +++ b/content/en/docs/refguide/mobile/distributing-mobile-apps/pwa-wrapper/pwa-wrapper-troubleshooting.md @@ -15,7 +15,7 @@ This page describes known issues you may encounter when building or testing PWA ### App Cannot Connect to localhost on a Physical Device{#android-localhost} -* Symptom — When you set the runtime URL to a localhost address (for example, `http://localhost:8080`) and install the app on a physical Android device, the app fails to load and shows the following error: +* Symptom – When you set the runtime URL to a localhost address (for example, `http://localhost:8080`) and install the app on a physical Android device, the app fails to load and shows the following error: ``` Page Load Error @@ -24,12 +24,12 @@ This page describes known issues you may encounter when building or testing PWA {{< figure src="/attachments/refguide/mobile/pwa-wrapper/localhost-cache-miss-error.png" alt="Page Load Error showing net::ERR_CACHE_MISS on Android" max-width="400px" >}} -* Cause — Two things are required for a physical Android device to reach a localhost server on your machine: +* **Cause** – Two things are required for a physical Android device to reach a localhost server on your machine: * The app must have the `INTERNET` permission. Without it, the Android OS blocks all outbound network traffic. * The device must have a port forwarding rule from its own localhost to your machine's localhost. Android devices do not forward ports automatically. -* Solution — To solve this issue, do the following: +* **Solution** – To solve this issue, do the following: 1. In the PWA Wrapper builder, go to the **Permissions** step and enable the **INTERNET** permission (for general guidance on permissions, see [Build PWA Wrapper Apps](/refguide/mobile/distributing-mobile-apps/pwa-wrapper/build-pwa-wrapper-apps/). 1. Connect the Android device to your machine via USB and make sure [USB debugging](https://developer.android.com/studio/debug/dev-options) is enabled on the device. diff --git a/content/en/docs/refguide/mobile/distributing-mobile-apps/use-min-older-sp.md b/content/en/docs/refguide/mobile/distributing-mobile-apps/use-min-older-sp.md index d0d7ed3721b..258a8a25d99 100644 --- a/content/en/docs/refguide/mobile/distributing-mobile-apps/use-min-older-sp.md +++ b/content/en/docs/refguide/mobile/distributing-mobile-apps/use-min-older-sp.md @@ -334,7 +334,7 @@ The file `sample_apps.json` file describes each sample app and contains informat to update the Android developer app bundle and assets: 1. Unzip `sampleapps.zip`. -1. Find the folder for the sample app you want to update — reference `sample_apps.json`. +1. Find the folder for the sample app you want to update—reference `sample_apps.json`. 1. `cd` to this folder. 1. In (A), replace `index.android.bundle` with the file located in [Android Bundle](#android-bundle). 1. In (A), delete all other folders (and any files) and replace with contents located in [Android Assets](#android-assets). @@ -350,7 +350,7 @@ In `ios > DeveloperApp > SampleApps > Bundles` there are folders that represent The folder name can be arbitrary. The `config.json` file describes each sample app, and each object's `id` property matches the folder name and provides details about the sample app. Follow the steps below to update the iOS developer app bundle and assets: -1. Find the folder for the sample app you want to update — reference `config.json`. +1. Find the folder for the sample app you want to update—reference `config.json`. 1. `cd` to this folder 1. Replace the `index.bundle` file with the updated one from [iOS Bundle](#ios-bundle). Note: make sure to rename the filename to *index.bundle*, as it is usually **index.ios.bundle**. 1. Clean the contents of the `assets` folder. @@ -374,7 +374,7 @@ If using Native Builder UI (which also creates native apps to use for testing), 1. (App capabilities) Disable all capabilities. 1. (App capabilities) If your project contains a widget or action that requires a Google API key, add it. 1. (Configure app locally) Enter in a version number. -1. (Configure app locally) Enter in a runtime URL — if you want to test the native app, enter an appropriate runtime URL. +1. (Configure app locally) Enter in a runtime URL—if you want to test the native app, enter an appropriate runtime URL. 1. Click **Configure locally**. The native app's source code will be in the disk location selected in step 3. In your Mendix Project directory, in diff --git a/content/en/docs/refguide/mobile/getting-started-with-mobile/prerequisites.md b/content/en/docs/refguide/mobile/getting-started-with-mobile/prerequisites.md index 7efc49ddef2..2644ab7a141 100644 --- a/content/en/docs/refguide/mobile/getting-started-with-mobile/prerequisites.md +++ b/content/en/docs/refguide/mobile/getting-started-with-mobile/prerequisites.md @@ -60,7 +60,7 @@ The Make It Native app allows developers to preview, test, and debug native mobi Depending on your app's Mendix version, you must use a different version of the Make It Native app: * Mendix 11: - * **11.11.0 - 11.x.x** — Use the latest version of Make It Native ([Android](https://play.google.com/store/apps/details?id=com.mendix.developerapp.mx10), [iOS](https://apps.apple.com/us/app/make-it-native/id6450037464)) + * **11.11.0 - 11.x.x** – Use the latest version of Make It Native ([Android](https://play.google.com/store/apps/details?id=com.mendix.developerapp.mx10), [iOS](https://apps.apple.com/us/app/make-it-native/id6450037464)) * **11.6.x** - MTS version of Make It Native ([Android](https://play.google.com/apps/testing/com.mendix.developerapp.mx10), [iOS](https://testflight.apple.com/join/bQfLf27w)) * **Other** – [Creating a Custom Developer App](/refguide/mobile/distributing-mobile-apps/building-native-apps/how-to-devapps/) or [Building Your Own Make It Native App](https://github.com/mendix/make-it-native) diff --git a/content/en/docs/refguide/mobile/introduction-to-mobile-technologies/progressive-web-app/_index.md b/content/en/docs/refguide/mobile/introduction-to-mobile-technologies/progressive-web-app/_index.md index 93b8a5ec63c..ed618ed67e4 100644 --- a/content/en/docs/refguide/mobile/introduction-to-mobile-technologies/progressive-web-app/_index.md +++ b/content/en/docs/refguide/mobile/introduction-to-mobile-technologies/progressive-web-app/_index.md @@ -140,7 +140,7 @@ Browsers offer access to device features through APIs that can be leveraged in P This table lists the most used device features and APIs, and also documents their compatibility with common browsers: -**Legend** — The symbols below correspond to the following definitions: +**Legend** – The symbols below correspond to the following definitions: * Fully compatible: {{< icon name="checkmark-circle-filled" color="green" >}} diff --git a/content/en/docs/refguide/mobile/using-mobile-capabilities/push-notifications/notif-pwa-wrapper.md b/content/en/docs/refguide/mobile/using-mobile-capabilities/push-notifications/notif-pwa-wrapper.md index ae8492cc658..1e2c64517e5 100644 --- a/content/en/docs/refguide/mobile/using-mobile-capabilities/push-notifications/notif-pwa-wrapper.md +++ b/content/en/docs/refguide/mobile/using-mobile-capabilities/push-notifications/notif-pwa-wrapper.md @@ -128,7 +128,7 @@ The nanoflow requests the `notifications` permission, retrieves the device token ### Calling the Registration Nanoflow -The registration nanoflow should run automatically each time the app opens — both on first launch and when the user returns to the app from the background. This ensures the FCM token stays current. The next section explains how to implement this using app lifecycle events. +The registration nanoflow should run automatically each time the app opens—both on first launch and when the user returns to the app from the background. This ensures the FCM token stays current. The next section explains how to implement this using app lifecycle events. ## Running Push Notification Registration on App Lifecycle Events @@ -202,7 +202,7 @@ Create a new nanoflow (for example, `ACT_InitAppLifecycle`) and add the followin 1. Set the action to **Call a nanoflow**. 1. Select the `ACT_InitAppLifecycle` nanoflow. -This ensures that every time the page loads — which happens when the app opens — the lifecycle listener is registered and the push notification registration nanoflow runs immediately. If the FCM token has changed since the last session, the updated token is saved automatically. +This ensures that every time the page loads—which happens when the app opens—the lifecycle listener is registered and the push notification registration nanoflow runs immediately. If the FCM token has changed since the last session, the updated token is saved automatically. ## Sending Push Notifications diff --git a/content/en/docs/refguide/mobile/using-mobile-capabilities/push-notifications/setting-up-google-firebase-cloud-messaging-server.md b/content/en/docs/refguide/mobile/using-mobile-capabilities/push-notifications/setting-up-google-firebase-cloud-messaging-server.md index b92e4749be9..eca7d9df270 100644 --- a/content/en/docs/refguide/mobile/using-mobile-capabilities/push-notifications/setting-up-google-firebase-cloud-messaging-server.md +++ b/content/en/docs/refguide/mobile/using-mobile-capabilities/push-notifications/setting-up-google-firebase-cloud-messaging-server.md @@ -9,7 +9,7 @@ aliases: --- {{% alert color="info" %}} -Google will stop publishing new Firebase versions to CocoaPods in October 2026. Existing published versions will remain available indefinitely — they will not be removed. This means apps using Firebase through Mendix native today will continue to build and run without interruption. +Google will stop publishing new Firebase versions to CocoaPods in October 2026. Existing published versions will remain available indefinitely—they will not be removed. This means apps using Firebase through Mendix native today will continue to build and run without interruption. Mendix will update the Native Template to use Swift Package Manager once React Native ships official support, which we expect around September 2026. No action is required now. {{% /alert %}} diff --git a/content/en/docs/refguide/modeling/application-logic/expressions/parse-and-format-date-function-calls.md b/content/en/docs/refguide/modeling/application-logic/expressions/parse-and-format-date-function-calls.md index 4472338985f..5913479fd0d 100644 --- a/content/en/docs/refguide/modeling/application-logic/expressions/parse-and-format-date-function-calls.md +++ b/content/en/docs/refguide/modeling/application-logic/expressions/parse-and-format-date-function-calls.md @@ -96,7 +96,7 @@ The input parameters are described in the table below: | Value | Type | | ---------------------------- | ------------------------------------------------------------ | -| Date | A string which contains the textual representation of a date — for example `dd/MM/yyyy` or `MM/dd/yyyy` | +| Date | A string which contains the textual representation of a date—for example `dd/MM/yyyy` or `MM/dd/yyyy` | | Format | String | | Default value (**optional**) | Date and time | diff --git a/content/en/docs/refguide/modeling/best-practices/accessibility-best-practices.md b/content/en/docs/refguide/modeling/best-practices/accessibility-best-practices.md index 3efbc83d455..81030c9377d 100644 --- a/content/en/docs/refguide/modeling/best-practices/accessibility-best-practices.md +++ b/content/en/docs/refguide/modeling/best-practices/accessibility-best-practices.md @@ -83,11 +83,11 @@ Adding autocomplete to input fields can help individuals with reduced cognitive You should avoid using autocomplete in the following situations: -* **Sensitive Information** — Fields that collect sensitive data, such as credit card numbers, government IDs, or personal identification numbers. It helps protect user privacy and prevents unauthorized access to sensitive information. -* **Public Computers** — If forms are likely to be filled out on public or shared computers, disabling autocomplete can prevent users from accessing previously entered information. -* **One-Time Inputs** — For fields that require unique, one-time entries (like a temporary PIN), autocomplete can be unnecessary and may confuse users. -* **Complex Forms** — In lengthy or complex forms, autocomplete might lead to incorrect autofill suggestions, which can frustrate users and lead to errors. -* **Regulatory Compliance** — Certain regulations may require that sensitive information not be stored or auto-filled. Disabling autocomplete can help ensure compliance with such regulations. +* **Sensitive Information** – Fields that collect sensitive data, such as credit card numbers, government IDs, or personal identification numbers. It helps protect user privacy and prevents unauthorized access to sensitive information. +* **Public Computers** – If forms are likely to be filled out on public or shared computers, disabling autocomplete can prevent users from accessing previously entered information. +* **One-Time Inputs** – For fields that require unique, one-time entries (like a temporary PIN), autocomplete can be unnecessary and may confuse users. +* **Complex Forms** – In lengthy or complex forms, autocomplete might lead to incorrect autofill suggestions, which can frustrate users and lead to errors. +* **Regulatory Compliance** – Certain regulations may require that sensitive information not be stored or auto-filled. Disabling autocomplete can help ensure compliance with such regulations. ### Aria Labels @@ -254,9 +254,9 @@ Although it is the most time-consuming, a manual test is a good way to assess yo Doing just a few checks already goes a long way: -* **Keyboard navigability** — Can you reach all the input elements with your keyboard? Does your Tab key take you through all the elements of your page? -* **Screen reader** — Is all the information clear to a sighted person also available to a low vision or non-sighted person? Are labels of input fields being read out correctly? -* **Color contrast** — Does both text and non-text content have enough contrast? +* **Keyboard navigability** – Can you reach all the input elements with your keyboard? Does your Tab key take you through all the elements of your page? +* **Screen reader** – Is all the information clear to a sighted person also available to a low vision or non-sighted person? Are labels of input fields being read out correctly? +* **Color contrast** – Does both text and non-text content have enough contrast? Find more info on this in [the W3C Easy Checks – A First Review of Web Accessibility](https://www.w3.org/WAI/test-evaluate/preliminary/) diff --git a/content/en/docs/refguide/modeling/consistency-errors/consistency-errors-pages.md b/content/en/docs/refguide/modeling/consistency-errors/consistency-errors-pages.md index a81337196ed..96025b1ddcd 100644 --- a/content/en/docs/refguide/modeling/consistency-errors/consistency-errors-pages.md +++ b/content/en/docs/refguide/modeling/consistency-errors/consistency-errors-pages.md @@ -350,7 +350,7 @@ The most common errors for input elements, their causes, and ways to fix them ar ### Error Code: CE0544 -CE0544 error message: *This widget can only function inside a data context — like a data view, list view, or a {document type} with variables.* +CE0544 error message: *This widget can only function inside a data context—like a data view, list view, or a {document type} with variables.* You get CE0544 if you have added an input widget but it is not inside a data container or the page or snippet does not define any variables. Input elements either need to refer to a variable or an attribute of a specific entity type. diff --git a/content/en/docs/refguide/modeling/domain-model/associations/association-storage.md b/content/en/docs/refguide/modeling/domain-model/associations/association-storage.md index a126d146953..12655ee18a5 100644 --- a/content/en/docs/refguide/modeling/domain-model/associations/association-storage.md +++ b/content/en/docs/refguide/modeling/domain-model/associations/association-storage.md @@ -58,6 +58,6 @@ For more information, see the [Association Storage](/refguide/association-proper Before deciding to switch from an association table to a direct association, bear the following in mind: * Do not use direct associations in modules which are designed to be imported into apps (for example, Marketplace modules) as this could cause unexpected migrations in an app the module is being imported into. -* Associations have to be rewritten to the database so migration can take a long time, especially where you have a large amount of data already stored in your database — Mendix has done some testing around this and you can find the results in [Association Storage Migration Time](/refguide/association-storage-migration-time/) +* Associations have to be rewritten to the database so migration can take a long time, especially where you have a large amount of data already stored in your database—Mendix has done some testing around this and you can find the results in [Association Storage Migration Time](/refguide/association-storage-migration-time/) * Queries are not always faster, and might not be faster in your use case * If you have written any custom SQL that accesses Mendix tables directly, this might break, but existing XPaths and OQL queries will not be affected diff --git a/content/en/docs/refguide/modeling/domain-model/generalization-and-association.md b/content/en/docs/refguide/modeling/domain-model/generalization-and-association.md index fa7f24c26fe..ae9f5957af1 100644 --- a/content/en/docs/refguide/modeling/domain-model/generalization-and-association.md +++ b/content/en/docs/refguide/modeling/domain-model/generalization-and-association.md @@ -97,7 +97,7 @@ There are, however, a few situations where a clear answer can be given: * Use one-to-one associations for entities with: * a high number of transactions on the different specializations (we consider multiple changes or creates per second as being high) - * only a handful common attributes — if you feel that it isn't worth creating associated objects for the information, it isn't worth inheriting either + * only a handful common attributes—if you feel that it isn't worth creating associated objects for the information, it isn't worth inheriting either * Use inheritance for entities: * that always require the information from the associated objects, and users intensively search and sort on the associated attributes diff --git a/content/en/docs/refguide/modeling/integration/rest-services/consumed-rest-services/server-side-paging.md b/content/en/docs/refguide/modeling/integration/rest-services/consumed-rest-services/server-side-paging.md index 91f81ba32ae..f0451ee9946 100644 --- a/content/en/docs/refguide/modeling/integration/rest-services/consumed-rest-services/server-side-paging.md +++ b/content/en/docs/refguide/modeling/integration/rest-services/consumed-rest-services/server-side-paging.md @@ -10,7 +10,7 @@ aliases: ## Introduction -Using server-side paging and sorting for a microflow data source, you can model out how you retrieve data to a single page and ensure it ends up in the correct sorting order. With this approach, you do not need to return all the data to the client — you can just return a single page. This can be helpful for getting data from external sources like a REST service, but can also be useful for a regular retrieve object(s) activity in a microflow. To do this, you must model the logic for getting the correct data in the microflow itself. +Using server-side paging and sorting for a microflow data source, you can model out how you retrieve data to a single page and ensure it ends up in the correct sorting order. With this approach, you do not need to return all the data to the client—you can just return a single page. This can be helpful for getting data from external sources like a REST service, but can also be useful for a regular retrieve object(s) activity in a microflow. To do this, you must model the logic for getting the correct data in the microflow itself. This how-to teaches you how to do the following: @@ -26,7 +26,7 @@ Before starting this how-to, make sure you have completed the following prerequi ## Creating a Microflow Data Source -In this section, you will create a JSON structure and import mapping for a REST service. To do this, complete the first four sections of [Consume a REST Service](/howto/integration/consume-a-rest-service/) — (until **Adding an Input Entity to the Domain Model** is done). +In this section, you will create a JSON structure and import mapping for a REST service. To do this, complete the first four sections of [Consume a REST Service](/howto/integration/consume-a-rest-service/)—(until **Adding an Input Entity to the Domain Model** is done). Complete these steps with one crucial change: you must use this REST service URL for your JSON snippet: `https://my-json-server.typicode.com/mendix/howto-api-data/airports`. diff --git a/content/en/docs/refguide/modeling/integration/use-platform-supported-content/external-database-connector/_index.md b/content/en/docs/refguide/modeling/integration/use-platform-supported-content/external-database-connector/_index.md index 998e500a1ee..f2e9e482412 100644 --- a/content/en/docs/refguide/modeling/integration/use-platform-supported-content/external-database-connector/_index.md +++ b/content/en/docs/refguide/modeling/integration/use-platform-supported-content/external-database-connector/_index.md @@ -23,8 +23,8 @@ Right-click your module and click **Add other > External database connection** t Enter or select the following: -* **Name** — name of your database connection -* **Database Type** — Microsoft SQL, MySQL, Oracle, PostgreSQL, or Snowflake +* **Name** – The name of your database connection. +* **Database Type** – Either Microsoft SQL, MySQL, Oracle, PostgreSQL, or Snowflake. {{% alert color="info" %}} From Studio Pro 11.13 and later, when you select a database type, the required JDBC library is automatically added to the **Java Dependencies** tab in [Module Settings](/refguide/module-settings/) of the module you are working on. The dependency is downloaded to the **vendorlib** folder when you run the app or trigger Java dependency management. To use a different version, you can edit the dependency in [Module Settings](/refguide/module-settings/). @@ -36,24 +36,24 @@ For BYOD, you have to add the required JDBC driver details in Module Settings. If you select **Use connection details**, enter: -* **Host** — the host name (`localhost` when testing locally) -* **Port** — the port number -* **Database Name** — the name of the database -* **User Name** — the username to access the database -* **Password** — the password to access the database +* **Host** – the host name (`localhost` when testing locally) +* **Port** – the port number +* **Database Name** – the name of the database +* **User Name** – the username to access the database +* **Password** – the password to access the database ### Connection String If you select **Use connection string**, enter the following: -* **Username** — the username to access the database -* **Password** — the password to access the database -* **JDBC Connection String** — the connection string, in the following formats for each database type: - * **Microsoft SQL** — `jdbc:sqlserver://myHostName:myPortNumber;databasename=myDatabaseName` - * **MySQL** — `jdbc:mysql://myHostName:myPortNumber/myDatabaseName` - * **Oracle** — `jdbc:oracle:thin:@//myHostName:myPortName/myDatabaseName` - * **PostgreSQL** — `jdbc:postgresql://myHostName:myPortNumber/myDatabaseName` - * **Snowflake** — `jdbc:snowflake://my_account_identifier.snowflakecomputing.com/?db=myDatabaseName` +* **Username** – the username to access the database +* **Password** – the password to access the database +* **JDBC Connection String** – the connection string, in the following formats for each database type: + * **Microsoft SQL** – `jdbc:sqlserver://myHostName:myPortNumber;databasename=myDatabaseName` + * **MySQL** – `jdbc:mysql://myHostName:myPortNumber/myDatabaseName` + * **Oracle** – `jdbc:oracle:thin:@//myHostName:myPortName/myDatabaseName` + * **PostgreSQL** – `jdbc:postgresql://myHostName:myPortNumber/myDatabaseName` + * **Snowflake** – `jdbc:snowflake://my_account_identifier.snowflakecomputing.com/?db=myDatabaseName` ### Password Security @@ -79,14 +79,14 @@ View data from the database in the [Tables & Columns](#tables-columns) screen on The Query field includes the following fields: -* **Query Name** — query name, which is saved and can be used later -* **SQL Query** — text box where you can enter your query +* **Query Name** – query name, which is saved and can be used later +* **SQL Query** – text box where you can enter your query In the **Parameters** field, click **Add Parameter** to enter the following information: -* **Name** — name of the parameter that can be used in the **SQL Query** field (in the form of `{parameter_name}`) -* **Data Type** — the type of data for your parameter -* **Test Value** — enter or select the value of the parameter +* **Name** – name of the parameter that can be used in the **SQL Query** field (in the form of `{parameter_name}`) +* **Data Type** – the type of data for your parameter +* **Test Value** – enter or select the value of the parameter Click **Run Query** to view a preview of the response. From f4eb9a5113c5d50968ee43f6ffdf2b1a42aa5514 Mon Sep 17 00:00:00 2001 From: ConnorLand <47385345+ConnorLand@users.noreply.github.com> Date: Wed, 2 Sep 2026 13:57:05 +0200 Subject: [PATCH 23/26] fix dashes --- .../consume-a-complex-web-service.md | 8 ++-- .../menus/translatable-texts/batch-replace.md | 4 +- .../pages/common-widget-properties.md | 10 ++--- .../refguide/modeling/pages/on-click-event.md | 2 +- .../modeling/pages/page-resources/snippet.md | 6 +-- .../modeling/pages/page/page-parameter.md | 2 +- .../pages/structure-widgets/snippet-call.md | 2 +- .../modeling/resources/document-templates.md | 2 +- .../refguide/modeling/resources/task-queue.md | 22 +++++----- .../runtime/custom-settings/configure-cors.md | 8 ++-- .../tricky-custom-runtime-settings.md | 4 +- .../refguide/runtime/mendix-client/react.md | 4 +- .../transient-objects-garbage-collecting.md | 2 +- .../mobile/best-practices/compound-object.md | 2 +- .../building-efficient-mobile-apps/hermes.md | 12 +++--- .../native-styling.md | 2 +- .../navigation.md | 2 +- .../overtheair-updates.md | 2 +- .../pwa-wrapper/pwa-wrapper-security.md | 8 ++-- .../pwa-wrapper-troubleshooting.md | 6 +-- .../use-min-older-sp.md | 6 +-- .../progressive-web-app.md | 2 +- .../push-notifications/notif-pwa-wrapper.md | 4 +- ...-google-firebase-cloud-messaging-server.md | 2 +- .../app-explorer/app/navigation/_index.md | 6 +-- .../parse-and-format-date-function-calls.md | 2 +- .../consistency-errors-pages.md | 2 +- .../generalization-and-association.md | 2 +- .../server-side-paging.md | 4 +- .../external-database-connection/_index.md | 40 +++++++++---------- 30 files changed, 90 insertions(+), 90 deletions(-) diff --git a/content/en/docs/refguide/modeling/integration/web-services/consumed-web-services/consume-a-complex-web-service.md b/content/en/docs/refguide/modeling/integration/web-services/consumed-web-services/consume-a-complex-web-service.md index b0e79acd14a..631e7740e36 100644 --- a/content/en/docs/refguide/modeling/integration/web-services/consumed-web-services/consume-a-complex-web-service.md +++ b/content/en/docs/refguide/modeling/integration/web-services/consumed-web-services/consume-a-complex-web-service.md @@ -51,12 +51,12 @@ To configure the web service call, follow these steps: {{< figure src="/attachments/refguide/modeling/integration/web-services/consume-a-complex-web-service/select-web-service-op.png" alt="select web service op" class="no-border" width="700" >}} 5. In the **SOAP Request Body** tab of the **Call Web Service** properties editor, you can configure the SOAP body. This contains the parameters needed to execute the web service request. The **Simple**, **Export Mapping**, and **Custom** options enable you to select the type of SOAP body to use. Click **Edit value** and use one of the following to change the domain-to-XML mapping or the variables from the microflow used as input arguments: - * **Simple expressions for each request parameter** — if the imported web service requires only primitive arguments: + * **Simple expressions for each request parameter** – if the imported web service requires only primitive arguments: {{< figure src="/attachments/refguide/modeling/integration/web-services/consume-a-complex-web-service/simple-expression-param.png" class="no-border" width="700" >}} - * **Export mappings for each request parameter** or **Export mapping for the entire request** — if the domain model entities need to be mapped to XML elements - * **Custom request template** — for the definition of a custom XML body with parameters: + * **Export mappings for each request parameter** or **Export mapping for the entire request** – if the domain model entities need to be mapped to XML elements + * **Custom request template** – for the definition of a custom XML body with parameters: {{< figure src="/attachments/refguide/modeling/integration/web-services/consume-a-complex-web-service/custom-request-temp.png" alt="custom-request-temp" class="no-border" width="700" >}} @@ -69,7 +69,7 @@ To configure the web service call, follow these steps: {{< figure src="/attachments/refguide/modeling/integration/web-services/consume-a-complex-web-service/18581790.png" class="no-border" width="700" >}} - * If the return is a primitive, you can store it in a variable by selecting **Store in variable** — **Yes** and provide the **Type** and **Variable**: + * If the return is a primitive, you can store it in a variable by selecting **Store in variable** > **Yes**, and then provide the **Type** and **Variable**: {{< figure src="/attachments/refguide/modeling/integration/web-services/consume-a-complex-web-service/18581789.png" class="no-border" width="700" >}} diff --git a/content/en/docs/refguide/modeling/menus/translatable-texts/batch-replace.md b/content/en/docs/refguide/modeling/menus/translatable-texts/batch-replace.md index b4d41a24eec..c500492b531 100644 --- a/content/en/docs/refguide/modeling/menus/translatable-texts/batch-replace.md +++ b/content/en/docs/refguide/modeling/menus/translatable-texts/batch-replace.md @@ -10,8 +10,8 @@ Use **Batch Replace** to replace existing text in the currently selected languag This feature is useful when you need to do the following: -* Standardize inconsistent text that appears in multiple places (for example, text that sometimes uses capital letters and sometimes does not) — reusing text improves the user experience -* Consolidate identical text so you only need to enter the translation once — this saves time and improves consistency +* Standardize inconsistent text that appears in multiple places (for example, text that sometimes uses capital letters and sometimes does not)—reusing text improves the user experience +* Consolidate identical text so you only need to enter the translation once—this saves time and improves consistency * Update all occurrences of common labels or text with better wording in a single operation {{< figure src="/attachments/refguide/modeling/menus/translatable-texts/batch-replace/batch-replace.png" class="no-border" width="600" >}} diff --git a/content/en/docs/refguide/modeling/pages/common-widget-properties.md b/content/en/docs/refguide/modeling/pages/common-widget-properties.md index df9faecf6a6..4056186ffc9 100644 --- a/content/en/docs/refguide/modeling/pages/common-widget-properties.md +++ b/content/en/docs/refguide/modeling/pages/common-widget-properties.md @@ -189,9 +189,9 @@ The expression provided is evaluated in the browser and, currently, does not sup This property can be configured in the following ways: -* **Default** — The position of the label is determined by the read-only style configuration. In the control case, the label is positioned after the control; in the text case, it is positioned before the control. -* **Before control** — The label is placed before the check box. -* **After control** — The label is placed after the check box. +* **Default** – The position of the label is determined by the read-only style configuration. In the control case, the label is positioned after the control; in the text case, it is positioned before the control. +* **Before control** – The label is placed before the check box. +* **After control** – The label is placed after the check box. ## Editability Section{#editability} @@ -344,8 +344,8 @@ The possible values of a predefined validation are the following: * **Required** – Can be used for values of *all* data types. * **E-mail** – Applies to *String* values. * **Positive number** – Applies to *Decimal*, *Integer*, and *Long* values. -* **Date in the future** – Applies to *Date and time* values — compares the date *and time* to `[%CurrentDateTime%]`. -* **Date in the past** – Applies to *Date and time* values — compares the date *and time* to `[%CurrentDateTime%]`. +* **Date in the future** – Applies to *Date and time* values—compares the date *and time* to `[%CurrentDateTime%]`. +* **Date in the past** – Applies to *Date and time* values—compares the date *and time* to `[%CurrentDateTime%]`. #### Custom Validation{#custom-validation} diff --git a/content/en/docs/refguide/modeling/pages/on-click-event.md b/content/en/docs/refguide/modeling/pages/on-click-event.md index f0736f1403b..4b5766eb128 100644 --- a/content/en/docs/refguide/modeling/pages/on-click-event.md +++ b/content/en/docs/refguide/modeling/pages/on-click-event.md @@ -149,7 +149,7 @@ This duplicates the [Microflow](#microflow) specified above. * The client executes the microflow but does not wait for the result * The client checks the server every ten seconds to see whether the microflow is done executing - * Only set the call type to asynchronous if you experience problems — sometimes, if a request takes too long to handle, the request will be sent again by an (impatient) proxy server + * Only set the call type to asynchronous if you experience problems—sometimes, if a request takes too long to handle, the request will be sent again by an (impatient) proxy server ##### Show Progress Bar diff --git a/content/en/docs/refguide/modeling/pages/page-resources/snippet.md b/content/en/docs/refguide/modeling/pages/page-resources/snippet.md index 041ca1fde28..850ea57c6be 100644 --- a/content/en/docs/refguide/modeling/pages/page-resources/snippet.md +++ b/content/en/docs/refguide/modeling/pages/page-resources/snippet.md @@ -101,9 +101,9 @@ After selecting **Extract snippet**, a dialog box shows an overview of the snipp The table showing the snippet parameters has the following columns: -* **Name** — the suggested name for the snippet parameter. -* **Type** — the type of the snippet parameter. -* **Substitute for** — the elements in the original document for which the snippet parameter is substituted in the extracted snippet. +* **Name** – the suggested name for the snippet parameter. +* **Type** – the type of the snippet parameter. +* **Substitute for** – the elements in the original document for which the snippet parameter is substituted in the extracted snippet. The names of the snippet parameters can be changed only if they are unique and not already used in the extracted content. The order of the parameters can also be changed. diff --git a/content/en/docs/refguide/modeling/pages/page/page-parameter.md b/content/en/docs/refguide/modeling/pages/page/page-parameter.md index 0cf24c0c960..59c6e7d84f3 100644 --- a/content/en/docs/refguide/modeling/pages/page/page-parameter.md +++ b/content/en/docs/refguide/modeling/pages/page/page-parameter.md @@ -17,7 +17,7 @@ To use an object or primitive value in your page, define a parameter. In the ima ### Name -* **Name** — The name of the parameter. +* **Name** – The name of the parameter. ### Data Type diff --git a/content/en/docs/refguide/modeling/pages/structure-widgets/snippet-call.md b/content/en/docs/refguide/modeling/pages/structure-widgets/snippet-call.md index 2dd16b9713b..a0707552e98 100644 --- a/content/en/docs/refguide/modeling/pages/structure-widgets/snippet-call.md +++ b/content/en/docs/refguide/modeling/pages/structure-widgets/snippet-call.md @@ -68,7 +68,7 @@ When you select **Inline snippet**, Studio Pro will analyze the snippet call to This is basically the inverse operation of [Extract Snippet](/refguide/snippet/#extract-snippet). {{% alert color="info" %}} -After clicking **Inline snippet**, note that the snippet is not automatically deleted — even if the inlined snippet call was the last remaining usage of the snippet. +After clicking **Inline snippet**, note that the snippet is not automatically deleted—even if the inlined snippet call was the last remaining usage of the snippet. {{% /alert %}} Not every snippet call can be inlined, because certain configurations cannot be represented correctly outside a snippet. Attempting to inline such a snippet call could result in a consistency error or produce inlined content which does not have the same behavior as the original snippet call. In this case, a warning dialog box is shown to ask whether you want to proceed: diff --git a/content/en/docs/refguide/modeling/resources/document-templates.md b/content/en/docs/refguide/modeling/resources/document-templates.md index b7d5ff4e6b0..f0b39a5f228 100644 --- a/content/en/docs/refguide/modeling/resources/document-templates.md +++ b/content/en/docs/refguide/modeling/resources/document-templates.md @@ -51,7 +51,7 @@ To generate HTML documents, create the HTML manually and use the token replaceme ### Microsoft Word -Generating Microsoft Word documents is no longer supported by Mendix. However, there are several alternative solutions available — both free and paid — maintained by Mendix partners and the community that support Word document generation. These can be found in the [Mendix Marketplace](https://marketplace.mendix.com/link/search/word). +Generating Microsoft Word documents is no longer supported by Mendix. However, there are several alternative solutions available—both free and paid—maintained by Mendix partners and the community that support Word document generation. These can be found in the [Mendix Marketplace](https://marketplace.mendix.com/link/search/word). ### Other Formats diff --git a/content/en/docs/refguide/modeling/resources/task-queue.md b/content/en/docs/refguide/modeling/resources/task-queue.md index a2adf687025..59f5a3386b6 100644 --- a/content/en/docs/refguide/modeling/resources/task-queue.md +++ b/content/en/docs/refguide/modeling/resources/task-queue.md @@ -46,8 +46,8 @@ Running in the background is done in so called **Task Queues**. They can be crea 3. Click **Task queue** and give it a name. 4. Enter the value for **Threads** for the Task Queue. 5. Select the **Scope** for the threads: - * **Per node** — the maximum thread count will be limited per node. When this option is selected, adding new nodes to the cluster will also increase the total thread count in overall cluster. - * **Cluster-wide** — the maximum thread count will be limited cluster-wide. When this option is selected, total thread count in the cluster will be fixed and adding/removing new nodes will not have any impact on the thread count. + * **Per node** – the maximum thread count will be limited per node. When this option is selected, adding new nodes to the cluster will also increase the total thread count in overall cluster. + * **Cluster-wide** – the maximum thread count will be limited cluster-wide. When this option is selected, total thread count in the cluster will be fixed and adding/removing new nodes will not have any impact on the thread count. Task queues have a number of threads. Each of these threads can process one task at a time. That is, a queue will pick up as many concurrent tasks as it has threads. Whenever a task is finished, the next one will be picked up. @@ -73,8 +73,8 @@ In Studio Pro, a [Call Microflow](/refguide/microflow-call/) activity can start 2. Check the box **Execute this Microflow in a Task Queue**. 3. Set **Select Task Queue** to the Task Queue in which the microflow should be initiated. 4. (Optional) Select an automatic retry strategy: - * **Fixed retry** — the retries will be performed after the given delay, up to the given number of attempts. - * **Exponential retry** — the length of the delay between the retries is doubled for each retry, up to the given maximum interval. + * **Fixed retry** – the retries will be performed after the given delay, up to the given number of attempts. + * **Exponential retry** – the length of the delay between the retries is doubled for each retry, up to the given maximum interval. #### Through the API @@ -195,13 +195,13 @@ There is one exception to the above rules: The **Status** attribute of `System.QueuedTask` and `System.ProcessedQueueTask` reflects the state that a background task is in. The values are: -* `Idle` — The task was created and is waiting to be run. -* `Running` — The task is being run. -* `Completed` — The task ran successfully. A `System.ProcessedQueueTask` is added to reflect this. -* `Failed` — The task is no longer running because an exception occurred. A `System.ProcessedQueueTask` containing the exception is added to reflect the failure. The task will not be retried. -* `Retrying` — Same as `Failed` but the task will be retried. -* `Aborted` — The task is no longer running because the cluster node that was running it went down. A `System.ProcessedQueueTask` is added to reflect this. The task will be retried on another cluster node. -* `Incompatible` — The task never ran because the model changed in such a way that it cannot be run anymore. This could be because the microflow was removed/renamed, the arguments were changed, or the Task Queue was removed. +* `Idle` – The task was created and is waiting to be run. +* `Running` – The task is being run. +* `Completed` – The task ran successfully. A `System.ProcessedQueueTask` is added to reflect this. +* `Failed` – The task is no longer running because an exception occurred. A `System.ProcessedQueueTask` containing the exception is added to reflect the failure. The task will not be retried. +* `Retrying` – Same as `Failed` but the task will be retried. +* `Aborted` – The task is no longer running because the cluster node that was running it went down. A `System.ProcessedQueueTask` is added to reflect this. The task will be retried on another cluster node. +* `Incompatible` – The task never ran because the model changed in such a way that it cannot be run anymore. This could be because the microflow was removed/renamed, the arguments were changed, or the Task Queue was removed. ### Model Changes diff --git a/content/en/docs/refguide/runtime/custom-settings/configure-cors.md b/content/en/docs/refguide/runtime/custom-settings/configure-cors.md index ca0dcd5edef..13b3ffeceef 100644 --- a/content/en/docs/refguide/runtime/custom-settings/configure-cors.md +++ b/content/en/docs/refguide/runtime/custom-settings/configure-cors.md @@ -62,7 +62,7 @@ mxruntime: If CORS is not working as expected, check the following: -* **Browser console errors** — Look for CORS-related error messages in the browser developer tools console. These typically indicate which header is missing or misconfigured. -* **Origin mismatch** — Ensure the value of `Access-Control-Allow-Origin` exactly matches the origin shown in the browser error, including the scheme (`https://`) and port number (if applicable). -* **Missing `SameSiteCookies` setting** — Without `com.mendix.core.SameSiteCookies` set to `None`, cookies will not be sent on cross-origin requests, which can cause authentication failures. -* **HTTPS requirement** — When `SameSiteCookies` is set to `None`, the `Secure` attribute is automatically added to cookies, meaning both the runtime and the client must be served over HTTPS. +* **Browser console errors** – Look for CORS-related error messages in the browser developer tools console. These typically indicate which header is missing or misconfigured. +* **Origin mismatch** – Ensure the value of `Access-Control-Allow-Origin` exactly matches the origin shown in the browser error, including the scheme (`https://`) and port number (if applicable). +* **Missing `SameSiteCookies` setting** – Without `com.mendix.core.SameSiteCookies` set to `None`, cookies will not be sent on cross-origin requests, which can cause authentication failures. +* **HTTPS requirement** – When `SameSiteCookies` is set to `None`, the `Secure` attribute is automatically added to cookies, meaning both the runtime and the client must be served over HTTPS. diff --git a/content/en/docs/refguide/runtime/custom-settings/tricky-custom-runtime-settings.md b/content/en/docs/refguide/runtime/custom-settings/tricky-custom-runtime-settings.md index 736d02924f5..45b6624a26d 100644 --- a/content/en/docs/refguide/runtime/custom-settings/tricky-custom-runtime-settings.md +++ b/content/en/docs/refguide/runtime/custom-settings/tricky-custom-runtime-settings.md @@ -120,9 +120,9 @@ And/or you get a **Number of database connections** graph that regularly peaks, It will be tempting to increase the `ConnectionPoolingMaxActive` value to a (much) higher number. But if any of the following are true, this is not the right action to take: * Long running queries show up in the application log – in that case, it makes more sense to try and fix those first, as otherwise you will eventually run in to the same problem, but it will take a bit longer to occur after a (re)start of the application -* A database is running low on memory or is even out of memory regularly — in that case, it makes more sense to upgrade the database node size first +* A database is running low on memory or is even out of memory regularly—in that case, it makes more sense to upgrade the database node size first * In this case, there will probably also be long running queries in your application log -* Only a few user sessions are active at any given time — your application might need refactoring unless you can explain why each user is constantly using several parallel database connections +* Only a few user sessions are active at any given time—your application might need refactoring unless you can explain why each user is constantly using several parallel database connections However, if all of the following are true, you should increase the `ConnectionPoolingMaxActive` value to a (much) higher number: diff --git a/content/en/docs/refguide/runtime/mendix-client/react.md b/content/en/docs/refguide/runtime/mendix-client/react.md index 6646a0b84df..bc06351c3e8 100644 --- a/content/en/docs/refguide/runtime/mendix-client/react.md +++ b/content/en/docs/refguide/runtime/mendix-client/react.md @@ -125,8 +125,8 @@ Because the reference set selector widget is technically a grid, while combo box The [HTML/JavaScript snippet](/appstore/widgets/html-javascript-snippet/) widget is not supported in the React Client. To leverage React, this widget can be replaced using [HTML Element](/appstore/widgets/htmlelement/) widget or [JavaScript actions](/refguide/javascript-actions/): -* **Content Type** HTML — The HTML Element can be downloaded [here](https://marketplace.mendix.com/link/component/204843). -* **Content Type** JavaScript — Write the code inside the supported JavaScript actions. If the user needs to execute the code in a certain way, calling the JavaScript action via nanoflow that triggers by [Events](/appstore/widgets/events/) widget is recommended. +* **Content Type** HTML – The HTML Element can be downloaded [here](https://marketplace.mendix.com/link/component/204843). +* **Content Type** JavaScript – Write the code inside the supported JavaScript actions. If the user needs to execute the code in a certain way, calling the JavaScript action via nanoflow that triggers by [Events](/appstore/widgets/events/) widget is recommended. #### Data Grid{#data-grid} diff --git a/content/en/docs/refguide/runtime/runtime-java/transient-objects-garbage-collecting.md b/content/en/docs/refguide/runtime/runtime-java/transient-objects-garbage-collecting.md index ed3da9a4e14..1d7f8b33d13 100644 --- a/content/en/docs/refguide/runtime/runtime-java/transient-objects-garbage-collecting.md +++ b/content/en/docs/refguide/runtime/runtime-java/transient-objects-garbage-collecting.md @@ -91,7 +91,7 @@ In order to find the root cause of this state size, you need to press Ctrl< ## Server-Side Memory Management -For every request to the Mendix Runtime — be it from the client or via web service calls — objects are cleaned up at the end of the request. This means that if you create a lot of temporary objects in a microflow, they will occupy Runtime memory until the end of the request. +For every request to the Mendix Runtime—be it from the client or via web service calls—objects are cleaned up at the end of the request. This means that if you create a lot of temporary objects in a microflow, they will occupy Runtime memory until the end of the request. ## Read More diff --git a/content/en/docs/refguide10/mobile/best-practices/compound-object.md b/content/en/docs/refguide10/mobile/best-practices/compound-object.md index dc8d37ce1c3..69fa32f0ab7 100644 --- a/content/en/docs/refguide10/mobile/best-practices/compound-object.md +++ b/content/en/docs/refguide10/mobile/best-practices/compound-object.md @@ -53,7 +53,7 @@ To implement this pattern, do the following: To improve your apps further, consult the following recommendations: * The after commit event handlers used in the best practice can lead to performance issues if the target object or a related object changes frequently. In this case, use a designated update microflow instead of after commit event handlers. -* If associations to related objects can be empty, be sure to handle this in the update microflow — for example by using the expression `if ($Store=empty) then '-' else $Store/Name`. +* If associations to related objects can be empty, be sure to handle this in the update microflow—for example by using the expression `if ($Store=empty) then '-' else $Store/Name`. * It is often useful for compound objects to store aggregate values, such as the number of related objects. These can be computed using the appropriate **List Aggregation** action in the update microflow. * It is assumed that compound objects are not changed by the offline client. If this is needed, combine the compound object with a [Request Object](/refguide10/mobile/best-practices/request-object/). * Combine the compound object with [Incremental Synchronization](/refguide10/mobile/best-practices/incremental-synchronization/) to further increase synchronization performance. diff --git a/content/en/docs/refguide10/mobile/building-efficient-mobile-apps/hermes.md b/content/en/docs/refguide10/mobile/building-efficient-mobile-apps/hermes.md index 52588e1e73f..7c7438d994e 100644 --- a/content/en/docs/refguide10/mobile/building-efficient-mobile-apps/hermes.md +++ b/content/en/docs/refguide10/mobile/building-efficient-mobile-apps/hermes.md @@ -9,7 +9,7 @@ aliases: ## Introduction -As Mendix applications grow in complexity and scale, optimizing performance is essential for a smooth user experience. The Hermes engine, an optimized JavaScript engine designed for React Native, offers significant performance enhancements — particularly in terms of application startup time and runtime efficiency. This guide will introduce the Hermes engine, describe its benefits, and explain its impact on code. +As Mendix applications grow in complexity and scale, optimizing performance is essential for a smooth user experience. The Hermes engine, an optimized JavaScript engine designed for React Native, offers significant performance enhancements—particularly in terms of application startup time and runtime efficiency. This guide will introduce the Hermes engine, describe its benefits, and explain its impact on code. {{% alert color="info" %}} Hermes is enabled for all projects in Mendix 10.18.0 or above with no option to disable it. @@ -19,9 +19,9 @@ Hermes is enabled for all projects in Mendix 10.18.0 or above with no option to The Hermes engine can provide substantial performance improvements for Mendix applications. Key benefits include: -* **Faster Startup Times** — Hermes compiles JavaScript into bytecode ahead of time, reducing the time used to parse and execute JavaScript at startup. -* **Reduced Memory Usage** — Hermes features efficient garbage collection and memory management, which can lead to lower memory consumption. -* **Improved Execution Speed** — Hermes optimizes the execution of JavaScript, enhancing the performance of complex operations and interactions within the application. +* **Faster Startup Times** – Hermes compiles JavaScript into bytecode ahead of time, reducing the time used to parse and execute JavaScript at startup. +* **Reduced Memory Usage** – Hermes features efficient garbage collection and memory management, which can lead to lower memory consumption. +* **Improved Execution Speed** – Hermes optimizes the execution of JavaScript, enhancing the performance of complex operations and interactions within the application. These performance gains are particularly noticeable in applications with extensive JavaScript logic or large data sets. @@ -29,8 +29,8 @@ These performance gains are particularly noticeable in applications with extensi The Hermes engine generally does not require any modifications to your existing Mendix application code. However, there are some considerations to keep in mind: -* **JavaScript Compatibility** — Ensure that your JavaScript code is compatible with Hermes. Hermes supports most modern JavaScript features, but we advise you test your application thoroughly. -* **Debugging** — Mendix does not support Hermes debugging yet. +* **JavaScript Compatibility** – Ensure that your JavaScript code is compatible with Hermes. Hermes supports most modern JavaScript features, but we advise you test your application thoroughly. +* **Debugging** – Mendix does not support Hermes debugging yet. ## Read More diff --git a/content/en/docs/refguide10/mobile/designing-mobile-user-interfaces/native-styling.md b/content/en/docs/refguide10/mobile/designing-mobile-user-interfaces/native-styling.md index b9413461328..600391e4cb8 100644 --- a/content/en/docs/refguide10/mobile/designing-mobile-user-interfaces/native-styling.md +++ b/content/en/docs/refguide10/mobile/designing-mobile-user-interfaces/native-styling.md @@ -27,7 +27,7 @@ For each app, styling is stored in the **theme** and **themesource** folders. Fr These folders have strict protocols: * Users should only add or change styling in **theme/native** or in their own user-defined module **themesource/your-module/native** folder (if they plan to create a reusable theming module) -* The **native** folder has two files: *main.js* and *custom-variables.js* — when changing the styling, always copy the variable you want to change from *themesource/atlas_core/native/variables.js* to *theme/native/custom-variables.js* +* The **native** folder has two files: *main.js* and *custom-variables.js*—when changing the styling, always copy the variable you want to change from *themesource/atlas_core/native/variables.js* to *theme/native/custom-variables.js* * The *custom-variables.js* file will overwrite the *variables.js* file—do not change anything in the **themesource/atlas_core/native** folder directly, as this makes updating Atlas more difficult * Any variables you want to change or add should be put in *custom-variables.js* * Any classes you want to change or add should be put in *theme/native/main.js* or in your own user-defined module's *themesource/your-module/native/main.js*. diff --git a/content/en/docs/refguide10/mobile/designing-mobile-user-interfaces/navigation.md b/content/en/docs/refguide10/mobile/designing-mobile-user-interfaces/navigation.md index 2bd0b8f1358..0e21770126a 100644 --- a/content/en/docs/refguide10/mobile/designing-mobile-user-interfaces/navigation.md +++ b/content/en/docs/refguide10/mobile/designing-mobile-user-interfaces/navigation.md @@ -68,7 +68,7 @@ There are only a few steps needed to be done to create a **Sidebar** in your nat {{< figure src="/attachments/refguide10/mobile/native-mobile/native-navigation/includesidebar.png" alt="Include a sidebar" >}} -Then, decide which screen in your project will have a **Sidebar** and apply the appropriate layout — **NativePhone_SideMenu** in our case: +Then, decide which screen in your project will have a **Sidebar** and apply the appropriate layout—**NativePhone_SideMenu** in our case: {{< figure src="/attachments/refguide10/mobile/native-mobile/native-navigation/selectsidebarlayout.png" alt="Select a sidebar layout" >}} diff --git a/content/en/docs/refguide10/mobile/distributing-mobile-apps/overtheair-updates.md b/content/en/docs/refguide10/mobile/distributing-mobile-apps/overtheair-updates.md index df11ac07d43..dd8ef122bcb 100644 --- a/content/en/docs/refguide10/mobile/distributing-mobile-apps/overtheair-updates.md +++ b/content/en/docs/refguide10/mobile/distributing-mobile-apps/overtheair-updates.md @@ -75,7 +75,7 @@ If you have made any changes directly to your iOS or Android app, you will have * The initial release of your app * A Studio Pro version upgrade that requires a new [Native Template](/refguide10/native-template/) version * You fundamentally changed your app's functionality (this is an Apple App Store limitation, and will require a re-release and re-review of your app by Apple—your app might be removed if you do not comply) -* A new native module has been added (such as the [Native Mobile AR](https://marketplace.mendix.com/link/component/117209) module — for more information see [Modules](/refguide10/modules/) +* A new native module has been added (such as the [Native Mobile AR](https://marketplace.mendix.com/link/component/117209) module—for more information see [Modules](/refguide10/modules/) * The app has been renamed * The app's launcher icons have been changed * The splash screen has been changed diff --git a/content/en/docs/refguide10/mobile/distributing-mobile-apps/pwa-wrapper/pwa-wrapper-security.md b/content/en/docs/refguide10/mobile/distributing-mobile-apps/pwa-wrapper/pwa-wrapper-security.md index 778f7ae64f3..e1b66a89687 100644 --- a/content/en/docs/refguide10/mobile/distributing-mobile-apps/pwa-wrapper/pwa-wrapper-security.md +++ b/content/en/docs/refguide10/mobile/distributing-mobile-apps/pwa-wrapper/pwa-wrapper-security.md @@ -60,9 +60,9 @@ PWA Wrapper needs a Java runtime to execute the build tools listed above. It sea | Step | Method | | --- | --- | | 1 | Read the `JAVA_HOME` environment variable, if set | -| 2 | Run `/usr/libexec/java_home` — the operating-system JDK registry | +| 2 | Run `/usr/libexec/java_home`—the operating-system JDK registry | | 3 | Resolve `java` on the shell `PATH` (equivalent to `which java`) | -| 4 | Scan `/Library/Java/JavaVirtualMachines/` — the standard directory where installers such as Adoptium/Temurin, Oracle, and Azul place JDKs | +| 4 | Scan `/Library/Java/JavaVirtualMachines/`—the standard directory where installers such as Adoptium/Temurin, Oracle, and Azul place JDKs | ### Windows Method @@ -74,9 +74,9 @@ If no usable JDK is found, the build fails with an error that instructs the user PWA Wrapper needs to locate the Mendix Studio Pro installation to access the runtime and SDK files it uses during the build: -* macOS — The extension scans `/Applications/` and `~/Applications/` for app bundles whose names match "Mendix Studio Pro" or "Studio Pro". Among all matches that contain a valid `runtime/` subdirectory, it selects the one with the highest version number. +* macOS – The extension scans `/Applications/` and `~/Applications/` for app bundles whose names match "Mendix Studio Pro" or "Studio Pro". Among all matches that contain a valid `runtime/` subdirectory, it selects the one with the highest version number. -* Windows — Auto-detection is not performed. The Studio Pro path must be provided explicitly via a CLI argument, a `.env` file, or a `.launch` file. +* Windows – Auto-detection is not performed. The Studio Pro path must be provided explicitly via a CLI argument, a `.env` file, or a `.launch` file. ## Summary for Reviewers diff --git a/content/en/docs/refguide10/mobile/distributing-mobile-apps/pwa-wrapper/pwa-wrapper-troubleshooting.md b/content/en/docs/refguide10/mobile/distributing-mobile-apps/pwa-wrapper/pwa-wrapper-troubleshooting.md index 12fd10ff820..aeabd215680 100644 --- a/content/en/docs/refguide10/mobile/distributing-mobile-apps/pwa-wrapper/pwa-wrapper-troubleshooting.md +++ b/content/en/docs/refguide10/mobile/distributing-mobile-apps/pwa-wrapper/pwa-wrapper-troubleshooting.md @@ -15,7 +15,7 @@ This page describes known issues you may encounter when building or testing PWA ### App Cannot Connect to localhost on a Physical Device{#android-localhost} -* Symptom — When you set the runtime URL to a localhost address (for example, `http://localhost:8080`) and install the app on a physical Android device, the app fails to load and shows the following error: +* Symptom – When you set the runtime URL to a localhost address (for example, `http://localhost:8080`) and install the app on a physical Android device, the app fails to load and shows the following error: ``` Page Load Error @@ -24,12 +24,12 @@ This page describes known issues you may encounter when building or testing PWA {{< figure src="/attachments/refguide10/mobile/pwa-wrapper/localhost-cache-miss-error.png" alt="Page Load Error showing net::ERR_CACHE_MISS on Android" max-width="400px" >}} -* Cause — Two things are required for a physical Android device to reach a localhost server on your machine: +* **Cause** – Two things are required for a physical Android device to reach a localhost server on your machine: * The app must have the `INTERNET` permission. Without it, the Android OS blocks all outbound network traffic. * The device must have a port forwarding rule from its own localhost to your machine's localhost. Android devices do not forward ports automatically. -* Solution — To solve this issue, do the following: +* **Solution** – To solve this issue, do the following: 1. In the PWA Wrapper builder, go to the **Permissions** step and enable the **INTERNET** permission (for general guidance on permissions, see [Build PWA Wrapper Apps](/refguide10/mobile/distributing-mobile-apps/pwa-wrapper/build-pwa-wrapper-apps/)). 1. Connect the Android device to your machine via USB and make sure [USB debugging](https://developer.android.com/studio/debug/dev-options) is enabled on the device. diff --git a/content/en/docs/refguide10/mobile/distributing-mobile-apps/use-min-older-sp.md b/content/en/docs/refguide10/mobile/distributing-mobile-apps/use-min-older-sp.md index 55826bc030e..d087fd5c85c 100644 --- a/content/en/docs/refguide10/mobile/distributing-mobile-apps/use-min-older-sp.md +++ b/content/en/docs/refguide10/mobile/distributing-mobile-apps/use-min-older-sp.md @@ -334,7 +334,7 @@ The file `sample_apps.json` file describes each sample app and contains informat to update the Android developer app bundle and assets: 1. Unzip `sampleapps.zip`. -1. Find the folder for the sample app you want to update — reference `sample_apps.json`. +1. Find the folder for the sample app you want to update—reference `sample_apps.json`. 1. `cd` to this folder. 1. In (A), replace `index.android.bundle` with the file located in [Android Bundle](#android-bundle). 1. In (A), delete all other folders (and any files) and replace with contents located in [Android Assets](#android-assets). @@ -350,7 +350,7 @@ In `ios > DeveloperApp > SampleApps > Bundles` there are folders that represent The folder name can be arbitrary. The `config.json` file describes each sample app, and each object's `id` property matches the folder name and provides details about the sample app. Follow the steps below to update the iOS developer app bundle and assets: -1. Find the folder for the sample app you want to update — reference `config.json`. +1. Find the folder for the sample app you want to update—reference `config.json`. 1. `cd` to this folder 1. Replace the `index.bundle` file with the updated one from [iOS Bundle](#ios-bundle). Note: make sure to rename the filename to *index.bundle*, as it is usually **index.ios.bundle**. 1. Clean the contents of the `assets` folder. @@ -374,7 +374,7 @@ If using Native Builder UI (which also creates native apps to use for testing), 1. (App capabilities) Disable all capabilities. 1. (App capabilities) If your project contains a widget or action that requires a Google API key, add it. 1. (Configure app locally) Enter in a version number. -1. (Configure app locally) Enter in a runtime URL — if you want to test the native app, enter an appropriate runtime URL. +1. (Configure app locally) Enter in a runtime URL—if you want to test the native app, enter an appropriate runtime URL. 1. Click **Configure locally**. The native app's source code will be in the disk location selected in step 3. In your Mendix Project directory, in diff --git a/content/en/docs/refguide10/mobile/introduction-to-mobile-technologies/progressive-web-app.md b/content/en/docs/refguide10/mobile/introduction-to-mobile-technologies/progressive-web-app.md index 82deecb74c9..6cd0c62acd0 100644 --- a/content/en/docs/refguide10/mobile/introduction-to-mobile-technologies/progressive-web-app.md +++ b/content/en/docs/refguide10/mobile/introduction-to-mobile-technologies/progressive-web-app.md @@ -154,7 +154,7 @@ Browsers offer access to device features through APIs that can be leveraged in P This table lists the most used device features and APIs, and also documents their compatibility with common browsers: -**Legend** — The symbols below correspond to the following definitions: +**Legend** – The symbols below correspond to the following definitions: * Fully compatible: {{< icon name="checkmark-circle-filled" color="green" >}} diff --git a/content/en/docs/refguide10/mobile/using-mobile-capabilities/push-notifications/notif-pwa-wrapper.md b/content/en/docs/refguide10/mobile/using-mobile-capabilities/push-notifications/notif-pwa-wrapper.md index b1165e357f7..92ca08c5e9e 100644 --- a/content/en/docs/refguide10/mobile/using-mobile-capabilities/push-notifications/notif-pwa-wrapper.md +++ b/content/en/docs/refguide10/mobile/using-mobile-capabilities/push-notifications/notif-pwa-wrapper.md @@ -128,7 +128,7 @@ The nanoflow requests the `notifications` permission, retrieves the device token ### Calling the Registration Nanoflow -The registration nanoflow should run automatically each time the app opens — both on first launch and when the user returns to the app from the background. This ensures the FCM token stays current. The next section explains how to implement this using app lifecycle events. +The registration nanoflow should run automatically each time the app opens—both on first launch and when the user returns to the app from the background. This ensures the FCM token stays current. The next section explains how to implement this using app lifecycle events. ## Running Push Notification Registration on App Lifecycle Events @@ -202,7 +202,7 @@ Create a new nanoflow (for example, `ACT_InitAppLifecycle`) and add the followin 1. Set the action to **Call a nanoflow**. 1. Select the `ACT_InitAppLifecycle` nanoflow. -This ensures that every time the page loads — which happens when the app opens — the lifecycle listener is registered and the push notification registration nanoflow runs immediately. If the FCM token has changed since the last session, the updated token is saved automatically. +This ensures that every time the page loads—which happens when the app opens—the lifecycle listener is registered and the push notification registration nanoflow runs immediately. If the FCM token has changed since the last session, the updated token is saved automatically. ## Sending Push Notifications diff --git a/content/en/docs/refguide10/mobile/using-mobile-capabilities/push-notifications/setting-up-google-firebase-cloud-messaging-server.md b/content/en/docs/refguide10/mobile/using-mobile-capabilities/push-notifications/setting-up-google-firebase-cloud-messaging-server.md index 4b9991432e9..d083b1ed2e4 100644 --- a/content/en/docs/refguide10/mobile/using-mobile-capabilities/push-notifications/setting-up-google-firebase-cloud-messaging-server.md +++ b/content/en/docs/refguide10/mobile/using-mobile-capabilities/push-notifications/setting-up-google-firebase-cloud-messaging-server.md @@ -9,7 +9,7 @@ aliases: --- {{% alert color="info" %}} -Google will stop publishing new Firebase versions to CocoaPods in October 2026. Existing published versions will remain available indefinitely — they will not be removed. This means apps using Firebase through Mendix native today will continue to build and run without interruption. +Google will stop publishing new Firebase versions to CocoaPods in October 2026. Existing published versions will remain available indefinitely—they will not be removed. This means apps using Firebase through Mendix native today will continue to build and run without interruption. Mendix will update the Native Template to use Swift Package Manager once React Native ships official support, which we expect around September 2026. No action is required now. {{% /alert %}} diff --git a/content/en/docs/refguide10/modeling/app-explorer/app/navigation/_index.md b/content/en/docs/refguide10/modeling/app-explorer/app/navigation/_index.md index c36695e5497..0aa58fdc519 100644 --- a/content/en/docs/refguide10/modeling/app-explorer/app/navigation/_index.md +++ b/content/en/docs/refguide10/modeling/app-explorer/app/navigation/_index.md @@ -46,9 +46,9 @@ All the users accessing the Mendix app from a browser on a phone will automatica A Mendix app can be installed on a phone as a native application which offers several advantages: -* **Enhanced Performance** — Native apps are optimized for the specific platform, resulting in faster load times and smoother user interactions. -* **Access to Device Features** — Native apps can harness the full potential of a phone's hardware features, such as GPS, camera, and push notifications, enhancing the user experience. -* **Offline Functionality** — Native apps store data locally on the phone, ensuring that users can access content even without an internet connection. +* **Enhanced Performance** – Native apps are optimized for the specific platform, resulting in faster load times and smoother user interactions. +* **Access to Device Features** – Native apps can harness the full potential of a phone's hardware features, such as GPS, camera, and push notifications, enhancing the user experience. +* **Offline Functionality** – Native apps store data locally on the phone, ensuring that users can access content even without an internet connection. The Mendix app will run in [offline-first](/refguide10/offline-first/) mode. This means that all the data is stored on the phone and only synchronized with the server on request. diff --git a/content/en/docs/refguide10/modeling/application-logic/expressions/parse-and-format-date-function-calls.md b/content/en/docs/refguide10/modeling/application-logic/expressions/parse-and-format-date-function-calls.md index 243221aac94..bb3a178830b 100644 --- a/content/en/docs/refguide10/modeling/application-logic/expressions/parse-and-format-date-function-calls.md +++ b/content/en/docs/refguide10/modeling/application-logic/expressions/parse-and-format-date-function-calls.md @@ -104,7 +104,7 @@ The input parameters are described in the table below: | Value | Type | | ---------------------------- | ------------------------------------------------------------ | -| Date | A string which contains the textual representation of a date — for example `dd/MM/yyyy` or `MM/dd/yyyy` | +| Date | A string which contains the textual representation of a date—for example `dd/MM/yyyy` or `MM/dd/yyyy` | | Format | String | | Default value (**optional**) | Date and time | diff --git a/content/en/docs/refguide10/modeling/consistency-errors/consistency-errors-pages.md b/content/en/docs/refguide10/modeling/consistency-errors/consistency-errors-pages.md index feb4b15eca9..414a0037bb1 100644 --- a/content/en/docs/refguide10/modeling/consistency-errors/consistency-errors-pages.md +++ b/content/en/docs/refguide10/modeling/consistency-errors/consistency-errors-pages.md @@ -342,7 +342,7 @@ The most common errors for input elements, their causes, and ways to fix them ar ### Error Code: CE0544 -CE0544 error message: *This widget can only function inside a data context — like a data view, list view, or a {document type} with variables.* +CE0544 error message: *This widget can only function inside a data context—like a data view, list view, or a {document type} with variables.* You get CE0544 if you have added an input widget but it is not inside a data container or the page or snippet does not define any variables. Input elements either need to refer to a variable or an attribute of a specific entity type. diff --git a/content/en/docs/refguide10/modeling/domain-model/generalization-and-association.md b/content/en/docs/refguide10/modeling/domain-model/generalization-and-association.md index 45611bdfe55..a31add8a123 100644 --- a/content/en/docs/refguide10/modeling/domain-model/generalization-and-association.md +++ b/content/en/docs/refguide10/modeling/domain-model/generalization-and-association.md @@ -97,7 +97,7 @@ There are, however, a few situations where a clear answer can be given: * Use one-to-one associations for entities with: * a high number of transactions on the different sub entities (we consider multiple changes or creates per second as being high) - * only a handful common attributes — if you feel that it isn't worth creating associated objects for the information, it isn't worth inheriting either + * only a handful common attributes—if you feel that it isn't worth creating associated objects for the information, it isn't worth inheriting either * Use inheritance for entities: * that always require the information from the associated objects, and users intensively search and sort on the associated attributes diff --git a/content/en/docs/refguide10/modeling/integration/rest-services/consumed-rest-services/server-side-paging.md b/content/en/docs/refguide10/modeling/integration/rest-services/consumed-rest-services/server-side-paging.md index 0d751e2b076..08bbefaec72 100644 --- a/content/en/docs/refguide10/modeling/integration/rest-services/consumed-rest-services/server-side-paging.md +++ b/content/en/docs/refguide10/modeling/integration/rest-services/consumed-rest-services/server-side-paging.md @@ -10,7 +10,7 @@ aliases: ## Introduction -Using server-side paging and sorting for a microflow data source, you can model out how you retrieve data to a single page and ensure it ends up in the correct sorting order. With this approach, you do not need to return all the data to the client — you can just return a single page. This can be helpful for getting data from external sources like a REST service, but can also be useful for a regular retrieve activity in a microflow. To do this, you must model the logic for getting the correct data in the microflow itself. +Using server-side paging and sorting for a microflow data source, you can model out how you retrieve data to a single page and ensure it ends up in the correct sorting order. With this approach, you do not need to return all the data to the client—you can just return a single page. This can be helpful for getting data from external sources like a REST service, but can also be useful for a regular retrieve activity in a microflow. To do this, you must model the logic for getting the correct data in the microflow itself. This how-to teaches you how to do the following: @@ -26,7 +26,7 @@ Before starting this how-to, make sure you have completed the following prerequi ## Creating a Microflow Data Source -In this section, you will create a JSON structure and import mapping for a REST service. To do this, complete the first four sections of [Consume a REST Service](/howto10/integration/consume-a-rest-service/) — (until **Adding an Input Entity to the Domain Model** is done). +In this section, you will create a JSON structure and import mapping for a REST service. To do this, complete the first four sections of [Consume a REST Service](/howto10/integration/consume-a-rest-service/)—(until **Adding an Input Entity to the Domain Model** is done). Complete these steps with one crucial change: you must use this REST service URL for your JSON snippet: `https://my-json-server.typicode.com/mendix/howto-api-data/airports`. diff --git a/content/en/docs/refguide10/modeling/integration/use-platform-supported-content/external-database-connection/_index.md b/content/en/docs/refguide10/modeling/integration/use-platform-supported-content/external-database-connection/_index.md index 6aad0104885..603a3a6a0d2 100644 --- a/content/en/docs/refguide10/modeling/integration/use-platform-supported-content/external-database-connection/_index.md +++ b/content/en/docs/refguide10/modeling/integration/use-platform-supported-content/external-database-connection/_index.md @@ -30,31 +30,31 @@ Right-click your module and click **Add other > External database connection** t Enter or select the following: -* **Name** — name of your database connection -* **Database Type** — Microsoft SQL, MySQL, Oracle, PostgreSQL, or Snowflake (Beta support from [Studio Pro 10.10](/releasenotes/studio-pro/10.10/)) +* **Name** – name of your database connection +* **Database Type** – Microsoft SQL, MySQL, Oracle, PostgreSQL, or Snowflake (Beta support from [Studio Pro 10.10](/releasenotes/studio-pro/10.10/)) ### Connection Details If you select **Use connection details**, enter: -* **Host** — the host name (`localhost` when testing locally) -* **Port** — the port number -* **Database Name** — the name of the database -* **User Name** — the username to access the database -* **Password** — the password to access the database +* **Host** – the host name (`localhost` when testing locally) +* **Port** – the port number +* **Database Name** – the name of the database +* **User Name** – the username to access the database +* **Password** – the password to access the database ### Connection String If you select **Use connection string**, enter the following: -* **Username** — the username to access the database -* **Password** — the password to access the database -* **JDBC Connection String** — the connection string, in the following formats for each database type: - * **Microsoft SQL** — `jdbc:sqlserver://myHostName:myPortNumber;databasename=myDatabaseName` - * **MySQL** — `jdbc:mysql://myHostName:myPortNumber/myDatabaseName` - * **Oracle** — `jdbc:oracle:thin:@//myHostName:myPortName/myDatabaseName` - * **PostgreSQL** — `jdbc:postgresql://myHostName:myPortNumber/myDatabaseName` - * **Snowflake** — `jdbc:snowflake://my_account_identifier.snowflakecomputing.com/?db=myDatabaseName` +* **Username** – the username to access the database +* **Password** – the password to access the database +* **JDBC Connection String** – the connection string, in the following formats for each database type: + * **Microsoft SQL** – `jdbc:sqlserver://myHostName:myPortNumber;databasename=myDatabaseName` + * **MySQL** – `jdbc:mysql://myHostName:myPortNumber/myDatabaseName` + * **Oracle** – `jdbc:oracle:thin:@//myHostName:myPortName/myDatabaseName` + * **PostgreSQL** – `jdbc:postgresql://myHostName:myPortNumber/myDatabaseName` + * **Snowflake** – `jdbc:snowflake://my_account_identifier.snowflakecomputing.com/?db=myDatabaseName` ### Password Security @@ -76,14 +76,14 @@ View data from the database in the [Tables & Columns](#tables-columns) screen on The Query field includes the following fields: -* **Query Name** — query name, which is saved and can be used later -* **SQL Query** — text box where you can enter your query +* **Query Name** – query name, which is saved and can be used later +* **SQL Query** – text box where you can enter your query In the **Parameters** field, click **Add Parameter** to enter the following information: -* **Name** — name of the parameter that can be used in the **SQL Query** field (in the form of `{parameter_name}`) -* **Data Type** — the type of data for your parameter -* **Test Value** — enter or select the value of the parameter +* **Name** – name of the parameter that can be used in the **SQL Query** field (in the form of `{parameter_name}`) +* **Data Type** – the type of data for your parameter +* **Test Value** – enter or select the value of the parameter Click **Run Query** to view a preview of the response. From f1df9ad1afb1af0eb43e42f9ea768da321d236a9 Mon Sep 17 00:00:00 2001 From: ConnorLand <47385345+ConnorLand@users.noreply.github.com> Date: Wed, 2 Sep 2026 14:05:36 +0200 Subject: [PATCH 24/26] fix dashes --- .../consume-a-complex-web-service.md | 8 +++---- .../menus/translatable-texts/batch-replace.md | 4 ++-- .../version-control-menu/history-dialog.md | 2 +- .../pages/common-widget-properties.md | 4 ++-- .../modeling/pages/on-click-event.md | 2 +- .../modeling/pages/page-resources/snippet.md | 6 ++--- .../pages/structure-widgets/snippet-call.md | 2 +- .../resources/document-templates/_index.md | 2 +- .../tricky-custom-runtime-settings.md | 4 ++-- .../runtime/mendix-client/_index.md | 2 +- .../refguide10/runtime/mendix-client/react.md | 4 ++-- .../transient-objects-garbage-collecting.md | 2 +- .../moving-from-atlas-2-to-3/_index.md | 14 +++++------ content/en/docs/refguide9/general/mxbuild.md | 2 +- .../native-styling.md | 2 +- .../setting-up-the-navigation-structure.md | 2 +- .../parse-and-format-date-function-calls.md | 2 +- .../server-side-paging.md | 4 ++-- .../published-rest-operation-parameter.md | 4 ++-- .../consume-a-complex-web-service.md | 8 +++---- .../menus/translatable-texts/batch-replace.md | 4 ++-- .../modeling/menus/view-menu/changes-pane.md | 2 +- .../pages/common-widget-properties.md | 4 ++-- .../modeling/pages/on-click-event.md | 2 +- .../modeling/pages/page-resources/snippet.md | 6 ++--- .../pages/structure-widgets/snippet-call.md | 2 +- .../resources/scheduled-events/_index.md | 24 +++++++++---------- 27 files changed, 62 insertions(+), 62 deletions(-) diff --git a/content/en/docs/refguide10/modeling/integration/web-services/consumed-web-services/consume-a-complex-web-service.md b/content/en/docs/refguide10/modeling/integration/web-services/consumed-web-services/consume-a-complex-web-service.md index e5ebb78e322..9c8a2786605 100644 --- a/content/en/docs/refguide10/modeling/integration/web-services/consumed-web-services/consume-a-complex-web-service.md +++ b/content/en/docs/refguide10/modeling/integration/web-services/consumed-web-services/consume-a-complex-web-service.md @@ -51,12 +51,12 @@ To configure the web service call, follow these steps: {{< figure src="/attachments/refguide10/modeling/integration/web-services/consume-a-complex-web-service/select-web-service-op.png" alt="select web service op" class="no-border" width="700" >}} 5. In the **SOAP Request Body** tab of the **Call Web Service** properties editor, you can configure the SOAP body. This contains the parameters needed to execute the web service request. The **Simple**, **Export Mapping**, and **Custom** options enable you to select the type of SOAP body to use. Click **Edit value** and use one of the following to change the domain-to-XML mapping or the variables from the microflow used as input arguments: - * **Simple expressions for each request parameter** — if the imported web service requires only primitive arguments: + * **Simple expressions for each request parameter** – if the imported web service requires only primitive arguments: {{< figure src="/attachments/refguide10/modeling/integration/web-services/consume-a-complex-web-service/simple-expression-param.png" class="no-border" width="700" >}} - * **Export mappings for each request parameter** or **Export mapping for the entire request** — if the domain model entities need to be mapped to XML elements - * **Custom request template** — for the definition of a custom XML body with parameters: + * **Export mappings for each request parameter** or **Export mapping for the entire request** – if the domain model entities need to be mapped to XML elements + * **Custom request template** – for the definition of a custom XML body with parameters: {{< figure src="/attachments/refguide10/modeling/integration/web-services/consume-a-complex-web-service/custom-request-temp.png" alt="custom-request-temp" class="no-border" width="700" >}} @@ -69,7 +69,7 @@ To configure the web service call, follow these steps: {{< figure src="/attachments/refguide10/modeling/integration/web-services/consume-a-complex-web-service/18581790.png" class="no-border" width="700" >}} - * If the return is a primitive, you can store it in a variable by selecting **Store in variable** — **Yes** and provide the **Type** and **Variable**: + * If the return is a primitive, you can store it in a variable by selecting **Store in variable** – **Yes** and provide the **Type** and **Variable**: {{< figure src="/attachments/refguide10/modeling/integration/web-services/consume-a-complex-web-service/18581789.png" class="no-border" width="700" >}} diff --git a/content/en/docs/refguide10/modeling/menus/translatable-texts/batch-replace.md b/content/en/docs/refguide10/modeling/menus/translatable-texts/batch-replace.md index 9b263d15ba2..95f317b13e8 100644 --- a/content/en/docs/refguide10/modeling/menus/translatable-texts/batch-replace.md +++ b/content/en/docs/refguide10/modeling/menus/translatable-texts/batch-replace.md @@ -10,8 +10,8 @@ weight: 20 There are a number of reasons that you may wish to do this: -* The same text should appear in different places in the app, however, it has been entered inconsistently, for example sometimes with capital letters and sometimes not — if you reuse existing text across your app, this will improve the user experience -* If all occurrences of a piece of text are identical, you only need to enter the translation once — this saves time and improves consistency +* The same text should appear in different places in the app, however, it has been entered inconsistently, for example sometimes with capital letters and sometimes not—if you reuse existing text across your app, this will improve the user experience +* If all occurrences of a piece of text are identical, you only need to enter the translation once—this saves time and improves consistency * If you find better wording for a common label or text, you can change them all at once with a single command {{< figure src="/attachments/refguide10/modeling/menus/translatable-texts/batch-replace/batch-replace.png" class="no-border" width="600" >}} diff --git a/content/en/docs/refguide10/modeling/menus/version-control-menu/history-dialog.md b/content/en/docs/refguide10/modeling/menus/version-control-menu/history-dialog.md index 82f943caac1..ba21996913f 100644 --- a/content/en/docs/refguide10/modeling/menus/version-control-menu/history-dialog.md +++ b/content/en/docs/refguide10/modeling/menus/version-control-menu/history-dialog.md @@ -7,7 +7,7 @@ weight: 50 Use the **History** dialog box to look at all the changes that have been committed to a development line of an app. You can open this dialog box from the **Version Control** > **History…** menu item. This dialog box is also used when selecting a revision to merge from, create a branch line off, or to create a deployment archive from. -The **History** dialog can display up to 250 commits at once, making it easy to look at the detailed project history. If the app was only partially copied, it may need to download missing data from the server. While the data is being downloaded, a progress bar will be shown. This initial download could take a little time, but once the data is saved locally, future access to the **History** dialog will be significantly faster — almost instant. +The **History** dialog can display up to 250 commits at once, making it easy to look at the detailed project history. If the app was only partially copied, it may need to download missing data from the server. While the data is being downloaded, a progress bar will be shown. This initial download could take a little time, but once the data is saved locally, future access to the **History** dialog will be significantly faster—almost instant. ## Revisions diff --git a/content/en/docs/refguide10/modeling/pages/common-widget-properties.md b/content/en/docs/refguide10/modeling/pages/common-widget-properties.md index efe96e7ab00..1ea3d981ef8 100644 --- a/content/en/docs/refguide10/modeling/pages/common-widget-properties.md +++ b/content/en/docs/refguide10/modeling/pages/common-widget-properties.md @@ -335,8 +335,8 @@ The possible values of a predefined validation are the following: * **Required** – can be used for values of *all* data types * **E-mail** – applies to *String* values * **Positive number** – applies to *Decimal*, *Integer*, and *Long* values -* **Date in the future** – applies to *Date and time* values — compares the date *and time* to `[%CurrentDateTime%]` -* **Date in the past** – applies to *Date and time* values — compares the date *and time* to `[%CurrentDateTime%]` +* **Date in the future** – applies to *Date and time* values—compares the date *and time* to `[%CurrentDateTime%]` +* **Date in the past** – applies to *Date and time* values—compares the date *and time* to `[%CurrentDateTime%]` #### Custom Validation{#custom-validation} diff --git a/content/en/docs/refguide10/modeling/pages/on-click-event.md b/content/en/docs/refguide10/modeling/pages/on-click-event.md index 5c9dad6d4fa..1fac657d6eb 100644 --- a/content/en/docs/refguide10/modeling/pages/on-click-event.md +++ b/content/en/docs/refguide10/modeling/pages/on-click-event.md @@ -150,7 +150,7 @@ If the microflow is triggered within a grid and has an object list parameter, th * The client executes the microflow but does not wait for the result * The client checks the server every ten seconds to see whether the microflow is done executing - * Only set the call type to asynchronous if you experience problems — sometimes, if a request takes too long to handle, the request will be sent again by an (impatient) proxy server + * Only set the call type to asynchronous if you experience problems—sometimes, if a request takes too long to handle, the request will be sent again by an (impatient) proxy server ##### Show Progress Bar diff --git a/content/en/docs/refguide10/modeling/pages/page-resources/snippet.md b/content/en/docs/refguide10/modeling/pages/page-resources/snippet.md index 263620a3beb..3e0633c7d8e 100644 --- a/content/en/docs/refguide10/modeling/pages/page-resources/snippet.md +++ b/content/en/docs/refguide10/modeling/pages/page-resources/snippet.md @@ -97,9 +97,9 @@ After selecting **Extract snippet**, a dialog box shows an overview of the snipp The table showing the snippet parameters has the following columns: -* **Name** — the suggested name for the snippet parameter. -* **Type** — the type of the snippet parameter. -* **Substitute for** — the elements in the original document for which the snippet parameter is substituted in the extracted snippet. +* **Name** – the suggested name for the snippet parameter. +* **Type** – the type of the snippet parameter. +* **Substitute for** – the elements in the original document for which the snippet parameter is substituted in the extracted snippet. The names of the snippet parameters can be changed only if they are unique and not already used in the extracted content. The order of the parameters can also be changed. diff --git a/content/en/docs/refguide10/modeling/pages/structure-widgets/snippet-call.md b/content/en/docs/refguide10/modeling/pages/structure-widgets/snippet-call.md index 155c080f8e7..ebd25d43856 100644 --- a/content/en/docs/refguide10/modeling/pages/structure-widgets/snippet-call.md +++ b/content/en/docs/refguide10/modeling/pages/structure-widgets/snippet-call.md @@ -68,7 +68,7 @@ When you select **Inline snippet**, Studio Pro will analyze the snippet call to This is basically the inverse operation of [Extract Snippet](/refguide10/snippet/#extract-snippet). {{% alert color="info" %}} -After clicking **Inline snippet**, note that the snippet is not automatically deleted — even if the inlined snippet call was the last remaining usage of the snippet. +After clicking **Inline snippet**, note that the snippet is not automatically deleted—even if the inlined snippet call was the last remaining usage of the snippet. {{% /alert %}} Not every snippet call can be inlined, because certain configurations cannot be represented correctly outside a snippet. Attempting to inline such a snippet call could result in a consistency error or produce inlined content which does not have the same behavior as the original snippet call. In this case, a warning dialog box is shown to ask whether you want to proceed: diff --git a/content/en/docs/refguide10/modeling/resources/document-templates/_index.md b/content/en/docs/refguide10/modeling/resources/document-templates/_index.md index d564a427b68..8793a90dd05 100644 --- a/content/en/docs/refguide10/modeling/resources/document-templates/_index.md +++ b/content/en/docs/refguide10/modeling/resources/document-templates/_index.md @@ -219,7 +219,7 @@ To generate HTML documents, create the HTML manually and use the token replaceme ### Microsoft Word -Generating Microsoft Word documents is no longer supported by Mendix. However, there are several alternative solutions available — both free and paid — maintained by Mendix partners and the community that support Word document generation. These can be found in the [Mendix Marketplace](https://marketplace.mendix.com/link/search/word). +Generating Microsoft Word documents is no longer supported by Mendix. However, there are several alternative solutions available—both free and paid—maintained by Mendix partners and the community that support Word document generation. These can be found in the [Mendix Marketplace](https://marketplace.mendix.com/link/search/word). ### Other Formats diff --git a/content/en/docs/refguide10/runtime/custom-settings/tricky-custom-runtime-settings.md b/content/en/docs/refguide10/runtime/custom-settings/tricky-custom-runtime-settings.md index 629e3c2fc5e..4c50c2be786 100644 --- a/content/en/docs/refguide10/runtime/custom-settings/tricky-custom-runtime-settings.md +++ b/content/en/docs/refguide10/runtime/custom-settings/tricky-custom-runtime-settings.md @@ -101,9 +101,9 @@ And/or you get a **Number of database connections** graph that regularly peaks, It will be tempting to increase the `ConnectionPoolingMaxActive` value to a (much) higher number. But if any of the following are true, this is not the right action to take: * Long running queries show up in the application log – in that case, it makes more sense to try and fix those first, as otherwise you will eventually run in to the same problem, but it will take a bit longer to occur after a (re)start of the application -* A database is running low on memory or is even out of memory regularly — in that case, it makes more sense to upgrade the database node size first +* A database is running low on memory or is even out of memory regularly—in that case, it makes more sense to upgrade the database node size first * In this case, there will probably also be long running queries in your application log -* Only a few user sessions are active at any given time — your application might need refactoring unless you can explain why each user is constantly using several parallel database connections +* Only a few user sessions are active at any given time—your application might need refactoring unless you can explain why each user is constantly using several parallel database connections However, if all of the following are true, you should increase the `ConnectionPoolingMaxActive` value to a (much) higher number: diff --git a/content/en/docs/refguide10/runtime/mendix-client/_index.md b/content/en/docs/refguide10/runtime/mendix-client/_index.md index 1bf7c1e3da8..32aabaf2683 100644 --- a/content/en/docs/refguide10/runtime/mendix-client/_index.md +++ b/content/en/docs/refguide10/runtime/mendix-client/_index.md @@ -237,7 +237,7 @@ The React client dynamically loads these chunks when needed for optimal performa When the app is deployed, the static resources are placed in a separate structure. This includes the following: -* *index.html* – the initial HTML page which is loaded when the end-user starts the Mendix Client — this contains the client configuration and other static non-Mendix content (for example if Google analytics is added to the app). +* *index.html* – the initial HTML page which is loaded when the end-user starts the Mendix Client—this contains the client configuration and other static non-Mendix content (for example if Google analytics is added to the app). * App styling/Atlas – the app-specific CSS styling and static visual elements which define how a page is displayed. * Widgets – both native and web core widgets which are used by this app. * The Dojo client has the following resources: diff --git a/content/en/docs/refguide10/runtime/mendix-client/react.md b/content/en/docs/refguide10/runtime/mendix-client/react.md index 24340e672a0..b8a8c7653e9 100644 --- a/content/en/docs/refguide10/runtime/mendix-client/react.md +++ b/content/en/docs/refguide10/runtime/mendix-client/react.md @@ -127,8 +127,8 @@ Because the reference set selector widget is technically a grid, while combo box The [HTML/JavaScript snippet](/appstore/widgets/html-javascript-snippet/) widget is not supported in the React Client. To leverage React, this widget can be replaced using [HTML Element](/appstore/widgets/htmlelement/) widget or [JavaScript actions](/refguide10/javascript-actions/): -* **Content Type** HTML — The HTML Element can be downloaded [here](https://marketplace.mendix.com/link/component/204843). -* **Content Type** JavaScript — Write the code inside the supported JavaScript actions. If the user needs to execute the code in a certain way, calling the JavaScript action via nanoflow that triggers by [Events](/appstore/widgets/events/) widget is recommended. +* **Content Type** HTML – The HTML Element can be downloaded [here](https://marketplace.mendix.com/link/component/204843). +* **Content Type** JavaScript – Write the code inside the supported JavaScript actions. If the user needs to execute the code in a certain way, calling the JavaScript action via nanoflow that triggers by [Events](/appstore/widgets/events/) widget is recommended. #### Data Grid{#data-grid} diff --git a/content/en/docs/refguide10/runtime/runtime-java/transient-objects-garbage-collecting.md b/content/en/docs/refguide10/runtime/runtime-java/transient-objects-garbage-collecting.md index 99f811bd399..ad2c97596b8 100644 --- a/content/en/docs/refguide10/runtime/runtime-java/transient-objects-garbage-collecting.md +++ b/content/en/docs/refguide10/runtime/runtime-java/transient-objects-garbage-collecting.md @@ -91,7 +91,7 @@ In order to find the root cause of this state size, you need to press Ctrl< ## Server-Side Memory Management -For every request to the Mendix Runtime — be it from the client or via web service calls — objects are cleaned up at the end of the request. This means that if you create a lot of temporary objects in a microflow, they will occupy Runtime memory until the end of the request. +For every request to the Mendix Runtime—be it from the client or via web service calls—objects are cleaned up at the end of the request. This means that if you create a lot of temporary objects in a microflow, they will occupy Runtime memory until the end of the request. ## Read More diff --git a/content/en/docs/refguide9/general/moving-from-8-to-9/moving-from-atlas-2-to-3/_index.md b/content/en/docs/refguide9/general/moving-from-8-to-9/moving-from-atlas-2-to-3/_index.md index 209840834ea..5ddcd7c3f4e 100644 --- a/content/en/docs/refguide9/general/moving-from-8-to-9/moving-from-atlas-2-to-3/_index.md +++ b/content/en/docs/refguide9/general/moving-from-8-to-9/moving-from-atlas-2-to-3/_index.md @@ -108,13 +108,13 @@ theme_atlas2/styles/web/sass/app/_custom-variables.scss To move your custom variable modifications to **Atlas 3**, there are two options: -**Option 1** — If the custom variables apply to the app level, then the modifications should be moved into the **custom-variables** SCSS file of the **Atlas 3 theme** directory: +**Option 1** – If the custom variables apply to the app level, then the modifications should be moved into the **custom-variables** SCSS file of the **Atlas 3 theme** directory: ```text theme/web/custom-variables.scss ``` -**Option 2** — If you want to extract the variables into a reusable module, move them into the **custom-variables** SCSS file of a module you have created in the **themesource** directory: +**Option 2** – If you want to extract the variables into a reusable module, move them into the **custom-variables** SCSS file of a module you have created in the **themesource** directory: ```text themesource/your-module/web/custom-variables.scss @@ -130,13 +130,13 @@ theme_atlas2/styles/web/sass/app/_custom.scss To move your custom styling modifications to **Atlas 3**, there are two options: -**Option 1** — If the custom styling apply to the app level, then the modifications should be moved into the **main** SCSS file of the **Atlas 3 theme** directory: +**Option 1** – If the custom styling apply to the app level, then the modifications should be moved into the **main** SCSS file of the **Atlas 3 theme** directory: ```text theme/web/main.scss ``` -**Option 2** — If you want to extract the custom styling into a reusable module, move them into the **main** SCSS file of a module you have created in the **themesource** directory: +**Option 2** – If you want to extract the custom styling into a reusable module, move them into the **main** SCSS file of a module you have created in the **themesource** directory: ```text themesource/your-module/web/main.scss @@ -152,7 +152,7 @@ theme_atlas2/styles/web/sass/app/_ To move you additional stylesheets that you have added here to **Atlas 3**, there are two options: -**Option 1** — If the additional stylesheets apply to the app level, these changes should be moved into the **web** directory of the **Atlas 3 theme**: +**Option 1** – If the additional stylesheets apply to the app level, these changes should be moved into the **web** directory of the **Atlas 3 theme**: ```text theme/web/_ @@ -160,7 +160,7 @@ theme/web/_ Remember to include `@import ` in *theme/web/main.scss* to include your additional files in the compilation of the SCSS. -**Option 2** — If you want to extract the additional stylesheets into a reusable module, move them to a module you have created in **themesource**: +**Option 2** – If you want to extract the additional stylesheets into a reusable module, move them to a module you have created in **themesource**: ```text themesource/your-module/web/_ @@ -439,7 +439,7 @@ When you have completed the sections above, you may have errors in your error li {{< figure src="/attachments/refguide9/general/moving-from-8-to-9/moving-from-atlas-2-to-3/4-errors.png" alt="errors" class="no-border" >}} -* For errors about the **Phone** or **Tablet** navigation profile no longer existing, right-click the error and select **Go to** which will navigate you to the widget that points to a missing Phone or Tablet profile — use one of these methods to solve the error: +* For errors about the **Phone** or **Tablet** navigation profile no longer existing, right-click the error and select **Go to** which will navigate you to the widget that points to a missing Phone or Tablet profile—use one of these methods to solve the error: * Delete the layout * Delete the widget in the layout * Add the **Phone web** or **Tablet web** navigation profile to your Mendix application diff --git a/content/en/docs/refguide9/general/mxbuild.md b/content/en/docs/refguide9/general/mxbuild.md index c2c1d0c70e8..9b3b5b1f24f 100644 --- a/content/en/docs/refguide9/general/mxbuild.md +++ b/content/en/docs/refguide9/general/mxbuild.md @@ -22,7 +22,7 @@ The table below can help you find the correct MxBuild. Copy a URL from the corre {{% alert color="info" %}} -A build number is included in the version, and this has to be included in the link path mentioned above — for example, `8.12.1.3458` is the 3458 build of the 8.12.1 Studio Pro release. +A build number is included in the version, and this has to be included in the link path mentioned above—for example, `8.12.1.3458` is the 3458 build of the 8.12.1 Studio Pro release. You can find the build number in path of your Mendix installation (for example if your installation looks like this `C:\Program Files\Mendix\8.12.1.3458`, use this URL to get your files: [https://cdn.mendix.com/runtime/mxbuild-8.12.1.3458.tar.gz](https://cdn.mendix.com/runtime/mxbuild-8.12.1.3458.tar.gz)). diff --git a/content/en/docs/refguide9/mobile/designing-mobile-user-interfaces/native-styling.md b/content/en/docs/refguide9/mobile/designing-mobile-user-interfaces/native-styling.md index a8074247964..d44798afc05 100644 --- a/content/en/docs/refguide9/mobile/designing-mobile-user-interfaces/native-styling.md +++ b/content/en/docs/refguide9/mobile/designing-mobile-user-interfaces/native-styling.md @@ -27,7 +27,7 @@ For each app, styling is stored in the **theme** and **themesource** folders. Fr These folders have strict protocols: * Users should only add or change styling in **theme/native** or in their own user-defined module **themesource/your-module/native** folder (if they plan to create a reusable theming module) -* The **native** folder has two files: *main.js* and *custom-variables.js* — when changing the styling, always copy the variable you want to change from *themesource/atlas_core/native/variables.js* to *theme/native/custom-variables.js* +* The **native** folder has two files: *main.js* and *custom-variables.js*—when changing the styling, always copy the variable you want to change from *themesource/atlas_core/native/variables.js* to *theme/native/custom-variables.js* * The *custom-variables.js* file will overwrite the *variables.js* file—do not change anything in the **themesource/atlas_core/native** folder directly, as this makes updating Atlas more difficult * Any variables you want to change or add should be put in *custom-variables.js* * Any classes you want to change or add should be put in *theme/native/main.js* or in your own user-defined module's *themesource/your-module/native/main.js*. diff --git a/content/en/docs/refguide9/modeling/app-explorer/app/navigation/setting-up-the-navigation-structure.md b/content/en/docs/refguide9/modeling/app-explorer/app/navigation/setting-up-the-navigation-structure.md index c1262e7fdfe..9b57f424fcb 100644 --- a/content/en/docs/refguide9/modeling/app-explorer/app/navigation/setting-up-the-navigation-structure.md +++ b/content/en/docs/refguide9/modeling/app-explorer/app/navigation/setting-up-the-navigation-structure.md @@ -79,7 +79,7 @@ To make the best nanoflow home pages, keep the following information in mind: * If a nanoflow contains multiple *Show Page* activities they will be executed in order and each page will be shown respectively (the last page shown will stay open after the nanoflow finishes) * Make sure a *Show Page* activity is called from the startup nanoflow for each possible execution path, otherwise the app will keep showing the splash screen if the nanoflow finishes without executing a *Show Page* activity * Home page nanoflows should have no parameters -* An error in the home page nanoflow can lead to an unusable app state — to avoid this, use error handling for activities that can fail, such as microflow calls +* An error in the home page nanoflow can lead to an unusable app state—to avoid this, use error handling for activities that can fail, such as microflow calls * To improve user experience for long-running nanoflows, show a page as early as possible and then continue executing the rest while showing the progress on that page ## Creating Menu Items {#menu-items} diff --git a/content/en/docs/refguide9/modeling/application-logic/expressions/parse-and-format-date-function-calls.md b/content/en/docs/refguide9/modeling/application-logic/expressions/parse-and-format-date-function-calls.md index 7b86cabc848..4667a9c7cd8 100644 --- a/content/en/docs/refguide9/modeling/application-logic/expressions/parse-and-format-date-function-calls.md +++ b/content/en/docs/refguide9/modeling/application-logic/expressions/parse-and-format-date-function-calls.md @@ -62,7 +62,7 @@ The input parameters are described in the table below: | Value | Type | | ---------------------------- | ------------------------------------------------------------ | -| Date | A string which contains the textual representation of a date — for example `dd/MM/yyyy` or `MM/dd/yyyy` | +| Date | A string which contains the textual representation of a date—for example `dd/MM/yyyy` or `MM/dd/yyyy` | | Format | String | | Default value (**optional**) | Date and time | diff --git a/content/en/docs/refguide9/modeling/integration/rest-services/consumed-rest-services/server-side-paging.md b/content/en/docs/refguide9/modeling/integration/rest-services/consumed-rest-services/server-side-paging.md index 583782c5583..9404117c5b7 100644 --- a/content/en/docs/refguide9/modeling/integration/rest-services/consumed-rest-services/server-side-paging.md +++ b/content/en/docs/refguide9/modeling/integration/rest-services/consumed-rest-services/server-side-paging.md @@ -10,7 +10,7 @@ aliases: ## Introduction -Using server-side paging and sorting for a microflow data source, you can model out how you retrieve data to a single page and ensure it ends up in the correct sorting order. With this approach, you do not need to return all the data to the client — you can just return a single page. This can be helpful for getting data from external sources like a REST service, but can also be useful for a regular retrieve activity in a microflow. To do this, however, you must model the logic for getting the correct data in the microflow itself. +Using server-side paging and sorting for a microflow data source, you can model out how you retrieve data to a single page and ensure it ends up in the correct sorting order. With this approach, you do not need to return all the data to the client—you can just return a single page. This can be helpful for getting data from external sources like a REST service, but can also be useful for a regular retrieve activity in a microflow. To do this, however, you must model the logic for getting the correct data in the microflow itself. This how-to teaches you how to do the following: @@ -26,7 +26,7 @@ Before starting this how-to, make sure you have completed the following prerequi ## Creating a Microflow Data Source -In this section, you will create a JSON structure and import mapping for a REST service. To do this, complete the first four sections of [Consume a REST Service](/howto9/integration/consume-a-rest-service/) — (until **Adding an Input Entity to the Domain Model** is done). +In this section, you will create a JSON structure and import mapping for a REST service. To do this, complete the first four sections of [Consume a REST Service](/howto9/integration/consume-a-rest-service/)—(until **Adding an Input Entity to the Domain Model** is done). You must complete these steps with one crucial change: you must use this REST service URL for your JSON snippet: `https://my-json-server.typicode.com/mendix/howto-api-data/airports`. diff --git a/content/en/docs/refguide9/modeling/integration/rest-services/published-rest-services/published-rest-service/published-rest-operation-parameter.md b/content/en/docs/refguide9/modeling/integration/rest-services/published-rest-services/published-rest-service/published-rest-operation-parameter.md index e34d6f9991d..c351a17db3e 100644 --- a/content/en/docs/refguide9/modeling/integration/rest-services/published-rest-services/published-rest-service/published-rest-operation-parameter.md +++ b/content/en/docs/refguide9/modeling/integration/rest-services/published-rest-services/published-rest-service/published-rest-operation-parameter.md @@ -54,9 +54,9 @@ If the top-level of an [import mapping](/refguide9/import-mappings/) has **Decid If the import mapping has **Decide this at the place where the mapping gets used** checked, then you can define the **If no object was found** action in the REST operation itself. This means you can use the same import mapping in multiple operations, but have a different behavior for each of them. The options are: -* Create – create an object of the correct entity to map to — typically used for **POST** operations +* Create – create an object of the correct entity to map to—typically used for **POST** operations * Ignore – don't map this element and continue parsing -* Error – stop parsing the XML and throw an error — typically used for **PUT** and **PATCH** operations +* Error – stop parsing the XML and throw an error—typically used for **PUT** and **PATCH** operations ### Commit diff --git a/content/en/docs/refguide9/modeling/integration/web-services/consumed-web-services/consume-a-complex-web-service.md b/content/en/docs/refguide9/modeling/integration/web-services/consumed-web-services/consume-a-complex-web-service.md index ead6e3c688c..a58686d8520 100644 --- a/content/en/docs/refguide9/modeling/integration/web-services/consumed-web-services/consume-a-complex-web-service.md +++ b/content/en/docs/refguide9/modeling/integration/web-services/consumed-web-services/consume-a-complex-web-service.md @@ -108,12 +108,12 @@ To configure the web service call, follow these steps: {{< figure src="/attachments/refguide9/modeling/integration/consume-a-complex-web-service/select-web-service-op.png" alt="select web service op" class="no-border" >}} 5. In the **SOAP Request Body** tab of the **Call Web Service** properties editor, you can configure the SOAP body. This contains the parameters needed to execute the web service request. The **Simple**, **Export Mapping**, and **Custom** options enable you to select the type of SOAP body to use. Click **Edit value** and use one of the following to change the domain-to-XML mapping or the variables from the microflow used as input arguments: - * **Simple expressions for each request parameter** — if the imported web service requires only primitive arguments: + * **Simple expressions for each request parameter** – if the imported web service requires only primitive arguments: {{< figure src="/attachments/refguide9/modeling/integration/consume-a-complex-web-service/simple-expression-param.png" class="no-border" >}} - * **Export mappings for each request parameter** or **Export mapping for the entire request** — if the domain model entities need to be mapped to XML elements - * **Custom request template** — for the definition of a custom XML body with parameters: + * **Export mappings for each request parameter** or **Export mapping for the entire request** – if the domain model entities need to be mapped to XML elements + * **Custom request template** – for the definition of a custom XML body with parameters: {{< figure src="/attachments/refguide9/modeling/integration/consume-a-complex-web-service/custom-request-temp.png" alt="custom-request-temp" class="no-border" >}} @@ -126,7 +126,7 @@ To configure the web service call, follow these steps: {{< figure src="/attachments/refguide9/modeling/integration/consume-a-complex-web-service/18581790.png" class="no-border" >}} - * If the return is a primitive, you can store it in a variable by selecting **Store in variable** — **Yes** and provide the **Type** and **Variable**: + * If the return is a primitive, you can store it in a variable by selecting **Store in variable** – **Yes** and provide the **Type** and **Variable**: {{< figure src="/attachments/refguide9/modeling/integration/consume-a-complex-web-service/18581789.png" class="no-border" >}} diff --git a/content/en/docs/refguide9/modeling/menus/translatable-texts/batch-replace.md b/content/en/docs/refguide9/modeling/menus/translatable-texts/batch-replace.md index 0b3588f0179..27eda7b48d8 100644 --- a/content/en/docs/refguide9/modeling/menus/translatable-texts/batch-replace.md +++ b/content/en/docs/refguide9/modeling/menus/translatable-texts/batch-replace.md @@ -10,8 +10,8 @@ weight: 20 There are a number of reasons that you may wish to do this: -* The same text should appear in different places in the app, however, it has been entered inconsistently, for example sometimes with capital letters and sometimes not — if you reuse existing text across your app, this will improve the user experience -* If all occurrences of a piece of text are identical, you only need to enter the translation once — this saves time and improves consistency +* The same text should appear in different places in the app, however, it has been entered inconsistently, for example sometimes with capital letters and sometimes not—if you reuse existing text across your app, this will improve the user experience +* If all occurrences of a piece of text are identical, you only need to enter the translation once—this saves time and improves consistency * If you find better wording for a common label or text, you can change them all at once with a single command {{< figure src="/attachments/refguide9/modeling/menus/translatable-texts/batch-replace/batch-replace.png" class="no-border" >}} diff --git a/content/en/docs/refguide9/modeling/menus/view-menu/changes-pane.md b/content/en/docs/refguide9/modeling/menus/view-menu/changes-pane.md index 613f3cf7c0e..187a5ff0e02 100644 --- a/content/en/docs/refguide9/modeling/menus/view-menu/changes-pane.md +++ b/content/en/docs/refguide9/modeling/menus/view-menu/changes-pane.md @@ -97,7 +97,7 @@ The toolbar at this level contains the following buttons: * **Back** – takes you back to the top level * **Go to** – takes you directly to the selected element -* **Merge** – start the merge process — instructions for resolving conflicts are in the document [New Merge Algorithm with Fine-Grained Conflict Resolution](/refguide9/new-merge-algorithm/) +* **Merge** – start the merge process—instructions for resolving conflicts are in the document [New Merge Algorithm with Fine-Grained Conflict Resolution](/refguide9/new-merge-algorithm/) * **Show purely visual changes** – shows visual changes, such as dragging an entity to a new location in the domain model The grid on the left contains the following columns diff --git a/content/en/docs/refguide9/modeling/pages/common-widget-properties.md b/content/en/docs/refguide9/modeling/pages/common-widget-properties.md index f662306b5d2..9402756c9be 100644 --- a/content/en/docs/refguide9/modeling/pages/common-widget-properties.md +++ b/content/en/docs/refguide9/modeling/pages/common-widget-properties.md @@ -303,8 +303,8 @@ The possible values of a predefined validation are the following: * **Required** – can be used for attributes of *all* data types * **E-mail** – applies to *String* attributes * **Positive number** – applies to *Decimal*, *Integer*, and *Long* attributes -* **Date in the future** – applies to *Date and time* attributes — compares the date *and time* to `[%CurrentDateTime%]` -* **Date in the past** – applies to *Date and time* attributes — compares the date *and time* to `[%CurrentDateTime%]` +* **Date in the future** – applies to *Date and time* attributes—compares the date *and time* to `[%CurrentDateTime%]` +* **Date in the past** – applies to *Date and time* attributes—compares the date *and time* to `[%CurrentDateTime%]` #### Custom Validation{#custom-validation} diff --git a/content/en/docs/refguide9/modeling/pages/on-click-event.md b/content/en/docs/refguide9/modeling/pages/on-click-event.md index 0c185b1403d..2905598d289 100644 --- a/content/en/docs/refguide9/modeling/pages/on-click-event.md +++ b/content/en/docs/refguide9/modeling/pages/on-click-event.md @@ -140,7 +140,7 @@ If the microflow is triggered within a grid and has an object list parameter, th * The client executes the microflow but does not wait for the result * The client checks the server every ten seconds to see whether the microflow is done executing - * Only set the call type to asynchronous if you experience problems — sometimes, if a request takes too long to handle, the request will be sent again by an (impatient) proxy server + * Only set the call type to asynchronous if you experience problems—sometimes, if a request takes too long to handle, the request will be sent again by an (impatient) proxy server ##### Show Progress Bar diff --git a/content/en/docs/refguide9/modeling/pages/page-resources/snippet.md b/content/en/docs/refguide9/modeling/pages/page-resources/snippet.md index 68863f48b02..91b500230f6 100644 --- a/content/en/docs/refguide9/modeling/pages/page-resources/snippet.md +++ b/content/en/docs/refguide9/modeling/pages/page-resources/snippet.md @@ -89,9 +89,9 @@ After selecting **Extract snippet**, a dialog box shows an overview of the snipp The table showing the snippet parameters has the following columns: -* **Name** — the suggested name for the snippet parameter. -* **Type** — the type of the snippet parameter. -* **Substitute for** — the elements in the original document for which the snippet parameter is substituted in the extracted snippet. +* **Name** – the suggested name for the snippet parameter. +* **Type** – the type of the snippet parameter. +* **Substitute for** – the elements in the original document for which the snippet parameter is substituted in the extracted snippet. The names of the snippet parameters can be changed only if they are unique and not already used in the extracted content. The order of the parameters can also be changed. diff --git a/content/en/docs/refguide9/modeling/pages/structure-widgets/snippet-call.md b/content/en/docs/refguide9/modeling/pages/structure-widgets/snippet-call.md index 304a89d0551..6baf4a30680 100644 --- a/content/en/docs/refguide9/modeling/pages/structure-widgets/snippet-call.md +++ b/content/en/docs/refguide9/modeling/pages/structure-widgets/snippet-call.md @@ -58,7 +58,7 @@ When you select **Inline snippet**, Studio Pro will analyze the snippet call to This is basically the inverse operation of [Extract Snippet](/refguide9/snippet/#extract-snippet). {{% alert color="info" %}} -After clicking **Inline snippet**, note that the snippet is not automatically deleted — even if the inlined snippet call was the last remaining usage of the snippet. +After clicking **Inline snippet**, note that the snippet is not automatically deleted—even if the inlined snippet call was the last remaining usage of the snippet. {{% /alert %}} Not every snippet call can be inlined, because certain configurations cannot be represented correctly outside a snippet. Attempting to inline such a snippet call could result in a consistency error or produce inlined content which does not have the same behavior as the original snippet call. In this case, a warning dialog box is shown to ask whether you want to proceed: diff --git a/content/en/docs/refguide9/modeling/resources/scheduled-events/_index.md b/content/en/docs/refguide9/modeling/resources/scheduled-events/_index.md index 2c91fd688ef..f44fc32b81b 100644 --- a/content/en/docs/refguide9/modeling/resources/scheduled-events/_index.md +++ b/content/en/docs/refguide9/modeling/resources/scheduled-events/_index.md @@ -22,19 +22,19 @@ Until Mendix 9.12.0 scheduled events only execute on the cluster leader node, wi As of Mendix 9.12.0 scheduled events have been improved and are being executed using the [task queue](/refguide9/task-queue/), providing an at-least-once guarantee. They will be executed by an arbitrary node in the cluster and support monthly and yearly events properly. -Most importantly, you can no longer specify a specific date and time for task queue-based scheduled events — all events will recur at the specified time, depending on the schedule you set up. +Most importantly, you can no longer specify a specific date and time for task queue-based scheduled events—all events will recur at the specified time, depending on the schedule you set up. In addition, these recurring events will now work as expected in the face of daylight saving time. Mendix 9.12 and above supports the following schedule types: -* **Legacy** – the type that existing before Mendix 9.12.0 — see [Legacy scheduled events](/refguide9/scheduled-events-legacy/) -* **Yearly** – an event that occurs once a year on a specific day or date and at a specified time — see [Yearly scheduled events](/refguide9/scheduled-events-task-queue/#yearly) -* **Monthly** – an event that occurs every so many months on a specific day and at a specified time — see [Monthly scheduled events](/refguide9/scheduled-events-task-queue/#monthly) -* **Weekly** – an event that occurs weekly on specific days and at a specified time — see [Weekly scheduled events](/refguide9/scheduled-events-task-queue/#weekly) -* **Daily** – an event that occurs daily at a specified time — see [Daily scheduled events](/refguide9/scheduled-events-task-queue/#daily) -* **Hourly** – an event that occurs every so many hours — see [Hourly scheduled events](/refguide9/scheduled-events-task-queue/#hourly) -* **Minutes** – an event that occurs every so many minutes — see [Minute scheduled events](/refguide9/scheduled-events-task-queue/#minutes) +* **Legacy** – the type that existing before Mendix 9.12.0—see [Legacy scheduled events](/refguide9/scheduled-events-legacy/) +* **Yearly** – an event that occurs once a year on a specific day or date and at a specified time—see [Yearly scheduled events](/refguide9/scheduled-events-task-queue/#yearly) +* **Monthly** – an event that occurs every so many months on a specific day and at a specified time—see [Monthly scheduled events](/refguide9/scheduled-events-task-queue/#monthly) +* **Weekly** – an event that occurs weekly on specific days and at a specified time—see [Weekly scheduled events](/refguide9/scheduled-events-task-queue/#weekly) +* **Daily** – an event that occurs daily at a specified time—see [Daily scheduled events](/refguide9/scheduled-events-task-queue/#daily) +* **Hourly** – an event that occurs every so many hours—see [Hourly scheduled events](/refguide9/scheduled-events-task-queue/#hourly) +* **Minutes** – an event that occurs every so many minutes—see [Minute scheduled events](/refguide9/scheduled-events-task-queue/#minutes) ## Migration{#migration} @@ -42,10 +42,10 @@ When migrating to version [9.12.0](/releasenotes/studio-pro/9.12/#9120) or above The following cases cannot be converted automatically when the model is upgraded to Mendix 9.12.0 or above: -* The event is not repeating — remove the scheduled event or use the [Java API](/refguide9/task-queue/#queuing) to schedule a one-time action — we no-longer support non-repeating scheduled events. -* The event has a start-time in the future, which we'll stop supporting — change the start-time to a date in the past or switch to a task queue based scheduled event. -* The event has interval type Month or Year, which is translated to 31 and 365 days respectively — use the Monthly or Yearly type instead. -* The event has interval type Seconds — use a schedule event with a 1-minute interval instead — we no-longer support scheduled events which repeat in less than a minute. +* The event is not repeating – remove the scheduled event or use the [Java API](/refguide9/task-queue/#queuing) to schedule a one-time action—we no-longer support non-repeating scheduled events. +* The event has a start-time in the future, which we'll stop supporting – change the start-time to a date in the past or switch to a task queue based scheduled event. +* The event has interval type Month or Year, which is translated to 31 and 365 days respectively – use the Monthly or Yearly type instead. +* The event has interval type Seconds – use a schedule event with a 1-minute interval instead—we no-longer support scheduled events which repeat in less than a minute. * The event has an interval that does not divide precisely into its next biggest interval type, for example an event that executes every 7 minutes; this will execute 8 times per hour, with 4 minutes left, causing it to 'drift' 4 minutes every hour. If it is absolutely critical that a non-supported interval is used, you should schedule the event with interval value of 1 (every minute) and then start your microflow with a decision that checks whether it should continue executing at that particular time. From ccce8efab4404e0d347c473b6a04fcb342d4f77c Mon Sep 17 00:00:00 2001 From: ConnorLand <47385345+ConnorLand@users.noreply.github.com> Date: Wed, 2 Sep 2026 14:08:55 +0200 Subject: [PATCH 25/26] fix dashes --- .../resources/scheduled-events/scheduled-events-legacy.md | 2 +- content/en/docs/refguide9/runtime/communication-patterns.md | 2 +- content/en/docs/refguide9/runtime/mendix-client.md | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/content/en/docs/refguide9/modeling/resources/scheduled-events/scheduled-events-legacy.md b/content/en/docs/refguide9/modeling/resources/scheduled-events/scheduled-events-legacy.md index fd9760b7c59..1b7310fee80 100644 --- a/content/en/docs/refguide9/modeling/resources/scheduled-events/scheduled-events-legacy.md +++ b/content/en/docs/refguide9/modeling/resources/scheduled-events/scheduled-events-legacy.md @@ -36,7 +36,7 @@ A `ScheduledEventInformation` object is created every time the scheduled event d * **Status** – the current status of this run of the scheduled event: * **Running** – the event is currently running and has not yet ended * **Completed** – the event has completed successfully - * **Error** – the event completed with an error — you can find the error on the error log using the *StartTime* and *EndTime* to locate it if necessary + * **Error** – the event completed with an error—you can find the error on the error log using the *StartTime* and *EndTime* to locate it if necessary * **Stopped** – the scheduled event was stopped before completion, for example by the app being stopped or a cluster node becoming unhealthy {{% alert color="warning" %}} diff --git a/content/en/docs/refguide9/runtime/communication-patterns.md b/content/en/docs/refguide9/runtime/communication-patterns.md index e50fb5628e1..4ca0cf0a09c 100644 --- a/content/en/docs/refguide9/runtime/communication-patterns.md +++ b/content/en/docs/refguide9/runtime/communication-patterns.md @@ -96,7 +96,7 @@ The Mendix Client uses a REST-like protocol to request data from the Runtime Ser } ``` -The XPath expression states what data is needed. This can be an object containing data of an entity — or just some attributes of an object — as required by the application. +The XPath expression states what data is needed. This can be an object containing data of an entity—or just some attributes of an object—as required by the application. The schema section can be used to specify additional restrictions on what data is required (what attributes and how many objects). This approach ensures that the amount of data transferred between Runtime Server and Mendix Client is minimized. diff --git a/content/en/docs/refguide9/runtime/mendix-client.md b/content/en/docs/refguide9/runtime/mendix-client.md index 42962be18a1..0c097743f83 100644 --- a/content/en/docs/refguide9/runtime/mendix-client.md +++ b/content/en/docs/refguide9/runtime/mendix-client.md @@ -208,11 +208,11 @@ When the end-user launches an app in the browser, it triggers the following flow When the app is deployed, the static resources are placed in a separate structure. This includes the following: -* index.html – the initial HTML page which is loaded when the end-user starts the Mendix Client — this contains the client configuration and other static non-Mendix content (for example if Google analytics is added to the app) +* index.html – the initial HTML page which is loaded when the end-user starts the Mendix Client—this contains the client configuration and other static non-Mendix content (for example if Google analytics is added to the app) * mxui.js – the main Mendix Client code * app styling/Atlas – the app-specific CSS styling and static visual elements which define how a page is displayed * widgets – both native and web core widgets which are used by this app -* page definitions – xml page definitions which tell the Mendix Client what the pages for this app look like +* page definitions – XML page definitions which tell the Mendix Client what the pages for this app look like #### Cookies{#cookies} From 4af01483a1c431d004a394756af1ab704bd2ec04 Mon Sep 17 00:00:00 2001 From: ConnorLand <47385345+ConnorLand@users.noreply.github.com> Date: Wed, 2 Sep 2026 14:12:40 +0200 Subject: [PATCH 26/26] fix dashes --- .../custom-settings/tricky-custom-runtime-settings.md | 4 ++-- .../en/docs/refguide9/runtime/data-storage/saphana.md | 2 +- .../transient-objects-garbage-collecting.md | 2 +- .../troubleshoot-git-issues.md | 8 +++----- .../docs/releasenotes/deployment/mendix-cloud/2021.md | 4 ++-- .../deployment/mendix-for-private-cloud.md | 10 +++++----- content/en/docs/releasenotes/mobile/hybrid-app.md | 2 +- content/en/docs/releasenotes/mobile/native-support.md | 2 +- content/en/docs/releasenotes/studio-pro/10/10.24.md | 2 +- content/en/docs/support/submit-support-request.md | 8 ++++---- 10 files changed, 21 insertions(+), 23 deletions(-) diff --git a/content/en/docs/refguide9/runtime/custom-settings/tricky-custom-runtime-settings.md b/content/en/docs/refguide9/runtime/custom-settings/tricky-custom-runtime-settings.md index 398bde2a80f..f9e472ab1e3 100644 --- a/content/en/docs/refguide9/runtime/custom-settings/tricky-custom-runtime-settings.md +++ b/content/en/docs/refguide9/runtime/custom-settings/tricky-custom-runtime-settings.md @@ -101,9 +101,9 @@ And/or you get a **Number of database connections** graph that regularly peaks, It will be tempting to increase the `ConnectionPoolingMaxActive` value to a (much) higher number. But if any of the following are true, this is not the right action to take: * Long running queries show up in the application log – in that case, it makes more sense to try and fix those first, as otherwise you will eventually run in to the same problem, but it will take a bit longer to occur after a (re)start of the application -* A database is running low on memory or is even out of memory regularly — in that case, it makes more sense to upgrade the database node size first +* A database is running low on memory or is even out of memory regularly—in that case, it makes more sense to upgrade the database node size first * In this case, there will probably also be long running queries in your application log -* Only a few user sessions are active at any given time — your application might need refactoring unless you can explain why each user is constantly using several parallel database connections +* Only a few user sessions are active at any given time—your application might need refactoring unless you can explain why each user is constantly using several parallel database connections However, if all of the following are true, you should increase the `ConnectionPoolingMaxActive` value to a (much) higher number: diff --git a/content/en/docs/refguide9/runtime/data-storage/saphana.md b/content/en/docs/refguide9/runtime/data-storage/saphana.md index 4a06c717b1f..59b8a1ef664 100644 --- a/content/en/docs/refguide9/runtime/data-storage/saphana.md +++ b/content/en/docs/refguide9/runtime/data-storage/saphana.md @@ -12,7 +12,7 @@ The behavior of Mendix using an SAP HANA database has some minor differences whe Retrieving an entity that is sorted on an attribute of one of its associated entities is not supported in SAP HANA. -For example, you have two associated entities — **Person** and **Address** — and they have the **name** and **street** attributes, respectively. You cannot retrieve `Person` objects sorted on `Person_Address/Address/street`. +For example, you have two associated entities—**Person** and **Address**—and they have the **name** and **street** attributes, respectively. You cannot retrieve `Person` objects sorted on `Person_Address/Address/street`. {{% alert color="info" %}} This limitation has been removed in Studio Pro [9.8.0](/releasenotes/studio-pro/9.8/) and above, and also from [9.6.3](/releasenotes/studio-pro/9.6/#963). diff --git a/content/en/docs/refguide9/runtime/runtime-java/transient-objects-garbage-collecting.md b/content/en/docs/refguide9/runtime/runtime-java/transient-objects-garbage-collecting.md index d6195971864..3ae13594d20 100644 --- a/content/en/docs/refguide9/runtime/runtime-java/transient-objects-garbage-collecting.md +++ b/content/en/docs/refguide9/runtime/runtime-java/transient-objects-garbage-collecting.md @@ -91,7 +91,7 @@ In order to find the root cause of this state size, you need to press Ctrl< ## Server-Side Memory Management -For every request to the Mendix Runtime — be it from the client or via web service calls — objects are cleaned up at the end of the request. This means that if you create a lot of temporary objects in a microflow, they will occupy Runtime memory until the end of the request. +For every request to the Mendix Runtime—be it from the client or via web service calls—objects are cleaned up at the end of the request. This means that if you create a lot of temporary objects in a microflow, they will occupy Runtime memory until the end of the request. ## Read More diff --git a/content/en/docs/refguide9/version-control/version-control-troubleshooting/troubleshoot-git-issues.md b/content/en/docs/refguide9/version-control/version-control-troubleshooting/troubleshoot-git-issues.md index 09f727aa14e..83b6e7f36c0 100644 --- a/content/en/docs/refguide9/version-control/version-control-troubleshooting/troubleshoot-git-issues.md +++ b/content/en/docs/refguide9/version-control/version-control-troubleshooting/troubleshoot-git-issues.md @@ -103,8 +103,6 @@ The properties described below might contain personal information. We advise you There are properties of the Git repository that provide you with the information useful for troubleshooting different issues. Execute the following in the command line in the app’s folder: -`git status -b` — provides information on the current state of the repository - -`git remote -v` — lists the remotes specified for the repository - -`git config --list --show-origin --show-scope` — provides information on user's Git config +* `git status -b` – Provides information on the current state of the repository. +* `git remote -v` – Lists the remotes specified for the repository. +* `git config --list --show-origin --show-scope` – Provides information on user's Git config. diff --git a/content/en/docs/releasenotes/deployment/mendix-cloud/2021.md b/content/en/docs/releasenotes/deployment/mendix-cloud/2021.md index 58bcd5da20a..9a04dff239f 100644 --- a/content/en/docs/releasenotes/deployment/mendix-cloud/2021.md +++ b/content/en/docs/releasenotes/deployment/mendix-cloud/2021.md @@ -237,7 +237,7 @@ Everyone who logs onto the app with a username and password is considered an app **When and how does this happen?** -In connected environments, this usage information will be sent back to Mendix automatically, at regular intervals — by default this is set to once every day. This transmission will take place at around(randomized) midnight. Data will also be sent when the app is restarted. +In connected environments, this usage information will be sent back to Mendix automatically, at regular intervals—by default this is set to once every day. This transmission will take place at around(randomized) midnight. Data will also be sent when the app is restarted. ### March 3, 2021 @@ -245,7 +245,7 @@ In connected environments, this usage information will be sent back to Mendix au * add json validation * add stricter API path validation (for example, a trailing `/` on the API path will result in `API not found`) * return differently formatted error messages for unhandled or unexpected errors - * the package name in the [Upload Package](/apidocs-mxsdk/apidocs/deploy-api/#upload-package) call of the deploy API must be part of the query — it can no longer be passed in the body of the request + * the package name in the [Upload Package](/apidocs-mxsdk/apidocs/deploy-api/#upload-package) call of the deploy API must be part of the query—it can no longer be passed in the body of the request If you encounter errors using APIs, please ensure that the format matches the documentation exactly before contacting Mendix Support. Additional or amended headers or request bodies may cause the API to fail. diff --git a/content/en/docs/releasenotes/deployment/mendix-for-private-cloud.md b/content/en/docs/releasenotes/deployment/mendix-for-private-cloud.md index 767a3da2746..ba67d1b1809 100644 --- a/content/en/docs/releasenotes/deployment/mendix-for-private-cloud.md +++ b/content/en/docs/releasenotes/deployment/mendix-for-private-cloud.md @@ -1334,10 +1334,10 @@ Your build may fail if you try to deploy the same deployment package more than o #### Mendix Operator v2.6.0{#2.6.0} * We improved the default health check configuration by allowing the use of Kubernetes startup probes. This feature improves the reliability of environments that need more time to initialize, for example when executing database migration startup microflows. -* We now allow you to customize the Kubernetes `terminationGracePeriodSeconds` attribute for apps, allowing an app to have more time to perform a clean shutdown — for example to close database connections and complete microflows and scheduled events that are already running. +* We now allow you to customize the Kubernetes `terminationGracePeriodSeconds` attribute for apps, allowing an app to have more time to perform a clean shutdown—for example to close database connections and complete microflows and scheduled events that are already running. * We fixed a build error which happened when an MDA included a data snapshot. * We resolved an issue where the sidecar container didn’t process the shutdown signal, even when the app container was stopped (this meant that stopping an app took 30 seconds) -* We have disabled the `enableServiceLinks` Kubernetes feature — this prevents app pods from receiving a list of all services running in a namespace through environment variables. +* We have disabled the `enableServiceLinks` Kubernetes feature—this prevents app pods from receiving a list of all services running in a namespace through environment variables. * When connecting to the Development Portal, the Mendix Gateway Agent will now trust CAs specified through [Custom TLS](/developerportal/deploy/standard-operator/#custom-tls) * We fixed an issue where the Operator was restarting the build pod when using AWS identity webhooks. @@ -1716,7 +1716,7 @@ After upgrading the Mendix Operator, Mendix recommends downloading the latest ve ### December 10, 2020 -#### Mendix on Kubernetes — Mendix Operator v1.7.0 and Mendix Gateway Agent v1.6.0 +#### Mendix on Kubernetes—Mendix Operator v1.7.0 and Mendix Gateway Agent v1.6.0 * We have added a configuration option to add custom Certificate Authorities which should be trusted by the Mendix Operator and app environments. * We have added a Strict TLS mode to PostgreSQL, SQL Server, and Minio, which will only allow connections to the database and file storage if there is a valid and trusted TLS certificate. Together with the custom Certificate Authorities option, this will ensure that Mendix apps are connecting to the database and file storage over a secured connection. Strict TLS mode should only be used with apps created in Mendix 8.15.2 (or later versions), earlier Mendix versions will fail to start when validating the TLS certificate. @@ -1734,7 +1734,7 @@ To upgrade an existing installation of Private Cloud to this version, follow the ### October 30, 2020 -#### Mendix on Kubernetes — Mendix Operator v1.6.1 +#### Mendix on Kubernetes—Mendix Operator v1.6.1 * We have fixed a bug where building and pushing an image into some registries (such as coding.net) would fail with an authentication error. * If creating a database or file storage for a new environment fails, the Mendix Operator will now attempt to clean up (roll back) temporary resources. In this case, a manual cleanup is not required. In addition, log messages for such failed attempts will provide details on what what was created and rolled back. @@ -1779,7 +1779,7 @@ To upgrade an existing installation of Private Cloud to this version, follow the * We added an option to configure TLS options per environment, overriding the default namespace settings. * OpenShift Routes now support all features which were previously only available in Ingress endpoints. * We now only monitor the selected endpoint type (OpenShift Routes or Ingress), removing an error message which appeared when starting the operator in a non-OpenShift cluster. -* We have added several features which make it possible to use [cert-manager](https://cert-manager.io/) with Ingress — this allows you to have TLS certificates generated on-demand. +* We have added several features which make it possible to use [cert-manager](https://cert-manager.io/) with Ingress—this allows you to have TLS certificates generated on-demand. * We added an option to specify an environment's TLS certificate, or load it from a Kubernetes secret. * When TLS is enabled, Mendix on Kubernetes Portal will now display the App URL with an https:// prefix. * We have fixed an issue with connecting to PostgreSQL with TLS and will use encryption by default. (Ticket 106308) diff --git a/content/en/docs/releasenotes/mobile/hybrid-app.md b/content/en/docs/releasenotes/mobile/hybrid-app.md index 13b2e51b1d3..f178a3267a2 100644 --- a/content/en/docs/releasenotes/mobile/hybrid-app.md +++ b/content/en/docs/releasenotes/mobile/hybrid-app.md @@ -115,7 +115,7 @@ With this release we updated all PhoneGap dependencies to the latest supported v **Release date: August 15, 2019** * We fixed an issue where Android devices with older WebView versions might get stack in a loading loop. -* We fixed an unhandled exception with Secure Storage when using a PIN view. Users on devices with no OS-level security features enabled — like pin, password, biometrics — will now be prompted to enable any of them before proceeding to set their app's PIN. +* We fixed an unhandled exception with Secure Storage when using a PIN view. Users on devices with no OS-level security features enabled—like pin, password, biometrics—will now be prompted to enable any of them before proceeding to set their app's PIN. ### Hybrid App Base 4.1.3 / Hybrid App Template 4.1.3 diff --git a/content/en/docs/releasenotes/mobile/native-support.md b/content/en/docs/releasenotes/mobile/native-support.md index 9c8e0bc765e..41b12080841 100644 --- a/content/en/docs/releasenotes/mobile/native-support.md +++ b/content/en/docs/releasenotes/mobile/native-support.md @@ -13,7 +13,7 @@ For more information on Mendix support guidelines, see [LTS, MTS, and Monthly Re ## Native Mobile Support Duration -Native mobile apps have shorter support durations than non-native because the operating systems they run on introduce major updates each year — often with breaking changes. Regular updates are necessary to ensure compatibility with the latest versions of these operating systems. +Native mobile apps have shorter support durations than non-native because the operating systems they run on introduce major updates each year—often with breaking changes. Regular updates are necessary to ensure compatibility with the latest versions of these operating systems. The reduced support durations for native mobile apps do not apply to progressive web apps. Progressive web apps follow the [standard Mendix support durations](/releasenotes/studio-pro/lts-mts/). diff --git a/content/en/docs/releasenotes/studio-pro/10/10.24.md b/content/en/docs/releasenotes/studio-pro/10/10.24.md index ca4489aa3ef..a01d956ed36 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.24.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.24.md @@ -675,7 +675,7 @@ We fixed an issue where long-running after-startup microflows caused other nodes ### Fixes -* **10.24.7 Fix** — We fixed a critical issue in 10.24.7 (only) where application startup would fail when upgrading a database originally created with a Mendix version before 10.17 and using foreign key constraints. +* **10.24.7 Fix** – We fixed a critical issue in 10.24.7 (only) where application startup would fail when upgrading a database originally created with a Mendix version before 10.17 and using foreign key constraints. * We fixed an issue where changing a MxAdmin user's name in Studio Pro does not result in changing MxAdmin user's name in database. (Ticket 255505) * We fixed an issue where SVG images would load with incorrect dimensions. (Ticket 258901) * When using Oracle, we no longer use `dbms.lob_substr` in the generated SQL for enumeration attributes with values shorter than 2000 characters. (Ticket 259283) diff --git a/content/en/docs/support/submit-support-request.md b/content/en/docs/support/submit-support-request.md index a56445ac1da..28ac4c215dd 100644 --- a/content/en/docs/support/submit-support-request.md +++ b/content/en/docs/support/submit-support-request.md @@ -188,10 +188,10 @@ If you are reporting a security finding or other security-related issue, for exa 1. Review the [Frequently Asked Questions - Security](/support/security-findings-faq/) document so see if your finding is described there. Follow instructions there for mitigating your finding, including updating and cleaning up Java libraries. If the finding is addressed there as not having any security implications for your app it is unlikely that raising a ticket will give you more information. 1. If the issue has been reported by a scanning tool, please check that the results are not caused by factors outside the Mendix app (for example, tool settings or network traffic routing issues). 1. Include the following information: - * A description of the issue found — please submit only one finding per support ticket. - * Where the issue was found — for example, which URL, which Mendix version, the App/project ID? - * How the issue was found — for example, was it from scanning an app and, if so, which tool was used? - * A copy of an app containing the reported issue — see [How To Export A Mendix App Package](/refguide/export-app-package-dialog/) for instructions on creating an app package. + * A description of the issue found – please submit only one finding per support ticket. + * Where the issue was found – for example, which URL, which Mendix version, the App/project ID? + * How the issue was found – for example, was it from scanning an app and, if so, which tool was used? + * A copy of an app containing the reported issue – see [How To Export A Mendix App Package](/refguide/export-app-package-dialog/) for instructions on creating an app package. * An actual exploitation scenario, if possible, including steps showing how to reproduce and exploit a vulnerability. {{% alert color="info" %}}