Research
Security News
Quasar RAT Disguised as an npm Package for Detecting Vulnerabilities in Ethereum Smart Contracts
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
ng-select2-component
Advanced tools
[![npm version](https://badge.fury.io/js/ng-select2-component.svg)](https://badge.fury.io/js/ng-select2-component) [![Downloads](https://img.shields.io/npm/dm/ng-select2-component.svg)](https://www.npmjs.com/package/ng-select2-component) [![GitHub license
This Angular CLI module it's a fork of select2-component without Vue & React. For Vue or React, please use the original component.
npm i ng-select2-component --save
import { Select2Module } from "ng-select2-component";
@NgModule({
imports: [BrowserModule, FormsModule, Select2Module],
declarations: [MainComponent],
bootstrap: [MainComponent],
})
class MainModule { }
<select2 [data]="data"
[value]="value"
(update)="update($event)">
</select2>
name | type | status | default | description |
---|---|---|---|---|
data | Select2Data | required | the data of the select2 | |
value | Select2Value | initial value | ||
disabled | boolean | whether the component is disabled | ||
minCharForSearch | number | 0 | start the search when the number of characters is reached (0 = unlimited) | |
minCountForSearch | number | 6 | hide search box if options.length < minCountForSearch | |
displaySearchStatus | 'default' or 'hidden' or 'always' | 'default' | display the search box (default : is based on minCountForSearch ) | |
placeholder | string | the placeholder string if nothing selected | ||
customSearchEnabled | boolean | will trigger search event, and disable inside filter | ||
multiple | "" or true or 'true' | select multiple options | ||
resettable | add a button to reset value (not with multiple ) | |||
limitSelection | number | 0 | to limit multiple selection (0 = unlimited) | |
hideSelectedItems | boolean | for multiple , remove selected values | ||
resultMaxHeight | string | change the height size of results | ||
listPosition | 'below' or 'above' | 'below' | the position for the dropdown list | |
material | "" or true or 'true' | enable material style | ||
nostyle | "" or true or 'true' | remove border and background color | ||
templates | TemplateRef or {option?: TemplateRef, group?: TemplateRef} or {templateId1: TemplateRef, ...} | use templates for formatting content (see Templating) | ||
editPattern | (str: string) => string | use it for change the pattern of the filter search | ||
ngModel id required disabled readonly tabIndex | just like a select control | |||
(update) | (event: Select2UpdateEvent ) => void | event | triggered when user select an option | |
(open) | (event: Select2) => void | event | triggered when user open the options | |
(close) | (event: Select2) => void | event | triggered when user close the options | |
(focus) | (event: Select2) => void | event | triggered when user enters the component | |
(blur) | (event: Select2) => void | event | triggered when user leaves the component | |
(search) | (event: Select2SearchEvent ) => void | event | triggered when search text changed |
type Select2Data = (Select2Group | Select2Option)[];
export interface Select2Group {
/** label of group */
label: string;
/** options list */
options: Select2Option[];
/** add classes */
classes?: string;
/** template id */
templateId?: string;
/** template data */
data?: any;
}
export interface Select2Option {
/** value */
value: Select2Value;
/** label of option */
label: string;
/** no selectable is disabled */
disabled?: boolean;
/** for identification */
id?: string;
/** add classes */
classes?: string;
/** template id */
templateId?: string;
/** template data */
data?: any;
/** hide this option */
hide?: boolean;
}
type Select2Value = string | number | boolean;
type Select2UpdateValue = Select2Value | Select2Value[];
export interface Select2UpdateEvent<U extends Select2UpdateValue = Select2Value> {
component: Select2;
value: U;
options: Select2Option[];
}
export interface Select2SearchEvent<U extends Select2UpdateValue = Select2Value> {
component: Select2;
value: U;
search: string;
}
<select2 [data]="data"
[templates]="template">
<ng-template #template let-data="data"><strong>{{data?.color}}</strong>: {{data?.name}}</ng-template>
</select2>
const data: Select2Data = [
{
value: 'heliotrope',
label: 'Heliotrope',
data: { color: 'white', name: 'Heliotrope' }
},
{
value: 'hibiscus',
label: 'Hibiscus',
data: { color: 'red', name: 'Hibiscus' }
}
]
<select2 [data]="data"
[templates]="{option : option, group: group}">
<ng-template #option let-data="data">{{data?.name}}</ng-template>
<ng-template #group let-label="label">Group: {{label}}</ng-template>
</select2>
No difference in data structure. The template is defined by its type, option or group, automatically.
<select2 [data]="data"
[templates]="{template1 : template1, template2: template2">
<ng-template #template1 let-data="data">{{data?.name}}</ng-template>
<ng-template #template2 let-label="label" let-data="data">{{label}} : {{data?.color}}</ng-template>
</select2>
const data: Select2Data = [
{
value: 'heliotrope',
label: 'Heliotrope',
data: { color: 'white', name: 'Heliotrope' },
templateId: 'template1'
},
{
value: 'hibiscus',
label: 'Hibiscus',
data: { color: 'red', name: 'Hibiscus'},
templateId: 'template2'
}
]
It's possible to change different colors (and more) with CSS variables without having to modify them with ::ng-deep
or other CSS rules :
:root {
/* label */
--select2-label-text-color: #000;
--select2-required-color: red;
/* selection */
--select2-selection-border-radius: 4px;
--select2-selection-background: #fff;
--select2-selection-disabled-background: #eee;
--select2-selection-border-color: #aaa;
--select2-selection-focus-border-color: #000;
--select2-selection-text-color: #444;
/* selection: choice item (multiple) */
--select2-selection-choice-background: #e4e4e4;
--select2-selection-choice-text-color: #000;
--select2-selection-choice-border-color: #aaa;
--select2-selection-choice-close-color: #999;
--select2-selection-choice-hover-close-color: #333;
/* placeholder */
--select2-placeholder-color: #999;
/* reset */
--select2-reset-color: #999;
/* arrow */
--select2-arrow-color: #888;
/* dropdown panel */
--select2-dropdown-background: #fff;
--select2-dropdown-border-color: #aaa;
/* search field */
--select2-search-border-color: #aaa;
--select2-search-background: #fff;
--select2-search-border-radius: 0px;
/* dropdown option */
--select2-option-text-color: #000;
--select2-option-disabled-text-color: #999;
--select2-option-disabled-background: transparent;
--select2-option-selected-text-color: #000;
--select2-option-selected-background: #ddd;
--select2-option-highlighted-text-color: #fff;
--select2-option-highlighted-background: #5897fb;
--select2-option-group-text-color: gray;
--select2-option-group-background: transparent;
/* hint */
--select2-hint-text-color: #888;
/* for Material ------------------------------------------*/
--select2-material-underline: #ddd;
--select2-material-underline-active: #5a419e;
--select2-material-underline-disabled: linear-gradient(to right, rgba(0, 0, 0, 0.26) 0, rgba(0, 0, 0, 0.26) 33%, transparent 0);
--select2-material-underline-invalid: red;
--select2-material-placeholder-color: rgba(0, 0, 0, 0.38);
--select2-material-selection-background: #ddd;
--select2-material-option-selected-background: rgba(0, 0, 0, 0.04);
--select2-material-option-highlighted-text-color: #000;
--select2-material-option-selected-text-color: #ff5722;
}
For IE11, see css-vars-ponyfill.
npm run build:lib
cd dist/ng-select2-component
npm publish
npm run build:demo
Like Angular, this module is released under the permissive MIT license. Your contributions are always welcome.
V7.2.2 (2021-03-05)
FAQs
An Angular select2 component.
The npm package ng-select2-component receives a total of 5,046 weekly downloads. As such, ng-select2-component popularity was classified as popular.
We found that ng-select2-component demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
Security News
Research
A supply chain attack on Rspack's npm packages injected cryptomining malware, potentially impacting thousands of developers.
Research
Security News
Socket researchers discovered a malware campaign on npm delivering the Skuld infostealer via typosquatted packages, exposing sensitive data.