|
@ -6,7 +6,10 @@ |
|
|
<p class="mb-4 font-bold">Show only activities that are…</p> |
|
|
<p class="mb-4 font-bold">Show only activities that are…</p> |
|
|
|
|
|
|
|
|
<div class="grid grid-cols-1 gap-2"> |
|
|
<div class="grid grid-cols-1 gap-2"> |
|
|
<div class="flex items-center justify-between cursor-pointer"> |
|
|
<div |
|
|
|
|
|
class="flex items-center justify-between cursor-pointer" |
|
|
|
|
|
@click="toggleContacts()" |
|
|
|
|
|
> |
|
|
<!-- label --> |
|
|
<!-- label --> |
|
|
<div>From my contacts</div> |
|
|
<div>From my contacts</div> |
|
|
<!-- toggle --> |
|
|
<!-- toggle --> |
|
@ -14,7 +17,7 @@ |
|
|
<!-- input --> |
|
|
<!-- input --> |
|
|
<input |
|
|
<input |
|
|
type="checkbox" |
|
|
type="checkbox" |
|
|
v-model="isFromMyContacts" |
|
|
v-model="isInMyContacts" |
|
|
name="toggleFilterFromMyContacts" |
|
|
name="toggleFilterFromMyContacts" |
|
|
class="sr-only" |
|
|
class="sr-only" |
|
|
/> |
|
|
/> |
|
@ -27,11 +30,18 @@ |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="flex items-center justify-between cursor-pointer"> |
|
|
<div |
|
|
|
|
|
class="flex items-center justify-between cursor-pointer" |
|
|
|
|
|
@click=" |
|
|
|
|
|
hasSearchBox |
|
|
|
|
|
? toggleNearby() |
|
|
|
|
|
: $router.push({ name: 'search-area' }) |
|
|
|
|
|
" |
|
|
|
|
|
> |
|
|
<!-- label --> |
|
|
<!-- label --> |
|
|
<div>Nearby</div> |
|
|
<div>Nearby</div> |
|
|
<!-- toggle --> |
|
|
<!-- toggle --> |
|
|
<div class="relative ml-2"> |
|
|
<div v-if="hasSearchBox" class="relative ml-2"> |
|
|
<!-- input --> |
|
|
<!-- input --> |
|
|
<input |
|
|
<input |
|
|
type="checkbox" |
|
|
type="checkbox" |
|
@ -46,26 +56,32 @@ |
|
|
class="dot absolute left-1 top-1 bg-slate-400 w-6 h-6 rounded-full transition" |
|
|
class="dot absolute left-1 top-1 bg-slate-400 w-6 h-6 rounded-full transition" |
|
|
></div> |
|
|
></div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div v-else class="relative ml-2"> |
|
|
|
|
|
<button class="ml-2 px-4 py-2 rounded-md bg-blue-200 text-blue-500"> |
|
|
|
|
|
Select Location |
|
|
|
|
|
</button> |
|
|
|
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
<div class="grid grid-cols-1 sm:grid-cols-3 gap-2 mt-4"> |
|
|
<button |
|
|
<button |
|
|
class="block w-full text-center text-lg font-bold uppercase bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-2 py-3 rounded-md mt-4" |
|
|
class="block w-full text-center text-md uppercase bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1.5 py-2 rounded-md" |
|
|
@click="confirm" |
|
|
@click="setAll()" |
|
|
> |
|
|
> |
|
|
Apply |
|
|
Set All |
|
|
</button> |
|
|
</button> |
|
|
<div class="grid grid-cols-1 sm:grid-cols-2 gap-2 mt-2"> |
|
|
|
|
|
<button |
|
|
<button |
|
|
class="block w-full text-center text-md uppercase bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1.5 py-2 rounded-md" |
|
|
class="block w-full text-center text-md uppercase bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1.5 py-2 rounded-md" |
|
|
|
|
|
@click="clearAll()" |
|
|
> |
|
|
> |
|
|
Clear All |
|
|
Clear All |
|
|
</button> |
|
|
</button> |
|
|
<button |
|
|
<button |
|
|
class="block w-full text-center text-md uppercase bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1.5 py-2 rounded-md" |
|
|
class="block w-full text-center text-md uppercase bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1.5 py-2 rounded-md" |
|
|
@click="cancel" |
|
|
@click="done()" |
|
|
> |
|
|
> |
|
|
Cancel |
|
|
Done |
|
|
</button> |
|
|
</button> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
@ -81,6 +97,9 @@ import { |
|
|
LTileLayer, |
|
|
LTileLayer, |
|
|
} from "@vue-leaflet/vue-leaflet"; |
|
|
} from "@vue-leaflet/vue-leaflet"; |
|
|
|
|
|
|
|
|
|
|
|
import { MASTER_SETTINGS_KEY } from "@/db/tables/settings"; |
|
|
|
|
|
import { db } from "@/db/index"; |
|
|
|
|
|
|
|
|
@Component({ |
|
|
@Component({ |
|
|
components: { |
|
|
components: { |
|
|
LRectangle, |
|
|
LRectangle, |
|
@ -90,20 +109,80 @@ import { |
|
|
}, |
|
|
}, |
|
|
}) |
|
|
}) |
|
|
export default class FeedFilters extends Vue { |
|
|
export default class FeedFilters extends Vue { |
|
|
visible = false; |
|
|
callOnCloseIfChanged = () => {}; |
|
|
isFromMyContacts = false; |
|
|
hasSearchBox = false; |
|
|
|
|
|
isInMyContacts = false; |
|
|
isNearby = false; |
|
|
isNearby = false; |
|
|
|
|
|
settingChanged = false; |
|
|
|
|
|
visible = false; |
|
|
|
|
|
|
|
|
|
|
|
async open(callOnCloseIfChanged: () => void) { |
|
|
|
|
|
this.callOnCloseIfChanged = callOnCloseIfChanged; |
|
|
|
|
|
|
|
|
async open() { |
|
|
await db.open(); |
|
|
|
|
|
const settings = await db.settings.get(MASTER_SETTINGS_KEY); |
|
|
|
|
|
this.isInMyContacts = !!settings?.filterFeedContacts; |
|
|
|
|
|
this.isNearby = !!settings?.filterFeedNearby; |
|
|
|
|
|
if (settings?.searchBoxes && settings.searchBoxes.length > 0) { |
|
|
|
|
|
this.hasSearchBox = true; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
this.settingChanged = false; |
|
|
this.visible = true; |
|
|
this.visible = true; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
toggleContacts() { |
|
|
|
|
|
this.settingChanged = true; |
|
|
|
|
|
this.isInMyContacts = !this.isInMyContacts; |
|
|
|
|
|
db.settings.update(MASTER_SETTINGS_KEY, { |
|
|
|
|
|
filterFeedContacts: this.isInMyContacts, |
|
|
|
|
|
}); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
toggleNearby() { |
|
|
|
|
|
this.settingChanged = true; |
|
|
|
|
|
this.isNearby = !this.isNearby; |
|
|
|
|
|
db.settings.update(MASTER_SETTINGS_KEY, { |
|
|
|
|
|
filterFeedNearby: this.isNearby, |
|
|
|
|
|
}); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
async clearAll() { |
|
|
|
|
|
if (this.isInMyContacts || this.isNearby) { |
|
|
|
|
|
this.settingChanged = true; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
db.settings.update(MASTER_SETTINGS_KEY, { |
|
|
|
|
|
filterFeedNearby: false, |
|
|
|
|
|
filterFeedContacts: false, |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
this.isInMyContacts = false; |
|
|
|
|
|
this.isNearby = false; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
async setAll() { |
|
|
|
|
|
if (!this.isInMyContacts || !this.isNearby) { |
|
|
|
|
|
this.settingChanged = true; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
db.settings.update(MASTER_SETTINGS_KEY, { |
|
|
|
|
|
filterFeedNearby: true, |
|
|
|
|
|
filterFeedContacts: true, |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
this.isInMyContacts = true; |
|
|
|
|
|
this.isNearby = true; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
close() { |
|
|
close() { |
|
|
// close the dialog but don't change values (just in case some actions are added later) |
|
|
if (this.settingChanged) { |
|
|
|
|
|
this.callOnCloseIfChanged(); |
|
|
|
|
|
} |
|
|
this.visible = false; |
|
|
this.visible = false; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
cancel() { |
|
|
done() { |
|
|
this.close(); |
|
|
this.close(); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|