@progress/kendo-react-buttons 13.3.0 → 13.4.0-develop.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/Button.d.ts +114 -0
  2. package/Button.js +1 -1
  3. package/Button.mjs +42 -44
  4. package/ButtonGroup.d.ts +47 -0
  5. package/ButtonGroupInterface.d.ts +39 -0
  6. package/ButtonInterface.d.ts +49 -0
  7. package/Chip/Chip.d.ts +425 -0
  8. package/Chip/Chip.js +1 -1
  9. package/Chip/Chip.mjs +43 -39
  10. package/Chip/ChipList.d.ts +221 -0
  11. package/Chip/ChipList.js +1 -1
  12. package/Chip/ChipList.mjs +40 -41
  13. package/Chip/chip-list-contexts.d.ts +20 -0
  14. package/Chip/data-reducer.d.ts +29 -0
  15. package/Chip/focus-reducer.d.ts +31 -0
  16. package/Chip/selection-reducer.d.ts +37 -0
  17. package/FloatingActionButton/FloatingActionButton.d.ts +23 -0
  18. package/FloatingActionButton/FloatingActionButton.js +1 -1
  19. package/FloatingActionButton/FloatingActionButton.mjs +85 -85
  20. package/FloatingActionButton/FloatingActionButtonItem.d.ts +132 -0
  21. package/FloatingActionButton/interfaces/FloatingActionButtonHandle.d.ts +20 -0
  22. package/FloatingActionButton/interfaces/FloatingActionButtonPopupSettings.d.ts +31 -0
  23. package/FloatingActionButton/interfaces/FloatingActionButtonProps.d.ts +354 -0
  24. package/FloatingActionButton/models/align-offset.d.ts +27 -0
  25. package/FloatingActionButton/models/align.d.ts +34 -0
  26. package/FloatingActionButton/models/events.d.ts +28 -0
  27. package/FloatingActionButton/models/position-mode.d.ts +16 -0
  28. package/FloatingActionButton/models/rounded.d.ts +19 -0
  29. package/FloatingActionButton/models/size.d.ts +18 -0
  30. package/FloatingActionButton/models/theme-color.d.ts +25 -0
  31. package/FloatingActionButton/utils.d.ts +34 -0
  32. package/ListButton/ButtonItem.d.ts +72 -0
  33. package/ListButton/DropDownButton.d.ts +153 -0
  34. package/ListButton/DropDownButton.js +1 -1
  35. package/ListButton/DropDownButton.mjs +62 -46
  36. package/ListButton/DropDownButtonItem.d.ts +37 -0
  37. package/ListButton/SplitButton.d.ts +142 -0
  38. package/ListButton/SplitButton.js +1 -1
  39. package/ListButton/SplitButton.mjs +29 -13
  40. package/ListButton/SplitButtonItem.d.ts +32 -0
  41. package/ListButton/models/ButtonItem.d.ts +41 -0
  42. package/ListButton/models/ListButtonProps.d.ts +411 -0
  43. package/ListButton/models/PopupSettings.d.ts +35 -0
  44. package/ListButton/models/events.d.ts +59 -0
  45. package/ListButton/utils/navigation.d.ts +12 -0
  46. package/ListButton/utils/popup.d.ts +16 -0
  47. package/SpeechToTextButton/SpeechToTextButton.d.ts +36 -0
  48. package/SpeechToTextButton/SpeechToTextButton.js +1 -1
  49. package/SpeechToTextButton/SpeechToTextButton.mjs +24 -24
  50. package/SpeechToTextButton/interfaces/SpeechToTextButtonHandle.d.ts +28 -0
  51. package/SpeechToTextButton/interfaces/SpeechToTextButtonProps.d.ts +117 -0
  52. package/dist/cdn/js/kendo-react-buttons.js +1 -1
  53. package/index.d.mts +43 -2928
  54. package/index.d.ts +43 -2928
  55. package/messages/index.d.ts +22 -0
  56. package/models/index.d.ts +95 -0
  57. package/package-metadata.d.ts +12 -0
  58. package/package-metadata.js +1 -1
  59. package/package-metadata.mjs +10 -16
  60. package/package.json +5 -5
  61. package/toolbar/Toolbar.d.ts +38 -0
  62. package/toolbar/Toolbar.js +1 -1
  63. package/toolbar/Toolbar.mjs +15 -15
  64. package/toolbar/events/ToolbarResizeEvent.d.ts +29 -0
  65. package/toolbar/interfaces/ToolbarHandle.d.ts +21 -0
  66. package/toolbar/interfaces/ToolbarOverflowProps.d.ts +50 -0
  67. package/toolbar/interfaces/ToolbarProps.d.ts +128 -0
  68. package/toolbar/messages/index.d.ts +27 -0
  69. package/toolbar/tools/ToolbarItem.d.ts +47 -0
  70. package/toolbar/tools/ToolbarOverflowSection.d.ts +21 -0
  71. package/toolbar/tools/ToolbarScrollButton.d.ts +23 -0
  72. package/toolbar/tools/ToolbarScrollButton.js +1 -1
  73. package/toolbar/tools/ToolbarScrollButton.mjs +11 -20
  74. package/toolbar/tools/ToolbarScrollable.d.ts +28 -0
  75. package/toolbar/tools/ToolbarSeparator.d.ts +22 -0
  76. package/toolbar/tools/ToolbarSpacer.d.ts +30 -0
  77. package/util.d.ts +31 -0
