@fishawack/lab-velocity 2.0.0-beta.5 → 2.0.0-beta.50

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/README.md +467 -36
  2. package/_Build/js/libs/build-id.js +14 -0
  3. package/_Build/js/libs/filters.js +36 -0
  4. package/_Build/js/libs/globals.js +7 -0
  5. package/_Build/js/libs/router.js +22 -0
  6. package/_Build/js/libs/routes.js +29 -0
  7. package/_Build/js/libs/store.js +21 -0
  8. package/_Build/js/libs/utility.js +161 -0
  9. package/_Build/vue/components/basic/Button.vue +1 -1
  10. package/_Build/vue/components/form/Avatar.vue +90 -0
  11. package/_Build/vue/components/form/Checkbox.vue +10 -0
  12. package/_Build/vue/components/form/InputNumber.vue +1 -1
  13. package/_Build/vue/components/form/Select.vue +223 -33
  14. package/_Build/vue/components/form/Spinner.vue +5 -0
  15. package/_Build/vue/components/layout/Alert.vue +5 -5
  16. package/_Build/vue/components/layout/Audit.vue +143 -0
  17. package/_Build/vue/{modules/AuthModule/components/VBreadcrumbs.vue → components/layout/Breadcrumbs.vue} +4 -4
  18. package/_Build/vue/{modules/AuthModule/components → components/layout}/Chips.vue +2 -2
  19. package/_Build/vue/components/layout/Footer.vue +11 -10
  20. package/_Build/vue/{modules/AuthModule/components/VFormFooter.vue → components/layout/FormFooter.vue} +13 -7
  21. package/_Build/vue/{modules/AuthModule/components → components/layout}/FormRole.vue +10 -8
  22. package/_Build/vue/components/layout/Layout.vue +94 -0
  23. package/_Build/vue/components/layout/Navigation.vue +77 -0
  24. package/_Build/vue/{modules/AuthModule/components/VPageHeader.vue → components/layout/PageHeader.vue} +14 -8
  25. package/_Build/vue/components/layout/SideBar.vue +26 -0
  26. package/_Build/vue/{modules/AuthModule/components/VTable.vue → components/layout/Table.vue} +37 -16
  27. package/_Build/vue/{modules/AuthModule/components/VTableSorter.vue → components/layout/TableSorter.vue} +108 -52
  28. package/_Build/vue/components/layout/TokenDisplay.vue +52 -0
  29. package/_Build/vue/components/layout/pageTitle.vue +1 -1
  30. package/_Build/vue/components/navigation/MenuItem.vue +7 -2
  31. package/_Build/vue/components/navigation/MenuItemGroup.vue +7 -2
  32. package/_Build/vue/modules/AuthModule/js/axios.js +21 -1
  33. package/_Build/vue/modules/AuthModule/js/guest-request.js +32 -0
  34. package/_Build/vue/modules/AuthModule/js/impersonation-banner.js +102 -0
  35. package/_Build/vue/modules/AuthModule/js/router.js +91 -114
  36. package/_Build/vue/modules/AuthModule/js/store.js +23 -6
  37. package/_Build/vue/modules/AuthModule/routes/PCompanies/columns.js +268 -0
  38. package/_Build/vue/modules/AuthModule/routes/PCompanies/resource.js +213 -0
  39. package/_Build/vue/modules/AuthModule/routes/PIntegrations/columns.js +58 -0
  40. package/_Build/vue/modules/AuthModule/routes/PIntegrations/resource.js +79 -0
  41. package/_Build/vue/modules/AuthModule/routes/PTeams/columns.js +78 -0
  42. package/_Build/vue/modules/AuthModule/routes/PTeams/resource.js +251 -0
  43. package/_Build/vue/modules/AuthModule/routes/PUsers/SetPasswordAction.vue +51 -0
  44. package/_Build/vue/modules/AuthModule/routes/PUsers/SetPasswordDialog.vue +138 -0
  45. package/_Build/vue/modules/AuthModule/routes/PUsers/columns.js +349 -0
  46. package/_Build/vue/modules/AuthModule/routes/PUsers/resource.js +239 -0
  47. package/_Build/vue/modules/AuthModule/routes/account-exists.vue +2 -2
  48. package/_Build/vue/modules/AuthModule/routes/change-password.vue +28 -32
  49. package/_Build/vue/modules/AuthModule/routes/container.vue +2 -11
  50. package/_Build/vue/modules/AuthModule/routes/expired-reset.vue +4 -4
  51. package/_Build/vue/modules/AuthModule/routes/expired-verification.vue +10 -9
  52. package/_Build/vue/modules/AuthModule/routes/force-reset.vue +44 -58
  53. package/_Build/vue/modules/AuthModule/routes/forgot.vue +10 -5
  54. package/_Build/vue/modules/AuthModule/routes/login.vue +12 -19
  55. package/_Build/vue/modules/AuthModule/routes/logincallback.vue +1 -3
  56. package/_Build/vue/modules/AuthModule/routes/loginsso.vue +14 -10
  57. package/_Build/vue/modules/AuthModule/routes/logout.vue +17 -5
  58. package/_Build/vue/modules/AuthModule/routes/logoutheadless.vue +1 -3
  59. package/_Build/vue/modules/AuthModule/routes/register.vue +24 -28
  60. package/_Build/vue/modules/AuthModule/routes/reset.vue +20 -14
  61. package/_Build/vue/modules/AuthModule/routes/success-forgot.vue +14 -8
  62. package/_Build/vue/modules/AuthModule/routes/success-reset.vue +2 -2
  63. package/_Build/vue/modules/AuthModule/routes/success-verify.vue +1 -3
  64. package/_Build/vue/modules/AuthModule/routes/verify.vue +11 -14
  65. package/_Build/vue/modules/resource/Children/create.vue +81 -0
  66. package/_Build/vue/modules/resource/Children/edit.vue +106 -0
  67. package/_Build/vue/modules/resource/Children/index.vue +42 -0
  68. package/_Build/vue/modules/resource/Children/partials/form.vue +111 -0
  69. package/_Build/vue/modules/resource/Children/show.vue +166 -0
  70. package/_Build/vue/modules/resource/index.js +561 -0
  71. package/_Build/vue/modules/resource/parent.vue +63 -0
  72. package/_Build/vue/modules/resource/trashable.js +104 -0
  73. package/_base.scss +0 -1
  74. package/_defaults.scss +2 -13
  75. package/_variables.scss +9 -4
  76. package/{modules/_AuthModule.scss → components/_auth.scss} +19 -68
  77. package/components/_datepicker.scss +1 -0
  78. package/components/_descriptions.scss +2 -0
  79. package/components/_footer.scss +1 -0
  80. package/components/_form.scss +18 -0
  81. package/components/_header.scss +3 -27
  82. package/components/_layout.scss +56 -0
  83. package/components/_menu.scss +0 -5
  84. package/components/_sidebar.scss +12 -27
  85. package/components/_table.scss +3 -0
  86. package/components/_token-display.scss +41 -0
  87. package/general.scss +1 -0
  88. package/index.js +31 -1
  89. package/package.json +7 -4
  90. package/vendor.scss +0 -1
  91. package/_Build/vue/components/layout/sideBar.vue +0 -25
  92. package/_Build/vue/modules/AuthModule/adminRoutes/PCompanies/Children/Upload/upload.vue +0 -251
  93. package/_Build/vue/modules/AuthModule/adminRoutes/PCompanies/Children/create.vue +0 -62
  94. package/_Build/vue/modules/AuthModule/adminRoutes/PCompanies/Children/edit.vue +0 -98
  95. package/_Build/vue/modules/AuthModule/adminRoutes/PCompanies/Children/index.vue +0 -90
  96. package/_Build/vue/modules/AuthModule/adminRoutes/PCompanies/Children/partials/form.vue +0 -173
  97. package/_Build/vue/modules/AuthModule/adminRoutes/PCompanies/Children/show.vue +0 -262
  98. package/_Build/vue/modules/AuthModule/adminRoutes/PCompanies/parent.vue +0 -36
  99. package/_Build/vue/modules/AuthModule/adminRoutes/PUsers/Children/create.vue +0 -112
  100. package/_Build/vue/modules/AuthModule/adminRoutes/PUsers/Children/edit.vue +0 -103
  101. package/_Build/vue/modules/AuthModule/adminRoutes/PUsers/Children/index.vue +0 -112
  102. package/_Build/vue/modules/AuthModule/adminRoutes/PUsers/Children/partials/form.vue +0 -169
  103. package/_Build/vue/modules/AuthModule/adminRoutes/PUsers/Children/show.vue +0 -120
  104. package/_Build/vue/modules/AuthModule/adminRoutes/PUsers/parent.vue +0 -36
  105. package/components/_input.scss +0 -0
  106. package/modules/_AuthVariables.scss +0 -7
  107. /package/_Build/vue/{modules/AuthModule/components → components/layout}/AuthModal.vue +0 -0
  108. /package/_Build/vue/{modules/AuthModule/components → components/layout}/Chip.vue +0 -0
  109. /package/_Build/vue/{modules/AuthModule/components/VPasswordValidation.vue → components/layout/PasswordValidation.vue} +0 -0
  110. /package/_Build/vue/{modules/AuthModule/components/VRoleLegend.vue → components/layout/RoleLegend.vue} +0 -0
  111. /package/{modules → components}/_modal.scss +0 -0
