@burh/nuxt-core 1.0.503 → 1.0.504

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (493) hide show
  1. package/.ebignore +25 -25
  2. package/.elasticbeanstalk/config.yml +18 -18
  3. package/.eslintrc.json +39 -39
  4. package/.gitlab-ci.yml +16 -16
  5. package/.vscode/settings.json +10 -10
  6. package/CHANGELOG.md +2 -2
  7. package/README.md +22 -22
  8. package/app.html +8 -8
  9. package/assets/css/font-awesome/css/font-awesome.css +2337 -2337
  10. package/assets/css/font-awesome/css/font-awesome.min.css +4 -4
  11. package/assets/css/font-awesome/fonts/fontawesome-webfont.svg +2671 -2671
  12. package/assets/css/nucleo/css/nucleo-svg.css +134 -134
  13. package/assets/css/nucleo/css/nucleo.css +572 -572
  14. package/assets/css/nucleo/fonts/nucleo-icons.svg +312 -312
  15. package/assets/css/variables.css +2 -2
  16. package/assets/images/burhCv.svg +6 -6
  17. package/assets/images/facebookCv.svg +3 -3
  18. package/assets/images/icons/facebook.svg +14 -14
  19. package/assets/images/icons/historicCv.svg +3 -3
  20. package/assets/images/icons/icon3.svg +3 -3
  21. package/assets/images/icons/icon4.svg +3 -3
  22. package/assets/images/icons/icon5.svg +3 -3
  23. package/assets/images/icons/icon6.svg +3 -3
  24. package/assets/images/icons/icon7.svg +3 -3
  25. package/assets/images/icons/icon8.svg +7 -7
  26. package/assets/images/icons/linkedin.svg +14 -14
  27. package/assets/images/icons/notesCv.svg +3 -3
  28. package/assets/images/icons/twitter.svg +14 -14
  29. package/assets/images/icons/whatsapp.svg +14 -14
  30. package/assets/images/linkedinCv.svg +3 -3
  31. package/assets/images/webCv.svg +4 -4
  32. package/assets/sass/argon.scss +104 -104
  33. package/assets/sass/burh-ds/_components.scss +142 -142
  34. package/assets/sass/burh-ds/_functions.scss +29 -29
  35. package/assets/sass/burh-ds/_global.scss +327 -327
  36. package/assets/sass/burh-ds/_helpers.scss +18 -18
  37. package/assets/sass/burh-ds/_mixins.scss +17 -17
  38. package/assets/sass/burh-ds/_transitions.scss +12 -12
  39. package/assets/sass/burh-ds/_utilities.scss +31 -31
  40. package/assets/sass/burh-ds/_variables.scss +963 -963
  41. package/assets/sass/burh-ds/_vendors.scss +38 -38
  42. package/assets/sass/burh-ds/atoms/_badge.scss +5 -5
  43. package/assets/sass/burh-ds/atoms/_buttons.scss +222 -222
  44. package/assets/sass/burh-ds/atoms/_forms.scss +419 -419
  45. package/assets/sass/burh-ds/atoms/_tables.scss +31 -31
  46. package/assets/sass/burh-ds/atoms/_type.scss +147 -147
  47. package/assets/sass/burh-ds/content/_interface-spa.scss +306 -306
  48. package/assets/sass/burh-ds/content/_main-content.scss +25 -25
  49. package/assets/sass/burh-ds/mixins/_badge.scss +37 -37
  50. package/assets/sass/burh-ds/mixins/_breakpoints.scss +39 -39
  51. package/assets/sass/burh-ds/mixins/_grid-framework.scss +66 -66
  52. package/assets/sass/burh-ds/mixins/_grid.scss +51 -51
  53. package/assets/sass/burh-ds/molecules/_box.scss +282 -282
  54. package/assets/sass/burh-ds/molecules/_breadcrumb.scss +8 -8
  55. package/assets/sass/burh-ds/molecules/_modal.scss +176 -176
  56. package/assets/sass/burh-ds/molecules/_navbar.scss +262 -262
  57. package/assets/sass/burh-ds/molecules/_notifications.scss +1 -1
  58. package/assets/sass/burh-ds/molecules/_steps-profile.scss +67 -67
  59. package/assets/sass/burh-ds/molecules/_testimonial.scss +53 -53
  60. package/assets/sass/burh-ds/organisms/_banner.scss +51 -51
  61. package/assets/sass/burh-ds/organisms/_cards.scss +228 -228
  62. package/assets/sass/burh-ds/organisms/_carousel.scss +113 -113
  63. package/assets/sass/burh-ds/organisms/_footer.scss +115 -115
  64. package/assets/sass/burh-ds/organisms/_profile-bar.scss +130 -130
  65. package/assets/sass/burh-ds/organisms/_search.scss +17 -17
  66. package/assets/sass/burh-ds/organisms/_subheader.scss +773 -773
  67. package/assets/sass/burh-ds/organisms/_tabs-setting.scss +123 -123
  68. package/assets/sass/burh-ds/organisms/banners/_banner.scss +62 -62
  69. package/assets/sass/burh-ds/organisms/cards/_featured-company.scss +17 -17
  70. package/assets/sass/burh-ds/organisms/cards/_opportunity.scss +16 -16
  71. package/assets/sass/burh-ds/pages/_error.scss +124 -124
  72. package/assets/sass/burh-ds/pages/_jobs.scss +424 -424
  73. package/assets/sass/burh-ds/pages/_testes.scss +350 -350
  74. package/assets/sass/burh-ds/variables/_colors.scss +358 -358
  75. package/assets/sass/burh-ds/variables/_global_settings.scss +39 -39
  76. package/assets/sass/core/alerts/_alert-dismissible.scss +48 -48
  77. package/assets/sass/core/alerts/_alert-notify.scss +47 -47
  78. package/assets/sass/core/alerts/_alert.scss +49 -49
  79. package/assets/sass/core/avatars/_avatar-group.scss +22 -22
  80. package/assets/sass/core/avatars/_avatar.scss +59 -59
  81. package/assets/sass/core/badges/_badge-circle.scss +29 -29
  82. package/assets/sass/core/badges/_badge-dot.scss +42 -42
  83. package/assets/sass/core/badges/_badge-floating.scss +18 -18
  84. package/assets/sass/core/badges/_badge.scss +67 -67
  85. package/assets/sass/core/breadcrumbs/_breadcrumb.scss +42 -42
  86. package/assets/sass/core/buttons/_button-brand.scss +12 -12
  87. package/assets/sass/core/buttons/_button-group.scss +79 -79
  88. package/assets/sass/core/buttons/_button-icon.scss +92 -92
  89. package/assets/sass/core/buttons/_button.scss +90 -90
  90. package/assets/sass/core/cards/_card-animations.scss +10 -10
  91. package/assets/sass/core/cards/_card-blockquote.scss +17 -17
  92. package/assets/sass/core/cards/_card-money.scss +27 -27
  93. package/assets/sass/core/cards/_card-pricing.scss +26 -26
  94. package/assets/sass/core/cards/_card-profile.scss +49 -49
  95. package/assets/sass/core/cards/_card-stats.scss +16 -16
  96. package/assets/sass/core/cards/_card.scss +70 -70
  97. package/assets/sass/core/charts/_chart.scss +69 -69
  98. package/assets/sass/core/close/_close.scss +47 -47
  99. package/assets/sass/core/collapse/_accordion.scss +38 -38
  100. package/assets/sass/core/content/_main-content.scss +17 -17
  101. package/assets/sass/core/custom-forms/_custom-checkbox.scss +47 -47
  102. package/assets/sass/core/custom-forms/_custom-control.scss +58 -58
  103. package/assets/sass/core/custom-forms/_custom-form.scss +45 -45
  104. package/assets/sass/core/custom-forms/_custom-radio.scss +38 -38
  105. package/assets/sass/core/custom-forms/_custom-toggle.scss +122 -122
  106. package/assets/sass/core/dropdowns/_dropdown.scss +89 -89
  107. package/assets/sass/core/footers/_footer.scss +159 -159
  108. package/assets/sass/core/forms/_form-extend.scss +38 -38
  109. package/assets/sass/core/forms/_form-validation.scss +78 -78
  110. package/assets/sass/core/forms/_form.scss +125 -125
  111. package/assets/sass/core/forms/_input-group.scss +136 -136
  112. package/assets/sass/core/grid/_grid.scss +31 -31
  113. package/assets/sass/core/headers/_header.scss +7 -7
  114. package/assets/sass/core/icons/_icon-actions.scss +57 -57
  115. package/assets/sass/core/icons/_icon-shape.scss +48 -48
  116. package/assets/sass/core/icons/_icon.scss +88 -88
  117. package/assets/sass/core/list-groups/_list-check.scss +52 -52
  118. package/assets/sass/core/list-groups/_list-group.scss +46 -46
  119. package/assets/sass/core/maps/_map.scss +10 -10
  120. package/assets/sass/core/masks/_mask.scss +33 -33
  121. package/assets/sass/core/medias/_media-comment.scss +33 -33
  122. package/assets/sass/core/medias/_media.scss +3 -3
  123. package/assets/sass/core/mixins/_alert.scss +22 -22
  124. package/assets/sass/core/mixins/_background-variant.scss +30 -30
  125. package/assets/sass/core/mixins/_badge.scss +12 -12
  126. package/assets/sass/core/mixins/_buttons.scss +105 -105
  127. package/assets/sass/core/mixins/_custom-forms.scss +47 -47
  128. package/assets/sass/core/mixins/_forms.scss +127 -127
  129. package/assets/sass/core/mixins/_icon.scss +10 -10
  130. package/assets/sass/core/mixins/_modals.scss +25 -25
  131. package/assets/sass/core/mixins/_popover.scss +35 -35
  132. package/assets/sass/core/modals/_modal.scss +31 -31
  133. package/assets/sass/core/navbars/_navbar-collapse.scss +37 -37
  134. package/assets/sass/core/navbars/_navbar-dropdown.scss +121 -121
  135. package/assets/sass/core/navbars/_navbar-floating.scss +17 -17
  136. package/assets/sass/core/navbars/_navbar-search.scss +216 -216
  137. package/assets/sass/core/navbars/_navbar-top.scss +58 -58
  138. package/assets/sass/core/navbars/_navbar-vertical.scss +507 -507
  139. package/assets/sass/core/navbars/_navbar.scss +368 -368
  140. package/assets/sass/core/navs/_nav-pills.scss +66 -66
  141. package/assets/sass/core/navs/_nav.scss +33 -33
  142. package/assets/sass/core/paginations/_pagination.scss +49 -49
  143. package/assets/sass/core/popovers/_popover.scss +21 -21
  144. package/assets/sass/core/progresses/_progress.scss +89 -89
  145. package/assets/sass/core/reboot/_reboot.scss +13 -13
  146. package/assets/sass/core/sections/_nucleo-icons.scss +117 -117
  147. package/assets/sass/core/separators/_separator.scss +54 -54
  148. package/assets/sass/core/shortcuts/_shortcut.scss +30 -30
  149. package/assets/sass/core/tables/_table-actions.scss +25 -25
  150. package/assets/sass/core/tables/_table-sortable.scss +28 -28
  151. package/assets/sass/core/tables/_table.scss +153 -153
  152. package/assets/sass/core/timeline/_timeline.scss +182 -182
  153. package/assets/sass/core/type/_article.scss +22 -22
  154. package/assets/sass/core/type/_display.scss +14 -14
  155. package/assets/sass/core/type/_heading.scss +65 -65
  156. package/assets/sass/core/type/_type.scss +27 -27
  157. package/assets/sass/core/utilities/_backgrounds.scss +51 -51
  158. package/assets/sass/core/utilities/_blurable.scss +37 -37
  159. package/assets/sass/core/utilities/_floating.scss +64 -64
  160. package/assets/sass/core/utilities/_helper.scss +18 -18
  161. package/assets/sass/core/utilities/_image.scss +9 -9
  162. package/assets/sass/core/utilities/_opacity.scss +35 -35
  163. package/assets/sass/core/utilities/_overflow.scss +11 -11
  164. package/assets/sass/core/utilities/_position.scss +25 -25
  165. package/assets/sass/core/utilities/_shadows.scss +28 -28
  166. package/assets/sass/core/utilities/_sizing.scss +7 -7
  167. package/assets/sass/core/utilities/_spacing.scss +107 -107
  168. package/assets/sass/core/utilities/_text.scss +49 -49
  169. package/assets/sass/core/utilities/_transform.scss +13 -13
  170. package/assets/sass/core/vendors/_bootstrap-datepicker.scss +279 -279
  171. package/assets/sass/core/vendors/_bootstrap-tagsinput.scss +67 -67
  172. package/assets/sass/core/vendors/_chartjs.scss +22 -22
  173. package/assets/sass/core/vendors/_dropzone.scss +74 -74
  174. package/assets/sass/core/vendors/_element-checkbox.scss +26 -26
  175. package/assets/sass/core/vendors/_element-tables.scss +61 -61
  176. package/assets/sass/core/vendors/_flatpickr.scss +72 -72
  177. package/assets/sass/core/vendors/_fullcalendar.scss +256 -256
  178. package/assets/sass/core/vendors/_headroom.scss +25 -25
  179. package/assets/sass/core/vendors/_lavalamp.scss +157 -157
  180. package/assets/sass/core/vendors/_nouislider.scss +413 -413
  181. package/assets/sass/core/vendors/_quill.scss +280 -280
  182. package/assets/sass/core/vendors/_scrollbar.scss +949 -949
  183. package/assets/sass/core/vendors/_select.scss +70 -70
  184. package/assets/sass/core/vendors/_sweet-alert-2.scss +22 -22
  185. package/assets/sass/core/vendors/_tags.scss +32 -32
  186. package/assets/sass/core/vendors/_vectormap.scss +16 -16
  187. package/assets/sass/custom/_components.scss +142 -142
  188. package/assets/sass/custom/_functions.scss +29 -29
  189. package/assets/sass/custom/_mixins.scss +15 -15
  190. package/assets/sass/custom/_transitions.scss +12 -12
  191. package/assets/sass/custom/_utilities.scss +31 -31
  192. package/assets/sass/custom/_variables.scss +1077 -1077
  193. package/assets/sass/custom/_vendors.scss +38 -38
  194. package/components/argon-core/Badge.vue +56 -56
  195. package/components/argon-core/Banners/Banner.vue +28 -28
  196. package/components/argon-core/Banners/BannerItem.vue +13 -13
  197. package/components/argon-core/BaseAlert.vue +74 -74
  198. package/components/argon-core/BaseButton.vue +81 -81
  199. package/components/argon-core/BaseDropdown.vue +114 -114
  200. package/components/argon-core/BaseHeader.vue +21 -21
  201. package/components/argon-core/BasePagination.vue +172 -172
  202. package/components/argon-core/BaseProgress.vue +121 -121
  203. package/components/argon-core/BaseSlider.vue +96 -96
  204. package/components/argon-core/BaseSwitch.vue +46 -46
  205. package/components/argon-core/BaseTable.vue +70 -70
  206. package/components/argon-core/Breadcrumb/Breadcrumb.vue +26 -26
  207. package/components/argon-core/Breadcrumb/BreadcrumbItem.vue +16 -16
  208. package/components/argon-core/Breadcrumb/RouteBreadcrumb.vue +45 -45
  209. package/components/argon-core/ButtonCheckbox.vue +39 -39
  210. package/components/argon-core/ButtonRadioGroup.vue +47 -47
  211. package/components/argon-core/Cards/Card.vue +71 -71
  212. package/components/argon-core/Cards/OpportunityCard.vue +39 -39
  213. package/components/argon-core/Cards/StatsCard.vue +49 -49
  214. package/components/argon-core/Charts/BarChart.js +30 -30
  215. package/components/argon-core/Charts/DoughnutChart.js +30 -30
  216. package/components/argon-core/Charts/LineChart.js +30 -30
  217. package/components/argon-core/Charts/PieChart.js +30 -30
  218. package/components/argon-core/Charts/config.js +491 -491
  219. package/components/argon-core/Charts/globalOptionsMixin.js +7 -7
  220. package/components/argon-core/Charts/optionHelpers.js +10 -10
  221. package/components/argon-core/CloseButton.vue +35 -35
  222. package/components/argon-core/Collapse/Collapse.vue +84 -84
  223. package/components/argon-core/Collapse/CollapseItem.vue +91 -91
  224. package/components/argon-core/Feed/Comment.vue +50 -50
  225. package/components/argon-core/Inputs/BaseCheckbox.vue +79 -79
  226. package/components/argon-core/Inputs/BaseInput.vue +270 -270
  227. package/components/argon-core/Inputs/BaseRadio.vue +68 -68
  228. package/components/argon-core/Inputs/DropzoneFileUpload.vue +138 -138
  229. package/components/argon-core/Inputs/DropzoneVideoUpload.vue +138 -138
  230. package/components/argon-core/Inputs/FileInput.vue +54 -54
  231. package/components/argon-core/Inputs/HtmlEditor.vue +105 -105
  232. package/components/argon-core/Inputs/IconCheckbox.vue +45 -45
  233. package/components/argon-core/Inputs/TagsInput.vue +100 -100
  234. package/components/argon-core/LoadingPanel.vue +26 -26
  235. package/components/argon-core/Modal.vue +180 -180
  236. package/components/argon-core/Navbar/BaseNav.vue +122 -122
  237. package/components/argon-core/Navbar/NavbarProgress.vue +19 -19
  238. package/components/argon-core/Navbar/NavbarProgressItem.vue +17 -17
  239. package/components/argon-core/Navbar/NavbarToggleButton.vue +21 -21
  240. package/components/argon-core/NavbarToggleButton.vue +29 -29
  241. package/components/argon-core/NotificationPlugin/Notification.vue +207 -207
  242. package/components/argon-core/NotificationPlugin/Notifications.vue +55 -55
  243. package/components/argon-core/NotificationPlugin/index.js +66 -66
  244. package/components/argon-core/SidebarPlugin/SideBar.vue +119 -119
  245. package/components/argon-core/SidebarPlugin/SidebarItem.vue +184 -184
  246. package/components/argon-core/SidebarPlugin/index.js +79 -79
  247. package/components/argon-core/Tabs/Tab.vue +33 -33
  248. package/components/argon-core/Tabs/Tabs.vue +170 -170
  249. package/components/argon-core/Timeline/TimeLine.vue +17 -17
  250. package/components/argon-core/Timeline/TimeLineItem.vue +30 -30
  251. package/components/argon-core/WorldMap/AsyncWorldMap.vue +28 -28
  252. package/components/argon-core/WorldMap/WorldMap.vue +127 -127
  253. package/components/argon-core/index.js +82 -82
  254. package/components/burh-ds/Aboutme/Profile.vue +110 -110
  255. package/components/burh-ds/Avatar/AvatarLink.vue +44 -44
  256. package/components/burh-ds/Avatar/BusinessAvatar.vue +38 -38
  257. package/components/burh-ds/Banners/BannerHero.vue +23 -23
  258. package/components/burh-ds/Banners/BannerItem.vue +14 -14
  259. package/components/burh-ds/Button/ExportButton.vue +20 -20
  260. package/components/burh-ds/Button/SwitchStateButton.vue +165 -165
  261. package/components/burh-ds/Capsules/SearchSlug.vue +860 -860
  262. package/components/burh-ds/Capsules/UserProfile.vue +1938 -1938
  263. package/components/burh-ds/Cards/BaseCard.vue +195 -195
  264. package/components/burh-ds/Cards/CampaignCard.vue +40 -40
  265. package/components/burh-ds/Cards/CompanyCard.vue +39 -39
  266. package/components/burh-ds/Cards/CourseInfoCard.vue +267 -267
  267. package/components/burh-ds/Cards/FeatureBusinessCard.vue +74 -74
  268. package/components/burh-ds/Cards/FunctionalityItem.vue +35 -35
  269. package/components/burh-ds/Cards/OpportunityCard.vue +115 -115
  270. package/components/burh-ds/Cards/PerformanceCard.vue +81 -81
  271. package/components/burh-ds/Cards/PerformanceItem.vue +65 -65
  272. package/components/burh-ds/Cards/PlanCard.vue +192 -192
  273. package/components/burh-ds/Cards/ProductCard.vue +142 -142
  274. package/components/burh-ds/Cards/PurchaseCard.vue +58 -58
  275. package/components/burh-ds/Cards/PurchaseCardSimple.vue +58 -58
  276. package/components/burh-ds/Cards/TestCard.vue +192 -192
  277. package/components/burh-ds/Cards/TrainingCard.vue +151 -151
  278. package/components/burh-ds/Cards/WelcomeCard.vue +106 -106
  279. package/components/burh-ds/Carousel/FeedCarousel.vue +47 -47
  280. package/components/burh-ds/Carousel/ImageCarousel.vue +111 -111
  281. package/components/burh-ds/Chart/DoughnutChart.vue +20 -20
  282. package/components/burh-ds/Collapse/DefaultCollapse.vue +70 -70
  283. package/components/burh-ds/Crop/Crop.vue +121 -121
  284. package/components/burh-ds/Curriculum/UserCurriculum/UpgradePlan.vue +71 -71
  285. package/components/burh-ds/Curriculum/UserCurriculum/UserCvLeftSide.vue +542 -542
  286. package/components/burh-ds/Curriculum/UserCurriculum/UserCvMiddle.vue +590 -590
  287. package/components/burh-ds/Curriculum/UserCurriculum/UserCvRightSide.vue +1270 -1266
  288. package/components/burh-ds/Curriculum/UserCurriculum/UserCvRightSideNotAuth.vue +496 -496
  289. package/components/burh-ds/Curriculum/UserCurriculum/index.vue +258 -258
  290. package/components/burh-ds/Dropdown/AppLinkArea.vue +132 -132
  291. package/components/burh-ds/Dropdown/DropdownItem.vue +26 -26
  292. package/components/burh-ds/Dropdown/DropdownSection.vue +38 -38
  293. package/components/burh-ds/Dropdown/FaqVideoArea.vue +88 -88
  294. package/components/burh-ds/Dropdown/SignOutItem.vue +11 -11
  295. package/components/burh-ds/Dropdown/UserMenuDropdown.vue +63 -63
  296. package/components/burh-ds/FeaturedCompanies/FeaturedCompanies.vue +11 -11
  297. package/components/burh-ds/FeaturedCompanies/FeaturedCompanyCard.vue +16 -16
  298. package/components/burh-ds/Filters/BaseFilterContainer.vue +138 -138
  299. package/components/burh-ds/Filters/FilterWithDropdown.vue +289 -289
  300. package/components/burh-ds/Groups/ProductItem.vue +62 -62
  301. package/components/burh-ds/Groups/SimpleProductItem.vue +164 -164
  302. package/components/burh-ds/Headings/AppHeader.vue +373 -373
  303. package/components/burh-ds/Headings/BaseHeader.vue +24 -24
  304. package/components/burh-ds/Headings/Profile.vue +66 -66
  305. package/components/burh-ds/Headings/ProfileHeader.vue +105 -105
  306. package/components/burh-ds/Headings/SettingsHeader.vue +48 -48
  307. package/components/burh-ds/Headings/StepHeader.vue +122 -122
  308. package/components/burh-ds/Img/ImageWithFallback.vue +67 -67
  309. package/components/burh-ds/Input/AutoComplete.vue +136 -136
  310. package/components/burh-ds/Inputs/BaseCheckbox.vue +73 -73
  311. package/components/burh-ds/Inputs/BaseSwitch.vue +43 -43
  312. package/components/burh-ds/Inputs/BaseSwitchSecondary.vue +84 -84
  313. package/components/burh-ds/Inputs/DoubleInputWithIcon.vue +100 -100
  314. package/components/burh-ds/Inputs/HtmlEditor.vue +60 -60
  315. package/components/burh-ds/Inputs/SearchInput.vue +88 -88
  316. package/components/burh-ds/InterfaceSpa/InterfaceSpa.vue +83 -83
  317. package/components/burh-ds/Jobs/JobDetail.vue +432 -432
  318. package/components/burh-ds/Jobs/JobDetailDesign.vue +151 -151
  319. package/components/burh-ds/Jobs/JobDetailEmpty.vue +27 -27
  320. package/components/burh-ds/Labels/LabelContextIcon.vue +58 -58
  321. package/components/burh-ds/Link/DefaultLink.vue +30 -30
  322. package/components/burh-ds/Lists/ListAvatarCheckbox.vue +157 -157
  323. package/components/burh-ds/Lists/ListNavLinks.vue +54 -54
  324. package/components/burh-ds/Lists/VagasSimple.vue +404 -404
  325. package/components/burh-ds/Loadings/Basics.vue +80 -80
  326. package/components/burh-ds/Loadings/InfiniteLoading.vue +21 -21
  327. package/components/burh-ds/Loadings/LoadingFullPage.vue +68 -68
  328. package/components/burh-ds/Loadings/NewLoading.vue +119 -119
  329. package/components/burh-ds/Loads/LoadingBar.vue +83 -83
  330. package/components/burh-ds/Modals/AddCustomerModal.vue +484 -484
  331. package/components/burh-ds/Modals/AddMember.vue +255 -255
  332. package/components/burh-ds/Modals/AddRoleModal.vue +139 -139
  333. package/components/burh-ds/Modals/AppConfigModal.vue +643 -643
  334. package/components/burh-ds/Modals/CourseMessageModal.vue +66 -66
  335. package/components/burh-ds/Modals/DocsModal.vue +111 -111
  336. package/components/burh-ds/Modals/DropzoneModal.vue +125 -125
  337. package/components/burh-ds/Modals/InviteToRole.vue +287 -287
  338. package/components/burh-ds/Modals/MobileModal.vue +65 -65
  339. package/components/burh-ds/Modals/ModalTests.vue +167 -167
  340. package/components/burh-ds/Modals/NewUserModal.vue +87 -87
  341. package/components/burh-ds/Modals/PlanModal.vue +327 -327
  342. package/components/burh-ds/Modals/RequestModal.vue +237 -237
  343. package/components/burh-ds/Modals/SendCourse.vue +448 -448
  344. package/components/burh-ds/Modals/SendDisc.vue +230 -230
  345. package/components/burh-ds/Modals/SendTest.vue +362 -362
  346. package/components/burh-ds/Modals/ShareModal.vue +228 -228
  347. package/components/burh-ds/Modals/SharedModal.vue +230 -230
  348. package/components/burh-ds/Modals/SmsModal.vue +329 -329
  349. package/components/burh-ds/Modals/SubModal.vue +41 -41
  350. package/components/burh-ds/Modals/UniversalShareModal.vue +216 -216
  351. package/components/burh-ds/Modals/UniversalWhatsappModal.vue +93 -93
  352. package/components/burh-ds/Modals/UniversityAccessModal.vue +135 -135
  353. package/components/burh-ds/Modals/VideoModal.vue +80 -80
  354. package/components/burh-ds/Modals/WhatsappModal.vue +92 -92
  355. package/components/burh-ds/Navbar/BaseNav.vue +119 -119
  356. package/components/burh-ds/Notifications/Notification.vue +215 -215
  357. package/components/burh-ds/Notifications/Notifications.vue +55 -55
  358. package/components/burh-ds/Notifications/index.js +66 -66
  359. package/components/burh-ds/Pagination/NamedPagination.vue +187 -187
  360. package/components/burh-ds/Questions/Question.vue +243 -243
  361. package/components/burh-ds/Questions/QuestionAttach.vue +13 -13
  362. package/components/burh-ds/Questions/QuestionRadio.vue +122 -122
  363. package/components/burh-ds/Questions/QuestionRadioItem.vue +83 -83
  364. package/components/burh-ds/Questions/QuestionText.vue +66 -66
  365. package/components/burh-ds/Questions/index.js +13 -13
  366. package/components/burh-ds/Skeleton/AppHeader.vue +173 -173
  367. package/components/burh-ds/Skeleton/BaseCardTest.vue +51 -51
  368. package/components/burh-ds/Skeleton/BaseCardUniversity.vue +79 -79
  369. package/components/burh-ds/Skeleton/BaseCardUser.vue +84 -84
  370. package/components/burh-ds/Skeleton/BaseCourseInfo.vue +116 -116
  371. package/components/burh-ds/Skeleton/BaseTraining.vue +29 -29
  372. package/components/burh-ds/Skeleton/BufferFolderSkeleton.vue +45 -45
  373. package/components/burh-ds/Skeleton/BufferUserSkeleton.vue +142 -142
  374. package/components/burh-ds/Skeleton/Cards.vue +86 -86
  375. package/components/burh-ds/Skeleton/ChartCard.vue +114 -114
  376. package/components/burh-ds/Skeleton/Home.vue +100 -100
  377. package/components/burh-ds/Skeleton/RecruitmentCard.vue +203 -203
  378. package/components/burh-ds/Skeleton/SkeletonAnimate.vue +146 -146
  379. package/components/burh-ds/Tabs/Tab.vue +56 -56
  380. package/components/burh-ds/Tabs/Tabs.vue +188 -188
  381. package/components/burh-ds/Tabs/TesteTab.vue +132 -132
  382. package/components/burh-ds/Video/MuxVideo.vue +39 -39
  383. package/components/burh-ds/index.js +20 -20
  384. package/components/layouts/argon/Content.vue +17 -17
  385. package/components/layouts/argon/navbar/BlankLayout.vue +61 -61
  386. package/components/layouts/argon/navbar/DashboardNavbar.vue +307 -307
  387. package/components/layouts/burh-ds/ContentFooter.vue +45 -45
  388. package/components/layouts/burh-ds/footer/FooterSimple.vue +20 -20
  389. package/components/layouts/burh-ds/footer/ProductsFooter.vue +330 -330
  390. package/components/layouts/burh-ds/footer/StatusFooter.vue +105 -105
  391. package/components/layouts/burh-ds/footer/StoreFooter.vue +54 -54
  392. package/components/layouts/burh-ds/navbar/AppNavbar.vue +97 -97
  393. package/components/layouts/burh-ds/navbar/BusinessGlobalNavbar.vue +435 -435
  394. package/components/layouts/burh-ds/navbar/CarreirasNavbar.vue +363 -363
  395. package/components/layouts/burh-ds/navbar/CompanyGlobalNavbar.vue +244 -244
  396. package/components/layouts/burh-ds/navbar/EmpresasNavbar.vue +374 -374
  397. package/components/layouts/burh-ds/navbar/EmpresasNavbarLogado.vue +388 -388
  398. package/components/layouts/burh-ds/navbar/GlobalNavbar.vue +535 -535
  399. package/components/layouts/burh-ds/navbar/MobileNavbar.vue +431 -431
  400. package/components/layouts/burh-ds/navbar/PublicNavbar.vue +168 -168
  401. package/components/layouts/burh-ds/navbar/SimpleNavbar.vue +129 -129
  402. package/components/layouts/burh-ds/navbar/UserNavbar.vue +346 -346
  403. package/components/layouts/burh-ds/navbar/UserNavbarLogin.vue +253 -253
  404. package/components/organismos/atomos/Deslike.vue +26 -26
  405. package/components/organismos/atomos/Like.vue +26 -26
  406. package/components/organismos/emptyChart/index.vue +39 -39
  407. package/components/pages/UserProfile/EditProfileForm.vue +142 -142
  408. package/components/pages/UserProfile/UserCard.vue +61 -61
  409. package/components/pages/dashboard/ActivityFeed.vue +102 -102
  410. package/components/pages/dashboard/LightTable.vue +194 -194
  411. package/components/pages/dashboard/PageVisitsTable.vue +107 -107
  412. package/components/pages/dashboard/ProgressTrackList.vue +82 -82
  413. package/components/pages/dashboard/SocialTrafficTable.vue +101 -101
  414. package/components/pages/dashboard/TaskList.vue +56 -56
  415. package/components/pages/dashboard/UserList.vue +72 -72
  416. package/components/pages/forms/BrowserDefaultsValidation.vue +106 -106
  417. package/components/pages/forms/CustomStylesValidation.vue +130 -130
  418. package/components/pages/forms/ServerSideValidation.vue +128 -128
  419. package/components/pages/register/FailedRegistration.vue +29 -29
  420. package/components/pages/register/SuccessfulRegistration.vue +29 -29
  421. package/components/tables/PaginatedTables/clientPaginationMixin.js +86 -86
  422. package/components/tables/RegularTables/CheckboxColoredTable.vue +112 -112
  423. package/components/tables/RegularTables/CheckboxTable.vue +101 -101
  424. package/components/tables/RegularTables/DarkTable.vue +114 -114
  425. package/components/tables/RegularTables/InlineActionsTable.vue +94 -94
  426. package/components/tables/RegularTables/LightTable.vue +117 -117
  427. package/components/tables/RegularTables/StripedTable.vue +94 -94
  428. package/components/tables/RegularTables/TranslucentTable.vue +114 -114
  429. package/components/tables/projects.js +75 -75
  430. package/components/tables/users.js +42 -42
  431. package/components/tables/users2.js +474 -474
  432. package/components/widgets/CalendarWidget.vue +119 -119
  433. package/components/widgets/CreditCard.vue +66 -66
  434. package/components/widgets/MembersCard.vue +99 -99
  435. package/components/widgets/PaypalCard.vue +45 -45
  436. package/components/widgets/ProgressTrackList.vue +76 -76
  437. package/components/widgets/StatsCards.vue +70 -70
  438. package/components/widgets/TaskList.vue +67 -67
  439. package/components/widgets/TimelineCard.vue +66 -66
  440. package/components/widgets/VectorMapCard.vue +139 -139
  441. package/components/widgets/VisaCard.vue +51 -51
  442. package/data/ListVideoLinksMock.json +21 -21
  443. package/dictionary.js +38 -38
  444. package/environment.env.md +34 -34
  445. package/environment.js +221 -221
  446. package/eslint.config.json +12 -12
  447. package/layouts/AuthLayout.vue +191 -191
  448. package/layouts/BurhCarreirasLayout.vue +63 -63
  449. package/layouts/BurhEmpresasLayout.vue +64 -64
  450. package/layouts/BurhNoHeader.vue +63 -63
  451. package/layouts/BurhPublicLayout.vue +67 -67
  452. package/layouts/BurhUserLayout.vue +231 -231
  453. package/layouts/DashboardLayout.vue +226 -226
  454. package/layouts/error.vue +119 -119
  455. package/metadata.json +30 -30
  456. package/middleware/README.md +8 -8
  457. package/middleware/decodeUrl.js +8 -8
  458. package/middleware/maintenance.js +9 -9
  459. package/middleware/new-account.js +6 -6
  460. package/middleware/redirect.js +13 -13
  461. package/middleware/user-agent-error.js +28 -28
  462. package/nuxt.config.js +207 -207
  463. package/package.json +119 -119
  464. package/plugins/README.md +7 -7
  465. package/plugins/analytics/ga.js +28 -28
  466. package/plugins/auth/auth.js +210 -210
  467. package/plugins/axios.js +32 -32
  468. package/plugins/carousel/owl-carousel.js +3 -3
  469. package/plugins/crop/crop.js +4 -4
  470. package/plugins/dashboard/dashboard-plugin.js +31 -31
  471. package/plugins/dashboard/directives/click-outside.js +15 -15
  472. package/plugins/dashboard/eventBus.js +1 -1
  473. package/plugins/dashboard/globalComponents.js +44 -44
  474. package/plugins/dashboard/globalDirectives.js +7 -7
  475. package/plugins/dom/loader.js +76 -76
  476. package/plugins/localstorage.js +20 -20
  477. package/plugins/location/location.js +41 -41
  478. package/plugins/pagination/pagination.js +3 -3
  479. package/plugins/qrcode/qrcode.js +4 -4
  480. package/plugins/router.js +8 -8
  481. package/plugins/social-media/fb-sdk.js +44 -44
  482. package/plugins/social-media/share-link-facebook.js +32 -32
  483. package/plugins/social-media/share-link-linkedin.js +30 -30
  484. package/plugins/social-media/share-link-twitter.js +30 -30
  485. package/plugins/social-media/share-link-whatsapp.js +31 -31
  486. package/plugins/vClickOutside.js +4 -4
  487. package/polyfills.js +96 -96
  488. package/util/common.js +189 -189
  489. package/util/cookie.js +28 -28
  490. package/util/dom.js +63 -63
  491. package/util/getPrefixes.js +12 -12
  492. package/util/request.js +46 -46
  493. package/util/throttle.js +15 -15
