@itcase/ui 1.0.34 → 1.0.36

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.
@@ -77,8 +77,8 @@ function Avatar(props) {
77
77
  propsKey: 'shape'
78
78
  });
79
79
  var avatarChars = React.useMemo(function () {
80
- var firstChar = (firstName[0] || '').toUpperCase();
81
- var secondChar = (secondName[0] || '').toUpperCase();
80
+ var firstChar = ((firstName == null ? void 0 : firstName[0]) || '').toUpperCase();
81
+ var secondChar = ((secondName == null ? void 0 : secondName[0]) || '').toUpperCase();
82
82
  return "" + firstChar + secondChar;
83
83
  }, [firstName, secondName]);
84
84
  return /*#__PURE__*/React__default.default.createElement("div", {
@@ -90,12 +90,12 @@ function Avatar(props) {
90
90
  className: "avatar__image",
91
91
  shape: "circular",
92
92
  src: src
93
- }) : avatarChars ? /*#__PURE__*/React__default.default.createElement(index$1.Text, {
93
+ }) : /*#__PURE__*/React__default.default.createElement(index$1.Text, {
94
94
  className: "avatar__name",
95
95
  size: textSize,
96
96
  textColor: textColor,
97
97
  textWeight: textWeight
98
- }, avatarChars) : null, icon && /*#__PURE__*/React__default.default.createElement(index$2.Icon, {
98
+ }, avatarChars), icon && /*#__PURE__*/React__default.default.createElement(index$2.Icon, {
99
99
  className: "avatar__icon",
100
100
  fill: iconFill,
101
101
  fillHover: iconFillHover,
@@ -120,7 +120,9 @@ Avatar.defaultProps = {
120
120
  titleColor: 'surfaceTextPrimary',
121
121
  titleTag: 'span',
122
122
  titleSize: 'xxl',
123
- textColor: 'surfaceTextTertiary'
123
+ textColor: 'surfaceTextTertiary',
124
+ firstName: '',
125
+ secondName: ''
124
126
  };
125
127
 
126
128
  exports.Avatar = Avatar;
@@ -112,14 +112,14 @@ function Dropdown(props) {
112
112
  var _useStyles = useStyles.useStyles(props),
113
113
  styles = _useStyles.styles;
114
114
  return /*#__PURE__*/React__default.default.createElement("div", {
115
- className: clsx__default.default(className, 'dropdown', set && "dropdown_set_" + set, shapeClass, fillClass, fillHoverClass, elevationClass, isOpen ? 'dropdown_state_open' : 'dropdown_state_close', animationState.className),
115
+ className: clsx__default.default(className, 'dropdown', set && "dropdown_set_" + set, shapeClass, elevationClass, isOpen ? 'dropdown_state_open' : 'dropdown_state_close', animationState.className),
116
116
  ref: dropdownRef,
117
117
  style: styles
118
118
  }, children &&
119
119
  /*#__PURE__*/
120
120
  // Add "onAnimationEnd" only for wrapper for ignore dropdown button
121
121
  React__default.default.createElement("div", {
122
- className: "dropdown__wrapper",
122
+ className: clsx__default.default('dropdown__wrapper', fillClass, fillHoverClass),
123
123
  onAnimationEnd: onAnimationEnd
124
124
  }, children));
125
125
  }
@@ -309,7 +309,9 @@ function GridRow(props) {
309
309
  var id = props.id,
310
310
  children = props.children,
311
311
  className = props.className,
312
- dataTour = props.dataTour;
312
+ dataTour = props.dataTour,
313
+ Tag = props.tag,
314
+ htmlFor = props.htmlFor;
313
315
  var fillClass = useDeviceTargetClass.useDeviceTargetClass(props, {
314
316
  prefix: 'fill_',
315
317
  propsKey: 'fill'
@@ -320,9 +322,10 @@ function GridRow(props) {
320
322
  });
321
323
  var _useStyles = useStyles.useStyles(props),
322
324
  gridRowStyles = _useStyles.styles;
323
- return /*#__PURE__*/React__default.default.createElement("div", {
325
+ return /*#__PURE__*/React__default.default.createElement(Tag, {
324
326
  className: clsx__default.default(className, 'grid__row', fillClass, fillHoverClass),
325
327
  id: id,
328
+ htmlFor: htmlFor,
326
329
  style: gridRowStyles,
327
330
  "data-tour": dataTour
328
331
  }, children);
@@ -376,6 +379,9 @@ GridRow.propTypes = {
376
379
  zIndexTablet: PropTypes__default.default.number,
377
380
  zIndexDesktop: PropTypes__default.default.number
378
381
  };
382
+ GridRow.defaultProps = {
383
+ tag: 'div'
384
+ };
379
385
 
380
386
  exports.Grid = Grid;
381
387
  exports.GridItem = GridItem;
@@ -45,6 +45,8 @@ function Label(props) {
45
45
  labelTextWrap = props.labelTextWrap,
46
46
  labelTextColor = props.labelTextColor,
47
47
  set = props.set,
48
+ before = props.before,
49
+ after = props.after,
48
50
  dataTour = props.dataTour,
49
51
  type = props.type;
50
52
  var alignDirectionClass = useDeviceTargetClass.useDeviceTargetClass(props, {
@@ -85,7 +87,7 @@ function Label(props) {
85
87
  className: clsx__default.default(className, 'label', fillClass || labelConfig.appearance[appearance] && ("fill_" + labelConfig.appearance[appearance].fillClass).replace(/([A-Z])/g, '-$1').toLowerCase(), shapeClass, borderClass, borderTypeClass, sizeClass, wrapClass, alignDirectionClass, alignClass, type && "label_type_" + type, set && "label_set_" + set),
86
88
  "data-tour": dataTour,
87
89
  style: labelStyles
88
- }, /*#__PURE__*/React__default.default.createElement("div", {
90
+ }, before, /*#__PURE__*/React__default.default.createElement("div", {
89
91
  className: "label__inner"
90
92
  }, typeof label === 'string' ? /*#__PURE__*/React__default.default.createElement(index.Text, {
91
93
  className: "label__label",
@@ -94,7 +96,7 @@ function Label(props) {
94
96
  textWrap: labelTextWrap
95
97
  }, label) : /*#__PURE__*/React__default.default.createElement("div", {
96
98
  className: "label__label"
97
- }, label), children));
99
+ }, label), children), after);
98
100
  }
99
101
  Label.propTypes = {
100
102
  children: PropTypes__default.default.any,
@@ -5,13 +5,13 @@ var PropTypes = require('prop-types');
5
5
  var clsx = require('clsx');
6
6
  var index = require('./Text.js');
7
7
  var useDeviceTargetClass = require('../hooks/useDeviceTargetClass.js');
8
+ var useStyles = require('../useStyles-e4accb53.js');
8
9
  require('../constants/componentProps/textColor.js');
9
10
  require('../constants/componentProps/textColorActive.js');
10
11
  require('../constants/componentProps/textColorHover.js');
11
12
  require('../constants/componentProps/size.js');
12
13
  require('../constants/componentProps/textStyle.js');
13
14
  require('../constants/componentProps/textWeight.js');
14
- require('../useStyles-e4accb53.js');
15
15
  require('lodash/camelCase');
16
16
  require('lodash/maxBy');
17
17
  require('lodash/upperFirst');
@@ -27,8 +27,15 @@ var React__default = /*#__PURE__*/_interopDefault(React);
27
27
  var PropTypes__default = /*#__PURE__*/_interopDefault(PropTypes);
28
28
  var clsx__default = /*#__PURE__*/_interopDefault(clsx);
29
29
 
30
+ var loaderConfig = {
31
+ appearance: {},
32
+ setAppearance: function setAppearance(newComponent) {
33
+ loaderConfig.appearance = newComponent;
34
+ }
35
+ };
30
36
  function Loader(props) {
31
- var className = props.className,
37
+ var appearance = props.appearance,
38
+ className = props.className,
32
39
  children = props.children,
33
40
  set = props.set,
34
41
  text = props.text,
@@ -42,16 +49,32 @@ function Loader(props) {
42
49
  prefix: 'fill_',
43
50
  propsKey: 'fill'
44
51
  });
52
+ var widthClass = useDeviceTargetClass.useDeviceTargetClass(props, {
53
+ prefix: 'width_',
54
+ propsKey: 'width'
55
+ });
56
+ var heightClass = useDeviceTargetClass.useDeviceTargetClass(props, {
57
+ prefix: 'height_',
58
+ propsKey: 'height'
59
+ });
60
+ var positionClass = useDeviceTargetClass.useDeviceTargetClass(props, {
61
+ prefix: 'position_',
62
+ propsKey: 'position'
63
+ });
64
+ var _useStyles = useStyles.useStyles(props),
65
+ loader = _useStyles.styles;
66
+ var itemFill = itemFillClass || loaderConfig.appearance[appearance] && ("fill_" + loaderConfig.appearance[appearance].itemFillClass.replace(/([A-Z])/g, '-$1')).toLowerCase();
45
67
  return /*#__PURE__*/React__default.default.createElement("div", {
46
- className: clsx__default.default('loader', fillClass, className, set && "loader_set_" + set)
68
+ className: clsx__default.default('loader', positionClass, widthClass, heightClass, fillClass || loaderConfig.appearance[appearance] && ("fill_" + loaderConfig.appearance[appearance].fillClass).replace(/([A-Z])/g, '-$1').toLowerCase(), className, set && "loader_set_" + set),
69
+ style: loader
47
70
  }, children || /*#__PURE__*/React__default.default.createElement("div", {
48
71
  className: "loader__inner"
49
72
  }, /*#__PURE__*/React__default.default.createElement("span", {
50
- className: clsx__default.default('loader__item', itemFillClass)
73
+ className: clsx__default.default('loader__item', itemFill)
51
74
  }), /*#__PURE__*/React__default.default.createElement("span", {
52
- className: clsx__default.default('loader__item', itemFillClass)
75
+ className: clsx__default.default('loader__item', itemFill)
53
76
  }), /*#__PURE__*/React__default.default.createElement("span", {
54
- className: clsx__default.default('loader__item', itemFillClass)
77
+ className: clsx__default.default('loader__item', itemFill)
55
78
  })), text && /*#__PURE__*/React__default.default.createElement(index.Text, {
56
79
  className: "loader__text",
57
80
  size: textSize,
@@ -68,3 +91,4 @@ Loader.propTypes = {
68
91
  };
69
92
 
70
93
  exports.Loader = Loader;
94
+ exports.loaderConfig = loaderConfig;
@@ -47,7 +47,8 @@ function RadioButton(props) {
47
47
  label = props.label,
48
48
  labelTextSize = props.labelTextSize,
49
49
  labelTextWidth = props.labelTextWidth,
50
- labelTextColor = props.labelTextColor;
50
+ labelTextColor = props.labelTextColor,
51
+ Tag = props.tag;
51
52
  var fillClass = useDeviceTargetClass.useDeviceTargetClass(props, {
52
53
  prefix: 'fill_',
53
54
  propsKey: 'fill'
@@ -88,7 +89,7 @@ function RadioButton(props) {
88
89
  prefix: 'border-color_',
89
90
  propsKey: checked ? 'stateBorderColorDisabledChecked' : 'stateBorderColorDisabled'
90
91
  });
91
- return /*#__PURE__*/React__default.default.createElement("label", {
92
+ return /*#__PURE__*/React__default.default.createElement(Tag, {
92
93
  htmlFor: id,
93
94
  "class": clsx__default.default(className, 'radio-button', fillClass, shapeClass)
94
95
  }, /*#__PURE__*/React__default.default.createElement("div", {
@@ -119,8 +120,9 @@ function RadioButton(props) {
119
120
  RadioButton.propTypes = {
120
121
  className: PropTypes__default.default.string
121
122
  };
122
- RadioButton.defaulProps = {
123
- shape: 'circular'
123
+ RadioButton.defaultProps = {
124
+ shape: 'circular',
125
+ tag: 'label'
124
126
  };
125
127
 
126
128
  exports.RadioButton = RadioButton;
@@ -6,15 +6,14 @@
6
6
  ^^&__wrapper {
7
7
  display: flex;
8
8
  flex-direction: column;
9
- padding: 12px 0;
9
+ padding: var(--dropdown-normal-padding, 12px 0);
10
10
  }
11
11
  }
12
12
  &_compact {
13
13
  ^^&__wrapper {
14
14
  display: flex;
15
15
  flex-direction: column;
16
- padding: 8px 0;
17
- gap: 8px;
16
+ padding: var(--dropdown-compact-padding, 8px 0);
18
17
  }
19
18
  }
20
19
  }
@@ -36,8 +35,11 @@
36
35
  .dropdown {
37
36
  &_shape {
38
37
  &_rounded {
39
- border-radius: 12px;
40
- position: relative;
38
+ border-radius: var(--dropdown-shape-rounded, 12px);
39
+ ^^&__wrapper {
40
+ border-radius: var(--dropdown-shape-rounded, 12px);
41
+ overflow: hidden;
42
+ }
41
43
  }
42
44
  }
43
45
  }
@@ -62,11 +64,11 @@
62
64
  &_set {
63
65
  &_normal {
64
66
  min-width: 240px;
65
- padding: 10px 12px 10px 16px;
67
+ padding: var(--dropdown-item-normal-padding, 10px 12px 10px 16px);
66
68
  }
67
69
  &_compact {
68
70
  min-width: 180px;
69
- padding: 0 12px 0 16px;
71
+ padding: var(--dropdown-item-compact-padding, 0 12px 0 16px);
70
72
  }
71
73
  }
72
74
  &-label {
@@ -76,7 +78,6 @@
76
78
  @each $size in normal, compact {
77
79
  &_$(size) {
78
80
  ^^&-label {
79
- padding: var(--dropdown-item-size-$(size)-padding);
80
81
  gap: var(--dropdown-item-size-$(size)-gap);
81
82
  }
82
83
  }
@@ -153,6 +153,7 @@
153
153
  }
154
154
  .grid {
155
155
  &__item {
156
+ transition: var(--grid-item-transition);
156
157
  }
157
158
  }
158
159
  .grid {
@@ -210,5 +211,10 @@
210
211
  .grid {
211
212
  &__row {
212
213
  display: grid;
214
+ transition: var(--grid-row-transition);
213
215
  }
214
216
  }
217
+ :root {
218
+ --grid-row-transition: all 0.2s ease 0s;
219
+ --grid-item-transition: all 0.2s ease 0s;
220
+ }
@@ -1,4 +1,5 @@
1
1
  .grid {
2
2
  &__item {
3
+ transition: var(--grid-item-transition);
3
4
  }
4
5
  }
@@ -1,5 +1,6 @@
1
1
  .grid {
2
2
  &__row {
3
3
  display: grid;
4
+ transition: var(--grid-row-transition);
4
5
  }
5
6
  }
@@ -1,15 +1,5 @@
1
1
  .group {
2
- &_wrap {
3
- &_wrap {
4
- flex-wrap: wrap;
5
- }
6
- &_nowrap {
7
- flex-wrap: nowrap;
8
- }
9
- &_wrap-reverse {
10
- flex-wrap: wrap-reverse;
11
- }
12
- }
2
+ transition: var(--group-transition);
13
3
  }
14
4
 
15
5
  .group {
@@ -33,7 +33,7 @@
33
33
  .input {
34
34
  &_shape {
35
35
  &_rounded {
36
- border-radius: 4px;
36
+ border-radius: var(--input-shape-rounded, 4px);
37
37
  position: relative;
38
38
  }
39
39
  &_underline {
@@ -1,5 +1,7 @@
1
1
  .label {
2
2
  display: inline-flex;
3
+ position: relative;
4
+ overflow: hidden;
3
5
  &__inner {
4
6
  font-size: 0;
5
7
  line-height: 0;
@@ -10,7 +12,9 @@
10
12
  &_size {
11
13
  @each $size in xxs, xs, s, m, l, xl, xxl {
12
14
  &_$(size) {
13
- padding: var(--label-size-$(size)-padding);
15
+ ^^&__inner {
16
+ padding: var(--label-size-$(size)-padding);
17
+ }
14
18
  }
15
19
  }
16
20
  }
@@ -24,7 +24,7 @@
24
24
  border-radius: 100%;
25
25
  display: inline-block;
26
26
  margin: 4px;
27
- animation: loaderFilter 1.4s infinite ease-in-out both;
27
+ animation: loaderSimple 1.4s infinite ease-in-out both;
28
28
  &:first-child {
29
29
  animation-delay: -0.32s;
30
30
  }
@@ -35,7 +35,7 @@
35
35
  }
36
36
  }
37
37
  }
38
- @keyframes loaderFilter {
38
+ @keyframes loaderSimple {
39
39
  0%, 80%, 100% {
40
40
  transform: scale(0);
41
41
  } 40% {
@@ -32,6 +32,9 @@
32
32
  width: 100%;
33
33
  height: 100%;
34
34
  z-index: 3;
35
+ &:disabled + .radio-button__state {
36
+ border-color: transparent !important;
37
+ }
35
38
  }
36
39
  ^&__state {
37
40
  flex: 1;
@@ -66,14 +69,18 @@
66
69
  .radio-button {
67
70
  &_shape {
68
71
  &_rounded {
69
- border-radius: 4px;
70
- position: relative;
71
- overflow: hidden;
72
+ ^^&__item {
73
+ border-radius: 4px;
74
+ position: relative;
75
+ overflow: hidden;
76
+ }
72
77
  }
73
78
  &_circular {
74
- border-radius: 50%;
75
- position: relative;
76
- overflow: hidden;
79
+ ^^&__item {
80
+ border-radius: 50%;
81
+ position: relative;
82
+ overflow: hidden;
83
+ }
77
84
  }
78
85
  }
79
86
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@itcase/ui",
3
- "version": "1.0.34",
3
+ "version": "1.0.36",
4
4
  "description": "UI components (Modal, Loader, Popup, etc)",
5
5
  "keywords": [
6
6
  "Modal",