1.0.3 • Published 2 years ago

ng-search-dropdown v1.0.3

Weekly downloads
-
License
ISC
Repository
github
Last release
2 years ago

ng-search-dropdown

ng-search-dropdown Custom Dropdown component for Angular 4+ with multiple and single selection options

Features

  • single select dropdown
  • multi select dropdown
  • search dropdown list
  • arrows keys support
  • limit number of items displayed in dropdown
  • custom sort
  • angular forms support
  • angular v4 and above supported
  • cross browser support

Examples

Installation

  • npm install ng-search-dropdown

Using with webpack and tsc builds/ angular-cli builds

  • import SelectDropDownModule into your app.module;
import { SelectDropDownModule } from 'ng-search-dropdown'
  • add SelectDropDownModule to the imports of your NgModule:
@NgModule({
  imports: [
    ...,
    SelectDropDownModule
  ],
  ...
})
class YourModule { ... }
  • include css styles in you angular-cli.json for versions earlier than 1.4.0
 "styles": [
        "../node_modules/ng-search-dropdown/dist/assets/style.css"
      ],

Config

Input

  • multiple: boolean - true/false beased if multiple selection required or not Defaults to false.
  • options: Array - Array of string/objects that are to be the dropdown options.
  • disabled: boolean - disabled attribute to disable the dropdown when required.
  • config: Object - configuration object.
config = {
        displayFn:(item: any) => { return item.hello.world; } //to support flexible text displaying for each item
        displayKey:"description", //if objects array passed which key to be displayed defaults to description
        search:true //true/false for the search functionlity defaults to false,
        height: 'auto' //height of the list so that if there are more no of items it can show a scroll defaults to auto. With auto height scroll will never appear
        placeholder:'Select' // text to be displayed when no item is selected defaults to Select,
        customComparator: ()=>{} // a custom function using which user wants to sort the items. default is undefined and Array.sort() will be used in that case,
        limitTo: 0 // number thats limits the no of options displayed in the UI (if zero, options will not be limited)
        moreText: 'more' // text to be displayed whenmore than one items are selected like Option 1 + 5 more
        noResultsFound: 'No results found!' // text to be displayed when no items are found while searching
        searchPlaceholder:'Search' // label thats displayed in search input,
        searchOnKey: 'name' // key on which search should be performed this will be selective search. if undefined this will be extensive search on all keys
        clearOnSelection: false // clears search criteria when an option is selected if set to true, default is false
        inputDirection: 'ltr' // the direction of the search input can be rtl or ltr(default)
      }

Output

  • change: Event - change event when user changes the selected options
  • open: Event - open event when the dropdown toogles on
  • close: Event - close event when the dropdown toogles off
  • searchChange: Event - search change event when the search text changes

Change detection

As of now ng-search-dropdown uses Default change detection startegy which means dirty checking checks for immutable data types. And in Javascript Objects and arrays are mutable. So when changing any of the @Input parameters if you mutate an object change detection will not detect it. For ex:-

this.options.push({id: 34, description: 'Adding new item'});

// or

config.height = '200px';

Both the above scenarios will not trigger the change detection. In order for the componet to detect the changes what you need to do is:-

this.options = [...this.options, {id: 34, description: 'Adding new item'}];

// or

config = {...config, height:'200px'};

Help Improve

Found a bug or an issue with this? Open a new issue here on GitHub.

Contributing to this project

Anyone and everyone is welcome to contribute. Please take a moment to review the guidelines for contributing.

