devextreme-cli 1.8.0 → 1.9.1-1.11.0-alpha.0.0
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.
- package/package.json +6 -5
- package/src/applications/application.angular.js +32 -7
- package/src/applications/application.react.js +31 -24
- package/src/applications/application.vue.js +23 -6
- package/src/templates/react/application/public/favicon.ico +0 -0
- package/src/templates/react/application/public/logo192.png +0 -0
- package/src/templates/react/application/public/logo512.png +0 -0
- package/src/templates/react/application/public/manifest.json +25 -0
- package/src/templates/react/application/public/robots.txt +3 -0
- package/src/templates/react/application/src/App.tsx +0 -1
- package/src/templates/react/application/src/components/change-password-form/ChangePasswordForm.tsx +2 -2
- package/src/templates/react/application/src/components/create-account-form/CreateAccountForm.scss +4 -5
- package/src/templates/react/application/src/components/create-account-form/CreateAccountForm.tsx +5 -7
- package/src/templates/react/application/src/components/footer/Footer.tsx +0 -1
- package/src/templates/react/application/src/components/header/Header.scss +1 -1
- package/src/templates/react/application/src/components/header/Header.tsx +0 -1
- package/src/templates/react/application/src/components/login-form/LoginForm.scss +2 -8
- package/src/templates/react/application/src/components/login-form/LoginForm.tsx +12 -14
- package/src/templates/react/application/src/components/reset-password-form/ResetPasswordForm.scss +3 -4
- package/src/templates/react/application/src/components/reset-password-form/ResetPasswordForm.tsx +5 -7
- package/src/templates/react/application/src/components/side-navigation-menu/SideNavigationMenu.scss +3 -3
- package/src/templates/react/application/src/components/side-navigation-menu/SideNavigationMenu.tsx +2 -2
- package/src/templates/react/application/src/components/theme-switcher/ThemeSwitcher.tsx +2 -2
- package/src/templates/react/application/src/components/user-panel/UserPanel.tsx +1 -1
- package/src/templates/react/application/src/dx-styles.scss +6 -3
- package/src/templates/react/application/src/index.css +12 -0
- package/src/templates/react/application/src/layouts/side-nav-inner-toolbar/side-nav-inner-toolbar.tsx +11 -5
- package/src/templates/react/application/src/layouts/side-nav-outer-toolbar/side-nav-outer-toolbar.tsx +11 -5
- package/src/templates/react/application/src/layouts/single-card/single-card.scss +10 -7
- package/src/templates/react/application/src/layouts/single-card/single-card.tsx +0 -1
- package/src/templates/react/application/src/theme.tsx +1 -1
- package/src/templates/react/application/src/types.tsx +1 -2
- package/src/templates/react/application/src/utils/media-query.tsx +3 -1
- package/src/templates/react/application/src/utils/patches.scss +4 -4
- package/src/templates/react/application/src/variables.scss +32 -16
- package/src/templates/react/sample-pages/home/home.scss +0 -2
- package/src/templates/react/sample-pages/home/home.tsx +1 -1
- package/src/templates/react/sample-pages/tasks/tasks.tsx +4 -4
- package/src/templates/vue-v3/application/src/App.vue +1 -0
- package/src/templates/vue-v3/application/src/components/header-toolbar.vue +1 -1
- package/src/templates/vue-v3/application/src/components/side-nav-menu.vue +2 -2
- package/src/templates/vue-v3/application/src/dx-styles.scss +3 -3
- package/src/templates/vue-v3/application/src/layouts/single-card.vue +10 -5
- package/src/templates/vue-v3/application/src/variables.scss +30 -14
- package/src/templates/vue-v3/application/src/views/create-account-form.vue +21 -24
- package/src/templates/vue-v3/application/src/views/login-form.vue +18 -25
- package/src/templates/vue-v3/application/src/views/reset-password-form.vue +6 -9
- package/src/templates/vue-v3/sample-pages/tasks-page.vue +1 -1
- package/src/utility/extract-deps-version-tag.js +13 -0
- package/src/utility/latest-versions.js +4 -3
- package/src/utility/prompts/transpiler.js +17 -0
- package/src/utility/typescript-extension.js +1 -1
- package/src/templates/react/application/src/App.test.tsx +0 -12
- package/src/templates/react/application/src/matchMediaMock.tsx +0 -14
- package/src/templates/react/application/src/polyfills.tsx +0 -2
- package/src/utility/extract-tooling-version.js +0 -13
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
body {
|
|
2
|
+
margin: 0;
|
|
3
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
|
|
4
|
+
'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
|
|
5
|
+
sans-serif;
|
|
6
|
+
-moz-osx-font-smoothing: grayscale;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
code {
|
|
10
|
+
font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
|
|
11
|
+
monospace;
|
|
12
|
+
}
|
|
@@ -3,7 +3,7 @@ import Drawer from 'devextreme-react/drawer';
|
|
|
3
3
|
import { ScrollView<%=#isTypeScript%>, ScrollViewRef<%=/isTypeScript%> } from 'devextreme-react/scroll-view';
|
|
4
4
|
import Toolbar, { Item } from 'devextreme-react/toolbar';
|
|
5
5
|
import React, { useState, useCallback, useRef } from 'react';
|
|
6
|
-
import { useNavigate } from 'react-router';
|
|
6
|
+
import { useNavigate } from 'react-router-dom';
|
|
7
7
|
import { Header, SideNavigationMenu, Footer } from '../../components';
|
|
8
8
|
import './side-nav-inner-toolbar.scss';
|
|
9
9
|
import { useScreenSize } from '../../utils/media-query';
|
|
@@ -84,13 +84,19 @@ export default function SideNavInnerToolbar({ title, children }<%=#isTypeScript%
|
|
|
84
84
|
/>
|
|
85
85
|
<ScrollView ref={scrollViewRef} className={'layout-body with-footer'}>
|
|
86
86
|
<div className={'content'}>
|
|
87
|
-
{React.Children.map(children, (item
|
|
88
|
-
|
|
87
|
+
{React.Children.map(children, (item) => {
|
|
88
|
+
if (<%=#isTypeScript%>React.isValidElement(item) && <%=/isTypeScript%>item.type !== Footer) {
|
|
89
|
+
return item;
|
|
90
|
+
}
|
|
91
|
+
return null;
|
|
89
92
|
})}
|
|
90
93
|
</div>
|
|
91
94
|
<div className={'content-block'}>
|
|
92
|
-
{React.Children.map(children, (item
|
|
93
|
-
|
|
95
|
+
{React.Children.map(children, (item) => {
|
|
96
|
+
if (<%=#isTypeScript%>React.isValidElement(item) && <%=/isTypeScript%>item.type === Footer) {
|
|
97
|
+
return item;
|
|
98
|
+
}
|
|
99
|
+
return null;
|
|
94
100
|
})}
|
|
95
101
|
</div>
|
|
96
102
|
</ScrollView>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import Drawer from 'devextreme-react/drawer';
|
|
2
2
|
import { ScrollView<%=#isTypeScript%>, ScrollViewRef<%=/isTypeScript%> } from 'devextreme-react/scroll-view';
|
|
3
3
|
import React, { useState, useCallback, useRef } from 'react';
|
|
4
|
-
import { useNavigate } from 'react-router';
|
|
4
|
+
import { useNavigate } from 'react-router-dom';
|
|
5
5
|
import { Header, SideNavigationMenu, Footer } from '../../components';
|
|
6
6
|
import './side-nav-outer-toolbar.scss';
|
|
7
7
|
import { useScreenSize } from '../../utils/media-query';
|
|
@@ -83,13 +83,19 @@ export default function SideNavOuterToolbar({ title, children }<%=#isTypeScript%
|
|
|
83
83
|
<div className={'container'}>
|
|
84
84
|
<ScrollView ref={scrollViewRef} className={'with-footer'}>
|
|
85
85
|
<div className={'content'}>
|
|
86
|
-
{React.Children.map(children, (item
|
|
87
|
-
|
|
86
|
+
{React.Children.map(children, (item) => {
|
|
87
|
+
if (<%=#isTypeScript%>React.isValidElement(item) && <%=/isTypeScript%>item.type !== Footer) {
|
|
88
|
+
return item;
|
|
89
|
+
}
|
|
90
|
+
return null;
|
|
88
91
|
})}
|
|
89
92
|
</div>
|
|
90
93
|
<div className={'content-block'}>
|
|
91
|
-
{React.Children.map(children, (item
|
|
92
|
-
|
|
94
|
+
{React.Children.map(children, (item) => {
|
|
95
|
+
if (<%=#isTypeScript%>React.isValidElement(item) && <%=/isTypeScript%>item.type === Footer) {
|
|
96
|
+
return item;
|
|
97
|
+
}
|
|
98
|
+
return null;
|
|
93
99
|
})}
|
|
94
100
|
</div>
|
|
95
101
|
</ScrollView>
|
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
@import "../../themes/generated/variables.base.scss";
|
|
2
|
-
|
|
3
1
|
.single-card {
|
|
4
2
|
width: 100%;
|
|
5
3
|
height: 100%;
|
|
6
4
|
|
|
7
5
|
.dx-card {
|
|
8
|
-
width:
|
|
6
|
+
width: 360px;
|
|
9
7
|
margin: auto auto;
|
|
10
|
-
padding:
|
|
8
|
+
padding: 24px;
|
|
11
9
|
flex-grow: 0;
|
|
10
|
+
border-radius: 8px;
|
|
12
11
|
|
|
13
12
|
.screen-x-small & {
|
|
14
13
|
width: 100%;
|
|
@@ -21,18 +20,22 @@
|
|
|
21
20
|
}
|
|
22
21
|
|
|
23
22
|
.header {
|
|
24
|
-
margin
|
|
23
|
+
margin: 24px 0;
|
|
25
24
|
|
|
26
25
|
.title {
|
|
27
26
|
color: var(--base-text-color);
|
|
28
|
-
line-height: 28px;
|
|
29
27
|
font-weight: 500;
|
|
30
28
|
font-size: 24px;
|
|
29
|
+
text-align: center;
|
|
30
|
+
line-height: 24px;
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
.description {
|
|
34
34
|
color: var(--base-text-color-alpha-7);
|
|
35
|
-
line-height:
|
|
35
|
+
line-height: 16px;
|
|
36
|
+
font-size: 12px;
|
|
37
|
+
margin-top: 32px;
|
|
38
|
+
text-align: center;
|
|
36
39
|
}
|
|
37
40
|
}
|
|
38
41
|
}
|
|
@@ -45,7 +45,7 @@ export function useThemeContext() {
|
|
|
45
45
|
document.body.classList.add(themeClassNamePrefix + theme);
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
-
return useMemo(()=> ({ theme, switchTheme, isDark }), [theme]);
|
|
48
|
+
return useMemo(()=> ({ theme, switchTheme, isDark }), [theme, switchTheme, isDark]);
|
|
49
49
|
}
|
|
50
50
|
|
|
51
51
|
export const ThemeContext = React.createContext<%=#isTypeScript%><ReturnType<typeof useThemeContext> | null><%=/isTypeScript%>(null);
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { TreeViewTypes } from 'devextreme-react/tree-view';
|
|
2
2
|
import { ButtonTypes } from 'devextreme-react/button';
|
|
3
|
-
import React from 'react';
|
|
4
3
|
|
|
5
4
|
export interface HeaderProps {
|
|
6
5
|
menuToggleEnabled: boolean;
|
|
@@ -53,4 +52,4 @@ export type NavigationContextType = {
|
|
|
53
52
|
|
|
54
53
|
export type ValidationType = {
|
|
55
54
|
value: string;
|
|
56
|
-
}
|
|
55
|
+
}
|
|
@@ -44,7 +44,9 @@ const largeMedia = window.matchMedia('(min-width: 1280px)');
|
|
|
44
44
|
|
|
45
45
|
[xSmallMedia, smallMedia, mediumMedia, largeMedia].forEach(media => {
|
|
46
46
|
media.addListener((e) => {
|
|
47
|
-
e.matches
|
|
47
|
+
if(e.matches) {
|
|
48
|
+
handlers.forEach(handler => handler())
|
|
49
|
+
}
|
|
48
50
|
});
|
|
49
51
|
});
|
|
50
52
|
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
@
|
|
1
|
+
@use "../themes/generated/variables.additional.scss" as *;
|
|
2
2
|
|
|
3
3
|
@mixin menu-pre-init-patch {
|
|
4
4
|
$menuMinSize: 60px;
|
|
5
|
-
|
|
5
|
+
|
|
6
6
|
.dx-drawer-content {
|
|
7
7
|
padding-left: $menuMinSize;
|
|
8
8
|
}
|
|
9
|
-
|
|
9
|
+
|
|
10
10
|
.dx-drawer-panel-content.dx-overlay::before {
|
|
11
11
|
content: "";
|
|
12
12
|
width: $menuMinSize;
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
position: absolute;
|
|
16
16
|
background-color: $base-bg;
|
|
17
17
|
}
|
|
18
|
-
|
|
18
|
+
|
|
19
19
|
.dx-overlay-content {
|
|
20
20
|
width: $menuMinSize !important;
|
|
21
21
|
}
|
|
@@ -1,14 +1,28 @@
|
|
|
1
|
+
@use 'sass:meta';
|
|
2
|
+
@use 'sass:color';
|
|
3
|
+
@use 'sass:map';
|
|
4
|
+
@use "./themes/generated/variables.base.scss" as variablesBase;
|
|
5
|
+
@use "./themes/generated/variables.base.dark.scss" as variablesBaseDark;
|
|
6
|
+
@use "./themes/generated/variables.additional.scss" as variablesAdditional;
|
|
7
|
+
@use "./themes/generated/variables.additional.dark.scss" as variablesAdditionalDark;
|
|
8
|
+
|
|
9
|
+
@mixin theme-variables($theme-name) {
|
|
10
|
+
$theme: meta.module-variables($theme-name);
|
|
11
|
+
$base-text-color: map.get($theme, 'base-text-color');
|
|
12
|
+
$base-bg: map.get($theme, 'base-bg');
|
|
13
|
+
|
|
14
|
+
--base-text-color: #{$base-text-color};
|
|
15
|
+
--base-bg: #{$base-bg};
|
|
16
|
+
--base-bg-darken-5: #{color.adjust($base-bg, $lightness: -5%)};
|
|
17
|
+
--base-accent: #{map.get($theme, 'base-accent')};
|
|
18
|
+
--base-text-color-alpha-7: #{rgba($base-text-color, color.alpha($base-text-color) * 0.7)};
|
|
19
|
+
}
|
|
20
|
+
|
|
1
21
|
:root {
|
|
2
|
-
|
|
3
|
-
@
|
|
4
|
-
|
|
5
|
-
--base-text-color: #{$base-text-color};
|
|
6
|
-
--base-bg: #{$base-bg};
|
|
7
|
-
--base-bg-darken-5: #{darken($base-bg, 5)};
|
|
8
|
-
--base-accent: #{$base-accent};
|
|
9
|
-
--base-text-color-alpha-7: #{rgba($base-text-color, alpha($base-text-color) * 0.7)};
|
|
10
|
-
--footer-border-color: rgba(224, 224, 224, 1);
|
|
22
|
+
body {
|
|
23
|
+
@include theme-variables('variablesBase');
|
|
11
24
|
|
|
25
|
+
--footer-border-color: rgba(224, 224, 224, 1);
|
|
12
26
|
--plus-icon-color: #242424;
|
|
13
27
|
--devextreme-logo-color: #596C7D;
|
|
14
28
|
--vue-logo-text-color: #35495E;
|
|
@@ -17,14 +31,12 @@
|
|
|
17
31
|
--shadow-color-second: rgba(0, 0, 0, 0.12);
|
|
18
32
|
}
|
|
19
33
|
|
|
20
|
-
.dx-swatch-
|
|
21
|
-
@
|
|
34
|
+
.dx-swatch-additional {
|
|
35
|
+
@include theme-variables('variablesAdditional');
|
|
36
|
+
}
|
|
22
37
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
--base-bg-darken-5: #{darken($base-bg, 5)};
|
|
26
|
-
--base-accent: #{$base-accent};
|
|
27
|
-
--base-text-color-alpha-7: #{rgba($base-text-color, alpha($base-text-color) * 0.7)};
|
|
38
|
+
.dx-swatch-dark {
|
|
39
|
+
@include theme-variables('variablesBaseDark');;
|
|
28
40
|
|
|
29
41
|
--plus-icon-color: #fff;
|
|
30
42
|
--devextreme-logo-color: #fff;
|
|
@@ -34,4 +46,8 @@
|
|
|
34
46
|
--shadow-color-second: rgba(0, 0, 0, 0.24);
|
|
35
47
|
--footer-border-color: rgba(97, 97, 97, 1);
|
|
36
48
|
}
|
|
49
|
+
|
|
50
|
+
.dx-swatch-additional-dark {
|
|
51
|
+
@include theme-variables('variablesAdditionalDark');
|
|
52
|
+
}
|
|
37
53
|
}
|
|
@@ -68,7 +68,7 @@ export default function Home() {
|
|
|
68
68
|
<p>Thanks for using the DevExtreme React App Template.</p>
|
|
69
69
|
<p>
|
|
70
70
|
<span>This application was built using </span>
|
|
71
|
-
<a href={'https://
|
|
71
|
+
<a href={'https://vite.dev/guide/'} target={'_blank'} rel={'noopener noreferrer'}>create-vite</a>
|
|
72
72
|
<span> and </span>
|
|
73
73
|
<a href={'https://js.devexpress.com/Documentation/Guide/Common/DevExtreme_CLI/'} target={'_blank'} rel={'noopener noreferrer'}>DevExtreme CLI</a>
|
|
74
74
|
<span> and includes the following DevExtreme components:</span>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import 'devextreme/data
|
|
2
|
+
import { DataSource } from 'devextreme-react/common/data';
|
|
3
3
|
import DataGrid, {
|
|
4
4
|
Column,
|
|
5
5
|
Pager,
|
|
@@ -16,7 +16,7 @@ export default function Task() {
|
|
|
16
16
|
|
|
17
17
|
<DataGrid
|
|
18
18
|
className={'dx-card content-block'}
|
|
19
|
-
dataSource={dataSource
|
|
19
|
+
dataSource={dataSource}
|
|
20
20
|
showBorders={false}
|
|
21
21
|
focusedRowEnabled={true}
|
|
22
22
|
defaultFocusedRowIndex={0}
|
|
@@ -83,7 +83,7 @@ export default function Task() {
|
|
|
83
83
|
</React.Fragment>
|
|
84
84
|
)}
|
|
85
85
|
|
|
86
|
-
const dataSource = {
|
|
86
|
+
const dataSource = new DataSource({
|
|
87
87
|
store: {
|
|
88
88
|
version: 2,
|
|
89
89
|
type: 'odata',
|
|
@@ -101,7 +101,7 @@ const dataSource = {
|
|
|
101
101
|
'Task_Completion',
|
|
102
102
|
'ResponsibleEmployee/Employee_Full_Name'
|
|
103
103
|
]
|
|
104
|
-
};
|
|
104
|
+
});
|
|
105
105
|
|
|
106
106
|
const priorities = [
|
|
107
107
|
{ name: 'High', value: 4 },
|
|
@@ -119,8 +119,8 @@ export default {
|
|
|
119
119
|
</script>
|
|
120
120
|
|
|
121
121
|
<style lang="scss">
|
|
122
|
-
@
|
|
123
|
-
@
|
|
122
|
+
@use "../variables.scss" as *;
|
|
123
|
+
@use "../dx-styles.scss" as *;
|
|
124
124
|
|
|
125
125
|
.dx-swatch-additional, .dx-swatch-additional-dark {
|
|
126
126
|
&.side-navigation-menu {
|
|
@@ -46,10 +46,11 @@ export default {
|
|
|
46
46
|
height: 100%;
|
|
47
47
|
|
|
48
48
|
.dx-card {
|
|
49
|
-
width:
|
|
49
|
+
width: 360px;
|
|
50
50
|
margin: auto auto;
|
|
51
|
-
padding:
|
|
51
|
+
padding: 24px;
|
|
52
52
|
flex-grow: 0;
|
|
53
|
+
border-radius: 8px;
|
|
53
54
|
|
|
54
55
|
.screen-x-small & {
|
|
55
56
|
width: 100%;
|
|
@@ -62,18 +63,22 @@ export default {
|
|
|
62
63
|
}
|
|
63
64
|
|
|
64
65
|
.header {
|
|
65
|
-
margin
|
|
66
|
+
margin: 24px 0;
|
|
66
67
|
|
|
67
68
|
.title {
|
|
68
69
|
color: var(--base-text-color);
|
|
69
|
-
|
|
70
|
+
text-align: center;
|
|
71
|
+
line-height: 24px;
|
|
70
72
|
font-weight: 500;
|
|
71
73
|
font-size: 24px;
|
|
72
74
|
}
|
|
73
75
|
|
|
74
76
|
.description {
|
|
75
77
|
color: var(--base-text-color-alpha-7);
|
|
76
|
-
line-height:
|
|
78
|
+
line-height: 16px;
|
|
79
|
+
font-size: 12px;
|
|
80
|
+
margin-top: 32px;
|
|
81
|
+
text-align: center;
|
|
77
82
|
}
|
|
78
83
|
}
|
|
79
84
|
}
|
|
@@ -1,14 +1,28 @@
|
|
|
1
|
+
@use 'sass:meta';
|
|
2
|
+
@use 'sass:color';
|
|
3
|
+
@use 'sass:map';
|
|
4
|
+
@use "./themes/generated/variables.base.scss" as variablesBase;
|
|
5
|
+
@use "./themes/generated/variables.base.dark.scss" as variablesBaseDark;
|
|
6
|
+
@use "./themes/generated/variables.additional.scss" as variablesAdditional;
|
|
7
|
+
@use "./themes/generated/variables.additional.dark.scss" as variablesAdditionalDark;
|
|
8
|
+
|
|
9
|
+
@mixin theme-variables($theme-name) {
|
|
10
|
+
$theme: meta.module-variables($theme-name);
|
|
11
|
+
$base-text-color: map.get($theme, 'base-text-color');
|
|
12
|
+
$base-bg: map.get($theme, 'base-bg');
|
|
13
|
+
|
|
14
|
+
--base-text-color: #{$base-text-color};
|
|
15
|
+
--base-bg: #{$base-bg};
|
|
16
|
+
--base-bg-darken-5: #{color.adjust($base-bg, $lightness: -5%)};
|
|
17
|
+
--base-accent: #{map.get($theme, 'base-accent')};
|
|
18
|
+
--base-text-color-alpha-7: #{rgba($base-text-color, color.alpha($base-text-color) * 0.7)};
|
|
19
|
+
}
|
|
20
|
+
|
|
1
21
|
:root {
|
|
2
22
|
body {
|
|
3
|
-
@
|
|
23
|
+
@include theme-variables('variablesBase');
|
|
4
24
|
|
|
5
|
-
--base-text-color: #{$base-text-color};
|
|
6
|
-
--base-bg: #{$base-bg};
|
|
7
|
-
--base-bg-darken-5: #{darken($base-bg, 5)};
|
|
8
|
-
--base-accent: #{$base-accent};
|
|
9
|
-
--base-text-color-alpha-7: #{rgba($base-text-color, alpha($base-text-color) * 0.7)};
|
|
10
25
|
--footer-border-color: rgba(224, 224, 224, 1);
|
|
11
|
-
|
|
12
26
|
--plus-icon-color: #242424;
|
|
13
27
|
--devextreme-logo-color: #596C7D;
|
|
14
28
|
--vue-logo-text-color: #35495E;
|
|
@@ -17,14 +31,12 @@
|
|
|
17
31
|
--shadow-color-second: rgba(0, 0, 0, 0.12);
|
|
18
32
|
}
|
|
19
33
|
|
|
20
|
-
.dx-swatch-
|
|
21
|
-
@
|
|
34
|
+
.dx-swatch-additional {
|
|
35
|
+
@include theme-variables('variablesAdditional');
|
|
36
|
+
}
|
|
22
37
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
--base-bg-darken-5: #{darken($base-bg, 5)};
|
|
26
|
-
--base-accent: #{$base-accent};
|
|
27
|
-
--base-text-color-alpha-7: #{rgba($base-text-color, alpha($base-text-color) * 0.7)};
|
|
38
|
+
.dx-swatch-dark {
|
|
39
|
+
@include theme-variables('variablesBaseDark');;
|
|
28
40
|
|
|
29
41
|
--plus-icon-color: #fff;
|
|
30
42
|
--devextreme-logo-color: #fff;
|
|
@@ -34,4 +46,8 @@
|
|
|
34
46
|
--shadow-color-second: rgba(0, 0, 0, 0.24);
|
|
35
47
|
--footer-border-color: rgba(97, 97, 97, 1);
|
|
36
48
|
}
|
|
49
|
+
|
|
50
|
+
.dx-swatch-additional-dark {
|
|
51
|
+
@include theme-variables('variablesAdditionalDark');
|
|
52
|
+
}
|
|
37
53
|
}
|
|
@@ -46,13 +46,6 @@
|
|
|
46
46
|
>
|
|
47
47
|
</dx-button-options>
|
|
48
48
|
</dx-button-item>
|
|
49
|
-
<dx-item>
|
|
50
|
-
<template #default>
|
|
51
|
-
<div class="login-link">
|
|
52
|
-
Have an account? <router-link to="/login-form">Sign In</router-link>
|
|
53
|
-
</div>
|
|
54
|
-
</template>
|
|
55
|
-
</dx-item>
|
|
56
49
|
<template #createAccount>
|
|
57
50
|
<div>
|
|
58
51
|
<span class="dx-button-text">
|
|
@@ -62,6 +55,9 @@
|
|
|
62
55
|
</div>
|
|
63
56
|
</template>
|
|
64
57
|
</dx-form>
|
|
58
|
+
<div class="login-link">
|
|
59
|
+
Have an account? <router-link to="/login-form">Sign In</router-link>
|
|
60
|
+
</div>
|
|
65
61
|
</form>
|
|
66
62
|
</template>
|
|
67
63
|
|
|
@@ -104,28 +100,28 @@ export default {
|
|
|
104
100
|
});
|
|
105
101
|
|
|
106
102
|
const onSubmit = async () => {
|
|
107
|
-
|
|
108
|
-
|
|
103
|
+
const { email, password } = formData;
|
|
104
|
+
loading.value = true;
|
|
109
105
|
|
|
110
|
-
|
|
111
|
-
|
|
106
|
+
const result = await auth.createAccount(email, password);
|
|
107
|
+
loading.value = false;
|
|
112
108
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
109
|
+
if (result.isOk) {
|
|
110
|
+
router.push("/login-form");
|
|
111
|
+
} else {
|
|
112
|
+
notify(result.message, 'error', 2000);
|
|
113
|
+
}
|
|
114
|
+
};
|
|
119
115
|
|
|
120
116
|
function confirmPassword(e) {
|
|
121
117
|
return e.value === formData.password;
|
|
122
118
|
}
|
|
123
119
|
|
|
124
120
|
return {
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
121
|
+
formData,
|
|
122
|
+
loading,
|
|
123
|
+
onSubmit,
|
|
124
|
+
confirmPassword
|
|
129
125
|
}
|
|
130
126
|
}
|
|
131
127
|
}
|
|
@@ -134,9 +130,8 @@ export default {
|
|
|
134
130
|
<style lang="scss">
|
|
135
131
|
.create-account-form {
|
|
136
132
|
.policy-info {
|
|
137
|
-
margin: 10px 0;
|
|
138
133
|
color: var(--base-text-color-alpha-7);
|
|
139
|
-
font-size:
|
|
134
|
+
font-size: 12px;
|
|
140
135
|
font-style: normal;
|
|
141
136
|
|
|
142
137
|
a {
|
|
@@ -146,8 +141,10 @@ export default {
|
|
|
146
141
|
|
|
147
142
|
.login-link {
|
|
148
143
|
color: var(--base-accent);
|
|
149
|
-
font-size:
|
|
144
|
+
font-size: 12px;
|
|
150
145
|
text-align: center;
|
|
146
|
+
padding: 6px 0 32px 0;
|
|
147
|
+
border-bottom: 1px solid var(--border-color);
|
|
151
148
|
}
|
|
152
149
|
}
|
|
153
150
|
</style>
|
|
@@ -34,20 +34,6 @@
|
|
|
34
34
|
>
|
|
35
35
|
</dx-button-options>
|
|
36
36
|
</dx-button-item>
|
|
37
|
-
<dx-item>
|
|
38
|
-
<template #default>
|
|
39
|
-
<div class="link">
|
|
40
|
-
<router-link to="/reset-password">Forgot password?</router-link>
|
|
41
|
-
</div>
|
|
42
|
-
</template>
|
|
43
|
-
</dx-item>
|
|
44
|
-
<dx-button-item>
|
|
45
|
-
<dx-button-options
|
|
46
|
-
text="Create an account"
|
|
47
|
-
width="100%"
|
|
48
|
-
:on-click="onCreateAccountClick"
|
|
49
|
-
/>
|
|
50
|
-
</dx-button-item>
|
|
51
37
|
<template #signInTemplate>
|
|
52
38
|
<div>
|
|
53
39
|
<span class="dx-button-text">
|
|
@@ -57,6 +43,15 @@
|
|
|
57
43
|
</div>
|
|
58
44
|
</template>
|
|
59
45
|
</dx-form>
|
|
46
|
+
<div class="link">
|
|
47
|
+
<router-link to="/reset-password">Forgot password?</router-link>
|
|
48
|
+
</div>
|
|
49
|
+
<dx-button
|
|
50
|
+
text="Create an account"
|
|
51
|
+
stylingMode="outlined"
|
|
52
|
+
width="100%"
|
|
53
|
+
@click="onCreateAccountClick"
|
|
54
|
+
/>
|
|
60
55
|
</form>
|
|
61
56
|
</template>
|
|
62
57
|
|
|
@@ -70,6 +65,7 @@ import DxForm, {
|
|
|
70
65
|
DxButtonItem,
|
|
71
66
|
DxButtonOptions
|
|
72
67
|
} from "devextreme-vue/form";
|
|
68
|
+
import { DxButton } from 'devextreme-vue';
|
|
73
69
|
import notify from 'devextreme/ui/notify';
|
|
74
70
|
|
|
75
71
|
import auth from "../auth";
|
|
@@ -119,26 +115,23 @@ export default {
|
|
|
119
115
|
DxItem,
|
|
120
116
|
DxLabel,
|
|
121
117
|
DxButtonItem,
|
|
122
|
-
DxButtonOptions
|
|
118
|
+
DxButtonOptions,
|
|
119
|
+
DxButton
|
|
123
120
|
}
|
|
124
121
|
};
|
|
125
122
|
</script>
|
|
126
123
|
|
|
127
124
|
<style lang="scss">
|
|
128
125
|
.login-form {
|
|
126
|
+
.form-text {
|
|
127
|
+
color: var(--base-text-color-alpha-7);
|
|
128
|
+
}
|
|
129
|
+
|
|
129
130
|
.link {
|
|
130
131
|
text-align: center;
|
|
131
|
-
font-size:
|
|
132
|
+
font-size: 12px;
|
|
132
133
|
font-style: normal;
|
|
133
|
-
|
|
134
|
-
a {
|
|
135
|
-
text-decoration: none;
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
.form-text {
|
|
140
|
-
margin: 10px 0;
|
|
141
|
-
color: var(--base-text-color-alpha-7);
|
|
134
|
+
margin: 6px 0 50px;
|
|
142
135
|
}
|
|
143
136
|
}
|
|
144
137
|
</style>
|
|
@@ -20,13 +20,6 @@
|
|
|
20
20
|
>
|
|
21
21
|
</dx-button-options>
|
|
22
22
|
</dx-button-item>
|
|
23
|
-
<dx-item>
|
|
24
|
-
<template #default>
|
|
25
|
-
<div class="login-link">
|
|
26
|
-
Return to <router-link to="/login-form">Sign In</router-link>
|
|
27
|
-
</div>
|
|
28
|
-
</template>
|
|
29
|
-
</dx-item>
|
|
30
23
|
<template #resetTemplate>
|
|
31
24
|
<div>
|
|
32
25
|
<span class="dx-button-text">
|
|
@@ -36,6 +29,9 @@
|
|
|
36
29
|
</div>
|
|
37
30
|
</template>
|
|
38
31
|
</dx-form>
|
|
32
|
+
<div class="login-link">
|
|
33
|
+
Return to <router-link to="/login-form">Sign In</router-link>
|
|
34
|
+
</div>
|
|
39
35
|
</form>
|
|
40
36
|
</template>
|
|
41
37
|
|
|
@@ -103,13 +99,14 @@ export default {
|
|
|
103
99
|
<style lang="scss">
|
|
104
100
|
.reset-password-form {
|
|
105
101
|
.submit-button {
|
|
106
|
-
margin-top:
|
|
102
|
+
margin-top: 18px;
|
|
107
103
|
}
|
|
108
104
|
|
|
109
105
|
.login-link {
|
|
110
106
|
color: var(--base-accent);
|
|
111
|
-
font-size:
|
|
107
|
+
font-size: 12px;
|
|
112
108
|
text-align: center;
|
|
109
|
+
margin-top: 6px;
|
|
113
110
|
}
|
|
114
111
|
}
|
|
115
112
|
</style>
|