SpeakLink 0.1.2

There is a newer version of this package available.
See the version list below for details.
dotnet add package SpeakLink --version 0.1.2                
NuGet\Install-Package SpeakLink -Version 0.1.2                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="SpeakLink" Version="0.1.2" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add SpeakLink --version 0.1.2                
#r "nuget: SpeakLink, 0.1.2"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install SpeakLink as a Cake Addin
#addin nuget:?package=SpeakLink&version=0.1.2

// Install SpeakLink as a Cake Tool
#tool nuget:?package=SpeakLink&version=0.1.2                

NuGet version (SpeakLink)

Overview

The SpeakLink Mention Editor is an advanced .NET MAUI library that enhances text editor functionality with support for @mentions. Designed to bring the intuitive and flexible mention capabilities found on social media platforms to .NET MAUI apps, it offers a seamless integration for developers. It is up to you how you want the mention/hashtag picker to look; see the example project to see how the most common approach, 'mention list above input,' is implemented.

GIF image that displays sample project mention picking flow

Usage

  1. Add the Library: Integrate the SpeakLink.Mention library into your project either through NuGet or by adding a direct reference.

  2. Namespace Declaration: In your XAML, declare the SpeakLink Mention Editor's namespace:

    xmlns:mention="clr-namespace:SpeakLink.Mention;assembly=SpeakLink"
    
  3. Add the Editor: Implement the MentionEditor control in your XAML:

    <mention:MentionEditor x:Name="editor" />
    
  4. Configure Key Attributes: Customize the MentionEditor in your XAML to suit your application's requirements. Essential attributes include:

    • MentionSearchCommand: A ViewModel command that initiates the mention search.
    • IsSuggestionsPopupVisible: A Boolean that dynamically adjusts to control the visibility of mention suggestions.
    • ExplicitCharacters: Characters, like "@", used to trigger mention suggestions.

    The MentionSearchCommand is triggered with MentionSearchEventArgs, which contains ControlCharacter (like ExplicitCharacter, e.g., "@") and MentionQuery (e.g., 'Dav'). Your task is to filter suggestions based on the MentionQuery and display them, for example, using a CollectionView or another selector (refer to the Sample project for more details).

  5. Handling User Selections: When a user selects an item from the CollectionView/ListView/BindableLayout you used to display list of mentions, invoke:

    editor.InsertMention(id, mentionText);
    
  6. FormattedText Property Updates: The SpeakLink.Mention.MentionEditor's FormattedText property updates dynamically as the user types, deletes, or inserts a mention. Each mention is represented as a distinct MentionSpan that contains Id and Text as mentionText.

  7. Keyboard closing: The keyboard will close as soon as focus is lost. Unfortunately, I wasn't able to integrate with HideSoftInputOnTapped property of ContentPage because HideSoftInputOnTapped is internal class for MAUI, moreover it doesnt support adding additional ignore area for picker, so you have to add GestureRecognizer on your root element and add something like:

    private void HideKeyboard(object? sender, TappedEventArgs e)
    {
      if (!MentionEditor.IsFocused)
          return;
    
      if (MentionEditor.IsSuggestionsPopupVisible
          && e.GetPosition(MentionPickerView) is { } position
          && position.InsideElement(MentionPickerView))
      {
          return;
      }
    
      MentionEditor.Unfocus();
    }
    
Product Compatible and additional computed target framework versions.
.NET net8.0-android34.0 is compatible.  net8.0-ios17.0 is compatible.  net8.0-maccatalyst17.0 is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
0.6.5 74 11/27/2024
0.6.4 2,580 7/5/2024
0.6.3 105 7/5/2024
0.6.1 99 7/5/2024
0.6.0 110 7/5/2024
0.5.0 1,037 4/26/2024
0.4.1 709 3/14/2024
0.4.0 287 2/22/2024
0.3.1 225 2/9/2024
0.3.0 189 2/6/2024
0.2.3 114 2/2/2024
0.2.2 122 2/2/2024
0.2.1 104 2/1/2024
0.2.0 120 1/29/2024
0.1.2 141 12/27/2023