@progress/kendo-themes-html 4.43.1-dev.3 → 4.43.1-dev.7

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 (39) hide show
  1. package/lib/jsx-runtime.js +17 -1
  2. package/package.json +7 -7
  3. package/src/autocomplete/autocomplete.jsx +1 -1
  4. package/src/avatar/README.md +1 -1
  5. package/src/avatar/avatar.jsx +1 -4
  6. package/src/button/button.jsx +38 -20
  7. package/src/checkbox/checkbox.jsx +2 -2
  8. package/src/chip/chip-avatar.jsx +1 -1
  9. package/src/colorpicker/color-preview.jsx +27 -20
  10. package/src/combobox/combobox.jsx +4 -6
  11. package/src/dropdownlist/dropdownlist.jsx +4 -6
  12. package/src/fab/README.md +19 -0
  13. package/src/fab/fab.jsx +154 -0
  14. package/src/fab/index.js +1 -0
  15. package/src/index.js +5 -2
  16. package/src/input/input-inner-span.jsx +1 -1
  17. package/src/list/README.md +14 -0
  18. package/src/maskedtextbox/maskedtextbox.jsx +7 -10
  19. package/src/menu/README.md +40 -0
  20. package/src/menu/index.js +3 -0
  21. package/src/menu/menu-item-content.jsx +48 -0
  22. package/src/menu/menu-item.jsx +174 -0
  23. package/src/menu/menu-list.jsx +74 -0
  24. package/src/menubutton/README.md +60 -0
  25. package/src/menubutton/index.js +1 -0
  26. package/src/menubutton/menubutton.jsx +161 -0
  27. package/src/numerictextbox/numerictextbox.jsx +4 -6
  28. package/src/radio/radio.jsx +6 -2
  29. package/src/splitbutton/README.md +76 -0
  30. package/src/splitbutton/index.js +1 -0
  31. package/src/splitbutton/splitbutton.jsx +176 -0
  32. package/src/switch/README.md +3 -3
  33. package/src/treeview/README.md +0 -0
  34. package/src/treeview/index.js +4 -0
  35. package/src/treeview/treeview-group.jsx +70 -0
  36. package/src/treeview/treeview-item.jsx +142 -0
  37. package/src/treeview/treeview-leaf.jsx +99 -0
  38. package/src/treeview/treeview.jsx +125 -0
  39. package/utils/styles.js +9 -0
@@ -40,7 +40,16 @@ const attrMap = {
40
40
  thumbrounded: 'thumbRounded',
41
41
 
42
42
  // Chip
43
- showavatar: 'showAvatar'
43
+ showavatar: 'showAvatar',
44
+
45
+ // Hierarchy
46
+ haschildren: 'hasChildren',
47
+
48
+ // Treeview
49
+ leafclassname: 'leafClassName',
50
+
51
+ // Template
52
+ contenttemplate: 'contentTemplate'
44
53
  };
45
54
 
