StyleKit classes wip
This commit is contained in:
@@ -6,12 +6,12 @@
|
||||
z-index: $z-index-footer-bar;
|
||||
}
|
||||
|
||||
#footer-bar .item {
|
||||
#footer-bar .sk-app-bar-item {
|
||||
z-index: $z-index-footer-bar-item;
|
||||
position: relative;
|
||||
user-select: none;
|
||||
|
||||
.panel {
|
||||
.sk-panel {
|
||||
max-height: 85vh;
|
||||
position: absolute;
|
||||
right: 0px;
|
||||
@@ -20,16 +20,14 @@
|
||||
min-width: 300px;
|
||||
z-index: $z-index-footer-bar-item-panel;
|
||||
margin-top: 15px;
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#account-panel {
|
||||
width: 400px;
|
||||
}
|
||||
|
||||
.panel {
|
||||
.sk-panel {
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
|
||||
@@ -26,11 +26,11 @@
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.panel {
|
||||
.sk-panel {
|
||||
width: 315px;
|
||||
flex-grow: 0;
|
||||
|
||||
.header {
|
||||
.sk-panel-header {
|
||||
justify-content: center;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
.app-bar {
|
||||
.item {
|
||||
.sk-app-bar {
|
||||
.sk-app-bar-item {
|
||||
position: relative;
|
||||
}
|
||||
}
|
||||
@@ -15,6 +15,4 @@
|
||||
margin-top: 5px;
|
||||
width: 280px;
|
||||
max-height: calc(85vh - 90px);
|
||||
background-color: white;
|
||||
color: $selected-text-color;
|
||||
}
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
#permissions-modal {
|
||||
width: 350px;
|
||||
.panel {
|
||||
.sk-panel {
|
||||
border-radius: 0;
|
||||
background-color: white;
|
||||
}
|
||||
.content {
|
||||
.sk-panel-content {
|
||||
padding-top: 1.1rem;
|
||||
}
|
||||
.footer {
|
||||
.sk-panel-footer {
|
||||
padding-bottom: 1.4rem;
|
||||
}
|
||||
}
|
||||
@@ -43,9 +43,9 @@
|
||||
}
|
||||
}
|
||||
|
||||
.panel {
|
||||
background-color: white;
|
||||
}
|
||||
// .sk-panel {
|
||||
// background-color: white;
|
||||
// }
|
||||
|
||||
.header .subtitle {
|
||||
font-size: 1.1rem;
|
||||
@@ -70,7 +70,7 @@
|
||||
|
||||
.sn-component {
|
||||
height: 100%;
|
||||
.panel {
|
||||
.sk-panel {
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
.sn-component {
|
||||
|
||||
.notification {
|
||||
.sk-notification {
|
||||
&.unpadded {
|
||||
padding: 0;
|
||||
padding-bottom: 0 !important;
|
||||
@@ -18,7 +18,7 @@
|
||||
}
|
||||
|
||||
|
||||
.app-bar {
|
||||
.sk-app-bar {
|
||||
&.no-top-edge {
|
||||
border-top: 0;
|
||||
}
|
||||
@@ -26,10 +26,8 @@
|
||||
|
||||
}
|
||||
|
||||
.panel {
|
||||
color: black;
|
||||
|
||||
.header {
|
||||
.sk-panel {
|
||||
.sk-panel-header {
|
||||
.close-button {
|
||||
&:hover {
|
||||
text-decoration: none;
|
||||
@@ -42,20 +40,16 @@
|
||||
}
|
||||
|
||||
|
||||
.button-group.stretch {
|
||||
.button:not(.featured) {
|
||||
.sk-button-group.stretch {
|
||||
.sk-button:not(.featured) {
|
||||
// Default buttons that are not featured and stretched should have larger vertical padding
|
||||
padding: 9px;
|
||||
}
|
||||
}
|
||||
|
||||
a {
|
||||
color: $blue-color;
|
||||
}
|
||||
}
|
||||
|
||||
#session-history-menu {
|
||||
.menu-panel .row .sublabel.opaque {
|
||||
.sk-menu-panel .sk-menu-panel-row .sk-sublabel.opaque {
|
||||
opacity: 1.0
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,52 +1,51 @@
|
||||
.sn-component
|
||||
.panel#account-panel
|
||||
.header
|
||||
%h1.title Account
|
||||
%a.close-button{"ng-click" => "close()"} Close
|
||||
.content
|
||||
|
||||
.panel-section.hero{"ng-if" => "!user && !formData.showLogin && !formData.showRegister && !formData.mfa"}
|
||||
%h1.title Sign in or register to enable sync and end-to-end encryption.
|
||||
.panel-row
|
||||
.panel-row
|
||||
.button-group.stretch
|
||||
.button.info.featured{"ng-click" => "formData.showLogin = true"}
|
||||
.label Sign In
|
||||
.button.info.featured{"ng-click" => "formData.showRegister = true"}
|
||||
.label Register
|
||||
.sk-panel#account-panel
|
||||
.sk-panel-header
|
||||
.sk-panel-header-title Account
|
||||
%a.sk-a.infoclose-button{"ng-click" => "close()"} Close
|
||||
.sk-panel-content
|
||||
.sk-panel-section.hero{"ng-if" => "!user && !formData.showLogin && !formData.showRegister && !formData.mfa"}
|
||||
.sk-panel-section-title Sign in or register to enable sync and end-to-end encryption.
|
||||
.sk-panel-row
|
||||
.sk-panel-row
|
||||
.sk-button-group.stretch
|
||||
.sk-button.info.featured{"ng-click" => "formData.showLogin = true"}
|
||||
.sk-label Sign In
|
||||
.sk-button.info.featured{"ng-click" => "formData.showRegister = true"}
|
||||
.sk-label Register
|
||||
%p
|
||||
Standard Notes is free on every platform, and comes standard with sync and encryption.
|
||||
|
||||
.panel-section{"ng-if" => "formData.showLogin || formData.showRegister"}
|
||||
%h3.title.panel-row
|
||||
.sk-panel-section{"ng-if" => "formData.showLogin || formData.showRegister"}
|
||||
.sk-panel-section-title
|
||||
{{formData.showLogin ? "Sign In" : "Register"}}
|
||||
|
||||
%form.panel-form{"ng-submit" => "submitAuthForm()"}
|
||||
%form.sk-panel-form{"ng-submit" => "submitAuthForm()"}
|
||||
%input{:placeholder => 'Email', "sn-autofocus" => 'true', "should-focus" => "true", :name => 'email', :required => true, :type => 'email', 'ng-model' => 'formData.email'}
|
||||
%input{:placeholder => 'Password', :name => 'password', :required => true, :type => 'password', 'ng-model' => 'formData.user_password'}
|
||||
%input{:placeholder => 'Confirm Password', "ng-if" => "formData.showRegister", :name => 'password', :required => true, :type => 'password', 'ng-model' => 'formData.password_conf'}
|
||||
|
||||
%a.panel-row{"ng-click" => "formData.showAdvanced = !formData.showAdvanced"}
|
||||
%a.sk-panel-row{"ng-click" => "formData.showAdvanced = !formData.showAdvanced"}
|
||||
Advanced Options
|
||||
.notification.info{"ng-if" => "formData.showRegister"}
|
||||
%h2.title No Password Reset.
|
||||
.text Because your notes are encrypted using your password, Standard Notes does not have a password reset option. You cannot forget your password.
|
||||
.sk-notification.info{"ng-if" => "formData.showRegister"}
|
||||
.sk-notification-title No Password Reset.
|
||||
.sk-notification-text Because your notes are encrypted using your password, Standard Notes does not have a password reset option. You cannot forget your password.
|
||||
|
||||
.notification.unpadded.default.advanced-options.panel-row{"ng-if" => "formData.showAdvanced"}
|
||||
.panel-column.stretch
|
||||
%h4.title.panel-row.padded-row Advanced Options
|
||||
.sk-notification.unpadded.default.advanced-options.sk-panel-row{"ng-if" => "formData.showAdvanced"}
|
||||
.sk-panel-column.stretch
|
||||
.sk-notification-title.sk-panel-row.padded-row Advanced Options
|
||||
%div.bordered-row.padded-row
|
||||
%label Sync Server Domain
|
||||
%input.form-control.mt-5{:name => 'server', :placeholder => 'Server URL', :required => true, :type => 'text', 'ng-model' => 'formData.url'}
|
||||
%label.padded-row{"ng-if" => "formData.showLogin"}
|
||||
%input{"type" => "checkbox", "ng-model" => "formData.strictSignin"}
|
||||
%label.sk-label Sync Server Domain
|
||||
%input.sk-input.mt-5.sk-input{:name => 'server', :placeholder => 'Server URL', :required => true, :type => 'text', 'ng-model' => 'formData.url'}
|
||||
%label.sk-label.padded-row{"ng-if" => "formData.showLogin"}
|
||||
%input.sk-input{"type" => "checkbox", "ng-model" => "formData.strictSignin"}
|
||||
Use strict sign in
|
||||
%span
|
||||
%a{"href" => "https://standardnotes.org/help/security", "target" => "_blank"} (Learn more)
|
||||
|
||||
.button-group.stretch.panel-row.form-submit
|
||||
%button.button.info.featured{"type" => "submit", "ng-disabled" => "formData.authenticating"}
|
||||
.label {{formData.showLogin ? "Sign In" : "Register"}}
|
||||
.sk-button-group.stretch.sk-panel-row.form-submit
|
||||
%button.sk-button.info.featured{"type" => "submit", "ng-disabled" => "formData.authenticating"}
|
||||
.sk-label {{formData.showLogin ? "Sign In" : "Register"}}
|
||||
|
||||
%label
|
||||
%input{"type" => "checkbox", "ng-model" => "formData.ephemeral", "ng-true-value" => "false", "ng-false-value" => "true"}
|
||||
@@ -58,82 +57,85 @@
|
||||
%em.block.center-align.mt-10{"ng-if" => "formData.status", "style" => "font-size: 14px;"}
|
||||
{{formData.status}}
|
||||
|
||||
.panel-section{"ng-if" => "formData.mfa"}
|
||||
.sk-panel-section{"ng-if" => "formData.mfa"}
|
||||
%form{"ng-submit" => "submitMfaForm()"}
|
||||
%p {{formData.mfa.message}}
|
||||
%input.form-control.mt-10{:placeholder => "Enter Code", "sn-autofocus" => "true", "should-focus" => "true", :autofocus => "true", :name => 'mfa', :required => true, 'ng-model' => 'formData.userMfaCode'}
|
||||
.button-group.stretch.panel-row.form-submit
|
||||
%input.sk-input.mt-10{:placeholder => "Enter Code", "sn-autofocus" => "true", "should-focus" => "true", :autofocus => "true", :name => 'mfa', :required => true, 'ng-model' => 'formData.userMfaCode'}
|
||||
.sk-button-group.stretch.sk-panel-row.form-submit
|
||||
%button.button.info.featured{"type" => "submit"}
|
||||
.label Sign In
|
||||
.sk-label Sign In
|
||||
|
||||
%div{"ng-if" => "!formData.showLogin && !formData.showRegister && !formData.mfa"}
|
||||
.panel-section{"ng-if" => "user"}
|
||||
.notification.danger{"ng-if" => "syncStatus.error"}
|
||||
%h2.title Sync Unreachable
|
||||
.text Hmm...we can't seem to sync your account. The reason: {{syncStatus.error.message}}
|
||||
.sk-panel-section{"ng-if" => "user"}
|
||||
.sk-notification.danger{"ng-if" => "syncStatus.error"}
|
||||
.sk-notification-title Sync Unreachable
|
||||
.sk-notification-text Hmm...we can't seem to sync your account. The reason: {{syncStatus.error.message}}
|
||||
%p
|
||||
%a{"href" => "https://standardnotes.org/help", "target" => "_blank"} Need help?
|
||||
.panel-row
|
||||
%h2.title.wrap {{user.email}}
|
||||
.horizontal-group{"delay-hide" => "true", "show" => "syncStatus.syncOpInProgress || syncStatus.needsMoreSync", "delay" => "1000"}
|
||||
.spinner.small.info
|
||||
.sublabel
|
||||
|
||||
.sk-panel-row
|
||||
.sk-panel-column
|
||||
.sk-h1.sk-bold.wrap {{user.email}}
|
||||
.sk-subtitle.subtle.normal {{server}}
|
||||
.sk-horizontal-group{"delay-hide" => "true", "show" => "syncStatus.syncOpInProgress || syncStatus.needsMoreSync", "delay" => "1000"}
|
||||
.sk-spinner.small.info
|
||||
.sk-sublabel
|
||||
{{"Syncing" + (syncStatus.total > 0 ? ":" : "")}}
|
||||
%span{"ng-if" => "syncStatus.total > 0"} {{syncStatus.current}}/{{syncStatus.total}}
|
||||
|
||||
.subtitle.subtle.normal {{server}}
|
||||
|
||||
.panel-row
|
||||
.sk-panel-row
|
||||
|
||||
%a.panel-row.condensed{"ng-click" => "openPasswordWizard('change-pw')"} Change Password
|
||||
%a.panel-row.justify-left.condensed.success{"ng-if" => "securityUpdateAvailable", "ng-click" => "openPasswordWizard('upgrade-security')"}
|
||||
.inline.circle.small.success.mr-8
|
||||
%a.sk-a.info.sk-panel-row.condensed{"ng-click" => "openPasswordWizard('change-pw')"} Change Password
|
||||
%a.sk-panel-row.justify-left.condensed.success{"ng-if" => "securityUpdateAvailable", "ng-click" => "openPasswordWizard('upgrade-security')"}
|
||||
.inline.sk-circle.small.success.mr-8
|
||||
.inline Security Update Available
|
||||
|
||||
.panel-section
|
||||
%h3.title.panel-row Encryption
|
||||
%h5.subtitle.info.panel-row{"ng-if" => "encryptionEnabled()"}
|
||||
.sk-panel-section
|
||||
.sk-panel-section-title Encryption
|
||||
.sk-panel-section-subtitle.info{"ng-if" => "encryptionEnabled()"}
|
||||
{{encryptionStatusForNotes()}}
|
||||
%p
|
||||
%p.sk-p
|
||||
{{encryptionStatusString()}}
|
||||
|
||||
.panel-section
|
||||
%h3.title.panel-row Passcode Lock
|
||||
.sk-panel-section
|
||||
.sk-panel-section-title Passcode Lock
|
||||
%div{"ng-if" => "!hasPasscode()"}
|
||||
%div{"ng-if" => "canAddPasscode"}
|
||||
.panel-row{"ng-if" => "!formData.showPasscodeForm"}
|
||||
.button.info{"ng-click" => "addPasscodeClicked(); $event.stopPropagation();"}
|
||||
.label Add Passcode
|
||||
.sk-panel-row{"ng-if" => "!formData.showPasscodeForm"}
|
||||
.sk-button.info{"ng-click" => "addPasscodeClicked(); $event.stopPropagation();"}
|
||||
.sk-label Add Passcode
|
||||
|
||||
%p Add an app passcode to lock the app and encrypt on-device key storage.
|
||||
%p.sk-p Add an app passcode to lock the app and encrypt on-device key storage.
|
||||
|
||||
%div{"ng-if" => "!canAddPasscode"}
|
||||
%p Adding a passcode is not supported in temporary sessions. Please sign out, then sign back in with the "Stay signed in" option checked.
|
||||
%p.sk-p Adding a passcode is not supported in temporary sessions. Please sign out, then sign back in with the "Stay signed in" option checked.
|
||||
|
||||
%form{"ng-if" => "formData.showPasscodeForm", "ng-submit" => "submitPasscodeForm()"}
|
||||
%input.form-control{:type => 'password', "ng-model" => "formData.passcode", "placeholder" => "Passcode", "sn-autofocus" => "true", "should-focus" => "true"}
|
||||
%input.form-control{:type => 'password', "ng-model" => "formData.confirmPasscode", "placeholder" => "Confirm Passcode"}
|
||||
.button-group.stretch.panel-row.form-submit
|
||||
%button.button.info{"type" => "submit"}
|
||||
.label Set Passcode
|
||||
%a.panel-row{"ng-click" => "formData.showPasscodeForm = false"} Cancel
|
||||
%form.sk-panel-form{"ng-if" => "formData.showPasscodeForm", "ng-submit" => "submitPasscodeForm()"}
|
||||
.sk-panel-row
|
||||
%input.sk-input{:type => 'password', "ng-model" => "formData.passcode", "placeholder" => "Passcode", "sn-autofocus" => "true", "should-focus" => "true"}
|
||||
%input.sk-input{:type => 'password', "ng-model" => "formData.confirmPasscode", "placeholder" => "Confirm Passcode"}
|
||||
.sk-button-group.stretch.sk-panel-row.form-submit
|
||||
%button.sk-button.info{"type" => "submit"}
|
||||
.sk-label Set Passcode
|
||||
%a.neutral.sk-a.sk-panel-row{"ng-click" => "formData.showPasscodeForm = false"} Cancel
|
||||
|
||||
%div{"ng-if" => "hasPasscode() && !formData.showPasscodeForm"}
|
||||
.panel-row
|
||||
%p
|
||||
.sk-panel-row
|
||||
%p.sk-p
|
||||
Passcode lock is enabled.
|
||||
%span{"ng-if" => "isDesktopApplication()"} Your passcode will be required on new sessions after app quit.
|
||||
.panel-row.justify-left
|
||||
.horizontal-group
|
||||
%a.info{"ng-click" => "changePasscodePressed()"} Change Passcode
|
||||
%a.danger{"ng-click" => "removePasscodePressed()"} Remove Passcode
|
||||
.sk-panel-row.justify-left
|
||||
.sk-horizontal-group
|
||||
%a.sk-a.info{"ng-click" => "changePasscodePressed()"} Change Passcode
|
||||
%a.sk-a.danger{"ng-click" => "removePasscodePressed()"} Remove Passcode
|
||||
|
||||
|
||||
|
||||
.panel-section{"ng-if" => "!importData.loading"}
|
||||
%h3.title Data Backups
|
||||
%form.panel-form{"ng-if" => "encryptedBackupsAvailable()"}
|
||||
.input-group
|
||||
.sk-panel-section{"ng-if" => "!importData.loading"}
|
||||
.sk-panel-section-title Data Backups
|
||||
%form.sk-panel-form.sk-panel-row{"ng-if" => "encryptedBackupsAvailable()"}
|
||||
.sk-input-group
|
||||
%label
|
||||
%input{"type" => "radio", "ng-model" => "archiveFormData.encrypted", "ng-value" => "true", "ng-change" => "archiveFormData.encrypted = true"}
|
||||
Encrypted
|
||||
@@ -141,30 +143,30 @@
|
||||
%input{"type" => "radio", "ng-model" => "archiveFormData.encrypted", "ng-value" => "false", "ng-change" => "archiveFormData.encrypted = false"}
|
||||
Decrypted
|
||||
|
||||
.button-group
|
||||
.button.info{"ng-click" => "downloadDataArchive()"}
|
||||
.label Download Backup
|
||||
.sk-button-group.sk-panel-row.justify-left
|
||||
.sk-button.info{"ng-click" => "downloadDataArchive()"}
|
||||
.sk-label Download Backup
|
||||
|
||||
%label.button.info
|
||||
%label.sk-button.info
|
||||
%input{"type" => "file", "style" => "display: none;", "file-change" => "->", "handler" => "importFileSelected(files)"}
|
||||
.label Import From Backup
|
||||
.sk-label Import From Backup
|
||||
|
||||
%span{"ng-if" => "isDesktopApplication()"} Backups are automatically created on desktop and can be managed via the "Backups" top-level menu.
|
||||
|
||||
#import-password-request{"ng-if" => "importData.requestPassword"}
|
||||
%form.panel-form.stretch{"ng-submit" => "submitImportPassword()"}
|
||||
%form.sk-panel-form.stretch{"ng-submit" => "submitImportPassword()"}
|
||||
%p Enter the account password associated with the import file.
|
||||
%input.form-control.mt-5{:type => 'password', "placeholder" => "Enter File Account Password", "ng-model" => "importData.password", "autofocus" => "true"}
|
||||
.button-group.stretch.panel-row.form-submit
|
||||
%button.button.info{"type" => "submit"}
|
||||
.label Decrypt & Import
|
||||
%input.sk-input.mt-5{:type => 'password', "placeholder" => "Enter File Account Password", "ng-model" => "importData.password", "autofocus" => "true"}
|
||||
.sk-button-group.stretch.sk-panel-row.form-submit
|
||||
%button.sk-button.info{"type" => "submit"}
|
||||
.sk-label Decrypt & Import
|
||||
%p
|
||||
Importing from backup will not overwrite existing data, but instead create a duplicate of any differing data.
|
||||
%p If you'd like to import only a selection of items instead of the whole file, please use the Batch Manager extension.
|
||||
.panel-row
|
||||
.spinner.small.info{"ng-if" => "importData.loading"}
|
||||
.footer
|
||||
%a.right{"ng-if" => "formData.showLogin || formData.showRegister", "ng-click" => "formData.showLogin = false; formData.showRegister = false;"}
|
||||
.sk-panel-row
|
||||
.sk-spinner.small.info{"ng-if" => "importData.loading"}
|
||||
.sk-panel-footer
|
||||
%a.sk-a.right{"ng-if" => "formData.showLogin || formData.showRegister", "ng-click" => "formData.showLogin = false; formData.showRegister = false;"}
|
||||
Cancel
|
||||
%a.right{"ng-if" => "!formData.showLogin && !formData.showRegister", "ng-click" => "destroyLocalData()"}
|
||||
%a.sk-a.right.danger{"ng-if" => "!formData.showLogin && !formData.showRegister", "ng-click" => "destroyLocalData()"}
|
||||
{{ user ? "Sign out and clear local data" : "Clear all local data" }}
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
.sn-component
|
||||
.menu-panel.dropdown-menu
|
||||
.sk-menu-panel.dropdown-menu
|
||||
|
||||
%a.no-decoration{"ng-if" => "extensions.length == 0", "href" => "https://standardnotes.org/extensions", "target" => "blank"}
|
||||
%menu-row{"label" => "'Download Actions'"}
|
||||
|
||||
%div{"ng-repeat" => "extension in extensions"}
|
||||
.header{"ng-click" => "extension.hide = !extension.hide; $event.stopPropagation();"}
|
||||
.column
|
||||
%h4.title {{extension.name}}
|
||||
.spinner.small.loading{"ng-if" => "extension.loading"}
|
||||
.sk-menu-panel-header{"ng-click" => "extension.hide = !extension.hide; $event.stopPropagation();"}
|
||||
.sk-menu-panel-column
|
||||
.sk-menu-panel-header-title {{extension.name}}
|
||||
.sk-spinner.small.loading{"ng-if" => "extension.loading"}
|
||||
%div{"ng-if" => "extension.hide"} …
|
||||
|
||||
%menu-row{"ng-if" => "!extension.hide", "ng-repeat" => "action in extension.actionsWithContextForItem(item)",
|
||||
"action" => "executeAction(action, extension);", "label" => "action.label", "subtitle" => "action.desc",
|
||||
"spinner-class" => "action.running ? 'info' : null", "sub-rows" => "action.subrows"}
|
||||
.sublabel{"ng-if" => "action.access_type"}
|
||||
.sk-sublabel{"ng-if" => "action.access_type"}
|
||||
Uses
|
||||
%strong {{action.access_type}}
|
||||
access to this note.
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
|
||||
.content{"ng-attr-id" => "component-content-outer-{{component.uuid}}"}
|
||||
.sn-component
|
||||
.panel{"ng-attr-id" => "component-content-inner-{{component.uuid}}"}
|
||||
.header
|
||||
%h1.title
|
||||
.sk-panel{"ng-attr-id" => "component-content-inner-{{component.uuid}}"}
|
||||
.sk-panel-header
|
||||
.sk-panel-header-title
|
||||
{{component.name}}
|
||||
%a.close-button.info{"ng-click" => "dismiss()"} Close
|
||||
%a.sk-a.info.close-button{"ng-click" => "dismiss()"} Close
|
||||
%component-view.component-view{"component" => "component"}
|
||||
|
||||
@@ -1,35 +1,35 @@
|
||||
.sn-component{"ng-if" => "issueLoading"}
|
||||
.app-bar.no-edges.no-top-edge
|
||||
.sk-app-bar.no-edges.no-top-edge
|
||||
.left
|
||||
.item
|
||||
.label.warning There was an issue loading {{component.name}}.
|
||||
.sk-app-bar-item
|
||||
.sk-label.warning There was an issue loading {{component.name}}.
|
||||
.right
|
||||
.item{"ng-click" => "reloadComponent()"}
|
||||
.label Reload
|
||||
.sk-app-bar-item{"ng-click" => "reloadComponent()"}
|
||||
.sk-label Reload
|
||||
|
||||
.sn-component{"ng-if" => "showNoThemesMessage"}
|
||||
.app-bar.no-edges.no-top-edge
|
||||
.sk-app-bar.no-edges.no-top-edge
|
||||
.left
|
||||
.item
|
||||
.label.warning This extension does not support themes.
|
||||
.sk-app-bar-item
|
||||
.sk-label.warning This extension does not support themes.
|
||||
.right
|
||||
.item{"ng-click" => "noThemesMessageDismiss()"}
|
||||
.label Dismiss
|
||||
.item{"ng-click" => "disableActiveTheme()"}
|
||||
.label Disable Active Theme
|
||||
.sk-app-bar-item{"ng-click" => "noThemesMessageDismiss()"}
|
||||
.sk-label Dismiss
|
||||
.sk-app-bar-item{"ng-click" => "disableActiveTheme()"}
|
||||
.sk-label Disable Active Theme
|
||||
|
||||
.sn-component{"ng-if" => "error == 'expired'"}
|
||||
.panel.static
|
||||
.content
|
||||
.panel-section.stretch
|
||||
%h2.title Unable to load Standard Notes Extended
|
||||
.sk-panel.static
|
||||
.sk-panel-content
|
||||
.sk-panel-section.stretch
|
||||
.sk-panel-sectin-title Unable to load Standard Notes Extended
|
||||
%p Your Extended subscription expired on {{component.dateToLocalizedString(component.valid_until)}}.
|
||||
%p
|
||||
Please visit
|
||||
%a{"href" => "https://dashboard.standardnotes.org", "target" => "_blank"} dashboard.standardnotes.org
|
||||
to renew your subscription.
|
||||
.panel-row
|
||||
.panel-column
|
||||
.sk-panel-row
|
||||
.sk-panel-column
|
||||
%p
|
||||
%strong To reload your account status:
|
||||
%p
|
||||
@@ -40,25 +40,25 @@
|
||||
menu located in the lower left corner of the app to refresh your account status.
|
||||
%li Click Reload below.
|
||||
|
||||
.panel-row
|
||||
.button.info{"ng-if" => "!reloading", "ng-click" => "reloadStatus()"}
|
||||
.label Reload
|
||||
.spinner.info.small{"ng-if" => "reloading"}
|
||||
.sk-panel-row
|
||||
.sk-button.info{"ng-if" => "!reloading", "ng-click" => "reloadStatus()"}
|
||||
.sk-label Reload
|
||||
.sk-spinner.info.small{"ng-if" => "reloading"}
|
||||
|
||||
.panel-row
|
||||
.panel-section
|
||||
.sk-panel-row
|
||||
.sk-panel-section
|
||||
%p{"ng-if" => "component.isEditor()"}
|
||||
<strong>Otherwise</strong>, please follow the steps below to disable any external editors,
|
||||
so you can edit your note using the plain text editor instead.
|
||||
|
||||
%p To temporarily disable this extension:
|
||||
|
||||
.panel-row
|
||||
.button.info{"ng-click" => "destroy()"}
|
||||
.label Disable Extension
|
||||
.spinner.info.small{"ng-if" => "reloading"}
|
||||
.sk-panel-row
|
||||
.sk-button.info{"ng-click" => "destroy()"}
|
||||
.sk-label Disable Extension
|
||||
.sk-spinner.info.small{"ng-if" => "reloading"}
|
||||
|
||||
.panel-row
|
||||
.sk-panel-row
|
||||
|
||||
%div{"ng-if" => "component.isEditor()"}
|
||||
%p To disassociate this note from this editor:
|
||||
@@ -76,28 +76,28 @@
|
||||
page.
|
||||
|
||||
.sn-component{"ng-if" => "error == 'offline-restricted'"}
|
||||
.panel.static
|
||||
.content
|
||||
.panel-section.stretch
|
||||
%h2.title You have restricted this extension to be used offline only.
|
||||
.sk-panel.static
|
||||
.sk-panel-content
|
||||
.sk-panel-section.stretch
|
||||
.sk-panel-section-title You have restricted this extension to be used offline only.
|
||||
%p Offline extensions are not available in the Web app.
|
||||
.panel-row
|
||||
.panel-column
|
||||
.sk-panel-row
|
||||
.sk-panel-column
|
||||
%p You can either:
|
||||
%p
|
||||
%ul
|
||||
%li <strong>Enable the Hosted option</strong> for this extension by opening the 'Extensions' menu and toggling 'Use hosted when local is unavailable' under this extension's options. Then press Reload below.
|
||||
%li <strong>Use the Desktop application.</strong>
|
||||
.panel-row
|
||||
.button.info{"ng-if" => "!reloading", "ng-click" => "reloadStatus()"}
|
||||
.label Reload
|
||||
.spinner.info.small{"ng-if" => "reloading"}
|
||||
.sk-panel-row
|
||||
.sk-button.info{"ng-if" => "!reloading", "ng-click" => "reloadStatus()"}
|
||||
.sk-label Reload
|
||||
.sk-spinner.info.small{"ng-if" => "reloading"}
|
||||
|
||||
.sn-component{"ng-if" => "error == 'url-missing'"}
|
||||
.panel.static
|
||||
.content
|
||||
.panel-section.stretch
|
||||
%h2.title This extension is not installed correctly.
|
||||
.sk-panel.static
|
||||
.sk-panel-content
|
||||
.sk-panel-section.stretch
|
||||
.sk-panel-section-title This extension is not installed correctly.
|
||||
%p Please uninstall {{component.name}}, then re-install it.
|
||||
|
||||
%p
|
||||
|
||||
@@ -1,26 +1,26 @@
|
||||
.modal.large#conflict-resolution-modal
|
||||
.content
|
||||
.sn-component
|
||||
.panel
|
||||
.header
|
||||
%h1.title Conflicted items — choose which version to keep
|
||||
.horizontal-group
|
||||
%a.close-button.info{"ng-click" => "keepItem1()"} Keep left
|
||||
%a.close-button.info{"ng-click" => "keepItem2()"} Keep right
|
||||
%a.close-button.info{"ng-click" => "keepBoth()"} Keep both
|
||||
%a.close-button.info{"ng-click" => "export()"} Export
|
||||
%a.close-button.info{"ng-click" => "dismiss(); $event.stopPropagation()"} Close
|
||||
.content.selectable
|
||||
.panel-section
|
||||
.sk-panel
|
||||
.sk-panel-header
|
||||
%h1.sk-panel-header-title Conflicted items — choose which version to keep
|
||||
.sk-horizontal-group
|
||||
%a.sk-a.info.close-button{"ng-click" => "keepItem1()"} Keep left
|
||||
%a.sk-a.info.close-button{"ng-click" => "keepItem2()"} Keep right
|
||||
%a.sk-a.info.close-button{"ng-click" => "keepBoth()"} Keep both
|
||||
%a.sk-a.info.close-button{"ng-click" => "export()"} Export
|
||||
%a.sk-a.info.close-button{"ng-click" => "dismiss(); $event.stopPropagation()"} Close
|
||||
.sk-panel-content.selectable
|
||||
.sk-panel-section
|
||||
%h3
|
||||
%strong Content type:
|
||||
{{contentType}}
|
||||
%p You may wish to look at the "created_at" and "updated_at" fields of the items to gain better context in deciding which to keep.
|
||||
#items
|
||||
.panel.static#item1.item.border-color
|
||||
.sk-panel.static#item1.item.border-color
|
||||
%p.normal{"style" => "white-space: pre-wrap; font-size: 16px;"} {{item1Content}}
|
||||
|
||||
.border
|
||||
|
||||
.panel.static#item2.item
|
||||
.sk-panel.static#item2.item
|
||||
%p.normal{"style" => "white-space: pre-wrap; font-size: 16px;"} {{item2Content}}
|
||||
|
||||
@@ -1,26 +1,26 @@
|
||||
.sn-component
|
||||
.menu-panel.dropdown-menu
|
||||
.section
|
||||
.header
|
||||
%h4.title Note Editor
|
||||
.sk-menu-panel.dropdown-menu
|
||||
.sk-menu-panel-section
|
||||
.sk-menu-panel-header
|
||||
.sk-menu-panel-header-title Note Editor
|
||||
%menu-row{"label" => "'Plain Editor'", "circle" => "selectedEditor == null && 'success'", "action" => "selectComponent(null)"}
|
||||
|
||||
%menu-row{"ng-repeat" => "editor in editors", "action" => "selectComponent(editor)", "label" => "editor.name",
|
||||
"circle" => "selectedEditor === editor && 'success'",
|
||||
"has-button" => "selectedEditor == editor || defaultEditor == editor", "button-text" => "defaultEditor == editor ? 'Undefault' : 'Set Default'",
|
||||
"button-action" => "toggleDefaultForEditor(editor)", "button-class" => "defaultEditor == editor ? 'warning' : 'info'"}
|
||||
.column{"ng-if" => "component.conflict_of || shouldDisplayRunningLocallyLabel(editor)"}
|
||||
%strong.red.medium-text{"ng-if" => "editor.conflict_of"} Conflicted copy
|
||||
.sublabel{"ng-if" => "shouldDisplayRunningLocallyLabel(editor)"} Running Locally
|
||||
.sk-menu-panel-column{"ng-if" => "component.conflict_of || shouldDisplayRunningLocallyLabel(editor)"}
|
||||
%strong.danger.medium-text{"ng-if" => "editor.conflict_of"} Conflicted copy
|
||||
.sk-sublabel{"ng-if" => "shouldDisplayRunningLocallyLabel(editor)"} Running Locally
|
||||
|
||||
%a.no-decoration{"ng-if" => "editors.length == 0", "href" => "https://standardnotes.org/extensions", "target" => "blank"}
|
||||
%menu-row{"label" => "'Download More Editors'"}
|
||||
|
||||
.section{"ng-if" => "stack.length > 0"}
|
||||
.header
|
||||
%h4.title Editor Stack
|
||||
.sk-menu-panel-section{"ng-if" => "stack.length > 0"}
|
||||
.sk-menu-panel-header
|
||||
.sk-menu-panel-header-title Editor Stack
|
||||
%menu-row{"ng-repeat" => "component in stack", "action" => "selectComponent(component)", "label" => "component.name",
|
||||
"circle" => "stackComponentEnabled(component) ? 'success' : 'danger'"}
|
||||
.column{"ng-if" => "component.conflict_of || shouldDisplayRunningLocallyLabel(component)"}
|
||||
%strong.red.medium-text{"ng-if" => "component.conflict_of"} Conflicted copy
|
||||
.sublabel{"ng-if" => "shouldDisplayRunningLocallyLabel(component)"} Running Locally
|
||||
.sk-menu-panel-column{"ng-if" => "component.conflict_of || shouldDisplayRunningLocallyLabel(component)"}
|
||||
%strong.danger.medium-text{"ng-if" => "component.conflict_of"} Conflicted copy
|
||||
.sk-sublabel{"ng-if" => "shouldDisplayRunningLocallyLabel(component)"} Running Locally
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
.modal.small.auto-height
|
||||
.content
|
||||
.sn-component
|
||||
.panel
|
||||
.header
|
||||
%h1.title {{title}}
|
||||
%a.close-button{"ng-click" => "dismiss()"} Close
|
||||
.content
|
||||
.panel-section
|
||||
%p.panel-row {{message}}
|
||||
.panel-row
|
||||
.panel-column.stretch
|
||||
.sk-panel
|
||||
.sk-panel-header
|
||||
%h1.sk-panel-header-title {{title}}
|
||||
%a.sk-a.info.close-button{"ng-click" => "dismiss()"} Close
|
||||
.sk-panel-content
|
||||
.sk-panel-section
|
||||
%p.sk-panel-row {{message}}
|
||||
.sk-panel-row
|
||||
.sk-panel-column.stretch
|
||||
%form{"ng-submit" => "submit()"}
|
||||
%input.form-control{:type => '{{type}}', "ng-model" => "formData.input", "placeholder" => "{{placeholder}}", "sn-autofocus" => "true", "should-focus" => "true"}
|
||||
%input.sk-input{:type => '{{type}}', "ng-model" => "formData.input", "placeholder" => "{{placeholder}}", "sn-autofocus" => "true", "should-focus" => "true"}
|
||||
|
||||
.footer
|
||||
%a.right{"ng-click" => "submit()"}
|
||||
.sk-panel-footer
|
||||
%a.sk-a.info.right{"ng-click" => "submit()"}
|
||||
Submit
|
||||
|
||||
@@ -1,21 +1,21 @@
|
||||
.row{"ng-attr-title" => "{{desc}}", "ng-click" => "onClick($event)"}
|
||||
.column
|
||||
.sk-menu-panel-row.row{"ng-attr-title" => "{{desc}}", "ng-click" => "onClick($event)"}
|
||||
.sk-menu-panel-column
|
||||
.left
|
||||
.column{"ng-if" => "circle"}
|
||||
.circle.small{"ng-class" => "circle"}
|
||||
.column{"ng-class" => "{'faded' : faded || disabled}"}
|
||||
.label
|
||||
.sk-menu-panel-column{"ng-if" => "circle"}
|
||||
.sk-circle.small{"ng-class" => "circle"}
|
||||
.sk-menu-panel-column{"ng-class" => "{'faded' : faded || disabled}"}
|
||||
.sk-label
|
||||
{{label}}
|
||||
.sublabel{"ng-if" => "subtitle"}
|
||||
.sk-sublabel{"ng-if" => "subtitle"}
|
||||
{{subtitle}}
|
||||
%ng-transclude
|
||||
.subrows{"ng-if" => "subRows && subRows.length > 0"}
|
||||
.sk-menu-panel-subrows{"ng-if" => "subRows && subRows.length > 0"}
|
||||
%menu-row{"ng-repeat" => "row in subRows", "action" => "row.onClick()",
|
||||
"label" => "row.label", "subtitle" => "row.subtitle", "spinner-class" => "row.spinnerClass"}
|
||||
|
||||
.column{"ng-if" => "hasButton"}
|
||||
.button.info{"ng-click" => "clickButton($event)", "ng-class" => "buttonClass"}
|
||||
{{buttonText}}
|
||||
.sk-menu-panel-column{"ng-if" => "hasButton"}
|
||||
.sk-button{"ng-click" => "clickButton($event)", "ng-class" => "buttonClass"}
|
||||
.sk-label {{buttonText}}
|
||||
|
||||
.column{"ng-if" => "spinnerClass"}
|
||||
.spinner.small{"ng-class" => "spinnerClass"}
|
||||
.sk-menu-panel-column{"ng-if" => "spinnerClass"}
|
||||
.sk-spinner.small{"ng-class" => "spinnerClass"}
|
||||
|
||||
@@ -1,108 +1,103 @@
|
||||
#password-wizard.modal.small.auto-height
|
||||
.content
|
||||
.sn-component
|
||||
.panel
|
||||
.header
|
||||
%h1.title {{title}}
|
||||
%a.close-button{"ng-click" => "dismiss()"} Close
|
||||
.content
|
||||
.sk-panel
|
||||
.sk-panel-header
|
||||
.sk-panel-header-title {{title}}
|
||||
%a.sk-a.info.close-button{"ng-click" => "dismiss()"} Close
|
||||
.sk-panel-content
|
||||
|
||||
%div{"ng-if" => "step == 0"}
|
||||
%div{"ng-if" => "changePassword"}
|
||||
%h2.title.panel-row Change your password
|
||||
%p
|
||||
%p.sk-p
|
||||
Changing your password involves changing your encryption key, which requires your data to be re-encrypted and synced.
|
||||
If you have many items, syncing your data can take several minutes.
|
||||
%p.panel-row
|
||||
%p.sk-p
|
||||
%strong You must keep the application window open during this process.
|
||||
%div{"ng-if" => "securityUpdate"}
|
||||
%h2.title.panel-row Perform security update
|
||||
%p
|
||||
%p.sk-p
|
||||
A new update is available for your account. Updates address improvements and enhancements to our security specification.
|
||||
This process will guide you through the update, and perform the steps necessary with your supervision.
|
||||
%p
|
||||
%p.sk-p
|
||||
For more information about security updates, please visit
|
||||
%a{"href" => "https://standardnotes.org/help/security", "target" => "_blank"} standardnotes.org/help/security.
|
||||
%a.sk-a.info{"href" => "https://standardnotes.org/help/security", "target" => "_blank"} standardnotes.org/help/security.
|
||||
|
||||
%p.panel-row
|
||||
%p.sk-panel-row.sk-p
|
||||
.info Press Continue to proceed.
|
||||
|
||||
.panel-row
|
||||
.panel-row
|
||||
.sk-panel-section{"ng-if" => "step > 0"}
|
||||
|
||||
.panel-section{"ng-if" => "step > 0"}
|
||||
|
||||
%h3.title.panel-row Step {{step}} — {{titleForStep(step)}}
|
||||
.sk-panel-section-title Step {{step}} — {{titleForStep(step)}}
|
||||
|
||||
%div{"ng-if" => "step == 1"}
|
||||
%p.panel-row
|
||||
%p.sk-panel-row.sk-p
|
||||
As a result of this process, the entirety of your data will be re-encrypted and synced to your account. This is a generally safe process,
|
||||
but unforeseen factors like poor network connectivity or a sudden shutdown of your computer may cause this process to fail.
|
||||
It's best to be on the safe side before large operations such as this one.
|
||||
.panel-row
|
||||
.panel-row
|
||||
.button-group
|
||||
.button.info{"ng-click" => "downloadBackup(true)"}
|
||||
.label Download Encrypted Backup
|
||||
.button.info{"ng-click" => "downloadBackup(false)"}
|
||||
.label Download Decrypted Backup
|
||||
.sk-panel-row
|
||||
.sk-panel-row
|
||||
.sk-button-group
|
||||
.sk-button.info{"ng-click" => "downloadBackup(true)"}
|
||||
.sk-label Download Encrypted Backup
|
||||
.sk-button.info{"ng-click" => "downloadBackup(false)"}
|
||||
.sk-label Download Decrypted Backup
|
||||
|
||||
%div{"ng-if" => "step == 2"}
|
||||
%p.panel-row
|
||||
%p.sk-p.sk-panel-row
|
||||
As a result of this process, your encryption keys will change.
|
||||
Any device on which you use Standard Notes will need to end its session. After this process completes, you will be asked to sign back in.
|
||||
|
||||
%p.bold.panel-row.info-i Please sign out of all applications (excluding this one), including:
|
||||
%p.sk-p.bold.sk-panel-row.info-i Please sign out of all applications (excluding this one), including:
|
||||
%ul
|
||||
%li Desktop
|
||||
%li Web (Chrome, Firefox, Safari)
|
||||
%li Mobile (iOS and Android)
|
||||
%p.panel-row
|
||||
%p.sk-p.sk-panel-row
|
||||
If you do not currently have access to a device you're signed in on, you may proceed,
|
||||
but must make signing out and back in the first step upon gaining access to that device.
|
||||
%p.panel-row Press Continue only when you have completed signing out of all your devices.
|
||||
%p.sk-p.sk-panel-row Press Continue only when you have completed signing out of all your devices.
|
||||
|
||||
|
||||
%div{"ng-if" => "step == 3"}
|
||||
%div{"ng-if" => "changePassword"}
|
||||
%div{"ng-if" => "securityUpdate"}
|
||||
%p.panel-row Enter your current password. We'll run this through our encryption scheme to generate strong new encryption keys.
|
||||
.panel-row
|
||||
.panel-row
|
||||
.panel-column.stretch
|
||||
%form
|
||||
%input.form-control{:type => 'password', "ng-model" => "formData.currentPassword", "placeholder" => "Current Password", "sn-autofocus" => "true", "should-focus" => "true"}
|
||||
%input.form-control{"ng-if" => "changePassword", :type => 'password', "ng-model" => "formData.newPassword", "placeholder" => "New Password"}
|
||||
%input.form-control{"ng-if" => "changePassword", :type => 'password', "ng-model" => "formData.newPasswordConfirmation", "placeholder" => "Confirm New Password"}
|
||||
%p.sk-panel-row Enter your current password. We'll run this through our encryption scheme to generate strong new encryption keys.
|
||||
.sk-panel-row
|
||||
.sk-panel-row
|
||||
.sk-panel-column.stretch
|
||||
%form.sk-panel-form
|
||||
%input.sk-input{:type => 'password', "ng-model" => "formData.currentPassword", "placeholder" => "Current Password", "sn-autofocus" => "true", "should-focus" => "true"}
|
||||
%input.sk-input{"ng-if" => "changePassword", :type => 'password', "ng-model" => "formData.newPassword", "placeholder" => "New Password"}
|
||||
%input.sk-input{"ng-if" => "changePassword", :type => 'password', "ng-model" => "formData.newPasswordConfirmation", "placeholder" => "Confirm New Password"}
|
||||
|
||||
%div{"ng-if" => "step == 4"}
|
||||
%p.panel-row
|
||||
%p.sk-panel-row
|
||||
Your data is being re-encrypted with your new keys and synced to your account.
|
||||
%p.panel-row.danger
|
||||
%p.sk-panel-row.danger
|
||||
Do not close this window until this process completes.
|
||||
|
||||
.panel-row
|
||||
.panel-column
|
||||
.spinner.small.inline.info.mr-5{"ng-if" => "formData.processing"}
|
||||
.sk-panel-row
|
||||
.sk-panel-column
|
||||
.sk-spinner.small.inline.info.mr-5{"ng-if" => "formData.processing"}
|
||||
.inline.bold{"ng-class" => "{'info' : !formData.statusError, 'error' : formData.statusError}"}
|
||||
{{formData.status}}
|
||||
.panel-column{"delay-hide" => "true", "show" => "syncStatus.syncOpInProgress || syncStatus.needsMoreSync", "delay" => "1000"}
|
||||
.sk-panel-column{"delay-hide" => "true", "show" => "syncStatus.syncOpInProgress || syncStatus.needsMoreSync", "delay" => "1000"}
|
||||
%p.info
|
||||
Syncing {{syncStatus.current}}/{{syncStatus.total}}
|
||||
|
||||
%div{"ng-if" => "step == 5"}
|
||||
%div{"ng-if" => "changePassword"}
|
||||
%p.panel-row Your password has been successfully changed.
|
||||
%p.sk-panel-row Your password has been successfully changed.
|
||||
%div{"ng-if" => "securityUpdate"}
|
||||
%p.panel-row
|
||||
%p.sk-panel-row
|
||||
The security update has been successfully applied to your account.
|
||||
%p.panel-row
|
||||
%p.sk-panel-row
|
||||
%strong Please ensure you are running the latest version of Standard Notes on all platforms to ensure maximum compatibility.
|
||||
|
||||
%p.panel-row You may now sign back in on all your devices and close this window.
|
||||
%p.sk-panel-row You may now sign back in on all your devices and close this window.
|
||||
|
||||
.footer
|
||||
.sk-panel-footer
|
||||
.empty
|
||||
%a.right{"ng-click" => "continue()", "ng-disabled" => "lockContinue", "ng-class" => "{'disabled' : lockContinue}"}
|
||||
.spinner.small.inline.info.mr-5{"ng-if" => "showSpinner"}
|
||||
%a.sk-a.info.right{"ng-click" => "continue()", "ng-disabled" => "lockContinue", "ng-class" => "{'disabled' : lockContinue}"}
|
||||
.sk-spinner.small.inline.info.mr-5{"ng-if" => "showSpinner"}
|
||||
{{continueTitle}}
|
||||
|
||||
@@ -2,21 +2,22 @@
|
||||
|
||||
.content#permissions-modal
|
||||
.sn-component
|
||||
.panel
|
||||
.header
|
||||
%h1.title Activate Extension
|
||||
%a.close-button.info{"ng-click" => "deny()"} Cancel
|
||||
.content
|
||||
.panel-section
|
||||
.panel-row
|
||||
.sk-panel
|
||||
.sk-panel-header
|
||||
%h1.sk-panel-header-title Activate Extension
|
||||
%a.sk-a.info.close-button{"ng-click" => "deny()"} Cancel
|
||||
.sk-panel-content
|
||||
.sk-panel-section
|
||||
.sk-panel-row
|
||||
%h3
|
||||
%strong {{component.name}}
|
||||
would like to interact with your
|
||||
{{permissionsString()}}
|
||||
|
||||
.panel-row
|
||||
.sk-panel-row
|
||||
%p
|
||||
Extensions use an offline messaging system to communicate. Learn more at
|
||||
%a{"href" => "https://standardnotes.org/permissions", "target" => "_blank"} https://standardnotes.org/permissions.
|
||||
.footer
|
||||
.button.info.big.block.bold{"ng-click" => "accept()"} Continue
|
||||
%a.sk-a.info{"href" => "https://standardnotes.org/permissions", "target" => "_blank"} https://standardnotes.org/permissions.
|
||||
.sk-panel-footer
|
||||
.sk-button.info.big.block.bold{"ng-click" => "accept()"}
|
||||
.sk-label Continue
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
.modal.medium#item-preview-modal
|
||||
.content
|
||||
.sn-component
|
||||
.panel
|
||||
.header
|
||||
%h1.title Preview
|
||||
.horizontal-group
|
||||
%a.close-button.info{"ng-click" => "restore(false)"} Restore
|
||||
%a.close-button.info{"ng-click" => "restore(true)"} Restore as copy
|
||||
%a.close-button.info{"ng-click" => "dismiss(); $event.stopPropagation()"} Close
|
||||
.content.selectable
|
||||
%h2 {{content.title}}
|
||||
%p.normal{"style" => "white-space: pre-wrap; font-size: 16px;"} {{content.text}}
|
||||
.sk-panel
|
||||
.sk-panel-header
|
||||
.sk-panel-header-title Preview
|
||||
.sk-horizontal-group
|
||||
%a.sk-a.info.close-button{"ng-click" => "restore(false)"} Restore
|
||||
%a.sk-a.info.close-button{"ng-click" => "restore(true)"} Restore as copy
|
||||
%a.sk-a.info.close-button{"ng-click" => "dismiss(); $event.stopPropagation()"} Close
|
||||
.sk-panel-content.selectable
|
||||
.sk-h2 {{content.title}}
|
||||
%p.normal.sk-p{"style" => "white-space: pre-wrap; font-size: 16px;"} {{content.text}}
|
||||
|
||||
@@ -1,23 +1,23 @@
|
||||
.sn-component#session-history-menu
|
||||
.menu-panel.dropdown-menu
|
||||
.header
|
||||
.column
|
||||
%h4.title {{history.entries.length || 'No'}} revisions
|
||||
%h4{"ng-click" => "showOptions = !showOptions; $event.stopPropagation();"}
|
||||
%a Options
|
||||
.sk-menu-panel.dropdown-menu
|
||||
.sk-menu-panel-header
|
||||
.sk-menu-panel-column
|
||||
.sk-menu-panel-header-title {{history.entries.length || 'No'}} revisions
|
||||
.sk-menu-panel-column{"ng-click" => "showOptions = !showOptions; $event.stopPropagation();"}
|
||||
%a.sk-a.info.sk-menu-panel-header-title Options
|
||||
|
||||
%div{"ng-if" => "showOptions"}
|
||||
%menu-row{"label" => "'Clear note local history'", "action" => "clearItemHistory()"}
|
||||
%menu-row{"label" => "'Clear all local history'", "action" => "clearAllHistory()"}
|
||||
%menu-row{"label" => "(autoOptimize ? 'Disable' : 'Enable') + ' auto cleanup'", "action" => "toggleAutoOptimize()"}
|
||||
.sublabel
|
||||
.sk-sublabel
|
||||
Automatically cleans up small revisions to conserve space.
|
||||
%menu-row{"label" => "(diskEnabled ? 'Disable' : 'Enable') + ' saving history to disk'", "action" => "toggleDiskSaving()"}
|
||||
.sublabel
|
||||
.sk-sublabel
|
||||
Saving to disk may increase app loading time and memory footprint.
|
||||
|
||||
%menu-row{"ng-repeat" => "revision in entries",
|
||||
"action" => "openRevision(revision);",
|
||||
"label" => "revision.previewTitle()"}
|
||||
.sublabel.opaque{"ng-class" => "classForRevision(revision)"}
|
||||
.sk-sublabel.opaque{"ng-class" => "classForRevision(revision)"}
|
||||
{{revision.previewSubTitle()}}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
.section.editor#editor-column{"aria-label" => "Note"}
|
||||
.sn-component
|
||||
.app-bar.no-edges{"ng-if" => "ctrl.note.locked", "ng-init" => "ctrl.lockText = 'Note Locked'", "ng-mouseover" => "ctrl.lockText = 'Unlock'", "ng-mouseleave" => "ctrl.lockText = 'Note Locked'"}
|
||||
.sk-app-bar.no-edges{"ng-if" => "ctrl.note.locked", "ng-init" => "ctrl.lockText = 'Note Locked'", "ng-mouseover" => "ctrl.lockText = 'Unlock'", "ng-mouseleave" => "ctrl.lockText = 'Note Locked'"}
|
||||
.left
|
||||
.item{"ng-click" => "ctrl.toggleLockNote()"}
|
||||
.label.warning
|
||||
.sk-app-bar-item{"ng-click" => "ctrl.toggleLockNote()"}
|
||||
.sk-label.warning
|
||||
%i.icon.ion-locked
|
||||
{{ctrl.lockText}}
|
||||
|
||||
@@ -23,23 +23,23 @@
|
||||
"spellcheck" => "false", "ng-disabled" => "ctrl.note.locked"}
|
||||
|
||||
.sn-component{"ng-if" => "ctrl.note"}
|
||||
.app-bar.no-edges
|
||||
.sk-app-bar.no-edges
|
||||
.left
|
||||
.item{"ng-click" => "ctrl.showMenu = !ctrl.showMenu; ctrl.showExtensions = false; ctrl.showEditorMenu = false;", "ng-class" => "{'selected' : ctrl.showMenu}", "click-outside" => "ctrl.showMenu = false;", "is-open" => "ctrl.showMenu"}
|
||||
.label Options
|
||||
.menu-panel.dropdown-menu{"ng-if" => "ctrl.showMenu"}
|
||||
.section
|
||||
.header
|
||||
%h4.title Note Options
|
||||
.sk-app-bar-item{"ng-click" => "ctrl.showMenu = !ctrl.showMenu; ctrl.showExtensions = false; ctrl.showEditorMenu = false;", "ng-class" => "{'selected' : ctrl.showMenu}", "click-outside" => "ctrl.showMenu = false;", "is-open" => "ctrl.showMenu"}
|
||||
.sk-label Options
|
||||
.sk-menu-panel.dropdown-menu{"ng-if" => "ctrl.showMenu"}
|
||||
.sk-menu-panel-section
|
||||
.sk-menu-panel-header
|
||||
.sk-menu-panel-header-title Note Options
|
||||
%menu-row{"label" => "ctrl.note.pinned ? 'Unpin' : 'Pin'", "action" => "ctrl.selectedMenuItem(true); ctrl.togglePin()", "desc" => "'Pin or unpin a note from the top of your list'"}
|
||||
%menu-row{"label" => "ctrl.note.archived ? 'Unarchive' : 'Archive'", "action" => "ctrl.selectedMenuItem(true); ctrl.toggleArchiveNote()", "desc" => "'Archive or unarchive a note from your Archived system tag'"}
|
||||
%menu-row{"label" => "ctrl.note.locked ? 'Unlock' : 'Lock'", "action" => "ctrl.selectedMenuItem(true); ctrl.toggleLockNote()", "desc" => "'Locking notes prevents unintentional editing'"}
|
||||
%menu-row{"label" => "ctrl.note.content.hidePreview ? 'Unhide Preview' : 'Hide Preview'", "action" => "ctrl.selectedMenuItem(true); ctrl.toggleNotePreview()", "desc" => "'Hide or unhide the note preview from the list of notes'"}
|
||||
%menu-row{"label" => "'Delete'", "action" => "ctrl.selectedMenuItem(); ctrl.deleteNote()", "desc" => "'Delete this note permanently from all your devices'"}
|
||||
|
||||
.section
|
||||
.header
|
||||
%h4.title Global Display
|
||||
.sk-menu-panel-section
|
||||
.sk-menu-panel-header
|
||||
.sk-menu-panel-header-title Global Display
|
||||
|
||||
%menu-row{"label" => "'Monospace Font'", "circle" => "ctrl.monospaceFont ? 'success' : 'default'", "action" => "ctrl.selectedMenuItem(true); ctrl.toggleKey('monospaceFont')",
|
||||
"desc" => "'Toggles the font style for the default editor'", "subtitle" => "ctrl.selectedEditor ? 'Not available with editor extensions' : null", "disabled" => "ctrl.selectedEditor"}
|
||||
@@ -50,16 +50,16 @@
|
||||
%menu-row{"label" => "'Margin Resizers'", "circle" => "ctrl.marginResizersEnabled ? 'success' : 'default'", "action" => "ctrl.selectedMenuItem(true); ctrl.toggleKey('marginResizersEnabled')",
|
||||
"desc" => "'Allows for editor left and right margins to be resized'", "faded" => "!ctrl.marginResizersEnabled"}
|
||||
|
||||
.item{"ng-click" => "ctrl.onEditorMenuClick()", "ng-class" => "{'selected' : ctrl.showEditorMenu}", "click-outside" => "ctrl.showEditorMenu = false;", "is-open" => "ctrl.showEditorMenu"}
|
||||
.label Editor
|
||||
.sk-app-bar-item{"ng-click" => "ctrl.onEditorMenuClick()", "ng-class" => "{'selected' : ctrl.showEditorMenu}", "click-outside" => "ctrl.showEditorMenu = false;", "is-open" => "ctrl.showEditorMenu"}
|
||||
.sk-label Editor
|
||||
%editor-menu{"ng-if" => "ctrl.showEditorMenu", "callback" => "ctrl.editorMenuOnSelect", "selected-editor" => "ctrl.selectedEditor", "current-item" => "ctrl.note"}
|
||||
|
||||
.item{"ng-click" => "ctrl.showExtensions = !ctrl.showExtensions; ctrl.showMenu = false; ctrl.showEditorMenu = false;", "ng-class" => "{'selected' : ctrl.showExtensions}", "click-outside" => "ctrl.showExtensions = false;", "is-open" => "ctrl.showExtensions"}
|
||||
.label Actions
|
||||
.sk-app-bar-item{"ng-click" => "ctrl.showExtensions = !ctrl.showExtensions; ctrl.showMenu = false; ctrl.showEditorMenu = false;", "ng-class" => "{'selected' : ctrl.showExtensions}", "click-outside" => "ctrl.showExtensions = false;", "is-open" => "ctrl.showExtensions"}
|
||||
.sk-label Actions
|
||||
%actions-menu{"ng-if" => "ctrl.showExtensions", "item" => "ctrl.note"}
|
||||
|
||||
.item{"ng-click" => "ctrl.showSessionHistory = !ctrl.showSessionHistory; ctrl.showMenu = false; ctrl.showEditorMenu = false;", "click-outside" => "ctrl.showSessionHistory = false;", "is-open" => "ctrl.showSessionHistory"}
|
||||
.label Session History
|
||||
.sk-app-bar-item{"ng-click" => "ctrl.showSessionHistory = !ctrl.showSessionHistory; ctrl.showMenu = false; ctrl.showEditorMenu = false;", "click-outside" => "ctrl.showSessionHistory = false;", "is-open" => "ctrl.showSessionHistory"}
|
||||
.sk-label Session History
|
||||
%session-history-menu{"ng-if" => "ctrl.showSessionHistory", "item" => "ctrl.note"}
|
||||
|
||||
.editor-content#editor-content{"ng-if" => "ctrl.noteReady && !ctrl.note.errorDecrypting"}
|
||||
|
||||
@@ -1,44 +1,44 @@
|
||||
.sn-component
|
||||
#footer-bar.app-bar.no-edges
|
||||
#footer-bar.sk-app-bar.no-edges
|
||||
.left
|
||||
.item{"ng-click" => "ctrl.accountMenuPressed()", "click-outside" => "ctrl.showAccountMenu = false;", "is-open" => "ctrl.showAccountMenu"}
|
||||
.column
|
||||
.circle.small{"ng-class" => "ctrl.error ? 'danger' : (ctrl.getUser() ? 'info' : 'default')"}
|
||||
.column
|
||||
.label.title{"ng-class" => "{red: ctrl.error}"} Account
|
||||
.sk-app-bar-item{"ng-click" => "ctrl.accountMenuPressed()", "click-outside" => "ctrl.showAccountMenu = false;", "is-open" => "ctrl.showAccountMenu"}
|
||||
.sk-app-bar-item-column
|
||||
.sk-circle.small{"ng-class" => "ctrl.error ? 'danger' : (ctrl.getUser() ? 'info' : 'default')"}
|
||||
.sk-app-bar-item-column
|
||||
.sk-label.title{"ng-class" => "{red: ctrl.error}"} Account
|
||||
%account-menu{"ng-click" => "$event.stopPropagation()", "ng-if" => "ctrl.showAccountMenu", "on-successful-auth" => "ctrl.onAuthSuccess", "close-function" => "ctrl.closeAccountMenu"}
|
||||
|
||||
.item
|
||||
%a.no-decoration.label.title{"href" => "https://standardnotes.org/help", "target" => "_blank"}
|
||||
.sk-app-bar-item
|
||||
%a.no-decoration.sk-label.title{"href" => "https://standardnotes.org/help", "target" => "_blank"}
|
||||
Help
|
||||
|
||||
.item.border
|
||||
.sk-app-bar-item.border
|
||||
|
||||
.item{"ng-repeat" => "room in ctrl.rooms track by room.uuid"}
|
||||
.column{"ng-click" => "ctrl.selectRoom(room)"}
|
||||
.label {{room.name}}
|
||||
.sk-app-bar-item{"ng-repeat" => "room in ctrl.rooms track by room.uuid"}
|
||||
.sk-app-bar-item-column{"ng-click" => "ctrl.selectRoom(room)"}
|
||||
.sk-label {{room.name}}
|
||||
%component-modal{"ng-if" => "room.showRoom", "component" => "room", "on-dismiss" => "ctrl.onRoomDismiss"}
|
||||
|
||||
|
||||
.right
|
||||
|
||||
.item{"ng-if" => "ctrl.securityUpdateAvailable", "ng-click" => "ctrl.openSecurityUpdate()"}
|
||||
%span.success.label Security update available.
|
||||
.sk-app-bar-item{"ng-if" => "ctrl.securityUpdateAvailable", "ng-click" => "ctrl.openSecurityUpdate()"}
|
||||
%span.success.sk-label Security update available.
|
||||
|
||||
.item{"ng-if" => "ctrl.newUpdateAvailable == true", "ng-click" => "ctrl.clickedNewUpdateAnnouncement()"}
|
||||
%span.info.label New update available.
|
||||
.sk-app-bar-item{"ng-if" => "ctrl.newUpdateAvailable == true", "ng-click" => "ctrl.clickedNewUpdateAnnouncement()"}
|
||||
%span.info.sk-label New update available.
|
||||
|
||||
.item.no-pointer{"ng-if" => "ctrl.lastSyncDate && !ctrl.isRefreshing"}
|
||||
.label.subtle
|
||||
.sk-app-bar-item.no-pointer{"ng-if" => "ctrl.lastSyncDate && !ctrl.isRefreshing"}
|
||||
.sk-label.subtle
|
||||
Last refreshed {{ctrl.lastSyncDate | appDateTime}}
|
||||
.item{"ng-if" => "ctrl.lastSyncDate && ctrl.isRefreshing"}
|
||||
.spinner.small
|
||||
.sk-app-bar-item{"ng-if" => "ctrl.lastSyncDate && ctrl.isRefreshing"}
|
||||
.sk-spinner.small
|
||||
|
||||
.item{"ng-if" => "ctrl.offline"}
|
||||
.label Offline
|
||||
.item{"ng-if" => "!ctrl.offline", "ng-click" => "ctrl.refreshData()"}
|
||||
.label Refresh
|
||||
.sk-app-bar-item{"ng-if" => "ctrl.offline"}
|
||||
.sk-label Offline
|
||||
.sk-app-bar-item{"ng-if" => "!ctrl.offline", "ng-click" => "ctrl.refreshData()"}
|
||||
.sk-label Refresh
|
||||
|
||||
.item#lock-item{"ng-if" => "ctrl.hasPasscode()"}
|
||||
.label
|
||||
.sk-app-bar-item#lock-item{"ng-if" => "ctrl.hasPasscode()"}
|
||||
.sk-label
|
||||
%i.icon.ion-locked#footer-lock-icon{"ng-if" => "ctrl.hasPasscode()", "ng-click" => "ctrl.lockApp()"}
|
||||
|
||||
@@ -1,23 +1,23 @@
|
||||
#lock-screen.sn-component
|
||||
.panel
|
||||
.header
|
||||
%h1.title Passcode Required
|
||||
.content
|
||||
.panel-section
|
||||
%form.panel-form.panel-row{"ng-submit" => "submitPasscodeForm()"}
|
||||
.panel-column.stretch
|
||||
%input.panel-row{:type => 'password',
|
||||
.sk-panel
|
||||
.sk-panel-header
|
||||
.sk-panel-header-title Passcode Required
|
||||
.sk-panel-content
|
||||
.sk-panel-section
|
||||
%form.sk-panel-form.sk-panel-row{"ng-submit" => "submitPasscodeForm()"}
|
||||
.sk-panel-column.stretch
|
||||
%input.sk-panel-row.sk-input{:type => 'password',
|
||||
"ng-model" => "formData.passcode", "autofocus" => "true", "sn-autofocus" => "true", "should-focus" => "true",
|
||||
"placeholder" => "Enter Passcode", "autocomplete" => "new-password"}
|
||||
.button-group.stretch.panel-row.form-submit
|
||||
%button.button.info{"type" => "submit"}
|
||||
.label Unlock
|
||||
.sk-button-group.stretch.sk-panel-row.form-submit
|
||||
%button.sk-button.info{"type" => "submit"}
|
||||
.sk-label Unlock
|
||||
|
||||
#passcode-reset
|
||||
%a.default{"ng-if" => "!formData.showRecovery", "ng-click" => "forgotPasscode()"} Forgot Passcode?
|
||||
%a.sk-a.neutral{"ng-if" => "!formData.showRecovery", "ng-click" => "forgotPasscode()"} Forgot Passcode?
|
||||
|
||||
%div{"ng-if" => "formData.showRecovery"}
|
||||
%p
|
||||
If you forgot your local passcode, your only option is to clear all your local data from this device
|
||||
and sign back in to your account.
|
||||
%a.danger{"ng-click" => "beginDeleteData()"} Delete Local Data
|
||||
%a.sk-a.danger{"ng-click" => "beginDeleteData()"} Delete Local Data
|
||||
|
||||
@@ -11,28 +11,26 @@
|
||||
"title" => "Searches notes in the currently selected tag"}
|
||||
#search-clear-button{"ng-if" => "ctrl.noteFilter.text", "ng-click" => "ctrl.clearFilterText();"} ✕
|
||||
.sn-component#notes-menu-bar
|
||||
.app-bar.no-edges
|
||||
.sk-app-bar.no-edges
|
||||
.left
|
||||
.item{"ng-click" => "ctrl.showMenu = !ctrl.showMenu", "ng-class" => "{'selected' : ctrl.showMenu}"}
|
||||
.column
|
||||
.label
|
||||
.sk-app-bar-item{"ng-click" => "ctrl.showMenu = !ctrl.showMenu", "ng-class" => "{'selected' : ctrl.showMenu}"}
|
||||
.sk-app-bar-item-column
|
||||
.sk-label
|
||||
Options
|
||||
.column
|
||||
.sublabel {{ctrl.optionsSubtitle()}}
|
||||
.sk-app-bar-item-column
|
||||
.sk-sublabel {{ctrl.optionsSubtitle()}}
|
||||
|
||||
.sn-component{"ng-if" => "ctrl.showMenu"}
|
||||
.menu-panel.dropdown-menu
|
||||
.section
|
||||
.header
|
||||
%h4.title Sort By
|
||||
.sk-menu-panel.dropdown-menu{"ng-if" => "ctrl.showMenu"}
|
||||
.sk-menu-panel-header
|
||||
.sk-menu-panel-header-title Sort By
|
||||
|
||||
%menu-row{"label" => "'Date Added'", "circle" => "ctrl.sortBy == 'created_at' && 'success'", "action" => "ctrl.selectedMenuItem(); ctrl.selectedSortByCreated()", "desc" => "'Sort notes by newest first'"}
|
||||
%menu-row{"label" => "'Date Modified'", "circle" => "ctrl.sortBy == 'client_updated_at' && 'success'", "action" => "ctrl.selectedMenuItem(); ctrl.selectedSortByUpdated()", "desc" => "'Sort notes with the most recently updated first'"}
|
||||
%menu-row{"label" => "'Title'", "circle" => "ctrl.sortBy == 'title' && 'success'", "action" => "ctrl.selectedMenuItem(); ctrl.selectedSortByTitle()", "desc" => "'Sort notes alphabetically by their title'"}
|
||||
%menu-row{"label" => "'Date Added'", "circle" => "ctrl.sortBy == 'created_at' && 'success'", "action" => "ctrl.selectedMenuItem(); ctrl.selectedSortByCreated()", "desc" => "'Sort notes by newest first'"}
|
||||
%menu-row{"label" => "'Date Modified'", "circle" => "ctrl.sortBy == 'client_updated_at' && 'success'", "action" => "ctrl.selectedMenuItem(); ctrl.selectedSortByUpdated()", "desc" => "'Sort notes with the most recently updated first'"}
|
||||
%menu-row{"label" => "'Title'", "circle" => "ctrl.sortBy == 'title' && 'success'", "action" => "ctrl.selectedMenuItem(); ctrl.selectedSortByTitle()", "desc" => "'Sort notes alphabetically by their title'"}
|
||||
|
||||
.section{"ng-if" => "!ctrl.tag.isSmartTag()"}
|
||||
.header
|
||||
%h4.title Display
|
||||
.sk-menu-panel-section{"ng-if" => "!ctrl.tag.isSmartTag()"}
|
||||
.sk-menu-panel-header
|
||||
.sk-menu-panel-header-title Display
|
||||
|
||||
%menu-row{"label" => "'Archived Notes'", "circle" => "ctrl.showArchived ? 'success' : 'danger'", "faded" => "!ctrl.showArchived", "action" => "ctrl.selectedMenuItem(); ctrl.toggleKey('showArchived')", "desc" => "'Archived notes are usually hidden. You can explicitly show them with this option.'"}
|
||||
%menu-row{"label" => "'Pinned Notes'", "circle" => "ctrl.hidePinned ? 'danger' : 'success'", "faded" => "ctrl.hidePinned", "action" => "ctrl.selectedMenuItem(); ctrl.toggleKey('hidePinned')", "desc" => "'Pinned notes always appear on top. You can hide them temporarily with this option so you can focus on other notes in the list.'"}
|
||||
|
||||
3910
package-lock.json
generated
3910
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -44,7 +44,7 @@
|
||||
"mocha": "^5.2.0",
|
||||
"serve-static": "^1.13.2",
|
||||
"sn-models": "0.1.9",
|
||||
"sn-stylekit": "1.0.15",
|
||||
"sn-stylekit": "file:~/Desktop/sn/dev/stylekit",
|
||||
"standard-file-js": "0.3.19"
|
||||
}
|
||||
}
|
||||
|
||||
Submodule public/extensions/batch-manager updated: c05c783038...3c8a9ffd7c
Reference in New Issue
Block a user