@lifi/widget 3.8.1 → 3.9.0

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 (108) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/dist/esm/components/Avatar/Avatar.style.js +3 -3
  3. package/dist/esm/components/Avatar/Avatar.style.js.map +1 -1
  4. package/dist/esm/components/Header/WalletHeader.js +9 -3
  5. package/dist/esm/components/Header/WalletHeader.js.map +1 -1
  6. package/dist/esm/components/ReverseTokensButton/ReverseTokensButton.js +16 -1
  7. package/dist/esm/components/ReverseTokensButton/ReverseTokensButton.js.map +1 -1
  8. package/dist/esm/components/TokenList/TokenList.js +6 -4
  9. package/dist/esm/components/TokenList/TokenList.js.map +1 -1
  10. package/dist/esm/components/TokenList/TokenListItem.js +1 -1
  11. package/dist/esm/components/TokenList/TokenListItem.js.map +1 -1
  12. package/dist/esm/components/TokenList/types.d.ts +2 -2
  13. package/dist/esm/components/TokenList/useTokenSelect.d.ts +4 -0
  14. package/dist/esm/components/TokenList/useTokenSelect.js +19 -10
  15. package/dist/esm/components/TokenList/useTokenSelect.js.map +1 -1
  16. package/dist/esm/config/version.d.ts +1 -1
  17. package/dist/esm/config/version.js +1 -1
  18. package/dist/esm/hooks/useAvailableChains.d.ts +2 -1
  19. package/dist/esm/hooks/useAvailableChains.js.map +1 -1
  20. package/dist/esm/hooks/useChain.d.ts +1 -0
  21. package/dist/esm/hooks/useChain.js +1 -0
  22. package/dist/esm/hooks/useChain.js.map +1 -1
  23. package/dist/esm/hooks/useChains.d.ts +1 -1
  24. package/dist/esm/hooks/useGasSufficiency.js +5 -5
  25. package/dist/esm/hooks/useGasSufficiency.js.map +1 -1
  26. package/dist/esm/hooks/useIsContractAddress.d.ts +2 -0
  27. package/dist/esm/hooks/useIsContractAddress.js +16 -0
  28. package/dist/esm/hooks/useIsContractAddress.js.map +1 -0
  29. package/dist/esm/hooks/useToAddressAutoPopulate.d.ts +12 -0
  30. package/dist/esm/hooks/useToAddressAutoPopulate.js +68 -0
  31. package/dist/esm/hooks/useToAddressAutoPopulate.js.map +1 -0
  32. package/dist/esm/hooks/useToAddressRequirements.d.ts +1 -1
  33. package/dist/esm/hooks/useToAddressRequirements.js +9 -1
  34. package/dist/esm/hooks/useToAddressRequirements.js.map +1 -1
  35. package/dist/esm/hooks/useToAddressReset.js +15 -8
  36. package/dist/esm/hooks/useToAddressReset.js.map +1 -1
  37. package/dist/esm/i18n/bn.json +8 -2
  38. package/dist/esm/i18n/de.json +8 -2
  39. package/dist/esm/i18n/es.json +8 -2
  40. package/dist/esm/i18n/fr.json +8 -2
  41. package/dist/esm/i18n/hi.json +8 -2
  42. package/dist/esm/i18n/id.json +8 -2
  43. package/dist/esm/i18n/it.json +8 -2
  44. package/dist/esm/i18n/ja.json +8 -2
  45. package/dist/esm/i18n/ko.json +8 -2
  46. package/dist/esm/i18n/pt.json +8 -2
  47. package/dist/esm/i18n/th.json +8 -2
  48. package/dist/esm/i18n/tr.json +8 -2
  49. package/dist/esm/i18n/uk.json +8 -2
  50. package/dist/esm/i18n/vi.json +8 -2
  51. package/dist/esm/i18n/zh.json +8 -2
  52. package/dist/esm/pages/SendToWallet/BookmarksPage.js +1 -0
  53. package/dist/esm/pages/SendToWallet/BookmarksPage.js.map +1 -1
  54. package/dist/esm/pages/SendToWallet/ConfirmAddressSheet.js +1 -0
  55. package/dist/esm/pages/SendToWallet/ConfirmAddressSheet.js.map +1 -1
  56. package/dist/esm/pages/SendToWallet/ConnectedWalletsPage.js +1 -0
  57. package/dist/esm/pages/SendToWallet/ConnectedWalletsPage.js.map +1 -1
  58. package/dist/esm/pages/SendToWallet/RecentWalletsPage.js +1 -0
  59. package/dist/esm/pages/SendToWallet/RecentWalletsPage.js.map +1 -1
  60. package/dist/esm/pages/SendToWallet/SendToConfiguredWalletPage.js +4 -1
  61. package/dist/esm/pages/SendToWallet/SendToConfiguredWalletPage.js.map +1 -1
  62. package/dist/esm/stores/form/createFormStore.js +1 -0
  63. package/dist/esm/stores/form/createFormStore.js.map +1 -1
  64. package/dist/esm/stores/form/types.d.ts +1 -0
  65. package/dist/esm/stores/form/types.js.map +1 -1
  66. package/dist/esm/stores/form/useFieldActions.d.ts +1 -0
  67. package/dist/esm/stores/form/useFieldActions.js +1 -0
  68. package/dist/esm/stores/form/useFieldActions.js.map +1 -1
  69. package/package.json +11 -11
  70. package/src/components/Avatar/Avatar.style.tsx +3 -3
  71. package/src/components/Header/WalletHeader.tsx +14 -5
  72. package/src/components/ReverseTokensButton/ReverseTokensButton.tsx +25 -6
  73. package/src/components/TokenList/TokenList.tsx +7 -4
  74. package/src/components/TokenList/TokenListItem.tsx +1 -1
  75. package/src/components/TokenList/types.ts +2 -2
  76. package/src/components/TokenList/useTokenSelect.ts +39 -16
  77. package/src/config/version.ts +1 -1
  78. package/src/hooks/useAvailableChains.ts +6 -1
  79. package/src/hooks/useChain.ts +1 -0
  80. package/src/hooks/useGasSufficiency.ts +11 -8
  81. package/src/hooks/useIsContractAddress.ts +21 -0
  82. package/src/hooks/useToAddressAutoPopulate.ts +95 -0
  83. package/src/hooks/useToAddressRequirements.ts +13 -2
  84. package/src/hooks/useToAddressReset.ts +15 -8
  85. package/src/i18n/bn.json +8 -2
  86. package/src/i18n/de.json +8 -2
  87. package/src/i18n/es.json +8 -2
  88. package/src/i18n/fr.json +8 -2
  89. package/src/i18n/hi.json +8 -2
  90. package/src/i18n/id.json +8 -2
  91. package/src/i18n/it.json +8 -2
  92. package/src/i18n/ja.json +8 -2
  93. package/src/i18n/ko.json +8 -2
  94. package/src/i18n/pt.json +8 -2
  95. package/src/i18n/th.json +8 -2
  96. package/src/i18n/tr.json +8 -2
  97. package/src/i18n/uk.json +8 -2
  98. package/src/i18n/vi.json +8 -2
  99. package/src/i18n/zh.json +8 -2
  100. package/src/pages/SendToWallet/BookmarksPage.tsx +1 -0
  101. package/src/pages/SendToWallet/ConfirmAddressSheet.tsx +1 -0
  102. package/src/pages/SendToWallet/ConnectedWalletsPage.tsx +1 -0
  103. package/src/pages/SendToWallet/RecentWalletsPage.tsx +1 -0
  104. package/src/pages/SendToWallet/SendToConfiguredWalletPage.tsx +4 -1
  105. package/src/stores/form/createFormStore.ts +2 -0
  106. package/src/stores/form/types.ts +1 -0
  107. package/src/stores/form/useFieldActions.ts +1 -0
  108. package/src/stores/header/useHeaderStore.tsx +1 -1
