krl-alfred 1.76.24 → 1.76.25

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.
@@ -19,14 +19,15 @@ var react_1 = require("react");
19
19
  var SearchBox_styled_1 = require("./SearchBox.styled");
20
20
  var Icon_1 = __importDefault(require("../Icon/Icon"));
21
21
  var Loader_1 = __importDefault(require("../Loader"));
22
+ var simplebar_react_1 = __importDefault(require("simplebar-react"));
22
23
  var SearchBox = function (props) {
23
24
  var _a;
24
- var onKeyUp = props.onKeyUp, onBlur = props.onBlur, onFocus = props.onFocus, children = props.children, isLoading = props.isLoading, showResultList = props.showResultList, placeholder = props.placeholder, value = props.value, onChange = props.onChange, onButtonClick = props.onButtonClick;
25
+ var onKeyDown = props.onKeyDown, onKeyUp = props.onKeyUp, onBlur = props.onBlur, onFocus = props.onFocus, children = props.children, isLoading = props.isLoading, showResultList = props.showResultList, placeholder = props.placeholder, value = props.value, onChange = props.onChange, onButtonClick = props.onButtonClick;
25
26
  var _b = (0, react_1.useState)("48px"), shadowHeight = _b[0], setShadowHeight = _b[1];
26
- var LoadingContent = function () {
27
- return (0, jsx_runtime_1.jsx)(SearchBox_styled_1.LoadingStyled, { children: (0, jsx_runtime_1.jsx)(Loader_1.default, { variant: "primary", width: "24px", height: "24px" }) });
28
- };
27
+ var LoadingContent = function () { return (0, jsx_runtime_1.jsx)(SearchBox_styled_1.LoadingStyled, { children: (0, jsx_runtime_1.jsx)(Loader_1.default, { variant: "primary", width: "24px", height: "24px" }) }); };
29
28
  var resultRef = (0, react_1.useRef)();
29
+ var simplebarRef = (0, react_1.useRef)(null);
30
+ var _c = (0, react_1.useState)(null), selectedIndex = _c[0], setSelectedIndex = _c[1];
30
31
  (0, react_1.useEffect)(function () {
31
32
  var _a, _b;
32
33
  if (((_a = resultRef === null || resultRef === void 0 ? void 0 : resultRef.current) === null || _a === void 0 ? void 0 : _a.offsetHeight) && showResultList) {
@@ -36,11 +37,57 @@ var SearchBox = function (props) {
36
37
  setShadowHeight("48px");
37
38
  }
38
39
  }, [(_a = resultRef === null || resultRef === void 0 ? void 0 : resultRef.current) === null || _a === void 0 ? void 0 : _a.clientHeight, showResultList, isLoading, children]);
39
- return ((0, jsx_runtime_1.jsxs)(SearchBox_styled_1.SearchBoxStyled, __assign({ "$shadowHeight": shadowHeight }, { children: [(0, jsx_runtime_1.jsx)("div", { className: "shadow" }), (0, jsx_runtime_1.jsxs)("div", __assign({ className: "inputWrapper" }, { children: [(0, jsx_runtime_1.jsx)("input", { type: "text", placeholder: placeholder, onKeyUp: onKeyUp, onBlur: onBlur, onFocus: onFocus, value: value, onChange: onChange }), (0, jsx_runtime_1.jsx)("button", __assign({ onClick: onButtonClick, className: "icon" }, { children: (0, jsx_runtime_1.jsx)(Icon_1.default, { name: "Search", hasWrapper: false, width: "16px", height: "16px" }) }))] })), showResultList && ((0, jsx_runtime_1.jsx)("div", __assign({ ref: resultRef, className: "resultList" }, { children: isLoading ? (0, jsx_runtime_1.jsx)(LoadingContent, {}) : children })))] })));
40
+ var handleKeyUp = function (e) {
41
+ e = e || window.event;
42
+ var charCode = e.keyCode || e.which;
43
+ if (![38, 40].includes(charCode)) {
44
+ onKeyUp(e);
45
+ }
46
+ else {
47
+ e.preventDefault();
48
+ }
49
+ };
50
+ var handleKeyDown = function (e) {
51
+ var _a;
52
+ e = e || window.event;
53
+ var charCode = e.keyCode || e.which;
54
+ if ([38, 40].includes(charCode)) {
55
+ e.preventDefault();
56
+ // 38 up , 40 down
57
+ var list_1 = (_a = resultRef === null || resultRef === void 0 ? void 0 : resultRef.current) === null || _a === void 0 ? void 0 : _a.querySelectorAll(".productCard");
58
+ if (list_1.length > 0) {
59
+ setSelectedIndex(function (prev) { return charCode === 38 ? prev === 0 ? 0 : prev - 1 : prev === list_1.length - 1 ? list_1.length - 1 : prev === null ? 0 : prev + 1; });
60
+ }
61
+ }
62
+ else {
63
+ setSelectedIndex(null);
64
+ }
65
+ onKeyDown(e);
66
+ };
67
+ (0, react_1.useEffect)(function () {
68
+ var _a;
69
+ var list = (_a = resultRef === null || resultRef === void 0 ? void 0 : resultRef.current) === null || _a === void 0 ? void 0 : _a.querySelectorAll(".productCard");
70
+ list === null || list === void 0 ? void 0 : list.forEach(function (el, index) {
71
+ var _a;
72
+ if (index === selectedIndex) {
73
+ el.classList.add("selected");
74
+ (_a = simplebarRef.current.el.querySelector('.simplebar-content-wrapper')) === null || _a === void 0 ? void 0 : _a.scrollTo({
75
+ top: el.offsetHeight * (index),
76
+ left: 0,
77
+ behavior: 'smooth'
78
+ });
79
+ }
80
+ else {
81
+ el.classList.remove("selected");
82
+ }
83
+ });
84
+ }, [selectedIndex]);
85
+ return ((0, jsx_runtime_1.jsxs)(SearchBox_styled_1.SearchBoxStyled, __assign({ "$shadowHeight": shadowHeight }, { children: [(0, jsx_runtime_1.jsx)("div", { className: "shadow" }), (0, jsx_runtime_1.jsxs)("div", __assign({ className: "inputWrapper" }, { children: [(0, jsx_runtime_1.jsx)("input", { type: "text", placeholder: placeholder, onKeyDown: handleKeyDown, onKeyUp: handleKeyUp, onBlur: onBlur, onFocus: onFocus, value: value, onChange: onChange }), (0, jsx_runtime_1.jsx)("button", __assign({ onClick: onButtonClick, className: "icon" }, { children: (0, jsx_runtime_1.jsx)(Icon_1.default, { name: "Search", hasWrapper: false, width: "16px", height: "16px" }) }))] })), showResultList && ((0, jsx_runtime_1.jsx)("div", __assign({ ref: resultRef, className: "resultList" }, { children: (0, jsx_runtime_1.jsx)(simplebar_react_1.default, __assign({ ref: simplebarRef, autoHide: false }, { children: isLoading ? (0, jsx_runtime_1.jsx)(LoadingContent, {}) : children })) })))] })));
40
86
  };
41
87
  SearchBox.defaultProps = {
42
88
  showResultList: false,
43
89
  isLoading: false,
44
90
  placeholder: "Teknolojik ürün ara...",
91
+ onKeyDown: function () { },
45
92
  };
46
93
  exports.default = SearchBox;
@@ -10,6 +10,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.LoadingStyled = exports.SearchBoxStyled = void 0;
11
11
  var styled_components_1 = __importDefault(require("styled-components"));
12
12
  var devices_1 = require("../../constants/devices");
13
- exports.SearchBoxStyled = styled_components_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n position: relative;\n .shadow{\n height: ", ";\n position: absolute;\n width: calc(100% - 10px);\n left: 50%;\n transform: translateX(-50%);\n border-radius: 8px;\n box-shadow: 0 6px 30px 0 var(--dark-opacity-10);\n @media only screen and ", " {\n box-shadow: 0 0 16px 0 var(--dark-opacity-10);\n }\n }\n .inputWrapper {\n position: relative;\n z-index: 5;\n border-radius: 8px;\n input {\n box-sizing: border-box;\n width: 100%;\n height: 48px;\n background: white;\n border-radius: 8px;\n border: 1px solid var(--dark-opacity-10);\n padding: 8px 24px;\n color: var(--dark);\n font : var(--body-medium-14-17);\n line-height: normal;\n outline: none;\n &::placeholder {\n color: var(--dark-opacity-50);\n }\n }\n .icon {\n position: absolute;\n right: 1rem;\n top: 50%;\n transform: translateY(-50%);\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border:0;\n outline: none;\n cursor: pointer;\n padding: 0;\n color: var(--primary);\n &:hover{\n color: var(--primary-hover);\n }\n }\n }\n\n .resultList {\n border: 1px solid var(--dark-opacity-10);\n padding: 1.5rem;\n border-radius: 8px;\n background: white;\n max-height: 408px;\n box-sizing: border-box;\n overflow: auto;\n position: absolute;\n top: 100%;\n left: 0;\n right: 0;\n z-index: 4;\n display: grid;\n row-gap: 1.5rem;\n\n &::-webkit-scrollbar {\n width: 4px;\n background-color: #ffffff;\n }\n &::-webkit-scrollbar-track {\n border-radius: 10px;\n background: white;\n }\n\n &::-webkit-scrollbar-thumb {\n border-radius: 10px;\n background: var(--dark-opacity-10);\n }\n //box-shadow: 0 0 16px 0 var(--dark-opacity-10);\n @media only screen and ", " {\n row-gap: 0.5rem;\n max-height: 326px;\n }\n }\n"], ["\n position: relative;\n .shadow{\n height: ", ";\n position: absolute;\n width: calc(100% - 10px);\n left: 50%;\n transform: translateX(-50%);\n border-radius: 8px;\n box-shadow: 0 6px 30px 0 var(--dark-opacity-10);\n @media only screen and ", " {\n box-shadow: 0 0 16px 0 var(--dark-opacity-10);\n }\n }\n .inputWrapper {\n position: relative;\n z-index: 5;\n border-radius: 8px;\n input {\n box-sizing: border-box;\n width: 100%;\n height: 48px;\n background: white;\n border-radius: 8px;\n border: 1px solid var(--dark-opacity-10);\n padding: 8px 24px;\n color: var(--dark);\n font : var(--body-medium-14-17);\n line-height: normal;\n outline: none;\n &::placeholder {\n color: var(--dark-opacity-50);\n }\n }\n .icon {\n position: absolute;\n right: 1rem;\n top: 50%;\n transform: translateY(-50%);\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border:0;\n outline: none;\n cursor: pointer;\n padding: 0;\n color: var(--primary);\n &:hover{\n color: var(--primary-hover);\n }\n }\n }\n\n .resultList {\n border: 1px solid var(--dark-opacity-10);\n padding: 1.5rem;\n border-radius: 8px;\n background: white;\n max-height: 408px;\n box-sizing: border-box;\n overflow: auto;\n position: absolute;\n top: 100%;\n left: 0;\n right: 0;\n z-index: 4;\n display: grid;\n row-gap: 1.5rem;\n\n &::-webkit-scrollbar {\n width: 4px;\n background-color: #ffffff;\n }\n &::-webkit-scrollbar-track {\n border-radius: 10px;\n background: white;\n }\n\n &::-webkit-scrollbar-thumb {\n border-radius: 10px;\n background: var(--dark-opacity-10);\n }\n //box-shadow: 0 0 16px 0 var(--dark-opacity-10);\n @media only screen and ", " {\n row-gap: 0.5rem;\n max-height: 326px;\n }\n }\n"])), function (props) { return props.$shadowHeight; }, devices_1.devices.xl, devices_1.devices.xl);
13
+ exports.SearchBoxStyled = styled_components_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n position: relative;\n .shadow{\n height: ", ";\n position: absolute;\n width: calc(100% - 10px);\n left: 50%;\n transform: translateX(-50%);\n border-radius: 8px;\n box-shadow: 0 6px 30px 0 var(--dark-opacity-10);\n @media only screen and ", " {\n box-shadow: 0 0 16px 0 var(--dark-opacity-10);\n }\n }\n .inputWrapper {\n position: relative;\n z-index: 5;\n border-radius: 8px;\n input {\n box-sizing: border-box;\n width: 100%;\n height: 48px;\n background: white;\n border-radius: 8px;\n border: 1px solid var(--dark-opacity-10);\n padding: 8px 24px;\n color: var(--dark);\n font : var(--body-medium-14-17);\n line-height: normal;\n outline: none;\n &::placeholder {\n color: var(--dark-opacity-50);\n }\n }\n .icon {\n position: absolute;\n right: 1rem;\n top: 50%;\n transform: translateY(-50%);\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border:0;\n outline: none;\n cursor: pointer;\n padding: 0;\n color: var(--primary);\n &:hover{\n color: var(--primary-hover);\n }\n }\n }\n\n .resultList {\n border: 1px solid var(--dark-opacity-10);\n padding: 0;\n border-radius: 8px;\n background: white;\n max-height: 408px;\n box-sizing: border-box;\n overflow: hidden;\n position: absolute;\n top: 100%;\n left: 0;\n right: 0;\n z-index: 4;\n display: grid;\n row-gap: 1.5rem;\n\n [data-simplebar] {\n height: auto !important;\n max-height: 408px !important;\n padding: 1.5rem !important;\n .simplebar-track.simplebar-vertical {\n width: 9px !important;\n }\n }\n .productCard{\n border-radius: 8px;\n transition: all .2s ease;\n &:is(.selected){\n background: var(--dark-opacity-3);\n }\n }\n @media only screen and ", " {\n row-gap: 0.5rem;\n max-height: 326px;\n [data-simplebar] {\n max-height: 326px !important;\n }\n }\n }\n"], ["\n position: relative;\n .shadow{\n height: ", ";\n position: absolute;\n width: calc(100% - 10px);\n left: 50%;\n transform: translateX(-50%);\n border-radius: 8px;\n box-shadow: 0 6px 30px 0 var(--dark-opacity-10);\n @media only screen and ", " {\n box-shadow: 0 0 16px 0 var(--dark-opacity-10);\n }\n }\n .inputWrapper {\n position: relative;\n z-index: 5;\n border-radius: 8px;\n input {\n box-sizing: border-box;\n width: 100%;\n height: 48px;\n background: white;\n border-radius: 8px;\n border: 1px solid var(--dark-opacity-10);\n padding: 8px 24px;\n color: var(--dark);\n font : var(--body-medium-14-17);\n line-height: normal;\n outline: none;\n &::placeholder {\n color: var(--dark-opacity-50);\n }\n }\n .icon {\n position: absolute;\n right: 1rem;\n top: 50%;\n transform: translateY(-50%);\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border:0;\n outline: none;\n cursor: pointer;\n padding: 0;\n color: var(--primary);\n &:hover{\n color: var(--primary-hover);\n }\n }\n }\n\n .resultList {\n border: 1px solid var(--dark-opacity-10);\n padding: 0;\n border-radius: 8px;\n background: white;\n max-height: 408px;\n box-sizing: border-box;\n overflow: hidden;\n position: absolute;\n top: 100%;\n left: 0;\n right: 0;\n z-index: 4;\n display: grid;\n row-gap: 1.5rem;\n\n [data-simplebar] {\n height: auto !important;\n max-height: 408px !important;\n padding: 1.5rem !important;\n .simplebar-track.simplebar-vertical {\n width: 9px !important;\n }\n }\n .productCard{\n border-radius: 8px;\n transition: all .2s ease;\n &:is(.selected){\n background: var(--dark-opacity-3);\n }\n }\n @media only screen and ", " {\n row-gap: 0.5rem;\n max-height: 326px;\n [data-simplebar] {\n max-height: 326px !important;\n }\n }\n }\n"])), function (props) { return props.$shadowHeight; }, devices_1.devices.xl, devices_1.devices.xl);
14
14
  exports.LoadingStyled = styled_components_1.default.div(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n text-align: center;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n"], ["\n text-align: center;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n"])));
15
15
  var templateObject_1, templateObject_2;
@@ -1,10 +1,24 @@
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 __importDefault = (this && this.__importDefault) || function (mod) {
3
14
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
15
  };
5
16
  Object.defineProperty(exports, "__esModule", { value: true });
6
17
  exports.Default = void 0;
18
+ var jsx_runtime_1 = require("react/jsx-runtime");
7
19
  var SearchBox_1 = __importDefault(require("../SearchBox"));
20
+ var productList_json_1 = __importDefault(require("../../../jsons/productList.json"));
21
+ var ProductCard_1 = __importDefault(require("../../ProductCard"));
8
22
  exports.default = {
9
23
  title: 'Components/SearchBox',
10
24
  component: SearchBox_1.default,
@@ -19,5 +33,9 @@ exports.Default = {
19
33
  placeholder: "Teknolojik ürün ara...",
20
34
  isLoading: false,
21
35
  showResultList: false,
36
+ children: productList_json_1.default.map(function (product) {
37
+ var _a, _b, _c;
38
+ return ((0, jsx_runtime_1.jsx)("div", __assign({ className: "productCard" }, { children: (0, jsx_runtime_1.jsx)(ProductCard_1.default, { layout: "horizontal", title: product.name, image: (0, jsx_runtime_1.jsx)("img", { src: (_a = product.medias[0]) === null || _a === void 0 ? void 0 : _a.url, alt: product.name, width: "70", height: "70", className: "media" }), description: product.shortDescription, price: "".concat((_b = product.prices[0]) === null || _b === void 0 ? void 0 : _b.newPriceText, " ").concat((_c = product.prices[0]) === null || _c === void 0 ? void 0 : _c.currencyCode), period: 'ay' }, product.productId) })));
39
+ }),
22
40
  },
23
41
  };