cloudcommerce 0.0.108 → 0.0.110

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/package.json +8 -8
  3. package/packages/api/lib/api.d.ts +4 -4940
  4. package/packages/api/lib/types.d.ts +17 -3
  5. package/packages/api/package.json +1 -1
  6. package/packages/api/src/types.ts +45 -23
  7. package/packages/apps/correios/package.json +1 -1
  8. package/packages/apps/custom-shipping/package.json +1 -1
  9. package/packages/apps/discounts/package.json +1 -1
  10. package/packages/apps/frenet/lib-mjs/calculate-frenet.mjs +26 -23
  11. package/packages/apps/frenet/package.json +1 -1
  12. package/packages/apps/tiny-erp/package.json +2 -2
  13. package/packages/cli/package.json +1 -1
  14. package/packages/config/package.json +1 -1
  15. package/packages/events/package.json +2 -2
  16. package/packages/firebase/package.json +2 -2
  17. package/packages/i18n/lib/en_us.d.ts +1 -0
  18. package/packages/i18n/lib/en_us.js +1 -0
  19. package/packages/i18n/lib/en_us.js.map +1 -1
  20. package/packages/i18n/lib/pt_br.d.ts +1 -0
  21. package/packages/i18n/lib/pt_br.js +1 -0
  22. package/packages/i18n/lib/pt_br.js.map +1 -1
  23. package/packages/i18n/package.json +1 -1
  24. package/packages/i18n/src/en_us.ts +1 -0
  25. package/packages/i18n/src/pt_br.ts +1 -0
  26. package/packages/modules/lib/firebase/checkout.js +20 -26
  27. package/packages/modules/lib/firebase/checkout.js.map +1 -1
  28. package/packages/modules/lib/firebase/functions-checkout/get-custumerId.js +23 -18
  29. package/packages/modules/lib/firebase/functions-checkout/get-custumerId.js.map +1 -1
  30. package/packages/modules/lib/firebase/functions-checkout/handle-order-transaction.js +12 -24
  31. package/packages/modules/lib/firebase/functions-checkout/handle-order-transaction.js.map +1 -1
  32. package/packages/modules/lib/firebase/functions-checkout/new-order.js +8 -8
  33. package/packages/modules/lib/firebase/functions-checkout/new-order.js.map +1 -1
  34. package/packages/modules/lib/firebase/functions-checkout/request-to-module.js +2 -9
  35. package/packages/modules/lib/firebase/functions-checkout/request-to-module.js.map +1 -1
  36. package/packages/modules/lib/firebase/handle-module.js.map +1 -1
  37. package/packages/modules/lib/firebase/serve-modules-api.js +1 -1
  38. package/packages/modules/lib/firebase/serve-modules-api.js.map +1 -1
  39. package/packages/modules/lib/index.js +2 -0
  40. package/packages/modules/lib/index.js.map +1 -1
  41. package/packages/modules/package.json +3 -2
  42. package/packages/modules/schemas/@checkout.cjs +13 -1
  43. package/packages/modules/schemas/list_payments.cjs +6 -0
  44. package/packages/modules/src/firebase/checkout.ts +22 -49
  45. package/packages/modules/src/firebase/functions-checkout/get-custumerId.ts +23 -17
  46. package/packages/modules/src/firebase/functions-checkout/handle-order-transaction.ts +8 -45
  47. package/packages/modules/src/firebase/functions-checkout/new-order.ts +4 -9
  48. package/packages/modules/src/firebase/functions-checkout/request-to-module.ts +2 -11
  49. package/packages/modules/src/firebase/handle-module.ts +1 -1
  50. package/packages/modules/src/firebase/serve-modules-api.ts +1 -1
  51. package/packages/modules/src/index.ts +2 -0
  52. package/packages/passport/lib/firebase/authenticate-customer.js +81 -0
  53. package/packages/passport/lib/firebase/authenticate-customer.js.map +1 -0
  54. package/packages/passport/lib/firebase/serve-passport-api.js +20 -30
  55. package/packages/passport/lib/firebase/serve-passport-api.js.map +1 -1
  56. package/packages/passport/lib/firebase.js +1 -13
  57. package/packages/passport/lib/firebase.js.map +1 -1
  58. package/packages/passport/lib/index.js +1 -1
  59. package/packages/passport/lib/index.js.map +1 -1
  60. package/packages/passport/package.json +2 -2
  61. package/packages/passport/src/firebase/authenticate-customer.ts +94 -0
  62. package/packages/passport/src/firebase/serve-passport-api.ts +21 -49
  63. package/packages/passport/src/firebase.ts +1 -21
  64. package/packages/passport/src/index.ts +4 -1
  65. package/packages/ssr/package.json +5 -6
  66. package/packages/storefront/content/header.json +6 -0
  67. package/packages/storefront/dist/client/LoginDrawer.e69d1c74.js +1 -0
  68. package/packages/storefront/dist/client/assets/_...d5980663.css +4 -0
  69. package/packages/storefront/dist/client/chunks/LoginDrawer.0c26574f.js +1 -0
  70. package/packages/storefront/dist/client/chunks/{LoginForm.c86d05cc.js → LoginForm.892d64a5.js} +132 -102
  71. package/packages/storefront/dist/client/chunks/runtime-dom.esm-bundler.7f8f570f.js +1 -0
  72. package/packages/storefront/dist/client/{client.6db2fd63.js → client.246ab4a4.js} +1 -1
  73. package/packages/storefront/dist/client/sw.js +1 -1
  74. package/packages/storefront/dist/server/entry.mjs +2214 -32
  75. package/packages/storefront/package.json +12 -9
  76. package/packages/storefront/src/assets/pico.css +3 -400
  77. package/packages/storefront/src/lib/components/{AOffcanvas.vue → ADrawer.vue} +3 -3
  78. package/packages/storefront/src/lib/components/LoginDrawer.vue +80 -0
  79. package/packages/storefront/src/lib/components/LoginForm.vue +66 -29
  80. package/packages/storefront/src/lib/components/TheHeader.vue +1 -1
  81. package/packages/storefront/src/lib/layouts/PagesHeader.astro +18 -7
  82. package/packages/storefront/src/lib/state/customer-session.ts +137 -0
  83. package/packages/types/index.ts +22 -0
  84. package/packages/types/modules/@checkout:params.d.ts +9 -1
  85. package/packages/types/modules/list_payments:params.d.ts +4 -0
  86. package/packages/types/package.json +1 -1
  87. package/packages/passport/lib/firebase/handle-passport.js +0 -112
  88. package/packages/passport/lib/firebase/handle-passport.js.map +0 -1
  89. package/packages/passport/src/firebase/handle-passport.ts +0 -142
  90. package/packages/storefront/dist/client/LoginOffcanvas.c2a47936.js +0 -1
  91. package/packages/storefront/dist/client/assets/_...4826ec44.css +0 -4
  92. package/packages/storefront/dist/client/chunks/LoginOffcanvas.794b9840.js +0 -1
  93. package/packages/storefront/dist/client/chunks/runtime-dom.esm-bundler.4b976197.js +0 -1
  94. package/packages/storefront/src/lib/components/LoginOffcanvas.vue +0 -41
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/storefront",
3
3
  "type": "module",
