trying to update the form editor

This commit is contained in:
Davide Alberani 2017-04-02 16:28:59 +02:00
parent bb2b2fd91f
commit 71063c4bca
28 changed files with 7403 additions and 11266 deletions

View file

@ -6,6 +6,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="text/javascript" src="/static/js/jquery-3.2.0.min.js"></script>
<script type="text/javascript" src="/static/js/api-check.min.js"></script>
<script type="text/javascript" src="/static/js/angular.min.js"></script>
<script type="text/javascript" src="/static/js/bootstrap.min.js"></script>
<script type="text/javascript" src="/static/js/ui-bootstrap-tpls-0.14.3.min.js"></script>
@ -16,8 +17,13 @@
<script type="text/javascript" src="/static/js/angular-file-upload.min.js"></script>
<script type="text/javascript" src="/static/js/angular-ui-router.min.js"></script>
<script type="text/javascript" src="/static/js/angular-websocket.min.js"></script>
<script type="text/javascript" src="/static/js/angular-strap.min.js"></script>
<script type="text/javascript" src="/static/js/angular-strap.tpl.min.js"></script>
<script type="text/javascript" src="/static/js/angular-translate.min.js"></script>
<script type="text/javascript" src="/static/js/angular-translate-loader-static-files.min.js"></script>
<script type="text/javascript" src="/static/js/angular-formly-templates-bootstrap.min.js"></script>
<script type="text/javascript" src="/static/js/formly.min.js"></script>
<script type="text/javascript" src="/static/js/nya-bs-select.min.js"></script>
<script type="text/javascript" src="/static/js/eda.stepway.min.js"></script>
<script type="text/javascript" src="/static/js/eda.easyFormViewer.min.js"></script>
@ -26,9 +32,6 @@
<script type="text/javascript" src="/static/js/textAngular.min.js"></script>
<script type="text/javascript" src="/static/js/lodash.min.js"></script>
<script type="text/javascript" src="/static/js/toaster.min.js"></script>
<script type="text/javascript" src="/static/js/api-check.min.js"></script>
<script type="text/javascript" src="/static/js/formly.min.js"></script>
<script type="text/javascript" src="/static/js/angular-formly-templates-bootstrap.min.js"></script>
<script type="text/javascript" src="/static/js/eventman.js"></script>
<script type="text/javascript" src="/js/app.js"></script>

View file

