useTabQueryHandler.ts 691 B

12345678910111213141516171819202122232425262728293031323334353637
  1. import { ref } from "vue";
  2. import { useRoute } from "vue-router";
  3. export const useTabQueryHandler = defaultTab => {
  4. const route = useRoute();
  5. const tab = ref(defaultTab);
  6. const showTab = newTab => {
  7. const queries = route.query.tab
  8. ? route.query
  9. : { ...route.query, tab: newTab };
  10. queries.tab = newTab;
  11. route.query.tab = newTab;
  12. tab.value = route.query.tab;
  13. // eslint-disable-next-line no-restricted-globals
  14. window.history.pushState(
  15. {},
  16. null,
  17. `${route.path}?${Object.keys(queries)
  18. .map(
  19. key =>
  20. `${encodeURIComponent(key)}=${encodeURIComponent(
  21. queries[key]
  22. )}`
  23. )
  24. .join("&")}`
  25. );
  26. };
  27. return {
  28. tab,
  29. showTab
  30. };
  31. };