@kiva/kv-shop 2.1.2 → 3.0.1

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 (76) hide show
  1. package/dist/_virtual/_commonjs-dynamic-modules.js +6 -0
  2. package/dist/_virtual/_commonjsHelpers.js +8 -0
  3. package/dist/_virtual/_plugin-vue_export-helper.js +9 -0
  4. package/dist/_virtual/dropin.js +11 -0
  5. package/dist/_virtual/dropin2.js +4 -0
  6. package/dist/basket.js +35 -12
  7. package/dist/basketCredits.js +78 -14
  8. package/dist/basketItems.js +27 -8
  9. package/dist/basketTotals.js +38 -10
  10. package/dist/basketVerification.js +6 -6
  11. package/dist/checkoutStatus.js +52 -8
  12. package/dist/components/KvPaymentSelect.css +1 -0
  13. package/dist/components/KvPaymentSelect.js +23 -0
  14. package/dist/components/KvPaymentSelect2.js +110 -0
  15. package/dist/index.d.ts +321 -20
  16. package/dist/index.js +49 -96
  17. package/dist/managedAccount.js +62 -8
  18. package/dist/oneTimeCheckout.js +156 -12
  19. package/dist/receipt.js +143 -12
  20. package/dist/shopError.js +41 -6
  21. package/dist/shopQueries.js +82 -11
  22. package/dist/subscriptionCheckout.js +88 -7
  23. package/dist/useBraintreeDropIn.js +145 -9
  24. package/dist/util/cookie.js +11 -0
  25. package/dist/util/poll.js +17 -0
  26. package/dist/util/redirect.js +8 -0
  27. package/dist/util/visitorId.js +7 -0
  28. package/dist/validatePreCheckout.js +44 -11
  29. package/dist/vendor/braintree-web-drop-in/dist/browser/dropin.js +12223 -0
  30. package/package.json +28 -26
  31. package/dist/basket.cjs +0 -141
  32. package/dist/basket.d.ts +0 -8
  33. package/dist/basketCredits.cjs +0 -250
  34. package/dist/basketCredits.d.ts +0 -32
  35. package/dist/basketItems.cjs +0 -205
  36. package/dist/basketItems.d.ts +0 -26
  37. package/dist/basketTotals.cjs +0 -228
  38. package/dist/basketTotals.d.ts +0 -37
  39. package/dist/basketVerification.cjs +0 -41
  40. package/dist/basketVerification.d.ts +0 -10
  41. package/dist/checkoutStatus.cjs +0 -111
  42. package/dist/checkoutStatus.d.ts +0 -20
  43. package/dist/chunk-4ODZGLWK.js +0 -64
  44. package/dist/chunk-ASZJVUQ7.js +0 -72
  45. package/dist/chunk-FBF4WMN6.js +0 -49
  46. package/dist/chunk-FC4QW6QA.js +0 -106
  47. package/dist/chunk-FCAOCO7O.js +0 -17
  48. package/dist/chunk-GVVI7X2R.js +0 -196
  49. package/dist/chunk-IIN37LC7.js +0 -45
  50. package/dist/chunk-IOZ5ERDX.js +0 -121
  51. package/dist/chunk-KCUOMCSN.js +0 -58
  52. package/dist/chunk-LZ4UMRCV.js +0 -16
  53. package/dist/chunk-RQNRQ2E5.js +0 -155
  54. package/dist/chunk-SRGYGDAX.js +0 -80
  55. package/dist/chunk-TPJPGUO7.js +0 -12
  56. package/dist/chunk-UJXHTR43.js +0 -86
  57. package/dist/chunk-VZ3VDRRP.js +0 -167
  58. package/dist/chunk-Z7JRY3QE.js +0 -34
  59. package/dist/components/KvPaymentSelect.vue +0 -380
  60. package/dist/index.cjs +0 -1227
  61. package/dist/managedAccount.cjs +0 -231
  62. package/dist/managedAccount.d.ts +0 -59
  63. package/dist/oneTimeCheckout.cjs +0 -636
  64. package/dist/oneTimeCheckout.d.ts +0 -21
  65. package/dist/receipt.cjs +0 -191
  66. package/dist/receipt.d.ts +0 -16
  67. package/dist/shopError.cjs +0 -88
  68. package/dist/shopError.d.ts +0 -14
  69. package/dist/shopQueries.cjs +0 -248
  70. package/dist/shopQueries.d.ts +0 -8
  71. package/dist/subscriptionCheckout.cjs +0 -187
  72. package/dist/subscriptionCheckout.d.ts +0 -13
  73. package/dist/useBraintreeDropIn.cjs +0 -258
  74. package/dist/useBraintreeDropIn.d.ts +0 -25
  75. package/dist/validatePreCheckout.cjs +0 -218
  76. package/dist/validatePreCheckout.d.ts +0 -28
