@burh/nuxt-core 1.0.411 → 1.0.412

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.
@@ -1,91 +1,91 @@
1
- <template>
2
- <div class="base__filter">
3
- <div class="base__filter__content">
4
- <slot />
5
- </div>
6
-
7
- <div v-if="showFooter" class="base__filter__footer">
8
- <div>
9
- <button
10
- @click="$emit('filter-clear')"
11
- class="base__filter__button clear"
12
- >
13
- <span>Limpar</span>
14
- </button>
15
- </div>
16
- <div>
17
- <button
18
- @click="$emit('filter-apply')"
19
- class="base__filter__button apply"
20
- >
21
- <span>Filtrar</span>
22
- </button>
23
- </div>
24
- </div>
25
- </div>
26
- </template>
27
-
28
- <script>
29
- export default {
30
- name: 'base-filter-container',
31
- props: {
32
- showFooter: {
33
- type: Boolean,
34
- default: true
35
- }
36
- }
37
- };
38
- </script>
39
-
40
- <style lang="scss" scoped>
41
- .base__filter {
42
- display: flex;
43
- flex-direction: column;
44
- justify-content: space-between;
45
- max-height: 350px;
46
- &__content {
47
- max-height: calc(350px - 44px);
48
- overflow: hidden;
49
- overflow-y: auto;
50
- &::-webkit-scrollbar-track {
51
- border-radius: 10px;
52
- background-color: #f5f5f5;
53
- }
54
-
55
- &::-webkit-scrollbar {
56
- width: 4px;
57
- background-color: #f5f5f5;
58
- }
59
-
60
- &::-webkit-scrollbar-thumb {
61
- border-radius: 10px;
62
- background-color: #e9e8e8;
63
- }
64
- }
65
- &__footer {
66
- display: flex;
67
- align-items: center;
68
- justify-content: space-between;
69
- margin-top: 20px;
70
- .base__filter__button {
71
- background: transparent;
72
- border: none;
73
- color: #32325d;
74
- padding: 10px 20px;
75
- border-radius: 4px;
76
- transition: background 0.5s, color 0.5s;
77
- &:focus {
78
- outline: none;
79
- }
80
- &.clear:hover {
81
- background: rgba(222, 33, 75, 0.1);
82
- color: #de214b;
83
- }
84
- &.apply:hover {
85
- background: rgba(88, 101, 242, 0.1);
86
- color: #5865F2;
87
- }
88
- }
89
- }
90
- }
91
- </style>
1
+ <template>
2
+ <div class="base__filter">
3
+ <div class="base__filter__content">
4
+ <slot />
5
+ </div>
6
+
7
+ <div v-if="showFooter" class="base__filter__footer">
8
+ <div>
9
+ <button
10
+ @click="$emit('filter-clear')"
11
+ class="base__filter__button clear"
12
+ >
13
+ <span>Limpar</span>
14
+ </button>
15
+ </div>
16
+ <div>
17
+ <button
18
+ @click="$emit('filter-apply')"
19
+ class="base__filter__button apply"
20
+ >
21
+ <span>Filtrar</span>
22
+ </button>
23
+ </div>
24
+ </div>
25
+ </div>
26
+ </template>
27
+
28
+ <script>
29
+ export default {
30
+ name: 'base-filter-container',
31
+ props: {
32
+ showFooter: {
33
+ type: Boolean,
34
+ default: true
35
+ }
36
+ }
37
+ };
38
+ </script>
39
+
40
+ <style lang="scss" scoped>
41
+ .base__filter {
42
+ display: flex;
43
+ flex-direction: column;
44
+ justify-content: space-between;
45
+ max-height: 350px;
46
+ &__content {
47
+ max-height: calc(350px - 44px);
48
+ overflow: hidden;
49
+ overflow-y: auto;
50
+ &::-webkit-scrollbar-track {
51
+ border-radius: 10px;
52
+ background-color: #f5f5f5;
53
+ }
54
+
55
+ &::-webkit-scrollbar {
56
+ width: 4px;
57
+ background-color: #f5f5f5;
58
+ }
59
+
60
+ &::-webkit-scrollbar-thumb {
61
+ border-radius: 10px;
62
+ background-color: #e9e8e8;
63
+ }
64
+ }
65
+ &__footer {
66
+ display: flex;
67
+ align-items: center;
68
+ justify-content: space-between;
69
+ margin-top: 20px;
70
+ .base__filter__button {
71
+ background: transparent;
72
+ border: none;
73
+ color: #32325d;
74
+ padding: 10px 20px;
75
+ border-radius: 4px;
76
+ transition: background 0.5s, color 0.5s;
77
+ &:focus {
78
+ outline: none;
79
+ }
80
+ &.clear:hover {
81
+ background: rgba(222, 33, 75, 0.1);
82
+ color: #de214b;
83
+ }
84
+ &.apply:hover {
85
+ background: rgba(88, 101, 242, 0.1);
86
+ color: #5865F2;
87
+ }
88
+ }
89
+ }
90
+ }
91
+ </style>
@@ -1,222 +1,222 @@
1
- <template>
2
- <base-header class="app-header" :type="'white'">
3
- <div class="row justify-content-between">
4
- <div
5
- :class="{ 'images__container': users.length }"
6
- class="col-8 my-auto header__container"
7
- >
8
- <slot name="header-top" />
9
-
10
- <div class="header__content">
11
- <div class="d-flex align-items-center flex-row">
12
- <button class="back__button" v-if="hasBackButton" @click="goBack()">
13
- <i class="fas fa-arrow-left"></i>
14
- </button>
15
- <h2 class="font-weight-bold display-3">{{name}}</h2>
16
- </div>
17
- <div class="images" v-if="users.length">
18
- <el-tooltip
19
- v-for="user in users"
20
- :key="user.id"
21
- placement="top"
22
- :content="user.name"
23
- class="user__avatar"
24
- :class="{ 'user__avatar--active': activeUserId === user.id }"
25
- >
26
- <img
27
- @click="setActiveUser(user.id)"
28
- :src="(user.avatar) ? user.avatar : getNameInitials(user.name, user.last_name)"
29
- :alt="user.name"
30
- >
31
- </el-tooltip>
32
- </div>
33
- </div>
34
-
35
- <span id="credits-amount" v-if="subheader !== null">
36
- {{ subheader }} Créditos
37
- </span>
38
-
39
- <slot name="header-bottom" />
40
- </div>
41
-
42
- <div class="col-4 d-flex justify-content-end align-items-start">
43
- <el-tooltip v-for="(item, index) in icons" :key="index"
44
- v-show="!item.disabled"
45
- class="item" effect="dark" :content="item.title" placement="top">
46
- <base-button size="md" type="link" class="text-primary px-2 w-auto"
47
- @click="$emit(item.event, item)">
48
- <font-awesome-icon :icon="item.icon" class="mr-2" />
49
- </base-button>
50
- </el-tooltip>
51
-
52
- <slot name="buttons" />
53
- </div>
54
-
55
- <slot/>
56
- </div>
57
- </base-header>
58
- </template>
59
- <script>
60
- export default {
61
- data(){
62
- return{
63
- default: '',
64
- activeUserId: null
65
- };
66
- },
67
- props:{
68
- icons:{
69
- type: Array,
70
- default: () =>[{ event: 'view', icon: ['fas', 'eye'], disabled: false, title: 'Visualizar' }, { event: 'config', icon: ['fas', 'cog'], disabled: false, title: 'Editar' } ]
71
- },
72
- name: {
73
- type: String,
74
- default: 'Teste de matematica'
75
- },
76
- subheader: {
77
- type: Number,
78
- default: null
79
- },
80
- users: {
81
- type: Array,
82
- default: () => []
83
- },
84
- hasBackButton: {
85
- type: Boolean,
86
- default: false
87
- },
88
- backClickAction: {
89
- type: Function || null,
90
- default: null
91
- }
92
- },
93
- methods: {
94
- goBack() {
95
- if (this.backClickAction === null) {
96
- this.$router.go(-1);
97
- } else {
98
- this.backClickAction();
99
- }
100
- },
101
- getNameInitials(name, last_name) {
102
- const avatarUrl = process.env.routes.avatar;
103
-
104
- let userAvatarName;
105
-
106
- if (name && last_name) {
107
- userAvatarName = `${name.toUpperCase().charAt(0)}${last_name.toUpperCase().charAt(0)}`;
108
- } else if (name && last_name === null) {
109
- userAvatarName = name;
110
- } else {
111
- userAvatarName = 'BURH';
112
- }
113
-
114
- return avatarUrl.replace(':size', '64x64').replace(':initials', userAvatarName);
115
- },
116
- setActiveUser(userId) {
117
- if (this.activeUserId !== userId) {
118
- this.activeUserId = userId;
119
- this.$emit('active-user', userId);
120
- } else {
121
- this.activeUserId = null;
122
- this.$emit('active-user', null);
123
- }
124
- }
125
- }
126
- };
127
- </script>
128
- <style lang="scss" scoped>
129
- #credits-amount {
130
- margin: 0!important;
131
- min-width: 8em;
132
- margin: 1rem 1rem 1rem 0;
133
- padding: 0.25em 1em;
134
- font-size: 0.85rem;
135
- line-height: 1.4em;
136
- border-radius: 23rem;
137
- font-weight: 400;
138
- text-align: center;
139
- background-color: rgba(29, 161, 241, 0.1);
140
- color: #5865F2;
141
- }
142
- </style>
143
- <style lang="scss">
144
-
145
- .app-header {
146
- width: 100%;
147
- padding-top: 1.25rem;
148
- box-shadow: 0 0 2rem 0 rgba(136, 152, 170, 0.15);
149
- }
150
-
151
- .back__button {
152
- cursor: pointer;
153
- width: 42px;
154
- height: 42px;
155
- display: flex;
156
- align-items: center;
157
- justify-content: center;
158
- margin-right: 10px;
159
- border-radius: 100px;
160
- transition: background 0.5s;
161
- margin-left: -15px;
162
- border: 0;
163
- background: transparent;
164
- color: #32325d;
165
- &:focus {
166
- outline: none;
167
- }
168
- &:not(:disabled):hover, &:focus:not(:disabled):hover {
169
- background: rgba(0, 0, 0, 0.08);
170
- }
171
- }
172
-
173
- .header__container {
174
- display: flex;
175
- flex-direction: column;
176
- justify-content: center;
177
- align-items: flex-start;
178
- }
179
-
180
- .images__container {
181
- display: flex;
182
- align-items: flex-start;
183
- justify-content: center;
184
- .header__content {
185
- display: flex;
186
- align-items: center;
187
- flex-direction: row;
188
- padding: 10px 0;
189
- h2 {
190
- margin-bottom: 0;
191
- }
192
- .images {
193
- margin-left: 10px;
194
- display: flex;
195
- align-items: center;
196
- user-select: none;
197
- .user__avatar {
198
- cursor: pointer;
199
- border: 2px solid transparent;
200
- transition: border-color 0.5s;
201
- border: 2px solid #fff;
202
- background: #fff;
203
- &--active {
204
- border-color: #5865F2;
205
- z-index: 10;
206
- }
207
- }
208
- img {
209
- $size: 42px;
210
- display: block;
211
- width: $size;
212
- height: $size;
213
- object-fit: cover;
214
- border-radius: 100px;
215
- &:not(:first-child) {
216
- margin-left: -10px;
217
- }
218
- }
219
- }
220
- }
221
- }
222
- </style>
1
+ <template>
2
+ <base-header class="app-header" :type="'white'">
3
+ <div class="row justify-content-between">
4
+ <div
5
+ :class="{ 'images__container': users.length }"
6
+ class="col-8 my-auto header__container"
7
+ >
8
+ <slot name="header-top" />
9
+
10
+ <div class="header__content">
11
+ <div class="d-flex align-items-center flex-row">
12
+ <button class="back__button" v-if="hasBackButton" @click="goBack()">
13
+ <i class="fas fa-arrow-left"></i>
14
+ </button>
15
+ <h2 class="font-weight-bold display-3">{{name}}</h2>
16
+ </div>
17
+ <div class="images" v-if="users.length">
18
+ <el-tooltip
19
+ v-for="user in users"
20
+ :key="user.id"
21
+ placement="top"
22
+ :content="user.name"
23
+ class="user__avatar"
24
+ :class="{ 'user__avatar--active': activeUserId === user.id }"
25
+ >
26
+ <img
27
+ @click="setActiveUser(user.id)"
28
+ :src="(user.avatar) ? user.avatar : getNameInitials(user.name, user.last_name)"
29
+ :alt="user.name"
30
+ >
31
+ </el-tooltip>
32
+ </div>
33
+ </div>
34
+
35
+ <span id="credits-amount" v-if="subheader !== null">
36
+ {{ subheader }} Créditos
37
+ </span>
38
+
39
+ <slot name="header-bottom" />
40
+ </div>
41
+
42
+ <div class="col-4 d-flex justify-content-end align-items-start">
43
+ <el-tooltip v-for="(item, index) in icons" :key="index"
44
+ v-show="!item.disabled"
45
+ class="item" effect="dark" :content="item.title" placement="top">
46
+ <base-button size="md" type="link" class="text-primary px-2 w-auto"
47
+ @click="$emit(item.event, item)">
48
+ <font-awesome-icon :icon="item.icon" class="mr-2" />
49
+ </base-button>
50
+ </el-tooltip>
51
+
52
+ <slot name="buttons" />
53
+ </div>
54
+
55
+ <slot/>
56
+ </div>
57
+ </base-header>
58
+ </template>
59
+ <script>
60
+ export default {
61
+ data(){
62
+ return{
63
+ default: '',
64
+ activeUserId: null
65
+ };
66
+ },
67
+ props:{
68
+ icons:{
69
+ type: Array,
70
+ default: () =>[{ event: 'view', icon: ['fas', 'eye'], disabled: false, title: 'Visualizar' }, { event: 'config', icon: ['fas', 'cog'], disabled: false, title: 'Editar' } ]
71
+ },
72
+ name: {
73
+ type: String,
74
+ default: 'Teste de matematica'
75
+ },
76
+ subheader: {
77
+ type: Number,
78
+ default: null
79
+ },
80
+ users: {
81
+ type: Array,
82
+ default: () => []
83
+ },
84
+ hasBackButton: {
85
+ type: Boolean,
86
+ default: false
87
+ },
88
+ backClickAction: {
89
+ type: Function || null,
90
+ default: null
91
+ }
92
+ },
93
+ methods: {
94
+ goBack() {
95
+ if (this.backClickAction === null) {
96
+ this.$router.go(-1);
97
+ } else {
98
+ this.backClickAction();
99
+ }
100
+ },
101
+ getNameInitials(name, last_name) {
102
+ const avatarUrl = process.env.routes.avatar;
103
+
104
+ let userAvatarName;
105
+
106
+ if (name && last_name) {
107
+ userAvatarName = `${name.toUpperCase().charAt(0)}${last_name.toUpperCase().charAt(0)}`;
108
+ } else if (name && last_name === null) {
109
+ userAvatarName = name;
110
+ } else {
111
+ userAvatarName = 'BURH';
112
+ }
113
+
114
+ return avatarUrl.replace(':size', '64x64').replace(':initials', userAvatarName);
115
+ },
116
+ setActiveUser(userId) {
117
+ if (this.activeUserId !== userId) {
118
+ this.activeUserId = userId;
119
+ this.$emit('active-user', userId);
120
+ } else {
121
+ this.activeUserId = null;
122
+ this.$emit('active-user', null);
123
+ }
124
+ }
125
+ }
126
+ };
127
+ </script>
128
+ <style lang="scss" scoped>
129
+ #credits-amount {
130
+ margin: 0!important;
131
+ min-width: 8em;
132
+ margin: 1rem 1rem 1rem 0;
133
+ padding: 0.25em 1em;
134
+ font-size: 0.85rem;
135
+ line-height: 1.4em;
136
+ border-radius: 23rem;
137
+ font-weight: 400;
138
+ text-align: center;
139
+ background-color: rgba(29, 161, 241, 0.1);
140
+ color: #5865F2;
141
+ }
142
+ </style>
143
+ <style lang="scss">
144
+
145
+ .app-header {
146
+ width: 100%;
147
+ padding-top: 1.25rem;
148
+ box-shadow: 0 0 2rem 0 rgba(136, 152, 170, 0.15);
149
+ }
150
+
151
+ .back__button {
152
+ cursor: pointer;
153
+ width: 42px;
154
+ height: 42px;
155
+ display: flex;
156
+ align-items: center;
157
+ justify-content: center;
158
+ margin-right: 10px;
159
+ border-radius: 100px;
160
+ transition: background 0.5s;
161
+ margin-left: -15px;
162
+ border: 0;
163
+ background: transparent;
164
+ color: #32325d;
165
+ &:focus {
166
+ outline: none;
167
+ }
168
+ &:not(:disabled):hover, &:focus:not(:disabled):hover {
169
+ background: rgba(0, 0, 0, 0.08);
170
+ }
171
+ }
172
+
173
+ .header__container {
174
+ display: flex;
175
+ flex-direction: column;
176
+ justify-content: center;
177
+ align-items: flex-start;
178
+ }
179
+
180
+ .images__container {
181
+ display: flex;
182
+ align-items: flex-start;
183
+ justify-content: center;
184
+ .header__content {
185
+ display: flex;
186
+ align-items: center;
187
+ flex-direction: row;
188
+ padding: 10px 0;
189
+ h2 {
190
+ margin-bottom: 0;
191
+ }
192
+ .images {
193
+ margin-left: 10px;
194
+ display: flex;
195
+ align-items: center;
196
+ user-select: none;
197
+ .user__avatar {
198
+ cursor: pointer;
199
+ border: 2px solid transparent;
200
+ transition: border-color 0.5s;
201
+ border: 2px solid #fff;
202
+ background: #fff;
203
+ &--active {
204
+ border-color: #5865F2;
205
+ z-index: 10;
206
+ }
207
+ }
208
+ img {
209
+ $size: 42px;
210
+ display: block;
211
+ width: $size;
212
+ height: $size;
213
+ object-fit: cover;
214
+ border-radius: 100px;
215
+ &:not(:first-child) {
216
+ margin-left: -10px;
217
+ }
218
+ }
219
+ }
220
+ }
221
+ }
222
+ </style>