@ -0,0 +1,611 @@
//! angular-formly-templates-bootstrap version 0.0.0-semantically-released.0 built with ♥ by Astrism <astrisms@gmail.com>, Kent C. Dodds <kent@doddsfamily.us> (ó ì_í)=óò=(ì_í ò)
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory(require("angular"), require("angular-formly"), require("api-check"));
else if(typeof define === 'function' && define.amd)
define(["angular", "angular-formly", "api-check"], factory);
else if(typeof exports === 'object')
exports["ngFormlyTemplatesBootstrap"] = factory(require("angular"), require("angular-formly"), require("api-check"));
else
root["ngFormlyTemplatesBootstrap"] = factory(root["angular"], root["ngFormly"], root["apiCheck"]);
})(this, function(__WEBPACK_EXTERNAL_MODULE_3__, __WEBPACK_EXTERNAL_MODULE_4__, __WEBPACK_EXTERNAL_MODULE_5__) {
return /******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId])
/******/ return installedModules[moduleId].exports;
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ exports: {},
/******/ id: moduleId,
/******/ loaded: false
/******/ };
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/ // Flag the module as loaded
/******/ module.loaded = true;
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/ // Load entry module and return exports
/******/ return __webpack_require__(0);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
module.exports = __webpack_require__(1);
/***/ },
/* 1 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
Object.defineProperty(exports, '__esModule', {
value: true
});
var ngModuleName = 'formlyBootstrap';
var angular = __webpack_require__(2);
var ngModule = angular.module(ngModuleName, [__webpack_require__(4)]);
ngModule.constant('formlyBootstrapApiCheck', __webpack_require__(5)({
output: {
prefix: 'angular-formly-bootstrap'
}
}));
ngModule.constant('formlyBootstrapVersion', ("0.0.0-semantically-released.0"));
__webpack_require__(6)(ngModule);
__webpack_require__(9)(ngModule);
__webpack_require__(19)(ngModule);
exports['default'] = ngModuleName;
module.exports = exports['default'];
/***/ },
/* 2 */
/***/ function(module, exports, __webpack_require__) {
// some versions of angular don't export the angular module properly,
// so we get it from window in this case.
'use strict';
var angular = __webpack_require__(3);
if (!angular.version) {
angular = window.angular;
}
module.exports = angular;
/***/ },
/* 3 */
/***/ function(module, exports) {
module.exports = __WEBPACK_EXTERNAL_MODULE_3__;
/***/ },
/* 4 */
/***/ function(module, exports) {
module.exports = __WEBPACK_EXTERNAL_MODULE_4__;
/***/ },
/* 5 */
/***/ function(module, exports) {
module.exports = __WEBPACK_EXTERNAL_MODULE_5__;
/***/ },
/* 6 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
Object.defineProperty(exports, '__esModule', {
value: true
});
exports['default'] = function (ngModule) {
ngModule.config(addWrappers);
function addWrappers(formlyConfigProvider) {
formlyConfigProvider.setWrapper([{
name: 'bootstrapLabel',
template: __webpack_require__(7),
apiCheck: function apiCheck(check) {
return {
templateOptions: {
label: check.string.optional,
required: check.bool.optional,
labelSrOnly: check.bool.optional
}
};
}
}, { name: 'bootstrapHasError', template: __webpack_require__(8) }]);
}
addWrappers.$inject = ["formlyConfigProvider"];
};
module.exports = exports['default'];
/***/ },
/* 7 */
/***/ function(module, exports) {
module.exports = "<div>\n <label for=\"{{id}}\" class=\"control-label {{to.labelSrOnly ? 'sr-only' : ''}}\" ng-if=\"to.label\">\n {{to.label}}\n {{to.required ? '*' : ''}}\n </label>\n <formly-transclude></formly-transclude>\n</div>\n"
/***/ },
/* 8 */
/***/ function(module, exports) {
module.exports = "<div class=\"form-group\" ng-class=\"{'has-error': showError}\">\n <formly-transclude></formly-transclude>\n</div>\n"
/***/ },
/* 9 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
Object.defineProperty(exports, '__esModule', {
value: true
});
exports['default'] = function (ngModule) {
__webpack_require__(10)(ngModule);
__webpack_require__(12)(ngModule);
__webpack_require__(14)(ngModule);
__webpack_require__(15)(ngModule);
__webpack_require__(17)(ngModule);
__webpack_require__(18)(ngModule);
};
module.exports = exports['default'];
/***/ },
/* 10 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
Object.defineProperty(exports, '__esModule', {
value: true
});
exports['default'] = function (ngModule) {
ngModule.config(addCheckboxType);
function addCheckboxType(formlyConfigProvider) {
formlyConfigProvider.setType({
name: 'checkbox',
template: __webpack_require__(11),
wrapper: ['bootstrapHasError'],
apiCheck: function apiCheck(check) {
return {
templateOptions: {
label: check.string
}
};
}
});
}
addCheckboxType.$inject = ["formlyConfigProvider"];
};
module.exports = exports['default'];
/***/ },
/* 11 */
/***/ function(module, exports) {
module.exports = "<div class=\"checkbox\">\n\t<label>\n\t\t<input type=\"checkbox\"\n class=\"formly-field-checkbox\"\n\t\t ng-model=\"model[options.key]\">\n\t\t{{to.label}}\n\t\t{{to.required ? '*' : ''}}\n\t</label>\n</div>\n"
/***/ },
/* 12 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
Object.defineProperty(exports, '__esModule', {
value: true
});
exports['default'] = function (ngModule) {
ngModule.config(addCheckboxType);
function addCheckboxType(formlyConfigProvider) {
formlyConfigProvider.setType({
name: 'multiCheckbox',
template: __webpack_require__(13),
wrapper: ['bootstrapLabel', 'bootstrapHasError'],
apiCheck: function apiCheck(check) {
return {
templateOptions: {
options: check.arrayOf(check.object),
labelProp: check.string.optional,
valueProp: check.string.optional
}
};
},
defaultOptions: {
noFormControl: false,
ngModelAttrs: {
required: {
attribute: '',
bound: ''
}
}
},
controller: /* @ngInject */["$scope", function controller($scope) {
var to = $scope.to;
var opts = $scope.options;
$scope.multiCheckbox = {
checked: [],
change: setModel
};
// initialize the checkboxes check property
$scope.$watch('model', function modelWatcher(newModelValue) {
var modelValue, valueProp;
if (Object.keys(newModelValue).length) {
modelValue = newModelValue[opts.key];
$scope.$watch('to.options', function optionsWatcher(newOptionsValues) {
if (newOptionsValues && Array.isArray(newOptionsValues) && Array.isArray(modelValue)) {
valueProp = to.valueProp || 'value';
for (var index = 0; index < newOptionsValues.length; index++) {
$scope.multiCheckbox.checked[index] = modelValue.indexOf(newOptionsValues[index][valueProp]) !== -1;
}
}
});
}
}, true);
function checkValidity(expressionValue) {
var valid;
if ($scope.to.required) {
valid = angular.isArray($scope.model[opts.key]) && $scope.model[opts.key].length > 0 && expressionValue;
$scope.fc.$setValidity('required', valid);
}
}
function setModel() {
$scope.model[opts.key] = [];
angular.forEach($scope.multiCheckbox.checked, function (checkbox, index) {
if (checkbox) {
$scope.model[opts.key].push(to.options[index][to.valueProp || 'value']);
}
});
// Must make sure we mark as touched because only the last checkbox due to a bug in angular.
$scope.fc.$setTouched();
checkValidity(true);
if ($scope.to.onChange) {
$scope.to.onChange();
}
}
if (opts.expressionProperties && opts.expressionProperties['templateOptions.required']) {
$scope.$watch(function () {
return $scope.to.required;
}, function (newValue) {
checkValidity(newValue);
});
}
if ($scope.to.required) {
var unwatchFormControl = $scope.$watch('fc', function (newValue) {
if (!newValue) {
return;
}
checkValidity(true);
unwatchFormControl();
});
}
}]
});
}
addCheckboxType.$inject = ["formlyConfigProvider"];
};
module.exports = exports['default'];
/***/ },
/* 13 */
/***/ function(module, exports) {
module.exports = "<div class=\"radio-group\">\n <div ng-repeat=\"(key, option) in to.options\" class=\"checkbox\">\n <label>\n <input type=\"checkbox\"\n id=\"{{id + '_'+ $index}}\"\n ng-model=\"multiCheckbox.checked[$index]\"\n ng-change=\"multiCheckbox.change()\">\n {{option[to.labelProp || 'name']}}\n </label>\n </div>\n</div>\n"
/***/ },
/* 14 */
/***/ function(module, exports) {
'use strict';
Object.defineProperty(exports, '__esModule', {
value: true
});
exports['default'] = function (ngModule) {
ngModule.config(addInputType);
function addInputType(formlyConfigProvider) {
formlyConfigProvider.setType({
name: 'input',
template: '<input class="form-control" ng-model="model[options.key]">',
wrapper: ['bootstrapLabel', 'bootstrapHasError']
});
}
addInputType.$inject = ["formlyConfigProvider"];
};
module.exports = exports['default'];
/***/ },
/* 15 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
Object.defineProperty(exports, '__esModule', {
value: true
});
exports['default'] = function (ngModule) {
ngModule.config(addRadioType);
function addRadioType(formlyConfigProvider) {
formlyConfigProvider.setType({
name: 'radio',
template: __webpack_require__(16),
wrapper: ['bootstrapLabel', 'bootstrapHasError'],
defaultOptions: {
noFormControl: false
},
apiCheck: function apiCheck(check) {
return {
templateOptions: {
options: check.arrayOf(check.object),
labelProp: check.string.optional,
valueProp: check.string.optional,
inline: check.bool.optional
}
};
}
});
}
addRadioType.$inject = ["formlyConfigProvider"];
};
module.exports = exports['default'];
/***/ },
/* 16 */
/***/ function(module, exports) {
module.exports = "<div class=\"radio-group\">\n <div ng-repeat=\"(key, option) in to.options\" ng-class=\"{ 'radio': !to.inline, 'radio-inline': to.inline }\">\n <label>\n <input type=\"radio\"\n id=\"{{id + '_'+ $index}}\"\n tabindex=\"0\"\n ng-value=\"option[to.valueProp || 'value']\"\n ng-model=\"model[options.key]\">\n {{option[to.labelProp || 'name']}}\n </label>\n </div>\n</div>\n"
/***/ },
/* 17 */
/***/ function(module, exports) {
'use strict';
Object.defineProperty(exports, '__esModule', {
value: true
});
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
exports['default'] = function (ngModule) {
ngModule.config(addSelectType);
var template = '<select class="form-control" ng-model="model[options.key]"></select>';
function addSelectType(formlyConfigProvider) {
formlyConfigProvider.setType({
name: 'select',
template: template,
wrapper: ['bootstrapLabel', 'bootstrapHasError'],
defaultOptions: function defaultOptions(options) {
/* jshint maxlen:195 */
var ngOptions = options.templateOptions.ngOptions || 'option[to.valueProp || \'value\'] as option[to.labelProp || \'name\'] group by option[to.groupProp || \'group\'] for option in to.options';
return {
ngModelAttrs: _defineProperty({}, ngOptions, {
value: options.templateOptions.optionsAttr || 'ng-options'
})
};
},
apiCheck: function apiCheck(check) {
return {
templateOptions: {
options: check.arrayOf(check.object),
optionsAttr: check.string.optional,
labelProp: check.string.optional,
valueProp: check.string.optional,
groupProp: check.string.optional
}
};
}
});
}
addSelectType.$inject = ["formlyConfigProvider"];
};
module.exports = exports['default'];
/***/ },
/* 18 */
/***/ function(module, exports) {
'use strict';
Object.defineProperty(exports, '__esModule', {
value: true
});
exports['default'] = function (ngModule) {
ngModule.config(addTextareaType);
function addTextareaType(formlyConfigProvider) {
formlyConfigProvider.setType({
name: 'textarea',
template: '<textarea class="form-control" ng-model="model[options.key]"></textarea>',
wrapper: ['bootstrapLabel', 'bootstrapHasError'],
defaultOptions: {
ngModelAttrs: {
rows: { attribute: 'rows' },
cols: { attribute: 'cols' }
}
},
apiCheck: function apiCheck(check) {
return {
templateOptions: {
rows: check.number.optional,
cols: check.number.optional
}
};
}
});
}
addTextareaType.$inject = ["formlyConfigProvider"];
};
module.exports = exports['default'];
/***/ },
/* 19 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
Object.defineProperty(exports, '__esModule', {
value: true
});
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var _addons = __webpack_require__(20);
var _addons2 = _interopRequireDefault(_addons);
var _description = __webpack_require__(22);
var _description2 = _interopRequireDefault(_description);
exports['default'] = function (ngModule) {
(0, _addons2['default'])(ngModule);
(0, _description2['default'])(ngModule);
};
module.exports = exports['default'];
/***/ },
/* 20 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
Object.defineProperty(exports, '__esModule', {
value: true
});
exports['default'] = function (ngModule) {
ngModule.run(addAddonsManipulator);
function addAddonsManipulator(formlyConfig, formlyBootstrapApiCheck) {
var addonTemplate = __webpack_require__(21);
var addonChecker = formlyBootstrapApiCheck.shape({
'class': formlyBootstrapApiCheck.string.optional,
text: formlyBootstrapApiCheck.string.optional,
onClick: formlyBootstrapApiCheck.func.optional
}).strict.optional;
var api = formlyBootstrapApiCheck.shape({
templateOptions: formlyBootstrapApiCheck.shape({
addonLeft: addonChecker,
addonRight: addonChecker
})
});
formlyConfig.templateManipulators.preWrapper.push(function (template, options) {
if (!options.templateOptions.addonLeft && !options.templateOptions.addonRight) {
return template;
}
formlyBootstrapApiCheck.warn([api], [options]);
return addonTemplate.replace('<formly-transclude></formly-transclude>', template);
});
}
addAddonsManipulator.$inject = ["formlyConfig", "formlyBootstrapApiCheck"];
};
module.exports = exports['default'];
/***/ },
/* 21 */
/***/ function(module, exports) {
module.exports = "<div ng-class=\"{'input-group': to.addonLeft || to.addonRight}\">\n <div class=\"input-group-addon\"\n ng-if=\"to.addonLeft\"\n ng-style=\"{cursor: to.addonLeft.onClick ? 'pointer' : 'inherit'}\"\n ng-click=\"to.addonLeft.onClick(options, this, $event)\">\n <i class=\"{{to.addonLeft.class}}\" ng-if=\"to.addonLeft.class\"></i>\n <span ng-if=\"to.addonLeft.text\">{{to.addonLeft.text}}</span>\n </div>\n <formly-transclude></formly-transclude>\n <div class=\"input-group-addon\"\n ng-if=\"to.addonRight\"\n ng-style=\"{cursor: to.addonRight.onClick ? 'pointer' : 'inherit'}\"\n ng-click=\"to.addonRight.onClick(options, this, $event)\">\n <i class=\"{{to.addonRight.class}}\" ng-if=\"to.addonRight.class\"></i>\n <span ng-if=\"to.addonRight.text\">{{to.addonRight.text}}</span>\n </div>\n</div>\n"
/***/ },
/* 22 */
/***/ function(module, exports) {
'use strict';
Object.defineProperty(exports, '__esModule', {
value: true
});
exports['default'] = function (ngModule) {
ngModule.run(addDescriptionManipulator);
function addDescriptionManipulator(formlyConfig) {
formlyConfig.templateManipulators.preWrapper.push(function ariaDescribedBy(template, options, scope) {
if (angular.isDefined(options.templateOptions.description)) {
var el = document.createElement('div');
el.appendChild(angular.element(template)[0]);
el.appendChild(angular.element('<p id="' + scope.id + '_description"' + 'class="help-block"' + 'ng-if="to.description">' + '{{to.description}}' + '</p>')[0]);
var modelEls = angular.element(el.querySelectorAll('[ng-model]'));
if (modelEls) {
modelEls.attr('aria-describedby', scope.id + '_description');
}
return el.innerHTML;
} else {
return template;
}
});
}
addDescriptionManipulator.$inject = ["formlyConfig"];
};
module.exports = exports['default'];
/***/ }
/******/ ])
});
;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

11
static/js/angular-strap.min.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

8
static/js/angular-strap.tpl.min.js vendored Normal file

File diff suppressed because one or more lines are too long

1332
static/js/api-check.js Normal file

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,913 @@
/*=========================================================
colors const
===========================================================*/
/*=========================================================
fonts const
===========================================================*/
/*=========================================================
common
===========================================================*/
.ta-hidden-input {
width: 1px;
height: 1px;
border: none;
margin: 0;
padding: 0;
position: absolute;
top: -10000px;
left: -10000px;
opacity: 0;
overflow: hidden; }
.ta-root.focussed > .ta-scroll-window.form-control {
border-color: #66afe9;
outline: 0;
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); }
.ta-editor.ta-html, .ta-scroll-window.form-control {
min-height: 300px;
height: auto;
overflow: auto;
font-family: inherit;
font-size: 100%; }
.ta-scroll-window.form-control {
position: relative;
padding: 0; }
.ta-scroll-window > .ta-bind {
height: auto;
min-height: 300px;
padding: 6px 12px; }
.ta-editor:focus {
-webkit-user-select: text;
-moz-user-select: text;
-ms-user-select: text;
user-select: text; }
.ta-resizer-handle-overlay {
z-index: 100;
position: absolute;
display: none; }
.ta-resizer-handle-overlay > .ta-resizer-handle-info {
position: absolute;
bottom: 16px;
right: 16px;
border: 1px solid #000;
background-color: #FFF;
padding: 0 4px;
opacity: .7; }
.ta-resizer-handle-overlay > .ta-resizer-handle-background {
position: absolute;
bottom: 5px;
right: 5px;
left: 5px;
top: 5px;
border: 1px solid #000;
background-color: rgba(0, 0, 0, 0.2); }
.ta-resizer-handle-overlay > .ta-resizer-handle-corner {
width: 10px;
height: 10px;
position: absolute; }
.ta-resizer-handle-overlay > .ta-resizer-handle-corner-tl {
top: 0;
left: 0;
border-left: 1px solid #000;
border-top: 1px solid #000; }
.ta-resizer-handle-overlay > .ta-resizer-handle-corner-tr {
top: 0;
right: 0;
border-right: 1px solid #000;
border-top: 1px solid #000; }
.ta-resizer-handle-overlay > .ta-resizer-handle-corner-bl {
bottom: 0;
left: 0;
border-left: 1px solid #000;
border-bottom: 1px solid #000; }
.ta-resizer-handle-overlay > .ta-resizer-handle-corner-br {
bottom: 0;
right: 0;
border: 1px solid #000;
cursor: se-resize;
background-color: #fff; }
.popover {
position: absolute;
top: 0;
left: 0;
z-index: 1060;
display: none;
max-width: 276px;
padding: 1px;
font-size: 14px;
font-weight: 400;
line-height: 1.42857143;
text-align: left;
white-space: normal;
background-color: #fff;
background-clip: padding-box;
border: 1px solid #ccc;
border: 1px solid rgba(0, 0, 0, 0.2);
border-radius: 6px;
box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); }
.popover.top {
margin-top: -10px; }
.popover.bottom {
margin-top: 10px; }
.popover-title {
padding: 8px 14px;
margin: 0;
font-size: 14px;
background-color: #f7f7f7;
border-bottom: 1px solid #ebebeb;
border-radius: 5px 5px 0 0; }
.popover-content {
padding: 9px 14px; }
.popover > .arrow, .popover > .arrow:after {
position: absolute;
display: block;
width: 0;
height: 0;
border-color: transparent;
border-style: solid; }
.popover > .arrow {
border-width: 11px; }
.popover > .arrow:after {
content: "";
border-width: 10px; }
.popover.top > .arrow {
bottom: -11px;
left: 50%;
margin-left: -11px;
border-top-color: #999;
border-top-color: rgba(0, 0, 0, 0.25);
border-bottom-width: 0; }
.popover.top > .arrow:after {
bottom: 1px;
margin-left: -10px;
content: " ";
border-top-color: #fff;
border-bottom-width: 0; }
.popover.bottom > .arrow {
top: -11px;
left: 50%;
margin-left: -11px;
border-top-width: 0;
border-bottom-color: #999;
border-bottom-color: rgba(0, 0, 0, 0.25); }
.popover.bottom > .arrow:after {
top: 1px;
margin-left: -10px;
content: " ";
border-top-width: 0;
border-bottom-color: #fff; }
/*=========================================================
common
===========================================================*/
body {
padding-top: 50px;
padding-bottom: 20px;
height: 100%;
background-color: #F2F2F2;
font-family: "Roboto", "Helvetica Neue", Helvetica, Arial, sans-serif; }
.margintop60px {
margin-top: 80px; }
.margintop120px {
margin-top: 120px; }
.vAlignMiddle {
vertical-align: middle; }
[ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {
display: none !important; }
/*=========================================================
bootstrap overrides
===========================================================*/
.nav .open > a, .nav .open > a:hover, .nav .open > a:focus {
background-color: #0d87e9;
border-color: #2196f3; }
/*correction bug sur theme bootstrap journal*/
.modal-backdrop {
z-index: -1; }
.navbar-right {
margin-right: 20px; }
textarea, textarea.form-control, input.form-control,
input[type=text], input[type=password], input[type=email],
input[type=number], [type=text].form-control, [type=password].form-control,
[type=email].form-control, [type=tel].form-control, [contenteditable].form-control {
font-size: 13px; }
select, select.form-control {
font-size: 13px; }
/*container to 100%*/
@media (min-width: 1200px) {
.container {
width: 100%;
margin-right: 20px; } }
@media (min-width: 768px) {
.container {
width: 100%;
margin-right: 20px; } }
@media (min-width: 992px) {
.container {
width: 100%; } }
.container-fluid {
margin-right: auto;
margin-left: auto; }
.container-fluid padding {
left: 30px;
right: 30px; }
.panel-default > .panel-heading {
color: #212121;
background-color: #fff;
border-color: #eee; }
.navbar-nav > li > a {
line-height: 30px; }
.navbar-default .navbar-brand {
line-height: initial; }
.panel-heading {
background-color: none;
border-bottom: solid 1px #eee; }
.navBtnGroup {
padding-top: 20px;
padding-bottom: 22px;
padding-right: 15px;
padding-left: 15px; }
.table > thead > tr > th,
.table > tbody > tr > th,
.table > tfoot > tr > th,
.table > thead > tr > td,
.table > tbody > tr > td,
.table > tfoot > tr > td {
vertical-align: middle; }
a:hover {
color: #fff; }
a:focus {
color: #fff; }
/*Forms setup*/
.form-control {
border-radius: 0;
box-shadow: none;
height: auto; }
.float-label {
font-size: 10px; }
.socialIcon {
font-size: 32px; }
.socialIcon:hover {
color: #F2F2F2; }
input[type="text"].form-control,
input[type="search"].form-control {
border: none;
border-bottom: 1px dotted #CFCFCF; }
textarea {
border: 1px dotted #CFCFCF !important;
height: 130px !important; }
/*Content Container*/
.content-container {
background-color: #fff;
padding: 35px 20px;
margin-bottom: 20px; }
h1.content-title {
font-size: 32px;
font-weight: 300;
text-align: center;
margin-top: 0;
margin-bottom: 20px;
font-family: "Open Sans", sans-serif !important; }
/*paper theme bootstrap*/
.form-control {
font-family: "Roboto", "Helvetica Neue", Helvetica, Arial, sans-serif;
display: block;
width: 100%;
height: 39px;
padding: 8px 12px;
font-size: 13px;
line-height: 1.42857143;
color: #777777;
background-color: #ffffff;
background-image: none;
border: 1px solid #cccccc;
border-radius: 4px;
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; }
.form-control:focus {
border-color: #66afe9;
outline: 0;
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); }
.form-control::-moz-placeholder {
color: #999999;
opacity: 1; }
.form-control:-ms-input-placeholder {
color: #999999; }
.form-control::-webkit-input-placeholder {
color: #999999; }
.form-control[disabled],
.form-control[readonly],
fieldset[disabled] .form-control {
background-color: #eeeeee;
opacity: 1; }
.form-control[disabled],
fieldset[disabled] .form-control {
cursor: not-allowed; }
textarea.form-control {
height: auto; }
.fakeControl[disabled] {
background-color: #fff;
opacity: 1; }
.fakeControl[disabled] {
cursor: all-scroll; }
.radio input[type=radio].fakeCheck {
cursor: all-scroll; }
.checkbox input[type=checkbox].fakeCheck {
cursor: all-scroll; }
label.fakeCheck {
cursor: all-scroll; }
/* animation ng-repeat
easy customize animation from here : http://www.nganimate.org/angularjs/ng-repeat/yo-yo-css3-keyframes-animation*/
.animate-enter {
animation: enter 600ms cubic-bezier(0.445, 0.05, 0.55, 0.95);
display: block;
position: relative; }
@keyframes enter {
from {
opacity: 0;
height: 0px;
left: -70px; }
75% {
left: 15px; }
to {
opacity: 1;
height: 30px;
left: 0px; } }
.animate-leave {
animation: leave 600ms cubic-bezier(0.445, 0.05, 0.55, 0.95);
display: block;
position: relative; }
@keyframes leave {
to {
opacity: 0;
height: 0px;
left: -70px; }
25% {
left: 15px; }
from {
opacity: 1;
height: 30px;
left: 0px; } }
/* td table in myprofile */
.tdCommun, .td40, .td60 {
height: 75px;
vertical-align: none; }
.td40 {
width: 40%; }
.td60 {
width: 60%; }
.table-user-information > thead > tr > th,
.table-user-information > tbody > tr > th,
.table-user-information > tfoot > tr > th,
.table-user-information > thead > tr > td,
.table-user-information > tbody > tr > td,
.table-user-information > tfoot > tr > td {
vertical-align: middle; }
/*=========================================================
ANGULAR ANIMATIONS (in pair on animate.css)
===========================================================*/
/* animation on ng-switch */
.switchAngularFadeIn .ng-enter {
animation: fadeIn 1s; }
/*=========================================================
wfEdit
===========================================================*/
#pageWfEdit {
margin-top: 40px;
/* right:2%;
left:2%; */
padding-top: 30px;
padding-bottom: 30px;
background-color: #F2F2F2;
/* border-top: solid 3px white;
border-bottom: solid 3px white; */ }
.lineCommandButtons {
padding-bottom: 25px; }
.addNewLine {
font-size: 24px;
vertical-align: middle;
color: #666666; }
#editor {
margin-top: 0px;
margin-bottom: 0px;
height: 150px;
background-color: #52B3D9;
border-bottom: solid 1px #2C3E50; }
#editor-content {
/* padding-top: 25px; */
/* padding-bottom: 25px; */
text-align: center;
color: white;
font-size: 13px; }
#preview {
margin-top: 0px;
margin-bottom: 0px;
/* background-color: #E4F1FE; */
border: solid 1 px #2C3E50;
-o-box-shadow: 0px 0px 10px 0px #ddd;
box-shadow: 0px 0px 10px 0px #ddd;
filter: progid:DXImageTransform.Microsoft.Shadow(color=#ddd, Direction=NaN, Strength=10); }
#preview-content {
background-color: #FFF;
padding-bottom: 25px;
/*text-align: center;*/
color: black;
/*font-size: 13px;*/ }
#commandPanel {
padding-top: 25px;
padding-bottom: 25px; }
/* #commandPanel.affix {
position: fixed;
top: 0;
width:25%;
margin-top: -45px;
} */
#visualPanel {
padding-top: 25px;
padding-bottom: 25px; }
.customPagerButton {
width: 100px; }
.numberOfColumnsLabel {
font-size: 32px;
text-align: center;
padding-top: 25%;
padding-bottom: 25%;
font-weight: bold;
text-align: center;
color: #666666; }
.btnMinusColumns {
margin-top: 10px; }
.btnAddColumns {
margin-top: 10px; }
.numberOfcolumsText {
color: #666666; }
.greyText {
color: #666666; }
.blackText {
color: #000; }
/*=========================================================
ANIMATE NG-SWITCH
=========================================================*/
.animate-switch-container {
position: relative;
background: white;
border-top: solid 1px #ECECEC;
border-bottom: solid 1px #ECECEC;
overflow: scroll; }
.animate-switch-container .well {
background-color: #89C4F4;
margin-bottom: 0px;
color: #ECECEC; }
.linesList {
margin-top: 5px; }
/*switch 1 : move top*/
.animate-switch {
padding: 10px; }
.animate-switch.ng-animate {
transition: all cubic-bezier(0.25, 0.46, 0.45, 0.94) 0.6s;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0; }
.animate-switch.ng-leave.ng-leave-active,
.animate-switch.ng-enter {
left: 0px;
top: -500px;
opacity: 0; }
.animate-switch.ng-leave,
.animate-switch.ng-enter.ng-enter-active {
left: 0px;
top: 0px;
opacity: 0.8; }
/*=========================================================
STEP INDICATOR
=========================================================*/
.stepwizardTopmargin {
margin-top: 25px; }
.stepwizard-step p {
margin-top: 10px;
color: #666666; }
.stepwizard-row {
display: table-row; }
.stepwizard {
display: table;
width: 100%;
position: relative; }
.stepwizard-step button[disabled] {
opacity: 1 !important;
filter: alpha(opacity=100) !important; }
.stepwizard-row:before {
top: 14px;
bottom: 0;
position: absolute;
content: " ";
width: 100%;
height: 1px;
background-color: #ccc;
z-order: 0; }
.stepwizard-step {
display: table-cell;
text-align: center;
position: relative; }
.btn-circle {
width: 30px;
height: 30px;
text-align: center;
padding: 6px 0;
font-size: 12px;
line-height: 1.428571429;
border-radius: 15px; }
.panelDebugScope {
color: #000; }
/*=========================================================
Modal add control
=========================================================*/
.texteRouge {
color: #CF000F; }
.editPropertiesLabel {
margin-top: 6px; }
.textControlLabel {
color: #000; }
.marginTopFivepixels {
margin-top: 5px; }
.marginTopTenpixels {
margin-top: 5px; }
.checkboxCssCorrection {
font-size: 4px; }
.noGroupText {
margin-bottom: 0px; }
.nya-bs-select {
margin-bottom: 16px; }
.ta-scroll-window {
margin-bottom: 16px; }
.formly-field-checkbox {
margin-top: 28px; }
#inputAddNewRadioOption {
margin-bottom: 20px; }
#inputAddNewBasicOption {
margin-bottom: 20px; }
#inputAddNewGroupedOption {
margin-bottom: 20px; }
#inputAddNewGroupGroupedOption {
margin-bottom: 20px; }
.editGroupedSelectnyaSelect {
margin-bottom: 0px; }
.heading-preview {
cursor: pointer; }
/*=========================================================
specific drag and drop test (will change or be deleted)
===========================================================*/
/***************************** pageSlide directive css *****************************/
/* Needed for hiding crollbars when pushing */
html {
overflow-x: hidden; }
.ng-pageslide {
background: #eee;
box-shadow: 5px 1px 12px 0px rgba(188, 183, 183, 0.7);
-moz-box-shadow: 5px 1px 12px 0px rgba(188, 183, 183, 0.7);
-webkit-box-shadow: 5px 1px 12px 0px rgba(188, 183, 183, 0.7); }
#controlEditLeftPanel {
margin-top: 95px;
padding-top: 20px;
padding-bottom: 20px;
padding-right: 10px;
padding-left: 10px;
height: 85%;
overflow-y: scroll; }
.separator10pixel {
margin-top: 5px;
margin-bottom: 5px;
height: 25px; }
.panelControlWidth {
width: 45%; }
/***************************** Required styles *****************************/
/**
* For the correct positioning of the placeholder element, the dnd-list and
* it's children must have position: relative
*/
.advancedDemo ul[dnd-list],
.advancedDemo ul[dnd-list] > li {
position: relative;
border: solid 1px #F1F1F1; }
/***************************** Dropzone Styling *****************************/
/**
* The dnd-list should always have a min-height,
* otherwise you can't drop to it once it's empty
*/
.advancedDemo .dropzone ul[dnd-list] {
min-height: 42px;
margin: 0px;
padding-left: 0px; }
/**
* The dnd-lists's child elements currently MUST have
* position: relative. Otherwise we can not determine
* whether the mouse pointer is in the upper or lower
* half of the element we are dragging over. In other
* browsers we can use event.offsetY for this.
*/
.advancedDemo .dropzone li {
display: block; }
/**
* Reduce opacity of elements during the drag operation. This allows the user
* to see where he is dropping his element, even if the element is huge. The
* .dndDragging class is automatically set during the drag operation.
*/
.advancedDemo .dropzone .dndDragging {
opacity: 0.7;
border: 2px dotted #000; }
/**
* The dndDraggingSource class will be applied to the source element of a drag
* operation. It makes sense to hide it to give the user the feeling that he's
* actually moving it. Note that the source element has also .dndDragging class.
*/
.advancedDemo .dropzone .dndDraggingSource {
display: none; }
/**
* An element with .dndPlaceholder class will be added as child of the dnd-list
* while the user is dragging over it.
*/
.advancedDemo .dropzone .dndPlaceholder {
background-color: #ddd !important;
min-height: 155px;
display: block;
position: relative;
-o-box-shadow: inset 0px 0px 5px 0px #343434;
box-shadow: inset 0px 0px 5px 0px #343434;
filter: progid:DXImageTransform.Microsoft.Shadow(color=#343434, Direction=NaN, Strength=5); }
/***************************** Element type specific styles *****************************/
.advancedDemo .dropzone .itemlist {
min-height: 115px !important; }
ul.itemlist.ng-scope {
border: none; }
.effect1ForDragDropItem, #itemContent {
box-shadow: 0 10px 6px -6px #777;
min-height: 115px; }
.advancedDemo .dropzone .itemlist > li {
border: none;
min-width: 180px;
border-radius: .25em;
float: left;
font-weight: 700;
height: 135px; }
#itemContent {
background-color: #fff;
border: 2px outset #0d87e9;
border-radius: .25em;
color: #fff;
float: left;
font-weight: 700;
height: 115px;
margin: 5px;
padding: 3px;
text-align: center;
width: 100%;
cursor: all-scroll; }
.dragItemtextarea {
height: 60px; }
textarea {
border: 1px dotted #CFCFCF !important;
height: 50px !important; }
.advancedDemo .dropzone .container-element {
margin: 10px; }
.isCollapsableZone {
cursor: pointer; }
.buttonHeaderAddNewLine {
margin-top: 15px;
margin-bottom: 0px; }
.buttonCloneLineHidden {
visibility: hidden; }
.buttonCloseLine {
margin-top: -10px;
margin-right: -10px;
border-radius: 50%;
height: 45px; }
.interligne {
padding-bottom: 10px; }
.confirmLineDelete {
margin-top: 0;
margin-bottom: 0;
background-color: #F5F5F5;
opacity: 1.0;
animation: shake 1.3s infinite; }
.demoddDatepicker {
padding-left: 0;
margin-left: 0; }
.selectfordemo {
margin-top: 30px; }
/*=========================================================
animation shake
===========================================================*/
@keyframes shake {
0%, 100% {
transform: translate3d(0, 0, 0); }
10%, 30%, 50%, 70%, 90% {
transform: translate3d(-10px, 0, 0); }
20%, 40%, 60%, 80% {
transform: translate3d(10px, 0, 0); } }
.shake {
animation-name: shake; }
.previewControlinItem {
margin-top: 2%;
background-color: #fff;
padding-top: 5px;
padding-bottom: 5px;
padding-left: 10px;
padding-right: 10px;
border-radius: 5px;
color: #F1F1F1;
font-size: 18px; }
.vertical-line {
border-left: thick solid #000; }
/*=========================================================
animation glyphicon rotate
===========================================================*/
.gly-spin {
animation: spin 2s infinite linear; }
@keyframes spin {
0% {
transform: rotate(0deg); }
100% {
transform: rotate(359deg); } }
.gly-rotate-90 {
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
transform: rotate(90deg); }
.gly-rotate-180 {
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
transform: rotate(180deg); }
.gly-rotate-270 {
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
transform: rotate(270deg); }
.gly-flip-horizontal {
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);
transform: scale(-1, 1); }
.gly-flip-vertical {
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);
transform: scale(1, -1); }
.rightClickCtrl {
opacity: 1.0;
transition: opacity .3s ease-in; }
.rightClickCtrlSelected {
opacity: 0.5; }

View file

@ -0,0 +1 @@
{"version":3,"sources":[],"names":[],"mappings":"","file":"eda.dragdropway.css","sourceRoot":""}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,2 @@
.ta-hidden-input{width:1px;height:1px;border:none;margin:0;padding:0;position:absolute;top:-10000px;left:-10000px;opacity:0;overflow:hidden}.ta-root.focussed>.ta-scroll-window.form-control{border-color:#66afe9;outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.ta-editor.ta-html,.ta-scroll-window.form-control{min-height:300px;height:auto;overflow:auto;font-family:inherit;font-size:100%}.ta-scroll-window.form-control{position:relative;padding:0}.ta-scroll-window>.ta-bind{height:auto;min-height:300px;padding:6px 12px}.ta-editor:focus{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.ta-resizer-handle-overlay{z-index:100;position:absolute;display:none}.ta-resizer-handle-overlay>.ta-resizer-handle-info{position:absolute;bottom:16px;right:16px;border:1px solid #000;background-color:#fff;padding:0 4px;opacity:.7}.ta-resizer-handle-overlay>.ta-resizer-handle-background{position:absolute;bottom:5px;right:5px;left:5px;top:5px;border:1px solid #000;background-color:rgba(0,0,0,.2)}.ta-resizer-handle-overlay>.ta-resizer-handle-corner{width:10px;height:10px;position:absolute}.ta-resizer-handle-overlay>.ta-resizer-handle-corner-tl{top:0;left:0;border-left:1px solid #000;border-top:1px solid #000}.ta-resizer-handle-overlay>.ta-resizer-handle-corner-tr{top:0;right:0;border-right:1px solid #000;border-top:1px solid #000}.ta-resizer-handle-overlay>.ta-resizer-handle-corner-bl{bottom:0;left:0;border-left:1px solid #000;border-bottom:1px solid #000}.ta-resizer-handle-overlay>.ta-resizer-handle-corner-br{bottom:0;right:0;border:1px solid #000;cursor:se-resize;background-color:#fff}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-size:14px;font-weight:400;line-height:1.42857143;text-align:left;white-space:normal;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;box-shadow:0 5px 10px rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.bottom{margin-top:10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}body{margin:20px;font-family:Roboto,Helvetica Neue,Helvetica,Arial,sans-serif}.ta-scroll-window{margin-bottom:16px}.formly-field{margin-bottom:20px}.validation{position:absolute;font-size:.8em;color:#a94442}.error-messages,.formly-template-wrapper{position:relative}.error-messages,.message,.validation{opacity:1;transition:all .3s linear}.message{font-size:.8em;position:absolute;width:100%;color:#a94442;margin-top:2px}.error-messages.ng-enter.ng-enter-active,.message.ng-enter.ng-enter-active,.validation.ng-enter.ng-enter-active{opacity:1}.error-messages.ng-enter,.message.ng-enter,.validation.ng-enter{opacity:0}.error-messages.ng-leave,.message.ng-leave,.validation.ng-leave{opacity:1}.error-messages.ng-leave-active,.message.ng-leave-active,.validation.ng-leave-active{opacity:0}
/*# sourceMappingURL=eda.formviewer.css.map*/

View file

@ -0,0 +1 @@
{"version":3,"sources":[],"names":[],"mappings":"","file":"eda.formviewer.css","sourceRoot":""}

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
{"version":3,"sources":[],"names":[],"mappings":"","file":"eda.stepway.css","sourceRoot":""}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

2833
static/js/formly.js Normal file

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long