UNPKG

pip-webui

Version:

HTML5 UI for LOB applications

107 lines (95 loc) 4.01 kB
/** * @file Options dialog * @copyright Digital Living Software Corp. 2014-2016 * @todo * - Improve sample in sampler app * - Remove deleted hack in the controller */ (function (angular, $, _) { 'use strict'; var thisModule = angular.module('pipOptionsDialog', ['ngMaterial', 'pipUtils', 'pipTranslate', 'pipBasicControls.Templates']); /* eslint-disable quote-props */ thisModule.config(function (pipTranslateProvider) { pipTranslateProvider.translations('en', { 'OPTIONS_TITLE': 'Choose Option' }); pipTranslateProvider.translations('ru', { 'OPTIONS_TITLE': 'Выберите опцию' }); }); /* eslint-enable quote-props */ thisModule.factory('pipOptionsDialog', function ($mdDialog) { return { show: function (params, successCallback, cancelCallback) { if (params.event) { params.event.stopPropagation(); params.event.preventDefault(); } function focusToggleControl() { if (params.event && params.event.currentTarget) { params.event.currentTarget.focus(); } } $mdDialog.show({ targetEvent: params.event, templateUrl: 'options_dialog/options_dialog.html', controller: 'pipOptionsDialogController', locals: {params: params}, clickOutsideToClose: true }) .then(function (option) { focusToggleControl(); if (successCallback) { successCallback(option); } }, function () { focusToggleControl(); if (cancelCallback) { cancelCallback(); } }); } }; } ); thisModule.controller('pipOptionsDialogController', function ($scope, $rootScope, $mdDialog, params) { $scope.theme = $rootScope.$theme; $scope.title = params.title || 'OPTIONS_TITLE'; $scope.options = params.options; $scope.selectedOption = _.find(params.options, {active: true}) || {}; $scope.selectedOptionName = $scope.selectedOption.name; $scope.applyButtonTitle = params.appleButtonTitle || 'SELECT'; $scope.deleted = params.deleted; $scope.deletedTitle = params.deletedTitle; $scope.onOptionSelect = function (event, option) { event.stopPropagation(); $scope.selectedOptionName = option.name; }; $scope.onKeyPress = function (event) { if (event.keyCode === 32 || event.keyCode === 13) { event.stopPropagation(); event.preventDefault(); $scope.onSelect(); } }; $scope.onCancel = function () { $mdDialog.cancel(); }; $scope.onSelect = function () { var option; option = _.find(params.options, {name: $scope.selectedOptionName}); $mdDialog.hide({option: option, deleted: $scope.deleted}); }; // Setting focus to input control function focusInput() { var list; list = $('.pip-options-dialog .pip-list'); list.focus(); } setTimeout(focusInput, 500); } ); })(window.angular, window.jQuery, window._);