@vuu-ui/vuu-table-extras 0.13.4 → 0.13.6
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/column-menu/column-menu-utils.js +8 -11
- package/cjs/column-menu/column-menu-utils.js.map +1 -1
- package/esm/column-menu/column-menu-utils.js +8 -11
- package/esm/column-menu/column-menu-utils.js.map +1 -1
- package/package.json +17 -14
- package/types/cell-edit-validators/CaseValidator.d.ts +2 -0
- package/types/cell-edit-validators/PatternValidator.d.ts +2 -0
- package/types/cell-edit-validators/index.d.ts +2 -0
- package/types/cell-renderers/background-cell/BackgroundCell.d.ts +2 -0
- package/types/cell-renderers/background-cell/BackgroundCellConfigurationEditor.d.ts +2 -0
- package/types/cell-renderers/background-cell/index.d.ts +2 -0
- package/types/cell-renderers/background-cell/useDirection.d.ts +3 -0
- package/types/cell-renderers/dropdown-cell/DropdownCell.d.ts +2 -0
- package/types/cell-renderers/dropdown-cell/index.d.ts +1 -0
- package/types/cell-renderers/index.d.ts +5 -0
- package/types/cell-renderers/lookup-cell/LookupCell.d.ts +2 -0
- package/types/cell-renderers/lookup-cell/index.d.ts +1 -0
- package/types/cell-renderers/pct-progress-cell/PctProgressCell.d.ts +2 -0
- package/types/cell-renderers/pct-progress-cell/index.d.ts +1 -0
- package/types/cell-renderers/progress-cell/ProgressCell.d.ts +1 -0
- package/types/cell-renderers/progress-cell/index.d.ts +1 -0
- package/types/column-expression-input/ColumnExpressionInput.d.ts +10 -0
- package/types/column-expression-input/column-function-descriptors.d.ts +15 -0
- package/types/column-expression-input/column-language-parser/ColumnExpressionLanguage.d.ts +2 -0
- package/types/column-expression-input/column-language-parser/ColumnExpressionTreeWalker.d.ts +58 -0
- package/types/column-expression-input/column-language-parser/column-expression-parse-utils.d.ts +5 -0
- package/types/column-expression-input/column-language-parser/generated/column-parser.d.ts +2 -0
- package/types/column-expression-input/column-language-parser/generated/column-parser.terms.d.ts +24 -0
- package/types/column-expression-input/column-language-parser/index.d.ts +3 -0
- package/types/column-expression-input/column-language-parser/test.d.mts +1 -0
- package/types/column-expression-input/functionDocInfo.d.ts +2 -0
- package/types/column-expression-input/highlighting.d.ts +1 -0
- package/types/column-expression-input/index.d.ts +4 -0
- package/types/column-expression-input/theme.d.ts +1 -0
- package/types/column-expression-input/useColumnAutoComplete.d.ts +6 -0
- package/types/column-expression-input/useColumnExpressionEditor.d.ts +25 -0
- package/types/column-expression-input/useColumnExpressionSuggestionProvider.d.ts +8 -0
- package/types/column-expression-panel/ColumnExpressionPanel.d.ts +13 -0
- package/types/column-expression-panel/index.d.ts +1 -0
- package/types/column-expression-panel/useColumnExpression.d.ts +10 -0
- package/types/column-formatting-settings/BaseNumericFormattingSettings.d.ts +2 -0
- package/types/column-formatting-settings/ColumnFormattingPanel.d.ts +9 -0
- package/types/column-formatting-settings/DateTimeFormattingSettings.d.ts +4 -0
- package/types/column-formatting-settings/LongTypeFormattingSettings.d.ts +2 -0
- package/types/column-formatting-settings/index.d.ts +3 -0
- package/types/column-list/ColumnList.d.ts +12 -0
- package/types/column-list/index.d.ts +1 -0
- package/types/column-menu/ColumnMenu.d.ts +10 -0
- package/types/column-menu/column-action-types.d.ts +24 -0
- package/types/column-menu/column-menu-utils.d.ts +21 -0
- package/types/column-menu/useColumnActions.d.ts +18 -0
- package/types/datasource-stats/DatasourceStats.d.ts +7 -0
- package/types/datasource-stats/index.d.ts +1 -0
- package/types/index.d.ts +16 -0
- package/types/table-column-settings/ColumnNameLabel.d.ts +7 -0
- package/types/table-column-settings/ColumnSettingsPanel.d.ts +2 -0
- package/types/table-column-settings/TableSettingsPanel.d.ts +8 -0
- package/types/table-column-settings/useColumnSettings.d.ts +23 -0
- package/types/table-column-settings/useTableAndColumnSettings.d.ts +18 -0
- package/types/table-column-settings/useTableSettings.d.ts +21 -0
- package/types/table-provider/TableProvider.d.ts +17 -0
|
@@ -186,18 +186,15 @@ function buildGroupMenu(column, dataSource, menuActionClickHandler, isAllowed =
|
|
|
186
186
|
switch (columnGroupStatus) {
|
|
187
187
|
case "no-groupby":
|
|
188
188
|
case "single-groupby-other-column":
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
"group-column"
|
|
198
|
-
)
|
|
189
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
190
|
+
core.MenuItem,
|
|
191
|
+
{
|
|
192
|
+
"data-menu-action-id": "group-column",
|
|
193
|
+
onClick: menuActionClickHandler,
|
|
194
|
+
children: `Group by ${label}`
|
|
195
|
+
},
|
|
196
|
+
"group-column"
|
|
199
197
|
);
|
|
200
|
-
break;
|
|
201
198
|
case "single-groupby":
|
|
202
199
|
menuItems.push(
|
|
203
200
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"column-menu-utils.js","sources":["../../src/column-menu/column-menu-utils.tsx"],"sourcesContent":["import {\n Menu,\n MenuItem,\n MenuItemProps,\n MenuPanel,\n MenuProps,\n MenuTrigger,\n} from \"@salt-ds/core\";\nimport { DataSource } from \"@vuu-ui/vuu-data-types\";\nimport {\n ColumnDescriptor,\n TableSettingsPermissions,\n} from \"@vuu-ui/vuu-table-types\";\nimport {\n getGroupStatus,\n getSortStatus,\n isNumericColumn,\n logUnhandledMessage,\n} from \"@vuu-ui/vuu-utils\";\nimport { MouseEventHandler, ReactElement } from \"react\";\n\ntype MenuElement = ReactElement<MenuProps, typeof Menu>;\ntype MenuItemElement = ReactElement<MenuItemProps, typeof MenuItem>;\ntype MenuElements = Array<MenuElement | MenuItemElement>;\n\nexport type MenuItemClickHandler = MouseEventHandler<HTMLDivElement>;\n\nexport type DataSourceColumnMenuActionType =\n | \"agg-count\"\n | \"agg-distinct\"\n | \"agg-sum\"\n | \"agg-avg\"\n | \"agg-high\"\n | \"agg-low\"\n | \"sort-asc\"\n | \"sort-dsc\"\n | \"sort-add-asc\"\n | \"sort-add-dsc\"\n | \"remove-sort\"\n | \"group-column\"\n | \"remove-group\"\n | \"add-to-group\"\n | \"remove-from-group\"\n | \"remove-column\";\n\nexport type ColumnDisplayColumnMenuActionType =\n | \"pin-column-left\"\n | \"pin-column-right\"\n | \"pin-column-floating\"\n | \"unpin-column\"\n | \"hide-column\";\n\nexport type TableSettingsActionType = \"column-settings\" | \"table-settings\";\n\nexport type ColumnMenuActionType =\n | DataSourceColumnMenuActionType\n | ColumnDisplayColumnMenuActionType\n | TableSettingsActionType;\n\nexport const isColumnMenuActionType = (\n value?: string,\n): value is ColumnMenuActionType =>\n value !== undefined &&\n [\n \"agg-count\",\n \"agg-distinct\",\n \"agg-sum\",\n \"agg-avg\",\n \"agg-high\",\n \"agg-low\",\n \"sort-asc\",\n \"sort-dsc\",\n \"sort-add-asc\",\n \"sort-add-dsc\",\n \"remove-sort\",\n \"group-column\",\n \"remove-group\",\n \"add-to-group\",\n \"remove-from-group\",\n \"pin-column-left\",\n \"pin-column-right\",\n \"pin-column-floating\",\n \"unpin-column\",\n \"hide-column\",\n \"remove-column\",\n \"column-settings\",\n \"table-settings\",\n ].includes(value);\n\nexport const getColumnMenuActionType = (target: EventTarget | HTMLElement) => {\n const { menuActionId } = (target as HTMLElement).dataset;\n if (isColumnMenuActionType(menuActionId)) {\n return menuActionId;\n } else {\n throw Error(\n \"[vuu-table-extras] column-menu-utils target element is not a valid Column MenuItem\",\n );\n }\n};\n\nexport function buildSortMenu(\n column: ColumnDescriptor,\n dataSource: DataSource,\n menuActionClickHandler: MenuItemClickHandler,\n isAllowed = true,\n): MenuElement | null {\n if (!isAllowed || column.sortable === false) {\n return null;\n } else {\n const { name, label = name } = column;\n const menuItems: MenuElements = [];\n const columnSortStatus = getSortStatus(column.name, dataSource.sort);\n\n switch (columnSortStatus) {\n case \"no-sort\":\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"sort-asc\"\n key=\"sort-asc\"\n onClick={menuActionClickHandler}\n >\n Sort ascending\n </MenuItem>,\n );\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"sort-dsc\"\n key=\"sort-dsc\"\n onClick={menuActionClickHandler}\n >\n Sort descending\n </MenuItem>,\n );\n break;\n case \"single-sort-asc\":\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"sort-dsc\"\n key=\"sort-dsc\"\n onClick={menuActionClickHandler}\n >\n Reverse Sort (DSC)\n </MenuItem>,\n <MenuItem\n data-menu-action-id=\"remove-sort\"\n key=\"remove-sort\"\n onClick={menuActionClickHandler}\n >\n Remove Sort\n </MenuItem>,\n );\n break;\n case \"single-sort-desc\":\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"sort-asc\"\n key=\"sort-asc\"\n onClick={menuActionClickHandler}\n >\n Reverse Sort (ASC)\n </MenuItem>,\n <MenuItem\n data-menu-action-id=\"remove-sort\"\n key=\"remove-sort\"\n onClick={menuActionClickHandler}\n >\n Remove Sort\n </MenuItem>,\n );\n break;\n\n case \"sort-other-column\":\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"sort-add-asc\"\n key=\"sort-add-asc\"\n onClick={menuActionClickHandler}\n >\n Add to sort ASC\n </MenuItem>,\n );\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"sort-add-dsc\"\n key=\"sort-add-dsc\"\n onClick={menuActionClickHandler}\n >\n Add to sort DSC\n </MenuItem>,\n );\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"sort-asc\"\n key=\"sort-asc\"\n onClick={menuActionClickHandler}\n >\n Ascending\n </MenuItem>,\n );\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"sort-dsc\"\n key=\"sort-dsc\"\n onClick={menuActionClickHandler}\n >\n Descending\n </MenuItem>,\n );\n break;\n\n case \"multi-sort-includes-column-asc\":\n case \"multi-sort-includes-column-desc\":\n break;\n default:\n logUnhandledMessage(\n columnSortStatus,\n \"[vuu-table-extras] column-menu-utils buildSortMenu\",\n );\n }\n\n return (\n <Menu key=\"sort-menu\">\n <MenuTrigger>\n <MenuItem>{`Sort by ${label}`}</MenuItem>\n </MenuTrigger>\n <MenuPanel>{menuItems}</MenuPanel>\n </Menu>\n );\n }\n}\n\nexport function buildGroupMenu(\n column: ColumnDescriptor,\n dataSource: DataSource,\n menuActionClickHandler: MenuItemClickHandler,\n isAllowed = true,\n): MenuElement | null {\n if (!isAllowed || column.groupable === false) {\n return null;\n } else {\n const menuItems: MenuElements = [];\n const columnGroupStatus = getGroupStatus(column.name, dataSource.groupBy);\n const { name, label = name } = column;\n\n switch (columnGroupStatus) {\n case \"no-groupby\":\n case \"single-groupby-other-column\":\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"group-column\"\n key=\"group-column\"\n onClick={menuActionClickHandler}\n >{`Group by ${label}`}</MenuItem>,\n );\n break;\n case \"single-groupby\":\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"remove-group\"\n key=\"remove-group\"\n onClick={menuActionClickHandler}\n >\n Remove Grouping\n </MenuItem>,\n );\n break;\n\n case \"multi-groupby-other-columns\":\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"add-to-group\"\n key=\"add-to-group\"\n onClick={menuActionClickHandler}\n >\n Add to grouping\n </MenuItem>,\n );\n\n break;\n\n case \"multi-groupby-includes-column\":\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"remove-from-group\"\n key=\"remove-from-group\"\n onClick={menuActionClickHandler}\n >\n Remove from grouping\n </MenuItem>,\n );\n\n break;\n\n default:\n logUnhandledMessage(\n columnGroupStatus,\n \"[vuu-table-extras] column-menu-utils buildGroupMenu\",\n );\n }\n\n return (\n <Menu key=\"group-menu\">\n <MenuTrigger>\n <MenuItem>Group data</MenuItem>\n </MenuTrigger>\n <MenuPanel>{menuItems}</MenuPanel>\n </Menu>\n );\n }\n}\n\nexport const buildVisibilityMenuItems = (\n column: ColumnDescriptor,\n menuActionClickHandler: MenuItemClickHandler,\n isAllowed = true,\n): MenuElements | null => {\n if (!isAllowed) {\n return null;\n }\n const menuItems: MenuElements = [];\n const { name, label = name } = column;\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"hide-column\"\n key=\"hide-column\"\n onClick={menuActionClickHandler}\n >\n {`Hide ${label} column`}\n </MenuItem>,\n );\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"remove-column\"\n key=\"remove-column\"\n onClick={menuActionClickHandler}\n >\n {`Remove ${label} column`}\n </MenuItem>,\n );\n\n return menuItems;\n};\n\nexport const buildPinMenuItems = (\n column: ColumnDescriptor,\n menuActionClickHandler: MenuItemClickHandler,\n isAllowed = true,\n): MenuElements => {\n if (!isAllowed || column === undefined) {\n return [];\n }\n const { pin } = column;\n\n const menuItems: MenuElements = [];\n\n const pinLeft = (\n <MenuItem\n data-menu-action-id=\"pin-column-left\"\n key=\"pin-column-left\"\n onClick={menuActionClickHandler}\n >\n Pin left\n </MenuItem>\n );\n\n const pinFloating = (\n <MenuItem\n data-menu-action-id=\"pin-column-floating\"\n key=\"pin-column-floating\"\n onClick={menuActionClickHandler}\n >\n Pin floating\n </MenuItem>\n );\n\n const pinRight = (\n <MenuItem\n data-menu-action-id=\"pin-column-right\"\n key=\"pin-column-right\"\n onClick={menuActionClickHandler}\n >\n Pin right\n </MenuItem>\n );\n\n if (pin === undefined) {\n menuItems.push(\n <Menu key=\"pin-menu\">\n <MenuTrigger>\n <MenuItem>Pin Column</MenuItem>\n </MenuTrigger>\n <MenuPanel>\n {pinLeft}\n {pinFloating}\n {pinRight}\n </MenuPanel>\n </Menu>,\n );\n } else {\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"unpin-column\"\n key=\"unpin-column\"\n onClick={menuActionClickHandler}\n >\n Unpin\n </MenuItem>,\n );\n if (pin === \"left\") {\n menuItems.push(\n <Menu key=\"pin-menu\">\n <MenuTrigger>\n <MenuItem>Pin Column</MenuItem>\n </MenuTrigger>\n <MenuPanel>\n {pinFloating}\n {pinRight}\n </MenuPanel>\n </Menu>,\n );\n } else if (pin === \"floating\") {\n menuItems.push(\n <Menu key=\"pin-menu\">\n <MenuTrigger>\n <MenuItem>Pin Column</MenuItem>\n </MenuTrigger>\n <MenuPanel>\n {pinLeft}\n {pinRight}\n </MenuPanel>\n </Menu>,\n );\n } else {\n menuItems.push(\n <Menu key=\"pin-menu\">\n <MenuTrigger>\n <MenuItem>Pin Column</MenuItem>\n </MenuTrigger>\n <MenuPanel>\n {pinFloating}\n {pinRight}\n </MenuPanel>\n </Menu>,\n );\n }\n }\n\n return menuItems;\n};\n\nexport const buildSettingsMenuItems = (\n _: ColumnDescriptor,\n menuActionClickHandler: MenuItemClickHandler,\n allowColumnSettings = true,\n allowTableSettings: boolean | TableSettingsPermissions = true,\n): MenuElements | null => {\n if (!allowColumnSettings && !allowTableSettings) {\n return null;\n }\n\n const menuItems: MenuElements = [];\n\n if (allowColumnSettings) {\n menuItems.push(\n <MenuItem\n data-icon=\"settings\"\n data-menu-action-id=\"column-settings\"\n key=\"column-settings\"\n onClick={menuActionClickHandler}\n >\n Column settings ...\n </MenuItem>,\n );\n }\n\n if (allowTableSettings) {\n menuItems.push(\n <MenuItem\n data-icon=\"settings\"\n data-menu-action-id=\"table-settings\"\n key=\"table-settings\"\n onClick={menuActionClickHandler}\n >\n Table settings ...\n </MenuItem>,\n );\n }\n\n return menuItems;\n};\n\nexport function buildAggregationMenuItems(\n column: ColumnDescriptor,\n dataSource: DataSource,\n menuActionClickHandler: MenuItemClickHandler,\n isAllowed = true,\n): MenuElements | null {\n if (!isAllowed) {\n return null;\n }\n\n const { name, label = name } = column;\n\n if (dataSource.groupBy?.length === 0) {\n return [];\n } else {\n const menuItems: MenuElements = [\n <MenuItem\n data-menu-action-id=\"agg-count\"\n key=\"agg-count\"\n onClick={menuActionClickHandler}\n >\n Count\n </MenuItem>,\n <MenuItem\n data-menu-action-id=\"agg-distinct\"\n key=\"agg-distinct\"\n onClick={menuActionClickHandler}\n >\n Distinct\n </MenuItem>,\n ];\n\n if (isNumericColumn(column)) {\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"agg-sum\"\n key=\"agg-sum\"\n onClick={menuActionClickHandler}\n >\n Sum\n </MenuItem>,\n <MenuItem\n data-menu-action-id=\"agg-avg\"\n key=\"agg-avg\"\n onClick={menuActionClickHandler}\n >\n Average\n </MenuItem>,\n <MenuItem\n data-menu-action-id=\"agg-high\"\n key=\"agg-high\"\n onClick={menuActionClickHandler}\n >\n High\n </MenuItem>,\n <MenuItem\n data-menu-action-id=\"agg-low\"\n key=\"agg-low\"\n onClick={menuActionClickHandler}\n >\n Low\n </MenuItem>,\n );\n }\n\n return [\n <Menu key=\"aggregate-menu\">\n <MenuTrigger>\n <MenuItem>{`Aggregate ${label}`}</MenuItem>\n </MenuTrigger>\n <MenuPanel>{menuItems}</MenuPanel>\n </Menu>,\n ];\n }\n}\n"],"names":["getSortStatus","jsx","MenuItem","logUnhandledMessage","Menu","MenuTrigger","MenuPanel","getGroupStatus","isNumericColumn"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"column-menu-utils.js","sources":["../../src/column-menu/column-menu-utils.tsx"],"sourcesContent":["import {\n Menu,\n MenuItem,\n MenuItemProps,\n MenuPanel,\n MenuProps,\n MenuTrigger,\n} from \"@salt-ds/core\";\nimport { DataSource } from \"@vuu-ui/vuu-data-types\";\nimport {\n ColumnDescriptor,\n TableSettingsPermissions,\n} from \"@vuu-ui/vuu-table-types\";\nimport {\n getGroupStatus,\n getSortStatus,\n isNumericColumn,\n logUnhandledMessage,\n} from \"@vuu-ui/vuu-utils\";\nimport { MouseEventHandler, ReactElement } from \"react\";\n\ntype MenuElement = ReactElement<MenuProps, typeof Menu>;\ntype MenuItemElement = ReactElement<MenuItemProps, typeof MenuItem>;\ntype MenuElements = Array<MenuElement | MenuItemElement>;\n\nexport type MenuItemClickHandler = MouseEventHandler<HTMLDivElement>;\n\nexport type DataSourceColumnMenuActionType =\n | \"agg-count\"\n | \"agg-distinct\"\n | \"agg-sum\"\n | \"agg-avg\"\n | \"agg-high\"\n | \"agg-low\"\n | \"sort-asc\"\n | \"sort-dsc\"\n | \"sort-add-asc\"\n | \"sort-add-dsc\"\n | \"remove-sort\"\n | \"group-column\"\n | \"remove-group\"\n | \"add-to-group\"\n | \"remove-from-group\"\n | \"remove-column\";\n\nexport type ColumnDisplayColumnMenuActionType =\n | \"pin-column-left\"\n | \"pin-column-right\"\n | \"pin-column-floating\"\n | \"unpin-column\"\n | \"hide-column\";\n\nexport type TableSettingsActionType = \"column-settings\" | \"table-settings\";\n\nexport type ColumnMenuActionType =\n | DataSourceColumnMenuActionType\n | ColumnDisplayColumnMenuActionType\n | TableSettingsActionType;\n\nexport const isColumnMenuActionType = (\n value?: string,\n): value is ColumnMenuActionType =>\n value !== undefined &&\n [\n \"agg-count\",\n \"agg-distinct\",\n \"agg-sum\",\n \"agg-avg\",\n \"agg-high\",\n \"agg-low\",\n \"sort-asc\",\n \"sort-dsc\",\n \"sort-add-asc\",\n \"sort-add-dsc\",\n \"remove-sort\",\n \"group-column\",\n \"remove-group\",\n \"add-to-group\",\n \"remove-from-group\",\n \"pin-column-left\",\n \"pin-column-right\",\n \"pin-column-floating\",\n \"unpin-column\",\n \"hide-column\",\n \"remove-column\",\n \"column-settings\",\n \"table-settings\",\n ].includes(value);\n\nexport const getColumnMenuActionType = (target: EventTarget | HTMLElement) => {\n const { menuActionId } = (target as HTMLElement).dataset;\n if (isColumnMenuActionType(menuActionId)) {\n return menuActionId;\n } else {\n throw Error(\n \"[vuu-table-extras] column-menu-utils target element is not a valid Column MenuItem\",\n );\n }\n};\n\nexport function buildSortMenu(\n column: ColumnDescriptor,\n dataSource: DataSource,\n menuActionClickHandler: MenuItemClickHandler,\n isAllowed = true,\n): MenuElement | null {\n if (!isAllowed || column.sortable === false) {\n return null;\n } else {\n const { name, label = name } = column;\n const menuItems: MenuElements = [];\n const columnSortStatus = getSortStatus(column.name, dataSource.sort);\n\n switch (columnSortStatus) {\n case \"no-sort\":\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"sort-asc\"\n key=\"sort-asc\"\n onClick={menuActionClickHandler}\n >\n Sort ascending\n </MenuItem>,\n );\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"sort-dsc\"\n key=\"sort-dsc\"\n onClick={menuActionClickHandler}\n >\n Sort descending\n </MenuItem>,\n );\n break;\n case \"single-sort-asc\":\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"sort-dsc\"\n key=\"sort-dsc\"\n onClick={menuActionClickHandler}\n >\n Reverse Sort (DSC)\n </MenuItem>,\n <MenuItem\n data-menu-action-id=\"remove-sort\"\n key=\"remove-sort\"\n onClick={menuActionClickHandler}\n >\n Remove Sort\n </MenuItem>,\n );\n break;\n case \"single-sort-desc\":\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"sort-asc\"\n key=\"sort-asc\"\n onClick={menuActionClickHandler}\n >\n Reverse Sort (ASC)\n </MenuItem>,\n <MenuItem\n data-menu-action-id=\"remove-sort\"\n key=\"remove-sort\"\n onClick={menuActionClickHandler}\n >\n Remove Sort\n </MenuItem>,\n );\n break;\n\n case \"sort-other-column\":\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"sort-add-asc\"\n key=\"sort-add-asc\"\n onClick={menuActionClickHandler}\n >\n Add to sort ASC\n </MenuItem>,\n );\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"sort-add-dsc\"\n key=\"sort-add-dsc\"\n onClick={menuActionClickHandler}\n >\n Add to sort DSC\n </MenuItem>,\n );\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"sort-asc\"\n key=\"sort-asc\"\n onClick={menuActionClickHandler}\n >\n Ascending\n </MenuItem>,\n );\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"sort-dsc\"\n key=\"sort-dsc\"\n onClick={menuActionClickHandler}\n >\n Descending\n </MenuItem>,\n );\n break;\n\n case \"multi-sort-includes-column-asc\":\n case \"multi-sort-includes-column-desc\":\n break;\n default:\n logUnhandledMessage(\n columnSortStatus,\n \"[vuu-table-extras] column-menu-utils buildSortMenu\",\n );\n }\n\n return (\n <Menu key=\"sort-menu\">\n <MenuTrigger>\n <MenuItem>{`Sort by ${label}`}</MenuItem>\n </MenuTrigger>\n <MenuPanel>{menuItems}</MenuPanel>\n </Menu>\n );\n }\n}\n\nexport function buildGroupMenu(\n column: ColumnDescriptor,\n dataSource: DataSource,\n menuActionClickHandler: MenuItemClickHandler,\n isAllowed = true,\n): MenuElement | null {\n if (!isAllowed || column.groupable === false) {\n return null;\n } else {\n const menuItems: MenuElements = [];\n const columnGroupStatus = getGroupStatus(column.name, dataSource.groupBy);\n const { name, label = name } = column;\n\n switch (columnGroupStatus) {\n case \"no-groupby\":\n case \"single-groupby-other-column\":\n return (\n <MenuItem\n data-menu-action-id=\"group-column\"\n key=\"group-column\"\n onClick={menuActionClickHandler}\n >{`Group by ${label}`}</MenuItem>\n );\n case \"single-groupby\":\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"remove-group\"\n key=\"remove-group\"\n onClick={menuActionClickHandler}\n >\n Remove Grouping\n </MenuItem>,\n );\n break;\n\n case \"multi-groupby-other-columns\":\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"add-to-group\"\n key=\"add-to-group\"\n onClick={menuActionClickHandler}\n >\n Add to grouping\n </MenuItem>,\n );\n\n break;\n\n case \"multi-groupby-includes-column\":\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"remove-from-group\"\n key=\"remove-from-group\"\n onClick={menuActionClickHandler}\n >\n Remove from grouping\n </MenuItem>,\n );\n\n break;\n\n default:\n logUnhandledMessage(\n columnGroupStatus,\n \"[vuu-table-extras] column-menu-utils buildGroupMenu\",\n );\n }\n\n return (\n <Menu key=\"group-menu\">\n <MenuTrigger>\n <MenuItem>Group data</MenuItem>\n </MenuTrigger>\n <MenuPanel>{menuItems}</MenuPanel>\n </Menu>\n );\n }\n}\n\nexport const buildVisibilityMenuItems = (\n column: ColumnDescriptor,\n menuActionClickHandler: MenuItemClickHandler,\n isAllowed = true,\n): MenuElements | null => {\n if (!isAllowed) {\n return null;\n }\n const menuItems: MenuElements = [];\n const { name, label = name } = column;\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"hide-column\"\n key=\"hide-column\"\n onClick={menuActionClickHandler}\n >\n {`Hide ${label} column`}\n </MenuItem>,\n );\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"remove-column\"\n key=\"remove-column\"\n onClick={menuActionClickHandler}\n >\n {`Remove ${label} column`}\n </MenuItem>,\n );\n\n return menuItems;\n};\n\nexport const buildPinMenuItems = (\n column: ColumnDescriptor,\n menuActionClickHandler: MenuItemClickHandler,\n isAllowed = true,\n): MenuElements => {\n if (!isAllowed || column === undefined) {\n return [];\n }\n const { pin } = column;\n\n const menuItems: MenuElements = [];\n\n const pinLeft = (\n <MenuItem\n data-menu-action-id=\"pin-column-left\"\n key=\"pin-column-left\"\n onClick={menuActionClickHandler}\n >\n Pin left\n </MenuItem>\n );\n\n const pinFloating = (\n <MenuItem\n data-menu-action-id=\"pin-column-floating\"\n key=\"pin-column-floating\"\n onClick={menuActionClickHandler}\n >\n Pin floating\n </MenuItem>\n );\n\n const pinRight = (\n <MenuItem\n data-menu-action-id=\"pin-column-right\"\n key=\"pin-column-right\"\n onClick={menuActionClickHandler}\n >\n Pin right\n </MenuItem>\n );\n\n if (pin === undefined) {\n menuItems.push(\n <Menu key=\"pin-menu\">\n <MenuTrigger>\n <MenuItem>Pin Column</MenuItem>\n </MenuTrigger>\n <MenuPanel>\n {pinLeft}\n {pinFloating}\n {pinRight}\n </MenuPanel>\n </Menu>,\n );\n } else {\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"unpin-column\"\n key=\"unpin-column\"\n onClick={menuActionClickHandler}\n >\n Unpin\n </MenuItem>,\n );\n if (pin === \"left\") {\n menuItems.push(\n <Menu key=\"pin-menu\">\n <MenuTrigger>\n <MenuItem>Pin Column</MenuItem>\n </MenuTrigger>\n <MenuPanel>\n {pinFloating}\n {pinRight}\n </MenuPanel>\n </Menu>,\n );\n } else if (pin === \"floating\") {\n menuItems.push(\n <Menu key=\"pin-menu\">\n <MenuTrigger>\n <MenuItem>Pin Column</MenuItem>\n </MenuTrigger>\n <MenuPanel>\n {pinLeft}\n {pinRight}\n </MenuPanel>\n </Menu>,\n );\n } else {\n menuItems.push(\n <Menu key=\"pin-menu\">\n <MenuTrigger>\n <MenuItem>Pin Column</MenuItem>\n </MenuTrigger>\n <MenuPanel>\n {pinFloating}\n {pinRight}\n </MenuPanel>\n </Menu>,\n );\n }\n }\n\n return menuItems;\n};\n\nexport const buildSettingsMenuItems = (\n _: ColumnDescriptor,\n menuActionClickHandler: MenuItemClickHandler,\n allowColumnSettings = true,\n allowTableSettings: boolean | TableSettingsPermissions = true,\n): MenuElements | null => {\n if (!allowColumnSettings && !allowTableSettings) {\n return null;\n }\n\n const menuItems: MenuElements = [];\n\n if (allowColumnSettings) {\n menuItems.push(\n <MenuItem\n data-icon=\"settings\"\n data-menu-action-id=\"column-settings\"\n key=\"column-settings\"\n onClick={menuActionClickHandler}\n >\n Column settings ...\n </MenuItem>,\n );\n }\n\n if (allowTableSettings) {\n menuItems.push(\n <MenuItem\n data-icon=\"settings\"\n data-menu-action-id=\"table-settings\"\n key=\"table-settings\"\n onClick={menuActionClickHandler}\n >\n Table settings ...\n </MenuItem>,\n );\n }\n\n return menuItems;\n};\n\nexport function buildAggregationMenuItems(\n column: ColumnDescriptor,\n dataSource: DataSource,\n menuActionClickHandler: MenuItemClickHandler,\n isAllowed = true,\n): MenuElements | null {\n if (!isAllowed) {\n return null;\n }\n\n const { name, label = name } = column;\n\n if (dataSource.groupBy?.length === 0) {\n return [];\n } else {\n const menuItems: MenuElements = [\n <MenuItem\n data-menu-action-id=\"agg-count\"\n key=\"agg-count\"\n onClick={menuActionClickHandler}\n >\n Count\n </MenuItem>,\n <MenuItem\n data-menu-action-id=\"agg-distinct\"\n key=\"agg-distinct\"\n onClick={menuActionClickHandler}\n >\n Distinct\n </MenuItem>,\n ];\n\n if (isNumericColumn(column)) {\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"agg-sum\"\n key=\"agg-sum\"\n onClick={menuActionClickHandler}\n >\n Sum\n </MenuItem>,\n <MenuItem\n data-menu-action-id=\"agg-avg\"\n key=\"agg-avg\"\n onClick={menuActionClickHandler}\n >\n Average\n </MenuItem>,\n <MenuItem\n data-menu-action-id=\"agg-high\"\n key=\"agg-high\"\n onClick={menuActionClickHandler}\n >\n High\n </MenuItem>,\n <MenuItem\n data-menu-action-id=\"agg-low\"\n key=\"agg-low\"\n onClick={menuActionClickHandler}\n >\n Low\n </MenuItem>,\n );\n }\n\n return [\n <Menu key=\"aggregate-menu\">\n <MenuTrigger>\n <MenuItem>{`Aggregate ${label}`}</MenuItem>\n </MenuTrigger>\n <MenuPanel>{menuItems}</MenuPanel>\n </Menu>,\n ];\n }\n}\n"],"names":["getSortStatus","jsx","MenuItem","logUnhandledMessage","Menu","MenuTrigger","MenuPanel","getGroupStatus","isNumericColumn"],"mappings":"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"}
|
|
@@ -184,18 +184,15 @@ function buildGroupMenu(column, dataSource, menuActionClickHandler, isAllowed =
|
|
|
184
184
|
switch (columnGroupStatus) {
|
|
185
185
|
case "no-groupby":
|
|
186
186
|
case "single-groupby-other-column":
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
"group-column"
|
|
196
|
-
)
|
|
187
|
+
return /* @__PURE__ */ jsx(
|
|
188
|
+
MenuItem,
|
|
189
|
+
{
|
|
190
|
+
"data-menu-action-id": "group-column",
|
|
191
|
+
onClick: menuActionClickHandler,
|
|
192
|
+
children: `Group by ${label}`
|
|
193
|
+
},
|
|
194
|
+
"group-column"
|
|
197
195
|
);
|
|
198
|
-
break;
|
|
199
196
|
case "single-groupby":
|
|
200
197
|
menuItems.push(
|
|
201
198
|
/* @__PURE__ */ jsx(
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"column-menu-utils.js","sources":["../../src/column-menu/column-menu-utils.tsx"],"sourcesContent":["import {\n Menu,\n MenuItem,\n MenuItemProps,\n MenuPanel,\n MenuProps,\n MenuTrigger,\n} from \"@salt-ds/core\";\nimport { DataSource } from \"@vuu-ui/vuu-data-types\";\nimport {\n ColumnDescriptor,\n TableSettingsPermissions,\n} from \"@vuu-ui/vuu-table-types\";\nimport {\n getGroupStatus,\n getSortStatus,\n isNumericColumn,\n logUnhandledMessage,\n} from \"@vuu-ui/vuu-utils\";\nimport { MouseEventHandler, ReactElement } from \"react\";\n\ntype MenuElement = ReactElement<MenuProps, typeof Menu>;\ntype MenuItemElement = ReactElement<MenuItemProps, typeof MenuItem>;\ntype MenuElements = Array<MenuElement | MenuItemElement>;\n\nexport type MenuItemClickHandler = MouseEventHandler<HTMLDivElement>;\n\nexport type DataSourceColumnMenuActionType =\n | \"agg-count\"\n | \"agg-distinct\"\n | \"agg-sum\"\n | \"agg-avg\"\n | \"agg-high\"\n | \"agg-low\"\n | \"sort-asc\"\n | \"sort-dsc\"\n | \"sort-add-asc\"\n | \"sort-add-dsc\"\n | \"remove-sort\"\n | \"group-column\"\n | \"remove-group\"\n | \"add-to-group\"\n | \"remove-from-group\"\n | \"remove-column\";\n\nexport type ColumnDisplayColumnMenuActionType =\n | \"pin-column-left\"\n | \"pin-column-right\"\n | \"pin-column-floating\"\n | \"unpin-column\"\n | \"hide-column\";\n\nexport type TableSettingsActionType = \"column-settings\" | \"table-settings\";\n\nexport type ColumnMenuActionType =\n | DataSourceColumnMenuActionType\n | ColumnDisplayColumnMenuActionType\n | TableSettingsActionType;\n\nexport const isColumnMenuActionType = (\n value?: string,\n): value is ColumnMenuActionType =>\n value !== undefined &&\n [\n \"agg-count\",\n \"agg-distinct\",\n \"agg-sum\",\n \"agg-avg\",\n \"agg-high\",\n \"agg-low\",\n \"sort-asc\",\n \"sort-dsc\",\n \"sort-add-asc\",\n \"sort-add-dsc\",\n \"remove-sort\",\n \"group-column\",\n \"remove-group\",\n \"add-to-group\",\n \"remove-from-group\",\n \"pin-column-left\",\n \"pin-column-right\",\n \"pin-column-floating\",\n \"unpin-column\",\n \"hide-column\",\n \"remove-column\",\n \"column-settings\",\n \"table-settings\",\n ].includes(value);\n\nexport const getColumnMenuActionType = (target: EventTarget | HTMLElement) => {\n const { menuActionId } = (target as HTMLElement).dataset;\n if (isColumnMenuActionType(menuActionId)) {\n return menuActionId;\n } else {\n throw Error(\n \"[vuu-table-extras] column-menu-utils target element is not a valid Column MenuItem\",\n );\n }\n};\n\nexport function buildSortMenu(\n column: ColumnDescriptor,\n dataSource: DataSource,\n menuActionClickHandler: MenuItemClickHandler,\n isAllowed = true,\n): MenuElement | null {\n if (!isAllowed || column.sortable === false) {\n return null;\n } else {\n const { name, label = name } = column;\n const menuItems: MenuElements = [];\n const columnSortStatus = getSortStatus(column.name, dataSource.sort);\n\n switch (columnSortStatus) {\n case \"no-sort\":\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"sort-asc\"\n key=\"sort-asc\"\n onClick={menuActionClickHandler}\n >\n Sort ascending\n </MenuItem>,\n );\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"sort-dsc\"\n key=\"sort-dsc\"\n onClick={menuActionClickHandler}\n >\n Sort descending\n </MenuItem>,\n );\n break;\n case \"single-sort-asc\":\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"sort-dsc\"\n key=\"sort-dsc\"\n onClick={menuActionClickHandler}\n >\n Reverse Sort (DSC)\n </MenuItem>,\n <MenuItem\n data-menu-action-id=\"remove-sort\"\n key=\"remove-sort\"\n onClick={menuActionClickHandler}\n >\n Remove Sort\n </MenuItem>,\n );\n break;\n case \"single-sort-desc\":\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"sort-asc\"\n key=\"sort-asc\"\n onClick={menuActionClickHandler}\n >\n Reverse Sort (ASC)\n </MenuItem>,\n <MenuItem\n data-menu-action-id=\"remove-sort\"\n key=\"remove-sort\"\n onClick={menuActionClickHandler}\n >\n Remove Sort\n </MenuItem>,\n );\n break;\n\n case \"sort-other-column\":\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"sort-add-asc\"\n key=\"sort-add-asc\"\n onClick={menuActionClickHandler}\n >\n Add to sort ASC\n </MenuItem>,\n );\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"sort-add-dsc\"\n key=\"sort-add-dsc\"\n onClick={menuActionClickHandler}\n >\n Add to sort DSC\n </MenuItem>,\n );\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"sort-asc\"\n key=\"sort-asc\"\n onClick={menuActionClickHandler}\n >\n Ascending\n </MenuItem>,\n );\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"sort-dsc\"\n key=\"sort-dsc\"\n onClick={menuActionClickHandler}\n >\n Descending\n </MenuItem>,\n );\n break;\n\n case \"multi-sort-includes-column-asc\":\n case \"multi-sort-includes-column-desc\":\n break;\n default:\n logUnhandledMessage(\n columnSortStatus,\n \"[vuu-table-extras] column-menu-utils buildSortMenu\",\n );\n }\n\n return (\n <Menu key=\"sort-menu\">\n <MenuTrigger>\n <MenuItem>{`Sort by ${label}`}</MenuItem>\n </MenuTrigger>\n <MenuPanel>{menuItems}</MenuPanel>\n </Menu>\n );\n }\n}\n\nexport function buildGroupMenu(\n column: ColumnDescriptor,\n dataSource: DataSource,\n menuActionClickHandler: MenuItemClickHandler,\n isAllowed = true,\n): MenuElement | null {\n if (!isAllowed || column.groupable === false) {\n return null;\n } else {\n const menuItems: MenuElements = [];\n const columnGroupStatus = getGroupStatus(column.name, dataSource.groupBy);\n const { name, label = name } = column;\n\n switch (columnGroupStatus) {\n case \"no-groupby\":\n case \"single-groupby-other-column\":\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"group-column\"\n key=\"group-column\"\n onClick={menuActionClickHandler}\n >{`Group by ${label}`}</MenuItem>,\n );\n break;\n case \"single-groupby\":\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"remove-group\"\n key=\"remove-group\"\n onClick={menuActionClickHandler}\n >\n Remove Grouping\n </MenuItem>,\n );\n break;\n\n case \"multi-groupby-other-columns\":\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"add-to-group\"\n key=\"add-to-group\"\n onClick={menuActionClickHandler}\n >\n Add to grouping\n </MenuItem>,\n );\n\n break;\n\n case \"multi-groupby-includes-column\":\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"remove-from-group\"\n key=\"remove-from-group\"\n onClick={menuActionClickHandler}\n >\n Remove from grouping\n </MenuItem>,\n );\n\n break;\n\n default:\n logUnhandledMessage(\n columnGroupStatus,\n \"[vuu-table-extras] column-menu-utils buildGroupMenu\",\n );\n }\n\n return (\n <Menu key=\"group-menu\">\n <MenuTrigger>\n <MenuItem>Group data</MenuItem>\n </MenuTrigger>\n <MenuPanel>{menuItems}</MenuPanel>\n </Menu>\n );\n }\n}\n\nexport const buildVisibilityMenuItems = (\n column: ColumnDescriptor,\n menuActionClickHandler: MenuItemClickHandler,\n isAllowed = true,\n): MenuElements | null => {\n if (!isAllowed) {\n return null;\n }\n const menuItems: MenuElements = [];\n const { name, label = name } = column;\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"hide-column\"\n key=\"hide-column\"\n onClick={menuActionClickHandler}\n >\n {`Hide ${label} column`}\n </MenuItem>,\n );\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"remove-column\"\n key=\"remove-column\"\n onClick={menuActionClickHandler}\n >\n {`Remove ${label} column`}\n </MenuItem>,\n );\n\n return menuItems;\n};\n\nexport const buildPinMenuItems = (\n column: ColumnDescriptor,\n menuActionClickHandler: MenuItemClickHandler,\n isAllowed = true,\n): MenuElements => {\n if (!isAllowed || column === undefined) {\n return [];\n }\n const { pin } = column;\n\n const menuItems: MenuElements = [];\n\n const pinLeft = (\n <MenuItem\n data-menu-action-id=\"pin-column-left\"\n key=\"pin-column-left\"\n onClick={menuActionClickHandler}\n >\n Pin left\n </MenuItem>\n );\n\n const pinFloating = (\n <MenuItem\n data-menu-action-id=\"pin-column-floating\"\n key=\"pin-column-floating\"\n onClick={menuActionClickHandler}\n >\n Pin floating\n </MenuItem>\n );\n\n const pinRight = (\n <MenuItem\n data-menu-action-id=\"pin-column-right\"\n key=\"pin-column-right\"\n onClick={menuActionClickHandler}\n >\n Pin right\n </MenuItem>\n );\n\n if (pin === undefined) {\n menuItems.push(\n <Menu key=\"pin-menu\">\n <MenuTrigger>\n <MenuItem>Pin Column</MenuItem>\n </MenuTrigger>\n <MenuPanel>\n {pinLeft}\n {pinFloating}\n {pinRight}\n </MenuPanel>\n </Menu>,\n );\n } else {\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"unpin-column\"\n key=\"unpin-column\"\n onClick={menuActionClickHandler}\n >\n Unpin\n </MenuItem>,\n );\n if (pin === \"left\") {\n menuItems.push(\n <Menu key=\"pin-menu\">\n <MenuTrigger>\n <MenuItem>Pin Column</MenuItem>\n </MenuTrigger>\n <MenuPanel>\n {pinFloating}\n {pinRight}\n </MenuPanel>\n </Menu>,\n );\n } else if (pin === \"floating\") {\n menuItems.push(\n <Menu key=\"pin-menu\">\n <MenuTrigger>\n <MenuItem>Pin Column</MenuItem>\n </MenuTrigger>\n <MenuPanel>\n {pinLeft}\n {pinRight}\n </MenuPanel>\n </Menu>,\n );\n } else {\n menuItems.push(\n <Menu key=\"pin-menu\">\n <MenuTrigger>\n <MenuItem>Pin Column</MenuItem>\n </MenuTrigger>\n <MenuPanel>\n {pinFloating}\n {pinRight}\n </MenuPanel>\n </Menu>,\n );\n }\n }\n\n return menuItems;\n};\n\nexport const buildSettingsMenuItems = (\n _: ColumnDescriptor,\n menuActionClickHandler: MenuItemClickHandler,\n allowColumnSettings = true,\n allowTableSettings: boolean | TableSettingsPermissions = true,\n): MenuElements | null => {\n if (!allowColumnSettings && !allowTableSettings) {\n return null;\n }\n\n const menuItems: MenuElements = [];\n\n if (allowColumnSettings) {\n menuItems.push(\n <MenuItem\n data-icon=\"settings\"\n data-menu-action-id=\"column-settings\"\n key=\"column-settings\"\n onClick={menuActionClickHandler}\n >\n Column settings ...\n </MenuItem>,\n );\n }\n\n if (allowTableSettings) {\n menuItems.push(\n <MenuItem\n data-icon=\"settings\"\n data-menu-action-id=\"table-settings\"\n key=\"table-settings\"\n onClick={menuActionClickHandler}\n >\n Table settings ...\n </MenuItem>,\n );\n }\n\n return menuItems;\n};\n\nexport function buildAggregationMenuItems(\n column: ColumnDescriptor,\n dataSource: DataSource,\n menuActionClickHandler: MenuItemClickHandler,\n isAllowed = true,\n): MenuElements | null {\n if (!isAllowed) {\n return null;\n }\n\n const { name, label = name } = column;\n\n if (dataSource.groupBy?.length === 0) {\n return [];\n } else {\n const menuItems: MenuElements = [\n <MenuItem\n data-menu-action-id=\"agg-count\"\n key=\"agg-count\"\n onClick={menuActionClickHandler}\n >\n Count\n </MenuItem>,\n <MenuItem\n data-menu-action-id=\"agg-distinct\"\n key=\"agg-distinct\"\n onClick={menuActionClickHandler}\n >\n Distinct\n </MenuItem>,\n ];\n\n if (isNumericColumn(column)) {\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"agg-sum\"\n key=\"agg-sum\"\n onClick={menuActionClickHandler}\n >\n Sum\n </MenuItem>,\n <MenuItem\n data-menu-action-id=\"agg-avg\"\n key=\"agg-avg\"\n onClick={menuActionClickHandler}\n >\n Average\n </MenuItem>,\n <MenuItem\n data-menu-action-id=\"agg-high\"\n key=\"agg-high\"\n onClick={menuActionClickHandler}\n >\n High\n </MenuItem>,\n <MenuItem\n data-menu-action-id=\"agg-low\"\n key=\"agg-low\"\n onClick={menuActionClickHandler}\n >\n Low\n </MenuItem>,\n );\n }\n\n return [\n <Menu key=\"aggregate-menu\">\n <MenuTrigger>\n <MenuItem>{`Aggregate ${label}`}</MenuItem>\n </MenuTrigger>\n <MenuPanel>{menuItems}</MenuPanel>\n </Menu>,\n ];\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"column-menu-utils.js","sources":["../../src/column-menu/column-menu-utils.tsx"],"sourcesContent":["import {\n Menu,\n MenuItem,\n MenuItemProps,\n MenuPanel,\n MenuProps,\n MenuTrigger,\n} from \"@salt-ds/core\";\nimport { DataSource } from \"@vuu-ui/vuu-data-types\";\nimport {\n ColumnDescriptor,\n TableSettingsPermissions,\n} from \"@vuu-ui/vuu-table-types\";\nimport {\n getGroupStatus,\n getSortStatus,\n isNumericColumn,\n logUnhandledMessage,\n} from \"@vuu-ui/vuu-utils\";\nimport { MouseEventHandler, ReactElement } from \"react\";\n\ntype MenuElement = ReactElement<MenuProps, typeof Menu>;\ntype MenuItemElement = ReactElement<MenuItemProps, typeof MenuItem>;\ntype MenuElements = Array<MenuElement | MenuItemElement>;\n\nexport type MenuItemClickHandler = MouseEventHandler<HTMLDivElement>;\n\nexport type DataSourceColumnMenuActionType =\n | \"agg-count\"\n | \"agg-distinct\"\n | \"agg-sum\"\n | \"agg-avg\"\n | \"agg-high\"\n | \"agg-low\"\n | \"sort-asc\"\n | \"sort-dsc\"\n | \"sort-add-asc\"\n | \"sort-add-dsc\"\n | \"remove-sort\"\n | \"group-column\"\n | \"remove-group\"\n | \"add-to-group\"\n | \"remove-from-group\"\n | \"remove-column\";\n\nexport type ColumnDisplayColumnMenuActionType =\n | \"pin-column-left\"\n | \"pin-column-right\"\n | \"pin-column-floating\"\n | \"unpin-column\"\n | \"hide-column\";\n\nexport type TableSettingsActionType = \"column-settings\" | \"table-settings\";\n\nexport type ColumnMenuActionType =\n | DataSourceColumnMenuActionType\n | ColumnDisplayColumnMenuActionType\n | TableSettingsActionType;\n\nexport const isColumnMenuActionType = (\n value?: string,\n): value is ColumnMenuActionType =>\n value !== undefined &&\n [\n \"agg-count\",\n \"agg-distinct\",\n \"agg-sum\",\n \"agg-avg\",\n \"agg-high\",\n \"agg-low\",\n \"sort-asc\",\n \"sort-dsc\",\n \"sort-add-asc\",\n \"sort-add-dsc\",\n \"remove-sort\",\n \"group-column\",\n \"remove-group\",\n \"add-to-group\",\n \"remove-from-group\",\n \"pin-column-left\",\n \"pin-column-right\",\n \"pin-column-floating\",\n \"unpin-column\",\n \"hide-column\",\n \"remove-column\",\n \"column-settings\",\n \"table-settings\",\n ].includes(value);\n\nexport const getColumnMenuActionType = (target: EventTarget | HTMLElement) => {\n const { menuActionId } = (target as HTMLElement).dataset;\n if (isColumnMenuActionType(menuActionId)) {\n return menuActionId;\n } else {\n throw Error(\n \"[vuu-table-extras] column-menu-utils target element is not a valid Column MenuItem\",\n );\n }\n};\n\nexport function buildSortMenu(\n column: ColumnDescriptor,\n dataSource: DataSource,\n menuActionClickHandler: MenuItemClickHandler,\n isAllowed = true,\n): MenuElement | null {\n if (!isAllowed || column.sortable === false) {\n return null;\n } else {\n const { name, label = name } = column;\n const menuItems: MenuElements = [];\n const columnSortStatus = getSortStatus(column.name, dataSource.sort);\n\n switch (columnSortStatus) {\n case \"no-sort\":\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"sort-asc\"\n key=\"sort-asc\"\n onClick={menuActionClickHandler}\n >\n Sort ascending\n </MenuItem>,\n );\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"sort-dsc\"\n key=\"sort-dsc\"\n onClick={menuActionClickHandler}\n >\n Sort descending\n </MenuItem>,\n );\n break;\n case \"single-sort-asc\":\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"sort-dsc\"\n key=\"sort-dsc\"\n onClick={menuActionClickHandler}\n >\n Reverse Sort (DSC)\n </MenuItem>,\n <MenuItem\n data-menu-action-id=\"remove-sort\"\n key=\"remove-sort\"\n onClick={menuActionClickHandler}\n >\n Remove Sort\n </MenuItem>,\n );\n break;\n case \"single-sort-desc\":\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"sort-asc\"\n key=\"sort-asc\"\n onClick={menuActionClickHandler}\n >\n Reverse Sort (ASC)\n </MenuItem>,\n <MenuItem\n data-menu-action-id=\"remove-sort\"\n key=\"remove-sort\"\n onClick={menuActionClickHandler}\n >\n Remove Sort\n </MenuItem>,\n );\n break;\n\n case \"sort-other-column\":\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"sort-add-asc\"\n key=\"sort-add-asc\"\n onClick={menuActionClickHandler}\n >\n Add to sort ASC\n </MenuItem>,\n );\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"sort-add-dsc\"\n key=\"sort-add-dsc\"\n onClick={menuActionClickHandler}\n >\n Add to sort DSC\n </MenuItem>,\n );\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"sort-asc\"\n key=\"sort-asc\"\n onClick={menuActionClickHandler}\n >\n Ascending\n </MenuItem>,\n );\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"sort-dsc\"\n key=\"sort-dsc\"\n onClick={menuActionClickHandler}\n >\n Descending\n </MenuItem>,\n );\n break;\n\n case \"multi-sort-includes-column-asc\":\n case \"multi-sort-includes-column-desc\":\n break;\n default:\n logUnhandledMessage(\n columnSortStatus,\n \"[vuu-table-extras] column-menu-utils buildSortMenu\",\n );\n }\n\n return (\n <Menu key=\"sort-menu\">\n <MenuTrigger>\n <MenuItem>{`Sort by ${label}`}</MenuItem>\n </MenuTrigger>\n <MenuPanel>{menuItems}</MenuPanel>\n </Menu>\n );\n }\n}\n\nexport function buildGroupMenu(\n column: ColumnDescriptor,\n dataSource: DataSource,\n menuActionClickHandler: MenuItemClickHandler,\n isAllowed = true,\n): MenuElement | null {\n if (!isAllowed || column.groupable === false) {\n return null;\n } else {\n const menuItems: MenuElements = [];\n const columnGroupStatus = getGroupStatus(column.name, dataSource.groupBy);\n const { name, label = name } = column;\n\n switch (columnGroupStatus) {\n case \"no-groupby\":\n case \"single-groupby-other-column\":\n return (\n <MenuItem\n data-menu-action-id=\"group-column\"\n key=\"group-column\"\n onClick={menuActionClickHandler}\n >{`Group by ${label}`}</MenuItem>\n );\n case \"single-groupby\":\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"remove-group\"\n key=\"remove-group\"\n onClick={menuActionClickHandler}\n >\n Remove Grouping\n </MenuItem>,\n );\n break;\n\n case \"multi-groupby-other-columns\":\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"add-to-group\"\n key=\"add-to-group\"\n onClick={menuActionClickHandler}\n >\n Add to grouping\n </MenuItem>,\n );\n\n break;\n\n case \"multi-groupby-includes-column\":\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"remove-from-group\"\n key=\"remove-from-group\"\n onClick={menuActionClickHandler}\n >\n Remove from grouping\n </MenuItem>,\n );\n\n break;\n\n default:\n logUnhandledMessage(\n columnGroupStatus,\n \"[vuu-table-extras] column-menu-utils buildGroupMenu\",\n );\n }\n\n return (\n <Menu key=\"group-menu\">\n <MenuTrigger>\n <MenuItem>Group data</MenuItem>\n </MenuTrigger>\n <MenuPanel>{menuItems}</MenuPanel>\n </Menu>\n );\n }\n}\n\nexport const buildVisibilityMenuItems = (\n column: ColumnDescriptor,\n menuActionClickHandler: MenuItemClickHandler,\n isAllowed = true,\n): MenuElements | null => {\n if (!isAllowed) {\n return null;\n }\n const menuItems: MenuElements = [];\n const { name, label = name } = column;\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"hide-column\"\n key=\"hide-column\"\n onClick={menuActionClickHandler}\n >\n {`Hide ${label} column`}\n </MenuItem>,\n );\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"remove-column\"\n key=\"remove-column\"\n onClick={menuActionClickHandler}\n >\n {`Remove ${label} column`}\n </MenuItem>,\n );\n\n return menuItems;\n};\n\nexport const buildPinMenuItems = (\n column: ColumnDescriptor,\n menuActionClickHandler: MenuItemClickHandler,\n isAllowed = true,\n): MenuElements => {\n if (!isAllowed || column === undefined) {\n return [];\n }\n const { pin } = column;\n\n const menuItems: MenuElements = [];\n\n const pinLeft = (\n <MenuItem\n data-menu-action-id=\"pin-column-left\"\n key=\"pin-column-left\"\n onClick={menuActionClickHandler}\n >\n Pin left\n </MenuItem>\n );\n\n const pinFloating = (\n <MenuItem\n data-menu-action-id=\"pin-column-floating\"\n key=\"pin-column-floating\"\n onClick={menuActionClickHandler}\n >\n Pin floating\n </MenuItem>\n );\n\n const pinRight = (\n <MenuItem\n data-menu-action-id=\"pin-column-right\"\n key=\"pin-column-right\"\n onClick={menuActionClickHandler}\n >\n Pin right\n </MenuItem>\n );\n\n if (pin === undefined) {\n menuItems.push(\n <Menu key=\"pin-menu\">\n <MenuTrigger>\n <MenuItem>Pin Column</MenuItem>\n </MenuTrigger>\n <MenuPanel>\n {pinLeft}\n {pinFloating}\n {pinRight}\n </MenuPanel>\n </Menu>,\n );\n } else {\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"unpin-column\"\n key=\"unpin-column\"\n onClick={menuActionClickHandler}\n >\n Unpin\n </MenuItem>,\n );\n if (pin === \"left\") {\n menuItems.push(\n <Menu key=\"pin-menu\">\n <MenuTrigger>\n <MenuItem>Pin Column</MenuItem>\n </MenuTrigger>\n <MenuPanel>\n {pinFloating}\n {pinRight}\n </MenuPanel>\n </Menu>,\n );\n } else if (pin === \"floating\") {\n menuItems.push(\n <Menu key=\"pin-menu\">\n <MenuTrigger>\n <MenuItem>Pin Column</MenuItem>\n </MenuTrigger>\n <MenuPanel>\n {pinLeft}\n {pinRight}\n </MenuPanel>\n </Menu>,\n );\n } else {\n menuItems.push(\n <Menu key=\"pin-menu\">\n <MenuTrigger>\n <MenuItem>Pin Column</MenuItem>\n </MenuTrigger>\n <MenuPanel>\n {pinFloating}\n {pinRight}\n </MenuPanel>\n </Menu>,\n );\n }\n }\n\n return menuItems;\n};\n\nexport const buildSettingsMenuItems = (\n _: ColumnDescriptor,\n menuActionClickHandler: MenuItemClickHandler,\n allowColumnSettings = true,\n allowTableSettings: boolean | TableSettingsPermissions = true,\n): MenuElements | null => {\n if (!allowColumnSettings && !allowTableSettings) {\n return null;\n }\n\n const menuItems: MenuElements = [];\n\n if (allowColumnSettings) {\n menuItems.push(\n <MenuItem\n data-icon=\"settings\"\n data-menu-action-id=\"column-settings\"\n key=\"column-settings\"\n onClick={menuActionClickHandler}\n >\n Column settings ...\n </MenuItem>,\n );\n }\n\n if (allowTableSettings) {\n menuItems.push(\n <MenuItem\n data-icon=\"settings\"\n data-menu-action-id=\"table-settings\"\n key=\"table-settings\"\n onClick={menuActionClickHandler}\n >\n Table settings ...\n </MenuItem>,\n );\n }\n\n return menuItems;\n};\n\nexport function buildAggregationMenuItems(\n column: ColumnDescriptor,\n dataSource: DataSource,\n menuActionClickHandler: MenuItemClickHandler,\n isAllowed = true,\n): MenuElements | null {\n if (!isAllowed) {\n return null;\n }\n\n const { name, label = name } = column;\n\n if (dataSource.groupBy?.length === 0) {\n return [];\n } else {\n const menuItems: MenuElements = [\n <MenuItem\n data-menu-action-id=\"agg-count\"\n key=\"agg-count\"\n onClick={menuActionClickHandler}\n >\n Count\n </MenuItem>,\n <MenuItem\n data-menu-action-id=\"agg-distinct\"\n key=\"agg-distinct\"\n onClick={menuActionClickHandler}\n >\n Distinct\n </MenuItem>,\n ];\n\n if (isNumericColumn(column)) {\n menuItems.push(\n <MenuItem\n data-menu-action-id=\"agg-sum\"\n key=\"agg-sum\"\n onClick={menuActionClickHandler}\n >\n Sum\n </MenuItem>,\n <MenuItem\n data-menu-action-id=\"agg-avg\"\n key=\"agg-avg\"\n onClick={menuActionClickHandler}\n >\n Average\n </MenuItem>,\n <MenuItem\n data-menu-action-id=\"agg-high\"\n key=\"agg-high\"\n onClick={menuActionClickHandler}\n >\n High\n </MenuItem>,\n <MenuItem\n data-menu-action-id=\"agg-low\"\n key=\"agg-low\"\n onClick={menuActionClickHandler}\n >\n Low\n </MenuItem>,\n );\n }\n\n return [\n <Menu key=\"aggregate-menu\">\n <MenuTrigger>\n <MenuItem>{`Aggregate ${label}`}</MenuItem>\n </MenuTrigger>\n <MenuPanel>{menuItems}</MenuPanel>\n </Menu>,\n ];\n }\n}\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.13.
|
|
2
|
+
"version": "0.13.6",
|
|
3
3
|
"author": "heswell",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"devDependencies": {
|
|
6
|
-
"@vuu-ui/vuu-filter-types": "0.13.
|
|
7
|
-
"@vuu-ui/vuu-protocol-types": "0.13.
|
|
6
|
+
"@vuu-ui/vuu-filter-types": "0.13.6",
|
|
7
|
+
"@vuu-ui/vuu-protocol-types": "0.13.6"
|
|
8
8
|
},
|
|
9
9
|
"dependencies": {
|
|
10
|
-
"@vuu-ui/vuu-codemirror": "0.13.
|
|
11
|
-
"@vuu-ui/vuu-data-react": "0.13.
|
|
12
|
-
"@vuu-ui/vuu-data-types": "0.13.
|
|
13
|
-
"@vuu-ui/vuu-table-types": "0.13.
|
|
14
|
-
"@vuu-ui/vuu-popups": "0.13.
|
|
15
|
-
"@vuu-ui/vuu-table": "0.13.
|
|
16
|
-
"@vuu-ui/vuu-utils": "0.13.
|
|
17
|
-
"@vuu-ui/vuu-ui-controls": "0.13.
|
|
10
|
+
"@vuu-ui/vuu-codemirror": "0.13.6",
|
|
11
|
+
"@vuu-ui/vuu-data-react": "0.13.6",
|
|
12
|
+
"@vuu-ui/vuu-data-types": "0.13.6",
|
|
13
|
+
"@vuu-ui/vuu-table-types": "0.13.6",
|
|
14
|
+
"@vuu-ui/vuu-popups": "0.13.6",
|
|
15
|
+
"@vuu-ui/vuu-table": "0.13.6",
|
|
16
|
+
"@vuu-ui/vuu-utils": "0.13.6",
|
|
17
|
+
"@vuu-ui/vuu-ui-controls": "0.13.6",
|
|
18
18
|
"@lezer/lr": "1.4.2",
|
|
19
19
|
"@salt-ds/core": "1.43.0",
|
|
20
20
|
"@salt-ds/styles": "0.2.1",
|
|
@@ -31,15 +31,18 @@
|
|
|
31
31
|
"files": [
|
|
32
32
|
"README.md",
|
|
33
33
|
"esm",
|
|
34
|
-
"cjs"
|
|
34
|
+
"cjs",
|
|
35
|
+
"/types"
|
|
35
36
|
],
|
|
36
37
|
"exports": {
|
|
37
38
|
".": {
|
|
38
39
|
"require": "./cjs/index.js",
|
|
39
|
-
"import": "./esm/index.js"
|
|
40
|
+
"import": "./esm/index.js",
|
|
41
|
+
"types": "./types/index.d.ts"
|
|
40
42
|
}
|
|
41
43
|
},
|
|
42
44
|
"main": "cjs/index.js",
|
|
43
45
|
"module": "esm/index.js",
|
|
44
|
-
"name": "@vuu-ui/vuu-table-extras"
|
|
46
|
+
"name": "@vuu-ui/vuu-table-extras",
|
|
47
|
+
"types": "types/index.d.ts"
|
|
45
48
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./DropdownCell";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./LookupCell";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./PctProgressCell";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./ProgressCell";
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { HTMLAttributes } from "react";
|
|
2
|
+
import { ColumnDefinitionExpression } from "./column-language-parser";
|
|
3
|
+
import { ExpressionSuggestionConsumer } from "./useColumnExpressionEditor";
|
|
4
|
+
export type ColumnExpressionSubmitHandler = (source: string, expression: ColumnDefinitionExpression | undefined) => void;
|
|
5
|
+
export interface ColumnExpressionInputProps extends ExpressionSuggestionConsumer, Omit<HTMLAttributes<HTMLDivElement>, "onChange"> {
|
|
6
|
+
onChange?: (source: string) => void;
|
|
7
|
+
onSubmitExpression?: ColumnExpressionSubmitHandler;
|
|
8
|
+
source?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare const ColumnExpressionInput: import("react").MemoExoticComponent<({ onChange, onSubmitExpression, source, suggestionProvider, }: ColumnExpressionInputProps) => import("react/jsx-runtime").JSX.Element>;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export type ColumnFunctionDescriptor = {
|
|
2
|
+
accepts: "string" | "number" | "boolean" | "any" | Array<"string" | "number" | "boolean">;
|
|
3
|
+
description: string;
|
|
4
|
+
example: {
|
|
5
|
+
expression: string;
|
|
6
|
+
result: string;
|
|
7
|
+
};
|
|
8
|
+
name: string;
|
|
9
|
+
params: {
|
|
10
|
+
count?: number;
|
|
11
|
+
description: string;
|
|
12
|
+
};
|
|
13
|
+
type: "string" | "number" | "boolean" | "variable";
|
|
14
|
+
};
|
|
15
|
+
export declare const columnFunctionDescriptors: ColumnFunctionDescriptor[];
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { Tree } from "@vuu-ui/vuu-codemirror";
|
|
2
|
+
import { RelationalExpression } from "./generated/column-parser.terms";
|
|
3
|
+
type expressionType = "arithmeticExpression" | "booleanCondition" | "booleanLiteralExpression" | "callExpression" | "colExpression" | "conditionalExpression" | "numericLiteralExpression" | "relationalExpression" | "stringLiteralExpression" | "unknown";
|
|
4
|
+
type arithmeticOp = "*" | "/" | "+" | "-" | "unknown";
|
|
5
|
+
type booleanOp = "and" | "or";
|
|
6
|
+
type relationalOp = "=" | "!=" | ">" | ">=" | "<" | "<=" | "unknown";
|
|
7
|
+
export interface Expression {
|
|
8
|
+
type: expressionType;
|
|
9
|
+
expressions?: Expression[];
|
|
10
|
+
toJSON?: () => unknown;
|
|
11
|
+
value?: string | number | boolean;
|
|
12
|
+
}
|
|
13
|
+
interface BooleanLiteralExpression {
|
|
14
|
+
type: "booleanLiteralExpression";
|
|
15
|
+
value: boolean;
|
|
16
|
+
}
|
|
17
|
+
interface NumericLiteralExpression {
|
|
18
|
+
type: "numericLiteralExpression";
|
|
19
|
+
value: number;
|
|
20
|
+
}
|
|
21
|
+
interface StringLiteralExpression {
|
|
22
|
+
type: "stringLiteralExpression";
|
|
23
|
+
value: string;
|
|
24
|
+
}
|
|
25
|
+
interface ArithmeticExpression extends Expression {
|
|
26
|
+
expressions: [Expression, Expression];
|
|
27
|
+
op: arithmeticOp;
|
|
28
|
+
type: "arithmeticExpression";
|
|
29
|
+
}
|
|
30
|
+
interface BooleanCondition extends Expression {
|
|
31
|
+
expressions: Expression[];
|
|
32
|
+
op: booleanOp;
|
|
33
|
+
type: "booleanCondition";
|
|
34
|
+
}
|
|
35
|
+
interface RelationalExpression extends Expression {
|
|
36
|
+
expressions: Expression[];
|
|
37
|
+
op: relationalOp;
|
|
38
|
+
type: "relationalExpression";
|
|
39
|
+
}
|
|
40
|
+
interface ColExpression extends Expression {
|
|
41
|
+
column?: string;
|
|
42
|
+
type: "colExpression";
|
|
43
|
+
}
|
|
44
|
+
interface CallExpression extends Expression {
|
|
45
|
+
arguments: Expression[];
|
|
46
|
+
functionName?: string;
|
|
47
|
+
type: "callExpression";
|
|
48
|
+
}
|
|
49
|
+
type ConditionExpression = RelationalExpression | BooleanCondition;
|
|
50
|
+
interface ConditionalExpression extends Expression {
|
|
51
|
+
type: "conditionalExpression";
|
|
52
|
+
condition: ConditionExpression;
|
|
53
|
+
truthyExpression: Expression;
|
|
54
|
+
falsyExpression: Expression;
|
|
55
|
+
}
|
|
56
|
+
export type ColumnDefinitionExpression = ArithmeticExpression | BooleanLiteralExpression | CallExpression | ColExpression | ConditionalExpression | NumericLiteralExpression | StringLiteralExpression;
|
|
57
|
+
export declare const walkTree: (tree: Tree, source: string) => ColumnDefinitionExpression;
|
|
58
|
+
export {};
|
package/types/column-expression-input/column-language-parser/column-expression-parse-utils.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { SyntaxNode } from "@vuu-ui/vuu-codemirror";
|
|
2
|
+
export declare const ColumnNamedTerms: readonly string[];
|
|
3
|
+
export declare const isCompleteExpression: (src: string) => boolean;
|
|
4
|
+
export declare const lastNamedChild: (node: SyntaxNode) => SyntaxNode | null;
|
|
5
|
+
export declare const isCompleteRelationalExpression: (node?: SyntaxNode) => boolean;
|
package/types/column-expression-input/column-language-parser/generated/column-parser.terms.d.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export const ColumnDefinitionExpression: 1;
|
|
2
|
+
export const Column: 2;
|
|
3
|
+
export const Number: 3;
|
|
4
|
+
export const String: 4;
|
|
5
|
+
export const True: 5;
|
|
6
|
+
export const False: 6;
|
|
7
|
+
export const ParenthesizedExpression: 7;
|
|
8
|
+
export const OpenBrace: 8;
|
|
9
|
+
export const CloseBrace: 9;
|
|
10
|
+
export const ArithmeticExpression: 10;
|
|
11
|
+
export const Divide: 11;
|
|
12
|
+
export const Times: 12;
|
|
13
|
+
export const Plus: 13;
|
|
14
|
+
export const Minus: 14;
|
|
15
|
+
export const ConditionalExpression: 15;
|
|
16
|
+
export const If: 16;
|
|
17
|
+
export const RelationalExpression: 17;
|
|
18
|
+
export const RelationalOperator: 18;
|
|
19
|
+
export const AndCondition: 19;
|
|
20
|
+
export const OrCondition: 20;
|
|
21
|
+
export const Comma: 21;
|
|
22
|
+
export const CallExpression: 22;
|
|
23
|
+
export const Function: 23;
|
|
24
|
+
export const ArgList: 24;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export function walkTree(tree: any, source: any): void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const vuuHighlighting: import("@codemirror/state").Extension;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const vuuTheme: import("@codemirror/state").Extension;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { CompletionSource } from "@vuu-ui/vuu-codemirror";
|
|
2
|
+
import { MutableRefObject } from "react";
|
|
3
|
+
import { IExpressionSuggestionProvider } from "./useColumnExpressionEditor";
|
|
4
|
+
export type ApplyCompletion = (mode?: "add" | "replace") => void;
|
|
5
|
+
export type Operator = "";
|
|
6
|
+
export declare const useColumnAutoComplete: (suggestionProvider: IExpressionSuggestionProvider, onSubmit: MutableRefObject<ApplyCompletion>) => CompletionSource;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Completion } from "@vuu-ui/vuu-codemirror";
|
|
2
|
+
import { FocusEventHandler } from "react";
|
|
3
|
+
import { ColumnExpressionInputProps } from "./ColumnExpressionInput";
|
|
4
|
+
export type ColumnExpressionOperator = "Times" | "Divide" | "Minus" | "Plus";
|
|
5
|
+
export type ColumnExpressionSuggestionType = "column" | "columnValue" | "expression" | "condition-operator" | "operator" | "relational-operator";
|
|
6
|
+
export type ColumnExpressionSuggestionOptions = {
|
|
7
|
+
columnName?: string;
|
|
8
|
+
functionName?: string;
|
|
9
|
+
operator?: ColumnExpressionOperator;
|
|
10
|
+
prefix?: string;
|
|
11
|
+
startsWith?: string;
|
|
12
|
+
selection?: string[];
|
|
13
|
+
};
|
|
14
|
+
export interface IExpressionSuggestionProvider {
|
|
15
|
+
getSuggestions: (valueType: ColumnExpressionSuggestionType, options?: ColumnExpressionSuggestionOptions) => Promise<Completion[]>;
|
|
16
|
+
isPartialMatch: (valueType: ColumnExpressionSuggestionType, columnName?: string, text?: string | undefined) => Promise<boolean>;
|
|
17
|
+
}
|
|
18
|
+
export interface ExpressionSuggestionConsumer {
|
|
19
|
+
suggestionProvider: IExpressionSuggestionProvider;
|
|
20
|
+
}
|
|
21
|
+
export declare const useColumnExpressionEditor: ({ onChange, onSubmitExpression, source, suggestionProvider, }: ColumnExpressionInputProps) => {
|
|
22
|
+
editorRef: import("react").RefObject<HTMLDivElement | null>;
|
|
23
|
+
clearInput: () => void;
|
|
24
|
+
onBlur: FocusEventHandler;
|
|
25
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ColumnDescriptor } from "@vuu-ui/vuu-table-types";
|
|
2
|
+
import { VuuTable } from "@vuu-ui/vuu-protocol-types";
|
|
3
|
+
import { IExpressionSuggestionProvider } from "./useColumnExpressionEditor";
|
|
4
|
+
export interface SuggestionProviderHookProps {
|
|
5
|
+
columns: ColumnDescriptor[];
|
|
6
|
+
table: VuuTable;
|
|
7
|
+
}
|
|
8
|
+
export declare const useColumnExpressionSuggestionProvider: ({ columns, table, }: SuggestionProviderHookProps) => IExpressionSuggestionProvider;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { VuuColumnDataType } from "@vuu-ui/vuu-protocol-types";
|
|
2
|
+
import { ColumnDescriptor, ColumnSettingsProps } from "@vuu-ui/vuu-table-types";
|
|
3
|
+
import { HTMLAttributes } from "react";
|
|
4
|
+
export interface ColumnExpressionPanelProps extends HTMLAttributes<HTMLDivElement>, Pick<ColumnSettingsProps, "tableConfig" | "vuuTable"> {
|
|
5
|
+
column: ColumnDescriptor;
|
|
6
|
+
/**
|
|
7
|
+
* Callback prop, invoked on every change to calculated column definition
|
|
8
|
+
* @param calculatedColumnName the full calculated column name
|
|
9
|
+
*/
|
|
10
|
+
onChangeName?: (name: string) => void;
|
|
11
|
+
onChangeServerDataType?: (name: VuuColumnDataType) => void;
|
|
12
|
+
}
|
|
13
|
+
export declare const ColumnExpressionPanel: ({ column: columnProp, onChangeName: onChangeNameProp, onChangeServerDataType: onChangeServerDataTypeProp, tableConfig, vuuTable, }: ColumnExpressionPanelProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./ColumnExpressionPanel";
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ColumnDescriptor } from "@vuu-ui/vuu-table-types";
|
|
2
|
+
import { FormEventHandler, SyntheticEvent } from "react";
|
|
3
|
+
import { ColumnExpressionPanelProps } from "./ColumnExpressionPanel";
|
|
4
|
+
export type ColumnExpressionHookProps = Pick<ColumnExpressionPanelProps, "column" | "onChangeName" | "onChangeServerDataType">;
|
|
5
|
+
export declare const useColumnExpression: ({ column: columnProp, onChangeName: onChangeNameProp, onChangeServerDataType: onChangeServerDataTypeProp, }: ColumnExpressionHookProps) => {
|
|
6
|
+
column: ColumnDescriptor;
|
|
7
|
+
onChangeExpression: (value: string) => void;
|
|
8
|
+
onChangeName: FormEventHandler;
|
|
9
|
+
onChangeServerDataType: (_e: SyntheticEvent, [serverDataType]: string[]) => void;
|
|
10
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ColumnDescriptor, ColumnTypeRendering, FormattingSettingsProps } from "@vuu-ui/vuu-table-types";
|
|
2
|
+
import { CellRendererDescriptor } from "@vuu-ui/vuu-utils";
|
|
3
|
+
import { HTMLAttributes } from "react";
|
|
4
|
+
export interface ColumnFormattingPanelProps extends HTMLAttributes<HTMLDivElement>, FormattingSettingsProps {
|
|
5
|
+
availableRenderers: CellRendererDescriptor[];
|
|
6
|
+
column: ColumnDescriptor;
|
|
7
|
+
onChangeRendering: (renderProps: ColumnTypeRendering) => void;
|
|
8
|
+
}
|
|
9
|
+
export declare const ColumnFormattingPanel: ({ availableRenderers, className, column, onChangeFormatting, onChangeColumnType, onChangeRendering, ...htmlAttributes }: ColumnFormattingPanelProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { DateTimeDataValueDescriptor } from "@vuu-ui/vuu-data-types";
|
|
2
|
+
import { FormattingSettingsProps } from "@vuu-ui/vuu-table-types";
|
|
3
|
+
import React from "react";
|
|
4
|
+
export declare const DateTimeFormattingSettings: React.FC<FormattingSettingsProps<DateTimeDataValueDescriptor>>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ColumnDescriptor, ColumnListPermissions } from "@vuu-ui/vuu-table-types";
|
|
2
|
+
import { HTMLAttributes } from "react";
|
|
3
|
+
import { ColumnItem } from "../table-column-settings/useTableSettings";
|
|
4
|
+
export type ColumnChangeHandler = (columnName: string, propertyName: keyof ColumnDescriptor | "subscribed", value: string | number | boolean) => void;
|
|
5
|
+
export interface ColumnListProps extends Omit<HTMLAttributes<HTMLDivElement>, "onChange"> {
|
|
6
|
+
columnItems: ColumnItem[];
|
|
7
|
+
onChange: ColumnChangeHandler;
|
|
8
|
+
onNavigateToColumn?: (columnName: string) => void;
|
|
9
|
+
onReorderColumnItems?: (columnItems: ColumnItem[]) => void;
|
|
10
|
+
permissions?: ColumnListPermissions;
|
|
11
|
+
}
|
|
12
|
+
export declare const ColumnList: ({ className, columnItems, onChange, onNavigateToColumn, onReorderColumnItems, permissions, ...htmlAttributes }: ColumnListProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./ColumnList";
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ColumnDescriptor, ColumnMenuPermissions } from "@vuu-ui/vuu-table-types";
|
|
2
|
+
import { HTMLAttributes } from "react";
|
|
3
|
+
import { ColumnMenuActionType } from "./column-menu-utils";
|
|
4
|
+
import { MenuActionHandler } from "@vuu-ui/vuu-context-menu";
|
|
5
|
+
export interface ColumnMenuProps extends HTMLAttributes<HTMLSpanElement> {
|
|
6
|
+
column: ColumnDescriptor;
|
|
7
|
+
menuActionHandler?: MenuActionHandler<ColumnMenuActionType, ColumnDescriptor>;
|
|
8
|
+
menuPermissions?: ColumnMenuPermissions;
|
|
9
|
+
}
|
|
10
|
+
export declare const ColumnMenu: ({ className, column, menuActionHandler: menuActionHandlerProp, menuPermissions: { allowSort, allowGroup, allowAggregation, allowHide, allowPin, allowColumnSettings, allowTableSettings, }, }: ColumnMenuProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { VuuTable } from "@vuu-ui/vuu-protocol-types";
|
|
2
|
+
import { ColumnDescriptor, PinLocation } from "@vuu-ui/vuu-table-types";
|
|
3
|
+
export interface ColumnPinAction {
|
|
4
|
+
type: "pinColumn";
|
|
5
|
+
column: ColumnDescriptor;
|
|
6
|
+
pin: PinLocation | false;
|
|
7
|
+
}
|
|
8
|
+
export interface ColumnHideAction {
|
|
9
|
+
type: "hideColumn";
|
|
10
|
+
column: ColumnDescriptor;
|
|
11
|
+
}
|
|
12
|
+
export type ColumnDisplayAction = ColumnPinAction | ColumnHideAction;
|
|
13
|
+
export type ColumnDisplayActionHandler = (action: ColumnDisplayAction) => void;
|
|
14
|
+
export type DisplayTableSettingsAction = {
|
|
15
|
+
type: "table-settings";
|
|
16
|
+
};
|
|
17
|
+
export type DisplayColumnSettingsAction = {
|
|
18
|
+
type: "column-settings";
|
|
19
|
+
column: ColumnDescriptor;
|
|
20
|
+
/** only for calculated columnn */
|
|
21
|
+
vuuTable?: VuuTable;
|
|
22
|
+
};
|
|
23
|
+
export type DisplaySettingsAction = DisplayTableSettingsAction | DisplayColumnSettingsAction;
|
|
24
|
+
export type TableSettingsActionHandler = (action: DisplaySettingsAction) => void;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Menu, MenuItem, MenuItemProps, MenuProps } from "@salt-ds/core";
|
|
2
|
+
import { DataSource } from "@vuu-ui/vuu-data-types";
|
|
3
|
+
import { ColumnDescriptor, TableSettingsPermissions } from "@vuu-ui/vuu-table-types";
|
|
4
|
+
import { MouseEventHandler, ReactElement } from "react";
|
|
5
|
+
type MenuElement = ReactElement<MenuProps, typeof Menu>;
|
|
6
|
+
type MenuItemElement = ReactElement<MenuItemProps, typeof MenuItem>;
|
|
7
|
+
type MenuElements = Array<MenuElement | MenuItemElement>;
|
|
8
|
+
export type MenuItemClickHandler = MouseEventHandler<HTMLDivElement>;
|
|
9
|
+
export type DataSourceColumnMenuActionType = "agg-count" | "agg-distinct" | "agg-sum" | "agg-avg" | "agg-high" | "agg-low" | "sort-asc" | "sort-dsc" | "sort-add-asc" | "sort-add-dsc" | "remove-sort" | "group-column" | "remove-group" | "add-to-group" | "remove-from-group" | "remove-column";
|
|
10
|
+
export type ColumnDisplayColumnMenuActionType = "pin-column-left" | "pin-column-right" | "pin-column-floating" | "unpin-column" | "hide-column";
|
|
11
|
+
export type TableSettingsActionType = "column-settings" | "table-settings";
|
|
12
|
+
export type ColumnMenuActionType = DataSourceColumnMenuActionType | ColumnDisplayColumnMenuActionType | TableSettingsActionType;
|
|
13
|
+
export declare const isColumnMenuActionType: (value?: string) => value is ColumnMenuActionType;
|
|
14
|
+
export declare const getColumnMenuActionType: (target: EventTarget | HTMLElement) => ColumnMenuActionType;
|
|
15
|
+
export declare function buildSortMenu(column: ColumnDescriptor, dataSource: DataSource, menuActionClickHandler: MenuItemClickHandler, isAllowed?: boolean): MenuElement | null;
|
|
16
|
+
export declare function buildGroupMenu(column: ColumnDescriptor, dataSource: DataSource, menuActionClickHandler: MenuItemClickHandler, isAllowed?: boolean): MenuElement | null;
|
|
17
|
+
export declare const buildVisibilityMenuItems: (column: ColumnDescriptor, menuActionClickHandler: MenuItemClickHandler, isAllowed?: boolean) => MenuElements | null;
|
|
18
|
+
export declare const buildPinMenuItems: (column: ColumnDescriptor, menuActionClickHandler: MenuItemClickHandler, isAllowed?: boolean) => MenuElements;
|
|
19
|
+
export declare const buildSettingsMenuItems: (_: ColumnDescriptor, menuActionClickHandler: MenuItemClickHandler, allowColumnSettings?: boolean, allowTableSettings?: boolean | TableSettingsPermissions) => MenuElements | null;
|
|
20
|
+
export declare function buildAggregationMenuItems(column: ColumnDescriptor, dataSource: DataSource, menuActionClickHandler: MenuItemClickHandler, isAllowed?: boolean): MenuElements | null;
|
|
21
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { MenuActionHandler } from "@vuu-ui/vuu-context-menu";
|
|
2
|
+
import { Filter } from "@vuu-ui/vuu-filter-types";
|
|
3
|
+
import { VuuFilter } from "@vuu-ui/vuu-protocol-types";
|
|
4
|
+
import { ColumnDescriptor, RuntimeColumnDescriptor } from "@vuu-ui/vuu-table-types";
|
|
5
|
+
import { ColumnMenuActionType } from "./column-menu-utils";
|
|
6
|
+
import { ColumnDisplayAction, DisplaySettingsAction } from "./column-action-types";
|
|
7
|
+
import { DataSource } from "@vuu-ui/vuu-data-types";
|
|
8
|
+
export interface ContextMenuOptions {
|
|
9
|
+
column?: RuntimeColumnDescriptor;
|
|
10
|
+
filter?: Filter;
|
|
11
|
+
sort?: VuuFilter;
|
|
12
|
+
}
|
|
13
|
+
export interface ContextMenuHookProps {
|
|
14
|
+
dataSource: DataSource;
|
|
15
|
+
onColumnDisplayAction?: (action: ColumnDisplayAction) => void;
|
|
16
|
+
onDisplaySettingsAction?: (action: DisplaySettingsAction) => void;
|
|
17
|
+
}
|
|
18
|
+
export declare const useColumnActions: ({ dataSource, onColumnDisplayAction, onDisplaySettingsAction, }: ContextMenuHookProps) => MenuActionHandler<ColumnMenuActionType, ColumnDescriptor>;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { DataSource } from "@vuu-ui/vuu-data-types";
|
|
2
|
+
import { HTMLAttributes } from "react";
|
|
3
|
+
interface DataSourceStatsProps extends HTMLAttributes<HTMLSpanElement> {
|
|
4
|
+
dataSource: DataSource;
|
|
5
|
+
}
|
|
6
|
+
export declare const DataSourceStats: ({ className: classNameProp, dataSource, }: DataSourceStatsProps) => import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./DatasourceStats";
|
package/types/index.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export * from "./cell-edit-validators";
|
|
2
|
+
export * from "./cell-renderers";
|
|
3
|
+
export * from "./column-list";
|
|
4
|
+
export { ColumnMenu } from "./column-menu/ColumnMenu";
|
|
5
|
+
export { useColumnActions } from "./column-menu/useColumnActions";
|
|
6
|
+
export type { ColumnDisplayActionHandler, TableSettingsActionHandler, } from "./column-menu/column-action-types";
|
|
7
|
+
export { ColumnSettingsPanel } from "./table-column-settings/ColumnSettingsPanel";
|
|
8
|
+
export { useColumnSettings } from "./table-column-settings/useColumnSettings";
|
|
9
|
+
export { defaultTableSettingsPermissions, TableSettingsPanel, } from "./table-column-settings/TableSettingsPanel";
|
|
10
|
+
export { type ColumnItem, useTableSettings, } from "./table-column-settings/useTableSettings";
|
|
11
|
+
export { columnSettingsFromColumnMenuPermissions, tableSettingsFromColumnMenuPermissions, useTableAndColumnSettings, } from "./table-column-settings/useTableAndColumnSettings";
|
|
12
|
+
export * from "./column-expression-input";
|
|
13
|
+
export * from "./column-expression-panel";
|
|
14
|
+
export * from "./column-formatting-settings";
|
|
15
|
+
export * from "./datasource-stats";
|
|
16
|
+
export { TableProvider, useTableContext } from "./table-provider/TableProvider";
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ColumnDescriptor } from "@vuu-ui/vuu-table-types";
|
|
2
|
+
import { MouseEventHandler } from "react";
|
|
3
|
+
export interface ColumnNameLabelProps {
|
|
4
|
+
column: ColumnDescriptor;
|
|
5
|
+
onClick: MouseEventHandler;
|
|
6
|
+
}
|
|
7
|
+
export declare const ColumnNameLabel: ({ column, onClick }: ColumnNameLabelProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { ColumnSettingsProps } from "@vuu-ui/vuu-table-types";
|
|
2
|
+
export declare const ColumnSettingsPanel: ({ column: columnProp, onCancelCreateColumn, onConfigChange, onCreateCalculatedColumn, tableConfig, vuuTable, }: ColumnSettingsProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { TableSettingsPermissions, TableSettingsProps } from "@vuu-ui/vuu-table-types";
|
|
2
|
+
export declare const defaultTableSettingsPermissions: Readonly<TableSettingsPermissions>;
|
|
3
|
+
/**
|
|
4
|
+
The TableSettingsPanel assumes 'ownership' of the tableSettings.
|
|
5
|
+
It updates the settings in state locally and notifies caller of
|
|
6
|
+
every change via onChange callback
|
|
7
|
+
*/
|
|
8
|
+
export declare const TableSettingsPanel: ({ availableColumns, onAddCalculatedColumn, onConfigChange, onDataSourceConfigChange, onNavigateToColumn, tableConfig: tableConfigProp, permissions, }: TableSettingsProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ColumnDescriptor, ColumnTypeFormatting, ColumnSettingsProps } from "@vuu-ui/vuu-table-types";
|
|
2
|
+
import { CellRendererDescriptor, ColumnRenderPropsChangeHandler } from "@vuu-ui/vuu-utils";
|
|
3
|
+
import { VuuColumnDataType } from "@vuu-ui/vuu-protocol-types";
|
|
4
|
+
import { FormEventHandler } from "react";
|
|
5
|
+
import { DataValueTypeSimple } from "@vuu-ui/vuu-data-types";
|
|
6
|
+
export declare const useColumnSettings: ({ column: columnProp, onCancelCreateColumn, onConfigChange, onCreateCalculatedColumn, tableConfig, }: Omit<ColumnSettingsProps, "vuuTable">) => {
|
|
7
|
+
availableRenderers: CellRendererDescriptor[];
|
|
8
|
+
editCalculatedColumn: boolean;
|
|
9
|
+
column: ColumnDescriptor;
|
|
10
|
+
navigateNextColumn: () => void;
|
|
11
|
+
navigatePrevColumn: () => void;
|
|
12
|
+
onCancel: () => void;
|
|
13
|
+
onChange: FormEventHandler;
|
|
14
|
+
onChangeCalculatedColumnName: (name: string) => void;
|
|
15
|
+
onChangeFormatting: (formatting: ColumnTypeFormatting) => void;
|
|
16
|
+
onChangeRendering: ColumnRenderPropsChangeHandler;
|
|
17
|
+
onChangeServerDataType: (serverDataType: VuuColumnDataType) => void;
|
|
18
|
+
onChangeToggleButton: FormEventHandler;
|
|
19
|
+
onChangeType: (type: DataValueTypeSimple) => void;
|
|
20
|
+
onEditCalculatedColumn: () => void;
|
|
21
|
+
onInputCommit: () => void;
|
|
22
|
+
onSave: () => void;
|
|
23
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { DataSourceConfig, SchemaColumn } from "@vuu-ui/vuu-data-types";
|
|
2
|
+
import { ColumnDescriptor, ColumnMenuPermissions, SettingsPermissions, TableConfig } from "@vuu-ui/vuu-table-types";
|
|
3
|
+
import { DisplayColumnSettingsAction } from "@vuu-ui/vuu-table-extras/src/column-menu/column-action-types";
|
|
4
|
+
export interface TableAndColumnSettingsHookProps {
|
|
5
|
+
availableColumns: SchemaColumn[];
|
|
6
|
+
onAvailableColumnsChange?: (columns: SchemaColumn[]) => void;
|
|
7
|
+
onConfigChange: (config: TableConfig) => void;
|
|
8
|
+
onCreateCalculatedColumn: (column: ColumnDescriptor) => void;
|
|
9
|
+
onDataSourceConfigChange: (dataSourceConfig: DataSourceConfig) => void;
|
|
10
|
+
settingsPermissions?: SettingsPermissions;
|
|
11
|
+
tableConfig: TableConfig;
|
|
12
|
+
}
|
|
13
|
+
export declare const columnSettingsFromColumnMenuPermissions: (settings?: boolean | ColumnMenuPermissions) => boolean;
|
|
14
|
+
export declare const tableSettingsFromColumnMenuPermissions: (settings?: boolean | ColumnMenuPermissions) => boolean | Readonly<import("@vuu-ui/vuu-table-types").TableSettingsPermissions>;
|
|
15
|
+
export declare const useTableAndColumnSettings: ({ availableColumns: availableColumnsProps, settingsPermissions, onAvailableColumnsChange, onConfigChange, onCreateCalculatedColumn, onDataSourceConfigChange, tableConfig, }: TableAndColumnSettingsHookProps) => {
|
|
16
|
+
showColumnSettingsPanel: (action: DisplayColumnSettingsAction) => void;
|
|
17
|
+
showTableSettingsPanel: () => void;
|
|
18
|
+
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ColumnDescriptor, TableConfig, TableSettingsProps } from "@vuu-ui/vuu-table-types";
|
|
2
|
+
import { CommitHandler } from "@vuu-ui/vuu-utils";
|
|
3
|
+
import { MouseEvent, SyntheticEvent } from "react";
|
|
4
|
+
import { ColumnChangeHandler } from "../column-list";
|
|
5
|
+
export type ColumnLike = {
|
|
6
|
+
name: string;
|
|
7
|
+
};
|
|
8
|
+
export type ColumnItem = Pick<ColumnDescriptor, "hidden" | "label" | "name" | "serverDataType"> & {
|
|
9
|
+
isCalculated: boolean;
|
|
10
|
+
subscribed: boolean;
|
|
11
|
+
};
|
|
12
|
+
export declare const useTableSettings: ({ availableColumns: availableColumnsProp, onConfigChange, onDataSourceConfigChange, tableConfig: tableConfigProp, }: Omit<TableSettingsProps, "onAddCalculatedColumn">) => {
|
|
13
|
+
columnItems: ColumnItem[];
|
|
14
|
+
columnLabelsValue: number;
|
|
15
|
+
onChangeColumnLabels: (evt: SyntheticEvent) => void;
|
|
16
|
+
onChangeTableAttribute: (evt: MouseEvent<HTMLButtonElement>) => void;
|
|
17
|
+
onColumnChange: ColumnChangeHandler;
|
|
18
|
+
onCommitColumnWidth: CommitHandler;
|
|
19
|
+
onReorderColumnItems: (columnItems: ColumnItem[]) => void;
|
|
20
|
+
tableConfig: TableConfig;
|
|
21
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { MenuActionHandler } from "@vuu-ui/vuu-context-menu";
|
|
2
|
+
import { DataSource } from "@vuu-ui/vuu-data-types";
|
|
3
|
+
import { ReactNode } from "react";
|
|
4
|
+
import { ColumnMenuActionType } from "../column-menu/column-menu-utils";
|
|
5
|
+
import { ColumnDescriptor } from "@vuu-ui/vuu-table-types";
|
|
6
|
+
export interface TableContextProps {
|
|
7
|
+
dataSource: DataSource;
|
|
8
|
+
menuActionHandler: MenuActionHandler<ColumnMenuActionType, ColumnDescriptor>;
|
|
9
|
+
}
|
|
10
|
+
export declare const TableContext: import("react").Context<TableContextProps>;
|
|
11
|
+
export declare const TableProvider: ({ children, dataSource, menuActionHandler, }: TableContextProps & {
|
|
12
|
+
children: ReactNode;
|
|
13
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
export declare function useTableContext(throwIfNoDataSource?: boolean): {
|
|
15
|
+
dataSource: DataSource;
|
|
16
|
+
menuActionHandler: MenuActionHandler<ColumnMenuActionType, ColumnDescriptor>;
|
|
17
|
+
};
|