@imposium-hub/components 2.14.8 → 2.14.9

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 (229) hide show
  1. package/dist/cjs/components/advanced-number-field/AdvancedNumberField.d.ts +1 -1
  2. package/dist/cjs/components/anchor-field/AnchorField.d.ts +1 -1
  3. package/dist/cjs/components/assets/AssetsTableDateCell.d.ts +6 -1
  4. package/dist/cjs/components/assets/AssetsTableGlobalCell.d.ts +5 -1
  5. package/dist/cjs/components/assets/AssetsTablePreviewCell.d.ts +17 -1
  6. package/dist/cjs/components/assets/AssetsTableStatusCell.d.ts +5 -1
  7. package/dist/cjs/components/assets/AssetsTableTagsCell.d.ts +6 -1
  8. package/dist/cjs/components/assets/AssetsTableTypeCell.d.ts +5 -1
  9. package/dist/cjs/components/assets/AssetsTypeIcon.d.ts +5 -1
  10. package/dist/cjs/components/assets/FontAssetPreview.d.ts +1 -1
  11. package/dist/cjs/components/assets/StoryTableTotalRendersCell.d.ts +2 -1
  12. package/dist/cjs/components/button/Button.d.ts +1 -1
  13. package/dist/cjs/components/button/Button.stories.d.ts +6 -5
  14. package/dist/cjs/components/button-group-field/ButtonGroupField.d.ts +1 -1
  15. package/dist/cjs/components/button-group-field/ButtonGroupField.stories.d.ts +2 -1
  16. package/dist/cjs/components/button-menu/ButtonMenu.d.ts +2 -2
  17. package/dist/cjs/components/button-menu/ButtonMenu.stories.d.ts +2 -1
  18. package/dist/cjs/components/button-menu/ButtonMenuItem.d.ts +1 -1
  19. package/dist/cjs/components/card/Card.d.ts +4 -4
  20. package/dist/cjs/components/card/Card.stories.d.ts +2 -1
  21. package/dist/cjs/components/checkbox-field/CheckboxField.d.ts +1 -1
  22. package/dist/cjs/components/checkbox-field/CheckboxField.stories.d.ts +2 -1
  23. package/dist/cjs/components/color-field/ColorField.d.ts +1 -1
  24. package/dist/cjs/components/color-field/ColorFiled.stories.d.ts +2 -1
  25. package/dist/cjs/components/compositions/TextLayer.d.ts +1 -1
  26. package/dist/cjs/components/config-variable-button/ConfigVariableButton.d.ts +42 -1
  27. package/dist/cjs/components/confirm-modal/ConfirmModal.d.ts +2 -1
  28. package/dist/cjs/components/controlled-list/ControlledList.d.ts +2 -2
  29. package/dist/cjs/components/controlled-list/ControlledList.stories.d.ts +2 -1
  30. package/dist/cjs/components/copy-prop-id-button/CopyPropIdButton.d.ts +1 -1
  31. package/dist/cjs/components/determinate-loader/DeterminateLoader.stories.d.ts +4 -3
  32. package/dist/cjs/components/dropdown/Dropdown.d.ts +1 -1
  33. package/dist/cjs/components/dropdown/Dropdown.stories.d.ts +1 -1
  34. package/dist/cjs/components/field-wrapper/FieldWrapper.d.ts +2 -2
  35. package/dist/cjs/components/field-wrapper/FieldWrapper.stories.d.ts +2 -1
  36. package/dist/cjs/components/font-field/FontField.d.ts +2 -1
  37. package/dist/cjs/components/font-picker/FontPicker.d.ts +1 -1
  38. package/dist/cjs/components/h-rule/HRule.d.ts +2 -1
  39. package/dist/cjs/components/h-rule/HRule.stories.d.ts +3 -2
  40. package/dist/cjs/components/header/ProjectDropdown.d.ts +2 -1
  41. package/dist/cjs/components/list-field/ListField.d.ts +1 -1
  42. package/dist/cjs/components/list-field/ListField.stories.d.ts +2 -1
  43. package/dist/cjs/components/log-viewer/LogViewer.d.ts +1 -1
  44. package/dist/cjs/components/media-variable-field/MediaVariableField.d.ts +1 -1
  45. package/dist/cjs/components/modal/Modal.d.ts +1 -1
  46. package/dist/cjs/components/modal/Modal.stories.d.ts +2 -1
  47. package/dist/cjs/components/number-field/NumberField.d.ts +3 -3
  48. package/dist/cjs/components/number-field/NumberField.js +7 -4
  49. package/dist/cjs/components/number-field/NumberField.js.map +1 -1
  50. package/dist/cjs/components/number-field/NumberField.stories.d.ts +2 -1
  51. package/dist/cjs/components/players/AudioPlayer.d.ts +1 -1
  52. package/dist/cjs/components/players/AudioPreview.d.ts +1 -1
  53. package/dist/cjs/components/players/ImagePlayer.d.ts +1 -1
  54. package/dist/cjs/components/players/ImagePreview.d.ts +1 -1
  55. package/dist/cjs/components/players/ImageSequencePlayer.d.ts +1 -1
  56. package/dist/cjs/components/players/TemplatePlayer.d.ts +1 -1
  57. package/dist/cjs/components/players/VideoPlayer.d.ts +1 -1
  58. package/dist/cjs/components/players/VideoPreview.d.ts +1 -1
  59. package/dist/cjs/components/publish-wizard/PublishWizard.d.ts +3 -3
  60. package/dist/cjs/components/publish-wizard/publish/APIIntegration.d.ts +1 -1
  61. package/dist/cjs/components/publish-wizard/publish/HubSpotFlow.d.ts +1 -1
  62. package/dist/cjs/components/publish-wizard/publish/WebpageHosted.d.ts +2 -2
  63. package/dist/cjs/components/section/Section.d.ts +2 -1
  64. package/dist/cjs/components/section/Section.stories.d.ts +3 -2
  65. package/dist/cjs/components/select-field/SelectField.d.ts +1 -1
  66. package/dist/cjs/components/select-field/SelectField.stories.d.ts +2 -1
  67. package/dist/cjs/components/shortcut-menu/ShortcutMenu.stories.d.ts +2 -1
  68. package/dist/cjs/components/slider-field/SliderField.d.ts +1 -1
  69. package/dist/cjs/components/slider-field/SliderField.stories.d.ts +2 -1
  70. package/dist/cjs/components/smpte-field/SMPTEField.d.ts +1 -1
  71. package/dist/cjs/components/tabs/Tabs.stories.d.ts +3 -2
  72. package/dist/cjs/components/tag/Tag.d.ts +9 -1
  73. package/dist/cjs/components/text-area-autocomplete/TextAreaAutocomplete.d.ts +2 -1
  74. package/dist/cjs/components/text-area-field/TextAreaField.d.ts +1 -1
  75. package/dist/cjs/components/text-area-field/TextAreaField.stories.d.ts +2 -1
  76. package/dist/cjs/components/text-field/TextField.d.ts +1 -1
  77. package/dist/cjs/components/text-field/TextField.stories.d.ts +2 -1
  78. package/dist/cjs/constants/icons.d.ts +80 -79
  79. package/dist/esm/components/advanced-number-field/AdvancedNumberField.d.ts +1 -1
  80. package/dist/esm/components/anchor-field/AnchorField.d.ts +1 -1
  81. package/dist/esm/components/assets/AssetsTableDateCell.d.ts +6 -1
  82. package/dist/esm/components/assets/AssetsTableGlobalCell.d.ts +5 -1
  83. package/dist/esm/components/assets/AssetsTablePreviewCell.d.ts +17 -1
  84. package/dist/esm/components/assets/AssetsTableStatusCell.d.ts +5 -1
  85. package/dist/esm/components/assets/AssetsTableTagsCell.d.ts +6 -1
  86. package/dist/esm/components/assets/AssetsTableTypeCell.d.ts +5 -1
  87. package/dist/esm/components/assets/AssetsTypeIcon.d.ts +5 -1
  88. package/dist/esm/components/assets/FontAssetPreview.d.ts +1 -1
  89. package/dist/esm/components/assets/StoryTableTotalRendersCell.d.ts +2 -1
  90. package/dist/esm/components/button/Button.d.ts +1 -1
  91. package/dist/esm/components/button/Button.stories.d.ts +6 -5
  92. package/dist/esm/components/button-group-field/ButtonGroupField.d.ts +1 -1
  93. package/dist/esm/components/button-group-field/ButtonGroupField.stories.d.ts +2 -1
  94. package/dist/esm/components/button-menu/ButtonMenu.d.ts +2 -2
  95. package/dist/esm/components/button-menu/ButtonMenu.stories.d.ts +2 -1
  96. package/dist/esm/components/button-menu/ButtonMenuItem.d.ts +1 -1
  97. package/dist/esm/components/card/Card.d.ts +4 -4
  98. package/dist/esm/components/card/Card.stories.d.ts +2 -1
  99. package/dist/esm/components/checkbox-field/CheckboxField.d.ts +1 -1
  100. package/dist/esm/components/checkbox-field/CheckboxField.stories.d.ts +2 -1
  101. package/dist/esm/components/color-field/ColorField.d.ts +1 -1
  102. package/dist/esm/components/color-field/ColorFiled.stories.d.ts +2 -1
  103. package/dist/esm/components/compositions/TextLayer.d.ts +1 -1
  104. package/dist/esm/components/config-variable-button/ConfigVariableButton.d.ts +42 -1
  105. package/dist/esm/components/confirm-modal/ConfirmModal.d.ts +2 -1
  106. package/dist/esm/components/controlled-list/ControlledList.d.ts +2 -2
  107. package/dist/esm/components/controlled-list/ControlledList.stories.d.ts +2 -1
  108. package/dist/esm/components/copy-prop-id-button/CopyPropIdButton.d.ts +1 -1
  109. package/dist/esm/components/determinate-loader/DeterminateLoader.stories.d.ts +4 -3
  110. package/dist/esm/components/dropdown/Dropdown.d.ts +1 -1
  111. package/dist/esm/components/dropdown/Dropdown.stories.d.ts +1 -1
  112. package/dist/esm/components/field-wrapper/FieldWrapper.d.ts +2 -2
  113. package/dist/esm/components/field-wrapper/FieldWrapper.stories.d.ts +2 -1
  114. package/dist/esm/components/font-field/FontField.d.ts +2 -1
  115. package/dist/esm/components/font-picker/FontPicker.d.ts +1 -1
  116. package/dist/esm/components/h-rule/HRule.d.ts +2 -1
  117. package/dist/esm/components/h-rule/HRule.stories.d.ts +3 -2
  118. package/dist/esm/components/header/ProjectDropdown.d.ts +2 -1
  119. package/dist/esm/components/list-field/ListField.d.ts +1 -1
  120. package/dist/esm/components/list-field/ListField.stories.d.ts +2 -1
  121. package/dist/esm/components/log-viewer/LogViewer.d.ts +1 -1
  122. package/dist/esm/components/media-variable-field/MediaVariableField.d.ts +1 -1
  123. package/dist/esm/components/modal/Modal.d.ts +1 -1
  124. package/dist/esm/components/modal/Modal.stories.d.ts +2 -1
  125. package/dist/esm/components/number-field/NumberField.d.ts +3 -3
  126. package/dist/esm/components/number-field/NumberField.js +5 -4
  127. package/dist/esm/components/number-field/NumberField.js.map +1 -1
  128. package/dist/esm/components/number-field/NumberField.stories.d.ts +2 -1
  129. package/dist/esm/components/players/AudioPlayer.d.ts +1 -1
  130. package/dist/esm/components/players/AudioPreview.d.ts +1 -1
  131. package/dist/esm/components/players/ImagePlayer.d.ts +1 -1
  132. package/dist/esm/components/players/ImagePreview.d.ts +1 -1
  133. package/dist/esm/components/players/ImageSequencePlayer.d.ts +1 -1
  134. package/dist/esm/components/players/TemplatePlayer.d.ts +1 -1
  135. package/dist/esm/components/players/VideoPlayer.d.ts +1 -1
  136. package/dist/esm/components/players/VideoPreview.d.ts +1 -1
  137. package/dist/esm/components/publish-wizard/PublishWizard.d.ts +3 -3
  138. package/dist/esm/components/publish-wizard/publish/APIIntegration.d.ts +1 -1
  139. package/dist/esm/components/publish-wizard/publish/HubSpotFlow.d.ts +1 -1
  140. package/dist/esm/components/publish-wizard/publish/WebpageHosted.d.ts +2 -2
  141. package/dist/esm/components/section/Section.d.ts +2 -1
  142. package/dist/esm/components/section/Section.stories.d.ts +3 -2
  143. package/dist/esm/components/select-field/SelectField.d.ts +1 -1
  144. package/dist/esm/components/select-field/SelectField.stories.d.ts +2 -1
  145. package/dist/esm/components/shortcut-menu/ShortcutMenu.stories.d.ts +2 -1
  146. package/dist/esm/components/slider-field/SliderField.d.ts +1 -1
  147. package/dist/esm/components/slider-field/SliderField.stories.d.ts +2 -1
  148. package/dist/esm/components/smpte-field/SMPTEField.d.ts +1 -1
  149. package/dist/esm/components/tabs/Tabs.stories.d.ts +3 -2
  150. package/dist/esm/components/tag/Tag.d.ts +9 -1
  151. package/dist/esm/components/text-area-autocomplete/TextAreaAutocomplete.d.ts +2 -1
  152. package/dist/esm/components/text-area-field/TextAreaField.d.ts +1 -1
  153. package/dist/esm/components/text-area-field/TextAreaField.stories.d.ts +2 -1
  154. package/dist/esm/components/text-field/TextField.d.ts +1 -1
  155. package/dist/esm/components/text-field/TextField.stories.d.ts +2 -1
  156. package/dist/esm/constants/icons.d.ts +80 -79
  157. package/package.json +1 -1
  158. package/dist/cjs/components/advanced-number-field/AdvancedNumberField.test.d.ts +0 -1
  159. package/dist/cjs/components/advanced-number-field/AdvancedNumberField.test.js +0 -377
  160. package/dist/cjs/components/advanced-number-field/AdvancedNumberField.test.js.map +0 -1
  161. package/dist/cjs/components/anchor-field/AnchorField.test.d.ts +0 -1
  162. package/dist/cjs/components/anchor-field/AnchorField.test.js +0 -87
  163. package/dist/cjs/components/anchor-field/AnchorField.test.js.map +0 -1
  164. package/dist/cjs/components/asset-details/AssetDetails.test.d.ts +0 -1
  165. package/dist/cjs/components/asset-details/AssetDetails.test.js +0 -439
  166. package/dist/cjs/components/asset-details/AssetDetails.test.js.map +0 -1
  167. package/dist/cjs/components/assets/AssetField.test.d.ts +0 -1
  168. package/dist/cjs/components/assets/AssetField.test.js +0 -464
  169. package/dist/cjs/components/assets/AssetField.test.js.map +0 -1
  170. package/dist/cjs/components/assets/AssetsTableAssetIdCell.test.d.ts +0 -1
  171. package/dist/cjs/components/assets/AssetsTableAssetIdCell.test.js +0 -190
  172. package/dist/cjs/components/assets/AssetsTableAssetIdCell.test.js.map +0 -1
  173. package/dist/cjs/components/assets/AssetsTableAssetIdFilter.test.d.ts +0 -1
  174. package/dist/cjs/components/assets/AssetsTableAssetIdFilter.test.js +0 -82
  175. package/dist/cjs/components/assets/AssetsTableAssetIdFilter.test.js.map +0 -1
  176. package/dist/cjs/components/assets/AssetsTableComplexTagCell.test.d.ts +0 -1
  177. package/dist/cjs/components/assets/AssetsTableComplexTagCell.test.js +0 -125
  178. package/dist/cjs/components/assets/AssetsTableComplexTagCell.test.js.map +0 -1
  179. package/dist/cjs/components/assets/AssetsTableDateCell.test.d.ts +0 -1
  180. package/dist/cjs/components/assets/AssetsTableDateCell.test.js +0 -116
  181. package/dist/cjs/components/assets/AssetsTableDateCell.test.js.map +0 -1
  182. package/dist/cjs/components/number-field/NumberField.test.d.ts +0 -1
  183. package/dist/cjs/components/number-field/NumberField.test.js +0 -241
  184. package/dist/cjs/components/number-field/NumberField.test.js.map +0 -1
  185. package/dist/cjs/components/text-field/TextField.test.d.ts +0 -1
  186. package/dist/cjs/components/text-field/TextField.test.js +0 -540
  187. package/dist/cjs/components/text-field/TextField.test.js.map +0 -1
  188. package/dist/cjs/test/setup.d.ts +0 -1
  189. package/dist/cjs/test/setup.js +0 -97
  190. package/dist/cjs/test/setup.js.map +0 -1
  191. package/dist/cjs/test/utils.d.ts +0 -26
  192. package/dist/cjs/test/utils.js +0 -44
  193. package/dist/cjs/test/utils.js.map +0 -1
  194. package/dist/esm/components/advanced-number-field/AdvancedNumberField.test.d.ts +0 -1
  195. package/dist/esm/components/advanced-number-field/AdvancedNumberField.test.js +0 -361
  196. package/dist/esm/components/advanced-number-field/AdvancedNumberField.test.js.map +0 -1
  197. package/dist/esm/components/anchor-field/AnchorField.test.d.ts +0 -1
  198. package/dist/esm/components/anchor-field/AnchorField.test.js +0 -81
  199. package/dist/esm/components/anchor-field/AnchorField.test.js.map +0 -1
  200. package/dist/esm/components/asset-details/AssetDetails.test.d.ts +0 -1
  201. package/dist/esm/components/asset-details/AssetDetails.test.js +0 -367
  202. package/dist/esm/components/asset-details/AssetDetails.test.js.map +0 -1
  203. package/dist/esm/components/assets/AssetField.test.d.ts +0 -1
  204. package/dist/esm/components/assets/AssetField.test.js +0 -311
  205. package/dist/esm/components/assets/AssetField.test.js.map +0 -1
  206. package/dist/esm/components/assets/AssetsTableAssetIdCell.test.d.ts +0 -1
  207. package/dist/esm/components/assets/AssetsTableAssetIdCell.test.js +0 -105
  208. package/dist/esm/components/assets/AssetsTableAssetIdCell.test.js.map +0 -1
  209. package/dist/esm/components/assets/AssetsTableAssetIdFilter.test.d.ts +0 -1
  210. package/dist/esm/components/assets/AssetsTableAssetIdFilter.test.js +0 -63
  211. package/dist/esm/components/assets/AssetsTableAssetIdFilter.test.js.map +0 -1
  212. package/dist/esm/components/assets/AssetsTableComplexTagCell.test.d.ts +0 -1
  213. package/dist/esm/components/assets/AssetsTableComplexTagCell.test.js +0 -100
  214. package/dist/esm/components/assets/AssetsTableComplexTagCell.test.js.map +0 -1
  215. package/dist/esm/components/assets/AssetsTableDateCell.test.d.ts +0 -1
  216. package/dist/esm/components/assets/AssetsTableDateCell.test.js +0 -60
  217. package/dist/esm/components/assets/AssetsTableDateCell.test.js.map +0 -1
  218. package/dist/esm/components/number-field/NumberField.test.d.ts +0 -1
  219. package/dist/esm/components/number-field/NumberField.test.js +0 -192
  220. package/dist/esm/components/number-field/NumberField.test.js.map +0 -1
  221. package/dist/esm/components/text-field/TextField.test.d.ts +0 -1
  222. package/dist/esm/components/text-field/TextField.test.js +0 -469
  223. package/dist/esm/components/text-field/TextField.test.js.map +0 -1
  224. package/dist/esm/test/setup.d.ts +0 -1
  225. package/dist/esm/test/setup.js +0 -70
  226. package/dist/esm/test/setup.js.map +0 -1
  227. package/dist/esm/test/utils.d.ts +0 -26
  228. package/dist/esm/test/utils.js +0 -27
  229. package/dist/esm/test/utils.js.map +0 -1
