@king-design/react 3.0.0-beta.0 → 3.0.0-beta.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.
Files changed (202) hide show
  1. package/__tests__/__snapshots__/Dialog.md +1 -1
  2. package/__tests__/__snapshots__/React Demos.md +461 -309
  3. package/__tests__/components/cascader.spec.tsx +53 -0
  4. package/__tests__/components/drawer.spec.tsx +67 -5
  5. package/components/button/index.d.ts +1 -1
  6. package/components/button/index.js +1 -1
  7. package/components/button/styles.js +1 -1
  8. package/components/cascader/index.d.ts +22 -11
  9. package/components/cascader/index.js +9 -12
  10. package/components/cascader/index.spec.js +81 -0
  11. package/components/cascader/index.vdt.js +10 -8
  12. package/components/cascader/styles.js +1 -1
  13. package/components/cascader/useFields.d.ts +2 -0
  14. package/components/cascader/useFields.js +18 -0
  15. package/components/cascader/useFilterable.d.ts +2 -1
  16. package/components/cascader/useFilterable.js +17 -6
  17. package/components/cascader/useLabel.d.ts +2 -1
  18. package/components/cascader/useLabel.js +4 -4
  19. package/components/cascader/useLoad.d.ts +2 -1
  20. package/components/cascader/useLoad.js +9 -7
  21. package/components/colorpicker/index.d.ts +2 -0
  22. package/components/colorpicker/index.js +7 -2
  23. package/components/colorpicker/index.vdt.js +3 -6
  24. package/components/copy/index.d.ts +17 -0
  25. package/components/copy/index.js +43 -0
  26. package/components/copy/index.spec.d.ts +1 -0
  27. package/components/copy/index.spec.js +52 -0
  28. package/components/copy/index.vdt.js +45 -0
  29. package/components/copy/styles.d.ts +2 -0
  30. package/components/copy/styles.js +14 -0
  31. package/components/copy/useCopy.d.ts +4 -0
  32. package/components/copy/useCopy.js +90 -0
  33. package/components/datepicker/index.spec.js +1 -1
  34. package/components/datepicker/index.vdt.js +1 -1
  35. package/components/datepicker/styles.js +1 -1
  36. package/components/diagram/shapes/callout.d.ts +1 -1
  37. package/components/diagram/shapes/circle.d.ts +1 -1
  38. package/components/diagram/shapes/document.d.ts +1 -1
  39. package/components/diagram/shapes/ellipse.d.ts +1 -1
  40. package/components/diagram/shapes/hexagon.d.ts +1 -1
  41. package/components/diagram/shapes/image.d.ts +1 -1
  42. package/components/diagram/shapes/parallelogram.d.ts +1 -1
  43. package/components/diagram/shapes/rectangle.d.ts +1 -1
  44. package/components/diagram/shapes/square.d.ts +1 -1
  45. package/components/diagram/shapes/text.d.ts +1 -1
  46. package/components/dialog/alert.vdt.js +6 -5
  47. package/components/dialog/index.spec.js +6 -6
  48. package/components/dropdown/dropdown.d.ts +6 -6
  49. package/components/dropdown/dropdown.js +58 -75
  50. package/components/dropdown/index.spec.js +96 -17
  51. package/components/dropdown/item.d.ts +1 -1
  52. package/components/dropdown/item.js +19 -7
  53. package/components/dropdown/menu.js +1 -1
  54. package/components/dropdown/usePosition.js +11 -2
  55. package/components/editable/index.d.ts +1 -0
  56. package/components/editable/index.js +20 -6
  57. package/components/editable/index.vdt.js +2 -1
  58. package/components/form/index.spec.js +4 -2
  59. package/components/form/item.vdt.js +2 -1
  60. package/components/form/styles.js +4 -4
  61. package/components/grid/useGutter.js +8 -8
  62. package/components/input/index.d.ts +11 -2
  63. package/components/input/index.js +13 -13
  64. package/components/input/index.spec.js +169 -1
  65. package/components/input/index.vdt.js +28 -7
  66. package/components/input/styles.js +20 -3
  67. package/components/input/useAutoRows.d.ts +2 -0
  68. package/components/input/useAutoRows.js +79 -0
  69. package/components/input/useAutoWidth.js +13 -3
  70. package/components/input/useShowPassword.d.ts +7 -0
  71. package/components/input/useShowPassword.js +31 -0
  72. package/components/menu/index.spec.js +26 -15
  73. package/components/menu/item.d.ts +2 -0
  74. package/components/menu/item.js +5 -0
  75. package/components/pagination/index.d.ts +1 -1
  76. package/components/pagination/index.js +3 -2
  77. package/components/pagination/index.spec.js +49 -0
  78. package/components/pagination/index.vdt.js +8 -10
  79. package/components/pagination/styles.js +1 -1
  80. package/components/popover/content.d.ts +19 -0
  81. package/components/popover/content.js +31 -0
  82. package/components/popover/content.vdt.js +68 -0
  83. package/components/popover/index.d.ts +16 -0
  84. package/components/popover/index.js +44 -0
  85. package/components/popover/index.spec.d.ts +1 -0
  86. package/components/popover/index.spec.js +195 -0
  87. package/components/popover/styles.d.ts +1 -0
  88. package/components/popover/styles.js +22 -0
  89. package/components/portal.d.ts +6 -2
  90. package/components/portal.js +4 -3
  91. package/components/position.js +2 -1
  92. package/components/progress/index.js +1 -1
  93. package/components/progress/index.vdt.js +46 -8
  94. package/components/progress/styles.js +19 -13
  95. package/components/rate/styles.js +1 -1
  96. package/components/select/base.d.ts +7 -3
  97. package/components/select/base.js +9 -3
  98. package/components/select/base.vdt.js +46 -35
  99. package/components/select/index.spec.js +2 -2
  100. package/components/select/menu.vdt.js +1 -1
  101. package/components/select/styles.js +11 -5
  102. package/components/select/useDraggble.d.ts +2 -0
  103. package/components/select/useDraggble.js +11 -0
  104. package/components/select/useNowrap.d.ts +3 -0
  105. package/components/select/useNowrap.js +19 -0
  106. package/components/slider/index.spec.js +48 -9
  107. package/components/slider/index.vdt.js +23 -12
  108. package/components/slider/styles.js +23 -14
  109. package/components/slider/useValue.d.ts +3 -1
  110. package/components/slider/useValue.js +12 -0
  111. package/components/spinner/index.d.ts +0 -1
  112. package/components/spinner/index.js +1 -19
  113. package/components/spinner/index.vdt.js +9 -4
  114. package/components/spinner/useChange.d.ts +1 -1
  115. package/components/spinner/useChange.js +2 -2
  116. package/components/spinner/useValue.d.ts +1 -0
  117. package/components/spinner/useValue.js +16 -1
  118. package/components/split/index.vdt.js +32 -20
  119. package/components/split/memo.d.ts +9 -0
  120. package/components/split/memo.js +26 -0
  121. package/components/steps/index.d.ts +1 -0
  122. package/components/steps/index.js +2 -1
  123. package/components/steps/index.spec.js +1 -1
  124. package/components/steps/index.vdt.js +7 -4
  125. package/components/steps/step.vdt.js +0 -1
  126. package/components/steps/styles.d.ts +1 -0
  127. package/components/steps/styles.js +45 -16
  128. package/components/switch/index.spec.js +82 -65
  129. package/components/table/cell.js +1 -6
  130. package/components/table/index.spec.js +130 -19
  131. package/components/table/row.d.ts +1 -1
  132. package/components/table/row.js +2 -1
  133. package/components/table/styles.js +1 -1
  134. package/components/table/table.d.ts +15 -0
  135. package/components/table/table.js +16 -7
  136. package/components/table/table.vdt.js +20 -6
  137. package/components/table/useChecked.d.ts +3 -2
  138. package/components/table/useChecked.js +23 -12
  139. package/components/table/useDisableRow.d.ts +2 -1
  140. package/components/table/useDisableRow.js +4 -4
  141. package/components/table/useDraggable.d.ts +3 -2
  142. package/components/table/useDraggable.js +11 -15
  143. package/components/table/useGroup.js +3 -0
  144. package/components/table/useMerge.d.ts +2 -1
  145. package/components/table/useMerge.js +5 -4
  146. package/components/table/usePagination.d.ts +8 -0
  147. package/components/table/usePagination.js +81 -0
  148. package/components/table/useStickyScrollbar.js +2 -2
  149. package/components/table/useTree.d.ts +2 -1
  150. package/components/table/useTree.js +3 -4
  151. package/components/table/useWidth.js +2 -2
  152. package/components/tabs/index.d.ts +1 -1
  153. package/components/tabs/index.js +1 -1
  154. package/components/tabs/index.spec.js +67 -0
  155. package/components/tabs/index.vdt.js +4 -4
  156. package/components/tabs/styles.js +32 -34
  157. package/components/tabs/useScroll.d.ts +1 -1
  158. package/components/tabs/useScroll.js +75 -48
  159. package/components/tag/base.d.ts +1 -0
  160. package/components/tag/base.js +1 -1
  161. package/components/tag/index.d.ts +1 -0
  162. package/components/tag/index.js +2 -1
  163. package/components/tag/index.spec.js +147 -4
  164. package/components/tag/styles.d.ts +67 -0
  165. package/components/tag/styles.js +33 -8
  166. package/components/tag/tags.d.ts +27 -0
  167. package/components/tag/tags.js +51 -0
  168. package/components/tag/tags.vdt.js +79 -0
  169. package/components/tag/useChildren.d.ts +2 -0
  170. package/components/tag/useChildren.js +39 -0
  171. package/components/tag/useDraggable.d.ts +3 -0
  172. package/components/tag/useDraggable.js +89 -0
  173. package/components/tag/useNowrap.d.ts +7 -0
  174. package/components/tag/useNowrap.js +115 -0
  175. package/components/timepicker/index.spec.js +1 -1
  176. package/components/tooltip/content.d.ts +3 -2
  177. package/components/tooltip/content.js +18 -1
  178. package/components/tooltip/content.vdt.js +22 -10
  179. package/components/tooltip/index.spec.js +147 -92
  180. package/components/tooltip/styles.d.ts +23 -0
  181. package/components/tooltip/styles.js +2 -2
  182. package/components/tooltip/tooltip.d.ts +1 -1
  183. package/components/tooltip/tooltip.js +11 -11
  184. package/components/upload/index.spec.js +5 -6
  185. package/components/upload/index.vdt.js +3 -1
  186. package/components/utils.d.ts +2 -0
  187. package/components/utils.js +24 -3
  188. package/components/virtual.d.ts +8 -0
  189. package/components/virtual.js +126 -0
  190. package/hooks/useResizeObserver.d.ts +1 -1
  191. package/hooks/useResizeObserver.js +19 -6
  192. package/i18n/en-US.d.ts +4 -1
  193. package/i18n/en-US.js +6 -2
  194. package/index.d.ts +5 -3
  195. package/index.js +5 -3
  196. package/package.json +2 -2
  197. package/styles/fonts/iconfont.js +1 -1
  198. package/styles/fonts/ionicons.js +3 -3
  199. package/styles/global.js +1 -1
  200. package/yarn-error.log +41 -43
  201. package/components/table/useResizeObserver.d.ts +0 -2
  202. package/components/table/useResizeObserver.js +0 -20
