@sylwellsoftware/fray 0.2.0 → 0.3.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 +79 -11
- package/dist/Components/Placeholder.d.ts +1 -1
- package/dist/Components/Placeholder.d.ts.map +1 -1
- package/dist/Components/controlUtils.d.ts.map +1 -1
- package/dist/Components/data/filterState.d.ts +38 -0
- package/dist/Components/data/filterState.d.ts.map +1 -0
- package/dist/Components/data/listview/listview.d.ts +16 -5
- package/dist/Components/data/listview/listview.d.ts.map +1 -1
- package/dist/Components/data/selectionhandler.d.ts +24 -5
- package/dist/Components/data/selectionhandler.d.ts.map +1 -1
- package/dist/Components/data/table/DataTable.d.ts +36 -30
- package/dist/Components/data/table/DataTable.d.ts.map +1 -1
- package/dist/Components/data/table/FilterPanel.d.ts +8 -1
- package/dist/Components/data/table/FilterPanel.d.ts.map +1 -1
- package/dist/Components/data/table/TableHeaderCell.d.ts.map +1 -1
- package/dist/Components/data/table/tableDataSource.d.ts +49 -0
- package/dist/Components/data/table/tableDataSource.d.ts.map +1 -0
- package/dist/Components/data/table/tableQuery.d.ts +6 -2
- package/dist/Components/data/table/tableQuery.d.ts.map +1 -1
- package/dist/Components/data/treeview/treeModel.d.ts +23 -0
- package/dist/Components/data/treeview/treeModel.d.ts.map +1 -0
- package/dist/Components/data/treeview/treeview.d.ts +1 -1
- package/dist/Components/data/treeview/treeview.d.ts.map +1 -1
- package/dist/Components/dialog/dialog.d.ts +1 -1
- package/dist/Components/dialog/dialog.d.ts.map +1 -1
- package/dist/Components/lineinputs/checkbox/Checkbox.d.ts +1 -1
- package/dist/Components/lineinputs/checkbox/Checkbox.d.ts.map +1 -1
- package/dist/Components/lineinputs/checkbox/QuadCheckbox.d.ts +2 -2
- package/dist/Components/lineinputs/checkbox/QuadCheckbox.d.ts.map +1 -1
- package/dist/Components/lineinputs/checkbox/TriCheckbox.d.ts +2 -2
- package/dist/Components/lineinputs/checkbox/TriCheckbox.d.ts.map +1 -1
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2676 -726
- package/dist/index.js.map +1 -1
- package/dist/util/filterMode.d.ts +6 -4
- package/dist/util/filterMode.d.ts.map +1 -1
- package/package.json +4 -9
- package/styles/structural.css +9 -3
- package/EXPERIMENTAL.md +0 -75
- package/dist/button-CqDGmkBt.js +0 -212
- package/dist/button-CqDGmkBt.js.map +0 -1
- package/dist/experimental.d.ts +0 -16
- package/dist/experimental.d.ts.map +0 -1
- package/dist/experimental.js +0 -1399
- package/dist/experimental.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# Fray
|
|
2
2
|
|
|
3
|
-
Fray is
|
|
3
|
+
Fray is a browser-only component and DOM runtime built around
|
|
4
4
|
Glue emitters. It targets modern evergreen browsers. Its `0.x` API may change
|
|
5
5
|
with documented migration notes.
|
|
6
6
|
|
|
7
|
-
Install
|
|
7
|
+
Install it together with its Glue peer:
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
10
|
pnpm add @sylwellsoftware/glue @sylwellsoftware/fray
|
|
@@ -207,7 +207,7 @@ TypeScript TSX is Fray's supported template syntax. Classic JSX and direct
|
|
|
207
207
|
use the same renderer. A future template-file syntax can target this vnode
|
|
208
208
|
contract without changing Glue binding semantics.
|
|
209
209
|
|
|
210
|
-
Fray's
|
|
210
|
+
Fray's built-ins are authored in TSX. Direct
|
|
211
211
|
`h()` remains supported for consumers that do not use JSX and as the renderer's
|
|
212
212
|
canonical vnode operation, but it is not the built-in component authoring
|
|
213
213
|
format. The workspace lint gate rejects new `h()` templates under
|
|
@@ -738,19 +738,87 @@ operation, labelled roles, reduced motion, 200% configured text sizing, and
|
|
|
738
738
|
forced-colors focus visibility. A formal manual screen-reader pass is still a
|
|
739
739
|
release-candidate requirement; automated checks are not a substitute for it.
|
|
740
740
|
|
|
741
|
-
##
|
|
741
|
+
## Data workflows
|
|
742
742
|
|
|
743
|
-
`ListView`, `DataTable`, `TreeView`, `TreeItem`, `Dialog`,
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
743
|
+
`ListView`, `DataTable`, `TreeView`, `TreeItem`, `Dialog`, `FilterPanel`, and
|
|
744
|
+
their model helpers are part of the package entry point. All accept
|
|
745
|
+
ordinary Glue emitters; they do not introduce a second state store.
|
|
746
|
+
|
|
747
|
+
List and table selection is discriminated by cardinality. Single selection is
|
|
748
|
+
an item or `null`; array state is reserved for explicit multi-selection:
|
|
749
|
+
|
|
750
|
+
```tsx
|
|
751
|
+
const selected = new Emitter<Project | null>(null)
|
|
752
|
+
const selectedRows = new Emitter<Project[]>([])
|
|
753
|
+
|
|
754
|
+
<ListView items={projects} selectedItemEmitter={selected} itemKey="id" />
|
|
755
|
+
<DataTable
|
|
756
|
+
data={projects}
|
|
757
|
+
columns={columns}
|
|
758
|
+
multiSelect
|
|
759
|
+
selectedItemsEmitter={selectedRows}
|
|
760
|
+
/>
|
|
761
|
+
```
|
|
762
|
+
|
|
763
|
+
Both modes reconcile selected keys to fresh objects when data is replaced.
|
|
764
|
+
Multi-selection retains Control/Command toggles, Shift and pointer-drag ranges,
|
|
765
|
+
and keyboard operation.
|
|
766
|
+
|
|
767
|
+
DataTable accepts exactly one data boundary:
|
|
768
|
+
|
|
769
|
+
```tsx
|
|
770
|
+
// Direct local data; Fray derives sorted/filtered rows.
|
|
771
|
+
<DataTable data={projects} columns={columns} />
|
|
772
|
+
|
|
773
|
+
// Convenient REST adapter; the table creates and disposes this source.
|
|
774
|
+
<DataTable
|
|
775
|
+
rest={{url: '/api/projects', baseUrl: location.href}}
|
|
776
|
+
columns={columns}
|
|
777
|
+
/>
|
|
778
|
+
|
|
779
|
+
// Explicit source; the caller owns and eventually disposes it.
|
|
780
|
+
const source = createQueryTableDataSource({query, sortEmitter, filtersEmitter})
|
|
781
|
+
<DataTable dataSource={source} columns={columns} />
|
|
782
|
+
```
|
|
783
|
+
|
|
784
|
+
`createLocalTableDataSource`, `createQueryTableDataSource`,
|
|
785
|
+
`createHandlerTableDataSource`, and `createRestTableDataSource` make ownership
|
|
786
|
+
visible. Sources package the row query with sort/filter emitters, retry, and
|
|
787
|
+
disposal. The default REST serializer retains the compact existing endpoint
|
|
788
|
+
tokens; inject `serializeQuery` when an endpoint uses another wire contract.
|
|
789
|
+
|
|
790
|
+
Tree node state is projected from complete immutable snapshots:
|
|
791
|
+
|
|
792
|
+
```ts
|
|
793
|
+
const selectedNode = deriveTreeNode(treeNodes, selectedKey)
|
|
794
|
+
|
|
795
|
+
// Only for an authoritative writable root:
|
|
796
|
+
updateWritableTreeNode(treeNodes, 'project-1', (node) => ({...node, label: 'Updated'}))
|
|
797
|
+
```
|
|
798
|
+
|
|
799
|
+
For a tree derived from domain state, a callback updates that real source; the
|
|
800
|
+
tree derivation then rebuilds and `deriveTreeNode` resolves the fresh node.
|
|
801
|
+
`updateTreeNode` is the equivalent pure path-copy operation.
|
|
802
|
+
|
|
803
|
+
Generic `FilterState` keeps `neutral`, `prefer`, `require`, and `deny` semantic
|
|
804
|
+
values separate from glyphs and transport. `filterByState`,
|
|
805
|
+
`deriveFilterPredicate`, and `deriveFilteredItems` consume caller-supplied
|
|
806
|
+
dimension matchers. `serializeFilterState`/`parseFilterState` round-trip
|
|
807
|
+
validated version-1 plain data without owning URL or storage access. Unknown
|
|
808
|
+
valid keys are preserved and ignored until a matching definition exists.
|
|
809
|
+
Dimensions combine with AND. Within each dimension, a denied match always
|
|
810
|
+
rejects, every required option must match, and at least one preferred option
|
|
811
|
+
must match when preferences are active. Neutral options do not constrain the
|
|
812
|
+
result.
|
|
813
|
+
|
|
814
|
+
The stable non-virtualized performance boundary and detailed state behavior are
|
|
815
|
+
documented in this guide. See the migration notes in the changelog before
|
|
816
|
+
upgrading from 0.2.x.
|
|
749
817
|
|
|
750
818
|
Fray is not a replacement for an SSR/hydration framework, Web Components,
|
|
751
819
|
React/Vue adapters, a broad design system, a virtualized production data grid,
|
|
752
820
|
legacy-browser support, or a stable `1.0` API. See the [workspace
|
|
753
|
-
overview](../../README.md), [
|
|
821
|
+
overview](../../README.md), [API surface](../../docs/API_SURFACE.md),
|
|
754
822
|
[architecture overview](../../docs/architecture.md),
|
|
755
823
|
[changelog](../../CHANGELOG.md), [contribution guide](../../CONTRIBUTING.md),
|
|
756
824
|
and [security policy](../../SECURITY.md).
|
|
@@ -3,7 +3,7 @@ import type { ComponentProps } from './component.js';
|
|
|
3
3
|
export interface PlaceholderProps extends ComponentProps {
|
|
4
4
|
width?: number | string;
|
|
5
5
|
}
|
|
6
|
-
/** Deterministic loading placeholder for
|
|
6
|
+
/** Deterministic loading placeholder for data components. */
|
|
7
7
|
export declare class Placeholder extends Component<PlaceholderProps> {
|
|
8
8
|
render(): import("@sylwellsoftware/fray/jsx-runtime").JSX.Element;
|
|
9
9
|
static hostName: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Placeholder.d.ts","sourceRoot":"","sources":["../../src/Components/Placeholder.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAM,MAAM,gBAAgB,CAAA;AAC7C,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,gBAAgB,CAAA;AAElD,MAAM,WAAW,gBAAiB,SAAQ,cAAc;IACpD,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAC1B;AAED,
|
|
1
|
+
{"version":3,"file":"Placeholder.d.ts","sourceRoot":"","sources":["../../src/Components/Placeholder.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAM,MAAM,gBAAgB,CAAA;AAC7C,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,gBAAgB,CAAA;AAElD,MAAM,WAAW,gBAAiB,SAAQ,cAAc;IACpD,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAC1B;AAED,6DAA6D;AAC7D,qBAAa,WAAY,SAAQ,SAAS,CAAC,gBAAgB,CAAC;IACxD,MAAM;IAMN,OAAgB,QAAQ,SAAgB;IACxC,OAAgB,kBAAkB,SAAwB;IAE1D,MAAM,CAAC,UAAU,0BAEhB;IAED,MAAM,CAAC,GAAG,SAgBT;CACJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controlUtils.d.ts","sourceRoot":"","sources":["../../src/Components/controlUtils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAiB,eAAe,EAAC,MAAM,uBAAuB,CAAA;AAE1E,OAAO,KAAK,EAAC,SAAS,EAAE,cAAc,EAAC,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"controlUtils.d.ts","sourceRoot":"","sources":["../../src/Components/controlUtils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAiB,eAAe,EAAC,MAAM,uBAAuB,CAAA;AAE1E,OAAO,KAAK,EAAC,SAAS,EAAE,cAAc,EAAC,MAAM,gBAAgB,CAAA;AAG7D,MAAM,WAAW,YAAY,CAAC,MAAM,CAAE,SAAQ,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC;IAC1E,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,OAAO,CAAA;CACtD;AAED,MAAM,WAAW,iBAAiB,CAAC,MAAM,CAAE,SAAQ,cAAc;IAC7D,YAAY,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAA;IACnC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,YAAY,CAAC,EAAE,MAAM,CAAA;CACxB;AAID,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,CAGnF;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EACrC,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,iBAAiB,CAAC,MAAM,CAAC,EAChC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAChB,YAAY,CAAC,MAAM,CAAC,CAWtB;AAED,wBAAgB,aAAa,CAAC,MAAM,GAAG,OAAO,EAC1C,KAAK,EAAE,OAAO,EACd,IAAI,SAAY,GACjB,OAAO,CAAC,KAAK,IAAI,YAAY,CAAC,MAAM,CAAC,CAQvC;AAED,wBAAgB,UAAU,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAKvD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,OAAO,GAAG,WAAW,CAAC,GAAG,MAAM,CAEzF;AAED,wBAAgB,MAAM,CAAC,UAAU,SAAS,OAAO,EAAE,EAC/C,QAAQ,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,EAC5D,GAAG,IAAI,EAAE,UAAU,GACpB,IAAI,CAIN;AAED,wBAAgB,aAAa,CAAC,OAAO,EACjC,OAAO,EAAE,OAAO,EAChB,IAAI,SAAY,GACjB,OAAO,CAAC,OAAO,IAAI,OAAO,EAAE,CAE9B;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAGpD"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { DerivedEmitter } from '@sylwellsoftware/glue';
|
|
2
|
+
import type { ReadableEmitter } from '@sylwellsoftware/glue';
|
|
3
|
+
import type { FilterModeValue } from '../../util/filterMode.js';
|
|
4
|
+
export type FilterOptionState = Readonly<Record<string, FilterModeValue>>;
|
|
5
|
+
export type FilterState = Readonly<Record<string, FilterOptionState>>;
|
|
6
|
+
export interface SerializedFilterState {
|
|
7
|
+
readonly version: 1;
|
|
8
|
+
readonly dimensions: Record<string, Record<string, FilterModeValue>>;
|
|
9
|
+
}
|
|
10
|
+
export interface FilterOptionDefinition<TItem> {
|
|
11
|
+
/** Stable persisted identity within its dimension. */
|
|
12
|
+
key: string;
|
|
13
|
+
matches: (item: TItem) => boolean;
|
|
14
|
+
}
|
|
15
|
+
export interface FilterDimensionDefinition<TItem> {
|
|
16
|
+
/** Stable persisted identity for the dimension. */
|
|
17
|
+
key: string;
|
|
18
|
+
options: readonly FilterOptionDefinition<TItem>[];
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Test an item against semantic filter state.
|
|
22
|
+
*
|
|
23
|
+
* Dimensions combine with AND. Within one dimension, deny wins, every required
|
|
24
|
+
* option must match, and at least one preferred option must match when any are
|
|
25
|
+
* active. Unknown persisted dimensions and options are retained by
|
|
26
|
+
* serialization but do not constrain matching.
|
|
27
|
+
*/
|
|
28
|
+
export declare function matchesFilterState<TItem>(item: TItem, state: FilterState, dimensions: readonly FilterDimensionDefinition<TItem>[]): boolean;
|
|
29
|
+
export declare function filterByState<TItem>(items: readonly TItem[], state: FilterState, dimensions: readonly FilterDimensionDefinition<TItem>[]): TItem[];
|
|
30
|
+
/** Derive a reusable predicate without giving Fray ownership of persistence. */
|
|
31
|
+
export declare function deriveFilterPredicate<TItem>(state: ReadableEmitter<FilterState, unknown>, dimensions: readonly FilterDimensionDefinition<TItem>[], owner?: unknown): DerivedEmitter<(item: TItem) => boolean, readonly [ReadableEmitter<FilterState, unknown>]>;
|
|
32
|
+
/** Derive a filtered collection from application-owned items and filter state. */
|
|
33
|
+
export declare function deriveFilteredItems<TItem>(items: ReadableEmitter<readonly TItem[], unknown>, state: ReadableEmitter<FilterState, unknown>, dimensions: readonly FilterDimensionDefinition<TItem>[], owner?: unknown): DerivedEmitter<TItem[], readonly [ReadableEmitter<readonly TItem[], unknown>, ReadableEmitter<FilterState, unknown>]>;
|
|
34
|
+
/** Convert state to deterministic, versioned, plain JSON-compatible data. */
|
|
35
|
+
export declare function serializeFilterState(state: FilterState): SerializedFilterState;
|
|
36
|
+
/** Validate and restore versioned filter data. Unknown keys are preserved. */
|
|
37
|
+
export declare function parseFilterState(value: unknown): FilterState;
|
|
38
|
+
//# sourceMappingURL=filterState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filterState.d.ts","sourceRoot":"","sources":["../../../src/Components/data/filterState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,uBAAuB,CAAA;AACpD,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,uBAAuB,CAAA;AAG1D,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,0BAA0B,CAAA;AAE7D,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAA;AACzE,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAA;AAErE,MAAM,WAAW,qBAAqB;IAClC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAA;IACnB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAA;CACvE;AAED,MAAM,WAAW,sBAAsB,CAAC,KAAK;IACzC,sDAAsD;IACtD,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,OAAO,CAAA;CACpC;AAED,MAAM,WAAW,yBAAyB,CAAC,KAAK;IAC5C,mDAAmD;IACnD,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,SAAS,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAA;CACpD;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EACpC,IAAI,EAAE,KAAK,EACX,KAAK,EAAE,WAAW,EAClB,UAAU,EAAE,SAAS,yBAAyB,CAAC,KAAK,CAAC,EAAE,GACxD,OAAO,CAsBT;AAED,wBAAgB,aAAa,CAAC,KAAK,EAC/B,KAAK,EAAE,SAAS,KAAK,EAAE,EACvB,KAAK,EAAE,WAAW,EAClB,UAAU,EAAE,SAAS,yBAAyB,CAAC,KAAK,CAAC,EAAE,GACxD,KAAK,EAAE,CAGT;AAED,gFAAgF;AAChF,wBAAgB,qBAAqB,CAAC,KAAK,EACvC,KAAK,EAAE,eAAe,CAAC,WAAW,EAAE,OAAO,CAAC,EAC5C,UAAU,EAAE,SAAS,yBAAyB,CAAC,KAAK,CAAC,EAAE,EACvD,KAAK,GAAE,OAAc,GACtB,cAAc,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,OAAO,EAAE,SAAS,CAAC,eAAe,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,CAO5F;AAED,kFAAkF;AAClF,wBAAgB,mBAAmB,CAAC,KAAK,EACrC,KAAK,EAAE,eAAe,CAAC,SAAS,KAAK,EAAE,EAAE,OAAO,CAAC,EACjD,KAAK,EAAE,eAAe,CAAC,WAAW,EAAE,OAAO,CAAC,EAC5C,UAAU,EAAE,SAAS,yBAAyB,CAAC,KAAK,CAAC,EAAE,EACvD,KAAK,GAAE,OAAc,GACtB,cAAc,CACb,KAAK,EAAE,EACP,SAAS,CAAC,eAAe,CAAC,SAAS,KAAK,EAAE,EAAE,OAAO,CAAC,EAAE,eAAe,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAC/F,CAOA;AAED,6EAA6E;AAC7E,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,WAAW,GAAG,qBAAqB,CAY9E;AAED,8EAA8E;AAC9E,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,CAuB5D"}
|
|
@@ -4,31 +4,41 @@ import { Component } from '../../component.js';
|
|
|
4
4
|
import type { ComponentProps, FrayChild } from '../../component.js';
|
|
5
5
|
import type { ValueEmitter } from '../../controlUtils.js';
|
|
6
6
|
import type { BaseSelectionHandler, ItemKeyGetter } from '../selectionhandler.js';
|
|
7
|
-
|
|
7
|
+
interface ListViewCommonProps<TItem> extends ComponentProps {
|
|
8
8
|
items?: readonly TItem[] | ReadableEmitter<readonly TItem[], unknown>;
|
|
9
|
-
selectedItemsEmitter?: ValueEmitter<TItem[]>;
|
|
10
9
|
itemKey?: string | ItemKeyGetter<TItem>;
|
|
11
|
-
multiSelect?: boolean;
|
|
12
10
|
label?: string;
|
|
13
11
|
placeholderCount?: number;
|
|
14
12
|
renderItem?: (item: TItem, index: number) => FrayChild;
|
|
15
13
|
}
|
|
16
|
-
|
|
14
|
+
export type ListViewProps<TItem = unknown> = ListViewCommonProps<TItem> & ({
|
|
15
|
+
multiSelect?: false;
|
|
16
|
+
selectedItemEmitter?: ValueEmitter<TItem | null>;
|
|
17
|
+
selectedItemsEmitter?: never;
|
|
18
|
+
} | {
|
|
19
|
+
multiSelect: true;
|
|
20
|
+
selectedItemsEmitter?: ValueEmitter<TItem[]>;
|
|
21
|
+
selectedItemEmitter?: never;
|
|
22
|
+
});
|
|
23
|
+
/** Accessible listbox with stable-key selection. */
|
|
17
24
|
export declare class ListView<TItem = unknown> extends Component<ListViewProps<TItem>> {
|
|
18
25
|
readonly itemsEmitter: ReadableEmitter<readonly TItem[], unknown>;
|
|
19
26
|
readonly items$: ReadableEmitter<readonly TItem[], unknown>;
|
|
20
27
|
readonly selectedItemsEmitter: ValueEmitter<TItem[]>;
|
|
21
28
|
readonly selectedItems$: ValueEmitter<TItem[]>;
|
|
29
|
+
readonly selectedItemEmitter: ValueEmitter<TItem | null> | null;
|
|
30
|
+
readonly selectedItem$: ValueEmitter<TItem | null> | null;
|
|
22
31
|
readonly getItemKey: ItemKeyGetter<TItem>;
|
|
23
32
|
readonly selectionHandler: BaseSelectionHandler<TItem>;
|
|
24
33
|
private readonly ownedItemsEmitter;
|
|
25
|
-
private readonly ownedSelectedItemsEmitter;
|
|
26
34
|
constructor(props?: ListViewProps<TItem>);
|
|
27
35
|
initialize(): void;
|
|
28
36
|
render(): FrayChild;
|
|
29
37
|
afterUpdate(dom: ChildNode | null): void;
|
|
30
38
|
getSelectedItems(): TItem[];
|
|
31
39
|
getSelectedItemsEmitter(): ValueEmitter<TItem[]>;
|
|
40
|
+
getSelectedItem(): TItem | null;
|
|
41
|
+
getSelectedItemEmitter(): ValueEmitter<TItem | null> | null;
|
|
32
42
|
onDestroy(): void;
|
|
33
43
|
static dependencies: (typeof Placeholder)[];
|
|
34
44
|
static hostName: string;
|
|
@@ -36,4 +46,5 @@ export declare class ListView<TItem = unknown> extends Component<ListViewProps<T
|
|
|
36
46
|
static baseStyles: string[][];
|
|
37
47
|
static css: string;
|
|
38
48
|
}
|
|
49
|
+
export {};
|
|
39
50
|
//# sourceMappingURL=listview.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listview.d.ts","sourceRoot":"","sources":["../../../../src/Components/data/listview/listview.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,uBAAuB,CAAA;AAE1D,OAAO,EAAC,WAAW,EAAC,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAC,SAAS,EAAM,MAAM,oBAAoB,CAAA;AACjD,OAAO,KAAK,EAAC,cAAc,EAAE,SAAS,EAAC,MAAM,oBAAoB,CAAA;AAEjE,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"listview.d.ts","sourceRoot":"","sources":["../../../../src/Components/data/listview/listview.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,23 @@
|
|
|
1
1
|
import type { ValueEmitter } from '../controlUtils.js';
|
|
2
2
|
export type ItemKeyGetter<TItem> = (item: TItem, index: number) => unknown;
|
|
3
|
-
|
|
3
|
+
interface SelectionHandlerCommonConfig<TItem> {
|
|
4
4
|
getItems: () => readonly TItem[];
|
|
5
5
|
getKey?: ItemKeyGetter<TItem>;
|
|
6
|
-
selectedItemsEmitter?: ValueEmitter<TItem[]>;
|
|
7
6
|
owner?: unknown;
|
|
8
|
-
|
|
7
|
+
}
|
|
8
|
+
export interface SingleSelectionHandlerConfig<TItem> extends SelectionHandlerCommonConfig<TItem> {
|
|
9
|
+
multiSelect?: false;
|
|
10
|
+
selectedItemEmitter?: ValueEmitter<TItem | null>;
|
|
11
|
+
selectedItemsEmitter?: never;
|
|
12
|
+
}
|
|
13
|
+
export interface MultiSelectionHandlerConfig<TItem> extends SelectionHandlerCommonConfig<TItem> {
|
|
14
|
+
multiSelect: true;
|
|
15
|
+
selectedItemsEmitter?: ValueEmitter<TItem[]>;
|
|
16
|
+
selectedItemEmitter?: never;
|
|
17
|
+
}
|
|
18
|
+
export type SelectionHandlerConfig<TItem> = SingleSelectionHandlerConfig<TItem> | MultiSelectionHandlerConfig<TItem>;
|
|
19
|
+
interface BaseSelectionHandlerConfig<TItem> extends SelectionHandlerCommonConfig<TItem> {
|
|
20
|
+
selectedItemsEmitter?: ValueEmitter<TItem[]>;
|
|
9
21
|
}
|
|
10
22
|
type SelectionEvent = MouseEvent | KeyboardEvent;
|
|
11
23
|
/**
|
|
@@ -32,7 +44,7 @@ export declare class BaseSelectionHandler<TItem = unknown> {
|
|
|
32
44
|
private suppressClickTimer;
|
|
33
45
|
private destroyed;
|
|
34
46
|
private readonly ownedSelectedItemsEmitter;
|
|
35
|
-
constructor({ getItems, getKey, selectedItemsEmitter, owner, }:
|
|
47
|
+
constructor({ getItems, getKey, selectedItemsEmitter, owner, }: BaseSelectionHandlerConfig<TItem>);
|
|
36
48
|
rowsUpdated(rows: Iterable<HTMLElement> | ArrayLike<HTMLElement> | null): void;
|
|
37
49
|
private wireRow;
|
|
38
50
|
private handleClick;
|
|
@@ -54,7 +66,13 @@ export declare class BaseSelectionHandler<TItem = unknown> {
|
|
|
54
66
|
destroy(): void;
|
|
55
67
|
}
|
|
56
68
|
export declare class SingleSelectionHandler<TItem = unknown> extends BaseSelectionHandler<TItem> {
|
|
69
|
+
readonly selectedItemEmitter: ValueEmitter<TItem | null>;
|
|
70
|
+
readonly selectedItem$: ValueEmitter<TItem | null>;
|
|
71
|
+
private readonly ownedSelectedItemEmitter;
|
|
72
|
+
constructor(config: SingleSelectionHandlerConfig<TItem>);
|
|
57
73
|
protected selectIndex(index: number): void;
|
|
74
|
+
getSelectedItem(): TItem | null;
|
|
75
|
+
destroy(): void;
|
|
58
76
|
}
|
|
59
77
|
export declare class MultiSelectionHandler<TItem = unknown> extends BaseSelectionHandler<TItem> {
|
|
60
78
|
protected selectIndex(index: number, event: SelectionEvent): void;
|
|
@@ -62,7 +80,8 @@ export declare class MultiSelectionHandler<TItem = unknown> extends BaseSelectio
|
|
|
62
80
|
protected supportsDragSelection(): boolean;
|
|
63
81
|
protected selectDragRange(startIndex: number, endIndex: number, event: MouseEvent): void;
|
|
64
82
|
}
|
|
65
|
-
export declare function createSelectionHandler<TItem>(config:
|
|
83
|
+
export declare function createSelectionHandler<TItem>(config: MultiSelectionHandlerConfig<TItem>): MultiSelectionHandler<TItem>;
|
|
84
|
+
export declare function createSelectionHandler<TItem>(config: SingleSelectionHandlerConfig<TItem>): SingleSelectionHandler<TItem>;
|
|
66
85
|
export declare function defaultItemKey<TItem>(item: TItem, index: number): unknown;
|
|
67
86
|
export {};
|
|
68
87
|
//# sourceMappingURL=selectionhandler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selectionhandler.d.ts","sourceRoot":"","sources":["../../../src/Components/data/selectionhandler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"selectionhandler.d.ts","sourceRoot":"","sources":["../../../src/Components/data/selectionhandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type { FetchLike, QueryHandlerLike, QuerySerializer, ReadableEmitter } from '@sylwellsoftware/glue';
|
|
1
|
+
import type { ReadableEmitter } from '@sylwellsoftware/glue';
|
|
3
2
|
import { Placeholder } from '../../Placeholder.js';
|
|
4
3
|
import { Component } from '../../component.js';
|
|
5
4
|
import type { ComponentProps, FrayChild } from '../../component.js';
|
|
@@ -9,28 +8,11 @@ import type { FilterModeValue } from '../../../util/filterMode.js';
|
|
|
9
8
|
import type { BaseSelectionHandler, ItemKeyGetter } from '../selectionhandler.js';
|
|
10
9
|
import { TableHeader } from './TableHeader.js';
|
|
11
10
|
import type { TableColumn, TableRow } from './TableHeaderCell.js';
|
|
11
|
+
import type { RestTableDataSourceOptions, TableDataSource, TableQueryInput } from './tableDataSource.js';
|
|
12
12
|
import type { TableFilters, TableSort } from './tableQuery.js';
|
|
13
|
-
|
|
14
|
-
sort: TableSort | null;
|
|
15
|
-
filters: TableFilters;
|
|
16
|
-
};
|
|
17
|
-
export type TableQueryInput<TRow extends TableRow = TableRow> = ReadableEmitter<readonly TRow[] | undefined, unknown> & {
|
|
18
|
-
retry?: (cause?: unknown) => unknown;
|
|
19
|
-
dispose?: () => void;
|
|
20
|
-
};
|
|
21
|
-
export interface DataTableProps<TRow extends TableRow = TableRow> extends ComponentProps {
|
|
22
|
-
mode: 'local' | 'remote';
|
|
13
|
+
interface DataTableCommonProps<TRow extends TableRow> extends ComponentProps {
|
|
23
14
|
columns: readonly TableColumn<TRow>[];
|
|
24
|
-
data?: readonly TRow[] | ReadableEmitter<readonly TRow[], unknown>;
|
|
25
|
-
query?: TableQueryInput<TRow>;
|
|
26
|
-
queryHandler?: QueryHandlerLike<TableQueryArguments, readonly TRow[]>;
|
|
27
|
-
queryUrl?: string;
|
|
28
|
-
baseUrl?: string;
|
|
29
|
-
fetch?: FetchLike<readonly TRow[]>;
|
|
30
|
-
serializeQuery?: QuerySerializer<TableQueryArguments>;
|
|
31
|
-
selectedItemsEmitter?: ValueEmitter<TRow[]>;
|
|
32
15
|
rowKey?: Extract<keyof TRow, string> | ItemKeyGetter<TRow>;
|
|
33
|
-
multiSelect?: boolean;
|
|
34
16
|
caption?: FrayChild;
|
|
35
17
|
emptyMessage?: FrayChild;
|
|
36
18
|
placeholderCount?: number;
|
|
@@ -38,35 +20,59 @@ export interface DataTableProps<TRow extends TableRow = TableRow> extends Compon
|
|
|
38
20
|
defaultSemanticState?: FilterModeValue;
|
|
39
21
|
onFilterChange?: (filters: TableFilters, event: Event | null) => void;
|
|
40
22
|
}
|
|
41
|
-
|
|
23
|
+
type DataTableInputProps<TRow extends TableRow> = {
|
|
24
|
+
data?: readonly TRow[] | ReadableEmitter<readonly TRow[], unknown>;
|
|
25
|
+
dataSource?: never;
|
|
26
|
+
rest?: never;
|
|
27
|
+
} | {
|
|
28
|
+
data?: never;
|
|
29
|
+
dataSource: TableDataSource<TRow>;
|
|
30
|
+
rest?: never;
|
|
31
|
+
} | {
|
|
32
|
+
data?: never;
|
|
33
|
+
dataSource?: never;
|
|
34
|
+
rest: Omit<RestTableDataSourceOptions<TRow>, 'owner' | 'sortEmitter' | 'filtersEmitter'>;
|
|
35
|
+
};
|
|
36
|
+
type DataTableSelectionProps<TRow extends TableRow> = {
|
|
37
|
+
multiSelect?: false;
|
|
38
|
+
selectedItemEmitter?: ValueEmitter<TRow | null>;
|
|
39
|
+
selectedItemsEmitter?: never;
|
|
40
|
+
} | {
|
|
41
|
+
multiSelect: true;
|
|
42
|
+
selectedItemsEmitter?: ValueEmitter<TRow[]>;
|
|
43
|
+
selectedItemEmitter?: never;
|
|
44
|
+
};
|
|
45
|
+
export type DataTableProps<TRow extends TableRow = TableRow> = DataTableCommonProps<TRow> & DataTableInputProps<TRow> & DataTableSelectionProps<TRow>;
|
|
46
|
+
/** Accessible table over an explicit local, caller-query, or REST data source. */
|
|
42
47
|
export declare class DataTable<TRow extends TableRow = TableRow> extends Component<DataTableProps<TRow>> {
|
|
43
48
|
readonly columns: readonly TableColumn<TRow>[];
|
|
44
49
|
readonly rowKey: ItemKeyGetter<TRow>;
|
|
45
|
-
readonly sortEmitter:
|
|
46
|
-
readonly filtersEmitter:
|
|
50
|
+
readonly sortEmitter: ValueEmitter<TableSort | null>;
|
|
51
|
+
readonly filtersEmitter: ValueEmitter<TableFilters>;
|
|
47
52
|
readonly selectedItemsEmitter: ValueEmitter<TRow[]>;
|
|
53
|
+
readonly selectedItemEmitter: ValueEmitter<TRow | null> | null;
|
|
48
54
|
readonly selectionHandler: BaseSelectionHandler<TRow>;
|
|
49
55
|
query: TableQueryInput<TRow> | null;
|
|
50
56
|
private dataSource;
|
|
51
|
-
private readonly
|
|
57
|
+
private readonly suppliedDataSource;
|
|
58
|
+
private readonly ownedSortEmitter;
|
|
59
|
+
private readonly ownedFiltersEmitter;
|
|
52
60
|
private ownedDataSource;
|
|
53
|
-
private ownsQuery;
|
|
54
|
-
private readonly queryArgs;
|
|
55
61
|
constructor(props: DataTableProps<TRow>);
|
|
56
62
|
initialize(): void;
|
|
57
|
-
private createLocalQuery;
|
|
58
|
-
private createRemoteQuery;
|
|
59
|
-
private createRestHandler;
|
|
60
63
|
render(): FrayChild;
|
|
61
64
|
private renderRow;
|
|
62
65
|
private renderPlaceholders;
|
|
63
66
|
afterUpdate(dom: ChildNode | null): void;
|
|
64
67
|
getSelectedRows(): TRow[];
|
|
65
68
|
getSelectedRowsEmitter(): ValueEmitter<TRow[]>;
|
|
69
|
+
getSelectedRow(): TRow | null;
|
|
70
|
+
getSelectedRowEmitter(): ValueEmitter<TRow | null> | null;
|
|
66
71
|
onDestroy(): void;
|
|
67
72
|
static dependencies: (typeof Placeholder | typeof TableHeader)[];
|
|
68
73
|
static hostName: string;
|
|
69
74
|
static standaloneHostName: string;
|
|
70
75
|
static css: string;
|
|
71
76
|
}
|
|
77
|
+
export {};
|
|
72
78
|
//# sourceMappingURL=DataTable.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataTable.d.ts","sourceRoot":"","sources":["../../../../src/Components/data/table/DataTable.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DataTable.d.ts","sourceRoot":"","sources":["../../../../src/Components/data/table/DataTable.tsx"],"names":[],"mappings":"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"}
|
|
@@ -21,12 +21,19 @@ export interface FilterPanelProps extends ComponentProps {
|
|
|
21
21
|
label?: string;
|
|
22
22
|
onChange?: (filters: Map<FilterValue, FilterModeValue>, event: Event | null) => void;
|
|
23
23
|
}
|
|
24
|
-
/**
|
|
24
|
+
/** Filter choices whose option data is always supplied by the caller. */
|
|
25
25
|
export declare class FilterPanel extends Component<FilterPanelProps> {
|
|
26
26
|
readonly optionsEmitter: ReadableEmitter<FilterOptions, unknown> | null;
|
|
27
|
+
private readonly optionStateEmitters;
|
|
28
|
+
private staleOptionValues;
|
|
29
|
+
private placementTimer;
|
|
27
30
|
constructor(props?: FilterPanelProps);
|
|
28
31
|
initialize(): void;
|
|
29
32
|
render(): FrayChild;
|
|
33
|
+
afterUpdate(dom: ChildNode | null): void;
|
|
34
|
+
onDestroy(): void;
|
|
35
|
+
private optionEmitter;
|
|
36
|
+
private placeInsideViewport;
|
|
30
37
|
static dependencies: (typeof Checkbox)[];
|
|
31
38
|
static hostName: string;
|
|
32
39
|
static standaloneHostName: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterPanel.d.ts","sourceRoot":"","sources":["../../../../src/Components/data/table/FilterPanel.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,uBAAuB,CAAA;AAE1D,OAAO,EAAC,SAAS,EAAM,MAAM,oBAAoB,CAAA;AACjD,OAAO,KAAK,EAAuB,cAAc,EAAE,SAAS,EAAC,MAAM,oBAAoB,CAAA;AAEvF,OAAO,EAAC,QAAQ,EAAC,MAAM,uCAAuC,CAAA;AAC9D,OAAO,KAAK,EAER,cAAc,EACjB,MAAM,uCAAuC,CAAA;AAE9C,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,6BAA6B,CAAA;AAEhE,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,CAAA;AAEzC,MAAM,WAAW,YAAY;IACzB,KAAK,EAAE,WAAW,CAAA;IAClB,KAAK,CAAC,EAAE,SAAS,CAAA;CACpB;AAED,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG,YAAY,CAAA;AAC1D,MAAM,MAAM,aAAa,GAAG,SAAS,iBAAiB,EAAE,CAAA;AACxD,MAAM,MAAM,mBAAmB,GAAG,aAAa,GAAG,eAAe,CAAC,aAAa,EAAE,OAAO,CAAC,CAAA;AACzF,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC,WAAW,EAAE,eAAe,CAAC,CAAA;AAEvE,MAAM,WAAW,gBAAiB,SAAQ,cAAc;IACpD,OAAO,CAAC,EAAE,mBAAmB,CAAA;IAC7B,OAAO,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC,EAAE,CAAA;IAChF,WAAW,CAAC,EAAE,SAAS,cAAc,CAAC,eAAe,CAAC,EAAE,CAAA;IACxD,oBAAoB,CAAC,EAAE,eAAe,CAAA;IACtC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,WAAW,EAAE,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,CAAA;CACvF;AAED,
|
|
1
|
+
{"version":3,"file":"FilterPanel.d.ts","sourceRoot":"","sources":["../../../../src/Components/data/table/FilterPanel.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,uBAAuB,CAAA;AAE1D,OAAO,EAAC,SAAS,EAAM,MAAM,oBAAoB,CAAA;AACjD,OAAO,KAAK,EAAuB,cAAc,EAAE,SAAS,EAAC,MAAM,oBAAoB,CAAA;AAEvF,OAAO,EAAC,QAAQ,EAAC,MAAM,uCAAuC,CAAA;AAC9D,OAAO,KAAK,EAER,cAAc,EACjB,MAAM,uCAAuC,CAAA;AAE9C,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,6BAA6B,CAAA;AAEhE,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,CAAA;AAEzC,MAAM,WAAW,YAAY;IACzB,KAAK,EAAE,WAAW,CAAA;IAClB,KAAK,CAAC,EAAE,SAAS,CAAA;CACpB;AAED,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG,YAAY,CAAA;AAC1D,MAAM,MAAM,aAAa,GAAG,SAAS,iBAAiB,EAAE,CAAA;AACxD,MAAM,MAAM,mBAAmB,GAAG,aAAa,GAAG,eAAe,CAAC,aAAa,EAAE,OAAO,CAAC,CAAA;AACzF,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC,WAAW,EAAE,eAAe,CAAC,CAAA;AAEvE,MAAM,WAAW,gBAAiB,SAAQ,cAAc;IACpD,OAAO,CAAC,EAAE,mBAAmB,CAAA;IAC7B,OAAO,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC,EAAE,CAAA;IAChF,WAAW,CAAC,EAAE,SAAS,cAAc,CAAC,eAAe,CAAC,EAAE,CAAA;IACxD,oBAAoB,CAAC,EAAE,eAAe,CAAA;IACtC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,WAAW,EAAE,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,CAAA;CACvF;AAED,yEAAyE;AACzE,qBAAa,WAAY,SAAQ,SAAS,CAAC,gBAAgB,CAAC;IACxD,QAAQ,CAAC,cAAc,EAAE,eAAe,CAAC,aAAa,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IACvE,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAmD;IACvF,OAAO,CAAC,iBAAiB,CAAyB;IAClD,OAAO,CAAC,cAAc,CAA6C;gBAEvD,KAAK,GAAE,gBAAqB;IAKxC,UAAU,IAAI,IAAI;IAIlB,MAAM,IAAI,SAAS;IA8DnB,WAAW,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI,GAAG,IAAI;IAaxC,SAAS,IAAI,IAAI;IAOjB,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,mBAAmB;IAsB3B,MAAM,CAAC,YAAY,sBAAa;IAEhC,OAAgB,QAAQ,SAAiB;IACzC,OAAgB,kBAAkB,SAAiB;IAEnD,MAAM,CAAC,GAAG,SAmBT;CACJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableHeaderCell.d.ts","sourceRoot":"","sources":["../../../../src/Components/data/table/TableHeaderCell.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAM,MAAM,oBAAoB,CAAA;AACjD,OAAO,KAAK,EAAC,cAAc,EAAE,SAAS,EAAC,MAAM,oBAAoB,CAAA;AACjE,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,uBAAuB,CAAA;AACvD,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,uCAAuC,CAAA;AACzE,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,6BAA6B,CAAA;AAChE,OAAO,EAAC,WAAW,EAAC,MAAM,kBAAkB,CAAA;AAC5C,OAAO,KAAK,EACR,mBAAmB,EACnB,eAAe,EAElB,MAAM,kBAAkB,CAAA;AACzB,OAAO,KAAK,EAAC,YAAY,EAAE,SAAS,EAAC,MAAM,iBAAiB,CAAA;AAE5D,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAE9C,MAAM,WAAW,eAAe;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,aAAa,CAAC,EAAE,mBAAmB,CAAA;CACtC;AAED,MAAM,WAAW,WAAW,CAAC,IAAI,SAAS,QAAQ,GAAG,QAAQ,CAAE,SAAQ,eAAe;IAClF,KAAK,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE,MAAM,CAAC,CAAA;IAClC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,SAAS,CAAA;CACnD;AAED,MAAM,WAAW,oBAAqB,SAAQ,cAAc,EAAE,eAAe;IACzE,WAAW,EAAE,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC,CAAA;IAC3C,cAAc,EAAE,YAAY,CAAC,YAAY,CAAC,CAAA;IAC1C,WAAW,CAAC,EAAE,SAAS,cAAc,CAAC,eAAe,CAAC,EAAE,CAAA;IACxD,oBAAoB,CAAC,EAAE,eAAe,CAAA;IACtC,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,CAAA;CACxE;AAED,qBAAa,eAAgB,SAAQ,SAAS,CAAC,oBAAoB,CAAC;IAChE,OAAO,CAAC,aAAa,CAAQ;IAE7B,UAAU,IAAI,IAAI;IAOlB,UAAU,IAAI,IAAI;IAYlB,iBAAiB,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAM1C,aAAa,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,IAAI;IAQ/D,MAAM,IAAI,SAAS;
|
|
1
|
+
{"version":3,"file":"TableHeaderCell.d.ts","sourceRoot":"","sources":["../../../../src/Components/data/table/TableHeaderCell.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAM,MAAM,oBAAoB,CAAA;AACjD,OAAO,KAAK,EAAC,cAAc,EAAE,SAAS,EAAC,MAAM,oBAAoB,CAAA;AACjE,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,uBAAuB,CAAA;AACvD,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,uCAAuC,CAAA;AACzE,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,6BAA6B,CAAA;AAChE,OAAO,EAAC,WAAW,EAAC,MAAM,kBAAkB,CAAA;AAC5C,OAAO,KAAK,EACR,mBAAmB,EACnB,eAAe,EAElB,MAAM,kBAAkB,CAAA;AACzB,OAAO,KAAK,EAAC,YAAY,EAAE,SAAS,EAAC,MAAM,iBAAiB,CAAA;AAE5D,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAE9C,MAAM,WAAW,eAAe;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,aAAa,CAAC,EAAE,mBAAmB,CAAA;CACtC;AAED,MAAM,WAAW,WAAW,CAAC,IAAI,SAAS,QAAQ,GAAG,QAAQ,CAAE,SAAQ,eAAe;IAClF,KAAK,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE,MAAM,CAAC,CAAA;IAClC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,SAAS,CAAA;CACnD;AAED,MAAM,WAAW,oBAAqB,SAAQ,cAAc,EAAE,eAAe;IACzE,WAAW,EAAE,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC,CAAA;IAC3C,cAAc,EAAE,YAAY,CAAC,YAAY,CAAC,CAAA;IAC1C,WAAW,CAAC,EAAE,SAAS,cAAc,CAAC,eAAe,CAAC,EAAE,CAAA;IACxD,oBAAoB,CAAC,EAAE,eAAe,CAAA;IACtC,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,CAAA;CACxE;AAED,qBAAa,eAAgB,SAAQ,SAAS,CAAC,oBAAoB,CAAC;IAChE,OAAO,CAAC,aAAa,CAAQ;IAE7B,UAAU,IAAI,IAAI;IAOlB,UAAU,IAAI,IAAI;IAYlB,iBAAiB,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAM1C,aAAa,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,IAAI;IAQ/D,MAAM,IAAI,SAAS;IA4DnB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAQ7B;IAED,MAAM,CAAC,YAAY,yBAAgB;IAEnC,MAAM,CAAC,UAAU,0BAIhB;IAED,MAAM,CAAC,GAAG,SA+BT;CACJ"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { FetchLike, QueryHandlerLike, QuerySerializer, ReadableEmitter } from '@sylwellsoftware/glue';
|
|
2
|
+
import type { ValueEmitter } from '../../controlUtils.js';
|
|
3
|
+
import type { TableRow } from './TableHeaderCell.js';
|
|
4
|
+
import type { TableFilters, TableSort } from './tableQuery.js';
|
|
5
|
+
export type TableQueryArguments = {
|
|
6
|
+
sort: TableSort | null;
|
|
7
|
+
filters: TableFilters;
|
|
8
|
+
};
|
|
9
|
+
export type TableQueryInput<TRow extends TableRow = TableRow> = ReadableEmitter<readonly TRow[] | undefined, unknown> & {
|
|
10
|
+
retry?: (cause?: unknown) => unknown;
|
|
11
|
+
dispose?: () => void;
|
|
12
|
+
};
|
|
13
|
+
export interface TableDataSource<TRow extends TableRow = TableRow> {
|
|
14
|
+
readonly query: TableQueryInput<TRow>;
|
|
15
|
+
readonly sortEmitter: ValueEmitter<TableSort | null>;
|
|
16
|
+
readonly filtersEmitter: ValueEmitter<TableFilters>;
|
|
17
|
+
readonly retry?: (cause?: unknown) => unknown;
|
|
18
|
+
dispose(): void;
|
|
19
|
+
}
|
|
20
|
+
interface TableStateOptions {
|
|
21
|
+
sortEmitter?: ValueEmitter<TableSort | null>;
|
|
22
|
+
filtersEmitter?: ValueEmitter<TableFilters>;
|
|
23
|
+
owner?: unknown;
|
|
24
|
+
}
|
|
25
|
+
export interface LocalTableDataSourceOptions<TRow extends TableRow> extends TableStateOptions {
|
|
26
|
+
data: readonly TRow[] | ReadableEmitter<readonly TRow[], unknown>;
|
|
27
|
+
}
|
|
28
|
+
export interface QueryTableDataSourceOptions<TRow extends TableRow> extends TableStateOptions {
|
|
29
|
+
query: TableQueryInput<TRow>;
|
|
30
|
+
}
|
|
31
|
+
export interface HandlerTableDataSourceOptions<TRow extends TableRow> extends TableStateOptions {
|
|
32
|
+
handler: QueryHandlerLike<TableQueryArguments, readonly TRow[]>;
|
|
33
|
+
}
|
|
34
|
+
export interface RestTableDataSourceOptions<TRow extends TableRow> extends TableStateOptions {
|
|
35
|
+
url: string;
|
|
36
|
+
baseUrl?: string;
|
|
37
|
+
fetch?: FetchLike<readonly TRow[]>;
|
|
38
|
+
serializeQuery?: QuerySerializer<TableQueryArguments>;
|
|
39
|
+
}
|
|
40
|
+
/** Create a source that applies table state to local data. The caller owns it. */
|
|
41
|
+
export declare function createLocalTableDataSource<TRow extends TableRow>(options: LocalTableDataSourceOptions<TRow>): TableDataSource<TRow>;
|
|
42
|
+
/** Package a caller-owned query with the sort/filter emitters that drive it. */
|
|
43
|
+
export declare function createQueryTableDataSource<TRow extends TableRow>(options: QueryTableDataSourceOptions<TRow>): TableDataSource<TRow>;
|
|
44
|
+
/** Create a LiveQuery-backed source from an application-supplied handler. */
|
|
45
|
+
export declare function createHandlerTableDataSource<TRow extends TableRow>(options: HandlerTableDataSourceOptions<TRow>): TableDataSource<TRow>;
|
|
46
|
+
/** Create the convenient REST-backed source. The caller owns the result. */
|
|
47
|
+
export declare function createRestTableDataSource<TRow extends TableRow>(options: RestTableDataSourceOptions<TRow>): TableDataSource<TRow>;
|
|
48
|
+
export {};
|
|
49
|
+
//# sourceMappingURL=tableDataSource.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tableDataSource.d.ts","sourceRoot":"","sources":["../../../../src/Components/data/table/tableDataSource.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,11 +13,15 @@ export interface TableQueryState {
|
|
|
13
13
|
sort?: TableSort | null;
|
|
14
14
|
filters?: TableFilters;
|
|
15
15
|
}
|
|
16
|
+
export declare const DefaultTableFilterEncoding: Readonly<Record<FilterModeValue, string>>;
|
|
16
17
|
/**
|
|
17
|
-
* Serialize Fray's
|
|
18
|
+
* Serialize Fray's compact remote-table wire format.
|
|
18
19
|
*
|
|
19
20
|
* - `sort=field:asc|desc`
|
|
20
|
-
* - repeated `filter=field:
|
|
21
|
+
* - repeated `filter=field:token:JSON(value)` entries
|
|
22
|
+
*
|
|
23
|
+
* Semantic modes deliberately remain separate from this compatibility wire
|
|
24
|
+
* encoding. Endpoints with another contract should inject their own serializer.
|
|
21
25
|
*/
|
|
22
26
|
export declare function serializeTableQuery<TUrl extends UrlLike>(url: TUrl, { sort, filters }?: TableQueryState): TUrl;
|
|
23
27
|
export declare function applyLocalTableState<TRow>(rows: readonly TRow[], sort: TableSort | null, filters: TableFilters): TRow[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tableQuery.d.ts","sourceRoot":"","sources":["../../../../src/Components/data/table/tableQuery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,uBAAuB,CAAA;AAGlD,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,6BAA6B,CAAA;AAEhE,MAAM,WAAW,SAAS;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,KAAK,GAAG,MAAM,CAAA;CAC5B;AAED,MAAM,MAAM,gBAAgB,CAAC,MAAM,GAAG,OAAO,IAAI,SAAS;IACtD,KAAK,EAAE,MAAM;IACb,IAAI,EAAE,eAAe;CACxB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAC,CAAA;AAEtE,MAAM,WAAW,eAAe;IAC5B,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;IACvB,OAAO,CAAC,EAAE,YAAY,CAAA;CACzB;AAED
|
|
1
|
+
{"version":3,"file":"tableQuery.d.ts","sourceRoot":"","sources":["../../../../src/Components/data/table/tableQuery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,uBAAuB,CAAA;AAGlD,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,6BAA6B,CAAA;AAEhE,MAAM,WAAW,SAAS;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,KAAK,GAAG,MAAM,CAAA;CAC5B;AAED,MAAM,MAAM,gBAAgB,CAAC,MAAM,GAAG,OAAO,IAAI,SAAS;IACtD,KAAK,EAAE,MAAM;IACb,IAAI,EAAE,eAAe;CACxB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAC,CAAA;AAEtE,MAAM,WAAW,eAAe;IAC5B,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;IACvB,OAAO,CAAC,EAAE,YAAY,CAAA;CACzB;AAED,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,CAKhF,CAAA;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,SAAS,OAAO,EACpD,GAAG,EAAE,IAAI,EACT,EAAC,IAAW,EAAE,OAAY,EAAC,GAAE,eAAoB,GAClD,IAAI,CAkBN;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EACrC,IAAI,EAAE,SAAS,IAAI,EAAE,EACrB,IAAI,EAAE,SAAS,GAAG,IAAI,EACtB,OAAO,EAAE,YAAY,GACtB,IAAI,EAAE,CAQR;AAmBD,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,IAAI,SAAS,CAOnE"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { DerivedEmitter } from '@sylwellsoftware/glue';
|
|
2
|
+
import type { ReadableEmitter } from '@sylwellsoftware/glue';
|
|
3
|
+
import type { Key } from '../../component.js';
|
|
4
|
+
import type { ValueEmitter } from '../../controlUtils.js';
|
|
5
|
+
import type { TreeNode } from './treeitem.js';
|
|
6
|
+
/** Validate a tree snapshot and reject keys that are not globally unique. */
|
|
7
|
+
export declare function assertTreeNodes<TValue>(value: unknown): asserts value is readonly TreeNode<TValue>[];
|
|
8
|
+
export declare function findTreeNode<TValue>(nodes: readonly TreeNode<TValue>[], key: Key): TreeNode<TValue> | null;
|
|
9
|
+
/**
|
|
10
|
+
* Project the current node for a key from complete root snapshots.
|
|
11
|
+
*
|
|
12
|
+
* The projection is read-only: application commands update the authoritative
|
|
13
|
+
* source, which causes the full tree and then this projection to recompute.
|
|
14
|
+
*/
|
|
15
|
+
export declare function deriveTreeNode<TValue>(nodes: ReadableEmitter<readonly TreeNode<TValue>[], unknown>, key: ReadableEmitter<Key | null, unknown>, owner?: unknown): DerivedEmitter<TreeNode<TValue> | null, readonly [
|
|
16
|
+
ReadableEmitter<readonly TreeNode<TValue>[], unknown>,
|
|
17
|
+
ReadableEmitter<Key | null, unknown>
|
|
18
|
+
]>;
|
|
19
|
+
/** Return a path-copied root snapshot, or the original array when no key exists. */
|
|
20
|
+
export declare function updateTreeNode<TValue>(nodes: readonly TreeNode<TValue>[], key: Key, update: (node: TreeNode<TValue>) => TreeNode<TValue>): readonly TreeNode<TValue>[];
|
|
21
|
+
/** Apply a path-copy update to an authoritative writable root emitter. */
|
|
22
|
+
export declare function updateWritableTreeNode<TValue>(nodes: ValueEmitter<readonly TreeNode<TValue>[]>, key: Key, update: (node: TreeNode<TValue>) => TreeNode<TValue>, cause?: unknown): boolean;
|
|
23
|
+
//# sourceMappingURL=treeModel.d.ts.map
|