@@ -0,0 +1,104 @@
1
+ import axios from "axios";
2
+ import { h } from "vue";
3
+
4
+ import VelTableSorter from "../../components/layout/TableSorter.vue";
5
+ import { ElNotification } from "element-plus";
6
+ import VelButton from "../../components/basic/Button.vue";
7
+ import VelCheckbox from "../../components/form/Checkbox.vue";
8
+
9
+ export function applyTrashable(result) {
10
+ const originalStructure = result.index.structure;
11
+ result.index.structure = (props) => {
12
+ const structure = originalStructure(props);
13
+ structure["json-data"].rowClassName = ({ row }) =>
14
+ row.deleted_at ? "el-table__row--trashed" : "";
15
+ return structure;
16
+ };
17
+
18
+ result.table.actions.push(({ model, resource }, props) => {
19
+ const { $emit } = props;
20
+
21
+ if (resource.permissions.delete(props, { model }) && model.deleted_at) {
22
+ return h({
23
+ data: () => ({
24
+ loading: false,
25
+ }),
26
+ render() {
27
+ return h(
28
+ VelButton,
29
+ {
30
+ tag: "a",
31
+ type: "success",
32
+ size: "small",
33
+ loading: this.loading,
34
+ onClick: async () => {
35
+ this.loading = true;
36
+
37
+ await axios.post(
38
+ `${resource.api.endpoint(props)}/${model.id}/restore`,
39
+ );
40
+
41
+ $emit("reload");
42
+
43
+ ElNotification({
44
+ title: "Success",
45
+ message: `${resource.singularTitle} restored.`,
46
+ type: "success",
47
+ });
48
+
49
+ this.loading = false;
50
+ },
51
+ },
52
+ () => "Restore",
53
+ );
54
+ },
55
+ });
56
+ }
57
+ });
58
+
59
+ const originalLayout = [...result.index.layout];
60
+ result.index.layout = [
61
+ (props) => {
62
+ const { resource } = props;
63
+
64
+ return h({
65
+ data: () => ({
66
+ showTrashed: false,
67
+ }),
68
+ methods: {
69
+ reload() {
70
+ this.$refs.table?.reload();
71
+ },
72
+ },
73
+ render() {
74
+ const structureProps = resource.index.structure(props);
75
+
76
+ if (this.showTrashed) {
77
+ structureProps.apiParams = {
78
+ ...structureProps.apiParams,
79
+ "filter[withTrashed]": 1,
80
+ };
81
+ }
82
+
83
+ return h("div", [
84
+ resource.permissions.delete(props) &&
85
+ h(VelCheckbox, {
86
+ label: `Show trashed ${resource.name}`,
87
+ modelValue: this.showTrashed,
88
+ class: "mt-3",
89
+ "onUpdate:modelValue": (val) => {
90
+ this.showTrashed = val;
91
+ this.$nextTick(() => this.reload());
92
+ },
93
+ }),
94
+ h(VelTableSorter, {
95
+ ...structureProps,
96
+ ref: "table",
97
+ }),
98
+ ]);
99
+ },
100
+ });
101
+ },
102
+ ...originalLayout.slice(1),
103
+ ];
104
+ }
package/_base.scss CHANGED
@@ -3,4 +3,3 @@
3
3
  @import "element-plus/theme-chalk/el-message";
