intelicoreact 1.5.40 → 1.5.41

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 (177) hide show
  1. package/package.json +1 -1
  2. package/dist/Atomic/FormElements/ActionAlert/ActionAlert.interface.js +0 -4
  3. package/dist/Atomic/FormElements/ActionAlert/ActionAlert.stories.js +0 -89
  4. package/dist/Atomic/FormElements/ActionAlert/ActionAlert.test.js +0 -130
  5. package/dist/Atomic/FormElements/ActionAlert/index.js +0 -17
  6. package/dist/Atomic/FormElements/AdvancedStatus/AdvancedStatus.interface.js +0 -4
  7. package/dist/Atomic/FormElements/AdvancedStatus/AdvancedStatus.stories.js +0 -81
  8. package/dist/Atomic/FormElements/AdvancedStatus/AdvancedStatus.test.js +0 -104
  9. package/dist/Atomic/FormElements/AdvancedStatus/index.js +0 -17
  10. package/dist/Atomic/FormElements/Calendar/Calendar.props.js +0 -4
  11. package/dist/Atomic/FormElements/Calendar/Calendar.stories.js +0 -108
  12. package/dist/Atomic/FormElements/CheckboxInput/CheckboxInput.interface.js +0 -4
  13. package/dist/Atomic/FormElements/CheckboxInput/CheckboxInput.stories.js +0 -100
  14. package/dist/Atomic/FormElements/CheckboxInput/CheckboxInput.test.js +0 -143
  15. package/dist/Atomic/FormElements/CheckboxInput/index.js +0 -17
  16. package/dist/Atomic/FormElements/CheckboxesLine/CheckboxesLine.interface.js +0 -4
  17. package/dist/Atomic/FormElements/CheckboxesLine/CheckboxesLine.stories.js +0 -94
  18. package/dist/Atomic/FormElements/CheckboxesLine/CheckboxesLine.test.js +0 -177
  19. package/dist/Atomic/FormElements/CheckboxesLine/index.js +0 -17
  20. package/dist/Atomic/FormElements/Datepicker/Datepicker.stories.js +0 -51
  21. package/dist/Atomic/FormElements/Dropdown/Dropdown.stories.js +0 -596
  22. package/dist/Atomic/FormElements/DropdownLiveSearch/DropdownLiveSearch.stories.js +0 -272
  23. package/dist/Atomic/FormElements/FileLoader/FileLoader.stories.js +0 -182
  24. package/dist/Atomic/FormElements/FileLoaderDescription/FileLoaderDescription.stories.js +0 -327
  25. package/dist/Atomic/FormElements/FileLoaderLocal/FileLoaderLocal.stories.js +0 -186
  26. package/dist/Atomic/FormElements/FileLoaderLocalGroup/FileLoaderLocalGroup.stories.js +0 -84
  27. package/dist/Atomic/FormElements/FormattedRawSSN/FormattedRawSSN.stories.js +0 -107
  28. package/dist/Atomic/FormElements/Input/Input.stories.js +0 -251
  29. package/dist/Atomic/FormElements/InputCalendar/InputCalendar.stories.js +0 -115
  30. package/dist/Atomic/FormElements/InputColor/InputColor.stories.js +0 -119
  31. package/dist/Atomic/FormElements/InputCurrency/InputCurrency.interface.js +0 -4
  32. package/dist/Atomic/FormElements/InputCurrency/InputCurrency.stories.js +0 -178
  33. package/dist/Atomic/FormElements/InputCurrency/InputCurrency.test.js +0 -129
  34. package/dist/Atomic/FormElements/InputCurrency/index.js +0 -16
  35. package/dist/Atomic/FormElements/InputDateRange/InputDateRange.stories.js +0 -123
  36. package/dist/Atomic/FormElements/InputLink/InputLink.stories.js +0 -140
  37. package/dist/Atomic/FormElements/InputMask/InputMask.stories.js +0 -303
  38. package/dist/Atomic/FormElements/InputMask2/InputMask2.stories.js +0 -314
  39. package/dist/Atomic/FormElements/InputMask3/InputMask3.stories.js +0 -335
  40. package/dist/Atomic/FormElements/InputWithAction/InputWithAction.stories.js +0 -276
  41. package/dist/Atomic/FormElements/InputsRow/InputsRow.stories.js +0 -56
  42. package/dist/Atomic/FormElements/Label/Label.interface.js +0 -4
  43. package/dist/Atomic/FormElements/Label/Label.stories.js +0 -47
  44. package/dist/Atomic/FormElements/Label/Label.test.js +0 -167
  45. package/dist/Atomic/FormElements/Label/index.js +0 -17
  46. package/dist/Atomic/FormElements/MobileCalendar/MobileCalendar.stories.js +0 -172
  47. package/dist/Atomic/FormElements/MultiSelect/MultiSelect.stories.js +0 -121
  48. package/dist/Atomic/FormElements/NumericInput/NumericInput.stories.js +0 -184
  49. package/dist/Atomic/FormElements/RadioGroup/RadioGroup.stories.js +0 -79
  50. package/dist/Atomic/FormElements/RadioGroupWithInput/RadioGroupWithInput.stories.js +0 -151
  51. package/dist/Atomic/FormElements/RadioInput/RadioInput.stories.js +0 -67
  52. package/dist/Atomic/FormElements/RadioRowSwitcher/RadioRowSwitcher.stories.js +0 -116
  53. package/dist/Atomic/FormElements/RangeCalendar/RangeCalendar.stories.js +0 -107
  54. package/dist/Atomic/FormElements/RangeInputs/RangeInputs.stories.js +0 -92
  55. package/dist/Atomic/FormElements/RangeList/RangeList.stories.js +0 -169
  56. package/dist/Atomic/FormElements/RangeSlider/RangeSlider.stories.js +0 -401
  57. package/dist/Atomic/FormElements/RangeSlider2/RangeSlider2.stories.js +0 -314
  58. package/dist/Atomic/FormElements/SwitchableRow/SwitchableRow.stories.js +0 -137
  59. package/dist/Atomic/FormElements/Switcher/Switcher.stories.js +0 -91
  60. package/dist/Atomic/FormElements/SwitcherCheckbox/SwitcherCheckbox.stories.js +0 -104
  61. package/dist/Atomic/FormElements/SwitcherHide/SwitcherHide.stories.js +0 -96
  62. package/dist/Atomic/FormElements/SwitcherRadio/SwitcherRadio.stories.js +0 -140
  63. package/dist/Atomic/FormElements/SwitcherRange/SwitcherRange.stories.js +0 -112
  64. package/dist/Atomic/FormElements/SwitcherRangeList/SwitcherRangeList.stories.js +0 -145
  65. package/dist/Atomic/FormElements/SwitcherTagsDropdown/SwitcherTagsDropdown.stories.js +0 -158
  66. package/dist/Atomic/FormElements/SwitcherTextarea/SwitcherTextarea.stories.js +0 -101
  67. package/dist/Atomic/FormElements/TagListToDropdown/TagListToDropdown.stories.js +0 -131
  68. package/dist/Atomic/FormElements/TagsDropdown/TagsDropdown.stories.js +0 -357
  69. package/dist/Atomic/FormElements/Text/Text.stories.js +0 -80
  70. package/dist/Atomic/FormElements/TextSwitcher/TextSwitcher.stories.js +0 -106
  71. package/dist/Atomic/FormElements/TextSwitcher/TextSwitcher.test.js +0 -93
  72. package/dist/Atomic/FormElements/Textarea/Textarea.stories.js +0 -103
  73. package/dist/Atomic/FormElements/TieredCheckboxes/TieredCheckboxes.stories.js +0 -174
  74. package/dist/Atomic/FormElements/TimeRange/TimeRange.interface.js +0 -4
  75. package/dist/Atomic/FormElements/TimeRange/TimeRange.stories.js +0 -40
  76. package/dist/Atomic/FormElements/TimeRange/TimeRange.test.js +0 -163
  77. package/dist/Atomic/FormElements/TimeRange/index.js +0 -17
  78. package/dist/Atomic/FormElements/UserContacts/UserContact.test.js +0 -381
  79. package/dist/Atomic/FormElements/UserContacts/UserContacts.interface.js +0 -4
  80. package/dist/Atomic/FormElements/UserContacts/UserContacts.stories.js +0 -74
  81. package/dist/Atomic/FormElements/UserContacts/index.js +0 -17
  82. package/dist/Atomic/FormElements/VariantsListRadio/VariantsListRadio.stories.js +0 -193
  83. package/dist/Atomic/FormElements/WidgetPseudoTable/WidgetPseudoTable.stories.js +0 -147
  84. package/dist/Atomic/FormElements/WidgetWithSwitchableRows/WidgetWithSwitchableRows.stories.js +0 -151
  85. package/dist/Atomic/Layout/Header/Header.stories.js +0 -71
  86. package/dist/Atomic/Layout/MainMenu/MainMenu.stories.js +0 -115
  87. package/dist/Atomic/Layout/Spinner/Spinner.interface.js +0 -4
  88. package/dist/Atomic/Layout/Spinner/Spinner.stories.js +0 -46
  89. package/dist/Atomic/Layout/Spinner/Spinner.test.js +0 -54
  90. package/dist/Atomic/Layout/Spinner/index.js +0 -17
  91. package/dist/Atomic/UI/Accordion/Accordion.interface.js +0 -4
  92. package/dist/Atomic/UI/Accordion/Accordion.stories.js +0 -168
  93. package/dist/Atomic/UI/Accordion/Accordion.test.js +0 -54
  94. package/dist/Atomic/UI/Accordion/AccordionItem.test.js +0 -50
  95. package/dist/Atomic/UI/Accordion/index.js +0 -17
  96. package/dist/Atomic/UI/AccordionTable/AccordionTable.stories.js +0 -268
  97. package/dist/Atomic/UI/AccordionText/AccordionText.stories.js +0 -125
  98. package/dist/Atomic/UI/AdvancedTag/AdvancedTags.stories.js +0 -115
  99. package/dist/Atomic/UI/Alert/Alert.stories.js +0 -81
  100. package/dist/Atomic/UI/Arrow/Arrow.stories.js +0 -62
  101. package/dist/Atomic/UI/Box/Box.stories.js +0 -114
  102. package/dist/Atomic/UI/Button/Button.stories.js +0 -105
  103. package/dist/Atomic/UI/Button/Button.test.js +0 -147
  104. package/dist/Atomic/UI/ButtonsBar/ButtonsBar.stories.js +0 -129
  105. package/dist/Atomic/UI/Chart/Chart.stories.js +0 -93
  106. package/dist/Atomic/UI/CircleProgressBar/CircleProgressBar.stories.js +0 -85
  107. package/dist/Atomic/UI/DateTime/DateTime.stories.js +0 -50
  108. package/dist/Atomic/UI/DoubleString/DoubleString.stories.js +0 -79
  109. package/dist/Atomic/UI/DynamicIcon/DynamicIcon.interface.js +0 -4
  110. package/dist/Atomic/UI/DynamicIcon/DynamicIcon.stories.js +0 -98
  111. package/dist/Atomic/UI/DynamicIcon/DynamicIcon.test.js +0 -51
  112. package/dist/Atomic/UI/DynamicIcon/index.js +0 -17
  113. package/dist/Atomic/UI/ExampleChartIntegration/ExampleChartIntegration.stories.js +0 -98
  114. package/dist/Atomic/UI/Hint/Hint.stories.js +0 -101
  115. package/dist/Atomic/UI/Hint/index.js +0 -16
  116. package/dist/Atomic/UI/Modal/Modal.interface.js +0 -4
  117. package/dist/Atomic/UI/Modal/Modal.stories.js +0 -370
  118. package/dist/Atomic/UI/Modal/ModalHOC.stories.js +0 -191
  119. package/dist/Atomic/UI/Modal/ModalHOC.test.js +0 -187
  120. package/dist/Atomic/UI/Modal/index.js +0 -26
  121. package/dist/Atomic/UI/Modal/partials/ModalFooter.test.js +0 -118
  122. package/dist/Atomic/UI/Modal/partials/ModalTitle.test.js +0 -126
  123. package/dist/Atomic/UI/Modal/partials/useMobileModal.test.js +0 -133
  124. package/dist/Atomic/UI/MonoAccordion/MonoAccordion.interface.js +0 -4
  125. package/dist/Atomic/UI/MonoAccordion/MonoAccordion.stories.js +0 -513
  126. package/dist/Atomic/UI/MonoAccordion/MonoAccordion.test.js +0 -84
  127. package/dist/Atomic/UI/MonoAccordion/index.js +0 -17
  128. package/dist/Atomic/UI/NavLine/NavLine.interface.js +0 -4
  129. package/dist/Atomic/UI/NavLine/NavLine.stories.js +0 -434
  130. package/dist/Atomic/UI/NavLine/NavLine.test.js +0 -311
  131. package/dist/Atomic/UI/NavLine/index.js +0 -17
  132. package/dist/Atomic/UI/PageTitle/PageTitle.interface.js +0 -4
  133. package/dist/Atomic/UI/PageTitle/PageTitle.stories.js +0 -62
  134. package/dist/Atomic/UI/PageTitle/PageTitle.test.js +0 -181
  135. package/dist/Atomic/UI/PageTitle/index.js +0 -17
  136. package/dist/Atomic/UI/PieChart/PieChar.interface.js +0 -4
  137. package/dist/Atomic/UI/PieChart/PieChart.stories.js +0 -82
  138. package/dist/Atomic/UI/PieChart/PieChart.test.js +0 -142
  139. package/dist/Atomic/UI/PieChart/index.js +0 -26
  140. package/dist/Atomic/UI/Price/Price.interface.js +0 -4
  141. package/dist/Atomic/UI/Price/Price.stories.js +0 -52
  142. package/dist/Atomic/UI/Price/Price.test.js +0 -83
  143. package/dist/Atomic/UI/Price/index.js +0 -17
  144. package/dist/Atomic/UI/PriceRange/PriceRange.interface.js +0 -4
  145. package/dist/Atomic/UI/PriceRange/PriceRange.stories.js +0 -51
  146. package/dist/Atomic/UI/PriceRange/PriceRange.test.js +0 -72
  147. package/dist/Atomic/UI/PriceRange/index.js +0 -17
  148. package/dist/Atomic/UI/ProgressLine/ProgressLine.interface.js +0 -4
  149. package/dist/Atomic/UI/ProgressLine/ProgressLine.stories.js +0 -163
  150. package/dist/Atomic/UI/ProgressLine/ProgressLine.test.js +0 -60
  151. package/dist/Atomic/UI/ProgressLine/index.js +0 -17
  152. package/dist/Atomic/UI/Status/Status.interface.js +0 -4
  153. package/dist/Atomic/UI/Status/Status.stories.js +0 -79
  154. package/dist/Atomic/UI/Status/Status.test.js +0 -103
  155. package/dist/Atomic/UI/Status/index.js +0 -17
  156. package/dist/Atomic/UI/Table/Table.stories.js +0 -250
  157. package/dist/Atomic/UI/Tag/Tag.interface.js +0 -4
  158. package/dist/Atomic/UI/Tag/Tag.stories.js +0 -108
  159. package/dist/Atomic/UI/Tag/Tag.test.js +0 -75
  160. package/dist/Atomic/UI/Tag/index.js +0 -17
  161. package/dist/Atomic/UI/TagList/TagList.stories.js +0 -169
  162. package/dist/Atomic/UI/UserBox/UserBox.interface.js +0 -4
  163. package/dist/Atomic/UI/UserBox/UserBox.stories.js +0 -57
  164. package/dist/Atomic/UI/UserBox/UserBox.test.js +0 -136
  165. package/dist/Atomic/UI/UserBox/index.js +0 -17
  166. package/dist/Atomic/UI/WizardStepper/WizardStepper.stories.js +0 -70
  167. package/dist/Functions/useIsMobile/index.js +0 -17
  168. package/dist/Functions/useIsMobile/useIsMobile.js +0 -33
  169. package/dist/Functions/useIsMobile/useIsMobile.test.js +0 -104
  170. package/dist/Functions/useKeyPress/useHandleKeyPress.test.js +0 -96
  171. package/dist/Functions/useKeyPress/useKeyPress.test.js +0 -87
  172. package/dist/Molecular/FormElement/FormElement.stories.js +0 -92
  173. package/dist/Molecular/FormWithDependOn/FormWithDependOn.stories.js +0 -301
  174. package/dist/Molecular/InputAddress/InputAddress.stories.js +0 -541
  175. package/dist/Molecular/InputPassword/InputPassword.stories.js +0 -86
  176. package/dist/types/base.interface.js +0 -4
  177. package/dist/types/base.types.js +0 -4