@@ -1,380 +0,0 @@
1
- <template>
2
- <div class="kv-payment-select tw-text-center">
3
- <div
4
- ref="container"
5
- class="data-hj-suppress"
6
- data-testid="braintree-drop-in"
7
- ></div>
8
- <kv-loading-spinner
9
- v-if="updatingPaymentWrapper"
10
- class="tw-mb-2"
11
- />
12
- </div>
13
- </template>
14
-
15
- <script lang="ts">
16
- import {
17
- defineComponent, onMounted, ref, toRefs, watch,
18
- } from 'vue-demi';
19
- import { KvLoadingSpinner } from '@kiva/kv-components';
20
- import type { PropType } from 'vue-demi';
21
- import useBraintreeDropIn, { defaultPaymentTypes } from '../useBraintreeDropIn';
22
- import type { PayPalFlowType, PaymentType } from '../useBraintreeDropIn';
23
-
24
- export default defineComponent({
25
- components: {
26
- KvLoadingSpinner,
27
- },
28
- props: {
29
- amount: {
30
- type: [String, Number],
31
- default: '',
32
- },
33
- /**
34
- * Braintree authorization token.
35
- */
36
- authToken: {
37
- type: String,
38
- required: true,
39
- },
40
- /**
41
- * Braintree Drop In instance name.
42
- */
43
- dropInName: {
44
- type: String,
45
- default: 'default',
46
- },
47
- /**
48
- * Paypal flow options.
49
- * Must be 'checkout' or 'vault'
50
- * */
51
- flow: {
52
- type: String as PropType<PayPalFlowType>,
53
- default: 'checkout',
54
- },
55
- /**
56
- * Google Pay merchant ID
57
- * Required if using the 'googlePay' option (which is on by default)
58
- */
59
- googlePayMerchantId: {
60
- type: String,
61
- default: '',
62
- },
63
- /**
64
- * Payment type options to be displayed.
65
- * Also controls the order to display them in.
66
- * All options in default order:
67
- * ['card', 'paypal', 'paypalCredit', 'venmo', 'applePay', 'googlePay']
68
- * */
69
- paymentTypes: {
70
- type: Array as PropType<PaymentType[]>,
71
- default: () => defaultPaymentTypes,
72
- },
73
- /**
74
- * Preselect Vaulted Payment Method
75
- * Braintree option to preselect payment method
76
- * */
77
- preselectVaultedPaymentMethod: {
78
- type: Boolean,
79
- default: true,
80
- },
81
- },
82
- emits: ['transactions-enabled', 'error'],
83
- setup(props, { emit }) {
84
- const {
85
- amount,
86
- authToken,
87
- flow,
88
- googlePayMerchantId,
89
- paymentTypes,
90
- preselectVaultedPaymentMethod,
91
- } = toRefs(props);
92
- const container = ref<HTMLInputElement | null>(null);
93
- const updatingPaymentWrapper = ref(false);
94
- const {
95
- initDropIn,
96
- paymentMethodRequestable,
97
- requestPaymentMethod,
98
- updateAmount,
99
- } = useBraintreeDropIn(props.dropInName);
100
-
101
- watch(amount, (newValue) => {
102
- updateAmount(newValue);
103
- });
104
-
105
- watch(paymentMethodRequestable, (newValue) => {
106
- emit('transactions-enabled', newValue);
107
- }, { immediate: true });
108
-
109
- onMounted(async () => {
110
- // Checking innerHTML prevents BT error in the case this component gets initialized multiple times
111
- if (container.value?.innerHTML === '') {
112
- updatingPaymentWrapper.value = true;
113
- try {
114
- await initDropIn({
115
- amount: amount.value,
116
- authToken: authToken.value,
117
- container: container.value,
118
- googlePayMerchantId: googlePayMerchantId.value,
119
- paymentTypes: paymentTypes.value,
120
- preselectVaultedPaymentMethod: preselectVaultedPaymentMethod.value,
121
- paypalFlow: flow.value,
122
- });
123
- } catch (e) {
124
- if (e instanceof Error) {
125
- emit('error', e?.message);
126
- } else {
127
- emit('error', 'An error has occured. Please refresh the page and try again.');
128
- }
129
- } finally {
130
- updatingPaymentWrapper.value = false;
131
- }
132
- }
133
- });
134
-
135
- return {
136
- container,
137
- updatingPaymentWrapper,
138
- requestPaymentMethod,
139
- };
140
- },
141
- });
142
- </script>
143
-
144
- <style lang="postcss">
145
- /*
146
- These styles over write the default Braintree Drop In styles.
147
- Use [data-braintree-id=""] selectors whenever possible as
148
- Braintree guarantees that these will not be easily changed.
149
- */
150
-
151
- /* Main DropIn */
152
- .kv-payment-select .braintree-dropin {
153
- font-family: inherit;
154
- }
155
-
156
- /* General Braintree errors, failed to process, etc */
157
- .kv-payment-select [data-braintree-id="sheet-error"] {
158
- @apply tw-bg-white;
159
- }
160
-
161
- /* Various text styles */
162
- .kv-payment-select .braintree-method__label,
163
- .kv-payment-select .braintree-option__label,
164
- .kv-payment-select .braintree-methods--active .braintree-method__label,
165
- .kv-payment-select .braintree-method .braintree-method__label .braintree-method__label--small {
166
- @apply tw-text-primary tw-text-left tw-font-book;
167
- }
168
-
169
- /* Saved payment methods container */
170
- /* List of vaulted cards */
171
- .kv-payment-select [data-braintree-id="methods-container"] .braintree-method--active {
172
- @apply tw-border tw-border-brand tw-bg-secondary;
173
- }
174
- .kv-payment-select [data-braintree-id="methods-container"] .braintree-method__check {
175
- padding: 0.3125rem;
176
- height: 1.95rem;
177
- width: 1.95rem;
178
- margin-right: 0.25rem;
179
- @apply tw-bg-brand;
180
- }
181
-
182
- /* Payment method 'sheet' or main content area */
183
- .kv-payment-select [data-braintree-id="paypal"],
184
- .kv-payment-select [data-braintree-id="applePay"],
185
- .kv-payment-select [data-braintree-id="googlePay"],
186
- .kv-payment-select [data-braintree-id="card"] {
187
- border: 0;
188
- }
189
-
190
- /* Credit Card payment content */
191
- /* Main payment method content - either button or form */
192
- /* Classes for input fields. - Credit Card Only */
193
- /* Payment Method Form wrapper */
194
- .kv-payment-select [data-braintree-id="card"] .braintree-sheet__content.braintree-sheet__content--form {
195
- padding: 0;
196
- }
197
- /* Form error colors */
198
- .kv-payment-select [data-braintree-id="card"] .braintree-sheet__content .braintree-form__field-error {
199
- @apply tw-text-danger tw-text-left tw-font-medium;
200
- }
201
- /* Remove extra left padding from form field/label wrapper */
202
- .kv-payment-select [data-braintree-id="card"] .braintree-sheet__content .braintree-form__field-group {
203
- padding-left: 0;
204
- margin-bottom: 1.25rem;
205
- }
206
- /* Invalid form field */
207
- .kv-payment-select [data-braintree-id="card"] .braintree-sheet__content
208
- .braintree-form__field-group.braintree-form__field-group--has-error .braintree-form__hosted-field {
209
- @apply tw-bg-danger/[0.15] tw-border-danger tw-rounded-sm;
210
- }
211
- /* Form fields */
212
- .kv-payment-select [data-braintree-id="card"] .braintree-sheet__content
213
- .braintree-form__field-group:not(.braintree-form__field-group--has-error)
214
- .braintree-form__field:not(.braintree-form__checkbox) .braintree-form__hosted-field {
215
- @apply tw-text-tertiary tw-bg-secondary tw-rounded-sm tw-border-secondary;
216
- }
217
- /* Help text next to form label. */
218
- .kv-payment-select [data-braintree-id="card"] .braintree-sheet__content span.braintree-form__descriptor {
219
- display: none;
220
- }
221
- /* Exp, CVV, and Postal Code groups */
222
- .kv-payment-select [data-braintree-id="card"]
223
- .braintree-sheet__content [data-braintree-id="expiration-date-field-group"],
224
- .kv-payment-select [data-braintree-id="card"]
225
- .braintree-sheet__content [data-braintree-id="cvv-field-group"],
226
- .kv-payment-select [data-braintree-id="card"]
227
- .braintree-sheet__content [data-braintree-id="postal-code-field-group"] {
228
- width: 49%;
229
- flex-basis: auto;
230
- flex-grow: unset;
231
- }
232
-
233
- /* Credit Card icons in form header */
234
- .kv-payment-select [data-braintree-id="card-view-icons"] {
235
- padding-bottom: 0;
236
- }
237
- .kv-payment-select [data-braintree-id="card-view-icons"] > div {
238
- padding: 0;
239
- border: 1px solid #f3f3f3;
240
- border-radius: 0.25rem;
241
- line-height: 0.6875 rem;
242
- }
243
-
244
- /* responsive paypal button */
245
- /* prevents bug causing button to get slightly cut off in mobile */
246
- .kv-payment-select [data-braintree-id="paypal-button"] {
247
- width: 99%;
248
- }
249
- @screen md {
250
- .kv-payment-select [data-braintree-id="paypal-button"] {
251
- width: 250px;
252
- }
253
- }
254
-
255
- /* Hides credit card icon in number field until credit card type is known */
256
- .kv-payment-select [data-braintree-id="number-field-group"]:not(.braintree-form__field-group--card-type-known) svg {
257
- display: none;
258
- }
259
-
260
- /* Braintree Iframe is type number and inheriting some styles from kiva number input. */
261
- .kv-payment-select iframe[type=number] {
262
- box-shadow: none;
263
- padding: 0;
264
- background-color: transparent;
265
- }
266
-
267
- /* Braintree section headings
268
- 'Choose a way to pay'
269
- 'Paying with Card'
270
- 'Other ways to pay' */
271
- .kv-payment-select [data-braintree-id="choose-a-way-to-pay"],
272
- .kv-payment-select [data-braintree-id="methods-label"],
273
- .kv-payment-select [data-braintree-id="other-ways-to-pay"] {
274
- @apply tw-text-small tw-text-primary tw-text-tertiary tw-w-full;
275
- }
276
-
277
- /* Payment method container */
278
- .kv-payment-select [data-braintree-id="sheet-container"] {
279
- @apply tw-bg-white;
280
- }
281
-
282
- /* Payment method form headers */
283
- .kv-payment-select [data-braintree-id="paypal-sheet-header"],
284
- .kv-payment-select [data-braintree-id="apple-pay-sheet-header"],
285
- .kv-payment-select [data-braintree-id="google-pay-sheet-header"],
286
- .kv-payment-select [data-braintree-id="card-sheet-header"] {
287
- /* bottom padding and bottom margin creates spacing around the BT loading indicator */
288
- @apply tw-bg-transparent tw-border-0 tw-p-0 tw-pb-1 tw-mb-1;
289
- }
290
-
291
- /* Payment Method logo in header */
292
- .kv-payment-select [data-braintree-id="paypal-sheet-header"] .braintree-sheet__logo--header,
293
- .kv-payment-select [data-braintree-id="apple-pay-sheet-header"] .braintree-sheet__logo--header,
294
- .kv-payment-select [data-braintree-id="google-pay-sheet-header"] .braintree-sheet__logo--header,
295
- .kv-payment-select [data-braintree-id="card-sheet-header"] .braintree-sheet__logo--header {
296
- @apply tw-hidden;
297
- }
298
-
299
- /* Moves credit card icons to new line. */
300
- .kv-payment-select [data-braintree-id="paypal-sheet-header"] .braintree-sheet__header-label,
301
- .kv-payment-select [data-braintree-id="apple-pay-sheet-header"] .braintree-sheet__header-label,
302
- .kv-payment-select [data-braintree-id="google-pay-sheet-header"] .braintree-sheet__header-label,
303
- .kv-payment-select [data-braintree-id="card-sheet-header"] .braintree-sheet__header-label {
304
- @apply tw-w-full;
305
- }
306
-
307
- /* Payment method form headers text
308
- 'Pay with card'
309
- 'Paypal'
310
- 'GooglePay'
311
- 'ApplePay' */
312
- .kv-payment-select [data-braintree-id="paypal-sheet-header"] .braintree-sheet__text,
313
- .kv-payment-select [data-braintree-id="apple-pay-sheet-header"] .braintree-sheet__text,
314
- .kv-payment-select [data-braintree-id="google-pay-sheet-header"] .braintree-sheet__text,
315
- .kv-payment-select [data-braintree-id="card-sheet-header"] .braintree-sheet__text,
316
- .kv-payment-select [data-braintree-id="paypal-sheet-header"] .braintree-sheet__label,
317
- .kv-payment-select [data-braintree-id="apple-pay-sheet-header"] .braintree-sheet__label,
318
- .kv-payment-select [data-braintree-id="google-pay-sheet-header"] .braintree-sheet__label,
319
- .kv-payment-select [data-braintree-id="card-sheet-header"] .braintree-sheet__label {
320
- @apply tw-ml-0 tw-text-h4 tw-text-primary tw-text-left;
321
- }
322
-
323
- /* Saved payment methods container
324
- List of vaulted cards */
325
- .kv-payment-select [data-braintree-id="upper-container"]::before {
326
- background-color: transparent;
327
- }
328
-
329
- .kv-payment-select [data-braintree-id="methods-container"] .braintree-method {
330
- @apply tw-border-solid tw-border-tertiary tw-w-full tw-border tw-p-2;
331
- }
332
-
333
- .kv-payment-select [data-braintree-id="methods-container"] .braintree-method:first-child {
334
- @apply tw-rounded-tr tw-rounded-tl tw-rounded-bl-none tw-rounded-br-none;
335
- }
336
-
337
- .kv-payment-select [data-braintree-id="methods-container"] .braintree-method:last-child {
338
- @apply tw-rounded-br tw-rounded-bl;
339
- }
340
-
341
- /* Payment Option buttons on initial UI */
342
- .kv-payment-select [data-braintree-id="payment-options-container"] .braintree-option {
343
- @apply tw-border-solid tw-border-tertiary tw-w-full tw-border tw-border-b-0 tw-p-2;
344
- }
345
-
346
- .kv-payment-select [data-braintree-id="payment-options-container"] .braintree-option:first-child {
347
- @apply tw-rounded-tr tw-rounded-tl tw-rounded-bl-none tw-rounded-br-none;
348
- }
349
-
350
- .kv-payment-select [data-braintree-id="payment-options-container"] .braintree-option:last-child {
351
- @apply tw-rounded-br tw-rounded-bl tw-border-b;
352
- }
353
-
354
- /* 'Choose another way to pay' text */
355
- .kv-payment-select [data-braintree-id="toggle"],
356
- .kv-payment-select [data-braintree-id="toggle"]:hover {
357
- @apply tw-bg-transparent tw-text-h4 tw-text-link;
358
- }
359
-
360
- .kv-payment-select [data-braintree-id="toggle"] span,
361
- .kv-payment-select [data-braintree-id="toggle"] span:focus,
362
- .kv-payment-select [data-braintree-id="toggle"] span:hover {
363
- @apply tw-text-base tw-no-underline tw-border-0;
364
- @apply tw-font-medium;
365
- }
366
-
367
- /* Credit Card Payment Content
368
- Form field labels */
369
- .kv-payment-select [data-braintree-id="card"] .braintree-sheet__content .braintree-form__label {
370
- @apply tw-text-base;
371
- @apply tw-font-medium;
372
- }
373
-
374
- /* Helper text for non-card Braintree payments */
375
- .braintree-sheet__container > .braintree-sheet:not(.braintree-card)::before {
376
- @apply tw-absolute tw-w-full tw-left-0 tw-top-3 tw-font-medium;
377
-
378
- content: 'Click payment method again to continue';
379
- }
380
- </style>