@mirai/core 0.3.378 → 0.3.380

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 (107) hide show
  1. package/__tests__/Checkout/__mocks__/checkout-get.json +935 -0
  2. package/__tests__/Checkout/__mocks__/checkout-post-PAYLATER.json +10 -0
  3. package/__tests__/Checkout/__mocks__/checkout-post-TPV.json +7 -0
  4. package/__tests__/Checkout/__mocks__/checkout-post-TRANSFER.json +10 -0
  5. package/__tests__/Checkout/checkout.constants.js +8 -0
  6. package/__tests__/Checkout/checkout.spec.jsx +40 -0
  7. package/__tests__/Checkout/workflows/form.workflow.js +17 -0
  8. package/__tests__/Checkout/workflows/index.js +4 -0
  9. package/__tests__/Checkout/workflows/payment.workflow.js +10 -0
  10. package/__tests__/Checkout/workflows/review.workflow.js +19 -0
  11. package/__tests__/Checkout/workflows/submit.workflow.js +9 -0
  12. package/__tests__/Finder/finder.spec.js +64 -0
  13. package/__tests__/Finder/workflows/calendar.workflow.js +9 -0
  14. package/__tests__/Finder/workflows/index.js +3 -0
  15. package/__tests__/Finder/workflows/occupation.workflow.js +13 -0
  16. package/__tests__/Finder/workflows/promocode.workflow.js +8 -0
  17. package/__tests__/Rates/__mocks__/rates-success.json +731 -0
  18. package/__tests__/Rates/rates.spec.jsx +20 -0
  19. package/__tests__/Session/session.spec.js +17 -0
  20. package/__tests__/Session/workflows/bookings.workflow.js +18 -0
  21. package/__tests__/Session/workflows/forgotPassword.workflow.js +20 -0
  22. package/__tests__/Session/workflows/index.js +5 -0
  23. package/__tests__/Session/workflows/login.workflow.js +29 -0
  24. package/__tests__/Session/workflows/logout.workflow.js +8 -0
  25. package/__tests__/Session/workflows/profile.workflow.js +49 -0
  26. package/__tests__/Signup/signup.spec.js +13 -0
  27. package/__tests__/Signup/workflows/index.js +1 -0
  28. package/__tests__/Signup/workflows/signup.workflow.js +26 -0
  29. package/__tests__/constants.js +18 -0
  30. package/__tests__/helpers/closeNotification.js +7 -0
  31. package/__tests__/helpers/getWeekNumber.js +8 -0
  32. package/__tests__/helpers/index.js +2 -0
  33. package/build/Core.Notifications.js +1 -1
  34. package/build/Core.Notifications.js.map +1 -1
  35. package/build/components/Booking/__tests__/__snapshots__/Booking.test.js.snap +10 -10
  36. package/build/components/Checkout/Checkout.js +1 -0
  37. package/build/components/Checkout/Checkout.js.map +1 -1
  38. package/build/components/Checkout/__tests__/__snapshots__/Checkout.test.js.snap +32 -32
  39. package/build/components/Checkout/partials/Checkout.Confirmation.js +2 -1
  40. package/build/components/Checkout/partials/Checkout.Confirmation.js.map +1 -1
  41. package/build/components/Checkout/partials/__tests__/__snapshots__/Checkout.Confirmation.test.js.snap +6 -0
  42. package/build/components/Checkout/partials/__tests__/__snapshots__/Checkout.Form.test.js.snap +28 -8
  43. package/build/components/Deals/__tests__/__snapshots__/Deals.Calendar.test.js.snap +114 -114
  44. package/build/components/Deals/__tests__/__snapshots__/Deals.test.js.snap +211 -209
  45. package/build/components/Environment/Environment.js +4 -2
  46. package/build/components/Environment/Environment.js.map +1 -1
  47. package/build/components/Finder/Finder.compact.js +10 -5
  48. package/build/components/Finder/Finder.compact.js.map +1 -1
  49. package/build/components/Finder/Finder.constants.js +1 -2
  50. package/build/components/Finder/Finder.constants.js.map +1 -1
  51. package/build/components/Finder/Finder.js +4 -20
  52. package/build/components/Finder/Finder.js.map +1 -1
  53. package/build/components/Finder/__tests__/__snapshots__/Finder.test.js.snap +734 -730
  54. package/build/components/Finder/components/Calendar/__tests__/__snapshots__/Calendar.test.js.snap +419 -419
  55. package/build/components/Header/Header.js +1 -0
  56. package/build/components/Header/Header.js.map +1 -1
  57. package/build/components/Profile/components/Bookings/Bookings.Search.js +9 -8
  58. package/build/components/Profile/components/Bookings/Bookings.Search.js.map +1 -1
  59. package/build/components/Profile/components/Bookings/Bookings.js +1 -0
  60. package/build/components/Profile/components/Bookings/Bookings.js.map +1 -1
  61. package/build/components/Profile/components/Settings/Settings.Account.js +2 -2
  62. package/build/components/Profile/components/Settings/Settings.Account.js.map +1 -1
  63. package/build/components/Profile/components/Settings/Settings.Password.js +31 -33
  64. package/build/components/Profile/components/Settings/Settings.Password.js.map +1 -1
  65. package/build/components/Profile/components/Settings/Settings.Signout.js +11 -8
  66. package/build/components/Profile/components/Settings/Settings.Signout.js.map +1 -1
  67. package/build/components/Profile/components/Settings/Settings.js +2 -1
  68. package/build/components/Profile/components/Settings/Settings.js.map +1 -1
  69. package/build/components/Profile/components/Settings/Settings.l10n.js +4 -0
  70. package/build/components/Profile/components/Settings/Settings.l10n.js.map +1 -1
  71. package/build/components/Profile/components/Settings/Settings.module.css +2 -4
  72. package/build/components/Session/Session.Account.js +10 -5
  73. package/build/components/Session/Session.Account.js.map +1 -1
  74. package/build/components/Session/Session.Login.Modal.js +10 -5
  75. package/build/components/Session/Session.Login.Modal.js.map +1 -1
  76. package/build/components/Session/Session.Login.js +2 -1
  77. package/build/components/Session/Session.Login.js.map +1 -1
  78. package/build/components/Session/__tests__/__snapshots__/Session.test.js.snap +23 -0
  79. package/build/components/Signup/Signup.js +3 -1
  80. package/build/components/Signup/Signup.js.map +1 -1
  81. package/build/components/Signup/__tests__/__snapshots__/Signup.test.js.snap +9 -6
  82. package/build/components/__shared__/BookingDetails/BookingDetails.js +2 -1
  83. package/build/components/__shared__/BookingDetails/BookingDetails.js.map +1 -1
  84. package/build/components/__shared__/BookingDetails/__tests__/__snapshots__/BookingDetails.test.js.snap +5 -0
  85. package/build/components/__shared__/BookingSummary/BookingSummary.js +2 -1
  86. package/build/components/__shared__/BookingSummary/BookingSummary.js.map +1 -1
  87. package/build/components/__shared__/ButtonMore/ButtonMore.js +1 -1
  88. package/build/components/__shared__/ButtonMore/ButtonMore.js.map +1 -1
  89. package/build/components/__shared__/ButtonMore/__tests__/__snapshots__/ButtonMore.test.js.snap +2 -0
  90. package/build/components/__shared__/FieldOccupation/__tests__/__snapshots__/FieldOccupation.test.js.snap +1 -0
  91. package/build/components/__shared__/FieldPromocode/FieldPromocode.js +4 -2
  92. package/build/components/__shared__/FieldPromocode/FieldPromocode.js.map +1 -1
  93. package/build/components/__shared__/FieldPromocode/__tests__/__snapshots__/FieldPromocode.test.jsx.snap +2 -1
  94. package/build/components/__shared__/Occupation/Occupation.Group.js +2 -1
  95. package/build/components/__shared__/Occupation/Occupation.Group.js.map +1 -1
  96. package/build/components/__shared__/Occupation/__tests__/__snapshots__/Occupation.test.js.snap +6 -0
  97. package/build/components/__shared__/Payment/Payment.js +2 -1
  98. package/build/components/__shared__/Payment/Payment.js.map +1 -1
  99. package/build/components/__shared__/Payment/__tests__/__snapshots__/Payment.test.js.snap +25 -10
  100. package/build/helpers/consolidateStore.js +1 -1
  101. package/build/helpers/consolidateStore.js.map +1 -1
  102. package/build/index.js +2 -1
  103. package/build/index.js.map +1 -1
  104. package/package.json +4 -3
  105. package/playwright.config.js +28 -89
  106. package/public/routes/Home.jsx +3 -4
  107. /package/__tests__/bookingQuery/{bookingQuey.spec.js → bookingQuey._spec.js} +0 -0
