spree_frontend 4.1.0 → 4.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (314) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +120 -0
  3. data/.codeclimate.yml +36 -0
  4. data/.deepsource.toml +19 -0
  5. data/.editorconfig +22 -0
  6. data/.eslintignore +7 -0
  7. data/.eslintrc +36 -0
  8. data/.gem_release.yml +7 -0
  9. data/.github/CONTRIBUTING.md +1 -0
  10. data/.github/ISSUE_TEMPLATE/bug_report.md +47 -0
  11. data/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
  12. data/.github/ISSUE_TEMPLATE.md +39 -0
  13. data/.github/dependabot.yml +32 -0
  14. data/.gitignore +58 -0
  15. data/.rubocop.yml +197 -0
  16. data/.solargraph.yml +20 -0
  17. data/.stylelintignore +4 -0
  18. data/.stylelintrc +6 -0
  19. data/CODE_OF_CONDUCT.md +22 -0
  20. data/Gemfile +57 -3
  21. data/LICENSE +1 -1
  22. data/README.md +89 -0
  23. data/Rakefile +1 -1
  24. data/SECURITY.md +1 -0
  25. data/app/assets/config/spree_frontend_manifest.js +5 -0
  26. data/app/assets/images/arrow-down.svg +12 -0
  27. data/app/assets/images/arrow-right-circle-fill.svg +3 -0
  28. data/app/assets/images/card-image.svg +4 -0
  29. data/app/assets/images/edit.svg +1 -1
  30. data/app/assets/images/favicon.ico +0 -0
  31. data/app/assets/images/file-image.svg +4 -0
  32. data/app/assets/images/global.svg +1 -0
  33. data/app/assets/images/image.svg +4 -0
  34. data/app/assets/images/info.svg +7 -0
  35. data/app/assets/images/logo/spree_50.png +0 -0
  36. data/app/assets/images/logo-spree.png +0 -0
  37. data/app/assets/images/logo.png +0 -0
  38. data/app/assets/images/logo.svg +10 -1
  39. data/app/assets/images/logo@2x.png +0 -0
  40. data/app/assets/images/logo@3x.png +0 -0
  41. data/app/assets/images/noimage/large.png +0 -0
  42. data/app/assets/images/noimage/mini.png +0 -0
  43. data/app/assets/images/noimage/plp.png +0 -0
  44. data/app/assets/images/noimage/plp.svg +16 -0
  45. data/app/assets/images/noimage/product.png +0 -0
  46. data/app/assets/images/noimage/small.png +0 -0
  47. data/app/assets/images/pagination-arrow-right.svg +3 -10
  48. data/app/assets/images/pagination-double-arrow-right.svg +6 -13
  49. data/app/assets/images/plus.svg +1 -1
  50. data/app/assets/images/search.svg +1 -1
  51. data/app/assets/javascripts/spree/frontend/account.js +1 -1
  52. data/app/assets/javascripts/spree/frontend/api/main.js +36 -0
  53. data/app/assets/javascripts/spree/frontend/api/storefront/cart.js +49 -0
  54. data/app/assets/javascripts/spree/frontend/cart.js +24 -2
  55. data/app/assets/javascripts/spree/frontend/checkout/address.js +78 -52
  56. data/app/assets/javascripts/spree/frontend/checkout/address_book.js +38 -40
  57. data/app/assets/javascripts/spree/frontend/checkout/payment.js +63 -23
  58. data/app/assets/javascripts/spree/frontend/checkout/shipment.js +15 -2
  59. data/app/assets/javascripts/spree/frontend/checkout.js +17 -1
  60. data/app/assets/javascripts/spree/frontend/coupon_manager.js +1 -1
  61. data/app/assets/javascripts/spree/frontend/currency.js +44 -0
  62. data/app/assets/javascripts/spree/frontend/locale.es6 +12 -0
  63. data/app/assets/javascripts/spree/frontend/login.js +5 -0
  64. data/app/assets/javascripts/spree/frontend/main.js +78 -0
  65. data/app/assets/javascripts/spree/frontend/main_nav_bar.js +86 -0
  66. data/app/assets/javascripts/spree/frontend/{turbolinks_scroll_fix.js → turbo_scroll_fix.js} +3 -3
  67. data/app/assets/javascripts/spree/frontend/views/spree/home/product_carousels.js +4 -4
  68. data/app/assets/javascripts/spree/frontend/views/spree/product/related.js +3 -3
  69. data/app/assets/javascripts/spree/frontend/views/spree/products/cart_form.js +67 -18
  70. data/app/assets/javascripts/spree/frontend/views/spree/products/description.js +1 -1
  71. data/app/assets/javascripts/spree/frontend/views/spree/products/index.js +76 -15
  72. data/app/assets/javascripts/spree/frontend/views/spree/products/price_filters.es6 +46 -0
  73. data/app/assets/javascripts/spree/frontend/views/spree/shared/mobile_navigation.js +9 -10
  74. data/app/assets/javascripts/spree/frontend/views/spree/shared/product_added_modal.js +7 -0
  75. data/app/assets/javascripts/spree/frontend/views/spree/shared/variant_select.js +93 -0
  76. data/app/assets/javascripts/spree/frontend.js +68 -11
  77. data/app/assets/stylesheets/spree/frontend/application.scss +5 -2
  78. data/app/assets/stylesheets/spree/frontend/components-bootstrap/button.scss +8 -0
  79. data/app/assets/stylesheets/spree/frontend/components-bootstrap/carousel.scss +4 -0
  80. data/app/assets/stylesheets/spree/frontend/components-custom/inputs.scss +80 -1
  81. data/app/assets/stylesheets/spree/frontend/flags/_flag-icon-base.scss +23 -0
  82. data/app/assets/stylesheets/spree/frontend/flags/_flag-icon-list.scss +265 -0
  83. data/app/assets/stylesheets/spree/frontend/flags/_variables.scss +2 -0
  84. data/app/assets/stylesheets/spree/frontend/flags/flag-icon.scss +3 -0
  85. data/app/assets/stylesheets/spree/frontend/functions.scss +1 -0
  86. data/app/assets/stylesheets/spree/frontend/helpers/spree/frontend_helper.scss +48 -0
  87. data/app/assets/stylesheets/spree/frontend/variables/bootstrap-overrides.scss +2 -2
  88. data/app/assets/stylesheets/spree/frontend/variables/helper-variables.scss +1 -0
  89. data/app/assets/stylesheets/spree/frontend/variables/variables.scss +54 -0
  90. data/app/assets/stylesheets/spree/frontend/views/spree/checkout/confirm.scss +27 -26
  91. data/app/assets/stylesheets/spree/frontend/views/spree/checkout/delivery.scss +6 -0
  92. data/app/assets/stylesheets/spree/frontend/views/spree/checkout/edit.scss +24 -10
  93. data/app/assets/stylesheets/spree/frontend/views/spree/cms_sections/_index.scss +1 -0
  94. data/app/assets/stylesheets/spree/frontend/views/spree/cms_sections/product_buy_bar.scss +20 -0
  95. data/app/assets/stylesheets/spree/frontend/views/spree/home/index.scss +54 -67
  96. data/app/assets/stylesheets/spree/frontend/views/spree/orders/edit.scss +4 -3
  97. data/app/assets/stylesheets/spree/frontend/views/spree/orders/show.scss +3 -0
  98. data/app/assets/stylesheets/spree/frontend/views/spree/products/cart_form.scss +8 -0
  99. data/app/assets/stylesheets/spree/frontend/views/spree/products/gallery_modal.scss +7 -0
  100. data/app/assets/stylesheets/spree/frontend/views/spree/products/index.scss +55 -26
  101. data/app/assets/stylesheets/spree/frontend/views/spree/products/show.scss +7 -0
  102. data/app/assets/stylesheets/spree/frontend/views/spree/shared/_color_select.scss +10 -9
  103. data/app/assets/stylesheets/spree/frontend/views/spree/shared/carousel/single.scss +1 -1
  104. data/app/assets/stylesheets/spree/frontend/views/spree/shared/carousel/thumbnails.scss +1 -0
  105. data/app/assets/stylesheets/spree/frontend/views/spree/shared/cart.scss +9 -4
  106. data/app/assets/stylesheets/spree/frontend/views/spree/shared/category_nav_bar.scss +3 -3
  107. data/app/assets/stylesheets/spree/frontend/views/spree/shared/change_store.scss +7 -0
  108. data/app/assets/stylesheets/spree/frontend/views/spree/shared/footer.scss +4 -0
  109. data/app/assets/stylesheets/spree/frontend/views/spree/shared/main_nav_bar.scss +42 -26
  110. data/app/assets/stylesheets/spree/frontend/views/spree/shared/mobile_navigation.scss +34 -3
  111. data/app/assets/stylesheets/spree/frontend/views/spree/shared/nav_bar.scss +24 -7
  112. data/app/assets/stylesheets/spree/frontend/views/spree/shared/quantity_select.scss +9 -12
  113. data/app/assets/stylesheets/spree/frontend/views/spree/shared/search_form.scss +12 -0
  114. data/app/assets/stylesheets/spree/frontend/views/spree/users/show.scss +7 -13
  115. data/app/assets/stylesheets/spree/frontend.css +0 -1
  116. data/app/controllers/concerns/spree/checkout/address_book.rb +9 -7
  117. data/app/controllers/concerns/spree/locale_urls.rb +21 -0
  118. data/app/controllers/spree/addresses_controller.rb +16 -33
  119. data/app/controllers/spree/checkout_controller.rb +15 -13
  120. data/app/controllers/spree/cms_pages_controller.rb +29 -0
  121. data/app/controllers/spree/content_controller.rb +0 -2
  122. data/app/controllers/spree/currency_controller.rb +17 -0
  123. data/app/controllers/spree/errors_controller.rb +11 -0
  124. data/app/controllers/spree/home_controller.rb +38 -1
  125. data/app/controllers/spree/locale_controller.rb +35 -6
  126. data/app/controllers/spree/orders_controller.rb +12 -10
  127. data/app/controllers/spree/products_controller.rb +46 -28
  128. data/app/controllers/spree/store_controller.rb +77 -12
  129. data/app/controllers/spree/taxons_controller.rb +16 -8
  130. data/app/helpers/spree/addresses_helper.rb +64 -12
  131. data/app/helpers/spree/cache_helper.rb +7 -0
  132. data/app/helpers/spree/cms_pages_helper.rb +23 -0
  133. data/app/helpers/spree/frontend_helper.rb +170 -18
  134. data/app/helpers/spree/navigation_helper.rb +81 -4
  135. data/app/helpers/spree/products_filters_helper.rb +168 -0
  136. data/app/helpers/spree/store_helper.rb +41 -0
  137. data/app/helpers/spree/structured_data_helper.rb +6 -2
  138. data/app/helpers/spree/taxons_helper.rb +2 -2
  139. data/app/services/spree/build_localized_redirect_url.rb +141 -0
  140. data/app/views/kaminari/twitter-bootstrap-4/_first_page.html.erb +3 -3
  141. data/app/views/kaminari/twitter-bootstrap-4/_gap.html.erb +2 -2
  142. data/app/views/kaminari/twitter-bootstrap-4/_last_page.html.erb +3 -3
  143. data/app/views/kaminari/twitter-bootstrap-4/_next_page.html.erb +3 -3
  144. data/app/views/kaminari/twitter-bootstrap-4/_page.html.erb +2 -2
  145. data/app/views/kaminari/twitter-bootstrap-4/_paginator.html.erb +2 -2
  146. data/app/views/kaminari/twitter-bootstrap-4/_prev_page.html.erb +3 -3
  147. data/app/views/spree/address/_form.html.erb +26 -27
  148. data/app/views/spree/addresses/_form.html.erb +15 -6
  149. data/app/views/spree/addresses/edit.html.erb +13 -8
  150. data/app/views/spree/addresses/new.html.erb +8 -4
  151. data/app/views/spree/checkout/_address.html.erb +19 -23
  152. data/app/views/spree/checkout/_confirm.html.erb +1 -75
  153. data/app/views/spree/checkout/_credit_card.html.erb +3 -2
  154. data/app/views/spree/checkout/_delivery.html.erb +11 -4
  155. data/app/views/spree/checkout/_delivery_informations.html.erb +51 -0
  156. data/app/views/spree/checkout/_payment.html.erb +5 -24
  157. data/app/views/spree/checkout/_payment_sources.html.erb +17 -0
  158. data/app/views/spree/checkout/_summary.html.erb +22 -19
  159. data/app/views/spree/checkout/edit.html.erb +22 -2
  160. data/app/views/spree/checkout/payment/_gateway.html.erb +2 -2
  161. data/app/views/spree/checkout/registration.html.erb +3 -3
  162. data/app/views/spree/cms_pages/show.html.erb +16 -0
  163. data/app/views/spree/errors/not_found.html.erb +2 -2
  164. data/app/views/spree/home/index.html.erb +17 -123
  165. data/app/views/spree/layouts/checkout.html.erb +3 -1
  166. data/app/views/spree/layouts/spree_application.html.erb +3 -2
  167. data/app/views/spree/locale/index.html.erb +1 -0
  168. data/app/views/spree/orders/_coupon_code.html.erb +3 -4
  169. data/app/views/spree/orders/_line_item.html.erb +4 -4
  170. data/app/views/spree/orders/_line_item_data.html.erb +3 -3
  171. data/app/views/spree/orders/edit.html.erb +2 -3
  172. data/app/views/spree/orders/show.html.erb +2 -72
  173. data/app/views/spree/products/_cart_form.html.erb +5 -2
  174. data/app/views/spree/products/_color_option_type.html.erb +14 -14
  175. data/app/views/spree/products/_description.html.erb +19 -14
  176. data/app/views/spree/products/_filters_desktop.html.erb +80 -40
  177. data/app/views/spree/products/_filters_mobile.html.erb +47 -15
  178. data/app/views/spree/products/_gallery.html.erb +4 -6
  179. data/app/views/spree/products/_gallery_modal.html.erb +4 -6
  180. data/app/views/spree/products/_option_type.html.erb +1 -3
  181. data/app/views/spree/products/_product.html.erb +1 -1
  182. data/app/views/spree/products/_properties.html.erb +6 -4
  183. data/app/views/spree/products/_sort_desktop.html.erb +20 -14
  184. data/app/views/spree/products/_sort_mobile.html.erb +24 -8
  185. data/app/views/spree/products/_thumbnails.html.erb +2 -2
  186. data/app/views/spree/products/index.html.erb +7 -4
  187. data/app/views/spree/products/related.html.erb +11 -5
  188. data/app/views/spree/products/show.html.erb +2 -3
  189. data/app/views/spree/shared/_breadcrumbs.html.erb +2 -2
  190. data/app/views/spree/shared/_carousel_4_products.html.erb +14 -20
  191. data/app/views/spree/shared/_cart.html.erb +1 -1
  192. data/app/views/spree/shared/_checkout_header.html.erb +22 -21
  193. data/app/views/spree/shared/_color_select.html.erb +3 -3
  194. data/app/views/spree/shared/_copyright.html.erb +1 -10
  195. data/app/views/spree/shared/_currency_dropdown.html.erb +13 -0
  196. data/app/views/spree/shared/_delete_address_popup.html.erb +1 -2
  197. data/app/views/spree/shared/_error_messages.html.erb +2 -2
  198. data/app/views/spree/shared/_footer.html.erb +31 -21
  199. data/app/views/spree/shared/_get_started.html.erb +32 -0
  200. data/app/views/spree/shared/_head.html.erb +8 -5
  201. data/app/views/spree/shared/_header.html.erb +4 -4
  202. data/app/views/spree/shared/_internationalization_options.html.erb +31 -0
  203. data/app/views/spree/shared/_line_item.html.erb +3 -3
  204. data/app/views/spree/shared/_link_to_account.html.erb +7 -4
  205. data/app/views/spree/shared/_link_to_cart.html.erb +1 -2
  206. data/app/views/spree/shared/_locale_and_currency.html.erb +6 -0
  207. data/app/views/spree/shared/_locale_dropdown.html.erb +13 -0
  208. data/app/views/spree/shared/_login.html.erb +5 -5
  209. data/app/views/spree/shared/_main_nav_bar.html.erb +69 -45
  210. data/app/views/spree/shared/_mobile_internationalization_options.html.erb +37 -0
  211. data/app/views/spree/shared/_mobile_navigation.html.erb +48 -63
  212. data/app/views/spree/shared/_nav_bar.html.erb +9 -19
  213. data/app/views/spree/shared/_no_product_available.html.erb +1 -1
  214. data/app/views/spree/shared/_option_values.html.erb +2 -21
  215. data/app/views/spree/shared/_order_details.html.erb +117 -174
  216. data/app/views/spree/shared/_paths.html.erb +8 -0
  217. data/app/views/spree/shared/_payment.html.erb +2 -2
  218. data/app/views/spree/shared/_payment_sources.html.erb +2 -2
  219. data/app/views/spree/shared/_product_added_modal.html.erb +3 -3
  220. data/app/views/spree/shared/_properties.html.erb +4 -0
  221. data/app/views/spree/shared/_quantity_select.html.erb +2 -2
  222. data/app/views/spree/shared/_search.html.erb +9 -13
  223. data/app/views/spree/shared/_translations.html.erb +8 -7
  224. data/app/views/spree/shared/carousel/_single.html.erb +9 -14
  225. data/app/views/spree/shared/carousel/_thumbnails.html.erb +35 -39
  226. data/app/views/spree/shared/cms/pages/_edit_mode.html.erb +13 -0
  227. data/app/views/spree/shared/cms/sections/_featured_article.html.erb +27 -0
  228. data/app/views/spree/shared/cms/sections/_hero_image.html.erb +60 -0
  229. data/app/views/spree/shared/cms/sections/_image_gallery.html.erb +171 -0
  230. data/app/views/spree/shared/cms/sections/_product_carousel.html.erb +5 -0
  231. data/app/views/spree/shared/cms/sections/_rich_text_content.html.erb +3 -0
  232. data/app/views/spree/shared/cms/sections/_side_by_side_images.html.erb +118 -0
  233. data/app/views/spree/taxons/_header.html.erb +7 -2
  234. data/app/views/spree/users/_address.html.erb +16 -24
  235. data/app/views/spree/users/_address_controls.html.erb +10 -0
  236. data/app/views/spree/users/show.html.erb +21 -16
  237. data/config/initializers/admin_actions.rb +18 -0
  238. data/config/initializers/assets.rb +4 -13
  239. data/config/initializers/canonical_rails.rb +1 -1
  240. data/config/routes.rb +30 -26
  241. data/lib/generators/spree/frontend/copy_storefront/copy_storefront_generator.rb +1 -7
  242. data/lib/generators/spree/frontend/install/install_generator.rb +34 -0
  243. data/lib/generators/spree/frontend/install/templates/app/assets/config/manifest.js +2 -0
  244. data/lib/generators/spree/frontend/install/templates/vendor/assets/javascripts/spree/frontend/all.js +8 -0
  245. data/lib/generators/spree/frontend/install/templates/vendor/assets/stylesheets/spree/frontend/all.css +9 -0
  246. data/lib/spree/frontend/configuration.rb +18 -0
  247. data/lib/spree/frontend/engine.rb +3 -1
  248. data/lib/spree/frontend/version.rb +9 -0
  249. data/lib/spree/frontend.rb +8 -4
  250. data/license.md +13 -0
  251. data/spec/fixtures/files/store_favicon.ico +0 -0
  252. data/spree_frontend.gemspec +26 -14
  253. data/vendor/assets/javascripts/cleave.js +8 -0
  254. data/vendor/assets/javascripts/fetch.umd.js +531 -0
  255. data/vendor/assets/javascripts/jquery.payment.js +652 -0
  256. data/vendor/assets/javascripts/jsuri.js +458 -0
  257. data/vendor/assets/javascripts/polyfill.min.js +1 -0
  258. metadata +224 -86
  259. data/app/assets/images/homepage/big_category_banner.jpg +0 -0
  260. data/app/assets/images/homepage/big_category_banner_mobile.jpg +0 -0
  261. data/app/assets/images/homepage/big_category_banner_tablet_landscape.jpg +0 -0
  262. data/app/assets/images/homepage/big_category_banner_tablet_portrait.jpg +0 -0
  263. data/app/assets/images/homepage/category_banner_lower.jpg +0 -0
  264. data/app/assets/images/homepage/category_banner_lower_mobile.jpg +0 -0
  265. data/app/assets/images/homepage/category_banner_lower_tablet_landscape.jpg +0 -0
  266. data/app/assets/images/homepage/category_banner_lower_tablet_portrait.jpg +0 -0
  267. data/app/assets/images/homepage/category_banner_upper.jpg +0 -0
  268. data/app/assets/images/homepage/category_banner_upper_mobile.jpg +0 -0
  269. data/app/assets/images/homepage/category_banner_upper_tablet_landscape.jpg +0 -0
  270. data/app/assets/images/homepage/category_banner_upper_tablet_portrait.jpg +0 -0
  271. data/app/assets/images/homepage/main_banner.jpg +0 -0
  272. data/app/assets/images/homepage/main_banner_mobile.jpg +0 -0
  273. data/app/assets/images/homepage/main_banner_tablet_landscape.jpg +0 -0
  274. data/app/assets/images/homepage/main_banner_tablet_portrait.jpg +0 -0
  275. data/app/assets/images/homepage/promo_banner_left.jpg +0 -0
  276. data/app/assets/images/homepage/promo_banner_left_mobile.jpg +0 -0
  277. data/app/assets/images/homepage/promo_banner_left_tablet_landscape.jpg +0 -0
  278. data/app/assets/images/homepage/promo_banner_left_tablet_portrait.jpg +0 -0
  279. data/app/assets/images/homepage/promo_banner_right.jpg +0 -0
  280. data/app/assets/images/homepage/promo_banner_right_mobile.jpg +0 -0
  281. data/app/assets/images/homepage/promo_banner_right_tablet_landscape.jpg +0 -0
  282. data/app/assets/images/homepage/promo_banner_right_tablet_portrait.jpg +0 -0
  283. data/app/assets/images/meganav/promo_banner_left-first-category.jpg +0 -0
  284. data/app/assets/images/meganav/promo_banner_left-second-category.jpg +0 -0
  285. data/app/assets/images/meganav/promo_banner_left-third-category.jpg +0 -0
  286. data/app/assets/images/meganav/promo_banner_right-first-category.jpg +0 -0
  287. data/app/assets/images/meganav/promo_banner_right-second-category.jpg +0 -0
  288. data/app/assets/images/meganav/promo_banner_right-third-category.jpg +0 -0
  289. data/app/assets/images/noimage/big_category_banner.jpg +0 -0
  290. data/app/assets/images/noimage/big_category_banner_mobile.jpg +0 -0
  291. data/app/assets/images/noimage/big_category_banner_tablet_landscape.jpg +0 -0
  292. data/app/assets/images/noimage/big_category_banner_tablet_portrait.jpg +0 -0
  293. data/app/assets/images/noimage/category_banner.jpg +0 -0
  294. data/app/assets/images/noimage/category_banner_mobile.jpg +0 -0
  295. data/app/assets/images/noimage/category_banner_plp.jpg +0 -0
  296. data/app/assets/images/noimage/category_banner_tablet_landscape.jpg +0 -0
  297. data/app/assets/images/noimage/category_banner_tablet_portrait.jpg +0 -0
  298. data/app/assets/images/noimage/main_banner.jpg +0 -0
  299. data/app/assets/images/noimage/main_banner_mobile.jpg +0 -0
  300. data/app/assets/images/noimage/main_banner_tablet_landscape.jpg +0 -0
  301. data/app/assets/images/noimage/main_banner_tablet_portrait.jpg +0 -0
  302. data/app/assets/images/noimage/product_photo.jpg +0 -0
  303. data/app/assets/images/noimage/promo_banner.jpg +0 -0
  304. data/app/assets/images/noimage/promo_banner_megamenu.jpg +0 -0
  305. data/app/assets/images/noimage/promo_banner_mobile.jpg +0 -0
  306. data/app/assets/images/noimage/promo_banner_tablet_landscape.jpg +0 -0
  307. data/app/assets/images/noimage/promo_banner_tablet_portrait.jpg +0 -0
  308. data/app/assets/images/spark-logo@3x.png +0 -0
  309. data/app/assets/stylesheets/spree/frontend/_glyphicons_urls_fix.scss +0 -10
  310. data/app/assets/stylesheets/spree/frontend/address_book.scss +0 -8
  311. data/app/models/spree/frontend_configuration.rb +0 -7
  312. data/app/views/spree/shared/_taxonomies.html.erb +0 -16
  313. /data/app/views/spree/{shared → errors}/forbidden.html.erb +0 -0
  314. /data/app/views/spree/{shared → errors}/unauthorized.html.erb +0 -0
