@contember/bindx-dataview 0.1.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.
Files changed (114) hide show
  1. package/dist/DataGrid.d.ts +38 -0
  2. package/dist/DataGrid.d.ts.map +1 -0
  3. package/dist/DataViewContext.d.ts +39 -0
  4. package/dist/DataViewContext.d.ts.map +1 -0
  5. package/dist/DataViewKeyProvider.d.ts +8 -0
  6. package/dist/DataViewKeyProvider.d.ts.map +1 -0
  7. package/dist/HasManyDataGrid.d.ts +51 -0
  8. package/dist/HasManyDataGrid.d.ts.map +1 -0
  9. package/dist/columnLeaf.d.ts +72 -0
  10. package/dist/columnLeaf.d.ts.map +1 -0
  11. package/dist/columnTypes.d.ts +35 -0
  12. package/dist/columnTypes.d.ts.map +1 -0
  13. package/dist/columns.d.ts +115 -0
  14. package/dist/columns.d.ts.map +1 -0
  15. package/dist/contextHooks.d.ts +45 -0
  16. package/dist/contextHooks.d.ts.map +1 -0
  17. package/dist/createColumn.d.ts +37 -0
  18. package/dist/createColumn.d.ts.map +1 -0
  19. package/dist/createRelationColumn.d.ts +57 -0
  20. package/dist/createRelationColumn.d.ts.map +1 -0
  21. package/dist/dataAttribute.d.ts +6 -0
  22. package/dist/dataAttribute.d.ts.map +1 -0
  23. package/dist/export.d.ts +46 -0
  24. package/dist/export.d.ts.map +1 -0
  25. package/dist/filterComponents.d.ts +127 -0
  26. package/dist/filterComponents.d.ts.map +1 -0
  27. package/dist/filterContext.d.ts +10 -0
  28. package/dist/filterContext.d.ts.map +1 -0
  29. package/dist/filterHooks.d.ts +74 -0
  30. package/dist/filterHooks.d.ts.map +1 -0
  31. package/dist/filterScope.d.ts +54 -0
  32. package/dist/filterScope.d.ts.map +1 -0
  33. package/dist/filterWrappers.d.ts +66 -0
  34. package/dist/filterWrappers.d.ts.map +1 -0
  35. package/dist/index.d.ts +28 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/infiniteLoad.d.ts +32 -0
  38. package/dist/infiniteLoad.d.ts.map +1 -0
  39. package/dist/loaderComponents.d.ts +75 -0
  40. package/dist/loaderComponents.d.ts.map +1 -0
  41. package/dist/markers.d.ts +36 -0
  42. package/dist/markers.d.ts.map +1 -0
  43. package/dist/pagingComponents.d.ts +50 -0
  44. package/dist/pagingComponents.d.ts.map +1 -0
  45. package/dist/renderCellValue.d.ts +9 -0
  46. package/dist/renderCellValue.d.ts.map +1 -0
  47. package/dist/select/MultiSelect.d.ts +27 -0
  48. package/dist/select/MultiSelect.d.ts.map +1 -0
  49. package/dist/select/Select.d.ts +27 -0
  50. package/dist/select/Select.d.ts.map +1 -0
  51. package/dist/select/SelectDataView.d.ts +46 -0
  52. package/dist/select/SelectDataView.d.ts.map +1 -0
  53. package/dist/select/SelectEachValue.d.ts +20 -0
  54. package/dist/select/SelectEachValue.d.ts.map +1 -0
  55. package/dist/select/SelectItemTrigger.d.ts +25 -0
  56. package/dist/select/SelectItemTrigger.d.ts.map +1 -0
  57. package/dist/select/SelectOption.d.ts +23 -0
  58. package/dist/select/SelectOption.d.ts.map +1 -0
  59. package/dist/select/SelectPlaceholder.d.ts +16 -0
  60. package/dist/select/SelectPlaceholder.d.ts.map +1 -0
  61. package/dist/select/index.d.ts +9 -0
  62. package/dist/select/index.d.ts.map +1 -0
  63. package/dist/select/selectContext.d.ts +20 -0
  64. package/dist/select/selectContext.d.ts.map +1 -0
  65. package/dist/selectionComponents.d.ts +62 -0
  66. package/dist/selectionComponents.d.ts.map +1 -0
  67. package/dist/sortingComponents.d.ts +39 -0
  68. package/dist/sortingComponents.d.ts.map +1 -0
  69. package/dist/stateStorage.d.ts +20 -0
  70. package/dist/stateStorage.d.ts.map +1 -0
  71. package/dist/useDataGridSetup.d.ts +53 -0
  72. package/dist/useDataGridSetup.d.ts.map +1 -0
  73. package/dist/useDataView.d.ts +57 -0
  74. package/dist/useDataView.d.ts.map +1 -0
  75. package/dist/useDataViewState.d.ts +89 -0
  76. package/dist/useDataViewState.d.ts.map +1 -0
  77. package/package.json +33 -0
  78. package/src/DataGrid.tsx +173 -0
  79. package/src/DataViewContext.tsx +56 -0
  80. package/src/DataViewKeyProvider.tsx +16 -0
  81. package/src/HasManyDataGrid.tsx +319 -0
  82. package/src/columnLeaf.ts +148 -0
  83. package/src/columnTypes.ts +160 -0
  84. package/src/columns.tsx +306 -0
  85. package/src/contextHooks.ts +157 -0
  86. package/src/createColumn.ts +128 -0
  87. package/src/createRelationColumn.tsx +203 -0
  88. package/src/dataAttribute.ts +7 -0
  89. package/src/export.tsx +219 -0
  90. package/src/filterComponents.tsx +617 -0
  91. package/src/filterContext.ts +27 -0
  92. package/src/filterHooks.ts +386 -0
  93. package/src/filterScope.tsx +89 -0
  94. package/src/filterWrappers.tsx +187 -0
  95. package/src/index.ts +356 -0
  96. package/src/infiniteLoad.tsx +188 -0
  97. package/src/loaderComponents.tsx +239 -0
  98. package/src/markers.ts +54 -0
  99. package/src/pagingComponents.tsx +149 -0
  100. package/src/select/MultiSelect.tsx +88 -0
  101. package/src/select/Select.tsx +88 -0
  102. package/src/select/SelectDataView.tsx +231 -0
  103. package/src/select/SelectEachValue.tsx +34 -0
  104. package/src/select/SelectItemTrigger.tsx +51 -0
  105. package/src/select/SelectOption.tsx +40 -0
  106. package/src/select/SelectPlaceholder.tsx +22 -0
  107. package/src/select/index.ts +17 -0
  108. package/src/select/selectContext.ts +82 -0
  109. package/src/selectionComponents.tsx +160 -0
  110. package/src/sortingComponents.tsx +104 -0
  111. package/src/stateStorage.ts +188 -0
  112. package/src/useDataGridSetup.ts +230 -0
  113. package/src/useDataView.ts +148 -0
  114. package/src/useDataViewState.ts +404 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../src/export.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAA+D,MAAM,OAAO,CAAA;AAYnF,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;IACnB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IACjD,QAAQ,CAAC,OAAO,EAAE,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,EAAE,CAAA;CACvE;AAED,MAAM,WAAW,aAAa;IAC7B,MAAM,CAAC,IAAI,EAAE,iBAAiB,GAAG,YAAY,CAAA;CAC7C;AAMD,qBAAa,gBAAiB,YAAW,aAAa;IACrD,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,iBAAiB,GAAG,YAAY;CAqB1D;AAyCD,MAAM,WAAW,0BAA0B;IAC1C,qBAAqB;IACrB,QAAQ,EAAE,KAAK,CAAC,YAAY,CAAA;IAC5B,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,mCAAmC;IACnC,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,6EAA6E;IAC7E,WAAW,CAAC,EAAE,OAAO,CAAA;CACrB;AAED,eAAO,MAAM,qBAAqB,sGAoEjC,CAAA;AAOD,MAAM,WAAW,kBAAkB;IAClC,IAAI,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;CACxC;AAED,wBAAgB,uBAAuB,IAAI,MAAM,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAsBlF"}
