@snack-uikit/toaster 0.8.19 → 0.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 (124) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +74 -37
  3. package/dist/cjs/components/ToastSystemEvent/styles.module.css +2 -3
  4. package/dist/cjs/components/ToastUpload/ToastUpload.d.ts +59 -0
  5. package/dist/cjs/components/ToastUpload/ToastUpload.js +132 -0
  6. package/dist/cjs/components/ToastUpload/constants.d.ts +16 -0
  7. package/dist/cjs/components/ToastUpload/constants.js +26 -0
  8. package/dist/cjs/components/ToastUpload/helperComponents/ButtonIcon/ButtonIcon.d.ts +3 -0
  9. package/dist/cjs/components/ToastUpload/helperComponents/ButtonIcon/ButtonIcon.js +32 -0
  10. package/dist/cjs/components/ToastUpload/helperComponents/ButtonIcon/index.d.ts +1 -0
  11. package/dist/cjs/components/ToastUpload/helperComponents/ButtonIcon/index.js +25 -0
  12. package/dist/cjs/components/ToastUpload/helperComponents/ButtonIcon/styles.module.css +32 -0
  13. package/dist/cjs/components/ToastUpload/helperComponents/ButtonTextNeutral/ButtonTextNeutral.d.ts +7 -0
  14. package/dist/cjs/components/ToastUpload/helperComponents/ButtonTextNeutral/ButtonTextNeutral.js +28 -0
  15. package/dist/cjs/components/ToastUpload/helperComponents/ButtonTextNeutral/index.d.ts +1 -0
  16. package/dist/cjs/components/ToastUpload/helperComponents/ButtonTextNeutral/index.js +25 -0
  17. package/dist/cjs/components/ToastUpload/helperComponents/ButtonTextNeutral/styles.module.css +33 -0
  18. package/dist/cjs/components/ToastUpload/helperComponents/FileItem/FileItem.d.ts +5 -0
  19. package/dist/cjs/components/ToastUpload/helperComponents/FileItem/FileItem.js +90 -0
  20. package/dist/cjs/components/ToastUpload/helperComponents/FileItem/index.d.ts +1 -0
  21. package/dist/cjs/components/ToastUpload/helperComponents/FileItem/index.js +25 -0
  22. package/dist/cjs/components/ToastUpload/helperComponents/FileItem/styles.module.css +87 -0
  23. package/dist/cjs/components/ToastUpload/helperComponents/LoadingStatus/LoadingStatus.d.ts +7 -0
  24. package/dist/cjs/components/ToastUpload/helperComponents/LoadingStatus/LoadingStatus.js +43 -0
  25. package/dist/cjs/components/ToastUpload/helperComponents/LoadingStatus/index.d.ts +1 -0
  26. package/dist/cjs/components/ToastUpload/helperComponents/LoadingStatus/index.js +25 -0
  27. package/dist/cjs/components/ToastUpload/helperComponents/LoadingStatus/styles.module.css +3 -0
  28. package/dist/cjs/components/ToastUpload/index.d.ts +1 -0
  29. package/dist/cjs/components/ToastUpload/index.js +25 -0
  30. package/dist/cjs/components/ToastUpload/styles.module.css +111 -0
  31. package/dist/cjs/components/ToastUpload/types.d.ts +55 -0
  32. package/dist/cjs/components/ToastUpload/types.js +5 -0
  33. package/dist/cjs/components/ToastUpload/utils/formatPercent.d.ts +1 -0
  34. package/dist/cjs/components/ToastUpload/utils/formatPercent.js +8 -0
  35. package/dist/cjs/components/ToastUpload/utils/index.d.ts +1 -0
  36. package/dist/cjs/components/ToastUpload/utils/index.js +25 -0
  37. package/dist/cjs/components/ToasterContainer/styles.module.css +9 -9
  38. package/dist/cjs/components/index.d.ts +1 -0
  39. package/dist/cjs/components/index.js +2 -1
  40. package/dist/cjs/constants.d.ts +2 -4
  41. package/dist/cjs/constants.js +10 -2
  42. package/dist/cjs/helperComponents/ButtonAction/styles.module.css +2 -2
  43. package/dist/cjs/helpers.d.ts +4 -0
  44. package/dist/cjs/helpers.js +42 -1
  45. package/dist/cjs/index.d.ts +2 -2
  46. package/dist/cjs/index.js +20 -0
  47. package/dist/cjs/testIds.d.ts +14 -0
  48. package/dist/cjs/testIds.js +16 -1
  49. package/dist/cjs/types.d.ts +9 -1
  50. package/dist/esm/components/ToastSystemEvent/styles.module.css +2 -3
  51. package/dist/esm/components/ToastUpload/ToastUpload.d.ts +59 -0
  52. package/dist/esm/components/ToastUpload/ToastUpload.js +45 -0
  53. package/dist/esm/components/ToastUpload/constants.d.ts +16 -0
  54. package/dist/esm/components/ToastUpload/constants.js +20 -0
  55. package/dist/esm/components/ToastUpload/helperComponents/ButtonIcon/ButtonIcon.d.ts +3 -0
  56. package/dist/esm/components/ToastUpload/helperComponents/ButtonIcon/ButtonIcon.js +18 -0
  57. package/dist/esm/components/ToastUpload/helperComponents/ButtonIcon/index.d.ts +1 -0
  58. package/dist/esm/components/ToastUpload/helperComponents/ButtonIcon/index.js +1 -0
  59. package/dist/esm/components/ToastUpload/helperComponents/ButtonIcon/styles.module.css +32 -0
  60. package/dist/esm/components/ToastUpload/helperComponents/ButtonTextNeutral/ButtonTextNeutral.d.ts +7 -0
  61. package/dist/esm/components/ToastUpload/helperComponents/ButtonTextNeutral/ButtonTextNeutral.js +5 -0
  62. package/dist/esm/components/ToastUpload/helperComponents/ButtonTextNeutral/index.d.ts +1 -0
  63. package/dist/esm/components/ToastUpload/helperComponents/ButtonTextNeutral/index.js +1 -0
  64. package/dist/esm/components/ToastUpload/helperComponents/ButtonTextNeutral/styles.module.css +33 -0
  65. package/dist/esm/components/ToastUpload/helperComponents/FileItem/FileItem.d.ts +5 -0
  66. package/dist/esm/components/ToastUpload/helperComponents/FileItem/FileItem.js +26 -0
  67. package/dist/esm/components/ToastUpload/helperComponents/FileItem/index.d.ts +1 -0
  68. package/dist/esm/components/ToastUpload/helperComponents/FileItem/index.js +1 -0
  69. package/dist/esm/components/ToastUpload/helperComponents/FileItem/styles.module.css +87 -0
  70. package/dist/esm/components/ToastUpload/helperComponents/LoadingStatus/LoadingStatus.d.ts +7 -0
  71. package/dist/esm/components/ToastUpload/helperComponents/LoadingStatus/LoadingStatus.js +16 -0
  72. package/dist/esm/components/ToastUpload/helperComponents/LoadingStatus/index.d.ts +1 -0
  73. package/dist/esm/components/ToastUpload/helperComponents/LoadingStatus/index.js +1 -0
  74. package/dist/esm/components/ToastUpload/helperComponents/LoadingStatus/styles.module.css +3 -0
  75. package/dist/esm/components/ToastUpload/index.d.ts +1 -0
  76. package/dist/esm/components/ToastUpload/index.js +1 -0
  77. package/dist/esm/components/ToastUpload/styles.module.css +111 -0
  78. package/dist/esm/components/ToastUpload/types.d.ts +55 -0
  79. package/dist/esm/components/ToastUpload/types.js +1 -0
  80. package/dist/esm/components/ToastUpload/utils/formatPercent.d.ts +1 -0
  81. package/dist/esm/components/ToastUpload/utils/formatPercent.js +1 -0
  82. package/dist/esm/components/ToastUpload/utils/index.d.ts +1 -0
  83. package/dist/esm/components/ToastUpload/utils/index.js +1 -0
  84. package/dist/esm/components/ToasterContainer/styles.module.css +9 -9
  85. package/dist/esm/components/index.d.ts +1 -0
  86. package/dist/esm/components/index.js +1 -0
  87. package/dist/esm/constants.d.ts +2 -4
  88. package/dist/esm/constants.js +8 -0
  89. package/dist/esm/helperComponents/ButtonAction/styles.module.css +2 -2
  90. package/dist/esm/helpers.d.ts +4 -0
  91. package/dist/esm/helpers.js +42 -1
  92. package/dist/esm/index.d.ts +2 -2
  93. package/dist/esm/index.js +1 -0
  94. package/dist/esm/testIds.d.ts +14 -0
  95. package/dist/esm/testIds.js +15 -0
  96. package/dist/esm/types.d.ts +9 -1
  97. package/package.json +10 -6
  98. package/src/components/ToastSystemEvent/styles.module.scss +2 -2
  99. package/src/components/ToastUpload/ToastUpload.tsx +182 -0
  100. package/src/components/ToastUpload/constants.ts +26 -0
  101. package/src/components/ToastUpload/helperComponents/ButtonIcon/ButtonIcon.tsx +10 -0
  102. package/src/components/ToastUpload/helperComponents/ButtonIcon/index.ts +1 -0
  103. package/src/components/ToastUpload/helperComponents/ButtonIcon/styles.module.scss +43 -0
  104. package/src/components/ToastUpload/helperComponents/ButtonTextNeutral/ButtonTextNeutral.tsx +23 -0
  105. package/src/components/ToastUpload/helperComponents/ButtonTextNeutral/index.ts +1 -0
  106. package/src/components/ToastUpload/helperComponents/ButtonTextNeutral/styles.module.scss +38 -0
  107. package/src/components/ToastUpload/helperComponents/FileItem/FileItem.tsx +83 -0
  108. package/src/components/ToastUpload/helperComponents/FileItem/index.ts +1 -0
  109. package/src/components/ToastUpload/helperComponents/FileItem/styles.module.scss +91 -0
  110. package/src/components/ToastUpload/helperComponents/LoadingStatus/LoadingStatus.tsx +39 -0
  111. package/src/components/ToastUpload/helperComponents/LoadingStatus/index.ts +1 -0
  112. package/src/components/ToastUpload/helperComponents/LoadingStatus/styles.module.scss +5 -0
  113. package/src/components/ToastUpload/index.ts +1 -0
  114. package/src/components/ToastUpload/styles.module.scss +121 -0
  115. package/src/components/ToastUpload/types.ts +62 -0
  116. package/src/components/ToastUpload/utils/formatPercent.ts +1 -0
  117. package/src/components/ToastUpload/utils/index.ts +1 -0
  118. package/src/components/ToasterContainer/styles.module.scss +1 -1
  119. package/src/components/index.ts +1 -0
  120. package/src/constants.ts +9 -1
  121. package/src/helpers.tsx +38 -0
  122. package/src/index.ts +2 -10
  123. package/src/testIds.ts +17 -0
  124. package/src/types.ts +7 -1
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+
3
+ var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
4
+ return mod && mod.__esModule ? mod : {
5
+ "default": mod
6
+ };
7
+ };
8
+ Object.defineProperty(exports, "__esModule", {
9
+ value: true
10
+ });
11
+ exports.FileItem = FileItem;
12
+ const jsx_runtime_1 = require("react/jsx-runtime");
13
+ const react_1 = require("react");
14
+ const icons_1 = require("@snack-uikit/icons");
15
+ const link_1 = require("@snack-uikit/link");
16
+ const progress_bar_1 = require("@snack-uikit/progress-bar");
17
+ const truncate_string_1 = require("@snack-uikit/truncate-string");
18
+ const testIds_1 = require("../../../../testIds");
19
+ const constants_1 = require("../../constants");
20
+ const utils_1 = require("../../utils");
21
+ const ButtonIcon_1 = require("../ButtonIcon");
22
+ const LoadingStatus_1 = require("../LoadingStatus");
23
+ const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
24
+ function FileItem(_ref) {
25
+ let {
26
+ item: initItem
27
+ } = _ref;
28
+ var _a, _b, _c;
29
+ const [item, setItem] = (0, react_1.useState)(initItem);
30
+ const showLink = item.status === 'uploaded' && item.link;
31
+ const showCancelButton = !showLink;
32
+ (0, react_1.useEffect)(() => {
33
+ if (initItem.subscribeToState) {
34
+ initItem.subscribeToState(newValue => setItem(prev => Object.assign(Object.assign({}, prev), newValue)));
35
+ }
36
+ return setItem(initItem);
37
+ }, [initItem]);
38
+ const isError = item.status === 'error';
39
+ return (0, jsx_runtime_1.jsxs)("div", {
40
+ className: styles_module_scss_1.default.fileLine,
41
+ "data-test-id": testIds_1.TOAST_UPLOAD_TEST_IDS.uploadItem,
42
+ children: [(0, jsx_runtime_1.jsxs)("div", {
43
+ className: styles_module_scss_1.default.fileHeadLine,
44
+ children: [(0, jsx_runtime_1.jsx)(truncate_string_1.TruncateString, {
45
+ text: item.title,
46
+ className: styles_module_scss_1.default.fileTitle,
47
+ maxLines: 1
48
+ }), showLink && (0, jsx_runtime_1.jsx)(link_1.Link, {
49
+ text: (_a = item.link) === null || _a === void 0 ? void 0 : _a.text,
50
+ href: (_b = item.link) === null || _b === void 0 ? void 0 : _b.href,
51
+ size: 's',
52
+ truncateVariant: 'end',
53
+ onClick: (_c = item.link) === null || _c === void 0 ? void 0 : _c.onClick,
54
+ appearance: 'invert-neutral',
55
+ textMode: 'accent',
56
+ "data-test-id": testIds_1.TOAST_UPLOAD_TEST_IDS.uploadItemLink
57
+ }), showCancelButton && (0, jsx_runtime_1.jsx)(ButtonIcon_1.ButtonIcon, {
58
+ onClick: item.actions.onCancel,
59
+ "data-test-id": testIds_1.TOAST_UPLOAD_TEST_IDS.uploadItemCancel,
60
+ children: (0, jsx_runtime_1.jsx)(icons_1.CrossSVG, {})
61
+ })]
62
+ }), (0, jsx_runtime_1.jsx)(progress_bar_1.ProgressBar, {
63
+ progress: isError ? 100 : item.progress,
64
+ size: 'xs',
65
+ appearance: constants_1.progressBarAppearanceByStatus[item.status]
66
+ }), (0, jsx_runtime_1.jsxs)("div", {
67
+ className: styles_module_scss_1.default.fileStatusLine,
68
+ children: [(0, jsx_runtime_1.jsxs)("div", {
69
+ className: styles_module_scss_1.default.fileStatusWrap,
70
+ children: [(0, jsx_runtime_1.jsx)(LoadingStatus_1.LoadingStatus, {
71
+ status: item.status,
72
+ actions: item.actions,
73
+ isFileItem: true
74
+ }), (0, jsx_runtime_1.jsx)(truncate_string_1.TruncateString, {
75
+ className: styles_module_scss_1.default.fileStatusDescription,
76
+ "data-status": item.status,
77
+ text: item.statusLabel
78
+ })]
79
+ }), (0, jsx_runtime_1.jsx)("span", {
80
+ className: styles_module_scss_1.default.fileSize,
81
+ "data-status": item.status,
82
+ children: item.formattedSize
83
+ }), (0, jsx_runtime_1.jsx)("span", {
84
+ className: styles_module_scss_1.default.fileStatusPercentage,
85
+ "data-status": item.status,
86
+ children: (0, utils_1.formatPercent)(isError ? 0 : item.progress)
87
+ })]
88
+ })]
89
+ });
90
+ }
@@ -0,0 +1 @@
1
+ export * from './FileItem';
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ var __createBinding = void 0 && (void 0).__createBinding || (Object.create ? function (o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = {
8
+ enumerable: true,
9
+ get: function () {
10
+ return m[k];
11
+ }
12
+ };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ } : function (o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ });
19
+ var __exportStar = void 0 && (void 0).__exportStar || function (m, exports) {
20
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
21
+ };
22
+ Object.defineProperty(exports, "__esModule", {
23
+ value: true
24
+ });
25
+ __exportStar(require("./FileItem"), exports);
@@ -0,0 +1,87 @@
1
+ .fileLine{
2
+ padding-top:var(--space-toaster-toast-upload-file-line-vertical-padding, 4px);
3
+ padding-bottom:var(--space-toaster-toast-upload-file-line-vertical-padding, 4px);
4
+ display:flex;
5
+ flex-direction:column;
6
+ }
7
+
8
+ .fileHeadLine{
9
+ gap:var(--space-toaster-toast-upload-headline-gap, 16px);
10
+ min-height:var(--size-toaster-toast-upload-file-line-headline-height, 24px);
11
+ display:flex;
12
+ align-items:center;
13
+ }
14
+
15
+ .fileTitle{
16
+ font-family:var(--sans-body-s-font-family, SB Sans Interface);
17
+ font-weight:var(--sans-body-s-font-weight, Regular);
18
+ line-height:var(--sans-body-s-line-height, 16px);
19
+ font-size:var(--sans-body-s-font-size, 12px);
20
+ letter-spacing:var(--sans-body-s-letter-spacing, 0.1px);
21
+ paragraph-spacing:var(--sans-body-s-paragraph-spacing, 6.6px);
22
+ flex-grow:1;
23
+ color:var(--sys-invert-neutral-text-main, #e6e8ef);
24
+ }
25
+
26
+ .fileStatusLine{
27
+ gap:var(--space-toaster-toast-upload-status-line-gap, 8px);
28
+ display:flex;
29
+ align-items:center;
30
+ }
31
+
32
+ .fileStatusWrap{
33
+ gap:var(--space-toaster-toast-upload-status-wrap-gap, 4px);
34
+ overflow:hidden;
35
+ display:flex;
36
+ flex-grow:1;
37
+ align-items:center;
38
+ }
39
+
40
+ .fileStatusDescription{
41
+ font-family:var(--sans-body-s-font-family, SB Sans Interface);
42
+ font-weight:var(--sans-body-s-font-weight, Regular);
43
+ line-height:var(--sans-body-s-line-height, 16px);
44
+ font-size:var(--sans-body-s-font-size, 12px);
45
+ letter-spacing:var(--sans-body-s-letter-spacing, 0.1px);
46
+ paragraph-spacing:var(--sans-body-s-paragraph-spacing, 6.6px);
47
+ color:var(--sys-invert-neutral-text-main, #e6e8ef);
48
+ }
49
+ .fileStatusDescription[data-status=loading]{
50
+ color:var(--sys-invert-neutral-text-disabled, #656774);
51
+ }
52
+ .fileStatusDescription[data-status=uploaded]{
53
+ color:var(--sys-invert-neutral-text-disabled, #656774);
54
+ }
55
+
56
+ .fileSize{
57
+ font-family:var(--sans-body-s-font-family, SB Sans Interface);
58
+ font-weight:var(--sans-body-s-font-weight, Regular);
59
+ line-height:var(--sans-body-s-line-height, 16px);
60
+ font-size:var(--sans-body-s-font-size, 12px);
61
+ letter-spacing:var(--sans-body-s-letter-spacing, 0.1px);
62
+ paragraph-spacing:var(--sans-body-s-paragraph-spacing, 6.6px);
63
+ color:var(--sys-invert-neutral-text-disabled, #656774);
64
+ text-wrap:nowrap;
65
+ }
66
+ .fileSize[data-status=loading]{
67
+ color:var(--sys-invert-neutral-text-main, #e6e8ef);
68
+ }
69
+ .fileSize[data-status=uploaded]{
70
+ color:var(--sys-invert-neutral-text-main, #e6e8ef);
71
+ }
72
+
73
+ .fileStatusPercentage{
74
+ font-family:var(--sans-body-s-font-family, SB Sans Interface);
75
+ font-weight:var(--sans-body-s-font-weight, Regular);
76
+ line-height:var(--sans-body-s-line-height, 16px);
77
+ font-size:var(--sans-body-s-font-size, 12px);
78
+ letter-spacing:var(--sans-body-s-letter-spacing, 0.1px);
79
+ paragraph-spacing:var(--sans-body-s-paragraph-spacing, 6.6px);
80
+ color:var(--sys-invert-neutral-text-disabled, #656774);
81
+ }
82
+ .fileStatusPercentage[data-status=loading]{
83
+ color:var(--sys-invert-neutral-text-main, #e6e8ef);
84
+ }
85
+ .fileStatusPercentage[data-status=uploaded]{
86
+ color:var(--sys-invert-neutral-text-main, #e6e8ef);
87
+ }
@@ -0,0 +1,7 @@
1
+ import { ToastUploadStatus, UploadActions } from '../../types';
2
+ export type LoadingStatusProps = {
3
+ status: ToastUploadStatus;
4
+ actions: UploadActions;
5
+ isFileItem?: boolean;
6
+ };
7
+ export declare function LoadingStatus({ status, actions, isFileItem }: LoadingStatusProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+
3
+ var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
4
+ return mod && mod.__esModule ? mod : {
5
+ "default": mod
6
+ };
7
+ };
8
+ Object.defineProperty(exports, "__esModule", {
9
+ value: true
10
+ });
11
+ exports.LoadingStatus = LoadingStatus;
12
+ const jsx_runtime_1 = require("react/jsx-runtime");
13
+ const icons_1 = require("@snack-uikit/icons");
14
+ const ButtonIcon_1 = require("../ButtonIcon");
15
+ const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
16
+ function LoadingStatus(_ref) {
17
+ let {
18
+ status,
19
+ actions,
20
+ isFileItem
21
+ } = _ref;
22
+ if (status === 'loading' || status === 'error' && !isFileItem) {
23
+ return (0, jsx_runtime_1.jsx)(ButtonIcon_1.ButtonIcon, {
24
+ onClick: actions.onPause,
25
+ children: (0, jsx_runtime_1.jsx)(icons_1.PauseSVG, {})
26
+ });
27
+ }
28
+ if (status === 'pause') {
29
+ return (0, jsx_runtime_1.jsx)(ButtonIcon_1.ButtonIcon, {
30
+ onClick: actions.onContinue,
31
+ children: (0, jsx_runtime_1.jsx)(icons_1.PlaySVG, {})
32
+ });
33
+ }
34
+ if (status === 'uploaded') {
35
+ return (0, jsx_runtime_1.jsx)(icons_1.CheckFilledSVG, {
36
+ className: styles_module_scss_1.default.successIcon
37
+ });
38
+ }
39
+ return (0, jsx_runtime_1.jsx)(ButtonIcon_1.ButtonIcon, {
40
+ onClick: actions.onRetry,
41
+ children: (0, jsx_runtime_1.jsx)(icons_1.UpdateSVG, {})
42
+ });
43
+ }
@@ -0,0 +1 @@
1
+ export * from './LoadingStatus';
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ var __createBinding = void 0 && (void 0).__createBinding || (Object.create ? function (o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = {
8
+ enumerable: true,
9
+ get: function () {
10
+ return m[k];
11
+ }
12
+ };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ } : function (o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ });
19
+ var __exportStar = void 0 && (void 0).__exportStar || function (m, exports) {
20
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
21
+ };
22
+ Object.defineProperty(exports, "__esModule", {
23
+ value: true
24
+ });
25
+ __exportStar(require("./LoadingStatus"), exports);
@@ -0,0 +1,3 @@
1
+ .successIcon{
2
+ color:var(--sys-green-accent-default, #57b762);
3
+ }
@@ -0,0 +1 @@
1
+ export * from './ToastUpload';
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ var __createBinding = void 0 && (void 0).__createBinding || (Object.create ? function (o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = {
8
+ enumerable: true,
9
+ get: function () {
10
+ return m[k];
11
+ }
12
+ };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ } : function (o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ });
19
+ var __exportStar = void 0 && (void 0).__exportStar || function (m, exports) {
20
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
21
+ };
22
+ Object.defineProperty(exports, "__esModule", {
23
+ value: true
24
+ });
25
+ __exportStar(require("./ToastUpload"), exports);
@@ -0,0 +1,111 @@
1
+ .container{
2
+ padding:var(--space-toaster-toast-system-event-container-padding, 16px);
3
+ border-radius:var(--radius-toaster-toast-system-event-container, 16px);
4
+ gap:var(--space-toaster-toast-system-event-container-gap, 16px);
5
+ cursor:default;
6
+ position:relative;
7
+ overflow:hidden;
8
+ display:flex;
9
+ flex-direction:column;
10
+ box-sizing:border-box;
11
+ width:calc(var(--size-toaster-toast-system-event-container, 320px) - var(--space-toaster-toast-system-event-container-padding, 16px));
12
+ max-width:100%;
13
+ max-height:386px;
14
+ background-color:var(--sys-invert-neutral-background, #30303c);
15
+ }
16
+ .container[data-collapsed]{
17
+ gap:0;
18
+ }
19
+
20
+ .titleLine{
21
+ display:flex;
22
+ flex-direction:column;
23
+ }
24
+
25
+ .titleLineBody{
26
+ gap:var(--space-toaster-toast-upload-body-gap, 16px);
27
+ display:flex;
28
+ align-items:center;
29
+ }
30
+
31
+ .title{
32
+ font-family:var(--sans-title-s-font-family, SB Sans Interface);
33
+ font-weight:var(--sans-title-s-font-weight, Semibold);
34
+ line-height:var(--sans-title-s-line-height, 20px);
35
+ font-size:var(--sans-title-s-font-size, 14px);
36
+ letter-spacing:var(--sans-title-s-letter-spacing, 0.15px);
37
+ paragraph-spacing:var(--sans-title-s-paragraph-spacing, 7.7px);
38
+ flex-grow:1;
39
+ color:var(--sys-invert-neutral-text-main, #e6e8ef);
40
+ }
41
+
42
+ .generalProgress{
43
+ gap:var(--space-toaster-toast-upload-general-progress-gap, 4px);
44
+ display:flex;
45
+ flex-direction:column;
46
+ align-self:stretch;
47
+ }
48
+
49
+ .statusLine{
50
+ gap:var(--space-toaster-toast-upload-status-line-gap, 8px);
51
+ display:flex;
52
+ align-items:center;
53
+ }
54
+
55
+ .statusWrap{
56
+ gap:var(--space-toaster-toast-upload-status-wrap-gap, 4px);
57
+ overflow:hidden;
58
+ display:flex;
59
+ flex-grow:1;
60
+ align-items:center;
61
+ }
62
+
63
+ .description{
64
+ font-family:var(--sans-body-m-font-family, SB Sans Interface);
65
+ font-weight:var(--sans-body-m-font-weight, Regular);
66
+ line-height:var(--sans-body-m-line-height, 20px);
67
+ font-size:var(--sans-body-m-font-size, 14px);
68
+ letter-spacing:var(--sans-body-m-letter-spacing, 0.1px);
69
+ paragraph-spacing:var(--sans-body-m-paragraph-spacing, 7.7px);
70
+ color:var(--sys-invert-neutral-text-main, #e6e8ef);
71
+ }
72
+ .description[data-status=loading]{
73
+ color:var(--sys-invert-neutral-text-light, #8b8e9b);
74
+ }
75
+ .description[data-status=uploaded]{
76
+ color:var(--sys-invert-neutral-text-light, #8b8e9b);
77
+ }
78
+
79
+ .totalCounter{
80
+ font-family:var(--sans-body-m-font-family, SB Sans Interface);
81
+ font-weight:var(--sans-body-m-font-weight, Regular);
82
+ line-height:var(--sans-body-m-line-height, 20px);
83
+ font-size:var(--sans-body-m-font-size, 14px);
84
+ letter-spacing:var(--sans-body-m-letter-spacing, 0.1px);
85
+ paragraph-spacing:var(--sans-body-m-paragraph-spacing, 7.7px);
86
+ color:var(--sys-invert-neutral-text-support, #bec2cf);
87
+ }
88
+
89
+ .totalPercentage{
90
+ font-family:var(--sans-body-m-font-family, SB Sans Interface);
91
+ font-weight:var(--sans-body-m-font-weight, Regular);
92
+ line-height:var(--sans-body-m-line-height, 20px);
93
+ font-size:var(--sans-body-m-font-size, 14px);
94
+ letter-spacing:var(--sans-body-m-letter-spacing, 0.1px);
95
+ paragraph-spacing:var(--sans-body-m-paragraph-spacing, 7.7px);
96
+ color:var(--sys-invert-neutral-text-support, #bec2cf);
97
+ }
98
+
99
+ .list{
100
+ overflow-x:hidden;
101
+ display:flex;
102
+ flex-direction:column;
103
+ box-sizing:content-box;
104
+ max-height:288px;
105
+ margin-top:0;
106
+ padding-right:calc(var(--space-toaster-toast-system-event-container-padding, 16px) - var(--dimension-050m, 4px));
107
+ transition:all 0.1s;
108
+ }
109
+ [data-collapsed] .list{
110
+ max-height:0;
111
+ }
@@ -0,0 +1,55 @@
1
+ import { LinkProps } from '@snack-uikit/link';
2
+ import { ProgressBarProps } from '@snack-uikit/progress-bar';
3
+ import { ValueOf } from '@snack-uikit/utils';
4
+ import { TOAST_UPLOAD_ITEM_STATUS, TOAST_UPLOAD_STATUS } from './constants';
5
+ export type ToastUploadStatus = ValueOf<typeof TOAST_UPLOAD_STATUS>;
6
+ export type ToastUploadItemStatus = ValueOf<typeof TOAST_UPLOAD_ITEM_STATUS>;
7
+ export type ToastUploadStateSubscription<T> = (subscription: (newValue: T) => void) => () => void;
8
+ export type WithStateSubscription<T> = {
9
+ /**Позволяет подписываться на изменения процесса загрузки файла внутри конпонента,
10
+ * тем самым обновляет элементы не зависимо от всего списка
11
+ * (можно использовать для улучшения производительности из-за частых обновлений)
12
+ */
13
+ subscribeToState?: ToastUploadStateSubscription<Partial<T>>;
14
+ } & T;
15
+ export type ToastUploadItemLink = Pick<LinkProps, 'target' | 'href' | 'onClick' | 'text'>;
16
+ export type UploadActions = {
17
+ onCancel?: () => void;
18
+ onPause?: () => void;
19
+ onRetry?: () => void;
20
+ onContinue?: () => void;
21
+ };
22
+ export type UploadItem = WithStateSubscription<{
23
+ /**
24
+ * Уникальный id элемента
25
+ */
26
+ id?: string;
27
+ /**
28
+ * Название элемента
29
+ */
30
+ title: string;
31
+ /**
32
+ * Статус загрузки
33
+ */
34
+ status: ToastUploadItemStatus;
35
+ /**
36
+ * Описание статуса загрузки
37
+ */
38
+ statusLabel: string;
39
+ /**
40
+ * Процент прогресса
41
+ */
42
+ progress: ProgressBarProps['progress'];
43
+ /**
44
+ * Отображаемый размер файла
45
+ */
46
+ formattedSize: string;
47
+ /**
48
+ * Экшены для управления загрузкой
49
+ */
50
+ actions: UploadActions;
51
+ /**
52
+ * Ссылка на файл
53
+ */
54
+ link?: ToastUploadItemLink;
55
+ }>;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1 @@
1
+ export declare const formatPercent: (value: number) => string;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.formatPercent = void 0;
7
+ const formatPercent = value => `${value}%`;
8
+ exports.formatPercent = formatPercent;
@@ -0,0 +1 @@
1
+ export * from './formatPercent';
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ var __createBinding = void 0 && (void 0).__createBinding || (Object.create ? function (o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = {
8
+ enumerable: true,
9
+ get: function () {
10
+ return m[k];
11
+ }
12
+ };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ } : function (o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ });
19
+ var __exportStar = void 0 && (void 0).__exportStar || function (m, exports) {
20
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
21
+ };
22
+ Object.defineProperty(exports, "__esModule", {
23
+ value: true
24
+ });
25
+ __exportStar(require("./formatPercent"), exports);
@@ -1,6 +1,6 @@
1
1
  .buttonCloseColumnWrapper{
2
- gap:var(--space-toaster-system-event-gap, 8px);
3
- padding:var(--space-toaster-system-event-padding, 8px);
2
+ gap:var(--space-toaster-toast-system-event-gap, 8px);
3
+ padding:var(--space-toaster-toast-system-event-padding, 8px);
4
4
  width:var(--size-toaster-toast-system-event-container, 320px);
5
5
  position:fixed;
6
6
  box-sizing:border-box;
@@ -56,7 +56,7 @@
56
56
  }
57
57
 
58
58
  .containerWithCloseAllButton{
59
- margin-bottom:calc(var(--size-toaster-button-close-column, 40px) + var(--space-toaster-system-event-gap, 8px));
59
+ margin-bottom:calc(var(--size-toaster-button-close-column, 40px) + var(--space-toaster-toast-system-event-gap, 8px));
60
60
  }
61
61
 
62
62
  @media only screen and (max-width: 480px){
@@ -95,8 +95,8 @@
95
95
  max-width:100%;
96
96
  }
97
97
  :global .osThemeSnack.Toastify__toast-container .container-user-action{
98
- padding-bottom:var(--space-toaster-user-action-padding-bottom, 8px);
99
- gap:var(--space-toaster-user-action-gap, 8px);
98
+ padding-bottom:var(--space-toaster-toast-user-action-padding-bottom, 8px);
99
+ gap:var(--space-toaster-toast-user-action-gap, 8px);
100
100
  display:flex;
101
101
  flex-direction:column;
102
102
  align-items:center;
@@ -138,16 +138,16 @@
138
138
  animation-name:osSnackTheme__toast__bounceOutDown;
139
139
  }
140
140
  :global .osThemeSnack.Toastify__toast-container.osThemeSnack__toast-container__system-event{
141
- gap:var(--space-toaster-system-event-gap, 8px);
142
- padding:var(--space-toaster-system-event-padding, 8px);
141
+ gap:var(--space-toaster-toast-system-event-gap, 8px);
142
+ padding:var(--space-toaster-toast-system-event-padding, 8px);
143
143
  width:var(--size-toaster-toast-system-event-container, 320px);
144
144
  display:flex;
145
145
  flex-direction:column;
146
146
  max-width:calc(100vw - 2 * var(--space-toaster-toast-system-event-container-padding, 16px));
147
147
  }
148
148
  :global .osThemeSnack.Toastify__toast-container.osThemeSnack__toast-container__user-action{
149
- padding-bottom:var(--space-toaster-user-action-padding-bottom, 8px);
150
- gap:var(--space-toaster-user-action-gap, 8px);
149
+ padding-bottom:var(--space-toaster-toast-user-action-padding-bottom, 8px);
150
+ gap:var(--space-toaster-toast-user-action-gap, 8px);
151
151
  display:flex;
152
152
  flex-direction:column;
153
153
  align-items:center;
@@ -1,3 +1,4 @@
1
1
  export * from './ToastSystemEvent';
2
2
  export * from './ToastUserAction';
3
3
  export * from './ToasterContainer';
4
+ export * from './ToastUpload';
@@ -24,4 +24,5 @@ Object.defineProperty(exports, "__esModule", {
24
24
  });
25
25
  __exportStar(require("./ToastSystemEvent"), exports);
26
26
  __exportStar(require("./ToastUserAction"), exports);
27
- __exportStar(require("./ToasterContainer"), exports);
27
+ __exportStar(require("./ToasterContainer"), exports);
28
+ __exportStar(require("./ToastUpload"), exports);
@@ -3,11 +3,9 @@ import { ToasterType } from './types';
3
3
  export declare const TOASTER_TYPE: {
4
4
  readonly SystemEvent: "system-event";
5
5
  readonly UserAction: "user-action";
6
+ readonly Upload: "upload";
6
7
  };
7
8
  export declare const TOASTER_CONTAINER_DEFAULT_PROPS: Record<ToasterType, ToasterContainerProps>;
8
- export declare const AUTO_CLOSE_TIME: {
9
- "system-event": number;
10
- "user-action": number;
11
- };
9
+ export declare const AUTO_CLOSE_TIME: Record<ToasterType, number | false>;
12
10
  export declare const TOASTER_ROOT_ID = "toaster-root";
13
11
  export declare const TOASTER_CONTAINER_PREFIX = "toaster-container__";
@@ -6,7 +6,8 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.TOASTER_CONTAINER_PREFIX = exports.TOASTER_ROOT_ID = exports.AUTO_CLOSE_TIME = exports.TOASTER_CONTAINER_DEFAULT_PROPS = exports.TOASTER_TYPE = void 0;
7
7
  exports.TOASTER_TYPE = {
8
8
  SystemEvent: 'system-event',
9
- UserAction: 'user-action'
9
+ UserAction: 'user-action',
10
+ Upload: 'upload'
10
11
  };
11
12
  exports.TOASTER_CONTAINER_DEFAULT_PROPS = {
12
13
  [exports.TOASTER_TYPE.SystemEvent]: {
@@ -20,11 +21,18 @@ exports.TOASTER_CONTAINER_DEFAULT_PROPS = {
20
21
  position: 'bottom-center',
21
22
  displayCloseAllButton: false,
22
23
  type: exports.TOASTER_TYPE.UserAction
24
+ },
25
+ [exports.TOASTER_TYPE.Upload]: {
26
+ limit: 5,
27
+ position: 'bottom-right',
28
+ displayCloseAllButton: true,
29
+ type: exports.TOASTER_TYPE.SystemEvent
23
30
  }
24
31
  };
25
32
  exports.AUTO_CLOSE_TIME = {
26
33
  [exports.TOASTER_TYPE.SystemEvent]: 5000,
27
- [exports.TOASTER_TYPE.UserAction]: 2000
34
+ [exports.TOASTER_TYPE.UserAction]: 2000,
35
+ [exports.TOASTER_TYPE.Upload]: false
28
36
  };
29
37
  exports.TOASTER_ROOT_ID = 'toaster-root';
30
38
  exports.TOASTER_CONTAINER_PREFIX = 'toaster-container__';
@@ -1,8 +1,8 @@
1
1
  .buttonAction{
2
2
  border-radius:var(--radius-toaster-toast-system-event-button, 8px);
3
3
  height:var(--size-toaster-toast-system-event-button, 32px);
4
- padding-left:var(--space-toaster-system-event-padding, 8px);
5
- padding-right:var(--space-toaster-system-event-padding, 8px);
4
+ padding-left:var(--space-toaster-toast-system-event-padding, 8px);
5
+ padding-right:var(--space-toaster-toast-system-event-padding, 8px);
6
6
  font-family:var(--sans-body-m-font-family, SB Sans Interface);
7
7
  font-weight:var(--sans-body-m-font-weight, Regular);
8
8
  line-height:var(--sans-body-m-line-height, 20px);
@@ -2,6 +2,10 @@ import { Id } from 'react-toastify';
2
2
  import { OpenToast, Toaster, UpdateToast } from './types';
3
3
  export declare const openToast: OpenToast;
4
4
  export declare const updateToast: UpdateToast;
5
+ /**
6
+ * Закрытие тостера
7
+ * @function
8
+ */
5
9
  export declare const dismissToast: (params?: Id) => void;
6
10
  export declare const isToastActive: typeof import("react-toastify/dist/core/store").isToastActive;
7
11
  export declare const toaster: Toaster;