Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,20 @@ protected virtual MultiString GetRawArgumentFromModalComponent(IModalComponent m
{
return ToMultiString(fileUploadComponent.AttachmentIds.Select(static id => id.ToString()));
}
case IModalRadioGroupComponent radioGroupComponent:
{
return radioGroupComponent.Value != null
? new MultiString(radioGroupComponent.Value)
: default;
}
case IModalCheckboxGroupComponent checkboxGroupComponent:
{
return ToMultiString(checkboxGroupComponent.Values);
}
case IModalCheckboxComponent checkboxComponent:
{
return new MultiString(checkboxComponent.Value.ToString());
}
default:
{
ThrowNotImplementedException($"{nameof(BindValues)}.{nameof(GetRawArgumentFromModalComponent)}() does not support the modal component of type: {modalComponent.Type} (ID: {modalComponent.Id}).");
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
namespace Disqord;

public interface IModalCheckboxComponent : IModalComponent, ICustomIdentifiableEntity
{
bool Value { get; }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
using System.Collections.Generic;

namespace Disqord;

public interface IModalCheckboxGroupComponent : IModalComponent, ICustomIdentifiableEntity
{
IReadOnlyList<string> Values { get; }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
namespace Disqord;

public interface IModalRadioGroupComponent : IModalComponent, ICustomIdentifiableEntity
{
string? Value { get; }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
namespace Disqord;

public static class LocalCheckboxComponentExtensions
{
public static TCheckboxComponent WithLabel<TCheckboxComponent>(this TCheckboxComponent checkboxComponent, string label)
where TCheckboxComponent : LocalCheckboxComponent
{
checkboxComponent.Label = label;
return checkboxComponent;
}

public static TCheckboxComponent WithIsDefault<TCheckboxComponent>(this TCheckboxComponent checkboxComponent, bool isDefault = true)
where TCheckboxComponent : LocalCheckboxComponent
{
checkboxComponent.IsDefault = isDefault;
return checkboxComponent;
}

public static TCheckboxComponent WithIsDisabled<TCheckboxComponent>(this TCheckboxComponent checkboxComponent, bool isDisabled = true)
where TCheckboxComponent : LocalCheckboxComponent
{
checkboxComponent.IsDisabled = isDisabled;
return checkboxComponent;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
using System.Collections.Generic;
using Qommon;

namespace Disqord;

public static class LocalCheckboxGroupComponentExtensions
{
public static TCheckboxGroupComponent AddOption<TCheckboxGroupComponent>(this TCheckboxGroupComponent component, string label, string value, string? description = null, bool isDefault = false)
where TCheckboxGroupComponent : LocalCheckboxGroupComponent
{
var option = new LocalCheckboxGroupOption(label, value)
{
IsDefault = isDefault
};

if (description != null)
option.Description = description;

return component.AddOption(option);
}

public static TCheckboxGroupComponent AddOption<TCheckboxGroupComponent>(this TCheckboxGroupComponent component, LocalCheckboxGroupOption option)
where TCheckboxGroupComponent : LocalCheckboxGroupComponent
{
if (component.Options.Add(option, out var list))
component.Options = new(list);

return component;
}

public static TCheckboxGroupComponent WithOptions<TCheckboxGroupComponent>(this TCheckboxGroupComponent component, IEnumerable<LocalCheckboxGroupOption> options)
where TCheckboxGroupComponent : LocalCheckboxGroupComponent
{
Guard.IsNotNull(options);

if (component.Options.With(options, out var list))
component.Options = new(list);

return component;
}

public static TCheckboxGroupComponent WithOptions<TCheckboxGroupComponent>(this TCheckboxGroupComponent component, params LocalCheckboxGroupOption[] options)
where TCheckboxGroupComponent : LocalCheckboxGroupComponent
=> component.WithOptions((IEnumerable<LocalCheckboxGroupOption>) options);

public static TCheckboxGroupComponent WithMinimumSelectedOptions<TCheckboxGroupComponent>(this TCheckboxGroupComponent checkboxGroupComponent, int minimumSelectedOptions)
where TCheckboxGroupComponent : LocalCheckboxGroupComponent
{
checkboxGroupComponent.MinimumSelectedOptions = minimumSelectedOptions;
return checkboxGroupComponent;
}

public static TCheckboxGroupComponent WithMaximumSelectedOptions<TCheckboxGroupComponent>(this TCheckboxGroupComponent checkboxGroupComponent, int maximumSelectedOptions)
where TCheckboxGroupComponent : LocalCheckboxGroupComponent
{
checkboxGroupComponent.MaximumSelectedOptions = maximumSelectedOptions;
return checkboxGroupComponent;
}

public static TCheckboxGroupComponent WithIsRequired<TCheckboxGroupComponent>(this TCheckboxGroupComponent checkboxGroupComponent, bool isRequired = true)
where TCheckboxGroupComponent : LocalCheckboxGroupComponent
{
checkboxGroupComponent.IsRequired = isRequired;
return checkboxGroupComponent;
}

public static TCheckboxGroupComponent WithIsDisabled<TCheckboxGroupComponent>(this TCheckboxGroupComponent checkboxGroupComponent, bool isDisabled = true)
where TCheckboxGroupComponent : LocalCheckboxGroupComponent
{
checkboxGroupComponent.IsDisabled = isDisabled;
return checkboxGroupComponent;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
using Qommon;

namespace Disqord;

public static class LocalCheckboxGroupOptionExtensions
{
public static LocalCheckboxGroupOption WithLabel(this LocalCheckboxGroupOption option, string label)
{
option.Label = label;
return option;
}

public static LocalCheckboxGroupOption WithValue(this LocalCheckboxGroupOption option, string value)
{
option.Value = value;
return option;
}

public static LocalCheckboxGroupOption WithDescription(this LocalCheckboxGroupOption option, string description)
{
option.Description = description;
return option;
}

public static LocalCheckboxGroupOption WithIsDefault(this LocalCheckboxGroupOption option, bool isDefault = true)
{
option.IsDefault = isDefault;
return option;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
using System.Collections.Generic;
using Qommon;

namespace Disqord;

public static class LocalRadioGroupComponentExtensions
{
public static TRadioGroupComponent AddOption<TRadioGroupComponent>(this TRadioGroupComponent component, string label, string value, string? description = null, bool isDefault = false)
where TRadioGroupComponent : LocalRadioGroupComponent
{
var option = new LocalRadioGroupOption(label, value)
{
IsDefault = isDefault
};

if (description != null)
option.Description = description;

return component.AddOption(option);
}

public static TRadioGroupComponent AddOption<TRadioGroupComponent>(this TRadioGroupComponent component, LocalRadioGroupOption option)
where TRadioGroupComponent : LocalRadioGroupComponent
{
if (component.Options.Add(option, out var list))
component.Options = new(list);

return component;
}

public static TRadioGroupComponent WithOptions<TRadioGroupComponent>(this TRadioGroupComponent component, IEnumerable<LocalRadioGroupOption> options)
where TRadioGroupComponent : LocalRadioGroupComponent
{
Guard.IsNotNull(options);

if (component.Options.With(options, out var list))
component.Options = new(list);

return component;
}

public static TRadioGroupComponent WithOptions<TRadioGroupComponent>(this TRadioGroupComponent component, params LocalRadioGroupOption[] options)
where TRadioGroupComponent : LocalRadioGroupComponent
=> component.WithOptions((IEnumerable<LocalRadioGroupOption>) options);

public static TRadioGroupComponent WithIsRequired<TRadioGroupComponent>(this TRadioGroupComponent radioGroupComponent, bool isRequired = true)
where TRadioGroupComponent : LocalRadioGroupComponent
{
radioGroupComponent.IsRequired = isRequired;
return radioGroupComponent;
}

public static TRadioGroupComponent WithIsDisabled<TRadioGroupComponent>(this TRadioGroupComponent radioGroupComponent, bool isDisabled = true)
where TRadioGroupComponent : LocalRadioGroupComponent
{
radioGroupComponent.IsDisabled = isDisabled;
return radioGroupComponent;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
using Qommon;

namespace Disqord;

public static class LocalRadioGroupOptionExtensions
{
public static LocalRadioGroupOption WithLabel(this LocalRadioGroupOption option, string label)
{
option.Label = label;
return option;
}

public static LocalRadioGroupOption WithValue(this LocalRadioGroupOption option, string value)
{
option.Value = value;
return option;
}

public static LocalRadioGroupOption WithDescription(this LocalRadioGroupOption option, string description)
{
option.Description = description;
return option;
}

public static LocalRadioGroupOption WithIsDefault(this LocalRadioGroupOption option, bool isDefault = true)
{
option.IsDefault = isDefault;
return option;
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;

namespace Disqord;
Expand Down Expand Up @@ -160,4 +160,24 @@ public static LocalFileUploadComponent FileUpload(string customId)
return new LocalFileUploadComponent()
.WithCustomId(customId);
}

public static LocalRadioGroupComponent RadioGroup(string customId, params IEnumerable<LocalRadioGroupOption> options)
{
return new LocalRadioGroupComponent()
.WithCustomId(customId)
.WithOptions(options);
}

public static LocalCheckboxGroupComponent CheckboxGroup(string customId, params IEnumerable<LocalCheckboxGroupOption> options)
{
return new LocalCheckboxGroupComponent()
.WithCustomId(customId)
.WithOptions(options);
}

public static LocalCheckboxComponent Checkbox(string customId)
{
return new LocalCheckboxComponent()
.WithCustomId(customId);
}
}
Loading
Loading