4
- "version": "0.0.108",
4
+ "version": "0.0.110",
5
5
  "description": "E-Com Plus Cloud Commerce storefront with Astro",
6
6
  "main": "src/index.js",
7
7
  "repository": {
@@ -27,10 +27,10 @@
27
27
  },
28
28
  "dependencies": {
29
29
  "@astrojs/image": "^0.8.1",
30
- "@astrojs/node": "^1.0.1",
30
+ "@astrojs/node": "^1.1.0",
31
31
  "@astrojs/partytown": "^1.0.0",
32
32
  "@astrojs/prefetch": "^0.0.7",
33
- "@astrojs/vue": "^1.0.2",
33
+ "@astrojs/vue": "^1.1.0",
34
34
  "@cloudcommerce/api": "workspace:*",
35
35
  "@cloudcommerce/config": "workspace:*",
36
36
  "@cloudcommerce/i18n": "workspace:*",
@@ -39,17 +39,20 @@
39
39
  "@iconify-json/heroicons": "^1.1.4",
40
40
  "@iconify-json/logos": "^1.1.16",
41
41
  "@nanostores/vue": "^0.6.0",
42
- "@unocss/preset-icons": "^0.45.23",
43
- "astro": "^1.3.0",
42
+ "@unocss/preset-icons": "^0.45.26",
43
+ "astro": "1.3.x",
44
44
  "color": "^4.2.3",
45
- "dotenv": "^16.0.2",
45
+ "dotenv": "^16.0.3",
46
46
  "firebase": "^9.10.0",
47
47
  "image-size": "^1.0.2",
48
48
  "nanostores": "^0.7.0",
49
49
  "rollup": "^2.79.1",
50
- "unocss": "^0.45.23",
51
- "vite": "^3.1.3",
50
+ "unocss": "^0.45.26",
51
+ "vite": "^3.1.4",
52
52
  "vite-plugin-pwa": "^0.13.1",
53
- "vue": "^3.2.39"
53
+ "vue": "^3.2.40"
54
+ },
55
+ "devDependencies": {
56
+ "@babel/core": "^7.19.3"
54
57
  }
