mirror of
				http://git.whoc.org.uk/git/password-manager.git
				synced 2025-11-04 04:57:35 +01:00 
			
		
		
		
	Fixed minor issues reported by user after official release of /delta
This commit is contained in:
		@@ -628,6 +628,9 @@ html {
 | 
				
			|||||||
input[type=text] {
 | 
					input[type=text] {
 | 
				
			||||||
  -webkit-appearance: none; }
 | 
					  -webkit-appearance: none; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.mainPage {
 | 
				
			||||||
 | 
					  height: 100%; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.mainPage > #selectionPanel {
 | 
					.mainPage > #selectionPanel {
 | 
				
			||||||
  position: fixed;
 | 
					  position: fixed;
 | 
				
			||||||
  z-index: 20;
 | 
					  z-index: 20;
 | 
				
			||||||
@@ -687,6 +690,10 @@ input[type=text] {
 | 
				
			|||||||
    flex: none;
 | 
					    flex: none;
 | 
				
			||||||
    cursor: pointer; }
 | 
					    cursor: pointer; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Firefox considers 100% respect to height of the whole window, this is rule is necessary to eliminate the card toolbar offset. */
 | 
				
			||||||
 | 
					@-moz-document url-prefix() {
 | 
				
			||||||
 | 
					  #mainPanel.extra-wide .subpanel.cardContent {
 | 
				
			||||||
 | 
					    height: calc(100% - 50px); } }
 | 
				
			||||||
#mainPanel {
 | 
					#mainPanel {
 | 
				
			||||||
  left: 0px; }
 | 
					  left: 0px; }
 | 
				
			||||||
  #mainPanel.extra-wide {
 | 
					  #mainPanel.extra-wide {
 | 
				
			||||||
@@ -728,7 +735,8 @@ input[type=text] {
 | 
				
			|||||||
      display: none;
 | 
					      display: none;
 | 
				
			||||||
      visibility: hidden; }
 | 
					      visibility: hidden; }
 | 
				
			||||||
    #mainPanel.extra-wide div.addCardButton {
 | 
					    #mainPanel.extra-wide div.addCardButton {
 | 
				
			||||||
      margin-left: 20%; }
 | 
					      margin-left: 20%;
 | 
				
			||||||
 | 
					      z-index: 5; }
 | 
				
			||||||
  #mainPanel.wide {
 | 
					  #mainPanel.wide {
 | 
				
			||||||
    transition: left 0.3s ease-in-out; }
 | 
					    transition: left 0.3s ease-in-out; }
 | 
				
			||||||
    #mainPanel.wide .container {
 | 
					    #mainPanel.wide .container {
 | 
				
			||||||
@@ -764,7 +772,8 @@ input[type=text] {
 | 
				
			|||||||
          visibility: visible;
 | 
					          visibility: visible;
 | 
				
			||||||
          display: block; }
 | 
					          display: block; }
 | 
				
			||||||
    #mainPanel.narrow div.addCardButton {
 | 
					    #mainPanel.narrow div.addCardButton {
 | 
				
			||||||
      margin-left: 75%; }
 | 
					      margin-left: 75%;
 | 
				
			||||||
 | 
					      z-index: 5; }
 | 
				
			||||||
  #mainPanel.open.left {
 | 
					  #mainPanel.open.left {
 | 
				
			||||||
    width: 100%;
 | 
					    width: 100%;
 | 
				
			||||||
    margin: 0 auto;
 | 
					    margin: 0 auto;
 | 
				
			||||||
@@ -1050,7 +1059,7 @@ div.cardContent {
 | 
				
			|||||||
      -webkit-border-radius: 30px;
 | 
					      -webkit-border-radius: 30px;
 | 
				
			||||||
      -moz-border-radius: 30px;
 | 
					      -moz-border-radius: 30px;
 | 
				
			||||||
      border-radius: 30px;
 | 
					      border-radius: 30px;
 | 
				
			||||||
      z-index: 1;
 | 
					      z-index: 5;
 | 
				
			||||||
      position: relative;
 | 
					      position: relative;
 | 
				
			||||||
      bottom: 0px;
 | 
					      bottom: 0px;
 | 
				
			||||||
      font-size: 45pt;
 | 
					      font-size: 45pt;
 | 
				
			||||||
@@ -1119,7 +1128,8 @@ div.cardContent {
 | 
				
			|||||||
        position: relative;
 | 
					        position: relative;
 | 
				
			||||||
        z-index: 11; }
 | 
					        z-index: 11; }
 | 
				
			||||||
        div.cardContent div.cardDetail.column div.editWrapper > div.edit .content {
 | 
					        div.cardContent div.cardDetail.column div.editWrapper > div.edit .content {
 | 
				
			||||||
          background-color: white; }
 | 
					          background-color: white;
 | 
				
			||||||
 | 
					          -webkit-transform: translate3d(0, 0, 0); }
 | 
				
			||||||
      div.cardContent div.cardDetail.column div.editWrapper .mask {
 | 
					      div.cardContent div.cardDetail.column div.editWrapper .mask {
 | 
				
			||||||
        background-color: rgba(0, 0, 0, 0.6); }
 | 
					        background-color: rgba(0, 0, 0, 0.6); }
 | 
				
			||||||
    div.cardContent div.cardDetail.column > div.view {
 | 
					    div.cardContent div.cardDetail.column > div.view {
 | 
				
			||||||
@@ -1181,10 +1191,12 @@ div.cardContent {
 | 
				
			|||||||
  flex: none;
 | 
					  flex: none;
 | 
				
			||||||
  height: 48px;
 | 
					  height: 48px;
 | 
				
			||||||
  line-height: 48px; }
 | 
					  line-height: 48px; }
 | 
				
			||||||
  .cardDetailToolbar.edit li.save {
 | 
					  .cardDetailToolbar.edit {
 | 
				
			||||||
    cursor: default; }
 | 
					    -webkit-transform: translate3d(0, 0, 0); }
 | 
				
			||||||
  .cardDetailToolbar.edit.hasPendingChanges li.save {
 | 
					    .cardDetailToolbar.edit li.save {
 | 
				
			||||||
    cursor: pointer; }
 | 
					      cursor: default; }
 | 
				
			||||||
 | 
					    .cardDetailToolbar.edit.hasPendingChanges li.save {
 | 
				
			||||||
 | 
					      cursor: pointer; }
 | 
				
			||||||
  .cardDetailToolbar.commands > div {
 | 
					  .cardDetailToolbar.commands > div {
 | 
				
			||||||
    display: -webkit-box;
 | 
					    display: -webkit-box;
 | 
				
			||||||
    display: -webkit-flex;
 | 
					    display: -webkit-flex;
 | 
				
			||||||
@@ -1572,7 +1584,7 @@ div.dialogBox {
 | 
				
			|||||||
    font-size: 30pt;
 | 
					    font-size: 30pt;
 | 
				
			||||||
    line-height: 70px; }
 | 
					    line-height: 70px; }
 | 
				
			||||||
  #loginPage div.loginForm.narrow footer {
 | 
					  #loginPage div.loginForm.narrow footer {
 | 
				
			||||||
    max-height: 25px;
 | 
					    /* max-height: 25px; */
 | 
				
			||||||
    line-height: 20pt; }
 | 
					    line-height: 20pt; }
 | 
				
			||||||
  #loginPage div.loginForm.extra-short header {
 | 
					  #loginPage div.loginForm.extra-short header {
 | 
				
			||||||
    font-size: 18pt; }
 | 
					    font-size: 18pt; }
 | 
				
			||||||
@@ -1592,17 +1604,19 @@ div.dialogBox {
 | 
				
			|||||||
  #loginPage div.loginForm.extra-short footer {
 | 
					  #loginPage div.loginForm.extra-short footer {
 | 
				
			||||||
    font-size: 14pt; }
 | 
					    font-size: 14pt; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.links ul li {
 | 
					.links ul {
 | 
				
			||||||
  color: white;
 | 
					  margin-bottom: 1em; }
 | 
				
			||||||
  cursor: pointer; }
 | 
					  .links ul li {
 | 
				
			||||||
  .links ul li:after {
 | 
					    color: white;
 | 
				
			||||||
    content: '-';
 | 
					    cursor: pointer; }
 | 
				
			||||||
    padding-left: 4px;
 | 
					    .links ul li:after {
 | 
				
			||||||
    padding-right: 4px; }
 | 
					      content: '-';
 | 
				
			||||||
  .links ul li:last-child:after {
 | 
					      padding-left: 4px;
 | 
				
			||||||
    content: '';
 | 
					      padding-right: 4px; }
 | 
				
			||||||
    padding-left: 0px;
 | 
					    .links ul li:last-child:after {
 | 
				
			||||||
    padding-right: 0px; }
 | 
					      content: '';
 | 
				
			||||||
 | 
					      padding-left: 0px;
 | 
				
			||||||
 | 
					      padding-right: 0px; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#registrationPage {
 | 
					#registrationPage {
 | 
				
			||||||
  background-color: black;
 | 
					  background-color: black;
 | 
				
			||||||
@@ -2568,33 +2582,19 @@ span.count {
 | 
				
			|||||||
        display: block;
 | 
					        display: block;
 | 
				
			||||||
        margin: 1em 0;
 | 
					        margin: 1em 0;
 | 
				
			||||||
        border: 0; }
 | 
					        border: 0; }
 | 
				
			||||||
      #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview li.card {
 | 
					      #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview {
 | 
				
			||||||
        display: -webkit-box;
 | 
					        display: -webkit-box;
 | 
				
			||||||
        display: -webkit-flex;
 | 
					        display: -webkit-flex;
 | 
				
			||||||
        display: -moz-flex;
 | 
					        display: -moz-flex;
 | 
				
			||||||
        display: -ms-flexbox;
 | 
					        display: -ms-flexbox;
 | 
				
			||||||
        display: flex;
 | 
					        display: flex;
 | 
				
			||||||
        -webkit-box-direction: normal;
 | 
					        -webkit-box-direction: normal;
 | 
				
			||||||
        -webkit-box-orient: horizontal;
 | 
					        -webkit-box-orient: vertical;
 | 
				
			||||||
        -webkit-flex-direction: row;
 | 
					        -webkit-flex-direction: column;
 | 
				
			||||||
        -moz-flex-direction: row;
 | 
					        -moz-flex-direction: column;
 | 
				
			||||||
        -ms-flex-direction: row;
 | 
					        -ms-flex-direction: column;
 | 
				
			||||||
        flex-direction: row;
 | 
					        flex-direction: column; }
 | 
				
			||||||
        padding-top: 15px;
 | 
					        #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview div.preview {
 | 
				
			||||||
        padding-bottom: 0px;
 | 
					 | 
				
			||||||
        border-bottom: 1px solid #333; }
 | 
					 | 
				
			||||||
        #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview li.card.archived {
 | 
					 | 
				
			||||||
          background-color: #333; }
 | 
					 | 
				
			||||||
        #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview li.card input {
 | 
					 | 
				
			||||||
          width: 30px;
 | 
					 | 
				
			||||||
          margin-top: 6px;
 | 
					 | 
				
			||||||
          -webkit-box-flex: none;
 | 
					 | 
				
			||||||
          -webkit-flex: none;
 | 
					 | 
				
			||||||
          -moz-box-flex: none;
 | 
					 | 
				
			||||||
          -moz-flex: none;
 | 
					 | 
				
			||||||
          -ms-flex: none;
 | 
					 | 
				
			||||||
          flex: none; }
 | 
					 | 
				
			||||||
        #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview li.card div.cardContent {
 | 
					 | 
				
			||||||
          -webkit-box-flex: auto;
 | 
					          -webkit-box-flex: auto;
 | 
				
			||||||
          -webkit-flex: auto;
 | 
					          -webkit-flex: auto;
 | 
				
			||||||
          -moz-box-flex: auto;
 | 
					          -moz-box-flex: auto;
 | 
				
			||||||