package/src/i18n/uk.json CHANGED
@@ -82,6 +82,9 @@
82
82
  "autoRefuel": "У вас замало {{chainName}} газу. Продовжуючи, ви отримаєте достатньо газу, щоб завершити обмін.",
83
83
  "emptyActiveTransactions": "Тут показуються незавершені транзакції. Після завершення ви можете знайти їх в історії транзакцій.",
84
84
  "emptyTokenList": "Нам не вдалося знайти токени на {{chainName}}, або у вас їх немає. Будь ласка, спробуйте пошук за адресою контракту або виберіть інший чейн.",
85
+ "emptyChainList": "Ми не змогли знайти жодного чейна, що відповідає вашому запиту",
86
+ "emptyBridgesList": "Ми не змогли знайти жодного моста, що відповідає вашому запиту",
87
+ "emptyExchangesList": "Ми не змогли знайти жодного обмінника, що відповідає вашому запиту",
85
88
  "emptyTransactionHistory": "Історія транзакцій зберігається лише локально та буде видалена, якщо ви очистите дані браузера.",
86
89
  "fundsToExchange": "Кошти, відправлені на біржі, можуть бути втрачені",
87
90
  "toAddressIsRequired": "Будь ласка, надайте адресу цільового гаманця, на яку будуть перераховані кошти.",
@@ -265,7 +268,7 @@
265
268
  "stepSwapAndBridge": "Своп та бридж",
266
269
  "stepSwapAndBuy": "Своп та покупка",
267
270
  "stepSwapAndDeposit": "Своп та депозит",
