@imposium-hub/components 2.14.7-0 → 2.14.7-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.
- package/dist/cjs/components/advanced-number-field/AdvancedNumberField.d.ts +1 -1
- package/dist/cjs/components/anchor-field/AnchorField.d.ts +1 -1
- package/dist/cjs/components/assets/AssetsTableDateCell.d.ts +6 -1
- package/dist/cjs/components/assets/AssetsTableGlobalCell.d.ts +5 -1
- package/dist/cjs/components/assets/AssetsTablePreviewCell.d.ts +17 -1
- package/dist/cjs/components/assets/AssetsTableStatusCell.d.ts +5 -1
- package/dist/cjs/components/assets/AssetsTableTagsCell.d.ts +6 -1
- package/dist/cjs/components/assets/AssetsTableTypeCell.d.ts +5 -1
- package/dist/cjs/components/assets/AssetsTypeIcon.d.ts +5 -1
- package/dist/cjs/components/assets/FontAssetPreview.d.ts +1 -1
- package/dist/cjs/components/assets/StoryTableTotalRendersCell.d.ts +2 -1
- package/dist/cjs/components/button/Button.d.ts +1 -1
- package/dist/cjs/components/button/Button.stories.d.ts +6 -5
- package/dist/cjs/components/button-group-field/ButtonGroupField.d.ts +1 -1
- package/dist/cjs/components/button-group-field/ButtonGroupField.stories.d.ts +2 -1
- package/dist/cjs/components/button-menu/ButtonMenu.d.ts +2 -2
- package/dist/cjs/components/button-menu/ButtonMenu.stories.d.ts +2 -1
- package/dist/cjs/components/button-menu/ButtonMenuItem.d.ts +1 -1
- package/dist/cjs/components/card/Card.d.ts +4 -4
- package/dist/cjs/components/card/Card.stories.d.ts +2 -1
- package/dist/cjs/components/checkbox-field/CheckboxField.d.ts +1 -1
- package/dist/cjs/components/checkbox-field/CheckboxField.stories.d.ts +2 -1
- package/dist/cjs/components/color-field/ColorField.d.ts +1 -1
- package/dist/cjs/components/color-field/ColorFiled.stories.d.ts +2 -1
- package/dist/cjs/components/compositions/TextLayer.d.ts +1 -1
- package/dist/cjs/components/config-variable-button/ConfigVariableButton.d.ts +42 -1
- package/dist/cjs/components/confirm-modal/ConfirmModal.d.ts +2 -1
- package/dist/cjs/components/controlled-list/ControlledList.d.ts +2 -2
- package/dist/cjs/components/controlled-list/ControlledList.stories.d.ts +2 -1
- package/dist/cjs/components/copy-prop-id-button/CopyPropIdButton.d.ts +1 -1
- package/dist/cjs/components/determinate-loader/DeterminateLoader.stories.d.ts +4 -3
- package/dist/cjs/components/dropdown/Dropdown.d.ts +1 -1
- package/dist/cjs/components/dropdown/{dropdown.stories.d.ts → Dropdown.stories.d.ts} +1 -1
- package/dist/cjs/components/field-wrapper/FieldWrapper.d.ts +2 -2
- package/dist/cjs/components/field-wrapper/FieldWrapper.stories.d.ts +2 -1
- package/dist/cjs/components/font-field/FontField.d.ts +2 -1
- package/dist/cjs/components/font-picker/FontPicker.d.ts +1 -1
- package/dist/cjs/components/h-rule/HRule.d.ts +2 -1
- package/dist/cjs/components/h-rule/HRule.stories.d.ts +3 -2
- package/dist/cjs/components/header/ProjectDropdown.d.ts +2 -1
- package/dist/cjs/components/list-field/ListField.d.ts +1 -1
- package/dist/cjs/components/list-field/ListField.stories.d.ts +2 -1
- package/dist/cjs/components/log-viewer/LogViewer.d.ts +1 -1
- package/dist/cjs/components/media-variable-field/MediaVariableField.d.ts +1 -1
- package/dist/cjs/components/modal/Modal.d.ts +1 -1
- package/dist/cjs/components/modal/Modal.stories.d.ts +2 -1
- package/dist/cjs/components/number-field/NumberField.d.ts +3 -3
- package/dist/cjs/components/number-field/NumberField.js +7 -4
- package/dist/cjs/components/number-field/NumberField.js.map +1 -1
- package/dist/cjs/components/number-field/NumberField.stories.d.ts +2 -1
- package/dist/cjs/components/players/AudioPlayer.d.ts +1 -1
- package/dist/cjs/components/players/AudioPreview.d.ts +1 -1
- package/dist/cjs/components/players/ImagePlayer.d.ts +1 -1
- package/dist/cjs/components/players/ImagePreview.d.ts +1 -1
- package/dist/cjs/components/players/ImageSequencePlayer.d.ts +1 -1
- package/dist/cjs/components/players/TemplatePlayer.d.ts +1 -1
- package/dist/cjs/components/players/VideoPlayer.d.ts +1 -1
- package/dist/cjs/components/players/VideoPreview.d.ts +1 -1
- package/dist/cjs/components/publish-wizard/PublishWizard.d.ts +3 -3
- package/dist/cjs/components/publish-wizard/publish/APIIntegration.d.ts +1 -1
- package/dist/cjs/components/publish-wizard/publish/HubSpotFlow.d.ts +1 -1
- package/dist/cjs/components/publish-wizard/publish/WebpageHosted.d.ts +2 -2
- package/dist/cjs/components/section/Section.d.ts +2 -1
- package/dist/cjs/components/section/Section.stories.d.ts +3 -2
- package/dist/cjs/components/select-field/SelectField.d.ts +1 -1
- package/dist/cjs/components/select-field/SelectField.stories.d.ts +2 -1
- package/dist/cjs/components/shortcut-menu/ShortcutMenu.stories.d.ts +2 -1
- package/dist/cjs/components/slider-field/SliderField.d.ts +1 -1
- package/dist/cjs/components/slider-field/SliderField.stories.d.ts +2 -1
- package/dist/cjs/components/smpte-field/SMPTEField.d.ts +1 -1
- package/dist/cjs/components/tabs/Tabs.stories.d.ts +3 -2
- package/dist/cjs/components/tag/Tag.d.ts +9 -1
- package/dist/cjs/components/text-area-autocomplete/TextAreaAutocomplete.d.ts +2 -1
- package/dist/cjs/components/text-area-field/TextAreaField.d.ts +1 -1
- package/dist/cjs/components/text-area-field/TextAreaField.stories.d.ts +2 -1
- package/dist/cjs/components/text-field/TextField.d.ts +1 -1
- package/dist/cjs/components/text-field/TextField.stories.d.ts +2 -1
- package/dist/cjs/constants/icons.d.ts +80 -79
- package/dist/esm/components/advanced-number-field/AdvancedNumberField.d.ts +1 -1
- package/dist/esm/components/anchor-field/AnchorField.d.ts +1 -1
- package/dist/esm/components/assets/AssetsTableDateCell.d.ts +6 -1
- package/dist/esm/components/assets/AssetsTableGlobalCell.d.ts +5 -1
- package/dist/esm/components/assets/AssetsTablePreviewCell.d.ts +17 -1
- package/dist/esm/components/assets/AssetsTableStatusCell.d.ts +5 -1
- package/dist/esm/components/assets/AssetsTableTagsCell.d.ts +6 -1
- package/dist/esm/components/assets/AssetsTableTypeCell.d.ts +5 -1
- package/dist/esm/components/assets/AssetsTypeIcon.d.ts +5 -1
- package/dist/esm/components/assets/FontAssetPreview.d.ts +1 -1
- package/dist/esm/components/assets/StoryTableTotalRendersCell.d.ts +2 -1
- package/dist/esm/components/button/Button.d.ts +1 -1
- package/dist/esm/components/button/Button.stories.d.ts +6 -5
- package/dist/esm/components/button-group-field/ButtonGroupField.d.ts +1 -1
- package/dist/esm/components/button-group-field/ButtonGroupField.stories.d.ts +2 -1
- package/dist/esm/components/button-menu/ButtonMenu.d.ts +2 -2
- package/dist/esm/components/button-menu/ButtonMenu.stories.d.ts +2 -1
- package/dist/esm/components/button-menu/ButtonMenuItem.d.ts +1 -1
- package/dist/esm/components/card/Card.d.ts +4 -4
- package/dist/esm/components/card/Card.stories.d.ts +2 -1
- package/dist/esm/components/checkbox-field/CheckboxField.d.ts +1 -1
- package/dist/esm/components/checkbox-field/CheckboxField.stories.d.ts +2 -1
- package/dist/esm/components/color-field/ColorField.d.ts +1 -1
- package/dist/esm/components/color-field/ColorFiled.stories.d.ts +2 -1
- package/dist/esm/components/compositions/TextLayer.d.ts +1 -1
- package/dist/esm/components/config-variable-button/ConfigVariableButton.d.ts +42 -1
- package/dist/esm/components/confirm-modal/ConfirmModal.d.ts +2 -1
- package/dist/esm/components/controlled-list/ControlledList.d.ts +2 -2
- package/dist/esm/components/controlled-list/ControlledList.stories.d.ts +2 -1
- package/dist/esm/components/copy-prop-id-button/CopyPropIdButton.d.ts +1 -1
- package/dist/esm/components/determinate-loader/DeterminateLoader.stories.d.ts +4 -3
- package/dist/esm/components/dropdown/Dropdown.d.ts +1 -1
- package/dist/esm/components/dropdown/{dropdown.stories.d.ts → Dropdown.stories.d.ts} +1 -1
- package/dist/esm/components/field-wrapper/FieldWrapper.d.ts +2 -2
- package/dist/esm/components/field-wrapper/FieldWrapper.stories.d.ts +2 -1
- package/dist/esm/components/font-field/FontField.d.ts +2 -1
- package/dist/esm/components/font-picker/FontPicker.d.ts +1 -1
- package/dist/esm/components/h-rule/HRule.d.ts +2 -1
- package/dist/esm/components/h-rule/HRule.stories.d.ts +3 -2
- package/dist/esm/components/header/ProjectDropdown.d.ts +2 -1
- package/dist/esm/components/list-field/ListField.d.ts +1 -1
- package/dist/esm/components/list-field/ListField.stories.d.ts +2 -1
- package/dist/esm/components/log-viewer/LogViewer.d.ts +1 -1
- package/dist/esm/components/media-variable-field/MediaVariableField.d.ts +1 -1
- package/dist/esm/components/modal/Modal.d.ts +1 -1
- package/dist/esm/components/modal/Modal.stories.d.ts +2 -1
- package/dist/esm/components/number-field/NumberField.d.ts +3 -3
- package/dist/esm/components/number-field/NumberField.js +5 -4
- package/dist/esm/components/number-field/NumberField.js.map +1 -1
- package/dist/esm/components/number-field/NumberField.stories.d.ts +2 -1
- package/dist/esm/components/players/AudioPlayer.d.ts +1 -1
- package/dist/esm/components/players/AudioPreview.d.ts +1 -1
- package/dist/esm/components/players/ImagePlayer.d.ts +1 -1
- package/dist/esm/components/players/ImagePreview.d.ts +1 -1
- package/dist/esm/components/players/ImageSequencePlayer.d.ts +1 -1
- package/dist/esm/components/players/TemplatePlayer.d.ts +1 -1
- package/dist/esm/components/players/VideoPlayer.d.ts +1 -1
- package/dist/esm/components/players/VideoPreview.d.ts +1 -1
- package/dist/esm/components/publish-wizard/PublishWizard.d.ts +3 -3
- package/dist/esm/components/publish-wizard/publish/APIIntegration.d.ts +1 -1
- package/dist/esm/components/publish-wizard/publish/HubSpotFlow.d.ts +1 -1
- package/dist/esm/components/publish-wizard/publish/WebpageHosted.d.ts +2 -2
- package/dist/esm/components/section/Section.d.ts +2 -1
- package/dist/esm/components/section/Section.stories.d.ts +3 -2
- package/dist/esm/components/select-field/SelectField.d.ts +1 -1
- package/dist/esm/components/select-field/SelectField.stories.d.ts +2 -1
- package/dist/esm/components/shortcut-menu/ShortcutMenu.stories.d.ts +2 -1
- package/dist/esm/components/slider-field/SliderField.d.ts +1 -1
- package/dist/esm/components/slider-field/SliderField.stories.d.ts +2 -1
- package/dist/esm/components/smpte-field/SMPTEField.d.ts +1 -1
- package/dist/esm/components/tabs/Tabs.stories.d.ts +3 -2
- package/dist/esm/components/tag/Tag.d.ts +9 -1
- package/dist/esm/components/text-area-autocomplete/TextAreaAutocomplete.d.ts +2 -1
- package/dist/esm/components/text-area-field/TextAreaField.d.ts +1 -1
- package/dist/esm/components/text-area-field/TextAreaField.stories.d.ts +2 -1
- package/dist/esm/components/text-field/TextField.d.ts +1 -1
- package/dist/esm/components/text-field/TextField.stories.d.ts +2 -1
- package/dist/esm/constants/icons.d.ts +80 -79
- package/package.json +1 -1
- package/dist/cjs/components/advanced-number-field/AdvancedNumberField.test.d.ts +0 -1
- package/dist/cjs/components/advanced-number-field/AdvancedNumberField.test.js +0 -377
- package/dist/cjs/components/advanced-number-field/AdvancedNumberField.test.js.map +0 -1
- package/dist/cjs/components/anchor-field/AnchorField.test.d.ts +0 -1
- package/dist/cjs/components/anchor-field/AnchorField.test.js +0 -87
- package/dist/cjs/components/anchor-field/AnchorField.test.js.map +0 -1
- package/dist/cjs/components/asset-details/AssetDetails.test.d.ts +0 -1
- package/dist/cjs/components/asset-details/AssetDetails.test.js +0 -439
- package/dist/cjs/components/asset-details/AssetDetails.test.js.map +0 -1
- package/dist/cjs/components/assets/AssetField.test.d.ts +0 -1
- package/dist/cjs/components/assets/AssetField.test.js +0 -464
- package/dist/cjs/components/assets/AssetField.test.js.map +0 -1
- package/dist/cjs/components/assets/AssetsTableAssetIdCell.test.d.ts +0 -1
- package/dist/cjs/components/assets/AssetsTableAssetIdCell.test.js +0 -190
- package/dist/cjs/components/assets/AssetsTableAssetIdCell.test.js.map +0 -1
- package/dist/cjs/components/assets/AssetsTableAssetIdFilter.test.d.ts +0 -1
- package/dist/cjs/components/assets/AssetsTableAssetIdFilter.test.js +0 -82
- package/dist/cjs/components/assets/AssetsTableAssetIdFilter.test.js.map +0 -1
- package/dist/cjs/components/assets/AssetsTableComplexTagCell.test.d.ts +0 -1
- package/dist/cjs/components/assets/AssetsTableComplexTagCell.test.js +0 -125
- package/dist/cjs/components/assets/AssetsTableComplexTagCell.test.js.map +0 -1
- package/dist/cjs/components/assets/AssetsTableDateCell.test.d.ts +0 -1
- package/dist/cjs/components/assets/AssetsTableDateCell.test.js +0 -116
- package/dist/cjs/components/assets/AssetsTableDateCell.test.js.map +0 -1
- package/dist/cjs/components/controlled-list/ControlledList.test.d.ts +0 -1
- package/dist/cjs/components/controlled-list/ControlledList.test.js +0 -427
- package/dist/cjs/components/controlled-list/ControlledList.test.js.map +0 -1
- package/dist/cjs/components/copy-prop-id-button/CopyPropIdButton.test.d.ts +0 -1
- package/dist/cjs/components/copy-prop-id-button/CopyPropIdButton.test.js +0 -495
- package/dist/cjs/components/copy-prop-id-button/CopyPropIdButton.test.js.map +0 -1
- package/dist/cjs/components/number-field/NumberField.test.d.ts +0 -1
- package/dist/cjs/components/number-field/NumberField.test.js +0 -241
- package/dist/cjs/components/number-field/NumberField.test.js.map +0 -1
- package/dist/cjs/components/service-icon/ServiceIcon.test.d.ts +0 -0
- package/dist/cjs/components/service-icon/ServiceIcon.test.js +0 -1
- package/dist/cjs/components/service-icon/ServiceIcon.test.js.map +0 -1
- package/dist/cjs/components/tag/Tag.test.d.ts +0 -0
- package/dist/cjs/components/tag/Tag.test.js +0 -1
- package/dist/cjs/components/tag/Tag.test.js.map +0 -1
- package/dist/cjs/components/text-field/TextField.test.d.ts +0 -1
- package/dist/cjs/components/text-field/TextField.test.js +0 -540
- package/dist/cjs/components/text-field/TextField.test.js.map +0 -1
- package/dist/cjs/interfaces/field.d.ts +0 -0
- package/dist/cjs/interfaces/field.js +0 -1
- package/dist/cjs/interfaces/field.js.map +0 -1
- package/dist/cjs/test/setup.d.ts +0 -1
- package/dist/cjs/test/setup.js +0 -97
- package/dist/cjs/test/setup.js.map +0 -1
- package/dist/cjs/test/utils.d.ts +0 -26
- package/dist/cjs/test/utils.js +0 -44
- package/dist/cjs/test/utils.js.map +0 -1
- package/dist/cjs/utils/override.d.ts +0 -11
- package/dist/cjs/utils/override.js +0 -15
- package/dist/cjs/utils/override.js.map +0 -1
- package/dist/esm/components/advanced-number-field/AdvancedNumberField.test.d.ts +0 -1
- package/dist/esm/components/advanced-number-field/AdvancedNumberField.test.js +0 -361
- package/dist/esm/components/advanced-number-field/AdvancedNumberField.test.js.map +0 -1
- package/dist/esm/components/anchor-field/AnchorField.test.d.ts +0 -1
- package/dist/esm/components/anchor-field/AnchorField.test.js +0 -81
- package/dist/esm/components/anchor-field/AnchorField.test.js.map +0 -1
- package/dist/esm/components/asset-details/AssetDetails.test.d.ts +0 -1
- package/dist/esm/components/asset-details/AssetDetails.test.js +0 -367
- package/dist/esm/components/asset-details/AssetDetails.test.js.map +0 -1
- package/dist/esm/components/assets/AssetField.test.d.ts +0 -1
- package/dist/esm/components/assets/AssetField.test.js +0 -311
- package/dist/esm/components/assets/AssetField.test.js.map +0 -1
- package/dist/esm/components/assets/AssetsTableAssetIdCell.test.d.ts +0 -1
- package/dist/esm/components/assets/AssetsTableAssetIdCell.test.js +0 -105
- package/dist/esm/components/assets/AssetsTableAssetIdCell.test.js.map +0 -1
- package/dist/esm/components/assets/AssetsTableAssetIdFilter.test.d.ts +0 -1
- package/dist/esm/components/assets/AssetsTableAssetIdFilter.test.js +0 -63
- package/dist/esm/components/assets/AssetsTableAssetIdFilter.test.js.map +0 -1
- package/dist/esm/components/assets/AssetsTableComplexTagCell.test.d.ts +0 -1
- package/dist/esm/components/assets/AssetsTableComplexTagCell.test.js +0 -100
- package/dist/esm/components/assets/AssetsTableComplexTagCell.test.js.map +0 -1
- package/dist/esm/components/assets/AssetsTableDateCell.test.d.ts +0 -1
- package/dist/esm/components/assets/AssetsTableDateCell.test.js +0 -60
- package/dist/esm/components/assets/AssetsTableDateCell.test.js.map +0 -1
- package/dist/esm/components/controlled-list/ControlledList.test.d.ts +0 -1
- package/dist/esm/components/controlled-list/ControlledList.test.js +0 -400
- package/dist/esm/components/controlled-list/ControlledList.test.js.map +0 -1
- package/dist/esm/components/copy-prop-id-button/CopyPropIdButton.test.d.ts +0 -1
- package/dist/esm/components/copy-prop-id-button/CopyPropIdButton.test.js +0 -357
- package/dist/esm/components/copy-prop-id-button/CopyPropIdButton.test.js.map +0 -1
- package/dist/esm/components/number-field/NumberField.test.d.ts +0 -1
- package/dist/esm/components/number-field/NumberField.test.js +0 -192
- package/dist/esm/components/number-field/NumberField.test.js.map +0 -1
- package/dist/esm/components/service-icon/ServiceIcon.test.d.ts +0 -0
- package/dist/esm/components/service-icon/ServiceIcon.test.js +0 -1
- package/dist/esm/components/service-icon/ServiceIcon.test.js.map +0 -1
- package/dist/esm/components/tag/Tag.test.d.ts +0 -0
- package/dist/esm/components/tag/Tag.test.js +0 -1
- package/dist/esm/components/tag/Tag.test.js.map +0 -1
- package/dist/esm/components/text-field/TextField.test.d.ts +0 -1
- package/dist/esm/components/text-field/TextField.test.js +0 -469
- package/dist/esm/components/text-field/TextField.test.js.map +0 -1
- package/dist/esm/interfaces/field.d.ts +0 -0
- package/dist/esm/interfaces/field.js +0 -1
- package/dist/esm/interfaces/field.js.map +0 -1
- package/dist/esm/test/setup.d.ts +0 -1
- package/dist/esm/test/setup.js +0 -70
- package/dist/esm/test/setup.js.map +0 -1
- package/dist/esm/test/utils.d.ts +0 -26
- package/dist/esm/test/utils.js +0 -27
- package/dist/esm/test/utils.js.map +0 -1
- package/dist/esm/utils/override.d.ts +0 -11
- package/dist/esm/utils/override.js +0 -9
- package/dist/esm/utils/override.js.map +0 -1
- /package/dist/cjs/components/dropdown/{dropdown.stories.js → Dropdown.stories.js} +0 -0
- /package/dist/cjs/components/dropdown/{dropdown.stories.js.map → Dropdown.stories.js.map} +0 -0
- /package/dist/esm/components/dropdown/{dropdown.stories.js → Dropdown.stories.js} +0 -0
- /package/dist/esm/components/dropdown/{dropdown.stories.js.map → Dropdown.stories.js.map} +0 -0
|
@@ -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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"}
|
|
File without changes
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
//# sourceMappingURL=field.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"field.js","sourceRoot":"","sources":["../../../src/interfaces/field.ts"],"names":[],"mappings":""}
|
package/dist/esm/test/setup.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/dist/esm/test/setup.js
DELETED
|
@@ -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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"}
|
package/dist/esm/test/utils.d.ts
DELETED
|
@@ -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>;
|