@progress/kendo-themes-html 14.5.1-dev.7 → 14.6.0

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 (171) hide show
  1. package/dist/cjs/colorgradient/demos/colorgradient.js +1 -1
  2. package/dist/cjs/colorpicker/colorpicker.spec.js +1 -1
  3. package/dist/cjs/colorpicker/templates/colorpicker-adaptive.js +1 -1
  4. package/dist/cjs/colorpicker/templates/colorpicker-disabled.js +1 -1
  5. package/dist/cjs/colorpicker/templates/colorpicker-normal.js +1 -1
  6. package/dist/cjs/combobox/demos/combobox.js +1 -1
  7. package/dist/cjs/combobox/templates/combobox-grouping-modern-custom-value.js +1 -1
  8. package/dist/cjs/filemanager/filemanager-listview.spec.js +1 -1
  9. package/dist/cjs/floating-toolbar/floating-toolbar.spec.js +1 -1
  10. package/dist/cjs/imageeditor/imageeditor-option-list.js +1 -0
  11. package/dist/cjs/imageeditor/imageeditor-option-preview.js +1 -0
  12. package/dist/cjs/imageeditor/imageeditor-pane.js +1 -0
  13. package/dist/cjs/imageeditor/imageeditor-placeholder.js +1 -0
  14. package/dist/cjs/imageeditor/imageeditor-preview-thumbnail.js +1 -0
  15. package/dist/cjs/imageeditor/imageeditor-resize-handles.js +1 -0
  16. package/dist/cjs/imageeditor/imageeditor-sidebar.js +1 -0
  17. package/dist/cjs/imageeditor/imageeditor-toolbar.js +1 -1
  18. package/dist/cjs/imageeditor/imageeditor.spec.js +1 -1
  19. package/dist/cjs/imageeditor/templates/imageeditor-adjustments.js +1 -0
  20. package/dist/cjs/imageeditor/templates/imageeditor-blur.js +1 -0
  21. package/dist/cjs/imageeditor/templates/imageeditor-crop.js +1 -1
  22. package/dist/cjs/imageeditor/templates/imageeditor-disabled.js +1 -0
  23. package/dist/cjs/imageeditor/templates/imageeditor-filters.js +1 -0
  24. package/dist/cjs/imageeditor/templates/imageeditor-frames.js +1 -0
  25. package/dist/cjs/imageeditor/templates/imageeditor-insert-line.js +1 -0
  26. package/dist/cjs/imageeditor/templates/imageeditor-insert-shape.js +1 -0
  27. package/dist/cjs/imageeditor/templates/imageeditor-insert-text.js +1 -0
  28. package/dist/cjs/imageeditor/templates/imageeditor-normal.js +1 -1
  29. package/dist/cjs/imageeditor/templates/imageeditor-pixelate.js +1 -0
  30. package/dist/cjs/imageeditor/templates/imageeditor-resize.js +1 -1
  31. package/dist/cjs/imageeditor/templates/imageeditor-rotate.js +1 -0
  32. package/dist/cjs/imageeditor/templates/imageeditor-shadow.js +1 -0
  33. package/dist/cjs/index.js +8 -8
  34. package/dist/cjs/listview/demos/listview.js +1 -1
  35. package/dist/cjs/listview/listview.spec.js +1 -1
  36. package/dist/cjs/listview/templates/listview-no-data.js +1 -1
  37. package/dist/cjs/listview/templates/listview-normal.js +1 -1
  38. package/dist/cjs/listview/templates/listview-selectable.js +1 -1
  39. package/dist/cjs/pager/index.js +1 -1
  40. package/dist/cjs/prompt/templates/prompt-inline-input-only.js +1 -1
  41. package/dist/cjs/prompt/templates/prompt-inline.js +1 -1
  42. package/dist/cjs/prompt/templates/prompt-more-actions.js +1 -1
  43. package/dist/cjs/prompt/templates/prompt-normal.js +1 -1
  44. package/dist/cjs/prompt/templates/prompt-output.js +1 -1
  45. package/dist/cjs/prompt/templates/prompt-popup.js +1 -1
  46. package/dist/cjs/prompt/templates/prompt-settings.js +1 -1
  47. package/dist/cjs/prompt/templates/prompt-suggestions.js +1 -1
  48. package/dist/cjs/scheduler/scheduler-toolbar.spec.js +1 -1
  49. package/dist/cjs/spreadsheet/spreadsheet-action-bar.js +1 -1
  50. package/dist/cjs/toolbar/demos/toolbar.js +1 -1
  51. package/dist/cjs/toolbar/templates/toolbar-scrollable-buttons-hidden.js +1 -1
  52. package/dist/cjs/toolbar/templates/toolbar-scrollable.js +1 -1
  53. package/dist/esm/colorgradient/demos/colorgradient.mjs +1 -1
  54. package/dist/esm/colorpicker/colorpicker.spec.mjs +1 -1
  55. package/dist/esm/colorpicker/templates/colorpicker-adaptive.mjs +1 -1
  56. package/dist/esm/colorpicker/templates/colorpicker-disabled.mjs +1 -1
  57. package/dist/esm/colorpicker/templates/colorpicker-normal.mjs +1 -1
  58. package/dist/esm/combobox/demos/combobox.mjs +1 -1
  59. package/dist/esm/combobox/templates/combobox-grouping-modern-custom-value.mjs +1 -1
  60. package/dist/esm/filemanager/filemanager-listview.spec.mjs +1 -1
  61. package/dist/esm/floating-toolbar/floating-toolbar.spec.mjs +1 -1
  62. package/dist/esm/imageeditor/imageeditor-option-list.mjs +1 -0
  63. package/dist/esm/imageeditor/imageeditor-option-preview.mjs +1 -0
  64. package/dist/esm/imageeditor/imageeditor-pane.mjs +1 -0
  65. package/dist/esm/imageeditor/imageeditor-placeholder.mjs +1 -0
  66. package/dist/esm/imageeditor/imageeditor-preview-thumbnail.mjs +1 -0
  67. package/dist/esm/imageeditor/imageeditor-resize-handles.mjs +1 -0
  68. package/dist/esm/imageeditor/imageeditor-sidebar.mjs +1 -0
  69. package/dist/esm/imageeditor/imageeditor-toolbar.mjs +1 -1
  70. package/dist/esm/imageeditor/imageeditor.spec.mjs +1 -1
  71. package/dist/esm/imageeditor/templates/imageeditor-adjustments.mjs +1 -0
  72. package/dist/esm/imageeditor/templates/imageeditor-blur.mjs +1 -0
  73. package/dist/esm/imageeditor/templates/imageeditor-crop.mjs +1 -1
  74. package/dist/esm/imageeditor/templates/imageeditor-disabled.mjs +1 -0
  75. package/dist/esm/imageeditor/templates/imageeditor-filters.mjs +1 -0
  76. package/dist/esm/imageeditor/templates/imageeditor-frames.mjs +1 -0
  77. package/dist/esm/imageeditor/templates/imageeditor-insert-line.mjs +1 -0
  78. package/dist/esm/imageeditor/templates/imageeditor-insert-shape.mjs +1 -0
  79. package/dist/esm/imageeditor/templates/imageeditor-insert-text.mjs +1 -0
  80. package/dist/esm/imageeditor/templates/imageeditor-normal.mjs +1 -1
  81. package/dist/esm/imageeditor/templates/imageeditor-pixelate.mjs +1 -0
  82. package/dist/esm/imageeditor/templates/imageeditor-resize.mjs +1 -1
  83. package/dist/esm/imageeditor/templates/imageeditor-rotate.mjs +1 -0
  84. package/dist/esm/imageeditor/templates/imageeditor-shadow.mjs +1 -0
  85. package/dist/esm/index.mjs +8 -8
  86. package/dist/esm/listview/demos/listview.mjs +1 -1
  87. package/dist/esm/listview/templates/listview-no-data.mjs +1 -1
  88. package/dist/esm/listview/templates/listview-normal.mjs +1 -1
  89. package/dist/esm/listview/templates/listview-selectable.mjs +1 -1
  90. package/dist/esm/pager/index.mjs +1 -1
  91. package/dist/esm/prompt/templates/prompt-inline-input-only.mjs +1 -1
  92. package/dist/esm/prompt/templates/prompt-inline.mjs +1 -1
  93. package/dist/esm/prompt/templates/prompt-more-actions.mjs +1 -1
  94. package/dist/esm/prompt/templates/prompt-normal.mjs +1 -1
  95. package/dist/esm/prompt/templates/prompt-output.mjs +1 -1
  96. package/dist/esm/prompt/templates/prompt-popup.mjs +1 -1
  97. package/dist/esm/prompt/templates/prompt-settings.mjs +1 -1
  98. package/dist/esm/prompt/templates/prompt-suggestions.mjs +1 -1
  99. package/dist/esm/scheduler/scheduler-toolbar.spec.mjs +1 -1
  100. package/dist/esm/spreadsheet/spreadsheet-action-bar.mjs +1 -1
  101. package/dist/esm/toolbar/demos/toolbar.mjs +1 -1
  102. package/dist/esm/toolbar/templates/toolbar-scrollable-buttons-hidden.mjs +1 -1
  103. package/dist/esm/toolbar/templates/toolbar-scrollable.mjs +1 -1
  104. package/dist/types/combobox/combobox.spec.d.ts +1 -1
  105. package/dist/types/imageeditor/imageeditor-option-list.d.ts +18 -0
  106. package/dist/types/imageeditor/imageeditor-option-preview.d.ts +18 -0
  107. package/dist/types/imageeditor/imageeditor-pane.d.ts +21 -0
  108. package/dist/types/imageeditor/imageeditor-placeholder.d.ts +7 -0
  109. package/dist/types/imageeditor/imageeditor-preview-thumbnail.d.ts +12 -0
  110. package/dist/types/imageeditor/imageeditor-resize-handles.d.ts +14 -0
  111. package/dist/types/imageeditor/imageeditor-sidebar.d.ts +11 -0
  112. package/dist/types/imageeditor/imageeditor-toolbar.d.ts +1 -0
  113. package/dist/types/imageeditor/imageeditor.spec.d.ts +40 -4
  114. package/dist/types/imageeditor/index.d.ts +18 -0
  115. package/dist/types/imageeditor/templates/imageeditor-adjustments.d.ts +1 -0
  116. package/dist/types/imageeditor/templates/imageeditor-blur.d.ts +1 -0
  117. package/dist/types/imageeditor/templates/imageeditor-disabled.d.ts +1 -0
  118. package/dist/types/imageeditor/templates/imageeditor-filters.d.ts +6 -0
  119. package/dist/types/imageeditor/templates/imageeditor-frames.d.ts +1 -0
  120. package/dist/types/imageeditor/templates/imageeditor-insert-line.d.ts +2 -0
  121. package/dist/types/imageeditor/templates/imageeditor-insert-shape.d.ts +2 -0
  122. package/dist/types/imageeditor/templates/imageeditor-insert-text.d.ts +2 -0
  123. package/dist/types/imageeditor/templates/imageeditor-pixelate.d.ts +1 -0
  124. package/dist/types/imageeditor/templates/imageeditor-rotate.d.ts +1 -0
  125. package/dist/types/imageeditor/templates/imageeditor-shadow.d.ts +1 -0
  126. package/dist/types/numerictextbox/numerictextbox.spec.d.ts +1 -1
  127. package/package.json +4 -4
  128. package/src/combobox/combobox.spec.tsx +2 -2
  129. package/src/imageeditor/imageeditor-option-list.tsx +53 -0
  130. package/src/imageeditor/imageeditor-option-preview.tsx +56 -0
  131. package/src/imageeditor/imageeditor-pane.tsx +70 -0
  132. package/src/imageeditor/imageeditor-placeholder.tsx +51 -0
  133. package/src/imageeditor/imageeditor-preview-thumbnail.tsx +42 -0
  134. package/src/imageeditor/imageeditor-resize-handles.tsx +37 -0
  135. package/src/imageeditor/imageeditor-sidebar.tsx +66 -0
  136. package/src/imageeditor/imageeditor-toolbar.tsx +14 -13
  137. package/src/imageeditor/imageeditor.spec.tsx +79 -13
  138. package/src/imageeditor/index.ts +19 -0
  139. package/src/imageeditor/templates/imageeditor-adjustments.tsx +88 -0
  140. package/src/imageeditor/templates/imageeditor-blur.tsx +92 -0
  141. package/src/imageeditor/templates/imageeditor-crop.tsx +64 -59
  142. package/src/imageeditor/templates/imageeditor-disabled.tsx +45 -0
  143. package/src/imageeditor/templates/imageeditor-filters.tsx +98 -0
  144. package/src/imageeditor/templates/imageeditor-frames.tsx +180 -0
  145. package/src/imageeditor/templates/imageeditor-insert-line.tsx +141 -0
  146. package/src/imageeditor/templates/imageeditor-insert-shape.tsx +195 -0
  147. package/src/imageeditor/templates/imageeditor-insert-text.tsx +143 -0
  148. package/src/imageeditor/templates/imageeditor-normal.tsx +20 -1
  149. package/src/imageeditor/templates/imageeditor-pixelate.tsx +92 -0
  150. package/src/imageeditor/templates/imageeditor-resize.tsx +68 -50
  151. package/src/imageeditor/templates/imageeditor-rotate.tsx +98 -0
  152. package/src/imageeditor/templates/imageeditor-shadow.tsx +96 -0
  153. package/src/imageeditor/tests/imageeditor-adaptive-small.tsx +373 -0
  154. package/src/imageeditor/tests/imageeditor-adjustments-pane.tsx +14 -0
  155. package/src/imageeditor/tests/imageeditor-blur-pane.tsx +29 -0
  156. package/src/imageeditor/tests/imageeditor-crop-pane.tsx +3 -2
  157. package/src/imageeditor/tests/imageeditor-export-dialog.tsx +85 -0
  158. package/src/imageeditor/tests/imageeditor-filters-pane.tsx +14 -0
  159. package/src/imageeditor/tests/imageeditor-frames-pane.tsx +22 -0
  160. package/src/imageeditor/tests/imageeditor-insert-line-pane.tsx +52 -0
  161. package/src/imageeditor/tests/imageeditor-insert-shape-pane.tsx +57 -0
  162. package/src/imageeditor/tests/imageeditor-insert-text-pane.tsx +51 -0
  163. package/src/imageeditor/tests/imageeditor-interactive-states.tsx +79 -0
  164. package/src/imageeditor/tests/imageeditor-option-list-states.tsx +17 -0
  165. package/src/imageeditor/tests/imageeditor-pixelate-pane.tsx +29 -0
  166. package/src/imageeditor/tests/imageeditor-resize-pane.tsx +15 -1
  167. package/src/imageeditor/tests/imageeditor-responsive.tsx +71 -0
  168. package/src/imageeditor/tests/imageeditor-rotate-pane.tsx +27 -0
  169. package/src/imageeditor/tests/imageeditor-shadow-pane.tsx +14 -0
  170. package/src/imageeditor/tests/imageeditor-sidebar-scrollable.tsx +97 -0
  171. package/src/numerictextbox/numerictextbox.spec.tsx +2 -2
