UNPKG

2.48 kBJavaScriptView Raw
1export default function sharedUiFactory() {
2 // A simplified interface for the shared ui components
3
4 return {
5 init: function($scope, componentAliases) {
6 var service = {};
7 var app = $scope.app;
8 if ($scope.page) {
9 // this will break with viewport2, but it's deprecated anyway.
10 service.route = $scope.page.route;
11 }
12 $scope.sharedUi = service;
13 service.addComponent = function(alias, componentKey) {
14 service[alias] = {
15 setState: function(active, available, data) {
16 app.setSharedUiComponentState($scope, componentKey, active, available, data);
17 },
18 enable: function(data) {
19 app.setSharedUiComponentState($scope, componentKey, undefined, true, data);
20 },
21 disable: function() {
22 app.setSharedUiComponentState($scope, componentKey, false, false, undefined);
23 },
24 show: function(data) {
25 app.setSharedUiComponentState($scope, componentKey, true, true, data);
26 },
27 hide: function(disable) {
28 app.setSharedUiComponentState($scope, componentKey, false, !disable, undefined);
29 },
30 replaceData: function(data) {
31 app.setSharedUiComponentState($scope, componentKey, undefined, undefined, data);
32 },
33 extendData: function(update) {
34 var state = app.getSharedUiComponentState($scope, componentKey);
35 var newData = angular.extend(state.data || {}, update);
36 app.setSharedUiComponentState($scope, componentKey, state.active, state.available, newData);
37 },
38 updateState: function(fn) {
39 var state = app.getSharedUiComponentState($scope, componentKey);
40 fn(state);
41 app.setSharedUiComponentState($scope, componentKey, state.active, state.available, state.data);
42 }
43
44 };
45 };
46
47 for (let alias in componentAliases) {
48 service.addComponent(alias, componentAliases[alias]);
49 }
50 return service;
51 }
52 };
53}
\No newline at end of file