cx 26.6.0 → 26.7.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 (44) hide show
  1. package/build/data/ExposedValueView.js +1 -1
  2. package/build/data/comparer.d.ts +6 -8
  3. package/build/data/comparer.d.ts.map +1 -1
  4. package/build/ui/Prop.d.ts +1 -1
  5. package/build/ui/Prop.d.ts.map +1 -1
  6. package/build/ui/adapter/ArrayAdapter.d.ts +4 -6
  7. package/build/ui/adapter/ArrayAdapter.d.ts.map +1 -1
  8. package/build/ui/adapter/GroupAdapter.d.ts +22 -2
  9. package/build/ui/adapter/GroupAdapter.d.ts.map +1 -1
  10. package/build/ui/adapter/GroupAdapter.js +80 -5
  11. package/build/widgets/drag-drop/DragSource.d.ts +3 -2
  12. package/build/widgets/drag-drop/DragSource.d.ts.map +1 -1
  13. package/build/widgets/drag-drop/DropZone.d.ts +4 -4
  14. package/build/widgets/drag-drop/DropZone.d.ts.map +1 -1
  15. package/build/widgets/drag-drop/ops.d.ts +13 -2
  16. package/build/widgets/drag-drop/ops.d.ts.map +1 -1
  17. package/build/widgets/drag-drop/ops.js +36 -9
  18. package/build/widgets/form/NumberField.js +1 -0
  19. package/build/widgets/grid/Grid.d.ts +19 -3
  20. package/build/widgets/grid/Grid.d.ts.map +1 -1
  21. package/build/widgets/grid/Grid.js +2 -0
  22. package/build/widgets/overlay/captureMouse.d.ts +4 -4
  23. package/build/widgets/overlay/captureMouse.d.ts.map +1 -1
  24. package/build/widgets/overlay/captureMouse.js +8 -3
  25. package/dist/data.js +1 -1
  26. package/dist/manifest.js +766 -766
  27. package/dist/ui.js +94 -9
  28. package/dist/widgets.css +4 -0
  29. package/dist/widgets.js +42 -10
  30. package/package.json +1 -1
  31. package/src/data/ExposedValueView.spec.ts +57 -0
  32. package/src/data/ExposedValueView.ts +1 -1
  33. package/src/data/comparer.ts +6 -7
  34. package/src/ui/Prop.ts +1 -1
  35. package/src/ui/adapter/ArrayAdapter.ts +6 -8
  36. package/src/ui/adapter/GroupAdapter.spec.ts +75 -0
  37. package/src/ui/adapter/GroupAdapter.ts +103 -10
  38. package/src/widgets/drag-drop/DragSource.tsx +3 -3
  39. package/src/widgets/drag-drop/DropZone.tsx +5 -5
  40. package/src/widgets/drag-drop/ops.tsx +54 -12
  41. package/src/widgets/form/NumberField.scss +4 -0
  42. package/src/widgets/form/NumberField.tsx +1 -0
  43. package/src/widgets/grid/Grid.tsx +23 -2
  44. package/src/widgets/overlay/captureMouse.ts +14 -7