@@ -1,860 +1,860 @@
1
- <template>
2
- <interface-spa
3
- :class="isMobileOnlyWatch ? 'interface-spa--mobile' : ''"
4
- classesHeader="jobs-aside--header"
5
- classesAside="jobs-aside"
6
- class="printable"
7
- asideSize="big"
8
- >
9
- <burh-modals
10
- slot="interface-header"
11
- :render="['phone', 'address']"
12
- :active="activeModal"
13
- v-on:modal-close="clearActive($event)"
14
- v-on:updatedOtherInformations="setUpdatedOtherInformations($event)"
15
- :title="'Aviso'"
16
- :description="`Para se candidatar é necessário informar seu ${activeModal == 'phone' ? 'telefone': 'endereço'}`"
17
- >
18
- </burh-modals>
19
-
20
- <div class="interface-spa__filter" slot="interface-header">
21
-
22
- <span class="d-block bg-lighter px-4 w-100 h-100" v-if="isMobileOnlyWatch" v-on:click="toggleFilterMobile()">
23
- <!-- <font-awesome-icon :icon="['fas', 'chevron-down']" /> Sorocaba - CLT, PJ Sorocaba - CLT, PJ Sorocaba - CLT, PJ -->
24
- <font-awesome-icon :icon="['fas', 'filter']" class="mr-2" /> <span>Filtros Avançados</span>
25
- </span>
26
- <h4 class="interface-spa__filter__header" v-on:click="toggleFilterMobile()">
27
- <font-awesome-icon :icon="['fas', 'chevron-left']" class="mr-2" /> <span>Filtros avançados</span>
28
- </h4>
29
- <div class="interface-spa__filter__fields">
30
- <auto-complete :valueDefault="city" :preventDefaultValue="true" v-on:change="onAutoCompleteChange($event)" txtPlaceholder="Cidade" :request="true" :doRequest="funcRequest" :listWords="['itu', 'itupeva', 'sorocaba', 'votorantim', 'salto', 'salto de pirapora']" class="mr-2"/>
31
-
32
- <base-input class="mr-2">
33
- <el-select
34
- v-model="selects.hiringType"
35
- filterable
36
- placeholder="Tipo de contratação"
37
- popper-class="z-master"
38
- @change="searchParams()"
39
- >
40
- <el-option
41
- v-for="option in hiringType"
42
- :key="option.label"
43
- :label="option.label"
44
- :value="option.label"
45
- ></el-option>
46
- </el-select>
47
- </base-input>
48
- <base-input class="mr-2">
49
- <el-select
50
- v-model="selects.date"
51
- filterable
52
- placeholder="Tempo de Abertura"
53
- popper-class="z-master"
54
- @change="searchParams()"
55
- >
56
- <el-option
57
- v-for="option in date"
58
- :key="option.label"
59
- :label="option.label"
60
- :value="option.value"
61
- ></el-option>
62
- </el-select>
63
- </base-input>
64
- <base-input class="mr-2">
65
- <el-select
66
- v-model="selects.handicapped"
67
- filterable
68
- placeholder="PCD"
69
- popper-class="z-master"
70
- @change="searchParams()"
71
- >
72
- <el-option
73
- v-for="option in handicapped"
74
- :key="option.label"
75
- :label="option.label"
76
- :value="option.value"
77
- ></el-option>
78
- </el-select>
79
- </base-input>
80
-
81
- <button class="btn btn-primary btn-sm btn-block mt-4" v-if="isMobileOnlyWatch" v-on:click="toggleFilterMobile()">Aplicar filtro</button>
82
- </div>
83
- </div>
84
-
85
- <div v-if="!isMobileOnlyWatch" slot="aside-header" class="d-flex">
86
- <template v-if="details != null && details.total != null">
87
- Página {{currentPage}} de {{details.total}} vagas.
88
- <br />
89
- </template>
90
- </div>
91
-
92
- <ul class="list-unstyled search__list" slot="aside-body">
93
- <template v-if="!searchEmpty">
94
- <li class="search__list__item" v-if="(jobs == null || jobs.length <= 0)">
95
- <div class="card card--job cursor-pointer skeleton">
96
- <div class="card-header">
97
- <span class="avatar rounded-circle">
98
- </span>
99
- <ul class="card__controls list-inline">
100
- <li class="list-inline-item"></li>
101
- <li class="list-inline-item"></li>
102
- </ul>
103
- </div>
104
- <div class="card-body">
105
- <span class="card__company"></span>
106
- <h5 class="card-title"></h5>
107
- <span class="card__local"></span>
108
- </div>
109
- <div class="card-footer">
110
- <p class="card__published"></p>
111
- </div>
112
- </div>
113
- </li>
114
- </template>
115
- <template v-if="!searchEmpty">
116
- <li class="search__list__item" v-for="(job, index) in jobs" :key="job.job_id" :class="{'search__list__item--opened': details != null && job.job_id == details.job_id}">
117
- <opportunityCard
118
- v-on:share-click="onClickShareJob"
119
- v-on:save-click="onClickSaveJob(job)"
120
- v-on:card-click="featureDetails(job.job_id, index)"
121
- v-on:avatar-click="featureDetails(job.job_id, index)"
122
- v-on:company-name-click="featureDetails(job.job_id, index)"
123
- :fullHeart="job.subscription != null && job.subscription.user_bookmarked"
124
- :link="job.job_id"
125
- :img="!job.private ? job.company_logo : '/img/content/logoempresaconfidencial.png'"
126
- :title="job.job_title"
127
- :date="job.created_at"
128
- :href="''"
129
- :company="!job.private ? job.company_name : 'Empresa Confidencial'"
130
- :local="job.city_name"
131
- :pcd="job.handicapped"
132
- ></opportunityCard>
133
- </li>
134
- <li class="p-4">
135
- <v-pagination
136
- v-if="details.last_page != null"
137
- v-model="currentPage"
138
- :classes="bootstrapPaginationClasses"
139
- :labels="paginationAnchorTexts"
140
- :page-count="details.last_page"
141
- ></v-pagination>
142
- </li>
143
- </template>
144
- <template v-if="searchEmpty && isMobileOnlyWatch">
145
- <li class="search__list__item">
146
- <div class="p-4">
147
- <h2 class="display-3 mt-5">Sem Resultados</h2>
148
- <p>Para conseguir mais resultados, tente ajustar alterando a sua busca ou verifique se a Burh já esta disponível em sua cidade.</p>
149
- <button class="btn btn-sm btn-outline-primary" @click="$router.push('/busca')">Ver sugestões</button>
150
- </div>
151
- </li>
152
- </template>
153
- <share-modal :show="modals" :url="jobLinkShare" />
154
- </ul>
155
-
156
-
157
- <!-- <div slot="aside-footer" class="d-none d-sm-block">
158
- <template v-if="jobs != null && jobs.length > 0">
159
- <font-awesome-icon :icon="['far', 'eye']" />
160
- <small>
161
- Você ainda tem
162
- <b>{{jobsLeft()}}</b> vagas para visualizar
163
- </small>
164
- </template>
165
- </div> -->
166
-
167
- <!-- <job-detail :title="this.details.title" :img="this.details.img" :location="this.details.location" :company="this.details.company" :description="this.details.description"></job-detail> -->
168
- <job-detail
169
- class="skeleton"
170
- :link="''"
171
- v-if="jobs == null || jobs.length <= 0"
172
- slot="content"
173
- :title="''"
174
- :hiring="''"
175
- :img="''"
176
- :location="''"
177
- :company="''"
178
- :description="''"
179
- :benefits="[]"
180
- :company_private="true"
181
- :searchEmpty="searchEmpty"
182
- :skeleton="true"
183
- ></job-detail>
184
-
185
- <job-detail
186
- v-on:share-click="onClickShareJob"
187
- v-on:save-click="onClickSaveJobDetail(details)"
188
- :link="this.details.job_id"
189
- v-if="this.details.total"
190
- slot="content"
191
- :fullHeart="this.details.user_bookmarked"
192
- :title="this.details.title"
193
- :hiring="this.details.hiring"
194
- :img="this.details.img"
195
- :location="this.details.location"
196
- :company="this.details.company"
197
- :description="this.details.description"
198
- :benefits="this.details.benefits"
199
- :company_private="this.details.private"
200
- :company_slug="this.details.company_slug"
201
- :applied="this.details.applied"
202
- :canUnSubscribe="this.details.can_unsubscribe"
203
- :handicapped="this.details.handicapped"
204
- :salary="this.details.salary"
205
- :searchEmpty="searchEmpty"
206
- v-on:apply-to-job="applyToJob($event)"
207
- >
208
- <div class="row printable__qrcode" slot="qrcode">
209
- <div class="col mb-4">
210
- <div class="qr-code">
211
- <qrcode
212
- :value="baseUrl +'/'+ details.link"
213
- :options="{ width: 156, height: 156 }"
214
- class="border"
215
- ></qrcode>
216
- </div>
217
- </div>
218
- </div>
219
- </job-detail>
220
-
221
- <div class="job-detail__footer d-flex w-100 justify-content-end" slot="footer-content">
222
- <div class="box-payment mr-md-4">
223
- <span class="text-muted d-block">Salário</span>
224
- <bpInterfaceSpa class="lead">R$ {{this.details.salary}}</bpInterfaceSpa>
225
- </div>
226
- <button class="btn btn-primary" @click="applyToJob()">Candidatar-se</button>
227
- </div>
228
- </interface-spa>
229
- </template>
230
- <script>
231
- import { isMobile, isMobileOnly } from "mobile-device-detect";
232
- import { Select, Option } from "element-ui";
233
- import jobDetail from "~/components/burh-ds/Jobs/JobDetail.vue";
234
- import InterfaceSpa from "~/components/burh-ds/InterfaceSpa/InterfaceSpa.vue";
235
- import opportunityCard from "~/components/burh-ds/Cards/OpportunityCard.vue";
236
- import ShareModal from "~/components/burh-ds/Modals/ShareModal.vue";
237
- import AutoComplete from "~/components/burh-ds/Input/AutoComplete.vue";
238
- import https from "https";
239
- import swal from 'sweetalert2';
240
- import BurhModals from "@/pages/burh/modals/modals";
241
- import { getCookie } from '~/util/cookie';
242
- import {userSaveJob} from '~/services/user'
243
-
244
-
245
- export default {
246
- name: "search-slug",
247
- components: {
248
- InterfaceSpa,
249
- opportunityCard,
250
- jobDetail,
251
- [Select.name]: Select,
252
- [Option.name]: Option,
253
- ShareModal,
254
- BurhModals,
255
- AutoComplete
256
- },
257
- props: ['searchData'],
258
- watch:{
259
- '$store.state.localStorage.currentUser'(newValue){
260
- this.currentUser = newValue;
261
- },
262
- $route (to, from){
263
- this.term = to.query.term;
264
- if (from.query.term != to.query.term) {
265
- this.search(1, true);
266
- }
267
- },
268
- currentPage(newValue) {
269
- this.searchParams(newValue);
270
- }
271
- },
272
-
273
- async mounted() {
274
- this.currentUser = this.$store.state.localStorage.currentUser;
275
- this.isMobileOnlyWatch = isMobileOnly;
276
-
277
- if(this.city == null) {
278
- this.city = await this.$location();
279
- }
280
-
281
- this.onLoadSearch();
282
- },
283
-
284
- updated() {
285
- this.selects.handicapped = this.$route.query.handicapped
286
- ? this.$route.query.handicapped == "true"
287
- ? "Sim"
288
- : "Não"
289
- : "";
290
- this.selects.hiringType = this.$route.query.type
291
- ? this.$route.query.type
292
- : "";
293
- // this.autoComplete();
294
- },
295
-
296
- data() {
297
- return {
298
- city: null,
299
- currentUser: null,
300
- funcRequest: {"request": this.doSearchCities},
301
- isMobileOnlyWatch: false,
302
- searching: false,
303
- bootstrapPaginationClasses: {
304
- ul: 'pagination pagination-sm',
305
- li: 'page-item',
306
- liActive: 'active',
307
- liDisable: 'disabled',
308
- button: 'page-link'
309
- },
310
- paginationAnchorTexts: {
311
- first: false,
312
- prev: 'Anterior',
313
- next: 'Próximo',
314
- last: false,
315
- },
316
- pagination: {
317
- default: 1,
318
- last: 1
319
- },
320
- baseUrl: process.env.baseAppUrl,
321
- userPhoneNumber: null,
322
- activeModal: '',
323
- jobLinkShare: "",
324
- modals: {
325
- modal0: false
326
- },
327
- autocomplete: null,
328
- jobs: [],
329
- currentresult: 15,
330
- details: {
331
- img: "",
332
- title: "",
333
- description: "",
334
- location: "",
335
- company: "",
336
- salary: null,
337
- total: 0,
338
- hiring: "",
339
- private: false,
340
- link: "",
341
- job_id: null,
342
- company_slug: null,
343
- applied: null,
344
- can_unsubscribe: null,
345
- user_bookmarked: null,
346
- index: null,
347
- },
348
- loading: false,
349
- address: "",
350
- handicapped: [
351
- {
352
- label: "Sim",
353
- value: true
354
- },
355
- {
356
- label: "Não",
357
- value: false
358
- }
359
- ],
360
- date: [
361
- {
362
- label: "90 dias",
363
- value: 90
364
- },
365
- {
366
- label: "60 dias",
367
- value: 60
368
- },
369
- {
370
- label: "30 dias",
371
- value: 30
372
- },
373
- {
374
- label: "15 dias",
375
- value: 15
376
- },
377
- {
378
- label: "7 dias",
379
- value: 7
380
- },
381
- {
382
- label: "Hoje",
383
- value: 1
384
- }
385
- ],
386
- hiringType: [
387
- {
388
- label: "Todos",
389
- value: 1
390
- },
391
- {
392
- label: "CLT",
393
- value: 2
394
- },
395
- {
396
- label: "CNPJ",
397
- value: 3
398
- },
399
- {
400
- label: "Estágio",
401
- value: 4
402
- },
403
- {
404
- label: "RPA",
405
- value: 5
406
- },
407
- {
408
- label: "Temporário",
409
- value: 6
410
- }
411
- ],
412
- searchEmpty: false,
413
- selects: this.searchData.selects,
414
- term: this.searchData.term,
415
- city: this.searchData.city,
416
- currentPage: this.searchData.currentPage
417
- };
418
- },
419
-
420
- methods: {
421
- async onClickSaveJob(item){
422
- if ( this.currentUser == null ) {
423
- swal.fire({
424
- title: `Aviso`,
425
- html: `Você precisa estar logado para realizar esta função.`,
426
- buttonsStyling: false,
427
- confirmButtonClass: 'btn btn-primary btn-fill',
428
- });
429
- return;
430
- }
431
-
432
- if(await userSaveJob(item.job_id, item.subscription.user_bookmarked)) {
433
- item.subscription.user_bookmarked = !item.subscription.user_bookmarked;
434
- if (item.job_id == this.details.job_id) {
435
- this.details.user_bookmarked = item.subscription.user_bookmarked ;
436
- }
437
- }
438
- },
439
-
440
- async onClickSaveJobDetail(item){
441
- if ( this.currentUser == null ) {
442
- swal.fire({
443
- title: `Aviso`,
444
- html: `Você precisa estar logado para realizar esta função.`,
445
- buttonsStyling: false,
446
- confirmButtonClass: 'btn btn-primary btn-fill',
447
- });
448
- return;
449
- }
450
-
451
- if(await userSaveJob(item.job_id, item.user_bookmarked)) {
452
- item.user_bookmarked = !item.user_bookmarked;
453
- this.jobs[item.index].subscription.user_bookmarked = item.user_bookmarked;
454
- }
455
- },
456
-
457
- onAutoCompleteChange(e) {
458
- if(e == this.$route.query.city) {
459
- return;
460
- }
461
- this.city = e.split(`,`)[0].replace('value:','');
462
- this.searchParams();
463
- },
464
-
465
- async doSearchCities(key = null){
466
- let {data} = await this.$axios.get(process.env.routes.api.searchCities.replace(':hash',key));
467
- let items = [...new Set(data.data.cities)]; //remove cities duplicated
468
- return items;
469
- },
470
-
471
- onLoadSearch() {
472
- this.search(1, false);
473
- },
474
- openModal(modal, data = null, index = null) {
475
- //this.index = index;
476
- this.activeModal = modal;
477
- //this.userData = data;
478
- document.body.classList.add("modal-open");
479
- document.body.classList.add("no-scroll");
480
- },
481
-
482
- clearActive(e) {
483
- this.activeModal = "";
484
- //this.userData = null;
485
- document.body.classList.remove("no-scroll");
486
- document.body.classList.remove("modal-open");
487
- document.getElementsByTagName("html")[0].classList.remove("modal-open");
488
- },
489
-
490
- getUserPhoneNumber(){
491
- if(this.currentUser.contact != null && this.currentUser.contact.cellphone){
492
- this.userPhoneNumber = this.currentUser.contact.cellphone;
493
- }else{
494
- this.userPhoneNumber = null;
495
- }
496
- },
497
- jobsLeft() {
498
- if(this.details.total == null || this.jobs == null) { return 0 }
499
- return this.details.total - this.jobs.length;
500
- },
501
- async applyToJob(applied) {
502
- if(this.currentUser == null) {
503
- swal.fire({
504
- title: `Login necessário`,
505
- html: `É necessário ter uma conta e estar credenciado para realizar essa ação.`,
506
- buttonsStyling: false,
507
- confirmButtonText: 'Ir para login',
508
- confirmButtonClass: 'btn btn-primary btn-fill',
509
- showCancelButton: true,
510
- cancelButtonText: 'Cancelar',
511
- cancelButtonClass: 'btn btn-outline-default btn-fill',
512
- reverseButtons: true
513
- }).then((result) => {
514
- if(result.value) {
515
- let rollback = this.$route.fullPath;
516
-
517
- this.$router.push('/entrar?rollback=' + rollback);
518
- }
519
- });
520
- } else if(this.currentUser.profile_completion >= 60) {
521
-
522
- this.getUserPhoneNumber();
523
-
524
- if (this.userPhoneNumber == null && applied == true){
525
- this.openModal('phone');
526
- return;
527
- }
528
-
529
- if (this.currentUser.profile_pendencies.includes('Endereço') && applied == true) {
530
- this.openModal('address');
531
- return;
532
- }
533
-
534
- let obj = {
535
- data: {
536
- job_id: this.details.job_id,
537
- user_id: this.currentUser.user_id
538
- }
539
- }
540
-
541
- let {data} = await this.$axios.post(process.env.routes.api.user.applyToJob, obj, {
542
- headers: {
543
- Authorization: `Bearer ${this.$store.state.localStorage.token}`
544
- }
545
- });
546
-
547
- this.details.applied = applied;
548
- this.details.can_unsubscribe = true;
549
- let index = this.jobs.findIndex(job => job.job_id === this.details.job_id);
550
- if(index != -1) { //equal -1 job_id is not found.
551
- this.jobs[index].subscription.applied = applied
552
- }
553
-
554
- swal.fire({
555
- title: `${applied ? "Inscrição realizada com sucesso" : "Você saiu dessa vaga"}`,
556
- buttonsStyling: false,
557
- confirmButtonClass: 'btn btn-primary btn-fill'
558
- });
559
- } else if(this.details.applied){
560
- let obj = {
561
- data:{
562
- job_id: this.details.job_id,
563
- user_id: this.currentUser.user_id
564
- }
565
- }
566
-
567
- let {data} = await this.$axios.post(process.env.routes.api.user.applyToJob, obj, {
568
- headers: {
569
- Authorization: `Bearer ${this.$store.state.localStorage.token}`
570
- }
571
- });
572
-
573
- swal.fire({
574
- title: {"Você saiu dessa vaga": !this.details.applied },
575
- buttonsStyling: false,
576
- confirmButtonClass: 'btn btn-primary btn-fill'
577
- });
578
-
579
- this.details.applied = !this.details.applied;
580
- let index = this.jobs.findIndex(job => job.job_id === this.details.job_id);
581
- if(index != -1) { //equal -1 job_id is not found.
582
- this.jobs[index].subscription.applied = this.details.applied;
583
- }
584
-
585
- } else {
586
- swal.fire({
587
- title: `Perfil Incompleto`,
588
- html: `Alguma das informações que faltam em seu perfil: ${this.currentUser.profile_pendencies.join(', ')}`,
589
- buttonsStyling: false,
590
- confirmButtonClass: 'btn btn-primary btn-fill',
591
- showCancelButton: true,
592
- cancelButtonText: 'Cancelar',
593
- cancelButtonClass: 'btn btn-outline-default btn-fill',
594
- reverseButtons: true
595
- });
596
- }
597
- },
598
- onClickShareJob(idJob) {
599
- this.jobLinkShare = process.env.baseAppUrl + "/vagas/" + idJob;
600
- this.modals.modal0 = true;
601
- },
602
- async search(page, reset) {
603
- this.searching = true;
604
- let search = {
605
- city: this.city == null || this.city.trim() == '' ? null : this.city,
606
- date_posted: this.$route.query.date
607
- ? parseInt(this.$route.query.date)
608
- : 90,
609
- query: this.$route.query.term ? this.$route.query.term : "",
610
- handicapped: this.$route.query.handicapped
611
- ? this.$route.query.handicapped == "true"
612
- ? true
613
- : false
614
- : "",
615
- hiring_type: this.$route.query.type ? this.$route.query.type : null
616
- };
617
-
618
- let response = await this.$axios.post(`${process.env.baseApiUrl}/nb/jobs/search?page=${page ? page : 1}${this.$store.state.localStorage.currentUser ? "&id=" + this.$store.state.localStorage.currentUser.user_id :''}`, search, {
619
- headers: {
620
- 'Content-Type': 'application/json',
621
- 'Authorization': `Bearer ${this.$store.state.localStorage.token}`
622
- },
623
- httpsAgent: new https.Agent({
624
- rejectUnauthorized: false
625
- })
626
- });
627
- this.details.total = response.data.data.total;
628
- this.details.last_page = response.data.data.last_page;
629
- this.jobs = response.data.data.data;
630
-
631
- var text = "";
632
- if (this.details.total > 0) {
633
- this.getDetails(this.jobs[0].job_id);
634
- if (this.$route.query.term) {
635
- text = `Página 1 de ${this.details.total} vagas de ${this.$route.query.term}`;
636
- } else if (this.details.total > 15) {
637
- text = `Página 1 de ${this.details.total - 5} vagas`;
638
- } else {
639
- text = "Resultados para sua busca";
640
- }
641
- this.searchEmpty = false;
642
- } else {
643
- text = "Não há resultados para sua busca";
644
- this.searchEmpty = true;
645
-
646
-
647
- //this.$router.push({ path: "/", query: { term: this.$route.query.term, city: this.$route.query.city ? this.$route.query.city : await this.$location(), type: this.$route.query.type, date: this.$route.query.date, page: 1, handicapped: this.$route.query.handicapped, error: "404_job"}, });
648
- }
649
- this.searchtext = text;
650
-
651
- this.currentresult = this.jobs.length;
652
- this.pagination.last = response.data.data.last_page;
653
- this.searching = false;
654
- },
655
- async featureDetails(id, index){
656
- await this.getDetails(id, index);
657
- this.goToDetails(id);
658
- },
659
-
660
- goToDetails(id){
661
- if(this.isMobileOnlyWatch){
662
- this.$router.push('/vagas/' + id);
663
- }
664
- },
665
-
666
- async getDetails(id, index = 0) {
667
- let jobs = this.jobs;
668
- let job = await jobs.filter(function(e) {
669
- return e.job_id == id;
670
- });
671
-
672
- this.details.job_id = id;
673
- this.details.index = index;
674
- this.details.img = job[0].company_logo;
675
- this.details.title = job[0].job_title;
676
- this.details.description = job[0].job_description;
677
- this.details.location = job[0].city_name;
678
- this.details.company = job[0].company_name;
679
- this.details.salary = job[0].salary;
680
- this.details.benefits = job[0].job_benefits ? job[0].job_benefits.length > 0 ? job[0].job_benefits : null : null;
681
- this.details.hiring = job[0].type_hiring;
682
- this.details.private = job[0].private;
683
- this.details.link = process.env.baseAppUrl + '/vagas/' + id;
684
- this.details.applied = job[0].subscription == null ? false : job[0].subscription.applied;
685
- this.details.can_unsubscribe = job[0].subscription == null ? false : job[0].subscription.can_unsubscribe;
686
- this.details.user_bookmarked = job[0].subscription == null ? false : job[0].subscription.user_bookmarked;
687
- this.details.handicapped = job[0].handicapped;
688
- this.details.company_slug = job[0].company_slug;
689
- },
690
-
691
- searchParams(page = 1) {
692
- window.location.href= `/busca?term=${this.term}&city=${this.city}&type=${this.selects.hiringType}&date=${this.selects.date}&handicapped=${this.selects.handicapped}&page=${page}`;
693
- },
694
- toggleFilterMobile: function() {
695
- let el = document.querySelector('.interface-spa.interface-spa--mobile');
696
- el.classList.toggle('opened');
697
- },
698
- }
699
- };
700
- </script>
701
- <style lang="scss">
702
- @import "~bootstrap/scss/functions.scss";
703
- @import "~bootstrap/scss/mixins.scss";
704
- @import "assets/sass/burh-ds/variables.scss";
705
- @import "assets/sass/burh-ds/variables/_colors.scss";
706
-
707
- div.pac-container {
708
- z-index: 10000;
709
- }
710
-
711
- .interface-spa__header {
712
- flex-wrap: wrap;
713
- padding-top: 0.5rem;
714
- padding-bottom: 0.5rem;
715
-
716
- .h1 {
717
- font-size: 1rem;
718
- font-weight: 600;
719
- margin-bottom: 0;
720
- }
721
- p {
722
- font-size: 0.85rem;
723
- white-space: nowrap;
724
- width: 100%;
725
- margin-bottom: 0;
726
- overflow: hidden;
727
- text-overflow: ellipsis;
728
- }
729
- }
730
- .search__list {
731
- overflow-x: hidden;
732
- }
733
- .interface-spa__content {
734
- .search__header {
735
- display: flex;
736
- align-items: center;
737
- flex-wrap: wrap;
738
- align-content: center;
739
- padding: 0 3rem;
740
-
741
- .h2 {
742
- width: 100%;
743
- font-size: 1rem;
744
- font-weight: 600;
745
- margin-bottom: 0;
746
- }
747
- p {
748
- font-size: 0.85rem;
749
- white-space: nowrap;
750
- width: 90%;
751
- margin-bottom: 0;
752
- overflow: hidden;
753
- text-overflow: ellipsis;
754
- }
755
- }
756
- }
757
- .search-pagination {
758
- display: flex;
759
- justify-content: center;
760
- }
761
- .interface-spa__filter {
762
- &__fields {
763
- display: flex;
764
- }
765
- }
766
-
767
- .interface-spa--mobile {
768
- .interface-spa__header {
769
- padding: 0;
770
- }
771
- .interface-spa__filter {
772
- &__header {
773
- display: none;
774
- }
775
- &__fields {
776
- display: none;
777
- width: 100%;
778
- }
779
- > .d-block {
780
- height: calc(80px / 1.4) !important;
781
- line-height: calc(80px / 1.4) !important;
782
- text-overflow: ellipsis;
783
- overflow: hidden;
784
- white-space: nowrap;
785
- }
786
- }
787
- &.opened {
788
-
789
- .interface-spa__header {
790
- top: 0;
791
- height: 100vh;
792
- z-index: 10000;
793
- padding: 0;
794
- }
795
- .interface-spa__filter {
796
- align-content: flex-start;
797
-
798
- &__header {
799
- display: flex;
800
- width: 100%;
801
- font-size: 1rem !important;
802
- height: 70px;
803
- margin-bottom: 0 !important;
804
- justify-content: flex-start !important;
805
- align-items: center;
806
- padding: 1rem !important;
807
- background-color: #f8f9fe;
808
- color: #32325d;
809
-
810
- span {
811
- display: block;
812
- width: 100%;
813
- text-align: center;
814
- }
815
- }
816
- .form-group {
817
- margin-bottom: 1rem;
818
- }
819
- &__fields {
820
- display: block;
821
- height: auto;
822
- overflow: auto;
823
- padding: 2rem;
824
- }
825
- > .d-block {
826
- display: none !important;
827
- }
828
- }
829
- }
830
- }
831
- .interface-spa__aside {
832
- .pagination {
833
- justify-content: center;
834
-
835
- .page-item {
836
- &:first-child,
837
- &:last-child {
838
- &,
839
- .page-link {
840
- border: 0;
841
- color: $primary;
842
- width: auto;
843
-
844
- &:hover {
845
- background: none;
846
- text-decoration: underline;
847
- }
848
- }
849
- &.disabled {
850
- opacity: 0;
851
- }
852
- }
853
- }
854
-
855
- }
856
- }
857
- .z-master {
858
- z-index: 20000 !important;
859
- }
860
- </style>
1
+ <template>
2
+ <interface-spa
3
+ :class="isMobileOnlyWatch ? 'interface-spa--mobile' : ''"
4
+ classesHeader="jobs-aside--header"
5
+ classesAside="jobs-aside"
6
+ class="printable"
7
+ asideSize="big"
8
+ >
9
+ <burh-modals
10
+ slot="interface-header"
11
+ :render="['phone', 'address']"
12
+ :active="activeModal"
13
+ v-on:modal-close="clearActive($event)"
14
+ v-on:updatedOtherInformations="setUpdatedOtherInformations($event)"
15
+ :title="'Aviso'"
16
+ :description="`Para se candidatar é necessário informar seu ${activeModal == 'phone' ? 'telefone': 'endereço'}`"
17
+ >
18
+ </burh-modals>
19
+
20
+ <div class="interface-spa__filter" slot="interface-header">
21
+
22
+ <span class="d-block bg-lighter px-4 w-100 h-100" v-if="isMobileOnlyWatch" v-on:click="toggleFilterMobile()">
23
+ <!-- <font-awesome-icon :icon="['fas', 'chevron-down']" /> Sorocaba - CLT, PJ Sorocaba - CLT, PJ Sorocaba - CLT, PJ -->
24
+ <font-awesome-icon :icon="['fas', 'filter']" class="mr-2" /> <span>Filtros Avançados</span>
25
+ </span>
26
+ <h4 class="interface-spa__filter__header" v-on:click="toggleFilterMobile()">
27
+ <font-awesome-icon :icon="['fas', 'chevron-left']" class="mr-2" /> <span>Filtros avançados</span>
28
+ </h4>
29
+ <div class="interface-spa__filter__fields">
30
+ <auto-complete :valueDefault="city" :preventDefaultValue="true" v-on:change="onAutoCompleteChange($event)" txtPlaceholder="Cidade" :request="true" :doRequest="funcRequest" :listWords="['itu', 'itupeva', 'sorocaba', 'votorantim', 'salto', 'salto de pirapora']" class="mr-2"/>
31
+
32
+ <base-input class="mr-2">
33
+ <el-select
34
+ v-model="selects.hiringType"
35
+ filterable
36
+ placeholder="Tipo de contratação"
37
+ popper-class="z-master"
38
+ @change="searchParams()"
39
+ >
40
+ <el-option
41
+ v-for="option in hiringType"
42
+ :key="option.label"
43
+ :label="option.label"
44
+ :value="option.label"
45
+ ></el-option>
46
+ </el-select>
47
+ </base-input>
48
+ <base-input class="mr-2">
49
+ <el-select
50
+ v-model="selects.date"
51
+ filterable
52
+ placeholder="Tempo de Abertura"
53
+ popper-class="z-master"
54
+ @change="searchParams()"
55
+ >
56
+ <el-option
57
+ v-for="option in date"
58
+ :key="option.label"
59
+ :label="option.label"
60
+ :value="option.value"
61
+ ></el-option>
62
+ </el-select>
63
+ </base-input>
64
+ <base-input class="mr-2">
65
+ <el-select
66
+ v-model="selects.handicapped"
67
+ filterable
68
+ placeholder="PCD"
69
+ popper-class="z-master"
70
+ @change="searchParams()"
71
+ >
72
+ <el-option
73
+ v-for="option in handicapped"
74
+ :key="option.label"
75
+ :label="option.label"
76
+ :value="option.value"
77
+ ></el-option>
78
+ </el-select>
79
+ </base-input>
80
+
81
+ <button class="btn btn-primary btn-sm btn-block mt-4" v-if="isMobileOnlyWatch" v-on:click="toggleFilterMobile()">Aplicar filtro</button>
82
+ </div>
83
+ </div>
84
+
85
+ <div v-if="!isMobileOnlyWatch" slot="aside-header" class="d-flex">
86
+ <template v-if="details != null && details.total != null">
87
+ Página {{currentPage}} de {{details.total}} vagas.
88
+ <br />
89
+ </template>
90
+ </div>
91
+
92
+ <ul class="list-unstyled search__list" slot="aside-body">
93
+ <template v-if="!searchEmpty">
94
+ <li class="search__list__item" v-if="(jobs == null || jobs.length <= 0)">
95
+ <div class="card card--job cursor-pointer skeleton">
96
+ <div class="card-header">
97
+ <span class="avatar rounded-circle">
98
+ </span>
99
+ <ul class="card__controls list-inline">
100
+ <li class="list-inline-item"></li>
101
+ <li class="list-inline-item"></li>
102
+ </ul>
103
+ </div>
104
+ <div class="card-body">
105
+ <span class="card__company"></span>
106
+ <h5 class="card-title"></h5>
107
+ <span class="card__local"></span>
108
+ </div>
109
+ <div class="card-footer">
110
+ <p class="card__published"></p>
111
+ </div>
112
+ </div>
113
+ </li>
114
+ </template>
115
+ <template v-if="!searchEmpty">
116
+ <li class="search__list__item" v-for="(job, index) in jobs" :key="job.job_id" :class="{'search__list__item--opened': details != null && job.job_id == details.job_id}">
117
+ <opportunityCard
118
+ v-on:share-click="onClickShareJob"
119
+ v-on:save-click="onClickSaveJob(job)"
120
+ v-on:card-click="featureDetails(job.job_id, index)"
121
+ v-on:avatar-click="featureDetails(job.job_id, index)"
122
+ v-on:company-name-click="featureDetails(job.job_id, index)"
123
+ :fullHeart="job.subscription != null && job.subscription.user_bookmarked"
124
+ :link="job.job_id"
125
+ :img="!job.private ? job.company_logo : '/img/content/logoempresaconfidencial.png'"
126
+ :title="job.job_title"
127
+ :date="job.created_at"
128
+ :href="''"
129
+ :company="!job.private ? job.company_name : 'Empresa Confidencial'"
130
+ :local="job.city_name"
131
+ :pcd="job.handicapped"
132
+ ></opportunityCard>
133
+ </li>
134
+ <li class="p-4">
135
+ <v-pagination
136
+ v-if="details.last_page != null"
137
+ v-model="currentPage"
138
+ :classes="bootstrapPaginationClasses"
139
+ :labels="paginationAnchorTexts"
140
+ :page-count="details.last_page"
141
+ ></v-pagination>
142
+ </li>
143
+ </template>
144
+ <template v-if="searchEmpty && isMobileOnlyWatch">
145
+ <li class="search__list__item">
146
+ <div class="p-4">
147
+ <h2 class="display-3 mt-5">Sem Resultados</h2>
148
+ <p>Para conseguir mais resultados, tente ajustar alterando a sua busca ou verifique se a Burh já esta disponível em sua cidade.</p>
149
+ <button class="btn btn-sm btn-outline-primary" @click="$router.push('/busca')">Ver sugestões</button>
150
+ </div>
151
+ </li>
152
+ </template>
153
+ <share-modal :show="modals" :url="jobLinkShare" />
154
+ </ul>
155
+
156
+
157
+ <!-- <div slot="aside-footer" class="d-none d-sm-block">
158
+ <template v-if="jobs != null && jobs.length > 0">
159
+ <font-awesome-icon :icon="['far', 'eye']" />
160
+ <small>
161
+ Você ainda tem
162
+ <b>{{jobsLeft()}}</b> vagas para visualizar
163
+ </small>
164
+ </template>
165
+ </div> -->
166
+
167
+ <!-- <job-detail :title="this.details.title" :img="this.details.img" :location="this.details.location" :company="this.details.company" :description="this.details.description"></job-detail> -->
168
+ <job-detail
169
+ class="skeleton"
170
+ :link="''"
171
+ v-if="jobs == null || jobs.length <= 0"
172
+ slot="content"
173
+ :title="''"
174
+ :hiring="''"
175
+ :img="''"
176
+ :location="''"
177
+ :company="''"
178
+ :description="''"
179
+ :benefits="[]"
180
+ :company_private="true"
181
+ :searchEmpty="searchEmpty"
182
+ :skeleton="true"
183
+ ></job-detail>
184
+
185
+ <job-detail
186
+ v-on:share-click="onClickShareJob"
187
+ v-on:save-click="onClickSaveJobDetail(details)"
188
+ :link="this.details.job_id"
189
+ v-if="this.details.total"
190
+ slot="content"
191
+ :fullHeart="this.details.user_bookmarked"
192
+ :title="this.details.title"
193
+ :hiring="this.details.hiring"
194
+ :img="this.details.img"
195
+ :location="this.details.location"
196
+ :company="this.details.company"
197
+ :description="this.details.description"
198
+ :benefits="this.details.benefits"
199
+ :company_private="this.details.private"
200
+ :company_slug="this.details.company_slug"
201
+ :applied="this.details.applied"
202
+ :canUnSubscribe="this.details.can_unsubscribe"
203
+ :handicapped="this.details.handicapped"
204
+ :salary="this.details.salary"
205
+ :searchEmpty="searchEmpty"
206
+ v-on:apply-to-job="applyToJob($event)"
207
+ >
208
+ <div class="row printable__qrcode" slot="qrcode">
209
+ <div class="col mb-4">
210
+ <div class="qr-code">
211
+ <qrcode
212
+ :value="baseUrl +'/'+ details.link"
213
+ :options="{ width: 156, height: 156 }"
214
+ class="border"
215
+ ></qrcode>
216
+ </div>
217
+ </div>
218
+ </div>
219
+ </job-detail>
220
+
221
+ <div class="job-detail__footer d-flex w-100 justify-content-end" slot="footer-content">
222
+ <div class="box-payment mr-md-4">
223
+ <span class="text-muted d-block">Salário</span>
224
+ <bpInterfaceSpa class="lead">R$ {{this.details.salary}}</bpInterfaceSpa>
225
+ </div>
226
+ <button class="btn btn-primary" @click="applyToJob()">Candidatar-se</button>
227
+ </div>
228
+ </interface-spa>
229
+ </template>
230
+ <script>
231
+ import { isMobile, isMobileOnly } from "mobile-device-detect";
232
+ import { Select, Option } from "element-ui";
233
+ import jobDetail from "~/components/burh-ds/Jobs/JobDetail.vue";
234
+ import InterfaceSpa from "~/components/burh-ds/InterfaceSpa/InterfaceSpa.vue";
235
+ import opportunityCard from "~/components/burh-ds/Cards/OpportunityCard.vue";
236
+ import ShareModal from "~/components/burh-ds/Modals/ShareModal.vue";
237
+ import AutoComplete from "~/components/burh-ds/Input/AutoComplete.vue";
238
+ import https from "https";
239
+ import swal from 'sweetalert2';
240
+ import BurhModals from "@/pages/burh/modals/modals";
241
+ import { getCookie } from '~/util/cookie';
242
+ import {userSaveJob} from '~/services/user'
243
+
244
+
245
+ export default {
246
+ name: "search-slug",
247
+ components: {
248
+ InterfaceSpa,
249
+ opportunityCard,
250
+ jobDetail,
251
+ [Select.name]: Select,
252
+ [Option.name]: Option,
253
+ ShareModal,
254
+ BurhModals,
255
+ AutoComplete
256
+ },
257
+ props: ['searchData'],
258
+ watch:{
259
+ '$store.state.localStorage.currentUser'(newValue){
260
+ this.currentUser = newValue;
261
+ },
262
+ $route (to, from){
263
+ this.term = to.query.term;
264
+ if (from.query.term != to.query.term) {
265
+ this.search(1, true);
266
+ }
267
+ },
268
+ currentPage(newValue) {
269
+ this.searchParams(newValue);
270
+ }
271
+ },
272
+
273
+ async mounted() {
274
+ this.currentUser = this.$store.state.localStorage.currentUser;
275
+ this.isMobileOnlyWatch = isMobileOnly;
276
+
277
+ if(this.city == null) {
278
+ this.city = await this.$location();
279
+ }
280
+
281
+ this.onLoadSearch();
282
+ },
283
+
284
+ updated() {
285
+ this.selects.handicapped = this.$route.query.handicapped
286
+ ? this.$route.query.handicapped == "true"
287
+ ? "Sim"
288
+ : "Não"
289
+ : "";
290
+ this.selects.hiringType = this.$route.query.type
291
+ ? this.$route.query.type
292
+ : "";
293
+ // this.autoComplete();
294
+ },
295
+
296
+ data() {
297
+ return {
298
+ city: null,
299
+ currentUser: null,
300
+ funcRequest: {"request": this.doSearchCities},
301
+ isMobileOnlyWatch: false,
302
+ searching: false,
303
+ bootstrapPaginationClasses: {
304
+ ul: 'pagination pagination-sm',
305
+ li: 'page-item',
306
+ liActive: 'active',
307
+ liDisable: 'disabled',
308
+ button: 'page-link'
309
+ },
310
+ paginationAnchorTexts: {
311
+ first: false,
312
+ prev: 'Anterior',
313
+ next: 'Próximo',
314
+ last: false,
315
+ },
316
+ pagination: {
317
+ default: 1,
318
+ last: 1
319
+ },
320
+ baseUrl: process.env.baseAppUrl,
321
+ userPhoneNumber: null,
322
+ activeModal: '',
323
+ jobLinkShare: "",
324
+ modals: {
325
+ modal0: false
326
+ },
327
+ autocomplete: null,
328
+ jobs: [],
329
+ currentresult: 15,
330
+ details: {
331
+ img: "",
332
+ title: "",
333
+ description: "",
334
+ location: "",
335
+ company: "",
336
+ salary: null,
337
+ total: 0,
338
+ hiring: "",
339
+ private: false,
340
+ link: "",
341
+ job_id: null,
342
+ company_slug: null,
343
+ applied: null,
344
+ can_unsubscribe: null,
345
+ user_bookmarked: null,
346
+ index: null,
347
+ },
348
+ loading: false,
349
+ address: "",
350
+ handicapped: [
351
+ {
352
+ label: "Sim",
353
+ value: true
354
+ },
355
+ {
356
+ label: "Não",
357
+ value: false
358
+ }
359
+ ],
360
+ date: [
361
+ {
362
+ label: "90 dias",
363
+ value: 90
364
+ },
365
+ {
366
+ label: "60 dias",
367
+ value: 60
368
+ },
369
+ {
370
+ label: "30 dias",
371
+ value: 30
372
+ },
373
+ {
374
+ label: "15 dias",
375
+ value: 15
376
+ },
377
+ {
378
+ label: "7 dias",
379
+ value: 7
380
+ },
381
+ {
382
+ label: "Hoje",
383
+ value: 1
384
+ }
385
+ ],
386
+ hiringType: [
387
+ {
388
+ label: "Todos",
389
+ value: 1
390
+ },
391
+ {
392
+ label: "CLT",
393
+ value: 2
394
+ },
395
+ {
396
+ label: "CNPJ",
397
+ value: 3
398
+ },
399
+ {
400
+ label: "Estágio",
401
+ value: 4
402
+ },
403
+ {
404
+ label: "RPA",
405
+ value: 5
406
+ },
407
+ {
408
+ label: "Temporário",
409
+ value: 6
410
+ }
411
+ ],
412
+ searchEmpty: false,
413
+ selects: this.searchData.selects,
414
+ term: this.searchData.term,
415
+ city: this.searchData.city,
416
+ currentPage: this.searchData.currentPage
417
+ };
418
+ },
419
+
420
+ methods: {
421
+ async onClickSaveJob(item){
422
+ if ( this.currentUser == null ) {
423
+ swal.fire({
424
+ title: `Aviso`,
425
+ html: `Você precisa estar logado para realizar esta função.`,
426
+ buttonsStyling: false,
427
+ confirmButtonClass: 'btn btn-primary btn-fill',
428
+ });
429
+ return;
430
+ }
431
+
432
+ if(await userSaveJob(item.job_id, item.subscription.user_bookmarked)) {
433
+ item.subscription.user_bookmarked = !item.subscription.user_bookmarked;
434
+ if (item.job_id == this.details.job_id) {
435
+ this.details.user_bookmarked = item.subscription.user_bookmarked ;
436
+ }
437
+ }
438
+ },
439
+
440
+ async onClickSaveJobDetail(item){
441
+ if ( this.currentUser == null ) {
442
+ swal.fire({
443
+ title: `Aviso`,
444
+ html: `Você precisa estar logado para realizar esta função.`,
445
+ buttonsStyling: false,
446
+ confirmButtonClass: 'btn btn-primary btn-fill',
447
+ });
448
+ return;
449
+ }
450
+
451
+ if(await userSaveJob(item.job_id, item.user_bookmarked)) {
452
+ item.user_bookmarked = !item.user_bookmarked;
453
+ this.jobs[item.index].subscription.user_bookmarked = item.user_bookmarked;
454
+ }
455
+ },
456
+
457
+ onAutoCompleteChange(e) {
458
+ if(e == this.$route.query.city) {
459
+ return;
460
+ }
461
+ this.city = e.split(`,`)[0].replace('value:','');
462
+ this.searchParams();
463
+ },
464
+
465
+ async doSearchCities(key = null){
466
+ let {data} = await this.$axios.get(process.env.routes.api.searchCities.replace(':hash',key));
467
+ let items = [...new Set(data.data.cities)]; //remove cities duplicated
468
+ return items;
469
+ },
470
+
471
+ onLoadSearch() {
472
+ this.search(1, false);
473
+ },
474
+ openModal(modal, data = null, index = null) {
475
+ //this.index = index;
476
+ this.activeModal = modal;
477
+ //this.userData = data;
478
+ document.body.classList.add("modal-open");
479
+ document.body.classList.add("no-scroll");
480
+ },
481
+
482
+ clearActive(e) {
483
+ this.activeModal = "";
484
+ //this.userData = null;
485
+ document.body.classList.remove("no-scroll");
486
+ document.body.classList.remove("modal-open");
487
+ document.getElementsByTagName("html")[0].classList.remove("modal-open");
488
+ },
489
+
490
+ getUserPhoneNumber(){
491
+ if(this.currentUser.contact != null && this.currentUser.contact.cellphone){
492
+ this.userPhoneNumber = this.currentUser.contact.cellphone;
493
+ }else{
494
+ this.userPhoneNumber = null;
495
+ }
496
+ },
497
+ jobsLeft() {
498
+ if(this.details.total == null || this.jobs == null) { return 0 }
499
+ return this.details.total - this.jobs.length;
500
+ },
501
+ async applyToJob(applied) {
502
+ if(this.currentUser == null) {
503
+ swal.fire({
504
+ title: `Login necessário`,
505
+ html: `É necessário ter uma conta e estar credenciado para realizar essa ação.`,
506
+ buttonsStyling: false,
507
+ confirmButtonText: 'Ir para login',
508
+ confirmButtonClass: 'btn btn-primary btn-fill',
509
+ showCancelButton: true,
510
+ cancelButtonText: 'Cancelar',
511
+ cancelButtonClass: 'btn btn-outline-default btn-fill',
512
+ reverseButtons: true
513
+ }).then((result) => {
514
+ if(result.value) {
515
+ let rollback = this.$route.fullPath;
516
+
517
+ this.$router.push('/entrar?rollback=' + rollback);
518
+ }
519
+ });
520
+ } else if(this.currentUser.profile_completion >= 60) {
521
+
522
+ this.getUserPhoneNumber();
523
+
524
+ if (this.userPhoneNumber == null && applied == true){
525
+ this.openModal('phone');
526
+ return;
527
+ }
528
+
529
+ if (this.currentUser.profile_pendencies.includes('Endereço') && applied == true) {
530
+ this.openModal('address');
531
+ return;
532
+ }
533
+
534
+ let obj = {
535
+ data: {
536
+ job_id: this.details.job_id,
537
+ user_id: this.currentUser.user_id
538
+ }
539
+ }
540
+
541
+ let {data} = await this.$axios.post(process.env.routes.api.user.applyToJob, obj, {
542
+ headers: {
543
+ Authorization: `Bearer ${this.$store.state.localStorage.token}`
544
+ }
545
+ });
546
+
547
+ this.details.applied = applied;
548
+ this.details.can_unsubscribe = true;
549
+ let index = this.jobs.findIndex(job => job.job_id === this.details.job_id);
550
+ if(index != -1) { //equal -1 job_id is not found.
551
+ this.jobs[index].subscription.applied = applied
552
+ }
553
+
554
+ swal.fire({
555
+ title: `${applied ? "Inscrição realizada com sucesso" : "Você saiu dessa vaga"}`,
556
+ buttonsStyling: false,
557
+ confirmButtonClass: 'btn btn-primary btn-fill'
558
+ });
559
+ } else if(this.details.applied){
560
+ let obj = {
561
+ data:{
562
+ job_id: this.details.job_id,
563
+ user_id: this.currentUser.user_id
564
+ }
565
+ }
566
+
567
+ let {data} = await this.$axios.post(process.env.routes.api.user.applyToJob, obj, {
568
+ headers: {
569
+ Authorization: `Bearer ${this.$store.state.localStorage.token}`
570
+ }
571
+ });
572
+
573
+ swal.fire({
574
+ title: {"Você saiu dessa vaga": !this.details.applied },
575
+ buttonsStyling: false,
576
+ confirmButtonClass: 'btn btn-primary btn-fill'
577
+ });
578
+
579
+ this.details.applied = !this.details.applied;
580
+ let index = this.jobs.findIndex(job => job.job_id === this.details.job_id);
581
+ if(index != -1) { //equal -1 job_id is not found.
582
+ this.jobs[index].subscription.applied = this.details.applied;
583
+ }
584
+
585
+ } else {
586
+ swal.fire({
587
+ title: `Perfil Incompleto`,
588
+ html: `Alguma das informações que faltam em seu perfil: ${this.currentUser.profile_pendencies.join(', ')}`,
589
+ buttonsStyling: false,
590
+ confirmButtonClass: 'btn btn-primary btn-fill',
591
+ showCancelButton: true,
592
+ cancelButtonText: 'Cancelar',
593
+ cancelButtonClass: 'btn btn-outline-default btn-fill',
594
+ reverseButtons: true
595
+ });
596
+ }
597
+ },
598
+ onClickShareJob(idJob) {
599
+ this.jobLinkShare = process.env.baseAppUrl + "/vagas/" + idJob;
600
+ this.modals.modal0 = true;
601
+ },
602
+ async search(page, reset) {
603
+ this.searching = true;
604
+ let search = {
605
+ city: this.city == null || this.city.trim() == '' ? null : this.city,
606
+ date_posted: this.$route.query.date
607
+ ? parseInt(this.$route.query.date)
608
+ : 90,
609
+ query: this.$route.query.term ? this.$route.query.term : "",
610
+ handicapped: this.$route.query.handicapped
611
+ ? this.$route.query.handicapped == "true"
612
+ ? true
613
+ : false
614
+ : "",
615
+ hiring_type: this.$route.query.type ? this.$route.query.type : null
616
+ };
617
+
618
+ let response = await this.$axios.post(`${process.env.baseApiUrl}/nb/jobs/search?page=${page ? page : 1}${this.$store.state.localStorage.currentUser ? "&id=" + this.$store.state.localStorage.currentUser.user_id :''}`, search, {
619
+ headers: {
620
+ 'Content-Type': 'application/json',
621
+ 'Authorization': `Bearer ${this.$store.state.localStorage.token}`
622
+ },
623
+ httpsAgent: new https.Agent({
624
+ rejectUnauthorized: false
625
+ })
626
+ });
627
+ this.details.total = response.data.data.total;
628
+ this.details.last_page = response.data.data.last_page;
629
+ this.jobs = response.data.data.data;
630
+
631
+ var text = "";
632
+ if (this.details.total > 0) {
633
+ this.getDetails(this.jobs[0].job_id);
634
+ if (this.$route.query.term) {
635
+ text = `Página 1 de ${this.details.total} vagas de ${this.$route.query.term}`;
636
+ } else if (this.details.total > 15) {
637
+ text = `Página 1 de ${this.details.total - 5} vagas`;
638
+ } else {
639
+ text = "Resultados para sua busca";
640
+ }
641
+ this.searchEmpty = false;
642
+ } else {
643
+ text = "Não há resultados para sua busca";
644
+ this.searchEmpty = true;
645
+
646
+
647
+ //this.$router.push({ path: "/", query: { term: this.$route.query.term, city: this.$route.query.city ? this.$route.query.city : await this.$location(), type: this.$route.query.type, date: this.$route.query.date, page: 1, handicapped: this.$route.query.handicapped, error: "404_job"}, });
648
+ }
649
+ this.searchtext = text;
650
+
651
+ this.currentresult = this.jobs.length;
652
+ this.pagination.last = response.data.data.last_page;
653
+ this.searching = false;
654
+ },
655
+ async featureDetails(id, index){
656
+ await this.getDetails(id, index);
657
+ this.goToDetails(id);
658
+ },
659
+
660
+ goToDetails(id){
661
+ if(this.isMobileOnlyWatch){
662
+ this.$router.push('/vagas/' + id);
663
+ }
664
+ },
665
+
666
+ async getDetails(id, index = 0) {
667
+ let jobs = this.jobs;
668
+ let job = await jobs.filter(function(e) {
669
+ return e.job_id == id;
670
+ });
671
+
672
+ this.details.job_id = id;
673
+ this.details.index = index;
674
+ this.details.img = job[0].company_logo;
675
+ this.details.title = job[0].job_title;
676
+ this.details.description = job[0].job_description;
677
+ this.details.location = job[0].city_name;
678
+ this.details.company = job[0].company_name;
679
+ this.details.salary = job[0].salary;
680
+ this.details.benefits = job[0].job_benefits ? job[0].job_benefits.length > 0 ? job[0].job_benefits : null : null;
681
+ this.details.hiring = job[0].type_hiring;
682
+ this.details.private = job[0].private;
683
+ this.details.link = process.env.baseAppUrl + '/vagas/' + id;
684
+ this.details.applied = job[0].subscription == null ? false : job[0].subscription.applied;
685
+ this.details.can_unsubscribe = job[0].subscription == null ? false : job[0].subscription.can_unsubscribe;
686
+ this.details.user_bookmarked = job[0].subscription == null ? false : job[0].subscription.user_bookmarked;
687
+ this.details.handicapped = job[0].handicapped;
688
+ this.details.company_slug = job[0].company_slug;
689
+ },
690
+
691
+ searchParams(page = 1) {
692
+ window.location.href= `/busca?term=${this.term}&city=${this.city}&type=${this.selects.hiringType}&date=${this.selects.date}&handicapped=${this.selects.handicapped}&page=${page}`;
693
+ },
694
+ toggleFilterMobile: function() {
695
+ let el = document.querySelector('.interface-spa.interface-spa--mobile');
696
+ el.classList.toggle('opened');
697
+ },
698
+ }
699
+ };
700
+ </script>
701
+ <style lang="scss">
702
+ @import "~bootstrap/scss/functions.scss";
703
+ @import "~bootstrap/scss/mixins.scss";
704
+ @import "assets/sass/burh-ds/variables.scss";
705
+ @import "assets/sass/burh-ds/variables/_colors.scss";
706
+
707
+ div.pac-container {
708
+ z-index: 10000;
709
+ }
710
+
711
+ .interface-spa__header {
712
+ flex-wrap: wrap;
713
+ padding-top: 0.5rem;
714
+ padding-bottom: 0.5rem;
715
+
716
+ .h1 {
717
+ font-size: 1rem;
718
+ font-weight: 600;
719
+ margin-bottom: 0;
720
+ }
721
+ p {
722
+ font-size: 0.85rem;
723
+ white-space: nowrap;
724
+ width: 100%;
725
+ margin-bottom: 0;
726
+ overflow: hidden;
727
+ text-overflow: ellipsis;
728
+ }
729
+ }
730
+ .search__list {
731
+ overflow-x: hidden;
732
+ }
733
+ .interface-spa__content {
734
+ .search__header {
735
+ display: flex;
736
+ align-items: center;
737
+ flex-wrap: wrap;
738
+ align-content: center;
739
+ padding: 0 3rem;
740
+
741
+ .h2 {
742
+ width: 100%;
743
+ font-size: 1rem;
744
+ font-weight: 600;
745
+ margin-bottom: 0;
746
+ }
747
+ p {
748
+ font-size: 0.85rem;
749
+ white-space: nowrap;
750
+ width: 90%;
751
+ margin-bottom: 0;
752
+ overflow: hidden;
753
+ text-overflow: ellipsis;
754
+ }
755
+ }
756
+ }
757
+ .search-pagination {
758
+ display: flex;
759
+ justify-content: center;
760
+ }
761
+ .interface-spa__filter {
762
+ &__fields {
763
+ display: flex;
764
+ }
765
+ }
766
+
767
+ .interface-spa--mobile {
768
+ .interface-spa__header {
769
+ padding: 0;
770
+ }
771
+ .interface-spa__filter {
772
+ &__header {
773
+ display: none;
774
+ }
775
+ &__fields {
776
+ display: none;
777
+ width: 100%;
778
+ }
779
+ > .d-block {
780
+ height: calc(80px / 1.4) !important;
781
+ line-height: calc(80px / 1.4) !important;
782
+ text-overflow: ellipsis;
783
+ overflow: hidden;
784
+ white-space: nowrap;
785
+ }
786
+ }
787
+ &.opened {
788
+
789
+ .interface-spa__header {
790
+ top: 0;
791
+ height: 100vh;
792
+ z-index: 10000;
793
+ padding: 0;
794
+ }
795
+ .interface-spa__filter {
796
+ align-content: flex-start;
797
+
798
+ &__header {
799
+ display: flex;
800
+ width: 100%;
801
+ font-size: 1rem !important;
802
+ height: 70px;
803
+ margin-bottom: 0 !important;
804
+ justify-content: flex-start !important;
805
+ align-items: center;
806
+ padding: 1rem !important;
807
+ background-color: #f8f9fe;
808
+ color: #32325d;
809
+
810
+ span {
811
+ display: block;
812
+ width: 100%;
813
+ text-align: center;
814
+ }
815
+ }
816
+ .form-group {
817
+ margin-bottom: 1rem;
818
+ }
819
+ &__fields {
820
+ display: block;
821
+ height: auto;
822
+ overflow: auto;
823
+ padding: 2rem;
824
+ }
825
+ > .d-block {
826
+ display: none !important;
827
+ }
828
+ }
829
+ }
830
+ }
831
+ .interface-spa__aside {
832
+ .pagination {
833
+ justify-content: center;
834
+
835
+ .page-item {
836
+ &:first-child,
837
+ &:last-child {
838
+ &,
839
+ .page-link {
840
+ border: 0;
841
+ color: $primary;
842
+ width: auto;
843
+
844
+ &:hover {
845
+ background: none;
846
+ text-decoration: underline;
847
+ }
848
+ }
849
+ &.disabled {
850
+ opacity: 0;
851
+ }
852
+ }
853
+ }
854
+
855
+ }
856
+ }
857
+ .z-master {
858
+ z-index: 20000 !important;
859
+ }
860
+ </style>