4
4
  @import "element-plus/theme-chalk/el-notification";
5
5
  @import "element-plus/theme-chalk/el-overlay";
6
- @import "./components/input.scss";
package/_defaults.scss CHANGED
@@ -5,16 +5,5 @@
5
5
  $colors: variables.dynamic("color", module-variables("variables"));
6
6
 
7
7
  // Override lab-ui defaults here, e.g $button: $color6;
8
- $spacing: 8px;
9
- .container {
10
- margin-left: 0;
11
- padding: 0px 5 * $spacing;
12
- }
13
-
14
- body {
15
- font-family: $primaryFont, sans-serif;
16
- font-size: get-ratio(16px);
17
- line-height: 1.5;
18
- color: $color1;
19
- background-color: $color3;
20
- }
8
+ $fontColor: $color1;
9
+ $fontFamily: $primaryFont, sans-serif;
package/_variables.scss CHANGED
@@ -1,7 +1,6 @@
1
1
  @import "@fishawack/lab-ui/_variables.scss";
2
- // Set global variables here, e.g $color6: red;
3
- @import "./modules/AuthVariables";
4
2
 
3
+ // Set global variables here, e.g $color6: red;
5
4
  $primaryFont: "Inter";
6
5
  $primaryFontThin: "Inter-Thin";
