@scbt-ecom/ui 0.111.3 → 0.113.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/exports/ui.js +1 -1
- package/dist/lib/exports/widget.js +1 -1
- package/dist/lib/shared/style.css +1 -1
- package/dist/lib/shared/ui/brandLogos/BrandLogos.js +1 -1
- package/dist/lib/shared/ui/brandLogos/BrandLogos.js.map +1 -1
- package/dist/lib/shared/ui/calendar/Calendar.js +1 -1
- package/dist/lib/shared/ui/calendar/Calendar.js.map +1 -1
- package/dist/lib/shared/ui/calendar/ui/Navigation.js +1 -1
- package/dist/lib/shared/ui/calendar/ui/Navigation.js.map +1 -1
- package/dist/lib/shared/ui/calendar/ui/selectDate/ui/Trigger.js +1 -1
- package/dist/lib/shared/ui/calendar/ui/selectDate/ui/Trigger.js.map +1 -1
- package/dist/lib/shared/ui/dialog/Dialog.js +1 -1
- package/dist/lib/shared/ui/dialog/Dialog.js.map +1 -1
- package/dist/lib/shared/ui/divider/Divider.js +2 -0
- package/dist/lib/shared/ui/divider/Divider.js.map +1 -0
- package/dist/lib/shared/ui/divider/index.js +2 -0
- package/dist/lib/shared/ui/formElements/controlled/autocomplete/Autocomplete.js +1 -1
- package/dist/lib/shared/ui/formElements/controlled/autocomplete/Autocomplete.js.map +1 -1
- package/dist/lib/shared/ui/formElements/controlled/checkbox/CheckboxControl.js +1 -1
- package/dist/lib/shared/ui/formElements/controlled/checkbox/CheckboxControl.js.map +1 -1
- package/dist/lib/shared/ui/formElements/controlled/combobox/ComboboxControl.js +1 -1
- package/dist/lib/shared/ui/formElements/controlled/combobox/ComboboxControl.js.map +1 -1
- package/dist/lib/shared/ui/formElements/controlled/dayPickerControl/dayPickerControl.js +1 -1
- package/dist/lib/shared/ui/formElements/controlled/dayPickerControl/dayPickerControl.js.map +1 -1
- package/dist/lib/shared/ui/formElements/controlled/dayPickerControl/model/utils.js +1 -1
- package/dist/lib/shared/ui/formElements/controlled/dayPickerControl/model/utils.js.map +1 -1
- package/dist/lib/shared/ui/formElements/controlled/dayPickerControl/range.js +1 -1
- package/dist/lib/shared/ui/formElements/controlled/dayPickerControl/range.js.map +1 -1
- package/dist/lib/shared/ui/formElements/controlled/dayPickerControl/single.js +1 -1
- package/dist/lib/shared/ui/formElements/controlled/dayPickerControl/single.js.map +1 -1
- package/dist/lib/shared/ui/formElements/controlled/editor/EditorControl.js +1 -1
- package/dist/lib/shared/ui/formElements/controlled/editor/EditorControl.js.map +1 -1
- package/dist/lib/shared/ui/formElements/controlled/editor/model/helper.js +1 -1
- package/dist/lib/shared/ui/formElements/controlled/editor/model/helper.js.map +1 -1
- package/dist/lib/shared/ui/formElements/controlled/editor/ui/Editor.js +1 -1
- package/dist/lib/shared/ui/formElements/controlled/editor/ui/Editor.js.map +1 -1
- package/dist/lib/shared/ui/formElements/controlled/editor/ui/commands/SetColor.js +1 -1
- package/dist/lib/shared/ui/formElements/controlled/editor/ui/commands/SetColor.js.map +1 -1
- package/dist/lib/shared/ui/formElements/controlled/editor/ui/commands/SetCoreCommands.js +1 -1
- package/dist/lib/shared/ui/formElements/controlled/editor/ui/commands/SetCoreCommands.js.map +1 -1
- package/dist/lib/shared/ui/formElements/controlled/editor/ui/commands/SetFontSize.js +1 -1
- package/dist/lib/shared/ui/formElements/controlled/editor/ui/commands/SetFontSize.js.map +1 -1
- package/dist/lib/shared/ui/formElements/controlled/editor/ui/commands/setCustomLink.js +1 -1
- package/dist/lib/shared/ui/formElements/controlled/editor/ui/commands/setCustomLink.js.map +1 -1
- package/dist/lib/shared/ui/formElements/controlled/index.js.map +1 -1
- package/dist/lib/shared/ui/formElements/controlled/input/InputControl.js +1 -1
- package/dist/lib/shared/ui/formElements/controlled/input/InputControl.js.map +1 -1
- package/dist/lib/shared/ui/formElements/controlled/input/MaskInputControl.js +1 -1
- package/dist/lib/shared/ui/formElements/controlled/input/MaskInputControl.js.map +1 -1
- package/dist/lib/shared/ui/formElements/controlled/inputCurrency/InputCurrencyControl.js +1 -1
- package/dist/lib/shared/ui/formElements/controlled/inputCurrency/InputCurrencyControl.js.map +1 -1
- package/dist/lib/shared/ui/formElements/controlled/inputOtp/InputOtpControl.js +1 -1
- package/dist/lib/shared/ui/formElements/controlled/inputOtp/InputOtpControl.js.map +1 -1
- package/dist/lib/shared/ui/formElements/controlled/radio/RadioGroupControl.js +1 -1
- package/dist/lib/shared/ui/formElements/controlled/radio/RadioGroupControl.js.map +1 -1
- package/dist/lib/shared/ui/formElements/controlled/slider/SliderControl.js +1 -1
- package/dist/lib/shared/ui/formElements/controlled/slider/SliderControl.js.map +1 -1
- package/dist/lib/shared/ui/formElements/controlled/switch/SwitchControl.js +1 -1
- package/dist/lib/shared/ui/formElements/controlled/switch/SwitchControl.js.map +1 -1
- package/dist/lib/shared/ui/formElements/controlled/textarea/TextareaControl.js +1 -1
- package/dist/lib/shared/ui/formElements/controlled/textarea/TextareaControl.js.map +1 -1
- package/dist/lib/shared/ui/formElements/controlled/uploader/UploaderControl.js +1 -1
- package/dist/lib/shared/ui/formElements/controlled/uploader/UploaderControl.js.map +1 -1
- package/dist/lib/shared/ui/formElements/index.js +1 -1
- package/dist/lib/shared/ui/formElements/ui/fieldAttachment/ui/ValidateSlot.js +1 -1
- package/dist/lib/shared/ui/formElements/ui/fieldAttachment/ui/ValidateSlot.js.map +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/autocomplete/Autocomplete.js +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/autocomplete/Autocomplete.js.map +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/checkbox/Checkbox.js +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/checkbox/Checkbox.js.map +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/combobox/combobox.js +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/combobox/combobox.js.map +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/dayPicker/DayPicker.js +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/dayPicker/DayPicker.js.map +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/inputCurrency/InputCurrency.js +2 -0
- package/dist/lib/shared/ui/formElements/uncontrolled/inputCurrency/InputCurrency.js.map +1 -0
- package/dist/lib/shared/ui/formElements/uncontrolled/inputCurrency/hooks/index.js +2 -0
- package/dist/lib/shared/ui/formElements/uncontrolled/inputCurrency/hooks/index.js.map +1 -0
- package/dist/lib/shared/ui/formElements/uncontrolled/inputCurrency/hooks/useCurrencyControl.js +2 -0
- package/dist/lib/shared/ui/formElements/uncontrolled/inputCurrency/hooks/useCurrencyControl.js.map +1 -0
- package/dist/lib/shared/ui/formElements/uncontrolled/inputCurrency/hooks/useCurrencyFormat.js +2 -0
- package/dist/lib/shared/ui/formElements/uncontrolled/inputCurrency/hooks/useCurrencyFormat.js.map +1 -0
- package/dist/lib/shared/ui/formElements/uncontrolled/inputCurrency/index.js +2 -0
- package/dist/lib/shared/ui/formElements/uncontrolled/inputCurrency/index.js.map +1 -0
- package/dist/lib/shared/ui/formElements/uncontrolled/inputCurrency/ui/CurrencyIcon.js +2 -0
- package/dist/lib/shared/ui/formElements/uncontrolled/inputCurrency/ui/CurrencyIcon.js.map +1 -0
- package/dist/lib/shared/ui/formElements/uncontrolled/inputCurrency/ui/index.js +2 -0
- package/dist/lib/shared/ui/formElements/uncontrolled/inputCurrency/ui/index.js.map +1 -0
- package/dist/lib/shared/ui/formElements/uncontrolled/maskInput/MaskInput.js +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/maskInput/MaskInput.js.map +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/slider/ui/sliderAlgorithmic/SliderAlgorithmic.js +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/slider/ui/sliderAlgorithmic/SliderAlgorithmic.js.map +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/slider/ui/sliderMarks/SliderMarks.js +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/slider/ui/sliderMarks/SliderMarks.js.map +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/slider/ui/sliderStep/SliderStep.js +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/slider/ui/sliderStep/SliderStep.js.map +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/uploader/UploaderBase.js +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/uploader/UploaderBase.js.map +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/uploader/model/hooks/useUploader.js +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/uploader/model/hooks/useUploader.js.map +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/uploader/ui/UploaderFile.js +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/uploader/ui/UploaderFile.js.map +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/uploader/ui/UploaderFilename.js +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/uploader/ui/UploaderFilename.js.map +1 -1
- package/dist/lib/shared/ui/index.js +1 -1
- package/dist/lib/shared/ui/modal/ui/ModalHeader.js +1 -1
- package/dist/lib/shared/ui/modal/ui/ModalHeader.js.map +1 -1
- package/dist/lib/shared/ui/popover/Popover.js +1 -1
- package/dist/lib/shared/ui/popover/Popover.js.map +1 -1
- package/dist/lib/shared/validation/base/base.constants.js +1 -1
- package/dist/lib/shared/validation/base/base.constants.js.map +1 -1
- package/dist/lib/shared/validation/base/base.validators.js +1 -1
- package/dist/lib/shared/validation/base/base.validators.js.map +1 -1
- package/dist/lib/shared/validation/base/currency.validators.js +2 -0
- package/dist/lib/shared/validation/base/currency.validators.js.map +1 -0
- package/dist/lib/shared/validation/base/date.validators.js +1 -1
- package/dist/lib/shared/validation/base/date.validators.js.map +1 -1
- package/dist/lib/shared/validation/base/regex.validators.js +1 -1
- package/dist/lib/shared/validation/base/regex.validators.js.map +1 -1
- package/dist/lib/widgets/authProvider/AuthProvider.js +1 -1
- package/dist/lib/widgets/authProvider/AuthProvider.js.map +1 -1
- package/dist/lib/widgets/authProvider/ui/Esia.js +1 -1
- package/dist/lib/widgets/authProvider/ui/Esia.js.map +1 -1
- package/dist/lib/widgets/authProvider/ui/MobileId.js +1 -1
- package/dist/lib/widgets/authProvider/ui/MobileId.js.map +1 -1
- package/dist/lib/widgets/authProvider/ui/ui/AuthWrapper.js +1 -1
- package/dist/lib/widgets/authProvider/ui/ui/AuthWrapper.js.map +1 -1
- package/dist/lib/widgets/authProvider/ui/ui/Links.js +1 -1
- package/dist/lib/widgets/authProvider/ui/ui/Links.js.map +1 -1
- package/dist/lib/widgets/banner/index.js +1 -1
- package/dist/lib/widgets/banner/ui/banners/BannerImageFull.js +1 -1
- package/dist/lib/widgets/banner/ui/banners/BannerImageFull.js.map +1 -1
- package/dist/lib/widgets/banner/ui/banners/BannerWithSeparateImg.js +1 -1
- package/dist/lib/widgets/banner/ui/banners/BannerWithSeparateImg.js.map +1 -1
- package/dist/lib/widgets/banner/ui/banners/ui/Advantages.js +1 -1
- package/dist/lib/widgets/banner/ui/banners/ui/Advantages.js.map +1 -1
- package/dist/lib/widgets/benefit/Benefit.js +1 -1
- package/dist/lib/widgets/benefit/Benefit.js.map +1 -1
- package/dist/lib/widgets/breadcrumbs/Breadcrumbs.js +1 -1
- package/dist/lib/widgets/breadcrumbs/Breadcrumbs.js.map +1 -1
- package/dist/lib/widgets/buttonWithHandlers/ButtonWithHandlers.js +1 -1
- package/dist/lib/widgets/buttonWithHandlers/ButtonWithHandlers.js.map +1 -1
- package/dist/lib/widgets/calculator/Calculator.js +1 -1
- package/dist/lib/widgets/calculator/Calculator.js.map +1 -1
- package/dist/lib/widgets/calculator/CalculatorView.js +1 -1
- package/dist/lib/widgets/calculator/CalculatorView.js.map +1 -1
- package/dist/lib/widgets/calculator/ui/calculatorFields/ui/AdditionalSlider.js +1 -1
- package/dist/lib/widgets/calculator/ui/calculatorFields/ui/AdditionalSlider.js.map +1 -1
- package/dist/lib/widgets/calculator/ui/calculatorFields/ui/CalculatorModal.js +1 -1
- package/dist/lib/widgets/calculator/ui/calculatorFields/ui/CalculatorModal.js.map +1 -1
- package/dist/lib/widgets/calculator/ui/calculatorInfo/CalculatorInfo.js +1 -1
- package/dist/lib/widgets/calculator/ui/calculatorInfo/CalculatorInfo.js.map +1 -1
- package/dist/lib/widgets/calculator/ui/calculatorInfo/ui/AssistHint.js +1 -1
- package/dist/lib/widgets/calculator/ui/calculatorInfo/ui/AssistHint.js.map +1 -1
- package/dist/lib/widgets/calculator/ui/calculatorInfo/ui/CalculatorInfoHead.js +1 -1
- package/dist/lib/widgets/calculator/ui/calculatorInfo/ui/CalculatorInfoHead.js.map +1 -1
- package/dist/lib/widgets/calculator/ui/calculatorInfo/ui/InfoListItem.js +1 -1
- package/dist/lib/widgets/calculator/ui/calculatorInfo/ui/InfoListItem.js.map +1 -1
- package/dist/lib/widgets/dynamicForm/DynamicForm.js +1 -1
- package/dist/lib/widgets/dynamicForm/DynamicForm.js.map +1 -1
- package/dist/lib/widgets/dynamicFormDialog/DynamicFormDialog.js +1 -1
- package/dist/lib/widgets/dynamicFormDialog/DynamicFormDialog.js.map +1 -1
- package/dist/lib/widgets/fallbacksView/FallbacksView.js +1 -1
- package/dist/lib/widgets/fallbacksView/FallbacksView.js.map +1 -1
- package/dist/lib/widgets/fallbacksView/model/helpers.js +1 -1
- package/dist/lib/widgets/fallbacksView/model/helpers.js.map +1 -1
- package/dist/lib/widgets/fieldMapper/FieldMapper.js +1 -1
- package/dist/lib/widgets/fieldMapper/FieldMapper.js.map +1 -1
- package/dist/lib/widgets/footer/Footer.js +1 -1
- package/dist/lib/widgets/footer/Footer.js.map +1 -1
- package/dist/lib/widgets/footer/ui/FooterLogo.js +1 -1
- package/dist/lib/widgets/footer/ui/FooterLogo.js.map +1 -1
- package/dist/lib/widgets/footer/ui/NavLinks.js +1 -1
- package/dist/lib/widgets/footer/ui/NavLinks.js.map +1 -1
- package/dist/lib/widgets/footer/ui/PhonesBlock.js +1 -1
- package/dist/lib/widgets/footer/ui/PhonesBlock.js.map +1 -1
- package/dist/lib/widgets/footer/ui/SiteMap.js +1 -1
- package/dist/lib/widgets/footer/ui/SiteMap.js.map +1 -1
- package/dist/lib/widgets/footer/ui/SocialLinks.js +1 -1
- package/dist/lib/widgets/footer/ui/SocialLinks.js.map +1 -1
- package/dist/lib/widgets/header/Header.js +1 -1
- package/dist/lib/widgets/header/Header.js.map +1 -1
- package/dist/lib/widgets/header/model/helpers.js +1 -1
- package/dist/lib/widgets/header/model/helpers.js.map +1 -1
- package/dist/lib/widgets/index.js +1 -1
- package/dist/lib/widgets/infoBlock/InfoBlock.js +1 -1
- package/dist/lib/widgets/infoBlock/InfoBlock.js.map +1 -1
- package/dist/lib/widgets/infoBlock/ui/LinksList.js +1 -1
- package/dist/lib/widgets/infoBlock/ui/LinksList.js.map +1 -1
- package/dist/lib/widgets/infoBlock/ui/RootContent.js +1 -1
- package/dist/lib/widgets/infoBlock/ui/RootContent.js.map +1 -1
- package/dist/lib/widgets/interLinking/InterLinking.js +1 -1
- package/dist/lib/widgets/interLinking/InterLinking.js.map +1 -1
- package/dist/lib/widgets/interLinking/ui/ColumnGroup.js +1 -1
- package/dist/lib/widgets/interLinking/ui/ColumnGroup.js.map +1 -1
- package/dist/lib/widgets/interLinking/ui/LinksList.js +1 -1
- package/dist/lib/widgets/interLinking/ui/LinksList.js.map +1 -1
- package/dist/lib/widgets/longBanner/LongBanner.js +1 -1
- package/dist/lib/widgets/longBanner/LongBanner.js.map +1 -1
- package/dist/lib/widgets/longBanner/ui/TextItem.js +1 -1
- package/dist/lib/widgets/longBanner/ui/TextItem.js.map +1 -1
- package/dist/lib/widgets/model/helpers.js +2 -2
- package/dist/lib/widgets/model/helpers.js.map +1 -1
- package/dist/lib/widgets/seoHeader/SeoHeader.js +1 -1
- package/dist/lib/widgets/seoHeader/SeoHeader.js.map +1 -1
- package/dist/lib/widgets/seoHeader/ui/desktop/CategoriesDesktop.js +1 -1
- package/dist/lib/widgets/seoHeader/ui/desktop/CategoriesDesktop.js.map +1 -1
- package/dist/lib/widgets/seoHeader/ui/desktop/CategoryTabs.js +1 -1
- package/dist/lib/widgets/seoHeader/ui/desktop/CategoryTabs.js.map +1 -1
- package/dist/lib/widgets/seoHeader/ui/desktop/tab/ui/content/TabContent.js +1 -1
- package/dist/lib/widgets/seoHeader/ui/desktop/tab/ui/content/TabContent.js.map +1 -1
- package/dist/lib/widgets/seoHeader/ui/mobile/CategoriesMobile.js +1 -1
- package/dist/lib/widgets/seoHeader/ui/mobile/CategoriesMobile.js.map +1 -1
- package/dist/lib/widgets/seoHeader/ui/mobile/menu/Menu.js +1 -1
- package/dist/lib/widgets/seoHeader/ui/mobile/menu/Menu.js.map +1 -1
- package/dist/lib/widgets/seoHeader/ui/mobile/menu/MenuItem.js +1 -1
- package/dist/lib/widgets/seoHeader/ui/mobile/menu/MenuItem.js.map +1 -1
- package/dist/lib/widgets/stepper/Stepper.js +1 -1
- package/dist/lib/widgets/stepper/Stepper.js.map +1 -1
- package/dist/lib/widgets/stepper/ui/StepperCarousel.js +1 -1
- package/dist/lib/widgets/stepper/ui/StepperCarousel.js.map +1 -1
- package/dist/lib/widgets/table/Table.js +1 -1
- package/dist/lib/widgets/table/Table.js.map +1 -1
- package/dist/lib/widgets/usefulInfo/UsefulInfo.js +1 -1
- package/dist/lib/widgets/usefulInfo/UsefulInfo.js.map +1 -1
- package/dist/lib/widgets/usefulInfo/ui/subEntities/documents/Documents.js +1 -1
- package/dist/lib/widgets/usefulInfo/ui/subEntities/documents/Documents.js.map +1 -1
- package/dist/lib/widgets/usefulInfo/ui/subEntities/documents/ui/document/Document.js +1 -1
- package/dist/lib/widgets/usefulInfo/ui/subEntities/documents/ui/document/Document.js.map +1 -1
- package/dist/lib/widgets/usefulInfo/ui/subEntities/experts/Experts.js +1 -1
- package/dist/lib/widgets/usefulInfo/ui/subEntities/experts/Experts.js.map +1 -1
- package/dist/lib/widgets/usefulInfo/ui/subEntities/html/Html.js +1 -1
- package/dist/lib/widgets/usefulInfo/ui/subEntities/html/Html.js.map +1 -1
- package/dist/lib/widgets/usefulInfo/ui/subEntities/table/Table.js +1 -1
- package/dist/lib/widgets/usefulInfo/ui/subEntities/table/Table.js.map +1 -1
- package/dist/lib/widgets/userFeedback/UserFeedback.js +1 -1
- package/dist/lib/widgets/userFeedback/UserFeedback.js.map +1 -1
- package/dist/lib/widgets/userFeedback/ui/FeedbackTrigger.js +1 -1
- package/dist/lib/widgets/userFeedback/ui/FeedbackTrigger.js.map +1 -1
- package/dist/lib/widgets/userFeedback/ui/Finally.js +1 -1
- package/dist/lib/widgets/userFeedback/ui/Finally.js.map +1 -1
- package/dist/lib/widgets/userFeedback/ui/SelectRating.js +1 -1
- package/dist/lib/widgets/userFeedback/ui/SelectRating.js.map +1 -1
- package/dist/lib/widgets/userFeedback/ui/UserReview.js +1 -1
- package/dist/lib/widgets/userFeedback/ui/UserReview.js.map +1 -1
- package/dist/node_modules/@floating-ui/dom/dist/floating-ui.dom.js +1 -1
- package/dist/node_modules/@floating-ui/dom/dist/floating-ui.dom.js.map +1 -1
- package/dist/node_modules/@floating-ui/react/dist/floating-ui.react.js +1 -1
- package/dist/node_modules/@floating-ui/react/dist/floating-ui.react.js.map +1 -1
- package/dist/node_modules/@floating-ui/react/dist/floating-ui.react.utils.js +2 -0
- package/dist/node_modules/@floating-ui/react/dist/floating-ui.react.utils.js.map +1 -0
- package/dist/stats.html +1 -1
- package/dist/types/lib/shared/ui/divider/Divider.d.ts +25 -0
- package/dist/types/lib/shared/ui/divider/index.d.ts +1 -0
- package/dist/types/lib/shared/ui/formElements/controlled/index.d.ts +2 -2
- package/dist/types/lib/shared/ui/formElements/controlled/inputCurrency/InputCurrencyControl.d.ts +11 -23
- package/dist/types/lib/shared/ui/formElements/controlled/inputCurrency/index.d.ts +1 -1
- package/dist/types/lib/shared/ui/formElements/index.d.ts +1 -0
- package/dist/types/lib/shared/ui/formElements/uncontrolled/index.d.ts +1 -0
- package/dist/types/lib/shared/ui/formElements/uncontrolled/inputCurrency/InputCurrency.d.ts +37 -0
- package/dist/types/lib/shared/ui/formElements/uncontrolled/inputCurrency/hooks/index.d.ts +2 -0
- package/dist/types/lib/shared/ui/formElements/uncontrolled/inputCurrency/hooks/useCurrencyControl.d.ts +15 -0
- package/dist/types/lib/shared/ui/formElements/uncontrolled/inputCurrency/hooks/useCurrencyFormat.d.ts +1 -0
- package/dist/types/lib/shared/ui/formElements/uncontrolled/inputCurrency/index.d.ts +1 -0
- package/dist/types/lib/shared/ui/formElements/uncontrolled/inputCurrency/ui/CurrencyIcon.d.ts +14 -0
- package/dist/types/lib/shared/ui/formElements/uncontrolled/inputCurrency/ui/index.d.ts +1 -0
- package/dist/types/lib/shared/ui/formElements/uncontrolled/maskInput/MaskInput.d.ts +3 -0
- package/dist/types/lib/shared/ui/index.d.ts +1 -0
- package/dist/types/lib/shared/validation/base/base.constants.d.ts +1 -0
- package/dist/types/lib/shared/validation/base/base.validators.d.ts +2 -0
- package/dist/types/lib/shared/validation/base/currency.validators.d.ts +69 -0
- package/dist/types/lib/shared/validation/index.d.ts +1 -0
- package/package.json +4 -3
- package/dist/lib/shared/ui/formElements/controlled/inputCurrency/model/helpers.js +0 -2
- package/dist/lib/shared/ui/formElements/controlled/inputCurrency/model/helpers.js.map +0 -1
- package/dist/lib/shared/ui/formElements/controlled/inputCurrency/model/useInputCurrency.js +0 -2
- package/dist/lib/shared/ui/formElements/controlled/inputCurrency/model/useInputCurrency.js.map +0 -1
- package/dist/lib/shared/ui/formElements/controlled/inputCurrency/ui/MenuTrigger.js +0 -2
- package/dist/lib/shared/ui/formElements/controlled/inputCurrency/ui/MenuTrigger.js.map +0 -1
- package/dist/lib/shared/ui/formElements/controlled/inputCurrency/ui/OptionList.js +0 -2
- package/dist/lib/shared/ui/formElements/controlled/inputCurrency/ui/OptionList.js.map +0 -1
- package/dist/lib/shared/ui/formElements/controlled/inputCurrency/ui/index.js +0 -2
- package/dist/types/lib/shared/ui/formElements/controlled/inputCurrency/model/helpers.d.ts +0 -3
- package/dist/types/lib/shared/ui/formElements/controlled/inputCurrency/model/useInputCurrency.d.ts +0 -10
- package/dist/types/lib/shared/ui/formElements/controlled/inputCurrency/ui/MenuTrigger.d.ts +0 -7
- package/dist/types/lib/shared/ui/formElements/controlled/inputCurrency/ui/OptionList.d.ts +0 -8
- package/dist/types/lib/shared/ui/formElements/controlled/inputCurrency/ui/index.d.ts +0 -2
- /package/dist/lib/shared/ui/{formElements/controlled/inputCurrency/ui → divider}/index.js.map +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Divider.js","sources":["../../../../../lib/shared/ui/divider/Divider.tsx"],"sourcesContent":["import { type Property } from 'csstype'\nimport { cn } from '$/shared/utils'\n\ntype Color = `#${string}` | `rgb(${number}, ${number}, ${number})` | `rgba(${number}, ${number}, ${number}, ${number})` | string\n\nexport interface DividerProps extends React.HTMLAttributes<HTMLSpanElement> {\n /**\n * Направление разделителя\n * @default vertical\n */\n direction?: 'vertical' | 'horizontal'\n /**\n * Ширина разделителя. Определяется автоматически в зависимости от `direction`:\n * 1px если `direction: 'vertical'`, 100% если `direction: 'horizontal'`\n */\n width?: Property.Width<string | number>\n /**\n * Высота разделителя. Определяется автоматически в зависимости от `direction`:\n * 100% если `direction: 'vertical'`, 1px если `direction: 'horizontal'`\n */\n height?: Property.Height<string | number>\n /**\n * Цвет разделителя\n */\n color?: Color\n}\n\nexport const Divider = ({\n direction = 'vertical',\n width = direction === 'vertical' ? '1px' : '100%',\n height = direction === 'vertical' ? '100%' : '1px',\n className,\n color = 'bg-color-dark',\n ...props\n}: DividerProps) => {\n const isInlineColor = color?.startsWith('#') || color?.startsWith('rgb')\n return (\n <div\n {...props}\n style={{ width, height, backgroundColor: isInlineColor ? color : undefined }}\n className={cn(\n '',\n {\n [color]: !isInlineColor\n },\n className\n )}\n />\n )\n}\n"],"names":["Divider","direction","width","height","className","color","props","isInlineColor","jsx","cn"],"mappings":"+EA2BO,MAAMA,EAAU,CAAC,CACtB,UAAAC,EAAY,WACZ,MAAAC,EAAQD,IAAc,WAAa,MAAQ,OAC3C,OAAAE,EAASF,IAAc,WAAa,OAAS,MAC7C,UAAAG,EACA,MAAAC,EAAQ,gBACR,GAAGC,CACL,IAAoB,CAClB,MAAMC,GAAgBF,GAAA,YAAAA,EAAO,WAAW,QAAQA,GAAA,YAAAA,EAAO,WAAW,QAClE,OACEG,EAAC,MAAA,CACE,GAAGF,EACJ,MAAO,CAAE,MAAAJ,EAAO,OAAAC,EAAQ,gBAAiBI,EAAgBF,EAAQ,MAAA,EACjE,UAAWI,EACT,GACA,CACE,CAACJ,CAAK,EAAG,CAACE,CAAA,EAEZH,CAAA,CACF,CAAA,CAGN"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as g,jsx as m}from"react/jsx-runtime";import{useController as v}from"../../../../../../node_modules/react-hook-form/dist/index.esm.js";import{cn as w}from"../../../../utils/cn.js";import"../../../button/Button.js";import"../../../buttonIcon/ButtonIcon.js";import"../../../calendar/Calendar.js";import"../../../calendar/model/utils.js";import"../../../accordion/Accordion.js";import"react";import"react-dom";import"../../../modal/ui/IframeModalContent.js";import"../../../../../../node_modules/react-hot-toast/dist/index.js";import"../../../table/ui/primitives/Primitives.js";import"../../../carousel/ui/CarouselContent.js";import"../../../slot/Slot.js";import{AutocompleteBase as j}from"../../uncontrolled/autocomplete/Autocomplete.js";import"../../uncontrolled/checkbox/Checkbox.js";import"../../uncontrolled/combobox/combobox.js";import"../../uncontrolled/dayPicker/DayPicker.js";import"../../uncontrolled/input/Input.js";import"../../uncontrolled/inputOtp/InputOtpBase.js";import"../../uncontrolled/maskInput/MaskInput.js";import"../../uncontrolled/radio/RadioGroup.js";import"../../uncontrolled/radio/ui/RadioItem.js";import"../../uncontrolled/slider/SliderBase.js";import"../../uncontrolled/switch/Switch.js";import"../../uncontrolled/textarea/Textarea.js";import"../../uncontrolled/uploader/UploaderBase.js";import"../editor/ui/Editor.js";import"../input/MaskInputControl.js";import"../../../dropdownList/ui/dropdownItem/DropdownItem.js";import{MessageView as A}from"../../ui/MessageView.js";const
|
|
1
|
+
import{jsxs as g,jsx as m}from"react/jsx-runtime";import{useController as v}from"../../../../../../node_modules/react-hook-form/dist/index.esm.js";import{cn as w}from"../../../../utils/cn.js";import"../../../button/Button.js";import"../../../buttonIcon/ButtonIcon.js";import"../../../calendar/Calendar.js";import"../../../calendar/model/utils.js";import"../../../accordion/Accordion.js";import"react";import"react-dom";import"../../../modal/ui/IframeModalContent.js";import"../../../../../../node_modules/react-hot-toast/dist/index.js";import"../../../table/ui/primitives/Primitives.js";import"../../../carousel/ui/CarouselContent.js";import"../../../slot/Slot.js";import{AutocompleteBase as j}from"../../uncontrolled/autocomplete/Autocomplete.js";import"../../uncontrolled/checkbox/Checkbox.js";import"../../uncontrolled/combobox/combobox.js";import"../../uncontrolled/dayPicker/DayPicker.js";import"../../uncontrolled/input/Input.js";import"../../uncontrolled/inputOtp/InputOtpBase.js";import"../../uncontrolled/maskInput/MaskInput.js";import"../../uncontrolled/radio/RadioGroup.js";import"../../uncontrolled/radio/ui/RadioItem.js";import"../../uncontrolled/slider/SliderBase.js";import"../../uncontrolled/switch/Switch.js";import"../../uncontrolled/textarea/Textarea.js";import"../../uncontrolled/uploader/UploaderBase.js";import"../../uncontrolled/inputCurrency/InputCurrency.js";import"../editor/ui/Editor.js";import"../input/MaskInputControl.js";import"../../../dropdownList/ui/dropdownItem/DropdownItem.js";import{MessageView as A}from"../../ui/MessageView.js";const ot=({control:r,name:e,defaultValue:p,disabled:a,helperText:s,rules:n,shouldUnregister:c,classes:l,...t})=>{const{field:d,fieldState:f}=v({control:r,name:e,defaultValue:p,disabled:a,rules:n,shouldUnregister:c}),{error:o,invalid:i,isTouched:u}=f,{container:h,message:x}=l||{};return g("div",{className:w("w-full",h),"data-test-id":"autocomplete",children:[m(j,{...t,...d,invalid:i,attachmentProps:{...t==null?void 0:t.attachmentProps,icon:void 0,invalid:i,isTouched:u,withValidateIcons:!0}}),m(A,{className:x,text:(o==null?void 0:o.message)||s,intent:o?"error":"simple"})]})};export{ot as AutocompleteControl};
|
|
2
2
|
//# sourceMappingURL=Autocomplete.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Autocomplete.js","sources":["../../../../../../../lib/shared/ui/formElements/controlled/autocomplete/Autocomplete.tsx"],"sourcesContent":["import { type Control, type FieldValues, type Path, useController, type UseControllerProps } from 'react-hook-form'\nimport { MessageView } from '../../ui'\nimport { AutocompleteBase, type AutocompleteBaseProps } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type AutocompleteControlProps<\n TFieldValues extends FieldValues,\n T,\n TName extends Path<TFieldValues> = Path<TFieldValues>\n> = UseControllerProps<TFieldValues, TName> &\n Omit<AutocompleteBaseProps<T>, 'classes'> & {\n control: Control<TFieldValues>\n helperText?: string\n classes?: AutocompleteBaseProps<T>['classes'] & {\n container?: string\n message?: string\n }\n }\n\nexport const AutocompleteControl = <TFieldValues extends FieldValues, T>({\n control,\n name,\n defaultValue,\n disabled,\n helperText,\n rules,\n shouldUnregister,\n classes,\n ...props\n}: AutocompleteControlProps<TFieldValues, T>) => {\n const { field, fieldState } = useController({\n control,\n name,\n defaultValue,\n disabled,\n rules,\n shouldUnregister\n })\n\n const { error, invalid, isTouched } = fieldState\n const { container, message } = classes || {}\n\n return (\n <div className={cn('w-full', container)} data-test-id='autocomplete'>\n <AutocompleteBase\n {...props}\n {...field}\n invalid={invalid}\n attachmentProps={{ ...props?.attachmentProps, icon: undefined, invalid, isTouched, withValidateIcons: true }}\n />\n <MessageView className={message} text={error?.message || helperText} intent={error ? 'error' : 'simple'} />\n </div>\n )\n}\n"],"names":["AutocompleteControl","control","name","defaultValue","disabled","helperText","rules","shouldUnregister","classes","props","field","fieldState","useController","error","invalid","isTouched","container","message","jsxs","cn","jsx","AutocompleteBase","MessageView"],"mappings":"
|
|
1
|
+
{"version":3,"file":"Autocomplete.js","sources":["../../../../../../../lib/shared/ui/formElements/controlled/autocomplete/Autocomplete.tsx"],"sourcesContent":["import { type Control, type FieldValues, type Path, useController, type UseControllerProps } from 'react-hook-form'\nimport { MessageView } from '../../ui'\nimport { AutocompleteBase, type AutocompleteBaseProps } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type AutocompleteControlProps<\n TFieldValues extends FieldValues,\n T,\n TName extends Path<TFieldValues> = Path<TFieldValues>\n> = UseControllerProps<TFieldValues, TName> &\n Omit<AutocompleteBaseProps<T>, 'classes'> & {\n control: Control<TFieldValues>\n helperText?: string\n classes?: AutocompleteBaseProps<T>['classes'] & {\n container?: string\n message?: string\n }\n }\n\nexport const AutocompleteControl = <TFieldValues extends FieldValues, T>({\n control,\n name,\n defaultValue,\n disabled,\n helperText,\n rules,\n shouldUnregister,\n classes,\n ...props\n}: AutocompleteControlProps<TFieldValues, T>) => {\n const { field, fieldState } = useController({\n control,\n name,\n defaultValue,\n disabled,\n rules,\n shouldUnregister\n })\n\n const { error, invalid, isTouched } = fieldState\n const { container, message } = classes || {}\n\n return (\n <div className={cn('w-full', container)} data-test-id='autocomplete'>\n <AutocompleteBase\n {...props}\n {...field}\n invalid={invalid}\n attachmentProps={{ ...props?.attachmentProps, icon: undefined, invalid, isTouched, withValidateIcons: true }}\n />\n <MessageView className={message} text={error?.message || helperText} intent={error ? 'error' : 'simple'} />\n </div>\n )\n}\n"],"names":["AutocompleteControl","control","name","defaultValue","disabled","helperText","rules","shouldUnregister","classes","props","field","fieldState","useController","error","invalid","isTouched","container","message","jsxs","cn","jsx","AutocompleteBase","MessageView"],"mappings":"giDAmBO,MAAMA,GAAsB,CAAsC,CACvE,QAAAC,EACA,KAAAC,EACA,aAAAC,EACA,SAAAC,EACA,WAAAC,EACA,MAAAC,EACA,iBAAAC,EACA,QAAAC,EACA,GAAGC,CACL,IAAiD,CAC/C,KAAM,CAAE,MAAAC,EAAO,WAAAC,CAAA,EAAeC,EAAc,CAC1C,QAAAX,EACA,KAAAC,EACA,aAAAC,EACA,SAAAC,EACA,MAAAE,EACA,iBAAAC,CAAA,CACD,EAEK,CAAE,MAAAM,EAAO,QAAAC,EAAS,UAAAC,CAAA,EAAcJ,EAChC,CAAE,UAAAK,EAAW,QAAAC,CAAA,EAAYT,GAAW,CAAA,EAE1C,OACEU,EAAC,OAAI,UAAWC,EAAG,SAAUH,CAAS,EAAG,eAAa,eACpD,SAAA,CAAAI,EAACC,EAAA,CACE,GAAGZ,EACH,GAAGC,EACJ,QAAAI,EACA,gBAAiB,CAAE,GAAGL,GAAA,YAAAA,EAAO,gBAAiB,KAAM,OAAW,QAAAK,EAAS,UAAAC,EAAW,kBAAmB,EAAA,CAAK,CAAA,EAE7GK,EAACE,EAAA,CAAY,UAAWL,EAAS,MAAMJ,GAAA,YAAAA,EAAO,UAAWR,EAAY,OAAQQ,EAAQ,QAAU,QAAA,CAAU,CAAA,EAC3G,CAEJ"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as i,jsx as t}from"react/jsx-runtime";import{useId as w}from"react";import{useController as B}from"../../../../../../node_modules/react-hook-form/dist/index.esm.js";import{CheckboxBase as I}from"../../uncontrolled/checkbox/Checkbox.js";import{cn as e}from"../../../../utils/cn.js";import"../../../button/Button.js";import"../../../buttonIcon/ButtonIcon.js";import"../../../calendar/Calendar.js";import"../../../calendar/model/utils.js";import"../../../accordion/Accordion.js";import"react-dom";import"../../../modal/ui/IframeModalContent.js";import"../../../../../../node_modules/react-hot-toast/dist/index.js";import"../../../table/ui/primitives/Primitives.js";import"../../../carousel/ui/CarouselContent.js";import"../../../slot/Slot.js";import"../../uncontrolled/autocomplete/Autocomplete.js";import"../../uncontrolled/combobox/combobox.js";import"../../uncontrolled/dayPicker/DayPicker.js";import"../../uncontrolled/input/Input.js";import"../../uncontrolled/inputOtp/InputOtpBase.js";import"../../uncontrolled/maskInput/MaskInput.js";import"../../uncontrolled/radio/RadioGroup.js";import"../../uncontrolled/radio/ui/RadioItem.js";import"../../uncontrolled/slider/SliderBase.js";import"../../uncontrolled/switch/Switch.js";import"../../uncontrolled/textarea/Textarea.js";import"../../uncontrolled/uploader/UploaderBase.js";import"../editor/ui/Editor.js";import"../input/MaskInputControl.js";import"../../../dropdownList/ui/dropdownItem/DropdownItem.js";import{MessageView as M}from"../../ui/MessageView.js";const
|
|
1
|
+
import{jsxs as i,jsx as t}from"react/jsx-runtime";import{useId as w}from"react";import{useController as B}from"../../../../../../node_modules/react-hook-form/dist/index.esm.js";import{CheckboxBase as I}from"../../uncontrolled/checkbox/Checkbox.js";import{cn as e}from"../../../../utils/cn.js";import"../../../button/Button.js";import"../../../buttonIcon/ButtonIcon.js";import"../../../calendar/Calendar.js";import"../../../calendar/model/utils.js";import"../../../accordion/Accordion.js";import"react-dom";import"../../../modal/ui/IframeModalContent.js";import"../../../../../../node_modules/react-hot-toast/dist/index.js";import"../../../table/ui/primitives/Primitives.js";import"../../../carousel/ui/CarouselContent.js";import"../../../slot/Slot.js";import"../../uncontrolled/autocomplete/Autocomplete.js";import"../../uncontrolled/combobox/combobox.js";import"../../uncontrolled/dayPicker/DayPicker.js";import"../../uncontrolled/input/Input.js";import"../../uncontrolled/inputOtp/InputOtpBase.js";import"../../uncontrolled/maskInput/MaskInput.js";import"../../uncontrolled/radio/RadioGroup.js";import"../../uncontrolled/radio/ui/RadioItem.js";import"../../uncontrolled/slider/SliderBase.js";import"../../uncontrolled/switch/Switch.js";import"../../uncontrolled/textarea/Textarea.js";import"../../uncontrolled/uploader/UploaderBase.js";import"../../uncontrolled/inputCurrency/InputCurrency.js";import"../editor/ui/Editor.js";import"../input/MaskInputControl.js";import"../../../dropdownList/ui/dropdownItem/DropdownItem.js";import{MessageView as M}from"../../ui/MessageView.js";const ao=({control:s,classes:p,className:l,name:a,rules:c,shouldUnregister:n,defaultValue:d,disabled:o,children:x,helperText:f,...g})=>{const{field:h,fieldState:k}=B({control:s,name:a,rules:c,shouldUnregister:n,defaultValue:d,disabled:o}),{container:C,message:u,label:b,...v}=p||{},{value:y,onChange:N,...j}=h,{invalid:F,error:r}=k,m=w();return i("div",{className:e("flex flex-col gap-y-2",l),children:[i("div",{className:e("flex items-center justify-items-start gap-x-3",C),children:[t(I,{id:m,checked:y,onCheckedChange:N,invalid:F,classes:v,...g,...j}),t("label",{htmlFor:m,className:e("mob-body-regular-s text-color-dark","desktop:desk-body-regular-m desktop:gap-x-4",{"text-color-disabled":o},b),children:x})]}),t(M,{text:r?r.message:f,className:u,intent:r?"error":"simple",disabled:o})]})};export{ao as CheckboxControl};
|
|
2
2
|
//# sourceMappingURL=CheckboxControl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CheckboxControl.js","sources":["../../../../../../../lib/shared/ui/formElements/controlled/checkbox/CheckboxControl.tsx"],"sourcesContent":["'use client'\n\nimport { useId } from 'react'\nimport { type Control, type FieldPath, type FieldValues, useController, type UseControllerProps } from 'react-hook-form'\nimport { CheckboxBase, type CheckboxBaseProps } from '../../uncontrolled/checkbox'\nimport { MessageView } from '$/shared/ui/formElements/ui'\nimport { cn } from '$/shared/utils'\n\ntype CheckboxControlClasses = CheckboxBaseProps['classes'] & {\n container?: string\n message?: string\n label?: string\n}\n\nexport type CheckboxControlProps<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\n> = UseControllerProps<TFieldValues, TName> &\n Omit<CheckboxBaseProps, 'classes'> & {\n /**\n * Контрол объект для управления полем\n */\n control: Control<TFieldValues>\n /**\n * Отображаемый лейбл\n */\n children: React.ReactElement | string\n /**\n * Дополнительные стили компонента\n */\n classes?: CheckboxControlClasses\n /**\n * Дополнительный текст\n */\n helperText?: string\n }\n\nexport const CheckboxControl = <TFieldValues extends FieldValues = FieldValues>({\n control,\n classes,\n className,\n name,\n rules,\n shouldUnregister,\n defaultValue,\n disabled,\n children,\n helperText,\n ...props\n}: CheckboxControlProps<TFieldValues>) => {\n const { field, fieldState } = useController({\n control,\n name,\n rules,\n shouldUnregister,\n defaultValue,\n disabled\n })\n\n const { container, message, label, ...restClasses } = classes || {}\n const { value, onChange, ...restField } = field\n const { invalid, error } = fieldState\n\n const id = useId()\n\n return (\n <div className={cn('flex flex-col gap-y-2', className)}>\n <div className={cn('flex items-center justify-items-start gap-x-3', container)}>\n <CheckboxBase\n id={id}\n checked={value}\n onCheckedChange={onChange}\n invalid={invalid}\n classes={restClasses}\n {...props}\n {...restField}\n />\n <label\n htmlFor={id}\n className={cn(\n 'mob-body-regular-s text-color-dark',\n 'desktop:desk-body-regular-m desktop:gap-x-4',\n {\n 'text-color-disabled': disabled\n },\n label\n )}\n >\n {children}\n </label>\n </div>\n <MessageView\n text={error ? error.message : helperText}\n className={message}\n intent={error ? 'error' : 'simple'}\n disabled={disabled}\n />\n </div>\n )\n}\n"],"names":["CheckboxControl","control","classes","className","name","rules","shouldUnregister","defaultValue","disabled","children","helperText","props","field","fieldState","useController","container","message","label","restClasses","value","onChange","restField","invalid","error","id","useId","cn","jsxs","jsx","CheckboxBase","MessageView"],"mappings":"
|
|
1
|
+
{"version":3,"file":"CheckboxControl.js","sources":["../../../../../../../lib/shared/ui/formElements/controlled/checkbox/CheckboxControl.tsx"],"sourcesContent":["'use client'\n\nimport { useId } from 'react'\nimport { type Control, type FieldPath, type FieldValues, useController, type UseControllerProps } from 'react-hook-form'\nimport { CheckboxBase, type CheckboxBaseProps } from '../../uncontrolled/checkbox'\nimport { MessageView } from '$/shared/ui/formElements/ui'\nimport { cn } from '$/shared/utils'\n\ntype CheckboxControlClasses = CheckboxBaseProps['classes'] & {\n container?: string\n message?: string\n label?: string\n}\n\nexport type CheckboxControlProps<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\n> = UseControllerProps<TFieldValues, TName> &\n Omit<CheckboxBaseProps, 'classes'> & {\n /**\n * Контрол объект для управления полем\n */\n control: Control<TFieldValues>\n /**\n * Отображаемый лейбл\n */\n children: React.ReactElement | string\n /**\n * Дополнительные стили компонента\n */\n classes?: CheckboxControlClasses\n /**\n * Дополнительный текст\n */\n helperText?: string\n }\n\nexport const CheckboxControl = <TFieldValues extends FieldValues = FieldValues>({\n control,\n classes,\n className,\n name,\n rules,\n shouldUnregister,\n defaultValue,\n disabled,\n children,\n helperText,\n ...props\n}: CheckboxControlProps<TFieldValues>) => {\n const { field, fieldState } = useController({\n control,\n name,\n rules,\n shouldUnregister,\n defaultValue,\n disabled\n })\n\n const { container, message, label, ...restClasses } = classes || {}\n const { value, onChange, ...restField } = field\n const { invalid, error } = fieldState\n\n const id = useId()\n\n return (\n <div className={cn('flex flex-col gap-y-2', className)}>\n <div className={cn('flex items-center justify-items-start gap-x-3', container)}>\n <CheckboxBase\n id={id}\n checked={value}\n onCheckedChange={onChange}\n invalid={invalid}\n classes={restClasses}\n {...props}\n {...restField}\n />\n <label\n htmlFor={id}\n className={cn(\n 'mob-body-regular-s text-color-dark',\n 'desktop:desk-body-regular-m desktop:gap-x-4',\n {\n 'text-color-disabled': disabled\n },\n label\n )}\n >\n {children}\n </label>\n </div>\n <MessageView\n text={error ? error.message : helperText}\n className={message}\n intent={error ? 'error' : 'simple'}\n disabled={disabled}\n />\n </div>\n )\n}\n"],"names":["CheckboxControl","control","classes","className","name","rules","shouldUnregister","defaultValue","disabled","children","helperText","props","field","fieldState","useController","container","message","label","restClasses","value","onChange","restField","invalid","error","id","useId","cn","jsxs","jsx","CheckboxBase","MessageView"],"mappings":"4iDAqCO,MAAMA,GAAkB,CAAiD,CAC9E,QAAAC,EACA,QAAAC,EACA,UAAAC,EACA,KAAAC,EACA,MAAAC,EACA,iBAAAC,EACA,aAAAC,EACA,SAAAC,EACA,SAAAC,EACA,WAAAC,EACA,GAAGC,CACL,IAA0C,CACxC,KAAM,CAAE,MAAAC,EAAO,WAAAC,CAAA,EAAeC,EAAc,CAC1C,QAAAb,EACA,KAAAG,EACA,MAAAC,EACA,iBAAAC,EACA,aAAAC,EACA,SAAAC,CAAA,CACD,EAEK,CAAE,UAAAO,EAAW,QAAAC,EAAS,MAAAC,EAAO,GAAGC,CAAA,EAAgBhB,GAAW,CAAA,EAC3D,CAAE,MAAAiB,EAAO,SAAAC,EAAU,GAAGC,GAAcT,EACpC,CAAE,QAAAU,EAAS,MAAAC,CAAA,EAAUV,EAErBW,EAAKC,EAAA,EAEX,SACG,MAAA,CAAI,UAAWC,EAAG,wBAAyBvB,CAAS,EACnD,SAAA,CAAAwB,EAAC,MAAA,CAAI,UAAWD,EAAG,gDAAiDX,CAAS,EAC3E,SAAA,CAAAa,EAACC,EAAA,CACC,GAAAL,EACA,QAASL,EACT,gBAAiBC,EACjB,QAAAE,EACA,QAASJ,EACR,GAAGP,EACH,GAAGU,CAAA,CAAA,EAENO,EAAC,QAAA,CACC,QAASJ,EACT,UAAWE,EACT,qCACA,8CACA,CACE,sBAAuBlB,CAAA,EAEzBS,CAAA,EAGD,SAAAR,CAAA,CAAA,CACH,EACF,EACAmB,EAACE,EAAA,CACC,KAAMP,EAAQA,EAAM,QAAUb,EAC9B,UAAWM,EACX,OAAQO,EAAQ,QAAU,SAC1B,SAAAf,CAAA,CAAA,CACF,EACF,CAEJ"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as y,jsx as e}from"react/jsx-runtime";import{useController as F}from"../../../../../../node_modules/react-hook-form/dist/index.esm.js";import{Combobox as H}from"../../uncontrolled/combobox/combobox.js";import{useComboboxControl as I}from"./hooks/useComboboxControl.js";import{cn as M}from"../../../../utils/cn.js";import"../../../button/Button.js";import"../../../buttonIcon/ButtonIcon.js";import"../../../calendar/Calendar.js";import"../../../calendar/model/utils.js";import"../../../accordion/Accordion.js";import"react";import"react-dom";import"../../../modal/ui/IframeModalContent.js";import"../../../../../../node_modules/react-hot-toast/dist/index.js";import"../../../table/ui/primitives/Primitives.js";import"../../../carousel/ui/CarouselContent.js";import"../../../slot/Slot.js";import"../../uncontrolled/autocomplete/Autocomplete.js";import"../../uncontrolled/checkbox/Checkbox.js";import"../../uncontrolled/dayPicker/DayPicker.js";import"../../uncontrolled/input/Input.js";import"../../uncontrolled/inputOtp/InputOtpBase.js";import"../../uncontrolled/maskInput/MaskInput.js";import"../../uncontrolled/radio/RadioGroup.js";import"../../uncontrolled/radio/ui/RadioItem.js";import"../../uncontrolled/slider/SliderBase.js";import"../../uncontrolled/switch/Switch.js";import"../../uncontrolled/textarea/Textarea.js";import"../../uncontrolled/uploader/UploaderBase.js";import"../editor/ui/Editor.js";import"../input/MaskInputControl.js";import"../../../dropdownList/ui/dropdownItem/DropdownItem.js";import{MessageView as S}from"../../ui/MessageView.js";const
|
|
1
|
+
import{jsxs as y,jsx as e}from"react/jsx-runtime";import{useController as F}from"../../../../../../node_modules/react-hook-form/dist/index.esm.js";import{Combobox as H}from"../../uncontrolled/combobox/combobox.js";import{useComboboxControl as I}from"./hooks/useComboboxControl.js";import{cn as M}from"../../../../utils/cn.js";import"../../../button/Button.js";import"../../../buttonIcon/ButtonIcon.js";import"../../../calendar/Calendar.js";import"../../../calendar/model/utils.js";import"../../../accordion/Accordion.js";import"react";import"react-dom";import"../../../modal/ui/IframeModalContent.js";import"../../../../../../node_modules/react-hot-toast/dist/index.js";import"../../../table/ui/primitives/Primitives.js";import"../../../carousel/ui/CarouselContent.js";import"../../../slot/Slot.js";import"../../uncontrolled/autocomplete/Autocomplete.js";import"../../uncontrolled/checkbox/Checkbox.js";import"../../uncontrolled/dayPicker/DayPicker.js";import"../../uncontrolled/input/Input.js";import"../../uncontrolled/inputOtp/InputOtpBase.js";import"../../uncontrolled/maskInput/MaskInput.js";import"../../uncontrolled/radio/RadioGroup.js";import"../../uncontrolled/radio/ui/RadioItem.js";import"../../uncontrolled/slider/SliderBase.js";import"../../uncontrolled/switch/Switch.js";import"../../uncontrolled/textarea/Textarea.js";import"../../uncontrolled/uploader/UploaderBase.js";import"../../uncontrolled/inputCurrency/InputCurrency.js";import"../editor/ui/Editor.js";import"../input/MaskInputControl.js";import"../../../dropdownList/ui/dropdownItem/DropdownItem.js";import{MessageView as S}from"../../ui/MessageView.js";const fo=({control:p,className:s,name:a,rules:n,shouldUnregister:c,disabled:o,defaultValue:l,options:r,helperText:f,returnValue:x,classes:b,multiple:m,...i})=>{const{field:C,fieldState:d}=F({control:p,name:a,rules:n,shouldUnregister:c,disabled:o,defaultValue:l}),{error:t,invalid:g}=d,{value:h,onChange:u,...v}=C,{root:w,combobox:j,message:N}=b??{},{selected:P,changeHandler:V}=I({value:h,onChange:u,multiple:m,returnValue:x,options:r});return y("div",{className:M("w-full items-start gap-y-2",w,s),"data-test-id":"combobox",children:[e(H,{...i,...v,options:r,value:P,onChange:V,invalid:g,disabled:o,multiple:m,classes:j,attachmentProps:{withValidateIcons:!1,...i.attachmentProps}}),e(S,{text:t?t.message:f,className:N,intent:t?"error":"simple",disabled:o})]})};export{fo as ComboboxControl};
|
|
2
2
|
//# sourceMappingURL=ComboboxControl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComboboxControl.js","sources":["../../../../../../../lib/shared/ui/formElements/controlled/combobox/ComboboxControl.tsx"],"sourcesContent":["import { type Control, type FieldPath, type FieldValues, useController, type UseControllerProps } from 'react-hook-form'\nimport { Combobox, type ComboboxClasses, type ComboboxItemOption, type ComboboxProps } from '../../uncontrolled/combobox'\nimport { useComboboxControl } from './hooks'\nimport { MessageView } from '$/shared/ui/formElements/ui'\nimport { cn } from '$/shared/utils'\n\nexport type ComboboxControlClasses = {\n root?: string\n message?: string\n combobox?: ComboboxClasses\n}\n\nexport type ComboboxControlProps<\n Multi extends boolean = false,\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\n> = UseControllerProps<TFieldValues, TName> &\n ComboboxProps<Multi> & {\n control: Control<TFieldValues>\n helperText?: string\n returnValue?: (option: ComboboxItemOption) => string | null\n classes?: ComboboxControlClasses\n }\n\nexport const ComboboxControl = <Multi extends boolean = false, TFieldValues extends FieldValues = FieldValues>({\n control,\n className,\n name,\n rules,\n shouldUnregister,\n disabled,\n defaultValue,\n options,\n helperText,\n returnValue,\n classes,\n multiple,\n ...props\n}: ComboboxControlProps<Multi, TFieldValues>) => {\n const { field, fieldState } = useController({\n control,\n name,\n rules,\n shouldUnregister,\n disabled,\n defaultValue\n })\n\n const { error, invalid } = fieldState\n const { value, onChange, ...restField } = field\n\n const { root, combobox, message } = classes ?? {}\n\n const { selected, changeHandler } = useComboboxControl({\n value,\n onChange,\n multiple,\n returnValue,\n options\n })\n\n return (\n <div className={cn('w-full items-start gap-y-2', root, className)} data-test-id='combobox'>\n <Combobox\n {...props}\n {...restField}\n options={options}\n value={selected}\n onChange={changeHandler}\n invalid={invalid}\n disabled={disabled}\n multiple={multiple}\n classes={combobox}\n attachmentProps={{\n withValidateIcons: false,\n ...props.attachmentProps\n }}\n />\n <MessageView\n text={error ? error.message : helperText}\n className={message}\n intent={error ? 'error' : 'simple'}\n disabled={disabled}\n />\n </div>\n )\n}\n"],"names":["ComboboxControl","control","className","name","rules","shouldUnregister","disabled","defaultValue","options","helperText","returnValue","classes","multiple","props","field","fieldState","useController","error","invalid","value","onChange","restField","root","combobox","message","selected","changeHandler","useComboboxControl","jsxs","cn","jsx","Combobox","MessageView"],"mappings":"
|
|
1
|
+
{"version":3,"file":"ComboboxControl.js","sources":["../../../../../../../lib/shared/ui/formElements/controlled/combobox/ComboboxControl.tsx"],"sourcesContent":["import { type Control, type FieldPath, type FieldValues, useController, type UseControllerProps } from 'react-hook-form'\nimport { Combobox, type ComboboxClasses, type ComboboxItemOption, type ComboboxProps } from '../../uncontrolled/combobox'\nimport { useComboboxControl } from './hooks'\nimport { MessageView } from '$/shared/ui/formElements/ui'\nimport { cn } from '$/shared/utils'\n\nexport type ComboboxControlClasses = {\n root?: string\n message?: string\n combobox?: ComboboxClasses\n}\n\nexport type ComboboxControlProps<\n Multi extends boolean = false,\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\n> = UseControllerProps<TFieldValues, TName> &\n ComboboxProps<Multi> & {\n control: Control<TFieldValues>\n helperText?: string\n returnValue?: (option: ComboboxItemOption) => string | null\n classes?: ComboboxControlClasses\n }\n\nexport const ComboboxControl = <Multi extends boolean = false, TFieldValues extends FieldValues = FieldValues>({\n control,\n className,\n name,\n rules,\n shouldUnregister,\n disabled,\n defaultValue,\n options,\n helperText,\n returnValue,\n classes,\n multiple,\n ...props\n}: ComboboxControlProps<Multi, TFieldValues>) => {\n const { field, fieldState } = useController({\n control,\n name,\n rules,\n shouldUnregister,\n disabled,\n defaultValue\n })\n\n const { error, invalid } = fieldState\n const { value, onChange, ...restField } = field\n\n const { root, combobox, message } = classes ?? {}\n\n const { selected, changeHandler } = useComboboxControl({\n value,\n onChange,\n multiple,\n returnValue,\n options\n })\n\n return (\n <div className={cn('w-full items-start gap-y-2', root, className)} data-test-id='combobox'>\n <Combobox\n {...props}\n {...restField}\n options={options}\n value={selected}\n onChange={changeHandler}\n invalid={invalid}\n disabled={disabled}\n multiple={multiple}\n classes={combobox}\n attachmentProps={{\n withValidateIcons: false,\n ...props.attachmentProps\n }}\n />\n <MessageView\n text={error ? error.message : helperText}\n className={message}\n intent={error ? 'error' : 'simple'}\n disabled={disabled}\n />\n </div>\n )\n}\n"],"names":["ComboboxControl","control","className","name","rules","shouldUnregister","disabled","defaultValue","options","helperText","returnValue","classes","multiple","props","field","fieldState","useController","error","invalid","value","onChange","restField","root","combobox","message","selected","changeHandler","useComboboxControl","jsxs","cn","jsx","Combobox","MessageView"],"mappings":"2lDAwBO,MAAMA,GAAkB,CAAgF,CAC7G,QAAAC,EACA,UAAAC,EACA,KAAAC,EACA,MAAAC,EACA,iBAAAC,EACA,SAAAC,EACA,aAAAC,EACA,QAAAC,EACA,WAAAC,EACA,YAAAC,EACA,QAAAC,EACA,SAAAC,EACA,GAAGC,CACL,IAAiD,CAC/C,KAAM,CAAE,MAAAC,EAAO,WAAAC,CAAA,EAAeC,EAAc,CAC1C,QAAAf,EACA,KAAAE,EACA,MAAAC,EACA,iBAAAC,EACA,SAAAC,EACA,aAAAC,CAAA,CACD,EAEK,CAAE,MAAAU,EAAO,QAAAC,CAAA,EAAYH,EACrB,CAAE,MAAAI,EAAO,SAAAC,EAAU,GAAGC,GAAcP,EAEpC,CAAE,KAAAQ,EAAM,SAAAC,EAAU,QAAAC,CAAA,EAAYb,GAAW,CAAA,EAEzC,CAAE,SAAAc,EAAU,cAAAC,CAAA,EAAkBC,EAAmB,CACrD,MAAAR,EACA,SAAAC,EACA,SAAAR,EACA,YAAAF,EACA,QAAAF,CAAA,CACD,EAED,OACEoB,EAAC,OAAI,UAAWC,EAAG,6BAA8BP,EAAMpB,CAAS,EAAG,eAAa,WAC9E,SAAA,CAAA4B,EAACC,EAAA,CACE,GAAGlB,EACH,GAAGQ,EACJ,QAAAb,EACA,MAAOiB,EACP,SAAUC,EACV,QAAAR,EACA,SAAAZ,EACA,SAAAM,EACA,QAASW,EACT,gBAAiB,CACf,kBAAmB,GACnB,GAAGV,EAAM,eAAA,CACX,CAAA,EAEFiB,EAACE,EAAA,CACC,KAAMf,EAAQA,EAAM,QAAUR,EAC9B,UAAWe,EACX,OAAQP,EAAQ,QAAU,SAC1B,SAAAX,CAAA,CAAA,CACF,EACF,CAEJ"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as P,jsx as r}from"react/jsx-runtime";import{useState as S}from"react";import{useController as j}from"../../../../../../node_modules/react-hook-form/dist/index.esm.js";import{SingleDayPicker as k}from"./single.js";import{cn as y}from"../../../../utils/cn.js";import"../../../button/Button.js";import"../../../buttonIcon/ButtonIcon.js";import"../../../calendar/Calendar.js";import"../../../calendar/model/utils.js";import"../../../accordion/Accordion.js";import"react-dom";import"../../../modal/ui/IframeModalContent.js";import"../../../../../../node_modules/react-hot-toast/dist/index.js";import"../../../table/ui/primitives/Primitives.js";import"../../../carousel/ui/CarouselContent.js";import"../../../slot/Slot.js";import"../../uncontrolled/autocomplete/Autocomplete.js";import"../../uncontrolled/checkbox/Checkbox.js";import"../../uncontrolled/combobox/combobox.js";import"../../uncontrolled/dayPicker/DayPicker.js";import"../../uncontrolled/input/Input.js";import"../../uncontrolled/inputOtp/InputOtpBase.js";import"../../uncontrolled/maskInput/MaskInput.js";import"../../uncontrolled/radio/RadioGroup.js";import"../../uncontrolled/radio/ui/RadioItem.js";import"../../uncontrolled/slider/SliderBase.js";import"../../uncontrolled/switch/Switch.js";import"../../uncontrolled/textarea/Textarea.js";import"../../uncontrolled/uploader/UploaderBase.js";import"../editor/ui/Editor.js";import"../input/MaskInputControl.js";import"../../../dropdownList/ui/dropdownItem/DropdownItem.js";import{MessageView as N}from"../../ui/MessageView.js";const
|
|
1
|
+
import{jsxs as P,jsx as r}from"react/jsx-runtime";import{useState as S}from"react";import{useController as j}from"../../../../../../node_modules/react-hook-form/dist/index.esm.js";import{SingleDayPicker as k}from"./single.js";import{cn as y}from"../../../../utils/cn.js";import"../../../button/Button.js";import"../../../buttonIcon/ButtonIcon.js";import"../../../calendar/Calendar.js";import"../../../calendar/model/utils.js";import"../../../accordion/Accordion.js";import"react-dom";import"../../../modal/ui/IframeModalContent.js";import"../../../../../../node_modules/react-hot-toast/dist/index.js";import"../../../table/ui/primitives/Primitives.js";import"../../../carousel/ui/CarouselContent.js";import"../../../slot/Slot.js";import"../../uncontrolled/autocomplete/Autocomplete.js";import"../../uncontrolled/checkbox/Checkbox.js";import"../../uncontrolled/combobox/combobox.js";import"../../uncontrolled/dayPicker/DayPicker.js";import"../../uncontrolled/input/Input.js";import"../../uncontrolled/inputOtp/InputOtpBase.js";import"../../uncontrolled/maskInput/MaskInput.js";import"../../uncontrolled/radio/RadioGroup.js";import"../../uncontrolled/radio/ui/RadioItem.js";import"../../uncontrolled/slider/SliderBase.js";import"../../uncontrolled/switch/Switch.js";import"../../uncontrolled/textarea/Textarea.js";import"../../uncontrolled/uploader/UploaderBase.js";import"../../uncontrolled/inputCurrency/InputCurrency.js";import"../editor/ui/Editor.js";import"../input/MaskInputControl.js";import"../../../dropdownList/ui/dropdownItem/DropdownItem.js";import{MessageView as N}from"../../ui/MessageView.js";const at=({control:i,name:m,disabled:o,rules:p,shouldUnregister:e,defaultValue:s,inputProps:n,helperText:a,classes:l,...c})=>{const{field:f,fieldState:u}=j({control:i,name:m,defaultValue:s,disabled:o,rules:p,shouldUnregister:e}),{value:g,onChange:h,...C}=f,{error:t,invalid:d}=u,{message:v,container:x,...w}=l||{},[D,M]=S(new Date);return P("div",{className:y("w-full",x),children:[r(k,{...c,value:g??"",onChange:h,month:D,onMonthChange:M,classes:w,inputProps:{...n,...C,invalid:d}}),r(N,{text:(t==null?void 0:t.message)||a,className:v,intent:t?"error":"simple",disabled:o})]})};export{at as DayPickerControl};
|
|
2
2
|
//# sourceMappingURL=dayPickerControl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dayPickerControl.js","sources":["../../../../../../../lib/shared/ui/formElements/controlled/dayPickerControl/dayPickerControl.tsx"],"sourcesContent":["'use client'\n\nimport { useState } from 'react'\nimport { type Control, type FieldPath, type FieldValues, useController, type UseControllerProps } from 'react-hook-form'\nimport { SingleDayPicker } from './single'\nimport { type Calendar, type MaskInputProps } from '$/shared/ui'\nimport { MessageView } from '$/shared/ui/formElements/ui'\nimport { cn } from '$/shared/utils'\n\ntype CalendarProps = React.ComponentPropsWithoutRef<typeof Calendar>\ntype DayPickerControlClasses = MaskInputProps['classes'] & {\n message?: string\n}\n\nexport type ExternalHandlers = {\n onChange?: (value: string) => void\n onClick?: (event: React.MouseEvent<HTMLInputElement>) => void\n onFocus?: (event: React.FocusEvent<HTMLInputElement>) => void\n onBlur?: (event: React.FocusEvent<HTMLInputElement>) => void\n}\n\nexport type DayPickerControlProps<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\n> = UseControllerProps<TFieldValues, TName> &\n Omit<CalendarProps, 'selected' | 'onSelect' | 'mode'> & {\n /**\n * Контрол объект для управления полем\n */\n control: Control<TFieldValues>\n /**\n * Свойства отображаемого Input поля\n */\n inputProps: Omit<MaskInputProps, 'mask'>\n /**\n * Дополнительный текст\n */\n helperText?: string\n /**\n * Дополнительные стили компонента\n */\n classes?: DayPickerControlClasses\n /**\n * Дополнительные хендлеры\n */\n externalHandlers?: ExternalHandlers\n }\n\nexport const DayPickerControl = <T extends FieldValues = FieldValues>({\n control,\n name,\n disabled,\n rules,\n shouldUnregister,\n defaultValue,\n inputProps,\n helperText,\n classes,\n ...props\n}: DayPickerControlProps<T>) => {\n const { field, fieldState } = useController({\n control,\n name,\n defaultValue,\n disabled,\n rules,\n shouldUnregister\n })\n\n const { value, onChange, ...restField } = field\n const { error, invalid } = fieldState\n const { message, container, ...restClasses } = classes || {}\n\n const [month, setMonth] = useState<Date>(new Date())\n\n return (\n <div className={cn('w-full', container)}>\n <SingleDayPicker\n {...props}\n value={value ?? ''}\n onChange={onChange}\n month={month}\n onMonthChange={setMonth}\n classes={restClasses}\n inputProps={{\n ...inputProps,\n ...restField,\n invalid\n }}\n />\n <MessageView\n text={error?.message || helperText}\n className={message}\n intent={error ? 'error' : 'simple'}\n disabled={disabled}\n />\n </div>\n )\n}\n"],"names":["DayPickerControl","control","name","disabled","rules","shouldUnregister","defaultValue","inputProps","helperText","classes","props","field","fieldState","useController","value","onChange","restField","error","invalid","message","container","restClasses","month","setMonth","useState","cn","jsx","SingleDayPicker","MessageView"],"mappings":"
|
|
1
|
+
{"version":3,"file":"dayPickerControl.js","sources":["../../../../../../../lib/shared/ui/formElements/controlled/dayPickerControl/dayPickerControl.tsx"],"sourcesContent":["'use client'\n\nimport { useState } from 'react'\nimport { type Control, type FieldPath, type FieldValues, useController, type UseControllerProps } from 'react-hook-form'\nimport { SingleDayPicker } from './single'\nimport { type Calendar, type MaskInputProps } from '$/shared/ui'\nimport { MessageView } from '$/shared/ui/formElements/ui'\nimport { cn } from '$/shared/utils'\n\ntype CalendarProps = React.ComponentPropsWithoutRef<typeof Calendar>\ntype DayPickerControlClasses = MaskInputProps['classes'] & {\n message?: string\n}\n\nexport type ExternalHandlers = {\n onChange?: (value: string) => void\n onClick?: (event: React.MouseEvent<HTMLInputElement>) => void\n onFocus?: (event: React.FocusEvent<HTMLInputElement>) => void\n onBlur?: (event: React.FocusEvent<HTMLInputElement>) => void\n}\n\nexport type DayPickerControlProps<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\n> = UseControllerProps<TFieldValues, TName> &\n Omit<CalendarProps, 'selected' | 'onSelect' | 'mode'> & {\n /**\n * Контрол объект для управления полем\n */\n control: Control<TFieldValues>\n /**\n * Свойства отображаемого Input поля\n */\n inputProps: Omit<MaskInputProps, 'mask'>\n /**\n * Дополнительный текст\n */\n helperText?: string\n /**\n * Дополнительные стили компонента\n */\n classes?: DayPickerControlClasses\n /**\n * Дополнительные хендлеры\n */\n externalHandlers?: ExternalHandlers\n }\n\nexport const DayPickerControl = <T extends FieldValues = FieldValues>({\n control,\n name,\n disabled,\n rules,\n shouldUnregister,\n defaultValue,\n inputProps,\n helperText,\n classes,\n ...props\n}: DayPickerControlProps<T>) => {\n const { field, fieldState } = useController({\n control,\n name,\n defaultValue,\n disabled,\n rules,\n shouldUnregister\n })\n\n const { value, onChange, ...restField } = field\n const { error, invalid } = fieldState\n const { message, container, ...restClasses } = classes || {}\n\n const [month, setMonth] = useState<Date>(new Date())\n\n return (\n <div className={cn('w-full', container)}>\n <SingleDayPicker\n {...props}\n value={value ?? ''}\n onChange={onChange}\n month={month}\n onMonthChange={setMonth}\n classes={restClasses}\n inputProps={{\n ...inputProps,\n ...restField,\n invalid\n }}\n />\n <MessageView\n text={error?.message || helperText}\n className={message}\n intent={error ? 'error' : 'simple'}\n disabled={disabled}\n />\n </div>\n )\n}\n"],"names":["DayPickerControl","control","name","disabled","rules","shouldUnregister","defaultValue","inputProps","helperText","classes","props","field","fieldState","useController","value","onChange","restField","error","invalid","message","container","restClasses","month","setMonth","useState","cn","jsx","SingleDayPicker","MessageView"],"mappings":"skDAgDO,MAAMA,GAAmB,CAAsC,CACpE,QAAAC,EACA,KAAAC,EACA,SAAAC,EACA,MAAAC,EACA,iBAAAC,EACA,aAAAC,EACA,WAAAC,EACA,WAAAC,EACA,QAAAC,EACA,GAAGC,CACL,IAAgC,CAC9B,KAAM,CAAE,MAAAC,EAAO,WAAAC,CAAA,EAAeC,EAAc,CAC1C,QAAAZ,EACA,KAAAC,EACA,aAAAI,EACA,SAAAH,EACA,MAAAC,EACA,iBAAAC,CAAA,CACD,EAEK,CAAE,MAAAS,EAAO,SAAAC,EAAU,GAAGC,GAAcL,EACpC,CAAE,MAAAM,EAAO,QAAAC,CAAA,EAAYN,EACrB,CAAE,QAAAO,EAAS,UAAAC,EAAW,GAAGC,CAAA,EAAgBZ,GAAW,CAAA,EAEpD,CAACa,EAAOC,CAAQ,EAAIC,EAAe,IAAI,IAAM,EAEnD,SACG,MAAA,CAAI,UAAWC,EAAG,SAAUL,CAAS,EACpC,SAAA,CAAAM,EAACC,EAAA,CACE,GAAGjB,EACJ,MAAOI,GAAS,GAChB,SAAAC,EACA,MAAAO,EACA,cAAeC,EACf,QAASF,EACT,WAAY,CACV,GAAGd,EACH,GAAGS,EACH,QAAAE,CAAA,CACF,CAAA,EAEFQ,EAACE,EAAA,CACC,MAAMX,GAAA,YAAAA,EAAO,UAAWT,EACxB,UAAWW,EACX,OAAQF,EAAQ,QAAU,SAC1B,SAAAd,CAAA,CAAA,CACF,EACF,CAEJ"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import"react/jsx-runtime";import"../../../../button/Button.js";import"../../../../buttonIcon/ButtonIcon.js";import"../../../../calendar/Calendar.js";import{formatDateToLocaleString as m}from"../../../../calendar/model/utils.js";import"../../../../accordion/Accordion.js";import"react";import"react-dom";import"../../../../modal/ui/IframeModalContent.js";import"../../../../../../../node_modules/react-hot-toast/dist/index.js";import"../../../../table/ui/primitives/Primitives.js";import"../../../../carousel/ui/CarouselContent.js";import"../../../../slot/Slot.js";import"../../../uncontrolled/autocomplete/Autocomplete.js";import"../../../uncontrolled/checkbox/Checkbox.js";import"../../../uncontrolled/combobox/combobox.js";import"../../../uncontrolled/dayPicker/DayPicker.js";import"../../../uncontrolled/input/Input.js";import"../../../uncontrolled/inputOtp/InputOtpBase.js";import"../../../uncontrolled/maskInput/MaskInput.js";import"../../../uncontrolled/radio/RadioGroup.js";import"../../../uncontrolled/radio/ui/RadioItem.js";import"../../../uncontrolled/slider/SliderBase.js";import"../../../uncontrolled/switch/Switch.js";import"../../../uncontrolled/textarea/Textarea.js";import"../../../uncontrolled/uploader/UploaderBase.js";import"../../editor/ui/Editor.js";import"../../input/MaskInputControl.js";import"../../../../dropdownList/ui/dropdownItem/DropdownItem.js";function
|
|
1
|
+
import"react/jsx-runtime";import"../../../../button/Button.js";import"../../../../buttonIcon/ButtonIcon.js";import"../../../../calendar/Calendar.js";import{formatDateToLocaleString as m}from"../../../../calendar/model/utils.js";import"../../../../accordion/Accordion.js";import"react";import"react-dom";import"../../../../modal/ui/IframeModalContent.js";import"../../../../../../../node_modules/react-hot-toast/dist/index.js";import"../../../../table/ui/primitives/Primitives.js";import"../../../../carousel/ui/CarouselContent.js";import"../../../../slot/Slot.js";import"../../../uncontrolled/autocomplete/Autocomplete.js";import"../../../uncontrolled/checkbox/Checkbox.js";import"../../../uncontrolled/combobox/combobox.js";import"../../../uncontrolled/dayPicker/DayPicker.js";import"../../../uncontrolled/input/Input.js";import"../../../uncontrolled/inputOtp/InputOtpBase.js";import"../../../uncontrolled/maskInput/MaskInput.js";import"../../../uncontrolled/radio/RadioGroup.js";import"../../../uncontrolled/radio/ui/RadioItem.js";import"../../../uncontrolled/slider/SliderBase.js";import"../../../uncontrolled/switch/Switch.js";import"../../../uncontrolled/textarea/Textarea.js";import"../../../uncontrolled/uploader/UploaderBase.js";import"../../../uncontrolled/inputCurrency/InputCurrency.js";import"../../editor/ui/Editor.js";import"../../input/MaskInputControl.js";import"../../../../dropdownList/ui/dropdownItem/DropdownItem.js";function G(o,t){switch(o){case"range":const[r,i]=Object.values(t).map(p=>new Date(p));return[r?m(r):void 0,i?m(i):void 0].join("-");case"single":default:const e=t?new Date(t):new Date;return t?m(e):""}}function H(o,t){switch(o){case"range":if(t){const r=Object.entries(t).map(([i,e])=>[i,new Date(e)]);return Object.fromEntries(r)}return{};case"single":default:return t?new Date(t):new Date}}export{H as getCurrentDate,G as getInitialValue};
|
|
2
2
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../../../../../../../lib/shared/ui/formElements/controlled/dayPickerControl/model/utils.ts"],"sourcesContent":["import type { DateRange } from 'react-day-picker'\nimport { formatDateToLocaleString } from '$/shared/ui'\n\ntype IsoDateRange = {\n from?: string\n to?: string\n}\n\n/**\n * Функция для получения инит состояния поля ввода\n * @param mode режим календаря (single | range)\n * @param value текущее состояние поля\n */\nexport function getInitialValue(mode: 'single', value?: string): string\nexport function getInitialValue(mode: 'range', value?: IsoDateRange): string\nexport function getInitialValue(mode: 'multiple', value?: IsoDateRange): string\nexport function getInitialValue(mode: 'single' | 'multiple' | 'range', value?: IsoDateRange | string) {\n switch (mode) {\n case 'range':\n const [from, to] = Object.values(value as IsoDateRange).map((date) => new Date(date))\n\n return [from ? formatDateToLocaleString(from) : undefined, to ? formatDateToLocaleString(to) : undefined].join('-')\n case 'single':\n default:\n const date = value ? new Date(value as string) : new Date()\n\n return value ? formatDateToLocaleString(date) : ''\n }\n}\n\n/**\n * Функция для получения объекта даты по текущему состоянию\n * @param mode режим календаря (single | range)\n * @param value текущее состояние поля\n *\n * @returns Date если mode 'single'\n * @returns DateRange если mode 'range'\n */\nexport function getCurrentDate(mode: 'single', value?: string): Date\nexport function getCurrentDate(mode: 'range', value?: IsoDateRange): DateRange\nexport function getCurrentDate(mode: 'multiple', value?: IsoDateRange): Date\nexport function getCurrentDate(mode: 'single' | 'multiple' | 'range', value?: string | IsoDateRange): Date | DateRange {\n switch (mode) {\n case 'range':\n if (value) {\n const entries = Object.entries(value as IsoDateRange).map(([key, value]) => [key, new Date(value)])\n\n return Object.fromEntries(entries)\n }\n\n return {} as DateRange\n case 'single':\n default:\n return value ? new Date(value as string) : new Date()\n }\n}\n"],"names":["getInitialValue","mode","value","from","to","date","formatDateToLocaleString","getCurrentDate","entries","key"],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../../../../../../lib/shared/ui/formElements/controlled/dayPickerControl/model/utils.ts"],"sourcesContent":["import type { DateRange } from 'react-day-picker'\nimport { formatDateToLocaleString } from '$/shared/ui'\n\ntype IsoDateRange = {\n from?: string\n to?: string\n}\n\n/**\n * Функция для получения инит состояния поля ввода\n * @param mode режим календаря (single | range)\n * @param value текущее состояние поля\n */\nexport function getInitialValue(mode: 'single', value?: string): string\nexport function getInitialValue(mode: 'range', value?: IsoDateRange): string\nexport function getInitialValue(mode: 'multiple', value?: IsoDateRange): string\nexport function getInitialValue(mode: 'single' | 'multiple' | 'range', value?: IsoDateRange | string) {\n switch (mode) {\n case 'range':\n const [from, to] = Object.values(value as IsoDateRange).map((date) => new Date(date))\n\n return [from ? formatDateToLocaleString(from) : undefined, to ? formatDateToLocaleString(to) : undefined].join('-')\n case 'single':\n default:\n const date = value ? new Date(value as string) : new Date()\n\n return value ? formatDateToLocaleString(date) : ''\n }\n}\n\n/**\n * Функция для получения объекта даты по текущему состоянию\n * @param mode режим календаря (single | range)\n * @param value текущее состояние поля\n *\n * @returns Date если mode 'single'\n * @returns DateRange если mode 'range'\n */\nexport function getCurrentDate(mode: 'single', value?: string): Date\nexport function getCurrentDate(mode: 'range', value?: IsoDateRange): DateRange\nexport function getCurrentDate(mode: 'multiple', value?: IsoDateRange): Date\nexport function getCurrentDate(mode: 'single' | 'multiple' | 'range', value?: string | IsoDateRange): Date | DateRange {\n switch (mode) {\n case 'range':\n if (value) {\n const entries = Object.entries(value as IsoDateRange).map(([key, value]) => [key, new Date(value)])\n\n return Object.fromEntries(entries)\n }\n\n return {} as DateRange\n case 'single':\n default:\n return value ? new Date(value as string) : new Date()\n }\n}\n"],"names":["getInitialValue","mode","value","from","to","date","formatDateToLocaleString","getCurrentDate","entries","key"],"mappings":"65CAgBO,SAASA,EAAgBC,EAAuCC,EAA+B,CACpG,OAAQD,EAAA,CACN,IAAK,QACH,KAAM,CAACE,EAAMC,CAAE,EAAI,OAAO,OAAOF,CAAqB,EAAE,IAAKG,GAAS,IAAI,KAAKA,CAAI,CAAC,EAEpF,MAAO,CAACF,EAAOG,EAAyBH,CAAI,EAAI,OAAWC,EAAKE,EAAyBF,CAAE,EAAI,MAAS,EAAE,KAAK,GAAG,EACpH,IAAK,SACL,QACE,MAAMC,EAAOH,EAAQ,IAAI,KAAKA,CAAe,MAAQ,KAErD,OAAOA,EAAQI,EAAyBD,CAAI,EAAI,EAAA,CAEtD,CAaO,SAASE,EAAeN,EAAuCC,EAAiD,CACrH,OAAQD,EAAA,CACN,IAAK,QACH,GAAIC,EAAO,CACT,MAAMM,EAAU,OAAO,QAAQN,CAAqB,EAAE,IAAI,CAAC,CAACO,EAAKP,CAAK,IAAM,CAACO,EAAK,IAAI,KAAKP,CAAK,CAAC,CAAC,EAElG,OAAO,OAAO,YAAYM,CAAO,CACnC,CAEA,MAAO,CAAA,EACT,IAAK,SACL,QACE,OAAON,EAAQ,IAAI,KAAKA,CAAe,MAAQ,IAAK,CAE1D"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as _,jsx as l}from"react/jsx-runtime";import{useRef as j,useState as c}from"react";import{RANGE_MASK as x,SINGLE_VALIDATION_REGEX as T}from"./model/constants.js";import{getCurrentDate as y,getInitialValue as G}from"./model/utils.js";import{useClickOutside as L}from"../../../../hooks/useClickOutside.js";import{cn as d}from"../../../../utils/cn.js";import"../../../button/Button.js";import"../../../buttonIcon/ButtonIcon.js";import{Calendar as P}from"../../../calendar/Calendar.js";import{DATE_VISIBLE_PATTERN as a}from"../../../calendar/model/utils.js";import"../../../accordion/Accordion.js";import"react-dom";import"../../../modal/ui/IframeModalContent.js";import"../../../../../../node_modules/react-hot-toast/dist/index.js";import{Icon as $}from"../../../icon/Icon.js";import"../../../table/ui/primitives/Primitives.js";import"../../../carousel/ui/CarouselContent.js";import"../../../slot/Slot.js";import"../../uncontrolled/autocomplete/Autocomplete.js";import"../../uncontrolled/checkbox/Checkbox.js";import"../../uncontrolled/combobox/combobox.js";import"../../uncontrolled/dayPicker/DayPicker.js";import"../../uncontrolled/input/Input.js";import"../../uncontrolled/inputOtp/InputOtpBase.js";import{MaskInput as q}from"../../uncontrolled/maskInput/MaskInput.js";import"../../uncontrolled/radio/RadioGroup.js";import"../../uncontrolled/radio/ui/RadioItem.js";import"../../uncontrolled/slider/SliderBase.js";import"../../uncontrolled/switch/Switch.js";import"../../uncontrolled/textarea/Textarea.js";import"../../uncontrolled/uploader/UploaderBase.js";import"../editor/ui/Editor.js";import"../input/MaskInputControl.js";import"../../../dropdownList/ui/dropdownItem/DropdownItem.js";import{parse as h}from"../../../../../../node_modules/date-fns/parse.js";import{isValid as w}from"../../../../../../node_modules/date-fns/isValid.js";import{formatDate as I}from"../../../../../../node_modules/date-fns/format.js";const
|
|
1
|
+
import{jsxs as _,jsx as l}from"react/jsx-runtime";import{useRef as j,useState as c}from"react";import{RANGE_MASK as x,SINGLE_VALIDATION_REGEX as T}from"./model/constants.js";import{getCurrentDate as y,getInitialValue as G}from"./model/utils.js";import{useClickOutside as L}from"../../../../hooks/useClickOutside.js";import{cn as d}from"../../../../utils/cn.js";import"../../../button/Button.js";import"../../../buttonIcon/ButtonIcon.js";import{Calendar as P}from"../../../calendar/Calendar.js";import{DATE_VISIBLE_PATTERN as a}from"../../../calendar/model/utils.js";import"../../../accordion/Accordion.js";import"react-dom";import"../../../modal/ui/IframeModalContent.js";import"../../../../../../node_modules/react-hot-toast/dist/index.js";import{Icon as $}from"../../../icon/Icon.js";import"../../../table/ui/primitives/Primitives.js";import"../../../carousel/ui/CarouselContent.js";import"../../../slot/Slot.js";import"../../uncontrolled/autocomplete/Autocomplete.js";import"../../uncontrolled/checkbox/Checkbox.js";import"../../uncontrolled/combobox/combobox.js";import"../../uncontrolled/dayPicker/DayPicker.js";import"../../uncontrolled/input/Input.js";import"../../uncontrolled/inputOtp/InputOtpBase.js";import{MaskInput as q}from"../../uncontrolled/maskInput/MaskInput.js";import"../../uncontrolled/radio/RadioGroup.js";import"../../uncontrolled/radio/ui/RadioItem.js";import"../../uncontrolled/slider/SliderBase.js";import"../../uncontrolled/switch/Switch.js";import"../../uncontrolled/textarea/Textarea.js";import"../../uncontrolled/uploader/UploaderBase.js";import"../../uncontrolled/inputCurrency/InputCurrency.js";import"../editor/ui/Editor.js";import"../input/MaskInputControl.js";import"../../../dropdownList/ui/dropdownItem/DropdownItem.js";import{parse as h}from"../../../../../../node_modules/date-fns/parse.js";import{isValid as w}from"../../../../../../node_modules/date-fns/isValid.js";import{formatDate as I}from"../../../../../../node_modules/date-fns/format.js";const Nt=({inputProps:C,classes:n,value:f,onChange:p,...R})=>{const u=j(null),{calendar:E,...O}=n||{},[S,m]=c(!1),V=()=>{m(t=>!t)},[D,s]=c(new Date),b=y("range",f),[N,g]=c(G("range",f));L(u,()=>m(!1));const A=t=>{const{value:r}=t.target;if(g(r),!r.length)return p({from:"",to:""});const e=r.split("-");if(e.some(o=>!T.test(o)))return;const i=[["from",h(e[0],a,new Date)],["to",h(e[1],a,new Date)]];if(i.every(([,o])=>w(o))){const o=Object.fromEntries(i.map(([k,v])=>[k,v.toISOString()]));p(o),s(i[Math.round(Math.random())][1])}},M=t=>{s(t.from||t.to||new Date);const r=Object.entries(t).reduce((e,[i,o])=>({...e,[i]:o?o.toISOString():""}),{});p(r),g(`${I(r.from||"",a)}-${I(r.to||"",a)}`),t.from&&t.to&&m(!1)};return _("div",{ref:u,className:d("relative w-full",n==null?void 0:n.container),children:[l(q,{mask:x,...C,classes:O,value:N,onChange:A,onFocus:()=>m(!0),attachmentProps:{icon:l($,{name:"general/calendar",className:"text-icon-blue-grey-600"}),onClickIcon:V}}),S&&l(P,{...R,required:!0,mode:"range",month:D,onMonthChange:s,selected:b,onSelect:M,className:d("absolute right-0 top-full",E)})]})};export{Nt as RangeDayPicker};
|
|
2
2
|
//# sourceMappingURL=range.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"range.js","sources":["../../../../../../../lib/shared/ui/formElements/controlled/dayPickerControl/range.tsx"],"sourcesContent":["'use client'\n\nimport { useRef, useState } from 'react'\nimport { type DateRange } from 'react-day-picker'\nimport { format, isValid, parse } from 'date-fns'\nimport { getCurrentDate, getInitialValue, RANGE_MASK, SINGLE_VALIDATION_REGEX } from './model'\nimport { useClickOutside } from '$/shared/hooks'\nimport { Calendar, DATE_VISIBLE_PATTERN, Icon, MaskInput, type MaskInputProps } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\ntype CalendarProps = React.ComponentPropsWithoutRef<typeof Calendar>\n\ntype RangeDayPickerClasses = MaskInputProps['classes'] & {\n calendar?: string\n}\n\ntype IsoDateRange = {\n from?: string\n to?: string\n}\n\ntype RangeDayPickerProps = Omit<CalendarProps, 'mode'> & {\n /**\n * Свойства Input компонента\n */\n inputProps: Omit<MaskInputProps, 'mask'>\n /**\n * Стили внутренних компонентов\n */\n classes?: RangeDayPickerClasses\n /**\n * Управляемое значение\n */\n value: IsoDateRange\n /**\n * Функция для управления значением\n */\n onChange: (value: IsoDateRange) => void\n}\n\nexport const RangeDayPicker = ({ inputProps, classes, value, onChange, ...props }: RangeDayPickerProps) => {\n const containerRef = useRef<HTMLDivElement>(null)\n const { calendar, ...restClasses } = classes || {}\n\n const [calendarOpen, setCalendarOpen] = useState<boolean>(false)\n const onCalendarOpenChange = () => {\n setCalendarOpen((prev) => !prev)\n }\n\n const [month, setMonth] = useState<Date>(new Date())\n const date = getCurrentDate('range', value)\n\n const [visibleValue, setVisibleValue] = useState<string>(getInitialValue('range', value))\n\n useClickOutside(containerRef, () => setCalendarOpen(false))\n\n const onVisibleValueChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const { value } = event.target\n\n setVisibleValue(value)\n\n if (!value.length) {\n return onChange({\n from: '',\n to: ''\n })\n }\n\n const isoDateRange = value.split('-')\n\n if (isoDateRange.some((date) => !SINGLE_VALIDATION_REGEX.test(date))) {\n return\n }\n\n const dateRangeEntries = [\n ['from', parse(isoDateRange[0], DATE_VISIBLE_PATTERN, new Date())],\n ['to', parse(isoDateRange[1], DATE_VISIBLE_PATTERN, new Date())]\n ] as [string, Date][]\n\n if (dateRangeEntries.every(([, date]) => isValid(date))) {\n const dateRange = Object.fromEntries(dateRangeEntries.map(([key, value]) => [key, value.toISOString()]))\n\n onChange(dateRange)\n setMonth(dateRangeEntries[Math.round(Math.random())][1])\n }\n }\n\n const onDateChange = (newDate: DateRange) => {\n setMonth(newDate.from || newDate.to || new Date())\n\n const isoDateRange = Object.entries(newDate).reduce(\n (acc, [key, value]) => ({\n ...acc,\n [key]: value ? value.toISOString() : ''\n }),\n {} as IsoDateRange\n )\n\n onChange(isoDateRange)\n setVisibleValue(\n `${format(isoDateRange.from || '', DATE_VISIBLE_PATTERN)}-${format(isoDateRange.to || '', DATE_VISIBLE_PATTERN)}`\n )\n\n if (newDate.from && newDate.to) {\n setCalendarOpen(false)\n }\n }\n\n return (\n <div ref={containerRef} className={cn('relative w-full', classes?.container)}>\n <MaskInput\n mask={RANGE_MASK}\n {...inputProps}\n classes={restClasses}\n value={visibleValue}\n onChange={onVisibleValueChange}\n onFocus={() => setCalendarOpen(true)}\n attachmentProps={{\n icon: <Icon name='general/calendar' className='text-icon-blue-grey-600' />,\n onClickIcon: onCalendarOpenChange\n }}\n />\n {calendarOpen && (\n <Calendar\n {...props}\n required\n mode='range'\n month={month}\n onMonthChange={setMonth}\n selected={date}\n onSelect={onDateChange}\n className={cn('absolute right-0 top-full', calendar)}\n />\n )}\n </div>\n )\n}\n"],"names":["RangeDayPicker","inputProps","classes","value","onChange","props","containerRef","useRef","calendar","restClasses","calendarOpen","setCalendarOpen","useState","onCalendarOpenChange","prev","month","setMonth","date","getCurrentDate","visibleValue","setVisibleValue","getInitialValue","useClickOutside","onVisibleValueChange","event","isoDateRange","SINGLE_VALIDATION_REGEX","dateRangeEntries","parse","DATE_VISIBLE_PATTERN","isValid","dateRange","key","onDateChange","newDate","acc","format","jsxs","cn","jsx","MaskInput","RANGE_MASK","Icon","Calendar"],"mappings":"
|
|
1
|
+
{"version":3,"file":"range.js","sources":["../../../../../../../lib/shared/ui/formElements/controlled/dayPickerControl/range.tsx"],"sourcesContent":["'use client'\n\nimport { useRef, useState } from 'react'\nimport { type DateRange } from 'react-day-picker'\nimport { format, isValid, parse } from 'date-fns'\nimport { getCurrentDate, getInitialValue, RANGE_MASK, SINGLE_VALIDATION_REGEX } from './model'\nimport { useClickOutside } from '$/shared/hooks'\nimport { Calendar, DATE_VISIBLE_PATTERN, Icon, MaskInput, type MaskInputProps } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\ntype CalendarProps = React.ComponentPropsWithoutRef<typeof Calendar>\n\ntype RangeDayPickerClasses = MaskInputProps['classes'] & {\n calendar?: string\n}\n\ntype IsoDateRange = {\n from?: string\n to?: string\n}\n\ntype RangeDayPickerProps = Omit<CalendarProps, 'mode'> & {\n /**\n * Свойства Input компонента\n */\n inputProps: Omit<MaskInputProps, 'mask'>\n /**\n * Стили внутренних компонентов\n */\n classes?: RangeDayPickerClasses\n /**\n * Управляемое значение\n */\n value: IsoDateRange\n /**\n * Функция для управления значением\n */\n onChange: (value: IsoDateRange) => void\n}\n\nexport const RangeDayPicker = ({ inputProps, classes, value, onChange, ...props }: RangeDayPickerProps) => {\n const containerRef = useRef<HTMLDivElement>(null)\n const { calendar, ...restClasses } = classes || {}\n\n const [calendarOpen, setCalendarOpen] = useState<boolean>(false)\n const onCalendarOpenChange = () => {\n setCalendarOpen((prev) => !prev)\n }\n\n const [month, setMonth] = useState<Date>(new Date())\n const date = getCurrentDate('range', value)\n\n const [visibleValue, setVisibleValue] = useState<string>(getInitialValue('range', value))\n\n useClickOutside(containerRef, () => setCalendarOpen(false))\n\n const onVisibleValueChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const { value } = event.target\n\n setVisibleValue(value)\n\n if (!value.length) {\n return onChange({\n from: '',\n to: ''\n })\n }\n\n const isoDateRange = value.split('-')\n\n if (isoDateRange.some((date) => !SINGLE_VALIDATION_REGEX.test(date))) {\n return\n }\n\n const dateRangeEntries = [\n ['from', parse(isoDateRange[0], DATE_VISIBLE_PATTERN, new Date())],\n ['to', parse(isoDateRange[1], DATE_VISIBLE_PATTERN, new Date())]\n ] as [string, Date][]\n\n if (dateRangeEntries.every(([, date]) => isValid(date))) {\n const dateRange = Object.fromEntries(dateRangeEntries.map(([key, value]) => [key, value.toISOString()]))\n\n onChange(dateRange)\n setMonth(dateRangeEntries[Math.round(Math.random())][1])\n }\n }\n\n const onDateChange = (newDate: DateRange) => {\n setMonth(newDate.from || newDate.to || new Date())\n\n const isoDateRange = Object.entries(newDate).reduce(\n (acc, [key, value]) => ({\n ...acc,\n [key]: value ? value.toISOString() : ''\n }),\n {} as IsoDateRange\n )\n\n onChange(isoDateRange)\n setVisibleValue(\n `${format(isoDateRange.from || '', DATE_VISIBLE_PATTERN)}-${format(isoDateRange.to || '', DATE_VISIBLE_PATTERN)}`\n )\n\n if (newDate.from && newDate.to) {\n setCalendarOpen(false)\n }\n }\n\n return (\n <div ref={containerRef} className={cn('relative w-full', classes?.container)}>\n <MaskInput\n mask={RANGE_MASK}\n {...inputProps}\n classes={restClasses}\n value={visibleValue}\n onChange={onVisibleValueChange}\n onFocus={() => setCalendarOpen(true)}\n attachmentProps={{\n icon: <Icon name='general/calendar' className='text-icon-blue-grey-600' />,\n onClickIcon: onCalendarOpenChange\n }}\n />\n {calendarOpen && (\n <Calendar\n {...props}\n required\n mode='range'\n month={month}\n onMonthChange={setMonth}\n selected={date}\n onSelect={onDateChange}\n className={cn('absolute right-0 top-full', calendar)}\n />\n )}\n </div>\n )\n}\n"],"names":["RangeDayPicker","inputProps","classes","value","onChange","props","containerRef","useRef","calendar","restClasses","calendarOpen","setCalendarOpen","useState","onCalendarOpenChange","prev","month","setMonth","date","getCurrentDate","visibleValue","setVisibleValue","getInitialValue","useClickOutside","onVisibleValueChange","event","isoDateRange","SINGLE_VALIDATION_REGEX","dateRangeEntries","parse","DATE_VISIBLE_PATTERN","isValid","dateRange","key","onDateChange","newDate","acc","format","jsxs","cn","jsx","MaskInput","RANGE_MASK","Icon","Calendar"],"mappings":"k8DAwCO,MAAMA,GAAiB,CAAC,CAAE,WAAAC,EAAY,QAAAC,EAAS,MAAAC,EAAO,SAAAC,EAAU,GAAGC,KAAiC,CACzG,MAAMC,EAAeC,EAAuB,IAAI,EAC1C,CAAE,SAAAC,EAAU,GAAGC,CAAA,EAAgBP,GAAW,CAAA,EAE1C,CAACQ,EAAcC,CAAe,EAAIC,EAAkB,EAAK,EACzDC,EAAuB,IAAM,CACjCF,EAAiBG,GAAS,CAACA,CAAI,CACjC,EAEM,CAACC,EAAOC,CAAQ,EAAIJ,EAAe,IAAI,IAAM,EAC7CK,EAAOC,EAAe,QAASf,CAAK,EAEpC,CAACgB,EAAcC,CAAe,EAAIR,EAAiBS,EAAgB,QAASlB,CAAK,CAAC,EAExFmB,EAAgBhB,EAAc,IAAMK,EAAgB,EAAK,CAAC,EAE1D,MAAMY,EAAwBC,GAA+C,CAC3E,KAAM,CAAE,MAAArB,CAAAA,EAAUqB,EAAM,OAIxB,GAFAJ,EAAgBjB,CAAK,EAEjB,CAACA,EAAM,OACT,OAAOC,EAAS,CACd,KAAM,GACN,GAAI,EAAA,CACL,EAGH,MAAMqB,EAAetB,EAAM,MAAM,GAAG,EAEpC,GAAIsB,EAAa,KAAMR,GAAS,CAACS,EAAwB,KAAKT,CAAI,CAAC,EACjE,OAGF,MAAMU,EAAmB,CACvB,CAAC,OAAQC,EAAMH,EAAa,CAAC,EAAGI,EAAsB,IAAI,IAAM,CAAC,EACjE,CAAC,KAAMD,EAAMH,EAAa,CAAC,EAAGI,EAAsB,IAAI,IAAM,CAAC,CAAA,EAGjE,GAAIF,EAAiB,MAAM,CAAC,CAAA,CAAGV,CAAI,IAAMa,EAAQb,CAAI,CAAC,EAAG,CACvD,MAAMc,EAAY,OAAO,YAAYJ,EAAiB,IAAI,CAAC,CAACK,EAAK7B,CAAK,IAAM,CAAC6B,EAAK7B,EAAM,YAAA,CAAa,CAAC,CAAC,EAEvGC,EAAS2B,CAAS,EAClBf,EAASW,EAAiB,KAAK,MAAM,KAAK,QAAQ,CAAC,EAAE,CAAC,CAAC,CACzD,CACF,EAEMM,EAAgBC,GAAuB,CAC3ClB,EAASkB,EAAQ,MAAQA,EAAQ,IAAM,IAAI,IAAM,EAEjD,MAAMT,EAAe,OAAO,QAAQS,CAAO,EAAE,OAC3C,CAACC,EAAK,CAACH,EAAK7B,CAAK,KAAO,CACtB,GAAGgC,EACH,CAACH,CAAG,EAAG7B,EAAQA,EAAM,cAAgB,EAAA,GAEvC,CAAA,CAAC,EAGHC,EAASqB,CAAY,EACrBL,EACE,GAAGgB,EAAOX,EAAa,MAAQ,GAAII,CAAoB,CAAC,IAAIO,EAAOX,EAAa,IAAM,GAAII,CAAoB,CAAC,EAAA,EAG7GK,EAAQ,MAAQA,EAAQ,IAC1BvB,EAAgB,EAAK,CAEzB,EAEA,OACE0B,EAAC,OAAI,IAAK/B,EAAc,UAAWgC,EAAG,kBAAmBpC,GAAA,YAAAA,EAAS,SAAS,EACzE,SAAA,CAAAqC,EAACC,EAAA,CACC,KAAMC,EACL,GAAGxC,EACJ,QAASQ,EACT,MAAOU,EACP,SAAUI,EACV,QAAS,IAAMZ,EAAgB,EAAI,EACnC,gBAAiB,CACf,KAAM4B,EAACG,EAAA,CAAK,KAAK,mBAAmB,UAAU,0BAA0B,EACxE,YAAa7B,CAAA,CACf,CAAA,EAEDH,GACC6B,EAACI,EAAA,CACE,GAAGtC,EACJ,SAAQ,GACR,KAAK,QACL,MAAAU,EACA,cAAeC,EACf,SAAUC,EACV,SAAUgB,EACV,UAAWK,EAAG,4BAA6B9B,CAAQ,CAAA,CAAA,CACrD,EAEJ,CAEJ"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as G,jsx as f}from"react/jsx-runtime";import{useRef as L,useState as E,useEffect as P}from"react";import{createPortal as j}from"react-dom";import{useFloating as K}from"../../../../../../node_modules/@floating-ui/react/dist/floating-ui.react.js";import{SINGLE_MASK as q,SINGLE_VALIDATION_REGEX as B}from"./model/constants.js";import{getCurrentDate as H,getInitialValue as I}from"./model/utils.js";import{useClickOutside as U}from"../../../../hooks/useClickOutside.js";import{cn as y}from"../../../../utils/cn.js";import{mergeRefs as X}from"../../../../utils/mergeRefs.js";import{TypeGuards as b}from"../../../../utils/typeGuards.js";import"../../../button/Button.js";import"../../../buttonIcon/ButtonIcon.js";import{Calendar as v}from"../../../calendar/Calendar.js";import{DATE_VISIBLE_PATTERN as D}from"../../../calendar/model/utils.js";import"../../../accordion/Accordion.js";import"../../../modal/ui/IframeModalContent.js";import"../../../../../../node_modules/react-hot-toast/dist/index.js";import{Icon as z}from"../../../icon/Icon.js";import"../../../table/ui/primitives/Primitives.js";import"../../../carousel/ui/CarouselContent.js";import"../../../slot/Slot.js";import"../../uncontrolled/autocomplete/Autocomplete.js";import"../../uncontrolled/checkbox/Checkbox.js";import"../../uncontrolled/combobox/combobox.js";import"../../uncontrolled/dayPicker/DayPicker.js";import"../../uncontrolled/input/Input.js";import"../../uncontrolled/inputOtp/InputOtpBase.js";import{MaskInput as J}from"../../uncontrolled/maskInput/MaskInput.js";import"../../uncontrolled/radio/RadioGroup.js";import"../../uncontrolled/radio/ui/RadioItem.js";import"../../uncontrolled/slider/SliderBase.js";import"../../uncontrolled/switch/Switch.js";import"../../uncontrolled/textarea/Textarea.js";import"../../uncontrolled/uploader/UploaderBase.js";import"../editor/ui/Editor.js";import"../input/MaskInputControl.js";import"../../../dropdownList/ui/dropdownItem/DropdownItem.js";import{autoUpdate as Q}from"../../../../../../node_modules/@floating-ui/dom/dist/floating-ui.dom.js";import{flip as W,offset as Y}from"../../../../../../node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.js";import{parse as Z}from"../../../../../../node_modules/date-fns/parse.js";import{isValid as $}from"../../../../../../node_modules/date-fns/isValid.js";import{formatDate as h}from"../../../../../../node_modules/date-fns/format.js";const
|
|
1
|
+
import{jsxs as G,jsx as f}from"react/jsx-runtime";import{useRef as L,useState as E,useEffect as P}from"react";import{createPortal as j}from"react-dom";import{useFloating as K}from"../../../../../../node_modules/@floating-ui/react/dist/floating-ui.react.js";import{SINGLE_MASK as q,SINGLE_VALIDATION_REGEX as B}from"./model/constants.js";import{getCurrentDate as H,getInitialValue as I}from"./model/utils.js";import{useClickOutside as U}from"../../../../hooks/useClickOutside.js";import{cn as y}from"../../../../utils/cn.js";import{mergeRefs as X}from"../../../../utils/mergeRefs.js";import{TypeGuards as b}from"../../../../utils/typeGuards.js";import"../../../button/Button.js";import"../../../buttonIcon/ButtonIcon.js";import{Calendar as v}from"../../../calendar/Calendar.js";import{DATE_VISIBLE_PATTERN as D}from"../../../calendar/model/utils.js";import"../../../accordion/Accordion.js";import"../../../modal/ui/IframeModalContent.js";import"../../../../../../node_modules/react-hot-toast/dist/index.js";import{Icon as z}from"../../../icon/Icon.js";import"../../../table/ui/primitives/Primitives.js";import"../../../carousel/ui/CarouselContent.js";import"../../../slot/Slot.js";import"../../uncontrolled/autocomplete/Autocomplete.js";import"../../uncontrolled/checkbox/Checkbox.js";import"../../uncontrolled/combobox/combobox.js";import"../../uncontrolled/dayPicker/DayPicker.js";import"../../uncontrolled/input/Input.js";import"../../uncontrolled/inputOtp/InputOtpBase.js";import{MaskInput as J}from"../../uncontrolled/maskInput/MaskInput.js";import"../../uncontrolled/radio/RadioGroup.js";import"../../uncontrolled/radio/ui/RadioItem.js";import"../../uncontrolled/slider/SliderBase.js";import"../../uncontrolled/switch/Switch.js";import"../../uncontrolled/textarea/Textarea.js";import"../../uncontrolled/uploader/UploaderBase.js";import"../../uncontrolled/inputCurrency/InputCurrency.js";import"../editor/ui/Editor.js";import"../input/MaskInputControl.js";import"../../../dropdownList/ui/dropdownItem/DropdownItem.js";import{autoUpdate as Q}from"../../../../../../node_modules/@floating-ui/dom/dist/floating-ui.dom.js";import{flip as W,offset as Y}from"../../../../../../node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.js";import{parse as Z}from"../../../../../../node_modules/date-fns/parse.js";import{isValid as $}from"../../../../../../node_modules/date-fns/isValid.js";import{formatDate as h}from"../../../../../../node_modules/date-fns/format.js";const Ut=({inputProps:s,classes:i,value:e,onChange:n,externalHandlers:O,month:V,onMonthChange:r,...x})=>{const{onChange:m,onFocus:c,...A}=O||{},d=L(null),{refs:u,floatingStyles:N}=K({placement:"bottom-end",middleware:[W({boundary:"clippingAncestors",crossAxis:!1}),Y(0)],whileElementsMounted:Q}),{calendar:k,...C}=i||{},[R,a]=E(!1),g=()=>{a(t=>!t)},w=H("single",e),[F,p]=E(I("single",e));P(()=>{e&&!b.isStringEmpty(e)&&(p(I("single",e)),r&&r(new Date(e)))},[e]),U(d,()=>a(!1));const T=t=>{const{value:o}=t.target;if(p(o),b.isStringEmpty(o))return n("");if(!B.test(o))return;const l=Z(o,D,new Date);if($(l)){const S=l.toISOString();n(S),r&&r(l),m&&m(S)}},_=t=>{r&&r(t);const o=t.toISOString();n(o),p(h(t,D)),a(!1),m&&m(o)};return G("div",{ref:u.setReference,className:y("relative w-full",i==null?void 0:i.container),children:[f(J,{mask:q,...s,...A,classes:C,value:F,onChange:T,autoComplete:"off",onFocus:t=>{a(!0),c&&c(t)},onKeyDown:t=>{t.key==="Enter"&&g()},attachmentProps:{disabled:s.disabled,icon:f(z,{name:"general/calendar",className:"text-icon-blue-grey-600"}),onClickIcon:g,...s.attachmentProps}}),R&&j(f(v,{ref:X(d,u.setFloating),...x,required:!0,mode:"single",style:{...N,width:"max-content"},month:V,onMonthChange:r,selected:w,onSelect:_,className:y(k),"data-test-id":"calendar"}),document.body)]})};export{Ut as SingleDayPicker};
|
|
2
2
|
//# sourceMappingURL=single.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"single.js","sources":["../../../../../../../lib/shared/ui/formElements/controlled/dayPickerControl/single.tsx"],"sourcesContent":["'use client'\n\nimport { useEffect, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\nimport { autoUpdate, flip, offset, useFloating } from '@floating-ui/react'\nimport { format, isValid, parse } from 'date-fns'\nimport { type ExternalHandlers } from './dayPickerControl'\nimport { getCurrentDate, getInitialValue, SINGLE_MASK, SINGLE_VALIDATION_REGEX } from './model'\nimport { useClickOutside } from '$/shared/hooks'\nimport { Calendar, DATE_VISIBLE_PATTERN, Icon, MaskInput, type MaskInputProps } from '$/shared/ui'\nimport { cn, mergeRefs, TypeGuards } from '$/shared/utils'\n\ntype CalendarProps = React.ComponentPropsWithoutRef<typeof Calendar>\n\ntype SingleDayPickerClasses = MaskInputProps['classes'] & {\n calendar?: string\n}\n\ntype SingleDayPickerProps = Omit<CalendarProps, 'mode'> & {\n /**\n * Свойства Input компонента\n */\n inputProps: Omit<MaskInputProps, 'mask'>\n /**\n * Стили внутренних компонентов\n */\n classes?: SingleDayPickerClasses\n /**\n * Управляемое значение\n */\n value: string\n /**\n * Функция для управления значением\n */\n onChange: (value: string) => void\n /**\n * Дополнительные хендлеры\n */\n externalHandlers?: ExternalHandlers\n}\n\nexport const SingleDayPicker = ({\n inputProps,\n classes,\n value,\n onChange,\n externalHandlers,\n month,\n onMonthChange,\n ...props\n}: SingleDayPickerProps) => {\n const { onChange: externalOnChange, onFocus: externalOnFocus, ...restHandlers } = externalHandlers || {}\n\n const calendarRef = useRef<HTMLDivElement>(null)\n\n const { refs, floatingStyles } = useFloating({\n placement: 'bottom-end',\n middleware: [\n flip({\n boundary: 'clippingAncestors',\n crossAxis: false\n }),\n offset(0)\n ],\n whileElementsMounted: autoUpdate\n })\n\n const { calendar, ...restClasses } = classes || {}\n\n const [calendarOpen, setCalendarOpen] = useState<boolean>(false)\n\n const onCalendarOpenChange = () => {\n setCalendarOpen((prev) => !prev)\n }\n\n const date = getCurrentDate('single', value)\n\n const [visibleValue, setVisibleValue] = useState<string>(getInitialValue('single', value))\n\n useEffect(() => {\n if (value && !TypeGuards.isStringEmpty(value)) {\n setVisibleValue(getInitialValue('single', value))\n if (onMonthChange) onMonthChange(new Date(value))\n }\n }, [value])\n\n useClickOutside(calendarRef, () => setCalendarOpen(false))\n\n const onVisibleValueChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const { value } = event.target\n\n setVisibleValue(value)\n\n if (TypeGuards.isStringEmpty(value)) {\n return onChange('')\n }\n\n if (!SINGLE_VALIDATION_REGEX.test(value)) {\n return\n }\n\n const date = parse(value, DATE_VISIBLE_PATTERN, new Date())\n\n if (isValid(date)) {\n const isoDate = date.toISOString()\n\n onChange(isoDate)\n if (onMonthChange) onMonthChange(date)\n\n if (externalOnChange) externalOnChange(isoDate)\n }\n }\n\n const onDateChange = (newDate: Date) => {\n if (onMonthChange) onMonthChange(newDate)\n\n const isoDate = newDate.toISOString()\n\n onChange(isoDate)\n setVisibleValue(format(newDate, DATE_VISIBLE_PATTERN))\n setCalendarOpen(false)\n\n if (externalOnChange) externalOnChange(isoDate)\n }\n\n return (\n <div ref={refs.setReference} className={cn('relative w-full', classes?.container)}>\n <MaskInput\n mask={SINGLE_MASK}\n {...inputProps}\n {...restHandlers}\n classes={restClasses}\n value={visibleValue}\n onChange={onVisibleValueChange}\n autoComplete='off'\n onFocus={(event) => {\n setCalendarOpen(true)\n if (externalOnFocus) externalOnFocus(event)\n }}\n onKeyDown={(event) => {\n if (event.key === 'Enter') {\n onCalendarOpenChange()\n }\n }}\n attachmentProps={{\n disabled: inputProps.disabled,\n icon: <Icon name='general/calendar' className='text-icon-blue-grey-600' />,\n onClickIcon: onCalendarOpenChange,\n ...inputProps.attachmentProps\n }}\n />\n {calendarOpen &&\n createPortal(\n <Calendar\n // @ts-expect-error asdf\n ref={mergeRefs(calendarRef, refs.setFloating)}\n {...props}\n required\n mode='single'\n style={{\n ...floatingStyles,\n width: 'max-content'\n }}\n month={month}\n onMonthChange={onMonthChange}\n selected={date}\n onSelect={onDateChange}\n className={cn(calendar)}\n data-test-id='calendar'\n />,\n document.body\n )}\n </div>\n )\n}\n"],"names":["SingleDayPicker","inputProps","classes","value","onChange","externalHandlers","month","onMonthChange","props","externalOnChange","externalOnFocus","restHandlers","calendarRef","useRef","refs","floatingStyles","useFloating","flip","offset","autoUpdate","calendar","restClasses","calendarOpen","setCalendarOpen","useState","onCalendarOpenChange","prev","date","getCurrentDate","visibleValue","setVisibleValue","getInitialValue","useEffect","TypeGuards","useClickOutside","onVisibleValueChange","event","SINGLE_VALIDATION_REGEX","parse","DATE_VISIBLE_PATTERN","isValid","isoDate","onDateChange","newDate","format","jsxs","cn","jsx","MaskInput","SINGLE_MASK","Icon","createPortal","Calendar","mergeRefs"],"mappings":"
|
|
1
|
+
{"version":3,"file":"single.js","sources":["../../../../../../../lib/shared/ui/formElements/controlled/dayPickerControl/single.tsx"],"sourcesContent":["'use client'\n\nimport { useEffect, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\nimport { autoUpdate, flip, offset, useFloating } from '@floating-ui/react'\nimport { format, isValid, parse } from 'date-fns'\nimport { type ExternalHandlers } from './dayPickerControl'\nimport { getCurrentDate, getInitialValue, SINGLE_MASK, SINGLE_VALIDATION_REGEX } from './model'\nimport { useClickOutside } from '$/shared/hooks'\nimport { Calendar, DATE_VISIBLE_PATTERN, Icon, MaskInput, type MaskInputProps } from '$/shared/ui'\nimport { cn, mergeRefs, TypeGuards } from '$/shared/utils'\n\ntype CalendarProps = React.ComponentPropsWithoutRef<typeof Calendar>\n\ntype SingleDayPickerClasses = MaskInputProps['classes'] & {\n calendar?: string\n}\n\ntype SingleDayPickerProps = Omit<CalendarProps, 'mode'> & {\n /**\n * Свойства Input компонента\n */\n inputProps: Omit<MaskInputProps, 'mask'>\n /**\n * Стили внутренних компонентов\n */\n classes?: SingleDayPickerClasses\n /**\n * Управляемое значение\n */\n value: string\n /**\n * Функция для управления значением\n */\n onChange: (value: string) => void\n /**\n * Дополнительные хендлеры\n */\n externalHandlers?: ExternalHandlers\n}\n\nexport const SingleDayPicker = ({\n inputProps,\n classes,\n value,\n onChange,\n externalHandlers,\n month,\n onMonthChange,\n ...props\n}: SingleDayPickerProps) => {\n const { onChange: externalOnChange, onFocus: externalOnFocus, ...restHandlers } = externalHandlers || {}\n\n const calendarRef = useRef<HTMLDivElement>(null)\n\n const { refs, floatingStyles } = useFloating({\n placement: 'bottom-end',\n middleware: [\n flip({\n boundary: 'clippingAncestors',\n crossAxis: false\n }),\n offset(0)\n ],\n whileElementsMounted: autoUpdate\n })\n\n const { calendar, ...restClasses } = classes || {}\n\n const [calendarOpen, setCalendarOpen] = useState<boolean>(false)\n\n const onCalendarOpenChange = () => {\n setCalendarOpen((prev) => !prev)\n }\n\n const date = getCurrentDate('single', value)\n\n const [visibleValue, setVisibleValue] = useState<string>(getInitialValue('single', value))\n\n useEffect(() => {\n if (value && !TypeGuards.isStringEmpty(value)) {\n setVisibleValue(getInitialValue('single', value))\n if (onMonthChange) onMonthChange(new Date(value))\n }\n }, [value])\n\n useClickOutside(calendarRef, () => setCalendarOpen(false))\n\n const onVisibleValueChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const { value } = event.target\n\n setVisibleValue(value)\n\n if (TypeGuards.isStringEmpty(value)) {\n return onChange('')\n }\n\n if (!SINGLE_VALIDATION_REGEX.test(value)) {\n return\n }\n\n const date = parse(value, DATE_VISIBLE_PATTERN, new Date())\n\n if (isValid(date)) {\n const isoDate = date.toISOString()\n\n onChange(isoDate)\n if (onMonthChange) onMonthChange(date)\n\n if (externalOnChange) externalOnChange(isoDate)\n }\n }\n\n const onDateChange = (newDate: Date) => {\n if (onMonthChange) onMonthChange(newDate)\n\n const isoDate = newDate.toISOString()\n\n onChange(isoDate)\n setVisibleValue(format(newDate, DATE_VISIBLE_PATTERN))\n setCalendarOpen(false)\n\n if (externalOnChange) externalOnChange(isoDate)\n }\n\n return (\n <div ref={refs.setReference} className={cn('relative w-full', classes?.container)}>\n <MaskInput\n mask={SINGLE_MASK}\n {...inputProps}\n {...restHandlers}\n classes={restClasses}\n value={visibleValue}\n onChange={onVisibleValueChange}\n autoComplete='off'\n onFocus={(event) => {\n setCalendarOpen(true)\n if (externalOnFocus) externalOnFocus(event)\n }}\n onKeyDown={(event) => {\n if (event.key === 'Enter') {\n onCalendarOpenChange()\n }\n }}\n attachmentProps={{\n disabled: inputProps.disabled,\n icon: <Icon name='general/calendar' className='text-icon-blue-grey-600' />,\n onClickIcon: onCalendarOpenChange,\n ...inputProps.attachmentProps\n }}\n />\n {calendarOpen &&\n createPortal(\n <Calendar\n // @ts-expect-error asdf\n ref={mergeRefs(calendarRef, refs.setFloating)}\n {...props}\n required\n mode='single'\n style={{\n ...floatingStyles,\n width: 'max-content'\n }}\n month={month}\n onMonthChange={onMonthChange}\n selected={date}\n onSelect={onDateChange}\n className={cn(calendar)}\n data-test-id='calendar'\n />,\n document.body\n )}\n </div>\n )\n}\n"],"names":["SingleDayPicker","inputProps","classes","value","onChange","externalHandlers","month","onMonthChange","props","externalOnChange","externalOnFocus","restHandlers","calendarRef","useRef","refs","floatingStyles","useFloating","flip","offset","autoUpdate","calendar","restClasses","calendarOpen","setCalendarOpen","useState","onCalendarOpenChange","prev","date","getCurrentDate","visibleValue","setVisibleValue","getInitialValue","useEffect","TypeGuards","useClickOutside","onVisibleValueChange","event","SINGLE_VALIDATION_REGEX","parse","DATE_VISIBLE_PATTERN","isValid","isoDate","onDateChange","newDate","format","jsxs","cn","jsx","MaskInput","SINGLE_MASK","Icon","createPortal","Calendar","mergeRefs"],"mappings":"u6EAyCO,MAAMA,GAAkB,CAAC,CAC9B,WAAAC,EACA,QAAAC,EACA,MAAAC,EACA,SAAAC,EACA,iBAAAC,EACA,MAAAC,EACA,cAAAC,EACA,GAAGC,CACL,IAA4B,CAC1B,KAAM,CAAE,SAAUC,EAAkB,QAASC,EAAiB,GAAGC,CAAA,EAAiBN,GAAoB,CAAA,EAEhGO,EAAcC,EAAuB,IAAI,EAEzC,CAAE,KAAAC,EAAM,eAAAC,CAAA,EAAmBC,EAAY,CAC3C,UAAW,aACX,WAAY,CACVC,EAAK,CACH,SAAU,oBACV,UAAW,EAAA,CACZ,EACDC,EAAO,CAAC,CAAA,EAEV,qBAAsBC,CAAA,CACvB,EAEK,CAAE,SAAAC,EAAU,GAAGC,CAAA,EAAgBnB,GAAW,CAAA,EAE1C,CAACoB,EAAcC,CAAe,EAAIC,EAAkB,EAAK,EAEzDC,EAAuB,IAAM,CACjCF,EAAiBG,GAAS,CAACA,CAAI,CACjC,EAEMC,EAAOC,EAAe,SAAUzB,CAAK,EAErC,CAAC0B,EAAcC,CAAe,EAAIN,EAAiBO,EAAgB,SAAU5B,CAAK,CAAC,EAEzF6B,EAAU,IAAM,CACV7B,GAAS,CAAC8B,EAAW,cAAc9B,CAAK,IAC1C2B,EAAgBC,EAAgB,SAAU5B,CAAK,CAAC,EAC5CI,GAAeA,EAAc,IAAI,KAAKJ,CAAK,CAAC,EAEpD,EAAG,CAACA,CAAK,CAAC,EAEV+B,EAAgBtB,EAAa,IAAMW,EAAgB,EAAK,CAAC,EAEzD,MAAMY,EAAwBC,GAA+C,CAC3E,KAAM,CAAE,MAAAjC,CAAAA,EAAUiC,EAAM,OAIxB,GAFAN,EAAgB3B,CAAK,EAEjB8B,EAAW,cAAc9B,CAAK,EAChC,OAAOC,EAAS,EAAE,EAGpB,GAAI,CAACiC,EAAwB,KAAKlC,CAAK,EACrC,OAGF,MAAMwB,EAAOW,EAAMnC,EAAOoC,EAAsB,IAAI,IAAM,EAE1D,GAAIC,EAAQb,CAAI,EAAG,CACjB,MAAMc,EAAUd,EAAK,YAAA,EAErBvB,EAASqC,CAAO,EACZlC,KAA6BoB,CAAI,EAEjClB,KAAmCgC,CAAO,CAChD,CACF,EAEMC,EAAgBC,GAAkB,CAClCpC,KAA6BoC,CAAO,EAExC,MAAMF,EAAUE,EAAQ,YAAA,EAExBvC,EAASqC,CAAO,EAChBX,EAAgBc,EAAOD,EAASJ,CAAoB,CAAC,EACrDhB,EAAgB,EAAK,EAEjBd,KAAmCgC,CAAO,CAChD,EAEA,OACEI,EAAC,MAAA,CAAI,IAAK/B,EAAK,aAAc,UAAWgC,EAAG,kBAAmB5C,GAAA,YAAAA,EAAS,SAAS,EAC9E,SAAA,CAAA6C,EAACC,EAAA,CACC,KAAMC,EACL,GAAGhD,EACH,GAAGU,EACJ,QAASU,EACT,MAAOQ,EACP,SAAUM,EACV,aAAa,MACb,QAAUC,GAAU,CAClBb,EAAgB,EAAI,EAChBb,KAAiC0B,CAAK,CAC5C,EACA,UAAYA,GAAU,CAChBA,EAAM,MAAQ,SAChBX,EAAA,CAEJ,EACA,gBAAiB,CACf,SAAUxB,EAAW,SACrB,KAAM8C,EAACG,EAAA,CAAK,KAAK,mBAAmB,UAAU,0BAA0B,EACxE,YAAazB,EACb,GAAGxB,EAAW,eAAA,CAChB,CAAA,EAEDqB,GACC6B,EACEJ,EAACK,EAAA,CAEC,IAAKC,EAAUzC,EAAaE,EAAK,WAAW,EAC3C,GAAGN,EACJ,SAAQ,GACR,KAAK,SACL,MAAO,CACL,GAAGO,EACH,MAAO,aAAA,EAET,MAAAT,EACA,cAAAC,EACA,SAAUoB,EACV,SAAUe,EACV,UAAWI,EAAG1B,CAAQ,EACtB,eAAa,UAAA,CAAA,EAEf,SAAS,IAAA,CACX,EACJ,CAEJ"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as l,Fragment as v,jsx as t}from"react/jsx-runtime";import{useState as w}from"react";import{useController as y}from"../../../../../../node_modules/react-hook-form/dist/index.esm.js";import{cn as I}from"../../../../utils/cn.js";import"../../../button/Button.js";import"../../../buttonIcon/ButtonIcon.js";import"../../../calendar/Calendar.js";import"../../../calendar/model/utils.js";import"../../../accordion/Accordion.js";import{Modal as N}from"../../../modal/Modal.js";import"../../../../../../node_modules/react-hot-toast/dist/index.js";import{Icon as C}from"../../../icon/Icon.js";import"../../../table/ui/primitives/Primitives.js";import"../../../carousel/ui/CarouselContent.js";import"react-dom";import"../../../slot/Slot.js";import"../../uncontrolled/autocomplete/Autocomplete.js";import"../../uncontrolled/checkbox/Checkbox.js";import"../../uncontrolled/combobox/combobox.js";import"../../uncontrolled/dayPicker/DayPicker.js";import{InputBase as O}from"../../uncontrolled/input/Input.js";import"../../uncontrolled/inputOtp/InputOtpBase.js";import"../../uncontrolled/maskInput/MaskInput.js";import"../../uncontrolled/radio/RadioGroup.js";import"../../uncontrolled/radio/ui/RadioItem.js";import"../../uncontrolled/slider/SliderBase.js";import"../../uncontrolled/switch/Switch.js";import"../../uncontrolled/textarea/Textarea.js";import"../../uncontrolled/uploader/UploaderBase.js";import"../input/MaskInputControl.js";import"../../../dropdownList/ui/dropdownItem/DropdownItem.js";import{MessageView as S}from"../../ui/MessageView.js";import{Editor as s}from"./ui/Editor.js";const
|
|
1
|
+
import{jsxs as l,Fragment as v,jsx as t}from"react/jsx-runtime";import{useState as w}from"react";import{useController as y}from"../../../../../../node_modules/react-hook-form/dist/index.esm.js";import{cn as I}from"../../../../utils/cn.js";import"../../../button/Button.js";import"../../../buttonIcon/ButtonIcon.js";import"../../../calendar/Calendar.js";import"../../../calendar/model/utils.js";import"../../../accordion/Accordion.js";import{Modal as N}from"../../../modal/Modal.js";import"../../../../../../node_modules/react-hot-toast/dist/index.js";import{Icon as C}from"../../../icon/Icon.js";import"../../../table/ui/primitives/Primitives.js";import"../../../carousel/ui/CarouselContent.js";import"react-dom";import"../../../slot/Slot.js";import"../../uncontrolled/autocomplete/Autocomplete.js";import"../../uncontrolled/checkbox/Checkbox.js";import"../../uncontrolled/combobox/combobox.js";import"../../uncontrolled/dayPicker/DayPicker.js";import{InputBase as O}from"../../uncontrolled/input/Input.js";import"../../uncontrolled/inputOtp/InputOtpBase.js";import"../../uncontrolled/maskInput/MaskInput.js";import"../../uncontrolled/radio/RadioGroup.js";import"../../uncontrolled/radio/ui/RadioItem.js";import"../../uncontrolled/slider/SliderBase.js";import"../../uncontrolled/switch/Switch.js";import"../../uncontrolled/textarea/Textarea.js";import"../../uncontrolled/uploader/UploaderBase.js";import"../../uncontrolled/inputCurrency/InputCurrency.js";import"../input/MaskInputControl.js";import"../../../dropdownList/ui/dropdownItem/DropdownItem.js";import{MessageView as S}from"../../ui/MessageView.js";import{Editor as s}from"./ui/Editor.js";const no=({control:d,label:p,helperText:e,editable:m=!0,classes:r,defaultValue:f,disabled:c,rules:x,shouldUnregister:u,name:g,small:h,...n})=>{const{field:i,fieldState:{error:o}}=y({control:d,defaultValue:f,disabled:c,rules:x,shouldUnregister:u,name:g}),[M,a]=w(!1);return h?l(v,{children:[l("div",{className:"flex flex-1 flex-col",children:[t(O,{readOnly:!0,label:p,...i,renderValues:()=>t("div",{className:I("peer max-h-[50px] w-full overflow-y-hidden p-4 pb-[9px] pt-[27px]"),dangerouslySetInnerHTML:{__html:i.value}}),attachmentProps:{icon:t(C,{name:"general/edit",className:"size-5 text-color-tetriary"})},onClick:()=>m&&a(!0)}),t(S,{className:r==null?void 0:r.message,intent:o!=null&&o.message?"error":"simple",text:(o==null?void 0:o.message)||e,disabled:!m})]}),t(N,{classes:{modal:"max-w-[700px]"},isModalOpen:M,closeModal:()=>a(!1),children:t(s,{...i,editable:m,error:o,helperText:e,classes:{editor:"min-h-[350px]",...r},...n})})]}):t(s,{...i,editable:m,error:o,helperText:e,label:p,classes:r,...n})};export{no as EditorControl};
|
|
2
2
|
//# sourceMappingURL=EditorControl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditorControl.js","sources":["../../../../../../../lib/shared/ui/formElements/controlled/editor/EditorControl.tsx"],"sourcesContent":["import { type ReactElement, useState } from 'react'\nimport { type FieldValues, type Path, useController, type UseControllerProps } from 'react-hook-form'\nimport { MessageView } from '../../ui'\nimport { Editor } from './ui/Editor'\nimport { Icon, InputBase, Modal } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type EditorControlClasses = {\n root?: string\n editor?: string\n wrapper?: string\n message?: string\n label?: string\n}\n\nexport type EditorControlProps<\n TFieldValues extends FieldValues,\n TName extends Path<TFieldValues> = Path<TFieldValues>\n> = UseControllerProps<TFieldValues, TName> & {\n editable?: boolean\n classes?: EditorControlClasses\n helperText?: string | ReactElement\n label: string\n limit?: number\n small?: boolean\n}\n\nexport const EditorControl = <T extends FieldValues>({\n control,\n label,\n helperText,\n editable = true,\n classes,\n defaultValue,\n disabled,\n rules,\n shouldUnregister,\n name,\n small,\n ...props\n}: EditorControlProps<T>) => {\n const {\n field,\n fieldState: { error }\n } = useController({\n control,\n defaultValue,\n disabled,\n rules,\n shouldUnregister,\n name\n })\n\n const [isModalOpen, setIsModalOpen] = useState(false)\n\n if (small) {\n return (\n <>\n <div className='flex flex-1 flex-col'>\n <InputBase\n readOnly\n label={label}\n {...field}\n renderValues={() => (\n <div\n className={cn('peer max-h-[50px] w-full overflow-y-hidden p-4 pb-[9px] pt-[27px]')}\n dangerouslySetInnerHTML={{ __html: field.value }}\n />\n )}\n attachmentProps={{\n icon: <Icon name='general/edit' className='size-5 text-color-tetriary' />\n }}\n onClick={() => editable && setIsModalOpen(true)}\n />\n <MessageView\n className={classes?.message}\n intent={error?.message ? 'error' : 'simple'}\n text={error?.message || helperText}\n disabled={!editable}\n />\n </div>\n <Modal\n classes={{\n modal: 'max-w-[700px]'\n }}\n isModalOpen={isModalOpen}\n closeModal={() => setIsModalOpen(false)}\n >\n <Editor\n {...field}\n editable={editable}\n error={error}\n helperText={helperText}\n classes={{\n editor: 'min-h-[350px]',\n ...classes\n }}\n {...props}\n />\n </Modal>\n </>\n )\n }\n return (\n <Editor {...field} editable={editable} error={error} helperText={helperText} label={label} classes={classes} {...props} />\n )\n}\n"],"names":["EditorControl","control","label","helperText","editable","classes","defaultValue","disabled","rules","shouldUnregister","name","small","props","field","error","useController","isModalOpen","setIsModalOpen","useState","jsxs","Fragment","jsx","InputBase","cn","Icon","MessageView","Modal","Editor"],"mappings":"
|
|
1
|
+
{"version":3,"file":"EditorControl.js","sources":["../../../../../../../lib/shared/ui/formElements/controlled/editor/EditorControl.tsx"],"sourcesContent":["import { type ReactElement, useState } from 'react'\nimport { type FieldValues, type Path, useController, type UseControllerProps } from 'react-hook-form'\nimport { MessageView } from '../../ui'\nimport { Editor } from './ui/Editor'\nimport { Icon, InputBase, Modal } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type EditorControlClasses = {\n root?: string\n editor?: string\n wrapper?: string\n message?: string\n label?: string\n}\n\nexport type EditorControlProps<\n TFieldValues extends FieldValues,\n TName extends Path<TFieldValues> = Path<TFieldValues>\n> = UseControllerProps<TFieldValues, TName> & {\n editable?: boolean\n classes?: EditorControlClasses\n helperText?: string | ReactElement\n label: string\n limit?: number\n small?: boolean\n}\n\nexport const EditorControl = <T extends FieldValues>({\n control,\n label,\n helperText,\n editable = true,\n classes,\n defaultValue,\n disabled,\n rules,\n shouldUnregister,\n name,\n small,\n ...props\n}: EditorControlProps<T>) => {\n const {\n field,\n fieldState: { error }\n } = useController({\n control,\n defaultValue,\n disabled,\n rules,\n shouldUnregister,\n name\n })\n\n const [isModalOpen, setIsModalOpen] = useState(false)\n\n if (small) {\n return (\n <>\n <div className='flex flex-1 flex-col'>\n <InputBase\n readOnly\n label={label}\n {...field}\n renderValues={() => (\n <div\n className={cn('peer max-h-[50px] w-full overflow-y-hidden p-4 pb-[9px] pt-[27px]')}\n dangerouslySetInnerHTML={{ __html: field.value }}\n />\n )}\n attachmentProps={{\n icon: <Icon name='general/edit' className='size-5 text-color-tetriary' />\n }}\n onClick={() => editable && setIsModalOpen(true)}\n />\n <MessageView\n className={classes?.message}\n intent={error?.message ? 'error' : 'simple'}\n text={error?.message || helperText}\n disabled={!editable}\n />\n </div>\n <Modal\n classes={{\n modal: 'max-w-[700px]'\n }}\n isModalOpen={isModalOpen}\n closeModal={() => setIsModalOpen(false)}\n >\n <Editor\n {...field}\n editable={editable}\n error={error}\n helperText={helperText}\n classes={{\n editor: 'min-h-[350px]',\n ...classes\n }}\n {...props}\n />\n </Modal>\n </>\n )\n }\n return (\n <Editor {...field} editable={editable} error={error} helperText={helperText} label={label} classes={classes} {...props} />\n )\n}\n"],"names":["EditorControl","control","label","helperText","editable","classes","defaultValue","disabled","rules","shouldUnregister","name","small","props","field","error","useController","isModalOpen","setIsModalOpen","useState","jsxs","Fragment","jsx","InputBase","cn","Icon","MessageView","Modal","Editor"],"mappings":"gnDA2BO,MAAMA,GAAgB,CAAwB,CACnD,QAAAC,EACA,MAAAC,EACA,WAAAC,EACA,SAAAC,EAAW,GACX,QAAAC,EACA,aAAAC,EACA,SAAAC,EACA,MAAAC,EACA,iBAAAC,EACA,KAAAC,EACA,MAAAC,EACA,GAAGC,CACL,IAA6B,CAC3B,KAAM,CACJ,MAAAC,EACA,WAAY,CAAE,MAAAC,CAAA,CAAM,EAClBC,EAAc,CAChB,QAAAd,EACA,aAAAK,EACA,SAAAC,EACA,MAAAC,EACA,iBAAAC,EACA,KAAAC,CAAA,CACD,EAEK,CAACM,EAAaC,CAAc,EAAIC,EAAS,EAAK,EAEpD,OAAIP,EAEAQ,EAAAC,EAAA,CACE,SAAA,CAAAD,EAAC,MAAA,CAAI,UAAU,uBACb,SAAA,CAAAE,EAACC,EAAA,CACC,SAAQ,GACR,MAAApB,EACC,GAAGW,EACJ,aAAc,IACZQ,EAAC,MAAA,CACC,UAAWE,EAAG,mEAAmE,EACjF,wBAAyB,CAAE,OAAQV,EAAM,KAAA,CAAM,CAAA,EAGnD,gBAAiB,CACf,KAAMQ,EAACG,EAAA,CAAK,KAAK,eAAe,UAAU,4BAAA,CAA6B,CAAA,EAEzE,QAAS,IAAMpB,GAAYa,EAAe,EAAI,CAAA,CAAA,EAEhDI,EAACI,EAAA,CACC,UAAWpB,GAAA,YAAAA,EAAS,QACpB,OAAQS,GAAA,MAAAA,EAAO,QAAU,QAAU,SACnC,MAAMA,GAAA,YAAAA,EAAO,UAAWX,EACxB,SAAU,CAACC,CAAA,CAAA,CACb,EACF,EACAiB,EAACK,EAAA,CACC,QAAS,CACP,MAAO,eAAA,EAET,YAAAV,EACA,WAAY,IAAMC,EAAe,EAAK,EAEtC,SAAAI,EAACM,EAAA,CACE,GAAGd,EACJ,SAAAT,EACA,MAAAU,EACA,WAAAX,EACA,QAAS,CACP,OAAQ,gBACR,GAAGE,CAAA,EAEJ,GAAGO,CAAA,CAAA,CACN,CAAA,CACF,EACF,EAIFS,EAACM,EAAA,CAAQ,GAAGd,EAAO,SAAAT,EAAoB,MAAAU,EAAc,WAAAX,EAAwB,MAAAD,EAAc,QAAAG,EAAmB,GAAGO,CAAA,CAAO,CAE5H"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as i}from"react/jsx-runtime";import"../../../../button/Button.js";import"../../../../buttonIcon/ButtonIcon.js";import"../../../../calendar/Calendar.js";import"../../../../calendar/model/utils.js";import"../../../../accordion/Accordion.js";import"react";import"react-dom";import"../../../../modal/ui/IframeModalContent.js";import"../../../../../../../node_modules/react-hot-toast/dist/index.js";import{Icon as
|
|
1
|
+
import{jsx as i}from"react/jsx-runtime";import"../../../../button/Button.js";import"../../../../buttonIcon/ButtonIcon.js";import"../../../../calendar/Calendar.js";import"../../../../calendar/model/utils.js";import"../../../../accordion/Accordion.js";import"react";import"react-dom";import"../../../../modal/ui/IframeModalContent.js";import"../../../../../../../node_modules/react-hot-toast/dist/index.js";import{Icon as o}from"../../../../icon/Icon.js";import"../../../../table/ui/primitives/Primitives.js";import"../../../../carousel/ui/CarouselContent.js";import"../../../../slot/Slot.js";import"../../../uncontrolled/autocomplete/Autocomplete.js";import"../../../uncontrolled/checkbox/Checkbox.js";import"../../../uncontrolled/combobox/combobox.js";import"../../../uncontrolled/dayPicker/DayPicker.js";import"../../../uncontrolled/input/Input.js";import"../../../uncontrolled/inputOtp/InputOtpBase.js";import"../../../uncontrolled/maskInput/MaskInput.js";import"../../../uncontrolled/radio/RadioGroup.js";import"../../../uncontrolled/radio/ui/RadioItem.js";import"../../../uncontrolled/slider/SliderBase.js";import"../../../uncontrolled/switch/Switch.js";import"../../../uncontrolled/textarea/Textarea.js";import"../../../uncontrolled/uploader/UploaderBase.js";import"../../../uncontrolled/inputCurrency/InputCurrency.js";import"../ui/Editor.js";import"../../input/MaskInputControl.js";import"../../../../dropdownList/ui/dropdownItem/DropdownItem.js";const S=[1,2,3,4],j={1:"mob-headline-bold-m desktop:desk-headline-bold-l",2:"mob-headline-bold-s desktop:desk-headline-bold-m",3:"mob-title-bold-l desktop:desk-title-bold-l",4:"mob-title-bold-m desktop:desk-title-bold-s"},w=[{label:"12px",value:"12px"},{label:"14px",value:"14px"},{label:"16px",value:"16px"},{label:"18px",value:"18px"},{label:"20px",value:"20px"},{label:"24px",value:"24px"}],M=["#292929","#FFFFFF","#40465A","#5A6E85","#A9B6C5","#94A4B7","#003790","#042E73","#809BC7","#76BC21","#F49F00","#F42500"],U=e=>[{label:"Жирный текст",icon:i(o,{name:"editor/bold",className:"size-4"}),onClick:()=>e.chain().focus().toggleBold().run(),isActive:e.isActive("bold")},{label:"Курсивный текст",icon:i(o,{name:"editor/italic",className:"size-4"}),onClick:()=>e.chain().focus().toggleItalic().run(),isActive:e.isActive("italic")},{label:"Подчеркнутый текст",icon:i(o,{name:"editor/underline",className:"size-4"}),onClick:()=>e.chain().focus().toggleUnderline().run(),isActive:e.isActive("underline")},{label:"Зачеркнутый текст",icon:i(o,{name:"editor/strikethrough",className:"size-4"}),onClick:()=>e.chain().focus().toggleStrike().run(),isActive:e.isActive("strike")},{label:"Обычный текст",icon:i(o,{name:"editor/typography",className:"size-4"}),onClick:()=>e.chain().focus().setParagraph().run()},{label:"Маркированный список",icon:i(o,{name:"editor/list",className:"size-4"}),onClick:()=>e.chain().focus().toggleBulletList().run(),isActive:e.isActive("bulletList")},{label:"Перенос строки",icon:i(o,{name:"editor/space",className:"size-4"}),onClick:()=>e.chain().focus().setHardBreak().run()},{label:"Отменить",icon:i(o,{name:"editor/undo",className:"size-4"}),onClick:()=>e.chain().focus().undo().run()},{label:"Вернуть",icon:i(o,{name:"editor/redo",className:"size-4"}),onClick:()=>e.chain().focus().redo().run()},{label:"Очистить стили и теги",icon:i(o,{name:"editor/removeFormatting",className:"size-4"}),onClick:()=>e.chain().focus().clearNodes().unsetAllMarks().run()},{label:"Удалить все",icon:i(o,{name:"general/close",className:"size-4"}),onClick:()=>e.commands.clearContent()}];export{M as editorAllowedColors,j as editorHeadingClasses,w as fontSizesOptions,S as headingsOptions,U as renderEditorPanel};
|
|
2
2
|
//# sourceMappingURL=helper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helper.js","sources":["../../../../../../../../lib/shared/ui/formElements/controlled/editor/model/helper.tsx"],"sourcesContent":["import type { Editor } from '@tiptap/react'\nimport { type ColorOption, type HeadingLevel } from './types'\nimport { Icon } from '$/shared/ui'\n\nexport const headingsOptions: HeadingLevel[] = [1, 2, 3, 4]\n\nexport const editorHeadingClasses: Record<number, string> = {\n 1: 'mob-headline-bold-m desktop:desk-headline-bold-l',\n 2: 'mob-headline-bold-s desktop:desk-headline-bold-m',\n 3: 'mob-title-bold-l desktop:desk-title-bold-l',\n 4: 'mob-title-bold-m desktop:desk-title-bold-s'\n}\n\nexport const fontSizesOptions = [\n { label: '12px', value: '12px' },\n { label: '14px', value: '14px' },\n { label: '16px', value: '16px' },\n { label: '18px', value: '18px' },\n { label: '20px', value: '20px' },\n { label: '24px', value: '24px' }\n]\n\nexport const editorAllowedColors: ColorOption[] = [\n '#292929',\n '#FFFFFF',\n '#40465A',\n '#5A6E85',\n '#A9B6C5',\n '#94A4B7',\n '#003790',\n '#042E73',\n '#809BC7',\n '#76BC21',\n '#F49F00',\n '#F42500'\n]\n\nexport const renderEditorPanel = (editor: Editor) => [\n {\n label: 'Жирный текст',\n icon: <Icon name='editor/bold' className='size-4' />,\n onClick: () => editor.chain().focus().toggleBold().run(),\n isActive: editor.isActive('bold')\n },\n {\n label: 'Курсивный текст',\n icon: <Icon name='editor/italic' className='size-4' />,\n onClick: () => editor.chain().focus().toggleItalic().run(),\n isActive: editor.isActive('italic')\n },\n {\n label: 'Подчеркнутый текст',\n icon: <Icon name='editor/underline' className='size-4' />,\n onClick: () => editor.chain().focus().toggleUnderline().run(),\n isActive: editor.isActive('underline')\n },\n {\n label: 'Зачеркнутый текст',\n icon: <Icon name='editor/strikethrough' className='size-4' />,\n onClick: () => editor.chain().focus().toggleStrike().run(),\n isActive: editor.isActive('strike')\n },\n {\n label: 'Обычный текст',\n icon: <Icon name='editor/typography' className='size-4' />,\n onClick: () => editor.chain().focus().setParagraph().run()\n },\n {\n label: 'Маркированный список',\n icon: <Icon name='editor/list' className='size-4' />,\n onClick: () => editor.chain().focus().toggleBulletList().run(),\n isActive: editor.isActive('bulletList')\n },\n {\n label: 'Перенос строки',\n icon: <Icon name='editor/space' className='size-4' />,\n onClick: () => editor.chain().focus().setHardBreak().run()\n },\n {\n label: 'Отменить',\n icon: <Icon name='editor/undo' className='size-4' />,\n onClick: () => editor.chain().focus().undo().run()\n },\n {\n label: 'Вернуть',\n icon: <Icon name='editor/redo' className='size-4' />,\n onClick: () => editor.chain().focus().redo().run()\n },\n {\n label: 'Очистить стили и теги',\n icon: <Icon name='editor/removeFormatting' className='size-4' />,\n onClick: () => editor.chain().focus().clearNodes().unsetAllMarks().run()\n },\n {\n label: 'Удалить все',\n icon: <Icon name='general/close' className='size-4' />,\n onClick: () => editor.commands.clearContent()\n }\n]\n"],"names":["headingsOptions","editorHeadingClasses","fontSizesOptions","editorAllowedColors","renderEditorPanel","editor","jsx","Icon"],"mappings":"
|
|
1
|
+
{"version":3,"file":"helper.js","sources":["../../../../../../../../lib/shared/ui/formElements/controlled/editor/model/helper.tsx"],"sourcesContent":["import type { Editor } from '@tiptap/react'\nimport { type ColorOption, type HeadingLevel } from './types'\nimport { Icon } from '$/shared/ui'\n\nexport const headingsOptions: HeadingLevel[] = [1, 2, 3, 4]\n\nexport const editorHeadingClasses: Record<number, string> = {\n 1: 'mob-headline-bold-m desktop:desk-headline-bold-l',\n 2: 'mob-headline-bold-s desktop:desk-headline-bold-m',\n 3: 'mob-title-bold-l desktop:desk-title-bold-l',\n 4: 'mob-title-bold-m desktop:desk-title-bold-s'\n}\n\nexport const fontSizesOptions = [\n { label: '12px', value: '12px' },\n { label: '14px', value: '14px' },\n { label: '16px', value: '16px' },\n { label: '18px', value: '18px' },\n { label: '20px', value: '20px' },\n { label: '24px', value: '24px' }\n]\n\nexport const editorAllowedColors: ColorOption[] = [\n '#292929',\n '#FFFFFF',\n '#40465A',\n '#5A6E85',\n '#A9B6C5',\n '#94A4B7',\n '#003790',\n '#042E73',\n '#809BC7',\n '#76BC21',\n '#F49F00',\n '#F42500'\n]\n\nexport const renderEditorPanel = (editor: Editor) => [\n {\n label: 'Жирный текст',\n icon: <Icon name='editor/bold' className='size-4' />,\n onClick: () => editor.chain().focus().toggleBold().run(),\n isActive: editor.isActive('bold')\n },\n {\n label: 'Курсивный текст',\n icon: <Icon name='editor/italic' className='size-4' />,\n onClick: () => editor.chain().focus().toggleItalic().run(),\n isActive: editor.isActive('italic')\n },\n {\n label: 'Подчеркнутый текст',\n icon: <Icon name='editor/underline' className='size-4' />,\n onClick: () => editor.chain().focus().toggleUnderline().run(),\n isActive: editor.isActive('underline')\n },\n {\n label: 'Зачеркнутый текст',\n icon: <Icon name='editor/strikethrough' className='size-4' />,\n onClick: () => editor.chain().focus().toggleStrike().run(),\n isActive: editor.isActive('strike')\n },\n {\n label: 'Обычный текст',\n icon: <Icon name='editor/typography' className='size-4' />,\n onClick: () => editor.chain().focus().setParagraph().run()\n },\n {\n label: 'Маркированный список',\n icon: <Icon name='editor/list' className='size-4' />,\n onClick: () => editor.chain().focus().toggleBulletList().run(),\n isActive: editor.isActive('bulletList')\n },\n {\n label: 'Перенос строки',\n icon: <Icon name='editor/space' className='size-4' />,\n onClick: () => editor.chain().focus().setHardBreak().run()\n },\n {\n label: 'Отменить',\n icon: <Icon name='editor/undo' className='size-4' />,\n onClick: () => editor.chain().focus().undo().run()\n },\n {\n label: 'Вернуть',\n icon: <Icon name='editor/redo' className='size-4' />,\n onClick: () => editor.chain().focus().redo().run()\n },\n {\n label: 'Очистить стили и теги',\n icon: <Icon name='editor/removeFormatting' className='size-4' />,\n onClick: () => editor.chain().focus().clearNodes().unsetAllMarks().run()\n },\n {\n label: 'Удалить все',\n icon: <Icon name='general/close' className='size-4' />,\n onClick: () => editor.commands.clearContent()\n }\n]\n"],"names":["headingsOptions","editorHeadingClasses","fontSizesOptions","editorAllowedColors","renderEditorPanel","editor","jsx","Icon"],"mappings":"86CAIO,MAAMA,EAAkC,CAAC,EAAG,EAAG,EAAG,CAAC,EAE7CC,EAA+C,CAC1D,EAAG,mDACH,EAAG,mDACH,EAAG,6CACH,EAAG,4CACL,EAEaC,EAAmB,CAC9B,CAAE,MAAO,OAAQ,MAAO,MAAA,EACxB,CAAE,MAAO,OAAQ,MAAO,MAAA,EACxB,CAAE,MAAO,OAAQ,MAAO,MAAA,EACxB,CAAE,MAAO,OAAQ,MAAO,MAAA,EACxB,CAAE,MAAO,OAAQ,MAAO,MAAA,EACxB,CAAE,MAAO,OAAQ,MAAO,MAAA,CAC1B,EAEaC,EAAqC,CAChD,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACF,EAEaC,EAAqBC,GAAmB,CACnD,CACE,MAAO,eACP,KAAMC,EAACC,EAAA,CAAK,KAAK,cAAc,UAAU,SAAS,EAClD,QAAS,IAAMF,EAAO,MAAA,EAAQ,QAAQ,WAAA,EAAa,IAAA,EACnD,SAAUA,EAAO,SAAS,MAAM,CAAA,EAElC,CACE,MAAO,kBACP,KAAMC,EAACC,EAAA,CAAK,KAAK,gBAAgB,UAAU,SAAS,EACpD,QAAS,IAAMF,EAAO,MAAA,EAAQ,QAAQ,aAAA,EAAe,IAAA,EACrD,SAAUA,EAAO,SAAS,QAAQ,CAAA,EAEpC,CACE,MAAO,qBACP,KAAMC,EAACC,EAAA,CAAK,KAAK,mBAAmB,UAAU,SAAS,EACvD,QAAS,IAAMF,EAAO,MAAA,EAAQ,QAAQ,gBAAA,EAAkB,IAAA,EACxD,SAAUA,EAAO,SAAS,WAAW,CAAA,EAEvC,CACE,MAAO,oBACP,KAAMC,EAACC,EAAA,CAAK,KAAK,uBAAuB,UAAU,SAAS,EAC3D,QAAS,IAAMF,EAAO,MAAA,EAAQ,QAAQ,aAAA,EAAe,IAAA,EACrD,SAAUA,EAAO,SAAS,QAAQ,CAAA,EAEpC,CACE,MAAO,gBACP,KAAMC,EAACC,EAAA,CAAK,KAAK,oBAAoB,UAAU,SAAS,EACxD,QAAS,IAAMF,EAAO,MAAA,EAAQ,MAAA,EAAQ,aAAA,EAAe,IAAA,CAAI,EAE3D,CACE,MAAO,uBACP,KAAMC,EAACC,EAAA,CAAK,KAAK,cAAc,UAAU,SAAS,EAClD,QAAS,IAAMF,EAAO,MAAA,EAAQ,QAAQ,iBAAA,EAAmB,IAAA,EACzD,SAAUA,EAAO,SAAS,YAAY,CAAA,EAExC,CACE,MAAO,iBACP,KAAMC,EAACC,EAAA,CAAK,KAAK,eAAe,UAAU,SAAS,EACnD,QAAS,IAAMF,EAAO,MAAA,EAAQ,MAAA,EAAQ,aAAA,EAAe,IAAA,CAAI,EAE3D,CACE,MAAO,WACP,KAAMC,EAACC,EAAA,CAAK,KAAK,cAAc,UAAU,SAAS,EAClD,QAAS,IAAMF,EAAO,MAAA,EAAQ,MAAA,EAAQ,KAAA,EAAO,IAAA,CAAI,EAEnD,CACE,MAAO,UACP,KAAMC,EAACC,EAAA,CAAK,KAAK,cAAc,UAAU,SAAS,EAClD,QAAS,IAAMF,EAAO,MAAA,EAAQ,MAAA,EAAQ,KAAA,EAAO,IAAA,CAAI,EAEnD,CACE,MAAO,wBACP,KAAMC,EAACC,EAAA,CAAK,KAAK,0BAA0B,UAAU,SAAS,EAC9D,QAAS,IAAMF,EAAO,MAAA,EAAQ,MAAA,EAAQ,WAAA,EAAa,cAAA,EAAgB,IAAA,CAAI,EAEzE,CACE,MAAO,cACP,KAAMC,EAACC,EAAA,CAAK,KAAK,gBAAgB,UAAU,SAAS,EACpD,QAAS,IAAMF,EAAO,SAAS,aAAA,CAAa,CAEhD"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as f,jsx as p}from"react/jsx-runtime";import{forwardRef as N,useEffect as C}from"react";import{CharacterCount as M}from"../../../../../../../node_modules/@tiptap/extension-character-count/dist/index.js";import{useEditor as A,EditorContent as L}from"../../../../../../../node_modules/@tiptap/react/dist/index.js";import{cn as n}from"../../../../../utils/cn.js";import"../../../../button/Button.js";import"../../../../buttonIcon/ButtonIcon.js";import"../../../../calendar/Calendar.js";import"../../../../calendar/model/utils.js";import"../../../../accordion/Accordion.js";import"react-dom";import"../../../../modal/ui/IframeModalContent.js";import"../../../../../../../node_modules/react-hot-toast/dist/index.js";import"../../../../table/ui/primitives/Primitives.js";import"../../../../carousel/ui/CarouselContent.js";import"../../../../slot/Slot.js";import"../../../uncontrolled/autocomplete/Autocomplete.js";import"../../../uncontrolled/checkbox/Checkbox.js";import"../../../uncontrolled/combobox/combobox.js";import"../../../uncontrolled/dayPicker/DayPicker.js";import"../../../uncontrolled/input/Input.js";import"../../../uncontrolled/inputOtp/InputOtpBase.js";import"../../../uncontrolled/maskInput/MaskInput.js";import"../../../uncontrolled/radio/RadioGroup.js";import"../../../uncontrolled/radio/ui/RadioItem.js";import"../../../uncontrolled/slider/SliderBase.js";import"../../../uncontrolled/switch/Switch.js";import"../../../uncontrolled/textarea/Textarea.js";import"../../../uncontrolled/uploader/UploaderBase.js";import"../../input/MaskInputControl.js";import"../../../../dropdownList/ui/dropdownItem/DropdownItem.js";import{MessageView as y}from"../../../ui/MessageView.js";import"../model/extensions.js";import{editorConfig as U}from"../model/config.js";import{Toolbar as k}from"./Toolbar.js";const H=Number.MAX_SAFE_INTEGER,
|
|
1
|
+
import{jsxs as f,jsx as p}from"react/jsx-runtime";import{forwardRef as N,useEffect as C}from"react";import{CharacterCount as M}from"../../../../../../../node_modules/@tiptap/extension-character-count/dist/index.js";import{useEditor as A,EditorContent as L}from"../../../../../../../node_modules/@tiptap/react/dist/index.js";import{cn as n}from"../../../../../utils/cn.js";import"../../../../button/Button.js";import"../../../../buttonIcon/ButtonIcon.js";import"../../../../calendar/Calendar.js";import"../../../../calendar/model/utils.js";import"../../../../accordion/Accordion.js";import"react-dom";import"../../../../modal/ui/IframeModalContent.js";import"../../../../../../../node_modules/react-hot-toast/dist/index.js";import"../../../../table/ui/primitives/Primitives.js";import"../../../../carousel/ui/CarouselContent.js";import"../../../../slot/Slot.js";import"../../../uncontrolled/autocomplete/Autocomplete.js";import"../../../uncontrolled/checkbox/Checkbox.js";import"../../../uncontrolled/combobox/combobox.js";import"../../../uncontrolled/dayPicker/DayPicker.js";import"../../../uncontrolled/input/Input.js";import"../../../uncontrolled/inputOtp/InputOtpBase.js";import"../../../uncontrolled/maskInput/MaskInput.js";import"../../../uncontrolled/radio/RadioGroup.js";import"../../../uncontrolled/radio/ui/RadioItem.js";import"../../../uncontrolled/slider/SliderBase.js";import"../../../uncontrolled/switch/Switch.js";import"../../../uncontrolled/textarea/Textarea.js";import"../../../uncontrolled/uploader/UploaderBase.js";import"../../../uncontrolled/inputCurrency/InputCurrency.js";import"../../input/MaskInputControl.js";import"../../../../dropdownList/ui/dropdownItem/DropdownItem.js";import{MessageView as y}from"../../../ui/MessageView.js";import"../model/extensions.js";import{editorConfig as U}from"../model/config.js";import{Toolbar as k}from"./Toolbar.js";const H=Number.MAX_SAFE_INTEGER,lt=N(({onChange:l,value:e="",label:u,limit:d,error:r,classes:t,editable:a,helperText:b,shouldRerenderOnTransaction:g=!0,externalHandlers:c,small:h,...T},E)=>{const{onUpdate:x}=c||{},o=A({extensions:[...U,M.configure({limit:d??H})],editable:a,content:e,onUpdate:m=>{const{editor:i}=m,w=i!=null&&i.getText()?i==null?void 0:i.getHTML():"";l(w),x&&x(m)},editorProps:{transformPastedText(m){return m.replace(/\xA0/g," ")},transformPastedHTML(m){return m.replace(/\xA0/g," ")},attributes:{spellcheck:"false",class:n("p-4 outline-none bg-color-blue-grey-100 min-h-[240px] max-h-[500px] customScrollbar-y overflow-y-auto break-keep",t==null?void 0:t.editor,{"max-h-[80px] min-h-full":h})}},shouldRerenderOnTransaction:g,...T});return C(()=>{o&&o.getHTML()!==e&&o.commands.setContent(e)},[o,e]),o?f("div",{className:n("flex w-full flex-col",t==null?void 0:t.root),children:[f("div",{className:n("relative flex w-full flex-col rounded-md border border-solid border-warm-grey-200",t==null?void 0:t.wrapper),children:[p(k,{editor:o}),!e&&p("p",{className:n("absolute left-4 top-16 z-10 text-color-disabled",t==null?void 0:t.label),children:u}),p(L,{ref:E,editor:o}),d&&f("p",{className:"absolute bottom-4 right-4 text-color-disabled",children:[o.storage.characterCount.characters()," / ",d," символов"]})]}),p(y,{className:t==null?void 0:t.message,intent:r!=null&&r.message?"error":"simple",text:(r==null?void 0:r.message)||b,disabled:!a})]}):null});export{lt as Editor};
|
|
2
2
|
//# sourceMappingURL=Editor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Editor.js","sources":["../../../../../../../../lib/shared/ui/formElements/controlled/editor/ui/Editor.tsx"],"sourcesContent":["import { forwardRef, type ReactElement, useEffect } from 'react'\nimport { type FieldError } from 'react-hook-form'\nimport CharacterCount from '@tiptap/extension-character-count'\nimport { EditorContent, type EditorEvents, useEditor, type UseEditorOptions } from '@tiptap/react'\nimport { MessageView } from '../../../ui'\nimport { type EditorControlClasses } from '../EditorControl'\nimport { editorConfig } from '../model'\nimport { Toolbar } from './Toolbar'\nimport { cn } from '$/shared/utils'\ntype ExternalHandlers = {\n onUpdate?: (editor: EditorEvents['update']) => void\n}\n\ninterface EditorProps extends Partial<UseEditorOptions> {\n onChange: (value: string) => void\n value: string\n error?: FieldError\n classes?: EditorControlClasses\n externalHandlers?: ExternalHandlers\n label?: string\n helperText?: string | ReactElement\n /**\n * Лимит символов\n */\n limit?: number\n /**\n * Сделать текстовый редактор маленьким\n */\n small?: boolean\n}\n\ntype EditorRef = React.ElementRef<typeof EditorContent>\n\nconst DEFAULT_LIMIT = Number.MAX_SAFE_INTEGER\n\nexport const Editor = forwardRef<EditorRef, EditorProps>(\n (\n {\n onChange,\n value = '',\n label,\n limit,\n error,\n classes,\n editable,\n helperText,\n shouldRerenderOnTransaction = true,\n externalHandlers,\n small,\n ...props\n },\n ref\n ) => {\n const { onUpdate: externalOnUpdate } = externalHandlers || {}\n\n const editor = useEditor({\n extensions: [\n ...editorConfig,\n CharacterCount.configure({\n limit: limit ?? DEFAULT_LIMIT\n })\n ],\n editable: editable,\n content: value,\n onUpdate: (props) => {\n const { editor } = props\n const content = editor?.getText() ? editor?.getHTML() : ''\n onChange(content)\n\n if (externalOnUpdate) {\n externalOnUpdate(props)\n }\n },\n editorProps: {\n transformPastedText(text) {\n return text.replace(/\\xA0/g, ' ')\n },\n transformPastedHTML(html) {\n return html.replace(/\\xA0/g, ' ')\n },\n attributes: {\n spellcheck: 'false',\n class: cn(\n 'p-4 outline-none bg-color-blue-grey-100 min-h-[240px] max-h-[500px] customScrollbar-y overflow-y-auto break-keep',\n classes?.editor,\n { 'max-h-[80px] min-h-full': small }\n )\n }\n },\n shouldRerenderOnTransaction,\n ...props\n })\n\n useEffect(() => {\n if (editor && editor.getHTML() !== value) {\n editor.commands.setContent(value)\n }\n }, [editor, value])\n\n if (!editor) {\n return null\n }\n\n return (\n <div className={cn('flex w-full flex-col', classes?.root)}>\n <div\n className={cn('relative flex w-full flex-col rounded-md border border-solid border-warm-grey-200', classes?.wrapper)}\n >\n <Toolbar editor={editor} />\n {!value && <p className={cn('absolute left-4 top-16 z-10 text-color-disabled', classes?.label)}>{label}</p>}\n <EditorContent ref={ref} editor={editor} />\n {limit && (\n <p className='absolute bottom-4 right-4 text-color-disabled'>\n {editor.storage.characterCount.characters()} / {limit} символов\n </p>\n )}\n </div>\n\n <MessageView\n className={classes?.message}\n intent={error?.message ? 'error' : 'simple'}\n text={error?.message || helperText}\n disabled={!editable}\n />\n </div>\n )\n }\n)\n"],"names":["DEFAULT_LIMIT","Editor","forwardRef","onChange","value","label","limit","error","classes","editable","helperText","shouldRerenderOnTransaction","externalHandlers","small","props","ref","externalOnUpdate","editor","useEditor","editorConfig","CharacterCount","content","text","html","cn","useEffect","jsxs","jsx","Toolbar","EditorContent","MessageView"],"mappings":"
|
|
1
|
+
{"version":3,"file":"Editor.js","sources":["../../../../../../../../lib/shared/ui/formElements/controlled/editor/ui/Editor.tsx"],"sourcesContent":["import { forwardRef, type ReactElement, useEffect } from 'react'\nimport { type FieldError } from 'react-hook-form'\nimport CharacterCount from '@tiptap/extension-character-count'\nimport { EditorContent, type EditorEvents, useEditor, type UseEditorOptions } from '@tiptap/react'\nimport { MessageView } from '../../../ui'\nimport { type EditorControlClasses } from '../EditorControl'\nimport { editorConfig } from '../model'\nimport { Toolbar } from './Toolbar'\nimport { cn } from '$/shared/utils'\ntype ExternalHandlers = {\n onUpdate?: (editor: EditorEvents['update']) => void\n}\n\ninterface EditorProps extends Partial<UseEditorOptions> {\n onChange: (value: string) => void\n value: string\n error?: FieldError\n classes?: EditorControlClasses\n externalHandlers?: ExternalHandlers\n label?: string\n helperText?: string | ReactElement\n /**\n * Лимит символов\n */\n limit?: number\n /**\n * Сделать текстовый редактор маленьким\n */\n small?: boolean\n}\n\ntype EditorRef = React.ElementRef<typeof EditorContent>\n\nconst DEFAULT_LIMIT = Number.MAX_SAFE_INTEGER\n\nexport const Editor = forwardRef<EditorRef, EditorProps>(\n (\n {\n onChange,\n value = '',\n label,\n limit,\n error,\n classes,\n editable,\n helperText,\n shouldRerenderOnTransaction = true,\n externalHandlers,\n small,\n ...props\n },\n ref\n ) => {\n const { onUpdate: externalOnUpdate } = externalHandlers || {}\n\n const editor = useEditor({\n extensions: [\n ...editorConfig,\n CharacterCount.configure({\n limit: limit ?? DEFAULT_LIMIT\n })\n ],\n editable: editable,\n content: value,\n onUpdate: (props) => {\n const { editor } = props\n const content = editor?.getText() ? editor?.getHTML() : ''\n onChange(content)\n\n if (externalOnUpdate) {\n externalOnUpdate(props)\n }\n },\n editorProps: {\n transformPastedText(text) {\n return text.replace(/\\xA0/g, ' ')\n },\n transformPastedHTML(html) {\n return html.replace(/\\xA0/g, ' ')\n },\n attributes: {\n spellcheck: 'false',\n class: cn(\n 'p-4 outline-none bg-color-blue-grey-100 min-h-[240px] max-h-[500px] customScrollbar-y overflow-y-auto break-keep',\n classes?.editor,\n { 'max-h-[80px] min-h-full': small }\n )\n }\n },\n shouldRerenderOnTransaction,\n ...props\n })\n\n useEffect(() => {\n if (editor && editor.getHTML() !== value) {\n editor.commands.setContent(value)\n }\n }, [editor, value])\n\n if (!editor) {\n return null\n }\n\n return (\n <div className={cn('flex w-full flex-col', classes?.root)}>\n <div\n className={cn('relative flex w-full flex-col rounded-md border border-solid border-warm-grey-200', classes?.wrapper)}\n >\n <Toolbar editor={editor} />\n {!value && <p className={cn('absolute left-4 top-16 z-10 text-color-disabled', classes?.label)}>{label}</p>}\n <EditorContent ref={ref} editor={editor} />\n {limit && (\n <p className='absolute bottom-4 right-4 text-color-disabled'>\n {editor.storage.characterCount.characters()} / {limit} символов\n </p>\n )}\n </div>\n\n <MessageView\n className={classes?.message}\n intent={error?.message ? 'error' : 'simple'}\n text={error?.message || helperText}\n disabled={!editable}\n />\n </div>\n )\n }\n)\n"],"names":["DEFAULT_LIMIT","Editor","forwardRef","onChange","value","label","limit","error","classes","editable","helperText","shouldRerenderOnTransaction","externalHandlers","small","props","ref","externalOnUpdate","editor","useEditor","editorConfig","CharacterCount","content","text","html","cn","useEffect","jsxs","jsx","Toolbar","EditorContent","MessageView"],"mappings":"q1DAiCA,MAAMA,EAAgB,OAAO,iBAEhBC,GAASC,EACpB,CACE,CACE,SAAAC,EACA,MAAAC,EAAQ,GACR,MAAAC,EACA,MAAAC,EACA,MAAAC,EACA,QAAAC,EACA,SAAAC,EACA,WAAAC,EACA,4BAAAC,EAA8B,GAC9B,iBAAAC,EACA,MAAAC,EACA,GAAGC,CAAA,EAELC,IACG,CACH,KAAM,CAAE,SAAUC,CAAA,EAAqBJ,GAAoB,CAAA,EAErDK,EAASC,EAAU,CACvB,WAAY,CACV,GAAGC,EACHC,EAAe,UAAU,CACvB,MAAOd,GAASN,CAAA,CACjB,CAAA,EAEH,SAAAS,EACA,QAASL,EACT,SAAWU,GAAU,CACnB,KAAM,CAAE,OAAAG,CAAAA,EAAWH,EACbO,EAAUJ,GAAAA,MAAAA,EAAQ,UAAYA,GAAAA,YAAAA,EAAQ,UAAY,GACxDd,EAASkB,CAAO,EAEZL,GACFA,EAAiBF,CAAK,CAE1B,EACA,YAAa,CACX,oBAAoBQ,EAAM,CACxB,OAAOA,EAAK,QAAQ,QAAS,GAAG,CAClC,EACA,oBAAoBC,EAAM,CACxB,OAAOA,EAAK,QAAQ,QAAS,GAAG,CAClC,EACA,WAAY,CACV,WAAY,QACZ,MAAOC,EACL,mHACAhB,GAAA,YAAAA,EAAS,OACT,CAAE,0BAA2BK,CAAA,CAAM,CACrC,CACF,EAEF,4BAAAF,EACA,GAAGG,CAAA,CACJ,EAQD,OANAW,EAAU,IAAM,CACVR,GAAUA,EAAO,QAAA,IAAcb,GACjCa,EAAO,SAAS,WAAWb,CAAK,CAEpC,EAAG,CAACa,EAAQb,CAAK,CAAC,EAEba,IAKF,MAAA,CAAI,UAAWO,EAAG,uBAAwBhB,GAAA,YAAAA,EAAS,IAAI,EACtD,SAAA,CAAAkB,EAAC,MAAA,CACC,UAAWF,EAAG,oFAAqFhB,GAAA,YAAAA,EAAS,OAAO,EAEnH,SAAA,CAAAmB,EAACC,GAAQ,OAAAX,EAAgB,EACxB,CAACb,GAASuB,EAAC,IAAA,CAAE,UAAWH,EAAG,kDAAmDhB,GAAA,YAAAA,EAAS,KAAK,EAAI,SAAAH,CAAA,CAAM,EACvGsB,EAACE,EAAA,CAAc,IAAAd,EAAU,OAAAE,CAAA,CAAgB,EACxCX,GACCoB,EAAC,IAAA,CAAE,UAAU,gDACV,SAAA,CAAAT,EAAO,QAAQ,eAAe,WAAA,EAAa,MAAIX,EAAM,WAAA,CAAA,CACxD,CAAA,CAAA,CAAA,EAIJqB,EAACG,EAAA,CACC,UAAWtB,GAAA,YAAAA,EAAS,QACpB,OAAQD,GAAA,MAAAA,EAAO,QAAU,QAAU,SACnC,MAAMA,GAAA,YAAAA,EAAO,UAAWG,EACxB,SAAU,CAACD,CAAA,CAAA,CACb,EACF,EAxBO,IA0BX,CACF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as r}from"react/jsx-runtime";import"../../model/extensions.js";import"../../model/config.js";import{editorAllowedColors as e}from"../../model/helper.js";import{cn as i}from"../../../../../../utils/cn.js";import"../../../../../button/Button.js";import"../../../../../buttonIcon/ButtonIcon.js";import"../../../../../calendar/Calendar.js";import"../../../../../calendar/model/utils.js";import"../../../../../accordion/Accordion.js";import"react";import{Popover as m}from"../../../../../popover/Popover.js";import"react-dom";import"../../../../../modal/ui/IframeModalContent.js";import"../../../../../../../../node_modules/react-hot-toast/dist/index.js";import{Icon as p}from"../../../../../icon/Icon.js";import"../../../../../table/ui/primitives/Primitives.js";import"../../../../../carousel/ui/CarouselContent.js";import"../../../../../slot/Slot.js";import"../../../../uncontrolled/autocomplete/Autocomplete.js";import"../../../../uncontrolled/checkbox/Checkbox.js";import"../../../../uncontrolled/combobox/combobox.js";import"../../../../uncontrolled/dayPicker/DayPicker.js";import"../../../../uncontrolled/input/Input.js";import"../../../../uncontrolled/inputOtp/InputOtpBase.js";import"../../../../uncontrolled/maskInput/MaskInput.js";import"../../../../uncontrolled/radio/RadioGroup.js";import"../../../../uncontrolled/radio/ui/RadioItem.js";import"../../../../uncontrolled/slider/SliderBase.js";import"../../../../uncontrolled/switch/Switch.js";import"../../../../uncontrolled/textarea/Textarea.js";import"../../../../uncontrolled/uploader/UploaderBase.js";import"../Editor.js";import"../../../input/MaskInputControl.js";import"../../../../../dropdownList/ui/dropdownItem/DropdownItem.js";const
|
|
1
|
+
import{jsx as r}from"react/jsx-runtime";import"../../model/extensions.js";import"../../model/config.js";import{editorAllowedColors as e}from"../../model/helper.js";import{cn as i}from"../../../../../../utils/cn.js";import"../../../../../button/Button.js";import"../../../../../buttonIcon/ButtonIcon.js";import"../../../../../calendar/Calendar.js";import"../../../../../calendar/model/utils.js";import"../../../../../accordion/Accordion.js";import"react";import{Popover as m}from"../../../../../popover/Popover.js";import"react-dom";import"../../../../../modal/ui/IframeModalContent.js";import"../../../../../../../../node_modules/react-hot-toast/dist/index.js";import{Icon as p}from"../../../../../icon/Icon.js";import"../../../../../table/ui/primitives/Primitives.js";import"../../../../../carousel/ui/CarouselContent.js";import"../../../../../slot/Slot.js";import"../../../../uncontrolled/autocomplete/Autocomplete.js";import"../../../../uncontrolled/checkbox/Checkbox.js";import"../../../../uncontrolled/combobox/combobox.js";import"../../../../uncontrolled/dayPicker/DayPicker.js";import"../../../../uncontrolled/input/Input.js";import"../../../../uncontrolled/inputOtp/InputOtpBase.js";import"../../../../uncontrolled/maskInput/MaskInput.js";import"../../../../uncontrolled/radio/RadioGroup.js";import"../../../../uncontrolled/radio/ui/RadioItem.js";import"../../../../uncontrolled/slider/SliderBase.js";import"../../../../uncontrolled/switch/Switch.js";import"../../../../uncontrolled/textarea/Textarea.js";import"../../../../uncontrolled/uploader/UploaderBase.js";import"../../../../uncontrolled/inputCurrency/InputCurrency.js";import"../Editor.js";import"../../../input/MaskInputControl.js";import"../../../../../dropdownList/ui/dropdownItem/DropdownItem.js";const Q=({editor:t})=>r(m,{classes:{content:"w-full max-w-[500px] bg-color-blue-grey-200 border border-solid border-warm-grey-300",arrowIcon:"fill-dark-hover"},triggerElement:r("span",{title:"Добавить цвет текста",className:"flex size-7 cursor-pointer items-center justify-center rounded-sm text-color-secondary outline-none transition-colors hover:bg-color-primary-hover hover:text-color-white",children:r(p,{name:"editor/palette",className:"size-4"})}),children:r("div",{className:"grid grid-cols-6 gap-3",children:e.map(o=>r("button",{type:"button",style:{background:o},onClick:()=>t.chain().focus().setColor(o).run(),className:i("desk-body-regular-m size-6 cursor-pointer rounded-full border border-solid border-transparent text-left outline-none transition-transform hover:scale-105",{"border-warm-grey-300":o==="#FFFFFF"})},o))})});export{Q as SetColor};
|
|
2
2
|
//# sourceMappingURL=SetColor.js.map
|