Projekt

Obecné

Profil

« Předchozí | Další » 

Revize bebb116e

Přidáno uživatelem Dominik Chlouba před téměř 4 roky(ů)

Fixed some UI bugs, finished minor components, basic actions
refs #8895 @0.15hod

Zobrazit rozdíly:

src/Core/Application/Leuze.Core.Application.UI/Pages/Index.razor
2 2
@layout MainLayout
3 3
@attribute [Authorize]
4 4

  
5
<h1>Hello, world!</h1>
6

  
7
Welcome to your new app.
8

  
9
<SurveyPrompt Title="How is Blazor working for you?" />
10 5
<AuthorizeView>
11
    @context.User.Identity?.IsAuthenticated
12
</AuthorizeView>
6
    <h1>Vítejte, @context.User.Identity?.Name</h1>
7
</AuthorizeView>
src/Core/Application/Leuze.Core.Application.UI/Pages/_Host.cshtml
15 15
    <link href="css/site.css" rel="stylesheet" />
16 16
    <link href="_content/Blazored.Toast/blazored-toast.min.css" rel="stylesheet" />
17 17
    <link href="Leuze.App.styles.css" rel="stylesheet" />
18
    <link href="css/all.min.css" rel="stylesheet" />
18 19
</head>
19 20
<body>
20 21
    <component type="typeof(App)" render-mode="ServerPrerendered" />
src/Core/Application/Leuze.Core.Application.UI/Shared/NavMenu.razor
1 1
<aside class="@_aside">
2 2
    <nav class="@_nav">
3
        <NavLink href="/dashboard">
3
        <NavLink href="/">
4 4
            <div class="item">
5 5
                <img src="/Resources/Icons/analytics.svg" class="item_icon nav_icon_1" />
6 6
                <span>Přehled</span>
src/Modules/Goal/Application/Leuze.Modules.Goal.Application.UI/Leuze.Modules.Goal.Application.UI.csproj
24 24
    <ProjectReference Include="..\Leuze.Modules.Goal.Application\Leuze.Modules.Goal.Application.csproj" />
25 25
  </ItemGroup>
26 26

  
27
  <ItemGroup>
28
    <Folder Include="Pages\Components\" />
29
  </ItemGroup>
30

  
31 27
</Project>
src/Modules/Goal/Application/Leuze.Modules.Goal.Application.UI/Pages/Components/CreateDefinitionRangeAside.razor
1

2
<aside class="@_aside review_detail">
3
    <div class="review_detail_header">
4
        <div>
5
            Vytvořit oblast definic
6
        </div>
7
        <div>
8
            <div class="close_button" @onclick="Close">
9
                <i class="fal fa-times"></i>
10
            </div>
11
        </div>
12
    </div>
13
    <div class="review_detail_body">
14
        <div class="review_description_title">Datum začátku oblasti</div>
15
        <input type="date" />
16
        <div class="review_description_title">Datum konce oblasti</div>
17
        <input type="date" />
18
        <div class="review_description_title">Firemní výsledek oblasti</div>
19
        <input type="number" />
20
    </div>
21
    <div class="review_detail_footer">
22
        <button>Uložit</button>
23
        <button @onclick="Close">Zrušit</button>
24
    </div>
25
</aside>
26

  
27

  
28
<BlazorStyled.Styled @bind-Classname="@_aside">
29
    right: @(Show ? "0" : "-615")px;
30
</BlazorStyled.Styled>
31
<BlazorStyled.Styled>
32
    .review_detail {
33
    width: 600px;
34
    height: 100%;
35
    position: fixed;
36
    transition: .25s right;
37
    top: 0;
38
    background-color: white;
39
    -webkit-box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.05);
40
    -moz-box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.05);
41
    box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.05);
42
    }
43

  
44
    .review_detail_header > div {
45
    height: 100%;
46
    display: flex;
47
    align-items: center;
48
    }
49

  
50
    .review_detail_header {
51
    padding: 12px 24px;
52
    border-bottom: 1px solid #11111122;
53
    height: 26px;
54
    display: flex;
55
    align-items: center;
56
    justify-content: space-between;
57
    }
58

  
59
    .review_detail_body{
60
    padding: 16px 0;
61
    height: calc(100% - 143px - 50px - 12px);
62
    overflow-y: auto;
63
    overflow-x: hidden;
64
    }
65

  
66
    .review_detail_footer{
67
    height: 36px;
68
    background-color: #F6F8F9;
69
    position: absolute;
70
    bottom: 0;
71
    left: 0;
72
    width: calc(100% - 50px);
73
    display: grid;
74
    padding: 24px;
75
    grid-template-columns: repeat(2, 1fr);
76
    }
77

  
78
    .review_detail_footer button:first-child{
79
    margin-right: 12px;
80
    }
81

  
82
    .review_detail_footer button:last-child{
83
    margin-left: 12px;
84
    }
85
</BlazorStyled.Styled>
86

  
87
@code {
88

  
89
    private string _aside;
90

  
91
    [Parameter]
92
    public bool Show { get; set; } = false;
93

  
94
    [Parameter]
95
    public EventCallback CloseAside { get; set; }
96

  
97
    private async Task Close()
98
    {
99
        //ResetValues();
100
        await CloseAside.InvokeAsync();
101
    }
102

  
103
}
src/Modules/Goal/Application/Leuze.Modules.Goal.Application.UI/Pages/Components/CreateGoalAside.razor
1

2
<aside class="@_aside review_detail">
3
    <div class="review_detail_header">
4
        <div>Vytvořit nový cíl</div>
5
        <div>
6
            <div class="close_button" @onclick="Close">
7
                <i class="fal fa-times"></i>
8
            </div>
9
        </div>
10
    </div>
11
    <div class="review_detail_body">
12
        <div class="review_description_title">Název cíle</div>
13
        <input type="text" />
