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  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  352e41f4b71Sopenharmony_ci- After change 353e41f4b71Sopenharmony_ci  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 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 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