Home

Awesome

<a align="center" href="https://www.npmjs.com/package/@nstudio/nativescript-checkbox"> <h3 align="center">NativeScript Checkbox</h3> </a> <h4 align="center">A NativeScript plugin to provide a checkbox widget, radio buttons are also possible.</h4> <p align="center"> <a href="https://www.npmjs.com/package/@nstudio/nativescript-checkbox"> <img src="https://github.com/nstudio/nativescript-checkbox/workflows/Build%20CI/badge.svg" alt="Action Build"> </a> <a href="https://www.npmjs.com/package/@nstudio/nativescript-checkbox"> <img src="https://img.shields.io/npm/dt/nativescript-checkbox.svg?label=npm%20downloads" alt="npm"> </a> <a href="https://github.com/@nstudio/nativescript-checkbox/stargazers"> <img src="https://img.shields.io/github/stars/@nstudio/nativescript-checkbox.svg" alt="stars"> </a> <br /> </p>

Installation

From your command prompt/terminal go to your app's root folder and execute:

NativeScript 7+:

ns plugin add @nstudio/nativescript-checkbox

NativeScript prior to 7:

tns plugin add @nstudio/nativescript-checkbox@1.0.0

Platform controls used:

AndroidiOS
Android CheckBoxBEMCheckBox

Sample Usage

Android SampleiOS Sample
Sample1Sample2

Usage

<Page
  xmlns="http://schemas.nativescript.org/tns.xsd"
  xmlns:CheckBox="@nstudio/nativescript-checkbox" loaded="pageLoaded">
  <ActionBar title="Native Checkbox" />
  <StackLayout>
    <CheckBox:CheckBox checked="{{ checkProp }}" text="{{ myCheckText }}" fillColor="{{ myCheckColor }}" id="myCheckbox" />
    <CheckBox:CheckBox text="CheckBox Label" checked="false" />
  </StackLayout>
</Page>


import { CheckBox } from '@nstudio/nativescript-checkbox';
import { topmost } from '@nativescript/core/ui/frame';

public toggleCheck() {
  const checkBox = topmost().getViewById('yourCheckBoxId');
  checkBox.toggle();
}

public getCheckProp() {
  const checkBox = topmost().getViewById('yourCheckBoxId');
  console.log('checked prop value = ' + checkBox.checked);
}

Angular Usage Sample:

import { TNSCheckBoxModule } from '@nstudio/nativescript-checkbox/angular';

@NgModule({
  imports: [TNSCheckBoxModule]
  // etc.
})
export class YourModule {}

// component:
export class SomeComponent {
  @ViewChild('CB1') FirstCheckBox: ElementRef;
  constructor() {}
  public toggleCheck() {
    this.FirstCheckBox.nativeElement.toggle();
  }

  public getCheckProp() {
    console.log(
      'checked prop value = ' + this.FirstCheckBox.nativeElement.checked
    );
  }
}
<StackLayout>
  <CheckBox #CB1 text="CheckBox Label" checked="false"></CheckBox>
  <button (tap)="toggleCheck()" text="Toggle it!"></button>
  <button (tap)="getCheckProp()" text="Check Property"></button>
</StackLayout>

NativeScript-Vue Usage Sample

In your main.js (The file where the root Vue instance is created) register the element

Vue.registerElement(
  'CheckBox',
  () => require('@nstudio/nativescript-checkbox').CheckBox,
  {
    model: {
      prop: 'checked',
      event: 'checkedChange'
    }
  }
);

And in your template, use it as:

<check-box :checked="isChecked" @checkedChange="isChecked = $event.value" />

Use checked instead of v-model. See #99.

Properties

Events

API

Css Styling

Styling [Android]

Add the following to app/App_Resources/Android/drawable/checkbox_grey.xml

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="false" android:state_checked="true" android:drawable="@drawable/ic_checkbox_checked_incomplete" />
    <item android:state_enabled="false" android:state_checked="false" android:drawable="@drawable/ic_checkbox_grey_incomplete" />
    <item android:state_checked="true" android:drawable="@drawable/ic_checkbox_checked_grey"/>
    <item android:state_checked="false" android:drawable="@drawable/ic_checkbox_grey" />
</selector>

Radiobuttons, anyone?

Want to use radiobutton behavior for your checkboxes (only one option possible within a group)? Set boxType="circle" and check out the second tab in the Angular demo, here's a screenshot:

<img src="./screens/radiobuttons.png" width="225px"/>

Contributing & Running Demo Apps