14
        <div class="review_description_title">Popis cíle</div>
15
        <textarea></textarea>
16
    </div>
17
    <div class="review_detail_footer">
18
        <button>Vytvořit</button>
19
        <button>Zrušit</button>
20
    </div>
21
</aside>
22

  
23
<BlazorStyled.Styled @bind-Classname="@_aside">
24
    right: @(Show ? "0" : "-615")px;
25
</BlazorStyled.Styled>
26
<BlazorStyled.Styled>
27
    .review_detail {
28
    width: 600px;
29
    height: 100%;
30
    position: fixed;
31
    top: 0;
32
    transition: .25s right;
33
    background-color: white;
34
    -webkit-box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.05);
35
    -moz-box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.05);
36
    box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.05);
37
    }
38

  
39
    .review_detail_header > div {
40
    height: 100%;
41
    display: flex;
42
    align-items: center;
43
    }
44

  
45
    .review_detail_header {
46
    padding: 12px 24px;
47
    border-bottom: 1px solid #11111122;
48
    height: 26px;
49
    display: flex;
50
    align-items: center;
51
    justify-content: space-between;
52
    }
53

  
54
    .review_detail_body{
55
    padding: 16px 0;
56
    height: calc(100% - 143px - 50px - 12px);
57
    overflow-y: auto;
58
    overflow-x: hidden;
59
    }
60

  
61
    .review_detail_footer{
62
    height: 36px;
63
    background-color: #F6F8F9;
64
    position: absolute;
65
    bottom: 0;
66
    left: 0;
67
    width: calc(100% - 50px);
68
    display: grid;
69
    padding: 24px;
70
    grid-template-columns: repeat(2, 1fr);
71
    }
72

  
73
    .review_detail_footer button:first-child{
74
    margin-right: 12px;
75
    }
76

  
77
    .review_detail_footer button:last-child{
78
    margin-left: 12px;
79
    }
80
    .review_button {
81
    color: red;
82
    cursor: pointer;
83
    opacity: .75;
84
    }
85

  
86
    .review_button:hover {
87
    opacity: 1;
88
    }
89

  
90
    .review_button.accepted {
91
    color: green;
92
    }
93

  
94
    .review_button:not(:last-child) {
95
    margin-right: 16px;
96
    }
97
    .review_detail_body .review_description {
98
    padding: 8px 12px;
99
    border: 1px solid white;
100
    width: calc(100% - 24px);
101
    outline: none;
102
    margin: 12px 24px 24px 24px;
103
    }
104

  
105
    .review_detail_body .review_description_title {
106
    margin: 0 24px;
107
    }
108

  
109
    .review_description_paragraph{
110
    margin: 12px 24px 24px 24px;
111
    }
112

  
113
    .review_detail_body .review_description:hover{
114
    border: 1px solid #EEEEEE;
115
    }
116

  
117
    .review_detail_body .review_description:focus{
118
    border: 1px solid #A8A8A8;
119
    }
120
</BlazorStyled.Styled>
121

  
122
@code {
123

  
124
    private string _aside;
125

  
126
    [Parameter]
127
    public bool Show { get; set; } = false;
128

  
129
    [Parameter]
130
    public EventCallback CloseAside { get; set; }
131

  
132
    private async Task Close()
133
    {
134
        //ResetValues();
135
        await CloseAside.InvokeAsync();
136
    }
137

  
138
}
src/Modules/Goal/Application/Leuze.Modules.Goal.Application.UI/Pages/Components/CreateGoalDefinition.razor
1

2
<aside class="@_aside review_detail">
3
    <div class="review_detail_header">
4
        <div>
5
            Vytvořit definici cílů
6
        </div>
7
        <div>
8
            <div class="close_button" @onclick="Close">
9
                <i class="fal fa-times"></i>
10
            </div>
11
        </div>
12
    </div>
13
    <div class="review_detail_body">
14
        <div class="review_description_title">Název definice</div>
15
        <input type="text" />
16
        <div class="review_description_title">Přiřazený uživatel</div>
17
        <select>
18
            <option value="" disabled>Zvolte uživatele</option>
19
        </select>
20
    </div>
21
    <div class="review_detail_footer">
22
        <button>Vytvořit</button>
23
        <button @onclick="Close">Zrušit</button>
24
    </div>
25
</aside>
26

  
27
<BlazorStyled.Styled @bind-Classname="@_aside">
28
    right: @(Show ? "0" : "-615")px;
29
</BlazorStyled.Styled>
30
<BlazorStyled.Styled>
31
    .review_detail {
32
    width: 600px;
33
    height: 100%;
34
    position: fixed;
35
    top: 0;
36
    transition: .25s right;
37
    background-color: white;
38
    -webkit-box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.05);
39
    -moz-box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.05);
40
    box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.05);
41
    }
42

  
43
    .review_detail_header > div {
44
    height: 100%;
45
    display: flex;
46
    align-items: center;
47
    }
48

  
49
    .review_detail_header {
50
    padding: 12px 24px;
51
    border-bottom: 1px solid #11111122;
52
    height: 26px;
53
    display: flex;
54
    align-items: center;
55
    justify-content: space-between;
56
    }
57

  
58
    .review_detail_body{
59
    padding: 16px 0;
60
    height: calc(100% - 143px - 50px - 12px);
61
    overflow-y: auto;
62
    overflow-x: hidden;
63
    }
64

  
65
    .review_detail_footer{
66
    height: 36px;
67
    background-color: #F6F8F9;
68
    position: absolute;
69
    bottom: 0;
70
    left: 0;
71
    width: calc(100% - 50px);
72
    display: grid;
73
    padding: 24px;
74
    grid-template-columns: repeat(2, 1fr);
75
    }
76

  
77
    .review_detail_footer button:first-child{
78
    margin-right: 12px;
79
    }