46
55
  const booleanAttr = new Set([
@@ -67,12 +76,19 @@ const booleanAttr = new Set([
67
76
  'showIcon',
68
77
  'showClearButton',
69
78
  'showSpinButton',
79
+ 'showArrow',
70
80
 
71
81
  'showCheckbox',
72
82
 
73
83
  'virtualization',
74
84
  'root',
75
85
 
86
+ 'open',
87
+ 'expanded',
88
+ 'hasChildren',
89
+
90
+ 'showArrow',
91
+
76
92
  'showAvatar',
77
93
 
78
94
  'aria'
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": "4.43.1-dev.3",
4
+ "version": "4.43.1-dev.7",
5
5
  "author": "Progress",
6
6
  "license": "Apache-2.0",
7
7
  "keywords": [
@@ -34,13 +34,13 @@
34
34
  "dev": "rollup -cw"
35
35
  },
36
36
  "devDependencies": {
37
- "@babel/core": "^7.16.0",
38
- "@babel/preset-env": "^7.16.0",
39
- "@babel/preset-react": "^7.16.0",
37
+ "@babel/core": "^7.16.7",
38
+ "@babel/preset-env": "^7.16.7",
39
+ "@babel/preset-react": "^7.16.7",
40
40
  "@rollup/plugin-babel": "^5.3.0",
41
41
  "@rollup/plugin-commonjs": "^21.0.1",
42
- "@rollup/plugin-node-resolve": "^13.0.6",
43
- "rollup": "^2.59.0"
42
+ "@rollup/plugin-node-resolve": "^13.1.2",
43
+ "rollup": "^2.62.0"
44
44
  },
45
- "gitHead": "17b6139d64d5dab2c8687e0f2e50fda466679766"
45
+ "gitHead": "634466e18a3f771f8e1da5dc5efdefca1f4fd344"
46
46
  }
@@ -75,7 +75,7 @@ function AutocompleteStatic(props) {
75
75
  'k-autocomplete',
76
76
  {
77
77
  'k-state-hover': hover === true,
78
- 'k-state-focused': focus === true,
78
+ 'k-state-focus': focus === true,
79
79
  'k-state-invalid': invalid === true,
80
80
  'k-state-required': required === true,
81
81
  'k-state-disabled': disabled === true
@@ -2,7 +2,7 @@
2
2
  <!-- default rendering -->
3
3
  <div class="k-avatar k-avatar-md k-rounded-circle k-avatar-solid k-avatar-solid-primary">
4
4
  <span class="k-avatar-image">
5
- <img src="../../assets/avatar.jpg" class="">
5
+ <img src="../../assets/avatar.jpg" />
6
6
  </span>
7
7
  </div>
8
8
 
@@ -48,10 +48,7 @@ function AvatarStatic(props) {
48
48
  ownClassName,
49
49
  'k-avatar',
50
50
  `k-avatar-${themeColor}`,
51
- {
52
- 'k-avatar-circle': rounded === 'full',
53
- 'k-avatar-rounded': rounded !== 'full' && rounded !== null
54
- },
51
+ styles.roundedClass( rounded ),
55
52
  styles.sizeClass( size, 'k-avatar' ),
56
53
  styles.fillModeClass( fillMode, 'k-avatar' ),
57
54
  styles.borderedClass( bordered, 'k-avatar' ),
@@ -6,6 +6,7 @@ class Button extends Component {
6
6
 
7
7
  init() {
8
8
  this._props.text = this.element.innerHTML;
9
+ this._props.children = [];
9
10
  }
10
11
 
11
12
  render() {
@@ -16,6 +17,7 @@ class Button extends Component {
16
17
  function ButtonStatic(props) {
17
18
  const {
18
19
  className: ownClassName,
20
+ children,
19
21
 
20
22
  text,
21
23
  type,
@@ -61,22 +63,6 @@ function ButtonStatic(props) {
61
63
  }
62
64
  ];
63
65
 
64
- let legacyClasses = [
65
- ownClassName,
66
- 'k-button',
67
- {
68
- 'k-primary': themeColor === 'primary',
69
- 'k-flat': fillMode === 'flat',
70
- 'k-outline': fillMode === 'outline',
71
- 'k-state-hover': hover === true,
72
- 'k-state-focus': focus === true,
73
- 'k-state-active': active === true,
74
- 'k-state-selected': selected === true,
75
- 'k-state-disabled': disabled === true,
76
- 'k-icon-button': Boolean( icon) === true && Boolean(text) === false
77
- }
78
- ];
79
-
80
66
  // Augment attributes
81
67
  htmlAttributes.disabled = disabled;
82
68
 
@@ -85,18 +71,47 @@ function ButtonStatic(props) {
85
71
  : {};
86
72
 
87
73
  if (legacy) {
74
+
75
+ let legacyClasses = [
76
+ ownClassName,
77
+ 'k-button',
78
+ styles.fillModeClass( fillMode, 'k-button' ),
79
+ styles.themeColorClass( fillMode, themeColor, 'k-button' ),
80
+ {
81
+ 'k-primary': themeColor === 'primary',
82
+ 'k-flat': fillMode === 'flat',
83
+ 'k-outline': fillMode === 'outline',
84
+ 'k-state-hover': hover === true,
85
+ 'k-state-focus': focus === true,
86
+ 'k-state-active': active === true,
87
+ 'k-state-selected': selected === true,
88
+ 'k-state-disabled': disabled === true,
89
+ 'k-icon-button': Boolean( icon) === true && Boolean(text) === false
90
+ }
91
+ ];
92
+
88
93
  return (
89
94
  <button type={type} className={legacyClasses} {...ariaAttr} {...htmlAttributes}>
90
- <IconStatic name={icon} />
91
- { text }
95
+ { children.length === 0
96
+ ? <>
97
+ <IconStatic className="k-button-icon" name={icon} />
98
+ {text && <span className="k-button-text">{text}</span>}
99
+ </>
100
+ : children
101
+ }
92
102
  </button>
93
103
  );
94
104
  }
95
105
 
96
106
  return (
97
107
  <button type={type} className={buttonClasses} {...ariaAttr} {...htmlAttributes}>
98
- <IconStatic className="k-button-icon" name={icon} />
99
- {text && <span className="k-button-text">{text}</span>}
108
+ { children.length === 0
109
+ ? <>
110
+ <IconStatic className="k-button-icon" name={icon} />
111
+ {text && <span className="k-button-text">{text}</span>}
112
+ </>
113
+ : children
114
+ }
100
115
  </button>
101
116
  );
102
117
  }
@@ -104,6 +119,8 @@ function ButtonStatic(props) {
104
119
  ButtonStatic.defaultProps = {
105
120
  ...globalDefaultProps,
106
121
 
122
+ children: [],
123
+
107
124
  text: '',
108
125
  icon: '',
109
126
 
@@ -119,6 +136,7 @@ ButtonStatic.defaultProps = {
119
136
  };
120
137
 
121
138
  ButtonStatic.propTypes = {
139
+ children: typeof [],
122
140
  text: typeof '',
123
141
  icon: typeof '',
124
142
 
@@ -74,12 +74,12 @@ function CheckboxStatic(props) {
74
74
  ];
75
75
 
76
76
  return (
77
- <input type="checkbox" className={legacyClasses} {...ariaAttr} {...htmlAttributes} />
77
+ <span className="k-checkbox-wrap"><input type="checkbox" className={legacyClasses} {...ariaAttr} {...htmlAttributes} /></span>
78
78
  );
79
79
  }
80
80
 
81
81
  return (
82
- <input type="checkbox" className={checkboxClasses} {...ariaAttr} {...htmlAttributes} />
82
+ <span className="k-checkbox-wrap"><input type="checkbox" className={checkboxClasses} {...ariaAttr} {...htmlAttributes} /></span>
83
83
  );
84
84
  }
85
85
 
@@ -4,7 +4,7 @@ function ChipAvatarStatic() {
4
4
 
5
5
  return (
6
6
  <AvatarStatic className="k-chip-avatar" type="image">
7
- <img src="../../assets/avatar.jpg"/>
7
+ <img src="../../assets/avatar.jpg" />
8
8
  </AvatarStatic>
9
9
  );
10
10
 
@@ -39,28 +39,35 @@ function ColorPreviewStatic(props) {
39
39
 
40
40
  if (legacy) {
41
41
 
42
- let legacyClasses = [
43
- ownClassName,
44
- 'k-selected-color',
45
- {
46
- 'k-no-color': color === ''
47
- }
48
- ];
49
-
50
- let legacyStyles = {
51
- 'background-color': color
52
- };
53
-
54
- if (iconName === '') {
55
- return (
56
- <span className={legacyClasses} style={legacyStyles}></span>
57
- );
58
- }
42
+ // let legacyClasses = [
43
+ // ownClassName,
44
+ // 'k-selected-color',
45
+ // {
46
+ // 'k-no-color': color === ''
47
+ // }
48
+ // ];
49
+
50
+ // let legacyStyles = {
51
+ // 'background-color': color
52
+ // };
53
+
54
+ // if (iconName === '') {
55
+ // return (
56
+ // <span className={legacyClasses} style={legacyStyles}></span>
57
+ // );
58
+ // }
59
+
60
+ // return (
61
+ // <IconStatic className="k-tool-icon" name={iconName}>
62
+ // <span className={legacyClasses} style={legacyStyles}></span>
63
+ // </IconStatic>
64
+ // );
59
65
 
60
66
  return (
61
- <IconStatic className="k-tool-icon" name={iconName}>
62
- <span className={legacyClasses} style={legacyStyles}></span>
63
- </IconStatic>
67
+ <span className={colorPreviewClasses} {...ariaAttr} {...htmlAttributes}>
68
+ {iconName && <IconStatic name={iconName} className="k-color-preview-icon" />}
69
+ <span className="k-color-preview-mask" style={styles}></span>
70
+ </span>
64
71
  );
65
72
 
66
73
  }
@@ -76,17 +76,15 @@ function ComboboxStatic(props) {
76
76
  'k-widget',
77
77
  'k-combobox',
78
78
  {
79
+ 'k-state-hover': hover === true,
80
+ 'k-state-focus': focus === true,
81
+ 'k-state-invalid': invalid === true,
79
82
  'k-state-disabled': disabled === true
80
83
  }
81
84
  ];
82
85
 
83
86
  let legacyWrapClasses = [
84
- 'k-dropdown-wrap',
85
- {
86
- 'k-state-hover': hover === true,
87
- 'k-state-focused': focus === true,
88
- 'k-state-invalid': invalid === true
89
- }
87
+ 'k-dropdown-wrap'
90
88
  ];
91
89
 
92
90
  return (
@@ -88,17 +88,15 @@ function DropdownListStatic(props) {
88
88
  'k-widget',
89
89
  'k-dropdown',
90
90
  {
91
+ 'k-state-hover': hover === true,
92
+ 'k-state-focus': focus === true,
93
+ 'k-state-invalid': invalid === true,
91
94
  'k-state-disabled': disabled === true
92
95
  }
93
96
  ];
94
97
 
95
98
  let legacyWrapClasses = [
96
- 'k-dropdown-wrap',
97
- {
98
- 'k-state-hover': hover === true,
99
- 'k-state-focused': focus === true,
100
- 'k-state-invalid': invalid === true
101
- }
99
+ 'k-dropdown-wrap'
102
100
  ];
103
101
 
104
102
  return (
@@ -0,0 +1,19 @@
1
+ ```html
2
+ <!-- default rendering -->
3
+ <button type="button" class="k-fab k-fab-rectangle k-fab-md k-rounded-full k-fab-solid k-fab-solid-primary">
4
+ <span class="k-fab-icon k-icon k-i-plus"></span>
5
+ <span class="k-fab-text">Create</span>
6
+ </button>
7
+
8
+ <!-- canonical rendering -->
9
+ <button class="
10
+ k-fab
11
+ k-fab-{size}
12
+ k-fab-{rounded}
13
+ k-fab-{fillMode}
14
+ k-fab-{fillMode}-{themeColor}
15
+ ">
16
+ {icon !== '' && <span class="k-fab-icon k-icon k-i-{icon}"></span>}
17
+ {text !== '' && <span class="k-fab-text">{text}</span>}
18
+ </button>
19
+ ```
@@ -0,0 +1,154 @@
1
+ import * as styles from '../../utils/styles';
2
+ import { Component, globalDefaultProps } from '../component/index';
3
+ import { IconStatic } from '../icon/index';
4
+
5
+ class Fab extends Component {
6
+
7
+ init() {
8
+ this._props.text = this.element.innerHTML;
9
+ }
10
+
11
+ render() {
12
+ return <FabStatic {...this.props} />;
13
+ }
14
+ }
15
+
16
+ function FabStatic(props) {
17
+ const {
18
+ className: ownClassName,
19
+
20
+ text,
21
+ type,
22
+
23
+ size,
24
+ rounded,
25
+ shape,
26
+
27
+ fillMode,
28
+ themeColor,
29
+
30
+ icon,
31
+
32
+ position,
33
+
34
+ hover,
35
+ focus,
36
+ active,
37
+ selected,
38
+ disabled,
39
+
40
+ aria,
41
+ legacy,
42
+
43
+ ...htmlAttributes
44
+ } = props;
45
+
46
+ let buttonClasses = [
47
+ ownClassName,
48
+ 'k-fab',
49
+ styles.positionClass( position, 'k'),
50
+ styles.shapeClass( shape, 'k-fab' ),
51
+ styles.sizeClass( size, 'k-fab' ),
52
+ styles.roundedClass( rounded ),
53
+ styles.fillModeClass( fillMode, 'k-fab' ),
54
+ styles.themeColorClass( fillMode, themeColor, 'k-fab' ),
55
+ {
56
+ 'k-hover': hover === true,
57
+ 'k-focus': focus === true,
58
+ 'k-active': active === true,
59
+ 'k-selected': selected === true,
60
+ 'k-disabled': disabled === true
61
+ }
62
+ ];
63
+
64
+ // Augment attributes
65
+ htmlAttributes.disabled = disabled;
66
+
67
+ let ariaAttr = aria
68
+ ? {}
69
+ : {};
70
+
71
+ if (legacy) {
72
+ let legacyClasses = [
73
+ ownClassName,
74
+ 'k-fab',
75
+ `k-fab-${themeColor}`,
76
+ {
77
+ 'k-fab-rectangle': rounded === null,
78
+ 'k-fab-rounded': rounded !== 'full' && rounded !== null,
79
+ 'k-fab-pill': rounded === 'full'
80
+ },
81
+ {
82
+ 'k-state-hover': hover === true,
83
+ 'k-state-focus': focus === true,
84
+ 'k-state-active': active === true,
85
+ 'k-state-selected': selected === true,
86
+ 'k-state-disabled': disabled === true
87
+ },
88
+ styles.positionClass( position, 'k'),
89
+ styles.sizeClass( size, 'k-fab' )
90
+ ];
91
+
92
+ return (
93
+ <button type={type} className={legacyClasses} {...ariaAttr} {...htmlAttributes}>
94
+ <IconStatic className="k-fab-icon" name={icon} />
95
+ {text && <span className="k-fab-text">{text}</span>}
96
+ </button>
97
+ );
98
+ }
99
+
100
+ return (
101
+ <button type={type} className={buttonClasses} {...ariaAttr} {...htmlAttributes}>
102
+ <IconStatic className="k-fab-icon" name={icon} />
103
+ {text && <span className="k-fab-text">{text}</span>}
104
+ </button>
105
+ );
106
+ }
107
+
108
+ FabStatic.defaultProps = {
109
+ ...globalDefaultProps,
110
+
111
+ text: '',
112
+ icon: '',
113
+
114
+ className: '',
115
+ type: 'button',
116
+
117
+ size: 'medium',
118
+ rounded: 'full',
119
+ shape: 'rectangle',
120
+
121
+ position: null,
122
+
123
+ fillMode: 'solid',
124
+ themeColor: 'primary'
125
+ };
126
+
127
+ FabStatic.propTypes = {
128
+ text: typeof '',
129
+ icon: typeof '',
130
+
131
+ type: typeof [ 'button', 'submit', 'reset' ],
132
+
133
+ size: typeof [ null, 'small', 'medium', 'large' ],
134
+ rounded: typeof [ null, 'small', 'medium', 'large', 'full' ],
135
+ shape: typeof [ null, 'rectangle', 'square' ],
136
+ fillMode: typeof [ null, 'solid' ],
137
+ themeColor: typeof [ null, 'primary', 'secondary', 'tertiary', 'info', 'success', 'warning', 'error', 'dark', 'light', 'inverse' ],
138
+
139
+ position: typeof [ null, 'top-start', 'top-center', 'top-end', 'middle-start', 'middle-end', 'bottom-start', 'bottom-center', 'bottom-end' ],
140
+
141
+ hover: typeof false,
142
+ focus: typeof false,
143
+ active: typeof false,
144
+ selected: typeof false,
145
+ disabled: typeof false,
146
+
147
+ aria: typeof false,
148
+ legacy: typeof false,
149
+
150
+ className: typeof '',
151
+ htmlAttributes: typeof []
152
+ };
153
+
154
+ export { Fab, FabStatic };
@@ -0,0 +1 @@
1
+ export * from './fab.jsx';
package/src/index.js CHANGED
@@ -38,6 +38,8 @@ export * from './chip/index';
38
38
 
39
39
  // Native forms
40
40
  export * from './button/index';
41
+ export * from './menubutton/index';
42
+ export * from './splitbutton/index';
41
43
  export * from './textbox/index';
42
44
  export * from './textarea/index';
43
45
  export * from './checkbox/index';
@@ -69,8 +71,8 @@ export * from './switch/index';
69
71
 
70
72
  // Command interfaces
71
73
  // export * from './action-buttons/index';
72
- // export * from './fab/index';
73
- // export * from './menu/index';
74
+ export * from './fab/index';
75
+ export * from './menu/index';
74
76
  // export * from './toolbar/index';
75
77
 
76
78
  // Popups and modals
@@ -89,6 +91,7 @@ export * from './switch/index';
89
91
  // export * from './pager/index';
90
92
  // export * from './stepper/index';
91
93
  // export * from './tabstrip/index';
94
+ export * from './treeview/index';
92
95
  // export * from './wizard/index';
93
96
 
94
97
  // Layout & containers
@@ -56,7 +56,7 @@ function InputInnerSpanStatic(props) {
56
56
  {valueIcon}
57
57
  {valueIcon === null && <IconStatic className="k-icon k-input-value-icon" name={valueIconName} />}
58
58
  {showValue && value === '' && placeholder}
59
- {showValue && value && <span className="k-value-text">{value}</span>}
59
+ {showValue && value && <span className="k-input-value-text">{value}</span>}
60
60
  </span>
61
61
  );
62
62
  }
@@ -90,4 +90,18 @@
90
90
  </ul>
91
91
  </div>
92
92
  </div>
93
+
94
+ <!-- filter -->
95
+ <div class="k-list-filter">
96
+ <span class="k-searchbox k-input k-input-md k-rounded-md k-input-solid" type="text" autocomplete="off">
97
+ <span class="k-input-icon k-icon k-i-search"></span>
98
+ <input type="text" class="k-input-inner" placeholder="Filter..." autocomplete="off">
99
+ </span>
100
+ </div>
101
+
102
+ <!-- no data template -->
103
+ <div class="k-list k-list-md">
104
+ <div class="k-no-data">No data found.</div>
105
+ </div>
93
106
  ```
107
+
@@ -71,23 +71,20 @@ function MaskedTextboxStatic(props) {
71
71
  ownClassName,
72
72
  'k-widget',
73
73
  'k-maskedtextbox',
74
- {
75
- 'k-state-disabled': disabled === true
76
- }
77
- ];
78
-
79
- let legacyInputClasses = [
80
- 'k-textbox',
81
74
  {
82
75
  'k-state-hover': hover === true,
83
- 'k-state-focused': focus === true,
84
- 'k-state-invalid': invalid === true
76
+ 'k-state-focus': focus === true,
77
+ 'k-state-invalid': invalid === true,
78
+ 'k-state-disabled': disabled === true
85
79
  }
86
80
  ];
87
81
 
88
82
  return (
89
83
  <InputStatic className={legacyClasses} {...htmlAttributes}>
90
- <input type={type} className={legacyInputClasses} {...inputAttributes} />
84
+ <input type={type} className="k-input" {...inputAttributes} />
85
+ <InputValidationIconStatic {...props} />
86
+ <InputLoadingIconStatic {...props} />
87
+ <InputClearValueStatic {...props} />
91
88
  </InputStatic>
92
89
  );
93
90
  }
@@ -0,0 +1,40 @@
1
+ ```html
2
+ <!-- default rendering -->
3
+ <ul class="k-group k-menu-group k-reset"></ul>
4
+
5
+ <!-- canonical rendering -->
6
+ <ul class="
7
+ k-group k-menu-group k-reset
8
+ k-menulist-{size}
9
+ "
10
+ ></ul>
11
+ ```
12
+
13
+ ```html
14
+ <!-- default rendering -->
15
+ <li class="k-item k-menu-item">
16
+ <span class="k-link k-menu-link">
17
+ {icon !== '' && <span class="k-icon k-i-{icon}"></span>}
18
+ {text !== '' && <span class="k-menu-link-text">Text</span>}
19
+ <span className="k-menu-expand-arrow k-icon k-i-{arrowIconName || 'none'}"></span>
20
+ </span>
21
+ </li>
22
+
23
+ <!-- canonical rendering -->
24
+ <li class="
25
+ k-item
26
+ k-menu-item
27
+ {hover && 'k-hover'}
28
+ {focus && 'k-focus'}
29
+ {active && 'k-active'}
30
+ {disabled && 'k-disabled'}
31
+ " disabled={disabled}>
32
+ <span class="k-link k-menu-link">
33
+ {icon !== '' && <span class="k-icon k-i-{icon}"></span>}
34
+ {text !== '' && <span class="k-menu-link-text">Text</span>}
35
+ {showArrow && <span className="k-menu-expand-arrow">
36
+ <span className="k-icon k-i-{arrowIconName || 'none'}"></span>
37
+ </span>}
38
+ </span>
39
+ </li>
40
+ ```
@@ -0,0 +1,3 @@
1
+ export * from './menu-list.jsx';
2
+ export * from './menu-item.jsx';
3
+ export * from './menu-item-content.jsx';