@@ -0,0 +1,93 @@
1
+ var getQueryString = window.location.search
2
+ var urlParams = new URLSearchParams(getQueryString)
3
+ var variantIdFromUrl = urlParams.get('variant')
4
+
5
+ this.initializeQueryParamsCheck = function () {
6
+ if (urlParams.has('variant')) verifyVariantIdMatch()
7
+ }
8
+
9
+ function verifyVariantIdMatch() {
10
+ this.variants.forEach(function(variant) {
11
+ if (variant.id.toString() === variantIdFromUrl.toString()) this.urlQueryMatchFound = true
12
+ })
13
+ }
14
+
15
+ this.setSelectedVariantFromUrl = function () {
16
+ this.selectedOptions = []
17
+
18
+ this.getVariantOptionsById(variantIdFromUrl)
19
+ this.sortArrayByOptionTypeIndex(this.selectedOptions)
20
+ this.clickListOptions(this.selectedOptions)
21
+ this.updateStructuredData()
22
+ }
23
+
24
+ this.getVariantOptionsById = function(variantIdFromUrl) {
25
+ this.variants.forEach(function(variant) {
26
+ if (variant.id.toString() === variantIdFromUrl.toString()) this.sortOptionValues(variant.option_values)
27
+ })
28
+ }
29
+
30
+ this.sortOptionValues = function(optVals) {
31
+ optVals.forEach(buildArray)
32
+ }
33
+
34
+ function buildArray(item) {
35
+ var container = document.querySelector('ul#product-variants')
36
+ var target = container.querySelectorAll('.product-variants-variant-values-radio')
37
+
38
+ target.forEach(function(inputTag) {
39
+ if (inputTag.value.toString() === item.id.toString() && inputTag.dataset.presentation === item.presentation) {
40
+ this.selectedOptions.push(inputTag)
41
+ }
42
+ })
43
+ }
44
+
45
+ this.sortArrayByOptionTypeIndex = function (arrayOfOptions) {
46
+ arrayOfOptions.sort(function (a, b) {
47
+ return a.dataset.optionTypeIndex > b.dataset.optionTypeIndex ? 1 : -1;
48
+ })
49
+ }
50
+
51
+ this.clickListOptions = function(list) {
52
+ list.forEach(function (item) {
53
+ item.checked = true
54
+ var $optionListItem = $(item)
55
+ this.applyCheckedOptionValue($optionListItem)
56
+ })
57
+ }
58
+
59
+ this.updateStructuredData = function() {
60
+ var variant = this.selectedVariant()
61
+ var host = window.location.host
62
+ var schemaData = document.body.querySelector("script[type='application/ld+json']")
63
+ var obj = JSON.parse(schemaData.firstChild.nodeValue)
64
+ var firstLayer = obj[0]
65
+ var offers = obj[0].offers
66
+
67
+ if (variant.purchasable) {
68
+ offers.availability = 'InStock'
69
+ } else {
70
+ offers.availability = 'OutOfStock'
71
+ }
72
+
73
+ if (variant.sku.length > 1) {
74
+ firstLayer.sku = variant.sku
75
+ }
76
+
77
+ firstLayer.url = window.location.href
78
+ offers.url = window.location.href
79
+ offers.price = variant.price.amount
80
+
81
+ if (Array.isArray(variant.images) && (variant.images.length)) {
82
+ firstLayer.image = host + variant.images[0].url_product
83
+ }
84
+
85
+ schemaData.firstChild.nodeValue = JSON.stringify(obj)
86
+ }
87
+
88
+ this.initializeColorVarianTooltip = function() {
89
+ var colorVariants = $('.color-select-label[data-toggle="tooltip"]')
90
+ colorVariants.tooltip({
91
+ placement: 'bottom'
92
+ })
93
+ }
@@ -3,19 +3,76 @@
3
3
  //= require popper