80

  
81
    .review_detail_footer button:last-child{
82
    margin-left: 12px;
83
    }
84
    .review_button {
85
    color: red;
86
    cursor: pointer;
87
    opacity: .75;
88
    }
89

  
90
    .review_button:hover {
91
    opacity: 1;
92
    }
93

  
94
    .review_button.accepted {
95
    color: green;
96
    }
97

  
98
    .review_button:not(:last-child) {
99
    margin-right: 16px;
100
    }
101
    .review_detail_body .review_description {
102
    padding: 8px 12px;
103
    border: 1px solid white;
104
    width: calc(100% - 24px);
105
    outline: none;
106
    margin: 12px 24px 24px 24px;
107
    }
108

  
109
    .review_detail_body .review_description_title {
110
    margin: 0 24px;
111
    }
112

  
113
    .review_description_paragraph{
114
    margin: 12px 24px 24px 24px;
115
    }
116

  
117
    .review_detail_body .review_description:hover{
118
    border: 1px solid #EEEEEE;
119
    }
120

  
121
    .review_detail_body .review_description:focus{
122
    border: 1px solid #A8A8A8;
123
    }
124
</BlazorStyled.Styled>
125

  
126
@code {
127

  
128
    private string _aside;
129

  
130
    [Parameter]
131
    public bool Show { get; set; } = false;
132

  
133
    [Parameter]
134
    public EventCallback CloseAside { get; set; }
135

  
136
    private async Task Close()
137
    {
138
        //ResetValues();
139
        await CloseAside.InvokeAsync();
140
    }
141

  
142
}
src/Modules/Goal/Application/Leuze.Modules.Goal.Application.UI/Pages/Components/GoalDetailAside.razor
1

2
<aside class="@_aside goal_detail">
3
    <div class="goal_detail_header">
4
        <div>
5
            <button class="authorize_button accepted">Schválit</button>
6
            <div class="review_button accepted">
7
                1 <i class="fal fa-trophy"></i>
8
            </div>
9
            <div class="review_button accepted" title="zkouška">
10
                2 <i class="fal fa-trophy"></i>
11
            </div>
12
            <div class="review_button">
13
                <i class="fal fa-trophy-alt"></i>
14
            </div>
15
            <button class="authorize_button">Vytvořit 1. hodnocení</button>
16
        </div>
17
        <div>
18
            <div class="close_button" @onclick="Close">
19
                <i class="fal fa-times"></i>
20
            </div>
21
        </div>
22
    </div>
23
    <div class="goal_detail_body">
24
        <div class="goal_detail_area">
25
            <input class="goal_name" type="text" placeholder="Zadejte název cíle" />
26
            <div class="goal_description_title">Popis cíle</div>
27
            <textarea oninput='this.style.height = "";this.style.height = this.scrollHeight + "px"'
28
                      class="goal_description" placeholder="Vyplňte popis cíle"></textarea>
29
        </div>
30
        <div class="goal_communication_area">
31
            <div class="goal_communication_item">
32
                Dominik Chlouba vytvořil tento cíl. <span class="date">3. 5. 2021</span>
33
            </div>
34
            <div class="goal_communication_item">
35
                <div class="item_tool">
36
                    <div>Dominik Chlouba přidal komentář. <span class="date">3. 5. 2021</span></div>
37
                    <div>
38
                        <div class="action_buttons" style="display: none">
39
                            <i class="fal fa-edit"></i>
40
                            <i class="fal fa-trash"></i>
41
                        </div>
42
                        <div class="action_buttons" style="display: block">
43
                            <i class="green fal fa-check"></i>
44
                            <i class="red fal fa-times"></i>
45
                        </div>
46
                    </div>
47
                </div>
48
                <textarea class="comment-textarea noedit"
49
                          oninput='this.style.height = "";this.style.height = this.scrollHeight + "px"'
50
                          placeholder="Upravte komentář"></textarea>
51
            </div>
52
            <div class="goal_communication_item">
53
                Dominik Chlouba aktualizoval popis cíle. <span class="date">3. 5. 2021</span>
54
            </div>
55
            <div class="goal_communication_item">
56
                Dominik Chlouba aktualizoval popis cíle. <span class="date">3. 5. 2021</span>
57
            </div>
58
            <div class="goal_communication_item">
59
                Dominik Chlouba aktualizoval popis cíle. <span class="date">3. 5. 2021</span>
60
            </div>
61
            <div class="goal_communication_item">
62
                Dominik Chlouba aktualizoval popis cíle. <span class="date">3. 5. 2021</span>
63
            </div>
64
            <div class="goal_communication_item">
65
                Dominik Chlouba aktualizoval popis cíle. <span class="date">3. 5. 2021</span>
66
            </div>
67
        </div>
68
    </div>
69
    <div class="goal_detail_footer">
70
        <textarea placeholder="Přidat soukromý či veřejný komentář"></textarea>
71
        <div class="goal_comment_tools">
72
            <select>
73
                <option value="private">Soukromý</option>
74
                <option value="public">Veřejný</option>
75
            </select>
76
            <button>Přidat komentář</button>
77
        </div>
78
    </div>
79
</aside>
80
<Leuze.Modules.Goal.Application.UI.Pages.Components.ReviewDetailAside Show="ReviewId != default(Guid)" ReviewId="ReviewId" CloseAside="CloseReview" />
81

  
82
<BlazorStyled.Styled @bind-Classname="@_aside">
83
    right: @(Show ? "0" : "-615")px;
84
</BlazorStyled.Styled>
85
<BlazorStyled.Styled>
86
    .goal_detail {
87
    width: 600px;
88
    height: 100%;
89
    position: fixed;
90
    top: 0;
91
    transition: .25s right;
92
    background-color: white;
93
    -webkit-box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.05);
94
    -moz-box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.05);
95
    box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.05);
96
    }
