mirror of
https://gitee.com/openharmony/arkui_ace_engine
synced 2024-11-23 07:01:24 +00:00
!48446 【ArkUI】MenuItemGroup组件属性补充
Merge pull request !48446 from tiankonglin/MenuItemGroup
This commit is contained in:
commit
679a79a71f
@ -0,0 +1,229 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2024 Huawei Device Co., Ltd.
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { Drawer } from 'common/src/main/ets/components/Drawer';
|
||||||
|
import { ColorBlock, IconBlock, RadioBlock, SliderBlock, useEnabled } from 'common';
|
||||||
|
|
||||||
|
@Component
|
||||||
|
export struct MenuItemGroupBootcamp {
|
||||||
|
@Require @Prop title: ResourceStr;
|
||||||
|
@State showParameters: boolean = false;
|
||||||
|
@State enableStartIcon: boolean = false;
|
||||||
|
@State startIcon: ResourceStr = $r('sys.media.ohos_ic_public_device_phone');
|
||||||
|
@State enableEndIcon: boolean = false;
|
||||||
|
@State endIcon: ResourceStr = $r('sys.media.ohos_ic_public_device_phone');
|
||||||
|
@State labelNum: number = 2;
|
||||||
|
@State enableLabelNum: boolean = false;
|
||||||
|
@State showSecondaryMenu: boolean = false;
|
||||||
|
@State enableMenuItemGroupRadius: boolean = false;
|
||||||
|
@State menuItemGroupRadius: number = 0;
|
||||||
|
@State enableMenuItemGroupBackgroundColor: boolean = false;
|
||||||
|
@State menuItemGroupBackgroundColor: ResourceStr = '#E5000000';
|
||||||
|
@State enableMenuItemGroupOpacity: boolean = false;
|
||||||
|
@State menuItemGroupOpacity: number = 1;
|
||||||
|
@State enableMenuItemGroupVisibility: boolean = true;
|
||||||
|
@State menuItemGroupVisibility: Visibility = Visibility.Visible;
|
||||||
|
@State enableMenuItemGroupPadding: boolean = false;
|
||||||
|
@State menuItemGroupPadding: number = 0;
|
||||||
|
@State enableMenuItemGroupMargin: boolean = false;
|
||||||
|
@State menuItemGroupMargin: number = 0;
|
||||||
|
@State enableMenuItemGroupWidth: boolean = false;
|
||||||
|
@State menuItemGroupWidth: number = 100;
|
||||||
|
@State enableMenuItemGroupHeight: boolean = false;
|
||||||
|
@State menuItemGroupHeight: number = 250;
|
||||||
|
|
||||||
|
build() {
|
||||||
|
NavDestination() {
|
||||||
|
Drawer({
|
||||||
|
title: this.title,
|
||||||
|
showParameters: $showParameters,
|
||||||
|
content: () => {
|
||||||
|
this.Content()
|
||||||
|
},
|
||||||
|
parameters: () => {
|
||||||
|
this.Parameters()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
.backgroundColor($r('sys.color.ohos_id_color_sub_background'))
|
||||||
|
.hideTitleBar(true)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Builder
|
||||||
|
SubMenu() {
|
||||||
|
Menu() {
|
||||||
|
MenuItem({ content: '复制', labelInfo: 'Ctrl+C' })
|
||||||
|
MenuItem({ content: '粘贴', labelInfo: 'Ctrl+V' })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Builder
|
||||||
|
MyMenu() {
|
||||||
|
Menu() {
|
||||||
|
MenuItem({
|
||||||
|
startIcon: useEnabled<ResourceStr>(this.enableStartIcon, this.startIcon),
|
||||||
|
content: '菜单选项1',
|
||||||
|
endIcon: useEnabled<ResourceStr>(this.enableEndIcon, this.endIcon),
|
||||||
|
builder: useEnabled<CustomBuilder>(this.showSecondaryMenu,
|
||||||
|
this.showSecondaryMenu ? (): void => this.SubMenu() : undefined),
|
||||||
|
})
|
||||||
|
MenuItemGroup({ header: '标题显示'
|
||||||
|
,footer:'尾部显示'}){
|
||||||
|
MenuItem({
|
||||||
|
startIcon: useEnabled<ResourceStr>(this.enableStartIcon, this.startIcon),
|
||||||
|
content: '菜单选项2',
|
||||||
|
endIcon: useEnabled<ResourceStr>(this.enableEndIcon, this.endIcon),
|
||||||
|
builder: useEnabled<CustomBuilder>(this.showSecondaryMenu,
|
||||||
|
this.showSecondaryMenu ? (): void => this.SubMenu() : undefined),
|
||||||
|
})
|
||||||
|
|
||||||
|
MenuItem({
|
||||||
|
startIcon: useEnabled<ResourceStr>(this.enableStartIcon, this.startIcon),
|
||||||
|
content: '菜单选项3',
|
||||||
|
endIcon: useEnabled<ResourceStr>(this.enableEndIcon, this.endIcon),
|
||||||
|
builder: useEnabled<CustomBuilder>(this.showSecondaryMenu,
|
||||||
|
this.showSecondaryMenu ? (): void => this.SubMenu() : undefined),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
.borderRadius(useEnabled<number>(this.enableMenuItemGroupRadius, this.menuItemGroupRadius))
|
||||||
|
.width(useEnabled<number>(this.enableMenuItemGroupWidth, this.menuItemGroupWidth))
|
||||||
|
.height(useEnabled<number>(this.enableMenuItemGroupHeight, this.menuItemGroupHeight))
|
||||||
|
.backgroundColor(useEnabled<ResourceStr>(this.enableMenuItemGroupBackgroundColor,
|
||||||
|
this.menuItemGroupBackgroundColor))
|
||||||
|
.opacity(useEnabled<number>(this.enableMenuItemGroupOpacity, this.menuItemGroupOpacity))
|
||||||
|
.visibility(useEnabled<Visibility>(this.enableMenuItemGroupVisibility, this.menuItemGroupVisibility))
|
||||||
|
.padding(useEnabled<number>(this.enableMenuItemGroupPadding, this.menuItemGroupPadding))
|
||||||
|
.margin(useEnabled<number>(this.enableMenuItemGroupMargin, this.menuItemGroupMargin))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Builder
|
||||||
|
Content() {
|
||||||
|
Column() {
|
||||||
|
Button(
|
||||||
|
this.enableLabelNum ? '弹出菜单'.repeat(this.labelNum / 2) : '弹出菜单',
|
||||||
|
)
|
||||||
|
.bindMenu(this.MyMenu)
|
||||||
|
}
|
||||||
|
.onDragStart(() => {
|
||||||
|
ContextMenu.close()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
@Builder
|
||||||
|
Parameters() {
|
||||||
|
Scroll() {
|
||||||
|
Column({ space: 8 }) {
|
||||||
|
RadioBlock({
|
||||||
|
title: 'secondaryMenu',
|
||||||
|
isEnabled: this.showSecondaryMenu,
|
||||||
|
value: this.showSecondaryMenu,
|
||||||
|
dataSource: [
|
||||||
|
{ label: 'true', value: true },
|
||||||
|
{ label: 'false', value: false },
|
||||||
|
]
|
||||||
|
})
|
||||||
|
|
||||||
|
IconBlock({
|
||||||
|
title: 'startIcon',
|
||||||
|
isEnabled: $enableStartIcon,
|
||||||
|
icon: $startIcon,
|
||||||
|
})
|
||||||
|
|
||||||
|
IconBlock({
|
||||||
|
title: 'endIcon',
|
||||||
|
isEnabled: $enableEndIcon,
|
||||||
|
icon: $endIcon,
|
||||||
|
})
|
||||||
|
|
||||||
|
SliderBlock({
|
||||||
|
title: 'borderRadius',
|
||||||
|
isEnabled: $enableMenuItemGroupRadius,
|
||||||
|
value: $menuItemGroupRadius,
|
||||||
|
min: 0,
|
||||||
|
max: 16
|
||||||
|
})
|
||||||
|
|
||||||
|
SliderBlock({
|
||||||
|
title: 'width',
|
||||||
|
isEnabled: $enableMenuItemGroupWidth,
|
||||||
|
value: $menuItemGroupWidth,
|
||||||
|
min: 100,
|
||||||
|
max: 150
|
||||||
|
})
|
||||||
|
|
||||||
|
SliderBlock({
|
||||||
|
title: 'height',
|
||||||
|
isEnabled: $enableMenuItemGroupHeight,
|
||||||
|
value: $menuItemGroupHeight,
|
||||||
|
min: 250,
|
||||||
|
max: 450
|
||||||
|
})
|
||||||
|
|
||||||
|
SliderBlock({
|
||||||
|
title: 'padding',
|
||||||
|
isEnabled: $enableMenuItemGroupPadding,
|
||||||
|
value: $menuItemGroupPadding,
|
||||||
|
min: 0,
|
||||||
|
max: 16
|
||||||
|
})
|
||||||
|
|
||||||
|
SliderBlock({
|
||||||
|
title: 'margin',
|
||||||
|
isEnabled: $enableMenuItemGroupMargin,
|
||||||
|
value: $menuItemGroupMargin,
|
||||||
|
min: 0,
|
||||||
|
max: 16
|
||||||
|
})
|
||||||
|
|
||||||
|
ColorBlock({
|
||||||
|
title: 'BackgroundColor',
|
||||||
|
isEnabled: $enableMenuItemGroupBackgroundColor,
|
||||||
|
color: $menuItemGroupBackgroundColor,
|
||||||
|
})
|
||||||
|
|
||||||
|
SliderBlock({
|
||||||
|
title: 'Opacity',
|
||||||
|
isEnabled: $enableMenuItemGroupOpacity,
|
||||||
|
value: $menuItemGroupOpacity,
|
||||||
|
step: 0.1,
|
||||||
|
min: 0,
|
||||||
|
max: 1
|
||||||
|
})
|
||||||
|
|
||||||
|
RadioBlock({
|
||||||
|
title: 'Visibility',
|
||||||
|
isEnabled: $enableMenuItemGroupVisibility,
|
||||||
|
value: $menuItemGroupVisibility,
|
||||||
|
dataSource: [
|
||||||
|
{ label: 'Visible', value: Visibility.Visible },
|
||||||
|
{ label: 'Hidden', value: Visibility.Hidden }
|
||||||
|
]
|
||||||
|
})
|
||||||
|
}.width('100%')
|
||||||
|
}
|
||||||
|
.height('52%')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Preview
|
||||||
|
@Component
|
||||||
|
struct BindMenuBootcampPreviewer {
|
||||||
|
build() {
|
||||||
|
MenuItemGroupBootcamp({
|
||||||
|
title: '菜单分组/MenuItemGroup'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user