@progress/kendo-react-data-tools 13.3.0-develop.2 → 13.3.0-develop.4

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/index.d.mts CHANGED
@@ -214,11 +214,11 @@ export declare interface ClipboardDataEvent {
214
214
  */
215
215
  type: ClipboardActionType;
216
216
  /**
217
- * Represents the native [ClipboardEvent]({% slug api_grid_gridcellssettings %})
217
+ * Represents the native [ClipboardEvent](https://www.telerik.com/kendo-react-ui/components/grid/api/gridcellssettings)
218
218
  */
219
219
  nativeEvent?: ClipboardEvent;
220
220
  /**
221
- * All the Grid columns. It takes value of type of [ColumnBaseProps]({% slug api_data-tools_columnbaseprops %})<[CellProps]({% slug api_data-tools_cellprops %})>[]
221
+ * All the Grid columns. It takes value of type of [ColumnBaseProps](https://www.telerik.com/kendo-react-ui/components/datatools/api/columnbaseprops)<[CellProps](https://www.telerik.com/kendo-react-ui/components/datatools/api/cellprops)>[]
222
222
  */
223
223
  columns: ColumnBaseProps[];
224
224
  /**
@@ -509,7 +509,7 @@ export declare const ColumnMenuNumericFilter: React_2.FunctionComponent<ColumnMe
509
509
  * ColumnMenuDateFilter and ColumnMenuBooleanFilter components.
510
510
  *
511
511
  * The text field of each operator object will be resolved according to the
512
- * [localization messages]({% slug globalization_datatools %}#toc-messages).
512
+ * [localization messages](https://www.telerik.com/kendo-react-ui/components/datatools/globalization#toc-messages).
513
513
  */
514
514
  export declare class ColumnMenuOperators {
515
515
  /**
@@ -1259,7 +1259,7 @@ export declare interface FieldSettings {
1259
1259
  }
1260
1260
 
1261
1261
  /**
1262
- * Represents the [KendoReact Filter component]({% slug overview_filter %}).
1262
+ * Represents the [KendoReact Filter component](https://www.telerik.com/kendo-react-ui/components/datatools/filter).
1263
1263
  */
1264
1264
  export declare class Filter extends React_2.Component<FilterProps> {
1265
1265
  /**
@@ -1731,11 +1731,132 @@ export declare type GroupState = {
1731
1731
  parents?: GroupState[];
1732
1732
  };
1733
1733
 
1734
+ /**
1735
+ * Handles navigation keys (arrows, PageUp/Down, Home/End) during editing.
1736
+ * Blocks ALL navigation keys during incell editing per specification.
1737
+ *
1738
+ * Edit Mode Behaviors (EDIT_MODE_KEYBOARD_NAVIGATION.md):
1739
+ * - **Incell**: ALL navigation keys are BLOCKED
1740
+ * - **Inline**: Arrow Up/Down are blocked (can't navigate to other rows)
1741
+ * - **Not editing**: Navigation keys work normally
1742
+ *
1743
+ * Based on specification: "ALL navigation keys are blocked when cell is editing"
1744
+ *
1745
+ * @param event - The keyboard event
1746
+ * @param isInEdit - Whether the cell/row is in edit mode
1747
+ * @param editMode - The edit mode ('incell', 'inline', or 'dialog')
1748
+ * @returns true if the event was blocked
1749
+ *
1750
+ * @hidden
1751
+ */
1752
+ export declare const handleNavigationKeysInEditMode: (event: React.KeyboardEvent<HTMLElement>, isInEdit?: boolean, editMode?: 'incell' | 'inline' | 'dialog') => boolean;
1753
+
1734
1754
  /**
1735
1755
  * @hidden
1736
1756
  */
1737
1757
  declare type handler = (prevIndex: number, nextIndex: number, nativeEvent: any) => void;
1738
1758
 
1759
+ /**
1760
+ * Handles Enter key press on a stacked cell.
1761
+ * Behavior varies based on edit mode.
1762
+ *
1763
+ * Edit Mode Behaviors (EDIT_MODE_KEYBOARD_NAVIGATION.md):
1764
+ * - **Incell**: Enter confirms edit, saves changes, and closes cell
1765
+ * - **Inline**: Enter moves to next field (does NOT save)
1766
+ * - **Not editing**: Transitions from Cursor mode to Content mode
1767
+ *
1768
+ * Based on specification: "Enter or F2 while in Cursor Mode: Activates Content mode for the current cell"
1769
+ *
1770
+ * @param event - The keyboard event
1771
+ * @param cellElement - The stacked cell wrapper element
1772
+ * @param target - The event target element
1773
+ * @param isInEdit - Whether the cell/row is in edit mode
1774
+ * @param editMode - The edit mode ('incell', 'inline', or 'dialog')
1775
+ * @returns true if the event was handled
1776
+ *
1777
+ * @hidden
1778
+ */
1779
+ export declare const handleStackedCellEnterKey: (event: React.KeyboardEvent<HTMLElement>, cellElement: HTMLElement, target: HTMLElement, isInEdit?: boolean, editMode?: 'incell' | 'inline' | 'dialog') => boolean;
1780
+
1781
+ /**
1782
+ * Handles Escape key press on a stacked cell.
1783
+ * Behavior varies based on edit mode.
1784
+ *
1785
+ * Edit Mode Behaviors (EDIT_MODE_KEYBOARD_NAVIGATION.md):
1786
+ * - **Incell**: Escape cancels edit, discards changes, and closes cell
1787
+ * - **Inline**: Escape cancels editing, closes row, and discards changes
1788
+ * - **Not editing**: Exits Content mode and returns to Cursor mode
1789
+ *
1790
+ * Based on specification: "Escape Key: Exits Content mode and returns to Cursor mode"
1791
+ *
1792
+ * @param event - The keyboard event
1793
+ * @param cellElement - The stacked cell wrapper element
1794
+ * @param onEscape - Optional callback to invoke when Escape is handled (resets cell entered state)
1795
+ * @param isInEdit - Whether the cell/row is in edit mode
1796
+ * @param editMode - The edit mode ('incell', 'inline', or 'dialog')
1797
+ * @returns true if the event was handled
1798
+ *
1799
+ * @hidden
1800
+ */
1801
+ export declare const handleStackedCellEscapeKey: (event: React.KeyboardEvent<HTMLElement>, cellElement: HTMLElement, onEscape?: () => void, onExitEdit?: () => void, isInEdit?: boolean, editMode?: 'incell' | 'inline' | 'dialog') => boolean;
1802
+
1803
+ /**
1804
+ * Handles Tab key navigation within a stacked cell row.
1805
+ * Implements focus trap pattern to keep navigation within the current row card.
1806
+ * Tab/Shift+Tab navigates between stacked cells, stopping at row boundaries.
1807
+ *
1808
+ * Edit Mode Behaviors (EDIT_MODE_KEYBOARD_NAVIGATION.md):
1809
+ * - **Incell**: Tab saves current cell and moves to next editable cell
1810
+ * - **Inline**: Tab navigates between fields within the editing row
1811
+ * - **Not editing**: Standard stacked cell navigation with focus trap
1812
+ *
1813
+ * Based on specification: "Tab is THE mechanism for navigating between stacked cells within a row"
1814
+ * and "Trap focus within the current row card: Prevent Tab from leaving the row at boundaries"
1815
+ *
1816
+ * @param event - The keyboard event
1817
+ * @param cellElement - The stacked cell wrapper element
1818
+ * @param target - The event target element
1819
+ * @param isInEdit - Whether the cell/row is in edit mode
1820
+ * @param editMode - The edit mode ('incell', 'inline', or 'dialog')
1821
+ * @returns true if the event was handled and should stop propagation
1822
+ *
1823
+ * @hidden
1824
+ */
1825
+ export declare const handleStackedCellTabNavigation: (event: React.KeyboardEvent<HTMLElement>, cellElement: HTMLElement, target: HTMLElement, isInEdit?: boolean, editMode?: 'incell' | 'inline' | 'dialog', onTabToNextCell?: ((direction: number) => void) | undefined) => boolean;
1826
+
1827
+ /**
1828
+ * Main handler for stacked cell keyboard navigation.
1829
+ * Implements the navigation pattern described in the specifications:
1830
+ *
1831
+ * Specifications:
1832
+ * - STACKED_LAYOUT_KEYBOARD_NAVIGATION.md: Navigation modes and focus trap
1833
+ * - EDIT_MODE_KEYBOARD_NAVIGATION.md: Edit mode behaviors
1834
+ *
1835
+ * Navigation Flow:
1836
+ * - Tab/Shift+Tab: Navigate between stacked cells within the row (focus trapped)
1837
+ * - Enter/F2: Transition from Cursor mode to Content mode (focus first element)
1838
+ * - Escape: Exit Content mode, return to Cursor mode (focus row container)
1839
+ *
1840
+ * Mode Transitions:
1841
+ * - Cursor Mode: Cell wrapper is focused, arrow keys navigate rows
1842
+ * - Content Mode: Focusable element inside cell is focused, Tab navigates cells
1843
+ *
1844
+ * Focus Trap:
1845
+ * Tab navigation is trapped within the current row card. At boundaries:
1846
+ * - First cell + Shift+Tab: Stay on first cell (stopPropagation)
1847
+ * - Last cell + Tab: Stay on last cell (stopPropagation)
1848
+ *
1849
+ * Edit Mode Behaviors:
1850
+ * - **Incell**: All navigation keys blocked, Tab saves and moves, Enter saves, Escape cancels
1851
+ * - **Inline**: Up/Down blocked, Tab between fields, Enter to next field, Escape cancels
1852
+ * - **Not editing**: Normal navigation
1853
+ *
1854
+ * @param options - Navigation options
1855
+ *
1856
+ * @hidden
1857
+ */
1858
+ export declare const handleStackedKeyboardNavigation: (options: StackedKeyboardNavigationOptions) => void;
1859
+
1739
1860
  /**
1740
1861
  * @hidden
1741
1862
  */
@@ -2102,7 +2223,7 @@ export declare interface NumericFilterProps extends TextFilterProps {
2102
2223
  * Represents the operators for the TextFilter, NumericFilter, DateFilter and BooleanFilter components.
2103
2224
  *
2104
2225
  * The text field of each operator object will be resolved according to the
2105
- * [localization messages]({% slug globalization_datatools %}#toc-messages).
2226
+ * [localization messages](https://www.telerik.com/kendo-react-ui/components/datatools/globalization#toc-messages).
2106
2227
  */
2107
2228
  export declare class Operators {
2108
2229
  /**
@@ -2862,6 +2983,102 @@ export declare type SortSettings = boolean | (ColumnSortSettings & {
2862
2983
  mode?: 'single' | 'multiple';
2863
2984
  });
2864
2985
 
2986
+ /**
2987
+ * Keyboard navigation utilities for stacked layout cells.
2988
+ *
2989
+ * Implements the navigation pattern specified in STACKED_LAYOUT_KEYBOARD_NAVIGATION.md:
2990
+ *
2991
+ * ## Key Behaviors
2992
+ *
2993
+ * 1. **Tab Navigation** - PRIMARY mechanism for navigating between stacked cells:
2994
+ * - Tab: Move to next stacked cell in the row
2995
+ * - Shift+Tab: Move to previous stacked cell in the row
2996
+ * - Focus is TRAPPED within the row card (stopPropagation at boundaries)
2997
+ *
2998
+ * 2. **Enter/F2 Keys** - Transition from Cursor mode to Content mode:
2999
+ * - Focuses the first focusable element within the cell
3000
+ * - Enables interaction with cell content (inputs, buttons, etc.)
3001
+ *
3002
+ * 3. **Escape Key** - Exit Content mode, return to Cursor mode:
3003
+ * - Returns focus to the row-level container
3004
+ * - Resets cell entered state
3005
+ *
3006
+ * ## Navigation Modes
3007
+ *
3008
+ * - **Cursor Mode**: Cell wrapper is focused, user can navigate rows with arrow keys
3009
+ * - **Content Mode**: Focusable element inside cell is focused, user can interact with content
3010
+ *
3011
+ * ## Critical Notes
3012
+ *
3013
+ * - Horizontal (Left/Right) arrow navigation is DISABLED in stacked mode
3014
+ * - Vertical (Up/Down) arrow navigation moves between rows, not cells
3015
+ * - Tab/Shift+Tab stops at row boundaries (prevents leaving the row)
3016
+ * - Each row card is treated as a single navigable unit
3017
+ *
3018
+ * @module stackedKeyboardNavigation
3019
+ * @see STACKED_LAYOUT_KEYBOARD_NAVIGATION.md for complete specification
3020
+ *
3021
+ * @hidden
3022
+ */
3023
+ /**
3024
+ * Options for handling stacked cell keyboard navigation.
3025
+ *
3026
+ * @hidden
3027
+ */
3028
+ export declare interface StackedKeyboardNavigationOptions {
3029
+ /**
3030
+ * The keyboard event to handle.
3031
+ */
3032
+ event: React.KeyboardEvent<HTMLElement>;
3033
+ /**
3034
+ * The cell element (the stacked cell wrapper div).
3035
+ */
3036
+ cellElement: HTMLElement;
3037
+ /**
3038
+ * Optional callback to invoke after handling the keyboard event.
3039
+ */
3040
+ onKeyDown?: (event: React.KeyboardEvent<HTMLElement>) => void;
3041
+ /**
3042
+ * Optional callback to invoke when Escape is pressed (to update row entered state).
3043
+ */
3044
+ onEscape?: () => void;
3045
+ /**
3046
+ * Optional callback to invoke when exiting edit mode (e.g., on Escape in incell mode).
3047
+ * This should trigger the Grid's onEditChange to update the edit descriptor.
3048
+ */
3049
+ onExitEdit?: () => void;
3050
+ /**
3051
+ * Optional callback to invoke when Tab is pressed in incell edit mode.
3052
+ * Called with the direction (1 for Tab, -1 for Shift+Tab) to move to next/previous cell.
3053
+ * Should handle transitioning edit state from current cell to next/previous cell.
3054
+ */
3055
+ onTabToNextCell?: (direction: number) => void;
3056
+ /**
3057
+ * Whether the cell is currently in edit mode.
3058
+ * When true, applies edit mode keyboard navigation rules.
3059
+ */
3060
+ isInEdit?: boolean;
3061
+ /**
3062
+ * The edit mode of the grid: 'incell', 'inline', or 'dialog'.
3063
+ * Determines which keyboard navigation rules apply during editing.
3064
+ */
3065
+ editMode?: 'incell' | 'inline' | 'dialog';
3066
+ }
3067
+
3068
+ /**
3069
+ * Exported stacked keyboard navigation utilities.
3070
+ *
3071
+ * @hidden
3072
+ */
3073
+ export declare const stackedKeyboardNavigationTools: {
3074
+ handleStackedKeyboardNavigation: (options: StackedKeyboardNavigationOptions) => void;
3075
+ handleStackedCellTabNavigation: (event: React.KeyboardEvent<HTMLElement>, cellElement: HTMLElement, target: HTMLElement, isInEdit?: boolean, editMode?: 'incell' | 'inline' | 'dialog', onTabToNextCell?: ((direction: number) => void) | undefined) => boolean;
3076
+ handleStackedCellEnterKey: (event: React.KeyboardEvent<HTMLElement>, cellElement: HTMLElement, target: HTMLElement, isInEdit?: boolean, editMode?: 'incell' | 'inline' | 'dialog') => boolean;
3077
+ handleStackedCellEscapeKey: (event: React.KeyboardEvent<HTMLElement>, cellElement: HTMLElement, onEscape?: () => void, onExitEdit?: () => void, isInEdit?: boolean, editMode?: 'incell' | 'inline' | 'dialog') => boolean;
3078
+ handleNavigationKeysInEditMode: (event: React.KeyboardEvent<HTMLElement>, isInEdit?: boolean, editMode?: 'incell' | 'inline' | 'dialog') => boolean;
3079
+ isNavigationKey: (key: string) => boolean;
3080
+ };
3081
+
2865
3082
  /**
2866
3083
  * @hidden
2867
3084
  */
@@ -3187,6 +3404,11 @@ export declare const tableKeyboardNavigationTools: {
3187
3404
  elementToFocus: string | null | undefined;
3188
3405
  };
3189
3406
  getClosestCellNavId: (element: HTMLElement) => string | null;
3407
+ getStackedCellWrapper: (target: HTMLElement) => HTMLElement | null;
3408
+ getStackedCellFocusableElements: (cellElement: HTMLElement) => HTMLElement[];
3409
+ getNextStackedCell: (currentCell: HTMLElement, direction: 'next' | 'prev') => HTMLElement | null;
3410
+ getStackedCellContainer: (stackedCell: HTMLElement) => HTMLElement | null;
3411
+ focusStackedCellElement: (cellElement: HTMLElement, preferredIndex?: number) => void;
3190
3412
  };
3191
3413
 
3192
3414
  /** @hidden */
@@ -3333,10 +3555,10 @@ export declare interface TreeColumnBaseProps<C = CellProps, H = HeaderCellProps,
3333
3555
  */
3334
3556
  children?: TreeColumnBaseProps<C, H, F>[];
3335
3557
  /**
3336
- * The column menu component. Pass the [ColumnMenuTextColumn]({% slug api_data-tools_columnmenutextcolumn %}),
3337
- * [ColumnMenuNumericColumn]({% slug api_data-tools_columnmenunumericcolumn %}),
3338
- * [ColumnMenuDateColumn]({% slug api_data-tools_columnmenudatecolumn %}),
3339
- * [ColumnMenuBooleanColumn]({% slug api_data-tools_columnmenubooleancolumn %})
3558
+ * The column menu component. Pass the [ColumnMenuTextColumn](https://www.telerik.com/kendo-react-ui/components/datatools/api/columnmenutextcolumn),
3559
+ * [ColumnMenuNumericColumn](https://www.telerik.com/kendo-react-ui/components/datatools/api/columnmenunumericcolumn),
3560
+ * [ColumnMenuDateColumn](https://www.telerik.com/kendo-react-ui/components/datatools/api/columnmenudatecolumn),
3561
+ * [ColumnMenuBooleanColumn](https://www.telerik.com/kendo-react-ui/components/datatools/api/columnmenubooleancolumn)
3340
3562
  * or a custom component base on the type of the column data.
3341
3563
  */
3342
3564
  columnMenu?: React.ComponentType<ColumnMenuProps>;
package/index.d.ts CHANGED
@@ -214,11 +214,11 @@ export declare interface ClipboardDataEvent {
214
214
  */
215
215
  type: ClipboardActionType;
216
216
  /**
217
- * Represents the native [ClipboardEvent]({% slug api_grid_gridcellssettings %})
217
+ * Represents the native [ClipboardEvent](https://www.telerik.com/kendo-react-ui/components/grid/api/gridcellssettings)
218
218
  */
219
219
  nativeEvent?: ClipboardEvent;
220
220
  /**
221
- * All the Grid columns. It takes value of type of [ColumnBaseProps]({% slug api_data-tools_columnbaseprops %})&lt;[CellProps]({% slug api_data-tools_cellprops %})&gt;[]
221
+ * All the Grid columns. It takes value of type of [ColumnBaseProps](https://www.telerik.com/kendo-react-ui/components/datatools/api/columnbaseprops)&lt;[CellProps](https://www.telerik.com/kendo-react-ui/components/datatools/api/cellprops)&gt;[]
222
222
  */
223
223
  columns: ColumnBaseProps[];
224
224
  /**
@@ -509,7 +509,7 @@ export declare const ColumnMenuNumericFilter: React_2.FunctionComponent<ColumnMe
509
509
  * ColumnMenuDateFilter and ColumnMenuBooleanFilter components.
510
510
  *
511
511
  * The text field of each operator object will be resolved according to the
512
- * [localization messages]({% slug globalization_datatools %}#toc-messages).
512
+ * [localization messages](https://www.telerik.com/kendo-react-ui/components/datatools/globalization#toc-messages).
513
513
  */
514
514
  export declare class ColumnMenuOperators {
515
515
  /**
@@ -1259,7 +1259,7 @@ export declare interface FieldSettings {
1259
1259
  }
1260
1260
 
1261
1261
  /**
1262
- * Represents the [KendoReact Filter component]({% slug overview_filter %}).
1262
+ * Represents the [KendoReact Filter component](https://www.telerik.com/kendo-react-ui/components/datatools/filter).
1263
1263
  */
1264
1264
  export declare class Filter extends React_2.Component<FilterProps> {
1265
1265
  /**
@@ -1731,11 +1731,132 @@ export declare type GroupState = {
1731
1731
  parents?: GroupState[];
1732
1732
  };
1733
1733
 
1734
+ /**
1735
+ * Handles navigation keys (arrows, PageUp/Down, Home/End) during editing.
1736
+ * Blocks ALL navigation keys during incell editing per specification.
1737
+ *
1738
+ * Edit Mode Behaviors (EDIT_MODE_KEYBOARD_NAVIGATION.md):
1739
+ * - **Incell**: ALL navigation keys are BLOCKED
1740
+ * - **Inline**: Arrow Up/Down are blocked (can't navigate to other rows)
1741
+ * - **Not editing**: Navigation keys work normally
1742
+ *
1743
+ * Based on specification: "ALL navigation keys are blocked when cell is editing"
1744
+ *
1745
+ * @param event - The keyboard event
1746
+ * @param isInEdit - Whether the cell/row is in edit mode
1747
+ * @param editMode - The edit mode ('incell', 'inline', or 'dialog')
1748
+ * @returns true if the event was blocked
1749
+ *
1750
+ * @hidden
1751
+ */
1752
+ export declare const handleNavigationKeysInEditMode: (event: React.KeyboardEvent<HTMLElement>, isInEdit?: boolean, editMode?: 'incell' | 'inline' | 'dialog') => boolean;
1753
+
1734
1754
  /**
1735
1755
  * @hidden
1736
1756
  */
1737
1757
  declare type handler = (prevIndex: number, nextIndex: number, nativeEvent: any) => void;
1738
1758
 
1759
+ /**
1760
+ * Handles Enter key press on a stacked cell.
1761
+ * Behavior varies based on edit mode.
1762
+ *
1763
+ * Edit Mode Behaviors (EDIT_MODE_KEYBOARD_NAVIGATION.md):
1764
+ * - **Incell**: Enter confirms edit, saves changes, and closes cell
1765
+ * - **Inline**: Enter moves to next field (does NOT save)
1766
+ * - **Not editing**: Transitions from Cursor mode to Content mode
1767
+ *
1768
+ * Based on specification: "Enter or F2 while in Cursor Mode: Activates Content mode for the current cell"
1769
+ *
1770
+ * @param event - The keyboard event
1771
+ * @param cellElement - The stacked cell wrapper element
1772
+ * @param target - The event target element
1773
+ * @param isInEdit - Whether the cell/row is in edit mode
1774
+ * @param editMode - The edit mode ('incell', 'inline', or 'dialog')
1775
+ * @returns true if the event was handled
1776
+ *
1777
+ * @hidden
1778
+ */
1779
+ export declare const handleStackedCellEnterKey: (event: React.KeyboardEvent<HTMLElement>, cellElement: HTMLElement, target: HTMLElement, isInEdit?: boolean, editMode?: 'incell' | 'inline' | 'dialog') => boolean;
1780
+
1781
+ /**
1782
+ * Handles Escape key press on a stacked cell.
1783
+ * Behavior varies based on edit mode.
1784
+ *
1785
+ * Edit Mode Behaviors (EDIT_MODE_KEYBOARD_NAVIGATION.md):
1786
+ * - **Incell**: Escape cancels edit, discards changes, and closes cell
1787
+ * - **Inline**: Escape cancels editing, closes row, and discards changes
1788
+ * - **Not editing**: Exits Content mode and returns to Cursor mode
1789
+ *
1790
+ * Based on specification: "Escape Key: Exits Content mode and returns to Cursor mode"
1791
+ *
1792
+ * @param event - The keyboard event
1793
+ * @param cellElement - The stacked cell wrapper element
1794
+ * @param onEscape - Optional callback to invoke when Escape is handled (resets cell entered state)
1795
+ * @param isInEdit - Whether the cell/row is in edit mode
1796
+ * @param editMode - The edit mode ('incell', 'inline', or 'dialog')
1797
+ * @returns true if the event was handled
1798
+ *
1799
+ * @hidden
1800
+ */
1801
+ export declare const handleStackedCellEscapeKey: (event: React.KeyboardEvent<HTMLElement>, cellElement: HTMLElement, onEscape?: () => void, onExitEdit?: () => void, isInEdit?: boolean, editMode?: 'incell' | 'inline' | 'dialog') => boolean;
1802
+
1803
+ /**
1804
+ * Handles Tab key navigation within a stacked cell row.
1805
+ * Implements focus trap pattern to keep navigation within the current row card.
1806
+ * Tab/Shift+Tab navigates between stacked cells, stopping at row boundaries.
1807
+ *
1808
+ * Edit Mode Behaviors (EDIT_MODE_KEYBOARD_NAVIGATION.md):
1809
+ * - **Incell**: Tab saves current cell and moves to next editable cell
1810
+ * - **Inline**: Tab navigates between fields within the editing row
1811
+ * - **Not editing**: Standard stacked cell navigation with focus trap
1812
+ *
1813
+ * Based on specification: "Tab is THE mechanism for navigating between stacked cells within a row"
1814
+ * and "Trap focus within the current row card: Prevent Tab from leaving the row at boundaries"
1815
+ *
1816
+ * @param event - The keyboard event
1817
+ * @param cellElement - The stacked cell wrapper element
1818
+ * @param target - The event target element
1819
+ * @param isInEdit - Whether the cell/row is in edit mode
1820
+ * @param editMode - The edit mode ('incell', 'inline', or 'dialog')
1821
+ * @returns true if the event was handled and should stop propagation
1822
+ *
1823
+ * @hidden
1824
+ */
1825
+ export declare const handleStackedCellTabNavigation: (event: React.KeyboardEvent<HTMLElement>, cellElement: HTMLElement, target: HTMLElement, isInEdit?: boolean, editMode?: 'incell' | 'inline' | 'dialog', onTabToNextCell?: ((direction: number) => void) | undefined) => boolean;
1826
+
1827
+ /**
1828
+ * Main handler for stacked cell keyboard navigation.
1829
+ * Implements the navigation pattern described in the specifications:
1830
+ *
1831
+ * Specifications:
1832
+ * - STACKED_LAYOUT_KEYBOARD_NAVIGATION.md: Navigation modes and focus trap
1833
+ * - EDIT_MODE_KEYBOARD_NAVIGATION.md: Edit mode behaviors
1834
+ *
1835
+ * Navigation Flow:
1836
+ * - Tab/Shift+Tab: Navigate between stacked cells within the row (focus trapped)
1837
+ * - Enter/F2: Transition from Cursor mode to Content mode (focus first element)
1838
+ * - Escape: Exit Content mode, return to Cursor mode (focus row container)
1839
+ *
1840
+ * Mode Transitions:
1841
+ * - Cursor Mode: Cell wrapper is focused, arrow keys navigate rows
1842
+ * - Content Mode: Focusable element inside cell is focused, Tab navigates cells
1843
+ *
1844
+ * Focus Trap:
1845
+ * Tab navigation is trapped within the current row card. At boundaries:
1846
+ * - First cell + Shift+Tab: Stay on first cell (stopPropagation)
1847
+ * - Last cell + Tab: Stay on last cell (stopPropagation)
1848
+ *
1849
+ * Edit Mode Behaviors:
1850
+ * - **Incell**: All navigation keys blocked, Tab saves and moves, Enter saves, Escape cancels
1851
+ * - **Inline**: Up/Down blocked, Tab between fields, Enter to next field, Escape cancels
1852
+ * - **Not editing**: Normal navigation
1853
+ *
1854
+ * @param options - Navigation options
1855
+ *
1856
+ * @hidden
1857
+ */
1858
+ export declare const handleStackedKeyboardNavigation: (options: StackedKeyboardNavigationOptions) => void;
1859
+
1739
1860
  /**
1740
1861
  * @hidden
1741
1862
  */
@@ -2102,7 +2223,7 @@ export declare interface NumericFilterProps extends TextFilterProps {
2102
2223
  * Represents the operators for the TextFilter, NumericFilter, DateFilter and BooleanFilter components.
2103
2224
  *
2104
2225
  * The text field of each operator object will be resolved according to the
2105
- * [localization messages]({% slug globalization_datatools %}#toc-messages).
2226
+ * [localization messages](https://www.telerik.com/kendo-react-ui/components/datatools/globalization#toc-messages).
2106
2227
  */
2107
2228
  export declare class Operators {
2108
2229
  /**
@@ -2862,6 +2983,102 @@ export declare type SortSettings = boolean | (ColumnSortSettings & {
2862
2983
  mode?: 'single' | 'multiple';
2863
2984
  });
2864
2985
 
2986
+ /**
2987
+ * Keyboard navigation utilities for stacked layout cells.
2988
+ *
2989
+ * Implements the navigation pattern specified in STACKED_LAYOUT_KEYBOARD_NAVIGATION.md:
2990
+ *
2991
+ * ## Key Behaviors
2992
+ *
2993
+ * 1. **Tab Navigation** - PRIMARY mechanism for navigating between stacked cells:
2994
+ * - Tab: Move to next stacked cell in the row
2995
+ * - Shift+Tab: Move to previous stacked cell in the row
2996
+ * - Focus is TRAPPED within the row card (stopPropagation at boundaries)
2997
+ *
2998
+ * 2. **Enter/F2 Keys** - Transition from Cursor mode to Content mode:
2999
+ * - Focuses the first focusable element within the cell
3000
+ * - Enables interaction with cell content (inputs, buttons, etc.)
3001
+ *
3002
+ * 3. **Escape Key** - Exit Content mode, return to Cursor mode:
3003
+ * - Returns focus to the row-level container
3004
+ * - Resets cell entered state
3005
+ *
3006
+ * ## Navigation Modes
3007
+ *
3008
+ * - **Cursor Mode**: Cell wrapper is focused, user can navigate rows with arrow keys
3009
+ * - **Content Mode**: Focusable element inside cell is focused, user can interact with content
3010
+ *
3011
+ * ## Critical Notes
3012
+ *
3013
+ * - Horizontal (Left/Right) arrow navigation is DISABLED in stacked mode
3014
+ * - Vertical (Up/Down) arrow navigation moves between rows, not cells
3015
+ * - Tab/Shift+Tab stops at row boundaries (prevents leaving the row)
3016
+ * - Each row card is treated as a single navigable unit
3017
+ *
3018
+ * @module stackedKeyboardNavigation
3019
+ * @see STACKED_LAYOUT_KEYBOARD_NAVIGATION.md for complete specification
3020
+ *
3021
+ * @hidden
3022
+ */
3023
+ /**
3024
+ * Options for handling stacked cell keyboard navigation.
3025
+ *
3026
+ * @hidden
3027
+ */
3028
+ export declare interface StackedKeyboardNavigationOptions {
3029
+ /**
3030
+ * The keyboard event to handle.
3031
+ */
3032
+ event: React.KeyboardEvent<HTMLElement>;
3033
+ /**
3034
+ * The cell element (the stacked cell wrapper div).
3035
+ */
3036
+ cellElement: HTMLElement;
3037
+ /**
3038
+ * Optional callback to invoke after handling the keyboard event.
3039
+ */
3040
+ onKeyDown?: (event: React.KeyboardEvent<HTMLElement>) => void;
3041
+ /**
3042
+ * Optional callback to invoke when Escape is pressed (to update row entered state).
3043
+ */
3044
+ onEscape?: () => void;
3045
+ /**
3046
+ * Optional callback to invoke when exiting edit mode (e.g., on Escape in incell mode).
3047
+ * This should trigger the Grid's onEditChange to update the edit descriptor.
3048
+ */
3049
+ onExitEdit?: () => void;
3050
+ /**
3051
+ * Optional callback to invoke when Tab is pressed in incell edit mode.
3052
+ * Called with the direction (1 for Tab, -1 for Shift+Tab) to move to next/previous cell.
3053
+ * Should handle transitioning edit state from current cell to next/previous cell.
3054
+ */
3055
+ onTabToNextCell?: (direction: number) => void;
3056
+ /**
3057
+ * Whether the cell is currently in edit mode.
3058
+ * When true, applies edit mode keyboard navigation rules.
3059
+ */
3060
+ isInEdit?: boolean;
3061
+ /**
3062
+ * The edit mode of the grid: 'incell', 'inline', or 'dialog'.
3063
+ * Determines which keyboard navigation rules apply during editing.
3064
+ */
3065
+ editMode?: 'incell' | 'inline' | 'dialog';
3066
+ }
3067
+
3068
+ /**
3069
+ * Exported stacked keyboard navigation utilities.
3070
+ *
3071
+ * @hidden
3072
+ */
3073
+ export declare const stackedKeyboardNavigationTools: {
3074
+ handleStackedKeyboardNavigation: (options: StackedKeyboardNavigationOptions) => void;
3075
+ handleStackedCellTabNavigation: (event: React.KeyboardEvent<HTMLElement>, cellElement: HTMLElement, target: HTMLElement, isInEdit?: boolean, editMode?: 'incell' | 'inline' | 'dialog', onTabToNextCell?: ((direction: number) => void) | undefined) => boolean;
3076
+ handleStackedCellEnterKey: (event: React.KeyboardEvent<HTMLElement>, cellElement: HTMLElement, target: HTMLElement, isInEdit?: boolean, editMode?: 'incell' | 'inline' | 'dialog') => boolean;
3077
+ handleStackedCellEscapeKey: (event: React.KeyboardEvent<HTMLElement>, cellElement: HTMLElement, onEscape?: () => void, onExitEdit?: () => void, isInEdit?: boolean, editMode?: 'incell' | 'inline' | 'dialog') => boolean;
3078
+ handleNavigationKeysInEditMode: (event: React.KeyboardEvent<HTMLElement>, isInEdit?: boolean, editMode?: 'incell' | 'inline' | 'dialog') => boolean;
3079
+ isNavigationKey: (key: string) => boolean;
3080
+ };
3081
+
2865
3082
  /**
2866
3083
  * @hidden
2867
3084
  */
@@ -3187,6 +3404,11 @@ export declare const tableKeyboardNavigationTools: {
3187
3404
  elementToFocus: string | null | undefined;
3188
3405
  };
3189
3406
  getClosestCellNavId: (element: HTMLElement) => string | null;
3407
+ getStackedCellWrapper: (target: HTMLElement) => HTMLElement | null;
3408
+ getStackedCellFocusableElements: (cellElement: HTMLElement) => HTMLElement[];
3409
+ getNextStackedCell: (currentCell: HTMLElement, direction: 'next' | 'prev') => HTMLElement | null;
3410
+ getStackedCellContainer: (stackedCell: HTMLElement) => HTMLElement | null;
3411
+ focusStackedCellElement: (cellElement: HTMLElement, preferredIndex?: number) => void;
3190
3412
  };
3191
3413
 
3192
3414
  /** @hidden */
@@ -3333,10 +3555,10 @@ export declare interface TreeColumnBaseProps<C = CellProps, H = HeaderCellProps,
3333
3555
  */
3334
3556
  children?: TreeColumnBaseProps<C, H, F>[];
3335
3557
  /**
3336
- * The column menu component. Pass the [ColumnMenuTextColumn]({% slug api_data-tools_columnmenutextcolumn %}),
3337
- * [ColumnMenuNumericColumn]({% slug api_data-tools_columnmenunumericcolumn %}),
3338
- * [ColumnMenuDateColumn]({% slug api_data-tools_columnmenudatecolumn %}),
3339
- * [ColumnMenuBooleanColumn]({% slug api_data-tools_columnmenubooleancolumn %})
3558
+ * The column menu component. Pass the [ColumnMenuTextColumn](https://www.telerik.com/kendo-react-ui/components/datatools/api/columnmenutextcolumn),
3559
+ * [ColumnMenuNumericColumn](https://www.telerik.com/kendo-react-ui/components/datatools/api/columnmenunumericcolumn),
3560
+ * [ColumnMenuDateColumn](https://www.telerik.com/kendo-react-ui/components/datatools/api/columnmenudatecolumn),
3561
+ * [ColumnMenuBooleanColumn](https://www.telerik.com/kendo-react-ui/components/datatools/api/columnmenubooleancolumn)
3340
3562
  * or a custom component base on the type of the column data.
3341
3563
  */
3342
3564
  columnMenu?: React.ComponentType<ColumnMenuProps>;
package/index.js CHANGED
@@ -5,4 +5,4 @@
5
5
  * Licensed under commercial license. See LICENSE.md in the package root for more information
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
8
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const A=require("./pager/Pager.js"),g=require("./drag/ColumnResize.js"),D=require("./drag/ColumnResizer.js"),p=require("./drag/CommonDragLogic.js"),_=require("./drag/DragClue.js"),N=require("./drag/DropClue.js"),e=require("./utils/data-operations.js"),u=require("./utils/group-operations.js"),F=require("./navigation/hooks.js"),t=require("./navigation/constants.js"),S=require("./navigation/NavigatableSettings.js"),b=require("./navigation/TableKeyboardNavigation.js"),O=require("./navigation/TableKeyboardNavigationContext.js"),I=require("./navigation/utils.js"),R=require("./selection/TableSelection.js"),s=require("./selection/constants.js"),o=require("./selection/utils.js"),q=require("./editing/utils.js"),d=require("./editing/editReducer.js"),B=require("./detail-expansion/utils.js"),c=require("./detail-expansion/expandReducer.js"),n=require("./group-expansion/groupExpandReducer.js"),x=require("./clipboard/clipboard.service.js"),r=require("./clipboard/common.js"),L=require("./data-source/use-data-source.js"),M=require("./data-source/use-remote-data-source.js"),K=require("./data-source/use-odata-data-source.js"),y=require("./filteringCells/FilterComponent.js"),v=require("./filteringCells/BooleanFilter.js"),P=require("./filteringCells/DateFilter.js"),H=require("./filteringCells/NumericFilter.js"),V=require("./filteringCells/TextFilter.js"),Y=require("./header/ColumnProps.js"),C=require("./header/FilterRow.js"),f=require("./header/Header.js"),U=require("./header/HeaderCell.js"),G=require("./header/HeaderRow.js"),h=require("./header/HeaderSelectionCell.js"),w=require("./header/SortSettings.js"),a=require("./header/utils/index.js"),z=require("./header/HeaderThElement.js"),X=require("./header/HeaderTdElement.js"),$=require("./virtualization/columns.js"),W=require("./filter/filters/TextFilter.js"),Z=require("./filter/filters/NumericFilter.js"),j=require("./filter/filters/DateFilter.js"),k=require("./filter/filters/BooleanFilter.js"),J=require("./filter/filters/EnumFilter.js"),Q=require("./filter/Expression.js"),T=require("./filter/Filter.js"),ee=require("./filter/Group.js"),m=require("./filter/operators.js"),i=require("./columnmenu/ColumnMenu.js"),E=require("./columnmenu/ColumnMenuFilterForm.js"),te=require("./columnmenu/ColumnMenuFilterLogic.js"),l=require("./columnmenu/ColumnMenuFilters.js"),re=require("./columnmenu/ColumnMenuItem.js"),oe=require("./columnmenu/ColumnMenuOperators.js");exports.Pager=A.Pager;exports.ColumnResize=g.ColumnResize;exports.ColumnResizer=D.ColumnResizer;exports.CommonDragLogic=p.CommonDragLogic;exports.DragClue=_.DragClue;exports.DropClue=N.DropClue;exports.combineFilters=e.combineFilters;exports.createDataTree=e.createDataTree;exports.extendDataItem=e.extendDataItem;exports.filterBy=e.filterBy;exports.flatData=e.flatData;exports.getItemPath=e.getItemPath;exports.getSearchFromString=e.getSearchFromString;exports.getStringFromSearch=e.getStringFromSearch;exports.modifySubItems=e.modifySubItems;exports.moveTreeItem=e.moveTreeItem;exports.orderBy=e.orderBy;exports.removeItems=e.removeItems;exports.treeToFlat=e.treeToFlat;exports.getGroupIds=u.getGroupIds;exports.setExpandedState=u.setExpandedState;exports.setGroupIds=u.setGroupIds;exports.useTableKeyboardNavigation=F.useTableKeyboardNavigation;exports.KEYBOARD_NAV_CANCEL_BUTTON_CLASS=t.KEYBOARD_NAV_CANCEL_BUTTON_CLASS;exports.KEYBOARD_NAV_DATA_BODY=t.KEYBOARD_NAV_DATA_BODY;exports.KEYBOARD_NAV_DATA_HEADER=t.KEYBOARD_NAV_DATA_HEADER;exports.KEYBOARD_NAV_DATA_ID=t.KEYBOARD_NAV_DATA_ID;exports.KEYBOARD_NAV_DATA_LEVEL=t.KEYBOARD_NAV_DATA_LEVEL;exports.KEYBOARD_NAV_DATA_SCOPE=t.KEYBOARD_NAV_DATA_SCOPE;exports.KEYBOARD_NAV_DATA_ZONE=t.KEYBOARD_NAV_DATA_ZONE;exports.KEYBOARD_NAV_EDIT_BUTTON_CLASS=t.KEYBOARD_NAV_EDIT_BUTTON_CLASS;exports.KEYBOARD_NAV_FILTER_COL_SUFFIX=t.KEYBOARD_NAV_FILTER_COL_SUFFIX;exports.tableKeyboardNavigationBodyAttributes=t.tableKeyboardNavigationBodyAttributes;exports.tableKeyboardNavigationHeaderAttributes=t.tableKeyboardNavigationHeaderAttributes;exports.tableKeyboardNavigationScopeAttributes=t.tableKeyboardNavigationScopeAttributes;exports.NavigatableMode=S.NavigatableMode;exports.tableKeyboardNavigation=b.tableKeyboardNavigation;exports.TableKeyboardNavigationContext=O.TableKeyboardNavigationContext;exports.tableKeyboardNavigationTools=I.tableKeyboardNavigationTools;exports.TableSelection=R.TableSelection;exports.TABLE_COL_INDEX_ATTRIBUTE=s.TABLE_COL_INDEX_ATTRIBUTE;exports.TABLE_PREVENT_SELECTION_ELEMENT=s.TABLE_PREVENT_SELECTION_ELEMENT;exports.TABLE_ROW_INDEX_ATTRIBUTE=s.TABLE_ROW_INDEX_ATTRIBUTE;exports.closestTagName=o.closestTagName;exports.getColumnIndex=o.getColumnIndex;exports.getOffset=o.getOffset;exports.getRowIndex=o.getRowIndex;exports.getSelectedState=o.getSelectedState;exports.getSelectedStateFromKeyDown=o.getSelectedStateFromKeyDown;exports.getSelectionOptions=o.getSelectionOptions;exports.isInNonSelectable=o.isInNonSelectable;exports.relativeContextElement=o.relativeContextElement;exports.setSelectedState=o.setSelectedState;exports.getEditableOptions=q.getEditableOptions;exports.EDIT_ACTION=d.EDIT_ACTION;exports.editReducer=d.editReducer;exports.getDetailExpandableOptions=B.getDetailExpandableOptions;exports.DETAIL_EXPAND_ACTION=c.DETAIL_EXPAND_ACTION;exports.detailExpandReducer=c.detailExpandReducer;exports.GROUP_EXPAND_ACTION=n.GROUP_EXPAND_ACTION;exports.findGroupExpand=n.findGroupExpand;exports.flatToTree=n.flatToTree;exports.getGroupExpandableOptions=n.getGroupExpandableOptions;exports.groupExpandReducer=n.groupExpandReducer;exports.isExpanded=n.isExpanded;exports.ClipboardService=x.ClipboardService;exports.ClipboardActionType=r.ClipboardActionType;exports.addHeaders=r.addHeaders;exports.getClipboardData=r.getClipboardData;exports.getClipboardItemsToPaste=r.getClipboardItemsToPaste;exports.getClipboardText=r.getClipboardText;exports.getItemsToPaste=r.getItemsToPaste;exports.getItemsToUpdateOnPaste=r.getItemsToUpdateOnPaste;exports.getPastedItems=r.getPastedItems;exports.getPreviouslyCopiedItemsData=r.getPreviouslyCopiedItemsData;exports.getSelectedItems=r.getSelectedItems;exports.itemToString=r.itemToString;exports.populateClipboardData=r.populateClipboardData;exports.useDataSource=L.useDataSource;exports.useRemoteDataSource=M.useRemoteDataSource;exports.useODataDataSource=K.useODataDataSource;exports.createFilterComponent=y.createFilterComponent;exports.BooleanFilterCell=v.BooleanFilterCell;exports.DateFilterCell=P.DateFilterCell;exports.NumericFilterCell=H.NumericFilterCell;exports.TextFilterCell=V.TextFilterCell;exports.ColumnDefaultProps=Y.ColumnDefaultProps;exports.FILTER_ROW_CLASS=C.FILTER_ROW_CLASS;exports.FilterRow=C.FilterRow;exports.Header=f.Header;exports.HeaderCell=U.HeaderCell;exports.HeaderRow=G.HeaderRow;exports.HeaderSelectionCell=h.HeaderSelectionCell;exports.normalize=w.normalize;exports.getIndex=a.getIndex;exports.isRtl=a.isRtl;exports.mapColumns=a.mapColumns;exports.nextColumn=a.nextColumn;exports.readColumns=a.readColumns;exports.updateLeft=a.updateLeft;exports.updateRight=a.updateRight;exports.HeaderThElement=z.HeaderThElement;exports.HeaderTdElement=X.HeaderTdElement;exports.tableColumnsVirtualization=$.tableColumnsVirtualization;exports.TextFilter=W.TextFilter;exports.NumericFilter=Z.NumericFilter;exports.DateFilter=j.DateFilter;exports.BooleanFilter=k.BooleanFilter;exports.EnumFilter=J.EnumFilter;exports.Expression=Q.Expression;exports.Filter=T.Filter;exports.selectors=T.selectors;exports.Group=ee.Group;exports.Operators=m.Operators;exports.stringOperator=m.stringOperator;exports.unaryOperator=m.unaryOperator;exports.ColumnMenuBooleanColumn=i.ColumnMenuBooleanColumn;exports.ColumnMenuDateColumn=i.ColumnMenuDateColumn;exports.ColumnMenuNumericColumn=i.ColumnMenuNumericColumn;exports.ColumnMenuTextColumn=i.ColumnMenuTextColumn;exports.ColumnMenuFilterForm=E.ColumnMenuFilterForm;exports.ColumnMenuForm=E.ColumnMenuForm;exports.ColumnMenuFilterLogic=te.ColumnMenuFilterLogic;exports.ColumnMenuBooleanFilter=l.ColumnMenuBooleanFilter;exports.ColumnMenuDateFilter=l.ColumnMenuDateFilter;exports.ColumnMenuNumericFilter=l.ColumnMenuNumericFilter;exports.ColumnMenuTextFilter=l.ColumnMenuTextFilter;exports.ColumnMenuItem=re.ColumnMenuItem;exports.ColumnMenuOperators=oe.ColumnMenuOperators;
8
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const A=require("./pager/Pager.js"),D=require("./drag/ColumnResize.js"),p=require("./drag/ColumnResizer.js"),_=require("./drag/CommonDragLogic.js"),N=require("./drag/DragClue.js"),S=require("./drag/DropClue.js"),e=require("./utils/data-operations.js"),s=require("./utils/group-operations.js"),b=require("./navigation/hooks.js"),t=require("./navigation/constants.js"),F=require("./navigation/NavigatableSettings.js"),O=require("./navigation/TableKeyboardNavigation.js"),I=require("./navigation/TableKeyboardNavigationContext.js"),R=require("./navigation/utils.js"),n=require("./navigation/stackedKeyboardNavigation.js"),q=require("./selection/TableSelection.js"),d=require("./selection/constants.js"),o=require("./selection/utils.js"),B=require("./editing/utils.js"),m=require("./editing/editReducer.js"),x=require("./detail-expansion/utils.js"),C=require("./detail-expansion/expandReducer.js"),i=require("./group-expansion/groupExpandReducer.js"),K=require("./clipboard/clipboard.service.js"),r=require("./clipboard/common.js"),y=require("./data-source/use-data-source.js"),v=require("./data-source/use-remote-data-source.js"),L=require("./data-source/use-odata-data-source.js"),M=require("./filteringCells/FilterComponent.js"),P=require("./filteringCells/BooleanFilter.js"),H=require("./filteringCells/DateFilter.js"),V=require("./filteringCells/NumericFilter.js"),h=require("./filteringCells/TextFilter.js"),Y=require("./header/ColumnProps.js"),T=require("./header/FilterRow.js"),f=require("./header/Header.js"),U=require("./header/HeaderCell.js"),G=require("./header/HeaderRow.js"),k=require("./header/HeaderSelectionCell.js"),w=require("./header/SortSettings.js"),a=require("./header/utils/index.js"),z=require("./header/HeaderThElement.js"),X=require("./header/HeaderTdElement.js"),$=require("./virtualization/columns.js"),W=require("./filter/filters/TextFilter.js"),Z=require("./filter/filters/NumericFilter.js"),j=require("./filter/filters/DateFilter.js"),J=require("./filter/filters/BooleanFilter.js"),Q=require("./filter/filters/EnumFilter.js"),ee=require("./filter/Expression.js"),E=require("./filter/Filter.js"),te=require("./filter/Group.js"),c=require("./filter/operators.js"),l=require("./columnmenu/ColumnMenu.js"),g=require("./columnmenu/ColumnMenuFilterForm.js"),re=require("./columnmenu/ColumnMenuFilterLogic.js"),u=require("./columnmenu/ColumnMenuFilters.js"),oe=require("./columnmenu/ColumnMenuItem.js"),ae=require("./columnmenu/ColumnMenuOperators.js");exports.Pager=A.Pager;exports.ColumnResize=D.ColumnResize;exports.ColumnResizer=p.ColumnResizer;exports.CommonDragLogic=_.CommonDragLogic;exports.DragClue=N.DragClue;exports.DropClue=S.DropClue;exports.combineFilters=e.combineFilters;exports.createDataTree=e.createDataTree;exports.extendDataItem=e.extendDataItem;exports.filterBy=e.filterBy;exports.flatData=e.flatData;exports.getItemPath=e.getItemPath;exports.getSearchFromString=e.getSearchFromString;exports.getStringFromSearch=e.getStringFromSearch;exports.modifySubItems=e.modifySubItems;exports.moveTreeItem=e.moveTreeItem;exports.orderBy=e.orderBy;exports.removeItems=e.removeItems;exports.treeToFlat=e.treeToFlat;exports.getGroupIds=s.getGroupIds;exports.setExpandedState=s.setExpandedState;exports.setGroupIds=s.setGroupIds;exports.useTableKeyboardNavigation=b.useTableKeyboardNavigation;exports.KEYBOARD_NAV_CANCEL_BUTTON_CLASS=t.KEYBOARD_NAV_CANCEL_BUTTON_CLASS;exports.KEYBOARD_NAV_DATA_BODY=t.KEYBOARD_NAV_DATA_BODY;exports.KEYBOARD_NAV_DATA_HEADER=t.KEYBOARD_NAV_DATA_HEADER;exports.KEYBOARD_NAV_DATA_ID=t.KEYBOARD_NAV_DATA_ID;exports.KEYBOARD_NAV_DATA_LEVEL=t.KEYBOARD_NAV_DATA_LEVEL;exports.KEYBOARD_NAV_DATA_SCOPE=t.KEYBOARD_NAV_DATA_SCOPE;exports.KEYBOARD_NAV_DATA_ZONE=t.KEYBOARD_NAV_DATA_ZONE;exports.KEYBOARD_NAV_EDIT_BUTTON_CLASS=t.KEYBOARD_NAV_EDIT_BUTTON_CLASS;exports.KEYBOARD_NAV_FILTER_COL_SUFFIX=t.KEYBOARD_NAV_FILTER_COL_SUFFIX;exports.tableKeyboardNavigationBodyAttributes=t.tableKeyboardNavigationBodyAttributes;exports.tableKeyboardNavigationHeaderAttributes=t.tableKeyboardNavigationHeaderAttributes;exports.tableKeyboardNavigationScopeAttributes=t.tableKeyboardNavigationScopeAttributes;exports.NavigatableMode=F.NavigatableMode;exports.tableKeyboardNavigation=O.tableKeyboardNavigation;exports.TableKeyboardNavigationContext=I.TableKeyboardNavigationContext;exports.tableKeyboardNavigationTools=R.tableKeyboardNavigationTools;exports.handleNavigationKeysInEditMode=n.handleNavigationKeysInEditMode;exports.handleStackedCellEnterKey=n.handleStackedCellEnterKey;exports.handleStackedCellEscapeKey=n.handleStackedCellEscapeKey;exports.handleStackedCellTabNavigation=n.handleStackedCellTabNavigation;exports.handleStackedKeyboardNavigation=n.handleStackedKeyboardNavigation;exports.stackedKeyboardNavigationTools=n.stackedKeyboardNavigationTools;exports.TableSelection=q.TableSelection;exports.TABLE_COL_INDEX_ATTRIBUTE=d.TABLE_COL_INDEX_ATTRIBUTE;exports.TABLE_PREVENT_SELECTION_ELEMENT=d.TABLE_PREVENT_SELECTION_ELEMENT;exports.TABLE_ROW_INDEX_ATTRIBUTE=d.TABLE_ROW_INDEX_ATTRIBUTE;exports.closestTagName=o.closestTagName;exports.getColumnIndex=o.getColumnIndex;exports.getOffset=o.getOffset;exports.getRowIndex=o.getRowIndex;exports.getSelectedState=o.getSelectedState;exports.getSelectedStateFromKeyDown=o.getSelectedStateFromKeyDown;exports.getSelectionOptions=o.getSelectionOptions;exports.isInNonSelectable=o.isInNonSelectable;exports.relativeContextElement=o.relativeContextElement;exports.setSelectedState=o.setSelectedState;exports.getEditableOptions=B.getEditableOptions;exports.EDIT_ACTION=m.EDIT_ACTION;exports.editReducer=m.editReducer;exports.getDetailExpandableOptions=x.getDetailExpandableOptions;exports.DETAIL_EXPAND_ACTION=C.DETAIL_EXPAND_ACTION;exports.detailExpandReducer=C.detailExpandReducer;exports.GROUP_EXPAND_ACTION=i.GROUP_EXPAND_ACTION;exports.findGroupExpand=i.findGroupExpand;exports.flatToTree=i.flatToTree;exports.getGroupExpandableOptions=i.getGroupExpandableOptions;exports.groupExpandReducer=i.groupExpandReducer;exports.isExpanded=i.isExpanded;exports.ClipboardService=K.ClipboardService;exports.ClipboardActionType=r.ClipboardActionType;exports.addHeaders=r.addHeaders;exports.getClipboardData=r.getClipboardData;exports.getClipboardItemsToPaste=r.getClipboardItemsToPaste;exports.getClipboardText=r.getClipboardText;exports.getItemsToPaste=r.getItemsToPaste;exports.getItemsToUpdateOnPaste=r.getItemsToUpdateOnPaste;exports.getPastedItems=r.getPastedItems;exports.getPreviouslyCopiedItemsData=r.getPreviouslyCopiedItemsData;exports.getSelectedItems=r.getSelectedItems;exports.itemToString=r.itemToString;exports.populateClipboardData=r.populateClipboardData;exports.useDataSource=y.useDataSource;exports.useRemoteDataSource=v.useRemoteDataSource;exports.useODataDataSource=L.useODataDataSource;exports.createFilterComponent=M.createFilterComponent;exports.BooleanFilterCell=P.BooleanFilterCell;exports.DateFilterCell=H.DateFilterCell;exports.NumericFilterCell=V.NumericFilterCell;exports.TextFilterCell=h.TextFilterCell;exports.ColumnDefaultProps=Y.ColumnDefaultProps;exports.FILTER_ROW_CLASS=T.FILTER_ROW_CLASS;exports.FilterRow=T.FilterRow;exports.Header=f.Header;exports.HeaderCell=U.HeaderCell;exports.HeaderRow=G.HeaderRow;exports.HeaderSelectionCell=k.HeaderSelectionCell;exports.normalize=w.normalize;exports.getIndex=a.getIndex;exports.isRtl=a.isRtl;exports.mapColumns=a.mapColumns;exports.nextColumn=a.nextColumn;exports.readColumns=a.readColumns;exports.updateLeft=a.updateLeft;exports.updateRight=a.updateRight;exports.HeaderThElement=z.HeaderThElement;exports.HeaderTdElement=X.HeaderTdElement;exports.tableColumnsVirtualization=$.tableColumnsVirtualization;exports.TextFilter=W.TextFilter;exports.NumericFilter=Z.NumericFilter;exports.DateFilter=j.DateFilter;exports.BooleanFilter=J.BooleanFilter;exports.EnumFilter=Q.EnumFilter;exports.Expression=ee.Expression;exports.Filter=E.Filter;exports.selectors=E.selectors;exports.Group=te.Group;exports.Operators=c.Operators;exports.stringOperator=c.stringOperator;exports.unaryOperator=c.unaryOperator;exports.ColumnMenuBooleanColumn=l.ColumnMenuBooleanColumn;exports.ColumnMenuDateColumn=l.ColumnMenuDateColumn;exports.ColumnMenuNumericColumn=l.ColumnMenuNumericColumn;exports.ColumnMenuTextColumn=l.ColumnMenuTextColumn;exports.ColumnMenuFilterForm=g.ColumnMenuFilterForm;exports.ColumnMenuForm=g.ColumnMenuForm;exports.ColumnMenuFilterLogic=re.ColumnMenuFilterLogic;exports.ColumnMenuBooleanFilter=u.ColumnMenuBooleanFilter;exports.ColumnMenuDateFilter=u.ColumnMenuDateFilter;exports.ColumnMenuNumericFilter=u.ColumnMenuNumericFilter;exports.ColumnMenuTextFilter=u.ColumnMenuTextFilter;exports.ColumnMenuItem=oe.ColumnMenuItem;exports.ColumnMenuOperators=ae.ColumnMenuOperators;