Giter Site home page Giter Site logo

exentials / fluentui-blazor Goto Github PK

View Code? Open in Web Editor NEW

This project forked from microsoft/fluentui-blazor

0.0 0.0 0.0 54.64 MB

Microsoft Fluent UI Blazor components library. For use with .NET 6.0 or higher Blazor applications

Home Page: https://www.fluentui-blazor.net

License: MIT License

Shell 0.03% JavaScript 2.16% C# 84.90% CSS 3.95% HTML 8.86% Dockerfile 0.09%

fluentui-blazor's Introduction

Microsoft Fluent UI Blazor components

License: MIT .NET C# Nuget Nuget

Validate Security Discord

โญ We appreciate your star, it helps!

Introduction

The Microsoft.Fast.Components.FluentUI package provides a set of Blazor components which you can use to build applications that have the look and feel or modern Microsoft applications. Some of the componets are wrappers around Microsoft's official FluentUI Web Components. Others are components that leverage the Fluent UI design system or make it easier to work with Fluent UI. To get up and running with the library, see the 'Getting Started' section below.

The source for the library is hosted in the Fast Blazor repository at GitHub. Documentation on the components is available at the demo site and at docs.microsoft.com.

The source for @fluentui/web-components is hosted in the Fluent UI mono-repository. Documentation on the components is available on docs.microsoft.com. The FluentUI Web Components are built on FAST and work in every major browser.

Upgrading from an earlier version

If you are upgrading from an earlier version of the library, please see the what's new for information on (breaking) changes.

Getting Started

To get started using the Fluent UI Blazor components for Blazor, you will first need to install the official Nuget package for Fluent UI in the project you would like to use the library and components. You can use the following command:

dotnet add package Microsoft.Fast.Components.FluentUI

Script

As of version 2.3 it is no longer needed to include the web-components script in your index.html or _Layout.cshtml file. The script is now included in the library. This way we can safeguard that the you are always using the best matching version of the script.

If you are upgrading from an earlier version please remove the script from your index.html or _Layout.cshtml file.

Styles

In order for this library to work as expected, you will need to add the composed scoped CSS file for the components. This can be done by adding the following line to the section of your index.html or _Layout.cshtml file in the project you installed the package:

<link href="{PROJECT_NAME}.styles.css" rel="stylesheet" /> 

It is possible that the line is already in place (but commented out).

Reboot

Reboot is a collection of element-specific CSS changes in a single file to help kick-start building a site with the Fluent UI Blazor components for Blazor. It provides an elegant, consistent, and simple baseline to build upon.

If you want to use Reboot, you'll need to add to your index.html or _Layout.cshtml file a line that includes the stylesheet (.css file). This can be done by adding the following line to the <head> section:

<link href="_content/Microsoft.Fast.Components.FluentUI/css/reboot.css" rel="stylesheet" />

It is entirely possible to build a site without using Reboot. If you choose not to use it, please do add the variables.css file (which is otherwise imported through the reboot.css file) to your index.html or _Layout.cshtml file in the <head> section like this:

<link href="_content/Microsoft.Fast.Components.FluentUI/css/variables.css" rel="stylesheet" />

The file contains a number of CSS variables that are required to be defined for the components to work correctly.

Project file

if you want to use icons and/or emoji, starting with version 2.1 you need add a <PropertyGroup> to your project file. With this you can specify which icons and emoji are made available for usage and publication. Please refer to the project setup document for more information.

Code

Please refer to the code setup document to learn what needs to be included in your Program.cs file so that all necessary services are available and setup in the correct way.

Getting started by using project templates

To make it easier to start a project that uses the Fluent UI Web Components for Blazor out of the box, we have created the Microsoft.Fast.Templates.FluentUI template package.

The package contains templates for creating Blazor Server and/or Blazor WebAssembly apps that mimic the regular Blazor templates with the Fluent UI components already set up (and all the Bootstrap styling removed). All components have been replaced with Fluent UI counterparts (and a few extra have been added). Please see the documentation page for more information.

If you want to use icons and/or emoji with applications based on the templates, you still need to make the changes to the project file and Program.cs as described in the previous sections.

Using the FluentUI Web Components

