https://github.com/bithost-gmbh/ngx-mat-select-search
Angular マテリアル ライブラリの MatSelect オプションを検索/フィルタリングするための入力フィールドを提供する Angular コンポーネント。
実際の動作を以下でご覧ください
https://stackblitz.com/github/bithost-gmbh/ngx-mat-select-search-example
コード例、ブラウザでのビルド、最新バージョン、マテリアルの最新バージョンを参照してください。
https://bithost-gmbh.github.io/ngx-mat-select-search/
事前構築済み、最新バージョン、古いマテリアル バージョン、モバイルで動作
重要な注意: このプロジェクトは、angular/components#5697 の一時的な実装を目的としています。目標は、公式の Angular マテリアル リポジトリに実装することです。新しい PR が作成されます。
貢献は大歓迎です。問題をオープンし、できればプル リクエストを提出してください。
私たちは、 NgxMatSelectSearch
継続的に改善し、バグレポートに迅速に対応することで、可能な限り最高のサービスを提供することを目指しています。弊社ではこれを完全に無料で行っております。このライブラリがあなたにとって役に立ち、あなたとあなたのビジネスの貴重な時間を節約したと思われる場合は、その維持とさらなる発展をサポートするために寄付を検討してください。
財政支援者の皆様、本当にありがとうございました!
フィリップ・ヴィクトール・シュルツ=クリングウフ |
コミュニティの貢献者の皆様に心より感謝申し上げます。
エステバン・ゲーリング | マルクス・メヒラー | トリスタン | サー3e | トニー・H | ミハウ・スタヴィツキ |
アレイシ・フェレ | ヌル | ブレイズ・ウォーカー | クリスティアン・ラドゥカヌ | ダミアン・ミランダ | デーン・ヴァンダービルト |
デビッド・サンサム | エドガー・シャイヤーマン | エレンディス | グスタボ・ミランダ | ヘンノ・ラウインガー | ヌル |
イブリス・リン | ジャン=フランソワ・セール | ジョー・デコック | ジョマル・ジョニー | ジョナサン・コルバーグ | クリストフ・ギリス |
メルロイ・ヴァン・デン・バーグ | ムハマド・アサン・アヤズ | オビディジュス・ストゥカス | レイ・スエルザー | ロバート・パティス | ローランド・ブルケマ |
セバスティアン・ヴィエルズビッキ | ヌル | スタス・アマセフ | ティエリー・ニッシェルヴィッツァー | ヴラド・イオフェ | ヌル |
ヌル | ジョシュア | ヌル | ヌル |
プロジェクトにngx-mat-select-search
インストールします。
npm install ngx-mat-select-search
NgxMatSelectSearchModule
app.module.ts
などにインポートします。
import { MatSelectModule } from '@angular/material' ;
import { NgxMatSelectSearchModule } from 'ngx-mat-select-search' ;
@ NgModule ( {
imports : [
...
MatSelectModule ,
NgxMatSelectSearchModule
] ,
} )
export class AppModule { }
ngx-mat-select-search
コンポーネントを<mat-option>
要素内に配置して、 mat-select
要素内で使用します。
< mat-form-field >
< mat-select [formControl] =" bankCtrl " placeholder =" Bank " #singleSelect >
< mat-option >
< ngx-mat-select-search [formControl] =" bankFilterCtrl " > </ ngx-mat-select-search >
</ mat-option >
< mat-option *ngFor =" let bank of filteredBanks | async " [value] =" bank " >
{{bank.name}}
</ mat-option >
</ mat-select >
</ mat-form-field >
ngx-mat-select-search
を接続し、使用可能なオプションをフィルタリングする方法については、https://github.com/bithost-gmbh/ngx-mat-select-search/tree/master/src/app/examples の例を参照してください。または、https://github.com/bithost-gmbh/ngx-mat-select-search-example を参照してスタンドアロン アプリで確認してください。
代わりに、次のようにテンプレート駆動フォームで使用することもできます。
< ngx-mat-select-search ngModel (ngModelChange) =" filterMyOptions($event) " >
ラベルを変更するには、次のように API セクションで指定された入力を使用します。
< ngx-mat-select-search [formControl] =" bankFilterCtrl "
placeholderLabel =" Find bank... "
noEntriesFoundLabel =" 'no matching bank found' " > </ ngx-mat-select-search >
ラベルの変換に i18n API を使用するには、対応するi18n-...
属性を追加します。
< ngx-mat-select-search [formControl] =" bankFilterCtrl "
placeholderLabel =" Find bank... "
i18n-placeholderLabel
noEntriesFoundLabel =" 'no matching bank found' "
i18n-noEntriesFoundLabel > </ ngx-mat-select-search >
@angular/core
: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
@angular/material
: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
MatSelectModule
( @angular/material/select
) 6.0.0
@angular/core
: ^15.0.0
@angular/material
: MatLegacySelectModule
を使用した^15.0.0
( @angular/material/legacy-select
) 5.0.0
@angular/core
: ^12.0.0 || ^13.0.0 || ^14.0.0
@angular/material
: ^12.0.0 || ^13.0.0 || ^14.0.0
3.3.3
@angular/core
: ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0
@angular/material
: ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0
1.8.0
@angular/core
: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0
@angular/material
: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0
MatSelectSearchComponent
は ControlValueAccessor インターフェイスを実装します。さらに、次の入力を提供します。
/** Label of the search placeholder */
@ Input ( ) placeholderLabel = 'Suche' ;
/** Type of the search input field */
@ Input ( ) type = 'text' ;
/** Font-based icon used for displaying Close-Icon */
@ Input ( ) closeIcon = 'close' ;
/** SVG-based icon used for displaying Close-Icon. If set, closeIcon is overridden */
@ Input ( ) closeSvgIcon ?: string ;
/** Label to be shown when no entries are found. Set to null if no message should be shown. */
@ Input ( ) noEntriesFoundLabel = 'Keine Optionen gefunden' ;
/**
* Whether the search field should be cleared after the dropdown menu is closed.
* Useful for server-side filtering. See [#3](https://github.com/bithost-gmbh/ngx-mat-select-search/issues/3)
*/
@ Input ( ) clearSearchInput = true ;
/** Whether to show the search-in-progress indicator */
@ Input ( ) searching = false ;
/** Disables initial focusing of the input field */
@ Input ( ) disableInitialFocus = false ;
/** Enable clear input on escape pressed */
@ Input ( ) enableClearOnEscapePressed = false ;
/**
* Prevents home / end key being propagated to mat-select,
* allowing to move the cursor within the search input instead of navigating the options
*/
@ Input ( ) preventHomeEndKeyPropagation = false ;
/** Disables scrolling to active options when option list changes. Useful for server-side search */
@ Input ( ) disableScrollToActiveOnOptionsChanged = false ;
/** Adds 508 screen reader support for search box */
@ Input ( ) ariaLabel = 'dropdown search' ;
/** Whether to show Select All Checkbox (for mat-select[multi=true]) */
@ Input ( ) showToggleAllCheckbox = false ;
/** Select all checkbox checked state */
@ Input ( ) toggleAllCheckboxChecked = false ;
/** select all checkbox indeterminate state */
@ Input ( ) toggleAllCheckboxIndeterminate = false ;
/** Display a message in a tooltip on the toggle-all checkbox */
@ Input ( ) toggleAllCheckboxTooltipMessage = '' ;
/** Define the position of the tooltip on the toggle-all checkbox. */
@ Input ( ) toggleAllCheckboxTooltipPosition: 'left' | 'right' | 'above' | 'below' | 'before' | 'after' = 'below' ;
/** Show/Hide the search clear button of the search input */
@ Input ( ) hideClearSearchButton = false ;
/**
* Always restore selected options on selectionChange for mode multi (e.g. for lazy loading/infinity scrolling).
* Defaults to false, so selected options are only restored while filtering is active.
*/
@ Input ( ) alwaysRestoreSelectedOptionsMulti = false ;
/**
* Recreate array of selected values for multi-selects.
*
* This is useful if the selected values are stored in an immutable data structure.
*/
@ Input ( ) recreateValuesArray = false ;
/** Output emitter to send to parent component with the toggle all boolean */
@ Output ( ) toggleAll = new EventEmitter < boolean > ( ) ;
検索アイコンをカスタマイズするには、 ngxMatSelectSearchClear
カスタム クリア アイテム ( mat-icon
またはその他の要素) に追加し、 ngx-mat-select-search
コンポーネント内に配置します。
< ngx-mat-select-search >
< mat-icon ngxMatSelectSearchClear > delete </ mat-icon >
</ ngx-mat-select-search >
アイコンのみを変更する必要がある場合は、入力closeIcon
およびcloseSvgIcon
使用できます。
エントリが見つかりません要素をカスタマイズするには、 ngxMatSelectNoEntriesFound
カスタム項目 ( mat-icon, span, button
、またはその他の要素) に追加し、 ngx-mat-select-search
コンポーネント内に配置します。
< ngx-mat-select-search >
< span ngxMatSelectNoEntriesFound >
No entries found
< button mat-button color =" primary " >
Add < mat-icon > add </ mat-icon >
</ button >
</ span >
</ ngx-mat-select-search >
CSS クラスmat-select-search-custom-header-content
のカスタム コンテンツは、次のようにトランスクルージョンできます。
< ngx-mat-select-search >
< div class =" mat-select-search-custom-header-content " > something special </ div >
</ ngx-mat-select-search >
MAT_SELECTSEARCH_DEFAULT_OPTIONS
InjectionToken を提供すると、いくつかの@Input()
プロパティのデフォルト値をグローバルに設定できます。 MatSelectSearchComponent
の対応する@Input()
プロパティのドキュメントを参照してください。
例:
import { MAT_SELECTSEARCH_DEFAULT_OPTIONS , MatSelectSearchOptions } from 'ngx-mat-select-search' ;
@ NgModule ( {
...
providers : [
{
provide : MAT_SELECTSEARCH_DEFAULT_OPTIONS ,
useValue : < MatSelectSearchOptions > {
closeIcon : 'delete' ,
noEntriesFoundLabel : 'No options found' ,
}
}
]
} )
class AppModule { }
このプロジェクトは、Angular CLI バージョン 1.7.1 で生成されました。
開発サーバーに対してng serve
実行します。 http://localhost:4200/
に移動します。ソース ファイルを変更すると、アプリは自動的にリロードされます。
ng build
実行してプロジェクトをビルドします。ビルド アーティファクトはdist/
ディレクトリに保存されます。実稼働ビルドには-prod
フラグを使用します。
npm run build-lib
実行してライブラリをビルドし、NPM パッケージを生成します。ビルド アーティファクトはdist-lib/
フォルダーに保存されます。
リリースするには、 cd dist-lib/ && npm publish
を実行します。
npm run test
実行して、Karma 経由で単体テストを実行します。