4
4
  //= require bootstrap
5
5
  //= require jquery.payment
6
- //= require spree
6
+ //= require cleave
7
+ //= require spree/frontend/main
7
8
  //= require polyfill.min
8
9
  //= require fetch.umd
9
- //= require spree/api/main
10
+ //= require spree/frontend/api/main
10
11
  //= require ./lazysizes.config
11
12
  //= require lazysizes.min
12
- //= require turbolinks
13
- //= require_tree ./frontend
13
+ //= require accounting.min
14
+ //= require spree/frontend/account
15
+ //= require spree/frontend/api_tokens
16
+ //= require spree/frontend/carousel-noconflict
17
+ //= require spree/frontend/cart
18
+ //= require spree/frontend/locale
19
+ //= require spree/frontend/currency
20
+ //= require spree/frontend/checkout
21
+ //= require spree/frontend/checkout/address
22
+ //= require spree/frontend/checkout/address_book
23
+ //= require spree/frontend/checkout/payment
24
+ //= require spree/frontend/checkout/shipment
25
+ //= require spree/frontend/views/spree/home/product_carousels
26
+ //= require spree/frontend/views/spree/layouts/spree_application
27
+ //= require spree/frontend/views/spree/product/related
28
+ //= require spree/frontend/views/spree/products/cart_form
29
+ //= require spree/frontend/views/spree/products/description
30
+ //= require spree/frontend/views/spree/products/index
31
+ //= require spree/frontend/views/spree/products/modal_carousel
32
+ //= require spree/frontend/views/spree/products/price_filters
33
+ //= require spree/frontend/views/spree/shared/carousel
34
+ //= require spree/frontend/views/spree/shared/carousel/single
35
+ //= require spree/frontend/views/spree/shared/carousel/swipes
36
+ //= require spree/frontend/views/spree/shared/carousel/thumbnails
37
+ //= require spree/frontend/views/spree/shared/delete_address_popup
38
+ //= require spree/frontend/views/spree/shared/mobile_navigation
39
+ //= require spree/frontend/views/spree/shared/nav_bar
40
+ //= require spree/frontend/views/spree/shared/product_added_modal
41
+ //= require spree/frontend/views/spree/shared/quantity_select
42
+ //= require spree/frontend/turbo_scroll_fix
43
+ //= require spree/frontend/main_nav_bar
44
+ //= require spree/frontend/login
14
45
 
