@decisiv/ui-components 2.0.1-alpha.147 → 2.0.1-alpha.149

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.
@@ -1,10 +1,11 @@
1
1
  import React from 'react';
2
2
  import { Size, Kind, Intent, Variant } from './types';
3
3
  export interface StyledButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
4
- kind?: Kind;
5
4
  intent?: Intent;
6
- variant?: Variant;
5
+ kind?: Kind;
6
+ minWidth?: string;
7
7
  size: Size;
8
+ variant?: Variant;
8
9
  }
9
10
  declare const StyledButton: import("styled-components").StyledComponent<"button", any, StyledButtonProps, never>;
10
11
  export default StyledButton;
@@ -1 +1 @@
1
- {"version":3,"file":"StyledButton.d.ts","sourceRoot":"","sources":["../../../src/components/Button/StyledButton.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAsB1B,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAe,MAAM,SAAS,CAAC;AA0JnE,MAAM,WAAW,iBACf,SAAQ,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC;IACrD,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,IAAI,CAAC;CACZ;AAED,QAAA,MAAM,YAAY,sFAkBjB,CAAC;AAEF,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"StyledButton.d.ts","sourceRoot":"","sources":["../../../src/components/Button/StyledButton.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAuB1B,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAe,MAAM,SAAS,CAAC;AAuKnE,MAAM,WAAW,iBACf,SAAQ,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,QAAA,MAAM,YAAY,sFAkBjB,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -17,6 +17,8 @@ var _designTokens = _interopRequireWildcard(require("@decisiv/design-tokens"));
17
17
 
18
18
  var _ConfigProvider = require("../../providers/ConfigProvider");
19
19
 
20
+ var _dynamicModifiers = require("../../utils/dynamicModifiers");
21
+
20
22
  var _focusRingWithColor = _interopRequireDefault(require("../../utils/focusRingWithColor"));
21
23
 
22
24
  var _BaseButton = _interopRequireDefault(require("../../atoms/BaseButton"));
@@ -49,23 +51,35 @@ var color = _styledTheming.default.variants(_ConfigProvider.themeKeys.mode, 'var
49
51
  dark: (0, _styledComponents.css)(["background-color:transparent;color:", ";padding:0;&:focus:not(:active){border-color:", ";", "}&:hover:not(:active){color:", ";}&:disabled:disabled{background-color:transparent;color:", ";}"], _colors.interactionPrimaryDark, _colors.focusRingColors.dark.ghost.border, (0, _focusRingWithColor.default)(_colors.focusRingColors.dark.ghost.shadow), _colors.interactionSecondaryLight, (0, _toColorString.default)(opacityColors.charcoal40))
50
52
  }
51
53
  });
52
- /** map the Button size values to the matching font size values */
54
+ /** map the Button size values to the matching font size scalar values */
53
55
 
54
56
 
