StyleKit classes wip

This commit is contained in:
Mo Bitar
2018-12-07 14:26:38 -06:00
parent a656918332
commit 285bb76c7a
24 changed files with 2763 additions and 1905 deletions

View File

@@ -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;
}

View File

@@ -26,11 +26,11 @@
height: 100%;
}
.panel {
.sk-panel {
width: 315px;
flex-grow: 0;
.header {
.sk-panel-header {
justify-content: center;
}
}

View File

@@ -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;
}

View File

@@ -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%;
}
}

View File

@@ -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
}
}

View File

@@ -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" }}

View File

@@ -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.

View File

@@ -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"}

View File

@@ -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

View File

@@ -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}}

View File

@@ -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

View File

@@ -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

View File

@@ -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"}

View File

@@ -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}}

View File

@@ -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

View File

@@ -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}}

View File

@@ -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()}}

View File

@@ -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"}

View File

@@ -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()"}

View File

@@ -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

View File

@@ -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

File diff suppressed because it is too large Load Diff

View File

@@ -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"
}
}