15
- Spree.routes.api_tokens = Spree.pathFor('api_tokens')
16
- Spree.routes.ensure_cart = Spree.pathFor('ensure_cart')
17
- Spree.routes.api_v2_storefront_cart_apply_coupon_code = Spree.pathFor('api/v2/storefront/cart/apply_coupon_code')
18
- Spree.routes.api_v2_storefront_cart_remove_coupon_code = Spree.pathFor('api/v2/storefront/cart/remove_coupon_code')
19
- Spree.routes.product = function(id) { return Spree.pathFor('products/' + id) }
20
- Spree.routes.product_related = function(id) { return Spree.routes.product(id) + '/related' }
21
- Spree.routes.product_carousel = function (taxonId) { return Spree.pathFor('product_carousel/' + taxonId) }
46
+ Spree.routes.api_tokens = Spree.localizedPathFor('api_tokens')
47
+ Spree.routes.ensure_cart = Spree.localizedPathFor('ensure_cart')
48
+ Spree.routes.api_v2_storefront_cart_apply_coupon_code = Spree.localizedPathFor('api/v2/storefront/cart/apply_coupon_code')
49
+ Spree.routes.api_v2_storefront_cart_remove_coupon_code = function(couponCode) { return Spree.localizedPathFor('api/v2/storefront/cart/remove_coupon_code/' + couponCode) }
50
+ Spree.routes.api_v2_storefront_destroy_credit_card = function(id) { return Spree.localizedPathFor('api/v2/storefront/account/credit_cards/' + id) }
51
+ Spree.routes.product = function(id) { return Spree.localizedPathFor('products/' + id) }
52
+ Spree.routes.product_related = function(id) { return Spree.localizedPathFor('products/' + id + '/related') }
53
+ Spree.routes.product_carousel = function (taxonId) { return Spree.localizedPathFor('product_carousel/' + taxonId) }
54
+ Spree.routes.set_locale = function(locale) { return Spree.localizedPathFor('locale/set?switch_to_locale=' + locale) }
55
+ Spree.routes.set_currency = function(currency) { return Spree.localizedPathFor('currency/set?switch_to_currency=' + currency) }
56
+
57
+ Spree.clearCache = function () {
58
+ if (!window.Turbo) { return }
59
+
60
+ Turbo.clearCache()
61
+ }
62
+
63
+ Spree.setCurrency = function (currency) {
64
+ Spree.clearCache()
65
+
66
+ var params = (new URL(window.location)).searchParams
67
+ if (currency === SPREE_DEFAULT_CURRENCY) {
68
+ params.delete('currency')
69
+ } else {
70
+ params.set('currency', currency)
71
+ }
72
+ var queryString = params.toString()
73
+ if (queryString !== '') { queryString = '?' + queryString }
74
+
75
+ SPREE_CURRENCY = currency
76
+
77
+ Turbo.visit(window.location.pathname + queryString, { action: 'replace' })
78
+ }
@@ -1,6 +1,4 @@
1
1
  @import "spree/frontend/variables/variables";
