@flytedan/flytebot-design-system 0.33.0 → 0.35.0
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/README.md +9 -2
- package/dist/index.cjs +478 -390
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +21 -8
- package/dist/index.d.ts +21 -8
- package/dist/index.js +478 -390
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -1188,22 +1188,30 @@ type FilterValue<F extends FilterField> = F extends FilterFieldText ? string : F
|
|
|
1188
1188
|
interface FilterBarProps extends Omit<React.HTMLAttributes<HTMLSpanElement>, "onChange"> {
|
|
1189
1189
|
/** Every filter a consumer can add. Order here is the order in the "add filter" list. */
|
|
1190
1190
|
fields: FilterField[];
|
|
1191
|
-
/**
|
|
1191
|
+
/** The applied filters, and the single source of truth for them: FilterBar keeps no
|
|
1192
|
+
* copy. Straight off useServerTable — a value of undefined/""/false reads as "not set",
|
|
1192
1193
|
* same convention that hook already uses for activeFilterCount. multiSelect/range/
|
|
1193
|
-
* date values are objects instead (see isFieldSet).
|
|
1194
|
-
*
|
|
1195
|
-
*
|
|
1196
|
-
* doesn't make FilterBar forget it. */
|
|
1194
|
+
* date values are objects instead (see isFieldSet). Every edit, and every paste that
|
|
1195
|
+
* settles later, is computed from this prop as it stands at that moment; a panel seeds
|
|
1196
|
+
* itself from it when it opens, and follows it if it changes while open. */
|
|
1197
1197
|
filters: Record<string, unknown>;
|
|
1198
1198
|
/** Fires on every value edit. Maps 1:1 onto useServerTable's setFilter(id, value).
|
|
1199
1199
|
* FilterBar only ever calls this with a COMPLETE, valid value for the field — an
|
|
1200
1200
|
* emptied selection, a one-sided date range, an invalid numeric range, number text
|
|
1201
1201
|
* that isn't a valid value, or a cleared bound go through onFilterRemove (or nothing,
|
|
1202
|
-
* when the filter isn't set) instead.
|
|
1203
|
-
*
|
|
1202
|
+
* when the filter isn't set) instead.
|
|
1203
|
+
*
|
|
1204
|
+
* FilterBar is a controlled component: apply this to your state synchronously, so the
|
|
1205
|
+
* next render passes the new `filters`. Never apply it inside `startTransition` or
|
|
1206
|
+
* after a delay; React's rule for controlled inputs applies here too. Number fields
|
|
1207
|
+
* emit on every keystroke that leaves them valid, so defer the EXPENSIVE work instead:
|
|
1208
|
+
* debounce the request this triggers, or read the filters through useDeferredValue. A
|
|
1209
|
+
* host that keeps filters in the URL keeps them in memory as the source of truth and
|
|
1210
|
+
* syncs the URL from that. */
|
|
1204
1211
|
onFilterChange: (key: string, value: unknown) => void;
|
|
1205
1212
|
/** Fires when a chip's × is clicked, or when an edit leaves a field with no valid
|
|
1206
|
-
* value
|
|
1213
|
+
* value; never for a key that isn't set in `filters`. Maps 1:1 onto useServerTable's
|
|
1214
|
+
* clearFilter(id). Apply it synchronously, exactly like onFilterChange. */
|
|
1207
1215
|
onFilterRemove: (key: string) => void;
|
|
1208
1216
|
/** Which edge the "add filter" popover aligns to. Default "left" — the trigger sits
|
|
1209
1217
|
* at the end of a left-to-right chip row, so its menu opens under its left edge. */
|
|
@@ -1241,6 +1249,11 @@ declare function validateFilterValue(field: FilterField, value: unknown): Filter
|
|
|
1241
1249
|
* values, only the transient "which field's popover/input is open right now" UI state
|
|
1242
1250
|
* (`panel`), the same way SortMenu holds `open` but never sort state itself.
|
|
1243
1251
|
*
|
|
1252
|
+
* It is a standard controlled component. `filters` is the single source of truth, and
|
|
1253
|
+
* the host applies onFilterChange/onFilterRemove to it synchronously (never inside
|
|
1254
|
+
* `startTransition`, never after a timeout), deferring only the expensive query that the
|
|
1255
|
+
* filters drive, with a debounce or useDeferredValue.
|
|
1256
|
+
*
|
|
1244
1257
|
* Every floating surface — a field's edit panel and the "add filter" menu — is a real
|
|
1245
1258
|
* Popover (or Menu-in-a-Popover) from this kit's own actions module: viewport clamping,
|
|
1246
1259
|
* nested-layer handling, Escape, and focus-return-to-the-chip all come from there, so
|
package/dist/index.d.ts
CHANGED
|
@@ -1188,22 +1188,30 @@ type FilterValue<F extends FilterField> = F extends FilterFieldText ? string : F
|
|
|
1188
1188
|
interface FilterBarProps extends Omit<React.HTMLAttributes<HTMLSpanElement>, "onChange"> {
|
|
1189
1189
|
/** Every filter a consumer can add. Order here is the order in the "add filter" list. */
|
|
1190
1190
|
fields: FilterField[];
|
|
1191
|
-
/**
|
|
1191
|
+
/** The applied filters, and the single source of truth for them: FilterBar keeps no
|
|
1192
|
+
* copy. Straight off useServerTable — a value of undefined/""/false reads as "not set",
|
|
1192
1193
|
* same convention that hook already uses for activeFilterCount. multiSelect/range/
|
|
1193
|
-
* date values are objects instead (see isFieldSet).
|
|
1194
|
-
*
|
|
1195
|
-
*
|
|
1196
|
-
* doesn't make FilterBar forget it. */
|
|
1194
|
+
* date values are objects instead (see isFieldSet). Every edit, and every paste that
|
|
1195
|
+
* settles later, is computed from this prop as it stands at that moment; a panel seeds
|
|
1196
|
+
* itself from it when it opens, and follows it if it changes while open. */
|
|
1197
1197
|
filters: Record<string, unknown>;
|
|
1198
1198
|
/** Fires on every value edit. Maps 1:1 onto useServerTable's setFilter(id, value).
|
|
1199
1199
|
* FilterBar only ever calls this with a COMPLETE, valid value for the field — an
|
|
1200
1200
|
* emptied selection, a one-sided date range, an invalid numeric range, number text
|
|
1201
1201
|
* that isn't a valid value, or a cleared bound go through onFilterRemove (or nothing,
|
|
1202
|
-
* when the filter isn't set) instead.
|
|
1203
|
-
*
|
|
1202
|
+
* when the filter isn't set) instead.
|
|
1203
|
+
*
|
|
1204
|
+
* FilterBar is a controlled component: apply this to your state synchronously, so the
|
|
1205
|
+
* next render passes the new `filters`. Never apply it inside `startTransition` or
|
|
1206
|
+
* after a delay; React's rule for controlled inputs applies here too. Number fields
|
|
1207
|
+
* emit on every keystroke that leaves them valid, so defer the EXPENSIVE work instead:
|
|
1208
|
+
* debounce the request this triggers, or read the filters through useDeferredValue. A
|
|
1209
|
+
* host that keeps filters in the URL keeps them in memory as the source of truth and
|
|
1210
|
+
* syncs the URL from that. */
|
|
1204
1211
|
onFilterChange: (key: string, value: unknown) => void;
|
|
1205
1212
|
/** Fires when a chip's × is clicked, or when an edit leaves a field with no valid
|
|
1206
|
-
* value
|
|
1213
|
+
* value; never for a key that isn't set in `filters`. Maps 1:1 onto useServerTable's
|
|
1214
|
+
* clearFilter(id). Apply it synchronously, exactly like onFilterChange. */
|
|
1207
1215
|
onFilterRemove: (key: string) => void;
|
|
1208
1216
|
/** Which edge the "add filter" popover aligns to. Default "left" — the trigger sits
|
|
1209
1217
|
* at the end of a left-to-right chip row, so its menu opens under its left edge. */
|
|
@@ -1241,6 +1249,11 @@ declare function validateFilterValue(field: FilterField, value: unknown): Filter
|
|
|
1241
1249
|
* values, only the transient "which field's popover/input is open right now" UI state
|
|
1242
1250
|
* (`panel`), the same way SortMenu holds `open` but never sort state itself.
|
|
1243
1251
|
*
|
|
1252
|
+
* It is a standard controlled component. `filters` is the single source of truth, and
|
|
1253
|
+
* the host applies onFilterChange/onFilterRemove to it synchronously (never inside
|
|
1254
|
+
* `startTransition`, never after a timeout), deferring only the expensive query that the
|
|
1255
|
+
* filters drive, with a debounce or useDeferredValue.
|
|
1256
|
+
*
|
|
1244
1257
|
* Every floating surface — a field's edit panel and the "add filter" menu — is a real
|
|
1245
1258
|
* Popover (or Menu-in-a-Popover) from this kit's own actions module: viewport clamping,
|
|
1246
1259
|
* nested-layer handling, Escape, and focus-return-to-the-chip all come from there, so
|