Browse Source

Left side bar

pull/1/head
Sebastian 9 years ago
parent
commit
589fcbf37f
  1. BIN
      src/Squidex/app-libs/icomoon/fonts/icomoon.eot
  2. 5
      src/Squidex/app-libs/icomoon/fonts/icomoon.svg
  3. BIN
      src/Squidex/app-libs/icomoon/fonts/icomoon.ttf
  4. BIN
      src/Squidex/app-libs/icomoon/fonts/icomoon.woff
  5. 161
      src/Squidex/app-libs/icomoon/selection.json
  6. 25
      src/Squidex/app-libs/icomoon/style.css
  7. 15
      src/Squidex/app/app.routes.ts
  8. 10
      src/Squidex/app/components/internal/app/dashboard/dashboard-page.component.html
  9. 6
      src/Squidex/app/components/internal/app/dashboard/dashboard-page.component.scss
  10. 21
      src/Squidex/app/components/internal/app/dashboard/dashboard-page.component.ts
  11. 26
      src/Squidex/app/components/internal/app/left-menu.component.html
  12. 75
      src/Squidex/app/components/internal/app/left-menu.component.scss
  13. 15
      src/Squidex/app/components/internal/app/left-menu.component.ts
  14. 12
      src/Squidex/app/components/internal/app/schemas/schemas-page.component.html
  15. 6
      src/Squidex/app/components/internal/app/schemas/schemas-page.component.scss
  16. 39
      src/Squidex/app/components/internal/app/schemas/schemas-page.component.ts
  17. 2
      src/Squidex/app/components/internal/declarations.ts
  18. 4
      src/Squidex/app/components/internal/internal-area.component.html
  19. 4
      src/Squidex/app/components/internal/internal-area.component.scss
  20. 15
      src/Squidex/app/components/internal/module.ts
  21. 12
      src/Squidex/app/components/layout/apps-menu.component.scss
  22. 8
      src/Squidex/app/components/layout/apps-menu.component.ts
  23. 12
      src/Squidex/app/components/layout/profile-menu.component.scss
  24. 2
      src/Squidex/app/components/layout/profile-menu.component.ts
  25. 8
      src/Squidex/app/components/layout/search-form.component.scss
  26. 3
      src/Squidex/app/components/public/home-page.component.scss
  27. 14
      src/Squidex/app/theme/_bootstrap.scss
  28. 55
      src/Squidex/app/theme/_layout.scss
  29. 34
      src/Squidex/app/theme/_vars.scss
  30. 4
      src/Squidex/app/theme/_vendor-overrides.scss

BIN
src/Squidex/app-libs/icomoon/fonts/icomoon.eot

Binary file not shown.

5
src/Squidex/app-libs/icomoon/fonts/icomoon.svg

