1/* 2 * Copyright (c) 2023-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 16const KeyCode = requireNapi('multimodalInput.keyCode').KeyCode; 17export var EditableLeftIconType; 18! function(e) { 19 e[e.Back = 0] = "Back"; 20 e[e.Cancel = 1] = "Cancel" 21}(EditableLeftIconType || (EditableLeftIconType = {})); 22const PUBLIC_CANCEL = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMAAAADACAYAAABS3GwHAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAEZ0FNQQAAsY58+1GTAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAAOxAAADsQBlSsOGwAABKpJREFUeNrt3bFrlHccx/Ff4o2dgkOQ4JzR4SYJgksnbYcGOrTQsUPtpE4d/RNcFBeFlg7NUlTSTrXQQgsKGV0KHTs4ODiJSL8PdxaUGJK7pPc893m94TvleZLnnt/7fcc9z5FrDQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnDQrPTuej2u2a87VvKp5XLNT87OlGiSf1lx6Zz2/q3kkgLdZr7k5lX8/7tZ8XfOCU4OgW887U/n341bN9T6s56menLAfaj464OfdM8iF6XYv+dV7+X+pOX/ANuOatZqHAmjti5prh9jurAgGI//mIbbtIvi15u9FHvBqD07a50fYdqtmt+YDrg1a/jd8tuiD7kMA4yNuL4LlkH+WtV/KAEYz7COC4cs/69ovXQB7M+4ngmHLP8/aL1UAD+bYVwTDlX/etT8W+nAV6M82uQS6PuP+rg4NV/5vBNDa6za5HLY9xzO5CIYl/9OaT5obYf/xrE1uioggQ/6LNf/04QGd6tHJFQH5owMQAfnjAxAB+eMDEAH54wMQAfnjAxAB+eMDEAH54wMQAfnjAxAB+eMDEAH54wMQAfnjAxAB+eMDEAH54wMQAfnjAxAB+eMDEAH54wMQAfnjAxAB+eMDEAH54wMQAfnjAxAB+eMDSI6A/AKIjYD8AoiNgPwCiI2A/AKIjYD8AoiNgPwCiI2A/AKIjYD8AoiNgPwCiI2A/AKIjYD8AoiNgPwCiI2A/AKIjYD8AoiNgPwCiI2A/AKIjYD8AoiNgPwCiI2A/AKIjYD8AoiNgPwCiI1gjfyLY8UpmJnNqbjrc/yO32pOk98rQPIrwWnyCyA5AvILQATkF4AIyC8AEZBfACIgvwBEQH4BiID8J8qqU3BiPJ8O+XuMO8Eng8/2CID85BcA+ckvAPKT35tg8h+n/KP2/3/2SADojfzf1+yKYH7cBxim/N39hWX8RnsBkP9Q8r9BBAKIlV8EAoiXXwQCiJdfBAKIl18EAoiXXwQz4D5A/+Tv2KjZmuPvdfu6T+AVYJDyd3Qfo17Gb7QXAPkPzTMRCCBVfhEIIF5+EQggXn4RCCBefhEIIF5+EQggXn4RCCBefhEIIF5+EQggXn4RCCBefhEIIF5+EQggXn4RCCBefhEIIF5+EQggXn4RCCBefhEIwD+qFUFuAOQXQWwA5BdBbADkF0FsAOQXQWwA5BdBbADkF0FsAOQXQWwA5BdBbADkF0FsAOQXQWwA5BdBbADkF0FsAOQXQWwA5BdBbADkF0FsAOQXQWwA5BdBbADkF0FsAOQXQWwA5BdBdAD3a8bkj4rgTM2PAmjty5or5I+L4FzNHzV/LfKB9OGb4rfJP0iO49xvL/pB9CGAMfljIxgLoLUR+WMjGAmgtT3yx0awJ4DWdsgfG8HOog+6D1eBntR8WLNB/sFzlKtDnfw3BNDa65rfp2+I3hfBo5rL5B9UBFttcoNzP35qk8vfLxZ9sCs9OnHdG6Kvps8e3TXiVzWPp88Ut3k1OLr1vFpz6Z31/LbmntMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAO/wLvsR65mx80NAAAAABJRU5ErkJggg=="; 23const PUBLIC_OK = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMAAAADACAYAAABS3GwHAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAEZ0FNQQAAsY58+1GTAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAAOxAAADsQBlSsOGwAAA+lJREFUeNrt3bFrFgccx+GLlSDi4JDBITiJZHBwEBGRIoqKoIu6iVMd3OosCg6W0sm/wEFUDDgpCDoIDoqOKqIoHUrp4CDFoUMRB39HLotoeXMpMXff54EfFE0ivv1+kpQGrmkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIBJTHkJGIhddT/V7ajbUPey7l7dlbpPAmCs1tb9Wne2++cvPa07Vfd7nw/+g9eXVT7+m3Wn69Z8421m6w7WXa37KADGNv4TE7ztTN36uvtL/UPWeJ0Z+PgXnejzBwmAMYx/8VuhTQIgcfy9CYCxjP9D3TsBkPqZf95XAFLH3372vyAAEsf/T93Ruvd93tn/CWbo4z9c96jvBxAAseMXANHjFwDR4xcA0eMXANHjFwDR4xcA0eMXANHjFwDR4xcA0eMXANHjFwDR4xcA0eMXANHjFwDR4xcA0eMXANHjFwDR4xcA0eMXANHjFwDR4xcA0eMXANHjFwDR4xcA0eMXANHjFwDR4xcA0eP/HgG0z3f9uVl45uu2ZuGBBu3zXn9rej7mEuMfSgDtA46v1c195ff+rbtU94stGv9KWqnHpLaPsXxSt/k//iXsq9vY9HjUJca/2gNoH2e/c4K32yUC4x9bAOvqrjeTP41GBMY/qgC2151Z4vuIwPhXxEo8I2xdz/c7W3fZXo1/6F8B/q471/N9fSUw/sEH8LEb8hYRGH9iAK3HdafrpkVg/IkBtA8yflt3bBn/3SEC4x9sAK3Xda9EYPypAYjA+OMDEIHxxwcgAuOPD0AExh8fgAiMPz4AERh/fAAiMP74AERg/PEBiMD44wMQgfHHByAC448PQATGHx+ACIw/PgARGH98AMkRGL8AYiMwfgHERmD8AoiNwPgFEBuB8QsgNgLjF0BsBMYvgNgIjF8AsREYvwBiIzB+AcRGYPwCiI3A+AUQG4HxCyA2AuMXQGwExi+A2AiMXwCxERi/AGIjMH4BjDaCTXUP6j59423aJ2PeMH4BjDWCHd24n9f9+cXvHa+7U7fb+Fe/qeC/ezvU+e5bleX40A11pm6u+xapMX5fARK+Eix+u7O1brbp/1Bw4xfAoCP4Pxi/AGIjMH4BxEZg/AKIjcD4BRAbgfELIDYC4xdAbATGL4DYCIxfAIOL4EXdkbrpZX6sd3WH6p56WQUwJG/qbtX92Cz8EFwfD+sO1L31cq4uU16CibU/M3Sy7nzdlgnf51ndxbrbXj4BjCmEPXX76/Y2Cz8DNNP9+l91f3Sf8e92AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzKZwK1uX4kZ6mnAAAAAElFTkSuQmCC"; 24const PUBLIC_BACK = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMAAAADACAYAAABS3GwHAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAEZ0FNQQAAsY58+1GTAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAAOxAAADsQBlSsOGwAAA8VJREFUeNrt3LFLlHEYwPFXz0GiIZpEoikkwsFRIiK3gqCigxIC/4Kmhv6OoChouaGoqKCgCKducGh0cDAIamhwiCaHCIeelztpUszee/vl8/nAM3Vd8nufr+fddVYVAAAAAAAAAAAAAAAAAAAAAABQijFH0KhrMd2Y2ZitmNWYRzHLjkYAB9lUzMOYizv8eS/mZsymoypLxxE0svzvY07vcpu5mOmY145LAAdx+U/u4bZzwx+JPjq2cow7glaWf1vXsQkg6/JvPwoggJTLjwDSL/8nRyiAzN/5nzpGAWRd/n7MM0cpgIzLvx6z6CjL453gdpZ/IWbDcQrA8iMAy48ALD8CsPwIwPIjAMuPACw/ArD8CMDyIwDLjwAsPwKw/AjA8iMAy48ALD8CsPwIwPIjAMuPACw/ArD85A3A8pM2AMtP2gAsP2kDsPykDcDykzYAy0/aACw/aQOw/KQNwPKTNgDLT9oALD9pA7D8pA3A8pM2AMtP2gAsP2kDsPykDcDykzYAy0/aACw/aQOw/KQNwPKTNgDLT9oALD9pA7D8pA3A8pM2AMtP2gAsP2kDsPykDcDykzYAy0/aACw/aQOw/KQNwPLz3xlv6H4mYp5YfrI+AizF9BwnI/AlZi3mbsxy03feaeh+HsQcc60YgSMxMzE3YmZj3sX8LOlHoPoLnHedaEE35n5pzwF856dN9SPBpZICmHRNaNnlkgL46nrQsvmSAqhftlx1TWjR4ZICqPVcE1q0XloA96rBa7XQhl5pAWzFXKm8i8vo9WMeN3VnnQa/sO8xL2POxEy7Toxo+RdjNpu6w1F9HuBqNXi99lw1eKMM9utHzIeYV8MftbccCQAAAAAAsBdt/XLc+sPy9W+MmPqL+1iJuVA1+C4gdFr6d77FvK0GH2nb739lPR5zNuZ51eBnQhFAJQIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIE8M8jmBlGgABSRnAqZiXms+MUQNYIDnkUKMu4I/gj6zELMRv7/PsnHKEAMkcw6fgEkDmCNUcngMwRvHFsngRnfWJcL/9tRyaAgxrB+ZijO9ymH7MUs+m4yjLmCBozEXMr5nr1+9We1ZgXMXccDwAAAAAAAAAAAAAAAAAAAAAAwO5+AfVgtqHKRnawAAAAAElFTkSuQmCC"; 25export class EditableTitleBar extends ViewPU { 26 constructor(e, t, A, i = -1) { 27 super(e, A, i); 28 this.leftIconStyle = void 0; 29 this.title = void 0; 30 this.menuItems = void 0; 31 this.onSave = void 0; 32 this.onCancel = void 0; 33 this.__titleMaxWidth = new ObservedPropertySimplePU(0, this, "titleMaxWidth"); 34 this.setInitiallyProvidedValue(t) 35 } 36 setInitiallyProvidedValue(e) { 37 void 0 !== e.leftIconStyle && (this.leftIconStyle = e.leftIconStyle); 38 void 0 !== e.title && (this.title = e.title); 39 void 0 !== e.menuItems && (this.menuItems = e.menuItems); 40 void 0 !== e.onSave && (this.onSave = e.onSave); 41 void 0 !== e.onCancel && (this.onCancel = e.onCancel); 42 void 0 !== e.titleMaxWidth && (this.titleMaxWidth = e.titleMaxWidth) 43 } 44 updateStateVars(e) {} 45 purgeVariableDependenciesOnElmtId(e) { 46 this.__titleMaxWidth.purgeDependencyOnElmtId(e) 47 } 48 aboutToBeDeleted() { 49 this.__titleMaxWidth.aboutToBeDeleted(); 50 SubscriberManager.Get().delete(this.id__()); 51 this.aboutToBeDeletedInternal() 52 } 53 get titleMaxWidth() { 54 return this.__titleMaxWidth.get() 55 } 56 set titleMaxWidth(e) { 57 this.__titleMaxWidth.set(e) 58 } 59 initialRender() { 60 this.observeComponentCreation(((e, t) => { 61 ViewStackProcessor.StartGetAccessRecordingFor(e); 62 Flex.create({ 63 justifyContent: FlexAlign.SpaceBetween, 64 alignItems: ItemAlign.Stretch 65 }); 66 Flex.width("100%"); 67 Flex.height(EditableTitleBar.totalHeight); 68 Flex.backgroundColor({ 69 id: -1, 70 type: 10001, 71 params: ["sys.color.ohos_id_color_background"], 72 bundleName: "", 73 moduleName: "" 74 }); 75 Flex.onAreaChange(((e, t) => { 76 let A = Number(t.width); 77 A = A - EditableTitleBar.leftPadding - EditableTitleBar.rightPadding - EditableTitleBar.titlePadding; 78 A = A - ImageMenuItem.imageHotZoneWidth - ImageMenuItem.imageHotZoneWidth; 79 void 0 !== this.menuItems ? this.menuItems.length > EditableTitleBar.maxCountOfExtraItems ? this.titleMaxWidth = A - ImageMenuItem.imageHotZoneWidth * EditableTitleBar.maxCountOfExtraItems : this.titleMaxWidth = A - ImageMenuItem.imageHotZoneWidth * this.menuItems.length : this.titleMaxWidth = A 80 })); 81 t || Flex.pop(); 82 ViewStackProcessor.StopGetAccessRecording() 83 })); 84 this.observeComponentCreation(((e, t) => { 85 ViewStackProcessor.StartGetAccessRecordingFor(e); 86 Row.create(); 87 Row.margin({ 88 left: { 89 id: -1, 90 type: 10002, 91 params: ["sys.float.ohos_id_default_padding_start"], 92 bundleName: "", 93 moduleName: "" 94 } 95 }); 96 t || Row.pop(); 97 ViewStackProcessor.StopGetAccessRecording() 98 })); 99 this.observeComponentCreation(((e, t) => { 100 ViewStackProcessor.StartGetAccessRecordingFor(e); 101 If.create(); 102 this.leftIconStyle == EditableLeftIconType.Back ? this.ifElseBranchUpdateFunction(0, (() => { 103 this.observeComponentCreation(((e, t) => { 104 ViewStackProcessor.StartGetAccessRecordingFor(e); 105 Navigator.create(); 106 t || Navigator.pop(); 107 ViewStackProcessor.StopGetAccessRecording() 108 })); 109 this.observeComponentCreation(((e, t) => { 110 ViewStackProcessor.StartGetAccessRecordingFor(e); 111 t ? ViewPU.create(new ImageMenuItem(this, { 112 item: { 113 value: PUBLIC_BACK, 114 isEnabled: !0 115 } 116 }, void 0, e)) : this.updateStateVarsOfChildByElmtId(e, {}); 117 ViewStackProcessor.StopGetAccessRecording() 118 })); 119 Navigator.pop() 120 })) : this.ifElseBranchUpdateFunction(1, (() => { 121 this.observeComponentCreation(((e, t) => { 122 ViewStackProcessor.StartGetAccessRecordingFor(e); 123 t ? ViewPU.create(new ImageMenuItem(this, { 124 item: { 125 value: PUBLIC_CANCEL, 126 isEnabled: !0, 127 action: () => this.onCancel && this.onCancel() 128 } 129 }, void 0, e)) : this.updateStateVarsOfChildByElmtId(e, {}); 130 ViewStackProcessor.StopGetAccessRecording() 131 })) 132 })); 133 t || If.pop(); 134 ViewStackProcessor.StopGetAccessRecording() 135 })); 136 If.pop(); 137 this.observeComponentCreation(((e, t) => { 138 ViewStackProcessor.StartGetAccessRecordingFor(e); 139 Column.create(); 140 Column.justifyContent(FlexAlign.Start); 141 Column.alignItems(HorizontalAlign.Start); 142 Column.constraintSize({ 143 maxWidth: this.titleMaxWidth 144 }); 145 t || Column.pop(); 146 ViewStackProcessor.StopGetAccessRecording() 147 })); 148 this.observeComponentCreation(((e, t) => { 149 ViewStackProcessor.StartGetAccessRecordingFor(e); 150 Text.create(this.title); 151 Text.fontWeight(FontWeight.Medium); 152 Text.fontSize({ 153 id: -1, 154 type: 10002, 155 params: ["sys.float.ohos_id_text_size_headline8"], 156 bundleName: "", 157 moduleName: "" 158 }); 159 Text.fontColor({ 160 id: -1, 161 type: 10001, 162 params: ["sys.color.ohos_id_color_titlebar_text"], 163 bundleName: "", 164 moduleName: "" 165 }); 166 Text.maxLines(1); 167 Text.textOverflow({ 168 overflow: TextOverflow.Ellipsis 169 }); 170 Text.constraintSize({ 171 maxWidth: this.titleMaxWidth 172 }); 173 t || Text.pop(); 174 ViewStackProcessor.StopGetAccessRecording() 175 })); 176 Text.pop(); 177 Column.pop(); 178 Row.pop(); 179 this.observeComponentCreation(((e, t) => { 180 ViewStackProcessor.StartGetAccessRecordingFor(e); 181 t ? ViewPU.create(new EditableTitleBarMenuSection(this, { 182 menuItems: this.menuItems, 183 onSave: this.onSave 184 }, void 0, e)) : this.updateStateVarsOfChildByElmtId(e, {}); 185 ViewStackProcessor.StopGetAccessRecording() 186 })); 187 Flex.pop() 188 } 189 rerender() { 190 this.updateDirtyElements() 191 } 192} 193EditableTitleBar.maxCountOfExtraItems = 2; 194EditableTitleBar.totalHeight = 56; 195EditableTitleBar.leftPadding = 12; 196EditableTitleBar.rightPadding = 12; 197EditableTitleBar.titlePadding = 16; 198class EditableTitleBarMenuSection extends ViewPU { 199 constructor(e, t, A, i = -1) { 200 super(e, A, i); 201 this.menuItems = void 0; 202 this.onSave = void 0; 203 this.setInitiallyProvidedValue(t) 204 } 205 setInitiallyProvidedValue(e) { 206 void 0 !== e.menuItems && (this.menuItems = e.menuItems); 207 void 0 !== e.onSave && (this.onSave = e.onSave) 208 } 209 updateStateVars(e) {} 210 purgeVariableDependenciesOnElmtId(e) {} 211 aboutToBeDeleted() { 212 SubscriberManager.Get().delete(this.id__()); 213 this.aboutToBeDeletedInternal() 214 } 215 initialRender() { 216 this.observeComponentCreation(((e, t) => { 217 ViewStackProcessor.StartGetAccessRecordingFor(e); 218 Column.create(); 219 Column.margin({ 220 left: { 221 id: -1, 222 type: 10002, 223 params: ["sys.float.ohos_id_elements_margin_vertical_l"], 224 bundleName: "", 225 moduleName: "" 226 }, 227 right: { 228 id: -1, 229 type: 10002, 230 params: ["sys.float.ohos_id_default_padding_end"], 231 bundleName: "", 232 moduleName: "" 233 } 234 }); 235 Column.justifyContent(FlexAlign.Center); 236 t || Column.pop(); 237 ViewStackProcessor.StopGetAccessRecording() 238 })); 239 this.observeComponentCreation(((e, t) => { 240 ViewStackProcessor.StartGetAccessRecordingFor(e); 241 Row.create(); 242 t || Row.pop(); 243 ViewStackProcessor.StopGetAccessRecording() 244 })); 245 this.observeComponentCreation(((e, t) => { 246 ViewStackProcessor.StartGetAccessRecordingFor(e); 247 If.create(); 248 void 0 !== this.menuItems && this.menuItems.length > 0 ? this.ifElseBranchUpdateFunction(0, (() => { 249 this.observeComponentCreation(((e, t) => { 250 ViewStackProcessor.StartGetAccessRecordingFor(e); 251 ForEach.create(); 252 this.forEachUpdateFunction(e, this.menuItems.slice(0, EditableTitleBar.maxCountOfExtraItems), (e => { 253 const t = e; 254 this.observeComponentCreation(((e, A) => { 255 ViewStackProcessor.StartGetAccessRecordingFor(e); 256 A ? ViewPU.create(new ImageMenuItem(this, { 257 item: t 258 }, void 0, e)) : this.updateStateVarsOfChildByElmtId(e, {}); 259 ViewStackProcessor.StopGetAccessRecording() 260 })) 261 })); 262 t || ForEach.pop(); 263 ViewStackProcessor.StopGetAccessRecording() 264 })); 265 ForEach.pop() 266 })) : If.branchId(1); 267 t || If.pop(); 268 ViewStackProcessor.StopGetAccessRecording() 269 })); 270 If.pop(); 271 this.observeComponentCreation(((e, t) => { 272 ViewStackProcessor.StartGetAccessRecordingFor(e); 273 t ? ViewPU.create(new ImageMenuItem(this, { 274 item: { 275 value: PUBLIC_OK, 276 isEnabled: !0, 277 action: () => this.onSave && this.onSave() 278 } 279 }, void 0, e)) : this.updateStateVarsOfChildByElmtId(e, {}); 280 ViewStackProcessor.StopGetAccessRecording() 281 })); 282 Row.pop(); 283 Column.pop() 284 } 285 rerender() { 286 this.updateDirtyElements() 287 } 288} 289class ImageMenuItem extends ViewPU { 290 constructor(e, t, A, i = -1) { 291 super(e, A, i); 292 this.item = void 0; 293 this.__isOnFocus = new ObservedPropertySimplePU(!1, this, "isOnFocus"); 294 this.__isOnHover = new ObservedPropertySimplePU(!1, this, "isOnHover"); 295 this.__isOnClick = new ObservedPropertySimplePU(!1, this, "isOnClick"); 296 this.setInitiallyProvidedValue(t) 297 } 298 setInitiallyProvidedValue(e) { 299 void 0 !== e.item && (this.item = e.item); 300 void 0 !== e.isOnFocus && (this.isOnFocus = e.isOnFocus); 301 void 0 !== e.isOnHover && (this.isOnHover = e.isOnHover); 302 void 0 !== e.isOnClick && (this.isOnClick = e.isOnClick) 303 } 304 updateStateVars(e) {} 305 purgeVariableDependenciesOnElmtId(e) { 306 this.__isOnFocus.purgeDependencyOnElmtId(e); 307 this.__isOnHover.purgeDependencyOnElmtId(e); 308 this.__isOnClick.purgeDependencyOnElmtId(e) 309 } 310 aboutToBeDeleted() { 311 this.__isOnFocus.aboutToBeDeleted(); 312 this.__isOnHover.aboutToBeDeleted(); 313 this.__isOnClick.aboutToBeDeleted(); 314 SubscriberManager.Get().delete(this.id__()); 315 this.aboutToBeDeletedInternal() 316 } 317 get isOnFocus() { 318 return this.__isOnFocus.get() 319 } 320 set isOnFocus(e) { 321 this.__isOnFocus.set(e) 322 } 323 get isOnHover() { 324 return this.__isOnHover.get() 325 } 326 set isOnHover(e) { 327 this.__isOnHover.set(e) 328 } 329 get isOnClick() { 330 return this.__isOnClick.get() 331 } 332 set isOnClick(e) { 333 this.__isOnClick.set(e) 334 } 335 getFgColor() { 336 return this.isOnClick ? { 337 id: -1, 338 type: 10001, 339 params: ["sys.color.ohos_id_color_titlebar_icon_pressed"], 340 bundleName: "", 341 moduleName: "" 342 } : { 343 id: -1, 344 type: 10001, 345 params: ["sys.color.ohos_id_color_titlebar_icon"], 346 bundleName: "", 347 moduleName: "" 348 } 349 } 350 getBgColor() { 351 return this.isOnClick ? { 352 id: -1, 353 type: 10001, 354 params: ["sys.color.ohos_id_color_click_effect"], 355 bundleName: "", 356 moduleName: "" 357 } : this.isOnHover ? { 358 id: -1, 359 type: 10001, 360 params: ["sys.color.ohos_id_color_hover"], 361 bundleName: "", 362 moduleName: "" 363 } : Color.Transparent 364 } 365 initialRender() { 366 this.observeComponentCreation(((e, t) => { 367 ViewStackProcessor.StartGetAccessRecordingFor(e); 368 Row.create(); 369 Row.width(ImageMenuItem.imageHotZoneWidth); 370 Row.height(ImageMenuItem.imageHotZoneWidth); 371 Row.borderRadius(ImageMenuItem.buttonBorderRadius); 372 Row.foregroundColor(this.getFgColor()); 373 Row.backgroundColor(this.getBgColor()); 374 Row.justifyContent(FlexAlign.Center); 375 Row.opacity(this.item.isEnabled ? 1 : ImageMenuItem.disabledImageOpacity); 376 Row.border(this.isOnFocus ? { 377 width: ImageMenuItem.focusBorderWidth, 378 color: { 379 id: -1, 380 type: 10001, 381 params: ["sys.color.ohos_id_color_emphasize"], 382 bundleName: "", 383 moduleName: "" 384 }, 385 style: BorderStyle.Solid 386 } : { 387 width: 0 388 }); 389 Row.onFocus((() => { 390 this.item.isEnabled && (this.isOnFocus = !0) 391 })); 392 Row.onBlur((() => this.isOnFocus = !1)); 393 Row.onHover((e => { 394 this.item.isEnabled && (this.isOnHover = e) 395 })); 396 Row.onKeyEvent((e => { 397 if (this.item.isEnabled && (e.keyCode === KeyCode.KEYCODE_ENTER || e.keyCode === KeyCode.KEYCODE_SPACE)) { 398 e.type === KeyType.Down && (this.isOnClick = !0); 399 e.type === KeyType.Up && (this.isOnClick = !1) 400 } 401 })); 402 Row.onTouch((e => { 403 if (this.item.isEnabled) { 404 e.type === TouchType.Down && (this.isOnClick = !0); 405 e.type === TouchType.Up && (this.isOnClick = !1) 406 } 407 })); 408 Row.onClick((() => this.item.isEnabled && this.item.action && this.item.action())); 409 t || Row.pop(); 410 ViewStackProcessor.StopGetAccessRecording() 411 })); 412 this.observeComponentCreation(((e, t) => { 413 ViewStackProcessor.StartGetAccessRecordingFor(e); 414 Image.create(this.item.value); 415 Image.width(ImageMenuItem.imageSize); 416 Image.height(ImageMenuItem.imageSize); 417 Image.focusable(this.item.isEnabled); 418 t || Image.pop(); 419 ViewStackProcessor.StopGetAccessRecording() 420 })); 421 Row.pop() 422 } 423 rerender() { 424 this.updateDirtyElements() 425 } 426} 427ImageMenuItem.imageSize = 24; 428ImageMenuItem.imageHotZoneWidth = 48; 429ImageMenuItem.buttonBorderRadius = 8; 430ImageMenuItem.focusBorderWidth = 2; 431ImageMenuItem.disabledImageOpacity = .4; 432export default { 433 EditableLeftIconType: EditableLeftIconType, 434 EditableTitleBar: EditableTitleBar 435};