tiny-ui 0.0.94 → 0.0.95

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 (300) hide show
  1. package/.stylelintrc +19 -0
  2. package/babel.config.js +30 -0
  3. package/components/_utils/dom.ts +1 -1
  4. package/components/alert/__tests__/alert.test.tsx +36 -38
  5. package/components/aspect-ratio/__tests__/aspect-ratio.test.tsx +7 -4
  6. package/components/button/__tests__/button-group.test.tsx +49 -8
  7. package/components/checkbox/checkbox.tsx +3 -3
  8. package/components/grid/style/_index.scss +2 -2
  9. package/components/index.ts +5 -3
  10. package/components/input/input.tsx +1 -1
  11. package/components/layout/layout.tsx +1 -1
  12. package/components/link/__test__/__snapshots__/link.test.tsx.snap +17 -0
  13. package/components/link/__test__/link.test.tsx +27 -0
  14. package/components/popup/index.tsx +3 -4
  15. package/components/popup/style/_index.scss +5 -4
  16. package/components/radio/radio.tsx +1 -1
  17. package/components/sticky/style/_index.scss +4 -1
  18. package/components/style/_animation.scss +3 -0
  19. package/components/style/_component.scss +0 -1
  20. package/components/style/_font.scss +247 -246
  21. package/components/style/_mixins.scss +1 -1
  22. package/components/style/_normalise.scss +7 -0
  23. package/components/style/_variables.scss +183 -183
  24. package/components/switch/index.tsx +1 -1
  25. package/components/switch/style/_mixin.scss +2 -2
  26. package/components/tooltip/style/_index.scss +5 -4
  27. package/dist/styles/index.css +7140 -5434
  28. package/dist/styles/index.css.map +1 -1
  29. package/dist/styles/index.min.css +1 -1
  30. package/dist/styles/index.min.css.map +1 -1
  31. package/dist/tiny.js +3695 -1916
  32. package/dist/tiny.map +1 -1
  33. package/dist/tiny.min.js +2 -6
  34. package/dist/tiny.min.js.LICENSE.txt +20 -0
  35. package/lib/_utils/dom.d.ts +8 -1
  36. package/lib/_utils/general.js +2 -2
  37. package/lib/_utils/general.js.map +1 -1
  38. package/lib/_utils/warning.js +1 -1
  39. package/lib/_utils/warning.js.map +1 -1
  40. package/lib/alert/index.js +7 -7
  41. package/lib/alert/index.js.map +1 -1
  42. package/lib/anchor/anchor-link.d.ts +1 -1
  43. package/lib/anchor/anchor-link.js +3 -3
  44. package/lib/anchor/anchor-link.js.map +1 -1
  45. package/lib/anchor/anchor.js +8 -8
  46. package/lib/anchor/anchor.js.map +1 -1
  47. package/lib/aspect-ratio/index.js +2 -2
  48. package/lib/aspect-ratio/index.js.map +1 -1
  49. package/lib/avatar/avatar.js +8 -8
  50. package/lib/avatar/avatar.js.map +1 -1
  51. package/lib/badge/index.js +4 -4
  52. package/lib/badge/index.js.map +1 -1
  53. package/lib/breadcrumb/breadcrumb-item.js +1 -1
  54. package/lib/breadcrumb/breadcrumb-item.js.map +1 -1
  55. package/lib/breadcrumb/breadcrumb.js +1 -1
  56. package/lib/breadcrumb/breadcrumb.js.map +1 -1
  57. package/lib/button/button-group.d.ts +1 -1
  58. package/lib/button/button-group.js +2 -2
  59. package/lib/button/button-group.js.map +1 -1
  60. package/lib/button/button.d.ts +1 -1
  61. package/lib/button/button.js +9 -9
  62. package/lib/button/button.js.map +1 -1
  63. package/lib/calendar/index.js +4 -4
  64. package/lib/calendar/index.js.map +1 -1
  65. package/lib/card/card-content.js +1 -1
  66. package/lib/card/card-content.js.map +1 -1
  67. package/lib/card/card.js +5 -5
  68. package/lib/card/card.js.map +1 -1
  69. package/lib/carousel/arrow-group.js +3 -3
  70. package/lib/carousel/arrow-group.js.map +1 -1
  71. package/lib/carousel/carousel.js +3 -3
  72. package/lib/carousel/carousel.js.map +1 -1
  73. package/lib/carousel/dot-group.js +3 -3
  74. package/lib/carousel/dot-group.js.map +1 -1
  75. package/lib/checkbox/checkbox-group.d.ts +1 -1
  76. package/lib/checkbox/checkbox-group.js +3 -3
  77. package/lib/checkbox/checkbox-group.js.map +1 -1
  78. package/lib/checkbox/checkbox.d.ts +1 -1
  79. package/lib/checkbox/checkbox.js +8 -8
  80. package/lib/checkbox/checkbox.js.map +1 -1
  81. package/lib/collapse/collapse-panel.js +8 -8
  82. package/lib/collapse/collapse-panel.js.map +1 -1
  83. package/lib/collapse/collapse.d.ts +1 -1
  84. package/lib/collapse/collapse.js +4 -4
  85. package/lib/collapse/collapse.js.map +1 -1
  86. package/lib/date-picker/picker-day.js +9 -9
  87. package/lib/date-picker/picker-day.js.map +1 -1
  88. package/lib/date-picker/picker-header.js +7 -7
  89. package/lib/date-picker/picker-header.js.map +1 -1
  90. package/lib/descriptions/col.js +7 -7
  91. package/lib/descriptions/col.js.map +1 -1
  92. package/lib/descriptions/descriptions.js +4 -4
  93. package/lib/descriptions/descriptions.js.map +1 -1
  94. package/lib/descriptions/row.js +3 -3
  95. package/lib/descriptions/row.js.map +1 -1
  96. package/lib/divider/index.js +4 -4
  97. package/lib/divider/index.js.map +1 -1
  98. package/lib/drawer/index.js +7 -7
  99. package/lib/drawer/index.js.map +1 -1
  100. package/lib/empty/index.js +4 -4
  101. package/lib/empty/index.js.map +1 -1
  102. package/lib/flip/flip.js +11 -11
  103. package/lib/flip/flip.js.map +1 -1
  104. package/lib/form/form-helper.js +1 -1
  105. package/lib/form/form-helper.js.map +1 -1
  106. package/lib/form/form-item.js +11 -11
  107. package/lib/form/form-item.js.map +1 -1
  108. package/lib/form/form.js +1 -1
  109. package/lib/form/form.js.map +1 -1
  110. package/lib/grid/col.js +4 -4
  111. package/lib/grid/col.js.map +1 -1
  112. package/lib/grid/row.js +2 -2
  113. package/lib/grid/row.js.map +1 -1
  114. package/lib/grid/style/_index.scss +2 -2
  115. package/lib/icon/index.js +2 -2
  116. package/lib/icon/index.js.map +1 -1
  117. package/lib/image/index.js +1 -1
  118. package/lib/image/index.js.map +1 -1
  119. package/lib/index.d.ts +1 -2
  120. package/lib/index.js +1 -2
  121. package/lib/index.js.map +1 -1
  122. package/lib/input/input-group-addon.js +2 -2
  123. package/lib/input/input-group-addon.js.map +1 -1
  124. package/lib/input/input.d.ts +1 -1
  125. package/lib/input/input.js +7 -7
  126. package/lib/input/input.js.map +1 -1
  127. package/lib/input-number/index.js +9 -9
  128. package/lib/input-number/index.js.map +1 -1
  129. package/lib/input-password/index.js +2 -2
  130. package/lib/input-password/index.js.map +1 -1
  131. package/lib/keyboard/index.d.ts +1 -1
  132. package/lib/layout/layout.d.ts +4 -4
  133. package/lib/layout/layout.js +1 -1
  134. package/lib/layout/layout.js.map +1 -1
  135. package/lib/layout/sidebar.d.ts +1 -1
  136. package/lib/layout/sidebar.js +4 -4
  137. package/lib/layout/sidebar.js.map +1 -1
  138. package/lib/link/index.js +2 -2
  139. package/lib/link/index.js.map +1 -1
  140. package/lib/loader/index.js +9 -9
  141. package/lib/loader/index.js.map +1 -1
  142. package/lib/loader/indicator.js +5 -5
  143. package/lib/loader/indicator.js.map +1 -1
  144. package/lib/loading-bar/index.js +1 -1
  145. package/lib/loading-bar/index.js.map +1 -1
  146. package/lib/loading-bar/loading-bar.js +1 -1
  147. package/lib/loading-bar/loading-bar.js.map +1 -1
  148. package/lib/menu/menu-item-group.js +3 -3
  149. package/lib/menu/menu-item-group.js.map +1 -1
  150. package/lib/menu/menu-item.js +2 -2
  151. package/lib/menu/menu-item.js.map +1 -1
  152. package/lib/menu/menu.js +2 -2
  153. package/lib/menu/menu.js.map +1 -1
  154. package/lib/menu/sub-menu.js +11 -11
  155. package/lib/menu/sub-menu.js.map +1 -1
  156. package/lib/message/index.js +2 -2
  157. package/lib/message/index.js.map +1 -1
  158. package/lib/message/message.js +9 -9
  159. package/lib/message/message.js.map +1 -1
  160. package/lib/modal/index.js +10 -10
  161. package/lib/modal/index.js.map +1 -1
  162. package/lib/native-select/native-opt-group.d.ts +3 -3
  163. package/lib/native-select/native-option.d.ts +3 -3
  164. package/lib/native-select/native-select.d.ts +1 -1
  165. package/lib/native-select/native-select.js +2 -2
  166. package/lib/native-select/native-select.js.map +1 -1
  167. package/lib/notification/index.js +6 -6
  168. package/lib/notification/index.js.map +1 -1
  169. package/lib/notification/notification.js +6 -6
  170. package/lib/notification/notification.js.map +1 -1
  171. package/lib/overlay/index.js +2 -2
  172. package/lib/overlay/index.js.map +1 -1
  173. package/lib/pagination/index.js +11 -11
  174. package/lib/pagination/index.js.map +1 -1
  175. package/lib/pop-confirm/index.js +4 -4
  176. package/lib/pop-confirm/index.js.map +1 -1
  177. package/lib/popover/index.js +4 -4
  178. package/lib/popover/index.js.map +1 -1
  179. package/lib/popup/index.js +6 -6
  180. package/lib/popup/index.js.map +1 -1
  181. package/lib/popup/style/_index.scss +5 -4
  182. package/lib/progress/bar.js +10 -10
  183. package/lib/progress/bar.js.map +1 -1
  184. package/lib/progress/circle.js +6 -6
  185. package/lib/progress/circle.js.map +1 -1
  186. package/lib/progress/index.d.ts +2 -2
  187. package/lib/radio/radio-group.d.ts +1 -1
  188. package/lib/radio/radio.d.ts +1 -1
  189. package/lib/radio/radio.js +5 -5
  190. package/lib/radio/radio.js.map +1 -1
  191. package/lib/rate/index.d.ts +1 -1
  192. package/lib/rate/rate-item.js +3 -3
  193. package/lib/rate/rate-item.js.map +1 -1
  194. package/lib/result/index.d.ts +1 -1
  195. package/lib/result/index.js +7 -7
  196. package/lib/result/index.js.map +1 -1
  197. package/lib/scroll-indicator/index.js +2 -2
  198. package/lib/scroll-indicator/index.js.map +1 -1
  199. package/lib/select/opt-group.js +2 -2
  200. package/lib/select/opt-group.js.map +1 -1
  201. package/lib/select/option.js +3 -3
  202. package/lib/select/option.js.map +1 -1
  203. package/lib/select/select.js +3 -3
  204. package/lib/select/select.js.map +1 -1
  205. package/lib/skeleton/index.d.ts +1 -1
  206. package/lib/skeleton/index.js +2 -2
  207. package/lib/skeleton/index.js.map +1 -1
  208. package/lib/slider/index.d.ts +1 -1
  209. package/lib/slider/index.js +23 -23
  210. package/lib/slider/index.js.map +1 -1
  211. package/lib/space/index.d.ts +1 -1
  212. package/lib/space/index.js +2 -2
  213. package/lib/space/index.js.map +1 -1
  214. package/lib/split/resizer.js +2 -2
  215. package/lib/split/resizer.js.map +1 -1
  216. package/lib/split/split-pane.d.ts +1 -1
  217. package/lib/split/split.js +2 -2
  218. package/lib/split/split.js.map +1 -1
  219. package/lib/split-button/index.js +1 -1
  220. package/lib/split-button/index.js.map +1 -1
  221. package/lib/steps/steps-item.d.ts +1 -1
  222. package/lib/steps/steps-item.js +8 -8
  223. package/lib/steps/steps-item.js.map +1 -1
  224. package/lib/steps/steps.d.ts +1 -1
  225. package/lib/steps/steps.js +1 -1
  226. package/lib/steps/steps.js.map +1 -1
  227. package/lib/sticky/style/_index.scss +4 -1
  228. package/lib/strength-indicator/index.d.ts +1 -1
  229. package/lib/strength-indicator/index.js +4 -4
  230. package/lib/strength-indicator/index.js.map +1 -1
  231. package/lib/style/_animation.scss +3 -0
  232. package/lib/style/_component.scss +0 -1
  233. package/lib/style/_font.scss +247 -246
  234. package/lib/style/_mixins.scss +1 -1
  235. package/lib/style/_normalise.scss +7 -0
  236. package/lib/style/_variables.scss +183 -183
  237. package/lib/style/index.css +7140 -5433
  238. package/lib/switch/index.d.ts +1 -1
  239. package/lib/switch/index.js +8 -8
  240. package/lib/switch/index.js.map +1 -1
  241. package/lib/switch/style/_mixin.scss +2 -2
  242. package/lib/tabs/style/index.css +64 -52
  243. package/lib/tabs/tab-panel.d.ts +1 -1
  244. package/lib/tabs/tab-panel.js +1 -1
  245. package/lib/tabs/tab-panel.js.map +1 -1
  246. package/lib/tabs/tabs.d.ts +1 -1
  247. package/lib/tabs/tabs.js +20 -20
  248. package/lib/tabs/tabs.js.map +1 -1
  249. package/lib/tag/checkable-tag.js +1 -1
  250. package/lib/tag/checkable-tag.js.map +1 -1
  251. package/lib/tag/tag.js +4 -4
  252. package/lib/tag/tag.js.map +1 -1
  253. package/lib/textarea/index.js +3 -3
  254. package/lib/textarea/index.js.map +1 -1
  255. package/lib/time-picker/time-panel.js +5 -5
  256. package/lib/time-picker/time-panel.js.map +1 -1
  257. package/lib/timeline/timeline-item.js +3 -3
  258. package/lib/timeline/timeline-item.js.map +1 -1
  259. package/lib/timeline/timeline.js +3 -3
  260. package/lib/timeline/timeline.js.map +1 -1
  261. package/lib/tooltip/index.js +1 -1
  262. package/lib/tooltip/index.js.map +1 -1
  263. package/lib/tooltip/style/_index.scss +5 -4
  264. package/lib/transfer/transfer-panel.d.ts +1 -1
  265. package/lib/transfer/transfer-panel.js +9 -9
  266. package/lib/transfer/transfer-panel.js.map +1 -1
  267. package/lib/transfer/transfer.d.ts +1 -1
  268. package/lib/transfer/transfer.js +8 -8
  269. package/lib/transfer/transfer.js.map +1 -1
  270. package/lib/transition/index.js +1 -1
  271. package/lib/transition/index.js.map +1 -1
  272. package/lib/tree/tree-instance.js +2 -3
  273. package/lib/tree/tree-instance.js.map +1 -1
  274. package/lib/tree/tree-node.js +7 -7
  275. package/lib/tree/tree-node.js.map +1 -1
  276. package/lib/tree/tree.d.ts +1 -1
  277. package/lib/tree/tree.js +3 -3
  278. package/lib/tree/tree.js.map +1 -1
  279. package/lib/typography/heading.js +1 -1
  280. package/lib/typography/heading.js.map +1 -1
  281. package/lib/typography/paragraph.d.ts +1 -1
  282. package/lib/typography/typography.d.ts +1 -1
  283. package/lib/upload/dragger-cover.js +3 -3
  284. package/lib/upload/dragger-cover.js.map +1 -1
  285. package/lib/upload/upload-list.js +6 -6
  286. package/lib/upload/upload-list.js.map +1 -1
  287. package/lib/upload/upload.js +4 -4
  288. package/lib/upload/upload.js.map +1 -1
  289. package/package.json +89 -70
  290. package/components/waterfall/index.tsx +0 -78
  291. package/components/waterfall/style/_index.scss +0 -10
  292. package/components/waterfall/style/index.tsx +0 -1
  293. package/lib/waterfall/index.d.ts +0 -9
  294. package/lib/waterfall/index.js +0 -54
  295. package/lib/waterfall/index.js.map +0 -1
  296. package/lib/waterfall/style/_index.scss +0 -10
  297. package/lib/waterfall/style/css.js +0 -2
  298. package/lib/waterfall/style/index.d.ts +0 -1
  299. package/lib/waterfall/style/index.js +0 -2
  300. package/lib/waterfall/style/index.js.map +0 -1
