Skip to content

useFormFilterRepository

Programmatically control a VqDataTable or VqList — trigger a reload or full reset from outside the filter form.

Parameters

ParamTypeDescription
formKeystringFilter form ID — always ${tableId}_filter

Returns

MethodDescription
reload()Reloads the paired table/list with current filter values
reset()Clears filter values and reloads from page 1

When to Use

  • Add a standalone "Refresh" button outside the filter form
  • Add a "Clear Filters" button that resets and reloads
  • Trigger a table reload after an external action (e.g., bulk import, export)

Basic Example

vue
<script setup>
import { useFormFilterRepository } from "@qnx/vuetify";

// "users" is the shared id of VqTableFilter + VqDataTable
const { reload, reset } = useFormFilterRepository("users_filter");
</script>

<template>
  <!-- Filter Form -->
  <VqTableFilter id="users">
    <VqTextField name="search" label="Search" />
  </VqTableFilter>

  <!-- External controls -->
  <div class="d-flex gap-2 my-2">
    <v-btn variant="outlined" prepend-icon="mdi-refresh" @click="reload">Refresh</v-btn>
    <v-btn variant="outlined" prepend-icon="mdi-filter-remove" @click="reset">Clear Filters</v-btn>
  </div>

  <VqDataTable id="users" action="users/list" :headers="headers" />
</template>

Reload After Bulk Import

vue
<script setup>
import { useFormFilterRepository, useMessageInstance } from "@qnx/vuetify";
import axios from "axios";

const message = useMessageInstance();
const { reload } = useFormFilterRepository("users_filter");

const importCSV = async (file) => {
  const form = new FormData();
  form.append("file", file);
  try {
    await axios.post("users/import", form);
    message.success("Import successful!");
    reload(); // Refresh table to show new records
  } catch {
    message.error("Import failed.");
  }
};
</script>

Reload After Row Delete (Without VqDatatableItemAction)

vue
<script setup>
import { useFormFilterRepository, useMessageInstance } from "@qnx/vuetify";
import axios from "axios";

const message = useMessageInstance();
const { reload } = useFormFilterRepository("products_filter");

const deleteProduct = async (id) => {
  await axios.delete(`products/${id}`);
  message.success("Product deleted.");
  reload();
};
</script>