npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@n3/ng-uikit

v0.0.46

Published

This library was created for Netrika LLC and its education projects. It contains basic components and services including sticky 1-3 column layout, form controls, tabs and modality.

Downloads

19

Readme

N3 ng-uikit v. 1.0.0-beta

This library was created for Netrika LLC and its education projects. It contains basic components and services including sticky 1-3 column layout, form controls, tabs and modality.

N3 Grid

N3 Grid is an adaptive light-weight, Angular 5 compatible layout using CSS Grid Layout and position: sticky. It is designed to provide the user experience of a desktop application while working with a web app in a browser. The most important feature of this layout are our new light-weight sticky columns. Such UI pattern is used at a number of web apps such as Yandex Music, Facebook, VK. Now with the most browsers supporting CSS Grid Layout and position: sticky the amount of JS/TS code used for the layout can be painlessly minimized.

Using N3 Grid

N3 Grid contains following container types:

  • n3-grid: General container which contains all the application. Usually placed inside the root component. However one can place it anywhere at the application, depending on one's needs.
  • n3-header: Specific container for the header
  • n3-neck:: We refer to "neck" as to the changeable part of the header or something that goes between header and columns.
  • n3-column-grid: usually placed inside the router-outlet. Contains n3-columns elements. Changes its layout depending on the number of columns inside.
  • n3-column: Can be sticky or fixed with its own scroll (if type attribute = fixed).
  • n3-footer: Footer element. Usually it is hidden with a 3-column layout to let the third fixed column be 100vh height. To change this behaviour to default use forceFooterWhenTriple attribute = true.

Adaptive layout standard behaviour

N3 Grid currently has one breakpoint at 999px. Mobile devices display only one column at the same time. 2 others are collapsed until required. The standard behaviour can be described as following:

  1. The first opens by default, others are collapsed to the 40-px-width clickable vertical bars.
  2. Upon the user click at the bar the corresponding column expands and becomes active while the current active column collapses.

User can change standard behaviour for example by triggering the collapse/expand events upon other actions such as form submit or promise resolve.

To change standard behaviour one should provide the ColumnWorkerService to the component where this changes take place. For more information see the setActiveColumn method at ColumnWorkerService.

N3 Uikit

Uikit consist of custom form controls (input, select, radio, checkbox, datepicker, file, wysiwyg), navigation controls (anchor menu, bread crumbs, tabs, pagination) and auxiliary components (modal, overlay).

Using N3 Uikit

All the form controls are suitable for both reactive and template-driven forms by implementing ControlValueAccessor. Error handling and server-side validation is implemented via error property of a control component. One should aware that input and datepicker values are of string type. n3-select and n3-options values are of the N3 Data type:

{ id: number, name: string }

One can use special data-processing functions to convert values and options for n3-select to the type required.

Common

All form controls provide to some extent the similar input interface. However any control has its own specific options, the most common ones are described here.

Common options

  • title: string - Element title displayed at the top when the input is fulfilled.
  • placeholder: string - Element placeholder text. Displayed only when the value is empty.
  • isBlocked: boolean - True if the element is blocked.
  • error: any - Set Error function.

Form Controls

Input

<n3-input></n3-input>

Standard input component. Can be of any available type (text, number, password) except submit, radio or checkbox. HTML5 validation will be added soon.

Options

  • type: string - Input type (text, password, number, etc...)
  • icon: string - Custom icon code (svg or iconic font)
  • mask: any - Text mask for the input field

Select

<n3-select></n3-select>

Options

Data processing

There are 2 types of data processing for the N3 Select. You can use a fixed list of options or request it dynamically from the server. If your data is not of the N3 Data type you can process it using DataHandlingService N3 ng-base library.

Checkbox

<n3-checkbox></n3-checkbox>

Custom checkbox with standard or custom mark design.

Options

  • isCustom: boolean - True if one should use custom checkbox mark (the library has its default, however one can write custom styles).

Radio

<n3-radio></n3-radio>

Custom set of radio buttons with standard or custom mark design. Radio buttons array are of the N3 Data Type.

Options

  • list: array - Radio buttons of N3 data type
  • isCustom: boolean - True if one should use custom checkbox mark (the library has its default, however one can write custom styles).

Datepicker

<n3-datepicker></n3-datepicker>

Datepicker that opens inside the modal window and provides a set of date-choosing possibilities.

Options

  • isTime: boolean - True if one needs date-and-time-picker.

File

<n3-file></n3-file>

File input.

Options

Only standard

Navigation

Tabs

<n3-tab></n3-tab>

Set of tabs changing the route hash. One can subscribe to the params change event and switch some content blocks depending on the active tab.

Options

  • tabs: array - Tabs are set using N3 Data type as an array of objects.
  • tabName: string - query parameter name for the current tabs row

Pagination

Standard pager supporting next, previous pages and showing the list of all pages.

<n3-pager></n3-pager>

Options

  • current: number - current page
  • items: number - total number of items
  • pages: number - total number of pages
  • limit: number - limit of items per page

Anchor menu

<n3-anchor-menu></n3-anchor-menu> - Menu component

<anchor-target></anchor-target> - Anchor link

Anchor menu component and directive

Options

  • anchors: array - Set of menu items.

Bread crumbs

<n3-bread-crumbs></n3-bread-crumbs>

Navigation component showing multiple levels of navigation. Optionally it can render the title of the current page.

Options

  • title: string - Title of the current page
  • list: array - List of bread crumbs

The list item type is the following:

{ link: string text: string }

Further plans until the final release

  • n3-select - add "autocomplete" mode
  • n3-datepicker - add "date_time" и "date_range" modes
  • n3-wysiwyg - change the plugin
  • Polyfills for position: sticky

Overlay component

npm i @n3/ng-uikit

in style.css

@import '~@angular/cdk/overlay-prebuilt.css';

in html template

  • overlay component

      <n3-overlay [contentTemplate]="dropdownTemplate" startView="dropdown" #n3Overlay ></n3-overlay>

    startView = dropdown | popup | modal ;

  • template for dropdown part

    <ng-template  #dropdownTemplate> ... </ng-template>
  • anchor directive for dropdown | popup modes, this is the header to which the pop-up part will be attached

    <div [n3AnchorOverlay]="n3Overlay" #n3Anchor> ... </div>

in ts component

  @ViewChild('n3Overlay') overlay: OverlayComponent<any>;
  @ViewChild('n3Anchor') element: ElementRef;

  public open(event) {

    const clientRect = this.element.nativeElement.getBoundingClientRect() as ClientRect;

    if (...) {
      this.overlay.open(clientRect.width);
      event.stopPropagation();
    }
  }

  public close(event) {

    if (...) {
      this.overlay.close();
      event.stopPropagation();
    }
  }

css classes

  .mat-overlay-transparent-backdrop   /*popup | dropdown is backdropClass*/
  .n3-overlay-content
  .dropdown
  .popup
    .cross
      .fa fa-times