@ -9,4 +9,9 @@
<glyph unicode="&#x20;" horiz-adv-x="512" d="" />
<glyph unicode="&#xe900;" glyph-name="logo" d="M512.34 939.52c-0.174-0.065-226.41-96.5-283.902-294.74-5.545-19.035 40.453-10.673 38.399-31.6-2.517-25.409-55.264-35.821-48.385-108.78 7.001-74.289 74.617-149.342 84.791-194.72v-31.78c-0.615-9.802-5.639-36.405-22.285-49.4-9.13-7.105-21.442-9.661-37.671-7.78-22.528 2.612-31.493 16.604-35.078 27.9-5.881 18.616-0.409 40.331 12.793 50.52 13.271 10.243 15.084 28.513 4.029 40.82-11.055 12.296-30.785 13.965-44.056 3.7-32.168-24.839-45.65-70.615-32.785-111.34 12.146-38.328 44.789-64.147 87.363-69.080 6.067-0.699 11.848-1.040 17.335-1.040 32.945 0 55.27 11.669 68.785 22.32 40.671 32.105 43.867 85.623 44.099 91.62 0.011 0.355 0.022 0.705 0.022 1.060v24.36h0.129v1.64c0 14.177 12.394 25.66 27.707 25.66 14.869 0 26.889-10.843 27.578-24.46v-232.2c-0.255-3.343-3.155-34.297-22.157-49.28-9.118-7.201-21.512-9.802-37.799-7.9-22.54 2.612-31.526 16.605-35.099 27.88-5.893 18.627-0.387 40.341 12.814 50.52 13.271 10.254 15.062 28.523 4.007 40.84-11.044 12.274-30.764 13.945-44.035 3.68-32.191-24.828-45.65-70.615-32.785-111.34 12.122-38.328 44.789-64.136 87.363-69.080 6.067-0.699 11.848-1.040 17.335-1.040 32.945 0 55.262 11.669 68.742 22.32 40.683 32.105 43.879 85.623 44.099 91.62 0.024 0.376 0.042 0.696 0.042 1.040v259l0.129 0.060v1.14c0 14.456 12.65 26.18 28.264 26.18 15.288 0 27.657-11.292 28.135-25.36v-261.020c0-0.355-0.002-0.675 0.022-1.040 0.232-5.987 3.438-59.515 44.121-91.62 13.504-10.652 35.819-22.32 68.764-22.32 5.499 0 11.258 0.341 17.314 1.040 42.562 4.944 75.24 30.763 87.363 69.080 12.876 40.725-0.584 86.501-32.764 111.34-13.294 10.265-33.013 8.584-44.056-3.68-11.055-12.328-9.264-30.586 4.007-40.84 13.201-10.179 18.697-31.893 12.793-50.52-3.561-11.275-12.55-25.268-35.078-27.88-16.217-1.892-28.531 0.675-37.649 7.78-16.716 13.038-21.715 39.783-22.307 49.36v231.8c0.445 13.816 12.612 24.9 27.642 24.9 15.313 0 27.707-11.472 27.707-25.66v-1.64h0.085v-24.36c0-0.365-0.002-0.716 0.022-1.060 0.22-5.987 3.438-59.515 44.121-91.62 13.503-10.651 35.818-22.32 68.763-22.32 5.487 0 11.259 0.332 17.314 1.020 42.562 4.933 75.24 30.783 87.363 69.1 12.876 40.725-0.606 86.49-32.785 111.34-13.294 10.254-33.003 8.576-44.035-3.72-11.067-12.307-9.285-30.557 3.986-40.8 13.201-10.189 18.719-31.904 12.814-50.52-3.561-11.296-12.571-25.299-35.099-27.9-16.194-1.892-28.51 0.686-37.628 7.78-16.716 13.048-21.727 39.785-22.307 49.34v24.24c6.634 62.066 78.084 123.637 85.499 202.32 6.844 72.959-45.943 83.371-48.449 108.78-2.065 20.927 43.943 12.565 38.421 31.6-57.503 198.24-283.718 294.675-283.88 294.74z" />
<glyph unicode="&#xe901;" glyph-name="plus" d="M810 384.667h-256v-256h-84v256h-256v84h256v256h84v-256h256v-84z" />
<glyph unicode="&#xe90e;" glyph-name="media" horiz-adv-x="1152" d="M1088 832h-64v64c0 35.2-28.8 64-64 64h-896c-35.2 0-64-28.8-64-64v-768c0-35.2 28.8-64 64-64h64v-64c0-35.2 28.8-64 64-64h896c35.2 0 64 28.8 64 64v768c0 35.2-28.8 64-64 64zM128 768v-640h-63.886c-0.040 0.034-0.082 0.076-0.114 0.116v767.77c0.034 0.040 0.076 0.082 0.114 0.114h895.77c0.040-0.034 0.082-0.076 0.116-0.116v-63.884h-768c-35.2 0-64-28.8-64-64v0zM1088 0.116c-0.034-0.040-0.076-0.082-0.116-0.116h-895.77c-0.040 0.034-0.082 0.076-0.114 0.116v767.77c0.034 0.040 0.076 0.082 0.114 0.114h895.77c0.040-0.034 0.082-0.076 0.116-0.116v-767.768zM960 608c0-53.020-42.98-96-96-96s-96 42.98-96 96 42.98 96 96 96 96-42.98 96-96zM1024 64h-768v128l224 384 256-320h64l224 192z" />
<glyph unicode="&#xe925;" glyph-name="content" d="M917.806 602.924c-22.21 30.292-53.174 65.7-87.178 99.704s-69.412 64.964-99.704 87.178c-51.574 37.82-76.592 42.194-90.924 42.194h-368c-44.114 0-80-35.888-80-80v-736c0-44.112 35.886-80 80-80h608c44.112 0 80 35.888 80 80v496c0 14.332-4.372 39.35-42.194 90.924zM785.374 657.374c30.7-30.7 54.8-58.398 72.58-81.374h-153.954v153.946c22.982-17.78 50.678-41.878 81.374-72.572v0zM896 16c0-8.672-7.328-16-16-16h-608c-8.672 0-16 7.328-16 16v736c0 8.672 7.328 16 16 16 0 0 367.956 0.002 368 0v-224c0-17.672 14.324-32 32-32h224v-496zM602.924 917.804c-51.574 37.822-76.592 42.196-90.924 42.196h-368c-44.112 0-80-35.888-80-80v-736c0-38.632 27.528-70.958 64-78.39v814.39c0 8.672 7.328 16 16 16h486.876c-9.646 7.92-19.028 15.26-27.952 21.804z" />
<glyph unicode="&#xe92e;" glyph-name="schemas" d="M1024 640l-512 256-512-256 512-256 512 256zM512 811.030l342.058-171.030-342.058-171.030-342.058 171.030 342.058 171.030zM921.444 499.278l102.556-51.278-512-256-512 256 102.556 51.278 409.444-204.722zM921.444 307.278l102.556-51.278-512-256-512 256 102.556 51.278 409.444-204.722z" />
<glyph unicode="&#xe994;" glyph-name="settings" d="M933.79 349.75c-53.726 93.054-21.416 212.304 72.152 266.488l-100.626 174.292c-28.75-16.854-62.176-26.518-97.846-26.518-107.536 0-194.708 87.746-194.708 195.99h-201.258c0.266-33.41-8.074-67.282-25.958-98.252-53.724-93.056-173.156-124.702-266.862-70.758l-100.624-174.292c28.97-16.472 54.050-40.588 71.886-71.478 53.638-92.908 21.512-211.92-71.708-266.224l100.626-174.292c28.65 16.696 61.916 26.254 97.4 26.254 107.196 0 194.144-87.192 194.7-194.958h201.254c-0.086 33.074 8.272 66.57 25.966 97.218 53.636 92.906 172.776 124.594 266.414 71.012l100.626 174.29c-28.78 16.466-53.692 40.498-71.434 71.228zM512 240.668c-114.508 0-207.336 92.824-207.336 207.334 0 114.508 92.826 207.334 207.336 207.334 114.508 0 207.332-92.826 207.332-207.334-0.002-114.51-92.824-207.334-207.332-207.334z" />
<glyph unicode="&#xe9a6;" glyph-name="dashboard" d="M512 896c282.77 0 512-229.23 512-512 0-192.792-106.576-360.666-264.008-448h-495.984c-157.432 87.334-264.008 255.208-264.008 448 0 282.77 229.23 512 512 512zM801.914 94.086c77.438 77.44 120.086 180.398 120.086 289.914h-90v64h85.038c-7.014 44.998-21.39 88.146-42.564 128h-106.474v64h64.284c-9.438 11.762-19.552 23.096-30.37 33.914-46.222 46.22-101.54 80.038-161.914 99.798v-69.712h-64v85.040c-20.982 3.268-42.36 4.96-64 4.96s-43.018-1.69-64-4.96v-85.040h-64v69.712c-60.372-19.76-115.692-53.576-161.914-99.798-10.818-10.818-20.932-22.152-30.37-33.914h64.284v-64h-106.476c-21.174-39.854-35.552-83.002-42.564-128h85.040v-64h-90c0-109.516 42.648-212.474 120.086-289.914 10.71-10.71 21.924-20.728 33.56-30.086h192.354l36.572 512h54.856l36.572-512h192.354c11.636 9.358 22.852 19.378 33.56 30.086z" />
</font></defs></svg>

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB

BIN
src/Squidex/app-libs/icomoon/fonts/icomoon.ttf

Binary file not shown.

BIN
src/Squidex/app-libs/icomoon/fonts/icomoon.woff

Binary file not shown.

161
src/Squidex/app-libs/icomoon/selection.json

@ -1,6 +1,163 @@
{
"IcoMoonType": "selection",
"icons": [
{
"icon": {
"paths": [
"M1088 128h-64v-64c0-35.2-28.8-64-64-64h-896c-35.2 0-64 28.8-64 64v768c0 35.2 28.8 64 64 64h64v64c0 35.2 28.8 64 64 64h896c35.2 0 64-28.8 64-64v-768c0-35.2-28.8-64-64-64zM128 192v640h-63.886c-0.040-0.034-0.082-0.076-0.114-0.116v-767.77c0.034-0.040 0.076-0.082 0.114-0.114h895.77c0.040 0.034 0.082 0.076 0.116 0.116v63.884h-768c-35.2 0-64 28.8-64 64v0zM1088 959.884c-0.034 0.040-0.076 0.082-0.116 0.116h-895.77c-0.040-0.034-0.082-0.076-0.114-0.116v-767.77c0.034-0.040 0.076-0.082 0.114-0.114h895.77c0.040 0.034 0.082 0.076 0.116 0.116v767.768z",
"M960 352c0 53.020-42.98 96-96 96s-96-42.98-96-96 42.98-96 96-96 96 42.98 96 96z",
"M1024 896h-768v-128l224-384 256 320h64l224-192z"
],
"width": 1152,
"attrs": [],
"isMulticolor": false,
"isMulticolor2": false,
"tags": [
"images",
"pictures",
"photos",
"graphics"
],
"defaultCode": 59662,
"grid": 16
},
"attrs": [],
"properties": {
"ligatures": "images, pictures",
"name": "media",
"id": 14,
"order": 4,
"prevSize": 32,
"code": 59662
},
"setIdx": 0,
"setId": 2,
"iconIdx": 14
},
{
"icon": {
"paths": [
"M917.806 357.076c-22.21-30.292-53.174-65.7-87.178-99.704s-69.412-64.964-99.704-87.178c-51.574-37.82-76.592-42.194-90.924-42.194h-368c-44.114 0-80 35.888-80 80v736c0 44.112 35.886 80 80 80h608c44.112 0 80-35.888 80-80v-496c0-14.332-4.372-39.35-42.194-90.924zM785.374 302.626c30.7 30.7 54.8 58.398 72.58 81.374h-153.954v-153.946c22.982 17.78 50.678 41.878 81.374 72.572v0zM896 944c0 8.672-7.328 16-16 16h-608c-8.672 0-16-7.328-16-16v-736c0-8.672 7.328-16 16-16 0 0 367.956-0.002 368 0v224c0 17.672 14.324 32 32 32h224v496z",
"M602.924 42.196c-51.574-37.822-76.592-42.196-90.924-42.196h-368c-44.112 0-80 35.888-80 80v736c0 38.632 27.528 70.958 64 78.39v-814.39c0-8.672 7.328-16 16-16h486.876c-9.646-7.92-19.028-15.26-27.952-21.804z"
],
"attrs": [],
"isMulticolor": false,
"isMulticolor2": false,
"tags": [
"files-empty",
"files",
"documents",
"papers",
"pages"
],
"defaultCode": 59685,
"grid": 16
},
"attrs": [],
"properties": {
"ligatures": "files-empty, files",
"name": "content",
"id": 37,
"order": 5,
"prevSize": 32,
"code": 59685
},
"setIdx": 0,
"setId": 2,
"iconIdx": 37
},
{
"icon": {
"paths": [
"M1024 320l-512-256-512 256 512 256 512-256zM512 148.97l342.058 171.030-342.058 171.030-342.058-171.030 342.058-171.030zM921.444 460.722l102.556 51.278-512 256-512-256 102.556-51.278 409.444 204.722zM921.444 652.722l102.556 51.278-512 256-512-256 102.556-51.278 409.444 204.722z"
],
"attrs": [],
"isMulticolor": false,
"isMulticolor2": false,
"tags": [
"stack",
"layers"
],
"defaultCode": 59694,
"grid": 16
},
"attrs": [],
"properties": {
"ligatures": "stack, layers",
"name": "schemas",
"id": 46,
"order": 8,
"prevSize": 32,
"code": 59694
},
"setIdx": 0,
"setId": 2,
"iconIdx": 46
},
{
"icon": {
"paths": [
"M933.79 610.25c-53.726-93.054-21.416-212.304 72.152-266.488l-100.626-174.292c-28.75 16.854-62.176 26.518-97.846 26.518-107.536 0-194.708-87.746-194.708-195.99h-201.258c0.266 33.41-8.074 67.282-25.958 98.252-53.724 93.056-173.156 124.702-266.862 70.758l-100.624 174.292c28.97 16.472 54.050 40.588 71.886 71.478 53.638 92.908 21.512 211.92-71.708 266.224l100.626 174.292c28.65-16.696 61.916-26.254 97.4-26.254 107.196 0 194.144 87.192 194.7 194.958h201.254c-0.086-33.074 8.272-66.57 25.966-97.218 53.636-92.906 172.776-124.594 266.414-71.012l100.626-174.29c-28.78-16.466-53.692-40.498-71.434-71.228zM512 719.332c-114.508 0-207.336-92.824-207.336-207.334 0-114.508 92.826-207.334 207.336-207.334 114.508 0 207.332 92.826 207.332 207.334-0.002 114.51-92.824 207.334-207.332 207.334z"
],
"attrs": [],
"isMulticolor": false,
"isMulticolor2": false,
"tags": [
"cog",
"gear",
"preferences",
"settings",
"generate",
"control",
"options"
],
"defaultCode": 59796,
"grid": 16
},
"attrs": [],
"properties": {
"ligatures": "cog, gear",
"name": "settings",
"id": 148,
"order": 6,
"prevSize": 32,
"code": 59796
},
"setIdx": 0,
"setId": 2,
"iconIdx": 148
},
{
"icon": {
"paths": [
"M512 64c282.77 0 512 229.23 512 512 0 192.792-106.576 360.666-264.008 448h-495.984c-157.432-87.334-264.008-255.208-264.008-448 0-282.77 229.23-512 512-512zM801.914 865.914c77.438-77.44 120.086-180.398 120.086-289.914h-90v-64h85.038c-7.014-44.998-21.39-88.146-42.564-128h-106.474v-64h64.284c-9.438-11.762-19.552-23.096-30.37-33.914-46.222-46.22-101.54-80.038-161.914-99.798v69.712h-64v-85.040c-20.982-3.268-42.36-4.96-64-4.96s-43.018 1.69-64 4.96v85.040h-64v-69.712c-60.372 19.76-115.692 53.576-161.914 99.798-10.818 10.818-20.932 22.152-30.37 33.914h64.284v64h-106.476c-21.174 39.854-35.552 83.002-42.564 128h85.040v64h-90c0 109.516 42.648 212.474 120.086 289.914 10.71 10.71 21.924 20.728 33.56 30.086h192.354l36.572-512h54.856l36.572 512h192.354c11.636-9.358 22.852-19.378 33.56-30.086z"
],
"attrs": [],
"isMulticolor": false,
"isMulticolor2": false,
"tags": [
"meter",
"gauge",
"dashboard",
"speedometer",
"performance"
],
"defaultCode": 59814,
"grid": 16
},
"attrs": [],
"properties": {
"ligatures": "meter, gauge",
"name": "dashboard",
"id": 166,
"order": 7,
"prevSize": 32,
"code": 59814
},
"setIdx": 0,
"setId": 2,
"iconIdx": 166
},
{
"icon": {
"paths": [
@ -26,7 +183,7 @@
"code": 59649,
"name": "plus"
},
"setIdx": 0,
"setIdx": 1,
"setId": 1,
"iconIdx": 0
},
@ -59,7 +216,7 @@
"prevSize": 32,
"code": 59648
},
"setIdx": 1,
"setIdx": 2,
"setId": 0,
"iconIdx": 0
}

25
src/Squidex/app-libs/icomoon/style.css

@ -1,10 +1,10 @@
@font-face {
font-family: 'icomoon';
src: url('fonts/icomoon.eot?gn3a4m');
src: url('fonts/icomoon.eot?gn3a4m#iefix') format('embedded-opentype'),
url('fonts/icomoon.ttf?gn3a4m') format('truetype'),
url('fonts/icomoon.woff?gn3a4m') format('woff'),
url('fonts/icomoon.svg?gn3a4m#icomoon') format('svg');
src: url('fonts/icomoon.eot?vsixlk');
src: url('fonts/icomoon.eot?vsixlk#iefix') format('embedded-opentype'),
url('fonts/icomoon.ttf?vsixlk') format('truetype'),
url('fonts/icomoon.woff?vsixlk') format('woff'),
url('fonts/icomoon.svg?vsixlk#icomoon') format('svg');
font-weight: normal;
font-style: normal;
}
@ -24,6 +24,21 @@
-moz-osx-font-smoothing: grayscale;
}
.icon-media:before {
content: "\e90e";
}
.icon-content:before {
content: "\e925";
}
.icon-schemas:before {
content: "\e92e";
}
.icon-settings:before {
content: "\e994";
}
.icon-dashboard:before {
content: "\e9a6";
}
.icon-plus:before {
content: "\e901";
}