@@ -0,0 +1,127 @@
1
+ /**
2
+ * Composable filter UI components using Radix Slot pattern.
3
+ *
4
+ * All trigger components use `@radix-ui/react-slot` for proper prop merging
5
+ * and `forwardRef` for ref forwarding. Filter names can be inferred from
6
+ * context (via DataViewTextFilter, DataViewFilterScope, etc.) or passed explicitly.
7
+ *
8
+ * Usage:
9
+ * ```tsx
10
+ * // With explicit name
11
+ * <DataViewTextFilterInput name="title">
12
+ * <input placeholder="Search..." />
13
+ * </DataViewTextFilterInput>
14
+ *
15
+ * // With context-inferred name
16
+ * <DataViewTextFilter field="title">
17
+ * <DataViewTextFilterInput>
18
+ * <input placeholder="Search..." />
19
+ * </DataViewTextFilterInput>
20
+ * <DataViewTextFilterMatchModeTrigger mode="contains">
21
+ * <button>Contains</button>
22
+ * </DataViewTextFilterMatchModeTrigger>
23
+ * </DataViewTextFilter>
24
+ * ```
25
+ */
26
+ import React, { type ReactElement, type ReactNode } from 'react';
27
+ import { type DataViewSetBooleanFilterAction, type DataViewSetEnumFilterAction, type DataViewSetRelationFilterAction, type DataViewSetNullFilterAction } from './filterHooks.js';
28
+ import type { TextFilterArtifact } from '@contember/bindx';
29
+ export { useDataViewFilter, } from './filterHooks.js';
30
+ export type { UseDataViewFilterResult as DataViewFilterState } from './filterHooks.js';
31
+ export interface DataViewTextFilterInputProps {
32
+ name?: string;
33
+ debounceMs?: number;
34
+ children: ReactElement;
35
+ }
36
+ export declare const DataViewTextFilterInput: React.ForwardRefExoticComponent<DataViewTextFilterInputProps & React.RefAttributes<HTMLInputElement>>;
37
+ export interface DataViewTextFilterMatchModeTriggerProps {
38
+ name?: string;
39
+ mode: TextFilterArtifact['mode'];
40
+ children: ReactElement;
41
+ }
42
+ export declare const DataViewTextFilterMatchModeTrigger: React.ForwardRefExoticComponent<DataViewTextFilterMatchModeTriggerProps & React.RefAttributes<HTMLButtonElement>>;
43
+ export interface DataViewTextFilterMatchModeLabelProps {
44
+ name?: string;
45
+ }
46
+ export declare function DataViewTextFilterMatchModeLabel({ name, }: DataViewTextFilterMatchModeLabelProps): ReactElement;
47
+ export interface DataViewTextFilterResetTriggerProps {
48
+ name?: string;
49
+ children: ReactElement;
50
+ }
51
+ export declare const DataViewTextFilterResetTrigger: React.ForwardRefExoticComponent<DataViewTextFilterResetTriggerProps & React.RefAttributes<HTMLButtonElement>>;
52
+ export interface DataViewNumberFilterInputProps {
53
+ name?: string;
54
+ type: 'from' | 'to';
55
+ allowFloat?: boolean;
56
+ children: ReactElement;
57
+ }
58
+ export declare const DataViewNumberFilterInput: React.ForwardRefExoticComponent<DataViewNumberFilterInputProps & React.RefAttributes<HTMLInputElement>>;
59
+ export interface DataViewDateFilterInputProps {
60
+ name?: string;
61
+ type: 'start' | 'end';
62
+ children: ReactElement;
63
+ }
64
+ export declare const DataViewDateFilterInput: React.ForwardRefExoticComponent<DataViewDateFilterInputProps & React.RefAttributes<HTMLInputElement>>;
65
+ export interface DataViewBooleanFilterTriggerProps {
66
+ name?: string;
67
+ value: boolean;
68
+ action?: DataViewSetBooleanFilterAction;
69
+ children: ReactElement;
70
+ }
71
+ export declare const DataViewBooleanFilterTrigger: React.ForwardRefExoticComponent<DataViewBooleanFilterTriggerProps & React.RefAttributes<HTMLButtonElement>>;
72
+ export interface DataViewEnumFilterTriggerProps {
73
+ name?: string;
74
+ value: string;
75
+ action?: DataViewSetEnumFilterAction;
76
+ children: ReactElement;
77
+ }
78
+ export declare const DataViewEnumFilterTrigger: React.ForwardRefExoticComponent<DataViewEnumFilterTriggerProps & React.RefAttributes<HTMLButtonElement>>;
79
+ export interface DataViewEnumFilterStateProps {
80
+ name?: string;
81
+ value: string;
82
+ children: (state: {
83
+ isIncluded: boolean;
84
+ isExcluded: boolean;
85
+ }) => ReactNode;
86
+ }
87
+ export declare function DataViewEnumFilterState({ name, value, children, }: DataViewEnumFilterStateProps): ReactElement;
88
+ export interface DataViewRelationFilterTriggerProps {
89
+ name?: string;
90
+ id: string;
91
+ action?: DataViewSetRelationFilterAction;
92
+ children: ReactElement;
93
+ }
94
+ export declare const DataViewRelationFilterTrigger: React.ForwardRefExoticComponent<DataViewRelationFilterTriggerProps & React.RefAttributes<HTMLButtonElement>>;
95
+ export interface DataViewRelationFilterStateProps {
96
+ name?: string;
97
+ id: string;
98
+ children: (state: {
99
+ isIncluded: boolean;
100
+ isExcluded: boolean;
101
+ }) => ReactNode;
102
+ }
103
+ export declare function DataViewRelationFilterState({ name, id, children, }: DataViewRelationFilterStateProps): ReactElement;
104
+ export interface DataViewNullFilterTriggerProps {
105
+ name?: string;
106
+ action: DataViewSetNullFilterAction;
107
+ children: ReactElement;
108
+ }
109
+ export declare const DataViewNullFilterTrigger: React.ForwardRefExoticComponent<DataViewNullFilterTriggerProps & React.RefAttributes<HTMLButtonElement>>;
110
+ export interface DataViewFilterResetTriggerProps {
111
+ name?: string;
112
+ children: ReactElement;
113
+ }
114
+ export declare const DataViewFilterResetTrigger: React.ForwardRefExoticComponent<DataViewFilterResetTriggerProps & React.RefAttributes<HTMLButtonElement>>;
115
+ export interface DataViewDateFilterResetTriggerProps {
116
+ name?: string;
117
+ /** Which part to reset: 'start', 'end', or undefined (both) */
118
+ type?: 'start' | 'end';
119
+ children: ReactElement;
120
+ }
121
+ export declare const DataViewDateFilterResetTrigger: React.ForwardRefExoticComponent<DataViewDateFilterResetTriggerProps & React.RefAttributes<HTMLButtonElement>>;
122
+ export interface DataViewNumberFilterResetTriggerProps {
123
+ name?: string;
124
+ children: ReactElement;
125
+ }
126
+ export declare const DataViewNumberFilterResetTrigger: React.ForwardRefExoticComponent<DataViewNumberFilterResetTriggerProps & React.RefAttributes<HTMLButtonElement>>;
127
+ //# sourceMappingURL=filterComponents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filterComponents.d.ts","sourceRoot":"","sources":["../src/filterComponents.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Filter name context — provides the current filter name to descendant components.
3
+ *
4
+ * Used by DataViewTextFilter, DataViewBooleanFilter, etc. to scope
5
+ * trigger components so they don't need an explicit `name` prop.
6
+ */
7
+ export declare function useDataViewFilterName(): string;
8
+ export declare function useOptionalDataViewFilterName(): string | null;
9
+ export declare const DataViewFilterNameProvider: import("react").Provider<string | null>;
10
+ //# sourceMappingURL=filterContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filterContext.d.ts","sourceRoot":"","sources":["../src/filterContext.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,wBAAgB,qBAAqB,IAAI,MAAM,CAS9C;AAED,wBAAgB,6BAA6B,IAAI,MAAM,GAAG,IAAI,CAE7D;AAED,eAAO,MAAM,0BAA0B,yCAAqC,CAAA"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Filter hooks — typed state access and action hooks for filter components.
3
+ *
4
+ * These hooks match the Contember react-dataview API:
5
+ * - useDataViewFilter: generic [state, setFilter, meta] tuple
6
+ * - useDataViewBooleanFilter: [current, set] with action types
7
+ * - useDataViewEnumFilter: [current, set] with include/exclude/toggle actions
8
+ * - useDataViewRelationFilter: [current, set] with include/exclude/toggle actions
9
+ * - useDataViewTextFilterInput: { value, onChange } with debounce
10
+ * - useDataViewTextFilterMatchMode: [isCurrent, set]
11
+ * - useDataViewNullFilter: [state, set] with include/exclude/toggle actions
12
+ */
13
+ import { type ChangeEvent, type SetStateAction } from 'react';
14
+ import type { FilterArtifact, TextFilterArtifact } from '@contember/bindx';
15
+ export type UseDataViewFilterResult<T extends FilterArtifact> = [
16
+ state: T | undefined,
17
+ setFilter: (filter: SetStateAction<T | undefined>) => void,
18
+ meta: {
19
+ isEmpty?: boolean;
20
+ }
21
+ ];
22
+ export declare function useDataViewFilter<T extends FilterArtifact>(key: string): UseDataViewFilterResult<T>;
23
+ export type DataViewSetBooleanFilterAction = 'include' | 'unset' | 'toggle';
24
+ export type DataViewBooleanFilterCurrent = 'include' | 'none';
25
+ export type UseDataViewBooleanFilterResult = [
26
+ current: DataViewBooleanFilterCurrent,
27
+ set: (action: DataViewSetBooleanFilterAction) => void
28
+ ];
29
+ export declare function useDataViewBooleanFilter(name: string, value: boolean): UseDataViewBooleanFilterResult;
30
+ export declare function useDataViewBooleanFilterFactory(name: string): (value: boolean) => UseDataViewBooleanFilterResult;
31
+ export type DataViewSetEnumFilterAction = 'include' | 'exclude' | 'unset' | 'toggleInclude' | 'toggleExclude';
32
+ export type DataViewEnumFilterCurrent = 'include' | 'exclude' | 'none';
33
+ export type UseDataViewEnumFilterResult = [
34
+ current: DataViewEnumFilterCurrent,
35
+ set: (action: DataViewSetEnumFilterAction) => void
36
+ ];
37
+ export declare function useDataViewEnumFilter(name: string, value: string): UseDataViewEnumFilterResult;
38
+ export declare function useDataViewEnumFilterFactory(name: string): (value: string) => UseDataViewEnumFilterResult;
39
+ export type DataViewSetRelationFilterAction = 'include' | 'exclude' | 'unset' | 'toggleInclude' | 'toggleExclude';
40
+ export type DataViewRelationFilterCurrent = 'include' | 'exclude' | 'none';
41
+ export type UseDataViewRelationFilterResult = [
42
+ current: DataViewRelationFilterCurrent,
43
+ set: (action: DataViewSetRelationFilterAction) => void
44
+ ];
45
+ export declare function useDataViewRelationFilter(name: string, entityId: string): UseDataViewRelationFilterResult;
46
+ export declare function useDataViewRelationFilterFactory(name: string): (id: string) => UseDataViewRelationFilterResult;
47
+ export interface UseDataViewTextFilterInputResult {
48
+ value: string;
49
+ onChange: (e: ChangeEvent<HTMLInputElement>) => void;
50
+ }
51
+ export declare function useDataViewTextFilterInput({ name, debounceMs }: {
52
+ name: string;
53
+ debounceMs?: number;
54
+ }): UseDataViewTextFilterInputResult;
55
+ export type UseDataViewTextFilterMatchModeResult = [isCurrent: boolean, set: () => void];
56
+ export declare function useDataViewTextFilterMatchMode(name: string, mode: TextFilterArtifact['mode']): UseDataViewTextFilterMatchModeResult;
57
+ export interface UseDataViewNumberFilterInputResult {
58
+ value: string;
59
+ onChange: (e: ChangeEvent<HTMLInputElement>) => void;
60
+ }
61
+ export interface UseDataViewNumberFilterInputProps {
62
+ name: string;
63
+ type: 'from' | 'to';
64
+ allowFloat?: boolean;
65
+ }
66
+ export declare function useDataViewNumberFilterInput({ name, type, allowFloat }: UseDataViewNumberFilterInputProps): UseDataViewNumberFilterInputResult;
67
+ export type DataViewSetNullFilterAction = 'include' | 'exclude' | 'unset' | 'toggleInclude' | 'toggleExclude';
68
+ export type DataViewNullFilterState = 'include' | 'exclude' | 'none';
69
+ export type UseDataViewNullFilterResult = [
70
+ state: DataViewNullFilterState,
71
+ set: (action: DataViewSetNullFilterAction) => void
72
+ ];
73
+ export declare function useDataViewNullFilter(name: string): UseDataViewNullFilterResult;
74
+ //# sourceMappingURL=filterHooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filterHooks.d.ts","sourceRoot":"","sources":["../src/filterHooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,cAAc,EAAqD,MAAM,OAAO,CAAA;AAEhH,OAAO,KAAK,EACX,cAAc,EACd,kBAAkB,EAKlB,MAAM,kBAAkB,CAAA;AAMzB,MAAM,MAAM,uBAAuB,CAAC,CAAC,SAAS,cAAc,IAAI;IAC/D,KAAK,EAAE,CAAC,GAAG,SAAS;IACpB,SAAS,EAAE,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,IAAI;IAC1D,IAAI,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE;CAC3B,CAAA;AAED,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,cAAc,EAAE,GAAG,EAAE,MAAM,GAAG,uBAAuB,CAAC,CAAC,CAAC,CA0BnG;AAMD,MAAM,MAAM,8BAA8B,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAA;AAC3E,MAAM,MAAM,4BAA4B,GAAG,SAAS,GAAG,MAAM,CAAA;AAC7D,MAAM,MAAM,8BAA8B,GAAG;IAC5C,OAAO,EAAE,4BAA4B;IACrC,GAAG,EAAE,CAAC,MAAM,EAAE,8BAA8B,KAAK,IAAI;CACrD,CAAA;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,8BAA8B,CAGrG;AAED,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,8BAA8B,CAuBhH;AAMD,MAAM,MAAM,2BAA2B,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,eAAe,GAAG,eAAe,CAAA;AAC7G,MAAM,MAAM,yBAAyB,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAA;AACtE,MAAM,MAAM,2BAA2B,GAAG;IACzC,OAAO,EAAE,yBAAyB;IAClC,GAAG,EAAE,CAAC,MAAM,EAAE,2BAA2B,KAAK,IAAI;CAClD,CAAA;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,2BAA2B,CAG9F;AAED,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,2BAA2B,CAwDzG;AAMD,MAAM,MAAM,+BAA+B,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,eAAe,GAAG,eAAe,CAAA;AACjH,MAAM,MAAM,6BAA6B,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAA;AAC1E,MAAM,MAAM,+BAA+B,GAAG;IAC7C,OAAO,EAAE,6BAA6B;IACtC,GAAG,EAAE,CAAC,MAAM,EAAE,+BAA+B,KAAK,IAAI;CACtD,CAAA;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,+BAA+B,CAGzG;AAED,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,EAAE,EAAE,MAAM,KAAK,+BAA+B,CAwD9G;AAMD,MAAM,WAAW,gCAAgC;IAChD,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAA;CACpD;AAED,wBAAgB,0BAA0B,CAAC,EAAE,IAAI,EAAE,UAAgB,EAAE,EAAE;IACtE,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,CAAC,EAAE,MAAM,CAAA;CACnB,GAAG,gCAAgC,CA0BnC;AAMD,MAAM,MAAM,oCAAoC,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,IAAI,CAAC,CAAA;AAExF,wBAAgB,8BAA8B,CAC7C,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,GAC9B,oCAAoC,CAQtC;AAMD,MAAM,WAAW,kCAAkC;IAClD,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAA;CACpD;AAED,MAAM,WAAW,iCAAiC;IACjD,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,UAAU,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,wBAAgB,4BAA4B,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,iCAAiC,GAAG,kCAAkC,CAiB9I;AAMD,MAAM,MAAM,2BAA2B,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,eAAe,GAAG,eAAe,CAAA;AAC7G,MAAM,MAAM,uBAAuB,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAA;AACpE,MAAM,MAAM,2BAA2B,GAAG;IACzC,KAAK,EAAE,uBAAuB;IAC9B,GAAG,EAAE,CAAC,MAAM,EAAE,2BAA2B,KAAK,IAAI;CAClD,CAAA;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,2BAA2B,CA8B/E"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Filter scope components — declarative filter registration and name scoping.
3
+ *
4
+ * Usage:
5
+ * ```tsx
6
+ * <DataViewFilterScope name="title">
7
+ * <DataViewTextFilterInput />
8
+ * </DataViewFilterScope>
9
+ *
10
+ * <DataViewFilter name="title" filterHandler={createTextFilterHandler('title')}>
11
+ * <DataViewTextFilterInput />
12
+ * </DataViewFilter>
13
+ *
14
+ * <DataViewTextFilter field="title">
15
+ * <DataViewTextFilterInput />
16
+ * </DataViewTextFilter>
17
+ *
18
+ * <DataViewHasFilterType name="title">
19
+ * <span>Title filter is available</span>
20
+ * </DataViewHasFilterType>
21
+ * ```
22
+ */
23
+ import React, { type ReactElement } from 'react';
24
+ import type { FilterHandler, FilterArtifact } from '@contember/bindx';
25
+ export interface DataViewFilterScopeProps {
26
+ name: string;
27
+ children: React.ReactNode;
28
+ }
29
+ /**
30
+ * Sets the filter name context for all children.
31
+ * Child filter triggers will infer their filter name from this scope.
32
+ */
33
+ export declare function DataViewFilterScope({ name, children }: DataViewFilterScopeProps): ReactElement;
34
+ export interface DataViewFilterProps {
35
+ name: string;
36
+ filterHandler: FilterHandler<FilterArtifact>;
37
+ children?: React.ReactNode;
38
+ }
39
+ /**
40
+ * Registers a filter handler and sets the filter name context.
41
+ *
42
+ * Note: When used inside a DataGrid, filters are already registered
43
+ * from column definitions. This component then just provides the name scope.
44
+ */
45
+ export declare function DataViewFilter({ name, children }: DataViewFilterProps): ReactElement;
46
+ export interface DataViewHasFilterTypeProps {
47
+ name: string;
48
+ children: React.ReactNode;
49
+ }
50
+ /**
51
+ * Renders children only if a filter with the given name is registered.
52
+ */
53
+ export declare function DataViewHasFilterType({ name, children }: DataViewHasFilterTypeProps): ReactElement | null;
54
+ //# sourceMappingURL=filterScope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filterScope.d.ts","sourceRoot":"","sources":["../src/filterScope.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,EAAE,KAAK,YAAY,EAAE,MAAM,OAAO,CAAA;AAGhD,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAMrE,MAAM,WAAW,wBAAwB;IACxC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CACzB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,wBAAwB,GAAG,YAAY,CAM9F;AAMD,MAAM,WAAW,mBAAmB;IACnC,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,EAAE,aAAa,CAAC,cAAc,CAAC,CAAA;IAC5C,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,mBAAmB,GAAG,YAAY,CAMpF;AAMD,MAAM,WAAW,0BAA0B;IAC1C,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CACzB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,0BAA0B,GAAG,YAAY,GAAG,IAAI,CAGzG"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Typed filter wrapper components — provide filter name scope for specific filter types.
3
+ *
4
+ * Each wrapper sets the filter name context so child trigger components
5
+ * can infer their filter name automatically.
6
+ *
7
+ * Usage:
8
+ * ```tsx
9
+ * <DataViewTextFilter field={it.title}>
10
+ * <DataViewTextFilterInput />
11
+ * <DataViewTextFilterMatchModeTrigger mode="contains">
12
+ * <button>Contains</button>
13
+ * </DataViewTextFilterMatchModeTrigger>
14
+ * </DataViewTextFilter>
15
+ *
16
+ * <DataViewBooleanFilter field={it.published}>
17
+ * <DataViewBooleanFilterTrigger value={true} action="toggle">
18
+ * <button>Published</button>
19
+ * </DataViewBooleanFilterTrigger>
20
+ * </DataViewBooleanFilter>
21
+ * ```
22
+ */
23
+ import React, { type ReactElement } from 'react';
24
+ import type { FieldRefBase } from '@contember/bindx';
25
+ interface FilterWrapperProps<T> {
26
+ field: FieldRefBase<T>;
27
+ name?: string;
28
+ children: React.ReactNode;
29
+ }
30
+ export interface DataViewTextFilterProps<T> extends FilterWrapperProps<T> {
31
+ }
32
+ export declare function DataViewTextFilter<T>({ field, name, children }: DataViewTextFilterProps<T>): ReactElement;
33
+ export interface DataViewBooleanFilterProps<T> extends FilterWrapperProps<T> {
34
+ }
35
+ export declare function DataViewBooleanFilter<T>({ field, name, children }: DataViewBooleanFilterProps<T>): ReactElement;
36
+ export interface DataViewNumberFilterProps<T> extends FilterWrapperProps<T> {
37
+ }
38
+ export declare function DataViewNumberFilter<T>({ field, name, children }: DataViewNumberFilterProps<T>): ReactElement;
39
+ export interface DataViewDateFilterProps<T> extends FilterWrapperProps<T> {
40
+ }
41
+ export declare function DataViewDateFilter<T>({ field, name, children }: DataViewDateFilterProps<T>): ReactElement;
42
+ export interface DataViewEnumFilterProps<T> extends FilterWrapperProps<T> {
43
+ }
44
+ export declare function DataViewEnumFilter<T>({ field, name, children }: DataViewEnumFilterProps<T>): ReactElement;
45
+ export interface DataViewEnumListFilterProps<T> extends FilterWrapperProps<T> {
46
+ }
47
+ export declare function DataViewEnumListFilter<T>({ field, name, children }: DataViewEnumListFilterProps<T>): ReactElement;
48
+ export interface DataViewHasOneFilterProps<T> extends FilterWrapperProps<T> {
49
+ }
50
+ export declare function DataViewHasOneFilter<T>({ field, name, children }: DataViewHasOneFilterProps<T>): ReactElement;
51
+ export interface DataViewHasManyFilterProps<T> extends FilterWrapperProps<T> {
52
+ }
53
+ export declare function DataViewHasManyFilter<T>({ field, name, children }: DataViewHasManyFilterProps<T>): ReactElement;
54
+ export interface DataViewIsDefinedFilterProps<T> extends FilterWrapperProps<T> {
55
+ }
56
+ export declare function DataViewIsDefinedFilter<T>({ field, name, children }: DataViewIsDefinedFilterProps<T>): ReactElement;
57
+ export interface DataViewUnionTextFilterProps<T> {
58
+ /** Single field or array of fields to search across */
59
+ fields: FieldRefBase<T> | FieldRefBase<T>[];
60
+ /** Required unique filter name */
61
+ name: string;
62
+ children: React.ReactNode;
63
+ }
64
+ export declare function DataViewUnionTextFilter<T>({ name, children }: DataViewUnionTextFilterProps<T>): ReactElement;
65
+ export {};
66
+ //# sourceMappingURL=filterWrappers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filterWrappers.d.ts","sourceRoot":"","sources":["../src/filterWrappers.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ export { DataGrid, type DataGridProps, QUERY_FILTER_NAME } from './DataGrid.js';
2
+ export { HasManyDataGrid, type HasManyDataGridProps } from './HasManyDataGrid.js';
3
+ export { defineColumnType, type ColumnTypeDef, textColumnDef, numberColumnDef, dateColumnDef, dateTimeColumnDef, booleanColumnDef, enumColumnDef, enumListColumnDef, uuidColumnDef, isDefinedColumnDef, hasOneColumnDef, hasManyColumnDef, accessField, } from './columnTypes.js';
4
+ export { ColumnLeaf, type ColumnLeafProps, extractColumnLeaves, analyzeChildren, type ChildrenAnalysisResult, } from './columnLeaf.js';
5
+ export { DataGridToolbarContent, type DataGridToolbarContentProps, DataGridLayout, type DataGridLayoutProps, } from './markers.js';
6
+ export { createColumn, type ColumnRenderProps, type FilterRenderProps, type CreateColumnConfig, type ColumnComponentProps, type ColumnComponent, } from './createColumn.js';
7
+ export { createRelationColumn, hasOneCellConfig, hasManyCellConfig, type RelationColumnConfig, type RelationFilterContext, type RelationCellWrapperContext, type RelationColumnProps, type RelationColumnComponent, } from './createRelationColumn.jsx';
8
+ export { DataGridTextColumn, DataGridNumberColumn, DataGridDateColumn, DataGridDateTimeColumn, DataGridBooleanColumn, DataGridEnumColumn, DataGridEnumListColumn, DataGridUuidColumn, DataGridIsDefinedColumn, DataGridHasOneColumn, DataGridHasManyColumn, DataGridActionColumn, DataGridColumn, type DataGridTextColumnProps, type DataGridNumberColumnProps, type DataGridDateColumnProps, type DataGridDateTimeColumnProps, type DataGridBooleanColumnProps, type DataGridEnumColumnProps, type DataGridEnumListColumnProps, type DataGridUuidColumnProps, type DataGridIsDefinedColumnProps, type DataGridHasOneColumnProps, type DataGridHasManyColumnProps, type DataGridActionColumnProps, type DataGridColumnProps, type ColumnMeta, extractFieldName, extractRelatedEntityName, hasFieldRefMeta, getRelatedAccessor, } from './columns.js';
9
+ export { useFilteringState, useSortingState, usePagingState, useSelectionState, type FilteringState, type RegisteredFilter, type UseFilteringOptions, type UseSortingOptions, type SortingStateResult, type UsePagingOptions, type PagingStateResult, type UseSelectionOptions, type SelectionStateResult, } from './useDataViewState.js';
10
+ export { useDataViewContext, useOptionalDataViewContext, DataViewProvider, type DataViewContextValue, type DataViewItem, type DataViewLoaderState as DataViewLoaderStateType, type DataViewElementData, } from './DataViewContext.js';
11
+ export { useDataView, type UseDataViewOptions, type DataViewResult } from './useDataView.js';
12
+ export { dataAttribute } from './dataAttribute.js';
13
+ export { useDataViewFilterName, useOptionalDataViewFilterName, DataViewFilterNameProvider, } from './filterContext.js';
14
+ export { DataViewFilterScope, type DataViewFilterScopeProps, DataViewFilter, type DataViewFilterProps, DataViewHasFilterType, type DataViewHasFilterTypeProps, } from './filterScope.js';
15
+ export { DataViewTextFilter, type DataViewTextFilterProps, DataViewBooleanFilter, type DataViewBooleanFilterProps, DataViewNumberFilter, type DataViewNumberFilterProps, DataViewDateFilter, type DataViewDateFilterProps, DataViewEnumFilter, type DataViewEnumFilterProps, DataViewEnumListFilter, type DataViewEnumListFilterProps, DataViewHasOneFilter, type DataViewHasOneFilterProps, DataViewHasManyFilter, type DataViewHasManyFilterProps, DataViewIsDefinedFilter, type DataViewIsDefinedFilterProps, DataViewUnionTextFilter, type DataViewUnionTextFilterProps, } from './filterWrappers.js';
16
+ export { useDataViewFilter, type UseDataViewFilterResult, useDataViewBooleanFilter, useDataViewBooleanFilterFactory, type DataViewSetBooleanFilterAction, type DataViewBooleanFilterCurrent, type UseDataViewBooleanFilterResult, useDataViewEnumFilter, useDataViewEnumFilterFactory, type DataViewSetEnumFilterAction, type DataViewEnumFilterCurrent, type UseDataViewEnumFilterResult, useDataViewRelationFilter, useDataViewRelationFilterFactory, type DataViewSetRelationFilterAction, type DataViewRelationFilterCurrent, type UseDataViewRelationFilterResult, useDataViewTextFilterInput, type UseDataViewTextFilterInputResult, useDataViewTextFilterMatchMode, type UseDataViewTextFilterMatchModeResult, useDataViewNumberFilterInput, type UseDataViewNumberFilterInputResult, type UseDataViewNumberFilterInputProps, useDataViewNullFilter, type DataViewSetNullFilterAction, type DataViewNullFilterState, type UseDataViewNullFilterResult, } from './filterHooks.js';
17
+ export { type DataViewFilterState, DataViewTextFilterInput, type DataViewTextFilterInputProps, DataViewTextFilterMatchModeTrigger, type DataViewTextFilterMatchModeTriggerProps, DataViewTextFilterMatchModeLabel, type DataViewTextFilterMatchModeLabelProps, DataViewTextFilterResetTrigger, type DataViewTextFilterResetTriggerProps, DataViewNumberFilterInput, type DataViewNumberFilterInputProps, DataViewDateFilterInput, type DataViewDateFilterInputProps, DataViewBooleanFilterTrigger, type DataViewBooleanFilterTriggerProps, DataViewEnumFilterTrigger, type DataViewEnumFilterTriggerProps, DataViewEnumFilterState, type DataViewEnumFilterStateProps, DataViewRelationFilterTrigger, type DataViewRelationFilterTriggerProps, DataViewRelationFilterState, type DataViewRelationFilterStateProps, DataViewNullFilterTrigger, type DataViewNullFilterTriggerProps, DataViewFilterResetTrigger, type DataViewFilterResetTriggerProps, DataViewDateFilterResetTrigger, type DataViewDateFilterResetTriggerProps, DataViewNumberFilterResetTrigger, type DataViewNumberFilterResetTriggerProps, } from './filterComponents.js';
18
+ export { DataViewSortingTrigger, type DataViewSortingTriggerProps, DataViewSortingSwitch, type DataViewSortingSwitchProps, } from './sortingComponents.js';
19
+ export { DataViewChangePageTrigger, type DataViewChangePageTriggerProps, DataViewSetItemsPerPageTrigger, type DataViewSetItemsPerPageTriggerProps, DataViewPagingStateView, type DataViewPagingStateViewProps, DataViewPagingInfo, type DataViewPagingInfoProps, } from './pagingComponents.js';
20
+ export { DataViewVisibilityTrigger, type DataViewVisibilityTriggerProps, DataViewElement, DataViewIsVisible, type DataViewElementProps, DataViewLayout, type DataViewLayoutProps, DataViewLayoutTrigger, type DataViewLayoutTriggerProps, } from './selectionComponents.js';
21
+ export { DataViewExportTrigger, type DataViewExportTriggerProps, CsvExportFactory, type ExportFactory, type ExportResult, type ExportFactoryArgs, useDataViewFetchAllData, type FetchAllDataResult, } from './export.js';
22
+ export { DataViewInfiniteLoadProvider, type DataViewInfiniteLoadProviderProps, DataViewInfiniteLoadTrigger, type DataViewInfiniteLoadTriggerProps, DataViewInfiniteLoadScrollObserver, type DataViewInfiniteLoadScrollObserverProps, useDataViewInfiniteLoadTrigger, } from './infiniteLoad.js';
23
+ export { DataViewReloadTrigger, type DataViewReloadTriggerProps, DataViewLoaderState, type DataViewLoaderStateProps, DataViewLoaderStateSwitch, type DataViewLoaderStateSwitchProps, useDataViewLoaderState, useDataViewReload, useDataViewHighlightIndex, DataViewEmpty, type DataViewEmptyProps, DataViewNonEmpty, type DataViewNonEmptyProps, DataViewEachRow, type DataViewEachRowProps, DataViewHighlightRow, type DataViewHighlightRowProps, DataViewKeyboardEventHandler, type DataViewKeyboardEventHandlerProps, } from './loaderComponents.js';
24
+ export { useDataViewSortingState, useDataViewSortingMethods, useDataViewSortingDirection, type DataViewSortingMethods, useDataViewPagingState, useDataViewPagingInfo, useDataViewPagingMethods, type DataViewPagingMethods, useDataViewFilteringState, useDataViewFilteringMethods, useDataViewFilterHandlerRegistry, type DataViewFilteringMethods, useDataViewSelectionState, useDataViewSelectionMethods, type DataViewSelectionState, type DataViewSelectionMethods, useDataViewElements, } from './contextHooks.js';
25
+ export { type StateStorage, type StateStorageOrName, type SetStoredState, useStoredState, buildDataViewKey, } from './stateStorage.js';
26
+ export { DataViewKeyProvider, type DataViewKeyProviderProps, useDataViewKey, } from './DataViewKeyProvider.js';
27
+ export * from './select/index.js';
28
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Infinite scroll / load-more components using Radix Slot.
3
+ *
4
+ * Usage:
5
+ * ```tsx
6
+ * <DataViewInfiniteLoadProvider>
7
+ * <DataViewEachRow>
8
+ * {(item) => <div>{item.title}</div>}
9
+ * </DataViewEachRow>
10
+ * <DataViewInfiniteLoadTrigger>
11
+ * <button>Load More</button>
12
+ * </DataViewInfiniteLoadTrigger>
13
+ * <DataViewInfiniteLoadScrollObserver />
14
+ * </DataViewInfiniteLoadProvider>
15
+ * ```
16
+ */
17
+ import React, { type ReactElement } from 'react';
18
+ export interface DataViewInfiniteLoadProviderProps {
19
+ children: React.ReactNode;
20
+ }
21
+ export declare function DataViewInfiniteLoadProvider({ children, }: DataViewInfiniteLoadProviderProps): ReactElement;
22
+ export interface DataViewInfiniteLoadTriggerProps {
23
+ children: ReactElement;
24
+ }
25
+ export declare const DataViewInfiniteLoadTrigger: React.ForwardRefExoticComponent<DataViewInfiniteLoadTriggerProps & React.RefAttributes<HTMLButtonElement>>;
26
+ export interface DataViewInfiniteLoadScrollObserverProps {
27
+ /** Root margin for IntersectionObserver. Default: '200px' */
28
+ rootMargin?: string;
29
+ }
30
+ export declare function DataViewInfiniteLoadScrollObserver({ rootMargin, }?: DataViewInfiniteLoadScrollObserverProps): ReactElement;
31
+ export declare function useDataViewInfiniteLoadTrigger(): (() => void) | undefined;
32
+ //# sourceMappingURL=infiniteLoad.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"infiniteLoad.d.ts","sourceRoot":"","sources":["../src/infiniteLoad.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,EAA4F,KAAK,YAAY,EAAE,MAAM,OAAO,CAAA;AAiC1I,MAAM,WAAW,iCAAiC;IACjD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CACzB;AAED,wBAAgB,4BAA4B,CAAC,EAC5C,QAAQ,GACR,EAAE,iCAAiC,GAAG,YAAY,CA2DlD;AAMD,MAAM,WAAW,gCAAgC;IAChD,QAAQ,EAAE,YAAY,CAAA;CACtB;AAED,eAAO,MAAM,2BAA2B,4GAkBvC,CAAA;AAOD,MAAM,WAAW,uCAAuC;IACvD,6DAA6D;IAC7D,UAAU,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,kCAAkC,CAAC,EAClD,UAAoB,GACpB,GAAE,uCAA4C,GAAG,YAAY,CAsB7D;AAMD,wBAAgB,8BAA8B,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAEzE"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Loader state, reload trigger, and conditional rendering components using Radix Slot.
3
+ *
4
+ * Usage:
5
+ * ```tsx
6
+ * <DataViewReloadTrigger>
7
+ * <button>Refresh</button>
8
+ * </DataViewReloadTrigger>
9
+ *
10
+ * <DataViewLoaderState loaded={<Table />} refreshing={<Table />} initial={<Loading />} failed={<Error />} />
11
+ *
12
+ * <DataViewEmpty>No results found</DataViewEmpty>
13
+ * <DataViewNonEmpty><Table /></DataViewNonEmpty>
14
+ *
15
+ * <DataViewKeyboardEventHandler>
16
+ * <div tabIndex={0}>...</div>
17
+ * </DataViewKeyboardEventHandler>
18
+ * ```
19
+ */
20
+ import React, { type ReactElement } from 'react';
21
+ import { type DataViewItem } from './DataViewContext.js';
22
+ import type { DataViewLoaderState as DataViewLoaderStateType } from './DataViewContext.js';
23
+ export interface DataViewReloadTriggerProps {
24
+ children: ReactElement;
25
+ }
26
+ export declare const DataViewReloadTrigger: React.ForwardRefExoticComponent<DataViewReloadTriggerProps & React.RefAttributes<HTMLButtonElement>>;
27
+ export interface DataViewLoaderStateProps {
28
+ children: React.ReactNode;
29
+ /** Render children when data is loaded */
30
+ loaded?: boolean;
31
+ /** Render children when refreshing (after initial load) */
32
+ refreshing?: boolean;
33
+ /** Render children during initial load */
34
+ initial?: boolean;
35
+ /** Render children on failure */
36
+ failed?: boolean;
37
+ }
38
+ export declare function DataViewLoaderState({ children, ...props }: DataViewLoaderStateProps): ReactElement | null;
39
+ export interface DataViewLoaderStateSwitchProps {
40
+ /** Render when data is loaded */
41
+ loaded?: React.ReactNode;
42
+ /** Render when refreshing (after initial load) */
43
+ refreshing?: React.ReactNode;
44
+ /** Render during initial load */
45
+ initial?: React.ReactNode;
46
+ /** Render on failure */
47
+ failed?: React.ReactNode;
48
+ }
49
+ export declare function DataViewLoaderStateSwitch({ loaded, refreshing, initial, failed, }: DataViewLoaderStateSwitchProps): ReactElement;
50
+ export declare function useDataViewLoaderState(): DataViewLoaderStateType;
51
+ export declare function useDataViewReload(): () => void;
52
+ export declare function useDataViewHighlightIndex(): number | null;
53
+ export interface DataViewEmptyProps {
54
+ children: React.ReactNode;
55
+ }
56
+ export declare function DataViewEmpty({ children }: DataViewEmptyProps): ReactElement;
57
+ export interface DataViewNonEmptyProps {
58
+ children: React.ReactNode;
59
+ }
60
+ export declare function DataViewNonEmpty({ children }: DataViewNonEmptyProps): ReactElement;
61
+ export interface DataViewEachRowProps {
62
+ children: (item: DataViewItem, index: number) => React.ReactNode;
63
+ }
64
+ export declare function DataViewEachRow({ children }: DataViewEachRowProps): ReactElement;
65
+ export interface DataViewHighlightRowProps {
66
+ index: number;
67
+ children: ReactElement;
68
+ }
69
+ export declare const DataViewHighlightRow: React.ForwardRefExoticComponent<DataViewHighlightRowProps & React.RefAttributes<HTMLElement>>;
70
+ export interface DataViewKeyboardEventHandlerProps {
71
+ children: ReactElement;
72
+ onSelectHighlighted?: (item: DataViewItem) => void;
73
+ }
74
+ export declare const DataViewKeyboardEventHandler: React.ForwardRefExoticComponent<DataViewKeyboardEventHandlerProps & React.RefAttributes<HTMLElement>>;
75
+ //# sourceMappingURL=loaderComponents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loaderComponents.d.ts","sourceRoot":"","sources":["../src/loaderComponents.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,EAAc,KAAK,YAAY,EAAe,MAAM,OAAO,CAAA;AAGzE,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAC5E,OAAO,KAAK,EAAE,mBAAmB,IAAI,uBAAuB,EAAE,MAAM,sBAAsB,CAAA;AAM1F,MAAM,WAAW,0BAA0B;IAC1C,QAAQ,EAAE,YAAY,CAAA;CACtB;AAED,eAAO,MAAM,qBAAqB,sGAcjC,CAAA;AAUD,MAAM,WAAW,wBAAwB;IACxC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,0CAA0C;IAC1C,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,iCAAiC;IACjC,MAAM,CAAC,EAAE,OAAO,CAAA;CAChB;AAED,wBAAgB,mBAAmB,CAAC,EACnC,QAAQ,EACR,GAAG,KAAK,EACR,EAAE,wBAAwB,GAAG,YAAY,GAAG,IAAI,CAGhD;AAKD,MAAM,WAAW,8BAA8B;IAC9C,iCAAiC;IACjC,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACxB,kDAAkD;IAClD,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC5B,iCAAiC;IACjC,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,wBAAwB;IACxB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CACxB;AAED,wBAAgB,yBAAyB,CAAC,EACzC,MAAM,EACN,UAAU,EACV,OAAO,EACP,MAAM,GACN,EAAE,8BAA8B,GAAG,YAAY,CAa/C;AAMD,wBAAgB,sBAAsB,IAAI,uBAAuB,CAEhE;AAED,wBAAgB,iBAAiB,IAAI,MAAM,IAAI,CAE9C;AAED,wBAAgB,yBAAyB,IAAI,MAAM,GAAG,IAAI,CAEzD;AAMD,MAAM,WAAW,kBAAkB;IAClC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CACzB;AAED,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE,kBAAkB,GAAG,YAAY,CAI5E;AAED,MAAM,WAAW,qBAAqB;IACrC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CACzB;AAED,wBAAgB,gBAAgB,CAAC,EAAE,QAAQ,EAAE,EAAE,qBAAqB,GAAG,YAAY,CAIlF;AAMD,MAAM,WAAW,oBAAoB;IACpC,QAAQ,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAA;CAChE;AAED,wBAAgB,eAAe,CAAC,EAAE,QAAQ,EAAE,EAAE,oBAAoB,GAAG,YAAY,CAGhF;AAMD,MAAM,WAAW,yBAAyB;IACzC,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,YAAY,CAAA;CACtB;AAED,eAAO,MAAM,oBAAoB,+FAoBhC,CAAA;AAOD,MAAM,WAAW,iCAAiC;IACjD,QAAQ,EAAE,YAAY,CAAA;IACtB,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAA;CAClD;AAED,eAAO,MAAM,4BAA4B,uGA+BxC,CAAA"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Marker components for DataGrid children analysis.
3
+ *
4
+ * These are metadata components — they return null at runtime.
5
+ * Their props are extracted by `analyzeChildren()` during the DataGrid's
6
+ * collection phase and stored in DataViewContext for layout components to consume.
7
+ */
8
+ import type React from 'react';
9
+ import type { ReactNode } from 'react';
10
+ export interface DataGridToolbarContentProps {
11
+ readonly children: React.ReactNode;
12
+ }
13
+ /**
14
+ * Marker for toolbar content inside a DataGrid children render function.
15
+ * At analysis time, the children ReactNode is extracted and stored in context.
16
+ * At runtime, returns null (content is rendered by toolbar layout components).
17
+ */
18
+ export declare function DataGridToolbarContent(_props: DataGridToolbarContentProps): null;
19
+ export interface DataGridLayoutProps<T = never> {
20
+ /** Unique name for this layout (e.g. "grid", "rows", "cards") */
21
+ readonly name: string;
22
+ /** Label shown in the layout switcher UI (supports ReactNode for icons) */
23
+ readonly label?: ReactNode;
24
+ /** Pass the DataGrid's `it` parameter for type inference on the children callback. */
25
+ readonly item?: T;
26
+ readonly children: (item: T) => ReactNode;
27
+ }
28
+ /**
29
+ * Marker for a named layout inside a DataGrid children render function.
30
+ * Multiple DataGridLayout markers can coexist with different names.
31
+ * At analysis time, the callback is extracted and called with the collector proxy
32
+ * to discover field selections. At runtime, returns null (callback is stored in
33
+ * context and invoked per-item by layout rendering components).
34
+ */
35
+ export declare function DataGridLayout<T>(_props: DataGridLayoutProps<T>): null;
36
+ //# sourceMappingURL=markers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markers.d.ts","sourceRoot":"","sources":["../src/markers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAQtC,MAAM,WAAW,2BAA2B;IAC3C,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAClC;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,2BAA2B,GAAG,IAAI,CAEhF;AAMD,MAAM,WAAW,mBAAmB,CAAC,CAAC,GAAG,KAAK;IAC7C,iEAAiE;IACjE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,2EAA2E;IAC3E,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAA;IAC1B,sFAAsF;IACtF,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACjB,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,SAAS,CAAA;CACzC;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,IAAI,CAEtE"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Composable paging UI components using Radix Slot pattern.
3
+ *
4
+ * Usage:
5
+ * ```tsx
6
+ * <DataViewChangePageTrigger page="previous">
7
+ * <button>Previous</button>
8
+ * </DataViewChangePageTrigger>
9
+ *
10
+ * <DataViewChangePageTrigger page="next">
11
+ * <button>Next</button>
12
+ * </DataViewChangePageTrigger>
13
+ *
14
+ * <DataViewSetItemsPerPageTrigger value={25}>
15
+ * <button>25 per page</button>
16
+ * </DataViewSetItemsPerPageTrigger>
17
+ *
18
+ * <DataViewPagingStateView>
19
+ * {({ pageIndex, totalPages }) => <span>Page {pageIndex + 1} of {totalPages}</span>}
20
+ * </DataViewPagingStateView>
21
+ * ```
22
+ */
23
+ import React, { type ReactElement, type ReactNode } from 'react';
24
+ export interface DataViewChangePageTriggerProps {
25
+ /** Target page: named shortcut or zero-based page index */
26
+ page: 'first' | 'last' | 'next' | 'previous' | number;
27
+ /** Button element */
28
+ children: ReactElement;
29
+ }
30
+ export declare const DataViewChangePageTrigger: React.ForwardRefExoticComponent<DataViewChangePageTriggerProps & React.RefAttributes<HTMLButtonElement>>;
31
+ export interface DataViewSetItemsPerPageTriggerProps {
32
+ /** Items per page to set. null = show all. */
33
+ value: number | null;
34
+ /** Button element */
35
+ children: ReactElement;
36
+ }
37
+ export declare const DataViewSetItemsPerPageTrigger: React.ForwardRefExoticComponent<DataViewSetItemsPerPageTriggerProps & React.RefAttributes<HTMLButtonElement>>;
38
+ export interface DataViewPagingInfoProps {
39
+ children: (info: {
40
+ pageIndex: number;
41
+ totalPages: number | null;
42
+ totalCount: number | null;
43
+ itemsPerPage: number;
44
+ }) => ReactNode;
45
+ }
46
+ export declare function DataViewPagingStateView({ children, }: DataViewPagingInfoProps): ReactElement;
47
+ /** Alias for DataViewPagingStateView */
48
+ export declare const DataViewPagingInfo: typeof DataViewPagingStateView;
49
+ export type DataViewPagingStateViewProps = DataViewPagingInfoProps;
50
+ //# sourceMappingURL=pagingComponents.d.ts.map