97

  
98
    .goal_detail_header {
99
    padding: 12px 24px;
100
    border-bottom: 1px solid #11111122;
101
    height: 26px;
102
    display: flex;
103
    align-items: center;
104
    justify-content: space-between;
105
    }
106

  
107
    .goal_detail_body {
108
    padding: 0 0 12px 0;
109
    height: calc(100% - 143px - 50px - 12px);
110
    overflow-y: auto;
111
    background-color: #F6F8F9;
112
    overflow-x: hidden;
113
    }
114

  
115
    .goal_detail_area {
116
    background-color: white;
117
    padding-top: 12px;
118
    }
119

  
120
    .goal_detail_body .goal_name {
121
    padding: 8px 12px;
122
    border: 1px solid white;
123
    width: calc(100% - 24px);
124
    outline: none;
125
    margin: 12px 24px 12px 24px;
126
    }
127

  
128
    .goal_detail_body .goal_description {
129
    padding: 8px 12px;
130
    border: 1px solid white;
131
    width: calc(100% - 24px);
132
    outline: none;
133
    margin: 12px 24px 24px 24px;
134
    }
135

  
136
    .goal_detail_body .goal_description_title {
137
    margin: 0 24px;
138
    }
139

  
140
    .review_description_paragraph{
141
    margin: 12px 24px 24px 24px;
142
    }
143

  
144
    .goal_detail_body .goal_name:hover, .goal_detail_body .goal_description:hover{
145
    border: 1px solid #EEEEEE;
146
    }
147

  
148
    .goal_detail_body .goal_name:focus, .goal_detail_body .goal_description:focus{
149
    border: 1px solid #A8A8A8;
150
    }
151

  
152
    .goal_communication_area {
153
    padding: 12px 0;
154
    }
155

  
156
    .goal_communication_area .goal_communication_item {
157
    background-color: #F6F8F9;
158
    padding: 12px 0;
159
    margin: 0 24px;
160
    }
161

  
162
    .goal_communication_area .goal_communication_item span.date {
163
    color: #A8A8A8;
164
    }
165

  
166
    .goal_communication_area .goal_communication_item .item_tool {
167
    display: flex;
168
    justify-content: space-between;
169
    align-items: center;
170
    }
171

  
172
    .goal_communication_area .goal_communication_item:not(:last-child) {
173
    border-bottom: 1px solid #11111122;
174
    }
175

  
176
    .goal_detail_footer {
177
    background-color: #F6F8F9;
178
    padding: 24px;
179
    border-top: 1px solid #11111122;
180
    height: 94px;
181
    }
182

  
183
    .goal_detail_footer textarea {
184
    border-radius: 4px;
185
    border: 1px solid gray;
186
    resize: none;
187
    padding: 8px 12px;
188
    height: 50px;
189
    width: calc(100% - 26px);
190
    margin-bottom: 12px;
191
    }
192

  
193
    .goal_detail_footer .goal_comment_tools {
194
    display: flex;
195
    justify-content: space-between;
196
    align-items: center;
197
    }
198

  
199
    .goal_detail_footer .goal_comment_tools select {
200
    border: none;
201
    outline: none;
202
    background-color: #F6F8F9;
203
    }
204

  
205
    .goal_detail_footer .goal_comment_tools button {
206

  
207
    }
208

  
209
    .goal_detail_header > div {
210
    height: 100%;
211
    display: flex;
212
    align-items: center;
213
    }
214

  
215
    .authorize_button {
216
    border: 1px solid #111111AA;
217
    background: white;
218
    font-size: 12px;
219
    height: 100%;
220
    padding: 0 12px;
221
    cursor: pointer;
222
    opacity: 1;
223
    transition: .25s color, .25s background-color, .25s opacity;
224
    }
225

  
226
    .authorize_button:not(.accepted):hover {
227
    background-color: #111111;
228
    color: white;
229
    opacity: .75;
230
    }
231

  
232
    .authorize_button:not(:last-child) {
233
    margin-right: 16px;
234
    }
235

  
236
    .authorize_button.accepted {
237
    background-color: green;
238
    border: 1px solid green;
239
    color: white;
240
    cursor: default;
241
    }
242

  
243
    .review_button {
244
    color: red;
245
    cursor: pointer;
246
    opacity: .75;
247
    }
248

  
249
    .review_button:hover {
250
    opacity: 1;
251
    }
252

  
253
    .review_button.accepted {
254
    color: green;
255
    }
256

  
257
    .review_button:not(:last-child) {
258
    margin-right: 16px;
259
    }
260

  
261
    .close_button {
262
    cursor: pointer;
263
    color: darkgray;
264
    }
265

  
266
    .close_button:hover {
267
    color: #111111;
268
    }
269

  
270
    ::-webkit-scrollbar {
271
    width: 10px;
272
    }
273

  
274
    /* Track */
275
    ::-webkit-scrollbar-track {
276
    background: #f1f1f1;
277
    }
278

  
279
    /* Handle */
280
    ::-webkit-scrollbar-thumb {
281
    background: #888;
282
    }
283

  
284
    /* Handle on hover */
285
    ::-webkit-scrollbar-thumb:hover {
286
    background: #555;
287
    }
288

  
289
    .green {
290
    color: green;
291
    }
292

  
293
    .red {
294
    color: red;
295
    }
296

  
297
    .action_buttons > i {
298
    cursor: pointer;
299
    opacity: .75;
300
    transition: .25s opacity;
301
    }
302

  
303
    .action_buttons > i:hover {
304
    opacity: 1;
305
    }
306

  
307
    .action_buttons > i:not(:last-child) {
308
    margin-right: 8px;
309
    }
310

  
311
    .comment-textarea {
312
    width: calc(100% - 24px);
313
    outline: none;
314
    background-color: transparent;
315
    border: none;
316
    resize: none;
317
    }