package/.stylelintrc ADDED
@@ -0,0 +1,19 @@
1
+ {
2
+ "extends": "stylelint-config-standard",
3
+ "rules": {
4
+ "at-rule-no-unknown": [
5
+ true,
6
+ {
7
+ "ignoreAtRules": [
8
+ "function",
9
+ "if",
10
+ "each",
11
+ "include",
12
+ "mixin",
13
+ "for",
14
+ "extend"
15
+ ]
16
+ }
17
+ ]
18
+ }
19
+ }
@@ -0,0 +1,30 @@
1
+ const isDev = process.env.NODE_ENV === 'development';
2
+ const plugins = [
3
+ '@babel/plugin-transform-runtime',
4
+ '@babel/plugin-syntax-dynamic-import',
5
+ '@babel/plugin-transform-async-to-generator',
6
+ 'transform-class-properties',
7
+ ];
8
+
9
+ module.exports = (api) => {
10
+ api.cache(true);
11
+ return {
12
+ presets: [
13
+ [
14
+ '@babel/preset-env',
15
+ {
16
+ corejs: 3.9,
17
+ useBuiltIns: 'usage',
18
+ },
19
+ ],
20
+ [
21
+ '@babel/preset-react',
22
+ {
23
+ runtime: 'automatic',
24
+ },
25
+ ],
26
+ '@babel/preset-typescript',
27
+ ],
28
+ plugins: isDev ? [...plugins, 'react-refresh/babel'] : [...plugins],
29
+ };
30
+ };
@@ -9,7 +9,7 @@ export const getScroll = (node: Target, isVertical = true): number => {
9
9
  return node === window ? (node as Window)[windowProp] : (node as HTMLElement)[elementProp];
10
10
  };
