@commercetools-uikit/input-utils 16.0.0 → 16.1.1

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.
@@ -10,6 +10,8 @@ var reactIntl = require('react-intl');
10
10
  var FlatButton = require('@commercetools-uikit/flat-button');
11
11
  var icons = require('@commercetools-uikit/icons');
12
12
  var jsxRuntime = require('@emotion/react/jsx-runtime');
13
+ var _defineProperty = require('@babel/runtime-corejs3/helpers/defineProperty');
14
+ var _parseInt = require('@babel/runtime-corejs3/core-js-stable/parse-int');
13
15
  var _Object$keys = require('@babel/runtime-corejs3/core-js-stable/object/keys');
14
16
  var _Object$getOwnPropertySymbols = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols');
15
17
  var _filterInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/filter');
@@ -18,7 +20,6 @@ var _forEachInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/in
18
20
  var _Object$getOwnPropertyDescriptors = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors');
19
21
  var _Object$defineProperties = require('@babel/runtime-corejs3/core-js-stable/object/define-properties');
20
22
  var _Object$defineProperty = require('@babel/runtime-corejs3/core-js-stable/object/define-property');
21
- var _defineProperty = require('@babel/runtime-corejs3/helpers/defineProperty');
22
23
  var TextareaAutosize = require('react-textarea-autosize');
23
24
  var utils = require('@commercetools-uikit/utils');
24
25
 
@@ -26,6 +27,7 @@ function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e };
26
27
 
27
28
  var _pt__default = /*#__PURE__*/_interopDefault(_pt);
28
29
  var FlatButton__default = /*#__PURE__*/_interopDefault(FlatButton);
30
+ var _parseInt__default = /*#__PURE__*/_interopDefault(_parseInt);
29
31
  var _Object$keys__default = /*#__PURE__*/_interopDefault(_Object$keys);
30
32
  var _Object$getOwnPropertySymbols__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertySymbols);
31
33
  var _filterInstanceProperty__default = /*#__PURE__*/_interopDefault(_filterInstanceProperty);
@@ -59,7 +61,6 @@ const defaultProps = {
59
61
  hideMessage: messages$1.hide,
60
62
  showMessage: messages$1.show
61
63
  };
62
-
63
64
  var _ref = process.env.NODE_ENV === "production" ? {
64
65
  name: "xyzkeb",
65
66
  styles: "align-self:flex-start"
@@ -69,7 +70,6 @@ var _ref = process.env.NODE_ENV === "production" ? {
69
70
  map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxvY2FsaXplZC1pbnB1dC10b2dnbGUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTBDYyIsImZpbGUiOiJsb2NhbGl6ZWQtaW5wdXQtdG9nZ2xlLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCB0eXBlIHsgTWVzc2FnZURlc2NyaXB0b3IgfSBmcm9tICdyZWFjdC1pbnRsJztcbmltcG9ydCB7IE1vdXNlRXZlbnQsIEtleWJvYXJkRXZlbnQsIFJlYWN0RWxlbWVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUludGwgfSBmcm9tICdyZWFjdC1pbnRsJztcbmltcG9ydCBGbGF0QnV0dG9uIGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2ZsYXQtYnV0dG9uJztcbmltcG9ydCB7IFdvcmxkSWNvbiB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2ljb25zJztcbmltcG9ydCBtZXNzYWdlcyBmcm9tICcuLi9tZXNzYWdlcy9sb2NhbGl6ZWQtaW5wdXQnO1xuXG5leHBvcnQgdHlwZSBUTG9jYWxpemVkSW5wdXRUb2dnbGVQcm9wcyA9IHtcbiAgaWNvbj86IFJlYWN0RWxlbWVudDtcbiAgaXNPcGVuPzogYm9vbGVhbjtcbiAgb25DbGljazogKFxuICAgIGV2ZW50OlxuICAgICAgfCBNb3VzZUV2ZW50PEhUTUxCdXR0b25FbGVtZW50PlxuICAgICAgfCBLZXlib2FyZEV2ZW50PEhUTUxCdXR0b25FbGVtZW50PlxuICAgICAgfCBib29sZWFuXG4gICkgPT4gdm9pZDtcbiAgaXNEaXNhYmxlZD86IGJvb2xlYW47XG4gIHNob3dNZXNzYWdlOiBzdHJpbmcgfCBNZXNzYWdlRGVzY3JpcHRvcjtcbiAgaGlkZU1lc3NhZ2U6IHN0cmluZyB8IE1lc3NhZ2VEZXNjcmlwdG9yO1xuICByZW1haW5pbmdMb2NhbGl6YXRpb25zPzogbnVtYmVyO1xufTtcblxuY29uc3QgZGVmYXVsdFByb3BzOiBQaWNrPFxuICBUTG9jYWxpemVkSW5wdXRUb2dnbGVQcm9wcyxcbiAgJ3Nob3dNZXNzYWdlJyB8ICdoaWRlTWVzc2FnZSdcbj4gPSB7XG4gIGhpZGVNZXNzYWdlOiBtZXNzYWdlcy5oaWRlLFxuICBzaG93TWVzc2FnZTogbWVzc2FnZXMuc2hvdyxcbn07XG5cbmNvbnN0IExvY2FsaXplZElucHV0VG9nZ2xlID0gKHByb3BzOiBUTG9jYWxpemVkSW5wdXRUb2dnbGVQcm9wcykgPT4ge1xuICBjb25zdCBpbnRsID0gdXNlSW50bCgpO1xuICBjb25zdCBsYWJlbE1lc3NhZ2UgPSBwcm9wcy5pc09wZW4gPyBwcm9wcy5oaWRlTWVzc2FnZSA6IHByb3BzLnNob3dNZXNzYWdlO1xuICBjb25zdCBsYWJlbCA9XG4gICAgdHlwZW9mIGxhYmVsTWVzc2FnZSA9PT0gJ3N0cmluZydcbiAgICAgID8gbGFiZWxNZXNzYWdlXG4gICAgICA6IGludGwuZm9ybWF0TWVzc2FnZShsYWJlbE1lc3NhZ2UsIHtcbiAgICAgICAgICByZW1haW5pbmdMYW5ndWFnZXM6IHByb3BzLnJlbWFpbmluZ0xvY2FsaXphdGlvbnMsXG4gICAgICAgIH0pO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGNzcz17Y3NzYFxuICAgICAgICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0O1xuICAgICAgYH1cbiAgICA+XG4gICAgICA8RmxhdEJ1dHRvblxuICAgICAgICBpY29uPXtwcm9wcy5pY29uID8gcHJvcHMuaWNvbiA6IDxXb3JsZEljb24gLz59XG4gICAgICAgIGxhYmVsPXtsYWJlbH1cbiAgICAgICAgb25DbGljaz17cHJvcHMub25DbGlja31cbiAgICAgICAgaXNEaXNhYmxlZD17cHJvcHMuaXNEaXNhYmxlZH1cbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5Mb2NhbGl6ZWRJbnB1dFRvZ2dsZS5kZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHM7XG5Mb2NhbGl6ZWRJbnB1dFRvZ2dsZS5kaXNwbGF5TmFtZSA9ICdMb2NhbGl6ZWRJbnB1dFRvZ2dsZSc7XG5leHBvcnQgZGVmYXVsdCBMb2NhbGl6ZWRJbnB1dFRvZ2dsZTtcbiJdfQ== */",
70
71
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__$1
71
72
  };
72
-
73
73
  const LocalizedInputToggle = props => {
74
74
  const intl = reactIntl.useIntl();
75
75
  const labelMessage = props.isOpen ? props.hideMessage : props.showMessage;
@@ -86,7 +86,6 @@ const LocalizedInputToggle = props => {
86
86
  })
87
87
  });
88
88
  };