7
6
  $primaryFontExtraLight: "Inter-ExtraLight";
@@ -10,11 +9,10 @@ $primaryFontRegular: "Inter-Regular";
10
9
  $primaryFontMedium: "Inter-Medium";
11
10
  $primaryFontSemiBold: "Inter-SemiBold";
12
11
  $primaryFontBold: "Inter-Bold";
13
-
14
12
  $secondaryFont: "NotoSerif";
15
13
  $secondaryFontMedium: "NotoSerif-Medium";
16
- // Colors
17
14
 
15
+ // Colors
18
16
  $color1: #2d2d2d;
19
17
  $color2: #333333;
20
18
  $color3: #f7f7f7;
@@ -29,3 +27,10 @@ $color11: #8c8c8c; //Used
29
27
  $color12: #5c5c5c;
30
28
  $color13: #3c976e;
31
29
  $colorAlert: #d53a3a;
30
+
31
+ // Spacing
32
+ $spacing: 8px;
33
+
34
+ // Auth
35
+ $am-spacing: 8px;
36
+ $am-highlight: #3c976e;
@@ -1,11 +1,3 @@
1
- @import "./AuthVariables";
2
- @import "element-plus/theme-chalk/base";
3
- @import "../components/input.scss";
4
- @import "../components/button";
5
- @import "../components/basic";
6
- @import "./modal";
7
-
8
- // AuthModule
9
1
  .AuthModule {
10
2
  position: fixed;
11
3
  background-color: black;
@@ -20,10 +12,12 @@
20
12
  width: 13.3rem;
21
13
  z-index: 99;
22
14
  }
15
+
23
16
  @include breakpoint(max-width $tabletMax) {
24
17
  background: url("../media/content/images/hero-auth-background-tablet.jpg")
25
18
  center top no-repeat;
26
19
  }
20
+
27
21
  @include breakpoint(max-width $mobileMax) {
28
22
  background: url("../media/content/images/hero-auth-background-mobile.jpg")
29
23
  center top no-repeat;
@@ -46,6 +40,7 @@
46
40
  transform: translate(-50%, 0);
47
41
  padding: 24px;
48
42
  width: calc(100% - 80px);
43
+
49
44
  h2 .h2 {
50
45
  font-size: 24px;
51
46
  line-height: 32px;
@@ -57,6 +52,7 @@
57
52
  line-height: 50px;
58
53
  font-size: 48px;
59
54
  }
55
+
60
56
  .h2--small {
61
57
  font-size: 36px;
62
58
  line-height: 44px;
@@ -67,14 +63,17 @@
67
63
  line-height: 20px;
68
64
  margin-bottom: 24px;
69
65
  letter-spacing: -0.1px;
66
+
70
67
  &.disclaimer {
71
68
  font-size: 12px;
72
69
  color: rgba($color1, 0.5);
73
70
  margin: 0;
74
71
  }
72
+
75
73
  a {
76
74
  color: $color1;
77
75
  }
76
+
78
77
  &.form__error {
79
78
  font-size: 12px;
80
79
  line-height: 18px;
@@ -86,6 +85,7 @@
86
85
  width: 200px;
87
86
  padding: 9px 23.5px;
88
87
  font-size: 14px;
88
+
89
89
  @include breakpoint(max-width $mobileMax) {
90
90
  max-width: unset;
91
91
  width: 100%;
@@ -99,43 +99,38 @@
99
99
  border: 0.4px solid red;
100
100
  }
101
101
  }
102
+
102
103
  .form__input.error {
103
104
  border: none;
105
+
104
106
  .el-input__wrapper {
105
107
  border: 0.4px solid red;
106
108
  }
107
109
  }
108
110
  }
109
- // &__icon-container{
110
- // position: absolute;
111
- // top: 50%;
112
- // right: $spacing * 1.5;
113
- // transform: translateY(-50%);
114
- // display: flex;
115
- // }
116
- // &__action-icon {
117
- // margin-left: $spacing * 0.5;
118
- // cursor: pointer;
119
- // }
120
111
  }
