Files
storyteller-bevy/studio-ui/src/lib/forms/form-field-base.element.ts
T
Danny McGee c9904a5293 Inspector frontend UI (#68)
This PR begins fleshing out the front-end UI for inspecting the selected
entity's components.

### Implemented
* Support for the `Name` component
* Placeholder/WIP support for the `Transform` component

### To-do
* Support for sending changes made in the inspector back to Bevy
* A slider/field combo widget for numeric values (can be adapted from
  [this StackBlitz](https://stackblitz.com/edit/angular-wfikuy?file=src%2Ffloat-input%2Ffloat-input.component.ts))
* Quat -> Euler angles conversion ([example math here](https://github.com/dannymcgee/3DGameMath/blob/5cb7a8ff9310565329e57751cd8b9c33e9bd4cb7/libs/Math/include/math/quat.inl.hpp#L56-L78),
  or use a 3rd-party math library)

### Known issues
* Selecting entities from the hierarchy doesn't always update the
  components list. I suspect this is the same issue as #39
2024-03-04 15:13:03 -05:00

38 lines
990 B
TypeScript

import { LitElement } from "lit";
import { property } from "lit/decorators.js";
export abstract class FormFieldBaseElement extends LitElement {
static formAssociated = true;
@property({ type: Boolean }) disabled = false;
@property({ type: Boolean }) readonly = false;
@property({ type: Number }) override tabIndex = 0;
get form() { return this.internals.form; }
get name() { return this.getAttribute("name"); }
get type() { return this.localName; }
get validity() { return this.internals.validity; }
get validationMessage() { return this.internals.validationMessage; }
get willValidate() { return this.internals.willValidate; }
protected internals: ElementInternals;
constructor () {
super();
this.internals = this.attachInternals();
}
checkValidity(): boolean {
return this.internals.checkValidity();
}
reportValidity(): boolean {
return this.internals.reportValidity();
}
formDisabledCallback(disabled: boolean): void {
this.disabled = disabled;
}
}