├── .babelrc ├── .eslintrc ├── .gitignore ├── .vscode ├── launch.json └── settings.json ├── ISSUE_TEMPLATE.md ├── LICENSE ├── README.md ├── README_TOO.md ├── RELEASE_NOTES.md ├── dist ├── dragDropWay.html ├── eda.dragdropway.css ├── eda.dragdropway.css.map ├── eda.dragdropway.js ├── eda.dragdropway.min.js ├── eda.dragdropway.min.js.map ├── eda.easyFormViewer.js ├── eda.easyFormViewer.min.js ├── eda.easyFormViewer.min.js.map ├── eda.formviewer.css ├── eda.formviewer.css.map ├── eda.stepway.css ├── eda.stepway.css.map ├── eda.stepway.js ├── eda.stepway.min.js ├── eda.stepway.min.js.map ├── formviewer.html ├── stepway.html └── vendors │ ├── css │ ├── animate.min.css │ ├── bootstrap.min.css │ ├── font-awesome.min.css │ ├── loading-bar.min.css │ ├── nya-bs-select.min.css │ ├── textAngular.min.css │ └── toaster.min.css │ ├── fonts │ ├── FontAwesome.otf │ ├── fontawesome-webfont.eot │ ├── fontawesome-webfont.svg │ ├── fontawesome-webfont.ttf │ ├── fontawesome-webfont.woff │ ├── fontawesome-webfont.woff2 │ ├── glyphicons-halflings-regular.eot │ ├── glyphicons-halflings-regular.svg │ ├── glyphicons-halflings-regular.ttf │ ├── glyphicons-halflings-regular.woff │ └── glyphicons-halflings-regular.woff2 │ └── js │ ├── angular-animate.min.js │ ├── angular-animate.min.js.map │ ├── angular-messages.min.js.map │ ├── angular-resource.min.js │ ├── angular-resource.min.js.map │ ├── angular-strap.min.js │ ├── angular-strap.min.js.map │ ├── angular-strap.tpl.min.js │ ├── angular-translate.min.js │ ├── angular.min.js │ ├── angular.min.js.map │ ├── bootstrap.min.js │ ├── html5shiv.min.js │ ├── jquery.min.js │ ├── jquery.min.map │ ├── loading-bar.min.js │ ├── lodash.min.js │ ├── modernizr.js │ ├── nya-bs-select.min.js │ ├── respond.min.js │ ├── textAngular-rangy.min.js │ ├── textAngular-sanitize.min.js │ ├── textAngular.min.js │ ├── toaster.min.js │ └── ui-bootstrap-tpls.min.js ├── images ├── Paypal-button.png ├── Paypal-button@2x.png ├── Paypal-button@3x.png ├── dragdropway_preview.png ├── easyFormViewerPreview.png ├── emailAndValidation.png ├── languages.png └── preview.png ├── jsconfig.json ├── karma.conf.js ├── package.json ├── preview ├── dist │ ├── eda.dragdropway.css │ ├── eda.dragdropway.css.map │ ├── eda.dragdropway.js │ ├── eda.dragdropway.js.map │ ├── eda.easyFormViewer.js │ ├── eda.easyFormViewer.js.map │ ├── eda.formviewer.css │ ├── eda.formviewer.css.map │ ├── eda.stepway.css │ ├── eda.stepway.css.map │ ├── eda.stepway.js │ └── eda.stepway.js.map ├── dragDropWay.html ├── formviewer.html ├── stepway-wizard.html ├── stepway.html ├── stepwayBefore-2.2.0.html └── vendors │ ├── css │ ├── animate.min.css │ ├── bootstrap.min.css │ ├── font-awesome.min.css │ ├── loading-bar.min.css │ ├── nya-bs-select.min.css │ ├── textAngular.min.css │ └── toaster.min.css │ ├── fonts │ ├── FontAwesome.otf │ ├── fontawesome-webfont.eot │ ├── fontawesome-webfont.svg │ ├── fontawesome-webfont.ttf │ ├── fontawesome-webfont.woff │ ├── fontawesome-webfont.woff2 │ ├── glyphicons-halflings-regular.eot │ ├── glyphicons-halflings-regular.svg │ ├── glyphicons-halflings-regular.ttf │ ├── glyphicons-halflings-regular.woff │ └── glyphicons-halflings-regular.woff2 │ └── js │ ├── angular-animate.min.js │ ├── angular-animate.min.js.map │ ├── angular-messages.min.js.map │ ├── angular-resource.min.js │ ├── angular-resource.min.js.map │ ├── angular-strap.min.js │ ├── angular-strap.min.js.map │ ├── angular-strap.tpl.min.js │ ├── angular-translate.min.js │ ├── angular.min.js │ ├── angular.min.js.map │ ├── bootstrap.min.js │ ├── html5shiv.min.js │ ├── jquery.min.js │ ├── jquery.min.map │ ├── loading-bar.min.js │ ├── lodash.min.js │ ├── modernizr.js │ ├── nya-bs-select.min.js │ ├── respond.min.js │ ├── textAngular-rangy.min.js │ ├── textAngular-sanitize.min.js │ ├── textAngular.min.js │ ├── toaster.min.js │ └── ui-bootstrap-tpls.min.js ├── src ├── app │ ├── dragdropway │ │ ├── components │ │ │ ├── common │ │ │ │ ├── dragAndDropList │ │ │ │ │ ├── dragAndDropList.dndDraggable.directive.js │ │ │ │ │ ├── dragAndDropList.dndlist.directive.js │ │ │ │ │ └── dragAndDropList.module.js │ │ │ │ ├── edaTrustThisFilter │ │ │ │ │ ├── edaDragDropWay.trustThis.filter.js │ │ │ │ │ └── edaDragDropWay.trustThis.module.js │ │ │ │ ├── pageslide │ │ │ │ │ ├── pageslide.directive.js │ │ │ │ │ └── pageslide.module.js │ │ │ │ └── rightclick │ │ │ │ │ ├── edaDragDropWay.rightClick.directive.js │ │ │ │ │ ├── edaDragDropWay.rightClick.module.js │ │ │ │ │ └── edaDragDropWay.rightClick.service.js │ │ │ ├── configurationModelProxy │ │ │ │ ├── edaDragDropWay.configurationModelProxy.module.js │ │ │ │ └── edaDragDropWay.configurationModelProxy.service.js │ │ │ ├── dragdrop │ │ │ │ ├── ddContentCounter │ │ │ │ │ ├── edaDragDropWay.dragdrop.ddContentCounter.directive.js │ │ │ │ │ └── edaDragDropWay.dragdrop.ddContentCounter.service.js │ │ │ │ ├── ddDecorContainer │ │ │ │ │ ├── edaDragDropWay.dragdrop.ddDecorContainer.controller.js │ │ │ │ │ ├── edaDragDropWay.dragdrop.ddDecorContainer.directive.js │ │ │ │ │ └── edaDragDropWay.dragdrop.ddDecorContainer.template.html │ │ │ │ ├── ddDecorDropZone │ │ │ │ │ ├── edaDragDropWay.dragdrop.ddDecorDropZone.directive.js │ │ │ │ │ └── edaDragDropWay.dragdrop.ddDecorDropZone.template.html │ │ │ │ ├── ddDecorItem │ │ │ │ │ ├── edaDragDropWay.dragdrop.ddDecorItem.directive.js │ │ │ │ │ ├── edaDragDropWay.dragdrop.ddDecorItem.service.js │ │ │ │ │ └── edaDragDropWay.dragdrop.ddDecorItem.template.html │ │ │ │ ├── ddDecorLine │ │ │ │ │ ├── edaDragDropWay.dragdrop.ddDecorLine.directive.js │ │ │ │ │ └── edaDragDropWay.dragdrop.ddDecorLine.template.html │ │ │ │ ├── ddNoEditableControl │ │ │ │ │ └── edaDragDropWay.dragdrop.ddNoEditableControl.directive.js │ │ │ │ └── edaDragDropWay.dragdrop.module.js │ │ │ ├── edaDragDropWayEasyFormGen │ │ │ │ ├── edaDragDropWay.edaDragdropWayEasyFormGen.controller.helpers.js │ │ │ │ ├── edaDragDropWay.edaDragdropWayEasyFormGen.controller.js │ │ │ │ ├── edaDragDropWay.edaDragdropWayEasyFormGen.directive.js │ │ │ │ ├── edaDragDropWay.edaDragdropWayEasyFormGen.module.js │ │ │ │ ├── edaDragDropWay.edaDragdropWayEasyFormGen.provider.helpers.js │ │ │ │ ├── edaDragDropWay.edaDragdropWayEasyFormGen.provider.js │ │ │ │ ├── edaDragDropWay.edaDragdropWayEasyFormGen.template.html │ │ │ │ └── jsconfig.json │ │ │ ├── formlyProxy │ │ │ │ ├── edaDragDropWay.formlyProxy.formFieldManage.module.js │ │ │ │ ├── edaDragDropWay.formlyProxy.formFieldManage.provider.helpers.js │ │ │ │ ├── edaDragDropWay.formlyProxy.formFieldManage.provider.js │ │ │ │ └── edaDragDropWay.formlyProxy.formFieldManage.service.js │ │ │ └── leftPanel │ │ │ │ ├── BasicSelectControl │ │ │ │ ├── edaDragDropWay.leftpanel.basicSelectControl.directive.js │ │ │ │ └── edaDragDropWay.leftpanel.basicSelectControl.template.html │ │ │ │ ├── BlankControl │ │ │ │ ├── edaDragDropWay.leftpanel.blankControl.directive.js │ │ │ │ └── edaDragDropWay.leftpanel.blankControl.template.html │ │ │ │ ├── CheckBoxControl │ │ │ │ ├── edaDragDropWay.leftpanel.checkBoxControl.directive.js │ │ │ │ └── edaDragDropWay.leftpanel.checkBoxControl.template.html │ │ │ │ ├── DateControl │ │ │ │ ├── edaDragDropWay.leftpanel.dateControl.directive.js │ │ │ │ └── edaDragDropWay.leftpanel.dateControl.template.html │ │ │ │ ├── GroupedSelectControl │ │ │ │ ├── edaDragDropWay.leftpanel.groupedSelectControl.directive.js │ │ │ │ └── edaDragDropWay.leftpanel.groupedSelectControl.template.html │ │ │ │ ├── HeaderControl │ │ │ │ ├── edaDragDropWay.leftpanel.headerControl.directive.js │ │ │ │ └── edaDragDropWay.leftpanel.headerControl.template.html │ │ │ │ ├── PasswordControl │ │ │ │ ├── edaDragDropWay.leftpanel.passwordControl.directive.js │ │ │ │ └── edaDragDropWay.leftpanel.passwordControl.template.html │ │ │ │ ├── RadioControl │ │ │ │ ├── edaDragDropWay.leftpanel.radioControl.directive.js │ │ │ │ └── edaDragDropWay.leftpanel.radioControl.template.html │ │ │ │ ├── RichTextEditorControl │ │ │ │ ├── edaDragDropWay.leftpanel.richTextEditorControl.directive.js │ │ │ │ └── edaDragDropWay.leftpanel.richTextEditorControl.template.html │ │ │ │ ├── SubTitleControl │ │ │ │ ├── edaDragDropWay.leftpanel.subtitleControl.directive.js │ │ │ │ └── edaDragDropWay.leftpanel.subtitleControl.template.html │ │ │ │ ├── TextAreaControl │ │ │ │ ├── edaDragDropWay.leftpanel.textareaControl.directive.js │ │ │ │ └── edaDragDropWay.leftpanel.textareaControl.template.html │ │ │ │ ├── TextInputControl │ │ │ │ ├── edaDragDropWay.leftpanel.textInputControl.directive.js │ │ │ │ └── edaDragDropWay.leftpanel.textInputControl.template.html │ │ │ │ ├── ValidEditFooter │ │ │ │ ├── edaDragDropWay.leftpanel.validEditFooter.directive.js │ │ │ │ └── edaDragDropWay.leftpanel.validEditFooter.template.html │ │ │ │ ├── edaDragDropWay.leftPanel.controller.helpers.js │ │ │ │ ├── edaDragDropWay.leftPanel.controller.js │ │ │ │ ├── edaDragDropWay.leftPanel.controllerModalProxy.service.js │ │ │ │ ├── edaDragDropWay.leftPanel.directive.js │ │ │ │ ├── edaDragDropWay.leftPanel.module.js │ │ │ │ ├── edaDragDropWay.leftPanel.selectOptionManage.service.helpers.js │ │ │ │ ├── edaDragDropWay.leftPanel.selectOptionManage.service.js │ │ │ │ └── edaDragDropWay.leftPanel.template.html │ │ ├── config │ │ │ ├── edaDragDropWay.dragDropConfig.config.js │ │ │ └── edaDragDropWay.formlyConfig.config.js │ │ ├── core │ │ │ └── edaDragDropWay.core.module.js │ │ ├── index.js │ │ ├── main.js │ │ ├── style │ │ │ ├── drag_and_drop.scss │ │ │ ├── drag_and_drop_mixins.scss │ │ │ ├── drag_and_drop_var.scss │ │ │ └── eda.textAngular.min.scss │ │ └── vendors.js │ ├── formviewer │ │ ├── components │ │ │ ├── core │ │ │ │ └── eda.easyFormViewer.core.module.js │ │ │ ├── main │ │ │ │ ├── eda.easyFormViewer.main.controller.js │ │ │ │ ├── eda.easyFormViewer.main.directive.helpers.js │ │ │ │ ├── eda.easyFormViewer.main.directive.js │ │ │ │ ├── eda.easyFormViewer.main.module.js │ │ │ │ └── eda.easyFormViewer.main.template.html │ │ │ └── modelsTranslator │ │ │ │ ├── eda.easyFormViewer.modelTranslator.module.js │ │ │ │ ├── eda.easyFormViewer.modelTranslator.service.helpers.js │ │ │ │ └── eda.easyFormViewer.modelTranslator.service.js │ │ ├── index.js │ │ ├── main.js │ │ ├── style │ │ │ ├── eda.textAngular.min.scss │ │ │ ├── formviewer.scss │ │ │ ├── formviewer_mixins.scss │ │ │ └── formviewer_var.scss │ │ └── vendors.js │ └── stepway │ │ ├── README.md │ │ ├── components │ │ ├── controls │ │ │ ├── CheckBox │ │ │ │ ├── config │ │ │ │ │ └── checkbox.config.js │ │ │ │ └── editCheckBox │ │ │ │ │ └── editCheckBox.component.js │ │ │ ├── Date │ │ │ │ ├── config │ │ │ │ │ └── date.config.js │ │ │ │ └── editDate │ │ │ │ │ └── editDate.component.js │ │ │ ├── Email │ │ │ │ ├── config │ │ │ │ │ └── email.config.js │ │ │ │ └── editEmail │ │ │ │ │ └── editEmail.component.js │ │ │ ├── IpAdress │ │ │ │ ├── config │ │ │ │ │ └── IpAdress.config.js │ │ │ │ └── editIpAdress │ │ │ │ │ └── editIpAdress.component.js │ │ │ ├── NOTE.md │ │ │ ├── basicSelect │ │ │ │ ├── config │ │ │ │ │ └── basicSelect.config.js │ │ │ │ └── editBasicSelect │ │ │ │ │ └── editBasicSelect.component.js │ │ │ ├── blank │ │ │ │ ├── config │ │ │ │ │ └── blank.config.js │ │ │ │ └── editBlank │ │ │ │ │ └── editBlankControl.component.js │ │ │ ├── groupedSelect │ │ │ │ ├── config │ │ │ │ │ └── groupedSelect.config.js │ │ │ │ └── editGroupedSelect │ │ │ │ │ └── editGroupedSelect.component.js │ │ │ ├── header │ │ │ │ ├── config │ │ │ │ │ └── header.config.js │ │ │ │ └── editHeader │ │ │ │ │ └── editHeaderControl.component.js │ │ │ ├── index.js │ │ │ ├── password │ │ │ │ ├── config │ │ │ │ │ └── password.config.js │ │ │ │ └── editPassword │ │ │ │ │ └── editPassword.component.js │ │ │ ├── radio │ │ │ │ ├── config │ │ │ │ │ └── radio.config.js │ │ │ │ └── editRadio │ │ │ │ │ └── editRadio.component.js │ │ │ ├── richTextEditor │ │ │ │ ├── config │ │ │ │ │ └── richTextEditor.config.js │ │ │ │ └── editRichTextEditor │ │ │ │ │ └── editRichTextEditor.component.js │ │ │ ├── subTitle │ │ │ │ ├── config │ │ │ │ │ └── subTitle.config.js │ │ │ │ └── editSubTitle │ │ │ │ │ └── editSubTitle.component.js │ │ │ ├── textArea │ │ │ │ ├── config │ │ │ │ │ └── textArea.config.js │ │ │ │ └── editTextArea │ │ │ │ │ └── editTextArea.component.js │ │ │ └── textInput │ │ │ │ ├── config │ │ │ │ └── textInput.config.js │ │ │ │ └── editTextInput │ │ │ │ └── editTextInput.component.js │ │ ├── main │ │ │ ├── main.controller.helpers.js │ │ │ ├── main.controller.js │ │ │ ├── main.controller.spec.js │ │ │ ├── main.directive.js │ │ │ ├── main.directive.spec.js │ │ │ ├── main.module.js │ │ │ ├── main.provider.js │ │ │ ├── pager │ │ │ │ └── main.pager.component.js │ │ │ ├── stepIndicator │ │ │ │ └── main.stepIndicator.component.js │ │ │ ├── stepOneContent │ │ │ │ ├── StepOneCommandPanel │ │ │ │ │ └── main.StepOneCommandPanel.component.js │ │ │ │ ├── StepOneVisualPanel │ │ │ │ │ └── main.StepOneVisualPanel.component.js │ │ │ │ └── main.stepOneContent.component.js │ │ │ ├── stepThreeContent │ │ │ │ ├── StepThreeCommandPanel │ │ │ │ │ └── main.StepThreeCommandPanel.component.js │ │ │ │ ├── StepThreeVisualPanel │ │ │ │ │ └── main.StepThreeVisualPanel.component.js │ │ │ │ └── main.stepThreeContent.component.js │ │ │ ├── stepTwoContent │ │ │ │ ├── StepTwoCommandPanel │ │ │ │ │ └── main.StepTwoCommandPanel.component.js │ │ │ │ ├── StepTwoVisualPanel │ │ │ │ │ └── main.StepTwoVisualPanel.component.js │ │ │ │ └── main.stepTwoContent.component.js │ │ │ └── stepZeroContent │ │ │ │ ├── StepZeroCommandPanel │ │ │ │ └── main.StepZeroCommandPanel.component.js │ │ │ │ ├── StepZeroVisualPanel │ │ │ │ └── main.StepZeroVisualPanel.component.js │ │ │ │ └── main.stepZeroContent.component.js │ │ ├── modal │ │ │ ├── editChooseControl │ │ │ │ └── editChooseControl.component.js │ │ │ ├── editControlModal.controller.js │ │ │ ├── editControlModal.module.js │ │ │ ├── editControlModal.template.html │ │ │ └── editValidEditFooter │ │ │ │ └── editValidEditFooter.component.js │ │ └── wizard │ │ │ ├── addStepContent │ │ │ ├── AddStepCommandPanel │ │ │ │ └── stepway.wizard.AddStepCommandPanel.component.js │ │ │ ├── AddStepVisualPanel │ │ │ │ └── stepway.wizard.AddStepVisualPanel.component.js │ │ │ ├── stepway.wizard.addStepContent.component.js │ │ │ └── stepway.wizard.addStepContent.module.js │ │ │ ├── stepway.wizard.controller.helpers.js │ │ │ ├── stepway.wizard.controller.js │ │ │ ├── stepway.wizard.controller.spec.js │ │ │ ├── stepway.wizard.directive.js │ │ │ ├── stepway.wizard.directive.spec.js │ │ │ ├── stepway.wizard.module.js │ │ │ ├── stepway.wizard.provider.js │ │ │ └── stepway.wizard.template.html │ │ ├── config │ │ ├── easyFormGenerator │ │ │ └── easyFormGenerator.config.js │ │ ├── formly │ │ │ ├── formly.config.js │ │ │ └── formly.config.templates.js │ │ └── translate │ │ │ └── translate.config.js │ │ ├── core │ │ └── core.module.js │ │ ├── i18n │ │ ├── local-de.json │ │ ├── local-en.json │ │ ├── local-es.json │ │ ├── local-fr.json │ │ ├── local-jp.json │ │ ├── local-pt-br.json │ │ ├── local-tr.json │ │ └── local-zh.json │ │ ├── index.js │ │ ├── main.js │ │ ├── services │ │ ├── formlyProxy │ │ │ ├── formlyProxy.service.helpers.js │ │ │ └── formlyProxy.service.js │ │ ├── modalProxy │ │ │ ├── modalProxy.service.helpers.js │ │ │ └── modalProxy.service.js │ │ └── selectOptionManage │ │ │ └── selectOptionManage.service.js │ │ ├── style │ │ ├── _mixins.scss │ │ ├── _var.scss │ │ ├── index.scss │ │ └── textAngularCustomized.scss │ │ └── vendors.js └── tests.webpack.js ├── typings.json ├── typings ├── globals │ ├── angular-formly │ │ ├── index.d.ts │ │ └── typings.json │ ├── bootstrap │ │ ├── index.d.ts │ │ └── typings.json │ ├── karma-jasmine │ │ ├── index.d.ts │ │ └── typings.json │ ├── karma │ │ ├── index.d.ts │ │ └── typings.json │ └── webpack-dev-server │ │ ├── index.d.ts │ │ └── typings.json ├── index.d.ts └── modules │ ├── angular-animate │ ├── index.d.ts │ └── typings.json │ ├── angular-wizard │ ├── index.d.ts │ └── typings.json │ └── angular │ ├── index.d.ts │ └── typings.json ├── webpack.config.dragdropway.js ├── webpack.config.formviewer.js ├── webpack.config.js ├── webpack.config.stepway.js └── yarn.lock /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["es2015", "stage-2"] 3 | } 4 | -------------------------------------------------------------------------------- /.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "parser": "babel-eslint", 3 | "ecmaFeatures": { 4 | "modules": true, 5 | "experimentalObjectRestSpread": true 6 | }, 7 | "parserOptions": { 8 | "sourceType": "module" 9 | }, 10 | "rules": { 11 | // "indent": [ 2, 2 ], 12 | "quotes": [ 1, "single", "avoid-escape" ], 13 | "linebreak-style": [ 2, "unix" ], 14 | "semi": [ 2, "always" ], 15 | "prefer-const": 2, 16 | //# angular 17 | "angular/definedundefined" : 0, 18 | "angular/json-functions" : 0 , 19 | "angular/document-service" : 0, 20 | "angular/timeout-service" : 0, 21 | "angular/log" : 0, 22 | "angular/window-service" : 0, 23 | "angular/typecheck-array": 0, 24 | // # custom: 25 | "no-global-assign": 0, 26 | "no-unsafe-negation": 0 27 | }, 28 | "env": { 29 | "es6": true, 30 | "browser": true, 31 | "node" : true 32 | }, 33 | "globals": { 34 | "angular": false, 35 | "_" : true 36 | }, 37 | "extends": [ 38 | "eslint:recommended", 39 | "angular" 40 | ], 41 | "plugins": [ 42 | "angular" 43 | ] 44 | } 45 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | bower_components/ 3 | jspm_packages/ 4 | coverage/ 5 | *.log 6 | 7 | build/ 8 | 9 | .idea 10 | 11 | .DS_Store 12 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "type": "chrome", 6 | "request": "launch", 7 | "name": "preview dev stepway", 8 | "url": "http://localhost:8080", 9 | "webRoot": "${workspaceRoot}", 10 | "file": "${workspaceRoot}/preview/stepway.html", 11 | "sourceMaps": true, 12 | "sourceMapPathOverrides": { 13 | "webpack:///./*": "${webRoot}/*" 14 | } 15 | }, 16 | { 17 | "type": "chrome", 18 | "request": "launch", 19 | "name": "preview prod stepway", 20 | "url": "http://localhost:8080", 21 | "webRoot": "${workspaceRoot}", 22 | "file": "${workspaceRoot}/dist/stepway.html", 23 | "sourceMaps": true, 24 | "sourceMapPathOverrides": { 25 | "webpack:///./*": "${webRoot}/*" 26 | } 27 | }, 28 | { 29 | "type": "chrome", 30 | "request": "launch", 31 | "name": "preview dev dragdropway", 32 | "url": "http://localhost:8080", 33 | "webRoot": "${workspaceRoot}", 34 | "file": "${workspaceRoot}/preview/dragDropWay.html", 35 | "sourceMaps": true, 36 | "sourceMapPathOverrides": { 37 | "webpack:///./*": "${webRoot}/*" 38 | } 39 | }, 40 | { 41 | "type": "chrome", 42 | "request": "launch", 43 | "name": "preview prod dragdropway", 44 | "url": "http://localhost:8080", 45 | "webRoot": "${workspaceRoot}", 46 | "file": "${workspaceRoot}/dist/dragDropWay.html", 47 | "sourceMaps": true, 48 | "sourceMapPathOverrides": { 49 | "webpack:///./*": "${webRoot}/*" 50 | } 51 | }, 52 | { 53 | "type": "chrome", 54 | "request": "launch", 55 | "name": "preview dev formviewer", 56 | "url": "http://localhost:8080", 57 | "webRoot": "${workspaceRoot}", 58 | "file": "${workspaceRoot}/preview/formviewer.html", 59 | "sourceMaps": true, 60 | "sourceMapPathOverrides": { 61 | "webpack:///./*": "${webRoot}/*" 62 | } 63 | }, 64 | { 65 | "type": "chrome", 66 | "request": "launch", 67 | "name": "preview prod formviewer", 68 | "url": "http://localhost:8080", 69 | "webRoot": "${workspaceRoot}", 70 | "file": "${workspaceRoot}/dist/formviewer.html", 71 | "sourceMaps": true, 72 | "sourceMapPathOverrides": { 73 | "webpack:///./*": "${webRoot}/*" 74 | } 75 | } 76 | ] 77 | } -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | // Placez vos paramètres dans ce fichier pour remplacer les paramètres par défaut et les paramètres utilisateur. 2 | { 3 | // coding style and xp: 4 | "editor.tabSize": 2, 5 | "editor.insertSpaces": true, 6 | "editor.autoClosingBrackets": true, 7 | // search: 8 | "search.exclude": { 9 | "node_modules": true, 10 | "bower_components": true, 11 | "jspm_packages": true, 12 | ".git": true, 13 | "flow-typed": true, 14 | "__snapshots__": true 15 | }, 16 | // telemetry: 17 | "telemetry.enableTelemetry": false, 18 | "telemetry.enableCrashReporter": false, 19 | // flow 20 | "javascript.validate.enable": false, 21 | "flow.useNPMPackagedFlow": true, 22 | "flow.pathToFlow": "node_modules/.bin", 23 | "javascript.format.enable": false 24 | } -------------------------------------------------------------------------------- /ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | ### Version 2 | 2.3.0 3 | 4 | ### Directive 5 | - [ ] stepway 6 | - [ ] formViewer 7 | - [ ] dragdropway 8 | 9 | 10 | ### Steps to reproduce 11 | 1. 12 | 2. 13 | 3. 14 | 15 | ### Expected behavior 16 | What should happen 17 | 18 | ### Actual behavior 19 | What is happening 20 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 Erwan DATIN 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /RELEASE_NOTES.md: -------------------------------------------------------------------------------- 1 | # Releases 2 | 3 | ## Notes: 4 | 5 | ### v2.3.0 6 | 7 | - add chinese language (thanks to @alansong :clap:) 8 | 9 | ### v2.2.3 10 | 11 | - issues fixes 12 | - header control 13 | - opening modal with empty field model won't throw error anymore 14 | 15 | ### v2.2.2 16 | 17 | - skiped 18 | 19 | ### v2.1.1 20 | 21 | - Header component fix (now a real component) => breaking changes 22 | - breaking change to `fix angular formly upgrade compatibility issue`. **This breaking change impacts Header fields model control only**. Header control field model now needs header value to be in `templateOptions.placeholder` (*rather than in `templateOptions.description`*). To help to ensure the right property is used by your previously saved fields model, description input is now added in Header edit modal (*so just cut / paste description into header text input*). 23 | - add Wizard (thanks to `gofreddo` PR) 24 | 25 | 26 | ### v2.1.0 27 | - separate js and css into distinct bundles (like before v2.0.0) 28 | - merged awesome PR from 29 | - `cristianurbano` :clap: 30 | - `gofreddo` :clap: 31 | - **Thank you for you contributions!** 32 | 33 | ### v2.0.0 34 | - leave `bower, gulp and jspm` in favor of `webpack + npm` 35 | - new control: `IP adress` 36 | - new language added `Brazilian Portuguese` thanks to `Leandro.Battisti` 37 | - merged awesome PRs from `gofreddo` :clap: for kind and amazing contribution 38 | 39 | ### v1.2.0 40 | 41 | To follow `ui-bootstrap` (*ui-bootstrap following angular js and avoiding name conflict with angular Strap*) 42 | > easyFormGenerator (since v1.2.0) is now compatible with latest ui-bootstrap. 43 | 44 | If you want to use older ui-bootstrap (*<= v0.13.4*) 45 | 46 | > you will have to use easyFormGenrator <= v1.1.0. 47 | 48 | ### v1.1.0 49 | 50 | - migration to ES6 + fixes 51 | 52 | ### v1.0.21: 53 | 54 | *`Easy form viewer` (*no matter form generator you used, models are the same*): 55 | 56 | - You created a form through `easy form generator`, you have now `easy form viewer` to easily `render` your forms 57 | - you can still use angular formly directive. But since easy form generator contains amount of custom controls, you may have pain to configure yourself with `formlyConfigProvider`. Just use easy form viewer directive, it embeds angular formly and configure custom controls for you = no more pain. 58 | ______ 59 | -------------------------------------------------------------------------------- /dist/eda.dragdropway.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":[],"names":[],"mappings":"","file":"eda.dragdropway.css","sourceRoot":""} -------------------------------------------------------------------------------- /dist/eda.formviewer.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":[],"names":[],"mappings":"","file":"eda.formviewer.css","sourceRoot":""} -------------------------------------------------------------------------------- /dist/eda.stepway.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":[],"names":[],"mappings":"","file":"eda.stepway.css","sourceRoot":""} -------------------------------------------------------------------------------- /dist/vendors/css/loading-bar.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * angular-loading-bar v0.7.1 3 | * https://chieffancypants.github.io/angular-loading-bar 4 | * Copyright (c) 2015 Wes Cruver 5 | * License: MIT 6 | */ 7 | 8 | #loading-bar,#loading-bar-spinner{pointer-events:none;-webkit-pointer-events:none;-webkit-transition:350ms linear all;-moz-transition:350ms linear all;-o-transition:350ms linear all;transition:350ms linear all}#loading-bar.ng-enter,#loading-bar.ng-leave.ng-leave-active,#loading-bar-spinner.ng-enter,#loading-bar-spinner.ng-leave.ng-leave-active{opacity:0}#loading-bar.ng-enter.ng-enter-active,#loading-bar.ng-leave,#loading-bar-spinner.ng-enter.ng-enter-active,#loading-bar-spinner.ng-leave{opacity:1}#loading-bar .bar{-webkit-transition:width 350ms;-moz-transition:width 350ms;-o-transition:width 350ms;transition:width 350ms;background:#29d;position:fixed;z-index:10002;top:0;left:0;width:100%;height:2px;border-bottom-right-radius:1px;border-top-right-radius:1px}#loading-bar .peg{position:absolute;width:70px;right:0;top:0;height:2px;opacity:.45;-moz-box-shadow:#29d 1px 0 6px 1px;-ms-box-shadow:#29d 1px 0 6px 1px;-webkit-box-shadow:#29d 1px 0 6px 1px;box-shadow:#29d 1px 0 6px 1px;-moz-border-radius:100%;-webkit-border-radius:100%;border-radius:100%}#loading-bar-spinner{display:block;position:fixed;z-index:10002;top:10px;left:10px}#loading-bar-spinner .spinner-icon{width:14px;height:14px;border:solid 2px transparent;border-top-color:#29d;border-left-color:#29d;border-radius:10px;-webkit-animation:loading-bar-spinner 400ms linear infinite;-moz-animation:loading-bar-spinner 400ms linear infinite;-ms-animation:loading-bar-spinner 400ms linear infinite;-o-animation:loading-bar-spinner 400ms linear infinite;animation:loading-bar-spinner 400ms linear infinite}@-webkit-keyframes loading-bar-spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-moz-keyframes loading-bar-spinner{0%{-moz-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(360deg);transform:rotate(360deg)}}@-o-keyframes loading-bar-spinner{0%{-o-transform:rotate(0deg);transform:rotate(0deg)}100%{-o-transform:rotate(360deg);transform:rotate(360deg)}}@-ms-keyframes loading-bar-spinner{0%{-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-ms-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes loading-bar-spinner{0%{transform:rotate(0deg);transform:rotate(0deg)}100%{transform:rotate(360deg);transform:rotate(360deg)}} -------------------------------------------------------------------------------- /dist/vendors/css/textAngular.min.css: -------------------------------------------------------------------------------- 1 | .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;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);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{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;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);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} -------------------------------------------------------------------------------- /dist/vendors/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MacKentoch/easyFormGenerator/d146d9ac1aba87f8730001b61a737867a1a05695/dist/vendors/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /dist/vendors/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MacKentoch/easyFormGenerator/d146d9ac1aba87f8730001b61a737867a1a05695/dist/vendors/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /dist/vendors/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MacKentoch/easyFormGenerator/d146d9ac1aba87f8730001b61a737867a1a05695/dist/vendors/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /dist/vendors/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MacKentoch/easyFormGenerator/d146d9ac1aba87f8730001b61a737867a1a05695/dist/vendors/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /dist/vendors/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MacKentoch/easyFormGenerator/d146d9ac1aba87f8730001b61a737867a1a05695/dist/vendors/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /dist/vendors/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MacKentoch/easyFormGenerator/d146d9ac1aba87f8730001b61a737867a1a05695/dist/vendors/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /dist/vendors/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MacKentoch/easyFormGenerator/d146d9ac1aba87f8730001b61a737867a1a05695/dist/vendors/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /dist/vendors/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MacKentoch/easyFormGenerator/d146d9ac1aba87f8730001b61a737867a1a05695/dist/vendors/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /dist/vendors/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MacKentoch/easyFormGenerator/d146d9ac1aba87f8730001b61a737867a1a05695/dist/vendors/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /dist/vendors/js/html5shiv.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @preserve HTML5 Shiv 3.7.3 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed 3 | */ 4 | !function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=t.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=t.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),t.elements=c+" "+a,j(b)}function f(a){var b=s[a[q]];return b||(b={},r++,a[q]=r,s[r]=b),b}function g(a,c,d){if(c||(c=b),l)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():p.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||o.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),l)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return t.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(t,b.frag)}function j(a){a||(a=b);var d=f(a);return!t.shivCSS||k||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),l||i(a,d),a}var k,l,m="3.7.3",n=a.html5||{},o=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,q="_html5shiv",r=0,s={};!function(){try{var a=b.createElement("a");a.innerHTML="",k="hidden"in a,l=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){k=!0,l=!0}}();var t={elements:n.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:m,shivCSS:n.shivCSS!==!1,supportsUnknownElements:l,shivMethods:n.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=t,j(b),"object"==typeof module&&module.exports&&(module.exports=t)}("undefined"!=typeof window?window:this,document); -------------------------------------------------------------------------------- /dist/vendors/js/loading-bar.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * angular-loading-bar v0.7.1 3 | * https://chieffancypants.github.io/angular-loading-bar 4 | * Copyright (c) 2015 Wes Cruver 5 | * License: MIT 6 | */ 7 | !function(){"use strict";angular.module("angular-loading-bar",["cfp.loadingBarInterceptor"]),angular.module("chieffancypants.loadingBar",["cfp.loadingBarInterceptor"]),angular.module("cfp.loadingBarInterceptor",["cfp.loadingBar"]).config(["$httpProvider",function(a){var b=["$q","$cacheFactory","$timeout","$rootScope","$log","cfpLoadingBar",function(b,c,d,e,f,g){function h(){d.cancel(j),g.complete(),l=0,k=0}function i(b){var d,e=c.get("$http"),f=a.defaults;!b.cache&&!f.cache||b.cache===!1||"GET"!==b.method&&"JSONP"!==b.method||(d=angular.isObject(b.cache)?b.cache:angular.isObject(f.cache)?f.cache:e);var g=void 0!==d?void 0!==d.get(b.url):!1;return void 0!==b.cached&&g!==b.cached?b.cached:(b.cached=g,g)}var j,k=0,l=0,m=g.latencyThreshold;return{request:function(a){return a.ignoreLoadingBar||i(a)||(e.$broadcast("cfpLoadingBar:loading",{url:a.url}),0===k&&(j=d(function(){g.start()},m)),k++,g.set(l/k)),a},response:function(a){return a&&a.config?(a.config.ignoreLoadingBar||i(a.config)||(l++,e.$broadcast("cfpLoadingBar:loaded",{url:a.config.url,result:a}),l>=k?h():g.set(l/k)),a):(f.error("Broken interceptor detected: Config object not supplied in response:\n https://github.com/chieffancypants/angular-loading-bar/pull/50"),a)},responseError:function(a){return a&&a.config?(a.config.ignoreLoadingBar||i(a.config)||(l++,e.$broadcast("cfpLoadingBar:loaded",{url:a.config.url,result:a}),l>=k?h():g.set(l/k)),b.reject(a)):(f.error("Broken interceptor detected: Config object not supplied in rejection:\n https://github.com/chieffancypants/angular-loading-bar/pull/50"),b.reject(a))}}}];a.interceptors.push(b)}]),angular.module("cfp.loadingBar",[]).provider("cfpLoadingBar",function(){this.includeSpinner=!0,this.includeBar=!0,this.latencyThreshold=100,this.startSize=.02,this.parentSelector="body",this.spinnerTemplate='
',this.loadingBarTemplate='
',this.$get=["$injector","$document","$timeout","$rootScope",function(a,b,c,d){function e(){k||(k=a.get("$animate"));var e=b.find(n).eq(0);c.cancel(m),r||(d.$broadcast("cfpLoadingBar:started"),r=!0,u&&k.enter(o,e,angular.element(e[0].lastChild)),t&&k.enter(q,e,angular.element(e[0].lastChild)),f(v))}function f(a){if(r){var b=100*a+"%";p.css("width",b),s=a,c.cancel(l),l=c(function(){g()},250)}}function g(){if(!(h()>=1)){var a=0,b=h();a=b>=0&&.25>b?(3*Math.random()+3)/100:b>=.25&&.65>b?3*Math.random()/100:b>=.65&&.9>b?2*Math.random()/100:b>=.9&&.99>b?.005:0;var c=h()+a;f(c)}}function h(){return s}function i(){s=0,r=!1}function j(){k||(k=a.get("$animate")),d.$broadcast("cfpLoadingBar:completed"),f(1),c.cancel(m),m=c(function(){var a=k.leave(o,i);a&&a.then&&a.then(i),k.leave(q)},500)}var k,l,m,n=this.parentSelector,o=angular.element(this.loadingBarTemplate),p=o.find("div").eq(0),q=angular.element(this.spinnerTemplate),r=!1,s=0,t=this.includeSpinner,u=this.includeBar,v=this.startSize;return{start:e,set:f,status:h,inc:g,complete:j,includeSpinner:this.includeSpinner,latencyThreshold:this.latencyThreshold,parentSelector:this.parentSelector,startSize:this.startSize}}]})}(); -------------------------------------------------------------------------------- /images/Paypal-button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MacKentoch/easyFormGenerator/d146d9ac1aba87f8730001b61a737867a1a05695/images/Paypal-button.png -------------------------------------------------------------------------------- /images/Paypal-button@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MacKentoch/easyFormGenerator/d146d9ac1aba87f8730001b61a737867a1a05695/images/Paypal-button@2x.png -------------------------------------------------------------------------------- /images/Paypal-button@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MacKentoch/easyFormGenerator/d146d9ac1aba87f8730001b61a737867a1a05695/images/Paypal-button@3x.png -------------------------------------------------------------------------------- /images/dragdropway_preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MacKentoch/easyFormGenerator/d146d9ac1aba87f8730001b61a737867a1a05695/images/dragdropway_preview.png -------------------------------------------------------------------------------- /images/easyFormViewerPreview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MacKentoch/easyFormGenerator/d146d9ac1aba87f8730001b61a737867a1a05695/images/easyFormViewerPreview.png -------------------------------------------------------------------------------- /images/emailAndValidation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MacKentoch/easyFormGenerator/d146d9ac1aba87f8730001b61a737867a1a05695/images/emailAndValidation.png -------------------------------------------------------------------------------- /images/languages.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MacKentoch/easyFormGenerator/d146d9ac1aba87f8730001b61a737867a1a05695/images/languages.png -------------------------------------------------------------------------------- /images/preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MacKentoch/easyFormGenerator/d146d9ac1aba87f8730001b61a737867a1a05695/images/preview.png -------------------------------------------------------------------------------- /jsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MacKentoch/easyFormGenerator/d146d9ac1aba87f8730001b61a737867a1a05695/jsconfig.json -------------------------------------------------------------------------------- /karma.conf.js: -------------------------------------------------------------------------------- 1 | // Reference: http://karma-runner.github.io/0.12/config/configuration-file.html 2 | module.exports = function karmaConfig (config) { 3 | config.set({ 4 | frameworks: [ 5 | // Reference: https://github.com/karma-runner/karma-jasmine 6 | // Set framework to jasmine 7 | 'jasmine' 8 | ], 9 | 10 | reporters: [ 11 | // Reference: https://github.com/mlex/karma-spec-reporter 12 | // Set reporter to print detailed results to console 13 | 'progress', 14 | 15 | // Reference: https://github.com/karma-runner/karma-coverage 16 | // Output code coverage files 17 | 'coverage' 18 | ], 19 | 20 | files: [ 21 | // Grab all files in the app folder that contain .spec. 22 | 'src/tests.webpack.js' 23 | ], 24 | 25 | preprocessors: { 26 | // Reference: http://webpack.github.io/docs/testing.html 27 | // Reference: https://github.com/webpack/karma-webpack 28 | // Convert files with webpack and load sourcemaps 29 | 'src/tests.webpack.js': ['webpack', 'sourcemap'] 30 | }, 31 | 32 | browsers: [ 33 | // Run tests using PhantomJS 34 | 'PhantomJS' 35 | ], 36 | 37 | singleRun: true, 38 | 39 | // Configure code coverage reporter 40 | coverageReporter: { 41 | dir: 'coverage/', 42 | reporters: [ 43 | {type: 'text-summary'}, 44 | {type: 'html'} 45 | ] 46 | }, 47 | 48 | webpack: require('./webpack.config'), 49 | 50 | // Hide webpack build information from output 51 | webpackMiddleware: { 52 | noInfo: 'errors-only' 53 | } 54 | }); 55 | }; 56 | -------------------------------------------------------------------------------- /preview/dist/eda.dragdropway.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":[],"names":[],"mappings":"","file":"eda.dragdropway.css","sourceRoot":""} -------------------------------------------------------------------------------- /preview/dist/eda.formviewer.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":[],"names":[],"mappings":"","file":"eda.formviewer.css","sourceRoot":""} -------------------------------------------------------------------------------- /preview/dist/eda.stepway.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":[],"names":[],"mappings":"","file":"eda.stepway.css","sourceRoot":""} -------------------------------------------------------------------------------- /preview/vendors/css/loading-bar.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * angular-loading-bar v0.7.1 3 | * https://chieffancypants.github.io/angular-loading-bar 4 | * Copyright (c) 2015 Wes Cruver 5 | * License: MIT 6 | */ 7 | 8 | #loading-bar,#loading-bar-spinner{pointer-events:none;-webkit-pointer-events:none;-webkit-transition:350ms linear all;-moz-transition:350ms linear all;-o-transition:350ms linear all;transition:350ms linear all}#loading-bar.ng-enter,#loading-bar.ng-leave.ng-leave-active,#loading-bar-spinner.ng-enter,#loading-bar-spinner.ng-leave.ng-leave-active{opacity:0}#loading-bar.ng-enter.ng-enter-active,#loading-bar.ng-leave,#loading-bar-spinner.ng-enter.ng-enter-active,#loading-bar-spinner.ng-leave{opacity:1}#loading-bar .bar{-webkit-transition:width 350ms;-moz-transition:width 350ms;-o-transition:width 350ms;transition:width 350ms;background:#29d;position:fixed;z-index:10002;top:0;left:0;width:100%;height:2px;border-bottom-right-radius:1px;border-top-right-radius:1px}#loading-bar .peg{position:absolute;width:70px;right:0;top:0;height:2px;opacity:.45;-moz-box-shadow:#29d 1px 0 6px 1px;-ms-box-shadow:#29d 1px 0 6px 1px;-webkit-box-shadow:#29d 1px 0 6px 1px;box-shadow:#29d 1px 0 6px 1px;-moz-border-radius:100%;-webkit-border-radius:100%;border-radius:100%}#loading-bar-spinner{display:block;position:fixed;z-index:10002;top:10px;left:10px}#loading-bar-spinner .spinner-icon{width:14px;height:14px;border:solid 2px transparent;border-top-color:#29d;border-left-color:#29d;border-radius:10px;-webkit-animation:loading-bar-spinner 400ms linear infinite;-moz-animation:loading-bar-spinner 400ms linear infinite;-ms-animation:loading-bar-spinner 400ms linear infinite;-o-animation:loading-bar-spinner 400ms linear infinite;animation:loading-bar-spinner 400ms linear infinite}@-webkit-keyframes loading-bar-spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-moz-keyframes loading-bar-spinner{0%{-moz-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(360deg);transform:rotate(360deg)}}@-o-keyframes loading-bar-spinner{0%{-o-transform:rotate(0deg);transform:rotate(0deg)}100%{-o-transform:rotate(360deg);transform:rotate(360deg)}}@-ms-keyframes loading-bar-spinner{0%{-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-ms-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes loading-bar-spinner{0%{transform:rotate(0deg);transform:rotate(0deg)}100%{transform:rotate(360deg);transform:rotate(360deg)}} -------------------------------------------------------------------------------- /preview/vendors/css/textAngular.min.css: -------------------------------------------------------------------------------- 1 | .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;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);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{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;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);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} -------------------------------------------------------------------------------- /preview/vendors/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MacKentoch/easyFormGenerator/d146d9ac1aba87f8730001b61a737867a1a05695/preview/vendors/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /preview/vendors/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MacKentoch/easyFormGenerator/d146d9ac1aba87f8730001b61a737867a1a05695/preview/vendors/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /preview/vendors/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MacKentoch/easyFormGenerator/d146d9ac1aba87f8730001b61a737867a1a05695/preview/vendors/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /preview/vendors/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MacKentoch/easyFormGenerator/d146d9ac1aba87f8730001b61a737867a1a05695/preview/vendors/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /preview/vendors/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MacKentoch/easyFormGenerator/d146d9ac1aba87f8730001b61a737867a1a05695/preview/vendors/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /preview/vendors/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MacKentoch/easyFormGenerator/d146d9ac1aba87f8730001b61a737867a1a05695/preview/vendors/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /preview/vendors/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MacKentoch/easyFormGenerator/d146d9ac1aba87f8730001b61a737867a1a05695/preview/vendors/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /preview/vendors/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MacKentoch/easyFormGenerator/d146d9ac1aba87f8730001b61a737867a1a05695/preview/vendors/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /preview/vendors/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MacKentoch/easyFormGenerator/d146d9ac1aba87f8730001b61a737867a1a05695/preview/vendors/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /preview/vendors/js/html5shiv.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @preserve HTML5 Shiv 3.7.3 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed 3 | */ 4 | !function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=t.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=t.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),t.elements=c+" "+a,j(b)}function f(a){var b=s[a[q]];return b||(b={},r++,a[q]=r,s[r]=b),b}function g(a,c,d){if(c||(c=b),l)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():p.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||o.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),l)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return t.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(t,b.frag)}function j(a){a||(a=b);var d=f(a);return!t.shivCSS||k||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),l||i(a,d),a}var k,l,m="3.7.3",n=a.html5||{},o=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,q="_html5shiv",r=0,s={};!function(){try{var a=b.createElement("a");a.innerHTML="",k="hidden"in a,l=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){k=!0,l=!0}}();var t={elements:n.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:m,shivCSS:n.shivCSS!==!1,supportsUnknownElements:l,shivMethods:n.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=t,j(b),"object"==typeof module&&module.exports&&(module.exports=t)}("undefined"!=typeof window?window:this,document); -------------------------------------------------------------------------------- /preview/vendors/js/loading-bar.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * angular-loading-bar v0.7.1 3 | * https://chieffancypants.github.io/angular-loading-bar 4 | * Copyright (c) 2015 Wes Cruver 5 | * License: MIT 6 | */ 7 | !function(){"use strict";angular.module("angular-loading-bar",["cfp.loadingBarInterceptor"]),angular.module("chieffancypants.loadingBar",["cfp.loadingBarInterceptor"]),angular.module("cfp.loadingBarInterceptor",["cfp.loadingBar"]).config(["$httpProvider",function(a){var b=["$q","$cacheFactory","$timeout","$rootScope","$log","cfpLoadingBar",function(b,c,d,e,f,g){function h(){d.cancel(j),g.complete(),l=0,k=0}function i(b){var d,e=c.get("$http"),f=a.defaults;!b.cache&&!f.cache||b.cache===!1||"GET"!==b.method&&"JSONP"!==b.method||(d=angular.isObject(b.cache)?b.cache:angular.isObject(f.cache)?f.cache:e);var g=void 0!==d?void 0!==d.get(b.url):!1;return void 0!==b.cached&&g!==b.cached?b.cached:(b.cached=g,g)}var j,k=0,l=0,m=g.latencyThreshold;return{request:function(a){return a.ignoreLoadingBar||i(a)||(e.$broadcast("cfpLoadingBar:loading",{url:a.url}),0===k&&(j=d(function(){g.start()},m)),k++,g.set(l/k)),a},response:function(a){return a&&a.config?(a.config.ignoreLoadingBar||i(a.config)||(l++,e.$broadcast("cfpLoadingBar:loaded",{url:a.config.url,result:a}),l>=k?h():g.set(l/k)),a):(f.error("Broken interceptor detected: Config object not supplied in response:\n https://github.com/chieffancypants/angular-loading-bar/pull/50"),a)},responseError:function(a){return a&&a.config?(a.config.ignoreLoadingBar||i(a.config)||(l++,e.$broadcast("cfpLoadingBar:loaded",{url:a.config.url,result:a}),l>=k?h():g.set(l/k)),b.reject(a)):(f.error("Broken interceptor detected: Config object not supplied in rejection:\n https://github.com/chieffancypants/angular-loading-bar/pull/50"),b.reject(a))}}}];a.interceptors.push(b)}]),angular.module("cfp.loadingBar",[]).provider("cfpLoadingBar",function(){this.includeSpinner=!0,this.includeBar=!0,this.latencyThreshold=100,this.startSize=.02,this.parentSelector="body",this.spinnerTemplate='
',this.loadingBarTemplate='
',this.$get=["$injector","$document","$timeout","$rootScope",function(a,b,c,d){function e(){k||(k=a.get("$animate"));var e=b.find(n).eq(0);c.cancel(m),r||(d.$broadcast("cfpLoadingBar:started"),r=!0,u&&k.enter(o,e,angular.element(e[0].lastChild)),t&&k.enter(q,e,angular.element(e[0].lastChild)),f(v))}function f(a){if(r){var b=100*a+"%";p.css("width",b),s=a,c.cancel(l),l=c(function(){g()},250)}}function g(){if(!(h()>=1)){var a=0,b=h();a=b>=0&&.25>b?(3*Math.random()+3)/100:b>=.25&&.65>b?3*Math.random()/100:b>=.65&&.9>b?2*Math.random()/100:b>=.9&&.99>b?.005:0;var c=h()+a;f(c)}}function h(){return s}function i(){s=0,r=!1}function j(){k||(k=a.get("$animate")),d.$broadcast("cfpLoadingBar:completed"),f(1),c.cancel(m),m=c(function(){var a=k.leave(o,i);a&&a.then&&a.then(i),k.leave(q)},500)}var k,l,m,n=this.parentSelector,o=angular.element(this.loadingBarTemplate),p=o.find("div").eq(0),q=angular.element(this.spinnerTemplate),r=!1,s=0,t=this.includeSpinner,u=this.includeBar,v=this.startSize;return{start:e,set:f,status:h,inc:g,complete:j,includeSpinner:this.includeSpinner,latencyThreshold:this.latencyThreshold,parentSelector:this.parentSelector,startSize:this.startSize}}]})}(); -------------------------------------------------------------------------------- /src/app/dragdropway/components/common/dragAndDropList/dragAndDropList.module.js: -------------------------------------------------------------------------------- 1 | import dndList, { 2 | DNDLIST_DIRECTIVE 3 | } from './dragAndDropList.dndlist.directive'; 4 | 5 | import dndDraggable, { 6 | DNDDRAGGABLE_DIRECTIVE 7 | } from './dragAndDropList.dndDraggable.directive'; 8 | 9 | const DRAG_DROP_LIST_MODULE = 'dndLists.module'; 10 | 11 | export default angular 12 | .module(DRAG_DROP_LIST_MODULE, []) 13 | .directive(DNDLIST_DIRECTIVE, dndList) 14 | .directive(DNDDRAGGABLE_DIRECTIVE, dndDraggable) 15 | .factory('dndDragTypeWorkaround', function(){ return {}; }) 16 | .factory('dndDropEffectWorkaround', function(){ return {}; }); 17 | -------------------------------------------------------------------------------- /src/app/dragdropway/components/common/edaTrustThisFilter/edaDragDropWay.trustThis.filter.js: -------------------------------------------------------------------------------- 1 | const TRUST_THIS_FILTER_NAME = 'trustThis'; 2 | 3 | function trustThis($sce) { 4 | return (value, type) => $sce.trustAs(type || 'html', value); 5 | } 6 | 7 | trustThis.$inject = [ 8 | '$sce' 9 | ]; 10 | 11 | export default trustThis; 12 | 13 | export { 14 | TRUST_THIS_FILTER_NAME 15 | }; -------------------------------------------------------------------------------- /src/app/dragdropway/components/common/edaTrustThisFilter/edaDragDropWay.trustThis.module.js: -------------------------------------------------------------------------------- 1 | import trustThis, { 2 | TRUST_THIS_FILTER_NAME 3 | } from './edaDragDropWay.trustThis.filter'; 4 | 5 | 6 | const TRUST_THIS_FILTER_MODULE = 'edaDragDropWay.trustThis.filter'; 7 | 8 | export default angular 9 | .module(TRUST_THIS_FILTER_MODULE, []) 10 | .filter(TRUST_THIS_FILTER_NAME, trustThis); 11 | -------------------------------------------------------------------------------- /src/app/dragdropway/components/common/pageslide/pageslide.module.js: -------------------------------------------------------------------------------- 1 | import pageslide, { 2 | PAGE_SLIDE_DIRECTIVE 3 | } from './pageslide.directive'; 4 | 5 | 6 | const PAGE_SLIDE_MODULE = 'pageslide.module'; 7 | 8 | export default angular 9 | .module(PAGE_SLIDE_MODULE, []) 10 | .directive(PAGE_SLIDE_DIRECTIVE, pageslide); 11 | -------------------------------------------------------------------------------- /src/app/dragdropway/components/common/rightclick/edaDragDropWay.rightClick.directive.js: -------------------------------------------------------------------------------- 1 | const EDA_RIGHT_CLICK_DIRECTIVE = 'edaRightClick'; 2 | 3 | function edaRightClick($parse){ 4 | 5 | let directive = { 6 | restrict : 'A', 7 | link : linkFct 8 | }; 9 | return directive; 10 | 11 | function linkFct(scope, element, attrs){ 12 | let fn = $parse(attrs.edaRightClick); 13 | let columnIndex = $parse(attrs.edaRightClickColIndex); 14 | let fctSetRightclicked = $parse(attrs.edaSetRightClicked); 15 | /** 16 | * on right click event manage 17 | * - open edit panel through attrs.edaRightClick function 18 | * - set rightCliked attribute (to true) to control (in dragDropModel) 19 | */ 20 | element.on('contextmenu', (event)=>{ 21 | scope.$apply(() =>{ 22 | event.preventDefault(); 23 | if (columnIndex(scope) === 1) fctSetRightclicked(scope, {}); //right click limited to template column (index = 1) 24 | if (columnIndex(scope) === 1) fn(scope, {$event:event}); //right click limited to template column (index = 1) 25 | }); 26 | }); 27 | 28 | } 29 | 30 | } 31 | 32 | edaRightClick.$inject = [ 33 | '$parse' 34 | ]; 35 | 36 | export default edaRightClick; 37 | 38 | 39 | export { 40 | EDA_RIGHT_CLICK_DIRECTIVE 41 | }; 42 | -------------------------------------------------------------------------------- /src/app/dragdropway/components/common/rightclick/edaDragDropWay.rightClick.module.js: -------------------------------------------------------------------------------- 1 | import edaRightClick, { 2 | EDA_RIGHT_CLICK_DIRECTIVE 3 | } from './edaDragDropWay.rightClick.directive'; 4 | 5 | import ddItemRightClickedManager, { 6 | EDA_RIGHT_CLICKED_MANAGER_SERVICE 7 | } from './edaDragDropWay.rightClick.service'; 8 | 9 | 10 | const EDA_RIGHT_CLICK_MODULE = 'eda.right.click.module'; 11 | 12 | 13 | export default angular 14 | .module(EDA_RIGHT_CLICK_MODULE, []) 15 | .directive(EDA_RIGHT_CLICK_DIRECTIVE, edaRightClick) 16 | .service(EDA_RIGHT_CLICKED_MANAGER_SERVICE, ddItemRightClickedManager); -------------------------------------------------------------------------------- /src/app/dragdropway/components/common/rightclick/edaDragDropWay.rightClick.service.js: -------------------------------------------------------------------------------- 1 | const EDA_RIGHT_CLICKED_MANAGER_SERVICE = 'ddItemRightClickedManager'; 2 | 3 | class ddItemRightClickedManager{ 4 | constructor(){ 5 | this.init(); 6 | } 7 | 8 | init(){ 9 | 10 | } 11 | 12 | /** 13 | * setUnRightClicked 14 | * set unSelected (see edaRightClick directive) 15 | * 16 | * used in edaEditcontroller when droping control 17 | */ 18 | setUnRightClicked(dragDropModelItem){ 19 | dragDropModelItem.rightCliked = false; 20 | } 21 | 22 | /** 23 | * resetAllDragDropItemSelectedState 24 | * 25 | * simply reset (=set to false) all item.rightCliked 26 | * in edit column (dragable column) 27 | * 28 | * used in edaEditPanel when closeEditPanel() called 29 | */ 30 | resetAllDragDropItemSelectedState(dragDropModel){ 31 | angular.forEach(dragDropModel[1] ,(line)=>{ 32 | angular.forEach(line, (item)=>item.rightCliked = false); 33 | }); 34 | 35 | } 36 | 37 | 38 | } 39 | 40 | ddItemRightClickedManager.$inject = []; 41 | 42 | export default ddItemRightClickedManager; 43 | 44 | export { 45 | EDA_RIGHT_CLICKED_MANAGER_SERVICE 46 | }; -------------------------------------------------------------------------------- /src/app/dragdropway/components/configurationModelProxy/edaDragDropWay.configurationModelProxy.module.js: -------------------------------------------------------------------------------- 1 | import ddModelConfModelProxyService, { 2 | DRAG_DROP_CONFIG_PROXY_SERVICE 3 | } from './edaDragDropWay.configurationModelProxy.service'; 4 | 5 | const EDA_CONFIG_PROXY_MODULE = 'eda.config.proxy.module'; 6 | 7 | export default angular 8 | .module(EDA_CONFIG_PROXY_MODULE, []) 9 | .service(DRAG_DROP_CONFIG_PROXY_SERVICE, ddModelConfModelProxyService); -------------------------------------------------------------------------------- /src/app/dragdropway/components/dragdrop/ddContentCounter/edaDragDropWay.dragdrop.ddContentCounter.directive.js: -------------------------------------------------------------------------------- 1 | const DD_CONTENT_COUNTER_DIRECTIVE = 'ddContentCounter'; 2 | 3 | function ddContentCounter(dragDropItemCounterService, $timeout){ 4 | let directive ={ 5 | restrict : 'A', 6 | scope : { 7 | valueWhenPlaceholder : '@ddValueWhenPlaceholder', 8 | valueWhendragging : '@ddValueWhenDragging', 9 | fullModel : '=ddFullModel', 10 | currentIndex : '@ddContentCounterCurrentIndex', 11 | parentIndex : '@ddContentCounterParentIndex', 12 | forceRefresh : '=ddContentCounterForceCssRefresh' 13 | }, 14 | link : linkfct 15 | }; 16 | return directive; 17 | 18 | function linkfct($scope, element){ 19 | let timer; 20 | // watch children length change : to update css item class 21 | $scope.$watch(()=>element[0].children.length,(newValue, oldValue)=>{ 22 | if (newValue !== oldValue) { 23 | let newRealCount = 0; 24 | let listClassForThisRow = []; 25 | for (let i = element[0].children.length - 1; i >= 0; i--) { 26 | if(dragDropItemCounterService.isHtmlElementToCount(element[0].children[i].classList)){ 27 | newRealCount++; 28 | listClassForThisRow.push( {item: i, isReal : true} ); 29 | }else{ 30 | listClassForThisRow.push( {item: i, isReal : false} ); 31 | } 32 | } 33 | $scope.contentRealCount = newRealCount; 34 | // a timer otherwise won't refresh everytime 35 | timer = $timeout(() => { 36 | dragDropItemCounterService.updateLineItemCss($scope.fullModel, listClassForThisRow, $scope.parentIndex, $scope.currentIndex, newRealCount); 37 | }, 20); 38 | 39 | } 40 | }); 41 | 42 | $scope.$on('$destroy', ()=>{ 43 | $timeout.cancel(timer);} 44 | ); 45 | } 46 | 47 | } 48 | 49 | ddContentCounter.$inject = [ 50 | 'dragDropItemCounterService', 51 | '$timeout' 52 | ]; 53 | 54 | export default ddContentCounter; 55 | 56 | export { 57 | DD_CONTENT_COUNTER_DIRECTIVE 58 | }; -------------------------------------------------------------------------------- /src/app/dragdropway/components/dragdrop/ddContentCounter/edaDragDropWay.dragdrop.ddContentCounter.service.js: -------------------------------------------------------------------------------- 1 | const DRAG_DROP_ITEM_COUNTER_SERVICE = 'dragDropItemCounterService'; 2 | 3 | class dragDropItemCounterService{ 4 | 5 | constructor(easyFormDragWayConfig){ 6 | this.easyFormDragWayConfig = easyFormDragWayConfig; 7 | this.init(); 8 | } 9 | 10 | init(){ 11 | this._modelItemRealCounter = []; 12 | this._itemsNotToCount = angular.copy(this.easyFormDragWayConfig.getItemsNotToCount()); 13 | } 14 | 15 | getItemsNotToCount(){ 16 | return this._itemsNotToCount; 17 | } 18 | 19 | getModelItemsRealCounter(){ 20 | return this._modelItemRealCounter; 21 | } 22 | 23 | isHtmlElementToCount(htmlvalue){ 24 | let isToCount = true; 25 | if (htmlvalue.length > 0) { 26 | angular.forEach(this._itemsNotToCount, (value)=>{ 27 | for (let classes = htmlvalue.length - 1; classes >= 0; classes--) { 28 | if (htmlvalue[classes] === value) isToCount = isToCount && false; 29 | } 30 | }); 31 | } 32 | return isToCount; 33 | } 34 | 35 | updateLineItemCss(fullModel, listCssToApply, columIndex, lineIndex, realCount){ 36 | if (typeof fullModel !== 'undefined' && 37 | typeof listCssToApply !== 'undefined' && 38 | typeof columIndex !== 'undefined' && 39 | typeof lineIndex !== 'undefined' && 40 | typeof realCount !== 'undefined') { 41 | for (let i = fullModel[columIndex][lineIndex].length - 1; i >= 0; i--) { 42 | for (let j = 0; j < listCssToApply.length; j++) { 43 | if( listCssToApply[j].item === i && 44 | listCssToApply[j].isReal === true){ 45 | fullModel[columIndex][lineIndex][i].cssClass = this.easyFormDragWayConfig.getItemCssDependingNumberItemsInRow(realCount); 46 | } 47 | } 48 | } 49 | return true; 50 | } 51 | } 52 | 53 | 54 | } 55 | 56 | dragDropItemCounterService.$inject = [ 57 | 'easyFormDragWayConfig' 58 | ]; 59 | 60 | export default dragDropItemCounterService; 61 | 62 | export { 63 | DRAG_DROP_ITEM_COUNTER_SERVICE 64 | }; -------------------------------------------------------------------------------- /src/app/dragdropway/components/dragdrop/ddDecorContainer/edaDragDropWay.dragdrop.ddDecorContainer.controller.js: -------------------------------------------------------------------------------- 1 | /* global angular */ 2 | const DD_DECOR_CONTAINER_CONTROLLER_NAME = 'ddDecorContainerController'; 3 | const DD_DECOR_CONTAINER_CONTROLLERAS_NAME = 'ddDecorContainerCtrl'; 4 | 5 | class ddDecorContainerController{ 6 | 7 | constructor(){ 8 | this.init(); 9 | } 10 | 11 | init(){ 12 | this.config = angular.extend({}, { isEnabled : false }); 13 | /** 14 | * TODO (low priority) : make icon css configurable (provider) 15 | */ 16 | this.icons = angular.extend({}, { 17 | closedClass : 'glyphicon glyphicon-eye-open', 18 | opened : 'glyphicon glyphicon-eye-close' 19 | }); 20 | } 21 | 22 | collapseFct(){ 23 | this.collpaseAll({exceptThisOne: this.styleParam.WhenIndex}); //note : collpaseAll function is boundToController from directive attribute : 'collpaseAll' : '&ddCollapseAll' 24 | this.isCollapsed = !this.isCollapsed; 25 | this.isStillCollapsed = this.isCollapsed; //note : isStillCollapsed is boundToController from directive attribute : 'isStillCollapsed' : '=ddContainerIsCollpased', 26 | } 27 | 28 | currentIconClass(){ 29 | if (this.isCollapsed) { 30 | return this.icons.closedClass; 31 | }else{ 32 | return this.icons.opened; 33 | } 34 | } 35 | 36 | } 37 | 38 | export default ddDecorContainerController; 39 | 40 | export { 41 | DD_DECOR_CONTAINER_CONTROLLER_NAME, 42 | DD_DECOR_CONTAINER_CONTROLLERAS_NAME 43 | }; 44 | -------------------------------------------------------------------------------- /src/app/dragdropway/components/dragdrop/ddDecorContainer/edaDragDropWay.dragdrop.ddDecorContainer.template.html: -------------------------------------------------------------------------------- 1 |
2 |
6 | 9 |   10 | {{ddDecorContainerCtrl.currentTitle}} 11 |
12 |
13 |
14 |
15 |
16 | -------------------------------------------------------------------------------- /src/app/dragdropway/components/dragdrop/ddDecorDropZone/edaDragDropWay.dragdrop.ddDecorDropZone.directive.js: -------------------------------------------------------------------------------- 1 | /* global angular */ 2 | import ddDecorDropZoneTemplate from './edaDragDropWay.dragdrop.ddDecorDropZone.template.html'; 3 | 4 | const DD_DECOR_DROPZONE_DIRECTIVE = 'ddDecorDropZone'; 5 | 6 | function ddDecorDropZone(){ 7 | let directive = { 8 | restrict : 'A', 9 | template : ddDecorDropZoneTemplate, 10 | scope : { 11 | 'styleParam' : '=ddDropZoneProperties', 12 | 'verboseMode' : '@ddDropZoneVerboseMode', 13 | 'currentIndex' : '@ddDropZoneCurrentIndex', 14 | 'addNewLineFct' : '&ddDropZoneAddNewLine' 15 | }, 16 | transclude : true, 17 | link : linkfct 18 | }; 19 | return directive; 20 | 21 | function linkfct($scope){ 22 | 23 | let verboseModeActive = $scope.verboseMode; 24 | let currentIndex = $scope.currentIndex; 25 | 26 | $scope.headerConfig = { 27 | HeaderButtonVisible : false, 28 | affixAttr : 'bs-affix', 29 | affixEnabled : false 30 | }; 31 | /** 32 | * verbose mode : just for dev 33 | */ 34 | if (verboseModeActive !== '') { 35 | let verbose = angular.lowercase(verboseModeActive); 36 | if (verbose === 'true' || verbose === '1') { 37 | /* eslint no-console:0 */ 38 | console.dir({ 39 | whoAmI : 'I am verbose from ddDecorDropZone link', 40 | verbodeMode : verbose, 41 | ParentParentIndex : $scope.$parent.$parent.$index, 42 | ParentIndex : $scope.$parent.$index, 43 | currentIndex : currentIndex, 44 | styleParam : $scope.styleParam 45 | }); 46 | } 47 | } 48 | 49 | 50 | if (typeof currentIndex !== 'undefined') { 51 | if (currentIndex !== '') { 52 | // apply title 53 | if (typeof $scope.styleParam.title !== 'undefined') $scope.currentTitle = $scope.styleParam.title; 54 | //apply font-awesome 55 | if (typeof $scope.styleParam.fontAwesomeIcon !== 'undefined') $scope.currentFontAwesome = $scope.styleParam.fontAwesomeIcon; 56 | //show add new line button 57 | if (currentIndex === '1') $scope.headerConfig.HeaderButtonVisible = true; 58 | } 59 | } 60 | 61 | } 62 | 63 | } 64 | 65 | 66 | ddDecorDropZone.$inject = []; 67 | 68 | export default ddDecorDropZone; 69 | 70 | export { 71 | DD_DECOR_DROPZONE_DIRECTIVE 72 | }; 73 | -------------------------------------------------------------------------------- /src/app/dragdropway/components/dragdrop/ddDecorDropZone/edaDragDropWay.dragdrop.ddDecorDropZone.template.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 |

6 |   7 | {{currentTitle}} 8 |
9 | 16 |
17 |

18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 | -------------------------------------------------------------------------------- /src/app/dragdropway/components/dragdrop/ddDecorItem/edaDragDropWay.dragdrop.ddDecorItem.directive.js: -------------------------------------------------------------------------------- 1 | 2 | import dragdropItemTemplate from './edaDragDropWay.dragdrop.ddDecorItem.template.html'; 3 | 4 | const DRAG_DROP_DECOR_ITEM = 'ddDecorItem'; 5 | 6 | function ddDecorItem(easyFormDragWayConfig){ 7 | let directive = { 8 | restrict : 'A', 9 | scope : { 10 | 'verboseMode' : '@ddItemVerboseMode', 11 | 'currentIndex' : '@ddItemCurrentIndex', 12 | 'parentIndex' : '@ddItemParentIndex', 13 | 'parentParentIndex' : '@ddItemParentParentIndex', 14 | 'lineItemsCount' : '@ddItemsCount', 15 | 'cssClass' : '@ddItemCssClass' 16 | }, 17 | template : dragdropItemTemplate, 18 | transclude : true, 19 | link : linkfct 20 | }; 21 | return directive; 22 | 23 | function linkfct($scope, element, attrs, ctrl, transclude){ 24 | let verboseModeActive = $scope.verboseMode; 25 | let currentIndex = $scope.currentIndex; 26 | let parentIndex = $scope.parentIndex; 27 | let listClass = easyFormDragWayConfig.getDistinctItemCssClass(); 28 | 29 | 30 | /** 31 | * init css class 32 | */ 33 | angular.forEach(listClass, (css)=>element.removeClass(css)); 34 | element.addClass($scope.cssClass); 35 | /** 36 | * update css class 37 | */ 38 | $scope.$watch('cssClass', (newValue, oldValue)=>{ 39 | if(newValue !== oldValue){ 40 | /** 41 | * update css class 42 | */ 43 | angular.forEach(listClass, (css)=>element.removeClass(css)); 44 | element.addClass(newValue); 45 | } 46 | }); 47 | 48 | /** 49 | * verbose mode : just for dev 50 | */ 51 | if (verboseModeActive !== '') { 52 | let verbose = angular.lowercase(verboseModeActive); 53 | if (verbose === 'true' || verbose === '1') { 54 | /* eslint no-console:0 */ 55 | console.dir({ 56 | whoAmI : 'I am verbose from ddDecorItem directive link', 57 | verbodeMode : verbose, 58 | ParentParentIndex : $scope.$parent.$parent.$index, 59 | ParentIndex : parentIndex, 60 | parentParentIndex : $scope.parentParentIndex, 61 | currentIndex : currentIndex, 62 | lineItemsCount : $scope.lineItemsCount 63 | }); 64 | } 65 | } 66 | /** 67 | * control column : apply css class to item 68 | */ 69 | if ($scope.parentParentIndex === '0') element.addClass(listClass[0]); 70 | /** 71 | * prevent transclusion creating child scope 72 | * 73 | * 74 | * NOTE :if you want to know more about what I'm saying : check this nice tip on the subject : 75 | * http://angular-tips.com/blog/2014/03/transclusion-and-scopes/ 76 | */ 77 | transclude($scope.$parent, (contentClone)=>{ 78 | /** 79 | * transclusion will append content to '
' 80 | */ 81 | let childDiv = angular.element(element.children()[0]); 82 | childDiv.append(contentClone); 83 | }); 84 | } 85 | 86 | } 87 | 88 | 89 | ddDecorItem.$inject = [ 90 | 'easyFormDragWayConfig' 91 | ]; 92 | 93 | export default ddDecorItem; 94 | 95 | export { 96 | DRAG_DROP_DECOR_ITEM 97 | }; 98 | 99 | -------------------------------------------------------------------------------- /src/app/dragdropway/components/dragdrop/ddDecorItem/edaDragDropWay.dragdrop.ddDecorItem.service.js: -------------------------------------------------------------------------------- 1 | const DRAG_DROP_ITEM_DECOR_SERVICE = 'dragDropItemDecorationService'; 2 | 3 | class dragDropItemDecorationService { 4 | 5 | constructor(easyFormDragWayConfig){ 6 | this.easyFormDragWayConfig = easyFormDragWayConfig; 7 | this.init(); 8 | } 9 | 10 | init(){ 11 | this._listItemClass = [].concat(this.easyFormDragWayConfig.getListItemCssClass()); 12 | } 13 | 14 | getListClass(){ 15 | return this._listItemClass; 16 | } 17 | 18 | getCssClassWhenNumberItemsInRowIs(thisNumber){ 19 | return this.easyFormDragWayConfig.getItemCssDependingNumberItemsInRow(thisNumber); 20 | } 21 | 22 | applyCssClassWholeLine(model, indexColumn, indexLine, numberItems, restrictToThisIndexColumn){ 23 | if (typeof numberItems !== 'undefined' && 24 | typeof indexLine !== 'undefined' && 25 | typeof indexColumn !== 'undefined' && 26 | typeof model !== 'undefined' && 27 | typeof restrictToThisIndexColumn !== 'undefined') { 28 | if (indexColumn === restrictToThisIndexColumn) { 29 | for (let i = model[indexColumn][indexLine].length - 1; i >= 0; i--) { 30 | model[indexColumn][indexLine][i].cssClass = this.easyFormDragWayConfig.getItemCssDependingNumberItemsInRow(numberItems); 31 | } 32 | } 33 | return true; 34 | }else{ 35 | return false; 36 | } 37 | } 38 | 39 | updateCssClassWholeColumn(model, indexColumn){ 40 | if (typeof indexColumn !== 'undefined' && 41 | typeof model !== 'undefined') { 42 | for (let cpt = model[indexColumn].length - 1; cpt >= 0; cpt--) { 43 | for (let i = model[indexColumn][cpt].length - 1; i >= 0; i--) { 44 | model[indexColumn][cpt][i].cssClass = this.easyFormDragWayConfig.getItemCssDependingNumberItemsInRow(model[indexColumn][cpt].length); 45 | } 46 | } 47 | return true; 48 | }else{ 49 | return false; 50 | } 51 | } 52 | 53 | 54 | } 55 | 56 | dragDropItemDecorationService.$inject = [ 57 | 'easyFormDragWayConfig' 58 | ]; 59 | 60 | export default dragDropItemDecorationService; 61 | 62 | export { 63 | DRAG_DROP_ITEM_DECOR_SERVICE 64 | }; 65 | 66 | -------------------------------------------------------------------------------- /src/app/dragdropway/components/dragdrop/ddDecorItem/edaDragDropWay.dragdrop.ddDecorItem.template.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | -------------------------------------------------------------------------------- /src/app/dragdropway/components/dragdrop/ddDecorLine/edaDragDropWay.dragdrop.ddDecorLine.template.html: -------------------------------------------------------------------------------- 1 |
5 | 14 |
15 |
16 | -------------------------------------------------------------------------------- /src/app/dragdropway/components/dragdrop/ddNoEditableControl/edaDragDropWay.dragdrop.ddNoEditableControl.directive.js: -------------------------------------------------------------------------------- 1 | const DRAG_DROP_NO_EDITABLE_CONTROL = 'ddNoEditableControl'; 2 | 3 | function ddNoEditableControl() { 4 | let directive = { 5 | restrict : 'A', 6 | link : linkfct 7 | }; 8 | return directive; 9 | 10 | function linkfct($scope, element) { 11 | element.on('click', (event)=>event.preventDefault()); 12 | } 13 | } 14 | 15 | ddNoEditableControl.$inject = []; 16 | 17 | export default ddNoEditableControl; 18 | 19 | export { 20 | DRAG_DROP_NO_EDITABLE_CONTROL 21 | }; 22 | -------------------------------------------------------------------------------- /src/app/dragdropway/components/dragdrop/edaDragDropWay.dragdrop.module.js: -------------------------------------------------------------------------------- 1 | /* global angular */ 2 | import ddContentCounter, { 3 | DD_CONTENT_COUNTER_DIRECTIVE 4 | } from './ddContentCounter/edaDragDropWay.dragdrop.ddContentCounter.directive'; 5 | import dragDropItemCounterService, { 6 | DRAG_DROP_ITEM_COUNTER_SERVICE 7 | } from './ddContentCounter/edaDragDropWay.dragdrop.ddContentCounter.service'; 8 | import ddDecorContainerDirective, { 9 | DD_DECOR_CONTAINER_DIRECTIVE 10 | } from './ddDecorContainer/edaDragDropWay.dragdrop.ddDecorContainer.directive'; 11 | import ddDecorContainerController, { 12 | DD_DECOR_CONTAINER_CONTROLLER_NAME 13 | } from './ddDecorContainer/edaDragDropWay.dragdrop.ddDecorContainer.controller'; 14 | import ddDecorDropZone, { 15 | DD_DECOR_DROPZONE_DIRECTIVE 16 | } from './ddDecorDropZone/edaDragDropWay.dragdrop.ddDecorDropZone.directive'; 17 | import ddDecorItem, { 18 | DRAG_DROP_DECOR_ITEM 19 | } from './ddDecorItem/edaDragDropWay.dragdrop.ddDecorItem.directive'; 20 | import dragDropItemDecorationService, { 21 | DRAG_DROP_ITEM_DECOR_SERVICE 22 | } from './ddDecorItem/edaDragDropWay.dragdrop.ddDecorItem.service'; 23 | import ddDecorLine, { 24 | DRAG_DROP_DECOR_LINE 25 | } from './ddDecorLine/edaDragDropWay.dragdrop.ddDecorLine.directive'; 26 | 27 | import ddNoEditableControl, { 28 | DRAG_DROP_NO_EDITABLE_CONTROL 29 | } from './ddNoEditableControl/edaDragDropWay.dragdrop.ddNoEditableControl.directive'; 30 | 31 | 32 | const DRAGDROP_MODULE = 'edaDragDropWay.dragdrop.module'; 33 | 34 | export default angular 35 | .module(DRAGDROP_MODULE, []) 36 | .directive(DD_CONTENT_COUNTER_DIRECTIVE, ddContentCounter) 37 | .controller(DD_DECOR_CONTAINER_CONTROLLER_NAME, ddDecorContainerController) 38 | .directive(DD_DECOR_CONTAINER_DIRECTIVE, ddDecorContainerDirective) 39 | .directive(DD_DECOR_DROPZONE_DIRECTIVE, ddDecorDropZone) 40 | .directive(DRAG_DROP_DECOR_ITEM, ddDecorItem) 41 | .service(DRAG_DROP_ITEM_DECOR_SERVICE, dragDropItemDecorationService) 42 | .directive(DRAG_DROP_NO_EDITABLE_CONTROL, ddNoEditableControl) 43 | .service(DRAG_DROP_ITEM_COUNTER_SERVICE, dragDropItemCounterService) 44 | .directive(DRAG_DROP_DECOR_LINE, ddDecorLine) 45 | ; -------------------------------------------------------------------------------- /src/app/dragdropway/components/edaDragDropWayEasyFormGen/edaDragDropWay.edaDragdropWayEasyFormGen.controller.helpers.js: -------------------------------------------------------------------------------- 1 | /* global angular */ 2 | const DEBUG_MODEL = { 3 | showDebug : false, 4 | configurationModelNumberofLines : 1 5 | }; 6 | const initDebugModel = () => angular.copy(DEBUG_MODEL); 7 | 8 | 9 | 10 | const DEFAULT_TAB_MODEL = { 11 | editTab : { 12 | active : true 13 | }, 14 | previewTab : { 15 | active : false, 16 | tabVisible : true, 17 | modelsVisible : true 18 | } 19 | }; 20 | 21 | const initTabModel = (isPreviewPanelVisible, arePreviewModelsVisible) => { 22 | let _tabModel = angular.copy(DEFAULT_TAB_MODEL); 23 | angular.extend(_tabModel.previewTab, { 24 | tabVisible : isPreviewPanelVisible, 25 | modelsVisible : arePreviewModelsVisible 26 | }); 27 | return _tabModel; 28 | }; 29 | 30 | 31 | const COLUMN_TEMPLATE = { 32 | numColumn : -1, 33 | exist :true, 34 | control : { 35 | type :'none', 36 | key : 'none', 37 | subtype : 'none' 38 | // templateOptions: { 39 | // label: 'none', 40 | // placeholder: 'none', 41 | // required: false, 42 | // description: 'Descriptive text' 43 | // } 44 | } 45 | }; 46 | const initColumnTemplate = () => angular.copy(COLUMN_TEMPLATE); 47 | 48 | 49 | const LINE_TEMPLATE = { 50 | line:-1, 51 | activeColumn : 1, 52 | columns: [ 53 | { 54 | numColumn: 1, 55 | exist:true, 56 | control: { 57 | type:'none', 58 | key: 'none' 59 | // templateOptions: { 60 | // label: 'none', 61 | // placeholder: 'none', 62 | // required: false, 63 | // description: 'Descriptive text' 64 | // } 65 | } 66 | } 67 | ] 68 | }; 69 | const initLineTemplate = () => angular.copy(LINE_TEMPLATE); 70 | 71 | 72 | const DEFAULT_IHM_MODEL = { 73 | preview : { 74 | formlyModelViewExpanded : true, 75 | formlyFieldsViewExpanded : true, 76 | customizeFormButtonsExpanded : true, 77 | saveThisFormExpanded : true 78 | } 79 | }; 80 | 81 | 82 | const initIhmModel = () => angular.copy(DEFAULT_IHM_MODEL); 83 | 84 | export { 85 | initDebugModel, 86 | initTabModel, 87 | initColumnTemplate, 88 | initLineTemplate, 89 | initIhmModel 90 | }; -------------------------------------------------------------------------------- /src/app/dragdropway/components/edaDragDropWayEasyFormGen/edaDragDropWay.edaDragdropWayEasyFormGen.module.js: -------------------------------------------------------------------------------- 1 | /* global angular */ 2 | 3 | import easyFormDragWayConfig, { 4 | EASY_FORM_DRAG_DROP_WAY_CONFIG_NAME 5 | } from './edaDragDropWay.edaDragdropWayEasyFormGen.provider'; 6 | import edaDragDropWayEasyFormGenCtrl, { 7 | DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLER 8 | } from './edaDragDropWay.edaDragdropWayEasyFormGen.controller'; 9 | import edaDragdropWayEasyFormGen, { 10 | EDA_DRAGDROP_WAY_EASY_FORM_GEN_DIRECTIVE 11 | } from './edaDragDropWay.edaDragdropWayEasyFormGen.directive'; 12 | 13 | 14 | const DRAGDROP_MODULE = 'edaDragDropWay.main.module'; 15 | 16 | export default angular 17 | .module(DRAGDROP_MODULE, []) 18 | .provider(EASY_FORM_DRAG_DROP_WAY_CONFIG_NAME, easyFormDragWayConfig) 19 | .controller(DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLER, edaDragDropWayEasyFormGenCtrl) 20 | .directive(EDA_DRAGDROP_WAY_EASY_FORM_GEN_DIRECTIVE, edaDragdropWayEasyFormGen); -------------------------------------------------------------------------------- /src/app/dragdropway/components/edaDragDropWayEasyFormGen/jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES6", 4 | "module": "commonjs" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/app/dragdropway/components/formlyProxy/edaDragDropWay.formlyProxy.formFieldManage.module.js: -------------------------------------------------------------------------------- 1 | import formFieldManage, { 2 | FORM_FIELD_MANAGE_SERVICE 3 | } from './edaDragDropWay.formlyProxy.formFieldManage.service'; 4 | 5 | import EasyFormGenFormlyBindingModels, { 6 | EASY_FORM_FORMLY_BINDING_MODEL_PROVIDER 7 | } from './edaDragDropWay.formlyProxy.formFieldManage.provider'; 8 | 9 | 10 | 11 | const FORMLY_PROXY_MODULE = ''; 12 | 13 | export default angular 14 | .module(FORMLY_PROXY_MODULE, []) 15 | .service(FORM_FIELD_MANAGE_SERVICE, formFieldManage) 16 | .provider(EASY_FORM_FORMLY_BINDING_MODEL_PROVIDER, EasyFormGenFormlyBindingModels); -------------------------------------------------------------------------------- /src/app/dragdropway/components/leftPanel/BasicSelectControl/edaDragDropWay.leftpanel.basicSelectControl.directive.js: -------------------------------------------------------------------------------- 1 | import leftPanelBasicSelectControlTemplate from './edaDragDropWay.leftpanel.basicSelectControl.template.html'; 2 | 3 | const LEFT_PANEL_BASIC_SELECT_CONTROL_DIRECTIVE = 'leftPanelBasicSelectControl'; 4 | 5 | function leftPanelBasicSelectControl() { 6 | let directive = { 7 | restrict : 'E', 8 | template : leftPanelBasicSelectControlTemplate 9 | }; 10 | return directive; 11 | } 12 | 13 | leftPanelBasicSelectControl.$inject = []; 14 | 15 | export default leftPanelBasicSelectControl; 16 | 17 | export { 18 | LEFT_PANEL_BASIC_SELECT_CONTROL_DIRECTIVE 19 | }; 20 | -------------------------------------------------------------------------------- /src/app/dragdropway/components/leftPanel/BlankControl/edaDragDropWay.leftpanel.blankControl.directive.js: -------------------------------------------------------------------------------- 1 | import leftPanelBlankControlTemplate from './edaDragDropWay.leftpanel.blankControl.template.html'; 2 | 3 | const LEFT_PANEL_BLANK_CONTROL_DIRECTIVE = 'leftPanelBlankControl'; 4 | 5 | function leftPanelBlankControl() { 6 | let directive = { 7 | restrict : 'E', 8 | template : leftPanelBlankControlTemplate 9 | }; 10 | return directive; 11 | } 12 | 13 | leftPanelBlankControl.$inject = []; 14 | 15 | export default leftPanelBlankControl; 16 | 17 | export { 18 | LEFT_PANEL_BLANK_CONTROL_DIRECTIVE 19 | }; 20 | -------------------------------------------------------------------------------- /src/app/dragdropway/components/leftPanel/BlankControl/edaDragDropWay.leftpanel.blankControl.template.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 |
6 | 7 |   8 | Edit : 9 |
10 |
11 |
12 |
13 |
14 |
15 | Column will be blank 16 |
17 |
18 |
19 |
20 | 21 |
22 | -------------------------------------------------------------------------------- /src/app/dragdropway/components/leftPanel/CheckBoxControl/edaDragDropWay.leftpanel.checkBoxControl.directive.js: -------------------------------------------------------------------------------- 1 | 2 | import leftPanelCheckBoxControlTemplate from './edaDragDropWay.leftpanel.checkBoxControl.template.html'; 3 | 4 | const LEFT_PANEL_CHECKBOX_CONTROL_DIRECTIVE = 'leftPanelCheckBoxControl'; 5 | 6 | function leftPanelCheckBoxControl() { 7 | let directive = { 8 | restrict : 'E', 9 | template : leftPanelCheckBoxControlTemplate 10 | }; 11 | return directive; 12 | } 13 | 14 | leftPanelCheckBoxControl.$inject = []; 15 | 16 | export default leftPanelCheckBoxControl; 17 | 18 | export { 19 | LEFT_PANEL_CHECKBOX_CONTROL_DIRECTIVE 20 | }; 21 | -------------------------------------------------------------------------------- /src/app/dragdropway/components/leftPanel/CheckBoxControl/edaDragDropWay.leftpanel.checkBoxControl.template.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 |
6 | 7 |   8 | Edit properties : 9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 | 21 |
22 | 28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 | 41 |
42 |
 
43 | 47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 | 60 |
61 | 67 |
68 |
69 |
70 |
71 |
72 | 73 |
74 | -------------------------------------------------------------------------------- /src/app/dragdropway/components/leftPanel/DateControl/edaDragDropWay.leftpanel.dateControl.directive.js: -------------------------------------------------------------------------------- 1 | 2 | import leftPanelDateControlTemplate from './edaDragDropWay.leftpanel.dateControl.template.html'; 3 | 4 | const LEFT_PANEL_DATE_CONTROL_DIRECTIVE = 'leftPanelDateControl'; 5 | 6 | function leftPanelDateControl() { 7 | let directive = { 8 | restrict : 'E', 9 | template : leftPanelDateControlTemplate 10 | }; 11 | return directive; 12 | } 13 | 14 | leftPanelDateControl.$inject = []; 15 | 16 | export default leftPanelDateControl; 17 | 18 | export { 19 | LEFT_PANEL_DATE_CONTROL_DIRECTIVE 20 | }; 21 | -------------------------------------------------------------------------------- /src/app/dragdropway/components/leftPanel/DateControl/edaDragDropWay.leftpanel.dateControl.template.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 |
6 | 7 |   8 | Edit properties : 9 |
10 |
11 |
12 |
13 | 16 |
17 |
    21 |
  1. 25 | 26 | {{dateformat}} 27 | 28 |
  2. 29 |
30 |
31 |
32 |
33 |
34 |
35 | 40 |
41 | 47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 | 60 |
61 |
 
62 | 66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 | 79 |
80 | 86 |
87 |
88 |
89 |
90 |
91 | 92 |
93 | -------------------------------------------------------------------------------- /src/app/dragdropway/components/leftPanel/GroupedSelectControl/edaDragDropWay.leftpanel.groupedSelectControl.directive.js: -------------------------------------------------------------------------------- 1 | 2 | import leftPanelGroupedSelectControlTemplate from './edaDragDropWay.leftpanel.groupedSelectControl.template.html'; 3 | 4 | const LEFT_PANEL_GROUPED_SELECT_CONTROL_DIRECTIVE = 'leftPanelGroupedSelectControl'; 5 | 6 | function leftPanelGroupedSelectControl() { 7 | let directive = { 8 | restrict : 'E', 9 | template : leftPanelGroupedSelectControlTemplate 10 | }; 11 | return directive; 12 | } 13 | 14 | leftPanelGroupedSelectControl.$inject = []; 15 | 16 | export default leftPanelGroupedSelectControl; 17 | 18 | export { 19 | LEFT_PANEL_GROUPED_SELECT_CONTROL_DIRECTIVE 20 | }; 21 | -------------------------------------------------------------------------------- /src/app/dragdropway/components/leftPanel/HeaderControl/edaDragDropWay.leftpanel.headerControl.directive.js: -------------------------------------------------------------------------------- 1 | import leftPanelHeaderControlTemplate from './edaDragDropWay.leftpanel.headerControl.template.html'; 2 | 3 | const LEFT_PANEL_HEADER_CONTROL_DIRECTIVE = 'leftPanelHeaderControl'; 4 | 5 | function leftPanelHeaderControl() { 6 | let directive = { 7 | restrict : 'E', 8 | template : leftPanelHeaderControlTemplate 9 | }; 10 | return directive; 11 | 12 | } 13 | 14 | leftPanelHeaderControl.$inject = []; 15 | 16 | export default leftPanelHeaderControl; 17 | 18 | export { 19 | LEFT_PANEL_HEADER_CONTROL_DIRECTIVE 20 | }; 21 | -------------------------------------------------------------------------------- /src/app/dragdropway/components/leftPanel/HeaderControl/edaDragDropWay.leftpanel.headerControl.template.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 |
6 | 7 |   8 | Edit properties : 9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 | 21 |
22 | 28 |
29 |
30 |
31 |
32 |
33 | 34 |
35 | -------------------------------------------------------------------------------- /src/app/dragdropway/components/leftPanel/PasswordControl/edaDragDropWay.leftpanel.passwordControl.directive.js: -------------------------------------------------------------------------------- 1 | 2 | import leftPanelPasswordControlTemplate from './edaDragDropWay.leftpanel.passwordControl.template.html'; 3 | 4 | const LEFT_PANEL_PASSWORD_CONTROL_DIRECTIVE = 'leftPanelPasswordControl'; 5 | 6 | function leftPanelPasswordControl() { 7 | let directive = { 8 | restrict : 'E', 9 | template : leftPanelPasswordControlTemplate 10 | }; 11 | return directive; 12 | } 13 | 14 | leftPanelPasswordControl.$inject = []; 15 | 16 | export default leftPanelPasswordControl; 17 | 18 | export { 19 | LEFT_PANEL_PASSWORD_CONTROL_DIRECTIVE 20 | }; 21 | -------------------------------------------------------------------------------- /src/app/dragdropway/components/leftPanel/PasswordControl/edaDragDropWay.leftpanel.passwordControl.template.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 |
6 | 7 |   8 | Edit properties : 9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 | 21 |
22 | 28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 | 41 |
42 | 48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 | 61 |
62 |
 
63 | 67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 | 80 |
81 | 87 |
88 |
89 |
90 |
91 |
92 | 93 |
94 | -------------------------------------------------------------------------------- /src/app/dragdropway/components/leftPanel/RadioControl/edaDragDropWay.leftpanel.radioControl.directive.js: -------------------------------------------------------------------------------- 1 | 2 | import leftPanelRadioControlTemplate from './edaDragDropWay.leftpanel.radioControl.template.html'; 3 | 4 | const LEFT_PANEL_RADIO_CONTROL_DIRECTIVE = 'leftPanelRadioControl'; 5 | 6 | function leftPanelRadioControl() { 7 | let directive = { 8 | restrict : 'E', 9 | template : leftPanelRadioControlTemplate 10 | }; 11 | return directive; 12 | } 13 | 14 | leftPanelRadioControl.$inject = []; 15 | 16 | export default leftPanelRadioControl; 17 | 18 | export { 19 | LEFT_PANEL_RADIO_CONTROL_DIRECTIVE 20 | }; 21 | -------------------------------------------------------------------------------- /src/app/dragdropway/components/leftPanel/RichTextEditorControl/edaDragDropWay.leftpanel.richTextEditorControl.directive.js: -------------------------------------------------------------------------------- 1 | 2 | import leftPanelRichTextEditorControlTemplate from './edaDragDropWay.leftpanel.richTextEditorControl.template.html'; 3 | 4 | const LEFT_PANEL_RICH_TEXT_EDITOR_CONTROL_DIRECTIVE = 'leftPanelRichTextEditorControl'; 5 | 6 | function leftPanelRichTextEditorControl() { 7 | let directive = { 8 | restrict : 'E', 9 | template : leftPanelRichTextEditorControlTemplate 10 | }; 11 | return directive; 12 | } 13 | 14 | leftPanelRichTextEditorControl.$inject = []; 15 | 16 | export default leftPanelRichTextEditorControl; 17 | 18 | export { 19 | LEFT_PANEL_RICH_TEXT_EDITOR_CONTROL_DIRECTIVE 20 | }; 21 | -------------------------------------------------------------------------------- /src/app/dragdropway/components/leftPanel/RichTextEditorControl/edaDragDropWay.leftpanel.richTextEditorControl.template.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 |
6 | 7 |   Edit properties : 8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | 20 |
21 | 27 |
28 |
29 |
30 |
31 |
32 | 33 |
34 | -------------------------------------------------------------------------------- /src/app/dragdropway/components/leftPanel/SubTitleControl/edaDragDropWay.leftpanel.subtitleControl.directive.js: -------------------------------------------------------------------------------- 1 | import leftPanelSubtitleControlTemplate from './edaDragDropWay.leftpanel.subtitleControl.template.html'; 2 | 3 | const LEFT_PANEL_SUBTITLE_CONTROL_DIRECTIVE = 'leftPanelSubtitleControl'; 4 | 5 | function leftPanelSubtitleControl() { 6 | let directive = { 7 | restrict : 'E', 8 | template : leftPanelSubtitleControlTemplate 9 | }; 10 | return directive; 11 | } 12 | 13 | leftPanelSubtitleControl.$inject = []; 14 | 15 | export default leftPanelSubtitleControl; 16 | 17 | export { 18 | LEFT_PANEL_SUBTITLE_CONTROL_DIRECTIVE 19 | }; 20 | -------------------------------------------------------------------------------- /src/app/dragdropway/components/leftPanel/SubTitleControl/edaDragDropWay.leftpanel.subtitleControl.template.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 |
6 | 7 |   8 | Edit properties : 9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 | 21 |
22 | 28 |
29 |
30 |
31 |
32 |
33 | 34 |
35 | -------------------------------------------------------------------------------- /src/app/dragdropway/components/leftPanel/TextAreaControl/edaDragDropWay.leftpanel.textareaControl.directive.js: -------------------------------------------------------------------------------- 1 | 2 | import leftPanelTextareaControlTemplate from './edaDragDropWay.leftpanel.textareaControl.template.html'; 3 | 4 | const LEFT_PANEL_TEXTAREA_CONTROL_DIRECTIVE = 'leftPanelTextareaControl'; 5 | 6 | function leftPanelTextareaControl() { 7 | let directive = { 8 | restrict : 'E', 9 | template : leftPanelTextareaControlTemplate 10 | }; 11 | return directive; 12 | } 13 | 14 | leftPanelTextareaControl.$inject = []; 15 | 16 | export default leftPanelTextareaControl; 17 | 18 | export { 19 | LEFT_PANEL_TEXTAREA_CONTROL_DIRECTIVE 20 | }; 21 | -------------------------------------------------------------------------------- /src/app/dragdropway/components/leftPanel/TextAreaControl/edaDragDropWay.leftpanel.textareaControl.template.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 |
6 | 7 |   8 | Edit properties : 9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 | 21 |
22 | 28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 | 41 |
42 |
43 |   44 |
45 | 49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 | 62 |
63 | 69 |
70 |
71 |
72 |
73 |
74 | 75 |
76 | -------------------------------------------------------------------------------- /src/app/dragdropway/components/leftPanel/TextInputControl/edaDragDropWay.leftpanel.textInputControl.directive.js: -------------------------------------------------------------------------------- 1 | 2 | import leftPanelTextInputControlTemplate from './edaDragDropWay.leftpanel.textInputControl.template.html'; 3 | 4 | const LEFT_PANEL_TEXT_INPUT_CONTROL_DIRECTIVE = 'leftPanelTextInputControl'; 5 | 6 | function leftPanelTextInputControl() { 7 | let directive = { 8 | restrict : 'E', 9 | template : leftPanelTextInputControlTemplate 10 | }; 11 | return directive; 12 | } 13 | 14 | leftPanelTextInputControl.$inject = []; 15 | 16 | export default leftPanelTextInputControl; 17 | 18 | export { 19 | LEFT_PANEL_TEXT_INPUT_CONTROL_DIRECTIVE 20 | }; 21 | -------------------------------------------------------------------------------- /src/app/dragdropway/components/leftPanel/TextInputControl/edaDragDropWay.leftpanel.textInputControl.template.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 |
6 | 7 |   8 | Edit properties : 9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 | 21 |
22 | 28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 | 41 |
42 | 48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 | 61 |
62 |
 
63 | 67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 | 80 |
81 | 87 |
88 |
89 |
90 |
91 |
92 | 93 |
94 | -------------------------------------------------------------------------------- /src/app/dragdropway/components/leftPanel/ValidEditFooter/edaDragDropWay.leftpanel.validEditFooter.directive.js: -------------------------------------------------------------------------------- 1 | import leftPanelValidEditFooterTemplate from './edaDragDropWay.leftpanel.validEditFooter.template.html'; 2 | 3 | const LEFT_PANEL_VALID_EDIT_FOOTER_DIRECTIVE = 'leftPanelValidEditFooter'; 4 | 5 | function leftPanelValidEditFooter() { 6 | let directive = { 7 | restrict : 'E', 8 | template : leftPanelValidEditFooterTemplate 9 | }; 10 | return directive; 11 | } 12 | 13 | leftPanelValidEditFooter.$inject = []; 14 | 15 | export default leftPanelValidEditFooter; 16 | 17 | export { 18 | LEFT_PANEL_VALID_EDIT_FOOTER_DIRECTIVE 19 | }; 20 | -------------------------------------------------------------------------------- /src/app/dragdropway/components/leftPanel/ValidEditFooter/edaDragDropWay.leftpanel.validEditFooter.template.html: -------------------------------------------------------------------------------- 1 | 17 | -------------------------------------------------------------------------------- /src/app/dragdropway/components/leftPanel/edaDragDropWay.leftPanel.controller.helpers.js: -------------------------------------------------------------------------------- 1 | const dateFormats = ['dd-MMMM-yyyy', 'yyyy/MM/dd', 'dd.MM.yyyy', 'shortDate']; 2 | 3 | const setToday = (datetimePickerModel)=>{ 4 | datetimePickerModel.dt = new Date(); 5 | }; 6 | 7 | const clearDateTime = (datetimePickerModel)=>{ 8 | datetimePickerModel.dt = new Date(); 9 | }; 10 | 11 | export { 12 | dateFormats, 13 | setToday, 14 | clearDateTime 15 | }; 16 | 17 | -------------------------------------------------------------------------------- /src/app/dragdropway/components/leftPanel/edaDragDropWay.leftPanel.directive.js: -------------------------------------------------------------------------------- 1 | import { 2 | LEFT_PANEL_CONTROLLER, 3 | LEFT_PANEL_CONTROLLERAS 4 | } from './edaDragDropWay.leftPanel.controller'; 5 | 6 | import leftPanelTemplate from './edaDragDropWay.leftPanel.template.html'; 7 | 8 | const LEFT_PANEL_DIRECTIVE = 'leftPanel'; 9 | 10 | 11 | function leftPanel(){ 12 | let directive = { 13 | restrict : 'E', 14 | template : leftPanelTemplate, 15 | scope : {}, 16 | controller : LEFT_PANEL_CONTROLLER, 17 | controllerAs : LEFT_PANEL_CONTROLLERAS, 18 | bindToController : { 19 | closeEditPanel : '&', 20 | selectedControl : '&', 21 | saveFromEditPanel : '&' 22 | } 23 | }; 24 | return directive; 25 | } 26 | 27 | leftPanel.$inject = []; 28 | 29 | export default leftPanel; 30 | 31 | export { 32 | LEFT_PANEL_DIRECTIVE 33 | }; 34 | -------------------------------------------------------------------------------- /src/app/dragdropway/components/leftPanel/edaDragDropWay.leftPanel.selectOptionManage.service.helpers.js: -------------------------------------------------------------------------------- 1 | /* global angular */ 2 | const resetModel = (selectObj) => { 3 | let zeroModel = { rows:[] }; 4 | angular.copy(zeroModel, selectObj); 5 | }; 6 | 7 | 8 | const validOption = (selectObj, newOptionText) => { 9 | let fullResponse = { 10 | resultFlag : false, 11 | details : '' 12 | }; 13 | if (typeof newOptionText === 'undefined') { 14 | fullResponse.resultFlag = false; 15 | fullResponse.details = 'Entered option is empty'; 16 | return fullResponse; 17 | } 18 | if (newOptionText !== '') { 19 | for (var i = selectObj.rows.length - 1; i >= 0; i--) { 20 | if (selectObj.rows[i].option === newOptionText) { 21 | fullResponse.resultFlag = false; 22 | fullResponse.details = 'Entered option is not unique'; 23 | return fullResponse; 24 | } 25 | } 26 | fullResponse.resultFlag = true; 27 | fullResponse.details = ''; 28 | return fullResponse; 29 | } 30 | fullResponse.resultFlag = false; 31 | fullResponse.details = 'Entered option is empty'; 32 | return fullResponse; 33 | }; 34 | 35 | export { 36 | resetModel, 37 | validOption 38 | }; 39 | -------------------------------------------------------------------------------- /src/app/dragdropway/components/leftPanel/edaDragDropWay.leftPanel.template.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | 21 |   22 | Select a control 23 |
24 |
25 |
26 |
27 |
28 | 29 |
30 |
31 | 32 |
33 |
34 | 35 |
36 |
37 | 38 |
39 |
40 | 41 |
42 |
43 | 44 |
45 |
46 | 47 |
48 |
49 | 50 |
51 |
52 | 53 |
54 |
55 | 56 |
57 |
58 | 59 |
60 |
61 | 62 |
63 |
64 | 69 |
70 | -------------------------------------------------------------------------------- /src/app/dragdropway/config/edaDragDropWay.dragDropConfig.config.js: -------------------------------------------------------------------------------- 1 | import easyFormConfig from '../../../../package.json'; 2 | 3 | const EASY_FORM_DD_VERSION_NAME = 'easyFormGenVersion'; 4 | const EASY_FORM_DD_VERSION_VALUE = easyFormConfig.version; 5 | 6 | function dragDropConfigFunct(easyFormDragWayConfigProvider) { 7 | easyFormDragWayConfigProvider.setItemsNotTocount({ 8 | //placeholder : '', 9 | itemBeingDragged : 'dndDraggingSource' 10 | }); 11 | } 12 | 13 | dragDropConfigFunct.$inject = [ 14 | 'easyFormDragWayConfigProvider' 15 | ]; 16 | 17 | export default dragDropConfigFunct; 18 | 19 | export { 20 | EASY_FORM_DD_VERSION_NAME, 21 | EASY_FORM_DD_VERSION_VALUE 22 | }; 23 | 24 | -------------------------------------------------------------------------------- /src/app/dragdropway/core/edaDragDropWay.core.module.js: -------------------------------------------------------------------------------- 1 | const CORE_MODULES = [ 2 | 'textAngular', 3 | 'textAngularSetup', 4 | 'ngAnimate', 5 | 'toaster', 6 | 'formly', 7 | 'formlyBootstrap', 8 | 'ui.bootstrap', 9 | 'nya.bootstrap.select', 10 | 'mgcrea.ngStrap.affix' 11 | // 'pascalprecht.translate' 12 | ]; 13 | 14 | export default angular 15 | .module('easyFormGen.dragDropWay.core', CORE_MODULES); 16 | -------------------------------------------------------------------------------- /src/app/dragdropway/index.js: -------------------------------------------------------------------------------- 1 | import './vendors'; 2 | import './style/drag_and_drop.scss'; 3 | import './main'; 4 | -------------------------------------------------------------------------------- /src/app/dragdropway/main.js: -------------------------------------------------------------------------------- 1 | import formlyConfigFunct from './config/edaDragDropWay.formlyConfig.config'; 2 | import dragDropConfigFunt, { 3 | EASY_FORM_DD_VERSION_NAME, 4 | EASY_FORM_DD_VERSION_VALUE 5 | } from './config/edaDragDropWay.dragDropConfig.config'; 6 | import coreModule from './core/edaDragDropWay.core.module'; 7 | import leftPanelModule from './components/leftPanel/edaDragDropWay.leftPanel.module'; 8 | import formlyProxyModule from './components/formlyProxy/edaDragDropWay.formlyProxy.formFieldManage.module'; 9 | import dragdropModule from './components/dragdrop/edaDragDropWay.dragdrop.module'; 10 | import rightClickModule from './components/common/rightclick/edaDragDropWay.rightClick.module'; 11 | import configProxyModule from './components/configurationModelProxy/edaDragDropWay.configurationModelProxy.module'; 12 | 13 | import dragAndDropListModule from './components/common/dragAndDropList/dragAndDropList.module'; 14 | import pageSlideModule from './components/common/pageslide/pageslide.module'; 15 | 16 | import easyFormDragDropModule from './components/edaDragDropWayEasyFormGen/edaDragDropWay.edaDragdropWayEasyFormGen.module'; 17 | import trustThisFilterModule from './components/common/edaTrustThisFilter/edaDragDropWay.trustThis.module'; 18 | 19 | const DRAG_DROP_WAY_MODULE_NAME = 'eda.easyformGen.dragDropWay'; 20 | 21 | const DRAG_DROP_MODULES_INJECT = [ 22 | coreModule.name, 23 | configProxyModule.name, 24 | trustThisFilterModule.name, 25 | leftPanelModule.name, 26 | formlyProxyModule.name, 27 | dragdropModule.name, 28 | easyFormDragDropModule.name, 29 | rightClickModule.name, 30 | dragAndDropListModule.name, 31 | pageSlideModule.name 32 | ]; 33 | 34 | const mainModule = angular 35 | .module(DRAG_DROP_WAY_MODULE_NAME, DRAG_DROP_MODULES_INJECT) 36 | .config(dragDropConfigFunt) 37 | .config(formlyConfigFunct) 38 | .value(EASY_FORM_DD_VERSION_NAME, EASY_FORM_DD_VERSION_VALUE); 39 | 40 | export default mainModule; 41 | -------------------------------------------------------------------------------- /src/app/dragdropway/style/drag_and_drop_var.scss: -------------------------------------------------------------------------------- 1 | 2 | /*========================================================= 3 | colors const 4 | ===========================================================*/ 5 | $san-marino-color:#446CB3; //-> blue color 6 | $white-smoke-color:#ECECEC; //-> grey/white color 7 | $alice-blue-color:#E4F1FE; //-> blue nearer white 8 | $ebony-clay-color:#22313F; //-> heavy dark blue 9 | $ming-color :#336E7B; //-> green 10 | $california-color : #F89406; //-> orange 11 | $jordy-color: #89C4F4; //-> blue (light) 12 | $monza-color: #CF000F; //-> red 13 | $background-color-grey: #F2F2F2; //-> white grey 14 | 15 | 16 | $panel-defaut-panel-heading-text-color:#212121; 17 | $panel-defaut-panel-heading-background-color:#fff;//#eee; 18 | $panel-defaut-panel-heading-border-color:#eee;//#fff; 19 | 20 | 21 | /*========================================================= 22 | fonts const 23 | ===========================================================*/ 24 | $font-family-roboto:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif; 25 | 26 | $input-font-size:13px; 27 | 28 | /*========================================================= 29 | common 30 | ===========================================================*/ 31 | $body-padding-top:50px; 32 | $body-padding-bottom:20px; 33 | $body-height:100%; 34 | $body-backgrounf-color:#2C3E50; 35 | 36 | 37 | 38 | $container-width:100%; 39 | -------------------------------------------------------------------------------- /src/app/dragdropway/style/eda.textAngular.min.scss: -------------------------------------------------------------------------------- 1 | .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;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);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{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;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);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} -------------------------------------------------------------------------------- /src/app/dragdropway/vendors.js: -------------------------------------------------------------------------------- 1 | import 'api-check'; // NOTE: always imported before angular-formly! 2 | import 'angular-formly'; 3 | import 'angular-formly-templates-bootstrap'; 4 | -------------------------------------------------------------------------------- /src/app/formviewer/components/core/eda.easyFormViewer.core.module.js: -------------------------------------------------------------------------------- 1 | const CORE_MODULES = [ 2 | 'textAngular', 3 | 'formly', 4 | 'ngAnimate', 5 | 'formlyBootstrap', 6 | 'ui.bootstrap', 7 | 'nya.bootstrap.select' 8 | ]; 9 | 10 | const FORMVIEWER_CORE_MODULE_NAME = 'edaEasyFormViewerCore.module'; 11 | 12 | export default angular 13 | .module(FORMVIEWER_CORE_MODULE_NAME, CORE_MODULES); 14 | -------------------------------------------------------------------------------- /src/app/formviewer/components/main/eda.easyFormViewer.main.controller.js: -------------------------------------------------------------------------------- 1 | const EASY_FORM_VIEWER_CONTROLLER = 'edaEasyFormViewerCtrl'; 2 | const EASY_FORM_VIEWER_CONTROLLERAS = 'vm'; 3 | 4 | class edaEasyFormViewerController{ 5 | 6 | constructor(){ 7 | this.init(); 8 | } 9 | 10 | init(){ 11 | this.model = {}; 12 | this.fields = {}; 13 | this.hasJustSumitted = false; 14 | this.hasJustCancelled = false; 15 | } 16 | 17 | edaSubmitThisDataModel(){ 18 | this.hasJustSumitted = true; 19 | } 20 | 21 | edaCancelEvent(){ 22 | this.hasJustCancelled = true; 23 | } 24 | 25 | } 26 | 27 | edaEasyFormViewerController.$inject = []; 28 | 29 | export default edaEasyFormViewerController; 30 | 31 | export { 32 | EASY_FORM_VIEWER_CONTROLLER, 33 | EASY_FORM_VIEWER_CONTROLLERAS 34 | }; -------------------------------------------------------------------------------- /src/app/formviewer/components/main/eda.easyFormViewer.main.directive.helpers.js: -------------------------------------------------------------------------------- 1 | /* global angular */ 2 | 3 | const EMPTY_FIELD_MODEL = [ 4 | { 5 | 'line': 1, 6 | 'activeColumn': 1, 7 | 'columns': [ 8 | { 9 | 'numColumn': 1, 10 | 'exist': true, 11 | 'control': { 12 | 'type': 'none', 13 | 'key': 'none' 14 | } 15 | } 16 | ] 17 | } 18 | ]; 19 | 20 | /** 21 | * empty fields model : to display at least an empty line 22 | * otherwise would look like ugly empty line like it were a bug 23 | */ 24 | const emptyEdaFieldsModel = ()=>{ 25 | return angular.copy(EMPTY_FIELD_MODEL); 26 | }; 27 | 28 | 29 | 30 | const returnAttributeDataModelIfNotEmpty = (edaEasyFormGeneratorModel)=>{ 31 | let dataModelToReturn = ( 32 | angular.isArray(edaEasyFormGeneratorModel.dataModel) ? ( 33 | edaEasyFormGeneratorModel.dataModel.length > 0 ? 34 | edaEasyFormGeneratorModel.dataModel 35 | : [] 36 | ) 37 | : [] 38 | ); 39 | return dataModelToReturn; 40 | }; 41 | 42 | 43 | const returnAttributeConfigurationLinesIfNotEmpty = (loadedFieldModel)=>{ 44 | let edaEasyFormGeneratorModelToReturn = ( 45 | angular.isArray(loadedFieldModel) ? ( 46 | loadedFieldModel.length > 0 ? 47 | loadedFieldModel 48 | : emptyEdaFieldsModel() 49 | ) 50 | : emptyEdaFieldsModel() 51 | ); 52 | return edaEasyFormGeneratorModelToReturn; 53 | }; 54 | 55 | 56 | export { 57 | emptyEdaFieldsModel, 58 | returnAttributeDataModelIfNotEmpty, 59 | returnAttributeConfigurationLinesIfNotEmpty 60 | }; 61 | -------------------------------------------------------------------------------- /src/app/formviewer/components/main/eda.easyFormViewer.main.module.js: -------------------------------------------------------------------------------- 1 | /* global angular */ 2 | import edaFormViewerDirective, { 3 | EASY_FORM_VIEWER_DIRECTIVE_NAME 4 | } from './eda.easyFormViewer.main.directive'; 5 | 6 | import edaEasyFormViewerController, { 7 | EASY_FORM_VIEWER_CONTROLLER 8 | } from './eda.easyFormViewer.main.controller'; 9 | 10 | const FORM_VIEWER_MAIN_MODULE_NAME = 'edaFormViewerMainModule'; 11 | 12 | export default angular 13 | .module(FORM_VIEWER_MAIN_MODULE_NAME, []) 14 | .directive(EASY_FORM_VIEWER_DIRECTIVE_NAME, edaFormViewerDirective) 15 | .controller(EASY_FORM_VIEWER_CONTROLLER, edaEasyFormViewerController); 16 | -------------------------------------------------------------------------------- /src/app/formviewer/components/main/eda.easyFormViewer.main.template.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | 5 | 6 |
7 | 8 | 9 |
10 | 11 |
12 |
13 |
14 |
15 | -------------------------------------------------------------------------------- /src/app/formviewer/components/modelsTranslator/eda.easyFormViewer.modelTranslator.module.js: -------------------------------------------------------------------------------- 1 | /* global angular */ 2 | import $modelsTranslator, { 3 | MODEL_TRANSLATOR_SERVICE 4 | } from './eda.easyFormViewer.modelTranslator.service'; 5 | 6 | 7 | 8 | const FORM_VIEWER_MODEL_TRANSLATOR_MODULE_NAME = 'edaFormViewerModelTranslatorModule'; 9 | 10 | export default angular 11 | .module(FORM_VIEWER_MODEL_TRANSLATOR_MODULE_NAME, []) 12 | .service(MODEL_TRANSLATOR_SERVICE, $modelsTranslator); -------------------------------------------------------------------------------- /src/app/formviewer/components/modelsTranslator/eda.easyFormViewer.modelTranslator.service.helpers.js: -------------------------------------------------------------------------------- 1 | import { configs as stepwayControls } from '../../../stepway/components/controls'; 2 | import { 3 | configurationModelInit, 4 | configurationModelResult, 5 | addOneColumnControl, 6 | addTwoColumnControl, 7 | addThreeColumnControl 8 | } from '../../../stepway/services/formlyProxy/formlyProxy.service.helpers'; 9 | 10 | const resetNyaSelect = (nyaSelectObj) => { 11 | //reset 12 | angular.copy({controls: [...stepwayControls]}, nyaSelectObj); 13 | return true; 14 | }; 15 | 16 | const getConfigurationModelInit = () => ({ ...configurationModelInit }); 17 | 18 | const getEmptyConfigModelResult = () => ({ ...configurationModelResult }); 19 | 20 | const resetDataModel = (obj) => { 21 | const emptyDataModel = {}; 22 | angular.copy(emptyDataModel, obj); 23 | return true; 24 | }; 25 | 26 | const getErrorObject = (errorTitle, errorMessage) => { 27 | const messageObj = { 28 | noError : false, 29 | title : '', 30 | Message : '' 31 | }; 32 | messageObj.noError = false; 33 | messageObj.title = errorTitle; 34 | messageObj.Message = errorMessage; 35 | return messageObj; 36 | }; 37 | 38 | const getMessageObject = (messageTitle, messageBody) => { 39 | const messageObj = { 40 | noError : false, 41 | title : '', 42 | Message : '' 43 | }; 44 | messageObj.noError = true; 45 | messageObj.title = messageTitle; 46 | messageObj.Message = messageBody; 47 | return messageObj; 48 | }; 49 | 50 | const resetFormlyModel = (formlyModel) => { 51 | var resetformly = []; 52 | angular.copy(resetformly, formlyModel); 53 | }; 54 | 55 | export { 56 | resetNyaSelect, 57 | getConfigurationModelInit, 58 | getEmptyConfigModelResult, 59 | resetDataModel, 60 | getErrorObject, 61 | getMessageObject, 62 | resetFormlyModel, 63 | addOneColumnControl, 64 | addTwoColumnControl, 65 | addThreeColumnControl 66 | }; 67 | -------------------------------------------------------------------------------- /src/app/formviewer/index.js: -------------------------------------------------------------------------------- 1 | import './vendors'; 2 | require('./style/formviewer.scss'); 3 | import './main'; 4 | -------------------------------------------------------------------------------- /src/app/formviewer/main.js: -------------------------------------------------------------------------------- 1 | import edaFormViewerMainModule from './components/main/eda.easyFormViewer.main.module'; 2 | import edaFormViewerCoreModule from './components/core/eda.easyFormViewer.core.module'; 3 | import edaFormViewerModelTranslatorModule from './components/modelsTranslator/eda.easyFormViewer.modelTranslator.module'; 4 | 5 | import edaEasyFormViewerConfig from '../stepway/config/formly/formly.config.js'; 6 | 7 | import easyFormConfig from '../../../package.json'; 8 | 9 | const DEP_TO_INJECT_IN_MAIN = [ 10 | edaFormViewerMainModule.name, 11 | edaFormViewerCoreModule.name, 12 | edaFormViewerModelTranslatorModule.name 13 | ]; 14 | 15 | const EASY_FORM_VIEWER_VERSION_NAME = 'easyFormViewerVersion'; 16 | const EASY_FORM_VIEWER_VERSION_VALUE = easyFormConfig.version; 17 | const MAIN_MODULE_NAME = 'eda.easyFormViewer'; 18 | 19 | const mainModule = angular 20 | .module(MAIN_MODULE_NAME, DEP_TO_INJECT_IN_MAIN) 21 | .config(edaEasyFormViewerConfig) 22 | .value(EASY_FORM_VIEWER_VERSION_NAME, EASY_FORM_VIEWER_VERSION_VALUE); 23 | 24 | export default mainModule; 25 | -------------------------------------------------------------------------------- /src/app/formviewer/style/eda.textAngular.min.scss: -------------------------------------------------------------------------------- 1 | .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;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);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{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;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);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} -------------------------------------------------------------------------------- /src/app/formviewer/style/formviewer.scss: -------------------------------------------------------------------------------- 1 | @import "formviewer_var"; 2 | @import "formviewer_mixins"; 3 | @import "eda.textAngular.min"; 4 | 5 | body { 6 | margin: 20px; 7 | font-family: $font-family-roboto; 8 | } 9 | 10 | // textAngular div to apply a margin bottom 11 | .ta-scroll-window 12 | { 13 | margin-bottom:16px; 14 | } 15 | 16 | /** 17 | * formly fields css 18 | */ 19 | .formly-field { 20 | margin-bottom: 20px; 21 | } 22 | 23 | .validation { 24 | position: absolute; 25 | font-size: .8em; 26 | color: #a94442; 27 | // margin-top: 2px; 28 | } 29 | 30 | .formly-template-wrapper { 31 | position: relative; 32 | } 33 | 34 | 35 | .error-messages { 36 | position: relative; 37 | } 38 | 39 | .error-messages, .message, .validation { 40 | opacity: 1; 41 | transition: .3s linear all; 42 | } 43 | 44 | .message { 45 | font-size: .8em; 46 | position: absolute; 47 | width: 100%; 48 | color: #a94442; 49 | margin-top: 2px; 50 | } 51 | 52 | .error-messages.ng-enter.ng-enter-active, 53 | .message.ng-enter.ng-enter-active, 54 | .validation.ng-enter.ng-enter-active { 55 | opacity: 1; 56 | // top: 0; 57 | } 58 | 59 | .error-messages.ng-enter, 60 | .message.ng-enter, 61 | .validation.ng-enter { 62 | opacity: 0; 63 | // top: -10px; 64 | } 65 | 66 | .error-messages.ng-leave, 67 | .message.ng-leave, 68 | .validation.ng-leave { 69 | opacity: 1; 70 | // top: 0; 71 | } 72 | 73 | .error-messages.ng-leave-active, 74 | .message.ng-leave-active, 75 | .validation.ng-leave-active { 76 | opacity: 0; 77 | // top: -10px; 78 | } 79 | -------------------------------------------------------------------------------- /src/app/formviewer/style/formviewer_mixins.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MacKentoch/easyFormGenerator/d146d9ac1aba87f8730001b61a737867a1a05695/src/app/formviewer/style/formviewer_mixins.scss -------------------------------------------------------------------------------- /src/app/formviewer/style/formviewer_var.scss: -------------------------------------------------------------------------------- 1 | /*========================================================= 2 | fonts const 3 | ===========================================================*/ 4 | $font-family-roboto:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif; -------------------------------------------------------------------------------- /src/app/formviewer/vendors.js: -------------------------------------------------------------------------------- 1 | import 'api-check'; // NOTE: always imported before angular-formly! 2 | import 'angular-formly'; 3 | import 'angular-formly-templates-bootstrap'; 4 | -------------------------------------------------------------------------------- /src/app/stepway/README.md: -------------------------------------------------------------------------------- 1 | # INFO 2 | 3 | > easyFormGenerator uses AngularJS components. 4 | 5 | Components are written like angular 2 components (*as much as possible*). 6 | 7 | 8 | So **template inside backticks** will be easier to read any plugin like 9 | - *Atom*: `atom-typescript` (template highlighter) 10 | - *VSCode*: [`angular2-inline`](https://marketplace.visualstudio.com/items?itemName=natewallace.angular2-inline) 11 | -------------------------------------------------------------------------------- /src/app/stepway/components/controls/CheckBox/config/checkbox.config.js: -------------------------------------------------------------------------------- 1 | export const CheckBoxConfig = { 2 | id: 'Checkbox', 3 | name: 'Checkbox', 4 | subtitle: 'Checkbox', 5 | group: 'Checkbox', 6 | formlyType: 'checkbox', 7 | formlySubtype: '', 8 | formlyLabel: '', 9 | formlyRequired: false, 10 | formlyDescription: '', 11 | formlyOptions: [], 12 | formlyExpressionProperties: {}, 13 | formlyValidators: {}, 14 | formlyValidation: { 15 | messages: { 16 | required: function(viewValue, modelValue, scope) { 17 | const defaultReturnMsg = 'this Checkbox field is required'; 18 | const returnMsg = (typeof scope.to.label !== 'undefined') ? ((scope.to.label !== '') ? scope.to.label + ' is required' : defaultReturnMsg) : defaultReturnMsg; 19 | return returnMsg; 20 | } 21 | } 22 | } 23 | }; 24 | -------------------------------------------------------------------------------- /src/app/stepway/components/controls/Date/config/date.config.js: -------------------------------------------------------------------------------- 1 | export const DateConfig = { 2 | id: 'Date', 3 | name: 'Date', 4 | subtitle: 'Date', 5 | group: 'input', 6 | formlyType: 'datepicker', 7 | formlySubtype: '', 8 | formlyLabel: '', 9 | formlyRequired: false, 10 | formlyDescription: '', 11 | formlyOptions: [], 12 | datepickerOptions: { format: 'dd-MMMM-yyyy' }, 13 | formlyExpressionProperties: {}, 14 | formlyValidators: {}, 15 | formlyValidation: { 16 | messages: { 17 | required: function(viewValue, modelValue, scope) { 18 | //return a required validation message : 19 | //-> '