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