@progress/kendo-themes-html 14.7.0-dev.14 → 14.7.0-dev.16

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 (152) hide show
  1. package/dist/cjs/imageeditor/imageeditor-canvas.spec.js +1 -0
  2. package/dist/cjs/imageeditor/imageeditor-option-list.js +1 -1
  3. package/dist/cjs/imageeditor/imageeditor-pane.js +1 -1
  4. package/dist/cjs/imageeditor/imageeditor-preview-thumbnail.js +1 -1
  5. package/dist/cjs/imageeditor/imageeditor-sidebar.js +1 -1
  6. package/dist/cjs/imageeditor/imageeditor-toolbar.js +1 -1
  7. package/dist/cjs/imageeditor/imageeditor.spec.js +1 -1
  8. package/dist/cjs/imageeditor/templates/imageeditor-adjustments-adaptive.js +1 -0
  9. package/dist/cjs/imageeditor/templates/imageeditor-adjustments.js +1 -1
  10. package/dist/cjs/imageeditor/templates/imageeditor-blur-adaptive.js +1 -0
  11. package/dist/cjs/imageeditor/templates/imageeditor-blur.js +1 -1
  12. package/dist/cjs/imageeditor/templates/imageeditor-crop-adaptive.js +1 -0
  13. package/dist/cjs/imageeditor/templates/imageeditor-crop.js +1 -1
  14. package/dist/cjs/imageeditor/templates/imageeditor-filters-adaptive.js +1 -0
  15. package/dist/cjs/imageeditor/templates/imageeditor-filters.js +1 -1
  16. package/dist/cjs/imageeditor/templates/imageeditor-frames-adaptive.js +1 -0
  17. package/dist/cjs/imageeditor/templates/imageeditor-frames.js +1 -1
  18. package/dist/cjs/imageeditor/templates/imageeditor-insert-line-adaptive.js +1 -0
  19. package/dist/cjs/imageeditor/templates/imageeditor-insert-line.js +1 -1
  20. package/dist/cjs/imageeditor/templates/imageeditor-insert-shape-adaptive.js +1 -0
  21. package/dist/cjs/imageeditor/templates/imageeditor-insert-shape.js +1 -1
  22. package/dist/cjs/imageeditor/templates/imageeditor-insert-text-adaptive.js +1 -0
  23. package/dist/cjs/imageeditor/templates/imageeditor-insert-text.js +1 -1
  24. package/dist/cjs/imageeditor/templates/imageeditor-normal.js +1 -1
  25. package/dist/cjs/imageeditor/templates/imageeditor-pixelate-adaptive.js +1 -0
  26. package/dist/cjs/imageeditor/templates/imageeditor-pixelate.js +1 -1
  27. package/dist/cjs/imageeditor/templates/imageeditor-resize-adaptive.js +1 -0
  28. package/dist/cjs/imageeditor/templates/imageeditor-resize.js +1 -1
  29. package/dist/cjs/imageeditor/templates/imageeditor-rotate-adaptive.js +1 -0
  30. package/dist/cjs/imageeditor/templates/imageeditor-rotate.js +1 -1
  31. package/dist/cjs/imageeditor/templates/imageeditor-shadow-adaptive.js +1 -0
  32. package/dist/cjs/imageeditor/templates/imageeditor-shadow.js +1 -1
  33. package/dist/cjs/index.js +8 -8
  34. package/dist/esm/imageeditor/imageeditor-canvas.spec.mjs +1 -0
  35. package/dist/esm/imageeditor/imageeditor-option-list.mjs +1 -1
  36. package/dist/esm/imageeditor/imageeditor-pane.mjs +1 -1
  37. package/dist/esm/imageeditor/imageeditor-preview-thumbnail.mjs +1 -1
  38. package/dist/esm/imageeditor/imageeditor-sidebar.mjs +1 -1
  39. package/dist/esm/imageeditor/imageeditor-toolbar.mjs +1 -1
  40. package/dist/esm/imageeditor/imageeditor.spec.mjs +1 -1
  41. package/dist/esm/imageeditor/templates/imageeditor-adjustments-adaptive.mjs +1 -0
  42. package/dist/esm/imageeditor/templates/imageeditor-adjustments.mjs +1 -1
  43. package/dist/esm/imageeditor/templates/imageeditor-blur-adaptive.mjs +1 -0
  44. package/dist/esm/imageeditor/templates/imageeditor-blur.mjs +1 -1
  45. package/dist/esm/imageeditor/templates/imageeditor-crop-adaptive.mjs +1 -0
  46. package/dist/esm/imageeditor/templates/imageeditor-crop.mjs +1 -1
  47. package/dist/esm/imageeditor/templates/imageeditor-filters-adaptive.mjs +1 -0
  48. package/dist/esm/imageeditor/templates/imageeditor-filters.mjs +1 -1
  49. package/dist/esm/imageeditor/templates/imageeditor-frames-adaptive.mjs +1 -0
  50. package/dist/esm/imageeditor/templates/imageeditor-frames.mjs +1 -1
  51. package/dist/esm/imageeditor/templates/imageeditor-insert-line-adaptive.mjs +1 -0
  52. package/dist/esm/imageeditor/templates/imageeditor-insert-line.mjs +1 -1
  53. package/dist/esm/imageeditor/templates/imageeditor-insert-shape-adaptive.mjs +1 -0
  54. package/dist/esm/imageeditor/templates/imageeditor-insert-shape.mjs +1 -1
  55. package/dist/esm/imageeditor/templates/imageeditor-insert-text-adaptive.mjs +1 -0
  56. package/dist/esm/imageeditor/templates/imageeditor-insert-text.mjs +1 -1
  57. package/dist/esm/imageeditor/templates/imageeditor-normal.mjs +1 -1
  58. package/dist/esm/imageeditor/templates/imageeditor-pixelate-adaptive.mjs +1 -0
  59. package/dist/esm/imageeditor/templates/imageeditor-pixelate.mjs +1 -1
  60. package/dist/esm/imageeditor/templates/imageeditor-resize-adaptive.mjs +1 -0
  61. package/dist/esm/imageeditor/templates/imageeditor-resize.mjs +1 -1
  62. package/dist/esm/imageeditor/templates/imageeditor-rotate-adaptive.mjs +1 -0
  63. package/dist/esm/imageeditor/templates/imageeditor-rotate.mjs +1 -1
  64. package/dist/esm/imageeditor/templates/imageeditor-shadow-adaptive.mjs +1 -0
  65. package/dist/esm/imageeditor/templates/imageeditor-shadow.mjs +1 -1
  66. package/dist/esm/index.mjs +8 -8
  67. package/dist/types/imageeditor/constants.d.ts +9 -0
  68. package/dist/types/imageeditor/imageeditor-canvas.spec.d.ts +15 -0
  69. package/dist/types/imageeditor/imageeditor-option-list.d.ts +1 -0
  70. package/dist/types/imageeditor/imageeditor-pane.d.ts +2 -0
  71. package/dist/types/imageeditor/imageeditor-preview-thumbnail.d.ts +1 -0
  72. package/dist/types/imageeditor/imageeditor-sidebar.d.ts +8 -0
  73. package/dist/types/imageeditor/imageeditor-toolbar.d.ts +5 -4
  74. package/dist/types/imageeditor/imageeditor.spec.d.ts +7 -3
  75. package/dist/types/imageeditor/index.d.ts +13 -1
  76. package/dist/types/imageeditor/templates/imageeditor-adjustments-adaptive.d.ts +1 -0
  77. package/dist/types/imageeditor/templates/imageeditor-adjustments.d.ts +1 -1
  78. package/dist/types/imageeditor/templates/imageeditor-blur-adaptive.d.ts +1 -0
  79. package/dist/types/imageeditor/templates/imageeditor-blur.d.ts +1 -1
  80. package/dist/types/imageeditor/templates/imageeditor-crop-adaptive.d.ts +1 -0
  81. package/dist/types/imageeditor/templates/imageeditor-crop.d.ts +1 -1
  82. package/dist/types/imageeditor/templates/imageeditor-filters-adaptive.d.ts +1 -0
  83. package/dist/types/imageeditor/templates/imageeditor-filters.d.ts +1 -6
  84. package/dist/types/imageeditor/templates/imageeditor-frames-adaptive.d.ts +1 -0
  85. package/dist/types/imageeditor/templates/imageeditor-frames.d.ts +1 -1
  86. package/dist/types/imageeditor/templates/imageeditor-insert-line-adaptive.d.ts +1 -0
  87. package/dist/types/imageeditor/templates/imageeditor-insert-line.d.ts +1 -1
  88. package/dist/types/imageeditor/templates/imageeditor-insert-shape-adaptive.d.ts +1 -0
  89. package/dist/types/imageeditor/templates/imageeditor-insert-shape.d.ts +1 -1
  90. package/dist/types/imageeditor/templates/imageeditor-insert-text-adaptive.d.ts +1 -0
  91. package/dist/types/imageeditor/templates/imageeditor-insert-text.d.ts +1 -1
  92. package/dist/types/imageeditor/templates/imageeditor-pixelate-adaptive.d.ts +1 -0
  93. package/dist/types/imageeditor/templates/imageeditor-pixelate.d.ts +1 -1
  94. package/dist/types/imageeditor/templates/imageeditor-resize-adaptive.d.ts +1 -0
  95. package/dist/types/imageeditor/templates/imageeditor-resize.d.ts +1 -1
  96. package/dist/types/imageeditor/templates/imageeditor-rotate-adaptive.d.ts +1 -0
  97. package/dist/types/imageeditor/templates/imageeditor-rotate.d.ts +1 -1
  98. package/dist/types/imageeditor/templates/imageeditor-shadow-adaptive.d.ts +1 -0
  99. package/dist/types/imageeditor/templates/imageeditor-shadow.d.ts +1 -1
  100. package/package.json +1 -1
  101. package/src/imageeditor/constants.ts +4 -0
  102. package/src/imageeditor/imageeditor-canvas.spec.tsx +30 -0
  103. package/src/imageeditor/imageeditor-option-list.tsx +2 -1
  104. package/src/imageeditor/imageeditor-pane.tsx +4 -1
  105. package/src/imageeditor/imageeditor-preview-thumbnail.tsx +3 -2
  106. package/src/imageeditor/imageeditor-sidebar.tsx +32 -19
  107. package/src/imageeditor/imageeditor-toolbar.tsx +27 -21
  108. package/src/imageeditor/imageeditor.spec.tsx +14 -6
  109. package/src/imageeditor/index.ts +13 -1
  110. package/src/imageeditor/templates/imageeditor-adjustments-adaptive.tsx +3 -0
  111. package/src/imageeditor/templates/imageeditor-adjustments.tsx +80 -57
  112. package/src/imageeditor/templates/imageeditor-blur-adaptive.tsx +3 -0
  113. package/src/imageeditor/templates/imageeditor-blur.tsx +9 -25
  114. package/src/imageeditor/templates/imageeditor-crop-adaptive.tsx +3 -0
  115. package/src/imageeditor/templates/imageeditor-crop.tsx +22 -28
  116. package/src/imageeditor/templates/imageeditor-filters-adaptive.tsx +3 -0
  117. package/src/imageeditor/templates/imageeditor-filters.tsx +32 -52
  118. package/src/imageeditor/templates/imageeditor-frames-adaptive.tsx +3 -0
  119. package/src/imageeditor/templates/imageeditor-frames.tsx +123 -149
  120. package/src/imageeditor/templates/imageeditor-insert-line-adaptive.tsx +3 -0
  121. package/src/imageeditor/templates/imageeditor-insert-line.tsx +24 -25
  122. package/src/imageeditor/templates/imageeditor-insert-shape-adaptive.tsx +3 -0
  123. package/src/imageeditor/templates/imageeditor-insert-shape.tsx +93 -50
  124. package/src/imageeditor/templates/imageeditor-insert-text-adaptive.tsx +3 -0
  125. package/src/imageeditor/templates/imageeditor-insert-text.tsx +24 -25
  126. package/src/imageeditor/templates/imageeditor-normal.tsx +2 -23
  127. package/src/imageeditor/templates/imageeditor-pixelate-adaptive.tsx +3 -0
  128. package/src/imageeditor/templates/imageeditor-pixelate.tsx +9 -24
  129. package/src/imageeditor/templates/imageeditor-resize-adaptive.tsx +3 -0
  130. package/src/imageeditor/templates/imageeditor-resize.tsx +10 -25
  131. package/src/imageeditor/templates/imageeditor-rotate-adaptive.tsx +3 -0
  132. package/src/imageeditor/templates/imageeditor-rotate.tsx +8 -23
  133. package/src/imageeditor/templates/imageeditor-shadow-adaptive.tsx +3 -0
  134. package/src/imageeditor/templates/imageeditor-shadow.tsx +20 -42
  135. package/src/imageeditor/tests/imageeditor-adaptive-panes.tsx +85 -0
  136. package/src/imageeditor/tests/imageeditor-adaptive-small.tsx +10 -305
  137. package/src/imageeditor/tests/imageeditor-adjustments-pane.tsx +2 -1
  138. package/src/imageeditor/tests/imageeditor-blur-pane.tsx +2 -1
  139. package/src/imageeditor/tests/imageeditor-crop-pane.tsx +2 -1
  140. package/src/imageeditor/tests/imageeditor-filters-pane.tsx +2 -1
  141. package/src/imageeditor/tests/imageeditor-frames-pane.tsx +4 -3
  142. package/src/imageeditor/tests/imageeditor-insert-shape-pane.tsx +1 -1
  143. package/src/imageeditor/tests/imageeditor-interactive-states.tsx +6 -6
  144. package/src/imageeditor/tests/imageeditor-pixelate-pane.tsx +2 -1
  145. package/src/imageeditor/tests/imageeditor-resize-pane.tsx +2 -1
  146. package/src/imageeditor/tests/imageeditor-responsive.tsx +4 -4
  147. package/src/imageeditor/tests/imageeditor-rotate-pane.tsx +2 -1
  148. package/src/imageeditor/tests/imageeditor-shadow-pane.tsx +2 -1
  149. package/dist/cjs/imageeditor/templates/imageeditor-disabled.js +0 -1
  150. package/dist/esm/imageeditor/templates/imageeditor-disabled.mjs +0 -1
  151. package/dist/types/imageeditor/templates/imageeditor-disabled.d.ts +0 -1
  152. package/src/imageeditor/templates/imageeditor-disabled.tsx +0 -54