2
- @import "spree/frontend/variables/bootstrap-overrides";
3
- @import "spree/frontend/variables/helper-variables";
4
2
  @import "bootstrap";
5
3
  @import "spree/frontend/bootstrap-patches";
6
4
 
@@ -8,6 +6,7 @@
8
6
  @import "spree/frontend/mixins";
9
7
  @import "spree/frontend/functions";
10
8
  @import "spree/frontend/margins";
9
+ @import "spree/frontend/flags/flag-icon";
11
10
 
12
11
  @import "spree/frontend/components-bootstrap/carousel";
13
12
  @import "spree/frontend/components-bootstrap/button";
@@ -25,9 +24,11 @@
25
24
  @import "spree/frontend/views/spree/shared/header";
26
25
  @import "spree/frontend/views/spree/shared/login";
27
26
  @import "spree/frontend/views/spree/shared/nav_bar";
27
+ @import "spree/frontend/views/spree/shared/search_form";
28
28
  @import "spree/frontend/views/spree/shared/order_details";
29
29
  @import "spree/frontend/views/spree/shared/main_nav_bar";
30
30
  @import "spree/frontend/views/spree/errors/not_found";
31
+ @import "spree/frontend/views/spree/cms_sections/_index";
31
32
  @import "spree/frontend/views/spree/shared/carousel/thumbnails";
