@redneckz/wildless-cms-uni-blocks 0.14.874 → 0.14.876
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/bundle/bundle.umd.js +127 -93
- package/bundle/bundle.umd.min.js +1 -1
- package/bundle/components/Header/DropdownButton.d.ts +2 -0
- package/bundle/components/Header/DropdownMenu.d.ts +5 -2
- package/bundle/components/Header/HeaderMoreMenuItem.d.ts +9 -0
- package/bundle/components/Header/HeaderSubMenuItem.d.ts +3 -0
- package/bundle/components/Header/useDropdownSubMenu.d.ts +11 -0
- package/bundle/data/NavigationData.d.ts +1 -0
- package/bundle/ui-kit/FormField/Fields/ApplicationDateField.d.ts +2 -0
- package/dist/components/Header/DropdownButton.d.ts +2 -0
- package/dist/components/Header/DropdownButton.js +11 -0
- package/dist/components/Header/DropdownButton.js.map +1 -0
- package/dist/components/Header/DropdownMenu.d.ts +5 -2
- package/dist/components/Header/DropdownMenu.js +2 -36
- package/dist/components/Header/DropdownMenu.js.map +1 -1
- package/dist/components/Header/HeaderMoreMenuItem.d.ts +9 -0
- package/dist/components/Header/HeaderMoreMenuItem.js +27 -0
- package/dist/components/Header/HeaderMoreMenuItem.js.map +1 -0
- package/dist/components/Header/HeaderSubMenu.js +2 -2
- package/dist/components/Header/HeaderSubMenu.js.map +1 -1
- package/dist/components/Header/HeaderSubMenuItem.d.ts +3 -0
- package/dist/components/Header/HeaderSubMenuItem.js +19 -2
- package/dist/components/Header/HeaderSubMenuItem.js.map +1 -1
- package/dist/components/Header/HeaderTopMenu.js +2 -2
- package/dist/components/Header/HeaderTopMenu.js.map +1 -1
- package/dist/components/Header/useDropdownSubMenu.d.ts +11 -0
- package/dist/components/Header/useDropdownSubMenu.js +37 -0
- package/dist/components/Header/useDropdownSubMenu.js.map +1 -0
- package/dist/data/NavigationData.d.ts +1 -0
- package/dist/ui-kit/FormField/Fields/ApplicationDateField.d.ts +2 -0
- package/dist/ui-kit/FormField/Fields/ApplicationDateField.js +7 -0
- package/dist/ui-kit/FormField/Fields/ApplicationDateField.js.map +1 -0
- package/dist/ui-kit/FormField/getField.js +2 -2
- package/dist/ui-kit/FormField/getField.js.map +1 -1
- package/lib/components/Header/DropdownButton.d.ts +2 -0
- package/lib/components/Header/DropdownButton.js +9 -0
- package/lib/components/Header/DropdownButton.js.map +1 -0
- package/lib/components/Header/DropdownMenu.d.ts +5 -2
- package/lib/components/Header/DropdownMenu.js +2 -37
- package/lib/components/Header/DropdownMenu.js.map +1 -1
- package/lib/components/Header/HeaderMoreMenuItem.d.ts +9 -0
- package/lib/components/Header/HeaderMoreMenuItem.js +25 -0
- package/lib/components/Header/HeaderMoreMenuItem.js.map +1 -0
- package/lib/components/Header/HeaderSubMenu.js +2 -2
- package/lib/components/Header/HeaderSubMenu.js.map +1 -1
- package/lib/components/Header/HeaderSubMenuItem.d.ts +3 -0
- package/lib/components/Header/HeaderSubMenuItem.js +20 -3
- package/lib/components/Header/HeaderSubMenuItem.js.map +1 -1
- package/lib/components/Header/HeaderTopMenu.js +2 -2
- package/lib/components/Header/HeaderTopMenu.js.map +1 -1
- package/lib/components/Header/useDropdownSubMenu.d.ts +11 -0
- package/lib/components/Header/useDropdownSubMenu.js +34 -0
- package/lib/components/Header/useDropdownSubMenu.js.map +1 -0
- package/lib/data/NavigationData.d.ts +1 -0
- package/lib/ui-kit/FormField/Fields/ApplicationDateField.d.ts +2 -0
- package/lib/ui-kit/FormField/Fields/ApplicationDateField.js +5 -0
- package/lib/ui-kit/FormField/Fields/ApplicationDateField.js.map +1 -0
- package/lib/ui-kit/FormField/getField.js +2 -2
- package/lib/ui-kit/FormField/getField.js.map +1 -1
- package/mobile/bundle/bundle.umd.js +50 -48
- package/mobile/bundle/bundle.umd.min.js +1 -1
- package/mobile/bundle/components/Header/DropdownButton.d.ts +2 -0
- package/mobile/bundle/components/Header/DropdownMenu.d.ts +5 -2
- package/mobile/bundle/components/Header/HeaderMoreMenuItem.d.ts +9 -0
- package/mobile/bundle/components/Header/HeaderSubMenuItem.d.ts +3 -0
- package/mobile/bundle/components/Header/useDropdownSubMenu.d.ts +11 -0
- package/mobile/bundle/data/NavigationData.d.ts +1 -0
- package/mobile/bundle/ui-kit/FormField/Fields/ApplicationDateField.d.ts +2 -0
- package/mobile/dist/components/Header/DropdownButton.d.ts +2 -0
- package/mobile/dist/components/Header/DropdownButton.js +11 -0
- package/mobile/dist/components/Header/DropdownButton.js.map +1 -0
- package/mobile/dist/components/Header/DropdownMenu.d.ts +5 -2
- package/mobile/dist/components/Header/DropdownMenu.js +2 -36
- package/mobile/dist/components/Header/DropdownMenu.js.map +1 -1
- package/mobile/dist/components/Header/HeaderMoreMenuItem.d.ts +9 -0
- package/mobile/dist/components/Header/HeaderMoreMenuItem.js +27 -0
- package/mobile/dist/components/Header/HeaderMoreMenuItem.js.map +1 -0
- package/mobile/dist/components/Header/HeaderSubMenu.js +2 -2
- package/mobile/dist/components/Header/HeaderSubMenu.js.map +1 -1
- package/mobile/dist/components/Header/HeaderSubMenuItem.d.ts +3 -0
- package/mobile/dist/components/Header/HeaderSubMenuItem.js +19 -2
- package/mobile/dist/components/Header/HeaderSubMenuItem.js.map +1 -1
- package/mobile/dist/components/Header/HeaderTopMenu.js +2 -2
- package/mobile/dist/components/Header/HeaderTopMenu.js.map +1 -1
- package/mobile/dist/components/Header/useDropdownSubMenu.d.ts +11 -0
- package/mobile/dist/components/Header/useDropdownSubMenu.js +37 -0
- package/mobile/dist/components/Header/useDropdownSubMenu.js.map +1 -0
- package/mobile/dist/data/NavigationData.d.ts +1 -0
- package/mobile/dist/ui-kit/FormField/Fields/ApplicationDateField.d.ts +2 -0
- package/mobile/dist/ui-kit/FormField/Fields/ApplicationDateField.js +7 -0
- package/mobile/dist/ui-kit/FormField/Fields/ApplicationDateField.js.map +1 -0
- package/mobile/dist/ui-kit/FormField/getField.js +2 -2
- package/mobile/dist/ui-kit/FormField/getField.js.map +1 -1
- package/mobile/lib/components/Header/DropdownButton.d.ts +2 -0
- package/mobile/lib/components/Header/DropdownButton.js +9 -0
- package/mobile/lib/components/Header/DropdownButton.js.map +1 -0
- package/mobile/lib/components/Header/DropdownMenu.d.ts +5 -2
- package/mobile/lib/components/Header/DropdownMenu.js +2 -37
- package/mobile/lib/components/Header/DropdownMenu.js.map +1 -1
- package/mobile/lib/components/Header/HeaderMoreMenuItem.d.ts +9 -0
- package/mobile/lib/components/Header/HeaderMoreMenuItem.js +25 -0
- package/mobile/lib/components/Header/HeaderMoreMenuItem.js.map +1 -0
- package/mobile/lib/components/Header/HeaderSubMenu.js +2 -2
- package/mobile/lib/components/Header/HeaderSubMenu.js.map +1 -1
- package/mobile/lib/components/Header/HeaderSubMenuItem.d.ts +3 -0
- package/mobile/lib/components/Header/HeaderSubMenuItem.js +20 -3
- package/mobile/lib/components/Header/HeaderSubMenuItem.js.map +1 -1
- package/mobile/lib/components/Header/HeaderTopMenu.js +2 -2
- package/mobile/lib/components/Header/HeaderTopMenu.js.map +1 -1
- package/mobile/lib/components/Header/useDropdownSubMenu.d.ts +11 -0
- package/mobile/lib/components/Header/useDropdownSubMenu.js +34 -0
- package/mobile/lib/components/Header/useDropdownSubMenu.js.map +1 -0
- package/mobile/lib/data/NavigationData.d.ts +1 -0
- package/mobile/lib/ui-kit/FormField/Fields/ApplicationDateField.d.ts +2 -0
- package/mobile/lib/ui-kit/FormField/Fields/ApplicationDateField.js +5 -0
- package/mobile/lib/ui-kit/FormField/Fields/ApplicationDateField.js.map +1 -0
- package/mobile/lib/ui-kit/FormField/getField.js +2 -2
- package/mobile/lib/ui-kit/FormField/getField.js.map +1 -1
- package/mobile/src/components/Header/DropdownButton.tsx +26 -0
- package/mobile/src/components/Header/DropdownMenu.tsx +15 -85
- package/mobile/src/components/Header/HeaderMoreMenuItem.tsx +60 -0
- package/mobile/src/components/Header/HeaderSubMenu.tsx +3 -2
- package/mobile/src/components/Header/HeaderSubMenuItem.tsx +31 -5
- package/mobile/src/components/Header/HeaderTopMenu.tsx +3 -3
- package/mobile/src/components/Header/useDropdownSubMenu.tsx +48 -0
- package/mobile/src/data/NavigationData.ts +1 -0
- package/mobile/src/ui-kit/FormField/Fields/ApplicationDateField.tsx +7 -0
- package/mobile/src/ui-kit/FormField/getField.tsx +2 -4
- package/package.json +1 -1
- package/src/components/Header/DropdownButton.tsx +26 -0
- package/src/components/Header/DropdownMenu.tsx +15 -85
- package/src/components/Header/Header.fixture.tsx +4 -0
- package/src/components/Header/HeaderMoreMenuItem.tsx +60 -0
- package/src/components/Header/HeaderSubMenu.tsx +3 -2
- package/src/components/Header/HeaderSubMenuItem.tsx +31 -5
- package/src/components/Header/HeaderTopMenu.tsx +3 -3
- package/src/components/Header/useDropdownSubMenu.tsx +48 -0
- package/src/data/NavigationData.ts +1 -0
- package/src/icons/IconName.ts +4 -4
- package/src/ui-kit/FormField/Fields/ApplicationDateField.tsx +7 -0
- package/src/ui-kit/FormField/getField.tsx +2 -4
package/bundle/bundle.umd.js
CHANGED
|
@@ -1244,35 +1244,10 @@
|
|
|
1244
1244
|
|
|
1245
1245
|
const getConsentDataProcessing = (inputs) => inputs?.find((_) => _?.name === 'consentDataProcessing');
|
|
1246
1246
|
|
|
1247
|
-
function useEventListener(target, type, listener, options) {
|
|
1248
|
-
useEffect(() => {
|
|
1249
|
-
if (!target || !listener) {
|
|
1250
|
-
return;
|
|
1251
|
-
}
|
|
1252
|
-
target.addEventListener(type, listener, options);
|
|
1253
|
-
return () => {
|
|
1254
|
-
target.removeEventListener(type, listener, options);
|
|
1255
|
-
};
|
|
1256
|
-
}, [target, type, listener]);
|
|
1257
|
-
}
|
|
1258
|
-
|
|
1259
|
-
function useOutsideClick(onClick) {
|
|
1260
|
-
const targetRef = useRef(null);
|
|
1261
|
-
const handleClickOutside = useCallback((event) => {
|
|
1262
|
-
if (targetRef && targetRef.current && event.target instanceof Node && !targetRef.current.contains(event.target)) {
|
|
1263
|
-
onClick();
|
|
1264
|
-
}
|
|
1265
|
-
}, [onClick]);
|
|
1266
|
-
useEventListener(globalThis.document, 'click', handleClickOutside);
|
|
1267
|
-
return targetRef;
|
|
1268
|
-
}
|
|
1269
|
-
|
|
1270
1247
|
// TODO Базовая функицональность всех Control - надо вынести и привязать к required флагу
|
|
1271
1248
|
const getRequiredLabel = ({ label, errors }) => label && errors ? `${label}*` : label;
|
|
1272
1249
|
|
|
1273
|
-
const
|
|
1274
|
-
// Do nothing
|
|
1275
|
-
};
|
|
1250
|
+
const renderErrorText = (error) => (jsx("div", { className: "h-6", children: error ? (jsx(Text, { size: "text-xs", font: "font-light", color: "text-error", children: error })) : null }));
|
|
1276
1251
|
|
|
1277
1252
|
const inputValidStyle = 'border border-solid outline-none border-gray hover:border-primary-hover active:border-primary-text focus:border-primary-text rounded';
|
|
1278
1253
|
|
|
@@ -1300,28 +1275,30 @@
|
|
|
1300
1275
|
});
|
|
1301
1276
|
const defaultStyle$1 = 'w-full border rounded-md text-primary-text outline-none p-m';
|
|
1302
1277
|
|
|
1303
|
-
const
|
|
1304
|
-
|
|
1305
|
-
const InputWrapper = JSX(({ className, label, value = '', error, errors, type, isInteger, placeholder, maxLength, inputRef, isOpen, onOpen, onClose, onChange = noop, ...rest }) => {
|
|
1306
|
-
const popupRef = useOutsideClick(onClose);
|
|
1307
|
-
const handleChange = useCallback((v) => {
|
|
1308
|
-
const isOverMax = maxLength && v.length > maxLength;
|
|
1309
|
-
!isOpen && onOpen();
|
|
1310
|
-
if (!isOverMax) {
|
|
1311
|
-
onChange(normalizeInteger(v, isInteger));
|
|
1312
|
-
}
|
|
1313
|
-
}, [isOpen, onChange]);
|
|
1314
|
-
return (jsxs("div", { className: style('shrink-0 w-full', className), ref: popupRef, onBlur: onClose, onFocus: onOpen, children: [jsx("div", { ref: inputRef, children: jsx(Input, { type: type || 'text', "aria-label": label, label: getRequiredLabel({ label, errors }), valid: Boolean(!error), onChange: handleChange, placeholder: getPlaceholder({ placeholder, errors, label }), value: value, ...rest }) }), renderErrorText(error)] }));
|
|
1315
|
-
});
|
|
1316
|
-
const normalizeInteger = (val = '', isInteger = false) => isInteger && val ? val.replace(/[^\d]+/g, '') : val;
|
|
1317
|
-
const getPlaceholder = ({ placeholder, errors, label }) => errors && !label ? `${placeholder}*` : placeholder;
|
|
1278
|
+
const formatOption = (_) => _?.text || _?.key || '';
|
|
1318
1279
|
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1280
|
+
function useEventListener(target, type, listener, options) {
|
|
1281
|
+
useEffect(() => {
|
|
1282
|
+
if (!target || !listener) {
|
|
1283
|
+
return;
|
|
1284
|
+
}
|
|
1285
|
+
target.addEventListener(type, listener, options);
|
|
1286
|
+
return () => {
|
|
1287
|
+
target.removeEventListener(type, listener, options);
|
|
1288
|
+
};
|
|
1289
|
+
}, [target, type, listener]);
|
|
1290
|
+
}
|
|
1323
1291
|
|
|
1324
|
-
|
|
1292
|
+
function useOutsideClick(onClick) {
|
|
1293
|
+
const targetRef = useRef(null);
|
|
1294
|
+
const handleClickOutside = useCallback((event) => {
|
|
1295
|
+
if (targetRef && targetRef.current && event.target instanceof Node && !targetRef.current.contains(event.target)) {
|
|
1296
|
+
onClick();
|
|
1297
|
+
}
|
|
1298
|
+
}, [onClick]);
|
|
1299
|
+
useEventListener(globalThis.document, 'click', handleClickOutside);
|
|
1300
|
+
return targetRef;
|
|
1301
|
+
}
|
|
1325
1302
|
|
|
1326
1303
|
const usePopupManager = () => useEmitterWithActions(defaultEventBus.emitter, 'popup');
|
|
1327
1304
|
|
|
@@ -1594,8 +1571,33 @@
|
|
|
1594
1571
|
const ITEMS_CREDIT_AMOUNT = ['От 1 000 ₽', 'До 1 000 000 000 ₽'];
|
|
1595
1572
|
const AmountField = JSX(({ field, input }) => (jsx(InputRange, { title: "\u0421\u0443\u043C\u043C\u0430, \u20BD", items: ITEMS_CREDIT_AMOUNT, min: MIN_CREDIT_AMOUNT, max: MAX_CREDIT_AMOUNT, ...field(input?.name ?? '') })));
|
|
1596
1573
|
|
|
1574
|
+
const noop = () => {
|
|
1575
|
+
// Do nothing
|
|
1576
|
+
};
|
|
1577
|
+
|
|
1578
|
+
const InputWrapper = JSX(({ className, label, value = '', error, errors, type, isInteger, placeholder, maxLength, inputRef, isOpen, onOpen, onClose, onChange = noop, ...rest }) => {
|
|
1579
|
+
const popupRef = useOutsideClick(onClose);
|
|
1580
|
+
const handleChange = useCallback((v) => {
|
|
1581
|
+
const isOverMax = maxLength && v.length > maxLength;
|
|
1582
|
+
!isOpen && onOpen();
|
|
1583
|
+
if (!isOverMax) {
|
|
1584
|
+
onChange(normalizeInteger(v, isInteger));
|
|
1585
|
+
}
|
|
1586
|
+
}, [isOpen, onChange]);
|
|
1587
|
+
return (jsxs("div", { className: style('shrink-0 w-full', className), ref: popupRef, onBlur: onClose, onFocus: onOpen, children: [jsx("div", { ref: inputRef, children: jsx(Input, { type: type || 'text', "aria-label": label, label: getRequiredLabel({ label, errors }), valid: Boolean(!error), onChange: handleChange, placeholder: getPlaceholder({ placeholder, errors, label }), value: value, ...rest }) }), renderErrorText(error)] }));
|
|
1588
|
+
});
|
|
1589
|
+
const normalizeInteger = (val = '', isInteger = false) => isInteger && val ? val.replace(/[^\d]+/g, '') : val;
|
|
1590
|
+
const getPlaceholder = ({ placeholder, errors, label }) => errors && !label ? `${placeholder}*` : placeholder;
|
|
1591
|
+
|
|
1592
|
+
const InputControl = JSX((props) => {
|
|
1593
|
+
const [isOpen, { setFalse: close, setTrue: open }] = useBool();
|
|
1594
|
+
return jsx(InputWrapper, { isOpen: isOpen, onOpen: open, onClose: close, ...props });
|
|
1595
|
+
});
|
|
1596
|
+
|
|
1597
1597
|
const AnnualRevenueField = JSX(({ field, input }) => (jsx(InputControl, { label: "\u0413\u043E\u0434\u043E\u0432\u0430\u044F \u0432\u044B\u0440\u0443\u0447\u043A\u0430, \u20BD", ...field(input?.name ?? '') })));
|
|
1598
1598
|
|
|
1599
|
+
const ApplicationDateField = JSX(({ field, input }) => (jsx(InputControl, { label: "\u0414\u0430\u0442\u0430 \u0438 \u0432\u0440\u0435\u043C\u044F \u043E\u0431\u0440\u0430\u0449\u0435\u043D\u0438\u044F \u0432 \u0411\u0430\u043D\u043A", ...field(input?.name ?? '') })));
|
|
1600
|
+
|
|
1599
1601
|
const CLIENT_KEY = 'client';
|
|
1600
1602
|
const REPRESENTATIVE_KEY = 'representative';
|
|
1601
1603
|
const APPLIER_TYPES = [
|
|
@@ -2238,7 +2240,7 @@
|
|
|
2238
2240
|
serviceDirection: ServiceDirectionField,
|
|
2239
2241
|
bankEmpolee: BankEmpoleeField,
|
|
2240
2242
|
secondaryPhone: SecondaryPhoneField,
|
|
2241
|
-
applicationDate:
|
|
2243
|
+
applicationDate: ApplicationDateField,
|
|
2242
2244
|
region: (props) => getPremium(props?.params?.typeForm) ? (jsx(RegionPremiumField, { ...props })) : (jsx(RegionField, { ...props })),
|
|
2243
2245
|
consentToReceiveMaterials: ConsentToReceiveMaterialsField,
|
|
2244
2246
|
sufferedFrom: SufferedFromField,
|
|
@@ -10066,47 +10068,6 @@
|
|
|
10066
10068
|
return isURL(href) ? globalThis?.location?.href : joinPath(basePath, router.pathname);
|
|
10067
10069
|
};
|
|
10068
10070
|
|
|
10069
|
-
const DropdownMenu = JSX(({ className = '', items, activeItem, ariaLabel = 'Меню' }) => {
|
|
10070
|
-
const [isVisible, { setFalse, toggle }] = useBool(false);
|
|
10071
|
-
const ref = useOutsideClick(setFalse);
|
|
10072
|
-
const dropdownRef = useRef(null);
|
|
10073
|
-
const changeDropdownPosition = useCallback(({ isOpened, buttonRef, menuRef }) => {
|
|
10074
|
-
if (isOpened && buttonRef.current && menuRef.current) {
|
|
10075
|
-
const dropdownRect = menuRef.current.getBoundingClientRect();
|
|
10076
|
-
const dropdownButtonRect = buttonRef.current.getBoundingClientRect();
|
|
10077
|
-
const newDropdownPosition = globalThis.innerWidth - dropdownRect.width;
|
|
10078
|
-
if (dropdownRect.right >= globalThis.innerWidth) {
|
|
10079
|
-
menuRef.current.style.left = `${newDropdownPosition}px`;
|
|
10080
|
-
}
|
|
10081
|
-
else if (dropdownButtonRect.left > dropdownRect.left) {
|
|
10082
|
-
if (newDropdownPosition > dropdownButtonRect.left) {
|
|
10083
|
-
menuRef.current.style.left = '';
|
|
10084
|
-
}
|
|
10085
|
-
else {
|
|
10086
|
-
menuRef.current.style.left = `${newDropdownPosition}px`;
|
|
10087
|
-
}
|
|
10088
|
-
}
|
|
10089
|
-
}
|
|
10090
|
-
}, [isVisible]);
|
|
10091
|
-
useEventListener(globalThis, 'resize', () => changeDropdownPosition({ isOpened: isVisible, buttonRef: ref, menuRef: dropdownRef }));
|
|
10092
|
-
useEffect(() => {
|
|
10093
|
-
changeDropdownPosition({ isOpened: isVisible, buttonRef: ref, menuRef: dropdownRef });
|
|
10094
|
-
}, [isVisible]);
|
|
10095
|
-
return (jsxs("div", { className: style(isVisible ? 'rounded-md shadow-blue-gray' : '', className), ref: ref, role: "navigation", children: [jsx("button", { type: "button", className: "group/btn flex justify-between items-center h-6", "aria-label": ariaLabel, onClick: toggle, role: "button", "aria-labelledby": "labeldiv", children: Array(3)
|
|
10096
|
-
.fill(null)
|
|
10097
|
-
.map((_, i) => (jsx("div", { className: "w-[3px] h-[3px] rounded mr-2xs bg-primary-text group-hover/btn:bg-primary-hover group-data-transparent:bg-white" }, String(i)))) }), jsx("div", { ref: dropdownRef, className: style('absolute flex flex-col rounded-md bg-white p-xl pb-xs w-56 z-40', {
|
|
10098
|
-
hidden: !isVisible,
|
|
10099
|
-
}), "aria-hidden": !isVisible, children: renderDropdownItems(items, activeItem) })] }));
|
|
10100
|
-
});
|
|
10101
|
-
const DropdownMenuItem = JSX(({ isActive, ...rest }) => {
|
|
10102
|
-
const link = useLink();
|
|
10103
|
-
const { text, href, target, onClick } = link(rest);
|
|
10104
|
-
return (jsx("a", { className: style('text-l font-light pb-m hover:text-primary-main', {
|
|
10105
|
-
'text-primary-main': isActive,
|
|
10106
|
-
}), href: href, target: target, onClick: onClick, role: "link", ...getAspectsAttributes(rest?.data), children: text }));
|
|
10107
|
-
});
|
|
10108
|
-
const renderDropdownItems = (items, activeItem) => items?.map((item, i) => (jsx(DropdownMenuItem, { isActive: item === activeItem, ...item }, item?.text ?? String(i))));
|
|
10109
|
-
|
|
10110
10071
|
const BUTTON_SIZE_STYLE = {
|
|
10111
10072
|
default: 'w-6 h-6',
|
|
10112
10073
|
medium: 'w-10 h-10',
|
|
@@ -10137,6 +10098,64 @@
|
|
|
10137
10098
|
return (jsx(HeaderSecondaryMenuButton, { className: className, image: { icon: 'ChatBotIcon', iconVersion }, ariaLabel: ariaLabel, onClick: handleClick, buttonSize: buttonSize, isGrayBg: true, version: version, isLoading: isLoading, disabled: isLoading, dataTestId: "chat icon" }));
|
|
10138
10099
|
});
|
|
10139
10100
|
|
|
10101
|
+
const DropdownMenu = ({ dropdownRef, items = [], activeItem, ariaLabel, }) => (jsx("div", { ref: dropdownRef, className: "absolute flex flex-col rounded-md bg-white p-xl pb-xs w-56 z-40", "aria-label": ariaLabel, children: renderDropdownItems(items, activeItem) }));
|
|
10102
|
+
const DropdownMenuItem = JSX(({ isActive, ...rest }) => {
|
|
10103
|
+
const link = useLink();
|
|
10104
|
+
const { text, href, target, onClick } = link(rest);
|
|
10105
|
+
return (jsx("a", { className: style('text-l font-light pb-m hover:text-primary-main', {
|
|
10106
|
+
'text-primary-main': isActive,
|
|
10107
|
+
}), href: href, target: target, onClick: onClick, role: "link", ...getAspectsAttributes(rest?.data), children: text }));
|
|
10108
|
+
});
|
|
10109
|
+
const renderDropdownItems = (items, activeItem) => items?.map((item, i) => (jsx(DropdownMenuItem, { isActive: item === activeItem, ...item }, item?.text ?? String(i))));
|
|
10110
|
+
|
|
10111
|
+
function useDropdownSubMenu({ items, activeItem, onClose, isOpen }) {
|
|
10112
|
+
const popup = usePopupManager();
|
|
10113
|
+
useEffect(() => {
|
|
10114
|
+
if (isOpen) {
|
|
10115
|
+
popup.close();
|
|
10116
|
+
}
|
|
10117
|
+
}, [isOpen]);
|
|
10118
|
+
const close = useCallback(() => {
|
|
10119
|
+
popup.close();
|
|
10120
|
+
onClose?.();
|
|
10121
|
+
}, [onClose]);
|
|
10122
|
+
const parentRef = useRef(null);
|
|
10123
|
+
const popupRef = useOutsideClick(close);
|
|
10124
|
+
useEffect(() => {
|
|
10125
|
+
if (!isOpen || !parentRef.current || !items?.length) {
|
|
10126
|
+
return;
|
|
10127
|
+
}
|
|
10128
|
+
const parentElement = parentRef.current;
|
|
10129
|
+
const { top, left, width, height } = parentElement.getBoundingClientRect();
|
|
10130
|
+
popup.open({
|
|
10131
|
+
popup: jsx(DropdownMenu, { dropdownRef: popupRef, items: items, activeItem: activeItem }),
|
|
10132
|
+
top: top + window.scrollY + height,
|
|
10133
|
+
left,
|
|
10134
|
+
width,
|
|
10135
|
+
});
|
|
10136
|
+
}, [isOpen, items, close]);
|
|
10137
|
+
return parentRef;
|
|
10138
|
+
}
|
|
10139
|
+
|
|
10140
|
+
const HeaderMoreMenuItem = JSX(({ className = '', items, activeItem, ariaLabel = 'Меню' }) => {
|
|
10141
|
+
const [isOpenDropdown, { setFalse, toggle }] = useBool(false);
|
|
10142
|
+
const dropdownMenu = useDropdownSubMenu({
|
|
10143
|
+
items,
|
|
10144
|
+
onClose: setFalse,
|
|
10145
|
+
isOpen: isOpenDropdown,
|
|
10146
|
+
activeItem,
|
|
10147
|
+
});
|
|
10148
|
+
useEffect(() => {
|
|
10149
|
+
dropdownMenu.current?.addEventListener('mouseleave', setFalse);
|
|
10150
|
+
return () => {
|
|
10151
|
+
dropdownMenu.current?.removeEventListener('mouseleave', setFalse);
|
|
10152
|
+
};
|
|
10153
|
+
}, []);
|
|
10154
|
+
return (jsx("div", { className: style(isOpenDropdown ? 'rounded-md shadow-blue-gray' : '', className), ref: dropdownMenu, role: "navigation", children: jsx("button", { type: "button", className: "group/btn flex justify-between items-center h-6", "aria-label": ariaLabel, onClick: toggle, role: "button", "aria-labelledby": "labeldiv", children: Array(3)
|
|
10155
|
+
.fill(null)
|
|
10156
|
+
.map((_, i) => (jsx("div", { className: "w-[3px] h-[3px] rounded mr-2xs bg-primary-text group-hover/btn:bg-primary-hover group-data-transparent:bg-white" }, String(i)))) }) }));
|
|
10157
|
+
});
|
|
10158
|
+
|
|
10140
10159
|
const HeaderItem = JSX(({ className = '', active, dataItemName, children, data, ...rest }) => {
|
|
10141
10160
|
const link = useLink();
|
|
10142
10161
|
const { href, target, text, onClick } = link(rest);
|
|
@@ -10144,7 +10163,8 @@
|
|
|
10144
10163
|
});
|
|
10145
10164
|
const getTextStyle$1 = (active = false) => style('font-sans text-l lg:font-light', active ? 'text-primary-main' : 'text-primary-text hover:text-primary-main', 'group-data-transparent:text-white group-data-transparent:hover:text-primary-hover');
|
|
10146
10165
|
|
|
10147
|
-
const HeaderSubMenuItem = JSX(({ observerOptions, onVisibilityChange, children, className, ...rest }) => {
|
|
10166
|
+
const HeaderSubMenuItem = JSX(({ observerOptions, onVisibilityChange, children, className, items, activeItem, ...rest }) => {
|
|
10167
|
+
const [isOpenDropdown, { setFalse, setTrue }] = useBool(false);
|
|
10148
10168
|
const observerCallback = useCallback((entries) => {
|
|
10149
10169
|
if (!entries.length || !onVisibilityChange) {
|
|
10150
10170
|
return;
|
|
@@ -10154,7 +10174,21 @@
|
|
|
10154
10174
|
onVisibilityChange(entry.isIntersecting);
|
|
10155
10175
|
}, [onVisibilityChange]);
|
|
10156
10176
|
const ref = useIntersectionObserver(observerCallback, observerOptions);
|
|
10157
|
-
|
|
10177
|
+
const dropdownMenu = useDropdownSubMenu({
|
|
10178
|
+
items,
|
|
10179
|
+
onClose: setFalse,
|
|
10180
|
+
isOpen: isOpenDropdown,
|
|
10181
|
+
activeItem,
|
|
10182
|
+
});
|
|
10183
|
+
useEffect(() => {
|
|
10184
|
+
dropdownMenu.current?.addEventListener('mouseenter', setTrue);
|
|
10185
|
+
dropdownMenu.current?.addEventListener('mouseleave', setFalse);
|
|
10186
|
+
return () => {
|
|
10187
|
+
dropdownMenu.current?.addEventListener('mouseenter', setTrue);
|
|
10188
|
+
dropdownMenu.current?.removeEventListener('mouseleave', setFalse);
|
|
10189
|
+
};
|
|
10190
|
+
}, []);
|
|
10191
|
+
return (jsx("div", { className: "inline-block", ref: dropdownMenu, children: jsx("span", { ref: ref, className: className, role: "menuitem", children: jsx(HeaderItem, { ...rest, children: children }) }) }));
|
|
10158
10192
|
});
|
|
10159
10193
|
|
|
10160
10194
|
const BUTTON_STYLE = {
|
|
@@ -10179,7 +10213,7 @@
|
|
|
10179
10213
|
? handleIntersectionActivation$1(index)
|
|
10180
10214
|
: handleIntersectionDeactivation$1(index));
|
|
10181
10215
|
}), [subItems]);
|
|
10182
|
-
return (jsxs("nav", { className: "mt-s flex gap-s items-center justify-between", children: [jsx("div", { ref: subItemsListRef, className: "overflow-hidden whitespace-nowrap pb-s mt-xs space-x-lg", role: "menu", children: subItems.map((_, i) => (jsx(HeaderSubMenuItem, { className: visibleItemsCount - 1 < i ? 'invisible' : '', active: _ === activeSubItem, observerOptions: observerOptions, onVisibilityChange: subItemsVisibilityHandlers[i], data: _.dataHeader, ..._ }, String(i)))) }), dropDownMenuItems.length ? (jsx(
|
|
10216
|
+
return (jsxs("nav", { className: "mt-s flex gap-s items-center justify-between", children: [jsx("div", { ref: subItemsListRef, className: "overflow-hidden whitespace-nowrap pb-s mt-xs space-x-lg", role: "menu", children: subItems.map((_, i) => (jsx(HeaderSubMenuItem, { className: visibleItemsCount - 1 < i ? 'invisible' : '', active: _ === activeSubItem, activeItem: activeSubItem, observerOptions: observerOptions, onVisibilityChange: subItemsVisibilityHandlers[i], data: _.dataHeader, ..._ }, String(i)))) }), dropDownMenuItems.length ? (jsx(HeaderMoreMenuItem, { items: dropDownMenuItems, activeItem: activeSubItem, ariaLabel: dropdownMenuAriaLabel })) : null, projectSettings.CHAT_BOT ? (jsx(HeaderChatBotButton, { version: version, iconVersion: iconVersion, ariaLabel: chatBotAriaLabel })) : null, jsx(InternetBankButton, { version: version, ...internetBankButton })] }));
|
|
10183
10217
|
});
|
|
10184
10218
|
const handleIntersectionActivation$1 = (index) => (prev) => Math.max(prev, index + 1);
|
|
10185
10219
|
const handleIntersectionDeactivation$1 = (index) => (prev) => Math.min(prev, index);
|
|
@@ -10304,7 +10338,7 @@
|
|
|
10304
10338
|
}), [navigationItems]);
|
|
10305
10339
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
10306
10340
|
const { dataFooter, dataHeader, ...logoProps } = logo ?? {};
|
|
10307
|
-
return (jsxs("div", { className: "flex items-center justify-between", children: [jsx(Logo, { className: "mr-3xl", bgColor: bgColor, logo: logoProps, data: dataHeader, showTitle: false }), jsx("div", { ref: topItemsListRef, className: "overflow-hidden min-w-40 pb-xs mt-xs", role: "menu", children: navigationItems.map((_, i) => (jsx(HeaderTopMenuItem, { className: visibleItemsCount - 1 < i ? 'invisible' : '', active: _ === activeTopItem, observerOptions: observerOptions, onVisibilityChange: topItemsVisibilityHandlers[i], data: _.dataHeader, ..._ }, String(i)))) }), dropDownMenuItems.length ? (jsx(
|
|
10341
|
+
return (jsxs("div", { className: "flex items-center justify-between", children: [jsx(Logo, { className: "mr-3xl", bgColor: bgColor, logo: logoProps, data: dataHeader, showTitle: false }), jsx("div", { ref: topItemsListRef, className: "overflow-hidden min-w-40 pb-xs mt-xs", role: "menu", children: navigationItems.map((_, i) => (jsx(HeaderTopMenuItem, { className: visibleItemsCount - 1 < i ? 'invisible' : '', active: _ === activeTopItem, observerOptions: observerOptions, onVisibilityChange: topItemsVisibilityHandlers[i], data: _.dataHeader, ..._ }, String(i)))) }), dropDownMenuItems.length ? (jsx(HeaderMoreMenuItem, { className: "mx-xs rounded-md shadow-blue-gray", items: dropDownMenuItems, activeItem: activeTopItem, ariaLabel: dropdownMenuAriaLabel })) : null, jsx(HeaderSecondaryMenu, { version: version, className: "ml-auto", search: search, navigationItems: navigationItems, ...headerData })] }));
|
|
10308
10342
|
});
|
|
10309
10343
|
const handleIntersectionActivation = (index) => (prev) => Math.max(prev, index + 1);
|
|
10310
10344
|
const handleIntersectionDeactivation = (index) => (prev) => Math.min(prev, index);
|
|
@@ -11177,7 +11211,7 @@
|
|
|
11177
11211
|
slots: () => [HEADER_SLOT, FOOTER_SLOT, STICKY_FOOTER_SLOT],
|
|
11178
11212
|
});
|
|
11179
11213
|
|
|
11180
|
-
const packageVersion = "0.14.
|
|
11214
|
+
const packageVersion = "0.14.875";
|
|
11181
11215
|
|
|
11182
11216
|
exports.Blocks = Blocks;
|
|
11183
11217
|
exports.ContentPage = ContentPage;
|