@@ -6,13 +6,13 @@ export * from './imageeditor-pane';
6
6
  export * from './imageeditor-option-preview';
7
7
  export * from './imageeditor-option-list';
8
8
  export * from './imageeditor-preview-thumbnail';
9
+ export * from './imageeditor-canvas.spec';
9
10
  export * from './imageeditor-resize-handles';
10
11
  export * from './imageeditor-rotate-handle';
11
12
  export * from './templates/imageeditor-normal';
12
13
  export * from './templates/imageeditor-resize';
13
14
  export * from './templates/imageeditor-rotate';
14
15
  export * from './templates/imageeditor-crop';
15
- export * from './templates/imageeditor-disabled';
16
16
  export * from './templates/imageeditor-insert-text';
17
17
  export * from './templates/imageeditor-insert-shape';
18
18
  export * from './templates/imageeditor-insert-line';
@@ -22,4 +22,16 @@ export * from './templates/imageeditor-filters';
22
22
  export * from './templates/imageeditor-adjustments';
23
23
  export * from './templates/imageeditor-frames';
24
24
  export * from './templates/imageeditor-shadow';
25
+ export * from './templates/imageeditor-resize-adaptive';
26
+ export * from './templates/imageeditor-crop-adaptive';
27
+ export * from './templates/imageeditor-rotate-adaptive';
28
+ export * from './templates/imageeditor-insert-text-adaptive';
29
+ export * from './templates/imageeditor-insert-shape-adaptive';
30
+ export * from './templates/imageeditor-insert-line-adaptive';
31
+ export * from './templates/imageeditor-blur-adaptive';
32
+ export * from './templates/imageeditor-pixelate-adaptive';
33
+ export * from './templates/imageeditor-adjustments-adaptive';
34
+ export * from './templates/imageeditor-filters-adaptive';
35
+ export * from './templates/imageeditor-frames-adaptive';
36
+ export * from './templates/imageeditor-shadow-adaptive';
25
37
 
