metamaps--metamaps/app/assets/stylesheets/base.scss.erb
Connor Turland 7ee96bf6c6 Into master: two finger pan/zoom, map and topic follows (for internal testing) on the UI, map activity emails (#1084)
* fix topic spec

* fix synapse/mapping spec

* brakeman csrf warning suppressed :|

* follows for maps in the ui for internal testing only still (#1072)

* follows for maps in the ui for testers

* require user for these actions

* match how map follow works

* include ability to unfollow from email

* fixup templates

* add unfollow_from_email to the policies

* Update _cheatsheet.html.erb

Clean up text, clarify, and bring in line with current functionality

* topicsRegex and synapsesRegex should allow commas (#1073)

* even better import csv regexes

* prevent double prompt on file drop import

* topic card in react (#1031)

* its coming along

* links bar

* scssify a bunch

* metacode image working a bit better

* metacode selector in react topic card

* riek editing for name field on topic card

* riek submit on enter

* factor out Title and Links from Topic Card component, but not the listeners

* create working Desc editor

* styling is much better now

* textarea min height for desc

* disallow images in topic card markdown

* shift enter is linebreak, enter is save

* attachments split out, but it's pretty buggy

* move listeners into Links.js

* slightly wider metacodeTitle

* fix positioning on metacode selector

* fix metacode selection

* move metacode and permissions into subcomponents

* fixes

* prevent editing on desc/title if not authorized to edit

* fix topic card draggability

* fix embedly

* fix md test

* remove the removed link card manually with jquery

* fix test syntax

* eslint

* more eslin

* reuse authorizedToEdit

* convert metacode sets to a json object for react

* add the html in react whoop

* fix metacode styling

* sort wasn't working

* finishing metacode select

* readd the above link input border

* fix syntax

* multiline title editable textarea

* more portable metacode selector component

* factor out #metacodeOptions into one react component with a callback :D:D:D

* render metacodeOptions in right click menu with react

* render metacodeOptions in right click menu with react

* fix up right click menu's metacode editing

* fix topic card title character counter

* ignore metamaps secret bundle in ag

* simplify Attachments props

* factor out embedly card into its own component; it seems to help

* link resetter

* fix edit icon on title in topic card

* move mapCount and synapseCount hover/click logic to react

* fix up the showMore control

* metacode selection tweaks

* tweak links bar spacing in topic card

* rubocop

* remove TODOs

* more badass permissions selector

* close permission selector when you click outside

* fix overeager metacode selector

* more modular attachments component

* fix bug in Desc.js

* fix right click styling

* permission changes are different than edit rights

* bad module ref

* ensure maxLength on topic titles

* hellz yeah (#1074)

* fix drop from two touches to one

* don't commit activity service

* ability to select/unselect all metacodes in custom set with keyboard shortcut (fix #390) (#1078)

* ability to select/unselect all metacodes in custom set with keyboard shortcut

* select all button

* nicer all/none buttons

* set up react testing (#1080)

* install mocha-webpack. also switch hark to npm version instead of github version

* well, mocha-webpack runs

* add jsdom for tests

* upgrade to webpack 2

* fix npm run test errors

* ImportDialogBox component tests

* Fixes bug where pressing delete key while editing text will suggest... (#1083)

* Fixes bug where pressing delete key while editing text will suggest the deletion of selected map entities

* Changed the DEL key to remove entities instead of delete them

* temporarily disable code climate duplication engine

* add topic following for internal testing

* daily map activity emails (#1081)

* data prepared, task setup

* add the basics of the email template

* cover granular permissions

* unfollow this map

* break out permissions tests better

* rename so test runs
2017-03-06 22:49:46 -05:00

1046 lines
20 KiB
Plaintext

.nameCounter {
position: absolute;
bottom: 1px;
right: 2px;
font-size: 11px;
font-family: helvetica;
color: #727272;
line-height: 11px;
display: none;
}
.riek-editing + .nameCounter {
display: block;
}
.nameCounter.forMap {
color: #FFF;
bottom: -11px;
}
.nameCounter.forTopic {
}
#center-container {
position:relative;
height:100%;
width:100%;
/* background-color:#031924; */
color:#444;
}
.showcard {
position:absolute;
display:none;
top:100px;
left:100px;
width:300px;
background-color:#F5F5F5;
text-align: left;
overflow: visible;
z-index:2;
color: #424242;
border-radius:2px;
box-shadow: 0px 3px 3px rgba(0,0,0,0.23), 0 3px 3px rgba(0,0,0,0.16);
}
.text {
margin: 7px;
}
#infovis {
width:100%;
height:100%;
position: absolute;
display: none;
}
.showcard .permission {
width:100%;
height:100%;
}
.CardOnGraph {
display:block;
position:relative;
width:100%;
min-height:360px;
z-index: 25;
}
.CardOnGraph.hasAttachment {
min-height:0;
}
.CardOnGraph .title {
word-break: break-word;
font-size: 18px;
line-height: 22px;
display: table;
padding: 8px 0 16px;
height: 80px;
text-align: center;
font-family: 'din-regular', sans-serif;
width: 300px;
position: relative;
}
.CardOnGraph .titleWrapper {
display: table-cell;
vertical-align: middle;
padding: 0 16px;
&.riek-editing {
position: absolute;
top: 32px;
}
}
.canEdit #titleActivator:hover {
background-image: url(<%= asset_data_uri('edit.png') %>);
background-repeat: no-repeat;
background-position: bottom right;
cursor: text;
}
.showcard .title .riek-editing {
font-family: 'din-regular', sans-serif;
color: #424242;
font-size: 18px;
line-height: 22px;
height: 3em;
padding: 5px 0;
width: 100%;
margin: 0;
border: 0;
outline: none;
background: none;
text-align:center;
resize: none;
}
.CardOnGraph .scroll {
display:block;
padding: 8px 0 8px 16px;
height: 152px;
font-size: 13px;
line-height:15px;
font-family: helvetica, sans-serif;
overflow-y: auto;
}
.CardOnGraph.hasAttachment .scroll {
height: auto;
}
.CardOnGraph .desc .riek-editing {
font-size: 13px;
line-height:15px;
font-family: helvetica, sans-serif;
color: #424242;
padding: 0;
width: 100%;
margin: 0;
border: 0;
outline: none;
font-size: 12px;
line-height: 15px;
background: none;
resize: none;
}
/*
* Styling for Markdown in topic cards
*/
.CardOnGraph .desc {
p, ol, ul {
padding: 0.15em 0;
}
h1, h2, h3, h4, h5, h6 {
font-style: normal;
padding: 0.25em 0;
}
ol,
ul {
margin-left: 1em;
}
a:hover {
text-decoration: underline;
opacity: 0.9;
}
}
/*
* End Markdown styling
*/
.CardOnGraph .riek_desc {
display:block;
margin-top:2px;
padding-right: 18px;
margin-right: 8px;
min-height: 7em;
}
.canEdit .CardOnGraph .riek_desc:hover {
background-image: url(<%= asset_data_uri('edit.png') %>);
background-position: top right;
background-repeat: no-repeat;
cursor: text;
}
#edit_synapse .best_in_place_desc {
width: auto;
}
.CardOnGraph .links {
position: relative;
border-bottom: 1px solid #BDBDBD;
border-top: 1px solid #BDBDBD;
background-color: #e0e0e0;
.linkItem {
float: left;
z-index: 1;
position: relative;
color: #424242;
font-size: 14px;
line-height: 14px;
a {
color: #424242;
}
}
.icon {
position: absolute;
z-index: 1;
padding: 0;
height: 48px;
width: 100%;
.metacodeImage {
cursor: move;
position: relative;
left: -23px;
top: 1px;
width: 46px;
height: 46px;
background-size:46px 46px;
background-position:0 0;
background-repeat:no-repeat;
}
}
.contributor {
bottom: 7px;
margin-left: 40px;
.contributorIcon {
position: relative;
vertical-align: middle;
border-radius: 16px;
margin: 5px;
top: 8px;
left: 0;
border-radius: 16px;
}
span {
font-family: 'din-regular', sans-serif;
font-size: 14px;
}
.contributorName {
display: none;
position: absolute;
background: black;
text-align: center;
color: white;
border-radius: 2px;
font-family: din-regular;
line-height: 15px;
font-size: 12px;
padding: 3px 5px 2px;
white-space: nowrap;
margin-top: 8px;
&:before {
content: '';
position: absolute;
top: 26px;
left: 10px;
margin-top: -30px;
width: 0;
height: 0;
border-bottom: 4px solid #000000;
border-left: 5px solid transparent;
border-right: 5px solid transparent;
}
}
&:hover .contributorName {
display: block;
}
}
.mapCount {
padding:17px 0 17px 36px;
margin-left: 12px;
.mapCountIcon {
position: absolute;
top: 8px;
left: 0;
width: 32px;
height: 32px;
background-image: url(<%= asset_data_uri('map32_sprite.png') %>);
background-repeat: no-repeat;
background-position: 0 0;
cursor: pointer;
}
&:hover .mapCountIcon {
background-position: 0 -32px;
}
.tip, .hoverTip {
top: 44px;
left: 0px;
font-size: 12px !important;
&:before {
content: '';
position: absolute;
top: 26px;
left: 10px;
margin-top: -30px;
width: 0;
height: 0;
border-bottom: 4px solid #000000;
border-left: 5px solid transparent;
border-right: 5px solid transparent;
}
}
.hoverTip {
white-space: nowrap;
font-family: 'din-regular';
top: 44px;
left: 0px;
font-size: 12px !important;
position: absolute;
background: black;
color: white;
border-radius: 4px;
line-height: 17px;
padding: 3px 5px 2px;
z-index: 100;
}
.tip a {
color: white;
}
.tip a:hover {
color: #757575;
}
.tip li {
list-style-type: none;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
padding: 6px 10px;
display: block;
height: 14px;
font-family: 'din-regular', helvetica, sans-serif;
font-size: 14px;
line-height: 14px;
position: relative;
}
}
.synapseCount {
margin-left: 26px;
width: 24px;
padding:17px 0 17px 32px;
.synapseCountIcon {
position: absolute;
top: 8px;
left: 0;
width: 32px;
height: 32px;
background-image: url(<%= asset_data_uri('synapse32_sprite.png') %>);
background-repeat: no-repeat;
background-position: 0 0;
}
hover .synapseCountIcon {
background-position: 0 -32px;
}
.tip {
position: absolute;
background: black;
width: auto;
top: 44px;
color: white;
white-space: nowrap;
border-radius: 2px;
font-size: 12px !important;
font-family: 'din-regular';
line-height: 12px;
padding: 4px 4px 4px;
z-index: 100;
}
.tip:before {
content: '';
position: absolute;
margin-top: -8px;
margin-left: 6px;
width: 0;
height: 0;
border-bottom: 4px solid black;
border-left: 5px solid transparent;
border-right: 5px solid transparent;
}
}
}
.showMore {
cursor: pointer;
color: #4FC059;
}
.mapPerm {
width: 32px;
height: 32px;
padding: 0;
min-width: 32px;
margin-top: 8px;
margin-left: 8px;
background-image: url(<%= asset_data_uri('permissions32_sprite.png') %>);
background-position: 0 0;
}
.mapPerm.co {
background-position: 0 0;
}
.mapPerm.pu {
background-position: -64px 0;
}
.mapPerm.pr {
background-position: -32px 0;
}
.yourTopic .mapPerm:hover, .yourEdge .mapPerm:hover {
background-image: url(<%= asset_data_uri('arrowperms_sprite.png') %>);
background-position: -32px 0;
cursor:pointer;
}
.yourTopic .mapPerm.minimize, .yourEdge .mapPerm.minimize {
background-image: url(<%= asset_data_uri('arrowperms_sprite.png') %>) !important;
background-position: 0 0;
cursor: pointer;
}
.mapPerm .permissionSelect {
list-style: none;
width: 32px;
height: 64px;
position: relative;
top: 32px;
}
.mapPerm .permissionSelect li {
width: 32px;
height: 32px;
background-repeat: no-repeat;
background-position: 0 0;
background-image: url(<%= asset_data_uri('permissions32_sprite.png') %>);
}
.mapPerm .permissionSelect .commons {
background-position: 0 0;
}
.mapPerm .permissionSelect .public {
background-position: -64px 0;
}
.mapPerm .permissionSelect .private {
background-position: -32px 0;
}
.mapPerm .permissionSelect .commons:hover {
background-position: 0 -32px;
}
.mapPerm .permissionSelect .public:hover {
background-position: -64px -32px;
}
.mapPerm .permissionSelect .private:hover {
background-position: -32px -32px;
}
.CardOnGraph .metacodeTitle {
font-style: italic;
font-family: 'vinyl';
text-transform: uppercase;
position: absolute;
line-height: 24px;
height: 26px;
font-size: 24px;
display: none;
width: 90%;
padding: 13px 0 9px 10%;
background-color: #E0E0E0;
color: #424242;
}
.permission.canEdit .metacodeTitle {
cursor:pointer;
}
.permission.canEdit .expandMetacodeSelect {
position: absolute;
top: 16px;
right: 16px;
width: 16px;
height: 16px;
background-image: url(<%= asset_data_uri('arrowright_sprite.png') %>);
background-repeat: no-repeat;
background-position: 0 -32px;
}
.permission.canEdit .minimize .expandMetacodeSelect {
}
.CardOnGraph .metacodeName {
display: inline-block;
}
.CardOnGraph .metacodeSelect {
display:none;
width:auto;
z-index: 2;
background: #EAEAEA;
white-space: nowrap;
position: absolute;
left: 300px;
top: -1px;
}
.CardOnGraph .metacodeSelect ul {
position: relative;
line-height: 14px;
font-size: 14px;
font-family: helvetica, sans-serif;
display:block;
width: 100%;
margin:0;
padding: 0;
list-style:none;
border: 1px solid #BDBDBD;
}
.CardOnGraph .metacodeSelect ul li {
background-color: #F5F5F5;
cursor:pointer;
position: relative;
padding: 9px 24px 9px 12px;
}
.CardOnGraph .metacodeSelect ul li:hover {
background-color: #E0E0E0;
}
.CardOnGraph .metacodeSelect ul li img {
position: absolute;
top: 4px;
left: 8px;
}
.CardOnGraph .metacodeSelect ul li .mSelectName {
margin-left: 28px;
margin-right: 4px;
}
.CardOnGraph .metacodeSelect ul ul {
display:none;
position: absolute;
left: 100%;
top: -1px;
max-height: 270px;
overflow-y: auto;
width: auto;
}
.CardOnGraph .metacodeSelect li:hover ul {
display: block;
}
.CardOnGraph .metacodeSelect .expandMetacodeSet {
position: absolute;
top: 8px;
right: 8px;
width: 16px;
height: 16px;
background-image: url(<%= asset_data_uri('arrowright_sprite.png') %>);
background-repeat: no-repeat;
background-position: 0 -32px;
}
/* too close to right side of screen case */
.onRightEdge.metacodeSelect {
right: 1px;
left: auto;
top: 46px;
}
.onRightEdge.metacodeSelect ul ul {
left: auto;
right: 100%;
}
/* too close to bottom of screen case */
.onBottomEdge.metacodeSelect {
bottom: 0;
}
.onBottomEdge.metacodeSelect ul ul {
top: auto;
bottom: 0;
}
.tip li {
list-style-type: none;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
padding: 10px 34px;
display: block;
height: 14px;
font-family: 'din-regular', helvetica, sans-serif;
font-size: 14px;
line-height: 14px;
position: relative;
}
.CardOnGraph .hoverForTip:hover .tip, #mapContribs:hover .tip {
display:block;
}
.CardOnGraph .tip {
position: absolute;
background: black;
top: 35px;
left: 0;
color: white;
border-radius: 4px;
font-size:15px !important;
line-height:17px;
padding: 3px 5px 2px;
z-index:100;
}
#embedlyLinkLoader {
margin: 0 auto;
width: 28px;
}
.CardOnGraph .link-adder {
width:100%;
height:47px;
position: relative;
border-top: 1px solid #BDBDBD;
}
.link-adder a {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
display: block;
margin-left: 40px;
padding-top:9px;
font-size: 16px;
line-height: 16px;
}
#addlink, #addupload {
display: inline-block;
width: 102px;
height: 12px;
text-align: left;
padding: 18px 0 18px 48px;
font-size: 12px;
color: #9e9e9e;
cursor: pointer;
position: relative;
}
#addlink:hover, #addupload:hover {
color: #616161;
}
.attachmentIcon {
background-repeat: no-repeat;
background-position: 0 0;
width: 24px;
height: 24px;
position: absolute;
top: 12px;
left: 12px;
}
#linkIcon {
background-image: url(<%= asset_data_uri('link_sprite.png') %>);
}
#uploadIcon {
background-image: url(<%= asset_data_uri('upload_sprite.png') %>);
}
#addlink:hover #linkIcon, #addupload:hover #uploadIcon {
background-position: 0 -24px;
}
.addLink {
position: relative;
}
#addLinkInput {
height: 32px;
width: 268px;
padding: 8px 16px 8px 16px;
position: relative;
border: none;
line-height: 14px;
}
#addLinkInput input{
padding: 9px 7px 9px 31px;
height: 12px;
width: 198px;
margin: 0 0 0 0;
border: none;
outline: none;
font-size: 12px;
line-height: 12px;
background: white;
color: black;
font-family: 'din-regular', helvetica, sans-serif;
}
#addLinkIcon {
position: absolute;
top: 12px;
left: 20px;
width: 24px;
height: 24px;
background-repeat: no-repeat;
background-position: 0 0;
background-image: url(<%= asset_data_uri('link_sprite.png') %>);
pointer-events: none;
z-index: 1;
}
#addLinkReset {
position: absolute;
top: 8px;
right: 15px;
width: 32px;
height: 32px;
cursor: pointer;
float:none;
background-image: url(<%= asset_data_uri('remove.png') %>);
background-repeat: no-repeat;
background-position: center center;
}
.embeds.nonEmbedlyLink {
padding-top: 24px;
}
#embedlyLink {
border-left: 8px solid #CCC;
overflow: hidden;
padding: 8px;
padding-left: 12px;
-moz-box-shadow: 1px 1px 5px 0 #ccc;
-webkit-box-shadow: 1px 1px 5px 0 #ccc;
box-shadow: 1px 1px 5px 0 #ccc;
-moz-border-radius-topright: 5px;
-webkit-border-top-right-radius: 5px;
border-top-right-radius: 5px;
-moz-border-radius-bottomright: 8px;
-webkit-border-bottom-right-radius: 8px;
border-bottom-right-radius: 8px;
margin: 8px;
}
.linkActions {
position: relative;
}
.CardOnGraph .embeds {
position: relative;
overflow: hidden;
}
#linkremove {
background-image: url(<%= asset_data_uri 'remove.png' %>);
background-repeat: no-repeat;
background-position: center center;
width: 24px;
height: 24px;
position: absolute;
top: 3px;
right: 0;
cursor: pointer;
}
.cardSettings {
position: absolute;
left: 12px;
top: 12px;
}
.editSettings {
background: #ddd;
border-radius: 10px;
padding: 5px 0 5px 5px;
position: relative;
left: 16px;
width: 175px;
opacity: 0.98;
box-shadow: 4px 4px 5px #888888;
border: 1px solid #AAA;
z-index: 5;
}
.editSettings span {
display: inline-block;
}
#edit_synapse {
border-radius: 2px;
width: 270px;
box-shadow: 0px 3px 3px rgba(0,0,0,0.23), 0 3px 3px rgba(0,0,0,0.16);
}
#editSynUpperBar {
background: #FFFFFF url(<%= asset_data_uri('synapse32.png') %>) no-repeat 8px center;
min-height: 48px;
height: 48px;
border-bottom: 1px solid #222222;
display: table;
width: 100%;
}
#editSynLowerBar {
background-color: #E0E0E0;
height: 48px;
position: relative;
}
#synapseCardCount {
font-size: 18px;
display: table-cell;
vertical-align: middle;
padding-left: 44px;
width: 20px;
line-height: 18px;
}
#edit_synapse_desc {
font-size: 14px;
font-family: 'din-regular', helvetica, sans-serif;
padding: 8px 38px 8px 4px;
display: table-cell;
vertical-align: middle;
line-height: 16px;
}
.canEdit span.titleWrapper:hover {
background-image: url(<%= asset_data_uri('edit.png') %>);
background-repeat: no-repeat;
background-position: 95% 95%;
cursor: text;
}
#edit_synapse .best_in_place_desc textarea {
font-family: 'din-regular', sans-serif;
color: #424242;
font-size: 14px;
line-height: 16px;
width: 100%;
height: auto;
margin: 0;
padding: 0;
border: 0;
outline: none;
background: none;
resize: none;
}
#dropdownSynapses {
position: absolute;
width: 24px;
height: 24px;
top: 12px;
right: 8px;
background-image: url(<%= asset_data_uri('arrowdown_sprite.png') %>);
background-repeat: no-repeat;
background-position: 4px -12px;
}
#dropdownSynapses:hover {
background-position: 4px -28px;
cursor: pointer;
}
#switchSynapseList {
display: none;
list-style: none;
width: 270px;
position: absolute;
z-index: 1;
background: #FFFFFF;
border-bottom: 1px solid #BBBBBB;
}
#switchSynapseList li {
padding: 8px 8px 8px 68px;
cursor: pointer;
font-family: 'din-regular';
font-size: 14px;
line-height: 16px;
}
#switchSynapseList li:hover {
background: #DAB539;
}
#edgeUser {
display:inline-block;
position: relative;
margin: 12px 0 0 11px;
}
#edgeUser img {
border-radius: 12px;
}
#edgeUser.hoverForTip:hover .tip {
display:block;
}
#edgeUser .tip {
display: none;
position: absolute;
background: black;
text-align: center;
text-transform: none;
color: white;
border-radius: 2px;
font-family: din-regular;
line-height: 15px;
font-size: 12px;
padding: 3px 5px 2px;
white-space: nowrap;
margin-top: 9px;
font-style: normal;
}
#edgeUser:hover div:before{
content: '';
position: absolute;
margin-top: -7px;
margin-left: 2px;
width: 0;
height: 0;
border-bottom: 4px solid #000000;
border-left: 5px solid transparent;
border-right: 5px solid transparent;
}
#edit_synapse .mapPerm {
position: absolute;
top: 0px;
left: 40px;
}
#edit_synapse_left, #edit_synapse_right {
position: absolute;
height: 24px;
width: 24px;
top: 12px;
background-repeat: no-repeat;
}
#edit_synapse_right {
background-image: url(<%= asset_data_uri('synapsedirectionright_sprite.png') %>);
right: 16px;
}
#edit_synapse_left {
background-image: url(<%= asset_data_uri('synapsedirectionleft_sprite.png') %>);
right: 56px;
}
#edit_synapse_left.checked, #edit_synapse_right.checked {
background-position: 0 -48px;
}
.canEdit #edit_synapse_left, .canEdit #edit_synapse_right {
cursor: pointer;
}
.canEdit #edit_synapse_left:not(.checked):hover, .canEdit #edit_synapse_right:not(.checked):hover {
background-position: 0 -24px;
}
/* mapper card */
.mapper {
display: inline-block;
vertical-align: bottom;
width:220px;
height:340px;
font-size: 12px;
text-align: left;
overflow: visible;
background: #E0E0E0;
border-radius:2px;
margin:16px;
box-shadow: 0px 3px 3px rgba(0,0,0,0.23), 0 3px 3px rgba(0,0,0,0.16);
}
.mapperCard {
width:100%;
height:308px;
padding: 16px 0;
color:#424242;
}
.mapperImage {
margin: 16px auto 0;
width: 96px;
}
.mapperImage img {
border-radius: 48px;
box-shadow: 0px 3px 3px rgba(0,0,0,0.23);
}
.mapperName {
font-size: 24px;
text-align: center;
margin-top: 24px;
padding: 0 5%;
white-space: nowrap;
text-overflow: ellipsis;
width: 90%;
overflow: hidden;
}
.mapperInfo {
color: #DB5D5D;
text-align:center;
margin-top: 16px;
}
.mapperMetadata {
background: url(<%= asset_data_uri('profile_card_sprite.png') %>) no-repeat center 0;
height: 64px;
width: 160px;
margin: 16px auto 0;
}
.mapperMetadata .metadataSection {
width: 32%;
display: inline-block;
text-align: center;
}
.mapperMetadata .metadataSection div {
font-size: 16px;
color: #424242;
margin: 14px 0;
}
.mapperMetadata .metadataMaps {
color: #DB5D5D;
}
.mapperMetadata .metadataTopics {
color: #4FC059;
}
.mapperMetadata .metadataSynapses {
color: #DAB539;
}