• Stars
    star
    148
  • Rank 249,929 (Top 5 %)
  • Language
    TypeScript
  • License
    MIT License
  • Created over 8 years ago
  • Updated 7 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Ignite UI Angular component extensions by Infragistics

Ignite UI wrappers for Angular

NOTE: Ignite UI wrappers for Angular are deprecated! Use igniteui-angular native Angular components instead!

Node.js CI Coverage Status
npm version

Use the components found in projects\igniteui-angular-wrappers\src\public-api.ts to use Ignite UI controls in Angular applications. Work with the running samples here.

IMPORTANT The repository has been renamed from igniteui-angular2 to igniteui-angular-wrappers. Read more on our new naming convention.

Requirements

Running the samples

To run the samples, you need Node.js installed on your machine. Afterwards, from your terminal run the following commands:

  1. git clone https://github.com/IgniteUI/igniteui-angular-wrappers
  2. cd igniteui-angular-wrappers
  3. npm install
  4. npm start

igniteui-angular-wrappers depends on the ignite-ui-full licensed package. Follow this guide on setting up access to the Ignite UI private npm feed and add the dependency to the package.json.

"dependencies": {
	"@infragistics/ignite-ui-full": "latest"
}

Getting Started

Ignite UI CLI

To get started with the Ignite UI CLI and the Ignite UI Angular wrappers:

npm i -g igniteui-cli
ig new <project name> --framework=angular --type=ig-ts
cd <project name>
ig add combo <component name>
ig start

Initializing controls

In an Angular application, Ignite UI controls support markup initialization which is done by using custom tags.

Custom tags

Each control implements a custom tag component where the tag name is formed by splitting each capital letter in the control name with the - symbol.

Note: It is recommended to use closing tags (</ig-combo>) over the self-closing tags (<ig-combo/>), because the latter are known to make issues on some browsers (depending on the used document mode).

Examples:

Control Name Tag
igCombo <ig-combo>
igGrid <ig-grid>
igDataChart <ig-data-chart>
igDialog <ig-dialog>
igDateEditor <ig-date-editor>
igEditor <ig-editor>
igMaskEditor <ig-mask-editor>
igNumericEditor <ig-numeric-editor>
igPercentEditor <ig-percent-editor>
igTextEditor <ig-text-editor>
igDatePicker <ig-date-picker>
igTree <ig-tree>
igMap <ig-map>
igUpload <ig-upload>
igVideoPlayer <ig-video-player>

Configuring Control Options

There are two mandatory attributes that need to be set to an Ignite UI control custom tag: options - points to a property on the application component class containing the control's configuration. widgetId - the control requires an id to be assigned to it.

Example:

@Component({
    selector: 'my-app',
    template: `<ig-grid 
        [(options)]="gridOptions" 
        [(widgetId)]='id' 
        [dataSource]='data'
        ></ig-grid>`
})
export class AppComponent {
    private gridOptions: IgGrid;
    private id: string;
    private data: any;

    constructor() {
        this.data = Northwind.getData();
        this.id ='grid1';
        this.gridOptions = {
            width: "100%",
            height: "400px",
            autoGenerateColumns: true
        };
    }
}

In this example options attribute points to gridOptions property on the application compoment class and widgetId points to the id property.

Configuring Top Level Control Options

All top level options are allowed to be set as attributes of an Ignite UI control custom tag. In this case options attribute is not mandatory, but it is allowed. And if both - options and top-level attributes are combined, top-level attributes will override options, when there are overlapping properties. Also changing top-level attribute will apply the change to the widget, only if the option is settable.

Example:

@Component({
    selector: 'my-app',
    template: `<ig-grid
        [widgetId]='id'
        [width]='w'
        [autoCommit]='true'
        [dataSource]='data'
        [height]='h'
        [autoGenerateColumns]='true'
        >
    </ig-grid>`
})
export class AppComponent {
    private id: string;
    private data: any;
    private w: string;
    private h: string;
    private pKey: string;

