Skip to content

Instantly share code, notes, and snippets.

@PatrickJS
Last active January 31, 2024 21:21
Show Gist options
  • Save PatrickJS/89493786bc1dbfa04f559fe4b96411cb to your computer and use it in GitHub Desktop.
Save PatrickJS/89493786bc1dbfa04f559fe4b96411cb to your computer and use it in GitHub Desktop.
import { component$, sync$ } from "@builder.io/qwik";
export const RefreshButton = component$(({loading, onClick$, ...props}: any) => {
const loading$ = sync$((_e: Event, target: HTMLButtonElement) => {
const span = target.querySelector("span");
target.disabled = span!.hidden;
span!.hidden = !span!.hidden;
});
let clickListener = {};
if (onClick$) {
if (Array.isArray(onClick$)) {
clickListener = { onClick$: [loading$, ...onClick$, loading$] };
} else {
clickListener = { onClick$: [loading$, onClick$, loading$] };
}
}
return (
<button {...props} {...clickListener}>
Refresh <span hidden>{loading ? : loading : '(loading...)'}</span>
</button>
);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment