Code Monkey home page Code Monkey logo

taiga-ui's Introduction

taiga ui logo Taiga UI

CodeFactor npm version codecov All packages CI Deploy Downloads per month Discord Renovate GitHub commit activity (branch) Code style: prettier License

WebsiteDocumentationCore teamFigma

Taiga UI is fully-treeshakable Angular UI Kit consisting of multiple base libraries and several add-ons.

It is based on ng-polymorpheus dynamic content approach and uses Web APIs for Angular for required browser APIs.

Why Taiga UI

🧩 Modular and fully-treeshakable. We harnessed the power of Secondary Entry Points mechanism. You can import even just one entity from our library and be sure that there is no redundant code in your bundle

🧙 Agnostic. Our components are very flexible and are ready for any use case. But we take care of basic UX aspects to let you focus on your project features

🦋 Customizable. We use CSS custom properties for all our styling and provide easy methods to customize all UI components

🛠 Well engineered. We are not afraid to use DI to the max. All our components use OnPush, and the whole project is developed with strict TypeScript mode

📦 It's big! We have 130+ components, 100+ directives, dozens of tokens, utils and tools. And it isn't over yet 🚀

🏗 Maintained! The library started as an internal product in our company. It is used by 50+ projects in production now, and it is here to stay.

Read more about Taiga UI main features in this article on inDepth

Version compatibility

Taiga UI Angular Supported Latest version (npm)
3.x.y ^12.0.0 - latest ✅ Current npm version
2.x.y ^9.0.0 - ^15.0.0 No longer supported v2

How to start

See our Getting started page to start working with Taiga UI

You can also use our StackBlitz starter to create a quick sample with Taiga UI

🎨 Check out Taiga UI Figma library which you can use to design your app with Taiga UI components.

Community

💡 Your ideas are very welcome in Github issues or discussions

🗨 For English live chat join #taiga-ui channel in official Angular discord

💬 For Russian live chat join taiga_ui Telegram group

Contributing

See our CONTRIBUTING.md guide. Try to make pull request online from Web IDE.

Core team

Alex Inkin
     Alex Inkin     
Roman Sedov
 Roman Sedov 
Vladimir Potekhin
Vladimir Potekhin
Nikita Barsukov
Nikita Barsukov
Maksim Ivanov
Maksim Ivanov

License

🆓 Feel free to use our library in your commercial and private applications

All Taiga UI packages are covered by Apache 2.0

Read more about this license here

taiga-ui's People

Contributors

atharvchandratre avatar ddubrava avatar dependabot[bot] avatar drogenix avatar fynnfeldpausch avatar github-actions[bot] avatar gyxman avatar ikatsuba avatar ikurilov avatar karimovdev avatar krollikroddzer avatar makkaronis4e avatar marsibarsi avatar mdlufy avatar millersvt avatar n-barsukov avatar nikitadubinsk avatar nsbarsukov avatar renovate-bot avatar spicy-tomato avatar splincode avatar sviat9440 avatar taiga-family-bot avatar tinkoff-bot avatar victorientardif avatar vidhirambhia avatar vladimirpotekhin avatar volvachev avatar waterplea avatar zarghamkhandev avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

taiga-ui's Issues

[FEATURE] InternationalInputPhone i18n

InternationalInputPhone has a default list of countries with names in Russian. It would be better to have it in Eng with a russian version as an alternative

[FEATURE] i18n package

Let's make a package with providers for different languages. It will translate all Taiga UI components with one simple import

How to use:

import {RUSSIAN_PROVIDER} from '@taiga-ui/i18n';
...
{
  imports: [TuiRootModule, ...],
  providers: [RUSSIAN_PROVIDER],
  ...
}
export class AppModule {}

InputTime user interface

🚀 Feature request

What is a good UI for InputTime?

The drop-down list seems to be a pretty good solution when you have just a few time options. However the drop-down list doesn't seem to be a good fit for a generic time input that should accept all possible times of a day - or in my use-case every 5 minutes between 8:00am and 11:00pm.

So this feature request is to think about a good UI for entering times. Here are some existing solutions:

  • analog-like https://cutt.ly/Xh8Ri8h, but doesn't work as good as I initially thought... maybe it's because the user has to click/touch twice in whitespace (no real target) to turn the clock hand in the right direction
  • sliders https://cutt.ly/6h8Ryrx, but they are fiddly / unprecise
  • multi-columns https://cutt.ly/0h8Rcet, but visually not pleasing
  • arrows above/below hours/minutes https://cutt.ly/Oh8RgUs, this is currently my favourite type and works for touch input as well as mouse/keyboard

I hope someone with background in human/machine interaction and visually pleasing interfaces has a ground-breaking idea for a better InputTime visualisation... but the one with the arrows above/below hours and minutes might be a good starting point.

