@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.
- package/cjs/Table.js +7 -8
- package/cjs/Table.js.map +1 -1
- package/cjs/bulk-edit/BulkEditDialog.js +3 -3
- package/cjs/bulk-edit/BulkEditDialog.js.map +1 -1
- package/cjs/bulk-edit/BulkEditRow.js +1 -1
- package/cjs/bulk-edit/BulkEditRow.js.map +1 -1
- package/cjs/bulk-edit/useBulkEditPanel.js.map +1 -1
- package/cjs/header-cell/HeaderCell.js +5 -4
- package/cjs/header-cell/HeaderCell.js.map +1 -1
- package/cjs/index.js +3 -2
- package/cjs/index.js.map +1 -1
- package/cjs/useTable.js +27 -30
- package/cjs/useTable.js.map +1 -1
- package/cjs/useTableAndColumnSettings.js +2 -2
- package/cjs/useTableAndColumnSettings.js.map +1 -1
- package/cjs/useTableContextMenu.js +24 -10
- package/cjs/useTableContextMenu.js.map +1 -1
- package/cjs/useTableModel.js +0 -4
- package/cjs/useTableModel.js.map +1 -1
- package/esm/Table.js +7 -8
- package/esm/Table.js.map +1 -1
- package/esm/bulk-edit/BulkEditDialog.js +3 -3
- package/esm/bulk-edit/BulkEditDialog.js.map +1 -1
- package/esm/bulk-edit/BulkEditRow.js +1 -1
- package/esm/bulk-edit/BulkEditRow.js.map +1 -1
- package/esm/bulk-edit/useBulkEditPanel.js.map +1 -1
- package/esm/header-cell/HeaderCell.js +4 -3
- package/esm/header-cell/HeaderCell.js.map +1 -1
- package/esm/index.js +2 -1
- package/esm/index.js.map +1 -1
- package/esm/useTable.js +29 -32
- package/esm/useTable.js.map +1 -1
- package/esm/useTableAndColumnSettings.js +2 -2
- package/esm/useTableAndColumnSettings.js.map +1 -1
- package/esm/useTableContextMenu.js +24 -11
- package/esm/useTableContextMenu.js.map +1 -1
- package/esm/useTableModel.js +1 -3
- package/esm/useTableModel.js.map +1 -1
- package/package.json +13 -11
- package/types/Table.d.ts +1 -1
- package/types/bulk-edit/BulkEditRow.d.ts +1 -1
- package/types/index.d.ts +1 -0
- package/types/useTable.d.ts +2 -3
- package/types/useTableAndColumnSettings.d.ts +2 -2
- package/types/useTableContextMenu.d.ts +16 -4
- package/types/useTableModel.d.ts +4 -20
- package/cjs/column-menu/ColumnMenu.css.js +0 -6
- package/cjs/column-menu/ColumnMenu.css.js.map +0 -1
- package/cjs/column-menu/ColumnMenu.js +0 -31
- package/cjs/column-menu/ColumnMenu.js.map +0 -1
- package/cjs/context-menu/buildContextMenuDescriptors.js +0 -214
- package/cjs/context-menu/buildContextMenuDescriptors.js.map +0 -1
- package/cjs/context-menu/useHandleTableContextMenu.js +0 -81
- package/cjs/context-menu/useHandleTableContextMenu.js.map +0 -1
- package/esm/column-menu/ColumnMenu.css.js +0 -4
- package/esm/column-menu/ColumnMenu.css.js.map +0 -1
- package/esm/column-menu/ColumnMenu.js +0 -29
- package/esm/column-menu/ColumnMenu.js.map +0 -1
- package/esm/context-menu/buildContextMenuDescriptors.js +0 -212
- package/esm/context-menu/buildContextMenuDescriptors.js.map +0 -1
- package/esm/context-menu/useHandleTableContextMenu.js +0 -79
- package/esm/context-menu/useHandleTableContextMenu.js.map +0 -1
- package/types/context-menu/buildContextMenuDescriptors.d.ts +0 -3
- package/types/context-menu/index.d.ts +0 -2
- package/types/context-menu/useHandleTableContextMenu.d.ts +0 -20
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { DataSourceConfig, SchemaColumn } from "@vuu-ui/vuu-data-types";
|
|
2
2
|
import { ColumnDescriptor, TableConfig } from "@vuu-ui/vuu-table-types";
|
|
3
|
-
import {
|
|
3
|
+
import { DisplayColumnSettingsAction } from "@vuu-ui/vuu-table-extras/src/column-menu/column-action-types";
|
|
4
4
|
export interface TableAndColumnSettingsHookProps {
|
|
5
5
|
availableColumns: SchemaColumn[];
|
|
6
6
|
onAvailableColumnsChange?: (columns: SchemaColumn[]) => void;
|
|
@@ -10,6 +10,6 @@ export interface TableAndColumnSettingsHookProps {
|
|
|
10
10
|
tableConfig: TableConfig;
|
|
11
11
|
}
|
|
12
12
|
export declare const useTableAndColumnSettings: ({ availableColumns: availableColumnsProps, onAvailableColumnsChange, onConfigChange, onCreateCalculatedColumn, onDataSourceConfigChange, tableConfig, }: TableAndColumnSettingsHookProps) => {
|
|
13
|
-
showColumnSettingsPanel: (action:
|
|
13
|
+
showColumnSettingsPanel: (action: DisplayColumnSettingsAction) => void;
|
|
14
14
|
showTableSettingsPanel: () => void;
|
|
15
15
|
};
|
|
@@ -1,11 +1,23 @@
|
|
|
1
1
|
import { DataSource, DataSourceRow } from "@vuu-ui/vuu-data-types";
|
|
2
|
-
import {
|
|
2
|
+
import { ColumnDescriptor } from "@vuu-ui/vuu-table-types";
|
|
3
|
+
import { ColumnMap } from "@vuu-ui/vuu-utils";
|
|
3
4
|
import { MouseEvent } from "react";
|
|
4
5
|
export interface TableContextMenuHookProps {
|
|
5
|
-
|
|
6
|
+
allowContextMenu?: boolean;
|
|
7
|
+
columns: ColumnDescriptor[];
|
|
6
8
|
data: DataSourceRow[];
|
|
7
9
|
dataSource: DataSource;
|
|
8
10
|
getSelectedRows: () => DataSourceRow[];
|
|
9
|
-
headerCount
|
|
11
|
+
headerCount?: number;
|
|
10
12
|
}
|
|
11
|
-
export
|
|
13
|
+
export type TableMenuLocation = "grid" | "header" | "filter";
|
|
14
|
+
export interface TableContextMenuOptions {
|
|
15
|
+
columnMap: ColumnMap;
|
|
16
|
+
column: ColumnDescriptor;
|
|
17
|
+
columns?: ColumnDescriptor[];
|
|
18
|
+
row: DataSourceRow;
|
|
19
|
+
selectedRows: DataSourceRow[];
|
|
20
|
+
viewport?: string;
|
|
21
|
+
}
|
|
22
|
+
export declare const isTableLocation: (location: string) => location is TableMenuLocation;
|
|
23
|
+
export declare const useTableContextMenu: ({ allowContextMenu, columns, data, dataSource, getSelectedRows, headerCount, }: TableContextMenuHookProps) => ((evt: MouseEvent<HTMLElement>) => void) | undefined;
|
package/types/useTableModel.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { ColumnDescriptor, ColumnLayout, PinLocation, ResizePhase, RuntimeColumnDescriptor, TableAttributes, TableConfig, TableHeadings, TableSelectionModel } from "@vuu-ui/vuu-table-types";
|
|
2
|
-
import { DataSource,
|
|
3
|
-
import { VuuTable } from "@vuu-ui/vuu-protocol-types";
|
|
2
|
+
import { DataSource, TableSchema, WithBaseFilter, WithFullConfig } from "@vuu-ui/vuu-data-types";
|
|
4
3
|
import { Reducer } from "react";
|
|
5
4
|
/**
|
|
6
5
|
* TableModel represents state used internally to manage Table. It is
|
|
@@ -28,7 +27,7 @@ export interface ColumnActionInit {
|
|
|
28
27
|
}
|
|
29
28
|
export interface ColumnActionHide {
|
|
30
29
|
type: "hideColumns";
|
|
31
|
-
columns:
|
|
30
|
+
columns: ColumnDescriptor[];
|
|
32
31
|
}
|
|
33
32
|
export interface ColumnActionShow {
|
|
34
33
|
type: "showColumns";
|
|
@@ -42,7 +41,7 @@ export interface ColumnActionMove {
|
|
|
42
41
|
export interface ColumnActionPin {
|
|
43
42
|
type: "pinColumn";
|
|
44
43
|
column: ColumnDescriptor;
|
|
45
|
-
pin
|
|
44
|
+
pin: PinLocation | false;
|
|
46
45
|
}
|
|
47
46
|
export interface ColumnActionResize {
|
|
48
47
|
type: "resizeColumn";
|
|
@@ -60,7 +59,7 @@ export interface ColumnActionUpdate {
|
|
|
60
59
|
}
|
|
61
60
|
export interface ColumnActionUpdateProp {
|
|
62
61
|
align?: ColumnDescriptor["align"];
|
|
63
|
-
column:
|
|
62
|
+
column: ColumnDescriptor;
|
|
64
63
|
hidden?: ColumnDescriptor["hidden"];
|
|
65
64
|
label?: ColumnDescriptor["label"];
|
|
66
65
|
resizing?: RuntimeColumnDescriptor["resizing"];
|
|
@@ -71,21 +70,6 @@ export interface ColumnActionTableConfig extends WithBaseFilter<WithFullConfig>
|
|
|
71
70
|
confirmed?: boolean;
|
|
72
71
|
type: "tableConfig";
|
|
73
72
|
}
|
|
74
|
-
export interface ColumnActionColumnSettings extends DataSourceConfig {
|
|
75
|
-
type: "columnSettings";
|
|
76
|
-
column: ColumnDescriptor;
|
|
77
|
-
/** required only for calculated coplumns */
|
|
78
|
-
vuuTable?: VuuTable;
|
|
79
|
-
}
|
|
80
|
-
export interface ColumnActionTableSettings extends DataSourceConfig {
|
|
81
|
-
type: "tableSettings";
|
|
82
|
-
}
|
|
83
|
-
export declare const isShowColumnSettings: (action: PersistentColumnAction) => action is ColumnActionColumnSettings;
|
|
84
|
-
export declare const isShowTableSettings: (action: PersistentColumnAction) => action is ColumnActionTableSettings;
|
|
85
|
-
/**
|
|
86
|
-
* PersistentColumnActions are those actions that require us to persist user changes across sessions
|
|
87
|
-
*/
|
|
88
|
-
export type PersistentColumnAction = ColumnActionPin | ColumnActionHide | ColumnActionColumnSettings | ColumnActionTableSettings;
|
|
89
73
|
export type GridModelAction = ColumnActionHide | ColumnActionInit | ColumnActionMove | ColumnActionPin | ColumnActionResize | ColumnActionSetTableSchema | ColumnActionShow | ColumnActionUpdate | ColumnActionUpdateProp | ColumnActionTableConfig;
|
|
90
74
|
export type GridModelReducer = Reducer<InternalTableModel, GridModelAction>;
|
|
91
75
|
export type ColumnActionDispatch = (action: GridModelAction) => void;
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var columnMenuCss = ".vuuMenuItem {\n --vuu-svg-cog: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M12.9533 8.65331C12.98 8.43998 13 8.22665 13 7.99998C13 7.77331 12.98 7.55998 12.9533 7.34665L14.36 6.24665C14.4867 6.14665 14.52 5.96665 14.44 5.81998L13.1067 3.51331C13.0267 3.36665 12.8467 3.31331 12.7 3.36665L11.04 4.03331C10.6933 3.76665 10.32 3.54665 9.91333 3.37998L9.66 1.61331C9.64 1.45331 9.5 1.33331 9.33333 1.33331H6.66667C6.5 1.33331 6.36 1.45331 6.34 1.61331L6.08667 3.37998C5.68 3.54665 5.30667 3.77331 4.96 4.03331L3.3 3.36665C3.14667 3.30665 2.97333 3.36665 2.89333 3.51331L1.56 5.81998C1.47333 5.96665 1.51333 6.14665 1.64 6.24665L3.04667 7.34665C3.02 7.55998 3 7.77998 3 7.99998C3 8.21998 3.02 8.43998 3.04667 8.65331L1.64 9.75331C1.51333 9.85331 1.48 10.0333 1.56 10.18L2.89333 12.4866C2.97333 12.6333 3.15333 12.6866 3.3 12.6333L4.96 11.9666C5.30667 12.2333 5.68 12.4533 6.08667 12.62L6.34 14.3866C6.36 14.5466 6.5 14.6666 6.66667 14.6666H9.33333C9.5 14.6666 9.64 14.5466 9.66 14.3866L9.91333 12.62C10.32 12.4533 10.6933 12.2266 11.04 11.9666L12.7 12.6333C12.8533 12.6933 13.0267 12.6333 13.1067 12.4866L14.44 10.18C14.52 10.0333 14.4867 9.85331 14.36 9.75331L12.9533 8.65331V8.65331ZM8 10.3333C6.71333 10.3333 5.66667 9.28665 5.66667 7.99998C5.66667 6.71331 6.71333 5.66665 8 5.66665C9.28667 5.66665 10.3333 6.71331 10.3333 7.99998C10.3333 9.28665 9.28667 10.3333 8 10.3333Z\"/></svg>');\n}\n.vuuColumnMenu {\n --menu-button-size: calc(var(--salt-size-base) - var(--salt-spacing-100));\n --saltButton-padding: var(--salt-spacing-50);\n --saltButton-minWidth: var(--menu-button-size);\n --saltButton-height: var(--menu-button-size);\n --saltButton-width: var(--menu-button-size);\n\n --vuu-icon-height: var(--menu-button-size);\n --vuu-icon-left: 0px;\n --vuu-icon-top: 0px;\n --vuu-icon-width: var(--menu-button-size);\n\n border: none;\n border-radius: 4px;\n flex: 0 0 var(--menu-button-size);\n margin: var(--vuuTable-columnMenu-margin, 0);\n padding: 0;\n}\n";
|
|
4
|
-
|
|
5
|
-
module.exports = columnMenuCss;
|
|
6
|
-
//# sourceMappingURL=ColumnMenu.css.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ColumnMenu.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
-
var vuuPopups = require('@vuu-ui/vuu-popups');
|
|
5
|
-
var styles = require('@salt-ds/styles');
|
|
6
|
-
var window = require('@salt-ds/window');
|
|
7
|
-
var cx = require('clsx');
|
|
8
|
-
var ColumnMenu$1 = require('./ColumnMenu.css.js');
|
|
9
|
-
|
|
10
|
-
const classBase = "vuuColumnMenu";
|
|
11
|
-
const ColumnMenu = ({ className, column }) => {
|
|
12
|
-
const targetWindow = window.useWindow();
|
|
13
|
-
styles.useComponentCssInjection({
|
|
14
|
-
testId: "vuu-column-menu",
|
|
15
|
-
css: ColumnMenu$1,
|
|
16
|
-
window: targetWindow
|
|
17
|
-
});
|
|
18
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
19
|
-
vuuPopups.PopupMenu,
|
|
20
|
-
{
|
|
21
|
-
className: cx(classBase, className),
|
|
22
|
-
"data-embedded": true,
|
|
23
|
-
menuLocation: "column-menu",
|
|
24
|
-
menuOptions: { column },
|
|
25
|
-
tabIndex: -1
|
|
26
|
-
}
|
|
27
|
-
);
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
exports.ColumnMenu = ColumnMenu;
|
|
31
|
-
//# sourceMappingURL=ColumnMenu.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ColumnMenu.js","sources":["../../src/column-menu/ColumnMenu.tsx"],"sourcesContent":["import { RuntimeColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { PopupMenu } from \"@vuu-ui/vuu-popups\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { HTMLAttributes } from \"react\";\nimport cx from \"clsx\";\n\nimport columnMenuCss from \"./ColumnMenu.css\";\n\nconst classBase = \"vuuColumnMenu\";\nexport interface ColumnMenuProps extends HTMLAttributes<HTMLSpanElement> {\n column: RuntimeColumnDescriptor;\n}\n\nexport const ColumnMenu = ({ className, column }: ColumnMenuProps) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-column-menu\",\n css: columnMenuCss,\n window: targetWindow,\n });\n\n return (\n <PopupMenu\n className={cx(classBase, className)}\n data-embedded\n menuLocation=\"column-menu\"\n menuOptions={{ column }}\n tabIndex={-1}\n />\n );\n};\n"],"names":["useWindow","useComponentCssInjection","columnMenuCss","jsx","PopupMenu"],"mappings":";;;;;;;;;AASA,MAAM,SAAY,GAAA,eAAA;AAKX,MAAM,UAAa,GAAA,CAAC,EAAE,SAAA,EAAW,QAA8B,KAAA;AACpE,EAAA,MAAM,eAAeA,gBAAU,EAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,iBAAA;AAAA,IACR,GAAK,EAAAC,YAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EACE,uBAAAC,cAAA;AAAA,IAACC,mBAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAG,CAAA,SAAA,EAAW,SAAS,CAAA;AAAA,MAClC,eAAa,EAAA,IAAA;AAAA,MACb,YAAa,EAAA,aAAA;AAAA,MACb,WAAA,EAAa,EAAE,MAAO,EAAA;AAAA,MACtB,QAAU,EAAA,CAAA;AAAA;AAAA,GACZ;AAEJ;;;;"}
|
|
@@ -1,214 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var vuuUtils = require('@vuu-ui/vuu-utils');
|
|
4
|
-
|
|
5
|
-
const buildContextMenuDescriptors = (dataSource) => (location, options) => {
|
|
6
|
-
const descriptors = [];
|
|
7
|
-
if (dataSource === void 0) {
|
|
8
|
-
return descriptors;
|
|
9
|
-
}
|
|
10
|
-
if (location === "header" || location === "column-menu") {
|
|
11
|
-
descriptors.push(
|
|
12
|
-
...buildSortMenuItems(options, dataSource)
|
|
13
|
-
);
|
|
14
|
-
descriptors.push(
|
|
15
|
-
...buildGroupMenuItems(options, dataSource)
|
|
16
|
-
);
|
|
17
|
-
descriptors.push(
|
|
18
|
-
...buildAggregationMenuItems(options, dataSource)
|
|
19
|
-
);
|
|
20
|
-
descriptors.push(...buildColumnDisplayMenuItems(options));
|
|
21
|
-
descriptors.push({
|
|
22
|
-
action: "column-settings",
|
|
23
|
-
icon: "settings",
|
|
24
|
-
label: `Column Settings ...`,
|
|
25
|
-
options
|
|
26
|
-
});
|
|
27
|
-
descriptors.push({
|
|
28
|
-
action: "table-settings",
|
|
29
|
-
icon: "settings",
|
|
30
|
-
label: `DataGrid Settings ...`,
|
|
31
|
-
options
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
return descriptors;
|
|
35
|
-
};
|
|
36
|
-
function buildSortMenuItems(options, { sort: { sortDefs } }) {
|
|
37
|
-
const { column } = options;
|
|
38
|
-
const menuItems = [];
|
|
39
|
-
if (column === void 0) {
|
|
40
|
-
return menuItems;
|
|
41
|
-
}
|
|
42
|
-
const hasSort = sortDefs.length > 0;
|
|
43
|
-
if (column.sorted === "A") {
|
|
44
|
-
menuItems.push({
|
|
45
|
-
label: "Reverse Sort (DSC)",
|
|
46
|
-
action: "sort-dsc",
|
|
47
|
-
options
|
|
48
|
-
});
|
|
49
|
-
} else if (column.sorted === "D") {
|
|
50
|
-
menuItems.push({
|
|
51
|
-
label: "Reverse Sort (ASC)",
|
|
52
|
-
action: "sort-asc",
|
|
53
|
-
options
|
|
54
|
-
});
|
|
55
|
-
} else if (typeof column.sorted === "number") {
|
|
56
|
-
if (column.sorted > 0) {
|
|
57
|
-
menuItems.push({
|
|
58
|
-
label: "Reverse Sort (DSC)",
|
|
59
|
-
action: "sort-add-dsc",
|
|
60
|
-
options
|
|
61
|
-
});
|
|
62
|
-
} else {
|
|
63
|
-
menuItems.push({
|
|
64
|
-
label: "Reverse Sort (ASC)",
|
|
65
|
-
action: "sort-add-asc",
|
|
66
|
-
options
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
if (hasSort && Math.abs(column.sorted) < sortDefs.length) {
|
|
70
|
-
menuItems.push({
|
|
71
|
-
label: "Remove from sort",
|
|
72
|
-
action: "sort-remove",
|
|
73
|
-
options
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
menuItems.push({
|
|
77
|
-
label: "New Sort",
|
|
78
|
-
children: [
|
|
79
|
-
{ label: "Ascending", action: "sort-asc", options },
|
|
80
|
-
{ label: "Descending", action: "sort-dsc", options }
|
|
81
|
-
]
|
|
82
|
-
});
|
|
83
|
-
} else if (hasSort) {
|
|
84
|
-
menuItems.push({
|
|
85
|
-
label: "Add to sort",
|
|
86
|
-
children: [
|
|
87
|
-
{ label: "Ascending", action: "sort-add-asc", options },
|
|
88
|
-
{ label: "Descending", action: "sort-add-dsc", options }
|
|
89
|
-
]
|
|
90
|
-
});
|
|
91
|
-
menuItems.push({
|
|
92
|
-
label: "New Sort",
|
|
93
|
-
children: [
|
|
94
|
-
{ label: "Ascending", action: "sort-asc", options },
|
|
95
|
-
{ label: "Descending", action: "sort-dsc", options }
|
|
96
|
-
]
|
|
97
|
-
});
|
|
98
|
-
} else {
|
|
99
|
-
menuItems.push({
|
|
100
|
-
label: "Sort",
|
|
101
|
-
children: [
|
|
102
|
-
{ label: "Ascending", action: "sort-asc", options },
|
|
103
|
-
{ label: "Descending", action: "sort-dsc", options }
|
|
104
|
-
]
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
return menuItems;
|
|
108
|
-
}
|
|
109
|
-
function buildAggregationMenuItems(options, dataSource) {
|
|
110
|
-
const { column } = options;
|
|
111
|
-
if (column === void 0 || dataSource.groupBy?.length === 0) {
|
|
112
|
-
return [];
|
|
113
|
-
}
|
|
114
|
-
const { name, label = name } = column;
|
|
115
|
-
return [
|
|
116
|
-
{
|
|
117
|
-
label: `Aggregate ${label}`,
|
|
118
|
-
children: [
|
|
119
|
-
{ label: "Count", action: "agg-count", options },
|
|
120
|
-
{ label: "Distinct", action: "agg-distinct", options }
|
|
121
|
-
].concat(
|
|
122
|
-
vuuUtils.isNumericColumn(column) ? [
|
|
123
|
-
{ label: "Sum", action: "agg-sum", options },
|
|
124
|
-
{ label: "Avg", action: "agg-avg", options },
|
|
125
|
-
{ label: "High", action: "agg-high", options },
|
|
126
|
-
{ label: "Low", action: "agg-low", options }
|
|
127
|
-
] : []
|
|
128
|
-
)
|
|
129
|
-
}
|
|
130
|
-
];
|
|
131
|
-
}
|
|
132
|
-
const pinColumn = (options, pinLocation) => ({
|
|
133
|
-
label: `Pin ${pinLocation}`,
|
|
134
|
-
action: `column-pin-${pinLocation}`,
|
|
135
|
-
options
|
|
136
|
-
});
|
|
137
|
-
const pinLeft = (options) => pinColumn(options, "left");
|
|
138
|
-
const pinFloating = (options) => pinColumn(options, "floating");
|
|
139
|
-
const pinRight = (options) => pinColumn(options, "right");
|
|
140
|
-
function buildColumnDisplayMenuItems(options) {
|
|
141
|
-
const { column } = options;
|
|
142
|
-
if (column === void 0) {
|
|
143
|
-
return [];
|
|
144
|
-
}
|
|
145
|
-
const { pin } = column;
|
|
146
|
-
const menuItems = [
|
|
147
|
-
{
|
|
148
|
-
label: `Hide column`,
|
|
149
|
-
action: "column-hide",
|
|
150
|
-
options
|
|
151
|
-
},
|
|
152
|
-
{
|
|
153
|
-
label: `Remove column`,
|
|
154
|
-
action: "column-remove",
|
|
155
|
-
options
|
|
156
|
-
}
|
|
157
|
-
];
|
|
158
|
-
if (pin === void 0) {
|
|
159
|
-
menuItems.push({
|
|
160
|
-
label: `Pin column`,
|
|
161
|
-
children: [pinLeft(options), pinFloating(options), pinRight(options)]
|
|
162
|
-
});
|
|
163
|
-
} else if (pin === "left") {
|
|
164
|
-
menuItems.push(
|
|
165
|
-
{ label: "Unpin column", action: "column-unpin", options },
|
|
166
|
-
{
|
|
167
|
-
label: `Pin column`,
|
|
168
|
-
children: [pinFloating(options), pinRight(options)]
|
|
169
|
-
}
|
|
170
|
-
);
|
|
171
|
-
} else if (pin === "right") {
|
|
172
|
-
menuItems.push(
|
|
173
|
-
{ label: "Unpin column", action: "column-unpin", options },
|
|
174
|
-
{
|
|
175
|
-
label: `Pin column`,
|
|
176
|
-
children: [pinLeft(options), pinFloating(options)]
|
|
177
|
-
}
|
|
178
|
-
);
|
|
179
|
-
} else if (pin === "floating") {
|
|
180
|
-
menuItems.push(
|
|
181
|
-
{ label: "Unpin column", action: "column-unpin", options },
|
|
182
|
-
{
|
|
183
|
-
label: `Pin column`,
|
|
184
|
-
children: [pinLeft(options), pinRight(options)]
|
|
185
|
-
}
|
|
186
|
-
);
|
|
187
|
-
}
|
|
188
|
-
return menuItems;
|
|
189
|
-
}
|
|
190
|
-
function buildGroupMenuItems(options, { groupBy }) {
|
|
191
|
-
const { column } = options;
|
|
192
|
-
const menuItems = [];
|
|
193
|
-
if (column === void 0) {
|
|
194
|
-
return menuItems;
|
|
195
|
-
}
|
|
196
|
-
const { name, label = name } = column;
|
|
197
|
-
if (groupBy?.length === 0) {
|
|
198
|
-
menuItems.push({
|
|
199
|
-
label: `Group by ${label}`,
|
|
200
|
-
action: "group",
|
|
201
|
-
options
|
|
202
|
-
});
|
|
203
|
-
} else {
|
|
204
|
-
menuItems.push({
|
|
205
|
-
label: `Add ${label} to group by`,
|
|
206
|
-
action: "group-add",
|
|
207
|
-
options
|
|
208
|
-
});
|
|
209
|
-
}
|
|
210
|
-
return menuItems;
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
exports.buildContextMenuDescriptors = buildContextMenuDescriptors;
|
|
214
|
-
//# 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":["isNumericColumn"],"mappings":"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"}
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var vuuUtils = require('@vuu-ui/vuu-utils');
|
|
4
|
-
|
|
5
|
-
const removeFilterColumn = (dataSourceFilter, column) => {
|
|
6
|
-
if (dataSourceFilter.filterStruct && column) {
|
|
7
|
-
const [filterStruct, filter] = vuuUtils.removeColumnFromFilter(
|
|
8
|
-
column,
|
|
9
|
-
dataSourceFilter.filterStruct
|
|
10
|
-
);
|
|
11
|
-
return {
|
|
12
|
-
filter,
|
|
13
|
-
filterStruct
|
|
14
|
-
};
|
|
15
|
-
} else {
|
|
16
|
-
return dataSourceFilter;
|
|
17
|
-
}
|
|
18
|
-
};
|
|
19
|
-
const { Average, Count, Distinct, High, Low, Sum } = vuuUtils.AggregationType;
|
|
20
|
-
const useHandleTableContextMenu = ({
|
|
21
|
-
dataSource,
|
|
22
|
-
onPersistentColumnOperation
|
|
23
|
-
}) => {
|
|
24
|
-
const handleContextMenuAction = (action) => {
|
|
25
|
-
const gridOptions = action.options;
|
|
26
|
-
if (gridOptions.column && dataSource) {
|
|
27
|
-
const { column } = gridOptions;
|
|
28
|
-
switch (action.menuId) {
|
|
29
|
-
case "sort-asc":
|
|
30
|
-
return dataSource.sort = vuuUtils.setSortColumn(dataSource.sort, column, "A"), true;
|
|
31
|
-
case "sort-dsc":
|
|
32
|
-
return dataSource.sort = vuuUtils.setSortColumn(dataSource.sort, column, "D"), true;
|
|
33
|
-
case "sort-add-asc":
|
|
34
|
-
return dataSource.sort = vuuUtils.addSortColumn(dataSource.sort, column, "A"), true;
|
|
35
|
-
case "sort-add-dsc":
|
|
36
|
-
return dataSource.sort = vuuUtils.addSortColumn(dataSource.sort, column, "D"), true;
|
|
37
|
-
case "group":
|
|
38
|
-
return dataSource.groupBy = vuuUtils.addGroupColumn(dataSource.groupBy ?? [], column), true;
|
|
39
|
-
case "group-add":
|
|
40
|
-
return dataSource.groupBy = vuuUtils.addGroupColumn(dataSource.groupBy ?? [], column), true;
|
|
41
|
-
case "column-hide":
|
|
42
|
-
return onPersistentColumnOperation({ type: "hideColumns", columns: [column] }), true;
|
|
43
|
-
case "column-remove":
|
|
44
|
-
return dataSource.columns = dataSource.columns.filter((name) => name !== column.name), true;
|
|
45
|
-
case "filter-remove-column":
|
|
46
|
-
return dataSource.filter = removeFilterColumn(dataSource.filter, column), true;
|
|
47
|
-
case "remove-filters":
|
|
48
|
-
return dataSource.filter = { filter: "" }, true;
|
|
49
|
-
case "agg-avg":
|
|
50
|
-
return dataSource.aggregations = vuuUtils.setAggregations(dataSource.aggregations, column, Average), true;
|
|
51
|
-
case "agg-high":
|
|
52
|
-
return dataSource.aggregations = vuuUtils.setAggregations(dataSource.aggregations, column, High), true;
|
|
53
|
-
case "agg-low":
|
|
54
|
-
return dataSource.aggregations = vuuUtils.setAggregations(dataSource.aggregations, column, Low), true;
|
|
55
|
-
case "agg-count":
|
|
56
|
-
return dataSource.aggregations = vuuUtils.setAggregations(dataSource.aggregations, column, Count), true;
|
|
57
|
-
case "agg-distinct":
|
|
58
|
-
return dataSource.aggregations = vuuUtils.setAggregations(dataSource.aggregations, column, Distinct), true;
|
|
59
|
-
case "agg-sum":
|
|
60
|
-
return dataSource.aggregations = vuuUtils.setAggregations(dataSource.aggregations, column, Sum), true;
|
|
61
|
-
case "column-pin-floating":
|
|
62
|
-
return onPersistentColumnOperation({ type: "pinColumn", column, pin: "floating" }), true;
|
|
63
|
-
case "column-pin-left":
|
|
64
|
-
return onPersistentColumnOperation({ type: "pinColumn", column, pin: "left" }), true;
|
|
65
|
-
case "column-pin-right":
|
|
66
|
-
return onPersistentColumnOperation({ type: "pinColumn", column, pin: "right" }), true;
|
|
67
|
-
case "column-unpin":
|
|
68
|
-
return onPersistentColumnOperation({ type: "pinColumn", column, pin: void 0 }), true;
|
|
69
|
-
case "column-settings":
|
|
70
|
-
return onPersistentColumnOperation({ type: "columnSettings", column }), true;
|
|
71
|
-
case "table-settings":
|
|
72
|
-
return onPersistentColumnOperation({ type: "tableSettings" }), true;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
return false;
|
|
76
|
-
};
|
|
77
|
-
return handleContextMenuAction;
|
|
78
|
-
};
|
|
79
|
-
|
|
80
|
-
exports.useHandleTableContextMenu = useHandleTableContextMenu;
|
|
81
|
-
//# 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":["removeColumnFromFilter","AggregationType","setSortColumn","addSortColumn","addGroupColumn","setAggregations"],"mappings":"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"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
var columnMenuCss = ".vuuMenuItem {\n --vuu-svg-cog: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M12.9533 8.65331C12.98 8.43998 13 8.22665 13 7.99998C13 7.77331 12.98 7.55998 12.9533 7.34665L14.36 6.24665C14.4867 6.14665 14.52 5.96665 14.44 5.81998L13.1067 3.51331C13.0267 3.36665 12.8467 3.31331 12.7 3.36665L11.04 4.03331C10.6933 3.76665 10.32 3.54665 9.91333 3.37998L9.66 1.61331C9.64 1.45331 9.5 1.33331 9.33333 1.33331H6.66667C6.5 1.33331 6.36 1.45331 6.34 1.61331L6.08667 3.37998C5.68 3.54665 5.30667 3.77331 4.96 4.03331L3.3 3.36665C3.14667 3.30665 2.97333 3.36665 2.89333 3.51331L1.56 5.81998C1.47333 5.96665 1.51333 6.14665 1.64 6.24665L3.04667 7.34665C3.02 7.55998 3 7.77998 3 7.99998C3 8.21998 3.02 8.43998 3.04667 8.65331L1.64 9.75331C1.51333 9.85331 1.48 10.0333 1.56 10.18L2.89333 12.4866C2.97333 12.6333 3.15333 12.6866 3.3 12.6333L4.96 11.9666C5.30667 12.2333 5.68 12.4533 6.08667 12.62L6.34 14.3866C6.36 14.5466 6.5 14.6666 6.66667 14.6666H9.33333C9.5 14.6666 9.64 14.5466 9.66 14.3866L9.91333 12.62C10.32 12.4533 10.6933 12.2266 11.04 11.9666L12.7 12.6333C12.8533 12.6933 13.0267 12.6333 13.1067 12.4866L14.44 10.18C14.52 10.0333 14.4867 9.85331 14.36 9.75331L12.9533 8.65331V8.65331ZM8 10.3333C6.71333 10.3333 5.66667 9.28665 5.66667 7.99998C5.66667 6.71331 6.71333 5.66665 8 5.66665C9.28667 5.66665 10.3333 6.71331 10.3333 7.99998C10.3333 9.28665 9.28667 10.3333 8 10.3333Z\"/></svg>');\n}\n.vuuColumnMenu {\n --menu-button-size: calc(var(--salt-size-base) - var(--salt-spacing-100));\n --saltButton-padding: var(--salt-spacing-50);\n --saltButton-minWidth: var(--menu-button-size);\n --saltButton-height: var(--menu-button-size);\n --saltButton-width: var(--menu-button-size);\n\n --vuu-icon-height: var(--menu-button-size);\n --vuu-icon-left: 0px;\n --vuu-icon-top: 0px;\n --vuu-icon-width: var(--menu-button-size);\n\n border: none;\n border-radius: 4px;\n flex: 0 0 var(--menu-button-size);\n margin: var(--vuuTable-columnMenu-margin, 0);\n padding: 0;\n}\n";
|
|
2
|
-
|
|
3
|
-
export { columnMenuCss as default };
|
|
4
|
-
//# sourceMappingURL=ColumnMenu.css.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ColumnMenu.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { PopupMenu } from '@vuu-ui/vuu-popups';
|
|
3
|
-
import { useComponentCssInjection } from '@salt-ds/styles';
|
|
4
|
-
import { useWindow } from '@salt-ds/window';
|
|
5
|
-
import cx from 'clsx';
|
|
6
|
-
import columnMenuCss from './ColumnMenu.css.js';
|
|
7
|
-
|
|
8
|
-
const classBase = "vuuColumnMenu";
|
|
9
|
-
const ColumnMenu = ({ className, column }) => {
|
|
10
|
-
const targetWindow = useWindow();
|
|
11
|
-
useComponentCssInjection({
|
|
12
|
-
testId: "vuu-column-menu",
|
|
13
|
-
css: columnMenuCss,
|
|
14
|
-
window: targetWindow
|
|
15
|
-
});
|
|
16
|
-
return /* @__PURE__ */ jsx(
|
|
17
|
-
PopupMenu,
|
|
18
|
-
{
|
|
19
|
-
className: cx(classBase, className),
|
|
20
|
-
"data-embedded": true,
|
|
21
|
-
menuLocation: "column-menu",
|
|
22
|
-
menuOptions: { column },
|
|
23
|
-
tabIndex: -1
|
|
24
|
-
}
|
|
25
|
-
);
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
export { ColumnMenu };
|
|
29
|
-
//# sourceMappingURL=ColumnMenu.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ColumnMenu.js","sources":["../../src/column-menu/ColumnMenu.tsx"],"sourcesContent":["import { RuntimeColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { PopupMenu } from \"@vuu-ui/vuu-popups\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { HTMLAttributes } from \"react\";\nimport cx from \"clsx\";\n\nimport columnMenuCss from \"./ColumnMenu.css\";\n\nconst classBase = \"vuuColumnMenu\";\nexport interface ColumnMenuProps extends HTMLAttributes<HTMLSpanElement> {\n column: RuntimeColumnDescriptor;\n}\n\nexport const ColumnMenu = ({ className, column }: ColumnMenuProps) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-column-menu\",\n css: columnMenuCss,\n window: targetWindow,\n });\n\n return (\n <PopupMenu\n className={cx(classBase, className)}\n data-embedded\n menuLocation=\"column-menu\"\n menuOptions={{ column }}\n tabIndex={-1}\n />\n );\n};\n"],"names":[],"mappings":";;;;;;;AASA,MAAM,SAAY,GAAA,eAAA;AAKX,MAAM,UAAa,GAAA,CAAC,EAAE,SAAA,EAAW,QAA8B,KAAA;AACpE,EAAA,MAAM,eAAe,SAAU,EAAA;AAC/B,EAAyB,wBAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,iBAAA;AAAA,IACR,GAAK,EAAA,aAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EACE,uBAAA,GAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAG,CAAA,SAAA,EAAW,SAAS,CAAA;AAAA,MAClC,eAAa,EAAA,IAAA;AAAA,MACb,YAAa,EAAA,aAAA;AAAA,MACb,WAAA,EAAa,EAAE,MAAO,EAAA;AAAA,MACtB,QAAU,EAAA,CAAA;AAAA;AAAA,GACZ;AAEJ;;;;"}
|