Quellcode durchsuchen

Theme Update

master
30117125 vor 4 Jahren
Ursprung
Commit
89f0f3ff3e
100 geänderte Dateien mit 6963 neuen und 2363 gelöschten Zeilen
  1. 93
    69
      package-lock.json
  2. 3
    0
      package.json
  3. 1520
    0
      public/css/newStyle.css
  4. 1084
    1129
      public/css/style.css
  5. BIN
      public/img/intro-carousel/16.jpg
  6. BIN
      public/img/intro-carousel/18.jpg
  7. BIN
      public/img/intro-carousel/2.jpg
  8. BIN
      public/img/intro-carousel/21.jpg
  9. BIN
      public/img/intro-carousel/23.jpg
  10. BIN
      public/img/intro-carousel/3.jpg
  11. BIN
      public/img/intro-carousel/4.jpg
  12. BIN
      public/img/intro-carousel/6.jpg
  13. BIN
      public/img/intro-carousel/8.jpg
  14. BIN
      public/img/intro-carousel/9.jpg
  15. BIN
      public/img/intro-carousel/Thumbs.db
  16. BIN
      public/img/intro-carousel/_DS_Store
  17. BIN
      public/img/intro-carousel/comm-1.jpg
  18. BIN
      public/img/intro-carousel/comm-2.jpg
  19. BIN
      public/img/intro-carousel/comm-3.jpg
  20. BIN
      public/img/intro-carousel/comm-4.jpg
  21. BIN
      public/img/intro-carousel/comm-5.jpg
  22. BIN
      public/img/intro-carousel/comm-6.jpg
  23. BIN
      public/img/intro-carousel/home-1.jpg
  24. BIN
      public/img/intro-carousel/home-2.jpg
  25. BIN
      public/img/intro-carousel/home-3.jpg
  26. BIN
      public/img/intro-carousel/home-4.jpg
  27. BIN
      public/img/intro-carousel/home-5.jpg
  28. BIN
      public/img/intro-carousel/home-6.jpg
  29. BIN
      public/img/intro-carousel/residential-1.jpg
  30. BIN
      public/img/intro-carousel/residential-2.jpg
  31. BIN
      public/img/intro-carousel/residential-3.jpg
  32. BIN
      public/img/intro-carousel/residential-4.jpg
  33. BIN
      public/img/intro-carousel/residential-5.jpg
  34. BIN
      public/img/intro-carousel/residential-6.jpg
  35. BIN
      public/img/intro-carousel/timeshare-1.jpg
  36. BIN
      public/img/intro-carousel/timeshare-2.jpg
  37. BIN
      public/img/intro-carousel/timeshare-3.jpg
  38. BIN
      public/img/intro-carousel/timeshare-4.jpg
  39. BIN
      public/img/intro-carousel/timeshare-5.jpg
  40. BIN
      public/img/intro-carousel/timeshare-6.jpg
  41. BIN
      public/img/logos.jpg
  42. BIN
      public/img/logos/daeNew.png
  43. BIN
      public/img/logos/gomeloNew.png
  44. BIN
      public/img/logos/rciNew.png
  45. BIN
      public/img/logos/voasaNew.png
  46. BIN
      public/img/quote.png
  47. BIN
      public/img/strip.png
  48. BIN
      public/img/timeshare-pic.png
  49. 182
    68
      public/js/main.js
  50. 542
    0
      public/lib/wow/wow.js
  51. 3
    0
      public/lib/wow/wow.min.js
  52. BIN
      public/webfonts/Playlist-Script.ttf.eot
  53. 1102
    0
      public/webfonts/Playlist-Script.ttf.svg
  54. BIN
      public/webfonts/Playlist-Script.ttf.woff
  55. BIN
      public/webfonts/_DS_Store
  56. 24
    0
      public/webfonts/install-a-webfont.txt
  57. 6
    6
      src/App.vue
  58. 30
    70
      src/components/about/aboutTimeshare.vue
  59. 50
    0
      src/components/about/aboutTimeshareCarouselSection.vue
  60. 75
    0
      src/components/about/aboutTimeshareContentSection.vue
  61. 164
    0
      src/components/about/aboutTimeshareTestimonialSection.vue
  62. 52
    0
      src/components/about/aboutUsCarouselSection.vue
  63. 68
    0
      src/components/about/aboutUsContentSection.vue
  64. 14
    102
      src/components/about/aboutUsPage.vue
  65. 21
    22
      src/components/admin/logs/SearchLogs.vue
  66. 36
    38
      src/components/admin/misc/carousel.vue
  67. 16
    17
      src/components/admin/misc/carouselList.vue
  68. 15
    16
      src/components/admin/property/propertyTypeList.vue
  69. 14
    17
      src/components/admin/property/userDefinedGroupsPage.vue
  70. 20
    28
      src/components/admin/status/changeLogPage.vue
  71. 12
    13
      src/components/admin/status/statusPage.vue
  72. 22
    30
      src/components/admin/status/tenderWeekAdminPage.vue
  73. 44
    33
      src/components/admin/status/timeshareAdminPage.vue
  74. 54
    60
      src/components/admin/status/userManagementPage.vue
  75. 12
    20
      src/components/admin/unitConfiguration/unitConfigurationPage.vue
  76. 38
    33
      src/components/communication/templatePage.vue
  77. 14
    14
      src/components/financial/payments.vue
  78. 246
    67
      src/components/home/carouselSection.vue
  79. 20
    18
      src/components/home/homePage.vue
  80. 28
    22
      src/components/home/propertySection.vue
  81. 26
    35
      src/components/marketing/landingPage.vue
  82. 4
    4
      src/components/marketing/landingPages.vue
  83. 101
    105
      src/components/misc/address.vue
  84. 68
    117
      src/components/processFlow/makeOffer.vue
  85. 16
    17
      src/components/processFlow/offers.vue
  86. 158
    0
      src/components/property/commercial/commercialCarouselSection.vue
  87. 19
    0
      src/components/property/commercial/commercialContentSection.vue
  88. 34
    0
      src/components/property/commercial/commercialPage.vue
  89. 109
    0
      src/components/property/commercial/commercialSearchResults.vue
  90. 49
    0
      src/components/property/commercial/latestListings.vue
  91. 46
    0
      src/components/property/commercial/singleView/carouselSection.vue
  92. 146
    0
      src/components/property/commercial/singleView/contentSection.vue
  93. 65
    0
      src/components/property/commercial/singleView/singleCommercialPage.vue
  94. 46
    129
      src/components/property/propertyCard.vue
  95. 40
    64
      src/components/property/propertySearchResults.vue
  96. 49
    0
      src/components/property/residential/latestListings.vue
  97. 310
    0
      src/components/property/residential/residentialCarouselSection.vue
  98. 19
    0
      src/components/property/residential/residentialContentSection.vue
  99. 34
    0
      src/components/property/residential/residentialPage.vue
  100. 0
    0
      src/components/property/residential/residentialSearchResults.vue

+ 93
- 69
package-lock.json Datei anzeigen

1809
     "ajv-errors": {
1809
     "ajv-errors": {
1810
       "version": "1.0.1",
1810
       "version": "1.0.1",
1811
       "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz",
1811
       "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz",
1812
-      "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==",
1813
-      "dev": true
1812
+      "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ=="
1814
     },
1813
     },
1815
     "ajv-keywords": {
1814
     "ajv-keywords": {
1816
       "version": "3.4.1",
1815
       "version": "3.4.1",
1817
       "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz",
1816
       "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz",
1818
-      "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==",
1819
-      "dev": true
1817
+      "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ=="
1820
     },
1818
     },
1821
     "alphanum-sort": {
1819
     "alphanum-sort": {
1822
       "version": "1.0.2",
1820
       "version": "1.0.2",
1862
       "version": "3.2.1",
1860
       "version": "3.2.1",
1863
       "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
1861
       "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
1864
       "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
1862
       "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
1865
-      "dev": true,
1866
       "requires": {
1863
       "requires": {
1867
         "color-convert": "^1.9.0"
1864
         "color-convert": "^1.9.0"
1868
       }
1865
       }
1894
         }
1891
         }
1895
       }
1892
       }
1896
     },
1893
     },
1894
+    "aos": {
1895
+      "version": "3.0.0-beta.6",
1896
+      "resolved": "https://registry.npmjs.org/aos/-/aos-3.0.0-beta.6.tgz",
1897
+      "integrity": "sha512-VLWrpq8bfAWcetynVHMMrqdC+89Qq/Ym6UBJbHB4crIwp3RR8uq1dNGgsFzoDl03S43rlVMK+na3r5+oUCZsYw==",
1898
+      "requires": {
1899
+        "classlist-polyfill": "^1.2.0",
1900
+        "lodash.debounce": "^4.0.8",
1901
+        "lodash.throttle": "^4.1.1"
1902
+      }
1903
+    },
1897
     "aproba": {
1904
     "aproba": {
1898
       "version": "1.2.0",
1905
       "version": "1.2.0",
1899
       "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
1906
       "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
2170
       "version": "6.26.0",
2177
       "version": "6.26.0",
2171
       "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
2178
       "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
2172
       "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
2179
       "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
2173
-      "dev": true,
2174
       "requires": {
2180
       "requires": {
2175
         "chalk": "^1.1.3",
2181
         "chalk": "^1.1.3",
2176
         "esutils": "^2.0.2",
2182
         "esutils": "^2.0.2",
2180
         "ansi-regex": {
2186
         "ansi-regex": {
2181
           "version": "2.1.1",
2187
           "version": "2.1.1",
2182
           "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
2188
           "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
2183
-          "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
2184
-          "dev": true
2189
+          "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
2185
         },
2190
         },
2186
         "ansi-styles": {
2191
         "ansi-styles": {
2187
           "version": "2.2.1",
2192
           "version": "2.2.1",
2188
           "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
2193
           "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
2189
-          "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
2190
-          "dev": true
2194
+          "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
2191
         },
2195
         },
2192
         "chalk": {
2196
         "chalk": {
2193
           "version": "1.1.3",
2197
           "version": "1.1.3",
2194
           "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
2198
           "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
2195
           "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
2199
           "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
2196
-          "dev": true,
2197
           "requires": {
2200
           "requires": {
2198
             "ansi-styles": "^2.2.1",
2201
             "ansi-styles": "^2.2.1",
2199
             "escape-string-regexp": "^1.0.2",
2202
             "escape-string-regexp": "^1.0.2",
2205
         "js-tokens": {
2208
         "js-tokens": {
2206
           "version": "3.0.2",
2209
           "version": "3.0.2",
2207
           "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
2210
           "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
2208
-          "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
2209
-          "dev": true
2211
+          "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls="
2210
         },
2212
         },
2211
         "strip-ansi": {
2213
         "strip-ansi": {
2212
           "version": "3.0.1",
2214
           "version": "3.0.1",
2213
           "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
2215
           "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
2214
           "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
2216
           "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
2215
-          "dev": true,
2216
           "requires": {
2217
           "requires": {
2217
             "ansi-regex": "^2.0.0"
2218
             "ansi-regex": "^2.0.0"
2218
           }
2219
           }
2220
         "supports-color": {
2221
         "supports-color": {
2221
           "version": "2.0.0",
2222
           "version": "2.0.0",
2222
           "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
2223
           "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
2223
-          "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
2224
-          "dev": true
2224
+          "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
2225
         }
2225
         }
2226
       }
2226
       }
2227
     },
2227
     },
2792
       "version": "2.4.2",
2792
       "version": "2.4.2",
2793
       "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
2793
       "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
2794
       "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
2794
       "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
2795
-      "dev": true,
2796
       "requires": {
2795
       "requires": {
2797
         "ansi-styles": "^3.2.1",
2796
         "ansi-styles": "^3.2.1",
2798
         "escape-string-regexp": "^1.0.5",
2797
         "escape-string-regexp": "^1.0.5",
2891
         }
2890
         }
2892
       }
2891
       }
2893
     },
2892
     },
2893
+    "classlist-polyfill": {
2894
+      "version": "1.2.0",
2895
+      "resolved": "https://registry.npmjs.org/classlist-polyfill/-/classlist-polyfill-1.2.0.tgz",
2896
+      "integrity": "sha1-k1vC39lFiodrJ5YXUUY4vKqWSi4="
2897
+    },
2894
     "clean-css": {
2898
     "clean-css": {
2895
       "version": "4.2.1",
2899
       "version": "4.2.1",
2896
       "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz",
2900
       "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz",
3102
       "version": "1.9.3",
3106
       "version": "1.9.3",
3103
       "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
3107
       "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
3104
       "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
3108
       "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
3105
-      "dev": true,
3106
       "requires": {
3109
       "requires": {
3107
         "color-name": "1.1.3"
3110
         "color-name": "1.1.3"
3108
       }
3111
       }
3110
     "color-name": {
3113
     "color-name": {
3111
       "version": "1.1.3",
3114
       "version": "1.1.3",
3112
       "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
3115
       "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
3113
-      "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
3114
-      "dev": true
3116
+      "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
3115
     },
3117
     },
3116
     "color-string": {
3118
     "color-string": {
3117
       "version": "1.5.3",
3119
       "version": "1.5.3",
3580
       "version": "1.0.1",
3582
       "version": "1.0.1",
3581
       "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-1.0.1.tgz",
3583
       "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-1.0.1.tgz",
3582
       "integrity": "sha512-+ZHAZm/yqvJ2kDtPne3uX0C+Vr3Zn5jFn2N4HywtS5ujwvsVkyg0VArEXpl3BgczDA8anieki1FIzhchX4yrDw==",
3584
       "integrity": "sha512-+ZHAZm/yqvJ2kDtPne3uX0C+Vr3Zn5jFn2N4HywtS5ujwvsVkyg0VArEXpl3BgczDA8anieki1FIzhchX4yrDw==",
3583
-      "dev": true,
3584
       "requires": {
3585
       "requires": {
3585
         "babel-code-frame": "^6.26.0",
3586
         "babel-code-frame": "^6.26.0",
3586
         "css-selector-tokenizer": "^0.7.0",
3587
         "css-selector-tokenizer": "^0.7.0",
3600
           "version": "6.0.23",
3601
           "version": "6.0.23",
3601
           "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
3602
           "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
3602
           "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
3603
           "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
3603
-          "dev": true,
3604
           "requires": {
3604
           "requires": {
3605
             "chalk": "^2.4.1",
3605
             "chalk": "^2.4.1",
3606
             "source-map": "^0.6.1",
3606
             "source-map": "^0.6.1",
3610
         "source-map": {
3610
         "source-map": {
3611
           "version": "0.6.1",
3611
           "version": "0.6.1",
3612
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
3612
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
3613
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
3614
-          "dev": true
3613
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
3615
         }
3614
         }
3616
       }
3615
       }
3617
     },
3616
     },
3637
       "version": "0.7.1",
3636
       "version": "0.7.1",
3638
       "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz",
3637
       "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz",
3639
       "integrity": "sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA==",
3638
       "integrity": "sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA==",
3640
-      "dev": true,
3641
       "requires": {
3639
       "requires": {
3642
         "cssesc": "^0.1.0",
3640
         "cssesc": "^0.1.0",
3643
         "fastparse": "^1.1.1",
3641
         "fastparse": "^1.1.1",
3647
         "cssesc": {
3645
         "cssesc": {
3648
           "version": "0.1.0",
3646
           "version": "0.1.0",
3649
           "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz",
3647
           "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz",
3650
-          "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=",
3651
-          "dev": true
3648
+          "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q="
3652
         },
3649
         },
3653
         "jsesc": {
3650
         "jsesc": {
3654
           "version": "0.5.0",
3651
           "version": "0.5.0",
3655
           "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
3652
           "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
3656
-          "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
3657
-          "dev": true
3653
+          "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0="
3658
         },
3654
         },
3659
         "regexpu-core": {
3655
         "regexpu-core": {
3660
           "version": "1.0.0",
3656
           "version": "1.0.0",
3661
           "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz",
3657
           "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz",
3662
           "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=",
3658
           "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=",
3663
-          "dev": true,
3664
           "requires": {
3659
           "requires": {
3665
             "regenerate": "^1.2.1",
3660
             "regenerate": "^1.2.1",
3666
             "regjsgen": "^0.2.0",
3661
             "regjsgen": "^0.2.0",
3670
         "regjsgen": {
3665
         "regjsgen": {
3671
           "version": "0.2.0",
3666
           "version": "0.2.0",
3672
           "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz",
3667
           "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz",
3673
-          "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=",
3674
-          "dev": true
3668
+          "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc="
3675
         },
3669
         },
3676
         "regjsparser": {
3670
         "regjsparser": {
3677
           "version": "0.1.5",
3671
           "version": "0.1.5",
3678
           "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz",
3672
           "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz",
3679
           "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=",
3673
           "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=",
3680
-          "dev": true,
3681
           "requires": {
3674
           "requires": {
3682
             "jsesc": "~0.5.0"
3675
             "jsesc": "~0.5.0"
3683
           }
3676
           }
5025
     "esutils": {
5018
     "esutils": {
5026
       "version": "2.0.2",
5019
       "version": "2.0.2",
5027
       "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
5020
       "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
5028
-      "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
5029
-      "dev": true
5021
+      "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs="
5030
     },
5022
     },
5031
     "etag": {
5023
     "etag": {
5032
       "version": "1.8.1",
5024
       "version": "1.8.1",
5334
     "fastparse": {
5326
     "fastparse": {
5335
       "version": "1.1.2",
5327
       "version": "1.1.2",
5336
       "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz",
5328
       "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz",
5337
-      "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==",
5338
-      "dev": true
5329
+      "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ=="
5339
     },
5330
     },
5340
     "faye-websocket": {
5331
     "faye-websocket": {
5341
       "version": "0.10.0",
5332
       "version": "0.10.0",
6444
     "has-flag": {
6435
     "has-flag": {
6445
       "version": "3.0.0",
6436
       "version": "3.0.0",
6446
       "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
6437
       "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
6447
-      "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
6448
-      "dev": true
6438
+      "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
6449
     },
6439
     },
6450
     "has-symbols": {
6440
     "has-symbols": {
6451
       "version": "1.0.1",
6441
       "version": "1.0.1",
6782
     "icss-replace-symbols": {
6772
     "icss-replace-symbols": {
6783
       "version": "1.1.0",
6773
       "version": "1.1.0",
6784
       "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz",
6774
       "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz",
6785
-      "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=",
6786
-      "dev": true
6775
+      "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0="
6787
     },
6776
     },
6788
     "icss-utils": {
6777
     "icss-utils": {
6789
       "version": "2.1.0",
6778
       "version": "2.1.0",
6790
       "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz",
6779
       "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz",
6791
       "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=",
6780
       "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=",
6792
-      "dev": true,
6793
       "requires": {
6781
       "requires": {
6794
         "postcss": "^6.0.1"
6782
         "postcss": "^6.0.1"
6795
       },
6783
       },
6798
           "version": "6.0.23",
6786
           "version": "6.0.23",
6799
           "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
6787
           "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
6800
           "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
6788
           "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
6801
-          "dev": true,
6802
           "requires": {
6789
           "requires": {
6803
             "chalk": "^2.4.1",
6790
             "chalk": "^2.4.1",
6804
             "source-map": "^0.6.1",
6791
             "source-map": "^0.6.1",
6808
         "source-map": {
6795
         "source-map": {
6809
           "version": "0.6.1",
6796
           "version": "0.6.1",
6810
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
6797
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
6811
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
6812
-          "dev": true
6798
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
6813
         }
6799
         }
6814
       }
6800
       }
6815
     },
6801
     },
7658
       "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
7644
       "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
7659
       "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8="
7645
       "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8="
7660
     },
7646
     },
7647
+    "lodash.debounce": {
7648
+      "version": "4.0.8",
7649
+      "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
7650
+      "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168="
7651
+    },
7661
     "lodash.defaultsdeep": {
7652
     "lodash.defaultsdeep": {
7662
       "version": "4.6.1",
7653
       "version": "4.6.1",
7663
       "resolved": "https://registry.npmjs.org/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz",
7654
       "resolved": "https://registry.npmjs.org/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz",
7682
       "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=",
7673
       "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=",
7683
       "dev": true
7674
       "dev": true
7684
     },
7675
     },
7676
+    "lodash.throttle": {
7677
+      "version": "4.1.1",
7678
+      "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz",
7679
+      "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ="
7680
+    },
7685
     "lodash.transform": {
7681
     "lodash.transform": {
7686
       "version": "4.6.0",
7682
       "version": "4.6.0",
7687
       "resolved": "https://registry.npmjs.org/lodash.transform/-/lodash.transform-4.6.0.tgz",
7683
       "resolved": "https://registry.npmjs.org/lodash.transform/-/lodash.transform-4.6.0.tgz",
8772
         "os-tmpdir": "^1.0.0"
8768
         "os-tmpdir": "^1.0.0"
8773
       }
8769
       }
8774
     },
8770
     },
8771
+    "owl.carousel": {
8772
+      "version": "2.3.4",
8773
+      "resolved": "https://registry.npmjs.org/owl.carousel/-/owl.carousel-2.3.4.tgz",
8774
+      "integrity": "sha512-JaDss9+feAvEW8KZppPSpllfposEzQiW+Ytt/Xm5t/3CTJ7YVmkh6RkWixoA2yXk2boIwedYxOvrrppIGzru9A==",
8775
+      "requires": {
8776
+        "jquery": ">=1.8.3"
8777
+      }
8778
+    },
8775
     "p-defer": {
8779
     "p-defer": {
8776
       "version": "1.0.0",
8780
       "version": "1.0.0",
8777
       "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
8781
       "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
9348
       "version": "1.2.1",
9352
       "version": "1.2.1",
9349
       "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz",
9353
       "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz",
9350
       "integrity": "sha512-6jt9XZwUhwmRUhb/CkyJY020PYaPJsCyt3UjbaWo6XEbH/94Hmv6MP7fG2C5NDU/BcHzyGYxNtHvM+LTf9HrYw==",
9354
       "integrity": "sha512-6jt9XZwUhwmRUhb/CkyJY020PYaPJsCyt3UjbaWo6XEbH/94Hmv6MP7fG2C5NDU/BcHzyGYxNtHvM+LTf9HrYw==",
9351
-      "dev": true,
9352
       "requires": {
9355
       "requires": {
9353
         "postcss": "^6.0.1"
9356
         "postcss": "^6.0.1"
9354
       },
9357
       },
9357
           "version": "6.0.23",
9360
           "version": "6.0.23",
9358
           "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
9361
           "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
9359
           "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
9362
           "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
9360
-          "dev": true,
9361
           "requires": {
9363
           "requires": {
9362
             "chalk": "^2.4.1",
9364
             "chalk": "^2.4.1",
9363
             "source-map": "^0.6.1",
9365
             "source-map": "^0.6.1",
9367
         "source-map": {
9369
         "source-map": {
9368
           "version": "0.6.1",
9370
           "version": "0.6.1",
9369
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
9371
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
9370
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
9371
-          "dev": true
9372
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
9372
         }
9373
         }
9373
       }
9374
       }
9374
     },
9375
     },
9376
       "version": "1.2.0",
9377
       "version": "1.2.0",
9377
       "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz",
9378
       "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz",
9378
       "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=",
9379
       "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=",
9379
-      "dev": true,
9380
       "requires": {
9380
       "requires": {
9381
         "css-selector-tokenizer": "^0.7.0",
9381
         "css-selector-tokenizer": "^0.7.0",
9382
         "postcss": "^6.0.1"
9382
         "postcss": "^6.0.1"
9386
           "version": "6.0.23",
9386
           "version": "6.0.23",
9387
           "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
9387
           "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
9388
           "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
9388
           "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
9389
-          "dev": true,
9390
           "requires": {
9389
           "requires": {
9391
             "chalk": "^2.4.1",
9390
             "chalk": "^2.4.1",
9392
             "source-map": "^0.6.1",
9391
             "source-map": "^0.6.1",
9396
         "source-map": {
9395
         "source-map": {
9397
           "version": "0.6.1",
9396
           "version": "0.6.1",
9398
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
9397
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
9399
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
9400
-          "dev": true
9398
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
9401
         }
9399
         }
9402
       }
9400
       }
9403
     },
9401
     },
9405
       "version": "1.1.0",
9403
       "version": "1.1.0",
9406
       "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz",
9404
       "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz",
9407
       "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=",
9405
       "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=",
9408
-      "dev": true,
9409
       "requires": {
9406
       "requires": {
9410
         "css-selector-tokenizer": "^0.7.0",
9407
         "css-selector-tokenizer": "^0.7.0",
9411
         "postcss": "^6.0.1"
9408
         "postcss": "^6.0.1"
9415
           "version": "6.0.23",
9412
           "version": "6.0.23",
9416
           "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
9413
           "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
9417
           "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
9414
           "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
9418
-          "dev": true,
9419
           "requires": {
9415
           "requires": {
9420
             "chalk": "^2.4.1",
9416
             "chalk": "^2.4.1",
9421
             "source-map": "^0.6.1",
9417
             "source-map": "^0.6.1",
9425
         "source-map": {
9421
         "source-map": {
9426
           "version": "0.6.1",
9422
           "version": "0.6.1",
9427
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
9423
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
9428
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
9429
-          "dev": true
9424
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
9430
         }
9425
         }
9431
       }
9426
       }
9432
     },
9427
     },
9434
       "version": "1.3.0",
9429
       "version": "1.3.0",
9435
       "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz",
9430
       "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz",
9436
       "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=",
9431
       "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=",
9437
-      "dev": true,
9438
       "requires": {
9432
       "requires": {
9439
         "icss-replace-symbols": "^1.1.0",
9433
         "icss-replace-symbols": "^1.1.0",
9440
         "postcss": "^6.0.1"
9434
         "postcss": "^6.0.1"
9444
           "version": "6.0.23",
9438
           "version": "6.0.23",
9445
           "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
9439
           "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
9446
           "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
9440
           "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
9447
-          "dev": true,
9448
           "requires": {
9441
           "requires": {
9449
             "chalk": "^2.4.1",
9442
             "chalk": "^2.4.1",
9450
             "source-map": "^0.6.1",
9443
             "source-map": "^0.6.1",
9454
         "source-map": {
9447
         "source-map": {
9455
           "version": "0.6.1",
9448
           "version": "0.6.1",
9456
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
9449
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
9457
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
9458
-          "dev": true
9450
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
9459
         }
9451
         }
9460
       }
9452
       }
9461
     },
9453
     },
9630
     "postcss-value-parser": {
9622
     "postcss-value-parser": {
9631
       "version": "3.3.1",
9623
       "version": "3.3.1",
9632
       "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
9624
       "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
9633
-      "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
9634
-      "dev": true
9625
+      "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ=="
9635
     },
9626
     },
9636
     "prelude-ls": {
9627
     "prelude-ls": {
9637
       "version": "1.1.2",
9628
       "version": "1.1.2",
9989
     "regenerate": {
9980
     "regenerate": {
9990
       "version": "1.4.0",
9981
       "version": "1.4.0",
9991
       "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz",
9982
       "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz",
9992
-      "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==",
9993
-      "dev": true
9983
+      "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg=="
9994
     },
9984
     },
9995
     "regenerate-unicode-properties": {
9985
     "regenerate-unicode-properties": {
9996
       "version": "8.1.0",
9986
       "version": "8.1.0",
10637
       "version": "1.0.0",
10627
       "version": "1.0.0",
10638
       "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
10628
       "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
10639
       "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
10629
       "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
10640
-      "dev": true,
10641
       "requires": {
10630
       "requires": {
10642
         "ajv": "^6.1.0",
10631
         "ajv": "^6.1.0",
10643
         "ajv-errors": "^1.0.0",
10632
         "ajv-errors": "^1.0.0",
11084
     "source-list-map": {
11073
     "source-list-map": {
11085
       "version": "2.0.1",
11074
       "version": "2.0.1",
11086
       "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz",
11075
       "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz",
11087
-      "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==",
11088
-      "dev": true
11076
+      "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw=="
11089
     },
11077
     },
11090
     "source-map": {
11078
     "source-map": {
11091
       "version": "0.5.7",
11079
       "version": "0.5.7",
11441
       "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
11429
       "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
11442
       "dev": true
11430
       "dev": true
11443
     },
11431
     },
11432
+    "style-loader": {
11433
+      "version": "0.23.1",
11434
+      "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.23.1.tgz",
11435
+      "integrity": "sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg==",
11436
+      "requires": {
11437
+        "loader-utils": "^1.1.0",
11438
+        "schema-utils": "^1.0.0"
11439
+      }
11440
+    },
11444
     "stylehacks": {
11441
     "stylehacks": {
11445
       "version": "4.0.3",
11442
       "version": "4.0.3",
11446
       "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz",
11443
       "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz",
11479
       "version": "5.5.0",
11476
       "version": "5.5.0",
11480
       "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
11477
       "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
11481
       "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
11478
       "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
11482
-      "dev": true,
11483
       "requires": {
11479
       "requires": {
11484
         "has-flag": "^3.0.0"
11480
         "has-flag": "^3.0.0"
11485
       }
11481
       }
12190
       "integrity": "sha512-TigfiZUs7SN3Z6uxKilqJUtYxte8vp0F4QxabCli6hkKPqU97JzAZc3P7AL6omkRAd2DMI26fOrIGjuALTvXww==",
12186
       "integrity": "sha512-TigfiZUs7SN3Z6uxKilqJUtYxte8vp0F4QxabCli6hkKPqU97JzAZc3P7AL6omkRAd2DMI26fOrIGjuALTvXww==",
12191
       "dev": true
12187
       "dev": true
12192
     },
12188
     },
12189
+    "vue-disable-autocomplete": {
12190
+      "version": "0.0.4",
12191
+      "resolved": "https://registry.npmjs.org/vue-disable-autocomplete/-/vue-disable-autocomplete-0.0.4.tgz",
12192
+      "integrity": "sha512-NtEMoepVfFScR6f7d37g3tQh3F5VU75ai+5+GHoQ0pt3ftrLUeOWXi0ozQDExTwPFgLK3Yk86NeyokSZMlXvFg=="
12193
+    },
12193
     "vue-eslint-parser": {
12194
     "vue-eslint-parser": {
12194
       "version": "2.0.3",
12195
       "version": "2.0.3",
12195
       "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-2.0.3.tgz",
12196
       "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-2.0.3.tgz",
12269
         "vue-style-loader": "^4.1.0"
12270
         "vue-style-loader": "^4.1.0"
12270
       }
12271
       }
12271
     },
12272
     },
12273
+    "vue-owl-carousel": {
12274
+      "version": "2.0.3",
12275
+      "resolved": "https://registry.npmjs.org/vue-owl-carousel/-/vue-owl-carousel-2.0.3.tgz",
12276
+      "integrity": "sha512-TRl6pnbL0HqlebOpEzbGbXL4KxJwlDGxAWeCREjNumvsjB5MXg875y+fkko/M3ML1nxJXIRHw1XWmXgxaQbang==",
12277
+      "requires": {
12278
+        "css-loader": "^1.0.0",
12279
+        "file-loader": "^2.0.0",
12280
+        "jquery": "^3.3.1",
12281
+        "owl.carousel": "^2.3.4",
12282
+        "style-loader": "^0.23.0"
12283
+      },
12284
+      "dependencies": {
12285
+        "file-loader": {
12286
+          "version": "2.0.0",
12287
+          "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-2.0.0.tgz",
12288
+          "integrity": "sha512-YCsBfd1ZGCyonOKLxPiKPdu+8ld9HAaMEvJewzz+b2eTF7uL5Zm/HdBF6FjCrpCMRq25Mi0U1gl4pwn2TlH7hQ==",
12289
+          "requires": {
12290
+            "loader-utils": "^1.0.2",
12291
+            "schema-utils": "^1.0.0"
12292
+          }
12293
+        }
12294
+      }
12295
+    },
12272
     "vue-router": {
12296
     "vue-router": {
12273
       "version": "3.1.5",
12297
       "version": "3.1.5",
12274
       "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.1.5.tgz",
12298
       "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.1.5.tgz",

+ 3
- 0
package.json Datei anzeigen

11
   "dependencies": {
11
   "dependencies": {
12
     "@nuxtjs/axios": "^5.9.3",
12
     "@nuxtjs/axios": "^5.9.3",
13
     "animate.css": "^3.7.2",
13
     "animate.css": "^3.7.2",
14
+    "aos": "^3.0.0-beta.6",
14
     "axios": "^0.19.2",
15
     "axios": "^0.19.2",
15
     "core-js": "^2.6.11",
16
     "core-js": "^2.6.11",
16
     "datatables.net": "^1.10.20",
17
     "datatables.net": "^1.10.20",
25
     "v-file-upload": "^3.1.7",
26
     "v-file-upload": "^3.1.7",
26
     "vue": "^2.6.11",
27
     "vue": "^2.6.11",
27
     "vue-carousel": "^0.18.0",
28
     "vue-carousel": "^0.18.0",
29
+    "vue-disable-autocomplete": "0.0.4",
28
     "vue-eva-icons": "^1.1.1",
30
     "vue-eva-icons": "^1.1.1",
29
     "vue-js-modal": "^1.3.33",
31
     "vue-js-modal": "^1.3.33",
30
     "vue-json-excel": "^0.2.98",
32
     "vue-json-excel": "^0.2.98",
33
+    "vue-owl-carousel": "^2.0.3",
31
     "vue-router": "^3.1.5",
34
     "vue-router": "^3.1.5",
32
     "vue-trix": "^1.1.7",
35
     "vue-trix": "^1.1.7",
33
     "vue2-editor": "^2.10.2",
36
     "vue2-editor": "^2.10.2",

+ 1520
- 0
public/css/newStyle.css
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 1084
- 1129
public/css/style.css
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


BIN
public/img/intro-carousel/16.jpg Datei anzeigen


BIN
public/img/intro-carousel/18.jpg Datei anzeigen


BIN
public/img/intro-carousel/2.jpg Datei anzeigen


BIN
public/img/intro-carousel/21.jpg Datei anzeigen


BIN
public/img/intro-carousel/23.jpg Datei anzeigen


BIN
public/img/intro-carousel/3.jpg Datei anzeigen


BIN
public/img/intro-carousel/4.jpg Datei anzeigen


BIN
public/img/intro-carousel/6.jpg Datei anzeigen


BIN
public/img/intro-carousel/8.jpg Datei anzeigen


BIN
public/img/intro-carousel/9.jpg Datei anzeigen


BIN
public/img/intro-carousel/Thumbs.db Datei anzeigen


BIN
public/img/intro-carousel/_DS_Store Datei anzeigen


BIN
public/img/intro-carousel/comm-1.jpg Datei anzeigen


BIN
public/img/intro-carousel/comm-2.jpg Datei anzeigen


BIN
public/img/intro-carousel/comm-3.jpg Datei anzeigen


BIN
public/img/intro-carousel/comm-4.jpg Datei anzeigen


BIN
public/img/intro-carousel/comm-5.jpg Datei anzeigen


BIN
public/img/intro-carousel/comm-6.jpg Datei anzeigen


BIN
public/img/intro-carousel/home-1.jpg Datei anzeigen


BIN
public/img/intro-carousel/home-2.jpg Datei anzeigen


BIN
public/img/intro-carousel/home-3.jpg Datei anzeigen


BIN
public/img/intro-carousel/home-4.jpg Datei anzeigen


BIN
public/img/intro-carousel/home-5.jpg Datei anzeigen


BIN
public/img/intro-carousel/home-6.jpg Datei anzeigen


BIN
public/img/intro-carousel/residential-1.jpg Datei anzeigen


BIN
public/img/intro-carousel/residential-2.jpg Datei anzeigen


BIN
public/img/intro-carousel/residential-3.jpg Datei anzeigen


BIN
public/img/intro-carousel/residential-4.jpg Datei anzeigen


BIN
public/img/intro-carousel/residential-5.jpg Datei anzeigen


BIN
public/img/intro-carousel/residential-6.jpg Datei anzeigen


BIN
public/img/intro-carousel/timeshare-1.jpg Datei anzeigen


BIN
public/img/intro-carousel/timeshare-2.jpg Datei anzeigen


BIN
public/img/intro-carousel/timeshare-3.jpg Datei anzeigen


BIN
public/img/intro-carousel/timeshare-4.jpg Datei anzeigen


BIN
public/img/intro-carousel/timeshare-5.jpg Datei anzeigen


BIN
public/img/intro-carousel/timeshare-6.jpg Datei anzeigen


BIN
public/img/logos.jpg Datei anzeigen


BIN
public/img/logos/daeNew.png Datei anzeigen


BIN
public/img/logos/gomeloNew.png Datei anzeigen


BIN
public/img/logos/rciNew.png Datei anzeigen


BIN
public/img/logos/voasaNew.png Datei anzeigen


BIN
public/img/quote.png Datei anzeigen


BIN
public/img/strip.png Datei anzeigen


BIN
public/img/timeshare-pic.png Datei anzeigen


+ 182
- 68
public/js/main.js Datei anzeigen

1
-(function ($) {
1
+/* eslint-disable */
2
+(function($) {
2
   // Preloader
3
   // Preloader
3
-  $(window).on('load', () => {
4
-    if ($('#preloader')) {
5
-      $('#preloader').fadeOut('slow', function () {
4
+  $(window).on("load", () => {
5
+    if ($("#preloader")) {
6
+      $("#preloader").fadeOut("slow", function() {
6
         $(this).remove();
7
         $(this).remove();
7
       });
8
       });
8
     }
9
     }
9
   });
10
   });
10
 
11
 
11
   // Back to top button
12
   // Back to top button
12
-  $(window).scroll(function () {
13
+  $(window).scroll(function() {
13
     if ($(this).scrollTop() > 100) {
14
     if ($(this).scrollTop() > 100) {
14
-      $('.back-to-top').fadeIn('slow');
15
+      $(".back-to-top").fadeIn("slow");
15
     } else {
16
     } else {
16
-      $('.back-to-top').fadeOut('slow');
17
+      $(".back-to-top").fadeOut("slow");
17
     }
18
     }
18
   });
19
   });
19
-  $('.back-to-top').click(() => {
20
-    $('html, body').animate({
21
-      scrollTop: 0,
22
-    }, 1500, 'easeInOutExpo');
20
+  $(".back-to-top").click(() => {
21
+    $("html, body").animate(
22
+      {
23
+        scrollTop: 0
24
+      },
25
+      1500,
26
+      "easeInOutExpo"
27
+    );
23
     return false;
28
     return false;
24
   });
29
   });
25
 
30
 
26
-  const nav = $('nav');
31
+  const nav = $("nav");
27
   const navHeight = nav.outerHeight();
32
   const navHeight = nav.outerHeight();
28
 
33
 
29
   /* --/ ScrollReveal /Easy scroll animations for web and mobile browsers /--*/
34
   /* --/ ScrollReveal /Easy scroll animations for web and mobile browsers /--*/
30
   window.sr = ScrollReveal();
35
   window.sr = ScrollReveal();
31
-  sr.reveal('.foo', {
36
+  sr.reveal(".foo", {
32
     duration: 1000,
37
     duration: 1000,
33
-    delay: 15,
38
+    delay: 15
39
+  });
40
+
41
+  // Smooth scroll for the menu and links with .scrollto classes
42
+  $(".nav-menu a, #mobile-nav a, .scrollto").on("click", function() {
43
+    if (
44
+      location.pathname.replace(/^\//, "") == this.pathname.replace(/^\//, "") &&
45
+      location.hostname == this.hostname
46
+    ) {
47
+      var target = $(this.hash);
48
+      if (target.length) {
49
+        var top_space = 0;
50
+
51
+        if ($("#header").length) {
52
+          top_space = $("#header").outerHeight();
53
+
54
+          if (!$("#header").hasClass("header-fixed")) {
55
+            top_space = top_space - 20;
56
+          }
57
+        }
58
+
59
+        $("html, body").animate(
60
+          {
61
+            scrollTop: target.offset().top - top_space
62
+          },
63
+          1500,
64
+          "easeInOutExpo"
65
+        );
66
+
67
+        if ($(this).parents(".nav-menu").length) {
68
+          $(".nav-menu .menu-active").removeClass("menu-active");
69
+          $(this)
70
+            .closest("li")
71
+            .addClass("menu-active");
72
+        }
73
+
74
+        if ($("body").hasClass("mobile-nav-active")) {
75
+          $("body").removeClass("mobile-nav-active");
76
+          $("#mobile-nav-toggle i").toggleClass("fa-times fa-bars");
77
+          $("#mobile-body-overly").fadeOut();
78
+        }
79
+        return false;
80
+      }
81
+    }
34
   });
82
   });
35
 
83
 
84
+  // Mobile Navigation
85
+  if ($("#nav-menu-container").length) {
86
+    var $mobile_nav = $("#nav-menu-container")
87
+      .clone()
88
+      .prop({
89
+        id: "mobile-nav"
90
+      });
91
+    $mobile_nav.find("> ul").attr({
92
+      class: "",
93
+      id: ""
94
+    });
95
+    $("body").append($mobile_nav);
96
+    $("body").prepend(
97
+      '<button type="button" id="mobile-nav-toggle"><i class="fa fa-bars"></i></button>'
98
+    );
99
+    $("body").append('<div id="mobile-body-overly"></div>');
100
+    $("#mobile-nav")
101
+      .find(".menu-has-children")
102
+      .prepend('<i class="fa fa-chevron-down"></i>');
103
+
104
+    $(document).on("click", ".menu-has-children i", function(e) {
105
+      $(this)
106
+        .next()
107
+        .toggleClass("menu-item-active");
108
+      $(this)
109
+        .nextAll("ul")
110
+        .eq(0)
111
+        .slideToggle();
112
+      $(this).toggleClass("fa-chevron-left fa-chevron-down");
113
+    });
114
+
115
+    $(document).on("click", "#mobile-nav-toggle", function(e) {
116
+      $("body").toggleClass("mobile-nav-active");
117
+      $("#mobile-nav-toggle i").toggleClass("fa-times fa-bars");
118
+      $("#mobile-body-overly").toggle();
119
+    });
120
+
121
+    $(document).click(function(e) {
122
+      var container = $("#mobile-nav, #mobile-nav-toggle");
123
+      if (!container.is(e.target) && container.has(e.target).length === 0) {
124
+        if ($("body").hasClass("mobile-nav-active")) {
125
+          $("body").removeClass("mobile-nav-active");
126
+          $("#mobile-nav-toggle i").toggleClass("fa-times fa-bars");
127
+          $("#mobile-body-overly").fadeOut();
128
+        }
129
+      }
130
+    });
131
+  } else if ($("#mobile-nav, #mobile-nav-toggle").length) {
132
+    $("#mobile-nav, #mobile-nav-toggle").hide();
133
+  }
134
+
36
   /* --/ Carousel owl /--*/
135
   /* --/ Carousel owl /--*/
37
-  $('#carousel').owlCarousel({
136
+  $("#carousel").owlCarousel({
38
     loop: true,
137
     loop: true,
39
     margin: -1,
138
     margin: -1,
40
     items: 1,
139
     items: 1,
41
     nav: true,
140
     nav: true,
42
-    navText: ['<i class="ion-ios-arrow-back" aria-hidden="true"></i>',
43
-      '<i class="ion-ios-arrow-forward" aria-hidden="true"></i>',
141
+    navText: [
142
+      '<i class="ion-ios-arrow-back" aria-hidden="true"></i>',
143
+      '<i class="ion-ios-arrow-forward" aria-hidden="true"></i>'
44
     ],
144
     ],
45
     autoplay: true,
145
     autoplay: true,
46
     autoplayTimeout: 3000,
146
     autoplayTimeout: 3000,
47
-    autoplayHoverPause: true,
147
+    autoplayHoverPause: true
48
   });
148
   });
49
 
149
 
50
   /* --/ Animate Carousel /--*/
150
   /* --/ Animate Carousel /--*/
51
-  $('.intro-carousel').on('translate.owl.carousel', () => {
52
-    $('.intro-content .intro-title').removeClass('zoomIn animated').hide();
53
-    $('.intro-content .intro-price').removeClass('fadeInUp animated').hide();
54
-    $('.intro-content .intro-title-top, .intro-content .spacial').removeClass(
55
-      'fadeIn animated',
56
-    )
151
+  $(".intro-carousel").on("translate.owl.carousel", () => {
152
+    $(".intro-content .intro-title")
153
+      .removeClass("zoomIn animated")
154
+      .hide();
155
+    $(".intro-content .intro-price")
156
+      .removeClass("fadeInUp animated")
157
+      .hide();
158
+    $(".intro-content .intro-title-top, .intro-content .spacial")
159
+      .removeClass("fadeIn animated")
57
       .hide();
160
       .hide();
58
   });
161
   });
59
 
162
 
60
-  $('.intro-carousel').on('translated.owl.carousel', () => {
61
-    $('.intro-content .intro-title').addClass('zoomIn animated').show();
62
-    $('.intro-content .intro-price').addClass('fadeInUp animated').show();
63
-    $('.intro-content .intro-title-top, .intro-content .spacial').addClass('fadeIn animated')
163
+  $(".intro-carousel").on("translated.owl.carousel", () => {
164
+    $(".intro-content .intro-title")
165
+      .addClass("zoomIn animated")
166
+      .show();
167
+    $(".intro-content .intro-price")
168
+      .addClass("fadeInUp animated")
169
+      .show();
170
+    $(".intro-content .intro-title-top, .intro-content .spacial")
171
+      .addClass("fadeIn animated")
64
       .show();
172
       .show();
65
   });
173
   });
66
 
174
 
67
   /* --/ Navbar Collapse /--*/
175
   /* --/ Navbar Collapse /--*/
68
-  $('.navbar-toggle-box-collapse').on('click', () => {
69
-    $('body').removeClass('box-collapse-closed').addClass('box-collapse-open');
176
+  $(".navbar-toggle-box-collapse").on("click", () => {
177
+    $("body")
178
+      .removeClass("box-collapse-closed")
179
+      .addClass("box-collapse-open");
70
   });
180
   });
71
-  $('.close-box-collapse, .click-closed').on('click', () => {
72
-    $('body').removeClass('box-collapse-open').addClass('box-collapse-closed');
73
-    $('.menu-list ul').slideUp(700);
181
+  $(".close-box-collapse, .click-closed").on("click", () => {
182
+    $("body")
183
+      .removeClass("box-collapse-open")
184
+      .addClass("box-collapse-closed");
185
+    $(".menu-list ul").slideUp(700);
74
   });
186
   });
75
 
187
 
76
   /* --/ Navbar Menu Reduce /--*/
188
   /* --/ Navbar Menu Reduce /--*/
77
-  $(window).trigger('scroll');
78
-  $(window).bind('scroll', () => {
189
+  $(window).trigger("scroll");
190
+  $(window).bind("scroll", () => {
79
     const pixels = 50;
191
     const pixels = 50;
80
     const top = 1200;
192
     const top = 1200;
81
     if ($(window).scrollTop() > pixels) {
193
     if ($(window).scrollTop() > pixels) {
82
-      $('.navbar-default').addClass('navbar-reduce');
83
-      $('.navbar-default').removeClass('navbar-trans');
194
+      $(".navbar-default").addClass("navbar-reduce");
195
+      $(".navbar-default").removeClass("navbar-trans");
84
     } else {
196
     } else {
85
-      $('.navbar-default').addClass('navbar-trans');
86
-      $('.navbar-default').removeClass('navbar-reduce');
197
+      $(".navbar-default").addClass("navbar-trans");
198
+      $(".navbar-default").removeClass("navbar-reduce");
87
     }
199
     }
88
     if ($(window).scrollTop() > top) {
200
     if ($(window).scrollTop() > top) {
89
-      $('.scrolltop-mf').fadeIn(1000, 'easeInOutExpo');
201
+      $(".scrolltop-mf").fadeIn(1000, "easeInOutExpo");
90
     } else {
202
     } else {
91
-      $('.scrolltop-mf').fadeOut(1000, 'easeInOutExpo');
203
+      $(".scrolltop-mf").fadeOut(1000, "easeInOutExpo");
92
     }
204
     }
93
   });
205
   });
94
 
206
 
95
   /* --/ Property owl /--*/
207
   /* --/ Property owl /--*/
96
-  $('#property-carousel').owlCarousel({
208
+  $("#property-carousel").owlCarousel({
97
     loop: true,
209
     loop: true,
98
     margin: 30,
210
     margin: 30,
99
     responsive: {
211
     responsive: {
100
       0: {
212
       0: {
101
-        items: 1,
213
+        items: 1
102
       },
214
       },
103
       769: {
215
       769: {
104
-        items: 2,
216
+        items: 2
105
       },
217
       },
106
       992: {
218
       992: {
107
-        items: 3,
108
-      },
109
-    },
219
+        items: 3
220
+      }
221
+    }
110
   });
222
   });
111
 
223
 
112
   /* --/ Property owl owl /--*/
224
   /* --/ Property owl owl /--*/
113
-  $('#property-single-carousel').owlCarousel({
225
+  $("#property-single-carousel").owlCarousel({
114
     loop: true,
226
     loop: true,
115
     margin: 0,
227
     margin: 0,
116
     nav: true,
228
     nav: true,
117
-    navText: ['<i class="ion-ios-arrow-back" aria-hidden="true"></i>',
118
-      '<i class="ion-ios-arrow-forward" aria-hidden="true"></i>',
229
+    navText: [
230
+      '<i class="ion-ios-arrow-back" aria-hidden="true"></i>',
231
+      '<i class="ion-ios-arrow-forward" aria-hidden="true"></i>'
119
     ],
232
     ],
120
     responsive: {
233
     responsive: {
121
       0: {
234
       0: {
122
-        items: 1,
123
-      },
124
-    },
235
+        items: 1
236
+      }
237
+    }
125
   });
238
   });
126
 
239
 
127
   /* --/ News owl /--*/
240
   /* --/ News owl /--*/
128
-  $('#new-carousel').owlCarousel({
241
+  $("#new-carousel").owlCarousel({
129
     loop: true,
242
     loop: true,
130
     margin: 30,
243
     margin: 30,
131
     responsive: {
244
     responsive: {
132
       0: {
245
       0: {
133
-        items: 1,
246
+        items: 1
134
       },
247
       },
135
       769: {
248
       769: {
136
-        items: 2,
249
+        items: 2
137
       },
250
       },
138
       992: {
251
       992: {
139
-        items: 3,
140
-      },
141
-    },
252
+        items: 3
253
+      }
254
+    }
142
   });
255
   });
143
 
256
 
144
   /* --/ Testimonials owl /--*/
257
   /* --/ Testimonials owl /--*/
145
-  $('#testimonial-carousel').owlCarousel({
258
+  $("#testimonial-carousel").owlCarousel({
146
     margin: 0,
259
     margin: 0,
147
     autoplay: true,
260
     autoplay: true,
148
     nav: true,
261
     nav: true,
149
-    animateOut: 'fadeOut',
150
-    animateIn: 'fadeInUp',
151
-    navText: ['<i class="ion-ios-arrow-back" aria-hidden="true"></i>',
152
-      '<i class="ion-ios-arrow-forward" aria-hidden="true"></i>',
262
+    animateOut: "fadeOut",
263
+    animateIn: "fadeInUp",
264
+    navText: [
265
+      '<i class="ion-ios-arrow-back" aria-hidden="true"></i>',
266
+      '<i class="ion-ios-arrow-forward" aria-hidden="true"></i>'
153
     ],
267
     ],
154
     autoplayTimeout: 4000,
268
     autoplayTimeout: 4000,
155
     autoplayHoverPause: true,
269
     autoplayHoverPause: true,
156
     responsive: {
270
     responsive: {
157
       0: {
271
       0: {
158
-        items: 1,
159
-      },
160
-    },
272
+        items: 1
273
+      }
274
+    }
161
   });
275
   });
162
-}(jQuery));
276
+})(jQuery);

+ 542
- 0
public/lib/wow/wow.js Datei anzeigen

1
+/*
2
+* WOW wow.js - v1.3.0 - 2016-10-04
3
+* https://wowjs.uk
4
+* Copyright (c) 2016 Thomas Grainger; Licensed MIT
5
+*/
6
+
7
+(function (global, factory) {
8
+  if (typeof define === "function" && define.amd) {
9
+    define(['module', 'exports'], factory);
10
+  } else if (typeof exports !== "undefined") {
11
+    factory(module, exports);
12
+  } else {
13
+    var mod = {
14
+      exports: {}
15
+    };
16
+    factory(mod, mod.exports);
17
+    global.WOW = mod.exports;
18
+  }
19
+})(this, function (module, exports) {
20
+  'use strict';
21
+
22
+  Object.defineProperty(exports, "__esModule", {
23
+    value: true
24
+  });
25
+
26
+  var _class, _temp;
27
+
28
+  function _classCallCheck(instance, Constructor) {
29
+    if (!(instance instanceof Constructor)) {
30
+      throw new TypeError("Cannot call a class as a function");
31
+    }
32
+  }
33
+
34
+  var _createClass = function () {
35
+    function defineProperties(target, props) {
36
+      for (var i = 0; i < props.length; i++) {
37
+        var descriptor = props[i];
38
+        descriptor.enumerable = descriptor.enumerable || false;
39
+        descriptor.configurable = true;
40
+        if ("value" in descriptor) descriptor.writable = true;
41
+        Object.defineProperty(target, descriptor.key, descriptor);
42
+      }
43
+    }
44
+
45
+    return function (Constructor, protoProps, staticProps) {
46
+      if (protoProps) defineProperties(Constructor.prototype, protoProps);
47
+      if (staticProps) defineProperties(Constructor, staticProps);
48
+      return Constructor;
49
+    };
50
+  }();
51
+
52
+  function isIn(needle, haystack) {
53
+    return haystack.indexOf(needle) >= 0;
54
+  }
55
+
56
+  function extend(custom, defaults) {
57
+    for (var key in defaults) {
58
+      if (custom[key] == null) {
59
+        var value = defaults[key];
60
+        custom[key] = value;
61
+      }
62
+    }
63
+    return custom;
64
+  }
65
+
66
+  function isMobile(agent) {
67
+    return (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(agent)
68
+    );
69
+  }
70
+
71
+  function createEvent(event) {
72
+    var bubble = arguments.length <= 1 || arguments[1] === undefined ? false : arguments[1];
73
+    var cancel = arguments.length <= 2 || arguments[2] === undefined ? false : arguments[2];
74
+    var detail = arguments.length <= 3 || arguments[3] === undefined ? null : arguments[3];
75
+
76
+    var customEvent = void 0;
77
+    if (document.createEvent != null) {
78
+      // W3C DOM
79
+      customEvent = document.createEvent('CustomEvent');
80
+      customEvent.initCustomEvent(event, bubble, cancel, detail);
81
+    } else if (document.createEventObject != null) {
82
+      // IE DOM < 9
83
+      customEvent = document.createEventObject();
84
+      customEvent.eventType = event;
85
+    } else {
86
+      customEvent.eventName = event;
87
+    }
88
+
89
+    return customEvent;
90
+  }
91
+
92
+  function emitEvent(elem, event) {
93
+    if (elem.dispatchEvent != null) {
94
+      // W3C DOM
95
+      elem.dispatchEvent(event);
96
+    } else if (event in (elem != null)) {
97
+      elem[event]();
98
+    } else if ('on' + event in (elem != null)) {
99
+      elem['on' + event]();
100
+    }
101
+  }
102
+
103
+  function addEvent(elem, event, fn) {
104
+    if (elem.addEventListener != null) {
105
+      // W3C DOM
106
+      elem.addEventListener(event, fn, false);
107
+    } else if (elem.attachEvent != null) {
108
+      // IE DOM
109
+      elem.attachEvent('on' + event, fn);
110
+    } else {
111
+      // fallback
112
+      elem[event] = fn;
113
+    }
114
+  }
115
+
116
+  function removeEvent(elem, event, fn) {
117
+    if (elem.removeEventListener != null) {
118
+      // W3C DOM
119
+      elem.removeEventListener(event, fn, false);
120
+    } else if (elem.detachEvent != null) {
121
+      // IE DOM
122
+      elem.detachEvent('on' + event, fn);
123
+    } else {
124
+      // fallback
125
+      delete elem[event];
126
+    }
127
+  }
128
+
129
+  function getInnerHeight() {
130
+    if ('innerHeight' in window) {
131
+      return window.innerHeight;
132
+    }
133
+
134
+    return document.documentElement.clientHeight;
135
+  }
136
+
137
+  // Minimalistic WeakMap shim, just in case.
138
+  var WeakMap = window.WeakMap || window.MozWeakMap || function () {
139
+    function WeakMap() {
140
+      _classCallCheck(this, WeakMap);
141
+
142
+      this.keys = [];
143
+      this.values = [];
144
+    }
145
+
146
+    _createClass(WeakMap, [{
147
+      key: 'get',
148
+      value: function get(key) {
149
+        for (var i = 0; i < this.keys.length; i++) {
150
+          var item = this.keys[i];
151
+          if (item === key) {
152
+            return this.values[i];
153
+          }
154
+        }
155
+        return undefined;
156
+      }
157
+    }, {
158
+      key: 'set',
159
+      value: function set(key, value) {
160
+        for (var i = 0; i < this.keys.length; i++) {
161
+          var item = this.keys[i];
162
+          if (item === key) {
163
+            this.values[i] = value;
164
+            return this;
165
+          }
166
+        }
167
+        this.keys.push(key);
168
+        this.values.push(value);
169
+        return this;
170
+      }
171
+    }]);
172
+
173
+    return WeakMap;
174
+  }();
175
+
176
+  // Dummy MutationObserver, to avoid raising exceptions.
177
+  var MutationObserver = window.MutationObserver || window.WebkitMutationObserver || window.MozMutationObserver || (_temp = _class = function () {
178
+    function MutationObserver() {
179
+      _classCallCheck(this, MutationObserver);
180
+
181
+      if (typeof console !== 'undefined' && console !== null) {
182
+        console.warn('MutationObserver is not supported by your browser.');
183
+        console.warn('WOW.js cannot detect dom mutations, please call .sync() after loading new content.');
184
+      }
185
+    }
186
+
187
+    _createClass(MutationObserver, [{
188
+      key: 'observe',
189
+      value: function observe() {}
190
+    }]);
191
+
192
+    return MutationObserver;
193
+  }(), _class.notSupported = true, _temp);
194
+
195
+  // getComputedStyle shim, from http://stackoverflow.com/a/21797294
196
+  var getComputedStyle = window.getComputedStyle || function getComputedStyle(el) {
197
+    var getComputedStyleRX = /(\-([a-z]){1})/g;
198
+    return {
199
+      getPropertyValue: function getPropertyValue(prop) {
200
+        if (prop === 'float') {
201
+          prop = 'styleFloat';
202
+        }
203
+        if (getComputedStyleRX.test(prop)) {
204
+          prop.replace(getComputedStyleRX, function (_, _char) {
205
+            return _char.toUpperCase();
206
+          });
207
+        }
208
+        var currentStyle = el.currentStyle;
209
+
210
+        return (currentStyle != null ? currentStyle[prop] : void 0) || null;
211
+      }
212
+    };
213
+  };
214
+
215
+  var WOW = function () {
216
+    function WOW() {
217
+      var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
218
+
219
+      _classCallCheck(this, WOW);
220
+
221
+      this.defaults = {
222
+        boxClass: 'wow',
223
+        animateClass: 'animated',
224
+        offset: 0,
225
+        mobile: true,
226
+        live: true,
227
+        callback: null,
228
+        scrollContainer: null,
229
+        resetAnimation: true
230
+      };
231
+
232
+      this.animate = function animateFactory() {
233
+        if ('requestAnimationFrame' in window) {
234
+          return function (callback) {
235
+            return window.requestAnimationFrame(callback);
236
+          };
237
+        }
238
+        return function (callback) {
239
+          return callback();
240
+        };
241
+      }();
242
+
243
+      this.vendors = ['moz', 'webkit'];
244
+
245
+      this.start = this.start.bind(this);
246
+      this.resetAnimation = this.resetAnimation.bind(this);
247
+      this.scrollHandler = this.scrollHandler.bind(this);
248
+      this.scrollCallback = this.scrollCallback.bind(this);
249
+      this.scrolled = true;
250
+      this.config = extend(options, this.defaults);
251
+      if (options.scrollContainer != null) {
252
+        this.config.scrollContainer = document.querySelector(options.scrollContainer);
253
+      }
254
+      // Map of elements to animation names:
255
+      this.animationNameCache = new WeakMap();
256
+      this.wowEvent = createEvent(this.config.boxClass);
257
+    }
258
+
259
+    _createClass(WOW, [{
260
+      key: 'init',
261
+      value: function init() {
262
+        this.element = window.document.documentElement;
263
+        if (isIn(document.readyState, ['interactive', 'complete'])) {
264
+          this.start();
265
+        } else {
266
+          addEvent(document, 'DOMContentLoaded', this.start);
267
+        }
268
+        this.finished = [];
269
+      }
270
+    }, {
271
+      key: 'start',
272
+      value: function start() {
273
+        var _this = this;
274
+
275
+        this.stopped = false;
276
+        this.boxes = [].slice.call(this.element.querySelectorAll('.' + this.config.boxClass));
277
+        this.all = this.boxes.slice(0);
278
+        if (this.boxes.length) {
279
+          if (this.disabled()) {
280
+            this.resetStyle();
281
+          } else {
282
+            for (var i = 0; i < this.boxes.length; i++) {
283
+              var box = this.boxes[i];
284
+              this.applyStyle(box, true);
285
+            }
286
+          }
287
+        }
288
+        if (!this.disabled()) {
289
+          addEvent(this.config.scrollContainer || window, 'scroll', this.scrollHandler);
290
+          addEvent(window, 'resize', this.scrollHandler);
291
+          this.interval = setInterval(this.scrollCallback, 50);
292
+        }
293
+        if (this.config.live) {
294
+          var mut = new MutationObserver(function (records) {
295
+            for (var j = 0; j < records.length; j++) {
296
+              var record = records[j];
297
+              for (var k = 0; k < record.addedNodes.length; k++) {
298
+                var node = record.addedNodes[k];
299
+                _this.doSync(node);
300
+              }
301
+            }
302
+            return undefined;
303
+          });
304
+          mut.observe(document.body, {
305
+            childList: true,
306
+            subtree: true
307
+          });
308
+        }
309
+      }
310
+    }, {
311
+      key: 'stop',
312
+      value: function stop() {
313
+        this.stopped = true;
314
+        removeEvent(this.config.scrollContainer || window, 'scroll', this.scrollHandler);
315
+        removeEvent(window, 'resize', this.scrollHandler);
316
+        if (this.interval != null) {
317
+          clearInterval(this.interval);
318
+        }
319
+      }
320
+    }, {
321
+      key: 'sync',
322
+      value: function sync() {
323
+        if (MutationObserver.notSupported) {
324
+          this.doSync(this.element);
325
+        }
326
+      }
327
+    }, {
328
+      key: 'doSync',
329
+      value: function doSync(element) {
330
+        if (typeof element === 'undefined' || element === null) {
331
+          element = this.element;
332
+        }
333
+        if (element.nodeType !== 1) {
334
+          return;
335
+        }
336
+        element = element.parentNode || element;
337
+        var iterable = element.querySelectorAll('.' + this.config.boxClass);
338
+        for (var i = 0; i < iterable.length; i++) {
339
+          var box = iterable[i];
340
+          if (!isIn(box, this.all)) {
341
+            this.boxes.push(box);
342
+            this.all.push(box);
343
+            if (this.stopped || this.disabled()) {
344
+              this.resetStyle();
345
+            } else {
346
+              this.applyStyle(box, true);
347
+            }
348
+            this.scrolled = true;
349
+          }
350
+        }
351
+      }
352
+    }, {
353
+      key: 'show',
354
+      value: function show(box) {
355
+        this.applyStyle(box);
356
+        box.className = box.className + ' ' + this.config.animateClass;
357
+        if (this.config.callback != null) {
358
+          this.config.callback(box);
359
+        }
360
+        emitEvent(box, this.wowEvent);
361
+
362
+        if (this.config.resetAnimation) {
363
+          addEvent(box, 'animationend', this.resetAnimation);
364
+          addEvent(box, 'oanimationend', this.resetAnimation);
365
+          addEvent(box, 'webkitAnimationEnd', this.resetAnimation);
366
+          addEvent(box, 'MSAnimationEnd', this.resetAnimation);
367
+        }
368
+
369
+        return box;
370
+      }
371
+    }, {
372
+      key: 'applyStyle',
373
+      value: function applyStyle(box, hidden) {
374
+        var _this2 = this;
375
+
376
+        var duration = box.getAttribute('data-wow-duration');
377
+        var delay = box.getAttribute('data-wow-delay');
378
+        var iteration = box.getAttribute('data-wow-iteration');
379
+
380
+        return this.animate(function () {
381
+          return _this2.customStyle(box, hidden, duration, delay, iteration);
382
+        });
383
+      }
384
+    }, {
385
+      key: 'resetStyle',
386
+      value: function resetStyle() {
387
+        for (var i = 0; i < this.boxes.length; i++) {
388
+          var box = this.boxes[i];
389
+          box.style.visibility = 'visible';
390
+        }
391
+        return undefined;
392
+      }
393
+    }, {
394
+      key: 'resetAnimation',
395
+      value: function resetAnimation(event) {
396
+        if (event.type.toLowerCase().indexOf('animationend') >= 0) {
397
+          var target = event.target || event.srcElement;
398
+          target.className = target.className.replace(this.config.animateClass, '').trim();
399
+        }
400
+      }
401
+    }, {
402
+      key: 'customStyle',
403
+      value: function customStyle(box, hidden, duration, delay, iteration) {
404
+        if (hidden) {
405
+          this.cacheAnimationName(box);
406
+        }
407
+        box.style.visibility = hidden ? 'hidden' : 'visible';
408
+
409
+        if (duration) {
410
+          this.vendorSet(box.style, { animationDuration: duration });
411
+        }
412
+        if (delay) {
413
+          this.vendorSet(box.style, { animationDelay: delay });
414
+        }
415
+        if (iteration) {
416
+          this.vendorSet(box.style, { animationIterationCount: iteration });
417
+        }
418
+        this.vendorSet(box.style, { animationName: hidden ? 'none' : this.cachedAnimationName(box) });
419
+
420
+        return box;
421
+      }
422
+    }, {
423
+      key: 'vendorSet',
424
+      value: function vendorSet(elem, properties) {
425
+        for (var name in properties) {
426
+          if (properties.hasOwnProperty(name)) {
427
+            var value = properties[name];
428
+            elem['' + name] = value;
429
+            for (var i = 0; i < this.vendors.length; i++) {
430
+              var vendor = this.vendors[i];
431
+              elem['' + vendor + name.charAt(0).toUpperCase() + name.substr(1)] = value;
432
+            }
433
+          }
434
+        }
435
+      }
436
+    }, {
437
+      key: 'vendorCSS',
438
+      value: function vendorCSS(elem, property) {
439
+        var style = getComputedStyle(elem);
440
+        var result = style.getPropertyCSSValue(property);
441
+        for (var i = 0; i < this.vendors.length; i++) {
442
+          var vendor = this.vendors[i];
443
+          result = result || style.getPropertyCSSValue('-' + vendor + '-' + property);
444
+        }
445
+        return result;
446
+      }
447
+    }, {
448
+      key: 'animationName',
449
+      value: function animationName(box) {
450
+        var aName = void 0;
451
+        try {
452
+          aName = this.vendorCSS(box, 'animation-name').cssText;
453
+        } catch (error) {
454
+          // Opera, fall back to plain property value
455
+          aName = getComputedStyle(box).getPropertyValue('animation-name');
456
+        }
457
+
458
+        if (aName === 'none') {
459
+          return ''; // SVG/Firefox, unable to get animation name?
460
+        }
461
+
462
+        return aName;
463
+      }
464
+    }, {
465
+      key: 'cacheAnimationName',
466
+      value: function cacheAnimationName(box) {
467
+        // https://bugzilla.mozilla.org/show_bug.cgi?id=921834
468
+        // box.dataset is not supported for SVG elements in Firefox
469
+        return this.animationNameCache.set(box, this.animationName(box));
470
+      }
471
+    }, {
472
+      key: 'cachedAnimationName',
473
+      value: function cachedAnimationName(box) {
474
+        return this.animationNameCache.get(box);
475
+      }
476
+    }, {
477
+      key: 'scrollHandler',
478
+      value: function scrollHandler() {
479
+        this.scrolled = true;
480
+      }
481
+    }, {
482
+      key: 'scrollCallback',
483
+      value: function scrollCallback() {
484
+        if (this.scrolled) {
485
+          this.scrolled = false;
486
+          var results = [];
487
+          for (var i = 0; i < this.boxes.length; i++) {
488
+            var box = this.boxes[i];
489
+            if (box) {
490
+              if (this.isVisible(box)) {
491
+                this.show(box);
492
+                continue;
493
+              }
494
+              results.push(box);
495
+            }
496
+          }
497
+          this.boxes = results;
498
+          if (!this.boxes.length && !this.config.live) {
499
+            this.stop();
500
+          }
501
+        }
502
+      }
503
+    }, {
504
+      key: 'offsetTop',
505
+      value: function offsetTop(element) {
506
+        // SVG elements don't have an offsetTop in Firefox.
507
+        // This will use their nearest parent that has an offsetTop.
508
+        // Also, using ('offsetTop' of element) causes an exception in Firefox.
509
+        while (element.offsetTop === undefined) {
510
+          element = element.parentNode;
511
+        }
512
+        var top = element.offsetTop;
513
+        while (element.offsetParent) {
514
+          element = element.offsetParent;
515
+          top += element.offsetTop;
516
+        }
517
+        return top;
518
+      }
519
+    }, {
520
+      key: 'isVisible',
521
+      value: function isVisible(box) {
522
+        var offset = box.getAttribute('data-wow-offset') || this.config.offset;
523
+        var viewTop = this.config.scrollContainer && this.config.scrollContainer.scrollTop || window.pageYOffset;
524
+        var viewBottom = viewTop + Math.min(this.element.clientHeight, getInnerHeight()) - offset;
525
+        var top = this.offsetTop(box);
526
+        var bottom = top + box.clientHeight;
527
+
528
+        return top <= viewBottom && bottom >= viewTop;
529
+      }
530
+    }, {
531
+      key: 'disabled',
532
+      value: function disabled() {
533
+        return !this.config.mobile && isMobile(navigator.userAgent);
534
+      }
535
+    }]);
536
+
537
+    return WOW;
538
+  }();
539
+
540
+  exports.default = WOW;
541
+  module.exports = exports['default'];
542
+});

+ 3
- 0
public/lib/wow/wow.min.js
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


BIN
public/webfonts/Playlist-Script.ttf.eot Datei anzeigen


+ 1102
- 0
public/webfonts/Playlist-Script.ttf.svg
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


BIN
public/webfonts/Playlist-Script.ttf.woff Datei anzeigen


BIN
public/webfonts/_DS_Store Datei anzeigen


+ 24
- 0
public/webfonts/install-a-webfont.txt Datei anzeigen

1
+Installing Webfonts
2
+
3
+1. Upload the files from this zip to your domain.
4
+2. Add this code to your website:
5
+
6
+@font-face {
7
+    font-family: 'Playlist-Script';
8
+    src:url('Playlist-Script.ttf.woff') format('woff'),
9
+        url('Playlist-Script.ttf.svg#Playlist-Script') format('svg'),
10
+        url('Playlist-Script.ttf.eot'),
11
+        url('Playlist-Script.ttf.eot?#iefix') format('embedded-opentype'); 
12
+    font-weight: normal;
13
+    font-style: normal;
14
+}
15
+3. Integrate the fonts into your CSS:
16
+Add the font name to your CSS styles. For example:
17
+
18
+h1 { 
19
+   font-family: 'Playlist-Script';
20
+}  
21
+
22
+Troubleshooting Webfonts
23
+1. You may be using the fonts on different domain or subdomain.
24
+2. Check if you have link the fonts properly in the CSS.

+ 6
- 6
src/App.vue Datei anzeigen

1
 <template>
1
 <template>
2
-  <div id="app">
2
+  <div id="app" style="overflow-x: hidden">
3
     <a v-if="!isLandingPage" href="#" class="back-to-top">
3
     <a v-if="!isLandingPage" href="#" class="back-to-top">
4
       <i class="fa fa-chevron-up"></i>
4
       <i class="fa fa-chevron-up"></i>
5
     </a>
5
     </a>
6
     <div v-if="!isLandingPage" class="click-closed"></div>
6
     <div v-if="!isLandingPage" class="click-closed"></div>
7
     <SearchTab v-if="!isLandingPage" />
7
     <SearchTab v-if="!isLandingPage" />
8
     <NavBar v-if="!isLandingPage" @routerGoTo="routerGoTo" />
8
     <NavBar v-if="!isLandingPage" @routerGoTo="routerGoTo" />
9
-    <div v-if="!isLandingPage" class="pushDown"></div>
9
+    <div v-if="!isLandingPage"></div>
10
     <router-view @setLandingPage="setLandingPage" />
10
     <router-view @setLandingPage="setLandingPage" />
11
-    <FooterSection v-if="!isLandingPage" class="margin-top" />
11
+    <FooterSection v-if="!isLandingPage" />
12
   </div>
12
   </div>
13
 </template>
13
 </template>
14
 
14
 
15
 <script>
15
 <script>
16
+/* eslint-disable */
16
 import SearchTab from "./components/shared/searchTab.vue";
17
 import SearchTab from "./components/shared/searchTab.vue";
17
 import NavBar from "./components/shared/navBar.vue";
18
 import NavBar from "./components/shared/navBar.vue";
18
 import FooterSection from "./components/shared/footerSection.vue";
19
 import FooterSection from "./components/shared/footerSection.vue";
29
     NavBar,
30
     NavBar,
30
     FooterSection
31
     FooterSection
31
   },
32
   },
33
+
32
   methods: {
34
   methods: {
33
     routerGoTo(goTo) {
35
     routerGoTo(goTo) {
34
       this.$router.push(goTo);
36
       this.$router.push(goTo);
41
 </script>
43
 </script>
42
 
44
 
43
 <style>
45
 <style>
46
+@import "../public/css/newStyle.css";
44
 button:hover {
47
 button:hover {
45
   cursor: pointer;
48
   cursor: pointer;
46
 }
49
 }
140
 .pushDown {
143
 .pushDown {
141
   height: 70px;
144
   height: 70px;
142
 }
145
 }
143
-.margin-top {
144
-  margin-top: 50px;
145
-}
146
 </style>
146
 </style>

+ 30
- 70
src/components/about/aboutTimeshare.vue Datei anzeigen

1
 <template>
1
 <template>
2
-  <!--/ About Star /-->
3
-  <section class="section-about">
4
-    <!-- eslint-disable max-len -->
5
-    <div class="container">
6
-      <div class="row">
7
-        <div class="col-sm-12">
8
-          <div class="about-img-box">
9
-            <img src="img/timeshare2.jpg" alt="About Timeshare" class="img-fluid title-img" />
10
-          </div>
11
-          <div class="sinse-box title-title">
12
-            <h3 class="sinse-title">Timeshare Resales</h3>
13
-          </div>
14
-        </div>
15
-        <div class="col-md-12 section-t8">
16
-          <div class="row">
17
-            <div class="col-lg-2 d-none d-lg-block">
18
-              <div class="title-vertical d-flex justify-content-start color-b">
19
-                <span>Uni-Vate Properties</span>
20
-              </div>
21
-            </div>
22
-            <div class="col-md-6 col-lg-5 section-md-t3">
23
-              <p class="color-text-a font-weight-bold" style="text-align:left;">
24
-                Uni-Vate Properties found that there was a desperate need for a reputable source for buyers and
25
-                sellers to turn to with their timeshare needs in South Africa. Over the
26
-                years, Uni-Vate has developed a treasure of networking alliances of professional
27
-                acquaintances and that has made timeshare resales a pleasure for both buyers and
28
-                sellers. We are fully equipped to assist with conventional timeshare requirements
29
-                and assure you of fast, efficient and personal service.
30
-              </p>
31
-              <p class="color-text-a" style="text-align:left;">
32
-                We strive to legitimize an industry that has fallen victim to scam artists
33
-                and unscrupulous sales tactics. Your best option for buying or selling a
34
-                timeshare resale week is through a real-estate company where an agent is
35
-                able to assist you with the sale from point of offer, to negotiation,
36
-                to conclusion, to successful payment and transfer.
37
-              </p>
38
-              <p class="color-text-a" style="text-align:left;">
39
-                Our goal for our sellers is to obtain the best price the market will bear
40
-                for their week/s. We do this by continually evaluating our marketplace,
41
-                educating the consumer, and encouraging sellers to price their properties
42
-                at competitive prices. This ensures buyers of well researched data to be able
43
-                to make informed decisions about their purchase which will provide their families
44
-                with hassle free future holidays.
45
-              </p>
46
-            </div>
47
-            <div class="col-md-6 col-lg-5">
48
-              <p class="color-text-b" style="text-align:left;">
49
-                Uni-Vate Properties facilitates the timeshare resale for a listing fee of
50
-                only R380 including VAT payable when listing your week/module. Transfer fees
51
-                vary per week depending on the share block but this will be confirmed on request
52
-                when making an offer on an interested week. Transfer fees are payable by the buyers.
53
-                List your week for sale or browse our already listed weeks available for easy access
54
-                to creating new holiday memories for the whole family.
55
-              </p>
56
-              <p>
57
-                <img
58
-                  src="img/timeshare.jpg"
59
-                  alt
60
-                  class="img-fluid"
61
-                  style="width:500px;height:330px; border-radius:10px"
62
-                />
63
-              </p>
64
-            </div>
65
-          </div>
66
-        </div>
67
-      </div>
68
-    </div>
69
-  </section>
70
-  <!--/ About End /-->
2
+  <div>
3
+    <carouselSection />
4
+    <main id="main">
5
+      <contentSection />
6
+      <testimonialSection
7
+        data-aos="fade-up"
8
+        data-aos-anchor-placement="center-bottom"
9
+        data-aos-delay="150"
10
+      />
11
+    </main>
12
+  </div>
71
 </template>
13
 </template>
14
+
72
 <script>
15
 <script>
73
-export default {};
16
+/* eslint-disable */
17
+import carouselSection from "./aboutTimeshareCarouselSection";
18
+import contentSection from "./aboutTimeshareContentSection";
19
+import testimonialSection from "./aboutTimeshareTestimonialSection";
20
+import AOS from "aos";
21
+import "aos/dist/aos.css";
22
+export default {
23
+  created() {
24
+    AOS.init();
25
+  },
26
+  components: {
27
+    carouselSection,
28
+    contentSection,
29
+    testimonialSection
30
+  }
31
+};
74
 </script>
32
 </script>
33
+
34
+<style lang="scss" scoped></style>

+ 50
- 0
src/components/about/aboutTimeshareCarouselSection.vue Datei anzeigen

1
+<template>
2
+  <section id="intro">
3
+    <div class="container">
4
+      <div class="row">
5
+        <div align="left" class="col-sm-12 col-md-8">
6
+          <div class="intro-content box">
7
+            <h2>About Timeshare Resales</h2>
8
+            <p>
9
+              Uni-Vate Properties found that there was a desperate need for a reputable source for
10
+              buyers and sellers to turn to with their timeshare needs in South Africa.
11
+            </p>
12
+          </div>
13
+        </div>
14
+      </div>
15
+    </div>
16
+
17
+    <carousel
18
+      :nav="false"
19
+      :dots="false"
20
+      :items="1"
21
+      :autoplay="true"
22
+      :loop="true"
23
+      id="intro-carousel"
24
+      style="margin-top:-50px"
25
+      :responsive="{ 0: { items: 1, nav: false }, 600: { items: 1, nav: false } }"
26
+    >
27
+      <img class="item" src="../../../public/img/intro-carousel/timeshare-1.jpg" alt="" />
28
+      <img class="item" src="../../../public/img/intro-carousel/timeshare-2.jpg" alt="" />
29
+      <img class="item" src="../../../public/img/intro-carousel/timeshare-3.jpg" alt="" />
30
+      <img class="item" src="../../../public/img/intro-carousel/timeshare-4.jpg" alt="" />
31
+      <img class="item" src="../../../public/img/intro-carousel/timeshare-5.jpg" alt="" />
32
+      <img class="item" src="../../../public/img/intro-carousel/timeshare-6.jpg" alt="" />
33
+    </carousel>
34
+
35
+    <div id="intro-carousel" class="owl-carousel"></div>
36
+  </section>
37
+</template>
38
+
39
+<script>
40
+/* eslint-disable */
41
+
42
+import carousel from "vue-owl-carousel";
43
+export default {
44
+  components: {
45
+    carousel
46
+  }
47
+};
48
+</script>
49
+
50
+<style lang="scss" scoped></style>

+ 75
- 0
src/components/about/aboutTimeshareContentSection.vue Datei anzeigen

1
+<template>
2
+  <section id="services">
3
+    <div class="container">
4
+      <div class="row">
5
+        <div class="col-lg-4" data-aos="fade-right">
6
+          <p>
7
+            Over the years, Uni-Vate has developed a treasure of networking alliances of
8
+            professional acquaintances and that has made timeshare resales a pleasure for both
9
+            buyers and sellers.
10
+          </p>
11
+          <h3>
12
+            We are fully equipped to assist with conventional timeshare requirements and assure you
13
+            of fast, efficient and personal service.
14
+          </h3>
15
+          <p>
16
+            We strive to legitimize an industry that has fallen victim to scam artists and
17
+            unscrupulous sales tactics. Your best option for buying or selling a timeshare resale
18
+            week is through a real-estate company where an agent is able to assist you with the sale
19
+            from point of offer, to negotiation, to conclusion, to successful payment and transfer.
20
+          </p>
21
+          <p>
22
+            <strong
23
+              >Our goal for our sellers is to obtain the best price the market will bear for their
24
+              week/s.</strong
25
+            >
26
+          </p>
27
+          <p>
28
+            We do this by continually evaluating our marketplace, educating the consumer, and
29
+            encouraging sellers to price their properties at competitive prices. This ensures buyers
30
+            of well researched data to be able to make informed decisions about their purchase which
31
+            will provide their families with hassle free future holidays.
32
+          </p>
33
+          <br />
34
+        </div>
35
+        <div class="col-lg-8" data-aos="fade-left">
36
+          <p>
37
+            <strong
38
+              >Transfer fees vary per week depending on the share block but this will be confirmed
39
+              on request when making an offer on an interested week.</strong
40
+            >
41
+          </p>
42
+          <img src="../../../public/img/timeshare-pic.png" width="100%" />
43
+          <img src="../../../public/img/strip.png" width="100%" /><br /><br />
44
+          <p>
45
+            Transfer fees are payable by the buyers. List your week for sale or browse our already
46
+            listed weeks available for easy access to creating new holiday memories for the whole
47
+            family.
48
+          </p>
49
+          <br />
50
+        </div>
51
+      </div>
52
+      <div class="row" data-aos="fade-down">
53
+        <div class="col-lg-12">
54
+          <h3>
55
+            Uni-Vate Properties facilitates the timeshare resale for a listing fee of only R380
56
+            including VAT payable when listing your week/module.
57
+          </h3>
58
+          <br />
59
+        </div>
60
+      </div>
61
+    </div>
62
+  </section>
63
+</template>
64
+
65
+<script>
66
+import AOS from "aos";
67
+import "aos/dist/aos.css";
68
+export default {
69
+  created() {
70
+    AOS.init();
71
+  }
72
+};
73
+</script>
74
+
75
+<style lang="scss" scoped></style>

+ 164
- 0
src/components/about/aboutTimeshareTestimonialSection.vue Datei anzeigen

1
+<template>
2
+  <section id="testimonials">
3
+    <div class="container">
4
+      <div class="section-header">
5
+        <h2>Testimonials</h2>
6
+      </div>
7
+
8
+      <carousel
9
+        :nav="false"
10
+        :dots="false"
11
+        :items="1"
12
+        :autoplay="true"
13
+        :loop="true"
14
+        id="intro-carousel"
15
+        style="margin-top:-50px"
16
+        :responsive="{ 0: { items: 1, nav: false }, 600: { items: 1, nav: false } }"
17
+        class="mt-3"
18
+      >
19
+        <div class="row">
20
+          <div class="col-lg-6">
21
+            <div>
22
+              <img src="img/testimonial-1.png" alt="" />
23
+            </div>
24
+          </div>
25
+
26
+          <div class="col-lg-6">
27
+            <div class="content">
28
+              <div class="row">
29
+                <div align="center" class="col">
30
+                  <br /><img style="width: 85px" src="img/quote.png" alt="" /><br />
31
+                </div>
32
+              </div>
33
+              <div class="row">
34
+                <div class="col">
35
+                  <p>
36
+                    Loved my stay at Crystal Springs. Appreciated the proffesionalism and
37
+                    friendliness of the staff. Thoroughly enjoyed the hike, game drive, jaccuzzi,
38
+                    heated pool, steam room and even the trampolines. Our chalet was in stellar
39
+                    condition. The heaters, extra blankets and fire place ensured we kept warm and
40
+                    toasty during the cold evenings. The food at the restaurant was delicious, and
41
+                    the experience was made even better by the friendly waitress who served us.
42
+                    Arriving to find Ferreiro Roche and Champagne in our chalet was the cherry on
43
+                    top. I would wholeheartedly recommend this resort any day. Well done Crystal
44
+                    Springs!
45
+                  </p>
46
+                  <h5>Anati Bacela</h5>
47
+                  <p>- on visiting Crystal Springs</p>
48
+                </div>
49
+              </div>
50
+            </div>
51
+          </div>
52
+        </div>
53
+
54
+        <div class="row">
55
+          <div class="col-lg-6">
56
+            <div>
57
+              <img src="img/testimonial-2.png" alt="" />
58
+            </div>
59
+          </div>
60
+
61
+          <div class="col-lg-6">
62
+            <div class="content">
63
+              <div class="row">
64
+                <div align="center" class="col">
65
+                  <br /><img style="width: 85px" src="img/quote.png" alt="" /><br />
66
+                </div>
67
+              </div>
68
+              <div class="row">
69
+                <div class="col">
70
+                  <p>
71
+                    We have been going to Ngwenya for 25 years or more. every year we have had
72
+                    wonderful sightings from our verandah. To me it is paradise on earth and we
73
+                    never grow tired of it. Wonderful play area for people of all ages, the gardens
74
+                    are well kept, the restaurant is good and the chalets are well maintained. Most
75
+                    of all what I love about Ngwenya is it's peaceful and tranquil atmosphere and
76
+                    the close proximity to our amazing wild life We will continue going for many
77
+                    more years
78
+                  </p>
79
+                  <h5>Linda Lewis</h5>
80
+                  <p>- on visiting Ngwenya Lodge</p>
81
+                </div>
82
+              </div>
83
+            </div>
84
+          </div>
85
+        </div>
86
+
87
+        <div class="row">
88
+          <div class="col-lg-6">
89
+            <div>
90
+              <img src="img/testimonial-3.2.jpg" alt="" />
91
+            </div>
92
+          </div>
93
+
94
+          <div class="col-lg-6">
95
+            <div class="content">
96
+              <div class="row">
97
+                <div align="center" class="col">
98
+                  <br /><img style="width: 85px" src="img/quote.png" alt="" /><br />
99
+                </div>
100
+              </div>
101
+              <div class="row">
102
+                <div class="col">
103
+                  <p>
104
+                    Great experience, I loved the place, so amazing and we saw many more animals.
105
+                    Had different kinds of visitors everyday (Impala, wild pig, monkeys, birds and
106
+                    more). The nature was great with all mountains and valleys and lakes. Every
107
+                    corner had a new moment. The staff was very friendly and helpful at all times.
108
+                    Thanks to the restaurant staff for helping me organizing my Husband's birthday
109
+                    surprise dinner. Best memories ever. Looking forward to my next visit with
110
+                    friends and more family members.
111
+                  </p>
112
+                  <h5>Sophie Adewale</h5>
113
+                  <p>- on visiting Mabalingwe Nature Reserve</p>
114
+                </div>
115
+              </div>
116
+            </div>
117
+          </div>
118
+        </div>
119
+
120
+        <div class="row">
121
+          <div class="col-lg-6">
122
+            <div>
123
+              <img src="img/testimonial-4.png" alt="" />
124
+            </div>
125
+          </div>
126
+
127
+          <div class="col-lg-6">
128
+            <div class="content">
129
+              <div class="row">
130
+                <div align="center" class="col">
131
+                  <br /><img style="width: 85px" src="img/quote.png" alt="" /><br />
132
+                </div>
133
+              </div>
134
+              <div class="row">
135
+                <div class="col">
136
+                  <p>
137
+                    Everything!! Little Eden is like a secret jewel no one but yourself and your
138
+                    very best friends should know about, but at the same time it’s like discovering
139
+                    something so awesome you can never keep it to yourself. You have to tell the
140
+                    world!!!
141
+                  </p>
142
+                  <h5>Sisna & Andries Venter</h5>
143
+                  <p>- on visiting Little Eden</p>
144
+                </div>
145
+              </div>
146
+            </div>
147
+          </div>
148
+        </div>
149
+      </carousel>
150
+    </div>
151
+  </section>
152
+</template>
153
+
154
+<script>
155
+/* eslint-disable */
156
+import carousel from "vue-owl-carousel";
157
+export default {
158
+  components: {
159
+    carousel
160
+  }
161
+};
162
+</script>
163
+
164
+<style lang="scss" scoped></style>

+ 52
- 0
src/components/about/aboutUsCarouselSection.vue Datei anzeigen

1
+<template>
2
+  <section id="intro">
3
+    <div class="container">
4
+      <div class="row">
5
+        <div align="left" class="col-sm-12 col-md-8">
6
+          <div class="intro-content box">
7
+            <h2>About Us</h2>
8
+            <p>
9
+              Uni-Vate Properties began in 2013 in Pretoria East with various properties in their
10
+              portfolio. Led by our Director, Delia 0' Conner, who has over 25 years of experience
11
+              in the timeshare industry, the move to conventional property sales and rentals was an
12
+              easy transition for the Uni-Vate team.
13
+            </p>
14
+          </div>
15
+        </div>
16
+      </div>
17
+    </div>
18
+
19
+    <carousel
20
+      :nav="false"
21
+      :dots="false"
22
+      :items="1"
23
+      :autoplay="true"
24
+      :loop="true"
25
+      id="intro-carousel"
26
+      style="margin-top:-50px"
27
+      :responsive="{ 0: { items: 1, nav: false }, 600: { items: 1, nav: false } }"
28
+    >
29
+      <img class="item" src="../../../public/img/intro-carousel/home-1.jpg" alt="" />
30
+      <img class="item" src="../../../public/img/intro-carousel/home-2.jpg" alt="" />
31
+      <img class="item" src="../../../public/img/intro-carousel/home-3.jpg" alt="" />
32
+      <img class="item" src="../../../public/img/intro-carousel/home-4.jpg" alt="" />
33
+      <img class="item" src="../../../public/img/intro-carousel/home-5.jpg" alt="" />
34
+      <img class="item" src="../../../public/img/intro-carousel/home-6.jpg" alt="" />
35
+    </carousel>
36
+
37
+    <div id="intro-carousel" class="owl-carousel"></div>
38
+  </section>
39
+</template>
40
+
41
+<script>
42
+/* eslint-disable */
43
+
44
+import carousel from "vue-owl-carousel";
45
+export default {
46
+  components: {
47
+    carousel
48
+  }
49
+};
50
+</script>
51
+
52
+<style lang="scss" scoped></style>

+ 68
- 0
src/components/about/aboutUsContentSection.vue Datei anzeigen

1
+<template>
2
+  <section id="services">
3
+    <div class="container">
4
+      <div class="row">
5
+        <div class="col-lg-6" data-aos="fade-right">
6
+          <p>
7
+            To date the team have processed many sales in the residential, share block and
8
+            commercial arenas within South Africa and are currently involved in the rental and
9
+            management of 40 commercial and 15 residential properties.
10
+          </p>
11
+          <p>
12
+            <strong
13
+              >The Uni-Vate support team consists of three highly qualified and experienced staff,
14
+              who have thirteen years' joint experience in the timeshare and property
15
+              industry.</strong
16
+            >
17
+          </p>
18
+          <p>
19
+            Owners seeking to sell their property understand the power of internet marketing and the
20
+            sophistication of target marketing to consumers who have shown an interest in buying
21
+            property. Buyers can save by purchasing from Owners advertising their property for sale
22
+            through Uni-Vate, using their website.
23
+          </p>
24
+          <p>
25
+            <strong
26
+              >Sellers across SA are able to list properties for a listing fee of R380 per property
27
+              listing which gives them exposure not only on the website, but on social media sites
28
+              also.</strong
29
+            >
30
+          </p>
31
+          <p>
32
+            Uni-Vate Properties is affiliated to the Estate Agents Board (EAAB) and also to the
33
+            Institute of Estate Agents South Africa (IEASA) and operates in compliance with the
34
+            Estate Agents Code of Conduct. This assures our clients of professional, ethical and
35
+            fair service at all times.
36
+          </p>
37
+          <br />
38
+        </div>
39
+
40
+        <div class="col-lg-6" data-aos="fade-left">
41
+          <h3>
42
+            Meeting the property needs of consumers is at the heart of what we do; whether it is
43
+            helping an Owner transition out of their property Ownership, or helping the buyer find
44
+            the property they have been looking for.
45
+          </h3>
46
+          <p>
47
+            So whether you would like to sell or rent out your: timeshare, home, industrial,
48
+            commercial, or vacant property or whether you would like to buy or rent a: timeshare,
49
+            home, industrial, commercial, or vacant property; Uni-Vate is able to assist you.
50
+          </p>
51
+          <img src="../../../public/img/logos.jpg" width="100%" /><br />
52
+        </div>
53
+      </div>
54
+    </div>
55
+  </section>
56
+</template>
57
+
58
+<script>
59
+import AOS from "aos";
60
+import "aos/dist/aos.css";
61
+export default {
62
+  created() {
63
+    AOS.init();
64
+  }
65
+};
66
+</script>
67
+
68
+<style lang="scss" scoped></style>

+ 14
- 102
src/components/about/aboutUsPage.vue Datei anzeigen

1
 <template>
1
 <template>
2
-  <!-- eslint-disable max-len -->
3
-  <section class="section-about">
4
-    <div class="container">
5
-      <div class="row">
6
-        <div class="col-sm-12">
7
-          <div class="about-img-box">
8
-            <img src="img/slide-about-1.jpg" alt class="img-fluid title-img" />
9
-          </div>
10
-          <div class="sinse-box title-title">
11
-            <h3 class="sinse-title">About Us</h3>
12
-          </div>
13
-        </div>
14
-        <div class="col-md-12 section-t8">
15
-          <div class="row">
16
-            <div class="col-lg-2 d-none d-lg-block">
17
-              <div class="title-vertical d-flex justify-content-start color-b">
18
-                <span>Uni-Vate Properties</span>
19
-              </div>
20
-            </div>
21
-            <div class="col-md-6 col-lg-5 section-md-t3">
22
-              <p class="color-text-a font-weight-bold" style="text-align:left;">
23
-                Uni-Vate Properties began in 2013 in Pretoria East with various properties in their portfolio.
24
-                Led by our Director, Delia O' Conner, who has over 25 years of experience in the timeshare industry,
25
-                the move to conventional property sales and rentals was an easy transition for the Uni-Vate team.
26
-              </p>
27
-              <p class="color-text-a" style="text-align:left;">
28
-                To date the team have processed many sales in the residential,
29
-                share block and commercial arenas within South Africa and are currently
30
-                involved in the rental and management of 40 commercial and 15 residential properties.
31
-                <br />
32
-                <br />The Uni-Vate support team consists of three highly qualified and experienced staff,
33
-                who have thirteen years' joint experience in the timeshare and property industry.
34
-              </p>
35
-              <p class="color-text-a" style="text-align:left;">
36
-                Owners seeking to sell their property understand the power of internet marketing
37
-                and the sophistication of target marketing to consumers who have shown an interest
38
-                in buying property. Buyers can save by purchasing from owners advertising their
39
-                property for sale through Uni-Vate, using their website.
40
-                <br />
41
-                <br />Sellers across SA are
42
-                able to list properties for a listing fee of R380 per property listing which gives
43
-                them exposure not only on the website, but on social media sites also.
44
-              </p>
45
-            </div>
46
-            <div class="col-md-6 col-lg-5">
47
-              <p class="color-text-a" style="text-align:left;">
48
-                Uni-Vate Properties is affiliated to the Estate Agents Board (EAAB) and also
49
-                to the Institute of Estate Agents South Africa (IEASA) and operates in compliance
50
-                with the Estate Agents Code of Conduct. This assures our clients of professional,
51
-                ethical and fair service at all times.
52
-              </p>
53
-              <p class="color-text-b" style="text-align:left;">
54
-                Meeting the property needs of consumers is at the heart of what we do;
55
-                whether it is helping an owner transition out of their property ownership, or
56
-                helping the buyer find the property they have been looking for.
57
-                So whether you would like to sell or rent out your: timeshare, home,
58
-                industrial, commercial, or vacant property or whether you would like to
59
-                buy or rent a: timeshare, home, industrial, commercial, or vacant property;
60
-                <br />
61
-                <strong>Uni-Vate is able to assist you.</strong>
62
-              </p>
63
-              <p>
64
-                <img
65
-                  src="img/plan2.jpg"
66
-                  alt
67
-                  class="img-fluid"
68
-                  style="width:450px;height:200px; border-radius:10px"
69
-                />
70
-              </p>
71
-            </div>
72
-          </div>
73
-          <hr />
74
-          <img
75
-            src="img/logos/nama.png"
76
-            alt
77
-            class="img-fluid"
78
-            style="width:140px;height:150px; border-radius:10px"
79
-          />
80
-          <img
81
-            src="img/logos/IEASA-logo.png"
82
-            alt
83
-            class="img-fluid"
84
-            style="width:380px;height:140px; border-radius:10px"
85
-          />
86
-          <img
87
-            src="img/logos/eaab.png"
88
-            alt
89
-            class="img-fluid"
90
-            style="width:180px;height:140px; border-radius:10px"
91
-          />
92
-        </div>
93
-      </div>
94
-    </div>
95
-    <br />
96
-  </section>
97
-  <!--/ About End /-->
2
+  <div>
3
+    <carouselSection />
4
+    <main id="main">
5
+      <contentSection />
6
+    </main>
7
+  </div>
98
 </template>
8
 </template>
99
 
9
 
100
 <script>
10
 <script>
11
+/* eslint-disable */
12
+import carouselSection from "./aboutUsCarouselSection";
13
+import contentSection from "./aboutUsContentSection";
101
 export default {
14
 export default {
102
-  created: () => {},
15
+  components: {
16
+    carouselSection,
17
+    contentSection
18
+  }
103
 };
19
 };
104
 </script>
20
 </script>
105
 
21
 
106
-<style scoped>
107
-.colorBlueTrans {
108
-  padding: 15px;
109
-}
110
-</style>
22
+<style lang="scss" scoped></style>

+ 21
- 22
src/components/admin/logs/SearchLogs.vue Datei anzeigen

1
 <template>
1
 <template>
2
   <!-- eslint-disable max-len -->
2
   <!-- eslint-disable max-len -->
3
-  <div>
3
+  <main id="main" style="margin-top:-20px; padding-bottom:50px">
4
     <div class="container">
4
     <div class="container">
5
-      <br />
6
       <div class="row">
5
       <div class="row">
7
         <div class="col-md-12 col-lg-8">
6
         <div class="col-md-12 col-lg-8">
8
-          <div class="title-box-d">
9
-            <h1 class="title-d" style="text-align:left; font-size: 250%">Search Log</h1>
7
+          <div class="section-header">
8
+            <h2>Search Logs</h2>
10
           </div>
9
           </div>
11
         </div>
10
         </div>
12
       </div>
11
       </div>
62
       </div>
61
       </div>
63
     </div>
62
     </div>
64
     <br />
63
     <br />
65
-  </div>
64
+  </main>
66
 </template>
65
 </template>
67
 
66
 
68
 <script>
67
 <script>
69
-import { mapState, mapActions, mapGetters } from 'vuex';
70
-import JsonExcel from 'vue-json-excel';
71
-import listView from '../../shared/listView.vue';
68
+import { mapState, mapActions, mapGetters } from "vuex";
69
+import JsonExcel from "vue-json-excel";
70
+import listView from "../../shared/listView.vue";
72
 
71
 
73
 export default {
72
 export default {
74
-  name: 'searchLog',
73
+  name: "searchLog",
75
   components: {
74
   components: {
76
     listView,
75
     listView,
77
-    JsonExcel,
76
+    JsonExcel
78
   },
77
   },
79
   data() {
78
   data() {
80
     return {
79
     return {
81
       exportFields: {
80
       exportFields: {
82
-        Date: 'date',
83
-        Time: 'time',
84
-        User: 'userName',
85
-        Type: 'type',
86
-        Field: 'property',
87
-        Value: 'value',
88
-      },
81
+        Date: "date",
82
+        Time: "time",
83
+        User: "userName",
84
+        Type: "type",
85
+        Field: "property",
86
+        Value: "value"
87
+      }
89
     };
88
     };
90
   },
89
   },
91
   methods: {
90
   methods: {
92
-    ...mapActions('searchLog', ['getPropertySearchLogs', 'clearFilter']),
91
+    ...mapActions("searchLog", ["getPropertySearchLogs", "clearFilter"])
93
   },
92
   },
94
   mounted() {
93
   mounted() {
95
     this.getPropertySearchLogs();
94
     this.getPropertySearchLogs();
96
   },
95
   },
97
   computed: {
96
   computed: {
98
-    ...mapState('searchLog', ['list', 'fields', 'filter']),
97
+    ...mapState("searchLog", ["list", "fields", "filter"]),
99
     ...mapGetters({
98
     ...mapGetters({
100
-      list: 'searchLog/filterList',
101
-    }),
102
-  },
99
+      list: "searchLog/filterList"
100
+    })
101
+  }
103
 };
102
 };
104
 </script>
103
 </script>

+ 36
- 38
src/components/admin/misc/carousel.vue Datei anzeigen

1
 <template>
1
 <template>
2
-  <div>
2
+  <main id="main" style="margin-top:-20px; padding-bottom:50px">
3
     <div class="container">
3
     <div class="container">
4
       <div class="container">
4
       <div class="container">
5
         <div class="row">
5
         <div class="row">
6
           <div class="col-md-12 col-lg-8">
6
           <div class="col-md-12 col-lg-8">
7
-            <div class="title-box-d">
8
-              <br />
9
-              <h1 class="title-d" style="text-align:left; font-size: 250%">Carousel Item</h1>
7
+            <div class="section-header">
8
+              <h2>Carousel</h2>
10
             </div>
9
             </div>
11
-            <br />
12
           </div>
10
           </div>
13
         </div>
11
         </div>
14
       </div>
12
       </div>
44
                         class="btn btn-b-n"
42
                         class="btn btn-b-n"
45
                         style="width: 150px; height:40px;"
43
                         style="width: 150px; height:40px;"
46
                         data-dismiss="modal"
44
                         data-dismiss="modal"
47
-                      >Close</button>
45
+                      >
46
+                        Close
47
+                      </button>
48
                     </div>
48
                     </div>
49
                   </div>
49
                   </div>
50
                 </div>
50
                 </div>
74
                 <span>{{ bedrooms }}</span>
74
                 <span>{{ bedrooms }}</span>
75
               </li>
75
               </li>
76
               <li class="d-flex justify-content-between">
76
               <li class="d-flex justify-content-between">
77
-                <strong>
78
-                  <i class="fa fa-users"></i>&nbsp&nbsp&nbspSleeps:
79
-                </strong>
77
+                <strong> <i class="fa fa-users"></i>&nbsp&nbsp&nbspSleeps: </strong>
80
                 <span>{{ sleeps }}</span>
78
                 <span>{{ sleeps }}</span>
81
               </li>
79
               </li>
82
               <li class="d-flex justify-content-between">
80
               <li class="d-flex justify-content-between">
83
-                <strong>
84
-                  <i class="fa fa-calendar"></i>&nbsp&nbsp&nbspCheck in:
85
-                </strong>
81
+                <strong> <i class="fa fa-calendar"></i>&nbsp&nbsp&nbspCheck in: </strong>
86
                 <span>{{ arrival }}</span>
82
                 <span>{{ arrival }}</span>
87
               </li>
83
               </li>
88
               <li class="d-flex justify-content-between">
84
               <li class="d-flex justify-content-between">
89
-                <strong>
90
-                  <i class="fa fa-calendar"></i>&nbsp&nbsp&nbspCheck out:
91
-                </strong>
85
+                <strong> <i class="fa fa-calendar"></i>&nbsp&nbsp&nbspCheck out: </strong>
92
                 <span>{{ departure }}</span>
86
                 <span>{{ departure }}</span>
93
               </li>
87
               </li>
94
             </ul>
88
             </ul>
118
             @click="SaveData()"
112
             @click="SaveData()"
119
             class="btn btn-b-n"
113
             class="btn btn-b-n"
120
             style="width: 85px; height:40px;"
114
             style="width: 85px; height:40px;"
121
-          >Save</button>
115
+          >
116
+            Save
117
+          </button>
122
           <button
118
           <button
123
             type="button"
119
             type="button"
124
             @click="Close()"
120
             @click="Close()"
125
             class="btn btn-b-n"
121
             class="btn btn-b-n"
126
             style="width: 85px; height:40px;"
122
             style="width: 85px; height:40px;"
127
-          >Close</button>
123
+          >
124
+            Close
125
+          </button>
128
         </div>
126
         </div>
129
       </div>
127
       </div>
130
     </div>
128
     </div>
131
-  </div>
129
+  </main>
132
 </template>
130
 </template>
133
 
131
 
134
 <script>
132
 <script>
135
-import { mapState, mapActions } from 'vuex';
136
-import Search from './carouselSearch.vue';
137
-import Images from '../../property/propertyImage.vue';
133
+import { mapState, mapActions } from "vuex";
134
+import Search from "./carouselSearch.vue";
135
+import Images from "../../property/propertyImage.vue";
138
 
136
 
139
 export default {
137
 export default {
140
-  name: 'CarouselItem',
138
+  name: "CarouselItem",
141
   components: {
139
   components: {
142
     Search,
140
     Search,
143
-    Images,
141
+    Images
144
   },
142
   },
145
   data() {
143
   data() {
146
     return {
144
     return {
147
-      selectedType: 'Timeshare',
148
-      propDescription: '',
149
-      bedrooms: '',
150
-      sleeps: '',
145
+      selectedType: "Timeshare",
146
+      propDescription: "",
147
+      bedrooms: "",
148
+      sleeps: "",
151
       arrival: Date,
149
       arrival: Date,
152
       departure: Date,
150
       departure: Date,
153
-      images: [],
151
+      images: []
154
     };
152
     };
155
   },
153
   },
156
   computed: {
154
   computed: {
157
-    ...mapState('carousel', ['carousel']),
158
-    ...mapState('property', ['propertyImages']),
155
+    ...mapState("carousel", ["carousel"]),
156
+    ...mapState("property", ["propertyImages"])
159
   },
157
   },
160
   mounted() {
158
   mounted() {
161
     this.getCarouselItem(this.$route.params.id);
159
     this.getCarouselItem(this.$route.params.id);
162
   },
160
   },
163
   methods: {
161
   methods: {
164
-    ...mapActions('carousel', ['saveCarouselItem', 'getCarouselItem']),
165
-    ...mapActions('property', ['getSavedPropertyImages']),
162
+    ...mapActions("carousel", ["saveCarouselItem", "getCarouselItem"]),
163
+    ...mapActions("property", ["getSavedPropertyImages"]),
166
     onSelected(item) {
164
     onSelected(item) {
167
-      if (this.selectedType === 'Timeshare') {
165
+      if (this.selectedType === "Timeshare") {
168
         this.carousel.header = item.resort.resortName;
166
         this.carousel.header = item.resort.resortName;
169
         this.bedrooms = item.bedrooms;
167
         this.bedrooms = item.bedrooms;
170
         this.sleeps = item.maxSleep;
168
         this.sleeps = item.maxSleep;
186
       this.images = values;
184
       this.images = values;
187
     },
185
     },
188
     Close() {
186
     Close() {
189
-      this.$router.push('/carousel');
187
+      this.$router.push("/carousel");
190
     },
188
     },
191
     SaveData() {
189
     SaveData() {
192
-      if (this.selectedType === 'Timeshare') {
190
+      if (this.selectedType === "Timeshare") {
193
         // eslint-disable-next-line no-plusplus
191
         // eslint-disable-next-line no-plusplus
194
         for (let i = 0; i < this.images.length; i++) {
192
         for (let i = 0; i < this.images.length; i++) {
195
           this.carousel.image = this.images[i];
193
           this.carousel.image = this.images[i];
197
       }
195
       }
198
       if (this.carousel.id === 0) {
196
       if (this.carousel.id === 0) {
199
         this.saveCarouselItem(this.carousel);
197
         this.saveCarouselItem(this.carousel);
200
-        this.$router.push('/carousel');
198
+        this.$router.push("/carousel");
201
       }
199
       }
202
       // Else update
200
       // Else update
203
-    },
204
-  },
201
+    }
202
+  }
205
 };
203
 };
206
 </script>
204
 </script>

+ 16
- 17
src/components/admin/misc/carouselList.vue Datei anzeigen

1
 <template>
1
 <template>
2
   <!-- eslint-disable max-len -->
2
   <!-- eslint-disable max-len -->
3
-  <div>
3
+  <main id="main" style="padding-bottom:50px; margin-top:-20px">
4
     <div class="container">
4
     <div class="container">
5
       <div class="container">
5
       <div class="container">
6
         <div class="row">
6
         <div class="row">
7
           <div class="col-md-12 col-lg-8">
7
           <div class="col-md-12 col-lg-8">
8
-            <div class="title-box-d">
9
-              <br />
10
-              <h1 class="title-d" style="text-align:left; font-size: 250%">Carousel Items</h1>
8
+            <div class="section-header">
9
+              <h2>Carousel Items</h2>
11
             </div>
10
             </div>
12
           </div>
11
           </div>
13
         </div>
12
         </div>
24
         @onDelete="Delete"
23
         @onDelete="Delete"
25
       />
24
       />
26
     </div>
25
     </div>
27
-  </div>
26
+  </main>
28
 </template>
27
 </template>
29
 
28
 
30
 <script>
29
 <script>
31
-import { mapState, mapActions } from 'vuex';
32
-import listView from '../../shared/listView.vue';
30
+import { mapState, mapActions } from "vuex";
31
+import listView from "../../shared/listView.vue";
33
 
32
 
34
 export default {
33
 export default {
35
-  name: 'CarouselList',
34
+  name: "CarouselList",
36
   components: {
35
   components: {
37
-    listView,
36
+    listView
38
   },
37
   },
39
   data() {
38
   data() {
40
     return {
39
     return {
41
-      columns: ['id', 'header', 'image'],
42
-      formats: ['', '', 'image'],
40
+      columns: ["id", "header", "image"],
41
+      formats: ["", "", "image"]
43
     };
42
     };
44
   },
43
   },
45
   methods: {
44
   methods: {
46
-    ...mapActions('carousel', ['getCarouselList', 'deleteCarousel']),
45
+    ...mapActions("carousel", ["getCarouselList", "deleteCarousel"]),
47
     New() {
46
     New() {
48
-      this.$router.push('/carousel/details/0');
47
+      this.$router.push("/carousel/details/0");
49
     },
48
     },
50
     Edit(itemID) {
49
     Edit(itemID) {
51
       this.$router.push({
50
       this.$router.push({
52
-        path: `/carousel/details/${itemID}`,
51
+        path: `/carousel/details/${itemID}`
53
       });
52
       });
54
     },
53
     },
55
     Delete(item) {
54
     Delete(item) {
56
       this.deleteCarousel(item.id);
55
       this.deleteCarousel(item.id);
57
-    },
56
+    }
58
   },
57
   },
59
   mounted() {
58
   mounted() {
60
     this.getCarouselList();
59
     this.getCarouselList();
61
   },
60
   },
62
   computed: {
61
   computed: {
63
-    ...mapState('carousel', ['carouselList']),
64
-  },
62
+    ...mapState("carousel", ["carouselList"])
63
+  }
65
 };
64
 };
66
 </script>
65
 </script>

+ 15
- 16
src/components/admin/property/propertyTypeList.vue Datei anzeigen

1
 <template>
1
 <template>
2
   <!-- eslint-disable max-len -->
2
   <!-- eslint-disable max-len -->
3
-  <div>
3
+  <main id="main" style="margin-top:-20px; padding-bottom: 50px">
4
     <div class="container">
4
     <div class="container">
5
-      <br />
6
       <div class="row">
5
       <div class="row">
7
         <div class="col-md-12 col-lg-8">
6
         <div class="col-md-12 col-lg-8">
8
-          <div class="title-box-d">
9
-            <h1 class="title-d" style="text-align:left; font-size: 250%">Property Types</h1>
7
+          <div class="section-header">
8
+            <h2>Property Types</h2>
10
           </div>
9
           </div>
11
         </div>
10
         </div>
12
       </div>
11
       </div>
25
       />
24
       />
26
     </div>
25
     </div>
27
     <br />
26
     <br />
28
-  </div>
27
+  </main>
29
 </template>
28
 </template>
30
 
29
 
31
 <script>
30
 <script>
32
-import { mapState, mapActions } from 'vuex';
33
-import listView from '../../shared/listView.vue';
31
+import { mapState, mapActions } from "vuex";
32
+import listView from "../../shared/listView.vue";
34
 
33
 
35
 export default {
34
 export default {
36
-  name: 'PropertyTypeList',
35
+  name: "PropertyTypeList",
37
   components: {
36
   components: {
38
-    listView,
37
+    listView
39
   },
38
   },
40
   data() {
39
   data() {
41
     return {
40
     return {
42
-      columns: ['propertyUsageType', 'description'],
41
+      columns: ["propertyUsageType", "description"]
43
     };
42
     };
44
   },
43
   },
45
   methods: {
44
   methods: {
46
-    ...mapActions('propertyTypes', ['getPropertyTypes', 'deletePropertyType']),
45
+    ...mapActions("propertyTypes", ["getPropertyTypes", "deletePropertyType"]),
47
     New() {
46
     New() {
48
-      this.$router.push('/propertyType/new');
47
+      this.$router.push("/propertyType/new");
49
     },
48
     },
50
     Edit(item) {
49
     Edit(item) {
51
       this.$router.push({
50
       this.$router.push({
52
-        path: `/propertyType/${item.id}`,
51
+        path: `/propertyType/${item.id}`
53
       });
52
       });
54
     },
53
     },
55
     Delete(item) {
54
     Delete(item) {
56
       this.deletePropertyType(item.id);
55
       this.deletePropertyType(item.id);
57
-    },
56
+    }
58
   },
57
   },
59
   mounted() {
58
   mounted() {
60
     this.getPropertyTypes();
59
     this.getPropertyTypes();
61
   },
60
   },
62
   computed: {
61
   computed: {
63
-    ...mapState('propertyTypes', ['propertyTypes']),
64
-  },
62
+    ...mapState("propertyTypes", ["propertyTypes"])
63
+  }
65
 };
64
 };
66
 </script>
65
 </script>

+ 14
- 17
src/components/admin/property/userDefinedGroupsPage.vue Datei anzeigen

1
 <template>
1
 <template>
2
   <!-- eslint-disable max-len -->
2
   <!-- eslint-disable max-len -->
3
-  <div>
3
+  <main id="main" style="margin-top:-20px; padding-bottom:50px">
4
     <div class="container">
4
     <div class="container">
5
-      <br />
6
       <div class="row">
5
       <div class="row">
7
         <div class="col-md-12 col-lg-8">
6
         <div class="col-md-12 col-lg-8">
8
-          <div class="title-box-d">
9
-            <h1 class="title-d" style="text-align:left; font-size: 250%">
10
-              Property User Defined Groups
11
-            </h1>
7
+          <div class="section-header">
8
+            <h2>Property User Defined Groups</h2>
12
           </div>
9
           </div>
13
         </div>
10
         </div>
14
       </div>
11
       </div>
29
       </div>
26
       </div>
30
     </div>
27
     </div>
31
     <br />
28
     <br />
32
-  </div>
29
+  </main>
33
 </template>
30
 </template>
34
 <script>
31
 <script>
35
-import { mapState, mapActions } from 'vuex';
36
-import listView from '../../shared/listView.vue';
32
+import { mapState, mapActions } from "vuex";
33
+import listView from "../../shared/listView.vue";
37
 
34
 
38
 export default {
35
 export default {
39
-  name: 'UserDefinedGroup',
36
+  name: "UserDefinedGroup",
40
   components: {
37
   components: {
41
-    listView,
38
+    listView
42
   },
39
   },
43
   data() {
40
   data() {
44
     return {
41
     return {
45
-      columns: ['description', 'propertyUsageType', 'rank'],
42
+      columns: ["description", "propertyUsageType", "rank"]
46
     };
43
     };
47
   },
44
   },
48
   mounted() {
45
   mounted() {
49
     this.getUserDefinedGroups();
46
     this.getUserDefinedGroups();
50
   },
47
   },
51
   computed: {
48
   computed: {
52
-    ...mapState('propertyAdmin', ['userDefinedGroups']),
49
+    ...mapState("propertyAdmin", ["userDefinedGroups"])
53
   },
50
   },
54
   methods: {
51
   methods: {
55
-    ...mapActions('propertyAdmin', ['getUserDefinedGroups', 'deleteUserDefinedGroup']),
52
+    ...mapActions("propertyAdmin", ["getUserDefinedGroups", "deleteUserDefinedGroup"]),
56
     New() {
53
     New() {
57
-      this.$router.push('/userDefinedGroups/userDefinedGroup');
54
+      this.$router.push("/userDefinedGroups/userDefinedGroup");
58
     },
55
     },
59
     Edit(item) {
56
     Edit(item) {
60
       this.$router.push(`/userDefinedGroups/userDefinedGroup/${item.id}`);
57
       this.$router.push(`/userDefinedGroups/userDefinedGroup/${item.id}`);
64
         this.userDefinedGroups.pop(item);
61
         this.userDefinedGroups.pop(item);
65
       }
62
       }
66
       this.deleteUserDefinedGroup(item.id);
63
       this.deleteUserDefinedGroup(item.id);
67
-    },
68
-  },
64
+    }
65
+  }
69
 };
66
 };
70
 </script>
67
 </script>

+ 20
- 28
src/components/admin/status/changeLogPage.vue Datei anzeigen

1
 <template>
1
 <template>
2
-  <!-- <section class="intro-single"> -->
3
-  <div class="container">
4
-    <br />
5
-    <br />
6
-    <br />
7
-    <br />
8
-    <div class="row">
9
-      <div class="col-md-12 col-lg-8">
10
-        <!-- <div class="title-single-box"> -->
11
-        <!-- <h1 class="title-single" style="text-align:left;">Change Log</h1> -->
12
-        <!-- </div> -->
13
-        <div class="title-box-d">
14
-          <h1 class="title-d" style="text-align:left; font-size: 250%">Change Log</h1>
2
+  <main id="main" style="margin-top:-20px; padding-bottom:50px">
3
+    <!-- <section class="intro-single"> -->
4
+    <div class="container">
5
+      <div class="row">
6
+        <div class="col-md-12 col-lg-8">
7
+          <div class="section-header">
8
+            <h2>Change Log</h2>
9
+          </div>
15
         </div>
10
         </div>
16
-        <br />
17
       </div>
11
       </div>
12
+      <div id="table" class="col-xs-12 table-responsive">
13
+        <datatable :columns="columns" :data="rows"></datatable>
14
+      </div>
15
+      <br />
18
     </div>
16
     </div>
19
-    <div id="table" class="col-xs-12 table-responsive">
20
-      <datatable :columns="columns" :data="rows"></datatable>
21
-    </div>
22
-    <br />
23
-  </div>
24
 
17
 
25
-  <!-- </section> -->
18
+    <!-- </section> -->
19
+  </main>
26
 </template>
20
 </template>
27
 <script>
21
 <script>
28
-import { mapState, mapActions } from 'vuex';
22
+import { mapState, mapActions } from "vuex";
29
 
23
 
30
 export default {
24
 export default {
31
-  name: 'changeLogPage',
25
+  name: "changeLogPage",
32
   created() {
26
   created() {
33
     this.getchangeLogPage();
27
     this.getchangeLogPage();
34
   },
28
   },
35
   computed: {
29
   computed: {
36
-    ...mapState('status', ['changeLogPage']),
30
+    ...mapState("status", ["changeLogPage"])
37
   },
31
   },
38
   methods: {
32
   methods: {
39
-    ...mapActions('status', ['getchangeLogPage']),
40
-  },
33
+    ...mapActions("status", ["getchangeLogPage"])
34
+  }
41
 };
35
 };
42
 </script>
36
 </script>
43
 
37
 
44
-
45
-<style>
46
-</style>
38
+<style></style>

+ 12
- 13
src/components/admin/status/statusPage.vue Datei anzeigen

1
 <template>
1
 <template>
2
-  <div>
2
+  <main id="main" style="margin-top:-20px; padding-bottom:50px">
3
     <!-- <section class="intro-single"> -->
3
     <!-- <section class="intro-single"> -->
4
     <div class="container">
4
     <div class="container">
5
       <br />
5
       <br />
11
           <!-- <div class="title-single-box"> -->
11
           <!-- <div class="title-single-box"> -->
12
           <!-- <h2 class="title-single">Status List</h2> -->
12
           <!-- <h2 class="title-single">Status List</h2> -->
13
           <!-- </div> -->
13
           <!-- </div> -->
14
-          <div class="title-box-d">
15
-            <h1 class="title-d" style="text-align:left; font-size: 250%">Status List</h1>
14
+          <div class="section-header">
15
+            <h2>Status List</h2>
16
           </div>
16
           </div>
17
           <br />
17
           <br />
18
         </div>
18
         </div>
22
     <div class="container">
22
     <div class="container">
23
       <ListView :items="statusList" :columnCount="4" :compact="false" :showNew="false" />
23
       <ListView :items="statusList" :columnCount="4" :compact="false" :showNew="false" />
24
     </div>
24
     </div>
25
-  </div>
25
+  </main>
26
 </template>
26
 </template>
27
 <script>
27
 <script>
28
-import { mapState, mapActions } from 'vuex';
29
-import ListView from '../../shared/listView.vue';
28
+import { mapState, mapActions } from "vuex";
29
+import ListView from "../../shared/listView.vue";
30
 
30
 
31
 export default {
31
 export default {
32
-  name: 'StatusList',
32
+  name: "StatusList",
33
   components: {
33
   components: {
34
-    ListView,
34
+    ListView
35
   },
35
   },
36
   created() {
36
   created() {
37
     this.getStatusList();
37
     this.getStatusList();
38
   },
38
   },
39
   computed: {
39
   computed: {
40
-    ...mapState('status', ['statusList']),
40
+    ...mapState("status", ["statusList"])
41
   },
41
   },
42
   methods: {
42
   methods: {
43
-    ...mapActions('status', ['getStatusList']),
44
-  },
43
+    ...mapActions("status", ["getStatusList"])
44
+  }
45
 };
45
 };
46
 </script>
46
 </script>
47
-<style>
48
-</style>
47
+<style></style>

+ 22
- 30
src/components/admin/status/tenderWeekAdminPage.vue Datei anzeigen

1
 <template>
1
 <template>
2
-  <!-- <section class="intro-single"> -->
3
-  <div class="container">
4
-    <br />
5
-    <br />
6
-    <br />
7
-    <br />
8
-    <div class="row">
9
-      <div class="col-md-12 col-lg-8">
10
-        <!-- <div class="title-single-box"> -->
11
-        <!-- <h1 class="title-single" style="text-align:left;">Tender Week Admin</h1> -->
12
-        <!-- </div> -->
13
-        <div class="title-box-d">
14
-          <h1 class="title-d" style="text-align:left; font-size: 250%">Tender Week Admin</h1>
2
+  <main id="main" style="margin-top:-20px; padding-bottom:50px">
3
+    <!-- <section class="intro-single"> -->
4
+    <div class="container">
5
+      <div class="row">
6
+        <div class="col">
7
+          <div class="section-header">
8
+            <h2>Tender Week Admin</h2>
9
+          </div>
15
         </div>
10
         </div>
16
-        <br />
17
       </div>
11
       </div>
12
+      <div id="table" class="col-xs-12 table-responsive">
13
+        <ListView :items="items" :showNew="false"></ListView>
14
+      </div>
15
+      <br />
18
     </div>
16
     </div>
19
-    <div id="table" class="col-xs-12 table-responsive">
20
-      <ListView :items="items" :showNew="false"></listView>
21
-    </div>
22
-    <br />
23
-  </div>
24
 
17
 
25
-  <!-- </section> -->
18
+    <!-- </section> -->
19
+  </main>
26
 </template>
20
 </template>
27
 <script>
21
 <script>
28
-import { mapState, mapActions } from 'vuex';
29
-import ListView from '../../shared/listView.vue';
22
+import { mapState, mapActions } from "vuex";
23
+import ListView from "../../shared/listView.vue";
30
 
24
 
31
 export default {
25
 export default {
32
-  name: 'TenderWeekAdmin',
26
+  name: "TenderWeekAdmin",
33
   created() {
27
   created() {
34
     this.getItems();
28
     this.getItems();
35
   },
29
   },
36
   components: {
30
   components: {
37
-    ListView,
31
+    ListView
38
   },
32
   },
39
   computed: {
33
   computed: {
40
-    ...mapState('tenderWeek', ['items']),
34
+    ...mapState("tenderWeek", ["items"])
41
   },
35
   },
42
   methods: {
36
   methods: {
43
-    ...mapActions('tenderWeek', ['getItems']),
44
-  },
37
+    ...mapActions("tenderWeek", ["getItems"])
38
+  }
45
 };
39
 };
46
 </script>
40
 </script>
47
 
41
 
48
-
49
-<style>
50
-</style>
42
+<style></style>

+ 44
- 33
src/components/admin/status/timeshareAdminPage.vue Datei anzeigen

1
-/* eslint-disable no-restricted-syntax */
2
-/* eslint-disable guard-for-in */
1
+/* eslint-disable no-restricted-syntax */ /* eslint-disable guard-for-in */
3
 <!-- eslint-disable max-len -->
2
 <!-- eslint-disable max-len -->
4
 <template>
3
 <template>
5
-  <div>
6
-    <br />
4
+  <main id="main" style="margin-top:-20px; padding-bottom:50px">
5
+    <div class="container">
6
+      <div class="row">
7
+        <div class="col">
8
+          <div class="section-header">
9
+            <h2>Pending Weeks</h2>
10
+          </div>
11
+        </div>
12
+      </div>
13
+    </div>
14
+
7
     <div class="row">
15
     <div class="row">
8
       <div class="offset-1 col-md-3">
16
       <div class="offset-1 col-md-3">
9
         <button
17
         <button
10
           type="button"
18
           type="button"
11
-          :class="{'form-control btn btn-primary ': (1===1), 'my-disable': (!selectedItems || selectedItems.length === 0)}"
19
+          :class="{
20
+            'form-control btn btn-primary ': 1 === 1,
21
+            'my-disable': !selectedItems || selectedItems.length === 0
22
+          }"
12
           value="Verify Week(s)"
23
           value="Verify Week(s)"
13
           :disabled="!(selectedItems.length > 0)"
24
           :disabled="!(selectedItems.length > 0)"
14
           @click="onVerify()"
25
           @click="onVerify()"
15
-        >{{ButtonMessage}}</button>
16
-        <div>{{Message}}</div>
26
+        >
27
+          {{ ButtonMessage }}
28
+        </button>
29
+        <div>{{ Message }}</div>
17
       </div>
30
       </div>
18
       <div class="offset-1 col-md-10">
31
       <div class="offset-1 col-md-10">
19
         <ListView
32
         <ListView
20
           :items="getNeedsVerify"
33
           :items="getNeedsVerify"
21
           @onRowClick="onRowClick"
34
           @onRowClick="onRowClick"
22
           @onClearSelected="onClearSelected"
35
           @onClearSelected="onClearSelected"
23
-          :title="'Pending Weeks'"
24
           :showNew="false"
36
           :showNew="false"
25
         />
37
         />
26
       </div>
38
       </div>
27
     </div>
39
     </div>
28
-  </div>
40
+  </main>
29
 </template>
41
 </template>
30
 <script>
42
 <script>
31
-import { mapState, mapActions, mapGetters } from 'vuex';
32
-import Log from '../../../assets/Log';
33
-import ListView from '../../shared/listView.vue';
43
+import { mapState, mapActions, mapGetters } from "vuex";
44
+import Log from "../../../assets/Log";
45
+import ListView from "../../shared/listView.vue";
34
 
46
 
35
 export default {
47
 export default {
36
-  name: 'TimeshareAdmin',
48
+  name: "TimeshareAdmin",
37
   components: {
49
   components: {
38
-    ListView,
50
+    ListView
39
   },
51
   },
40
   data() {
52
   data() {
41
     return {
53
     return {
42
       user: Log.getUser(),
54
       user: Log.getUser(),
43
       selectedItems: [],
55
       selectedItems: [],
44
-      showMessage: false,
56
+      showMessage: false
45
     };
57
     };
46
   },
58
   },
47
   mounted() {
59
   mounted() {
54
       return selectedArray;
66
       return selectedArray;
55
     },
67
     },
56
     ButtonMessage() {
68
     ButtonMessage() {
57
-      let msg = '';
69
+      let msg = "";
58
       if (!(this.selectedItems.length > 0)) {
70
       if (!(this.selectedItems.length > 0)) {
59
-        msg = 'No Items selected';
71
+        msg = "No Items selected";
60
       } else {
72
       } else {
61
-        msg = 'Verify item';
73
+        msg = "Verify item";
62
         if (this.selectedItems.length > 1) {
74
         if (this.selectedItems.length > 1) {
63
-          msg += 's';
75
+          msg += "s";
64
         }
76
         }
65
       }
77
       }
66
       return msg;
78
       return msg;
67
     },
79
     },
68
     Message() {
80
     Message() {
69
-      let msg = '';
81
+      let msg = "";
70
       if (!(this.selectedItems.length > 0)) {
82
       if (!(this.selectedItems.length > 0)) {
71
-        msg = 'Please select the item(s) to verify.';
83
+        msg = "Please select the item(s) to verify.";
72
       } else {
84
       } else {
73
         msg = `${this.selectedItems.length}`;
85
         msg = `${this.selectedItems.length}`;
74
         if (this.selectedItems.length === 1) {
86
         if (this.selectedItems.length === 1) {
75
-          msg += ' item ';
76
-        } else msg += ' items ';
77
-        msg += 'selected. Click to verify or select more...';
87
+          msg += " item ";
88
+        } else msg += " items ";
89
+        msg += "selected. Click to verify or select more...";
78
       }
90
       }
79
       return msg;
91
       return msg;
80
     },
92
     },
81
-    ...mapState('myWeeks', ['items']),
82
-    ...mapGetters({ getNeedsVerify: 'myWeeks/getNeedsVerify' }),
93
+    ...mapState("myWeeks", ["items"]),
94
+    ...mapGetters({ getNeedsVerify: "myWeeks/getNeedsVerify" })
83
   },
95
   },
84
   methods: {
96
   methods: {
85
-    ...mapActions('myWeeks', ['getItems', 'verifyWeek']),
86
-    ...mapActions('alert', ['success']),
97
+    ...mapActions("myWeeks", ["getItems", "verifyWeek"]),
98
+    ...mapActions("alert", ["success"]),
87
     onVerify() {
99
     onVerify() {
88
       if (this.selectedItems.length > 0) {
100
       if (this.selectedItems.length > 0) {
89
         for (const i in this.selectedItems) {
101
         for (const i in this.selectedItems) {
93
             this.verifyWeek(item.id);
105
             this.verifyWeek(item.id);
94
           }
106
           }
95
         }
107
         }
96
-        this.success('Week verified!');
97
-        this.$router.push('/shared/alert');
108
+        this.success("Week verified!");
109
+        this.$router.push("/shared/alert");
98
       }
110
       }
99
     },
111
     },
100
     onRowClick(items) {
112
     onRowClick(items) {
105
     },
117
     },
106
     onClearSelected() {
118
     onClearSelected() {
107
       this.selectedItems = [];
119
       this.selectedItems = [];
108
-    },
109
-  },
120
+    }
121
+  }
110
 };
122
 };
111
 </script>
123
 </script>
112
 
124
 
113
-
114
 <style>
125
 <style>
115
 .my-disable {
126
 .my-disable {
116
   background-color: silver;
127
   background-color: silver;

+ 54
- 60
src/components/admin/status/userManagementPage.vue Datei anzeigen

1
 <template>
1
 <template>
2
-  <!-- eslint-disable max-len -->
3
-  <div class="container">
4
-    <br />
5
-    <br />
6
-    <div class="row">
7
-      <div class="col-md-12 col-lg-8">
8
-        <div class="title-box-d">
9
-          <h1 class="title-d" style="text-align:left; font-size: 250%">User Management</h1>
2
+  <main id="main" style="margin-top:-20px; padding-bottom:50px">
3
+    <!-- eslint-disable max-len -->
4
+    <div class="container">
5
+      <br />
6
+      <br />
7
+      <div class="row">
8
+        <div class="col-md-12 col-lg-8">
9
+          <div class="section-header">
10
+            <h2>User Management</h2>
11
+          </div>
10
         </div>
12
         </div>
11
       </div>
13
       </div>
12
-    </div>
13
-    <div class="row">
14
-      <div class="col-md-2 offset-1">
15
-        <button type="button" class="btn btn-b-n">Private Users</button>
14
+      <div class="row">
15
+        <div class="col-md-2 offset-1">
16
+          <button type="button" class="btn btn-b-n">Private Users</button>
17
+        </div>
18
+        <div class="col-md-2 offset-2">
19
+          <button
20
+            @click="routerGoTo('/status/agentUserManagementPage')"
21
+            type="button"
22
+            class="btn btn-b-n"
23
+          >
24
+            Agents
25
+          </button>
26
+        </div>
16
       </div>
27
       </div>
17
-      <div class="col-md-2 offset-2">
18
-        <button
19
-          @click="routerGoTo('/status/agentUserManagementPage')"
20
-          type="button"
21
-          class="btn btn-b-n"
22
-        >Agents</button>
28
+      <div class="container">
29
+        <ListView
30
+          :items="individuals"
31
+          :showNew="false"
32
+          :editable="true"
33
+          :deleteable="true"
34
+          :showCustomAction="true"
35
+          :showColumnChooser="false"
36
+          :CustomActionHeading="'Reset Password'"
37
+          :displayColumns="columns"
38
+          :displayHeaders="headers"
39
+          @onEdit="Edit"
40
+          @onDelete="Delete"
41
+          @onResetPassword="PasswordReset"
42
+        />
43
+        <br />
23
       </div>
44
       </div>
24
     </div>
45
     </div>
25
-    <div class="container">
26
-      <ListView
27
-        :items="individuals"
28
-        :showNew="false"
29
-        :editable="true"
30
-        :deleteable="true"
31
-        :showCustomAction="true"
32
-        :showColumnChooser="false"
33
-        :CustomActionHeading="'Reset Password'"
34
-        :displayColumns="columns"
35
-        :displayHeaders="headers"
36
-        @onEdit="Edit"
37
-        @onDelete="Delete"
38
-        @onResetPassword="PasswordReset"
39
-      />
40
-      <br />
41
-    </div>
42
-  </div>
46
+  </main>
43
 </template>
47
 </template>
44
 
48
 
45
 <script>
49
 <script>
46
-import { mapState, mapActions } from 'vuex';
50
+import { mapState, mapActions } from "vuex";
47
 // import alert from '../../shared/alert.vue';
51
 // import alert from '../../shared/alert.vue';
48
-import ListView from '../../shared/listView.vue';
52
+import ListView from "../../shared/listView.vue";
49
 
53
 
50
 export default {
54
 export default {
51
-  name: 'userManagementPage',
55
+  name: "userManagementPage",
52
   components: {
56
   components: {
53
-    ListView,
57
+    ListView
54
     // alert,
58
     // alert,
55
   },
59
   },
56
   data() {
60
   data() {
57
     return {
61
     return {
58
-      columns: [
59
-        'id',
60
-        'name',
61
-        'surname',
62
-        'cellNumber',
63
-        'telephone',
64
-        'email',
65
-        'isDeleted',
66
-      ],
67
-      headers: ['', '', '', '', '', '', ''],
68
-      item: {},
62
+      columns: ["id", "name", "surname", "cellNumber", "telephone", "email", "isDeleted"],
63
+      headers: ["", "", "", "", "", "", ""],
64
+      item: {}
69
     };
65
     };
70
   },
66
   },
71
   props: {},
67
   props: {},
72
   methods: {
68
   methods: {
73
-    ...mapActions('register', ['getIndividuals', 'deleteIndividual']),
69
+    ...mapActions("register", ["getIndividuals", "deleteIndividual"]),
74
     routerGoTo(goTo) {
70
     routerGoTo(goTo) {
75
       this.$router.push(goTo);
71
       this.$router.push(goTo);
76
     },
72
     },
77
     Edit(item) {
73
     Edit(item) {
78
       this.$router.push({
74
       this.$router.push({
79
-        path: '/user/updateProfileInfo',
80
-        query: { id: item.id },
75
+        path: "/user/updateProfileInfo",
76
+        query: { id: item.id }
81
       });
77
       });
82
     },
78
     },
83
     Delete(item) {
79
     Delete(item) {
84
       this.deleteIndividual(item.id);
80
       this.deleteIndividual(item.id);
85
-    },
81
+    }
86
   },
82
   },
87
   mounted() {
83
   mounted() {
88
     this.getIndividuals();
84
     this.getIndividuals();
89
   },
85
   },
90
   computed: {
86
   computed: {
91
-    ...mapState('register', ['individuals', 'removeIndividual']),
92
-  },
87
+    ...mapState("register", ["individuals", "removeIndividual"])
88
+  }
93
 };
89
 };
94
 </script>
90
 </script>
95
 
91
 
96
-
97
-<style>
98
-</style>
92
+<style></style>

+ 12
- 20
src/components/admin/unitConfiguration/unitConfigurationPage.vue Datei anzeigen

1
 <template>
1
 <template>
2
-  <div>
2
+  <main id="main" style="margin-top:-20px; padding-bottom:50px">
3
     <!-- eslint-disable max-len -->
3
     <!-- eslint-disable max-len -->
4
     <!-- <section class="intro-single"> -->
4
     <!-- <section class="intro-single"> -->
5
     <div class="container">
5
     <div class="container">
6
-      <br />
7
-      <br />
8
-      <br />
9
-      <br />
10
       <div class="row">
6
       <div class="row">
11
-        <div class="col-md-12 col-lg-8">
12
-          <!-- <div class="title-single-box"> -->
13
-          <!-- <h2 class="title-single">Unit Configuration List</h2> -->
14
-          <!-- </div> -->
15
-          <div class="title-box-d">
16
-            <h1 class="title-d" style="text-align:left; font-size: 250%">Unit Configuration List</h1>
7
+        <div class="col">
8
+          <div class="section-header">
9
+            <h2>Unit Configuration List</h2>
17
           </div>
10
           </div>
18
-          <br />
19
         </div>
11
         </div>
20
       </div>
12
       </div>
21
     </div>
13
     </div>
23
     <div class="container">
15
     <div class="container">
24
       <ListView :items="unitConfigurationList" />
16
       <ListView :items="unitConfigurationList" />
25
     </div>
17
     </div>
26
-  </div>
18
+  </main>
27
 </template>
19
 </template>
28
 <script>
20
 <script>
29
-import { mapState, mapActions } from 'vuex';
30
-import ListView from '../../shared/listView.vue';
21
+import { mapState, mapActions } from "vuex";
22
+import ListView from "../../shared/listView.vue";
31
 
23
 
32
 export default {
24
 export default {
33
-  name: 'UnitConfiguration',
25
+  name: "UnitConfiguration",
34
   components: {
26
   components: {
35
-    ListView,
27
+    ListView
36
   },
28
   },
37
   created() {
29
   created() {
38
     this.getUnitConfigurationList();
30
     this.getUnitConfigurationList();
39
   },
31
   },
40
   computed: {
32
   computed: {
41
-    ...mapState('unitConfiguration', ['unitConfigurationList']),
33
+    ...mapState("unitConfiguration", ["unitConfigurationList"])
42
   },
34
   },
43
   methods: {
35
   methods: {
44
-    ...mapActions('unitConfiguration', ['getUnitConfigurationList']),
45
-  },
36
+    ...mapActions("unitConfiguration", ["getUnitConfigurationList"])
37
+  }
46
 };
38
 };
47
 </script>
39
 </script>
48
 <style></style>
40
 <style></style>

+ 38
- 33
src/components/communication/templatePage.vue Datei anzeigen

1
 <template>
1
 <template>
2
-<!-- eslint-disable max-len -->
3
-  <div class="container-fluid" style="margin-top:25px;">
4
-    <div class="row">
5
-      <div class="col-md-1"></div>
6
-      <div class="col-md-10">
7
-        <div class>
8
-          <h3 class="sinse-title">Email Templates</h3>
2
+  <main id="main" style="margin-top:-20px; padding-bottom:50px">
3
+    <!-- eslint-disable max-len -->
4
+    <div class="container-fluid" style="margin-top:25px;">
5
+      <div class="row">
6
+        <div class="col-md-1"></div>
7
+        <div class="col-md-10">
8
+          <div class="section-header">
9
+            <h2 class="sinse-title">Email Templates</h2>
10
+          </div>
11
+        </div>
12
+        <div class="col-md-12">
13
+          <hr />
9
         </div>
14
         </div>
10
       </div>
15
       </div>
11
-      <div class="col-md-12">
12
-        <hr />
13
-      </div>
14
-    </div>
15
-    <div class="row">
16
-      <div :class="listClass">
17
-        <ListView :items="list" @onRowClick="onRowClick" @onNew="onNew" :showNew="true" />
18
-      </div>
19
-      <div class="col-md-6" v-if="showDetailView">
20
-        <DetailView :placeHolders="detailItem ? detailItem.placeHolders : []" :item="detailItem" @onClose="onDetailClose" :editable="clickedNew" />
16
+      <div class="row">
17
+        <div :class="listClass">
18
+          <ListView :items="list" @onRowClick="onRowClick" @onNew="onNew" :showNew="true" />
19
+        </div>
20
+        <div class="col-md-6" v-if="showDetailView">
21
+          <DetailView
22
+            :placeHolders="detailItem ? detailItem.placeHolders : []"
23
+            :item="detailItem"
24
+            @onClose="onDetailClose"
25
+            :editable="clickedNew"
26
+          />
27
+        </div>
21
       </div>
28
       </div>
22
-    </div>
23
 
29
 
24
-    <hr />
25
-  </div>
30
+      <hr />
31
+    </div>
32
+  </main>
26
 </template>
33
 </template>
27
 
34
 
28
 <script>
35
 <script>
29
-import { mapState, mapActions } from 'vuex';
30
-import ListView from '../shared/listView.vue';
31
-import DetailView from './templateDetail.vue';
36
+import { mapState, mapActions } from "vuex";
37
+import ListView from "../shared/listView.vue";
38
+import DetailView from "./templateDetail.vue";
32
 
39
 
33
 export default {
40
 export default {
34
   data() {
41
   data() {
35
     return {
42
     return {
36
       detailItem: undefined,
43
       detailItem: undefined,
37
-      clickedNew: false,
44
+      clickedNew: false
38
     };
45
     };
39
   },
46
   },
40
   components: {
47
   components: {
41
     ListView,
48
     ListView,
42
-    DetailView,
49
+    DetailView
43
   },
50
   },
44
   mounted() {
51
   mounted() {
45
     this.getList();
52
     this.getList();
46
   },
53
   },
47
   computed: {
54
   computed: {
48
-    ...mapState('template', ['list', 'item']),
55
+    ...mapState("template", ["list", "item"]),
49
     showDetailView() {
56
     showDetailView() {
50
       return this.detailItem !== undefined && this.detailItem != null;
57
       return this.detailItem !== undefined && this.detailItem != null;
51
     },
58
     },
52
     listClass() {
59
     listClass() {
53
-      return this.detailItem !== undefined && this.detailItem != null
54
-        ? 'col-md-6'
55
-        : 'col-md-12';
56
-    },
60
+      return this.detailItem !== undefined && this.detailItem != null ? "col-md-6" : "col-md-12";
61
+    }
57
   },
62
   },
58
   methods: {
63
   methods: {
59
-    ...mapActions('template', ['getList']),
64
+    ...mapActions("template", ["getList"]),
60
     onRowClick(items) {
65
     onRowClick(items) {
61
       if (items.length > 0) {
66
       if (items.length > 0) {
62
         const i = items[0];
67
         const i = items[0];
73
     },
78
     },
74
     onDetailClose() {
79
     onDetailClose() {
75
       this.detailItem = undefined;
80
       this.detailItem = undefined;
76
-    },
77
-  },
81
+    }
82
+  }
78
 };
83
 };
79
 </script>
84
 </script>

+ 14
- 14
src/components/financial/payments.vue Datei anzeigen

1
 <template>
1
 <template>
2
   <!-- eslint-disable max-len -->
2
   <!-- eslint-disable max-len -->
3
-  <div>
3
+  <main id="main" style="margin-top:-20px;padding-bottom:300px">
4
     <div class="container">
4
     <div class="container">
5
       <div class="container">
5
       <div class="container">
6
         <br />
6
         <br />
7
         <br />
7
         <br />
8
         <div class="row">
8
         <div class="row">
9
           <div class="col-md-12 col-lg-8">
9
           <div class="col-md-12 col-lg-8">
10
-            <div class="title-box-d">
11
-              <h1 class="title-d" style="text-align:left; font-size: 250%">Payments</h1>
10
+            <div class="section-header">
11
+              <h2>Payments</h2>
12
             </div>
12
             </div>
13
           </div>
13
           </div>
14
         </div>
14
         </div>
25
       />
25
       />
26
     </div>
26
     </div>
27
     <br />
27
     <br />
28
-  </div>
28
+  </main>
29
 </template>
29
 </template>
30
 
30
 
31
 <script>
31
 <script>
32
-import { mapState, mapActions } from 'vuex';
33
-import listView from '../shared/listView.vue';
34
-import Log from '../../assets/Log';
32
+import { mapState, mapActions } from "vuex";
33
+import listView from "../shared/listView.vue";
34
+import Log from "../../assets/Log";
35
 
35
 
36
 export default {
36
 export default {
37
-  name: 'PaymentList',
37
+  name: "PaymentList",
38
   components: {
38
   components: {
39
-    listView,
39
+    listView
40
   },
40
   },
41
   data() {
41
   data() {
42
     return {
42
     return {
43
-      userId: Log.getUser().Id,
43
+      userId: Log.getUser().Id
44
     };
44
     };
45
   },
45
   },
46
   methods: {
46
   methods: {
47
-    ...mapActions('Payment', ['getPayments']),
47
+    ...mapActions("Payment", ["getPayments"])
48
   },
48
   },
49
   mounted() {
49
   mounted() {
50
     this.getProperties(Object.assign(this.user.id));
50
     this.getProperties(Object.assign(this.user.id));
51
   },
51
   },
52
   computed: {
52
   computed: {
53
-    ...mapState('Payment', ['payments']),
53
+    ...mapState("Payment", ["payments"]),
54
     UserChanged() {
54
     UserChanged() {
55
       this.getProperties(Object.assign(this.user.id));
55
       this.getProperties(Object.assign(this.user.id));
56
       return this.user;
56
       return this.user;
57
-    },
58
-  },
57
+    }
58
+  }
59
 };
59
 };
60
 </script>
60
 </script>

+ 246
- 67
src/components/home/carouselSection.vue Datei anzeigen

1
 <template>
1
 <template>
2
-  <!-- eslint-disable max-len -->
3
-  <carousel
4
-    :per-page="1"
5
-    :mouse-drag="false"
6
-    :autoplay="true"
7
-    :autoplayTimeout="5000"
8
-    :loop="true"
9
-    :autoplayHoverPause="false"
10
-  >
11
-    <slide
12
-      v-for="(car, i) in carouselList"
13
-      :index="i"
14
-      :key="i"
15
-      :style="{ height:'1000px', width:'100%',  backgroundImage: 'url(' + car.image + ')',  backgroundSize: 'cover', backgroundPosition: 'center center'}"
16
-      calss="myClass"
17
-    >
18
-      <div class="intro-content display-table">
19
-        <div class="table-cell">
20
-          <div class="container">
21
-            <div class="row">
22
-              <div class="col-lg-8">
23
-                <div
24
-                  class="price-a"
25
-                  style="opacity:0.7; border: white solid 3px; border-radius: 15px; background-color: white;"
2
+  <section id="intro">
3
+    <div class="container">
4
+      <div class="row">
5
+        <div align="left" class="col-sm-12 col-md-8">
6
+          <div class="intro-content">
7
+            <h2>Find your perfect Property</h2>
8
+
9
+            <ul class="nav nav-pills mb-3" id="pills-tab" role="tablist">
10
+              <li class="nav-item">
11
+                <a
12
+                  class="nav-link btn-white-border"
13
+                  id="timeshare-tab"
14
+                  data-toggle="pill"
15
+                  href="#timeshare"
16
+                  role="tab"
17
+                  aria-controls="timeshare"
18
+                  aria-selected="true"
19
+                  >Timeshare</a
20
+                >
21
+              </li>
22
+              <li class="nav-item">
23
+                <a
24
+                  class="nav-link btn-white-border"
25
+                  id="commercial-tab"
26
+                  data-toggle="pill"
27
+                  href="#commercial"
28
+                  role="tab"
29
+                  aria-controls="commercial"
30
+                  aria-selected="false"
31
+                  >Commercial</a
32
+                >
33
+              </li>
34
+              <li class="nav-item">
35
+                <a
36
+                  class="nav-link btn-white-border"
37
+                  id="residential-tab"
38
+                  data-toggle="pill"
39
+                  href="#residential"
40
+                  role="tab"
41
+                  aria-controls="residential"
42
+                  aria-selected="false"
43
+                  >Residential</a
26
                 >
44
                 >
27
-                  <h1 class="intro-title mb-4">{{ car.header }}</h1>
28
-                  <div class="summary-list" v-if="car.isProperty">
29
-                    <p v-html="car.address" />
45
+              </li>
46
+            </ul>
47
+            <!--========    header tabs      ==========-->
48
+            <div class="tab-content" id="pills-tabContent">
49
+              <div
50
+                class="tab-pane fade show active"
51
+                id="start"
52
+                role="tabpanel"
53
+                aria-labelledby="start-tab"
54
+              >
55
+                <p>Choose an option to start your adventure</p>
56
+              </div>
57
+
58
+              <div
59
+                class="tab-pane fade show"
60
+                id="timeshare"
61
+                role="tabpanel"
62
+                aria-labelledby="timeshare-tab"
63
+              >
64
+                <H4>TIMESHARE SALES</H4>
65
+                <p>
66
+                  Start exploring your posibilities
67
+                </p>
68
+                <div id="row">
69
+                  <!-- <div class="form-group">
70
+                    <input
71
+                      data-toggle="dropdown"
72
+                      name="region"
73
+                      class="form-control my-2"
74
+                      id="name"
75
+                      placeholder="Region"
76
+                      aria-haspopup="true"
77
+                      aria-expanded="false"
78
+                    />
79
+                    <input
80
+                      data-toggle="dropdown"
81
+                      name="resort"
82
+                      class="form-control my-2"
83
+                      id="name"
84
+                      placeholder="Resort"
85
+                      aria-haspopup="true"
86
+                      aria-expanded="false"
87
+                    />
88
+                  </div> -->
89
+                  <router-link to="/timeshare/buy" class="btn-solid-blue"
90
+                    ><i class="fa fa-search"></i> BUY</router-link
91
+                  >
92
+                  <router-link to="/timeshare/sell" class="btn-solid-blue"
93
+                    ><i class="fa chevron-circle-right"></i> SELL</router-link
94
+                  >
95
+                </div>
96
+              </div>
97
+
98
+              <div
99
+                class="tab-pane fade"
100
+                id="commercial"
101
+                role="tabpanel"
102
+                aria-labelledby="commercial-tab"
103
+              >
104
+                <h4>COMMERCIAL PROPERTIES</h4>
105
+                <p>Select the region you are looking for to start your search</p>
106
+                <div id="row">
107
+                  <div class="form-group">
108
+                    <autoComplete
109
+                      align="left"
110
+                      class="col-md-11 offset-1"
111
+                      :items="suburbList"
112
+                      @selection="SelectedFilter"
113
+                      style="width:100%; margin-left:-15px"
114
+                    />
30
                   </div>
115
                   </div>
31
-                  <div class="summary-list" v-else>
32
-                    <ul class="list">
33
-                      <li class="d-flex justify-content-between">
34
-                        <strong>
35
-                          <i class="fa fa-bed"></i>&nbsp&nbsp&nbspBedrooms:
36
-                        </strong>
37
-                        <span>{{ car.bedrooms }}</span>
38
-                      </li>
39
-                      <li class="d-flex justify-content-between">
40
-                        <strong>
41
-                          <i class="fa fa-users"></i>&nbsp&nbsp&nbspSleeps:
42
-                        </strong>
43
-                        <span>{{ car.sleeps }}</span>
44
-                      </li>
45
-                      <li class="d-flex justify-content-between">
46
-                        <strong>
47
-                          <i class="fa fa-calendar"></i>&nbsp&nbsp&nbspCheck in:
48
-                        </strong>
49
-                        <span>{{ car.arrival | toDate }}</span>
50
-                      </li>
51
-                      <li class="d-flex justify-content-between">
52
-                        <strong>
53
-                          <i class="fa fa-calendar"></i>&nbsp&nbsp&nbspCheck out:
54
-                        </strong>
55
-                        <span>{{ car.departure | toDate}}</span>
56
-                      </li>
57
-                    </ul>
116
+                  <a v-on:click="SearchClickRentComm()" class="btn-solid-blue scrollto"
117
+                    ><i class="fa fa-search"></i> RENT</a
118
+                  >
119
+                  <a v-on:click="SearchClickBuyComm()" class="btn-solid-blue scrollto"
120
+                    ><i class="fa fa-search"></i> BUY</a
121
+                  >
122
+                </div>
123
+              </div>
124
+
125
+              <div
126
+                class="tab-pane fade"
127
+                id="residential"
128
+                role="tabpanel"
129
+                aria-labelledby="residential-tab"
130
+              >
131
+                <h4>RESIDENTIAL PROPERTIES</h4>
132
+                <p>Select the region you are looking for to start your search</p>
133
+                <div id="row">
134
+                  <div class="form-group">
135
+                    <autoComplete
136
+                      align="left"
137
+                      class="col-md-11 offset-1"
138
+                      :items="suburbList"
139
+                      @selection="SelectedFilter"
140
+                      style="width:100%; margin-left:-15px"
141
+                    />
142
+                    <!-- <input
143
+                      data-toggle="dropdown"
144
+                      name="type"
145
+                      class="form-control my-2"
146
+                      id="type"
147
+                      placeholder="Type"
148
+                      aria-haspopup="true"
149
+                      aria-expanded="false"
150
+                    /> -->
58
                   </div>
151
                   </div>
152
+                  <a v-on:click="SearchClickRentRes()" class="btn-solid-blue scrollto"
153
+                    ><i class="fa fa-search"></i> RENT</a
154
+                  >
155
+                  <a v-on:click="SearchClickBuyRes()" class="btn-solid-blue scrollto"
156
+                    ><i class="fa fa-search"></i> BUY</a
157
+                  >
59
                 </div>
158
                 </div>
60
               </div>
159
               </div>
61
             </div>
160
             </div>
161
+
162
+            <div></div>
62
           </div>
163
           </div>
63
         </div>
164
         </div>
64
       </div>
165
       </div>
65
-    </slide>
66
-  </carousel>
166
+    </div>
167
+
168
+    <carousel
169
+      :nav="false"
170
+      :dots="false"
171
+      :items="1"
172
+      :autoplay="true"
173
+      :loop="true"
174
+      id="intro-carousel"
175
+      style="margin-top:-50px"
176
+      :responsive="{ 0: { items: 1, nav: false }, 600: { items: 1, nav: false } }"
177
+    >
178
+      <img class="item" src="../../../public/img/intro-carousel/home-1.jpg" alt="" />
179
+      <img class="item" src="../../../public/img/intro-carousel/home-2.jpg" alt="" />
180
+      <img class="item" src="../../../public/img/intro-carousel/home-3.jpg" alt="" />
181
+      <img class="item" src="../../../public/img/intro-carousel/home-4.jpg" alt="" />
182
+      <img class="item" src="../../../public/img/intro-carousel/home-5.jpg" alt="" />
183
+      <img class="item" src="../../../public/img/intro-carousel/home-6.jpg" alt="" />
184
+    </carousel>
185
+
186
+    <div id="intro-carousel" class="owl-carousel"></div>
187
+  </section>
188
+  <!-- #intro -->
67
 </template>
189
 </template>
68
 
190
 
69
 <script>
191
 <script>
70
-import { mapState, mapActions } from 'vuex';
71
-import { Carousel, Slide } from 'vue-carousel';
72
-
192
+/* eslint-disable */
193
+import { mapState, mapActions } from "vuex";
194
+import carousel from "vue-owl-carousel";
195
+import autoComplete from "../shared/autoComplete";
73
 export default {
196
 export default {
74
   components: {
197
   components: {
75
-    Carousel,
76
-    Slide,
198
+    carousel,
199
+    autoComplete
77
   },
200
   },
78
-  methods: {
79
-    ...mapActions('carousel', ['getCarouselList']),
201
+  computed: {
202
+    ...mapState("propertySearch", ["suburbs", "suburbList", "propertySearch"])
80
   },
203
   },
81
-  mounted() {
82
-    this.getCarouselList();
204
+  data() {
205
+    return {
206
+      propertyUsageType: "Commercial",
207
+      salesType: "Sale",
208
+      searchText: "",
209
+      clicked: false
210
+    };
83
   },
211
   },
84
-  computed: {
85
-    ...mapState('carousel', ['carouselList']),
212
+  methods: {
213
+    ...mapActions("propertySearch", ["getSuburbs", "applyFilter"]),
214
+    SetSalesType(value) {
215
+      this.salesType = value;
216
+    },
217
+    SearchClickBuyRes() {
218
+      const item = this.suburbs.find(s => s.display === this.searchText);
219
+      this.propertySearch.province = item.province;
220
+      this.propertySearch.city = item.city;
221
+      this.propertySearch.suburb = item.suburb;
222
+      this.propertySearch.propertyUsageType = "Residential";
223
+      this.propertySearch.salesType = "Sale";
224
+
225
+      this.$router.push("/property/residential/searchResult");
226
+    },
227
+    SearchClickRentRes() {
228
+      const item = this.suburbs.find(s => s.display === this.searchText);
229
+      this.propertySearch.province = item.province;
230
+      this.propertySearch.city = item.city;
231
+      this.propertySearch.suburb = item.suburb;
232
+      this.propertySearch.propertyUsageType = "Residential";
233
+      this.propertySearch.salesType = "Rent";
234
+
235
+      this.$router.push("/property/residential/searchResult");
236
+    },
237
+    SearchClickBuyComm() {
238
+      const item = this.suburbs.find(s => s.display === this.searchText);
239
+      this.propertySearch.province = item.province;
240
+      this.propertySearch.city = item.city;
241
+      this.propertySearch.suburb = item.suburb;
242
+      this.propertySearch.propertyUsageType = "Commercial";
243
+      this.propertySearch.salesType = "Sale";
244
+
245
+      this.$router.push("/property/commercial/searchResult");
246
+    },
247
+    SearchClickRentComm() {
248
+      const item = this.suburbs.find(s => s.display === this.searchText);
249
+      this.propertySearch.province = item.province;
250
+      this.propertySearch.city = item.city;
251
+      this.propertySearch.suburb = item.suburb;
252
+      this.propertySearch.propertyUsageType = "Commercial";
253
+      this.propertySearch.salesType = "Rent";
254
+
255
+      this.$router.push("/property/commercial/searchResult");
256
+    },
257
+    SelectedFilter(item) {
258
+      this.searchText = item;
259
+    }
86
   },
260
   },
261
+  mounted() {
262
+    this.getSuburbs();
263
+  }
87
 };
264
 };
88
 </script>
265
 </script>
266
+
267
+<style lang="scss" scoped></style>

+ 20
- 18
src/components/home/homePage.vue Datei anzeigen

1
 <template>
1
 <template>
2
   <div>
2
   <div>
3
     <CarouselSection />
3
     <CarouselSection />
4
-    <ServiceSection />
5
-    <PropertySection />
6
-    <NewsSection />
7
-    <TestimonialSection />
8
-    <a href="#" class="back-to-top">
9
-      <i class="fa fa-chevron-up"></i>
10
-    </a>
4
+    <PropertySection
5
+      data-aos="fade-up"
6
+      data-aos-anchor-placement="center-bottom"
7
+      data-aos-delay="150"
8
+    />
11
   </div>
9
   </div>
12
 </template>
10
 </template>
13
 <script>
11
 <script>
14
-import CarouselSection from './carouselSection.vue';
15
-import ServiceSection from './serviceSection.vue';
16
-import PropertySection from './propertySection.vue';
17
-import NewsSection from './newsSection.vue';
18
-import TestimonialSection from './testimonialSection.vue';
19
-
12
+import CarouselSection from "./carouselSection.vue";
13
+//import ServiceSection from "./serviceSection.vue";
14
+import PropertySection from "./propertySection.vue";
15
+//import NewsSection from "./newsSection.vue";
16
+//import TestimonialSection from "./testimonialSection.vue";
17
+import AOS from "aos";
18
+import "aos/dist/aos.css";
20
 export default {
19
 export default {
20
+  created() {
21
+    AOS.init();
22
+  },
21
   components: {
23
   components: {
22
     CarouselSection,
24
     CarouselSection,
23
-    ServiceSection,
24
-    PropertySection,
25
-    NewsSection,
26
-    TestimonialSection,
27
-  },
25
+    //ServiceSection,
26
+    PropertySection
27
+    //NewsSection,
28
+    //TestimonialSection
29
+  }
28
 };
30
 };
29
 </script>
31
 </script>

+ 28
- 22
src/components/home/propertySection.vue Datei anzeigen

1
 <template>
1
 <template>
2
-  <div>
3
-    <section class="section-property section-t8">
2
+  <main id="main">
3
+    <section id="portfolio" class="wow fadeInUp">
4
       <div class="container">
4
       <div class="container">
5
         <div class="row">
5
         <div class="row">
6
-          <div class="col-md-12">
7
-            <div class="title-wrap d-flex justify-content-between">
8
-              <div class="title-box">
9
-                <h2 class="title-a">Latest Properties</h2>
10
-              </div>
11
-            </div>
6
+          <div class="col-lg-12">
7
+            <h2>Latest Properties</h2>
8
+          </div>
9
+        </div>
10
+      </div>
11
+      <div class="contianer">
12
+        <div class="row">
13
+          <div class="col">
14
+            <propertyCard
15
+              v-if="latestProperties.length > 0"
16
+              name="propertyholder"
17
+              :properties="latestProperties"
18
+              :showSort="false"
19
+            />
12
           </div>
20
           </div>
13
         </div>
21
         </div>
14
-        <propertyCard
15
-          v-if="latestProperties.length > 0"
16
-          name="propertyholder"
17
-          :properties="latestProperties"
18
-          :showSort="false"
19
-        />
20
       </div>
22
       </div>
21
     </section>
23
     </section>
22
-  </div>
24
+    <!-- #listings -->
25
+  </main>
23
 </template>
26
 </template>
24
-<script>
25
-import { mapState, mapActions } from 'vuex';
26
-import propertyCard from '../property/propertyCard.vue';
27
 
27
 
28
+<script>
29
+/* eslint-disable */
30
+import { mapState, mapActions } from "vuex";
31
+import propertyCard from "../property/propertyCard.vue";
28
 export default {
32
 export default {
29
   components: {
33
   components: {
30
-    propertyCard,
34
+    propertyCard
31
   },
35
   },
32
   computed: {
36
   computed: {
33
-    ...mapState('propertySearch', ['latestProperties']),
37
+    ...mapState("propertySearch", ["latestProperties"])
34
   },
38
   },
35
   methods: {
39
   methods: {
36
-    ...mapActions('propertySearch', ['searchLatestProperties']),
40
+    ...mapActions("propertySearch", ["searchLatestProperties"])
37
   },
41
   },
38
   mounted() {
42
   mounted() {
39
     this.searchLatestProperties();
43
     this.searchLatestProperties();
40
-  },
44
+  }
41
 };
45
 };
42
 </script>
46
 </script>
47
+
48
+<style lang="scss" scoped></style>

+ 26
- 35
src/components/marketing/landingPage.vue Datei anzeigen

54
                 role="tab"
54
                 role="tab"
55
                 aria-controls="directions"
55
                 aria-controls="directions"
56
                 aria-selected="false"
56
                 aria-selected="false"
57
-              >Html</a>
57
+                >Html</a
58
+              >
58
             </li>
59
             </li>
59
             <li class="nav-item">
60
             <li class="nav-item">
60
               <a
61
               <a
65
                 role="tab"
66
                 role="tab"
66
                 aria-controls="resort-layout"
67
                 aria-controls="resort-layout"
67
                 aria-selected="true"
68
                 aria-selected="true"
68
-              >Preview</a>
69
+                >Preview</a
70
+              >
69
             </li>
71
             </li>
70
           </ul>
72
           </ul>
71
           <div
73
           <div
126
                 role="tab"
128
                 role="tab"
127
                 aria-controls="template"
129
                 aria-controls="template"
128
                 aria-selected="false"
130
                 aria-selected="false"
129
-              >Html</a>
131
+                >Html</a
132
+              >
130
             </li>
133
             </li>
131
             <li class="nav-item">
134
             <li class="nav-item">
132
               <a
135
               <a
137
                 role="tab"
140
                 role="tab"
138
                 aria-controls="preview"
141
                 aria-controls="preview"
139
                 aria-selected="true"
142
                 aria-selected="true"
140
-              >Preview</a>
143
+                >Preview</a
144
+              >
141
             </li>
145
             </li>
142
           </ul>
146
           </ul>
143
           <div
147
           <div
191
           </label>
195
           </label>
192
           <div class="d-flex">
196
           <div class="d-flex">
193
             <div class="p-2">
197
             <div class="p-2">
194
-              <div
195
-                class="btn btn-primary myBackground"
196
-                @click="addClose()"
197
-                v-if="CanEdit"
198
-              >{{btnCaption}}</div>
198
+              <div class="btn btn-primary myBackground" @click="addClose()" v-if="CanEdit">
199
+                {{ btnCaption }}
200
+              </div>
199
             </div>
201
             </div>
200
           </div>
202
           </div>
201
         </div>
203
         </div>
232
           </label>
234
           </label>
233
           <div class="d-flex">
235
           <div class="d-flex">
234
             <div class="p-2">
236
             <div class="p-2">
235
-              <div
236
-                class="btn btn-primary myBackground"
237
-                @click="addWeekClose()"
238
-                v-if="CanEditWeeks"
239
-              >{{btnCaptionWeek}}</div>
237
+              <div class="btn btn-primary myBackground" @click="addWeekClose()" v-if="CanEditWeeks">
238
+                {{ btnCaptionWeek }}
239
+              </div>
240
             </div>
240
             </div>
241
           </div>
241
           </div>
242
         </div>
242
         </div>
270
             @click="SaveData()"
270
             @click="SaveData()"
271
             class="btn btn-primary myBackground"
271
             class="btn btn-primary myBackground"
272
             style="width: 85px; height:40px;"
272
             style="width: 85px; height:40px;"
273
-          >Save</button>
273
+          >
274
+            Save
275
+          </button>
274
           <button
276
           <button
275
             type="button"
277
             type="button"
276
             @click="Close()"
278
             @click="Close()"
277
             class="btn btn-primary myBackground"
279
             class="btn btn-primary myBackground"
278
             style="width: 85px; height:40px;"
280
             style="width: 85px; height:40px;"
279
-          >Close</button>
281
+          >
282
+            Close
283
+          </button>
280
         </div>
284
         </div>
281
       </div>
285
       </div>
282
       <div v-if="wait" id="preloader"></div>
286
       <div v-if="wait" id="preloader"></div>
342
             this.campaign.items[i].placeHolders &&
346
             this.campaign.items[i].placeHolders &&
343
             this.campaign.items[i].placeHolders.length > 0
347
             this.campaign.items[i].placeHolders.length > 0
344
           ) {
348
           ) {
345
-            this.campaign.items[
346
-              i
347
-            ].campaignItemPlaceHolder = this.campaign.items[i].placeHolders;
349
+            this.campaign.items[i].campaignItemPlaceHolder = this.campaign.items[i].placeHolders;
348
           }
350
           }
349
         }
351
         }
350
 
352
 
351
         for (let i = 0; i < this.campaign.placeHolders.length; i++) {
353
         for (let i = 0; i < this.campaign.placeHolders.length; i++) {
352
-          this.campaign.placeHolders[i].format = this.campaign.placeHolders[
353
-            i
354
-          ].formatTemplate;
354
+          this.campaign.placeHolders[i].format = this.campaign.placeHolders[i].formatTemplate;
355
         }
355
         }
356
         console.log(JSON.stringify(this.campaign));
356
         console.log(JSON.stringify(this.campaign));
357
         // this.saveCampaign(this.campaign)
357
         // this.saveCampaign(this.campaign)
374
       this.$router.push("/landingPage/week/0");
374
       this.$router.push("/landingPage/week/0");
375
     },
375
     },
376
     onItemAdd(item) {
376
     onItemAdd(item) {
377
-      const myList = this.campaign.placeHolders
378
-        ? this.campaign.placeHolders
379
-        : [];
377
+      const myList = this.campaign.placeHolders ? this.campaign.placeHolders : [];
380
       myList.push({
378
       myList.push({
381
         name: item.name,
379
         name: item.name,
382
         boundTo: item.property,
380
         boundTo: item.property,
402
       }
400
       }
403
     },
401
     },
404
     onItemDelete(item) {
402
     onItemDelete(item) {
405
-      this.campaign.placeHolders = _.remove(
406
-        this.campaign.placeHolders,
407
-        x => x !== item
408
-      );
403
+      this.campaign.placeHolders = _.remove(this.campaign.placeHolders, x => x !== item);
409
       this.placeHolders = this.campaign.placeHolders;
404
       this.placeHolders = this.campaign.placeHolders;
410
     },
405
     },
411
     // AddWeek(item) {
406
     // AddWeek(item) {
438
     }
433
     }
439
   },
434
   },
440
   computed: {
435
   computed: {
441
-    ...mapState("campaign", [
442
-      "campaign",
443
-      "campaignPlaceHolders",
444
-      "campaignItems"
445
-    ]),
436
+    ...mapState("campaign", ["campaign", "campaignPlaceHolders", "campaignItems"]),
446
     PlaceHolders() {
437
     PlaceHolders() {
447
       if (this.campaign && this.campaign.placeHolders) {
438
       if (this.campaign && this.campaign.placeHolders) {
448
         return this.campaign.placeHolders;
439
         return this.campaign.placeHolders;
469
     }
460
     }
470
   }
461
   }
471
 };
462
 };
472
-</script>
463
+</script>

+ 4
- 4
src/components/marketing/landingPages.vue Datei anzeigen

1
 <template>
1
 <template>
2
   <!-- eslint-disable max-len -->
2
   <!-- eslint-disable max-len -->
3
-  <div>
3
+  <main id="main" style="margin-top:-20px; padding-bottom:50px">
4
     <div class="container">
4
     <div class="container">
5
       <div class="container">
5
       <div class="container">
6
         <br />
6
         <br />
7
         <br />
7
         <br />
8
         <div class="row">
8
         <div class="row">
9
           <div class="col-md-12 col-lg-8">
9
           <div class="col-md-12 col-lg-8">
10
-            <div class="title-box-d">
11
-              <h1 class="title-d" style="text-align:left; font-size: 250%">Landing Pages</h1>
10
+            <div class="section-header">
11
+              <h2>Landing Pages</h2>
12
             </div>
12
             </div>
13
           </div>
13
           </div>
14
         </div>
14
         </div>
31
       />
31
       />
32
     </div>
32
     </div>
33
     <br />
33
     <br />
34
-  </div>
34
+  </main>
35
 </template>
35
 </template>
36
 
36
 
37
 <script>
37
 <script>

+ 101
- 105
src/components/misc/address.vue Datei anzeigen

1
 <template>
1
 <template>
2
-  <!-- eslint-disable max-len -->
3
-  <div>
4
-    <br />
5
-    <div class="col-md-12" style="text-align:centre">
6
-      <div class="myWell">
7
-        <h4>Address</h4>
8
-      </div>
9
-      <div class="form-group row"></div>
10
-      <div class="row" style="text-align:left">
11
-        <div class="col-md-6" style="margin-bottom: 1em">
12
-          <label>Street Number *</label>
13
-          <prop-field
14
-            :display="address.streetNumber"
15
-            :editType="'text'"
16
-            :propertyName="'streetNumber'"
17
-            :mayEdit="true"
18
-            @UpdateValue="UpdateValue"
2
+  <div class="form">
3
+    <div id="sendmessage">Your details has been sent. Thank you!</div>
4
+    <div id="errormessage"></div>
5
+    <form method="post" role="form" class="contactForm">
6
+      <div class="form-row">
7
+        <div class="form-group col-md-6">
8
+          <input
9
+            type="text"
10
+            name="street-nr"
11
+            class="form-control"
12
+            id="street-nr"
13
+            placeholder="Street Number"
14
+            data-rule="minlen:4"
15
+            data-msg="Please enter your street number"
16
+            v-model="address.streetNumber"
19
           />
17
           />
18
+          <div class="validation"></div>
20
         </div>
19
         </div>
21
-        <div class="col-md-6" style="margin-bottom: 1em">
22
-          <label>Street Name *</label>
23
-          <prop-field
24
-            :display="address.street"
25
-            :editType="'text'"
26
-            :propertyName="'street'"
27
-            :mayEdit="true"
28
-            @UpdateValue="UpdateValue"
20
+        <div class="form-group col-md-6">
21
+          <input
22
+            type="text"
23
+            class="form-control"
24
+            name="street"
25
+            id="street"
26
+            placeholder="Street Name"
27
+            data-msg="Please enter your street name"
28
+            v-model="address.street"
29
           />
29
           />
30
+          <div class="validation"></div>
30
         </div>
31
         </div>
31
-        <div class="col-md-6" style="margin-bottom: 1em">
32
-          <label>Province *</label>
33
-          <propField
34
-            :display="address.province"
35
-            :editType="'selector'"
36
-            :arrayObject="provinces"
37
-            :propertyName="'province'"
38
-            :mayEdit="true"
39
-            @UpdateValue="UpdateValue"
32
+        <div class="form-group col-md-6">
33
+          <input
34
+            type="text"
35
+            name="province"
36
+            class="form-control"
37
+            id="province"
38
+            placeholder="Province"
39
+            data-rule="minlen:4"
40
+            data-msg="Please enter your province"
41
+            v-model="address.province"
40
           />
42
           />
43
+          <div class="validation"></div>
41
         </div>
44
         </div>
42
-
43
-        <div class="col-md-6" style="margin-bottom: 1em">
44
-          <label>City *</label>
45
-          <propField
46
-            :display="address.city"
47
-            :editType="'selector'"
48
-            :arrayObject="cities"
49
-            :propertyName="'city'"
50
-            :mayEdit="true"
51
-            @UpdateValue="UpdateValue"
45
+        <div class="form-group col-md-6">
46
+          <input
47
+            type="text"
48
+            class="form-control"
49
+            name="city"
50
+            id="city"
51
+            placeholder="City"
52
+            data-rule="minlen:4"
53
+            data-msg="Please enter your city"
54
+            v-model="address.city"
52
           />
55
           />
56
+          <div class="validation"></div>
53
         </div>
57
         </div>
54
-        <div class="col-md-6" style="margin-bottom: 1em">
55
-          <label>Suburb *</label>
56
-          <propField
57
-            :display="address.suburb"
58
-            :editType="'selector'"
59
-            :arrayObject="suburbs"
60
-            :propertyName="'suburb'"
61
-            :mayEdit="true"
62
-            @UpdateValue="UpdateValue"
58
+        <div class="form-group col-md-6">
59
+          <input
60
+            type="text"
61
+            name="suburb"
62
+            class="form-control"
63
+            id="suburb"
64
+            placeholder="Suburb"
65
+            data-rule="minlen:4"
66
+            data-msg="Please enter your suburb"
67
+            v-model="address.suburb"
63
           />
68
           />
69
+          <div class="validation"></div>
64
         </div>
70
         </div>
65
-        <div class="col-md-6" style="margin-bottom: 1em">
66
-          <label>Postal Code *</label>
67
-          <propField
68
-            :display="address.postalCode"
69
-            :editType="'text'"
70
-            :propertyName="'postalCode'"
71
-            :mayEdit="true"
72
-            @UpdateValue="UpdateValue"
71
+        <div class="form-group col-md-6">
72
+          <input
73
+            type="text"
74
+            class="form-control"
75
+            name="postal"
76
+            id="postal"
77
+            placeholder="Postal Code"
78
+            data-msg="Please enter your postal code"
79
+            v-model="address.postalCode"
73
           />
80
           />
81
+          <div class="validation"></div>
74
         </div>
82
         </div>
75
       </div>
83
       </div>
76
-    </div>
84
+    </form>
77
   </div>
85
   </div>
78
 </template>
86
 </template>
79
 
87
 
80
 <script>
88
 <script>
81
-import { mapState, mapActions } from 'vuex';
82
-import propField from '../property/propertyFieldEditor.vue';
89
+/* eslint-disable */
90
+import { mapState, mapActions } from "vuex";
91
+import propField from "../property/propertyFieldEditor.vue";
83
 
92
 
84
 export default {
93
 export default {
85
   components: {
94
   components: {
86
-    propField,
95
+    propField
87
   },
96
   },
88
   data() {
97
   data() {
89
     return {
98
     return {
90
-      propertyType: 'Residential',
99
+      propertyType: "Residential"
91
     };
100
     };
92
   },
101
   },
93
   props: {
102
   props: {
94
-    address: {},
103
+    address: {}
95
   },
104
   },
96
   computed: {
105
   computed: {
97
-    ...mapState('searchTab', ['provinces', 'cities', 'suburbs']),
106
+    ...mapState("searchTab", ["provinces", "cities", "suburbs"])
98
   },
107
   },
99
   methods: {
108
   methods: {
100
-    ...mapActions('searchTab', ['getProvince', 'getCities', 'getSuburbs']),
109
+    ...mapActions("searchTab", ["getProvince", "getCities", "getSuburbs"]),
101
     ProvinceSelected(item) {
110
     ProvinceSelected(item) {
102
       if (item.target.options.selectedIndex > 0) {
111
       if (item.target.options.selectedIndex > 0) {
103
-        this.selectedProvince = this.provinces[
104
-          item.target.options.selectedIndex - 1
105
-        ].description;
112
+        this.selectedProvince = this.provinces[item.target.options.selectedIndex - 1].description;
106
         this.getCities(Object.assign({}, { province: this.selectedProvince }));
113
         this.getCities(Object.assign({}, { province: this.selectedProvince }));
107
       }
114
       }
108
     },
115
     },
109
     CitySelected(item) {
116
     CitySelected(item) {
110
       if (item.target.options.selectedIndex > 0) {
117
       if (item.target.options.selectedIndex > 0) {
111
-        this.selectedCity = this.cities[
112
-          item.target.options.selectedIndex - 1
113
-        ].description;
118
+        this.selectedCity = this.cities[item.target.options.selectedIndex - 1].description;
114
         this.getSuburbs(
119
         this.getSuburbs(
115
-          Object.assign(
116
-            {},
117
-            { province: this.selectedProvince, city: this.selectedCity },
118
-          ),
120
+          Object.assign({}, { province: this.selectedProvince, city: this.selectedCity })
119
         );
121
         );
120
       }
122
       }
121
     },
123
     },
122
     getPostalCode(item) {
124
     getPostalCode(item) {
123
-      this.address.postalCode = this.suburbs[
124
-        item.target.options.selectedIndex - 1
125
-      ].postalCode;
125
+      this.address.postalCode = this.suburbs[item.target.options.selectedIndex - 1].postalCode;
126
     },
126
     },
127
     UpdateValue(item) {
127
     UpdateValue(item) {
128
       if (item.fieldName) {
128
       if (item.fieldName) {
129
-        if (item.fieldName === 'streetNumber') {
129
+        if (item.fieldName === "streetNumber") {
130
           this.address.streetNumber = item.value;
130
           this.address.streetNumber = item.value;
131
         }
131
         }
132
-        if (item.fieldName === 'street') {
132
+        if (item.fieldName === "street") {
133
           this.address.street = item.value;
133
           this.address.street = item.value;
134
         }
134
         }
135
-        if (item.fieldName === 'province') {
136
-          if (item.value !== '') {
135
+        if (item.fieldName === "province") {
136
+          if (item.value !== "") {
137
             this.address.province = item.value;
137
             this.address.province = item.value;
138
             this.getCities(Object.assign({}, { province: item.value }));
138
             this.getCities(Object.assign({}, { province: item.value }));
139
             this.address.city = null;
139
             this.address.city = null;
140
             this.address.suburb = null;
140
             this.address.suburb = null;
141
-            this.address.postalCode = '';
141
+            this.address.postalCode = "";
142
           } else {
142
           } else {
143
             this.address.province = null;
143
             this.address.province = null;
144
             this.address.city = null;
144
             this.address.city = null;
145
             this.address.suburb = null;
145
             this.address.suburb = null;
146
-            this.address.postalCode = '';
146
+            this.address.postalCode = "";
147
             this.cities = [];
147
             this.cities = [];
148
             this.suburbs = [];
148
             this.suburbs = [];
149
           }
149
           }
150
         }
150
         }
151
-        if (item.fieldName === 'city') {
152
-          if (item.value !== '') {
151
+        if (item.fieldName === "city") {
152
+          if (item.value !== "") {
153
             this.address.city = item.value;
153
             this.address.city = item.value;
154
             // this.address.city = newCity;
154
             // this.address.city = newCity;
155
             // this.address.cityId = newCity.id;
155
             // this.address.cityId = newCity.id;
158
                 {},
158
                 {},
159
                 {
159
                 {
160
                   province: item.value,
160
                   province: item.value,
161
-                  city: item.value,
162
-                },
163
-              ),
161
+                  city: item.value
162
+                }
163
+              )
164
             );
164
             );
165
             this.address.suburb = null;
165
             this.address.suburb = null;
166
-            this.address.postalCode = '';
166
+            this.address.postalCode = "";
167
           } else {
167
           } else {
168
             this.address.city = null;
168
             this.address.city = null;
169
             this.address.suburb = null;
169
             this.address.suburb = null;
170
-            this.address.postalCode = '';
170
+            this.address.postalCode = "";
171
             this.suburbs = [];
171
             this.suburbs = [];
172
           }
172
           }
173
         }
173
         }
174
-        if (item.fieldName === 'suburb') {
175
-          if (item.value !== '') {
174
+        if (item.fieldName === "suburb") {
175
+          if (item.value !== "") {
176
             // const newSuburb = this.suburbs.find(
176
             // const newSuburb = this.suburbs.find(
177
             //   p => p.description === item.value,
177
             //   p => p.description === item.value,
178
             // );
178
             // );
183
             this.address.postalCode = this.address.suburb.postalCode;
183
             this.address.postalCode = this.address.suburb.postalCode;
184
           } else {
184
           } else {
185
             this.address.suburb = null;
185
             this.address.suburb = null;
186
-            this.address.postalCode = '';
186
+            this.address.postalCode = "";
187
           }
187
           }
188
         }
188
         }
189
       }
189
       }
190
-    },
190
+    }
191
   },
191
   },
192
   mounted() {
192
   mounted() {
193
     this.getProvince();
193
     this.getProvince();
194
-  },
194
+  }
195
 };
195
 };
196
 </script>
196
 </script>
197
 
197
 
198
-<style>
199
-.goDown {
200
-  margin-top: 150px;
201
-}
202
-</style>
198
+<style lang="scss" scoped></style>

+ 68
- 117
src/components/processFlow/makeOffer.vue Datei anzeigen

1
 <template>
1
 <template>
2
   <!-- eslint-disable max-len -->
2
   <!-- eslint-disable max-len -->
3
-  <div style="padding-left:50px; padding-right:50px; padding-bottom:50px;">
3
+  <div style="padding-left:30px; padding-right:30px; padding-bottom:30px;">
4
     <div v-if="!isLoggedIn">
4
     <div v-if="!isLoggedIn">
5
       <div class="container col-md-10">
5
       <div class="container col-md-10">
6
         <p class="alert myError">Please Login to add a property</p>
6
         <p class="alert myError">Please Login to add a property</p>
34
         <div v-if="!isProperty">
34
         <div v-if="!isProperty">
35
           <div class="form-group row">
35
           <div class="form-group row">
36
             <div style="text-align:left">
36
             <div style="text-align:left">
37
-              <div class="title-box-d">
38
-                <h3 class="title-d">
39
-                  {{ item.resort.resortName ? item.resort.resortName : item.resort }}
40
-                </h3>
37
+              <div class="intro-content">
38
+                <h2>{{ item.resort.resortName ? item.resort.resortName : item.resort }}</h2>
41
               </div>
39
               </div>
42
             </div>
40
             </div>
43
           </div>
41
           </div>
44
           <div class="form-group row">
42
           <div class="form-group row">
45
-            <div class="col-md-6">
46
-              <label for="resortunit">Unit</label>
47
-              <div class="input-group mb-3">
48
-                <div class="input-group-prepend">
49
-                  <span class="input-group-text" style="color: #60CBEB">
50
-                    <b>U#</b>
51
-                  </span>
52
-                </div>
53
-                <input
54
-                  class="form-control"
55
-                  type="text"
56
-                  id="resort"
57
-                  name="resortunit"
58
-                  disabled
59
-                  v-model="item.unitNumber"
60
-                />
61
-              </div>
43
+            <div class="col-md-12">
44
+              <label for="resortunit">Unit:</label>
45
+              <h5>{{ item.unitNumber }}</h5>
62
             </div>
46
             </div>
63
-            <div class="col-md-6">
64
-              <label for="resortWeek">Module / Week Number</label>
65
-              <div class="input-group mb-3">
66
-                <div class="input-group-prepend">
67
-                  <span class="input-group-text" style="color: #60CBEB">
68
-                    <b>M</b>
69
-                  </span>
70
-                </div>
71
-                <input
72
-                  class="form-control"
73
-                  type="text"
74
-                  id="week"
75
-                  name="resortWeek"
76
-                  disabled
77
-                  v-model="item.weekNumber"
78
-                />
79
-              </div>
47
+            <div class="col-md-12">
48
+              <label for="resortWeek">Module / Week Number:</label>
49
+              <h5>{{ item.weekNumber }}</h5>
80
             </div>
50
             </div>
81
           </div>
51
           </div>
82
         </div>
52
         </div>
83
         <div class="form-group row">
53
         <div class="form-group row">
84
-          <div class="col-md-6">
85
-            <label>Current Price</label>
86
-            <div class="input-group mb-3">
87
-              <div class="input-group-prepend">
88
-                <span class="input-group-text" style="color: #60CBEB">
89
-                  <b>R</b>
90
-                </span>
91
-              </div>
92
-              <input
93
-                v-if="isProperty"
94
-                class="form-control"
95
-                type="number"
96
-                v-model="item.price"
97
-                disabled
98
-              />
99
-              <input v-else class="form-control" type="number" v-model="item.sellPrice" disabled />
100
-            </div>
54
+          <div class="col-md-12">
55
+            <label>Current Price:</label>
56
+            <h4>{{ item.sellPrice | toCurrency }}</h4>
101
           </div>
57
           </div>
102
-          <div class="col-md-6">
103
-            <label>Offer</label>
104
-            <div class="input-group mb-3">
105
-              <div class="input-group-prepend">
106
-                <span class="input-group-text" style="color: #60CBEB">
107
-                  <b>R</b>
108
-                </span>
109
-              </div>
110
-              <input
111
-                class="form-control"
112
-                type="number"
113
-                step="any"
114
-                id="minPrice"
115
-                name="minPrice"
116
-                v-model="item.offer"
117
-                :disabled="!isMakeOffer"
118
-              />
119
-            </div>
58
+          <div class="col-md-12">
59
+            <label>Offer:</label>
60
+
61
+            <input
62
+              class="form-control"
63
+              type="number"
64
+              step="any"
65
+              id="minPrice"
66
+              name="minPrice"
67
+              v-model="item.offer"
68
+              :disabled="!isMakeOffer"
69
+            />
120
           </div>
70
           </div>
121
         </div>
71
         </div>
122
         <div class="form-group row">
72
         <div class="form-group row">
132
         </div>
82
         </div>
133
       </div>
83
       </div>
134
       <div v-if="!isSaved" class="container">
84
       <div v-if="!isSaved" class="container">
135
-        <button
136
-          v-if="isMakeOffer"
137
-          type="button"
138
-          @click="SendOffer()"
139
-          class="btn btn-b-n"
140
-          style="width: 150px; height:40px;"
141
-        >
142
-          Send Offer
143
-        </button>
144
-        <button
145
-          v-if="!isMakeOffer && !isDecline && canEdit"
146
-          type="submit"
147
-          @click="Accept()"
148
-          class="btn btn-b-n"
149
-          style="width: 150px; height:40px;"
150
-        >
151
-          Accept
152
-        </button>
153
-        <button
154
-          v-if="!isMakeOffer && !isDecline && canEdit"
155
-          type="button"
156
-          @click="Decline()"
157
-          class="btn btn-b-n"
158
-          style="width: 150px; height:40px;"
159
-        >
160
-          Decline
161
-        </button>
85
+        <div class="row">
86
+          <div algin="center" class="col">
87
+            <button v-if="isMakeOffer" type="button" @click="SendOffer()" class="btn-solid-blue">
88
+              Send Offer
89
+            </button>
90
+            <button
91
+              v-if="!isMakeOffer && !isDecline && canEdit"
92
+              type="submit"
93
+              @click="Accept()"
94
+              class="btn btn-b-n"
95
+              style="width: 150px; height:40px;"
96
+            >
97
+              Accept
98
+            </button>
99
+            <button
100
+              v-if="!isMakeOffer && !isDecline && canEdit"
101
+              type="button"
102
+              @click="Decline()"
103
+              class="btn btn-b-n"
104
+              style="width: 150px; height:40px;"
105
+            >
106
+              Decline
107
+            </button>
108
+          </div>
109
+        </div>
162
       </div>
110
       </div>
163
       <div v-if="isDecline || item.statusCode === 'E3'" class="form-group row">
111
       <div v-if="isDecline || item.statusCode === 'E3'" class="form-group row">
164
         <div class="col-md-12">
112
         <div class="col-md-12">
203
 </template>
151
 </template>
204
 
152
 
205
 <script>
153
 <script>
206
-import { mapState, mapActions } from 'vuex';
207
-import Log from '../../assets/Log';
154
+/* eslint-disable */
155
+import { mapState, mapActions } from "vuex";
156
+import Log from "../../assets/Log";
208
 
157
 
209
 export default {
158
 export default {
210
-  name: 'MakeOffer',
159
+  name: "MakeOffer",
211
   props: {
160
   props: {
212
     isMakeOffer: Boolean,
161
     isMakeOffer: Boolean,
213
     isProperty: Boolean,
162
     isProperty: Boolean,
214
     canEdit: Boolean,
163
     canEdit: Boolean,
215
     item: Object,
164
     item: Object,
216
     bidId: Number,
165
     bidId: Number,
217
-    updateItem: Function,
166
+    updateItem: Function
218
   },
167
   },
219
   data() {
168
   data() {
220
     return {
169
     return {
221
       isDecline: false,
170
       isDecline: false,
222
       isSaved: false,
171
       isSaved: false,
223
-      message: '',
172
+      message: "",
224
       isInfo: true,
173
       isInfo: true,
225
-      isLoggedIn: Log.isLoggedIn(),
174
+      isLoggedIn: Log.isLoggedIn()
226
     };
175
     };
227
   },
176
   },
228
   methods: {
177
   methods: {
229
-    ...mapActions('bid', ['getBid', 'saveBid', 'acceptBid', 'declineBid']),
178
+    ...mapActions("bid", ["getBid", "saveBid", "acceptBid", "declineBid"]),
230
     SendOffer() {
179
     SendOffer() {
231
-      alert('Under Development');
180
+      alert("Under Development");
232
       // this.getBid(0);
181
       // this.getBid(0);
233
       // this.bidItem.id = 0;
182
       // this.bidItem.id = 0;
234
       // this.bidItem.amount = this.item.offer;
183
       // this.bidItem.amount = this.item.offer;
248
     Accept() {
197
     Accept() {
249
       this.acceptBid(this.item.id);
198
       this.acceptBid(this.item.id);
250
       this.isSaved = true;
199
       this.isSaved = true;
251
-      this.message = 'Offer Accepted.';
200
+      this.message = "Offer Accepted.";
252
       this.isInfo = true;
201
       this.isInfo = true;
253
     },
202
     },
254
     Decline() {
203
     Decline() {
259
 
208
 
260
       const decline = {
209
       const decline = {
261
         id: this.item.id,
210
         id: this.item.id,
262
-        comment: this.item.declineReason,
211
+        comment: this.item.declineReason
263
       };
212
       };
264
 
213
 
265
       this.declineBid(decline);
214
       this.declineBid(decline);
266
       this.isSaved = true;
215
       this.isSaved = true;
267
-      this.message = 'Offer Declined.';
216
+      this.message = "Offer Declined.";
268
       this.isInfo = false;
217
       this.isInfo = false;
269
-    },
218
+    }
270
   },
219
   },
271
   computed: {
220
   computed: {
272
-    ...mapState('bid', ['bidIt,em']),
221
+    ...mapState("bid", ["bidIt,em"])
273
   },
222
   },
274
   watch: {
223
   watch: {
275
     item() {
224
     item() {
276
       this.isSaved = false;
225
       this.isSaved = false;
277
-      this.canEdit = this.item.statusCode === 'E1';
278
-    },
279
-  },
226
+      this.canEdit = this.item.statusCode === "E1";
227
+    }
228
+  }
280
 };
229
 };
281
 </script>
230
 </script>
231
+
232
+<style lang="scss" scoped></style>

+ 16
- 17
src/components/processFlow/offers.vue Datei anzeigen

1
 <template>
1
 <template>
2
-  <div>
2
+  <main id="main" style="margin-top:-20px; padding-bottom:50px">
3
     <div class="container">
3
     <div class="container">
4
-      <br />
5
       <div class="row">
4
       <div class="row">
6
         <div class="col-md-12 col-lg-8">
5
         <div class="col-md-12 col-lg-8">
7
-          <div class="title-box-d">
8
-            <h1 class="title-d" style="text-align:left; font-size: 250%">Bid Offers</h1>
6
+          <div class="section-header">
7
+            <h2>Bid Offers</h2>
9
           </div>
8
           </div>
10
         </div>
9
         </div>
11
       </div>
10
       </div>
42
         </div>
41
         </div>
43
       </div>
42
       </div>
44
     </div>
43
     </div>
45
-  </div>
44
+  </main>
46
 </template>
45
 </template>
47
 
46
 
48
 <script>
47
 <script>
49
-import { mapState, mapActions } from 'vuex';
50
-import makeOffer from './makeOffer.vue';
51
-import listView from '../shared/listView.vue';
48
+import { mapState, mapActions } from "vuex";
49
+import makeOffer from "./makeOffer.vue";
50
+import listView from "../shared/listView.vue";
52
 
51
 
53
 export default {
52
 export default {
54
-  name: 'offers',
53
+  name: "offers",
55
   components: { makeOffer, listView },
54
   components: { makeOffer, listView },
56
   data() {
55
   data() {
57
     return {
56
     return {
58
       item: {},
57
       item: {},
59
-      columns: ['date', 'type', 'shortDescription', 'status', 'price', 'offer', 'madeBy'],
60
-      formats: ['date', 'text', 'text', 'text', 'money', 'money', 'text'],
61
-      columnHeaders: ['', '', 'description', '', '', 'offerPrice', 'offerBy'],
58
+      columns: ["date", "type", "shortDescription", "status", "price", "offer", "madeBy"],
59
+      formats: ["date", "text", "text", "text", "money", "money", "text"],
60
+      columnHeaders: ["", "", "description", "", "", "offerPrice", "offerBy"]
62
     };
61
     };
63
   },
62
   },
64
   methods: {
63
   methods: {
65
-    ...mapActions('bid', ['getBids']),
64
+    ...mapActions("bid", ["getBids"]),
66
     Edit(item) {
65
     Edit(item) {
67
       this.item = item;
66
       this.item = item;
68
 
67
 
69
       const element = this.$refs.MyModalForm;
68
       const element = this.$refs.MyModalForm;
70
-      $(element).modal('show');
71
-    },
69
+      $(element).modal("show");
70
+    }
72
   },
71
   },
73
   computed: {
72
   computed: {
74
-    ...mapState('bid', ['bidItems']),
73
+    ...mapState("bid", ["bidItems"])
75
   },
74
   },
76
   mounted() {
75
   mounted() {
77
     this.getBids();
76
     this.getBids();
78
-  },
77
+  }
79
 };
78
 };
80
 </script>
79
 </script>

+ 158
- 0
src/components/property/commercial/commercialCarouselSection.vue Datei anzeigen

1
+<template>
2
+  <section id="intro">
3
+    <div class="container">
4
+      <div class="row">
5
+        <div align="left" class="col-sm-12 col-md-8">
6
+          <div class="intro-content">
7
+            <h2>Find an Office</h2>
8
+
9
+            <ul class="nav nav-pills mb-3" id="pills-tab" role="tablist">
10
+              <li class="nav-item">
11
+                <a
12
+                  class="nav-link btn-white-border"
13
+                  id="buy-tab"
14
+                  data-toggle="pill"
15
+                  href="#buy"
16
+                  role="tab"
17
+                  aria-controls="buy"
18
+                  aria-selected="true"
19
+                  @click="SetSalesType('Sale')"
20
+                  >Buy office space</a
21
+                >
22
+              </li>
23
+              <li class="nav-item">
24
+                <a
25
+                  class="nav-link btn-white-border"
26
+                  id="rent-tab"
27
+                  data-toggle="pill"
28
+                  href="#rent"
29
+                  role="tab"
30
+                  aria-controls="rent"
31
+                  aria-selected="false"
32
+                  @click="SetSalesType('Rent')"
33
+                  >Rent an office</a
34
+                >
35
+              </li>
36
+            </ul>
37
+            <div class="tab-content" id="pills-tabContent">
38
+              <div
39
+                class="tab-pane fade show active"
40
+                id="start"
41
+                role="tabpanel"
42
+                aria-labelledby="start-tab"
43
+              >
44
+                <p></p>
45
+              </div>
46
+
47
+              <div class="tab-pane fade show" id="buy" role="tabpanel" aria-labelledby="buy-tab">
48
+                <h4>PROPERTIES FOR SALE</h4>
49
+                <div class="row">
50
+                  <div class="form-group col-md-12">
51
+                    <autoComplete
52
+                      align="left"
53
+                      class="col-md-11 offset-1"
54
+                      :items="suburbList"
55
+                      @selection="SelectedFilter"
56
+                      style="width:100%; margin-left:-15px"
57
+                    />
58
+                  </div>
59
+                </div>
60
+                <a v-on:click="SearchClick" class="btn-solid-blue"
61
+                  ><i class="fa fa-search"></i> SEARCH</a
62
+                >
63
+              </div>
64
+
65
+              <div class="tab-pane fade" id="rent" role="tabpanel" aria-labelledby="rent-tab">
66
+                <h4>RENTAL PROPERTIES</h4>
67
+                <div class="row">
68
+                  <div class="form-group col-md-12">
69
+                    <autoComplete
70
+                      align="left"
71
+                      class="col-md-11 offset-1"
72
+                      :items="suburbList"
73
+                      @selection="SelectedFilter"
74
+                      style="width:100%; margin-left:-15px"
75
+                    />
76
+                  </div>
77
+                </div>
78
+                <a v-on:click="SearchClick" class="btn-solid-blue"
79
+                  ><i class="fa fa-search"></i> FIND</a
80
+                >
81
+              </div>
82
+            </div>
83
+          </div>
84
+        </div>
85
+      </div>
86
+    </div>
87
+
88
+    <carousel
89
+      :nav="false"
90
+      :dots="false"
91
+      :items="1"
92
+      :autoplay="true"
93
+      :loop="true"
94
+      id="intro-carousel"
95
+      style="margin-top:-50px"
96
+      :responsive="{ 0: { items: 1, nav: false }, 600: { items: 1, nav: false } }"
97
+    >
98
+      <img class="item" src="img/intro-carousel/comm-1.jpg" alt="" />
99
+      <img class="item" src="img/intro-carousel/comm-2.jpg" alt="" />
100
+      <img class="item" src="img/intro-carousel/comm-3.jpg" alt="" />
101
+      <img class="item" src="img/intro-carousel/comm-4.jpg" alt="" />
102
+      <img class="item" src="img/intro-carousel/comm-5.jpg" alt="" />
103
+      <img class="item" src="img/intro-carousel/comm-6.jpg" alt="" />
104
+    </carousel>
105
+
106
+    <div id="intro-carousel" class="owl-carousel"></div>
107
+  </section>
108
+</template>
109
+
110
+<script>
111
+/* eslint-disable */
112
+import { mapState, mapActions } from "vuex";
113
+import autoComplete from "../../shared/autoComplete";
114
+import carousel from "vue-owl-carousel";
115
+import searchResult from "./commercialSearchResults";
116
+export default {
117
+  components: {
118
+    carousel,
119
+    autoComplete,
120
+    searchResult
121
+  },
122
+  data() {
123
+    return {
124
+      propertyUsageType: "Commercial",
125
+      salesType: "Sale",
126
+      searchText: "",
127
+      clicked: false
128
+    };
129
+  },
130
+  computed: {
131
+    ...mapState("propertySearch", ["suburbs", "suburbList", "propertySearch"])
132
+  },
133
+  methods: {
134
+    ...mapActions("propertySearch", ["getSuburbs", "applyFilter"]),
135
+    SetSalesType(value) {
136
+      this.salesType = value;
137
+    },
138
+    SearchClick() {
139
+      const item = this.suburbs.find(s => s.display === this.searchText);
140
+      this.propertySearch.province = item.province;
141
+      this.propertySearch.city = item.city;
142
+      this.propertySearch.suburb = item.suburb;
143
+      this.propertySearch.propertyUsageType = this.propertyUsageType;
144
+      this.propertySearch.salesType = this.salesType;
145
+
146
+      this.$router.push("/property/commercial/searchResult");
147
+    },
148
+    SelectedFilter(item) {
149
+      this.searchText = item;
150
+    }
151
+  },
152
+  mounted() {
153
+    this.getSuburbs();
154
+  }
155
+};
156
+</script>
157
+
158
+<style lang="scss" scoped></style>

+ 19
- 0
src/components/property/commercial/commercialContentSection.vue Datei anzeigen

1
+<template>
2
+  <section id="services">
3
+    <div class="container">
4
+      <div class="section-header">
5
+        <p>
6
+          Uni-Vate Properties seeks out professional, clean spaces for such companies and acts as
7
+          mediator between the landlord/-lady and the tenants. Uni-Vate Properties provides
8
+          value-adding service to clients and conducts business with a high standard and integrity.
9
+        </p>
10
+      </div>
11
+    </div>
12
+  </section>
13
+</template>
14
+
15
+<script>
16
+export default {};
17
+</script>
18
+
19
+<style lang="scss" scoped></style>

+ 34
- 0
src/components/property/commercial/commercialPage.vue Datei anzeigen

1
+<template>
2
+  <div>
3
+    <carouselSection />
4
+    <main id="main">
5
+      <contentSection data-aos="fade-left" />
6
+      <latestListings
7
+        data-aos="fade-up"
8
+        data-aos-anchor-placement="center-bottom"
9
+        data-aos-delay="150"
10
+      />
11
+    </main>
12
+  </div>
13
+</template>
14
+
15
+<script>
16
+/* eslint-disable */
17
+import carouselSection from "./commercialCarouselSection";
18
+import contentSection from "./commercialContentSection";
19
+import latestListings from "./latestListings";
20
+import AOS from "aos";
21
+import "aos/dist/aos.css";
22
+export default {
23
+  created() {
24
+    AOS.init();
25
+  },
26
+  components: {
27
+    carouselSection,
28
+    contentSection,
29
+    latestListings
30
+  }
31
+};
32
+</script>
33
+
34
+<style lang="scss" scoped></style>

+ 109
- 0
src/components/property/commercial/commercialSearchResults.vue Datei anzeigen

1
+<template>
2
+  <main id="main" style="margin-top:-20px; padding-bottom:50px">
3
+    <section>
4
+      <div class="container">
5
+        <div class="row pt-5  justify-content-md-center">
6
+          <h3 v-if="propertySearch.salesType === 'Sale'">COMMERCIAL PROPERTIES FOR SALE</h3>
7
+          <h3 v-else-if="propertySearch.salesType === 'Rent'">COMMERCIAL PROPERTIES FOR RENT</h3>
8
+        </div>
9
+        <div v-if="properties.length > 0" class="row justify-content-md-center">
10
+          <div
11
+            class="col-lg-3 col-md-6 col-sm-6"
12
+            v-for="currentProperty in properties"
13
+            :key="currentProperty.id"
14
+          >
15
+            <div>
16
+              <div class="portfolio-item">
17
+                <img style="width:255px; height:255px" :src="currentProperty.displayImage" alt="" />
18
+
19
+                <h4 class="mt-3">{{ currentProperty.suburb }}</h4>
20
+                <p>
21
+                  Opposite Monument Park Spar, Pretoria! Secure Parking. A stand-alone building,
22
+                  situated in the best location. Incredible bargain!
23
+                </p>
24
+                <br />
25
+
26
+                <!-- <a href="commercialproperty-page.php" class="btn-white-border">VIEW</a> -->
27
+                <router-link
28
+                  class="btn-white-border"
29
+                  :to="`/property/commercial/property/${currentProperty.id}`"
30
+                  >VIEW</router-link
31
+                >
32
+              </div>
33
+            </div>
34
+          </div>
35
+        </div>
36
+        <div v-else class="row">
37
+          <div align="center" class="col-md-12">
38
+            <img src="img/no-homes.png" />
39
+            <br />
40
+            <br />
41
+            <p>Sorry no listing where found matching your search</p>
42
+          </div>
43
+        </div>
44
+      </div>
45
+    </section>
46
+  </main>
47
+</template>
48
+
49
+<script>
50
+/* eslint-disable */
51
+import { mapState, mapActions } from "vuex";
52
+import propertyCard from "../propertyCard";
53
+
54
+export default {
55
+  name: "propertysearch",
56
+  components: {
57
+    propertyCard
58
+  },
59
+  data() {
60
+    return {};
61
+  },
62
+  mounted() {
63
+    console.log(this.propertySearch.salesType);
64
+
65
+    if (typeof this.propertySearch.propertyUsageType === "undefined") {
66
+      this.propertySearch.propertyUsageType = "Residential";
67
+    }
68
+    if (this.user) {
69
+      this.propertySearch.userName = this.user.username;
70
+    }
71
+
72
+    this.searchProperties(this.propertySearch);
73
+  },
74
+  methods: {
75
+    ...mapActions("propertySearch", [
76
+      "searchProperties",
77
+      "clearProperties",
78
+      "updateResultsShowing"
79
+    ]),
80
+    SetType(item) {
81
+      this.propertySearch.propertyUsageType = item;
82
+    },
83
+    SearchPage() {
84
+      this.clearProperties();
85
+      this.$router.push("/property/search");
86
+    }
87
+  },
88
+  computed: {
89
+    ...mapState("propertySearch", ["properties", "propertySearch", "resultsShowing"]),
90
+    ...mapState("authentication", ["user"]),
91
+    ParamsChanged() {
92
+      console.log(JSON.stringify(this.propertySearch));
93
+      if (typeof this.propertySearch.propertyUsageType === "undefined") {
94
+        // eslint-disable-next-line vue/no-side-effects-in-computed-properties
95
+        this.propertySearch.propertyUsageType = "Residential";
96
+      }
97
+      this.searchProperties(this.propertySearch);
98
+      return null;
99
+    }
100
+  },
101
+  watch: {
102
+    ParamsChanged() {
103
+      return null;
104
+    }
105
+  }
106
+};
107
+</script>
108
+
109
+<style lang="scss" scoped></style>

+ 49
- 0
src/components/property/commercial/latestListings.vue Datei anzeigen

1
+<template>
2
+  <main id="main">
3
+    <section id="portfolio">
4
+      <div class="container">
5
+        <div class="row">
6
+          <div class="col-lg-12">
7
+            <h2>Latest Listings</h2>
8
+          </div>
9
+        </div>
10
+      </div>
11
+      <div class="contianer">
12
+        <div class="row">
13
+          <div class="col">
14
+            <propertyCard
15
+              v-if="properties.length > 0"
16
+              name="propertyholder"
17
+              :properties="properties"
18
+              :showSort="false"
19
+            />
20
+          </div>
21
+        </div>
22
+      </div>
23
+    </section>
24
+  </main>
25
+</template>
26
+
27
+<script>
28
+/* eslint-disable */
29
+import { mapState, mapActions } from "vuex";
30
+import propertyCard from "../propertyCard";
31
+export default {
32
+  components: {
33
+    propertyCard
34
+  },
35
+  methods: {
36
+    ...mapActions("propertySearch", ["searchProperties"])
37
+  },
38
+  mounted() {
39
+    this.propertySearch.propertyUsageType = "Commercial";
40
+
41
+    this.searchProperties(this.propertySearch);
42
+  },
43
+  computed: {
44
+    ...mapState("propertySearch", ["properties", "propertySearch"])
45
+  }
46
+};
47
+</script>
48
+
49
+<style lang="scss" scoped></style>

+ 46
- 0
src/components/property/commercial/singleView/carouselSection.vue Datei anzeigen

1
+<template>
2
+  <section id="intro">
3
+    <div>
4
+      <carousel
5
+        :nav="false"
6
+        :dots="false"
7
+        :items="1"
8
+        :autoplay="true"
9
+        :loop="true"
10
+        :autoHeight="true"
11
+        id="intro-carousel"
12
+        style="margin-top:-50px;"
13
+        :responsive="{ 0: { items: 1, nav: false }, 600: { items: 1, nav: false } }"
14
+      >
15
+        <img
16
+          class="item"
17
+          style="object-fit:cover"
18
+          v-for="(image, i) in propertyImages"
19
+          :src="image"
20
+          :key="i"
21
+        />
22
+      </carousel>
23
+    </div>
24
+  </section>
25
+</template>
26
+
27
+<script>
28
+/* eslint-disable */
29
+
30
+import carousel from "vue-owl-carousel";
31
+export default {
32
+  components: {
33
+    carousel
34
+  },
35
+  data() {
36
+    return {
37
+      images: []
38
+    };
39
+  },
40
+  props: {
41
+    propertyImages: {}
42
+  }
43
+};
44
+</script>
45
+
46
+<style lang="scss" scoped></style>

+ 146
- 0
src/components/property/commercial/singleView/contentSection.vue Datei anzeigen

1
+<template>
2
+  <section>
3
+    <div class="container">
4
+      <div class="row" id="resort-profile">
5
+        <div class="col-md-4">
6
+          <div class="resPortfolioSection">
7
+            <div v-for="(image, i) in propertyImages" @click="index = i" :key="i">
8
+              <div v-if="i < 3">
9
+                <img
10
+                  v-if="i === 0"
11
+                  style="width:100%; height:201px;object-fit: cover"
12
+                  :src="image"
13
+                />
14
+                <div v-else-if="i !== 0">
15
+                  <img
16
+                    v-if="i % 2 === 0"
17
+                    style="width:50%; height:140px; float:right;"
18
+                    :src="image"
19
+                  />
20
+                  <img v-else style="width:50%; height:140px; float:left" :src="image" />
21
+                </div>
22
+              </div>
23
+            </div>
24
+
25
+            <gallery :images="propertyImages" :index="index" @close="index = null"></gallery>
26
+          </div>
27
+
28
+          <div class="panel-left p-5" style="margin-top:140px; margin-bottom:50px">
29
+            <h2>Property Detial</h2>
30
+            <p>{{ property.addressLine1 }}</p>
31
+            <p>Town, Suburb</p>
32
+            <p>{{ property.shortDescription }}</p>
33
+            <p>{{ property.price }}</p>
34
+            <div class="btn-white-border"><i class="fa fa-search"></i>BOOK A VIEWING</div>
35
+          </div>
36
+        </div>
37
+        <div class="col-md-8 p-5 resort-profile">
38
+          <h2>{{ property.propertyName }} / {{ property.addressLine1 }}</h2>
39
+          <div>
40
+            <table class="table table-striped">
41
+              <thead>
42
+                <tr>
43
+                  <th scope="col">Reference</th>
44
+                  <th scope="col">Size</th>
45
+                  <th scope="col">Location</th>
46
+                  <th scope="col">Kitchen</th>
47
+                  <th scope="col">Extras</th>
48
+                  <th scope="col"></th>
49
+                </tr>
50
+              </thead>
51
+              <tbody>
52
+                <tr>
53
+                  <td>#123456</td>
54
+                  <td>#m2</td>
55
+                  <td>Second Floor</td>
56
+                  <td>yes</td>
57
+                  <td>open plan</td>
58
+                  <td><a href="#" class="btn-solid-blue">BOOK A VIEWING</a></td>
59
+                </tr>
60
+                <tr>
61
+                  <td>#123456</td>
62
+                  <td>#m2</td>
63
+                  <td>Top Floor</td>
64
+                  <td>yes</td>
65
+                  <td>open plan</td>
66
+                  <td><a href="#" class="btn-solid-blue">BOOK A VIEWING</a></td>
67
+                </tr>
68
+              </tbody>
69
+            </table>
70
+          </div>
71
+          <p></p>
72
+
73
+          <div class="d-flex mt-3">
74
+            <iframe
75
+              width="100%"
76
+              height="200"
77
+              id="gmap_canvas"
78
+              src="https://maps.google.com/maps?q=ngwenya%20lodge&t=&z=13&ie=UTF8&iwloc=&output=embed"
79
+              frameborder="0"
80
+              scrolling="no"
81
+              marginheight="0"
82
+              marginwidth="0"
83
+            ></iframe>
84
+          </div>
85
+        </div>
86
+      </div>
87
+    </div>
88
+  </section>
89
+</template>
90
+
91
+<script>
92
+/* eslint-disable */
93
+import gallery from "../../../shared/gallerySlideShow";
94
+export default {
95
+  components: {
96
+    gallery
97
+  },
98
+  props: {
99
+    property: {},
100
+    propertyImages: {}
101
+  },
102
+  data() {
103
+    return {
104
+      index: null,
105
+      date: new Date()
106
+    };
107
+  }
108
+};
109
+</script>
110
+
111
+<style lang="scss" scoped>
112
+/* Extra small devices (phones, 600px and down) */
113
+@media only screen and (max-width: 575px) {
114
+  .resPortfolioSection {
115
+    margin-bottom: 100px;
116
+  }
117
+}
118
+
119
+/* Small devices (portrait tablets and large phones, 600px and up) */
120
+@media only screen and (min-width: 576px) {
121
+  .resPortfolioSection {
122
+    margin-bottom: 140px;
123
+  }
124
+}
125
+
126
+/* Medium devices (landscape tablets, 768px and up) */
127
+@media only screen and (min-width: 768px) {
128
+  .resPortfolioSection {
129
+    margin-bottom: 50px;
130
+  }
131
+}
132
+
133
+/* Large devices (laptops/desktops, 992px and up) */
134
+@media only screen and (min-width: 992px) {
135
+  .resPortfolioSection {
136
+    margin-bottom: 60px;
137
+  }
138
+}
139
+
140
+/* Extra large devices (large laptops and desktops, 1200px and up) */
141
+@media only screen and (min-width: 1200px) {
142
+  .resPortfolioSection {
143
+    margin-bottom: 80px;
144
+  }
145
+}
146
+</style>

+ 65
- 0
src/components/property/commercial/singleView/singleCommercialPage.vue Datei anzeigen

1
+<template>
2
+  <div>
3
+    <carouselSection v-if="propertyImages.length > 0" :propertyImages="propertyImages" />
4
+    <main id="main" style="margin-top:-20px">
5
+      <contentSection
6
+        v-if="propertyImages.length > 0"
7
+        :property="property"
8
+        :propertyImages="propertyImages"
9
+      />
10
+    </main>
11
+  </div>
12
+  <!-- #intro -->
13
+</template>
14
+
15
+<script>
16
+/* eslint-disable */
17
+
18
+import { mapState, mapActions } from "vuex";
19
+import makeOffer from "../../../processFlow/makeOffer";
20
+import carouselSection from "./carouselSection";
21
+import contentSection from "./contentSection";
22
+
23
+export default {
24
+  name: "property",
25
+  components: {
26
+    makeOffer,
27
+    carouselSection,
28
+    contentSection
29
+  },
30
+  data() {
31
+    return {
32
+      index: null,
33
+      date: new Date()
34
+    };
35
+  },
36
+  async mounted() {
37
+    await this.getProperty(this.$route.params.id);
38
+    await this.getPropertyImages(this.$route.params.id);
39
+    this.mayEditProperty(this.$route.params.id);
40
+  },
41
+  computed: {
42
+    ...mapState("property", ["property", "propertyImages"]),
43
+    ...mapState("propertyEdit", ["mayEdit"])
44
+  },
45
+  methods: {
46
+    ...mapActions("property", ["getProperty", "getPropertyImages", "clearPropertyImages"]),
47
+    ...mapActions("propertyEdit", ["mayEditProperty"]),
48
+    formatPrice(value) {
49
+      const val = (value / 1).toFixed(2);
50
+      return val.toString().replace(/\B(?=(\d{3})+(?!\d))/g, " ");
51
+    },
52
+    formatAddress(value) {
53
+      if (value !== "") {
54
+        return `${value}<br/>`;
55
+      }
56
+      return "";
57
+    }
58
+  },
59
+  beforeDestroy() {
60
+    this.clearPropertyImages();
61
+  }
62
+};
63
+</script>
64
+
65
+<style lang="scss" scoped></style>

+ 46
- 129
src/components/property/propertyCard.vue Datei anzeigen

1
 <template>
1
 <template>
2
-  <!-- eslint-disable max-len -->
3
-  <div>
4
-    <div class="form-group row" v-if="showSort">
5
-      <button
6
-        type="button"
7
-        class="btn btn-link font-weight-bold color-b"
8
-        style="width: 150px; height:40px;"
9
-        @click="sortNewest()"
10
-      >Newest</button>
11
-      <button
12
-        type="button"
13
-        class="btn btn-link font-weight-bold color-b"
14
-        style="width: 150px; height:40px;"
15
-        @click="sortLowPrice()"
16
-      >Lowest Price</button>
17
-      <button
18
-        type="button"
19
-        class="btn btn-link font-weight-bold color-b"
20
-        style="width: 150px; height:40px;"
21
-        @click="sortHighPrice()"
22
-      >Highest Price</button>
23
-      <button
24
-        v-if="salesType === 'Rent'"
25
-        type="button"
26
-        class="btn btn-link font-weight-bold color-b"
27
-        style="width: 150px; height:40px;"
28
-        @click="sortDateAvailable()"
29
-      >Date Available</button>
30
-      <hr />
31
-    </div>
32
-    <div class="form-group row">
33
-      <div class="col-md-4" v-for="currentProperty in properties" :key="currentProperty.id">
34
-        <router-link :to="`/property/property/${currentProperty.id}`">
35
-          <div class="card-box-a card-shadow">
36
-            <div class="img-box-a">
37
-              <img
38
-                :src="currentProperty.displayImage"
39
-                alt
40
-                class="img-a img-fluid"
41
-                style="height:466px; width:350px; object-fit: cover;"
42
-              />
43
-              <p
44
-                v-if="!currentProperty.isSale"
45
-                :class="[currentProperty.hasPendingOffer ? 'top-left pendingOffer' : 'top-left normalText']"
46
-              >
47
-                <strong>{{ currentProperty.available }}</strong>
48
-              </p>
49
-              <p
50
-                v-if="currentProperty.isSale  && currentProperty.hasPendingOffer"
51
-                class="top-left pendingOffer"
52
-              >
53
-                <strong>{{ currentProperty.available }}</strong>
54
-              </p>
55
-            </div>
56
-            <div class="card-overlay">
57
-              <div class="card-overlay-a-content">
58
-                <div class="card-header-a">
59
-                  <h4 class="card-title-a">
60
-                    <router-link
61
-                      :to="`/property/property/${currentProperty.id}`"
62
-                      class="link-a"
63
-                    >{{ currentProperty.shortDescription }}</router-link>
64
-                    <router-link
65
-                      v-if="!currentProperty.isSale"
66
-                      :to="`/property/property/${currentProperty.id}`"
67
-                      class="link-a"
68
-                    ></router-link>
69
-                  </h4>
70
-                  <h4 class="card-title-c">
71
-                    <router-link :to="`/property/property/${currentProperty.id}`" class="link-a">
72
-                      {{ currentProperty.province }}
73
-                      <br />
74
-                      {{ currentProperty.city }}
75
-                      <br />
76
-                      {{ currentProperty.suburb }}
77
-                    </router-link>
78
-                  </h4>
79
-                </div>
80
-                <div class="card-body-a">
81
-                  <div class="price-box d-flex">
82
-                    <span
83
-                      v-if="currentProperty.isSale"
84
-                      class="price-a"
85
-                    >sale | {{ currentProperty.displayPrice }}</span>
86
-                    <span
87
-                      v-if="!currentProperty.isSale"
88
-                      class="price-a"
89
-                    >rent | {{ currentProperty.displayPrice }}</span>
90
-                  </div>
91
-                  <router-link :to="`/property/property/${currentProperty.id}`" class="link-a">
92
-                    Click here to view
93
-                    <span class="ion-ios-arrow-forward"></span>
94
-                  </router-link>
2
+  <section id="portfolio" class="wow fadeInUp">
3
+    <div class="container-fluid">
4
+      <div class="row">
5
+        <div
6
+          class="col-lg-3 col-md-6 col-sm-6"
7
+          v-for="currentProperty in properties"
8
+          :key="currentProperty.id"
9
+        >
10
+          <div v-if="currentProperty.propertyUsageType === 'Residential'">
11
+            <router-link :to="`/property/residential/property/${currentProperty.id}`">
12
+              <div class="portfolio-item p-4 wow fadeInUp justify-content-md-center">
13
+                <div class="feature-top pt-3 mb-2">
14
+                  <h3>{{ currentProperty.displayPrice }}</h3>
15
+                  <img :src="currentProperty.displayImage" alt="" />
95
                 </div>
16
                 </div>
96
-                <div class="card-footer-a" v-if="currentProperty.showFooter">
97
-                  <ul class="card-info d-flex justify-content-around">
98
-                    <li v-if="currentProperty.area !== null">
99
-                      <h4 class="card-info-title">
100
-                        <img src="../../../public/img/icons/area.png" height="16px" width="16px" />
101
-                        <!-- <i class="fa fa-ruler-combined"></i> -->
102
-                      </h4>
103
-                      <span v-html="currentProperty.area"></span>
104
-                    </li>
105
-                    <li v-if="currentProperty.beds !== null">
106
-                      <h4 class="card-info-title">
107
-                        <i class="fa fa-bed"></i>
108
-                      </h4>
109
-                      <span>{{ currentProperty.beds }}</span>
110
-                    </li>
111
-                    <li v-if="currentProperty.baths !== null">
112
-                      <h4 class="card-info-title">
113
-                        <i class="fa fa-bath"></i>
114
-                      </h4>
115
-                      <span>{{ currentProperty.baths }}</span>
116
-                    </li>
117
-                    <li v-if="currentProperty.garages !== null">
118
-                      <h4 class="card-info-title">
119
-                        <!-- <i class="fa fa-warehouse"></i> -->
120
-                        <img src="../../../public/img/icons/garage.png" height="16px" width="16px" />
121
-                      </h4>
122
-                      <span>{{ currentProperty.garages }}</span>
123
-                    </li>
124
-                  </ul>
17
+                <h1>{{ currentProperty.suburb }}</h1>
18
+                <p>
19
+                  <strong>Week</strong> #000 &nbsp;|&nbsp; <strong>Season</strong> Peak <br />
20
+                  <strong>Levy</strong> #R0000
21
+                </p>
22
+                <a href="#"> </a>
23
+              </div>
24
+            </router-link>
25
+          </div>
26
+          <div v-else-if="currentProperty.propertyUsageType === 'Commercial'">
27
+            <router-link :to="`/property/commercial/property/${currentProperty.id}`">
28
+              <div class="portfolio-item p-4 wow fadeInUp justify-content-md-center">
29
+                <div class="feature-top pt-3 mb-2">
30
+                  <h3>{{ currentProperty.displayPrice }}</h3>
31
+                  <img :src="currentProperty.displayImage" alt="" />
125
                 </div>
32
                 </div>
33
+                <h1>{{ currentProperty.suburb }}</h1>
34
+                <p>
35
+                  <strong>Week</strong> #000 &nbsp;|&nbsp; <strong>Season</strong> Peak <br />
36
+                  <strong>Levy</strong> #R0000
37
+                </p>
38
+                <a href="#"> </a>
126
               </div>
39
               </div>
127
-            </div>
40
+            </router-link>
128
           </div>
41
           </div>
129
-        </router-link>
130
-        <br />
42
+        </div>
131
       </div>
43
       </div>
132
     </div>
44
     </div>
133
-  </div>
45
+  </section>
46
+  <!-- #listings -->
134
 </template>
47
 </template>
135
 
48
 
136
 <script>
49
 <script>
50
+/* eslint-disable */
51
+
137
 export default {
52
 export default {
138
   props: {
53
   props: {
139
     properties: { type: Array, default: () => [] },
54
     properties: { type: Array, default: () => [] },
140
     showSort: { type: Boolean, default: true },
55
     showSort: { type: Boolean, default: true },
141
-    salesType: { type: String, default: 'Rent' },
56
+    salesType: { type: String, default: "Rent" }
142
   },
57
   },
143
   methods: {
58
   methods: {
144
     sortHighPrice() {
59
     sortHighPrice() {
176
       }
91
       }
177
 
92
 
178
       return this.properties.sort(compare);
93
       return this.properties.sort(compare);
179
-    },
180
-  },
94
+    }
95
+  }
181
 };
96
 };
182
 </script>
97
 </script>
98
+
99
+<style lang="scss" scoped></style>

+ 40
- 64
src/components/property/propertySearchResults.vue Datei anzeigen

1
 <template>
1
 <template>
2
   <!-- eslint-disable max-len -->
2
   <!-- eslint-disable max-len -->
3
-  <div class="container">
4
-    <br />
5
-    <div class="container col-md-12">
6
-      <div class="col-sm-12">
7
-        <div class="about-img-box">
8
-          <img
9
-            v-if="propertySearch.propertyUsageType === 'Residential'"
10
-            src="img/Pretoria-South-Africa.jpg"
11
-            alt="Property Listing"
12
-            class="img-fluid"
13
-            style="width:800px;height:400px; border-radius:10px"
14
-          />
15
-          <img
16
-            v-else
17
-            src="img/Johannesburg-south-africa-1.jpg"
18
-            alt="Property Listing"
19
-            class="img-fluid"
20
-            style="width:800px;height:400px; border-radius:10px"
21
-          />
22
-        </div>
23
-        <div class="sinse-box" style="opacity:0.7; border: white solid 3px; border-radius: 15px">
24
-          <h3 class="sinse-title">Property Listing</h3>
3
+  <section id="portfolio">
4
+    <div class="container-fluid p-0">
5
+      <div class="row ml-4">
6
+        <div class="col">
7
+          <h2>Search Results</h2>
25
         </div>
8
         </div>
26
       </div>
9
       </div>
27
-      <br />
28
-      <div>
29
-        <propertyCard
30
-          v-if="properties.length > 0"
31
-          name="propertyholder"
32
-          :properties="properties"
33
-          :salesType="propertySearch.salesType"
34
-        />
35
-        <!-- <div v-if="loading">
36
-          <img
37
-            class="img-fluid"
38
-            src="/img/kloader.gif"
39
-            alt="UVProp logo"
40
-            style="width:128px;height:128px;"
41
-          />
42
-        </div>-->
10
+      <div class="contianer-fluid">
11
+        <div class="row">
12
+          <div class="col">
13
+            <propertyCard
14
+              v-if="properties.length > 0"
15
+              name="propertyholder"
16
+              :properties="properties"
17
+              :salesType="propertySearch.salesType"
18
+            />
19
+          </div>
20
+        </div>
43
         <div v-if="properties.length === 0">
21
         <div v-if="properties.length === 0">
44
           <img src="../../../public/img/no-homes.png" />
22
           <img src="../../../public/img/no-homes.png" />
45
           <br />
23
           <br />
47
           <p>Sorry no listing where found matching your search</p>
25
           <p>Sorry no listing where found matching your search</p>
48
         </div>
26
         </div>
49
       </div>
27
       </div>
50
-      <br />
51
-      <div class="row">
52
-        <div class="col-md-2 offset-5">
53
-          <button type="button" @click="SearchPage" class="btn btn-b-n">Back to Search</button>
54
-        </div>
55
-      </div>
56
     </div>
28
     </div>
57
-  </div>
29
+  </section>
58
 </template>
30
 </template>
31
+
59
 <script>
32
 <script>
60
-import { mapState, mapActions } from 'vuex';
61
-import propertyCard from './propertyCard.vue';
33
+/* eslint-disable */
34
+import { mapState, mapActions } from "vuex";
35
+import propertyCard from "./propertyCard.vue";
62
 
36
 
63
 export default {
37
 export default {
64
-  name: 'propertysearch',
38
+  name: "propertysearch",
65
   components: {
39
   components: {
66
-    propertyCard,
40
+    propertyCard
67
   },
41
   },
68
   data() {
42
   data() {
69
     return {};
43
     return {};
70
   },
44
   },
71
   mounted() {
45
   mounted() {
72
-    if (typeof this.propertySearch.propertyUsageType === 'undefined') {
73
-      this.propertySearch.propertyUsageType = 'Residential';
46
+    if (typeof this.propertySearch.propertyUsageType === "undefined") {
47
+      this.propertySearch.propertyUsageType = "Residential";
74
     }
48
     }
75
     if (this.user) {
49
     if (this.user) {
76
       this.propertySearch.userName = this.user.username;
50
       this.propertySearch.userName = this.user.username;
79
     this.searchProperties(this.propertySearch);
53
     this.searchProperties(this.propertySearch);
80
   },
54
   },
81
   methods: {
55
   methods: {
82
-    ...mapActions('propertySearch', [
83
-      'searchProperties',
84
-      'clearProperties',
85
-      'updateResultsShowing',
56
+    ...mapActions("propertySearch", [
57
+      "searchProperties",
58
+      "clearProperties",
59
+      "updateResultsShowing"
86
     ]),
60
     ]),
87
     SetType(item) {
61
     SetType(item) {
88
       this.propertySearch.propertyUsageType = item;
62
       this.propertySearch.propertyUsageType = item;
89
     },
63
     },
90
     SearchPage() {
64
     SearchPage() {
91
       this.clearProperties();
65
       this.clearProperties();
92
-      this.$router.push('/property/search');
93
-    },
66
+      this.$router.push("/property/search");
67
+    }
94
   },
68
   },
95
   computed: {
69
   computed: {
96
-    ...mapState('propertySearch', ['properties', 'propertySearch', 'resultsShowing']),
97
-    ...mapState('authentication', ['user']),
70
+    ...mapState("propertySearch", ["properties", "propertySearch", "resultsShowing"]),
71
+    ...mapState("authentication", ["user"]),
98
     ParamsChanged() {
72
     ParamsChanged() {
99
       console.log(JSON.stringify(this.propertySearch));
73
       console.log(JSON.stringify(this.propertySearch));
100
-      if (typeof this.propertySearch.propertyUsageType === 'undefined') {
74
+      if (typeof this.propertySearch.propertyUsageType === "undefined") {
101
         // eslint-disable-next-line vue/no-side-effects-in-computed-properties
75
         // eslint-disable-next-line vue/no-side-effects-in-computed-properties
102
-        this.propertySearch.propertyUsageType = 'Residential';
76
+        this.propertySearch.propertyUsageType = "Residential";
103
       }
77
       }
104
       this.searchProperties(this.propertySearch);
78
       this.searchProperties(this.propertySearch);
105
       return null;
79
       return null;
106
-    },
80
+    }
107
   },
81
   },
108
   watch: {
82
   watch: {
109
     ParamsChanged() {
83
     ParamsChanged() {
110
       return null;
84
       return null;
111
-    },
112
-  },
85
+    }
86
+  }
113
 };
87
 };
114
 </script>
88
 </script>
89
+
90
+<style lang="scss" scoped></style>

+ 49
- 0
src/components/property/residential/latestListings.vue Datei anzeigen

1
+<template>
2
+  <main id="main">
3
+    <section id="portfolio">
4
+      <div class="container">
5
+        <div class="row">
6
+          <div class="col-lg-12">
7
+            <h2>Latest Listings</h2>
8
+          </div>
9
+        </div>
10
+      </div>
11
+      <div class="contianer">
12
+        <div class="row">
13
+          <div class="col">
14
+            <propertyCard
15
+              v-if="properties.length > 0"
16
+              name="propertyholder"
17
+              :properties="properties"
18
+              :showSort="false"
19
+            />
20
+          </div>
21
+        </div>
22
+      </div>
23
+    </section>
24
+  </main>
25
+</template>
26
+
27
+<script>
28
+/* eslint-disable */
29
+import { mapState, mapActions } from "vuex";
30
+import propertyCard from "../propertyCard";
31
+export default {
32
+  components: {
33
+    propertyCard
34
+  },
35
+  methods: {
36
+    ...mapActions("propertySearch", ["searchProperties"])
37
+  },
38
+  mounted() {
39
+    this.propertySearch.propertyUsageType = "Residential";
40
+
41
+    this.searchProperties(this.propertySearch);
42
+  },
43
+  computed: {
44
+    ...mapState("propertySearch", ["properties", "propertySearch"])
45
+  }
46
+};
47
+</script>
48
+
49
+<style lang="scss" scoped></style>

+ 310
- 0
src/components/property/residential/residentialCarouselSection.vue Datei anzeigen

1
+<template>
2
+  <div>
3
+    <section id="intro">
4
+      <div class="container">
5
+        <div class="row">
6
+          <div align="left" class="col-sm-12 col-md-8">
7
+            <div class="intro-content">
8
+              <h2>Find your Home</h2>
9
+
10
+              <ul class="nav nav-pills mb-3" id="pills-tab" role="tablist">
11
+                <li class="nav-item">
12
+                  <a
13
+                    class="nav-link btn-white-border"
14
+                    id="buy-tab"
15
+                    data-toggle="pill"
16
+                    href="#buy"
17
+                    role="tab"
18
+                    aria-controls="buy"
19
+                    aria-selected="true"
20
+                    @click="SetSalesType('Sale')"
21
+                    >Buy</a
22
+                  >
23
+                </li>
24
+                <li class="nav-item">
25
+                  <a
26
+                    class="nav-link btn-white-border"
27
+                    id="rent-tab"
28
+                    data-toggle="pill"
29
+                    href="#rent"
30
+                    role="tab"
31
+                    aria-controls="rent"
32
+                    aria-selected="false"
33
+                    @click="SetSalesType('Rent')"
34
+                    >Rent</a
35
+                  >
36
+                </li>
37
+              </ul>
38
+              <div class="tab-content" id="pills-tabContent">
39
+                <div
40
+                  class="tab-pane fade show active"
41
+                  id="start"
42
+                  role="tabpanel"
43
+                  aria-labelledby="start-tab"
44
+                >
45
+                  <p></p>
46
+                </div>
47
+
48
+                <div class="tab-pane fade show" id="buy" role="tabpanel" aria-labelledby="buy-tab">
49
+                  <h4>PROPERTIES FOR SALE</h4>
50
+                  <div class="row">
51
+                    <div align="left" class="form-group col-md-12">
52
+                      <autoComplete
53
+                        align="left"
54
+                        class="col-md-11 offset-1"
55
+                        :items="suburbList"
56
+                        @selection="SelectedFilter"
57
+                        style="width:100%; margin-left:-15px"
58
+                      />
59
+                    </div>
60
+                    <!-- <div class="form-group col-md-6">
61
+                    <input
62
+                      data-toggle="dropdown"
63
+                      name="region"
64
+                      class="form-control my-2"
65
+                      id="name"
66
+                      placeholder="Region"
67
+                      aria-haspopup="true"
68
+                      aria-expanded="false"
69
+                    />
70
+                    
71
+                    <input
72
+                      data-toggle="dropdown"
73
+                      name="town"
74
+                      class="form-control my-2"
75
+                      id="name"
76
+                      placeholder="Town"
77
+                      aria-haspopup="true"
78
+                      aria-expanded="false"
79
+                    />
80
+                  </div>
81
+                  <div class="form-group col-md-6">
82
+                    <input
83
+                      data-toggle="dropdown"
84
+                      name="suburb"
85
+                      class="form-control my-2"
86
+                      id="name"
87
+                      placeholder="Suburb"
88
+                      aria-haspopup="true"
89
+                      aria-expanded="false"
90
+                    />
91
+                    <input
92
+                      data-toggle="dropdown"
93
+                      name="type"
94
+                      class="form-control my-2"
95
+                      id="name"
96
+                      placeholder="Property Type"
97
+                      aria-haspopup="true"
98
+                      aria-expanded="false"
99
+                    /> -->
100
+                    <!-- </div> -->
101
+                  </div>
102
+                  <a v-on:click="SearchClick" class="btn-solid-blue"
103
+                    ><i class="fa fa-search"></i> SEARCH</a
104
+                  >
105
+                </div>
106
+
107
+                <div class="tab-pane fade" id="rent" role="tabpanel" aria-labelledby="rent-tab">
108
+                  <h4>RENTAL PROPERTIES</h4>
109
+                  <div class="row">
110
+                    <div align="left" class="form-group col">
111
+                      <autoComplete
112
+                        align="left"
113
+                        class="col-md-11 offset-1"
114
+                        :items="suburbList"
115
+                        @selection="SelectedFilter"
116
+                        style="width:100%; margin-left:-15px"
117
+                      />
118
+                    </div>
119
+                    <!-- <div class="form-group col-md-6">
120
+                    <input
121
+                      data-toggle="dropdown"
122
+                      name="region"
123
+                      class="form-control my-2"
124
+                      id="name"
125
+                      placeholder="Region"
126
+                      aria-haspopup="true"
127
+                      aria-expanded="false"
128
+                    />
129
+                    <input
130
+                      data-toggle="dropdown"
131
+                      name="town"
132
+                      class="form-control my-2"
133
+                      id="name"
134
+                      placeholder="Town"
135
+                      aria-haspopup="true"
136
+                      aria-expanded="false"
137
+                    />
138
+                  </div>
139
+                  <div class="form-group col-md-6">
140
+                    <input
141
+                      data-toggle="dropdown"
142
+                      name="suburb"
143
+                      class="form-control my-2"
144
+                      id="name"
145
+                      placeholder="Suburb"
146
+                      aria-haspopup="true"
147
+                      aria-expanded="false"
148
+                    />
149
+                    <input
150
+                      data-toggle="dropdown"
151
+                      name="type"
152
+                      class="form-control my-2"
153
+                      id="name"
154
+                      placeholder="Property Type"
155
+                      aria-haspopup="true"
156
+                      aria-expanded="false"
157
+                    />
158
+                  </div> -->
159
+                  </div>
160
+                  <a v-on:click="SearchClick" class="btn-solid-blue"
161
+                    ><i class="fa fa-search"></i> FIND</a
162
+                  >
163
+                </div>
164
+              </div>
165
+            </div>
166
+          </div>
167
+        </div>
168
+      </div>
169
+
170
+      <carousel
171
+        :nav="false"
172
+        :dots="false"
173
+        :items="1"
174
+        :autoplay="true"
175
+        :loop="true"
176
+        id="intro-carousel"
177
+        style="margin-top:-50px"
178
+        :responsive="{ 0: { items: 1, nav: false }, 600: { items: 1, nav: false } }"
179
+      >
180
+        <img class="item" src="img/intro-carousel/residential-1.jpg" alt="" />
181
+        <img class="item" src="img/intro-carousel/residential-2.jpg" alt="" />
182
+        <img class="item" src="img/intro-carousel/residential-3.jpg" alt="" />
183
+        <img class="item" src="img/intro-carousel/residential-4.jpg" alt="" />
184
+        <img class="item" src="img/intro-carousel/residential-5.jpg" alt="" />
185
+        <img class="item" src="img/intro-carousel/residential-6.jpg" alt="" />
186
+      </carousel>
187
+    </section>
188
+    <main id="main" style="margin-top:-20px">
189
+      <div class="container-fluid">
190
+        <div class="row">
191
+          <div
192
+            ref="searchRes"
193
+            :class="{ 'searchRes--clicked': clicked }"
194
+            class="col-sm-12 searchRes"
195
+          >
196
+            <searchResult
197
+              :class="{ 'searchComponent--clicked ': clicked }"
198
+              class="searchComponent"
199
+            />
200
+          </div>
201
+        </div>
202
+      </div>
203
+    </main>
204
+  </div>
205
+</template>
206
+
207
+<script>
208
+/* eslint-disable */
209
+import { mapState, mapActions } from "vuex";
210
+import autoComplete from "../../shared/autoComplete";
211
+import carousel from "vue-owl-carousel";
212
+import searchResult from "../propertySearchResults";
213
+export default {
214
+  components: {
215
+    carousel,
216
+    autoComplete,
217
+    searchResult
218
+  },
219
+  data() {
220
+    return {
221
+      propertyUsageType: "Residential",
222
+      salesType: "Sale",
223
+      searchText: "",
224
+      clicked: false
225
+    };
226
+  },
227
+  computed: {
228
+    ...mapState("propertySearch", ["suburbs", "suburbList", "propertySearch"])
229
+  },
230
+  methods: {
231
+    ...mapActions("propertySearch", ["getSuburbs", "applyFilter"]),
232
+    SetSalesType(value) {
233
+      this.salesType = value;
234
+    },
235
+    SearchClick() {
236
+      const item = this.suburbs.find(s => s.display === this.searchText);
237
+      this.propertySearch.province = item.province;
238
+      this.propertySearch.city = item.city;
239
+      this.propertySearch.suburb = item.suburb;
240
+      this.propertySearch.propertyUsageType = this.propertyUsageType;
241
+      this.propertySearch.salesType = this.salesType;
242
+
243
+      //this.clicked = true;
244
+      this.$router.push("/property/residential/searchResult");
245
+    },
246
+    SelectedFilter(item) {
247
+      this.searchText = item;
248
+    }
249
+  },
250
+  mounted() {
251
+    this.getSuburbs();
252
+  }
253
+};
254
+</script>
255
+
256
+<style lang="scss" scoped>
257
+.searchRes {
258
+  will-change: transform;
259
+  transition: height 500ms;
260
+  height: 0px;
261
+}
262
+
263
+.searchRes--clicked {
264
+  height: 75vh;
265
+}
266
+
267
+@media only screen and (max-width: 575px) {
268
+  .searchRes--clicked {
269
+    height: 100vh;
270
+  }
271
+}
272
+
273
+@media only screen and (min-width: 576px) {
274
+  .searchRes--clicked {
275
+    height: 60vh;
276
+  }
277
+}
278
+
279
+@media only screen and (min-width: 768px) {
280
+  .searchRes--clicked {
281
+    height: 75vh;
282
+  }
283
+}
284
+@media only screen and (min-width: 992px) {
285
+  .searchRes--clicked {
286
+    height: 60vh;
287
+  }
288
+}
289
+
290
+@media only screen and (min-width: 1200px) {
291
+  .searchRes--clicked {
292
+    height: 70vh;
293
+  }
294
+}
295
+
296
+.searchComponent {
297
+  will-change: transform;
298
+  transition: opacity 0.2s ease-in-out;
299
+  transition-delay: 0.5s;
300
+  margin-bottom: 80px;
301
+  position: absolute;
302
+  width: 100%;
303
+  left: 0;
304
+  opacity: 0;
305
+}
306
+
307
+.searchComponent--clicked {
308
+  opacity: 1;
309
+}
310
+</style>

+ 19
- 0
src/components/property/residential/residentialContentSection.vue Datei anzeigen

1
+<template>
2
+  <section id="services">
3
+    <div class="container">
4
+      <div class="section-header">
5
+        <p>
6
+          Uni-Vate Properties seeks out professional, clean spaces for such companies and acts as
7
+          mediator between the landlord/-lady and the tenants. Uni-Vate Properties provides
8
+          value-adding service to clients and conducts business with a high standard and integrity.
9
+        </p>
10
+      </div>
11
+    </div>
12
+  </section>
13
+</template>
14
+
15
+<script>
16
+export default {};
17
+</script>
18
+
19
+<style lang="scss" scoped></style>

+ 34
- 0
src/components/property/residential/residentialPage.vue Datei anzeigen

1
+<template>
2
+  <div>
3
+    <carouselSection />
4
+    <main id="main">
5
+      <contentSection data-aos="fade-left" />
6
+      <latestListings
7
+        data-aos="fade-up"
8
+        data-aos-anchor-placement="center-bottom"
9
+        data-aos-delay="150"
10
+      />
11
+    </main>
12
+  </div>
13
+</template>
14
+
15
+<script>
16
+/* eslint-disable */
17
+import carouselSection from "./residentialCarouselSection";
18
+import contentSection from "./residentialContentSection";
19
+import latestListings from "./latestListings";
20
+import AOS from "aos";
21
+import "aos/dist/aos.css";
22
+export default {
23
+  created() {
24
+    AOS.init();
25
+  },
26
+  components: {
27
+    carouselSection,
28
+    contentSection,
29
+    latestListings
30
+  }
31
+};
32
+</script>
33
+
34
+<style lang="scss" scoped></style>

+ 0
- 0
src/components/property/residential/residentialSearchResults.vue Datei anzeigen


Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.

Laden…
Abbrechen
Speichern