Hi @AdhamFH :
A bit complicated, but it's not difficult to achieve.I've made a test for your reference:
1\remove MeetingDurationSelect1
2\Add a TextInput control(MeetingDurationSelect1)
set it's Default property to
30
set it's OnChange property to
Select(MeetingDateSelect1)
set it's DisplayMode property to
If(IsEmpty(MyPeople), DisplayMode.Disabled, DisplayMode.Edit)
set it's visible property to
_showDetails
/*The effect of the above steps is to replace the original dropdown control with a textinput box control of the same name*/
note:Starting from the third step is to replace all ‘MeetingDurationSelect1.selelcted.Minutes’ with ‘Value(MeetingDurationSelect1.Text)’
3\Set MeetingDateSelect1's OnSelect property to:
Concurrent(
Reset(TextSearchBox1),
Set(_showMeetingTimes, false),
UpdateContext({_loadingMeetingTimes: true}),
Set(_selectedMeetingTime, Blank()),
Set(_selectedRoom, Blank()),
Set(_roomListSelected, false),
/*
Uses Office365 Outlook FindMeetingTimes operation to find available meeting times given various parameters including a semicolon separated list of attendee email addresses,
a meeting duration (in minutes), an acceptable start and end range to find the meeting.
Attendee emails are retrieved from the MyPeople collection. Duration and Start/End are retrieved from their respective dropdowns, where Start is set to 8:00 AM on the date selected, and End is set to 5:00 PM on the date selected.
*/
ClearCollect(MeetingTimes, AddColumns(Office365Outlook.FindMeetingTimes(
{RequiredAttendees:Concat(MyPeople, UserPrincipalName & ";"), MeetingDuration:Value(MeetingDurationSelect1.Text),
Start:Text(DateAdd(MeetingDateSelect1.SelectedDate, 8, Hours), UTC), End:Text(DateAdd(MeetingDateSelect1.SelectedDate, 17, Hours), UTC),
MaxCandidates:15, MinimumAttendeePercentage:1, IsOrganizerOptional: false, ActivityDomain: "Work"}).MeetingTimeSuggestions,
"StartTime", MeetingTimeSlot.Start.DateTime, "EndTime", MeetingTimeSlot.End.DateTime))
);
UpdateContext({_loadingMeetingTimes: false});
Set(_showMeetingTimes, true)
4\set AddIcon1's OnSelect property to
Collect(MyPeople, {DisplayName: TextSearchBox1.Text, UserPrincipalName: TextSearchBox1.Text});
Concurrent(
Reset(TextSearchBox1),
Set(_showMeetingTimes, false),
UpdateContext({_loadMeetingTimes: true}),
Set(_selectedMeetingTime, Blank()),
Set(_selectedRoom, Blank()),
Set(_roomListSelected, false),
/*
Uses Office365 Outlook FindMeetingTimes operation to find available meeting times given various parameters including a semicolon separated list of attendee email addresses,
a meeting duration (in minutes), an acceptable start and end range to find the meeting.
Attendee emails are retrieved from the MyPeople collection. Duration and Start/End are retrieved from their respective dropdowns, where Start is set to 8:00 AM on the date selected, and End is set to 5:00 PM on the date selected.
*/
ClearCollect(MeetingTimes, AddColumns(Office365Outlook.FindMeetingTimes(
{RequiredAttendees:Concat(MyPeople, UserPrincipalName & ";"), MeetingDuration:Value(MeetingDurationSelect1.Text),
Start:Text(DateAdd(MeetingDateSelect1.SelectedDate, 8, Hours), UTC), End:Text(DateAdd(MeetingDateSelect1.SelectedDate, 17, Hours), UTC),
MaxCandidates:15, MinimumAttendeePercentage:1, IsOrganizerOptional: false, ActivityDomain: "Work"}).MeetingTimeSuggestions,
"StartTime", MeetingTimeSlot.Start.DateTime, "EndTime", MeetingTimeSlot.End.DateTime))
);
UpdateContext({_loadingMeetingTimes: false});
Set(_showMeetingTimes, true)
5\set Title4's OnSelect property to:
Concurrent(
Reset(TextSearchBox1),
Set(_selectedUser, ThisItem),
If(Not(ThisItem.UserPrincipalName in MyPeople.UserPrincipalName),
Collect(MyPeople, ThisItem);
Concurrent(
Set(_showMeetingTimes, false),
UpdateContext({_loadMeetingTimes: true}),
Set(_selectedMeetingTime, Blank()),
Set(_selectedRoom, Blank()),
Set(_roomListSelected, false),
/*
Uses Office365 Outlook FindMeetingTimes operation to find available meeting times given various parameters including a semicolon separated list of attendee email addresses,
a meeting duration (in minutes), an acceptable start and end range to find the meeting.
Attendee emails are retrieved from the MyPeople collection. Duration and Start/End are retrieved from their respective dropdowns, where Start is set to 8:00 AM on the date selected, and End is set to 5:00 PM on the date selected.
*/
ClearCollect(MeetingTimes, AddColumns(Office365Outlook.FindMeetingTimes(
{RequiredAttendees:Concat(MyPeople, UserPrincipalName & ";"), MeetingDuration:Value(MeetingDurationSelect1.Text),
Start:Text(DateAdd(MeetingDateSelect1.SelectedDate, 8, Hours), UTC), End:Text(DateAdd(MeetingDateSelect1.SelectedDate, 17, Hours), UTC),
MaxCandidates:15, MinimumAttendeePercentage:1, IsOrganizerOptional: false, ActivityDomain: "Work"}).MeetingTimeSuggestions,
"StartTime", MeetingTimeSlot.Start.DateTime, "EndTime", MeetingTimeSlot.End.DateTime))
);
UpdateContext({_loadingMeetingTimes: false});
Set(_showMeetingTimes, true)
))
6\set iconRemove1's OnSelelct property to
Remove(MyPeople, LookUp(MyPeople, UserPrincipalName = ThisItem.UserPrincipalName));Concurrent(
Reset(TextSearchBox1),
Set(_showMeetingTimes, false),
UpdateContext({_loadMeetingTimes: true}),
Set(_selectedMeetingTime, Blank()),
Set(_selectedRoom, Blank()),
Set(_roomListSelected, false),
/*
Uses Office365 Outlook FindMeetingTimes operation to find available meeting times given various parameters including a semicolon separated list of attendee email addresses,
a meeting duration (in minutes), an acceptable start and end range to find the meeting.
Attendee emails are retrieved from the MyPeople collection. Duration and Start/End are retrieved from their respective dropdowns, where Start is set to 8:00 AM on the date selected, and End is set to 5:00 PM on the date selected.
*/
ClearCollect(MeetingTimes, AddColumns(Office365Outlook.FindMeetingTimes(
{RequiredAttendees:Concat(MyPeople, UserPrincipalName & ";"), MeetingDuration:Value(MeetingDurationSelect1.Text),
Start:Text(DateAdd(MeetingDateSelect1.SelectedDate, 8, Hours), UTC), End:Text(DateAdd(MeetingDateSelect1.SelectedDate, 17, Hours), UTC),
MaxCandidates:15, MinimumAttendeePercentage:1, IsOrganizerOptional: false, ActivityDomain: "Work"}).MeetingTimeSuggestions,
"StartTime", MeetingTimeSlot.Start.DateTime, "EndTime", MeetingTimeSlot.End.DateTime))
);
UpdateContext({_loadingMeetingTimes: false});
Set(_showMeetingTimes, true)
7\set Title2's OnSelect property to
Set(_selectedMeetingTime, ThisItem);
UpdateContext({_loadingRooms: true});
/*Collects user's tenant room lists (if any)*/
If(IsEmpty(RoomsLists),
ClearCollect(RoomsLists, Office365Outlook.GetRoomLists().value));
/*If tenant has no room lists, retrieves all the tenant rooms, and then retrieves their availabilities for the selected meeting time*/
If(CountRows(RoomsLists) <= 1,
Set(_noRoomLists, true);
ClearCollect(AllRooms, Office365Outlook.GetRooms().value);
Set(_allRoomsConcat, Concat(FirstN(AllRooms, 20), Address & ";"));
ClearCollect(RoomTimeSuggestions, Office365Outlook.FindMeetingTimes({RequiredAttendees: _allRoomsConcat, MeetingDuration: Value(MeetingDurationSelect1.Text),
Start: _selectedMeetingTime.StartTime & "Z", End: _selectedMeetingTime.EndTime & "Z", MinimumAttendeePercentage: "1",
IsOrganizerOptional: "false", ActivityDomain: "Unrestricted"}).MeetingTimeSuggestions);
ClearCollect(AvailableRooms, AddColumns(AddColumns(Filter(First(RoomTimeSuggestions).AttendeeAvailability,
Availability="Free"), "Address", Attendee.EmailAddress.Address), "Name", LookUp(AllRooms, Address = Attendee.EmailAddress.Address).Name));
ClearCollect(AvailableRoomsOptimal, DropColumns(DropColumns(AvailableRooms, "Availability"), "Attendee")),
Set(_roomListSelected, false));
UpdateContext({_loadingRooms: false})
8\set Title3's OnSelelct property to
/*If user is viewing room lists, then retrieves the availabilities for the rooms within that list during the selected meeting time
If user is viewing rooms, selects that room*/
UpdateContext({_loadingRooms: true});
If(!_roomListSelected && !_noRoomLists,
Set(_roomListSelected, true);
Set(_selectedRoomList, ThisItem.Name);
ClearCollect(AllRooms, Office365Outlook.GetRoomsInRoomList(ThisItem.Address).value);
Set(_allRoomsConcat, Concat(FirstN(AllRooms, 20), Address & ";"));
ClearCollect(RoomTimeSuggestions, Office365Outlook.FindMeetingTimes({RequiredAttendees: _allRoomsConcat, MeetingDuration: Value(MeetingDurationSelect1.Text),
Start: _selectedMeetingTime.StartTime & "Z", End: _selectedMeetingTime.EndTime & "Z", MinimumAttendeePercentage: "1",
IsOrganizerOptional: "false", ActivityDomain: "Unrestricted"}).MeetingTimeSuggestions);
ClearCollect(AvailableRooms, AddColumns(AddColumns(Filter(First(RoomTimeSuggestions).AttendeeAvailability, Availability = "Free"),
"Address", Attendee.EmailAddress.Address), "Name", LookUp(AllRooms, Address = Attendee.EmailAddress.Address).Name));
ClearCollect(AvailableRoomsOptimal, DropColumns(DropColumns(AvailableRooms, "Availability"), "Attendee")),
Set(_selectedRoom, ThisItem)
);
UpdateContext({_loadingRooms: false})

Best Regards,
Bof