15
src/Squidex/app/app.routes.ts

@ -11,11 +11,12 @@ import * as Ng2Router from '@angular/router';
import {
AppsPageComponent,
AppAreaComponent,
DashboardComponent,
DashboardPageComponent,
InternalAreaComponent,
HomePageComponent,
LogoutPageComponent,
NotFoundPageComponent
NotFoundPageComponent,
SchemasPageComponent
} from './components';
import {
@ -46,7 +47,15 @@ export const routes: Ng2Router.Routes = [
children: [
{
path: '',
component: DashboardComponent
redirectTo: 'dashboard'
},
{
path: 'dashboard',
component: DashboardPageComponent
},
{
path: 'schemas',
component: SchemasPageComponent
}
]
}

10
src/Squidex/app/components/internal/app/dashboard/dashboard-page.component.html

@ -0,0 +1,10 @@
<div class="layout-content">
<div class="layout-content-left layout-content-left--no-button">
<sqx-left-menu></sqx-left-menu>
</div>
<div class="layout-content-main">
<h1>
<i class="layout-title-icon icon-dashboard"></i> Dashboard
</h1>
</div>
</div>

6
src/Squidex/app/components/internal/app/dashboard/dashboard-page.component.scss

@ -0,0 +1,6 @@
@import '_vars';
@import '_mixins';
.layout-title-icon {
color: $color-section-dashboard;
}

21
src/Squidex/app/components/internal/app/dashboard/dashboard-page.component.ts

@ -6,25 +6,34 @@
*/
import * as Ng2 from '@angular/core';
import * as Ng2Router from '@angular/router';
import { TitleService } from 'shared';
import { AppsStoreService, TitleService } from 'shared';
@Ng2.Component({
selector: 'sqx-dashboard-page',
styles,
template
})
export class DashboardComponent implements Ng2.OnInit {
export class DashboardPageComponent implements Ng2.OnInit {
private appSubscription: any | null = null;
constructor(
private readonly titles: TitleService,
private readonly route: Ng2Router.ActivatedRoute
private readonly appsStore: AppsStoreService
) {
}
public ngOnInit() {
const appName = this.route.snapshot.params['appName'];
this.appSubscription =
this.appsStore.selectedApp.subscribe(app => {
if (app) {
this.titles.setTitle('{appName} | Dashboard', { appName: app.name });
}
});
}
this.titles.setTitle('{appName} | Dashboard', { appName: appName });
public ngOnDestroy() {
this.appSubscription.unsubscribe();
}
}

26
src/Squidex/app/components/internal/app/left-menu.component.html

@ -0,0 +1,26 @@
<ul class="nav">
<li class="nav-item">
<a class="nav-link nav-link--dashboard" routerLink="../dashboard" routerLinkActive="active">
<i class="icon-dashboard"></i> Dashboard
</a>
</li>
<li class="nav-item">
<a class="nav-link nav-link--schemas" routerLink="../schemas" routerLinkActive="active">
<i class="icon-schemas"></i> Schemas
</a>
</li>
<li class="nav-item">
<a class="nav-link nav-link--content">
<i class="icon-content"></i> Content
</a>
</li>
<li class="nav-item">
<a class="nav-link nav-link--media">
<i class="icon-media"></i> Media</a>
</li>
<li class="nav-item">
<a class="nav-link nav-link--settings">
<i class="icon-settings"></i> Settings
</a>
</li>
</ul>

75
src/Squidex/app/components/internal/app/left-menu.component.scss

@ -0,0 +1,75 @@
@import '_vars';
@import '_mixins';
$color-selection-background: #ebf0f2;
$color-border-left-width: 4px;
@mixin build-item($color) {
&:hover,
&.active {
border-color: $color;
}
& i {
color: $color;
}
}
.nav {
& {
list-style: none;
padding: 0;
margin-top: 60px;
margin-left: -$padding-layout - 1px;
margin-right: -$padding-layout;
}
&-link {
& {
@include transition(background .2s ease);
border-left: $color-border-left-width solid transparent;
color: $color-text;
cursor: pointer;
display: block;
font-size: 1rem;
font-weight: 450;
line-height: 3rem;
padding-left: $padding-layout - $color-border-left-width;
padding-right: $padding-layout;
}
&.active {
font-weight: bold;
}
&:hover {
text-decoration: none;
}
&:hover,
&.active {
background: $color-selection-background;
}
&--media {
@include build-item($color-section-media);
}
&--content {
@include build-item($color-section-content);
}
&--dashboard {
@include build-item($color-section-dashboard);
}
&--schemas {
@include build-item($color-section-schemas);
}
&--settings {
@include build-item($color-section-settings);
}
}
}

15
src/Squidex/app/components/internal/app/left-menu.component.ts

@ -0,0 +1,15 @@
/*
* Squidex Headless CMS
*
* @license
* Copyright (c) Sebastian Stehle. All rights reserved
*/
import * as Ng2 from '@angular/core';
@Ng2.Component({
selector: 'sqx-left-menu',
styles,
template
})
export class LeftMenuComponent { }

12
src/Squidex/app/components/internal/app/schemas/schemas-page.component.html

@ -0,0 +1,12 @@
<div class="layout-content">
<div class="layout-content-left">
<button class="layout-new-button btn btn-success">Create Schema</button>
<sqx-left-menu></sqx-left-menu>
</div>
<div class="layout-content-main">
<h1>
<i class="layout-title-icon icon-schemas"></i> Schemas
</h1>
</div>
</div>

6
src/Squidex/app/components/internal/app/schemas/schemas-page.component.scss

@ -0,0 +1,6 @@
@import '_vars';
@import '_mixins';
.layout-title-icon {
color: $color-section-schemas;
}

39
src/Squidex/app/components/internal/app/schemas/schemas-page.component.ts

@ -0,0 +1,39 @@
/*
* Squidex Headless CMS
*
* @license
* Copyright (c) Sebastian Stehle. All rights reserved
*/
import * as Ng2 from '@angular/core';
import { AppsStoreService, TitleService } from 'shared';
@Ng2.Component({
selector: 'sqx-schemas-page',
styles,
template
})
export class SchemasPageComponent implements Ng2.OnInit {
private appSubscription: any | null = null;
constructor(
private readonly titles: TitleService,
private readonly appsStore: AppsStoreService
) {
}
public ngOnInit() {
this.appSubscription =
this.appsStore.selectedApp.subscribe(app => {
if (app) {
this.titles.setTitle('{appName} | Schemas', { appName: app.name });
}
});
}
public ngOnDestroy() {
this.appSubscription.unsubscribe();
}
}

2
src/Squidex/app/components/internal/declarations.ts

@ -7,6 +7,8 @@
export * from './apps/apps-page.component';
export * from './app/app-area.component';
export * from './app/left-menu.component';
export * from './app/dashboard/dashboard-page.component';
export * from './app/schemas/schemas-page.component';
export * from './internal-area.component';

4
src/Squidex/app/components/internal/internal-area.component.html

@ -16,6 +16,4 @@
</div>
</nav>
<div class="container">
<router-outlet></router-outlet>
</div>
<router-outlet></router-outlet>

4
src/Squidex/app/components/internal/internal-area.component.scss

@ -16,7 +16,3 @@
.search-form {
margin-left: 15px;
}
.container {
margin-top: 54px;
}

15
src/Squidex/app/components/internal/module.ts

@ -13,8 +13,10 @@ import { SqxLayoutModule } from 'components/layout';
import {
AppAreaComponent,
AppsPageComponent,
DashboardComponent,
InternalAreaComponent
DashboardPageComponent,
InternalAreaComponent,
LeftMenuComponent,
SchemasPageComponent
} from './declarations';
@Ng2.NgModule({
@ -22,11 +24,16 @@ import {
SqxFrameworkModule,
SqxLayoutModule
],
exports: [
LeftMenuComponent
],
declarations: [
AppAreaComponent,
AppsPageComponent,
DashboardComponent,
InternalAreaComponent
DashboardPageComponent,
InternalAreaComponent,
LeftMenuComponent,
SchemasPageComponent
]
})
export class SqxAppModule { }

12
src/Squidex/app/components/layout/apps-menu.component.scss

@ -4,7 +4,7 @@
.navbar-dark {
.navbar-nav {
.nav-link {
color: $accent-dark;
color: $color-accent-dark;
}
}
}
@ -24,7 +24,7 @@
&::before {
@include absolute(-18px, auto, auto, 10px);
border-color: transparent transparent $accent-dark;
border-color: transparent transparent $color-accent-dark;
border-style: solid;
border-width: 10px;
content: '';
@ -44,9 +44,9 @@
&-pill {
@include absolute(6px, 10px, auto, auto);
background: $theme-blue-lighter;
background: $color-theme-blue-lighter;
border: 0;
color: $theme-blue;
color: $color-theme-blue;
}
}
@ -57,7 +57,7 @@
@include no-selection;
padding-right: 15px;
cursor: pointer;
color: $accent-dark;
color: $color-accent-dark;
width: 200px;
}
@ -67,6 +67,6 @@
&::after {
@include absolute(50%, 0, auto, auto);
color: $theme-blue-light;
color: $color-theme-blue-light;
}
}

