@vuu-ui/vuu-table 0.11.3 → 0.12.1

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 (65) hide show
  1. package/cjs/Table.js +7 -8
  2. package/cjs/Table.js.map +1 -1
  3. package/cjs/bulk-edit/BulkEditDialog.js +3 -3
  4. package/cjs/bulk-edit/BulkEditDialog.js.map +1 -1
  5. package/cjs/bulk-edit/BulkEditRow.js +1 -1
  6. package/cjs/bulk-edit/BulkEditRow.js.map +1 -1
  7. package/cjs/bulk-edit/useBulkEditPanel.js.map +1 -1
  8. package/cjs/header-cell/HeaderCell.js +5 -4
  9. package/cjs/header-cell/HeaderCell.js.map +1 -1
  10. package/cjs/index.js +3 -2
  11. package/cjs/index.js.map +1 -1
  12. package/cjs/useTable.js +27 -30
  13. package/cjs/useTable.js.map +1 -1
  14. package/cjs/useTableAndColumnSettings.js +2 -2
  15. package/cjs/useTableAndColumnSettings.js.map +1 -1
  16. package/cjs/useTableContextMenu.js +24 -10
  17. package/cjs/useTableContextMenu.js.map +1 -1
  18. package/cjs/useTableModel.js +0 -4
  19. package/cjs/useTableModel.js.map +1 -1
  20. package/esm/Table.js +7 -8
  21. package/esm/Table.js.map +1 -1
  22. package/esm/bulk-edit/BulkEditDialog.js +3 -3
  23. package/esm/bulk-edit/BulkEditDialog.js.map +1 -1
  24. package/esm/bulk-edit/BulkEditRow.js +1 -1
  25. package/esm/bulk-edit/BulkEditRow.js.map +1 -1
  26. package/esm/bulk-edit/useBulkEditPanel.js.map +1 -1
  27. package/esm/header-cell/HeaderCell.js +4 -3
  28. package/esm/header-cell/HeaderCell.js.map +1 -1
  29. package/esm/index.js +2 -1
  30. package/esm/index.js.map +1 -1
  31. package/esm/useTable.js +29 -32
  32. package/esm/useTable.js.map +1 -1
  33. package/esm/useTableAndColumnSettings.js +2 -2
  34. package/esm/useTableAndColumnSettings.js.map +1 -1
  35. package/esm/useTableContextMenu.js +24 -11
  36. package/esm/useTableContextMenu.js.map +1 -1
  37. package/esm/useTableModel.js +1 -3
  38. package/esm/useTableModel.js.map +1 -1
  39. package/package.json +13 -11
  40. package/types/Table.d.ts +1 -1
  41. package/types/bulk-edit/BulkEditRow.d.ts +1 -1
  42. package/types/index.d.ts +1 -0
  43. package/types/useTable.d.ts +2 -3
  44. package/types/useTableAndColumnSettings.d.ts +2 -2
  45. package/types/useTableContextMenu.d.ts +16 -4
  46. package/types/useTableModel.d.ts +4 -20
  47. package/cjs/column-menu/ColumnMenu.css.js +0 -6
  48. package/cjs/column-menu/ColumnMenu.css.js.map +0 -1
  49. package/cjs/column-menu/ColumnMenu.js +0 -31
  50. package/cjs/column-menu/ColumnMenu.js.map +0 -1
  51. package/cjs/context-menu/buildContextMenuDescriptors.js +0 -214
  52. package/cjs/context-menu/buildContextMenuDescriptors.js.map +0 -1
  53. package/cjs/context-menu/useHandleTableContextMenu.js +0 -81
  54. package/cjs/context-menu/useHandleTableContextMenu.js.map +0 -1
  55. package/esm/column-menu/ColumnMenu.css.js +0 -4
  56. package/esm/column-menu/ColumnMenu.css.js.map +0 -1
  57. package/esm/column-menu/ColumnMenu.js +0 -29
  58. package/esm/column-menu/ColumnMenu.js.map +0 -1
  59. package/esm/context-menu/buildContextMenuDescriptors.js +0 -212
  60. package/esm/context-menu/buildContextMenuDescriptors.js.map +0 -1
  61. package/esm/context-menu/useHandleTableContextMenu.js +0 -79
  62. package/esm/context-menu/useHandleTableContextMenu.js.map +0 -1
  63. package/types/context-menu/buildContextMenuDescriptors.d.ts +0 -3
  64. package/types/context-menu/index.d.ts +0 -2
  65. package/types/context-menu/useHandleTableContextMenu.d.ts +0 -20