318
</BlazorStyled.Styled>
319

  
320

  
321
@code {
322

  
323
    private string _aside;
324

  
325
    [Parameter]
326
    public bool Show { get; set; } = false;
327

  
328
    [Parameter]
329
    public Guid DetailId { get; set; } = default;
330

  
331
    [Parameter]
332
    public EventCallback CloseAside { get; set; }
333

  
334
    public Guid ReviewId { get; set; } = default(Guid);
335

  
336
    public void SetReviewId(Guid id) => ReviewId = id;
337

  
338
    public void CloseReview() => ReviewId = default(Guid);
339

  
340
    private async Task Close()
341
    {
342
        //ResetValues();
343
        await CloseAside.InvokeAsync();
344
    }
345

  
346
}
src/Modules/Goal/Application/Leuze.Modules.Goal.Application.UI/Pages/Components/ReviewDetailAside.razor
1

2
<aside class="@_aside review_detail">
3
    <div class="review_detail_header">
4
        <div>
5
            <button class="authorize_button accepted">Schválit</button>
6
            <div class="review_button accepted">
7
                <i class="fal fa-user-tie"></i>
8
            </div>
9
            <div class="review_button accepted">
10
                <i class="fal fa-user-graduate"></i>
11
            </div>
12
        </div>
13
        <div>
14
            <div class="close_button" @onclick="Close">
15
                <i class="fal fa-times"></i>
16
            </div>
17
        </div>
18
    </div>
19
    <div class="review_detail_body">
20
        <div class="review_description_title">Poznámka dohlížejícího</div>
21
        <p class="review_description_paragraph">Lorem ipsum dolor....</p>
22
        <div class="review_description_title">Moje poznámka</div>
23
        <textarea oninput='this.style.height = "";this.style.height = this.scrollHeight + "px"'
24
                  class="review_description" placeholder="Vyplňte popis cíle"></textarea>
25
        <div class="review_description_title">Závěrečné ohodnocení</div>
26
        <input class="review_description" type="range" min="0" max="200" placeholder="0 - 200 %" />
27
    </div>
28
    <div class="review_detail_footer">
29
        <button>Uložit</button>
30
        <button>Zrušit</button>
31
    </div>
32
</aside>
33

  
34
<BlazorStyled.Styled @bind-Classname="@_aside">
35
    right: @(Show ? "0" : "-615")px;
36
</BlazorStyled.Styled>
37
<BlazorStyled.Styled>
38
    .review_detail {
39
    width: 600px;
40
    height: 100%;
41
    position: fixed;
42
    top: 0;
43
    background-color: white;
44
    transition: .25s right;
45
    -webkit-box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.05);
46
    -moz-box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.05);
47
    box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.05);
48
    }
49

  
50
    .review_detail_header > div {
51
    height: 100%;
52
    display: flex;
53
    align-items: center;
54
    }
55

  
56
    .review_detail_header {
57
    padding: 12px 24px;
58
    border-bottom: 1px solid #11111122;
59
    height: 26px;
60
    display: flex;
61
    align-items: center;
62
    justify-content: space-between;
63
    }
64

  
65
    .review_detail_body{
66
    padding: 16px 0;
67
    height: calc(100% - 143px - 50px - 12px);
68
    overflow-y: auto;
69
    overflow-x: hidden;
70
    }
71

  
72
    .review_detail_footer{
73
    height: 36px;
74
    background-color: #F6F8F9;
75
    position: absolute;
76
    bottom: 0;
77
    left: 0;
78
    width: calc(100% - 50px);
79
    display: grid;
80
    padding: 24px;
81
    grid-template-columns: repeat(2, 1fr);
82
    }
83

  
84
    .review_detail_footer button:first-child{
85
    margin-right: 12px;
86
    }
87

  
88
    .review_detail_footer button:last-child{
89
    margin-left: 12px;
90
    }
91
    .review_button {
92
    color: red;
93
    cursor: pointer;
94
    opacity: .75;
95
    }
96

  
97
    .review_button:hover {
98
    opacity: 1;
99
    }
100

  
101
    .review_button.accepted {
102
    color: green;
103
    }
104

  
105
    .review_button:not(:last-child) {
106
    margin-right: 16px;
107
    }
108
    .review_detail_body .review_description {
109
    padding: 8px 12px;
110
    border: 1px solid white;
111
    width: calc(100% - 24px);
112
    outline: none;
113
    margin: 12px 24px 24px 24px;
114
    }
115

  
116
    .review_detail_body .review_description_title {
117
    margin: 0 24px;
118
    }
119

  
120
    .review_description_paragraph{
121
    margin: 12px 24px 24px 24px;
122
    }
123

  
124
    .review_detail_body .review_description:hover{
125
    border: 1px solid #EEEEEE;
126
    }
127

  
128
    .review_detail_body .review_description:focus{
129
    border: 1px solid #A8A8A8;
130
    }
131
</BlazorStyled.Styled>
132

  
133
@code {
134

  
135
    private string _aside;
136

  
137
    [Parameter]
138
    public bool Show { get; set; } = false;
139

  
140
    [Parameter]
141
    public Guid ReviewId { get; set; } = default;
142

  
143
    [Parameter]
144
    public EventCallback CloseAside { get; set; }
145

  
146
    private async Task Close()
147
    {
148
        //ResetValues();
149
        await CloseAside.InvokeAsync();
150
    }
151

  
152
}
src/Modules/Goal/Application/Leuze.Modules.Goal.Application.UI/Pages/GoalDefinitionDetail.razor
1
@page "/goal/detail"
1
@page "/goals/detail/{id}"
2
@attribute [Authorize]
3
@layout MainLayout
4
@inject IMediator _mediator
5

  
2 6
<div class="section_header">
3
    <h2>Mé definice cílů</h2>
4
</div>
5
<div>From - to</div>
6
<section>
7
    <div class="goal_def_item goal_item_closed">
8
        <div class="goal_def_name">Název cíle</div>
9
        <div class="goal_def_bottom">
10
            <div class="goal_creator">
11
                <span>David Vytvořílek</span>
12
                <span>3. 5. 2021</span>
13
            </div>
14
            <div class="goal_percentile">
15
                <span>80%</span>
16
                <span>150%</span>
17
            </div>
7
    <div>
8
        <h2>Název definice cílů</h2>
9
        <div class="definition_daterange">
10
            <i class="fal fa-clock"></i>
11
            13.2.2021 - 12.2.2022
18 12
        </div>
19 13
    </div>
20
</section>
21
<aside class="goal_detail">
22
    <div class="goal_detail_header">
23
        Tools budou zde
24
    </div>
25
    <div class="goal_detail_body">
26
        <div class="goal_detail_area">
27
            <input class="goal_name" type="text" placeholder="Zadejte název cíle" />
28
            <div class="goal_description_title">Popis cíle</div>
29
            <textarea class="goal_description" placeholder="Vyplňte popis cíle"></textarea>
30
        </div>
31
        <div class="goal_communication_area">
32
            <div class="goal_communication_item">
33
                Dominik Chlouba vytvořil tento cíl. <span class="date">3. 5. 2021</span>
34
            </div>
35
            <div class="goal_communication_item">
36
                <div class="item_tool">
37
                    <div>Dominik Chlouba přidal komentář. <span class="date">3. 5. 2021</span></div>
38
                    <div>Edit Smazat</div>
39
                </div>
40
                <p>It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout.</p>
41
            </div>
42
            <div class="goal_communication_item">
43
                Dominik Chlouba aktualizoval popis cíle. <span class="date">3. 5. 2021</span>
44
            </div>
45
            <div class="goal_communication_item">
46
                Dominik Chlouba aktualizoval popis cíle. <span class="date">3. 5. 2021</span>
47
            </div>
48
            <div class="goal_communication_item">
49
                Dominik Chlouba aktualizoval popis cíle. <span class="date">3. 5. 2021</span>
50
            </div>
51
            <div class="goal_communication_item">
52
                Dominik Chlouba aktualizoval popis cíle. <span class="date">3. 5. 2021</span>
53
            </div>
54
            <div class="goal_communication_item">
55
                Dominik Chlouba aktualizoval popis cíle. <span class="date">3. 5. 2021</span>
56
            </div>
57
        </div>
58
    </div>
59
    <div class="goal_detail_footer">
60
        <textarea placeholder="Přidat soukromý či veřejný komentář"></textarea>
61
        <div class="goal_comment_tools">
62
            <select>
63
                <option value="private">Soukromý</option>
64
                <option value="public">Veřejný</option>
65
            </select>
66
            <button>Přidat komentář</button>
67
        </div>
14
    <div class="header_buttons">
15
        <button type="button" @onclick="OpenCreateAside">
16
            <i class="fal fa-plus"></i>
17
            <span>Přidat cíl</span>
18
        </button>
68 19
    </div>
69
</aside>
20
</div>
21
@if (Goals is not null)
22
{
23
    <table class="actions" style="width:100%">
24
        <tr>
25
            <th>Název</th>
26
            <th>Vytvořil</th>
27
            <th>Datum vytvoření</th>
28
            <th>Hodnocení uživatel</th>
29
            <th>Hodnocení nadřízený</th>
30
            <th>Akce</th>
31
        </tr>
32
        @foreach (var range in Goals)
33
        {
34
            <tr>
35
                <td>Název cíle</td>
36
                <td>David Vytvořílek</td>
37
                <td>3.5.2021</td>
38
                <td>80%</td>
39
                <td>150%</td>
40
                <td>
41
                    <div class="flex">
42
                        <div></div>
43
                        <div @onclick='() => SetDetailId(Guid.NewGuid())'>
44
                            <i class="fal fa-eye"></i>
45
                            Otevřít
46
                        </div>
47
                    </div>
48
                </td>
49
            </tr>
50
        }
51
    </table>
52
}
53
else
54
{
55
    <div>Loading...</div>
56
}
57

  
58
<Leuze.Modules.Goal.Application.UI.Pages.Components.GoalDetailAside Show="DetailId != default(Guid)" DetailId="DetailId" CloseAside="CloseDetailAside" />
59
<Leuze.Modules.Goal.Application.UI.Pages.Components.CreateGoalAside Show="ShowCreate" CloseAside="CloseCreateAside" />
60

  
70 61
<BlazorStyled.Styled>
71 62
    .section_header {
72 63
    display: flex;
......
78 69
    font-size: 36px;
79 70
    margin: 0;
80 71
    }
81
</BlazorStyled.Styled>
82
<BlazorStyled.Styled>
83
    .goal_detail {
84
    width: 500px;
85
    height: 100%;
86
    position: fixed;
87
    top: 0;
88
    right: 0;
89
    background-color: white;
90
    -webkit-box-shadow: 0 0 5px 0 rgba(0,0,0,0.05);
91
    -moz-box-shadow: 0 0 5px 0 rgba(0,0,0,0.05);
92
    box-shadow: 0 0 5px 0 rgba(0,0,0,0.05);
93
    }