[FEATURE] Demo: Sync the opened doc page and the navigation side panel

🚀 Feature request

Is your feature request related to a problem?

If one opens the given link to the doc page or search and chose some stuff (component/directive/...) or just reload the page the side panel will be not synced with the opened doc page. Sometimes it may be really hard to find related pages inside the side panel since it contains a lot of links and groups.

Describe the solution you'd like

Would be nice to see synced side panel to easily find related stuff especially when there are exist a few types, eg inputs, charts, etc

Colleagues, can you be trusted? :-)

Good day!
The question is in the headline without a catch.

I follow your project, I really like it.

I am looking for a library for Angular and yours is very encouraging.

Libraries that I looked at have a number of disadvantages:

  1. a small number of components;
  2. long-term elimination of errors;
  3. "curve" design.

I would like to use one ecosystem to build the interface.

I like Quasar (https://quasar.dev/), but he Vue.

And I'm interested in: NX - Angular - NestJs

Question: are you planning Taiga UI - complete ecosystem?
If so, what are the dates?

Thank you :-)

[BUG] InputDate immediately closes on mobile

🐞 Bug report

Description

On mobile, the datepicker of InputDate immediately closes after it has been opened.

Reproduction

Open the datepicker on mobile at https://taiga-ui.dev/tui-input-date by clicking on the calendar icon.

Expected behavior

The datepicker stays open and is usable.

Versions

  • OS: Android
  • Browser: Chrome
  • Angular: 9
  • Package: @taiga-ui/core

Additional context

calendar.mp4

[FEATURE] Using other icons

🚀 Feature request

We need to add a guide on how to use different icon set. Perhaps a whole section on customisation with instructions on different aspects, such as theme, custom dialogs, etc.

[FEATURE] Switch to REM units

🚀 Feature request

Is your feature request related to a problem?

With REM units it would be possible to respect user size preferences and scale app on different devices

Describe the solution you'd like

All sizes, except borders and such should be switched from PX to REM.

🚀 - Use providers to inject default configurations

🚀 Feature request

Is your feature request related to a problem?

I would like to adjust the default values for several inputs on different components. In our project for instance, we would like to use the checkbox component in size l. Given the current implementation, we need to add the size input to every checkbox. It would be nice to globally define the default values via a configuration provider. Similar functionality exists on Angular Material and other frameworks.

Describe the solution you'd like

import {TUI_CHECKBOX_DEFAULT_OPTIONS} from '@taiga-ui/kit';
...
{
  imports: [TuiRootModule, ...],
  providers: [{
    provide: TUI_CHECKBOX_DEFAULT_OPTIONS,
    useValue: {
      size: 'l'
    }
  }],
  ...
}
export class AppModule {}

Describe alternatives you've considered

The only alternative currently is to set the size input on every checkbox.

Additional context

Ideally, this would be available for every component and not only for checkboxes. We can help provide PRs if you like the idea.

🛠 - Investigate other mask options

🚀 Feature request

Is your feature request related to a problem?

Last release of angular2-text-mask was about 3 years ago. Currently this project is not maintained. Using this library results in a build-time warning:
Warning: /node_modules/@taiga-ui/kit/ivy_ngcc/fesm2015/taiga-ui-kit-components-input-range.js depends on 'angular2-text-mask'. CommonJS or AMD dependencies can cause optimization bailouts.
For more info see: https://angular.io/guide/build#configuring-commonjs-dependencies

There is a possibility to switch off this warning. But I'm always frustrated when something can cause optimization bailouts. =)

Describe the solution you'd like

Maybe it would be better to migrate to ngx-mask (https://github.com/JsDaddy/ngx-mask). This project looks alive.

Describe alternatives you've considered

Additional context

[FEATURE] - Demo: Show all modules used in each example

🚀 Feature request

Is your feature request related to a problem?

If one quickly wants to reproduce a bug from the demo page. Or play around. Developers intend to copy and paste the HTML, TS, and Style content into StackBlitz.

Most of the time there are module error because other modules were used in the same example.

Describe the solution you'd like

Would be nice to know all the modules involved in each example. This will help devs understand how modular the Taiga UI approach really is.

Or even better, a StackBlitz for each example 😄

Additional context

Screenshot from Angular Material:
image

[FEATURE] File icons

🚀 Feature request

Is your feature request related to a problem?

For a given file type I would like to display a little icon to make the file easily recognizable. Think of a folder listing on the browser or a simple list of files that could be prefixed with such a component.

Describe the solution you'd like

A simple icon component wrapper that receives the MIME type as an input and displays the respective icon. A set of icons is predefined (e.g. for image, video, audio, text, ...) bit additional icons can be configured using a provider.

Ionic-angular Compatibility.

Hi, this is a really great project and I would like to implement it in future apps.

What is the the current compatibility status for ionic-angular?

[BUG] - Demo - DarkMode bug.

🐞 Bug report

Description

My default gets changed to night mode (because of browser settings).

When I switch to day mode. Not all text is visible.

Reproduction

Browser should be on dark mode.
getting-started

Switch to light. The below happens:
image
Then
image

I did realize after investigation that this only happens when:

export const changeDetection = ChangeDetectionStrategy.OnPush;

Expected behavior

Versions

  • OS: Windows
  • Browser Chrome
  • Angular Demo

Additional context

The below attribute on the links never changed:
image

[FEATURE] Multi-token for DIALOGS

Sometimes we want to be able to have different implementations of dialogs in the same app. We should make DIALOGS a multi-token and have services contain DIALOG implementation inside.

[BUG] SVG XSS

🐞 Bug report

Description

SVG icons not rendering, throwing XSS warning and instead of icons printing SafeValue must use [property]=binding: (see https://g.co/ng/security#xss) on the page.

What am I missing?

Reproduction

app.module.ts

// ...
providers: [
    {
      provide: Sanitizer,
      useClass: NgDompurifySanitizer,
    }
  ],
// ...

my.component.ts

// ...
import { tuiIconPin, tuiIconCheckList } from '@taiga-ui/icons';
// ...
readonly mapIcon = tuiIconPin;
readonly lstIcon = tuiIconCheckList;
// ...

my.component.html

<!-- ... -->
<tui-tabs>
      <button tuiTab
              type="button">
        <tui-svg [src]="mapIcon"
                 class="tui-space_right-2"></tui-svg>
        Maps
      </button>
      <button tuiTab
              type="button">
        <tui-svg [src]="lstIcon"
                 class="tui-space_right-2"></tui-svg>
        Settings
      </button>
    </tui-tabs>
<!-- ... -->

Expected behavior

Rendered icons :)

Versions

  • OS: [e.g. iOS]
  • Browser: Chrome
  • Angular: 11
  • Taiga: 2.2.1

[FEATURE] a lazy loading image inside the Avatar component

🚀 Feature request

Is your feature request related to a problem?

I'm always frustrated when an image is not loading lazily. Like an image inside the Avatar component.

Describe the solution you'd like

All images inside the Avatar component loaded lazily OR loaded using the 'loading="lazy"' property

Describe alternatives you've considered

Nope

Additional context

[REFACTOR] Translate tests to english

🚀 Refactoring request

Is your feature request related to a problem?

I would like to contribute to the tests, but most of them are written in Russian.

Describe the solution you'd like

Tests should be translated to english.

[FEATURE] Contextual button colors

🚀 Feature request

Is your feature request related to a problem?

We are in need of contextual buttons that indicate success or danger.

Describe the solution you'd like

Buttons appearance mode should also support "Success" and "Error" and use the colors already defined in the current colors set.

Additional context

success
error

Ability to specify a prefix for InputNumber field

🚀 Feature request

Is your feature request related to a problem?

No

Describe the solution you'd like

Ability to show currency symbol at the beginning of a number input field rather than just a suffix.

Additional context

The InputNumber component currently displays currency symbol at the end using the [postfix] property, which depending on the country this might be fine, but would be great to have the ability to specify a [prefix] property value where this would be fixed to the left and data entry would occur after this value.

[BUG] Broken icons in InputPhoneInternational

🐞 Bug report

Description

InputPhoneInternational component page on documentation site has broken pics for icons, representing some countries like Russia, USA. But for some countries icons are not broken.
image

Reproduction

  1. Go to https://taiga-ui.dev/tui-input-phone-international
  2. See broken icons on the right of the input and in select.

Expected behavior

The icons should be visible

Versions

  • OS: MacOS Catalina 10.15.7
  • Browser Chrome 87.0.4280.141 (also Safari 14)

[FEATURE] Progress Bar / Ring

🚀 Feature request

Describe the solution you'd like

There is no progress indicator like a progress bar or ring in this library. This is quite common in other libraries and should also be implemented in taiga-ui.

Describe alternatives you've considered

The slider can be used with read only, but this is not realy a solution.

Additional context

This is a good example:
https://ng.ant.design/components/progress/en

image

[FEATURE] Improve type checking for tuiLet

🚀 Improve type checking for tuiLet

Is your feature request related to a problem?

Angular language service doesn't provide type checkng for value produced by expression *tuiLet="someValue$ | async as value". The same expression with ngIf works just fine.

Describe the solution you'd like

I'm guessing tuiLet is missing ngTemplateContextGuard as described here

Additional context

The problem occurs in VS Code with Angular Language Service extension.

[FEATURE] Allow tuiPure access this in methods

Sometimes we have something like readonly items we got from DI. They will never change so they will not spoil pureness of methods if we use them. However tuiPure currently has no access to this in methods, which is also inconsistent with its getters implementation. We should add access to this.

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.