@nubase/frontend 0.1.22 → 0.1.23

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.mts CHANGED
@@ -513,6 +513,12 @@ type UseSchemaFiltersReturn<TSchema extends ObjectSchema<any>> = {
513
513
  filterDescriptors: FilterFieldDescriptor[];
514
514
  /** Get params for API call (removes empty/undefined values) */
515
515
  getRequestParams: () => Record<string, unknown>;
516
+ /** Global search value (if schema has "q" field) */
517
+ searchValue: string;
518
+ /** Update global search value */
519
+ setSearchValue: (value: string) => void;
520
+ /** Whether the schema supports global text search (has "q" field) */
521
+ hasTextSearch: boolean;
516
522
  };
517
523
  /**
518
524
  * Hook for managing schema-derived filter state.
package/dist/index.d.ts CHANGED
@@ -513,6 +513,12 @@ type UseSchemaFiltersReturn<TSchema extends ObjectSchema<any>> = {
513
513
  filterDescriptors: FilterFieldDescriptor[];
514
514
  /** Get params for API call (removes empty/undefined values) */
515
515
  getRequestParams: () => Record<string, unknown>;
516
+ /** Global search value (if schema has "q" field) */
517
+ searchValue: string;
518
+ /** Update global search value */
519
+ setSearchValue: (value: string) => void;
520
+ /** Whether the schema supports global text search (has "q" field) */
521
+ hasTextSearch: boolean;
516
522
  };
517
523
  /**
518
524
  * Hook for managing schema-derived filter state.
package/dist/index.js CHANGED
@@ -7772,7 +7772,7 @@ var workbenchOpenResourceOperation = createCommand({
7772
7772
  });
7773
7773
 
7774
7774
  // src/commands/definitions/workbench.openResourceInModal.tsx
7775
- var import_core7 = require("@nubase/core");
7775
+ var import_core8 = require("@nubase/core");
7776
7776
  var import_lucide_react10 = require("lucide-react");
7777
7777
 
7778
7778
  // src/components/form/SchemaForm/useSchemaForm.ts
@@ -8020,6 +8020,7 @@ function useResourceViewQuery(resourceId, view, params, options) {
8020
8020
  }
8021
8021
 
8022
8022
  // src/hooks/useSchemaFilters.ts
8023
+ var import_core7 = require("@nubase/core");
8023
8024
  var import_react29 = require("react");
8024
8025
 
8025
8026
  // src/components/schema-filter-bar/introspect-schema.ts
@@ -8053,6 +8054,9 @@ function introspectSchemaForFilters(schema, config) {
8053
8054
  const descriptors = [];
8054
8055
  const shape = schema._shape;
8055
8056
  for (const [fieldName, fieldSchema] of Object.entries(shape)) {
8057
+ if (fieldName === import_core6.SEARCH_FIELD_NAME) {
8058
+ continue;
8059
+ }
8056
8060
  if (config?.excludeFields?.includes(fieldName)) {
8057
8061
  continue;
8058
8062
  }
@@ -8082,6 +8086,10 @@ function introspectSchemaForFilters(schema, config) {
8082
8086
 
8083
8087
  // src/hooks/useSchemaFilters.ts
8084
8088
  function useSchemaFilters(schema, options) {
8089
+ const hasTextSearch = (0, import_react29.useMemo)(() => {
8090
+ if (!schema) return false;
8091
+ return import_core7.SEARCH_FIELD_NAME in schema._shape;
8092
+ }, [schema]);
8085
8093
  const filterDescriptors = (0, import_react29.useMemo)(() => {
8086
8094
  if (!schema) return [];
8087
8095
  return introspectSchemaForFilters(schema, options);
@@ -8089,6 +8097,10 @@ function useSchemaFilters(schema, options) {
8089
8097
  const [filterState, setFilterState] = (0, import_react29.useState)(
8090
8098
  {}
8091
8099
  );
8100
+ const [searchValue, setSearchValueState] = (0, import_react29.useState)("");
8101
+ const setSearchValue = (0, import_react29.useCallback)((value) => {
8102
+ setSearchValueState(value);
8103
+ }, []);
8092
8104
  const setFilterValue = (0, import_react29.useCallback)((field, value) => {
8093
8105
  setFilterState((prev) => ({
8094
8106
  ...prev,
@@ -8106,8 +8118,12 @@ function useSchemaFilters(schema, options) {
8106
8118
  );
8107
8119
  const clearFilters = (0, import_react29.useCallback)(() => {
8108
8120
  setFilterState({});
8121
+ setSearchValueState("");
8109
8122
  }, []);
8110
8123
  const hasActiveFilters = (0, import_react29.useMemo)(() => {
8124
+ if (searchValue.trim() !== "") {
8125
+ return true;
8126
+ }
8111
8127
  return Object.entries(filterState).some(([, value]) => {
8112
8128
  if (value === void 0 || value === null || value === "") {
8113
8129
  return false;
@@ -8117,9 +8133,12 @@ function useSchemaFilters(schema, options) {
8117
8133
  }
8118
8134
  return true;
8119
8135
  });
8120
- }, [filterState]);
8136
+ }, [filterState, searchValue]);
8121
8137
  const getRequestParams = (0, import_react29.useCallback)(() => {
8122
8138
  const params = {};
8139
+ if (searchValue.trim() !== "") {
8140
+ params[import_core7.SEARCH_FIELD_NAME] = searchValue.trim();
8141
+ }
8123
8142
  for (const [key, value] of Object.entries(filterState)) {
8124
8143
  if (value === void 0 || value === null || value === "") {
8125
8144
  continue;
@@ -8130,7 +8149,7 @@ function useSchemaFilters(schema, options) {
8130
8149
  params[key] = value;
8131
8150
  }
8132
8151
  return params;
8133
- }, [filterState]);
8152
+ }, [filterState, searchValue]);
8134
8153
  return {
8135
8154
  filterState,
8136
8155
  setFilterValue,
@@ -8138,7 +8157,10 @@ function useSchemaFilters(schema, options) {
8138
8157
  clearFilters,
8139
8158
  hasActiveFilters,
8140
8159
  filterDescriptors,
8141
- getRequestParams
8160
+ getRequestParams,
8161
+ searchValue,
8162
+ setSearchValue,
8163
+ hasTextSearch
8142
8164
  };
8143
8165
  }
8144
8166
 
@@ -12186,12 +12208,12 @@ var ModalViewRenderer = (props) => {
12186
12208
 
12187
12209
  // src/commands/definitions/workbench.openResourceInModal.tsx
12188
12210
  var import_jsx_runtime70 = require("react/jsx-runtime");
12189
- var workbenchOpenResourceOperationInModalArgsSchema = import_core7.nu.object({
12190
- resourceId: import_core7.nu.string().withMeta({
12211
+ var workbenchOpenResourceOperationInModalArgsSchema = import_core8.nu.object({
12212
+ resourceId: import_core8.nu.string().withMeta({
12191
12213
  label: "Resource ID",
12192
12214
  description: "The ID of the resource to open"
12193
12215
  }).optional(),
12194
- operation: import_core7.nu.string().withMeta({
12216
+ operation: import_core8.nu.string().withMeta({
12195
12217
  label: "Operation",
12196
12218
  description: "The operation to perform on the resource"
12197
12219
  }).optional()
@@ -12344,11 +12366,11 @@ var workbenchRunCommand = createCommand({
12344
12366
  });
12345
12367
 
12346
12368
  // src/commands/definitions/workbench.setTheme.tsx
12347
- var import_core8 = require("@nubase/core");
12369
+ var import_core9 = require("@nubase/core");
12348
12370
  var import_lucide_react12 = require("lucide-react");
12349
12371
  var import_jsx_runtime72 = require("react/jsx-runtime");
12350
- var workbenchSetThemeArgsSchema = import_core8.nu.object({
12351
- themeId: import_core8.nu.string().withMeta({
12372
+ var workbenchSetThemeArgsSchema = import_core9.nu.object({
12373
+ themeId: import_core9.nu.string().withMeta({
12352
12374
  label: "Theme ID",
12353
12375
  description: "The ID of the theme to set"
12354
12376
  }).optional()
@@ -15377,7 +15399,7 @@ var ResourceCreateViewRenderer = (props) => {
15377
15399
  };
15378
15400
 
15379
15401
  // src/components/views/ViewRenderer/screen/ResourceSearchViewRenderer.tsx
15380
- var import_core9 = require("@nubase/core");
15402
+ var import_core10 = require("@nubase/core");
15381
15403
  var import_react_router5 = require("@tanstack/react-router");
15382
15404
  var import_react69 = require("react");
15383
15405
 
@@ -16428,7 +16450,7 @@ var DEFAULT_COLUMN_WIDTHS = {
16428
16450
  // Will use the wrapped type's width
16429
16451
  };
16430
16452
  var getDefaultColumnWidth = (fieldSchema) => {
16431
- if (fieldSchema instanceof import_core9.OptionalSchema) {
16453
+ if (fieldSchema instanceof import_core10.OptionalSchema) {
16432
16454
  return getDefaultColumnWidth(fieldSchema.unwrap());
16433
16455
  }
16434
16456
  return DEFAULT_COLUMN_WIDTHS[fieldSchema.type] || 150;
@@ -16451,7 +16473,10 @@ var ResourceSearchViewRenderer = (props) => {
16451
16473
  clearFilters,
16452
16474
  hasActiveFilters,
16453
16475
  filterDescriptors,
16454
- getRequestParams
16476
+ getRequestParams,
16477
+ searchValue,
16478
+ setSearchValue,
16479
+ hasTextSearch
16455
16480
  } = useSchemaFilters(view.schemaFilter);
16456
16481
  const mergedParams = (0, import_react69.useMemo)(() => {
16457
16482
  const filterParams = getRequestParams();
@@ -16652,7 +16677,9 @@ var ResourceSearchViewRenderer = (props) => {
16652
16677
  filterState,
16653
16678
  onFilterChange: setFilterValue,
16654
16679
  onClearFilters: clearFilters,
16655
- showClearFilters: hasActiveFilters
16680
+ showClearFilters: hasActiveFilters,
16681
+ searchValue: hasTextSearch ? searchValue : "",
16682
+ onSearchChange: hasTextSearch ? setSearchValue : void 0
16656
16683
  }
16657
16684
  ),
16658
16685
  bulkActions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(ActionBar, { actions: bulkActions }),