    constructor() {
        this.data = Northwind.getData();
        this.id ='grid1';
        this.w = '100%';
        this.h = '400px';
        this.pKey = 'ProductID';
    }
}

Other custom tags

There are two custom tags <column> and <features> that are used in igGrid/igTreeGrid/igHierarchicalGrid to configure the columns and features options accordingly.

Example:

	<ig-grid [widgetId]='id'>
		<column [key]="'ProductID'" [headerText]="'Product ID'" [width]="'165px'" [dataType]="'number'"></column>
		<column [key]="'ProductName'" [headerText]="'Product Name'" [width]="'250px'" [dataType]="'string'"></column>
		<column [key]="'QuantityPerUnit'" [headerText]="'Quantity per unit'" [width]="'250px'" [dataType]="'string'"></column>
		<column [key]="'UnitPrice'" [headerText]="'Unit Price'" [width]="'100px'" [dataType]="'number'"></column>
		<features>
			<paging [pageSize]="currPageSize"></paging>
			<filtering></filtering>
            <selection></selection>
            <group-by></group-by>
		</features>
	</ig-grid>

Each of the grids features is also represented by a custom tag.

Examples:

Feature Name Tag
ColumnMoving <column-moving>
Filtering <filtering>
GroupBy <group-by>
Hiding <hiding>
CellMerging <cell-merging>
AppendRowsOnDemand <append-rows-on-demand>
MultiColumnHeaders <multi-column-headers>
Paging <paging>
Responsive <responsive>
Resizing <resizing>
RowSelectors <row-selectors>
Selection <selection>
Sorting <sorting>
Summaries <summaries>
ColumnFixing <column-fixing>
Tooltips <tooltips>
Updating <updating>

Apply new set of Control Options

In order to change the more options at once (or recreate the component with another set of options), the new configuration can be applied to the options property.

Example:

@Component({
    selector: 'my-app',
    template: `<ig-grid 
        [(options)]="gridOptions" 
        [(widgetId)]='id' 
        [dataSource]="data" 
        ></ig-grid>`
})
export class AppComponent {
    private gridOptions: IgGrid;
    private id: string;
    private data: any;

    constructor() {
        this.data = Northwind.getData();
        this.id ='grid1';
        this.gridOptions = {
            width: "100%",
            height: "400px",
            autoGenerateColumns: true
        };
    }

    recreateGrid() {
        this.gridOptions = {
            dataSource: Northwind.getAnotherData(),
            width: "700px",
            autoGenerateColumns: true,
            features: [
                { name: "Paging" }
            ]
        };
    }
}

In this example options attribute points to gridOptions and changing in reference will destroy the grid, combine the old options with new ones and create the grid with the combined options. Also note that the new grid will have height of 400px, even though it's not defined into the new options, because of the combination with new options. If disabling an option is required set it to null, undefined, [] or {}.

Handling events

Binding to control events is achieved by assigning attributes where the name of the attribute is the name of the control's event name surrounded by parenthesis and the value is the name of the event handler.

Examples:

Event Markup
igGrid.events.dataBind <ig-grid (dataBind)="dataBindHandler">
igCombo.events.textChanged <ig-combo (textChanged)="textChangedHandler">
igDateEditor.events.keypress <ig-date-editor (keypress)="keypressHandler">
@Component({
    selector: 'my-app',
    template: `<ig-grid 
        [(options)]="gridOptions" 
        [(widgetId)]='id' 
        [dataSource]="data" 
        (dataBind)="dataBindHandler($event)"></ig-grid>`
})
export class AppComponent {
    private gridOptions: IgGrid;
    private id: string;
    private data: any;
    private dataBindHandler: any;
    
    constructor() {
        this.data = Northwind.getData();
        this.id ='grid1';
        this.gridOptions = {
            width: "100%",
            height: "400px",
            autoGenerateColumns: true
        };
    }
    
    dataBindHandler(event, ui) {
        // event handler code    
    }
}

Binding to igGrid* feature events is done in the control's configuration code.

Example:

@Component({
    selector: 'my-app',
    template: `<ig-grid 
        [(options)]="gridOptions" 
        [dataSource]="data" 
        [(widgetId)]='id'></ig-grid>`
})
export class AppComponent {
    private gridOptions: IgGrid;
    private id: string;
    private data: any;

    constructor() {
        this.data = Northwind.getData();
        this.id ='grid1';
        this.gridOptions = {
            width: "100%",
            height: "400px",
            autoGenerateColumns: true,
            features: [
                {
                    name: "Filtering",
                    dataFiltered: function (evt, ui) {
                        // event handler code
                    }
                    
                }
            ]
        };
    }
}

In this example igGridFiltering dataFiltered event is handled in the application component class.

Calling Component methods

Component methods can be called by accessing the component from the view. For example:

@Component({
    selector: 'my-app',
    template: '<ig-grid #grid1
        [(options)]="gridOptions">
        <features>
            <paging [pageSize]="'2'"></paging>
        </features>
    </ig-grid>'
})
export class AppComponent {
    private gridOptions: IgGrid;
    @ViewChild("grid1") myGrid: IgGridComponent;
    private id: string;
    constructor() { ... }
     
    ngAfterViewInit() {
        //call grid method
        var cell = this.myGrid.cellById(1, "Name");
        //call grid paging method
        this.myGrid.featuresList.paging.pageIndex(2);
    }
}

Two-way Data Binding

The following controls currently support two-way data binding:

  1. igGrid
  2. igTreeGrid
  3. igHierarchicalGrid
  4. igCombo
  5. igEditors
  6. igTree

For the two-way data binding to work you need to assign the data source as a property in the template. Example:

<ig-combo [widgetId]="'combo2'"
        [(options)]="options" 
        [dataSource]='northwind'
        [(ngModel)]="combo.value1">
</ig-combo>

Note: Two-way data binding won't work if you use options.dataSource in the .ts file as a configuration.

To manually trigger change detection use the markForCheck API.

Use igDataSource inside Angular app

Thanks to the @types/ignite-ui, it is possible to create an instance of the all of the Ignite UI data sources.

let source = new Infragistics.DataSource(settings);

This data source instance is granted with intellisense about igDataSource methods.

source.dataBind();

Review the following demo for more information.

Running tests

The command for running the tests is:

npm test

After that, if all tests successfully passed a code coverage for the public-api.ts file will be generated under the ./coverage/igniteui-angular-wrappers folder.

To see the code coverage you can open one of the html files under ./coverage/igniteui-angular-wrappers/src.


What is Ignite UI?

Ignite UI Logo

Ignite UI is an advanced HTML5+ toolset that helps you create stunning, modern Web apps. Building on jQuery and jQuery UI, it primarily consists of feature rich, high-performing UI controls/widgets such as all kinds of charts, data visualization maps, (hierarchical, editable) data grids, pivot grids, enhanced editors (combo box, masked editors, HTML editor, date picker, to name a few), flexible data source connectors, and a whole lot more. Too many to list here - check out the site for more info and to download a trial.

Ignite UI is not just another library created in someone's free time. It is commercial-ready, extremely well-tested, tuned for top performance, designed for good UX, and backed by Infragistics, an experience-focused company with a track record of over 24 years of experience in providing enterprise-ready, high-performance user interface tools for web, windows and mobile environments.

Infragistics Logo

More Repositories

1

igniteui-angular

Ignite UI for Angular is a complete library of Angular-native, Material-based Angular UI components with the fastest grids and charts, Pivot Grid, Dock Manager, Hierarchical Grid, and more.
TypeScript
571
star
2

ignite-ui

Ignite UI for jQuery by Infragistics
JavaScript
477
star
3

igniteui-react-wrappers

Ignite UI components for React
JavaScript
168
star
4

igniteui-cli

Ignite UI Command-Line Interface by Infragistics
TypeScript
118
star
5

igniteui-webcomponents

Ignite UI for Web Components is a complete library of UI components, giving you the ability to build modern web applications using encapsulation and the concept of reusable components in a dependency-free approach.
TypeScript
117
star
6

igniteui-angularjs

Ignite UI extensions for AngularJS
JavaScript
106
star
7

