Compare commits

...
5 Commits
Author SHA1 Message Date
emrysal 578be32936 chore: release v5.8.5
Post release / release (push) Canceled after 0s
2025-10-25 00:25:46 +00:00
Dhairyashil ShindeandAnik Dhabal Babu b183239ff5 chore: add autocomplete for inputs - name, phone, location (#24422)
* add autocomplete for inputs - name, phone, location

* Addressed coderabits comments

* autocomplete for email and url

---------

Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com>
2025-10-24 21:36:41 +00:00
Pallav 013e614397 fix: handle empty location in event types (#24342) 2025-10-24 17:58:34 -03:00
sean-brydonandAnik Dhabal Babu 6843ced3db Use correct memebrships for permission calculations (#24653)
Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com>
2025-10-24 07:44:47 +01:00
Anik Dhabal Babu 7318015a6e fix: Delete all workflow reminders when workflow is deleted (#24615) 2025-10-24 02:54:08 +00:00
9 changed files with 21 additions and 28 deletions
View File
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@calcom/web",
"version": "5.8.4",
"version": "5.8.5",
"private": true,
"scripts": {
"analyze": "ANALYZE=true next build",
@@ -68,6 +68,7 @@ function BasePhoneInput({
name,
required: rest.required,
placeholder: rest.placeholder,
autoComplete: "tel",
}}
onChange={(val: string) => {
onChange(`+${val}`);
@@ -118,6 +119,7 @@ function BasePhoneInputWeb({
name,
required: rest.required,
placeholder: rest.placeholder,
autoComplete: "tel",
}}
onChange={(val: string) => {
onChange(`+${val}`);
@@ -2,17 +2,13 @@ import { useAutoAnimate } from "@formkit/auto-animate/react";
import { ErrorMessage } from "@hookform/error-message";
import Link from "next/link";
import { useEffect, useState } from "react";
import { useFieldArray, useFormContext } from "react-hook-form";
import { useFieldArray } from "react-hook-form";
import type { UseFormGetValues, UseFormSetValue, Control, FormState } from "react-hook-form";
import type { EventLocationType } from "@calcom/app-store/locations";
import { getEventLocationType, MeetLocationType } from "@calcom/app-store/locations";
import { useIsPlatform } from "@calcom/atoms/hooks/useIsPlatform";
import type {
LocationFormValues,
EventTypeSetupProps,
FormValues,
} from "@calcom/features/eventtypes/lib/types";
import type { LocationFormValues, EventTypeSetupProps } from "@calcom/features/eventtypes/lib/types";
import CheckboxField from "@calcom/features/form/components/CheckboxField";
import type { SingleValueLocationOption } from "@calcom/features/form/components/LocationSelect";
import LocationSelect from "@calcom/features/form/components/LocationSelect";
@@ -34,10 +30,6 @@ export type TLocationOptions = Pick<EventTypeSetupProps, "locationOptions">["loc
export type TDestinationCalendar = { integration: string } | null;
export type TPrefillLocation = { credentialId?: number; type: string };
type LocationInputCustomClassNames = {
addressInput?: string;
phoneInput?: string;
};
type LocationsProps = {
team: { id: number } | null;
@@ -96,7 +88,7 @@ const Locations: React.FC<LocationsProps> = ({
disableLocationProp,
isManagedEventType,
getValues,
setValue,
setValue: _setValue,
control,
formState,
team,
@@ -116,8 +108,6 @@ const Locations: React.FC<LocationsProps> = ({
name: "locations",
});
const formMethods = useFormContext<FormValues>();
const locationOptions = props.locationOptions.map((locationOption) => {
const options = locationOption.options.filter((option) => {
// Skip "Organizer's Default App" for non-team members
@@ -172,8 +162,7 @@ const Locations: React.FC<LocationsProps> = ({
setSelectedNewOption(prefillLocation);
}
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [prefillLocation, seatsEnabled]);
}, [prefillLocation, seatsEnabled, validLocations, append]);
const isPlatform = useIsPlatform();
@@ -250,6 +239,7 @@ const Locations: React.FC<LocationsProps> = ({
type="button"
onClick={() => {
remove(index);
setSelectedNewOption(null);
}}
aria-label={t("remove")}>
<div className="h-4 w-4">
+10 -1
View File
@@ -145,6 +145,7 @@ export const Components: Record<FieldType, Component> = {
value={value}
required={variantField.required}
type="text"
autoComplete="name"
onChange={(e) => {
props.setValue(e.target.value);
}}
@@ -174,6 +175,13 @@ export const Components: Record<FieldType, Component> = {
value={value[variantField.name as keyof typeof value]}
required={variantField.required}
type="text"
autoComplete={
variantField.name === "firstName"
? "given-name"
: variantField.name === "lastName"
? "family-name"
: undefined
}
onChange={(e) => onChange(variantField.name, e.target.value)}
/>
))}
@@ -211,6 +219,7 @@ export const Components: Record<FieldType, Component> = {
type="email"
id={props.name}
noLabel={true}
autoComplete="email"
{...props}
onChange={(e) => props.setValue(e.target.value)}
/>
@@ -543,7 +552,7 @@ export const Components: Record<FieldType, Component> = {
url: {
propsType: propsTypes.url,
factory: (props) => {
return <Widgets.TextWidget type="url" noLabel={true} {...props} />;
return <Widgets.TextWidget type="url" autoComplete="url" noLabel={true} {...props} />;
},
},
} as const;
@@ -68,7 +68,8 @@ export class EventGroupBuilder {
},
}));
const teamMemberships = accessibleMemberships.map((membership) => ({
// This ensures org roles are considered when calculating effective permissions
const teamMemberships = profileMemberships.map((membership) => ({
teamId: membership.team.id,
membershipRole: membership.role,
}));
@@ -237,8 +237,6 @@ describe("deleteHandler", () => {
{
id: 1,
workflowStepId: 1,
scheduled: true,
referenceId: "ref-1",
},
];
const mockWorkflow = {
@@ -263,10 +261,6 @@ describe("deleteHandler", () => {
workflowStep: {
workflowId: workflowId,
},
scheduled: true,
NOT: {
referenceId: null,
},
},
});
@@ -143,10 +143,6 @@ export const deleteHandler = async ({ ctx, input }: DeleteOptions) => {
workflowStep: {
workflowId: id,
},
scheduled: true,
NOT: {
referenceId: null,
},
},
});
@@ -22,6 +22,7 @@ function AddressInput({ value, onChange, ...rest }: AddressInputProps) {
/>
<Input
{...rest}
autoComplete="address-line1"
value={value}
onChange={(e) => {
onChange(e.target.value);