112
+
121
113
  .vel-basic__label {
122
114
  font-size: 12px;
123
115
  color: rgba($color1, 0.5);
124
116
  }
117
+
125
118
  .vel-basic__textbox {
126
119
  --el-border-color: #cfd8dd;
127
120
  --el-input-text-color: #666666;
128
121
  --el-input-focus-border-color: #cfd8dd;
129
122
  --el-input-hover-border-color: #cfd8dd;
130
123
  font-size: 14px;
131
- padding-bottom: $am-spacing * 2.5;
124
+
132
125
  .el-input__inner {
133
126
  --el-input-inner-height: 38px;
134
127
  }
135
128
  }
129
+
136
130
  .el-button--primary {
137
131
  --el-button-text-color: #ffffff;
138
132
  }
133
+
139
134
  input,
140
135
  input:focus {
141
136
  @extend .el-input__inner;
@@ -147,9 +142,11 @@
147
142
  top: 48px;
148
143
  left: 0%;
149
144
  }
145
+
150
146
  .AuthModule__logo {
151
147
  position: relative;
152
148
  }
149
+
153
150
  .AuthModule__Content {
154
151
  position: absolute;
155
152
  z-index: 1;
@@ -161,52 +158,6 @@
161
158
  height: 100%;
162
159
  }
163
160
 
164
- .AM-mb {
165
- margin-bottom: $am-spacing !important;
166
- }
167
- .AM-mt {
168
- margin-top: $am-spacing !important;
169
- }
170
- .AM-pb {
171
- padding-bottom: $am-spacing !important;
172
- }
173
- .AM-pt {
174
- padding-top: $am-spacing !important;
175
- }
176
- @for $i from 1 through 5 {
177
- .AM-mb-#{$i - 1} {
178
- margin-bottom: ($i - 1) * $am-spacing !important;
179
- }
180
-
181
- .AM-mb-#{$i - 1}\.5 {
182
- margin-bottom: ($i - 0.5) * $am-spacing !important;
183
- }
184
-
185
- .AM-mt-#{$i - 1} {
186
- margin-top: ($i - 1) * $am-spacing !important;
187
- }
188
-
189
- .AM-mt-#{$i - 1}\.5 {
190
- margin-top: ($i - 0.5) * $am-spacing !important;
191
- }
192
-
193
- .AM-pt-#{$i - 1} {
194
- padding-top: ($i - 1) * $am-spacing !important;
195
- }
196
-
197
- .AM-pt-#{$i - 1}\.5 {
198
- padding-top: ($i - 0.5) * $am-spacing !important;
199
- }
200
-
201
- .AM-pb-#{$i - 1} {
202
- padding-bottom: ($i - 1) * $am-spacing !important;
203
- }
204
-
205
- .AM-pb-#{$i - 1}\.5 {
206
- padding-bottom: ($i - 0.5) * $am-spacing !important;
207
- }
208
- }
209
-
210
- .AM-color-highlight {
211
- color: $am-highlight;
161
+ .color-highlight {
162
+ color: green;
212
163
  }
@@ -1,4 +1,5 @@
1
1
  @import "element-plus/theme-chalk/el-date-picker";
2
+ @import "element-plus/theme-chalk/el-date-picker-panel";
2
3
 
3
4
  .vel-datepicker {
4
5
  // --el-input-height:38px;
@@ -0,0 +1,2 @@
1
+ @import "element-plus/theme-chalk/el-descriptions";
2
+ @import "element-plus/theme-chalk/el-descriptions-item";
@@ -3,6 +3,7 @@
3
3
  padding: $spacing * 3 $spacing * 3 $spacing * 2 $spacing * 3;
4
4
  box-sizing: border-box;
5
5
  width: 100%;
6
+ margin-top: 6 * $spacing;
6
7
 
7
8
  svg {
8
9
  // width: 3 * $spacing;
@@ -22,3 +22,21 @@
22
22
  }
23
23
  }
24
24
  }
