Many small overall UI improvements
- proxy are now aware of their respective features; - updated account status info and added also proxy info (especially to show when using an offline copy) - conditionally enabled different features across the UI, based on user account / proxy available features
This commit is contained in:
@@ -31,6 +31,15 @@ Clipperz.PM.UI.Components.Cards.CommandToolbar = React.createClass({
|
||||
propTypes: {
|
||||
// 'label': React.PropTypes.string.isRequired,
|
||||
// 'loading': React.PropTypes.bool,
|
||||
'features': React.PropTypes.array.isRequired,
|
||||
},
|
||||
|
||||
features: function () {
|
||||
return this.props['features'];
|
||||
},
|
||||
|
||||
isFeatureEnabled: function (aValue) {
|
||||
return (this.features().indexOf(aValue) > -1);
|
||||
},
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
@@ -40,29 +49,17 @@ Clipperz.PM.UI.Components.Cards.CommandToolbar = React.createClass({
|
||||
},
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
// EDIT_CARD -> archive, edit
|
||||
// DELETE_CARD -> delete
|
||||
// ADD_CARD -> clone
|
||||
commands: function () {
|
||||
var archiveLabel = this.props['_isArchived'] ? "restore" : "archive";
|
||||
return {
|
||||
'delete': {
|
||||
'label': "delete",
|
||||
'broadcastEvent': 'deleteCard'
|
||||
},
|
||||
'archive': {
|
||||
'label': this.props['_isArchived'] ? "restore" : "archive",
|
||||
'broadcastEvent': 'toggleArchiveCard'
|
||||
},
|
||||
// 'share': {
|
||||
// 'label': "share",
|
||||
// 'broadcastEvent': 'shareCard'
|
||||
// },
|
||||
'clone': {
|
||||
'label': "clone",
|
||||
'broadcastEvent': 'cloneCard'
|
||||
},
|
||||
'edit': {
|
||||
'label': "edit",
|
||||
'broadcastEvent': 'editCard'
|
||||
}
|
||||
'delete': { 'label': "delete", 'broadcastEvent': 'deleteCard', 'enabled': this.isFeatureEnabled('DELETE_CARD')},
|
||||
'archive': { 'label': archiveLabel, 'broadcastEvent': 'toggleArchiveCard', 'enabled': this.isFeatureEnabled('EDIT_CARD')},
|
||||
// 'share': { 'label': "share", 'broadcastEvent': 'shareCard' },
|
||||
'clone': { 'label': "clone", 'broadcastEvent': 'cloneCard', 'enabled': this.isFeatureEnabled('ADD_CARD')},
|
||||
'edit': { 'label': "edit", 'broadcastEvent': 'editCard', 'enabled': this.isFeatureEnabled('EDIT_CARD')}
|
||||
};
|
||||
},
|
||||
|
||||
@@ -92,7 +89,12 @@ Clipperz.PM.UI.Components.Cards.CommandToolbar = React.createClass({
|
||||
}
|
||||
|
||||
return React.DOM.ul({}, MochiKit.Base.map(function (aCommand) {
|
||||
return React.DOM.li({'className':aCommand['broadcastEvent'], 'onClick':commandHandler, 'data-broadcast-event':aCommand['broadcastEvent']}, [React.DOM.span({}, aCommand['label'])]);
|
||||
var classes = {};
|
||||
classes[aCommand['broadcastEvent']] = true;
|
||||
classes['enabled'] = aCommand['enabled'];
|
||||
classes['disabled'] = !aCommand['enabled'];
|
||||
|
||||
return React.DOM.li({'className':React.addons.classSet(classes), 'onClick':aCommand['enabled'] ? commandHandler : null, 'data-broadcast-event':aCommand['broadcastEvent']}, [React.DOM.span({}, aCommand['label'])]);
|
||||
}, commandValues));
|
||||
},
|
||||
|
||||
|
||||
@@ -34,6 +34,7 @@ Clipperz.PM.UI.Components.Cards.Detail = React.createClass({
|
||||
|
||||
result = this.props['selectedCard'];
|
||||
if (result) {
|
||||
result['features'] = this.props['features'];
|
||||
result['style'] = this.props['style'];
|
||||
result['ask'] = (this.props['style'] == 'narrow') ? this.props['ask'] : null;
|
||||
result['showGlobalMask'] = this.props['showGlobalMask'];
|
||||
|
||||
@@ -30,12 +30,23 @@ Clipperz.PM.UI.Components.Cards.List = React.createClass({
|
||||
|
||||
propTypes: {
|
||||
'cards': React.PropTypes.array,
|
||||
'featureSet': React.PropTypes.oneOf(['FULL', 'EXPIRED', 'TRIAL', 'OFFLINE']).isRequired,
|
||||
'featureSet': React.PropTypes.oneOf(['FULL', 'EXPIRED', 'TRIAL']).isRequired,
|
||||
'features': React.PropTypes.array.isRequired,
|
||||
'selectedCard': React.PropTypes.object
|
||||
},
|
||||
|
||||
features: function () {
|
||||
return this.props['features'];
|
||||
},
|
||||
|
||||
isFeatureEnabled: function (aValue) {
|
||||
return (this.features().indexOf(aValue) > -1);
|
||||
},
|
||||
|
||||
handleClick: function (anEvent) {
|
||||
MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'selectCard', {'reference':anEvent.currentTarget.dataset.reference, 'label':anEvent.currentTarget.dataset.label}, true);
|
||||
if (this.isFeatureEnabled('CARD_DETAILS')) {
|
||||
MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'selectCard', {'reference':anEvent.currentTarget.dataset.reference, 'label':anEvent.currentTarget.dataset.label}, true);
|
||||
}
|
||||
},
|
||||
|
||||
renderItem: function (anItem) {
|
||||
@@ -70,7 +81,7 @@ Clipperz.PM.UI.Components.Cards.List = React.createClass({
|
||||
classes[this.props['style']] = true;
|
||||
|
||||
return React.DOM.div({'key':'cardList', 'className':React.addons.classSet(classes)}, [
|
||||
React.DOM.ul({}, MochiKit.Base.map(this.renderItem, cards))
|
||||
this.isFeatureEnabled('LIST_CARDS') ? React.DOM.ul({}, MochiKit.Base.map(this.renderItem, cards)) : null
|
||||
]);
|
||||
},
|
||||
|
||||
|
||||
@@ -62,7 +62,6 @@ Clipperz.PM.UI.Components.Cards.View = React.createClass({
|
||||
newState[aField['_reference']] = !this.state[aField['_reference']];
|
||||
|
||||
return function () {
|
||||
console.log("SHOW PASSWORD", aField, self);
|
||||
self.setState(newState);
|
||||
};
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user