1048147e0Sopenharmony_ci/** 2048147e0Sopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd. 3048147e0Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4048147e0Sopenharmony_ci * you may not use this file except in compliance with the License. 5048147e0Sopenharmony_ci * You may obtain a copy of the License at 6048147e0Sopenharmony_ci * 7048147e0Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8048147e0Sopenharmony_ci * 9048147e0Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10048147e0Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11048147e0Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12048147e0Sopenharmony_ci * See the License for the specific language governing permissions and 13048147e0Sopenharmony_ci * limitations under the License. 14048147e0Sopenharmony_ci */ 15048147e0Sopenharmony_ciimport DeviceUtil from '../utils/DeviceUtil'; 16048147e0Sopenharmony_ci 17048147e0Sopenharmony_ci/** 18048147e0Sopenharmony_ci * Custom pop-up menu buttons 19048147e0Sopenharmony_ci */ 20048147e0Sopenharmony_ci@Component 21048147e0Sopenharmony_ciexport struct MoreMenu { 22048147e0Sopenharmony_ci @StorageLink('curBp') curBp: string = 'sm' 23048147e0Sopenharmony_ci @Consume menuItems: Array<any>; 24048147e0Sopenharmony_ci private menuImage: Resource = $rawfile('icon/ic_public_more.svg'); 25048147e0Sopenharmony_ci private placement: Placement = Placement.Bottom; 26048147e0Sopenharmony_ci private defaultColor: Resource = $r('sys.color.ohos_id_color_dialog_bg'); 27048147e0Sopenharmony_ci private menuText: Resource = null; 28048147e0Sopenharmony_ci private menuTextColor: Resource = $r('sys.color.ohos_id_color_text_primary'); 29048147e0Sopenharmony_ci 30048147e0Sopenharmony_ci @Builder 31048147e0Sopenharmony_ci PopupBuilder() { 32048147e0Sopenharmony_ci Column() { 33048147e0Sopenharmony_ci List() { 34048147e0Sopenharmony_ci ForEach(this.menuItems, (item, index) => { 35048147e0Sopenharmony_ci ListItem() { 36048147e0Sopenharmony_ci Button({ type: ButtonType.Normal, stateEffect: item.enabled }) { 37048147e0Sopenharmony_ci Text(item.value) 38048147e0Sopenharmony_ci .fontSize(16) 39048147e0Sopenharmony_ci .lineHeight(21) 40048147e0Sopenharmony_ci .width('100%') 41048147e0Sopenharmony_ci .height(48) 42048147e0Sopenharmony_ci .padding({ left: 12, right: 12 }) 43048147e0Sopenharmony_ci .fontWeight(FontWeight.Regular) 44048147e0Sopenharmony_ci .fontColor(item.enabled ? $r('sys.color.ohos_id_color_text_primary') : 45048147e0Sopenharmony_ci $r('sys.color.ohos_id_color_text_tertiary')) 46048147e0Sopenharmony_ci } 47048147e0Sopenharmony_ci .width('100%') 48048147e0Sopenharmony_ci .height(48) 49048147e0Sopenharmony_ci .borderRadius(16) 50048147e0Sopenharmony_ci .backgroundColor($r('sys.color.ohos_id_color_foreground_contrary')) 51048147e0Sopenharmony_ci .onClick(() => { 52048147e0Sopenharmony_ci if (item.enabled) { 53048147e0Sopenharmony_ci item.action(); 54048147e0Sopenharmony_ci } 55048147e0Sopenharmony_ci }) 56048147e0Sopenharmony_ci } 57048147e0Sopenharmony_ci }, item => JSON.stringify(item)) 58048147e0Sopenharmony_ci } 59048147e0Sopenharmony_ci .listDirection(Axis.Vertical) // Arrange Direction 60048147e0Sopenharmony_ci .divider({ 61048147e0Sopenharmony_ci strokeWidth: 0.5, 62048147e0Sopenharmony_ci color: $r('sys.color.ohos_id_color_list_separator'), 63048147e0Sopenharmony_ci startMargin: 12, 64048147e0Sopenharmony_ci endMargin: 12 65048147e0Sopenharmony_ci }) // Demarcation line between each row 66048147e0Sopenharmony_ci .edgeEffect(EdgeEffect.Spring) // Slide to Edge Effect 67048147e0Sopenharmony_ci .chainAnimation(false) // Disable linkage special effects. 68048147e0Sopenharmony_ci } 69048147e0Sopenharmony_ci .backgroundColor(this.defaultColor) 70048147e0Sopenharmony_ci .width(this.curBp == 'lg' ? 186 : 144) 71048147e0Sopenharmony_ci .borderRadius(16) 72048147e0Sopenharmony_ci .padding({ top: 4, bottom: 4, left: 4, right: 4 }) 73048147e0Sopenharmony_ci } 74048147e0Sopenharmony_ci 75048147e0Sopenharmony_ci build() { 76048147e0Sopenharmony_ci Column() { 77048147e0Sopenharmony_ci Image(this.menuImage) 78048147e0Sopenharmony_ci .width(24) 79048147e0Sopenharmony_ci .height(24) 80048147e0Sopenharmony_ci if (this.menuText != null) { 81048147e0Sopenharmony_ci Text(this.menuText) 82048147e0Sopenharmony_ci .fontSize(10) 83048147e0Sopenharmony_ci .lineHeight(14) 84048147e0Sopenharmony_ci .fontColor(this.menuTextColor) 85048147e0Sopenharmony_ci .margin({ top: 3 }) 86048147e0Sopenharmony_ci .fontSize($r('sys.float.ohos_id_text_size_caption')) 87048147e0Sopenharmony_ci .fontWeight(FontWeight.Medium) 88048147e0Sopenharmony_ci .fontColor($r('sys.color.ohos_id_color_toolbar_text')) 89048147e0Sopenharmony_ci } 90048147e0Sopenharmony_ci } 91048147e0Sopenharmony_ci .bindMenu(this.PopupBuilder) 92048147e0Sopenharmony_ci } 93048147e0Sopenharmony_ci}