25
+
26
+ .vel-resource-form {
27
+ display: flex;
28
+ flex-direction: column;
29
+ gap: 2.5 * $spacing;
30
+ }
31
+
32
+ .vel-form-group {
33
+ border: 1px solid lighten($color4, 3%);
34
+ border-radius: $spacing * 0.5;
35
+ padding: 2 * $spacing;
36
+
37
+ legend {
38
+ font-weight: 600;
39
+ font-size: get-ratio(16px);
40
+ padding: 0 $spacing * 0.5;
41
+ }
42
+ }
@@ -1,45 +1,21 @@
1
1
  .vel-header {
2
2
  border-bottom: solid get-ratio(1px) $color4;
3
3
  background-color: $color0;
4
- width: 100%;
5
- box-sizing: border-box;
6
4
  display: flex;
7
- flex-wrap: wrap;
8
5
  align-items: center;
9
- align-content: center;
10
- flex-basis: 100%;
11
6
  justify-content: space-between;
12
7
  padding: 1.5 * $spacing 3 * $spacing;
13
-
14
- > * {
15
- max-width: 50%;
16
- flex-basis: 50%;
17
- justify-content: flex-end !important;
18
- }
19
-
20
- .icon {
21
- min-width: $spacing * 2.5;
22
- max-width: $spacing * 2.5;
23
- width: $spacing * 2.5;
24
- height: $spacing * 2.5;
25
- margin-right: 0.5 * $spacing;
26
- }
27
8
  }
28
9
 