@@ -1,469 +0,0 @@
1
- import React from 'react';
2
- import { describe, it, expect, vi, beforeEach } from 'vitest';
3
- import { render, fireEvent, screen } from '../../test/utils';
4
- import TextField from './TextField';
5
- describe('TextField', () => {
6
- const defaultProps = {
7
- onChange: vi.fn(),
8
- label: 'Test Text Field'
9
- };
10
- beforeEach(() => {
11
- vi.clearAllMocks();
12
- });
13
- describe('Rendering', () => {
14
- it('renders without crashing', () => {
15
- render(React.createElement(TextField, { ...defaultProps }));
16
- const input = screen.getByRole('textbox');
17
- expect(input).toBeDefined();
18
- });
19
- it('displays the correct value', () => {
20
- render(React.createElement(TextField, { ...defaultProps, value: 'test value' }));
21
- const input = screen.getByRole('textbox');
22
- expect(input.value).toBe('test value');
23
- });
24
- it('displays placeholder when provided', () => {
25
- render(React.createElement(TextField, { ...defaultProps, placeholder: 'Enter text' }));
26
- const input = screen.getByRole('textbox');
27
- expect(input.placeholder).toBe('Enter text');
28
- });
29
- it('sets disabled state correctly', () => {
30
- render(React.createElement(TextField, { ...defaultProps, disabled: true }));
31
- const input = screen.getByRole('textbox');
32
- expect(input.disabled).toBe(true);
33
- });
34
- it('sets readOnly attribute when readOnly prop is true', () => {
35
- render(React.createElement(TextField, { ...defaultProps, readOnly: true }));
36
- const input = screen.getByRole('textbox');
37
- expect(input.readOnly).toBe(true);
38
- });
39
- it('applies maxLength attribute when provided', () => {
40
- render(React.createElement(TextField, { ...defaultProps, maxLength: 50 }));
41
- const input = screen.getByRole('textbox');
42
- expect(input.maxLength).toBe(50);
43
- });
44
- it('focuses input on mount when focusOnMount is true', () => {
45
- render(React.createElement(TextField, { ...defaultProps, focusOnMount: true }));
46
- const input = screen.getByRole('textbox');
47
- expect(document.activeElement).toBe(input);
48
- });
49
- });
50
- describe('Basic Interactions', () => {
51
- it('calls onChange when value changes in uncontrolled mode', () => {
52
- const onChange = vi.fn();
53
- render(React.createElement(TextField, { ...defaultProps, onChange: onChange }));
54
- const input = screen.getByRole('textbox');
55
- fireEvent.change(input, { target: { value: 'new text' } });
56
- expect(onChange).toHaveBeenCalledWith('new text');
57
- });
58
- it('calls onFocus when input receives focus', () => {
59
- const onFocus = vi.fn();
60
- render(React.createElement(TextField, { ...defaultProps, onFocus: onFocus }));
61
- const input = screen.getByRole('textbox');
62
- fireEvent.focus(input);
63
- expect(onFocus).toHaveBeenCalled();
64
- });
65
- it('calls onBlur when input loses focus', () => {
66
- const onBlur = vi.fn();
67
- render(React.createElement(TextField, { ...defaultProps, onBlur: onBlur }));
68
- const input = screen.getByRole('textbox');
69
- fireEvent.blur(input);
70
- expect(onBlur).toHaveBeenCalled();
71
- });
72
- });
73
- describe('Pattern Validation', () => {
74
- it('prevents input that does not match pattern', () => {
75
- const onChange = vi.fn();
76
- const numberPattern = /^\d*$/;
77
- render(React.createElement(TextField, { ...defaultProps, onChange: onChange, pattern: numberPattern }));
78
- const input = screen.getByRole('textbox');
79
- fireEvent.change(input, { target: { value: 'abc123' } });
80
- expect(onChange).not.toHaveBeenCalled();
81
- });
82
- it('allows input that matches pattern', () => {
83
- const onChange = vi.fn();
84
- const numberPattern = /^\d*$/;
85
- render(React.createElement(TextField, { ...defaultProps, onChange: onChange, pattern: numberPattern }));
86
- const input = screen.getByRole('textbox');
87
- fireEvent.change(input, { target: { value: '123' } });
88
- expect(onChange).toHaveBeenCalledWith('123');
89
- });
90
- });
91
- describe('Controlled Mode', () => {
92
- it('renders edit button in controlled mode', () => {
93
- const { container } = render(React.createElement(TextField, { ...defaultProps, controlled: true, value: 'test', onSubmit: vi.fn() }));
94
- const button = container.querySelector('[data-tooltip-content="Edit"]');
95
- expect(button).toBeDefined();
96
- expect(button?.getAttribute('data-tooltip-content')).toBe('Edit');
97
- });
98
- });
99
- describe('Submittable Mode', () => {
100
- it('renders submit button in submittable mode', () => {
101
- const { container } = render(React.createElement(TextField, { ...defaultProps, submittable: true, doSubmit: vi.fn() }));
102
- const button = container.querySelector('[data-tooltip-content="Confirm"]');
103
- expect(button).toBeDefined();
104
- expect(button?.getAttribute('data-tooltip-content')).toBe('Confirm');
105
- });
106
- it('renders search icon when submittableType is search', () => {
107
- const { container } = render(React.createElement(TextField, { ...defaultProps, submittable: true, submittableType: 'search', doSubmit: vi.fn() }));
108
- const button = container.querySelector('[data-tooltip-content="Search"]');
109
- expect(button).toBeDefined();
110
- expect(button?.getAttribute('data-tooltip-content')).toBe('Search');
111
- });
112
- });
113
- describe('Loading State', () => {
114
- it('disables input when loading is true', () => {
115
- render(React.createElement(TextField, { ...defaultProps, loading: true }));
116
- const input = screen.getByRole('textbox');
117
- expect(input.disabled).toBe(true);
118
- });
119
- });
120
- describe('Constructor Validation', () => {
121
- it('throws error when both controlled and submittable are true', () => {
122
- expect(() => {
123
- render(React.createElement(TextField, { ...defaultProps, controlled: true, submittable: true }));
124
- }).toThrow('Actionable TextField(s) must be one of either: controlled or submittable.');
125
- });
126
- });
127
- describe('Controlled Mode', () => {
128
- it('renders in controlled mode with edit button', () => {
129
- const { container } = render(React.createElement(TextField, { ...defaultProps, controlled: true, value: 'test value' }));
130
- const editButton = container.querySelector('[data-tooltip-content="Edit"]');
131
- expect(editButton).toBeDefined();
132
- });
133
- it('toggles editing state when edit button is clicked', () => {
134
- const { container } = render(React.createElement(TextField, { ...defaultProps, controlled: true, value: 'test value' }));
135
- const editButton = container.querySelector('[data-tooltip-content="Edit"]');
136
- fireEvent.click(editButton);
137
- // Should now show check icon instead of edit icon
138
- const checkButton = container.querySelector('[data-tooltip-content="Edit"]');
139
- expect(checkButton).toBeDefined();
140
- });
141
- it('calls onSubmit when editing is completed with changed value', () => {
142
- const onSubmit = vi.fn();
143
- const { container } = render(React.createElement(TextField, { ...defaultProps, controlled: true, value: 'original', onSubmit: onSubmit }));
144
- // Start editing
145
- const editButton = container.querySelector('[data-tooltip-content="Edit"]');
146
- fireEvent.click(editButton);
147
- // Change value
148
- const input = screen.getByRole('textbox');
149
- fireEvent.change(input, { target: { value: 'modified' } });
150
- // Complete editing
151
- const checkButton = container.querySelector('[data-tooltip-content="Edit"]');
152
- fireEvent.click(checkButton);
153
- expect(onSubmit).toHaveBeenCalledWith('modified');
154
- });
155
- it('does not call onSubmit when editing is completed without changes', () => {
156
- const onSubmit = vi.fn();
157
- const { container } = render(React.createElement(TextField, { ...defaultProps, controlled: true, value: 'unchanged', onSubmit: onSubmit }));
158
- // Start editing
159
- const editButton = container.querySelector('[data-tooltip-content="Edit"]');
160
- fireEvent.click(editButton);
161
- // Complete editing without changes
162
- const checkButton = container.querySelector('[data-tooltip-content="Edit"]');
163
- fireEvent.click(checkButton);
164
- expect(onSubmit).not.toHaveBeenCalled();
165
- });
166
- it('calls onSubmit with null when empty value is submitted', () => {
167
- const onSubmit = vi.fn();
168
- const { container } = render(React.createElement(TextField, { ...defaultProps, controlled: true, value: 'original', onSubmit: onSubmit }));
169
- // Start editing
170
- const editButton = container.querySelector('[data-tooltip-content="Edit"]');
171
- fireEvent.click(editButton);
172
- // Clear value
173
- const input = screen.getByRole('textbox');
174
- fireEvent.change(input, { target: { value: '' } });
175
- // Complete editing
176
- const checkButton = container.querySelector('[data-tooltip-content="Edit"]');
177
- fireEvent.click(checkButton);
178
- expect(onSubmit).toHaveBeenCalledWith(null);
179
- });
180
- });
181
- describe('Submittable Mode', () => {
182
- it('renders submittable mode with search icon', () => {
183
- const { container } = render(React.createElement(TextField, { ...defaultProps, submittable: true, submittableType: 'search' }));
184
- const submitButton = container.querySelector('[data-tooltip-content="Search"]');
185
- expect(submitButton).toBeDefined();
186
- });
187
- it('renders submittable mode with check icon', () => {
188
- const { container } = render(React.createElement(TextField, { ...defaultProps, submittable: true, submittableType: 'check' }));
189
- const submitButton = container.querySelector('[data-tooltip-content="Confirm"]');
190
- expect(submitButton).toBeDefined();
191
- });
192
- it('renders submittable mode with add icon', () => {
193
- const { container } = render(React.createElement(TextField, { ...defaultProps, submittable: true, submittableType: 'add' }));
194
- const submitButton = container.querySelector('[data-tooltip-content="Confirm"]');
195
- expect(submitButton).toBeDefined();
196
- });
197
- it('calls doSubmit when submit button is clicked with value', () => {
198
- const doSubmit = vi.fn();
199
- const { container } = render(React.createElement(TextField, { ...defaultProps, submittable: true, doSubmit: doSubmit }));
200
- const input = screen.getByRole('textbox');
201
- fireEvent.change(input, { target: { value: 'test submission' } });
202
- const submitButton = container.querySelector('[data-tooltip-content="Confirm"]');
203
- fireEvent.click(submitButton);
204
- expect(doSubmit).toHaveBeenCalledWith('test submission');
205
- });
206
- it('clears value after submission when submittableType is add', () => {
207
- const doSubmit = vi.fn();
208
- const { container } = render(React.createElement(TextField, { ...defaultProps, submittable: true, submittableType: 'add', doSubmit: doSubmit }));
209
- const input = screen.getByRole('textbox');
210
- fireEvent.change(input, { target: { value: 'test value' } });
211
- const submitButton = container.querySelector('[data-tooltip-content="Confirm"]');
212
- fireEvent.click(submitButton);
213
- expect(input.value).toBe('');
214
- });
215
- it('shows clear button when value exists', () => {
216
- const { container } = render(React.createElement(TextField, { ...defaultProps, submittable: true, value: 'some value' }));
217
- const clearButton = container.querySelector('[data-tooltip-content="Clear"]');
218
- expect(clearButton).toBeDefined();
219
- });
220
- it('calls doSubmit with empty string when clear button is clicked', () => {
221
- const doSubmit = vi.fn();
222
- const { container } = render(React.createElement(TextField, { ...defaultProps, submittable: true, value: 'some value', doSubmit: doSubmit }));
223
- const clearButton = container.querySelector('[data-tooltip-content="Clear"]');
224
- fireEvent.click(clearButton);
225
- expect(doSubmit).toHaveBeenCalledWith('');
226
- });
227
- });
228
- describe('Copy Functionality', () => {
229
- it('shows copy button when showCopy is true', () => {
230
- const { container } = render(React.createElement(TextField, { ...defaultProps, showCopy: true, value: 'copyable text' }));
231
- const copyButton = container.querySelector('[data-tooltip-content*="Copy"]');
232
- expect(copyButton).toBeDefined();
233
- });
234
- it('calls onNotification when copy succeeds', async () => {
235
- const onNotification = vi.fn();
236
- const { container } = render(React.createElement(TextField, { ...defaultProps, showCopy: true, value: 'copyable text', onNotification: onNotification }));
237
- const copyButton = container.querySelector('[data-tooltip-content*="Copy"]');
238
- fireEvent.click(copyButton);
239
- // Wait for clipboard operation
240
- await new Promise((resolve) => setTimeout(resolve, 0));
241
- expect(onNotification).toHaveBeenCalledWith('Copied to clipboard!');
242
- });
243
- it('calls onError when copy fails', async () => {
244
- // Mock clipboard to fail
245
- const originalClipboard = navigator.clipboard;
246
- Object.defineProperty(navigator, 'clipboard', {
247
- value: {
248
- writeText: vi.fn().mockRejectedValue(new Error('Copy failed'))
249
- },
250
- writable: true,
251
- configurable: true
252
- });
253
- const onError = vi.fn();
254
- const { container } = render(React.createElement(TextField, { ...defaultProps, showCopy: true, value: 'copyable text', onError: onError }));
255
- const copyButton = container.querySelector('[data-tooltip-content*="Copy"]');
256
- fireEvent.click(copyButton);
257
- // Wait for clipboard operation
258
- await new Promise((resolve) => setTimeout(resolve, 0));
259
- expect(onError).toHaveBeenCalledWith('Error copying to clipboard.');
260
- // Restore clipboard
261
- Object.defineProperty(navigator, 'clipboard', {
262
- value: originalClipboard,
263
- writable: true,
264
- configurable: true
265
- });
266
- });
267
- });
268
- describe('Pattern Validation', () => {
269
- it('prevents input that does not match pattern', () => {
270
- const onChange = vi.fn();
271
- render(React.createElement(TextField, { ...defaultProps, pattern: /^\d+$/, onChange: onChange }));
272
- const input = screen.getByRole('textbox');
273
- fireEvent.change(input, { target: { value: 'abc123' } });
274
- expect(onChange).not.toHaveBeenCalled();
275
- });
276
- it('allows input that matches pattern', () => {
277
- const onChange = vi.fn();
278
- render(React.createElement(TextField, { ...defaultProps, pattern: /^\d+$/, onChange: onChange }));
279
- const input = screen.getByRole('textbox');
280
- fireEvent.change(input, { target: { value: '123' } });
281
- expect(onChange).toHaveBeenCalledWith('123');
282
- });
283
- it('converts empty string to null for regular input', () => {
284
- const onChange = vi.fn();
285
- render(React.createElement(TextField, { ...defaultProps, onChange: onChange, value: 'initial' }));
286
- const input = screen.getByRole('textbox');
287
- fireEvent.change(input, { target: { value: '' } });
288
- expect(onChange).toHaveBeenCalledWith(null);
289
- });
290
- });
291
- describe('Button Visibility', () => {
292
- it('hides all buttons when hideButtons is true', () => {
293
- const { container } = render(React.createElement(TextField, { ...defaultProps, submittable: true, showCopy: true, hideButtons: true, value: 'test' }));
294
- const submitButton = container.querySelector('[data-tooltip-content="Confirm"]');
295
- const copyButton = container.querySelector('[data-tooltip-content*="Copy"]');
296
- expect(submitButton).toBeNull();
297
- expect(copyButton).toBeNull();
298
- });
299
- it('renders custom buttons array', () => {
300
- render(React.createElement(TextField, { ...defaultProps, buttons: [React.createElement("button", { key: 'custom' }, "Custom")] }));
301
- const button = screen.getByText('Custom');
302
- expect(button).toBeDefined();
303
- });
304
- it('renders single custom button', () => {
305
- render(React.createElement(TextField, { ...defaultProps, buttons: React.createElement("button", { key: 'custom' }, "Single") }));
306
- const button = screen.getByText('Single');
307
- expect(button).toBeDefined();
308
- });
309
- });
310
- describe('Suggestions/Autocomplete', () => {
311
- it('renders with suggestions and autocomplete functionality', () => {
312
- const suggestions = ['apple', 'banana', 'cherry'];
313
- const { container } = render(React.createElement(TextField, { ...defaultProps, suggestions: suggestions }));
314
- // Should render ReactTextareaAutocomplete (mocked as 'input' string)
315
- const textContent = container.textContent;
316
- expect(textContent).toContain('input');
317
- });
318
- it('handles suggestion click in submittable mode', () => {
319
- const doSubmit = vi.fn();
320
- const suggestions = ['apple', 'banana', 'cherry'];
321
- const { container } = render(React.createElement(TextField, { ...defaultProps, submittable: true, suggestions: suggestions, doSubmit: doSubmit }));
322
- // Test that it renders with suggestions
323
- expect(container.textContent).toContain('input');
324
- });
325
- it('handles Enter key in submittable mode with suggestions', () => {
326
- const doSubmit = vi.fn();
327
- const suggestions = ['apple', 'banana', 'cherry'];
328
- render(React.createElement(TextField, { ...defaultProps, submittable: true, suggestions: suggestions, doSubmit: doSubmit }));
329
- // Test that component renders without errors
330
- expect(doSubmit).toBeDefined();
331
- });
332
- });
333
- describe('Keyboard Shortcuts', () => {
334
- it('binds hotkeys on focus in submittable mode', () => {
335
- const doSubmit = vi.fn();
336
- render(React.createElement(TextField, { ...defaultProps, submittable: true, doSubmit: doSubmit }));
337
- const input = screen.getByRole('textbox');
338
- fireEvent.focus(input);
339
- // Test that focus event was handled
340
- expect(input).toBeDefined();
341
- });
342
- it('unbinds hotkeys on blur in submittable mode', () => {
343
- const doSubmit = vi.fn();
344
- const onBlur = vi.fn();
345
- render(React.createElement(TextField, { ...defaultProps, submittable: true, doSubmit: doSubmit, onBlur: onBlur }));
346
- const input = screen.getByRole('textbox');
347
- fireEvent.focus(input);
348
- fireEvent.blur(input);
349
- expect(onBlur).toHaveBeenCalled();
350
- });
351
- it('binds hotkeys on focus in controlled mode', () => {
352
- const onSubmit = vi.fn();
353
- render(React.createElement(TextField, { ...defaultProps, controlled: true, value: 'original', onSubmit: onSubmit }));
354
- const input = screen.getByRole('textbox');
355
- fireEvent.focus(input);
356
- // Test that focus event was handled
357
- expect(input).toBeDefined();
358
- });
359
- it('unbinds hotkeys on blur in controlled mode', () => {
360
- const onBlur = vi.fn();
361
- render(React.createElement(TextField, { ...defaultProps, controlled: true, value: 'original', onBlur: onBlur }));
362
- const input = screen.getByRole('textbox');
363
- fireEvent.focus(input);
364
- fireEvent.blur(input);
365
- expect(onBlur).toHaveBeenCalled();
366
- });
367
- });
368
- describe('Lifecycle Methods', () => {
369
- it('handles componentWillUnmount for submittable mode', () => {
370
- const { unmount } = render(React.createElement(TextField, { ...defaultProps, submittable: true }));
371
- // Focus to bind hotkeys
372
- const input = screen.getByRole('textbox');
373
- fireEvent.focus(input);
374
- // Unmount should clean up hotkey bindings
375
- unmount();
376
- });
377
- it('handles componentWillUnmount for controlled mode', () => {
378
- const { unmount } = render(React.createElement(TextField, { ...defaultProps, controlled: true }));
379
- // Focus to bind hotkeys
380
- const input = screen.getByRole('textbox');
381
- fireEvent.focus(input);
382
- // Unmount should clean up hotkey bindings
383
- unmount();
384
- });
385
- it('handles componentDidUpdate for controlled mode', () => {
386
- const { rerender } = render(React.createElement(TextField, { ...defaultProps, controlled: true, value: 'initial' }));
387
- // Update component to trigger componentDidUpdate
388
- rerender(React.createElement(TextField, { ...defaultProps, controlled: true, value: 'updated' }));
389
- const input = screen.getByRole('textbox');
390
- expect(input.value).toBe('updated');
391
- });
392
- });
393
- describe('Edge Cases', () => {
394
- it('handles null submittableType gracefully', () => {
395
- render(React.createElement(TextField, { ...defaultProps, submittable: true, submittableType: null }));
396
- // Should still render without crashing
397
- const input = screen.getByRole('textbox');
398
- expect(input).toBeDefined();
399
- });
400
- it('handles empty suggestions array', () => {
401
- const { container } = render(React.createElement(TextField, { ...defaultProps, suggestions: [] }));
402
- // Should render ReactTextareaAutocomplete (mocked as 'input' string) even with empty suggestions
403
- expect(container.textContent).toContain('input');
404
- });
405
- it('handles disabled state in controlled mode', () => {
406
- render(React.createElement(TextField, { ...defaultProps, controlled: true, disabled: true }));
407
- const input = screen.getByRole('textbox');
408
- expect(input.disabled).toBe(true);
409
- });
410
- it('handles blur event with hotkey cleanup', () => {
411
- const onBlur = vi.fn();
412
- render(React.createElement(TextField, { ...defaultProps, submittable: true, onBlur: onBlur }));
413
- const input = screen.getByRole('textbox');
414
- fireEvent.focus(input);
415
- fireEvent.blur(input);
416
- expect(onBlur).toHaveBeenCalled();
417
- });
418
- it('handles focus event with hotkey binding', () => {
419
- const onFocus = vi.fn();
420
- render(React.createElement(TextField, { ...defaultProps, controlled: true, onFocus: onFocus }));
421
- const input = screen.getByRole('textbox');
422
- fireEvent.focus(input);
423
- expect(onFocus).toHaveBeenCalled();
424
- });
425
- it('handles setEditing method', () => {
426
- const { container } = render(React.createElement(TextField, { ...defaultProps, controlled: true, value: 'test' }));
427
- // Start editing by clicking edit button
428
- const editButton = container.querySelector('[data-tooltip-content="Edit"]');
429
- fireEvent.click(editButton);
430
- // Should be in editing mode
431
- const input = screen.getByRole('textbox');
432
- expect(input.disabled).toBe(false);
433
- });
434
- it('handles getValue method for different modes', () => {
435
- const { rerender } = render(React.createElement(TextField, { ...defaultProps, value: 'test' }));
436
- const input = screen.getByRole('textbox');
437
- expect(input.value).toBe('test');
438
- // Test controlled mode
439
- rerender(React.createElement(TextField, { ...defaultProps, controlled: true, value: 'controlled test' }));
440
- const controlledInput = screen.getByRole('textbox');
441
- expect(controlledInput.value).toBe('controlled test');
442
- });
443
- });
444
- describe('Component Updates', () => {
445
- it('updates internal value when props.value changes', () => {
446
- const { rerender } = render(React.createElement(TextField, { ...defaultProps, value: 'initial' }));
447
- rerender(React.createElement(TextField, { ...defaultProps, value: 'updated' }));
448
- const input = screen.getByRole('textbox');
449
- expect(input.value).toBe('updated');
450
- });
451
- it('updates internal value when controlled mode value changes', () => {
452
- const { rerender } = render(React.createElement(TextField, { ...defaultProps, controlled: true, value: 'initial' }));
453
- rerender(React.createElement(TextField, { ...defaultProps, controlled: true, value: 'updated' }));
454
- const input = screen.getByRole('textbox');
455
- expect(input.value).toBe('updated');
456
- });
457
- it('clears internal value when editing ends and value is empty', () => {
458
- const { rerender, container } = render(React.createElement(TextField, { ...defaultProps, controlled: true, value: 'initial' }));
459
- // Start editing
460
- const editButton = container.querySelector('[data-tooltip-content="Edit"]');
461
- fireEvent.click(editButton);
462
- // Update props to empty value and stop editing
463
- rerender(React.createElement(TextField, { ...defaultProps, controlled: true, value: '' }));
464
- const input = screen.getByRole('textbox');
465
- expect(input.value).toBe('');
466
- });
467
- });
468
- });
469
- //# sourceMappingURL=TextField.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TextField.test.js","sourceRoot":"","sources":["../../../../src/components/text-field/TextField.test.tsx"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,70 +0,0 @@
1
- // Test setup file for Vitest
2
- import React from 'react';
3
- import { beforeAll, vi } from 'vitest';
4
- // Mock hotkeys-js
5
- vi.mock('hotkeys-js', () => {
6
- const mockHotkeys = vi.fn();
7
- mockHotkeys.filter = vi.fn();
8
- mockHotkeys.unbind = vi.fn();
9
- return {
10
- default: mockHotkeys
11
- };
12
- });
13
- // Mock Font Awesome icons - return simple div elements
14
- vi.mock('../../constants/icons', () => ({
15
- ICON_CHECK: '<div data-testid="icon-check">✓</div>',
16
- ICON_EDIT: '<div data-testid="icon-edit">✎</div>',
17
- ICON_SEARCH: '<div data-testid="icon-search">🔍</div>',
18
- ICON_PLUS: '<div data-testid="icon-plus">+</div>',
19
- ICON_CLIPBOARD: '<div data-testid="icon-clipboard">📋</div>',
20
- ICON_TIMES: '<div data-testid="icon-times">×</div>',
21
- ICON_CIRCLE_NOTCH: '<div data-testid="icon-loading">⟳</div>',
22
- ICON_CARET_UP: '<div data-testid="icon-caret-up">▲</div>',
23
- ICON_CARET_DOWN: '<div data-testid="icon-caret-down">▼</div>'
24
- }));
25
- // Mock react-textarea-autocomplete
26
- vi.mock('@imposium-hub/react-textarea-autocomplete', () => ({
27
- default: vi.fn(() => 'input')
28
- }));
29
- // Mock utility functions
30
- vi.mock('../../Util', () => ({
31
- generateUUID: vi.fn(() => 'test-uuid-123'),
32
- filterHotkeys: vi.fn(() => true)
33
- }));
34
- // Mock FieldWrapper to simplify testing
35
- vi.mock('../../components/field-wrapper/FieldWrapper', () => ({
36
- default: ({ children, customClass, buttons, info, label }) => React.createElement('div', {
37
- 'className': `field-wrapper ${customClass || ''}`,
38
- 'data-testid': 'field-wrapper'
39
- }, [
40
- label && React.createElement('label', { key: 'label' }, label),
41
- children,
42
- info && React.createElement('div', { key: 'info', className: 'field-info' }, info),
43
- buttons &&
44
- React.createElement('div', { key: 'buttons', className: 'field-buttons' }, buttons)
45
- ])
46
- }));
47
- // Mock Button component to include proper accessibility
48
- vi.mock('../../components/button/Button', () => ({
49
- default: ({ children, onClick, tooltip, style, color, ...props }) => React.createElement('button', {
50
- 'role': 'button',
51
- 'className': `imposium-btn btn-${style || 'default'} ${color || ''}`,
52
- onClick,
53
- 'data-tooltip-content': typeof tooltip === 'string' ? tooltip : tooltip?.content,
54
- ...props
55
- }, children)
56
- }));
57
- // Setup global mocks
58
- beforeAll(() => {
59
- // Mock clipboard API
60
- Object.assign(navigator, {
61
- clipboard: {
62
- writeText: vi.fn(() => Promise.resolve())
63
- }
64
- });
65
- // Mock hotkeys global object
66
- global.hotkeys = vi.fn();
67
- global.hotkeys.filter = vi.fn();
68
- global.hotkeys.unbind = vi.fn();
69
- });
70
- //# sourceMappingURL=setup.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/test/setup.ts"],"names":[],"mappings":"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"}
@@ -1,26 +0,0 @@
1
- import React from 'react';
2
- import { RenderOptions } from '@testing-library/react';
3
- import { MockedFunction } from 'vitest';
4
- interface IMockProps {
5
- onChange: MockedFunction<any>;
6
- onSubmit: MockedFunction<any>;
7
- onBlur: MockedFunction<any>;
8
- onFocus: MockedFunction<any>;
9
- onNotification: MockedFunction<any>;
10
- onError: MockedFunction<any>;
11
- doSubmit: MockedFunction<any>;
12
- [key: string]: any;
13
- }
14
- declare const customRender: (ui: React.ReactElement, options?: Omit<RenderOptions, "wrapper">) => any;
15
- export * from '@testing-library/react';
16
- export { customRender as render };
17
- export declare const createMockProps: (overrides: IMockProps) => {
18
- onChange: MockedFunction<any>;
19
- onSubmit: MockedFunction<any>;
20
- onBlur: MockedFunction<any>;
21
- onFocus: MockedFunction<any>;
22
- onNotification: MockedFunction<any>;
23
- onError: MockedFunction<any>;
24
- doSubmit: MockedFunction<any>;
25
- };
26
- export declare const waitForUpdate: () => Promise<unknown>;