Socket
Socket
Sign inDemoInstall

rater-js

Package Overview
Dependencies
Maintainers
1
Versions
15
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

rater-js - npm Package Compare versions

Comparing version 0.5.1 to 0.5.2

35

index.js

@@ -46,2 +46,16 @@ (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.raterJs = f()}})(function(){var define,module,exports;return (function(){function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}return e})()({1:[function(require,module,exports){

if(options.rating){
setRating(options.rating);
} else {
var dataRating = elem.dataset.rating;
if(dataRating){
setRating(+dataRating);
}
}
if(typeof rating === "undefined"){
elem.querySelector(".star-value").style.width = "0px";
}
//private methods

@@ -140,10 +154,18 @@ function onMouseMove(e) {

function setRating(value) {
rating = value;
if(typeof value === "undefined"){
throw new Error("Value not set.");
}
if (typeof value !== "undefined") {
elem.querySelector(".star-value").style.width = value/stars * 100 + "%";
}else {
elem.querySelector(".star-value").style.width = "0px";
if(typeof value !== "number"){
throw new Error("Value must be a number.");
}
if(value < 0 || value > stars){
let ratingError = new Error("Value too high. Please set a rating of " + stars + " or below");
ratingError.name = "ratingError";
throw ratingError;
}
rating = value;
elem.querySelector(".star-value").style.width = value/stars * 100 + "%";
elem.setAttribute("data-rating", value);

@@ -161,4 +183,3 @@ }

}
setRating(options.rating);
elem.addEventListener("mousemove", onMouseMove);

@@ -165,0 +186,0 @@ elem.addEventListener("mouseout", onStarOut);

@@ -45,2 +45,16 @@ var css = require('./style.css');

if(options.rating){
setRating(options.rating);
} else {
var dataRating = elem.dataset.rating;
if(dataRating){
setRating(+dataRating);
}
}
if(typeof rating === "undefined"){
elem.querySelector(".star-value").style.width = "0px";
}
//private methods

@@ -139,10 +153,18 @@ function onMouseMove(e) {

function setRating(value) {
rating = value;
if(typeof value === "undefined"){
throw new Error("Value not set.");
}
if (typeof value !== "undefined") {
elem.querySelector(".star-value").style.width = value/stars * 100 + "%";
}else {
elem.querySelector(".star-value").style.width = "0px";
if(typeof value !== "number"){
throw new Error("Value must be a number.");
}
if(value < 0 || value > stars){
let ratingError = new Error("Value too high. Please set a rating of " + stars + " or below");
ratingError.name = "ratingError";
throw ratingError;
}
rating = value;
elem.querySelector(".star-value").style.width = value/stars * 100 + "%";
elem.setAttribute("data-rating", value);

@@ -160,4 +182,3 @@ }

}
setRating(options.rating);
elem.addEventListener("mousemove", onMouseMove);

@@ -164,0 +185,0 @@ elem.addEventListener("mouseout", onStarOut);

{
"name": "rater-js",
"description": "Star rating widget for the browser.",
"version": "0.5.1",
"version": "0.5.2",
"repository": {

@@ -38,4 +38,5 @@ "type": "git",

"jsdom": "^11.6.2",
"mocha": "^5.0.5"
"mocha": "^5.0.5",
"sinon": "^4.5.0"
}
}

25

README.md

@@ -5,3 +5,3 @@ Rater Js

![rater-js Logo](ratings.png)
[![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=N2F7QTTZAHKZS)
[![NPM version][npm-image]][npm-url]

@@ -92,16 +92,12 @@ [![License][license-image]][license-url]

```js
{
element: HtmlElement, //required
rateCallback: Function,
max: "Number of stars",
starSize: "Width and height of the star image in pixels",
disableText: "Text",
ratingText: "Text {rating} {maxRating}",
isBusyText: "Text", //displayed while user is rating but done not called yet
readOnly: true/false
}
element: HtmlElement, required
rateCallback: Function
max: "Number of stars"
showToolTip: true/false
starSize: "Width and height of the star image in pixels"
disableText: "Text"
ratingText: "Text {rating} {maxRating}"
isBusyText: "Text", //displayed while user is rating but done not called yet
readOnly: true/false
```
## Methods

@@ -114,2 +110,3 @@

getRating(): //Get the average rating
dispose(); //Removes event handlers
```

@@ -116,0 +113,0 @@

var assert = require('assert');
var raterJs = require('../lib/rater-js');
var sinon = require('sinon');
var jsdom = require('jsdom');

@@ -22,2 +23,68 @@ const { JSDOM, document } = jsdom;

});
it('getRating should return the initial rating', function() {
let rater = raterJs({ element:element, rating:3 });
assert.equal(rater.getRating(),3);
});
it('getRating should return the changed rating', function() {
let rater = raterJs({ element:element, rating:3 });
rater.setRating(4);
assert.equal(rater.getRating(),4);
});
it('should set rating from data-rating if present', function() {
const dom2 = new JSDOM(`<!DOCTYPE html><div data-rating="4" id="rater">test</div>`);
const element2 = dom2.window.document.querySelector("#rater");
let rater = raterJs({ element:element2});
assert.equal(rater.getRating(),4);
});
it('clicking a the star should trigger callback', function() {
let callbackSpy = sinon.spy();
let rater = raterJs({ element:element, rating:3, rateCallback:callbackSpy });
var evt = global.document.createEvent("HTMLEvents");
evt.initEvent("click", false, true);
element.dispatchEvent(evt);
sinon.assert.calledOnce(callbackSpy);
});
it('setRating should throw when rating is below 0', function() {
let rater = raterJs({ element:element, rating:3 });
assert.throws(() => {
rater.setRating(-1);
});
assert.throws(() => {
rater.setRating(-0.1);
});
});
it('setRating should throw when rating is above max', function() {
let rater = raterJs({ element:element, max:5 });
assert.throws(() => {
rater.setRating(6);
});
assert.throws(() => {
rater.setRating(5.1);
});
});
it('setRating should throw when rating is not a number', function() {
let rater = raterJs({ element:element, max:5 });
assert.throws(() => {
rater.setRating(undefined);
});
assert.throws(() => {
rater.setRating("3");
});
});
});
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc