@hypothesis/frontend-shared
Version:
Shared components, styles and utilities for Hypothesis projects
99 lines • 2.56 kB
JavaScript
var _jsxFileName = "/home/runner/work/frontend-shared/frontend-shared/src/pattern-library/examples/select-with-custom-options.tsx";
import { useId, useState } from 'preact/hooks';
import { Select } from '../..';
import { jsxDEV as _jsxDEV, Fragment as _Fragment } from "preact/jsx-dev-runtime";
const defaultItems = [{
id: '1',
name: 'All students'
}, {
id: '2',
name: 'Albert Banana'
}, {
id: '3',
name: 'Bernard California'
}, {
id: '4',
name: 'Cecelia Davenport'
}, {
id: '5',
name: 'Doris Evanescence'
}];
function ItemContainer({
item
}) {
return _jsxDEV("div", {
className: "flex",
children: [_jsxDEV("div", {
className: "rounded px-2 mr-2 bg-grey-7 text-white",
children: item.id
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 21,
columnNumber: 7
}, this), _jsxDEV("div", {
className: "truncate",
children: item.name
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 22,
columnNumber: 7
}, this)]
}, void 0, true, {
fileName: _jsxFileName,
lineNumber: 20,
columnNumber: 5
}, this);
}
export default function App({
items = defaultItems
}) {
const [value, setSelected] = useState();
const selectId = useId();
return _jsxDEV("div", {
className: "w-96 mx-auto",
children: [_jsxDEV("label", {
htmlFor: selectId,
children: "Select a person"
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 33,
columnNumber: 7
}, this), _jsxDEV(Select, {
value: value,
onChange: setSelected,
buttonId: selectId,
buttonContent: value ? _jsxDEV(ItemContainer, {
item: value
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 39,
columnNumber: 19
}, this) : _jsxDEV(_Fragment, {
children: "Select one\u2026"
}, void 0, false),
children: items.map(item => _jsxDEV(Select.Option, {
value: item,
children: _jsxDEV(ItemContainer, {
item: item
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 44,
columnNumber: 13
}, this)
}, item.id, false, {
fileName: _jsxFileName,
lineNumber: 43,
columnNumber: 11
}, this))
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 34,
columnNumber: 7
}, this)]
}, void 0, true, {
fileName: _jsxFileName,
lineNumber: 32,
columnNumber: 5
}, this);
}
//# sourceMappingURL=select-with-custom-options.js.map