Commit All Mode (#24293)

- **Base diffs on uncommitted changes**
- **Show added files in project diff view**
- **Fix git panel optimism**
- **boop**
- **Co-Authored-By: Cole <cole@zed.dev>**
- **Fix commit (all) buttons state**
- **WIP**
- **WIP: commit all mode**

Closes #ISSUE

Release Notes:

- N/A
This commit is contained in:
Conrad Irwin 2025-02-05 12:13:32 -07:00 committed by GitHub
parent 6d81ad1e0b
commit 971a91ced7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 142 additions and 118 deletions

View file

@ -164,6 +164,7 @@ pub enum IconName {
ChevronRight,
ChevronUp,
ChevronUpDown,
Circle,
Close,
Code,
Command,

View file

@ -43,6 +43,7 @@ pub struct Checkbox {
id: ElementId,
toggle_state: ToggleState,
disabled: bool,
placeholder: bool,
on_click: Option<Box<dyn Fn(&ToggleState, &mut Window, &mut App) + 'static>>,
filled: bool,
style: ToggleStyle,
@ -62,6 +63,7 @@ impl Checkbox {
style: ToggleStyle::default(),
tooltip: None,
label: None,
placeholder: false,
}
}
@ -71,6 +73,12 @@ impl Checkbox {
self
}
/// Sets the disabled state of the [`Checkbox`].
pub fn placeholder(mut self, placeholder: bool) -> Self {
self.placeholder = placeholder;
self
}
/// Binds a handler to the [`Checkbox`] that will be called when clicked.
pub fn on_click(
mut self,
@ -145,23 +153,26 @@ impl Checkbox {
impl RenderOnce for Checkbox {
fn render(self, _: &mut Window, cx: &mut App) -> impl IntoElement {
let group_id = format!("checkbox_group_{:?}", self.id);
let color = if self.disabled {
Color::Disabled
} else if self.placeholder {
Color::Placeholder
} else {
Color::Selected
};
let icon = match self.toggle_state {
ToggleState::Selected => Some(Icon::new(IconName::Check).size(IconSize::Small).color(
if self.disabled {
Color::Disabled
} else {
Color::Selected
},
)),
ToggleState::Indeterminate => Some(
Icon::new(IconName::Dash)
ToggleState::Selected => Some(if self.placeholder {
Icon::new(IconName::Circle)
.size(IconSize::XSmall)
.color(color)
} else {
Icon::new(IconName::Check)
.size(IconSize::Small)
.color(if self.disabled {
Color::Disabled
} else {
Color::Selected
}),
),
.color(color)
}),
ToggleState::Indeterminate => {
Some(Icon::new(IconName::Dash).size(IconSize::Small).color(color))
}
ToggleState::Unselected => None,
};

View file

@ -58,12 +58,12 @@ impl From<bool> for ToggleState {
}
}
impl From<Option<bool>> for ToggleState {
fn from(selected: Option<bool>) -> Self {
match selected {
Some(true) => Self::Selected,
Some(false) => Self::Unselected,
None => Self::Unselected,
}
}
}
// impl From<Option<bool>> for ToggleState {
// fn from(selected: Option<bool>) -> Self {
// match selected {
// Some(true) => Self::Selected,
// Some(false) => Self::Unselected,
// None => Self::Unselected,
// }
// }
// }