Skip to content

Commit 1224332

Browse files
committed
Merge branch 'development' into pr/8548
2 parents 6b07380 + 1027ec2 commit 1224332

File tree

14 files changed

+131
-90
lines changed

14 files changed

+131
-90
lines changed

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

Lines changed: 23 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -366,10 +366,6 @@ The return type of the expression must be defined using either the `type` or the
366366

367367
##### Fixed Return Type
368368

369-
{{% alert color="info" %}}
370-
The `type` attribute was required in Mendix [9.19](/releasenotes/studio-pro/9.19/) and below.
371-
{{% /alert %}}
372-
373369
You can set a fixed return type for your expression property with one of the supported types from below.
374370

375371
| Supported Return Types | Corresponding Types Client Components Receive |
@@ -382,10 +378,6 @@ You can set a fixed return type for your expression property with one of the sup
382378

383379
##### Return Type Assignable to an Attribute
384380

385-
{{% alert color="info" %}}
386-
The `assignableTo` attribute was introduced in Mendix [9.20](/releasenotes/studio-pro/9.20/).
387-
{{% /alert %}}
388-
389381
You can use `assignableTo` to specify that the return type of the expression property should depend on the attribute property with the given property path. This means that the value of the expression will be assignable to the attribute configured for that attribute property (using [`setValue`](/apidocs-mxsdk/apidocs/pluggable-widgets-client-apis/#editable-value)).
390382

391383
The client component will receive a `DynamicValue<T>` where `T` depends on the possible types of the target attribute. If the attribute property allows for more than one type, the type of the actual value depends on the attribute that has been configured.
@@ -574,14 +566,6 @@ Then the Studio Pro UI for the property appears like this:
574566

575567
### Association {#association}
576568

577-
{{% alert color="info" %}}
578-
This property type was introduced in Mendix [9.13](/releasenotes/studio-pro/9.13/).
579-
{{% /alert %}}
580-
581-
{{% alert color="info" %}}
582-
The ability to link association properties to a data source was introduced in Mendix [9.17](/releasenotes/studio-pro/9.17/).
583-
{{% /alert %}}
584-
585569
The association property type allows a widget to work directly with both reading and writing associations between entities. Depending on the widget's purposes, a widget should define association types it supports.
586570

587571
If a `dataSource` attribute is not specified the client will receive a `ReferenceValue` for references (singular references), a `ReferenceSetValue` for reference sets (multiple references), or a union of them. For more information, see the [ModifiableValue](/apidocs-mxsdk/apidocs/pluggable-widgets-client-apis/#modifiable-value) section of *Client APIs Available to Pluggable Widgets*.
@@ -710,10 +694,6 @@ Then the Studio Pro UI for the property appears like this:
710694

711695
The datasource property allows widgets to work with object lists. The client component will receive value prop of type [`ListValue`](/apidocs-mxsdk/apidocs/pluggable-widgets-client-apis-list-values/#listvalue) and may be used with [`action`](#action), [`attribute`](#attribute), [`association`](#association), [`expression`](#expression), [`text template`](#texttemplate), and [`widgets`](#widgets) properties. See [Data Sources](/refguide/data-sources/#list-widgets) for available data source types.
712696

713-
{{% alert color="info" %}}
714-
The ability to link association properties to a data source was introduced in Mendix [9.17](/releasenotes/studio-pro/9.17/).
715-
{{% /alert %}}
716-
717697
If no data source has been configured by the user, any properties that are linked to the datasource property are automatically omitted from the props passed to the client component (even if they are marked as required).
718698

719699
{{% alert color="warning" %}}
@@ -722,12 +702,29 @@ Only list datasources are supported, therefore specifying `isList="true"` is req
722702

723703
#### XML Attributes
724704

725-
| Attribute | Required | Attribute Type | Description |
726-
|------------|----------|----------------|---------------------------------------------------------------------------------|
727-
| `type` | Yes | String | Must be `datasource` |
728-
| `key` | Yes | String | See [key](#key) |
729-
| `isList` | Yes | Boolean | Must be `true` |
730-
| `required` | No | Boolean | This decides if the user is required to specify a datasource, `true` by default |
705+
| Attribute | Required | Attribute Type | Description |
706+
|----------------|----------|----------------|------------------------------------------------------------------------------------------------------------|
707+
| `type` | Yes | String | Must be `datasource` |
708+
| `key` | Yes | String | See [key](#key) |
709+
| `isList` | Yes | Boolean | Must be `true` |
710+
| `required` | No | Boolean | This decides if the user is required to specify a datasource, `true` by default |
711+
| `defaultType` | No | String | Default type for the property, supported values are `Database`, `Microflow`, `Nanoflow`, and `Association` |
712+
| `defaultValue` | No | String | Default value for the property, see [Default Data Sources](#data-source-defaults) |
713+
714+
##### Data Source Defaults {#data-source-defaults}
715+
716+
{{% alert color="info" %}}
717+
The `defaultType` and `defaultValue` attributes for datasources were introduced in Mendix [10.16](/releasenotes/studio-pro/10.16/).
718+
{{% /alert %}}
719+
720+
You can use the `defaultType` and `defaultValue` attributes to configure default data sources for your widget. Unless overridden in Studio Pro, the widget will attempt to configure the data source according to its defaults. Both attributes need to be set for the defaults to be applied.
721+
722+
The format of `defaultValue` depends on the chosen `defaultType`:
723+
724+
| Data source type | Format | Example |
725+
|--------------------------|-------------|-----------------------------------------------------------------------|
726+
| `Database` `Association` | Entity Path | `ModuleName.EntityName` or `ModuleName.A/ModuleName.A_B/ModuleName.B` |
727+
| `Microflow` `Nanoflow` | Document ID | `ModuleName.DocumentName` |
731728

732729
#### Studio Pro UI
733730

content/en/docs/refguide/java-programming/managed-dependencies.md

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,10 +195,23 @@ If the above options don't work for you, please reach out to [Mendix Support](ht
195195

196196
## Marketplace Modules
197197

198-
Dependency information is included per module and included in Marketplace Modules. The actual artifacts (`.jar` files) are not part of the module. They are downloaded to the `vendorlib` folder automatically when synchronization is run when the module is imported.
198+
Dependency information is included for each module and included in Marketplace Modules. Dependencies are downloaded to the `vendorlib` folder automatically when synchronization is run when the module is imported. Artifacts (`.jar` files) will also be included in the exported module packages. These are used if the module is imported in a Studio Pro which has [Gradle synchronization disabled](#disabling-synchronization).
199199

200200
If you have an issue with the managed dependencies of a Marketplace module, you can revert to an earlier version by removing the new version and downloading an earlier version from the Marketplace.
201201

202+
## Offline Usage {#disabling-synchronization}
203+
204+
{{% alert color="info" %}}
205+
This feature was introduced in Mendix versions 10.16.0, 10.12.7, and 10.6.17.
206+
{{% /alert %}}
207+
208+
In the Deployment tab of the Studio Pro preferences [Gradle synchronization](/refguide/preferences-dialog/#gradle-synchronization) can be disabled.
209+
This means that applications can be started even if Studio Pro is offline or in an air gapped environment.
210+
211+
{{% alert color="info" %}}
212+
This prevents managed dependencies being synchronized, potentially causing compile errors and version conflicts. In addition, you cannot generate SBOMs while Gradle synchronization is disabled. Mendix recommends that air gapped users configure a [custom repository](#custom-repos) instead of relying on disabling Gradle synchronization.
213+
{{% /alert %}}
214+
202215
## Troubleshooting
203216

204217
There can be multiple reasons the dependencies cannot be resolved. See the following for some common failure causes with steps on how to fix the issue.

content/en/docs/refguide/mobile/introduction-to-mobile-technologies/_index.md

Lines changed: 34 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -8,36 +8,52 @@ weight: 20
88

99
Mendix supports different technologies to build mobile applications. Besides responsive web apps, you can build native mobile apps or progress web apps. You can use pages, widgets, nanoflows, JavaScript actions, microflows, and many other familiar elements to build your app.
1010

11-
These different technologies (for example, responsive, native phone) can be configured in a single model using navigation profiles. Mobile profiles can be added and removed separately. If you add a profile, you must also provide a home page for it. For more information on navigation profiles, see [Navigation](/refguide/navigation/).
11+
These different technologies (for example: responsive, native phone) can be configured in a single model using navigation profiles. Mobile profiles can be added and removed separately. If you add a profile, you must also provide a home page for it. For more information on navigation profiles, see [Navigation](/refguide/navigation/).
1212

13-
## Native Mobile Apps {#nativemobile}
13+
## Progressive Web Apps {#pwa}
1414

15-
Studio Pro makes it is possible to build fully native mobile apps. Native mobile apps do not render inside a web view, but use native UI elements instead. This results in fast performance, smooth animations, natural interaction patterns (like swipe gestures), and improved access to all native device capabilities. To make such responsive native mobile apps, Mendix leverages the popular open-source framework [React Native](https://facebook.github.io/react-native/).
15+
Progressive web apps (PWAs) are an evolution of traditional web apps. Overall, PWAs tend to behave more like native mobile apps. One key difference, however, is that PWAs are not distributed via app stores but can be accessed directly in the browser.
1616

17-
For more information, see [Native Mobile](/refguide/mobile/introduction-to-mobile-technologies/native-mobile/).
17+
Progressive web apps have several advantages over regular web applications:
1818

19-
## Progressive Web Apps {#pwa}
19+
* They can be installed by adding them to the home page on Android and iOS devices. This makes the app easily accessible for the user, provides more screen space to the app by hiding the browser controls, and stores the offline data separate from the browser making it more secure.
20+
* They can be used offline. PWAs can be configured to pre-load all resources allowing them to start while the device is offline. They can also make use of offline data allowing full offline operation.
21+
* They can make use of more native capabilities, such as push notifications.
22+
* They can be deployed using mobile device management solutions.
2023

21-
Progressive web apps (PWAs) are an evolution of traditional web apps. Overall, PWAs tend to behave more like native mobile apps. One key difference, however, is that PWAs do not need to be distributed via an app store but can be accessed directly via the browser.
24+
Publishing PWAs is the same as publishing regular web applications with Mendix. Once the application is deployed, users can simply access the PWA by opening the application URL. Considering PWA and web apps are equally easy to publish, we recommend you use PWAs to take advantage of their additional capabilities.
2225

23-
Progressive web apps have three main characteristics:
26+
For more information, see [Progressive Web App](/refguide/mobile/introduction-to-mobile-technologies/progressive-web-app/).
2427

25-
* **Installable** – PWAs let you add your app to your user’s home screen and start a full screen app. This makes PWAs feel more fully-capable native apps.
26-
* **Reliable** – Using service workers, PWAs can work offline or partially offline. Mendix PWAs can work partially offline (resources like styling, pages, and images are cached) or fully offline (like native mobile apps).
27-
* **Capable** – PWAs can leverage several device capabilities like the camera and location, and can offer support for web push notifications. Note that support for features depend on which browser is used.
28+
## Native Mobile Apps {#nativemobile}
2829

29-
For more information, see [Progressive Web App](/refguide/mobile/introduction-to-mobile-technologies/progressive-web-app/).
30+
Mendix allows you to build fully native mobile apps (based on [React Native](https://facebook.github.io/react-native/)). Native mobile apps have several advantages over web-based mobile apps but they require more effort to develop and publish:
31+
32+
* They leverage native UI elements instead of web components in a web view. This results in high performance, smooth animations and benefits from natural interactions (like swipe gestures) provided by the mobile operating system.
33+
* They can make use of the native navigation stack and use the beautiful page transitions supplied by the mobile operating system.
34+
* They deeply integrate with the mobile device and can use almost everything the mobile operating system offers, such as fast barcode scanning, immersive augmented reality, and advanced connectivity options such as Bluetooth and NFC.
35+
* They can securely and efficiently store large amounts of data, including the ability to encrypt all data stored on the mobile device.
36+
* They can be extended with custom native functionality, for example, to integrate with the hardware scanner or special Android devices.
37+
* They are published and distributed via app stores.
38+
39+
Building native mobile apps is inherently more complex than building web-based apps. They are distributed via app stores, which requires additional steps for deploying and updating the mobile app. Further, they are always offline-first, which requires additional considerations when designing the domain model.
40+
41+
For more information, see [Native Mobile](/refguide/mobile/introduction-to-mobile-technologies/native-mobile/).
3042

3143
## Deciding Between a PWA or Native Mobile App
3244

33-
Mendix offers options to build both native mobile apps and PWAs. Depending on your app's requirements or constraints, one or the other can be a better fit. It is also possible to have both native mobile and PWA profiles in a single app, which can run next to each other and overlap significantly.
45+
Mendix offers building native mobile apps and PWAs, enabling companies to choose the right technology for the right use case. Depending on your app's requirements or constraints, one or the other can be a better fit. It is also possible to have both native mobile and PWA profiles in a single app, running next to each other.
46+
47+
In general, Mendix recommends building a PWA for your mobile app project. PWAs are easier to build and deploy than native mobile apps, and in many cases, companies can achieve everything needed with them. However, there can be also good reasons to build a native mobile app instead of a PWA. Consult the following list to help decide between the two technologies:
48+
49+
1. **User Experience**: If providing the best possible user experience is key for your mobile app, for example when targeting consumers in a public app, then you should build a native mobile app. The native UI elements, page transitions, animations, and gestures of a native mobile app allow you to build superior experiences that are more polished and run smoother than web-based applications.
50+
51+
1. **App Store Publishing**: The Apple AppStore and Google Play Store serve as distribution platforms for millions of apps. If your app should also be published via these stores, you should build a native mobile app. Mendix PWAs cannot be published via these stores without additional steps and third-party solutions. Note that publishing your app via these stores can be complex while providing only limited benefit especially for apps that are primarily used internally.
3452

35-
{{% alert color="warning" %}}
36-
PWAs have the following limitation:
53+
1. **Deep Device Integrations**: PWAs can access a multitude of device capabilities via Web APIs, including the camera, GPS, and push notifications (see [Progressive Web App](/refguide/mobile/introduction-to-mobile-technologies/progressive-web-app/#accessing-device-features) for a comprehensive list). However, not everything is supported. If your app requires a capability that is not supported via Web APIs or needs to execute custom native code, you should build a native mobile app.
3754

38-
* Offline data is not supported for PWAs on iOS
39-
{{% /alert %}}
55+
1. **Offline Data**: PWAs also allow offline-first operation. However, the size of the database is limited and cannot be stored securely. If your app requires storing large amounts of data reliably or requires that offline data is encrypted, build a native mobile app.
4056

41-
Use the following diagram to decide whether to build a PWA, a native mobile app, or both:
57+
1. **Developer Experience**: If most of your developers and designers are experienced in web technologies (and you have no developers familiar with building and publishing native mobile apps), you should build a PWA. Training your team to learn new native technologies while simultaneously developing apps can delay application production.
4258

43-
{{< figure src="/attachments/refguide/mobile/progressive-web-app/native-or-pwa.png" alt="Native app or PWA" width="350" class="no-border" >}}
59+
If you decide to build a native mobile app after considering these requirements, please consult our documentation on [Building Efficient Mobile Apps](/refguide/mobile/building-efficient-mobile-apps/) and [Building, Testing, and Distributing Apps](/refguide/mobile/distributing-mobile-apps/).

content/en/docs/refguide/mobile/introduction-to-mobile-technologies/progressive-web-app.md

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,6 @@ As PWAs are basically web apps with additional features, Mendix offers these fea
3434
PWAs require a version of Atlas 2 or above.
3535
{{% /alert %}}
3636

37-
{{% alert color="warning" %}}
38-
PWAs have the following limitation on iOS:
39-
40-
* Offline data is not supported for PWAs on iOS
41-
{{% /alert %}}
42-
4337
To create a full offline-first PWA, choose and add one of the following profiles (depending on which form factor you need): Responsive Web Offline, Phone Web Offline, or Tablet Web Offline. For more information about offline-first apps, see the [Offline-First Guide](/refguide/offline-first/).
4438

4539
{{% alert color="info" %}}
@@ -108,7 +102,7 @@ For example, when a Phone Web Offline profile is configured and the app is opene
108102
| ------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
109103
| Desktop browser | Responsive Web profile is loaded |
110104
| Android - Chrome browser | Phone Web Offline profile is loaded |
111-
| iOS - Any browser | If there is a Phone Web profile, this is loaded; otherwise, the Responsive Web profile is loaded. This is because offline PWAs are not (yet) supported on iOS. |
105+
| iOS - Any browser | Phone Web Offline profile is loaded |
112106

113107
Next to that, it is possible to force a profile by providing the profile name in the URL as a query parameter: for example `http://localhost:8080/?profile=PhoneOffline`. Possible profile values are as follows:
114108

0 commit comments

Comments
 (0)