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

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 (53) hide show
  1. package/lib/jsx-runtime.js +13 -1
  2. package/package.json +2 -2
  3. package/src/autocomplete/autocomplete.jsx +2 -2
  4. package/src/avatar/avatar.jsx +18 -21
  5. package/src/button/button.jsx +2 -2
  6. package/src/checkbox/checkbox.jsx +1 -1
  7. package/src/chip/README.md +47 -0
  8. package/src/chip/chip-actions.jsx +80 -0
  9. package/src/chip/chip-avatar.jsx +13 -0
  10. package/src/chip/chip-list.jsx +84 -0
  11. package/src/chip/chip.jsx +180 -0
  12. package/src/chip/index.js +4 -0
  13. package/src/colorpicker/README.md +24 -15
  14. package/src/colorpicker/color-preview.jsx +1 -1
  15. package/src/colorpicker/colorpicker.jsx +6 -8
  16. package/src/combobox/combobox.jsx +2 -2
  17. package/src/{component.js → component/component.jsx} +4 -2
  18. package/src/component/index.js +1 -0
  19. package/src/dateinput/dateinput.jsx +6 -8
  20. package/src/datepicker/datepicker.jsx +6 -8
  21. package/src/datetimepicker/datetimepicker.jsx +6 -8
  22. package/src/dropdownlist/dropdownlist.jsx +2 -2
  23. package/src/icon/icon.jsx +1 -1
  24. package/src/index.js +42 -3
  25. package/src/input/input-inner-input.jsx +1 -1
  26. package/src/input/input-inner-span.jsx +1 -1
  27. package/src/input/input-inner-textarea.jsx +1 -1
  28. package/src/input/input-prefix.jsx +1 -1
  29. package/src/input/input-suffix.jsx +1 -1
  30. package/src/input/input.jsx +2 -2
  31. package/src/input/picker.jsx +4 -4
  32. package/src/list/README.md +93 -0
  33. package/src/list/index.js +5 -0
  34. package/src/list/list-content.jsx +95 -0
  35. package/src/list/list-group-item.jsx +66 -0
  36. package/src/list/list-header.jsx +67 -0
  37. package/src/list/list-item.jsx +117 -0
  38. package/src/list/list.jsx +182 -0
  39. package/src/maskedtextbox/maskedtextbox.jsx +2 -2
  40. package/src/nodata/index.js +1 -0
  41. package/src/nodata/nodata.jsx +64 -0
  42. package/src/numerictextbox/numerictextbox.jsx +2 -2
  43. package/src/popup/README.md +15 -0
  44. package/src/popup/index.js +1 -0
  45. package/src/popup/popup.jsx +80 -0
  46. package/src/radio/radio.jsx +1 -1
  47. package/src/searchbar/searchbar.jsx +1 -1
  48. package/src/searchbox/searchbox.jsx +2 -2
  49. package/src/spinbutton/spinbutton.jsx +1 -1
  50. package/src/switch/switch.jsx +5 -5
  51. package/src/textarea/textarea.jsx +2 -2
  52. package/src/textbox/textbox.jsx +2 -2
  53. package/src/timepicker/timepicker.jsx +6 -8