@@ -1,212 +0,0 @@
1
- import { isNumericColumn } from '@vuu-ui/vuu-utils';
2
-
3
- const buildContextMenuDescriptors = (dataSource) => (location, options) => {
4
- const descriptors = [];
5
- if (dataSource === void 0) {
6
- return descriptors;
7
- }
8
- if (location === "header" || location === "column-menu") {
9
- descriptors.push(
10
- ...buildSortMenuItems(options, dataSource)
11
- );
12
- descriptors.push(
13
- ...buildGroupMenuItems(options, dataSource)
14
- );
15
- descriptors.push(
16
- ...buildAggregationMenuItems(options, dataSource)
17
- );
18
- descriptors.push(...buildColumnDisplayMenuItems(options));
19
- descriptors.push({
20
- action: "column-settings",
21
- icon: "settings",
22
- label: `Column Settings ...`,
23
- options
24
- });
25
- descriptors.push({
26
- action: "table-settings",
27
- icon: "settings",
28
- label: `DataGrid Settings ...`,
29
- options
30
- });
31
- }
32
- return descriptors;
33
- };
34
- function buildSortMenuItems(options, { sort: { sortDefs } }) {
35
- const { column } = options;
36
- const menuItems = [];
37
- if (column === void 0) {
38
- return menuItems;
39
- }
40
- const hasSort = sortDefs.length > 0;
41
- if (column.sorted === "A") {
42
- menuItems.push({
43
- label: "Reverse Sort (DSC)",
44
- action: "sort-dsc",
45
- options
46
- });
47
- } else if (column.sorted === "D") {
48
- menuItems.push({
49
- label: "Reverse Sort (ASC)",
50
- action: "sort-asc",
51
- options
52
- });
53
- } else if (typeof column.sorted === "number") {
54
- if (column.sorted > 0) {
55
- menuItems.push({
56
- label: "Reverse Sort (DSC)",
57
- action: "sort-add-dsc",
58
- options
59
- });
60
- } else {
61
- menuItems.push({
62
- label: "Reverse Sort (ASC)",
63
- action: "sort-add-asc",
64
- options
65
- });
66
- }
67
- if (hasSort && Math.abs(column.sorted) < sortDefs.length) {
68
- menuItems.push({
69
- label: "Remove from sort",
70
- action: "sort-remove",
71
- options
72
- });
73
- }
74
- menuItems.push({
75
- label: "New Sort",
76
- children: [
77
- { label: "Ascending", action: "sort-asc", options },
78
- { label: "Descending", action: "sort-dsc", options }
79
- ]
80
- });
81
- } else if (hasSort) {
82
- menuItems.push({
83
- label: "Add to sort",
84
- children: [
85
- { label: "Ascending", action: "sort-add-asc", options },
86
- { label: "Descending", action: "sort-add-dsc", options }
87
- ]
88
- });
89
- menuItems.push({
90
- label: "New Sort",
91
- children: [
92
- { label: "Ascending", action: "sort-asc", options },
93
- { label: "Descending", action: "sort-dsc", options }
94
- ]
95
- });
96
- } else {
97
- menuItems.push({
98
- label: "Sort",
99
- children: [
100
- { label: "Ascending", action: "sort-asc", options },
101
- { label: "Descending", action: "sort-dsc", options }
102
- ]
103
- });
104
- }
105
- return menuItems;
106
- }
107
- function buildAggregationMenuItems(options, dataSource) {
108
- const { column } = options;
109
- if (column === void 0 || dataSource.groupBy?.length === 0) {
110
- return [];
111
- }
112
- const { name, label = name } = column;
113
- return [
114
- {
115
- label: `Aggregate ${label}`,
116
- children: [
117
- { label: "Count", action: "agg-count", options },
118
- { label: "Distinct", action: "agg-distinct", options }
119
- ].concat(
120
- isNumericColumn(column) ? [
121
- { label: "Sum", action: "agg-sum", options },
122
- { label: "Avg", action: "agg-avg", options },
123
- { label: "High", action: "agg-high", options },
124
- { label: "Low", action: "agg-low", options }
125
- ] : []
126
- )
127
- }
128
- ];
129
- }
130
- const pinColumn = (options, pinLocation) => ({
131
- label: `Pin ${pinLocation}`,
132
- action: `column-pin-${pinLocation}`,
133
- options
134
- });
135
- const pinLeft = (options) => pinColumn(options, "left");
136
- const pinFloating = (options) => pinColumn(options, "floating");
137
- const pinRight = (options) => pinColumn(options, "right");
138
- function buildColumnDisplayMenuItems(options) {
139
- const { column } = options;
140
- if (column === void 0) {
141
- return [];
142
- }
143
- const { pin } = column;
144
- const menuItems = [
145
- {
146
- label: `Hide column`,
147
- action: "column-hide",
148
- options
149
- },
150
- {
151
- label: `Remove column`,
152
- action: "column-remove",
153
- options
154
- }
155
- ];
156
- if (pin === void 0) {
157
- menuItems.push({
158
- label: `Pin column`,
159
- children: [pinLeft(options), pinFloating(options), pinRight(options)]
160
- });
161
- } else if (pin === "left") {
162
- menuItems.push(
163
- { label: "Unpin column", action: "column-unpin", options },
164
- {
165
- label: `Pin column`,
166
- children: [pinFloating(options), pinRight(options)]
167
- }
168
- );
169
- } else if (pin === "right") {
170
- menuItems.push(
171
- { label: "Unpin column", action: "column-unpin", options },
172
- {
173
- label: `Pin column`,
174
- children: [pinLeft(options), pinFloating(options)]
175
- }
176
- );
177
- } else if (pin === "floating") {
178
- menuItems.push(
179
- { label: "Unpin column", action: "column-unpin", options },
180
- {
181
- label: `Pin column`,
182
- children: [pinLeft(options), pinRight(options)]
183
- }
184
- );
185
- }
186
- return menuItems;
187
- }
188
- function buildGroupMenuItems(options, { groupBy }) {
189
- const { column } = options;
190
- const menuItems = [];
191
- if (column === void 0) {
192
- return menuItems;
193
- }
194
- const { name, label = name } = column;
195
- if (groupBy?.length === 0) {
196
- menuItems.push({
197
- label: `Group by ${label}`,
198
- action: "group",
199
- options
200
- });
201
- } else {
202
- menuItems.push({
203
- label: `Add ${label} to group by`,
204
- action: "group-add",
205
- options
206
- });
207
- }
208
- return menuItems;
209
- }
210
-
211
- export { buildContextMenuDescriptors };
212
- //# sourceMappingURL=buildContextMenuDescriptors.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"buildContextMenuDescriptors.js","sources":["../../src/context-menu/buildContextMenuDescriptors.ts"],"sourcesContent":["import {\n ContextMenuItemDescriptor,\n DataSource,\n MenuBuilder,\n} from \"@vuu-ui/vuu-data-types\";\nimport { RuntimeColumnDescriptor, PinLocation } from \"@vuu-ui/vuu-table-types\";\nimport { isNumericColumn } from \"@vuu-ui/vuu-utils\";\n\nexport type ContextMenuLocation = \"header\" | \"filter\" | \"grid\";\n\ntype MaybeColumn = { column?: RuntimeColumnDescriptor };\n\nexport const buildContextMenuDescriptors =\n (dataSource?: DataSource): MenuBuilder =>\n (location, options) => {\n const descriptors: ContextMenuItemDescriptor[] = [];\n if (dataSource === undefined) {\n return descriptors;\n }\n //TODO which should it be ?\n if (location === \"header\" || location === \"column-menu\") {\n descriptors.push(\n ...buildSortMenuItems(options as MaybeColumn, dataSource),\n );\n descriptors.push(\n ...buildGroupMenuItems(options as MaybeColumn, dataSource),\n );\n descriptors.push(\n ...buildAggregationMenuItems(options as MaybeColumn, dataSource),\n );\n descriptors.push(...buildColumnDisplayMenuItems(options as MaybeColumn));\n descriptors.push({\n action: \"column-settings\",\n icon: \"settings\",\n label: `Column Settings ...`,\n options,\n });\n descriptors.push({\n action: \"table-settings\",\n icon: \"settings\",\n label: `DataGrid Settings ...`,\n options,\n });\n }\n\n // if (options?.selectedRowCount){\n // // TODO pass the table name\n // const rpcActions = getRpcActions();\n // for (let {label, method} of rpcActions){\n // descriptors.push({action: Action.RpcCall, label, options: {method}})\n // }\n // }\n\n return descriptors;\n };\n\nfunction buildSortMenuItems(\n options: MaybeColumn,\n { sort: { sortDefs } }: DataSource,\n): ContextMenuItemDescriptor[] {\n const { column } = options;\n const menuItems: ContextMenuItemDescriptor[] = [];\n if (column === undefined) {\n return menuItems;\n }\n\n const hasSort = sortDefs.length > 0;\n\n if (column.sorted === \"A\") {\n menuItems.push({\n label: \"Reverse Sort (DSC)\",\n action: \"sort-dsc\",\n options,\n });\n } else if (column.sorted === \"D\") {\n menuItems.push({\n label: \"Reverse Sort (ASC)\",\n action: \"sort-asc\",\n options,\n });\n } else if (typeof column.sorted === \"number\") {\n if (column.sorted > 0) {\n menuItems.push({\n label: \"Reverse Sort (DSC)\",\n action: \"sort-add-dsc\",\n options,\n });\n } else {\n menuItems.push({\n label: \"Reverse Sort (ASC)\",\n action: \"sort-add-asc\",\n options,\n });\n }\n\n // removing the last column from a sort would be a no-op, so pointless\n if (hasSort && Math.abs(column.sorted) < sortDefs.length) {\n menuItems.push({\n label: \"Remove from sort\",\n action: \"sort-remove\",\n options,\n });\n }\n\n menuItems.push({\n label: \"New Sort\",\n children: [\n { label: \"Ascending\", action: \"sort-asc\", options },\n { label: \"Descending\", action: \"sort-dsc\", options },\n ],\n });\n } else if (hasSort) {\n menuItems.push({\n label: \"Add to sort\",\n children: [\n { label: \"Ascending\", action: \"sort-add-asc\", options },\n { label: \"Descending\", action: \"sort-add-dsc\", options },\n ],\n });\n menuItems.push({\n label: \"New Sort\",\n children: [\n { label: \"Ascending\", action: \"sort-asc\", options },\n { label: \"Descending\", action: \"sort-dsc\", options },\n ],\n });\n } else {\n menuItems.push({\n label: \"Sort\",\n children: [\n { label: \"Ascending\", action: \"sort-asc\", options },\n { label: \"Descending\", action: \"sort-dsc\", options },\n ],\n });\n }\n return menuItems;\n}\n\nfunction buildAggregationMenuItems(\n options: MaybeColumn,\n dataSource: DataSource,\n): ContextMenuItemDescriptor[] {\n const { column } = options;\n if (column === undefined || dataSource.groupBy?.length === 0) {\n return [];\n }\n const { name, label = name } = column;\n\n return [\n {\n label: `Aggregate ${label}`,\n children: [\n { label: \"Count\", action: \"agg-count\", options },\n { label: \"Distinct\", action: \"agg-distinct\", options },\n ].concat(\n isNumericColumn(column)\n ? [\n { label: \"Sum\", action: \"agg-sum\", options },\n { label: \"Avg\", action: \"agg-avg\", options },\n { label: \"High\", action: \"agg-high\", options },\n { label: \"Low\", action: \"agg-low\", options },\n ]\n : [],\n ),\n },\n ];\n}\n\nconst pinColumn = (options: unknown, pinLocation: PinLocation) =>\n ({\n label: `Pin ${pinLocation}`,\n action: `column-pin-${pinLocation}`,\n options,\n }) as ContextMenuItemDescriptor;\n\nconst pinLeft = (options: unknown) => pinColumn(options, \"left\");\nconst pinFloating = (options: unknown) => pinColumn(options, \"floating\");\nconst pinRight = (options: unknown) => pinColumn(options, \"right\");\n\nfunction buildColumnDisplayMenuItems(\n options: MaybeColumn,\n): ContextMenuItemDescriptor[] {\n const { column } = options;\n if (column === undefined) {\n return [];\n }\n const { pin } = column;\n\n const menuItems: ContextMenuItemDescriptor[] = [\n {\n label: `Hide column`,\n action: \"column-hide\",\n options,\n },\n {\n label: `Remove column`,\n action: \"column-remove\",\n options,\n },\n ];\n\n if (pin === undefined) {\n menuItems.push({\n label: `Pin column`,\n children: [pinLeft(options), pinFloating(options), pinRight(options)],\n });\n } else if (pin === \"left\") {\n menuItems.push(\n { label: \"Unpin column\", action: \"column-unpin\", options },\n {\n label: `Pin column`,\n children: [pinFloating(options), pinRight(options)],\n },\n );\n } else if (pin === \"right\") {\n menuItems.push(\n { label: \"Unpin column\", action: \"column-unpin\", options },\n {\n label: `Pin column`,\n children: [pinLeft(options), pinFloating(options)],\n },\n );\n } else if (pin === \"floating\") {\n menuItems.push(\n { label: \"Unpin column\", action: \"column-unpin\", options },\n {\n label: `Pin column`,\n children: [pinLeft(options), pinRight(options)],\n },\n );\n }\n\n return menuItems;\n}\n\nfunction buildGroupMenuItems(\n options: MaybeColumn,\n { groupBy }: DataSource,\n): ContextMenuItemDescriptor[] {\n const { column } = options;\n const menuItems: ContextMenuItemDescriptor[] = [];\n if (column === undefined) {\n return menuItems;\n }\n\n const { name, label = name } = column;\n\n if (groupBy?.length === 0) {\n menuItems.push({\n label: `Group by ${label}`,\n action: \"group\",\n options,\n });\n } else {\n menuItems.push({\n label: `Add ${label} to group by`,\n action: \"group-add\",\n options,\n });\n }\n\n return menuItems;\n}\n"],"names":[],"mappings":"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"}
@@ -1,79 +0,0 @@
1
- import { setAggregations, addGroupColumn, addSortColumn, setSortColumn, removeColumnFromFilter, AggregationType } from '@vuu-ui/vuu-utils';
2
-
3
- const removeFilterColumn = (dataSourceFilter, column) => {
4
- if (dataSourceFilter.filterStruct && column) {
5
- const [filterStruct, filter] = removeColumnFromFilter(
6
- column,
7
- dataSourceFilter.filterStruct
8
- );
9
- return {
10
- filter,
11
- filterStruct
12
- };
13
- } else {
14
- return dataSourceFilter;
15
- }
16
- };
17
- const { Average, Count, Distinct, High, Low, Sum } = AggregationType;
18
- const useHandleTableContextMenu = ({
19
- dataSource,
20
- onPersistentColumnOperation
21
- }) => {
22
- const handleContextMenuAction = (action) => {
23
- const gridOptions = action.options;
24
- if (gridOptions.column && dataSource) {
25
- const { column } = gridOptions;
26
- switch (action.menuId) {
27
- case "sort-asc":
28
- return dataSource.sort = setSortColumn(dataSource.sort, column, "A"), true;
29
- case "sort-dsc":
30
- return dataSource.sort = setSortColumn(dataSource.sort, column, "D"), true;
31
- case "sort-add-asc":
32
- return dataSource.sort = addSortColumn(dataSource.sort, column, "A"), true;
33
- case "sort-add-dsc":
34
- return dataSource.sort = addSortColumn(dataSource.sort, column, "D"), true;
35
- case "group":
36
- return dataSource.groupBy = addGroupColumn(dataSource.groupBy ?? [], column), true;
37
- case "group-add":
38
- return dataSource.groupBy = addGroupColumn(dataSource.groupBy ?? [], column), true;
39
- case "column-hide":
40
- return onPersistentColumnOperation({ type: "hideColumns", columns: [column] }), true;
41
- case "column-remove":
42
- return dataSource.columns = dataSource.columns.filter((name) => name !== column.name), true;
43
- case "filter-remove-column":
44
- return dataSource.filter = removeFilterColumn(dataSource.filter, column), true;
45
- case "remove-filters":
46
- return dataSource.filter = { filter: "" }, true;
47
- case "agg-avg":
48
- return dataSource.aggregations = setAggregations(dataSource.aggregations, column, Average), true;
49
- case "agg-high":
50
- return dataSource.aggregations = setAggregations(dataSource.aggregations, column, High), true;
51
- case "agg-low":
52
- return dataSource.aggregations = setAggregations(dataSource.aggregations, column, Low), true;
53
- case "agg-count":
54
- return dataSource.aggregations = setAggregations(dataSource.aggregations, column, Count), true;
55
- case "agg-distinct":
56
- return dataSource.aggregations = setAggregations(dataSource.aggregations, column, Distinct), true;
57
- case "agg-sum":
58
- return dataSource.aggregations = setAggregations(dataSource.aggregations, column, Sum), true;
59
- case "column-pin-floating":
60
- return onPersistentColumnOperation({ type: "pinColumn", column, pin: "floating" }), true;
61
- case "column-pin-left":
62
- return onPersistentColumnOperation({ type: "pinColumn", column, pin: "left" }), true;
63
- case "column-pin-right":
64
- return onPersistentColumnOperation({ type: "pinColumn", column, pin: "right" }), true;
65
- case "column-unpin":
66
- return onPersistentColumnOperation({ type: "pinColumn", column, pin: void 0 }), true;
67
- case "column-settings":
68
- return onPersistentColumnOperation({ type: "columnSettings", column }), true;
69
- case "table-settings":
70
- return onPersistentColumnOperation({ type: "tableSettings" }), true;
71
- }
72
- }
73
- return false;
74
- };
75
- return handleContextMenuAction;
76
- };
77
-
78
- export { useHandleTableContextMenu };
79
- //# sourceMappingURL=useHandleTableContextMenu.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useHandleTableContextMenu.js","sources":["../../src/context-menu/useHandleTableContextMenu.ts"],"sourcesContent":["/* eslint-disable no-sequences */\nimport { RuntimeColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { Filter } from \"@vuu-ui/vuu-filter-types\";\nimport { removeColumnFromFilter } from \"@vuu-ui/vuu-utils\";\nimport { VuuFilter } from \"@vuu-ui/vuu-protocol-types\";\nimport {\n DataSource,\n DataSourceFilter,\n MenuActionHandler,\n} from \"@vuu-ui/vuu-data-types\";\nimport { PersistentColumnAction } from \"../useTableModel\";\nimport {\n addGroupColumn,\n addSortColumn,\n AggregationType,\n setAggregations,\n setSortColumn,\n} from \"@vuu-ui/vuu-utils\";\n\nexport interface ContextMenuOptions {\n column?: RuntimeColumnDescriptor;\n filter?: Filter;\n sort?: VuuFilter;\n}\nexport interface ContextMenuHookProps {\n dataSource?: DataSource;\n /**\n * A persistent Column Operation is any manipulation of a table column that should be\n * persisted across user sessions. e.g. if user pins a column, column should still be\n * pinned next time user opens app.\n */\n onPersistentColumnOperation: (action: PersistentColumnAction) => void;\n}\n\nconst removeFilterColumn = (\n dataSourceFilter: DataSourceFilter,\n column: RuntimeColumnDescriptor,\n) => {\n if (dataSourceFilter.filterStruct && column) {\n const [filterStruct, filter] = removeColumnFromFilter(\n column,\n dataSourceFilter.filterStruct,\n );\n return {\n filter,\n filterStruct,\n };\n } else {\n return dataSourceFilter;\n }\n};\n\nconst { Average, Count, Distinct, High, Low, Sum } = AggregationType;\n\nexport const useHandleTableContextMenu = ({\n dataSource,\n onPersistentColumnOperation,\n}: ContextMenuHookProps) => {\n /** return {boolean} used by caller to determine whether to forward to additional installed context menu handlers */\n const handleContextMenuAction: MenuActionHandler = (action): boolean => {\n const gridOptions = action.options as ContextMenuOptions;\n if (gridOptions.column && dataSource) {\n const { column } = gridOptions;\n // prettier-ignore\n switch(action.menuId){\n case \"sort-asc\": return (dataSource.sort = setSortColumn(dataSource.sort, column, \"A\")), true;\n case \"sort-dsc\": return (dataSource.sort = setSortColumn(dataSource.sort, column, \"D\")), true;\n case \"sort-add-asc\": return (dataSource.sort = addSortColumn(dataSource.sort, column, \"A\")), true;\n case \"sort-add-dsc\": return (dataSource.sort = addSortColumn(dataSource.sort, column, \"D\")), true;\n case \"group\": return (dataSource.groupBy = addGroupColumn(dataSource.groupBy ?? [], column)), true;\n case \"group-add\": return (dataSource.groupBy = addGroupColumn(dataSource.groupBy ?? [], column)), true;\n case \"column-hide\": return onPersistentColumnOperation({type: \"hideColumns\", columns: [column]}), true;\n case \"column-remove\": return (dataSource.columns = dataSource.columns.filter(name => name !== column.name)), true\n case \"filter-remove-column\": return (dataSource.filter = removeFilterColumn(dataSource.filter, column)), true;\n case \"remove-filters\": return (dataSource.filter = {filter:\"\"}), true;\n case \"agg-avg\": return dataSource.aggregations = (setAggregations(dataSource.aggregations, column, Average)), true;\n case \"agg-high\": return dataSource.aggregations = (setAggregations(dataSource.aggregations, column, High)), true;\n case \"agg-low\": return dataSource.aggregations = (setAggregations(dataSource.aggregations, column, Low)), true;\n case \"agg-count\": return dataSource.aggregations = (setAggregations(dataSource.aggregations, column, Count)), true;\n case \"agg-distinct\": return dataSource.aggregations = (setAggregations(dataSource.aggregations, column, Distinct)), true;\n case \"agg-sum\": return dataSource.aggregations = (setAggregations(dataSource.aggregations, column, Sum)), true;\n case \"column-pin-floating\": return onPersistentColumnOperation({type: \"pinColumn\", column, pin: \"floating\"}), true;\n case \"column-pin-left\": return onPersistentColumnOperation({type: \"pinColumn\", column, pin: \"left\"}), true;\n case \"column-pin-right\": return onPersistentColumnOperation({type: \"pinColumn\", column, pin: \"right\"}), true;\n case \"column-unpin\": return onPersistentColumnOperation({type: \"pinColumn\", column, pin: undefined}), true\n case \"column-settings\": return onPersistentColumnOperation({type: \"columnSettings\", column}), true\n case \"table-settings\": return onPersistentColumnOperation({type: \"tableSettings\"}), true\n default:\n }\n }\n return false;\n };\n\n return handleContextMenuAction;\n};\n"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { DataSource, MenuBuilder } from "@vuu-ui/vuu-data-types";
2
- export type ContextMenuLocation = "header" | "filter" | "grid";
3
- export declare const buildContextMenuDescriptors: (dataSource?: DataSource) => MenuBuilder;
@@ -1,2 +0,0 @@
1
- export * from "./buildContextMenuDescriptors";
2
- export * from "./useHandleTableContextMenu";
@@ -1,20 +0,0 @@
1
- import { RuntimeColumnDescriptor } from "@vuu-ui/vuu-table-types";
2
- import { Filter } from "@vuu-ui/vuu-filter-types";
3
- import { VuuFilter } from "@vuu-ui/vuu-protocol-types";
4
- import { DataSource, MenuActionHandler } from "@vuu-ui/vuu-data-types";
5
- import { PersistentColumnAction } from "../useTableModel";
6
- export interface ContextMenuOptions {
7
- column?: RuntimeColumnDescriptor;
8
- filter?: Filter;
9
- sort?: VuuFilter;
10
- }
11
- export interface ContextMenuHookProps {
12
- dataSource?: DataSource;
13
- /**
14
- * A persistent Column Operation is any manipulation of a table column that should be
15
- * persisted across user sessions. e.g. if user pins a column, column should still be
16
- * pinned next time user opens app.
17
- */
18
- onPersistentColumnOperation: (action: PersistentColumnAction) => void;
19
- }
20
- export declare const useHandleTableContextMenu: ({ dataSource, onPersistentColumnOperation, }: ContextMenuHookProps) => MenuActionHandler;