urfu-ui-kit-react 2.1.3 → 2.1.4
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/README.md +4 -25
- package/dist/components/Accordion/Accordion.js +18 -0
- package/dist/components/BreadCrumbs/BreadCrumbs.d.ts +1 -1
- package/dist/components/BreadCrumbs/BreadCrumbs.d.ts.map +1 -1
- package/dist/components/BreadCrumbs/BreadCrumbs.js +32 -0
- package/dist/components/Button/Button.d.ts +1 -0
- package/dist/components/Button/Button.d.ts.map +1 -1
- package/dist/components/Button/Button.js +88 -0
- package/dist/components/Button/Button.types.d.ts +9 -3
- package/dist/components/Button/Button.types.d.ts.map +1 -1
- package/dist/components/Button/ButtonRefreshIcon.js +35 -0
- package/dist/components/Calendar/Calendar.d.ts +1 -5
- package/dist/components/Calendar/Calendar.d.ts.map +1 -1
- package/dist/components/Calendar/Calendar.js +355 -0
- package/dist/components/Calendar/CalendarSelect.js +149 -0
- package/dist/components/Calendar/MaskedDateInput.d.ts.map +1 -1
- package/dist/components/Calendar/MaskedDateInput.js +191 -0
- package/dist/components/Calendar/dateMask.d.ts +0 -1
- package/dist/components/Calendar/dateMask.d.ts.map +1 -1
- package/dist/components/Card/Card.d.ts +1 -1
- package/dist/components/Card/Card.d.ts.map +1 -1
- package/dist/components/Card/Card.js +75 -0
- package/dist/components/Checkbox/Checkbox.js +30 -0
- package/dist/components/ColumnSettings/ColumnSettings.js +216 -0
- package/dist/components/ConfirmModal/ConfirmModal.d.ts +1 -0
- package/dist/components/ConfirmModal/ConfirmModal.d.ts.map +1 -1
- package/dist/components/ConfirmModal/ConfirmModal.js +40 -0
- package/dist/components/ErrorScreen/ErrorScreen.d.ts +1 -1
- package/dist/components/ErrorScreen/ErrorScreen.d.ts.map +1 -1
- package/dist/components/ErrorScreen/ErrorScreen.js +221 -0
- package/dist/components/ErrorScreen/ErrorScreenIllustration.js +57 -0
- package/dist/components/FormField/FormField.d.ts +1 -1
- package/dist/components/FormField/FormField.d.ts.map +1 -1
- package/dist/components/FormField/FormField.js +40 -0
- package/dist/components/Icon/Icon.d.ts +1 -1
- package/dist/components/Icon/Icon.d.ts.map +1 -1
- package/dist/components/Icon/Icon.js +32 -0
- package/dist/components/Icon/Icon.types.d.ts +3 -1
- package/dist/components/Icon/Icon.types.d.ts.map +1 -1
- package/dist/components/InputExpandTextarea/InputExpandTextarea.d.ts +1 -1
- package/dist/components/InputExpandTextarea/InputExpandTextarea.d.ts.map +1 -1
- package/dist/components/InputExpandTextarea/InputExpandTextarea.js +144 -0
- package/dist/components/InputFile/InputFile.d.ts +1 -1
- package/dist/components/InputFile/InputFile.d.ts.map +1 -1
- package/dist/components/InputFile/InputFile.js +203 -0
- package/dist/components/InputFile/InputFile.types.d.ts +0 -6
- package/dist/components/InputFile/InputFile.types.d.ts.map +1 -1
- package/dist/components/InputNumber/InputNumber.d.ts +1 -1
- package/dist/components/InputNumber/InputNumber.d.ts.map +1 -1
- package/dist/components/InputNumber/InputNumber.js +220 -0
- package/dist/components/InputText/InputAffix.d.ts +1 -1
- package/dist/components/InputText/InputAffix.js +109 -0
- package/dist/components/InputText/InputText.d.ts +2 -1
- package/dist/components/InputText/InputText.d.ts.map +1 -1
- package/dist/components/InputText/InputText.js +137 -0
- package/dist/components/InputTime/InputTime.d.ts +1 -1
- package/dist/components/InputTime/InputTime.d.ts.map +1 -1
- package/dist/components/InputTime/InputTime.js +335 -0
- package/dist/components/InputTime/InputTimeDropdown.js +31 -0
- package/dist/components/InputTime/inputTimeKeyDown.js +63 -0
- package/dist/components/InputTime/useInputTimeWheel.js +45 -0
- package/dist/components/Menu/Menu.d.ts +1 -1
- package/dist/components/Menu/Menu.d.ts.map +1 -1
- package/dist/components/Menu/Menu.js +113 -0
- package/dist/components/Message/Message.js +29 -0
- package/dist/components/Modal/Modal.d.ts +1 -0
- package/dist/components/Modal/Modal.d.ts.map +1 -1
- package/dist/components/Modal/Modal.js +102 -0
- package/dist/components/Modal/editorFocus.js +15 -0
- package/dist/components/Modal/useModalFocus.js +112 -0
- package/dist/components/Modal/useModalTitleClearance.js +48 -0
- package/dist/components/Multiselect/Multiselect.d.ts +1 -0
- package/dist/components/Multiselect/Multiselect.d.ts.map +1 -1
- package/dist/components/Multiselect/Multiselect.js +408 -0
- package/dist/components/Notification/Notification.d.ts +1 -1
- package/dist/components/Notification/Notification.d.ts.map +1 -1
- package/dist/components/Notification/Notification.js +156 -0
- package/dist/components/OfflineBanner/OfflineBanner.d.ts +1 -1
- package/dist/components/OfflineBanner/OfflineBanner.d.ts.map +1 -1
- package/dist/components/OfflineBanner/OfflineBanner.js +40 -0
- package/dist/components/Pagination/Pagination.d.ts +1 -1
- package/dist/components/Pagination/Pagination.d.ts.map +1 -1
- package/dist/components/Pagination/Pagination.js +126 -0
- package/dist/components/Preloader/Preloader.d.ts.map +1 -1
- package/dist/components/Preloader/Preloader.js +60 -0
- package/dist/components/Radio/Radio.js +34 -0
- package/dist/components/Search/Search.d.ts +1 -1
- package/dist/components/Search/Search.d.ts.map +1 -1
- package/dist/components/Search/Search.js +47 -0
- package/dist/components/SearchSelect/SearchSelect.js +295 -0
- package/dist/components/SearchSelect/SearchSelectOption.js +41 -0
- package/dist/components/SearchSelect/useFlippedPlacement.js +25 -0
- package/dist/components/Select/MobileOptionSheet.d.ts +1 -1
- package/dist/components/Select/MobileOptionSheet.d.ts.map +1 -1
- package/dist/components/Select/MobileOptionSheet.js +116 -0
- package/dist/components/Select/Select.js +319 -0
- package/dist/components/Skeleton/Skeleton.js +38 -0
- package/dist/components/Skeleton/Skeleton.types.d.ts +4 -2
- package/dist/components/Skeleton/Skeleton.types.d.ts.map +1 -1
- package/dist/components/Status/Status.js +43 -0
- package/dist/components/StickyActionBar/StickyActionBar.d.ts +1 -1
- package/dist/components/StickyActionBar/StickyActionBar.d.ts.map +1 -1
- package/dist/components/StickyActionBar/StickyActionBar.js +73 -0
- package/dist/components/Switch/Switch.d.ts +1 -1
- package/dist/components/Switch/Switch.d.ts.map +1 -1
- package/dist/components/Switch/Switch.js +29 -0
- package/dist/components/Table/Filter/DefaultInput.d.ts.map +1 -1
- package/dist/components/Table/Filter/DefaultInput.js +22 -0
- package/dist/components/Table/Filter/Filter.js +233 -0
- package/dist/components/Table/Filter/Filter.types.d.ts +17 -13
- package/dist/components/Table/Filter/Filter.types.d.ts.map +1 -1
- package/dist/components/Table/Filter/FilterBooleanBox.d.ts +1 -0
- package/dist/components/Table/Filter/FilterBooleanBox.d.ts.map +1 -1
- package/dist/components/Table/Filter/FilterBooleanBox.js +40 -0
- package/dist/components/Table/Filter/FilterBoxShell.js +89 -0
- package/dist/components/Table/Filter/FilterConditionSelect.js +14 -0
- package/dist/components/Table/Filter/FilterDateBox.d.ts +1 -0
- package/dist/components/Table/Filter/FilterDateBox.d.ts.map +1 -1
- package/dist/components/Table/Filter/FilterDateBox.js +173 -0
- package/dist/components/Table/Filter/FilterPanel.js +25 -0
- package/dist/components/Table/Filter/FilterSortIndicator.js +24 -0
- package/dist/components/Table/Filter/FilterStringBox.js +115 -0
- package/dist/components/Table/Filter/Functions.d.ts +0 -6
- package/dist/components/Table/Filter/Functions.d.ts.map +1 -1
- package/dist/components/Table/Filter/Functions.js +76 -0
- package/dist/components/Table/Filter/SelectFilter.js +114 -0
- package/dist/components/Table/Filter/SelectOptions.js +21 -0
- package/dist/components/Table/Filter/TableFilterOptions.d.ts +1 -0
- package/dist/components/Table/Filter/TableFilterOptions.d.ts.map +1 -1
- package/dist/components/Table/Filter/TableFilterOptions.js +268 -0
- package/dist/components/Table/Filter/TableFilterSortButton.js +17 -0
- package/dist/components/Table/Filter/filterBoxHelpers.js +2 -0
- package/dist/components/Table/Filter/filterExpression.js +48 -0
- package/dist/components/Table/Filter/filterLoading.js +2 -0
- package/dist/components/Table/Filter/useFilterDates.js +33 -0
- package/dist/components/Table/Filter/useFilterOptionsPreload.js +22 -0
- package/dist/components/Table/Filter/useLocalFilterSearch.js +32 -0
- package/dist/components/Table/Filter/usePagedFilterOptions.js +71 -0
- package/dist/components/Table/Filter/useServerFilterOptions.js +35 -0
- package/dist/components/Table/Filter/useVirtualOptionWindow.js +80 -0
- package/dist/components/Table/Functions.js +54 -0
- package/dist/components/Table/Skeleton/TableSkeleton.js +28 -0
- package/dist/components/Table/Skeleton/createSkeletonColumns.js +9 -0
- package/dist/components/Table/Table.d.ts +1 -0
- package/dist/components/Table/Table.d.ts.map +1 -1
- package/dist/components/Table/Table.dataPipeline.d.ts.map +1 -1
- package/dist/components/Table/Table.dataPipeline.js +75 -0
- package/dist/components/Table/Table.helpers.d.ts +2 -2
- package/dist/components/Table/Table.helpers.d.ts.map +1 -1
- package/dist/components/Table/Table.helpers.js +72 -0
- package/dist/components/Table/Table.js +419 -0
- package/dist/components/Table/Table.types.d.ts +6 -2
- package/dist/components/Table/Table.types.d.ts.map +1 -1
- package/dist/components/Table/TableHead.d.ts.map +1 -1
- package/dist/components/Table/TableHead.js +189 -0
- package/dist/components/Table/TableMobileCard.js +215 -0
- package/dist/components/Table/TableMobileFilters.js +56 -0
- package/dist/components/Table/TableMobileView.js +316 -0
- package/dist/components/Table/TableRow.js +136 -0
- package/dist/components/Table/useColumnResize.d.ts +3 -2
- package/dist/components/Table/useColumnResize.d.ts.map +1 -1
- package/dist/components/Table/useColumnResize.js +44 -0
- package/dist/components/Table/useDelayedSkeleton.d.ts +0 -2
- package/dist/components/Table/useDelayedSkeleton.d.ts.map +1 -1
- package/dist/components/Table/useDelayedSkeleton.js +32 -0
- package/dist/components/Table/useMobileFilterColumns.d.ts +1 -1
- package/dist/components/Table/useMobileFilterColumns.d.ts.map +1 -1
- package/dist/components/Table/useMobileFilterColumns.js +52 -0
- package/dist/components/Table/useStableColumnWidths.js +22 -0
- package/dist/components/Table/useTableColumnPinning.d.ts +2 -57
- package/dist/components/Table/useTableColumnPinning.d.ts.map +1 -1
- package/dist/components/Table/useTableColumnPinning.js +52 -0
- package/dist/components/Table/useTableFilters.js +39 -0
- package/dist/components/Table/useTableSortState.js +38 -0
- package/dist/components/Table/useTableVirtualization.js +145 -0
- package/dist/components/Tabs/Tabs.d.ts +1 -0
- package/dist/components/Tabs/Tabs.d.ts.map +1 -1
- package/dist/components/Tabs/Tabs.js +135 -0
- package/dist/components/Tabs/useTabsOverflow.js +49 -0
- package/dist/components/Textarea/Textarea.js +102 -0
- package/dist/components/Tooltip/Tooltip.d.ts +1 -0
- package/dist/components/Tooltip/Tooltip.d.ts.map +1 -1
- package/dist/components/Tooltip/Tooltip.js +218 -0
- package/dist/components/TreeView/TreeView.d.ts +1 -0
- package/dist/components/TreeView/TreeView.d.ts.map +1 -1
- package/dist/components/TreeView/TreeView.js +323 -0
- package/dist/components/TreeView/TreeView.types.d.ts +0 -4
- package/dist/components/TreeView/TreeView.types.d.ts.map +1 -1
- package/dist/dev/index.js +2 -2
- package/dist/dev/types/vanilla/src/dev/shown.d.ts +0 -2
- package/dist/dev/types/vanilla/src/dev/store.d.ts +0 -4
- package/dist/fonts/icons/urfu-ui-icon-font.eot +0 -0
- package/dist/fonts/icons/urfu-ui-icon-font.svg +3 -0
- package/dist/fonts/icons/urfu-ui-icon-font.ttf +0 -0
- package/dist/fonts/icons/urfu-ui-icon-font.woff +0 -0
- package/dist/fonts/icons/urfu-ui-icon-font.woff2 +0 -0
- package/dist/hooks/useActiveOptionScroll.js +20 -0
- package/dist/hooks/useAnchoredPosition.js +37 -0
- package/dist/hooks/useAutoId.d.ts +0 -1
- package/dist/hooks/useAutoId.d.ts.map +1 -1
- package/dist/hooks/useAutoId.js +7 -0
- package/dist/hooks/useAutoPortal.js +11 -0
- package/dist/hooks/useDebounce.js +11 -0
- package/dist/hooks/useDismiss.d.ts +1 -1
- package/dist/hooks/useDismiss.d.ts.map +1 -1
- package/dist/hooks/useDismiss.js +20 -0
- package/dist/hooks/useInputOverflow.d.ts +9 -0
- package/dist/hooks/useInputOverflow.d.ts.map +1 -0
- package/dist/hooks/useInputOverflow.js +16 -0
- package/dist/hooks/useMediaQuery.js +21 -0
- package/dist/hooks/useMobilePicker.js +7 -0
- package/dist/hooks/useMountTransition.d.ts +1 -1
- package/dist/hooks/useMountTransition.d.ts.map +1 -1
- package/dist/hooks/useMountTransition.js +21 -0
- package/dist/hooks/useOnlineStatus.js +11 -0
- package/dist/hooks/useOptionKeyboardNavigation.js +63 -0
- package/dist/hooks/usePagination.js +31 -0
- package/dist/hooks/useSelectEngine.d.ts +3 -3
- package/dist/hooks/useSelectEngine.d.ts.map +1 -1
- package/dist/hooks/useSelectEngine.js +96 -0
- package/dist/hooks/useTableSort.js +13 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/responsive/uiKitResponsive.js +44 -0
- package/dist/shared/fieldAccessibility.js +8 -0
- package/dist/shared/iconNames.d.ts +5 -0
- package/dist/shared/iconNames.d.ts.map +1 -0
- package/dist/shared/inputOverflow.d.ts +10 -0
- package/dist/shared/inputOverflow.d.ts.map +1 -0
- package/dist/shared/kitCopy.js +9 -0
- package/dist/shared/optionStateColors.js +5 -0
- package/dist/shared/optionValue.d.ts +1 -1
- package/dist/shared/optionValue.d.ts.map +1 -1
- package/dist/shared/optionValue.js +11 -0
- package/dist/shared/popupTransition.js +11 -0
- package/dist/shared/size.d.ts +0 -1
- package/dist/shared/size.d.ts.map +1 -1
- package/dist/shared/size.js +4 -0
- package/dist/shared/sortRows.js +24 -0
- package/dist/shared/uiKitDefaults.js +25 -0
- package/dist/style-no-fonts.css +1 -1
- package/dist/style.css +1 -1
- package/dist/style.layer.css +8 -8
- package/dist/style.shell.css +15 -11
- package/dist/urfu-ui-kit-react.js +57 -17543
- package/dist/vanilla/core/BoundedOptionPageCache.js +41 -0
- package/dist/vanilla/core/dateMask.js +28 -0
- package/dist/vanilla/core/describeError.js +243 -0
- package/dist/vanilla/core/devLauncherOffset.js +20 -0
- package/dist/vanilla/core/distributeTabs.js +25 -0
- package/dist/vanilla/core/hasPreviousPage.js +6 -0
- package/dist/vanilla/core/inputMode.js +17 -0
- package/dist/vanilla/core/inputOverflow.js +34 -0
- package/dist/vanilla/core/kitRegistry.js +160 -0
- package/dist/vanilla/core/reconcileColumnOrder.js +5 -0
- package/dist/vanilla/core/sheetTitle.js +11 -0
- package/dist/vanilla/core/validation.js +21 -0
- package/dist/vendor/@floating-ui/core/dist/floating-ui.core.js +323 -0
- package/dist/vendor/@floating-ui/dom/dist/floating-ui.dom.js +383 -0
- package/dist/vendor/@floating-ui/react/dist/floating-ui.react.js +255 -0
- package/dist/vendor/@floating-ui/react-dom/dist/floating-ui.react-dom.js +183 -0
- package/dist/vendor/@floating-ui/utils/dist/floating-ui.utils.dom.js +110 -0
- package/dist/vendor/@floating-ui/utils/dist/floating-ui.utils.js +106 -0
- package/dist/vendor/clsx/dist/clsx.js +14 -0
- package/dist/vendor/date-fns/_lib/addLeadingZeros.js +5 -0
- package/dist/vendor/date-fns/_lib/defaultOptions.js +5 -0
- package/dist/vendor/date-fns/_lib/format/formatters.js +547 -0
- package/dist/vendor/date-fns/_lib/format/lightFormatters.js +56 -0
- package/dist/vendor/date-fns/_lib/format/longFormatters.js +47 -0
- package/dist/vendor/date-fns/_lib/getTimezoneOffsetInMilliseconds.js +16 -0
- package/dist/vendor/date-fns/_lib/protectedTokens.js +16 -0
- package/dist/vendor/date-fns/addDays.js +7 -0
- package/dist/vendor/date-fns/addHours.js +6 -0
- package/dist/vendor/date-fns/addMilliseconds.js +7 -0
- package/dist/vendor/date-fns/addMinutes.js +6 -0
- package/dist/vendor/date-fns/addMonths.js +17 -0
- package/dist/vendor/date-fns/addQuarters.js +6 -0
- package/dist/vendor/date-fns/addSeconds.js +5 -0
- package/dist/vendor/date-fns/addWeeks.js +6 -0
- package/dist/vendor/date-fns/addYears.js +5 -0
- package/dist/vendor/date-fns/constants.js +2 -0
- package/dist/vendor/date-fns/constructFrom.js +4 -0
- package/dist/vendor/date-fns/differenceInCalendarDays.js +8 -0
- package/dist/vendor/date-fns/differenceInCalendarMonths.js +6 -0
- package/dist/vendor/date-fns/differenceInCalendarQuarters.js +7 -0
- package/dist/vendor/date-fns/differenceInCalendarYears.js +6 -0
- package/dist/vendor/date-fns/differenceInDays.js +13 -0
- package/dist/vendor/date-fns/endOfDay.js +6 -0
- package/dist/vendor/date-fns/endOfMonth.js +6 -0
- package/dist/vendor/date-fns/endOfWeek.js +8 -0
- package/dist/vendor/date-fns/endOfYear.js +6 -0
- package/dist/vendor/date-fns/format.js +53 -0
- package/dist/vendor/date-fns/getDate.js +5 -0
- package/dist/vendor/date-fns/getDay.js +5 -0
- package/dist/vendor/date-fns/getDayOfYear.js +8 -0
- package/dist/vendor/date-fns/getDaysInMonth.js +7 -0
- package/dist/vendor/date-fns/getDefaultOptions.js +5 -0
- package/dist/vendor/date-fns/getHours.js +5 -0
- package/dist/vendor/date-fns/getISODay.js +6 -0
- package/dist/vendor/date-fns/getISOWeek.js +9 -0
- package/dist/vendor/date-fns/getISOWeekYear.js +12 -0
- package/dist/vendor/date-fns/getMinutes.js +5 -0
- package/dist/vendor/date-fns/getMonth.js +5 -0
- package/dist/vendor/date-fns/getQuarter.js +6 -0
- package/dist/vendor/date-fns/getSeconds.js +5 -0
- package/dist/vendor/date-fns/getTime.js +5 -0
- package/dist/vendor/date-fns/getWeek.js +9 -0
- package/dist/vendor/date-fns/getWeekYear.js +14 -0
- package/dist/vendor/date-fns/getYear.js +5 -0
- package/dist/vendor/date-fns/isAfter.js +6 -0
- package/dist/vendor/date-fns/isBefore.js +6 -0
- package/dist/vendor/date-fns/isDate.js +4 -0
- package/dist/vendor/date-fns/isEqual.js +6 -0
- package/dist/vendor/date-fns/isSameDay.js +6 -0
- package/dist/vendor/date-fns/isSameMonth.js +6 -0
- package/dist/vendor/date-fns/isSameQuarter.js +6 -0
- package/dist/vendor/date-fns/isSameWeek.js +6 -0
- package/dist/vendor/date-fns/isSameYear.js +6 -0
- package/dist/vendor/date-fns/isValid.js +9 -0
- package/dist/vendor/date-fns/isWithinInterval.js +9 -0
- package/dist/vendor/date-fns/locale/_lib/buildFormatLongFn.js +7 -0
- package/dist/vendor/date-fns/locale/_lib/buildLocalizeFn.js +16 -0
- package/dist/vendor/date-fns/locale/_lib/buildMatchFn.js +29 -0
- package/dist/vendor/date-fns/locale/_lib/buildMatchPatternFn.js +13 -0
- package/dist/vendor/date-fns/locale/en-US/_lib/formatDistance.js +68 -0
- package/dist/vendor/date-fns/locale/en-US/_lib/formatLong.js +31 -0
- package/dist/vendor/date-fns/locale/en-US/_lib/formatRelative.js +9 -0
- package/dist/vendor/date-fns/locale/en-US/_lib/localize.js +153 -0
- package/dist/vendor/date-fns/locale/en-US/_lib/match.js +108 -0
- package/dist/vendor/date-fns/locale/en-US.js +18 -0
- package/dist/vendor/date-fns/locale/ru/_lib/formatDistance.js +182 -0
- package/dist/vendor/date-fns/locale/ru/_lib/formatLong.js +28 -0
- package/dist/vendor/date-fns/locale/ru/_lib/formatRelative.js +62 -0
- package/dist/vendor/date-fns/locale/ru/_lib/localize.js +177 -0
- package/dist/vendor/date-fns/locale/ru/_lib/match.js +109 -0
- package/dist/vendor/date-fns/locale/ru.js +18 -0
- package/dist/vendor/date-fns/max.js +9 -0
- package/dist/vendor/date-fns/min.js +9 -0
- package/dist/vendor/date-fns/parse/_lib/Parser.js +20 -0
- package/dist/vendor/date-fns/parse/_lib/Setter.js +36 -0
- package/dist/vendor/date-fns/parse/_lib/constants.js +46 -0
- package/dist/vendor/date-fns/parse/_lib/parsers/AMPMMidnightParser.js +46 -0
- package/dist/vendor/date-fns/parse/_lib/parsers/AMPMParser.js +46 -0
- package/dist/vendor/date-fns/parse/_lib/parsers/DateParser.js +59 -0
- package/dist/vendor/date-fns/parse/_lib/parsers/DayOfYearParser.js +49 -0
- package/dist/vendor/date-fns/parse/_lib/parsers/DayParser.js +45 -0
- package/dist/vendor/date-fns/parse/_lib/parsers/DayPeriodParser.js +46 -0
- package/dist/vendor/date-fns/parse/_lib/parsers/EraParser.js +29 -0
- package/dist/vendor/date-fns/parse/_lib/parsers/ExtendedYearParser.js +19 -0
- package/dist/vendor/date-fns/parse/_lib/parsers/FractionOfSecondParser.js +20 -0
- package/dist/vendor/date-fns/parse/_lib/parsers/Hour0To11Parser.js +30 -0
- package/dist/vendor/date-fns/parse/_lib/parsers/Hour0to23Parser.js +30 -0
- package/dist/vendor/date-fns/parse/_lib/parsers/Hour1To24Parser.js +31 -0
- package/dist/vendor/date-fns/parse/_lib/parsers/Hour1to12Parser.js +31 -0
- package/dist/vendor/date-fns/parse/_lib/parsers/ISODayParser.js +101 -0
- package/dist/vendor/date-fns/parse/_lib/parsers/ISOTimezoneParser.js +45 -0
- package/dist/vendor/date-fns/parse/_lib/parsers/ISOTimezoneWithZParser.js +45 -0
- package/dist/vendor/date-fns/parse/_lib/parsers/ISOWeekParser.js +47 -0
- package/dist/vendor/date-fns/parse/_lib/parsers/ISOWeekYearParser.js +38 -0
- package/dist/vendor/date-fns/parse/_lib/parsers/LocalDayParser.js +76 -0
- package/dist/vendor/date-fns/parse/_lib/parsers/LocalWeekParser.js +46 -0
- package/dist/vendor/date-fns/parse/_lib/parsers/LocalWeekYearParser.js +67 -0
- package/dist/vendor/date-fns/parse/_lib/parsers/MinuteParser.js +30 -0
- package/dist/vendor/date-fns/parse/_lib/parsers/MonthParser.js +73 -0
- package/dist/vendor/date-fns/parse/_lib/parsers/QuarterParser.js +71 -0
- package/dist/vendor/date-fns/parse/_lib/parsers/SecondParser.js +30 -0
- package/dist/vendor/date-fns/parse/_lib/parsers/StandAloneLocalDayParser.js +76 -0
- package/dist/vendor/date-fns/parse/_lib/parsers/StandAloneMonthParser.js +73 -0
- package/dist/vendor/date-fns/parse/_lib/parsers/StandAloneQuarterParser.js +71 -0
- package/dist/vendor/date-fns/parse/_lib/parsers/TimestampMillisecondsParser.js +20 -0
- package/dist/vendor/date-fns/parse/_lib/parsers/TimestampSecondsParser.js +20 -0
- package/dist/vendor/date-fns/parse/_lib/parsers/YearParser.js +47 -0
- package/dist/vendor/date-fns/parse/_lib/parsers.js +65 -0
- package/dist/vendor/date-fns/parse/_lib/utils.js +90 -0
- package/dist/vendor/date-fns/parse.js +85 -0
- package/dist/vendor/date-fns/parseISO.js +119 -0
- package/dist/vendor/date-fns/set.js +8 -0
- package/dist/vendor/date-fns/setDay.js +9 -0
- package/dist/vendor/date-fns/setHours.js +6 -0
- package/dist/vendor/date-fns/setISODay.js +8 -0
- package/dist/vendor/date-fns/setISOWeek.js +7 -0
- package/dist/vendor/date-fns/setMinutes.js +6 -0
- package/dist/vendor/date-fns/setMonth.js +10 -0
- package/dist/vendor/date-fns/setQuarter.js +7 -0
- package/dist/vendor/date-fns/setSeconds.js +6 -0
- package/dist/vendor/date-fns/setWeek.js +7 -0
- package/dist/vendor/date-fns/setYear.js +7 -0
- package/dist/vendor/date-fns/startOfDay.js +6 -0
- package/dist/vendor/date-fns/startOfISOWeek.js +5 -0
- package/dist/vendor/date-fns/startOfISOWeekYear.js +8 -0
- package/dist/vendor/date-fns/startOfMonth.js +6 -0
- package/dist/vendor/date-fns/startOfQuarter.js +6 -0
- package/dist/vendor/date-fns/startOfWeek.js +8 -0
- package/dist/vendor/date-fns/startOfWeekYear.js +10 -0
- package/dist/vendor/date-fns/startOfYear.js +7 -0
- package/dist/vendor/date-fns/subDays.js +5 -0
- package/dist/vendor/date-fns/subMonths.js +5 -0
- package/dist/vendor/date-fns/subQuarters.js +5 -0
- package/dist/vendor/date-fns/subWeeks.js +5 -0
- package/dist/vendor/date-fns/subYears.js +5 -0
- package/dist/vendor/date-fns/toDate.js +5 -0
- package/dist/vendor/date-fns/transpose.js +15 -0
- package/dist/vendor/react-datepicker/dist/es/index.js +2696 -0
- package/package.json +37 -35
- package/dist/hooks/useOutsideAlerter.d.ts +0 -3
- package/dist/hooks/useOutsideAlerter.d.ts.map +0 -1
|
@@ -0,0 +1,408 @@
|
|
|
1
|
+
import { jsxs as x, jsx as o, Fragment as Le } from "react/jsx-runtime";
|
|
2
|
+
import { getFieldAccessibility$u as Be } from "../../shared/fieldAccessibility.js";
|
|
3
|
+
import { useState as z, useRef as k, useMemo as le, useEffect as Ie } from "react";
|
|
4
|
+
/* empty css */
|
|
5
|
+
/* empty css */
|
|
6
|
+
/* empty css */
|
|
7
|
+
/* empty css */
|
|
8
|
+
/* empty css */
|
|
9
|
+
import { createPortal as We } from "react-dom";
|
|
10
|
+
import _e from "../../hooks/useDebounce.js";
|
|
11
|
+
import { useSelectEngine$u as Ge } from "../../hooks/useSelectEngine.js";
|
|
12
|
+
import { OPTION_STATE_COLORS$u as ce } from "../../shared/optionStateColors.js";
|
|
13
|
+
import { isSameOptionValue$u as h, getOptionKeys$u as Ye } from "../../shared/optionValue.js";
|
|
14
|
+
import { getPopupTransitionStyle$u as re } from "../../shared/popupTransition.js";
|
|
15
|
+
import { sizeClassName$u as Je, isCompact$u as Qe } from "../../shared/size.js";
|
|
16
|
+
import { useMobilePicker$u as Ue } from "../../hooks/useMobilePicker.js";
|
|
17
|
+
import { MobileOptionSheet$u as Xe } from "../Select/MobileOptionSheet.js";
|
|
18
|
+
import { getPortalScopeProps$u as Ze } from "../../shared/uiKitDefaults.js";
|
|
19
|
+
import { resolveValidation$u as qe } from "../../vanilla/core/validation.js";
|
|
20
|
+
import { resolveSheetTitle$u as Ve } from "../../vanilla/core/sheetTitle.js";
|
|
21
|
+
const yt = ({
|
|
22
|
+
"aria-label": C,
|
|
23
|
+
"aria-labelledby": M,
|
|
24
|
+
"aria-describedby": se,
|
|
25
|
+
title: y = "",
|
|
26
|
+
required: E = !1,
|
|
27
|
+
options: w,
|
|
28
|
+
styleSelectContainer: ne,
|
|
29
|
+
styleTitle: ae,
|
|
30
|
+
styleSelect: A,
|
|
31
|
+
lineUp: ue = !1,
|
|
32
|
+
placeholder: K = "Не выбрано",
|
|
33
|
+
values: i,
|
|
34
|
+
setValues: O,
|
|
35
|
+
isClearable: me = !1,
|
|
36
|
+
className: pe,
|
|
37
|
+
tableView: F = !1,
|
|
38
|
+
size: L,
|
|
39
|
+
validationText: de = "Заполните поле",
|
|
40
|
+
validationOn: B,
|
|
41
|
+
error: fe,
|
|
42
|
+
absoluteValidationText: xe,
|
|
43
|
+
disabled: l,
|
|
44
|
+
portalOn: he,
|
|
45
|
+
isSearchable: n,
|
|
46
|
+
onInputChange: b,
|
|
47
|
+
loading: g,
|
|
48
|
+
inputValue: v = "",
|
|
49
|
+
onInputValueChange: a,
|
|
50
|
+
noScroll: R,
|
|
51
|
+
id: be,
|
|
52
|
+
mobilePicker: ge
|
|
53
|
+
}) => {
|
|
54
|
+
const s = Qe(L, F), I = Je(L, F), P = qe({ error: fe, validationOn: B, validationText: de }), [H, W] = z(""), S = k(null), _ = _e(H, 300), m = le(() => w.filter((e) => (e.label ?? "").toLowerCase().includes((_ || "").toLowerCase())), [_, w]), G = m.findIndex(
|
|
55
|
+
(e) => i.some((t) => h(t == null ? void 0 : t.value, e == null ? void 0 : e.value))
|
|
56
|
+
), u = Ge({
|
|
57
|
+
optionsLength: m.length,
|
|
58
|
+
initialIndex: Math.max(0, G),
|
|
59
|
+
selectedIndex: G,
|
|
60
|
+
disabled: l,
|
|
61
|
+
portalOn: he,
|
|
62
|
+
loading: g,
|
|
63
|
+
id: be,
|
|
64
|
+
idPrefix: "u-multiselect",
|
|
65
|
+
getPortalPosition: (e) => ({ x: e.x, y: e.y + 60 + e.height + e.scrollY }),
|
|
66
|
+
// Поле растёт от чипов: строке варианта нужна его базовая высота, а не текущая.
|
|
67
|
+
measureFieldHeight: (e) => {
|
|
68
|
+
const t = parseFloat(getComputedStyle(e).minHeight), r = e.getBoundingClientRect().height;
|
|
69
|
+
return t > 0 ? Math.min(t, r) : r;
|
|
70
|
+
},
|
|
71
|
+
onSelectByIndex: (e) => {
|
|
72
|
+
const t = m[e];
|
|
73
|
+
t && Z.current(t);
|
|
74
|
+
}
|
|
75
|
+
}), {
|
|
76
|
+
isOpen: f,
|
|
77
|
+
blockRef: Y,
|
|
78
|
+
portalOptionsRef: ve,
|
|
79
|
+
optionsListRef: ye,
|
|
80
|
+
listboxId: p,
|
|
81
|
+
activeDescendantId: Oe,
|
|
82
|
+
activeIndex: Se,
|
|
83
|
+
hoveredIndex: Ne,
|
|
84
|
+
setHoveredIndex: J,
|
|
85
|
+
handleKeyDown: Q,
|
|
86
|
+
shouldRenderPortal: ke,
|
|
87
|
+
portalStatus: we,
|
|
88
|
+
shouldRenderLocal: Re,
|
|
89
|
+
localStatus: Pe,
|
|
90
|
+
isAnimated: U,
|
|
91
|
+
portalWidth: He,
|
|
92
|
+
usePortal: X
|
|
93
|
+
} = u, d = u.portalPosition, je = Be(p, y, E, P, {
|
|
94
|
+
"aria-label": C,
|
|
95
|
+
"aria-labelledby": M,
|
|
96
|
+
"aria-describedby": se
|
|
97
|
+
}), N = (e) => {
|
|
98
|
+
var t;
|
|
99
|
+
l || (i.some((r) => h(r.value, e.value)) ? O(i.filter((r) => !h(r.value, e.value))) : O([...i, e]), n && (W(""), (t = S.current) == null || t.focus()), n && a && a(""));
|
|
100
|
+
}, Z = k(N);
|
|
101
|
+
Z.current = N;
|
|
102
|
+
const De = (e) => {
|
|
103
|
+
l || O(i.filter((t) => !h(t.value, e.value)));
|
|
104
|
+
}, q = k(null), V = me && !l && (i == null ? void 0 : i.length) > 0, $e = () => {
|
|
105
|
+
if (l) return;
|
|
106
|
+
O([]), u.close();
|
|
107
|
+
const e = n && !c ? S.current : q.current;
|
|
108
|
+
e == null || e.focus();
|
|
109
|
+
}, j = typeof v == "string" && typeof a == "function", Te = j ? v : H, ze = (e) => {
|
|
110
|
+
l || (j ? a && a(e.target.value) : W(e.target.value), b && b(e.target.value));
|
|
111
|
+
}, Ce = le(() => Ye(m), [m]), c = Ue(ge), [ee, D] = z(!1), [Me, Ee] = z(""), te = k(u.close);
|
|
112
|
+
te.current = u.close, Ie(() => {
|
|
113
|
+
c ? te.current() : D(!1);
|
|
114
|
+
}, [c]);
|
|
115
|
+
const oe = () => {
|
|
116
|
+
l || (Ee(Ve(Y.current, { title: y, ariaLabel: C, ariaLabelledBy: M, placeholder: K })), D(!0));
|
|
117
|
+
}, Ae = (e) => {
|
|
118
|
+
e.key !== "Enter" && e.key !== " " && e.key !== "ArrowDown" || (e.preventDefault(), oe());
|
|
119
|
+
}, Ke = (e) => {
|
|
120
|
+
j && (a == null || a(e)), b == null || b(e);
|
|
121
|
+
}, ie = (e, t, r) => {
|
|
122
|
+
const $ = i.some((T) => h(T.value, e.value)), Fe = Ne === t || Se === t;
|
|
123
|
+
return /* @__PURE__ */ o(
|
|
124
|
+
"div",
|
|
125
|
+
{
|
|
126
|
+
className: "u-multiselectbox-option",
|
|
127
|
+
"data-option-index": t,
|
|
128
|
+
id: `${p}-option-${t}`,
|
|
129
|
+
role: "option",
|
|
130
|
+
"aria-selected": $,
|
|
131
|
+
style: Object.assign(
|
|
132
|
+
{},
|
|
133
|
+
s ? {
|
|
134
|
+
// Плотное поле — 43, а строка была 37: держим её не ниже поля
|
|
135
|
+
// и центрируем текст по вертикали.
|
|
136
|
+
minHeight: "var(--u-option-min-height, var(--u-compact-height))",
|
|
137
|
+
display: "flex",
|
|
138
|
+
alignItems: "center",
|
|
139
|
+
fontSize: "var(--u-compact-font-size)",
|
|
140
|
+
lineHeight: 1.6667,
|
|
141
|
+
padding: "calc(8 * var(--u-unit, 1px)) calc(5 * var(--u-unit, 1px))"
|
|
142
|
+
} : null,
|
|
143
|
+
$ ? { backgroundColor: ce.selectedBackground } : Fe ? { backgroundColor: ce.hoveredBackground } : null,
|
|
144
|
+
r && R ? {
|
|
145
|
+
maxHeight: "none"
|
|
146
|
+
} : null,
|
|
147
|
+
A
|
|
148
|
+
),
|
|
149
|
+
onMouseEnter: () => J(t),
|
|
150
|
+
onMouseLeave: () => J(null),
|
|
151
|
+
children: /* @__PURE__ */ x(
|
|
152
|
+
"label",
|
|
153
|
+
{
|
|
154
|
+
className: "u-multiselectbox-option-checkbox",
|
|
155
|
+
style: s ? {
|
|
156
|
+
// Строка плотного варианта — flex: без растяжения метка сжималась
|
|
157
|
+
// до ширины текста, и клик по правой части строки не отмечал вариант.
|
|
158
|
+
flex: 1,
|
|
159
|
+
minHeight: 0,
|
|
160
|
+
padding: 0,
|
|
161
|
+
lineHeight: "calc(20 * var(--u-unit, 1px))",
|
|
162
|
+
color: "var(--u-option-color, #222222)"
|
|
163
|
+
} : { color: "var(--u-option-color, #222222)" },
|
|
164
|
+
children: [
|
|
165
|
+
/* @__PURE__ */ o(
|
|
166
|
+
"input",
|
|
167
|
+
{
|
|
168
|
+
type: "checkbox",
|
|
169
|
+
checked: $,
|
|
170
|
+
onChange: (T) => {
|
|
171
|
+
T.stopPropagation(), N(e);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
),
|
|
175
|
+
/* @__PURE__ */ o("div", { style: s ? { marginRight: "calc(8 * var(--u-unit, 1px))" } : null }),
|
|
176
|
+
e.label
|
|
177
|
+
]
|
|
178
|
+
}
|
|
179
|
+
)
|
|
180
|
+
},
|
|
181
|
+
Ce[t]
|
|
182
|
+
);
|
|
183
|
+
};
|
|
184
|
+
return /* @__PURE__ */ x(
|
|
185
|
+
"div",
|
|
186
|
+
{
|
|
187
|
+
className: `u-react-multiselect-container${I ? ` ${I}` : ""} ${pe ?? ""}`,
|
|
188
|
+
children: [
|
|
189
|
+
/* @__PURE__ */ x(
|
|
190
|
+
"div",
|
|
191
|
+
{
|
|
192
|
+
style: Object.assign(
|
|
193
|
+
{
|
|
194
|
+
display: "flex",
|
|
195
|
+
gap: "calc(4 * var(--u-preset-unit, 1px))",
|
|
196
|
+
flexDirection: ue ? "row" : "column"
|
|
197
|
+
},
|
|
198
|
+
ne
|
|
199
|
+
),
|
|
200
|
+
children: [
|
|
201
|
+
y && /* @__PURE__ */ o(
|
|
202
|
+
"div",
|
|
203
|
+
{
|
|
204
|
+
id: `${p}-label`,
|
|
205
|
+
className: `${E ? "u-required" : ""} u-react-select-title`,
|
|
206
|
+
style: Object.assign(
|
|
207
|
+
{
|
|
208
|
+
color: "var(--u-field-title-color, #545454)",
|
|
209
|
+
fontSize: "var(--u-field-label-size-main, calc(14 * var(--u-unit, 1px)))"
|
|
210
|
+
},
|
|
211
|
+
ae
|
|
212
|
+
),
|
|
213
|
+
children: y
|
|
214
|
+
}
|
|
215
|
+
),
|
|
216
|
+
/* @__PURE__ */ x(
|
|
217
|
+
"div",
|
|
218
|
+
{
|
|
219
|
+
className: `u-multiselectbox${l ? " u-multiselectbox-disabled" : ""} u-react-multiselect`,
|
|
220
|
+
ref: Y,
|
|
221
|
+
style: Object.assign(
|
|
222
|
+
{
|
|
223
|
+
width: "100%"
|
|
224
|
+
},
|
|
225
|
+
A
|
|
226
|
+
),
|
|
227
|
+
children: [
|
|
228
|
+
/* @__PURE__ */ x(
|
|
229
|
+
"div",
|
|
230
|
+
{
|
|
231
|
+
ref: q,
|
|
232
|
+
className: f ? "u-multiselectbox-select u-multiselectbox-select-open" : "u-multiselectbox-select",
|
|
233
|
+
tabIndex: n && !c || l ? -1 : 0,
|
|
234
|
+
role: "combobox",
|
|
235
|
+
...je,
|
|
236
|
+
"aria-expanded": c ? ee : f,
|
|
237
|
+
"aria-haspopup": c ? "dialog" : "listbox",
|
|
238
|
+
"aria-controls": c ? void 0 : p,
|
|
239
|
+
"aria-disabled": l || void 0,
|
|
240
|
+
"aria-activedescendant": c ? void 0 : Oe,
|
|
241
|
+
onKeyDown: c ? Ae : n ? void 0 : Q,
|
|
242
|
+
onClick: (e) => {
|
|
243
|
+
var t;
|
|
244
|
+
if (c) {
|
|
245
|
+
oe();
|
|
246
|
+
return;
|
|
247
|
+
}
|
|
248
|
+
!f && n && !l && ((t = S.current) == null || t.focus()), u.toggle(e.currentTarget);
|
|
249
|
+
},
|
|
250
|
+
style: Object.assign(
|
|
251
|
+
s ? {
|
|
252
|
+
padding: "calc(6 * var(--u-unit, 1px)) calc(28 * var(--u-unit, 1px)) calc(5 * var(--u-unit, 1px)) calc(10 * var(--u-unit, 1px))",
|
|
253
|
+
gridRowGap: "calc(4 * var(--u-unit, 1px))",
|
|
254
|
+
borderRadius: "calc(8 * var(--u-unit, 1px))",
|
|
255
|
+
minHeight: "calc(43 * var(--u-unit, 1px))"
|
|
256
|
+
} : {},
|
|
257
|
+
// Плотному полю справа хватало места только под стрелку — крестику нужен свой резерв.
|
|
258
|
+
s && V ? { paddingRight: "calc(56 * var(--u-unit, 1px))" } : {},
|
|
259
|
+
B && { border: "1px solid var(--u-color-error, #EF302B)" }
|
|
260
|
+
),
|
|
261
|
+
children: [
|
|
262
|
+
(i == null ? void 0 : i.length) <= 0 && H.length === 0 && (v == null ? void 0 : v.length) === 0 ? /* @__PURE__ */ o(
|
|
263
|
+
"span",
|
|
264
|
+
{
|
|
265
|
+
style: Object.assign(
|
|
266
|
+
{ color: "var(--u-field-title-color, #545454)" },
|
|
267
|
+
s ? { fontSize: "var(--u-compact-font-size)" } : {}
|
|
268
|
+
),
|
|
269
|
+
className: "u-multiselectbox-select-label",
|
|
270
|
+
children: K
|
|
271
|
+
}
|
|
272
|
+
) : /* @__PURE__ */ o(Le, {}),
|
|
273
|
+
i == null ? void 0 : i.map((e, t) => /* @__PURE__ */ o("div", { className: "u-multiselectbox-select-item-wrapper", children: /* @__PURE__ */ x("div", { className: `u-multiselectbox-select-item-container${s ? " u-multiselectbox-select-item-container--compact" : ""}`, children: [
|
|
274
|
+
/* @__PURE__ */ o("span", { className: "u-multiselectbox-select-item", children: e.label }),
|
|
275
|
+
/* @__PURE__ */ o("div", { className: "u-multiselectbox-select-cross", onClick: (r) => {
|
|
276
|
+
r.stopPropagation(), De(e);
|
|
277
|
+
} })
|
|
278
|
+
] }) }, t)),
|
|
279
|
+
n && !c && /* @__PURE__ */ o(
|
|
280
|
+
"input",
|
|
281
|
+
{
|
|
282
|
+
ref: S,
|
|
283
|
+
className: "u-multiselectbox-search",
|
|
284
|
+
disabled: l,
|
|
285
|
+
"aria-disabled": l || void 0,
|
|
286
|
+
value: Te,
|
|
287
|
+
onChange: ze,
|
|
288
|
+
onClick: (e) => {
|
|
289
|
+
f && e.stopPropagation();
|
|
290
|
+
},
|
|
291
|
+
onKeyDown: Q
|
|
292
|
+
}
|
|
293
|
+
),
|
|
294
|
+
V ? /* @__PURE__ */ o(
|
|
295
|
+
"i",
|
|
296
|
+
{
|
|
297
|
+
className: `u-selectbox-select-icon-cross u-multiselectbox-clear${s ? " u-multiselectbox-clear--compact" : ""}`,
|
|
298
|
+
role: "button",
|
|
299
|
+
"aria-label": "Очистить",
|
|
300
|
+
onClick: (e) => {
|
|
301
|
+
e.stopPropagation(), $e();
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
) : null,
|
|
305
|
+
/* @__PURE__ */ o(
|
|
306
|
+
"i",
|
|
307
|
+
{
|
|
308
|
+
className: "u-multiselectbox-select-icon-arrow",
|
|
309
|
+
style: Object.assign(
|
|
310
|
+
f ? {
|
|
311
|
+
transform: "rotate(180deg)"
|
|
312
|
+
} : {},
|
|
313
|
+
s ? {
|
|
314
|
+
top: "calc(15 * var(--u-unit, 1px))"
|
|
315
|
+
} : {}
|
|
316
|
+
)
|
|
317
|
+
}
|
|
318
|
+
)
|
|
319
|
+
]
|
|
320
|
+
}
|
|
321
|
+
),
|
|
322
|
+
f && g ? /* @__PURE__ */ o("div", { className: "u-multiselectbox-options", style: { textAlign: "center", padding: "calc(16 * var(--u-unit, 1px))" }, children: /* @__PURE__ */ o("span", { className: "u-multiselectbox-loading", children: "Загрузка..." }) }) : null,
|
|
323
|
+
!g && X && ke && d && We(
|
|
324
|
+
/* @__PURE__ */ o(
|
|
325
|
+
"div",
|
|
326
|
+
{
|
|
327
|
+
className: "u-multiselectbox-options",
|
|
328
|
+
ref: ve,
|
|
329
|
+
...Ze(),
|
|
330
|
+
id: p,
|
|
331
|
+
role: "listbox",
|
|
332
|
+
"aria-multiselectable": !0,
|
|
333
|
+
style: Object.assign(
|
|
334
|
+
{
|
|
335
|
+
width: He,
|
|
336
|
+
left: d == null ? void 0 : d.x,
|
|
337
|
+
top: (d == null ? void 0 : d.y) - 60,
|
|
338
|
+
opacity: 1,
|
|
339
|
+
visibility: "visible",
|
|
340
|
+
height: "fit-content",
|
|
341
|
+
// Переменная, чтобы список внутри модалки можно было
|
|
342
|
+
// поднять над ней, не трогая код потребителя.
|
|
343
|
+
zIndex: "var(--u-select-popup-z, 10010)",
|
|
344
|
+
display: "block"
|
|
345
|
+
},
|
|
346
|
+
R ? {
|
|
347
|
+
maxHeight: "none"
|
|
348
|
+
} : {},
|
|
349
|
+
u.optionsStyle,
|
|
350
|
+
re(we, U)
|
|
351
|
+
),
|
|
352
|
+
children: m.map((e, t) => ie(e, t, !1))
|
|
353
|
+
}
|
|
354
|
+
),
|
|
355
|
+
document.body
|
|
356
|
+
),
|
|
357
|
+
!g && !X && Re ? /* @__PURE__ */ o(
|
|
358
|
+
"div",
|
|
359
|
+
{
|
|
360
|
+
ref: ye,
|
|
361
|
+
id: p,
|
|
362
|
+
role: "listbox",
|
|
363
|
+
"aria-multiselectable": !0,
|
|
364
|
+
className: "u-multiselectbox-options",
|
|
365
|
+
style: Object.assign(
|
|
366
|
+
{},
|
|
367
|
+
// см. Select: свой `display` на всё время жизни узла,
|
|
368
|
+
// иначе переход срывается кадром с `display: none`
|
|
369
|
+
{ display: "block" },
|
|
370
|
+
R ? {
|
|
371
|
+
maxHeight: "none"
|
|
372
|
+
} : {},
|
|
373
|
+
u.optionsStyle,
|
|
374
|
+
re(Pe, U)
|
|
375
|
+
),
|
|
376
|
+
children: m.map((e, t) => ie(e, t, !0))
|
|
377
|
+
}
|
|
378
|
+
) : null
|
|
379
|
+
]
|
|
380
|
+
}
|
|
381
|
+
)
|
|
382
|
+
]
|
|
383
|
+
}
|
|
384
|
+
),
|
|
385
|
+
P.showText && /* @__PURE__ */ o("h5", { id: `${p}-error`, className: "h5 clr-red-main", style: xe ? {
|
|
386
|
+
position: "absolute",
|
|
387
|
+
bottom: "calc(-20 * var(--u-unit, 1px))"
|
|
388
|
+
} : { position: "relative", marginTop: "calc(4 * var(--u-unit, 1px))" }, children: P.text }),
|
|
389
|
+
c ? /* @__PURE__ */ o(
|
|
390
|
+
Xe,
|
|
391
|
+
{
|
|
392
|
+
active: ee,
|
|
393
|
+
title: Me,
|
|
394
|
+
options: w,
|
|
395
|
+
multiple: !0,
|
|
396
|
+
isSelected: (e) => i.some((t) => h(t == null ? void 0 : t.value, e == null ? void 0 : e.value)),
|
|
397
|
+
onSelect: N,
|
|
398
|
+
onClose: () => D(!1),
|
|
399
|
+
searchable: n,
|
|
400
|
+
onSearchChange: Ke,
|
|
401
|
+
loading: g
|
|
402
|
+
}
|
|
403
|
+
) : null
|
|
404
|
+
]
|
|
405
|
+
}
|
|
406
|
+
);
|
|
407
|
+
};
|
|
408
|
+
export { yt as Multiselect$u };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Notification.d.ts","sourceRoot":"","sources":["../../../src/components/Notification/Notification.tsx"],"names":[],"mappings":"AAEA,OAAO,kCAAkC,CAAC;AAC1C,OAAO,
|
|
1
|
+
{"version":3,"file":"Notification.d.ts","sourceRoot":"","sources":["../../../src/components/Notification/Notification.tsx"],"names":[],"mappings":"AAEA,OAAO,kCAAkC,CAAC;AAC1C,OAAO,2DAA2D,CAAC;AACnE,OAAO,KAAK,MAAM,OAAO,CAAC;AA8H1B;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;AAE1E,wEAAwE;AACxE,MAAM,WAAW,kBAAkB;IAC/B,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,gHAAgH;IAChH,aAAa,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,mBAAmB;IAChC,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iFAAiF;IACjF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yGAAyG;IACzG,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,MAAM,CAAC,EAAE,kBAAkB,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAC5B;;;;;OAKG;IACH,gBAAgB,EAAE;QACd,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,GAAG,MAAM,CAAC;QAChD,CACI,OAAO,EAAE,mBAAmB,EAC5B,OAAO,EAAE,KAAK,CAAC,SAAS,EACxB,OAAO,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,SAAS,GAAG,SAAS,CAAC,GAC3D,MAAM,GAAG,MAAM,CAAC;KACtB,CAAC;IACF,gBAAgB,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IAChD,mBAAmB,EAAE,MAAM,IAAI,CAAC;CACnC;AA8BD,MAAM,WAAW,yBAAyB;IACtC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,QAAA,MAAM,oBAAoB,GAAI,4BAA4B,yBAAyB,4CAgFlF,CAAC;AAEF,QAAA,MAAM,eAAe,QAAO,eAM3B,CAAC;AAGF,iGAAiG;AACjG,QAAA,MAAM,uBAAuB,QAAO,eAAe,GAAG,SAA4C,CAAC;AAEnG,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,uBAAuB,EAAE,CAAC"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import { jsxs as I, jsx as g } from "react/jsx-runtime";
|
|
2
|
+
import { useState as S, useRef as p, useEffect as M, useCallback as C, useMemo as E, useContext as j, createContext as J, useLayoutEffect as L } from "react";
|
|
3
|
+
import { createPortal as q } from "react-dom";
|
|
4
|
+
/* empty css */
|
|
5
|
+
/* empty css */
|
|
6
|
+
import { Button$u as G } from "../Button/Button.js";
|
|
7
|
+
import { getPortalScopeProps$u as H } from "../../shared/uiKitDefaults.js";
|
|
8
|
+
import { registerKitNotificationStack$u as Q, ownKitNode$u as R } from "../../vanilla/core/kitRegistry.js";
|
|
9
|
+
const U = ({
|
|
10
|
+
variant: s,
|
|
11
|
+
children: w,
|
|
12
|
+
onHide: x,
|
|
13
|
+
show: a,
|
|
14
|
+
top: d,
|
|
15
|
+
right: o,
|
|
16
|
+
left: f,
|
|
17
|
+
zIndex: P,
|
|
18
|
+
inStack: b = !1,
|
|
19
|
+
autoHide: N,
|
|
20
|
+
duration: T = 3e3,
|
|
21
|
+
fadeOutDuration: r = 1e3,
|
|
22
|
+
onFadeOutEnd: t,
|
|
23
|
+
closable: e = !0
|
|
24
|
+
}) => {
|
|
25
|
+
const [i, n] = S(a), [c, m] = S(0), [y, v] = S(150), h = p(null), k = p(null), $ = p(null), A = p(i);
|
|
26
|
+
A.current = i;
|
|
27
|
+
const u = p(t);
|
|
28
|
+
u.current = t, M(() => (a ? (n(!0), v(150), $.current = setTimeout(() => m(1), 10), N && T > r && (h.current = setTimeout(() => {
|
|
29
|
+
v(r), m(0);
|
|
30
|
+
}, T - r), k.current = setTimeout(() => {
|
|
31
|
+
var l;
|
|
32
|
+
n(!1), (l = u.current) == null || l.call(u);
|
|
33
|
+
}, T))) : A.current && (v(r), m(0), k.current = setTimeout(() => {
|
|
34
|
+
var l;
|
|
35
|
+
n(!1), (l = u.current) == null || l.call(u);
|
|
36
|
+
}, r)), () => {
|
|
37
|
+
clearTimeout(h.current), clearTimeout(k.current), clearTimeout($.current);
|
|
38
|
+
}), [a, T, r, N]);
|
|
39
|
+
const K = () => {
|
|
40
|
+
x(), N && (clearTimeout(h.current), clearTimeout(k.current), v(r), m(0), k.current = setTimeout(() => {
|
|
41
|
+
var l;
|
|
42
|
+
n(!1), (l = u.current) == null || l.call(u);
|
|
43
|
+
}, r));
|
|
44
|
+
}, B = (l) => {
|
|
45
|
+
switch (l) {
|
|
46
|
+
case "info":
|
|
47
|
+
return "u-notification";
|
|
48
|
+
case "fail":
|
|
49
|
+
return "u-notification-fail";
|
|
50
|
+
case "success":
|
|
51
|
+
return "u-notification-success";
|
|
52
|
+
case "warning":
|
|
53
|
+
return "u-notification-warning";
|
|
54
|
+
default:
|
|
55
|
+
return "u-notification";
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
return i && /* @__PURE__ */ I(
|
|
59
|
+
"div",
|
|
60
|
+
{
|
|
61
|
+
style: {
|
|
62
|
+
position: b ? "relative" : "fixed",
|
|
63
|
+
top: d,
|
|
64
|
+
right: o,
|
|
65
|
+
left: f,
|
|
66
|
+
zIndex: P,
|
|
67
|
+
opacity: c,
|
|
68
|
+
transition: `opacity ${y}ms`
|
|
69
|
+
},
|
|
70
|
+
role: s === "fail" || s === "warning" ? "alert" : "status",
|
|
71
|
+
className: `${B(s)} u-notification-responsive`,
|
|
72
|
+
children: [
|
|
73
|
+
w,
|
|
74
|
+
e && /* @__PURE__ */ g("button", { "aria-label": "Закрыть уведомление", onClick: K, className: "u-notification-hide" })
|
|
75
|
+
]
|
|
76
|
+
}
|
|
77
|
+
);
|
|
78
|
+
}, z = J(void 0), W = ({ queued: s, className: w, style: x, children: a }) => {
|
|
79
|
+
const d = p(null);
|
|
80
|
+
return L(() => {
|
|
81
|
+
const o = d.current;
|
|
82
|
+
if (o)
|
|
83
|
+
return s ? Q(o) : R(o);
|
|
84
|
+
}, [s]), /* @__PURE__ */ g("div", { ref: d, ...H(), className: w, style: x, children: a });
|
|
85
|
+
}, tt = ({ children: s, headerHeight: w }) => {
|
|
86
|
+
const [x, a] = S([]), d = p(0), o = p(/* @__PURE__ */ new Map());
|
|
87
|
+
M(() => {
|
|
88
|
+
const t = o.current;
|
|
89
|
+
return () => {
|
|
90
|
+
t.forEach(clearTimeout), t.clear();
|
|
91
|
+
};
|
|
92
|
+
}, []);
|
|
93
|
+
const f = C((t) => {
|
|
94
|
+
clearTimeout(o.current.get(t)), o.current.delete(t), a((e) => e.map((i) => i.totalId === t ? { ...i, show: !1 } : i));
|
|
95
|
+
}, []), P = C((t) => {
|
|
96
|
+
a((e) => e.filter((i) => i.totalId !== t));
|
|
97
|
+
}, []), b = C((t, e, i) => {
|
|
98
|
+
const n = {
|
|
99
|
+
variant: "info",
|
|
100
|
+
message: "",
|
|
101
|
+
// top и right пустые — место задаёт .u-notification-stack: под шапкой, по макету.
|
|
102
|
+
duration: 3e3,
|
|
103
|
+
left: "unset",
|
|
104
|
+
top: "",
|
|
105
|
+
right: "",
|
|
106
|
+
zIndex: "101",
|
|
107
|
+
closable: !0,
|
|
108
|
+
...typeof t == "string" ? { variant: t, message: e ?? "", ...i } : t
|
|
109
|
+
}, c = n.id ?? `notification-${++d.current}`;
|
|
110
|
+
return clearTimeout(o.current.get(c)), o.current.delete(c), a((m) => [...m.filter((y) => y.totalId !== c), { ...n, totalId: c, show: !0 }]), n.duration > 0 && !n.action && o.current.set(c, setTimeout(() => f(c), n.duration)), c;
|
|
111
|
+
}, [f]), N = C(() => {
|
|
112
|
+
o.current.forEach(clearTimeout), o.current.clear(), a((t) => t.map((e) => ({ ...e, show: !1 })));
|
|
113
|
+
}, []), T = E(
|
|
114
|
+
() => ({ showNotification: b, hideNotification: f, hideAllNotification: N }),
|
|
115
|
+
[b, f, N]
|
|
116
|
+
), r = /* @__PURE__ */ new Map();
|
|
117
|
+
return x.forEach((t) => {
|
|
118
|
+
const e = JSON.stringify([t.top, t.right, t.left, t.zIndex]), i = r.get(e) ?? [];
|
|
119
|
+
i.push(t), r.set(e, i);
|
|
120
|
+
}), /* @__PURE__ */ I(z.Provider, { value: T, children: [
|
|
121
|
+
s,
|
|
122
|
+
typeof document < "u" && q(Array.from(r, ([t, e]) => /* @__PURE__ */ g(W, { queued: !e[0].top && !e[0].right && (e[0].left === "unset" || e[0].left === "auto"), className: `u-notification-stack ${e[0].left !== "unset" && e[0].left !== "auto" ? "u-notification-stack-left" : ""}`, style: {
|
|
123
|
+
top: e[0].top || void 0,
|
|
124
|
+
right: e[0].right || void 0,
|
|
125
|
+
left: e[0].left,
|
|
126
|
+
zIndex: e[0].zIndex,
|
|
127
|
+
"--u-app-header-height": w
|
|
128
|
+
}, children: e.map(({ totalId: i, variant: n, message: c, show: m, duration: y, closable: v, action: h }) => /* @__PURE__ */ g(
|
|
129
|
+
U,
|
|
130
|
+
{
|
|
131
|
+
inStack: !0,
|
|
132
|
+
show: m,
|
|
133
|
+
variant: n,
|
|
134
|
+
onHide: () => f(i),
|
|
135
|
+
onFadeOutEnd: () => P(i),
|
|
136
|
+
autoHide: !1,
|
|
137
|
+
duration: y,
|
|
138
|
+
closable: v,
|
|
139
|
+
children: h ? /* @__PURE__ */ I("span", { className: "u-notification-content", children: [
|
|
140
|
+
c,
|
|
141
|
+
" ",
|
|
142
|
+
/* @__PURE__ */ g(G, { variant: "text", className: "u-notification-action", onClick: () => {
|
|
143
|
+
h.closeOnAction !== !1 && f(i), h.onClick();
|
|
144
|
+
}, children: h.label })
|
|
145
|
+
] }) : c
|
|
146
|
+
},
|
|
147
|
+
i
|
|
148
|
+
)) }, t)), document.body)
|
|
149
|
+
] });
|
|
150
|
+
}, et = () => {
|
|
151
|
+
const s = j(z);
|
|
152
|
+
if (!s)
|
|
153
|
+
throw new Error("useNotification must be used within a NotificationProvider");
|
|
154
|
+
return s;
|
|
155
|
+
}, it = () => j(z);
|
|
156
|
+
export { tt as NotificationProvider$u, et as useNotification$u, it as useOptionalNotification$u };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type ReactNode } from 'react';
|
|
2
2
|
import { type NotificationOptions } from '../Notification/Notification';
|
|
3
3
|
import '../../styles/tokens.less';
|
|
4
|
-
|
|
4
|
+
|
|
5
5
|
export interface OfflineBannerProperties {
|
|
6
6
|
/** Текст, пока связи нет. */
|
|
7
7
|
text?: ReactNode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OfflineBanner.d.ts","sourceRoot":"","sources":["../../../src/components/OfflineBanner/OfflineBanner.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAsC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAE3E,OAAO,EAA2B,KAAK,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACjG,OAAO,0BAA0B,CAAC;AAClC,OAAO,
|
|
1
|
+
{"version":3,"file":"OfflineBanner.d.ts","sourceRoot":"","sources":["../../../src/components/OfflineBanner/OfflineBanner.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAsC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAE3E,OAAO,EAA2B,KAAK,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACjG,OAAO,0BAA0B,CAAC;AAClC,OAAO,6DAA6D,CAAC;AAErE,MAAM,WAAW,uBAAuB;IACpC,6BAA6B;IAC7B,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,uEAAuE;IACvE,YAAY,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IAChC;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,SAAS,GAAG,SAAS,GAAG,IAAI,GAAG,UAAU,CAAC,GAAG,KAAK,CAAC;IAC5F,2FAA2F;IAC3F,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,sFAAsF;IACtF,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,0FAA0F;IAC1F,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAOD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,EAC1B,IAAmB,EAAE,YAAoC,EAAE,gBAAuB,EAClF,YAAmC,EACnC,WAAW,EAAE,OAAO,EAAE,SAAc,GACvC,EAAE,uBAAuB,2CAiDzB"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { jsx as u, jsxs as g } from "react/jsx-runtime";
|
|
2
|
+
import { useState as R, useRef as E, useId as S, useEffect as _ } from "react";
|
|
3
|
+
import { useOnlineStatus$u as A } from "../../hooks/useOnlineStatus.js";
|
|
4
|
+
import { useOptionalNotification$u as D } from "../Notification/Notification.js";
|
|
5
|
+
/* empty css */
|
|
6
|
+
/* empty css */
|
|
7
|
+
const F = "Нет связи с интернетом. Показаны ранее загруженные данные — они могут быть неактуальны.", $ = "Связь восстановлена", h = { duration: 6e3, top: "16px", right: "16px", zIndex: "2000" };
|
|
8
|
+
function z({
|
|
9
|
+
text: o = F,
|
|
10
|
+
restoredText: i = $,
|
|
11
|
+
restoredDuration: d = 3e3,
|
|
12
|
+
notification: s = h,
|
|
13
|
+
onReconnect: m,
|
|
14
|
+
offline: w,
|
|
15
|
+
className: O = ""
|
|
16
|
+
}) {
|
|
17
|
+
const I = A(), t = w ?? !I, [b, r] = R(!1), a = E(t), f = D(), v = !!f && s !== !1, l = `u-offline-${S()}`, p = E({ onReconnect: m, text: o, restoredText: i, restoredDuration: d, notification: s, notifications: f });
|
|
18
|
+
p.current = { onReconnect: m, text: o, restoredText: i, restoredDuration: d, notification: s, notifications: f }, _(() => {
|
|
19
|
+
var T;
|
|
20
|
+
const e = p.current, n = e.notification !== !1 ? e.notifications : void 0, N = e.notification || h;
|
|
21
|
+
if (t)
|
|
22
|
+
return a.current = !0, r(!1), n == null || n.showNotification({ ...N, id: l, variant: "warning", message: e.text, duration: 0, closable: !1 }), () => {
|
|
23
|
+
n == null || n.hideNotification(l);
|
|
24
|
+
};
|
|
25
|
+
if (!a.current || (a.current = !1, (T = e.onReconnect) == null || T.call(e), e.restoredText === null)) return;
|
|
26
|
+
if (n) {
|
|
27
|
+
n.showNotification({ ...N, variant: "success", message: e.restoredText });
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
r(!0);
|
|
31
|
+
const x = window.setTimeout(() => r(!1), e.restoredDuration);
|
|
32
|
+
return () => window.clearTimeout(x);
|
|
33
|
+
}, [t, l]);
|
|
34
|
+
const c = v ? null : t ? "offline" : b ? "restored" : null;
|
|
35
|
+
return /* @__PURE__ */ u("div", { className: `u-offline-banner-region ${O}`, role: "status", "aria-live": "polite", children: c && /* @__PURE__ */ g("div", { className: `u-offline-banner u-offline-banner-${c}`, children: [
|
|
36
|
+
/* @__PURE__ */ u("span", { className: "u-offline-banner-icon", "aria-hidden": "true" }),
|
|
37
|
+
/* @__PURE__ */ u("span", { className: "u-offline-banner-text", children: c === "offline" ? o : i })
|
|
38
|
+
] }) });
|
|
39
|
+
}
|
|
40
|
+
export { z as OfflineBanner$u };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
|
|
2
2
|
import type { PaginationProps } from "./Pagination.types";
|
|
3
3
|
export declare function Pagination({ totalItems, currentPage, pageSize, onPageChange, onPageSizeChange, dataLength, pageWindow, pageSizeOptions, resultsRenderer, hideResults, className, style, marginTop, }: PaginationProps): import("react/jsx-runtime").JSX.Element;
|
|
4
4
|
//# sourceMappingURL=Pagination.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pagination.d.ts","sourceRoot":"","sources":["../../../src/components/Pagination/Pagination.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"Pagination.d.ts","sourceRoot":"","sources":["../../../src/components/Pagination/Pagination.tsx"],"names":[],"mappings":"AAAA,OAAO,yDAAyD,CAAC;AACjE,OAAO,KAAK,EACV,eAAe,EAEhB,MAAM,oBAAoB,CAAC;AA4D5B,wBAAgB,UAAU,CAAC,EACzB,UAAU,EACV,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACV,UAAc,EACd,eAAe,EACf,eAAe,EACf,WAAmB,EACnB,SAAc,EACd,KAAK,EACL,SAAS,GACV,EAAE,eAAe,2CAsHjB"}
|