{"id":15305111,"url":"https://github.com/eddyverbruggen/nativescript-numeric-keyboard","last_synced_at":"2025-10-14T06:06:18.506Z","repository":{"id":57308670,"uuid":"79018676","full_name":"EddyVerbruggen/nativescript-numeric-keyboard","owner":"EddyVerbruggen","description":":1234: Replace the meh default number/phone keyboard with this stylish one","archived":false,"fork":false,"pushed_at":"2024-01-29T15:40:42.000Z","size":2880,"stargazers_count":34,"open_issues_count":10,"forks_count":9,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-09-27T04:19:34.229Z","etag":null,"topics":["keyboard","nativescript","numeric","numeric-keyboard"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/EddyVerbruggen.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-01-15T09:16:16.000Z","updated_at":"2024-05-30T15:56:51.000Z","dependencies_parsed_at":"2024-06-21T13:04:36.880Z","dependency_job_id":"5f63a8b6-335b-4f00-97e1-9e9d465f8b1f","html_url":"https://github.com/EddyVerbruggen/nativescript-numeric-keyboard","commit_stats":null,"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"purl":"pkg:github/EddyVerbruggen/nativescript-numeric-keyboard","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EddyVerbruggen%2Fnativescript-numeric-keyboard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EddyVerbruggen%2Fnativescript-numeric-keyboard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EddyVerbruggen%2Fnativescript-numeric-keyboard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EddyVerbruggen%2Fnativescript-numeric-keyboard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/EddyVerbruggen","download_url":"https://codeload.github.com/EddyVerbruggen/nativescript-numeric-keyboard/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EddyVerbruggen%2Fnativescript-numeric-keyboard/sbom","scorecard":{"id":44192,"data":{"date":"2025-08-11","repo":{"name":"github.com/EddyVerbruggen/nativescript-numeric-keyboard","commit":"fe85a3f51260a9713c3569f1fb60aace60decd68"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.8,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":0,"reason":"Found 2/28 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: npmCommand not pinned by hash: publish/pack.sh:10","Info:   0 out of   1 npmCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 4 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-14T22:19:43.468Z","repository_id":57308670,"created_at":"2025-08-14T22:19:43.468Z","updated_at":"2025-08-14T22:19:43.468Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279018121,"owners_count":26086280,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-14T02:00:06.444Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["keyboard","nativescript","numeric","numeric-keyboard"],"created_at":"2024-10-01T07:59:05.335Z","updated_at":"2025-10-14T06:06:18.490Z","avatar_url":"https://github.com/EddyVerbruggen.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NativeScript Numeric Keyboard\n\n[![NPM version][npm-image]][npm-url]\n[![Downloads][downloads-image]][npm-url]\n[![Twitter Follow][twitter-image]][twitter-url]\n\n[build-status]:https://travis-ci.org/EddyVerbruggen/nativescript-numeric-keyboard.svg?branch=master\n[build-url]:https://travis-ci.org/EddyVerbruggen/nativescript-numeric-keyboard\n[npm-image]:http://img.shields.io/npm/v/nativescript-numeric-keyboard.svg\n[npm-url]:https://npmjs.org/package/nativescript-numeric-keyboard\n[downloads-image]:http://img.shields.io/npm/dm/nativescript-numeric-keyboard.svg\n[twitter-image]:https://img.shields.io/twitter/follow/eddyverbruggen.svg?style=social\u0026label=Follow%20me\n[twitter-url]:https://twitter.com/eddyverbruggen\n\nFor iOS. Falls back to the best platform-provided numeric keyboard on Android. Note that the iPad UI looks a bit sleeker than shown in the screenshot below.\n\n\u003cimg src=\"https://raw.githubusercontent.com/EddyVerbruggen/nativescript-numeric-keyboard/master/screenshots/_readme-header.png\" style=\"max-width: 100%\"/\u003e\n\n\u003e BREAKING CHANGE in plugin version 4.0.0: we used to extend a `TextView`, now it's a `TextField`, because I finally hacked my way around a problem that prevented a TextField from emitting a `textChange` event. Note that unless you use the `decorate()` function this will not affect you (bar some now-fixed UI glitches).\n\n## Installation\nFrom the command prompt go to your app's root folder and execute:\n\n#### Since NativeScript 7\n\n```\ntns plugin add nativescript-numeric-keyboard\n```\n\n#### Before NativeScript 7\n\n```\ntns plugin add nativescript-numeric-keyboard@4\n```\n\n\u003e mind the `@4` on the end, because since plugin version 5 we require NativeScript 7.\n\n## Demo app\nCheck out [the demo](demo) to play with the keyboard. You can run it by typing `npm run demo.iphone` / `npm run demo.ipad` at the root of the project.\n\n## How it works\nThis plugin wraps a [native keyboard library](https://cocoapods.org/?q=MMNumberKeyboard) and extends a regular [NativeScript TextField](https://docs.nativescript.org/cookbook/ui/text-field).\nYou can set any property you'd normally set on this widget (`class`, `text`, etc) and a few plugin-specific properties as well.\n\nYou can either define the keyboard in XML or in code - use whichever tickles your fancy.\n\n## Screenshot-driven documentation\nAfter adding the plugin you can add a namespace to your view (using `NumKey` below) and use the `NumericKeyboardView` tag to render a TextField powered by this plugin.\n\n```xml\n\u003cPage xmlns=\"http://schemas.nativescript.org/tns.xsd\" xmlns:NK=\"nativescript-numeric-keyboard\"\u003e\n  \u003cNK:NumericKeyboardView text=\"123.45\" maxLength=\"10\" returnKeyButtonBackgroundColor=\"#333333\" /\u003e\n\u003c/Page\u003e\n```\n\nFor comparison sake we kick off with the default appearance of a `TextField` and then showcase the various properties this plugin exposes:\n\n| Appearance | Declaration |\n| --- | --- |\n| \u003cimg src=\"https://raw.githubusercontent.com/EddyVerbruggen/nativescript-numeric-keyboard/master/screenshots/regular-number.png\" width=\"187px\" height=\"333px\"/\u003e | `\u003cTextField keyboardType=\"number\" text=\"1.23\"/\u003e` |\n| \u003cimg src=\"https://raw.githubusercontent.com/EddyVerbruggen/nativescript-numeric-keyboard/master/screenshots/regular-phone.png\" width=\"187px\" height=\"333px\"/\u003e | `\u003cTextField keyboardType=\"phone\" text=\"12.34\"/\u003e` |\n| \u003cimg src=\"https://raw.githubusercontent.com/EddyVerbruggen/nativescript-numeric-keyboard/master/screenshots/default-plugin-appearance.png\" width=\"187px\" height=\"333px\"/\u003e | `\u003cNK:NumericKeyboardView text=\"123.45\"/\u003e` |\n| \u003cimg src=\"https://raw.githubusercontent.com/EddyVerbruggen/nativescript-numeric-keyboard/master/screenshots/custom-button-title.png\" width=\"187px\" height=\"333px\"/\u003e | `\u003cNK:NumericKeyboardView returnKeyTitle=\"OK\" text=\"234.56\"/\u003e` |\n| \u003cimg src=\"https://raw.githubusercontent.com/EddyVerbruggen/nativescript-numeric-keyboard/master/screenshots/no-decimals.png\" width=\"187px\" height=\"333px\"/\u003e | `\u003cNK:NumericKeyboardView noDecimals=\"true\" text=\"345\"/\u003e` |\n| \u003cimg src=\"https://raw.githubusercontent.com/EddyVerbruggen/nativescript-numeric-keyboard/master/screenshots/no-return-key.png\" width=\"187px\" height=\"333px\"/\u003e | `\u003cNK:NumericKeyboardView noReturnKey=\"true\" text=\"678\"/\u003e` |\n| \u003cimg src=\"https://raw.githubusercontent.com/EddyVerbruggen/nativescript-numeric-keyboard/master/screenshots/locale-en_US.png\" width=\"187px\" height=\"333px\"/\u003e | `\u003cNK:NumericKeyboardView locale=\"en_US\" text=\"456.78\"/\u003e` |\n| \u003cimg src=\"https://raw.githubusercontent.com/EddyVerbruggen/nativescript-numeric-keyboard/master/screenshots/locale-nl_NL.png\" width=\"187px\" height=\"333px\"/\u003e | `\u003cNK:NumericKeyboardView locale=\"nl_NL\" text=\"567,89\"/\u003e` |\n\n\n### iPad appearance\nIt's similar (although a bit cleaner than in these screenshots), except for some padding on both sides of the keyboard:\n\n| Appearance | Declaration |\n| --- | --- |\n| \u003cimg src=\"https://raw.githubusercontent.com/EddyVerbruggen/nativescript-numeric-keyboard/master/screenshots/ipad-regular-phone.png\" width=\"344px\"/\u003e | `\u003cTextField keyboardType=\"phone\" text=\"12.34\"/\u003e` |\n| \u003cimg src=\"https://raw.githubusercontent.com/EddyVerbruggen/nativescript-numeric-keyboard/master/screenshots/ipad-default-appearance.png\" width=\"344px\"/\u003e | `\u003cNK:NumericKeyboard text=\"123.45\"/\u003e` |\n\n## Usage with Vue\nOpen `main.ts` (or `.js`) and add this:\n\n```typescript\nVue.registerElement('NumericKeyboard', () =\u003e require('nativescript-numeric-keyboard').NumericKeyboardView);\n```\n\nCheck [this `registerElement` example](https://github.com/EddyVerbruggen/footplr/blob/3cea34a97a11726d6bd23252b79808ea35bb05ee/app/main.ts#L16), and [this usage example](https://github.com/EddyVerbruggen/footplr/blob/3cea34a97a11726d6bd23252b79808ea35bb05ee/app/pages/home/components/measurements/measurement-entry/exercise/components/NumberInput.vue#L2).\n\n## Usage with Angular\nOpen `app.module.ts` and add:\n\n```typescript\nimport { registerElement } from \"nativescript-angular\";\nregisterElement(\"NumericKeyboard\", () =\u003e require(\"nativescript-numeric-keyboard\").NumericKeyboardView);\n```\n\nFor the views you can take a look at the examples above and just replace `NumKey:NumericKeyboardView` by `NumericKeyboard `:\n\n```html\n\u003cNumericKeyboard noDecimals=\"true\"\u003e\u003c/NumericKeyboard\u003e\n```\n\n## Programmatic usage\nSay you have a plain old `TextField` in your view:\n\n```html\n\u003cPage xmlns=\"http://schemas.nativescript.org/tns.xsd\" loaded=\"pageLoaded\"\u003e\n  \u003cTextField id=\"myTextField\" maxlength=\"8\" keyboardType=\"number\" text=\"{{ myTextPlugin }}\" /\u003e\n\u003c/Page\u003e\n```\n\nNow you can enhance the `TextField` with this plugin by doing fi. this in the `pageLoaded` event you've defined in the `\u003cPage\u003e` tag above:\n\n```typescript\nimport { NumericKeyboard } from \"nativescript-numeric-keyboard\";\nimport { Color } from \"tns-core-modules/color\";\n\nexport function pageLoaded(args: observable.EventData) {\n  const page = \u003cpages.Page\u003eargs.object;\n  const textField = \u003cTextField\u003epage.getViewById(\"myTextField\");\n  // or even textField.ios\n\n  // this is an example with all possible properties, not that they make sense combined :)\n  new NumericKeyboard().decorate({\n    textField: textField,\n    returnKeyTitle: \"Go!\",\n    locale: \"en_US\", // or \"nl_NL\", or any valid locale really (to define the decimal char)\n    noReturnKey: true,\n    noDecimals: true,\n    noIpadInputBar: true, // suppress the bar with buttons iOS renders on iPad since iOS 9\n    returnKeyButtonBackgroundColor: new Color(\"red\"), // optional, set this to change the (default) blue color of the 'return' key\n    onReturnKeyPressed: (): boolean =\u003e {\n      // Your code here\n      return true; // Return true to hide/collapse the keyboard, use false to keep the keyboard in place.\n    }\n  });\n}\n```\n\nNote that on Android you'll just get a numeric keyboard as usual (since we specified `keyboardType=\"number\"`).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feddyverbruggen%2Fnativescript-numeric-keyboard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feddyverbruggen%2Fnativescript-numeric-keyboard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feddyverbruggen%2Fnativescript-numeric-keyboard/lists"}