app-builder

App Builderβ„’ is a cloud-based WYSIWYG drag & drop tool that helps teams design and build complete business apps 80% faster than before. It has an integrated design system – Indigo.Design – and packs real UI components for Angular, Blazor, and Web Components.
86
star
8

igniteui-angular-ui-kits

UI Kits for Ignite UI for Angular
85
star
9

warehouse-js-blocks

Sample Warehousing application built with Ignite UI for Angular
TypeScript
81
star
10

crypto-portfolio-app

Application that uses Ignite UI for Angular components along with Firebase data storage and a lot more ..
TypeScript
75
star
11

help-topics

Ignite UI Help Topics
JavaScript
42
star
12

igniteui-dockmanager

Ignite UI Dock Manager Web Component provides means to manage the layout of your application.
37
star
13

igniteui-angular-samples

Ignite UI for Angular demos for all available components and features
TypeScript
36
star
14

igniteui-docfx

Ignite UI for Angular topics for all available components and features
JavaScript
29
star
15

marketing-dashboard-sample

The Marketing Dashboard sample makes use of the Ignite UI date picker, data chart, map, doughnut chart and bullet graph controls to tackle specific analytical challenges. The dashboard view brings together different data points a marketing expert would want to track like sessions, conversions and conversion costs.
JavaScript
24
star
16

COVID-19-Dashboard

COVID-19 spread and data dashboard built with Ignite UI for Angular
TypeScript
21
star
17

typedoc-plugin-localization

TypeScript
20
star
18

finance-sample

The Finance Dashboard sample demonstrates the data chart, combo, dialog, and zoom bar controls for the Financial Services industry. The data chart is optimized for high-speed financial charting. This sample uses large datasets with millions of data points and real-time updates. The data chart enables key statistical and technical indicators and comparisons to key competitors.
JavaScript
16
star
19

project-management-dashboard-sample

The Project Management Dashboard sample showcases jQuery controls like the doughnut chart and the hierarchical grid to represent task progress and time allocation. This sample even combines the grid and linear gauge to help users easily identify risks and adjust project plans accordingly.
JavaScript
16
star
20

material-icons-extended

A subset of icons that extends the official Material Design Icons by Google.
TypeScript
15
star
21

er-dashboard-sample

The ER Dashboard sample demonstrates the capabilities of multiple Ignite UI controls working together into a single complex view designed for mobile tablet devices. The main part of the sample is several charts displaying different kinds of information about patients admitted to the emergency ward of a hospital. The sample shows how the same information can be displayed in a grid and how to switch between views. Combo boxes are used to select different medical parameters to be displayed dynamically update the data behind the charts. Additional buttons let you change the chart visualization with the same data.
JavaScript
14
star
22

ng-conf-2020-workshop

TypeScript
13
star
23

igniteui-blazor-examples

samples browser app and individual samples on how to use Ignite UI for Blazor components
C#
12
star
24

personal-finance-sample

The Personal Finance Dashboard sample demonstrates the chart controls from the Ignite UI library acting together with grids, combo boxes and editors in a complex application. The sample is designed with mobile tablet devices in mind taking into account screen size and performance. The view displays several aspects of personal finances in graphic and tabular form separated into panels. It shows selecting different periods of time changes the data behind a chart and how to dynamically change the data series rendered by a chart.
JavaScript
12
star
25

igniteui-theming

A set of Sass mixins, functions, and variables used to create themes for a variety of UI frameworks built by Infragistics.
SCSS
11
star
26

igniteui-react-examples

samples browser app and individual samples on how to use Ignite UI for React components
TypeScript
11
star
27

igniteui-xplat-docs

cross-platform docs for Ignite UI for Angular, Blazor, React, and WebComponents
TypeScript
10
star
28

personal-health-tracker-sample

The Personal Health Tracker sample demos using Ignite UI inside the PhoneGap framework for native-like, installed app experiences.
JavaScript
9
star
29

autosales-dashboard-sample