55
- var sizeToFontSize = {
56
- medium: 'default',
57
- small: 'paragraph2'
57
+ var sizeToScalarSize = {
58
+ medium: fontSizes.default,
59
+ small: fontSizes.paragraph2,
60
+ large: fontSizes.header4,
61
+ extraLarge: 18
58
62
  };
59
63
  /** map the Button size values to the matching heights, in rem */
60
64
 
61
65
  var sizeToHeight = {
62
66
  medium: (0, _rem.default)(32),
63
- small: (0, _rem.default)(24)
67
+ small: (0, _rem.default)(24),
68
+ large: (0, _rem.default)(44),
69
+ extraLarge: (0, _rem.default)(50)
70
+ };
71
+ /** map the Button size values to the matching X padding, in rem */
72
+
73
+ var sizeToPaddingX = {
74
+ medium: (0, _rem.default)(base),
75
+ small: (0, _rem.default)(base),
76
+ large: (0, _rem.default)(base * 1.5),
77
+ extraLarge: (0, _rem.default)(base * 1.5)
64
78
  };
65
79
 
66
80
  var buttonSizeModifier = function buttonSizeModifier(_ref) {
67
81
  var size = _ref.size;
68
- return (0, _styledComponents.css)(["font-size:", ";height:", ";"], (0, _rem.default)(fontSizes[sizeToFontSize[size]]), sizeToHeight[size]);
82
+ return (0, _styledComponents.css)(["font-size:", ";height:", ";padding:0 ", ";"], (0, _rem.default)(sizeToScalarSize[size]), sizeToHeight[size], sizeToPaddingX[size]);
69
83
  };
70
84
 
71
85
  var disabledStyles = function disabledStyles(_ref2) {
@@ -81,6 +95,6 @@ var disabledStyles = function disabledStyles(_ref2) {
81
95
  var StyledButton = (0, _styledComponents.default)(_BaseButton.default).withConfig({
82
96
  displayName: "StyledButton",
83
97
  componentId: "sc-1khcx6y-0"
84
- })(["align-items:center;border-radius:", ";border:1px solid transparent;display:flex;font-weight:", ";justify-content:center;line-height:1;outline:none;padding:0 ", ";text-transform:uppercase;white-space:nowrap;", ";", ";", ";", ";", ";"], (0, _rem.default)(2), _designTokens.typography.weight.alias.default, (0, _rem.default)(base), color, _kind.default, _intent.default, buttonSizeModifier, disabledStyles);
98
+ })(["align-items:center;border-radius:", ";border:1px solid transparent;display:flex;font-weight:", ";justify-content:center;line-height:1;outline:none;text-transform:uppercase;white-space:nowrap;", ";", ";", ";", ";", ";", ";"], (0, _rem.default)(2), _designTokens.typography.weight.alias.default, color, _kind.default, _intent.default, buttonSizeModifier, (0, _dynamicModifiers.applyDynamicModifiers)('minWidth', 'min-width'), disabledStyles);
85
99
  var _default = StyledButton;
86
100
  exports.default = _default;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Button/index.tsx"],"names":[],"mappings":"AAIA,OAAc,EAA4B,sBAAsB,EAAE,MAAM,OAAO,CAAC;AAMhF,OAAO,EACL,WAAW,EACX,SAAS,EAOV,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AAuFrD,QAAA,MAAM,aAAa,EAAE,sBAAsB,CACzC,SAAS,EACT,WAAW,CACS,CAAC;AASvB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Button/index.tsx"],"names":[],"mappings":"AAIA,OAAc,EAA4B,sBAAsB,EAAE,MAAM,OAAO,CAAC;AAMhF,OAAO,EACL,WAAW,EACX,SAAS,EAOV,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AAkGrD,QAAA,MAAM,aAAa,EAAE,sBAAsB,CACzC,SAAS,EACT,WAAW,CACS,CAAC;AASvB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,eAAe,aAAa,CAAC"}
@@ -72,6 +72,12 @@ var iconMarginProp = {
72
72
  left: 'margin-right',
73
73
  right: 'margin-left'
74
74
  };
75
+ var sizeToIconSize = {
76
+ small: 'small',
77
+ medium: 'medium',
78
+ large: 'medium',
79
+ extraLarge: 'medium'
80
+ };
75
81
 
76
82
  var iconMargin = function iconMargin(props) {
77
83
  return !props.iconOnly && "".concat(iconMarginProp[props.position], ": ").concat((0, _rem.default)(5));
@@ -83,16 +89,17 @@ var IconContainer = _styledComponents.default.span.withConfig({
83
89
  })(["line-height:0;", ";"], iconMargin);
84
90
 
85
91
  var Button = function Button(props, ref) {
86
- var text = props.text,
87
- disabled = props.disabled,
92
+ var disabled = props.disabled,
88
93
  icon = props.icon,
89
94
  iconPosition = props.iconPosition,
90
95
  intent = props.intent,
91
- onClick = props.onClick,
92
96
  kind = props.kind,
97
+ minWidth = props.minWidth,
98
+ onClick = props.onClick,
93
99
  size = props.size,
100
+ text = props.text,
94
101
  variant = props.variant,
95
- rest = _objectWithoutProperties(props, ["text", "disabled", "icon", "iconPosition", "intent", "onClick", "kind", "size", "variant"]);
102
+ rest = _objectWithoutProperties(props, ["disabled", "icon", "iconPosition", "intent", "kind", "minWidth", "onClick", "size", "text", "variant"]);
96
103
 
97
104
  var ButtonIcon = (0, _react.useMemo)(function () {
98
105
  var Icon = icon;
@@ -100,15 +107,16 @@ var Button = function Button(props, ref) {
100
107
  position: iconPosition,
101
108
  iconOnly: !text
102
109
  }, _react.default.createElement(Icon, {
103
- size: size
110
+ size: sizeToIconSize[size]
104
111
  }));
105
112
  }, [icon, iconPosition, size, text]);
106
113
  return _react.default.createElement(_StyledButton.default, _extends({
107
- ref: ref,
108
114
  disabled: disabled,
109
- kind: kind,
110
115
  intent: intent,
116
+ kind: kind,
117
+ minWidth: minWidth,
111
118
  onClick: disabled ? _noop.default : onClick,
119
+ ref: ref,
112
120
  size: size,
113
121
  type: "button",
114
122
  variant: variant
@@ -121,12 +129,13 @@ var propTypes = {
121
129
  return (0, _isEmpty.default)(text);
122
130
  }),
123
131
  disabled: _propTypes.default.bool,
124
- text: _propTypes.default.string,
125
- size: _propTypes.default.oneOf(['small', 'medium']),
126
132
  icon: _propTypes.default.elementType,
127
133
  iconPosition: _propTypes.default.oneOf(['left', 'right']),
128
134
  intent: _propTypes.default.oneOf(['success', 'danger']),
129
135
  kind: _propTypes.default.oneOf(['primary', 'secondary']),
136
+ minWidth: _propTypes.default.string,
137
+ size: _propTypes.default.oneOf(['small', 'medium', 'large', 'extraLarge']),
138
+ text: _propTypes.default.string,
130
139
  variant: _propTypes.default.oneOf(['normal', 'inverted', 'ghost'])
131
140
  };
132
141
  var defaultProps = {
@@ -135,6 +144,7 @@ var defaultProps = {
135
144
  iconPosition: 'left',
136
145
  intent: undefined,
137
146
  kind: undefined,
147
+ minWidth: undefined,
138
148
  size: 'medium',
139
149
  text: undefined,
140
150
  variant: 'normal'
@@ -101,39 +101,55 @@ describe('Button', function () {
101
101
 
102
102
  expect(container).toMatchSnapshot();
103
103
  });
104
+ it('renders correctly the large size', function () {
105
+ var _renderButton3 = renderButton({
106
+ size: 'large'
107
+ }),
108
+ container = _renderButton3.container;
109
+
110
+ expect(container).toMatchSnapshot();
111
+ });
112
+ it('renders correctly the extraLarge size', function () {
113
+ var _renderButton4 = renderButton({
114
+ size: 'extraLarge'
115
+ }),
116
+ container = _renderButton4.container;
117
+
118
+ expect(container).toMatchSnapshot();
119
+ });
104
120
  describe('kind=secondary', function () {
105
121
  it('renders correctly with the light theme', function () {
106
- var _renderButton3 = renderButton({
122
+ var _renderButton5 = renderButton({
107
123
  kind: 'secondary'
108
124
  }),
109
- container = _renderButton3.container;
125
+ container = _renderButton5.container;
110
126
 
111
127
  expect(container).toMatchSnapshot();
112
128
  });
113
129
  it('renders correctly with the dark theme', function () {
114
- var _renderButton4 = renderButton({
130
+ var _renderButton6 = renderButton({
115
131
  kind: 'secondary'
116
132
  }, 'dark'),
117
- container = _renderButton4.container;
133
+ container = _renderButton6.container;
118
134
 
119
135
  expect(container).toMatchSnapshot();
120
136
  });
121
137
  describe('inverted', function () {
122
138
  it('renders correctly with the light theme', function () {
123
- var _renderButton5 = renderButton({
139
+ var _renderButton7 = renderButton({
124
140
  kind: 'secondary',
125
141
  variant: 'inverted'
126
142
  }),
127
- container = _renderButton5.container;
143
+ container = _renderButton7.container;
128
144
 
129
145
  expect(container).toMatchSnapshot();
130
146
  });
131
147
  it('renders correctly with the dark theme', function () {
132
- var _renderButton6 = renderButton({
148
+ var _renderButton8 = renderButton({
133
149
  kind: 'secondary',
134
150
  variant: 'inverted'
135
151
  }, 'dark'),
136
- container = _renderButton6.container;
152
+ container = _renderButton8.container;
137
153
 
138
154
  expect(container).toMatchSnapshot();
139
155
  });
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/components/Button/schema.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,eAAO,MAAM,yBAAyB;;;;CAiCpC,CAAC;AAEH,QAAA,MAAM,MAAM,KAAsC,CAAC;AAInD,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/components/Button/schema.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,eAAO,MAAM,yBAAyB;;;;CAqCpC,CAAC;AAEH,QAAA,MAAM,MAAM,KAAsC,CAAC;AAInD,eAAe,MAAM,CAAC"}
@@ -17,11 +17,12 @@ var makeButtonSchemaPropTypes = function makeButtonSchemaPropTypes(extensions) {
17
17
  return _objectSpread({
18
18
  text: _reactDesc.PropTypes.string.description("The button's text"),
19
19
  disabled: _reactDesc.PropTypes.bool.description('Defines if the button will be disabled').defaultValue('false'),
20
- size: _reactDesc.PropTypes.oneOf(['small', 'medium']).description('Defines the size of the button').defaultValue('medium'),
20
+ size: _reactDesc.PropTypes.oneOf(['small', 'medium', 'large', 'extraLarge']).description('Defines the size of the button').defaultValue('medium'),
21
21
  icon: _reactDesc.PropTypes.element.description('Which `iconix` icon to render'),
22
22
  iconPosition: _reactDesc.PropTypes.oneOf(['left', 'right']).description('In which side of the text the icon should be rendered').defaultValue('left'),
23
23
  intent: _reactDesc.PropTypes.oneOf(['success', 'danger']).description('Applies desired hover state of button'),
24
24
  kind: _reactDesc.PropTypes.oneOf(['primary', 'secondary']).description('Applies inverted button styles'),
25
+ minWidth: _reactDesc.PropTypes.string.description('A pass-through CSS value for the min-width attribute'),
25
26
  variant: _reactDesc.PropTypes.oneOf(['normal', 'inverted']).description('Applies secondary button styles')
26
27
  }, extensions);
27
28
  };
@@ -2,7 +2,7 @@ import { ButtonHTMLAttributes, Ref } from 'react';
2
2
  import { IconProps } from '@decisiv/iconix';
3
3
  import { TranslatedText } from '../../utils/useTranslations';
4
4
  export declare type ButtonRef = HTMLButtonElement;
5
- export declare type Size = 'medium' | 'small';
5
+ export declare type Size = 'small' | 'medium' | 'large' | 'extraLarge';
6
6
  export declare type IconPosition = 'left' | 'right';
7
7
  export declare type Intent = 'danger' | 'success';
8
8
  export declare type Variant = 'normal' | 'inverted' | 'ghost';
@@ -14,6 +14,7 @@ export interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
14
14
  iconPosition?: IconPosition;
15
15
  intent?: Intent;
16
16
  kind?: Kind;
17
+ minWidth?: string;
17
18
  ref?: Ref<ButtonRef>;
18
19
  size?: Size;
19
20
  text?: TranslatedText;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/Button/types.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,oBAAY,SAAS,GAAG,iBAAiB,CAAC;AAC1C,oBAAY,IAAI,GAAG,QAAQ,GAAG,OAAO,CAAC;AACtC,oBAAY,YAAY,GAAG,MAAM,GAAG,OAAO,CAAC;AAC5C,oBAAY,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;AAC1C,oBAAY,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;AACtD,oBAAY,IAAI,GAAG,SAAS,GAAG,WAAW,CAAC;AAC3C,oBAAY,aAAa,GAAG,CAAC,KAAK,EAAE,SAAS,KAAK,GAAG,CAAC,OAAO,CAAC;AAE9D,MAAM,WAAW,WAAY,SAAQ,oBAAoB,CAAC,iBAAiB,CAAC;IAC1E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,GAAG,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IACrB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/Button/types.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,oBAAY,SAAS,GAAG,iBAAiB,CAAC;AAC1C,oBAAY,IAAI,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,YAAY,CAAC;AAC/D,oBAAY,YAAY,GAAG,MAAM,GAAG,OAAO,CAAC;AAC5C,oBAAY,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;AAC1C,oBAAY,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;AACtD,oBAAY,IAAI,GAAG,SAAS,GAAG,WAAW,CAAC;AAC3C,oBAAY,aAAa,GAAG,CAAC,KAAK,EAAE,SAAS,KAAK,GAAG,CAAC,OAAO,CAAC;AAE9D,MAAM,WAAW,WAAY,SAAQ,oBAAoB,CAAC,iBAAiB,CAAC;IAC1E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IACrB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/PasswordField/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAEZ,sBAAsB,EAIvB,MAAM,OAAO,CAAC;AAEf,OAAmB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AASzE,oBAAY,YAAY,GAAG,gBAAgB,CAAC;AAE5C,MAAM,WAAW,kBACf,SAAQ,IAAI,CACR,KAAK,CAAC,mBAAmB,CAAC,YAAY,CAAC,EACvC,MAAM,GAAG,UAAU,GAAG,OAAO,CAC9B,EACD,IAAI,CAAC,mBAAmB,EAAE,UAAU,GAAG,SAAS,CAAC;IACnD,MAAM,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC;IACjC,QAAQ,CAAC,EAAE,KAAK,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;IAClD,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC;IAClC,SAAS,CAAC,EAAE,KAAK,CAAC,oBAAoB,CAAC;IACvC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC;CACf;AA8CD,QAAA,MAAM,oBAAoB,EAAE,sBAAsB,CAChD,YAAY,EACZ,kBAAkB,CACS,CAAC;AAQ9B,eAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/PasswordField/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAEZ,sBAAsB,EAMvB,MAAM,OAAO,CAAC;AAGf,OAAmB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AASzE,oBAAY,YAAY,GAAG,gBAAgB,CAAC;AAE5C,MAAM,WAAW,kBACf,SAAQ,IAAI,CACR,KAAK,CAAC,mBAAmB,CAAC,YAAY,CAAC,EACvC,MAAM,GAAG,UAAU,GAAG,OAAO,CAC9B,EACD,IAAI,CAAC,mBAAmB,EAAE,UAAU,GAAG,SAAS,CAAC;IACnD,MAAM,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC;IACjC,QAAQ,CAAC,EAAE,KAAK,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;IAClD,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC;IAClC,SAAS,CAAC,EAAE,KAAK,CAAC,oBAAoB,CAAC;IACvC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC;CACf;AAmED,QAAA,MAAM,oBAAoB,EAAE,sBAAsB,CAChD,YAAY,EACZ,kBAAkB,CACS,CAAC;AAQ9B,eAAe,oBAAoB,CAAC"}
@@ -9,6 +9,8 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
9
9
 
10
10
  var _react = _interopRequireWildcard(require("react"));
11
11
 
12
+ var _isNil = _interopRequireDefault(require("lodash/isNil"));
13
+
12
14
  var _InputField = _interopRequireDefault(require("../../atoms/InputField"));
13
15
 
14
16
  var _Flex = _interopRequireDefault(require("../Flex"));
@@ -57,10 +59,25 @@ function PasswordField(_ref, ref) {
57
59
  setShowPassword = _useState2[1];
58
60
 
59
61
  var translate = (0, _useTranslations.default)();
62
+ var inputRef = (0, _react.useRef)(null);
60
63
  var handleClick = (0, _react.useCallback)(function () {
61
64
  setShowPassword(!showPassword);
62
65
  }, [showPassword, setShowPassword]);
63
- var inputType = showPassword ? 'text' : 'password';
66
+ var inputType = showPassword ? 'text' : 'password'; // Moving cursor to the end after re-rendering input because of `type`
67
+
68
+ (0, _react.useEffect)(function () {
69
+ if (!(0, _isNil.default)(inputRef) && !(0, _isNil.default)(inputRef.current)) {
70
+ inputRef.current.selectionStart = inputRef.current.value.length;
71
+ inputRef.current.selectionEnd = inputRef.current.value.length;
72
+ }
73
+ }, [inputType]);
74
+ var setInputRef = (0, _react.useCallback)(function (propRef) {
75
+ return function (element) {
76
+ inputRef.current = element; // eslint-disable-next-line no-param-reassign
77
+
78
+ propRef.current = element;
79
+ };
80
+ }, []);
64
81
  return _react.default.createElement(_InputField.default, _extends({}, props, {
65
82
  disabled: disabled,
66
83
  label: translate(undefined, 'passwordField.password'),
@@ -77,6 +94,7 @@ function PasswordField(_ref, ref) {
77
94
  flexDirection: "row",
78
95
  flex: 1
79
96
  }, _react.default.createElement(_Input.default, _extends({}, p, {
97
+ ref: setInputRef(p.ref),
80
98
  role: "password",
81
99
  passwordVisible: showPassword,
82
100
  hideLabel: hideLabel,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@decisiv/ui-components",
3
- "version": "2.0.1-alpha.147+c2bdf72",
3
+ "version": "2.0.1-alpha.149+fe24813",
4
4
  "description": "Decisiv's design system React components",
5
5
  "author": "Decisiv UI Development Team",
6
6
  "license": "MIT",
@@ -17,7 +17,7 @@
17
17
  "dependencies": {
18
18
  "@decisiv/breakpoint-observer": "^1.8.8",
19
19
  "@decisiv/design-tokens": "^1.8.8",
20
- "@decisiv/iconix": "^2.0.1-alpha.147+c2bdf72",
20
+ "@decisiv/iconix": "^2.0.0",
21
21
  "@decisiv/prop-types": "^1.6.9",
22
22
  "@seznam/compose-react-refs": "^1.0.2",
23
23
  "csstype": "^2.6.5",
@@ -71,5 +71,5 @@
71
71
  "access": "public"
72
72
  },
73
73
  "private": false,
74
- "gitHead": "c2bdf72da4ad2edd11813d2e484c0ad1c7ae076b"
74
+ "gitHead": "fe24813f50d912454a38553db03a7b180c70d0a3"
75
75
  }