268
- "supportId": "Ідентифікатор підтримки",
271
+ "transferId": "Ідентифікатор переказу",
269
272
  "swapStepDetails": "Своп на {{chain}} через {{tool}}",
270
273
  "tags": {
271
274
  "cheapest": "Найкращий курс",
@@ -275,7 +278,10 @@
275
278
  "tokenOnChain": "{{tokenSymbol}} на {{chainName}}",
276
279
  "tokenOnChainAmount": "{{amount, number(maximumFractionDigits: 9)}} {{tokenSymbol}} на {{chainName}}",
277
280
  "tokenSearch": "Шукати за ім'ям або адресою",
278
- "valueLoss": "Втрата вартості"
281
+ "valueLoss": "Втрата вартості",
282
+ "searchChains": "Пошук за назвою чейна",
283
+ "searchBridges": "Пошук за назвою моста",
284
+ "searchExchanges": "Пошук за назвою обмінника"
279
285
  },
280
286
  "settings": {
281
287
  "theme": "Тема",
package/src/i18n/vi.json CHANGED
@@ -82,6 +82,9 @@
82
82
  "autoRefuel": "Gas trên {{chainName}} chain của bạn đang thấp. Để tiếp tục, bạn nên có thêm gas để hoàn thành việc swap.",
83
83
  "emptyActiveTransactions": "Các lệnh swap đang xử lý sẽ được hiện ở đây. Khi nào lệnh hoàn tất, bạn có thể kiểm tra lại tại mục lịch sử swap.",
84
84
  "emptyTokenList": "Chúng tôi không thể tìm được token ở {{chainName}} hoặc số dư của bạn không có. Vui lòng thử tìm kiếm lại hoặc chọn một chain khác.",
85
+ "emptyChainList": "",
86
+ "emptyBridgesList": "",
87
+ "emptyExchangesList": "",
85
88
  "emptyTransactionHistory": "Lịch sử Swap chỉ được lưu trữ cục bộ và sẽ bị xóa nếu bạn xóa dữ liệu trình duyệt của mình.",
86
89
  "fundsToExchange": "Tiền gửi đến sàn giao dịch có thể bị mất",
87
90
  "toAddressIsRequired": "Vui lòng cung cấp địa chỉ ví đích mà tiền sẽ được chuyển đến.",
@@ -265,7 +268,7 @@
265
268
  "stepSwapAndBridge": "Swap và Bridge",
266
269
  "stepSwapAndBuy": "Hoán đổi và mua",
267
270
  "stepSwapAndDeposit": "",
268
- "supportId": "Mã ID yêu cầu hỗ trợ",
271
+ "transferId": "",
269
272
  "swapStepDetails": "Swap tại {{chain}} thông qua {{tool}}",
270
273
  "tags": {
271
274
  "cheapest": "Lợi nhuận tốt nhất",
@@ -275,7 +278,10 @@
275
278
  "tokenOnChain": "{{tokenSymbol}} tại {{chainName}}",
276
279
  "tokenOnChainAmount": "{{amount, number(maximumFractionDigits: 9)}} {{tokenSymbol}} tại {{chainName}}",
277
280
  "tokenSearch": "Tìm kiếm bằng tên token hoặc địa chỉ",
278
- "valueLoss": "Bạn sẽ mất"
281
+ "valueLoss": "Bạn sẽ mất",
282
+ "searchChains": "",
283
+ "searchBridges": "",
284
+ "searchExchanges": ""
279
285
  },
280
286
  "settings": {
281
287
  "theme": "Giao diện",
package/src/i18n/zh.json CHANGED
@@ -82,6 +82,9 @@
82
82
  "autoRefuel": "您在 {{chainName}} 链上的燃气费很低。如果启用该选项,您将获得足够的燃气费完成此次兑换。",
83
83
  "emptyActiveTransactions": "正在进行的兑换将在这里显示。一旦完成,你可在兑换记录中找到它们。",
84
84
  "emptyTokenList": "我们无法在 {{chainName}} 链上找到这些代币,或者你的钱包内没有这些代币。请再次搜索或者选择其他链再试一次。",
85
+ "emptyChainList": "",
86
+ "emptyBridgesList": "",
87
+ "emptyExchangesList": "",
85
88
  "emptyTransactionHistory": "交易记录只存储在本地,如果您清除浏览器数据,交易记录将被删除。",
86
89
  "fundsToExchange": "发送到交易所的资金可能会丢失",
87
90
  "toAddressIsRequired": "请提供收款的钱包地址。",
@@ -265,7 +268,7 @@
265
268
  "stepSwapAndBridge": "兑换和跨链",
266
269
  "stepSwapAndBuy": "兑换并购买",
267
270
  "stepSwapAndDeposit": "",
268
- "supportId": "支持ID",
271
+ "transferId": "",
269
272
  "swapStepDetails": "通过{{tool}}在{{chain}}链上兑换代币",
270
273
  "tags": {
271
274
  "cheapest": "最佳报价",
@@ -275,7 +278,10 @@
275
278
  "tokenOnChain": "{{chainName}}链上的{{tokenSymbol}}",
276
279
  "tokenOnChainAmount": "{{chainName}} 链上{{amount, number(maximumFractionDigits: 9)}} 个{{tokenSymbol}}",
277
280
  "tokenSearch": "按代币名称或者地址搜索",
278
- "valueLoss": "资金损失"
281
+ "valueLoss": "资金损失",
282
+ "searchChains": "",
283
+ "searchBridges": "",
284
+ "searchExchanges": ""
279
285
  },
280
286
  "settings": {
281
287
  "theme": "主题",
@@ -58,6 +58,7 @@ export const BookmarksPage = () => {
58
58
  const handleBookmarkSelected = (bookmark: Bookmark) => {
59
59
  setFieldValue('toAddress', bookmark.address, {
60
60
  isTouched: true,
61
+ isDirty: true,
61
62
  })
62
63
  setSelectedBookmark(bookmark)
63
64
  setSendToWallet(true)
@@ -40,6 +40,7 @@ export const ConfirmAddressSheet = forwardRef<
40
40
  if (validatedBookmark) {
41
41
  setFieldValue('toAddress', validatedBookmark.address, {
42
42
  isTouched: true,
43
+ isDirty: true,
43
44
  })
44
45
  onConfirm?.(validatedBookmark)
45
46
  setSendToWallet(true)
@@ -47,6 +47,7 @@ export const ConnectedWalletsPage = () => {
47
47
  const handleWalletSelected = (account: Account) => {
48
48
  setFieldValue('toAddress', account.address!, {
49
49
  isTouched: true,
50
+ isDirty: true,
50
51
  })
51
52
  setSelectedBookmark({
52
53
  name: account.connector?.name,
@@ -60,6 +60,7 @@ export const RecentWalletsPage = () => {
60
60
  addRecentWallet(recentWallet)
61
61
  setFieldValue('toAddress', recentWallet.address, {
62
62
  isTouched: true,
63
+ isDirty: true,
63
64
  })
64
65
  setSelectedBookmark(recentWallet)
65
66
  setSendToWallet(true)
@@ -43,7 +43,10 @@ export const SendToConfiguredWalletPage = () => {
43
43
 
44
44
  const handleCuratedSelected = (toAddress: ToAddress) => {
45
45
  setSelectedBookmark(toAddress)
46
- setFieldValue('toAddress', toAddress.address, { isTouched: true })
46
+ setFieldValue('toAddress', toAddress.address, {
47
+ isTouched: true,
48
+ isDirty: true,
49
+ })
47
50
  navigateBack()
48
51
  }
49
52
 
@@ -102,6 +102,8 @@ export const createFormStore = (defaultValues?: DefaultValues) =>
102
102
  },
103
103
  isTouched: (fieldName: FormFieldNames) =>
104
104
  !!get().userValues[fieldName]?.isTouched,
105
+ isDirty: (fieldName: FormFieldNames) =>
106
+ !!get().userValues[fieldName]?.isDirty,
105
107
  setAsTouched: (fieldName: FormFieldNames) => {
106
108
  const userValues = {
107
109
  ...get().userValues,
@@ -70,6 +70,7 @@ export interface FormActions {
70
70
  setDefaultValues: (formValues: DefaultValues) => void
71
71
  setUserAndDefaultValues: (formValues: Partial<DefaultValues>) => void
72
72
  isTouched: (fieldName: FormFieldNames) => boolean
73
+ isDirty: (fieldName: FormFieldNames) => boolean
73
74
  setAsTouched: (fieldName: FormFieldNames) => void
74
75
  resetField: (fieldName: FormFieldNames, resetOptions?: ResetOptions) => void
75
76
  setFieldValue: (
@@ -18,6 +18,7 @@ export const useFieldActions = () => {
18
18
  (store) => ({
19
19
  getFieldValues: store.getFieldValues,
20
20
  isTouched: store.isTouched,
21
+ isDirty: store.isDirty,
21
22
  resetField: store.resetField,
22
23
  setAsTouched: store.setAsTouched,
23
24
  setDefaultValues: store.setDefaultValues,
@@ -1,7 +1,7 @@
1
1
  import { createContext, useContext, useRef } from 'react'
2
2
  import { shallow } from 'zustand/shallow'
3
3
  import { createWithEqualityFn } from 'zustand/traditional'
4
- import type { PersistStoreProps, PersistStoreProviderProps } from '../types.js'
4
+ import type { PersistStoreProviderProps } from '../types.js'
5
5
  import type { HeaderState, HeaderStore } from './types.js'
6
6
 
7
7
  export const HeaderStoreContext = createContext<HeaderStore | null>(null)