With the package installed and the script configured, you can begin using the Fluent UI Blazor components in the same way as any other Blazor component. Just be sure to add the following using statement to your views:

@using Microsoft.Fast.Components.FluentUI

Here's a small example of a FluentCard with a FluentButton that uses the Fluent "Accent" appearance:

@using Microsoft.Fast.Components.FluentUI

<FluentCard>
  <h2>Hello World!</h2>
  <FluentButton Appearance="@Appearance.Accent">Click Me</FluentButton>
</FluentCard>

๐Ÿ’ก Tip

You can add @using Microsoft.Fast.Components.FluentUI to the namespace collection in _Imports.razor, so you don't have to add it to every razor page that uses one of the components.

Configuring the Design System

The Fluent UI Blazor components are built on FAST's Adaptive UI technology, which enables design customization and personalization, while automatically maintaining accessibility. This is accomplished through setting various "Design Tokens". The library exposes all of the (over 160) Design Tokens, which you can use both from code as in a declarative way in your .razor pages. The three different ways of working with design tokens are described in the design tokens page.

Blazor Hybrid

Starting with the 2.0 release, you can also use this library in your Blazor Hybrid projects. Setup is almost the same as described in the "Getting started" section above, but to get everything to work you'll need to take two extra steps:

  1. You need to add a MAUI specific IStaticAssetService implementation.
    Due to some issues, this file can't be part of the library (yet) so this needs to be added manually to your MAUI Blazor project.
    Create a new class in you project called FileBasedStaticAssetService.cs Replace it's contents with the following:
using System.Net;
using Microsoft.Fast.Components.FluentUI.Infrastructure;

namespace Microsoft.Fast.Components.FluentUI;

public class FileBasedStaticAssetService : IStaticAssetService
{
	public async Task<string> GetAsync(string assetUrl, bool useCache = false)
	{
		string result = null;
		HttpRequestMessage message = CreateMessage(assetUrl);
		if (string.IsNullOrEmpty(result))
		{
			result = await ReadData(assetUrl);
		}
		return result;
	}
	private static HttpRequestMessage CreateMessage(string url) => new(HttpMethod.Get, url);
 
	private static async Task<string> ReadData(string file)
	{
		using var stream = await FileSystem.OpenAppPackageFileAsync($"wwwroot/{file}");
		using var reader = new StreamReader(stream);
		return await reader.ReadToEndAsync();
	}
}
  1. You need to make some changes in your MauiProgram.cs file
    Make sure the following is added before the return builder.Build() line:
builder.Services.AddFluentUIComponents(options =>
{
		options.HostingModel = BlazorHostingModel.Hybrid;
});
builder.Services.AddScoped<IStaticAssetService, FileBasedStaticAssetService>();

Use the DataGrid component with EF Core

If you want to use the <FluentDataGrid> with data provided through EF Core, you need to install an additional package so the grid knows how to resolve queries asynchronously for efficiency. .

Installation

Install the package by running the command:

dotnet add package Microsoft.Fast.Components.FluentUI.DataGrid.EntityFrameworkAdapter

Usage

In your Program.cs file you need to add the following after the builder.Services.AddFluentUIComponents(...); lines:

builder.Services.AddDataGridEntityFrameworkAdapter();

Additional resources

Joining the Community

Looking to get answers to questions or engage with us in real-time? Our community is active on Discord. Submit requests and issues on GitHub, or join us by contributing on some good first issues via GitHub.

We look forward to building an amazing open source community with you!

Contact

  • Join the community and chat with us in real-time on Discord.
  • Submit requests and issues on GitHub.
  • Contribute by helping out on some of our recommended first issues on GitHub.

fluentui-blazor's People

Contributors

vnbaaij avatar awentzel avatar eisenbergeffect avatar ibrahimmaga avatar andras-csanyi avatar ogglas avatar ehsangfl avatar nicholasrice avatar williamw2 avatar shreyasjejurkar avatar emimontesdeoca avatar proh4ck avatar dvoituron-msft avatar electnewt avatar oneolddev avatar limefrogyank avatar dpsthree avatar danielchalmers avatar danroth27 avatar eddyhaigh avatar eweol avatar pk9r327 avatar luohuarain avatar eeegs avatar timheuer avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.