1e41f4b71Sopenharmony_ci# ArkUI Subsystem Changelog
2e41f4b71Sopenharmony_ci
3e41f4b71Sopenharmony_ci## cl.arkui.1 Display Effect Change of the alignment Parameter in the \<DatePickerDialog>, \<TimePickerDialog>, and \<TextPickerDialog> Components
4e41f4b71Sopenharmony_ci
5e41f4b71Sopenharmony_ci**Access Level**
6e41f4b71Sopenharmony_ci
7e41f4b71Sopenharmony_ciPublic
8e41f4b71Sopenharmony_ci
9e41f4b71Sopenharmony_ci**Reason for Change**
10e41f4b71Sopenharmony_ci
11e41f4b71Sopenharmony_ciSpecification optimization.
12e41f4b71Sopenharmony_ci
13e41f4b71Sopenharmony_ci**Change Impact**
14e41f4b71Sopenharmony_ci
15e41f4b71Sopenharmony_ciThis change is a compatible change.
16e41f4b71Sopenharmony_ci
17e41f4b71Sopenharmony_ciIn **\<DatePickerDialog>**, **\<TimePickerDialog>**, and **\<TextPickerDialog>** components, the **alignment** parameter to adjust the position of the picker dialog box relative to the window. The affected scenarios are as follows:
18e41f4b71Sopenharmony_ci
19e41f4b71Sopenharmony_ci(a) **alignment** is set to **Top**, **TopStart**, or **TopEnd**
20e41f4b71Sopenharmony_ci
21e41f4b71Sopenharmony_ciBefore change: There is a default spacing of 40 vp between the picker dialog box and the top of the window.
22e41f4b71Sopenharmony_ci
23e41f4b71Sopenharmony_ciAfter change: The spacing between the picker dialog box and the top of the window is 0.
24e41f4b71Sopenharmony_ci
25e41f4b71Sopenharmony_ci(b) **alignment** is set to **Bottom**
26e41f4b71Sopenharmony_ci
27e41f4b71Sopenharmony_ciBefore change: There is a default spacing of 16 vp between the picker dialog box and the bottom of the window.
28e41f4b71Sopenharmony_ci
29e41f4b71Sopenharmony_ciAfter change: The spacing between the picker dialog box and the bottom of the window is 0.
30e41f4b71Sopenharmony_ci
31e41f4b71Sopenharmony_ci(c) **alignment** is set to **Center**
32e41f4b71Sopenharmony_ci
33e41f4b71Sopenharmony_ciBefore change: There is an upward offset of 16 vp relative to the center of the window.
34e41f4b71Sopenharmony_ci
35e41f4b71Sopenharmony_ciAfter change: The picker dialog box is in the center of the window
36e41f4b71Sopenharmony_ci
37e41f4b71Sopenharmony_ci**API Level** 
38e41f4b71Sopenharmony_ci
39e41f4b71Sopenharmony_ci11
40e41f4b71Sopenharmony_ci
41e41f4b71Sopenharmony_ci**Change Since**
42e41f4b71Sopenharmony_ci
43e41f4b71Sopenharmony_ciOpenHarmony SDK 4.1.5.3
44e41f4b71Sopenharmony_ci
45e41f4b71Sopenharmony_ci**Key API/Component Changes**
46e41f4b71Sopenharmony_ci
47e41f4b71Sopenharmony_ciDatePickerDialog, TimePickerDialog, TextPickerDialog
48e41f4b71Sopenharmony_ci
49e41f4b71Sopenharmony_ci**Adaptation Guide**
50e41f4b71Sopenharmony_ci
51e41f4b71Sopenharmony_ciIf you want to set the spacing between the picker dialog box and window edges, use **offset** together with **alignment**.
52e41f4b71Sopenharmony_ci
53e41f4b71Sopenharmony_ci## cl.arkui.2 Renaming of the buttonMargin and textMargin APIs for the \<SegmentButton> Component
54e41f4b71Sopenharmony_ci
55e41f4b71Sopenharmony_ci**Access Level**
56e41f4b71Sopenharmony_ci
57e41f4b71Sopenharmony_ciPublic
58e41f4b71Sopenharmony_ci
59e41f4b71Sopenharmony_ci**Reason for Change**
60e41f4b71Sopenharmony_ci
61e41f4b71Sopenharmony_ciThe original API names do not convey the actual functionality of the APIs.
62e41f4b71Sopenharmony_ci
63e41f4b71Sopenharmony_ci**Change Impact**
64e41f4b71Sopenharmony_ci
65e41f4b71Sopenharmony_ciThis change is a non-compatible change. The APIs for setting the button and text paddings in the **\<SegmentButton>** component are renamed as follows:
66e41f4b71Sopenharmony_ci
67e41f4b71Sopenharmony_ci(a) API for setting the button padding
68e41f4b71Sopenharmony_ci
69e41f4b71Sopenharmony_ciBefore change: **buttonMargin**
70e41f4b71Sopenharmony_ci
71e41f4b71Sopenharmony_ciAfter change: **buttonPadding**
72e41f4b71Sopenharmony_ci
73e41f4b71Sopenharmony_ci(b) API for setting the text padding
74e41f4b71Sopenharmony_ci
75e41f4b71Sopenharmony_ciBefore change: **textMargin**
76e41f4b71Sopenharmony_ci
77e41f4b71Sopenharmony_ciAfter change: **textPadding**
78e41f4b71Sopenharmony_ci
79e41f4b71Sopenharmony_ci**Change Since**
80e41f4b71Sopenharmony_ci
81e41f4b71Sopenharmony_ciOpenHarmony SDK 4.1.5.3
82e41f4b71Sopenharmony_ci
83e41f4b71Sopenharmony_ci**Key API/Component Changes**
84e41f4b71Sopenharmony_ci
85e41f4b71Sopenharmony_ciSegmentButton
86e41f4b71Sopenharmony_ci
87e41f4b71Sopenharmony_ci**Adaptation Guide**
88e41f4b71Sopenharmony_ci
89e41f4b71Sopenharmony_ciBefore change:
90e41f4b71Sopenharmony_ci
91e41f4b71Sopenharmony_ciThe APIs for setting the button and text paddings in the **\<SegmentButton>** component are **buttonMargin** and **textMargin**, respectively.
92e41f4b71Sopenharmony_ci
93e41f4b71Sopenharmony_ciAfter change:
94e41f4b71Sopenharmony_ci
95e41f4b71Sopenharmony_ciThe APIs for setting the button and text paddings in the **\<SegmentButton>** component are **buttonPadding** and **textPadding**, respectively.
96e41f4b71Sopenharmony_ci
97e41f4b71Sopenharmony_ci## cl.arkui.3 Default Value Change for IconOptions.size of cancelButton in the \<TextInput> Component
98e41f4b71Sopenharmony_ci
99e41f4b71Sopenharmony_ci**Access Level**
100e41f4b71Sopenharmony_ci
101e41f4b71Sopenharmony_ciPublic
102e41f4b71Sopenharmony_ci
103e41f4b71Sopenharmony_ci**Reason for Change**
104e41f4b71Sopenharmony_ci
105e41f4b71Sopenharmony_ciIf the **IconOptions.size** parameter is not set in the **cancelButton** API, the image size obtained is different from the actual one.
106e41f4b71Sopenharmony_ci
107e41f4b71Sopenharmony_ci**Change Impact**
108e41f4b71Sopenharmony_ci
109e41f4b71Sopenharmony_ciThis change is a non-compatible change. If the **IconOptions.size** parameter is not set in the **cancelButton** API, the image size obtained is as follows:
110e41f4b71Sopenharmony_ci
111e41f4b71Sopenharmony_ciBefore change: 0.00 px
112e41f4b71Sopenharmony_ci
113e41f4b71Sopenharmony_ciAfter change: 24.00 vp
114e41f4b71Sopenharmony_ci
115e41f4b71Sopenharmony_ci**Change Since**
116e41f4b71Sopenharmony_ci
117e41f4b71Sopenharmony_ciOpenHarmony SDK 4.1.5.3
118e41f4b71Sopenharmony_ci
119e41f4b71Sopenharmony_ci**Key API/Component Changes**
120e41f4b71Sopenharmony_ci
121e41f4b71Sopenharmony_ciTextInput
122e41f4b71Sopenharmony_ci
123e41f4b71Sopenharmony_ci**Adaptation Guide**
124e41f4b71Sopenharmony_ci
125e41f4b71Sopenharmony_ciN/A
126e41f4b71Sopenharmony_ci
127e41f4b71Sopenharmony_ci## cl.arkui.4 Change in the @Prop and @BuilderParam Initialization Validation Specification
128e41f4b71Sopenharmony_ci
129e41f4b71Sopenharmony_ci**Access Level**
130e41f4b71Sopenharmony_ci
131e41f4b71Sopenharmony_ciPublic
132e41f4b71Sopenharmony_ci
133e41f4b71Sopenharmony_ci**Reason for Change**
134e41f4b71Sopenharmony_ci
135e41f4b71Sopenharmony_ciThe initialization validation spefication for @Prop and @BuilderParam is changed to cover the case where they are used with @Require.
136e41f4b71Sopenharmony_ci
137e41f4b71Sopenharmony_ci**Change Impact**
138e41f4b71Sopenharmony_ci
139e41f4b71Sopenharmony_ciThis change is a non-compatible change. Specifically, when the @Require decorator is used together with the @Prop or @BuilderParam decorator, the @Prop or @BuilderParam decorated variable must have its initial value passed from the parent component. If the parent component does not pass in any value, a compilation error occurs. This check for initialization from the parent component is not conducted if the @Prop or @BuilderParam decorator is not used with @Require.
140e41f4b71Sopenharmony_ci
141e41f4b71Sopenharmony_ci**API Level**
142e41f4b71Sopenharmony_ci
143e41f4b71Sopenharmony_ci11
144e41f4b71Sopenharmony_ci
145e41f4b71Sopenharmony_ci**Change Since**
146e41f4b71Sopenharmony_ci
147e41f4b71Sopenharmony_ciOpenHarmony SDK 4.1.5.3
148e41f4b71Sopenharmony_ci
149e41f4b71Sopenharmony_ci**Example**
150e41f4b71Sopenharmony_ci
151e41f4b71Sopenharmony_ci```
152e41f4b71Sopenharmony_ci@Entry
153e41f4b71Sopenharmony_ci@Component
154e41f4b71Sopenharmony_cistruct Index {
155e41f4b71Sopenharmony_ci  build() {
156e41f4b71Sopenharmony_ci    Row() {
157e41f4b71Sopenharmony_ci      Child()
158e41f4b71Sopenharmony_ci    }
159e41f4b71Sopenharmony_ci  }
160e41f4b71Sopenharmony_ci}
161e41f4b71Sopenharmony_ci
162e41f4b71Sopenharmony_ci@Component
163e41f4b71Sopenharmony_cistruct Child {
164e41f4b71Sopenharmony_ci  // ERROR: Property buildText must be initialized through the component constructor.
165e41f4b71Sopenharmony_ci  @Require @BuilderParam buildText: () => void;
166e41f4b71Sopenharmony_ci  // ERROR: Property initBuildText must be initialized through the component constructor.
167e41f4b71Sopenharmony_ci  @Require @BuilderParam initBuildText: () => void = buildFuction;
168e41f4b71Sopenharmony_ci  // ERROR: Property message must be initialized through the component constructor.
169e41f4b71Sopenharmony_ci  @Require @Prop message: string = 'Hello';
170e41f4b71Sopenharmony_ci  // ERROR: Property initMessage must be initialized through the component constructor.
171e41f4b71Sopenharmony_ci  @Require @Prop initMessage: string;
172e41f4b71Sopenharmony_ci  // Remove the error message: ERROR: Property 'chindProp' in the custom component 'Child' is missing assignment or initialization.
173e41f4b71Sopenharmony_ci  @Prop chindProp: string;
174e41f4b71Sopenharmony_ci  // Remove the error message: ERROR: Property 'chindBuildParam' in the custom component 'Child' is missing assignment or initialization.
175e41f4b71Sopenharmony_ci  @BuilderParam chindBuildParam: () => void;
176e41f4b71Sopenharmony_ci
177e41f4b71Sopenharmony_ci  build() {
178e41f4b71Sopenharmony_ci  }
179e41f4b71Sopenharmony_ci}
180e41f4b71Sopenharmony_ci
181e41f4b71Sopenharmony_ci@Builder
182e41f4b71Sopenharmony_cifunction buildFuction() {
183e41f4b71Sopenharmony_ci}
184e41f4b71Sopenharmony_ci```
185e41f4b71Sopenharmony_ci
186e41f4b71Sopenharmony_ci**Key API/Component Changes**
187e41f4b71Sopenharmony_ci
188e41f4b71Sopenharmony_ciN/A
189e41f4b71Sopenharmony_ci
190e41f4b71Sopenharmony_ci**Adaptation Guide**
191e41f4b71Sopenharmony_ci
192e41f4b71Sopenharmony_ciWhen the \@Require decorator is used together with the \@Prop or \@BuilderParam decorator, the \@Prop and \@BuilderParam decorated variable must have a value passed from the parent component during construction of the owning component.
193e41f4b71Sopenharmony_ci
194e41f4b71Sopenharmony_ci
195e41f4b71Sopenharmony_ci
196e41f4b71Sopenharmony_ci## cl.arkui.5 Change in the Popup Style and Avoidance Logic Specifications
197e41f4b71Sopenharmony_ci
198e41f4b71Sopenharmony_ci**Access Level**
199e41f4b71Sopenharmony_ci
200e41f4b71Sopenharmony_ciPublic
201e41f4b71Sopenharmony_ci
202e41f4b71Sopenharmony_ci**Reason for Change**
203e41f4b71Sopenharmony_ci
204e41f4b71Sopenharmony_ciThe UX capability is enhanced.
205e41f4b71Sopenharmony_ci
206e41f4b71Sopenharmony_ci**Change Impact**
207e41f4b71Sopenharmony_ci
208e41f4b71Sopenharmony_ciThis change is a compatible change.
209e41f4b71Sopenharmony_ci
210e41f4b71Sopenharmony_ci1. If the popup background color is not set, the default background color is used with a blur effect applied. To remove the blur effect, call **backgroundBlurStyle** and set **BlurStyle.NONE** (**backgroundBlurStyle: BlurStyle.NONE**).
211e41f4b71Sopenharmony_ci
212e41f4b71Sopenharmony_ci   ```ts
213e41f4b71Sopenharmony_ci   // xxx.ets
214e41f4b71Sopenharmony_ci   @Entry
215e41f4b71Sopenharmony_ci   @Component
216e41f4b71Sopenharmony_ci   struct PopupExample {
217e41f4b71Sopenharmony_ci     @State handlePopup: boolean = false
218e41f4b71Sopenharmony_ci   
219e41f4b71Sopenharmony_ci     build() {
220e41f4b71Sopenharmony_ci       Column() {
221e41f4b71Sopenharmony_ci         // PopupOptions for setting the popup
222e41f4b71Sopenharmony_ci         Button('PopupOptions')
223e41f4b71Sopenharmony_ci           .onClick(() => {
224e41f4b71Sopenharmony_ci             this.handlePopup = !this.handlePopup;
225e41f4b71Sopenharmony_ci           })
226e41f4b71Sopenharmony_ci           .bindPopup(this.handlePopup, {
227e41f4b71Sopenharmony_ci             message: 'This is a popup with PopupOptions',
228e41f4b71Sopenharmony_ci             backgroundBlurStyle: BlurStyle.NONE,
229e41f4b71Sopenharmony_ci           })
230e41f4b71Sopenharmony_ci           .position({ x: 100, y: 150 })
231e41f4b71Sopenharmony_ci       }
232e41f4b71Sopenharmony_ci     }
233e41f4b71Sopenharmony_ci   }
234e41f4b71Sopenharmony_ci   ```
235e41f4b71Sopenharmony_ci
236e41f4b71Sopenharmony_ci2. The following 12 alignment modes are added:
237e41f4b71Sopenharmony_ci
238e41f4b71Sopenharmony_ci   - Top: TopLeft/Top/TopRight
239e41f4b71Sopenharmony_ci   - Bottom: BottomLeft/Bottom/BottomRight
240e41f4b71Sopenharmony_ci   - Left: LeftTop/Left/LeftBottom
241e41f4b71Sopenharmony_ci   - Right: RightTop/Right/RightBottom
242e41f4b71Sopenharmony_ci
243e41f4b71Sopenharmony_ci   ![popup_placement.png](figures/popup_placement.png)
244e41f4b71Sopenharmony_ci
245e41f4b71Sopenharmony_ci   ```ts
246e41f4b71Sopenharmony_ci   // xxx.ets
247e41f4b71Sopenharmony_ci   @Entry
248e41f4b71Sopenharmony_ci   @Component
249e41f4b71Sopenharmony_ci   struct PopupExample {
250e41f4b71Sopenharmony_ci     @State handlePopup: boolean = false;
251e41f4b71Sopenharmony_ci   
252e41f4b71Sopenharmony_ci     build() {
253e41f4b71Sopenharmony_ci       Column() {
254e41f4b71Sopenharmony_ci         // PopupOptions for setting the popup
255e41f4b71Sopenharmony_ci         Button ('Button Name')
256e41f4b71Sopenharmony_ci           .onClick(() => {
257e41f4b71Sopenharmony_ci             this.handlePopup = !this.handlePopup;
258e41f4b71Sopenharmony_ci           })
259e41f4b71Sopenharmony_ci           .bindPopup(this.handlePopup, {
260e41f4b71Sopenharmony_ci             message: 'Test',
261e41f4b71Sopenharmony_ci             placement: Placement.Bottom
262e41f4b71Sopenharmony_ci           })
263e41f4b71Sopenharmony_ci           .position({ x: 100, y: 150 })
264e41f4b71Sopenharmony_ci       }
265e41f4b71Sopenharmony_ci     }
266e41f4b71Sopenharmony_ci   }
267e41f4b71Sopenharmony_ci   ```
268e41f4b71Sopenharmony_ci
269e41f4b71Sopenharmony_ci3. When a popup of the PopupOptions type has a button, the popup does not disappear when anywhere outside of the popup area is clicked.
270e41f4b71Sopenharmony_ci
271e41f4b71Sopenharmony_ci   - Before change: When a popup of the PopupOptions type has a button, the popup disappears when anywhere outside of the popup area is clicked.
272e41f4b71Sopenharmony_ci
273e41f4b71Sopenharmony_ci   - After change: When a popup of the PopupOptions type has a button, the popup does not disappear when anywhere outside of the popup area is clicked.
274e41f4b71Sopenharmony_ci
275e41f4b71Sopenharmony_ci   > **NOTE**
276e41f4b71Sopenharmony_ci   >
277e41f4b71Sopenharmony_ci   > A popup of the PopupOptions type has a button when either **primaryButton** or **secondaryButton** or both are set in **PopupOptions** through **bindPopup**.
278e41f4b71Sopenharmony_ci
279e41f4b71Sopenharmony_ci4. A popup of the PopupOptions type allows scrolling when text overflow occurs.
280e41f4b71Sopenharmony_ci
281e41f4b71Sopenharmony_ci   - Before change: In a popup of the PopupOptions type, extra-long text is clipped.
282e41f4b71Sopenharmony_ci
283e41f4b71Sopenharmony_ci   - After change: In a popup of the PopupOptions type, a scroll API can be added to allow for scrolling when text overflow occurs.
284e41f4b71Sopenharmony_ci
285e41f4b71Sopenharmony_ci5. The font color of the popup of the PopupOptions type is the value of **ohos_id_color_text_primary** in the layered parameters.
286e41f4b71Sopenharmony_ci
287e41f4b71Sopenharmony_ci   - Before change: The font color of the popup of the PopupOptions type is the value of **ohos_id_color_text_primary_contrary** in the layered parameters.
288e41f4b71Sopenharmony_ci
289e41f4b71Sopenharmony_ci   - After change: The font color of the popup of the PopupOptions type is the value of **ohos_id_color_text_primary** in the layered parameters.
290e41f4b71Sopenharmony_ci
291e41f4b71Sopenharmony_ci6. The button color of the popup of the PopupOptions type is the value of **ohos_id_color_text_primary_activated** in the layered parameters.
292e41f4b71Sopenharmony_ci
293e41f4b71Sopenharmony_ci   - Before change: The button color of the popup of the PopupOptions type is the value of **ohos_id_color_text_primary_contrary** in the layered parameters.
294e41f4b71Sopenharmony_ci
295e41f4b71Sopenharmony_ci   - After change: The button color of the popup of the PopupOptions type is the value of **ohos_id_color_text_primary_activated** in the layered parameters.
296e41f4b71Sopenharmony_ci
297e41f4b71Sopenharmony_ci7. In the popup of the PopupOptions type, buttons can be displayed in the flex layout so that a line break is inserted in cases of text overflowing.
298e41f4b71Sopenharmony_ci
299e41f4b71Sopenharmony_ci   - Before change: If the button in a popup of the PopupOptions type contains ultra-long text, the text is clipped.
300e41f4b71Sopenharmony_ci
301e41f4b71Sopenharmony_ci   - After change: If the button in a popup of the PopupOptions type contains ultra-long text, the extra text is wrapped onto a new line in flex layout.
302e41f4b71Sopenharmony_ci
303e41f4b71Sopenharmony_ci8. A popup of the CustomPopupOptions type can be configured to be focusable, by setting the **focusable** parameter in **CustomPopupOptions** to **true**.
304e41f4b71Sopenharmony_ci
305e41f4b71Sopenharmony_ci   ```ts
306e41f4b71Sopenharmony_ci   // xxx.ets
307e41f4b71Sopenharmony_ci   @Entry
308e41f4b71Sopenharmony_ci   @Component
309e41f4b71Sopenharmony_ci   struct PopupExample {
310e41f4b71Sopenharmony_ci     @State customPopup: boolean = false
311e41f4b71Sopenharmony_ci   
312e41f4b71Sopenharmony_ci     // Define the popup content in the popup builder.
313e41f4b71Sopenharmony_ci     @Builder
314e41f4b71Sopenharmony_ci     popupBuilder() {
315e41f4b71Sopenharmony_ci       Row({ space: 2 }) {
316e41f4b71Sopenharmony_ci         Button("button1")
317e41f4b71Sopenharmony_ci         Button("button2")
318e41f4b71Sopenharmony_ci       }
319e41f4b71Sopenharmony_ci     }
320e41f4b71Sopenharmony_ci   
321e41f4b71Sopenharmony_ci     build() {
322e41f4b71Sopenharmony_ci       Column() {
323e41f4b71Sopenharmony_ci         // CustomPopupOptions for setting the popup
324e41f4b71Sopenharmony_ci         Button('CustomPopupOptions')
325e41f4b71Sopenharmony_ci           .position({ x: 80, y: 300 })
326e41f4b71Sopenharmony_ci           .onClick(() => {
327e41f4b71Sopenharmony_ci             this.customPopup = !this.customPopup
328e41f4b71Sopenharmony_ci           })
329e41f4b71Sopenharmony_ci           .bindPopup(this.customPopup, {
330e41f4b71Sopenharmony_ci             builder: this.popupBuilder,
331e41f4b71Sopenharmony_ci             focusable: true
332e41f4b71Sopenharmony_ci           })
333e41f4b71Sopenharmony_ci       }
334e41f4b71Sopenharmony_ci     }
335e41f4b71Sopenharmony_ci   }
336e41f4b71Sopenharmony_ci   ```
337e41f4b71Sopenharmony_ci
338e41f4b71Sopenharmony_ci9. If **showInSubWindow** is set to **true**, the maximum height of the popup is the device screen height. If **showInSubWindow** is set to **false**, the maximum height of the popup is the application window height.
339e41f4b71Sopenharmony_ci
340e41f4b71Sopenharmony_ci   - Before change: There is no maximum height limit. If the text is too long, it will be clipped.
341e41f4b71Sopenharmony_ci
342e41f4b71Sopenharmony_ci   - After change: The maximum height is specified, and if the text is too long, a scroll bar is added to display the text.
343e41f4b71Sopenharmony_ci
344e41f4b71Sopenharmony_ci   If **showInSubWindow** is set to **true**, the maximum height is the device screen height. Allowable height = Maximum height – Status bar height (0 if there is no status bar) – Dock height (0 if there is no dock) – 40 vp – 40 vp.
345e41f4b71Sopenharmony_ci
346e41f4b71Sopenharmony_ci   If **showInSubWindow** is set to **false**, the maximum height is the height of the application window. Allowable height = Maximum height – Status bar height (0 if there is no status bar) – Dock height (0 if there is no dock) – 40 vp – 40 vp.
347e41f4b71Sopenharmony_ci
348e41f4b71Sopenharmony_ciThe following figures show the styles of items 1, 5, and 6 before and after the change.  
349e41f4b71Sopenharmony_ci
350e41f4b71Sopenharmony_ci- Before change 
351e41f4b71Sopenharmony_ci  ![before](figures/popup_before.png)
352e41f4b71Sopenharmony_ci- After change 
353e41f4b71Sopenharmony_ci  ![after](figures/popup_after.png)
354e41f4b71Sopenharmony_ci
355e41f4b71Sopenharmony_ci> **NOTE**
356e41f4b71Sopenharmony_ci>
357e41f4b71Sopenharmony_ci> - The popup of the PopupOptions type is a popup where the **PopupOptions** data structure is passed in by **bindPopup**.
358e41f4b71Sopenharmony_ci>
359e41f4b71Sopenharmony_ci> - The popup of the CustomPopupOptions type is a popup where the **CustomPopupOptions** data structure is passed in by **bindPopup**.
360e41f4b71Sopenharmony_ci
361e41f4b71Sopenharmony_ci**API Level**
362e41f4b71Sopenharmony_ci
363e41f4b71Sopenharmony_ci11
364e41f4b71Sopenharmony_ci
365e41f4b71Sopenharmony_ci**Change Since**
366e41f4b71Sopenharmony_ci
367e41f4b71Sopenharmony_ciOpenHarmony SDK 4.1.5.2
368e41f4b71Sopenharmony_ci
369e41f4b71Sopenharmony_ci**Key API/Component Changes**
370e41f4b71Sopenharmony_ci
371e41f4b71Sopenharmony_cibindPopup
372e41f4b71Sopenharmony_ci
373e41f4b71Sopenharmony_ci**Adaptation Guide**
374e41f4b71Sopenharmony_ci
375e41f4b71Sopenharmony_ci1. Customize the popup background color based on user requirements. For details, see item 1.
376e41f4b71Sopenharmony_ci
377e41f4b71Sopenharmony_ci2. Set whether the popup obtains focus when displayed. For details, see item 8.
378e41f4b71Sopenharmony_ci
379e41f4b71Sopenharmony_ci## cl.Arkui.6 Added Support for Displaying a Dialog Box in a Subwindow
380e41f4b71Sopenharmony_ci
381e41f4b71Sopenharmony_ci**Access Level**
382e41f4b71Sopenharmony_ci
383e41f4b71Sopenharmony_ciPublic
384e41f4b71Sopenharmony_ci
385e41f4b71Sopenharmony_ci**Reason for Change**
386e41f4b71Sopenharmony_ci
387e41f4b71Sopenharmony_ciThe UX capability is enhanced.
388e41f4b71Sopenharmony_ci
389e41f4b71Sopenharmony_ci**Change Impact**
390e41f4b71Sopenharmony_ci
391e41f4b71Sopenharmony_ciThis change is a compatible change. The **showInSubWindow** attribute, which is already supported in the **\<CustomDialog>** component, is added to the **\<AlertDialog>** and **\<ActionSheet>** components and the **showDialog** and **showActionMenu** APIs in the **promptAction** module. If this attribute is manually set to **true**, the dialog box is created in a subwindow and can be displayed outside of the application window.
392e41f4b71Sopenharmony_ci
393e41f4b71Sopenharmony_ci**API Level**
394e41f4b71Sopenharmony_ci
395e41f4b71Sopenharmony_ci11
396e41f4b71Sopenharmony_ci
397e41f4b71Sopenharmony_ci**Change Since**
398e41f4b71Sopenharmony_ci
399e41f4b71Sopenharmony_ciOpenHarmony SDK 4.1.5.5
400e41f4b71Sopenharmony_ci
401e41f4b71Sopenharmony_ci**Key API/Component Changes**
402e41f4b71Sopenharmony_ci
403e41f4b71Sopenharmony_ciBefore change: The **showInSubWindow** attribute is available for the **CustomDialogControllerOptions** API of the **\<CustomDialog>** component.
404e41f4b71Sopenharmony_ci
405e41f4b71Sopenharmony_ciAfter change: The **showInSubWindow** attribute is available for the **\<AlertDialog>**, **\<CustomDialog>**, and **\<ActionSheet>** components and the **showDialog** and **showActionMenu** APIs in the **promptAction** module.
406e41f4b71Sopenharmony_ci
407e41f4b71Sopenharmony_ci**Adaptation Guide**
408e41f4b71Sopenharmony_ci
409e41f4b71Sopenharmony_ciN/A
410e41f4b71Sopenharmony_ci
411e41f4b71Sopenharmony_ci## cl.Arkui.7 Change in the Mask Scope of the \<CustomDialog> Component
412e41f4b71Sopenharmony_ci
413e41f4b71Sopenharmony_ci**Access Level**
414e41f4b71Sopenharmony_ci
415e41f4b71Sopenharmony_ciPublic
416e41f4b71Sopenharmony_ci
417e41f4b71Sopenharmony_ci**Reason for Change**
418e41f4b71Sopenharmony_ci
419e41f4b71Sopenharmony_ciThe change is made to maintain consistency with UX specifications.
420e41f4b71Sopenharmony_ci
421e41f4b71Sopenharmony_ci**Change Impact**
422e41f4b71Sopenharmony_ci
423e41f4b71Sopenharmony_ciThis change is a non-compatible change.
424e41f4b71Sopenharmony_ci
425e41f4b71Sopenharmony_ciBefore change: When **showInSubWindow** is set to **true**, the mask of the **\<CustomDialog>** component covers the subwindow; when **showInSubWindow** is set to **false**, the mask covers the entire application window.
426e41f4b71Sopenharmony_ci
427e41f4b71Sopenharmony_ci![en-us_image_alert](figures/en-us_image_alert.gif)
428e41f4b71Sopenharmony_ci
429e41f4b71Sopenharmony_ciAfter change: The mask of the **\<CustomDialog>** component covers the entire application window regardless of whether **showInSubWindow** is **true** or **false**.
430e41f4b71Sopenharmony_ci
431e41f4b71Sopenharmony_ci![en-us_image_alert_showinsubwindow](figures/en-us_image_alert_showinsubwindow.jpg)
432e41f4b71Sopenharmony_ci
433e41f4b71Sopenharmony_ci**API Level**
434e41f4b71Sopenharmony_ci
435e41f4b71Sopenharmony_ci11
436e41f4b71Sopenharmony_ci
437e41f4b71Sopenharmony_ci**Change Since**
438e41f4b71Sopenharmony_ci
439e41f4b71Sopenharmony_ciOpenHarmony SDK 4.1.5.5
440e41f4b71Sopenharmony_ci
441e41f4b71Sopenharmony_ci**Key API/Component Changes**
442e41f4b71Sopenharmony_ci
443e41f4b71Sopenharmony_ciCustomDialog
444e41f4b71Sopenharmony_ci
445e41f4b71Sopenharmony_ci**Adaptation Guide**
446e41f4b71Sopenharmony_ci
447e41f4b71Sopenharmony_ciYou can customize the mask scope when **showInSubWindow** is set to **true** by controlling the application window scope.
448e41f4b71Sopenharmony_ci
449e41f4b71Sopenharmony_ci## cl.Arkui.8 Adding of the isModal Attribute for Dialog Boxes
450e41f4b71Sopenharmony_ci
451e41f4b71Sopenharmony_ci**Access Level**
452e41f4b71Sopenharmony_ci
453e41f4b71Sopenharmony_ciPublic
454e41f4b71Sopenharmony_ci
455e41f4b71Sopenharmony_ci**Reason for Change**
456e41f4b71Sopenharmony_ci
457e41f4b71Sopenharmony_ciThe UX capability is enhanced.
458e41f4b71Sopenharmony_ci
459e41f4b71Sopenharmony_ci**Change Impact**
460e41f4b71Sopenharmony_ci
461e41f4b71Sopenharmony_ciThis change is a compatible change. The **isModal** attribute is added to the **\<AlterDialog>**, **\<CustomDialog>**, and **\<ActionSheet>** components and the **showDialog** and **showActionMenu** APIs in the **promptAction** module. The value **true** (default) means that the dialog box has a mask, and **false** means the opposite.
462e41f4b71Sopenharmony_ci
463e41f4b71Sopenharmony_ci**API Level**
464e41f4b71Sopenharmony_ci
465e41f4b71Sopenharmony_ci11
466e41f4b71Sopenharmony_ci
467e41f4b71Sopenharmony_ci**Change Since**
468e41f4b71Sopenharmony_ci
469e41f4b71Sopenharmony_ciOpenHarmony SDK 4.1.5.5
470e41f4b71Sopenharmony_ci
471e41f4b71Sopenharmony_ci**Key API/Component Changes**
472e41f4b71Sopenharmony_ci
473e41f4b71Sopenharmony_ciisModal
474e41f4b71Sopenharmony_ci
475e41f4b71Sopenharmony_ci**Adaptation Guide**
476e41f4b71Sopenharmony_ci
477e41f4b71Sopenharmony_ciN/A
478e41f4b71Sopenharmony_ci
479e41f4b71Sopenharmony_ci## cl.Arkui.9 API Change of the Advanced Popup Component
480e41f4b71Sopenharmony_ci
481e41f4b71Sopenharmony_ci**Access Level**
482e41f4b71Sopenharmony_ci
483e41f4b71Sopenharmony_ciPublic
484e41f4b71Sopenharmony_ci
485e41f4b71Sopenharmony_ci**Reason for Change**
486e41f4b71Sopenharmony_ci
487e41f4b71Sopenharmony_ciThe UX capability is enhanced.
488e41f4b71Sopenharmony_ci
489e41f4b71Sopenharmony_ci**Change Impact**
490e41f4b71Sopenharmony_ci
491e41f4b71Sopenharmony_ciIn the **PopupIconOptions** data structure of @ohos.arkui.advanced.Popup (popup component), the **image** variable does not accept the PixelMap or DrawableDescriptor data type.
492e41f4b71Sopenharmony_ci
493e41f4b71Sopenharmony_ci**API Level**
494e41f4b71Sopenharmony_ci
495e41f4b71Sopenharmony_ci11
496e41f4b71Sopenharmony_ci
497e41f4b71Sopenharmony_ci**Change Since**
498e41f4b71Sopenharmony_ci
499e41f4b71Sopenharmony_ciOpenHarmony SDK 4.1.5.2
500e41f4b71Sopenharmony_ci
501e41f4b71Sopenharmony_ci**Key API/Component Changes**
502e41f4b71Sopenharmony_ci
503e41f4b71Sopenharmony_ci@ohos.arkui.advanced.Popup
504e41f4b71Sopenharmony_ci
505e41f4b71Sopenharmony_ci**Adaptation Guide**
506e41f4b71Sopenharmony_ci
507e41f4b71Sopenharmony_ciRegarding the **image** variable in the **PopupIconOptions** data structure of @ohos.arkui.advanced.Popup (popup component), only values of the ResourceStr type are allowed.
508