@@ -2611,44 +2611,140 @@ span.count {
 | 
				
			|||||||
          -webkit-flex-direction: column;
 | 
					          -webkit-flex-direction: column;
 | 
				
			||||||
          -moz-flex-direction: column;
 | 
					          -moz-flex-direction: column;
 | 
				
			||||||
          -ms-flex-direction: column;
 | 
					          -ms-flex-direction: column;
 | 
				
			||||||
          flex-direction: column;
 | 
					          flex-direction: column; }
 | 
				
			||||||
          height: auto; }
 | 
					          #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview div.preview div.selectButtons {
 | 
				
			||||||
          #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview li.card div.cardContent h3 {
 | 
					            -webkit-box-flex: none;
 | 
				
			||||||
            font-size: 24pt;
 | 
					            -webkit-flex: none;
 | 
				
			||||||
            padding-bottom: 6px; }
 | 
					            -moz-box-flex: none;
 | 
				
			||||||
          #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview li.card div.cardContent ul.tagList li {
 | 
					            -moz-flex: none;
 | 
				
			||||||
            display: inline-block;
 | 
					            -ms-flex: none;
 | 
				
			||||||
            padding-right: 10px;
 | 
					            flex: none;
 | 
				
			||||||
            padding-bottom: 5px; }
 | 
					            color: gray; }
 | 
				
			||||||
            #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview li.card div.cardContent ul.tagList li:before {
 | 
					            #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview div.preview div.selectButtons span {
 | 
				
			||||||
              content: 'tag';
 | 
					              padding-right: 10px; }
 | 
				
			||||||
              font-family: 'clipperz-icons';
 | 
					            #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview div.preview div.selectButtons a {
 | 
				
			||||||
              -webkit-font-feature-settings: "liga" 1, "dlig" 1;
 | 
					              cursor: pointer;
 | 
				
			||||||
              -moz-font-feature-settings: "liga" 1, "dlig" 1;
 | 
					              color: white;
 | 
				
			||||||
              -ms-font-feature-settings: "liga" 1, "dlig" 1;
 | 
					              font-weight: bold; }
 | 
				
			||||||
              -o-font-feature-settings: "liga" 1, "dlig" 1;
 | 
					              #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview div.preview div.selectButtons a:after {
 | 
				
			||||||
              font-feature-settings: "liga" 1, "dlig" 1;
 | 
					                font-weight: normal;
 | 
				
			||||||
              -webkit-font-smoothing: antialiased;
 | 
					                color: gray;
 | 
				
			||||||
              text-rendering: optimizeLegibility;
 | 
					                content: " - "; }
 | 
				
			||||||
              font-size: 10pt;
 | 
					              #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview div.preview div.selectButtons a:last-child:after {
 | 
				
			||||||
              padding-right: 5px;
 | 
					                content: ""; }
 | 
				
			||||||
              line-height: 28px;
 | 
					          #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview div.preview div.tagButtons {
 | 
				
			||||||
              color: #ccc; }
 | 
					            -webkit-box-flex: none;
 | 
				
			||||||
          #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview li.card div.cardContent dl dt {
 | 
					            -webkit-flex: none;
 | 
				
			||||||
            font-size: 12pt;
 | 
					            -moz-box-flex: none;
 | 
				
			||||||
 | 
					            -moz-flex: none;
 | 
				
			||||||
 | 
					            -ms-flex: none;
 | 
				
			||||||
 | 
					            flex: none;
 | 
				
			||||||
            color: gray;
 | 
					            color: gray;
 | 
				
			||||||
            line-height: 16pt; }
 | 
					            padding-top: 5px;
 | 
				
			||||||
          #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview li.card div.cardContent dl dd {
 | 
					            padding-bottom: 5px;
 | 
				
			||||||
            font-size: 16pt;
 | 
					            border-bottom: 1px solid #333; }
 | 
				
			||||||
            color: white;
 | 
					            #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview div.preview div.tagButtons label {
 | 
				
			||||||
            line-height: 24pt;
 | 
					              cursor: pointer;
 | 
				
			||||||
            padding-bottom: 6pt; }
 | 
					              line-height: 1.5em; }
 | 
				
			||||||
            #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview li.card div.cardContent dl dd.PASSWORD {
 | 
					            #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview div.preview div.tagButtons input {
 | 
				
			||||||
              font-family: clipperz-password; }
 | 
					              font-family: "clipperz-font";
 | 
				
			||||||
          #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview li.card div.cardContent p {
 | 
					              font-size: 12pt;
 | 
				
			||||||
            font-size: 10pt;
 | 
					              color: white;
 | 
				
			||||||
            padding-top: 10px;
 | 
					              background-color: black;
 | 
				
			||||||
            padding-bottom: 10px; }
 | 
					              border: 0px;
 | 
				
			||||||
 | 
					              border-bottom: 1px solid #333;
 | 
				
			||||||
 | 
					              outline: none;
 | 
				
			||||||
 | 
					              margin-left: 5px; }
 | 
				
			||||||
 | 
					          #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview div.preview ul {
 | 
				
			||||||
 | 
					            -webkit-box-flex: auto;
 | 
				
			||||||
 | 
					            -webkit-flex: auto;
 | 
				
			||||||
 | 
					            -moz-box-flex: auto;
 | 
				
			||||||
 | 
					            -moz-flex: auto;
 | 
				
			||||||
 | 
					            -ms-flex: auto;
 | 
				
			||||||
 | 
					            flex: auto;
 | 
				
			||||||
 | 
					            overflow: auto;
 | 
				
			||||||
 | 
					            -webkit-overflow-scrolling: touch; }
 | 
				
			||||||
 | 
					            #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview div.preview ul li.card {
 | 
				
			||||||
 | 
					              display: -webkit-box;
 | 
				
			||||||
 | 
					              display: -webkit-flex;
 | 
				
			||||||
 | 
					              display: -moz-flex;
 | 
				
			||||||
 | 
					              display: -ms-flexbox;
 | 
				
			||||||
 | 
					              display: flex;
 | 
				
			||||||
 | 
					              -webkit-box-direction: normal;
 | 
				
			||||||
 | 
					              -webkit-box-orient: horizontal;
 | 
				
			||||||
 | 
					              -webkit-flex-direction: row;
 | 
				
			||||||
 | 
					              -moz-flex-direction: row;
 | 
				
			||||||
 | 
					              -ms-flex-direction: row;
 | 
				
			||||||
 | 
					              flex-direction: row;
 | 
				
			||||||
 | 
					              padding-top: 15px;
 | 
				
			||||||
 | 
					              padding-bottom: 0px;
 | 
				
			||||||
 | 
					              border-bottom: 1px solid #333; }
 | 
				
			||||||
 | 
					              #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview div.preview ul li.card.archived {
 | 
				
			||||||
 | 
					                background-color: #333; }
 | 
				
			||||||
 | 
					              #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview div.preview ul li.card input {
 | 
				
			||||||
 | 
					                width: 30px;
 | 
				
			||||||
 | 
					                margin-top: 6px;
 | 
				
			||||||
 | 
					                -webkit-box-flex: none;
 | 
				
			||||||
 | 
					                -webkit-flex: none;
 | 
				
			||||||
 | 
					                -moz-box-flex: none;
 | 
				
			||||||
 | 
					                -moz-flex: none;
 | 
				
			||||||
 | 
					                -ms-flex: none;
 | 
				
			||||||
 | 
					                flex: none; }
 | 
				
			||||||
 | 
					              #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview div.preview ul li.card div.cardContent {
 | 
				
			||||||
 | 
					                -webkit-box-flex: auto;
 | 
				
			||||||
 | 
					                -webkit-flex: auto;
 | 
				
			||||||
 | 
					                -moz-box-flex: auto;
 | 
				
			||||||
 | 
					                -moz-flex: auto;
 | 
				
			||||||
 | 
					                -ms-flex: auto;
 | 
				
			||||||
 | 
					                flex: auto;
 | 
				
			||||||
 | 
					                display: -webkit-box;
 | 
				
			||||||
 | 
					                display: -webkit-flex;
 | 
				
			||||||
 | 
					                display: -moz-flex;
 | 
				
			||||||
 | 
					                display: -ms-flexbox;
 | 
				
			||||||
 | 
					                display: flex;
 | 
				
			||||||
 | 
					                -webkit-box-direction: normal;
 | 
				
			||||||
 | 
					                -webkit-box-orient: vertical;
 | 
				
			||||||
 | 
					                -webkit-flex-direction: column;
 | 
				
			||||||
 | 
					                -moz-flex-direction: column;
 | 
				
			||||||
 | 
					                -ms-flex-direction: column;
 | 
				
			||||||
 | 
					                flex-direction: column;
 | 
				
			||||||
 | 
					                height: auto; }
 | 
				
			||||||
 | 
					                #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview div.preview ul li.card div.cardContent h3 {
 | 
				
			||||||
 | 
					                  font-size: 24pt;
 | 
				
			||||||
 | 
					                  padding-bottom: 6px; }
 | 
				
			||||||
 | 
					                #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview div.preview ul li.card div.cardContent ul.tagList li {
 | 
				
			||||||
 | 
					                  display: inline-block;
 | 
				
			||||||
 | 
					                  padding-right: 10px;
 | 
				
			||||||
 | 
					                  padding-bottom: 5px; }
 | 
				
			||||||
 | 
					                  #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview div.preview ul li.card div.cardContent ul.tagList li:before {
 | 
				
			||||||
 | 
					                    content: 'tag';
 | 
				
			||||||
 | 
					                    font-family: 'clipperz-icons';
 | 
				
			||||||
 | 
					                    -webkit-font-feature-settings: "liga" 1, "dlig" 1;
 | 
				
			||||||
 | 
					                    -moz-font-feature-settings: "liga" 1, "dlig" 1;
 | 
				
			||||||
 | 
					                    -ms-font-feature-settings: "liga" 1, "dlig" 1;
 | 
				
			||||||
 | 
					                    -o-font-feature-settings: "liga" 1, "dlig" 1;
 | 
				
			||||||
 | 
					                    font-feature-settings: "liga" 1, "dlig" 1;
 | 
				
			||||||
 | 
					                    -webkit-font-smoothing: antialiased;
 | 
				
			||||||
 | 
					                    text-rendering: optimizeLegibility;
 | 
				
			||||||
 | 
					                    font-size: 10pt;
 | 
				
			||||||
 | 
					                    padding-right: 5px;
 | 
				
			||||||
 | 
					                    line-height: 28px;
 | 
				
			||||||
 | 
					                    color: #ccc; }
 | 
				
			||||||
 | 
					                #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview div.preview ul li.card div.cardContent dl dt {
 | 
				
			||||||
 | 
					                  font-size: 12pt;
 | 
				
			||||||
 | 
					                  color: gray;
 | 
				
			||||||
 | 
					                  line-height: 16pt; }
 | 
				
			||||||
 | 
					                #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview div.preview ul li.card div.cardContent dl dd {
 | 
				
			||||||
 | 
					                  font-size: 16pt;
 | 
				
			||||||
 | 
					                  color: white;
 | 
				
			||||||
 | 
					                  line-height: 24pt;
 | 
				
			||||||
 | 
					                  padding-bottom: 6pt; }
 | 
				
			||||||
 | 
					                  #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview div.preview ul li.card div.cardContent dl dd.PASSWORD {
 | 
				
			||||||
 | 
					                    font-family: clipperz-password; }
 | 
				
			||||||
 | 
					                #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview div.preview ul li.card div.cardContent p {
 | 
				
			||||||
 | 
					                  font-size: 10pt;
 | 
				
			||||||
 | 
					                  padding-top: 10px;
 | 
				
			||||||
 | 
					                  padding-bottom: 10px; }
 | 
				
			||||||
      #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Import h5 {
 | 
					      #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Import h5 {
 | 
				
			||||||
        padding-bottom: 15px; }
 | 
					        padding-bottom: 15px; }
 | 
				
			||||||
      #extraFeaturesPanel .extraFeatureContent .dataImport .content .step table.csvTable {
 | 
					      #extraFeaturesPanel .extraFeatureContent .dataImport .content .step table.csvTable {
 | 
				
			||||||
@@ -2942,6 +3038,10 @@ div.cardList.narrow {
 | 
				
			|||||||
          border-bottom: 1px solid black; }
 | 
					          border-bottom: 1px solid black; }
 | 
				
			||||||
          #cardDetailPage .view .cardDetailToolbar.narrow .commandMenu.show .commandMenu ul li.disabled, .cardDetail .view .cardDetailToolbar.narrow .commandMenu.show .commandMenu ul li.disabled {
 | 
					          #cardDetailPage .view .cardDetailToolbar.narrow .commandMenu.show .commandMenu ul li.disabled, .cardDetail .view .cardDetailToolbar.narrow .commandMenu.show .commandMenu ul li.disabled {
 | 
				
			||||||
            color: #ddd; }
 | 
					            color: #ddd; }
 | 
				
			||||||
 | 
					#cardDetailPage .view .cardField textarea.fieldValue, .cardDetail .view .cardField textarea.fieldValue {
 | 
				
			||||||
 | 
					  line-height: 1em;
 | 
				
			||||||
 | 
					  height: 1.3em;
 | 
				
			||||||
 | 
					  outline: none; }
 | 
				
			||||||
#cardDetailPage .edit .cardDetailToolbar, .cardDetail .edit .cardDetailToolbar {
 | 
					#cardDetailPage .edit .cardDetailToolbar, .cardDetail .edit .cardDetailToolbar {
 | 
				
			||||||
  background-color: #1863a1;
 | 
					  background-color: #1863a1;
 | 
				
			||||||
  color: white; }
 | 
					  color: white; }
 | 
				
			||||||
 
 | 
				
			|||||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							@@ -3,7 +3,7 @@
 | 
				
			|||||||
-->
 | 
					-->
 | 
				
			||||||
<html manifest="manifest.appcache">
 | 
					<html manifest="manifest.appcache">
 | 
				
			||||||
