• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Configuring Widget Configuration Files
2
3
4Widget-related configuration includes **FormExtensionAbility** configuration and widget configuration.
5
6
71. Configure FormExtensionAbility information under **extensionAbilities** in the [module.json5 file](../quick-start/module-configuration-file.md). For a FormExtensionAbility, you must specify **metadata**. Specifically, set **name** to **ohos.extension.form** (fixed), and set **resource** to the index of the widget configuration information.
8
9   Example configuration:
10
11
12   ```json
13   {
14     "module": {
15       ...
16       "extensionAbilities": [
17         {
18           "name": "EntryFormAbility",
19           "srcEntry": "./ets/entryformability/EntryFormAbility.ets",
20           "label": "$string:EntryFormAbility_label",
21           "description": "$string:EntryFormAbility_desc",
22           "type": "form",
23           "metadata": [
24             {
25               "name": "ohos.extension.form",
26               "resource": "$profile:form_config"
27             }
28           ]
29         }
30       ]
31     }
32   }
33   ```
34
352. Configure the widget configuration information. In the **metadata** configuration item of FormExtensionAbility, you can specify the resource index of specific configuration information of the widget. For example, if **resource** is set to **$profile:form_config**, **form_config.json** in the **resources/base/profile/** directory of the development view is used as the profile configuration file of the widget. The following table describes the internal structure of the profile configuration file.
36
37   **Table 1** form_config.json file
38
39   | Field| Description| Data Type| Default Value Allowed|
40   | -------- | -------- | -------- | -------- |
41   | name | Class name of the widget. The value is a string with a maximum of 127 bytes.| String| No|
42   | description | Description of the widget. The value can be a string or a resource index to descriptions in multiple languages. The value is a string with a maximum of 255 bytes.| String| Yes (initial value: left empty)|
43   | src | Full path of the UI code corresponding to the widget. For an ArkTS widget, the full path must contain the widget file name extension, for example, **./ets/widget/pages/WidgetCard.ets**. For a JS widget, the full path does not need to contain the widget file name extension, for example, **./js/widget/pages/WidgetCard**.| String| No|
44   | uiSyntax | Type of the widget.<br>- **arkts**: ArkTS widget<br>- **hml**: JS widget| String| Yes (initial value: **hml**)|
45   | window | Window-related configurations.| Object| YYes (initial value: see Table 2)|
46   | isDefault | Whether the widget is a default one. Each UIAbility has only one default widget.<br>- **true**: The widget is the default one.<br>- **false**: The widget is not the default one.| Boolean| No|
47   | colorMode | Color mode of the widget.<br>- **auto**: following the system color mode<br>- **dark**: dark color mode<br>- **light**: light color mode| String| Yes (initial value: **auto**)|
48   | supportDimensions | Grid styles supported by the widget.<br>- **1 * 2**: indicates a grid with one row and two columns.<br>- **2 * 2**: indicates a grid with two rows and two columns.<br>- **2 * 4**: indicates a grid with two rows and four columns.<br>- **4 * 4**: indicates a grid with four rows and four columns.| String array| No|
49   | defaultDimension | Default grid style of the widget. The value must be available in the **supportDimensions** array of the widget.| String| No|
50   | updateEnabled | Whether the widget can be updated periodically.<br>- **true**: The widget can be updated at a specified interval (**updateDuration**) or at the scheduled time (**scheduledUpdateTime**). **updateDuration** takes precedence over **scheduledUpdateTime**. If both are specified, the value specified by **updateDuration** is used.<br>- **false**: The widget cannot be updated periodically.| Boolean| No|
51   | scheduledUpdateTime | Scheduled time to update the widget. The value is in 24-hour format and accurate to minute.<br>**NOTE**<br>**updateDuration** takes precedence over **scheduledUpdateTime**. If both are specified, the value specified by **updateDuration** is used.| String| Yes (initial value: The widget is not updated at the scheduled time.)|
52   | updateDuration | Interval to update the widget. The value is a natural number, in the unit of 30 minutes.<br>If the value is **0**, this field does not take effect.<br>If the value is a positive integer *N*, the interval is calculated by multiplying *N* and 30 minutes.<br>**NOTE**<br>**updateDuration** takes precedence over **scheduledUpdateTime**. If both are specified, the value specified by **updateDuration** is used.| Number| Yes (initial value: **0**)|
53   | formConfigAbility | Link to a specific page of the application. The value is a URI.| String| Yes (initial value: left empty)|
54   | formVisibleNotify | Whether the widget is allowed to use the widget visibility notification.| String| Yes (initial value: left empty)|
55   | metadata | Metadata of the widget. For details, see [Metadata](../reference/apis/js-apis-bundleManager-metadata.md).| Object| Yes (initial value: left empty)|
56   | dataProxyEnabled | Whether the widget supports the [update-through-proxy](./arkts-ui-widget-update-by-proxy.md) feature.<br>- **true**: The widget supports the update-through-proxy feature.<br>- **false**: The widget does not support the update-through-proxy feature.<br>If this tag is set to **true**, [the settings for the scheduled update time will still take effect, but the settings for the update interval and next update time will not](./arkts-ui-widget-update-by-time.md).| Boolean| Yes (initial value: **false**)|
57   | isDynamic | Whether the widget is a dynamic widget. This tag applies only to ArkTS widgets.<br>- **true**: The widget is a dynamic widget.<br>- **false**: The widget is a static widget.<br>| Boolean| Yes (initial value: **true**)|
58
59   **Table 2** Internal structure of the window object
60
61   | Field| Description| Data Type| Default Value Allowed|
62   | -------- | -------- | -------- | -------- |
63   | designWidth | Baseline width for page design. The size of an element is scaled by the actual device width.| Number| Yes (initial value: **720px**)|
64   | autoDesignWidth | Whether to automatically calculate the baseline width for page design. If it is set to **true**, the **designWidth** attribute will be ignored, and the baseline width will be calculated based on the device width and screen density.| Boolean| Yes (initial value: **false**)|
65
66   Example configuration:
67
68
69   ```json
70   {
71     "forms": [
72       {
73         "name": "widget",
74         "description": "This is a service widget.",
75         "src": "./ets/widget/pages/WidgetCard.ets",
76         "uiSyntax": "arkts",
77         "window": {
78           "designWidth": 720,
79           "autoDesignWidth": true
80         },
81         "colorMode": "auto",
82         "isDefault": true,
83         "updateEnabled": true,
84         "scheduledUpdateTime": "10:30",
85         "updateDuration": 1,
86         "defaultDimension": "2*2",
87         "supportDimensions": [
88           "2*2"
89         ],
90         "formConfigAbility": "",
91         "formVisibleNotify": "",
92         "dataProxyEnabled": false,
93         "metadata": {}
94       }
95     ]
96   }
97   ```
98