# Relevance.io Angular Applications toolkit

This software development kit aims to provide reuseable modules and components for building
web applications on top of the Relevance.io APIs, through the Angular library.

## Getting started

### Requirements

These are the general requirements for using this package:

- Node 12 or higher is recommended
- npm 6.14 or higher is recommended
- Angular 9+

### Installation

To install from the public repositories, run:

    npm install @relevance/angular-apps

Remember to install any peer dependencies for Angular (like `@angular/material` and `@angular/cdk`).

## Usage

This library is an Angular library that augments the `@relevance/angular-core` library for the
specific purpose of rapid application development.

To use this library, first load the module with want to use in an `NgModule`:

    import { SearchModule, SearchServiceConfig } from '@relevance/angular-apps';

    @NgModule({
        imports: [
            SearchModule.forRoot({
                queryConfig: {
                    url: 'https://url/to/query/api',
                },
            })
        ],
    })
    export class MyModule { }

Then use the DI mechanisms from Angular, e.g.:

    @Component({ ... })
    export class MyComponent {
        constructor(
            private searchService: SearchService,
        ) { }

        public suggestSomething() {
            this.searchService.suggest('something').then(() => { ... });
        }
    }

## Building and testing

To test a distribution, use:

    npm run test            # runs the tests
    npm run lint            # validates code syntax

Then build with:

    npm run build

### Development mode

This package provides an stream-lined way of locally installing dependencies, building and
linking for a development environment. The "development mode" basically installs the
dependencies and builds the package so that it can be used in cross-linked packages.

To use it, first install the dependencies in development mode:

    npm run install:dev

When building, use:

    npm run build:dev

This installs and builds the package as a *global package* that can be linked to other
dependent packages without first having to publish it.

## License

This code and its documentation is provided under the MIT License, bundled as the `LICENSE`
file. All original rights are reserved to Relevance.io 2020-.
