@cloud-ru/ds-uikit-product-modal-predefined 1.0.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.
- package/CHANGELOG.md +8 -0
- package/LICENSE +201 -0
- package/README.md +359 -0
- package/dist/cjs/components/DeleteModal/DeleteModal.d.ts +2 -0
- package/dist/cjs/components/DeleteModal/DeleteModal.js +39 -0
- package/dist/cjs/components/DeleteModal/index.d.ts +1 -0
- package/dist/cjs/components/DeleteModal/index.js +17 -0
- package/dist/cjs/components/DeleteModal/styles.module.css +33 -0
- package/dist/cjs/components/RecallModal/RecallModal.d.ts +2 -0
- package/dist/cjs/components/RecallModal/RecallModal.js +37 -0
- package/dist/cjs/components/RecallModal/index.d.ts +1 -0
- package/dist/cjs/components/RecallModal/index.js +17 -0
- package/dist/cjs/components/RecallModal/styles.module.css +33 -0
- package/dist/cjs/components/ReleaseNotes/ReleaseNotes.d.ts +7 -0
- package/dist/cjs/components/ReleaseNotes/ReleaseNotes.js +15 -0
- package/dist/cjs/components/ReleaseNotes/index.d.ts +1 -0
- package/dist/cjs/components/ReleaseNotes/index.js +17 -0
- package/dist/cjs/components/index.d.ts +3 -0
- package/dist/cjs/components/index.js +19 -0
- package/dist/cjs/constants.d.ts +27 -0
- package/dist/cjs/constants.js +30 -0
- package/dist/cjs/helperComponents/DesktopReleaseNotes/DesktopReleaseNotes.d.ts +2 -0
- package/dist/cjs/helperComponents/DesktopReleaseNotes/DesktopReleaseNotes.js +21 -0
- package/dist/cjs/helperComponents/DesktopReleaseNotes/index.d.ts +1 -0
- package/dist/cjs/helperComponents/DesktopReleaseNotes/index.js +17 -0
- package/dist/cjs/helperComponents/DesktopReleaseNotes/styles.module.css +19 -0
- package/dist/cjs/helperComponents/InputConfirm/InputConfirm.d.ts +48 -0
- package/dist/cjs/helperComponents/InputConfirm/InputConfirm.js +15 -0
- package/dist/cjs/helperComponents/InputConfirm/index.d.ts +1 -0
- package/dist/cjs/helperComponents/InputConfirm/index.js +17 -0
- package/dist/cjs/helperComponents/InputConfirm/styles.module.css +38 -0
- package/dist/cjs/helperComponents/MobileReleaseNotes/MobileReleaseNotes.d.ts +2 -0
- package/dist/cjs/helperComponents/MobileReleaseNotes/MobileReleaseNotes.js +26 -0
- package/dist/cjs/helperComponents/MobileReleaseNotes/index.d.ts +1 -0
- package/dist/cjs/helperComponents/MobileReleaseNotes/index.js +17 -0
- package/dist/cjs/helperComponents/NoteItem/NoteItem.d.ts +6 -0
- package/dist/cjs/helperComponents/NoteItem/NoteItem.js +20 -0
- package/dist/cjs/helperComponents/NoteItem/index.d.ts +1 -0
- package/dist/cjs/helperComponents/NoteItem/index.js +17 -0
- package/dist/cjs/helperComponents/NoteItem/styles.module.css +53 -0
- package/dist/cjs/helperComponents/ReleaseNotesContent/ReleaseNotesContent.d.ts +28 -0
- package/dist/cjs/helperComponents/ReleaseNotesContent/ReleaseNotesContent.js +30 -0
- package/dist/cjs/helperComponents/ReleaseNotesContent/index.d.ts +1 -0
- package/dist/cjs/helperComponents/ReleaseNotesContent/index.js +17 -0
- package/dist/cjs/helperComponents/ReleaseNotesContent/styles.module.css +40 -0
- package/dist/cjs/helperComponents/ReleaseNotesFooter/ReleaseNotesFooter.d.ts +25 -0
- package/dist/cjs/helperComponents/ReleaseNotesFooter/ReleaseNotesFooter.js +17 -0
- package/dist/cjs/helperComponents/ReleaseNotesFooter/index.d.ts +1 -0
- package/dist/cjs/helperComponents/ReleaseNotesFooter/index.js +17 -0
- package/dist/cjs/helperComponents/ReleaseNotesFooter/styles.module.css +27 -0
- package/dist/cjs/helperComponents/index.d.ts +6 -0
- package/dist/cjs/helperComponents/index.js +22 -0
- package/dist/cjs/hooks.d.ts +26 -0
- package/dist/cjs/hooks.js +59 -0
- package/dist/cjs/index.d.ts +4 -0
- package/dist/cjs/index.js +20 -0
- package/dist/cjs/locale/index.d.ts +143 -0
- package/dist/cjs/locale/index.js +76 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/style.css +243 -0
- package/dist/cjs/types.d.ts +67 -0
- package/dist/cjs/types.js +2 -0
- package/dist/esm/components/DeleteModal/DeleteModal.d.ts +2 -0
- package/dist/esm/components/DeleteModal/DeleteModal.js +33 -0
- package/dist/esm/components/DeleteModal/index.d.ts +1 -0
- package/dist/esm/components/DeleteModal/index.js +1 -0
- package/dist/esm/components/DeleteModal/styles.module.css +33 -0
- package/dist/esm/components/RecallModal/RecallModal.d.ts +2 -0
- package/dist/esm/components/RecallModal/RecallModal.js +31 -0
- package/dist/esm/components/RecallModal/index.d.ts +1 -0
- package/dist/esm/components/RecallModal/index.js +1 -0
- package/dist/esm/components/RecallModal/styles.module.css +33 -0
- package/dist/esm/components/ReleaseNotes/ReleaseNotes.d.ts +7 -0
- package/dist/esm/components/ReleaseNotes/ReleaseNotes.js +12 -0
- package/dist/esm/components/ReleaseNotes/index.d.ts +1 -0
- package/dist/esm/components/ReleaseNotes/index.js +1 -0
- package/dist/esm/components/index.d.ts +3 -0
- package/dist/esm/components/index.js +3 -0
- package/dist/esm/constants.d.ts +27 -0
- package/dist/esm/constants.js +27 -0
- package/dist/esm/helperComponents/DesktopReleaseNotes/DesktopReleaseNotes.d.ts +2 -0
- package/dist/esm/helperComponents/DesktopReleaseNotes/DesktopReleaseNotes.js +15 -0
- package/dist/esm/helperComponents/DesktopReleaseNotes/index.d.ts +1 -0
- package/dist/esm/helperComponents/DesktopReleaseNotes/index.js +1 -0
- package/dist/esm/helperComponents/DesktopReleaseNotes/styles.module.css +19 -0
- package/dist/esm/helperComponents/InputConfirm/InputConfirm.d.ts +48 -0
- package/dist/esm/helperComponents/InputConfirm/InputConfirm.js +9 -0
- package/dist/esm/helperComponents/InputConfirm/index.d.ts +1 -0
- package/dist/esm/helperComponents/InputConfirm/index.js +1 -0
- package/dist/esm/helperComponents/InputConfirm/styles.module.css +38 -0
- package/dist/esm/helperComponents/MobileReleaseNotes/MobileReleaseNotes.d.ts +2 -0
- package/dist/esm/helperComponents/MobileReleaseNotes/MobileReleaseNotes.js +23 -0
- package/dist/esm/helperComponents/MobileReleaseNotes/index.d.ts +1 -0
- package/dist/esm/helperComponents/MobileReleaseNotes/index.js +1 -0
- package/dist/esm/helperComponents/NoteItem/NoteItem.d.ts +6 -0
- package/dist/esm/helperComponents/NoteItem/NoteItem.js +14 -0
- package/dist/esm/helperComponents/NoteItem/index.d.ts +1 -0
- package/dist/esm/helperComponents/NoteItem/index.js +1 -0
- package/dist/esm/helperComponents/NoteItem/styles.module.css +53 -0
- package/dist/esm/helperComponents/ReleaseNotesContent/ReleaseNotesContent.d.ts +28 -0
- package/dist/esm/helperComponents/ReleaseNotesContent/ReleaseNotesContent.js +24 -0
- package/dist/esm/helperComponents/ReleaseNotesContent/index.d.ts +1 -0
- package/dist/esm/helperComponents/ReleaseNotesContent/index.js +1 -0
- package/dist/esm/helperComponents/ReleaseNotesContent/styles.module.css +40 -0
- package/dist/esm/helperComponents/ReleaseNotesFooter/ReleaseNotesFooter.d.ts +25 -0
- package/dist/esm/helperComponents/ReleaseNotesFooter/ReleaseNotesFooter.js +11 -0
- package/dist/esm/helperComponents/ReleaseNotesFooter/index.d.ts +1 -0
- package/dist/esm/helperComponents/ReleaseNotesFooter/index.js +1 -0
- package/dist/esm/helperComponents/ReleaseNotesFooter/styles.module.css +27 -0
- package/dist/esm/helperComponents/index.d.ts +6 -0
- package/dist/esm/helperComponents/index.js +6 -0
- package/dist/esm/hooks.d.ts +26 -0
- package/dist/esm/hooks.js +55 -0
- package/dist/esm/index.d.ts +4 -0
- package/dist/esm/index.js +4 -0
- package/dist/esm/locale/index.d.ts +143 -0
- package/dist/esm/locale/index.js +73 -0
- package/dist/esm/style.css +243 -0
- package/dist/esm/types.d.ts +67 -0
- package/dist/esm/types.js +1 -0
- package/dist/tsconfig.cjs.tsbuildinfo +1 -0
- package/dist/tsconfig.esm.tsbuildinfo +1 -0
- package/package.json +63 -0
- package/src/components/DeleteModal/DeleteModal.tsx +116 -0
- package/src/components/DeleteModal/index.ts +1 -0
- package/src/components/DeleteModal/styles.module.scss +37 -0
- package/src/components/RecallModal/RecallModal.tsx +111 -0
- package/src/components/RecallModal/index.ts +1 -0
- package/src/components/RecallModal/styles.module.scss +37 -0
- package/src/components/ReleaseNotes/ReleaseNotes.tsx +15 -0
- package/src/components/ReleaseNotes/index.ts +1 -0
- package/src/components/index.ts +3 -0
- package/src/constants.ts +29 -0
- package/src/helperComponents/DesktopReleaseNotes/DesktopReleaseNotes.tsx +85 -0
- package/src/helperComponents/DesktopReleaseNotes/index.ts +1 -0
- package/src/helperComponents/DesktopReleaseNotes/styles.module.scss +24 -0
- package/src/helperComponents/InputConfirm/InputConfirm.tsx +72 -0
- package/src/helperComponents/InputConfirm/index.ts +1 -0
- package/src/helperComponents/InputConfirm/styles.module.scss +30 -0
- package/src/helperComponents/MobileReleaseNotes/MobileReleaseNotes.tsx +88 -0
- package/src/helperComponents/MobileReleaseNotes/index.ts +1 -0
- package/src/helperComponents/NoteItem/NoteItem.tsx +58 -0
- package/src/helperComponents/NoteItem/index.ts +1 -0
- package/src/helperComponents/NoteItem/styles.module.scss +54 -0
- package/src/helperComponents/ReleaseNotesContent/ReleaseNotesContent.tsx +119 -0
- package/src/helperComponents/ReleaseNotesContent/index.ts +1 -0
- package/src/helperComponents/ReleaseNotesContent/styles.module.scss +45 -0
- package/src/helperComponents/ReleaseNotesFooter/ReleaseNotesFooter.tsx +84 -0
- package/src/helperComponents/ReleaseNotesFooter/index.ts +1 -0
- package/src/helperComponents/ReleaseNotesFooter/styles.module.scss +25 -0
- package/src/helperComponents/index.ts +6 -0
- package/src/hooks.ts +89 -0
- package/src/index.ts +4 -0
- package/src/locale/index.ts +77 -0
- package/src/types.ts +80 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { RecallModalProps } from '../../types';
|
|
2
|
+
export declare function RecallModal({ open, onClose, mode, closeOnPopstate, titleTooltip, onRecall, loading, content, confirmable, confirmText, hideConfirmCopyButton, subtitle, ...rest }: RecallModalProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.RecallModal = RecallModal;
|
|
7
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
+
const button_1 = require("@cloud-ru/ds-button");
|
|
9
|
+
const modal_1 = require("@cloud-ru/ds-modal");
|
|
10
|
+
const tooltip_1 = require("@cloud-ru/ds-tooltip");
|
|
11
|
+
const react_1 = require("react");
|
|
12
|
+
const constants_1 = require("../../constants");
|
|
13
|
+
const helperComponents_1 = require("../../helperComponents");
|
|
14
|
+
const hooks_1 = require("../../hooks");
|
|
15
|
+
const locale_1 = require("../../locale");
|
|
16
|
+
const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
|
|
17
|
+
function RecallModal({ open, onClose, mode, closeOnPopstate, titleTooltip, onRecall, loading, content, confirmable = false, confirmText, hideConfirmCopyButton, subtitle, ...rest }) {
|
|
18
|
+
const { t } = locale_1.modalPredefinedLocale.useTranslations();
|
|
19
|
+
const inputRef = (0, react_1.useRef)(null);
|
|
20
|
+
const { value, error, handleChange, reset, validate } = (0, hooks_1.useTextFieldValidation)({
|
|
21
|
+
target: confirmable ? confirmText : undefined,
|
|
22
|
+
errorText: t('confirm.error'),
|
|
23
|
+
});
|
|
24
|
+
const shouldShowConfirm = Boolean(confirmable && confirmText);
|
|
25
|
+
const handleClose = () => {
|
|
26
|
+
reset();
|
|
27
|
+
onClose();
|
|
28
|
+
};
|
|
29
|
+
const handleApproveClick = () => {
|
|
30
|
+
if (!validate()) {
|
|
31
|
+
inputRef.current?.focus();
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
onRecall(handleClose);
|
|
35
|
+
};
|
|
36
|
+
return ((0, jsx_runtime_1.jsxs)(modal_1.ModalCustom, { open: open, onClose: handleClose, mode: mode, closeOnPopstate: closeOnPopstate, width: modal_1.WIDTH.S, "data-test-id": constants_1.TEST_IDS.recallModal, "data-confirmable": confirmable || undefined, ...rest, children: [(0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.safeAreaTop }), (0, jsx_runtime_1.jsx)(modal_1.ModalCustom.Header, { title: t('recallModal.title'), subtitle: subtitle, slotAfterTitle: titleTooltip ? (0, jsx_runtime_1.jsx)(tooltip_1.QuestionTooltip, { size: 's', tip: titleTooltip }) : undefined }), (0, jsx_runtime_1.jsx)(modal_1.ModalCustom.Body, { className: styles_module_scss_1.default.body, content: (0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.content, children: [content ?? t('recallModal.content'), shouldShowConfirm && ((0, jsx_runtime_1.jsx)(helperComponents_1.InputConfirm, { ref: inputRef, confirmText: confirmText ?? '', confirmLabel: t('recallModal.confirmLabel'), hideConfirmCopyButton: hideConfirmCopyButton, value: value, error: error, size: 'l', copyLineAlign: 'start', placeholder: t('confirm.namePlaceholder'), onChange: handleChange }))] }) }), (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.safeAreaBottom }), (0, jsx_runtime_1.jsx)(modal_1.ModalCustom.Footer, { children: (0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.footer, children: [(0, jsx_runtime_1.jsx)(button_1.Button, { view: button_1.VIEW.Outline, appearance: button_1.APPEARANCE.Neutral, label: t('recallModal.cancel'), onClick: handleClose, "data-test-id": constants_1.TEST_IDS.cancelButton }), (0, jsx_runtime_1.jsx)(button_1.Button, { view: button_1.VIEW.Filled, appearance: button_1.APPEARANCE.Critical, label: t('recallModal.approve'), loading: loading, onClick: handleApproveClick, "data-test-id": constants_1.TEST_IDS.approveButton })] }) })] }));
|
|
37
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './RecallModal';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./RecallModal"), exports);
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
.safeAreaTop{
|
|
2
|
+
display:flex;
|
|
3
|
+
flex-direction:column;
|
|
4
|
+
align-items:flex-start;
|
|
5
|
+
align-self:stretch;
|
|
6
|
+
padding-top:var(--sn-modal-anatomy-container-safeArea-paddingTop, var(--sn-density-spacing-interval-l, var(--sn-primitive-dimension-24, 24px)));
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.safeAreaBottom{
|
|
10
|
+
display:flex;
|
|
11
|
+
flex-direction:column;
|
|
12
|
+
align-items:flex-start;
|
|
13
|
+
align-self:stretch;
|
|
14
|
+
padding-bottom:var(--sn-modal-anatomy-container-safeArea-paddingBottom, var(--sn-density-spacing-interval-s, var(--sn-primitive-dimension-8, 8px)));
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.body{
|
|
18
|
+
min-height:auto;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.content{
|
|
22
|
+
display:flex;
|
|
23
|
+
flex-direction:column;
|
|
24
|
+
row-gap:var(--sn-primitive-dimension-16, 16px);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.footer{
|
|
28
|
+
display:flex;
|
|
29
|
+
-moz-column-gap:var(--sn-primitive-dimension-8, 8px);
|
|
30
|
+
column-gap:var(--sn-primitive-dimension-8, 8px);
|
|
31
|
+
justify-content:flex-end;
|
|
32
|
+
width:100%;
|
|
33
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ReleaseNotesProps } from '../../types';
|
|
2
|
+
/**
|
|
3
|
+
* Адаптивный release-notes: на `mobile` — bottom sheet, иначе — модальное окно. Поверхность выбирается
|
|
4
|
+
* по `useAdaptiveLayout()` из `@cloud-ru/ds-adaptive` и пропом не задаётся. Форс раскладки — через
|
|
5
|
+
* `withLayoutType(ReleaseNotes, 'mobile')` либо `AdaptiveProvider` в поддереве.
|
|
6
|
+
*/
|
|
7
|
+
export declare function ReleaseNotes(props: ReleaseNotesProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ReleaseNotes = ReleaseNotes;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const adaptive_1 = require("@cloud-ru/ds-adaptive");
|
|
6
|
+
const helperComponents_1 = require("../../helperComponents");
|
|
7
|
+
/**
|
|
8
|
+
* Адаптивный release-notes: на `mobile` — bottom sheet, иначе — модальное окно. Поверхность выбирается
|
|
9
|
+
* по `useAdaptiveLayout()` из `@cloud-ru/ds-adaptive` и пропом не задаётся. Форс раскладки — через
|
|
10
|
+
* `withLayoutType(ReleaseNotes, 'mobile')` либо `AdaptiveProvider` в поддереве.
|
|
11
|
+
*/
|
|
12
|
+
function ReleaseNotes(props) {
|
|
13
|
+
const { layoutType } = (0, adaptive_1.useAdaptiveLayout)();
|
|
14
|
+
return (0, adaptive_1.isMobileLayout)(layoutType) ? (0, jsx_runtime_1.jsx)(helperComponents_1.MobileReleaseNotes, { ...props }) : (0, jsx_runtime_1.jsx)(helperComponents_1.DesktopReleaseNotes, { ...props });
|
|
15
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './ReleaseNotes';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./ReleaseNotes"), exports);
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./DeleteModal"), exports);
|
|
18
|
+
__exportStar(require("./RecallModal"), exports);
|
|
19
|
+
__exportStar(require("./ReleaseNotes"), exports);
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export declare const CONTENT_STATE: {
|
|
2
|
+
readonly Data: "data";
|
|
3
|
+
readonly NoData: "noData";
|
|
4
|
+
readonly Error: "error";
|
|
5
|
+
};
|
|
6
|
+
export declare const CONFIRM_TEXT_VARIANT: {
|
|
7
|
+
readonly Name: "name";
|
|
8
|
+
readonly Text: "text";
|
|
9
|
+
};
|
|
10
|
+
export declare const TEST_IDS: {
|
|
11
|
+
readonly deleteModal: "delete-modal";
|
|
12
|
+
readonly recallModal: "recall-modal";
|
|
13
|
+
readonly releaseNotes: "release-notes";
|
|
14
|
+
readonly approveButton: "modal-predefined__approve-button";
|
|
15
|
+
readonly cancelButton: "modal-predefined__cancel-button";
|
|
16
|
+
readonly confirmInput: "modal-predefined__confirm-input";
|
|
17
|
+
readonly confirmCopyButton: "modal-predefined__confirm-copy-button";
|
|
18
|
+
readonly releaseNotesItem: "modal-predefined__release-notes-item";
|
|
19
|
+
readonly releaseNotesMedia: "modal-predefined__release-notes-media";
|
|
20
|
+
readonly releaseNotesVideo: "modal-predefined__release-notes-video";
|
|
21
|
+
readonly releaseNotesError: "modal-predefined__release-notes-error";
|
|
22
|
+
readonly releaseNotesNoData: "modal-predefined__release-notes-no-data";
|
|
23
|
+
readonly releaseNotesRetryButton: "modal-predefined__release-notes-retry-button";
|
|
24
|
+
readonly releaseNotesReadLaterButton: "modal-predefined__release-notes-read-later-button";
|
|
25
|
+
readonly releaseNotesPrevButton: "modal-predefined__release-notes-prev-button";
|
|
26
|
+
readonly releaseNotesNextButton: "modal-predefined__release-notes-next-button";
|
|
27
|
+
};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TEST_IDS = exports.CONFIRM_TEXT_VARIANT = exports.CONTENT_STATE = void 0;
|
|
4
|
+
exports.CONTENT_STATE = {
|
|
5
|
+
Data: 'data',
|
|
6
|
+
NoData: 'noData',
|
|
7
|
+
Error: 'error',
|
|
8
|
+
};
|
|
9
|
+
exports.CONFIRM_TEXT_VARIANT = {
|
|
10
|
+
Name: 'name',
|
|
11
|
+
Text: 'text',
|
|
12
|
+
};
|
|
13
|
+
exports.TEST_IDS = {
|
|
14
|
+
deleteModal: 'delete-modal',
|
|
15
|
+
recallModal: 'recall-modal',
|
|
16
|
+
releaseNotes: 'release-notes',
|
|
17
|
+
approveButton: 'modal-predefined__approve-button',
|
|
18
|
+
cancelButton: 'modal-predefined__cancel-button',
|
|
19
|
+
confirmInput: 'modal-predefined__confirm-input',
|
|
20
|
+
confirmCopyButton: 'modal-predefined__confirm-copy-button',
|
|
21
|
+
releaseNotesItem: 'modal-predefined__release-notes-item',
|
|
22
|
+
releaseNotesMedia: 'modal-predefined__release-notes-media',
|
|
23
|
+
releaseNotesVideo: 'modal-predefined__release-notes-video',
|
|
24
|
+
releaseNotesError: 'modal-predefined__release-notes-error',
|
|
25
|
+
releaseNotesNoData: 'modal-predefined__release-notes-no-data',
|
|
26
|
+
releaseNotesRetryButton: 'modal-predefined__release-notes-retry-button',
|
|
27
|
+
releaseNotesReadLaterButton: 'modal-predefined__release-notes-read-later-button',
|
|
28
|
+
releaseNotesPrevButton: 'modal-predefined__release-notes-prev-button',
|
|
29
|
+
releaseNotesNextButton: 'modal-predefined__release-notes-next-button',
|
|
30
|
+
};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { ReleaseNotesProps } from '../../types';
|
|
2
|
+
export declare function DesktopReleaseNotes({ open, onClose, closeOnPopstate, contentState, items, loading, onReadLaterClick, onDataErrorRetryClick, onSlideChange, ...rest }: ReleaseNotesProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.DesktopReleaseNotes = DesktopReleaseNotes;
|
|
7
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
+
const modal_1 = require("@cloud-ru/ds-modal");
|
|
9
|
+
const utils_1 = require("@cloud-ru/ds-utils");
|
|
10
|
+
const constants_1 = require("../../constants");
|
|
11
|
+
const hooks_1 = require("../../hooks");
|
|
12
|
+
const locale_1 = require("../../locale");
|
|
13
|
+
const ReleaseNotesContent_1 = require("../ReleaseNotesContent");
|
|
14
|
+
const ReleaseNotesFooter_1 = require("../ReleaseNotesFooter");
|
|
15
|
+
const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
|
|
16
|
+
function DesktopReleaseNotes({ open, onClose, closeOnPopstate, contentState = constants_1.CONTENT_STATE.Data, items, loading, onReadLaterClick, onDataErrorRetryClick, onSlideChange, ...rest }) {
|
|
17
|
+
const { t } = locale_1.modalPredefinedLocale.useTranslations();
|
|
18
|
+
const { pageIndex, readablePageNumber, setPage, handleClose, handleReadLaterClick, handleNextPageClick, handlePrevPageClick, } = (0, hooks_1.useReleaseNotesNavigation)({ onClose, onReadLaterClick, onSlideChange });
|
|
19
|
+
const shouldShowFooter = contentState === constants_1.CONTENT_STATE.Data && (loading || items.length > 0);
|
|
20
|
+
return ((0, jsx_runtime_1.jsxs)(modal_1.ModalCustom, { open: open, onClose: handleClose, closeOnPopstate: closeOnPopstate, width: modal_1.WIDTH.M, "data-content-state": contentState, "data-surface": 'modal', ...(0, utils_1.extractSupportProps)(rest), children: [(0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.safeAreaTop }), (0, jsx_runtime_1.jsx)(modal_1.ModalCustom.Header, { title: t('releaseNotes.title') }), (0, jsx_runtime_1.jsx)(modal_1.ModalCustom.Body, { className: styles_module_scss_1.default.body, content: (0, jsx_runtime_1.jsx)(ReleaseNotesContent_1.ReleaseNotesContent, { contentState: contentState, items: items, loading: loading, pageIndex: pageIndex, surface: 'modal', noDataTitle: t('releaseNotes.noDataTitle'), noDataDescription: t('releaseNotes.noDataDescription'), errorTitle: t('releaseNotes.errorTitle'), errorDescription: t('releaseNotes.errorDescription'), retryLabel: t('releaseNotes.retry'), onPageChange: setPage, onDataErrorRetryClick: onDataErrorRetryClick }) }), (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.safeAreaBottom }), shouldShowFooter && ((0, jsx_runtime_1.jsx)(modal_1.ModalCustom.Footer, { children: (0, jsx_runtime_1.jsx)(ReleaseNotesFooter_1.ReleaseNotesFooter, { surface: 'modal', total: items.length, pageIndex: pageIndex, readablePageNumber: readablePageNumber, counterLabel: t('releaseNotes.counter', { page: readablePageNumber, total: items.length }), readLaterLabel: t('releaseNotes.readLater'), onReadLaterClick: handleReadLaterClick, onPrevPageClick: handlePrevPageClick, onNextPageClick: () => handleNextPageClick(items.length) }) }))] }));
|
|
21
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './DesktopReleaseNotes';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./DesktopReleaseNotes"), exports);
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
.safeAreaTop{
|
|
2
|
+
display:flex;
|
|
3
|
+
flex-direction:column;
|
|
4
|
+
align-items:flex-start;
|
|
5
|
+
align-self:stretch;
|
|
6
|
+
padding-top:var(--sn-modal-anatomy-container-safeArea-paddingTop, var(--sn-density-spacing-interval-l, var(--sn-primitive-dimension-24, 24px)));
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.safeAreaBottom{
|
|
10
|
+
display:flex;
|
|
11
|
+
flex-direction:column;
|
|
12
|
+
align-items:flex-start;
|
|
13
|
+
align-self:stretch;
|
|
14
|
+
padding-bottom:var(--sn-modal-anatomy-container-safeArea-paddingBottom, var(--sn-density-spacing-interval-s, var(--sn-primitive-dimension-8, 8px)));
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.body{
|
|
18
|
+
min-height:calc(6 * var(--sn-primitive-dimension-64, 64px));
|
|
19
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { FieldComboProps } from '@cloud-ru/ds-fields';
|
|
2
|
+
import { WithSupportProps } from '@cloud-ru/ds-utils';
|
|
3
|
+
export type InputConfirmProps = WithSupportProps<{
|
|
4
|
+
/** Текст, который нужно ввести для подтверждения */
|
|
5
|
+
confirmText: string;
|
|
6
|
+
/** Инструкция над текстом подтверждения */
|
|
7
|
+
confirmLabel?: string;
|
|
8
|
+
/** Скрыть кнопку копирования */
|
|
9
|
+
hideConfirmCopyButton?: boolean;
|
|
10
|
+
/** Значение поля */
|
|
11
|
+
value: string;
|
|
12
|
+
/** Текст ошибки */
|
|
13
|
+
error?: string;
|
|
14
|
+
/** Label поля */
|
|
15
|
+
label?: string;
|
|
16
|
+
/** Размер поля */
|
|
17
|
+
size?: FieldComboProps['size'];
|
|
18
|
+
/** Выравнивание copy-line */
|
|
19
|
+
copyLineAlign?: 'start' | 'space-between';
|
|
20
|
+
/** Placeholder поля */
|
|
21
|
+
placeholder: string;
|
|
22
|
+
/** Колбэк изменения значения */
|
|
23
|
+
onChange(value: string): void;
|
|
24
|
+
}>;
|
|
25
|
+
export declare const InputConfirm: import("react").ForwardRefExoticComponent<{
|
|
26
|
+
'data-test-id'?: string;
|
|
27
|
+
} & import("react").AriaAttributes & {
|
|
28
|
+
/** Текст, который нужно ввести для подтверждения */
|
|
29
|
+
confirmText: string;
|
|
30
|
+
/** Инструкция над текстом подтверждения */
|
|
31
|
+
confirmLabel?: string;
|
|
32
|
+
/** Скрыть кнопку копирования */
|
|
33
|
+
hideConfirmCopyButton?: boolean;
|
|
34
|
+
/** Значение поля */
|
|
35
|
+
value: string;
|
|
36
|
+
/** Текст ошибки */
|
|
37
|
+
error?: string;
|
|
38
|
+
/** Label поля */
|
|
39
|
+
label?: string;
|
|
40
|
+
/** Размер поля */
|
|
41
|
+
size?: FieldComboProps["size"];
|
|
42
|
+
/** Выравнивание copy-line */
|
|
43
|
+
copyLineAlign?: "start" | "space-between";
|
|
44
|
+
/** Placeholder поля */
|
|
45
|
+
placeholder: string;
|
|
46
|
+
/** Колбэк изменения значения */
|
|
47
|
+
onChange(value: string): void;
|
|
48
|
+
} & import("react").RefAttributes<HTMLInputElement>>;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.InputConfirm = void 0;
|
|
7
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
+
const fields_1 = require("@cloud-ru/ds-fields");
|
|
9
|
+
const uikit_product_copy_1 = require("@cloud-ru/ds-uikit-product-copy");
|
|
10
|
+
const react_1 = require("react");
|
|
11
|
+
const constants_1 = require("../../constants");
|
|
12
|
+
const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
|
|
13
|
+
exports.InputConfirm = (0, react_1.forwardRef)(function InputConfirm({ confirmText, confirmLabel, hideConfirmCopyButton, value, error, label, size = 'm', copyLineAlign = 'space-between', placeholder, onChange, ...rest }, ref) {
|
|
14
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.root, children: [confirmLabel && (0, jsx_runtime_1.jsx)("span", { className: styles_module_scss_1.default.confirmLabel, children: confirmLabel }), (0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.confirmText, "data-align": copyLineAlign, children: [(0, jsx_runtime_1.jsx)("span", { className: styles_module_scss_1.default.confirmValue, children: confirmText }), !hideConfirmCopyButton && (0, jsx_runtime_1.jsx)(uikit_product_copy_1.CopyButton, { valueToCopy: confirmText, "data-test-id": constants_1.TEST_IDS.confirmCopyButton })] }), (0, jsx_runtime_1.jsx)(fields_1.FieldCombo, { ...rest, ref: ref, inputMode: 'text', label: label, required: Boolean(label), size: size, placeholder: placeholder, value: value, onChange: onChange, hint: error, validationState: error ? fields_1.VALIDATION_STATE.Error : fields_1.VALIDATION_STATE.Default, "data-test-id": constants_1.TEST_IDS.confirmInput })] }));
|
|
15
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './InputConfirm';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./InputConfirm"), exports);
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
.root{
|
|
2
|
+
display:flex;
|
|
3
|
+
flex-direction:column;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
.confirmText{
|
|
7
|
+
display:flex;
|
|
8
|
+
-moz-column-gap:var(--sn-primitive-dimension-8, 8px);
|
|
9
|
+
column-gap:var(--sn-primitive-dimension-8, 8px);
|
|
10
|
+
align-items:center;
|
|
11
|
+
justify-content:space-between;
|
|
12
|
+
margin-bottom:var(--sn-primitive-dimension-8, 8px);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.confirmText[data-align=start]{
|
|
16
|
+
-moz-column-gap:var(--sn-primitive-dimension-4, 4px);
|
|
17
|
+
column-gap:var(--sn-primitive-dimension-4, 4px);
|
|
18
|
+
justify-content:flex-start;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.confirmLabel{
|
|
22
|
+
font-family:var(--sn-regular-body-m-fontFamily, var(--sn-brand-font-fontFamily-regular-body, var(--sn-primitive-fontFamily-brandA-sans, SB Sans Interface)));
|
|
23
|
+
font-weight:var(--sn-regular-body-m-fontWeight, var(--sn-theme-typography-fontWeight-regular-body-m, var(--sn-brand-font-fontWeight-light-regular-body-m, var(--sn-primitive-font-fontWeightValue-400, 400))));
|
|
24
|
+
line-height:var(--sn-regular-body-m-lineHeight, var(--sn-density-typography-roleBody-lineHeightM, var(--sn-primitive-font-lineHeight-by16, 24px)));
|
|
25
|
+
font-size:var(--sn-regular-body-m-fontSize, var(--sn-density-typography-roleBody-fontSizeM, var(--sn-primitive-font-fontSize-16, 16px)));
|
|
26
|
+
letter-spacing:var(--sn-regular-body-m-letterSpacing, var(--sn-primitive-font-letterSpacing-m, 0.1px));
|
|
27
|
+
paragraph-spacing:var(--sn-regular-body-m-paragraphSpacing, var(--sn-primitive-font-paragraphSpacing-byFontSize14, 7px));
|
|
28
|
+
color:var(--sn-theme-color-available-version-textSecondary, var(--sn-brand-color-text-version-secondary, rgba(65, 66, 78, 0.8)));
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.confirmValue{
|
|
32
|
+
font-family:var(--sn-regular-body-m-fontFamily, var(--sn-brand-font-fontFamily-regular-body, var(--sn-primitive-fontFamily-brandA-sans, SB Sans Interface)));
|
|
33
|
+
font-weight:var(--sn-regular-body-m-fontWeight, var(--sn-theme-typography-fontWeight-regular-body-m, var(--sn-brand-font-fontWeight-light-regular-body-m, var(--sn-primitive-font-fontWeightValue-400, 400))));
|
|
34
|
+
line-height:var(--sn-regular-body-m-lineHeight, var(--sn-density-typography-roleBody-lineHeightM, var(--sn-primitive-font-lineHeight-by16, 24px)));
|
|
35
|
+
font-size:var(--sn-regular-body-m-fontSize, var(--sn-density-typography-roleBody-fontSizeM, var(--sn-primitive-font-fontSize-16, 16px)));
|
|
36
|
+
letter-spacing:var(--sn-regular-body-m-letterSpacing, var(--sn-primitive-font-letterSpacing-m, 0.1px));
|
|
37
|
+
paragraph-spacing:var(--sn-regular-body-m-paragraphSpacing, var(--sn-primitive-font-paragraphSpacing-byFontSize14, 7px));
|
|
38
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { ReleaseNotesProps } from '../../types';
|
|
2
|
+
export declare function MobileReleaseNotes({ open, onClose, closeOnPopstate, contentState, items, loading, onReadLaterClick, onDataErrorRetryClick, onSlideChange, readLaterButtonProps, ...rest }: ReleaseNotesProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MobileReleaseNotes = MobileReleaseNotes;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const bottom_sheet_1 = require("@cloud-ru/ds-bottom-sheet");
|
|
6
|
+
const utils_1 = require("@cloud-ru/ds-utils");
|
|
7
|
+
const constants_1 = require("../../constants");
|
|
8
|
+
const hooks_1 = require("../../hooks");
|
|
9
|
+
const locale_1 = require("../../locale");
|
|
10
|
+
const ReleaseNotesContent_1 = require("../ReleaseNotesContent");
|
|
11
|
+
const ReleaseNotesFooter_1 = require("../ReleaseNotesFooter");
|
|
12
|
+
function MobileReleaseNotes({ open, onClose, closeOnPopstate, contentState = constants_1.CONTENT_STATE.Data, items, loading, onReadLaterClick, onDataErrorRetryClick, onSlideChange, readLaterButtonProps, ...rest }) {
|
|
13
|
+
const { t } = locale_1.modalPredefinedLocale.useTranslations();
|
|
14
|
+
const { pageIndex, readablePageNumber, setPage, handleClose, handleReadLaterClick, handleNextPageClick, handlePrevPageClick, } = (0, hooks_1.useReleaseNotesNavigation)({ onClose, onReadLaterClick, onSlideChange });
|
|
15
|
+
const { onClick: onReadLaterButtonClick, ...readLaterButtonRest } = readLaterButtonProps ?? {};
|
|
16
|
+
const shouldShowFooter = contentState === constants_1.CONTENT_STATE.Data && (loading || items.length > 0);
|
|
17
|
+
const handleReadLaterButtonClick = (event) => {
|
|
18
|
+
onReadLaterButtonClick?.(event);
|
|
19
|
+
handleReadLaterClick();
|
|
20
|
+
};
|
|
21
|
+
return ((0, jsx_runtime_1.jsx)(bottom_sheet_1.BottomSheet
|
|
22
|
+
// Дефолт `withDividers` сменился на `true` — здесь вид сохраняем прежним.
|
|
23
|
+
, {
|
|
24
|
+
// Дефолт `withDividers` сменился на `true` — здесь вид сохраняем прежним.
|
|
25
|
+
withDividers: false, open: open, onClose: handleClose, closeOnPopstate: closeOnPopstate, title: t('releaseNotes.title'), content: (0, jsx_runtime_1.jsx)(ReleaseNotesContent_1.ReleaseNotesContent, { contentState: contentState, items: items, loading: loading, pageIndex: pageIndex, surface: 'bottomSheet', noDataTitle: t('releaseNotes.noDataTitle'), noDataDescription: t('releaseNotes.noDataDescription'), errorTitle: t('releaseNotes.errorTitle'), errorDescription: t('releaseNotes.errorDescription'), retryLabel: t('releaseNotes.retry'), onPageChange: setPage, onDataErrorRetryClick: onDataErrorRetryClick }), footer: shouldShowFooter ? ((0, jsx_runtime_1.jsx)(ReleaseNotesFooter_1.ReleaseNotesFooter, { surface: 'bottomSheet', total: items.length, pageIndex: pageIndex, readablePageNumber: readablePageNumber, counterLabel: t('releaseNotes.counter', { page: readablePageNumber, total: items.length }), readLaterLabel: t('releaseNotes.readLater'), onReadLaterClick: handleReadLaterButtonClick, onPrevPageClick: handlePrevPageClick, onNextPageClick: () => handleNextPageClick(items.length), readLaterButtonProps: readLaterButtonRest })) : undefined, "data-content-state": contentState, "data-surface": 'bottomSheet', ...(0, utils_1.extractSupportProps)(rest) }));
|
|
26
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './MobileReleaseNotes';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./MobileReleaseNotes"), exports);
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { NoteItemProps } from '../../types';
|
|
2
|
+
type NoteItemComponentProps = NoteItemProps & {
|
|
3
|
+
surface?: 'modal' | 'bottomSheet';
|
|
4
|
+
};
|
|
5
|
+
export declare function NoteItem({ title, description, image, video, surface }: NoteItemComponentProps): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.NoteItem = NoteItem;
|
|
7
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
+
const markdown_1 = require("@cloud-ru/ds-markdown");
|
|
9
|
+
const scroll_1 = require("@cloud-ru/ds-scroll");
|
|
10
|
+
const skeleton_1 = require("@cloud-ru/ds-skeleton");
|
|
11
|
+
const typography_1 = require("@cloud-ru/ds-typography");
|
|
12
|
+
const react_1 = require("react");
|
|
13
|
+
const constants_1 = require("../../constants");
|
|
14
|
+
const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
|
|
15
|
+
function NoteItem({ title, description, image, video, surface = 'modal' }) {
|
|
16
|
+
const [isVideoReady, setIsVideoReady] = (0, react_1.useState)(false);
|
|
17
|
+
const [hasVideoError, setHasVideoError] = (0, react_1.useState)(false);
|
|
18
|
+
const shouldShowVideo = Boolean(video && !hasVideoError);
|
|
19
|
+
return ((0, jsx_runtime_1.jsxs)("article", { className: styles_module_scss_1.default.root, "data-surface": surface, "data-test-id": constants_1.TEST_IDS.releaseNotesItem, children: [(0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.media, "data-test-id": constants_1.TEST_IDS.releaseNotesMedia, children: [shouldShowVideo && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("video", { className: styles_module_scss_1.default.video, src: video, muted: true, loop: true, playsInline: true, autoPlay: true, onLoadedData: () => setIsVideoReady(true), onError: () => setHasVideoError(true), "data-test-id": constants_1.TEST_IDS.releaseNotesVideo }), !isVideoReady && ((0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.videoSkeleton, "aria-hidden": true, children: (0, jsx_runtime_1.jsx)(skeleton_1.Skeleton, { loading: true, width: '100%', height: '100%' }) }))] })), !shouldShowVideo && (0, jsx_runtime_1.jsx)("img", { className: styles_module_scss_1.default.image, src: image.src, alt: image.alt })] }), (0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.content, children: [(0, jsx_runtime_1.jsx)(typography_1.Typography, { variant: 'headline', size: 's', children: title }), (0, jsx_runtime_1.jsx)(scroll_1.Scroll, { className: styles_module_scss_1.default.description, barHideStrategy: scroll_1.BAR_HIDE_STRATEGY.Leave, children: (0, jsx_runtime_1.jsx)(markdown_1.Markdown, { value: description }) })] })] }));
|
|
20
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './NoteItem';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./NoteItem"), exports);
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
.root{
|
|
2
|
+
display:grid;
|
|
3
|
+
grid-template-columns:minmax(0, 1fr) minmax(0, 1fr);
|
|
4
|
+
-moz-column-gap:var(--sn-primitive-dimension-24, 24px);
|
|
5
|
+
column-gap:var(--sn-primitive-dimension-24, 24px);
|
|
6
|
+
min-height:calc(5 * var(--sn-primitive-dimension-64, 64px));
|
|
7
|
+
}
|
|
8
|
+
.root[data-surface=bottomSheet]{
|
|
9
|
+
grid-template-columns:minmax(0, 1fr);
|
|
10
|
+
row-gap:var(--sn-primitive-dimension-16, 16px);
|
|
11
|
+
min-height:0;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.media{
|
|
15
|
+
position:relative;
|
|
16
|
+
overflow:hidden;
|
|
17
|
+
min-width:0;
|
|
18
|
+
border-radius:var(--sn-primitive-dimension-16, 16px);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.image,
|
|
22
|
+
.video{
|
|
23
|
+
display:block;
|
|
24
|
+
width:100%;
|
|
25
|
+
height:100%;
|
|
26
|
+
-o-object-fit:cover;
|
|
27
|
+
object-fit:cover;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.videoSkeleton{
|
|
31
|
+
position:absolute;
|
|
32
|
+
inset:0;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.content{
|
|
36
|
+
display:flex;
|
|
37
|
+
flex-direction:column;
|
|
38
|
+
row-gap:var(--sn-primitive-dimension-12, 12px);
|
|
39
|
+
min-width:0;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.description{
|
|
43
|
+
min-height:0;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.root[data-surface=modal] .content{
|
|
47
|
+
row-gap:var(--sn-primitive-dimension-16, 16px);
|
|
48
|
+
order:1;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.root[data-surface=modal] .media{
|
|
52
|
+
order:2;
|
|
53
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { NoteItemProps, ReleaseNotesContentState } from '../../types';
|
|
2
|
+
export type ReleaseNotesContentProps = {
|
|
3
|
+
/** Визуальное состояние */
|
|
4
|
+
contentState: ReleaseNotesContentState;
|
|
5
|
+
/** Новости */
|
|
6
|
+
items: NoteItemProps[];
|
|
7
|
+
/** Состояние загрузки */
|
|
8
|
+
loading?: boolean;
|
|
9
|
+
/** Текущая страница, zero-based */
|
|
10
|
+
pageIndex: number;
|
|
11
|
+
/** Поверхность */
|
|
12
|
+
surface: 'modal' | 'bottomSheet';
|
|
13
|
+
/** Заголовок no-data */
|
|
14
|
+
noDataTitle: string;
|
|
15
|
+
/** Описание no-data */
|
|
16
|
+
noDataDescription: string;
|
|
17
|
+
/** Заголовок ошибки */
|
|
18
|
+
errorTitle: string;
|
|
19
|
+
/** Описание ошибки */
|
|
20
|
+
errorDescription: string;
|
|
21
|
+
/** Label retry-кнопки */
|
|
22
|
+
retryLabel: string;
|
|
23
|
+
/** Смена страницы */
|
|
24
|
+
onPageChange(pageIndex: number): void;
|
|
25
|
+
/** Повторная загрузка */
|
|
26
|
+
onDataErrorRetryClick?(): void;
|
|
27
|
+
};
|
|
28
|
+
export declare function ReleaseNotesContent({ contentState, items, loading, pageIndex, surface, noDataTitle, noDataDescription, errorTitle, errorDescription, retryLabel, onPageChange, onDataErrorRetryClick, }: ReleaseNotesContentProps): import("react/jsx-runtime").JSX.Element;
|