UNPKG

@billpeng/surveyjs-editor

Version:

Use surveyjs Builder(Editor) to create or edit JSON for surveyjs library.

1,229 lines (1,178 loc) 2.48 MB
/*! * surveyjs Builder(Editor) v1.0.46-4 * (c) Devsoft Baltic O� - http://surveyjs.io/ * Github: https://github.com/surveyjs/editor * License: https://surveyjs.io/Licenses#BuildSurvey */ (function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(require("knockout"), require("survey-knockout")); else if(typeof define === 'function' && define.amd) define("SurveyEditor", ["knockout", "survey-knockout"], factory); else if(typeof exports === 'object') exports["SurveyEditor"] = factory(require("knockout"), require("survey-knockout")); else root["SurveyEditor"] = factory(root["ko"], root["Survey"]); })(this, function(__WEBPACK_EXTERNAL_MODULE_1__, __WEBPACK_EXTERNAL_MODULE_2__) { 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] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = 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; /******/ /******/ // identity function for calling harmony imports with the correct context /******/ __webpack_require__.i = function(value) { return value; }; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { /******/ configurable: false, /******/ enumerable: true, /******/ get: getter /******/ }); /******/ } /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 127); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__localization_english__ = __webpack_require__(23); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_survey_knockout__ = __webpack_require__(2); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_survey_knockout___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_survey_knockout__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return editorLocalization; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return defaultStrings; }); var editorLocalization = { currentLocale: "", locales: {}, getString: function (strName, locale) { if (locale === void 0) { locale = null; } var loc = this.getLocale(locale); var path = strName.split("."); var obj = loc; for (var i = 0; i < path.length; i++) { obj = obj[path[i]]; if (!obj) { if (loc === defaultStrings) return path[i]; return this.getString(strName, "en"); } } return obj; }, hasString: function (strName, locale) { if (locale === void 0) { locale = null; } var loc = this.getLocale(locale); var path = strName.split("."); var obj = loc; for (var i = 0; i < path.length; i++) { obj = obj[path[i]]; if (!obj) return false; } return true; }, getLocaleName: function (loc) { var localeNames = __WEBPACK_IMPORTED_MODULE_1_survey_knockout__["surveyLocalization"]["localeNames"]; return !!loc ? localeNames[loc] : editorLocalization .getString("ed.defaultLocale")["format"](localeNames[__WEBPACK_IMPORTED_MODULE_1_survey_knockout__["surveyLocalization"].defaultLocale]); }, getPropertyName: function (strName, locale) { if (locale === void 0) { locale = null; } var obj = this.getProperty(strName, locale); if (obj["name"]) return obj["name"]; return obj; }, getPropertyTitle: function (strName, locale) { if (locale === void 0) { locale = null; } var obj = this.getProperty(strName, locale); if (obj["title"]) return obj["title"]; return ""; }, getProperty: function (strName, locale) { if (locale === void 0) { locale = null; } var obj = this.getString("p." + strName, locale); if (obj !== strName) return obj; var pos = strName.indexOf("_"); if (pos < -1) return obj; strName = strName.substr(pos + 1); return this.getString("p." + strName, locale); }, getPropertyValue: function (value, locale) { if (locale === void 0) { locale = null; } return this.getValueInternal(value, "pv", locale); }, getValidatorName: function (name, locale) { if (locale === void 0) { locale = null; } return this.getValueInternal(name, "validators", locale); }, getTriggerName: function (name, locale) { if (locale === void 0) { locale = null; } return this.getValueInternal(name, "triggers", locale); }, getLocale: function (locale) { if (!locale) locale = this.currentLocale; var loc = locale ? this.locales[locale] : defaultStrings; if (!loc) loc = defaultStrings; return loc; }, getValueInternal: function (value, prefix, locale) { if (locale === void 0) { locale = null; } if (value === "" || value === null || value === undefined) return ""; value = value.toString(); var loc = this.getLocale(locale); var res = loc[prefix] ? loc[prefix][value] : null; if (!res) res = defaultStrings[prefix][value]; return res ? res : value; }, getLocales: function () { var res = []; res.push(""); for (var key in this.locales) { res.push(key); } return res; } }; var defaultStrings = __WEBPACK_IMPORTED_MODULE_0__localization_english__["a" /* enStrings */]; /***/ }), /* 1 */ /***/ (function(module, exports) { module.exports = __WEBPACK_EXTERNAL_MODULE_1__; /***/ }), /* 2 */ /***/ (function(module, exports) { module.exports = __WEBPACK_EXTERNAL_MODULE_2__; /***/ }), /* 3 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* unused harmony export __assign */ /* harmony export (immutable) */ __webpack_exports__["a"] = __extends; var __assign = Object["assign"] || function (target) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) target[p] = s[p]; } return target; }; function __extends(thisClass, baseClass) { for (var p in baseClass) if (baseClass.hasOwnProperty(p)) thisClass[p] = baseClass[p]; function __() { this.constructor = thisClass; } thisClass.prototype = baseClass === null ? Object.create(baseClass) : ((__.prototype = baseClass.prototype), new __()); } /***/ }), /* 4 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(3); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_knockout__ = __webpack_require__(1); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_knockout___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_knockout__); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_survey_knockout__ = __webpack_require__(2); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_survey_knockout___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_survey_knockout__); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__propertyEditorBase__ = __webpack_require__(13); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__propertyCustomEditor__ = __webpack_require__(25); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__editorLocalization__ = __webpack_require__(0); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return SurveyPropertyEditorFactory; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return SurveyStringPropertyEditor; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return SurveyDropdownPropertyEditor; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return SurveyBooleanPropertyEditor; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return SurveyNumberPropertyEditor; }); var SurveyPropertyEditorFactory = (function () { function SurveyPropertyEditorFactory() { } SurveyPropertyEditorFactory.getOperators = function () { var operators = [ "empty", "notempty", "equal", "notequal", "contains", "notcontains", "greater", "less", "greaterorequal", "lessorequal" ]; var result = []; for (var i = 0; i < operators.length; i++) { var name = operators[i]; result.push({ name: name, text: __WEBPACK_IMPORTED_MODULE_5__editorLocalization__["a" /* editorLocalization */].getString("op." + name) }); } return result; }; SurveyPropertyEditorFactory.registerEditor = function (name, creator, editableClassName) { if (editableClassName === void 0) { editableClassName = null; } SurveyPropertyEditorFactory.creatorList[name] = creator; var className = editableClassName ? editableClassName : name; SurveyPropertyEditorFactory.creatorByClassList[className] = creator; }; SurveyPropertyEditorFactory.registerCustomEditor = function (name, widgetJSON) { SurveyPropertyEditorFactory.widgetRegisterList[name] = widgetJSON; }; SurveyPropertyEditorFactory.createEditor = function (property, func) { var editorType = property.type; if (property.choices != null && (!editorType || editorType == SurveyPropertyEditorFactory.defaultEditor)) { editorType = "dropdown"; } var propertyEditor = SurveyPropertyEditorFactory.createCustomEditor(editorType, property); if (!propertyEditor) { var creator = SurveyPropertyEditorFactory.creatorList[editorType]; if (creator) propertyEditor = creator(property); } if (!propertyEditor) { creator = SurveyPropertyEditorFactory.findParentCreator(editorType); propertyEditor = creator(property); } propertyEditor.onChanged = func; return propertyEditor; }; SurveyPropertyEditorFactory.createCustomEditor = function (name, property) { var widgetJSON = SurveyPropertyEditorFactory.widgetRegisterList[name]; if (!widgetJSON) return null; return new __WEBPACK_IMPORTED_MODULE_4__propertyCustomEditor__["a" /* SurveyPropertyCustomEditor */](property, widgetJSON); }; SurveyPropertyEditorFactory.findParentCreator = function (name) { var jsonClass = __WEBPACK_IMPORTED_MODULE_2_survey_knockout__["JsonObject"].metaData.findClass(name); while (jsonClass && jsonClass.parentName) { var creator = SurveyPropertyEditorFactory.creatorByClassList[jsonClass.parentName]; if (creator) return creator; jsonClass = __WEBPACK_IMPORTED_MODULE_2_survey_knockout__["JsonObject"].metaData.findClass(jsonClass.parentName); } return SurveyPropertyEditorFactory.creatorList[SurveyPropertyEditorFactory.defaultEditor]; }; return SurveyPropertyEditorFactory; }()); SurveyPropertyEditorFactory.defaultEditor = "string"; SurveyPropertyEditorFactory.creatorList = {}; SurveyPropertyEditorFactory.creatorByClassList = {}; SurveyPropertyEditorFactory.widgetRegisterList = {}; var SurveyStringPropertyEditor = (function (_super) { __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](SurveyStringPropertyEditor, _super); function SurveyStringPropertyEditor(property) { return _super.call(this, property) || this; } Object.defineProperty(SurveyStringPropertyEditor.prototype, "editorType", { get: function () { return "string"; }, enumerable: true, configurable: true }); return SurveyStringPropertyEditor; }(__WEBPACK_IMPORTED_MODULE_3__propertyEditorBase__["a" /* SurveyPropertyEditorBase */])); var SurveyDropdownPropertyEditor = (function (_super) { __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](SurveyDropdownPropertyEditor, _super); function SurveyDropdownPropertyEditor(property) { var _this = _super.call(this, property) || this; _this.koChoices = __WEBPACK_IMPORTED_MODULE_1_knockout__["observableArray"](_this.getLocalizableChoices()); _this.koHasFocus = __WEBPACK_IMPORTED_MODULE_1_knockout__["observable"](false); var self = _this; _this.koHasFocus.subscribe(function (newValue) { if (newValue && self.property["isDynamicChoices"]) { //TODO self.koChoices(self.getLocalizableChoices()); } }); return _this; } Object.defineProperty(SurveyDropdownPropertyEditor.prototype, "editorType", { get: function () { return "dropdown"; }, enumerable: true, configurable: true }); SurveyDropdownPropertyEditor.prototype.getValueText = function (value) { if (this.property.name === "locale") { var text = __WEBPACK_IMPORTED_MODULE_5__editorLocalization__["a" /* editorLocalization */].getLocaleName(value); if (text) return text; } if (this.property.name === "cellType") { var text = __WEBPACK_IMPORTED_MODULE_5__editorLocalization__["a" /* editorLocalization */].getString("qt." + value); if (text) return text; } return __WEBPACK_IMPORTED_MODULE_5__editorLocalization__["a" /* editorLocalization */].getPropertyValue(value); }; SurveyDropdownPropertyEditor.prototype.setObject = function (value) { _super.prototype.setObject.call(this, value); this.beginValueUpdating(); if (this.koChoices().length == 0) { this.koChoices(this.getLocalizableChoices()); } this.endValueUpdating(); }; SurveyDropdownPropertyEditor.prototype.getLocalizableChoices = function () { var choices = this.getPropertyChoices(); if (!choices || choices.length == 0) return []; var res = new Array(); __WEBPACK_IMPORTED_MODULE_2_survey_knockout__["ItemValue"].setData(res, choices); for (var i = 0; i < res.length; i++) { var value = res[i].value; var text = this.getValueText(value); if (text != value) { res[i].text = text; } } return res; }; SurveyDropdownPropertyEditor.prototype.getPropertyChoices = function () { if (!this.property) return []; return this.property["getChoices"] ? this.property["getChoices"](this.object) : this.property.choices; }; return SurveyDropdownPropertyEditor; }(__WEBPACK_IMPORTED_MODULE_3__propertyEditorBase__["a" /* SurveyPropertyEditorBase */])); var SurveyBooleanPropertyEditor = (function (_super) { __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](SurveyBooleanPropertyEditor, _super); function SurveyBooleanPropertyEditor(property) { return _super.call(this, property) || this; } Object.defineProperty(SurveyBooleanPropertyEditor.prototype, "editorType", { get: function () { return "boolean"; }, enumerable: true, configurable: true }); Object.defineProperty(SurveyBooleanPropertyEditor.prototype, "alwaysShowEditor", { get: function () { return true; }, enumerable: true, configurable: true }); Object.defineProperty(SurveyBooleanPropertyEditor.prototype, "canShowDisplayNameOnTop", { get: function () { return false; }, enumerable: true, configurable: true }); SurveyBooleanPropertyEditor.prototype.getValueText = function (value) { return __WEBPACK_IMPORTED_MODULE_5__editorLocalization__["a" /* editorLocalization */].getPropertyValue(value); }; return SurveyBooleanPropertyEditor; }(__WEBPACK_IMPORTED_MODULE_3__propertyEditorBase__["a" /* SurveyPropertyEditorBase */])); var SurveyNumberPropertyEditor = (function (_super) { __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](SurveyNumberPropertyEditor, _super); function SurveyNumberPropertyEditor(property) { return _super.call(this, property) || this; } Object.defineProperty(SurveyNumberPropertyEditor.prototype, "editorType", { get: function () { return "number"; }, enumerable: true, configurable: true }); SurveyNumberPropertyEditor.prototype.getCorrectedValue = function (value) { if (!value) return value; if (typeof value === "string" || value instanceof String) { value = Number(value); if (!value) value = 0; } return value; }; return SurveyNumberPropertyEditor; }(__WEBPACK_IMPORTED_MODULE_3__propertyEditorBase__["a" /* SurveyPropertyEditorBase */])); SurveyPropertyEditorFactory.registerEditor("string", function (property) { return new SurveyStringPropertyEditor(property); }); SurveyPropertyEditorFactory.registerEditor("dropdown", function (property) { return new SurveyDropdownPropertyEditor(property); }); SurveyPropertyEditorFactory.registerEditor("boolean", function (property) { return new SurveyBooleanPropertyEditor(property); }); SurveyPropertyEditorFactory.registerEditor("number", function (property) { return new SurveyNumberPropertyEditor(property); }); /***/ }), /* 5 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__editorLocalization__ = __webpack_require__(0); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ObjType; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return SurveyHelper; }); var ObjType; (function (ObjType) { ObjType[ObjType["Unknown"] = 0] = "Unknown"; ObjType[ObjType["Survey"] = 1] = "Survey"; ObjType[ObjType["Page"] = 2] = "Page"; ObjType[ObjType["Panel"] = 3] = "Panel"; ObjType[ObjType["Question"] = 4] = "Question"; })(ObjType || (ObjType = {})); var SurveyHelper = (function () { function SurveyHelper() { } SurveyHelper.getNewPageName = function (objs) { return SurveyHelper.getNewName(objs, __WEBPACK_IMPORTED_MODULE_0__editorLocalization__["a" /* editorLocalization */].getString("ed.newPageName")); }; SurveyHelper.getNewQuestionName = function (objs) { return SurveyHelper.getNewName(objs, __WEBPACK_IMPORTED_MODULE_0__editorLocalization__["a" /* editorLocalization */].getString("ed.newQuestionName")); }; SurveyHelper.getNewPanelName = function (objs) { return SurveyHelper.getNewName(objs, __WEBPACK_IMPORTED_MODULE_0__editorLocalization__["a" /* editorLocalization */].getString("ed.newPanelName")); }; SurveyHelper.generateNewName = function (name) { var pos = name.length; while (pos > 0 && name[pos - 1] >= "0" && name[pos - 1] <= "9") { pos--; } var base = name.substr(0, pos); var num = 0; if (pos < name.length) { num = parseInt(name.substr(pos)); } num++; return base + num; }; SurveyHelper.getNewName = function (objs, baseName) { var hash = {}; for (var i = 0; i < objs.length; i++) { hash[objs[i].name] = true; } var num = 1; while (true) { if (!hash[baseName + num.toString()]) break; num++; } return baseName + num.toString(); }; SurveyHelper.getObjectType = function (obj) { if (!obj || !obj["getType"]) return ObjType.Unknown; if (obj.getType() == "page") return ObjType.Page; if (obj.getType() == "panel") return ObjType.Panel; if (obj.getType() == "survey") return ObjType.Survey; if (obj["name"]) return ObjType.Question; return ObjType.Unknown; }; SurveyHelper.getObjectTypeStr = function (obj) { var objType = SurveyHelper.getObjectType(obj); if (objType === ObjType.Survey) return "survey"; if (objType === ObjType.Page) return "page"; if (objType === ObjType.Panel) return "panel"; if (objType === ObjType.Question) return "question"; return "unknown"; }; SurveyHelper.getObjectName = function (obj) { if (obj["name"]) return obj["name"]; var objType = SurveyHelper.getObjectType(obj); if (objType != ObjType.Page) return ""; var data = obj["data"]; if (!data) data = obj["survey"]; //TODO var index = data.pages.indexOf(obj); return "[Page " + (index + 1) + "]"; }; SurveyHelper.getElements = function (element, includeHidden) { if (includeHidden === void 0) { includeHidden = false; } if (!element) return []; if (element.getElementsInDesign) return element.getElementsInDesign(includeHidden); if (element.elements) return element.elements; return []; }; SurveyHelper.isPropertyVisible = function (obj, property, onCanShowPropertyCallback) { if (onCanShowPropertyCallback === void 0) { onCanShowPropertyCallback = null; } if (!property || !property.visible) return false; if (onCanShowPropertyCallback && !onCanShowPropertyCallback(obj, property)) return false; return true; }; SurveyHelper.scrollIntoViewIfNeeded = function (el, pageEl) { if (!el || !el.scrollIntoView || !pageEl) return; var rect = el.getBoundingClientRect(); var height = pageEl.offsetParent ? pageEl.offsetParent.clientHeight : pageEl.clientHeight; if (rect.top < pageEl.offsetTop) { el.scrollIntoView(); } else { if (rect.bottom > height && (rect.top > pageEl.offsetTop + height || rect.height < height)) { el.scrollIntoView(false); } } }; return SurveyHelper; }()); /***/ }), /* 6 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(3); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_knockout__ = __webpack_require__(1); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_knockout___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_knockout__); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__editorLocalization__ = __webpack_require__(0); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_survey_knockout__ = __webpack_require__(2); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_survey_knockout___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_survey_knockout__); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_utils__ = __webpack_require__(8); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__stylesmanager__ = __webpack_require__(19); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return SurveyForDesigner; }); /* harmony export (immutable) */ __webpack_exports__["b"] = registerAdorner; /* harmony export (immutable) */ __webpack_exports__["c"] = removeAdorners; /* unused harmony export applyAdornerClass */ var SurveyForDesigner = (function (_super) { __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](SurveyForDesigner, _super); function SurveyForDesigner(jsonObj, renderedElement, css) { if (jsonObj === void 0) { jsonObj = null; } if (renderedElement === void 0) { renderedElement = null; } if (css === void 0) { css = null; } var _this = _super.call(this, jsonObj, renderedElement, css) || this; _this.onSelectedElementChanged = new __WEBPACK_IMPORTED_MODULE_3_survey_knockout__["Event"](); _this.onEditButtonClick = new __WEBPACK_IMPORTED_MODULE_3_survey_knockout__["Event"](); _this.onGetMenuItems = new __WEBPACK_IMPORTED_MODULE_3_survey_knockout__["Event"](); _this.onElementDoubleClick = new __WEBPACK_IMPORTED_MODULE_3_survey_knockout__["Event"](); var self = _this; _this.setDesignMode(true); _this.onAfterRenderPage.add(function (sender, options) { options.page["onAfterRenderPage"](options.htmlElement); }); _this.onAfterRenderQuestion.add(function (sender, options) { options.question["onAfterRenderQuestion"](options.htmlElement); }); _this.onAfterRenderPanel.add(function (sender, options) { options.panel["onAfterRenderPanel"](options.htmlElement); }); _this.editQuestionClick = function () { self.onEditButtonClick.fire(self, null); }; _this.onUpdateQuestionCssClasses.add(onUpdateQuestionCssClasses); _this.onUpdatePanelCssClasses.add(onUpdateQuestionCssClasses); return _this; } SurveyForDesigner.prototype.updateElementAllowingOptions = function (obj) { if (this.onUpdateElementAllowingOptions && obj["allowingOptions"]) { obj["allowingOptions"].obj = obj; this.onUpdateElementAllowingOptions(obj["allowingOptions"]); } }; SurveyForDesigner.prototype.getMenuItems = function (obj) { var items = []; var options = { obj: obj, items: items }; this.onGetMenuItems.fire(this, options); return options.items; }; Object.defineProperty(SurveyForDesigner.prototype, "selectedElement", { get: function () { return this.selectedElementValue; }, set: function (value) { if (value && value.selectedElementInDesign) value = value.selectedElementInDesign; if (value == this.selectedElementValue) return; var oldValue = this.selectedElementValue; this.selectedElementValue = value; if (oldValue != null && oldValue["onSelectedElementChanged"]) { oldValue["onSelectedElementChanged"](); } if (this.selectedElementValue != null && this.selectedElementValue["onSelectedElementChanged"]) { this.selectedElementValue["onSelectedElementChanged"](); } this.onSelectedElementChanged.fire(this, { oldElement: oldValue, newElement: value }); }, enumerable: true, configurable: true }); SurveyForDesigner.prototype.doElementDoubleClick = function (obj) { this.onElementDoubleClick.fire(this, { element: obj }); }; SurveyForDesigner.prototype.getEditorLocString = function (value) { return __WEBPACK_IMPORTED_MODULE_2__editorLocalization__["a" /* editorLocalization */].getString(value); }; return SurveyForDesigner; }(__WEBPACK_IMPORTED_MODULE_3_survey_knockout__["Survey"])); function getSurvey(el) { if (!el) return null; var res = el["survey"]; if (res) return res; return el["data"]; } function panelBaseOnCreating(self) { self.dragEnterCounter = 0; self.emptyElement = null; self.koRows.subscribe(function (changes) { if (self.emptyElement) { self.emptyElement.style.display = self.koRows().length > 0 ? "none" : ""; } }); } function elementOnCreating(surveyElement) { surveyElement.allowingOptions = { allowDelete: true, allowEdit: true, allowCopy: true, allowAddToToolbox: true, allowDragging: true, allowChangeType: true, allowShowHideTitle: true, allowChangeRequired: true }; surveyElement.dragDropHelperValue = null; surveyElement.dragDropHelper = function () { if (surveyElement.dragDropHelperValue == null) { surveyElement.dragDropHelperValue = getSurvey(surveyElement)["dragDropHelper"]; } return surveyElement.dragDropHelperValue; }; surveyElement.renderedElement = null; surveyElement.koIsDragging = __WEBPACK_IMPORTED_MODULE_1_knockout__["observable"](false); surveyElement.koIsSelected = __WEBPACK_IMPORTED_MODULE_1_knockout__["observable"](false); surveyElement.koIsDragging.subscribe(function (newValue) { if (surveyElement.renderedElement) { surveyElement.renderedElement.style.opacity = newValue ? 0.4 : 1; } }); surveyElement.koIsSelected.subscribe(function (newValue) { if (surveyElement.renderedElement) { if (newValue) { surveyElement.renderedElement.classList.add("svd_q_selected", "svd-main-border-color"); } else { surveyElement.renderedElement.classList.remove("svd_q_selected", "svd-main-border-color"); } } }); } function addEmptyPanelElement(root, dragDropHelper, self) { var eDiv = document.createElement("div"); eDiv.className = "well card card-block"; eDiv.ondragover = function (e) { dragDropHelper.doDragDropOver(e, self); }; var eSpan = document.createElement("span"); eSpan.textContent = getSurvey(self).getEditorLocString("survey.dropQuestion"); eDiv.appendChild(eSpan); root.appendChild(eDiv); return eDiv; } function createQuestionDesignItem(obj, item) { var res = document.createElement("li"); var btn = document.createElement("button"); btn.innerText = item.text; var onClick = item.onClick; btn.onclick = function () { onClick(obj, item); }; btn.className = "btn btn-primary btn-sm btn-xs"; res.appendChild(btn); return res; } function elementOnAfterRendering(domElement, surveyElement, isPanel, disable) { surveyElement.renderedElement = domElement; surveyElement.renderedElement.classList.add("svd_question"); if (__WEBPACK_IMPORTED_MODULE_5__stylesmanager__["a" /* StylesManager */].currentTheme() === "bootstrap") { surveyElement.renderedElement.classList.add("svd-dark-bg-color"); } surveyElement.renderedElement.classList.add("svd_q_design_border"); getSurvey(surveyElement).updateElementAllowingOptions(surveyElement); if (surveyElement.koIsSelected()) surveyElement.renderedElement.classList.add("svd_q_selected", "svd-main-border-color"); surveyElement.dragDropHelper().attachToElement(domElement, surveyElement); domElement.tabindex = "0"; domElement.onclick = function (e) { if (!e["markEvent"]) { e["markEvent"] = true; if (surveyElement.parent) { getSurvey(surveyElement)["selectedElement"] = surveyElement; } } }; domElement.onkeyup = function (e) { var char = e.which || e.keyCode; if (char === 0x13 || char === 0x20) { domElement.click(); } }; // el.onkeydown = function(e) { // if (e.witch == 46) getSurvey(surveyElement).deleteCurrentObjectClick(); // return true; // }; domElement.ondblclick = function (e) { getSurvey(surveyElement).doElementDoubleClick(surveyElement); }; disable = disable && !(surveyElement.getType() == "paneldynamic"); //TODO if (disable) { var childs = domElement.childNodes; for (var i = 0; i < childs.length; i++) { if (childs[i].style) childs[i].style.pointerEvents = "none"; } } var setTabIndex = function (element) { element.tabIndex = -1; }; ["input", "select", "textarea"].forEach(function (sel) { var elements = domElement.querySelectorAll(sel); elements.forEach(setTabIndex); }); addAdorner(domElement, surveyElement); } var adornersConfig = {}; function registerAdorner(name, adorner) { if (!adornersConfig[name]) { adornersConfig[name] = []; } adornersConfig[name].push(adorner); } function removeAdorners(names) { if (names === void 0) { names = undefined; } if (names !== undefined) { (names || []).forEach(function (name) { return delete adornersConfig[name]; }); } else { adornersConfig = {}; } } function onUpdateQuestionCssClasses(survey, options) { var classes = options.panel ? options.cssClasses.panel : options.cssClasses; Object.keys(adornersConfig).forEach(function (element) { adornersConfig[element].forEach(function (adorner) { var classesElementName = adorner.getElementName(options.question || options.panel); var adornerMarkerClass = adorner.getMarkerClass(options.question || options.panel); classes[classesElementName] = applyAdornerClass(classes[classesElementName], adornerMarkerClass); }); }); } function applyAdornerClass(classes, adornerClass) { var result = classes; if (!!adornerClass) { result = !!result ? result + " " + adornerClass : adornerClass; } return result; } function filterNestedQuestions(rootQuestionNode, elements) { var targetElements = []; for (var i = 0; i < elements.length; i++) { var questionElement = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_4__utils_utils__["b" /* findParentNode */])("svd_question", elements[i]); if (questionElement === rootQuestionNode) { targetElements.push(elements[i]); } } return targetElements; } function addAdorner(node, model) { Object.keys(adornersConfig).forEach(function (element) { adornersConfig[element].forEach(function (adorner) { var elementClass = adorner.getMarkerClass(model); if (!!elementClass) { var elements = node.querySelectorAll("." + elementClass.replace(/\s/g, ".")); var temp = []; for (var i = 0; i < elements.length; i++) { temp.push(elements[i]); } elements = temp; if (node.className.split(" ").indexOf(elementClass) !== -1) { elements.unshift(node); } elements = filterNestedQuestions(node, elements); if (elements.length === 0 && node.className.indexOf(elementClass) !== -1) { elements = [node]; } if (elements.length > 0) { adorner.afterRender(elements, model, getSurvey(model).getEditor()); } } }); }); } __WEBPACK_IMPORTED_MODULE_3_survey_knockout__["Page"].prototype["onCreating"] = function () { panelBaseOnCreating(this); }; __WEBPACK_IMPORTED_MODULE_3_survey_knockout__["Page"].prototype["onAfterRenderPage"] = function (el) { if (!getSurvey(this).isDesignMode) return; var self = this; var dragDropHelper = getSurvey(this)["dragDropHelper"]; this.dragEnterCounter = 0; el.ondragenter = function (e) { e.preventDefault(); self.dragEnterCounter++; }; el.ondragleave = function (e) { self.dragEnterCounter--; if (self.dragEnterCounter === 0) dragDropHelper.doLeavePage(e); }; el.ondragover = function (e) { return false; }; el.ondrop = function (e) { dragDropHelper.doDrop(e); }; // if (this.elements.length == 0) { // this.emptyElement = addEmptyPanelElement(el, dragDropHelper, self); // } }; __WEBPACK_IMPORTED_MODULE_3_survey_knockout__["Panel"].prototype["onCreating"] = function () { panelBaseOnCreating(this); elementOnCreating(this); }; __WEBPACK_IMPORTED_MODULE_3_survey_knockout__["Panel"].prototype["onAfterRenderPanel"] = function (el) { if (!getSurvey(this).isDesignMode) return; var rows = this.koRows(); var self = this; if (this.elements.length == 0) { this.emptyElement = addEmptyPanelElement(el, self.dragDropHelper(), self); } elementOnAfterRendering(el, this, true, this.koIsDragging()); }; __WEBPACK_IMPORTED_MODULE_3_survey_knockout__["Panel"].prototype["onSelectedElementChanged"] = function () { if (getSurvey(this) == null) return; this.koIsSelected(getSurvey(this)["selectedElementValue"] == this); }; var questionPrototype = !!__WEBPACK_IMPORTED_MODULE_3_survey_knockout__["QuestionBase"] ? __WEBPACK_IMPORTED_MODULE_3_survey_knockout__["QuestionBase"].prototype : __WEBPACK_IMPORTED_MODULE_3_survey_knockout__["Question"].prototype; questionPrototype["onCreating"] = function () { elementOnCreating(this); }; questionPrototype["onAfterRenderQuestion"] = function (el) { if (!getSurvey(this).isDesignMode) return; elementOnAfterRendering(el, this, false, true); }; questionPrototype["onSelectedElementChanged"] = function () { if (getSurvey(this) == null) return; this.koIsSelected(getSurvey(this)["selectedElementValue"] == this); }; /***/ }), /* 7 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(3); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_knockout__ = __webpack_require__(1); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_knockout___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_knockout__); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__propertyEditorBase__ = __webpack_require__(13); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__propertyEditorFactory__ = __webpack_require__(4); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__editorLocalization__ = __webpack_require__(0); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__utils_utils__ = __webpack_require__(8); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_rmodal__ = __webpack_require__(35); /* unused harmony export SurveyPropertyModalEditorCustomWidget */ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return SurveyPropertyModalEditor; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return SurveyPropertyTextEditor; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return SurveyPropertyHtmlEditor; }); var SurveyPropertyModalEditorCustomWidget = (function () { function SurveyPropertyModalEditorCustomWidget(json) { this.json = json; } SurveyPropertyModalEditorCustomWidget.prototype.afterRender = function (editor, el) { if (this.json && this.json.afterRender) { if (!el.id) { el.id = SurveyPropertyModalEditorCustomWidget.customWidgetName + SurveyPropertyModalEditorCustomWidget.customWidgetId; SurveyPropertyModalEditorCustomWidget.customWidgetId++; } this.json.afterRender(editor, el); if (this.json.destroy) { var self = this; __WEBPACK_IMPORTED_MODULE_1_knockout__["utils"].domNodeDisposal.addDisposeCallback(el, function () { self.destroy(editor, el); }); } } }; SurveyPropertyModalEditorCustomWidget.prototype.destroy = function (editor, el) { if (this.json && this.json.destroy) { this.json.destroy(editor, el); } }; return SurveyPropertyModalEditorCustomWidget; }()); SurveyPropertyModalEditorCustomWidget.customWidgetId = 1; SurveyPropertyModalEditorCustomWidget.customWidgetName = "modalEditorCustomWidget"; var SurveyPropertyModalEditor = (function (_super) { __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](SurveyPropertyModalEditor, _super); function SurveyPropertyModalEditor(property) { var _this = _super.call(this, property) || this; _this.isShowingModalValue = false; _this.koTitleCaption = __WEBPACK_IMPORTED_MODULE_1_knockout__["observable"](""); _this.koHtmlTop = __WEBPACK_IMPORTED_MODULE_1_knockout__["observable"](""); _this.koHtmlBottom = __WEBPACK_IMPORTED_MODULE_1_knockout__["observable"](""); if (_this.property) { _this.koTitleCaption(__WEBPACK_IMPORTED_MODULE_4__editorLocalization__["a" /* editorLocalization */] .getString("pe.editProperty")["format"](_this.property.name)); } var name = property ? property.name : ""; _this.modalName = "modelEditor" + _this.editorType + SurveyPropertyModalEditor.idCounter; SurveyPropertyModalEditor.idCounter++; _this.modalNameTarget = "#" + _this.modalName; var self = _this; _this.koShowApplyButton = __WEBPACK_IMPORTED_MODULE_1_knockout__["observable"](true); self.onHideModal = function () { }; self.onApplyClick = function () { self.apply(); }; self.onOkClick = function () { self.apply(); if (!self.koHasError()) self.onHideModal(); }; self.onResetClick = function () { self.updateValue(); self.onHideModal(); }; self.onShowModal = function () { self.beforeShow(); var modal = new __WEBPACK_IMPORTED_MODULE_6_rmodal__["a" /* default */](document.querySelector(self.modalNameTarget), { bodyClass: "", closeTimeout: 100, dialogOpenClass: "animated fadeInDown", focus: false }); modal.open(); document.addEventListener("keydown", function (ev) { modal.keydown(ev); }, false); self.onHideModal = function () { self.beforeCloseModal(); modal.close(); }; if (!!this.elements) { __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_5__utils_utils__["c" /* focusFirstControl */])(this.elements); } }; self.koAfterRender = function (el, con) { return self.afterRender(el, con); }; return _this; } SurveyPropertyModalEditor.registerCustomWidget = function (editorType, json) { if (!SurveyPropertyModalEditor.customWidgets) SurveyPropertyModalEditor.customWidgets = {}; SurveyPropertyModalEditor.customWidgets[editorType] = new SurveyPropertyModalEditorCustomWidget(json); }; SurveyPropertyModalEditor.getCustomWidget = function (editorType) { if (!SurveyPropertyModalEditor.customWidgets) return null; return SurveyPropertyModalEditor.customWidgets[editorType]; }; SurveyPropertyModalEditor.prototype.setup = function () { _super.prototype.setup.call(this); this.beforeShow(); }; Object.defineProperty(SurveyPropertyModalEditor.prototype, "isModal", { get: function () { return true; }, enumerable: true, configurable: true }); Object.defineProperty(SurveyPropertyModalEditor.prototype, "isShowingModal", { get: function () { return this.isShowingModalValue; }, enumerable: true, configurable: true }); SurveyPropertyModalEditor.prototype.beforeShow = function () { this.isShowingModalValue = true; this.updateValue(); }; SurveyPropertyModalEditor.prototype.beforeCloseModal = function () { this.isShowingModalValue = false; }; SurveyPropertyModalEditor.prototype.onOptionsChanged = function () { this.koShowApplyButton = __WEBPACK_IMPORTED_MODULE_1_knockout__["observable"](!this.options || this.options.showApplyButtonInEditors); }; SurveyPropertyModalEditor.prototype.setObject = function (value) { this.editingObject = value; _super.prototype.setObject.call(this, value); if (this.options && this.property) { var html = this.options.onPropertyEditorModalShowDescriptionCallback(this.property.name, value); if (html) { if (html.top) this.koHtmlTop(html.top); if (html.bottom) this.koHtmlBottom(html.bottom); } } }; Object.defineProperty(SurveyPropertyModalEditor.prototype, "isEditable", { get: function () { return false; }, enumerable: true, configurable: true }); SurveyPropertyModalEditor.prototype.afterRender = function (elements, con) { this.elements = elements; var customWidget = SurveyPropertyModalEditor.getCustomWidget(this.editorType); if (!!customWidget) { var el = this.GetFirstNonTextElement(elements); var tEl = elements[0]; if (tEl.nodeName == "#text") tEl.data = ""; tEl = elements[elements.length - 1]; if (tEl.nodeName == "#text") tEl.data = ""; customWidget.afterRender(this, el); } __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_5__utils_utils__["c" /* focusFirstControl */])(elements); }; SurveyPropertyModalEditor.prototype.GetFirstNonTextElement = function (elements) { if (!elements || !elements.length) return; for (var i = 0; i < elements.length; i++) { if (elements[i].nodeName != "#text" && elements[i].nodeName != "#comment") return elements[i]; } return null; }; return SurveyPropertyModalEditor; }(__WEBPACK_IMPORTED_MODULE_2__propertyEditorBase__["a" /* SurveyPropertyEditorBase */])); SurveyPropertyModalEditor.idCounter = 1; var SurveyPropertyTextEditor = (function (_super) { __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](SurveyPropertyTextEditor, _super); function SurveyPropertyTextEditor(property) { var _this = _super.call(this, property) || this; _this.koTextValue = __WEBPACK_IMPORTED_MODULE_1_knockout__["observable"](); var self = _this; _this.koTextValue.subscribe(function (newValue) { self.onkoTextValueChanged(newValue); }); return _this; } Object.defineProperty(SurveyPropertyTextEditor.prototype, "editorType", { get: function () { return "text"; }, enumerable: true, configurable: true }); Object.defineProperty(SurveyPropertyTextEditor.prototype, "isEditable", { get: function () { return true; }, enumerable: true, configurable: true }); SurveyPropertyTextEditor.prototype.getValueText = function (value) { if (!value) return null; var str = value; if (str.length > 20) { str = str.substr(0, 20) + "..."; } return str; }; SurveyPropertyTextEditor.prototype.onkoTextValueChanged = function (newValue) { }; SurveyPropertyTextEditor.prototype.onValueChanged = function () { this.koTextValue(this.editingValue); }; SurveyPropertyTextEditor.proto