@@ -0,0 +1,117 @@
1
+ import { Component, globalDefaultProps } from '../component/index';
2
+ import { CheckboxStatic } from '../checkbox/index';
3
+ import { IconStatic } from '../icon/index';
4
+
5
+ class ListItem extends Component {
6
+ render() {
7
+ return <ListItemStatic {...this.props} />;
8
+ }
9
+ }
10
+
11
+ function ListItemStatic(props) {
12
+ const {
13
+ className: ownClassName,
14
+ children,
15
+
16
+ groupLabel,
17
+
18
+ showIcon,
19
+ iconName,
20
+ showCheckbox,
21
+ checked,
22
+
23
+ hover,
24
+ focus,
25
+ selected,
26
+ disabled,
27
+
28
+ aria,
29
+ legacy,
30
+
31
+ ...htmlAttributes
32
+ } = props;
33
+
34
+ let listItemClasses = [
35
+ ownClassName,
36
+ 'k-list-item',
37
+ {
38
+ 'k-hover': hover === true,
39
+ 'k-focus': focus === true,
40
+ 'k-selected': selected === true,
41
+ 'k-disabled': disabled === true
42
+ }
43
+ ];
44
+
45
+
46
+ let legacyListItemClasses = [
47
+ ownClassName,
48
+ 'k-item',
49
+ {
50
+ 'k-state-hover': hover === true,
51
+ 'k-state-focused': focus === true,
52
+ 'k-state-selected': selected === true,
53
+ 'k-state-disabled': disabled === true
54
+ }
55
+ ];
56
+
57
+ let ariaAttr = aria
58
+ ? {}
59
+ : {};
60
+
61
+ if (legacy) {
62
+ return (
63
+ <li className={legacyListItemClasses} {...ariaAttr} {...htmlAttributes}>
64
+ {showCheckbox && <CheckboxStatic checked={checked} />}
65
+ {showIcon && <IconStatic name={iconName} />}
66
+ <span className="k-list-item-text">{children}</span>
67
+ {groupLabel !== '' && <div className="k-group">{groupLabel}</div>}
68
+ </li>
69
+ );
70
+ }
71
+
72
+ return (
73
+ <li className={listItemClasses} {...ariaAttr} {...htmlAttributes}>
74
+ {showCheckbox && <CheckboxStatic checked={checked} />}
75
+ {showIcon && <IconStatic name={iconName} />}
76
+ <span className="k-list-item-text">{children}</span>
77
+ {groupLabel !== '' && <div className="k-list-item-group-label">{groupLabel}</div>}
78
+ </li>
79
+ );
80
+ }
81
+
82
+ ListItemStatic.defaultProps = {
83
+ ...globalDefaultProps,
84
+
85
+ children: [],
86
+
87
+ groupLabel: '',
88
+
89
+ showIcon: false,
90
+ iconName: '',
91
+ showCheckbox: false,
92
+ checked: false,
93
+ };
94
+
95
+ ListItemStatic.propTypes = {
96
+ children: typeof [],
97
+ className: typeof '',
98
+
99
+ groupLabel: typeof '',
100
+
101
+ showIcon: typeof false,
102
+ iconName: typeof '',
103
+ showCheckbox: typeof false,
104
+ checked: typeof false,
105
+
106
+ hover: typeof false,
107
+ focus: typeof false,
108
+ selected: typeof false,
109
+ disabled: typeof false,
110
+
111
+ aria: typeof false,
112
+ legacy: typeof false,
113
+
114
+ htmlAttributes: typeof []
115
+ };
116
+
117
+ export { ListItem, ListItemStatic };
@@ -0,0 +1,182 @@
1
+ import * as styles from '../../utils/styles';
2
+ import { Component, globalDefaultProps } from '../component/index';
3
+ import { ListHeaderStatic } from './list-header.jsx';
4
+ import { ListContentStatic } from './list-content.jsx';
5
+ import { ListGroupItemStatic } from './list-group-item.jsx';
6
+ import { ListItemStatic } from './list-item.jsx';
7
+ import { NoDataStatic } from '../nodata/index';
8
+
9
+ class List extends Component {
10
+
11
+ _transformChildrenUniversal() {
12
+ let virtualization = this._props.virtualization;
13
+ let children = this._props.children;
14
+ let listHeader;
15
+ let listContent;
16
+ let listChildren = [];
17
+ let newChildren = [];
18
+
19
+ children.forEach( child => {
20
+ if ( child.type === 'OPTGROUP') {
21
+ if (child.props.root === true) {
22
+ listHeader = <ListHeaderStatic {...child.props}>{child.props.label}</ListHeaderStatic>;
23
+
24
+ child.props.children.forEach( optChild => {
25
+ listChildren.push( <ListItemStatic {...optChild.props} /> );
26
+ });
27
+ } else {
28
+ child.props.children.forEach( ( optChild, index ) => {
29
+ let groupLabel = '';
30
+
31
+ if ( index === 0 ) {
32
+ groupLabel = child.props.label;
33
+ optChild.props.className = [ optChild.props.className, 'k-first' ];
34
+ }
35
+ listChildren.push( <ListItemStatic {...optChild.props} groupLabel={groupLabel} /> );
36
+ });
37
+ }
38
+ } else if ( child.type === 'OPTION' ) {
39
+ listChildren.push( <ListItemStatic {...child.props} /> );
40
+ }
41
+ });
42
+
43
+ listContent = <ListContentStatic virtualization={virtualization}>{listChildren}</ListContentStatic>;
44
+
45
+ newChildren.push( listHeader );
46
+ newChildren.push( listContent );
47
+
48
+ this._props.children = newChildren;
49
+ }
50
+
51
+ _transformChildrenAngular() {
52
+ let virtualization = this._props.virtualization;
53
+ let children = this._props.children;
54
+ let listHeader;
55
+ let listContent;
56
+ let listChildren = [];
57
+ let newChildren = [];
58
+
59
+ children.forEach( child => {
60
+ if ( child.type === 'OPTGROUP') {
61
+ if (child.props.root === true) {
62
+ listHeader = <ListHeaderStatic {...child.props}>{child.props.label}</ListHeaderStatic>;
63
+
64
+ child.props.children.forEach( optChild => {
65
+ listChildren.push( <ListItemStatic {...optChild.props} /> );
66
+ });
67
+ } else {
68
+ listChildren.push( <ListGroupItemStatic {...child.props}>{child.props.label}</ListGroupItemStatic> );
69
+
70
+ child.props.children.forEach( optChild => {
71
+ listChildren.push( <ListItemStatic {...optChild.props} /> );
72
+ });
73
+ }
74
+ } else if ( child.type === 'OPTION' ) {
75
+ listChildren.push( <ListItemStatic {...child.props} /> );
76
+ }
77
+ });
78
+
79
+ listContent = <ListContentStatic virtualization={virtualization}>{listChildren}</ListContentStatic>;
80
+
81
+ newChildren.push( listHeader );
82
+ newChildren.push( listContent );
83
+
84
+ this._props.children = newChildren;
85
+ }
86
+
87
+ init() {
88
+ let framework = this._props.framework;
89
+
90
+ if ( this._props.children.length === 0 ) {
91
+ this._props.children.push( <NoDataStatic /> );
92
+ return;
93
+ }
94
+
95
+ if ( framework === 'angular' || framework === 'blazor' ) {
96
+ this._transformChildrenAngular();
97
+ return;
98
+ }
99
+
100
+ this._transformChildrenUniversal();
101
+ }
102
+
103
+ render() {
104
+ return <ListStatic {...this.props} />;
105
+ }
106
+ }
107
+
108
+ function ListStatic(props) {
109
+ const {
110
+ className: ownClassName,
111
+ children,
112
+
113
+ size,
114
+
115
+ virtualization,
116
+
117
+ aria,
118
+ legacy,
119
+
120
+ ...htmlAttributes
121
+ } = props;
122
+
123
+ let listClasses = [
124
+ ownClassName,
125
+ 'k-list',
126
+ styles.sizeClass( size, 'k-list' ),
127
+ {
128
+ 'k-virtual-list': virtualization === true
129
+ }
130
+ ];
131
+
132
+
133
+ let legacyListClasses = [
134
+ ownClassName,
135
+ 'k-list-container'
136
+ ];
137
+
138
+ let ariaAttr = aria
139
+ ? {}
140
+ : {};
141
+
142
+ if (legacy) {
143
+ return (
144
+ <div className={legacyListClasses} {...ariaAttr} {...htmlAttributes}>
145
+ {children}
146
+ </div>
147
+ );
148
+ }
149
+
150
+ return (
151
+ <div className={listClasses} {...ariaAttr} {...htmlAttributes}>
152
+ {children}
153
+ </div>
154
+ );
155
+ }
156
+
157
+ ListStatic.defaultProps = {
158
+ ...globalDefaultProps,
159
+
160
+ children: [],
161
+
162
+ size: 'medium',
163
+
164
+ virtualization: false
165
+ };
166
+
167
+ ListStatic.propTypes = {
168
+ framework: typeof [ 'universal', 'angular' ],
169
+ children: typeof [],
170
+ className: typeof '',
171
+
172
+ size: typeof [ null, 'small', 'medium', 'large' ],
173
+
174
+ virtualization: typeof false,
175
+
176
+ aria: typeof false,
177
+ legacy: typeof false,
178
+
179
+ htmlAttributes: typeof []
180
+ };
181
+
182
+ export { List, ListStatic };
@@ -1,4 +1,4 @@
1
- import { Component, globalDefaultProps } from '../component';
1
+ import { Component, globalDefaultProps } from '../component/index';
2
2
  import { InputStatic, InputInnerInputStatic } from '../input/index';