@@ -8,12 +8,12 @@ var defaults = {
8
8
  gap: "24px",
9
9
  labelWidth: "80px",
10
10
 
11
- get labelLineHeight() {
11
+ get labelHeight() {
12
12
  return theme.default.height;
13
13
  },
14
14
 
15
15
  labelTextAlign: 'right',
16
- labelGap: '10px',
16
+ labelGap: '16px',
17
17
 
18
18
  get starColor() {
19
19
  return theme.color.danger;
@@ -50,12 +50,12 @@ setDefault(function () {
50
50
  }).form;
51
51
  });
52
52
  export function makeItemStyles() {
53
- return /*#__PURE__*/css("display:table;position:relative;table-layout:fixed;&:not(:last-of-type){margin-bottom:", form.item.gap, ";}&.k-fluid{width:100%;}.k-form-label{display:table-cell;width:", form.item.labelWidth, ";text-align:", form.item.labelTextAlign, ";padding-right:", form.item.labelGap, ";line-height:", form.item.labelLineHeight, ";}.k-form-star{color:", form.item.starColor, ";margin-right:", form.item.starGap, ";}.k-form-content{display:table-cell;vertical-align:middle;position:relative;}.k-form-error{position:absolute;color:", form.item.errorColor, ";font-size:", form.item.errorFontSize, ";left:0;right:0;display:flex;align-items:center;&.k-ellipsis{.k-form-error-more{display:inline-block;}}}.k-form-error-more{line-height:", form.item.errorFontSize, ";display:none;}&.k-invalid{.k-input{.k-input-inner{border:", form.item.invalidBorder, ";position:relative;z-index:1;}}.k-select,.k-checkbox-wrapper,.k-radio-wrapper{border:", form.item.invalidBorder, "!important;}.k-select .k-input .k-input-inner{border:none;}}.k-form-item{&,.k-form-content{display:block;width:auto;}}.k-form-append{display:table-cell;padding:", form.item.appendPadding, ";vertical-align:middle;}");
53
+ return /*#__PURE__*/css("display:flex;position:relative;&:not(:last-of-type){margin-bottom:", form.item.gap, ";}&.k-fluid>.k-form-content{flex:1;}.k-form-label{display:flex;align-items:center;justify-content:", form.item.labelTextAlign === 'right' ? 'end' : 'start', ";width:", form.item.labelWidth, ";padding-right:", form.item.labelGap, ";max-height:", form.item.labelHeight, ";}.k-form-star{color:", form.item.starColor, ";margin-right:", form.item.starGap, ";}.k-form-content{position:relative;}.k-form-error{position:absolute;color:", form.item.errorColor, ";font-size:", form.item.errorFontSize, ";left:0;right:0;display:flex;align-items:center;&.k-ellipsis{.k-form-error-more{display:inline-block;}}}.k-form-error-more{line-height:", form.item.errorFontSize, ";display:none;}&.k-invalid{.k-input{.k-input-inner{border:", form.item.invalidBorder, ";position:relative;z-index:1;}}.k-select,.k-checkbox-wrapper,.k-radio-wrapper{border:", form.item.invalidBorder, "!important;}.k-select .k-input .k-input-inner{border:none;}}.k-form-append{padding:", form.item.appendPadding, ";vertical-align:middle;}");
54
54
  }
55
55
  export function makeFormStyles() {
56
56
  var _context;
57
57
 
58
- return /*#__PURE__*/css("&.k-inline{.k-form-item{display:inline-block;vertical-align:top;margin-right:", form.item.inlineGap, ";}.k-form-label{width:auto;}}&.k-vertical{.k-form-item,.k-form-label,.k-form-content{display:block;}.k-form-label{width:auto;text-align:left;line-height:inherit;margin-bottom:", form.item.verticalLabelGap, ";}}", _mapInstanceProperty(_context = ['small', 'mini']).call(_context, function (size) {
58
+ return /*#__PURE__*/css("&.k-inline{.k-form-item{display:inline-flex;vertical-align:top;margin-right:", form.item.inlineGap, ";}.k-form-label{width:auto;}}&.k-vertical{.k-form-item{flex-direction:column;}.k-form-label{width:auto;text-align:left;padding:0;justify-content:start;margin-bottom:", form.item.verticalLabelGap, ";}}", _mapInstanceProperty(_context = ['small', 'mini']).call(_context, function (size) {
59
59
  return /*#__PURE__*/css("&.k-", size, "{.k-form-item:not(:last-of-type){margin-bottom:", form.item[size + "Gap"], ";}&.k-inline{.k-form-item{margin-right:", form.item[size + "InlineGap"], ";}}}");
60
60
  }), ";");
61
61
  }
@@ -1,14 +1,14 @@
1
1
  import _extends from "@babel/runtime-corejs3/helpers/extends";
2
2
  import { useInstance } from 'intact-react';
3
3
  import { createContext } from '../context';
4
- import { hasDocumentAvailable, isObject, isNullOrUndefined } from 'intact-shared';
5
- import { useState } from '../../hooks/useState';
6
- import { responsiveMap } from './constants';
7
- var enquire;
4
+ import { hasDocumentAvailable, isObject, isNullOrUndefined } from 'intact-shared'; // import type * as EnquireJs from 'enquire.js';
8
5
 
9
- if (hasDocumentAvailable) {
10
- enquire = require('enquire.js');
11
- }
6
+ import enquire from 'enquire.js';
7
+ import { useState } from '../../hooks/useState';
8
+ import { responsiveMap } from './constants'; // let enquire: typeof EnquireJs;
9
+ // if (hasDocumentAvailable) {
10
+ // enquire = require('enquire.js');
11
+ // }
12
12
 
13
13
  export var context = createContext(0);
14
14
  export function useGutter() {
@@ -22,7 +22,7 @@ export function useGutter() {
22
22
  xs: false
23
23
  });
24
24
 
25
- if (enquire) {
25
+ if (hasDocumentAvailable) {
26
26
  var _loop = function _loop(key) {
27
27
  enquire.register(responsiveMap[key], {
28
28
  match: function match() {
@@ -2,7 +2,7 @@ import { Component, TypeDefs } from 'intact-react';
2
2
  import { Sizes } from '../../styles/utils';
3
3
  import { CommonInputHTMLAttributes, Events } from '../types';
4
4
  export * from './search';
5
- declare type HTMLInputTypes = 'textarea' | 'button' | 'checkbox' | 'color' | 'date' | 'datetime-local' | 'email' | 'file' | 'hidden' | 'image' | 'month' | 'number' | 'password' | 'radio' | 'range' | 'reset' | 'search' | 'submit' | 'tel' | 'text' | 'time' | 'url' | 'week' | (string & {});
5
+ export declare type HTMLInputTypes = 'textarea' | 'button' | 'checkbox' | 'color' | 'date' | 'datetime-local' | 'email' | 'file' | 'hidden' | 'image' | 'month' | 'number' | 'password' | 'radio' | 'range' | 'reset' | 'search' | 'submit' | 'tel' | 'text' | 'time' | 'url' | 'week' | (string & {});
6
6
  interface InputHTMLAttributes extends CommonInputHTMLAttributes {
7
7
  pattern?: string;
8
8
  dirname?: string;
@@ -20,7 +20,7 @@ export interface InputProps<V extends Value = Value> extends InputHTMLAttributes
20
20
  clearable?: boolean;
21
21
  disabled?: boolean;
22
22
  size?: Sizes;
23
- rows?: string | number;
23
+ rows?: string | number | 'auto' | AutoRows;
24
24
  autoWidth?: boolean;
25
25
  fluid?: boolean;
26
26
  width?: number | string;
@@ -28,7 +28,14 @@ export interface InputProps<V extends Value = Value> extends InputHTMLAttributes
28
28
  frozenOnInput?: boolean;
29
29
  inline?: boolean;
30
30
  waveDisabled?: boolean;
31
+ resize?: 'none' | 'vertical' | 'horizontal' | 'both';
32
+ showPassword?: boolean;
33
+ flat?: boolean;
31
34
  }
35
+ export declare type AutoRows = {
36
+ min?: number;
37
+ max?: number;
38
+ };
32
39
  export interface InputEvents {
33
40
  clear: [MouseEvent];
34
41
  focus: [FocusEvent];
@@ -49,6 +56,8 @@ export declare class Input<V extends Value = Value> extends Component<InputProps
49
56
  private inputRef;
50
57
  private autoWidth;
51
58
  private frozen;
59
+ private autoRows;
60
+ private showPassword;
52
61
  focus(): void;
53
62
  blur(): void;
54
63
  select(): void;
@@ -4,9 +4,11 @@ import { __decorate } from "tslib";
4
4
  import { Component, createRef } from 'intact-react';
5
5
  import { sizes } from '../../styles/utils';
6
6
  import template from './index.vdt';
7
- import { bind } from '../utils';
7
+ import { bind, selectValue } from '../utils';
8
8
  import { useAutoWidth } from './useAutoWidth';
9
9
  import { useFrozen } from './useFrozen';
10
+ import { useAutoRows } from './useAutoRows';
11
+ import { useShowPassword } from './useShowPassword';
10
12
  export * from './search';
11
13
  var typeDefs = {
12
14
  type: String,
@@ -17,21 +19,25 @@ var typeDefs = {
17
19
  clearable: Boolean,
18
20
  disabled: Boolean,
19
21
  size: sizes,
20
- rows: [String, Number],
22
+ rows: [String, Number, 'auto', Object],
21
23
  autoWidth: Boolean,
22
24
  fluid: Boolean,
23
25
  width: [Number, String],
24
26
  stackClearIcon: Boolean,
25
27
  frozenOnInput: Boolean,
26
28
  inline: Boolean,
27
- waveDisabled: Boolean
29
+ waveDisabled: Boolean,
30
+ resize: ['none', 'vertical', 'horizontal', 'both'],
31
+ showPassword: Boolean,
32
+ flat: Boolean
28
33
  };
29
34
 
30
35
  var defaults = function defaults() {
31
36
  return {
32
37
  type: 'text',
33
38
  size: 'default',
34
- rows: 2
39
+ rows: 2,
40
+ resize: 'vertical'
35
41
  };
36
42
  };
37
43
 
@@ -57,6 +63,8 @@ export var Input = /*#__PURE__*/function (_Component) {
57
63
  _this.inputRef = createRef();
58
64
  _this.autoWidth = useAutoWidth();
59
65
  _this.frozen = useFrozen();
66
+ _this.autoRows = useAutoRows(_this.inputRef);
67
+ _this.showPassword = useShowPassword();
60
68
  return _this;
61
69
  }
62
70
 
@@ -71,15 +79,7 @@ export var Input = /*#__PURE__*/function (_Component) {
71
79
  };
72
80
 
73
81
  _proto.select = function select() {
74
- var input = this.inputRef.value;
75
-
76
- if (input.select) {
77
- input.select();
78
- } else if (input.setSelectionRange) {
79
- // mobile safari
80
- input.focus();
81
- input.setSelectionRange(0, input.value.length);
82
- }
82
+ selectValue(this.inputRef.value);
83
83
  };
84
84
 
85
85
  _proto.clear = function clear(e) {
@@ -1,9 +1,16 @@
1
+ import _inheritsLoose from "@babel/runtime-corejs3/helpers/inheritsLoose";
1
2
  import _asyncToGenerator from "@babel/runtime-corejs3/helpers/asyncToGenerator";
3
+ import _concatInstanceProperty from "@babel/runtime-corejs3/core-js/instance/concat";
2
4
  import _regeneratorRuntime from "@babel/runtime-corejs3/regenerator";
3
5
  import BasicDemo from '~/components/input/demos/basic';
4
- import { mount, unmount, dispatchEvent, wait } from '../../test/utils';
6
+ import { mount, unmount, dispatchEvent, wait, getElement } from '../../test/utils';
5
7
  import SearchDemo from '~/components/input/demos/search';
6
8
  import FrozenDemo from '~/components/input/demos/frozen';
9
+ import AutoRowsDemo from '~/components/input/demos/autoRows';
10
+ import PasswordDemo from '~/components/input/demos/password';
11
+ import { Input } from './';
12
+ import { Dialog } from '../dialog';
13
+ import { Component } from 'intact-react';
7
14
  describe('Input', function () {
8
15
  afterEach(function () {
9
16
  unmount();
@@ -124,4 +131,165 @@ describe('Input', function () {
124
131
  }
125
132
  }, _callee3);
126
133
  })));
134
+ it('should auto expand or shrink textarea', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4() {
135
+ var _mount4, instance, element, _element$querySelecto2, textarea1, textarea2;
136
+
137
+ return _regeneratorRuntime.wrap(function _callee4$(_context4) {
138
+ while (1) {
139
+ switch (_context4.prev = _context4.next) {
140
+ case 0:
141
+ _mount4 = mount(AutoRowsDemo), instance = _mount4[0], element = _mount4[1];
142
+ _element$querySelecto2 = element.querySelectorAll('textarea'), textarea1 = _element$querySelecto2[0], textarea2 = _element$querySelecto2[1]; // const lineHeight = parseInt(getComputedStyle(textarea1).lineHeight);
143
+
144
+ instance.set('value1', 'a\nb');
145
+ _context4.next = 5;
146
+ return wait();
147
+
148
+ case 5:
149
+ expect(textarea1.style.height).to.eql('50px');
150
+ instance.set('value1', 'a');
151
+ _context4.next = 9;
152
+ return wait();
153
+
154
+ case 9:
155
+ expect(textarea1.style.height).to.eql('32px');
156
+ instance.set('value2', 'a');
157
+ _context4.next = 13;
158
+ return wait();
159
+
160
+ case 13:
161
+ expect(textarea2.style.height).to.eql('68px');
162
+ instance.set('value2', 'a\nb\nc');
163
+ _context4.next = 17;
164
+ return wait();
165
+
166
+ case 17:
167
+ expect(textarea2.style.height).to.eql('68px');
168
+ instance.set('value2', 'a\nb\nc\nd');
169
+ _context4.next = 21;
170
+ return wait();
171
+
172
+ case 21:
173
+ expect(textarea2.style.height).to.eql('86px');
174
+ instance.set('value2', 'a\nb\nc\nd\ne\nf\ng\nh');
175
+ _context4.next = 25;
176
+ return wait();
177
+
178
+ case 25:
179
+ expect(textarea2.style.height).to.eql('104px');
180
+
181
+ case 26:
182
+ case "end":
183
+ return _context4.stop();
184
+ }
185
+ }
186
+ }, _callee4);
187
+ })));
188
+ it('should show or hide password', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5() {
189
+ var _mount5, instance, element, input, icon, inputInstance;
190
+
191
+ return _regeneratorRuntime.wrap(function _callee5$(_context5) {
192
+ while (1) {
193
+ switch (_context5.prev = _context5.next) {
194
+ case 0:
195
+ _mount5 = mount(PasswordDemo), instance = _mount5[0], element = _mount5[1];
196
+ input = element.querySelector('input');
197
+ icon = element.querySelector('.k-icon');
198
+ inputInstance = instance.refs.__demo;
199
+ icon.click();
200
+ _context5.next = 7;
201
+ return wait();
202
+
203
+ case 7:
204
+ expect(input.type).to.eql('text');
205
+ expect(element.innerHTML).to.matchSnapshot();
206
+ icon.click();
207
+ _context5.next = 12;
208
+ return wait();
209
+
210
+ case 12:
211
+ expect(input.type).to.eql('password');
212
+ expect(element.innerHTML).to.matchSnapshot(); // simulate receive type
213
+
214
+ inputInstance.$props.type = 'number';
215
+ inputInstance.trigger('$receive:type', 'number');
216
+ _context5.next = 18;
217
+ return wait();
218
+
219
+ case 18:
220
+ expect(input.type).to.eql('number');
221
+ expect(icon.parentElement.parentElement).to.eql(null);
222
+ expect(element.innerHTML).to.matchSnapshot(); // simulate receive showPassword
223
+
224
+ inputInstance.$props.type = 'password';
225
+ inputInstance.$props.showPassword = false;
226
+ inputInstance.trigger('$receive:type', 'password');
227
+ inputInstance.trigger('$receive:showPassword', false);
228
+ _context5.next = 27;
229
+ return wait();
230
+
231
+ case 27:
232
+ expect(input.type).to.eql('password');
233
+ expect(element.querySelector('.k-icon')).to.eql(null);
234
+ expect(element.innerHTML).to.matchSnapshot();
235
+
236
+ case 30:
237
+ case "end":
238
+ return _context5.stop();
239
+ }
240
+ }
241
+ }, _callee5);
242
+ })));
243
+ it('should set width when dialog show and input mounted', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee6() {
244
+ var Demo, _mount6, instance, dialog, width;
245
+
246
+ return _regeneratorRuntime.wrap(function _callee6$(_context7) {
247
+ while (1) {
248
+ switch (_context7.prev = _context7.next) {
249
+ case 0:
250
+ Demo = /*#__PURE__*/function (_Component) {
251
+ _inheritsLoose(Demo, _Component);
252
+
253
+ function Demo() {
254
+ var _context6;
255
+
256
+ var _this;
257
+
258
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
259
+ args[_key] = arguments[_key];
260
+ }
261
+
262
+ _this = _Component.call.apply(_Component, _concatInstanceProperty(_context6 = [this]).call(_context6, args)) || this;
263
+ _this.Dialog = Dialog;
264
+ _this.Input = Input;
265
+ return _this;
266
+ }
267
+
268
+ Demo.defaults = function defaults() {
269
+ return {
270
+ show: false
271
+ };
272
+ };
273
+
274
+ return Demo;
275
+ }(Component);
276
+
277
+ Demo.template = "\n var Dialog = this.Dialog;\n var Input = this.Input;\n <Dialog value={this.get('show')}>\n <Input autoWidth placeholder=\"test\" v-if={this.get('show')} />\n </Dialog>\n ";
278
+ _mount6 = mount(Demo), instance = _mount6[0];
279
+ instance.set('show', true);
280
+ _context7.next = 6;
281
+ return wait(50);
282
+
283
+ case 6:
284
+ dialog = getElement('.k-dialog');
285
+ width = parseInt(dialog.querySelector('.k-input-inner').style.width);
286
+ expect(width).to.gt(1);
287
+
288
+ case 9:
289
+ case "end":
290
+ return _context7.stop();
291
+ }
292
+ }
293
+ }, _callee6);
294
+ })));
127
295
  });
@@ -1,11 +1,12 @@
1
1
  import _extends from "@babel/runtime-corejs3/helpers/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime-corejs3/helpers/objectWithoutPropertiesLoose";
3
- var _excluded = ["className", "style", "type", "value", "defaultValue", "placeholder", "clearable", "disabled", "size", "rows", "autoWidth", "fluid", "width", "stackClearIcon", "frozenOnInput", "readonly", "inline", "waveDisabled", "ev-click", "ev-mounseenter", "ev-mouseleave"];
3
+ var _excluded = ["className", "style", "type", "value", "defaultValue", "placeholder", "clearable", "disabled", "size", "rows", "autoWidth", "fluid", "width", "stackClearIcon", "frozenOnInput", "readonly", "inline", "waveDisabled", "resize", "flat", "ev-click", "ev-mounseenter", "ev-mouseleave"];
4
+ import _flatInstanceProperty from "@babel/runtime-corejs3/core-js/instance/flat";
4
5
  import { createElementVNode as _$ce, className as _$cn, createUnknownComponentVNode as _$cc, noop as _$no, createVNode as _$cv } from 'intact-react';
5
6
  import { Icon } from '../icon';
6
7
  import { addStyle, isTextBlock, getRestProps } from '../utils';
7
8
  import { makeStyles } from './styles';
8
- import { noop, isNullOrUndefined } from 'intact-shared';
9
+ import { noop, isNullOrUndefined, isStringOrNumber } from 'intact-shared';
9
10
  import { Wave } from '../wave';
10
11
  import { context as ErrorContext } from '../form/useError';
11
12
  export default function ($props, $blocks, $__proto__) {
@@ -39,6 +40,8 @@ export default function ($props, $blocks, $__proto__) {
39
40
  readonly = _this$get.readonly,
40
41
  inline = _this$get.inline,
41
42
  waveDisabled = _this$get.waveDisabled,
43
+ resize = _this$get.resize,
44
+ flat = _flatInstanceProperty(_this$get),
42
45
  click = _this$get['ev-click'],
43
46
  mouseenter = _this$get['ev-mounseenter'],
44
47
  mouseleave = _this$get['ev-mouseleave'],
@@ -50,12 +53,19 @@ export default function ($props, $blocks, $__proto__) {
50
53
  startInput = _this$frozen.startInput,
51
54
  onInput = _this$frozen.onInput,
52
55
  endInput = _this$frozen.endInput;
56
+ var isNotAutoRows = isStringOrNumber(rows) && rows !== 'auto';
53
57
  var classNameObj = (_classNameObj = {
54
58
  'k-input': true
55
- }, _classNameObj["k-" + size] = size !== 'default', _classNameObj['k-group'] = $blocks.prepend || $blocks.append, _classNameObj['k-disabled'] = disabled, _classNameObj['k-with-prefix'] = $blocks.prefix, _classNameObj['k-with-suffix'] = $blocks.suffix, _classNameObj['k-clearable'] = clearable, _classNameObj['k-auto-width'] = autoWidth, _classNameObj['k-fluid'] = fluid, _classNameObj['k-stack-clear'] = stackClearIcon, _classNameObj['k-inline'] = inline, _classNameObj[className] = className, _classNameObj[makeStyles()] = true, _classNameObj);
59
+ }, _classNameObj["k-" + size] = size !== 'default', _classNameObj['k-group'] = $blocks.prepend || $blocks.append, _classNameObj['k-disabled'] = disabled, _classNameObj['k-with-prefix'] = $blocks.prefix, _classNameObj['k-with-suffix'] = $blocks.suffix, _classNameObj['k-clearable'] = clearable, _classNameObj['k-auto-width'] = autoWidth, _classNameObj['k-fluid'] = fluid, _classNameObj['k-stack-clear'] = stackClearIcon, _classNameObj['k-inline'] = inline, _classNameObj['k-flat'] = flat, _classNameObj["k-resize-" + resize] = type === 'textarea' && isNotAutoRows, _classNameObj["k-resize-none"] = type === 'textarea' && !isNotAutoRows, _classNameObj[className] = className, _classNameObj[makeStyles()] = true, _classNameObj);
60
+ var _this$showPassword = this.showPassword,
61
+ isShowPassword = _this$showPassword.isShow,
62
+ toggleShowPassword = _this$showPassword.toggleShow,
63
+ showPasswordType = _this$showPassword.type,
64
+ showPasswordIcon = _this$showPassword.showIcon;
56
65
  var _this$autoWidth = this.autoWidth,
57
66
  fakeRef = _this$autoWidth.fakeRef,
58
67
  fakeWidth = _this$autoWidth.width.value;
68
+ var height = this.autoRows;
59
69
  var inputValue = frozenOnInput && inputing ? originalValue : value;
60
70
  var hasInputValue = !isNullOrUndefined(inputValue);
61
71
  var hasValue = hasInputValue && inputValue !== '';
@@ -69,7 +79,7 @@ export default function ($props, $blocks, $__proto__) {
69
79
  placeholder: placeholder,
70
80
  disabled: disabled,
71
81
  ref: this.inputRef,
72
- style: autoWidth ? {
82
+ style: autoWidth && fakeWidth ? {
73
83
  width: fakeWidth + 'px'
74
84
  } : undefined
75
85
  }); // if we pass value to input element, the input is controlled and the
@@ -100,11 +110,22 @@ export default function ($props, $blocks, $__proto__) {
100
110
  return block ? block.call($this, callBlock, data) : callBlock();
101
111
  }, __$blocks['prefix'](_$no)), 0, 'k-input-prefix') : undefined, type !== 'textarea' ? _$cv('input', _extends({}, inputProps, {
102
112
  'className': 'k-input-inner',
103
- 'type': type
113
+ 'type': showPasswordType.value
104
114
  })) : _$cv('textarea', _extends({}, inputProps, {
105
115
  'className': 'k-input-inner k-textarea',
106
- 'rows': rows
107
- })), $blocks.suffix || clearable && !disabled ? _$ce(2, 'div', [clearable && !disabled ? _$cc(Icon, {
116
+ 'rows': isNotAutoRows ? rows : 1,
117
+ 'style': height.value ? addStyle(inputProps.style, {
118
+ height: height.value + 'px'
119
+ }) : inputProps.style
120
+ })), $blocks.suffix || clearable && !disabled || showPasswordIcon.value ? _$ce(2, 'div', [showPasswordIcon.value ? [_$cc(Icon, {
121
+ 'hoverable': true,
122
+ 'className': _$cn({
123
+ "k-input-show-password": true,
124
+ "ion-eye-disabled": !isShowPassword.value,
125
+ "ion-eye": isShowPassword.value
126
+ }),
127
+ 'ev-click': toggleShowPassword
128
+ }), ' '] : undefined, clearable && !disabled ? _$cc(Icon, {
108
129
  'className': _$cn({
109
130
  "k-input-clear ion-ios-close": true,
110
131
  "k-input-show": hasValue
@@ -1,8 +1,10 @@
1
+ import _flatInstanceProperty from "@babel/runtime-corejs3/core-js/instance/flat";
1
2
  import _mapInstanceProperty from "@babel/runtime-corejs3/core-js/instance/map";
2
3
  import { css } from '@emotion/css';
3
4
  import { theme, setDefault } from '../../styles/theme';
4
5
  import { deepDefaults, sizes } from '../../styles/utils';
5
6
  import '../../styles/global';
7
+ import { Input } from './';
6
8
  var defaults = deepDefaults({
7
9
  get transition() {
8
10
  return theme.transition.middle;
@@ -58,7 +60,7 @@ var defaults = deepDefaults({
58
60
 
59
61
  // textarea
60
62
  get textareaPadding() {
61
- return "5px " + input.paddingGap;
63
+ return "6px " + input.paddingGap;
62
64
  },
63
65
 
64
66
  // group
@@ -84,6 +86,17 @@ var defaults = deepDefaults({
84
86
  // search input
85
87
  search: {
86
88
  suffixMarginRight: '15px'
89
+ },
90
+ // flat
91
+ flat: {
92
+ get color() {
93
+ return theme.color.lightBlack;
94
+ },
95
+
96
+ get bgColor() {
97
+ return theme.color.bg;
98
+ }
99
+
87
100
  }
88
101
  }, sizes.reduce(function (memo, size) {
89
102
  var styles = theme[size];
@@ -110,12 +123,16 @@ setDefault(function () {
110
123
  }).input;
111
124
  });
112
125
  export function makeStyles() {
113
- return /*#__PURE__*/css("display:inline-block;width:", input.width, ";vertical-align:middle;.k-input-wrapper{display:inline-block;width:100%;position:relative;}.k-input-inner{display:inline-block;width:100%;border:", input.border, ";background-color:", input.bgColor, ";transition:border ", input.transition, ",background ", input.transition, ",box-shadow ", input.transition, ";border-radius:", input.borderRadius, ";outline:none;position:relative;color:", input.color, ";&:hover{border:", input.hoverBorder, ";z-index:1;}&:focus{border:", input.focusBorder, ";z-index:1;}&::placeholder{color:", input.placeholderColor, ";}}&.k-fluid{width:100%;}.k-input-prefix,.k-input-suffix{position:absolute;top:50%;transform:translateY(-50%);z-index:2;color:", theme.color.lightBlack, ";line-height:1;}.k-input-clear{opacity:0;transition:opacity ", input.transition, ";pointer-events:none;color:", input.clearIconColor, ";+*{margin-left:", input.clearIconGap, ";}}&:hover .k-input-clear.k-input-show{opacity:1;pointer-events:all;}&.k-stack-clear{.k-input-clear{position:absolute;z-index:1;right:0;&.k-input-show+i{transition:opacity ", input.transition, ";}}&:hover{.k-input-clear.k-input-show+i{opacity:0;}}}&.k-group{display:table;.k-input-inner{border-radius:0;}.k-input-wrapper:first-child{.k-input-inner{border-radius:", input.borderRadius, " 0 0 ", input.borderRadius, ";}}.k-input-wrapper:last-child{.k-input-inner{border-radius:0 ", input.borderRadius, " ", input.borderRadius, " 0;}}}.k-input-prepend,.k-input-append{display:table-cell;width:1px;vertical-align:middle;background-color:", input.groupBgColor, ";border:", input.border, ";text-align:center;white-space:nowrap;.k-btn{margin:-1px;border:none;&.k-none:hover{background:transparent;}}.k-select{margin:-1px;text-align:left;}}.k-input-prepend{&,.k-btn,.k-select{z-index:1;border-radius:", input.borderRadius, " 0 0 ", input.borderRadius, ";}}.k-input-append{&,.k-btn,.k-select{z-index:1;border-radius:0 ", input.borderRadius, " ", input.borderRadius, " 0;}}.k-input-padding{padding:0 ", input.groupPaddingGap, ";}.k-input-prepend{border-right:none;}.k-input-append{border-left:none;}&.k-disabled{color:", input.disabledColor, ";cursor:not-allowed;.k-input-inner{color:", input.disabledColor, ";border-color:", input.disabledBorderColor, ";background:", input.disabledBgColor, ";cursor:not-allowed;}}", _mapInstanceProperty(sizes).call(sizes, function (size) {
126
+ var _context;
127
+
128
+ return /*#__PURE__*/css("display:inline-block;width:", input.width, ";vertical-align:middle;.k-input-wrapper{display:inline-block;width:100%;position:relative;}.k-input-inner{display:inline-block;width:100%;border:", input.border, ";background-color:", input.bgColor, ";transition:border ", input.transition, ",background ", input.transition, ",box-shadow ", input.transition, ";border-radius:", input.borderRadius, ";outline:none;position:relative;color:", input.color, ";&:hover{border:", input.hoverBorder, ";z-index:1;}&:focus{border:", input.focusBorder, ";z-index:1;}&::placeholder{color:", input.placeholderColor, ";}}&.k-fluid{width:100%;}.k-input-prefix,.k-input-suffix{position:absolute;top:50%;transform:translateY(-50%);z-index:2;color:", theme.color.lightBlack, ";line-height:1;}.k-input-clear{opacity:0;transition:opacity ", input.transition, ";pointer-events:none;color:", input.clearIconColor, ";+*{margin-left:", input.clearIconGap, ";}}&:hover .k-input-clear.k-input-show{opacity:1;pointer-events:all;}.k-input-show-password{color:", input.clearIconColor, ";}&.k-stack-clear{.k-input-clear{position:absolute;z-index:1;right:0;&.k-input-show+i{transition:opacity ", input.transition, ";}}&:hover{.k-input-clear.k-input-show+i{opacity:0;}}}&.k-group{display:table;.k-input-inner{border-radius:0;}.k-input-wrapper:first-child{.k-input-inner{border-radius:", input.borderRadius, " 0 0 ", input.borderRadius, ";}}.k-input-wrapper:last-child{.k-input-inner{border-radius:0 ", input.borderRadius, " ", input.borderRadius, " 0;}}}.k-input-prepend,.k-input-append{display:table-cell;width:1px;vertical-align:middle;background-color:", input.groupBgColor, ";border:", input.border, ";text-align:center;white-space:nowrap;.k-btn{margin:-1px;border:none;&.k-none:hover{background:transparent;}}.k-select{margin:-1px;text-align:left;}}.k-input-prepend{&,.k-btn,.k-select{z-index:1;border-radius:", input.borderRadius, " 0 0 ", input.borderRadius, ";}}.k-input-append{&,.k-btn,.k-select{z-index:1;border-radius:0 ", input.borderRadius, " ", input.borderRadius, " 0;}}.k-input-padding{padding:0 ", input.groupPaddingGap, ";}.k-input-prepend{border-right:none;}.k-input-append{border-left:none;}&.k-flat{.k-input-inner{border:none;background:", _flatInstanceProperty(input).bgColor, ";color:", _flatInstanceProperty(input).color, ";}}&.k-disabled{color:", input.disabledColor, ";cursor:not-allowed;.k-input-inner{color:", input.disabledColor, ";border-color:", input.disabledBorderColor, ";background:", input.disabledBgColor, ";cursor:not-allowed;}}", _mapInstanceProperty(sizes).call(sizes, function (size) {
114
129
  var styles = input[size];
115
130
  var sizeClassName = /*#__PURE__*/css("font-size:", styles.fontSize, ";.k-input-inner{height:", styles.height, ";line-height:", styles.height, ";font-size:", styles.fontSize, ";padding:0 ", styles.paddingGap, ";}.k-input-prefix{left:", styles.paddingGap, ";}.k-input-suffix{right:", styles.paddingGap, ";}&.k-with-prefix{.k-input-inner{padding-left:calc(", styles.paddingGap, " + 1rem + ", input.clearIconGap, ");}}&.k-with-suffix,&.k-clearable{.k-input-inner{padding-right:calc(", styles.paddingGap, " + 1rem + ", input.clearIconGap, ");}}&:not(.k-stack-clear).k-with-suffix.k-clearable{.k-input-inner{padding-right:calc(", styles.paddingGap, " + 2rem + ", input.clearIconGap, " * 2);}}");
116
131
  if (size === 'default') return sizeClassName;
117
132
  return /*#__PURE__*/css("&.k-", size, "{", sizeClassName, ";}");
118
- }), "&.k-inline{.k-input-inner{height:auto;line-height:inherit;border:none;border-radius:0;padding:0;}}.k-textarea{padding:", input.textareaPadding, ";height:auto;line-height:1.5;vertical-align:top;}.k-input-fake{position:absolute;visibility:hidden;top:0;white-space:nowrap;}&.k-auto-width{width:auto;.k-input-inner{box-sizing:content-box;}}");
133
+ }), "&.k-inline{.k-input-inner{height:auto;line-height:inherit;border:none;border-radius:0;padding:0;}}.k-textarea{padding:", input.textareaPadding, ";height:auto;line-height:1.5;vertical-align:top;}", _mapInstanceProperty(_context = Input.typeDefs.resize).call(_context, function (type) {
134
+ return /*#__PURE__*/css("&.k-resize-", type, "{.k-textarea{resize:", type, ";}}");
135
+ }), ".k-input-fake{position:absolute;visibility:hidden;top:0;white-space:nowrap;}&.k-auto-width{width:auto;max-width:100%;.k-input-inner{max-width:100%;box-sizing:content-box;}}");
119
136
  }
120
137
  export function makeSearchStyles() {
121
138
  return /*#__PURE__*/css("position:relative;display:inline-block;.k-input{transition:width ", input.transition, ";}.k-btn{position:absolute;top:0;right:0;z-index:1;}.k-input-suffix{margin-right:", input.search.suffixMarginRight, ";}&.k-hide{", _mapInstanceProperty(sizes).call(sizes, function (size) {
@@ -0,0 +1,2 @@
1
+ import { RefObject } from 'intact-react';
2
+ export declare function useAutoRows(inputRef: RefObject<HTMLInputElement>): import("../../hooks/useState").State<number>;
@@ -0,0 +1,79 @@
1
+ import { useInstance, onMounted } from 'intact-react';
2
+ import { useState } from '../../hooks/useState';
3
+ import { isObject } from 'intact-shared';
4
+ export function useAutoRows(inputRef) {
5
+ var instance = useInstance();
6
+ var height = useState(0);
7
+ var lineHeight;
8
+ var paddingTop;
9
+ var paddingBottom;
10
+ var isBorderBox;
11
+
12
+ function getStyles() {
13
+ if (instance.get('type') === 'textarea') {
14
+ var styles = getComputedStyle(inputRef.value);
15
+ lineHeight = parseInt(styles.lineHeight);
16
+ paddingTop = parseInt(styles.paddingTop);
17
+ paddingBottom = parseInt(styles.paddingBottom);
18
+ isBorderBox = styles.boxSizing === 'border-box';
19
+ }
20
+ }
21
+
22
+ onMounted(getStyles);
23
+ instance.watch('type', getStyles, {
24
+ presented: true
25
+ });
26
+ instance.watch('value', adjust, {
27
+ inited: true,
28
+ presented: true
29
+ });
30
+ instance.watch('placeholder', adjust, {
31
+ inited: true,
32
+ presented: true
33
+ });
34
+ instance.watch('rows', adjust, {
35
+ inited: true,
36
+ presented: true
37
+ });
38
+ onMounted(adjust);
39
+
40
+ function adjust() {
41
+ var _instance$get = instance.get(),
42
+ rows = _instance$get.rows,
43
+ type = _instance$get.type;
44
+
45
+ if (type === 'textarea' && (rows === 'auto' || isObject(rows))) {
46
+ var textarea = inputRef.value;
47
+ var originheight = textarea.style.height; // we shuold remove height before get scrollHeight,
48
+ // otherwise we cannot shrink the height when we remove the text
49
+
50
+ textarea.style.height = '';
51
+ var scrollHeight = textarea.scrollHeight;
52
+ var lines = (scrollHeight - paddingTop - paddingBottom) / lineHeight;
53
+ textarea.style.height = originheight;
54
+ var actualLines = lines;
55
+
56
+ if (rows !== 'auto') {
57
+ var min = rows.min,
58
+ max = rows.max;
59
+
60
+ if (min && lines <= min) {
61
+ actualLines = min;
62
+ }
63
+
64
+ if (max && lines >= max) {
65
+ actualLines = max;
66
+ }
67
+ }
68
+
69
+ height.set(lineHeight * actualLines + (isBorderBox ? paddingTop + paddingBottom + 2
70
+ /* border */
71
+ : 0));
72
+ return;
73
+ }
74
+
75
+ height.set(0);
76
+ }
77
+
78
+ return height;
79
+ }
@@ -1,4 +1,4 @@
1
- import { useInstance, createRef, onMounted } from 'intact-react';
1
+ import { useInstance, createRef, onMounted, nextTick } from 'intact-react';
2
2
  import { useState } from '../../hooks/useState';
3
3
  export function useAutoWidth() {
4
4
  var instance = useInstance();
@@ -16,9 +16,15 @@ export function useAutoWidth() {
16
16
 
17
17
  function adjustWidth() {
18
18
  if (instance.get('autoWidth')) {
19
- var _width = fakeRef.value.offsetWidth || 1;
19
+ nextTick(function () {
20
+ var fakeElem = fakeRef.value;
20
21
 
21
- width.set(_width);
22
+ if (isVisible(fakeElem)) {
23
+ var _width = fakeElem.offsetWidth || 1;
24
+
25
+ width.set(_width);
26
+ }
27
+ });
22
28
  }
23
29
  }
24
30
 
@@ -26,4 +32,8 @@ export function useAutoWidth() {
26
32
  fakeRef: fakeRef,
27
33
  width: width
28
34
  };
35
+ }
36
+
37
+ function isVisible(elem) {
38
+ return elem && (elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length);
29
39
  }
@@ -0,0 +1,7 @@
1
+ import type { HTMLInputTypes } from './';
2
+ export declare function useShowPassword(): {
3
+ isShow: import("../../hooks/useState").State<boolean>;
4
+ type: import("../../hooks/useState").State<HTMLInputTypes | undefined>;
5
+ toggleShow: () => void;
6
+ showIcon: import("../../hooks/useState").State<boolean>;
7
+ };