• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (c) 2023 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16/// <reference path='./import.ts' />
17class GridItemSelectableModifier extends ModifierWithKey<boolean> {
18  static identity: Symbol = Symbol('gridItemSelectable');
19  applyPeer(node: KNode, reset: boolean): void {
20    if (reset) {
21      getUINativeModule().gridItem.resetGridItemSelectable(node);
22    } else {
23      getUINativeModule().gridItem.setGridItemSelectable(node, this.value!);
24    }
25  }
26}
27
28class GridItemSelectedModifier extends ModifierWithKey<boolean> {
29  static identity: Symbol = Symbol('gridItemSelected');
30  applyPeer(node: KNode, reset: boolean): void {
31    if (reset) {
32      getUINativeModule().gridItem.resetGridItemSelected(node);
33    } else {
34      getUINativeModule().gridItem.setGridItemSelected(node, this.value!);
35    }
36  }
37}
38
39class GridItemRowStartModifier extends ModifierWithKey<number> {
40  static identity: Symbol = Symbol('gridItemRowStart');
41  applyPeer(node: KNode, reset: boolean): void {
42    if (reset) {
43      getUINativeModule().gridItem.resetGridItemRowStart(node);
44    } else {
45      getUINativeModule().gridItem.setGridItemRowStart(node, this.value!);
46    }
47  }
48}
49
50class GridItemRowEndModifier extends ModifierWithKey<number> {
51  static identity: Symbol = Symbol('gridItemRowEnd');
52  applyPeer(node: KNode, reset: boolean): void {
53    if (reset) {
54      getUINativeModule().gridItem.resetGridItemRowEnd(node);
55    } else {
56      getUINativeModule().gridItem.setGridItemRowEnd(node, this.value!);
57    }
58  }
59}
60
61class GridItemColumnStartModifier extends ModifierWithKey<number> {
62  static identity: Symbol = Symbol('gridItemColumnStart');
63  applyPeer(node: KNode, reset: boolean): void {
64    if (reset) {
65      getUINativeModule().gridItem.resetGridItemColumnStart(node);
66    } else {
67      getUINativeModule().gridItem.setGridItemColumnStart(node, this.value!);
68    }
69  }
70}
71
72class GridItemColumnEndModifier extends ModifierWithKey<number> {
73  static identity: Symbol = Symbol('gridItemColumnEnd');
74  applyPeer(node: KNode, reset: boolean): void {
75    if (reset) {
76      getUINativeModule().gridItem.resetGridItemColumnEnd(node);
77    } else {
78      getUINativeModule().gridItem.setGridItemColumnEnd(node, this.value!);
79    }
80  }
81}
82
83class GridItemOptionsModifier extends ModifierWithKey<GridItemOptions> {
84  static identity: Symbol = Symbol('gridItemOptions');
85  applyPeer(node: KNode, reset: boolean): void {
86    if (reset) {
87      getUINativeModule().gridItem.setGridItemOptions(node, undefined);
88    } else {
89      if (this.value?.style === undefined) {
90        getUINativeModule().gridItem.setGridItemOptions(node, undefined);
91      } else {
92        getUINativeModule().gridItem.setGridItemOptions(node, this.value.style);
93      }
94    }
95  }
96  checkObjectDiff(): boolean {
97    return !isBaseOrResourceEqual(this.stageValue?.style, this.value?.style);
98  }
99}
100
101class ArkGridItemComponent extends ArkComponent implements GridItemAttribute {
102  constructor(nativePtr: KNode, classType?: ModifierType) {
103    super(nativePtr, classType);
104  }
105  allowChildCount(): number {
106    return 1;
107  }
108  initialize(value: Object[]): this {
109    if (value.length === 1 && isObject(value[0])) {
110      modifierWithKey(this._modifiersWithKeys, GridItemOptionsModifier.identity, GridItemOptionsModifier, value[0]);
111    }
112    return this;
113  }
114  rowStart(value: number): this {
115    modifierWithKey(this._modifiersWithKeys, GridItemRowStartModifier.identity, GridItemRowStartModifier, value);
116    return this;
117  }
118  rowEnd(value: number): this {
119    modifierWithKey(this._modifiersWithKeys, GridItemRowEndModifier.identity, GridItemRowEndModifier, value);
120    return this;
121  }
122  columnStart(value: number): this {
123    modifierWithKey(this._modifiersWithKeys, GridItemColumnStartModifier.identity, GridItemColumnStartModifier, value);
124    return this;
125  }
126  columnEnd(value: number): this {
127    modifierWithKey(this._modifiersWithKeys, GridItemColumnEndModifier.identity, GridItemColumnEndModifier, value);
128    return this;
129  }
130  forceRebuild(value: boolean): this {
131    throw new Error('Method not implemented.');
132  }
133  selectable(value: boolean): this {
134    modifierWithKey(this._modifiersWithKeys, GridItemSelectableModifier.identity, GridItemSelectableModifier, value);
135    return this;
136  }
137  selected(value: boolean): this {
138    modifierWithKey(this._modifiersWithKeys, GridItemSelectedModifier.identity, GridItemSelectedModifier, value);
139    return this;
140  }
141  onSelect(event: (isSelected: boolean) => void): this {
142    throw new Error('Method not implemented.');
143  }
144}
145
146// @ts-ignore
147globalThis.GridItem.attributeModifier = function (modifier: ArkComponent): void {
148  attributeModifierFunc.call(this, modifier, (nativePtr: KNode) => {
149    return new ArkGridItemComponent(nativePtr);
150  }, (nativePtr: KNode, classType: ModifierType, modifierJS: ModifierJS) => {
151    return new modifierJS.GridItemModifier(nativePtr, classType);
152  });
153};
154