1e41f4b71Sopenharmony_ci## cl.arkui.1 Specification Change for RichEditor Menu Visibility When Scrolling After Popup 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ci**Access Level** 4e41f4b71Sopenharmony_ci 5e41f4b71Sopenharmony_ciPublic API 6e41f4b71Sopenharmony_ci 7e41f4b71Sopenharmony_ci**Reason for Change** 8e41f4b71Sopenharmony_ci 9e41f4b71Sopenharmony_ciThe default UX behavior regarding whether the **RichEditor** menu should be displayed after the popup and when scrolling stops has changed. 10e41f4b71Sopenharmony_ci 11e41f4b71Sopenharmony_ci**Change Impact** 12e41f4b71Sopenharmony_ci 13e41f4b71Sopenharmony_ciBefore change: After the **RichEditor** menu is popped up, the menu is hidden when scrolling the component and does not automatically reappear after scrolling stops. 14e41f4b71Sopenharmony_ci 15e41f4b71Sopenharmony_ciAfter change: After the **RichEditor** menu is popped up, the menu is hidden when scrolling the component but will automatically reappear after scrolling stops. 16e41f4b71Sopenharmony_ci 17e41f4b71Sopenharmony_ci**Start API Level** 18e41f4b71Sopenharmony_ci 19e41f4b71Sopenharmony_ciAPI level 12 20e41f4b71Sopenharmony_ci 21e41f4b71Sopenharmony_ci**Change Since** 22e41f4b71Sopenharmony_ci 23e41f4b71Sopenharmony_ciOpenHarmony SDK version 5.0.0.24 24e41f4b71Sopenharmony_ci 25e41f4b71Sopenharmony_ci**Adaptation Guide** 26e41f4b71Sopenharmony_ci 27e41f4b71Sopenharmony_ciThe default UX behavior has changed. No adaptation is needed. It does not affect the functional logic. Pay attention to the current rich text menu's UX performance when scrolling stops. 28e41f4b71Sopenharmony_ci 29e41f4b71Sopenharmony_ci## cl.arkui.2 Corner Customization for bindMenu and bindContextMenu Menus 30e41f4b71Sopenharmony_ci 31e41f4b71Sopenharmony_ci**Access Level** 32e41f4b71Sopenharmony_ci 33e41f4b71Sopenharmony_ciPublic API 34e41f4b71Sopenharmony_ci 35e41f4b71Sopenharmony_ci**Reason for Change** 36e41f4b71Sopenharmony_ci 37e41f4b71Sopenharmony_ciEnhancement of functionality 38e41f4b71Sopenharmony_ci 39e41f4b71Sopenharmony_ci**Change Impact** 40e41f4b71Sopenharmony_ci 41e41f4b71Sopenharmony_ciThis change is a compatible change. 42e41f4b71Sopenharmony_ci 43e41f4b71Sopenharmony_ci**API Level** 44e41f4b71Sopenharmony_ci 45e41f4b71Sopenharmony_ci12 46e41f4b71Sopenharmony_ci 47e41f4b71Sopenharmony_ci**Change Since** 48e41f4b71Sopenharmony_ci 49e41f4b71Sopenharmony_ciOpenHarmony SDK version 5.0.0.24 50e41f4b71Sopenharmony_ci 51e41f4b71Sopenharmony_ci**Key API/Component Changes** 52e41f4b71Sopenharmony_ci 53e41f4b71Sopenharmony_cibindMenu, bindContextMenu 54e41f4b71Sopenharmony_ci 55e41f4b71Sopenharmony_ci**Adaptation Guide** 56e41f4b71Sopenharmony_ci 57e41f4b71Sopenharmony_ciThis change is a compatible change, and no adaptation is needed. For details about how to use this feature, see [Menu Control](../../../application-dev/reference/apis-arkui/arkui-ts/ts-universal-attributes-menu.md). 58e41f4b71Sopenharmony_ci 59e41f4b71Sopenharmony_ci## cl.arkui.3 Specification Change in the Use of promptAction.showToast in Unclear UI Contexts 60e41f4b71Sopenharmony_ci 61e41f4b71Sopenharmony_ci**Access Level** 62e41f4b71Sopenharmony_ci 63e41f4b71Sopenharmony_ciPublic API 64e41f4b71Sopenharmony_ci 65e41f4b71Sopenharmony_ci**Reason for Change** 66e41f4b71Sopenharmony_ci 67e41f4b71Sopenharmony_ciThe functionality of this module relies on the UI execution context and should not be used in places where the UI context is unclear. If this interface is called within non-UI pages or some asynchronous callbacks, it may fail to track the current UI context, leading to incorrect calculation of the toast position. 68e41f4b71Sopenharmony_ci 69e41f4b71Sopenharmony_ci**Change Impact** 70e41f4b71Sopenharmony_ci 71e41f4b71Sopenharmony_ciBefore change: In places with an unclear UI context, toasts could be displayed directly, but the position might be incorrect. 72e41f4b71Sopenharmony_ci 73e41f4b71Sopenharmony_ciAfter change: In places with an unclear UI context, users are required to specify the corresponding UIContext to obtain the promptAction object for displaying toasts. 74e41f4b71Sopenharmony_ci 75e41f4b71Sopenharmony_ci**Start API Level** 76e41f4b71Sopenharmony_ci 77e41f4b71Sopenharmony_ciAPI level 9 78e41f4b71Sopenharmony_ci 79e41f4b71Sopenharmony_ci**Change Since** 80e41f4b71Sopenharmony_ci 81e41f4b71Sopenharmony_ciOpenHarmony SDK version 5.0.0.24 82e41f4b71Sopenharmony_ci 83e41f4b71Sopenharmony_ci**Adaptation Guide** 84e41f4b71Sopenharmony_ci 85e41f4b71Sopenharmony_ciWhen attempting to display a toast within http requests, delays, or sub-windows, the toast may not appear, and the log may show an error code 11 returned by the window. In such cases, users need to specify the context manually, as in the following code example: 86e41f4b71Sopenharmony_ci 87e41f4b71Sopenharmony_ci```ts 88e41f4b71Sopenharmony_ciimport promptAction from '@ohos.promptAction'; 89e41f4b71Sopenharmony_ciimport http from '@ohos.net.http'; 90e41f4b71Sopenharmony_ci 91e41f4b71Sopenharmony_ci@Entry 92e41f4b71Sopenharmony_ci@Component 93e41f4b71Sopenharmony_cistruct Index { 94e41f4b71Sopenharmony_ci @State message: string = 'Show toast'; 95e41f4b71Sopenharmony_ci 96e41f4b71Sopenharmony_ci build() { 97e41f4b71Sopenharmony_ci Row() { 98e41f4b71Sopenharmony_ci Button() { 99e41f4b71Sopenharmony_ci Text(this.message) 100e41f4b71Sopenharmony_ci .fontSize(20) 101e41f4b71Sopenharmony_ci .fontWeight(FontWeight.Bold) 102e41f4b71Sopenharmony_ci } 103e41f4b71Sopenharmony_ci .width('100%') 104e41f4b71Sopenharmony_ci .onClick(()=>{ 105e41f4b71Sopenharmony_ci let httpRequest = http.createHttp() 106e41f4b71Sopenharmony_ci let uiContext = this.getUIContext() 107e41f4b71Sopenharmony_ci httpRequest.request('https://xxx.com', { method: http.RequestMethod.GET }).then((res: http.HttpResponse) => { 108e41f4b71Sopenharmony_ci let promptAction1 = uiContext.getPromptAction() 109e41f4b71Sopenharmony_ci promptAction1.showToast({ 110e41f4b71Sopenharmony_ci message:"Toast for success", 111e41f4b71Sopenharmony_ci duration:1000, 112e41f4b71Sopenharmony_ci showMode: promptAction.ToastShowMode.TOP_MOST 113e41f4b71Sopenharmony_ci }) 114e41f4b71Sopenharmony_ci }).catch((err: Error)=>{ 115e41f4b71Sopenharmony_ci let promptAction1 = uiContext.getPromptAction() 116e41f4b71Sopenharmony_ci promptAction1.showToast({ 117e41f4b71Sopenharmony_ci message:"Toast for error", 118e41f4b71Sopenharmony_ci duration:1000, 119e41f4b71Sopenharmony_ci showMode: promptAction.ToastShowMode.TOP_MOST 120e41f4b71Sopenharmony_ci }) 121e41f4b71Sopenharmony_ci httpRequest.destroy() 122e41f4b71Sopenharmony_ci }) 123e41f4b71Sopenharmony_ci }) 124e41f4b71Sopenharmony_ci } 125e41f4b71Sopenharmony_ci .height('100%') 126e41f4b71Sopenharmony_ci } 127e41f4b71Sopenharmony_ci} 128e41f4b71Sopenharmony_ci``` 129e41f4b71Sopenharmony_ci 130e41f4b71Sopenharmony_ci## cl.arkui.4 Default Unit Specification Change for backgroundImagePosition Parameter 131e41f4b71Sopenharmony_ci 132e41f4b71Sopenharmony_ci**Access Level** 133e41f4b71Sopenharmony_ci 134e41f4b71Sopenharmony_ciPublic API 135e41f4b71Sopenharmony_ci 136e41f4b71Sopenharmony_ci**Reason for Change** 137e41f4b71Sopenharmony_ci 138e41f4b71Sopenharmony_ciThe default unit value of the interface does not match the documentation description. 139e41f4b71Sopenharmony_ci 140e41f4b71Sopenharmony_ci**Change Impact** 141e41f4b71Sopenharmony_ci 142e41f4b71Sopenharmony_ciBefore change: Numeric values entered for the position type were defaulted to px units. 143e41f4b71Sopenharmony_ci 144e41f4b71Sopenharmony_ciAfter change: Numeric values entered for the position type are defaulted to vp units. 145e41f4b71Sopenharmony_ci 146e41f4b71Sopenharmony_ci**Start API Level** 147e41f4b71Sopenharmony_ci 148e41f4b71Sopenharmony_ciThe feature was at API level 7, and the change was made in API level 12. 149e41f4b71Sopenharmony_ci 150e41f4b71Sopenharmony_ci**Change Since** 151e41f4b71Sopenharmony_ci 152e41f4b71Sopenharmony_ciOpenHarmony SDK version 5.0.0.24 153e41f4b71Sopenharmony_ci 154e41f4b71Sopenharmony_ci**Adaptation Guide** 155e41f4b71Sopenharmony_ci 156e41f4b71Sopenharmony_ciThe default behavior has changed, and no adaptation is required. However, you need to ensure that the new default effect meets expectations. If px units are needed, values can be concatenated as a string with "px" appended, or converted from px to vp before setting. 157e41f4b71Sopenharmony_ci 158e41f4b71Sopenharmony_ci## cl.arkui.5 Default Value Change for RicEditor Component's RichEditorTextStyle Universal Attribute 159e41f4b71Sopenharmony_ci 160e41f4b71Sopenharmony_ci**Access Level** 161e41f4b71Sopenharmony_ci 162e41f4b71Sopenharmony_ciPublic API 163e41f4b71Sopenharmony_ci 164e41f4b71Sopenharmony_ci**Reason for Change** 165e41f4b71Sopenharmony_ci 166e41f4b71Sopenharmony_ciEnhancement of UX specifications. 167e41f4b71Sopenharmony_ci 168e41f4b71Sopenharmony_ci**Change Impact** 169e41f4b71Sopenharmony_ci 170e41f4b71Sopenharmony_ciThis change is non-compatible. 171e41f4b71Sopenharmony_ci 172e41f4b71Sopenharmony_ci1. Modification of the font display size set in the **RichEditorTextStyle** universal attribute when the font size is 0. 173e41f4b71Sopenharmony_ci 174e41f4b71Sopenharmony_ci - Before change: Content was not displayed when the font size was set to 0. 175e41f4b71Sopenharmony_ci - After change: When the font size is set to 0, it displays with the default font size of 16fp. 176e41f4b71Sopenharmony_ci 177e41f4b71Sopenharmony_ci2. Modification of the default font color set in the **RichEditorTextStyle** universal attribute. 178e41f4b71Sopenharmony_ci 179e41f4b71Sopenharmony_ci - Before change: The default font color was **Color.Black**. 180e41f4b71Sopenharmony_ci - After change: The default font color is **font_primary** from system resources. 181e41f4b71Sopenharmony_ci 182e41f4b71Sopenharmony_ci3. Modification of the default text decoration color set in the **RichEditorTextStyle** universal attribute. 183e41f4b71Sopenharmony_ci 184e41f4b71Sopenharmony_ci - Before change: The default decoration line color was **Color.Black**. 185e41f4b71Sopenharmony_ci - After change: The default decoration line color follows the font color. 186e41f4b71Sopenharmony_ci 187e41f4b71Sopenharmony_ci**Start API Level** 188e41f4b71Sopenharmony_ci 189e41f4b71Sopenharmony_ci10 190e41f4b71Sopenharmony_ci 191e41f4b71Sopenharmony_ci**Change Since** 192e41f4b71Sopenharmony_ci 193e41f4b71Sopenharmony_ciOpenHarmony SDK version 5.0.0.24 194e41f4b71Sopenharmony_ci 195e41f4b71Sopenharmony_ci**Adaptation Guide** 196e41f4b71Sopenharmony_ci 197e41f4b71Sopenharmony_ciThe default behavior has changed, and no adaptation is required. However, developers should ensure that the new default effects meet their expectations. If the new defaults do not meet the requirements, custom modifications to the effect control variables should be made to achieve the desired outcome. 198e41f4b71Sopenharmony_ci 199e41f4b71Sopenharmony_ci 200e41f4b71Sopenharmony_ci## cl.arkui.6 Change in Parent-Child Relationship When Using Custom Components in @Builder Function 201e41f4b71Sopenharmony_ci 202e41f4b71Sopenharmony_ci**Access Level** 203e41f4b71Sopenharmony_ci 204e41f4b71Sopenharmony_ciPublic API 205e41f4b71Sopenharmony_ci 206e41f4b71Sopenharmony_ci**Reason for Change** 207e41f4b71Sopenharmony_ci 208e41f4b71Sopenharmony_ciWhen a Builder function is passed into a child component, the `this` within the child component refers to the parent component where the Builder function is defined. This can lead to runtime errors in certain scenarios, hence the change is necessary. 209e41f4b71Sopenharmony_ci 210e41f4b71Sopenharmony_ci**Change Impact** 211e41f4b71Sopenharmony_ci 212e41f4b71Sopenharmony_ciExample 1: 213e41f4b71Sopenharmony_ci 214e41f4b71Sopenharmony_ci```ts 215e41f4b71Sopenharmony_ci@Entry 216e41f4b71Sopenharmony_ci@Component 217e41f4b71Sopenharmony_cistruct Index { 218e41f4b71Sopenharmony_ci @Builder thirdBuilder() { 219e41f4b71Sopenharmony_ci Third() 220e41f4b71Sopenharmony_ci } 221e41f4b71Sopenharmony_ci build() { 222e41f4b71Sopenharmony_ci Column() { 223e41f4b71Sopenharmony_ci Second({secondBuilder: this.thirdBuilder.bind(this)}) 224e41f4b71Sopenharmony_ci } 225e41f4b71Sopenharmony_ci } 226e41f4b71Sopenharmony_ci} 227e41f4b71Sopenharmony_ci 228e41f4b71Sopenharmony_ci@Component 229e41f4b71Sopenharmony_cistruct Second { 230e41f4b71Sopenharmony_ci @Provide message: string = 'Hello'; 231e41f4b71Sopenharmony_ci @BuilderParam secondBuilder: ()=>void; 232e41f4b71Sopenharmony_ci build() { 233e41f4b71Sopenharmony_ci Column() { 234e41f4b71Sopenharmony_ci this.secondBuilder() 235e41f4b71Sopenharmony_ci } 236e41f4b71Sopenharmony_ci } 237e41f4b71Sopenharmony_ci} 238e41f4b71Sopenharmony_ci 239e41f4b71Sopenharmony_ci@Component 240e41f4b71Sopenharmony_cistruct Third { 241e41f4b71Sopenharmony_ci @Consume message: string; 242e41f4b71Sopenharmony_ci build() { 243e41f4b71Sopenharmony_ci Column() { 244e41f4b71Sopenharmony_ci Text(this.message).fontSize(30) 245e41f4b71Sopenharmony_ci } 246e41f4b71Sopenharmony_ci } 247e41f4b71Sopenharmony_ci} 248e41f4b71Sopenharmony_ci``` 249e41f4b71Sopenharmony_ci 250e41f4b71Sopenharmony_ciBefore the change: 251e41f4b71Sopenharmony_ci 252e41f4b71Sopenharmony_ciExecuting the aforementioned code would result in a runtime error. 253e41f4b71Sopenharmony_ci 254e41f4b71Sopenharmony_ci 255e41f4b71Sopenharmony_ci 256e41f4b71Sopenharmony_ciAfter the change: 257e41f4b71Sopenharmony_ci 258e41f4b71Sopenharmony_ciNo errors occur. 259e41f4b71Sopenharmony_ci 260e41f4b71Sopenharmony_ci**Scenario Examples Involved** 261e41f4b71Sopenharmony_ci 262e41f4b71Sopenharmony_ciExample of dialog nesting: 263e41f4b71Sopenharmony_ci 264e41f4b71Sopenharmony_ci```ts 265e41f4b71Sopenharmony_ci@Builder 266e41f4b71Sopenharmony_cifunction customDialogBuilderFunc(){} 267e41f4b71Sopenharmony_ci 268e41f4b71Sopenharmony_ci@CustomDialog 269e41f4b71Sopenharmony_cistruct CustomDialogExampleTwo { 270e41f4b71Sopenharmony_ci @BuilderParam grandsonBuilderFunc: ()=>void; 271e41f4b71Sopenharmony_ci grandsonFunc: ()=>void = ()=>{}; 272e41f4b71Sopenharmony_ci controllerTwo?: CustomDialogController; 273e41f4b71Sopenharmony_ci @State message: string = "I'm the second dialog box."; 274e41f4b71Sopenharmony_ci @State showIf: boolean = false; 275e41f4b71Sopenharmony_ci build() { 276e41f4b71Sopenharmony_ci Column() { 277e41f4b71Sopenharmony_ci this.grandsonBuilderFunc() 278e41f4b71Sopenharmony_ci Button("show/hide Text") 279e41f4b71Sopenharmony_ci .onClick(()=>{ 280e41f4b71Sopenharmony_ci this.grandsonFunc() 281e41f4b71Sopenharmony_ci }) 282e41f4b71Sopenharmony_ci Button ('Close Second Dialog Box') 283e41f4b71Sopenharmony_ci .onClick(() => { 284e41f4b71Sopenharmony_ci if (this.controllerTwo != undefined) { 285e41f4b71Sopenharmony_ci this.controllerTwo.close() 286e41f4b71Sopenharmony_ci } 287e41f4b71Sopenharmony_ci }) 288e41f4b71Sopenharmony_ci .margin(20) 289e41f4b71Sopenharmony_ci } 290e41f4b71Sopenharmony_ci } 291e41f4b71Sopenharmony_ci} 292e41f4b71Sopenharmony_ci 293e41f4b71Sopenharmony_ci@CustomDialog 294e41f4b71Sopenharmony_cistruct CustomDialogExample { 295e41f4b71Sopenharmony_ci @BuilderParam childBuilderFunc: ()=>void = customDialogBuilderFunc; 296e41f4b71Sopenharmony_ci childFunc: null | (()=>void) = null; 297e41f4b71Sopenharmony_ci dialogControllerTwo: CustomDialogController | null = new CustomDialogController({ 298e41f4b71Sopenharmony_ci builder: CustomDialogExampleTwo({grandsonBuilderFunc: this.childBuilderFunc, grandsonFunc: this.childFunc!}), 299e41f4b71Sopenharmony_ci alignment: DialogAlignment.Bottom, 300e41f4b71Sopenharmony_ci offset: { dx: 0, dy: -25 } }) 301e41f4b71Sopenharmony_ci controller?: CustomDialogController; 302e41f4b71Sopenharmony_ci 303e41f4b71Sopenharmony_ci build() { 304e41f4b71Sopenharmony_ci Column() { 305e41f4b71Sopenharmony_ci Button ('Open Second Dialog Box and close this box') 306e41f4b71Sopenharmony_ci .onClick(() => { 307e41f4b71Sopenharmony_ci this.controller!.close(); 308e41f4b71Sopenharmony_ci this.dialogControllerTwo!.open(); 309e41f4b71Sopenharmony_ci }) 310e41f4b71Sopenharmony_ci .margin(20) 311e41f4b71Sopenharmony_ci }.borderRadius(10) 312e41f4b71Sopenharmony_ci } 313e41f4b71Sopenharmony_ci} 314e41f4b71Sopenharmony_ci 315e41f4b71Sopenharmony_ci@Entry 316e41f4b71Sopenharmony_ci@Component 317e41f4b71Sopenharmony_cistruct CustomDialogUser { 318e41f4b71Sopenharmony_ci @State inputValue: string = 'Click Me'; 319e41f4b71Sopenharmony_ci @State styleFlag: boolean = false; 320e41f4b71Sopenharmony_ci @Builder parentBuilderFunc() { 321e41f4b71Sopenharmony_ci if (this.styleFlag) { 322e41f4b71Sopenharmony_ci Text(this.inputValue).fontSize(35) 323e41f4b71Sopenharmony_ci } 324e41f4b71Sopenharmony_ci } 325e41f4b71Sopenharmony_ci parentFunc() { 326e41f4b71Sopenharmony_ci this.styleFlag = !this.styleFlag; 327e41f4b71Sopenharmony_ci } 328e41f4b71Sopenharmony_ci dialogController: CustomDialogController | null = new CustomDialogController({ 329e41f4b71Sopenharmony_ci builder: CustomDialogExample({childBuilderFunc: this.parentBuilderFunc.bind(this), childFunc: this.parentFunc.bind(this),}), 330e41f4b71Sopenharmony_ci cancel: this.exitApp, 331e41f4b71Sopenharmony_ci autoCancel: true, 332e41f4b71Sopenharmony_ci alignment: DialogAlignment.Bottom, 333e41f4b71Sopenharmony_ci offset: { dx: 0, dy: -20 }, 334e41f4b71Sopenharmony_ci gridCount: 4, 335e41f4b71Sopenharmony_ci customStyle: false 336e41f4b71Sopenharmony_ci }) 337e41f4b71Sopenharmony_ci 338e41f4b71Sopenharmony_ci 339e41f4b71Sopenharmony_ci aboutToDisappear() { 340e41f4b71Sopenharmony_ci this.dialogController = null; 341e41f4b71Sopenharmony_ci } 342e41f4b71Sopenharmony_ci 343e41f4b71Sopenharmony_ci onCancel() { 344e41f4b71Sopenharmony_ci console.info('Callback when the first button is clicked'); 345e41f4b71Sopenharmony_ci } 346e41f4b71Sopenharmony_ci 347e41f4b71Sopenharmony_ci onAccept() { 348e41f4b71Sopenharmony_ci console.info('Callback when the second button is clicked'); 349e41f4b71Sopenharmony_ci } 350e41f4b71Sopenharmony_ci 351e41f4b71Sopenharmony_ci exitApp() { 352e41f4b71Sopenharmony_ci console.info('Click the callback in the blank area'); 353e41f4b71Sopenharmony_ci } 354e41f4b71Sopenharmony_ci build() { 355e41f4b71Sopenharmony_ci Column() { 356e41f4b71Sopenharmony_ci Button(this.inputValue) 357e41f4b71Sopenharmony_ci .onClick(() => { 358e41f4b71Sopenharmony_ci if (this.dialogController != null) { 359e41f4b71Sopenharmony_ci this.dialogController.open() 360e41f4b71Sopenharmony_ci } 361e41f4b71Sopenharmony_ci }).backgroundColor(0x317aff) 362e41f4b71Sopenharmony_ci }.width('100%').margin({ top: 5 }) 363e41f4b71Sopenharmony_ci } 364e41f4b71Sopenharmony_ci} 365e41f4b71Sopenharmony_ci``` 366e41f4b71Sopenharmony_ci 367e41f4b71Sopenharmony_ciExample of component freezing: 368e41f4b71Sopenharmony_ci 369e41f4b71Sopenharmony_ci```ts 370e41f4b71Sopenharmony_ci@Entry 371e41f4b71Sopenharmony_ci@Component 372e41f4b71Sopenharmony_cistruct Index { 373e41f4b71Sopenharmony_ci @Builder 374e41f4b71Sopenharmony_ci parentComponent() { 375e41f4b71Sopenharmony_ci Third() 376e41f4b71Sopenharmony_ci } 377e41f4b71Sopenharmony_ci build() { 378e41f4b71Sopenharmony_ci Column() { 379e41f4b71Sopenharmony_ci Second({childBuilderParam: this.parentComponent.bind(this)}) 380e41f4b71Sopenharmony_ci }.width('100%').margin({ top: 5 }) 381e41f4b71Sopenharmony_ci } 382e41f4b71Sopenharmony_ci} 383e41f4b71Sopenharmony_ci 384e41f4b71Sopenharmony_ci@Component({freezeWhenInactive: true}) 385e41f4b71Sopenharmony_cistruct Second { 386e41f4b71Sopenharmony_ci @BuilderParam childBuilderParam: ()=>void; 387e41f4b71Sopenharmony_ci build() { 388e41f4b71Sopenharmony_ci Column() { 389e41f4b71Sopenharmony_ci this.childBuilderParam(); 390e41f4b71Sopenharmony_ci }.width('100%').margin({ top: 5 }) 391e41f4b71Sopenharmony_ci } 392e41f4b71Sopenharmony_ci} 393e41f4b71Sopenharmony_ci 394e41f4b71Sopenharmony_ci@Component 395e41f4b71Sopenharmony_cistruct Third { 396e41f4b71Sopenharmony_ci @State message: string = '111'; 397e41f4b71Sopenharmony_ci build() { 398e41f4b71Sopenharmony_ci Column() { 399e41f4b71Sopenharmony_ci Text(this.message) 400e41f4b71Sopenharmony_ci }.width('100%').margin({ top: 5 }) 401e41f4b71Sopenharmony_ci } 402e41f4b71Sopenharmony_ci} 403e41f4b71Sopenharmony_ci``` 404e41f4b71Sopenharmony_ci 405e41f4b71Sopenharmony_ci**Start API Level** 406e41f4b71Sopenharmony_ci 407e41f4b71Sopenharmony_ci9 408e41f4b71Sopenharmony_ci 409e41f4b71Sopenharmony_ci**Change Since** 410e41f4b71Sopenharmony_ci 411e41f4b71Sopenharmony_ciOpenHarmony SDK version 5.0.0.24 412e41f4b71Sopenharmony_ci 413e41f4b71Sopenharmony_ci**Key API/Component Changes** 414e41f4b71Sopenharmony_ci 415e41f4b71Sopenharmony_ci@Builder 416e41f4b71Sopenharmony_ci 417e41f4b71Sopenharmony_ci**Adaptation Guide** 418e41f4b71Sopenharmony_ci 419e41f4b71Sopenharmony_ciThis change is a compatibility improvement. No adaptation is required. 420e41f4b71Sopenharmony_ci 421e41f4b71Sopenharmony_ci## cl.arkui.7 Change in the Rule for Handling Boundary Values of the Menu Component's radius API 422e41f4b71Sopenharmony_ci 423e41f4b71Sopenharmony_ci**Access Level** 424e41f4b71Sopenharmony_ci 425e41f4b71Sopenharmony_ciPublic API 426e41f4b71Sopenharmony_ci 427e41f4b71Sopenharmony_ci**Reason for Change** 428e41f4b71Sopenharmony_ci 429e41f4b71Sopenharmony_ciEnhancement of UX specifications. 430e41f4b71Sopenharmony_ci 431e41f4b71Sopenharmony_ci**Change Impact** 432e41f4b71Sopenharmony_ci 433e41f4b71Sopenharmony_ciThis change is non-compatible. 434e41f4b71Sopenharmony_ci 435e41f4b71Sopenharmony_ciBefore the change: When the sum of the two maximum corner radii in the horizontal direction is greater than or equal to the menu's width, all four corners of the menu use the menu's default corner radius value. 436e41f4b71Sopenharmony_ci 437e41f4b71Sopenharmony_ciAfter the change: When the sum of the two maximum corner radii in the horizontal direction is greater than the menu's width, or when the sum of the two maximum corner radii in the vertical direction is greater than the menu's height, all four corners of the menu use the menu's default corner radius value. 438e41f4b71Sopenharmony_ci 439e41f4b71Sopenharmony_ci**API Level** 440e41f4b71Sopenharmony_ci 441e41f4b71Sopenharmony_ci12 442e41f4b71Sopenharmony_ci 443e41f4b71Sopenharmony_ci**Change Since** 444e41f4b71Sopenharmony_ci 445e41f4b71Sopenharmony_ciOpenHarmony SDK version 5.0.0.24 446e41f4b71Sopenharmony_ci 447e41f4b71Sopenharmony_ci**Key API/Component Changes** 448e41f4b71Sopenharmony_ci 449e41f4b71Sopenharmony_ciThe radius interface within the Menu component. 450e41f4b71Sopenharmony_ci 451e41f4b71Sopenharmony_ci**Adaptation Guide** 452e41f4b71Sopenharmony_ci 453e41f4b71Sopenharmony_ciIf the expectation is to use the menu's default corner radius, there is no need to set the radius property for the **Menu** component. 454e41f4b71Sopenharmony_ci 455e41f4b71Sopenharmony_ciIf a custom corner radius is expected, it can be set through the radius interface with a custom value that does not exceed the boundary values. 456e41f4b71Sopenharmony_ci 457e41f4b71Sopenharmony_ci## cl.arkui.8 Specification Change for RichEditor's onWillChange and onDidChange Interfaces 458e41f4b71Sopenharmony_ci 459e41f4b71Sopenharmony_ci**Access Level** 460e41f4b71Sopenharmony_ci 461e41f4b71Sopenharmony_ciPublic API 462e41f4b71Sopenharmony_ci 463e41f4b71Sopenharmony_ci**Reason for Change** 464e41f4b71Sopenharmony_ci 465e41f4b71Sopenharmony_ciEnhancement of interface capabilities. 466e41f4b71Sopenharmony_ci 467e41f4b71Sopenharmony_ci**Change Impact** 468e41f4b71Sopenharmony_ci 469e41f4b71Sopenharmony_ciThis change is non-compatible. 470e41f4b71Sopenharmony_ci 471e41f4b71Sopenharmony_ciBefore the change: 472e41f4b71Sopenharmony_ci 473e41f4b71Sopenharmony_ciThe parameter of the **OnWillChange** callback function, **RichEditorChangeValue**, was information about the replaced span and the new span. 474e41f4b71Sopenharmony_ciThe return value of the **OnDidChange** callback function was information about the new span. 475e41f4b71Sopenharmony_ci 476e41f4b71Sopenharmony_ciAfter the change: 477e41f4b71Sopenharmony_ci 478e41f4b71Sopenharmony_ciThe parameter of the **OnWillChange** callback function, **RichEditorChangeValue**, is the index range of the replaced content and information about the new span. 479e41f4b71Sopenharmony_ciThe return value of the **OnDidChange** callback function is the index range of the replaced content and the index range of the new content. 480e41f4b71Sopenharmony_ci 481e41f4b71Sopenharmony_ci**API Level** 482e41f4b71Sopenharmony_ci 483e41f4b71Sopenharmony_ci12 484e41f4b71Sopenharmony_ci 485e41f4b71Sopenharmony_ci**Change Since** 486e41f4b71Sopenharmony_ci 487e41f4b71Sopenharmony_ciOpenHarmony SDK version 5.0.0.24 488e41f4b71Sopenharmony_ci 489e41f4b71Sopenharmony_ci**Key API/Component Changes** 490e41f4b71Sopenharmony_ci 491e41f4b71Sopenharmony_ciThe OnWillChange and OnDidChange interfaces of RichEditor. 492e41f4b71Sopenharmony_ci 493e41f4b71Sopenharmony_ci**Adaptation Guide** 494e41f4b71Sopenharmony_ci 495e41f4b71Sopenharmony_ciSee [RichEditor](../../../application-dev/reference/apis-arkui/arkui-ts/ts-basic-components-richeditor.md#example17) for the usage of the enhanced APIs. 496e41f4b71Sopenharmony_ci<!--no_check--> 497e41f4b71Sopenharmony_ci 498