<head>
 | 
					<head>
 | 
				
			||||||
	<title>@page.title@</title>
 | 
						<title>Clipperz - keep it to yourself</title>
 | 
				
			||||||
	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
 | 
						<meta http-equiv="content-type" content="text/html; charset=utf-8" />
 | 
				
			||||||
	<meta name="viewport" content="width=device-width, height=device-height, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0" />
 | 
						<meta name="viewport" content="width=device-width, height=device-height, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -291,7 +291,7 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.User, Object, {
 | 
				
			|||||||
	'deleteAccount': function() {
 | 
						'deleteAccount': function() {
 | 
				
			||||||
		var deferredResult;
 | 
							var deferredResult;
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		deferredResult = new MochiKit.Async.Deferred("User.deleteAccount", {trace: true});
 | 
							deferredResult = new MochiKit.Async.Deferred("User.deleteAccount", {trace:false});
 | 
				
			||||||
		deferredResult.addCallback(MochiKit.Base.method(this.connection(), 'message'), 'deleteUser');
 | 
							deferredResult.addCallback(MochiKit.Base.method(this.connection(), 'message'), 'deleteUser');
 | 
				
			||||||
		deferredResult.addCallback(MochiKit.Base.method(this, 'resetAllLocalData'));
 | 
							deferredResult.addCallback(MochiKit.Base.method(this, 'resetAllLocalData'));
 | 
				
			||||||
		deferredResult.callback();
 | 
							deferredResult.callback();
 | 
				
			||||||
@@ -302,7 +302,7 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.User, Object, {
 | 
				
			|||||||
	'resetAllLocalData': function() {
 | 
						'resetAllLocalData': function() {
 | 
				
			||||||
		var deferredResult;
 | 
							var deferredResult;
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		deferredResult = new MochiKit.Async.Deferred("User.resetAllLocalData", {trace: true});
 | 
							deferredResult = new MochiKit.Async.Deferred("User.resetAllLocalData", {trace:false});
 | 
				
			||||||
		deferredResult.addCallback(MochiKit.Base.method(this, 'deleteAllCleanTextData'));
 | 
							deferredResult.addCallback(MochiKit.Base.method(this, 'deleteAllCleanTextData'));
 | 
				
			||||||
		deferredResult.addCallback(MochiKit.Base.method(this, function() {
 | 
							deferredResult.addCallback(MochiKit.Base.method(this, function() {
 | 
				
			||||||
			this.resetConnection();
 | 
								this.resetConnection();
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										288
									
								
								frontend/delta/js/Clipperz/PM/DefaultCards.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										288
									
								
								frontend/delta/js/Clipperz/PM/DefaultCards.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,288 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Copyright 2008-2015 Clipperz Srl
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This file is part of Clipperz, the online password manager.
 | 
				
			||||||
 | 
					For further information about its features and functionalities please
 | 
				
			||||||
 | 
					refer to http://www.clipperz.com.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Clipperz is free software: you can redistribute it and/or modify it
 | 
				
			||||||
 | 
					  under the terms of the GNU Affero General Public License as published
 | 
				
			||||||
 | 
					  by the Free Software Foundation, either version 3 of the License, or 
 | 
				
			||||||
 | 
					  (at your option) any later version.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Clipperz is distributed in the hope that it will be useful, but 
 | 
				
			||||||
 | 
					  WITHOUT ANY WARRANTY; without even the implied warranty of 
 | 
				
			||||||
 | 
					  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 | 
				
			||||||
 | 
					  See the GNU Affero General Public License for more details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* You should have received a copy of the GNU Affero General Public
 | 
				
			||||||
 | 
					  License along with Clipperz. If not, see http://www.gnu.org/licenses/.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Clipperz.PM.DefaultCards =  [{
 | 
				
			||||||
 | 
					    "label": "Bank account (SAMPLE) finance samples",
 | 
				
			||||||
 | 
					    "data": {
 | 
				
			||||||
 | 
					        "directLogins": {},
 | 
				
			||||||
 | 
					        "notes": ""
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "currentVersion": {
 | 
				
			||||||
 | 
					        "fields": {
 | 
				
			||||||
 | 
					            "a0aecf62b2d09b682efe2fce23c696499af420b1c7913350449c5946bc689fb5": {
 | 
				
			||||||
 | 
					                "label": "Bank",
 | 
				
			||||||
 | 
					                "value": "Deutsche Bank",
 | 
				
			||||||
 | 
					                "actionType": "NONE",
 | 
				
			||||||
 | 
					                "hidden": null
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "d553591a24b729ad620516baf8231f3b26284e7eb9ed66f87c258602bf429e75": {
 | 
				
			||||||
 | 
					                "label": "Branch n. ",
 | 
				
			||||||
 | 
					                "value": "774942",
 | 
				
			||||||
 | 
					                "actionType": "NONE",
 | 
				
			||||||
 | 
					                "hidden": null
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "0e4efb8fa7453b3d2503119a4ab5f77ac25345131897d7efb96127bf830a4cc9": {
 | 
				
			||||||
 | 
					                "label": "IBAN",
 | 
				
			||||||
 | 
					                "value": "DE89370400440532015007",
 | 
				
			||||||
 | 
					                "actionType": "NONE",
 | 
				
			||||||
 | 
					                "hidden": null
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "48a914d71133ba50b62ab721a610f51ca65a0d9a9bc5f99fdb39eb8c1f5efd7b": {
 | 
				
			||||||
 | 
					                "label": "Web",
 | 
				
			||||||
 | 
					                "value": "https://www.db.com",
 | 
				
			||||||
 | 
					                "actionType": "URL",
 | 
				
			||||||
 | 
					                "hidden": null
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "33af93bf7e3ba12265cea9248ee610ed8669fa853f6b3c1e3578e4517360f1e3": {
 | 
				
			||||||
 | 
					                "label": "User ID",
 | 
				
			||||||
 | 
					                "value": "76238784",
 | 
				
			||||||
 | 
					                "actionType": "NONE",
 | 
				
			||||||
 | 
					                "hidden": null
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "2b62204b2de9e56e6ecfb4338d2dca9b87e6540b767a8a7f98b4afeb7859cad8": {
 | 
				
			||||||
 | 
					                "label": "Password",
 | 
				
			||||||
 | 
					                "value": "?)E%[9=GcgzaAftgP[LSEK7JJv",
 | 
				
			||||||
 | 
					                "actionType": "PASSWORD",
 | 
				
			||||||
 | 
					                "hidden": true
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "reference": "e0c9c6835696cb7c318549871d53109902a3605e0420bc4a2de18332d792a521"
 | 
				
			||||||
 | 
					}, {
 | 
				
			||||||
 | 
					    "label": "Bitcoin wallet (SAMPLE) bitcoin finance",
 | 
				
			||||||
 | 
					    "data": {
 | 
				
			||||||
 | 
					        "directLogins": {},
 | 
				
			||||||
 | 
					        "notes": ""
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "currentVersion": {
 | 
				
			||||||
 | 
					        "fields": {
 | 
				
			||||||
 | 
					            "3ad0d7f4f945461ec693e822f03102d627aec57445009f8842b639c6067a2e58": {
 | 
				
			||||||
 | 
					                "label": "Type",
 | 
				
			||||||
 | 
					                "value": "paper wallet",
 | 
				
			||||||
 | 
					                "actionType": "NONE",
 | 
				
			||||||
 | 
					                "hidden": null
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "d2f2a2b2c2df814e5662e336c7c54a48875b80c8858190afd7edec67ccc35b2f": {
 | 
				
			||||||
 | 
					                "label": "Wallet address",
 | 
				
			||||||
 | 
					                "value": "1Q7u3cnwo4tAQoBixPSrS5C39E6VaMHWKb ",
 | 
				
			||||||
 | 
					                "actionType": "NONE",
 | 
				
			||||||
 | 
					                "hidden": null
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "809e4718e7e6517994a612ffa0ea8aeca9be9bb3f76b7fbf8188e1aaed5a6c69": {
 | 
				
			||||||
 | 
					                "label": "Private key [HEX]",
 | 
				
			||||||
 | 
					                "value": "2ce5820302fd6d8cf756e436484b76fcba11d5664e7bbc643b1bc29994b6bfe5",
 | 
				
			||||||
 | 
					                "actionType": "PASSWORD",
 | 
				
			||||||
 | 
					                "hidden": true
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "reference": "34dc4fcad391d9dc794d1454461c9571edd9252604cec8bd8749f69f4c3c2796"
 | 
				
			||||||
 | 
					}, {
 | 
				
			||||||
 | 
					    "label": "Credit card (SAMPLE) cards finance samples",
 | 
				
			||||||
 | 
					    "data": {
 | 
				
			||||||
 | 
					        "directLogins": {},
 | 
				
			||||||
 | 
					        "notes": ""
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "currentVersion": {
 | 
				
			||||||
 | 
					        "fields": {
 | 
				
			||||||
 | 
					            "fcf42bfb358e51cd3b38c5f6603d7078dc5438a71cd680090593f219755eeedb": {
 | 
				
			||||||
 | 
					                "label": "Card circuit",
 | 
				
			||||||
 | 
					                "value": "American Express",
 | 
				
			||||||
 | 
					                "actionType": "NONE",
 | 
				
			||||||
 | 
					                "hidden": null
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "e8dca8f4b4691c6eb2cce504b92e9668db2cb51279c190891db5e8e547389d93": {
 | 
				
			||||||
 | 
					                "label": "Card n.",
 | 
				
			||||||
 | 
					                "value": "8464 2366 1074 7732",
 | 
				
			||||||
 | 
					                "actionType": "NONE",
 | 
				
			||||||
 | 
					                "hidden": null
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "548acc6e8addd28ab86f16db04102184a31bb0de7f4d6f3e641b6d1431b77fbc": {
 | 
				
			||||||
 | 
					                "label": "Cardholder name",
 | 
				
			||||||
 | 
					                "value": "Joe Clipperz",
 | 
				
			||||||
 | 
					                "actionType": "NONE",
 | 
				
			||||||
 | 
					                "hidden": null
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "5088bcc13c39d6956128cf6ca88858238b96c882c99562deb40ce92dcce28a17": {
 | 
				
			||||||
 | 
					                "label": "Expire on",
 | 
				
			||||||
 | 
					                "value": "06/18",
 | 
				
			||||||
 | 
					                "actionType": "NONE",
 | 
				
			||||||
 | 
					                "hidden": null
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "267ef52c9da17fa412945d64ea5d9cdfd90edc0ffcd39c896081185877c18cb0": {
 | 
				
			||||||
 | 
					                "label": "CVV2",
 | 
				
			||||||
 | 
					                "value": "853",
 | 
				
			||||||
 | 
					                "actionType": "NONE",
 | 
				
			||||||
 | 
					                "hidden": null
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "571ce776861c51914933ea1ff7670e8dbdd5fa6f8add9d89420f3e93b33d0e61": {
 | 
				
			||||||
 | 
					                "label": "PIN",
 | 
				
			||||||
 | 
					                "value": "2744",
 | 
				
			||||||
 | 
					                "actionType": "PASSWORD",
 | 
				
			||||||
 | 
					                "hidden": true
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "3356ea6c5e08149aebe8713e52e07f4ae887d3a37fc794cb522e1f0d1d3830e2": {
 | 
				
			||||||
 | 
					                "label": "Card website",
 | 
				
			||||||
 | 
					                "value": "https://www.americanexpress.com",
 | 
				
			||||||
 | 
					                "actionType": "URL",
 | 
				
			||||||
 | 
					                "hidden": null
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "49f051d6974a5053dd56e07ba6316e774992d817875f705f9b792da41b8ae81a": {
 | 
				
			||||||
 | 
					                "label": "User ID",
 | 
				
			||||||
 | 
					                "value": "jclipperz",
 | 
				
			||||||
 | 
					                "actionType": "NONE",
 | 
				
			||||||
 | 
					                "hidden": null
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "dc63ebdadb6337d696ab6b35a95aa3efb452b5c80eecb499f80bdc5fe053aac7": {
 | 
				
			||||||
 | 
					                "label": "Password",
 | 
				
			||||||
 | 
					                "value": "]Gj2ss{+Grg$fBbg}#E})5Re8G",
 | 
				
			||||||
 | 
					                "actionType": "PASSWORD",
 | 
				
			||||||
 | 
					                "hidden": true
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "reference": "57cd76e6394ad853db42a41124e712b14bb3b7efd47e9ff8c56a05e41e1ab831"
 | 
				
			||||||
 | 
					}, {
 | 
				
			||||||
 | 
					    "label": "Email account (SAMPLE) personal samples",
 | 
				
			||||||
 | 
					    "data": {
 | 
				
			||||||
 | 
					        "directLogins": {},
 | 
				
			||||||
 | 
					        "notes": ""
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "currentVersion": {
 | 
				
			||||||
 | 
					        "fields": {
 | 
				
			||||||
 | 
					            "1df133740d37f98bd096a36ee09370f1786031f8f477aa179d4bd2b4470010ad": {
 | 
				
			||||||
 | 
					                "label": "Provider",
 | 
				
			||||||
 | 
					                "value": "Google Gmail",
 | 
				
			||||||
 | 
					                "actionType": "NONE",
 | 
				
			||||||
 | 
					                "hidden": null
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "ce5ca8805dfe6da30a30aa030158f52609d9b939bd32be902fd49c1c10d6ec6c": {
 | 
				
			||||||
 | 
					                "label": "Email address",
 | 
				
			||||||
 | 
					                "value": "joe.clipperz@gmail.com",
 | 
				
			||||||
 | 
					                "actionType": "EMAIL",
 | 
				
			||||||
 | 
					                "hidden": null
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "344f6510501901b7e6f35aa449958c0c50422f1f5c1d00071670e4df598ffbcd": {
 | 
				
			||||||
 | 
					                "label": "Web",
 | 
				
			||||||
 | 
					                "value": "https://mail.google.com",
 | 
				
			||||||
 | 
					                "actionType": "URL",
 | 
				
			||||||
 | 
					                "hidden": null
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "bebb291e4d84149e6f60003a8da92ff30fed62d62f4894a31c222e7c82e660ac": {
 | 
				
			||||||
 | 
					                "label": "User",
 | 
				
			||||||
 | 
					                "value": "joe.clipperz",
 | 
				
			||||||
 | 
					                "actionType": "NONE",
 | 
				
			||||||
 | 
					                "hidden": null
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "a14c4607164c288bbfb64788f740047b5d2b125b752d5a7666b78a8a1c994329": {
 | 
				
			||||||
 | 
					                "label": "password",
 | 
				
			||||||
 | 
					                "value": "]Gj2ss{+Grg$fBbg}#E})5Re8G",
 | 
				
			||||||
 | 
					                "actionType": "PASSWORD",
 | 
				
			||||||
 | 
					                "hidden": true
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "16916013430075588cb1983f1bbb7cff75811e06d0a81b987581b2a12454c746": {
 | 
				
			||||||
 | 
					                "label": "IMAP",
 | 
				
			||||||
 | 
					                "value": "imap.gmail.com:993",
 | 
				
			||||||
 | 
					                "actionType": "NONE",
 | 
				
			||||||
 | 
					                "hidden": null
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "082853916a0f66cae73308e7e5f99f0a540cfd89b20aa76abbc4e0ec2726ccc4": {
 | 
				
			||||||
 | 
					                "label": "SMTP",
 | 
				
			||||||
 | 
					                "value": "smtp.gmail.com:465",
 | 
				
			||||||
 | 
					                "actionType": "NONE",
 | 
				
			||||||
 | 
					                "hidden": null
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "reference": "b9bca4fefae5175cecd5474cfb6c17cb7e53a01681aabfa882e2c6c92351958b"
 | 
				
			||||||
 | 
					}, {
 | 
				
			||||||
 | 
					    "label": "Facebook (SAMPLE) social samples",
 | 
				
			||||||
 | 
					    "data": {
 | 
				
			||||||
 | 
					        "directLogins": {},
 | 
				
			||||||
 | 
					        "notes": ""
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "currentVersion": {
 | 
				
			||||||
 | 
					        "fields": {
 | 
				
			||||||
 | 
					            "7a742214b8769b828958e2c6d095a7d71df4ade2e1736c54d2f2d5137f52762a": {
 | 
				
			||||||
 | 
					                "label": "URL",
 | 
				
			||||||
 | 
					                "value": "https://www.facebook.com",
 | 
				
			||||||
 | 
					                "actionType": "URL",
 | 
				
			||||||
 | 
					                "hidden": null
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "e1d87357afa8a0b0e981aae7bfbfb5f1248be0e218a040bf4d2f283ef169cd4f": {
 | 
				
			||||||
 | 
					                "label": "Email",
 | 
				
			||||||
 | 
					                "value": "joe.clipperz@gmail.com",
 | 
				
			||||||
 | 
					                "actionType": "EMAIL",
 | 
				
			||||||
 | 
					                "hidden": null
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "e91ad9bbacb439ca65e6e11cc9dee70ed5fa8d31f6be3c4a5ec02264fe5140ed": {
 | 
				
			||||||
 | 
					                "label": "Username",
 | 
				
			||||||
 | 
					                "value": "joeclipperz",
 | 
				
			||||||
 | 
					                "actionType": "NONE",
 | 
				
			||||||
 | 
					                "hidden": null
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "af7da5ef0e3380f05b5501996153c3297c70276a45940e90ed0f7c568b33dbaf": {
 | 
				
			||||||
 | 
					                "label": "Password",
 | 
				
			||||||
 | 
					                "value": ">fA2UEpL6}<6&cSvrcfqfdNjvf",
 | 
				
			||||||
 | 
					                "actionType": "PASSWORD",
 | 
				
			||||||
 | 
					                "hidden": true
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "reference": "76bbdd6b73c3b7e4843e152abab9af6c56ddcaf62c93dc84c45472c975e0b814"
 | 
				
			||||||
 | 
					}, {
 | 
				
			||||||
 | 
					    "label": "Passport (SAMPLE) documents personal samples",
 | 
				
			||||||
 | 
					    "data": {
 | 
				
			||||||
 | 
					        "directLogins": {},
 | 
				
			||||||
 | 
					        "notes": ""
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "currentVersion": {
 | 
				
			||||||
 | 
					        "fields": {
 | 
				
			||||||
 | 
					            "a7113badb94eba0de86752a8aa17e9de1c02cb8a537b1e702639073ee8fd2db2": {
 | 
				
			||||||
 | 
					                "label": "Passport n.",
 | 
				
			||||||
 | 
					                "value": "83A4568HL25-66",
 | 
				
			||||||
 | 
					                "actionType": "NONE",
 | 
				
			||||||
 | 
					                "hidden": false
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "712b23e8ab1b325379142e2bd50a5d950553c1da1188686b827786923e984660": {
 | 
				
			||||||
 | 
					                "label": "Issued by",
 | 
				
			||||||
 | 
					                "value": "British Embassy in Berlin",
 | 
				
			||||||
 | 
					                "actionType": "NONE",
 | 
				
			||||||
 | 
					                "hidden": null
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "e7ceb7f25709c195297ae64205d98d654e190290b7dc1b4e379c088a8b64bab1": {
 | 
				
			||||||
 | 
					                "label": "Issue date",
 | 
				
			||||||
 | 
					                "value": "11/09/2014",
 | 
				
			||||||
 | 
					                "actionType": "NONE",
 | 
				
			||||||
 | 
					                "hidden": null
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "79441bc252208b632f1d51dd86ea62de20341c47eec3771ea40611ecff93edad": {
 | 
				
			||||||
 | 
					                "label": "Expiry date",
 | 
				
			||||||
 | 
					                "value": "10/09/2019",
 | 
				
			||||||
 | 
					                "actionType": "NONE",
 | 
				
			||||||
 | 
					                "hidden": null
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "reference": "132697670c9553c95855e205a8fdd1a93f826836eb76f9657f69e81be262c077"
 | 
				
			||||||
 | 
					}]
 | 
				
			||||||
@@ -291,7 +291,8 @@ Clipperz.Base.extend(Clipperz.PM.Proxy.Offline.DataStore, Object, {
 | 
				
			|||||||
					'userDetails':			someParameters['user']['header'],
 | 
										'userDetails':			someParameters['user']['header'],
 | 
				
			||||||
					'statistics':			someParameters['user']['statistics'],
 | 
										'statistics':			someParameters['user']['statistics'],
 | 
				
			||||||
					'userDetailsVersion':	someParameters['user']['version'],
 | 
										'userDetailsVersion':	someParameters['user']['version'],
 | 
				
			||||||
					'records':	{}
 | 
										'records':	{},
 | 
				
			||||||
 | 
										'accountInfo': Clipperz.PM.Proxy.Offline.DataStore.defaultAccountInfo
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			} else {
 | 
								} else {
 | 
				
			||||||
				throw "user already exists";
 | 
									throw "user already exists";
 | 
				
			||||||
@@ -883,3 +884,25 @@ console.log("Proxy.Offline.DataStore.updateOneTimePasswords: userOTPs:", aConnec
 | 
				
			|||||||
Clipperz.PM.Proxy.Offline.DataStore['exception'] = {
 | 
					Clipperz.PM.Proxy.Offline.DataStore['exception'] = {
 | 
				
			||||||
	'ReadOnly': 		new MochiKit.Base.NamedError("Clipperz.PM.Proxy.Offline.DataStore.exception.ReadOnly")
 | 
						'ReadOnly': 		new MochiKit.Base.NamedError("Clipperz.PM.Proxy.Offline.DataStore.exception.ReadOnly")
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Clipperz.PM.Proxy.Offline.DataStore.defaultAccountInfo = {
 | 
				
			||||||
 | 
						'features': [
 | 
				
			||||||
 | 
							'UPDATE_CREDENTIALS',
 | 
				
			||||||
 | 
							'EDIT_CARD',
 | 
				
			||||||
 | 
							'CARD_DETAILS',
 | 
				
			||||||
 | 
							'ADD_CARD',
 | 
				
			||||||
 | 
							'DELETE_CARD',
 | 
				
			||||||
 | 
							'OFFLINE_COPY',
 | 
				
			||||||
 | 
							'LIST_CARDS'
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						'paymentVerificationPending': false,
 | 
				
			||||||
 | 
						'currentSubscriptionType': 'EARLY_ADOPTER',
 | 
				
			||||||
 | 
						'isExpiring': false,
 | 
				
			||||||
 | 
						'latestActiveLevel': 'EARLY_ADOPTER',
 | 
				
			||||||
 | 
						'payments': [],
 | 
				
			||||||
 | 
						'featureSet': 'FULL',
 | 
				
			||||||
 | 
						'latestActiveThreshold': '-1.00000000',
 | 
				
			||||||
 | 
						'referenceDate': 'Fri, 03 April 2015 08:17:46 UTC',
 | 
				
			||||||
 | 
						'isExpired': false,
 | 
				
			||||||
 | 
						'expirationDate': 'Mon, 01 January 4001 00:00:00 UTC'
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
@@ -62,6 +62,29 @@ Clipperz.PM.UI.Components.Cards.ViewClass = React.createClass({
 | 
				
			|||||||
		newState[aField['_reference']] = !this.state[aField['_reference']];
 | 
							newState[aField['_reference']] = !this.state[aField['_reference']];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		return function () {
 | 
							return function () {
 | 
				
			||||||
 | 
								var fieldReference = aField['_reference'];
 | 
				
			||||||
 | 
								var currentTimeout;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if (newState[fieldReference]) {
 | 
				
			||||||
 | 
									currentTimeout = setTimeout(function(){
 | 
				
			||||||
 | 
										var newState;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										newState = {};
 | 
				
			||||||
 | 
										newState[fieldReference] = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										self.setState(newState);
 | 
				
			||||||
 | 
									}, Clipperz.PM.UI.Components.Cards.ViewClass.automaticRescrambleTimeout);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if (self.state['currentTimeout']) {
 | 
				
			||||||
 | 
									clearTimeout(self.state['currentTimeout']);
 | 
				
			||||||
 | 
									delete self.state['currentTimeout'];
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if (currentTimeout) {
 | 
				
			||||||
 | 
									newState['currentTimeout'] = currentTimeout;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			self.setState(newState);
 | 
								self.setState(newState);
 | 
				
			||||||
		};
 | 
							};
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
@@ -193,7 +216,12 @@ Clipperz.PM.UI.Components.Cards.ViewClass = React.createClass({
 | 
				
			|||||||
			React.DOM.div({'className':'fieldEditAction'}, null),
 | 
								React.DOM.div({'className':'fieldEditAction'}, null),
 | 
				
			||||||
			React.DOM.div({'className':'fieldValues'}, [
 | 
								React.DOM.div({'className':'fieldValues'}, [
 | 
				
			||||||
				React.DOM.div({'className':'fieldLabel'}, aField['label']),
 | 
									React.DOM.div({'className':'fieldLabel'}, aField['label']),
 | 
				
			||||||
				React.DOM.div({'className':Clipperz.PM.UI.Components.classNames(cardFieldValueClasses)}, aField['value']),
 | 
									React.DOM.textarea({
 | 
				
			||||||
 | 
										'readOnly': true,
 | 
				
			||||||
 | 
										'onClick': function(e) { e.target.select(); },
 | 
				
			||||||
 | 
										'className':Clipperz.PM.UI.Components.classNames(cardFieldValueClasses),
 | 
				
			||||||
 | 
										'value': aField['value']
 | 
				
			||||||
 | 
									}),
 | 
				
			||||||
			]),
 | 
								]),
 | 
				
			||||||
			React.DOM.div({'className':'fieldAction'}, [
 | 
								React.DOM.div({'className':'fieldAction'}, [
 | 
				
			||||||
				React.DOM.span({'className':Clipperz.PM.UI.Components.classNames(cardFieldActionClasses), 'onClick':this.handleFieldAction(aField)}, aField['actionType'].toLowerCase() == 'password' ? 'view password' : aField['actionType'].toLowerCase())
 | 
									React.DOM.span({'className':Clipperz.PM.UI.Components.classNames(cardFieldActionClasses), 'onClick':this.handleFieldAction(aField)}, aField['actionType'].toLowerCase() == 'password' ? 'view password' : aField['actionType'].toLowerCase())
 | 
				
			||||||
@@ -258,4 +286,6 @@ Clipperz.PM.UI.Components.Cards.ViewClass = React.createClass({
 | 
				
			|||||||
	//=========================================================================
 | 
						//=========================================================================
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Clipperz.PM.UI.Components.Cards.ViewClass.automaticRescrambleTimeout = 5000;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Clipperz.PM.UI.Components.Cards.View = React.createFactory(Clipperz.PM.UI.Components.Cards.ViewClass);
 | 
					Clipperz.PM.UI.Components.Cards.View = React.createFactory(Clipperz.PM.UI.Components.Cards.ViewClass);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -79,9 +79,7 @@ Clipperz.PM.UI.Components.ExtraFeatures.DataImportClass = React.createClass({
 | 
				
			|||||||
			]),
 | 
								]),
 | 
				
			||||||
			React.DOM.div({'className': 'content' + ' ' + currentStep + ' ' + this.importContext().inputFormat()}, [
 | 
								React.DOM.div({'className': 'content' + ' ' + currentStep + ' ' + this.importContext().inputFormat()}, [
 | 
				
			||||||
				React.DOM.div({'className': 'step' + ' ' + currentStep}, [
 | 
									React.DOM.div({'className': 'step' + ' ' + currentStep}, [
 | 
				
			||||||
					new this.componentWithName(this.importContext().currentStep())({
 | 
										new this.componentWithName(this.importContext().currentStep())({'importContext': this.importContext()}),
 | 
				
			||||||
						'importContext': this.importContext(),
 | 
					 | 
				
			||||||
					}),
 | 
					 | 
				
			||||||
				]),
 | 
									]),
 | 
				
			||||||
				this.renderNavbar(currentStep),
 | 
									this.renderNavbar(currentStep),
 | 
				
			||||||
				React.DOM.div({'className': 'buttons' + ' ' + currentStep}, [
 | 
									React.DOM.div({'className': 'buttons' + ' ' + currentStep}, [
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,7 +28,13 @@ Clipperz.PM.UI.Components.ExtraFeatures.DataImport.ImportClass = React.createCla
 | 
				
			|||||||
	//=========================================================================
 | 
						//=========================================================================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	importHandler: function (anEvent) {
 | 
						importHandler: function (anEvent) {
 | 
				
			||||||
		MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'importCards', this.props.importContext.state('recordsToImport'));
 | 
							var recordsToImport = this.props.importContext.state('recordsToImport');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (this.props.importContext.state('useImportTag') && this.props.importContext.state('importTag')) {
 | 
				
			||||||
 | 
								this.props.importContext.enhanceJsonDataWithImportTag(recordsToImport, this.props.importContext.state('importTag'))
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'importCards', recordsToImport);
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	render: function() {
 | 
						render: function() {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -47,6 +47,53 @@ Clipperz.PM.UI.Components.ExtraFeatures.DataImport.PreviewClass = React.createCl
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	//=========================================================================
 | 
						//=========================================================================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						selectRecordsToImport: function(records) {
 | 
				
			||||||
 | 
							var newRecordsToImport;
 | 
				
			||||||
 | 
							var i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							newRecordsToImport = {};
 | 
				
			||||||
 | 
							for (i in records) {
 | 
				
			||||||
 | 
								newRecordsToImport[records[i]['reference']] = records[i];
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this.setState({'recordsToImport': newRecordsToImport});
 | 
				
			||||||
 | 
							this.props.importContext.setState('recordsToImport', MochiKit.Base.values(newRecordsToImport));
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						selectAll: function() {
 | 
				
			||||||
 | 
							this.selectRecordsToImport(this.props.importContext.state('jsonData'));
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						selectNone: function() {
 | 
				
			||||||
 | 
							this.selectRecordsToImport({});
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						selectNotArchived: function() {
 | 
				
			||||||
 | 
							this.selectRecordsToImport(MochiKit.Base.filter(function (aRecord) {
 | 
				
			||||||
 | 
								return !Clipperz.PM.DataModel.Record.labelContainsArchiveTag(aRecord['label']);
 | 
				
			||||||
 | 
							}, this.props.importContext.state('jsonData')));
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						selectArchived: function() {
 | 
				
			||||||
 | 
							this.selectRecordsToImport(MochiKit.Base.filter(function (aRecord) {
 | 
				
			||||||
 | 
								return Clipperz.PM.DataModel.Record.labelContainsArchiveTag(aRecord['label']);
 | 
				
			||||||
 | 
							}, this.props.importContext.state('jsonData')));
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						//-------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						handleImportTagTextChange: function() {
 | 
				
			||||||
 | 
							var newTag = this.refs['importTagText'].getDOMNode().value;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this.props.importContext.setState('importTag', newTag);
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						handleImportTagCheckboxChange: function() {
 | 
				
			||||||
 | 
							this.props.importContext.setState('useImportTag', ! this.props.importContext.state('useImportTag'));
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						//-------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	toggleRecordToImport: function(record) {
 | 
						toggleRecordToImport: function(record) {
 | 
				
			||||||
		var newRecordsToImport;
 | 
							var newRecordsToImport;
 | 
				
			||||||
		var recordPosition;
 | 
							var recordPosition;
 | 
				
			||||||
@@ -76,6 +123,10 @@ Clipperz.PM.UI.Components.ExtraFeatures.DataImport.PreviewClass = React.createCl
 | 
				
			|||||||
		tagList = MochiKit.Base.keys(tagObject);
 | 
							tagList = MochiKit.Base.keys(tagObject);
 | 
				
			||||||
		tagList = MochiKit.Base.filter(function(aTag) { return !Clipperz.PM.DataModel.Record.isSpecialTag(aTag); }, tagList);
 | 
							tagList = MochiKit.Base.filter(function(aTag) { return !Clipperz.PM.DataModel.Record.isSpecialTag(aTag); }, tagList);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (this.props.importContext.state('useImportTag') && this.props.importContext.state('importTag')) {
 | 
				
			||||||
 | 
								tagList.push(this.props.importContext.state('importTag'));
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (tagList.length > 0) {
 | 
							if (tagList.length > 0) {
 | 
				
			||||||
			result = React.DOM.ul({'className': 'tagList'},
 | 
								result = React.DOM.ul({'className': 'tagList'},
 | 
				
			||||||
				MochiKit.Base.map(function(aTag){
 | 
									MochiKit.Base.map(function(aTag){
 | 
				
			||||||
@@ -123,7 +174,32 @@ Clipperz.PM.UI.Components.ExtraFeatures.DataImport.PreviewClass = React.createCl
 | 
				
			|||||||
	},
 | 
						},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	render: function() {
 | 
						render: function() {
 | 
				
			||||||
 | 
							var inputFormat = this.props.importContext.inputFormat();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		return React.DOM.div({'className': 'preview'},
 | 
							return React.DOM.div({'className': 'preview'},
 | 
				
			||||||
 | 
								React.DOM.div({'className': 'selectButtons'},
 | 
				
			||||||
 | 
									React.DOM.span({}, "Select:"),
 | 
				
			||||||
 | 
									React.DOM.a({'onClick': this.selectAll}, "All"),
 | 
				
			||||||
 | 
									React.DOM.a({'onClick': this.selectNone}, "None"),
 | 
				
			||||||
 | 
									(inputFormat == 'JSON') ? React.DOM.a({'onClick': this.selectNotArchived}, "Not Archived") : null,
 | 
				
			||||||
 | 
									(inputFormat == 'JSON') ? React.DOM.a({'onClick': this.selectArchived}, "Archived") : null
 | 
				
			||||||
 | 
								),
 | 
				
			||||||
 | 
								React.DOM.div({'className': 'tagButtons'},
 | 
				
			||||||
 | 
									React.DOM.input({
 | 
				
			||||||
 | 
										'type': 'checkbox',
 | 
				
			||||||
 | 
										'id': 'tagCheckbox',
 | 
				
			||||||
 | 
										'checked': this.props.importContext.state('useImportTag'),
 | 
				
			||||||
 | 
										'onChange': this.handleImportTagCheckboxChange
 | 
				
			||||||
 | 
									}),
 | 
				
			||||||
 | 
									React.DOM.label({'htmlFor': 'tagCheckbox'}, "Apply the following tag to imported cards:"),
 | 
				
			||||||
 | 
									React.DOM.input({
 | 
				
			||||||
 | 
										'ref': 'importTagText',
 | 
				
			||||||
 | 
										'type': 'text',
 | 
				
			||||||
 | 
										'value': this.props.importContext.state('importTag'),
 | 
				
			||||||
 | 
										'disabled': ! this.props.importContext.state('useImportTag'),
 | 
				
			||||||
 | 
										'onChange': this.handleImportTagTextChange
 | 
				
			||||||
 | 
									})
 | 
				
			||||||
 | 
								),
 | 
				
			||||||
			React.DOM.ul({}, MochiKit.Base.map(MochiKit.Base.method(this, 'renderCard'), this.props.importContext.state('jsonData')))
 | 
								React.DOM.ul({}, MochiKit.Base.map(MochiKit.Base.method(this, 'renderCard'), this.props.importContext.state('jsonData')))
 | 
				
			||||||
		);
 | 
							);
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -120,7 +120,7 @@ Clipperz.PM.UI.Components.ExtraFeatures.PassphraseClass = React.createClass({
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
						React.DOM.p({}, [
 | 
											React.DOM.p({}, [
 | 
				
			||||||
							React.DOM.input({'key':'confirm', 'id':'changePassphraseConfirmCheckbox', 'className':'confirmCheckbox', 'type':'checkbox', 'name':'confirm', 'ref':'confirm'}),
 | 
												React.DOM.input({'key':'confirm', 'id':'changePassphraseConfirmCheckbox', 'className':'confirmCheckbox', 'type':'checkbox', 'name':'confirm', 'ref':'confirm'}),
 | 
				
			||||||
							React.DOM.label({'htmlFor':'changePassphraseConfirmCheckbox'}, "I understand that Clipperz will not be able to help me recovering a lost passphrase.")
 | 
												React.DOM.label({'htmlFor':'changePassphraseConfirmCheckbox'}, "I understand that Clipperz is unable to recover a lost passphrase.")
 | 
				
			||||||
						]),
 | 
											]),
 | 
				
			||||||
					]),
 | 
										]),
 | 
				
			||||||
					React.DOM.button({'key':'button', 'type':'submit', 'disabled':!this.shouldEnableChangePassphraseButton(), 'className':'button'}, "Change passphrase"),
 | 
										React.DOM.button({'key':'button', 'type':'submit', 'disabled':!this.shouldEnableChangePassphraseButton(), 'className':'button'}, "Change passphrase"),
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -189,13 +189,13 @@ Clipperz.PM.UI.Components.Pages.RegistrationPageClass = React.createClass({
 | 
				
			|||||||
	render_TERMS_OF_SERVICE: function () {
 | 
						render_TERMS_OF_SERVICE: function () {
 | 
				
			||||||
		return	React.DOM.div({'key':'termsOfService'}, [
 | 
							return	React.DOM.div({'key':'termsOfService'}, [
 | 
				
			||||||
					React.DOM.div({'key':'termsOfService_choice_1', 'className':'checkboxBlock'}, [
 | 
										React.DOM.div({'key':'termsOfService_choice_1', 'className':'checkboxBlock'}, [
 | 
				
			||||||
						React.DOM.label({'key':'termsOfService_label_1', 'htmlFor':'no_password_recovery'}, "I understand that Clipperz will not be able to recover a lost passphrase."),
 | 
											React.DOM.label({'key':'termsOfService_label_1', 'htmlFor':'no_password_recovery'}, "I understand that Clipperz is unable to recover a lost passphrase."),
 | 
				
			||||||
						React.DOM.input({'key':'no_password_recovery', 'type':'checkbox', 'name':'no_password_recovery', 'ref':'no_password_recovery'}),
 | 
											React.DOM.input({'key':'no_password_recovery', 'type':'checkbox', 'name':'no_password_recovery', 'ref':'no_password_recovery', 'id':'no_password_recovery'}),
 | 
				
			||||||
						React.DOM.p({'key':'termsOfService_description_1'}, "I understand that Clipperz will not be able to recover a lost passphrase.")
 | 
											React.DOM.p({'key':'termsOfService_description_1'}, "I understand that Clipperz is unable to recover a lost passphrase.")
 | 
				
			||||||
					]),
 | 
										]),
 | 
				
			||||||
					React.DOM.div({'key':'termsOfService_choice_2', 'className':'checkboxBlock'}, [
 | 
										React.DOM.div({'key':'termsOfService_choice_2', 'className':'checkboxBlock'}, [
 | 
				
			||||||
						React.DOM.label({'key':'termsOfService_label_2', 'htmlFor':'agree_terms_of_service'}, "I have read and agreed to the Terms of Service."),
 | 
											React.DOM.label({'key':'termsOfService_label_2', 'htmlFor':'agree_terms_of_service'}, "I have read and agreed to the Terms of Service."),
 | 
				
			||||||
						React.DOM.input({'key':'agree_terms_of_service', 'type':'checkbox', 'name':'agree_terms_of_service', 'ref':'agree_terms_of_service'}),
 | 
											React.DOM.input({'key':'agree_terms_of_service', 'type':'checkbox', 'name':'agree_terms_of_service', 'ref':'agree_terms_of_service', 'id':'agree_terms_of_service'}),
 | 
				
			||||||
						React.DOM.p({'key':'termsOfService_description_2'},  [
 | 
											React.DOM.p({'key':'termsOfService_description_2'},  [
 | 
				
			||||||
							React.DOM.span({'key':'termsOfService_description_2_p1'}, "I have read and agreed to the "),
 | 
												React.DOM.span({'key':'termsOfService_description_2_p1'}, "I have read and agreed to the "),
 | 
				
			||||||
							React.DOM.a({'key':'termsOfService_description_2_p2', 'href':'https://clipperz.com/terms_service/', target:'_blank'}, "Terms of Service.")
 | 
												React.DOM.a({'key':'termsOfService_description_2_p2', 'href':'https://clipperz.com/terms_service/', target:'_blank'}, "Terms of Service.")
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -32,6 +32,8 @@ Clipperz.PM.UI.ImportContext = function(anInputComponent) {
 | 
				
			|||||||
		'isInputStringValid': false,
 | 
							'isInputStringValid': false,
 | 
				
			||||||
		'inputFormat': 'UNDEFINED',
 | 
							'inputFormat': 'UNDEFINED',
 | 
				
			||||||
		'currentStep': 'Input',
 | 
							'currentStep': 'Input',
 | 
				
			||||||
 | 
							'useImportTag': true,
 | 
				
			||||||
 | 
							'importTag': Clipperz.PM.UI.ImportContext.getDefaultImportTag()
 | 
				
			||||||
	};
 | 
						};
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	return this;
 | 
						return this;
 | 
				
			||||||
@@ -185,13 +187,16 @@ MochiKit.Base.update(Clipperz.PM.UI.ImportContext.prototype, {
 | 
				
			|||||||
	},
 | 
						},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	enhanceJsonDataWithCardReferences: function (someJsonData) {
 | 
						enhanceJsonDataWithCardReferences: function (someJsonData) {
 | 
				
			||||||
		var now  = new XDate();
 | 
					 | 
				
			||||||
		var	dateString = now.toString('yyyyMMdd');
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		return MochiKit.Base.map(function (item) {
 | 
							return MochiKit.Base.map(function (item) {
 | 
				
			||||||
			item['reference'] = Clipperz.PM.Crypto.randomKey();
 | 
								item['reference'] = Clipperz.PM.Crypto.randomKey();
 | 
				
			||||||
//			item['label'] = "COPY - " + item['label'];
 | 
					//			item['label'] = "COPY - " + item['label'];
 | 
				
			||||||
			item['label'] = item['label'] + ' ' + Clipperz.PM.DataModel.Record.tagChar + "Import_" + dateString;
 | 
								return item;
 | 
				
			||||||
 | 
							}, someJsonData);
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						enhanceJsonDataWithImportTag: function(someJsonData, aTag) {
 | 
				
			||||||
 | 
							return MochiKit.Base.map(function (item) {
 | 
				
			||||||
 | 
								item['label'] = item['label'] + ' ' + Clipperz.PM.DataModel.Record.tagChar + aTag;
 | 
				
			||||||
			return item;
 | 
								return item;
 | 
				
			||||||
		}, someJsonData);
 | 
							}, someJsonData);
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
@@ -447,3 +452,10 @@ MochiKit.Base.update(Clipperz.PM.UI.ImportContext.prototype, {
 | 
				
			|||||||
	//=============================================================================
 | 
						//=============================================================================
 | 
				
			||||||
	__syntaxFix__: "syntax fix"
 | 
						__syntaxFix__: "syntax fix"
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Clipperz.PM.UI.ImportContext.getDefaultImportTag = function() {
 | 
				
			||||||
 | 
						var now  = new XDate();
 | 
				
			||||||
 | 
						var	dateString = now.toString('yyyyMMdd');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return "Import_" + dateString;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -341,7 +341,7 @@ console.log("THE BROWSER IS OFFLINE");
 | 
				
			|||||||
		deferredResult.addMethod(this, 'setUser', user);
 | 
							deferredResult.addMethod(this, 'setUser', user);
 | 
				
			||||||
		deferredResult.addMethod(this, 'runApplication');
 | 
							deferredResult.addMethod(this, 'runApplication');
 | 
				
			||||||
		deferredResult.addMethod(this.overlay(), 'done', "", 1);
 | 
							deferredResult.addMethod(this.overlay(), 'done', "", 1);
 | 
				
			||||||
		deferredResult.addErrback(MochiKit.Base.method(this, 'genericErrorHandler', someCredentials));
 | 
							deferredResult.addErrback(MochiKit.Base.method(this, 'genericErrorHandler', someCredentials, "login failed"));
 | 
				
			||||||
		deferredResult.addErrback(MochiKit.Base.bind(function (anEvent, anError) {
 | 
							deferredResult.addErrback(MochiKit.Base.bind(function (anEvent, anError) {
 | 
				
			||||||
			if (anError['isPermanent'] != true) {
 | 
								if (anError['isPermanent'] != true) {
 | 
				
			||||||
				this.pages()['loginPage'].setProps({disabled:false, 'mode':this.loginMode()});
 | 
									this.pages()['loginPage'].setProps({disabled:false, 'mode':this.loginMode()});
 | 
				
			||||||
@@ -381,7 +381,8 @@ console.log("THE BROWSER IS OFFLINE");
 | 
				
			|||||||
			MochiKit.Base.partial(MochiKit.Async.succeed, credentials['passphrase'])
 | 
								MochiKit.Base.partial(MochiKit.Async.succeed, credentials['passphrase'])
 | 
				
			||||||
		);
 | 
							);
 | 
				
			||||||
		deferredResult.addMethod(this, 'doLogin', credentials);
 | 
							deferredResult.addMethod(this, 'doLogin', credentials);
 | 
				
			||||||
		deferredResult.addErrback(MochiKit.Base.method(this, 'genericErrorHandler', credentials));
 | 
							deferredResult.addMethod(this,'importCards', Clipperz.PM.DefaultCards);
 | 
				
			||||||
 | 
							deferredResult.addErrback(MochiKit.Base.method(this, 'genericErrorHandler', credentials, "registration failed"));
 | 
				
			||||||
		deferredResult.addErrback(MochiKit.Base.bind(function (anError) {
 | 
							deferredResult.addErrback(MochiKit.Base.bind(function (anError) {
 | 
				
			||||||
			if (anError['isPermanent'] != true) {
 | 
								if (anError['isPermanent'] != true) {
 | 
				
			||||||
				this.pages()['registrationPage'].setProps({disabled:false});
 | 
									this.pages()['registrationPage'].setProps({disabled:false});
 | 
				
			||||||
@@ -636,7 +637,7 @@ console.log("THE BROWSER IS OFFLINE");
 | 
				
			|||||||
			rangeFilter = MochiKit.Base.operator.identity;
 | 
								rangeFilter = MochiKit.Base.operator.identity;
 | 
				
			||||||
		} else if (aFilter['type'] == 'RECENT') {
 | 
							} else if (aFilter['type'] == 'RECENT') {
 | 
				
			||||||
			filterCriteria = MochiKit.Base.operator.truth;
 | 
								filterCriteria = MochiKit.Base.operator.truth;
 | 
				
			||||||
			sortCriteria = Clipperz.Base.reverseComparator(MochiKit.Base.keyComparator('accessDate'));
 | 
								sortCriteria = Clipperz.Base.reverseComparator(MochiKit.Base.keyComparator('_accessDate'));
 | 
				
			||||||
			rangeFilter = function (someCards) { return someCards.slice(0, 10)};
 | 
								rangeFilter = function (someCards) { return someCards.slice(0, 10)};
 | 
				
			||||||
		} else if (aFilter['type'] == 'SEARCH') {
 | 
							} else if (aFilter['type'] == 'SEARCH') {
 | 
				
			||||||
			filterCriteria = this.regExpFilterGenerator(Clipperz.PM.DataModel.Record.regExpForSearch(aFilter['value']));
 | 
								filterCriteria = this.regExpFilterGenerator(Clipperz.PM.DataModel.Record.regExpForSearch(aFilter['value']));
 | 
				
			||||||
@@ -832,12 +833,13 @@ console.log("THE BROWSER IS OFFLINE");
 | 
				
			|||||||
*/
 | 
					*/
 | 
				
			||||||
	//=========================================================================
 | 
						//=========================================================================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	genericErrorHandler: function (anEvent, anError) {
 | 
						genericErrorHandler: function (anEvent, aMessage, anError) {
 | 
				
			||||||
		var errorMessage;
 | 
							var errorMessage;
 | 
				
			||||||
		var	result;
 | 
							var	result;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		result = anError;
 | 
							result = anError;
 | 
				
			||||||
		errorMessage = "login failed";
 | 
					//		errorMessage = "login failed";
 | 
				
			||||||
 | 
							errorMessage = aMessage;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (anError['isPermanent'] === true) {
 | 
							if (anError['isPermanent'] === true) {
 | 
				
			||||||
			this.pages()['errorPage'].setProps({message:anError.message});
 | 
								this.pages()['errorPage'].setProps({message:anError.message});
 | 
				
			||||||
@@ -925,7 +927,7 @@ console.log("THE BROWSER IS OFFLINE");
 | 
				
			|||||||
//console.log("ADD ITEM TO HISTORY");
 | 
					//console.log("ADD ITEM TO HISTORY");
 | 
				
			||||||
//console.log("ADD ITEM TO HISTORY - window", window);
 | 
					//console.log("ADD ITEM TO HISTORY - window", window);
 | 
				
			||||||
//console.log("ADD ITEM TO HISTORY - window.history", window.history);
 | 
					//console.log("ADD ITEM TO HISTORY - window.history", window.history);
 | 
				
			||||||
				window.history.pushState({'fromPage': fromPage, 'toPage': toPage});
 | 
									window.history.pushState({'fromPage': fromPage, 'toPage': toPage}, "");
 | 
				
			||||||
//#				window.history.pushState();
 | 
					//#				window.history.pushState();
 | 
				
			||||||
//console.log("ADDED ITEM TO HISTORY");
 | 
					//console.log("ADDED ITEM TO HISTORY");
 | 
				
			||||||
			} else {
 | 
								} else {
 | 
				
			||||||
@@ -956,7 +958,6 @@ console.log("THE BROWSER IS OFFLINE");
 | 
				
			|||||||
	
 | 
						
 | 
				
			||||||
		userInfo: function () {
 | 
							userInfo: function () {
 | 
				
			||||||
		var result;
 | 
							var result;
 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		result = {};
 | 
							result = {};
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		result['checkPassphraseCallback'] = MochiKit.Base.bind(this.checkPassphrase,this);
 | 
							result['checkPassphraseCallback'] = MochiKit.Base.bind(this.checkPassphrase,this);
 | 
				
			||||||
@@ -1011,7 +1012,7 @@ console.log("THE BROWSER IS OFFLINE");
 | 
				
			|||||||
		
 | 
							
 | 
				
			||||||
//console.log("messageBox - this.user()", this.user());
 | 
					//console.log("messageBox - this.user()", this.user());
 | 
				
			||||||
		if (this.featureSet() == 'EXPIRED') {
 | 
							if (this.featureSet() == 'EXPIRED') {
 | 
				
			||||||
			message = "Exprired subscription";
 | 
								message = "Expired subscription";
 | 
				
			||||||
			level = 'ERROR';
 | 
								level = 'ERROR';
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1102,6 +1103,8 @@ console.log("THE BROWSER IS OFFLINE");
 | 
				
			|||||||
	resetPanels: function () {
 | 
						resetPanels: function () {
 | 
				
			||||||
		this._isSelectionPanelOpen = false;
 | 
							this._isSelectionPanelOpen = false;
 | 
				
			||||||
		this._isSettingsPanelOpen = false;
 | 
							this._isSettingsPanelOpen = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'closeSettingsPanel');
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	featureAvailableForStyles: function (listOfSupportedStyles) {
 | 
						featureAvailableForStyles: function (listOfSupportedStyles) {
 | 
				
			||||||
@@ -1344,6 +1347,15 @@ console.log("THE BROWSER IS OFFLINE");
 | 
				
			|||||||
			MochiKit.Base.method(this.overlay(), 'show', "importing …", true),
 | 
								MochiKit.Base.method(this.overlay(), 'show', "importing …", true),
 | 
				
			||||||
			MochiKit.Base.partial(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'toggleSettingsPanel'),
 | 
								MochiKit.Base.partial(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'toggleSettingsPanel'),
 | 
				
			||||||
//			MochiKit.Base.method(this.pages()[this.currentPage()], 'setProps', {'mode':'view', 'showGlobalMask':false}),
 | 
					//			MochiKit.Base.method(this.pages()[this.currentPage()], 'setProps', {'mode':'view', 'showGlobalMask':false}),
 | 
				
			||||||
 | 
								function () { return data; },
 | 
				
			||||||
 | 
								MochiKit.Base.method(this,'importCards'),
 | 
				
			||||||
 | 
								MochiKit.Base.method(this.overlay(), 'done', "finished", 1),
 | 
				
			||||||
 | 
								MochiKit.Base.method(this.pages()[this.currentPage()], 'setProps', {'mode':'view', 'showGlobalMask':false}),
 | 
				
			||||||
 | 
							], {trace:false});
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						importCards: function(data) {
 | 
				
			||||||
 | 
							return Clipperz.Async.callbacks("MainController.importCards", [
 | 
				
			||||||
			function () { return data; },
 | 
								function () { return data; },
 | 
				
			||||||
			MochiKit.Base.partial(MochiKit.Base.map, MochiKit.Base.method(this.user(), 'createNewRecordFromJSON')),
 | 
								MochiKit.Base.partial(MochiKit.Base.map, MochiKit.Base.method(this.user(), 'createNewRecordFromJSON')),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1358,8 +1370,6 @@ console.log("THE BROWSER IS OFFLINE");
 | 
				
			|||||||
			MochiKit.Base.method(this.user(), 'saveChanges'),
 | 
								MochiKit.Base.method(this.user(), 'saveChanges'),
 | 
				
			||||||
			MochiKit.Base.partial(MochiKit.Base.method(this, 'resetRecordsInfo')),
 | 
								MochiKit.Base.partial(MochiKit.Base.method(this, 'resetRecordsInfo')),
 | 
				
			||||||
			MochiKit.Base.partial(MochiKit.Base.method(this, 'refreshUI', null)),
 | 
								MochiKit.Base.partial(MochiKit.Base.method(this, 'refreshUI', null)),
 | 
				
			||||||
			MochiKit.Base.method(this.overlay(), 'done', "finished", 1),
 | 
					 | 
				
			||||||
			MochiKit.Base.method(this.pages()[this.currentPage()], 'setProps', {'mode':'view', 'showGlobalMask':false}),
 | 
					 | 
				
			||||||
		], {trace:false});
 | 
							], {trace:false});
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -51,8 +51,8 @@
 | 
				
			|||||||
		"MochiKit/Selector.js",
 | 
							"MochiKit/Selector.js",
 | 
				
			||||||
		"-- MochiKit/Visual.js",
 | 
							"-- MochiKit/Visual.js",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		"React/react-0.13.1.js",
 | 
							"-- React/react-0.13.1.js",
 | 
				
			||||||
		"-- React/react.min-0.13.1.js",
 | 
							"React/react.min-0.13.1.js",
 | 
				
			||||||
		"-- #React/react-with-addons-0.13.1.js",
 | 
							"-- #React/react-with-addons-0.13.1.js",
 | 
				
			||||||
		"-- #React/react-with-addons.min-0.13.1.js",
 | 
							"-- #React/react-with-addons.min-0.13.1.js",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -135,6 +135,8 @@
 | 
				
			|||||||
		"Clipperz/PM/PIN.js",
 | 
							"Clipperz/PM/PIN.js",
 | 
				
			||||||
		"-- Clipperz/PM/BookmarkletProcessor.js",
 | 
							"-- Clipperz/PM/BookmarkletProcessor.js",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							"Clipperz/PM/DefaultCards.js",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		"Clipperz/PM/DataModel/EncryptedRemoteObject.js",
 | 
							"Clipperz/PM/DataModel/EncryptedRemoteObject.js",
 | 
				
			||||||
		"Clipperz/PM/DataModel/User.js",
 | 
							"Clipperz/PM/DataModel/User.js",
 | 
				
			||||||
		"Clipperz/PM/DataModel/User.Header.Legacy.js",
 | 
							"Clipperz/PM/DataModel/User.Header.Legacy.js",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -40,6 +40,7 @@ input[type=text] {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
.mainPage {
 | 
					.mainPage {
 | 
				
			||||||
//	background-color: yellow;
 | 
					//	background-color: yellow;
 | 
				
			||||||
 | 
						height: 100%;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.mainPage > #selectionPanel {
 | 
					.mainPage > #selectionPanel {
 | 
				
			||||||
@@ -93,6 +94,22 @@ input[type=text] {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Firefox considers 100% respect to height of the whole window, this is rule is necessary to eliminate the card toolbar offset. */
 | 
				
			||||||
 | 
					@-moz-document url-prefix() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						#mainPanel {
 | 
				
			||||||
 | 
							&.extra-wide {
 | 
				
			||||||
 | 
								.subpanel {
 | 
				
			||||||
 | 
									&.cardContent {
 | 
				
			||||||
 | 
										height: calc(100% - 50px);
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#mainPanel {
 | 
					#mainPanel {
 | 
				
			||||||
//	background-color: $yellow;
 | 
					//	background-color: $yellow;
 | 
				
			||||||
	left: 0px;
 | 
						left: 0px;
 | 
				
			||||||
@@ -101,7 +118,7 @@ input[type=text] {
 | 
				
			|||||||
		@include sliding-panel-container();
 | 
							@include sliding-panel-container();
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		.container {
 | 
							.container {
 | 
				
			||||||
			@include flexbox;
 | 
								@include flexbox();
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		.subpanel {
 | 
							.subpanel {
 | 
				
			||||||
@@ -114,7 +131,7 @@ input[type=text] {
 | 
				
			|||||||
			
 | 
								
 | 
				
			||||||
			&.cardContent {
 | 
								&.cardContent {
 | 
				
			||||||
				@include flex($cardContentPanelFlexWidth);
 | 
									@include flex($cardContentPanelFlexWidth);
 | 
				
			||||||
				@include flexbox;
 | 
									@include flexbox();
 | 
				
			||||||
				@include flex-direction(column);
 | 
									@include flex-direction(column);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -128,6 +145,7 @@ input[type=text] {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		div.addCardButton {
 | 
							div.addCardButton {
 | 
				
			||||||
			margin-left: 20%;
 | 
								margin-left: 20%;
 | 
				
			||||||
 | 
								z-index: 5;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -150,6 +168,7 @@ input[type=text] {
 | 
				
			|||||||
		
 | 
							
 | 
				
			||||||
		div.addCardButton {
 | 
							div.addCardButton {
 | 
				
			||||||
			margin-left: 75%;
 | 
								margin-left: 75%;
 | 
				
			||||||
 | 
								z-index: 5;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -268,7 +287,7 @@ input[type=text] {
 | 
				
			|||||||
	width: 100%;
 | 
						width: 100%;
 | 
				
			||||||
	height: 100%;
 | 
						height: 100%;
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	@include flexbox;
 | 
						@include flexbox();
 | 
				
			||||||
	@include flex-direction(column);
 | 
						@include flex-direction(column);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	.cardToolbar {
 | 
						.cardToolbar {
 | 
				
			||||||
@@ -284,7 +303,7 @@ div.cardToolbar {
 | 
				
			|||||||
//	background-color: $orange;
 | 
					//	background-color: $orange;
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	header {
 | 
						header {
 | 
				
			||||||
		@include flexbox;
 | 
							@include flexbox();
 | 
				
			||||||
		height: $mainCardToolbarHeight;
 | 
							height: $mainCardToolbarHeight;
 | 
				
			||||||
		line-height: $mainCardToolbarHeight;
 | 
							line-height: $mainCardToolbarHeight;
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
@@ -365,7 +384,7 @@ div.cardContent {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	div.cardListColumn.column {
 | 
						div.cardListColumn.column {
 | 
				
			||||||
		@include flex($cardListWidth, 0);
 | 
							@include flex($cardListWidth, 0);
 | 
				
			||||||
		@include flexbox;
 | 
							@include flexbox();
 | 
				
			||||||
//		overflow-y: scroll;
 | 
					//		overflow-y: scroll;
 | 
				
			||||||
//		overflow:auto;
 | 
					//		overflow:auto;
 | 
				
			||||||
//		@include overflow-auto;
 | 
					//		@include overflow-auto;
 | 
				
			||||||
@@ -393,7 +412,7 @@ div.cardContent {
 | 
				
			|||||||
		div.addCardButton {
 | 
							div.addCardButton {
 | 
				
			||||||
			@include icon-font();
 | 
								@include icon-font();
 | 
				
			||||||
			@include border-radius($addButtonSize / 2);
 | 
								@include border-radius($addButtonSize / 2);
 | 
				
			||||||
			z-index: 1;
 | 
								z-index: 5;
 | 
				
			||||||
//			@include radial-gradient (white, rgba(0, 0, 0, 0));
 | 
					//			@include radial-gradient (white, rgba(0, 0, 0, 0));
 | 
				
			||||||
			
 | 
								
 | 
				
			||||||
			position: relative;
 | 
								position: relative;
 | 
				
			||||||
@@ -432,10 +451,10 @@ div.cardContent {
 | 
				
			|||||||
			@include flex(auto);
 | 
								@include flex(auto);
 | 
				
			||||||
			@include mask();
 | 
								@include mask();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			@include flexbox;
 | 
								@include flexbox();
 | 
				
			||||||
			& > div.edit {
 | 
								& > div.edit {
 | 
				
			||||||
				@include flex(auto);
 | 
									@include flex(auto);
 | 
				
			||||||
				@include flexbox;
 | 
									@include flexbox();
 | 
				
			||||||
				@include flex-direction(column);
 | 
									@include flex-direction(column);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				box-shadow: 0px 0px 10px 2px rgba(0,0,0,0.75);
 | 
									box-shadow: 0px 0px 10px 2px rgba(0,0,0,0.75);
 | 
				
			||||||
@@ -446,6 +465,7 @@ div.cardContent {
 | 
				
			|||||||
				.content {
 | 
									.content {
 | 
				
			||||||
//					background-color: yellow;
 | 
					//					background-color: yellow;
 | 
				
			||||||
					background-color: white;
 | 
										background-color: white;
 | 
				
			||||||
 | 
										@include chromeFix();
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			
 | 
								
 | 
				
			||||||
@@ -459,7 +479,7 @@ div.cardContent {
 | 
				
			|||||||
		& > div.view /*, & > div.editWrapper > div.edit */ {
 | 
							& > div.view /*, & > div.editWrapper > div.edit */ {
 | 
				
			||||||
			@include flex(auto);
 | 
								@include flex(auto);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			@include flexbox;
 | 
								@include flexbox();
 | 
				
			||||||
			@include flex-direction(column);
 | 
								@include flex-direction(column);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -492,6 +512,8 @@ div.cardContent {
 | 
				
			|||||||
	line-height: $mainCardToolbarHeight;
 | 
						line-height: $mainCardToolbarHeight;
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	&.edit {
 | 
						&.edit {
 | 
				
			||||||
 | 
							@include chromeFix();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		li.save {
 | 
							li.save {
 | 
				
			||||||
			cursor: default;
 | 
								cursor: default;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -182,6 +182,10 @@ refer to http://www.clipperz.com.
 | 
				
			|||||||
	-webkit-overflow-scrolling: touch;
 | 
						-webkit-overflow-scrolling: touch;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@mixin chromeFix () {
 | 
				
			||||||
 | 
						-webkit-transform: translate3d(0,0,0);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@mixin placeholder {
 | 
					@mixin placeholder {
 | 
				
			||||||
	&::-webkit-input-placeholder {@content}
 | 
						&::-webkit-input-placeholder {@content}
 | 
				
			||||||
	&:-moz-placeholder           {@content}
 | 
						&:-moz-placeholder           {@content}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -246,6 +246,14 @@ $cardViewBasePadding: 10px;
 | 
				
			|||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							.cardField {
 | 
				
			||||||
 | 
								textarea.fieldValue {
 | 
				
			||||||
 | 
									line-height: 1em;
 | 
				
			||||||
 | 
									height: 1.3em;
 | 
				
			||||||
 | 
									outline: none;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	.edit {
 | 
						.edit {
 | 
				
			||||||
@@ -386,7 +394,7 @@ $cardViewBasePadding: 10px;
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	.cardField {
 | 
						.cardField {
 | 
				
			||||||
		@include flexbox;
 | 
							@include flexbox();
 | 
				
			||||||
		@include flex-direction(row);
 | 
							@include flex-direction(row);
 | 
				
			||||||
//		@include user-select(none);
 | 
					//		@include user-select(none);
 | 
				
			||||||
//		background-color: rgba(255, 255, 255, 0.75);
 | 
					//		background-color: rgba(255, 255, 255, 0.75);
 | 
				
			||||||
@@ -405,7 +413,7 @@ $cardViewBasePadding: 10px;
 | 
				
			|||||||
			width: 32px;
 | 
								width: 32px;
 | 
				
			||||||
//			background-color: pink;
 | 
					//			background-color: pink;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//			@include flexbox;
 | 
					//			@include flexbox();
 | 
				
			||||||
//			@include flex-direction(column);
 | 
					//			@include flex-direction(column);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			.removeField {
 | 
								.removeField {
 | 
				
			||||||
@@ -478,8 +486,10 @@ $cardViewBasePadding: 10px;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
			.fieldValue {
 | 
								.fieldValue {
 | 
				
			||||||
				font-size: 18pt;
 | 
									font-size: 18pt;
 | 
				
			||||||
//				line-height: 28px;
 | 
					 | 
				
			||||||
				line-height: 1.2em;
 | 
									line-height: 1.2em;
 | 
				
			||||||
 | 
					//				line-height: 1em;
 | 
				
			||||||
 | 
					//				height: 1.3em;
 | 
				
			||||||
 | 
					//				outline: none;
 | 
				
			||||||
				@include user-select(text);
 | 
									@include user-select(text);
 | 
				
			||||||
			
 | 
								
 | 
				
			||||||
				white-space: pre-wrap;
 | 
									white-space: pre-wrap;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -25,7 +25,7 @@ refer to http://www.clipperz.com.
 | 
				
			|||||||
	@include overflow-auto;
 | 
						@include overflow-auto;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	div.loginForm {
 | 
						div.loginForm {
 | 
				
			||||||
		@include flexbox;
 | 
							@include flexbox();
 | 
				
			||||||
		@include flex-direction(column);
 | 
							@include flex-direction(column);
 | 
				
			||||||
		@include align-items(stretch);
 | 
							@include align-items(stretch);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -144,7 +144,7 @@ refer to http://www.clipperz.com.
 | 
				
			|||||||
		footer {
 | 
							footer {
 | 
				
			||||||
			@include flex(1);
 | 
								@include flex(1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			@include flexbox;
 | 
								@include flexbox();
 | 
				
			||||||
			@include flex-direction(column);
 | 
								@include flex-direction(column);
 | 
				
			||||||
			@include align-items(stretch);
 | 
								@include align-items(stretch);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -192,7 +192,7 @@ refer to http://www.clipperz.com.
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		footer {
 | 
							footer {
 | 
				
			||||||
			max-height: 25px;
 | 
								/* max-height: 25px; */
 | 
				
			||||||
			line-height: 20pt;
 | 
								line-height: 20pt;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -235,6 +235,9 @@ refer to http://www.clipperz.com.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
.links {
 | 
					.links {
 | 
				
			||||||
	ul {
 | 
						ul {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							margin-bottom: 1em;
 | 
				
			||||||
 | 
							
 | 
				
			||||||
		li {
 | 
							li {
 | 
				
			||||||
			color: white;
 | 
								color: white;
 | 
				
			||||||
			cursor: pointer;
 | 
								cursor: pointer;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -26,7 +26,7 @@ refer to http://www.clipperz.com.
 | 
				
			|||||||
	color: $main-alternate-text-color;
 | 
						color: $main-alternate-text-color;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	.registrationForm {
 | 
						.registrationForm {
 | 
				
			||||||
		@include flexbox;
 | 
							@include flexbox();
 | 
				
			||||||
		@include flex-direction(column);
 | 
							@include flex-direction(column);
 | 
				
			||||||
		@include align-items(stretch);
 | 
							@include align-items(stretch);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -248,7 +248,7 @@ refer to http://www.clipperz.com.
 | 
				
			|||||||
				}
 | 
									}
 | 
				
			||||||
			
 | 
								
 | 
				
			||||||
				p {
 | 
									p {
 | 
				
			||||||
					@include flexbox;
 | 
										@include flexbox();
 | 
				
			||||||
					@include flex-direction(row);
 | 
										@include flex-direction(row);
 | 
				
			||||||
					padding-top: 8px;
 | 
										padding-top: 8px;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -408,7 +408,7 @@ refer to http://www.clipperz.com.
 | 
				
			|||||||
					$detailMargin: 4px;
 | 
										$detailMargin: 4px;
 | 
				
			||||||
					$labelPadding: 5px;
 | 
										$labelPadding: 5px;
 | 
				
			||||||
					
 | 
										
 | 
				
			||||||
					@include flexbox;
 | 
										@include flexbox();
 | 
				
			||||||
					@include flex-direction(row);
 | 
										@include flex-direction(row);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
					border: 1px solid #222;
 | 
										border: 1px solid #222;
 | 
				
			||||||
@@ -442,7 +442,7 @@ refer to http://www.clipperz.com.
 | 
				
			|||||||
						}
 | 
											}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
						.otpLabel {
 | 
											.otpLabel {
 | 
				
			||||||
							@include flexbox;
 | 
												@include flexbox();
 | 
				
			||||||
							@include flex-direction(row);
 | 
												@include flex-direction(row);
 | 
				
			||||||
							margin-right: 5px;
 | 
												margin-right: 5px;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -541,7 +541,7 @@ refer to http://www.clipperz.com.
 | 
				
			|||||||
			.content {
 | 
								.content {
 | 
				
			||||||
				display: block;
 | 
									display: block;
 | 
				
			||||||
				height: 100%;
 | 
									height: 100%;
 | 
				
			||||||
				@include flexbox;
 | 
									@include flexbox();
 | 
				
			||||||
				@include flex-direction(column);
 | 
									@include flex-direction(column);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				ul.stepNavbar {
 | 
									ul.stepNavbar {
 | 
				
			||||||
@@ -628,76 +628,142 @@ refer to http://www.clipperz.com.
 | 
				
			|||||||
					}
 | 
										}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
					&.Preview {
 | 
										&.Preview {
 | 
				
			||||||
						li.card {
 | 
					//						overflow: hidden;
 | 
				
			||||||
							@include flexbox;
 | 
											@include flexbox();
 | 
				
			||||||
							@include flex-direction(row);
 | 
											@include flex-direction(column);
 | 
				
			||||||
							padding-top: 15px;
 | 
					 | 
				
			||||||
							padding-bottom: 0px;
 | 
					 | 
				
			||||||
							border-bottom: 1px solid #333;
 | 
					 | 
				
			||||||
						
 | 
											
 | 
				
			||||||
							&.archived {
 | 
											div.preview {
 | 
				
			||||||
								background-color: #333;
 | 
												@include flex(auto);
 | 
				
			||||||
							}
 | 
												@include flexbox();
 | 
				
			||||||
 | 
												@include flex-direction(column);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							input {
 | 
												div.selectButtons {
 | 
				
			||||||
								width: 30px;
 | 
					 | 
				
			||||||
								margin-top: 6px;
 | 
					 | 
				
			||||||
								@include flex(none);
 | 
													@include flex(none);
 | 
				
			||||||
 | 
													color: gray;
 | 
				
			||||||
 | 
													
 | 
				
			||||||
 | 
													span {
 | 
				
			||||||
 | 
														padding-right: 10px;
 | 
				
			||||||
 | 
													}
 | 
				
			||||||
 | 
													
 | 
				
			||||||
 | 
													a {
 | 
				
			||||||
 | 
														cursor: pointer;
 | 
				
			||||||
 | 
					//									padding-right: 4px;
 | 
				
			||||||
 | 
														color: white;
 | 
				
			||||||
 | 
														font-weight: bold;
 | 
				
			||||||
 | 
														
 | 
				
			||||||
 | 
														&:after {
 | 
				
			||||||
 | 
															font-weight: normal;
 | 
				
			||||||
 | 
															color: gray;
 | 
				
			||||||
 | 
															content: " - ";
 | 
				
			||||||
 | 
														};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
														&:last-child:after {
 | 
				
			||||||
 | 
															content: "";
 | 
				
			||||||
 | 
														}
 | 
				
			||||||
 | 
													}
 | 
				
			||||||
							}
 | 
												}
 | 
				
			||||||
							
 | 
												
 | 
				
			||||||
							div.cardContent {
 | 
												div.tagButtons {
 | 
				
			||||||
 | 
													@include flex(none);
 | 
				
			||||||
 | 
													color: gray;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
													padding-top: 5px;
 | 
				
			||||||
 | 
													padding-bottom: 5px;
 | 
				
			||||||
 | 
													border-bottom: 1px solid #333;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
													label {
 | 
				
			||||||
 | 
														cursor: pointer;
 | 
				
			||||||
 | 
														line-height: 1.5em;
 | 
				
			||||||
 | 
													}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
													input {
 | 
				
			||||||
 | 
														font-family: "clipperz-font";
 | 
				
			||||||
 | 
														font-size: 12pt;
 | 
				
			||||||
 | 
														color: white;
 | 
				
			||||||
 | 
														background-color: black;
 | 
				
			||||||
 | 
														border: 0px;
 | 
				
			||||||
 | 
														border-bottom: 1px solid #333;
 | 
				
			||||||
 | 
														outline: none;
 | 
				
			||||||
 | 
														margin-left: 5px;
 | 
				
			||||||
 | 
													}
 | 
				
			||||||
 | 
												}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
												ul {
 | 
				
			||||||
								@include flex(auto);
 | 
													@include flex(auto);
 | 
				
			||||||
								@include flexbox;
 | 
													@include overflow-auto();
 | 
				
			||||||
								@include flex-direction(column);
 | 
					 | 
				
			||||||
								height: auto;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
								h3 {
 | 
													li.card {
 | 
				
			||||||
									font-size: 24pt;
 | 
														@include flexbox();
 | 
				
			||||||
									padding-bottom: 6px;
 | 
														@include flex-direction(row);
 | 
				
			||||||
								}
 | 
														padding-top: 15px;
 | 
				
			||||||
 | 
														padding-bottom: 0px;
 | 
				
			||||||
 | 
														border-bottom: 1px solid #333;
 | 
				
			||||||
						
 | 
											
 | 
				
			||||||
								ul.tagList {
 | 
														&.archived {
 | 
				
			||||||
									li {
 | 
															background-color: #333;
 | 
				
			||||||
										display: inline-block;
 | 
														}
 | 
				
			||||||
										padding-right: 10px;
 | 
					 | 
				
			||||||
										padding-bottom: 5px;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
										&:before {
 | 
														input {
 | 
				
			||||||
											content: 'tag';
 | 
															width: 30px;
 | 
				
			||||||
											@include icon-font();
 | 
															margin-top: 6px;
 | 
				
			||||||
 | 
															@include flex(none);
 | 
				
			||||||
 | 
														}
 | 
				
			||||||
 | 
											
 | 
				
			||||||
 | 
														div.cardContent {
 | 
				
			||||||
 | 
															@include flex(auto);
 | 
				
			||||||
 | 
															@include flexbox();
 | 
				
			||||||
 | 
															@include flex-direction(column);
 | 
				
			||||||
 | 
															height: auto;
 | 
				
			||||||
 | 
												
 | 
				
			||||||
 | 
															h3 {
 | 
				
			||||||
 | 
																font-size: 24pt;
 | 
				
			||||||
 | 
																padding-bottom: 6px;
 | 
				
			||||||
 | 
															}
 | 
				
			||||||
 | 
													
 | 
				
			||||||
 | 
															ul.tagList {
 | 
				
			||||||
 | 
																li {
 | 
				
			||||||
 | 
																	display: inline-block;
 | 
				
			||||||
 | 
																	padding-right: 10px;
 | 
				
			||||||
 | 
																	padding-bottom: 5px;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
																	&:before {
 | 
				
			||||||
 | 
																		content: 'tag';
 | 
				
			||||||
 | 
																		@include icon-font();
 | 
				
			||||||
 | 
																		font-size: 10pt;
 | 
				
			||||||
 | 
																		padding-right: 5px;
 | 
				
			||||||
 | 
																		line-height: 28px;
 | 
				
			||||||
 | 
																		color: #ccc;
 | 
				
			||||||
 | 
																	}
 | 
				
			||||||
 | 
																}
 | 
				
			||||||
 | 
															}
 | 
				
			||||||
 | 
													
 | 
				
			||||||
 | 
															dl {
 | 
				
			||||||
 | 
																dt {
 | 
				
			||||||
 | 
																	font-size: 12pt;
 | 
				
			||||||
 | 
																	color: gray;
 | 
				
			||||||
 | 
																	line-height: 16pt;
 | 
				
			||||||
 | 
																}
 | 
				
			||||||
 | 
														
 | 
				
			||||||
 | 
																dd {
 | 
				
			||||||
 | 
																	font-size: 16pt;
 | 
				
			||||||
 | 
																	color: white;
 | 
				
			||||||
 | 
																	line-height: 24pt;
 | 
				
			||||||
 | 
																	padding-bottom: 6pt;
 | 
				
			||||||
 | 
															
 | 
				
			||||||
 | 
																	&.PASSWORD {
 | 
				
			||||||
 | 
																		font-family: clipperz-password;
 | 
				
			||||||
 | 
																	}
 | 
				
			||||||
 | 
																}
 | 
				
			||||||
 | 
															}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
															p {
 | 
				
			||||||
											font-size: 10pt;
 | 
																font-size: 10pt;
 | 
				
			||||||
											padding-right: 5px;
 | 
																padding-top: 10px;
 | 
				
			||||||
											line-height: 28px;
 | 
																padding-bottom: 10px;
 | 
				
			||||||
											color: #ccc;
 | 
					 | 
				
			||||||
										}
 | 
															}
 | 
				
			||||||
									}
 | 
														}
 | 
				
			||||||
								}
 | 
													}
 | 
				
			||||||
							
 | 
												
 | 
				
			||||||
								dl {
 | 
					 | 
				
			||||||
									dt {
 | 
					 | 
				
			||||||
										font-size: 12pt;
 | 
					 | 
				
			||||||
										color: gray;
 | 
					 | 
				
			||||||
										line-height: 16pt;
 | 
					 | 
				
			||||||
									}
 | 
					 | 
				
			||||||
									
 | 
					 | 
				
			||||||
									dd {
 | 
					 | 
				
			||||||
										font-size: 16pt;
 | 
					 | 
				
			||||||
										color: white;
 | 
					 | 
				
			||||||
										line-height: 24pt;
 | 
					 | 
				
			||||||
										padding-bottom: 6pt;
 | 
					 | 
				
			||||||
										
 | 
					 | 
				
			||||||
										&.PASSWORD {
 | 
					 | 
				
			||||||
											font-family: clipperz-password;
 | 
					 | 
				
			||||||
//											color: red;
 | 
					 | 
				
			||||||
										}
 | 
					 | 
				
			||||||
									}
 | 
					 | 
				
			||||||
								}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
								p {
 | 
					 | 
				
			||||||
									font-size: 10pt;
 | 
					 | 
				
			||||||
									padding-top: 10px;
 | 
					 | 
				
			||||||
									padding-bottom: 10px;
 | 
					 | 
				
			||||||
								}
 | 
					 | 
				
			||||||
							}
 | 
												}
 | 
				
			||||||
						}
 | 
											}
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user