diff --git a/www/src/ts/virtual_machine/device.ts b/www/src/ts/virtual_machine/device.ts index d70349c..165e67c 100644 --- a/www/src/ts/virtual_machine/device.ts +++ b/www/src/ts/virtual_machine/device.ts @@ -89,6 +89,13 @@ export class VMDeviceCard extends VMDeviceMixin(BaseElement) { --indicator-color: var(--sl-color-purple-600); --sl-color-primary-600: var(--sl-color-purple-600); } + sl-tab::part(base) { + padding: var(--sl-spacing-small) var(--sl-spacing-medium) + } + sl-tab-group::part(base) { + height: 16rem; + overflow-y: auto; + } `, ]; @@ -438,7 +445,7 @@ export class VMAddDeviceButton extends BaseElement { ...defaultCss, css` .add-device-drawer { - --size: 28rem; + --size: 32rem; } .search-results { @@ -560,9 +567,10 @@ export class VMAddDeviceButton extends BaseElement { class="device-search-input" autofocus placeholder="Search For Device" + clearable @sl-input=${this._handleSearchInput} > - Search Strutures + Search Structures "
${this.renderSearchResults()}
@@ -606,6 +614,9 @@ export class VmDeviceTemplate extends BaseElement { static styles = [ ...defaultCss, css` + .template-card { + --padding: var(--sl-spacing-small) + } .image { width: 3rem; height: 3rem; @@ -613,7 +624,17 @@ export class VmDeviceTemplate extends BaseElement { .header { display: flex; flex-direction: row; - flex-wrap: wrap; + } + .card-body { + // height: 18rem; + overflow-y: auto; + } + sl-tab::part(base) { + padding: var(--sl-spacing-small) var(--sl-spacing-medium) + } + sl-tab-group::part(base) { + height: 14rem; + overflow-y: auto; } `, ]; @@ -650,11 +671,50 @@ export class VmDeviceTemplate extends BaseElement { console.log("Image load error", e); } + renderFields(): HTMLTemplateResult { + const device = this.deviceDB.db[this.name]; + const fields = device.logic ? Object.entries(device.logic) : []; + return html` + ${fields.map(([name, field_type], _index, _fields) => { + return html` + ${name} + ${field_type} + `; + })} + `; + } + + renderSlot(slot: Slot, slotIndex: number): HTMLTemplateResult { + const fields = Array.from(slot.fields); + return html` `; + } + + renderSlots(): HTMLTemplateResult { + return html`
`; + } + + renderReagents(): HTMLTemplateResult { + return html``; + } + + renderNetworks(): HTMLTemplateResult { + const vmNetworks = window.VM!.networks; + return html`
`; + } + + renderPins(): HTMLTemplateResult { + const device = this.deviceDB.db[this.name]; + return html`
`; + } + render() { const device = this.deviceDB.db[this.name]; return html` - -
+ +
- ${device.name} ${device.hash} +
+ ${device.name} + ${device.hash} +
+ Add +
+
+ + + Fields + Slots + Reagents + Networks + Pins + + ${this.renderFields()} + ${this.renderSlots()} + ${this.renderReagents()} + ${this.renderNetworks()} + ${this.renderPins()} + +
`;