1*6dbdd20aSAndroid Build Coastguard Worker// Copyright (C) 2023 The Android Open Source Project 2*6dbdd20aSAndroid Build Coastguard Worker// 3*6dbdd20aSAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License"); 4*6dbdd20aSAndroid Build Coastguard Worker// you may not use this file except in compliance with the License. 5*6dbdd20aSAndroid Build Coastguard Worker// You may obtain a copy of the License at 6*6dbdd20aSAndroid Build Coastguard Worker// 7*6dbdd20aSAndroid Build Coastguard Worker// http://www.apache.org/licenses/LICENSE-2.0 8*6dbdd20aSAndroid Build Coastguard Worker// 9*6dbdd20aSAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software 10*6dbdd20aSAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS, 11*6dbdd20aSAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*6dbdd20aSAndroid Build Coastguard Worker// See the License for the specific language governing permissions and 13*6dbdd20aSAndroid Build Coastguard Worker// limitations under the License. 14*6dbdd20aSAndroid Build Coastguard Worker 15*6dbdd20aSAndroid Build Coastguard Workerimport {assertUnreachable} from '../base/logging'; 16*6dbdd20aSAndroid Build Coastguard Worker 17*6dbdd20aSAndroid Build Coastguard Worker// This file contains interfaces for attributes for various HTML elements. 18*6dbdd20aSAndroid Build Coastguard Worker// They are typically used by widgets which pass attributes down to their 19*6dbdd20aSAndroid Build Coastguard Worker// internal child, to provide a type-safe interface to users of those widgets. 20*6dbdd20aSAndroid Build Coastguard Worker// Note: This is a non-exhaustive list, and is added to when required. 21*6dbdd20aSAndroid Build Coastguard Worker// Feel free to add any missing attributes as they arise. 22*6dbdd20aSAndroid Build Coastguard Workerexport type Style = string | Partial<CSSStyleDeclaration>; 23*6dbdd20aSAndroid Build Coastguard Worker 24*6dbdd20aSAndroid Build Coastguard Workerexport interface HTMLAttrs { 25*6dbdd20aSAndroid Build Coastguard Worker readonly ref?: string; // This is a common attribute used in Perfetto. 26*6dbdd20aSAndroid Build Coastguard Worker readonly style?: Style; 27*6dbdd20aSAndroid Build Coastguard Worker readonly id?: string; 28*6dbdd20aSAndroid Build Coastguard Worker readonly title?: string; 29*6dbdd20aSAndroid Build Coastguard Worker readonly className?: string; 30*6dbdd20aSAndroid Build Coastguard Worker readonly onclick?: (e: PointerEvent) => void; 31*6dbdd20aSAndroid Build Coastguard Worker readonly onmouseover?: (e: MouseEvent) => void; 32*6dbdd20aSAndroid Build Coastguard Worker readonly onmouseout?: (e: MouseEvent) => void; 33*6dbdd20aSAndroid Build Coastguard Worker readonly onmousedown?: (e: MouseEvent) => void; 34*6dbdd20aSAndroid Build Coastguard Worker readonly onmouseup?: (e: MouseEvent) => void; 35*6dbdd20aSAndroid Build Coastguard Worker readonly onmousemove?: (e: MouseEvent) => void; 36*6dbdd20aSAndroid Build Coastguard Worker readonly onload?: (e: Event) => void; 37*6dbdd20aSAndroid Build Coastguard Worker} 38*6dbdd20aSAndroid Build Coastguard Worker 39*6dbdd20aSAndroid Build Coastguard Workerexport interface HTMLFocusableAttrs extends HTMLAttrs { 40*6dbdd20aSAndroid Build Coastguard Worker readonly onblur?: (e: FocusEvent) => void; 41*6dbdd20aSAndroid Build Coastguard Worker readonly onfocus?: (e: FocusEvent) => void; 42*6dbdd20aSAndroid Build Coastguard Worker} 43*6dbdd20aSAndroid Build Coastguard Worker 44*6dbdd20aSAndroid Build Coastguard Workerexport interface HTMLInputAttrs extends HTMLFocusableAttrs { 45*6dbdd20aSAndroid Build Coastguard Worker readonly disabled?: boolean; 46*6dbdd20aSAndroid Build Coastguard Worker readonly type?: string; 47*6dbdd20aSAndroid Build Coastguard Worker readonly onchange?: (e: Event) => void; 48*6dbdd20aSAndroid Build Coastguard Worker readonly oninput?: (e: KeyboardEvent) => void; 49*6dbdd20aSAndroid Build Coastguard Worker readonly onkeydown?: (e: KeyboardEvent) => void; 50*6dbdd20aSAndroid Build Coastguard Worker readonly onkeyup?: (e: KeyboardEvent) => void; 51*6dbdd20aSAndroid Build Coastguard Worker readonly value?: string; 52*6dbdd20aSAndroid Build Coastguard Worker readonly placeholder?: string; 53*6dbdd20aSAndroid Build Coastguard Worker} 54*6dbdd20aSAndroid Build Coastguard Worker 55*6dbdd20aSAndroid Build Coastguard Workerexport interface HTMLCheckboxAttrs extends HTMLInputAttrs { 56*6dbdd20aSAndroid Build Coastguard Worker readonly checked?: boolean; 57*6dbdd20aSAndroid Build Coastguard Worker} 58*6dbdd20aSAndroid Build Coastguard Worker 59*6dbdd20aSAndroid Build Coastguard Workerexport interface HTMLButtonAttrs extends HTMLInputAttrs {} 60*6dbdd20aSAndroid Build Coastguard Worker 61*6dbdd20aSAndroid Build Coastguard Workerexport interface HTMLAnchorAttrs extends HTMLAttrs { 62*6dbdd20aSAndroid Build Coastguard Worker readonly href?: string; 63*6dbdd20aSAndroid Build Coastguard Worker readonly target?: string; 64*6dbdd20aSAndroid Build Coastguard Worker} 65*6dbdd20aSAndroid Build Coastguard Worker 66*6dbdd20aSAndroid Build Coastguard Workerexport interface HTMLLabelAttrs extends HTMLAttrs { 67*6dbdd20aSAndroid Build Coastguard Worker readonly for?: string; 68*6dbdd20aSAndroid Build Coastguard Worker} 69*6dbdd20aSAndroid Build Coastguard Worker 70*6dbdd20aSAndroid Build Coastguard Workerexport enum Intent { 71*6dbdd20aSAndroid Build Coastguard Worker None = 'none', 72*6dbdd20aSAndroid Build Coastguard Worker Primary = 'primary', 73*6dbdd20aSAndroid Build Coastguard Worker} 74*6dbdd20aSAndroid Build Coastguard Worker 75*6dbdd20aSAndroid Build Coastguard Workerexport function classForIntent(intent: Intent): string | undefined { 76*6dbdd20aSAndroid Build Coastguard Worker switch (intent) { 77*6dbdd20aSAndroid Build Coastguard Worker case Intent.None: 78*6dbdd20aSAndroid Build Coastguard Worker return undefined; 79*6dbdd20aSAndroid Build Coastguard Worker case Intent.Primary: 80*6dbdd20aSAndroid Build Coastguard Worker return 'pf-intent-primary'; 81*6dbdd20aSAndroid Build Coastguard Worker default: 82*6dbdd20aSAndroid Build Coastguard Worker return assertUnreachable(intent); 83*6dbdd20aSAndroid Build Coastguard Worker } 84*6dbdd20aSAndroid Build Coastguard Worker} 85