@imposium-hub/components 2.14.7-0 → 2.14.7

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 (43) hide show
  1. package/package.json +1 -1
  2. package/dist/cjs/components/controlled-list/ControlledList.test.d.ts +0 -1
  3. package/dist/cjs/components/controlled-list/ControlledList.test.js +0 -427
  4. package/dist/cjs/components/controlled-list/ControlledList.test.js.map +0 -1
  5. package/dist/cjs/components/copy-prop-id-button/CopyPropIdButton.test.d.ts +0 -1
  6. package/dist/cjs/components/copy-prop-id-button/CopyPropIdButton.test.js +0 -495
  7. package/dist/cjs/components/copy-prop-id-button/CopyPropIdButton.test.js.map +0 -1
  8. package/dist/cjs/components/service-icon/ServiceIcon.test.d.ts +0 -0
  9. package/dist/cjs/components/service-icon/ServiceIcon.test.js +0 -1
  10. package/dist/cjs/components/service-icon/ServiceIcon.test.js.map +0 -1
  11. package/dist/cjs/components/tag/Tag.test.d.ts +0 -0
  12. package/dist/cjs/components/tag/Tag.test.js +0 -1
  13. package/dist/cjs/components/tag/Tag.test.js.map +0 -1
  14. package/dist/cjs/interfaces/field.d.ts +0 -0
  15. package/dist/cjs/interfaces/field.js +0 -1
  16. package/dist/cjs/interfaces/field.js.map +0 -1
  17. package/dist/cjs/utils/override.d.ts +0 -11
  18. package/dist/cjs/utils/override.js +0 -15
  19. package/dist/cjs/utils/override.js.map +0 -1
  20. package/dist/esm/components/controlled-list/ControlledList.test.d.ts +0 -1
  21. package/dist/esm/components/controlled-list/ControlledList.test.js +0 -400
  22. package/dist/esm/components/controlled-list/ControlledList.test.js.map +0 -1
  23. package/dist/esm/components/copy-prop-id-button/CopyPropIdButton.test.d.ts +0 -1
  24. package/dist/esm/components/copy-prop-id-button/CopyPropIdButton.test.js +0 -357
  25. package/dist/esm/components/copy-prop-id-button/CopyPropIdButton.test.js.map +0 -1
  26. package/dist/esm/components/service-icon/ServiceIcon.test.d.ts +0 -0
  27. package/dist/esm/components/service-icon/ServiceIcon.test.js +0 -1
  28. package/dist/esm/components/service-icon/ServiceIcon.test.js.map +0 -1
  29. package/dist/esm/components/tag/Tag.test.d.ts +0 -0
  30. package/dist/esm/components/tag/Tag.test.js +0 -1
  31. package/dist/esm/components/tag/Tag.test.js.map +0 -1
  32. package/dist/esm/interfaces/field.d.ts +0 -0
  33. package/dist/esm/interfaces/field.js +0 -1
  34. package/dist/esm/interfaces/field.js.map +0 -1
  35. package/dist/esm/utils/override.d.ts +0 -11
  36. package/dist/esm/utils/override.js +0 -9
  37. package/dist/esm/utils/override.js.map +0 -1
  38. /package/dist/cjs/components/dropdown/{dropdown.stories.d.ts → Dropdown.stories.d.ts} +0 -0
  39. /package/dist/cjs/components/dropdown/{dropdown.stories.js → Dropdown.stories.js} +0 -0
  40. /package/dist/cjs/components/dropdown/{dropdown.stories.js.map → Dropdown.stories.js.map} +0 -0
  41. /package/dist/esm/components/dropdown/{dropdown.stories.d.ts → Dropdown.stories.d.ts} +0 -0
  42. /package/dist/esm/components/dropdown/{dropdown.stories.js → Dropdown.stories.js} +0 -0
  43. /package/dist/esm/components/dropdown/{dropdown.stories.js.map → Dropdown.stories.js.map} +0 -0
