1# ArkUI Subsystem Changelog
2
3## cl.arkui.1 Default Layout Behavior Change for TextPicker Content
4
5**Access Level**
6
7Public API
8
9**Reason for Change**
10
11The layout drawing logic of **TextPicker** was inconsistent with that of **DatePicker** and **TimePicker**. When the component's height was set too large, the number of scrollable options displayed would exceed 5, causing an abnormal fade effect at the top and bottom edges.
12
13**Change Impact**
14
15This change is a compatible change.
16
17Before the change, the total height of the scrollable options in **TextPicker** is the same as the component's height, and the scroll event responds throughout the entire component.
18
19![TextPicker Content Layout Before Change](figures/textpicker_before.jpg)
20
21After the change, when the **TextPicker** component's height is too large (greater than the height required for five scrollable options), the overall height of the component remains unchanged, but a maximum of 5 scrollable options will be displayed, centered vertically within the component. The remaining area will be filled with blank space, and gesture events will only respond within the scrollable option area.
22
23![TextPicker Content Layout After Change](figures/textpicker_after.jpg)
24
25**API Level**
26
278
28
29**Change Since**
30
31OpenHarmony SDK 5.0.0.17
32
33**Key API/Component Changes**
34
35**TextPicker** component
36
37**Adaptation Guide**
38
39The default behavior has changed, no adaptation is needed, but you should ensure that the new behavior does not cause issues with the overall application logic.
40
41## cl.arkui.2 Dialog Box Closure Behavior Change During Page Route Transition
42
43**Access Level**
44
45Public API
46
47**Reason for Change**
48
49In the hierarchy, pages and dialog boxes are at the same level and are independent of each other. Dialog boxes should not be closed automatically during page navigation, and the closure behavior of the dialog box should be controlled by the developer as needed.
50
51**Change Impact**
52
53This change is a non-compatible change.
54
55Before the change, if a page with dialog boxes has navigation performed, the page content would change, and the last dialog box would also be closed automatically.
56
57After the change,if a page with dialog boxes has navigation performed, the page content would change, but the dialog will no longer be closed automatically, meaning the dialog box will always remain on top of the page and will not disappear.
58
59**API Level**
60
619
62
63**Change Since**
64
65OpenHarmony SDK 5.0.0.17, effective since API version 12
66
67**Key API/Component Changes**
68
69Router, Dialog
70
71**Adaptation Guide**
72
73To close all dialog boxes on the current page during route redirection, you can manually close them by calling the dialog box's **close** method before route redirection.
74
75The sample code is as follows:
76```ts
77import router from '@ohos.router';
78// Record all dialog boxes on the current page.
79const dialogs: Map<string, CustomDialogController> = new Map();
80
81@CustomDialog
82struct CustomDialogExample {
83  controllerTwo?: CustomDialogController
84  build() {
85    Column() {
86      Button('Redirect')
87        .onClick(() => {
88          // Close all dialog boxes on the current page.
89          dialogs.forEach((controller, name) => {
90            controller.close();
91          })
92          // Route redirection
93          router.pushUrl({url: 'pages/Index'})
94        })
95    }
96  }
97}
98
99@Entry
100@Component
101struct CustomDialogUser {
102  dialogController: CustomDialogController | null = new CustomDialogController({
103    builder: CustomDialogExample(),
104  })
105  build() {
106    Column() {
107      Button('Open Dialog Box')
108        .onClick(() => {
109          if (this.dialogController != null) {
110            // Open the dialog box.
111            this.dialogController.open()
112            // Record the current dialog box.
113            dialogs.set('first', this.dialogController)
114          }
115        })
116    }
117  }
118}
119```
120
121## cl.arkui.3 syncLoad Effect Change for Image Component
122
123**Access Level**
124
125Public API
126
127**Reason for Change**
128
129Some implementation scenarios on the application side require the **Image** component to support asynchronous loading of pixel maps.
130
131**Change Impact**
132
133This change is a non-compatible change.
134
135**syncLoad** is an attribute of the **Image** component used to set whether the image is loaded synchronously.
136
137Before API version 12, regardless of whether **syncLoad** is set to **false** or **true**, the **Image** component always loaded pixel maps synchronously in the main thread.
138
139Since API version 12, the **Image** component loads pixel maps synchronously or asynchronously according to **syncLoad**. If this attribute is not set, the default value **false** is used. Asynchronous loading will occur in an asynchronous thread, and there may be a flicker when loading pixel maps.
140
141**API Level**
142
14312
144
145**Change Since**
146
147OpenHarmony SDK 5.0.0.17
148
149**Example**
150
151N/A
152
153**Key API/Component Changes**
154
155**Image** component
156
157**Adaptation Guide**
158
159If your application requires the **Image** component to load pixel maps synchronously, **syncLoad** must be set to **true**.
160