94

  
95
    .goal_detail_header {
96
    padding: 12px 24px;
97
    border-bottom: 1px solid #11111122;
98
    height: 26px;
99
    display: grid;
72
    .section_header button {
73
    border-radius: 4px;
74
    border: none;
75
    background-color: #E30613;
76
    padding: 12px 16px;
77
    color: #FFFFFF;
78
    display: flex;
100 79
    align-items: center;
101
    }
102

  
103
    .goal_detail_body {
104
    padding: 0 0 12px 0;
105
    height: calc(100% - 143px - 50px - 12px);
106
    overflow-y: auto;
107
    background-color: #F6F8F9;
108
    overflow-x: hidden;
109
    }
110
    .goal_detail_area {
111
    background-color: white;
112
    padding-top: 12px;
113
    }
114
    .goal_detail_body .goal_name {
115
    padding: 8px 12px;
116
    border: 1px solid white;
117
    width: calc(100% - 24px);
80
    cursor: pointer;
81
    transition: .25s opacity;
118 82
    outline: none;
119
    margin: 12px 24px 12px 24px;
120 83
    }
121
    .goal_detail_body .goal_description {
122
    padding: 8px 12px;
123
    border: 1px solid white;
124
    width: calc(100% - 24px);
125
    outline: none;
126
    margin: 12px 24px 24px 24px;
84
    .section_header button:hover {
85
    opacity: .6;
127 86
    }
128
    .goal_detail_body .goal_description_title {
129
    margin: 0 24px;
87
</BlazorStyled.Styled>
88
<BlazorStyled.Styled>
89
    .definition_name {
90
    margin: 0;
130 91
    }
131
    .goal_detail_body .goal_name:hover, .goal_detail_body .goal_description:hover {
132
    border: 1px solid #EEEEEE;
92

  
93
    .definition_daterange {
94
    padding-bottom: 24px;
95
    padding-top: 8px;
133 96
    }
134
    .goal_detail_body .goal_name:focus, .goal_detail_body .goal_description:focus {
135
    border: 1px solid #A8A8A8;
97

  
98
    .goal_creator {
99
    padding-top: 8px;
136 100
    }
137 101

  
138
    .goal_communication_area {
139
    padding: 12px 0;
102
    .goal_creator > span:not(:last-child) {
103
    margin-right: 16px;
140 104
    }
141
    .goal_communication_area .goal_communication_item {
142
    background-color: #F6F8F9;
143
    padding: 12px 0;
144
    margin: 0 24px;
105

  
106
    .goal_creator > span i {
107
    margin-right: 4px;
145 108
    }
146
    .goal_communication_area .goal_communication_item span.date {
147
    color: #A8A8A8;
109
    .goal_def_item {
110
    -webkit-box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.05);
111
    -moz-box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.05);
112
    box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.05);
113
    padding: 12px 24px;
114
    border-radius: 4px;
115
    width: calc(100% - 48px);
116
    transition: .25s transform;
117
    cursor: pointer;
148 118
    }
149
    .goal_communication_area .goal_communication_item .item_tool {
150
    display: flex;
151
    justify-content: space-between;
152
    align-items: center;
119

  
120
    .goal_def_item:hover {
121
    transform: scale(1.005);
153 122
    }
154
    .goal_communication_area .goal_communication_item:not(:last-child) {
155
    border-bottom: 1px solid #11111122;
123

  
124
    .goal_item_closed {
125
    opacity: .5;
126
    border: 1px solid #00000088;
156 127
    }
157 128

  
158
    .goal_detail_footer{
159
    background-color: #F6F8F9;
160
    padding: 24px;
161
    border-top: 1px solid #11111122;
162
    height: 94px;
129
    .goal_def_name {
130
    font-size: 18px;
131
    font-weight: 700;
132
    color: #111111;
133
    font-family: 'Arial';
163 134
    }
164
    .goal_detail_footer textarea{
165
    border-radius: 4px;
166
    border: 1px solid gray;
167
    resize: none;
168
    padding: 8px 12px;
169
    height: 50px;
170
    width: calc(100% - 26px);
171
    margin-bottom: 12px;
172
    }
173
    .goal_detail_footer .goal_comment_tools {
135

  
136
    .goal_def_bottom {
174 137
    display: flex;
175 138
    justify-content: space-between;
176 139
    align-items: center;
177 140
    }
178
    .goal_detail_footer .goal_comment_tools select {
179
    border: none;
180
    outline: none;
181
    background-color: #F6F8F9;
141
</BlazorStyled.Styled>
142
<BlazorStyled.Styled>
143
    table {
144
    border-collapse: collapse;
145
    margin-top: 24px !important;
182 146
    }
183
    .goal_detail_footer .goal_comment_tools button {
184

  
147
    table tr th { text-align: left; }
148
    table.actions tr th:last-child, table.actions tr td:last-child { text-align: right; }
149
    table tr {
150
    border-bottom: 1px solid #EDEDED;
151
    }
152
    table tr:first-child { border-bottom: 1px solid #9D9D9D55; }
153
    table tr th, table tr td {
154
    padding: 12px 8px;
155
    }
156
    table tr:not(:first-child):hover {
157
    background-color: #EDEDED55;
185 158
    }
186 159
</BlazorStyled.Styled>
187 160

  
188 161
@code {
189 162

  
163
    [Parameter]
164
    public string Id { get; set; }
165

  
166
    public List<Guid> Goals { get; set; } = new() { Guid.NewGuid() };
167

  
168
    public Guid DetailId { get; set; } = default(Guid);
169

  
170
    public bool ShowCreate { get; set; } = false;
171

  
172
    private void SetDetailId(Guid id) => DetailId = id;
173

  
174
    private void CloseDetailAside() => DetailId = default(Guid);
175

  
176
    private void OpenCreateAside() => ShowCreate = true;
177

  
178
    private void CloseCreateAside() => ShowCreate = false;
179

  
180

  
190 181
}
src/Modules/Goal/Application/Leuze.Modules.Goal.Application.UI/Pages/GoalRanges.razor
1
@page "/goals"
2
@attribute [Authorize]
3
@layout MainLayout
4
@inject IMediator _mediator
5
@inject NavigationManager _nav 
6

  
7
<div class="section_header">
8
    <h2>Správa oblastí definic cílů</h2>
9
    <button type="button" @onclick="() => OpenAside(default(Guid))">
10
        <img src="/Resources/Icons/plus.svg" class="plus_icon" />
11
        <span>Přidat oblast</span>
12
    </button>
13
</div>
14
@if (Ranges is not null)
15
{
16
    <table class="actions" style="width:100%">
17
        <tr>
18
            <th>Platnost od</th>
19
            <th>Platnost do</th>
20
            <th>Hodnota VARI</th>
21
            <th>Akce</th>
22
        </tr>
23
        @foreach (var range in Ranges)
24
        {
25
            <tr>
26
                <td>24.4.2021</td>
27
                <td>23.4.2022</td>
28
                <td>-</td>
29
                <td>
30
                    <div class="flex">
31
                        <div @onclick='() => _nav.NavigateTo("/goals/overview/test")'>
32
                            <i class="fal fa-eye"></i>
33
                            Zobrazit
34
                        </div>
35
                        <div @onclick="() => OpenAside(range)">
36
                            <i class="fal fa-edit"></i>
37
                            Upravit
38
                        </div>
39
                    </div>
40
                </td>
41
            </tr>
42
        }
43
    </table>
44
    @if (Ranges.Count > 0)
45
    {
46
        <div class="pagination">
47
            <div class="left">
48
                <button class="pagination_button"><img class="pagination_icon" src="/Resources/Icons/chevron-double-left.svg" /></button>
49
                <button class="pagination_button"><img class="pagination_icon" src="/Resources/Icons/chevron-left.svg" /></button>
50
                <input type="number" @bind-value="PageNumber" />
51
                <button class="pagination_button"><img class="pagination_icon" src="/Resources/Icons/chevron-right.svg" /></button>
52
                <button class="pagination_button"><img class="pagination_icon" src="/Resources/Icons/chevron-double-right.svg" /></button>
53
            </div>
54
            <div class="right">Zobrazeno <b>@Ranges.Count z @Total</b></div>
55
        </div>
56
    }
57
}
58
else
59
{
60
    <div>Loading...</div>
61
}
62
<Leuze.Modules.Goal.Application.UI.Pages.Components.CreateDefinitionRangeAside Show="ShowAside" CloseAside="CloseAside" />
63

  
64
<BlazorStyled.Styled>
65
    .flex{
66
    display: grid;
67
    align-items: center;
68
    grid-template-columns: repeat(2, 100px);
69
    justify-content: right;
70
    }
71
    .flex > div:not(:last-child) {
72
    margin-right: 8px;
73
    }
74
    .section_header {
75
    display: flex;
76
    justify-content: space-between;
77
    align-items: center;
78
    }
79
    .section_header h2 {
80
    color: #111111;
81
    font-size: 36px;
82
    margin: 0;
83
    }
84
    .section_header button {
85
    border-radius: 4px;
86
    border: none;
87
    background-color: #E30613;
88
    padding: 12px 16px;
89
    color: #FFFFFF;
90
    display: flex;
91
    align-items: center;
92
    cursor: pointer;
93
    transition: .25s opacity;
94
    outline: none;
95
    }
96
    .section_header button:hover {
97
    opacity: .6;
98
    }
99
    .section_header button .plus_icon {
100
    width: 18px;
101
    height: 18px;
102
    margin-right: 16px;
103
    }
104
    .section_header button span {
105
    position: relative;
106
    top: 1px;
107
    }
108
</BlazorStyled.Styled>
109
<BlazorStyled.Styled>
110
    table {
111
    border-collapse: collapse;
112
    margin-top: 60px !important;
113
    }
114
    table tr th { text-align: left; }
115
    table.actions tr th:last-child, table.actions tr td:last-child { text-align: right; }
116
    table tr {
117
    border-bottom: 1px solid #EDEDED;
118
    }
119
    table tr:first-child { border-bottom: 1px solid #9D9D9D55; }
120
    table tr th, table tr td {
121
    padding: 12px 8px;
122
    }
123
    table tr:not(:first-child):hover {
124
    background-color: #EDEDED55;
125
    }
126
</BlazorStyled.Styled>
127
<BlazorStyled.Styled>
128
    input::-webkit-outer-spin-button,
129
    input::-webkit-inner-spin-button {
130
    -webkit-appearance: none;
131
    margin: 0;
132
    }
133
    input[type=number] {
134
    -moz-appearance: textfield;
135
    }
136
    .pagination {
137
    width: 100%;
138
    display: flex;
139
    justify-content: space-between;
140
    align-items: center;
141
    margin-top: 36px;
142
    }
143
    .pagination .left {
144
    display: flex;
145
    align-items: center;
146
    }
147
    .pagination button {
148
    width: 34px;
149
    height: 34px;
150
    border: 1px solid #EEEEEE;
151
    border-radius: 4px;
152
    background-color: #FFFFFF;
153
    cursor: pointer;
154
    outline: none;
155
    margin-right: 6px;
156
    display: flex;
157
    justify-content: center;
158
    align-items: center;
159
    }
160
    .pagination input {
161
    width: 30px;
162
    height: 30px;
163
    padding: 1px 12px;
164
    outline: none;
165
    margin-right: 6px;
166
    border: 1px solid #EEEEEE;
167
    border-radius: 4px;
168
    }
169
    .pagination_icon {
170
    width: 18px;
171
    height: 18px;
172
    }
173
</BlazorStyled.Styled>
174

  
175
@code {
176

  
177
    [Parameter]
178
    public string Id { get; set; } = null!;
179

  
180
    private List<Guid> Ranges { get; set; } = new() { Guid.NewGuid() };
181

  
182
    private int PageNumber { get; set; } = 1;
183

  
184
    private int PageSize { get; set; } = 12;
185

  
186
    private int Total { get; set; } = 0;
187

  
188
    private Guid AsideId { get; set; } = default(Guid);
189

  
190
    private bool ShowAside { get; set; } = false;
... Rozdílový soubor je zkrácen, protože jeho délka přesahuje max. limit.

Také k dispozici: Unified diff