3
3
  import { InputValidationIconStatic, InputLoadingIconStatic, InputClearValueStatic } from '../input/index';
4
4
 
@@ -133,7 +133,7 @@ MaskedTextboxStatic.propTypes = {
133
133
  showClearButton: typeof true,
134
134
 
135
135
  size: typeof [ null, 'small', 'medium', 'large' ],
136
- rounded: typeof [ null, 'small', 'medium', 'large', 'pill' ],
136
+ rounded: typeof [ null, 'small', 'medium', 'large', 'full' ],
137
137
 
138
138
  fillMode: typeof [ null, 'solid', 'flat', 'outline' ],
139
139
 
@@ -0,0 +1 @@
1
+ export * from './nodata.jsx';
@@ -0,0 +1,64 @@
1
+ import { Component, globalDefaultProps } from '../component/index';
2
+
3
+ class NoData extends Component {
4
+ render() {
5
+ return <NoDataStatic {...this.props} />;
6
+ }
7
+ }
8
+
9
+ function NoDataStatic(props) {
10
+
11
+ const {
12
+ className: ownClassName,
13
+ // eslint-disable-next-line no-unused-vars
14
+ children,
15
+
16
+ aria,
17
+ legacy,
18
+
19
+ ...htmlAttributes
20
+ } = props;
21
+
22
+ let noDataClasses = [
23
+ ownClassName,
24
+ 'k-no-data'
25
+ ];
26
+
27
+ let ariaAttr = aria
28
+ ? {}
29
+ : {};
30
+
31
+ if (legacy) {
32
+
33
+ let legacyClasses = [
34
+ ownClassName,
35
+ 'k-nodata'
36
+ ];
37
+
38
+ return (
39
+ <div className={legacyClasses} {...ariaAttr} {...htmlAttributes}>No data found.</div>
40
+ );
41
+ }
42
+
43
+ return (
44
+ <div className={noDataClasses} {...ariaAttr} {...htmlAttributes}>No data found.</div>
45
+ );
46
+ }
47
+
48
+ NoDataStatic.defaultProps = {
49
+ ...globalDefaultProps,
50
+
51
+ children: []
52
+ };
53
+
54
+ NoDataStatic.propTypes = {
55
+ children: typeof [],
56
+ className: typeof '',
57
+
58
+ aria: typeof false,
59
+ legacy: typeof false,
60
+
61
+ htmlAttributes: typeof []
62
+ };
63
+
64
+ export { NoData, NoDataStatic };
@@ -1,4 +1,4 @@
1
- import { Component, globalDefaultProps } from '../component';
1
+ import { Component, globalDefaultProps } from '../component/index';
2
2
  import { InputStatic, InputInnerInputStatic } from '../input/index';
3
3
  import { InputValidationIconStatic, InputLoadingIconStatic, InputClearValueStatic } from '../input/index';
4
4
  import { SpinButtonStatic } from '../spinbutton/index';
@@ -149,7 +149,7 @@ NumericTextboxStatic.propTypes = {
149
149
  showClearButton: typeof true,
150
150
 
151
151
  size: typeof [ null, 'small', 'medium', 'large' ],
152
- rounded: typeof [ null, 'small', 'medium', 'large', 'pill' ],
152
+ rounded: typeof [ null, 'small', 'medium', 'large', 'full' ],
153
153
 
154
154
  fillMode: typeof [ null, 'solid', 'flat', 'outline' ],
155
155
 
@@ -0,0 +1,15 @@
1
+ ```html
2
+ <!-- default rendering -->
3
+ <div class="k-popup k-popup-md k-rounded-md">
4
+ ...
5
+ </div>
6
+
7
+ <!-- canonical rendering -->
8
+ <div class="
9
+ k-popup
10
+ k-popup-{size}
11
+ k-rounded-{rounded}
12
+ ">
13
+ ...
14
+ </div>
15
+ ```
@@ -0,0 +1 @@
1
+ export * from './popup.jsx';
@@ -0,0 +1,80 @@
1
+ import * as styles from '../../utils/styles';
2
+ import { Component, globalDefaultProps } from '../component/index';
3
+
4
+ class Popup extends Component {
5
+ render() {
6
+ return <PopupStatic {...this.props} />;
7
+ }
8
+ }
9
+
10
+ function PopupStatic(props) {
11
+
12
+ const {
13
+ className: ownClassName,
14
+
15
+ children,
16
+
17
+ size,
18
+ rounded,
19
+
20
+ aria,
21
+ legacy,
22
+
23
+ ...htmlAttributes
24
+ } = props;
25
+
26
+ let PopupClasses = [
27
+ ownClassName,
28
+ 'k-popup',
29
+ styles.sizeClass( size, 'k-popup' ),
30
+ styles.roundedClass( rounded )
31
+ ];
32
+
33
+ let ariaAttr = aria
34
+ ? {}
35
+ : {};
36
+
37
+ if (legacy) {
38
+
39
+ let legacyClasses = [
40
+ ownClassName,
41
+ 'k-popup'
42
+ ];
43
+
44
+ return (
45
+ <div className={legacyClasses} {...htmlAttributes}>
46
+ {children}
47
+ </div>
48
+ );
49
+ }
50
+
51
+ return (
52
+ <div className={PopupClasses} {...ariaAttr} {...htmlAttributes}>
53
+ {children}
54
+ </div>
55
+ );
56
+ }
57
+
58
+ PopupStatic.defaultProps = {
59
+ ...globalDefaultProps,
60
+
61
+ children: [],
62
+
63
+ size: 'medium',
64
+ rounded: 'medium'
65
+ };
66
+
67
+ PopupStatic.propTypes = {
68
+ children: typeof [],
69
+ className: typeof '',
70
+
71
+ size: typeof [ null, 'small', 'medium', 'large' ],
72
+ rounded: typeof [ null, 'small', 'medium', 'large' ],
73
+
74
+ aria: typeof false,
75
+ legacy: typeof false,
76
+
77
+ htmlAttributes: typeof []
78
+ };
79
+
80
+ export { Popup, PopupStatic };
@@ -1,5 +1,5 @@
1
1
  import * as styles from '../../utils/styles';
2
- import { Component, globalDefaultProps } from '../component';
2
+ import { Component, globalDefaultProps } from '../component/index';
3
3
 
4
4
  class Radio extends Component {
5
5
  render() {
@@ -1,4 +1,4 @@
1
- import { Component, globalDefaultProps } from '../component';
1
+ import { Component, globalDefaultProps } from '../component/index';
2
2
  import { InputStatic } from '../input/index';
3
3
 
4
4
  class Searchbar extends Component {
@@ -1,4 +1,4 @@
1
- import { globalDefaultProps } from '../component';
1
+ import { globalDefaultProps } from '../component/index';
2
2
  import { Input, InputStatic, InputInnerInputStatic } from '../input/index';
3
3
  import { InputValidationIconStatic, InputLoadingIconStatic, InputClearValueStatic } from '../input/index';
4
4
  import { IconStatic } from '../icon/index';
@@ -150,7 +150,7 @@ SearchboxInner.propTypes = {
150
150
  suffix: typeof '#fragment',
151
151
 
152
152
  size: typeof [ null, 'small', 'medium', 'large' ],
153
- rounded: typeof [ null, 'small', 'medium', 'large', 'pill' ],
153
+ rounded: typeof [ null, 'small', 'medium', 'large', 'full' ],
154
154
 
155
155
  fillMode: typeof [ null, 'solid', 'flat', 'outline' ],
156
156
 
@@ -1,4 +1,4 @@
1
- import { Component, globalDefaultProps } from '../component';
1
+ import { Component, globalDefaultProps } from '../component/index';
2
2
  import { IconStatic } from '../icon/index';
3
3
  import { ButtonStatic } from '../button/index';
4
4
 
@@ -1,5 +1,5 @@
1
1
  import * as styles from '../../utils/styles';
2
- import { Component, globalDefaultProps } from '../component';
2
+ import { Component, globalDefaultProps } from '../component/index';
3
3
 
4
4
  class Switch extends Component {
5
5
  render() {
@@ -105,8 +105,8 @@ SwitchStatic.defaultProps = {
105
105
  offLabel: '',
106
106
 
107
107
  size: 'medium',
108
- trackRounded: 'pill',
109
- thumbRounded: 'pill'
108
+ trackRounded: 'full',
109
+ thumbRounded: 'full'
110
110
  };
111
111
  SwitchStatic.propTypes = {
112
112
  checked: typeof false,
@@ -115,8 +115,8 @@ SwitchStatic.propTypes = {
115
115
  offLabel: typeof '',
116
116
 
117
117
  size: typeof [ null, 'small', 'medium', 'large' ],
118
- trackRounded: typeof [ null, '0', 'small', 'medium', 'large', 'pill', 'circle' ],
119
- thumbRounded: typeof [ null, '0', 'small', 'medium', 'large', 'pill', 'circle' ],
118
+ trackRounded: typeof [ null, 'small', 'medium', 'large', 'full' ],
119
+ thumbRounded: typeof [ null, 'small', 'medium', 'large', 'full' ],
120
120
 
121
121
  hover: typeof false,
122
122
  focus: typeof false,
@@ -1,4 +1,4 @@
1
- import { globalDefaultProps } from '../component';
1
+ import { globalDefaultProps } from '../component/index';
2
2
  import { Input, InputStatic, InputInnerTextareaStatic } from '../input/index';
3
3
 
4
4
  class Textarea extends Input {
@@ -117,7 +117,7 @@ TextareaStatic.propTypes = {
117
117
  suffix: typeof '#fragment',
118
118
 
119
119
  size: typeof [ null, 'small', 'medium', 'large' ],
120
- rounded: typeof [ null, 'small', 'medium', 'large', 'pill' ],
120
+ rounded: typeof [ null, 'small', 'medium', 'large', 'full' ],
121
121
 
122
122
  fillMode: typeof [ null, 'solid', 'flat', 'outline' ],
123
123
 
@@ -1,4 +1,4 @@
1
- import { globalDefaultProps } from '../component';
1
+ import { globalDefaultProps } from '../component/index';
2
2
  import { Input, InputStatic, InputInnerInputStatic } from '../input/index';
3
3
  import { InputValidationIconStatic, InputLoadingIconStatic, InputClearValueStatic } from '../input/index';
4
4
 
@@ -140,7 +140,7 @@ TextboxStatic.propTypes = {
140
140
  suffix: typeof '#fragment',
141
141
 
142
142
  size: typeof [ null, 'small', 'medium', 'large' ],
143
- rounded: typeof [ null, 'small', 'medium', 'large', 'pill' ],
143
+ rounded: typeof [ null, 'small', 'medium', 'large', 'full' ],
144
144
 
145
145
  fillMode: typeof [ null, 'solid', 'flat', 'outline' ],
146
146
 
@@ -1,4 +1,4 @@
1
- import { globalDefaultProps } from '../component';
1
+ import { globalDefaultProps } from '../component/index';
2
2
  import { Input, InputStatic, InputInnerInputStatic } from '../input/index';
3
3
  import { InputValidationIconStatic, InputLoadingIconStatic, InputClearValueStatic } from '../input/index';
4
4
  import { ButtonStatic } from '../button/index';
@@ -76,17 +76,15 @@ function TimePickerStatic(props) {
76
76
  'k-widget',
77
77
  'k-timepicker',
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-picker-wrap',
85
- {
86
- 'k-state-hover': hover === true,
87
- 'k-state-focused': focus === true,
88
- 'k-state-invalid': invalid === true
89
- }
87
+ 'k-picker-wrap'
90
88
  ];
91
89
 
92
90
  return (
@@ -150,7 +148,7 @@ TimePickerStatic.propTypes = {
150
148
  suffix: typeof '#fragment',
151
149
 
152
150
  size: typeof [ null, 'small', 'medium', 'large' ],
153
- rounded: typeof [ null, 'small', 'medium', 'large', 'pill' ],
151
+ rounded: typeof [ null, 'small', 'medium', 'large', 'full' ],
154
152
 
155
153
  fillMode: typeof [ null, 'solid', 'flat', 'outline' ],
156
154