import React from 'react'; import Space from '..'; import mountTest from '../../../tests/shared/mountTest'; import rtlTest from '../../../tests/shared/rtlTest'; import { render } from '../../../tests/utils'; import AutoComplete from '../../auto-complete'; import Button from '../../button'; import Cascader from '../../cascader'; import ConfigProvider from '../../config-provider'; import DatePicker from '../../date-picker'; import Drawer from '../../drawer'; import Dropdown from '../../dropdown'; import Input from '../../input'; import InputNumber from '../../input-number'; import Modal from '../../modal'; import Select from '../../select'; import TimePicker from '../../time-picker'; import Tooltip from '../../tooltip'; import TreeSelect from '../../tree-select'; describe('Space.Compact', () => { mountTest(Space.Compact); mountTest(() => ( )); rtlTest(Space.Compact); rtlTest(() => ( )); it('should render width empty children', () => { const { container } = render(); expect(container.children.length).toBe(0); }); it('block className', () => { const { container } = render( , ); expect( container.querySelector('.ant-space-compact')?.classList.contains('ant-space-compact-block'), ).toBe(true); }); it('compact-item className', () => { const { container } = render( , ); expect( container.querySelector('.ant-input')?.classList.contains('ant-input-compact-item'), ).toBe(true); expect( container.querySelector('.ant-input-search')?.classList.contains('ant-input-compact-item'), ).toBe(true); expect( container.querySelector('.ant-input')?.classList.contains('ant-input-compact-first-item'), ).toBe(true); expect( container .querySelector('.ant-btn-compact-item') ?.classList.contains('ant-btn-compact-last-item'), ).toBe(true); }); [ { name: 'Button', component: Button, targetCls: 'ant-btn', expectClsPrefix: 'ant-btn', }, { name: 'AutoComplete', component: AutoComplete, targetCls: 'ant-select', expectClsPrefix: 'ant-select', }, { name: 'Cascader', component: Cascader, targetCls: 'ant-cascader', expectClsPrefix: 'ant-select', }, { name: 'DatePicker', component: DatePicker, targetCls: 'ant-picker', expectClsPrefix: 'ant-picker', }, { name: 'Input', component: Input, targetCls: 'ant-input', expectClsPrefix: 'ant-input', }, { name: 'Input.Search', component: Input.Search, targetCls: 'ant-input-search', expectClsPrefix: 'ant-input', }, { name: 'Select', component: Select, targetCls: 'ant-select', expectClsPrefix: 'ant-select', }, { name: 'TimePicker', component: TimePicker, targetCls: 'ant-picker', expectClsPrefix: 'ant-picker', }, { name: 'TreeSelect', component: TreeSelect, targetCls: 'ant-select', expectClsPrefix: 'ant-select', }, ].forEach(({ component, name, targetCls, expectClsPrefix }) => { it(`compact-item for ${name}`, () => { const { container } = render( {React.createElement(component as any)}, ); expect(container.querySelectorAll(`.${targetCls}`).length).toBe(1); ['compact-item', 'compact-first-item', 'compact-last-item'].forEach((suffix) => { expect( container .querySelector(`.${targetCls}`) ?.classList.contains([expectClsPrefix, suffix].join('-')), ).toBe(true); }); }); }); it('size', () => { const { container } = render( , ); expect(container.querySelector('.ant-input')?.classList.contains('ant-input-sm')).toBe(true); expect(container.querySelector('.ant-btn')?.classList.contains('ant-btn-sm')).toBe(true); }); it('component size has a higher priority than Compact', () => { const { container } = render( , ); expect( document.body .querySelectorAll('.ant-modal')[0] .querySelector('.ant-btn') ?.classList.contains('ant-btn-compact-item'), ).toBe(false); expect( document.body .querySelectorAll('.ant-modal')[0] .querySelector('.ant-input') ?.classList.contains('ant-input-compact-item'), ).toBe(false); }); it('context for Dropdown', () => { render( menu button, }, ], }} > debug Dropdown.Button context , ); expect( document.body .querySelector('.ant-dropdown') ?.querySelector('.ant-btn') ?.classList.contains('ant-btn-compact-item'), ).toBe(false); }); it('context for Drawer', () => { render( , ); expect( document.body .querySelector('.ant-drawer') ?.querySelector('.ant-btn') ?.classList.contains('ant-btn-compact-item'), ).toBe(false); }); it('context for Tooltip', () => { render( } trigger={['click']} placement="bottom" > , ); expect( document.body .querySelector('.ant-tooltip') ?.querySelector('.ant-input') ?.classList.contains('ant-input-compact-item'), ).toBe(false); expect( document.body .querySelector('.ant-tooltip') ?.querySelector('.ant-picker') ?.classList.contains('ant-picker-compact-item'), ).toBe(false); }); it('Tooltip content supports function', () => { render( ( <> )} > Tooltip will show on mouse enter. , ); expect( document.body .querySelector('.ant-tooltip') ?.querySelector('.ant-input') ?.classList.contains('ant-input-compact-item'), ).toBe(false); expect( document.body .querySelector('.ant-tooltip') ?.querySelector('.ant-picker') ?.classList.contains('ant-picker-compact-item'), ).toBe(false); }); // https://github.com/ant-design/ant-design/issues/41876 it('Space.Compact should inherit the size from ConfigProvider if the componentSize is set', () => { const { container } = render( , ); expect(container.querySelectorAll('.ant-select-sm')).toHaveLength(1); }); });