89
-
90
89
  LocalizedInputToggle.propTypes = process.env.NODE_ENV !== "production" ? {
91
90
  icon: _pt__default["default"].element,
92
91
  isOpen: _pt__default["default"].bool,
@@ -102,119 +101,108 @@ var LocalizedInputToggle$1 = LocalizedInputToggle;
102
101
 
103
102
  const getInputBorderColor = function (props) {
104
103
  let defaultBorderColor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : designSystem.designTokens.borderColorForInput;
105
-
106
104
  if (props.isDisabled || props.disabled) {
107
105
  return designSystem.designTokens.borderColorForInputWhenDisabled;
108
106
  }
109
-
110
107
  if (props.hasError) {
111
108
  return designSystem.designTokens.borderColorForInputWhenError;
112
109
  }
113
-
114
110
  if (props.hasWarning) {
115
111
  return designSystem.designTokens.borderColorForInputWhenWarning;
116
112
  }
117
-
118
113
  if (props.isReadOnly || props.readOnly) {
119
114
  return designSystem.designTokens.borderColorForInputWhenReadonly;
120
115
  }
121
-
122
116
  return defaultBorderColor;
123
117
  };
124
-
125
118
  const getInputFontColor = props => {
126
119
  if (props.isDisabled || props.disabled) {
127
120
  return designSystem.designTokens.fontColorForInputWhenDisabled;
128
121
  }
129
-
130
122
  if (props.hasError) {
131
123
  return designSystem.designTokens.fontColorForInputWhenError;
132
124
  }
133
-
134
125
  if (props.hasWarning) {
135
126
  return designSystem.designTokens.fontColorForInputWhenWarning;
136
127
  }
137
-
138
128
  if (props.isReadOnly || props.readOnly) {
139
129
  return designSystem.designTokens.fontColorForInputWhenReadonly;
140
130
  }
141
-
142
131
  return designSystem.designTokens.fontColorForInput;
143
132
  };
144
-
145
133
  const getInputBorderWidth = props => {
146
134
  if (props.hasError) {
147
135
  return designSystem.designTokens.borderWidthForInputWhenError;
148
136
  }
149
-
150
137
  if (props.hasWarning) {
151
138
  return designSystem.designTokens.borderWidthForInputWhenWarning;
152
139
  }
153
-
154
140
  return designSystem.designTokens.borderWidthForInput;
155
141
  };
156
-
157
142
  const getInputBoxShadow = props => {
158
143
  if (props.hasError) {
159
144
  return designSystem.designTokens.shadowForInputWhenError;
160
145
  }
161
-
162
146
  if (props.hasWarning) {
163
147
  return designSystem.designTokens.shadowForInputWhenWarning;
164
148
  }
165
-
166
149
  return designSystem.designTokens.shadowForInput;
167
150
  };
168
-
169
151
  const getInputBackgroundColor = props => {
170
152
  if (props.isDisabled || props.disabled) {
171
153
  return designSystem.designTokens.backgroundColorForInputWhenDisabled;
172
154
  }
173
-
174
155
  if (props.isReadOnly) {
175
156
  return designSystem.designTokens.backgroundColorForInputWhenReadonly;
176
157
  }
177
-
178
158
  return designSystem.designTokens.backgroundColorForInput;
179
159
  };
180
-
181
160
  const getInputStyles = props => {
182
161
  return /*#__PURE__*/react.css("appearance:none;background-color:", getInputBackgroundColor(props), ";border:", getInputBorderWidth(props), " solid ", getInputBorderColor(props), ";border-radius:", designSystem.designTokens.borderRadiusForInput, ";box-sizing:border-box;box-shadow:", getInputBoxShadow(props), ";color:", getInputFontColor(props), ";cursor:", props.isDisabled ? 'not-allowed' : 'default', ";display:flex;flex:1;font-family:inherit;font-size:", designSystem.designTokens.fontSizeForInput, ";height:", designSystem.designTokens.heightForInput, ";min-height:", designSystem.designTokens.heightForInput, ";opacity:", props.isDisabled || props.disabled ? '1' : 'unset', ";outline:none;overflow:hidden;padding:0 ", designSystem.designTokens.paddingForInput, ";transition:border-color ", designSystem.designTokens.transitionStandard, ",background-color ", designSystem.designTokens.transitionStandard, ",color ", designSystem.designTokens.transitionStandard, ",box-shadow ", designSystem.designTokens.transitionStandard, ";width:100%;&::placeholder{color:", designSystem.designTokens.placeholderFontColorForInput, ";}:active:not(:disabled):not(:read-only),:hover:not(:disabled):not(:read-only):not(:focus){border-color:", getInputBorderColor(props, designSystem.designTokens.borderColorForInputWhenHovered), ";background-color:", designSystem.designTokens.backgroundColorForInputWhenHovered, ";}:focus:not(:read-only){box-shadow:", designSystem.designTokens.shadowForInputWhenFocused, ";border-color:", designSystem.designTokens.borderColorForInputWhenFocused, ";background-color:", designSystem.designTokens.backgroundColorForInputWhenFocused, ";}" + (process.env.NODE_ENV === "production" ? "" : ";label:getInputStyles;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE4RVkiLCJmaWxlIjoic3R5bGVzLnRzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IHsgZGVzaWduVG9rZW5zIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvZGVzaWduLXN5c3RlbSc7XG5cbnR5cGUgVElucHV0UHJvcHMgPSB7XG4gIGlzRGlzYWJsZWQ/OiBib29sZWFuO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIGhhc0Vycm9yPzogYm9vbGVhbjtcbiAgaGFzV2FybmluZz86IGJvb2xlYW47XG4gIGlzUmVhZE9ubHk/OiBib29sZWFuO1xuICByZWFkT25seT86IGJvb2xlYW47XG59O1xuXG5jb25zdCBnZXRJbnB1dEJvcmRlckNvbG9yID0gKFxuICBwcm9wczogVElucHV0UHJvcHMsXG4gIGRlZmF1bHRCb3JkZXJDb2xvcjogc3RyaW5nID0gZGVzaWduVG9rZW5zLmJvcmRlckNvbG9yRm9ySW5wdXRcbikgPT4ge1xuICBpZiAocHJvcHMuaXNEaXNhYmxlZCB8fCBwcm9wcy5kaXNhYmxlZCkge1xuICAgIHJldHVybiBkZXNpZ25Ub2tlbnMuYm9yZGVyQ29sb3JGb3JJbnB1dFdoZW5EaXNhYmxlZDtcbiAgfVxuICBpZiAocHJvcHMuaGFzRXJyb3IpIHtcbiAgICByZXR1cm4gZGVzaWduVG9rZW5zLmJvcmRlckNvbG9yRm9ySW5wdXRXaGVuRXJyb3I7XG4gIH1cbiAgaWYgKHByb3BzLmhhc1dhcm5pbmcpIHtcbiAgICByZXR1cm4gZGVzaWduVG9rZW5zLmJvcmRlckNvbG9yRm9ySW5wdXRXaGVuV2FybmluZztcbiAgfVxuICBpZiAocHJvcHMuaXNSZWFkT25seSB8fCBwcm9wcy5yZWFkT25seSkge1xuICAgIHJldHVybiBkZXNpZ25Ub2tlbnMuYm9yZGVyQ29sb3JGb3JJbnB1dFdoZW5SZWFkb25seTtcbiAgfVxuICByZXR1cm4gZGVmYXVsdEJvcmRlckNvbG9yO1xufTtcblxuY29uc3QgZ2V0SW5wdXRGb250Q29sb3IgPSAocHJvcHM6IFRJbnB1dFByb3BzKSA9PiB7XG4gIGlmIChwcm9wcy5pc0Rpc2FibGVkIHx8IHByb3BzLmRpc2FibGVkKSB7XG4gICAgcmV0dXJuIGRlc2lnblRva2Vucy5mb250Q29sb3JGb3JJbnB1dFdoZW5EaXNhYmxlZDtcbiAgfVxuICBpZiAocHJvcHMuaGFzRXJyb3IpIHtcbiAgICByZXR1cm4gZGVzaWduVG9rZW5zLmZvbnRDb2xvckZvcklucHV0V2hlbkVycm9yO1xuICB9XG4gIGlmIChwcm9wcy5oYXNXYXJuaW5nKSB7XG4gICAgcmV0dXJuIGRlc2lnblRva2Vucy5mb250Q29sb3JGb3JJbnB1dFdoZW5XYXJuaW5nO1xuICB9XG4gIGlmIChwcm9wcy5pc1JlYWRPbmx5IHx8IHByb3BzLnJlYWRPbmx5KSB7XG4gICAgcmV0dXJuIGRlc2lnblRva2Vucy5mb250Q29sb3JGb3JJbnB1dFdoZW5SZWFkb25seTtcbiAgfVxuICByZXR1cm4gZGVzaWduVG9rZW5zLmZvbnRDb2xvckZvcklucHV0O1xufTtcblxuY29uc3QgZ2V0SW5wdXRCb3JkZXJXaWR0aCA9IChwcm9wczogVElucHV0UHJvcHMpID0+IHtcbiAgaWYgKHByb3BzLmhhc0Vycm9yKSB7XG4gICAgcmV0dXJuIGRlc2lnblRva2Vucy5ib3JkZXJXaWR0aEZvcklucHV0V2hlbkVycm9yO1xuICB9XG4gIGlmIChwcm9wcy5oYXNXYXJuaW5nKSB7XG4gICAgcmV0dXJuIGRlc2lnblRva2Vucy5ib3JkZXJXaWR0aEZvcklucHV0V2hlbldhcm5pbmc7XG4gIH1cbiAgcmV0dXJuIGRlc2lnblRva2Vucy5ib3JkZXJXaWR0aEZvcklucHV0O1xufTtcblxuY29uc3QgZ2V0SW5wdXRCb3hTaGFkb3cgPSAocHJvcHM6IFRJbnB1dFByb3BzKSA9PiB7XG4gIGlmIChwcm9wcy5oYXNFcnJvcikge1xuICAgIHJldHVybiBkZXNpZ25Ub2tlbnMuc2hhZG93Rm9ySW5wdXRXaGVuRXJyb3I7XG4gIH1cbiAgaWYgKHByb3BzLmhhc1dhcm5pbmcpIHtcbiAgICByZXR1cm4gZGVzaWduVG9rZW5zLnNoYWRvd0ZvcklucHV0V2hlbldhcm5pbmc7XG4gIH1cbiAgcmV0dXJuIGRlc2lnblRva2Vucy5zaGFkb3dGb3JJbnB1dDtcbn07XG5cbmNvbnN0IGdldElucHV0QmFja2dyb3VuZENvbG9yID0gKHByb3BzOiBUSW5wdXRQcm9wcykgPT4ge1xuICBpZiAocHJvcHMuaXNEaXNhYmxlZCB8fCBwcm9wcy5kaXNhYmxlZCkge1xuICAgIHJldHVybiBkZXNpZ25Ub2tlbnMuYmFja2dyb3VuZENvbG9yRm9ySW5wdXRXaGVuRGlzYWJsZWQ7XG4gIH1cbiAgaWYgKHByb3BzLmlzUmVhZE9ubHkpIHtcbiAgICByZXR1cm4gZGVzaWduVG9rZW5zLmJhY2tncm91bmRDb2xvckZvcklucHV0V2hlblJlYWRvbmx5O1xuICB9XG4gIHJldHVybiBkZXNpZ25Ub2tlbnMuYmFja2dyb3VuZENvbG9yRm9ySW5wdXQ7XG59O1xuXG5jb25zdCBnZXRJbnB1dFN0eWxlcyA9IChwcm9wczogVElucHV0UHJvcHMpID0+IHtcbiAgcmV0dXJuIGNzc2BcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7Z2V0SW5wdXRCYWNrZ3JvdW5kQ29sb3IocHJvcHMpfTtcbiAgICBib3JkZXI6ICR7Z2V0SW5wdXRCb3JkZXJXaWR0aChwcm9wcyl9IHNvbGlkICR7Z2V0SW5wdXRCb3JkZXJDb2xvcihwcm9wcyl9O1xuICAgIGJvcmRlci1yYWRpdXM6ICR7ZGVzaWduVG9rZW5zLmJvcmRlclJhZGl1c0ZvcklucHV0fTtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGJveC1zaGFkb3c6ICR7Z2V0SW5wdXRCb3hTaGFkb3cocHJvcHMpfTtcbiAgICBjb2xvcjogJHtnZXRJbnB1dEZvbnRDb2xvcihwcm9wcyl9O1xuICAgIGN1cnNvcjogJHtwcm9wcy5pc0Rpc2FibGVkID8gJ25vdC1hbGxvd2VkJyA6ICdkZWZhdWx0J307XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4OiAxO1xuICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICAgIGZvbnQtc2l6ZTogJHtkZXNpZ25Ub2tlbnMuZm9udFNpemVGb3JJbnB1dH07XG4gICAgaGVpZ2h0OiAke2Rlc2lnblRva2Vucy5oZWlnaHRGb3JJbnB1dH07XG4gICAgbWluLWhlaWdodDogJHtkZXNpZ25Ub2tlbnMuaGVpZ2h0Rm9ySW5wdXR9O1xuICAgIG9wYWNpdHk6ICR7cHJvcHMuaXNEaXNhYmxlZCB8fCBwcm9wcy5kaXNhYmxlZFxuICAgICAgPyAnMSdcbiAgICAgIDogJ3Vuc2V0J307IC8qIGZpeCBmb3IgbW9iaWxlIHNhZmFyaSAqL1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBwYWRkaW5nOiAwICR7ZGVzaWduVG9rZW5zLnBhZGRpbmdGb3JJbnB1dH07XG4gICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yICR7ZGVzaWduVG9rZW5zLnRyYW5zaXRpb25TdGFuZGFyZH0sXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yICR7ZGVzaWduVG9rZW5zLnRyYW5zaXRpb25TdGFuZGFyZH0sXG4gICAgICBjb2xvciAke2Rlc2lnblRva2Vucy50cmFuc2l0aW9uU3RhbmRhcmR9LFxuICAgICAgYm94LXNoYWRvdyAke2Rlc2lnblRva2Vucy50cmFuc2l0aW9uU3RhbmRhcmR9O1xuICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgJjo6cGxhY2Vob2xkZXIge1xuICAgICAgY29sb3I6ICR7ZGVzaWduVG9rZW5zLnBsYWNlaG9sZGVyRm9udENvbG9yRm9ySW5wdXR9O1xuICAgIH1cbiAgICA6YWN0aXZlOm5vdCg6ZGlzYWJsZWQpOm5vdCg6cmVhZC1vbmx5KSxcbiAgICA6aG92ZXI6bm90KDpkaXNhYmxlZCk6bm90KDpyZWFkLW9ubHkpOm5vdCg6Zm9jdXMpIHtcbiAgICAgIGJvcmRlci1jb2xvcjogJHtnZXRJbnB1dEJvcmRlckNvbG9yKFxuICAgICAgICBwcm9wcyxcbiAgICAgICAgZGVzaWduVG9rZW5zLmJvcmRlckNvbG9yRm9ySW5wdXRXaGVuSG92ZXJlZFxuICAgICAgKX07XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke2Rlc2lnblRva2Vucy5iYWNrZ3JvdW5kQ29sb3JGb3JJbnB1dFdoZW5Ib3ZlcmVkfTtcbiAgICB9XG4gICAgOmZvY3VzOm5vdCg6cmVhZC1vbmx5KSB7XG4gICAgICBib3gtc2hhZG93OiAke2Rlc2lnblRva2Vucy5zaGFkb3dGb3JJbnB1dFdoZW5Gb2N1c2VkfTtcbiAgICAgIGJvcmRlci1jb2xvcjogJHtkZXNpZ25Ub2tlbnMuYm9yZGVyQ29sb3JGb3JJbnB1dFdoZW5Gb2N1c2VkfTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7ZGVzaWduVG9rZW5zLmJhY2tncm91bmRDb2xvckZvcklucHV0V2hlbkZvY3VzZWR9O1xuICAgIH1cbiAgYDtcbn07XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvcHJlZmVyLWRlZmF1bHQtZXhwb3J0XG5leHBvcnQgeyBnZXRJbnB1dFN0eWxlcyB9O1xuIl19 */");
183
- }; // eslint-disable-next-line import/prefer-default-export
162
+ };
184
163
 
185
164
  /* we need this line-height to achieve 32px height when the component has only one row */
186
- const sizeInputLineHeight = '22px'; // NOTE: order is important here
165
+ const sizeInputLineHeight = '22px';
166
+
167
+ // NOTE: order is important here
187
168
  // * a disabled-field currently does not display warning/error-states so it takes precedence
188
169
  // * a readonly-field cannot be changed, but it might be relevant for validation, so error and warning are checked first
189
170
  // how you can interact with the field is controlled separately by the props, this only influences visuals
190
-
191
171
  const getTextareaStyles = props => {
192
- const baseStyles = [getInputStyles(props), /*#__PURE__*/react.css("padding:", designSystem.designTokens.paddingForMultilineInput, ";line-height:", sizeInputLineHeight, ";flex:auto;word-break:break-word;white-space:pre-wrap;resize:vertical;" + (process.env.NODE_ENV === "production" ? "" : ";label:baseStyles;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm11bHRpbGluZS1pbnB1dC5zdHlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZU8iLCJmaWxlIjoibXVsdGlsaW5lLWlucHV0LnN0eWxlcy50cyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCB7IGRlc2lnblRva2VucyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2Rlc2lnbi1zeXN0ZW0nO1xuaW1wb3J0IHsgZ2V0SW5wdXRTdHlsZXMgfSBmcm9tICcuLi9zdHlsZXMnO1xuaW1wb3J0IHR5cGUgeyBUTXVsdGlMaW5lSW5wdXRQcm9wcyB9IGZyb20gJy4vbXVsdGlsaW5lLWlucHV0JztcblxuLyogd2UgbmVlZCB0aGlzIGxpbmUtaGVpZ2h0IHRvIGFjaGlldmUgMzJweCBoZWlnaHQgd2hlbiB0aGUgY29tcG9uZW50IGhhcyBvbmx5IG9uZSByb3cgKi9cbmNvbnN0IHNpemVJbnB1dExpbmVIZWlnaHQgPSAnMjJweCc7XG5cbi8vIE5PVEU6IG9yZGVyIGlzIGltcG9ydGFudCBoZXJlXG4vLyAqIGEgZGlzYWJsZWQtZmllbGQgY3VycmVudGx5IGRvZXMgbm90IGRpc3BsYXkgd2FybmluZy9lcnJvci1zdGF0ZXMgc28gaXQgdGFrZXMgcHJlY2VkZW5jZVxuLy8gKiBhIHJlYWRvbmx5LWZpZWxkIGNhbm5vdCBiZSBjaGFuZ2VkLCBidXQgaXQgbWlnaHQgYmUgcmVsZXZhbnQgZm9yIHZhbGlkYXRpb24sIHNvIGVycm9yIGFuZCB3YXJuaW5nIGFyZSBjaGVja2VkIGZpcnN0XG4vLyBob3cgeW91IGNhbiBpbnRlcmFjdCB3aXRoIHRoZSBmaWVsZCBpcyBjb250cm9sbGVkIHNlcGFyYXRlbHkgYnkgdGhlIHByb3BzLCB0aGlzIG9ubHkgaW5mbHVlbmNlcyB2aXN1YWxzXG5jb25zdCBnZXRUZXh0YXJlYVN0eWxlcyA9IChwcm9wczogVE11bHRpTGluZUlucHV0UHJvcHMpID0+IHtcbiAgY29uc3QgYmFzZVN0eWxlcyA9IFtcbiAgICBnZXRJbnB1dFN0eWxlcyhwcm9wcyksXG4gICAgY3NzYFxuICAgICAgcGFkZGluZzogJHtkZXNpZ25Ub2tlbnMucGFkZGluZ0Zvck11bHRpbGluZUlucHV0fTtcbiAgICAgIGxpbmUtaGVpZ2h0OiAke3NpemVJbnB1dExpbmVIZWlnaHR9O1xuICAgICAgZmxleDogYXV0bztcbiAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG4gICAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XG4gICAgICByZXNpemU6IHZlcnRpY2FsO1xuICAgIGAsXG4gIF07XG4gIHJldHVybiBiYXNlU3R5bGVzO1xufTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9wcmVmZXItZGVmYXVsdC1leHBvcnRcbmV4cG9ydCB7IGdldFRleHRhcmVhU3R5bGVzIH07XG4iXX0= */")];
172
+ const baseStyles = [getInputStyles(props), /*#__PURE__*/react.css("padding:", designSystem.designTokens.paddingForMultilineInput, ";line-height:", sizeInputLineHeight, ";flex:auto;word-break:break-word;white-space:pre-wrap;resize:none;" + (process.env.NODE_ENV === "production" ? "" : ";label:baseStyles;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm11bHRpbGluZS1pbnB1dC5zdHlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZU8iLCJmaWxlIjoibXVsdGlsaW5lLWlucHV0LnN0eWxlcy50cyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCB7IGRlc2lnblRva2VucyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2Rlc2lnbi1zeXN0ZW0nO1xuaW1wb3J0IHsgZ2V0SW5wdXRTdHlsZXMgfSBmcm9tICcuLi9zdHlsZXMnO1xuaW1wb3J0IHR5cGUgeyBUTXVsdGlMaW5lSW5wdXRQcm9wcyB9IGZyb20gJy4vbXVsdGlsaW5lLWlucHV0JztcblxuLyogd2UgbmVlZCB0aGlzIGxpbmUtaGVpZ2h0IHRvIGFjaGlldmUgMzJweCBoZWlnaHQgd2hlbiB0aGUgY29tcG9uZW50IGhhcyBvbmx5IG9uZSByb3cgKi9cbmNvbnN0IHNpemVJbnB1dExpbmVIZWlnaHQgPSAnMjJweCc7XG5cbi8vIE5PVEU6IG9yZGVyIGlzIGltcG9ydGFudCBoZXJlXG4vLyAqIGEgZGlzYWJsZWQtZmllbGQgY3VycmVudGx5IGRvZXMgbm90IGRpc3BsYXkgd2FybmluZy9lcnJvci1zdGF0ZXMgc28gaXQgdGFrZXMgcHJlY2VkZW5jZVxuLy8gKiBhIHJlYWRvbmx5LWZpZWxkIGNhbm5vdCBiZSBjaGFuZ2VkLCBidXQgaXQgbWlnaHQgYmUgcmVsZXZhbnQgZm9yIHZhbGlkYXRpb24sIHNvIGVycm9yIGFuZCB3YXJuaW5nIGFyZSBjaGVja2VkIGZpcnN0XG4vLyBob3cgeW91IGNhbiBpbnRlcmFjdCB3aXRoIHRoZSBmaWVsZCBpcyBjb250cm9sbGVkIHNlcGFyYXRlbHkgYnkgdGhlIHByb3BzLCB0aGlzIG9ubHkgaW5mbHVlbmNlcyB2aXN1YWxzXG5jb25zdCBnZXRUZXh0YXJlYVN0eWxlcyA9IChwcm9wczogVE11bHRpTGluZUlucHV0UHJvcHMpID0+IHtcbiAgY29uc3QgYmFzZVN0eWxlcyA9IFtcbiAgICBnZXRJbnB1dFN0eWxlcyhwcm9wcyksXG4gICAgY3NzYFxuICAgICAgcGFkZGluZzogJHtkZXNpZ25Ub2tlbnMucGFkZGluZ0Zvck11bHRpbGluZUlucHV0fTtcbiAgICAgIGxpbmUtaGVpZ2h0OiAke3NpemVJbnB1dExpbmVIZWlnaHR9O1xuICAgICAgZmxleDogYXV0bztcbiAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG4gICAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XG4gICAgICByZXNpemU6IG5vbmU7XG4gICAgYCxcbiAgXTtcbiAgcmV0dXJuIGJhc2VTdHlsZXM7XG59O1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L3ByZWZlci1kZWZhdWx0LWV4cG9ydFxuZXhwb3J0IHsgZ2V0VGV4dGFyZWFTdHlsZXMgfTtcbiJdfQ== */")];
193
173
  return baseStyles;
194
- }; // eslint-disable-next-line import/prefer-default-export
174
+ };
195
175
 
196
176
  function ownKeys(object, enumerableOnly) { var keys = _Object$keys__default["default"](object); if (_Object$getOwnPropertySymbols__default["default"]) { var symbols = _Object$getOwnPropertySymbols__default["default"](object); enumerableOnly && (symbols = _filterInstanceProperty__default["default"](symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor__default["default"](object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
197
-
198
177
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context, _context2; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys(Object(source), !0)).call(_context, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](target, _Object$getOwnPropertyDescriptors__default["default"](source)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys(Object(source))).call(_context2, function (key) { _Object$defineProperty__default["default"](target, key, _Object$getOwnPropertyDescriptor__default["default"](source, key)); }); } return target; }
199
178
  const MIN_ROW_COUNT = 1;
200
-
179
+ // We cache the vertical padding of the element becuase
180
+ // it does not change over time so we don't need to
181
+ // recalculate it on every height change event.
182
+ let _elementVerticalPadding = null;
183
+ const getElementVerticalPadding = element => {
184
+ if (_elementVerticalPadding === null) {
185
+ const computedStyle = getComputedStyle(element);
186
+ const paddingTop = _parseInt__default["default"](computedStyle.paddingTop, 10);
187
+ const paddingBottom = _parseInt__default["default"](computedStyle.paddingBottom, 10);
188
+ _elementVerticalPadding = paddingTop + paddingBottom;
189
+ }
190
+ return _elementVerticalPadding;
191
+ };
201
192
  const MultilineInput = props => {
202
193
  const onHeightChange = props.onHeightChange;
203
194
  const ref = react$1.useRef(null);
204
- const handleHeightChange = react$1.useCallback((height, meta) => {
205
- var _ref$current;
206
-
207
- const rowCount = Math.floor(((_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.scrollHeight) || 0 / meta.rowHeight);
208
-
195
+ const handleHeightChange = react$1.useCallback((_, meta) => {
196
+ const containerHeight = ref.current.scrollHeight;
197
+ const textHeight = containerHeight - getElementVerticalPadding(ref.current);
198
+ const rowCount = Math.floor(textHeight / meta.rowHeight);
209
199
  if (onHeightChange) {
210
- onHeightChange(height, rowCount);
200
+ onHeightChange(containerHeight, rowCount);
211
201
  }
212
202
  }, [ref, onHeightChange]);
213
-
214
203
  if (!props.isReadOnly) {
215
204
  process.env.NODE_ENV !== "production" ? utils.warning(typeof props.onChange === 'function', 'MultilineInput: "onChange" is required when is not read only.') : void 0;
216
205
  }
217
-
218
206
  return jsxRuntime.jsx(TextareaAutosize__default["default"], _objectSpread({
219
207
  ref: ref,
220
208
  name: props.name,
@@ -229,13 +217,13 @@ const MultilineInput = props => {
229
217
  placeholder: props.placeholder,
230
218
  readOnly: props.isReadOnly,
231
219
  autoFocus: props.isAutofocussed,
232
- css: getTextareaStyles(props) // Allow to override the styles by passing a `className` prop.
220
+ css: getTextareaStyles(props)
221
+ // Allow to override the styles by passing a `className` prop.
233
222
  // Custom styles can also be passed using the `css` prop from emotion.
234
223
  // https://emotion.sh/docs/css-prop#style-precedence
235
224
  ,
236
225
  className: props.className
237
- /* ARIA */
238
- ,
226
+ /* ARIA */,
239
227
  "aria-readonly": props.isReadOnly,
240
228
  "aria-multiline": "true",
241
229
  "aria-invalid": props['aria-invalid'],
@@ -246,7 +234,6 @@ const MultilineInput = props => {
246
234
  cacheMeasurements: true
247
235
  }, utils.filterDataAttributes(props)));
248
236
  };
249
-
250
237
  MultilineInput.propTypes = process.env.NODE_ENV !== "production" ? {
251
238
  autoComplete: _pt__default["default"].string,
252
239
  className: _pt__default["default"].string,
@@ -296,7 +283,7 @@ const accessibleHiddenInputStyles = process.env.NODE_ENV === "production" ? {
296
283
  var accessibleHiddenInputStyles$1 = accessibleHiddenInputStyles;
297
284
 
298
285
  // NOTE: This string will be replaced on build time with the package version.
299
- var version = "16.0.0";
286
+ var version = "16.1.1";
300
287
 
301
288
  exports.LocalizedInputToggle = LocalizedInputToggle$1;
302
289
  exports.MultilineInput = MultilineInput$1;
@@ -10,6 +10,8 @@ var reactIntl = require('react-intl');
10
10
  var FlatButton = require('@commercetools-uikit/flat-button');
11
11
  var icons = require('@commercetools-uikit/icons');
12
12
  var jsxRuntime = require('@emotion/react/jsx-runtime');
13
+ var _defineProperty = require('@babel/runtime-corejs3/helpers/defineProperty');
14
+ var _parseInt = require('@babel/runtime-corejs3/core-js-stable/parse-int');
13
15
  var _Object$keys = require('@babel/runtime-corejs3/core-js-stable/object/keys');
14
16
  var _Object$getOwnPropertySymbols = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols');
15
17
  var _filterInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/filter');
@@ -18,13 +20,13 @@ var _forEachInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/in
18
20
  var _Object$getOwnPropertyDescriptors = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors');
19
21
  var _Object$defineProperties = require('@babel/runtime-corejs3/core-js-stable/object/define-properties');
20
22
  var _Object$defineProperty = require('@babel/runtime-corejs3/core-js-stable/object/define-property');
21
- var _defineProperty = require('@babel/runtime-corejs3/helpers/defineProperty');
22
23
  var TextareaAutosize = require('react-textarea-autosize');
23
24
  var utils = require('@commercetools-uikit/utils');
24
25
 
25
26
  function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
26
27
 
27
28
  var FlatButton__default = /*#__PURE__*/_interopDefault(FlatButton);
29
+ var _parseInt__default = /*#__PURE__*/_interopDefault(_parseInt);
28
30
  var _Object$keys__default = /*#__PURE__*/_interopDefault(_Object$keys);
29
31
  var _Object$getOwnPropertySymbols__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertySymbols);
30
32
  var _filterInstanceProperty__default = /*#__PURE__*/_interopDefault(_filterInstanceProperty);
@@ -57,12 +59,10 @@ const defaultProps = {
57
59
  hideMessage: messages$1.hide,
58
60
  showMessage: messages$1.show
59
61
  };
60
-
61
62
  var _ref = {
62
63
  name: "xyzkeb",
63
64
  styles: "align-self:flex-start"
64
65
  } ;
65
-
66
66
  const LocalizedInputToggle = props => {
67
67
  const intl = reactIntl.useIntl();
68
68
  const labelMessage = props.isOpen ? props.hideMessage : props.showMessage;
@@ -79,7 +79,6 @@ const LocalizedInputToggle = props => {
79
79
  })
80
80
  });
81
81
  };
82
-
83
82
  LocalizedInputToggle.propTypes = {};
84
83
  LocalizedInputToggle.defaultProps = defaultProps;
85
84
  LocalizedInputToggle.displayName = 'LocalizedInputToggle';
@@ -87,117 +86,106 @@ var LocalizedInputToggle$1 = LocalizedInputToggle;
87
86
 
88
87
  const getInputBorderColor = function (props) {
89
88
  let defaultBorderColor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : designSystem.designTokens.borderColorForInput;
90
-
91
89
  if (props.isDisabled || props.disabled) {
92
90
  return designSystem.designTokens.borderColorForInputWhenDisabled;
93
91
  }
94
-
95
92
  if (props.hasError) {
96
93
  return designSystem.designTokens.borderColorForInputWhenError;
97
94
  }
98
-
99
95
  if (props.hasWarning) {
100
96
  return designSystem.designTokens.borderColorForInputWhenWarning;
101
97
  }
102
-
103
98
  if (props.isReadOnly || props.readOnly) {
104
99
  return designSystem.designTokens.borderColorForInputWhenReadonly;
105
100
  }
106
-
107
101
  return defaultBorderColor;
108
102
  };
109
-
110
103
  const getInputFontColor = props => {
111
104
  if (props.isDisabled || props.disabled) {
112
105
  return designSystem.designTokens.fontColorForInputWhenDisabled;
113
106
  }
114
-
115
107
  if (props.hasError) {
116
108
  return designSystem.designTokens.fontColorForInputWhenError;
117
109
  }
118
-
119
110
  if (props.hasWarning) {
120
111
  return designSystem.designTokens.fontColorForInputWhenWarning;
121
112
  }
122
-
123
113
  if (props.isReadOnly || props.readOnly) {
124
114
  return designSystem.designTokens.fontColorForInputWhenReadonly;
125
115
  }
126
-
127
116
  return designSystem.designTokens.fontColorForInput;
128
117
  };
129
-
130
118
  const getInputBorderWidth = props => {
131
119
  if (props.hasError) {
132
120
  return designSystem.designTokens.borderWidthForInputWhenError;
133
121
  }
134
-
135
122
  if (props.hasWarning) {
136
123
  return designSystem.designTokens.borderWidthForInputWhenWarning;
137
124
  }
138
-
139
125
  return designSystem.designTokens.borderWidthForInput;
140
126
  };
141
-
142
127
  const getInputBoxShadow = props => {
143
128
  if (props.hasError) {
144
129
  return designSystem.designTokens.shadowForInputWhenError;
145
130
  }
146
-
147
131
  if (props.hasWarning) {
148
132
  return designSystem.designTokens.shadowForInputWhenWarning;
149
133
  }
150
-
151
134
  return designSystem.designTokens.shadowForInput;
152
135
  };
153
-
154
136
  const getInputBackgroundColor = props => {
155
137
  if (props.isDisabled || props.disabled) {
156
138
  return designSystem.designTokens.backgroundColorForInputWhenDisabled;
157
139
  }
158
-
159
140
  if (props.isReadOnly) {
160
141
  return designSystem.designTokens.backgroundColorForInputWhenReadonly;
161
142
  }
162
-
163
143
  return designSystem.designTokens.backgroundColorForInput;
164
144
  };
165
-
166
145
  const getInputStyles = props => {
167
146
  return /*#__PURE__*/react.css("appearance:none;background-color:", getInputBackgroundColor(props), ";border:", getInputBorderWidth(props), " solid ", getInputBorderColor(props), ";border-radius:", designSystem.designTokens.borderRadiusForInput, ";box-sizing:border-box;box-shadow:", getInputBoxShadow(props), ";color:", getInputFontColor(props), ";cursor:", props.isDisabled ? 'not-allowed' : 'default', ";display:flex;flex:1;font-family:inherit;font-size:", designSystem.designTokens.fontSizeForInput, ";height:", designSystem.designTokens.heightForInput, ";min-height:", designSystem.designTokens.heightForInput, ";opacity:", props.isDisabled || props.disabled ? '1' : 'unset', ";outline:none;overflow:hidden;padding:0 ", designSystem.designTokens.paddingForInput, ";transition:border-color ", designSystem.designTokens.transitionStandard, ",background-color ", designSystem.designTokens.transitionStandard, ",color ", designSystem.designTokens.transitionStandard, ",box-shadow ", designSystem.designTokens.transitionStandard, ";width:100%;&::placeholder{color:", designSystem.designTokens.placeholderFontColorForInput, ";}:active:not(:disabled):not(:read-only),:hover:not(:disabled):not(:read-only):not(:focus){border-color:", getInputBorderColor(props, designSystem.designTokens.borderColorForInputWhenHovered), ";background-color:", designSystem.designTokens.backgroundColorForInputWhenHovered, ";}:focus:not(:read-only){box-shadow:", designSystem.designTokens.shadowForInputWhenFocused, ";border-color:", designSystem.designTokens.borderColorForInputWhenFocused, ";background-color:", designSystem.designTokens.backgroundColorForInputWhenFocused, ";}" + ("" ), "" );
168
- }; // eslint-disable-next-line import/prefer-default-export
147
+ };
169
148
 
170
149
  /* we need this line-height to achieve 32px height when the component has only one row */
171
- const sizeInputLineHeight = '22px'; // NOTE: order is important here
150
+ const sizeInputLineHeight = '22px';
151
+
152
+ // NOTE: order is important here
172
153
  // * a disabled-field currently does not display warning/error-states so it takes precedence
173
154
  // * a readonly-field cannot be changed, but it might be relevant for validation, so error and warning are checked first
174
155
  // how you can interact with the field is controlled separately by the props, this only influences visuals
175
-
176
156
  const getTextareaStyles = props => {
177
- const baseStyles = [getInputStyles(props), /*#__PURE__*/react.css("padding:", designSystem.designTokens.paddingForMultilineInput, ";line-height:", sizeInputLineHeight, ";flex:auto;word-break:break-word;white-space:pre-wrap;resize:vertical;" + ("" ), "" )];
157
+ const baseStyles = [getInputStyles(props), /*#__PURE__*/react.css("padding:", designSystem.designTokens.paddingForMultilineInput, ";line-height:", sizeInputLineHeight, ";flex:auto;word-break:break-word;white-space:pre-wrap;resize:none;" + ("" ), "" )];
178
158
  return baseStyles;
179
- }; // eslint-disable-next-line import/prefer-default-export
159
+ };
180
160
 
181
161
  function ownKeys(object, enumerableOnly) { var keys = _Object$keys__default["default"](object); if (_Object$getOwnPropertySymbols__default["default"]) { var symbols = _Object$getOwnPropertySymbols__default["default"](object); enumerableOnly && (symbols = _filterInstanceProperty__default["default"](symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor__default["default"](object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
182
-
183
162
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context, _context2; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys(Object(source), !0)).call(_context, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](target, _Object$getOwnPropertyDescriptors__default["default"](source)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys(Object(source))).call(_context2, function (key) { _Object$defineProperty__default["default"](target, key, _Object$getOwnPropertyDescriptor__default["default"](source, key)); }); } return target; }
184
163
  const MIN_ROW_COUNT = 1;
185
-
164
+ // We cache the vertical padding of the element becuase
165
+ // it does not change over time so we don't need to
166
+ // recalculate it on every height change event.
167
+ let _elementVerticalPadding = null;
168
+ const getElementVerticalPadding = element => {
169
+ if (_elementVerticalPadding === null) {
170
+ const computedStyle = getComputedStyle(element);
171
+ const paddingTop = _parseInt__default["default"](computedStyle.paddingTop, 10);
172
+ const paddingBottom = _parseInt__default["default"](computedStyle.paddingBottom, 10);
173
+ _elementVerticalPadding = paddingTop + paddingBottom;
174
+ }
175
+ return _elementVerticalPadding;
176
+ };
186
177
  const MultilineInput = props => {
187
178
  const onHeightChange = props.onHeightChange;
188
179
  const ref = react$1.useRef(null);
189
- const handleHeightChange = react$1.useCallback((height, meta) => {
190
- var _ref$current;
191
-
192
- const rowCount = Math.floor(((_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.scrollHeight) || 0 / meta.rowHeight);
193
-
180
+ const handleHeightChange = react$1.useCallback((_, meta) => {
181
+ const containerHeight = ref.current.scrollHeight;
182
+ const textHeight = containerHeight - getElementVerticalPadding(ref.current);
183
+ const rowCount = Math.floor(textHeight / meta.rowHeight);
194
184
  if (onHeightChange) {
195
- onHeightChange(height, rowCount);
185
+ onHeightChange(containerHeight, rowCount);
196
186
  }
197
187
  }, [ref, onHeightChange]);
198
-
199
188
  if (!props.isReadOnly) ;
200
-
201
189
  return jsxRuntime.jsx(TextareaAutosize__default["default"], _objectSpread({
202
190
  ref: ref,
203
191
  name: props.name,
@@ -212,13 +200,13 @@ const MultilineInput = props => {
212
200
  placeholder: props.placeholder,
213
201
  readOnly: props.isReadOnly,
214
202
  autoFocus: props.isAutofocussed,
215
- css: getTextareaStyles(props) // Allow to override the styles by passing a `className` prop.
203
+ css: getTextareaStyles(props)
204
+ // Allow to override the styles by passing a `className` prop.
216
205
  // Custom styles can also be passed using the `css` prop from emotion.
217
206
  // https://emotion.sh/docs/css-prop#style-precedence
218
207
  ,
219
208
  className: props.className
220
- /* ARIA */
221
- ,
209
+ /* ARIA */,
222
210
  "aria-readonly": props.isReadOnly,
223
211
  "aria-multiline": "true",
224
212
  "aria-invalid": props['aria-invalid'],
@@ -229,7 +217,6 @@ const MultilineInput = props => {
229
217
  cacheMeasurements: true
230
218
  }, utils.filterDataAttributes(props)));
231
219
  };
232
-
233
220
  MultilineInput.propTypes = {};
234
221
  MultilineInput.displayName = 'MultilineInput';
235
222
  var MultilineInput$1 = MultilineInput;
@@ -254,7 +241,7 @@ const accessibleHiddenInputStyles = {
254
241
  var accessibleHiddenInputStyles$1 = accessibleHiddenInputStyles;
255
242
 
256
243
  // NOTE: This string will be replaced on build time with the package version.
257
- var version = "16.0.0";
244
+ var version = "16.1.1";
258
245
 
259
246
  exports.LocalizedInputToggle = LocalizedInputToggle$1;
260
247
  exports.MultilineInput = MultilineInput$1;
@@ -6,6 +6,8 @@ import { defineMessages, useIntl } from 'react-intl';
6
6
  import FlatButton from '@commercetools-uikit/flat-button';
7
7
  import { WorldIcon } from '@commercetools-uikit/icons';
8
8
  import { jsx } from '@emotion/react/jsx-runtime';
9
+ import _defineProperty from '@babel/runtime-corejs3/helpers/esm/defineProperty';
10
+ import _parseInt from '@babel/runtime-corejs3/core-js-stable/parse-int';
9
11
  import _Object$keys from '@babel/runtime-corejs3/core-js-stable/object/keys';
10
12
  import _Object$getOwnPropertySymbols from '@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols';
11
13
  import _filterInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/filter';
@@ -14,7 +16,6 @@ import _forEachInstanceProperty from '@babel/runtime-corejs3/core-js-stable/inst
14
16
  import _Object$getOwnPropertyDescriptors from '@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors';
15
17
  import _Object$defineProperties from '@babel/runtime-corejs3/core-js-stable/object/define-properties';
16
18
  import _Object$defineProperty from '@babel/runtime-corejs3/core-js-stable/object/define-property';
17
- import _defineProperty from '@babel/runtime-corejs3/helpers/esm/defineProperty';
18
19
  import TextareaAutosize from 'react-textarea-autosize';
19
20
  import { warning, filterDataAttributes } from '@commercetools-uikit/utils';
20
21
 
@@ -41,7 +42,6 @@ const defaultProps = {
41
42
  hideMessage: messages$1.hide,
42
43
  showMessage: messages$1.show
43
44
  };
44
-
45
45
  var _ref = process.env.NODE_ENV === "production" ? {
46
46
  name: "xyzkeb",
47
47
  styles: "align-self:flex-start"
@@ -51,7 +51,6 @@ var _ref = process.env.NODE_ENV === "production" ? {
51
51
  map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxvY2FsaXplZC1pbnB1dC10b2dnbGUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTBDYyIsImZpbGUiOiJsb2NhbGl6ZWQtaW5wdXQtdG9nZ2xlLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCB0eXBlIHsgTWVzc2FnZURlc2NyaXB0b3IgfSBmcm9tICdyZWFjdC1pbnRsJztcbmltcG9ydCB7IE1vdXNlRXZlbnQsIEtleWJvYXJkRXZlbnQsIFJlYWN0RWxlbWVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUludGwgfSBmcm9tICdyZWFjdC1pbnRsJztcbmltcG9ydCBGbGF0QnV0dG9uIGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2ZsYXQtYnV0dG9uJztcbmltcG9ydCB7IFdvcmxkSWNvbiB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2ljb25zJztcbmltcG9ydCBtZXNzYWdlcyBmcm9tICcuLi9tZXNzYWdlcy9sb2NhbGl6ZWQtaW5wdXQnO1xuXG5leHBvcnQgdHlwZSBUTG9jYWxpemVkSW5wdXRUb2dnbGVQcm9wcyA9IHtcbiAgaWNvbj86IFJlYWN0RWxlbWVudDtcbiAgaXNPcGVuPzogYm9vbGVhbjtcbiAgb25DbGljazogKFxuICAgIGV2ZW50OlxuICAgICAgfCBNb3VzZUV2ZW50PEhUTUxCdXR0b25FbGVtZW50PlxuICAgICAgfCBLZXlib2FyZEV2ZW50PEhUTUxCdXR0b25FbGVtZW50PlxuICAgICAgfCBib29sZWFuXG4gICkgPT4gdm9pZDtcbiAgaXNEaXNhYmxlZD86IGJvb2xlYW47XG4gIHNob3dNZXNzYWdlOiBzdHJpbmcgfCBNZXNzYWdlRGVzY3JpcHRvcjtcbiAgaGlkZU1lc3NhZ2U6IHN0cmluZyB8IE1lc3NhZ2VEZXNjcmlwdG9yO1xuICByZW1haW5pbmdMb2NhbGl6YXRpb25zPzogbnVtYmVyO1xufTtcblxuY29uc3QgZGVmYXVsdFByb3BzOiBQaWNrPFxuICBUTG9jYWxpemVkSW5wdXRUb2dnbGVQcm9wcyxcbiAgJ3Nob3dNZXNzYWdlJyB8ICdoaWRlTWVzc2FnZSdcbj4gPSB7XG4gIGhpZGVNZXNzYWdlOiBtZXNzYWdlcy5oaWRlLFxuICBzaG93TWVzc2FnZTogbWVzc2FnZXMuc2hvdyxcbn07XG5cbmNvbnN0IExvY2FsaXplZElucHV0VG9nZ2xlID0gKHByb3BzOiBUTG9jYWxpemVkSW5wdXRUb2dnbGVQcm9wcykgPT4ge1xuICBjb25zdCBpbnRsID0gdXNlSW50bCgpO1xuICBjb25zdCBsYWJlbE1lc3NhZ2UgPSBwcm9wcy5pc09wZW4gPyBwcm9wcy5oaWRlTWVzc2FnZSA6IHByb3BzLnNob3dNZXNzYWdlO1xuICBjb25zdCBsYWJlbCA9XG4gICAgdHlwZW9mIGxhYmVsTWVzc2FnZSA9PT0gJ3N0cmluZydcbiAgICAgID8gbGFiZWxNZXNzYWdlXG4gICAgICA6IGludGwuZm9ybWF0TWVzc2FnZShsYWJlbE1lc3NhZ2UsIHtcbiAgICAgICAgICByZW1haW5pbmdMYW5ndWFnZXM6IHByb3BzLnJlbWFpbmluZ0xvY2FsaXphdGlvbnMsXG4gICAgICAgIH0pO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGNzcz17Y3NzYFxuICAgICAgICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0O1xuICAgICAgYH1cbiAgICA+XG4gICAgICA8RmxhdEJ1dHRvblxuICAgICAgICBpY29uPXtwcm9wcy5pY29uID8gcHJvcHMuaWNvbiA6IDxXb3JsZEljb24gLz59XG4gICAgICAgIGxhYmVsPXtsYWJlbH1cbiAgICAgICAgb25DbGljaz17cHJvcHMub25DbGlja31cbiAgICAgICAgaXNEaXNhYmxlZD17cHJvcHMuaXNEaXNhYmxlZH1cbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5Mb2NhbGl6ZWRJbnB1dFRvZ2dsZS5kZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHM7XG5Mb2NhbGl6ZWRJbnB1dFRvZ2dsZS5kaXNwbGF5TmFtZSA9ICdMb2NhbGl6ZWRJbnB1dFRvZ2dsZSc7XG5leHBvcnQgZGVmYXVsdCBMb2NhbGl6ZWRJbnB1dFRvZ2dsZTtcbiJdfQ== */",
52
52
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__$1
53
53
  };
54
-
55
54
  const LocalizedInputToggle = props => {
56
55
  const intl = useIntl();
57
56
  const labelMessage = props.isOpen ? props.hideMessage : props.showMessage;
@@ -68,7 +67,6 @@ const LocalizedInputToggle = props => {
68
67
  })
69
68
  });
70
69
  };
71
-
72
70
  LocalizedInputToggle.propTypes = process.env.NODE_ENV !== "production" ? {
73
71
  icon: _pt.element,
74
72
  isOpen: _pt.bool,
@@ -84,119 +82,108 @@ var LocalizedInputToggle$1 = LocalizedInputToggle;
84
82
 
85
83
  const getInputBorderColor = function (props) {
86
84
  let defaultBorderColor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : designTokens.borderColorForInput;
87
-
88
85
  if (props.isDisabled || props.disabled) {
89
86
  return designTokens.borderColorForInputWhenDisabled;
90
87
  }
91
-
92
88
  if (props.hasError) {
93
89
  return designTokens.borderColorForInputWhenError;
94
90
  }
95
-
96
91
  if (props.hasWarning) {
97
92
  return designTokens.borderColorForInputWhenWarning;
98
93
  }
99
-
100
94
  if (props.isReadOnly || props.readOnly) {
101
95
  return designTokens.borderColorForInputWhenReadonly;
102
96
  }
103
-
104
97
  return defaultBorderColor;
105
98
  };
106
-
107
99
  const getInputFontColor = props => {
108
100
  if (props.isDisabled || props.disabled) {
109
101
  return designTokens.fontColorForInputWhenDisabled;
110
102
  }
111
-
112
103
  if (props.hasError) {
113
104
  return designTokens.fontColorForInputWhenError;
114
105
  }
115
-
116
106
  if (props.hasWarning) {
117
107
  return designTokens.fontColorForInputWhenWarning;
118
108
  }
119
-
120
109
  if (props.isReadOnly || props.readOnly) {
121
110
  return designTokens.fontColorForInputWhenReadonly;
122
111
  }
123
-
124
112
  return designTokens.fontColorForInput;
125
113
  };
126
-
127
114
  const getInputBorderWidth = props => {
128
115
  if (props.hasError) {
129
116
  return designTokens.borderWidthForInputWhenError;
130
117
  }
131
-
132
118
  if (props.hasWarning) {
133
119
  return designTokens.borderWidthForInputWhenWarning;
134
120
  }
135
-
136
121
  return designTokens.borderWidthForInput;
137
122
  };
138
-
139
123
  const getInputBoxShadow = props => {
140
124
  if (props.hasError) {
141
125
  return designTokens.shadowForInputWhenError;
142
126
  }
143
-
144
127
  if (props.hasWarning) {
145
128
  return designTokens.shadowForInputWhenWarning;
146
129
  }
147
-
148
130
  return designTokens.shadowForInput;
149
131
  };
150
-
151
132
  const getInputBackgroundColor = props => {
152
133
  if (props.isDisabled || props.disabled) {
153
134
  return designTokens.backgroundColorForInputWhenDisabled;
154
135
  }
155
-
156
136
  if (props.isReadOnly) {
157
137
  return designTokens.backgroundColorForInputWhenReadonly;
158
138
  }
159
-
160
139
  return designTokens.backgroundColorForInput;
161
140
  };
162
-
163
141
  const getInputStyles = props => {
164
142
  return /*#__PURE__*/css("appearance:none;background-color:", getInputBackgroundColor(props), ";border:", getInputBorderWidth(props), " solid ", getInputBorderColor(props), ";border-radius:", designTokens.borderRadiusForInput, ";box-sizing:border-box;box-shadow:", getInputBoxShadow(props), ";color:", getInputFontColor(props), ";cursor:", props.isDisabled ? 'not-allowed' : 'default', ";display:flex;flex:1;font-family:inherit;font-size:", designTokens.fontSizeForInput, ";height:", designTokens.heightForInput, ";min-height:", designTokens.heightForInput, ";opacity:", props.isDisabled || props.disabled ? '1' : 'unset', ";outline:none;overflow:hidden;padding:0 ", designTokens.paddingForInput, ";transition:border-color ", designTokens.transitionStandard, ",background-color ", designTokens.transitionStandard, ",color ", designTokens.transitionStandard, ",box-shadow ", designTokens.transitionStandard, ";width:100%;&::placeholder{color:", designTokens.placeholderFontColorForInput, ";}:active:not(:disabled):not(:read-only),:hover:not(:disabled):not(:read-only):not(:focus){border-color:", getInputBorderColor(props, designTokens.borderColorForInputWhenHovered), ";background-color:", designTokens.backgroundColorForInputWhenHovered, ";}:focus:not(:read-only){box-shadow:", designTokens.shadowForInputWhenFocused, ";border-color:", designTokens.borderColorForInputWhenFocused, ";background-color:", designTokens.backgroundColorForInputWhenFocused, ";}" + (process.env.NODE_ENV === "production" ? "" : ";label:getInputStyles;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE4RVkiLCJmaWxlIjoic3R5bGVzLnRzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IHsgZGVzaWduVG9rZW5zIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvZGVzaWduLXN5c3RlbSc7XG5cbnR5cGUgVElucHV0UHJvcHMgPSB7XG4gIGlzRGlzYWJsZWQ/OiBib29sZWFuO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIGhhc0Vycm9yPzogYm9vbGVhbjtcbiAgaGFzV2FybmluZz86IGJvb2xlYW47XG4gIGlzUmVhZE9ubHk/OiBib29sZWFuO1xuICByZWFkT25seT86IGJvb2xlYW47XG59O1xuXG5jb25zdCBnZXRJbnB1dEJvcmRlckNvbG9yID0gKFxuICBwcm9wczogVElucHV0UHJvcHMsXG4gIGRlZmF1bHRCb3JkZXJDb2xvcjogc3RyaW5nID0gZGVzaWduVG9rZW5zLmJvcmRlckNvbG9yRm9ySW5wdXRcbikgPT4ge1xuICBpZiAocHJvcHMuaXNEaXNhYmxlZCB8fCBwcm9wcy5kaXNhYmxlZCkge1xuICAgIHJldHVybiBkZXNpZ25Ub2tlbnMuYm9yZGVyQ29sb3JGb3JJbnB1dFdoZW5EaXNhYmxlZDtcbiAgfVxuICBpZiAocHJvcHMuaGFzRXJyb3IpIHtcbiAgICByZXR1cm4gZGVzaWduVG9rZW5zLmJvcmRlckNvbG9yRm9ySW5wdXRXaGVuRXJyb3I7XG4gIH1cbiAgaWYgKHByb3BzLmhhc1dhcm5pbmcpIHtcbiAgICByZXR1cm4gZGVzaWduVG9rZW5zLmJvcmRlckNvbG9yRm9ySW5wdXRXaGVuV2FybmluZztcbiAgfVxuICBpZiAocHJvcHMuaXNSZWFkT25seSB8fCBwcm9wcy5yZWFkT25seSkge1xuICAgIHJldHVybiBkZXNpZ25Ub2tlbnMuYm9yZGVyQ29sb3JGb3JJbnB1dFdoZW5SZWFkb25seTtcbiAgfVxuICByZXR1cm4gZGVmYXVsdEJvcmRlckNvbG9yO1xufTtcblxuY29uc3QgZ2V0SW5wdXRGb250Q29sb3IgPSAocHJvcHM6IFRJbnB1dFByb3BzKSA9PiB7XG4gIGlmIChwcm9wcy5pc0Rpc2FibGVkIHx8IHByb3BzLmRpc2FibGVkKSB7XG4gICAgcmV0dXJuIGRlc2lnblRva2Vucy5mb250Q29sb3JGb3JJbnB1dFdoZW5EaXNhYmxlZDtcbiAgfVxuICBpZiAocHJvcHMuaGFzRXJyb3IpIHtcbiAgICByZXR1cm4gZGVzaWduVG9rZW5zLmZvbnRDb2xvckZvcklucHV0V2hlbkVycm9yO1xuICB9XG4gIGlmIChwcm9wcy5oYXNXYXJuaW5nKSB7XG4gICAgcmV0dXJuIGRlc2lnblRva2Vucy5mb250Q29sb3JGb3JJbnB1dFdoZW5XYXJuaW5nO1xuICB9XG4gIGlmIChwcm9wcy5pc1JlYWRPbmx5IHx8IHByb3BzLnJlYWRPbmx5KSB7XG4gICAgcmV0dXJuIGRlc2lnblRva2Vucy5mb250Q29sb3JGb3JJbnB1dFdoZW5SZWFkb25seTtcbiAgfVxuICByZXR1cm4gZGVzaWduVG9rZW5zLmZvbnRDb2xvckZvcklucHV0O1xufTtcblxuY29uc3QgZ2V0SW5wdXRCb3JkZXJXaWR0aCA9IChwcm9wczogVElucHV0UHJvcHMpID0+IHtcbiAgaWYgKHByb3BzLmhhc0Vycm9yKSB7XG4gICAgcmV0dXJuIGRlc2lnblRva2Vucy5ib3JkZXJXaWR0aEZvcklucHV0V2hlbkVycm9yO1xuICB9XG4gIGlmIChwcm9wcy5oYXNXYXJuaW5nKSB7XG4gICAgcmV0dXJuIGRlc2lnblRva2Vucy5ib3JkZXJXaWR0aEZvcklucHV0V2hlbldhcm5pbmc7XG4gIH1cbiAgcmV0dXJuIGRlc2lnblRva2Vucy5ib3JkZXJXaWR0aEZvcklucHV0O1xufTtcblxuY29uc3QgZ2V0SW5wdXRCb3hTaGFkb3cgPSAocHJvcHM6IFRJbnB1dFByb3BzKSA9PiB7XG4gIGlmIChwcm9wcy5oYXNFcnJvcikge1xuICAgIHJldHVybiBkZXNpZ25Ub2tlbnMuc2hhZG93Rm9ySW5wdXRXaGVuRXJyb3I7XG4gIH1cbiAgaWYgKHByb3BzLmhhc1dhcm5pbmcpIHtcbiAgICByZXR1cm4gZGVzaWduVG9rZW5zLnNoYWRvd0ZvcklucHV0V2hlbldhcm5pbmc7XG4gIH1cbiAgcmV0dXJuIGRlc2lnblRva2Vucy5zaGFkb3dGb3JJbnB1dDtcbn07XG5cbmNvbnN0IGdldElucHV0QmFja2dyb3VuZENvbG9yID0gKHByb3BzOiBUSW5wdXRQcm9wcykgPT4ge1xuICBpZiAocHJvcHMuaXNEaXNhYmxlZCB8fCBwcm9wcy5kaXNhYmxlZCkge1xuICAgIHJldHVybiBkZXNpZ25Ub2tlbnMuYmFja2dyb3VuZENvbG9yRm9ySW5wdXRXaGVuRGlzYWJsZWQ7XG4gIH1cbiAgaWYgKHByb3BzLmlzUmVhZE9ubHkpIHtcbiAgICByZXR1cm4gZGVzaWduVG9rZW5zLmJhY2tncm91bmRDb2xvckZvcklucHV0V2hlblJlYWRvbmx5O1xuICB9XG4gIHJldHVybiBkZXNpZ25Ub2tlbnMuYmFja2dyb3VuZENvbG9yRm9ySW5wdXQ7XG59O1xuXG5jb25zdCBnZXRJbnB1dFN0eWxlcyA9IChwcm9wczogVElucHV0UHJvcHMpID0+IHtcbiAgcmV0dXJuIGNzc2BcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7Z2V0SW5wdXRCYWNrZ3JvdW5kQ29sb3IocHJvcHMpfTtcbiAgICBib3JkZXI6ICR7Z2V0SW5wdXRCb3JkZXJXaWR0aChwcm9wcyl9IHNvbGlkICR7Z2V0SW5wdXRCb3JkZXJDb2xvcihwcm9wcyl9O1xuICAgIGJvcmRlci1yYWRpdXM6ICR7ZGVzaWduVG9rZW5zLmJvcmRlclJhZGl1c0ZvcklucHV0fTtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGJveC1zaGFkb3c6ICR7Z2V0SW5wdXRCb3hTaGFkb3cocHJvcHMpfTtcbiAgICBjb2xvcjogJHtnZXRJbnB1dEZvbnRDb2xvcihwcm9wcyl9O1xuICAgIGN1cnNvcjogJHtwcm9wcy5pc0Rpc2FibGVkID8gJ25vdC1hbGxvd2VkJyA6ICdkZWZhdWx0J307XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4OiAxO1xuICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICAgIGZvbnQtc2l6ZTogJHtkZXNpZ25Ub2tlbnMuZm9udFNpemVGb3JJbnB1dH07XG4gICAgaGVpZ2h0OiAke2Rlc2lnblRva2Vucy5oZWlnaHRGb3JJbnB1dH07XG4gICAgbWluLWhlaWdodDogJHtkZXNpZ25Ub2tlbnMuaGVpZ2h0Rm9ySW5wdXR9O1xuICAgIG9wYWNpdHk6ICR7cHJvcHMuaXNEaXNhYmxlZCB8fCBwcm9wcy5kaXNhYmxlZFxuICAgICAgPyAnMSdcbiAgICAgIDogJ3Vuc2V0J307IC8qIGZpeCBmb3IgbW9iaWxlIHNhZmFyaSAqL1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBwYWRkaW5nOiAwICR7ZGVzaWduVG9rZW5zLnBhZGRpbmdGb3JJbnB1dH07XG4gICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yICR7ZGVzaWduVG9rZW5zLnRyYW5zaXRpb25TdGFuZGFyZH0sXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yICR7ZGVzaWduVG9rZW5zLnRyYW5zaXRpb25TdGFuZGFyZH0sXG4gICAgICBjb2xvciAke2Rlc2lnblRva2Vucy50cmFuc2l0aW9uU3RhbmRhcmR9LFxuICAgICAgYm94LXNoYWRvdyAke2Rlc2lnblRva2Vucy50cmFuc2l0aW9uU3RhbmRhcmR9O1xuICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgJjo6cGxhY2Vob2xkZXIge1xuICAgICAgY29sb3I6ICR7ZGVzaWduVG9rZW5zLnBsYWNlaG9sZGVyRm9udENvbG9yRm9ySW5wdXR9O1xuICAgIH1cbiAgICA6YWN0aXZlOm5vdCg6ZGlzYWJsZWQpOm5vdCg6cmVhZC1vbmx5KSxcbiAgICA6aG92ZXI6bm90KDpkaXNhYmxlZCk6bm90KDpyZWFkLW9ubHkpOm5vdCg6Zm9jdXMpIHtcbiAgICAgIGJvcmRlci1jb2xvcjogJHtnZXRJbnB1dEJvcmRlckNvbG9yKFxuICAgICAgICBwcm9wcyxcbiAgICAgICAgZGVzaWduVG9rZW5zLmJvcmRlckNvbG9yRm9ySW5wdXRXaGVuSG92ZXJlZFxuICAgICAgKX07XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke2Rlc2lnblRva2Vucy5iYWNrZ3JvdW5kQ29sb3JGb3JJbnB1dFdoZW5Ib3ZlcmVkfTtcbiAgICB9XG4gICAgOmZvY3VzOm5vdCg6cmVhZC1vbmx5KSB7XG4gICAgICBib3gtc2hhZG93OiAke2Rlc2lnblRva2Vucy5zaGFkb3dGb3JJbnB1dFdoZW5Gb2N1c2VkfTtcbiAgICAgIGJvcmRlci1jb2xvcjogJHtkZXNpZ25Ub2tlbnMuYm9yZGVyQ29sb3JGb3JJbnB1dFdoZW5Gb2N1c2VkfTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7ZGVzaWduVG9rZW5zLmJhY2tncm91bmRDb2xvckZvcklucHV0V2hlbkZvY3VzZWR9O1xuICAgIH1cbiAgYDtcbn07XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvcHJlZmVyLWRlZmF1bHQtZXhwb3J0XG5leHBvcnQgeyBnZXRJbnB1dFN0eWxlcyB9O1xuIl19 */");
165
- }; // eslint-disable-next-line import/prefer-default-export
143
+ };
166
144
 
167
145
  /* we need this line-height to achieve 32px height when the component has only one row */
168
- const sizeInputLineHeight = '22px'; // NOTE: order is important here
146
+ const sizeInputLineHeight = '22px';
147
+
148
+ // NOTE: order is important here
169
149
  // * a disabled-field currently does not display warning/error-states so it takes precedence
170
150
  // * a readonly-field cannot be changed, but it might be relevant for validation, so error and warning are checked first
171
151
  // how you can interact with the field is controlled separately by the props, this only influences visuals
172
-
173
152
  const getTextareaStyles = props => {
174
- const baseStyles = [getInputStyles(props), /*#__PURE__*/css("padding:", designTokens.paddingForMultilineInput, ";line-height:", sizeInputLineHeight, ";flex:auto;word-break:break-word;white-space:pre-wrap;resize:vertical;" + (process.env.NODE_ENV === "production" ? "" : ";label:baseStyles;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm11bHRpbGluZS1pbnB1dC5zdHlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZU8iLCJmaWxlIjoibXVsdGlsaW5lLWlucHV0LnN0eWxlcy50cyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCB7IGRlc2lnblRva2VucyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2Rlc2lnbi1zeXN0ZW0nO1xuaW1wb3J0IHsgZ2V0SW5wdXRTdHlsZXMgfSBmcm9tICcuLi9zdHlsZXMnO1xuaW1wb3J0IHR5cGUgeyBUTXVsdGlMaW5lSW5wdXRQcm9wcyB9IGZyb20gJy4vbXVsdGlsaW5lLWlucHV0JztcblxuLyogd2UgbmVlZCB0aGlzIGxpbmUtaGVpZ2h0IHRvIGFjaGlldmUgMzJweCBoZWlnaHQgd2hlbiB0aGUgY29tcG9uZW50IGhhcyBvbmx5IG9uZSByb3cgKi9cbmNvbnN0IHNpemVJbnB1dExpbmVIZWlnaHQgPSAnMjJweCc7XG5cbi8vIE5PVEU6IG9yZGVyIGlzIGltcG9ydGFudCBoZXJlXG4vLyAqIGEgZGlzYWJsZWQtZmllbGQgY3VycmVudGx5IGRvZXMgbm90IGRpc3BsYXkgd2FybmluZy9lcnJvci1zdGF0ZXMgc28gaXQgdGFrZXMgcHJlY2VkZW5jZVxuLy8gKiBhIHJlYWRvbmx5LWZpZWxkIGNhbm5vdCBiZSBjaGFuZ2VkLCBidXQgaXQgbWlnaHQgYmUgcmVsZXZhbnQgZm9yIHZhbGlkYXRpb24sIHNvIGVycm9yIGFuZCB3YXJuaW5nIGFyZSBjaGVja2VkIGZpcnN0XG4vLyBob3cgeW91IGNhbiBpbnRlcmFjdCB3aXRoIHRoZSBmaWVsZCBpcyBjb250cm9sbGVkIHNlcGFyYXRlbHkgYnkgdGhlIHByb3BzLCB0aGlzIG9ubHkgaW5mbHVlbmNlcyB2aXN1YWxzXG5jb25zdCBnZXRUZXh0YXJlYVN0eWxlcyA9IChwcm9wczogVE11bHRpTGluZUlucHV0UHJvcHMpID0+IHtcbiAgY29uc3QgYmFzZVN0eWxlcyA9IFtcbiAgICBnZXRJbnB1dFN0eWxlcyhwcm9wcyksXG4gICAgY3NzYFxuICAgICAgcGFkZGluZzogJHtkZXNpZ25Ub2tlbnMucGFkZGluZ0Zvck11bHRpbGluZUlucHV0fTtcbiAgICAgIGxpbmUtaGVpZ2h0OiAke3NpemVJbnB1dExpbmVIZWlnaHR9O1xuICAgICAgZmxleDogYXV0bztcbiAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG4gICAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XG4gICAgICByZXNpemU6IHZlcnRpY2FsO1xuICAgIGAsXG4gIF07XG4gIHJldHVybiBiYXNlU3R5bGVzO1xufTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9wcmVmZXItZGVmYXVsdC1leHBvcnRcbmV4cG9ydCB7IGdldFRleHRhcmVhU3R5bGVzIH07XG4iXX0= */")];
153
+ const baseStyles = [getInputStyles(props), /*#__PURE__*/css("padding:", designTokens.paddingForMultilineInput, ";line-height:", sizeInputLineHeight, ";flex:auto;word-break:break-word;white-space:pre-wrap;resize:none;" + (process.env.NODE_ENV === "production" ? "" : ";label:baseStyles;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm11bHRpbGluZS1pbnB1dC5zdHlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZU8iLCJmaWxlIjoibXVsdGlsaW5lLWlucHV0LnN0eWxlcy50cyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCB7IGRlc2lnblRva2VucyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2Rlc2lnbi1zeXN0ZW0nO1xuaW1wb3J0IHsgZ2V0SW5wdXRTdHlsZXMgfSBmcm9tICcuLi9zdHlsZXMnO1xuaW1wb3J0IHR5cGUgeyBUTXVsdGlMaW5lSW5wdXRQcm9wcyB9IGZyb20gJy4vbXVsdGlsaW5lLWlucHV0JztcblxuLyogd2UgbmVlZCB0aGlzIGxpbmUtaGVpZ2h0IHRvIGFjaGlldmUgMzJweCBoZWlnaHQgd2hlbiB0aGUgY29tcG9uZW50IGhhcyBvbmx5IG9uZSByb3cgKi9cbmNvbnN0IHNpemVJbnB1dExpbmVIZWlnaHQgPSAnMjJweCc7XG5cbi8vIE5PVEU6IG9yZGVyIGlzIGltcG9ydGFudCBoZXJlXG4vLyAqIGEgZGlzYWJsZWQtZmllbGQgY3VycmVudGx5IGRvZXMgbm90IGRpc3BsYXkgd2FybmluZy9lcnJvci1zdGF0ZXMgc28gaXQgdGFrZXMgcHJlY2VkZW5jZVxuLy8gKiBhIHJlYWRvbmx5LWZpZWxkIGNhbm5vdCBiZSBjaGFuZ2VkLCBidXQgaXQgbWlnaHQgYmUgcmVsZXZhbnQgZm9yIHZhbGlkYXRpb24sIHNvIGVycm9yIGFuZCB3YXJuaW5nIGFyZSBjaGVja2VkIGZpcnN0XG4vLyBob3cgeW91IGNhbiBpbnRlcmFjdCB3aXRoIHRoZSBmaWVsZCBpcyBjb250cm9sbGVkIHNlcGFyYXRlbHkgYnkgdGhlIHByb3BzLCB0aGlzIG9ubHkgaW5mbHVlbmNlcyB2aXN1YWxzXG5jb25zdCBnZXRUZXh0YXJlYVN0eWxlcyA9IChwcm9wczogVE11bHRpTGluZUlucHV0UHJvcHMpID0+IHtcbiAgY29uc3QgYmFzZVN0eWxlcyA9IFtcbiAgICBnZXRJbnB1dFN0eWxlcyhwcm9wcyksXG4gICAgY3NzYFxuICAgICAgcGFkZGluZzogJHtkZXNpZ25Ub2tlbnMucGFkZGluZ0Zvck11bHRpbGluZUlucHV0fTtcbiAgICAgIGxpbmUtaGVpZ2h0OiAke3NpemVJbnB1dExpbmVIZWlnaHR9O1xuICAgICAgZmxleDogYXV0bztcbiAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG4gICAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XG4gICAgICByZXNpemU6IG5vbmU7XG4gICAgYCxcbiAgXTtcbiAgcmV0dXJuIGJhc2VTdHlsZXM7XG59O1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L3ByZWZlci1kZWZhdWx0LWV4cG9ydFxuZXhwb3J0IHsgZ2V0VGV4dGFyZWFTdHlsZXMgfTtcbiJdfQ== */")];
175
154
  return baseStyles;
176
- }; // eslint-disable-next-line import/prefer-default-export
155
+ };
177
156
 
178
157
  function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
179
-
180
158
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context, _context2; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context = ownKeys(Object(source), !0)).call(_context, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context2 = ownKeys(Object(source))).call(_context2, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
181
159
  const MIN_ROW_COUNT = 1;
182
-
160
+ // We cache the vertical padding of the element becuase
161
+ // it does not change over time so we don't need to
162
+ // recalculate it on every height change event.
163
+ let _elementVerticalPadding = null;
164
+ const getElementVerticalPadding = element => {
165
+ if (_elementVerticalPadding === null) {
166
+ const computedStyle = getComputedStyle(element);
167
+ const paddingTop = _parseInt(computedStyle.paddingTop, 10);
168
+ const paddingBottom = _parseInt(computedStyle.paddingBottom, 10);
169
+ _elementVerticalPadding = paddingTop + paddingBottom;
170
+ }
171
+ return _elementVerticalPadding;
172
+ };
183
173
  const MultilineInput = props => {
184
174
  const onHeightChange = props.onHeightChange;
185
175
  const ref = useRef(null);
186
- const handleHeightChange = useCallback((height, meta) => {
187
- var _ref$current;
188
-
189
- const rowCount = Math.floor(((_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.scrollHeight) || 0 / meta.rowHeight);
190
-
176
+ const handleHeightChange = useCallback((_, meta) => {
177
+ const containerHeight = ref.current.scrollHeight;
178
+ const textHeight = containerHeight - getElementVerticalPadding(ref.current);
179
+ const rowCount = Math.floor(textHeight / meta.rowHeight);
191
180
  if (onHeightChange) {
192
- onHeightChange(height, rowCount);
181
+ onHeightChange(containerHeight, rowCount);
193
182
  }
194
183
  }, [ref, onHeightChange]);
195
-
196
184
  if (!props.isReadOnly) {
197
185
  process.env.NODE_ENV !== "production" ? warning(typeof props.onChange === 'function', 'MultilineInput: "onChange" is required when is not read only.') : void 0;
198
186
  }
199
-
200
187
  return jsx(TextareaAutosize, _objectSpread({
201
188
  ref: ref,
202
189
  name: props.name,
@@ -211,13 +198,13 @@ const MultilineInput = props => {
211
198
  placeholder: props.placeholder,
212
199
  readOnly: props.isReadOnly,
213
200
  autoFocus: props.isAutofocussed,
214
- css: getTextareaStyles(props) // Allow to override the styles by passing a `className` prop.
201
+ css: getTextareaStyles(props)
202
+ // Allow to override the styles by passing a `className` prop.
215
203
  // Custom styles can also be passed using the `css` prop from emotion.
216
204
  // https://emotion.sh/docs/css-prop#style-precedence
217
205
  ,
218
206
  className: props.className
219
- /* ARIA */
220
- ,
207
+ /* ARIA */,
221
208
  "aria-readonly": props.isReadOnly,
222
209
  "aria-multiline": "true",
223
210
  "aria-invalid": props['aria-invalid'],
@@ -228,7 +215,6 @@ const MultilineInput = props => {
228
215
  cacheMeasurements: true
229
216
  }, filterDataAttributes(props)));
230
217
  };
231
-
232
218
  MultilineInput.propTypes = process.env.NODE_ENV !== "production" ? {
233
219
  autoComplete: _pt.string,
234
220
  className: _pt.string,
@@ -278,6 +264,6 @@ const accessibleHiddenInputStyles = process.env.NODE_ENV === "production" ? {
278
264
  var accessibleHiddenInputStyles$1 = accessibleHiddenInputStyles;
279
265
 
280
266
  // NOTE: This string will be replaced on build time with the package version.
281
- var version = "16.0.0";
267
+ var version = "16.1.1";
282
268
 
283
269
  export { LocalizedInputToggle$1 as LocalizedInputToggle, MultilineInput$1 as MultilineInput, accessibleHiddenInputStyles$1 as accessibleHiddenInputStyles, getInputStyles, messages$1 as messagesLocalizedInput, messages as messagesMultilineInput, version };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@commercetools-uikit/input-utils",
3
3
  "description": "Utilities for working with input components.",
4
- "version": "16.0.0",
4
+ "version": "16.1.1",
5
5
  "bugs": "https://github.com/commercetools/ui-kit/issues",
6
6
  "repository": {
7
7
  "type": "git",
@@ -21,10 +21,10 @@
21
21
  "dependencies": {
22
22
  "@babel/runtime": "^7.20.13",
23
23
  "@babel/runtime-corejs3": "^7.20.13",
24
- "@commercetools-uikit/design-system": "16.0.0",
25
- "@commercetools-uikit/flat-button": "16.0.0",
26
- "@commercetools-uikit/icons": "16.0.0",
27
- "@commercetools-uikit/utils": "16.0.0",
24
+ "@commercetools-uikit/design-system": "16.1.1",
25
+ "@commercetools-uikit/flat-button": "16.1.1",
26
+ "@commercetools-uikit/icons": "16.1.1",
27
+ "@commercetools-uikit/utils": "16.1.1",
28
28
  "@emotion/react": "^11.10.5",
29
29
  "prop-types": "15.8.1",
30
30
  "react-textarea-autosize": "8.4.0"