55
58
  }
@@ -29,8 +29,7 @@
29
29
  --nav-link-spacing-vertical: 0.5rem;
30
30
  --nav-link-spacing-horizontal: 0.5rem;
31
31
  --form-label-font-weight: var(--font-weight);
32
- --transition: 0.2s ease-in-out;
33
- --modal-overlay-backdrop-filter: blur(0.25rem);
32
+ --transition: 0.15s ease-in-out;
34
33
  --icon-checkbox: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(255, 255, 255)' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");
35
34
  --icon-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(65, 84, 98)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");
36
35
  --icon-chevron-button: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(255, 255, 255)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");
@@ -533,8 +532,6 @@ a,
533
532
  color: var(--color);
534
533
  -webkit-text-decoration: var(--text-decoration);
535
534
  text-decoration: var(--text-decoration);
536
- transition: background-color var(--transition), color var(--transition), box-shadow var(--transition), -webkit-text-decoration var(--transition);
537
- transition: background-color var(--transition), color var(--transition), text-decoration var(--transition), box-shadow var(--transition);
538
535
  transition: background-color var(--transition), color var(--transition), text-decoration var(--transition), box-shadow var(--transition), -webkit-text-decoration var(--transition);
539
536
  }
540
537
  a:is([aria-current], :hover, :active, :focus),
@@ -653,10 +650,6 @@ small {
653
650
  margin-top: calc(var(--typography-spacing-vertical) * 0.25);
654
651
  }
655
652
 
656
- ul li {
657
- list-style: square;
658
- }
659
-
660
653
  mark {
661
654
  padding: 0.125rem 0.25rem;
662
655
  background-color: var(--mark-background-color);
@@ -695,14 +688,6 @@ del {
695
688
  color: var(--del-color);
696
689
  }
697
690
 
698
- ::-moz-selection {
699
- background-color: var(--primary-focus);
700
- }
701
-
702
- ::selection {
703
- background-color: var(--primary-focus);
704
- }
705
-
706
691
  /**
707
692
  * Embedded content
708
693
  */
@@ -1261,8 +1246,6 @@ label > :where(input, select, textarea) {
1261
1246
  line-height: var(--line-height);
1262
1247
  text-align: center;
1263
1248
  cursor: pointer;
1264
- -webkit-transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition);
1265
- transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition);
1266
1249
  }
1267
1250
  [type=file]::file-selector-button {
1268
1251
  --background-color: var(--secondary);
@@ -1286,7 +1269,6 @@ label > :where(input, select, textarea) {
1286
1269
  line-height: var(--line-height);
1287
1270
  text-align: center;
1288
1271
  cursor: pointer;
1289
- transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition);
1290
1272
  }
1291
1273
  [type=file]::-webkit-file-upload-button:is(:hover, :active, :focus) {
1292
1274
  --background-color: var(--secondary-hover);
@@ -1318,8 +1300,6 @@ label > :where(input, select, textarea) {
1318
1300
  line-height: var(--line-height);
1319
1301
  text-align: center;
1320
1302
  cursor: pointer;
1321
- -webkit-transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition);
1322
- transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition);
1323
1303
  }
1324
1304
  [type=file]::-webkit-file-upload-button:is(:hover, :active, :focus) {
1325
1305
  --background-color: var(--secondary-hover);
@@ -1345,8 +1325,6 @@ label > :where(input, select, textarea) {
1345
1325
  line-height: var(--line-height);
1346
1326
  text-align: center;
1347
1327
  cursor: pointer;
1348
- -ms-transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition);
1349
- transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition);
1350
1328
  }
