@scbt-ecom/ui 0.113.1 → 0.115.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/_virtual/index.js +1 -1
- package/dist/_virtual/index2.js +1 -1
- package/dist/lib/exports/widget.js +1 -1
- package/dist/lib/next/utils/hideWidgetsWithQueryParams.js +1 -1
- package/dist/lib/next/utils/hideWidgetsWithQueryParams.js.map +1 -1
- package/dist/lib/next/utils/isEmptyWidgetList.js.map +1 -1
- package/dist/lib/next/utils/orderWidgetWithQueryParams.js +1 -1
- package/dist/lib/next/utils/orderWidgetWithQueryParams.js.map +1 -1
- package/dist/lib/shared/hooks/useClickOutside.js +1 -1
- package/dist/lib/shared/hooks/useClickOutside.js.map +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/carousel/model/helpers.js +1 -1
- package/dist/lib/shared/ui/carousel/model/helpers.js.map +1 -1
- package/dist/lib/shared/ui/formElements/controlled/combobox/hooks/useComboboxControl.js +1 -1
- package/dist/lib/shared/ui/formElements/controlled/combobox/hooks/useComboboxControl.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/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/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/combobox/hooks/useCombobox.js +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/combobox/hooks/useCombobox.js.map +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/index.js +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/index.js.map +1 -1
- 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/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/modal/Modal.js +1 -1
- package/dist/lib/shared/ui/modal/Modal.js.map +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/slot/ui/SlotClone.js +1 -1
- package/dist/lib/shared/ui/slot/ui/SlotClone.js.map +1 -1
- package/dist/lib/shared/ui/table/Table.js +1 -1
- package/dist/lib/shared/ui/table/Table.js.map +1 -1
- package/dist/lib/shared/ui/table/model/TableUtils.js +1 -1
- package/dist/lib/shared/ui/table/model/TableUtils.js.map +1 -1
- package/dist/lib/shared/utils/cn.js +1 -1
- package/dist/lib/shared/utils/cn.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/currency.validators.js +1 -1
- package/dist/lib/shared/validation/base/currency.validators.js.map +1 -1
- 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/email.validators.js +1 -1
- package/dist/lib/shared/validation/base/email.validators.js.map +1 -1
- package/dist/lib/shared/validation/base/phone.validators.js +1 -1
- package/dist/lib/shared/validation/base/phone.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/shared/validation/base/url.validators.js +1 -1
- package/dist/lib/shared/validation/base/url.validators.js.map +1 -1
- package/dist/lib/widgets/banner/index.js +1 -1
- package/dist/lib/widgets/buttonWithHandlers/model/useButtonHandler.js +1 -1
- package/dist/lib/widgets/buttonWithHandlers/model/useButtonHandler.js.map +1 -1
- package/dist/lib/widgets/calculator/model/helpers.js +1 -1
- package/dist/lib/widgets/calculator/model/helpers.js.map +1 -1
- package/dist/lib/widgets/calculator/ui/calculatorFields/hooks/useAdditionalSlider.js +1 -1
- package/dist/lib/widgets/calculator/ui/calculatorFields/hooks/useAdditionalSlider.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/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/model/helpers.js +2 -2
- package/dist/lib/widgets/model/helpers.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/mobile/CategoriesMobile.js +1 -1
- package/dist/lib/widgets/seoHeader/ui/mobile/CategoriesMobile.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/model/utils.js +1 -1
- package/dist/lib/widgets/table/model/utils.js.map +1 -1
- package/dist/node_modules/@tanstack/query-core/build/modern/query.js +1 -1
- package/dist/node_modules/@tanstack/query-core/build/modern/query.js.map +1 -1
- package/dist/node_modules/@tanstack/query-core/build/modern/retryer.js +1 -1
- package/dist/node_modules/@tanstack/query-core/build/modern/retryer.js.map +1 -1
- package/dist/node_modules/@tanstack/query-core/build/modern/utils.js +1 -1
- package/dist/node_modules/@tanstack/query-core/build/modern/utils.js.map +1 -1
- package/dist/node_modules/@tanstack/react-query/build/modern/suspense.js +1 -1
- package/dist/node_modules/@tanstack/react-query/build/modern/suspense.js.map +1 -1
- package/dist/node_modules/classnames/index.js +1 -1
- package/dist/node_modules/prop-types/index.js +1 -1
- package/dist/node_modules/prop-types/index.js.map +1 -1
- package/dist/src/shared/utils/getDynamicSchema.js +1 -1
- package/dist/src/shared/utils/getDynamicSchema.js.map +1 -1
- package/dist/stats.html +1 -1
- package/dist/types/lib/next/utils/hideWidgetsWithQueryParams.d.ts +2 -2
- package/dist/types/lib/next/utils/isEmptyWidgetList.d.ts +1 -1
- package/dist/types/lib/next/utils/orderWidgetWithQueryParams.d.ts +7 -7
- package/dist/types/lib/shared/utils/cn.d.ts +2 -2
- package/package.json +2 -2
|
@@ -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":"4+CAIO,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{jsx as C}from"react/jsx-runtime";import{forwardRef as S,useState as q}from"react";import{useDebounceValue as D}from"../../../../hooks/useDebounce.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"../checkbox/Checkbox.js";import{Combobox as O}from"../combobox/combobox.js";import"../dayPicker/DayPicker.js";import"../input/Input.js";import"../inputOtp/InputOtpBase.js";import"../maskInput/MaskInput.js";import"../radio/RadioGroup.js";import"../radio/ui/RadioItem.js";import"../slider/SliderBase.js";import"../switch/Switch.js";import"../textarea/Textarea.js";import"../uploader/UploaderBase.js";import"../inputCurrency/InputCurrency.js";import"../../controlled/editor/ui/Editor.js";import"../../controlled/input/MaskInputControl.js";import"../../../dropdownList/ui/dropdownItem/DropdownItem.js";const
|
|
1
|
+
import{jsx as C}from"react/jsx-runtime";import{forwardRef as S,useState as q}from"react";import"../../../../../../node_modules/classnames/index.js";import{useDebounceValue as D}from"../../../../hooks/useDebounce.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"../checkbox/Checkbox.js";import{Combobox as O}from"../combobox/combobox.js";import"../dayPicker/DayPicker.js";import"../input/Input.js";import"../inputOtp/InputOtpBase.js";import"../maskInput/MaskInput.js";import"../radio/RadioGroup.js";import"../radio/ui/RadioItem.js";import"../slider/SliderBase.js";import"../switch/Switch.js";import"../textarea/Textarea.js";import"../uploader/UploaderBase.js";import"../inputCurrency/InputCurrency.js";import"../../controlled/editor/ui/Editor.js";import"../../controlled/input/MaskInputControl.js";import"../../../dropdownList/ui/dropdownItem/DropdownItem.js";const rt=S(({formatter:u,query:c,queryOptions:a,value:m,displayValue:o,limit:t=0,onChange:r,strategy:e="input-first",...f},b)=>{const[h,l]=q(m??""),n=e==="input-first"?m??"":h,d=e==="input-first"?r:l,p=D(n,100),g={enabled:t>0?p.length>=t:!0,...a},{data:s}=c(p,g),x=s?s.map(u):[];return C(O,{...f,ref:b,options:x,searchable:!0,filterDisabled:!0,inputValue:n,onInputChange:d,multiple:!1,displayValue:o,onChange:i=>{i&&r&&r(o?o(i):i.label)},empty:p.length<t?`Введите более ${t} символов для поиска`:void 0})});export{rt as AutocompleteBase};
|
|
2
2
|
//# sourceMappingURL=Autocomplete.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Autocomplete.js","sources":["../../../../../../../lib/shared/ui/formElements/uncontrolled/autocomplete/Autocomplete.tsx"],"sourcesContent":["import { forwardRef, useState } from 'react'\nimport { type UseQueryOptions, type UseQueryResult } from '@tanstack/react-query'\nimport type { AutocompleteItemOption } from './types'\nimport { useDebounceValue } from '$/shared/hooks'\nimport { Combobox, type ComboboxProps, type ComboboxValue } from '$/shared/ui'\n\nexport interface AutocompleteBaseProps<TData>\n extends Omit<\n ComboboxProps<false>,\n 'options' | 'inputValue' | 'onInputChange' | 'searchable' | 'multiple' | 'value' | 'onChange'\n > {\n /**\n * Функция для запроса основанная на [@tanstack/query](https://tanstack.com/query/latest/docs/framework/react/overview)\n */\n query: (query: string, options?: Partial<UseQueryOptions<TData[]>>) => UseQueryResult<TData[]>\n /**\n * Параметры запроса\n */\n queryOptions?: Partial<UseQueryOptions<TData[]>>\n /**\n * Позволяет форматировать данные\n */\n formatter: (item: TData, index: number, array: TData[]) => AutocompleteItemOption<TData>\n /**\n * Значение инпута\n */\n value?: string\n /**\n * Handler инпута\n */\n onChange?: (value: string) => void\n /**\n * Стратегия управления полем\n * @variation `input-first` - источником правды является инпут\n * @variation `select-first` - источником правды является список\n * @default input-first\n */\n strategy?: 'input-first' | 'select-first'\n limit?: number\n}\n\nexport const AutocompleteBase = forwardRef(\n <TData,>(\n {\n formatter,\n query,\n queryOptions: initialQueryOptions,\n value,\n displayValue,\n limit = 0,\n onChange,\n strategy = 'input-first',\n ...props\n }: AutocompleteBaseProps<TData>,\n ref: React.ForwardedRef<HTMLInputElement>\n ) => {\n const [search, setSearch] = useState<string>(value ?? '')\n\n const inputValue = strategy === 'input-first' ? (value ?? '') : search\n const onInputChange = strategy === 'input-first' ? onChange : setSearch\n\n const debounceSearch = useDebounceValue(inputValue, 100)\n\n const queryOptions: Partial<UseQueryOptions<TData[]>> = {\n enabled: limit > 0 ? debounceSearch.length >= limit : true,\n ...initialQueryOptions\n }\n\n const { data } = query(debounceSearch, queryOptions)\n\n const options = data ? data.map(formatter) : []\n\n const onValueChange = (value: ComboboxValue<false>) => {\n if (!value) return\n\n if (onChange) onChange(displayValue ? displayValue(value) : value.label)\n }\n\n return (\n <Combobox\n {...props}\n ref={ref}\n options={options}\n searchable\n filterDisabled\n inputValue={inputValue}\n onInputChange={onInputChange}\n multiple={false}\n displayValue={displayValue}\n onChange={onValueChange}\n empty={debounceSearch.length < limit ? `Введите более ${limit} символов для поиска` : undefined}\n />\n )\n }\n) as <TData>(props: AutocompleteBaseProps<TData> & { ref: React.Ref<HTMLInputElement> }) => React.JSX.Element\n"],"names":["AutocompleteBase","forwardRef","formatter","query","initialQueryOptions","value","displayValue","limit","onChange","strategy","props","ref","search","setSearch","useState","inputValue","onInputChange","debounceSearch","useDebounceValue","queryOptions","data","options","jsx","Combobox"],"mappings":"
|
|
1
|
+
{"version":3,"file":"Autocomplete.js","sources":["../../../../../../../lib/shared/ui/formElements/uncontrolled/autocomplete/Autocomplete.tsx"],"sourcesContent":["import { forwardRef, useState } from 'react'\nimport { type UseQueryOptions, type UseQueryResult } from '@tanstack/react-query'\nimport type { AutocompleteItemOption } from './types'\nimport { useDebounceValue } from '$/shared/hooks'\nimport { Combobox, type ComboboxProps, type ComboboxValue } from '$/shared/ui'\n\nexport interface AutocompleteBaseProps<TData>\n extends Omit<\n ComboboxProps<false>,\n 'options' | 'inputValue' | 'onInputChange' | 'searchable' | 'multiple' | 'value' | 'onChange'\n > {\n /**\n * Функция для запроса основанная на [@tanstack/query](https://tanstack.com/query/latest/docs/framework/react/overview)\n */\n query: (query: string, options?: Partial<UseQueryOptions<TData[]>>) => UseQueryResult<TData[]>\n /**\n * Параметры запроса\n */\n queryOptions?: Partial<UseQueryOptions<TData[]>>\n /**\n * Позволяет форматировать данные\n */\n formatter: (item: TData, index: number, array: TData[]) => AutocompleteItemOption<TData>\n /**\n * Значение инпута\n */\n value?: string\n /**\n * Handler инпута\n */\n onChange?: (value: string) => void\n /**\n * Стратегия управления полем\n * @variation `input-first` - источником правды является инпут\n * @variation `select-first` - источником правды является список\n * @default input-first\n */\n strategy?: 'input-first' | 'select-first'\n limit?: number\n}\n\nexport const AutocompleteBase = forwardRef(\n <TData,>(\n {\n formatter,\n query,\n queryOptions: initialQueryOptions,\n value,\n displayValue,\n limit = 0,\n onChange,\n strategy = 'input-first',\n ...props\n }: AutocompleteBaseProps<TData>,\n ref: React.ForwardedRef<HTMLInputElement>\n ) => {\n const [search, setSearch] = useState<string>(value ?? '')\n\n const inputValue = strategy === 'input-first' ? (value ?? '') : search\n const onInputChange = strategy === 'input-first' ? onChange : setSearch\n\n const debounceSearch = useDebounceValue(inputValue, 100)\n\n const queryOptions: Partial<UseQueryOptions<TData[]>> = {\n enabled: limit > 0 ? debounceSearch.length >= limit : true,\n ...initialQueryOptions\n }\n\n const { data } = query(debounceSearch, queryOptions)\n\n const options = data ? data.map(formatter) : []\n\n const onValueChange = (value: ComboboxValue<false>) => {\n if (!value) return\n\n if (onChange) onChange(displayValue ? displayValue(value) : value.label)\n }\n\n return (\n <Combobox\n {...props}\n ref={ref}\n options={options}\n searchable\n filterDisabled\n inputValue={inputValue}\n onInputChange={onInputChange}\n multiple={false}\n displayValue={displayValue}\n onChange={onValueChange}\n empty={debounceSearch.length < limit ? `Введите более ${limit} символов для поиска` : undefined}\n />\n )\n }\n) as <TData>(props: AutocompleteBaseProps<TData> & { ref: React.Ref<HTMLInputElement> }) => React.JSX.Element\n"],"names":["AutocompleteBase","forwardRef","formatter","query","initialQueryOptions","value","displayValue","limit","onChange","strategy","props","ref","search","setSearch","useState","inputValue","onInputChange","debounceSearch","useDebounceValue","queryOptions","data","options","jsx","Combobox"],"mappings":"gwCAyCO,MAAMA,GAAmBC,EAC9B,CACE,CACE,UAAAC,EACA,MAAAC,EACA,aAAcC,EACd,MAAAC,EACA,aAAAC,EACA,MAAAC,EAAQ,EACR,SAAAC,EACA,SAAAC,EAAW,cACX,GAAGC,CAAA,EAELC,IACG,CACH,KAAM,CAACC,EAAQC,CAAS,EAAIC,EAAiBT,GAAS,EAAE,EAElDU,EAAaN,IAAa,cAAiBJ,GAAS,GAAMO,EAC1DI,EAAgBP,IAAa,cAAgBD,EAAWK,EAExDI,EAAiBC,EAAiBH,EAAY,GAAG,EAEjDI,EAAkD,CACtD,QAASZ,EAAQ,EAAIU,EAAe,QAAUV,EAAQ,GACtD,GAAGH,CAAA,EAGC,CAAE,KAAAgB,CAAA,EAASjB,EAAMc,EAAgBE,CAAY,EAE7CE,EAAUD,EAAOA,EAAK,IAAIlB,CAAS,EAAI,CAAA,EAQ7C,OACEoB,EAACC,EAAA,CACE,GAAGb,EACJ,IAAAC,EACA,QAAAU,EACA,WAAU,GACV,eAAc,GACd,WAAAN,EACA,cAAAC,EACA,SAAU,GACV,aAAAV,EACA,SAjBmBD,GAAgC,CAChDA,GAEDG,GAAUA,EAASF,EAAeA,EAAaD,CAAK,EAAIA,EAAM,KAAK,CACzE,EAcI,MAAOY,EAAe,OAASV,EAAQ,iBAAiBA,CAAK,uBAAyB,MAAA,CAAA,CAG5F,CACF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useState as j,useRef as H,useMemo as M}from"react";import{TypeGuards as U}from"../../../../../utils/typeGuards.js";const
|
|
1
|
+
import{useState as j,useRef as H,useMemo as M}from"react";import"../../../../../../../node_modules/classnames/index.js";import{TypeGuards as U}from"../../../../../utils/typeGuards.js";const J=R=>{const{multiple:S,defaultOpen:T,value:a,onChange:r,initialOptions:c,searchable:y,filterDisabled:D,displayValue:o,externalHandlers:V,externalInputValue:b,externalOnInputChange:s}=R,{changeHandler:l,inputChangeHandler:m}=V??{},[u,n]=j(""),[A,d]=j(T??!1),v=H(!1),G=M(()=>D||!u.length||!y?c:c.filter(e=>e.label.toLowerCase().includes(b?b.toLowerCase():u.toLowerCase())),[b,D,c,u,y]);return{open:A,setOpen:d,changeHandler:e=>{if(!v.current){if(v.current=!0,S){const t=a||[],f=t.some(i=>i.value===e.value);let p;f?p=t.filter(i=>i.value!==e.value):p=[...t,e],r==null||r(p),l==null||l(p);const L=t.map(i=>o?o(i):i.label).join(", ");n(L),s==null||s(L)}else{let t;(a==null?void 0:a.value)===e.value?t=null:t=e,r==null||r(t),l==null||l(t);const f=o&&t?o(t):t==null?void 0:t.label;n(f??""),s==null||s(f??""),d(!1)}setTimeout(()=>{v.current=!1},0)}},options:G,search:u,onInputChange:e=>{d(!0),n(e.target.value),m==null||m(e.target.value),s==null||s(e.target.value)},state:a,comboboxDisplayValue:e=>{if(e)return U.isArray(e)?e.map(t=>o?o(t):t.label).join(", "):o?o(e):e.label}}};export{J as useCombobox};
|
|
2
2
|
//# sourceMappingURL=useCombobox.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCombobox.js","sources":["../../../../../../../../lib/shared/ui/formElements/uncontrolled/combobox/hooks/useCombobox.ts"],"sourcesContent":["import { useMemo, useRef, useState } from 'react'\nimport type { ExternalHandlers } from '../combobox'\nimport { type ChangeHandler, type ComboboxValue } from '../model'\nimport type { ComboboxItemOption } from '../ui'\nimport { TypeGuards } from '$/shared/utils'\n\ntype UseComboboxOptions<Multi extends boolean> = {\n initialOptions: ComboboxItemOption[]\n searchable?: boolean\n multiple?: Multi\n value?: ComboboxValue<Multi>\n onChange?: ChangeHandler<Multi>\n displayValue?: (option: ComboboxItemOption) => string\n defaultOpen?: boolean\n externalHandlers?: ExternalHandlers<Multi>\n externalInputValue?: string\n externalOnInputChange?: (value: string) => void\n filterDisabled?: boolean\n}\n\nexport const useCombobox = <Multi extends boolean>(props: UseComboboxOptions<Multi>) => {\n const {\n multiple,\n defaultOpen,\n value,\n onChange,\n initialOptions,\n searchable,\n filterDisabled,\n displayValue,\n externalHandlers,\n externalInputValue,\n externalOnInputChange\n } = props\n const { changeHandler: externalChangeHandler, inputChangeHandler: externalInputChangeHandler } = externalHandlers ?? {}\n\n const [search, setSearch] = useState<string>('')\n const [open, setOpen] = useState<boolean>(defaultOpen ?? false)\n\n const isUpdatingRef = useRef<boolean>(false)\n\n const options = useMemo<ComboboxItemOption[]>(() => {\n if (filterDisabled) {\n return initialOptions\n }\n\n if (!search.length || !searchable) {\n return initialOptions\n }\n\n return initialOptions.filter((option) =>\n option.label.toLowerCase().includes(externalInputValue ? externalInputValue.toLowerCase() : search.toLowerCase())\n )\n }, [externalInputValue, filterDisabled, initialOptions, search, searchable])\n\n const onInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setOpen(true)\n\n setSearch(e.target.value)\n externalInputChangeHandler?.(e.target.value)\n externalOnInputChange?.(e.target.value)\n }\n\n const changeHandler = (newValue: ComboboxItemOption) => {\n if (isUpdatingRef.current) return\n\n isUpdatingRef.current = true\n\n if (multiple) {\n const prev = (value as ComboboxItemOption[]) || []\n const exists = prev.some((option) => option.value === newValue.value)\n\n let updatedValue: ComboboxItemOption[]\n\n if (exists) {\n updatedValue = prev.filter((option) => option.value !== newValue.value)\n } else {\n updatedValue = [...prev, newValue]\n }\n\n onChange?.(updatedValue as ComboboxValue<Multi>)\n externalChangeHandler?.(updatedValue as ComboboxValue<Multi>)\n\n const searchValue = prev.map((option) => (displayValue ? displayValue(option) : option.label)).join(', ')\n setSearch(searchValue)\n externalOnInputChange?.(searchValue)\n } else {\n let updated: ComboboxValue<Multi>\n\n if ((value as ComboboxItemOption)?.value === newValue.value) {\n updated = null as ComboboxValue<Multi>\n } else {\n updated = newValue as ComboboxValue<Multi>\n }\n\n onChange?.(updated)\n externalChangeHandler?.(updated)\n\n const label = displayValue && updated ? displayValue(updated as ComboboxItemOption) : (updated as ComboboxItemOption)?.label\n setSearch(label ?? '')\n externalOnInputChange?.(label ?? '')\n setOpen(false)\n }\n\n setTimeout(() => {\n isUpdatingRef.current = false\n }, 0)\n }\n\n const comboboxDisplayValue = (value: ComboboxValue<Multi>) => {\n if (!value) return\n\n if (TypeGuards.isArray(value)) {\n return value.map((item) => (displayValue ? displayValue(item) : item.label)).join(', ')\n }\n\n return displayValue ? displayValue(value) : value.label\n }\n\n return {\n open,\n setOpen,\n changeHandler,\n options,\n search,\n onInputChange,\n state: value,\n comboboxDisplayValue\n }\n}\n"],"names":["useCombobox","props","multiple","defaultOpen","value","onChange","initialOptions","searchable","filterDisabled","displayValue","externalHandlers","externalInputValue","externalOnInputChange","externalChangeHandler","externalInputChangeHandler","search","setSearch","useState","open","setOpen","isUpdatingRef","useRef","options","useMemo","option","newValue","prev","exists","updatedValue","searchValue","updated","label","TypeGuards","item"],"mappings":"
|
|
1
|
+
{"version":3,"file":"useCombobox.js","sources":["../../../../../../../../lib/shared/ui/formElements/uncontrolled/combobox/hooks/useCombobox.ts"],"sourcesContent":["import { useMemo, useRef, useState } from 'react'\nimport type { ExternalHandlers } from '../combobox'\nimport { type ChangeHandler, type ComboboxValue } from '../model'\nimport type { ComboboxItemOption } from '../ui'\nimport { TypeGuards } from '$/shared/utils'\n\ntype UseComboboxOptions<Multi extends boolean> = {\n initialOptions: ComboboxItemOption[]\n searchable?: boolean\n multiple?: Multi\n value?: ComboboxValue<Multi>\n onChange?: ChangeHandler<Multi>\n displayValue?: (option: ComboboxItemOption) => string\n defaultOpen?: boolean\n externalHandlers?: ExternalHandlers<Multi>\n externalInputValue?: string\n externalOnInputChange?: (value: string) => void\n filterDisabled?: boolean\n}\n\nexport const useCombobox = <Multi extends boolean>(props: UseComboboxOptions<Multi>) => {\n const {\n multiple,\n defaultOpen,\n value,\n onChange,\n initialOptions,\n searchable,\n filterDisabled,\n displayValue,\n externalHandlers,\n externalInputValue,\n externalOnInputChange\n } = props\n const { changeHandler: externalChangeHandler, inputChangeHandler: externalInputChangeHandler } = externalHandlers ?? {}\n\n const [search, setSearch] = useState<string>('')\n const [open, setOpen] = useState<boolean>(defaultOpen ?? false)\n\n const isUpdatingRef = useRef<boolean>(false)\n\n const options = useMemo<ComboboxItemOption[]>(() => {\n if (filterDisabled) {\n return initialOptions\n }\n\n if (!search.length || !searchable) {\n return initialOptions\n }\n\n return initialOptions.filter((option) =>\n option.label.toLowerCase().includes(externalInputValue ? externalInputValue.toLowerCase() : search.toLowerCase())\n )\n }, [externalInputValue, filterDisabled, initialOptions, search, searchable])\n\n const onInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setOpen(true)\n\n setSearch(e.target.value)\n externalInputChangeHandler?.(e.target.value)\n externalOnInputChange?.(e.target.value)\n }\n\n const changeHandler = (newValue: ComboboxItemOption) => {\n if (isUpdatingRef.current) return\n\n isUpdatingRef.current = true\n\n if (multiple) {\n const prev = (value as ComboboxItemOption[]) || []\n const exists = prev.some((option) => option.value === newValue.value)\n\n let updatedValue: ComboboxItemOption[]\n\n if (exists) {\n updatedValue = prev.filter((option) => option.value !== newValue.value)\n } else {\n updatedValue = [...prev, newValue]\n }\n\n onChange?.(updatedValue as ComboboxValue<Multi>)\n externalChangeHandler?.(updatedValue as ComboboxValue<Multi>)\n\n const searchValue = prev.map((option) => (displayValue ? displayValue(option) : option.label)).join(', ')\n setSearch(searchValue)\n externalOnInputChange?.(searchValue)\n } else {\n let updated: ComboboxValue<Multi>\n\n if ((value as ComboboxItemOption)?.value === newValue.value) {\n updated = null as ComboboxValue<Multi>\n } else {\n updated = newValue as ComboboxValue<Multi>\n }\n\n onChange?.(updated)\n externalChangeHandler?.(updated)\n\n const label = displayValue && updated ? displayValue(updated as ComboboxItemOption) : (updated as ComboboxItemOption)?.label\n setSearch(label ?? '')\n externalOnInputChange?.(label ?? '')\n setOpen(false)\n }\n\n setTimeout(() => {\n isUpdatingRef.current = false\n }, 0)\n }\n\n const comboboxDisplayValue = (value: ComboboxValue<Multi>) => {\n if (!value) return\n\n if (TypeGuards.isArray(value)) {\n return value.map((item) => (displayValue ? displayValue(item) : item.label)).join(', ')\n }\n\n return displayValue ? displayValue(value) : value.label\n }\n\n return {\n open,\n setOpen,\n changeHandler,\n options,\n search,\n onInputChange,\n state: value,\n comboboxDisplayValue\n }\n}\n"],"names":["useCombobox","props","multiple","defaultOpen","value","onChange","initialOptions","searchable","filterDisabled","displayValue","externalHandlers","externalInputValue","externalOnInputChange","externalChangeHandler","externalInputChangeHandler","search","setSearch","useState","open","setOpen","isUpdatingRef","useRef","options","useMemo","option","newValue","prev","exists","updatedValue","searchValue","updated","label","TypeGuards","item"],"mappings":"wLAoBO,MAAMA,EAAsCC,GAAqC,CACtF,KAAM,CACJ,SAAAC,EACA,YAAAC,EACA,MAAAC,EACA,SAAAC,EACA,eAAAC,EACA,WAAAC,EACA,eAAAC,EACA,aAAAC,EACA,iBAAAC,EACA,mBAAAC,EACA,sBAAAC,CAAA,EACEX,EACE,CAAE,cAAeY,EAAuB,mBAAoBC,CAAA,EAA+BJ,GAAoB,CAAA,EAE/G,CAACK,EAAQC,CAAS,EAAIC,EAAiB,EAAE,EACzC,CAACC,EAAMC,CAAO,EAAIF,EAAkBd,GAAe,EAAK,EAExDiB,EAAgBC,EAAgB,EAAK,EAErCC,EAAUC,EAA8B,IACxCf,GAIA,CAACO,EAAO,QAAU,CAACR,EACdD,EAGFA,EAAe,OAAQkB,GAC5BA,EAAO,MAAM,YAAA,EAAc,SAASb,EAAqBA,EAAmB,cAAgBI,EAAO,aAAa,CAAA,EAEjH,CAACJ,EAAoBH,EAAgBF,EAAgBS,EAAQR,CAAU,CAAC,EAkE3E,MAAO,CACL,KAAAW,EACA,QAAAC,EACA,cA3DqBM,GAAiC,CACtD,GAAI,CAAAL,EAAc,QAIlB,IAFAA,EAAc,QAAU,GAEpBlB,EAAU,CACZ,MAAMwB,EAAQtB,GAAkC,CAAA,EAC1CuB,EAASD,EAAK,KAAMF,GAAWA,EAAO,QAAUC,EAAS,KAAK,EAEpE,IAAIG,EAEAD,EACFC,EAAeF,EAAK,OAAQF,GAAWA,EAAO,QAAUC,EAAS,KAAK,EAEtEG,EAAe,CAAC,GAAGF,EAAMD,CAAQ,EAGnCpB,GAAA,MAAAA,EAAWuB,GACXf,GAAA,MAAAA,EAAwBe,GAExB,MAAMC,EAAcH,EAAK,IAAKF,GAAYf,EAAeA,EAAae,CAAM,EAAIA,EAAO,KAAM,EAAE,KAAK,IAAI,EACxGR,EAAUa,CAAW,EACrBjB,GAAA,MAAAA,EAAwBiB,EAC1B,KAAO,CACL,IAAIC,GAEC1B,GAAA,YAAAA,EAA8B,SAAUqB,EAAS,MACpDK,EAAU,KAEVA,EAAUL,EAGZpB,GAAA,MAAAA,EAAWyB,GACXjB,GAAA,MAAAA,EAAwBiB,GAExB,MAAMC,EAAQtB,GAAgBqB,EAAUrB,EAAaqB,CAA6B,EAAKA,GAAA,YAAAA,EAAgC,MACvHd,EAAUe,GAAS,EAAE,EACrBnB,GAAA,MAAAA,EAAwBmB,GAAS,IACjCZ,EAAQ,EAAK,CACf,CAEA,WAAW,IAAM,CACfC,EAAc,QAAU,EAC1B,EAAG,CAAC,EACN,EAgBE,QAAAE,EACA,OAAAP,EACA,cAtEqB,GAA2C,CAChEI,EAAQ,EAAI,EAEZH,EAAU,EAAE,OAAO,KAAK,EACxBF,GAAA,MAAAA,EAA6B,EAAE,OAAO,OACtCF,GAAA,MAAAA,EAAwB,EAAE,OAAO,MACnC,EAiEE,MAAOR,EACP,qBAlB4BA,GAAgC,CAC5D,GAAKA,EAEL,OAAI4B,EAAW,QAAQ5B,CAAK,EACnBA,EAAM,IAAK6B,GAAUxB,EAAeA,EAAawB,CAAI,EAAIA,EAAK,KAAM,EAAE,KAAK,IAAI,EAGjFxB,EAAeA,EAAaL,CAAK,EAAIA,EAAM,KACpD,CAUE,CAEJ"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{InputBase as o}from"./input/Input.js";import{MaskInput as r}from"./maskInput/MaskInput.js";import{CheckboxBase as m}from"./checkbox/Checkbox.js";import{DayPickerBase as t}from"./dayPicker/DayPicker.js";import{SwitchBase as p}from"./switch/Switch.js";import{AutocompleteBase as e}from"./autocomplete/Autocomplete.js";import{SliderBase as i}from"./slider/SliderBase.js";import{RadioGroupBase as a}from"./radio/RadioGroup.js";import"./radio/ui/RadioItem.js";import"react/jsx-runtime";import"react";import{TextareaBase as f}from"./textarea/Textarea.js";import{UploaderBase as s}from"./uploader/UploaderBase.js";import{InputOtpBase as B}from"./inputOtp/InputOtpBase.js";import{Combobox as c}from"./combobox/combobox.js";const
|
|
1
|
+
import{InputBase as o}from"./input/Input.js";import{MaskInput as r}from"./maskInput/MaskInput.js";import{CheckboxBase as m}from"./checkbox/Checkbox.js";import{DayPickerBase as t}from"./dayPicker/DayPicker.js";import{SwitchBase as p}from"./switch/Switch.js";import{AutocompleteBase as e}from"./autocomplete/Autocomplete.js";import{SliderBase as i}from"./slider/SliderBase.js";import{RadioGroupBase as a}from"./radio/RadioGroup.js";import"./radio/ui/RadioItem.js";import"react/jsx-runtime";import"react";import"../../../../../node_modules/classnames/index.js";import{TextareaBase as f}from"./textarea/Textarea.js";import{UploaderBase as s}from"./uploader/UploaderBase.js";import{InputOtpBase as B}from"./inputOtp/InputOtpBase.js";import{Combobox as c}from"./combobox/combobox.js";const G={InputBase:o,SliderBase:i,AutocompleteBase:e,MaskInput:r,CheckboxBase:m,DayPickerBase:t,SwitchBase:p,RadioGroupBase:a,TextareaBase:f,InputOtpBase:B,UploaderBase:s,Combobox:c};export{G as Uncontrolled};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../../lib/shared/ui/formElements/uncontrolled/index.ts"],"sourcesContent":["import { InputBase } from './input'\nexport type { InputBaseProps } from './input'\nimport { MaskInput } from './maskInput'\nexport type { MaskInputProps } from './maskInput'\nimport { CheckboxBase } from './checkbox'\nexport type { CheckboxBaseProps, CheckedState } from './checkbox'\nimport { DayPickerBase } from './dayPicker'\nexport type { DayPickerProps } from './dayPicker'\nimport { SwitchBase } from './switch'\nexport type { SwitchBaseProps } from './switch'\nimport { AutocompleteBase } from './autocomplete'\nimport { SliderBase } from './slider'\nexport type { AutocompleteBaseProps, AutocompleteItemOption } from './autocomplete'\nimport { RadioGroupBase } from './radio'\nexport type { RadioGroupBaseProps, RadioOption } from './radio'\nimport { TextareaBase } from './textarea'\nimport { UploaderBase } from './uploader'\nexport type { TextareaBaseProps } from './textarea'\nimport { InputOtpBase } from './inputOtp'\nexport type { InputOtpBaseProps } from './inputOtp'\nimport { Combobox } from './combobox'\nexport type { ComboboxProps, ComboboxItemOption } from './combobox'\n\n/**\n * @example\n * ```ts\n * It's ok\n * import { InputBase } from '@scbt-ecom/ui'\n *\n * Not ok (tree shaking doesn't work)\n * import { Uncontrolled } from '@scbt-ecom/ui'\n * ```\n * @deprecated use Select instead\n */\nexport const Uncontrolled = {\n InputBase,\n SliderBase,\n AutocompleteBase,\n MaskInput,\n CheckboxBase,\n DayPickerBase,\n SwitchBase,\n RadioGroupBase,\n TextareaBase,\n InputOtpBase,\n UploaderBase,\n Combobox\n}\n"],"names":["Uncontrolled","InputBase","SliderBase","AutocompleteBase","MaskInput","CheckboxBase","DayPickerBase","SwitchBase","RadioGroupBase","TextareaBase","InputOtpBase","UploaderBase","Combobox"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../../lib/shared/ui/formElements/uncontrolled/index.ts"],"sourcesContent":["import { InputBase } from './input'\nexport type { InputBaseProps } from './input'\nimport { MaskInput } from './maskInput'\nexport type { MaskInputProps } from './maskInput'\nimport { CheckboxBase } from './checkbox'\nexport type { CheckboxBaseProps, CheckedState } from './checkbox'\nimport { DayPickerBase } from './dayPicker'\nexport type { DayPickerProps } from './dayPicker'\nimport { SwitchBase } from './switch'\nexport type { SwitchBaseProps } from './switch'\nimport { AutocompleteBase } from './autocomplete'\nimport { SliderBase } from './slider'\nexport type { AutocompleteBaseProps, AutocompleteItemOption } from './autocomplete'\nimport { RadioGroupBase } from './radio'\nexport type { RadioGroupBaseProps, RadioOption } from './radio'\nimport { TextareaBase } from './textarea'\nimport { UploaderBase } from './uploader'\nexport type { TextareaBaseProps } from './textarea'\nimport { InputOtpBase } from './inputOtp'\nexport type { InputOtpBaseProps } from './inputOtp'\nimport { Combobox } from './combobox'\nexport type { ComboboxProps, ComboboxItemOption } from './combobox'\n\n/**\n * @example\n * ```ts\n * It's ok\n * import { InputBase } from '@scbt-ecom/ui'\n *\n * Not ok (tree shaking doesn't work)\n * import { Uncontrolled } from '@scbt-ecom/ui'\n * ```\n * @deprecated use Select instead\n */\nexport const Uncontrolled = {\n InputBase,\n SliderBase,\n AutocompleteBase,\n MaskInput,\n CheckboxBase,\n DayPickerBase,\n SwitchBase,\n RadioGroupBase,\n TextareaBase,\n InputOtpBase,\n UploaderBase,\n Combobox\n}\n"],"names":["Uncontrolled","InputBase","SliderBase","AutocompleteBase","MaskInput","CheckboxBase","DayPickerBase","SwitchBase","RadioGroupBase","TextareaBase","InputOtpBase","UploaderBase","Combobox"],"mappings":"0wBAkCO,MAAMA,EAAe,CAC1B,UAAAC,EACA,WAAAC,EACA,iBAAAC,EACA,UAAAC,EACA,aAAAC,EACA,cAAAC,EACA,WAAAC,EACA,eAAAC,EACA,aAAAC,EACA,aAAAC,EACA,aAAAC,EACA,SAAAC,CACF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as f}from"react/jsx-runtime";import{forwardRef as a}from"react";import{useInputMask as p}from"../../../../../../node_modules/use-mask-input/dist/index.js";import{InputBase as n}from"../input/Input.js";import{defaultMask as u}from"./model/constants.js";import{defaultDefinitions as k}from"./model/mask/utils.js";import"../../../../../../node_modules/classnames/index.js";import{mergeRefs as d}from"../../../../utils/mergeRefs.js";const M=a(({mask:o,externalMaskDefinitions:r,options:t,...e},s)=>{const i=u.get(o),m=p({mask:i??o,options:{jitMasking:!1,definitions:{...k,...r},...t}});return f(n,{ref:d(m,s),...e})});M.displayName="MaskInput";export{M as MaskInput};
|
|
2
2
|
//# sourceMappingURL=MaskInput.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MaskInput.js","sources":["../../../../../../../lib/shared/ui/formElements/uncontrolled/maskInput/MaskInput.tsx"],"sourcesContent":["import { forwardRef } from 'react'\nimport { type Options, useInputMask } from 'use-mask-input'\nimport { InputBase, type InputBaseProps } from '../input'\nimport { defaultDefinitions, defaultMask, type Mask } from './model'\nimport type { NonNullable } from '$/shared/types'\nimport { mergeRefs } from '$/shared/utils'\n\ntype Validator = (char: string) => boolean\ntype Casing = 'upper' | 'lower' | 'title'\nexport type Definition = {\n validator: string | Validator\n casing?: Casing\n cardinality?: number\n placeholder?: string\n definitionSymbol?: string\n}\n\nexport type MaskInputProps = InputBaseProps & {\n /**\n * маска, по которой будет определяться валидация символов\n */\n mask: NonNullable<Mask>\n /**\n * дополнительные валидаторы спец символов в маске\n */\n externalMaskDefinitions?: Record<string, Definition>\n options?: Options\n}\n\n/**\n * Компонент маски очень умный, умеет обрабатывать специальные символы\n * в том порядке, который определён маской\n * @typeParam `#` позволяет вводить только числа (regexp: `/\\d/g`)\n * @typeParam `A` позволяет вводить любые буквы русского и английского алфавита (regexp: `/[A-Za-zА-Яа-я]/g`)\n * @typeParam `C` позволяет вводить любые буквы, которые определены для использования в гос номерах автомобилей (regexp: `/([АВЕКМНОРСТУХавекмнорстух])/`)\n */\nexport const MaskInput = forwardRef<HTMLInputElement, MaskInputProps>(\n ({ mask, externalMaskDefinitions, options, ...props }, ref) => {\n const regularMask = defaultMask.get(mask)\n\n const maskedRef = useInputMask({\n mask: regularMask ?? mask,\n options: {\n jitMasking: false,\n definitions: {\n ...defaultDefinitions,\n ...externalMaskDefinitions\n },\n ...options\n }\n })\n\n return <InputBase ref={mergeRefs(maskedRef, ref)} {...props} />\n }\n)\nMaskInput.displayName = 'MaskInput'\n"],"names":["MaskInput","forwardRef","mask","externalMaskDefinitions","options","props","ref","regularMask","defaultMask","maskedRef","useInputMask","defaultDefinitions","jsx","InputBase","mergeRefs"],"mappings":"
|
|
1
|
+
{"version":3,"file":"MaskInput.js","sources":["../../../../../../../lib/shared/ui/formElements/uncontrolled/maskInput/MaskInput.tsx"],"sourcesContent":["import { forwardRef } from 'react'\nimport { type Options, useInputMask } from 'use-mask-input'\nimport { InputBase, type InputBaseProps } from '../input'\nimport { defaultDefinitions, defaultMask, type Mask } from './model'\nimport type { NonNullable } from '$/shared/types'\nimport { mergeRefs } from '$/shared/utils'\n\ntype Validator = (char: string) => boolean\ntype Casing = 'upper' | 'lower' | 'title'\nexport type Definition = {\n validator: string | Validator\n casing?: Casing\n cardinality?: number\n placeholder?: string\n definitionSymbol?: string\n}\n\nexport type MaskInputProps = InputBaseProps & {\n /**\n * маска, по которой будет определяться валидация символов\n */\n mask: NonNullable<Mask>\n /**\n * дополнительные валидаторы спец символов в маске\n */\n externalMaskDefinitions?: Record<string, Definition>\n options?: Options\n}\n\n/**\n * Компонент маски очень умный, умеет обрабатывать специальные символы\n * в том порядке, который определён маской\n * @typeParam `#` позволяет вводить только числа (regexp: `/\\d/g`)\n * @typeParam `A` позволяет вводить любые буквы русского и английского алфавита (regexp: `/[A-Za-zА-Яа-я]/g`)\n * @typeParam `C` позволяет вводить любые буквы, которые определены для использования в гос номерах автомобилей (regexp: `/([АВЕКМНОРСТУХавекмнорстух])/`)\n */\nexport const MaskInput = forwardRef<HTMLInputElement, MaskInputProps>(\n ({ mask, externalMaskDefinitions, options, ...props }, ref) => {\n const regularMask = defaultMask.get(mask)\n\n const maskedRef = useInputMask({\n mask: regularMask ?? mask,\n options: {\n jitMasking: false,\n definitions: {\n ...defaultDefinitions,\n ...externalMaskDefinitions\n },\n ...options\n }\n })\n\n return <InputBase ref={mergeRefs(maskedRef, ref)} {...props} />\n }\n)\nMaskInput.displayName = 'MaskInput'\n"],"names":["MaskInput","forwardRef","mask","externalMaskDefinitions","options","props","ref","regularMask","defaultMask","maskedRef","useInputMask","defaultDefinitions","jsx","InputBase","mergeRefs"],"mappings":"wbAoCO,MAAMA,EAAYC,EACvB,CAAC,CAAE,KAAAC,EAAM,wBAAAC,EAAyB,QAAAC,EAAS,GAAGC,CAAA,EAASC,IAAQ,CAC7D,MAAMC,EAAcC,EAAY,IAAIN,CAAI,EAElCO,EAAYC,EAAa,CAC7B,KAAMH,GAAeL,EACrB,QAAS,CACP,WAAY,GACZ,YAAa,CACX,GAAGS,EACH,GAAGR,CAAA,EAEL,GAAGC,CAAA,CACL,CACD,EAED,OAAOQ,EAACC,GAAU,IAAKC,EAAUL,EAAWH,CAAG,EAAI,GAAGD,EAAO,CAC/D,CACF,EACAL,EAAU,YAAc"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useState as k}from"react";import{useDropzone as D}from"../../../../../../../../node_modules/react-dropzone/dist/es/index.js";import{FilesErrorCode as c,bytesToMegabytes as v}from"../helpers.js";import"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-dom";import"../../../../../modal/ui/IframeModalContent.js";import{Notification as u}from"../../../../../notification/Notification.js";import"../../../../../table/ui/primitives/Primitives.js";import"../../../../../carousel/ui/CarouselContent.js";import"../../../../../../../../node_modules/react-hot-toast/dist/index.js";import"../../../../../slot/Slot.js";import"../../../autocomplete/Autocomplete.js";import"../../../checkbox/Checkbox.js";import"../../../combobox/combobox.js";import"../../../dayPicker/DayPicker.js";import"../../../input/Input.js";import"../../../inputOtp/InputOtpBase.js";import"../../../maskInput/MaskInput.js";import"../../../radio/RadioGroup.js";import"../../../radio/ui/RadioItem.js";import"../../../slider/SliderBase.js";import"../../../switch/Switch.js";import"../../../textarea/Textarea.js";import"../../UploaderBase.js";import"../../../inputCurrency/InputCurrency.js";import"../../../../controlled/editor/ui/Editor.js";import"../../../../controlled/input/MaskInputControl.js";import"../../../../../dropdownList/ui/dropdownItem/DropdownItem.js";const
|
|
1
|
+
import{useState as k}from"react";import{useDropzone as D}from"../../../../../../../../node_modules/react-dropzone/dist/es/index.js";import{FilesErrorCode as c,bytesToMegabytes as v}from"../helpers.js";import"react/jsx-runtime";import"../../../../../../../../node_modules/classnames/index.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{Notification as u}from"../../../../../notification/Notification.js";import"../../../../../table/ui/primitives/Primitives.js";import"../../../../../carousel/ui/CarouselContent.js";import"../../../../../../../../node_modules/react-hot-toast/dist/index.js";import"../../../../../slot/Slot.js";import"../../../autocomplete/Autocomplete.js";import"../../../checkbox/Checkbox.js";import"../../../combobox/combobox.js";import"../../../dayPicker/DayPicker.js";import"../../../input/Input.js";import"../../../inputOtp/InputOtpBase.js";import"../../../maskInput/MaskInput.js";import"../../../radio/RadioGroup.js";import"../../../radio/ui/RadioItem.js";import"../../../slider/SliderBase.js";import"../../../switch/Switch.js";import"../../../textarea/Textarea.js";import"../../UploaderBase.js";import"../../../inputCurrency/InputCurrency.js";import"../../../../controlled/editor/ui/Editor.js";import"../../../../controlled/input/MaskInputControl.js";import"../../../../../dropdownList/ui/dropdownItem/DropdownItem.js";const io=({dropzoneOptions:t,controlledFiles:i=[],onChange:r,externalHandlers:o})=>{const[g,S]=k({}),F=m=>{const e=i==null?void 0:i.filter((s,p)=>p!==m);r&&r(e)},T=D({onDrop:(m,e)=>{var p,b;switch(m.forEach(f=>{const y=new FileReader;S(a=>({...a,[f.name]:"loading"})),y.onload=()=>{S(a=>({...a,[f.name]:"success"}))},y.readAsArrayBuffer(f)}),(b=(p=e[0])==null?void 0:p.errors[0])==null?void 0:b.code){case c.FileInvalidType:u({intent:"error",text:"Неверный формат файла. Загрузите в формате jpg/png/pdf"});break;case c.FileTooLarge:u({intent:"error",text:`Файл слишком большой. Максимальный размер ${t.maxSize?v(t.maxSize):0} МБ`});break;case c.TooManyFiles:u({intent:"error",text:`Вы загрузили слишком много файлов. Максимальное количество ${t.maxFiles}`});break}const s=[...i,...m];r&&r(s),o!=null&&o.onChange&&(o==null||o.onChange(s))},...t});return{filesStatus:g,removeFile:F,dropzoneState:T}};export{io as useUploader};
|
|
2
2
|
//# sourceMappingURL=useUploader.js.map
|
package/dist/lib/shared/ui/formElements/uncontrolled/uploader/model/hooks/useUploader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useUploader.js","sources":["../../../../../../../../../lib/shared/ui/formElements/uncontrolled/uploader/model/hooks/useUploader.tsx"],"sourcesContent":["import { useState } from 'react'\nimport { type DropzoneOptions, type FileRejection, useDropzone } from 'react-dropzone'\nimport { type ExternalHandlers } from '../../UploaderBase'\nimport { bytesToMegabytes, FilesErrorCode } from '../helpers'\nimport { Notification } from '$/shared/ui/'\n\nexport type TUseUploader = {\n controlledFiles?: File[]\n dropzoneOptions: DropzoneOptions\n onChange?: (files: File[]) => void\n externalHandlers?: ExternalHandlers\n}\n\nexport const useUploader = ({ dropzoneOptions, controlledFiles = [], onChange, externalHandlers }: TUseUploader) => {\n const [filesStatus, setFilesStatus] = useState<Record<string, 'loading' | 'success' | 'error'>>({})\n\n const removeFile = (index: number) => {\n const updatedFiles = controlledFiles?.filter((_, idx) => idx !== index)\n if (onChange) onChange(updatedFiles)\n }\n\n const onDrop = (acceptedFiles: File[], rejectedFiles: FileRejection[]) => {\n acceptedFiles.forEach((file) => {\n const reader = new FileReader()\n setFilesStatus((prev) => ({ ...prev, [file.name]: 'loading' }))\n\n reader.onload = () => {\n setFilesStatus((prev) => ({ ...prev, [file.name]: 'success' }))\n }\n\n reader.readAsArrayBuffer(file)\n })\n\n switch (rejectedFiles[0]?.errors[0]?.code) {\n case FilesErrorCode.FileInvalidType:\n Notification({\n intent: 'error',\n text: 'Неверный формат файла. Загрузите в формате jpg/png/pdf'\n })\n break\n case FilesErrorCode.FileTooLarge:\n Notification({\n intent: 'error',\n text: `Файл слишком большой. Максимальный размер ${dropzoneOptions.maxSize ? bytesToMegabytes(dropzoneOptions.maxSize) : 0} МБ`\n })\n break\n case FilesErrorCode.TooManyFiles:\n Notification({\n intent: 'error',\n text: `Вы загрузили слишком много файлов. Максимальное количество ${dropzoneOptions.maxFiles}`\n })\n break\n default:\n break\n }\n\n const updatedFiles = [...controlledFiles, ...acceptedFiles]\n\n if (onChange) onChange(updatedFiles)\n if (externalHandlers?.onChange) externalHandlers?.onChange(updatedFiles)\n }\n\n const dropzoneState = useDropzone({\n onDrop,\n ...dropzoneOptions\n })\n\n return { filesStatus, removeFile, dropzoneState }\n}\n"],"names":["useUploader","dropzoneOptions","controlledFiles","onChange","externalHandlers","filesStatus","setFilesStatus","useState","removeFile","index","updatedFiles","_","idx","dropzoneState","useDropzone","acceptedFiles","rejectedFiles","file","reader","prev","_b","_a","FilesErrorCode","Notification","bytesToMegabytes"],"mappings":"
|
|
1
|
+
{"version":3,"file":"useUploader.js","sources":["../../../../../../../../../lib/shared/ui/formElements/uncontrolled/uploader/model/hooks/useUploader.tsx"],"sourcesContent":["import { useState } from 'react'\nimport { type DropzoneOptions, type FileRejection, useDropzone } from 'react-dropzone'\nimport { type ExternalHandlers } from '../../UploaderBase'\nimport { bytesToMegabytes, FilesErrorCode } from '../helpers'\nimport { Notification } from '$/shared/ui/'\n\nexport type TUseUploader = {\n controlledFiles?: File[]\n dropzoneOptions: DropzoneOptions\n onChange?: (files: File[]) => void\n externalHandlers?: ExternalHandlers\n}\n\nexport const useUploader = ({ dropzoneOptions, controlledFiles = [], onChange, externalHandlers }: TUseUploader) => {\n const [filesStatus, setFilesStatus] = useState<Record<string, 'loading' | 'success' | 'error'>>({})\n\n const removeFile = (index: number) => {\n const updatedFiles = controlledFiles?.filter((_, idx) => idx !== index)\n if (onChange) onChange(updatedFiles)\n }\n\n const onDrop = (acceptedFiles: File[], rejectedFiles: FileRejection[]) => {\n acceptedFiles.forEach((file) => {\n const reader = new FileReader()\n setFilesStatus((prev) => ({ ...prev, [file.name]: 'loading' }))\n\n reader.onload = () => {\n setFilesStatus((prev) => ({ ...prev, [file.name]: 'success' }))\n }\n\n reader.readAsArrayBuffer(file)\n })\n\n switch (rejectedFiles[0]?.errors[0]?.code) {\n case FilesErrorCode.FileInvalidType:\n Notification({\n intent: 'error',\n text: 'Неверный формат файла. Загрузите в формате jpg/png/pdf'\n })\n break\n case FilesErrorCode.FileTooLarge:\n Notification({\n intent: 'error',\n text: `Файл слишком большой. Максимальный размер ${dropzoneOptions.maxSize ? bytesToMegabytes(dropzoneOptions.maxSize) : 0} МБ`\n })\n break\n case FilesErrorCode.TooManyFiles:\n Notification({\n intent: 'error',\n text: `Вы загрузили слишком много файлов. Максимальное количество ${dropzoneOptions.maxFiles}`\n })\n break\n default:\n break\n }\n\n const updatedFiles = [...controlledFiles, ...acceptedFiles]\n\n if (onChange) onChange(updatedFiles)\n if (externalHandlers?.onChange) externalHandlers?.onChange(updatedFiles)\n }\n\n const dropzoneState = useDropzone({\n onDrop,\n ...dropzoneOptions\n })\n\n return { filesStatus, removeFile, dropzoneState }\n}\n"],"names":["useUploader","dropzoneOptions","controlledFiles","onChange","externalHandlers","filesStatus","setFilesStatus","useState","removeFile","index","updatedFiles","_","idx","dropzoneState","useDropzone","acceptedFiles","rejectedFiles","file","reader","prev","_b","_a","FilesErrorCode","Notification","bytesToMegabytes"],"mappings":"kkDAaO,MAAMA,GAAc,CAAC,CAAE,gBAAAC,EAAiB,gBAAAC,EAAkB,CAAA,EAAI,SAAAC,EAAU,iBAAAC,KAAqC,CAClH,KAAM,CAACC,EAAaC,CAAc,EAAIC,EAA0D,CAAA,CAAE,EAE5FC,EAAcC,GAAkB,CACpC,MAAMC,EAAeR,GAAA,YAAAA,EAAiB,OAAO,CAACS,EAAGC,IAAQA,IAAQH,GAC7DN,KAAmBO,CAAY,CACrC,EA2CMG,EAAgBC,EAAY,CAChC,OA1Ca,CAACC,EAAuBC,IAAmC,SAYxE,OAXAD,EAAc,QAASE,GAAS,CAC9B,MAAMC,EAAS,IAAI,WACnBZ,EAAgBa,IAAU,CAAE,GAAGA,EAAM,CAACF,EAAK,IAAI,EAAG,SAAA,EAAY,EAE9DC,EAAO,OAAS,IAAM,CACpBZ,EAAgBa,IAAU,CAAE,GAAGA,EAAM,CAACF,EAAK,IAAI,EAAG,SAAA,EAAY,CAChE,EAEAC,EAAO,kBAAkBD,CAAI,CAC/B,CAAC,GAEOG,GAAAC,EAAAL,EAAc,CAAC,IAAf,YAAAK,EAAkB,OAAO,KAAzB,YAAAD,EAA6B,KAAA,CACnC,KAAKE,EAAe,gBAClBC,EAAa,CACX,OAAQ,QACR,KAAM,wDAAA,CACP,EACD,MACF,KAAKD,EAAe,aAClBC,EAAa,CACX,OAAQ,QACR,KAAM,6CAA6CtB,EAAgB,QAAUuB,EAAiBvB,EAAgB,OAAO,EAAI,CAAC,KAAA,CAC3H,EACD,MACF,KAAKqB,EAAe,aAClBC,EAAa,CACX,OAAQ,QACR,KAAM,8DAA8DtB,EAAgB,QAAQ,EAAA,CAC7F,EACD,KAEA,CAGJ,MAAMS,EAAe,CAAC,GAAGR,EAAiB,GAAGa,CAAa,EAEtDZ,KAAmBO,CAAY,EAC/BN,GAAA,MAAAA,EAAkB,WAAUA,GAAA,MAAAA,EAAkB,SAASM,GAC7D,EAIE,GAAGT,CAAA,CACJ,EAED,MAAO,CAAE,YAAAI,EAAa,WAAAG,EAAY,cAAAK,CAAA,CACpC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as r,jsxs as h,Fragment as b}from"react/jsx-runtime";import{useEffect as l,useRef as g}from"react";import{createPortal as p}from"react-dom";import{modalOverlayAnimation as c,modalContentAnimation as k}from"./model/helpers.js";import{IframeModalContent as N}from"./ui/IframeModalContent.js";import{ModalHeader as j}from"./ui/ModalHeader.js";import{cn as m}from"../../utils/cn.js";import{AnimatePresence as A}from"../../../../node_modules/framer-motion/dist/es/components/AnimatePresence/index.js";import{motion as a}from"../../../../node_modules/framer-motion/dist/es/render/components/motion/proxy.js";const F=({title:u,children:i,isModalOpen:e,isPortal:d=!0,portalContainer:y=(w=>(w=globalThis==null?void 0:globalThis.document)==null?void 0:w.body)(),closeModal:n,classes:o,iframe:v})=>{l(()=>(e&&(document.body.style.overflow="hidden"),()=>{document.body.style.overflow="visible"}),[e]);const x=g(null),f=r(A,{children:e&&r(a.div,{ref:t=>t==null?void 0:t.focus(),tabIndex:-1,onMouseDown:n,className:m("fixed inset-0 flex h-screen w-screen items-center justify-center bg-color-overlay",{"z-1000":!d},o==null?void 0:o.overlay),onKeyDown:t=>{t.key==="Escape"&&n()},"data-test-id":"modal-overlay",...c,children:h(a.div,{onClick:t=>t.stopPropagation(),onMouseDown:t=>t.stopPropagation(),className:m("w-full max-w-[600px] rounded-md bg-color-white px-4 py-6 shadow-sm desktop:px-6 desktop:py-8",o==null?void 0:o.modal),"data-test-id":"modal",...k,children:[r(j,{title:u,closeModal:n,classes:o==null?void 0:o.modalHeader}),v?r(N,{ref:x,className:m("mt-4",o==null?void 0:o.content),children:t=>p(i,t)}):r("div",{className:m("mt-4",o==null?void 0:o.content),children:i})]})})});return r(b,{children:d?p(f,y):f})};export{F as Modal};
|
|
2
2
|
//# sourceMappingURL=Modal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Modal.js","sources":["../../../../../lib/shared/ui/modal/Modal.tsx"],"sourcesContent":["'use client'\n\nimport * as React from 'react'\nimport { useRef } from 'react'\nimport { createPortal } from 'react-dom'\nimport { AnimatePresence, motion } from 'framer-motion'\nimport { modalContentAnimation, modalOverlayAnimation } from './model/helpers'\nimport { IframeModalContent } from './ui/IframeModalContent'\nimport { ModalHeader, type TModalHeaderClasses } from './ui/ModalHeader'\nimport { cn } from '$/shared/utils'\n\ntype ModalClasses = {\n overlay?: string\n modal?: string\n content?: string\n modalHeader?: TModalHeaderClasses\n}\n\nexport interface ModalProps {\n children: React.ReactElement\n isModalOpen: boolean\n classes?: ModalClasses\n isPortal?: boolean\n portalContainer?: HTMLElement\n title?: string | React.ReactElement\n closeModal: () => void\n iframe?: boolean\n}\n\nexport const Modal = ({\n title,\n children,\n isModalOpen,\n isPortal = true,\n portalContainer = globalThis?.document?.body,\n closeModal,\n classes,\n iframe\n}: ModalProps) => {\n if (isModalOpen) {\n
|
|
1
|
+
{"version":3,"file":"Modal.js","sources":["../../../../../lib/shared/ui/modal/Modal.tsx"],"sourcesContent":["'use client'\n\nimport * as React from 'react'\nimport { useEffect, useRef } from 'react'\nimport { createPortal } from 'react-dom'\nimport { AnimatePresence, motion } from 'framer-motion'\nimport { modalContentAnimation, modalOverlayAnimation } from './model/helpers'\nimport { IframeModalContent } from './ui/IframeModalContent'\nimport { ModalHeader, type TModalHeaderClasses } from './ui/ModalHeader'\nimport { cn } from '$/shared/utils'\n\ntype ModalClasses = {\n overlay?: string\n modal?: string\n content?: string\n modalHeader?: TModalHeaderClasses\n}\n\nexport interface ModalProps {\n children: React.ReactElement\n isModalOpen: boolean\n classes?: ModalClasses\n isPortal?: boolean\n portalContainer?: HTMLElement\n title?: string | React.ReactElement\n closeModal: () => void\n iframe?: boolean\n}\n\nexport const Modal = ({\n title,\n children,\n isModalOpen,\n isPortal = true,\n portalContainer = globalThis?.document?.body,\n closeModal,\n classes,\n iframe\n}: ModalProps) => {\n useEffect(() => {\n if (isModalOpen) {\n document.body.style.overflow = 'hidden'\n }\n return () => {\n document.body.style.overflow = 'visible'\n }\n }, [isModalOpen])\n const iframeRef = useRef<HTMLIFrameElement>(null)\n\n const modalBody = (\n <AnimatePresence>\n {isModalOpen && (\n <motion.div\n ref={(node) => node?.focus()}\n tabIndex={-1}\n onMouseDown={closeModal}\n className={cn(\n 'fixed inset-0 flex h-screen w-screen items-center justify-center bg-color-overlay',\n { 'z-1000': !isPortal },\n classes?.overlay\n )}\n onKeyDown={(event) => {\n if (event.key === 'Escape') {\n closeModal()\n }\n }}\n data-test-id='modal-overlay'\n {...modalOverlayAnimation}\n >\n <motion.div\n onClick={(event) => event.stopPropagation()}\n onMouseDown={(event) => event.stopPropagation()}\n className={cn(\n 'w-full max-w-[600px] rounded-md bg-color-white px-4 py-6 shadow-sm desktop:px-6 desktop:py-8',\n classes?.modal\n )}\n data-test-id='modal'\n {...modalContentAnimation}\n >\n <ModalHeader title={title} closeModal={closeModal} classes={classes?.modalHeader} />\n {iframe ? (\n <IframeModalContent ref={iframeRef} className={cn('mt-4', classes?.content)}>\n {(iframeBody) => createPortal(children, iframeBody)}\n </IframeModalContent>\n ) : (\n <div className={cn('mt-4', classes?.content)}>{children}</div>\n )}\n </motion.div>\n </motion.div>\n )}\n </AnimatePresence>\n )\n return <>{isPortal ? createPortal(modalBody, portalContainer) : modalBody}</>\n}\n"],"names":["Modal","title","children","isModalOpen","isPortal","portalContainer","_a","closeModal","classes","iframe","useEffect","iframeRef","useRef","modalBody","jsx","AnimatePresence","motion","node","cn","event","modalOverlayAnimation","jsxs","modalContentAnimation","ModalHeader","IframeModalContent","iframeBody","createPortal"],"mappings":"qmBA6BO,MAAMA,EAAQ,CAAC,CACpB,MAAAC,EACA,SAAAC,EACA,YAAAC,EACA,SAAAC,EAAW,GACX,gBAAAC,GAAkBC,MAAA,mCAAY,WAAZ,YAAAA,EAAsB,QACxC,WAAAC,EACA,QAAAC,EACA,OAAAC,CACF,IAAkB,CAChBC,EAAU,KACJP,IACF,SAAS,KAAK,MAAM,SAAW,UAE1B,IAAM,CACX,SAAS,KAAK,MAAM,SAAW,SACjC,GACC,CAACA,CAAW,CAAC,EAChB,MAAMQ,EAAYC,EAA0B,IAAI,EAE1CC,EACJC,EAACC,EAAA,CACE,SAAAZ,GACCW,EAACE,EAAO,IAAP,CACC,IAAMC,GAASA,GAAA,YAAAA,EAAM,QACrB,SAAU,GACV,YAAaV,EACb,UAAWW,EACT,oFACA,CAAE,SAAU,CAACd,CAAA,EACbI,GAAA,YAAAA,EAAS,OAAA,EAEX,UAAYW,GAAU,CAChBA,EAAM,MAAQ,UAChBZ,EAAA,CAEJ,EACA,eAAa,gBACZ,GAAGa,EAEJ,SAAAC,EAACL,EAAO,IAAP,CACC,QAAUG,GAAUA,EAAM,gBAAA,EAC1B,YAAcA,GAAUA,EAAM,gBAAA,EAC9B,UAAWD,EACT,+FACAV,GAAA,YAAAA,EAAS,KAAA,EAEX,eAAa,QACZ,GAAGc,EAEJ,SAAA,CAAAR,EAACS,EAAA,CAAY,MAAAtB,EAAc,WAAAM,EAAwB,QAASC,GAAA,YAAAA,EAAS,YAAa,EACjFC,EACCK,EAACU,EAAA,CAAmB,IAAKb,EAAW,UAAWO,EAAG,OAAQV,GAAA,YAAAA,EAAS,OAAO,EACvE,SAACiB,GAAeC,EAAaxB,EAAUuB,CAAU,EACpD,EAEAX,EAAC,MAAA,CAAI,UAAWI,EAAG,OAAQV,GAAA,YAAAA,EAAS,OAAO,EAAI,SAAAN,CAAA,CAAS,CAAA,CAAA,CAAA,CAE5D,CAAA,EAGN,EAEF,YAAU,SAAAE,EAAWsB,EAAab,EAAWR,CAAe,EAAIQ,EAAU,CAC5E"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as
|
|
1
|
+
import{jsxs as e,jsx as t}from"react/jsx-runtime";import{cn as r}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"./IframeModalContent.js";import"../../../../../node_modules/react-hot-toast/dist/index.js";import{Icon as n}from"../../icon/Icon.js";import"../../table/ui/primitives/Primitives.js";import{Heading as d}from"../../heading/Heading.js";import"../../carousel/ui/CarouselContent.js";import"../../slot/Slot.js";import"../../formElements/uncontrolled/autocomplete/Autocomplete.js";import"../../formElements/uncontrolled/checkbox/Checkbox.js";import"../../formElements/uncontrolled/combobox/combobox.js";import"../../formElements/uncontrolled/dayPicker/DayPicker.js";import"../../formElements/uncontrolled/input/Input.js";import"../../formElements/uncontrolled/inputOtp/InputOtpBase.js";import"../../formElements/uncontrolled/maskInput/MaskInput.js";import"../../formElements/uncontrolled/radio/RadioGroup.js";import"../../formElements/uncontrolled/radio/ui/RadioItem.js";import"../../formElements/uncontrolled/slider/SliderBase.js";import"../../formElements/uncontrolled/switch/Switch.js";import"../../formElements/uncontrolled/textarea/Textarea.js";import"../../formElements/uncontrolled/uploader/UploaderBase.js";import"../../formElements/uncontrolled/inputCurrency/InputCurrency.js";import"../../formElements/controlled/editor/ui/Editor.js";import"../../formElements/controlled/input/MaskInputControl.js";import"../../dropdownList/ui/dropdownItem/DropdownItem.js";const R=({title:i,closeModal:m,classes:o})=>e("div",{className:r("flex items-start justify-between gap-4",o==null?void 0:o.header),children:[i&&t(d,{as:"h3",className:r("flex-1 text-color-dark",o==null?void 0:o.title),children:i}),t("span",{onClick:m,onKeyDown:p=>{p.key==="Enter"&&m()},role:"button","aria-label":"Close modal",tabIndex:0,className:r("rounded-sm p-0.5 outline-none transition-colors hover:bg-color-blue-grey-200 focus-visible:bg-color-blue-grey-200"),children:t(n,{name:"general/close",className:r("ml-auto size-6 cursor-pointer text-icon-dark-hover outline-0",o==null?void 0:o.icon)})})]});export{R as ModalHeader};
|
|
2
2
|
//# sourceMappingURL=ModalHeader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModalHeader.js","sources":["../../../../../../lib/shared/ui/modal/ui/ModalHeader.tsx"],"sourcesContent":["import type { ModalProps } from '../Modal'\nimport { Heading, Icon } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type TModalHeaderClasses = {\n header?: string\n title?: string\n icon?: string\n}\n\nexport interface IModalHeaderProps extends Pick<ModalProps, 'closeModal' | 'title'> {\n classes?: TModalHeaderClasses\n}\n\nexport const ModalHeader = ({ title, closeModal, classes }: IModalHeaderProps) => {\n return (\n <div className={cn('flex items-start justify-between gap-4', classes?.header)}>\n {title && (\n <Heading as='h3' className={cn('flex-1 text-color-dark', classes?.title)}>\n {title}\n </Heading>\n )}\n <
|
|
1
|
+
{"version":3,"file":"ModalHeader.js","sources":["../../../../../../lib/shared/ui/modal/ui/ModalHeader.tsx"],"sourcesContent":["import type { ModalProps } from '../Modal'\nimport { Heading, Icon } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type TModalHeaderClasses = {\n header?: string\n title?: string\n icon?: string\n}\n\nexport interface IModalHeaderProps extends Pick<ModalProps, 'closeModal' | 'title'> {\n classes?: TModalHeaderClasses\n}\n\nexport const ModalHeader = ({ title, closeModal, classes }: IModalHeaderProps) => {\n return (\n <div className={cn('flex items-start justify-between gap-4', classes?.header)}>\n {title && (\n <Heading as='h3' className={cn('flex-1 text-color-dark', classes?.title)}>\n {title}\n </Heading>\n )}\n <span\n onClick={closeModal}\n onKeyDown={(event) => {\n if (event.key === 'Enter') closeModal()\n }}\n role='button'\n aria-label='Close modal'\n tabIndex={0}\n className={cn(\n 'rounded-sm p-0.5 outline-none transition-colors hover:bg-color-blue-grey-200 focus-visible:bg-color-blue-grey-200'\n )}\n >\n <Icon\n name='general/close'\n className={cn('ml-auto size-6 cursor-pointer text-icon-dark-hover outline-0', classes?.icon)}\n />\n </span>\n </div>\n )\n}\n"],"names":["ModalHeader","title","closeModal","classes","cn","jsx","Heading","event","Icon"],"mappings":"soDAcO,MAAMA,EAAc,CAAC,CAAE,MAAAC,EAAO,WAAAC,EAAY,QAAAC,OAE5C,MAAA,CAAI,UAAWC,EAAG,yCAA0CD,GAAA,YAAAA,EAAS,MAAM,EACzE,SAAA,CAAAF,GACCI,EAACC,EAAA,CAAQ,GAAG,KAAK,UAAWF,EAAG,yBAA0BD,GAAA,YAAAA,EAAS,KAAK,EACpE,SAAAF,CAAA,CACH,EAEFI,EAAC,OAAA,CACC,QAASH,EACT,UAAYK,GAAU,CAChBA,EAAM,MAAQ,SAASL,EAAA,CAC7B,EACA,KAAK,SACL,aAAW,cACX,SAAU,EACV,UAAWE,EACT,mHAAA,EAGF,SAAAC,EAACG,EAAA,CACC,KAAK,gBACL,UAAWJ,EAAG,+DAAgED,GAAA,YAAAA,EAAS,IAAI,CAAA,CAAA,CAC7F,CAAA,CACF,EACF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{forwardRef as l,isValidElement as n,cloneElement as
|
|
1
|
+
import{forwardRef as l,isValidElement as n,cloneElement as p,Children as t}from"react";import"react/jsx-runtime";import{getElementRef as f}from"../model/getElementRef.js";import{mergeProps as i}from"../model/mergeProps.js";import"../../../../../node_modules/classnames/index.js";import{mergeRefs as s}from"../../../utils/mergeRefs.js";const u=l(({children:o,...m},e)=>{if(n(o)){const r=f(o);return p(o,{...i(m,o.props),ref:e?s(e,r):r})}return t.count(o)>1?t.only(null):null});u.displayName="SlotClone";export{u as SlotClone};
|
|
2
2
|
//# sourceMappingURL=SlotClone.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SlotClone.js","sources":["../../../../../../lib/shared/ui/slot/ui/SlotClone.tsx"],"sourcesContent":["import { Children, cloneElement, forwardRef, isValidElement } from 'react'\nimport { getElementRef, mergeProps } from '../model'\nimport { mergeRefs } from '$/shared/utils'\n\nexport type SlotCloneProps = {\n children: React.ReactNode\n}\n\nexport const SlotClone = forwardRef<any, SlotCloneProps>(({ children, ...props }, ref) => {\n if (isValidElement(children)) {\n const childrenRef = getElementRef(children)\n\n return cloneElement(children, {\n ...mergeProps(props, children.props),\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n ref: ref ? mergeRefs(ref, childrenRef) : childrenRef\n })\n }\n\n return Children.count(children) > 1 ? Children.only(null) : null\n})\nSlotClone.displayName = 'SlotClone'\n"],"names":["SlotClone","forwardRef","children","props","ref","isValidElement","childrenRef","getElementRef","cloneElement","mergeProps","mergeRefs","Children"],"mappings":"
|
|
1
|
+
{"version":3,"file":"SlotClone.js","sources":["../../../../../../lib/shared/ui/slot/ui/SlotClone.tsx"],"sourcesContent":["import { Children, cloneElement, forwardRef, isValidElement } from 'react'\nimport { getElementRef, mergeProps } from '../model'\nimport { mergeRefs } from '$/shared/utils'\n\nexport type SlotCloneProps = {\n children: React.ReactNode\n}\n\nexport const SlotClone = forwardRef<any, SlotCloneProps>(({ children, ...props }, ref) => {\n if (isValidElement(children)) {\n const childrenRef = getElementRef(children)\n\n return cloneElement(children, {\n ...mergeProps(props, children.props),\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n ref: ref ? mergeRefs(ref, childrenRef) : childrenRef\n })\n }\n\n return Children.count(children) > 1 ? Children.only(null) : null\n})\nSlotClone.displayName = 'SlotClone'\n"],"names":["SlotClone","forwardRef","children","props","ref","isValidElement","childrenRef","getElementRef","cloneElement","mergeProps","mergeRefs","Children"],"mappings":"+UAQO,MAAMA,EAAYC,EAAgC,CAAC,CAAE,SAAAC,EAAU,GAAGC,CAAA,EAASC,IAAQ,CACxF,GAAIC,EAAeH,CAAQ,EAAG,CAC5B,MAAMI,EAAcC,EAAcL,CAAQ,EAE1C,OAAOM,EAAaN,EAAU,CAC5B,GAAGO,EAAWN,EAAOD,EAAS,KAAK,EAGnC,IAAKE,EAAMM,EAAUN,EAAKE,CAAW,EAAIA,CAAA,CAC1C,CACH,CAEA,OAAOK,EAAS,MAAMT,CAAQ,EAAI,EAAIS,EAAS,KAAK,IAAI,EAAI,IAC9D,CAAC,EACDX,EAAU,YAAc"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as a}from"react/jsx-runtime";import{useState as g}from"react";import{useReactTable as F}from"../../../../node_modules/@tanstack/react-table/build/lib/index.js";import{Desktop as C}from"./Desktop.js";import{Horizontal as S}from"./Horizontal.js";import{Mobile as b}from"./Mobile.js";import{useDevice as P}from"../../hooks/useDevice.js";import{TypeGuards as x}from"../../utils/typeGuards.js";import{getPaginationRowModel as D,getFacetedUniqueValues as T,getFacetedRowModel as q,getSortedRowModel as U,getFilteredRowModel as V,getCoreRowModel as h}from"../../../../node_modules/@tanstack/table-core/build/lib/index.js";const
|
|
1
|
+
import{jsx as a}from"react/jsx-runtime";import{useState as g}from"react";import{useReactTable as F}from"../../../../node_modules/@tanstack/react-table/build/lib/index.js";import{Desktop as C}from"./Desktop.js";import{Horizontal as S}from"./Horizontal.js";import{Mobile as b}from"./Mobile.js";import{useDevice as P}from"../../hooks/useDevice.js";import"../../../../node_modules/classnames/index.js";import{TypeGuards as x}from"../../utils/typeGuards.js";import{getPaginationRowModel as D,getFacetedUniqueValues as T,getFacetedRowModel as q,getSortedRowModel as U,getFilteredRowModel as V,getCoreRowModel as h}from"../../../../node_modules/@tanstack/table-core/build/lib/index.js";const L=({columns:l,data:m,enableHeaders:o=!0,mode:e="solid",classes:t,pagination:d=!0,empty:i,horizontal:r,pageSize:s=10})=>{const[u,p]=g([]),[c,M]=g([]),[R,w]=g({pageIndex:0,pageSize:s}),n=F({data:m,columns:l,state:{columnFilters:u,sorting:c,pagination:R},enableRowSelection:!0,onSortingChange:M,onColumnFiltersChange:p,onPaginationChange:w,getCoreRowModel:h(),getFilteredRowModel:V(),getSortedRowModel:U(),getFacetedRowModel:q(),getFacetedUniqueValues:T(),getPaginationRowModel:D()}),{isMobile:f}=P();return(x.isFunction(r)?r(l):r)?a(S,{table:n,enableHeaders:o,pagination:d,empty:i,mode:e,classes:t}):f?a(b,{table:n,enableHeaders:o,empty:i,mode:e,classes:t}):a(C,{table:n,enableHeaders:o,empty:i,pagination:d,mode:e,classes:t})};export{L as DataTable};
|
|
2
2
|
//# sourceMappingURL=Table.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Table.js","sources":["../../../../../lib/shared/ui/table/Table.tsx"],"sourcesContent":["import { useState } from 'react'\nimport {\n type ColumnFiltersState,\n getCoreRowModel,\n getFacetedRowModel,\n getFacetedUniqueValues,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n type PaginationState,\n type SortingState,\n useReactTable\n} from '@tanstack/react-table'\nimport { Desktop } from './Desktop'\nimport { Horizontal } from './Horizontal'\nimport { Mobile } from './Mobile'\nimport { type DataTableProps } from './model'\nimport { useDevice } from '$/shared/hooks'\nimport { TypeGuards } from '$/shared/utils'\n\nexport const DataTable = <TData extends {}>({\n columns,\n data,\n enableHeaders = true,\n mode = 'solid',\n classes,\n pagination = true,\n empty,\n horizontal,\n pageSize = 10\n}: DataTableProps<TData>) => {\n const [columnFilters, setColumnFilters] = useState<ColumnFiltersState>([])\n const [sorting, setSorting] = useState<SortingState>([])\n const [paginationState, setPagination] = useState<PaginationState>({\n pageIndex: 0,\n pageSize\n })\n\n const table = useReactTable({\n data,\n columns,\n state: { columnFilters, sorting, pagination: paginationState },\n enableRowSelection: true,\n onSortingChange: setSorting,\n onColumnFiltersChange: setColumnFilters,\n onPaginationChange: setPagination,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getFacetedRowModel: getFacetedRowModel(),\n getFacetedUniqueValues: getFacetedUniqueValues(),\n getPaginationRowModel: getPaginationRowModel()\n })\n\n const { isMobile } = useDevice()\n\n if (TypeGuards.isFunction(horizontal) ? horizontal(columns) : horizontal) {\n return (\n <Horizontal\n table={table}\n enableHeaders={enableHeaders}\n pagination={pagination}\n empty={empty}\n mode={mode}\n classes={classes}\n />\n )\n }\n\n return isMobile ? (\n <Mobile table={table} enableHeaders={enableHeaders} empty={empty} mode={mode} classes={classes} />\n ) : (\n <Desktop table={table} enableHeaders={enableHeaders} empty={empty} pagination={pagination} mode={mode} classes={classes} />\n )\n}\n"],"names":["DataTable","columns","data","enableHeaders","mode","classes","pagination","empty","horizontal","pageSize","columnFilters","setColumnFilters","useState","sorting","setSorting","paginationState","setPagination","table","useReactTable","getCoreRowModel","getFilteredRowModel","getSortedRowModel","getFacetedRowModel","getFacetedUniqueValues","getPaginationRowModel","isMobile","useDevice","TypeGuards","jsx","Horizontal","Mobile","Desktop"],"mappings":"
|
|
1
|
+
{"version":3,"file":"Table.js","sources":["../../../../../lib/shared/ui/table/Table.tsx"],"sourcesContent":["import { useState } from 'react'\nimport {\n type ColumnFiltersState,\n getCoreRowModel,\n getFacetedRowModel,\n getFacetedUniqueValues,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n type PaginationState,\n type SortingState,\n useReactTable\n} from '@tanstack/react-table'\nimport { Desktop } from './Desktop'\nimport { Horizontal } from './Horizontal'\nimport { Mobile } from './Mobile'\nimport { type DataTableProps } from './model'\nimport { useDevice } from '$/shared/hooks'\nimport { TypeGuards } from '$/shared/utils'\n\nexport const DataTable = <TData extends {}>({\n columns,\n data,\n enableHeaders = true,\n mode = 'solid',\n classes,\n pagination = true,\n empty,\n horizontal,\n pageSize = 10\n}: DataTableProps<TData>) => {\n const [columnFilters, setColumnFilters] = useState<ColumnFiltersState>([])\n const [sorting, setSorting] = useState<SortingState>([])\n const [paginationState, setPagination] = useState<PaginationState>({\n pageIndex: 0,\n pageSize\n })\n\n const table = useReactTable({\n data,\n columns,\n state: { columnFilters, sorting, pagination: paginationState },\n enableRowSelection: true,\n onSortingChange: setSorting,\n onColumnFiltersChange: setColumnFilters,\n onPaginationChange: setPagination,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getFacetedRowModel: getFacetedRowModel(),\n getFacetedUniqueValues: getFacetedUniqueValues(),\n getPaginationRowModel: getPaginationRowModel()\n })\n\n const { isMobile } = useDevice()\n\n if (TypeGuards.isFunction(horizontal) ? horizontal(columns) : horizontal) {\n return (\n <Horizontal\n table={table}\n enableHeaders={enableHeaders}\n pagination={pagination}\n empty={empty}\n mode={mode}\n classes={classes}\n />\n )\n }\n\n return isMobile ? (\n <Mobile table={table} enableHeaders={enableHeaders} empty={empty} mode={mode} classes={classes} />\n ) : (\n <Desktop table={table} enableHeaders={enableHeaders} empty={empty} pagination={pagination} mode={mode} classes={classes} />\n )\n}\n"],"names":["DataTable","columns","data","enableHeaders","mode","classes","pagination","empty","horizontal","pageSize","columnFilters","setColumnFilters","useState","sorting","setSorting","paginationState","setPagination","table","useReactTable","getCoreRowModel","getFilteredRowModel","getSortedRowModel","getFacetedRowModel","getFacetedUniqueValues","getPaginationRowModel","isMobile","useDevice","TypeGuards","jsx","Horizontal","Mobile","Desktop"],"mappings":"uqBAoBO,MAAMA,EAAY,CAAmB,CAC1C,QAAAC,EACA,KAAAC,EACA,cAAAC,EAAgB,GAChB,KAAAC,EAAO,QACP,QAAAC,EACA,WAAAC,EAAa,GACb,MAAAC,EACA,WAAAC,EACA,SAAAC,EAAW,EACb,IAA6B,CAC3B,KAAM,CAACC,EAAeC,CAAgB,EAAIC,EAA6B,CAAA,CAAE,EACnE,CAACC,EAASC,CAAU,EAAIF,EAAuB,CAAA,CAAE,EACjD,CAACG,EAAiBC,CAAa,EAAIJ,EAA0B,CACjE,UAAW,EACX,SAAAH,CAAA,CACD,EAEKQ,EAAQC,EAAc,CAC1B,KAAAhB,EACA,QAAAD,EACA,MAAO,CAAE,cAAAS,EAAe,QAAAG,EAAS,WAAYE,CAAA,EAC7C,mBAAoB,GACpB,gBAAiBD,EACjB,sBAAuBH,EACvB,mBAAoBK,EACpB,gBAAiBG,EAAA,EACjB,oBAAqBC,EAAA,EACrB,kBAAmBC,EAAA,EACnB,mBAAoBC,EAAA,EACpB,uBAAwBC,EAAA,EACxB,sBAAuBC,EAAA,CAAsB,CAC9C,EAEK,CAAE,SAAAC,CAAA,EAAaC,EAAA,EAErB,OAAIC,EAAW,WAAWnB,CAAU,EAAIA,EAAWP,CAAO,EAAIO,GAE1DoB,EAACC,EAAA,CACC,MAAAZ,EACA,cAAAd,EACA,WAAAG,EACA,MAAAC,EACA,KAAAH,EACA,QAAAC,CAAA,CAAA,EAKCoB,EACLG,EAACE,EAAA,CAAO,MAAAb,EAAc,cAAAd,EAA8B,MAAAI,EAAc,KAAAH,EAAY,QAAAC,CAAA,CAAkB,EAEhGuB,EAACG,GAAQ,MAAAd,EAAc,cAAAd,EAA8B,MAAAI,EAAc,WAAAD,EAAwB,KAAAF,EAAY,QAAAC,EAAkB,CAE7H"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as d}from"react/jsx-runtime";import"../ui/primitives/Primitives.js";import{DataTableColumnHeader as S}from"../ui/dataTableColumnHeader/DataTableColumnHeader.js";import"react";import{TypeGuards as
|
|
1
|
+
import{jsx as d}from"react/jsx-runtime";import"../ui/primitives/Primitives.js";import{DataTableColumnHeader as S}from"../ui/dataTableColumnHeader/DataTableColumnHeader.js";import"react";import"../../../../../node_modules/classnames/index.js";import{TypeGuards as m}from"../../../utils/typeGuards.js";import{createColumnHelper as b}from"../../../../../node_modules/@tanstack/table-core/build/lib/index.js";class A{static getColumnHelper(){return b()}static getColumns(g,u){const{helper:p=this.getColumnHelper(),enableColumnFilter:o=!1,enableSorting:n=!1,cellAccessor:c,headerAccessor:a,sortingFn:l,size:s}=u||{};return Object.keys(g).map(e=>p.accessor(e,{header:t=>{const{column:r}=t,i=a?a[e]:null;return d(S,{isSorted:r.getIsSorted()==="desc",nextSortingOrder:r.getNextSortingOrder(),toggleSorting:r.toggleSorting,canSort:r.getCanSort(),children:i?i(e,t):e})},cell:t=>{const r=c?c[e]:null;return r?r(t):t.getValue()},enableColumnFilter:m.isBoolean(o)?o:o.includes(e),enableSorting:m.isBoolean(n)?n:n.includes(e),sortingFn:typeof l=="object"?l[e]:l,...s==null?void 0:s[e]}))}}export{A as TableUtils};
|
|
2
2
|
//# sourceMappingURL=TableUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableUtils.js","sources":["../../../../../../lib/shared/ui/table/model/TableUtils.tsx"],"sourcesContent":["import {\n type CellContext,\n type ColumnDef,\n type ColumnHelper,\n createColumnHelper,\n type HeaderContext,\n type SortingFnOption\n} from '@tanstack/react-table'\nimport { DataTableColumnHeader } from '../ui'\nimport { TypeGuards } from '$/shared/utils'\n\ntype SizeOptions = {\n size?: number\n minSize?: number\n maxSize?: number\n}\n\ntype ColumnDefOptions<TData, TValue> = {\n enableSorting?: (keyof TData)[] | boolean\n sortingFn?: SortingFnOption<TData> | Partial<Record<keyof TData, SortingFnOption<TData>>>\n enableColumnFilter?: (keyof TData)[] | boolean\n size?: Partial<Record<keyof TData, SizeOptions>>\n helper?: ColumnHelper<TData>\n cellAccessor?: Partial<Record<keyof TData, (cellContext: CellContext<TData, TValue>) => React.ReactNode>>\n headerAccessor?: Partial<\n Record<keyof TData, (key: keyof TData, headerContext: HeaderContext<TData, TValue>) => React.ReactNode>\n >\n}\n\nexport class TableUtils {\n static getColumnHelper<TData extends {}>(): ColumnHelper<TData> {\n return createColumnHelper<TData>()\n }\n\n static getColumns<TData extends {}, TValue = TData[keyof TData]>(\n template: TData,\n options?: ColumnDefOptions<TData, TValue>\n ): ColumnDef<TData>[] {\n const {\n helper = this.getColumnHelper<TData>(),\n enableColumnFilter = false,\n enableSorting = false,\n cellAccessor,\n headerAccessor,\n sortingFn,\n size\n } = options || {}\n\n const keys = Object.keys(template) as (keyof TData)[]\n\n return keys.map((key) => {\n return helper.accessor<any, TValue>(key, {\n header: (header) => {\n const { column } = header\n const accessor = headerAccessor ? headerAccessor[key] : null\n\n return (\n <DataTableColumnHeader\n isSorted={column.getIsSorted() === 'desc'}\n nextSortingOrder={column.getNextSortingOrder()}\n toggleSorting={column.toggleSorting}\n canSort={column.getCanSort()}\n >\n {accessor ? accessor(key, header) : (key as string)}\n </DataTableColumnHeader>\n )\n },\n cell: (cell) => {\n const accessor = cellAccessor ? cellAccessor[key] : null\n\n return accessor ? accessor(cell) : cell.getValue()\n },\n enableColumnFilter: TypeGuards.isBoolean(enableColumnFilter) ? enableColumnFilter : enableColumnFilter.includes(key),\n enableSorting: TypeGuards.isBoolean(enableSorting) ? enableSorting : enableSorting.includes(key),\n sortingFn: typeof sortingFn === 'object' ? sortingFn[key] : sortingFn,\n ...size?.[key]\n })\n }) as ColumnDef<TData>[]\n }\n}\n"],"names":["TableUtils","createColumnHelper","template","options","helper","enableColumnFilter","enableSorting","cellAccessor","headerAccessor","sortingFn","size","key","header","column","accessor","jsx","DataTableColumnHeader","cell","TypeGuards"],"mappings":"
|
|
1
|
+
{"version":3,"file":"TableUtils.js","sources":["../../../../../../lib/shared/ui/table/model/TableUtils.tsx"],"sourcesContent":["import {\n type CellContext,\n type ColumnDef,\n type ColumnHelper,\n createColumnHelper,\n type HeaderContext,\n type SortingFnOption\n} from '@tanstack/react-table'\nimport { DataTableColumnHeader } from '../ui'\nimport { TypeGuards } from '$/shared/utils'\n\ntype SizeOptions = {\n size?: number\n minSize?: number\n maxSize?: number\n}\n\ntype ColumnDefOptions<TData, TValue> = {\n enableSorting?: (keyof TData)[] | boolean\n sortingFn?: SortingFnOption<TData> | Partial<Record<keyof TData, SortingFnOption<TData>>>\n enableColumnFilter?: (keyof TData)[] | boolean\n size?: Partial<Record<keyof TData, SizeOptions>>\n helper?: ColumnHelper<TData>\n cellAccessor?: Partial<Record<keyof TData, (cellContext: CellContext<TData, TValue>) => React.ReactNode>>\n headerAccessor?: Partial<\n Record<keyof TData, (key: keyof TData, headerContext: HeaderContext<TData, TValue>) => React.ReactNode>\n >\n}\n\nexport class TableUtils {\n static getColumnHelper<TData extends {}>(): ColumnHelper<TData> {\n return createColumnHelper<TData>()\n }\n\n static getColumns<TData extends {}, TValue = TData[keyof TData]>(\n template: TData,\n options?: ColumnDefOptions<TData, TValue>\n ): ColumnDef<TData>[] {\n const {\n helper = this.getColumnHelper<TData>(),\n enableColumnFilter = false,\n enableSorting = false,\n cellAccessor,\n headerAccessor,\n sortingFn,\n size\n } = options || {}\n\n const keys = Object.keys(template) as (keyof TData)[]\n\n return keys.map((key) => {\n return helper.accessor<any, TValue>(key, {\n header: (header) => {\n const { column } = header\n const accessor = headerAccessor ? headerAccessor[key] : null\n\n return (\n <DataTableColumnHeader\n isSorted={column.getIsSorted() === 'desc'}\n nextSortingOrder={column.getNextSortingOrder()}\n toggleSorting={column.toggleSorting}\n canSort={column.getCanSort()}\n >\n {accessor ? accessor(key, header) : (key as string)}\n </DataTableColumnHeader>\n )\n },\n cell: (cell) => {\n const accessor = cellAccessor ? cellAccessor[key] : null\n\n return accessor ? accessor(cell) : cell.getValue()\n },\n enableColumnFilter: TypeGuards.isBoolean(enableColumnFilter) ? enableColumnFilter : enableColumnFilter.includes(key),\n enableSorting: TypeGuards.isBoolean(enableSorting) ? enableSorting : enableSorting.includes(key),\n sortingFn: typeof sortingFn === 'object' ? sortingFn[key] : sortingFn,\n ...size?.[key]\n })\n }) as ColumnDef<TData>[]\n }\n}\n"],"names":["TableUtils","createColumnHelper","template","options","helper","enableColumnFilter","enableSorting","cellAccessor","headerAccessor","sortingFn","size","key","header","column","accessor","jsx","DataTableColumnHeader","cell","TypeGuards"],"mappings":"qZA6BO,MAAMA,CAAW,CACtB,OAAO,iBAAyD,CAC9D,OAAOC,EAAA,CACT,CAEA,OAAO,WACLC,EACAC,EACoB,CACpB,KAAM,CACJ,OAAAC,EAAS,KAAK,gBAAA,EACd,mBAAAC,EAAqB,GACrB,cAAAC,EAAgB,GAChB,aAAAC,EACA,eAAAC,EACA,UAAAC,EACA,KAAAC,CAAA,EACEP,GAAW,CAAA,EAIf,OAFa,OAAO,KAAKD,CAAQ,EAErB,IAAKS,GACRP,EAAO,SAAsBO,EAAK,CACvC,OAASC,GAAW,CAClB,KAAM,CAAE,OAAAC,GAAWD,EACbE,EAAWN,EAAiBA,EAAeG,CAAG,EAAI,KAExD,OACEI,EAACC,EAAA,CACC,SAAUH,EAAO,YAAA,IAAkB,OACnC,iBAAkBA,EAAO,oBAAA,EACzB,cAAeA,EAAO,cACtB,QAASA,EAAO,WAAA,EAEf,SAAAC,EAAWA,EAASH,EAAKC,CAAM,EAAKD,CAAA,CAAA,CAG3C,EACA,KAAOM,GAAS,CACd,MAAMH,EAAWP,EAAeA,EAAaI,CAAG,EAAI,KAEpD,OAAOG,EAAWA,EAASG,CAAI,EAAIA,EAAK,SAAA,CAC1C,EACA,mBAAoBC,EAAW,UAAUb,CAAkB,EAAIA,EAAqBA,EAAmB,SAASM,CAAG,EACnH,cAAeO,EAAW,UAAUZ,CAAa,EAAIA,EAAgBA,EAAc,SAASK,CAAG,EAC/F,UAAW,OAAOF,GAAc,SAAWA,EAAUE,CAAG,EAAIF,EAC5D,GAAGC,GAAA,YAAAA,EAAOC,EAAG,CACd,CACF,CACH,CACF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import
|
|
1
|
+
import o from"../../../node_modules/classnames/index.js";import{twMerge as t}from"../../../node_modules/tailwind-merge/dist/bundle-mjs.js";const c=(...r)=>t(o(r));export{c as cn};
|
|
2
2
|
//# sourceMappingURL=cn.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cn.js","sources":["../../../../lib/shared/utils/cn.ts"],"sourcesContent":["import clsx, { type
|
|
1
|
+
{"version":3,"file":"cn.js","sources":["../../../../lib/shared/utils/cn.ts"],"sourcesContent":["import clsx, { type ArgumentArray } from 'classnames'\nimport { twMerge } from 'tailwind-merge'\n\nexport const cn = (...inputs: ArgumentArray) => {\n return twMerge(clsx(inputs))\n}\n"],"names":["cn","inputs","twMerge","clsx"],"mappings":"2IAGO,MAAMA,EAAK,IAAIC,IACbC,EAAQC,EAAKF,CAAM,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import"react/jsx-runtime";import{TypeGuards as E}from"../../utils/typeGuards.js";import"../../ui/button/Button.js";import"../../ui/buttonIcon/ButtonIcon.js";import"../../ui/calendar/Calendar.js";import{formatDateToLocaleString as N}from"../../ui/calendar/model/utils.js";import"../../ui/accordion/Accordion.js";import"react";import"react-dom";import"../../ui/modal/ui/IframeModalContent.js";import"../../../../node_modules/react-hot-toast/dist/index.js";import"../../ui/table/ui/primitives/Primitives.js";import"../../ui/carousel/ui/CarouselContent.js";import"../../ui/slot/Slot.js";import"../../ui/formElements/uncontrolled/autocomplete/Autocomplete.js";import"../../ui/formElements/uncontrolled/checkbox/Checkbox.js";import"../../ui/formElements/uncontrolled/combobox/combobox.js";import"../../ui/formElements/uncontrolled/dayPicker/DayPicker.js";import"../../ui/formElements/uncontrolled/input/Input.js";import"../../ui/formElements/uncontrolled/inputOtp/InputOtpBase.js";import"../../ui/formElements/uncontrolled/maskInput/MaskInput.js";import"../../ui/formElements/uncontrolled/radio/RadioGroup.js";import"../../ui/formElements/uncontrolled/radio/ui/RadioItem.js";import"../../ui/formElements/uncontrolled/slider/SliderBase.js";import"../../ui/formElements/uncontrolled/switch/Switch.js";import"../../ui/formElements/uncontrolled/textarea/Textarea.js";import"../../ui/formElements/uncontrolled/uploader/UploaderBase.js";import"../../ui/formElements/uncontrolled/inputCurrency/InputCurrency.js";import"../../ui/formElements/controlled/editor/ui/Editor.js";import"../../ui/formElements/controlled/input/MaskInputControl.js";import"../../ui/dropdownList/ui/dropdownItem/DropdownItem.js";const
|
|
1
|
+
import"react/jsx-runtime";import"../../../../node_modules/classnames/index.js";import{TypeGuards as E}from"../../utils/typeGuards.js";import"../../ui/button/Button.js";import"../../ui/buttonIcon/ButtonIcon.js";import"../../ui/calendar/Calendar.js";import{formatDateToLocaleString as N}from"../../ui/calendar/model/utils.js";import"../../ui/accordion/Accordion.js";import"react";import"react-dom";import"../../ui/modal/ui/IframeModalContent.js";import"../../../../node_modules/react-hot-toast/dist/index.js";import"../../ui/table/ui/primitives/Primitives.js";import"../../ui/carousel/ui/CarouselContent.js";import"../../ui/slot/Slot.js";import"../../ui/formElements/uncontrolled/autocomplete/Autocomplete.js";import"../../ui/formElements/uncontrolled/checkbox/Checkbox.js";import"../../ui/formElements/uncontrolled/combobox/combobox.js";import"../../ui/formElements/uncontrolled/dayPicker/DayPicker.js";import"../../ui/formElements/uncontrolled/input/Input.js";import"../../ui/formElements/uncontrolled/inputOtp/InputOtpBase.js";import"../../ui/formElements/uncontrolled/maskInput/MaskInput.js";import"../../ui/formElements/uncontrolled/radio/RadioGroup.js";import"../../ui/formElements/uncontrolled/radio/ui/RadioItem.js";import"../../ui/formElements/uncontrolled/slider/SliderBase.js";import"../../ui/formElements/uncontrolled/switch/Switch.js";import"../../ui/formElements/uncontrolled/textarea/Textarea.js";import"../../ui/formElements/uncontrolled/uploader/UploaderBase.js";import"../../ui/formElements/uncontrolled/inputCurrency/InputCurrency.js";import"../../ui/formElements/controlled/editor/ui/Editor.js";import"../../ui/formElements/controlled/input/MaskInputControl.js";import"../../ui/dropdownList/ui/dropdownItem/DropdownItem.js";const g={NON_EMPTY:()=>"Поле не может быть пустым",MIN_LENGTH:_=>`Поле должно содержать минимум символов: ${_}`,MAX_LENGTH:_=>`Поле должно содержать максимум символов: ${_}`,FIX_LENGTH:_=>`Поле должно быть фиксированной длины символов: ${_}`,MIN_VALUE:_=>`Значение не может быть меньше чем ${_}`,MAX_VALUE:_=>`Значение не может быть больше чем ${_}`,PHONE_NON_EMPTY:()=>"Номер телефона должен состоять из 11 цифр",PHONE_INVALID_OPERATOR:()=>"Код города/оператора должен начинаться с цифры 3, 4, 5, 6 или 9",EMAIL_INVALID:()=>"Email введен некорректно. Пример: example@domain.ru",EMAIL_NON_EMPTY:()=>"Введите адрес электронной почты",SELECT_NON_EMPTY:()=>"Выберите один из вариантов",SELECT_MULTIPLE_MIN_LENGTH:_=>`Выберите не менее ${_} вариантов`,SELECT_MULTIPLE_MAX_LENGTH:_=>`Выберите не более ${_} вариантов`,SELECT_FIX_LENGTH:_=>`Поле должно быть фиксированного количества вариантов: ${_}`,DATE_INVALID_FORMAT:()=>"Дата указана некорректно",DATE_NON_EMPTY:()=>"Укажите дату",VALUE_OUT_OF_RANGE:_=>`Выберите один из вариантов ${_.join(", ")}`,DATE_MIN:_=>{const t=E.isString(_)?new Date(_):_;return`Выбранная дата должна быть не раньше ${N(t)}`},DATE_MAX:_=>{const t=E.isString(_)?new Date(_):_;return`Выбранная дата должна быть не позже ${N(t)}`},INVALID_REGEX_STRING:()=>"Поле не соответствует требованиям",INVALID_URL:()=>"Ссылка введена некорректно. Пример: https://example.com, example.com",PASSPORT_INVALID_TYPE:()=>"Паспортные данные введены некорректно",PASSPORT_NON_EMPTY:()=>"Поле обязательно для заполнения",PASSPORT_PART_OR_NUMBER_NON_EMPTY:()=>"Серия или номер паспорта не могут быть пустыми",INVALID_PASSPORT_PART:()=>"Серия паспорта введена некорректно",INVALID_PASSPORT_NUMBER:()=>"Номер паспорта введен некорректно",DEPARTMENT_NON_EMPTY:()=>"Поле обязательно для заполнения",INVALID_DEPARTMENT:()=>"Код подразделения введён некорректно",CURRENCY_NON_EMPTY:()=>"Не выбрана валюта"};export{g as baseDefaultMessages};
|
|
2
2
|
//# sourceMappingURL=base.constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.constants.js","sources":["../../../../../lib/shared/validation/base/base.constants.ts"],"sourcesContent":["import { type Primitive } from 'zod'\nimport { formatDateToLocaleString } from '$/shared/ui'\nimport { TypeGuards } from '$/shared/utils'\n\nexport const baseDefaultMessages = {\n NON_EMPTY: () => 'Поле не может быть пустым',\n MIN_LENGTH: (min: number) => `Поле должно содержать минимум символов: ${min}`,\n MAX_LENGTH: (max: number) => `Поле должно содержать максимум символов: ${max}`,\n FIX_LENGTH: (length: number) => `Поле должно быть фиксированной длины символов: ${length}`,\n MIN_VALUE: (min: number) => `Значение не может быть меньше чем ${min}`,\n MAX_VALUE: (max: number) => `Значение не может быть больше чем ${max}`,\n\n PHONE_NON_EMPTY: () => 'Номер телефона должен состоять из 11 цифр',\n PHONE_INVALID_OPERATOR: () => 'Код города/оператора должен начинаться с цифры 3, 4, 5, 6 или 9',\n\n EMAIL_INVALID: () => 'Email введен некорректно. Пример: example@domain.ru',\n EMAIL_NON_EMPTY: () => 'Введите адрес электронной почты',\n\n SELECT_NON_EMPTY: () => 'Выберите один из вариантов',\n SELECT_MULTIPLE_MIN_LENGTH: (length: number) => `Выберите не менее ${length} вариантов`,\n SELECT_MULTIPLE_MAX_LENGTH: (length: number) => `Выберите не более ${length} вариантов`,\n SELECT_FIX_LENGTH: (length: number) => `Поле должно быть фиксированного количества вариантов: ${length}`,\n\n DATE_INVALID_FORMAT: () => 'Дата указана некорректно',\n DATE_NON_EMPTY: () => 'Укажите дату',\n VALUE_OUT_OF_RANGE: <T extends Primitive>(range: T[]) => `Выберите один из вариантов ${range.join(', ')}`,\n\n DATE_MIN: (min: Date | string) => {\n const date = TypeGuards.isString(min) ? new Date(min) : min\n\n return `Выбранная дата должна быть не раньше ${formatDateToLocaleString(date)}`\n },\n DATE_MAX: (max: Date | string) => {\n const date = TypeGuards.isString(max) ? new Date(max) : max\n\n return `Выбранная дата должна быть не позже ${formatDateToLocaleString(date)}`\n },\n\n INVALID_REGEX_STRING: () => 'Поле не соответствует требованиям',\n\n INVALID_URL: () => 'Ссылка введена некорректно. Пример: https://example.com, example.com',\n\n PASSPORT_INVALID_TYPE: () => 'Паспортные данные введены некорректно',\n PASSPORT_NON_EMPTY: () => 'Поле обязательно для заполнения',\n PASSPORT_PART_OR_NUMBER_NON_EMPTY: () => 'Серия или номер паспорта не могут быть пустыми',\n INVALID_PASSPORT_PART: () => 'Серия паспорта введена некорректно',\n INVALID_PASSPORT_NUMBER: () => 'Номер паспорта введен некорректно',\n\n DEPARTMENT_NON_EMPTY: () => 'Поле обязательно для заполнения',\n INVALID_DEPARTMENT: () => 'Код подразделения введён некорректно',\n\n CURRENCY_NON_EMPTY: () => 'Не выбрана валюта'\n}\n"],"names":["baseDefaultMessages","min","max","length","range","date","TypeGuards","formatDateToLocaleString"],"mappings":"
|
|
1
|
+
{"version":3,"file":"base.constants.js","sources":["../../../../../lib/shared/validation/base/base.constants.ts"],"sourcesContent":["import { type Primitive } from 'zod'\nimport { formatDateToLocaleString } from '$/shared/ui'\nimport { TypeGuards } from '$/shared/utils'\n\nexport const baseDefaultMessages = {\n NON_EMPTY: () => 'Поле не может быть пустым',\n MIN_LENGTH: (min: number) => `Поле должно содержать минимум символов: ${min}`,\n MAX_LENGTH: (max: number) => `Поле должно содержать максимум символов: ${max}`,\n FIX_LENGTH: (length: number) => `Поле должно быть фиксированной длины символов: ${length}`,\n MIN_VALUE: (min: number) => `Значение не может быть меньше чем ${min}`,\n MAX_VALUE: (max: number) => `Значение не может быть больше чем ${max}`,\n\n PHONE_NON_EMPTY: () => 'Номер телефона должен состоять из 11 цифр',\n PHONE_INVALID_OPERATOR: () => 'Код города/оператора должен начинаться с цифры 3, 4, 5, 6 или 9',\n\n EMAIL_INVALID: () => 'Email введен некорректно. Пример: example@domain.ru',\n EMAIL_NON_EMPTY: () => 'Введите адрес электронной почты',\n\n SELECT_NON_EMPTY: () => 'Выберите один из вариантов',\n SELECT_MULTIPLE_MIN_LENGTH: (length: number) => `Выберите не менее ${length} вариантов`,\n SELECT_MULTIPLE_MAX_LENGTH: (length: number) => `Выберите не более ${length} вариантов`,\n SELECT_FIX_LENGTH: (length: number) => `Поле должно быть фиксированного количества вариантов: ${length}`,\n\n DATE_INVALID_FORMAT: () => 'Дата указана некорректно',\n DATE_NON_EMPTY: () => 'Укажите дату',\n VALUE_OUT_OF_RANGE: <T extends Primitive>(range: T[]) => `Выберите один из вариантов ${range.join(', ')}`,\n\n DATE_MIN: (min: Date | string) => {\n const date = TypeGuards.isString(min) ? new Date(min) : min\n\n return `Выбранная дата должна быть не раньше ${formatDateToLocaleString(date)}`\n },\n DATE_MAX: (max: Date | string) => {\n const date = TypeGuards.isString(max) ? new Date(max) : max\n\n return `Выбранная дата должна быть не позже ${formatDateToLocaleString(date)}`\n },\n\n INVALID_REGEX_STRING: () => 'Поле не соответствует требованиям',\n\n INVALID_URL: () => 'Ссылка введена некорректно. Пример: https://example.com, example.com',\n\n PASSPORT_INVALID_TYPE: () => 'Паспортные данные введены некорректно',\n PASSPORT_NON_EMPTY: () => 'Поле обязательно для заполнения',\n PASSPORT_PART_OR_NUMBER_NON_EMPTY: () => 'Серия или номер паспорта не могут быть пустыми',\n INVALID_PASSPORT_PART: () => 'Серия паспорта введена некорректно',\n INVALID_PASSPORT_NUMBER: () => 'Номер паспорта введен некорректно',\n\n DEPARTMENT_NON_EMPTY: () => 'Поле обязательно для заполнения',\n INVALID_DEPARTMENT: () => 'Код подразделения введён некорректно',\n\n CURRENCY_NON_EMPTY: () => 'Не выбрана валюта'\n}\n"],"names":["baseDefaultMessages","min","max","length","range","date","TypeGuards","formatDateToLocaleString"],"mappings":"8sDAIO,MAAMA,EAAsB,CACjC,UAAW,IAAM,4BACjB,WAAaC,GAAgB,2CAA2CA,CAAG,GAC3E,WAAaC,GAAgB,4CAA4CA,CAAG,GAC5E,WAAaC,GAAmB,kDAAkDA,CAAM,GACxF,UAAYF,GAAgB,qCAAqCA,CAAG,GACpE,UAAYC,GAAgB,qCAAqCA,CAAG,GAEpE,gBAAiB,IAAM,4CACvB,uBAAwB,IAAM,kEAE9B,cAAe,IAAM,sDACrB,gBAAiB,IAAM,kCAEvB,iBAAkB,IAAM,6BACxB,2BAA6BC,GAAmB,qBAAqBA,CAAM,aAC3E,2BAA6BA,GAAmB,qBAAqBA,CAAM,aAC3E,kBAAoBA,GAAmB,yDAAyDA,CAAM,GAEtG,oBAAqB,IAAM,2BAC3B,eAAgB,IAAM,eACtB,mBAA0CC,GAAe,8BAA8BA,EAAM,KAAK,IAAI,CAAC,GAEvG,SAAWH,GAAuB,CAChC,MAAMI,EAAOC,EAAW,SAASL,CAAG,EAAI,IAAI,KAAKA,CAAG,EAAIA,EAExD,MAAO,wCAAwCM,EAAyBF,CAAI,CAAC,EAC/E,EACA,SAAWH,GAAuB,CAChC,MAAMG,EAAOC,EAAW,SAASJ,CAAG,EAAI,IAAI,KAAKA,CAAG,EAAIA,EAExD,MAAO,uCAAuCK,EAAyBF,CAAI,CAAC,EAC9E,EAEA,qBAAsB,IAAM,oCAE5B,YAAa,IAAM,uEAEnB,sBAAuB,IAAM,wCAC7B,mBAAoB,IAAM,kCAC1B,kCAAmC,IAAM,iDACzC,sBAAuB,IAAM,qCAC7B,wBAAyB,IAAM,oCAE/B,qBAAsB,IAAM,kCAC5B,mBAAoB,IAAM,uCAE1B,mBAAoB,IAAM,mBAC5B"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import*as r from"../../../../node_modules/zod/v3/external.js";import{baseDefaultMessages as t}from"./base.constants.js";import{getSelectSchema as a}from"./select.validators.js";import{getStringSchema as l}from"./string.validators.js";import{TypeGuards as d}from"../../utils/typeGuards.js";const
|
|
1
|
+
import*as r from"../../../../node_modules/zod/v3/external.js";import{baseDefaultMessages as t}from"./base.constants.js";import{getSelectSchema as a}from"./select.validators.js";import{getStringSchema as l}from"./string.validators.js";import"../../../../node_modules/classnames/index.js";import{TypeGuards as d}from"../../utils/typeGuards.js";const p={value:"",currency:null},f=o=>{const{min:m=1,max:i,message:e,defaultValue:n=p}=o??{};return r.object({value:l(),currency:a()}).superRefine(({value:s,currency:c},u)=>{d.isStringEmpty(s)&&u.addIssue({code:r.ZodIssueCode.too_small,type:"string",minimum:0,inclusive:!0,message:(e==null?void 0:e.valueEmpty)??t.NON_EMPTY()}),Number(s)<m&&u.addIssue({code:r.ZodIssueCode.too_small,type:"string",minimum:m,inclusive:!0,message:(e==null?void 0:e.min)??t.MIN_VALUE(m)}),d.isNil(c)&&u.addIssue({code:r.ZodIssueCode.invalid_type,expected:"string",received:"null",message:(e==null?void 0:e.currencyEmpty)??t.CURRENCY_NON_EMPTY()}),i&&Number(s)>i&&u.addIssue({code:r.ZodIssueCode.too_big,type:"string",maximum:i,inclusive:!0,message:(e==null?void 0:e.max)??t.MAX_VALUE(i)})}).default(n)};function _(o){return f(o)}export{_ as getCurrencySchema};
|
|
2
2
|
//# sourceMappingURL=currency.validators.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"currency.validators.js","sources":["../../../../../lib/shared/validation/base/currency.validators.ts"],"sourcesContent":["import z from 'zod'\nimport { baseDefaultMessages } from './base.constants'\nimport { getSelectSchema } from './select.validators'\nimport { getStringSchema } from './string.validators'\nimport type { CurrencyValue } from '$/shared/ui/formElements/uncontrolled/inputCurrency'\nimport { TypeGuards } from '$/shared/utils'\n\nexport type CurrencyValidationOptions = {\n /**\n * Минимальное значение\n * @default 1\n */\n min?: number\n /**\n * Максимальное значение\n * @default undefined\n */\n max?: number\n /**\n * Значение по умолчанию\n * @default { value: '', currency: null }\n */\n defaultValue?: CurrencyValue\n /**\n * Произвольные сообщения об ошибках\n */\n message?: Partial<\n Record<keyof Omit<CurrencyValidationOptions, 'message' | 'defaultValue'> | 'currencyEmpty' | 'valueEmpty', string>\n >\n}\n\nconst defaultCurrency: CurrencyValue = {\n value: '',\n currency: null\n}\n\nconst getCurrencyRequired = (props?: CurrencyValidationOptions) => {\n const { min = 1, max, message, defaultValue = defaultCurrency } = props ?? {}\n\n return z\n .object({\n value: getStringSchema(),\n currency: getSelectSchema()\n })\n .superRefine(({ value, currency }, context) => {\n if (TypeGuards.isStringEmpty(value)) {\n context.addIssue({\n code: z.ZodIssueCode.too_small,\n type: 'string',\n minimum: 0,\n inclusive: true,\n message: message?.valueEmpty ?? baseDefaultMessages.NON_EMPTY()\n })\n }\n\n if (Number(value) < min) {\n context.addIssue({\n code: z.ZodIssueCode.too_small,\n type: 'string',\n minimum: min,\n inclusive: true,\n message: message?.min ?? baseDefaultMessages.MIN_VALUE(min)\n })\n }\n\n if (TypeGuards.isNil(currency)) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_type,\n expected: 'string',\n received: 'null',\n message: message?.currencyEmpty ?? baseDefaultMessages.CURRENCY_NON_EMPTY()\n })\n }\n\n if (max) {\n if (Number(value) > max) {\n context.addIssue({\n code: z.ZodIssueCode.too_big,\n type: 'string',\n maximum: max,\n inclusive: true,\n message: message?.max ?? baseDefaultMessages.MAX_VALUE(max)\n })\n }\n }\n })\n .default(defaultValue)\n}\ntype CurrencyRequiredSchema = ReturnType<typeof getCurrencyRequired>\n\n/**\n * Схема валидации обязательного поля валюты\n * @param {CurrencyValidationOptions} props настройки схемы\n * @typeParam `min` - `number | undefined` `default: 1`\n * @typeParam `max` - `number | undefined` `default: undefined`\n * @typeParam `message` - `{ [min | max | currencyEmpty | valueEmpty]: string }`\n * @typeParam `defaultValue` - `CurrencyValue` `default: { value: '', currency: null }`\n * @returns схема валидации поля в соответствии с настройками\n *\n * @example with required min value\n * z.object({\n * field: zodValidators.base.getCurrencySchema({ min: 10 })\n * })\n * // will returns z.object({\n * value: z.string().min(10),\n * currency: z.string().nullable()\n * })\n *\n * @example with required min, max value\n * z.object({\n * field: zodValidators.base.getCurrencySchema({ min: 10, max: 20 })\n * })\n * // will returns z.object({\n * value: z.string().min(10).max(20),\n * currency: z.string().nullable()\n * })\n */\nexport function getCurrencySchema(props?: CurrencyValidationOptions): CurrencyRequiredSchema {\n return getCurrencyRequired(props)\n}\n"],"names":["defaultCurrency","getCurrencyRequired","props","min","max","message","defaultValue","z","getStringSchema","getSelectSchema","value","currency","context","TypeGuards","baseDefaultMessages","getCurrencySchema"],"mappings":"
|
|
1
|
+
{"version":3,"file":"currency.validators.js","sources":["../../../../../lib/shared/validation/base/currency.validators.ts"],"sourcesContent":["import z from 'zod'\nimport { baseDefaultMessages } from './base.constants'\nimport { getSelectSchema } from './select.validators'\nimport { getStringSchema } from './string.validators'\nimport type { CurrencyValue } from '$/shared/ui/formElements/uncontrolled/inputCurrency'\nimport { TypeGuards } from '$/shared/utils'\n\nexport type CurrencyValidationOptions = {\n /**\n * Минимальное значение\n * @default 1\n */\n min?: number\n /**\n * Максимальное значение\n * @default undefined\n */\n max?: number\n /**\n * Значение по умолчанию\n * @default { value: '', currency: null }\n */\n defaultValue?: CurrencyValue\n /**\n * Произвольные сообщения об ошибках\n */\n message?: Partial<\n Record<keyof Omit<CurrencyValidationOptions, 'message' | 'defaultValue'> | 'currencyEmpty' | 'valueEmpty', string>\n >\n}\n\nconst defaultCurrency: CurrencyValue = {\n value: '',\n currency: null\n}\n\nconst getCurrencyRequired = (props?: CurrencyValidationOptions) => {\n const { min = 1, max, message, defaultValue = defaultCurrency } = props ?? {}\n\n return z\n .object({\n value: getStringSchema(),\n currency: getSelectSchema()\n })\n .superRefine(({ value, currency }, context) => {\n if (TypeGuards.isStringEmpty(value)) {\n context.addIssue({\n code: z.ZodIssueCode.too_small,\n type: 'string',\n minimum: 0,\n inclusive: true,\n message: message?.valueEmpty ?? baseDefaultMessages.NON_EMPTY()\n })\n }\n\n if (Number(value) < min) {\n context.addIssue({\n code: z.ZodIssueCode.too_small,\n type: 'string',\n minimum: min,\n inclusive: true,\n message: message?.min ?? baseDefaultMessages.MIN_VALUE(min)\n })\n }\n\n if (TypeGuards.isNil(currency)) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_type,\n expected: 'string',\n received: 'null',\n message: message?.currencyEmpty ?? baseDefaultMessages.CURRENCY_NON_EMPTY()\n })\n }\n\n if (max) {\n if (Number(value) > max) {\n context.addIssue({\n code: z.ZodIssueCode.too_big,\n type: 'string',\n maximum: max,\n inclusive: true,\n message: message?.max ?? baseDefaultMessages.MAX_VALUE(max)\n })\n }\n }\n })\n .default(defaultValue)\n}\ntype CurrencyRequiredSchema = ReturnType<typeof getCurrencyRequired>\n\n/**\n * Схема валидации обязательного поля валюты\n * @param {CurrencyValidationOptions} props настройки схемы\n * @typeParam `min` - `number | undefined` `default: 1`\n * @typeParam `max` - `number | undefined` `default: undefined`\n * @typeParam `message` - `{ [min | max | currencyEmpty | valueEmpty]: string }`\n * @typeParam `defaultValue` - `CurrencyValue` `default: { value: '', currency: null }`\n * @returns схема валидации поля в соответствии с настройками\n *\n * @example with required min value\n * z.object({\n * field: zodValidators.base.getCurrencySchema({ min: 10 })\n * })\n * // will returns z.object({\n * value: z.string().min(10),\n * currency: z.string().nullable()\n * })\n *\n * @example with required min, max value\n * z.object({\n * field: zodValidators.base.getCurrencySchema({ min: 10, max: 20 })\n * })\n * // will returns z.object({\n * value: z.string().min(10).max(20),\n * currency: z.string().nullable()\n * })\n */\nexport function getCurrencySchema(props?: CurrencyValidationOptions): CurrencyRequiredSchema {\n return getCurrencyRequired(props)\n}\n"],"names":["defaultCurrency","getCurrencyRequired","props","min","max","message","defaultValue","z","getStringSchema","getSelectSchema","value","currency","context","TypeGuards","baseDefaultMessages","getCurrencySchema"],"mappings":"sVA+BA,MAAMA,EAAiC,CACrC,MAAO,GACP,SAAU,IACZ,EAEMC,EAAuBC,GAAsC,CACjE,KAAM,CAAE,IAAAC,EAAM,EAAG,IAAAC,EAAK,QAAAC,EAAS,aAAAC,EAAeN,GAAoBE,GAAS,CAAA,EAE3E,OAAOK,EACJ,OAAO,CACN,MAAOC,EAAA,EACP,SAAUC,EAAA,CAAgB,CAC3B,EACA,YAAY,CAAC,CAAE,MAAAC,EAAO,SAAAC,CAAA,EAAYC,IAAY,CACzCC,EAAW,cAAcH,CAAK,GAChCE,EAAQ,SAAS,CACf,KAAML,EAAE,aAAa,UACrB,KAAM,SACN,QAAS,EACT,UAAW,GACX,SAASF,GAAA,YAAAA,EAAS,aAAcS,EAAoB,UAAA,CAAU,CAC/D,EAGC,OAAOJ,CAAK,EAAIP,GAClBS,EAAQ,SAAS,CACf,KAAML,EAAE,aAAa,UACrB,KAAM,SACN,QAASJ,EACT,UAAW,GACX,SAASE,GAAA,YAAAA,EAAS,MAAOS,EAAoB,UAAUX,CAAG,CAAA,CAC3D,EAGCU,EAAW,MAAMF,CAAQ,GAC3BC,EAAQ,SAAS,CACf,KAAML,EAAE,aAAa,aACrB,SAAU,SACV,SAAU,OACV,SAASF,GAAA,YAAAA,EAAS,gBAAiBS,EAAoB,mBAAA,CAAmB,CAC3E,EAGCV,GACE,OAAOM,CAAK,EAAIN,GAClBQ,EAAQ,SAAS,CACf,KAAML,EAAE,aAAa,QACrB,KAAM,SACN,QAASH,EACT,UAAW,GACX,SAASC,GAAA,YAAAA,EAAS,MAAOS,EAAoB,UAAUV,CAAG,CAAA,CAC3D,CAGP,CAAC,EACA,QAAQE,CAAY,CACzB,EA8BO,SAASS,EAAkBb,EAA2D,CAC3F,OAAOD,EAAoBC,CAAK,CAClC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import*as o from"../../../../node_modules/zod/v3/external.js";import{baseDefaultMessages as a}from"./base.constants.js";import"react/jsx-runtime";import{TypeGuards as n}from"../../utils/typeGuards.js";import"../../ui/button/Button.js";import"../../ui/buttonIcon/ButtonIcon.js";import"../../ui/calendar/Calendar.js";import{DATE_VISIBLE_PATTERN as D}from"../../ui/calendar/model/utils.js";import"../../ui/accordion/Accordion.js";import"react";import"react-dom";import"../../ui/modal/ui/IframeModalContent.js";import"../../../../node_modules/react-hot-toast/dist/index.js";import"../../ui/table/ui/primitives/Primitives.js";import"../../ui/carousel/ui/CarouselContent.js";import"../../ui/slot/Slot.js";import"../../ui/formElements/uncontrolled/autocomplete/Autocomplete.js";import"../../ui/formElements/uncontrolled/checkbox/Checkbox.js";import"../../ui/formElements/uncontrolled/combobox/combobox.js";import"../../ui/formElements/uncontrolled/dayPicker/DayPicker.js";import"../../ui/formElements/uncontrolled/input/Input.js";import"../../ui/formElements/uncontrolled/inputOtp/InputOtpBase.js";import"../../ui/formElements/uncontrolled/maskInput/MaskInput.js";import"../../ui/formElements/uncontrolled/radio/RadioGroup.js";import"../../ui/formElements/uncontrolled/radio/ui/RadioItem.js";import"../../ui/formElements/uncontrolled/slider/SliderBase.js";import"../../ui/formElements/uncontrolled/switch/Switch.js";import"../../ui/formElements/uncontrolled/textarea/Textarea.js";import"../../ui/formElements/uncontrolled/uploader/UploaderBase.js";import"../../ui/formElements/uncontrolled/inputCurrency/InputCurrency.js";import"../../ui/formElements/controlled/editor/ui/Editor.js";import"../../ui/formElements/controlled/input/MaskInputControl.js";import"../../ui/dropdownList/ui/dropdownItem/DropdownItem.js";import{parse as _}from"../../../../node_modules/date-fns/parse.js";import{isValid as f}from"../../../../node_modules/date-fns/isValid.js";const g=l=>{const{iso:u=!0,pattern:p=D,min:t,max:d,defaultValue:i,message:e}=l||{};return o.string().min(8,(e==null?void 0:e.min)||a.DATE_NON_EMPTY()).superRefine((r,m)=>{const I=p.replace(/\W/g,"").length;if(r.replace(/[._-]/g,"").length<I&&m.addIssue({code:o.ZodIssueCode.too_small,minimum:I,type:"date",inclusive:!0,message:(e==null?void 0:e.min)||a.DATE_NON_EMPTY()}),u){let T=null;try{T=new Date(r)}catch{m.addIssue({code:o.ZodIssueCode.invalid_date,message:(e==null?void 0:e.invalidDate)||a.DATE_INVALID_FORMAT()})}t&&T.getTime()<(n.isString(t)?new Date(t).getTime():t.getTime())&&m.addIssue({code:o.ZodIssueCode.invalid_date,message:(e==null?void 0:e.min)||a.DATE_MIN(t)}),d&&T.getTime()>(n.isString(d)?new Date(d).getTime():d.getTime())&&m.addIssue({code:o.ZodIssueCode.invalid_date,message:(e==null?void 0:e.max)||a.DATE_MAX(d)})}else{const T=_(r,p,new Date);f(T)||m.addIssue({code:o.ZodIssueCode.invalid_date,message:(e==null?void 0:e.invalidDate)||a.DATE_INVALID_FORMAT()}),t&&T.getTime()<(n.isString(t)?new Date(t).getTime():t.getTime())&&m.addIssue({code:o.ZodIssueCode.invalid_date,message:(e==null?void 0:e.min)||a.DATE_MIN(t)}),d&&T.getTime()>(n.isString(d)?new Date(d).getTime():d.getTime())&&m.addIssue({code:o.ZodIssueCode.invalid_date,message:(e==null?void 0:e.max)||a.DATE_MAX(d)})}}).default(i??"")},c=l=>{const{iso:u=!0,pattern:p=D,min:t,max:d,message:i}=l||{};return o.string().transform(e=>e||void 0).superRefine((e,r)=>{if(n.isString(e)&&e.length){const m=p.replace(/\W/g,"").length;if(e.replace(/[._-]/g,"").length<m&&r.addIssue({code:o.ZodIssueCode.too_small,minimum:m,type:"date",inclusive:!0,message:(i==null?void 0:i.min)||a.DATE_NON_EMPTY()}),u){let s=null;try{s=new Date(e)}catch{r.addIssue({code:o.ZodIssueCode.invalid_date,message:(i==null?void 0:i.invalidDate)||a.DATE_INVALID_FORMAT()})}t&&s.getTime()<(n.isString(t)?new Date(t).getTime():t.getTime())&&r.addIssue({code:o.ZodIssueCode.invalid_date,message:(i==null?void 0:i.min)||a.DATE_MIN(t)}),d&&s.getTime()>(n.isString(d)?new Date(d).getTime():d.getTime())&&r.addIssue({code:o.ZodIssueCode.invalid_date,message:(i==null?void 0:i.max)||a.DATE_MAX(d)})}else{const s=_(e,p,new Date);f(s)||r.addIssue({code:o.ZodIssueCode.invalid_date,message:(i==null?void 0:i.invalidDate)||a.DATE_INVALID_FORMAT()}),t&&s.getTime()<(n.isString(t)?new Date(t).getTime():t.getTime())&&r.addIssue({code:o.ZodIssueCode.invalid_date,message:(i==null?void 0:i.min)||a.DATE_MIN(t)}),d&&s.getTime()>(n.isString(d)?new Date(d).getTime():d.getTime())&&r.addIssue({code:o.ZodIssueCode.invalid_date,message:(i==null?void 0:i.max)||a.DATE_MAX(d)})}}}).optional()};function
|
|
1
|
+
import*as o from"../../../../node_modules/zod/v3/external.js";import{baseDefaultMessages as a}from"./base.constants.js";import"react/jsx-runtime";import"../../../../node_modules/classnames/index.js";import{TypeGuards as n}from"../../utils/typeGuards.js";import"../../ui/button/Button.js";import"../../ui/buttonIcon/ButtonIcon.js";import"../../ui/calendar/Calendar.js";import{DATE_VISIBLE_PATTERN as D}from"../../ui/calendar/model/utils.js";import"../../ui/accordion/Accordion.js";import"react";import"react-dom";import"../../ui/modal/ui/IframeModalContent.js";import"../../../../node_modules/react-hot-toast/dist/index.js";import"../../ui/table/ui/primitives/Primitives.js";import"../../ui/carousel/ui/CarouselContent.js";import"../../ui/slot/Slot.js";import"../../ui/formElements/uncontrolled/autocomplete/Autocomplete.js";import"../../ui/formElements/uncontrolled/checkbox/Checkbox.js";import"../../ui/formElements/uncontrolled/combobox/combobox.js";import"../../ui/formElements/uncontrolled/dayPicker/DayPicker.js";import"../../ui/formElements/uncontrolled/input/Input.js";import"../../ui/formElements/uncontrolled/inputOtp/InputOtpBase.js";import"../../ui/formElements/uncontrolled/maskInput/MaskInput.js";import"../../ui/formElements/uncontrolled/radio/RadioGroup.js";import"../../ui/formElements/uncontrolled/radio/ui/RadioItem.js";import"../../ui/formElements/uncontrolled/slider/SliderBase.js";import"../../ui/formElements/uncontrolled/switch/Switch.js";import"../../ui/formElements/uncontrolled/textarea/Textarea.js";import"../../ui/formElements/uncontrolled/uploader/UploaderBase.js";import"../../ui/formElements/uncontrolled/inputCurrency/InputCurrency.js";import"../../ui/formElements/controlled/editor/ui/Editor.js";import"../../ui/formElements/controlled/input/MaskInputControl.js";import"../../ui/dropdownList/ui/dropdownItem/DropdownItem.js";import{parse as _}from"../../../../node_modules/date-fns/parse.js";import{isValid as f}from"../../../../node_modules/date-fns/isValid.js";const g=l=>{const{iso:u=!0,pattern:p=D,min:t,max:d,defaultValue:i,message:e}=l||{};return o.string().min(8,(e==null?void 0:e.min)||a.DATE_NON_EMPTY()).superRefine((r,m)=>{const I=p.replace(/\W/g,"").length;if(r.replace(/[._-]/g,"").length<I&&m.addIssue({code:o.ZodIssueCode.too_small,minimum:I,type:"date",inclusive:!0,message:(e==null?void 0:e.min)||a.DATE_NON_EMPTY()}),u){let T=null;try{T=new Date(r)}catch{m.addIssue({code:o.ZodIssueCode.invalid_date,message:(e==null?void 0:e.invalidDate)||a.DATE_INVALID_FORMAT()})}t&&T.getTime()<(n.isString(t)?new Date(t).getTime():t.getTime())&&m.addIssue({code:o.ZodIssueCode.invalid_date,message:(e==null?void 0:e.min)||a.DATE_MIN(t)}),d&&T.getTime()>(n.isString(d)?new Date(d).getTime():d.getTime())&&m.addIssue({code:o.ZodIssueCode.invalid_date,message:(e==null?void 0:e.max)||a.DATE_MAX(d)})}else{const T=_(r,p,new Date);f(T)||m.addIssue({code:o.ZodIssueCode.invalid_date,message:(e==null?void 0:e.invalidDate)||a.DATE_INVALID_FORMAT()}),t&&T.getTime()<(n.isString(t)?new Date(t).getTime():t.getTime())&&m.addIssue({code:o.ZodIssueCode.invalid_date,message:(e==null?void 0:e.min)||a.DATE_MIN(t)}),d&&T.getTime()>(n.isString(d)?new Date(d).getTime():d.getTime())&&m.addIssue({code:o.ZodIssueCode.invalid_date,message:(e==null?void 0:e.max)||a.DATE_MAX(d)})}}).default(i??"")},c=l=>{const{iso:u=!0,pattern:p=D,min:t,max:d,message:i}=l||{};return o.string().transform(e=>e||void 0).superRefine((e,r)=>{if(n.isString(e)&&e.length){const m=p.replace(/\W/g,"").length;if(e.replace(/[._-]/g,"").length<m&&r.addIssue({code:o.ZodIssueCode.too_small,minimum:m,type:"date",inclusive:!0,message:(i==null?void 0:i.min)||a.DATE_NON_EMPTY()}),u){let s=null;try{s=new Date(e)}catch{r.addIssue({code:o.ZodIssueCode.invalid_date,message:(i==null?void 0:i.invalidDate)||a.DATE_INVALID_FORMAT()})}t&&s.getTime()<(n.isString(t)?new Date(t).getTime():t.getTime())&&r.addIssue({code:o.ZodIssueCode.invalid_date,message:(i==null?void 0:i.min)||a.DATE_MIN(t)}),d&&s.getTime()>(n.isString(d)?new Date(d).getTime():d.getTime())&&r.addIssue({code:o.ZodIssueCode.invalid_date,message:(i==null?void 0:i.max)||a.DATE_MAX(d)})}else{const s=_(e,p,new Date);f(s)||r.addIssue({code:o.ZodIssueCode.invalid_date,message:(i==null?void 0:i.invalidDate)||a.DATE_INVALID_FORMAT()}),t&&s.getTime()<(n.isString(t)?new Date(t).getTime():t.getTime())&&r.addIssue({code:o.ZodIssueCode.invalid_date,message:(i==null?void 0:i.min)||a.DATE_MIN(t)}),d&&s.getTime()>(n.isString(d)?new Date(d).getTime():d.getTime())&&r.addIssue({code:o.ZodIssueCode.invalid_date,message:(i==null?void 0:i.max)||a.DATE_MAX(d)})}}}).optional()};function ie(l){const{required:u=!0}=l||{};return u?g(l):c(l)}export{ie as getDateSchema};
|
|
2
2
|
//# sourceMappingURL=date.validators.js.map
|