@@ -0,0 +1,20 @@
1
+ import { test } from '@playwright/test';
2
+
3
+ test.beforeEach(async ({ context }) => {
4
+ await context.addInitScript(() => (window.IS_PLAYWRIGHT = true));
5
+ });
6
+
7
+ test('Rates workflows', async ({ page }) => {
8
+ await page.route('https://reservation.mirai.com/XMAS/reservation/v2/booking/rates*', (route) => {
9
+ route.fulfill({
10
+ status: 200,
11
+ contentType: 'application/json',
12
+ body: JSON.stringify(require('./__mocks__/rates-success.json')),
13
+ });
14
+ });
15
+
16
+ await page.goto(
17
+ 'http://local.mirai.com:8080/step1-rates?checkin=10/04/2025&idtokenprovider=100379008&currency=EUR&hsri=02040&lang=en&nights=2&parties=W3siYWR1bHRzIjoyLCJjaGlsZHJlbiI6W119XQ%3D%3D&&step=1',
18
+ { waitUntil: 'networkidle', timeout: 10000 },
19
+ );
20
+ });
@@ -0,0 +1,17 @@
1
+ import { test } from '@playwright/test';
2
+
3
+ import { bookings, forgotPassword, login, logout, profile } from './workflows';
4
+
5
+ test.beforeEach(async ({ context }) => {
6
+ await context.addInitScript(() => (window.IS_PLAYWRIGHT = true));
7
+ });
8
+
9
+ test('Session workflows', async ({ page }) => {
10
+ await page.goto('http://local.mirai.com:8080', { waitUntil: 'networkidle', timeout: 10000 });
11
+
12
+ await login({ page });
13
+ await profile({ page });
14
+ await bookings({ page });
15
+ await logout({ page });
16
+ await forgotPassword({ page });
17
+ });
@@ -0,0 +1,18 @@
1
+ import { expect } from '@playwright/test';
2
+
3
+ export const bookings = async ({ page }) => {
4
+ await page.getByTestId('show-session-menu').click();
5
+ await page.getByTestId('session-bookings').click();
6
+
7
+ await page.waitForURL(/\/profile/, { waitUntil: 'networkidle', timeout: 10000 });
8
+
9
+ // Card: price details
10
+ await page.getByText('Price details').first().click();
11
+ await expect(page.locator('ui-tooltip-content')).toBeVisible();
12
+
13
+ // Search
14
+ await page.getByTestId('show-search').click();
15
+ await page.fill('input[name="search"]', '19800410');
16
+ await page.getByTestId('button-search').click();
17
+ await expect(page.locator('ui-tooltip-content')).not.toBeVisible();
18
+ };
@@ -0,0 +1,20 @@
1
+ import { expect } from '@playwright/test';
2
+
3
+ import { USER } from '../../constants';
4
+
5
+ export const forgotPassword = async ({ page }) => {
6
+ await page.getByTestId('show-login').click();
7
+ await page.waitForTimeout(300);
8
+
9
+ await page.getByTestId('login-action').click();
10
+
11
+ await page.fill('input[name="email"]', USER.email);
12
+
13
+ const [responseError] = await Promise.all([
14
+ page.waitForResponse((response) => response.url().includes('/recovery') && !!response.status()),
15
+ page.getByTestId('login-button').click(),
16
+ ]);
17
+ expect(responseError.status()).toBe(200);
18
+
19
+ await page.getByTestId('login-button-secondary').click();
20
+ };
@@ -0,0 +1,5 @@
1
+ export * from './bookings.workflow';
2
+ export * from './forgotPassword.workflow';
3
+ export * from './login.workflow';
4
+ export * from './logout.workflow';
5
+ export * from './profile.workflow';
@@ -0,0 +1,29 @@
1
+ import { expect } from '@playwright/test';
2
+
3
+ import { SESSION } from '../../constants';
4
+
5
+ export const login = async ({ page }) => {
6
+ await page.getByTestId('show-login').click();
7
+ await page.waitForTimeout(300);
8
+
9
+ // Fails
10
+ await page.fill('input[name="email"]', SESSION.email);
11
+ expect(await page.getByTestId('login-button').getAttribute('disabled')).toBe('true');
12
+ await page.fill('input[name="password"]', 'PassworD');
13
+
14
+ const [responseError] = await Promise.all([
15
+ page.waitForResponse((response) => response.url().includes('/login') && !!response.status()),
16
+ page.getByTestId('login-button').click(),
17
+ ]);
18
+ expect(responseError.status()).toBe(400);
19
+
20
+ // Success
21
+ await page.fill('input[name="email"]', SESSION.email);
22
+ await page.fill('input[name="password"]', SESSION.password);
23
+
24
+ const [response] = await Promise.all([
25
+ page.waitForResponse((response) => response.url().includes('/login') && !!response.status()),
26
+ page.getByTestId('login-button').click(),
27
+ ]);
28
+ expect(response.status()).toBe(200);
29
+ };
@@ -0,0 +1,8 @@
1
+ import { expect } from '@playwright/test';
2
+
3
+ export const logout = async ({ page }) => {
4
+ await page.getByTestId('show-session-menu').click();
5
+ await page.getByTestId('session-logout').click();
6
+
7
+ await expect(page.getByTestId('show-login')).toBeVisible();
8
+ };
@@ -0,0 +1,49 @@
1
+ import { expect } from '@playwright/test';
2
+
3
+ import { SESSION, USER } from '../../constants';
4
+
5
+ // ! TODO: Somehow we should close the notifications
6
+ // import { closeNotification } from '../../helpers';
7
+
8
+ export const profile = async ({ page }) => {
9
+ await page.getByTestId('show-session-menu').click();
10
+ await page.getByTestId('session-profile').click();
11
+
12
+ await page.waitForURL(/\/profile/, { waitUntil: 'networkidle', timeout: 10000 });
13
+
14
+ // Update profile
15
+ await page.fill('input[name="firstName"]', USER.firstName);
16
+ await page.fill('input[name="lastName"]', USER.lastName);
17
+ await page.fill('input[name="dateOfBirth"]', USER.dateOfBirth);
18
+ await page.locator('input[name="subscribed"]').check();
19
+
20
+ const [response] = await Promise.all([
21
+ page.waitForResponse((response) => response.url().includes('/modify_member') && !!response.status()),
22
+ page.getByTestId('button-save').click(),
23
+ ]);
24
+ expect(response.status()).toBe(200);
25
+ // await closeNotification();
26
+
27
+ // Move to "security" context
28
+ await page.getByTestId('profile-context-2').click();
29
+
30
+ // Try to change the password but user fails with the confirmation password
31
+ await page.fill('input[name="password"]', SESSION.password);
32
+ await page.fill('input[name="rePassword"]', 'n3wp4ssw0rD');
33
+ expect(await page.getByTestId('button-password').getAttribute('disabled')).toBe('true');
34
+
35
+ // User changes password
36
+ await page.fill('input[name="password"]', SESSION.password);
37
+ await page.fill('input[name="rePassword"]', SESSION.password);
38
+ const [responsePassword] = await Promise.all([
39
+ page.waitForResponse((response) => response.url().includes('/modify_member') && !!response.status()),
40
+ page.getByTestId('button-password').click(),
41
+ ]);
42
+ expect(responsePassword.status()).toBe(200);
43
+ // await closeNotification();
44
+
45
+ // Try to delete account and cancel process.
46
+ await page.getByTestId('button-delete-account').click();
47
+ await page.waitForTimeout(300);
48
+ await page.getByTestId('button-delete-close').click();
49
+ };
@@ -0,0 +1,13 @@
1
+ import { test } from '@playwright/test';
2
+
3
+ import { signup } from './workflows';
4
+
5
+ test.beforeEach(async ({ context }) => {
6
+ await context.addInitScript(() => (window.IS_PLAYWRIGHT = true));
7
+ });
8
+
9
+ test('Signup workflows', async ({ page }) => {
10
+ await page.goto('http://local.mirai.com:8080/signup', { waitUntil: 'networkidle', timeout: 10000 });
11
+
12
+ await signup({ page });
13
+ });
@@ -0,0 +1 @@
1
+ export * from './signup.workflow';
@@ -0,0 +1,26 @@
1
+ import { expect } from '@playwright/test';
2
+
3
+ import { USER } from '../../constants';
4
+
5
+ export const signup = async ({ page }) => {
6
+ await page.fill('ui-signup input[name="firstName"]', USER.firstName);
7
+ await page.fill('ui-signup input[name="lastName"]', USER.lastName);
8
+ await page.fill('ui-signup input[name="email"]', USER.email);
9
+ await page.fill('ui-signup input[name="dateOfBirth"]', USER.dateOfBirth);
10
+ await page.locator('ui-signup select[name="country"]').selectOption('United States');
11
+ await page.fill('ui-signup input[name="password"]', USER.password);
12
+ await page.locator('ui-signup input[name="subscribed"]').check();
13
+
14
+ // User forgot some fields
15
+ await page.getByTestId('signup-button').click();
16
+ await page.waitForSelector('ui-notification', { state: 'visible' });
17
+ await page.locator('input[name="privacy"]').check();
18
+
19
+ // Success
20
+ const [responseError] = await Promise.all([
21
+ page.waitForResponse((response) => response.url().includes('/join') && !!response.status()),
22
+ page.getByTestId('signup-button').click(),
23
+ ]);
24
+
25
+ expect(responseError.status()).toBe(409);
26
+ };
@@ -0,0 +1,18 @@
1
+ const SESSION = {
2
+ email: 'hello@soyjavi.com',
3
+ password: 'BuyB1tc01N',
4
+ };
5
+
6
+ const USER = {
7
+ firstName: 'Hal',
8
+ lastName: 'Finney',
9
+ dateOfBirth: '04/05/1956',
10
+ phone: {
11
+ prefix: '+1',
12
+ number: '818-555-1234',
13
+ },
14
+ email: 'hal@finney.org',
15
+ password: 'BuyB1tc01N',
16
+ };
17
+
18
+ export { SESSION, USER };
@@ -0,0 +1,7 @@
1
+ export const closeNotification = async ({ page }) => {
2
+ await page.waitForTimeout(300);
3
+
4
+ const button = page.locator('ui-notification[class*="visible"] ui-pressable');
5
+ await button.waitFor({ state: 'visible' });
6
+ await button.click();
7
+ };
@@ -0,0 +1,8 @@
1
+ import { UTC } from '@mirai/locale';
2
+
3
+ export const getWeekNumber = (date) => {
4
+ const firstDayOfYear = UTC(new Date(date.getFullYear(), 0, 1));
5
+ const pastDaysOfYear = (Number(date) - Number(firstDayOfYear)) / 86400000;
6
+
7
+ return Math.ceil((pastDaysOfYear + firstDayOfYear.getDay()) / 7);
8
+ };
@@ -0,0 +1,2 @@
1
+ export * from './closeNotification';
2
+ export * from './getWeekNumber';
@@ -35,7 +35,7 @@ const Notifications = () => {
35
35
  queue = {};
36
36
  }, [authorization]);
