wire up all the ui stuff for previews in pickers, showing name in button when one option exists, proper picker for blocks

This commit is contained in:
Nathan Woulfe
2019-05-21 00:35:21 +10:00
parent f657c635ef
commit f17cd844ff
11 changed files with 409 additions and 215 deletions
+40 -59
View File
@@ -1222,7 +1222,7 @@
"arraybuffer.slice": {
"version": "0.0.7",
"resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz",
"integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==",
"integrity": "sha1-O7xCdd1YTMGxCAm4nU6LY6aednU=",
"dev": true
},
"asap": {
@@ -1284,7 +1284,7 @@
"async-limiter": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz",
"integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==",
"integrity": "sha1-ePrtjD0HSrgfIrTphdeehzj3IPg=",
"dev": true
},
"asynckit": {
@@ -1535,7 +1535,7 @@
},
"bl": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz",
"resolved": "http://registry.npmjs.org/bl/-/bl-1.2.2.tgz",
"integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==",
"dev": true,
"requires": {
@@ -1551,7 +1551,7 @@
},
"readable-stream": {
"version": "2.3.6",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"dev": true,
"requires": {
@@ -1566,7 +1566,7 @@
},
"string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dev": true,
"requires": {
@@ -1740,7 +1740,7 @@
"buffer-alloc": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
"integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
"integrity": "sha1-iQ3ZDZI6hz4I4Q5f1RpX5bfM4Ow=",
"dev": true,
"requires": {
"buffer-alloc-unsafe": "^1.1.0",
@@ -1750,7 +1750,7 @@
"buffer-alloc-unsafe": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
"integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==",
"integrity": "sha1-vX3CauKXLQ7aJTvgYdupkjScGfA=",
"dev": true
},
"buffer-crc32": {
@@ -2516,7 +2516,7 @@
"content-type": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
"integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
"integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js=",
"dev": true
},
"continuable-cache": {
@@ -4045,7 +4045,7 @@
"debug": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
"integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=",
"dev": true,
"requires": {
"ms": "2.0.0"
@@ -4061,7 +4061,7 @@
},
"engine.io-client": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.2.1.tgz",
"resolved": "http://registry.npmjs.org/engine.io-client/-/engine.io-client-3.2.1.tgz",
"integrity": "sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw==",
"dev": true,
"requires": {
@@ -4081,7 +4081,7 @@
"debug": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
"integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=",
"dev": true,
"requires": {
"ms": "2.0.0"
@@ -4476,13 +4476,13 @@
"eventemitter3": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz",
"integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==",
"integrity": "sha1-CQtNbNvWRe0Qv3UNS1QHlC17oWM=",
"dev": true
},
"exec-buffer": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/exec-buffer/-/exec-buffer-3.2.0.tgz",
"integrity": "sha512-wsiD+2Tp6BWHoVv3B+5Dcx6E7u5zky+hUwOHjuH2hKSLR3dvRmX8fk8UD8uqQixHs4Wk6eDmiegVrMPjKj7wpA==",
"integrity": "sha1-sWhtvZBMfPmC5lLB9aebHlVzCCs=",
"dev": true,
"optional": true,
"requires": {
@@ -5244,7 +5244,7 @@
"fs-constants": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
"integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
"integrity": "sha1-a+Dem+mYzhavivwkSXue6bfM2a0=",
"dev": true
},
"fs-extra": {
@@ -5309,8 +5309,7 @@
"ansi-regex": {
"version": "2.1.1",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"aproba": {
"version": "1.2.0",
@@ -5331,14 +5330,12 @@
"balanced-match": {
"version": "1.0.0",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"brace-expansion": {
"version": "1.1.11",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -5353,20 +5350,17 @@
"code-point-at": {
"version": "1.1.0",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"concat-map": {
"version": "0.0.1",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"console-control-strings": {
"version": "1.1.0",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"core-util-is": {
"version": "1.0.2",
@@ -5483,8 +5477,7 @@
"inherits": {
"version": "2.0.3",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"ini": {
"version": "1.3.5",
@@ -5496,7 +5489,6 @@
"version": "1.0.0",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"number-is-nan": "^1.0.0"
}
@@ -5511,7 +5503,6 @@
"version": "3.0.4",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"brace-expansion": "^1.1.7"
}
@@ -5519,14 +5510,12 @@
"minimist": {
"version": "0.0.8",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"minipass": {
"version": "2.2.4",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"safe-buffer": "^5.1.1",
"yallist": "^3.0.0"
@@ -5545,7 +5534,6 @@
"version": "0.5.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"minimist": "0.0.8"
}
@@ -5626,8 +5614,7 @@
"number-is-nan": {
"version": "1.0.1",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"object-assign": {
"version": "4.1.1",
@@ -5639,7 +5626,6 @@
"version": "1.4.0",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"wrappy": "1"
}
@@ -5725,8 +5711,7 @@
"safe-buffer": {
"version": "5.1.1",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"safer-buffer": {
"version": "2.1.2",
@@ -5762,7 +5747,6 @@
"version": "1.0.2",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
@@ -5782,7 +5766,6 @@
"version": "3.0.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"ansi-regex": "^2.0.0"
}
@@ -5826,14 +5809,12 @@
"wrappy": {
"version": "1.0.2",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"yallist": {
"version": "3.0.2",
"bundled": true,
"dev": true,
"optional": true
"dev": true
}
}
},
@@ -7575,7 +7556,7 @@
"has-binary2": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz",
"integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==",
"integrity": "sha1-d3asYn8+p3JQz8My2rfd9eT10R0=",
"dev": true,
"requires": {
"isarray": "2.0.1"
@@ -7778,7 +7759,7 @@
"http-proxy": {
"version": "1.17.0",
"resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz",
"integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==",
"integrity": "sha1-etOElGWPhGBeL220Q230EPTlvpo=",
"dev": true,
"requires": {
"eventemitter3": "^3.0.0",
@@ -9335,7 +9316,7 @@
"lowercase-keys": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
"integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
"integrity": "sha1-b54wtHCE2XGnyCD/FabFFnt0wm8=",
"dev": true
},
"lpad-align": {
@@ -9369,7 +9350,7 @@
"make-dir": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
"integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
"integrity": "sha1-ecEDO4BRW9bSTsmTPoYMp17ifww=",
"dev": true,
"requires": {
"pify": "^3.0.0"
@@ -12735,7 +12716,7 @@
"dependencies": {
"minimist": {
"version": "0.0.10",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
"resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
"integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=",
"dev": true
},
@@ -13616,7 +13597,7 @@
"qjobs": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz",
"integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==",
"integrity": "sha1-xF6cYYAL0IfviNfiVkI73Unl0HE=",
"dev": true
},
"qs": {
@@ -14775,7 +14756,7 @@
},
"socket.io-parser": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.2.0.tgz",
"resolved": "http://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.2.0.tgz",
"integrity": "sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA==",
"dev": true,
"requires": {
@@ -14787,7 +14768,7 @@
"debug": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
"integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=",
"dev": true,
"requires": {
"ms": "2.0.0"
@@ -14920,7 +14901,7 @@
},
"chalk": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
"resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"dev": true,
"optional": true,
@@ -15328,7 +15309,7 @@
"strip-outer": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz",
"integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==",
"integrity": "sha1-sv0qv2YEudHmATBXGV34Nrip1jE=",
"dev": true,
"requires": {
"escape-string-regexp": "^1.0.2"
@@ -15488,7 +15469,7 @@
},
"readable-stream": {
"version": "2.3.6",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"dev": true,
"requires": {
@@ -15731,7 +15712,7 @@
"to-buffer": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz",
"integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==",
"integrity": "sha1-STvUj2LXxD/N7TE6A9ytsuEhOoA=",
"dev": true
},
"to-fast-properties": {
@@ -15860,7 +15841,7 @@
"type-is": {
"version": "1.6.16",
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz",
"integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==",
"integrity": "sha1-+JzjQVQcZysl7nrjxz3uOyvlAZQ=",
"dev": true,
"requires": {
"media-typer": "0.3.0",
@@ -15902,7 +15883,7 @@
"ultron": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz",
"integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==",
"integrity": "sha1-n+FTahCmZKZSZqHjzPhf02MCvJw=",
"dev": true
},
"unc-path-regex": {
@@ -16505,7 +16486,7 @@
"ws": {
"version": "3.3.3",
"resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz",
"integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==",
"integrity": "sha1-8c+E/i1ekB686U767OeF8YeiKPI=",
"dev": true,
"requires": {
"async-limiter": "~1.0.0",
@@ -2,20 +2,28 @@
Library of card related compoents, like the right-hand icon list on the grid "cards"
*/
.umb-card{
position: relative;
padding: 5px 10px 5px 10px;
.umb-card {
position: relative;
padding: 5px 10px 5px 10px;
background: white;
width: 100%;
.title{padding: 12px; color: @gray-3; border-bottom: 1px solid @gray-8; font-weight: 400; font-size: 16px; text-transform: none; margin: 0 -10px 10px -10px;}
.title {
padding: 12px;
color: @gray-3;
border-bottom: 1px solid @gray-8;
font-weight: 400;
font-size: 16px;
text-transform: none;
margin: 0 -10px 10px -10px;
}
}
.umb-card-thumb{
.umb-card-thumb {
text-align: center;
i{
i {
text-align: center;
font-size: 20px;
line-height: 40px;
@@ -25,51 +33,62 @@
}
}
.umb-card-content{
.item-title{color: @blackLight; font-weight: 400; border: none; font-size: 16px; text-transform: none; margin-bottom: 3px;}
p{color: @gray-3; margin-bottom: 1px;}
.umb-card-content {
.item-title {
color: @blackLight;
font-weight: 400;
border: none;
font-size: 16px;
text-transform: none;
margin-bottom: 3px;
}
p {
color: @gray-3;
margin-bottom: 1px;
}
}
.umb-card-actions{
.umb-card-actions {
padding-top: 10px;
border-top: @gray-10 1px solid;
clear: both;
}
.umb-card-icons{
text-align: center;
vertical-align: middle;
display: block;
list-style: none;
margin: 0;
padding: 0;
.umb-card-icons {
text-align: center;
vertical-align: middle;
display: block;
list-style: none;
margin: 0;
padding: 0;
}
.umb-card-icons.vertical{
position: absolute;
top: 7px;
right: 7px;
text-align: right;
width: 1px;
.umb-card-icons.vertical {
position: absolute;
top: 7px;
right: 7px;
text-align: right;
width: 1px;
}
.umb-card-icons li{
display: inline-block;
margin: 0 2px 0 2px;
.umb-card-icons li {
display: inline-block;
margin: 0 2px 0 2px;
}
.umb-card-icons.vertical li{
float: right;
display: block;
margin-bottom: 3px;
.umb-card-icons.vertical li {
float: right;
display: block;
margin-bottom: 3px;
}
//card iocn list
.umb-card-list{
display: block;
padding: 0;
margin: 0;
}
.umb-card-list {
display: block;
padding: 0;
margin: 0;
}
.umb-card-list li {
border-bottom: @gray-10 1px solid;
@@ -81,23 +100,23 @@
//Card icon grid for picking items off a card
.umb-card-grid{
padding: 0;
margin: 0 auto;
list-style: none;
.umb-card-grid {
padding: 0;
margin: 0 auto;
list-style: none;
width: 100%;
display: flex;
flex-flow: row wrap;
justify-content: flex-start;
display: flex;
flex-flow: row wrap;
justify-content: flex-start;
}
.umb-card-grid li {
overflow: hidden;
font-size: 12px;
text-align: center;
box-sizing: border-box;
position: relative;
overflow: hidden;
font-size: 12px;
text-align: center;
box-sizing: border-box;
position: relative;
width: 100px;
}
@@ -107,19 +126,18 @@
}
.umb-card-grid.-three-in-row li {
flex: 0 0 33.33%;
max-width:33.33%;
flex: 0 0 33.33%;
max-width: 33.33%;
}
.umb-card-grid .umb-card-grid-item {
position: relative;
display: block;
width: 100%;
//height: 100%;
display: block;
width: 100%;
padding-top: 100%;
border-radius: 3px;
border-radius: 3px;
transition: background-color 120ms;
> span {
position: absolute;
top: 10px;
@@ -134,11 +152,56 @@
}
}
.umb-card-grid.-detailed {
.umb-card-grid-item {
padding-top: 0;
> div {
padding: 10px;
text-align: left;
font-size: 0;
overflow: hidden;
}
}
li {
flex: 0 0 auto;
max-width: 50%;
width: 50%;
}
.umb-card-grid-item--title {
font-size: 15px;
font-weight: 700;
}
.umb-card-grid-item--description {
font-size: 12px;
display: block;
}
.umb-card-grid-item--thumbnail,
i {
max-width: 120px;
margin-right: 10px;
float: left;
border-radius:3px;
}
i {
width: 120px;
height: 80px;
display: flex;
justify-content: center;
align-items: center;
font-size: 60px;
}
}
.umb-card-grid .umb-card-grid-item:hover,
.umb-card-grid .umb-card-grid-item:focus {
background-color: @ui-option-hover;
color: @ui-option-type-hover;
background-color: @ui-option-hover;
color: @ui-option-type-hover;
}
.umb-card-grid a {
@@ -153,80 +216,82 @@
display: block;
}
.umb-card-grid .umb-card-grid-item__loading {
position: absolute;
background-color: rgba(255,255,255,0.8);
top: 0;
right: 0;
bottom: 0;
left: 0;
}
.umb-card-grid .umb-card-grid-item__loading {
position: absolute;
background-color: rgba(255, 255, 255, 0.8);
top: 0;
right: 0;
bottom: 0;
left: 0;
}
//Round icon-like button - this should be somewhere else
.umb-btn-round{
padding: 4px 6px 4px 6px;
.umb-btn-round {
padding: 4px 6px 4px 6px;
display: inline-block;
cursor: pointer;
border-radius: 200px;
background: @gray-10;
border:1px solid @gray-6;
border: 1px solid @gray-6;
margin: 2px;
}
.umb-btn-round:hover, .umb-btn-round:hover *{
background: @blueDark !important;
color: @white !important;
border-color: @blueDark !important;
text-decoration:none;
}
.umb-btn-round:hover,
.umb-btn-round:hover * {
background: @blueDark !important;
color: @white !important;
border-color: @blueDark !important;
text-decoration: none;
}
.umb-btn-round a:hover {
text-decoration:none;
color: @white !important;
}
.umb-btn-round a:hover {
text-decoration: none;
color: @white !important;
}
.umb-btn-round i {
font-size:16px !important;
color: @gray-8;
display:block;
}
.umb-btn-round i {
font-size: 16px !important;
color: @gray-8;
display: block;
}
.umb-btn-round.alert:hover, .umb-btn-round.alert:hover *{
background: @red !important;
color: @white !important;
border-color: @red !important;
text-decoration:none;
}
.umb-btn-round.alert:hover,
.umb-btn-round.alert:hover * {
background: @red !important;
color: @white !important;
border-color: @red !important;
text-decoration: none;
}
.umb-btn-round.no-border{
.umb-btn-round.no-border {
border: none !important;
background: none !important;
}
.umb-training-videos {
display: grid;
grid-gap: 10px;
grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
display: grid;
grid-gap: 10px;
grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
}
.umb-training-video {
background: @white;
box-shadow: 0 1px 1px 0 rgba(0,0,0,0.16);
border-radius: @baseBorderRadius;
transition: box-shadow 0.1s ease-in-out, border 0.1s ease-in-out;
box-sizing: border-box;
padding: 20px;
background: @white;
box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.16);
border-radius: @baseBorderRadius;
transition: box-shadow 0.1s ease-in-out, border 0.1s ease-in-out;
box-sizing: border-box;
padding: 20px;
}
.umb-training-video:hover {
box-shadow: 0 3px 6px 0 rgba(0,0,0,0.16);
text-decoration: none;
box-shadow: 0 3px 6px 0 rgba(0, 0, 0, 0.16);
text-decoration: none;
}
.umb-training-video__label {
font-weight: bold;
margin-top: 20px;
display: block;
text-align: center;
}
margin-top: 20px;
display: block;
text-align: center;
}
@@ -137,6 +137,10 @@
&.umb-overlay--medium {
width: 480px;
}
&.umb-overlay--large {
width:640px;
}
}
.umb-overlay.umb-overlay-target .umb-overlay-header {
@@ -4,7 +4,7 @@ function ItemPickerOverlay($scope, localizationService) {
$scope.model.hideSubmitButton = true;
if (!$scope.model.title) {
localizationService.localize("defaultdialogs_selectItem").then(function(value){
localizationService.localize("defaultdialogs_selectItem").then(function (value) {
$scope.model.title = value;
});
}
@@ -14,7 +14,11 @@ function ItemPickerOverlay($scope, localizationService) {
}
}
$scope.selectItem = function(item) {
$scope.hasThumbs = function () {
return $scope.model.availableItems.some(x => x.thumbnail);
};
$scope.selectItem = function (item) {
$scope.model.selectedItem = item;
$scope.submitForm($scope.model);
};
@@ -1,26 +1,30 @@
<div ng-controller="Umbraco.Overlays.ItemPickerOverlay" class="umb-itempicker">
<div class="form-search" ng-hide="model.filter === false" style="margin-bottom: 15px;">
<div class="form-search"
ng-hide="model.filter === false"
style="margin-bottom: 15px;">
<i class="icon-search"></i>
<input type="text"
ng-model="searchTerm"
class="umb-search-field search-query input-block-level -full-width-input"
localize="placeholder"
placeholder="@placeholders_filter"
umb-auto-focus
no-dirty-check />
<input type="text"
ng-model="searchTerm"
class="umb-search-field search-query input-block-level -full-width-input"
localize="placeholder" placeholder="@placeholders_filter"
umb-auto-focus no-dirty-check />
</div>
<div class="umb-overlay__section-header" ng-if="(model.pasteItems | filter:searchTerm).length > 0">
<h5><localize key="content_createFromClipboard">Paste from clipboard</localize></h5>
<button ng-if="model.clickClearPaste" ng-click="model.clickClearPaste($event)" alt="Clear clipboard for entries accepted in this context.">
<h5>
<localize key="content_createFromClipboard">Paste from clipboard</localize>
</h5>
<button ng-if="model.clickClearPaste"
ng-click="model.clickClearPaste($event)"
alt="Clear clipboard for entries accepted in this context.">
<i class="icon-trash"></i>
</button>
</div>
<ul class="umb-card-grid" ng-class="{'-three-in-row': model.availableItems.length < 7, '-four-in-row': model.availableItems.length >= 7}">
<li ng-repeat="pasteItem in model.pasteItems | filter:searchTerm"
ng-click="model.clickPasteItem(pasteItem)">
<li ng-repeat="pasteItem in model.pasteItems | filter:searchTerm" ng-click="model.clickPasteItem(pasteItem)">
<a class="umb-card-grid-item" href="" title="{{ pasteItem.name }}">
<span>
<i class="{{ pasteItem.icon }}"></i>
@@ -31,19 +35,37 @@
</ul>
<div class="umb-overlay__section-header" ng-if="model.pasteItems.length > 0 && (model.availableItems | filter:searchTerm).length > 0">
<h5><localize key="content_createEmpty">Create new</localize></h5>
<h5>
<localize key="content_createEmpty">Create new</localize>
</h5>
</div>
<ul class="umb-card-grid" ng-class="{'-three-in-row': model.availableItems.length < 7, '-four-in-row': model.availableItems.length >= 7}">
<li ng-repeat="availableItem in model.availableItems | compareArrays:model.selectedItems:'alias' | orderBy:model.orderBy | filter:searchTerm"
ng-click="selectItem(availableItem)">
<a class="umb-card-grid-item" href="" title="{{ availableItem.name }}">
<span>
<ul class="umb-card-grid" ng-class="{'-three-in-row': model.availableItems.length < 7, '-four-in-row': model.availableItems.length >= 7, '-detailed': hasThumbs()}">
<li ng-repeat="availableItem in model.availableItems | compareArrays:model.selectedItems:'alias' | orderBy:model.orderBy | filter:searchTerm" ng-click="selectItem(availableItem)">
<a class="umb-card-grid-item"
ng-class="{'-has-thumbnail': availableItem.thumbnail}"
href=""
title="{{ availableItem.name }}">
<span ng-if="!hasThumbs()">
<i class="{{ availableItem.icon }}"></i>
{{ availableItem.name }}
</span>
<div ng-if="hasThumbs()" class="flex">
<i ng-if="!availableItem.thumbnail" class="{{ availableItem.icon }}"></i>
<img ng-if="availableItem.thumbnail"
class="umb-card-grid-item--thumbnail self-start"
ng-src="{{ availableItem.thumbnail }}?width=120px" />
<div class="flex flex-column justify-center">
<span class="umb-card-grid-item--title" ng-bind="availableItem.name"></span>
<span ng-if="availableItem.description"
class="umb-card-grid-item--description"
ng-bind="availableItem.description"></span>
</div>
</div>
</a>
</li>
</ul>
</div>
@@ -1,4 +1,4 @@
function BlockEditorPropertyEditorController($scope, contentResource, editorService) {
function BlockEditorPropertyEditorController($scope, contentResource, editorService, iconHelper, clipboardService) {
var vm = this;
vm.scaffolds = [];
@@ -14,10 +14,12 @@
vm.editContent = editContent;
vm.editSettings = editSettings;
vm.remove = remove;
vm.openNodeTypePicker = openNodeTypePicker;
// it would be awesome if we could load all scaffolds in one go... however we need to have an eye out for performance,
// oddly enough it's been shown to actually be slower to load them all at once instead of one at a time
var scaffoldsLoaded = 0;
function init() {
$scope.model.value = $scope.model.value || [];
_.each($scope.model.config.blocks, function (blockConfig) {
@@ -25,6 +27,8 @@
if (scaffold.isElement) {
// the scaffold udi is not the same as the element type udi, but we need it to be for comparison
scaffold.udi = blockConfig.elementType;
// shift this up to be consistent with other entities
scaffold.thumbnail = scaffold.documentType.thumbnail;
vm.scaffolds.push(scaffold);
}
scaffoldsLoaded++;
@@ -58,8 +62,90 @@
openContent(element, block);
}
// nw => this needs to be refined, is currently largely a copy from nested content
function openNodeTypePicker($event) {
vm.overlayMenu = {
show: false,
style: {},
filter: vm.scaffolds.length > 12 ? true : false,
orderBy: "$index",
view: "itempicker",
event: $event,
clickPasteItem: function (item) {
$scope.pasteFromClipboard(item.data);
vm.overlayMenu.show = false;
vm.overlayMenu = null;
},
submit: function (model) {
if (model && model.selectedItem) {
add(vm.scaffolds.filter(x => x.contentTypeAlias === model.selectedItem.alias)[0]);
}
vm.overlayMenu.show = false;
vm.overlayMenu = null;
},
close: function () {
vm.overlayMenu.show = false;
vm.overlayMenu = null;
}
};
// this could be used for future limiting on node types
vm.overlayMenu.availableItems = [];
_.each(vm.scaffolds, function (scaffold) {
vm.overlayMenu.availableItems.push({
alias: scaffold.contentTypeAlias,
name: scaffold.contentTypeName,
icon: iconHelper.convertFromLegacyIcon(scaffold.icon),
thumbnail: scaffold.thumbnail,
description: scaffold.documentType.description
});
});
if (vm.overlayMenu.availableItems.length === 0) {
return;
}
if (vm.overlayMenu.availableItems.some(x => x.thumbnail)) {
vm.overlayMenu.size = 'large';
} else {
vm.overlayMenu.size = vm.overlayMenu.availableItems.length > 6 ? "medium" : "small";
}
vm.overlayMenu.pasteItems = [];
// var availableNodesForPaste = clipboardService.retriveDataOfType("elementType", contentTypeAliases);
// _.each(availableNodesForPaste, function (node) {
// vm.overlayMenu.pasteItems.push({
// alias: node.contentTypeAlias,
// name: node.name, //contentTypeName
// data: node,
// icon: iconHelper.convertFromLegacyIcon(node.icon)
// });
// });
//
// vm.overlayMenu.title = vm.overlayMenu.pasteItems.length > 0 ? $scope.labels.grid_addElement : $scope.labels.content_createEmpty;
//
// vm.overlayMenu.clickClearPaste = function ($event) {
// $event.stopPropagation();
// $event.preventDefault();
// clipboardService.clearEntriesOfType("elementType", contentTypeAliases);
// vm.overlayMenu.pasteItems = []; // This dialog is not connected via the clipboardService events, so we need to update manually.
// };
if (vm.overlayMenu.availableItems.length === 1 && vm.overlayMenu.pasteItems.length === 0) {
// only one scaffold type - no need to display the picker
add(vm.scaffolds[0]);
return;
}
vm.overlayMenu.show = true;
}
function editContent(block) {
var scaffold = _.findWhere(vm.scaffolds, {udi: block.udi});
var scaffold = _.findWhere(vm.scaffolds, {
udi: block.udi
});
var element = angular.copy(scaffold);
_.each(element.variants[0].tabs, function (tab) {
_.each(tab.properties, function (property) {
@@ -68,7 +154,7 @@
}
});
});
openContent(element, block);
}
@@ -77,7 +163,7 @@
element: element,
title: "TODO: Edit block title here",
view: "views/propertyeditors/blockeditor/blockeditor.editcontent.html",
submit: function(model) {
submit: function (model) {
_.each(element.variants[0].tabs, function (tab) {
_.each(tab.properties, function (property) {
block.content[property.alias] = property.value;
@@ -89,7 +175,7 @@
editorService.close();
},
close: function() {
close: function () {
editorService.close();
}
};
@@ -102,11 +188,11 @@
title: "TODO: Edit settings title here",
view: "views/propertyeditors/blockeditor/blockeditor.editsettings.html",
size: "medium",
submit: function(model) {
submit: function (model) {
console.log("TODO: something with block settings", model)
editorService.close();
},
close: function() {
close: function () {
editorService.close();
}
};
@@ -6,11 +6,21 @@
<div ng-if="!vm.loading">
<umb-block-editor-blocks></umb-block-editor-blocks>
<div>
Add:
<div style="cursor:pointer" ng-click="vm.add(scaffold)" ng-repeat="scaffold in vm.scaffolds" class="di">
<i class="icon {{scaffold.documentType.icon}}"></i>
</div>
<div class="umb-nested-content__footer-bar">
<a href class="umb-nested-content__add-content" ng-class="{ '--disabled': !vm.scaffolds.length }" ng-click="vm.openNodeTypePicker($event)" prevent-default>
<localize key="grid_addElement" ng-if="vm.scaffolds.length > 1"></localize>
<span ng-if="vm.scaffolds.length === 1">
<localize key="general_add"></localize> {{ vm.scaffolds[0].contentTypeName }}
</span>
</a>
</div>
</div>
<umb-overlay
ng-if="vm.overlayMenu.show"
position="target"
size="vm.overlayMenu.size"
view="vm.overlayMenu.view"
model="vm.overlayMenu">
</umb-overlay>
</div>
@@ -281,22 +281,29 @@ angular.module("umbraco")
$scope.openEditorOverlay = function (event, area, index, key) {
var title = "";
localizationService.localize("grid_insertControl").then(function (value) {
title = value;
$scope.editorOverlay = {
view: "itempicker",
filter: area.$allowedEditors.length > 15,
title: title,
availableItems: area.$allowedEditors,
event: event,
show: true,
submit: function (model) {
if (model.selectedItem) {
$scope.addControl(model.selectedItem, area, index);
$scope.editorOverlay.show = false;
$scope.editorOverlay = null;
if (area.$allowedEditors.length > 1) {
title = value;
$scope.editorOverlay = {
view: "itempicker",
filter: area.$allowedEditors.length > 15,
title: title,
size: area.$allowedEditors.some(x => x.thumbnail) ? 'large' : 'small',
availableItems: area.$allowedEditors,
event: event,
show: true,
submit: function (model) {
if (model.selectedItem) {
console.log(model.selectedItem);
$scope.addControl(model.selectedItem, area, index);
$scope.editorOverlay.show = false;
$scope.editorOverlay = null;
}
}
}
};
};
} else {
console.log(area.$allowedEditors[0]);
$scope.addControl(area.$allowedEditors[0], area, index);
}
});
};
@@ -226,7 +226,11 @@
<!-- if area is empty tools -->
<div class="umb-grid-add-more-content" ng-if="area.controls.length > 0 && !sortMode && (area.maxItems == undefined || area.maxItems == '' || area.maxItems == 0 || area.maxItems > area.controls.length)">
<div class="cell-tools-add -bar newbtn" ng-click="openEditorOverlay($event, area, 0, area.$uniqueId);"><localize key="grid_addElement" /></div>
<div class="cell-tools-add -bar newbtn" ng-click="openEditorOverlay($event, area, 0, area.$uniqueId);">
<localize key="grid_addElement" ng-if="area.$allowedEditors.length > 1"></localize>
<span ng-show="area.$allowedEditors.length === 1">
<localize key="general_add"></localize> {{ area.$allowedEditors[0].name }}</span>
</div>
</div>
</div>
@@ -300,6 +304,7 @@
ng-if="editorOverlay.show"
model="editorOverlay"
view="editorOverlay.view"
size="editorOverlay.size"
position="target">
</umb-overlay>
@@ -184,7 +184,9 @@ angular.module("umbraco").controller("Umbraco.PropertyEditors.NestedContent.Prop
$scope.overlayMenu.availableItems.push({
alias: scaffold.contentTypeAlias,
name: scaffold.contentTypeName,
icon: iconHelper.convertFromLegacyIcon(scaffold.icon)
icon: iconHelper.convertFromLegacyIcon(scaffold.icon),
thumbnail: scaffold.thumbnail,
description: scaffold.documentType.description
});
});
@@ -192,7 +194,11 @@ angular.module("umbraco").controller("Umbraco.PropertyEditors.NestedContent.Prop
return;
}
$scope.overlayMenu.size = $scope.overlayMenu.availableItems.length > 6 ? "medium" : "small";
if ($scope.overlayMenu.availableItems.some(x => x.thumbnail)) {
$scope.overlayMenu.size = 'large';
} else {
$scope.overlayMenu.size = $scope.overlayMenu.availableItems.length > 6 ? "medium" : "small";
}
$scope.overlayMenu.pasteItems = [];
var availableNodesForPaste = clipboardService.retriveDataOfType("elementType", contentTypeAliases);
@@ -399,6 +405,9 @@ angular.module("umbraco").controller("Umbraco.PropertyEditors.NestedContent.Prop
});
}
// pass the thumbnail on to the scaffold
scaffold.thumbnail = contentType.thumbnail;
// Store the scaffold object
$scope.scaffolds.push(scaffold);
}
@@ -37,7 +37,8 @@
<div class="umb-nested-content__footer-bar" ng-hide="hasContentTypes === false || nodes.length >= maxItems">
<a href class="umb-nested-content__add-content" ng-class="{ '--disabled': !scaffolds.length }" ng-click="openNodeTypePicker($event)" prevent-default>
<localize key="grid_addElement"></localize>
<localize key="grid_addElement" ng-if="scaffolds.length > 1"></localize>
<span ng-if="scaffolds.length === 1"><localize key="general_add"></localize> {{ scaffolds[0].contentTypeName }}</span>
</a>
</div>