diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/NodeService.java b/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/NodeService.java index dc1acc68a59bbd6d30b893c50fc06efcc10f34c2..d86e0e8e9867f39f6afd508d456d49672f45da19 100644 --- a/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/NodeService.java +++ b/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/NodeService.java @@ -29,4 +29,5 @@ public interface NodeService extends BaseService { List loadSelector(String systemUuid); + List loadAllSelector(); } diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/NodeVueService.java b/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/NodeVueService.java index 7fad95e19669b14290b3bbdf72977b3f718407a9..a7eb91a36352c63c3634f5318596e41bdd1f8f62 100644 --- a/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/NodeVueService.java +++ b/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/NodeVueService.java @@ -28,4 +28,6 @@ public interface NodeVueService extends BaseService { NodeVueVO queryBySystemUuidAndKey(String systemUuid, String key); List loadSelector(String systemUuid, String nodeUuid); + + String loadDefaultVue(); } diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/impl/NodeServiceImpl.java b/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/impl/NodeServiceImpl.java index ccf25aa7bf5182c07efe909b686787ea36790176..4edbff78ace1c541e21bfee60a87bf5414ee1d60 100644 --- a/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/impl/NodeServiceImpl.java +++ b/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/impl/NodeServiceImpl.java @@ -94,4 +94,21 @@ public class NodeServiceImpl implements NodeService { } return textValues; } + + @Override + public List loadAllSelector() { + List nodes = queryAll(); + List textValues = Lists.newArrayList(); + for (NodeVO node : nodes) { + String label; + if (isDeleted(node)) { + label = String.format(DELETED_FORMAT, node.getNodeName()); + } else { + label = String.format(NOT_DELETED_FORMAT, node.getNodeName()); + } + String value = node.getUuid(); + textValues.add(new TextValue(label, value)); + } + return textValues; + } } diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/impl/NodeVueServiceImpl.java b/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/impl/NodeVueServiceImpl.java index 98d24f27a69038bda52bcb714da91f604e937e6c..29ba2e59079e4397964c9b2d82145a81500791c6 100644 --- a/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/impl/NodeVueServiceImpl.java +++ b/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/impl/NodeVueServiceImpl.java @@ -11,6 +11,7 @@ import com.google.common.collect.Lists; import cn.icanci.loopstack.bic.biz.mapper.NodeVueMapper; import cn.icanci.loopstack.bic.biz.service.NodeVueService; +import cn.icanci.loopstack.bic.biz.utils.TemplateFileUtils; import cn.icanci.loopstack.bic.common.model.TextValue; import cn.icanci.loopstack.bic.common.model.base.NodeVueVO; import cn.icanci.loopstack.bic.dal.mongo.common.PageList; @@ -91,4 +92,9 @@ public class NodeVueServiceImpl implements NodeVueService { } return textValues; } + + @Override + public String loadDefaultVue() { + return TemplateFileUtils.queryDefaultNodeVueTemplate(); + } } diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/utils/TemplateFileUtils.java b/biz/src/main/java/cn/icanci/loopstack/bic/biz/utils/TemplateFileUtils.java index cb624b53eab13c49b21915d237f04767c925ffad..d1fffc55782b02b59ff3d263ecc855ccbce1f4f8 100644 --- a/biz/src/main/java/cn/icanci/loopstack/bic/biz/utils/TemplateFileUtils.java +++ b/biz/src/main/java/cn/icanci/loopstack/bic/biz/utils/TemplateFileUtils.java @@ -10,6 +10,7 @@ import org.springframework.core.io.ClassPathResource; public class TemplateFileUtils { private static final String DEFAULT_NODE_STYLE_TEMPLATE = "style/default-node-style-template.json"; private static final String DEFAULT_NODE_EDGE_TEMPLATE = "style/default-edge-style-template.json"; + private static final String DEFAULT_NODE_VUE_TEMPLATE = "vue/default-node-vue-template.vue"; /** * queryMockFile @@ -37,6 +38,10 @@ public class TemplateFileUtils { return queryLocalFile(DEFAULT_NODE_STYLE_TEMPLATE); } + public static String queryDefaultNodeVueTemplate() { + return queryLocalFile(DEFAULT_NODE_VUE_TEMPLATE); + } + public static String queryDefaultEdgeStyleTemplate() { return queryLocalFile(DEFAULT_NODE_EDGE_TEMPLATE); } diff --git a/biz/src/main/resources/vue/default-node-vue-template.vue b/biz/src/main/resources/vue/default-node-vue-template.vue new file mode 100644 index 0000000000000000000000000000000000000000..eee3a3e754b4f7f860879807407b82f25b7b8d14 --- /dev/null +++ b/biz/src/main/resources/vue/default-node-vue-template.vue @@ -0,0 +1,39 @@ + + + + + diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/enums/FuncTypeEnum.java b/common/src/main/java/cn/icanci/loopstack/bic/common/enums/FuncTypeEnum.java index 3577aafa45a722661bc35d952ddb3bc5363dffd3..c11fb152bfbefb3786f6244b2ee7c083b4424bb0 100644 --- a/common/src/main/java/cn/icanci/loopstack/bic/common/enums/FuncTypeEnum.java +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/enums/FuncTypeEnum.java @@ -10,6 +10,7 @@ import lombok.Getter; * @since 1.0 Created in 2023/09/02 21:18 */ @Getter +@Deprecated @AllArgsConstructor public enum FuncTypeEnum { /** diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/model/base/NodeVueVO.java b/common/src/main/java/cn/icanci/loopstack/bic/common/model/base/NodeVueVO.java index f0f68fc8ed326847fc99824650e4ff55299b76bd..0d8111d2f2644197252d18797b16e241b7cc42d9 100644 --- a/common/src/main/java/cn/icanci/loopstack/bic/common/model/base/NodeVueVO.java +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/model/base/NodeVueVO.java @@ -22,4 +22,6 @@ public class NodeVueVO extends BaseVO { private String nodeVueCode; /** 组件类型:DIALOG、OPEN_TAG,可以选择为弹框、或者打开一个新的标签页 */ private NodeVueTypeEnum nodeVueType; + /** 测试使用的组件上下文数据 */ + private String pluginContext; } diff --git a/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/dateobject/NodeVueDO.java b/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/dateobject/NodeVueDO.java index ac4779d52df3ec2bce948a9f6de40be6af2cc703..5b8b1ed6734c16ec5574fec96cb2714b3dcded3f 100644 --- a/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/dateobject/NodeVueDO.java +++ b/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/dateobject/NodeVueDO.java @@ -20,4 +20,6 @@ public class NodeVueDO extends BaseDO { private String nodeVueCode; /** 组件类型:DIALOG、OPEN_TAG,可以选择为弹框、或者打开一个新的标签页 */ private String nodeVueType; + /** 测试使用的组件上下文数据 */ + private String pluginContext; } diff --git a/views/pom.xml b/views/pom.xml index 62fca0879e9c9385c106643072038f53d3374203..36011a1330537db5b97acb283a62056c424f01ea 100644 --- a/views/pom.xml +++ b/views/pom.xml @@ -39,43 +39,43 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + org.apache.maven.plugins @@ -133,16 +133,17 @@ true src/main/resources + + vueboot/** + static/** **/*.yml **/*.xml **/*.properties **/*.json + **/*.vue - - vueboot/** - diff --git a/views/src/main/resources/vueboot/package.json b/views/src/main/resources/vueboot/package.json index 72f0e02c6451a505484c9405df7a8e636faa338f..9c707be6e545300957ded1ca5ee9a41651f58dce 100644 --- a/views/src/main/resources/vueboot/package.json +++ b/views/src/main/resources/vueboot/package.json @@ -22,7 +22,7 @@ "@antv/x6-plugin-snapline": "^2.1.7", "axios": "0.18.1", "clipboard": "2.0.4", - "codemirror": "5.45.0", + "codemirror": "^5.45.0", "core-js": "3.6.5", "driver.js": "0.9.5", "dropzone": "5.5.1", @@ -48,6 +48,7 @@ "vue-router": "3.0.2", "vue-splitpane": "1.0.4", "vuedraggable": "2.20.0", + "vuep": "^0.8.1", "vuex": "3.1.0", "xlsx": "0.14.1" }, diff --git a/views/src/main/resources/vueboot/src/api/loadSelectorApi.js b/views/src/main/resources/vueboot/src/api/loadSelectorApi.js index 37c6caa92ed75971124ca666715910f2e71fc587..4a7b06ba72ea0da6394e0d705ce745115374e4b3 100644 --- a/views/src/main/resources/vueboot/src/api/loadSelectorApi.js +++ b/views/src/main/resources/vueboot/src/api/loadSelectorApi.js @@ -34,6 +34,7 @@ export async function nodeTypes() { } return [] } + export async function nodeVueType() { let ret = await request({ url: '/bicAdmin/common/nodeVueType', @@ -77,8 +78,18 @@ export async function nodeSelector(systemUuid) { } return [] } +export async function allNodeSelector() { + let ret = await request({ + url: '/bicAdmin/node/loadAllSelector/', + method: 'get' + }) + if (ret.ok) { + return ret.data.textValues; + } + return [] +} -export async function nodestyleSelector(systemUuid) { +export async function nodeStyleSelector(systemUuid) { let ret = await request({ url: '/bicAdmin/nodeStyle/loadSelector/' + systemUuid, method: 'get' @@ -89,6 +100,17 @@ export async function nodestyleSelector(systemUuid) { return [] } +export async function nodeVueSelector(systemUuid, nodeUuid) { + let ret = await request({ + url: '/bicAdmin/nodeVue/loadSelector/' + systemUuid + '/' + nodeUuid, + method: 'get' + }) + if (ret.ok) { + return ret.data.textValues; + } + return [] +} + export function joiner(arr, join) { let res = "" if (!res && !join) { diff --git a/views/src/main/resources/vueboot/src/api/nodeVue.js b/views/src/main/resources/vueboot/src/api/nodeVue.js index bfbf2e8145ead6bf4c1d3785af64afea499d82c5..a741ea6d79f8e0e4f51fe60f4d499193ed8d830a 100644 --- a/views/src/main/resources/vueboot/src/api/nodeVue.js +++ b/views/src/main/resources/vueboot/src/api/nodeVue.js @@ -32,3 +32,10 @@ export async function remoteValidatesNodeVueKey(systemUuid, key) { method: 'get', }) } + +export async function nodeVueLoad() { + return await request({ + url: '/bicAdmin/nodeVue/loadDefaultVue', + method: 'get', + }) +} diff --git a/views/src/main/resources/vueboot/src/main.js b/views/src/main/resources/vueboot/src/main.js index 7cb052b5c79b4314aa135b4ba8dc50ceae7f004d..21e7008d18ab820deddbe886d85decaa3e4116f1 100644 --- a/views/src/main/resources/vueboot/src/main.js +++ b/views/src/main/resources/vueboot/src/main.js @@ -30,6 +30,11 @@ import CodeView from "vue-code-view"; Vue.use(CodeView); +import Vuep from 'vuep' + + + +Vue.use(Vuep) /** * If you don't want to use mock-server * you want to use MockJs for mock api diff --git a/views/src/main/resources/vueboot/src/views/bic-config/dialog/node-vue-form.vue b/views/src/main/resources/vueboot/src/views/bic-config/dialog/node-vue-form.vue new file mode 100644 index 0000000000000000000000000000000000000000..a1e495a9279ddd141a84397cfefda479c8d18a68 --- /dev/null +++ b/views/src/main/resources/vueboot/src/views/bic-config/dialog/node-vue-form.vue @@ -0,0 +1,248 @@ + + + diff --git a/views/src/main/resources/vueboot/src/views/bic-config/node-vue-config.vue b/views/src/main/resources/vueboot/src/views/bic-config/node-vue-config.vue index 913cb1500164d7275bc2d1e6a245f05142e280cb..dd2d888b99e39c947e9d8139f8a99c3c9177ffd1 100644 --- a/views/src/main/resources/vueboot/src/views/bic-config/node-vue-config.vue +++ b/views/src/main/resources/vueboot/src/views/bic-config/node-vue-config.vue @@ -3,7 +3,11 @@ - + - - + + + + + + + + - - + + + + + + + + 查询 @@ -41,13 +65,27 @@ + label="节点名称"> + + + + prop="nodeVueKey" + label="节点组件Key"> + + + diff --git a/views/src/main/resources/vueboot/src/views/demos/dialog/demo-vuep-no-code.vue b/views/src/main/resources/vueboot/src/views/demos/dialog/demo-vuep-no-code.vue new file mode 100644 index 0000000000000000000000000000000000000000..6e2a893723b29af268f782348ef894ded621e2be --- /dev/null +++ b/views/src/main/resources/vueboot/src/views/demos/dialog/demo-vuep-no-code.vue @@ -0,0 +1,88 @@ + + + diff --git a/views/src/main/resources/vueboot/src/views/demos/dialog/demo-vuep.vue b/views/src/main/resources/vueboot/src/views/demos/dialog/demo-vuep.vue new file mode 100644 index 0000000000000000000000000000000000000000..c30546a57c5a49e9d70f57fb9db735fd12eb6188 --- /dev/null +++ b/views/src/main/resources/vueboot/src/views/demos/dialog/demo-vuep.vue @@ -0,0 +1,90 @@ + + + diff --git a/views/src/main/resources/vueboot/src/views/demos/dialog/vuep-context.vue b/views/src/main/resources/vueboot/src/views/demos/dialog/vuep-context.vue new file mode 100644 index 0000000000000000000000000000000000000000..81068fb6667d78342d2d5d3f3f068f906ac50779 --- /dev/null +++ b/views/src/main/resources/vueboot/src/views/demos/dialog/vuep-context.vue @@ -0,0 +1,39 @@ + + + + + diff --git a/views/src/main/resources/vueboot/src/views/demos/dialog/vuep.css b/views/src/main/resources/vueboot/src/views/demos/dialog/vuep.css new file mode 100644 index 0000000000000000000000000000000000000000..d5e3dba679b320cbdab9c499ef1c566e782e3267 --- /dev/null +++ b/views/src/main/resources/vueboot/src/views/demos/dialog/vuep.css @@ -0,0 +1,715 @@ +/* BASICS */ +.CodeMirror { + /* Set height, width, borders, and global font properties here */ + font-family: monospace; + height: 300px; + color: black; +} + +/* PADDING */ +.CodeMirror-lines { + padding: 4px 0; + /* Vertical padding around content */ +} + +.CodeMirror pre { + padding: 0 4px; + /* Horizontal padding of content */ +} + +.CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { + background-color: white; + /* The little square between H and V scrollbars */ +} + +/* GUTTER */ +.CodeMirror-gutters { + border-right: 1px solid #ddd; + background-color: #f7f7f7; + white-space: nowrap; +} + +.CodeMirror-linenumbers { +} + +.CodeMirror-linenumber { + padding: 0 3px 0 5px; + min-width: 20px; + text-align: right; + color: #999; + white-space: nowrap; +} + +.CodeMirror-guttermarker { + color: black; +} + +.CodeMirror-guttermarker-subtle { + color: #999; +} + +/* CURSOR */ +.CodeMirror-cursor { + border-left: 1px solid black; + border-right: none; + width: 0; +} + +/* Shown when moving in bi-directional text */ +.CodeMirror div.CodeMirror-secondarycursor { + border-left: 1px solid silver; +} + +.cm-fat-cursor .CodeMirror-cursor { + width: auto; + border: 0 !important; + background: #7e7; +} + +.cm-fat-cursor div.CodeMirror-cursors { + z-index: 1; +} + +.cm-animate-fat-cursor { + width: auto; + border: 0; + -webkit-animation: blink 1.06s steps(1) infinite; + animation: blink 1.06s steps(1) infinite; + background-color: #7e7; +} + +@-webkit-keyframes blink { + 0% { + } + 50% { + background-color: transparent; + } + 100% { + } +} + +@keyframes blink { + 0% { + } + 50% { + background-color: transparent; + } + 100% { + } +} + +/* Can style cursor different in overwrite (non-insert) mode */ +.CodeMirror-overwrite .CodeMirror-cursor { +} + +.cm-tab { + display: inline-block; + text-decoration: inherit; +} + +.CodeMirror-rulers { + position: absolute; + left: 0; + right: 0; + top: -50px; + bottom: -20px; + overflow: hidden; +} + +.CodeMirror-ruler { + border-left: 1px solid #ccc; + top: 0; + bottom: 0; + position: absolute; +} + +/* DEFAULT THEME */ +.cm-s-default .cm-header { + color: blue; +} + +.cm-s-default .cm-quote { + color: #090; +} + +.cm-negative { + color: #d44; +} + +.cm-positive { + color: #292; +} + +.cm-header, .cm-strong { + font-weight: 700; +} + +.cm-em { + font-style: italic; +} + +.cm-link { + text-decoration: underline; +} + +.cm-strikethrough { + text-decoration: line-through; +} + +.cm-s-default .cm-keyword { + color: #708; +} + +.cm-s-default .cm-atom { + color: #219; +} + +.cm-s-default .cm-number { + color: #164; +} + +.cm-s-default .cm-def { + color: #00f; +} + +.cm-s-default .cm-variable, .cm-s-default .cm-punctuation, .cm-s-default .cm-property, .cm-s-default .cm-operator { +} + +.cm-s-default .cm-variable-2 { + color: #05a; +} + +.cm-s-default .cm-variable-3 { + color: #085; +} + +.cm-s-default .cm-comment { + color: #a50; +} + +.cm-s-default .cm-string { + color: #a11; +} + +.cm-s-default .cm-string-2 { + color: #f50; +} + +.cm-s-default .cm-meta { + color: #555; +} + +.cm-s-default .cm-qualifier { + color: #555; +} + +.cm-s-default .cm-builtin { + color: #30a; +} + +.cm-s-default .cm-bracket { + color: #997; +} + +.cm-s-default .cm-tag { + color: #170; +} + +.cm-s-default .cm-attribute { + color: #00c; +} + +.cm-s-default .cm-hr { + color: #999; +} + +.cm-s-default .cm-link { + color: #00c; +} + +.cm-s-default .cm-error { + color: #f00; +} + +.cm-invalidchar { + color: #f00; +} + +.CodeMirror-composing { + border-bottom: 2px solid; +} + +/* Default styles for common addons */ +div.CodeMirror span.CodeMirror-matchingbracket { + color: #0f0; +} + +div.CodeMirror span.CodeMirror-nonmatchingbracket { + color: #f22; +} + +.CodeMirror-matchingtag { + background: rgba(255, 150, 0, .3); +} + +.CodeMirror-activeline-background { + background: #e8f2ff; +} + +/* STOP */ +/* The rest of this file contains styles related to the mechanics of + the editor. You probably shouldn't touch them. */ +.CodeMirror { + position: relative; + overflow: hidden; + background: white; +} + +.CodeMirror-scroll { + overflow: scroll !important; + /* Things will break if this is overridden */ + /* 30px is the magic margin used to hide the element's real scrollbars */ + /* See overflow: hidden in .CodeMirror */ + margin-bottom: -30px; + margin-right: -30px; + padding-bottom: 30px; + height: 100%; + outline: none; + /* Prevent dragging from highlighting the element */ + position: relative; +} + +.CodeMirror-sizer { + position: relative; + border-right: 30px solid transparent; +} + +/* The fake, visible scrollbars. Used to force redraw during scrolling + before actual scrolling happens, thus preventing shaking and + flickering artifacts. */ +.CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { + position: absolute; + z-index: 6; + display: none; +} + +.CodeMirror-vscrollbar { + right: 0; + top: 0; + overflow-x: hidden; + overflow-y: scroll; +} + +.CodeMirror-hscrollbar { + bottom: 0; + left: 0; + overflow-y: hidden; + overflow-x: scroll; +} + +.CodeMirror-scrollbar-filler { + right: 0; + bottom: 0; +} + +.CodeMirror-gutter-filler { + left: 0; + bottom: 0; +} + +.CodeMirror-gutters { + position: absolute; + left: 0; + top: 0; + min-height: 100%; + z-index: 3; +} + +.CodeMirror-gutter { + white-space: normal; + height: 100%; + display: inline-block; + vertical-align: top; + margin-bottom: -30px; +} + +.CodeMirror-gutter-wrapper { + position: absolute; + z-index: 4; + background: none !important; + border: none !important; +} + +.CodeMirror-gutter-background { + position: absolute; + top: 0; + bottom: 0; + z-index: 4; +} + +.CodeMirror-gutter-elt { + position: absolute; + cursor: default; + z-index: 4; +} + +.CodeMirror-gutter-wrapper { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.CodeMirror-lines { + cursor: text; + min-height: 1px; + /* prevents collapsing before first draw */ +} + +.CodeMirror pre { + /* Reset some styles that the rest of the page might have set */ + border-radius: 0; + border-width: 0; + background: transparent; + font-family: inherit; + font-size: inherit; + margin: 0; + white-space: pre; + word-wrap: normal; + line-height: inherit; + color: inherit; + z-index: 2; + position: relative; + overflow: visible; + -webkit-tap-highlight-color: transparent; + -webkit-font-variant-ligatures: contextual; + font-variant-ligatures: contextual; +} + +.CodeMirror-wrap pre { + word-wrap: break-word; + white-space: pre-wrap; + word-break: normal; +} + +.CodeMirror-linebackground { + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + z-index: 0; +} + +.CodeMirror-linewidget { + position: relative; + z-index: 2; + overflow: auto; +} + +.CodeMirror-widget { +} + +.CodeMirror-code { + outline: none; +} + +/* Force content-box sizing for the elements where we expect it */ +.CodeMirror-scroll, .CodeMirror-sizer, .CodeMirror-gutter, .CodeMirror-gutters, .CodeMirror-linenumber { + box-sizing: content-box; +} + +.CodeMirror-measure { + position: absolute; + width: 100%; + height: 0; + overflow: hidden; + visibility: hidden; +} + +.CodeMirror-cursor { + position: absolute; + pointer-events: none; +} + +.CodeMirror-measure pre { + position: static; +} + +div.CodeMirror-cursors { + visibility: hidden; + position: relative; + z-index: 3; +} + +div.CodeMirror-dragcursors { + visibility: visible; +} + +.CodeMirror-focused div.CodeMirror-cursors { + visibility: visible; +} + +.CodeMirror-selected { + background: #d9d9d9; +} + +.CodeMirror-focused .CodeMirror-selected { + background: #d7d4f0; +} + +.CodeMirror-crosshair { + cursor: crosshair; +} + +.CodeMirror-line::-moz-selection, .CodeMirror-line > span::-moz-selection, .CodeMirror-line > span > span::-moz-selection { + background: #d7d4f0; +} + +.CodeMirror-line::selection, .CodeMirror-line > span::selection, .CodeMirror-line > span > span::selection { + background: #d7d4f0; +} + +.CodeMirror-line::-moz-selection, .CodeMirror-line > span::-moz-selection, .CodeMirror-line > span > span::-moz-selection { + background: #d7d4f0; +} + +.cm-searching { + background: #ffa; + background: rgba(255, 255, 0, .4); +} + +/* Used to force a border model for a node */ +.cm-force-border { + padding-right: .1px; +} + +@media print { + /* Hide the cursor when printing */ + .CodeMirror div.CodeMirror-cursors { + visibility: hidden; + } +} + +/* See issue #2901 */ +.cm-tab-wrap-hack:after { + content: ''; +} + +/* Help users use markselection to safely style text background */ +span.CodeMirror-selectedtext { + background: none; +} + +/* + + Name: material + Author: Michael Kaminsky (http://github.com/mkaminsky11) + + Original material color scheme by Mattia Astorino (https://github.com/equinusocio/material-theme) + +*/ +.cm-s-material.CodeMirror { + background-color: #263238; + color: rgba(233, 237, 237, 1); +} + +.cm-s-material .CodeMirror-gutters { + background: #263238; + color: rgb(83, 127, 126); + border: none; +} + +.cm-s-material .CodeMirror-guttermarker, .cm-s-material .CodeMirror-guttermarker-subtle, .cm-s-material .CodeMirror-linenumber { + color: rgb(83, 127, 126); +} + +.cm-s-material .CodeMirror-cursor { + border-left: 1px solid #f8f8f0; +} + +.cm-s-material div.CodeMirror-selected { + background: rgba(255, 255, 255, 0.15); +} + +.cm-s-material.CodeMirror-focused div.CodeMirror-selected { + background: rgba(255, 255, 255, 0.10); +} + +.cm-s-material .CodeMirror-line::-moz-selection, .cm-s-material .CodeMirror-line > span::-moz-selection, .cm-s-material .CodeMirror-line > span > span::-moz-selection { + background: rgba(255, 255, 255, 0.10); +} + +.cm-s-material .CodeMirror-line::selection, .cm-s-material .CodeMirror-line > span::selection, .cm-s-material .CodeMirror-line > span > span::selection { + background: rgba(255, 255, 255, 0.10); +} + +.cm-s-material .CodeMirror-line::-moz-selection, .cm-s-material .CodeMirror-line > span::-moz-selection, .cm-s-material .CodeMirror-line > span > span::-moz-selection { + background: rgba(255, 255, 255, 0.10); +} + +.cm-s-material .CodeMirror-activeline-background { + background: rgba(0, 0, 0, 0); +} + +.cm-s-material .cm-keyword { + color: rgba(199, 146, 234, 1); +} + +.cm-s-material .cm-operator { + color: rgba(233, 237, 237, 1); +} + +.cm-s-material .cm-variable-2 { + color: #80CBC4; +} + +.cm-s-material .cm-variable-3 { + color: #82B1FF; +} + +.cm-s-material .cm-builtin { + color: #DECB6B; +} + +.cm-s-material .cm-atom { + color: #F77669; +} + +.cm-s-material .cm-number { + color: #F77669; +} + +.cm-s-material .cm-def { + color: rgba(233, 237, 237, 1); +} + +.cm-s-material .cm-string { + color: #C3E88D; +} + +.cm-s-material .cm-string-2 { + color: #80CBC4; +} + +.cm-s-material .cm-comment { + color: #546E7A; +} + +.cm-s-material .cm-variable { + color: #82B1FF; +} + +.cm-s-material .cm-tag { + color: #80CBC4; +} + +.cm-s-material .cm-meta { + color: #80CBC4; +} + +.cm-s-material .cm-attribute { + color: #FFCB6B; +} + +.cm-s-material .cm-property { + color: #80CBAE; +} + +.cm-s-material .cm-qualifier { + color: #DECB6B; +} + +.cm-s-material .cm-variable-3 { + color: #DECB6B; +} + +.cm-s-material .cm-tag { + color: rgba(255, 83, 112, 1); +} + +.cm-s-material .cm-error { + color: rgba(255, 255, 255, 1.0); + background-color: #EC5F67; +} + +.cm-s-material .CodeMirror-matchingbracket { + text-decoration: underline; + color: white !important; +} + +.vuep { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + font-family: 'Source Sans Pro', 'Helvetica Neue', Arial, sans-serif; + height: 400px; +} + +.vuep ::-webkit-scrollbar-track { + border-radius: 10px; + background-color: #F5F5F5; +} + +.vuep ::-webkit-scrollbar { + width: 8px; + height: 8px; + background-color: #F5F5F5; +} + +.vuep ::-webkit-scrollbar-thumb { + border-radius: 8px; + background-color: #bbb; + -webkit-transition: all 0.5s; + transition: all 0.5s; +} + +.vuep ::-webkit-scrollbar-thumb:hover { + border-radius: 8px; + background-color: #777; +} + +.vuep-editor, .vuep-preview, .vuep-error { + border-radius: 2px; + height: inherit; + margin-right: 10px; + /*overflow: auto;*/ + /*width: 50%;*/ +} + +.vuep-editor .CodeMirror, .vuep-preview .CodeMirror, .vuep-error .CodeMirror { + height: inherit; +} + +.vuep-editor:last-child, .vuep-preview:last-child, .vuep-error:last-child { + margin-right: 0; +} + +.vuep-editor { + line-height: 1.2em; +} + +.vuep-error { + color: #f66; +} + +.vuep-preview, .vuep-error { + border: 1px solid #eee; + box-sizing: border-box; + padding: 15px 25px; + width: 100%; + margin-left: -10px; +} + +@media (max-width: 600px) { + .vuep { + display: block; + height: auto; + } + + .vuep-editor, .vuep-preview, .vuep-error { + margin: 0 0 15px 0; + height: 400px; + width: 100%; + } +} diff --git a/views/src/main/resources/vueboot/src/views/demos/tests.vue b/views/src/main/resources/vueboot/src/views/demos/tests.vue index 39faf1f9cd921d16d8634f75cf0b193bf79c70f6..9ebab24fec84b0c569af8e875e35123e992f320c 100644 --- a/views/src/main/resources/vueboot/src/views/demos/tests.vue +++ b/views/src/main/resources/vueboot/src/views/demos/tests.vue @@ -1,17 +1,21 @@