krl-alfred 2.23.7 → 2.23.9
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/dist/components/Uploader/Uploader.d.ts +1 -1
- package/dist/components/Uploader/Uploader.js +4 -3
- package/dist/components/Uploader/Uploader.styled.d.ts +5 -1
- package/dist/components/Uploader/Uploader.styled.js +1 -1
- package/dist/components/Uploader/props.d.ts +9 -0
- package/dist/components/Uploader/props.js +3 -1
- package/dist/components/Uploader/stories/Uploader.stories.d.ts +9 -2
- package/dist/components/Uploader/stories/Uploader.stories.js +23 -3
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { UploaderProps } from './props';
|
|
3
|
-
declare const Uploader: ({ className, title, description, images, maxCount, columnCount, uploadLabel, coverBadgeText, variant, selectedIndex, showCoverBadge, accept, disabled, imagePadding, onUpload, onRemove, onSelect, }: UploaderProps) => React.JSX.Element;
|
|
3
|
+
declare const Uploader: ({ className, title, description, images, maxCount, columnCount, uploadLabel, coverBadgeText, variant, selectedIndexes, selectedIndex, showCoverBadge, accept, disabled, imagePadding, imageFit, onUpload, onRemove, onSelect, }: UploaderProps) => React.JSX.Element;
|
|
4
4
|
export default Uploader;
|
|
@@ -21,13 +21,14 @@ var Uploader_styled_1 = require("./Uploader.styled");
|
|
|
21
21
|
var Icon_1 = __importDefault(require("../Icon/Icon"));
|
|
22
22
|
var Badges_1 = __importDefault(require("../Badges/Badges"));
|
|
23
23
|
var Uploader = function (_a) {
|
|
24
|
-
var className = _a.className, title = _a.title, description = _a.description, _b = _a.images, images = _b === void 0 ? props_1.UploaderDefault.images : _b, _c = _a.maxCount, maxCount = _c === void 0 ? props_1.UploaderDefault.maxCount : _c, _d = _a.columnCount, columnCount = _d === void 0 ? props_1.UploaderDefault.columnCount : _d, _e = _a.uploadLabel, uploadLabel = _e === void 0 ? props_1.UploaderDefault.uploadLabel : _e, _f = _a.coverBadgeText, coverBadgeText = _f === void 0 ? props_1.UploaderDefault.coverBadgeText : _f, _g = _a.variant, variant = _g === void 0 ? props_1.UploaderDefault.variant : _g,
|
|
24
|
+
var className = _a.className, title = _a.title, description = _a.description, _b = _a.images, images = _b === void 0 ? props_1.UploaderDefault.images : _b, _c = _a.maxCount, maxCount = _c === void 0 ? props_1.UploaderDefault.maxCount : _c, _d = _a.columnCount, columnCount = _d === void 0 ? props_1.UploaderDefault.columnCount : _d, _e = _a.uploadLabel, uploadLabel = _e === void 0 ? props_1.UploaderDefault.uploadLabel : _e, _f = _a.coverBadgeText, coverBadgeText = _f === void 0 ? props_1.UploaderDefault.coverBadgeText : _f, _g = _a.variant, variant = _g === void 0 ? props_1.UploaderDefault.variant : _g, selectedIndexes = _a.selectedIndexes, selectedIndex = _a.selectedIndex, _h = _a.showCoverBadge, showCoverBadge = _h === void 0 ? props_1.UploaderDefault.showCoverBadge : _h, _j = _a.accept, accept = _j === void 0 ? props_1.UploaderDefault.accept : _j, _k = _a.disabled, disabled = _k === void 0 ? props_1.UploaderDefault.disabled : _k, _l = _a.imagePadding, imagePadding = _l === void 0 ? props_1.UploaderDefault.imagePadding : _l, _m = _a.imageFit, imageFit = _m === void 0 ? props_1.UploaderDefault.imageFit : _m, onUpload = _a.onUpload, onRemove = _a.onRemove, onSelect = _a.onSelect;
|
|
25
25
|
var fileInputRef = (0, react_1.useRef)(null);
|
|
26
26
|
var uploadIndexRef = (0, react_1.useRef)(null);
|
|
27
27
|
var localPreviewsRef = (0, react_1.useRef)({});
|
|
28
28
|
var _o = (0, react_1.useState)({}), localPreviews = _o[0], setLocalPreviews = _o[1];
|
|
29
29
|
var slots = Array.from({ length: maxCount }, function (_, index) { var _a, _b; return (_b = (_a = images[index]) !== null && _a !== void 0 ? _a : localPreviews[index]) !== null && _b !== void 0 ? _b : null; });
|
|
30
30
|
var isCoverSelect = variant === 'coverSelect';
|
|
31
|
+
var activeSelectedIndexes = selectedIndexes !== null && selectedIndexes !== void 0 ? selectedIndexes : (selectedIndex !== undefined && selectedIndex !== null ? [selectedIndex] : props_1.UploaderDefault.selectedIndexes);
|
|
31
32
|
localPreviewsRef.current = localPreviews;
|
|
32
33
|
(0, react_1.useEffect)(function () {
|
|
33
34
|
return function () {
|
|
@@ -107,10 +108,10 @@ var Uploader = function (_a) {
|
|
|
107
108
|
return ((0, jsx_runtime_1.jsxs)(Uploader_styled_1.UploaderStyled, __assign({ className: className }, { children: [(title || description) && ((0, jsx_runtime_1.jsxs)(Uploader_styled_1.UploaderHeader, { children: [title && (0, jsx_runtime_1.jsx)(Uploader_styled_1.UploaderTitle, { children: title }), description && (0, jsx_runtime_1.jsx)(Uploader_styled_1.UploaderDescription, { children: description })] })), (0, jsx_runtime_1.jsx)(Uploader_styled_1.UploaderGrid, __assign({ "$columnCount": columnCount }, { children: slots.map(function (image, index) {
|
|
108
109
|
var _a, _b;
|
|
109
110
|
var isEmpty = !image;
|
|
110
|
-
var isSelected = isCoverSelect &&
|
|
111
|
+
var isSelected = isCoverSelect && !isEmpty && activeSelectedIndexes.includes(index);
|
|
111
112
|
var showCoverOnSlot = !isCoverSelect && showCoverBadge && index === 0;
|
|
112
113
|
var showUploadContent = isEmpty || showCoverOnSlot;
|
|
113
|
-
return ((0, jsx_runtime_1.jsxs)(Uploader_styled_1.UploaderSlot, __assign({ type: "button", "$isEmpty": isEmpty, "$isSelected": isSelected, "$disabled": disabled, disabled: disabled, onClick: function () { return handleSlotClick(index, image); } }, { children: [image && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(Uploader_styled_1.UploaderSlotMedia, __assign({ "$padding": imagePadding }, { children: (0, jsx_runtime_1.jsx)(Uploader_styled_1.UploaderSlotImage, { src: image.src, alt: (_a = image.alt) !== null && _a !== void 0 ? _a : '' }) })), !isCoverSelect && ((0, jsx_runtime_1.jsx)(Uploader_styled_1.UploaderRemoveButton, __assign({ type: "button", "aria-label": "G\u00F6rseli kald\u0131r", onClick: function (event) { return handleRemove(event, index); } }, { children: (0, jsx_runtime_1.jsx)(Icon_1.default, { name: "Closebig" }) })))] })), showUploadContent && ((0, jsx_runtime_1.jsxs)(Uploader_styled_1.UploaderUploadContent, __assign({ "$hasImage": !isEmpty }, { children: [showCoverOnSlot && ((0, jsx_runtime_1.jsx)(Uploader_styled_1.UploaderUploadBadgeWrapper, { children: renderCoverBadge() })), (0, jsx_runtime_1.jsx)(Uploader_styled_1.UploaderUploadLabel, __assign({ "$isHidden": !isEmpty && showCoverOnSlot }, { children: uploadLabel })), (0, jsx_runtime_1.jsx)(Uploader_styled_1.UploaderUploadIcon, __assign({ "$isHidden": !isEmpty && showCoverOnSlot }, { children: (0, jsx_runtime_1.jsx)(Icon_1.default, { name: "PlusMd", width: "1.5rem", height: "1.5rem", color: "var(--primary)" }) }))] })))] }), (_b = image === null || image === void 0 ? void 0 : image.id) !== null && _b !== void 0 ? _b : "slot-".concat(index)));
|
|
114
|
+
return ((0, jsx_runtime_1.jsxs)(Uploader_styled_1.UploaderSlot, __assign({ type: "button", "$isEmpty": isEmpty, "$isSelected": isSelected, "$disabled": disabled, disabled: disabled, onClick: function () { return handleSlotClick(index, image); } }, { children: [image && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(Uploader_styled_1.UploaderSlotMedia, __assign({ "$padding": imagePadding }, { children: (0, jsx_runtime_1.jsx)(Uploader_styled_1.UploaderSlotImage, { src: image.src, alt: (_a = image.alt) !== null && _a !== void 0 ? _a : '', "$fit": imageFit }) })), !isCoverSelect && ((0, jsx_runtime_1.jsx)(Uploader_styled_1.UploaderRemoveButton, __assign({ type: "button", "aria-label": "G\u00F6rseli kald\u0131r", onClick: function (event) { return handleRemove(event, index); } }, { children: (0, jsx_runtime_1.jsx)(Icon_1.default, { name: "Closebig" }) })))] })), showUploadContent && ((0, jsx_runtime_1.jsxs)(Uploader_styled_1.UploaderUploadContent, __assign({ "$hasImage": !isEmpty }, { children: [showCoverOnSlot && ((0, jsx_runtime_1.jsx)(Uploader_styled_1.UploaderUploadBadgeWrapper, { children: renderCoverBadge() })), (0, jsx_runtime_1.jsx)(Uploader_styled_1.UploaderUploadLabel, __assign({ "$isHidden": !isEmpty && showCoverOnSlot }, { children: uploadLabel })), (0, jsx_runtime_1.jsx)(Uploader_styled_1.UploaderUploadIcon, __assign({ "$isHidden": !isEmpty && showCoverOnSlot }, { children: (0, jsx_runtime_1.jsx)(Icon_1.default, { name: "PlusMd", width: "1.5rem", height: "1.5rem", color: "var(--primary)" }) }))] })))] }), (_b = image === null || image === void 0 ? void 0 : image.id) !== null && _b !== void 0 ? _b : "slot-".concat(index)));
|
|
114
115
|
}) })), (0, jsx_runtime_1.jsx)(Uploader_styled_1.UploaderHiddenInput, { ref: fileInputRef, type: "file", accept: accept, onChange: handleFileChange })] })));
|
|
115
116
|
};
|
|
116
117
|
exports.default = Uploader;
|
|
@@ -22,7 +22,11 @@ export declare const UploaderSlotMedia: import("styled-components/dist/types").I
|
|
|
22
22
|
}, never> & Partial<Pick<import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "$padding"> & {
|
|
23
23
|
$padding?: string;
|
|
24
24
|
}, never>>> & string;
|
|
25
|
-
export declare const UploaderSlotImage: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("
|
|
25
|
+
export declare const UploaderSlotImage: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement>, "$fit"> & {
|
|
26
|
+
$fit?: 'cover' | 'contain';
|
|
27
|
+
}, never> & Partial<Pick<import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement>, "$fit"> & {
|
|
28
|
+
$fit?: 'cover' | 'contain';
|
|
29
|
+
}, never>>> & string;
|
|
26
30
|
export declare const UploaderUploadContent: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "$hasImage"> & {
|
|
27
31
|
$hasImage?: boolean;
|
|
28
32
|
}, never> & Partial<Pick<import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "$hasImage"> & {
|
|
@@ -45,7 +45,7 @@ exports.UploaderSlot = styled_components_1.default.button(templateObject_9 || (t
|
|
|
45
45
|
return slotFilledStyles;
|
|
46
46
|
});
|
|
47
47
|
exports.UploaderSlotMedia = styled_components_1.default.div(templateObject_10 || (templateObject_10 = __makeTemplateObject(["\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: ", ";\n box-sizing: border-box;\n"], ["\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: ", ";\n box-sizing: border-box;\n"])), function (props) { return props.$padding || '1rem'; });
|
|
48
|
-
exports.UploaderSlotImage = styled_components_1.default.img(templateObject_11 || (templateObject_11 = __makeTemplateObject(["\n width: 100%;\n height: 100%;\n object-fit:
|
|
48
|
+
exports.UploaderSlotImage = styled_components_1.default.img(templateObject_11 || (templateObject_11 = __makeTemplateObject(["\n width: 100%;\n height: 100%;\n object-fit: ", ";\n box-sizing: border-box;\n pointer-events: none;\n border-radius: 0.5rem;\n"], ["\n width: 100%;\n height: 100%;\n object-fit: ", ";\n box-sizing: border-box;\n pointer-events: none;\n border-radius: 0.5rem;\n"])), function (props) { return props.$fit || 'cover'; });
|
|
49
49
|
exports.UploaderUploadContent = styled_components_1.default.div(templateObject_12 || (templateObject_12 = __makeTemplateObject(["\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n pointer-events: none;\n position: ", ";\n z-index: ", ";\n"], ["\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n pointer-events: none;\n position: ", ";\n z-index: ", ";\n"])), function (props) { return props.$hasImage ? 'relative' : 'static'; }, function (props) { return props.$hasImage ? 1 : 'auto'; });
|
|
50
50
|
exports.UploaderUploadBadgeWrapper = styled_components_1.default.div(templateObject_13 || (templateObject_13 = __makeTemplateObject(["\n margin-bottom: 0.5rem;\n"], ["\n margin-bottom: 0.5rem;\n"])));
|
|
51
51
|
exports.UploaderUploadLabel = styled_components_1.default.span(templateObject_14 || (templateObject_14 = __makeTemplateObject(["\n color: var(--primary);\n font: var(--body-semi-bold-14-17);\n visibility: ", ";\n"], ["\n color: var(--primary);\n font: var(--body-semi-bold-14-17);\n visibility: ", ";\n"])), function (props) { return props.$isHidden ? 'hidden' : 'visible'; });
|
|
@@ -4,6 +4,7 @@ export interface UploaderImage {
|
|
|
4
4
|
alt?: string;
|
|
5
5
|
}
|
|
6
6
|
export type UploaderVariant = 'default' | 'coverSelect';
|
|
7
|
+
export type UploaderImageFit = 'cover' | 'contain';
|
|
7
8
|
export interface UploaderProps {
|
|
8
9
|
className?: string;
|
|
9
10
|
title?: string;
|
|
@@ -15,14 +16,20 @@ export interface UploaderProps {
|
|
|
15
16
|
uploadLabel?: string;
|
|
16
17
|
coverBadgeText?: string;
|
|
17
18
|
variant?: UploaderVariant;
|
|
19
|
+
/** Seçili slot index'leri (birden fazla olabilir) */
|
|
20
|
+
selectedIndexes?: number[];
|
|
21
|
+
/** @deprecated `selectedIndexes` kullan. Tek seçim için `[index]` geç. */
|
|
18
22
|
selectedIndex?: number;
|
|
19
23
|
showCoverBadge?: boolean;
|
|
20
24
|
accept?: string;
|
|
21
25
|
disabled?: boolean;
|
|
22
26
|
/** Slot görseli padding'i (`1.5rem`, `1rem`, `1.5rem 1rem` vb.) */
|
|
23
27
|
imagePadding?: string;
|
|
28
|
+
/** Slot görseli object-fit değeri */
|
|
29
|
+
imageFit?: UploaderImageFit;
|
|
24
30
|
onUpload?: (index: number, file: File) => void;
|
|
25
31
|
onRemove?: (index: number) => void;
|
|
32
|
+
/** Slot seçildiğinde çağrılır; parent selectedIndexes'i yönetir */
|
|
26
33
|
onSelect?: (index: number) => void;
|
|
27
34
|
}
|
|
28
35
|
export declare const UploaderDefault: {
|
|
@@ -32,9 +39,11 @@ export declare const UploaderDefault: {
|
|
|
32
39
|
uploadLabel: string;
|
|
33
40
|
coverBadgeText: string;
|
|
34
41
|
variant: UploaderVariant;
|
|
42
|
+
selectedIndexes: number[];
|
|
35
43
|
selectedIndex: number;
|
|
36
44
|
showCoverBadge: boolean;
|
|
37
45
|
accept: string;
|
|
38
46
|
disabled: boolean;
|
|
39
47
|
imagePadding: string;
|
|
48
|
+
imageFit: UploaderImageFit;
|
|
40
49
|
};
|
|
@@ -8,9 +8,11 @@ exports.UploaderDefault = {
|
|
|
8
8
|
uploadLabel: 'Yükle',
|
|
9
9
|
coverBadgeText: 'Kapak',
|
|
10
10
|
variant: 'default',
|
|
11
|
-
|
|
11
|
+
selectedIndexes: [],
|
|
12
|
+
selectedIndex: undefined,
|
|
12
13
|
showCoverBadge: true,
|
|
13
14
|
accept: 'image/*',
|
|
14
15
|
disabled: false,
|
|
15
16
|
imagePadding: '1rem',
|
|
17
|
+
imageFit: 'cover',
|
|
16
18
|
};
|
|
@@ -2,7 +2,7 @@ import React from 'react';
|
|
|
2
2
|
import { UploaderImage } from '../props';
|
|
3
3
|
declare const _default: {
|
|
4
4
|
title: string;
|
|
5
|
-
component: ({ className, title, description, images, maxCount, columnCount, uploadLabel, coverBadgeText, variant, selectedIndex, showCoverBadge, accept, disabled, imagePadding, onUpload, onRemove, onSelect, }: import("../props").UploaderProps) => React.JSX.Element;
|
|
5
|
+
component: ({ className, title, description, images, maxCount, columnCount, uploadLabel, coverBadgeText, variant, selectedIndexes, selectedIndex, showCoverBadge, accept, disabled, imagePadding, imageFit, onUpload, onRemove, onSelect, }: import("../props").UploaderProps) => React.JSX.Element;
|
|
6
6
|
tags: string[];
|
|
7
7
|
argTypes: {
|
|
8
8
|
variant: {
|
|
@@ -24,6 +24,13 @@ declare const _default: {
|
|
|
24
24
|
imagePadding: {
|
|
25
25
|
control: string;
|
|
26
26
|
};
|
|
27
|
+
imageFit: {
|
|
28
|
+
control: string;
|
|
29
|
+
options: string[];
|
|
30
|
+
};
|
|
31
|
+
selectedIndexes: {
|
|
32
|
+
control: string;
|
|
33
|
+
};
|
|
27
34
|
};
|
|
28
35
|
};
|
|
29
36
|
export default _default;
|
|
@@ -58,7 +65,7 @@ export declare const CoverSelect: {
|
|
|
58
65
|
title: string;
|
|
59
66
|
variant: string;
|
|
60
67
|
images: UploaderImage[];
|
|
61
|
-
|
|
68
|
+
selectedIndexes: number[];
|
|
62
69
|
maxCount: number;
|
|
63
70
|
};
|
|
64
71
|
};
|
|
@@ -1,4 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
2
13
|
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
3
14
|
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
4
15
|
if (ar || !(i in from)) {
|
|
@@ -36,6 +47,8 @@ exports.default = {
|
|
|
36
47
|
showCoverBadge: { control: 'boolean' },
|
|
37
48
|
disabled: { control: 'boolean' },
|
|
38
49
|
imagePadding: { control: 'text' },
|
|
50
|
+
imageFit: { control: 'select', options: ['cover', 'contain'] },
|
|
51
|
+
selectedIndexes: { control: 'object' },
|
|
39
52
|
},
|
|
40
53
|
};
|
|
41
54
|
exports.Empty = {
|
|
@@ -69,7 +82,7 @@ exports.CoverSelect = {
|
|
|
69
82
|
title: 'Ana görselden seç',
|
|
70
83
|
variant: 'coverSelect',
|
|
71
84
|
images: [sampleImage],
|
|
72
|
-
|
|
85
|
+
selectedIndexes: [0],
|
|
73
86
|
maxCount: 4,
|
|
74
87
|
},
|
|
75
88
|
};
|
|
@@ -94,8 +107,15 @@ exports.Interactive = {
|
|
|
94
107
|
render: function () { return (0, jsx_runtime_1.jsx)(UploaderInteractiveStory, {}); },
|
|
95
108
|
};
|
|
96
109
|
var UploaderCoverSelectStory = function () {
|
|
97
|
-
var _a = (0, react_1.useState)(0),
|
|
98
|
-
|
|
110
|
+
var _a = (0, react_1.useState)([0]), selectedIndexes = _a[0], setSelectedIndexes = _a[1];
|
|
111
|
+
var images = [sampleImage, __assign(__assign({}, sampleImage), { id: 'sample-2' }), __assign(__assign({}, sampleImage), { id: 'sample-3' })];
|
|
112
|
+
return ((0, jsx_runtime_1.jsx)(Uploader_1.default, { title: "Ana g\u00F6rselden se\u00E7", variant: "coverSelect", images: images, selectedIndexes: selectedIndexes, maxCount: 4, onSelect: function (index) {
|
|
113
|
+
setSelectedIndexes(function (prev) {
|
|
114
|
+
return prev.includes(index)
|
|
115
|
+
? prev.filter(function (item) { return item !== index; })
|
|
116
|
+
: __spreadArray(__spreadArray([], prev, true), [index], false);
|
|
117
|
+
});
|
|
118
|
+
} }));
|
|
99
119
|
};
|
|
100
120
|
exports.CoverSelectInteractive = {
|
|
101
121
|
render: function () { return (0, jsx_runtime_1.jsx)(UploaderCoverSelectStory, {}); },
|