diff --git a/src/components/tabs/WikiListTab.vue b/src/components/tabs/WikiListTab.vue index 55619e8..b03ac6f 100644 --- a/src/components/tabs/WikiListTab.vue +++ b/src/components/tabs/WikiListTab.vue @@ -24,12 +24,51 @@ + +
- + @@ -161,6 +200,12 @@ export default defineComponent({ methods: { isTractionUnit, + onItemSelect(vehicle: IVehicle) { + if (this.store.chosenVehicle?.type === vehicle.type) this.addVehicle(vehicle); + + this.previewVehicle(vehicle); + }, + mountObserver() { if (this.observer) return; @@ -168,23 +213,20 @@ export default defineComponent({ entries.forEach((entry) => { if (entry.intersectionRatio > 0) { entry.target - .querySelector('td:first-child > img')! - .setAttribute( - 'src', - entry.target.querySelector('td:first-child > img')!.getAttribute('data-src')! - ); + .querySelector('img')! + .setAttribute('src', entry.target.querySelector('img')!.getAttribute('data-src')!); } }); }); - (this.$refs['itemRefs'] as HTMLElement[]).forEach((el) => this.observer?.observe(el)); + (this.$refs['itemRefs'] as HTMLElement[])?.forEach((el) => this.observer?.observe(el)); }, toggleFilter(name: typeof this.currentFilterMode) { this.currentFilterMode = this.currentFilterMode == name ? 'all' : name; - const tableWrapperRef = this.$refs['table-wrapper'] as HTMLElement; + const vehiclesRef = this.$refs['vehicles'] as HTMLElement; - tableWrapperRef.scrollTo({ + vehiclesRef.scrollTo({ top: this.scrollTop, }); }, @@ -242,6 +284,13 @@ export default defineComponent({ computed: { computedTableData(): IWikiRow[] { return this.store.vehicleDataList + .filter( + (vehicle) => + new RegExp(`${this.searchedVehicleTypeName.trim()}`, 'i').test(vehicle.type) && + (this.currentFilterMode == 'all' || + (this.currentFilterMode == 'tractions' && isTractionUnit(vehicle)) || + (this.currentFilterMode == 'carriages' && !isTractionUnit(vehicle))) + ) .map((vehicle) => ({ vehicle, showImage: false, @@ -289,15 +338,43 @@ export default defineComponent({ } .actions-panel_search { + display: flex; + gap: 0.5em; + input { width: auto; } } -.tab_content { +.vehicles { display: grid; - grid-template-rows: 30px 770px; + grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 0.5em; + overflow: auto; + + max-height: 750px; + + margin-top: 0.75em; + padding: 0.25em; +} + +.vehicles > li { + display: flex; + gap: 0.5em; + + background-color: #161c2e; + padding: 0.5em; + + min-height: 75px; + cursor: pointer; +} + +.vehicles > li[data-preview='true'] { + background-color: #364165; +} + +.vehicles > li > img[data-team-only='true'] { + border: 3px solid green; } .table-wrapper { diff --git a/src/styles/global.scss b/src/styles/global.scss index 46b806f..0162a93 100644 --- a/src/styles/global.scss +++ b/src/styles/global.scss @@ -214,8 +214,6 @@ input[type='number'] { color: white; font-size: 1em; - width: 18em; - &:focus-visible { border-color: $accentColor; }