@@ -0,0 +1,21 @@
1
+ export declare const IMAGEEDITORPANE_CLASSNAME = "k-imageeditor-pane";
2
+ declare const states: never[];
3
+ export type KendoImageEditorPaneProps = {
4
+ title?: string;
5
+ actions?: React.JSX.Element | React.JSX.Element[];
6
+ /** Renders the mobile bottom-sheet header (Close/Title/Confirm) and omits the `actions` footer. */
7
+ adaptive?: boolean;
8
+ };
9
+ export type KendoImageEditorPaneState = {
10
+ [K in (typeof states)[number]]?: boolean;
11
+ };
12
+ export declare const ImageEditorPane: {
13
+ (props: KendoImageEditorPaneProps & KendoImageEditorPaneState & React.HTMLAttributes<HTMLDivElement>): import("react/jsx-runtime").JSX.Element;
14
+ states: any[];
15
+ options: {};
16
+ className: string;
17
+ moduleName: null;
18
+ folderName: null;
19
+ defaultOptions: {};
20
+ };
21
+ export default ImageEditorPane;
@@ -0,0 +1,7 @@
1
+ export declare const IMAGEEDITORPLACEHOLDER_CLASSNAME = "k-imageeditor-placeholder";
2
+ export type KendoImageEditorPlaceholderProps = {
3
+ icon?: string;
4
+ title?: string;
5
+ text?: string;
6
+ };
7
+ export declare const ImageEditorPlaceholder: (props: KendoImageEditorPlaceholderProps & React.HTMLAttributes<HTMLDivElement>) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,12 @@
1
+ export type ImageEditorPreviewThumbnailProps = {
2
+ label?: string;
3
+ style?: React.CSSProperties;
4
+ children?: React.ReactNode;
5
+ };
6
+ export declare const ImageEditorPreviewThumbnail: {
7
+ (props: ImageEditorPreviewThumbnailProps): import("react/jsx-runtime").JSX.Element;
8
+ moduleName: null;
9
+ folderName: null;
10
+ defaultOptions: {};
11
+ };
12
+ export default ImageEditorPreviewThumbnail;
@@ -0,0 +1,14 @@
1
+ export type ImageEditorResizeHandlesVariant = 'crop' | 'mixed' | 'scale';
2
+ export type ImageEditorResizeHandlesProps = {
3
+ variant?: ImageEditorResizeHandlesVariant;
4
+ grid?: boolean;
5
+ };
6
+ export declare const ImageEditorResizeHandles: {
7
+ (props: ImageEditorResizeHandlesProps): import("react/jsx-runtime").JSX.Element;
8
+ moduleName: null;
9
+ folderName: null;
10
+ defaultOptions: {
11
+ variant: ImageEditorResizeHandlesVariant;
12
+ };
13
+ };
14
+ export default ImageEditorResizeHandles;
@@ -0,0 +1,11 @@
1
+ export declare const IMAGEEDITORSIDEBAR_CLASSNAME = "k-imageeditor-sidebar";
2
+ export type KendoImageEditorSidebarProps = {
3
+ sidebarItems?: React.JSX.Element | React.JSX.Element[];
4
+ scrollable?: boolean;
5
+ scrollingPosition?: 'start' | 'end' | 'both';
6
+ };
7
+ /**
8
+ * @aria {role="toolbar"} The component role, grouping the tool selection buttons.
9
+ * @aria {aria-label="Tools"} Distinguishes the sidebar toolbar from the header toolbar.
10
+ */
11
+ export declare const ImageEditorSidebar: (props: KendoImageEditorSidebarProps & React.HTMLAttributes<HTMLDivElement>) => import("react/jsx-runtime").JSX.Element;
@@ -3,6 +3,7 @@ export declare const IMAGEEDITORTOOLBAR_CLASSNAME = "k-imageeditor-toolbar";
3
3
  export type KendoImageEditorToolbarProps = {
4
4
  toolbarItems?: React.JSX.Element | React.JSX.Element[];
5
5
  };