37
37
  const handleAdd = notification => {
38
- if (!notification) return;
38
+ if (!notification || window.IS_PLAYWRIGHT) return;
39
39
  const {
40
40
  contrast,
41
41
  success,
@@ -1 +1 @@
1
- {"version":3,"file":"Core.Notifications.js","names":["_dataSources","require","_locale","_ui","_react","_interopRequireWildcard","style","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","_extends","assign","bind","target","arguments","length","source","key","apply","EVENT_NAME","queue","Notifications","translate","useLocale","setTimestamp","useState","value","session","authorization","useStore","useEffect","Event","subscribe","handleAdd","unsubscribe","notification","contrast","success","warning","id","concat","Date","getTime","Math","random","toFixed","visible","forceRender","setTimeout","parseMotion","handleClose","motionExpand","Theme","parseFloat","replace","keys","createElement","View","className","notifications","sort","map","index","defaultMessage","props","Notification","wide","onClose","styles","item","zIndex","exports","displayName","propTypes"],"sources":["../src/Core.Notifications.jsx"],"sourcesContent":["import { Event, useStore } from '@mirai/data-sources';\nimport { useLocale } from '@mirai/locale';\nimport { Notification, styles, Theme, View } from '@mirai/ui';\nimport React, { useEffect, useState } from 'react';\n\nimport * as style from './Core.Notifications.module.css';\n\nconst EVENT_NAME = 'notification';\nlet queue = {};\n\nconst Notifications = () => {\n const { translate } = useLocale();\n const [, setTimestamp] = useState();\n const {\n value: { session: { authorization } = {} },\n } = useStore();\n\n useEffect(() => {\n Event.subscribe(EVENT_NAME, handleAdd);\n return () => Event.unsubscribe(EVENT_NAME, handleAdd);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n queue = {};\n }, [authorization]);\n\n const handleAdd = (notification) => {\n if (!notification) return;\n\n const { contrast, success, warning } = notification;\n const id = `${new Date().getTime()}:${Math.random().toFixed(8)}`;\n\n queue[id] = { ...notification, visible: false };\n forceRender();\n\n setTimeout(() => {\n queue[id].visible = true;\n forceRender();\n }, parseMotion());\n\n if (contrast || success || warning) setTimeout(() => handleClose(id), success ? 5000 : 10000);\n\n return;\n };\n\n const handleClose = (id) => {\n if (!queue[id]) return;\n\n setTimestamp(() => {\n queue[id].visible = false;\n\n setTimeout(() => {\n delete queue[id];\n forceRender();\n }, parseMotion());\n\n return new Date().getTime();\n });\n };\n\n const forceRender = () => setTimestamp(new Date().getTime());\n\n const parseMotion = () => {\n const { motionExpand = '0.3s' } = Theme.get();\n\n return parseFloat(motionExpand.replace('s')) * 1000;\n };\n\n const keys = Object.keys(queue);\n\n return (\n <View className={style.notifications}>\n {keys.sort().map((key, index) => {\n const { defaultMessage, id, visible = false, ...props } = queue[key];\n\n return (\n <Notification\n {...props}\n key={key}\n wide\n onClose={() => handleClose(key)}\n className={styles(style.item, visible && style.visible)}\n style={{ zIndex: keys.length - index }}\n >\n {translate({ id, defaultMessage })}\n </Notification>\n );\n })}\n </View>\n );\n};\n\nNotifications.displayName = 'core:components:Notifications';\n\nNotifications.propTypes = {};\n\nexport { Notifications };\n"],"mappings":"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"}
1
+ {"version":3,"file":"Core.Notifications.js","names":["_dataSources","require","_locale","_ui","_react","_interopRequireWildcard","style","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","_extends","assign","bind","target","arguments","length","source","key","apply","EVENT_NAME","queue","Notifications","translate","useLocale","setTimestamp","useState","value","session","authorization","useStore","useEffect","Event","subscribe","handleAdd","unsubscribe","notification","window","IS_PLAYWRIGHT","contrast","success","warning","id","concat","Date","getTime","Math","random","toFixed","visible","forceRender","setTimeout","parseMotion","handleClose","motionExpand","Theme","parseFloat","replace","keys","createElement","View","className","notifications","sort","map","index","defaultMessage","props","Notification","wide","onClose","styles","item","zIndex","exports","displayName","propTypes"],"sources":["../src/Core.Notifications.jsx"],"sourcesContent":["import { Event, useStore } from '@mirai/data-sources';\nimport { useLocale } from '@mirai/locale';\nimport { Notification, styles, Theme, View } from '@mirai/ui';\nimport React, { useEffect, useState } from 'react';\n\nimport * as style from './Core.Notifications.module.css';\n\nconst EVENT_NAME = 'notification';\nlet queue = {};\n\nconst Notifications = () => {\n const { translate } = useLocale();\n const [, setTimestamp] = useState();\n const {\n value: { session: { authorization } = {} },\n } = useStore();\n\n useEffect(() => {\n Event.subscribe(EVENT_NAME, handleAdd);\n return () => Event.unsubscribe(EVENT_NAME, handleAdd);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n queue = {};\n }, [authorization]);\n\n const handleAdd = (notification) => {\n if (!notification || window.IS_PLAYWRIGHT) return;\n\n const { contrast, success, warning } = notification;\n const id = `${new Date().getTime()}:${Math.random().toFixed(8)}`;\n\n queue[id] = { ...notification, visible: false };\n forceRender();\n\n setTimeout(() => {\n queue[id].visible = true;\n forceRender();\n }, parseMotion());\n\n if (contrast || success || warning) setTimeout(() => handleClose(id), success ? 5000 : 10000);\n\n return;\n };\n\n const handleClose = (id) => {\n if (!queue[id]) return;\n\n setTimestamp(() => {\n queue[id].visible = false;\n\n setTimeout(() => {\n delete queue[id];\n forceRender();\n }, parseMotion());\n\n return new Date().getTime();\n });\n };\n\n const forceRender = () => setTimestamp(new Date().getTime());\n\n const parseMotion = () => {\n const { motionExpand = '0.3s' } = Theme.get();\n\n return parseFloat(motionExpand.replace('s')) * 1000;\n };\n\n const keys = Object.keys(queue);\n\n return (\n <View className={style.notifications}>\n {keys.sort().map((key, index) => {\n const { defaultMessage, id, visible = false, ...props } = queue[key];\n\n return (\n <Notification\n {...props}\n key={key}\n wide\n onClose={() => handleClose(key)}\n className={styles(style.item, visible && style.visible)}\n style={{ zIndex: keys.length - index }}\n >\n {translate({ id, defaultMessage })}\n </Notification>\n );\n })}\n </View>\n );\n};\n\nNotifications.displayName = 'core:components:Notifications';\n\nNotifications.propTypes = {};\n\nexport { Notifications };\n"],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
 
3
3
  exports[`component:<Booking> inherit:className 1`] = `
4
4
  <DocumentFragment>
5
- <ui-view
5
+ <ui-header
6
6
  class="view wide"
7
7
  >
8
8
  <ui-view
@@ -167,7 +167,7 @@ exports[`component:<Booking> inherit:className 1`] = `
167
167
  </ui-tooltip>
168
168
  </ui-view>
169
169
  </ui-view>
170
- </ui-view>
170
+ </ui-header>
171
171
  <ui-view
172
172
  class="view mirai"
173
173
  >
@@ -281,7 +281,7 @@ exports[`component:<Booking> inherit:className 1`] = `
281
281
 
282
282
  exports[`component:<Booking> prop:skeleton 1`] = `
283
283
  <DocumentFragment>
284
- <ui-view
284
+ <ui-header
285
285
  class="view wide"
286
286
  >
287
287
  <ui-view
@@ -446,7 +446,7 @@ exports[`component:<Booking> prop:skeleton 1`] = `
446
446
  </ui-tooltip>
447
447
  </ui-view>
448
448
  </ui-view>
449
- </ui-view>
449
+ </ui-header>
450
450
  <ui-view
451
451
  class="view"
452
452
  >
@@ -560,7 +560,7 @@ exports[`component:<Booking> prop:skeleton 1`] = `
560
560
 
561
561
  exports[`component:<Booking> renders 1`] = `
562
562
  <DocumentFragment>
563
- <ui-view
563
+ <ui-header
564
564
  class="view wide"
565
565
  >
566
566
  <ui-view
@@ -725,7 +725,7 @@ exports[`component:<Booking> renders 1`] = `
725
725
  </ui-tooltip>
726
726
  </ui-view>
727
727
  </ui-view>
728
- </ui-view>
728
+ </ui-header>
729
729
  <ui-view
730
730
  class="view"
731
731
  >
@@ -839,7 +839,7 @@ exports[`component:<Booking> renders 1`] = `
839
839
 
840
840
  exports[`component:<Booking> testID 1`] = `
841
841
  <DocumentFragment>
842
- <ui-view
842
+ <ui-header
843
843
  class="view wide"
844
844
  >
845
845
  <ui-view
@@ -1004,7 +1004,7 @@ exports[`component:<Booking> testID 1`] = `
1004
1004
  </ui-tooltip>
1005
1005
  </ui-view>
1006
1006
  </ui-view>
1007
- </ui-view>
1007
+ </ui-header>
1008
1008
  <ui-view
1009
1009
  class="view"
1010
1010
  data-testid="mirai"
@@ -1119,7 +1119,7 @@ exports[`component:<Booking> testID 1`] = `
1119
1119
 
1120
1120
  exports[`component:<Booking> with a store 1`] = `
1121
1121
  <DocumentFragment>
1122
- <ui-view
1122
+ <ui-header
1123
1123
  class="view wide"
1124
1124
  >
1125
1125
  <ui-view
@@ -1284,7 +1284,7 @@ exports[`component:<Booking> with a store 1`] = `
1284
1284
  </ui-tooltip>
1285
1285
  </ui-view>
1286
1286
  </ui-view>
1287
- </ui-view>
1287
+ </ui-header>
1288
1288
  <ui-view
1289
1289
  class="view"
1290
1290
  >
@@ -117,6 +117,7 @@ const Checkout = _ref => {
117
117
  const hasRequiredFields = Object.keys(requiredFields || {}).length > 0;
118
118
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Header.Header, null), /*#__PURE__*/_react.default.createElement(_ui.View, {
119
119
  role: "checkout",
120
+ tag: "checkout",
120
121
  testId: others.testId,
121
122
  className: (0, _ui.styles)(style.container, others.className)
122
123
  }, /*#__PURE__*/_react.default.createElement(_ui.Progress, {
@@ -1 +1 @@
1
- {"version":3,"file":"Checkout.js","names":["_dataSources","require","_locale","_services","_ui","_propTypes","_interopRequireDefault","_react","_interopRequireWildcard","_Checkout","_Checkout2","style","_Checkout3","_partials","_Core","_shared__","_Booking","_Header","_helpers","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","obj","_extends","assign","bind","target","arguments","length","source","key","apply","hasTracking","Checkout","_ref","skeleton","others","isDesktop","useDevice","translate","useLocale","track","trackRender","useMetrics","value","currency","hotel","id","language","locale","session","urlParams","useStore","dataSource","setDataSource","useState","error","setError","requiredFields","setRequiredFields","modalAgency","setModalAgency","responseError","setResponseError","useEffect","ServiceFeatures","FEATURE_CHECKOUT_TRACKING","concat","TRACKING","response","ServiceBooking","checkout","applyClubDiscount","undefined","catch","service","method","trace","tracking","chainId","idchain","window","addEventListener","innerHeight","scrollY","documentElement","scrollHeight","document","handleModalAgency","handleErrorConfirmation","scrollTo","top","behavior","agency","payment","hasRequiredFields","keys","createElement","Fragment","Header","View","role","testId","className","styles","container","Progress","indeterminate","visible","progress","row","content","wide","main","NotificationRequiredFields","form","values","BookingSummary","box","BookingDetails","expanded","name","Notification","small","info","L10N","NOTIFICATION_NO_CARD","NOTIFICATION_AGENCY","link","Action","underline","onPress","action","ACTION_MORE_INFO","Form","showErrors","onError","BookingTerms","Confirmation","onValid","large","NOTIFICATION_ERROR","code","ERROR","UNKNOWN","ModalAgency","onClose","Footer","exports","displayName","propTypes","PropTypes","bool"],"sources":["../../../src/components/Checkout/Checkout.jsx"],"sourcesContent":["import { useMetrics, useStore } from '@mirai/data-sources';\nimport { useLocale } from '@mirai/locale';\nimport { ServiceBooking, ServiceFeatures } from '@mirai/services';\nimport { Action, Notification, Progress, styles, useDevice, View } from '@mirai/ui';\nimport PropTypes from 'prop-types';\nimport React, { useEffect, useState } from 'react';\n\nimport { FEATURE_CHECKOUT_TRACKING, TRACKING } from './Checkout.constants';\nimport { L10N } from './Checkout.l10n';\nimport * as style from './Checkout.module.css';\nimport Skeleton from './Checkout.skeleton';\nimport { Confirmation, Form } from './partials';\nimport { ERROR } from '../../Core.constants';\nimport { BookingDetails, BookingSummary, BookingTerms, Footer, NotificationRequiredFields } from '../__shared__';\nimport { ModalAgency } from '../Booking/partials/Booking.ModalAgency';\nimport { Header } from '../Header';\nimport { trace } from '../helpers';\n\nlet hasTracking = false;\n\nconst Checkout = ({ skeleton, ...others }) => {\n const { isDesktop } = useDevice();\n const { translate } = useLocale();\n const { track, trackRender } = useMetrics();\n const {\n value: { currency, hotel, id, language, locale, session, urlParams = {} },\n } = useStore();\n\n const [dataSource, setDataSource] = useState();\n const [error, setError] = useState();\n const [requiredFields, setRequiredFields] = useState();\n const [modalAgency, setModalAgency] = useState(false);\n const [responseError, setResponseError] = useState();\n\n useEffect(() => {\n if (skeleton) return;\n\n hasTracking = ServiceFeatures.get(FEATURE_CHECKOUT_TRACKING, id);\n hasTracking && trackRender(`${TRACKING}:RENDER`, { locale });\n\n (async () => {\n const response = await ServiceBooking.checkout({\n currency,\n hotel,\n language,\n locale,\n session: urlParams.applyClubDiscount === 'true' ? session : undefined,\n ...urlParams,\n }).catch((error) => {\n setResponseError(error);\n hasTracking && track(`${TRACKING}:ERROR:SERVICE`, { service: 'Booking', method: 'checkout', error });\n });\n setDataSource(response);\n response && trace({ ...response.tracking, chainId: urlParams.idchain });\n })();\n\n window.addEventListener('scroll', () => {\n if (!hasTracking) return;\n const { innerHeight = 0, scrollY } = window;\n const { documentElement: { scrollHeight = 0 } = {} } = document;\n\n if (scrollY >= scrollHeight - innerHeight) track(`${TRACKING}:SCROLL:BOTTOM`);\n else if (scrollY === 0) track(`${TRACKING}:SCROLL:TOP`);\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [locale, session]);\n\n const handleModalAgency = () => {\n setModalAgency(true);\n };\n\n const handleErrorConfirmation = () => {\n window.scrollTo({ top: 0, behavior: 'smooth' });\n setRequiredFields(error);\n };\n\n const { agency = {}, payment } = dataSource || {};\n const response = dataSource !== undefined;\n const hasRequiredFields = Object.keys(requiredFields || {}).length > 0;\n\n return (\n <>\n <Header />\n\n <View role=\"checkout\" testId={others.testId} className={styles(style.container, others.className)}>\n <Progress indeterminate visible={!response && !responseError} className={style.progress} />\n {response ? (\n <View row={isDesktop} className={style.content}>\n <View wide className={style.main}>\n {hasRequiredFields && <NotificationRequiredFields form=\"checkout\" values={requiredFields} />}\n\n {!isDesktop && (\n <BookingSummary box dataSource={dataSource}>\n <BookingDetails dataSource={dataSource} expanded />\n </BookingSummary>\n )}\n\n {(agency.name || !payment) && (\n <Notification small info wide className={styles(style.agency, others.className)}>\n {!payment && `${translate(L10N.NOTIFICATION_NO_CARD)} `}\n {agency.name &&\n translate(L10N.NOTIFICATION_AGENCY, {\n agency: agency.name,\n link: (\n <>\n <Action underline small onPress={handleModalAgency} className={styles(style.action)}>\n {translate(L10N.ACTION_MORE_INFO)}\n </Action>\n </>\n ),\n })}\n </Notification>\n )}\n\n <Form dataSource={dataSource} showErrors={hasRequiredFields} onError={setError} />\n\n {isDesktop && <BookingDetails dataSource={dataSource} className={style.box} />}\n\n <BookingTerms dataSource={dataSource} small tracking={TRACKING} />\n </View>\n\n <Confirmation\n dataSource={dataSource}\n error={Object.keys(error || {}).length > 0}\n onError={handleErrorConfirmation}\n onValid={() => setRequiredFields()}\n />\n </View>\n ) : responseError ? (\n <Notification error large>\n {translate(L10N.NOTIFICATION_ERROR[responseError?.code || ERROR.UNKNOWN])}\n </Notification>\n ) : (\n <Skeleton />\n )}\n </View>\n {agency.name && <ModalAgency {...agency} visible={modalAgency} onClose={() => setModalAgency(false)} />}\n\n <Footer />\n </>\n );\n};\n\nCheckout.displayName = 'Mirai:Core:Checkout';\n\nCheckout.propTypes = {\n skeleton: PropTypes.bool,\n};\n\nexport { Checkout };\n"],"mappings":"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"}
1
+ {"version":3,"file":"Checkout.js","names":["_dataSources","require","_locale","_services","_ui","_propTypes","_interopRequireDefault","_react","_interopRequireWildcard","_Checkout","_Checkout2","style","_Checkout3","_partials","_Core","_shared__","_Booking","_Header","_helpers","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","obj","_extends","assign","bind","target","arguments","length","source","key","apply","hasTracking","Checkout","_ref","skeleton","others","isDesktop","useDevice","translate","useLocale","track","trackRender","useMetrics","value","currency","hotel","id","language","locale","session","urlParams","useStore","dataSource","setDataSource","useState","error","setError","requiredFields","setRequiredFields","modalAgency","setModalAgency","responseError","setResponseError","useEffect","ServiceFeatures","FEATURE_CHECKOUT_TRACKING","concat","TRACKING","response","ServiceBooking","checkout","applyClubDiscount","undefined","catch","service","method","trace","tracking","chainId","idchain","window","addEventListener","innerHeight","scrollY","documentElement","scrollHeight","document","handleModalAgency","handleErrorConfirmation","scrollTo","top","behavior","agency","payment","hasRequiredFields","keys","createElement","Fragment","Header","View","role","tag","testId","className","styles","container","Progress","indeterminate","visible","progress","row","content","wide","main","NotificationRequiredFields","form","values","BookingSummary","box","BookingDetails","expanded","name","Notification","small","info","L10N","NOTIFICATION_NO_CARD","NOTIFICATION_AGENCY","link","Action","underline","onPress","action","ACTION_MORE_INFO","Form","showErrors","onError","BookingTerms","Confirmation","onValid","large","NOTIFICATION_ERROR","code","ERROR","UNKNOWN","ModalAgency","onClose","Footer","exports","displayName","propTypes","PropTypes","bool"],"sources":["../../../src/components/Checkout/Checkout.jsx"],"sourcesContent":["import { useMetrics, useStore } from '@mirai/data-sources';\nimport { useLocale } from '@mirai/locale';\nimport { ServiceBooking, ServiceFeatures } from '@mirai/services';\nimport { Action, Notification, Progress, styles, useDevice, View } from '@mirai/ui';\nimport PropTypes from 'prop-types';\nimport React, { useEffect, useState } from 'react';\n\nimport { FEATURE_CHECKOUT_TRACKING, TRACKING } from './Checkout.constants';\nimport { L10N } from './Checkout.l10n';\nimport * as style from './Checkout.module.css';\nimport Skeleton from './Checkout.skeleton';\nimport { Confirmation, Form } from './partials';\nimport { ERROR } from '../../Core.constants';\nimport { BookingDetails, BookingSummary, BookingTerms, Footer, NotificationRequiredFields } from '../__shared__';\nimport { ModalAgency } from '../Booking/partials/Booking.ModalAgency';\nimport { Header } from '../Header';\nimport { trace } from '../helpers';\n\nlet hasTracking = false;\n\nconst Checkout = ({ skeleton, ...others }) => {\n const { isDesktop } = useDevice();\n const { translate } = useLocale();\n const { track, trackRender } = useMetrics();\n const {\n value: { currency, hotel, id, language, locale, session, urlParams = {} },\n } = useStore();\n\n const [dataSource, setDataSource] = useState();\n const [error, setError] = useState();\n const [requiredFields, setRequiredFields] = useState();\n const [modalAgency, setModalAgency] = useState(false);\n const [responseError, setResponseError] = useState();\n\n useEffect(() => {\n if (skeleton) return;\n\n hasTracking = ServiceFeatures.get(FEATURE_CHECKOUT_TRACKING, id);\n hasTracking && trackRender(`${TRACKING}:RENDER`, { locale });\n\n (async () => {\n const response = await ServiceBooking.checkout({\n currency,\n hotel,\n language,\n locale,\n session: urlParams.applyClubDiscount === 'true' ? session : undefined,\n ...urlParams,\n }).catch((error) => {\n setResponseError(error);\n hasTracking && track(`${TRACKING}:ERROR:SERVICE`, { service: 'Booking', method: 'checkout', error });\n });\n setDataSource(response);\n response && trace({ ...response.tracking, chainId: urlParams.idchain });\n })();\n\n window.addEventListener('scroll', () => {\n if (!hasTracking) return;\n const { innerHeight = 0, scrollY } = window;\n const { documentElement: { scrollHeight = 0 } = {} } = document;\n\n if (scrollY >= scrollHeight - innerHeight) track(`${TRACKING}:SCROLL:BOTTOM`);\n else if (scrollY === 0) track(`${TRACKING}:SCROLL:TOP`);\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [locale, session]);\n\n const handleModalAgency = () => {\n setModalAgency(true);\n };\n\n const handleErrorConfirmation = () => {\n window.scrollTo({ top: 0, behavior: 'smooth' });\n setRequiredFields(error);\n };\n\n const { agency = {}, payment } = dataSource || {};\n const response = dataSource !== undefined;\n const hasRequiredFields = Object.keys(requiredFields || {}).length > 0;\n\n return (\n <>\n <Header />\n\n <View role=\"checkout\" tag=\"checkout\" testId={others.testId} className={styles(style.container, others.className)}>\n <Progress indeterminate visible={!response && !responseError} className={style.progress} />\n {response ? (\n <View row={isDesktop} className={style.content}>\n <View wide className={style.main}>\n {hasRequiredFields && <NotificationRequiredFields form=\"checkout\" values={requiredFields} />}\n\n {!isDesktop && (\n <BookingSummary box dataSource={dataSource}>\n <BookingDetails dataSource={dataSource} expanded />\n </BookingSummary>\n )}\n\n {(agency.name || !payment) && (\n <Notification small info wide className={styles(style.agency, others.className)}>\n {!payment && `${translate(L10N.NOTIFICATION_NO_CARD)} `}\n {agency.name &&\n translate(L10N.NOTIFICATION_AGENCY, {\n agency: agency.name,\n link: (\n <>\n <Action underline small onPress={handleModalAgency} className={styles(style.action)}>\n {translate(L10N.ACTION_MORE_INFO)}\n </Action>\n </>\n ),\n })}\n </Notification>\n )}\n\n <Form dataSource={dataSource} showErrors={hasRequiredFields} onError={setError} />\n\n {isDesktop && <BookingDetails dataSource={dataSource} className={style.box} />}\n\n <BookingTerms dataSource={dataSource} small tracking={TRACKING} />\n </View>\n\n <Confirmation\n dataSource={dataSource}\n error={Object.keys(error || {}).length > 0}\n onError={handleErrorConfirmation}\n onValid={() => setRequiredFields()}\n />\n </View>\n ) : responseError ? (\n <Notification error large>\n {translate(L10N.NOTIFICATION_ERROR[responseError?.code || ERROR.UNKNOWN])}\n </Notification>\n ) : (\n <Skeleton />\n )}\n </View>\n {agency.name && <ModalAgency {...agency} visible={modalAgency} onClose={() => setModalAgency(false)} />}\n\n <Footer />\n </>\n );\n};\n\nCheckout.displayName = 'Mirai:Core:Checkout';\n\nCheckout.propTypes = {\n skeleton: PropTypes.bool,\n};\n\nexport { Checkout };\n"],"mappings":"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"}