8
src/Squidex/app/components/layout/apps-menu.component.ts

@ -26,8 +26,8 @@ const FALLBACK_NAME = 'Apps Overview';
]
})
export class AppsMenuComponent implements Ng2.OnInit, Ng2.OnDestroy {
private appsSubscription: any | null;
private appNameSubscription: any | null;
private appsSubscription: any | null = null;
private appSubscription: any | null = null;
public modalMenu = new ModalView(false, true);
public modalDialog = new ModalView();
@ -49,13 +49,13 @@ export class AppsMenuComponent implements Ng2.OnInit, Ng2.OnDestroy {
this.apps = apps || [];
});
this.appNameSubscription =
this.appSubscription =
this.appsStore.selectedApp.subscribe(selectedApp => this.appName = selectedApp ? selectedApp.name : FALLBACK_NAME);
}
public ngOnDestroy() {
this.appsSubscription.unsubscribe();
this.appNameSubscription.unsubscribe();
this.appSubscription.unsubscribe();
}
public onAppCreationCancelled() {

12
src/Squidex/app/components/layout/profile-menu.component.scss

@ -1,16 +1,16 @@
@import '_mixins';
@import '_vars';
$size: 2.2rem;
$size-avatar: 2.2rem;
a {
cursor: pointer;
}
img {
@include border-radius($size * .5);
height: $size;
width: $size;
@include border-radius($size-avatar * .5);
height: $size-avatar;
width: $size-avatar;
}
.navbar-nav {
@ -18,7 +18,7 @@ img {
@include no-selection;
padding: 0;
cursor: pointer;
color: $accent-dark;
color: $color-accent-dark;
line-height: 2.2rem;
}
}
@ -30,7 +30,7 @@ img {
&::before {
@include absolute(-18px, 10px, auto, auto);
border-color: transparent transparent $accent-dark;
border-color: transparent transparent $color-accent-dark;
border-style: solid;
border-width: 10px;
content: '';

2
src/Squidex/app/components/layout/profile-menu.component.ts

@ -22,7 +22,7 @@ import {
]
})
export class ProfileMenuComponent implements Ng2.OnInit, Ng2.OnDestroy {
private authenticationSubscription: any | null;
private authenticationSubscription: any | null = null;
public modalMenu = new ModalView(false, true);

8
src/Squidex/app/components/layout/search-form.component.scss

@ -4,13 +4,13 @@
.search-control {
& {
@include transition(background .4s ease);
background: $theme-blue-dark;
border-color: $theme-blue-dark;
background: $color-theme-blue-dark;
border-color: $color-theme-blue-dark;
border-width: 1px;
color: $accent-dark;
color: $color-accent-dark;
}
&:focus {
background: darken($theme-blue-dark, 5%);
background: darken($color-theme-blue-dark, 5%);
}
}

3
src/Squidex/app/components/public/home-page.component.scss

@ -1,3 +1,6 @@
@import '_mixins';
@import '_vars';
.content {
margin: 100px auto;
max-width: 500px;

14
src/Squidex/app/theme/_bootstrap.scss

@ -8,22 +8,22 @@
.form-error {
@include border-radius(3px);
@include truncate;
color: $accent-dark;
color: $color-accent-dark;
margin-top: 4px;
margin-bottom: 10px;
padding: 6px;
background: $theme-error;
background: $color-theme-error;
}
.ng-invalid {
&.ng-dirty {
& {
border-color: $theme-error;
border-color: $color-theme-error;
}
&:hover,
&:focus {
border-color: $theme-error-dark;
border-color: $color-theme-error-dark;
}
}
}
@ -39,20 +39,20 @@
height: 0;
border-style: solid;
border-width: .4rem;
border-color: $theme-error transparent transparent;
border-color: $color-theme-error transparent transparent;
width: 0;
}
& {
@include absolute(-2.4rem, 0, auto, 0);
@include border-radius(2px);
color: $accent-dark;
color: $color-accent-dark;
cursor: none;
font-size: .9rem;
font-weight: normal;
line-height: 2rem;
padding: 0 .4rem;
background: $theme-error;
background: $color-theme-error;
}
}

55
src/Squidex/app/theme/_layout.scss

@ -1,11 +1,62 @@
@import '_mixins';
@import '_vars';
$sidebar-color: #fff;
body {
overflow: hidden;
background: $background;
background: $color-background;
}
h1 {
font-size: 2rem;
}
.hidden {
display: none;
}
.layout {
&-title-icon {
margin-right: .6rem;
}
&-new-button {
display: block;
width: 100%;
}
&-content {
& {
@include fixed(54px, 0, 0, 0);
@include flex-box;
@include flex-flow(row);
}
&-left,
&-right {
background: $sidebar-color;
padding: $padding-layout;
position: relative;
width: 220px;
}
&-right {
border-left: 1px solid $color-border;
}
&-left {
& {
border-right: 1px solid $color-border;
}
&--no-button {
padding-top: $padding-layout + 38px;
}
}
&-main {
@include flex-grow(1);
padding: $padding-layout;
}
}
}

34
src/Squidex/app/theme/_vars.scss

@ -1,18 +1,28 @@
$nav-text-color: #333;
$color-nav-text: #333;
$background: #f4f8f9;
$border: #eaeeef;
$color-background: #eff3f4;
$color-border: #eaeeef;
$theme-blue: #438cef;
$theme-blue-dark: #3f83df;
$theme-blue-light: #a1c6f7;
$theme-blue-lighter: #d9e8fc;
$color-text: #373a3c;
$theme-green: #4cc159;
$theme-green-dark: #47b353;
$color-section-media: #ab6eee;
$color-section-settings: #ff5800;
$color-section-content: #07a6ff;
$color-section-schemas: #7c8d92;
$color-section-dashboard: #438cef;
$theme-error: #f00;
$theme-error-dark: darken($theme-error, 5%);
$color-theme-blue: #438cef;
$color-theme-blue-dark: #3f83df;
$color-theme-blue-light: #a1c6f7;
$color-theme-blue-lighter: #d9e8fc;
$accent-dark: #fff;
$color-theme-green: #4cc159;
$color-theme-green-dark: #47b353;
$color-theme-error: #f00;
$color-theme-error-dark: darken($color-theme-error, 5%);
$color-accent-dark: #fff;
$padding-layout: 30px;

4
src/Squidex/app/theme/_vendor-overrides.scss

@ -3,5 +3,5 @@
$fa-font-path: '~font-awesome/fonts';
$brand-primary: $theme-blue;
$brand-success: $theme-green;
$brand-primary: $color-theme-blue;
$brand-success: $color-theme-green;
Loading…
Cancel
Save