• 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 ArkGridItemComponent extends ArkComponent implements GridItemAttribute {
84  constructor(nativePtr: KNode) {
85    super(nativePtr);
86  }
87  rowStart(value: number): this {
88    modifierWithKey(this._modifiersWithKeys, GridItemRowStartModifier.identity, GridItemRowStartModifier, value);
89    return this;
90  }
91  rowEnd(value: number): this {
92    modifierWithKey(this._modifiersWithKeys, GridItemRowEndModifier.identity, GridItemRowEndModifier, value);
93    return this;
94  }
95  columnStart(value: number): this {
96    modifierWithKey(this._modifiersWithKeys, GridItemColumnStartModifier.identity, GridItemColumnStartModifier, value);
97    return this;
98  }
99  columnEnd(value: number): this {
100    modifierWithKey(this._modifiersWithKeys, GridItemColumnEndModifier.identity, GridItemColumnEndModifier, value);
101    return this;
102  }
103  forceRebuild(value: boolean): this {
104    throw new Error('Method not implemented.');
105  }
106  selectable(value: boolean): this {
107    modifierWithKey(this._modifiersWithKeys, GridItemSelectableModifier.identity, GridItemSelectableModifier, value);
108    return this;
109  }
110  selected(value: boolean): this {
111    modifierWithKey(this._modifiersWithKeys, GridItemSelectedModifier.identity, GridItemSelectedModifier, value);
112    return this;
113  }
114  onSelect(event: (isSelected: boolean) => void): this {
115    throw new Error('Method not implemented.');
116  }
117}
118
119// @ts-ignore
120globalThis.GridItem.attributeModifier = function (modifier) {
121  const elmtId = ViewStackProcessor.GetElmtIdToAccountFor();
122  let nativeNode = getUINativeModule().getFrameNodeById(elmtId);
123  let component = this.createOrGetNode(elmtId, () => {
124    return new ArkGridItemComponent(nativeNode);
125  });
126  applyUIAttributes(modifier, nativeNode, component);
127  component.applyModifierPatch();
128};
129