@@ -0,0 +1,3 @@
1
+ import { ImageEditorAdjustments } from "./imageeditor-adjustments";
2
+
3
+ export const ImageEditorAdjustmentsAdaptive = (props: any) => <ImageEditorAdjustments adaptive {...props} />;
@@ -1,53 +1,9 @@
1
- import { ImageEditor, ImageEditorPane } from "..";
1
+ import { ImageEditor, ImageEditorPane, ImageEditorCanvas } from "..";
2
2
  import { Button } from "../../button";
3
3
  import { NumericTextbox } from "../../numerictextbox";
4
4
  import { Form, FormField } from "../../form";
5
5
  import { Slider } from "../../slider";
6
6
 
7
- const adjustmentsSidebarItems = [
8
- <Button fillMode="flat" key="sidebar-button-1" icon="image-resize" aria-label="Resize"></Button>,
9
- <Button fillMode="flat" key="sidebar-button-2" icon="crop" aria-label="Crop"></Button>,
10
- <Button fillMode="flat" key="sidebar-button-3" icon="rotate" aria-label="Rotate"></Button>,
11
- <div className="k-separator" key="sidebar-separator-1"></div>,
12
- <Button fillMode="flat" key="sidebar-button-4" icon="free-text" aria-label="Text"></Button>,
13
- <Button fillMode="flat" key="sidebar-button-5" icon="shapes" aria-label="Shapes"></Button>,
14
- <div className="k-separator" key="sidebar-separator-2"></div>,
15
- <Button fillMode="flat" key="sidebar-button-6" icon="drop-half-pixelated" aria-label="Blur"></Button>,
16
- <Button fillMode="flat" key="sidebar-button-7" icon="sliders-horizontal" selected aria-label="Adjustments"></Button>,
17
- <Button fillMode="flat" key="sidebar-button-8" icon="circles-three-intersecting" aria-label="Filters"></Button>,
18
- <div className="k-separator" key="sidebar-separator-3"></div>,
19
- <Button fillMode="flat" key="sidebar-button-9" icon="frame-corners" aria-label="Frame"></Button>,
20
- <Button fillMode="flat" key="sidebar-button-10" icon="circle-half-tilted" aria-label="Shadow"></Button>
21
- ];
22
-
23
- const AdjustmentSlider = ({ id, label, value, min = 0, max = 100 }: { id: string; label: string; value: number; min?: number; max?: number }) => (
24
- <FormField
25
- label={label}
26
- editorId={id}
27
- editor={
28
- <div className="k-imageeditor-adjustment-editor">
29
- <Slider
30
- className="k-imageeditor-adjustment-slider"
31
- aria-label={label}
32
- showButtons={false}
33
- showTicks={false}
34
- value={value}
35
- min={min}
36
- max={max}
37
- style={{ "--kendo-slider-start": 0, "--kendo-slider-end": (value - min) / (max - min) * 100 } as React.CSSProperties}
38
- />
39
- <NumericTextbox
40
- id={id}
41
- style={{ width: "80px", flex: "none" }}
42
- showClearButton={false}
43
- showSpinButton={false}
44
- value={String(value)}
45
- />
46
- </div>
47
- }
48
- />
49
- );
50
-
51
7
  export const ImageEditorAdjustments = ({
52
8
  brightness = 0,
53
9
  contrast = 0,
@@ -56,32 +12,99 @@ export const ImageEditorAdjustments = ({
56
12
  exposure = 0,
57
13
  blur = 0,
58
14
  opacity = 100,
15
+ isPristine = brightness === 0 && contrast === 0 && saturation === 0 && hue === 0 && exposure === 0 && blur === 0 && opacity === 100,
16
+ adaptive,
17
+ imageSrc,
59
18
  ...props
60
19
  }: any) => (
61
20
  <ImageEditor
62
- sidebarItems={adjustmentsSidebarItems}
21
+ adaptive={adaptive}
22
+ activeTool="Adjustments"
63
23
  actionPane={
64
- <ImageEditorPane title="Adjustments" actions={
24
+ <ImageEditorPane title="Adjustments" adaptive={adaptive} confirmDisabled={isPristine} actions={
65
25
  <>
66
- <Button>Reset</Button>
67
- <Button themeColor="primary">Apply</Button>
26
+ <Button disabled={isPristine}>Reset</Button>
27
+ <Button themeColor="primary" disabled={isPristine}>Apply</Button>
68
28
  </>
69
29
  }>
70
30
  <Form tag="div">
71
- <AdjustmentSlider id="adjustments-brightness" label="Brightness" value={brightness} min={-100} max={100} />
72
- <AdjustmentSlider id="adjustments-contrast" label="Contrast" value={contrast} min={-100} max={100} />
73
- <AdjustmentSlider id="adjustments-saturation" label="Saturation" value={saturation} min={-100} max={100} />
74
- <AdjustmentSlider id="adjustments-hue" label="Hue" value={hue} min={-100} max={100} />
75
- <AdjustmentSlider id="adjustments-exposure" label="Exposure" value={exposure} min={-100} max={100} />
76
- <AdjustmentSlider id="adjustments-blur" label="Blur" value={blur} />
77
- <AdjustmentSlider id="adjustments-opacity" label="Opacity" value={opacity} />
31
+ <FormField
32
+ label="Brightness"
33
+ editorId="adjustments-brightness"
34
+ editor={
35
+ <div className="k-imageeditor-adjustment-editor">
36
+ <Slider className="k-imageeditor-adjustment-slider" aria-label="Brightness" showButtons={false} showTicks={false} value={brightness} min={-100} max={100} style={{ "--kendo-slider-start": 0, "--kendo-slider-end": (brightness + 100) / 2 } as React.CSSProperties} />
37
+ <NumericTextbox id="adjustments-brightness" style={{ width: "80px", flex: "none" }} showClearButton={false} showSpinButton={false} value={String(brightness)} />
38
+ </div>
39
+ }
40
+ />
41
+ <FormField
42
+ label="Contrast"
43
+ editorId="adjustments-contrast"
44
+ editor={
45
+ <div className="k-imageeditor-adjustment-editor">
46
+ <Slider className="k-imageeditor-adjustment-slider" aria-label="Contrast" showButtons={false} showTicks={false} value={contrast} min={-100} max={100} style={{ "--kendo-slider-start": 0, "--kendo-slider-end": (contrast + 100) / 2 } as React.CSSProperties} />
47
+ <NumericTextbox id="adjustments-contrast" style={{ width: "80px", flex: "none" }} showClearButton={false} showSpinButton={false} value={String(contrast)} />
48
+ </div>
49
+ }
50
+ />
51
+ <FormField
52
+ label="Saturation"
53
+ editorId="adjustments-saturation"
54
+ editor={
55
+ <div className="k-imageeditor-adjustment-editor">
56
+ <Slider className="k-imageeditor-adjustment-slider" aria-label="Saturation" showButtons={false} showTicks={false} value={saturation} min={-100} max={100} style={{ "--kendo-slider-start": 0, "--kendo-slider-end": (saturation + 100) / 2 } as React.CSSProperties} />
57
+ <NumericTextbox id="adjustments-saturation" style={{ width: "80px", flex: "none" }} showClearButton={false} showSpinButton={false} value={String(saturation)} />
58
+ </div>
59
+ }
60
+ />
61
+ <FormField
62
+ label="Hue"
63
+ editorId="adjustments-hue"
64
+ editor={
65
+ <div className="k-imageeditor-adjustment-editor">
66
+ <Slider className="k-imageeditor-adjustment-slider" aria-label="Hue" showButtons={false} showTicks={false} value={hue} min={-100} max={100} style={{ "--kendo-slider-start": 0, "--kendo-slider-end": (hue + 100) / 2 } as React.CSSProperties} />
67
+ <NumericTextbox id="adjustments-hue" style={{ width: "80px", flex: "none" }} showClearButton={false} showSpinButton={false} value={String(hue)} />
68
+ </div>
69
+ }
70
+ />
71
+ <FormField
72
+ label="Exposure"
73
+ editorId="adjustments-exposure"
74
+ editor={
75
+ <div className="k-imageeditor-adjustment-editor">
76
+ <Slider className="k-imageeditor-adjustment-slider" aria-label="Exposure" showButtons={false} showTicks={false} value={exposure} min={-100} max={100} style={{ "--kendo-slider-start": 0, "--kendo-slider-end": (exposure + 100) / 2 } as React.CSSProperties} />
77
+ <NumericTextbox id="adjustments-exposure" style={{ width: "80px", flex: "none" }} showClearButton={false} showSpinButton={false} value={String(exposure)} />
78
+ </div>
79
+ }
80
+ />
81
+ <FormField
82
+ label="Blur"
83
+ editorId="adjustments-blur"
84
+ editor={
85
+ <div className="k-imageeditor-adjustment-editor">
86
+ <Slider className="k-imageeditor-adjustment-slider" aria-label="Blur" showButtons={false} showTicks={false} value={blur} min={0} max={100} style={{ "--kendo-slider-start": 0, "--kendo-slider-end": blur } as React.CSSProperties} />
87
+ <NumericTextbox id="adjustments-blur" style={{ width: "80px", flex: "none" }} showClearButton={false} showSpinButton={false} value={String(blur)} />
88
+ </div>
89
+ }
90
+ />
91
+ <FormField
92
+ label="Opacity"
93
+ editorId="adjustments-opacity"
94
+ editor={
95
+ <div className="k-imageeditor-adjustment-editor">
96
+ <Slider className="k-imageeditor-adjustment-slider" aria-label="Opacity" showButtons={false} showTicks={false} value={opacity} min={0} max={100} style={{ "--kendo-slider-start": 0, "--kendo-slider-end": opacity } as React.CSSProperties} />
97
+ <NumericTextbox id="adjustments-opacity" style={{ width: "80px", flex: "none" }} showClearButton={false} showSpinButton={false} value={String(opacity)} />
98
+ </div>
99
+ }
100
+ />
78
101
  </Form>
79
102
  </ImageEditorPane>
80
103
  }
81
104
 
82
105
  children={
83
106
  <>
84
- <canvas width="494" height="307" role="img" aria-label="Image being edited" style={{ backgroundImage: "url('/packages/html/assets/sofia.jpg')", backgroundSize: "cover" }}></canvas>
107
+ <ImageEditorCanvas adaptive={adaptive} imageSrc={imageSrc} />
85
108
  </>
86
109
  }
87
110
  {...props} />
@@ -0,0 +1,3 @@
1
+ import { ImageEditorBlur } from "./imageeditor-blur";
2
+
3
+ export const ImageEditorBlurAdaptive = (props: any) => <ImageEditorBlur adaptive {...props} />;
@@ -1,4 +1,4 @@
1
- import { ImageEditor, ImageEditorPane } from "..";
1
+ import { ImageEditor, ImageEditorPane, ImageEditorCanvas } from "..";
2
2
  import { Button } from "../../button";
3
3
  import { NumericTextbox } from "../../numerictextbox";
4
4
  import { Form, FormField } from "../../form";
@@ -7,34 +7,18 @@ import { SegmentedControl, SegmentedControlButton } from "../../segmented-contro
7
7
  import { Slider } from "../../slider";
8
8
  import { InputSuffixText } from "../../input";
9
9
 
10
-
11
- const blurSidebarItems = [
12
- <Button fillMode="flat" key="sidebar-button-1" icon="image-resize" aria-label="Resize"></Button>,
13
- <Button fillMode="flat" key="sidebar-button-2" icon="crop" aria-label="Crop"></Button>,
14
- <Button fillMode="flat" key="sidebar-button-3" icon="rotate" aria-label="Rotate"></Button>,
15
- <div className="k-separator" key="sidebar-separator-1"></div>,
16
- <Button fillMode="flat" key="sidebar-button-4" icon="free-text" aria-label="Text"></Button>,
17
- <Button fillMode="flat" key="sidebar-button-5" icon="shapes" aria-label="Shapes"></Button>,
18
- <div className="k-separator" key="sidebar-separator-2"></div>,
19
- <Button fillMode="flat" key="sidebar-button-6" icon="drop-half-pixelated" selected aria-label="Blur"></Button>,
20
- <Button fillMode="flat" key="sidebar-button-7" icon="sliders-horizontal" aria-label="Adjustments"></Button>,
21
- <Button fillMode="flat" key="sidebar-button-8" icon="circles-three-intersecting" aria-label="Filters"></Button>,
22
- <div className="k-separator" key="sidebar-separator-3"></div>,
23
- <Button fillMode="flat" key="sidebar-button-9" icon="frame-corners" aria-label="Frame"></Button>,
24
- <Button fillMode="flat" key="sidebar-button-10" icon="circle-half-tilted" aria-label="Shadow"></Button>
25
- ];
26
-
27
- export const ImageEditorBlur = ({ selected = false, shape = "rectangular", intensity = 16, ...props }: any) => (
10
+ export const ImageEditorBlur = ({ selected = false, shape = "rectangular", intensity = 0, adaptive, imageSrc, ...props }: any) => (
28
11
  <ImageEditor
29
- sidebarItems={blurSidebarItems}
12
+ adaptive={adaptive}
13
+ activeTool="Blur"
30
14
  actionPane={
31
- <ImageEditorPane title="Blur" actions={
15
+ <ImageEditorPane title="Blur" adaptive={adaptive} confirmDisabled={!selected} actions={
32
16
  <>
33
- <Button>Reset</Button>
34
- <Button themeColor="primary">Apply</Button>
17
+ <Button disabled={!selected}>Reset</Button>
18
+ <Button themeColor="primary" disabled={!selected}>Apply</Button>
35
19
  </>
36
20
  }>
37
- <SegmentedControl thumbStyles={{ width: "50%" }} stretched aria-label="Redaction Tool" style={{ flexShrink: 0 }}>
21
+ <SegmentedControl thumbStyles={{ width: "50%" }} stretched aria-label="Redaction Tool">
38
22
  <SegmentedControlButton icon="blur" selected>Blur</SegmentedControlButton>
39
23
  <SegmentedControlButton icon="grid">Pixelate</SegmentedControlButton>
40
24
  </SegmentedControl>
@@ -109,7 +93,7 @@ export const ImageEditorBlur = ({ selected = false, shape = "rectangular", inten
109
93
  }
110
94
 
111
95
  children={
112
- <canvas width="494" height="307" role="img" aria-label="Image being edited" style={{ backgroundImage: "url('/packages/html/assets/sofia.jpg')", backgroundSize: "cover" }}></canvas>
96
+ <ImageEditorCanvas adaptive={adaptive} imageSrc={imageSrc} />
113
97
  }
114
98
  {...props} />
115
99
  );
@@ -0,0 +1,3 @@
1
+ import { ImageEditorCrop } from "./imageeditor-crop";
2
+
3
+ export const ImageEditorCropAdaptive = (props: any) => <ImageEditorCrop adaptive {...props} />;
@@ -1,4 +1,5 @@
1
- import { ImageEditor, ImageEditorPane, ImageEditorOptionList, ImageEditorOptionPreview, ImageEditorResizeHandles } from "..";
1
+ import { ImageEditor, ImageEditorPane, ImageEditorOptionList, ImageEditorOptionPreview, ImageEditorResizeHandles, ImageEditorCanvas } from "..";
2
+ import { IMAGEEDITOR_ADAPTIVE_CANVAS_SIZE, IMAGEEDITOR_CANVAS_SIZE } from "../constants";
2
3
  import { Button } from "../../button";
3
4
  import { CheckboxWithLabelAfter } from "../../checkbox";
4
5
  import { NumericTextbox } from "../../numerictextbox";
@@ -6,30 +7,23 @@ import { Form, FormField, Fieldset } from "../../form";
6
7
  import { Icon } from "../../icon";
7
8
  import { RadioGroup, RadioItem, RadioButtonWithLabelAfter } from "../../radio";
8
9
 
9
- const cropSidebarItems = [
10
- <Button fillMode="flat" key="sidebar-button-1" icon="image-resize" aria-label="Resize"></Button>,
11
- <Button fillMode="flat" key="sidebar-button-2" icon="crop" selected aria-label="Crop"></Button>,
12
- <Button fillMode="flat" key="sidebar-button-3" icon="rotate" aria-label="Rotate"></Button>,
13
- <div className="k-separator" key="sidebar-separator-1"></div>,
14
- <Button fillMode="flat" key="sidebar-button-4" icon="free-text" aria-label="Text"></Button>,
15
- <Button fillMode="flat" key="sidebar-button-5" icon="shapes" aria-label="Shapes"></Button>,
16
- <div className="k-separator" key="sidebar-separator-2"></div>,
17
- <Button fillMode="flat" key="sidebar-button-6" icon="drop-half-pixelated" aria-label="Blur"></Button>,
18
- <Button fillMode="flat" key="sidebar-button-7" icon="sliders-horizontal" aria-label="Adjustments"></Button>,
19
- <Button fillMode="flat" key="sidebar-button-8" icon="circles-three-intersecting" aria-label="Filters"></Button>,
20
- <div className="k-separator" key="sidebar-separator-3"></div>,
21
- <Button fillMode="flat" key="sidebar-button-9" icon="frame-corners" aria-label="Frame"></Button>,
22
- <Button fillMode="flat" key="sidebar-button-10" icon="circle-half-tilted" aria-label="Shadow"></Button>
23
- ];
24
-
25
- export const ImageEditorCrop = ({ cropWidth = 494, cropHeight = 307, ...props }: any) => (
10
+ export const ImageEditorCrop = ({
11
+ cropWidth = 494,
12
+ cropHeight = 307,
13
+ isPristine = cropWidth === 494 && cropHeight === 307,
14
+ adaptive,
15
+ canvas = adaptive ? IMAGEEDITOR_ADAPTIVE_CANVAS_SIZE : IMAGEEDITOR_CANVAS_SIZE,
16
+ imageSrc,
17
+ ...props
18
+ }: any) => (
26
19
  <ImageEditor
27
- sidebarItems={cropSidebarItems}
20
+ adaptive={adaptive}
21
+ activeTool="Crop"
28
22
  actionPane={
29
- <ImageEditorPane title="Crop" actions={
23
+ <ImageEditorPane title="Crop" adaptive={adaptive} confirmDisabled={isPristine} actions={
30
24
  <>
31
- <Button>Reset</Button>
32
- <Button themeColor="primary">Apply</Button>
25
+ <Button disabled={isPristine}>Reset</Button>
26
+ <Button themeColor="primary" disabled={isPristine}>Apply</Button>
33
27
  </>
34
28
  }>
35
29
  <Form tag="div">
@@ -49,7 +43,7 @@ export const ImageEditorCrop = ({ cropWidth = 494, cropHeight = 307, ...props }:
49
43
  <FormField
50
44
  label="Aspect Ratio"
51
45
  editor={
52
- <ImageEditorOptionList scrollable scrollingPosition="both">
46
+ <ImageEditorOptionList scrollable>
53
47
  <ImageEditorOptionPreview selected><span className="k-imageeditor-option-label">Original</span></ImageEditorOptionPreview>
54
48
  <ImageEditorOptionPreview><span className="k-imageeditor-option-label">1:1</span></ImageEditorOptionPreview>
55
49
  <ImageEditorOptionPreview><span className="k-imageeditor-option-label">3:2</span></ImageEditorOptionPreview>
@@ -65,12 +59,12 @@ export const ImageEditorCrop = ({ cropWidth = 494, cropHeight = 307, ...props }:
65
59
  <FormField
66
60
  label="Width"
67
61
  editorId="crop-width"
68
- editor={ <NumericTextbox id="crop-width" showClearButton={false} value={String(cropWidth)} prefix={<Icon icon="arrows-left-right" />} /> }
62
+ editor={ <NumericTextbox id="crop-width" showClearButton={false} showSpinButton={false} value={String(cropWidth)} prefix={<Icon icon="arrows-left-right" />} /> }
69
63
  />
70
64
  <FormField
71
65
  label="Height"
72
66
  editorId="crop-height"
73
- editor={ <NumericTextbox id="crop-height" showClearButton={false} value={String(cropHeight)} prefix={<Icon icon="arrows-top-bottom" />} /> }
67
+ editor={ <NumericTextbox id="crop-height" showClearButton={false} showSpinButton={false} value={String(cropHeight)} prefix={<Icon icon="arrows-top-bottom" />} /> }
74
68
  />
75
69
  </Fieldset>
76
70
  <FormField editor={ <CheckboxWithLabelAfter id="crop-lock" checked>Lock Aspect Ratio</CheckboxWithLabelAfter> } />
@@ -80,10 +74,10 @@ export const ImageEditorCrop = ({ cropWidth = 494, cropHeight = 307, ...props }:
80
74
 
81
75
  children={
82
76
  <>
83
- <canvas width="494" height="307" role="img" aria-label="Image being edited" style={{ backgroundImage: "url('/packages/html/assets/sofia.jpg')", backgroundSize: "cover" }}></canvas>
84
- <div className="k-imageeditor-crop-overlay" style={{ "--crop-x": "0px", "--crop-y": "0px", "--crop-w": "494px", "--crop-h": "307px" } as React.CSSProperties}>
77
+ <ImageEditorCanvas {...canvas} imageSrc={imageSrc} />
78
+ <div className="k-imageeditor-crop-overlay" style={{ "--crop-x": "0px", "--crop-y": "0px", "--crop-w": `${canvas.width}px`, "--crop-h": `${canvas.height}px` } as React.CSSProperties}>
85
79
  <div className="k-imageeditor-crop-dim"></div>
86
- <div className="k-imageeditor-crop" style={{ width: "494px", height: "307px" }}>
80
+ <div className="k-imageeditor-crop" style={{ width: `${canvas.width}px`, height: `${canvas.height}px` }}>
87
81
  <ImageEditorResizeHandles variant="crop" grid />
88
82
  </div>
89
83
  </div>
@@ -0,0 +1,3 @@
1
+ import { ImageEditorFilters } from "./imageeditor-filters";
2
+
3
+ export const ImageEditorFiltersAdaptive = (props: any) => <ImageEditorFilters adaptive {...props} />;
@@ -1,59 +1,25 @@
1
- import { ImageEditor, ImageEditorPane, ImageEditorOptionPreview, ImageEditorPreviewThumbnail } from "..";
1
+ import { ImageEditor, ImageEditorPane, ImageEditorOptionPreview, ImageEditorPreviewThumbnail, ImageEditorCanvas } from "..";
2
2
  import { Button } from "../../button";
3
3
  import { Form, FormField } from "../../form";
4
4
 
5
- const filtersSidebarItems = [
6
- <Button fillMode="flat" key="sidebar-button-1" icon="image-resize" aria-label="Resize"></Button>,
7
- <Button fillMode="flat" key="sidebar-button-2" icon="crop" aria-label="Crop"></Button>,
8
- <Button fillMode="flat" key="sidebar-button-3" icon="rotate" aria-label="Rotate"></Button>,
9
- <div className="k-separator" key="sidebar-separator-1"></div>,
10
- <Button fillMode="flat" key="sidebar-button-4" icon="free-text" aria-label="Text"></Button>,
11
- <Button fillMode="flat" key="sidebar-button-5" icon="shapes" aria-label="Shapes"></Button>,
12
- <div className="k-separator" key="sidebar-separator-2"></div>,
13
- <Button fillMode="flat" key="sidebar-button-6" icon="drop-half-pixelated" aria-label="Blur"></Button>,
14
- <Button fillMode="flat" key="sidebar-button-7" icon="sliders-horizontal" aria-label="Adjustments"></Button>,
15
- <Button fillMode="flat" key="sidebar-button-8" icon="circles-three-intersecting" selected aria-label="Filters"></Button>,
16
- <div className="k-separator" key="sidebar-separator-3"></div>,
17
- <Button fillMode="flat" key="sidebar-button-9" icon="frame-corners" aria-label="Frame"></Button>,
18
- <Button fillMode="flat" key="sidebar-button-10" icon="circle-half-tilted" aria-label="Shadow"></Button>
19
- ];
20
-
21
- export const filterPresets: { [key: string]: { label: string } } = {
22
- "none": { label: "None" },
23
- "black-white": { label: "Black and White" },
24
- "greyscale": { label: "Greyscale" },
25
- "sepia": { label: "Sepia" },
26
- "warm": { label: "Warm" },
27
- "cold": { label: "Cold" },
28
- "chrome": { label: "Chrome" },
29
- "invert": { label: "Invert" }
30
- };
31
-
32
- const FilterPreview = ({ presetKey, selected }: { presetKey: string; selected: boolean }) => {
33
- const preset = filterPresets[presetKey];
34
-
35
- return (
36
- <ImageEditorOptionPreview key={presetKey} selected={selected} aria-label={preset.label}>
37
- <ImageEditorPreviewThumbnail label={preset.label} />
38
- </ImageEditorOptionPreview>
39
- );
40
- };
41
-
42
- export const ImageEditorFilters = ({ preset = "none", ...props }: any) => (
5
+ export const ImageEditorFilters = ({ preset = "none", adaptive, imageSrc, ...props }: any) => (
43
6
  <ImageEditor
44
- sidebarItems={filtersSidebarItems}
7
+ adaptive={adaptive}
8
+ activeTool="Filters"
45
9
  actionPane={
46
- <ImageEditorPane title="Filters" actions={
10
+ <ImageEditorPane title="Filters" adaptive={adaptive} confirmDisabled={preset === "none"} actions={
47
11
  <>
48
- <Button>Reset</Button>
49
- <Button themeColor="primary">Apply</Button>
12
+ <Button disabled={preset === "none"}>Reset</Button>
13
+ <Button themeColor="primary" disabled={preset === "none"}>Apply</Button>
50
14
  </>
51
15
  }>
52
16
  <Form tag="div">
53
17
  <FormField
54
18
  editor={
55
19
  <div className="k-imageeditor-option-grid">
56
- <FilterPreview presetKey="none" selected={preset === "none"} />
20
+ <ImageEditorOptionPreview selected={preset === "none"} aria-label="None">
21
+ <ImageEditorPreviewThumbnail label="None" imageSrc={imageSrc} />
22
+ </ImageEditorOptionPreview>
57
23
  </div>
58
24
  }
59
25
  />
@@ -61,9 +27,15 @@ export const ImageEditorFilters = ({ preset = "none", ...props }: any) => (
61
27
  label="Monochrome"
62
28
  editor={
63
29
  <div className="k-imageeditor-option-grid">
64
- <FilterPreview presetKey="black-white" selected={preset === "black-white"} />
65
- <FilterPreview presetKey="greyscale" selected={preset === "greyscale"} />
66
- <FilterPreview presetKey="sepia" selected={preset === "sepia"} />
30
+ <ImageEditorOptionPreview selected={preset === "black-white"} aria-label="Black and White">
31
+ <ImageEditorPreviewThumbnail label="Black and White" imageSrc={imageSrc} />
32
+ </ImageEditorOptionPreview>
33
+ <ImageEditorOptionPreview selected={preset === "greyscale"} aria-label="Greyscale">
34
+ <ImageEditorPreviewThumbnail label="Greyscale" imageSrc={imageSrc} />
35
+ </ImageEditorOptionPreview>
36
+ <ImageEditorOptionPreview selected={preset === "sepia"} aria-label="Sepia">
37
+ <ImageEditorPreviewThumbnail label="Sepia" imageSrc={imageSrc} />
38
+ </ImageEditorOptionPreview>
67
39
  </div>
68
40
  }
69
41
  />
@@ -71,9 +43,15 @@ export const ImageEditorFilters = ({ preset = "none", ...props }: any) => (
71
43
  label="Color Temperature & Mood"
72
44
  editor={
73
45
  <div className="k-imageeditor-option-grid">
74
- <FilterPreview presetKey="warm" selected={preset === "warm"} />
75
- <FilterPreview presetKey="cold" selected={preset === "cold"} />
76
- <FilterPreview presetKey="chrome" selected={preset === "chrome"} />
46
+ <ImageEditorOptionPreview selected={preset === "warm"} aria-label="Warm">
47
+ <ImageEditorPreviewThumbnail label="Warm" imageSrc={imageSrc} />
48
+ </ImageEditorOptionPreview>
49
+ <ImageEditorOptionPreview selected={preset === "cold"} aria-label="Cold">
50
+ <ImageEditorPreviewThumbnail label="Cold" imageSrc={imageSrc} />
51
+ </ImageEditorOptionPreview>
52
+ <ImageEditorOptionPreview selected={preset === "chrome"} aria-label="Chrome">
53
+ <ImageEditorPreviewThumbnail label="Chrome" imageSrc={imageSrc} />
54
+ </ImageEditorOptionPreview>
77
55
  </div>
78
56
  }
79
57
  />
@@ -81,7 +59,9 @@ export const ImageEditorFilters = ({ preset = "none", ...props }: any) => (
81
59
  label="Color Reversal"
82
60
  editor={
83
61
  <div className="k-imageeditor-option-grid">
84
- <FilterPreview presetKey="invert" selected={preset === "invert"} />
62
+ <ImageEditorOptionPreview selected={preset === "invert"} aria-label="Invert">
63
+ <ImageEditorPreviewThumbnail label="Invert" imageSrc={imageSrc} />
64
+ </ImageEditorOptionPreview>
85
65
  </div>
86
66
  }
87
67
  />
@@ -91,7 +71,7 @@ export const ImageEditorFilters = ({ preset = "none", ...props }: any) => (
91
71
 
92
72
  children={
93
73
  <>
94
- <canvas width="494" height="307" role="img" aria-label="Image being edited" style={{ backgroundImage: "url('/packages/html/assets/sofia.jpg')", backgroundSize: "cover" }}></canvas>
74
+ <ImageEditorCanvas adaptive={adaptive} imageSrc={imageSrc} />
95
75
  </>
96
76
  }
97
77
  {...props} />
@@ -0,0 +1,3 @@
1
+ import { ImageEditorFrames } from "./imageeditor-frames";
2
+
3
+ export const ImageEditorFramesAdaptive = (props: any) => <ImageEditorFrames adaptive {...props} />;