acornJSONStreamadm-zipacceptsagentkeepaliveagent-baseafteraggregate-errorajvajv-errorsajv-keywordsalphanum-sortansi-colorsansi-alignansi-escapesansi-htmlansi-regexapp-root-pathansi-stylesanymatchappend-transformaprobaargparsearia-queryarr-diffarr-flattenarr-unionarray-flattenarray-unionarray-uniqarray-uniquearraybuffer.slicearrifyasapasn1asn1.jsassert-plusassertassign-symbolsast-types-flowasyncasync-eachasync-limiterasynckitat-least-nodeatobautoprefixeraws-sign2aws4axobject-querybabel-code-framebabel-loaderbabel-plugin-dynamic-import-nodebacko2balanced-matchbasebase64-jsbase64-arraybufferbase64idbatchbcrypt-pbkdfbetter-assertbig.jsbinary-extensionsblobblocking-proxybluebirdbn.jsbody-parserbonjourboolbaseboxenbrace-expansionbracesbrorandbrowserify-aesbrowserify-cipherbrowserify-desbrowserify-rsabrowserslistbrowserstackbuffer-allocbrowserify-zlibbufferbuffer-fillbuffer-frombuffer-indexofbuffer-xorbuiltin-modulesbuiltinsbuiltin-status-codescacachecache-basecacheable-requestcall-bindcaller-callsitebytescallsitecaller-pathcallsitescamelcasecaniuse-apicanonical-pathcaniuse-litechalkcaselesschokidarchardetchownrchrome-trace-eventci-infocipher-basecircular-dependency-pluginclean-cssclass-utilsclean-stackcli-boxescli-cursorcli-spinnerscli-widthcliuiclone-deepclone-responsecoacode-point-atcodelyzercollection-visitclonecolorcolor-convertcolor-stringcolorscommandercolor-namecombined-streamcompare-versionscomponent-emittercomponent-bindcomponent-inheritcompressiblecompressionconcat-mapconcat-streamconfigstoreconnectconnect-history-api-fallbackconstants-browserifyconsole-browserifycontent-dispositioncontent-typeconvert-source-mapcookiecookie-signaturecopy-concurrentlycopy-descriptorcopy-webpack-plugincore-jscore-util-iscore-js-compatcosmiconfigcreate-ecdhcreate-hashcreate-hmaccross-spawncrypto-browserifycrypto-random-stringcsscss-color-namescss-declaration-sortercss-parsecss-selectcss-select-base-adaptercss-selector-tokenizercss-treecss-loadercss-whatbrowserify-signcssesccssauroncssnano-util-get-argumentscssnanocssnano-preset-defaultcssnano-util-get-matchcssnano-util-same-parentcssocustom-eventbuffer-alloc-unsafecuintcyclistdashdashdate-formatdebugdebuglogdamerau-levenshteincommondirdecode-uri-componentdeep-equaldecompress-responsedeep-extenddefault-gatewaydefault-require-extensionsdefer-to-connectdefaultsdefine-propertiesdefine-propertydelayed-streamdecamelizedependency-graphdepddes.jsdestroydetect-nodedezalgodiffdidiffie-hellmandir-globdns-equaldns-packetdns-txtdom-serializedom-serializerdomain-browserdomelementtypedomutilsdot-propduplexer3duplexifyecc-jsbnee-firstellipticelectron-to-chromiumemoji-regexemojis-listencodingend-of-streamengine.ioengine.io-parserenhanced-resolveencodeurlenterr-codeerrnoerror-exes-abstractes6-promisees-to-primitiveescaladees6-promisifyentitiesescape-goatescape-htmlescape-string-regexpeslint-scopeesprimadelesrecurseestraverseesutilsetageventemitter3eventsevp_bytestokeyeventsourceexecaexitexpand-bracketsexpressextendextend-shallowengine.io-clientexternal-editorfast-deep-equalfast-globextsprintfestree-walkerfastparsefaye-websocketfast-json-stable-stringifyextglobfastqfiggy-puddingfile-loaderfill-rangefinalhandlerfilesetfind-cache-dirfind-parent-dirfind-upflattedflush-write-streamfollow-redirectsforever-agentfor-inforwardedfragment-cachefreshfrom2fs-accessfs-extrafs-minipassfs-write-stream-atomicfs.realpathfunction-bindform-datagenfunget-caller-filegensyncget-intrinsicget-valueget-streamgetpassglob-parentglobal-dirsglobglobalsgotgraceful-fsglobbyhandle-thinghar-schemahashar-validatorhas-ansihas-bigintshas-binary2has-corshas-flaghas-symbolshas-valuehas-valueshas-yarnhash.jshash-basehex-color-regexhosted-git-infohmac-drbghpack.jshsl-regexhsla-regexhtml-entitieshtml-comment-regexhtml-escaperhttp-cache-semanticshttp-errorshttp-proxyhttp-proxy-agenthttp-proxy-middlewarehttp-signaturehttps-browserifyhttps-proxy-agenticonv-litehumanize-msieee754icss-utilsignoreiferrignore-walkimage-sizeimmediateimport-cwdimport-freshimport-fromimport-lazyimport-localimurmurhashhttp-deceiverindexes-ofindexofindent-stringinfer-ownerinflightinheritsinjection-jsiniinternal-ipinquirerinvariantinvert-kvipip-regexipaddr.jsis-accessor-descriptoris-absolute-urlis-argumentsis-arrayishis-binary-pathis-bigintfiguresis-bufferis-callableis-color-stopis-ciis-core-moduleis-data-descriptoris-boolean-objectis-descriptoris-directoryis-dockeris-extendableis-extglobis-fullwidth-code-pointis-date-objectis-globis-moduleis-interactiveis-npmis-negative-zerois-numberis-number-objectcssnano-util-raw-cacheis-path-cwdis-path-in-cwdis-path-insideis-plain-objis-plain-objectis-referenceis-regexis-resolvableis-objis-streamis-svgis-symbolis-typedarrayis-windowsis-wslis-yarn-globalisarrayisbinaryfileisobjectisexeisstreamistanbul-apiistanbul-lib-coverageistanbul-lib-hookistanbul-lib-instrumentistanbul-lib-reportistanbul-reportsistanbul-lib-source-mapsjasminejasmine-spec-reporterjasmine-corejest-workerjasminewd2jqueryjs-tokensjs-yamljsbnjsescjson-bufferjson-parse-better-errorsjson-parse-even-better-errorsjson-schema-traversejson-stringify-safejson3json5jsonfilejsprimjsonparsejszipkarmakarma-chrome-launcherkarma-coverage-istanbul-reporterkarma-jasminekarma-jasmine-html-reporterkarma-source-map-supportkeyvkillablekind-ofjson-schemalatest-versionless-loaderlesslevenlcidlevenarylicense-webpack-pluginlines-and-columnslieloader-runnerloader-utilslocate-pathlodash.clonedeeplodash.uniqlodash.memoizelog-symbolslog4jsloglevelloose-envifylowercase-keyslodashlru-cachemagic-stringmake-errormake-dirmap-age-cleanermamacromake-fetch-happenmap-cachemap-visitmaterialize-cssmd5.jsmdn-datamedia-typermemmemory-fsmerge-descriptorsmerge-source-mapmerge-streammerge2methodsmicromatchmimemime-dbmiller-rabinmime-typesmimic-fnmini-css-extract-pluginmimic-responseminimalistic-crypto-utilsminimalistic-assertminimatchminipassminimistminizlibminipass-pipelineminipass-collectmississippimixin-deepmkdirpmove-concurrentlymsmulticast-dnsnanomatchmute-streammulticast-dns-service-typesnegotiatorng-packagrneo-asyncnice-tryminipass-flushnode-fetch-npmnode-libs-browsernode-releasesnode-forgenormalize-package-datanode-sass-tilde-importernormalize-rangenormalize-urlnormalize-pathnpm-install-checksnpm-normalize-package-binnpm-bundlednpm-package-argnpm-packlistnpm-pick-manifestnpm-run-pathnpm-registry-fetchcolorettenth-checknull-checknum2fractionoauth-signnumber-is-nanobject-assignobject-inspectobject-copyobject-componentobject-isobject-keysobject.getownpropertydescriptorsobject.assignobject-visitis-installed-globallyobject.pickobufobject.valueson-finishedonceon-headersonetimeopnoptimistopenoraos-homediros-browserifyoriginalosenvos-localep-cancelablep-deferp-finallyp-limitp-is-promisep-locatep-retryp-tryp-mappackage-jsonpakopacoteparallel-transformparse-jsonparse-asn1parse5parseuriparseqspascalcaseparseurlpath-browserifypath-dirnamepath-is-absolutepath-existsos-tmpdirpath-is-insidepath-keypath-to-regexppbkdf2performance-nowpifypicomatchis-stringpinkiepinkie-promiseportfinderpostcssposix-character-classespostcss-calcpath-parsepostcss-colorminpostcss-convert-valuespostcss-discard-commentspostcss-discard-emptypkg-dirpostcss-discard-overriddenpostcss-load-configpostcss-importpostcss-merge-longhandpostcss-loaderpostcss-discard-duplicatespostcss-minify-font-valuespostcss-merge-rulespostcss-minify-gradientspostcss-minify-paramspostcss-modules-extract-importspostcss-modules-local-by-defaultpostcss-modules-scopepostcss-modules-valuespostcss-normalize-charsetpostcss-normalize-display-valuespostcss-normalize-repeat-stylepostcss-normalize-stringpostcss-normalize-positionspostcss-normalize-timing-functionspostcss-normalize-urlpostcss-normalize-unicodepath-typepostcss-ordered-valuespostcss-reduce-initialpostcss-selector-parserpostcss-reduce-transformspostcss-svgopostcss-urlpostcss-value-parserpostcss-unique-selectorsprepend-httpprocesspromiseprocess-nextick-argspostcss-minify-selectorspromise-inflightprrpromise-retrypostcss-normalize-whitespacepseudomapprotractorpslpublic-encryptpumppumpifypunycodeqpupaqjobsqsquerystringquerystring-es3querystringifyqueue-microtaskproxy-addrrandomfillrandombytesraw-bodyraw-loaderrcread-cacheread-package-jsonread-package-treeread-pkgrange-parserreadable-streamread-pkg-upreaddirpreflect-metadataregeneratereaddir-scoped-modulesregenerate-unicode-propertiesregenerator-runtimeregex-notregexp.prototype.flagsregexpu-coreregenerator-transformregistry-auth-tokenregistry-urlregjsgenremove-trailing-separatorregjsparserrepeat-elementrequestrequire-main-filenamerequire-directoryrequires-portresolve-cwdresolveresolve-fromresolve-urlresponselikerestore-cursorretretryreusifyrfdcrgb-regexrgba-regexrimrafripemd160rolluprollup-plugin-sourcemapsrun-asyncrun-parallelrun-queuerxjssafe-buffersafe-regexsafer-buffersasssass-loadersaucelabssaxschema-utilsselect-hoseselenium-webdriverselfsignedsemversemver-diffsemver-dslquery-stringsemver-intersectserialize-javascriptserve-indexserve-staticset-immediate-shimset-blockingset-valuesetimmediatesetprototypeofsha.jsshallow-cloneprotoduckshebang-commandshebang-regexsignal-exitsimple-swizzleslashsmart-buffersnapdragonsnapdragon-utilsocket.iosocket.io-adaptersocket.io-parsersocket.io-clientsockjs-clientsockjssockssort-keyssnapdragon-nodesocks-proxy-agentsource-mapsource-list-mapsource-map-resolvesource-map-loadersource-map-supportsourcemap-codecsource-map-urlspdx-exceptionsspdx-correctspdx-license-idsspdx-expression-parsespdyspdy-transportsplit-stringspeed-measure-webpack-pluginsprintf-jssshpkstablessristatic-extendstream-browserifystream-eachstatusesstream-httpstream-shiftstrict-uri-encodestreamrollerstring-widthstring.prototype.trimstartstring.prototype.trimendstring_decoderstrip-ansistrip-bomstrip-json-commentsstrip-eofstylehacksstyle-loaderstylus-loaderstylussupports-colorsymbol-observabletapablesvgotersertarterm-sizethroughterser-webpack-pluginthunkytimers-browserifytimsorttmpto-arrayto-arraybufferto-fast-propertiesto-object-pathto-readable-streamto-regexto-regex-rangethrough2toidentifiertree-killts-nodetsickletslibtslinttough-cookietsutilstty-browserifytweetnacltype-festtunnel-agenttype-istypedarraytypescripttypedarray-to-bufferunbox-primitiveunicode-canonical-property-names-ecmascriptultronunicode-match-property-ecmascriptunicode-match-property-value-ecmascriptunicode-property-aliases-ecmascriptunion-valueuniqsunique-slugunique-filenameuniversal-analyticsunique-stringuniversalifyunpipeunset-valueupathunquoteuniqupdate-notifieruri-jsurixurl-parseurl-parse-laxuseutiluseragentutil-promisifyurlutil-deprecateutils-mergeuuidvalidate-npm-package-licenserepeat-stringvalidate-npm-package-namevendorsvm-browserifyverrorvoid-elementsvarywatchpackwatchpack-chokidar2wcwidthwebdriver-js-extenderwebpackwebpack-dev-middlewarewebpack-dev-serverwebpack-logwebpack-mergewebpack-sourceswebpack-subresource-integritywebsocket-driverwebsocket-extensionswhenwhichwhich-boxed-primitivewhich-modulewidest-linewordwrapworker-farmworker-pluginwrappywrap-ansiwrite-file-atomicwsxdg-basedirxml2jsxmlbuilderxmlhttprequest-sslxtendxxhashjsy18nyallistyargsyargs-parseryeastynyocto-queuezone.jswbufutil.promisifysend
1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago