@dragonmastery/zinia-forms-core 0.5.3 → 0.5.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -2864,6 +2864,7 @@ interface UrlSyncOptions {
2864
2864
  }
2865
2865
  interface DataTable {
2866
2866
  setFilter: (field: any, filter: any) => Promise<void>;
2867
+ clearFilter: (field: any) => Promise<void>;
2867
2868
  clearAllFilters: () => Promise<void>;
2868
2869
  setFiltersFromQueryParams: (params: Record<string, string | string[]>) => Promise<void>;
2869
2870
  load: () => Promise<void>;
package/dist/index.js CHANGED
@@ -8218,6 +8218,14 @@ function getFilterOptions(field, column, fieldsMetadata, filterOptionsState) {
8218
8218
  }
8219
8219
  return [];
8220
8220
  }
8221
+ function isBooleanOperator(operator) {
8222
+ if (!operator) return true;
8223
+ return OPERATORS_BY_TYPE.boolean.includes(operator);
8224
+ }
8225
+ function isEnumOperator(operator) {
8226
+ if (!operator) return true;
8227
+ return OPERATORS_BY_TYPE.enum.includes(operator);
8228
+ }
8221
8229
  function getSortLabels(field, column, fieldsMetadata) {
8222
8230
  if (column?.sortLabels) {
8223
8231
  return column.sortLabels;
@@ -8916,7 +8924,7 @@ var EnumMultiSelectFilter = (props) => {
8916
8924
  }
8917
8925
  ) })
8918
8926
  ] }),
8919
- /* @__PURE__ */ jsx("div", { class: "text-xs text-base-content/60", children: props.operator === "isOneOf" ? "Select one or more values" : "Exclude one or more values" })
8927
+ /* @__PURE__ */ jsx("div", { class: "text-xs text-base-content/60", children: props.operator === OPERATORS.IS_ONE_OF ? "Select one or more values" : "Show rows that do not match these values" })
8920
8928
  ] });
8921
8929
  };
8922
8930
  var SelectFilter = (props) => {
@@ -10180,7 +10188,7 @@ var FilterDrawer = (props) => {
10180
10188
  isOptionsLoading: filterOptionsLoading?.value?.[field] ?? false,
10181
10189
  allOptionText: column.filterAllOptionText,
10182
10190
  showAllOption: column.filterShowAllOption,
10183
- operator: currentFilter?.operator,
10191
+ operator: isEnumOperator(currentFilter?.operator) ? currentFilter?.operator : void 0,
10184
10192
  fieldType: convertToDataType(props.fieldsMetadata[field]?.type || "enum"),
10185
10193
  onFilterChange: props.onFilterChange,
10186
10194
  onClearFilter: props.onClearFilter
@@ -10220,7 +10228,7 @@ var FilterDrawer = (props) => {
10220
10228
  isLoading: props.isLoading,
10221
10229
  allOptionText: column.filterAllOptionText,
10222
10230
  showAllOption: column.filterShowAllOption,
10223
- operator: currentFilter?.operator,
10231
+ operator: isBooleanOperator(currentFilter?.operator) ? currentFilter?.operator : void 0,
10224
10232
  fieldType: convertToDataType(props.fieldsMetadata[field]?.type || "boolean"),
10225
10233
  options: getFilterOptions(
10226
10234
  field,
@@ -11933,6 +11941,7 @@ function useDataTableUrlSync(table, router, options = {}) {
11933
11941
  const { loadOnMount = true } = options;
11934
11942
  const isUpdatingFromRoute = ref(false);
11935
11943
  const originalSetFilter = table.setFilter.bind(table);
11944
+ const originalClearFilter = table.clearFilter.bind(table);
11936
11945
  const originalClearAllFilters = table.clearAllFilters.bind(table);
11937
11946
  const extractFilterParams = (query) => {
11938
11947
  const filterParams = {};
@@ -11956,12 +11965,22 @@ function useDataTableUrlSync(table, router, options = {}) {
11956
11965
  router.push({ query });
11957
11966
  };
11958
11967
  table.setFilter = async (field, filter) => {
11959
- await originalSetFilter(field, filter);
11968
+ const filterPromise = originalSetFilter(field, filter);
11969
+ await nextTick();
11970
+ updateUrlFromFilters();
11971
+ await filterPromise;
11972
+ };
11973
+ table.clearFilter = async (field) => {
11974
+ const filterPromise = originalClearFilter(field);
11975
+ await nextTick();
11960
11976
  updateUrlFromFilters();
11977
+ await filterPromise;
11961
11978
  };
11962
11979
  table.clearAllFilters = async () => {
11963
- await originalClearAllFilters();
11980
+ const filterPromise = originalClearAllFilters();
11981
+ await nextTick();
11964
11982
  updateUrlFromFilters();
11983
+ await filterPromise;
11965
11984
  };
11966
11985
  watch(
11967
11986
  () => router.currentRoute.value.query,