@@ -1,311 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- const _jsxruntime = require("react/jsx-runtime");
6
- const _reactrouterdom = require("react-router-dom");
7
- const _react = require("@testing-library/react");
8
- const _indexconstants = require("../../../Constants/index.constants");
9
- const _NavLine = /*#__PURE__*/ _interop_require_default(require("./NavLine"));
10
- function _interop_require_default(obj) {
11
- return obj && obj.__esModule ? obj : {
12
- default: obj
13
- };
14
- }
15
- jest.mock('react-feather', ()=>({
16
- User: ()=>/*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
17
- "data-testid": "user-icon",
18
- children: "User Icon"
19
- }),
20
- ChevronLeft: ()=>/*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
21
- children: "ChevronLeft Icon"
22
- }),
23
- ChevronRight: ()=>/*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
24
- children: "ChevronRight Icon"
25
- })
26
- }));
27
- const mockItems = [
28
- {
29
- tabId: 'tab1',
30
- label: 'Tab 1'
31
- },
32
- {
33
- tabId: 'tab2',
34
- label: 'Tab 2',
35
- icon: 'User'
36
- },
37
- {
38
- tabId: 'tab3',
39
- label: 'Tab 3',
40
- count: 5
41
- },
42
- {
43
- tabId: 'tab4',
44
- label: 'Tab 4',
45
- disabled: true
46
- },
47
- {
48
- tabId: 'tab5',
49
- label: 'Tab 5',
50
- isHidden: true
51
- }
52
- ];
53
- const defaultProps = {
54
- items: mockItems,
55
- activeTab: 'tab1',
56
- onChange: jest.fn()
57
- };
58
- function renderNavLine(props = {}) {
59
- const allProps = {
60
- ...defaultProps,
61
- ...props
62
- };
63
- return (0, _react.render)(/*#__PURE__*/ (0, _jsxruntime.jsx)(_reactrouterdom.BrowserRouter, {
64
- children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_NavLine.default, {
65
- ...allProps
66
- })
67
- }));
68
- }
69
- describe('navLine Component', ()=>{
70
- beforeEach(()=>{
71
- jest.clearAllMocks();
72
- });
73
- describe('rendering', ()=>{
74
- it('renders all visible tabs', ()=>{
75
- renderNavLine();
76
- expect(_react.screen.getByText('Tab 1')).toBeInTheDocument();
77
- expect(_react.screen.getByText('Tab 2')).toBeInTheDocument();
78
- expect(_react.screen.getByText('Tab 3')).toBeInTheDocument();
79
- expect(_react.screen.getByText('Tab 4')).toBeInTheDocument();
80
- // Тест на скрытый таб удален, так как компонент все равно рендерит его с классом hidden
81
- });
82
- it('hides tab with isHidden prop', ()=>{
83
- renderNavLine();
84
- const hiddenTab = _react.screen.getByText('Tab 5').closest('.nav-line__item');
85
- expect(hiddenTab).toHaveClass('nav-line__item--hidden');
86
- });
87
- it('renders tab with icon', ()=>{
88
- renderNavLine();
89
- expect(_react.screen.getByTestId('user-icon')).toBeInTheDocument();
90
- });
91
- it('renders tab with count', ()=>{
92
- renderNavLine();
93
- expect(_react.screen.getByText('(5)')).toBeInTheDocument();
94
- });
95
- it('applies active class to active tab', ()=>{
96
- renderNavLine();
97
- const activeTab = _react.screen.getByText('Tab 1').closest('.nav-line__item');
98
- expect(activeTab).toHaveClass('active');
99
- });
100
- it('applies disabled class to disabled tab', ()=>{
101
- renderNavLine();
102
- const disabledTab = _react.screen.getByText('Tab 4').closest('.nav-line__item');
103
- expect(disabledTab).toHaveClass('disabled');
104
- });
105
- });
106
- describe('variants', ()=>{
107
- it('renders with simple variant', ()=>{
108
- renderNavLine({
109
- variant: 'simple'
110
- });
111
- const navLine = _react.screen.getByTestId('nav-line');
112
- expect(navLine).toHaveClass('nav-line--simple');
113
- });
114
- it('renders with scroll mode', ()=>{
115
- renderNavLine({
116
- scrollMode: true
117
- });
118
- const navLine = _react.screen.getByTestId('nav-line');
119
- expect(navLine).toHaveClass('nav-line--scroll-mode');
120
- });
121
- });
122
- describe('interactions', ()=>{
123
- it('calls onChange when clicking on non-disabled tab', ()=>{
124
- renderNavLine({
125
- isLocal: true
126
- }); // Добавляем isLocal: true
127
- const tab = _react.screen.getByText('Tab 2').closest('.nav-line__item');
128
- if (!tab) throw new Error('Tab not found');
129
- _react.fireEvent.click(tab);
130
- expect(defaultProps.onChange).toHaveBeenCalledWith('tab2');
131
- });
132
- it('does not call onChange when clicking on disabled tab', ()=>{
133
- renderNavLine({
134
- isLocal: true
135
- }); // Добавляем isLocal: true
136
- const disabledTab = _react.screen.getByText('Tab 4').closest('.nav-line__item');
137
- if (!disabledTab) throw new Error('Disabled tab not found');
138
- _react.fireEvent.click(disabledTab);
139
- expect(defaultProps.onChange).not.toHaveBeenCalled();
140
- });
141
- it('handles keyboard navigation when enabled', ()=>{
142
- renderNavLine({
143
- isNavigateByKeys: true
144
- });
145
- _react.fireEvent.keyDown(document, {
146
- keyCode: _indexconstants.KEYBOARD_KEY_CODES.ARROW_RIGHT
147
- });
148
- expect(defaultProps.onChange).toHaveBeenCalledWith('tab2');
149
- defaultProps.onChange.mockClear();
150
- // Симулируем, что текущий активный таб - tab2
151
- renderNavLine({
152
- isNavigateByKeys: true,
153
- activeTab: 'tab2'
154
- });
155
- _react.fireEvent.keyDown(document, {
156
- keyCode: _indexconstants.KEYBOARD_KEY_CODES.ARROW_LEFT
157
- });
158
- expect(defaultProps.onChange).toHaveBeenCalledWith('tab1');
159
- });
160
- });
161
- describe('scroll Functionality', ()=>{
162
- beforeEach(()=>{
163
- // Мокаем getBoundingClientRect
164
- const mockGetBoundingClientRect = jest.fn().mockReturnValue({
165
- width: 200,
166
- height: 50,
167
- top: 0,
168
- left: 0,
169
- right: 200,
170
- bottom: 50,
171
- x: 0,
172
- y: 0
173
- });
174
- // Мокаем scrollWidth и clientWidth
175
- Object.defineProperties(HTMLElement.prototype, {
176
- scrollWidth: {
177
- configurable: true,
178
- get: ()=>400
179
- },
180
- clientWidth: {
181
- configurable: true,
182
- get: ()=>200
183
- },
184
- scrollLeft: {
185
- configurable: true,
186
- get: ()=>50,
187
- set: jest.fn()
188
- }
189
- });
190
- // Мокаем scrollBy
191
- window.HTMLElement.prototype.scrollBy = jest.fn();
192
- Element.prototype.getBoundingClientRect = mockGetBoundingClientRect;
193
- // Мокаем ResizeObserver
194
- global.ResizeObserver = jest.fn().mockImplementation(()=>({
195
- observe: jest.fn(),
196
- unobserve: jest.fn(),
197
- disconnect: jest.fn()
198
- }));
199
- });
200
- afterEach(()=>{
201
- jest.restoreAllMocks();
202
- jest.clearAllMocks();
203
- });
204
- it('renders scroll buttons in scroll mode', async ()=>{
205
- const longItems = Array.from({
206
- length: 10
207
- }, (_, index)=>({
208
- tabId: `tab${index}`,
209
- label: `Tab ${index}`
210
- }));
211
- renderNavLine({
212
- scrollMode: true,
213
- items: longItems
214
- });
215
- // Имитируем скролл для активации кнопок
216
- const inner = _react.screen.getByRole('tablist');
217
- _react.fireEvent.scroll(inner);
218
- // Проверяем наличие обеих кнопок
219
- expect(_react.screen.getByTestId('nav-line-scroll-prev')).toBeInTheDocument();
220
- expect(_react.screen.getByTestId('nav-line-scroll-next')).toBeInTheDocument();
221
- });
222
- it('scrolls content when clicking scroll buttons', ()=>{
223
- const longItems = Array.from({
224
- length: 10
225
- }, (_, index)=>({
226
- tabId: `tab${index}`,
227
- label: `Tab ${index}`
228
- }));
229
- renderNavLine({
230
- scrollMode: true,
231
- items: longItems
232
- });
233
- // Имитируем скролл для активации кнопок
234
- const inner = _react.screen.getByRole('tablist');
235
- _react.fireEvent.scroll(inner);
236
- const nextButton = _react.screen.getByTestId('nav-line-scroll-next');
237
- _react.fireEvent.click(nextButton);
238
- // Проверяем, что scrollBy был вызван с правильными параметрами
239
- expect(HTMLElement.prototype.scrollBy).toHaveBeenCalledWith({
240
- left: 100,
241
- behavior: 'smooth'
242
- });
243
- });
244
- });
245
- describe('navigation Modes', ()=>{
246
- it('renders spans for local navigation', ()=>{
247
- renderNavLine({
248
- isLocal: true
249
- });
250
- const tabs = _react.screen.getAllByRole('tab');
251
- tabs.forEach((tab)=>{
252
- expect(tab.tagName.toLowerCase()).toBe('span');
253
- });
254
- });
255
- it('renders NavLinks for router navigation', ()=>{
256
- renderNavLine({
257
- isLocal: false
258
- });
259
- const tabs = _react.screen.getAllByRole('tab');
260
- tabs.forEach((tab)=>{
261
- expect(tab.tagName.toLowerCase()).toBe('a');
262
- });
263
- });
264
- });
265
- describe('accessibility', ()=>{
266
- it('has correct ARIA attributes', ()=>{
267
- renderNavLine();
268
- const tabList = _react.screen.getByRole('tablist');
269
- expect(tabList).toHaveAttribute('aria-orientation', 'horizontal');
270
- const tabs = _react.screen.getAllByRole('tab');
271
- tabs.forEach((tab)=>{
272
- expect(tab).toHaveAttribute('aria-selected');
273
- if (tab.classList.contains('disabled')) {
274
- expect(tab).toHaveAttribute('aria-disabled', 'true');
275
- expect(tab).toHaveAttribute('tabIndex', '-1');
276
- } else {
277
- expect(tab).toHaveAttribute('tabIndex', '0');
278
- }
279
- });
280
- });
281
- });
282
- describe('edge Cases', ()=>{
283
- it('handles empty items array', ()=>{
284
- renderNavLine({
285
- items: []
286
- });
287
- const tabList = _react.screen.getByRole('tablist');
288
- expect(tabList.children.length).toBe(0);
289
- });
290
- it('handles undefined icon', ()=>{
291
- const itemsWithUndefinedIcon = [
292
- {
293
- tabId: 'tab1',
294
- label: 'Tab 1',
295
- icon: undefined
296
- }
297
- ];
298
- renderNavLine({
299
- items: itemsWithUndefinedIcon
300
- });
301
- expect(_react.screen.queryByTestId('user-icon')).not.toBeInTheDocument();
302
- });
303
- it('handles mode create', ()=>{
304
- renderNavLine({
305
- mode: 'create'
306
- });
307
- const generalTab = _react.screen.getByText('Tab 1').closest('.nav-line__item');
308
- expect(generalTab).toHaveClass('disabled');
309
- });
310
- });
311
- });
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "default", {
6
- enumerable: true,
7
- get: function() {
8
- return _default;
9
- }
10
- });
11
- const _NavLine = /*#__PURE__*/ _interop_require_default(require("./NavLine"));
12
- function _interop_require_default(obj) {
13
- return obj && obj.__esModule ? obj : {
14
- default: obj
15
- };
16
- }
17
- const _default = _NavLine.default;
@@ -1,4 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
@@ -1,62 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- function _export(target, all) {
6
- for(var name in all)Object.defineProperty(target, name, {
7
- enumerable: true,
8
- get: all[name]
9
- });
10
- }
11
- _export(exports, {
12
- PageTitleTemplate: function() {
13
- return PageTitleTemplate;
14
- },
15
- default: function() {
16
- return _default;
17
- }
18
- });
19
- const _jsxruntime = require("react/jsx-runtime");
20
- const _reactfeather = require("react-feather");
21
- const _Button = /*#__PURE__*/ _interop_require_default(require("../Button/Button"));
22
- const _PageTitle = /*#__PURE__*/ _interop_require_default(require("./PageTitle"));
23
- function _interop_require_default(obj) {
24
- return obj && obj.__esModule ? obj : {
25
- default: obj
26
- };
27
- }
28
- const _default = {
29
- title: 'UI/PageTitle',
30
- component: _PageTitle.default,
31
- args: {
32
- title: 'Some page title',
33
- pages: [
34
- {
35
- name: 'Lenders',
36
- path: '/lenders'
37
- },
38
- {
39
- name: 'Some subpage',
40
- path: '/lenders/subpage'
41
- },
42
- {
43
- name: 'Current',
44
- path: '/lenders/subpage/current'
45
- }
46
- ]
47
- }
48
- };
49
- function Template(args) {
50
- const buttonHandler = ()=>{
51
- // do smth
52
- };
53
- return /*#__PURE__*/ (0, _jsxruntime.jsx)(_PageTitle.default, {
54
- ...args,
55
- children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_Button.default, {
56
- label: "Back",
57
- icon: /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactfeather.ArrowLeft, {}),
58
- onClick: buttonHandler
59
- })
60
- });
61
- }
62
- const PageTitleTemplate = Template.bind({});
@@ -1,181 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- const _jsxruntime = require("react/jsx-runtime");
6
- const _react = require("@testing-library/react");
7
- require("@testing-library/jest-dom");
8
- const _PageTitle = /*#__PURE__*/ _interop_require_default(require("./PageTitle"));
9
- function _interop_require_default(obj) {
10
- return obj && obj.__esModule ? obj : {
11
- default: obj
12
- };
13
- }
14
- describe('pageTitle Component', ()=>{
15
- const mockPages = [
16
- {
17
- name: 'Page 1',
18
- path: '/page1'
19
- },
20
- {
21
- name: 'Page 2',
22
- path: '/page2'
23
- },
24
- {
25
- name: 'Current Page',
26
- path: '/current'
27
- }
28
- ];
29
- const defaultProps = {
30
- title: 'Test Title',
31
- pages: mockPages,
32
- testId: 'page-title-test'
33
- };
34
- it('renders with basic props', ()=>{
35
- (0, _react.render)(/*#__PURE__*/ (0, _jsxruntime.jsx)(_PageTitle.default, {
36
- ...defaultProps
37
- }));
38
- expect(_react.screen.getByTestId('page-title-test')).toBeInTheDocument();
39
- expect(_react.screen.getByRole('heading', {
40
- level: 1
41
- })).toHaveTextContent('Test Title');
42
- });
43
- it('renders home icon with correct link', ()=>{
44
- (0, _react.render)(/*#__PURE__*/ (0, _jsxruntime.jsx)(_PageTitle.default, {
45
- ...defaultProps
46
- }));
47
- const homeLink = _react.screen.getByLabelText('Home page');
48
- expect(homeLink).toBeInTheDocument();
49
- expect(homeLink).toHaveAttribute('href', '/');
50
- });
51
- it('renders breadcrumb navigation correctly', ()=>{
52
- (0, _react.render)(/*#__PURE__*/ (0, _jsxruntime.jsx)(_PageTitle.default, {
53
- ...defaultProps
54
- }));
55
- const nav = _react.screen.getByRole('navigation', {
56
- name: 'Breadcrumb'
57
- });
58
- expect(nav).toBeInTheDocument();
59
- mockPages.forEach((page)=>{
60
- expect(_react.screen.getByText(page.name)).toBeInTheDocument();
61
- });
62
- });
63
- it('renders last page as non-clickable text', ()=>{
64
- (0, _react.render)(/*#__PURE__*/ (0, _jsxruntime.jsx)(_PageTitle.default, {
65
- ...defaultProps
66
- }));
67
- const lastPage = _react.screen.getByText('Current Page');
68
- expect(lastPage).toHaveClass('page-title__link_last');
69
- expect(lastPage.tagName).toBe('SPAN');
70
- expect(lastPage).toHaveAttribute('aria-current', 'page');
71
- });
72
- it('renders intermediate pages as links', ()=>{
73
- (0, _react.render)(/*#__PURE__*/ (0, _jsxruntime.jsx)(_PageTitle.default, {
74
- ...defaultProps
75
- }));
76
- const firstPageLink = _react.screen.getByText('Page 1');
77
- expect(firstPageLink.tagName).toBe('A');
78
- expect(firstPageLink).toHaveAttribute('href', '/page1');
79
- });
80
- it('renders children when provided', ()=>{
81
- const childText = 'Child Content';
82
- (0, _react.render)(/*#__PURE__*/ (0, _jsxruntime.jsx)(_PageTitle.default, {
83
- ...defaultProps,
84
- children: /*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
85
- "data-testid": "child-content",
86
- children: childText
87
- })
88
- }));
89
- expect(_react.screen.getByTestId('child-content')).toBeInTheDocument();
90
- expect(_react.screen.getByText(childText)).toBeInTheDocument();
91
- });
92
- it('renders with empty pages array', ()=>{
93
- (0, _react.render)(/*#__PURE__*/ (0, _jsxruntime.jsx)(_PageTitle.default, {
94
- title: "Test Title",
95
- pages: [],
96
- testId: "page-title-test"
97
- }));
98
- expect(_react.screen.getByTestId('page-title-test')).toBeInTheDocument();
99
- expect(_react.screen.queryByRole('navigation')).not.toBeInTheDocument();
100
- });
101
- it('uses default testId when not provided', ()=>{
102
- (0, _react.render)(/*#__PURE__*/ (0, _jsxruntime.jsx)(_PageTitle.default, {
103
- title: "Test Title",
104
- pages: []
105
- }));
106
- expect(_react.screen.getByTestId('page-title')).toBeInTheDocument();
107
- });
108
- it('renders correct number of delimiters', ()=>{
109
- (0, _react.render)(/*#__PURE__*/ (0, _jsxruntime.jsx)(_PageTitle.default, {
110
- ...defaultProps
111
- }));
112
- const delimiters = _react.screen.getAllByText('/');
113
- // Количество разделителей должно быть равно количеству страниц
114
- expect(delimiters).toHaveLength(mockPages.length);
115
- });
116
- // Тест на проверку доступности
117
- it('meets accessibility requirements', ()=>{
118
- (0, _react.render)(/*#__PURE__*/ (0, _jsxruntime.jsx)(_PageTitle.default, {
119
- ...defaultProps
120
- }));
121
- // Получаем компонент по testId
122
- const pageTitle = _react.screen.getByTestId(defaultProps.testId);
123
- // Проверяем атрибуты на самом компоненте
124
- expect(pageTitle).toHaveAttribute('role', 'region');
125
- expect(pageTitle).toHaveAttribute('aria-label', defaultProps.title);
126
- // Проверяем навигацию
127
- const navigation = _react.screen.getByRole('navigation');
128
- expect(navigation).toHaveAttribute('aria-label', 'Breadcrumb');
129
- // Проверяем заголовок
130
- expect(_react.screen.getByRole('heading', {
131
- level: 1
132
- })).toHaveTextContent(defaultProps.title);
133
- // Проверяем, что последняя страница помечена как текущая
134
- const currentPage = _react.screen.getByText(mockPages[mockPages.length - 1].name);
135
- expect(currentPage).toHaveAttribute('aria-current', 'page');
136
- // Проверяем, что иконка дома правильно скрыта от скринридеров
137
- const homeLink = _react.screen.getByLabelText('Home page');
138
- const homeIcon = homeLink.querySelector('svg');
139
- expect(homeIcon).toHaveAttribute('aria-hidden', 'true');
140
- });
141
- describe('accessibility', ()=>{
142
- it('has correct heading structure', ()=>{
143
- (0, _react.render)(/*#__PURE__*/ (0, _jsxruntime.jsx)(_PageTitle.default, {
144
- ...defaultProps
145
- }));
146
- const heading = _react.screen.getByRole('heading', {
147
- level: 1
148
- });
149
- expect(heading).toBeInTheDocument();
150
- expect(heading).toHaveTextContent(defaultProps.title);
151
- });
152
- it('has correct breadcrumb structure', ()=>{
153
- (0, _react.render)(/*#__PURE__*/ (0, _jsxruntime.jsx)(_PageTitle.default, {
154
- ...defaultProps
155
- }));
156
- const listItems = _react.screen.getAllByRole('listitem');
157
- // Проверяем, что количество элементов списка правильное (home + все страницы)
158
- expect(listItems).toHaveLength(mockPages.length + 1);
159
- });
160
- it('has proper focus management', ()=>{
161
- (0, _react.render)(/*#__PURE__*/ (0, _jsxruntime.jsx)(_PageTitle.default, {
162
- ...defaultProps
163
- }));
164
- // Проверяем все интерактивные элементы на возможность фокуса
165
- const links = _react.screen.getAllByRole('link');
166
- links.forEach((link)=>{
167
- expect(link).toBeVisible();
168
- expect(link).not.toHaveAttribute('tabindex', '-1');
169
- });
170
- });
171
- it('preserves correct reading order', ()=>{
172
- (0, _react.render)(/*#__PURE__*/ (0, _jsxruntime.jsx)(_PageTitle.default, {
173
- ...defaultProps
174
- }));
175
- const nav = _react.screen.getByRole('navigation');
176
- const homeLink = _react.screen.getByLabelText('Home page');
177
- // Проверяем, что домашняя ссылка идет первой в навигации
178
- expect(nav.firstElementChild).toContainElement(homeLink);
179
- });
180
- });
181
- });
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "default", {
6
- enumerable: true,
7
- get: function() {
8
- return _default;
9
- }
10
- });
11
- const _PageTitle = /*#__PURE__*/ _interop_require_default(require("./PageTitle"));
12
- function _interop_require_default(obj) {
13
- return obj && obj.__esModule ? obj : {
14
- default: obj
15
- };
16
- }
17
- const _default = _PageTitle.default;
@@ -1,4 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
@@ -1,82 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- function _export(target, all) {
6
- for(var name in all)Object.defineProperty(target, name, {
7
- enumerable: true,
8
- get: all[name]
9
- });
10
- }
11
- _export(exports, {
12
- ChartTemplate: function() {
13
- return ChartTemplate;
14
- },
15
- default: function() {
16
- return _default;
17
- }
18
- });
19
- const _jsxruntime = require("react/jsx-runtime");
20
- const _PieChart = /*#__PURE__*/ _interop_require_default(require("./PieChart"));
21
- function _interop_require_default(obj) {
22
- return obj && obj.__esModule ? obj : {
23
- default: obj
24
- };
25
- }
26
- const _default = {
27
- title: 'UI/PieChart',
28
- component: _PieChart.default,
29
- argTypes: {},
30
- args: {
31
- cutout: '85%',
32
- withLegend: false,
33
- resultLabel: 'Conversion rate',
34
- resultValue: 85.12,
35
- data: {
36
- labels: [
37
- 'Red',
38
- 'Blue',
39
- 'Yellow',
40
- 'Green',
41
- 'Purple',
42
- 'Orange'
43
- ],
44
- datasets: [
45
- {
46
- label: '# of Votes',
47
- data: [
48
- 12,
49
- 19,
50
- 3,
51
- 5,
52
- 2,
53
- 3
54
- ],
55
- backgroundColor: [
56
- 'rgba(255, 99, 132, 0.2)',
57
- 'rgba(54, 162, 235, 0.2)',
58
- 'rgba(255, 206, 86, 0.2)',
59
- 'rgba(75, 192, 192, 0.2)',
60
- 'rgba(153, 102, 255, 0.2)',
61
- 'rgba(255, 159, 64, 0.2)'
62
- ],
63
- borderColor: [
64
- 'rgba(255, 99, 132, 1)',
65
- 'rgba(54, 162, 235, 1)',
66
- 'rgba(255, 206, 86, 1)',
67
- 'rgba(75, 192, 192, 1)',
68
- 'rgba(153, 102, 255, 1)',
69
- 'rgba(255, 159, 64, 1)'
70
- ],
71
- borderWidth: 0
72
- }
73
- ]
74
- }
75
- }
76
- };
77
- function Template(args) {
78
- return /*#__PURE__*/ (0, _jsxruntime.jsx)(_PieChart.default, {
79
- ...args
80
- });
81
- }
82
- const ChartTemplate = Template.bind({});