@@ -0,0 +1,22 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ /**
9
+ * @hidden
10
+ */
11
+ export declare const speechToTextAriaLabel = "speechToTextButton.ariaLabel";
12
+ /**
13
+ * @hidden
14
+ */
15
+ export declare const speechToTextTitle = "speechToTextButton.title";
16
+ /**
17
+ * @hidden
18
+ */
19
+ export declare const messages: {
20
+ "speechToTextButton.ariaLabel": string;
21
+ "speechToTextButton.title": string;
22
+ };
@@ -0,0 +1,95 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ import { ChipHandle } from './../Chip/Chip.js';
9
+ import { ChipListHandle } from './../Chip/ChipList.js';
10
+ /**
11
+ * Represents the return type of the ChipRemoveEvent.
12
+ */
13
+ export interface ChipRemoveEvent {
14
+ /**
15
+ * The target of the ChipRemoveEvent from ChipHandle.
16
+ */
17
+ target: ChipHandle;
18
+ /**
19
+ * The event of the ChipRemoveEvent.
20
+ */
21
+ syntheticEvent: React.SyntheticEvent<any>;
22
+ }
23
+ /**
24
+ * Represents the return type of the ChipMouseEvent.
25
+ */
26
+ export interface ChipMouseEvent {
27
+ /**
28
+ * The target of the ChipMouseEvent from ChipHandle.
29
+ */
30
+ target: ChipHandle;
31
+ /**
32
+ * The event of the ChipMouseEvent.
33
+ */
34
+ syntheticEvent: React.MouseEvent<any>;
35
+ }
36
+ /**
37
+ * Represents the return type of the ChipKeyboardEvent.
38
+ */
39
+ export interface ChipKeyboardEvent {
40
+ /**
41
+ * The target of the ChipKeyboardEvent from ChipHandle.
42
+ */
43
+ target: ChipHandle;
44
+ /**
45
+ * The event of the ChipKeyboardEvent.
46
+ */
47
+ syntheticEvent: React.KeyboardEvent<any>;
48
+ }
49
+ /**
50
+ * Represents the return type of the ChipFocusEvent.
51
+ */
52
+ export interface ChipFocusEvent {
53
+ /**
54
+ * The target of the ChipFocusEvent from ChipHandle.
55
+ */
56
+ target: ChipHandle;
57
+ /**
58
+ * The event of the ChipFocusEvent.
59
+ */
60
+ syntheticEvent: React.FocusEvent<any>;
61
+ }
62
+ /**
63
+ * Represents the return type of the ChipListDataChangeEvent.
64
+ */
65
+ export interface ChipListDataChangeEvent {
66
+ /**
67
+ * Represents the new data state value.
68
+ */
69
+ value: any | any[];
70
+ /**
71
+ * The target of the ChipListChangeEvent from ChipListHandle.
72
+ */
73
+ target: ChipListHandle;
74
+ /**
75
+ * The event of the ChipListChangeEvent.
76
+ */
77
+ syntheticEvent: React.SyntheticEvent<any>;
78
+ }
79
+ /**
80
+ * Represents the return type of the ChipListChangeEvent.
81
+ */
82
+ export interface ChipListChangeEvent {
83
+ /**
84
+ * Represents the new state value.
85
+ */
86
+ value: any | any[];
87
+ /**
88
+ * The target of the ChipListChangeEvent from ChipListHandle.
89
+ */
90
+ target: ChipListHandle;
91
+ /**
92
+ * The event of the ChipListChangeEvent.
93
+ */
94
+ syntheticEvent: React.SyntheticEvent<any>;
95
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ import { PackageMetadata } from '@progress/kendo-licensing';
9
+ /**
10
+ * @hidden
11
+ */
12
+ export declare const packageMetadata: PackageMetadata;
@@ -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 e=Object.freeze({name:"@progress/kendo-react-buttons",productName:"KendoReact",productCode:"KENDOUIREACT",productCodes:["KENDOUIREACT"],publishDate: 1768549850,version:"13.3.0",licensingDocsUrl:"https://www.telerik.com/kendo-react-ui/components/my-license/"});exports.packageMetadata=e;
8
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=Object.freeze({name:"@progress/kendo-react-buttons",productName:"KendoReact",productCode:"KENDOUIREACT",productCodes:["KENDOUIREACT"],publishDate: 1770287799,version:"13.4.0-develop.2",licensingDocsUrl:"https://www.telerik.com/kendo-react-ui/components/my-license/"});exports.packageMetadata=e;
@@ -1,19 +1,13 @@
1
+ // Generated file. DO NOT EDIT.
1
2
  /**
2
- * @license
3
- *-------------------------------------------------------------------------------------------
4
- * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
- * Licensed under commercial license. See LICENSE.md in the package root for more information
6
- *-------------------------------------------------------------------------------------------
3
+ * @hidden
7
4
  */
8
- const e = Object.freeze({
9
- name: "@progress/kendo-react-buttons",
10
- productName: "KendoReact",
11
- productCode: "KENDOUIREACT",
12
- productCodes: ["KENDOUIREACT"],
13
- publishDate: 1768549850,
14
- version: "13.3.0",
15
- licensingDocsUrl: "https://www.telerik.com/kendo-react-ui/components/my-license/"
5
+ export const packageMetadata = Object.freeze({
6
+ name: '@progress/kendo-react-buttons',
7
+ productName: 'KendoReact',
8
+ productCode: 'KENDOUIREACT',
9
+ productCodes: ['KENDOUIREACT'],
10
+ publishDate: 0,
11
+ version: '13.4.0-develop.2',
12
+ licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/components/my-license/'
16
13
  });
17
- export {
18
- e as packageMetadata
19
- };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@progress/kendo-react-buttons",
3
- "version": "13.3.0",
3
+ "version": "13.4.0-develop.2",
4
4
  "description": "All you need in React Button in one package: disabled/enabled states, built-in styles and more. KendoReact Buttons package",
5
5
  "author": "Progress",
6
6
  "license": "SEE LICENSE IN LICENSE.md",
@@ -27,9 +27,9 @@
27
27
  "peerDependencies": {
28
28
  "@progress/kendo-licensing": "^1.7.2",
29
29
  "@progress/kendo-webspeech-common": "^1.0.1",
30
- "@progress/kendo-react-common": "13.3.0",
31
- "@progress/kendo-react-intl": "13.3.0",
32
- "@progress/kendo-react-popup": "13.3.0",
30
+ "@progress/kendo-react-common": "13.4.0-develop.2",
31
+ "@progress/kendo-react-intl": "13.4.0-develop.2",
32
+ "@progress/kendo-react-popup": "13.4.0-develop.2",
33
33
  "@progress/kendo-svg-icons": "^4.0.0",
34
34
  "react": "^16.8.2 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc",
35
35
  "react-dom": "^16.8.2 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc"
@@ -64,7 +64,7 @@
64
64
  "package": {
65
65
  "productName": "KendoReact",
66
66
  "productCode": "KENDOUIREACT",
67
- "publishDate": 1768549850,
67
+ "publishDate": 1770287799,
68
68
  "licensingDocsUrl": "https://www.telerik.com/kendo-react-ui/components/my-license/"
69
69
  }
70
70
  },
@@ -0,0 +1,38 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ import { ToolbarProps } from './interfaces/ToolbarProps.js';
9
+ import { ToolbarHandle } from './interfaces/ToolbarHandle.js';
10
+ import * as React from 'react';
11
+ /**
12
+ * Represents the [KendoReact Toolbar component](https://www.telerik.com/kendo-react-ui/components/buttons/toolbar).
13
+ *
14
+ * @example
15
+ * ```jsx
16
+ * const App = () => {
17
+ * return (
18
+ * <Toolbar>
19
+ * <ToolbarItem>
20
+ * <ButtonGroup>
21
+ * <Button togglable={true} icon="bold" />
22
+ * <Button togglable={true} icon="italic" />
23
+ * <Button togglable={true} icon="underline" />
24
+ * </ButtonGroup>
25
+ * </ToolbarItem>
26
+ * <ToolbarItem>
27
+ * <ButtonGroup>
28
+ * <Button icon="hyperlink">Insert Link</Button>
29
+ * <Button icon="image">Insert Image</Button>
30
+ * <Button icon="table">Insert Table</Button>
31
+ * </ButtonGroup>
32
+ * </ToolbarItem>
33
+ * </Toolbar>
34
+ * );
35
+ * }
36
+ * ```
37
+ */
38
+ export declare const Toolbar: React.ForwardRefExoticComponent<ToolbarProps & React.RefAttributes<ToolbarHandle>>;
@@ -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 Y=require("react"),n=require("prop-types"),i=require("@progress/kendo-react-common"),Z=require("../util.js"),ee=require("./tools/ToolbarScrollable.js"),te=require("./tools/ToolbarOverflowSection.js");function oe(l){const b=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(l){for(const a in l)if(a!=="default"){const y=Object.getOwnPropertyDescriptor(l,a);Object.defineProperty(b,a,y.get?y:{enumerable:!0,get:()=>l[a]})}}return b.default=l,Object.freeze(b)}const t=oe(Y),E=t.forwardRef((l,b)=>{const{children:a,className:y,id:N,ariaLabel:A,keyboardNavigation:R,role:x,onResize:B,style:D,tabIndex:P=d.tabIndex,size:h=d.size,fillMode:I=d.fillMode,overflow:u,scrollButtons:m=d.scrollButtons,scrollButtonsPosition:_=d.scrollButtonsPosition,buttonScrollSpeed:$=d.buttonScrollSpeed,prevButton:F,nextButton:G,_ariaControls:J}=l,T=t.useRef(!1),r=t.useRef(null),S=t.useRef(null),g=t.useRef(0),v=t.useRef(0),c=t.useRef([]),C=t.useRef({element:null,props:l}),[Q,U]=t.useState(!1),[z,M]=t.useState(!0),[W,K]=t.useState(!1),k=i.useDir(r,l.dir),w=t.useMemo(()=>l.buttons||Z.toolbarButtons,[l.buttons]),V=t.useMemo(()=>w.map(e=>e+":focus").join(","),[w]),q=()=>{const e=r.current&&r.current.querySelector(V);return Math.max(0,c.current.findIndex(s=>s===e))};t.useImperativeHandle(C,()=>({element:r.current,props:l})),t.useImperativeHandle(b,()=>C.current),t.useEffect(()=>(window.addEventListener("resize",H),r.current&&(v.current=r.current.offsetWidth,g.current=r.current.offsetHeight,R!==!1&&(c.current=Array.from(r.current.querySelectorAll(w.join(","))),j(0))),()=>{window.removeEventListener("resize",H),c.current.length=0}),[]),t.useEffect(()=>{if(T.current){if(!r.current||R===!1)return;c.current=Array.from(r.current.querySelectorAll(w.join(","))),j(q()),L()}else T.current=!0});const j=e=>{c.current.forEach((s,o)=>{s.tabIndex=o===e?P:-1})},X=e=>{const s=e.keyCode===i.Keys.left||e.keyCode===i.Keys.right||e.keyCode===i.Keys.home||e.keyCode===i.Keys.end,o=q();!s||e.defaultPrevented||c.current.findIndex(f=>f===e.target)===-1||(e.keyCode===i.Keys.left?O(o,o===0?c.current.length-1:o-1):O(o,o===c.current.length-1?0:o+1),e.keyCode===i.Keys.home&&O(o,0),e.keyCode===i.Keys.end&&O(o,c.current.length-1))},O=(e,s)=>{const o=c.current[s];if(o){o.tabIndex=P,o.focus();const f=c.current[e];f&&(f.tabIndex=-1)}},H=e=>{if(!r.current)return;const s=r.current.offsetWidth,o=r.current.offsetHeight;if(v.current!==s||g.current!==o){v.current=s,g.current=o;const f={offsetWidth:v.current,offsetHeight:g.current};B&&B.call(void 0,{target:C.current,...f,nativeEvent:e})}L()},L=t.useCallback(()=>{const e=S.current;e&&U(e.scrollWidth>e.clientWidth||e.scrollHeight>e.clientHeight)},[]),p=t.useCallback(()=>{const e=S.current;if(e){const s=e.scrollLeft===0,o=k!=="rtl"?e.scrollLeft+e.clientWidth===e.scrollWidth:e.clientWidth-e.scrollLeft===e.scrollWidth;s&&M(!0),o&&K(!0),!s&&!o&&(M(!1),K(!1))}},[k]);return t.useEffect(()=>{const e=S.current;if(e)return e.addEventListener("scroll",p),()=>{e.removeEventListener("scroll",p)}},[p]),t.createElement("div",{id:N,"aria-label":A,"aria-controls":J,className:i.classNames("k-toolbar",{[`k-toolbar-${i.kendoThemeMaps.sizeMap[h]||h}`]:h,[`k-toolbar-${I}`]:I,"k-toolbar-scrollable":u==="scroll","k-toolbar-scrollable-overlay":u==="scroll"&&(m==="hidden"||m===void 0),"k-toolbar-scrollable-start":u==="scroll"&&m==="hidden"&&z,"k-toolbar-scrollable-end":u==="scroll"&&m==="hidden"&&W,"k-toolbar-section":l.overflow&&u==="section"},y),style:D,role:x!==void 0?x||void 0:"toolbar",dir:k,ref:r,onKeyDown:R!==!1?X:void 0},u==="scroll"&&t.createElement(ee.ToolbarScrollable,{scrollButtons:m,scrollButtonsPosition:_,prevButton:F,nextButton:G,isOverflowing:Q,scrollContentRef:S,buttonScrollSpeed:$,dir:k,isScrollStartPosition:z,isScrollEndPosition:W,children:a}),u==="section"&&t.createElement(te.ToolbarOverflowSection,{toolbarRef:r,fillMode:I,size:h},a),(u==="none"||u===void 0)&&a)}),d={tabIndex:0,size:"medium",fillMode:"solid",scrollButtons:"auto",scrollButtonsPosition:"split",buttonScrollSpeed:100};E.displayName="KendoReactToolbar";E.propTypes={tabIndex:n.number,dir:n.string,keyboardNavigation:n.bool,style:n.object,className:n.string,role:n.string,onResize:n.func,buttons:n.arrayOf(n.string.isRequired),size:n.oneOf([null,"small","medium","large"]),fillMode:n.oneOf([null,"solid","flat","outline"]),overflow:n.oneOf(["none","section","scroll"]),scrollButtons:n.oneOf(["hidden","visible","auto"]),scrollButtonsPosition:n.oneOf(["start","end","split"]),buttonScrollSpeed:n.number};exports.Toolbar=E;
8
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const Y=require("react"),n=require("prop-types"),i=require("@progress/kendo-react-common"),Z=require("../util.js"),ee=require("./tools/ToolbarScrollable.js"),te=require("./tools/ToolbarOverflowSection.js");function oe(l){const b=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(l){for(const a in l)if(a!=="default"){const y=Object.getOwnPropertyDescriptor(l,a);Object.defineProperty(b,a,y.get?y:{enumerable:!0,get:()=>l[a]})}}return b.default=l,Object.freeze(b)}const t=oe(Y),E=t.forwardRef((l,b)=>{const{children:a,className:y,id:N,ariaLabel:A,keyboardNavigation:R,role:x,onResize:B,style:D,tabIndex:P=d.tabIndex,size:h=d.size,fillMode:I=d.fillMode,overflow:u,scrollButtons:m=d.scrollButtons,scrollButtonsPosition:_=d.scrollButtonsPosition,buttonScrollSpeed:$=d.buttonScrollSpeed,prevButton:F,nextButton:G,_ariaControls:J}=l,T=t.useRef(!1),r=t.useRef(null),S=t.useRef(null),g=t.useRef(0),v=t.useRef(0),c=t.useRef([]),C=t.useRef({element:null,props:l}),[Q,U]=t.useState(!1),[z,M]=t.useState(!0),[W,K]=t.useState(!1),k=i.useDir(r,l.dir),w=t.useMemo(()=>l.buttons||Z.toolbarButtons,[l.buttons]),V=t.useMemo(()=>w.map(e=>e+":focus").join(","),[w]),q=()=>{const e=r.current&&r.current.querySelector(V);return Math.max(0,c.current.findIndex(s=>s===e))};t.useImperativeHandle(C,()=>({element:r.current,props:l})),t.useImperativeHandle(b,()=>C.current),t.useEffect(()=>(window.addEventListener("resize",H),r.current&&(v.current=r.current.offsetWidth,g.current=r.current.offsetHeight,R!==!1&&(c.current=Array.from(r.current.querySelectorAll(w.join(","))),j(0))),()=>{window.removeEventListener("resize",H),c.current.length=0}),[]),t.useEffect(()=>{if(T.current){if(!r.current||R===!1)return;c.current=Array.from(r.current.querySelectorAll(w.join(","))),j(q()),L()}else T.current=!0});const j=e=>{c.current.forEach((s,o)=>{s.tabIndex=o===e?P:-1})},X=e=>{const s=e.keyCode===i.Keys.left||e.keyCode===i.Keys.right||e.keyCode===i.Keys.home||e.keyCode===i.Keys.end,o=q();!s||e.defaultPrevented||c.current.findIndex(f=>f===e.target)===-1||(e.keyCode===i.Keys.left?O(o,o===0?c.current.length-1:o-1):O(o,o===c.current.length-1?0:o+1),e.keyCode===i.Keys.home&&O(o,0),e.keyCode===i.Keys.end&&O(o,c.current.length-1))},O=(e,s)=>{const o=c.current[s];if(o){o.tabIndex=P,o.focus();const f=c.current[e];f&&(f.tabIndex=-1)}},H=e=>{if(!r.current)return;const s=r.current.offsetWidth,o=r.current.offsetHeight;if(v.current!==s||g.current!==o){v.current=s,g.current=o;const f={offsetWidth:v.current,offsetHeight:g.current};B&&B.call(void 0,{target:C.current,...f,nativeEvent:e})}L()},L=t.useCallback(()=>{const e=S.current;e&&U(e.scrollWidth>e.clientWidth||e.scrollHeight>e.clientHeight)},[]),p=t.useCallback(()=>{const e=S.current;if(e){const s=e.scrollLeft===0,o=k!=="rtl"?e.scrollLeft+e.clientWidth===e.scrollWidth:e.clientWidth-e.scrollLeft===e.scrollWidth;s&&M(!0),o&&K(!0),!s&&!o&&(M(!1),K(!1))}},[k]);return t.useEffect(()=>{const e=S.current;if(e)return e.addEventListener("scroll",p),()=>{e.removeEventListener("scroll",p)}},[p]),t.createElement("div",{id:N,"aria-label":A,"aria-controls":J,className:i.classNames("k-toolbar",{[`k-toolbar-${i.kendoThemeMaps.sizeMap[h]||h}`]:h,[`k-toolbar-${I}`]:I,"k-toolbar-scrollable":u==="scroll","k-toolbar-scrollable-overlay":u==="scroll"&&(m==="hidden"||m===void 0),"k-toolbar-scrollable-start":u==="scroll"&&m==="hidden"&&z,"k-toolbar-scrollable-end":u==="scroll"&&m==="hidden"&&W,"k-toolbar-section":l.overflow&&u==="section"},y),style:D,role:x!==void 0?x||void 0:"toolbar",dir:k,ref:r,onKeyDown:R!==!1?X:void 0},u==="scroll"&&t.createElement(ee.ToolbarScrollable,{scrollButtons:m,scrollButtonsPosition:_,prevButton:F,nextButton:G,isOverflowing:Q,scrollContentRef:S,buttonScrollSpeed:$,dir:k,isScrollStartPosition:z,isScrollEndPosition:W,children:a}),u==="section"&&t.createElement(te.ToolbarOverflowSection,{toolbarRef:r,fillMode:I,size:h},a),(u==="none"||u===void 0)&&a)}),d={tabIndex:0,size:void 0,fillMode:void 0,scrollButtons:"auto",scrollButtonsPosition:"split",buttonScrollSpeed:100};E.displayName="KendoReactToolbar";E.propTypes={tabIndex:n.number,dir:n.string,keyboardNavigation:n.bool,style:n.object,className:n.string,role:n.string,onResize:n.func,buttons:n.arrayOf(n.string.isRequired),size:n.oneOf(["small","medium","large"]),fillMode:n.oneOf(["solid","flat","outline"]),overflow:n.oneOf(["none","section","scroll"]),scrollButtons:n.oneOf(["hidden","visible","auto"]),scrollButtonsPosition:n.oneOf(["start","end","split"]),buttonScrollSpeed:n.number};exports.Toolbar=E;
@@ -31,7 +31,7 @@ const N = t.forwardRef((i, A) => {
31
31
  prevButton: _,
32
32
  nextButton: G,
33
33
  _ariaControls: J
34
- } = i, B = t.useRef(!1), r = t.useRef(null), m = t.useRef(null), h = t.useRef(0), S = t.useRef(0), s = t.useRef([]), R = t.useRef({ element: null, props: i }), [Q, U] = t.useState(!1), [O, W] = t.useState(!0), [z, P] = t.useState(!1), y = Y(r, i.dir), g = t.useMemo(() => i.buttons || te, [i.buttons]), V = t.useMemo(() => g.map((e) => e + ":focus").join(","), [g]), M = () => {
34
+ } = i, B = t.useRef(!1), r = t.useRef(null), m = t.useRef(null), h = t.useRef(0), S = t.useRef(0), s = t.useRef([]), R = t.useRef({ element: null, props: i }), [Q, U] = t.useState(!1), [O, W] = t.useState(!0), [z, P] = t.useState(!1), v = Y(r, i.dir), y = t.useMemo(() => i.buttons || te, [i.buttons]), V = t.useMemo(() => y.map((e) => e + ":focus").join(","), [y]), M = () => {
35
35
  const e = r.current && r.current.querySelector(V);
36
36
  return Math.max(
37
37
  0,
@@ -45,7 +45,7 @@ const N = t.forwardRef((i, A) => {
45
45
  props: i
46
46
  })
47
47
  ), t.useImperativeHandle(A, () => R.current), t.useEffect(() => (window.addEventListener("resize", L), r.current && (S.current = r.current.offsetWidth, h.current = r.current.offsetHeight, w !== !1 && (s.current = Array.from(
48
- r.current.querySelectorAll(g.join(","))
48
+ r.current.querySelectorAll(y.join(","))
49
49
  ), H(0))), () => {
50
50
  window.removeEventListener("resize", L), s.current.length = 0;
51
51
  }), []), t.useEffect(() => {
@@ -53,7 +53,7 @@ const N = t.forwardRef((i, A) => {
53
53
  if (!r.current || w === !1)
54
54
  return;
55
55
  s.current = Array.from(
56
- r.current.querySelectorAll(g.join(","))
56
+ r.current.querySelectorAll(y.join(","))
57
57
  ), H(M()), T();
58
58
  } else
59
59
  B.current = !0;
@@ -64,14 +64,14 @@ const N = t.forwardRef((i, A) => {
64
64
  });
65
65
  }, X = (e) => {
66
66
  const l = e.keyCode === u.left || e.keyCode === u.right || e.keyCode === u.home || e.keyCode === u.end, o = M();
67
- !l || e.defaultPrevented || s.current.findIndex((a) => a === e.target) === -1 || (e.keyCode === u.left ? v(
67
+ !l || e.defaultPrevented || s.current.findIndex((a) => a === e.target) === -1 || (e.keyCode === u.left ? g(
68
68
  o,
69
69
  o === 0 ? s.current.length - 1 : o - 1
70
- ) : v(
70
+ ) : g(
71
71
  o,
72
72
  o === s.current.length - 1 ? 0 : o + 1
73
- ), e.keyCode === u.home && v(o, 0), e.keyCode === u.end && v(o, s.current.length - 1));
74
- }, v = (e, l) => {
73
+ ), e.keyCode === u.home && g(o, 0), e.keyCode === u.end && g(o, s.current.length - 1));
74
+ }, g = (e, l) => {
75
75
  const o = s.current[l];
76
76
  if (o) {
77
77
  o.tabIndex = E, o.focus();
@@ -96,10 +96,10 @@ const N = t.forwardRef((i, A) => {
96
96
  }, []), p = t.useCallback(() => {
97
97
  const e = m.current;
98
98
  if (e) {
99
- const l = e.scrollLeft === 0, o = y !== "rtl" ? e.scrollLeft + e.clientWidth === e.scrollWidth : e.clientWidth - e.scrollLeft === e.scrollWidth;
99
+ const l = e.scrollLeft === 0, o = v !== "rtl" ? e.scrollLeft + e.clientWidth === e.scrollWidth : e.clientWidth - e.scrollLeft === e.scrollWidth;
100
100
  l && W(!0), o && P(!0), !l && !o && (W(!1), P(!1));
101
101
  }
102
- }, [y]);
102
+ }, [v]);
103
103
  return t.useEffect(() => {
104
104
  const e = m.current;
105
105
  if (e)
@@ -127,7 +127,7 @@ const N = t.forwardRef((i, A) => {
127
127
  ),
128
128
  style: D,
129
129
  role: x !== void 0 ? x || void 0 : "toolbar",
130
- dir: y,
130
+ dir: v,
131
131
  ref: r,
132
132
  onKeyDown: w !== !1 ? X : void 0
133
133
  },
@@ -141,7 +141,7 @@ const N = t.forwardRef((i, A) => {
141
141
  isOverflowing: Q,
142
142
  scrollContentRef: m,
143
143
  buttonScrollSpeed: F,
144
- dir: y,
144
+ dir: v,
145
145
  isScrollStartPosition: O,
146
146
  isScrollEndPosition: z,
147
147
  children: k
@@ -152,8 +152,8 @@ const N = t.forwardRef((i, A) => {
152
152
  );
153
153
  }), f = {
154
154
  tabIndex: 0,
155
- size: "medium",
156
- fillMode: "solid",
155
+ size: void 0,
156
+ fillMode: void 0,
157
157
  scrollButtons: "auto",
158
158
  scrollButtonsPosition: "split",
159
159
  buttonScrollSpeed: 100
@@ -168,8 +168,8 @@ N.propTypes = {
168
168
  role: n.string,
169
169
  onResize: n.func,
170
170
  buttons: n.arrayOf(n.string.isRequired),
171
- size: n.oneOf([null, "small", "medium", "large"]),
172
- fillMode: n.oneOf([null, "solid", "flat", "outline"]),
171
+ size: n.oneOf(["small", "medium", "large"]),
172
+ fillMode: n.oneOf(["solid", "flat", "outline"]),
173
173
  overflow: n.oneOf(["none", "section", "scroll"]),
174
174
  scrollButtons: n.oneOf(["hidden", "visible", "auto"]),
175
175
  scrollButtonsPosition: n.oneOf(["start", "end", "split"]),
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ import { ToolbarHandle } from '../interfaces/ToolbarHandle.js';
9
+ /**
10
+ * Represents the `resize` event of the Toolbar.
11
+ */
12
+ export interface ToolbarResizeEvent {
13
+ /**
14
+ * An event target.
15
+ */
16
+ target: ToolbarHandle;
17
+ /**
18
+ * The `offsetWidth` event of the Toolbar.
19
+ */
20
+ offsetWidth: number;
21
+ /**
22
+ * The `offsetHeight` event of the Toolbar.
23
+ */
24
+ offsetHeight: number;
25
+ /**
26
+ * A native DOM event.
27
+ */
28
+ nativeEvent: any;
29
+ }
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ import { ToolbarProps } from './ToolbarProps.js';
9
+ /**
10
+ * Represents the Toolbar handle.
11
+ */
12
+ export interface ToolbarHandle {
13
+ /**
14
+ * Represents the element of the Toolbar component.
15
+ */
16
+ element: HTMLDivElement | null;
17
+ /**
18
+ * Represents the props of the Toolbar component.
19
+ */
20
+ props: Readonly<ToolbarProps>;
21
+ }
@@ -0,0 +1,50 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ /**
9
+ * @hidden
10
+ */
11
+ export interface ToolbarOverflowProps {
12
+ /**
13
+ * Represents the possible overflow mode options of the Toolbar.
14
+ * Applicable when there is not enough space to render all tools.
15
+ *
16
+ * @default `none`
17
+ */
18
+ overflow?: 'none' | 'section' | 'scroll';
19
+ /**
20
+ * Determines the Toolbar scroll buttons visibility.
21
+ * Applicable when the overflow property is set to `scroll`.
22
+ *
23
+ * @default `auto`
24
+ */
25
+ scrollButtons?: 'hidden' | 'visible' | 'auto';
26
+ /**
27
+ * Determines the Toolbar scroll buttons position.
28
+ * Applicable when the overflow property is set to `scroll`.
29
+ *
30
+ * @default `split`
31
+ */
32
+ scrollButtonsPosition?: 'start' | 'end' | 'split';
33
+ /**
34
+ * Sets the Toolbar scroll speed in pixels when scrolling via clicking the previous or next button.
35
+ * Applicable when the overflow property is set to `scroll`.
36
+ *
37
+ * @default 100
38
+ */
39
+ buttonScrollSpeed?: number;
40
+ /**
41
+ * Defines the custom component that will be rendered as a previous button.
42
+ * To remove the button, set a function which returns null `() => null`.
43
+ */
44
+ prevButton?: React.ComponentType;
45
+ /**
46
+ * Defines the custom component that will be rendered as a next button.
47
+ * To remove the button, set a function which returns null `() => null`.
48
+ */
49
+ nextButton?: React.ComponentType;
50
+ }
@@ -0,0 +1,128 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ import { KendoReactComponentBaseProps } from '@progress/kendo-react-common';
9
+ import { ToolbarOverflowProps } from './ToolbarOverflowProps.js';
10
+ import { ToolbarResizeEvent } from '../events/ToolbarResizeEvent.js';
11
+ import * as React from 'react';
12
+ /**
13
+ * Represents the props of the [KendoReact Toolbar component](https://www.telerik.com/kendo-react-ui/components/buttons/toolbar).
14
+ */
15
+ export interface ToolbarProps extends KendoReactComponentBaseProps, ToolbarOverflowProps {
16
+ /**
17
+ * Sets additional classes to the Toolbar.
18
+ *
19
+ * @example
20
+ * ```jsx
21
+ * <Toolbar className="custom-toolbar" />
22
+ * ```
23
+ */
24
+ className?: string;
25
+ /**
26
+ * Represents the `dir` HTML attribute.
27
+ *
28
+ * @example
29
+ * ```jsx
30
+ * <Toolbar dir="rtl" />
31
+ * ```
32
+ */
33
+ dir?: string;
34
+ /**
35
+ * The styles that are applied to the Toolbar.
36
+ *
37
+ * @example
38
+ * ```jsx
39
+ * <Toolbar style={{ backgroundColor: 'lightblue' }} />
40
+ * ```
41
+ */
42
+ style?: React.CSSProperties;
43
+ /**
44
+ * Represents the `aria-label` HTML attribute of the Toolbar component.
45
+ *
46
+ * @example
47
+ * ```jsx
48
+ * <Toolbar ariaLabel="Main toolbar" />
49
+ * ```
50
+ */
51
+ ariaLabel?: string;
52
+ /**
53
+ * Specifies the `tabIndex` of the Toolbar.
54
+ *
55
+ * @example
56
+ * ```jsx
57
+ * <Toolbar tabIndex={0} />
58
+ * ```
59
+ */
60
+ tabIndex?: number;
61
+ /**
62
+ * The `resize` event of the Toolbar.
63
+ *
64
+ * @example
65
+ * ```jsx
66
+ * <Toolbar onResize={(event) => console.log(event)} />
67
+ * ```
68
+ */
69
+ onResize?: (event: ToolbarResizeEvent) => void;
70
+ /**
71
+ * If set to `false`, it will turn off the built-in keyboard navigation.
72
+ *
73
+ * @example
74
+ * ```jsx
75
+ * <Toolbar keyboardNavigation={false} />
76
+ * ```
77
+ */
78
+ keyboardNavigation?: boolean;
79
+ /**
80
+ * @hidden
81
+ *
82
+ * The CSS selectors of the toolbar HTML elements used by built-in keyboard navigation.
83
+ * Each selector needs to point to a focusable element.
84
+ * Defaults to [
85
+ * 'button',
86
+ * '.k-button-group > button',
87
+ * '.k-dropdown > .k-dropdown-wrap',
88
+ * '.k-colorpicker > .k-picker-wrap'
89
+ * ].
90
+ */
91
+ buttons?: string[];
92
+ /**
93
+ * Configures the `size` of the Toolbar.
94
+ * The available options are:
95
+ * - `small` - Sets the padding of the component to 4px 4px.
96
+ * - `medium` - Sets the padding of the component to 8px 8px.
97
+ * - `large` - Sets the padding of the component to 10px 10px.
98
+ *
99
+ * @default undefined (theme-controlled)
100
+ * @example
101
+ * ```jsx
102
+ * <Toolbar size="large" />
103
+ * ```
104
+ */
105
+ size?: 'small' | 'medium' | 'large';
106
+ /**
107
+ * Configures the `fillMode` of the Toolbar.
108
+ * The available options are:
109
+ * - `solid` - Applies a `background` color and `solid borders`.
110
+ * - `flat` - Sets a `transparent background` and `solid bottom border`.
111
+ * - `outline` - Sets a `transparent background` and `solid borders`.
112
+ *
113
+ * @default undefined (theme-controlled)
114
+ * @example
115
+ * ```jsx
116
+ * <Toolbar fillMode="flat" />
117
+ * ```
118
+ */
119
+ fillMode?: 'solid' | 'flat' | 'outline';
120
+ /**
121
+ * @hidden
122
+ */
123
+ role?: string;
124
+ /**
125
+ * @hidden
126
+ */
127
+ _ariaControls?: string;
128
+ }
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ /**
9
+ * @hidden
10
+ */
11
+ export declare const prevArrowTitle = "prevArrow.title";
12
+ /**
13
+ * @hidden
14
+ */
15
+ export declare const nextArrowTitle = "nextArrow.title";
16
+ /**
17
+ * @hidden
18
+ */
19
+ export declare const moreButtonTitle = "moreButtonTitle.title";
20
+ /**
21
+ * @hidden
22
+ */
23
+ export declare const messages: {
24
+ "prevArrow.title": string;
25
+ "nextArrow.title": string;
26
+ "moreButtonTitle.title": string;
27
+ };