@@ -1,400 +0,0 @@
1
- import { describe, it, expect, vi, beforeEach } from 'vitest';
2
- import React from 'react';
3
- import { render, fireEvent } from '@testing-library/react';
4
- // Mock Button component
5
- vi.mock('../button/Button', () => ({
6
- default: ({ children, style, color, onClick, ...props }) => (React.createElement("button", { "data-testid": 'mock-button', "data-style": style, "data-color": color, onClick: onClick, ...props }, children))
7
- }));
8
- // Mock icons
9
- vi.mock('../../constants/icons', () => ({
10
- ICON_BRACKET_CURLY: React.createElement("span", { "data-testid": 'icon-bracket-curly' }),
11
- ICON_CHECK: React.createElement("span", { "data-testid": 'icon-check' }, "\u2713"),
12
- ICON_TIMES: React.createElement("span", { "data-testid": 'icon-times' }, "\u00D7")
13
- }));
14
- import ControlledList from './ControlledList';
15
- const createMockProps = (overrides = {}) => ({
16
- items: [],
17
- removable: false,
18
- ...overrides
19
- });
20
- const renderComponent = (props = {}) => {
21
- const mockProps = createMockProps(props);
22
- return {
23
- ...render(React.createElement(ControlledList, { ...mockProps })),
24
- props: mockProps
25
- };
26
- };
27
- describe('ControlledList', () => {
28
- beforeEach(() => {
29
- vi.clearAllMocks();
30
- });
31
- it('renders with correct structure and CSS classes', () => {
32
- const { container } = renderComponent();
33
- const controlledList = container.querySelector('.controlled-list');
34
- expect(controlledList).toBeTruthy();
35
- });
36
- it('renders empty list when no items provided', () => {
37
- const { container } = renderComponent();
38
- const controlledList = container.querySelector('.controlled-list');
39
- expect(controlledList?.children.length).toBe(0);
40
- });
41
- it('renders empty list when items array is empty', () => {
42
- const { container } = renderComponent({ items: [] });
43
- const controlledList = container.querySelector('.controlled-list');
44
- expect(controlledList?.children.length).toBe(0);
45
- });
46
- describe('Text type rendering', () => {
47
- it('renders text items with preview format', () => {
48
- const { container, getByDisplayValue } = renderComponent({
49
- items: ['test text', 'another test'],
50
- type: 'text'
51
- });
52
- const items = container.querySelectorAll('.item');
53
- expect(items.length).toBe(2);
54
- expect(getByDisplayValue('{{ test text }}')).toBeTruthy();
55
- expect(getByDisplayValue('{{ another test }}')).toBeTruthy();
56
- });
57
- it('renders text items with PREVIEW NOT SET when item is empty', () => {
58
- const { container } = renderComponent({
59
- items: ['', null, undefined],
60
- type: 'text'
61
- });
62
- const notSetInputs = container.querySelectorAll('input[value="PREVIEW NOT SET"]');
63
- expect(notSetInputs.length).toBe(3);
64
- });
65
- it('renders readonly text inputs', () => {
66
- const { container } = renderComponent({
67
- items: ['test'],
68
- type: 'text'
69
- });
70
- const input = container.querySelector('input[type="text"]');
71
- expect(input?.getAttribute('readonly')).toBe('');
72
- });
73
- });
74
- describe('Number type rendering', () => {
75
- it('renders number items with preview format when multiplier provided', () => {
76
- const { getByDisplayValue } = renderComponent({
77
- items: [5, 10, 0],
78
- type: 'number',
79
- previewMultiplier: 1
80
- });
81
- expect(getByDisplayValue('{{ 5 }}')).toBeTruthy();
82
- expect(getByDisplayValue('{{ 10 }}')).toBeTruthy();
83
- expect(getByDisplayValue('{{ 0 }}')).toBeTruthy();
84
- });
85
- it('applies preview multiplier to number values', () => {
86
- const { getByDisplayValue } = renderComponent({
87
- items: [5, 10],
88
- type: 'number',
89
- previewMultiplier: 2
90
- });
91
- expect(getByDisplayValue('{{ 10 }}')).toBeTruthy();
92
- expect(getByDisplayValue('{{ 20 }}')).toBeTruthy();
93
- });
94
- it('handles zero multiplier correctly', () => {
95
- const { getByDisplayValue } = renderComponent({
96
- items: [5],
97
- type: 'number',
98
- previewMultiplier: 0
99
- });
100
- expect(getByDisplayValue('{{ 0 }}')).toBeTruthy();
101
- });
102
- it('handles undefined multiplier (results in NaN)', () => {
103
- const { getByDisplayValue } = renderComponent({
104
- items: [5],
105
- type: 'number'
106
- });
107
- expect(getByDisplayValue('{{ NaN }}')).toBeTruthy();
108
- });
109
- });
110
- describe('Textarea type rendering', () => {
111
- it('renders textarea items with correct classes', () => {
112
- const { container } = renderComponent({
113
- items: ['textarea content', 'more content'],
114
- type: 'textarea'
115
- });
116
- const items = container.querySelectorAll('.item.textarea.rta');
117
- expect(items.length).toBe(2);
118
- const textareas = container.querySelectorAll('textarea.rta__textarea');
119
- expect(textareas.length).toBe(2);
120
- });
121
- it('renders disabled textareas with correct values', () => {
122
- const { container } = renderComponent({
123
- items: ['first content', 'second content'],
124
- type: 'textarea'
125
- });
126
- const textareas = container.querySelectorAll('textarea');
127
- expect(textareas[0].value).toBe('first content');
128
- expect(textareas[1].value).toBe('second content');
129
- expect(textareas[0].disabled).toBe(true);
130
- expect(textareas[1].disabled).toBe(true);
131
- });
132
- });
133
- describe('Boolean type rendering', () => {
134
- it('renders boolean items with checkbox class when no content', () => {
135
- const { container } = renderComponent({
136
- items: [true, false],
137
- type: 'boolean'
138
- });
139
- const checkboxItems = container.querySelectorAll('.item.checkbox');
140
- expect(checkboxItems.length).toBe(2);
141
- });
142
- it('renders boolean items with icon-toggle class when content provided', () => {
143
- const { container } = renderComponent({
144
- items: [true, false],
145
- type: 'boolean',
146
- content: true
147
- });
148
- const iconToggleItems = container.querySelectorAll('.item.icon-toggle');
149
- expect(iconToggleItems.length).toBe(2);
150
- });
151
- it('renders check icon for true values when no content', () => {
152
- const { getAllByTestId } = renderComponent({
153
- items: [true],
154
- type: 'boolean'
155
- });
156
- expect(getAllByTestId('icon-check')).toHaveLength(1);
157
- });
158
- it('renders bracket curly icon when content is provided', () => {
159
- const { getAllByTestId } = renderComponent({
160
- items: [true, false],
161
- type: 'boolean',
162
- content: true
163
- });
164
- expect(getAllByTestId('icon-bracket-curly')).toHaveLength(2);
165
- });
166
- it('renders no icon for false values when no content', () => {
167
- const { container, queryByTestId } = renderComponent({
168
- items: [false],
169
- type: 'boolean'
170
- });
171
- const item = container.querySelector('.item.checkbox');
172
- expect(item?.textContent).toBe('');
173
- expect(queryByTestId('icon-check')).toBeNull();
174
- });
175
- });
176
- describe('Color type rendering', () => {
177
- it('renders color items with correct background styles', () => {
178
- const { container } = renderComponent({
179
- items: ['#ff0000', '#00ff00', '#0000ff'],
180
- type: 'color'
181
- });
182
- const colorItems = container.querySelectorAll('.item.color');
183
- expect(colorItems.length).toBe(3);
184
- expect(colorItems[0].style.backgroundColor).toBe('rgb(255, 0, 0)');
185
- expect(colorItems[1].style.backgroundColor).toBe('rgb(0, 255, 0)');
186
- expect(colorItems[2].style.backgroundColor).toBe('rgb(0, 0, 255)');
187
- });
188
- it('handles various color formats', () => {
189
- const { container } = renderComponent({
190
- items: ['red', 'rgba(0,0,0,0.5)', 'hsl(120, 100%, 50%)'],
191
- type: 'color'
192
- });
193
- const colorItems = container.querySelectorAll('.item.color');
194
- expect(colorItems[0].style.backgroundColor).toBe('red');
195
- expect(colorItems[1].style.backgroundColor).toBe('rgba(0, 0, 0, 0.5)');
196
- // Browser normalizes HSL to RGB, so we check for the normalized value
197
- expect(colorItems[2].style.backgroundColor).toBe('rgb(0, 255, 0)');
198
- });
199
- });
200
- describe('Default type rendering', () => {
201
- it('renders default items with item content and no special formatting', () => {
202
- const { container } = renderComponent({
203
- items: ['default item', 42]
204
- });
205
- const items = container.querySelectorAll('.item');
206
- expect(items.length).toBe(2);
207
- expect(items[0].textContent).toContain('default item');
208
- expect(items[1].textContent).toContain('42');
209
- });
210
- it('renders simple primitive values correctly', () => {
211
- const { container } = renderComponent({
212
- items: ['string', 123]
213
- });
214
- const items = container.querySelectorAll('.item');
215
- expect(items.length).toBe(2);
216
- expect(items[0].textContent).toContain('string');
217
- expect(items[1].textContent).toContain('123');
218
- });
219
- });
220
- describe('Remove functionality', () => {
221
- it('does not render remove buttons when removable is false', () => {
222
- const { queryByTestId } = renderComponent({
223
- items: ['item1', 'item2'],
224
- removable: false
225
- });
226
- expect(queryByTestId('mock-button')).toBeNull();
227
- });
228
- it('renders remove buttons when removable is true', () => {
229
- const { getAllByTestId } = renderComponent({
230
- items: ['item1', 'item2'],
231
- removable: true
232
- });
233
- const removeButtons = getAllByTestId('mock-button');
234
- expect(removeButtons.length).toBe(2);
235
- // Check button styling
236
- expect(removeButtons[0].getAttribute('data-style')).toBe('subtle');
237
- expect(removeButtons[0].getAttribute('data-color')).toBe('danger');
238
- });
239
- it('renders remove buttons with times icon', () => {
240
- const { getAllByTestId } = renderComponent({
241
- items: ['item1'],
242
- removable: true
243
- });
244
- const timesIcons = getAllByTestId('icon-times');
245
- expect(timesIcons.length).toBe(1);
246
- });
247
- it('renders remove buttons with buttons container', () => {
248
- const { container } = renderComponent({
249
- items: ['item1'],
250
- removable: true
251
- });
252
- const buttonsContainer = container.querySelector('.buttons');
253
- expect(buttonsContainer).toBeTruthy();
254
- });
255
- it('calls onRemove with correct index when remove button is clicked', () => {
256
- const mockOnRemove = vi.fn();
257
- const { getAllByTestId } = renderComponent({
258
- items: ['item1', 'item2', 'item3'],
259
- removable: true,
260
- onRemove: mockOnRemove
261
- });
262
- const removeButtons = getAllByTestId('mock-button');
263
- // Click second item's remove button
264
- fireEvent.click(removeButtons[1]);
265
- expect(mockOnRemove).toHaveBeenCalledWith(1);
266
- expect(mockOnRemove).toHaveBeenCalledTimes(1);
267
- });
268
- it('calls onRemove with correct index for multiple clicks', () => {
269
- const mockOnRemove = vi.fn();
270
- const { getAllByTestId } = renderComponent({
271
- items: ['item1', 'item2'],
272
- removable: true,
273
- onRemove: mockOnRemove
274
- });
275
- const removeButtons = getAllByTestId('mock-button');
276
- fireEvent.click(removeButtons[0]);
277
- fireEvent.click(removeButtons[1]);
278
- expect(mockOnRemove).toHaveBeenNthCalledWith(1, 0);
279
- expect(mockOnRemove).toHaveBeenNthCalledWith(2, 1);
280
- expect(mockOnRemove).toHaveBeenCalledTimes(2);
281
- });
282
- it('only renders remove buttons for default type items', () => {
283
- const mockOnRemove = vi.fn();
284
- // Test text type - should not have remove buttons
285
- const { queryByTestId: queryTextButton } = renderComponent({
286
- items: ['text item'],
287
- type: 'text',
288
- removable: true,
289
- onRemove: mockOnRemove
290
- });
291
- expect(queryTextButton('mock-button')).toBeNull();
292
- // Test default type - should have remove buttons
293
- const { getByTestId: getDefaultButton } = renderComponent({
294
- items: ['default item'],
295
- removable: true,
296
- onRemove: mockOnRemove
297
- });
298
- expect(getDefaultButton('mock-button')).toBeTruthy();
299
- });
300
- });
301
- describe('Component structure and keys', () => {
302
- it('generates correct keys for items', () => {
303
- const { container } = renderComponent({
304
- items: ['item1', 'item2', 'item3']
305
- });
306
- const items = container.querySelectorAll('.item');
307
- expect(items[0].getAttribute('class')).toContain('item');
308
- // React key props aren't directly accessible in testing, but we verify structure
309
- expect(items.length).toBe(3);
310
- });
311
- it('extends React.PureComponent correctly', () => {
312
- const props = createMockProps();
313
- const component = new ControlledList(props);
314
- expect(component).toBeInstanceOf(React.PureComponent);
315
- expect(typeof component.render).toBe('function');
316
- expect(typeof component.renderRemoveButton).toBe('function');
317
- });
318
- it('has correct constructor behavior', () => {
319
- const props = createMockProps();
320
- const component = new ControlledList(props);
321
- expect(component.props).toBe(props);
322
- });
323
- });
324
- describe('Edge cases and error handling', () => {
325
- it('handles null and undefined items gracefully', () => {
326
- const { container } = renderComponent({
327
- items: [null, undefined, '']
328
- });
329
- const items = container.querySelectorAll('.item');
330
- expect(items.length).toBe(3);
331
- });
332
- it('handles mixed item types in default mode', () => {
333
- const { container } = renderComponent({
334
- items: ['string', 42, null]
335
- });
336
- const items = container.querySelectorAll('.item');
337
- expect(items.length).toBe(3);
338
- });
339
- it('handles onRemove being undefined when removable is true', () => {
340
- const { getAllByTestId } = renderComponent({
341
- items: ['item1'],
342
- removable: true
343
- // onRemove is undefined
344
- });
345
- const removeButtons = getAllByTestId('mock-button');
346
- // Component will fail when onClick is called with undefined onRemove
347
- // This is expected behavior since component doesn't validate props
348
- expect(removeButtons.length).toBe(1);
349
- // We won't actually click it since it would cause an error
350
- // This documents that the component expects onRemove to be provided
351
- // when removable is true
352
- });
353
- it('handles very large numbers with previewMultiplier', () => {
354
- const { getByDisplayValue } = renderComponent({
355
- items: [1000000],
356
- type: 'number',
357
- previewMultiplier: 1000
358
- });
359
- expect(getByDisplayValue('{{ 1000000000 }}')).toBeTruthy();
360
- });
361
- it('handles negative numbers correctly', () => {
362
- const { getByDisplayValue } = renderComponent({
363
- items: [-5, -10.5],
364
- type: 'number',
365
- previewMultiplier: 2
366
- });
367
- expect(getByDisplayValue('{{ -10 }}')).toBeTruthy();
368
- expect(getByDisplayValue('{{ -21 }}')).toBeTruthy();
369
- });
370
- });
371
- describe('Type definitions', () => {
372
- it('supports all defined ControlListType values', () => {
373
- const types = ['text', 'number', 'color', 'textarea', 'boolean', 'icon'];
374
- types.forEach(type => {
375
- expect(() => {
376
- renderComponent({
377
- items: ['test'],
378
- type
379
- });
380
- }).not.toThrow();
381
- });
382
- });
383
- });
384
- describe('Props validation', () => {
385
- it('works with all optional props being undefined', () => {
386
- expect(() => {
387
- renderComponent({});
388
- }).not.toThrow();
389
- });
390
- it('respects propKey prop (exists in interface but not used in implementation)', () => {
391
- expect(() => {
392
- renderComponent({
393
- items: ['test'],
394
- propKey: 'testKey'
395
- });
396
- }).not.toThrow();
397
- });
398
- });
399
- });
400
- //# sourceMappingURL=ControlledList.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ControlledList.test.js","sourceRoot":"","sources":["../../../../src/components/controlled-list/ControlledList.test.tsx"],"names":[],"mappings":"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"}