The Auto Sales Tracking sample is an example application showcasing some of the most powerful Ignite UI controls including the map, grid, and various charts. The map control shows the geographical region represented in the sales data. Bullet graphs, data charts, and pie charts show sales figures over time and in relation to target figures. Sales are detailed using the grid control by dealership and manufacturer and bullet graphs embedded in the grid provide glanceable sales summaries. The application demonstrates how Ignite UI controls are used together to build an immersive and attractive user experience.
JavaScript
9
star
30

igniteui-typedoc-theme

infragistics typedoc theme
TypeScript
8
star
31

indigo-design-docfx

JavaScript
8
star
32

igniteui-wc-examples

samples browser app and individual samples on how to use Ignite UI for Web Components
TypeScript
7
star
33

generator-igniteui

A Yeoman (http://yeoman.io) generator for Ignite UI.
HTML
7
star
34

igniteui-docfx-template

TypeScript
7
star
35

igniteui-react

High-Performance Data Grid and High-Volume Data Charts
6
star
36

TaskPlanner

Task Planner app created with Ignite UI For Angular
TypeScript
6
star
37

igniteui-angular-i18n

Moved to https://github.com/IgniteUI/igniteui-angular/tree/master/projects/igniteui-angular-i18n
TypeScript
5
star
38

finjs-web-api

C#
4
star
39

sassdoc-plugin-localization

Plugin localization for sassdoc documentation
TypeScript
4
star
40

igniteui-live-editing-samples

This repository is used for StackBlitz and CodeSandbox config samples
TypeScript
4
star
41

ignite-ui-IntelliSense-for-VS-Code

Ignite UI IntelliSense extension
TypeScript
3
star
42

ignite-ui-bower

Less
3
star
43

dock-manager-electron-app

Dock Manager Electron App
TypeScript
3
star
44

ERDashboard-Angular

ER Dashboard in Angular
TypeScript
3
star
45

ig-editor

TypeScript
3
star
46

igniteui-angular-examples

angular sample browser with stand-alone sample projects
JavaScript
3
star
47

igniteui-blazor

Ignite UI for Blazor component library packs 35+ native Blazor UI Controls with 60+ high-performance Charts designed for any Blazor WASM or Server-side app scenario.
3
star
48

help-samples-src

JavaScript
3
star
49

NorthwindAPI

C#
3
star
50

igniteui-xplat-examples

C#
3
star
51

igniteui-theme-service

Ignite UI theme service will serve your app with a theme in CSS or SASS format
3
star
52

Stackblitz-IgniteuiAngular-Startup-Project

TypeScript
2
star
53

create-webcomponents-ts-app

generator for a vanilla TS Web Components app.
JavaScript
2
star
54

app-builder-docfx

JavaScript
2
star
55

InventoryManagementApp

TypeScript
2
star
56

ig-pkg-html

Base HTML package for Ignite UI Web Designer.
JavaScript
2
star
57

world-stats-sample

The WorldStats application sample shows the amazing Motion Framework of the Ignite UI Data Chart control that animates data over time to provide users with an extra layer of temporal insight into their data. This sample gives users rich insight into statistical data about all countries in the world by leveraging the Ignite UI Data Chart, Data Grid, Dialog Window, and more. Each chart supports zooming and drag-to-zoom, along with multiple series, series, types, and scales.
JavaScript
2
star
58

app-builder-client

1
star
59

DockManager-DataAnalysis

TypeScript
1
star
60

HRApplication

C#
1
star
61

ng-universal-example

HTML
1
star
62

igniteui-angular-marketing-dashboard

TypeScript
1
star
63

ASP.NET-Core-Samples

The repository consists of samples using the Ignite UI For Javascript library in a context of ASP.NET Core Web Application.
C#
1
star
64

ig-pkg-bootstrap

Bootstrap package for the Ignite UI Web designer.
JavaScript
1
star
65

igniteui-angular-api-i18n

1
star
66

ig-pkg-igniteui

Ignite UI package for the Ignite UI Web designer.
JavaScript
1
star
67

ig-typedoc-theme

Feel and look of Infragistics API documentation with internationalization
TypeScript
1
star