@@ -45,7 +45,7 @@ export class ExposedValueView extends View {
45
45
  if (path == this.recordName) {
46
46
  data = this.getData();
47
47
  container = this.containerBinding.value(data);
48
- if (!container || !container.hasOwnProperty(path))
48
+ if (!container || !container.hasOwnProperty(this.key))
49
49
  return false;
50
50
  newContainer = Object.assign({}, container);
51
51
  delete newContainer[this.key];
@@ -1,12 +1,10 @@
1
- interface Sorter {
2
- value?: any;
3
- field?: string;
4
- direction?: string;
1
+ import type { CollatorOptions, Sorter } from "../ui/Prop";
2
+ export interface ExtendedSorter extends Sorter {
5
3
  comparer?: (a: any, b: any) => number;
6
4
  compare?: (a: any, b: any) => number;
5
+ sortOptions?: CollatorOptions;
7
6
  }
8
- export declare function getComparer(sorters: Sorter[], dataAccessor?: (x: any) => any, comparer?: (a: any, b: any) => number): (a: any, b: any) => number;
9
- export declare function indexSorter(sorters: Sorter[], dataAccessor?: (x: any) => any, compare?: (a: any, b: any) => number): (data: any[]) => number[];
10
- export declare function sorter(sorters: Sorter[], dataAccessor?: (x: any) => any, compare?: (a: any, b: any) => number): (data: any[]) => any[];
11
- export {};
7
+ export declare function getComparer(sorters: ExtendedSorter[], dataAccessor?: (x: any) => any, comparer?: (a: any, b: any) => number): (a: any, b: any) => number;
8
+ export declare function indexSorter(sorters: ExtendedSorter[], dataAccessor?: (x: any) => any, compare?: (a: any, b: any) => number): (data: any[]) => number[];
9
+ export declare function sorter(sorters: ExtendedSorter[], dataAccessor?: (x: any) => any, compare?: (a: any, b: any) => number): (data: any[]) => any[];
12
10
  //# sourceMappingURL=comparer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"comparer.d.ts","sourceRoot":"","sources":["../../src/data/comparer.ts"],"names":[],"mappings":"AAIA,UAAU,MAAM;IACb,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,KAAK,MAAM,CAAC;IACtC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,KAAK,MAAM,CAAC;CACvC;AAED,wBAAgB,WAAW,CACxB,OAAO,EAAE,MAAM,EAAE,EACjB,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,GAAG,EAC9B,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,KAAK,MAAM,GACrC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,KAAK,MAAM,CAkC5B;AAED,wBAAgB,WAAW,CACxB,OAAO,EAAE,MAAM,EAAE,EACjB,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,GAAG,EAC9B,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,KAAK,MAAM,GACpC,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,MAAM,EAAE,CAO3B;AAED,wBAAgB,MAAM,CACnB,OAAO,EAAE,MAAM,EAAE,EACjB,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,GAAG,EAC9B,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,KAAK,MAAM,GACpC,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAAE,CAQxB"}
1
+ {"version":3,"file":"comparer.d.ts","sourceRoot":"","sources":["../../src/data/comparer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAE1D,MAAM,WAAW,cAAe,SAAQ,MAAM;IAC3C,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,KAAK,MAAM,CAAC;IACtC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,KAAK,MAAM,CAAC;IACrC,WAAW,CAAC,EAAE,eAAe,CAAC;CAChC;AAED,wBAAgB,WAAW,CACxB,OAAO,EAAE,cAAc,EAAE,EACzB,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,GAAG,EAC9B,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,KAAK,MAAM,GACrC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,KAAK,MAAM,CAkC5B;AAED,wBAAgB,WAAW,CACxB,OAAO,EAAE,cAAc,EAAE,EACzB,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,GAAG,EAC9B,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,KAAK,MAAM,GACpC,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,MAAM,EAAE,CAO3B;AAED,wBAAgB,MAAM,CACnB,OAAO,EAAE,cAAc,EAAE,EACzB,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,GAAG,EAC9B,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,KAAK,MAAM,GACpC,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAAE,CAQxB"}
@@ -82,7 +82,7 @@ export type RecordAlias = string | {
82
82
  export type SortDirection = "ASC" | "DESC";
83
83
  export interface Sorter {
84
84
  field?: string;
85
- value?: (record: DataRecord) => any;
85
+ value?: Prop<any>;
86
86
  direction: SortDirection;
87
87
  }
88
88
  export interface CollatorOptions {
@@ -1 +1 @@
1
- {"version":3,"file":"Prop.d.ts","sourceRoot":"","sources":["../../src/ui/Prop.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Prop.d.ts","sourceRoot":"","sources":["../../src/ui/Prop.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,10 @@
1
1
  import { DataAdapter, DataAdapterRecord, DataAdapterConfig } from "./DataAdapter";
2
+ import { type ExtendedSorter } from "../../data/comparer";
2
3
  import { Accessor } from "../../data/getAccessor";
3
4
  import { RenderingContext } from "../RenderingContext";
4
5
  import { Instance } from "../Instance";
5
6
  import { View } from "../../data/View";
6
- import { Prop, Sorter, CollatorOptions } from "../Prop";
7
+ import { Prop, CollatorOptions } from "../Prop";
7
8
  export interface RecordStoreCache {
8
9
  recordStoreCache: WeakMap<any, View>;
9
10
  cacheByKey: Record<string | number, View>;
@@ -17,10 +18,7 @@ export interface ArrayAdapterConfig extends DataAdapterConfig {
17
18
  sortOptions?: CollatorOptions;
18
19
  preserveOrder?: boolean;
19
20
  }
20
- export interface ExtendedSorter extends Sorter {
21
- comparer?: (a: any, b: any) => number;
22
- sortOptions?: CollatorOptions;
23
- }
21
+ export type { ExtendedSorter } from "../../data/comparer";
24
22
  export interface ResolvedSorter {
25
23
  getter: (x: any) => any;
26
24
  factor: number;
@@ -44,6 +42,6 @@ export declare class ArrayAdapter<T = any> extends DataAdapter<T> {
44
42
  setFilter(filterFn?: (data: T) => boolean): void;
45
43
  getComparer(sortOptions?: CollatorOptions): ((a: any, b: any) => number) | undefined;
46
44
  buildSorter(sorters: ExtendedSorter[]): void;
47
- sort(sorters?: Sorter[] | ExtendedSorter[]): void;
45
+ sort(sorters?: ExtendedSorter[]): void;
48
46
  }
49
47
  //# sourceMappingURL=ArrayAdapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ArrayAdapter.d.ts","sourceRoot":"","sources":["../../../src/ui/adapter/ArrayAdapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ArrayAdapter.d.ts","sourceRoot":"","sources":["../../../src/ui/adapter/ArrayAdapter.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  import { Grouper } from "../../data/Grouper";
2
2
  import { View } from "../../data/View";
3
3
  import { Instance } from "../Instance";
4
- import { Prop, SortDirection, StructuredProp } from "../Prop";
4
+ import { Prop, SortDirection, Sorter, StructuredProp } from "../Prop";
5
5
  import { RenderingContext } from "../RenderingContext";
6
- import { ArrayAdapter, ArrayAdapterConfig, RecordStoreCache } from "./ArrayAdapter";
6
+ import { ArrayAdapter, ArrayAdapterConfig, ExtendedSorter, RecordStoreCache } from "./ArrayAdapter";
7
7
  import { DataAdapterRecord } from "./DataAdapter";
8
8
  export interface GroupKey {
9
9
  [field: string]: Prop<any> | {
@@ -17,7 +17,17 @@ export interface GroupingConfig {
17
17
  text?: Prop<string>;
18
18
  includeHeader?: boolean;
19
19
  includeFooter?: boolean;
20
+ /** Custom group comparer. Takes precedence over `sortField`/`sortDirection`/`sorters`. */
20
21
  comparer?: ((a: any, b: any) => number) | null;
22
+ /**
23
+ * Sort groups by a single field resolved against the group's `key`, `aggregates` and `name`.
24
+ * Use an aggregate alias (e.g. `"total"`) to sort by an aggregate, or a key field to sort by key.
25
+ */
26
+ sortField?: string;
27
+ /** Sort direction used together with `sortField`. Defaults to `"ASC"`. */
28
+ sortDirection?: SortDirection;
29
+ /** Multi-field group sorting. Each sorter's `field` is resolved against the group's `key`, `aggregates` and `name`. */
30
+ sorters?: Sorter[];
21
31
  header?: any;
22
32
  footer?: any;
23
33
  }
@@ -42,6 +52,8 @@ export interface GroupAdapterConfig extends ArrayAdapterConfig {
42
52
  groupRecordsName?: string;
43
53
  groupings?: GroupingConfig[] | null;
44
54
  groupName?: string;
55
+ /** When enabled, the active record sorters also reorder groups (resolved against each group's key/aggregates/name). */
56
+ sortGroupsBySorters?: boolean;
45
57
  }
46
58
  export declare class GroupAdapter<T = any> extends ArrayAdapter<T> {
47
59
  aggregates?: StructuredProp;
@@ -49,7 +61,15 @@ export declare class GroupAdapter<T = any> extends ArrayAdapter<T> {
49
61
  groupRecordsName?: string;
50
62
  groupings?: ResolvedGrouping[] | null;
51
63
  groupName: string;
64
+ sortGroupsBySorters?: boolean;
65
+ /**
66
+ * Per-level comparer derived from the active record sorters, used to reorder groups when
67
+ * `sortGroupsBySorters` is set. A level's entry is `null` when no active sorter maps to that
68
+ * level's key/aggregate, so the grouping's own configured order is kept.
69
+ */
70
+ protected groupSortComparers?: (((a: any, b: any) => number) | null)[];
52
71
  constructor(config?: GroupAdapterConfig);
72
+ sort(sorters?: ExtendedSorter[]): void;
53
73
  init(): void;
54
74
  getRecords(context: RenderingContext, instance: Instance & Partial<RecordStoreCache>, records: T[], parentStore: View): DataAdapterRecord<T>[];
55
75
  protected processLevel(keys: any[], records: DataAdapterRecord<T>[], result: DataAdapterRecord<T>[], parentStore: View): void;
@@ -1 +1 @@
1
- {"version":3,"file":"GroupAdapter.d.ts","sourceRoot":"","sources":["../../../src/ui/adapter/GroupAdapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GroupAdapter.d.ts","sourceRoot":"","sources":["../../../src/ui/adapter/GroupAdapter.ts"],"names":[],"mappings":"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"}
@@ -3,12 +3,40 @@ import { Grouper } from "../../data/Grouper";
3
3
  import { ReadOnlyDataView } from "../../data/ReadOnlyDataView";
4
4
  import { isDataRecord } from "../../util";
5
5
  import { isArray } from "../../util/isArray";
6
+ import { isDefined } from "../../util/isDefined";
7
+ import { isNonEmptyArray } from "../../util/isNonEmptyArray";
6
8
  import { Culture } from "../Culture";
7
9
  import { ArrayAdapter } from "./ArrayAdapter";
8
10
  export class GroupAdapter extends ArrayAdapter {
11
+ /**
12
+ * Per-level comparer derived from the active record sorters, used to reorder groups when
13
+ * `sortGroupsBySorters` is set. A level's entry is `null` when no active sorter maps to that
14
+ * level's key/aggregate, so the grouping's own configured order is kept.
15
+ */
16
+ groupSortComparers;
9
17
  constructor(config) {
10
18
  super(config);
11
19
  }
20
+ sort(sorters) {
21
+ super.sort(sorters);
22
+ // When enabled, derive a group comparer from the active record sorters so that interactive
23
+ // column sorting also reorders the groups. A column only reorders groups at levels where its
24
+ // field is a group key or aggregate; other levels keep their configured order. The record-level
25
+ // value selector is ignored — the field is resolved against the group's key/aggregates/name.
26
+ if (this.sortGroupsBySorters && this.groupings) {
27
+ const cultureComparer = this.sortOptions ? Culture.getComparer(this.sortOptions) : undefined;
28
+ const colSorters = isNonEmptyArray(sorters)
29
+ ? sorters.map((s) => ({ field: s.field, direction: s.direction, comparer: s.comparer }))
30
+ : [];
31
+ this.groupSortComparers = this.groupings.map((g) => {
32
+ if (colSorters.length === 0)
33
+ return null;
34
+ const fields = groupFieldNames(g, this.aggregates);
35
+ const applicable = colSorters.filter((s) => s.field && fields.has(s.field));
36
+ return applicable.length > 0 ? buildGroupComparer(applicable, cultureComparer) : null;
37
+ });
38
+ }
39
+ }
12
40
  init() {
13
41
  super.init();
14
42
  if (this.groupRecordsAlias) {
@@ -44,8 +72,12 @@ export class GroupAdapter extends ArrayAdapter {
44
72
  grouper.reset();
45
73
  grouper.processAll(records);
46
74
  let results = grouper.getResults();
47
- if (grouping.comparer && !this.preserveOrder) {
48
- results.sort(grouping.comparer);
75
+ // An active column sort that maps to this level's key/aggregate (when `sortGroupsBySorters` is
76
+ // enabled) takes over; otherwise the grouping's configured comparer (or implicit key order) applies.
77
+ const dynamicComparer = this.sortGroupsBySorters ? this.groupSortComparers?.[level] : undefined;
78
+ const comparer = dynamicComparer ?? grouping.comparer;
79
+ if (comparer && !this.preserveOrder) {
80
+ results.sort(comparer);
49
81
  }
50
82
  results.forEach((gr) => {
51
83
  keys.push(gr.key);
@@ -118,10 +150,21 @@ export class GroupAdapter extends ArrayAdapter {
118
150
  });
119
151
  }
120
152
  const grouper = new Grouper(key, { ...this.aggregates, ...g.aggregates }, (r) => r.store.getData(), g.text);
153
+ const cultureComparer = this.sortOptions ? Culture.getComparer(this.sortOptions) : undefined;
154
+ // Sort groups by an aggregate/key/name through `sortField`/`sortDirection` or a `sorters` array.
155
+ let sortSorters = null;
156
+ if (isNonEmptyArray(g.sorters))
157
+ sortSorters = g.sorters;
158
+ else if (g.sortField)
159
+ sortSorters = [{ field: g.sortField, direction: g.sortDirection ?? "ASC" }];
160
+ // `comparer`, `sortField`/`sorters` and the implicit key order are equivalent alternatives; an
161
+ // explicit `comparer` wins, then declarative sorters, then sorting by key in declaration order.
121
162
  const comparer = g.comparer ??
122
- (groupSorters.length > 0
123
- ? getComparer(groupSorters, (x) => x.key, this.sortOptions ? Culture.getComparer(this.sortOptions) : undefined)
124
- : null);
163
+ (sortSorters
164
+ ? buildGroupComparer(sortSorters, cultureComparer)
165
+ : groupSorters.length > 0
166
+ ? getComparer(groupSorters, (x) => x.key, cultureComparer)
167
+ : null);
125
168
  return {
126
169
  ...g,
127
170
  key: resolvedKey,
@@ -137,6 +180,38 @@ export class GroupAdapter extends ArrayAdapter {
137
180
  }
138
181
  GroupAdapter.prototype.groupName = "$group";
139
182
  GroupAdapter.prototype.preserveOrder = false;
183
+ GroupAdapter.prototype.sortGroupsBySorters = false;
184
+ // The set of fields a group can be sorted by at a given level: its key fields, its aggregate aliases
185
+ // and the group name. Used to decide whether an active column sort applies to that grouping level.
186
+ function groupFieldNames(grouping, adapterAggregates) {
187
+ const names = new Set();
188
+ for (const k of grouping.grouper.keys)
189
+ names.add(k.name);
190
+ const aggregates = { ...adapterAggregates, ...grouping.aggregates };
191
+ for (const a in aggregates)
192
+ names.add(a);
193
+ names.add("name");
194
+ names.add("$name");
195
+ return names;
196
+ }
197
+ // Reads a sort field straight from the GroupResult — first its key fields, then its aggregates, then
198
+ // its name. Returns a plain selector so groups can be sorted without cloning the result per comparison.
199
+ function groupFieldSelector(field) {
200
+ if (field === "name" || field === "$name")
201
+ return (gr) => gr?.name;
202
+ return (gr) => {
203
+ if (gr?.key && field in gr.key)
204
+ return gr.key[field];
205
+ if (gr?.aggregates && field in gr.aggregates)
206
+ return gr.aggregates[field];
207
+ return undefined;
208
+ };
209
+ }
210
+ // Builds a group comparer from a list of sorters. Each sorter resolves by its explicit `value`
211
+ // selector, or by `field` looked up against the group's key/aggregates/name.
212
+ function buildGroupComparer(sorters, cultureComparer) {
213
+ return getComparer(sorters.map((s) => (isDefined(s.value) || !s.field ? s : { ...s, value: groupFieldSelector(s.field) })), undefined, cultureComparer);
214
+ }
140
215
  function serializeKey(data) {
141
216
  if (isDataRecord(data)) {
142
217
  return Object.keys(data)
@@ -1,5 +1,6 @@
1
1
  /** @jsxImportSource react */
2
2
  import { StyledContainerBase, StyledContainerConfig } from "../../ui/Container";
3
+ import { DragEndEvent } from "./ops";
3
4
  import { Instance } from "../../ui/Instance";
4
5
  import { StringProp, StyleProp, ClassProp, Config } from "../../ui/Prop";
5
6
  import { RenderingContext } from "../../ui/RenderingContext";
@@ -19,7 +20,7 @@ export interface DragSourceConfig extends StyledContainerConfig {
19
20
  /** Base CSS class to be applied to the element. Defaults to 'dragsource'. */
20
21
  baseClass?: string;
21
22
  onDragStart?: (e: React.MouseEvent | React.TouchEvent, instance: Instance) => any;
22
- onDragEnd?: (e: React.MouseEvent | React.TouchEvent, instance: Instance) => void;
23
+ onDragEnd?: (e: DragEndEvent, instance: Instance) => void;
23
24
  id?: StringProp;
24
25
  /** Custom contents to be displayed during drag & drop operation. */
25
26
  clone?: Config;
@@ -45,7 +46,7 @@ export declare class DragSource extends StyledContainerBase<DragSourceConfig, Dr
45
46
  cloneStyle: any;
46
47
  draggedStyle: any;
47
48
  onDragStart?: (e: React.MouseEvent | React.TouchEvent, instance: DragSourceInstance) => any;
48
- onDragEnd?: (e: React.MouseEvent | React.TouchEvent, instance: DragSourceInstance) => void;
49
+ onDragEnd?: (e: DragEndEvent, instance: DragSourceInstance) => void;
49
50
  constructor(config?: DragSourceConfig);
50
51
  init(): void;
51
52
  declareData(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"DragSource.d.ts","sourceRoot":"","sources":["../../../src/widgets/drag-drop/DragSource.tsx"],"names":[],"mappings":"AAAA,6BAA6B;AAG7B,OAAO,EAAkC,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAIhH,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D,MAAM,WAAW,gBAAiB,SAAQ,qBAAqB;IAC5D;;;OAGG;IACH,IAAI,CAAC,EAAE,GAAG,CAAC;IAEX;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,sGAAsG;IACtG,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,6EAA6E;IAC7E,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,KAAK,GAAG,CAAC;IAElF,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAC;IAEjF,EAAE,CAAC,EAAE,UAAU,CAAC;IAEhB,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,0EAA0E;IAC1E,UAAU,CAAC,EAAE,SAAS,CAAC;IAEvB,6DAA6D;IAC7D,YAAY,CAAC,EAAE,SAAS,CAAC;IAEzB,oFAAoF;IACpF,UAAU,CAAC,EAAE,SAAS,CAAC;IAEvB,uEAAuE;IACvE,YAAY,CAAC,EAAE,SAAS,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAmB,SAAQ,QAAQ,CAAC,UAAU,CAAC;IAC7D,WAAW,EAAE,GAAG,EAAE,CAAC;CACrB;AAED,qBAAa,UAAW,SAAQ,mBAAmB,CAAC,gBAAgB,EAAE,kBAAkB,CAAC;IAC9E,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,GAAG,CAAC;IACV,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,GAAG,CAAC;IAChB,YAAY,EAAE,GAAG,CAAC;IAClB,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,EAAE,QAAQ,EAAE,kBAAkB,KAAK,GAAG,CAAC;IAC5F,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,EAAE,QAAQ,EAAE,kBAAkB,KAAK,IAAI,CAAC;gBAEvF,MAAM,CAAC,EAAE,gBAAgB;IAIrC,IAAI;IAMJ,WAAW;IAWX,OAAO,CAAC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,kBAAkB;IAK/D,cAAc,CAAC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,kBAAkB;IAItE,MAAM,CAAC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,kBAAkB,EAAE,GAAG,EAAE,MAAM;CAO7E"}
1
+ {"version":3,"file":"DragSource.d.ts","sourceRoot":"","sources":["../../../src/widgets/drag-drop/DragSource.tsx"],"names":[],"mappings":"AAAA,6BAA6B;AAG7B,OAAO,EAAkC,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChH,OAAO,EAAyE,YAAY,EAAE,MAAM,OAAO,CAAC;AAG5G,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D,MAAM,WAAW,gBAAiB,SAAQ,qBAAqB;IAC5D;;;OAGG;IACH,IAAI,CAAC,EAAE,GAAG,CAAC;IAEX;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,sGAAsG;IACtG,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,6EAA6E;IAC7E,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,KAAK,GAAG,CAAC;IAElF,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAC;IAE1D,EAAE,CAAC,EAAE,UAAU,CAAC;IAEhB,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,0EAA0E;IAC1E,UAAU,CAAC,EAAE,SAAS,CAAC;IAEvB,6DAA6D;IAC7D,YAAY,CAAC,EAAE,SAAS,CAAC;IAEzB,oFAAoF;IACpF,UAAU,CAAC,EAAE,SAAS,CAAC;IAEvB,uEAAuE;IACvE,YAAY,CAAC,EAAE,SAAS,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAmB,SAAQ,QAAQ,CAAC,UAAU,CAAC;IAC7D,WAAW,EAAE,GAAG,EAAE,CAAC;CACrB;AAED,qBAAa,UAAW,SAAQ,mBAAmB,CAAC,gBAAgB,EAAE,kBAAkB,CAAC;IAC9E,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,GAAG,CAAC;IACV,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,GAAG,CAAC;IAChB,YAAY,EAAE,GAAG,CAAC;IAClB,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,EAAE,QAAQ,EAAE,kBAAkB,KAAK,GAAG,CAAC;IAC5F,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,kBAAkB,KAAK,IAAI,CAAC;gBAEhE,MAAM,CAAC,EAAE,gBAAgB;IAIrC,IAAI;IAMJ,WAAW;IAWX,OAAO,CAAC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,kBAAkB;IAK/D,cAAc,CAAC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,kBAAkB;IAItE,MAAM,CAAC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,kBAAkB,EAAE,GAAG,EAAE,MAAM;CAO7E"}
@@ -1,6 +1,6 @@
1
1
  /** @jsxImportSource react */
2
2
  import { StyledContainerBase, StyledContainerConfig } from "../../ui/Container";
3
- import { DragEvent } from "./ops";
3
+ import { DragEvent, DragEndEvent } from "./ops";
4
4
  import { Instance } from "../../ui/Instance";
5
5
  import { StyleProp, ClassProp, StructuredProp } from "../../ui/Prop";
6
6
  import { RenderingContext } from "../../ui/RenderingContext";
@@ -63,8 +63,8 @@ export interface DropZoneConfig extends StyledContainerConfig {
63
63
  onDragLeave?: string | ((event: DragEvent, instance: Instance) => void);
64
64
  /** A callback method invoked when at the beginning of the drag & drop operation. */
65
65
  onDragStart?: string | ((event: DragEvent, instance: Instance) => void);
66
- /** A callback method invoked when at the end of the drag & drop operation. */
67
- onDragEnd?: string | ((event: DragEvent, instance: Instance) => void);
66
+ /** A callback method invoked when at the end of the drag & drop operation. `event.cancelled` is `true` when the operation was cancelled (e.g. via Esc) instead of dropped. */
67
+ onDragEnd?: string | ((event: DragEndEvent, instance: Instance) => void);
68
68
  /** Match height of the item being dragged */
69
69
  matchHeight?: boolean;
70
70
  /** Match width of the item being dragged */
@@ -95,7 +95,7 @@ export declare class DropZone extends StyledContainerBase<DropZoneConfig, DropZo
95
95
  onDragEnter?: string | ((event?: DragEvent, instance?: Instance) => void);
96
96
  onDragLeave?: string | ((event?: DragEvent, instance?: Instance) => void);
97
97
  onDragStart?: string | ((event?: DragEvent, instance?: Instance) => void);
98
- onDragEnd?: string | ((event?: DragEvent, instance?: Instance) => void);
98
+ onDragEnd?: string | ((event?: DragEndEvent, instance?: Instance) => void);
99
99
  constructor(config?: DropZoneConfig);
100
100
  init(): void;
101
101
  declareData(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"DropZone.d.ts","sourceRoot":"","sources":["../../../src/widgets/drag-drop/DropZone.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DropZone.d.ts","sourceRoot":"","sources":["../../../src/widgets/drag-drop/DropZone.tsx"],"names":[],"mappings":"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"}
@@ -16,6 +16,17 @@ export interface DragEvent {
16
16
  dataTransfer?: DataTransfer;
17
17
  result?: any;
18
18
  }
19
+ export interface DragEndEvent {
20
+ type: "dragend";
21
+ /** The triggering pointer event, or `null` when the operation was cancelled via the keyboard. */
22
+ event: DragEvent["event"] | null;
23
+ /** Cursor position, or `null` when the operation was cancelled via the keyboard. */
24
+ cursor: CursorPosition | null;
25
+ source: DragEvent["source"];
26
+ /** `true` when the operation was cancelled (e.g. by pressing Esc) instead of dropped. */
27
+ cancelled: boolean;
28
+ result?: any;
29
+ }
19
30
  export interface DragDropOptions {
20
31
  sourceEl?: Element | null;
21
32
  clone?: any;
@@ -30,7 +41,7 @@ export interface IDropZone {
30
41
  onDragStart?: DragEventHandler;
31
42
  onDragAway?: DragEventHandler;
32
43
  onDragNear?: DragEventHandler;
33
- onDragEnd?: DragEventHandler;
44
+ onDragEnd?: (e: DragEndEvent) => void;
34
45
  onDragMeasure?: (e: DragEvent, operation: DragDropOperationContext) => {
35
46
  over: number | false;
36
47
  near: number | boolean;
@@ -44,7 +55,7 @@ export interface IDropZone {
44
55
  }
45
56
  export type UnregisterFunction = () => void;
46
57
  export declare function registerDropZone(dropZone: IDropZone): UnregisterFunction;
47
- export declare function initiateDragDrop(e: MouseEvent | TouchEvent | React.MouseEvent | React.TouchEvent, options?: DragDropOptions, onDragEnd?: (e?: DragEvent) => void): void;
58
+ export declare function initiateDragDrop(e: MouseEvent | TouchEvent | React.MouseEvent | React.TouchEvent, options?: DragDropOptions, onDragEnd?: (e?: DragEndEvent) => void): void;
48
59
  export declare function ddMouseDown(e: React.MouseEvent | React.TouchEvent): void;
49
60
  export declare function ddMouseUp(): void;
50
61
  export declare function ddDetect(e: MouseEvent | TouchEvent | React.TouchEvent | React.MouseEvent): void | true;
@@ -1 +1 @@
1
- {"version":3,"file":"ops.d.ts","sourceRoot":"","sources":["../../../src/widgets/drag-drop/ops.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ops.d.ts","sourceRoot":"","sources":["../../../src/widgets/drag-drop/ops.tsx"],"names":[],"mappings":"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"}
@@ -19,6 +19,7 @@ let puppet = null;
19
19
  let scrollTimer = null;
20
20
  let vscrollParent = null;
21
21
  let hscrollParent = null;
22
+ let releaseCapture = null;
22
23
  export function registerDropZone(dropZone) {
23
24
  dropZones.push(dropZone);
24
25
  return () => {
@@ -107,7 +108,16 @@ export function initiateDragDrop(e, options = {}, onDragEnd) {
107
108
  dragStartedZones.set(zone, true);
108
109
  });
109
110
  notifyDragMove(e, null);
110
- captureMouseOrTouch(e, notifyDragMove, notifyDragDrop);
111
+ releaseCapture = captureMouseOrTouch(e, notifyDragMove, notifyDragDrop);
112
+ document.addEventListener("keydown", onDragKeyDown, true);
113
+ }
114
+ function onDragKeyDown(e) {
115
+ if (!puppet || e.key !== "Escape")
116
+ return;
117
+ //cancel the operation without dropping; there is no pointer event to report
118
+ e.preventDefault();
119
+ e.stopPropagation();
120
+ notifyDragDrop(null, true);
111
121
  }
112
122
  function notifyDragMove(e, _captureData) {
113
123
  let event = getDragEvent(e, "dragmove");
@@ -222,27 +232,44 @@ function clearScrollTimer() {
222
232
  scrollTimer = null;
223
233
  }
224
234
  }
225
- function notifyDragDrop(e) {
235
+ function notifyDragDrop(e, cancelled = false) {
236
+ if (!puppet)
237
+ return;
226
238
  clearScrollTimer();
227
- let event = getDragEvent(e, "dragdrop");
239
+ document.removeEventListener("keydown", onDragKeyDown, true);
228
240
  if (puppet.stop)
229
241
  puppet.stop();
230
- if (activeZone && activeZone.onDrop)
231
- event.result = activeZone.onDrop(event);
242
+ //a keyboard cancellation has no pointer event, so the drop and away notifications are skipped
243
+ let dropEvent = !cancelled && e ? getDragEvent(e, "dragdrop") : null;
244
+ let result;
245
+ if (dropEvent && activeZone && activeZone.onDrop)
246
+ result = activeZone.onDrop(dropEvent);
247
+ let endEvent = {
248
+ type: "dragend",
249
+ event: e,
250
+ cursor: e ? getCursorPos(e) : null,
251
+ source: puppet.source,
252
+ cancelled,
253
+ result,
254
+ };
232
255
  dropZones.forEach((zone) => {
233
- if (nearZones != null && zone.onDragAway && nearZones.has(zone))
234
- zone.onDragAway(event);
256
+ if (dropEvent && nearZones != null && zone.onDragAway && nearZones.has(zone))
257
+ zone.onDragAway(dropEvent);
235
258
  if (!dragStartedZones.has(zone))
236
259
  return;
237
260
  if (zone.onDragEnd)
238
- zone.onDragEnd(event);
261
+ zone.onDragEnd(endEvent);
239
262
  });
240
263
  if (puppet.onDragEnd)
241
- puppet.onDragEnd(event);
264
+ puppet.onDragEnd(endEvent);
265
+ //tear down the mouse/touch capture when cancelling; on a normal drop the capture ends itself
266
+ if (cancelled && releaseCapture)
267
+ releaseCapture();
242
268
  nearZones = null;
243
269
  activeZone = null;
244
270
  puppet = null;
245
271
  dragStartedZones = null;
272
+ releaseCapture = null;
246
273
  }
247
274
  function getDragEvent(event, type) {
248
275
  return {
@@ -141,6 +141,7 @@ class Input extends VDOM.Component {
141
141
  visited: state.visited,
142
142
  focus: this.state.focus,
143
143
  icon: !!icon,
144
+ clear: insideButton != null,
144
145
  empty: empty && !data.placeholder,
145
146
  error: data.error &&
146
147
  (state.visited || !suppressErrorsUntilVisited || !empty),
@@ -5,14 +5,14 @@ import { DataAdapter, DataAdapterRecord } from "../../ui/adapter/DataAdapter";
5
5
  import { GroupAdapter } from "../../ui/adapter/GroupAdapter";
6
6
  import { ContainerBase, StyledContainerConfig } from "../../ui/Container";
7
7
  import { Instance } from "../../ui/Instance";
8
- import { BooleanProp, ClassProp, CollatorOptions, Config, DataRecord, NumberProp, Prop, RecordAlias, SortDirection, SortersProp, StringProp, StructuredProp, StyleProp, UnknownProp } from "../../ui/Prop";
8
+ import { BooleanProp, ClassProp, CollatorOptions, Config, DataRecord, NumberProp, Prop, RecordAlias, Sorter, SortDirection, SortersProp, StringProp, StructuredProp, StyleProp, UnknownProp } from "../../ui/Prop";
9
9
  import { PureContainerConfig } from "../../ui/PureContainer";
10
10
  import { RenderingContext } from "../../ui/RenderingContext";
11
11
  import { Selection, SimpleSelection } from "../../ui/selection/Selection";
12
12
  import type { KeySelection } from "../../ui/selection/KeySelection";
13
13
  import type { PropertySelection } from "../../ui/selection/PropertySelection";
14
14
  import { WidgetConfig } from "../../ui/Widget";
15
- import { DragEvent } from "../drag-drop/ops";
15
+ import { DragEvent, DragEndEvent } from "../drag-drop/ops";
16
16
  import { GridRow, GridRowConfig, GridRowInstance } from "./GridRow";
17
17
  import { CreateConfig } from "../../util";
18
18
  import type { TreeAdapter } from "../../ui/adapter/TreeAdapter";
@@ -81,6 +81,15 @@ export interface GridGroupingConfig<T> {
81
81
  name?: StringProp;
82
82
  text?: StringProp;
83
83
  comparer?: (a: GroupingResult<T>, b: GroupingResult<T>) => number;
84
+ /**
85
+ * Sort groups by a single field resolved against the group's key, aggregates and name.
86
+ * Use an aggregate alias to sort by an aggregate, or a key field to sort by key.
87
+ */
88
+ sortField?: string;
89
+ /** Sort direction used together with `sortField`. Defaults to `"ASC"`. */
90
+ sortDirection?: SortDirection;
91
+ /** Multi-field group sorting. Each sorter's `field` is resolved against the group's key, aggregates and name. */
92
+ sorters?: Sorter[];
84
93
  }
85
94
  export interface GridColumnHeaderConfig {
86
95
  text?: StringProp;
@@ -250,7 +259,7 @@ export interface GridConfig<T = any> extends StyledContainerConfig {
250
259
  onDrop?: string | ((e: GridDragEvent<T>, instance: Instance) => void);
251
260
  onDropTest?: string | ((e: DragEvent, instance: Instance) => boolean);
252
261
  onDragStart?: string | ((e: DragEvent, instance: Instance) => void);
253
- onDragEnd?: string | ((e: DragEvent, instance: Instance) => void);
262
+ onDragEnd?: string | ((e: DragEndEvent, instance: Instance) => void);
254
263
  onDragOver?: string | ((e: GridDragEvent<T>, instance: Instance) => void | boolean);
255
264
  onRowDropTest?: string | ((e: DragEvent, instance: Instance) => boolean);
256
265
  onRowDragOver?: string | ((e: GridRowDragEvent<T>, instance: Instance) => void | boolean);
@@ -331,6 +340,12 @@ export interface GridConfig<T = any> extends StyledContainerConfig {
331
340
  onRef?: string | ((element: any, instance: GridInstance) => void);
332
341
  /** When enabled, groups are shown in the same order as the source records. */
333
342
  preserveGroupOrder?: boolean;
343
+ /**
344
+ * When enabled, sorting by a column header also reorders groups. The active sort field is resolved
345
+ * against each group's key fields, aggregates and name, so it works for both grouping columns and
346
+ * aggregate columns. Ignored when `preserveGroupOrder` is set.
347
+ */
348
+ sortGroups?: boolean;
334
349
  }
335
350
  export interface GridCellInfo {
336
351
  column: any;
@@ -452,6 +467,7 @@ export declare class Grid<T = unknown> extends ContainerBase<GridConfig<T>, Grid
452
467
  onCreateIsRecordDraggable?: any;
453
468
  onRef?: any;
454
469
  preserveGroupOrder: boolean;
470
+ sortGroups: boolean;
455
471
  styled: boolean;
456
472
  selectable?: boolean;
457
473
  recordsAccessor: any;