docbrown/app/javascript/billboard/locations/templates.jsx
Mac Siri afa73e06e3
Replace Webpacker with Esbuild (#20470)
* Migrate to esbuild WIP

* Add exclude

* Remove redundant file

* Move file

* Move to javascript_include_tag

* Lint fix

* WIP

* WIP

* Add watch mode to esbuild WIP

* Get jest working

* Remove babel

* Revert "Remove babel"

This reverts commit 6da35260aa19d6f97f586deb66c0ecaf48433b73.

* More WIP

* Got image to load

* WIP

* Resolve audit

* Lint fix

* WIP

* Fix jest spec

* [CI] Remove asset-restore for test build stage

* Production compliant

* Temp disable sourcemap

* Update glob

* Add esbuild helper to stimulus

* Import fragment

* Temp disable coverage to see failing tests

* Fix broken spec

* Address lint

* Set proper es6 target

* Use esbuild for everything

* wait what

* Revert "Set proper es6 target"

This reverts commit 98f5278093421baa8ffe2ca580845b01c1a1eadf.

* Revert "Use esbuild for everything"

This reverts commit 0ac46738f07ffcb6af095ccb1ffa5e439b7fefa3.

* Replace uglifier with terser

* New compiled assets version

* Remvoe honeybadger-io/webpack

* Remove cypress coverage checks for now

* Update jsconfig.json

* Update docker-compose

* Remove public/packs-test from ci cache
2024-01-25 20:29:21 +00:00

48 lines
1.2 KiB
JavaScript

import { h } from 'preact';
import { useCallback } from 'preact/hooks';
import { ButtonNew as Button, Icon } from '@crayons';
import Close from '@images/x.svg';
/**
* Higher-order component that returns a template responsible for the layout of
* a selected location
*
* @returns {h.JSX.ElementType}
*/
export const SelectedLocation = ({
displayName,
onNameClick,
label,
ExtraInfo,
}) => {
const Template = ({ onEdit: _, onDeselect, ...location }) => {
const onClick = useCallback(() => onNameClick(location), [location]);
return (
<div
role="group"
aria-label={location.name}
className="c-autocomplete--multi__tag-selection flex mr-2 mb-2 w-max"
>
<Button
aria-label={label}
onClick={onClick}
className="c-autocomplete--multi__selected p-1 flex flex-col"
>
{location.name}
{ExtraInfo && <ExtraInfo {...location} />}
</Button>
<Button
aria-label={`Remove ${location.name}`}
onClick={onDeselect}
className="c-autocomplete--multi__selected p-1"
>
<Icon src={Close} />
</Button>
</div>
);
};
Template.displayName = displayName;
return Template;
};