1351
1329
  [type=file]::-ms-browse:is(:hover, :active, :focus) {
1352
1330
  --background-color: var(--secondary-hover);
@@ -1712,8 +1690,6 @@ dialog {
1712
1690
  min-height: 100%;
1713
1691
  padding: var(--spacing);
1714
1692
  border: 0;
1715
- -webkit-backdrop-filter: var(--modal-overlay-backdrop-filter);
1716
- backdrop-filter: var(--modal-overlay-backdrop-filter);
1717
1693
  background-color: var(--modal-overlay-background-color);
1718
1694
  color: var(--color);
1719
1695
  }
@@ -1773,71 +1749,6 @@ dialog:not([open]), dialog[open=false] {
1773
1749
  display: none;
1774
1750
  }
1775
1751
 
1776
- .modal-is-open {
1777
- padding-right: var(--scrollbar-width, 0px);
1778
- overflow: hidden;
1779
- pointer-events: none;
1780
- }
1781
- .modal-is-open dialog {
1782
- pointer-events: auto;
1783
- }
1784
-
1785
- :where(.modal-is-opening, .modal-is-closing) dialog,
1786
- :where(.modal-is-opening, .modal-is-closing) dialog > article {
1787
- -webkit-animation-duration: 0.2s;
1788
- animation-duration: 0.2s;
1789
- -webkit-animation-timing-function: ease-in-out;
1790
- animation-timing-function: ease-in-out;
1791
- -webkit-animation-fill-mode: both;
1792
- animation-fill-mode: both;
1793
- }
1794
- :where(.modal-is-opening, .modal-is-closing) dialog {
1795
- -webkit-animation-duration: 0.8s;
1796
- animation-duration: 0.8s;
1797
- -webkit-animation-name: modal-overlay;
1798
- animation-name: modal-overlay;
1799
- }
1800
- :where(.modal-is-opening, .modal-is-closing) dialog > article {
1801
- -webkit-animation-delay: 0.2s;
1802
- animation-delay: 0.2s;
1803
- -webkit-animation-name: modal;
1804
- animation-name: modal;
1805
- }
1806
-
1807
- .modal-is-closing dialog,
1808
- .modal-is-closing dialog > article {
1809
- -webkit-animation-delay: 0s;
1810
- animation-delay: 0s;
1811
- animation-direction: reverse;
1812
- }
1813
-
1814
- @-webkit-keyframes modal-overlay {
1815
- from {
1816
- -webkit-backdrop-filter: none;
1817
- backdrop-filter: none;
1818
- background-color: transparent;
1819
- }
1820
- }
1821
-
1822
- @keyframes modal-overlay {
1823
- from {
1824
- -webkit-backdrop-filter: none;
1825
- backdrop-filter: none;
1826
- background-color: transparent;
1827
- }
1828
- }
1829
- @-webkit-keyframes modal {
1830
- from {
1831
- transform: translateY(-100%);
1832
- opacity: 0;
1833
- }
1834
- }
1835
- @keyframes modal {
1836
- from {
1837
- transform: translateY(-100%);
1838
- opacity: 0;
1839
- }
1840
- }
1841
1752
  /**
1842
1753
  * Nav
1843
1754
  */
@@ -1968,6 +1879,7 @@ progress[value]::-webkit-progress-value {
1968
1879
  progress::-moz-progress-bar {
1969
1880
  background-color: var(--progress-color);
1970
1881
  }
1882
+
1971
1883
  @media (prefers-reduced-motion: no-preference) {
1972
1884
  progress:indeterminate {
1973
1885
  background: var(--progress-background-color) linear-gradient(to right, var(--progress-color) 30%, var(--progress-background-color) 30%) top left/150% 150% no-repeat;
@@ -1980,9 +1892,6 @@ progress::-moz-progress-bar {
1980
1892
  progress:indeterminate::-moz-progress-bar {
1981
1893
  background-color: transparent;
1982
1894
  }
1983
- }
1984
-
1985
- @media (prefers-reduced-motion: no-preference) {
1986
1895
  [dir=rtl] progress:indeterminate {
1987
1896
  animation-direction: reverse;
1988
1897
  }
@@ -2005,6 +1914,7 @@ progress::-moz-progress-bar {
2005
1914
  background-position: -200% 0;
2006
1915
  }
2007
1916
  }
1917
+
2008
1918
  /**
2009
1919
  * Dropdown ([role="list"])
2010
1920
  */
@@ -2228,313 +2138,6 @@ a[aria-busy=true] {
2228
2138
  transform: rotate(360deg);
2229
2139
  }
2230
2140
  }
2231
- /**
2232
- * Tooltip ([data-tooltip])
2233
- */
2234
- [data-tooltip] {
2235
- position: relative;
2236
- }
2237
- [data-tooltip]:not(a, button, input) {
2238
- border-bottom: 1px dotted;
2239
- text-decoration: none;
2240
- cursor: help;
2241
- }
2242
- [data-tooltip][data-placement=top]::before, [data-tooltip][data-placement=top]::after, [data-tooltip]::before, [data-tooltip]::after {
2243
- display: block;
2244
- z-index: 99;
2245
- position: absolute;
2246
- bottom: 100%;
2247
- left: 50%;
2248
- padding: 0.25rem 0.5rem;
2249
- overflow: hidden;
2250
- transform: translate(-50%, -0.25rem);
2251
- border-radius: var(--border-radius);
2252
- background: var(--tooltip-background-color);
2253
- content: attr(data-tooltip);
2254
- color: var(--tooltip-color);
2255
- font-style: normal;
2256
- font-weight: var(--font-weight);
2257
- font-size: 0.875rem;
2258
- text-decoration: none;
2259
- text-overflow: ellipsis;
2260
- white-space: nowrap;
2261
- opacity: 0;
2262
- pointer-events: none;
2263
- }
2264
- [data-tooltip][data-placement=top]::after, [data-tooltip]::after {
2265
- padding: 0;
2266
- transform: translate(-50%, 0rem);
2267
- border-top: 0.3rem solid;
2268
- border-right: 0.3rem solid transparent;
2269
- border-left: 0.3rem solid transparent;
2270
- border-radius: 0;
2271
- background-color: transparent;
2272
- content: "";
2273
- color: var(--tooltip-background-color);
2274
- }
2275
- [data-tooltip][data-placement=bottom]::before, [data-tooltip][data-placement=bottom]::after {
2276
- top: 100%;
2277
- bottom: auto;
2278
- transform: translate(-50%, 0.25rem);
2279
- }
2280
- [data-tooltip][data-placement=bottom]:after {
2281
- transform: translate(-50%, -0.3rem);
2282
- border: 0.3rem solid transparent;
2283
- border-bottom: 0.3rem solid;
2284
- }
2285
- [data-tooltip][data-placement=left]::before, [data-tooltip][data-placement=left]::after {
2286
- top: 50%;
2287
- right: 100%;
2288
- bottom: auto;
2289
- left: auto;
2290
- transform: translate(-0.25rem, -50%);
2291
- }
2292
- [data-tooltip][data-placement=left]:after {
2293
- transform: translate(0.3rem, -50%);
2294
- border: 0.3rem solid transparent;
2295
- border-left: 0.3rem solid;
2296
- }
2297
- [data-tooltip][data-placement=right]::before, [data-tooltip][data-placement=right]::after {
2298
- top: 50%;
2299
- right: auto;
2300
- bottom: auto;
2301
- left: 100%;
2302
- transform: translate(0.25rem, -50%);
2303
- }
2304
- [data-tooltip][data-placement=right]:after {
2305
- transform: translate(-0.3rem, -50%);
2306
- border: 0.3rem solid transparent;
2307
- border-right: 0.3rem solid;
2308
- }
2309
- [data-tooltip]:focus::before, [data-tooltip]:focus::after, [data-tooltip]:hover::before, [data-tooltip]:hover::after {
2310
- opacity: 1;
2311
- }
2312
- @media (hover: hover) and (pointer: fine) {
2313
- [data-tooltip][data-placement=bottom]:focus::before, [data-tooltip][data-placement=bottom]:focus::after, [data-tooltip][data-placement=bottom]:hover [data-tooltip]:focus::before, [data-tooltip][data-placement=bottom]:hover [data-tooltip]:focus::after, [data-tooltip]:hover::before, [data-tooltip]:hover::after {
2314
- -webkit-animation-duration: 0.2s;
2315
- animation-duration: 0.2s;
2316
- -webkit-animation-name: tooltip-slide-top;
2317
- animation-name: tooltip-slide-top;
2318
- }
2319
- [data-tooltip][data-placement=bottom]:focus::after, [data-tooltip][data-placement=bottom]:hover [data-tooltip]:focus::after, [data-tooltip]:hover::after {
2320
- -webkit-animation-name: tooltip-caret-slide-top;
2321
- animation-name: tooltip-caret-slide-top;
2322
- }
2323
- [data-tooltip][data-placement=bottom]:focus::before, [data-tooltip][data-placement=bottom]:focus::after, [data-tooltip][data-placement=bottom]:hover::before, [data-tooltip][data-placement=bottom]:hover::after {
2324
- -webkit-animation-duration: 0.2s;
2325
- animation-duration: 0.2s;
2326
- -webkit-animation-name: tooltip-slide-bottom;
2327
- animation-name: tooltip-slide-bottom;
2328
- }
2329
- [data-tooltip][data-placement=bottom]:focus::after, [data-tooltip][data-placement=bottom]:hover::after {
2330
- -webkit-animation-name: tooltip-caret-slide-bottom;
2331
- animation-name: tooltip-caret-slide-bottom;
2332
- }
2333
- [data-tooltip][data-placement=left]:focus::before, [data-tooltip][data-placement=left]:focus::after, [data-tooltip][data-placement=left]:hover::before, [data-tooltip][data-placement=left]:hover::after {
2334
- -webkit-animation-duration: 0.2s;
2335
- animation-duration: 0.2s;
2336
- -webkit-animation-name: tooltip-slide-left;
2337
- animation-name: tooltip-slide-left;
2338
- }
2339
- [data-tooltip][data-placement=left]:focus::after, [data-tooltip][data-placement=left]:hover::after {
2340
- -webkit-animation-name: tooltip-caret-slide-left;
2341
- animation-name: tooltip-caret-slide-left;
2342
- }
2343
- [data-tooltip][data-placement=right]:focus::before, [data-tooltip][data-placement=right]:focus::after, [data-tooltip][data-placement=right]:hover::before, [data-tooltip][data-placement=right]:hover::after {
2344
- -webkit-animation-duration: 0.2s;
2345
- animation-duration: 0.2s;
2346
- -webkit-animation-name: tooltip-slide-right;
2347
- animation-name: tooltip-slide-right;
2348
- }
2349
- [data-tooltip][data-placement=right]:focus::after, [data-tooltip][data-placement=right]:hover::after {
2350
- -webkit-animation-name: tooltip-caret-slide-right;
2351
- animation-name: tooltip-caret-slide-right;
2352
- }
2353
- }
2354
- @-webkit-keyframes tooltip-slide-top {
2355
- from {
2356
- transform: translate(-50%, 0.75rem);
2357
- opacity: 0;
2358
- }
2359
- to {
2360
- transform: translate(-50%, -0.25rem);
2361
- opacity: 1;
2362
- }
2363
- }
2364
- @keyframes tooltip-slide-top {
2365
- from {
2366
- transform: translate(-50%, 0.75rem);
2367
- opacity: 0;
2368
- }
2369
- to {
2370
- transform: translate(-50%, -0.25rem);
2371
- opacity: 1;
2372
- }
2373
- }
2374
- @-webkit-keyframes tooltip-caret-slide-top {
2375
- from {
2376
- opacity: 0;
2377
- }
2378
- 50% {
2379
- transform: translate(-50%, -0.25rem);
2380
- opacity: 0;
2381
- }
2382
- to {
2383
- transform: translate(-50%, 0rem);
2384
- opacity: 1;
2385
- }
2386
- }
2387
- @keyframes tooltip-caret-slide-top {
2388
- from {
2389
- opacity: 0;
2390
- }
2391
- 50% {
2392
- transform: translate(-50%, -0.25rem);
2393
- opacity: 0;
2394
- }
2395
- to {
2396
- transform: translate(-50%, 0rem);
2397
- opacity: 1;
2398
- }
2399
- }
2400
- @-webkit-keyframes tooltip-slide-bottom {
2401
- from {
2402
- transform: translate(-50%, -0.75rem);
2403
- opacity: 0;
2404
- }
2405
- to {
2406
- transform: translate(-50%, 0.25rem);
2407
- opacity: 1;
2408
- }
2409
- }
2410
- @keyframes tooltip-slide-bottom {
2411
- from {
2412
- transform: translate(-50%, -0.75rem);
2413
- opacity: 0;
2414
- }
2415
- to {
2416
- transform: translate(-50%, 0.25rem);
2417
- opacity: 1;
2418
- }
2419
- }
2420
- @-webkit-keyframes tooltip-caret-slide-bottom {
2421
- from {
2422
- opacity: 0;
2423
- }
2424
- 50% {
2425
- transform: translate(-50%, -0.5rem);
2426
- opacity: 0;
2427
- }
2428
- to {
2429
- transform: translate(-50%, -0.3rem);
2430
- opacity: 1;
2431
- }
2432
- }
2433
- @keyframes tooltip-caret-slide-bottom {
2434
- from {
2435
- opacity: 0;
2436
- }
2437
- 50% {
2438
- transform: translate(-50%, -0.5rem);
2439
- opacity: 0;
2440
- }
2441
- to {
2442
- transform: translate(-50%, -0.3rem);
2443
- opacity: 1;
2444
- }
2445
- }
2446
- @-webkit-keyframes tooltip-slide-left {
2447
- from {
2448
- transform: translate(0.75rem, -50%);
2449
- opacity: 0;
2450
- }
2451
- to {
2452
- transform: translate(-0.25rem, -50%);
2453
- opacity: 1;
2454
- }
2455
- }
2456
- @keyframes tooltip-slide-left {
2457
- from {
2458
- transform: translate(0.75rem, -50%);
2459
- opacity: 0;
2460
- }
2461
- to {
2462
- transform: translate(-0.25rem, -50%);
2463
- opacity: 1;
2464
- }
2465
- }
2466
- @-webkit-keyframes tooltip-caret-slide-left {
2467
- from {
2468
- opacity: 0;
2469
- }
2470
- 50% {
2471
- transform: translate(0.05rem, -50%);
2472
- opacity: 0;
2473
- }
2474
- to {
2475
- transform: translate(0.3rem, -50%);
2476
- opacity: 1;
2477
- }
2478
- }
2479
- @keyframes tooltip-caret-slide-left {
2480
- from {
2481
- opacity: 0;
2482
- }
2483
- 50% {
2484
- transform: translate(0.05rem, -50%);
2485
- opacity: 0;
2486
- }
2487
- to {
2488
- transform: translate(0.3rem, -50%);
2489
- opacity: 1;
2490
- }
2491
- }
2492
- @-webkit-keyframes tooltip-slide-right {
2493
- from {
2494
- transform: translate(-0.75rem, -50%);
2495
- opacity: 0;
2496
- }
2497
- to {
2498
- transform: translate(0.25rem, -50%);
2499
- opacity: 1;
2500
- }
2501
- }
2502
- @keyframes tooltip-slide-right {
2503
- from {
2504
- transform: translate(-0.75rem, -50%);
2505
- opacity: 0;
2506
- }
2507
- to {
2508
- transform: translate(0.25rem, -50%);
2509
- opacity: 1;
2510
- }
2511
- }
2512
- @-webkit-keyframes tooltip-caret-slide-right {
2513
- from {
2514
- opacity: 0;
2515
- }
2516
- 50% {
2517
- transform: translate(-0.05rem, -50%);
2518
- opacity: 0;
2519
- }
2520
- to {
2521
- transform: translate(-0.3rem, -50%);
2522
- opacity: 1;
2523
- }
2524
- }
2525
- @keyframes tooltip-caret-slide-right {
2526
- from {
2527
- opacity: 0;
2528
- }
2529
- 50% {
2530
- transform: translate(-0.05rem, -50%);
2531
- opacity: 0;
2532
- }
2533
- to {
2534
- transform: translate(-0.3rem, -50%);
2535
- opacity: 1;
2536
- }
2537
- }
2538
2141
 
2539
2142
  /**
2540
2143
  * Accessibility & User interaction
@@ -31,13 +31,13 @@ const escClickListener = (ev: KeyboardEvent) => {
31
31
  };
32
32
  watch(toRef(props, 'modelValue'), async (isOpen) => {
33
33
  if (isOpen) {
34
- document.body.style.maxWidth = `${document.body.offsetWidth}px`;
35
34
  document.body.style.overflow = 'hidden';
36
35
  setTimeout(() => {
37
36
  document.addEventListener('click', outsideClickListener, { passive: true });
38
37
  document.addEventListener('keydown', escClickListener, { passive: true });
39
38
  }, 500);
40
39
  } else {
40
+ document.body.style.overflow = null;
41
41
  document.removeEventListener('click', outsideClickListener);
42
42
  document.removeEventListener('keydown', escClickListener);
43
43
  }
@@ -75,7 +75,7 @@ const transition3dTx = computed(() => {
75
75
  <style>
76
76
  .offcanvas.v-enter-active,
77
77
  .offcanvas.v-leave-active {
78
- transition: opacity 0.25s linear;
78
+ transition: opacity 0.15s linear;
79
79
  }
80
80
  .offcanvas.v-enter-from,
81
81
  .offcanvas.v-leave-to {
@@ -83,7 +83,7 @@ const transition3dTx = computed(() => {
83
83
  }
84
84
  .offcanvas.v-enter-active article,
85
85
  .offcanvas.v-leave-active article {
86
- transition: transform 0.3s ease-out;
86
+ transition: transform 0.25s ease-in-out;
87
87
  }
88
88
  .offcanvas.v-enter-from article,
89
89
  .offcanvas.v-leave-to article {
@@ -0,0 +1,80 @@
1
+ <script lang="ts" setup>
2
+ import { ref, defineAsyncComponent } from 'vue';
3
+ import {
4
+ i19myAccountAndOrders,
5
+ i19myAccount,
6
+ i19myOrders,
7
+ } from '@i18n';
8
+ import ADrawer from './ADrawer.vue';
9
+
10
+ export interface Props {
11
+ accountUrl?: string;
12
+ accountIconClass?: string;
13
+ additionalLinks?: Array<{
14
+ href: string;
15
+ isBlank?: boolean;
16
+ innerHTML: string;
17
+ }>;
18
+ }
19
+
20
+ withDefaults(defineProps<Props>(), {
21
+ accountUrl: '/app/account',
22
+ accountIconClass: 'i-user-circle',
23
+ additionalLinks: () => [],
24
+ });
25
+ const isVisible = ref(false);
26
+ const loadingLoginForm = !import.meta.env.SSR
27
+ ? import('./LoginForm.vue')
28
+ : Promise.resolve() as Promise<any>;
29
+ const LoginForm = defineAsyncComponent(() => loadingLoginForm);
30
+ const toggle = (ev: MouseEvent) => {
31
+ loadingLoginForm.then(() => {
32
+ isVisible.value = !isVisible.value;
33
+ ev.preventDefault();
34
+ });
35
+ };
36
+ const isLogged = ref(false);
37
+ </script>
38
+
39
+ <template>
40
+ <div @click="toggle">
41
+ <slot name="toggle" v-bind="{ isVisible }">
42
+ <a :href="accountUrl" :title="i19myAccountAndOrders">
43
+ <div :class="accountIconClass"></div>
44
+ </a>
45
+ </slot>
46
+ </div>
47
+ <ADrawer v-model="isVisible" class="login-offcanvas">
48
+ <slot name="form">
49
+ <LoginForm
50
+ class="w-80"
51
+ @login="isLogged = true"
52
+ @logout="isLogged = false"
53
+ />
54
+ </slot>
55
+ <slot name="nav" v-bind="{ isLogged }">
56
+ <hr>
57
+ <aside>
58
+ <nav>
59
+ <ul>
60
+ <template v-if="isLogged">
61
+ <li><a :href="`${accountUrl}/#/orders`">{{ i19myOrders }}</a></li>
62
+ <li><a :href="accountUrl">{{ i19myAccount }}</a></li>
63
+ </template>
64
+ <li
65
+ v-for="({ href, isBlank, innerHTML }, i) in additionalLinks"
66
+ :key="i"
67
+ >
68
+ <a
69
+ :href="href"
70
+ :target="isBlank ? '_blank' : null"
71
+ :rel="isBlank ? 'noopener' : null"
72
+ v-html="innerHTML"
73
+ ></a>
74
+ </li>
75
+ </ul>
76
+ </nav>
77
+ </aside>
78
+ </slot>
79
+ </ADrawer>
80
+ </template>