@azrico/reactgrid 1.6.11 → 1.6.13

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.
@@ -1934,123 +1934,124 @@
1934
1934
  fill: var(--azgrid-row-fg-hover, var(--azgrid-preset-row-fg-hover));
1935
1935
  }
1936
1936
 
1937
- /* Keep the menu row in its hover state while the pointer is in the portaled menu.
1938
- * Match the strongest selected-row :hover selectors, including their cells. */
1939
- .azgrid.InovuaReactDataGrid.InovuaReactDataGrid--theme-default-light.InovuaReactDataGrid--show-hover-rows .InovuaReactDataGrid__row.azgrid-row--menu-open:not(.InovuaReactDataGrid__row--scrolling):not(.InovuaReactDataGrid__row--empty) .InovuaReactDataGrid__row-hover-target,
1940
- .azgrid.InovuaReactDataGrid.InovuaReactDataGrid--theme-default-light.InovuaReactDataGrid--show-hover-rows .InovuaReactDataGrid__row.azgrid-row--menu-open:not(.InovuaReactDataGrid__row--scrolling):not(.InovuaReactDataGrid__row--empty) .InovuaReactDataGrid__row-hover-target .InovuaReactDataGrid__cell,
1941
- .azgrid.InovuaReactDataGrid.InovuaReactDataGrid--theme-default-light.InovuaReactDataGrid--show-hover-rows .InovuaReactDataGrid__row.azgrid-row--menu-open:not(.InovuaReactDataGrid__row--scrolling):not(.InovuaReactDataGrid__row--empty) .InovuaReactDataGrid__row-hover-target .InovuaReactDataGrid__row-index-column {
1942
- background: var(--azgrid-row-bg-hover, var(--azgrid-preset-row-bg-hover));
1943
- color: var(--azgrid-row-fg-hover, var(--azgrid-preset-row-fg-hover));
1944
- }
1945
-
1946
- /* Additional surfaces and typography not assigned colours by Inovua. */
1947
- .azgrid.InovuaReactDataGrid.InovuaReactDataGrid--theme-default-light .InovuaReactDataGrid__row--active:not(.InovuaReactDataGrid__row--selected) .InovuaReactDataGrid__cell:not(.InovuaReactDataGrid__cell--no-background) {
1948
- background: var(--azgrid-row-bg-active, var(--azgrid-preset-row-bg-active));
1949
- }
1950
- .azgrid.azgrid-tree .InovuaReactDataGrid__row:not(.InovuaReactDataGrid__row--selected):not(.InovuaReactDataGrid__row--active) .InovuaReactDataGrid__row-hover-target:not(:hover),
1951
- .azgrid .InovuaReactDataGrid__row--group-row:not(.InovuaReactDataGrid__row--selected):not(.InovuaReactDataGrid__row--active) .InovuaReactDataGrid__row-hover-target:not(:hover) {
1952
- background: var(--azgrid-tree-bg, var(--azgrid-preset-tree-bg));
1953
- color: var(--azgrid-tree-fg, var(--azgrid-preset-tree-fg));
1954
- }
1955
- .azgrid.azgrid-tree .InovuaReactDataGrid__cell__content > svg,
1956
- .azgrid .InovuaReactDataGrid__cell--group-expand-cell svg {
1957
- fill: var(--azgrid-tree-fg, var(--azgrid-preset-tree-fg));
1958
- }
1959
- .azgrid.InovuaReactDataGrid {
1960
- background: var(--azgrid-bg, var(--azgrid-preset-bg));
1961
- color: var(--azgrid-fg, var(--azgrid-preset-fg));
1962
- border-color: var(--azgrid-border, var(--azgrid-preset-border));
1963
- border-radius: var(--azgrid-radius, var(--azgrid-preset-radius));
1964
- font-family: var(--azgrid-font-family, var(--azgrid-preset-font-family));
1965
- }
1966
- .azgrid .InovuaReactDataGrid__column-header__content,
1967
- .azgrid .InovuaReactDataGrid__header-group__title {
1968
- color: var(--azgrid-header-fg, var(--azgrid-preset-header-fg));
1969
- font-size: var(--azgrid-header-font-size, var(--azgrid-preset-header-font-size));
1970
- font-weight: var(--azgrid-header-font-weight, var(--azgrid-preset-header-font-weight));
1971
- text-transform: var(--azgrid-header-text-transform, var(--azgrid-preset-header-text-transform));
1972
- letter-spacing: var(--azgrid-header-letter-spacing, var(--azgrid-preset-header-letter-spacing));
1973
- }
1974
- .azgrid.InovuaReactDataGrid--theme-default-light .InovuaReactDataGrid__cell {
1975
- border: var(--azgrid-cell-border-width, var(--azgrid-preset-cell-border-width)) solid var(--azgrid-cell-border, var(--azgrid-preset-cell-border));
1976
- }
1977
- .azgrid.InovuaReactDataGrid--theme-default-light .InovuaReactDataGrid__row--first .InovuaReactDataGrid__cell {
1978
- /* Inovua's first-row border-top is !important. Keep the same border API on this row. */
1979
- border-top: var(--azgrid-cell-border-width, var(--azgrid-preset-cell-border-width)) solid var(--azgrid-cell-border, var(--azgrid-preset-cell-border)) !important;
1980
- }
1981
- .azgrid.InovuaReactDataGrid--theme-default-light .InovuaReactDataGrid__cell:not(.InovuaReactDataGrid__cell--group-expand-cell):not(.InovuaReactDataGrid__cell--expand-cell):not(.InovuaReactDataGrid__cell--reorder) {
1982
- padding: var(--azgrid-cell-padding, var(--azgrid-preset-cell-padding));
1983
- }
1984
- .azgrid .InovuaReactDataGrid__empty-wrapper {
1985
- background: var(--azgrid-empty-bg, var(--azgrid-preset-empty-bg));
1986
- color: var(--azgrid-empty-fg, var(--azgrid-preset-empty-fg));
1987
- }
1988
- .azgrid.InovuaReactDataGrid--theme-default-light .InovuaReactDataGrid__row-details {
1989
- background: var(--azgrid-details-bg, var(--azgrid-preset-details-bg));
1990
- }
1991
- .azgrid .InovuaReactDataGrid__cell--locked-start.InovuaReactDataGrid__cell--last-in-section:after,
1992
- .azgrid .InovuaReactDataGrid__cell--locked-end.InovuaReactDataGrid__cell--first-in-section:after {
1993
- box-shadow: var(--azgrid-locked-column-shadow, var(--azgrid-preset-locked-column-shadow));
1994
- }
1995
- .azgrid-scope input,
1996
- .azgrid-scope select,
1997
- .azgrid-scope .azgrid-searcharea {
1998
- color: var(--azgrid-filter-fg, var(--azgrid-preset-filter-fg));
1999
- background-color: var(--azgrid-filter-bg, var(--azgrid-preset-filter-bg));
2000
- border-color: var(--azgrid-filter-border, var(--azgrid-preset-filter-border));
2001
- border-radius: var(--azgrid-radius, var(--azgrid-preset-radius));
2002
- font-family: var(--azgrid-font-family, var(--azgrid-preset-font-family));
2003
- }
2004
- .azgrid-scope input::placeholder {
2005
- color: var(--azgrid-filter-placeholder, var(--azgrid-preset-filter-placeholder));
2006
- }
2007
- .azgrid-scope input:focus-visible,
2008
- .azgrid-scope select:focus-visible {
2009
- outline: 1px solid var(--azgrid-filter-focus-ring, var(--azgrid-preset-filter-focus-ring));
2010
- }
2011
- .azgrid-scope .inovua-react-pagination-toolbar input,
2012
- .azgrid-scope .inovua-react-pagination-toolbar select {
2013
- background: var(--azgrid-pagination-bg, var(--azgrid-preset-pagination-bg));
2014
- color: var(--azgrid-pagination-fg, var(--azgrid-preset-pagination-fg));
2015
- border-color: var(--azgrid-pagination-border, var(--azgrid-preset-pagination-border));
2016
- }
2017
- .azgrid-scope .inovua-react-toolkit-text-input,
2018
- .azgrid-scope .inovua-react-toolkit-combo-box,
2019
- .azgrid-scope .inovua-react-toolkit-menu {
2020
- border-radius: var(--azgrid-radius, var(--azgrid-preset-radius));
2021
- }
2022
- /* The row context menu is portaled to <body>, outside .azgrid-scope: these rules stay
2023
- * unscoped and read the tokens from the theme class DataGrid puts on the menu.
2024
- * Two classes exceed @azrico/controls' single-class menu rules. */
2025
- .azgrid-context-menu.azrico-controls-contextmenu {
2026
- --azrico-contextmenu-color: var(--azgrid-menu-fg, var(--azgrid-preset-menu-fg));
2027
- --azrico-contextmenu-background: var(--azgrid-menu-bg, var(--azgrid-preset-menu-bg));
2028
- --azrico-contextmenu-hover: var(--azgrid-menu-bg-hover, var(--azgrid-preset-menu-bg-hover));
2029
- --azrico-contextmenu-focus: var(--azgrid-accent, var(--azgrid-preset-accent));
2030
- --azrico-contextmenu-radius: var(--azgrid-radius, var(--azgrid-preset-radius));
2031
- --azrico-contextmenu-shadow: 0 3px 8px var(--azgrid-shadow-color, var(--azgrid-preset-shadow-color));
2032
- --azrico-contextmenu-font: var(--azgrid-font-family, var(--azgrid-preset-font-family));
2033
- border: 1px solid var(--azgrid-menu-border, var(--azgrid-preset-menu-border));
2034
- }
2035
- .azgrid-scope, .azgrid-scope * {
2036
- accent-color: var(--azgrid-accent, var(--azgrid-preset-accent));
2037
- scrollbar-color: var(--azgrid-scrollbar-thumb, var(--azgrid-preset-scrollbar-thumb)) var(--azgrid-scrollbar-track, var(--azgrid-preset-scrollbar-track));
2038
- }
2039
- .azgrid-scope ::-webkit-scrollbar-track {
2040
- background: var(--azgrid-scrollbar-track, var(--azgrid-preset-scrollbar-track));
2041
- }
2042
- .azgrid-scope ::-webkit-scrollbar-thumb {
2043
- background: var(--azgrid-scrollbar-thumb, var(--azgrid-preset-scrollbar-thumb));
2044
- }
2045
- /* The grid draws its own scrollbars and pushes the native one out of view by a
2046
- fixed offset. Setting scrollbar-color switches Chrome to the standard (wider)
2047
- scrollbar, which then overlaps the last pixels of the viewport. Hide it. */
2048
- .azgrid-scope .inovua-react-scroll-container__wrapper > div {
2049
- scrollbar-width: none;
2050
- }
2051
- .azgrid-scope .inovua-react-scroll-container__wrapper > div::-webkit-scrollbar {
2052
- display: none;
2053
- }
2054
- .azgrid .InovuaReactDataGrid__row.deleted:after {
2055
- border-color: var(--azgrid-muted-fg, var(--azgrid-preset-muted-fg));
2056
- }
1937
+ /* Keep the menu row in its hover state while the pointer is in the portaled menu.
1938
+ * Match the strongest selected-row :hover selectors, including their cells. */
1939
+ .azgrid.InovuaReactDataGrid.InovuaReactDataGrid--theme-default-light.InovuaReactDataGrid--show-hover-rows .InovuaReactDataGrid__row.azgrid-row--menu-open:not(.InovuaReactDataGrid__row--scrolling):not(.InovuaReactDataGrid__row--empty) .InovuaReactDataGrid__row-hover-target,
1940
+ .azgrid.InovuaReactDataGrid.InovuaReactDataGrid--theme-default-light.InovuaReactDataGrid--show-hover-rows .InovuaReactDataGrid__row.azgrid-row--menu-open:not(.InovuaReactDataGrid__row--scrolling):not(.InovuaReactDataGrid__row--empty) .InovuaReactDataGrid__row-hover-target .InovuaReactDataGrid__cell,
1941
+ .azgrid.InovuaReactDataGrid.InovuaReactDataGrid--theme-default-light.InovuaReactDataGrid--show-hover-rows .InovuaReactDataGrid__row.azgrid-row--menu-open:not(.InovuaReactDataGrid__row--scrolling):not(.InovuaReactDataGrid__row--empty) .InovuaReactDataGrid__row-hover-target .InovuaReactDataGrid__row-index-column {
1942
+ background: var(--azgrid-row-bg-hover, var(--azgrid-preset-row-bg-hover));
1943
+ color: var(--azgrid-row-fg-hover, var(--azgrid-preset-row-fg-hover));
1944
+ }
1945
+
1946
+ /* Additional surfaces and typography not assigned colours by Inovua. */
1947
+ .azgrid.InovuaReactDataGrid.InovuaReactDataGrid--theme-default-light .InovuaReactDataGrid__row--active:not(.InovuaReactDataGrid__row--selected) .InovuaReactDataGrid__cell:not(.InovuaReactDataGrid__cell--no-background) {
1948
+ background: var(--azgrid-row-bg-active, var(--azgrid-preset-row-bg-active));
1949
+ }
1950
+ .azgrid.azgrid-tree .InovuaReactDataGrid__row:not(.InovuaReactDataGrid__row--selected):not(.InovuaReactDataGrid__row--active) .InovuaReactDataGrid__row-hover-target:not(:hover),
1951
+ .azgrid .InovuaReactDataGrid__row--group-row:not(.InovuaReactDataGrid__row--selected):not(.InovuaReactDataGrid__row--active) .InovuaReactDataGrid__row-hover-target:not(:hover) {
1952
+ background: var(--azgrid-tree-bg, var(--azgrid-preset-tree-bg));
1953
+ color: var(--azgrid-tree-fg, var(--azgrid-preset-tree-fg));
1954
+ }
1955
+ .azgrid.azgrid-tree .InovuaReactDataGrid__cell__content > svg,
1956
+ .azgrid .InovuaReactDataGrid__cell--group-expand-cell svg {
1957
+ fill: var(--azgrid-tree-fg, var(--azgrid-preset-tree-fg));
1958
+ }
1959
+ .azgrid.InovuaReactDataGrid {
1960
+ background: var(--azgrid-bg, var(--azgrid-preset-bg));
1961
+ color: var(--azgrid-fg, var(--azgrid-preset-fg));
1962
+ border-color: var(--azgrid-border, var(--azgrid-preset-border));
1963
+ border-radius: var(--azgrid-radius, var(--azgrid-preset-radius));
1964
+ font-family: var(--azgrid-font-family, var(--azgrid-preset-font-family));
1965
+ }
1966
+ .azgrid .InovuaReactDataGrid__column-header__content,
1967
+ .azgrid .InovuaReactDataGrid__header-group__title {
1968
+ color: var(--azgrid-header-fg, var(--azgrid-preset-header-fg));
1969
+ font-size: var(--azgrid-header-font-size, var(--azgrid-preset-header-font-size));
1970
+ font-weight: var(--azgrid-header-font-weight, var(--azgrid-preset-header-font-weight));
1971
+ text-transform: var(--azgrid-header-text-transform, var(--azgrid-preset-header-text-transform));
1972
+ letter-spacing: var(--azgrid-header-letter-spacing, var(--azgrid-preset-header-letter-spacing));
1973
+ }
1974
+ .azgrid.InovuaReactDataGrid--theme-default-light .InovuaReactDataGrid__cell {
1975
+ border: var(--azgrid-cell-border-width, var(--azgrid-preset-cell-border-width)) solid var(--azgrid-cell-border, var(--azgrid-preset-cell-border));
1976
+ }
1977
+ .azgrid.InovuaReactDataGrid--theme-default-light .InovuaReactDataGrid__row--first .InovuaReactDataGrid__cell {
1978
+ /* Inovua's first-row border-top is !important. Keep the same border API on this row. */
1979
+ border-top: var(--azgrid-cell-border-width, var(--azgrid-preset-cell-border-width)) solid var(--azgrid-cell-border, var(--azgrid-preset-cell-border)) !important;
1980
+ }
1981
+ .azgrid.InovuaReactDataGrid--theme-default-light .InovuaReactDataGrid__cell:not(.InovuaReactDataGrid__cell--group-expand-cell):not(.InovuaReactDataGrid__cell--expand-cell):not(.InovuaReactDataGrid__cell--reorder) {
1982
+ padding: var(--azgrid-cell-padding, var(--azgrid-preset-cell-padding));
1983
+ }
1984
+ .azgrid .InovuaReactDataGrid__empty-wrapper {
1985
+ background: var(--azgrid-empty-bg, var(--azgrid-preset-empty-bg));
1986
+ color: var(--azgrid-empty-fg, var(--azgrid-preset-empty-fg));
1987
+ }
1988
+ .azgrid.InovuaReactDataGrid--theme-default-light .InovuaReactDataGrid__row-details {
1989
+ background: var(--azgrid-details-bg, var(--azgrid-preset-details-bg));
1990
+ }
1991
+ .azgrid .InovuaReactDataGrid__cell--locked-start.InovuaReactDataGrid__cell--last-in-section:after,
1992
+ .azgrid .InovuaReactDataGrid__cell--locked-end.InovuaReactDataGrid__cell--first-in-section:after {
1993
+ box-shadow: var(--azgrid-locked-column-shadow, var(--azgrid-preset-locked-column-shadow));
1994
+ }
1995
+ .azgrid-scope input,
1996
+ .azgrid-scope select,
1997
+ .azgrid-scope .azgrid-searcharea {
1998
+ color: var(--azgrid-filter-fg, var(--azgrid-preset-filter-fg));
1999
+ background-color: var(--azgrid-filter-bg, var(--azgrid-preset-filter-bg));
2000
+ border-color: var(--azgrid-filter-border, var(--azgrid-preset-filter-border));
2001
+ border-radius: var(--azgrid-radius, var(--azgrid-preset-radius));
2002
+ font-family: var(--azgrid-font-family, var(--azgrid-preset-font-family));
2003
+ }
2004
+ .azgrid-scope input::placeholder {
2005
+ color: var(--azgrid-filter-placeholder, var(--azgrid-preset-filter-placeholder));
2006
+ }
2007
+ .azgrid-scope input:focus-visible,
2008
+ .azgrid-scope select:focus-visible {
2009
+ outline: 1px solid var(--azgrid-filter-focus-ring, var(--azgrid-preset-filter-focus-ring));
2010
+ }
2011
+ .azgrid-scope .inovua-react-pagination-toolbar input,
2012
+ .azgrid-scope .inovua-react-pagination-toolbar select {
2013
+ background: var(--azgrid-pagination-bg, var(--azgrid-preset-pagination-bg));
2014
+ color: var(--azgrid-pagination-fg, var(--azgrid-preset-pagination-fg));
2015
+ border-color: var(--azgrid-pagination-border, var(--azgrid-preset-pagination-border));
2016
+ }
2017
+ .azgrid-scope .inovua-react-toolkit-text-input,
2018
+ .azgrid-scope .inovua-react-toolkit-combo-box,
2019
+ .azgrid-scope .inovua-react-toolkit-menu {
2020
+ border-radius: var(--azgrid-radius, var(--azgrid-preset-radius));
2021
+ }
2022
+ /* The row context menu is portaled to <body>, outside .azgrid-scope: these rules stay
2023
+ * unscoped and read the tokens from the theme class DataGrid puts on the menu.
2024
+ * Two classes exceed @azrico/controls' single-class menu rules. */
2025
+ .azgrid-context-menu.azrico-controls-contextmenu {
2026
+ --azrico-contextmenu-color: var(--azgrid-menu-fg, var(--azgrid-preset-menu-fg));
2027
+ --azrico-contextmenu-background: var(--azgrid-menu-bg, var(--azgrid-preset-menu-bg));
2028
+ --azrico-contextmenu-hover: var(--azgrid-menu-bg-hover, var(--azgrid-preset-menu-bg-hover));
2029
+ --azrico-contextmenu-focus: var(--azgrid-accent, var(--azgrid-preset-accent));
2030
+ --azrico-contextmenu-radius: var(--azgrid-radius, var(--azgrid-preset-radius));
2031
+ --azrico-contextmenu-shadow: 0 3px 8px var(--azgrid-shadow-color, var(--azgrid-preset-shadow-color));
2032
+ --azrico-contextmenu-font: var(--azgrid-font-family, var(--azgrid-preset-font-family));
2033
+ border: 1px solid var(--azgrid-menu-border, var(--azgrid-preset-menu-border));
2034
+ }
2035
+ .azgrid-scope, .azgrid-scope * {
2036
+ accent-color: var(--azgrid-accent, var(--azgrid-preset-accent));
2037
+ scrollbar-color: var(--azgrid-scrollbar-thumb, var(--azgrid-preset-scrollbar-thumb)) var(--azgrid-scrollbar-track, var(--azgrid-preset-scrollbar-track));
2038
+ }
2039
+ .azgrid-scope ::-webkit-scrollbar-track {
2040
+ background: var(--azgrid-scrollbar-track, var(--azgrid-preset-scrollbar-track));
2041
+ }
2042
+ .azgrid-scope ::-webkit-scrollbar-thumb {
2043
+ background: var(--azgrid-scrollbar-thumb, var(--azgrid-preset-scrollbar-thumb));
2044
+ }
2045
+ /* The grid draws its own scrollbars and pushes the native one out of view by a
2046
+ fixed offset. Setting scrollbar-color switches Chrome to the standard (wider)
2047
+ scrollbar, which then overlaps the last pixels of the viewport. Hide it only
2048
+ in the row viewport; toolbars need the native scrollbar for correct sizing. */
2049
+ .azgrid-scope .InovuaReactDataGrid__virtual-list > .inovua-react-scroll-container__wrapper > div {
2050
+ scrollbar-width: none;
2051
+ }
2052
+ .azgrid-scope .InovuaReactDataGrid__virtual-list > .inovua-react-scroll-container__wrapper > div::-webkit-scrollbar {
2053
+ display: none;
2054
+ }
2055
+ .azgrid .InovuaReactDataGrid__row.deleted:after {
2056
+ border-color: var(--azgrid-muted-fg, var(--azgrid-preset-muted-fg));
2057
+ }
@@ -1,163 +1,170 @@
1
- import { ModifyFields } from '../func/func_grid';
2
- import { ConvertableToMenuItem } from '@azrico/controls/context-menu';
3
- import React from 'react';
4
- import {
5
- TypeCellSelection,
6
- TypeColumn,
7
- TypeDataGridProps,
8
- TypeDataSource,
9
- TypeEditInfo,
10
- TypeFilterTypes,
11
- TypeFilterValue,
12
- TypeRowDetailsInfo,
13
- TypeRowProps,
14
- TypeRowSelection,
15
- TypeComputedProps,
16
- TypeSortInfo,
17
- TypeGroupBy,
18
- } from '@inovua/reactdatagrid-community/types';
19
-
20
- import { TypeOnSelectionChangeArg } from '@inovua/reactdatagrid-community/types/TypeDataGridProps';
21
-
22
- /* -------------------------------------------------------------------------- */
23
- export type ColumnDefinition = TypeColumn;
24
- export type CellDefinition = any;
25
- export type RowDefinition = any;
26
- export type RowProps = TypeRowProps;
27
- export type RowSelectionValue = TypeRowSelection;
28
- export type CellSelectionValue = TypeCellSelection;
29
- export type DataRowDefinition = any;
30
- export type FilterTypes = TypeFilterTypes;
31
- export type FilterValues = TypeFilterValue;
32
- export type DataSourceDefinition = TypeDataSource;
33
- export type OnSelectionChangeFunc = (config: TypeOnSelectionChangeArg) => void;
34
- export type OnCellSelectionChangeFunc = (s: { [key: string]: boolean }) => void;
35
- export type RowDetailsFunc = (rowDetailsInfo: TypeRowDetailsInfo) => React.ReactNode;
36
-
37
- export type loose_column_names = {
38
- key: string;
39
- field: string;
40
- columnName: string;
41
- name: string;
42
- };
43
- export type loose_column_fields = loose_column_names & {
44
- title: string;
45
- type: string;
46
- items: any[];
47
- /** accessible name for cells whose visible text isn't descriptive (icons, badges, ...), set as aria-label */
48
- ariaLabel: (value: any, data: any) => string;
49
- };
50
- export type LooseColumnDefinition = Partial<loose_column_fields & ColumnDefinition>;
51
- //
52
-
53
- export type CustomColumnDefinition = {
54
- name: string;
55
- render: (cell: any, formatterParams, onRendered) => React.ReactNode | undefined | null;
56
- };
57
- export type AzGridOptions = Partial<TypeDataGridProps> & {
58
- /** called for every rendered row, after the grid's own row attributes are set */
59
- onRenderRow?: (rowProps: any) => void;
60
- /** extra DOM props for the header row */
61
- headerProps?: { [key: string]: any };
62
- };
63
- /** arguments passed to a dataSource function */
64
- export type AzDataSourceParams = {
65
- skip?: number;
66
- limit?: number;
67
- /** current header filters, filter.value is an array of selected ids for a multi-select SelectFilter */
68
- filterValue?: TypeFilterValue;
69
- sortInfo?: TypeSortInfo;
70
- groupBy?: TypeGroupBy;
71
- cached_data: React.MutableRefObject<any>;
72
- last_cache_info: React.MutableRefObject<any>;
73
- };
74
- export type AzDataSourceFunc = (args: AzDataSourceParams) => any[] | Promise<any[] | any>;
75
- /* -------------------------------------------------------------------------- */
76
- export type AzGridProps = {
77
- dataSource?: any[] | AzDataSourceFunc;
78
- details_dataSource?: any[] | AzDataSourceFunc; //details is rendered under each row
79
- details_columns?: LooseColumnDefinition[];
80
- details_filter?: FilterValues;
81
-
82
- licenseKey?: string;
83
- /** accessible name of the grid, set as aria-label on the grid root */
84
- ariaLabel?: string;
85
-
86
- gridRef?: React.MutableRefObject<TypeComputedProps>;
87
- gridOptions?: AzGridOptions;
88
-
89
- columns?: LooseColumnDefinition[];
90
- columnExtensions?: LooseColumnDefinition[];
91
-
92
- editableColumns?: string[];
93
- leftColumns?: string[];
94
- rightColumns?: string[];
95
- customColumns?: CustomColumnDefinition[];
96
-
97
- contextMenuItems?: ConvertableToMenuItem;
98
- /** Keep the context menu open when clicking outside (default false). */
99
- dontAutoCloseContextMenu?: boolean;
100
- /** Close the context menu on Escape (default false). */
101
- escapeClosesContextMenu?: boolean;
102
- /** Hide the grid context menu and leave the browser's context menu available. */
103
- hideContextMenu?: boolean;
104
- /** Extra classes on the row context menu, which is portaled to <body> */
105
- contextMenuClassName?: string;
106
-
107
- highlightedRow?: any;
108
- RowDetail?: RowDetailsFunc;
109
-
110
- selected?: RowSelectionValue;
111
- cellSelection?: CellSelectionValue;
112
- /* -------------------------------------------------------------------------- */
113
- onEditComplete?: (editInfo: TypeEditInfo) => void;
114
- onSelectionChange?: OnSelectionChangeFunc;
115
- onCellSelectionChange?: OnCellSelectionChangeFunc;
116
-
117
- onRowClick?: (rowIndex: number, row: any) => void;
118
- onRowDoubleClick?: (rowIndex: number, row: any) => void;
119
- onLimitChange?: (v: number) => void;
120
- onSkipChange?: (v: number) => void;
121
- /* -------------------------------------------------------------------------- */
122
- skip?: number;
123
- limit?: number;
124
- //
125
- editable?: boolean | ((editValue: any, cellProps: any) => boolean);
126
- advancedFilterFields?: string[];
127
- /** Label of the quick-search box shown with `advancedFilterFields`. Default "Search". */
128
- advancedFilterLabel?: React.ReactNode;
129
- /** Placeholder of the quick-search input. A string is used as the native placeholder, any other node (custom HTML) is shown over the empty input. */
130
- advancedFilterPlaceholder?: React.ReactNode;
131
- //
132
-
133
- loading?: boolean;
134
- theme?: 'light' | 'dark' | (string & {});
135
- /** @deprecated Use theme="dark" or theme="light" instead. */
136
- dark?: boolean;
137
- delayedSize?: boolean;
138
- allowChildRows?: boolean;
139
- looseCacheCheck?: boolean;
140
- className?: string;
141
- /** rendered after the grid, inside its container */
142
- children?: React.ReactNode;
143
- };
144
-
145
- export type DataGridProps = ModifyFields<
146
- AzGridProps,
147
- {
148
- columns: ColumnDefinition[];
149
- dataSource: any;
150
- }
151
- >;
152
- export type GridType = TypeComputedProps;
153
- export type DataGridWrapperProps = ModifyFields<
154
- DataGridProps,
155
- {
156
- gridRef: React.MutableRefObject<TypeComputedProps>;
157
- /** internal: inovua's live computed props ref (gridRef holds a snapshot) */
158
- liveGridRef: React.MutableRefObject<React.MutableRefObject<TypeComputedProps> | null>;
159
- static_gridOptions: AzGridOptions;
160
- dynamic_gridOptions: AzGridOptions;
161
- children?: React.ReactNode;
162
- }
163
- >;
1
+ import { ModifyFields } from '../func/func_grid';
2
+ import { ConvertableToMenuItem } from '@azrico/controls/context-menu';
3
+ import React from 'react';
4
+ import {
5
+ TypeCellSelection,
6
+ TypeColumn,
7
+ TypeDataGridProps,
8
+ TypeDataSource,
9
+ TypeEditInfo,
10
+ TypeFilterTypes,
11
+ TypeFilterValue,
12
+ TypeRowDetailsInfo,
13
+ TypeRowProps,
14
+ TypeRowSelection,
15
+ TypeComputedProps,
16
+ TypeSortInfo,
17
+ TypeGroupBy,
18
+ } from '@inovua/reactdatagrid-community/types';
19
+
20
+ import { TypeOnSelectionChangeArg } from '@inovua/reactdatagrid-community/types/TypeDataGridProps';
21
+
22
+ /* -------------------------------------------------------------------------- */
23
+ export type ColumnDefinition = TypeColumn;
24
+ export type CellDefinition = any;
25
+ export type RowDefinition = any;
26
+ export type RowProps = TypeRowProps;
27
+ export type RowSelectionValue = TypeRowSelection;
28
+ export type CellSelectionValue = TypeCellSelection;
29
+ export type DataRowDefinition = any;
30
+ export type FilterTypes = TypeFilterTypes;
31
+ export type FilterValues = TypeFilterValue;
32
+ export type DataSourceDefinition = TypeDataSource;
33
+ export type OnSelectionChangeFunc = (config: TypeOnSelectionChangeArg) => void;
34
+ export type OnCellSelectionChangeFunc = (s: { [key: string]: boolean }) => void;
35
+ export type RowDetailsFunc = (rowDetailsInfo: TypeRowDetailsInfo) => React.ReactNode;
36
+
37
+ export type loose_column_names = {
38
+ key: string;
39
+ field: string;
40
+ columnName: string;
41
+ name: string;
42
+ };
43
+ export type loose_column_fields = loose_column_names & {
44
+ title: string;
45
+ type: string;
46
+ items: any[];
47
+ /** accessible name for cells whose visible text isn't descriptive (icons, badges, ...), set as aria-label */
48
+ ariaLabel: (value: any, data: any) => string;
49
+ };
50
+ export type LooseColumnDefinition = Partial<loose_column_fields & ColumnDefinition>;
51
+ //
52
+
53
+ export type CustomColumnDefinition = {
54
+ name: string;
55
+ render: (cell: any, formatterParams, onRendered) => React.ReactNode | undefined | null;
56
+ };
57
+ export type AzGridOptions = Partial<TypeDataGridProps> & {
58
+ /** called for every rendered row, after the grid's own row attributes are set */
59
+ onRenderRow?: (rowProps: any) => void;
60
+ /** extra DOM props for the header row */
61
+ headerProps?: { [key: string]: any };
62
+ };
63
+ /** arguments passed to a dataSource function */
64
+ export type AzDataSourceParams = {
65
+ skip?: number;
66
+ limit?: number;
67
+ /** current header filters, filter.value is an array of selected ids for a multi-select SelectFilter */
68
+ filterValue?: TypeFilterValue;
69
+ sortInfo?: TypeSortInfo;
70
+ groupBy?: TypeGroupBy;
71
+ cached_data: React.MutableRefObject<any>;
72
+ last_cache_info: React.MutableRefObject<any>;
73
+ };
74
+ export type AzDataSourceFunc = (args: AzDataSourceParams) => any[] | Promise<any[] | any>;
75
+ /* -------------------------------------------------------------------------- */
76
+ export type AzGridProps = {
77
+ dataSource?: any[] | AzDataSourceFunc;
78
+ details_dataSource?: any[] | AzDataSourceFunc; //details is rendered under each row
79
+ details_columns?: LooseColumnDefinition[];
80
+ details_filter?: FilterValues;
81
+
82
+ licenseKey?: string;
83
+ /**
84
+ * Stable id of this grid. When set, the column widths the user resizes are saved in localStorage
85
+ * (see `setGridStorageScope`) and restored on the next load. Leave it out to keep the columns' own widths.
86
+ * Saved widths are matched to columns by name, so grids showing different column sets can share an id.
87
+ * Columns with `width` become resizable (`width` is used as `defaultWidth`).
88
+ */
89
+ gridId?: string;
90
+ /** accessible name of the grid, set as aria-label on the grid root */
91
+ ariaLabel?: string;
92
+
93
+ gridRef?: React.MutableRefObject<TypeComputedProps>;
94
+ gridOptions?: AzGridOptions;
95
+
96
+ columns?: LooseColumnDefinition[];
97
+ columnExtensions?: LooseColumnDefinition[];
98
+
99
+ editableColumns?: string[];
100
+ leftColumns?: string[];
101
+ rightColumns?: string[];
102
+ customColumns?: CustomColumnDefinition[];
103
+
104
+ contextMenuItems?: ConvertableToMenuItem;
105
+ /** Keep the context menu open when clicking outside (default false). */
106
+ dontAutoCloseContextMenu?: boolean;
107
+ /** Close the context menu on Escape (default false). */
108
+ escapeClosesContextMenu?: boolean;
109
+ /** Hide the grid context menu and leave the browser's context menu available. */
110
+ hideContextMenu?: boolean;
111
+ /** Extra classes on the row context menu, which is portaled to <body> */
112
+ contextMenuClassName?: string;
113
+
114
+ highlightedRow?: any;
115
+ RowDetail?: RowDetailsFunc;
116
+
117
+ selected?: RowSelectionValue;
118
+ cellSelection?: CellSelectionValue;
119
+ /* -------------------------------------------------------------------------- */
120
+ onEditComplete?: (editInfo: TypeEditInfo) => void;
121
+ onSelectionChange?: OnSelectionChangeFunc;
122
+ onCellSelectionChange?: OnCellSelectionChangeFunc;
123
+
124
+ onRowClick?: (rowIndex: number, row: any) => void;
125
+ onRowDoubleClick?: (rowIndex: number, row: any) => void;
126
+ onLimitChange?: (v: number) => void;
127
+ onSkipChange?: (v: number) => void;
128
+ /* -------------------------------------------------------------------------- */
129
+ skip?: number;
130
+ limit?: number;
131
+ //
132
+ editable?: boolean | ((editValue: any, cellProps: any) => boolean);
133
+ advancedFilterFields?: string[];
134
+ /** Label of the quick-search box shown with `advancedFilterFields`. Default "Search". */
135
+ advancedFilterLabel?: React.ReactNode;
136
+ /** Placeholder of the quick-search input. A string is used as the native placeholder, any other node (custom HTML) is shown over the empty input. */
137
+ advancedFilterPlaceholder?: React.ReactNode;
138
+ //
139
+
140
+ loading?: boolean;
141
+ theme?: 'light' | 'dark' | (string & {});
142
+ /** @deprecated Use theme="dark" or theme="light" instead. */
143
+ dark?: boolean;
144
+ delayedSize?: boolean;
145
+ allowChildRows?: boolean;
146
+ looseCacheCheck?: boolean;
147
+ className?: string;
148
+ /** rendered after the grid, inside its container */
149
+ children?: React.ReactNode;
150
+ };
151
+
152
+ export type DataGridProps = ModifyFields<
153
+ AzGridProps,
154
+ {
155
+ columns: ColumnDefinition[];
156
+ dataSource: any;
157
+ }
158
+ >;
159
+ export type GridType = TypeComputedProps;
160
+ export type DataGridWrapperProps = ModifyFields<
161
+ DataGridProps,
162
+ {
163
+ gridRef: React.MutableRefObject<TypeComputedProps>;
164
+ /** internal: inovua's live computed props ref (gridRef holds a snapshot) */
165
+ liveGridRef: React.MutableRefObject<React.MutableRefObject<TypeComputedProps> | null>;
166
+ static_gridOptions: AzGridOptions;
167
+ dynamic_gridOptions: AzGridOptions;
168
+ children?: React.ReactNode;
169
+ }
170
+ >;