11
11
 
12
- export const getRect = (node: Target = window): ClientRect => {
12
+ export const getRect = (node: Target = window) => {
13
13
  return node !== window
14
14
  ? (node as HTMLElement).getBoundingClientRect()
15
15
  : {
@@ -8,58 +8,56 @@ describe('<Alert />', () => {
8
8
  expect(asFragment()).toMatchSnapshot();
9
9
  });
10
10
 
11
- it('should render correct', () => {
12
- const wrapper = render(<Alert>Alert</Alert>);
13
- const element = wrapper.getByRole('alert');
14
- expect(element).toBeInTheDocument();
15
- expect(element).toHaveClass('ty-alert');
11
+ it('should render correctly', () => {
12
+ const { container } = render(<Alert>Alert</Alert>);
13
+ expect(container.firstChild).toHaveClass('ty-alert');
16
14
  });
17
15
 
18
16
  it('should render correct types', () => {
19
- expect(
20
- render(
21
- <Alert type="success" data-testid="success">
22
- Alert
23
- </Alert>
24
- ).getByTestId('success')
25
- ).toHaveClass('ty-alert_success');
26
- expect(
27
- render(
28
- <Alert type="info" data-testid="info">
29
- Alert
30
- </Alert>
31
- ).getByTestId('info')
32
- ).toHaveClass('ty-alert_info');
33
- expect(
34
- render(
35
- <Alert type="warning" data-testid="warning">
36
- Alert
37
- </Alert>
38
- ).getByTestId('warning')
39
- ).toHaveClass('ty-alert_warning');
40
- expect(
41
- render(
42
- <Alert type="error" data-testid="error">
43
- Alert
44
- </Alert>
45
- ).getByTestId('error')
46
- ).toHaveClass('ty-alert_error');
17
+ expect(render(<Alert type="success">Alert</Alert>).container.firstChild).toHaveClass(
18
+ 'ty-alert_success'
19
+ );
20
+
21
+ expect(render(<Alert type="info">Alert</Alert>).container.firstChild).toHaveClass(
22
+ 'ty-alert_info'
23
+ );
24
+
25
+ expect(render(<Alert type="warning">Alert</Alert>).container.firstChild).toHaveClass(
26
+ 'ty-alert_warning'
27
+ );
28
+
29
+ expect(render(<Alert type="error">Alert</Alert>).container.firstChild).toHaveClass(
30
+ 'ty-alert_error'
31
+ );
32
+ });
33
+
34
+ it('should render title', () => {
35
+ const { container } = render(<Alert title="This is a title">Alert Component</Alert>);
36
+ expect(container.querySelector('.ty-alert__title')).toBeTruthy();
47
37
  });
48
38
 
49
39
  it('should render cross icon', () => {
50
- const wrapper = render(<Alert closable>This is closable.</Alert>);
51
- expect(wrapper.getByText('')).toBeInTheDocument();
40
+ const { container } = render(<Alert closable>This is closable.</Alert>);
41
+ expect(container.querySelector('.ty-alert__close-btn')).toBeTruthy();
42
+ });
43
+
44
+ it('should render custom close text', () => {
45
+ const { container } = render(<Alert closeText="close now">This is closable.</Alert>);
46
+ expect(container.querySelector('.ty-alert__close-btn')).toBeTruthy();
47
+ expect(container.querySelector('.ty-alert__close-btn')?.innerHTML).toBe('close now');
52
48
  });
53
49
 
54
50
  it('should trigger onClose event', () => {
55
- const mockCallback = jest.fn();
51
+ const fn = jest.fn();
56
52
  const wrapper = render(
57
- <Alert closable onClose={mockCallback}>
53
+ <Alert closable onClose={fn}>
58
54
  This is a alert
59
55
  </Alert>
60
56
  );
61
57
  const closeBtn = wrapper.getByText('✕');
58
+
62
59
  fireEvent.click(closeBtn);
63
- expect(mockCallback).toHaveBeenCalled();
60
+
61
+ expect(fn).toHaveBeenCalledTimes(1);
64
62
  });
65
63
  });
@@ -9,15 +9,18 @@ describe('<AspectRatio />', () => {
9
9
  });
10
10
 
11
11
  it('should render children', () => {
12
- const wrapper = render(<AspectRatio>children</AspectRatio>);
13
- expect(wrapper.getByText('children')).toBeInTheDocument();
12
+ const { container } = render(<AspectRatio>children</AspectRatio>);
13
+ expect(container.firstChild).toHaveStyle({ width: '100%' });
14
+ expect(container).toContainHTML('children');
14
15
  });
15
16
 
16
17
  it('should render correct ratio container', () => {
17
- // const wrapper = render(<AspectRatio ratio={4 / 3} width={40} />);
18
+ const { container } = render(<AspectRatio ratio={4 / 3} />);
19
+ expect(container.querySelector('.ty-aspect-ratio__padding')).toHaveStyle({ paddingTop: '75%' });
18
20
  });
19
21
 
20
22
  it('should render correct width', () => {
21
- // const wrapper = render(<AspectRatio width={20} />);
23
+ const { container } = render(<AspectRatio width={20} />);
24
+ expect(container.firstChild).toHaveStyle({ width: '20px' });
22
25
  });
23
26
  });
@@ -13,12 +13,53 @@ describe('<ButtonGroup />', () => {
13
13
  expect(asFragment()).toMatchSnapshot();
14
14
  });
15
15
 
16
- // it('should render child button correctly', () => {
17
- // const wrapper = mount(
18
- // <ButtonGroup btnType="primary">
19
- // <Button>Default</Button>
20
- // </ButtonGroup>
21
- // );
22
- // expect(wrapper.childAt(0).find('.ty-btn_primary').length).toBe(1);
23
- // });
16
+ it('should render two buttons', () => {
17
+ const { container } = render(
18
+ <ButtonGroup>
19
+ <Button>Default</Button>
20
+ <Button>Default</Button>
21
+ </ButtonGroup>
22
+ );
23
+ expect(container.querySelectorAll('.ty-btn_default').length).toBe(2);
24
+ });
25
+
26
+ it('should render correct type of buttons', () => {
27
+ const { container } = render(
28
+ <ButtonGroup btnType="primary">
29
+ <Button>Default</Button>
30
+ <Button>Default</Button>
31
+ </ButtonGroup>
32
+ );
33
+ expect(container.querySelectorAll('.ty-btn_primary').length).toBe(2);
34
+ });
35
+
36
+ it('should render correct size of buttons', () => {
37
+ const { container } = render(
38
+ <ButtonGroup size="lg">
39
+ <Button>Default</Button>
40
+ <Button>Default</Button>
41
+ </ButtonGroup>
42
+ );
43
+ expect(container.querySelectorAll('.ty-btn_lg').length).toBe(2);
44
+ });
45
+
46
+ it('should render correct disabled of buttons', () => {
47
+ const { container } = render(
48
+ <ButtonGroup disabled>
49
+ <Button>Default</Button>
50
+ <Button>Default</Button>
51
+ </ButtonGroup>
52
+ );
53
+ expect(container.querySelectorAll('.ty-btn_disabled').length).toBe(2);
54
+ });
55
+
56
+ it('should only disable one button', () => {
57
+ const { container } = render(
58
+ <ButtonGroup>
59
+ <Button disabled>Default</Button>
60
+ <Button>Default</Button>
61
+ </ButtonGroup>
62
+ );
63
+ expect(container.querySelectorAll('.ty-btn_disabled').length).toBe(1);
64
+ });
24
65
  });