32
33
  @import "spree/frontend/views/spree/shared/carousel/single";
33
34
  @import "spree/frontend/views/spree/home/index";
@@ -37,6 +38,7 @@
37
38
  @import "spree/frontend/components-custom/headers";
38
39
  @import "spree/frontend/components-custom/inputs";
39
40
  @import "spree/frontend/views/spree/checkout/registration";
41
+ @import "spree/frontend/views/spree/checkout/delivery";
40
42
  @import "spree/frontend/views/spree/checkout/confirm";
41
43
  @import "spree/frontend/views/spree/checkout/payment";
42
44
  @import "spree/frontend/views/spree/orders/edit";
@@ -47,6 +49,7 @@
47
49
  @import "spree/frontend/views/spree/shared/product";
48
50
  @import "spree/frontend/views/spree/products/show";
49
51
  @import "spree/frontend/views/spree/products/cart_form";
52
+ @import "spree/frontend/views/spree/products/gallery_modal";
50
53
  @import "spree/frontend/views/spree/shared/product_added_modal";
51
54
  @import "spree/frontend/views/spree/shared/mobile_navigation";
52
55
  @import "spree/frontend/views/spree/shared/no_product_available";
@@ -6,3 +6,11 @@
6
6
  }
7
7
  }
8
8
  }
9
+
10
+ .cursor-default {
11
+ cursor: default;
12
+ }
13
+
14
+ .pointer-events-none {
15
+ pointer-events: none;
16
+ }
@@ -15,6 +15,10 @@
15
15
  }
16
16
  &-vertically-animated {
17
17
  // Source: https://stackoverflow.com/questions/42910076/bootstrap-4-alpha-6-vertical-carousel
18
+ .carousel-item {
19
+ -webkit-transform: translate3d(0, 0, 0);
20
+ transform: translate3d(0, 0, 0);
21
+ }
18
22
  .carousel-item-next.carousel-item-left,
19
23
  .carousel-item-prev.carousel-item-right {
20
24
  -webkit-transform: translate3d(0, 0, 0);
@@ -33,6 +33,8 @@
33
33
  .spree-flat-select {
34
34
  @extend .spree-flat-input;
35
35
  appearance: none;
36
+ padding-top:22px;
37
+ padding-bottom:21px;
36
38
  -webkit-appearance: none;
37
39
  -moz-appearance: none;
38
40
  &-arrow {
@@ -48,6 +50,12 @@
48
50
  }
49
51
  }
50
52
 
53
+ .field_with_errors {
54
+ input{
55
+ border-color: $danger;
56
+ }
57
+ }
58
+
51
59
  .spree-flat-label {
52
60
  color: theme-color("secondary");
53
61
  text-transform: uppercase;
@@ -83,7 +91,12 @@
83
91
  }
84
92
 
85
93
  input[type="checkbox"] {
86
- display: none;
94
+ opacity: 0;
95
+ position: absolute;
96
+ width: 100%;
97
+ height: 100%;
98
+ top: 0;
99
+ left: 0;
87
100
  }
88
101
 
89
102
  label {
@@ -138,6 +151,10 @@
138
151
  }
139
152
  }
140
153
 
154
+ input[type="checkbox"]:focus + label {
155
+ border-color: $primary-color;
156
+ }
157
+
141
158
  input[type="checkbox"]:checked + label {
142
159
  background-color: theme-color("secondary");
143
160
 
@@ -241,6 +258,10 @@
241
258
  opacity: 0;
242
259
  height: 0;
243
260
  width: 0;
261
+ &:focus + span {
262
+ border-radius: 50%;
263
+ border: 2px solid $primary-color;
264
+ }
244
265
  }
245
266
  &-custom-input {
246
267
  @include colored-circle-radio($secondary-color);
@@ -264,3 +285,61 @@
264
285
  background-size: contain;
265
286
  }
266
287
  }
