1.0.3 • Published 1 year ago

@henrylin03/language-picker v1.0.3

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

@henrylin03/language-picker

Lightweight language picker UI component, written in vanilla JavaScript (JS).

This package was developed and published as an exercise for The Odin Project.

Installation

Install the package using npm:

npm install @henrylin03/language-picker

Usage

In your JS file, import the createLanguagePicker function to create a dropdown of languages

import createLanguagePicker from "@henrylin03/language-picker";

Syntax

createLanguagePicker( obj )

Parameters

obj is a JS object that contains several parameters required to generate your language picker. The following are its keys:

  • containerElementCSSSelector (string): CSS selector of the container (parent) element where the language picker will be appended as a child.

    • If not provided, the language picker will be appended to the <body> of the document
  • languages (array): array of language strings to display in the dropdown. The first language in the array will be the initial selected language, and displayed on the button that triggers the dropdown.

    • If not provided, the only language will be "English"
  • expandEvent (string): specifies the type of user interaction that will expand the language picker.

    • Valid values: "hover", "click"
    • If not provided, the dropdown will be expanded on a click event

Example

HTML

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>DEMO</title>
</head>
<body>
  <section id="hover-dropdown">
    <h2>Hover dropdown</h2>
  </section>
  <section id="click-dropdown">
    <h2>Click dropdown</h2>
  </section>
  
  <script type="module">
    import createDropdown from '@henrylin03/ui-dropdown';

    const LANGUAGES = ["English", "简体中文", "繁體中文"];

    const clickDropdownOptions = {
      containerElementCSSSelector: "#click-dropdown",
      expandEvent: "click",
      languages: LANGUAGES,
    };
    const hoverDropdownOptions = {
      containerElementCSSSelector: "#hover-dropdown",
      expandEvent: "hover",
      languages: LANGUAGES,
    };

    createDropdown(clickDropdownOptions);
    createDropdown(hoverDropdownOptions);
  </script>

</body>
</html>

Initial state

Example dropdowns not expanded

Expanded

Example dropdowns expanded

Contributing

Contributions are welcome! Please feel free to open an issue and/or submit a pull request on GitHub.

License

This project is licensed under the MIT License.

Author

Henry Lin: https://henrylin.io

Links

acceptsacornacorn-import-assertionsajvajv-formatsajv-keywordsansi-html-communityansi-regexansi-stylesanymatcharray-flattenbalanced-matchbatchbinary-extensionsbody-parserbonjour-serviceboolbasebrace-expansionbracesbrowserslistbuffer-frombundle-namebytescall-bindcamel-casecaniuse-litechokidarchrome-trace-eventclean-cssclone-deepcolor-convertcolor-namecolorettecommandercompressiblecompressionconnect-history-api-fallbackcontent-dispositioncontent-typecookiecookie-signaturecore-util-iscross-spawncss-selectcss-whatcssescdebugdefault-browserdefault-browser-iddefault-gatewaydefine-data-propertydefine-lazy-propdepddestroydetect-nodedns-packetdom-converterdom-serializerdomelementtypedomhandlerdomutilsdot-caseeastasianwidthee-firstelectron-to-chromiumemoji-regexencodeurlenhanced-resolveentitiesenvinfoes-define-propertyes-errorses-module-lexerescaladeescape-htmleslint-scopeesrecurseestraverseetageventemitter3eventsexecaexpressfast-deep-equalfast-json-stable-stringifyfastest-levenshteinfaye-websocketfill-rangefinalhandlerfind-upflatfollow-redirectsforeground-childforwardedfreshfunction-bindget-intrinsicget-streamglobglob-parentglob-to-regexpgopdgraceful-fshandle-thinghas-flaghas-property-descriptorshas-protohas-symbolshasownhehpack.jshtml-entitieshtml-minifier-terserhtmlparser2http-deceiverhttp-errorshttp-parser-jshttp-proxyhttp-proxy-middlewarehuman-signalshyperdyperidiconv-liteicss-utilsimport-localinheritsinterpretipaddr.jsis-binary-pathis-core-moduleis-dockeris-extglobis-fullwidth-code-pointis-globis-inside-containeris-network-erroris-numberis-plain-objis-plain-objectis-streamis-wslisarrayisexeisobjectjackspeakjest-workerjson-parse-even-better-errorsjson-schema-traversekind-oflaunch-editorloader-runnerlocate-pathlodashlower-caselru-cachemedia-typermemfsmerge-descriptorsmerge-streammethodsmicromatchmimemime-dbmime-typesmimic-fnminimalistic-assertminimatchminipassmsmulticast-dnsnanoidnegotiatorneo-asyncno-casenode-forgenode-releasesnormalize-pathnpm-run-pathnth-checkobject-inspectobufon-finishedon-headersonetimeopenp-limitp-locatep-retryp-tryparam-caseparseurlpascal-casepath-existspath-keypath-parsepath-scurrypath-to-regexppicocolorspicomatchpkg-dirpostcsspostcss-modules-extract-importspostcss-modules-local-by-defaultpostcss-modules-scopepostcss-modules-valuespostcss-selector-parserpostcss-value-parserpretty-errorprocess-nextick-argsproxy-addrpunycodeqsrandombytesrange-parserraw-bodyreadable-streamreaddirprechoirrelateurlrenderkidrequire-from-stringrequires-portresolveresolve-cwdresolve-fromretryrimrafrun-applescriptsafe-buffersafer-bufferschema-utilsselect-hoseselfsignedsemversendserialize-javascriptserve-indexserve-staticset-function-lengthsetprototypeofshallow-cloneshebang-commandshebang-regexshell-quoteside-channelsignal-exitsockjssonic-forestsource-mapsource-map-jssource-map-supportspdyspdy-transportstatusesstring_decoderstring-widthstring-width-cjsstrip-ansistrip-ansi-cjsstrip-final-newlinesupports-colorsupports-preserve-symlinks-flagtapableterserterser-webpack-pluginthingiesthunkyto-regex-rangetoidentifiertree-dumptslibtype-isundici-typesunpipeupdate-browserslist-dburi-jsutil-deprecateutilautils-mergeuuidvarywatchpackwbufwebpack-dev-middlewarewebpack-sourceswebsocket-driverwebsocket-extensionswhichwildcardwrap-ansiwrap-ansi-cjsws
1.0.3

1 year ago

1.0.2

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago