@saasquatch/mint-components 1.13.5-0 → 1.14.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 (100) hide show
  1. package/dist/cjs/ErrorView-b2fcf954.js +35 -0
  2. package/dist/cjs/{ShadowViewAddon-14a02da4.js → ShadowViewAddon-787391f7.js} +6 -5
  3. package/dist/cjs/copy-text-view-c85acaaa.js +96 -0
  4. package/dist/cjs/loader.cjs.js +1 -1
  5. package/dist/cjs/mint-components.cjs.js +1 -1
  6. package/dist/cjs/sqm-banking-info-form_17.cjs.entry.js +4 -3
  7. package/dist/cjs/sqm-big-stat_41.cjs.entry.js +3 -2
  8. package/dist/cjs/{sqm-invoice-table-view-baded4af.js → sqm-invoice-table-view-16ac73d0.js} +2 -31
  9. package/dist/cjs/sqm-pagination_3.cjs.entry.js +6 -5
  10. package/dist/cjs/sqm-qr-code-view-15dfc0b6.js +103 -0
  11. package/dist/cjs/sqm-qr-code.cjs.entry.js +207 -0
  12. package/dist/cjs/sqm-stencilbook.cjs.entry.js +69 -6
  13. package/dist/cjs/{copy-text-view-a5524c20.js → useReferralCodes-82e8797b.js} +0 -93
  14. package/dist/collection/collection-manifest.json +1 -0
  15. package/dist/collection/components/sqm-pagination/sqm-pagination.js +1 -1
  16. package/dist/collection/components/sqm-qr-code/QRCode.stories.js +47 -0
  17. package/dist/collection/components/sqm-qr-code/sqm-qr-code-view.js +98 -0
  18. package/dist/collection/components/sqm-qr-code/sqm-qr-code.js +293 -0
  19. package/dist/collection/components/sqm-qr-code/useQRCode.js +124 -0
  20. package/dist/collection/components/sqm-stencilbook/sqm-stencilbook.js +2 -0
  21. package/dist/collection/components/tax-and-cash/sqm-tax-and-cash/sqm-tax-and-cash.js +2 -17
  22. package/dist/collection/components/tax-and-cash/sqm-tax-and-cash-dashboard/sqm-tax-and-cash-dashboard-view.js +1 -1
  23. package/dist/esm/ErrorView-48e2b969.js +33 -0
  24. package/dist/esm/{ShadowViewAddon-23a6afab.js → ShadowViewAddon-cf230f50.js} +2 -1
  25. package/dist/esm/copy-text-view-782137ba.js +94 -0
  26. package/dist/esm/loader.js +1 -1
  27. package/dist/esm/mint-components.js +1 -1
  28. package/dist/esm/sqm-banking-info-form_17.entry.js +3 -2
  29. package/dist/esm/sqm-big-stat_41.entry.js +3 -2
  30. package/dist/esm/{sqm-invoice-table-view-af69cd33.js → sqm-invoice-table-view-2c726568.js} +2 -30
  31. package/dist/esm/sqm-pagination_3.entry.js +2 -1
  32. package/dist/esm/sqm-qr-code-view-f1d0763b.js +101 -0
  33. package/dist/esm/sqm-qr-code.entry.js +203 -0
  34. package/dist/esm/sqm-stencilbook.entry.js +69 -6
  35. package/dist/esm/{copy-text-view-459a2e35.js → useReferralCodes-8f75921a.js} +1 -93
  36. package/dist/esm-es5/ErrorView-48e2b969.js +1 -0
  37. package/dist/esm-es5/ShadowViewAddon-cf230f50.js +1 -0
  38. package/dist/esm-es5/copy-text-view-782137ba.js +1 -0
  39. package/dist/esm-es5/loader.js +1 -1
  40. package/dist/esm-es5/mint-components.js +1 -1
  41. package/dist/esm-es5/sqm-banking-info-form_17.entry.js +1 -1
  42. package/dist/esm-es5/sqm-big-stat_41.entry.js +1 -1
  43. package/dist/esm-es5/sqm-invoice-table-view-2c726568.js +1 -0
  44. package/dist/esm-es5/sqm-pagination_3.entry.js +1 -1
  45. package/dist/esm-es5/sqm-qr-code-view-f1d0763b.js +1 -0
  46. package/dist/esm-es5/sqm-qr-code.entry.js +1 -0
  47. package/dist/esm-es5/sqm-stencilbook.entry.js +1 -1
  48. package/dist/esm-es5/useReferralCodes-8f75921a.js +1 -0
  49. package/dist/mint-components/mint-components.esm.js +1 -1
  50. package/dist/mint-components/p-0c78815e.system.entry.js +1 -0
  51. package/dist/mint-components/{p-01010af0.entry.js → p-116baa69.entry.js} +1 -1
  52. package/dist/mint-components/p-1f089c3f.system.entry.js +1 -0
  53. package/dist/mint-components/p-31015791.js +1 -0
  54. package/dist/mint-components/p-37996351.system.js +1 -1
  55. package/dist/mint-components/p-3a62a7e2.system.js +1 -0
  56. package/dist/mint-components/p-3b90e01b.system.js +1 -0
  57. package/dist/mint-components/p-3f067fd5.js +1 -0
  58. package/dist/mint-components/p-3f7b81b8.js +52 -0
  59. package/dist/mint-components/p-4e773bb1.system.entry.js +1 -0
  60. package/dist/mint-components/p-53730ffe.entry.js +17 -0
  61. package/dist/mint-components/p-562428ef.system.js +1 -0
  62. package/dist/mint-components/{p-f29eda2f.entry.js → p-57eef0af.entry.js} +4 -4
  63. package/dist/mint-components/p-5cb7f9fc.system.entry.js +1 -0
  64. package/dist/mint-components/{p-d3d74266.js → p-6cc141b9.js} +2 -2
  65. package/dist/mint-components/{p-b51e79b3.entry.js → p-7846937e.entry.js} +2 -2
  66. package/dist/mint-components/p-9acb5038.js +1 -0
  67. package/dist/mint-components/p-a7746488.system.js +1 -0
  68. package/dist/mint-components/p-aad32fb6.system.js +1 -0
  69. package/dist/mint-components/p-daee25f9.system.entry.js +1 -0
  70. package/dist/mint-components/p-dbc0e4f8.system.js +1 -0
  71. package/dist/mint-components/p-ef6381d4.entry.js +9 -0
  72. package/dist/mint-components/p-f56bedd5.js +1 -0
  73. package/dist/types/components/sqm-pagination/sqm-pagination.d.ts +1 -1
  74. package/dist/types/components/sqm-qr-code/QRCode.stories.d.ts +12 -0
  75. package/dist/types/components/sqm-qr-code/sqm-qr-code-view.d.ts +15 -0
  76. package/dist/types/components/sqm-qr-code/sqm-qr-code.d.ts +52 -0
  77. package/dist/types/components/sqm-qr-code/useQRCode.d.ts +3 -0
  78. package/dist/types/components/tax-and-cash/sqm-tax-and-cash/sqm-tax-and-cash.d.ts +0 -5
  79. package/dist/types/components.d.ts +22 -10
  80. package/dist/types/global/android.d.ts +7 -0
  81. package/dist/types/global/demo.d.ts +2 -0
  82. package/dist/types/stories/features.d.ts +4 -0
  83. package/dist/types/stories/templates.d.ts +4 -0
  84. package/docs/docs.docx +0 -0
  85. package/docs/raisins.json +1 -1
  86. package/grapesjs/grapesjs.js +1 -1
  87. package/package.json +1 -1
  88. package/dist/esm-es5/ShadowViewAddon-23a6afab.js +0 -1
  89. package/dist/esm-es5/copy-text-view-459a2e35.js +0 -1
  90. package/dist/esm-es5/sqm-invoice-table-view-af69cd33.js +0 -1
  91. package/dist/mint-components/p-33ed6f1c.system.entry.js +0 -1
  92. package/dist/mint-components/p-38b5f028.system.entry.js +0 -1
  93. package/dist/mint-components/p-717cc8ac.system.js +0 -1
  94. package/dist/mint-components/p-71bc04d2.system.entry.js +0 -1
  95. package/dist/mint-components/p-7e7cbccf.system.js +0 -1
  96. package/dist/mint-components/p-7f2d4212.js +0 -52
  97. package/dist/mint-components/p-9320582e.system.js +0 -1
  98. package/dist/mint-components/p-962f3200.js +0 -1
  99. package/dist/mint-components/p-b93fd99c.system.entry.js +0 -1
  100. package/dist/mint-components/p-f2cc6a6f.entry.js +0 -9
@@ -0,0 +1,98 @@
1
+ import { h } from "@stencil/core";
2
+ import { createStyleSheet } from "../../styling/JSS";
3
+ import { ErrorView } from "../tax-and-cash/sqm-tax-and-cash/ErrorView";
4
+ const style = {
5
+ DialogContainer: {
6
+ maxWidth: "390px !important",
7
+ },
8
+ Container: {
9
+ width: "100%",
10
+ display: "flex",
11
+ flexDirection: "row",
12
+ gap: "var(--sl-spacing-small)",
13
+ },
14
+ TextContainer: {
15
+ display: "flex",
16
+ gap: "var(--sl-spacing-medium)",
17
+ flexDirection: "column",
18
+ alignItems: "center",
19
+ },
20
+ ButtonContainer: {
21
+ display: "flex",
22
+ gap: "var(--sl-spacing-medium)",
23
+ },
24
+ FooterContainer: {
25
+ textAlign: "left",
26
+ display: "flex",
27
+ flexDirection: "column",
28
+ gap: "var(--sl-spacing-medium)",
29
+ },
30
+ CodeContainer: {
31
+ display: "flex",
32
+ width: "100%",
33
+ alignItems: "center",
34
+ justifyContent: "center",
35
+ },
36
+ Code: {
37
+ width: "100%",
38
+ height: "100%",
39
+ maxWidth: "335px",
40
+ },
41
+ TextButton: {
42
+ "&::part(base)": {
43
+ color: "var(--sl-color-gray-600)",
44
+ },
45
+ },
46
+ LoadingSkeleton: {
47
+ "&::part(indicator)": {
48
+ borderRadius: "0px !important",
49
+ },
50
+ },
51
+ };
52
+ const sheet = createStyleSheet(style);
53
+ const styleString = sheet.toString();
54
+ const vanillaStyle = `
55
+ :host{
56
+ display: flex;
57
+ width: 100%;
58
+ }
59
+ @media (max-width: 499px) {
60
+ :host{
61
+ display: block;
62
+ }
63
+
64
+ }`;
65
+ export function QrCodeView({ error, qrLink, titleText, downloadCodeText, printCodeText, errorHeaderText, errorDescriptionText, createDownloadable, createPrintable, hideTitle, alignment, loading, }) {
66
+ const codeAlignment = alignment === "left"
67
+ ? "flex-start"
68
+ : alignment === "right"
69
+ ? "flex-end"
70
+ : "center";
71
+ const getCodeContent = (error, qrLink, loading) => {
72
+ if (error) {
73
+ return (h(ErrorView, { loadingErrorAlertDescription: errorHeaderText, loadingErrorAlertHeader: errorDescriptionText }));
74
+ }
75
+ else if (loading) {
76
+ return (h("sl-skeleton", { className: sheet.classes.LoadingSkeleton, effect: "sheen", style: {
77
+ width: "100px",
78
+ height: "100px",
79
+ borderRadius: "0px !important",
80
+ } }));
81
+ }
82
+ else if (qrLink) {
83
+ return (h("svg", { width: "100", height: "100" },
84
+ h("image", { href: qrLink, width: "100", height: "100" })));
85
+ }
86
+ return null;
87
+ };
88
+ const codeContent = getCodeContent(error, qrLink, loading);
89
+ return (h("div", { class: sheet.classes.Container, style: { justifyContent: codeAlignment }, part: "sqm-base" },
90
+ h("style", null, vanillaStyle),
91
+ h("style", null, styleString),
92
+ h("div", { class: sheet.classes.TextContainer, style: { alignItems: codeAlignment } },
93
+ !hideTitle && h("span", { part: "sqm-title" }, titleText),
94
+ codeContent,
95
+ h("div", { class: sheet.classes.ButtonContainer },
96
+ h("sl-button", { size: "small", exportparts: "base: defaultbutton-base", type: "default", onClick: createDownloadable }, downloadCodeText),
97
+ h("sl-button", { size: "small", exportparts: "base: textbutton-base", type: "text", onClick: createPrintable, class: sheet.classes.TextButton }, printCodeText)))));
98
+ }
@@ -0,0 +1,293 @@
1
+ import { isDemo } from "@saasquatch/component-boilerplate";
2
+ import { useState, withHooks } from "@saasquatch/stencil-hooks";
3
+ import { Component, h, Prop } from "@stencil/core";
4
+ import deepmerge from "deepmerge";
5
+ import { getProps } from "../../utils/utils";
6
+ import { QrCodeView } from "./sqm-qr-code-view";
7
+ import { useQRCode } from "./useQRCode";
8
+ /**
9
+ * @uiName QR Code
10
+ * @exampleGroup Sharing
11
+ * @example QR Code - <sqm-qr-code></sqm-qr-code>
12
+ */
13
+ export class QrCode {
14
+ constructor() {
15
+ /**
16
+ * @uiName Title
17
+ */
18
+ this.titleText = "Share your QR code";
19
+ /**
20
+ * @uiName View QR code text
21
+ */
22
+ this.viewCodeText = "View QR code";
23
+ /**
24
+ * @uiName Download QR code text
25
+ */
26
+ this.downloadCodeText = "Download";
27
+ /**
28
+ * @uiName Print QR code text
29
+ */
30
+ this.printCodeText = "Print";
31
+ /**
32
+ * @uiName Header for error banner
33
+ */
34
+ this.errorHeaderText = "There was an error loading your QR code";
35
+ /**
36
+ * @uiName Description for error banner
37
+ */
38
+ this.errorDescriptionText = "Please refresh this page and try again";
39
+ /**
40
+ * @uiName Hide title
41
+ */
42
+ this.hideTitle = false;
43
+ /**
44
+ * @uiName QR code alignment
45
+ * @uiType string
46
+ * @uiEnum ["left", "center", "right"]
47
+ * @uiEnumNames ["Left", "Center", "Right"]
48
+ */
49
+ this.alignment = "center";
50
+ withHooks(this);
51
+ }
52
+ disconnectedCallback() { }
53
+ render() {
54
+ const thisProps = getProps(this);
55
+ const props = isDemo() ? useDemoQRCode(thisProps) : useQRCode(thisProps);
56
+ return h(QrCodeView, Object.assign({}, props));
57
+ }
58
+ static get is() { return "sqm-qr-code"; }
59
+ static get encapsulation() { return "shadow"; }
60
+ static get properties() { return {
61
+ "titleText": {
62
+ "type": "string",
63
+ "mutable": false,
64
+ "complexType": {
65
+ "original": "string",
66
+ "resolved": "string",
67
+ "references": {}
68
+ },
69
+ "required": false,
70
+ "optional": true,
71
+ "docs": {
72
+ "tags": [{
73
+ "text": "Title",
74
+ "name": "uiName"
75
+ }],
76
+ "text": ""
77
+ },
78
+ "attribute": "title-text",
79
+ "reflect": false,
80
+ "defaultValue": "\"Share your QR code\""
81
+ },
82
+ "viewCodeText": {
83
+ "type": "string",
84
+ "mutable": false,
85
+ "complexType": {
86
+ "original": "string",
87
+ "resolved": "string",
88
+ "references": {}
89
+ },
90
+ "required": false,
91
+ "optional": true,
92
+ "docs": {
93
+ "tags": [{
94
+ "text": "View QR code text",
95
+ "name": "uiName"
96
+ }],
97
+ "text": ""
98
+ },
99
+ "attribute": "view-code-text",
100
+ "reflect": false,
101
+ "defaultValue": "\"View QR code\""
102
+ },
103
+ "downloadCodeText": {
104
+ "type": "string",
105
+ "mutable": false,
106
+ "complexType": {
107
+ "original": "string",
108
+ "resolved": "string",
109
+ "references": {}
110
+ },
111
+ "required": false,
112
+ "optional": true,
113
+ "docs": {
114
+ "tags": [{
115
+ "text": "Download QR code text",
116
+ "name": "uiName"
117
+ }],
118
+ "text": ""
119
+ },
120
+ "attribute": "download-code-text",
121
+ "reflect": false,
122
+ "defaultValue": "\"Download\""
123
+ },
124
+ "printCodeText": {
125
+ "type": "string",
126
+ "mutable": false,
127
+ "complexType": {
128
+ "original": "string",
129
+ "resolved": "string",
130
+ "references": {}
131
+ },
132
+ "required": false,
133
+ "optional": true,
134
+ "docs": {
135
+ "tags": [{
136
+ "text": "Print QR code text",
137
+ "name": "uiName"
138
+ }],
139
+ "text": ""
140
+ },
141
+ "attribute": "print-code-text",
142
+ "reflect": false,
143
+ "defaultValue": "\"Print\""
144
+ },
145
+ "errorHeaderText": {
146
+ "type": "string",
147
+ "mutable": false,
148
+ "complexType": {
149
+ "original": "string",
150
+ "resolved": "string",
151
+ "references": {}
152
+ },
153
+ "required": false,
154
+ "optional": true,
155
+ "docs": {
156
+ "tags": [{
157
+ "text": "Header for error banner",
158
+ "name": "uiName"
159
+ }],
160
+ "text": ""
161
+ },
162
+ "attribute": "error-header-text",
163
+ "reflect": false,
164
+ "defaultValue": "\"There was an error loading your QR code\""
165
+ },
166
+ "errorDescriptionText": {
167
+ "type": "string",
168
+ "mutable": false,
169
+ "complexType": {
170
+ "original": "string",
171
+ "resolved": "string",
172
+ "references": {}
173
+ },
174
+ "required": false,
175
+ "optional": true,
176
+ "docs": {
177
+ "tags": [{
178
+ "text": "Description for error banner",
179
+ "name": "uiName"
180
+ }],
181
+ "text": ""
182
+ },
183
+ "attribute": "error-description-text",
184
+ "reflect": false,
185
+ "defaultValue": "\"Please refresh this page and try again\""
186
+ },
187
+ "hideTitle": {
188
+ "type": "boolean",
189
+ "mutable": false,
190
+ "complexType": {
191
+ "original": "boolean",
192
+ "resolved": "boolean",
193
+ "references": {}
194
+ },
195
+ "required": false,
196
+ "optional": true,
197
+ "docs": {
198
+ "tags": [{
199
+ "text": "Hide title",
200
+ "name": "uiName"
201
+ }],
202
+ "text": ""
203
+ },
204
+ "attribute": "hide-title",
205
+ "reflect": false,
206
+ "defaultValue": "false"
207
+ },
208
+ "alignment": {
209
+ "type": "string",
210
+ "mutable": false,
211
+ "complexType": {
212
+ "original": "\"left\" | \"center\" | \"right\"",
213
+ "resolved": "\"center\" | \"left\" | \"right\"",
214
+ "references": {}
215
+ },
216
+ "required": false,
217
+ "optional": true,
218
+ "docs": {
219
+ "tags": [{
220
+ "text": "QR code alignment",
221
+ "name": "uiName"
222
+ }, {
223
+ "text": "string",
224
+ "name": "uiType"
225
+ }, {
226
+ "text": "[\"left\", \"center\", \"right\"]",
227
+ "name": "uiEnum"
228
+ }, {
229
+ "text": "[\"Left\", \"Center\", \"Right\"]",
230
+ "name": "uiEnumNames"
231
+ }],
232
+ "text": ""
233
+ },
234
+ "attribute": "alignment",
235
+ "reflect": false,
236
+ "defaultValue": "\"center\""
237
+ },
238
+ "demoData": {
239
+ "type": "unknown",
240
+ "mutable": false,
241
+ "complexType": {
242
+ "original": "DemoData<QRCodeViewProps>",
243
+ "resolved": "{ loading?: boolean; titleText?: string; alignment?: \"left\" | \"right\" | \"center\"; error?: boolean; qrLink?: string; createDownloadable?: () => void; hideTitle?: boolean; downloadCodeText?: string; printCodeText?: string; errorHeaderText?: string; errorDescriptionText?: string; createPrintable?: () => void; }",
244
+ "references": {
245
+ "DemoData": {
246
+ "location": "import",
247
+ "path": "../../global/demo"
248
+ },
249
+ "QRCodeViewProps": {
250
+ "location": "import",
251
+ "path": "./sqm-qr-code-view"
252
+ }
253
+ }
254
+ },
255
+ "required": false,
256
+ "optional": true,
257
+ "docs": {
258
+ "tags": [{
259
+ "text": undefined,
260
+ "name": "undocumented"
261
+ }, {
262
+ "text": "object",
263
+ "name": "uiType"
264
+ }],
265
+ "text": ""
266
+ }
267
+ }
268
+ }; }
269
+ }
270
+ function useDemoQRCode(props) {
271
+ const [dialogIsOpen, setDialog] = useState(false);
272
+ return deepmerge({
273
+ dialogIsOpen,
274
+ hideTitle: props.hideTitle,
275
+ showDialog: () => setDialog(true),
276
+ hideDialog: () => setDialog(false),
277
+ titleText: props.titleText,
278
+ viewCodeText: props.viewCodeText,
279
+ downloadCodeText: props.downloadCodeText,
280
+ printCodeText: props.printCodeText,
281
+ alignment: props.alignment,
282
+ qrLink: "https://media.istockphoto.com/id/1251071788/vector/qr-code-bar-code-black-icon-digital-technology.jpg?s=612x612&w=0&k=20&c=maw4OqMSEegAdSo8Drm9HO7i1ddddvP2YaL1UuWbRig=",
283
+ fireViewQrEvent: () => {
284
+ console.log("View QR Code clicked");
285
+ },
286
+ createDownloadable: async () => {
287
+ console.log("Download QR Code clicked");
288
+ },
289
+ createPrintable: async () => {
290
+ console.log("Print QR Code clicked");
291
+ },
292
+ }, props.demoData || {}, { arrayMerge: (_, a) => a });
293
+ }
@@ -0,0 +1,124 @@
1
+ import { useEngagementMedium, useMutation, useParentValue, useProgramId, useQuery, useUserIdentity, } from "@saasquatch/component-boilerplate";
2
+ import { useState } from "@saasquatch/stencil-hooks";
3
+ import { useEffect } from "@saasquatch/universal-hooks";
4
+ import { gql } from "graphql-request";
5
+ import { REFERRAL_CODES_NAMESPACE, } from "../sqm-referral-codes/useReferralCodes";
6
+ const ShareLinkQuery = gql `
7
+ query shareLink($programId: ID, $engagementMedium: UserEngagementMedium!) {
8
+ user: viewer {
9
+ ... on User {
10
+ shareLink(
11
+ programId: $programId
12
+ engagementMedium: $engagementMedium
13
+ shareMedium: DIRECT
14
+ )
15
+ }
16
+ }
17
+ }
18
+ `;
19
+ const WIDGET_ENGAGEMENT_EVENT = gql `
20
+ mutation loadEvent($eventMeta: UserAnalyticsEvent!) {
21
+ createUserAnalyticsEvent(eventMeta: $eventMeta)
22
+ }
23
+ `;
24
+ export function useQRCode(props) {
25
+ var _a;
26
+ const programId = useProgramId();
27
+ const user = useUserIdentity();
28
+ const engagementMedium = useEngagementMedium();
29
+ const contextData = useParentValue(REFERRAL_CODES_NAMESPACE);
30
+ const [qrLink, setQrUrl] = useState(null);
31
+ const [error, setError] = useState(false);
32
+ const [loading, setLoading] = useState(false);
33
+ const { data, errors, loading: requestLoading, } = useQuery(ShareLinkQuery, { programId, engagementMedium }, !(user === null || user === void 0 ? void 0 : user.jwt) || (contextData === null || contextData === void 0 ? void 0 : contextData.shareLink) !== undefined);
34
+ const [sendLoadEvent] = useMutation(WIDGET_ENGAGEMENT_EVENT);
35
+ const shareLink = (_a = data === null || data === void 0 ? void 0 : data.user) === null || _a === void 0 ? void 0 : _a.shareLink;
36
+ const qrPrefix = `${shareLink}?qrCode`;
37
+ const completeLoading = requestLoading || loading;
38
+ useEffect(() => {
39
+ if (!shareLink)
40
+ return;
41
+ const getQrCode = async () => {
42
+ setLoading(true);
43
+ try {
44
+ const res = await fetch(`${shareLink}?qrCode&qrCodeImageFormat=svg&qrCodeQuietZoneSize=0`);
45
+ const blob = await res.blob();
46
+ const url = URL.createObjectURL(blob);
47
+ setQrUrl(url);
48
+ }
49
+ catch (e) {
50
+ setError(true);
51
+ }
52
+ finally {
53
+ setLoading(false);
54
+ }
55
+ };
56
+ getQrCode();
57
+ }, [shareLink]);
58
+ const fireEvent = async () => {
59
+ sendLoadEvent({
60
+ eventMeta: {
61
+ programId,
62
+ id: user === null || user === void 0 ? void 0 : user.id,
63
+ accountId: user === null || user === void 0 ? void 0 : user.accountId,
64
+ type: "USER_REFERRAL_PROGRAM_ENGAGEMENT_EVENT",
65
+ meta: {
66
+ engagementMedium,
67
+ shareMedium: "DIRECT",
68
+ },
69
+ },
70
+ });
71
+ };
72
+ const createDownloadable = async () => {
73
+ try {
74
+ const res = await fetch(`${qrPrefix}&qrCodeSize=800&qrCodeImageFormat=png`);
75
+ const blob = await res.blob();
76
+ const url = URL.createObjectURL(blob);
77
+ // Successful
78
+ if (blob)
79
+ fireEvent();
80
+ // Trigger download
81
+ const link = document.createElement("a");
82
+ link.href = url;
83
+ link.download = "qrCode.png";
84
+ document.body.appendChild(link);
85
+ link.click();
86
+ document.body.removeChild(link);
87
+ }
88
+ catch (e) {
89
+ console.error("Failed to fetch QR code:", e);
90
+ setError(true);
91
+ }
92
+ };
93
+ const createPrintable = async () => {
94
+ try {
95
+ const res = await fetch(`${qrPrefix}&qrCodeSize=1000&qrCodeImageFormat=png&qrCodeErrorCorrectionLevel=H`);
96
+ const blob = await res.blob();
97
+ const url = URL.createObjectURL(blob);
98
+ // Successful
99
+ if (blob)
100
+ fireEvent();
101
+ // Trigger print
102
+ const page = window.open("about:blank", "_new");
103
+ const img = page.document.createElement("img");
104
+ img.src = url;
105
+ img.onload = () => {
106
+ page.print();
107
+ page.close();
108
+ };
109
+ page.document.body.appendChild(img);
110
+ }
111
+ catch (e) {
112
+ console.error("Failed to fetch QR code: ", e);
113
+ setError(true);
114
+ }
115
+ };
116
+ return {
117
+ ...props,
118
+ loading: completeLoading,
119
+ qrLink,
120
+ error: error,
121
+ createDownloadable,
122
+ createPrintable,
123
+ };
124
+ }
@@ -96,6 +96,7 @@ import * as ReferralCodes from "../sqm-referral-codes/ReferralCodes.stories";
96
96
  import * as BaseRegistrationForm from "../sqm-base-registration/BaseRegistrationForm.stories";
97
97
  import * as PortalRegistrationForm from "../sqm-portal-registration-form/PortalRegistrationForm.stories";
98
98
  import * as PortalGoogleRegistrationFormStories from "../sqm-portal-google-registration-form/PortalGoogleRegistrationForm.stories";
99
+ import * as QRCode from "../sqm-qr-code/QRCode.stories";
99
100
  import * as Themes from "./Themes";
100
101
  import { CucumberAddon } from "./CucumberAddon";
101
102
  import { HookStoryAddon } from "./HookStoryAddon";
@@ -197,6 +198,7 @@ const stories = [
197
198
  WidgetCodeVerification,
198
199
  PayoutButtonScroll,
199
200
  PayoutStatusAlert,
201
+ QRCode,
200
202
  ];
201
203
  /**
202
204
  * For internal documentation
@@ -1,13 +1,13 @@
1
- import { isDemo, useParentState } from "@saasquatch/component-boilerplate";
2
1
  import { withHooks } from "@saasquatch/stencil-hooks";
3
2
  import { Component, Prop, h } from "@stencil/core";
4
3
  import deepmerge from "deepmerge";
5
4
  import { getProps } from "../../../utils/utils";
6
- import { ErrorView } from "./ErrorView";
7
5
  import LoadingView from "./LoadingView";
8
6
  import { TAX_CONTEXT_NAMESPACE } from "./data";
9
7
  import { extractProps } from "./extractProps";
10
8
  import { useTaxAndCash } from "./useTaxAndCash";
9
+ import { isDemo, useParentState } from "@saasquatch/component-boilerplate";
10
+ import { ErrorView } from "./ErrorView";
11
11
  /**
12
12
  * @uiName Tax and Cash
13
13
  * @exampleGroup Tax and Cash
@@ -5040,21 +5040,6 @@ export class TaxAndCashMonolith {
5040
5040
  }, {
5041
5041
  "text": "object",
5042
5042
  "name": "uiType"
5043
- }, {
5044
- "text": "Step 1 - { \"step\": \"/1\" }",
5045
- "name": "demo"
5046
- }, {
5047
- "text": "Step 2 - { \"step\": \"/2\" }",
5048
- "name": "demo"
5049
- }, {
5050
- "text": "Step 3 - { \"step\": \"/3\" }",
5051
- "name": "demo"
5052
- }, {
5053
- "text": "Step 3 - { \"step\": \"/4\" }",
5054
- "name": "demo"
5055
- }, {
5056
- "text": "Dashboard - { \"step\": \"/dashboard\" }",
5057
- "name": "demo"
5058
5043
  }],
5059
5044
  "text": ""
5060
5045
  }
@@ -404,7 +404,7 @@ export const TaxAndCashDashboardView = (props) => {
404
404
  h("sl-skeleton", { class: sheet.classes.SkeletonTwo }))) : (h("div", null,
405
405
  h("h3", { class: sheet.classes.IndirectTaxPreviewHeaderContainer },
406
406
  text.indirectTaxInfoSectionHeader,
407
- h("sl-tooltip", { trigger: "hover", placement: "top", content: text.indirectTaxTooltipSupport, class: sheet.classes.TooltipContainer },
407
+ h("sl-tooltip", { trigger: "hover", placement: "right", content: text.indirectTaxTooltipSupport, class: sheet.classes.TooltipContainer },
408
408
  h("sl-icon", { name: "info-circle", class: sheet.classes.ToolTip }))),
409
409
  h("div", { class: sheet.classes.IndirectTaxPreviewDetails },
410
410
  h("span", null, states.notRegistered ? (h("span", { class: sheet.classes.NotRegisteredIndirectTaxText }, intl.formatMessage({
@@ -0,0 +1,33 @@
1
+ import { h } from './index-91e7729f.js';
2
+ import { c as createStyleSheet } from './JSS-67b5cff8.js';
3
+
4
+ const styles = {
5
+ Alert: {
6
+ "&::part(base)": {
7
+ backgroundColor: "var(--sl-color-danger-100)",
8
+ border: "1px solid var(--sl-color-danger-200)",
9
+ padding: "0 16px",
10
+ },
11
+ "& sl-icon": {
12
+ margin: 0,
13
+ },
14
+ "& sl-icon::part(base)": {
15
+ color: "var(--sl-color-danger-500)",
16
+ margin: 0,
17
+ },
18
+ },
19
+ };
20
+ const ErrorView = (props) => {
21
+ const sheet = createStyleSheet(styles);
22
+ const styleString = sheet.toString();
23
+ const { classes } = sheet;
24
+ return (h("div", null,
25
+ h("style", null, styleString),
26
+ h("sl-alert", { exportparts: "base: alert-base, icon:alert-icon", type: "danger", open: true, class: classes.Alert },
27
+ h("sl-icon", { slot: "icon", name: "exclamation-octagon", class: "Error" }),
28
+ h("strong", null, props.loadingErrorAlertHeader),
29
+ h("br", null),
30
+ props.loadingErrorAlertDescription)));
31
+ };
32
+
33
+ export { ErrorView as E };
@@ -5,8 +5,9 @@ import { d as dist, H, J, F as Fn, w as wn, $ as $e, B, g as getEnvironmentSDK,
5
5
  import { c as cjs } from './cjs-bdfb4486.js';
6
6
  import { l as luxonLocale } from './utils-334c1e34.js';
7
7
  import { c as createStyleSheet, j as jss, a as create } from './JSS-67b5cff8.js';
8
- import { a as REFERRAL_CODES_NAMESPACE, S as SET_CODE_COPIED, C as CopyTextView } from './copy-text-view-459a2e35.js';
8
+ import { a as REFERRAL_CODES_NAMESPACE, S as SET_CODE_COPIED } from './useReferralCodes-8f75921a.js';
9
9
  import { H as HostBlock, A as AuthWrapper, a as AuthColumn, b as AuthButtonsContainer, E as ErrorStyles } from './mixins-83f90fa1.js';
10
+ import { C as CopyTextView } from './copy-text-view-782137ba.js';
10
11
  import { u as useChildElements } from './useChildElements-7945ae56.js';
11
12
  import { l as luxon } from './luxon-8d51c92b.js';
12
13
  import { T as TextSpanView } from './sqm-text-span-view-ca32495e.js';