diff --git a/.changeset/angry-points-chew.md b/.changeset/angry-points-chew.md new file mode 100644 index 0000000000..0535e4209a --- /dev/null +++ b/.changeset/angry-points-chew.md @@ -0,0 +1,5 @@ +--- +'@alfalab/core-components-international-phone-input': minor +--- + +Экспорт массива countriesData и его типа (для модификации по месту использования) diff --git a/.changeset/dull-olives-bathe.md b/.changeset/dull-olives-bathe.md new file mode 100644 index 0000000000..b49cafc422 --- /dev/null +++ b/.changeset/dull-olives-bathe.md @@ -0,0 +1,5 @@ +--- +'@alfalab/core-components-vars': minor +--- + +Добавлена единица длины для нулевого значения diff --git a/.changeset/five-eels-rescue.md b/.changeset/five-eels-rescue.md new file mode 100644 index 0000000000..9da5948b05 --- /dev/null +++ b/.changeset/five-eels-rescue.md @@ -0,0 +1,5 @@ +--- +'@alfalab/core-components-side-panel': patch +--- + +Добавлена поддержка безопасных отступов safe-area diff --git a/.changeset/flat-crews-cover.md b/.changeset/flat-crews-cover.md new file mode 100644 index 0000000000..f27d336c34 --- /dev/null +++ b/.changeset/flat-crews-cover.md @@ -0,0 +1,6 @@ +--- +'@alfalab/core-components-modal': patch +'@alfalab/core-components-side-panel': patch +--- + +Добавлена обработка safe-area diff --git a/.changeset/gold-maps-bell.md b/.changeset/gold-maps-bell.md new file mode 100644 index 0000000000..18a5f69a96 --- /dev/null +++ b/.changeset/gold-maps-bell.md @@ -0,0 +1,7 @@ +--- +'@alfalab/core-components-modal': patch +'@alfalab/core-components-side-panel': patch +--- + +- Фикс паддинга заголовка компонента SidePanel в PWA c safe-area +- Фикс паддинга заголовка компонента Modal в PWA c safe-area diff --git a/.changeset/gold-maps-yell.md b/.changeset/gold-maps-yell.md new file mode 100644 index 0000000000..1cd9218833 --- /dev/null +++ b/.changeset/gold-maps-yell.md @@ -0,0 +1,5 @@ +--- +'@alfalab/core-components-bottom-sheet': minor +--- + +- Добавлено свойство *adjustContainerHeight* для возможности подстраивать высоту контейнера bottomSheet извне, например с учётом верхней и/или нижней safe-area diff --git a/.changeset/silly-seas-lie.md b/.changeset/silly-seas-lie.md new file mode 100644 index 0000000000..eef2f6ac8d --- /dev/null +++ b/.changeset/silly-seas-lie.md @@ -0,0 +1,5 @@ +--- +'@alfalab/core-components-calendar': patch +--- + +Критическое исправление `month-only` календаря связанное с работой minDate/maxDate пропсов diff --git a/.changeset/small-pigs-sell.md b/.changeset/small-pigs-sell.md new file mode 100644 index 0000000000..af9b15f8d7 --- /dev/null +++ b/.changeset/small-pigs-sell.md @@ -0,0 +1,5 @@ +--- +'@alfalab/core-components-gallery': patch +--- + +Добавлен отдельный компонент для single изображения, что сделать его независимым от swiper diff --git a/.changeset/violet-dancers-check.md b/.changeset/violet-dancers-check.md new file mode 100644 index 0000000000..580d8e2c3e --- /dev/null +++ b/.changeset/violet-dancers-check.md @@ -0,0 +1,5 @@ +--- +'@alfalab/core-components-international-phone-input': minor +--- + +добавлен опциональный проп customCountriesList, который можно использовать, чтобы переопределить дефолтный массив country-data diff --git a/.changeset/weak-poems-fail.md b/.changeset/weak-poems-fail.md new file mode 100644 index 0000000000..20fe43c21f --- /dev/null +++ b/.changeset/weak-poems-fail.md @@ -0,0 +1,5 @@ +--- +'@alfalab/core-components-input': patch +--- + +Фикс вызова input.setSelectionRange diff --git a/package.json b/package.json index 757111f0da..2c12f89fdb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@alfalab/core-components", - "version": "47.26.1", + "version": "47.26.8", "private": true, "workspaces": [ "packages/*" diff --git a/packages/base-modal/src/Component.tsx b/packages/base-modal/src/Component.tsx index bcd9d7e773..c754cee16e 100644 --- a/packages/base-modal/src/Component.tsx +++ b/packages/base-modal/src/Component.tsx @@ -625,6 +625,10 @@ export const BaseModal = forwardRef( styles.content, contentClassName, contentProps?.className, + { + [styles.hasFooter]: hasFooter, + [styles.hasHeader]: hasHeader, + }, )} > {children} diff --git a/packages/base-modal/src/index.module.css b/packages/base-modal/src/index.module.css index 9a9ab5b15a..af8ac30ff1 100644 --- a/packages/base-modal/src/index.module.css +++ b/packages/base-modal/src/index.module.css @@ -39,6 +39,18 @@ body:global(.is-locked) { display: flex; flex-direction: column; flex: 1; + + &.hasFooter { + @media (display-mode: standalone) { + padding-bottom: unset; + } + } + + &.hasHeader { + @media (display-mode: standalone) { + padding-top: unset; + } + } } .hidden { diff --git a/packages/bottom-sheet/src/__snapshots__/component.test.tsx.snap b/packages/bottom-sheet/src/__snapshots__/component.test.tsx.snap index cac56c7bec..7cd23b2583 100644 --- a/packages/bottom-sheet/src/__snapshots__/component.test.tsx.snap +++ b/packages/bottom-sheet/src/__snapshots__/component.test.tsx.snap @@ -34,7 +34,7 @@ exports[`Bottom sheet Snapshots tests should match snapshot 1`] = ` class="component modal appear appearActive" >
value; + export const BottomSheet = forwardRef( ( { @@ -89,6 +91,7 @@ export const BottomSheet = forwardRef( bottomSheetInstanceRef, sheetContainerRef = () => null, headerOffset = 24, + adjustContainerHeight = adjustContainerHeightDefault, onClose, onBack, onMagnetize, @@ -110,11 +113,12 @@ export const BottomSheet = forwardRef( ) => { const windowHeight = use100vh() ?? 0; const visibleViewportSize = useVisibleViewportSize(virtualKeyboard); - const fullHeight = virtualKeyboard ? visibleViewportSize?.height ?? 0 : windowHeight; - + let fullHeight = virtualKeyboard ? visibleViewportSize?.height ?? 0 : windowHeight; // Хук use100vh рассчитывает высоту вьюпорта в useEffect, поэтому на первый рендер всегда возвращает null. const isFirstRender = fullHeight === 0; + fullHeight = adjustContainerHeight(fullHeight); + const initialIndexRef = useRef(initialActiveAreaIndex); const magneticAreas = useMemo(() => { @@ -123,15 +127,21 @@ export const BottomSheet = forwardRef( convertPercentToNumber(area, fullHeight, headerOffset), ); } + let iOSViewHeight = 0; - const iOSViewHeight = isClient() - ? document?.documentElement?.clientHeight || window?.innerHeight - : 0; + if (isClient()) { + if (document?.documentElement?.clientHeight) { + iOSViewHeight = adjustContainerHeight(document.documentElement.clientHeight); + } else { + iOSViewHeight = window?.innerHeight; + } + } const viewHeight = os.isIOS() && !virtualKeyboard ? iOSViewHeight : fullHeight; return [0, viewHeight - headerOffset]; - }, [fullHeight, headerOffset, magneticAreasProp, virtualKeyboard]); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [fullHeight, headerOffset, magneticAreasProp, virtualKeyboard, adjustContainerHeight]); const lastMagneticArea = magneticAreas[magneticAreas.length - 1]; diff --git a/packages/bottom-sheet/src/index.module.css b/packages/bottom-sheet/src/index.module.css index ffca5835b8..f25d4634ee 100644 --- a/packages/bottom-sheet/src/index.module.css +++ b/packages/bottom-sheet/src/index.module.css @@ -1,4 +1,5 @@ @import '../../vars/src/index.css'; +@import '../../vars/src/safe-area.css'; @import './vars.css'; .modal { @@ -141,7 +142,7 @@ } .safeAreaBottom { - padding-bottom: env(safe-area-inset-bottom); + padding-bottom: var(--sab); } @mixin bg-class-list; diff --git a/packages/bottom-sheet/src/types.ts b/packages/bottom-sheet/src/types.ts index 334f9c5624..e81f615669 100644 --- a/packages/bottom-sheet/src/types.ts +++ b/packages/bottom-sheet/src/types.ts @@ -10,6 +10,10 @@ import type { BackgroundColorType } from '../../types'; export type BottomSheetTitleAlign = 'center' | 'left'; export type BottomSheetProps = { + /** + * Метод, позволяющий донастраивать высоту контейнера для BottomSheet, например с учётом safe-area + */ + adjustContainerHeight?: (height: number) => number /** * Контент */ diff --git a/packages/calendar-with-skeleton/src/__image_snapshots__/calendar-with-skeleton-default-view-sprite-snap.png b/packages/calendar-with-skeleton/src/__image_snapshots__/calendar-with-skeleton-default-view-sprite-snap.png index 8c2b7a8aa9..aa42e1efeb 100644 --- a/packages/calendar-with-skeleton/src/__image_snapshots__/calendar-with-skeleton-default-view-sprite-snap.png +++ b/packages/calendar-with-skeleton/src/__image_snapshots__/calendar-with-skeleton-default-view-sprite-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0057c9a395be37d62de7dc105edb924b66ef1507d3a46e7b1291ae6c15574bd0 -size 57243 +oid sha256:bc5fe7a43facbcc859f1454c4f85d1a48388cb6f7d840c397b374fa9cbc8e61a +size 58731 diff --git a/packages/calendar/src/__image_snapshots__/calendar-default-view-corp-sprite-snap.png b/packages/calendar/src/__image_snapshots__/calendar-default-view-corp-sprite-snap.png index 3f62bc5789..57163242c7 100644 --- a/packages/calendar/src/__image_snapshots__/calendar-default-view-corp-sprite-snap.png +++ b/packages/calendar/src/__image_snapshots__/calendar-default-view-corp-sprite-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:805f981e2d0c1e999e79d59a2ce8cc90cf6a6d4bb8fd8318d67bdc97cc4ab5f9 -size 65246 +oid sha256:0cfab94f7a74bec5082ee951f8f1c4283cc8b3b7cacddd76e8ad5cdf5c56cde5 +size 65850 diff --git a/packages/calendar/src/__image_snapshots__/calendar-default-view-sprite-snap.png b/packages/calendar/src/__image_snapshots__/calendar-default-view-sprite-snap.png index d98a1dd2bb..3e70748706 100644 --- a/packages/calendar/src/__image_snapshots__/calendar-default-view-sprite-snap.png +++ b/packages/calendar/src/__image_snapshots__/calendar-default-view-sprite-snap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ee2a5d376a3461f080c678e7a299b868947e0ca23803b3f401c599b7e32fc503 -size 32104 +oid sha256:8ef7ee18a978177aff408c4c2299b58d850e6905b9b6a1e6ad1439254d0c5a68 +size 32740 diff --git a/packages/calendar/src/__snapshots__/Component.test.tsx.snap b/packages/calendar/src/__snapshots__/Component.test.tsx.snap index 9f396a4a76..07e741525f 100644 --- a/packages/calendar/src/__snapshots__/Component.test.tsx.snap +++ b/packages/calendar/src/__snapshots__/Component.test.tsx.snap @@ -2474,19 +2474,6 @@ exports[`Calendar Display tests should match defaultView="years" snapshot 1`] = 1925 -
diff --git a/packages/calendar/src/components/calendar-mobile/Component.tsx b/packages/calendar/src/components/calendar-mobile/Component.tsx index 744f4235b9..15f3348b0f 100644 --- a/packages/calendar/src/components/calendar-mobile/Component.tsx +++ b/packages/calendar/src/components/calendar-mobile/Component.tsx @@ -177,7 +177,9 @@ export const CalendarMonthOnlyView = ({ const initialMonthIndex = useMemo(() => { const date = range.value || range.selectedFrom || activeMonth.getTime() || Date.now(); - return activeMonths.findIndex((m) => isSameMonth(date, m.date)); + const index = activeMonths.findIndex((m) => isSameMonth(date, m.date)); + + return Math.max(index, 0); }, [range.value, range.selectedFrom, activeMonth, activeMonths]); // заголовок должен становиться активным если выбран весь доступный период в месяце diff --git a/packages/gallery/src/Component.tsx b/packages/gallery/src/Component.tsx index 3a83933dff..dd2f86f896 100644 --- a/packages/gallery/src/Component.tsx +++ b/packages/gallery/src/Component.tsx @@ -5,6 +5,7 @@ import SwiperCore from 'swiper'; import { BaseModal } from '@alfalab/core-components-base-modal'; import { useMedia } from '@alfalab/hooks'; +import { Single } from './components/image-viewer/single'; import { Header, HeaderMobile, ImageViewer, InfoBar, NavigationBar } from './components'; import { GalleryContext } from './context'; import { GalleryImage, ImageMeta } from './types'; @@ -240,9 +241,13 @@ export const Gallery: FC = ({ Backdrop={Backdrop} onUnmount={onUnmount} > -
+
{view === 'desktop' ?
: } - + {images.length === 1 ? : }