navigation-knockout
Advanced tools
Comparing version 1.2.0 to 2.0.0
@@ -1,4 +0,2 @@ | ||
/// <reference path="navigation.d.ts" /> | ||
/// <reference path="knockout.d.ts" /> | ||
var Navigation = require('navigation'); | ||
"use strict"; | ||
var ko = require('knockout'); | ||
@@ -8,5 +6,5 @@ var LinkUtility = (function () { | ||
} | ||
LinkUtility.setLink = function (element, linkAccessor) { | ||
LinkUtility.setLink = function (stateNavigator, element, linkAccessor) { | ||
try { | ||
element.href = Navigation.settings.historyManager.getHref(linkAccessor()); | ||
element.href = stateNavigator.historyManager.getHref(linkAccessor()); | ||
} | ||
@@ -17,15 +15,15 @@ catch (e) { | ||
}; | ||
LinkUtility.getData = function (toData, includeCurrentData, currentDataKeys) { | ||
LinkUtility.getData = function (stateNavigator, navigationData, includeCurrentData, currentDataKeys) { | ||
if (currentDataKeys) | ||
toData = Navigation.StateContext.includeCurrentData(toData, currentDataKeys.trim().split(/\s*,\s*/)); | ||
navigationData = stateNavigator.stateContext.includeCurrentData(navigationData, currentDataKeys.trim().split(/\s*,\s*/)); | ||
if (includeCurrentData) | ||
toData = Navigation.StateContext.includeCurrentData(toData); | ||
return toData; | ||
navigationData = stateNavigator.stateContext.includeCurrentData(navigationData); | ||
return navigationData; | ||
}; | ||
LinkUtility.isActive = function (key, val) { | ||
if (!Navigation.StateContext.state) | ||
LinkUtility.isActive = function (stateNavigator, key, val) { | ||
if (!stateNavigator.stateContext.state) | ||
return false; | ||
if (val != null) { | ||
var trackTypes = Navigation.StateContext.state.trackTypes; | ||
var currentVal = Navigation.StateContext.data[key]; | ||
var trackTypes = stateNavigator.stateContext.state.trackTypes; | ||
var currentVal = stateNavigator.stateContext.data[key]; | ||
if (currentVal != null) | ||
@@ -46,2 +44,3 @@ return trackTypes ? val === currentVal : val.toString() == currentVal.toString(); | ||
var lazy = !!allBindings.get('lazy'); | ||
var stateNavigator = allBindings.get('stateNavigator'); | ||
ko.utils.registerEventHandler(element, 'click', function (e) { | ||
@@ -52,3 +51,3 @@ if (lazy) | ||
if (element.href) { | ||
var link = Navigation.settings.historyManager.getUrl(element); | ||
var link = stateNavigator.historyManager.getUrl(element); | ||
var navigating = _this.getNavigating(allBindings, viewModel); | ||
@@ -60,6 +59,3 @@ if (navigating(e, link)) { | ||
e['returnValue'] = false; | ||
var historyAction = ko.unwrap(allBindings.get('historyAction')); | ||
if (typeof historyAction === 'string') | ||
historyAction = Navigation.HistoryAction[historyAction]; | ||
Navigation.StateController.navigateLink(link, false, historyAction); | ||
stateNavigator.navigateLink(link, ko.unwrap(allBindings.get('historyAction'))); | ||
} | ||
@@ -70,4 +66,4 @@ } | ||
if (!lazy) { | ||
Navigation.StateController.onNavigate(setLink); | ||
ko.utils.domNodeDisposal.addDisposeCallback(element, function () { return Navigation.StateController.offNavigate(setLink); }); | ||
stateNavigator.onNavigate(setLink); | ||
ko.utils.domNodeDisposal.addDisposeCallback(element, function () { return stateNavigator.offNavigate(setLink); }); | ||
} | ||
@@ -88,3 +84,3 @@ else { | ||
return LinkUtility; | ||
})(); | ||
}()); | ||
module.exports = LinkUtility; |
@@ -0,15 +1,16 @@ | ||
"use strict"; | ||
var LinkUtility = require('./LinkUtility'); | ||
var Navigation = require('navigation'); | ||
var ko = require('knockout'); | ||
var NavigationBackLink = ko.bindingHandlers['navigationBackLink'] = { | ||
init: function (element, valueAccessor, allBindings, viewModel) { | ||
LinkUtility.addListeners(element, function () { return setNavigationBackLink(element, valueAccessor); }, allBindings, viewModel); | ||
LinkUtility.addListeners(element, function () { return setNavigationBackLink(element, valueAccessor, allBindings); }, allBindings, viewModel); | ||
}, | ||
update: function (element, valueAccessor) { | ||
setNavigationBackLink(element, valueAccessor); | ||
update: function (element, valueAccessor, allBindings) { | ||
setNavigationBackLink(element, valueAccessor, allBindings); | ||
} | ||
}; | ||
function setNavigationBackLink(element, valueAccessor) { | ||
LinkUtility.setLink(element, function () { return Navigation.StateController.getNavigationBackLink(ko.unwrap(valueAccessor())); }); | ||
function setNavigationBackLink(element, valueAccessor, allBindings) { | ||
var stateNavigator = allBindings.get('stateNavigator'); | ||
LinkUtility.setLink(stateNavigator, element, function () { return stateNavigator.getNavigationBackLink(ko.unwrap(valueAccessor())); }); | ||
} | ||
module.exports = NavigationBackLink; |
@@ -0,1 +1,2 @@ | ||
"use strict"; | ||
var NavigationBackLink = require('./NavigationBackLink'); | ||
@@ -11,3 +12,3 @@ var NavigationLink = require('./NavigationLink'); | ||
return NavigationKnockout; | ||
})(); | ||
}()); | ||
module.exports = NavigationKnockout; |
@@ -0,3 +1,3 @@ | ||
"use strict"; | ||
var LinkUtility = require('./LinkUtility'); | ||
var Navigation = require('navigation'); | ||
var ko = require('knockout'); | ||
@@ -13,19 +13,16 @@ var NavigationLink = ko.bindingHandlers['navigationLink'] = { | ||
function setNavigationLink(element, valueAccessor, allBindings) { | ||
var action = ko.unwrap(valueAccessor()); | ||
var stateKey = ko.unwrap(valueAccessor()); | ||
var data = {}; | ||
var toData = ko.unwrap(allBindings.get('toData')); | ||
var navigationData = ko.unwrap(allBindings.get('navigationData')); | ||
var active = true; | ||
for (var key in toData) { | ||
var val = ko.unwrap(toData[key]); | ||
var stateNavigator = allBindings.get('stateNavigator'); | ||
for (var key in navigationData) { | ||
var val = ko.unwrap(navigationData[key]); | ||
data[key] = val; | ||
active = active && LinkUtility.isActive(key, val); | ||
active = active && LinkUtility.isActive(stateNavigator, key, val); | ||
} | ||
LinkUtility.setLink(element, function () { return Navigation.StateController.getNavigationLink(action, LinkUtility.getData(data, ko.unwrap(allBindings.get('includeCurrentData')), ko.unwrap(allBindings.get('currentDataKeys')))); }); | ||
active = active && !!element.href && isActive(action); | ||
LinkUtility.setLink(stateNavigator, element, function () { return stateNavigator.getNavigationLink(stateKey, LinkUtility.getData(stateNavigator, data, ko.unwrap(allBindings.get('includeCurrentData')), ko.unwrap(allBindings.get('currentDataKeys')))); }); | ||
active = active && !!element.href && stateNavigator.stateContext.state && stateNavigator.stateContext.state.key === stateKey; | ||
LinkUtility.setActive(element, active, ko.unwrap(allBindings.get('activeCssClass')), ko.unwrap(allBindings.get('disableActive'))); | ||
} | ||
function isActive(action) { | ||
var nextState = Navigation.StateController.getNextState(action); | ||
return nextState === nextState.parent.initial && nextState.parent === Navigation.StateContext.dialog; | ||
} | ||
module.exports = NavigationLink; |
@@ -0,3 +1,3 @@ | ||
"use strict"; | ||
var LinkUtility = require('./LinkUtility'); | ||
var Navigation = require('navigation'); | ||
var ko = require('knockout'); | ||
@@ -14,10 +14,11 @@ var RefreshLink = ko.bindingHandlers['refreshLink'] = { | ||
var data = {}; | ||
var toData = ko.unwrap(valueAccessor()); | ||
var navigationData = ko.unwrap(valueAccessor()); | ||
var active = true; | ||
for (var key in toData) { | ||
var val = ko.unwrap(toData[key]); | ||
var stateNavigator = allBindings.get('stateNavigator'); | ||
for (var key in navigationData) { | ||
var val = ko.unwrap(navigationData[key]); | ||
data[key] = val; | ||
active = active && LinkUtility.isActive(key, val); | ||
active = active && LinkUtility.isActive(stateNavigator, key, val); | ||
} | ||
LinkUtility.setLink(element, function () { return Navigation.StateController.getRefreshLink(LinkUtility.getData(data, ko.unwrap(allBindings.get('includeCurrentData')), ko.unwrap(allBindings.get('currentDataKeys')))); }); | ||
LinkUtility.setLink(stateNavigator, element, function () { return stateNavigator.getRefreshLink(LinkUtility.getData(stateNavigator, data, ko.unwrap(allBindings.get('includeCurrentData')), ko.unwrap(allBindings.get('currentDataKeys')))); }); | ||
active = active && !!element.href; | ||
@@ -24,0 +25,0 @@ LinkUtility.setActive(element, active, ko.unwrap(allBindings.get('activeCssClass')), ko.unwrap(allBindings.get('disableActive'))); |
{ | ||
"name": "navigation-knockout", | ||
"version": "1.2.0", | ||
"description": "A plugin for the Navigation routing library that lets you build Hyperlinks using Knockout's binding syntax", | ||
"version": "2.0.0", | ||
"description": "Knockout plugin for the Navigation router", | ||
"main": "navigation-knockout.js", | ||
@@ -20,7 +20,7 @@ "repository": { | ||
"author": "Graham Mendick", | ||
"license": "Apache License 2.0", | ||
"license": "Apache-2.0", | ||
"bugs": { | ||
"url": "https://github.com/grahammendick/navigation/issues" | ||
}, | ||
"homepage": "http://grahammendick.github.io/navigation/example/knockout/navigation.html" | ||
"homepage": "http://grahammendick.github.io/navigation/" | ||
} |
# navigation-knockout | ||
[Navigation Knockout](http://grahammendick.github.io/navigation/example/knockout/navigation.html) is a plugin for the Navigation routing library that lets you build Hyperlinks using Knockout's binding syntax. | ||
[Navigation Knockout](http://grahammendick.github.io/navigation/) is the Knockout plugin for the Navigation router. | ||
var NavigationKnockout = require('navigation-knockout'); |
SPDX disjunction
LicenseSPDX disjunction for an artifact's license information
Found 1 instance in 1 package
SPDX disjunction
LicenseSPDX disjunction for an artifact's license information
Found 1 instance in 1 package
No website
QualityPackage does not have a website.
Found 1 instance in 1 package
0
8696
162