Browse Source

Styles (#455)

* Styles
* Config added
* Styling fixes.
* Styles improvements.
* Revert webpack changes.
pull/458/head
Sebastian Stehle 7 years ago
committed by GitHub
parent
commit
748163c014
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 5
      frontend/.sass-lint.yml
  2. 17
      frontend/app-config/webpack.config.js
  3. 3
      frontend/app/features/administration/pages/cluster/cluster-page.component.scss
  4. 2
      frontend/app/features/administration/pages/event-consumers/event-consumers-page.component.html
  5. 6
      frontend/app/features/administration/pages/event-consumers/event-consumers-page.component.scss
  6. 10
      frontend/app/features/administration/pages/restore/restore-page.component.scss
  7. 4
      frontend/app/features/administration/pages/users/user-page.component.html
  8. 8
      frontend/app/features/administration/pages/users/user-page.component.scss
  9. 6
      frontend/app/features/api/api-area.component.scss
  10. 16
      frontend/app/features/apps/pages/apps-page.component.html
  11. 39
      frontend/app/features/apps/pages/apps-page.component.scss
  12. 6
      frontend/app/features/apps/pages/news-dialog.component.scss
  13. 26
      frontend/app/features/apps/pages/onboarding-dialog.component.scss
  14. 6
      frontend/app/features/assets/pages/assets-filters-page.component.scss
  15. 27
      frontend/app/features/assets/pages/assets-page.component.scss
  16. 22
      frontend/app/features/content/pages/content/content-field.component.scss
  17. 2
      frontend/app/features/content/pages/content/content-history-page.component.scss
  18. 43
      frontend/app/features/content/pages/content/content-page.component.html
  19. 4
      frontend/app/features/content/pages/contents/contents-filters-page.component.scss
  20. 10
      frontend/app/features/content/pages/contents/contents-page.component.scss
  21. 17
      frontend/app/features/content/pages/schemas/schemas-page.component.scss
  22. 2
      frontend/app/features/content/shared/array-editor.component.scss
  23. 3
      frontend/app/features/content/shared/array-item.component.scss
  24. 14
      frontend/app/features/content/shared/assets-editor.component.scss
  25. 2
      frontend/app/features/content/shared/content-status.component.html
  26. 10
      frontend/app/features/content/shared/content-status.component.scss
  27. 4
      frontend/app/features/content/shared/content.component.scss
  28. 5
      frontend/app/features/content/shared/contents-selector.component.scss
  29. 2
      frontend/app/features/content/shared/field-editor.component.html
  30. 6
      frontend/app/features/content/shared/field-editor.component.scss
  31. 12
      frontend/app/features/content/shared/reference-item.component.scss
  32. 16
      frontend/app/features/content/shared/references-editor.component.scss
  33. 17
      frontend/app/features/dashboard/pages/dashboard-page.component.scss
  34. 6
      frontend/app/features/rules/pages/events/rule-events-page.component.scss
  35. 17
      frontend/app/features/rules/pages/rules/rule-element.component.scss
  36. 7
      frontend/app/features/rules/pages/rules/rule.component.scss
  37. 2
      frontend/app/features/rules/pages/rules/triggers/content-changed-trigger.component.scss
  38. 20
      frontend/app/features/schemas/pages/schema/field.component.scss
  39. 6
      frontend/app/features/schemas/pages/schema/schema-export-form.component.scss
  40. 4
      frontend/app/features/schemas/pages/schema/schema-fields.component.scss
  41. 4
      frontend/app/features/schemas/pages/schema/schema-page.component.scss
  42. 5
      frontend/app/features/schemas/pages/schema/schema-preview-urls-form.component.scss
  43. 6
      frontend/app/features/schemas/pages/schema/schema-scripts-form.component.scss
  44. 6
      frontend/app/features/schemas/pages/schema/schema-ui-form.component.scss
  45. 2
      frontend/app/features/schemas/pages/schema/types/string-validation.component.scss
  46. 13
      frontend/app/features/schemas/pages/schemas/schema-form.component.scss
  47. 15
      frontend/app/features/schemas/pages/schemas/schemas-page.component.scss
  48. 12
      frontend/app/features/settings/pages/clients/client-connect-form.component.scss
  49. 2
      frontend/app/features/settings/pages/contributors/contributor-add-form.component.html
  50. 4
      frontend/app/features/settings/pages/contributors/contributor-add-form.component.scss
  51. 6
      frontend/app/features/settings/pages/languages/language.component.scss
  52. 16
      frontend/app/features/settings/pages/more/more-page.component.scss
  53. 5
      frontend/app/features/settings/pages/patterns/pattern.component.scss
  54. 6
      frontend/app/features/settings/pages/plans/plan.component.scss
  55. 6
      frontend/app/features/settings/pages/plans/plans-page.component.scss
  56. 2
      frontend/app/features/settings/pages/roles/role.component.scss
  57. 32
      frontend/app/features/settings/pages/workflows/workflow-step.component.scss
  58. 4
      frontend/app/features/settings/pages/workflows/workflow-transition.component.scss
  59. 6
      frontend/app/features/settings/pages/workflows/workflow.component.scss
  60. 4
      frontend/app/features/settings/settings-area.component.scss
  61. 10
      frontend/app/framework/angular/code.component.scss
  62. 10
      frontend/app/framework/angular/external-link.directive.ts
  63. 2
      frontend/app/framework/angular/forms/checkbox-group.component.scss
  64. 3
      frontend/app/framework/angular/forms/control-errors.component.scss
  65. 4
      frontend/app/framework/angular/forms/date-time-editor.component.scss
  66. 8
      frontend/app/framework/angular/forms/dropdown.component.scss
  67. 23
      frontend/app/framework/angular/forms/editable-title.component.scss
  68. 2
      frontend/app/framework/angular/forms/iframe-editor.component.scss
  69. 1
      frontend/app/framework/angular/forms/json-editor.component.scss
  70. 8
      frontend/app/framework/angular/forms/stars.component.scss
  71. 23
      frontend/app/framework/angular/forms/tag-editor.component.scss
  72. 8
      frontend/app/framework/angular/forms/toggle.component.scss
  73. 20
      frontend/app/framework/angular/list-view.component.scss
  74. 10
      frontend/app/framework/angular/modals/dialog-renderer.component.scss
  75. 4
      frontend/app/framework/angular/modals/modal-dialog.component.html
  76. 6
      frontend/app/framework/angular/modals/modal-dialog.component.scss
  77. 14
      frontend/app/framework/angular/modals/modal-dialog.component.ts
  78. 4
      frontend/app/framework/angular/modals/onboarding-tooltip.component.html
  79. 10
      frontend/app/framework/angular/modals/onboarding-tooltip.component.scss
  80. 8
      frontend/app/framework/angular/status-icon.component.scss
  81. 2
      frontend/app/shared/components/asset-dialog.component.scss
  82. 8
      frontend/app/shared/components/asset-folder.component.scss
  83. 24
      frontend/app/shared/components/asset-uploader.component.scss
  84. 69
      frontend/app/shared/components/asset.component.scss
  85. 18
      frontend/app/shared/components/assets-list.component.scss
  86. 8
      frontend/app/shared/components/comments.component.scss
  87. 2
      frontend/app/shared/components/language-selector.component.scss
  88. 2
      frontend/app/shared/components/markdown-editor.component.scss
  89. 2
      frontend/app/shared/components/queries/filter-logical.component.scss
  90. 20
      frontend/app/shared/components/schema-category.component.scss
  91. 6
      frontend/app/shared/components/search-form.component.scss
  92. 10
      frontend/app/shell/pages/home/home-page.component.scss
  93. 26
      frontend/app/shell/pages/internal/apps-menu.component.scss
  94. 18
      frontend/app/shell/pages/internal/internal-area.component.scss
  95. 8
      frontend/app/shell/pages/internal/profile-menu.component.scss
  96. 56
      frontend/app/theme/_bootstrap.scss
  97. 53
      frontend/app/theme/_common.scss
  98. 55
      frontend/app/theme/_forms.scss
  99. 15
      frontend/app/theme/_lists.scss
  100. 353
      frontend/app/theme/_mixins.scss

5
frontend/.sass-lint.yml

@ -8,7 +8,7 @@ rules:
clean-import-paths:
- 0
property-sort-order:
- 0
- 1
indentation:
- 2
-
@ -23,4 +23,5 @@ leading-underscore: false
files:
ignore:
- 'app/theme/_mixins.scss'
- 'app/theme/_mixins.scss'
- 'node_modules/**/*.*'

17
frontend/app-config/webpack.config.js

@ -25,7 +25,9 @@ const plugins = {
// https://github.com/NMFR/optimize-css-assets-webpack-plugin
OptimizeCSSAssetsPlugin: require("optimize-css-assets-webpack-plugin"),
// https://github.com/jrparish/tslint-webpack-plugin
TsLintPlugin: require('tslint-webpack-plugin')
TsLintPlugin: require('tslint-webpack-plugin'),
// https://www.npmjs.com/package/sass-lint-webpack
SassLintPlugin: require('sass-lint-webpack')
};
module.exports = function (env) {
@ -131,13 +133,18 @@ module.exports = function (env) {
plugins.MiniCssExtractPlugin.loader,
{
loader: 'css-loader'
}, {
loader: 'postcss-loader'
}]
}, {
test: /\.scss$/,
use: [{
loader: 'raw-loader'
}, {
loader: 'sass-loader', options: {
loader: 'postcss-loader'
}, {
loader: 'sass-loader',
options: {
sassOptions: {
includePaths: [root('app', 'theme')]
}
@ -172,6 +179,8 @@ module.exports = function (env) {
}
}),
new plugins.SassLintPlugin(),
/**
* Detect circular dependencies in app.
*
@ -347,6 +356,8 @@ module.exports = function (env) {
plugins.MiniCssExtractPlugin.loader,
{
loader: 'css-loader'
}, {
loader: 'postcss-loader'
}, {
loader: 'sass-loader'
}],
@ -362,6 +373,8 @@ module.exports = function (env) {
loader: 'style-loader'
}, {
loader: 'css-loader'
}, {
loader: 'postcss-loader'
}, {
loader: 'sass-loader?sourceMap'
}],

3
frontend/app/features/administration/pages/cluster/cluster-page.component.scss

@ -3,7 +3,6 @@
iframe {
@include absolute(0, 0, 0, 0);
min-width: 100%;
min-height: 100%;
@include force-width(100%);
border: 0;
}

2
frontend/app/features/administration/pages/event-consumers/event-consumers-page.component.html

@ -51,7 +51,7 @@
</ng-container>
<ng-container content>
<textarea readonly class="form-control error-message">{{eventConsumerError}}</textarea>
<textarea readonly class="form-control error-message small">{{eventConsumerError}}</textarea>
</ng-container>
</sqx-modal-dialog>
</ng-container>

6
frontend/app/features/administration/pages/event-consumers/event-consumers-page.component.scss

@ -13,6 +13,8 @@
.error-message {
height: 18rem;
font-size: .8rem;
font-weight: normal;
}
.small {
font-size: 90%;
}

10
frontend/app/features/administration/pages/restore/restore-page.component.scss

@ -27,8 +27,8 @@ h3 {
}
&-body {
font-family: monospace;
background: $color-border;
font-family: monospace;
max-height: 400px;
min-height: 300px;
overflow-y: scroll;
@ -39,12 +39,12 @@ h3 {
&-status {
& {
@include circle($circle-size);
line-height: $circle-size + .1rem;
text-align: center;
font-size: .6 * $circle-size;
font-weight: normal;
background: $color-border;
color: $color-dark-foreground;
font-size: .6 * $circle-size;
font-weight: normal;
line-height: $circle-size + .1rem;
text-align: center;
vertical-align: middle;
}

4
frontend/app/features/administration/pages/users/user-page.component.html

@ -55,7 +55,7 @@
<input type="text" class="form-control" id="displayName" maxlength="100" formControlName="displayName" autocomplete="false" spellcheck="false" />
</div>
<div class="form-group form-group-password">
<div class="form-group form-group-section">
<div class="form-group">
<label for="password">Password</label>
@ -73,7 +73,7 @@
</div>
</div>
<div class="form-group form-group-permissions">
<div class="form-group form-group-section">
<label for="permissions">Permissions</label>
<sqx-control-errors for="permissions" [submitted]="userForm.submitted | async"></sqx-control-errors>

8
frontend/app/features/administration/pages/users/user-page.component.scss

@ -1,16 +1,10 @@
@import '_vars';
@import '_mixins';
.form-group-password {
margin-top: 2rem;
}
.form-group-permissions {
.form-group-section {
margin-top: 2rem;
}
textarea {
height: 200px;
font-size: .9rem;
font-weight: normal;
}

6
frontend/app/features/api/api-area.component.scss

@ -2,11 +2,11 @@
@import '_mixins';
.nav-link {
position: relative;
padding-top: .6rem;
padding-bottom: .6rem;
padding-top: .6rem;
position: relative;
}
.icon-angle-right {
@include absolute(14px, 2rem, auto, auto);
@include absolute(14px, 2rem);
}

16
frontend/app/features/apps/pages/apps-page.component.html

@ -14,14 +14,14 @@
<h3 class="empty-headline">You are not collaborating to any app yet</h3>
</div>
<div class="card card-href card-app float-left" *ngFor="let app of apps; trackBy: trackByApp" [routerLink]="['/app', app.name]">
<div class="card card-href card-app" *ngFor="let app of apps; trackBy: trackByApp" [routerLink]="['/app', app.name]">
<div class="card-body">
<div class="row no-gutters">
<div class="col-auto card-left">
<sqx-avatar [image]="app.image" [identifier]="app.name"></sqx-avatar>
</div>
<div class="col">
<h4 class="card-title">{{app.displayName}}</h4>
<h3 class="card-title">{{app.displayName}}</h3>
<div class="card-text card-links">
<a [routerLink]="['/app', app.name]" sqxStopClick>Edit</a>
@ -51,7 +51,7 @@
<img src="./images/add-app.svg" />
</div>
<h4 class="card-title">New App</h4>
<h3 class="card-title">New App</h3>
<div class="card-text">
Create a new blank app without content and schemas.
@ -65,7 +65,7 @@
<img src="./images/add-blog.svg" />
</div>
<h4 class="card-title">New Blog Sample</h4>
<h3 class="card-title">New Blog Sample</h3>
<div class="card-text">
<div>Start with our ready to use blog.</div>
@ -82,7 +82,7 @@
<img src="./images/add-profile.svg" />
</div>
<h4 class="card-title">New Profile Sample</h4>
<h3 class="card-title">New Profile Sample</h3>
<div class="card-text">
<div>Create your profile page.</div>
@ -99,7 +99,7 @@
<img src="./images/add-identity.svg" />
</div>
<h4 class="card-title">New Identity App</h4>
<h3 class="card-title">New Identity App</h3>
<div class="card-text">
<div>Create app for Squidex Identity.</div>
@ -111,7 +111,9 @@
</div>
</div>
<div *ngIf="info" class="info">{{info}}</div>
<div *ngIf="info" class="apps-section">
<small class="info">{{info}}</small>
</div>
<ng-container *sqxModal="addAppDialog">
<sqx-app-form [template]="addAppTemplate"

39
frontend/app/features/apps/pages/apps-page.component.scss

@ -8,20 +8,17 @@
&-section {
@include clearfix;
padding-top: 2rem;
padding-right: 1.25rem;
padding-bottom: 0;
padding-left: $size-sidebar-width + .25rem;
display: block;
padding: 2rem 1.25rem 0 $size-sidebar-width + .25rem;
}
}
.card {
& {
margin-right: 1rem;
@include hover-visible('.deeplinks', inline-block);
display: inline-block;
margin-bottom: 1rem;
margin-right: 1rem;
width: 20rem;
float: left;
}
&-lg {
@ -42,25 +39,16 @@
&-text {
color: $color-text-decent;
font-weight: normal;
font-size: .9rem;
margin-top: .5rem;
}
&-more {
color: $color-text-decent;
font-weight: normal;
font-size: .8rem;
margin-top: .4rem;
margin-top: .5rem;
}
&-title {
@include truncate;
color: $color-title;
font-weight: light;
font-size: 1.2rem;
margin-top: 0;
margin-bottom: 0;
margin-top: 0;
}
&-template {
@ -69,8 +57,8 @@
}
.card-title {
margin-top: 1rem;
margin-bottom: .75rem;
margin-top: 1rem;
}
}
@ -93,16 +81,6 @@
text-decoration: none;
}
}
&:hover {
.deeplinks {
display: inline-block;
}
}
.deeplinks {
display: none;
}
}
.card-image {
@ -113,7 +91,4 @@
.info {
color: $color-border-dark;
padding: 2rem;
padding-left: $size-sidebar-width + .25rem;
font-size: .8rem;
}

6
frontend/app/features/apps/pages/news-dialog.component.scss

@ -4,11 +4,9 @@
:host ::ng-deep {
img {
@include box-shadow(0, 4px, 20px, .2);
width: 80%;
margin: 0 auto;
margin-top: 10px;
margin-bottom: 10px;
display: block;
margin: 10px auto;
max-width: 80%;
}
p {

26
frontend/app/features/apps/pages/onboarding-dialog.component.scss

@ -15,24 +15,21 @@ p {
}
.col-image {
min-width: 489px;
max-width: 489px;
@include force-width(489px);
}
:host ::ng-deep {
.modal {
&-content,
&-dialog {
min-height: $size-height;
max-height: $size-height;
min-width: $size-width;
max-width: $size-width;
@include force-width($size-width);
@include force-height($size-height);
}
&-content {
color: $color-dark-foreground;
background-color: $color-dark-onboarding;
background-image: url('./images/onboarding-background.png');
color: $color-dark-foreground;
position: relative;
}
@ -42,9 +39,9 @@ p {
}
&-close {
text-decoration: underline !important;
cursor: pointer;
color: $color-dark-foreground;
cursor: pointer;
text-decoration: underline !important;
}
}
}
@ -54,24 +51,23 @@ p {
}
.header-left {
@include absolute(-70px, auto, auto, 2rem);
@include absolute($t: -70px, $l: 2rem);
}
.header-right {
@include absolute(2rem, 2rem, auto, auto);
@include absolute($t: 2rem, $r: 2rem);
}
.footer {
@include absolute(auto, auto, 5rem, 2rem);
@include absolute($b: 5rem, $l: 2rem);
}
.onboarding {
&-enter-leave {
& {
text-align: center;
@include force-width(28rem);
margin: 4rem auto 0;
max-width: 28rem;
min-width: 28rem;
text-align: center;
}
p {

6
frontend/app/features/assets/pages/assets-filters-page.component.scss

@ -1,6 +1,2 @@
@import '_vars';
@import '_mixins';
.text-muted {
text-decoration: none;
}
@import '_mixins';

27
frontend/app/features/assets/pages/assets-page.component.scss

@ -1,25 +1,18 @@
@import '_vars';
@import '_mixins';
.section {
border-top: 1px solid $color-border;
padding: 1rem;
}
:host ::ng-deep {
.search {
.form-control {
@include border-radius-right;
}
.search ::ng-deep {
.form-control {
@include border-radius-right;
}
.tags {
@include border-radius-left;
border-right: 0;
.tags {
@include border-radius-left;
border-right: 0;
&:focus,
&.focus {
z-index: 1000;
}
&:focus,
&.focus {
z-index: 1000;
}
}
}

22
frontend/app/features/content/pages/content/content-field.component.scss

@ -2,13 +2,12 @@
@import '_mixins';
.table-items-row {
position: relative;
border-width: 1px;
border-left-width: 4px;
position: relative;
}
.languages-buttons {
@include absolute(.25rem, 1.25rem, auto, auto);
@include absolute(.25rem, 1.25rem);
}
.row {
@ -44,18 +43,27 @@
&-disabled {
color: $color-border-dark;
font-size: .8rem;
font-weight: normal;
}
&-copy {
@include absolute(1rem, auto, auto, -1rem);
@include absolute($t: 1rem, $l: -1rem);
z-index: 1000;
}
}
.compare {
padding: .5rem 0;
border: 0;
border-bottom: 1px solid $color-border;
padding-bottom: .25rem;
padding-top: .5rem;
}
:host {
&:last-child {
margin-bottom: 0;
.compare {
border: 0;
}
}
}

2
frontend/app/features/content/pages/content/content-history-page.component.scss

@ -23,8 +23,8 @@
}
&-created {
font-weight: normal;
font-size: .75rem;
font-weight: normal;
margin: .25rem 0;
}
}

43
frontend/app/features/content/pages/content/content-page.component.html

@ -1,7 +1,7 @@
<sqx-title [message]="schema.displayName"></sqx-title>
<form [formGroup]="contentForm.form" (ngSubmit)="saveAndPublish()">
<sqx-panel desiredWidth="*" minWidth="60rem" [showSidebar]="hasContent">
<sqx-panel desiredWidth="*" minWidth="60rem" [showSidebar]="hasContent" grid="true">
<ng-container title>
<a class="btn btn-text" (click)="back()" *ngIf="!schema.isSingleton">
<i class="icon-angle-left"></i>
@ -98,26 +98,31 @@
</ng-container>
<ng-container content>
<div class="panel-alert panel-alert-danger" *ngIf="contentVersion; let version">
<div class="float-right">
<a class="force" (click)="showLatest()">View latest</a>
</div>
<sqx-list-view>
<ng-container topHeader>
<div class="panel-alert panel-alert-danger" *ngIf="contentVersion; let version">
<div class="float-right">
<a class="force" (click)="showLatest()">View latest</a>
</div>
Viewing <strong>version {{version.value}}</strong>.
</div>
</ng-container>
Viewing <strong>version {{version.value}}</strong>.
</div>
<div content>
<sqx-content-field *ngFor="let field of schema.fields; trackBy: trackByFieldFn"
[form]="contentForm"
[formContext]="formContext"
[field]="field"
[fieldForm]="contentForm.form.get(field.name)"
[fieldFormCompare]="contentFormCompare?.form.get(field.name)"
[schema]="schema"
[languages]="languages"
[(language)]="language">
</sqx-content-field>
</div>
</sqx-list-view>
<ng-container *ngFor="let field of schema.fields; trackBy: trackByFieldFn">
<sqx-content-field
[form]="contentForm"
[formContext]="formContext"
[field]="field"
[fieldForm]="contentForm.form.get(field.name)"
[fieldFormCompare]="contentFormCompare?.form.get(field.name)"
[schema]="schema"
[languages]="languages"
[(language)]="language">
</sqx-content-field>
</ng-container>
</ng-container>
<ng-container sidebar>

4
frontend/app/features/content/pages/contents/contents-filters-page.component.scss

@ -1,10 +1,6 @@
@import '_vars';
@import '_mixins';
.text-muted {
pointer-events: none;
}
.status {
@include truncate;
}

10
frontend/app/features/content/pages/contents/contents-page.component.scss

@ -1,21 +1,15 @@
@import '_vars';
@import '_mixins';
:host ::ng-deep {
.search-form {
display: block;
}
}
.content {
cursor: pointer;
}
.table-container {
display: inline-block;
min-width: 100%;
padding: 0;
padding-right: 1.5rem;
min-width: 100%;
}
.icon-plus {
@ -28,6 +22,6 @@
.selection {
background: $color-theme-secondary;
border-bottom: 2px solid $color-border;
border-bottom: 1px solid $color-border;
padding: .25 * $panel-padding $panel-padding;
}

17
frontend/app/features/content/pages/schemas/schemas-page.component.scss

@ -1,17 +1,2 @@
@import '_vars';
@import '_mixins';
.panel-header {
min-height: 8rem;
max-height: 8rem;
}
.nav-link {
position: relative;
padding-top: .6rem;
padding-bottom: .6rem;
}
.icon-angle-right {
@include absolute(14px, 2rem, auto, auto);
}
@import '_mixins';

2
frontend/app/features/content/shared/array-editor.component.scss

@ -3,10 +3,10 @@
.array-container {
background: $color-border;
margin-bottom: 1rem;
padding: 1rem;
padding-bottom: 1px;
position: relative;
margin-bottom: 1rem;
}
.item {

3
frontend/app/features/content/shared/array-item.component.scss

@ -20,9 +20,8 @@
}
.header-index {
@include force-width(3rem);
display: inline-block;
min-width: 3rem;
max-width: 3rem;
}
}

14
frontend/app/features/content/shared/assets-editor.component.scss

@ -9,11 +9,11 @@
&-container {
& {
background: $color-background;
height: $asset-height + 2rem;
overflow-x: hidden;
overflow-y: scroll;
padding: 1rem;
padding-bottom: 0;
height: $asset-height + 2rem;
}
}
}
@ -34,16 +34,16 @@
.drop-area {
& {
@include transition(border-color .4s ease);
@include border-radius;
@include truncate-nowidth;
border: 2px dashed darken($color-border, 10%);
padding: 5px .5rem;
font-weight: normal;
font-size: 1rem;
text-align: center;
color: darken($color-border, 30%);
cursor: pointer;
font-size: 1rem;
font-weight: normal;
padding: 5px .5rem;
text-align: center;
transition: border-color .4s ease;
}
&:hover {
@ -56,8 +56,8 @@
&.drag {
border-color: darken($color-border, 15%);
cursor: copy;
color: darken($color-border, 40%);
cursor: copy;
text-decoration: none;
}
}

2
frontend/app/features/content/shared/content-status.component.html

@ -1,5 +1,5 @@
<ng-container *ngIf="scheduledTo; else noSchedule">
<span class="content-status pending mr-1"title="{{tooltipText}}">
<span class="content-status pending mr-1" title="{{tooltipText}}">
<i class="icon-clock" [class.icon-sm]="small"></i>
</span>
</ng-container>

10
frontend/app/features/content/shared/content-status.component.scss

@ -13,14 +13,4 @@
&-label {
color: $color-text;
}
&-tooltip {
@include border-radius;
background: $color-tooltip;
border: 0;
font-size: .9rem;
font-weight: normal;
color: $color-dark-foreground;
padding: .75rem;
}
}

4
frontend/app/features/content/shared/content.component.scss

@ -8,12 +8,10 @@
.edit-menu {
@include absolute(.75rem, auto, auto, .25rem);
background: $color-table-background;
border-right: 1px solid $color-border;
min-height: 2.4rem;
max-height: 2.4rem;
padding-right: 1rem;
white-space: nowrap;
background: $color-table-background;
z-index: 100;
}
}

5
frontend/app/features/content/shared/contents-selector.component.scss

@ -16,15 +16,14 @@
.form-control {
@include absolute(-.4rem, auto, auto, 0);
max-width: 300px;
min-width: 300px;
@include force-width(300px);
color: $color-dark-foreground;
}
}
.table-container {
display: inline-block;
min-width: 100%;
padding: 0;
padding-right: 1.5rem;
min-width: 100%;
}

2
frontend/app/features/content/shared/field-editor.component.html

@ -4,7 +4,7 @@
{{field.displayName}} {{displaySuffix}} <span class="field-required" [class.hidden]="!field.properties.isRequired">*</span>
</label>
<span class="field-disabled pl-1" *ngIf="field.isDisabled">Disabled</span>
<small class="field-disabled pl-1" *ngIf="field.isDisabled">Disabled</small>
<sqx-control-errors *ngIf="form" [for]="editorControl" [fieldName]="field.displayName" [submitted]="form.submitted | async"></sqx-control-errors>
</ng-container>

6
frontend/app/features/content/shared/field-editor.component.scss

@ -19,12 +19,12 @@
}
&-separator {
color: lighten($color-text, 20%);
border-bottom: 1px solid darken($color-border, 5%);
color: lighten($color-text, 20%);
font-size: 1.3rem;
font-weight: normal;
padding: .25rem 0;
margin-top: 1.5rem;
margin-bottom: 0;
margin-top: 1.5rem;
padding: .25rem 0;
}
}

12
frontend/app/features/content/shared/reference-item.component.scss

@ -3,24 +3,16 @@
.reference-edit {
& {
@include hover-visible('.reference-menu');
position: relative;
}
&:hover {
.reference-menu {
display: block;
}
}
.reference-menu {
@include absolute(0, -.25rem, auto, auto);
background: $color-table-background;
border-left: 1px solid $color-border;
display: none;
min-height: 2.4rem;
max-height: 2.4rem;
padding-left: 1rem;
white-space: nowrap;
background: $color-table-background;
}
}

16
frontend/app/features/content/shared/references-editor.component.scss

@ -6,33 +6,33 @@
}
.invalid {
padding: 2rem;
color: darken($color-border, 30%);
font-size: 1.2rem;
font-weight: normal;
padding: 2rem;
text-align: center;
color: darken($color-border, 30%);
}
.references-container {
background: $color-background;
max-height: 20rem;
min-height: 6rem;
overflow-x: hidden;
overflow-y: auto;
padding: 1rem;
min-height: 6rem;
max-height: 20rem;
}
.drop-area {
& {
@include transition(border-color .4s ease);
@include border-radius;
border: 2px dashed darken($color-border, 10%);
color: darken($color-border, 30%);
cursor: pointer;
font-size: 1.2rem;
font-weight: normal;
text-align: center;
padding: 1rem;
cursor: pointer;
color: darken($color-border, 30%);
text-align: center;
transition: border-color .4s ease;
}
&:hover {

17
frontend/app/features/dashboard/pages/dashboard-page.component.scss

@ -12,9 +12,9 @@
}
&-inner {
max-width: 75rem;
padding: 2rem;
padding-right: 1rem;
max-width: 75rem;
}
}
@ -25,8 +25,8 @@
:host ::ng-deep {
canvas {
height: 12rem !important;
margin-top: -1rem;
margin-bottom: 0;
margin-top: -1rem;
}
}
@ -38,12 +38,11 @@
.card {
& {
margin-right: 1rem;
@include force-height(16rem);
float: left;
margin-bottom: 1rem;
margin-right: 1rem;
width: 16rem;
min-height: 16rem;
max-height: 16rem;
float: left;
}
&-lg {
@ -60,14 +59,14 @@
&-text {
color: $color-text-decent;
font-weight: normal;
font-size: .9rem;
font-weight: normal;
}
&-title {
color: $color-title;
font-weight: light;
font-size: 1.2rem;
font-weight: light;
margin-top: 1rem;
}
@ -103,7 +102,7 @@
&-value {
font-size: 3rem;
margin-top: 1rem;
margin-bottom: .5rem;
margin-top: 1rem;
}
}

6
frontend/app/features/rules/pages/events/rule-events-page.component.scss

@ -11,21 +11,21 @@ h3 {
}
&-dump {
margin-top: 1rem;
font-family: monospace;
font-size: .8rem;
font-weight: normal;
height: 20rem;
margin-top: 1rem;
}
&-header {
& {
padding: .75rem 1.25rem;
position: relative;
background: $color-border;
border: 0;
margin: -.75rem -1.25rem;
margin-bottom: 1rem;
padding: .75rem 1.25rem;
position: relative;
}
&::before {

17
frontend/app/features/rules/pages/rules/rule-element.component.scss

@ -3,9 +3,9 @@
.small {
& {
@include transition(background-color .4s ease);
height: 3rem;
position: relative;
transition: background-color .4s ease;
}
&.editable {
@ -16,26 +16,25 @@
@include absolute(0, 0, 0, 3rem);
@include truncate;
color: $color-dark-foreground;
line-height: 3rem;
font-size: 1rem;
font-weight: normal;
line-height: 3rem;
padding: 0 .8rem;
}
&-icon {
@include absolute(0, auto, 0, 0);
color: $color-dark-foreground;
line-height: 3.2rem;
font-size: 1.2rem;
font-weight: normal;
line-height: 3.2rem;
padding: 0 .8rem;
}
}
.large {
& {
min-height: 100px;
max-height: 100px;
@include force-height(100px);
}
&.editable {
@ -47,23 +46,23 @@
}
&-title {
font-weight: bold;
font-size: 1rem;
font-weight: bold;
line-height: 1;
}
&-text {
font-size: .8rem;
margin-top: .25rem;
margin-bottom: .25rem;
margin-top: .25rem;
}
&-icon {
color: $color-dark-foreground;
display: inline-block;
line-height: 1px;
margin-right: .5rem;
position: relative;
padding: 1rem;
line-height: 1px;
position: relative;
}
}

7
frontend/app/features/rules/pages/rules/rule.component.scss

@ -3,8 +3,8 @@
.card {
& {
@include border-radius(0);
border-bottom-width: 2px;
border-radius: 0;
border-top-width: 0;
margin-bottom: .25rem;
}
@ -16,12 +16,11 @@
&-footer {
background: $color-theme-secondary;
font-weight: normal;
font-size: 90%;
font-weight: normal;
}
}
.col-last {
min-width: 80px;
max-width: 80px;
@include force-width(80px);
}

2
frontend/app/features/rules/pages/rules/triggers/content-changed-trigger.component.scss

@ -3,8 +3,8 @@
.section {
border-top: 1px solid $color-border;
padding-top: 1rem;
padding-bottom: 1rem;
padding-top: 1rem;
}
.form-check {

20
frontend/app/features/schemas/pages/schema/field.component.scss

@ -17,9 +17,9 @@ $padding: 1rem;
}
.table-items-row-summary {
position: relative;
padding-right: 1.25rem;
padding-left: 3rem;
padding-right: 1.25rem;
position: relative;
}
.drag-container {
@ -39,12 +39,12 @@ $padding: 1rem;
}
.nested-fields {
background: $color-theme-secondary;
border: 1px solid $color-border;
border-top-width: 0;
padding: $padding;
padding-left: 2 * $padding;
position: relative;
border: 1px solid $color-border;
border-top-width: 0;
background: $color-theme-secondary;
}
.nested-field {
@ -54,8 +54,8 @@ $padding: 1rem;
&-add {
border: 2px dashed $field-line;
position: relative;
padding: 1rem;
position: relative;
}
&-line-v {
@ -79,10 +79,10 @@ $padding: 1rem;
}
&-icon {
margin-right: 1rem;
color: $color-border-dark;
font-size: 1.2rem;
font-weight: normal;
margin-right: 1rem;
vertical-align: middle;
}
@ -96,13 +96,13 @@ $padding: 1rem;
&-partitioning {
color: $color-text-decent;
font-weight: normal;
font-size: .85rem;
font-weight: normal;
}
.tag {
@include opacity(.9);
min-width: 4rem;
max-width: 6rem;
min-width: 4rem;
opacity: .9;
}
}

6
frontend/app/features/schemas/pages/schema/schema-export-form.component.scss

@ -4,9 +4,9 @@
:host,
.inner-form,
.inner-main {
@include flex-box;
@include flex-grow(1);
@include flex-direction(column);
display: flex;
flex-direction: column;
flex-grow: 1;
}
.inner-header,

4
frontend/app/features/schemas/pages/schema/schema-fields.component.scss

@ -2,10 +2,10 @@
@import '_mixins';
:host {
overflow-x: hidden;
overflow-y: auto;
padding: $panel-padding;
padding-bottom: 8rem;
overflow-y: auto;
overflow-x: hidden;
}
.field-button {

4
frontend/app/features/schemas/pages/schema/schema-page.component.scss

@ -4,13 +4,13 @@
.btn-publishing {
&.disabled,
&:disabled {
@include opacity(1);
opacity: 1;
}
}
.cards {
padding: $panel-padding;
overflow-y: auto;
padding: $panel-padding;
}
.nav-tabs2 {

5
frontend/app/features/schemas/pages/schema/schema-preview-urls-form.component.scss

@ -11,10 +11,9 @@
}
.col-options {
min-width: 6rem;
@include force-width(6rem);
}
.col-name {
min-width: 14rem;
max-width: 14rem;
@include force-width(14rem);
}

6
frontend/app/features/schemas/pages/schema/schema-scripts-form.component.scss

@ -4,9 +4,9 @@
:host,
.inner-form,
.inner-main {
@include flex-box;
@include flex-grow(1);
@include flex-direction(column);
display: flex;
flex-direction: column;
flex-grow: 1;
}
.inner-header,

6
frontend/app/features/schemas/pages/schema/schema-ui-form.component.scss

@ -4,9 +4,9 @@
:host,
.inner-form,
.inner-main {
@include flex-box;
@include flex-grow(1);
@include flex-direction(column);
display: flex;
flex-direction: column;
flex-grow: 1;
}
.inner-header,

2
frontend/app/features/schemas/pages/schema/types/string-validation.component.scss

@ -14,8 +14,8 @@
.control-dropdown {
& {
max-width: 285px;
min-width: 200px;
min-height: 220px;
min-width: 200px;
}
h4 {

13
frontend/app/features/schemas/pages/schemas/schema-form.component.scss

@ -4,8 +4,8 @@
$icon-size: 4.5rem;
.btn-text {
margin-top: -1rem;
margin-left: -.5rem;
margin-top: -1rem;
}
.form-group {
@ -32,16 +32,17 @@ $icon-size: 4.5rem;
&-icon {
& {
@include border-radius;
height: $icon-size;
background: transparent;
border: 1px solid $color-border;
color: $color-theme-blue;
cursor: pointer;
border: 1px solid $color-border;
background: transparent;
margin-right: .5rem;
line-height: $icon-size;
font-size: 1.75rem;
font-weight: normal;
height: $icon-size;
line-height: $icon-size;
margin-right: .5rem;
text-align: center;
text-decoration: none;
width: $icon-size;
}

15
frontend/app/features/schemas/pages/schemas/schemas-page.component.scss

@ -4,27 +4,24 @@
$button-size: calc(2.5rem - 2px);
.subheader-button {
@include force-width($button-size);
font-size: 1rem;
height: $button-size;
line-height: 2.5rem;
margin-right: .4rem;
min-width: $button-size;
max-width: $button-size;
padding: 0;
padding-left: 0;
padding-right: 0;
font-size: 1rem;
line-height: 2.5rem;
}
.new-category-input {
& {
margin-top: 1rem;
background: 0;
border-width: 0;
border-bottom-width: 1px;
border-width: 0;
margin-top: 1rem;
padding-left: 0;
}
&:focus {
@include box-shadow-none;
box-shadow: none;
}
}

12
frontend/app/features/settings/pages/clients/client-connect-form.component.scss

@ -3,8 +3,8 @@
.badge {
@include circle(1.3rem);
margin-right: .25rem;
font-size: 80%;
margin-right: .25rem;
padding-left: 0;
padding-right: 0;
vertical-align: top;
@ -20,12 +20,12 @@
.option {
@include border-radius;
cursor: pointer;
background: none;
border: 1px solid $color-border;
cursor: pointer;
margin-top: .5rem;
padding: 1rem;
position: relative;
margin-top: .5rem;
&:hover {
border-color: darken($color-border, 10%);
@ -33,16 +33,16 @@
i {
@include absolute(1.6rem, 1rem, auto, auto);
color: $color-border;
font-size: 1.8rem;
font-weight: 300;
color: $color-border;
}
}
.access-token {
height: 10rem;
font-family: monospace;
font-size: 1rem;
font-weight: normal;
font-family: monospace;
height: 10rem;
resize: none;
}

2
frontend/app/features/settings/pages/contributors/contributor-add-form.component.html

@ -1,4 +1,4 @@
<div class="table-items-header" style="margin: 0">
<div class="table-items-header">
<form [formGroup]="assignContributorForm.form" (ngSubmit)="assignContributor()">
<div class="row no-gutters">
<div class="col">

4
frontend/app/features/settings/pages/contributors/contributor-add-form.component.scss

@ -12,7 +12,7 @@
}
.table-items-header {
border-width: 0;
border-bottom-width: 2px;
border: 0;
border-bottom: 2px solid $color-border;
margin: 0;
}

6
frontend/app/features/settings/pages/languages/language.component.scss

@ -17,19 +17,19 @@ $field-header: #e7ebef;
&-languages {
@include border-radius;
background: $color-border;
border-top: .5rem solid $color-border;
border-bottom: 1px solid $color-border;
border-top: .5rem solid $color-border;
padding: 0 .5rem;
}
&-language {
@include border-radius(2px);
padding: .5rem;
background: $color-dark-foreground;
border: 0;
line-height: 2rem;
margin: 0;
margin-bottom: .5rem;
line-height: 2rem;
padding: .5rem;
}
&-label {

16
frontend/app/features/settings/pages/more/more-page.component.scss

@ -3,9 +3,9 @@
.app {
&-image {
position: relative;
min-width: 150px;
min-height: 150px;
min-width: 150px;
position: relative;
}
&-image-remove {
@ -24,17 +24,17 @@
@mixin overlay {
& {
@include transition(opacity .4s ease);
@include absolute(0, 0, 0, 0);
@include opacity(0);
@include flex-box;
color: $color-dark-foreground;
display: flex;
opacity: 0;
transition: opacity .4s ease;
}
&-background {
@include absolute(0, 0, 0, 0);
@include opacity(.7);
background: $color-dark-black;
opacity: .7;
}
}
@ -55,15 +55,15 @@
}
&-text {
position: absolute;
font-size: 1.25rem;
font-weight: lighter;
position: absolute;
}
}
.drag {
.drop-overlay {
@include opacity(1);
opacity: 1;
}
.app-image-remove {

5
frontend/app/features/settings/pages/patterns/pattern.component.scss

@ -2,11 +2,10 @@
@import '_mixins';
.col-options {
min-width: 6rem;
@include force-width(6rem);
}
.col-name,
.col-message {
min-width: 10rem;
max-width: 10rem;
@include force-width(10rem);
}

6
frontend/app/features/settings/pages/plans/plan.component.scss

@ -3,15 +3,15 @@
.plan {
& {
min-width: 13rem;
max-width: 20rem;
margin: .5rem;
max-width: 20rem;
min-width: 13rem;
}
&-price {
color: $color-theme-blue;
margin-top: 0;
margin-bottom: 0;
margin-top: 0;
}
&-selected {

6
frontend/app/features/settings/pages/plans/plans-page.component.scss

@ -3,15 +3,15 @@
.plan {
& {
min-width: 13rem;
max-width: 20rem;
margin: .5rem;
max-width: 20rem;
min-width: 13rem;
}
&-price {
color: $color-theme-blue;
margin-top: 0;
margin-bottom: 0;
margin-top: 0;
}
&-selected {

2
frontend/app/features/settings/pages/roles/role.component.scss

@ -14,9 +14,9 @@
.prefix {
border: 0;
border-bottom: 1px solid $color-input;
color: $color-text-decent;
padding-left: 0;
padding-right: 0;
color: $color-text-decent;
}
.rule-name {

32
frontend/app/features/settings/pages/workflows/workflow-step.component.scss

@ -17,44 +17,40 @@
}
.col-arrow {
min-width: 2rem;
max-width: 2rem;
@include force-width(2rem);
}
.col-button {
min-width: 3rem;
max-width: 3rem;
@include force-width(3rem);
}
.col-step {
min-width: 10rem;
max-width: 10rem;
@include force-width(10rem);
}
.col-roles {
min-width: 18rem;
max-width: 18rem;
@include force-width(18rem);
}
.transition {
& {
margin-top: .25rem;
margin-bottom: .5rem;
line-height: 2.2rem;
margin-bottom: .5rem;
margin-top: .25rem;
}
&-to {
line-height: 1.2rem;
padding: .5rem .75rem;
padding-right: 0;
line-height: 1.2rem;
}
}
}
.step {
& {
margin-bottom: 1.5rem;
border-bottom: 1px solid $color-border;
margin-bottom: 1.5rem;
}
&-inner {
@ -72,16 +68,16 @@
.btn-initial {
& {
visibility: hidden;
line-height: 1.6rem;
padding-left: 0;
padding-right: 0;
width: 2rem;
text-align: center;
visibility: hidden;
width: 2rem;
}
&:disabled {
@include opacity(1);
opacity: 1;
}
&.active {
@ -91,15 +87,15 @@
.transition-prevent-updates {
& {
margin-top: .25rem;
margin-bottom: 1rem;
line-height: 2.5rem;
margin-bottom: 1rem;
margin-top: .25rem;
}
&-to {
line-height: 1.2rem;
padding: .5rem .75rem;
padding-right: 0;
line-height: 1.2rem;
}
}

4
frontend/app/features/settings/pages/workflows/workflow-transition.component.scss

@ -3,11 +3,11 @@
.select-placeholder {
@include absolute(0, 0, 0, 0);
border: 1px solid transparent;
color: $color-theme-secondary;
line-height: 1.2rem;
padding: .5rem .75rem;
pointer-events: none;
line-height: 1.2rem;
border: 1px solid transparent;
}
.form-control {

6
frontend/app/features/settings/pages/workflows/workflow.component.scss

@ -14,13 +14,11 @@
}
.col-form-label {
min-width: 4rem;
max-width: 4rem;
@include force-width(4rem);
}
.col-tags {
padding: .6rem 1rem;
padding-bottom: 0;
padding: .6rem 1rem 0;
}
.form-group {

4
frontend/app/features/settings/settings-area.component.scss

@ -2,9 +2,9 @@
@import '_mixins';
.nav-link {
position: relative;
padding-top: .6rem;
padding-bottom: .6rem;
padding-top: .6rem;
position: relative;
}
.header-link {

10
frontend/app/framework/angular/code.component.scss

@ -3,17 +3,17 @@
.code {
background: $color-code-background;
margin: .25rem 0;
padding-left: .5rem;
padding-right: 3rem;
margin: .25rem 0;
}
.code,
.code-copy {
font-size: .8rem;
padding-top: .25rem;
padding-bottom: .25rem;
min-height: 27px;
padding-bottom: .25rem;
padding-top: .25rem;
}
.copy-container {
@ -23,11 +23,11 @@
.code-copy {
& {
@include absolute(0, 0, auto, auto);
border: 0;
background: darken($color-border-dark, 30%);
border: 0;
color: $color-dark-foreground;
padding-left: .375rem;
padding-right: .375rem;
color: $color-dark-foreground;
}
&:focus {

10
frontend/app/framework/angular/external-link.directive.ts

@ -21,16 +21,18 @@ export class ExternalLinkDirective implements AfterViewInit {
}
public ngAfterViewInit() {
this.renderer.setProperty(this.element.nativeElement, 'target', '_blank');
this.renderer.setProperty(this.element.nativeElement, 'rel', 'noopener');
const element = this.element.nativeElement;
this.renderer.setProperty(element, 'target', '_blank');
this.renderer.setProperty(element, 'rel', 'noopener');
if (this.type !== 'noicon') {
const icon = this.renderer.createElement('i');
this.renderer.addClass(icon, 'icon-external-link');
this.renderer.addClass(icon, 'ml-1');
this.renderer.appendChild(this.element.nativeElement, icon);
this.renderer.appendChild(element, this.renderer.createText(' '));
this.renderer.appendChild(element, icon);
}
}
}

2
frontend/app/framework/angular/forms/checkbox-group.component.scss

@ -3,8 +3,8 @@
.form-check {
display: block;
margin-left: 0;
margin-bottom: .5rem;
margin-left: 0;
}
.form-check-input {

3
frontend/app/framework/angular/forms/control-errors.component.scss

@ -2,7 +2,6 @@
@import '_vars';
:host {
@include force-width(100%);
align-self: flex-start;
min-width: 100%;
max-width: 100%;
}

4
frontend/app/framework/angular/forms/date-time-editor.component.scss

@ -23,8 +23,8 @@
.input-group {
.form-control {
&:last-child {
position: relative;
padding-right: 2rem;
position: relative;
}
}
@ -47,6 +47,6 @@
}
&:focus {
@include box-shadow-none;
box-shadow: none;
}
}

8
frontend/app/framework/angular/forms/dropdown.component.scss

@ -22,28 +22,28 @@ $color-input-disabled: #eef1f4;
}
.control-dropdown {
max-width: 40rem;
max-height: none;
max-width: 40rem;
overflow-y: hidden;
}
.control-dropdown-items {
overflow-y: auto;
max-height: 15rem;
overflow-y: auto;
}
.selection {
& {
position: relative;
overflow: hidden;
position: relative;
}
.control-dropdown-item {
@include absolute(0, 1rem, 0, 0);
line-height: 1.2rem;
padding-bottom: 0;
pointer-events: none;
position: absolute;
line-height: 1.2rem;
}
.icon-caret-down {

23
frontend/app/framework/angular/forms/editable-title.component.scss

@ -3,41 +3,28 @@
.title {
& {
@include hover-visible('.title-edit', inline);
position: relative;
}
&-edit {
color: $color-border-dark;
display: none;
font-size: .9rem;
font-weight: normal;
cursor: pointer;
padding: .6rem .25rem;
border: 0;
background: transparent;
vertical-align: baseline;
}
&-name {
font-family: -apple-system, system-ui, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
display: inline;
font-size: 1.2rem;
font-weight: normal;
display: inline;
margin: 0;
}
&-view {
@include truncate;
border-bottom: 1px solid transparent;
border-top: 0;
padding: .375rem 0;
position: absolute;
border-top: 0;
border-bottom: 1px solid transparent;
line-height: 1.5rem;
}
&:hover {
.title-edit {
display: inline;
}
}
}

2
frontend/app/framework/angular/forms/iframe-editor.component.scss

@ -2,7 +2,7 @@
@import '_vars';
iframe {
border: 0;
background: 0;
border: 0;
overflow: hidden;
}

1
frontend/app/framework/angular/forms/json-editor.component.scss

@ -7,7 +7,6 @@ $editor-height: 30rem;
:host ::ng-deep {
.ace_editor {
background: $color-dark-foreground;
border: 1px solid $color-input;
&.no-border {

8
frontend/app/framework/angular/forms/stars.component.scss

@ -9,9 +9,6 @@ $color-gold: #ffd700;
.stars {
& {
display: inline-block;
border: 0;
height: 2.4rem;
line-height: 2.4rem;
}
@ -26,17 +23,16 @@ $color-gold: #ffd700;
.star {
& {
background: transparent;
border: 0;
line-height: 1px;
vertical-align: middle;
}
&::before {
display: inline-block;
color: $color-gold;
content: '';
display: inline-block;
font-size: 1.8rem;
font-weight: normal;
line-height: 1px;
}

23
frontend/app/framework/angular/forms/tag-editor.component.scss

@ -2,6 +2,7 @@
@import '_vars';
$focus-color: #b3d3ff;
$focus-shadow: rgba(51, 137, 255, .25);
:host {
text-align: left;
@ -22,8 +23,8 @@ $focus-color: #b3d3ff;
}
&.focus {
@include box-shadow-raw(0 0 0 .2rem rgba(51, 137, 255, .25));
border-color: $focus-color;
box-shadow: 0 0 0 .2rem $focus-shadow;
}
&.single-line {
@ -40,26 +41,26 @@ $focus-color: #b3d3ff;
div {
&.form-control {
height: auto;
position: relative;
text-align: left;
text-decoration: none;
position: relative;
}
}
.blank {
& {
@include placeholder-color($color-input-placeholder);
padding: 0;
border: 0;
background: transparent;
min-width: 50px;
max-width: 100%;
border: 0;
height: auto !important;
max-width: 100%;
min-width: 50px;
padding: 0;
}
&:focus,
&.focus {
@include box-shadow-none;
box-shadow: none;
outline: none;
}
@ -88,15 +89,15 @@ div {
.item {
& {
@include border-radius(10px);
color: $color-dark-foreground;
cursor: default;
padding: 1px .6rem;
background: $color-theme-blue;
border: 0;
height: 1.25rem;
color: $color-dark-foreground;
cursor: default;
font-size: .8rem;
font-weight: normal;
height: 1.25rem;
margin-right: 2px;
padding: 1px .6rem;
white-space: nowrap;
}

8
frontend/app/framework/angular/forms/toggle.component.scss

@ -10,23 +10,23 @@ $toggle-button-size: $toggle-height - .25rem;
@include circle($toggle-button-size);
@include box-shadow(0, 2px, 2px, .2);
@include absolute($toggle-height * .5, auto, auto, $toggle-width * .5);
@include transition(left .3s ease);
background: $color-dark-foreground;
border: 0;
margin-left: -$toggle-button-size * .5;
margin-top: -$toggle-button-size * .5;
transition: left .3s ease;
}
&-container {
& {
@include border-radius($toggle-height * .5);
@include box-shadow-inner;
@include transition(background-color .3s ease);
display: inline-block;
position: relative;
background: lighten($color-border, 6%);
border: 0;
display: inline-block;
height: $toggle-height;
position: relative;
transition: background-color .3s ease;
width: $toggle-width;
}

20
frontend/app/framework/angular/list-view.component.scss

@ -2,9 +2,9 @@
@import '_vars';
:host {
@include flex-box;
@include flex-direction(column);
@include flex-grow(1);
display: flex;
flex-direction: column;
flex-grow: 1;
overflow: hidden;
padding: 0;
position: relative;
@ -18,17 +18,17 @@
&-content,
&-header,
&-footer {
@include transition(opacity .2 ease);
padding: 0 $panel-padding;
transition: opacity .2 ease;
}
&-content {
@include flex-grow(1);
flex-grow: 1;
padding: $panel-padding;
&.tabled {
padding-top: .5rem;
padding-bottom: .5rem;
padding-top: .5rem;
}
&.normal {
@ -36,17 +36,17 @@
}
&.synced {
overflow-y: auto;
overflow-x: auto;
overflow-y: auto;
padding-right: 0;
}
}
&-header {
& {
@include flex-shrink(0);
border: 0;
border-bottom: 1px solid $color-border;
flex-shrink: 0;
overflow-x: hidden;
overflow-y: hidden;
}
@ -70,9 +70,9 @@
&-footer {
& {
@include flex-shrink(1);
border: 0;
border-top: 1px solid $color-border;
flex-shrink: 0;
}
/deep/ .pagination {
@ -87,7 +87,7 @@
}
.loading-indicator {
@include opacity(.5);
opacity: .5;
}
.loader {

10
frontend/app/framework/angular/modals/dialog-renderer.component.scss

@ -5,10 +5,9 @@
.notification-container {
& {
@include force-width(30rem);
@include fixed;
margin: .625rem;
max-width: 30rem;
min-width: 30rem;
position: fixed;
z-index: 100000;
}
@ -45,13 +44,12 @@ $caret-size: 6px;
.tooltip2 {
& {
color: $color-dark-foreground;
background: $color-tooltip;
border: 0;
color: $color-dark-foreground;
font-size: .9rem;
font-weight: normal;
white-space: nowrap;
padding: .5rem;
white-space: nowrap;
}
&-left {

4
frontend/app/framework/angular/modals/modal-dialog.component.html

@ -19,8 +19,8 @@
<ng-content select="[content]"></ng-content>
</div>
<div class="modal-footer" *ngIf="showFooter">
<div class="clearfix" #footerElement>
<div class="modal-footer" #footerElement *ngIf="showFooter">
<div class="clearfix">
<ng-content select="[footer]"></ng-content>
</div>
</div>

6
frontend/app/framework/angular/modals/modal-dialog.component.scss

@ -6,8 +6,8 @@
}
.flexed {
@include flex-box;
@include flex-grow(1);
@include flex-direction(column);
display: flex;
flex-direction: column;
flex-grow: 1;
padding: 0;
}

14
frontend/app/framework/angular/modals/modal-dialog.component.ts

@ -46,7 +46,7 @@ export class ModalDialogComponent implements AfterViewInit {
@ViewChild('tabsElement', { static: false })
public tabsElement: ElementRef<ParentNode>;
@ViewChild('tabsElement', { static: false })
@ViewChild('footerElement', { static: false })
public footerElement: ElementRef<ParentNode>;
constructor(
@ -56,7 +56,7 @@ export class ModalDialogComponent implements AfterViewInit {
public ngAfterViewInit() {
this.hideWhenEmpty(this.tabsElement);
this.hideWhenEmpty(this.footerElement);
this.hideParentWhenEmpty(this.footerElement);
}
private hideWhenEmpty(element: ElementRef) {
@ -69,6 +69,16 @@ export class ModalDialogComponent implements AfterViewInit {
}
}
private hideParentWhenEmpty(element: ElementRef) {
if (element && element.nativeElement) {
const isEmpty = element.nativeElement.children.length === 0;
if (isEmpty) {
this.renderer.setStyle(element.nativeElement.parentNode, 'display', 'none');
}
}
}
public emitClose() {
this.close.emit();
}

4
frontend/app/framework/angular/modals/onboarding-tooltip.component.html

@ -1,9 +1,9 @@
<ng-container *sqxModal="tooltipModal">
<div class="onboarding-rect" [sqxAnchoredTo]="for" [offset]="4" [position]="'full'"></div>
<div class="onboarding-help" [sqxAnchoredTo]="for" [offset]="4" [position]="position" @fade>
<div class="onboarding-text">
<small class="onboarding-text">
<ng-content></ng-content>
</div>
</small>
<div class="onboarding-buttons clearfix">
<button (click)="hideAll()" class="btn btn-text-primary btn-sm float-left">

10
frontend/app/framework/angular/modals/onboarding-tooltip.component.scss

@ -1,18 +1,18 @@
@import '_mixins';
@import '_vars';
$hide-shadow: rgba(0, 0, 0, .5);
.onboarding {
&-help {
@include border-radius;
background: $color-tooltip;
border: 0;
max-width: 20rem;
padding: .75rem;
min-width: 10rem;
padding: .75rem 1rem;
}
&-text {
font-size: .9rem;
font-weight: normal;
color: $color-dark-foreground;
}
@ -21,6 +21,6 @@
}
&-rect {
@include box-shadow-raw(0 0 0 9999px rgba(0, 0, 0, .5));
box-shadow: 0 0 0 9999px $hide-shadow;
}
}

8
frontend/app/framework/angular/status-icon.component.scss

@ -7,26 +7,26 @@ $circle-size-lg: 2.8rem;
.status {
& {
text-align: center;
display: inline-block;
background: $color-border;
border: 0;
color: $color-dark-foreground;
display: inline-block;
text-align: center;
vertical-align: middle;
}
&.sm {
@include circle($circle-size-sm);
line-height: $circle-size-sm + .1rem;
font-size: .5 * $circle-size-sm;
font-weight: normal;
line-height: $circle-size-sm + .1rem;
}
&.lg {
@include circle($circle-size-lg);
line-height: $circle-size-lg + .1rem;
font-size: .5 * $circle-size-lg;
font-weight: normal;
line-height: $circle-size-lg + .1rem;
}
&-pending {

2
frontend/app/shared/components/asset-dialog.component.scss

@ -15,6 +15,6 @@
}
&:focus {
@include box-shadow-none;
box-shadow: none;
}
}

8
frontend/app/shared/components/asset-folder.component.scss

@ -9,23 +9,23 @@
img {
height: 1.5rem;
margin-right: 1rem;
margin-bottom: .25rem;
margin-right: 1rem;
}
.card {
& {
border-width: 1px;
border-bottom-width: 1px;
border-width: 1px;
width: $asset-width;
}
&-body {
font-size: 1.1rem;
padding-top: .75rem;
line-height: 2.2rem;
padding-bottom: .75rem;
padding-right: .5rem;
line-height: 2.2rem;
padding-top: .75rem;
}
}

24
frontend/app/shared/components/asset-uploader.component.scss

@ -13,35 +13,35 @@
.nav-link {
color: $color-dark-foreground;
padding-top: 0;
padding-bottom: 0;
padding-top: 0;
}
}
}
.icon-upload-3 {
vertical-align: middle;
font-size: 1.4rem;
font-weight: lighter;
padding-right: .5rem;
vertical-align: middle;
}
.dropdown-menu {
@include absolute(2.6rem, 0, auto, auto);
display: block;
min-width: 30rem;
max-width: 60%;
min-height: 4rem;
min-width: 30rem;
padding: 1rem;
}
.uploads {
& {
border: 2px solid transparent;
background: none;
border: 2px solid transparent;
min-height: 2rem;
}
&-empty {
line-height: 1.8rem;
}
@ -49,9 +49,8 @@
.upload {
& {
@include force-height(2rem);
line-height: 2rem;
min-height: 2rem;
max-height: 2rem;
margin-bottom: .5rem;
}
@ -61,8 +60,8 @@
&-name {
@include truncate;
padding-right: .5rem;
padding-left: .5rem;
padding-right: .5rem;
}
}
@ -71,14 +70,13 @@ $circle-size: 1.6rem;
.upload-status {
& {
@include circle($circle-size);
display: inline-block;
line-height: $circle-size + .1rem;
text-align: center;
font-size: .4 * $circle-size;
font-weight: normal;
background: $color-border;
color: $color-dark-foreground;
cursor: none;
font-size: .4 * $circle-size;
font-weight: normal;
line-height: $circle-size + .1rem;
text-align: center;
}
&-running {

69
frontend/app/shared/components/asset.component.scss

@ -6,34 +6,34 @@
$list-height: 2.25rem;
@mixin overlay-container {
position: relative;
padding: 0;
overflow: hidden;
padding: 0;
position: relative;
}
@mixin overlay {
& {
@include transition(opacity .4s ease);
@include absolute(0, 0, 0, 0);
@include opacity(0);
@include flex-box;
color: $color-dark-foreground;
display: flex;
opacity: 0;
transition: opacity .4s ease;
}
&-background {
@include absolute(0, 0, 0, 0);
@include opacity(.7);
background: $color-dark-black;
opacity: .7;
}
}
@mixin asset-type {
padding: .1rem .25rem;
text-transform: uppercase;
color: $color-dark-foreground;
cursor: none;
font-size: .7rem;
font-weight: normal;
cursor: none;
color: $color-dark-foreground;
padding: .1rem .25rem;
text-transform: uppercase;
}
:host(.isListView) {
@ -42,6 +42,7 @@ $list-height: 2.25rem;
:host ::ng-deep {
.form-control {
&.disabled,
&:disabled {
background: transparent;
@ -52,26 +53,25 @@ $list-height: 2.25rem;
.card {
& {
@include overlay-container;
width: $asset-width;
border-top-width: 1px;
border-width: 1px;
margin-bottom: 1rem;
margin-right: .5rem;
width: $asset-width;
}
&-body {
position: relative;
@include force-height($asset-header);
padding: 1rem;
min-height: $asset-header;
max-height: $asset-header;
position: relative;
}
&-footer {
position: relative;
max-height: auto;
min-height: $asset-footer;
padding: 1rem;
padding-top: .5rem;
min-height: $asset-footer;
max-height: auto;
position: relative;
}
}
@ -87,24 +87,25 @@ $list-height: 2.25rem;
&:hover {
.overlay {
@include opacity(1);
opacity: 1;
}
.file-type {
@include opacity(0);
opacity: 0;
}
}
}
&-type {
@include transition(opacity .4s ease);
@include absolute(1rem, auto, auto, 1rem);
@include asset-type;
@include border-radius(3px);
background: $color-dark-black;
transition: opacity .4s ease;
}
&-name, &-info {
&-name,
&-info {
@include truncate;
}
@ -125,10 +126,10 @@ $list-height: 2.25rem;
}
&-icon {
padding: 2rem;
background: $color-asset-bg;
border: 0;
height: $asset-image;
padding: 2rem;
text-align: center;
}
}
@ -147,10 +148,10 @@ $list-height: 2.25rem;
a {
& {
color: darken($color-dark-foreground, 10%);
cursor: pointer;
font-size: 1.1rem;
font-weight: normal;
cursor: pointer;
color: darken($color-dark-foreground, 10%);
}
&:hover {
@ -175,24 +176,24 @@ $list-height: 2.25rem;
}
.editable {
height: 2rem;
border-top: 0;
border-bottom: 1px solid transparent;
border-top: 0;
height: 2rem;
}
.table-items-row {
& {
position: relative;
padding-left: $list-height + 3rem;
height: $list-height + 2rem;
padding-left: $list-height + 3rem;
position: relative;
}
.left-border {
& {
@include absolute(0, auto, auto, 0);
height: $list-height + 2rem;
border: 0;
background: $color-border;
border: 0;
height: $list-height + 2rem;
width: 4px;
}
@ -203,8 +204,8 @@ $list-height: 2.25rem;
.image {
@include absolute(0, auto, 0, 4px);
border: 0;
background: $color-asset-bg;
border: 0;
width: $list-height + 2rem;
}
@ -261,19 +262,19 @@ $list-height: 2.25rem;
}
&-text {
position: absolute;
font-size: 1.25rem;
font-weight: lighter;
position: absolute;
}
}
.drag {
.drop-overlay {
@include opacity(1);
opacity: 1;
}
.file-type {
@include opacity(0);
opacity: 0;
}
}

18
frontend/app/shared/components/assets-list.component.scss

@ -7,8 +7,8 @@
h5 {
font-size: .9rem;
margin-top: 0;
margin-bottom: .5rem;
margin-top: 0;
}
.folders {
@ -19,23 +19,23 @@ h5 {
.folder-container {
& {
width: $asset-width;
position: relative;
height: $asset-folder-height;
margin-bottom: 1rem;
margin-right: .5rem;
height: $asset-folder-height;
position: relative;
width: $asset-width;
}
&-over {
@include absolute(-6px, -6px, -6px, -6px);
@include opacity(0);
border: 2px solid $color-theme-blue;
opacity: 0;
}
&.cdk-drop-list-dragging {
&:hover {
.folder-container-over {
@include opacity(1);
opacity: 1;
}
}
}
@ -43,13 +43,13 @@ h5 {
.file-drop {
& {
@include transition(border-color .4s ease);
border: 2px dashed $color-border;
background: transparent;
padding: 1rem;
border: 2px dashed $color-border;
margin-bottom: 1rem;
margin-right: 0;
padding: 1rem;
text-align: center;
transition: border-color .4s ease;
}
&.drag {

8
frontend/app/shared/components/comments.component.scss

@ -3,16 +3,16 @@
.comments {
&-list {
@include flex-grow(1);
overflow-y: auto;
flex-grow: 1;
overflow-x: hidden;
overflow-y: auto;
padding: 1rem;
padding-left: 1.5rem;
}
&-footer {
@include flex-shrink(0);
border-top: 1px solid $color-border;
flex-shrink: 0;
}
}
@ -21,6 +21,6 @@
border: 0;
&:focus {
@include box-shadow-none;
box-shadow: none;
}
}

2
frontend/app/shared/components/language-selector.component.scss

@ -11,6 +11,6 @@
.iso-code-dropdown {
display: inline-block;
min-width: 40px;
max-width: 60px;
min-width: 40px;
}

2
frontend/app/shared/components/markdown-editor.component.scss

@ -9,7 +9,7 @@ $background: #fff;
.fullscreen {
@include fixed(0, 0, 0, 0);
border: 0;
background: $background;
border: 0;
z-index: 1040;
}

2
frontend/app/shared/components/queries/filter-logical.component.scss

@ -4,8 +4,8 @@
$field-line: #e1e8ef;
.filters {
position: relative;
padding-left: 3rem;
position: relative;
}
.filter {

20
frontend/app/shared/components/schema-category.component.scss

@ -38,9 +38,9 @@ $drag-margin: -8px;
.drop-indicator {
@include absolute($drag-margin, $drag-margin, $drag-margin, $drag-margin);
display: none;
border: 2px dashed $color-dark-black;
background: none;
border: 2px dashed $color-dark-black;
display: none;
pointer-events: none;
}
}
@ -50,9 +50,9 @@ $drag-margin: -8px;
}
.nav-link {
padding-top: .75rem;
padding-bottom: .75rem;
border: 0;
padding-bottom: .75rem;
padding-top: .75rem;
}
.nav-item {
@ -92,7 +92,7 @@ $drag-margin: -8px;
}
.cdk-drag-animating {
@include transition(none);
transition: none;
}
.schema {
@ -105,23 +105,23 @@ $drag-margin: -8px;
}
&-modified {
padding-left: 0;
text-align: right;
width: auto;
white-space: nowrap;
padding-left: 0;
width: auto;
}
&-user {
@include border-radius(1px);
@include truncate;
display: inline-block;
background: $color-dark2-control;
padding: .1rem .25rem;
display: inline-block;
font-size: .8rem;
font-weight: normal;
margin-left: 10px;
margin-bottom: 2px;
margin-left: 10px;
max-width: 100%;
padding: .1rem .25rem;
vertical-align: middle;
}
}

6
frontend/app/shared/components/search-form.component.scss

@ -23,17 +23,17 @@
.save-search {
color: $color-border-dark !important;
cursor: pointer !important;
font-size: .9rem;
font-weight: normal;
cursor: pointer !important;
}
.expand-search {
& {
color: $color-border-dark !important;
cursor: pointer !important;
font-size: .9rem;
font-weight: normal;
cursor: pointer !important;
padding: 0 .5rem;
}
@ -43,9 +43,9 @@
}
.link {
margin-top: 1.5rem;
font-size: .8rem;
font-weight: normal;
margin-top: 1.5rem;
}
.col-form-label {

10
frontend/app/shell/pages/home/home-page.component.scss

@ -13,17 +13,17 @@
.login {
&-area {
max-width: 28rem;
margin: 1rem auto 0;
max-width: 28rem;
padding: 0 1rem;
}
&-arms {
@include absolute(auto, auto, -40px, -110px);
background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAMAAACahl6sAAADAFBMVEUAAABCc//T0993ivlKZ/9RXP9Ha/9Cc/9Ccv9BdP+so/9eSP8/dv9cTP8/dv9Dcf9Adf9cTP87fP8+eP9EcP9dSv87ff9BdP89ev9iQ/88e/9Eb/9BdP89ev9iQ/9eSP9EcP/c3eY7ff9ZUf86f/9Adv86fv86f/9Adv8/d/9dSv9Eb/9fR/9RXP9Eb/9QXf88e/9aTv8/d//e3+hAdf/f4elmPf9oOv9Fbv9SW/9Adv9WVP8+eP9Eb/9jQf9gRf9lPv9Fbv9Adv9UV/86fv9hRP85gP9GbP88e/9Bc/88ff9Ccv9cTP89ev9Bc/9UWP9gRf88e/9WVP9BdP9Dcf9aTv9TWf9YUf9BdP9cS/9GbP8zif9YUv9LZf9Adv9Gbf9VVv9lPf/u8fRCcv9MZP9jQf9XUv9QXf9EcP9ZUf/T098/d/9RXf9jQf/T099ZUf9nPP9YUf/g4unu8fQ+ef9iQ/9PX/9Ha/9ZUP8zif9dS/9NYv9Eb/9GbP9cTP9nPP9OYP9Adf9hRP9Ccv9JZ/9MZP9Adv9SW/9Adf9nO/9cS//u8fSso/9JZ/85gP81hv9SW//T09+so/81hf+4sfZQXf8/d/9jQP9fRv86fv/u8fRTWP9NYf9JZ//u8fQ6fv9SWv87ff9gRv/u8fSso/8zif+so/9mPf9RXP9VVf9lPv/u8fRSWv82hP+so/9MY//h4urT09/u8fTu8fTu8fRJZ//u8fTu8fQ7ff/u8fTu8fTu8fTu8fRCcf9Eb/88ev9Fbv9Adf9BdP9Iaf9YUf8+eP9ZT/9Cc/9bTf9PXv8/d/8+ef9UWP9SW/9XU/9VVv9TWf9WVf88fP87ff9dSv9jQP9lPv9eSP9cTP9fR/9Ga/9JaP9HbP9gRf9RXP9hRP/u8fROYP9OYf9MY/9MZP9LZf9KZ/86fv9RXf9NYv9iQ/85gP9mPf9nOv9JZv9jQv9iQv9nPP////8zif9mPP9Vb/+xvf/5+f+hr/+Nnv97kP9hef/s7//a3//S2f9tg/9JvqMVAAAAvXRSTlMAD1wCBgMLW/w3mQ8kHR/38eXWzk8U4+PArIF/QTQrJBsaEgn49+7Nj3hzcE1FLCwdGBcSCQf47+zs69/e0dDAuqacm5eUbGhjST47OC8m9+/o6OfZ0MHAvrOyqKSflY6LioiFhH9+dWFYU1FQSEVAPjMr+fj49/b28e3l4t3d3dfJyMa+tbOxqJ2ac1pVSUQ8PDEqEfHv5d/d2NTSx72vp6ail4+LiHFwaWBgX1hAPzEnJO7r6L+okHxkSjzKzuWeAAAJWklEQVR42u3bc5DdQADH8V+bV9u2bdu2bdu2bdu2bdu2bTNJk92km6S9IsnOvM+fN3dz851l8u7g5eXl5eXl5eXl5eXl5WUbIUqCGfFKnDp1Km5IX+CWUDB33HunVNyGePKHPCXiPUTIH5YkOBQSM2K8CdOK4O8EiKdtOCmxO6Rg3Eei2EPxF1Kv1zc4ERIl9iNZXL/4Y0VC0ganQoLGfaQYhj+VP/bJn20T2RqSOt4j1Z/OLU9upkFkd0juR0R0/BFf4ZkEB0KGKhH37t2Lhz+SPCRtcC7Eb1ixQbEEfyJwWNJgHTJy7uzBAv6XiPeIeMIfdZQwTGBDRgcULcV/kjI26Yhd5M/Gw7Ti0KFD2pCRUshg/Ce57xF5/2HHIYUNI8IMSPg/WueZ2QYt29ZIAtJxatSf7LshzRv2SOzatYSwcoNkBnzOE96iwdaQgqeIKPAxob9Jg/0huUlHSPhc/EOmDQdDhgqV8eDBg3aFTCAhEeFj/szGYWzVyB6IgubNnBK2SE4v3gXhUwFakwatg3EiqsMQM+fBmLBFo794cEheYg/TIOlRlIxYxh07bJpaEUlHWPiQJxTTIMvpUU+ovjt22BYyjdxaQ8GHcpIEnbxksDPusDGEHmc+PdbzkwatOI3UZ7WqO3bYGRL3T0OitP4pYYckTmT1AhZqh70hpMOHUytmZm2DKngA/FAguPKVnTttDykBHxD60gYqYxTIhARyg8S2kD98Jk2gaWDGw9NfLrA3pDW98UXGbyu4g2A7fJXXduyzKSQzvfFFxO9KWcqiI2hp0iCxKyT8IeK3V7uf8jsIsqbVjsDhSIOtIVU1t6Wi+D219Aky2rFPa8uWLTaF5N9DxcdvKUAaqDiFIEsajjZI7Aspqr17+8VvSJ6RNBDqORi4FG2wOQSZNdel31nunh47FXRJ+1c6oocjDfaHxNdelILil3LqGmT+Qyv7bhamwsaQKNqrRng/+IVE2gZ9h5/yW5wMQSjtVSM+rDUiDWRJ+/enji0bsVVkW4i/HVoJYKVQMG2DhHbUZxpEdoZ4wulKIll1BNc26DuSBmMabAyhQ0L192v6jcFIA9ORujRtcCpE6KE/psMVgBFfObcQTAfikwbnQlBEaSD6BmAnYL5SVh2RDRu2S2wMQS3miCtfX/f7A0cKt8Wwg0wswwbbQ/z0Ig2E/161/AUIGtNX4EL1qxoedFuDhYYqEpPgTAiil2KOBytbJcEi0x8PxjQ4FIIowX63QZU+AIgcSoMLQlDA/+80UJ2LgkhqGnFZZHMIQvu3btDLEh1UDsMGiRMhKBDMLIFV0S+ooEyD1kXbQ1CktGUDtb2WH2hUM22QOBACXzl+1bBdkj40tDzplQSmgYTYL3Rn8wZVr8DQGcI2ULt27XIkBKkTpTdqoNol8gO9imYNCl9wht98WZgGKkdQ5vvbmTTQEMcEqNZZamB0iRQUjNAX2Qa3hIiSJsrRRReRvmKipDBSTd/gthCJ36Sh8yWIFKlapET+CqWEmSy0gXVJ5HzI79WaN8ja5RPAhQBGDVSXouBEfaaBunt3TXTwojZN0DfIkoAbVdgGqjf4UZFpUD19+nQI+NFb2/Dm/duPcoOCnxUCTNEMw6fPL1++fP+j4Y4EHJmimUtvX0reyA3chfT+0SD7Kod8oyFhwI8+YoA6l+QReaeMyG0RR7svqogJqjdfxI4PYoOqNvhR+47Wxw+fblO3uoMf+dSG2zq3fuBobi1jGzT6gBu+mAbVA8kycKOTUQMx2Q94UeWWvoG6KakHXgwxbCDaJgMnfD3QNdzUuXHjxmS/4EQfkwZVFXCiMdugdeAAL8vETyfTBkVj8KEeTaANWm2Hgwt+O+kbWGM42brmkwYT9zPwUeLpThLYBhkvJcONG6irVzO0gFukWgFTuUwbrqrGuGPFCzGa+h5hsd67Gw2DzpFiLtiF07Rs6Nu37+Uwl6ytVYNiAZwVY4Rv2QpYWGzYcESvugAHxfCtiAErtZkGxvHj/fzCQaka/ggZDSvCdMsGxaQgcFCapnKIAEuefuYNVIZmcFJLsaMhfsFTlmlgHT48H06K0dB3U/xKrLLWDYrpjiwUOr1GgMHOLuOGw3qTksFBQir8mp9cTAPr2LFii+F2Ql3rBlXlQHC7BsUsGqhM7rlEmilckmlgnThRrJ7r/5IgRVnrBlW5FHA5P9WtGqiS7n9Z3zgDk8A4Kqru+lfDQcpaNhAcTK+6Vg1UyWZwu8KZmAbG7t27jyaE2/nNZdlAVI4Ft0uSyaKBKhMEbhcol0UCVbIwXC9JJqaBsXdv+wZwvUC5LBtU7l/yQLNM5g3UQNefjUCs6keZBlYF929eQIsyTAOrnPufUQBP3fZWDftlZVx/X5FEK2eWQHV1/4EiEha0N2ugJdHAgyAVSIOZEHyUoEFH2sA6L+KlJExlkwbCumTzoJobY8AVEocwbqAl5is+xtrrolYb4AqBBtIG1unTp7uGgbFUE6//UBP/TfI5lfJ6fDIoBglEmUAwNOu6ajn+k6AdXr16Ven3B6Uy06CTLRYMpGlFQmbhP5nzSjLKJyuFNBiJ4AeslteJqfhPKskhw3yyfUUwaTgnywPWShtC8kodHWL68ExhG6iEYKRZRUL+22r3VBI7lvj0oM9GE1iJwaipdrRqif9m1LCYf/DuS2lgXbhQPKr59jsIbtM8hEGDYnwgtmSdlLF6EdwnTAWmgagggLFy0aBNaeBGQkKSwKgDrjTraBRxRdIEXAnSk2lQFOfi2ZfyDKQNetlc//HcTxLKDaxrPLy302lSnGmQtYkKzkQdr22gsnrAmRRZ5QYGZ3uwKFC2a6yHD/mbXPBE0DcoevK2cwF+ZpIGrYXgjpBHaaCeP39enKf/lCUl2gbFszzgUB59ww/8rXdAmEkbZGdEEcAhPxFoA8HBp74sT3bSQGQDjwJlPaPgfEgQZBwTkh1catGGKeFx4xIl1iSclQ0An2ooDURaHj67NuAn+9mfzAOfwoz7KSQrONX87E84+ZSUVeOnEP4eFRWerJqKx48f9wSvoqZVGhQcPpYo6jzWSQxexeqm7XhdA9xqojbIOL1vySJIDbIXL150A7+CpJUaFGnBsRovVE+ePAHHAqUTE2Sch2DeEyIdeBarGwnhedcSNU+rhnD46lSnSbofHQP4e5n9k2gD0j1JF6E5vLy8vLy8vIx8B1vyN6rJ5v+qAAAAAElFTkSuQmCC');
border: 0;
height: 200px;
width: 200px;
border: 0;
background: url('data:image/png;base64,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');
}
&-icon {
@ -41,9 +41,9 @@
.proudly-made {
color: $color-text-decent;
line-height: 1.5rem;
text-align: center;
font-size: .9rem;
font-style: normal;
line-height: 1.5rem;
margin: 2rem 6rem;
text-align: center;
}

26
frontend/app/shell/pages/internal/apps-menu.component.scss

@ -3,31 +3,33 @@
$color-apps-border: #65a6ff;
$color-nav-shadow: rgba(26, 93, 184, .26);
.nav {
& {
@include flex-direction(row);
flex-direction: row;
}
.nav-item {
.nav-link {
& {
@include box-shadow-colored(0, 2px, 4px, rgba(26, 93, 184, .26));
@include transition(opacity .4 ease);
@include opacity(.95);
@include no-selection;
@include border-radius;
cursor: pointer;
color: $color-dark-foreground;
border: 1px solid $color-theme-blue-lighter;
background: $color-theme-blue;
border: 1px solid $color-theme-blue-lighter;
box-shadow: 0, 2px, 4px $color-nav-shadow;
color: $color-dark-foreground;
cursor: pointer;
line-height: 1.25rem;
min-width: 150px;
opacity: .95;
padding-left: 1rem;
padding-right: 2rem;
min-width: 150px;
transition: opacity .4 ease;
user-select: none;
}
&:hover {
@include opacity(1);
opacity: 1;
}
&::after {
@ -48,7 +50,7 @@ $color-apps-border: #65a6ff;
}
&-item {
@include border-radius(0);
border-radius: 0;
}
}
@ -61,8 +63,8 @@ $color-apps-border: #65a6ff;
}
.apps-list {
max-height: 600px;
margin: -.5rem 0;
max-height: 600px;
overflow-y: auto;
}

18
frontend/app/shell/pages/internal/internal-area.component.scss

@ -7,18 +7,18 @@
}
.navbar-brand {
width: $size-sidebar-width;
background: $color-theme-blue-dark;
padding-top: 0;
padding-bottom: 0;
cursor: pointer;
margin-top: -.5rem;
margin-left: -1rem;
margin-right: 2rem;
float: left;
font-size: 1.8rem;
height: $size-navbar-height;
text-decoration: none;
text-align: center;
line-height: $size-navbar-height;
float: left;
margin-left: -1rem;
margin-right: 2rem;
margin-top: -.5rem;
padding-bottom: 0;
padding-top: 0;
text-align: center;
text-decoration: none;
width: $size-sidebar-width;
}

8
frontend/app/shell/pages/internal/profile-menu.component.scss

@ -9,16 +9,16 @@
.nav-link {
color: $color-dark-foreground;
padding-top: 0;
padding-bottom: 0;
padding-top: 0;
}
}
&-item-help {
padding-top: 2px;
padding-right: 1rem;
font-size: 1.4rem;
font-weight: lighter;
padding-right: 1rem;
padding-top: 2px;
vertical-align: middle;
}
}
@ -38,8 +38,8 @@
}
&-info {
line-height: 1.4rem;
font-size: .9rem;
font-weight: normal;
line-height: 1.4rem;
}
}

56
frontend/app/theme/_bootstrap.scss

@ -14,33 +14,33 @@
}
&-primary {
color: $color-badge-primary-foreground;
background: $color-badge-primary-background;
color: $color-badge-primary-foreground;
}
&-secondary {
color: $color-badge-secondary-foreground;
background: $color-badge-secondary-background;
color: $color-badge-secondary-foreground;
}
&-success {
color: $color-badge-success-foreground;
background: $color-badge-success-background;
color: $color-badge-success-foreground;
}
&-info {
color: $color-badge-info-foreground;
background: $color-badge-info-background;
color: $color-badge-info-foreground;
}
&-warning {
color: $color-badge-warning-foreground;
background: $color-badge-warning-background;
color: $color-badge-warning-foreground;
}
&-danger {
color: $color-badge-danger-foreground;
background: $color-badge-danger-background;
color: $color-badge-danger-foreground;
}
}
@ -64,8 +64,8 @@
.close {
& {
font-weight: 400;
font-size: 1.6rem;
font-weight: 400;
padding-top: .25rem;
}
@ -82,12 +82,12 @@
}
.alert-hint {
@include border-radius(0);
background: lighten($color-theme-blue, 35%);
border: 1px solid $color-border;
border-radius: 0;
color: $color-text;
font-size: 90%;
font-weight: normal;
color: $color-text;
.alert-link {
color: $color-text !important;
@ -104,7 +104,7 @@
a {
&:disabled,
&.disabled {
@include opacity(.8);
opacity: .8;
pointer-events: none;
}
@ -124,9 +124,9 @@ a {
}
&:hover {
text-decoration: underline !important;
cursor: pointer;
color: inherit;
cursor: pointer;
text-decoration: underline !important;
}
}
}
@ -163,8 +163,8 @@ a {
// White dropdown menu without border and shadow.
& {
@include box-shadow(0, 3px, 16px, .2);
border: 0;
background: $panel-light-background;
border: 0;
z-index: 1200;
}
@ -203,9 +203,9 @@ a {
//
.breadcrumb {
& {
margin-bottom: 2rem;
background: none;
border: 1px solid $color-border;
margin-bottom: 2rem;
}
&.steps {
@ -215,12 +215,12 @@ a {
.breadcrumb-item {
& {
padding: .75rem 2rem .75rem 1rem;
background: url('data:image/svg+xml;charset=UTF-8,%3csvg xmlns="http://www.w3.org/2000/svg" width="7" height="20"%3e%3cpath d="M0 0l7 10-7 10" fill="none" stroke="%23e4e7e9" stroke-width=".5"/%3e%3c/svg%3e');
background-position-x: right;
background-repeat: no-repeat;
background-size: contain;
color: $color-text-decent;
padding: .75rem 2rem .75rem 1rem;
a {
color: $color-text-decent !important;
@ -343,11 +343,11 @@ a {
& .nav-link {
& {
border-bottom: .25rem solid transparent;
color: $color-text;
cursor: pointer;
padding: 1rem 0;
border-bottom: .25rem solid transparent;
margin: 0 1rem;
padding: 1rem 0;
text-align: center;
}
@ -444,13 +444,13 @@ a {
&-radio {
& {
@include border-radius;
background: transparent;
border: 1px solid $color-border;
color: $color-text-decent;
cursor: pointer;
border: 1px solid $color-border;
background: transparent;
margin-right: .5rem;
font-size: 1.5rem;
font-weight: normal;
margin-right: .5rem;
text-align: center;
width: 4.5rem;
}
@ -463,9 +463,9 @@ a {
display: block;
font-size: .7rem;
font-weight: bold;
line-height: 1.5rem;
margin-left: -.5rem;
margin-right: -.5rem;
line-height: 1.5rem;
}
.radio-input {
@ -505,8 +505,8 @@ a {
&-group {
.btn-toggle {
& {
border: 1px solid $color-theme-secondary;
background: $color-dark-foreground;
border: 1px solid $color-theme-secondary;
}
&.btn-primary {
@ -580,8 +580,8 @@ $icon-size: 4.5rem;
&-title {
font-weight: bold;
margin-top: -.25rem;
margin-bottom: 0;
margin-top: -.25rem;
}
&-text {
@ -590,10 +590,10 @@ $icon-size: 4.5rem;
.btn-radio {
& {
line-height: $icon-size;
font-size: 1.75rem;
font-weight: normal;
height: $icon-size;
line-height: $icon-size;
}
i {
@ -616,7 +616,7 @@ $icon-size: 4.5rem;
.modal {
&-header,
&-footer {
@include flex-shrink(0);
flex-shrink: 0;
}
&-body {
@ -649,9 +649,9 @@ $icon-size: 4.5rem;
&-content {
@include box-shadow(0, 6px, 16px, .4);
@include border-radiusn(.4rem, .35rem, .35rem, .4rem);
max-height: 100%;
border: 0;
border-radius: .4rem, .35rem, .35rem, .4rem;
max-height: 100%;
}
&-fh {
@ -675,8 +675,8 @@ $icon-size: 4.5rem;
&-tabs {
background: $color-theme-secondary;
position: relative;
padding: .75rem 1.25rem;
position: relative;
}
&-footer {

53
frontend/app/theme/_common.scss

@ -21,8 +21,8 @@ body {
// Common style for user email.
.user-email {
font-style: italic;
font-size: .8rem;
font-style: italic;
}
.text-decent {
@ -30,8 +30,8 @@ body {
}
.drag-handle {
cursor: move;
color: $color-text-decent;
cursor: move;
}
//
@ -48,7 +48,7 @@ body {
}
.cdk-drag-preview {
@include opacity(.7);
opacity: .7;
&.table-drag {
background: $color-dark-foreground;
@ -62,20 +62,20 @@ body {
}
.cdk-drag-placeholder {
@include opacity(0);
opacity: 0;
}
.cdk-drag-animating {
@include transition(transform 250ms cubic-bezier(0, 0, .2, 1));
transition: transform 250ms cubic-bezier(0, 0, .2, 1);
}
.cdk-drop-list-dragging {
* {
@include transition(transform 250ms cubic-bezier(0, 0, .2, 1));
transition: transform 250ms cubic-bezier(0, 0, .2, 1);
}
.cdk-drag-placeholder {
@include transition(none);
transition: none;
}
}
@ -107,7 +107,7 @@ body {
}
&:not([src]) {
@include opacity(0);
opacity: 0;
}
}
@ -121,9 +121,8 @@ body {
.item-published {
& {
@include circle(.5rem);
display: inline-block;
border: 0;
background: $color-theme-green;
border: 0;
margin-left: .4rem;
}
@ -191,25 +190,25 @@ body {
& {
@include absolute(30px, 30px, 30px, 30px);
@include border-radius;
z-index: 10;
align-content: center;
align-items: center;
display: none;
border: 2px dashed $color-border;
color: darken($color-border, 30%);
display: none;
font-size: 1.2rem;
font-weight: normal;
justify-content: center;
color: darken($color-border, 30%);
z-index: 10;
}
&.dragging {
@include flex-box;
display: flex;
}
&.drag {
border-color: darken($color-border, 10%);
cursor: copy;
color: darken($color-border, 40%);
cursor: copy;
text-decoration: none;
}
}
@ -222,7 +221,7 @@ body {
.sorting {
&,
& > * {
@include opacity(.5);
opacity: .5;
}
}
@ -230,41 +229,41 @@ body {
// Animations
//
.spin {
@include animation(spin 3s infinite linear);
animation: spin 3s infinite linear;
}
.spin2 {
@include animation(spin2 5s infinite linear);
animation: spin2 5s infinite linear;
}
@include keyframes (spin2) {
@keyframes spin2 {
50% {
@include rotate(180deg);
transform: rotate(180deg);
}
100% {
@include rotate(360deg);
transform: rotate(360deg);
}
}
@include keyframes (spin) {
@keyframes spin {
20% {
@include rotate(0deg);
transform: rotate(0deg);
}
30% {
@include rotate(180deg);
transform: rotate(180deg);
}
70% {
@include rotate(180deg);
transform: rotate(180deg);
}
80% {
@include rotate(360deg);
transform: rotate(360deg);
}
100% {
@include rotate(360deg);
transform: rotate(360deg);
}
}

55
frontend/app/theme/_forms.scss

@ -14,8 +14,8 @@
&:hover,
&:focus {
@include box-shadow-colored(0, 0, .2rem, $color-theme-error);
border-color: $color-theme-error-dark;
box-shadow: 0 0 .2rem, $color-theme-error;
}
}
}
@ -33,11 +33,11 @@
// Small triangle under the error tooltip with the border trick.
&::after {
@include absolute(auto, auto, -.75rem, .625rem);
content: '';
height: 0;
border-color: $color-theme-error transparent transparent;
border-style: solid;
border-width: .4rem;
border-color: $color-theme-error transparent transparent;
content: '';
height: 0;
width: 0;
}
@ -45,6 +45,7 @@
& {
@include absolute(auto, auto, .4rem, 0);
@include border-radius(2px);
background: $color-theme-error;
color: $color-dark-foreground;
cursor: none;
display: inline-block;
@ -53,7 +54,6 @@
line-height: 1.1rem;
padding: .25rem .4rem;
padding-bottom: .5rem;
background: $color-theme-error;
}
}
@ -72,18 +72,18 @@
& {
@include border-radius(4px);
color: $color-dark-foreground;
margin-top: .25rem;
margin-bottom: .8rem;
font-size: .9rem;
font-weight: normal;
margin-bottom: .8rem;
margin-top: .25rem;
padding: .5rem;
padding-right: 1.5rem;
}
&-close {
@include absolute(0, 0, auto, auto);
padding: .5rem;
display: none;
padding: .5rem;
}
&-error {
@ -120,21 +120,21 @@
.form-alert {
@include absolute(.25rem, 0, auto, auto);
padding: 1rem;
min-width: 200px;
max-width: 600px;
font-size: 1rem;
font-weight: normal;
max-width: 600px;
min-width: 200px;
padding: 1rem;
text-align: left;
z-index: 2000;
&::after {
@include absolute(-.75rem, .625rem, auto, auto);
content: '';
height: 0;
border-color: transparent transparent $color-theme-error;
border-style: solid;
border-width: .4rem;
border-color: transparent transparent $color-theme-error;
content: '';
height: 0;
width: 0;
}
}
@ -148,11 +148,11 @@
@include absolute(2px, auto, auto, 0);
@include border-radius(.25em);
@include box-shadow;
max-height: 15rem;
border: 1px solid $color-input;
background: $color-dark-foreground;
padding: .25rem 0;
border: 1px solid $color-input;
max-height: 15rem;
overflow-y: auto;
padding: .25rem 0;
}
&-item {
@ -166,9 +166,9 @@
&.active,
&:hover {
color: $color-dark-foreground;
border: 0;
background: $color-theme-blue;
border: 0;
color: $color-dark-foreground;
}
}
}
@ -218,7 +218,7 @@ label {
//
.search-form {
& {
@include flex-grow(1);
flex-grow: 1;
position: relative;
}
@ -239,11 +239,11 @@ label {
// Dark form control for the dark panel.
.form-control-dark {
& {
@include transition(background-color .3s ease);
@include placeholder-color($color-dark2-placeholder);
background: $color-dark2-control;
border: 1px solid $color-dark2-control;
color: darken($color-dark-foreground, 20%);
transition: background-color .3s ease;
}
&:focus {
@ -256,17 +256,16 @@ label {
input {
&.form-underlined {
& {
@include border-radius(0);
border: 0;
border-bottom: 1px solid $color-input;
border-radius: 0;
}
&:focus,
&.focus {
@include box-shadow-none;
background: transparent;
border-color: transparent;
border-bottom-color: $color-theme-blue;
box-shadow: none;
outline: none;
}
@ -282,18 +281,18 @@ input {
&.ng-touched,
&.ng-dirty {
& {
@include box-shadow-none;
background: transparent;
border-color: transparent;
border-bottom-color: $color-theme-error;
border-color: transparent;
box-shadow: none;
outline: none;
}
&:hover,
&:focus {
@include box-shadow-none;
border-color: transparent;
border-bottom-color: $color-theme-error-dark;
border-color: transparent;
box-shadow: none;
}
}
}

15
frontend/app/theme/_lists.scss

@ -34,10 +34,10 @@
thead {
// Small font size for the table header, content is more important!
th {
border: 0;
color: $color-table-header;
font-size: .8rem;
font-weight: normal;
border: 0;
padding-top: 0;
vertical-align: middle;
@ -61,7 +61,6 @@
tr {
// Each row is white and a has a border.
& {
@include transition(all .2s ease);
background: $color-table-background;
border: 1px solid $color-table-border;
border-bottom: 2px solid $color-table-border;
@ -96,19 +95,19 @@
//
&-row {
& {
padding: .75rem 1.25rem;
background: $color-table-background;
border: 1px solid $color-border;
border-top: 0;
border-bottom-width: 2px;
border-top: 0;
margin-bottom: .25rem;
padding: .75rem 1.25rem;
}
// Summary row for expandable rows.
&-summary {
line-height: 2.5rem;
padding: .75rem 1.25rem;
position: relative;
line-height: 2.5rem;
}
&-expandable {
@ -137,9 +136,9 @@
&-tabs {
background: $color-table-footer;
position: relative;
padding: 1rem 1.25rem;
height: 70px;
padding: 1rem 1.25rem;
position: relative;
}
}
}
@ -147,10 +146,10 @@
// Footer that typically contains an add-item-form.
&-header,
&-footer {
padding: .75rem 1.25rem;
background: $color-table-footer;
border: 1px solid $color-input;
border-bottom-width: 2px;
padding: .75rem 1.25rem;
}
&-header {

353
frontend/app/theme/_mixins.scss

@ -1,7 +1,7 @@
@mixin build-icon($color) {
& {
@include transition(color .3s ease);
color: $color;
transition: color .3s ease;
}
&:hover,
@ -12,9 +12,9 @@
@mixin build-toggle-button($color, $background) {
& {
color: $color;
border-color: $color;
background: $background;
border-color: $color;
color: $color;
z-index: 1000;
}
}
@ -26,12 +26,12 @@
&:disabled
&.disabled {
@include opacity(.4);
opacity: .4;
}
&:focus,
&.focus {
@include box-shadow-raw(0 0 0 $btn-focus-width rgba($color, .5));
box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);
}
&:active,
@ -42,8 +42,8 @@
@mixin scrollbars($size, $foreground-color, $background-color: mix($foreground-color, white, 50%)) {
&::-webkit-scrollbar {
width: $size;
height: $size;
width: $size;
}
&::-webkit-scrollbar-thumb {
@ -56,112 +56,40 @@
}
& {
scrollbar-color: $foreground-color $background-color;
scrollbar-face-color: $foreground-color;
scrollbar-track-color: $background-color;
scrollbar-color: $foreground-color $background-color;
scrollbar-width: thin;
}
}
@mixin clearfix() {
@mixin clearfix {
&::after {
content: '';
clear: both;
content: '';
display: table;
}
}
@mixin hidden() {
width: 0;
opacity: 0;
overflow: hidden;
position: absolute;
width: 0;
}
@mixin force-width($width) {
min-width: $width;
max-width: $width;
width: $width;
// Ensure that we use the minimum width in flex scenarios.
max-width: $width;
min-width: $width;
}
@mixin flex-box {
display: -webkit-box;
display: -webkit-flex;
display: -moz-flex;
display: -ms-flexbox;
display: flex;
}
@mixin flex-inline {
display: -webkit-inline-box;
display: -webkit-inline-flex;
display: -moz-inline-flex;
display: -ms-inline-flexbox;
display: inline-flex;
}
@mixin flex-direction($direction) {
-webkit-flex-direction: $direction;
-moz-flex-direction: $direction;
-ms-flex-direction: $direction;
flex-direction: $direction;
}
@mixin flex-flow($values: (row nowrap)) {
-webkit-flex-flow: $values;
-moz-flex-flow: $values;
-ms-flex-flow: $values;
flex-flow: $values;
}
@mixin flex-grow($int: 0) {
-webkit-box-flex: $int;
-webkit-flex-grow: $int;
-moz-flex-grow: $int;
-ms-flex-positive: $int;
flex-grow: $int;
}
@mixin flex-shrink($int: 0) {
-webkit-flex-shrink: $int;
-moz-flex-shrink: $int;
flex-shrink: $int;
}
@mixin inner-border($color: #999) {
-webkit-box-shadow: inset 1px 1px 1px $color;
-moz-box-shadow: inset 1px 1px 1px $color;
box-shadow: inset 1px 1px 1px $color;
}
@mixin no-selection() {
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
@mixin ellipsis() {
-o-text-overflow: ellipsis;
-ms-text-overflow: ellipsis;
text-overflow: ellipsis;
}
@mixin box-sizing($sizing: border-box) {
-webkit-box-sizing: $sizing;
-ms-box-sizing: $sizing;
-moz-box-sizing: $sizing;
box-sizing: $sizing;
}
@mixin border-box() {
-webkit-box-sizing: border-box;
-ms-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
@mixin force-height($height) {
height: $height;
// Ensure that we use the minimum width in flex scenarios.
max-height: $height;
min-height: $height;
}
@mixin caret-top($color, $size: .6rem) {
@ -188,28 +116,18 @@
border-top-color: $color;
}
@mixin caret() {
display: inline-block;
min-width: 0;
max-width: 0;
min-height: 0;
max-height: 0;
@mixin caret {
@include force-height(0);
@include force-width(0);
content: '';
display: inline-block;
}
@mixin circle($size) {
@include border-radius($size * .5);
min-height: $size;
max-height: $size;
min-width: $size;
max-width: $size;
}
@mixin wrap() {
-ms-word-break: normal;
word-break: normal;
-ms-word-wrap: break-word;
word-wrap: break-word;
@include force-height($size);
@include force-width($size);
display: inline-block;
}
@mixin placeholder-color($color) {
@ -223,12 +141,12 @@
&:-moz-placeholder {
color: $color;
@include opacity(1.0);
opacity: 1;
}
&::-moz-placeholder {
color: $color;
@include opacity(1.0);
opacity: 1;
}
&:-ms-input-placeholder {
@ -236,220 +154,71 @@
}
}
@mixin text-shadow($x-axis: 1px, $y-axis: 1px, $blur: 1px, $color: #000) {
-webkit-text-shadow: $x-axis $y-axis $blur $color;
text-shadow: $x-axis $y-axis $blur $color;
}
@mixin text-shadow-none() {
-webkit-text-shadow: none;
text-shadow: none;
}
@mixin box-shadow-none() {
-webkit-box-shadow: none;
-moz-box-shadow: none;
box-shadow: none;
}
@mixin box-shadow($x-axis: 0, $y-axis: 1px, $blur: 2px, $alpha: 0.1) {
-webkit-box-shadow: $x-axis $y-axis $blur rgba(0, 0, 0, $alpha);
-moz-box-shadow: $x-axis $y-axis $blur rgba(0, 0, 0, $alpha);
box-shadow: $x-axis $y-axis $blur rgba(0, 0, 0, $alpha);
}
@mixin box-shadow-colored($x-axis: 0, $y-axis: 1px, $blur: 2px, $color: #000) {
-webkit-box-shadow: $x-axis $y-axis $blur $color;
-moz-box-shadow: $x-axis $y-axis $blur $color;
box-shadow: $x-axis $y-axis $blur $color;
}
@mixin hover-visible($selector, $display: 'block') {
#{$selector} {
display: none;
}
@mixin box-shadow-inner($x-axis: 0, $y-axis: 1px, $blur: 2px, $alpha: 0.1) {
-webkit-box-shadow: inset $x-axis $y-axis $blur rgba(0, 0, 0, $alpha);
-moz-box-shadow: inset $x-axis $y-axis $blur rgba(0, 0, 0, $alpha);
box-shadow: inset $x-axis $y-axis $blur rgba(0, 0, 0, $alpha);
&:hover {
#{$selector} {
display: $display;
}
}
}
@mixin box-shadow-raw($shadows...) {
-webkit-box-shadow: $shadows;
-moz-box-shadow: $shadows;
box-shadow: $shadows;
@mixin box-shadow($x-axis: 0, $y-axis: 1px, $blur: 2px, $alpha: .1) {
box-shadow: $x-axis $y-axis $blur rgba(0, 0, 0, $alpha);
}
@mixin border-radius-clip() {
-webkit-background-clip: padding-box;
-moz-background-clip: padding;
background-clip: padding-box;
@mixin box-shadow-inner($x-axis: 0, $y-axis: 1px, $blur: 2px, $alpha: .1) {
box-shadow: inset $x-axis $y-axis $blur rgba(0, 0, 0, $alpha);
}
@mixin border-radius ($radius: 4px) {
-webkit-border-radius: $radius;
-moz-border-radius: $radius;
border-radius: $radius;
@include border-radius-clip;
}
@mixin border-radiusn($topright, $bottomright, $bottomleft, $topleft) {
-webkit-border-radius: $topright $bottomright $bottomleft $topleft;
-moz-border-radius: $topright $bottomright $bottomleft $topleft;
border-radius: $topright $bottomright $bottomleft $topleft;
@include border-radius-clip;
border-radius: $radius;
}
@mixin border-radius-left ($radius: 4px) {
-webkit-border-radius: $radius 0 0 $radius;
-moz-border-radius: $radius 0 0 $radius;
border-radius: $radius 0 0 $radius;
border-radius: $radius 0 0 $radius;
}
@mixin border-radius-right ($radius: 4px) {
-webkit-border-radius: 0 $radius $radius 0;
-moz-border-radius: 0 $radius $radius 0;
border-radius: 0 $radius $radius 0;
border-radius: 0 $radius $radius 0;
}
@mixin border-radius-bottom ($radius: 4px) {
-webkit-border-radius: 0 0 $radius $radius;
-moz-border-radius: 0 0 $radius $radius;
border-radius: 0 0 $radius $radius;
border-radius: 0 0 $radius $radius;
}
@mixin border-radius-top ($radius: 4px) {
-webkit-border-radius: $radius $radius 0 0;
-moz-border-radius: $radius $radius 0 0;
border-radius: $radius $radius 0 0;
}
@mixin keyframes($name) {
@-webkit-keyframes #{$name} {
@content;
}
@-moz-keyframes #{$name} {
@content;
}
@keyframes #{$name} {
@content;
}
@-ms-keyframes #{$name} {
@content;
}
}
@mixin animation($animation...) {
-webkit-animation: $animation;
-moz-animation: $animation;
-o-animation: $animation;
animation: $animation;
}
@mixin transition($transition...) {
-webkit-transition: $transition;
-moz-transition: $transition;
-o-transition: $transition;
transition: $transition;
}
@mixin transition-delay($transition-delay...) {
-webkit-transition-delay: $transition-delay;
-moz-transition-delay: $transition-delay;
-o-transition-delay: $transition-delay;
transition-delay: $transition-delay;
}
@mixin transition-duration($transition-duration...) {
-webkit-transition-duration: $transition-duration;
-moz-transition-duration: $transition-duration;
-o-transition-duration: $transition-duration;
transition-duration: $transition-duration;
}
@mixin rotate($degrees) {
-webkit-transform: rotate($degrees);
-moz-transform: rotate($degrees);
-ms-transform: rotate($degrees);
-o-transform: rotate($degrees);
transform: rotate($degrees);
}
@mixin scale($ratio) {
-webkit-transform: scale($ratio);
-moz-transform: scale($ratio);
-ms-transform: scale($ratio);
-o-transform: scale($ratio);
transform: scale($ratio);
border-radius: $radius $radius 0 0;
}
@mixin translate($x, $y) {
-webkit-transform: translate($x, $y);
-moz-transform: translate($x, $y);
-ms-transform: translate($x, $y);
-o-transform: translate($x, $y);
transform: translate($x, $y);
@mixin position($t: null, $r: null, $b: null, $l: null) {
bottom: $b; left: $l; right: $r; top: $t;
}
@mixin skew($x, $y) {
-webkit-transform: skew($x, $y);
-moz-transform: skew($x, $y);
-ms-transform: skewX($x) skewY($y);
-o-transform: skew($x, $y);
transform: skew($x, $y);
-webkit-backface-visibility: hidden;
-moz-backface-visibility: hidden;
backface-visibility: hidden;
}
@mixin translate3d($x, $y, $z) {
-webkit-transform: translate3d($x, $y, $z);
-moz-transform: translate3d($x, $y, $z);
-ms-transform: translate3d($x, $y, $z);
-o-transform: translate3d($x, $y, $z);
transform: translate3d($x, $y, $z);
}
@mixin absolute($top, $right, $bottom, $left) {
top: $top;
left: $left;
right: $right;
bottom: $bottom;
@mixin absolute($t: null, $r: null, $b: null, $l: null) {
@include position($t, $r, $b, $l);
position: absolute;
}
@mixin fixed($top, $right, $bottom, $left) {
top: $top;
left: $left;
right: $right;
bottom: $bottom;
@mixin fixed($t: null, $r: null, $b: null, $l: null) {
@include position($t, $r, $b, $l);
position: fixed;
}
@mixin opacity($value) {
$opacityPercentage: $value * 100;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=$opacityPercentage)";
-moz-opacity: $value;
-khtml-opacity: $value;
opacity: $value;
filter: alpha(opacity=$opacityPercentage);
}
@mixin truncate-nowidth() {
@include ellipsis;
display: block;
@mixin truncate-nowidth {
display: block;
overflow-x: hidden;
overflow-y: hidden;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
@mixin truncate() {
@mixin truncate {
@include truncate-nowidth;
width: auto;
min-width: 0;
max-width: 100%;
}
@mixin gradient($stop: #EEE, $start: #FFF) {
background: $start;
background: -webkit-gradient(linear, left bottom, left top, color-stop(0, $start), color-stop(1, $stop));
background: -ms-linear-gradient(bottom, $start, $stop);
background: -moz-linear-gradient(center bottom, $start 0%, $stop 100%);
background: -o-linear-gradient($stop, $start);
}
min-width: 0;
width: auto;
}

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save