@@ -46,10 +46,10 @@ const Checkbox = React.forwardRef<HTMLLabelElement, CheckboxProps>(
46
46
  };
47
47
 
48
48
  useEffect(() => {
49
- if ('value' in checkboxGroupContext && 'value' in props) {
50
- setChecked((checkboxGroupContext.value as string[]).includes(value as string));
49
+ if ('value' in checkboxGroupContext && typeof checkboxGroupContext.value !== 'undefined' && 'value' in props ) {
50
+ setChecked((checkboxGroupContext.value).includes(value as string));
51
51
  }
52
- 'checked' in props && setChecked(props.checked as boolean);
52
+ 'checked' in props && typeof props.checked !== 'undefined' && setChecked(props.checked);
53
53
  }, [props, checkboxGroupContext, value]);
54
54
 
55
55
  return (
@@ -54,11 +54,11 @@
54
54
  @mixin grid($size: '') {
55
55
  @for $i from 1 through 24 {
56
56
  &#{$size}-#{$i} {
57
- width: 100% / (24 / $i);
57
+ width: calc(100% / (24 / $i));
58
58
  }
59
59
 
60
60
  &#{$size}-offset-#{$i} {
61
- margin-left: 100% / (24 / $i);
61
+ margin-left: calc(100% / (24 / $i));
62
62
  }
63
63
 
64
64
  &#{$size}-order-#{$i} {
@@ -1,3 +1,5 @@
1
+ import 'intersection-observer';
2
+
1
3
  export { default as Alert } from './alert';
2
4
  export { default as Anchor } from './anchor';
3
5
  export { default as AspectRatio } from './aspect-ratio';
@@ -8,7 +10,7 @@ export { default as Badge } from './badge';
8
10
  export { default as Breadcrumb } from './breadcrumb';
9
11
  export { default as Button } from './button';
10
12
  export { default as Card } from './card';
11
- export { default as Carousel } from './carousel';
13
+ // export { default as Carousel } from './carousel';
12
14
  export { default as Checkbox } from './checkbox';
13
15
  export { default as ConfigProvider } from './config-provider';
14
16
  export { default as CopyToClipboard } from './copy-to-clipboard';
@@ -59,7 +61,7 @@ export { default as Steps } from './steps';
59
61
  export { default as Sticky } from './sticky';
60
62
  export { default as StrengthIndicator } from './strength-indicator';
61
63
  export { default as Switch } from './switch';
62
- export { default as Tabs } from './tabs';
64
+ // export { default as Tabs } from './tabs';
63
65
  export { default as Tag } from './tag';
64
66
  export { default as Textarea } from './textarea';
65
67
  export { default as Timeline } from './timeline';
@@ -70,5 +72,5 @@ export { default as Transition } from './transition';
70
72
  export { default as Tree } from './tree';
71
73
  export { default as Typography } from './typography';
72
74
  export { default as Upload } from './upload';
73
- // export { default as Waterfall } from './waterfall';
75
+
74
76
  export { withLocale } from './intl-provider/with-locale';
@@ -92,7 +92,7 @@ const Input = React.forwardRef<HTMLInputElement, InputProps>(
92
92
  }, [inputPadding]);
93
93
 
94
94
  useEffect(() => {
95
- 'value' in props && setValue(props.value as string);
95
+ 'value' in props && typeof props.value !== 'undefined' && setValue(props.value);
96
96
  }, [props]);
97
97
 
98
98
  return (
@@ -8,7 +8,7 @@ import { LayoutProps } from './types';
8
8
  /**
9
9
  * Layout component
10
10
  */
11
- const Layout = React.forwardRef<HTMLDivElement, LayoutProps>(
11
+ const Layout = React.forwardRef<HTMLElement, LayoutProps>(
12
12
  (props: LayoutProps, ref): JSX.Element => {
13
13
  const { className, children, prefixCls: customisedCls, ...otherProps } = props;
14
14
  const [hasSidebar, setHasSidebar] = useState(false);
@@ -0,0 +1,17 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`<Link /> should match the snapshot 1`] = `
4
+ <DocumentFragment>
5
+ <a
6
+ aria-disabled="false"
7
+ class="ty-link"
8
+ href="#"
9
+ role="link"
10
+ target="_blank"
11
+ >
12
+ <span>
13
+ Link
14
+ </span>
15
+ </a>
16
+ </DocumentFragment>
17
+ `;
@@ -0,0 +1,27 @@
1
+ import React from 'react';
2
+ import { render } from '@testing-library/react';
3
+ import Link from '../index';
4
+
5
+ describe('<Link />', () => {
6
+ it('should match the snapshot', () => {
7
+ const { asFragment } = render(<Link href="#">Link</Link>);
8
+ expect(asFragment()).toMatchSnapshot();
9
+ });
10
+
11
+ describe('external', () => {
12
+ it('should set _blank to target attribute by default', () => {
13
+ const { container } = render(<Link>Link</Link>);
14
+ expect(container.firstChild).toHaveAttribute('target', '_blank');
15
+ });
16
+
17
+ it('should set _self to target attribute by default', () => {
18
+ const { container } = render(<Link external={false}>Link</Link>);
19
+ expect(container.firstChild).toHaveAttribute('target', '_self');
20
+ });
21
+ });
22
+
23
+ it('should be disabled', () => {
24
+ const { container } = render(<Link disabled>Link</Link>);
25
+ expect(container.firstChild).toHaveClass('ty-link_disabled');
26
+ });
27
+ });
@@ -43,6 +43,9 @@ const Popup = (props: PopupProps): JSX.Element => {
43
43
  const delayDisplayPopupTimer = useRef<number | undefined>(undefined);
44
44
  const delayHidePopupTimer = useRef<number | undefined>(undefined);
45
45
  const popperRef = useRef<Instance | undefined>(undefined);
46
+ const elementProps = {
47
+ ref: (ref: HTMLElement | null) => (targetRef.current = ref),
48
+ };
46
49
 
47
50
  const displayPopup = useCallback(() => {
48
51
  setPopupVisible(true);
@@ -255,10 +258,6 @@ const Popup = (props: PopupProps): JSX.Element => {
255
258
  </Transition>
256
259
  );
257
260
 
258
- const elementProps = {
259
- ref: (ref: HTMLElement | null) => (targetRef.current = ref),
260
- };
261
-
262
261
  return (
263
262
  <>
264
263
  {React.cloneElement(children, elementProps)}
@@ -1,3 +1,4 @@
1
+ @use 'sass:math';
1
2
  @import '../../style/variables';
2
3
 
3
4
  .#{$prefix}-popup {
@@ -43,7 +44,7 @@
43
44
 
44
45
  &[data-popper-placement^='top'] {
45
46
  & > .#{$prefix}-popup__arrow {
46
- bottom: -$popover-arrow-size / 2;
47
+ bottom: math.div(-$popover-arrow-size, 2);
47
48
 
48
49
  &:before {
49
50
  box-shadow: 3px 3px 7px rgba(0, 0, 0, .07);
@@ -53,7 +54,7 @@
53
54
 
54
55
  &[data-popper-placement^='bottom'] {
55
56
  > .#{$prefix}-popup__arrow {
56
- top: -$popover-arrow-size / 2;
57
+ top: math.div(-$popover-arrow-size, 2);
57
58
 
58
59
  &:before {
59
60
  box-shadow: -2px -2px 5px rgba(0, 0, 0, .06);
@@ -63,7 +64,7 @@
63
64
 
64
65
  &[data-popper-placement^='left'] {
65
66
  > .#{$prefix}-popup__arrow {
66
- right: -$popover-arrow-size / 2;
67
+ right: math.div(-$popover-arrow-size, 2);
67
68
 
68
69
  &:before {
69
70
  box-shadow: 3px -3px 7px rgba(0, 0, 0, .07);
@@ -73,7 +74,7 @@
73
74
 
74
75
  &[data-popper-placement^='right'] {
75
76
  > .#{$prefix}-popup__arrow {
76
- left: -$popover-arrow-size / 2;
77
+ left: math.div(-$popover-arrow-size, 2);
77
78
 
78
79
  &:before {
79
80
  box-shadow: -3px 3px 7px rgba(0, 0, 0, .07);
@@ -46,7 +46,7 @@ const Radio = React.forwardRef<HTMLLabelElement, RadioProps>(
46
46
 
47
47
  useEffect(() => {
48
48
  'value' in radioGroupContext && setChecked(value === radioGroupContext.value);
49
- 'checked' in props && setChecked(props.checked as boolean);
49
+ 'checked' in props && typeof props.checked !== 'undefined' && setChecked(props.checked);
50
50
  }, [props, radioGroupContext, value]);
51
51
 
52
52
  return (
@@ -1,5 +1,8 @@
1
1
  @import '../../style/variables';
2
2
 
3
3
  .#{$prefix}-sticky {
4
- transform: translateZ(0);
4
+
5
+ &_fixed {
6
+ position: fixed;
7
+ }
5
8
  }
@@ -2,6 +2,7 @@
2
2
  0% {
3
3
  transform: rotate(0deg);
4
4
  }
5
+
5
6
  100% {
6
7
  transform: rotate(360deg);
7
8
  }
@@ -11,6 +12,7 @@
11
12
  from {
12
13
  transform: rotate(0);
13
14
  }
15
+
14
16
  to {
15
17
  transform: rotate(-360deg);
16
18
  }
@@ -21,6 +23,7 @@
21
23
  transform: scale(0.8);
22
24
  opacity: 0.5;
23
25
  }
26
+
24
27
  100% {
25
28
  transform: scale(2.8);
26
29
  opacity: 0;
@@ -67,4 +67,3 @@
67
67
  @import "../tree/style/index";
68
68
  @import "../typography/style/index";
69
69
  @import "../upload/style/index";
70
- @import "../waterfall/style/index";