29
10
  .vel-header__list {
30
11
  display: flex;
31
- flex-wrap: wrap;
32
- align-items: stretch;
33
- align-content: stretch;
34
- flex-basis: 100%;
35
- padding-right: 1.5 * $spacing;
36
- margin-left: -1.5 * $spacing;
37
- margin-right: -1.5 * $spacing;
38
12
 
39
13
  > div {
40
14
  align-items: center;
15
+
41
16
  &:not(:last-child) {
42
17
  position: relative;
18
+
43
19
  &::after {
44
20
  position: absolute;
45
21
  content: "";
@@ -47,7 +23,7 @@
47
23
  height: 75%;
48
24
  transform: translateY(-50%);
49
25
  top: 50%;
50
- right: 0px;
26
+ right: 0;
51
27
  }
52
28
  }
53
29
  }
@@ -0,0 +1,56 @@
1
+ html,
2
+ body {
3
+ height: 100%;
4
+ margin: 0;
5
+ }
6
+
7
+ .vel-app {
8
+ display: flex;
9
+ flex-direction: column;
10
+ height: 100dvh;
11
+ }
12
+
13
+ .vel-header {
14
+ flex: 0 0 auto;
15
+ }
16
+
17
+ .vel-content {
18
+ flex: 1 1 auto;
19
+ min-height: 0; /* allow shrinking */
20
+ display: flex;
21
+ overflow: auto; /* main scroll container */
22
+ }
23
+
24
+ .vel-sidebar {
25
+ min-height: 0;
26
+ }
27
+
28
+ .vel-sidebar__inner {
29
+ position: sticky;
30
+ top: 0;
31
+ display: flex;
32
+ flex-direction: column;
33
+ max-height: 100%;
34
+ }
35
+
36
+ .vel-sidebar__top {
37
+ flex: 1 1 auto;
38
+ min-height: 0;
39
+ overflow: auto; /* optional scroll */
40
+ }
41
+
42
+ .vel-sidebar__bottom {
43
+ flex: 0 0 auto;
44
+ }
45
+
46
+ .vel-main {
47
+ flex: 1 1 auto;
48
+ min-height: 0;
49
+ overflow: auto;
50
+ display: flex;
51
+ flex-direction: column;
52
+ }
53
+
54
+ .vel-main__inner {
55
+ flex-grow: 1;
56
+ }
@@ -93,11 +93,6 @@ ul.vel-menu {
93
93
  flex-direction: column;
94
94
  height: 100%;
95
95
 
96
- li:last-child {
97
- margin-top: auto;
98
- margin-bottom: 0px;
99
- }
100
-
101
96
  .el-sub-menu {
102
97
  .vel-menu-item {
103
98
  a.active {
@@ -1,56 +1,41 @@
1
- .vel-side-bar {
2
- flex-basis: $spacing * 7.5;
1
+ .vel-sidebar {
2
+ width: $spacing * 7.5;
3
+ padding-top: $spacing * 2;
3
4
  display: flex;
4
5
  flex-direction: column;
5
- box-shadow: 0px $spacing * 0.5 $spacing * 0.5 0px hsla(0, 0%, 0%, 0.251);
6
- min-height: 10vh;
7
- max-height: 100vh;
8
- overflow: hidden;
9
- transition: flex-basis 0.3s ease-in-out;
6
+ box-shadow: 0 $spacing * 0.5 $spacing * 0.5 0 hsla(0, 0, 0, 0.251);
7
+ transition: width 0.3s ease-in-out;
10
8
  background-color: $color0;
11
9
 
12
- position: sticky;
13
- top: 0vh;
14
- padding-top: 2 * $spacing;
15
- min-width: get-ratio(64px);
16
- flex-basis: get-ratio(64px);
17
-
18
10
  > div {
19
11
  &:first-child {
20
- flex-grow: 0.8;
21
- }
22
- &:last-child {
23
- margin-bottom: 5.5vh;
12
+ flex: 1;
24
13
  }
25
14
  }
26
15
 
27
16
  &.active {
28
- flex-basis: 31.5 * $spacing;
29
- min-width: 31.5 * $spacing;
17
+ width: 31.5 * $spacing;
30
18
 
31
- .vel-side-bar__button {
19
+ .vel-sidebar__button {
32
20
  transform: rotateY(180deg);
33
21
  }
34
22
  }
35
23
  }
36
24
 
37
- .vel-side-bar__button {
25
+ .vel-sidebar__button {
38
26
  outline: none;
39
27
  background-color: transparent;
40
28
  border: none;
41
29
  cursor: pointer;
30
+
42
31
  &:focus {
43
32
  outline: 1px solid;
44
33
  }
45
34
  }
46
35
 
47
- .vel-side-bar__bottom {
36
+ .vel-sidebar__bottom {
48
37
  display: flex;
49
38
  justify-content: flex-end;
50
39
  border-top: solid 1px #e6e6e6;
51
- padding: $spacing $spacing * 1.5;
52
- }
53
-
54
- main {
55
- overflow: hidden;
40
+ padding: $spacing * 2;
56
41
  }
@@ -10,6 +10,9 @@
10
10
  .el-table__cell {
11
11
  padding: get-ratio(8px) get-ratio(12px);
12
12
  }
13
+ .el-table__row--trashed {
14
+ color: var(--el-color-danger);
15
+ }
13
16
  }
14
17
 
15
18
  .table-wrapper {
@@ -0,0 +1,41 @@
1
+ .token-display {
2
+ &__warning {
3
+ font-size: 14px;
4
+ color: #606266;
5
+ margin: 0 0 16px;
6
+ line-height: 1.6;
7
+ }
8
+
9
+ &__block {
10
+ margin-top: 16px;
11
+ }
12
+
13
+ &__header {
14
+ display: flex;
15
+ align-items: center;
16
+ justify-content: space-between;
17
+ margin-bottom: 8px;
18
+ }
19
+
20
+ &__label {
21
+ font-size: 11px;
22
+ font-weight: 600;
23
+ letter-spacing: 0.08em;
24
+ text-transform: uppercase;
25
+ color: #909399;
26
+ }
27
+
28
+ &__value {
29
+ background: #1a1a2e;
30
+ color: #a8ff78;
31
+ border-radius: 6px;
32
+ padding: 16px 20px;
33
+ font-size: 13px;
34
+ line-height: 1.7;
35
+ overflow-x: auto;
36
+ white-space: pre-wrap;
37
+ word-break: break-all;
38
+ font-family: monospace;
39
+ margin: 0;
40
+ }
41
+ }
package/general.scss CHANGED
@@ -29,6 +29,7 @@
29
29
  @import "./components/_collapse.scss";
30
30
  @import "./components/_tooltip.scss";
31
31
  @import "./components/_loader.scss";
32
+ @import "./components/_token-display.scss";
32
33
  @import "./modules/_AuthModule.scss";
33
34
 
34
35
  @import "./_base.scss";