1c36cf2e9Sopenharmony_ci/*
2c36cf2e9Sopenharmony_ci * Copyright (c) 2023-2023 Huawei Device Co., Ltd.
3c36cf2e9Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4c36cf2e9Sopenharmony_ci * you may not use this file except in compliance with the License.
5c36cf2e9Sopenharmony_ci * You may obtain a copy of the License at
6c36cf2e9Sopenharmony_ci *
7c36cf2e9Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8c36cf2e9Sopenharmony_ci *
9c36cf2e9Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10c36cf2e9Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11c36cf2e9Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12c36cf2e9Sopenharmony_ci * See the License for the specific language governing permissions and
13c36cf2e9Sopenharmony_ci * limitations under the License.
14c36cf2e9Sopenharmony_ci */
15c36cf2e9Sopenharmony_ci
16c36cf2e9Sopenharmony_ci@Component
17c36cf2e9Sopenharmony_ciexport struct CancelButton {
18c36cf2e9Sopenharmony_ci  cancelLabel?: ResourceStr;
19c36cf2e9Sopenharmony_ci  cancelWidth?: Length;
20c36cf2e9Sopenharmony_ci  cancelHeight?: Length;
21c36cf2e9Sopenharmony_ci  cancelClick?: (event?: ClickEvent) => void;
22c36cf2e9Sopenharmony_ci  build() {
23c36cf2e9Sopenharmony_ci    Button(this.cancelLabel)
24c36cf2e9Sopenharmony_ci      .width(this.cancelWidth)
25c36cf2e9Sopenharmony_ci      .height(this.cancelHeight)
26c36cf2e9Sopenharmony_ci      .fontColor($r('sys.color.ohos_id_color_text_primary_activated'))
27c36cf2e9Sopenharmony_ci      .backgroundColor($r('sys.color.ohos_id_color_button_normal'))
28c36cf2e9Sopenharmony_ci      .onClick(this.cancelClick);
29c36cf2e9Sopenharmony_ci  }
30c36cf2e9Sopenharmony_ci}
31c36cf2e9Sopenharmony_ci
32c36cf2e9Sopenharmony_ci@Component
33c36cf2e9Sopenharmony_ciexport struct ClickableImage {
34c36cf2e9Sopenharmony_ci  imageSrc?: ResourceStr;
35c36cf2e9Sopenharmony_ci  imageWidth?: Length;
36c36cf2e9Sopenharmony_ci  imageHeight?: Length;
37c36cf2e9Sopenharmony_ci  clickEvent?: (event?: ClickEvent) => void;
38c36cf2e9Sopenharmony_ci  isHoverEnable: boolean = false;
39c36cf2e9Sopenharmony_ci  isHover: boolean = false;
40c36cf2e9Sopenharmony_ci  @State bckColor: Resource | undefined = undefined;
41c36cf2e9Sopenharmony_ci  build() {
42c36cf2e9Sopenharmony_ci    Image(this.imageSrc)
43c36cf2e9Sopenharmony_ci      .width(this.imageWidth)
44c36cf2e9Sopenharmony_ci      .height(this.imageHeight)
45c36cf2e9Sopenharmony_ci      .backgroundColor(this.bckColor)
46c36cf2e9Sopenharmony_ci      .borderRadius($r('sys.float.ohos_id_corner_radius_clicked'))
47c36cf2e9Sopenharmony_ci      .onClick(this.clickEvent)
48c36cf2e9Sopenharmony_ci      .onHover((isHover) => {
49c36cf2e9Sopenharmony_ci        if (this.isHoverEnable && this.isHover != isHover) {
50c36cf2e9Sopenharmony_ci          if (isHover) {
51c36cf2e9Sopenharmony_ci            this.bckColor = $r('sys.color.ohos_id_color_hover')
52c36cf2e9Sopenharmony_ci          } else {
53c36cf2e9Sopenharmony_ci            this.bckColor = $r('sys.color.ohos_id_color_background');
54c36cf2e9Sopenharmony_ci          }
55c36cf2e9Sopenharmony_ci        }
56c36cf2e9Sopenharmony_ci        this.isHover = isHover;
57c36cf2e9Sopenharmony_ci      })
58c36cf2e9Sopenharmony_ci      .onTouch((event) => {
59c36cf2e9Sopenharmony_ci        if (event.type === TouchType.Down) {
60c36cf2e9Sopenharmony_ci          this.isHover = false;
61c36cf2e9Sopenharmony_ci          this.bckColor = $r('sys.color.ohos_fa_click_effect')
62c36cf2e9Sopenharmony_ci        } else if (event.type === TouchType.Up) {
63c36cf2e9Sopenharmony_ci          this.bckColor = $r('sys.color.ohos_id_color_background');
64c36cf2e9Sopenharmony_ci        }
65c36cf2e9Sopenharmony_ci      })
66c36cf2e9Sopenharmony_ci  }
67c36cf2e9Sopenharmony_ci}
68c36cf2e9Sopenharmony_ci
69c36cf2e9Sopenharmony_ci
70