Skip to content

Commit

Permalink
feat(hover): finished hover implementation
Browse files Browse the repository at this point in the history
Closes #55
  • Loading branch information
BioPhoton committed Apr 7, 2017
1 parent ee2270f commit a1c5341
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 8 deletions.
1 change: 1 addition & 0 deletions src/star-rating.component.ts
Expand Up @@ -13,6 +13,7 @@ export class StarRatingComponent implements ng.IComponentOptions {
id: '<'
, rating: '<'
, showHalfStars: '<'
, showHoverStars: '<'
, numOfStars: '<'
, size: '<'
, space: '<'
Expand Down
59 changes: 51 additions & 8 deletions src/star-rating.controller.ts
Expand Up @@ -10,8 +10,6 @@ import {
, IStarRatingOnUpdateEvent, IStarRatingOnHoverEvent
} from "star-rating.structs"

import IChangesObject = ng.IChanges;

export class StarRatingController implements ng.IComponentController, IStarRatingCompBindings {

static DefaultClassEmpty: string = "default-star-empty-icon";
Expand All @@ -22,6 +20,8 @@ export class StarRatingController implements ng.IComponentController, IStarRatin

static DefaultNumOfStars: number = 5;

static DefaultShowHoverStars:boolean = false;

static DefaultSize: starRatingSizes = "medium";

static DefaultSpeed: starRatingSpeed = "noticeable";
Expand Down Expand Up @@ -118,13 +118,15 @@ export class StarRatingController implements ng.IComponentController, IStarRatin
protected _labelText: string;
protected _staticColor: starRatingColors;
protected _labelPosition: starRatingPosition;
protected _labelVisible: boolean;
protected _speed: starRatingSpeed;
protected _size: starRatingSizes;
protected _starType: starRatingStarTypes;
protected _space: starRatingStarSpace;
protected _readOnly: boolean;
protected _disabled: boolean;
protected _showHalfStars: boolean;
protected _showHoverStars: boolean;
protected _rating: number;
protected _numOfStars: number;
getHalfStarVisible: (rating: number) => boolean;
Expand Down Expand Up @@ -207,6 +209,13 @@ export class StarRatingController implements ng.IComponentController, IStarRatin
return this._showHalfStars;
}

set showHoverStars(value: boolean) {
this._showHoverStars = !!value;
}
get showHoverStars(): boolean {
return this._showHoverStars;
}

set disabled(value: boolean) {
this._disabled = !!value;
}
Expand Down Expand Up @@ -256,6 +265,14 @@ export class StarRatingController implements ng.IComponentController, IStarRatin
return this._labelPosition;
}

set labelVisible(value: boolean) {
this._labelVisible = value || StarRatingController.DefaultShowHoverStars;
}
get labelVisible(): boolean {
return this._labelVisible;
}


set staticColor(value: starRatingColors) {
this._staticColor = value || undefined;

Expand All @@ -280,6 +297,27 @@ export class StarRatingController implements ng.IComponentController, IStarRatin
return this._id;
}


getComponentClassNames():string {
let classNames:string[] = [];

classNames.push(this.rating?'value-'+this.ratingAsInteger:'value-0');
classNames.push(this.showHoverStars?'hover':'');
classNames.push(this.hoverRating?'hover-'+this.hoverRating:'hover-0');
classNames.push(this.halfStarVisible?'half':'');
classNames.push(this.space?'space-'+this.space:'');
classNames.push(this.labelVisible?'label-'+this.labelVisible:'');
classNames.push(this.labelPosition?'label-'+this.labelPosition:'');
classNames.push(this.color?'color-'+this.color:'');
classNames.push(this.starType?'star-'+this.starType:'');
classNames.push(this.speed);
classNames.push(this.size);
classNames.push(this.readOnly?'read-only':'');
classNames.push(this.disabled?'disabled':'');

return classNames.join(' ');
}

svgVisible():boolean {
return this.starType === "svg";
}
Expand Down Expand Up @@ -321,6 +359,7 @@ export class StarRatingController implements ng.IComponentController, IStarRatin
this.pathFilled = StarRatingController.DefaultSvgPathFilled;

//set default Component Inputs
this._showHoverStars = StarRatingController.DefaultShowHoverStars;
this._numOfStars = StarRatingController.DefaultNumOfStars;
this.stars = StarRatingController._getStarsArray(this.numOfStars);
this.setColor();
Expand Down Expand Up @@ -377,7 +416,12 @@ export class StarRatingController implements ng.IComponentController, IStarRatin
}

if (valueChanged('disabled', changes)) {
this.disabled = !!changes.disabled.currentValue;
this.disabled = changes.disabled.currentValue;
}

if(valueChanged('labelVisible', changes)) {
console.log('labelVisible: ', changes);
this.labelVisible = changes.labelVisible.currentValue
}

//number
Expand Down Expand Up @@ -442,13 +486,12 @@ export class StarRatingController implements ng.IComponentController, IStarRatin

protected onStarHover(rating: number): void {

if (!this.interactionPossible()) {
if (!this.interactionPossible() || !this.showHoverStars) {
return;
}

console.log('onStarHover: ', rating);
this.hoverRating = parseInt(rating.toString());

this.hoverRating = rating?parseInt(rating.toString()):0;
console.log('onStarHover: ', this.hoverRating);
//fire onHover event
let $event:IStarRatingOnHoverEvent = { hoverRating: this.hoverRating};
if(typeof this.onHover === 'function') {
Expand All @@ -458,7 +501,7 @@ export class StarRatingController implements ng.IComponentController, IStarRatin
}

protected interactionPossible():boolean {
return !(this.readOnly || this.disabled);
return !this.readOnly && !this.disabled;
}

}
2 changes: 2 additions & 0 deletions src/star-rating.structs.ts
Expand Up @@ -18,6 +18,8 @@ export interface IStarRatingCompBindings {
readOnly?: boolean;
disabled?: boolean;
showHalfStars?: boolean;
labelVisible?: boolean;
showHoverStars?: boolean;
rating?: number;
numOfStars?: number;
getHalfStarVisible?(rating: number): boolean;
Expand Down

0 comments on commit a1c5341

Please sign in to comment.