58d1c28e9d
* Add Routing logic to Query builder * Make a working redirect * Make it an app * Move pages and components to App * Integrate all pages in the app * Integrate prisma everywhere * Fix Routing Link * Add routing preview * Fixes * Get deplouyed on preview with ts disabled * Fix case * add reordering for routes * Move away from react DnD * Add sidebar * Add sidebar support and select support * Various fixes and improvements * Ignore eslint temporarly * Route might be falsy * Make CalNumber support required validation * Loader improvements * Add SSR support * Fix few typescript issues * More typesafety, download csv, bug fiees * Add seo friendly link * Avoid seding credebtials to frontend * Self review fixes * Improvements in app-store * Cahnge Form layout * Add scaffolding for app tests * Add playwright tests and add user check in serving data * Add CI tests * Add route builder test * Styling * Apply suggestions from code review Co-authored-by: Agusti Fernandez Pardo <6601142+agustif@users.noreply.github.com> * Changes as per loom feedback * Increase time for tests * Fix PR suggestions * Import CSS only in the module * Fix codacy issues * Move the codebbase to ee and add PRO and license check * Add Badge * Avoid lodash import * Fix TS error * Fix lint errors * Fix bug to merge conflicts resolution - me query shouldnt cause the Shell to go in loading state Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com> Co-authored-by: zomars <zomars@me.com> Co-authored-by: Agusti Fernandez Pardo <6601142+agustif@users.noreply.github.com>
57 lines
1.8 KiB
TypeScript
57 lines
1.8 KiB
TypeScript
import { Root as ToggleGroupPrimitive, Item as ToggleGroupItemPrimitive } from "@radix-ui/react-toggle-group";
|
|
import { useState } from "react";
|
|
|
|
import classNames from "@calcom/lib/classNames";
|
|
|
|
const boolean = (yesNo: "yes" | "no") => (yesNo === "yes" ? true : yesNo === "no" ? false : undefined);
|
|
const yesNo = (boolean?: boolean) => (boolean === true ? "yes" : boolean === false ? "no" : undefined);
|
|
|
|
export default function BooleanToggleGroup({
|
|
defaultValue = true,
|
|
value,
|
|
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
onValueChange = () => {},
|
|
}: {
|
|
defaultValue?: boolean;
|
|
value?: boolean;
|
|
onValueChange?: (value?: boolean) => void;
|
|
}) {
|
|
// Maintain a state because it is not necessary that onValueChange the parent component would re-render. Think react-hook-form
|
|
// Also maintain a string as boolean isn't accepted as ToggleGroupPrimitive value
|
|
const [yesNoValue, setYesNoValue] = useState<"yes" | "no" | undefined>(yesNo(value));
|
|
|
|
if (!yesNoValue) {
|
|
setYesNoValue(yesNo(defaultValue));
|
|
onValueChange(defaultValue);
|
|
return null;
|
|
}
|
|
|
|
return (
|
|
<ToggleGroupPrimitive
|
|
value={yesNoValue}
|
|
type="single"
|
|
className="rounded-sm"
|
|
onValueChange={(yesNoValue: "yes" | "no") => {
|
|
setYesNoValue(yesNoValue);
|
|
onValueChange(boolean(yesNoValue));
|
|
}}>
|
|
<ToggleGroupItemPrimitive
|
|
className={classNames(
|
|
boolean(yesNoValue) ? "bg-gray-200" : "",
|
|
"border border-gray-300 py-2 px-3 text-sm"
|
|
)}
|
|
value="yes">
|
|
Yes
|
|
</ToggleGroupItemPrimitive>
|
|
<ToggleGroupItemPrimitive
|
|
className={classNames(
|
|
!boolean(yesNoValue) ? "bg-gray-200" : "",
|
|
"border border-l-0 border-gray-300 py-2 px-3 text-sm"
|
|
)}
|
|
value="no">
|
|
No
|
|
</ToggleGroupItemPrimitive>
|
|
</ToggleGroupPrimitive>
|
|
);
|
|
}
|