288
+
289
+ //Slide in labels
290
+ @mixin float-label-container {
291
+ display: block;
292
+ position: relative;
293
+ }
294
+
295
+ @mixin float-label {
296
+ label {
297
+ position: absolute;
298
+ left: 1em;
299
+ top: -0.5em;
300
+ cursor: text;
301
+ opacity: 1;
302
+ background: $input-background;
303
+ padding: 0 4px;
304
+ transition: all .2s;
305
+ @content;
306
+ &.state-select-label{
307
+ opacity: 1 !important;
308
+ left:1em !important;
309
+ }
310
+ }
311
+ }
312
+
313
+ @mixin float-label-input {
314
+ &::placeholder {
315
+ opacity: 0;
316
+ color: $secondary-font-color;
317
+ transition: all .2s;
318
+ }
319
+ &:placeholder-shown:not(:focus)::placeholder {
320
+ opacity: 0.3;
321
+ transition: all .2s;
322
+ }
323
+ }
324
+
325
+ @mixin float-label-scaled {
326
+ &:placeholder-shown:not(:focus) + * {
327
+ @content;
328
+ }
329
+ }
330
+
331
+ .has-float-label {
332
+ @include float-label-container;
333
+ @include float-label;
334
+
335
+ input, textarea {
336
+ @include float-label-input;
337
+ @include float-label-scaled {
338
+ opacity: 0;
339
+ left: 0em;
340
+ }
341
+ }
342
+ .form-control:focus {
343
+ box-shadow: none;
344
+ }
345
+ }
@@ -0,0 +1,23 @@
1
+ .flag-icon-background {
2
+ background-size: contain;
3
+ background-position: 50%;
4
+ background-repeat: no-repeat;
5
+ }
6
+
7
+ .flag-icon {
8
+ @extend .flag-icon-background;
9
+ position: relative;
10
+ display: inline-block;
11
+ width: (4 / 3) * 2.3em;
12
+ &:before {
13
+ content: "\00a0";
14
+ }
15
+ }
16
+
17
+ @mixin flag-icon($country) {
18
+ .flag-icon-#{$country} {
19
+ background-image: image-url(
20
+ "#{$flag-icon-css-path}#{$flag-icon-rect-path}/#{$country}.svg"
21
+ );
22
+ }
23
+ }
@@ -0,0 +1,265 @@
1
+ @if variable-exists(include) {
2
+ @each $country in $include {
3
+ @include flag-icon($country);
4
+ }
5
+ } @else {
6
+ @include flag-icon(ad);
7
+ @include flag-icon(ae);
8
+ @include flag-icon(af);
9
+ @include flag-icon(ag);
10
+ @include flag-icon(ai);
11
+ @include flag-icon(al);
12
+ @include flag-icon(am);
13
+ @include flag-icon(ao);
14
+ @include flag-icon(aq);
15
+ @include flag-icon(ar);
16
+ @include flag-icon(as);
17
+ @include flag-icon(at);
18
+ @include flag-icon(au);
19
+ @include flag-icon(aw);
20
+ @include flag-icon(ax);
21
+ @include flag-icon(az);
22
+ @include flag-icon(ba);
23
+ @include flag-icon(bb);
24
+ @include flag-icon(bd);
25
+ @include flag-icon(be);
26
+ @include flag-icon(bf);
27
+ @include flag-icon(bg);
28
+ @include flag-icon(bh);
29
+ @include flag-icon(bi);
30
+ @include flag-icon(bj);
31
+ @include flag-icon(bl);
32
+ @include flag-icon(bm);
33
+ @include flag-icon(bn);
34
+ @include flag-icon(bo);
35
+ @include flag-icon(bq);
36
+ @include flag-icon(br);
37
+ @include flag-icon(bs);
38
+ @include flag-icon(bt);
39
+ @include flag-icon(bv);
40
+ @include flag-icon(bw);
41
+ @include flag-icon(by);
42
+ @include flag-icon(bz);
43
+ @include flag-icon(ca);
44
+ @include flag-icon(cc);
45
+ @include flag-icon(cd);
46
+ @include flag-icon(cf);
47
+ @include flag-icon(cg);
48
+ @include flag-icon(ch);
49
+ @include flag-icon(ci);
50
+ @include flag-icon(ck);
51
+ @include flag-icon(cl);
52
+ @include flag-icon(cm);
53
+ @include flag-icon(cn);
54
+ @include flag-icon(co);
55
+ @include flag-icon(cr);
56
+ @include flag-icon(cu);
57
+ @include flag-icon(cv);
58
+ @include flag-icon(cw);
59
+ @include flag-icon(cx);
60
+ @include flag-icon(cy);
61
+ @include flag-icon(cz);
62
+ @include flag-icon(de);
63
+ @include flag-icon(dj);
64
+ @include flag-icon(dk);
65
+ @include flag-icon(dm);
66
+ @include flag-icon(do);
67
+ @include flag-icon(dz);
68
+ @include flag-icon(ec);
69
+ @include flag-icon(ee);
70
+ @include flag-icon(eg);
71
+ @include flag-icon(eh);
72
+ @include flag-icon(er);
73
+ @include flag-icon(es);
74
+ @include flag-icon(et);
75
+ @include flag-icon(fi);
76
+ @include flag-icon(fj);
77
+ @include flag-icon(fk);
78
+ @include flag-icon(fm);
79
+ @include flag-icon(fo);
80
+ @include flag-icon(fr);
81
+ @include flag-icon(ga);
82
+ @include flag-icon(gb);
83
+ @include flag-icon(gd);
84
+ @include flag-icon(ge);
85
+ @include flag-icon(gf);
86
+ @include flag-icon(gg);
87
+ @include flag-icon(gh);
88
+ @include flag-icon(gi);
89
+ @include flag-icon(gl);
90
+ @include flag-icon(gm);
91
+ @include flag-icon(gn);
92
+ @include flag-icon(gp);
93
+ @include flag-icon(gq);
94
+ @include flag-icon(gr);
95
+ @include flag-icon(gs);
96
+ @include flag-icon(gt);
97
+ @include flag-icon(gu);
98
+ @include flag-icon(gw);
99
+ @include flag-icon(gy);
100
+ @include flag-icon(hk);
101
+ @include flag-icon(hm);
102
+ @include flag-icon(hn);
103
+ @include flag-icon(hr);
104
+ @include flag-icon(ht);
105
+ @include flag-icon(hu);
106
+ @include flag-icon(id);
107
+ @include flag-icon(ie);
108
+ @include flag-icon(il);
109
+ @include flag-icon(im);
110
+ @include flag-icon(in);
111
+ @include flag-icon(io);
112
+ @include flag-icon(iq);
113
+ @include flag-icon(ir);
114
+ @include flag-icon(is);
115
+ @include flag-icon(it);
116
+ @include flag-icon(je);
117
+ @include flag-icon(jm);
118
+ @include flag-icon(jo);
119
+ @include flag-icon(jp);
120
+ @include flag-icon(ke);
121
+ @include flag-icon(kg);
122
+ @include flag-icon(kh);
123
+ @include flag-icon(ki);
124
+ @include flag-icon(km);
125
+ @include flag-icon(kn);
126
+ @include flag-icon(kp);
127
+ @include flag-icon(kr);
128
+ @include flag-icon(kw);
129
+ @include flag-icon(ky);
130
+ @include flag-icon(kz);
131
+ @include flag-icon(la);
132
+ @include flag-icon(lb);
133
+ @include flag-icon(lc);
134
+ @include flag-icon(li);
135
+ @include flag-icon(lk);
136
+ @include flag-icon(lr);
137
+ @include flag-icon(ls);
138
+ @include flag-icon(lt);
139
+ @include flag-icon(lu);
140
+ @include flag-icon(lv);
141
+ @include flag-icon(ly);
142
+ @include flag-icon(ma);
143
+ @include flag-icon(mc);
144
+ @include flag-icon(md);
145
+ @include flag-icon(me);
146
+ @include flag-icon(mf);
147
+ @include flag-icon(mg);
148
+ @include flag-icon(mh);
149
+ @include flag-icon(mk);
150
+ @include flag-icon(ml);
151
+ @include flag-icon(mm);
152
+ @include flag-icon(mn);
153
+ @include flag-icon(mo);
154
+ @include flag-icon(mp);
155
+ @include flag-icon(mq);
156
+ @include flag-icon(mr);
157
+ @include flag-icon(ms);
158
+ @include flag-icon(mt);
159
+ @include flag-icon(mu);
160
+ @include flag-icon(mv);
161
+ @include flag-icon(mw);
162
+ @include flag-icon(mx);
163
+ @include flag-icon(my);
164
+ @include flag-icon(mz);
165
+ @include flag-icon(na);
166
+ @include flag-icon(nc);
167
+ @include flag-icon(ne);
168
+ @include flag-icon(nf);
169
+ @include flag-icon(ng);
170
+ @include flag-icon(ni);
171
+ @include flag-icon(nl);
172
+ @include flag-icon(no);
173
+ @include flag-icon(np);
174
+ @include flag-icon(nr);
175
+ @include flag-icon(nu);
176
+ @include flag-icon(nz);
177
+ @include flag-icon(om);
178
+ @include flag-icon(pa);
179
+ @include flag-icon(pe);
180
+ @include flag-icon(pf);
181
+ @include flag-icon(pg);
182
+ @include flag-icon(ph);
183
+ @include flag-icon(pk);
184
+ @include flag-icon(pl);
185
+ @include flag-icon(pm);
186
+ @include flag-icon(pn);
187
+ @include flag-icon(pr);
188
+ @include flag-icon(ps);
189
+ @include flag-icon(pt);
190
+ @include flag-icon(pw);
191
+ @include flag-icon(py);
192
+ @include flag-icon(qa);
193
+ @include flag-icon(re);
194
+ @include flag-icon(ro);
195
+ @include flag-icon(rs);
196
+ @include flag-icon(ru);
197
+ @include flag-icon(rw);
198
+ @include flag-icon(sa);
199
+ @include flag-icon(sb);
200
+ @include flag-icon(sc);
201
+ @include flag-icon(sd);
202
+ @include flag-icon(se);
203
+ @include flag-icon(sg);
204
+ @include flag-icon(sh);
205
+ @include flag-icon(si);
206
+ @include flag-icon(sj);
207
+ @include flag-icon(sk);
208
+ @include flag-icon(sl);
209
+ @include flag-icon(sm);
210
+ @include flag-icon(sn);
211
+ @include flag-icon(so);
212
+ @include flag-icon(sr);
213
+ @include flag-icon(ss);
214
+ @include flag-icon(st);
215
+ @include flag-icon(sv);
216
+ @include flag-icon(sx);
217
+ @include flag-icon(sy);
218
+ @include flag-icon(sz);
219
+ @include flag-icon(tc);
220
+ @include flag-icon(td);
221
+ @include flag-icon(tf);
222
+ @include flag-icon(tg);
223
+ @include flag-icon(th);
224
+ @include flag-icon(tj);
225
+ @include flag-icon(tk);
226
+ @include flag-icon(tl);
227
+ @include flag-icon(tm);
228
+ @include flag-icon(tn);
229
+ @include flag-icon(to);
230
+ @include flag-icon(tr);
231
+ @include flag-icon(tt);
232
+ @include flag-icon(tv);
233
+ @include flag-icon(tw);
234
+ @include flag-icon(tz);
235
+ @include flag-icon(ua);
236
+ @include flag-icon(ug);
237
+ @include flag-icon(um);
238
+ @include flag-icon(us);
239
+ @include flag-icon(uy);
240
+ @include flag-icon(uz);
241
+ @include flag-icon(va);
242
+ @include flag-icon(vc);
243
+ @include flag-icon(ve);
244
+ @include flag-icon(vg);
245
+ @include flag-icon(vi);
246
+ @include flag-icon(vn);
247
+ @include flag-icon(vu);
248
+ @include flag-icon(wf);
249
+ @include flag-icon(ws);
250
+ @include flag-icon(ye);
251
+ @include flag-icon(yt);
252
+ @include flag-icon(za);
253
+ @include flag-icon(zm);
254
+ @include flag-icon(zw);
255
+
256
+ // Other flags
257
+ @include flag-icon(es-ca);
258
+ @include flag-icon(eu);
259
+ @include flag-icon(gb-eng);
260
+ @include flag-icon(gb-nir);
261
+ @include flag-icon(gb-sct);
262
+ @include flag-icon(gb-wls);
263
+ @include flag-icon(un);
264
+ @include flag-icon(xk);
265
+ }
@@ -0,0 +1,2 @@
1
+ $flag-icon-css-path: 'flags' !default;
2
+ $flag-icon-rect-path: '/4x3' !default;
@@ -0,0 +1,3 @@
1
+ @import 'variables';
2
+ @import 'flag-icon-base';
3
+ @import 'flag-icon-list';
@@ -1,4 +1,5 @@
1
1
  $font-size-base-px: 16px; //assuming 16px is 1rem ($font-size-base: 1rem in Bootstrap 4)
2
+ $x1: null;
2
3
 
3
4
  @function font-px-to-rem($target-font-size-px: $font-size-base-px) {
4
5
  @return $font-size-base * ( $target-font-size-px / $font-size-base-px );