@burh/nuxt-core 1.0.265 → 1.0.266

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,214 +1,214 @@
1
- <template>
2
- <nuxt-link :to="`/recrutamento/vaga/${job.id}`" class="recruitment__card">
3
- <article>
4
- <header class="recruitment__card__header">
5
- <div class="recruitment__card__header__status">
6
- <job-status-dropdown
7
- :status="job.status"
8
- @select="handleChangeJobStatus"
9
- />
10
- </div>
11
- <div class="recruitment__card__header__actions">
12
- <el-tooltip placement="top" content="Anotações">
13
- <button
14
- class="action__item"
15
- @click.stop.prevent="$emit('notes-click')"
16
- >
17
- <i class="far fa-comment-alt"></i>
18
- </button>
19
- </el-tooltip>
20
-
21
- <el-tooltip placement="top" content="Compartilhar">
22
- <button
23
- class="action__item"
24
- @click.stop.prevent="$emit('share-click')"
25
- >
26
- <i class="fas fa-share-alt"></i>
27
- </button>
28
- </el-tooltip>
29
- </div>
30
- </header>
31
-
32
- <section class="recruitment__card__content">
33
- <span class="recruitment__card__content__date">Publicada {{fromNow(job.published_at)}}</span>
34
- <h2 class="recruitment__card__content__title">
35
- {{ job.title }}
36
- <i v-if="job.handicapped" class="fas fa-wheelchair pcd"></i>
37
- </h2>
38
- <span class="recruitment__card__content__id">{{ job.id }}</span>
39
-
40
- <div class="recruitment__card__info">
41
- <p class="recruitment__card__info__text"><span>{{ job.info.applieds }}</span>Inscritos</p>
42
- <p class="recruitment__card__info__text"><span>{{ job.info.positions }}</span>Posição</p>
43
- <p class="recruitment__card__info__text"><span>{{ job.info.hireds }}</span>Contratados</p>
44
- </div>
45
- </section>
46
-
47
- <footer class="recruitment__card__footer">
48
- <p class="recruitment__card__footer__title">EQUIPE RESPONSÁVEL</p>
49
- <div class="recruitment__card__footer__images">
50
- <el-tooltip
51
- v-for="user in job.team"
52
- :key="user.id"
53
- placement="top"
54
- :content="user.name"
55
- >
56
- <img
57
- :src="user.avatar"
58
- :alt="user.name"
59
- >
60
- </el-tooltip>
61
- </div>
62
- </footer>
63
- </article>
64
- </nuxt-link>
65
- </template>
66
-
67
- <script>
68
- import moment from 'moment';
69
- import 'moment/locale/pt-br';
70
-
71
- import JobStatusDropdown from '@burh/nuxt-core/components/burh-ds/Dropdown/JobStatusDropdown.vue';
72
-
73
- export default {
74
- name: 'recruitment-card',
75
- components: {
76
- JobStatusDropdown
77
- },
78
- props: {
79
- job: {
80
- type: Object,
81
- default: () => []
82
- }
83
- },
84
- methods: {
85
- fromNow(date, format = 'YYYYMMDD') {
86
- return moment(date, format).fromNow();
87
- },
88
- handleChangeJobStatus(id) {
89
- this.$emit('select', id);
90
- }
91
- }
92
- };
93
- </script>
94
-
95
- <style lang="scss" scoped>
96
- .recruitment__card {
97
- cursor: pointer;
98
- background: #fff;
99
- box-shadow: 0 3px 20px rgba(0, 0, 0, 0.08);
100
- padding: 20px;
101
- border-radius: 4px;
102
- border: none;
103
- text-align: initial;
104
- color: #1D364B;
105
- transition: transform 0.25s;
106
- &:focus {
107
- outline: none;
108
- transform: translateY(-5px);
109
- }
110
- &:hover {
111
- transform: translateY(-5px);
112
- }
113
-
114
- &__header {
115
- display: flex;
116
- align-items: center;
117
- justify-content: space-between;
118
- padding: 5px 0;
119
- &__actions {
120
- display: flex;
121
- align-items: center;
122
- .action__item {
123
- cursor: pointer;
124
- width: 42px;
125
- height: 42px;
126
- border-radius: 100px;
127
- transition: background 0.5s;
128
- display: flex;
129
- align-items: center;
130
- justify-content: center;
131
- background: transparent;
132
- border: 0;
133
- position: relative;
134
- &:not(:disabled):hover {
135
- background: rgba(0, 0, 0, 0.08);
136
- }
137
- &:focus {
138
- outline: none;
139
- background: rgba(0, 0, 0, 0.08);
140
- }
141
- &:not(:first-child) {
142
- margin-left: 5px;
143
- }
144
- i {
145
- color: #AEB6BE;
146
- }
147
- }
148
- }
149
- }
150
-
151
- &__content {
152
- &__date {
153
- font-size: 0.875rem;
154
- font-weight: 400;
155
- color: #AEB6BE;
156
- }
157
- &__title {
158
- font-size: 1.275rem;
159
- color: #1D364B;
160
- margin-bottom: 0;
161
- .pcd {
162
- color: #1F8CEB;
163
- margin-left: 5px;
164
- }
165
- }
166
- &__id {
167
- font-size: 0.875rem;
168
- font-weight: 600;
169
- color: #525F7F;
170
- }
171
- }
172
-
173
- &__info {
174
- padding: 20px 0;
175
- &__text {
176
- margin-bottom: 0;
177
- font-size: 1rem;
178
- font-weight: 500;
179
- span {
180
- margin-right: 5px;
181
- color: #1F8CEB;
182
- }
183
- }
184
- }
185
-
186
- &__footer {
187
- border-top: 1px solid #E9E9E9;
188
- padding-top: 10px;
189
- &__title {
190
- color: #525F7F;
191
- font-size: 0.875rem;
192
- font-weight: 600;
193
- margin-bottom: 0;
194
- }
195
- &__images {
196
- display: flex;
197
- align-items: center;
198
- user-select: none;
199
- img {
200
- $size: 32px;
201
- display: block;
202
- width: $size;
203
- height: $size;
204
- object-fit: cover;
205
- border-radius: 100px;
206
- border: 2px solid #fff;
207
- &:not(:first-child) {
208
- margin-left: -10px;
209
- }
210
- }
211
- }
212
- }
213
- }
214
- </style>
1
+ <template>
2
+ <nuxt-link :to="`/recrutamento/vaga/${job.id}`" class="recruitment__card">
3
+ <article>
4
+ <header class="recruitment__card__header">
5
+ <div class="recruitment__card__header__status">
6
+ <job-status-dropdown
7
+ :status="job.status"
8
+ @select="handleChangeJobStatus"
9
+ />
10
+ </div>
11
+ <div class="recruitment__card__header__actions">
12
+ <el-tooltip placement="top" content="Anotações">
13
+ <button
14
+ class="action__item"
15
+ @click.stop.prevent="$emit('notes-click')"
16
+ >
17
+ <i class="far fa-comment-alt"></i>
18
+ </button>
19
+ </el-tooltip>
20
+
21
+ <el-tooltip placement="top" content="Compartilhar">
22
+ <button
23
+ class="action__item"
24
+ @click.stop.prevent="$emit('share-click')"
25
+ >
26
+ <i class="fas fa-share-alt"></i>
27
+ </button>
28
+ </el-tooltip>
29
+ </div>
30
+ </header>
31
+
32
+ <section class="recruitment__card__content">
33
+ <span class="recruitment__card__content__date">Publicada {{fromNow(job.published_at)}}</span>
34
+ <h2 class="recruitment__card__content__title">
35
+ {{ job.title }}
36
+ <i v-if="job.handicapped" class="fas fa-wheelchair pcd"></i>
37
+ </h2>
38
+ <span class="recruitment__card__content__id">{{ job.id }}</span>
39
+
40
+ <div class="recruitment__card__info">
41
+ <p class="recruitment__card__info__text"><span>{{ job.info.applieds }}</span>Inscritos</p>
42
+ <p class="recruitment__card__info__text"><span>{{ job.info.positions }}</span>Posição</p>
43
+ <p class="recruitment__card__info__text"><span>{{ job.info.hireds }}</span>Contratados</p>
44
+ </div>
45
+ </section>
46
+
47
+ <footer class="recruitment__card__footer">
48
+ <p class="recruitment__card__footer__title">EQUIPE RESPONSÁVEL</p>
49
+ <div class="recruitment__card__footer__images">
50
+ <el-tooltip
51
+ v-for="user in job.team"
52
+ :key="user.id"
53
+ placement="top"
54
+ :content="user.name"
55
+ >
56
+ <img
57
+ :src="user.avatar"
58
+ :alt="user.name"
59
+ >
60
+ </el-tooltip>
61
+ </div>
62
+ </footer>
63
+ </article>
64
+ </nuxt-link>
65
+ </template>
66
+
67
+ <script>
68
+ import moment from 'moment';
69
+ import 'moment/locale/pt-br';
70
+
71
+ import JobStatusDropdown from '@burh/nuxt-core/components/burh-ds/Dropdown/JobStatusDropdown.vue';
72
+
73
+ export default {
74
+ name: 'recruitment-card',
75
+ components: {
76
+ JobStatusDropdown
77
+ },
78
+ props: {
79
+ job: {
80
+ type: Object,
81
+ default: () => []
82
+ }
83
+ },
84
+ methods: {
85
+ fromNow(date, format = 'YYYYMMDD') {
86
+ return moment(date, format).fromNow();
87
+ },
88
+ handleChangeJobStatus(id) {
89
+ this.$emit('select', id);
90
+ }
91
+ }
92
+ };
93
+ </script>
94
+
95
+ <style lang="scss" scoped>
96
+ .recruitment__card {
97
+ cursor: pointer;
98
+ background: #fff;
99
+ box-shadow: 0 3px 20px rgba(0, 0, 0, 0.08);
100
+ padding: 20px;
101
+ border-radius: 4px;
102
+ border: none;
103
+ text-align: initial;
104
+ color: #1D364B;
105
+ transition: transform 0.25s;
106
+ &:focus {
107
+ outline: none;
108
+ transform: translateY(-5px);
109
+ }
110
+ &:hover {
111
+ transform: translateY(-5px);
112
+ }
113
+
114
+ &__header {
115
+ display: flex;
116
+ align-items: center;
117
+ justify-content: space-between;
118
+ padding: 5px 0;
119
+ &__actions {
120
+ display: flex;
121
+ align-items: center;
122
+ .action__item {
123
+ cursor: pointer;
124
+ width: 42px;
125
+ height: 42px;
126
+ border-radius: 100px;
127
+ transition: background 0.5s;
128
+ display: flex;
129
+ align-items: center;
130
+ justify-content: center;
131
+ background: transparent;
132
+ border: 0;
133
+ position: relative;
134
+ &:not(:disabled):hover {
135
+ background: rgba(0, 0, 0, 0.08);
136
+ }
137
+ &:focus {
138
+ outline: none;
139
+ background: rgba(0, 0, 0, 0.08);
140
+ }
141
+ &:not(:first-child) {
142
+ margin-left: 5px;
143
+ }
144
+ i {
145
+ color: #AEB6BE;
146
+ }
147
+ }
148
+ }
149
+ }
150
+
151
+ &__content {
152
+ &__date {
153
+ font-size: 0.875rem;
154
+ font-weight: 400;
155
+ color: #AEB6BE;
156
+ }
157
+ &__title {
158
+ font-size: 1.275rem;
159
+ color: #1D364B;
160
+ margin-bottom: 0;
161
+ .pcd {
162
+ color: #1F8CEB;
163
+ margin-left: 5px;
164
+ }
165
+ }
166
+ &__id {
167
+ font-size: 0.875rem;
168
+ font-weight: 600;
169
+ color: #525F7F;
170
+ }
171
+ }
172
+
173
+ &__info {
174
+ padding: 20px 0;
175
+ &__text {
176
+ margin-bottom: 0;
177
+ font-size: 1rem;
178
+ font-weight: 500;
179
+ span {
180
+ margin-right: 5px;
181
+ color: #1F8CEB;
182
+ }
183
+ }
184
+ }
185
+
186
+ &__footer {
187
+ border-top: 1px solid #E9E9E9;
188
+ padding-top: 10px;
189
+ &__title {
190
+ color: #525F7F;
191
+ font-size: 0.875rem;
192
+ font-weight: 600;
193
+ margin-bottom: 0;
194
+ }
195
+ &__images {
196
+ display: flex;
197
+ align-items: center;
198
+ user-select: none;
199
+ img {
200
+ $size: 32px;
201
+ display: block;
202
+ width: $size;
203
+ height: $size;
204
+ object-fit: cover;
205
+ border-radius: 100px;
206
+ border: 2px solid #fff;
207
+ &:not(:first-child) {
208
+ margin-left: -10px;
209
+ }
210
+ }
211
+ }
212
+ }
213
+ }
214
+ </style>
@@ -1,106 +1,106 @@
1
- <template>
2
- <vue-slick-carousel v-bind="settings" :arrows="true" :dots="true">
3
- <div
4
- v-for="(item, index) in carouselItems"
5
- :key="index"
6
- class="carousel__image"
7
- >
8
- <img :src="item.img" :alt="item.title" draggable="false">
9
- </div>
10
- </vue-slick-carousel>
11
- </template>
12
-
13
- <script>
14
- import VueSlickCarousel from 'vue-slick-carousel';
15
- import 'vue-slick-carousel/dist/vue-slick-carousel.css';
16
- import 'vue-slick-carousel/dist/vue-slick-carousel-theme.css';
17
-
18
- export default {
19
- name: 'ImageCarousel',
20
- components: {
21
- VueSlickCarousel
22
- },
23
- props: {
24
- carouselItems: {
25
- type: Array,
26
- default: () => {
27
- return [];
28
- }
29
- },
30
- dots: {
31
- type: Boolean,
32
- default: true
33
- },
34
- infinite: {
35
- type: Boolean,
36
- default: true
37
- },
38
- autoplay: {
39
- type: Boolean,
40
- default: true
41
- },
42
- slides: {
43
- type: Number,
44
- default: 3
45
- },
46
- speed: {
47
- type: Number,
48
- default: 500
49
- },
50
- breakpoints: {
51
- type: Array,
52
- default: () => {
53
- return [
54
- {
55
- breakpoint: 800,
56
- settings: {
57
- slidesToShow: 2,
58
- slidesToScroll: 2
59
- }
60
- },
61
- {
62
- breakpoint: 600,
63
- settings: {
64
- slidesToShow: 1,
65
- slidesToScroll: 1
66
- }
67
- }
68
- ];
69
- }
70
- }
71
- },
72
- data() {
73
- return {
74
- settings: {}
75
- };
76
- },
77
- mounted() {
78
- const settings = {
79
- dots: this.dots,
80
- infinite: this.infinite,
81
- autoplay: this.autoplay,
82
- slidesToShow: this.slides,
83
- slidesToScroll: this.slides,
84
- speed: this.speed,
85
- responsive: this.breakpoints
86
- };
87
-
88
- this.settings = settings;
89
- }
90
- };
91
- </script>
92
-
93
- <style lang="scss">
94
- .carousel__image {
95
- padding: 20px 0;
96
- display: flex!important;
97
- align-items: center;
98
- justify-content: center;
99
- user-select: none;
100
- img {
101
- display: block;
102
- width: 150px;
103
- padding: 10px;
104
- }
105
- }
106
- </style>
1
+ <template>
2
+ <vue-slick-carousel v-bind="settings" :arrows="true" :dots="true">
3
+ <div
4
+ v-for="(item, index) in carouselItems"
5
+ :key="index"
6
+ class="carousel__image"
7
+ >
8
+ <img :src="item.img" :alt="item.title" draggable="false">
9
+ </div>
10
+ </vue-slick-carousel>
11
+ </template>
12
+
13
+ <script>
14
+ import VueSlickCarousel from 'vue-slick-carousel';
15
+ import 'vue-slick-carousel/dist/vue-slick-carousel.css';
16
+ import 'vue-slick-carousel/dist/vue-slick-carousel-theme.css';
17
+
18
+ export default {
19
+ name: 'ImageCarousel',
20
+ components: {
21
+ VueSlickCarousel
22
+ },
23
+ props: {
24
+ carouselItems: {
25
+ type: Array,
26
+ default: () => {
27
+ return [];
28
+ }
29
+ },
30
+ dots: {
31
+ type: Boolean,
32
+ default: true
33
+ },
34
+ infinite: {
35
+ type: Boolean,
36
+ default: true
37
+ },
38
+ autoplay: {
39
+ type: Boolean,
40
+ default: true
41
+ },
42
+ slides: {
43
+ type: Number,
44
+ default: 3
45
+ },
46
+ speed: {
47
+ type: Number,
48
+ default: 500
49
+ },
50
+ breakpoints: {
51
+ type: Array,
52
+ default: () => {
53
+ return [
54
+ {
55
+ breakpoint: 800,
56
+ settings: {
57
+ slidesToShow: 2,
58
+ slidesToScroll: 2
59
+ }
60
+ },
61
+ {
62
+ breakpoint: 600,
63
+ settings: {
64
+ slidesToShow: 1,
65
+ slidesToScroll: 1
66
+ }
67
+ }
68
+ ];
69
+ }
70
+ }
71
+ },
72
+ data() {
73
+ return {
74
+ settings: {}
75
+ };
76
+ },
77
+ mounted() {
78
+ const settings = {
79
+ dots: this.dots,
80
+ infinite: this.infinite,
81
+ autoplay: this.autoplay,
82
+ slidesToShow: this.slides,
83
+ slidesToScroll: this.slides,
84
+ speed: this.speed,
85
+ responsive: this.breakpoints
86
+ };
87
+
88
+ this.settings = settings;
89
+ }
90
+ };
91
+ </script>
92
+
93
+ <style lang="scss">
94
+ .carousel__image {
95
+ padding: 20px 0;
96
+ display: flex!important;
97
+ align-items: center;
98
+ justify-content: center;
99
+ user-select: none;
100
+ img {
101
+ display: block;
102
+ width: 150px;
103
+ padding: 10px;
104
+ }
105
+ }
106
+ </style>