Skip to content

Instantly share code, notes, and snippets.

it('should work when neither open state is controlled nor toggle handler is passed', () => {
const { clickHeader, isOpen } = mountUsage();
expect(isOpen()).toBe(false);
clickHeader();
expect(isOpen()).toBe(true);
clickHeader();
expect(isOpen()).toBe(false);
});
@alirezamirian
alirezamirian / useControllableState.test.tsx
Last active February 22, 2019 19:45
For a Medium post
function mountUsage(usage = <Zippy header='header'/>) {
const wrapper = mount(usage);
return {
wrapper,
isOpen: () => wrapper.find('.zippy-content').length > 0,
clickHeader: () => wrapper.find('.zippy-header').simulate('click'),
};
}
interface UsageProps {
value?: number;
changeHandler?: (value: number) => number | void;
}
function Counter({value, changeHandler}: UsageProps) {
const [valueState, setValue] = useControllableState(value, changeHandler, 0);
return <div>
<span className="value">{valueState}</span>
@alirezamirian
alirezamirian / webstorm-markdown-preview-github-style.css
Last active April 13, 2022 21:01
Github markdown theme for webstorm's markdown preview. just use this url in "Settings -> Languages & Frameworks -> Markdown -> Custom CSS -> Load from URI": https://gistcdn.githack.com/alirezamirian/aa06088df9310a4fccccb369a74815ac/raw/3004f7d4d3e1c0263b546aead7310fd8a34d1b12/webstorm-markdown-preview-github-style.css
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial,
sans-serif, "Apple Color Emoji", "Segoe UI Emoji";
font-size: 16px;
line-height: 1.5;
word-wrap: break-word;
color: #24292e;
background-color: #fff;
}