6
+ export declare const imageEditorToolbarItems: import("react/jsx-runtime").JSX.Element[];
6
7
  export declare const ImageEditorToolbar: {
7
8
  (props: KendoToolbarProps & KendoImageEditorToolbarProps & React.HTMLAttributes<HTMLDivElement>): import("react/jsx-runtime").JSX.Element;
8
9
  states: any[];
@@ -3,23 +3,59 @@ export declare const IMAGEEDITOR_CLASSNAME = "k-imageeditor";
3
3
  export type KendoImageEditorProps = {
4
4
  toolbarItems?: React.JSX.Element | React.JSX.Element[];
5
5
  actionPane?: React.JSX.Element | React.JSX.Element[];
6
+ sidebarItems?: React.JSX.Element | React.JSX.Element[];
7
+ placeholder?: React.JSX.Element;
6
8
  contentHeight?: string;
9
+ exporting?: boolean;
10
+ /** Renders the mobile layout: canvas, then the pane and sidebar docked at the bottom. */
11
+ adaptive?: boolean;
12
+ sidebarScrollable?: boolean;
13
+ sidebarScrollingPosition?: 'start' | 'end' | 'both';
7
14
  };
8
15
  /**
9
16
  * @aria {role="img"} Indicates the canvas role as an image. Applicable when an image is loaded.
10
17
  * @aria {aria-label|aria-labelledby} Provides an accessible name for the canvas by describing the image content. Applicable when an image is loaded.
18
+ * @aria {role="status"} Announces the busy overlay shown while `exporting` is true.
11
19
  * @ux {Canvas} Renders the image on an editable canvas.
12
20
  * @ux {Crop} A crop tool lets the user select and apply a cropping region.
13
21
  * @ux {Pan and zoom} The canvas can be panned by dragging and zoomed with the mouse wheel.
14
22
  * @ux {Undo / Redo} All edit operations can be undone and redone.
15
23
  * @ux {Export} The edited image can be saved or downloaded.
24
+ * @ux {Exporting} While `exporting` is true, a busy overlay covers the editor and interaction is blocked.
16
25
  */
17
26
  export declare const ImageEditor: KendoComponent<KendoImageEditorProps & React.HTMLAttributes<HTMLDivElement>>;
18
27
  /**
19
- * @keyboard {Tab} Focuses next focusable element (the ToolBar or an input/button on the Edit pane).
20
- * @keyboard {Shift + Tab} Focuses previous focusable element.
21
- * @keyboard {Control + Z} Undo the last modification performed on the image.
22
- * @keyboard {Control + Y} Redo a modification performed on the image.
28
+ * @keyboard {Alt/Opt(Mac) + Number} Focuses the component.
29
+ * @keyboard {Tab} Focuses the next focusable item.
30
+ * @keyboard {Shift + Tab} Focuses the previous focusable item.
31
+ * @keyboard {Enter} Presses the focused button.
32
+ * @keyboard {Space} Presses the focused button.
33
+ * @keyboard {Control/Cmd(Mac) + Z} Undo the operation.
34
+ * @keyboard {Control/Cmd(Mac) + Y} Redo the operation.
35
+ * @keyboard {Escape} Deselect / Cancel operation.
36
+ * @keyboard {Delete} Delete selected element.
37
+ * @keyboard {Control/Cmd(Mac) + Plus} Zooms in on the image. Conflicts with the browser zoom in all browsers; requires `preventDefault` when the component is focused.
38
+ * @keyboard {Control/Cmd(Mac) + Minus} Zooms out from the image. Conflicts with the browser zoom out in all browsers; requires `preventDefault` when the component is focused.
39
+ * @keyboard {Control/Cmd(Mac) + O} Opens the image browser to import a new image. Conflicts with the Open File dialog in all browsers; requires `preventDefault` when the component is focused.
40
+ * @keyboard {Control/Cmd(Mac) + D} Duplicates the selected element. Conflicts with Bookmark Page in all browsers; requires `preventDefault` when the component is focused.
41
+ * @keyboard {Control/Cmd(Mac) + Shift + S} Exports the image. Conflicts with the Firefox Screenshot tool; requires `preventDefault` when the component is focused.
42
+ * @keyboard {Shift + 1} Fit to screen.
43
+ * @keyboard {Shift + 0} Zoom to 100%.
44
+ * @keyboard {Control/Cmd(Mac) + F3} Moves keyboard focus directly to the Side Panel.
45
+ * @keyboard {R} Inserts a rectangle shape and selects it. The Floating Toolbar appears, but the side panel remains closed.
46
+ * @keyboard {O} Inserts an oval shape and selects it. The Floating Toolbar appears, but the side panel remains closed.
47
+ * @keyboard {L} Inserts a line shape and selects it. The Floating Toolbar appears, but the side panel remains closed.
48
+ * @keyboard {T} Inserts a text box with a typing cursor and selects it. The Floating Toolbar appears, but the side panel remains closed.
49
+ * @keyboard {ArrowLeft} Moves the selected object left.
50
+ * @keyboard {ArrowRight} Moves the selected object right.
51
+ * @keyboard {ArrowUp} Moves the selected object up.
52
+ * @keyboard {ArrowDown} Moves the selected object down.
53
+ * @keyboard {Control/Cmd(Mac) + B} Bolds the text. Conflicts with the Firefox Bookmarks Sidebar; requires `preventDefault` when the component is focused.
54
+ * @keyboard {Control/Cmd(Mac) + I} Italicizes the text. Conflicts with Firefox Page Info; requires `preventDefault` when the component is focused.
55
+ * @keyboard {Control/Cmd(Mac) + U} Underlines the text. Conflicts with View Source in Chrome, Firefox, and Edge; requires `preventDefault` when the component is focused.
56
+ * @keyboard {Control/Cmd(Mac) + Shift + L} Left-aligns the text.
57
+ * @keyboard {Control/Cmd(Mac) + Shift + E} Center-aligns the text. Conflicts with Firefox Search in Tabs; requires `preventDefault` when the component is focused.
58
+ * @keyboard {Control/Cmd(Mac) + Shift + R} Right-aligns the text. Conflicts with Hard Refresh in all browsers; requires `preventDefault` when the component is focused.
23
59
  *
24
60
  * @see https://pauljadam.com/demos/canvas.html HTML Canvas Accessibility
25
61
  */
@@ -1,5 +1,23 @@
1
1
  export * from './imageeditor.spec';
2
2
  export * from './imageeditor-toolbar';
3
+ export * from './imageeditor-sidebar';
4
+ export * from './imageeditor-placeholder';
5
+ export * from './imageeditor-pane';
6
+ export * from './imageeditor-option-preview';
7
+ export * from './imageeditor-option-list';
8
+ export * from './imageeditor-preview-thumbnail';
9
+ export * from './imageeditor-resize-handles';
3
10
  export * from './templates/imageeditor-normal';
4
11
  export * from './templates/imageeditor-resize';
12
+ export * from './templates/imageeditor-rotate';
5
13
  export * from './templates/imageeditor-crop';
14
+ export * from './templates/imageeditor-disabled';
15
+ export * from './templates/imageeditor-insert-text';
16
+ export * from './templates/imageeditor-insert-shape';
17
+ export * from './templates/imageeditor-insert-line';
18
+ export * from './templates/imageeditor-blur';
19
+ export * from './templates/imageeditor-pixelate';
20
+ export * from './templates/imageeditor-filters';
21
+ export * from './templates/imageeditor-adjustments';
22
+ export * from './templates/imageeditor-frames';
23
+ export * from './templates/imageeditor-shadow';
@@ -0,0 +1 @@
1
+ export declare const ImageEditorAdjustments: ({ brightness, contrast, saturation, hue, exposure, blur, opacity, ...props }: any) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ export declare const ImageEditorBlur: ({ shape, intensity, ...props }: any) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ export declare const ImageEditorDisabled: (props: any) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,6 @@
1
+ export declare const filterPresets: {
2
+ [key: string]: {
3
+ label: string;
4
+ };
5
+ };
6
+ export declare const ImageEditorFilters: ({ preset, ...props }: any) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ export declare const ImageEditorFrames: ({ style, imageRoundness, framesAmount, frameThickness, frameRoundness, offset, strokeColor, ...props }: any) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ export declare const ImageEditorInsertLine: (props: any) => import("react/jsx-runtime").JSX.Element;
2
+ export default ImageEditorInsertLine;
@@ -0,0 +1,2 @@
1
+ export declare const ImageEditorInsertShape: (props: any) => import("react/jsx-runtime").JSX.Element;
2
+ export default ImageEditorInsertShape;
@@ -0,0 +1,2 @@
1
+ export declare const ImageEditorInsertText: (props: any) => import("react/jsx-runtime").JSX.Element;
2
+ export default ImageEditorInsertText;
@@ -0,0 +1 @@
1
+ export declare const ImageEditorPixelate: ({ shape, intensity, ...props }: any) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ export declare const ImageEditorRotate: (props: any) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ export declare const ImageEditorShadow: ({ positionX, positionY, blur, spread, color, opacity, ...props }: any) => import("react/jsx-runtime").JSX.Element;
@@ -40,7 +40,7 @@ export type KendoNumericTextboxState = {
40
40
  * @ux {Format} The value is displayed using the configured number format.
41
41
  * @ux {Disabled state} When disabled, the input and spin buttons are non-interactive.
42
42
  */
43
- export declare const NumericTextbox: KendoComponent<KendoNumericTextboxProps & KendoNumericTextboxState & React.HTMLAttributes<HTMLSpanElement>>;
43
+ export declare const NumericTextbox: KendoComponent<KendoNumericTextboxProps & KendoNumericTextboxState & Omit<React.HTMLAttributes<HTMLSpanElement>, 'prefix'>>;
44
44
  /**
45
45
  * @keyboard {ArrowUp} Increases the value of the focused NumericTextBox with the step.
46
46
  * @keyboard {ArrowDown} Decreases the value of the focused NumericTextBox with the step.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@progress/kendo-themes-html",
3
3
  "description": "A collection of HTML helpers used for developing Kendo UI themes",
4
- "version": "14.5.1-dev.7",
4
+ "version": "14.6.0",
5
5
  "author": "Progress",
6
6
  "license": "Apache-2.0",
7
7
  "keywords": [
@@ -51,7 +51,7 @@
51
51
  "prepublishOnly": "npm run build && npm run typegen"
52
52
  },
53
53
  "dependencies": {
54
- "@progress/kendo-svg-icons": "5.5.0-dev.0"
54
+ "@progress/kendo-svg-icons": "^5.5.0"
55
55
  },
56
56
  "peerDependencies": {
57
57
  "react": "^17.0.0 || ^18.0.0 || ^19.0.0",
@@ -59,9 +59,9 @@
59
59
  },
60
60
  "devDependencies": {
61
61
  "@types/react": "^19.2.15",
62
- "@vitest/coverage-v8": "4.1.10",
62
+ "@vitest/coverage-v8": "4.1.11",
63
63
  "react": "^19.2.8",
64
64
  "react-dom": "^19.2.8",
65
- "vitest": "4.1.10"
65
+ "vitest": "4.1.11"
66
66
  }
67
67
  }
@@ -91,10 +91,10 @@ const defaultOptions = {
91
91
  * @ux {Placeholder} Displays hint text when no value is selected.
92
92
  * @ux {Disabled state} When disabled, the control is non-interactive.
93
93
  */
94
- export const Combobox: KendoComponent<KendoComboboxProps & KendoComboboxState & React.HTMLAttributes<HTMLSpanElement>> = (
94
+ export const Combobox: KendoComponent<KendoComboboxProps & KendoComboboxState & Omit<React.HTMLAttributes<HTMLSpanElement>, 'prefix'>> = (
95
95
  props: KendoComboboxProps &
96
96
  KendoComboboxState &
97
- React.HTMLAttributes<HTMLSpanElement>
97
+ Omit<React.HTMLAttributes<HTMLSpanElement>, 'prefix'>
98
98
  ) => {
99
99
  const {
100
100
  size,
@@ -0,0 +1,53 @@
1
+ import { classNames } from '../misc';
2
+
3
+ export const IMAGEEDITOROPTIONLIST_CLASSNAME = `k-imageeditor-option-list`;
4
+
5
+ export type KendoImageEditorOptionListProps = {
6
+ scrollable?: boolean;
7
+ scrollableStart?: boolean;
8
+ scrollableEnd?: boolean;
9
+ };
10
+
11
+ const defaultOptions = {
12
+ scrollable: false,
13
+ scrollableStart: false,
14
+ scrollableEnd: false,
15
+ };
16
+
17
+ export const ImageEditorOptionList = (
18
+ props: KendoImageEditorOptionListProps & React.HTMLAttributes<HTMLDivElement>
19
+ ) => {
20
+ const {
21
+ scrollable = defaultOptions.scrollable,
22
+ scrollableStart = defaultOptions.scrollableStart,
23
+ scrollableEnd = defaultOptions.scrollableEnd,
24
+ children,
25
+ ...other
26
+ } = props;
27
+
28
+ return (
29
+ <div
30
+ {...other}
31
+ className={classNames(
32
+ props.className,
33
+ IMAGEEDITOROPTIONLIST_CLASSNAME,
34
+ {
35
+ [`${IMAGEEDITOROPTIONLIST_CLASSNAME}-scrollable`]: scrollable,
36
+ [`${IMAGEEDITOROPTIONLIST_CLASSNAME}-scrollable-start`]: scrollableStart,
37
+ [`${IMAGEEDITOROPTIONLIST_CLASSNAME}-scrollable-end`]: scrollableEnd,
38
+ }
39
+ )}
40
+ >
41
+ <div className="k-imageeditor-option-list-items">
42
+ {children}
43
+ </div>
44
+ </div>
45
+ );
46
+ };
47
+
48
+ ImageEditorOptionList.className = IMAGEEDITOROPTIONLIST_CLASSNAME;
49
+ ImageEditorOptionList.moduleName = null;
50
+ ImageEditorOptionList.folderName = null;
51
+ ImageEditorOptionList.defaultOptions = defaultOptions;
52
+
53
+ export default ImageEditorOptionList;
@@ -0,0 +1,56 @@
1
+ import { classNames, stateClassNames, States } from '../misc';
2
+
3
+ export const IMAGEEDITOROPTIONPREVIEW_CLASSNAME = `k-imageeditor-option-preview`;
4
+
5
+ const states = [
6
+ States.hover,
7
+ States.focus,
8
+ States.selected
9
+ ];
10
+
11
+ const options = {};
12
+
13
+ export type KendoImageEditorOptionPreviewProps = {
14
+ label?: string;
15
+ };
16
+
17
+ const defaultOptions = {};
18
+
19
+ export type KendoImageEditorOptionPreviewState = { [K in (typeof states)[number]]?: boolean };
20
+
21
+ export const ImageEditorOptionPreview = (
22
+ props: KendoImageEditorOptionPreviewProps & KendoImageEditorOptionPreviewState & React.HTMLAttributes<HTMLDivElement>
23
+ ) => {
24
+ const {
25
+ label,
26
+ hover,
27
+ focus,
28
+ selected,
29
+ children,
30
+ ...other
31
+ } = props;
32
+
33
+ return (
34
+ <div
35
+ {...other}
36
+ className={classNames(
37
+ props.className,
38
+ IMAGEEDITOROPTIONPREVIEW_CLASSNAME,
39
+ stateClassNames(IMAGEEDITOROPTIONPREVIEW_CLASSNAME, { hover, focus, selected })
40
+ )}
41
+ role="button"
42
+ aria-pressed={selected ? 'true' : 'false'}
43
+ >
44
+ {children ?? label}
45
+ </div>
46
+ );
47
+ };
48
+
49
+ ImageEditorOptionPreview.states = states;
50
+ ImageEditorOptionPreview.options = options;
51
+ ImageEditorOptionPreview.className = IMAGEEDITOROPTIONPREVIEW_CLASSNAME;
52
+ ImageEditorOptionPreview.moduleName = null;
53
+ ImageEditorOptionPreview.folderName = null;
54
+ ImageEditorOptionPreview.defaultOptions = defaultOptions;
55
+
56
+ export default ImageEditorOptionPreview;
@@ -0,0 +1,70 @@
1
+ import { ActionButtons } from '../action-buttons';
2
+ import { Button } from '../button';
3
+ import { classNames } from '../misc';
4
+
5
+ export const IMAGEEDITORPANE_CLASSNAME = `k-imageeditor-pane`;
6
+
7
+ const states = [];
8
+
9
+ const options = {};
10
+
11
+ export type KendoImageEditorPaneProps = {
12
+ title?: string;
13
+ actions?: React.JSX.Element | React.JSX.Element[];
14
+ /** Renders the mobile bottom-sheet header (Close/Title/Confirm) and omits the `actions` footer. */
15
+ adaptive?: boolean;
16
+ };
17
+
18
+ const defaultOptions = {};
19
+
20
+ export type KendoImageEditorPaneState = { [K in (typeof states)[number]]?: boolean };
21
+
22
+ export const ImageEditorPane = (
23
+ props: KendoImageEditorPaneProps & KendoImageEditorPaneState & React.HTMLAttributes<HTMLDivElement>
24
+ ) => {
25
+ const {
26
+ title,
27
+ actions,
28
+ adaptive,
29
+ children,
30
+ ...other
31
+ } = props;
32
+
33
+ return (
34
+ <div
35
+ {...other}
36
+ className={classNames(
37
+ props.className,
38
+ IMAGEEDITORPANE_CLASSNAME
39
+ )}
40
+ >
41
+ <div className="k-imageeditor-pane-header">
42
+ {adaptive && <Button fillMode="flat" icon="x" aria-label="Close" title="Close"></Button>}
43
+ <div className="k-imageeditor-pane-title">{title}</div>
44
+ {adaptive
45
+ ? <Button fillMode="flat" icon="check" aria-label="Confirm" title="Confirm"></Button>
46
+ : <Button fillMode="flat" icon="x" aria-label="Close" title="Close"></Button>
47
+ }
48
+ </div>
49
+
50
+ <div className="k-imageeditor-pane-content">
51
+ {children}
52
+ </div>
53
+
54
+ {!adaptive && actions &&
55
+ <ActionButtons alignment="end" className="k-imageeditor-pane-footer">
56
+ {actions}
57
+ </ActionButtons>
58
+ }
59
+ </div>
60
+ );
61
+ };
62
+
63
+ ImageEditorPane.states = states;
64
+ ImageEditorPane.options = options;
65
+ ImageEditorPane.className = IMAGEEDITORPANE_CLASSNAME;
66
+ ImageEditorPane.moduleName = null;
67
+ ImageEditorPane.folderName = null;
68
+ ImageEditorPane.defaultOptions = defaultOptions;
69
+
70
+ export default ImageEditorPane;
@@ -0,0 +1,51 @@
1
+ import { classNames } from '../misc';
2
+ import { Icon } from '../icon';
3
+
4
+ export const IMAGEEDITORPLACEHOLDER_CLASSNAME = `k-imageeditor-placeholder`;
5
+
6
+ export type KendoImageEditorPlaceholderProps = {
7
+ icon?: string;
8
+ title?: string;
9
+ text?: string;
10
+ };
11
+
12
+ export const ImageEditorPlaceholder = (
13
+ props: KendoImageEditorPlaceholderProps &
14
+ React.HTMLAttributes<HTMLDivElement>
15
+ ) => {
16
+ const {
17
+ icon,
18
+ title,
19
+ text,
20
+ children,
21
+ ...other
22
+ } = props;
23
+
24
+ return (
25
+ <div
26
+ {...other}
27
+ className={classNames(
28
+ props.className,
29
+ IMAGEEDITORPLACEHOLDER_CLASSNAME
30
+ )}
31
+ >
32
+ {children ?? (
33
+ <>
34
+ {icon &&
35
+ <Icon
36
+ icon={icon}
37
+ size="xxxlarge"
38
+ className={`${IMAGEEDITORPLACEHOLDER_CLASSNAME}-icon`}
39
+ />
40
+ }
41
+ {(title || text) &&
42
+ <div className={`${IMAGEEDITORPLACEHOLDER_CLASSNAME}-hint`}>
43
+ {title && <div className={`${IMAGEEDITORPLACEHOLDER_CLASSNAME}-title`}>{title}</div>}
44
+ {text && <div className={`${IMAGEEDITORPLACEHOLDER_CLASSNAME}-text`}>{text}</div>}
45
+ </div>
46
+ }
47
+ </>
48
+ )}
49
+ </div>
50
+ );
51
+ };
@@ -0,0 +1,42 @@
1
+ export type ImageEditorPreviewThumbnailProps = {
2
+ label?: string;
3
+ style?: React.CSSProperties;
4
+ children?: React.ReactNode;
5
+ };
6
+
7
+ const defaultOptions = {};
8
+
9
+ // Generic thumbnail + caption pair used inside preview cards (aspect ratio, filters, frame style, ...);
10
+ // not tied to any particular preview card component so it can be reused wherever a small image preview is needed.
11
+ export const ImageEditorPreviewThumbnail = (props: ImageEditorPreviewThumbnailProps) => {
12
+ const { label, style, children } = props;
13
+
14
+ return (
15
+ <>
16
+ <span
17
+ aria-hidden="true"
18
+ style={{
19
+ position: "relative",
20
+ display: "block",
21
+ width: "100%",
22
+ height: "40px",
23
+ borderRadius: "2px",
24
+ backgroundImage: "url('/packages/html/assets/sofia.jpg')",
25
+ backgroundSize: "cover",
26
+ boxSizing: "border-box",
27
+ ...style
28
+ }}
29
+ >
30
+ {children}
31
+ </span>
32
+ {label && <span className="k-imageeditor-preview-thumbnail-label">{label}</span>}
33
+ </>
34
+ );
35
+
36
+ };
37
+
38
+ ImageEditorPreviewThumbnail.moduleName = null;
39
+ ImageEditorPreviewThumbnail.folderName = null;
40
+ ImageEditorPreviewThumbnail.defaultOptions = defaultOptions;
41
+
42
+ export default ImageEditorPreviewThumbnail;
@@ -0,0 +1,37 @@
1
+ export type ImageEditorResizeHandlesVariant = 'crop' | 'mixed' | 'scale';
2
+
3
+ export type ImageEditorResizeHandlesProps = {
4
+ variant?: ImageEditorResizeHandlesVariant;
5
+ grid?: boolean;
6
+ };
7
+
8
+ const defaultOptions = {
9
+ variant: 'crop' as ImageEditorResizeHandlesVariant
10
+ };
11
+
12
+ // Shared corner+edge handle markup for Crop/Resize/Rotate/Insert-Text/Insert-Shape; variant picks which class (k-resize-handle vs k-scale-handle) each position renders.
13
+ export const ImageEditorResizeHandles = (props: ImageEditorResizeHandlesProps) => {
14
+ const { variant = defaultOptions.variant, grid } = props;
15
+ const cornerClassName = variant === 'crop' ? 'k-resize-handle' : 'k-scale-handle';
16
+ const edgeClassName = variant === 'scale' ? 'k-scale-handle' : 'k-resize-handle';
17
+
18
+ return (
19
+ <>
20
+ {grid && <div className="k-imageeditor-crop-grid"></div>}
21
+ <span className={`${cornerClassName} k-resize-nw`}></span>
22
+ <span className={`${cornerClassName} k-resize-ne`}></span>
23
+ <span className={`${cornerClassName} k-resize-sw`}></span>
24
+ <span className={`${cornerClassName} k-resize-se`}></span>
25
+ <span className={`${edgeClassName} k-resize-n`}></span>
26
+ <span className={`${edgeClassName} k-resize-s`}></span>
27
+ <span className={`${edgeClassName} k-resize-w`}></span>
28
+ <span className={`${edgeClassName} k-resize-e`}></span>
29
+ </>
30
+ );
31
+ };
32
+
33
+ ImageEditorResizeHandles.moduleName = null;
34
+ ImageEditorResizeHandles.folderName = null;
35
+ ImageEditorResizeHandles.defaultOptions = defaultOptions;
36
+
37
+ export default ImageEditorResizeHandles;
@@ -0,0 +1,66 @@
1
+ import { classNames } from '../misc';
2
+ import { Button } from '../button/button.spec';
3
+
4
+ export const IMAGEEDITORSIDEBAR_CLASSNAME = `k-imageeditor-sidebar`;
5
+
6
+ export type KendoImageEditorSidebarProps = {
7
+ sidebarItems?: React.JSX.Element | React.JSX.Element[];
8
+ scrollable?: boolean;
9
+ scrollingPosition?: 'start' | 'end' | 'both';
10
+ };
11
+
12
+ const defaultSidebarItems = [
13
+ <Button fillMode="flat" key="sidebar-button-1" icon="image-resize" aria-label="Resize" />,
14
+ <Button fillMode="flat" key="sidebar-button-2" icon="crop" aria-label="Crop" />,
15
+ <Button fillMode="flat" key="sidebar-button-3" icon="rotate" aria-label="Rotate" />,
16
+ <div className="k-separator" key="sidebar-separator-1" />,
17
+ <Button fillMode="flat" key="sidebar-button-4" icon="free-text" aria-label="Text" />,
18
+ <Button fillMode="flat" key="sidebar-button-5" icon="shapes" aria-label="Shapes" />,
19
+ <div className="k-separator" key="sidebar-separator-2" />,
20
+ <Button fillMode="flat" key="sidebar-button-6" icon="drop-half-pixelated" aria-label="Blur" />,
21
+ <Button fillMode="flat" key="sidebar-button-7" icon="sliders-horizontal" aria-label="Adjustments" />,
22
+ <Button fillMode="flat" key="sidebar-button-8" icon="circles-three-intersecting" aria-label="Filters" />,
23
+ <div className="k-separator" key="sidebar-separator-3" />,
24
+ <Button fillMode="flat" key="sidebar-button-9" icon="frame-corners" aria-label="Frame" />,
25
+ <Button fillMode="flat" key="sidebar-button-10" icon="circle-half-tilted" aria-label="Shadow" />
26
+ ];
27
+
28
+ const defaultOptions = {
29
+ sidebarItems: defaultSidebarItems,
30
+ scrollable: false,
31
+ scrollingPosition: 'start' as const,
32
+ };
33
+
34
+ /**
35
+ * @aria {role="toolbar"} The component role, grouping the tool selection buttons.
36
+ * @aria {aria-label="Tools"} Distinguishes the sidebar toolbar from the header toolbar.
37
+ */
38
+ export const ImageEditorSidebar = (
39
+ props: KendoImageEditorSidebarProps &
40
+ React.HTMLAttributes<HTMLDivElement>
41
+ ) => {
42
+ const {
43
+ sidebarItems = defaultOptions.sidebarItems,
44
+ scrollable = defaultOptions.scrollable,
45
+ scrollingPosition = defaultOptions.scrollingPosition,
46
+ ...other
47
+ } = props;
48
+
49
+ return (
50
+ <div
51
+ {...other}
52
+ className={classNames(
53
+ props.className,
54
+ IMAGEEDITORSIDEBAR_CLASSNAME,
55
+ {
56
+ [`${IMAGEEDITORSIDEBAR_CLASSNAME}-scrollable`]: scrollable,
57
+ [`${IMAGEEDITORSIDEBAR_CLASSNAME}-scrollable-${scrollingPosition}`]: scrollable,
58
+ }
59
+ )}
60
+ >
61
+ <div className="k-imageeditor-sidebar-items" role="toolbar" aria-label="Tools">
62
+ {sidebarItems ?? props.children}
63
+ </div>
64
+ </div>
65
+ );
66
+ };