Highlighting filter trigger when filter is applied. Using binary number as query boolean.
This commit is contained in:
		
							parent
							
								
									6742bf7d48
								
							
						
					
					
						commit
						d94e0ac8fc
					
				|  | @ -62,7 +62,10 @@ | |||
| 			<ul class="nolist"> | ||||
| 				<li> | ||||
| 					<Tooltip class="filter boobs"> | ||||
| 						<span class="filter-trigger"><Icon icon="boobs" />Boobs</span> | ||||
| 						<span | ||||
| 							class="filter-trigger" | ||||
| 							:class="{ enabled: boobSizeRequired || naturalBoobs !== 1 }" | ||||
| 						><Icon icon="boobs" />Boobs</span> | ||||
| 
 | ||||
| 						<template v-slot:tooltip> | ||||
| 							<div class="filter-section boobsize"> | ||||
|  | @ -117,7 +120,7 @@ | |||
| 									><Icon icon="leaf" /></span> | ||||
| 
 | ||||
| 									<input | ||||
| 										v-model="naturalBoobs" | ||||
| 										v-model.number="naturalBoobs" | ||||
| 										class="toggle" | ||||
| 										type="range" | ||||
| 										min="0" | ||||
|  | @ -137,7 +140,10 @@ | |||
| 
 | ||||
| 				<li> | ||||
| 					<Tooltip class="filter boobs"> | ||||
| 						<span class="filter-trigger"><Icon icon="rulers" />Physique</span> | ||||
| 						<span | ||||
| 							class="filter-trigger" | ||||
| 							:class="{ enabled: heightRequired || weightRequired }" | ||||
| 						><Icon icon="rulers" />Physique</span> | ||||
| 
 | ||||
| 						<template v-slot:tooltip> | ||||
| 							<div class="filter-section"> | ||||
|  | @ -237,7 +243,7 @@ import Checkbox from '../form/checkbox.vue'; | |||
| import Range from '../form/range.vue'; | ||||
| import Pagination from '../pagination/pagination.vue'; | ||||
| 
 | ||||
| const toggleValues = [true, undefined, false]; | ||||
| const toggleValues = [true, null, false]; | ||||
| const boobSizes = 'ABCDEFGHZ'.split(''); | ||||
| 
 | ||||
| function updateFilters() { | ||||
|  | @ -245,7 +251,7 @@ function updateFilters() { | |||
| 		name: 'actors', | ||||
| 		params: this.$route.params, | ||||
| 		query: { | ||||
| 			naturalBoobs: toggleValues[this.naturalBoobs], | ||||
| 			nb: this.naturalBoobs !== 1 ? this.naturalBoobs : undefined, | ||||
| 			bs: this.boobSizeRequired ? this.boobSize.join(',') : undefined, | ||||
| 			h: this.heightRequired ? this.height.join(',') : undefined, | ||||
| 			w: this.weightRequired ? this.weight.join(',') : undefined, | ||||
|  | @ -314,8 +320,6 @@ export default { | |||
| 		Pagination, | ||||
| 	}, | ||||
| 	data() { | ||||
| 		const naturalBoobs = ['true', undefined, 'false'].indexOf(this.$route.query.nb); | ||||
| 
 | ||||
| 		return { | ||||
| 			actors: [], | ||||
| 			pageTitle: null, | ||||
|  | @ -325,7 +329,7 @@ export default { | |||
| 			boobSizes, | ||||
| 			boobSize: this.$route.query.bs?.split(',') || ['A', 'Z'], | ||||
| 			boobSizeRequired: !!this.$route.query.bs, | ||||
| 			naturalBoobs: naturalBoobs > -1 ? naturalBoobs : 1, | ||||
| 			naturalBoobs: Number(this.$route.query.nb) || 1, | ||||
| 			height: this.$route.query.h?.split(',').map(Number) || [50, 220], | ||||
| 			heightRequired: !!this.$route.query.h, | ||||
| 			weight: this.$route.query.w?.split(',').map(Number) || [30, 200], | ||||
|  | @ -481,6 +485,14 @@ export default { | |||
| 			fill: var(--shadow-strong); | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	&.enabled { | ||||
| 		color: var(--primary); | ||||
| 
 | ||||
| 		.icon { | ||||
| 			fill: var(--primary); | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| .filter-section { | ||||
|  |  | |||
|  | @ -15,7 +15,7 @@ | |||
| 			@click="setNearest" | ||||
| 		> | ||||
| 			<input | ||||
| 				v-model="valueA" | ||||
| 				v-model.number="valueA" | ||||
| 				:min="min" | ||||
| 				:max="max" | ||||
| 				:data-value="valueA" | ||||
|  | @ -28,7 +28,7 @@ | |||
| 			> | ||||
| 
 | ||||
| 			<input | ||||
| 				v-model="valueB" | ||||
| 				v-model.number="valueB" | ||||
| 				:min="min" | ||||
| 				:max="max" | ||||
| 				:data-value="valueB" | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue