@scbt-ecom/ui 0.143.0 → 0.144.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/shared/style.css +1 -1
- package/dist/lib/shared/ui/dropdownList/DropdownList.js +1 -1
- package/dist/lib/shared/ui/dropdownList/DropdownList.js.map +1 -1
- package/dist/lib/shared/ui/formElements/controlled/autocomplete/AutocompleteControl.js +1 -1
- package/dist/lib/shared/ui/formElements/controlled/autocomplete/AutocompleteControl.js.map +1 -1
- package/dist/lib/shared/ui/formElements/controlled/combobox/ComboboxControl.js +1 -1
- package/dist/lib/shared/ui/formElements/controlled/combobox/ComboboxControl.js.map +1 -1
- package/dist/lib/shared/ui/formElements/controlled/dayPickerControl/single.js +1 -1
- package/dist/lib/shared/ui/formElements/controlled/dayPickerControl/single.js.map +1 -1
- package/dist/lib/shared/ui/formElements/controlled/editor/model/helper.js +1 -1
- package/dist/lib/shared/ui/formElements/controlled/editor/model/helper.js.map +1 -1
- package/dist/lib/shared/ui/formElements/controlled/editor/ui/Editor.js +1 -1
- package/dist/lib/shared/ui/formElements/controlled/editor/ui/Editor.js.map +1 -1
- package/dist/lib/shared/ui/formElements/controlled/input/InputControl.js +1 -1
- package/dist/lib/shared/ui/formElements/controlled/input/InputControl.js.map +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/combobox/combobox.js +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/combobox/combobox.js.map +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/input/Input.js +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/input/Input.js.map +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/radio/RadioGroup.js +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/radio/RadioGroup.js.map +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/slider/ui/sliderAlgorithmic/SliderAlgorithmic.js +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/slider/ui/sliderAlgorithmic/SliderAlgorithmic.js.map +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/slider/ui/sliderMarks/SliderMarks.js +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/slider/ui/sliderMarks/SliderMarks.js.map +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/slider/ui/sliderStep/SliderStep.js +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/slider/ui/sliderStep/SliderStep.js.map +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/textarea/Textarea.js +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/textarea/Textarea.js.map +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/uploader/ui/UploaderFiles.js +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/uploader/ui/UploaderFiles.js.map +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/uploader/ui/UploaderInput.js +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/uploader/ui/UploaderInput.js.map +1 -1
- package/dist/lib/shared/ui/icon/allowedIcons.js +1 -1
- package/dist/lib/shared/ui/icon/allowedIcons.js.map +1 -1
- package/dist/lib/shared/ui/icon/iconsMap.js +1 -1
- package/dist/lib/shared/ui/icon/iconsMap.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/widgets/model/helpers.js +2 -2
- package/dist/lib/widgets/model/helpers.js.map +1 -1
- package/dist/static/editor/nbsp.svg.js +2 -0
- package/dist/static/editor/nbsp.svg.js.map +1 -0
- package/dist/static/static/editor/nbsp.svg +1 -0
- package/dist/stats.html +1 -1
- package/dist/types/lib/shared/ui/formElements/controlled/input/InputControl.d.ts +1 -1
- package/dist/types/lib/shared/ui/icon/allowedIcons.d.ts +2 -2
- package/dist/types/lib/shared/ui/icon/iconsMap.d.ts +6 -0
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as
|
|
1
|
+
import{jsxs as d,jsx as p}from"react/jsx-runtime";import{forwardRef as T,useEffect as C}from"react";import{CharacterCount as M}from"../../../../../../../node_modules/@tiptap/extension-character-count/dist/index.js";import{useEditor as y,EditorContent as L}from"../../../../../../../node_modules/@tiptap/react/dist/index.js";import{cn as e}from"../../../../../utils/cn.js";import"../../../../button/Button.js";import"../../../../buttonIcon/ButtonIcon.js";import"../../../../calendar/Calendar.js";import"../../../../calendar/model/utils.js";import"../../../../accordion/Accordion.js";import"react-hook-form";import"react-dom";import"../../../../modal/ui/IframeModalContent.js";import"../../../../../../../node_modules/react-hot-toast/dist/index.js";import"../../../../table/ui/primitives/Primitives.js";import"../../../../carousel/ui/CarouselContent.js";import"../../../../slot/Slot.js";import"../../../uncontrolled/autocomplete/Autocomplete.js";import"../../../uncontrolled/checkbox/Checkbox.js";import"../../../uncontrolled/combobox/combobox.js";import"../../../uncontrolled/dayPicker/DayPicker.js";import"../../../uncontrolled/input/Input.js";import"../../../uncontrolled/inputOtp/InputOtpBase.js";import"../../../uncontrolled/maskInput/MaskInput.js";import"../../../uncontrolled/radio/RadioGroup.js";import"../../../uncontrolled/radio/ui/RadioItem.js";import"../../../uncontrolled/slider/SliderBase.js";import"../../../uncontrolled/switch/Switch.js";import"../../../uncontrolled/textarea/Textarea.js";import"../../../uncontrolled/uploader/UploaderBase.js";import"../../../uncontrolled/inputCurrency/InputCurrency.js";import"../../../../../../../src/configs/api.js";import"../../input/MaskInputControl.js";import"../../../../dropdownList/ui/dropdownItem/DropdownItem.js";import{MessageView as U}from"../../../ui/MessageView.js";import"../model/extensions.js";import{editorConfig as k}from"../model/config.js";import{Toolbar as A}from"./Toolbar.js";const I=Number.MAX_SAFE_INTEGER,bt=T(({onChange:u,value:m="",label:x,limit:n,error:r,classes:t,editable:f,helperText:b,shouldRerenderOnTransaction:c=!0,externalHandlers:g,small:h,...E},w)=>{const{onUpdate:a}=g||{},o=y({extensions:[...k,M.configure({limit:n??I})],editable:f,content:m,parseOptions:{preserveWhitespace:!0},onUpdate:l=>{const{editor:i}=l,N=i!=null&&i.getText()?i==null?void 0:i.getHTML():"";u(N),a&&a(l)},editorProps:{attributes:{spellcheck:"false",class:e("p-4 outline-none bg-color-blue-grey-100 min-h-[240px] !static max-h-[500px] customScrollbar-y overflow-y-auto break-keep",t==null?void 0:t.editor,{"max-h-[80px] min-h-full":h})}},shouldRerenderOnTransaction:c,...E});return C(()=>{o&&o.getHTML()!==m&&o.commands.setContent(m)},[o,m]),o?d("div",{className:e("flex w-full flex-col",t==null?void 0:t.root),children:[d("div",{className:e("relative flex w-full flex-col rounded-md border border-solid border-warm-grey-200",t==null?void 0:t.wrapper),children:[p(A,{editor:o}),!m&&p("p",{className:e("absolute left-4 top-16 text-color-disabled",t==null?void 0:t.label),children:x}),p(L,{ref:w,editor:o}),n&&d("p",{className:"absolute bottom-4 right-4 text-color-disabled",children:[o.storage.characterCount.characters()," / ",n," символов"]})]}),p(U,{className:t==null?void 0:t.message,intent:r!=null&&r.message?"error":"simple",text:(r==null?void 0:r.message)||b,disabled:!f})]}):null});export{bt as Editor};
|
|
2
2
|
//# sourceMappingURL=Editor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Editor.js","sources":["../../../../../../../../lib/shared/ui/formElements/controlled/editor/ui/Editor.tsx"],"sourcesContent":["import { forwardRef, type ReactElement, useEffect } from 'react'\nimport { type FieldError } from 'react-hook-form'\nimport CharacterCount from '@tiptap/extension-character-count'\nimport { EditorContent, type EditorEvents, useEditor, type UseEditorOptions } from '@tiptap/react'\nimport { MessageView } from '../../../ui'\nimport { type EditorControlClasses } from '../EditorControl'\nimport { editorConfig } from '../model'\nimport { Toolbar } from './Toolbar'\nimport { cn } from '$/shared/utils'\ntype ExternalHandlers = {\n onUpdate?: (editor: EditorEvents['update']) => void\n}\n\ninterface EditorProps extends Partial<UseEditorOptions> {\n onChange: (value: string) => void\n value: string\n error?: FieldError\n classes?: EditorControlClasses\n externalHandlers?: ExternalHandlers\n label?: string\n helperText?: string | ReactElement\n /**\n * Лимит символов\n */\n limit?: number\n /**\n * Сделать текстовый редактор маленьким\n */\n small?: boolean\n}\n\ntype EditorRef = React.ElementRef<typeof EditorContent>\n\nconst DEFAULT_LIMIT = Number.MAX_SAFE_INTEGER\n\nexport const Editor = forwardRef<EditorRef, EditorProps>(\n (\n {\n onChange,\n value = '',\n label,\n limit,\n error,\n classes,\n editable,\n helperText,\n shouldRerenderOnTransaction = true,\n externalHandlers,\n small,\n ...props\n },\n ref\n ) => {\n const { onUpdate: externalOnUpdate } = externalHandlers || {}\n\n const editor = useEditor({\n extensions: [\n ...editorConfig,\n CharacterCount.configure({\n limit: limit ?? DEFAULT_LIMIT\n })\n ],\n editable: editable,\n content: value,\n onUpdate: (props) => {\n const { editor } = props\n const content = editor?.getText() ? editor?.getHTML() : ''\n onChange(content)\n\n if (externalOnUpdate) {\n externalOnUpdate(props)\n }\n },\n editorProps: {\n transformPastedText(text) {\n
|
|
1
|
+
{"version":3,"file":"Editor.js","sources":["../../../../../../../../lib/shared/ui/formElements/controlled/editor/ui/Editor.tsx"],"sourcesContent":["import { forwardRef, type ReactElement, useEffect } from 'react'\nimport { type FieldError } from 'react-hook-form'\nimport CharacterCount from '@tiptap/extension-character-count'\nimport { EditorContent, type EditorEvents, useEditor, type UseEditorOptions } from '@tiptap/react'\nimport { MessageView } from '../../../ui'\nimport { type EditorControlClasses } from '../EditorControl'\nimport { editorConfig } from '../model'\nimport { Toolbar } from './Toolbar'\nimport { cn } from '$/shared/utils'\ntype ExternalHandlers = {\n onUpdate?: (editor: EditorEvents['update']) => void\n}\n\ninterface EditorProps extends Partial<UseEditorOptions> {\n onChange: (value: string) => void\n value: string\n error?: FieldError\n classes?: EditorControlClasses\n externalHandlers?: ExternalHandlers\n label?: string\n helperText?: string | ReactElement\n /**\n * Лимит символов\n */\n limit?: number\n /**\n * Сделать текстовый редактор маленьким\n */\n small?: boolean\n}\n\ntype EditorRef = React.ElementRef<typeof EditorContent>\n\nconst DEFAULT_LIMIT = Number.MAX_SAFE_INTEGER\n\nexport const Editor = forwardRef<EditorRef, EditorProps>(\n (\n {\n onChange,\n value = '',\n label,\n limit,\n error,\n classes,\n editable,\n helperText,\n shouldRerenderOnTransaction = true,\n externalHandlers,\n small,\n ...props\n },\n ref\n ) => {\n const { onUpdate: externalOnUpdate } = externalHandlers || {}\n\n const editor = useEditor({\n extensions: [\n ...editorConfig,\n CharacterCount.configure({\n limit: limit ?? DEFAULT_LIMIT\n })\n ],\n editable: editable,\n content: value,\n parseOptions: {\n preserveWhitespace: true\n },\n onUpdate: (props) => {\n const { editor } = props\n const content = editor?.getText() ? editor?.getHTML() : ''\n onChange(content)\n\n if (externalOnUpdate) {\n externalOnUpdate(props)\n }\n },\n editorProps: {\n // TODO: спросить у Рустема\n // transformPastedText(text) {\n // return text.replace(/\\xA0/g, ' ')\n // },\n // transformPastedHTML(html) {\n // return html.replace(/\\xA0/g, ' ')\n // },\n attributes: {\n spellcheck: 'false',\n class: cn(\n 'p-4 outline-none bg-color-blue-grey-100 min-h-[240px] !static max-h-[500px] customScrollbar-y overflow-y-auto break-keep',\n classes?.editor,\n { 'max-h-[80px] min-h-full': small }\n )\n }\n },\n shouldRerenderOnTransaction,\n ...props\n })\n\n useEffect(() => {\n if (editor && editor.getHTML() !== value) {\n editor.commands.setContent(value)\n }\n }, [editor, value])\n\n if (!editor) {\n return null\n }\n\n return (\n <div className={cn('flex w-full flex-col', classes?.root)}>\n <div\n className={cn('relative flex w-full flex-col rounded-md border border-solid border-warm-grey-200', classes?.wrapper)}\n >\n <Toolbar editor={editor} />\n {!value && <p className={cn('absolute left-4 top-16 text-color-disabled', classes?.label)}>{label}</p>}\n <EditorContent ref={ref} editor={editor} />\n {limit && (\n <p className='absolute bottom-4 right-4 text-color-disabled'>\n {editor.storage.characterCount.characters()} / {limit} символов\n </p>\n )}\n </div>\n\n <MessageView\n className={classes?.message}\n intent={error?.message ? 'error' : 'simple'}\n text={error?.message || helperText}\n disabled={!editable}\n />\n </div>\n )\n }\n)\n"],"names":["DEFAULT_LIMIT","Editor","forwardRef","onChange","value","label","limit","error","classes","editable","helperText","shouldRerenderOnTransaction","externalHandlers","small","props","ref","externalOnUpdate","editor","useEditor","editorConfig","CharacterCount","content","cn","useEffect","jsxs","jsx","Toolbar","EditorContent","MessageView"],"mappings":"65DAiCA,MAAMA,EAAgB,OAAO,iBAEhBC,GAASC,EACpB,CACE,CACE,SAAAC,EACA,MAAAC,EAAQ,GACR,MAAAC,EACA,MAAAC,EACA,MAAAC,EACA,QAAAC,EACA,SAAAC,EACA,WAAAC,EACA,4BAAAC,EAA8B,GAC9B,iBAAAC,EACA,MAAAC,EACA,GAAGC,CAAA,EAELC,IACG,CACH,KAAM,CAAE,SAAUC,CAAA,EAAqBJ,GAAoB,CAAA,EAErDK,EAASC,EAAU,CACvB,WAAY,CACV,GAAGC,EACHC,EAAe,UAAU,CACvB,MAAOd,GAASN,CAAA,CACjB,CAAA,EAEH,SAAAS,EACA,QAASL,EACT,aAAc,CACZ,mBAAoB,EAAA,EAEtB,SAAWU,GAAU,CACnB,KAAM,CAAE,OAAAG,CAAAA,EAAWH,EACbO,EAAUJ,GAAAA,MAAAA,EAAQ,UAAYA,GAAAA,YAAAA,EAAQ,UAAY,GACxDd,EAASkB,CAAO,EAEZL,GACFA,EAAiBF,CAAK,CAE1B,EACA,YAAa,CAQX,WAAY,CACV,WAAY,QACZ,MAAOQ,EACL,2HACAd,GAAA,YAAAA,EAAS,OACT,CAAE,0BAA2BK,CAAA,CAAM,CACrC,CACF,EAEF,4BAAAF,EACA,GAAGG,CAAA,CACJ,EAQD,OANAS,EAAU,IAAM,CACVN,GAAUA,EAAO,QAAA,IAAcb,GACjCa,EAAO,SAAS,WAAWb,CAAK,CAEpC,EAAG,CAACa,EAAQb,CAAK,CAAC,EAEba,IAKF,MAAA,CAAI,UAAWK,EAAG,uBAAwBd,GAAA,YAAAA,EAAS,IAAI,EACtD,SAAA,CAAAgB,EAAC,MAAA,CACC,UAAWF,EAAG,oFAAqFd,GAAA,YAAAA,EAAS,OAAO,EAEnH,SAAA,CAAAiB,EAACC,GAAQ,OAAAT,EAAgB,EACxB,CAACb,GAASqB,EAAC,IAAA,CAAE,UAAWH,EAAG,6CAA8Cd,GAAA,YAAAA,EAAS,KAAK,EAAI,SAAAH,CAAA,CAAM,EAClGoB,EAACE,EAAA,CAAc,IAAAZ,EAAU,OAAAE,CAAA,CAAgB,EACxCX,GACCkB,EAAC,IAAA,CAAE,UAAU,gDACV,SAAA,CAAAP,EAAO,QAAQ,eAAe,WAAA,EAAa,MAAIX,EAAM,WAAA,CAAA,CACxD,CAAA,CAAA,CAAA,EAIJmB,EAACG,EAAA,CACC,UAAWpB,GAAA,YAAAA,EAAS,QACpB,OAAQD,GAAA,MAAAA,EAAO,QAAU,QAAU,SACnC,MAAMA,GAAA,YAAAA,EAAO,UAAWG,EACxB,SAAU,CAACD,CAAA,CAAA,CACb,EACF,EAxBO,IA0BX,CACF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as E,jsx as a}from"react/jsx-runtime";import{useRef as C,useEffect as F}from"react";import{useController as I}from"react-hook-form";import{
|
|
1
|
+
import{jsxs as E,jsx as a}from"react/jsx-runtime";import{useRef as C,useEffect as F}from"react";import{useController as I}from"react-hook-form";import{cn as j}from"../../../../utils/cn.js";import{mergeRefs as N}from"../../../../utils/mergeRefs.js";import"../../../button/Button.js";import"../../../buttonIcon/ButtonIcon.js";import"../../../calendar/Calendar.js";import"../../../calendar/model/utils.js";import"../../../accordion/Accordion.js";import"react-dom";import"../../../modal/ui/IframeModalContent.js";import"../../../../../../node_modules/react-hot-toast/dist/index.js";import"../../../table/ui/primitives/Primitives.js";import"../../../carousel/ui/CarouselContent.js";import"../../../slot/Slot.js";import"../../uncontrolled/autocomplete/Autocomplete.js";import"../../uncontrolled/checkbox/Checkbox.js";import"../../uncontrolled/combobox/combobox.js";import"../../uncontrolled/dayPicker/DayPicker.js";import{InputBase as P}from"../../uncontrolled/input/Input.js";import"../../uncontrolled/inputOtp/InputOtpBase.js";import"../../uncontrolled/maskInput/MaskInput.js";import"../../uncontrolled/radio/RadioGroup.js";import"../../uncontrolled/radio/ui/RadioItem.js";import"../../uncontrolled/slider/SliderBase.js";import"../../uncontrolled/switch/Switch.js";import"../../uncontrolled/textarea/Textarea.js";import"../../uncontrolled/uploader/UploaderBase.js";import"../../uncontrolled/inputCurrency/InputCurrency.js";import{MessageView as R}from"../../ui/MessageView.js";import"../../../../../../src/configs/api.js";import"../editor/ui/Editor.js";import"./MaskInputControl.js";import"../../../dropdownList/ui/dropdownItem/DropdownItem.js";class l extends CustomEvent{constructor(i,o){super(i,o)}}const at=({control:m,name:i,defaultValue:o,disabled:s,rules:c,shouldUnregister:f,helperText:u,classes:d,...p})=>{const e=C(null),{field:n,fieldState:v}=I({control:m,name:i,defaultValue:o,disabled:s,rules:c,shouldUnregister:f}),{error:t,invalid:r,isTouched:h}=v,{message:g,root:w,...x}=d||{};return F(()=>{e.current&&(r&&e.current.dispatchEvent(new l("invalidField",{detail:t})),r||e.current.dispatchEvent(new l("validateField",{detail:t})))},[r]),E("div",{className:j("w-full",w),children:[a(P,{...p,...n,ref:N(e,n.ref),classes:x,invalid:r,attachmentProps:{invalid:r,isTouched:h,withValidateIcons:!0,...p.attachmentProps},"data-error-message":t==null?void 0:t.message}),a(R,{text:(t==null?void 0:t.message)||u,className:g,intent:t?"error":"simple",disabled:s})]})};export{at as InputControl};
|
|
2
2
|
//# sourceMappingURL=InputControl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputControl.js","sources":["../../../../../../../lib/shared/ui/formElements/controlled/input/InputControl.tsx"],"sourcesContent":["'use client'\n\nimport { useEffect, useRef } from 'react'\nimport { type Control, type FieldValues, type Path, useController, type UseControllerProps } from 'react-hook-form'\nimport { InputBase, type InputBaseProps } from '
|
|
1
|
+
{"version":3,"file":"InputControl.js","sources":["../../../../../../../lib/shared/ui/formElements/controlled/input/InputControl.tsx"],"sourcesContent":["'use client'\n\nimport { useEffect, useRef } from 'react'\nimport { type Control, type FieldValues, type Path, useController, type UseControllerProps } from 'react-hook-form'\nimport { InputBase, type InputBaseProps } from '$/shared/ui'\nimport { MessageView } from '$/shared/ui/formElements/ui'\nimport { cn, mergeRefs } from '$/shared/utils'\n\ntype InputControlClasses = InputBaseProps['classes'] & {\n message?: string\n root?: string\n}\n\nexport type InputControlProps<\n TFieldValues extends FieldValues = FieldValues,\n TName extends Path<TFieldValues> = Path<TFieldValues>\n> = UseControllerProps<TFieldValues, TName> &\n Omit<InputBaseProps, 'classes'> & {\n /**\n * Контрол объект для управления полем\n */\n control: Control<TFieldValues>\n /**\n * Дополнительный текст\n */\n helperText?: string\n /**\n * Дополнительные стили компонента\n */\n classes?: InputControlClasses\n }\n\nclass DLGAFieldEvent<T extends {}> extends CustomEvent<T> {\n constructor(type: string, options: { bubbles?: boolean; cancelable?: boolean; detail?: T }) {\n super(type, options)\n }\n}\n\nexport const InputControl = <TFieldValues extends FieldValues = FieldValues>({\n control,\n name,\n defaultValue,\n disabled,\n rules,\n shouldUnregister,\n helperText,\n classes,\n ...props\n}: InputControlProps<TFieldValues>) => {\n const ref = useRef<HTMLInputElement>(null)\n const { field, fieldState } = useController({\n control,\n name,\n defaultValue,\n disabled,\n rules,\n shouldUnregister\n })\n\n const { error, invalid, isTouched } = fieldState\n const { message, root, ...restClasses } = classes || {}\n\n useEffect(() => {\n if (!ref.current) return\n\n if (invalid) {\n ref.current.dispatchEvent(new DLGAFieldEvent('invalidField', { detail: error }))\n }\n if (!invalid) {\n ref.current.dispatchEvent(new DLGAFieldEvent('validateField', { detail: error }))\n }\n }, [invalid])\n\n return (\n <div className={cn('w-full', root)}>\n <InputBase\n {...props}\n {...field}\n ref={mergeRefs(ref, field.ref)}\n classes={restClasses}\n invalid={invalid}\n attachmentProps={{\n invalid,\n isTouched,\n withValidateIcons: true,\n ...props.attachmentProps\n }}\n data-error-message={error?.message}\n />\n <MessageView\n text={error?.message || helperText}\n className={message}\n intent={error ? 'error' : 'simple'}\n disabled={disabled}\n />\n </div>\n )\n}\n"],"names":["DLGAFieldEvent","type","options","InputControl","control","name","defaultValue","disabled","rules","shouldUnregister","helperText","classes","props","ref","useRef","field","fieldState","useController","error","invalid","isTouched","message","root","restClasses","useEffect","cn","jsx","InputBase","mergeRefs","MessageView"],"mappings":"ymDAgCA,MAAMA,UAAqC,WAAe,CACxD,YAAYC,EAAcC,EAAkE,CAC1F,MAAMD,EAAMC,CAAO,CACrB,CACF,CAEO,MAAMC,GAAe,CAAiD,CAC3E,QAAAC,EACA,KAAAC,EACA,aAAAC,EACA,SAAAC,EACA,MAAAC,EACA,iBAAAC,EACA,WAAAC,EACA,QAAAC,EACA,GAAGC,CACL,IAAuC,CACrC,MAAMC,EAAMC,EAAyB,IAAI,EACnC,CAAE,MAAAC,EAAO,WAAAC,CAAA,EAAeC,EAAc,CAC1C,QAAAb,EACA,KAAAC,EACA,aAAAC,EACA,SAAAC,EACA,MAAAC,EACA,iBAAAC,CAAA,CACD,EAEK,CAAE,MAAAS,EAAO,QAAAC,EAAS,UAAAC,CAAA,EAAcJ,EAChC,CAAE,QAAAK,EAAS,KAAAC,EAAM,GAAGC,CAAA,EAAgBZ,GAAW,CAAA,EAErD,OAAAa,EAAU,IAAM,CACTX,EAAI,UAELM,GACFN,EAAI,QAAQ,cAAc,IAAIb,EAAe,eAAgB,CAAE,OAAQkB,CAAA,CAAO,CAAC,EAE5EC,GACHN,EAAI,QAAQ,cAAc,IAAIb,EAAe,gBAAiB,CAAE,OAAQkB,CAAA,CAAO,CAAC,EAEpF,EAAG,CAACC,CAAO,CAAC,IAGT,MAAA,CAAI,UAAWM,EAAG,SAAUH,CAAI,EAC/B,SAAA,CAAAI,EAACC,EAAA,CACE,GAAGf,EACH,GAAGG,EACJ,IAAKa,EAAUf,EAAKE,EAAM,GAAG,EAC7B,QAASQ,EACT,QAAAJ,EACA,gBAAiB,CACf,QAAAA,EACA,UAAAC,EACA,kBAAmB,GACnB,GAAGR,EAAM,eAAA,EAEX,qBAAoBM,GAAA,YAAAA,EAAO,OAAA,CAAA,EAE7BQ,EAACG,EAAA,CACC,MAAMX,GAAA,YAAAA,EAAO,UAAWR,EACxB,UAAWW,EACX,OAAQH,EAAQ,QAAU,SAC1B,SAAAX,CAAA,CAAA,CACF,EACF,CAEJ"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as Q,jsx as m}from"react/jsx-runtime";import{forwardRef as V}from"react";import{useFloating as W}from"../../../../../../node_modules/@floating-ui/react/dist/floating-ui.react.js";import{cn as u}from"../../../../utils/cn.js";import"react-hook-form";import{useClickOutsideMany as X}from"../../../../hooks/useClickOutsideMany.js";import{useCombobox as Y}from"./hooks/useCombobox.js";import{useKeyboardNavigation as Z}from"./hooks/useKeyboardNavigation.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{Icon as _}from"../../../icon/Icon.js";import"../../../table/ui/primitives/Primitives.js";import"../../../carousel/ui/CarouselContent.js";import"../../../slot/Slot.js";import"../autocomplete/Autocomplete.js";import"../checkbox/Checkbox.js";import"../dayPicker/DayPicker.js";import{InputBase as $}from"../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"../../../../../../src/configs/api.js";import"../../controlled/editor/ui/Editor.js";import"../../controlled/input/MaskInputControl.js";import"../../../dropdownList/ui/dropdownItem/DropdownItem.js";import{DropdownList as x}from"../../../dropdownList/DropdownList.js";import{Portal as l}from"../../../portal/Portal.js";import{AnimatePresence as H}from"../../../../../../node_modules/framer-motion/dist/es/components/AnimatePresence/index.js";import{motion as oo}from"../../../../../../node_modules/framer-motion/dist/es/render/components/motion/proxy.js";import{autoUpdate as to}from"../../../../../../node_modules/@floating-ui/dom/dist/floating-ui.dom.js";import{flip as io,offset as ro}from"../../../../../../node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.js";const mo=({options:R,multiple:g,value:f,onChange:k,defaultOpen:v,attachmentProps:
|
|
1
|
+
import{jsxs as Q,jsx as m}from"react/jsx-runtime";import{forwardRef as V}from"react";import{useFloating as W}from"../../../../../../node_modules/@floating-ui/react/dist/floating-ui.react.js";import{cn as u}from"../../../../utils/cn.js";import"react-hook-form";import{useClickOutsideMany as X}from"../../../../hooks/useClickOutsideMany.js";import{useCombobox as Y}from"./hooks/useCombobox.js";import{useKeyboardNavigation as Z}from"./hooks/useKeyboardNavigation.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{Icon as _}from"../../../icon/Icon.js";import"../../../table/ui/primitives/Primitives.js";import"../../../carousel/ui/CarouselContent.js";import"../../../slot/Slot.js";import"../autocomplete/Autocomplete.js";import"../checkbox/Checkbox.js";import"../dayPicker/DayPicker.js";import{InputBase as $}from"../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"../../../../../../src/configs/api.js";import"../../controlled/editor/ui/Editor.js";import"../../controlled/input/MaskInputControl.js";import"../../../dropdownList/ui/dropdownItem/DropdownItem.js";import{DropdownList as x}from"../../../dropdownList/DropdownList.js";import{Portal as l}from"../../../portal/Portal.js";import{AnimatePresence as H}from"../../../../../../node_modules/framer-motion/dist/es/components/AnimatePresence/index.js";import{motion as oo}from"../../../../../../node_modules/framer-motion/dist/es/render/components/motion/proxy.js";import{autoUpdate as to}from"../../../../../../node_modules/@floating-ui/dom/dist/floating-ui.dom.js";import{flip as io,offset as ro}from"../../../../../../node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.js";const mo=({options:R,multiple:g,value:f,onChange:k,defaultOpen:v,attachmentProps:L,searchable:n,invalid:h,displayValue:y,label:N,disabled:a,readOnly:b,className:P,externalHandlers:o,inputValue:d,filterDisabled:s,onInputChange:A,empty:B,classes:t,portal:D=globalThis?(M=>(M=globalThis==null?void 0:globalThis.document)==null?void 0:M.body)():void 0,...c},F)=>{var I;const O=c["data-error-message"],{floating:T,...j}=(t==null?void 0:t.list)??{},{refs:i,floatingStyles:z}=W({placement:"bottom-start",strategy:"absolute",middleware:[io({boundary:"clippingAncestors",crossAxis:!1}),ro(4)],whileElementsMounted:to}),{open:C,setOpen:p,state:E,changeHandler:K,options:S,search:U,onInputChange:q,comboboxDisplayValue:w}=Y({multiple:g,value:f,onChange:k,searchable:n,defaultOpen:v,displayValue:y,initialOptions:R,filterDisabled:s,externalHandlers:o,externalInputValue:d,externalOnInputChange:A});Z({ref:i.domReference,openChangeHandler:p});const G=()=>f?g&&n?w(f):n?U:w(f):"";X([i.floating,i.reference],()=>p(!1));const J=D??i.domReference.current;return Q("div",{ref:i.setReference,className:u("relative w-full",t==null?void 0:t.root,P),children:[m($,{onKeyDown:r=>{r.key==="Tab"&&p(!1)},ref:F,label:N,invalid:h,readOnly:b||!n,value:d||G(),onChange:q,disabled:a,onClick:r=>{var e;C||p(!0),(e=o==null?void 0:o.clickHandler)==null||e.call(o,r)},onBlur:r=>{var e;(e=o==null?void 0:o.blurHandler)==null||e.call(o,r)},onFocus:o==null?void 0:o.focusHandler,classes:{input:u({"cursor-pointer":!n,"cursor-default":a,"pointer-events-none":a||b}),...t==null?void 0:t.input},autoComplete:"off",attachmentProps:{icon:m(_,{name:"arrows/arrowRight",className:u("size-6 rotate-90 text-color-blue-grey-600 duration-100",{"-rotate-90":C,"text-color-negative":h})}),onClickIcon:()=>p(r=>!r),...L},"data-id":"combobox-input","data-error-message":O,dataLayers:c==null?void 0:c.dataLayers}),m(l,{root:J,children:m(H,{children:C&&m(oo.div,{ref:i.setFloating,initial:{opacity:0},animate:{opacity:1},transition:{duration:.1},className:u("z-[1000]",T),style:{...z,width:(I=i.reference.current)==null?void 0:I.getBoundingClientRect().width},children:m(x,{empty:B,options:S,multiple:g,onPick:K,value:E,displayValue:y,classes:j,target:i.domReference})})})})]})},_o=V(mo);export{_o as Combobox};
|
|
2
2
|
//# sourceMappingURL=combobox.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"combobox.js","sources":["../../../../../../../lib/shared/ui/formElements/uncontrolled/combobox/combobox.tsx"],"sourcesContent":["import { type ForwardedRef, forwardRef } from 'react'\nimport { autoUpdate, flip, offset, useFloating } from '@floating-ui/react'\nimport { AnimatePresence, motion } from 'framer-motion'\nimport { useClickOutsideMany } from '../../../../hooks'\nimport { useCombobox, useKeyboardNavigation } from './hooks'\nimport type { ChangeHandler, ComboboxValue } from './model'\nimport type { ComboboxItemOption } from './ui'\nimport { type DataLayers, type DeepPartial } from '$/shared/types'\nimport { DropdownList, Icon, InputBase, type InputBaseProps, Portal } from '$/shared/ui'\nimport { type DropdownListClasses, type DropdownListProps } from '$/shared/ui/dropdownList'\nimport { type IFieldAttachmentProps } from '$/shared/ui/formElements/ui'\nimport { cn } from '$/shared/utils'\n\nexport type ComboboxClasses = {\n root?: string\n list?: { floating?: string } & DropdownListClasses\n input?: InputBaseProps['classes']\n}\n\nexport type ExternalHandlers<Multi extends boolean> = {\n changeHandler?: ChangeHandler<Multi>\n clickHandler?: (event: React.MouseEvent<HTMLElement>) => void\n blurHandler?: (event: React.FocusEvent<HTMLElement>) => void\n focusHandler?: (event: React.FocusEvent<HTMLElement>) => void\n inputChangeHandler?: (value: string) => void\n onKeyDown?: (value: React.KeyboardEventHandler<HTMLInputElement>) => void\n}\n\nexport interface ComboboxProps<Multi extends boolean>\n extends Omit<DropdownListProps<Multi>, 'options' | 'value' | 'onChange'>,\n Record<`data-${string}`, unknown> {\n /**\n * Список опций\n */\n options: ComboboxItemOption[]\n /**\n * Выбранное значение\n */\n value?: ComboboxValue<Multi>\n /**\n * Функция для изменения значения\n */\n onChange?: ChangeHandler<Multi>\n /**\n * Свойство управляющее поиском\n */\n searchable?: boolean\n /**\n * Открыть список по умолчанию\n */\n defaultOpen?: boolean\n /**\n * Свойства дополнительной иконки\n */\n attachmentProps?: DeepPartial<IFieldAttachmentProps>\n /**\n * Пометить поле как не валидное\n */\n invalid?: boolean\n /**\n * Функция для управления отображаемым значением\n */\n displayValue?: (option: ComboboxItemOption) => string\n /**\n * Отображаемый лейбл\n */\n label: string\n /**\n * Выключено поле\n */\n disabled?: boolean\n /**\n * Только для чтения\n */\n readOnly?: boolean\n /**\n * Дополнительные стили\n */\n classes?: ComboboxClasses\n /**\n * Дополнительные события\n */\n externalHandlers?: ExternalHandlers<Multi>\n /**\n * Функция для изменения значения поиска\n */\n onInputChange?: (value: string) => void\n /**\n * Значение инпута\n */\n inputValue?: string\n /**\n * Выключить фильтрацию списка\n */\n filterDisabled?: boolean\n /**\n * Включить рендеринг в портале\n * @property {false | HTMLElement} portal document.body\n */\n portal?: false | HTMLElement\n /**\n * Обработка ошибок для даталееров\n */\n ['data-error-message']?: string\n /**\n * Даталееры\n */\n dataLayers?: DataLayers\n}\n\nconst InnerComponent = <Multi extends boolean>(\n {\n options: initialOptions,\n multiple,\n value,\n onChange,\n defaultOpen,\n attachmentProps,\n searchable,\n invalid,\n displayValue,\n label,\n disabled,\n readOnly,\n className,\n externalHandlers,\n inputValue,\n filterDisabled,\n onInputChange: externalInputChangeHandler,\n empty,\n classes,\n portal = globalThis ? globalThis?.document?.body : undefined,\n ...props\n }: ComboboxProps<Multi>,\n ref: ForwardedRef<HTMLInputElement>\n) => {\n const dataErrorMessage = props['data-error-message']\n\n const { floating, ...dropdownClasses } = classes?.list ?? {}\n\n const { refs, floatingStyles } = useFloating<HTMLDivElement>({\n placement: 'bottom-start',\n strategy: 'absolute',\n middleware: [\n flip({\n boundary: 'clippingAncestors',\n crossAxis: false\n }),\n offset(4)\n ],\n whileElementsMounted: autoUpdate\n })\n\n const { open, setOpen, state, changeHandler, options, search, onInputChange, comboboxDisplayValue } = useCombobox({\n multiple,\n value,\n onChange,\n searchable,\n defaultOpen,\n displayValue,\n initialOptions,\n filterDisabled,\n externalHandlers,\n externalInputValue: inputValue,\n externalOnInputChange: externalInputChangeHandler\n })\n\n useKeyboardNavigation({ ref: refs.domReference, openChangeHandler: setOpen })\n\n const getLabel = () => {\n if (!value) return ''\n\n if (multiple && searchable) {\n return comboboxDisplayValue(value)\n } else if (searchable) {\n return search\n } else {\n return comboboxDisplayValue(value)\n }\n }\n\n useClickOutsideMany([refs.floating, refs.reference as React.MutableRefObject<HTMLElement | null>], () => setOpen(false))\n\n const portalContainer = portal ?? refs.domReference.current!\n\n return (\n <div ref={refs.setReference} className={cn('relative w-full', classes?.root, className)}>\n <InputBase\n onKeyDown={(event) => {\n if (event.key === 'Tab') {\n setOpen(false)\n }\n }}\n ref={ref}\n label={label}\n invalid={invalid}\n readOnly={readOnly || !searchable}\n value={inputValue || getLabel()}\n onChange={onInputChange}\n disabled={disabled}\n onClick={(event) => {\n if (!open) setOpen(true)\n externalHandlers?.clickHandler?.(event)\n }}\n onBlur={(event) => {\n externalHandlers?.blurHandler?.(event)\n }}\n onFocus={externalHandlers?.focusHandler}\n classes={{\n input: cn({\n 'cursor-pointer': !searchable,\n 'cursor-default': disabled,\n 'pointer-events-none': disabled || readOnly\n }),\n ...classes?.input\n }}\n autoComplete='off'\n attachmentProps={{\n icon: (\n <Icon\n name='arrows/arrowRight'\n className={cn('size-6 rotate-90 text-color-blue-grey-600 duration-100', {\n '-rotate-90': open,\n 'text-color-negative': invalid\n })}\n />\n ),\n onClickIcon: () => setOpen((prev) => !prev),\n ...attachmentProps\n }}\n data-test-id='combobox-input'\n data-error-message={dataErrorMessage}\n dataLayers={props?.dataLayers}\n />\n\n <Portal root={portalContainer}>\n <AnimatePresence>\n {open && (\n <motion.div\n ref={refs.setFloating}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.1 }}\n className={cn('z-[1000]', floating)}\n style={{\n ...floatingStyles,\n width: refs.reference.current?.getBoundingClientRect().width\n }}\n >\n <DropdownList\n empty={empty}\n options={options}\n multiple={multiple}\n onPick={changeHandler}\n value={state}\n displayValue={displayValue}\n classes={dropdownClasses}\n target={refs.domReference}\n />\n </motion.div>\n )}\n </AnimatePresence>\n </Portal>\n </div>\n )\n}\n\nexport const Combobox = forwardRef(InnerComponent) as <Multi extends boolean>(\n props: ComboboxProps<Multi> & { ref?: ForwardedRef<HTMLInputElement> }\n) => React.JSX.Element\n"],"names":["InnerComponent","initialOptions","multiple","value","onChange","defaultOpen","attachmentProps","searchable","invalid","displayValue","label","disabled","readOnly","className","externalHandlers","inputValue","filterDisabled","externalInputChangeHandler","empty","classes","portal","_a","props","ref","dataErrorMessage","floating","dropdownClasses","refs","floatingStyles","useFloating","flip","offset","autoUpdate","open","setOpen","state","changeHandler","options","search","onInputChange","comboboxDisplayValue","useCombobox","useKeyboardNavigation","getLabel","useClickOutsideMany","portalContainer","jsxs","cn","jsx","InputBase","event","Icon","prev","Portal","AnimatePresence","motion","DropdownList","Combobox","forwardRef"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"combobox.js","sources":["../../../../../../../lib/shared/ui/formElements/uncontrolled/combobox/combobox.tsx"],"sourcesContent":["import { type ForwardedRef, forwardRef } from 'react'\nimport { autoUpdate, flip, offset, useFloating } from '@floating-ui/react'\nimport { AnimatePresence, motion } from 'framer-motion'\nimport { useClickOutsideMany } from '../../../../hooks'\nimport { useCombobox, useKeyboardNavigation } from './hooks'\nimport type { ChangeHandler, ComboboxValue } from './model'\nimport type { ComboboxItemOption } from './ui'\nimport { type DataLayers, type DeepPartial } from '$/shared/types'\nimport { DropdownList, Icon, InputBase, type InputBaseProps, Portal } from '$/shared/ui'\nimport { type DropdownListClasses, type DropdownListProps } from '$/shared/ui/dropdownList'\nimport { type IFieldAttachmentProps } from '$/shared/ui/formElements/ui'\nimport { cn } from '$/shared/utils'\n\nexport type ComboboxClasses = {\n root?: string\n list?: { floating?: string } & DropdownListClasses\n input?: InputBaseProps['classes']\n}\n\nexport type ExternalHandlers<Multi extends boolean> = {\n changeHandler?: ChangeHandler<Multi>\n clickHandler?: (event: React.MouseEvent<HTMLElement>) => void\n blurHandler?: (event: React.FocusEvent<HTMLElement>) => void\n focusHandler?: (event: React.FocusEvent<HTMLElement>) => void\n inputChangeHandler?: (value: string) => void\n onKeyDown?: (value: React.KeyboardEventHandler<HTMLInputElement>) => void\n}\n\nexport interface ComboboxProps<Multi extends boolean>\n extends Omit<DropdownListProps<Multi>, 'options' | 'value' | 'onChange'>,\n Record<`data-${string}`, unknown> {\n /**\n * Список опций\n */\n options: ComboboxItemOption[]\n /**\n * Выбранное значение\n */\n value?: ComboboxValue<Multi>\n /**\n * Функция для изменения значения\n */\n onChange?: ChangeHandler<Multi>\n /**\n * Свойство управляющее поиском\n */\n searchable?: boolean\n /**\n * Открыть список по умолчанию\n */\n defaultOpen?: boolean\n /**\n * Свойства дополнительной иконки\n */\n attachmentProps?: DeepPartial<IFieldAttachmentProps>\n /**\n * Пометить поле как не валидное\n */\n invalid?: boolean\n /**\n * Функция для управления отображаемым значением\n */\n displayValue?: (option: ComboboxItemOption) => string\n /**\n * Отображаемый лейбл\n */\n label: string\n /**\n * Выключено поле\n */\n disabled?: boolean\n /**\n * Только для чтения\n */\n readOnly?: boolean\n /**\n * Дополнительные стили\n */\n classes?: ComboboxClasses\n /**\n * Дополнительные события\n */\n externalHandlers?: ExternalHandlers<Multi>\n /**\n * Функция для изменения значения поиска\n */\n onInputChange?: (value: string) => void\n /**\n * Значение инпута\n */\n inputValue?: string\n /**\n * Выключить фильтрацию списка\n */\n filterDisabled?: boolean\n /**\n * Включить рендеринг в портале\n * @property {false | HTMLElement} portal document.body\n */\n portal?: false | HTMLElement\n /**\n * Обработка ошибок для даталееров\n */\n ['data-error-message']?: string\n /**\n * Даталееры\n */\n dataLayers?: DataLayers\n}\n\nconst InnerComponent = <Multi extends boolean>(\n {\n options: initialOptions,\n multiple,\n value,\n onChange,\n defaultOpen,\n attachmentProps,\n searchable,\n invalid,\n displayValue,\n label,\n disabled,\n readOnly,\n className,\n externalHandlers,\n inputValue,\n filterDisabled,\n onInputChange: externalInputChangeHandler,\n empty,\n classes,\n portal = globalThis ? globalThis?.document?.body : undefined,\n ...props\n }: ComboboxProps<Multi>,\n ref: ForwardedRef<HTMLInputElement>\n) => {\n const dataErrorMessage = props['data-error-message']\n\n const { floating, ...dropdownClasses } = classes?.list ?? {}\n\n const { refs, floatingStyles } = useFloating<HTMLDivElement>({\n placement: 'bottom-start',\n strategy: 'absolute',\n middleware: [\n flip({\n boundary: 'clippingAncestors',\n crossAxis: false\n }),\n offset(4)\n ],\n whileElementsMounted: autoUpdate\n })\n\n const { open, setOpen, state, changeHandler, options, search, onInputChange, comboboxDisplayValue } = useCombobox({\n multiple,\n value,\n onChange,\n searchable,\n defaultOpen,\n displayValue,\n initialOptions,\n filterDisabled,\n externalHandlers,\n externalInputValue: inputValue,\n externalOnInputChange: externalInputChangeHandler\n })\n\n useKeyboardNavigation({ ref: refs.domReference, openChangeHandler: setOpen })\n\n const getLabel = () => {\n if (!value) return ''\n\n if (multiple && searchable) {\n return comboboxDisplayValue(value)\n } else if (searchable) {\n return search\n } else {\n return comboboxDisplayValue(value)\n }\n }\n\n useClickOutsideMany([refs.floating, refs.reference as React.MutableRefObject<HTMLElement | null>], () => setOpen(false))\n\n const portalContainer = portal ?? refs.domReference.current!\n\n return (\n <div ref={refs.setReference} className={cn('relative w-full', classes?.root, className)}>\n <InputBase\n onKeyDown={(event) => {\n if (event.key === 'Tab') {\n setOpen(false)\n }\n }}\n ref={ref}\n label={label}\n invalid={invalid}\n readOnly={readOnly || !searchable}\n value={inputValue || getLabel()}\n onChange={onInputChange}\n disabled={disabled}\n onClick={(event) => {\n if (!open) setOpen(true)\n externalHandlers?.clickHandler?.(event)\n }}\n onBlur={(event) => {\n externalHandlers?.blurHandler?.(event)\n }}\n onFocus={externalHandlers?.focusHandler}\n classes={{\n input: cn({\n 'cursor-pointer': !searchable,\n 'cursor-default': disabled,\n 'pointer-events-none': disabled || readOnly\n }),\n ...classes?.input\n }}\n autoComplete='off'\n attachmentProps={{\n icon: (\n <Icon\n name='arrows/arrowRight'\n className={cn('size-6 rotate-90 text-color-blue-grey-600 duration-100', {\n '-rotate-90': open,\n 'text-color-negative': invalid\n })}\n />\n ),\n onClickIcon: () => setOpen((prev) => !prev),\n ...attachmentProps\n }}\n data-id='combobox-input'\n data-error-message={dataErrorMessage}\n dataLayers={props?.dataLayers}\n />\n\n <Portal root={portalContainer}>\n <AnimatePresence>\n {open && (\n <motion.div\n ref={refs.setFloating}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.1 }}\n className={cn('z-[1000]', floating)}\n style={{\n ...floatingStyles,\n width: refs.reference.current?.getBoundingClientRect().width\n }}\n >\n <DropdownList\n empty={empty}\n options={options}\n multiple={multiple}\n onPick={changeHandler}\n value={state}\n displayValue={displayValue}\n classes={dropdownClasses}\n target={refs.domReference}\n />\n </motion.div>\n )}\n </AnimatePresence>\n </Portal>\n </div>\n )\n}\n\nexport const Combobox = forwardRef(InnerComponent) as <Multi extends boolean>(\n props: ComboboxProps<Multi> & { ref?: ForwardedRef<HTMLInputElement> }\n) => React.JSX.Element\n"],"names":["InnerComponent","initialOptions","multiple","value","onChange","defaultOpen","attachmentProps","searchable","invalid","displayValue","label","disabled","readOnly","className","externalHandlers","inputValue","filterDisabled","externalInputChangeHandler","empty","classes","portal","_a","props","ref","dataErrorMessage","floating","dropdownClasses","refs","floatingStyles","useFloating","flip","offset","autoUpdate","open","setOpen","state","changeHandler","options","search","onInputChange","comboboxDisplayValue","useCombobox","useKeyboardNavigation","getLabel","useClickOutsideMany","portalContainer","jsxs","cn","jsx","InputBase","event","Icon","prev","Portal","AnimatePresence","motion","DropdownList","Combobox","forwardRef"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as y,jsx as
|
|
1
|
+
import{jsxs as y,jsx as o}from"react/jsx-runtime";import{forwardRef as k,useId as B}from"react";import{FieldAttachment as _}from"../../ui/fieldAttachment/FieldAttachment.js";import{cn as t}from"../../../../utils/cn.js";const C=k(({label:e,value:p,invalid:a,disabled:d,classes:r,renderValues:n,attachmentProps:u,externalHandlers:h,onChange:x,dataLayers:l,...i},c)=>{const b=B(),{onChange:f,...m}=h||{},w=g=>{x&&x(g),f&&f(g)};return y("div",{className:t("relative flex w-full gap-x-4 rounded-sm bg-color-blue-grey-100","[&_label]:focus-within:top-[9px] [&_label]:focus-within:translate-y-0","[&_label]:focus-within:desk-body-regular-s","hover:bg-color-blue-grey-200","border-[1px] border-transparent focus-within:border-blue-grey-800",{"border-secondary-default":a},r==null?void 0:r.container),"data-id":"input-root",children:[n?o("div",{onClick:i.onClick,onBlur:i.onBlur,className:t("peer desk-body-regular-l min-h-[54px] w-full bg-color-transparent [&_input]:px-4 [&_input]:pb-[6px] [&_input]:pt-[28px]","text-color-dark outline-none placeholder:text-color-transparent","flex flex-row flex-wrap gap-2",r==null?void 0:r.renderWrapper),children:n()}):o("input",{...i,...m,onChange:w,disabled:d,"data-layer-id":l==null?void 0:l.targetId,value:p??"",placeholder:e,"aria-placeholder":e,"aria-invalid":a,ref:c,id:b,className:t("peer desk-body-regular-l w-full bg-color-transparent px-4 pb-[9px] pt-[25px]","text-color-dark outline-none placeholder:text-color-transparent",{hidden:!!n},r==null?void 0:r.input)}),o("label",{htmlFor:b,className:t("desk-body-regular-l pointer-events-none absolute left-4 w-[80%] truncate text-start","top-1/2 -translate-y-1/2 text-color-tetriary duration-100",{"desk-body-regular-s top-[9px] translate-y-0":!!p,"text-color-disabled":d},r==null?void 0:r.label),children:e}),u&&o(_,{...u})]})});C.displayName="InputBase";export{C as InputBase};
|
|
2
2
|
//# sourceMappingURL=Input.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Input.js","sources":["../../../../../../../lib/shared/ui/formElements/uncontrolled/input/Input.tsx"],"sourcesContent":["import { forwardRef, useId } from 'react'\nimport { type DataLayers } from '../../../../types'\nimport { FieldAttachment } from '../../ui'\nimport { type DeepPartial } from '$/shared/types'\nimport { cn } from '$/shared/utils'\n\nexport type InputBaseClasses = {\n container?: string\n input?: string\n label?: string\n renderWrapper?: string\n}\n\ntype FieldAttachmentProps = React.ComponentPropsWithoutRef<typeof FieldAttachment>\n\ntype ExternalHandlers = {\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void\n onClick?: (event: React.MouseEvent<HTMLInputElement>) => void\n onFocus?: (event: React.FocusEvent<HTMLInputElement>) => void\n onBlur?: (event: React.FocusEvent<HTMLInputElement>) => void\n}\n\nexport type InputBaseProps = Omit<React.InputHTMLAttributes<HTMLInputElement>, 'placeholder' | 'size'> & {\n /**\n * Дополнительные стили внутренних компонентов\n */\n classes?: InputBaseClasses\n /**\n * Отображаемый placeholder\n */\n label: string\n /**\n * Отображение не валидного поля\n */\n invalid?: boolean\n /**\n * Свойства дополнительной иконки\n */\n attachmentProps?: DeepPartial<FieldAttachmentProps>\n /**\n * Рендер дополнительных значений вместо базового ввода\n */\n renderValues?: () => React.JSX.Element | null\n /**\n * Дополнительные хендлеры\n */\n externalHandlers?: ExternalHandlers\n /**\n * Даталееры\n */\n dataLayers?: DataLayers\n /**\n * Обработка ошибок для даталееров\n */\n ['data-error-message']?: string\n}\n\nexport const InputBase = forwardRef<HTMLInputElement, InputBaseProps>(\n (\n { label, value, invalid, disabled, classes, renderValues, attachmentProps, externalHandlers, onChange, dataLayers, ...props },\n ref\n ) => {\n const id = useId()\n\n const { onChange: externalOnChange, ...restHandlers } = externalHandlers || {}\n\n const onValueChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (onChange) onChange(event)\n if (externalOnChange) externalOnChange(event)\n }\n\n return (\n <div\n className={cn(\n 'relative flex w-full gap-x-4 rounded-sm bg-color-blue-grey-100',\n '[&_label]:focus-within:top-[9px] [&_label]:focus-within:translate-y-0',\n '[&_label]:focus-within:desk-body-regular-s',\n // '[&_label]:focus-within:text-color-tetriary',\n 'hover:bg-color-blue-grey-200',\n 'border-[1px] border-transparent focus-within:border-blue-grey-800',\n {\n 'border-secondary-default': invalid\n },\n classes?.container\n )}\n data-
|
|
1
|
+
{"version":3,"file":"Input.js","sources":["../../../../../../../lib/shared/ui/formElements/uncontrolled/input/Input.tsx"],"sourcesContent":["import { forwardRef, useId } from 'react'\nimport { type DataLayers } from '../../../../types'\nimport { FieldAttachment } from '../../ui'\nimport { type DeepPartial } from '$/shared/types'\nimport { cn } from '$/shared/utils'\n\nexport type InputBaseClasses = {\n container?: string\n input?: string\n label?: string\n renderWrapper?: string\n}\n\ntype FieldAttachmentProps = React.ComponentPropsWithoutRef<typeof FieldAttachment>\n\ntype ExternalHandlers = {\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void\n onClick?: (event: React.MouseEvent<HTMLInputElement>) => void\n onFocus?: (event: React.FocusEvent<HTMLInputElement>) => void\n onBlur?: (event: React.FocusEvent<HTMLInputElement>) => void\n}\n\nexport type InputBaseProps = Omit<React.InputHTMLAttributes<HTMLInputElement>, 'placeholder' | 'size'> & {\n /**\n * Дополнительные стили внутренних компонентов\n */\n classes?: InputBaseClasses\n /**\n * Отображаемый placeholder\n */\n label: string\n /**\n * Отображение не валидного поля\n */\n invalid?: boolean\n /**\n * Свойства дополнительной иконки\n */\n attachmentProps?: DeepPartial<FieldAttachmentProps>\n /**\n * Рендер дополнительных значений вместо базового ввода\n */\n renderValues?: () => React.JSX.Element | null\n /**\n * Дополнительные хендлеры\n */\n externalHandlers?: ExternalHandlers\n /**\n * Даталееры\n */\n dataLayers?: DataLayers\n /**\n * Обработка ошибок для даталееров\n */\n ['data-error-message']?: string\n}\n\nexport const InputBase = forwardRef<HTMLInputElement, InputBaseProps>(\n (\n { label, value, invalid, disabled, classes, renderValues, attachmentProps, externalHandlers, onChange, dataLayers, ...props },\n ref\n ) => {\n const id = useId()\n\n const { onChange: externalOnChange, ...restHandlers } = externalHandlers || {}\n\n const onValueChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (onChange) onChange(event)\n if (externalOnChange) externalOnChange(event)\n }\n\n return (\n <div\n className={cn(\n 'relative flex w-full gap-x-4 rounded-sm bg-color-blue-grey-100',\n '[&_label]:focus-within:top-[9px] [&_label]:focus-within:translate-y-0',\n '[&_label]:focus-within:desk-body-regular-s',\n // '[&_label]:focus-within:text-color-tetriary',\n 'hover:bg-color-blue-grey-200',\n 'border-[1px] border-transparent focus-within:border-blue-grey-800',\n {\n 'border-secondary-default': invalid\n },\n classes?.container\n )}\n data-id='input-root'\n >\n {renderValues ? (\n <div\n onClick={props.onClick}\n onBlur={props.onBlur}\n className={cn(\n 'peer desk-body-regular-l min-h-[54px] w-full bg-color-transparent [&_input]:px-4 [&_input]:pb-[6px] [&_input]:pt-[28px]',\n 'text-color-dark outline-none placeholder:text-color-transparent',\n 'flex flex-row flex-wrap gap-2',\n classes?.renderWrapper\n )}\n >\n {renderValues()}\n </div>\n ) : (\n <input\n {...props}\n {...restHandlers}\n onChange={onValueChange}\n disabled={disabled}\n data-layer-id={dataLayers?.targetId}\n value={value ?? ''}\n placeholder={label}\n aria-placeholder={label}\n aria-invalid={invalid}\n ref={ref}\n id={id}\n className={cn(\n 'peer desk-body-regular-l w-full bg-color-transparent px-4 pb-[9px] pt-[25px]',\n 'text-color-dark outline-none placeholder:text-color-transparent',\n {\n hidden: Boolean(renderValues)\n },\n classes?.input\n )}\n />\n )}\n <label\n htmlFor={id}\n className={cn(\n 'desk-body-regular-l pointer-events-none absolute left-4 w-[80%] truncate text-start',\n 'top-1/2 -translate-y-1/2 text-color-tetriary duration-100',\n {\n 'desk-body-regular-s top-[9px] translate-y-0': Boolean(value),\n 'text-color-disabled': disabled\n },\n classes?.label\n )}\n >\n {label}\n </label>\n {attachmentProps && <FieldAttachment {...attachmentProps} />}\n </div>\n )\n }\n)\nInputBase.displayName = 'InputBase'\n"],"names":["InputBase","forwardRef","label","value","invalid","disabled","classes","renderValues","attachmentProps","externalHandlers","onChange","dataLayers","props","ref","id","useId","externalOnChange","restHandlers","onValueChange","event","jsxs","cn","jsx","FieldAttachment"],"mappings":"2NAyDO,MAAMA,EAAYC,EACvB,CACE,CAAE,MAAAC,EAAO,MAAAC,EAAO,QAAAC,EAAS,SAAAC,EAAU,QAAAC,EAAS,aAAAC,EAAc,gBAAAC,EAAiB,iBAAAC,EAAkB,SAAAC,EAAU,WAAAC,EAAY,GAAGC,CAAA,EACtHC,IACG,CACH,MAAMC,EAAKC,EAAA,EAEL,CAAE,SAAUC,EAAkB,GAAGC,CAAA,EAAiBR,GAAoB,CAAA,EAEtES,EAAiBC,GAA+C,CAChET,KAAmBS,CAAK,EACxBH,KAAmCG,CAAK,CAC9C,EAEA,OACEC,EAAC,MAAA,CACC,UAAWC,EACT,iEACA,wEACA,6CAEA,+BACA,oEACA,CACE,2BAA4BjB,CAAA,EAE9BE,GAAA,YAAAA,EAAS,SAAA,EAEX,UAAQ,aAEP,SAAA,CAAAC,EACCe,EAAC,MAAA,CACC,QAASV,EAAM,QACf,OAAQA,EAAM,OACd,UAAWS,EACT,0HACA,kEACA,gCACAf,GAAA,YAAAA,EAAS,aAAA,EAGV,SAAAC,EAAA,CAAa,CAAA,EAGhBe,EAAC,QAAA,CACE,GAAGV,EACH,GAAGK,EACJ,SAAUC,EACV,SAAAb,EACA,gBAAeM,GAAA,YAAAA,EAAY,SAC3B,MAAOR,GAAS,GAChB,YAAaD,EACb,mBAAkBA,EAClB,eAAcE,EACd,IAAAS,EACA,GAAAC,EACA,UAAWO,EACT,+EACA,kEACA,CACE,OAAQ,EAAQd,CAAY,EAE9BD,GAAA,YAAAA,EAAS,KAAA,CACX,CAAA,EAGJgB,EAAC,QAAA,CACC,QAASR,EACT,UAAWO,EACT,sFACA,4DACA,CACE,8CAA+C,EAAQlB,EACvD,sBAAuBE,CAAA,EAEzBC,GAAA,YAAAA,EAAS,KAAA,EAGV,SAAAJ,CAAA,CAAA,EAEFM,GAAmBc,EAACC,EAAA,CAAiB,GAAGf,CAAA,CAAiB,CAAA,CAAA,CAAA,CAGhE,CACF,EACAR,EAAU,YAAc"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as o,Fragment as j}from"react/jsx-runtime";import{forwardRef as k,createElement as B}from"react";import{Root as E}from"../../../../../../node_modules/@radix-ui/react-radio-group/dist/index.js";import{RadioItem as F}from"./ui/RadioItem.js";import{cn as n}from"../../../../utils/cn.js";const z=k(({options:a,displayValue:c,returnValue:l,invalid:e,className:d,disabled:m,classes:h,externalHandlers:g,onValueChange:
|
|
1
|
+
import{jsx as o,Fragment as j}from"react/jsx-runtime";import{forwardRef as k,createElement as B}from"react";import{Root as E}from"../../../../../../node_modules/@radix-ui/react-radio-group/dist/index.js";import{RadioItem as F}from"./ui/RadioItem.js";import{cn as n}from"../../../../utils/cn.js";const z=k(({options:a,displayValue:c,returnValue:l,invalid:e,className:d,disabled:m,classes:h,externalHandlers:g,onValueChange:f,renderComponent:s,dataLayers:t,...R},w)=>{const{root:x,list:C,radioItem:I}=h||{},{onChange:i,...u}=g||{};return o(E,{...R,onValueChange:r=>{f&&f(r),i&&i(r)},"aria-invalid":e,disabled:m,ref:w,className:n("w-full",d,x),"data-layer-id":t==null?void 0:t.targetId,children:o(j,{children:s?s({options:a,returnValue:l,displayValue:c,invalid:e,disabled:m}):o("ul",{className:n("w-full",C),children:a.map((r,N)=>B(F,{...u,key:r.value,"data-id":`radio-item-${N}`,item:r,invalid:e,disabled:m||(r==null?void 0:r.disabled),classes:I,returnValue:l,displayValue:c}))})})})});export{z as RadioGroupBase};
|
|
2
2
|
//# sourceMappingURL=RadioGroup.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RadioGroup.js","sources":["../../../../../../../lib/shared/ui/formElements/uncontrolled/radio/RadioGroup.tsx"],"sourcesContent":["import { forwardRef } from 'react'\nimport { type RadioGroupProps as RadioGroupPrimitiveProps, Root } from '@radix-ui/react-radio-group'\nimport { type DataLayers } from '../../../../types'\nimport { RadioItem, type RadioOption } from './ui'\nimport { type RadioItemClasses } from './ui/RadioItem'\nimport { cn } from '$/shared/utils'\n\ntype RadioGroupClasses = {\n root?: string\n list?: string\n radioItem?: RadioItemClasses\n}\n\ntype ExternalHandlers = {\n onChange?: (value: string) => void\n onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void\n onFocus?: (event: React.FocusEvent<HTMLButtonElement>) => void\n onBlur?: (event: React.FocusEvent<HTMLButtonElement>) => void\n}\n\nexport type RenderComponentProps = { item: RadioOption; classes?: RadioItemClasses } & Pick<\n RadioGroupBaseProps,\n 'displayValue' | 'returnValue' | 'invalid' | 'disabled'\n>\n\nexport type RadioGroupBaseProps = Omit<RadioGroupPrimitiveProps, 'children'> & {\n /**\n * Список отображаемых опций\n */\n options: RadioOption[]\n /**\n * Функция для управления отображаемым значением\n */\n displayValue?: (option: RadioOption) => string\n /**\n * Функция для управления возвращаемым значением\n */\n returnValue?: (option: RadioOption) => string\n /**\n * Дополнительные стили внутренних компонентов\n */\n classes?: RadioGroupClasses\n /**\n * Свойство для отображения не валидного поля\n */\n invalid?: boolean\n /**\n * Дополнительные хендлеры\n */\n externalHandlers?: ExternalHandlers\n /**\n * Отрисовка компонента из вне\n */\n renderComponent?: (props: RadioGroupBaseProps) => React.JSX.Element\n /**\n * Даталееры\n */\n dataLayers?: DataLayers\n}\n\nexport const RadioGroupBase = forwardRef<HTMLDivElement, RadioGroupBaseProps>(\n (\n {\n options,\n displayValue,\n returnValue,\n invalid,\n className,\n disabled,\n classes,\n externalHandlers,\n onValueChange,\n renderComponent,\n dataLayers,\n ...props\n },\n ref\n ) => {\n const { root, list, radioItem } = classes || {}\n\n const { onChange: externalOnChange, ...restHandlers } = externalHandlers || {}\n\n const onChange = (value: string) => {\n if (onValueChange) onValueChange(value)\n if (externalOnChange) externalOnChange(value)\n }\n\n return (\n <Root\n {...props}\n onValueChange={onChange}\n aria-invalid={invalid}\n disabled={disabled}\n ref={ref}\n className={cn('w-full', className, root)}\n data-layer-id={dataLayers?.targetId}\n >\n <>\n {renderComponent ? (\n renderComponent({ options, returnValue, displayValue, invalid, disabled })\n ) : (\n <ul className={cn('w-full', list)}>\n {options.map((option, index) => (\n <RadioItem\n {...restHandlers}\n key={option.value}\n data-
|
|
1
|
+
{"version":3,"file":"RadioGroup.js","sources":["../../../../../../../lib/shared/ui/formElements/uncontrolled/radio/RadioGroup.tsx"],"sourcesContent":["import { forwardRef } from 'react'\nimport { type RadioGroupProps as RadioGroupPrimitiveProps, Root } from '@radix-ui/react-radio-group'\nimport { type DataLayers } from '../../../../types'\nimport { RadioItem, type RadioOption } from './ui'\nimport { type RadioItemClasses } from './ui/RadioItem'\nimport { cn } from '$/shared/utils'\n\ntype RadioGroupClasses = {\n root?: string\n list?: string\n radioItem?: RadioItemClasses\n}\n\ntype ExternalHandlers = {\n onChange?: (value: string) => void\n onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void\n onFocus?: (event: React.FocusEvent<HTMLButtonElement>) => void\n onBlur?: (event: React.FocusEvent<HTMLButtonElement>) => void\n}\n\nexport type RenderComponentProps = { item: RadioOption; classes?: RadioItemClasses } & Pick<\n RadioGroupBaseProps,\n 'displayValue' | 'returnValue' | 'invalid' | 'disabled'\n>\n\nexport type RadioGroupBaseProps = Omit<RadioGroupPrimitiveProps, 'children'> & {\n /**\n * Список отображаемых опций\n */\n options: RadioOption[]\n /**\n * Функция для управления отображаемым значением\n */\n displayValue?: (option: RadioOption) => string\n /**\n * Функция для управления возвращаемым значением\n */\n returnValue?: (option: RadioOption) => string\n /**\n * Дополнительные стили внутренних компонентов\n */\n classes?: RadioGroupClasses\n /**\n * Свойство для отображения не валидного поля\n */\n invalid?: boolean\n /**\n * Дополнительные хендлеры\n */\n externalHandlers?: ExternalHandlers\n /**\n * Отрисовка компонента из вне\n */\n renderComponent?: (props: RadioGroupBaseProps) => React.JSX.Element\n /**\n * Даталееры\n */\n dataLayers?: DataLayers\n}\n\nexport const RadioGroupBase = forwardRef<HTMLDivElement, RadioGroupBaseProps>(\n (\n {\n options,\n displayValue,\n returnValue,\n invalid,\n className,\n disabled,\n classes,\n externalHandlers,\n onValueChange,\n renderComponent,\n dataLayers,\n ...props\n },\n ref\n ) => {\n const { root, list, radioItem } = classes || {}\n\n const { onChange: externalOnChange, ...restHandlers } = externalHandlers || {}\n\n const onChange = (value: string) => {\n if (onValueChange) onValueChange(value)\n if (externalOnChange) externalOnChange(value)\n }\n\n return (\n <Root\n {...props}\n onValueChange={onChange}\n aria-invalid={invalid}\n disabled={disabled}\n ref={ref}\n className={cn('w-full', className, root)}\n data-layer-id={dataLayers?.targetId}\n >\n <>\n {renderComponent ? (\n renderComponent({ options, returnValue, displayValue, invalid, disabled })\n ) : (\n <ul className={cn('w-full', list)}>\n {options.map((option, index) => (\n <RadioItem\n {...restHandlers}\n key={option.value}\n data-id={`radio-item-${index}`}\n item={option}\n invalid={invalid}\n disabled={disabled || option?.disabled}\n classes={radioItem}\n returnValue={returnValue}\n displayValue={displayValue}\n />\n ))}\n </ul>\n )}\n </>\n </Root>\n )\n }\n)\n"],"names":["RadioGroupBase","forwardRef","options","displayValue","returnValue","invalid","className","disabled","classes","externalHandlers","onValueChange","renderComponent","dataLayers","props","ref","root","list","radioItem","externalOnChange","restHandlers","jsx","Root","value","cn","Fragment","option","index","createElement","RadioItem"],"mappings":"uSA4DO,MAAMA,EAAiBC,EAC5B,CACE,CACE,QAAAC,EACA,aAAAC,EACA,YAAAC,EACA,QAAAC,EACA,UAAAC,EACA,SAAAC,EACA,QAAAC,EACA,iBAAAC,EACA,cAAAC,EACA,gBAAAC,EACA,WAAAC,EACA,GAAGC,CAAA,EAELC,IACG,CACH,KAAM,CAAE,KAAAC,EAAM,KAAAC,EAAM,UAAAC,CAAA,EAAcT,GAAW,CAAA,EAEvC,CAAE,SAAUU,EAAkB,GAAGC,CAAA,EAAiBV,GAAoB,CAAA,EAO5E,OACEW,EAACC,EAAA,CACE,GAAGR,EACJ,cARcS,GAAkB,CAC9BZ,KAA6BY,CAAK,EAClCJ,KAAmCI,CAAK,CAC9C,EAMI,eAAcjB,EACd,SAAAE,EACA,IAAAO,EACA,UAAWS,EAAG,SAAUjB,EAAWS,CAAI,EACvC,gBAAeH,GAAA,YAAAA,EAAY,SAE3B,SAAAQ,EAAAI,EAAA,CACG,WACCb,EAAgB,CAAE,QAAAT,EAAS,YAAAE,EAAa,aAAAD,EAAc,QAAAE,EAAS,SAAAE,CAAA,CAAU,IAExE,KAAA,CAAG,UAAWgB,EAAG,SAAUP,CAAI,EAC7B,SAAAd,EAAQ,IAAI,CAACuB,EAAQC,IACpBC,EAACC,EAAA,CACE,GAAGT,EACJ,IAAKM,EAAO,MACZ,UAAS,cAAcC,CAAK,GAC5B,KAAMD,EACN,QAAApB,EACA,SAAUE,IAAYkB,GAAA,YAAAA,EAAQ,UAC9B,QAASR,EACT,YAAAb,EACA,aAAAD,CAAA,CAAA,CAEH,EACH,CAAA,CAEJ,CAAA,CAAA,CAGN,CACF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as n,jsx as c}from"react/jsx-runtime";import*as h from"react";import{forwardRef as Q}from"react";import{NumericFormat as T}from"../../../../../../../../node_modules/react-number-format/dist/react-number-format.es.js";import{getInputSliderSuffix as b}from"../../model/helpers/getInputSliderSuffix.js";import{SliderInner as U}from"../Slider.js";import{useSliderAlgorithmic as W}from"./hooks/useSliderAlgorithmic.js";import{cn as m}from"../../../../../../utils/cn.js";import{mergeRefs as X}from"../../../../../../utils/mergeRefs.js";import"../../../../../button/Button.js";import"../../../../../buttonIcon/ButtonIcon.js";import"../../../../../calendar/Calendar.js";import"../../../../../calendar/model/utils.js";import"../../../../../accordion/Accordion.js";import"react-hook-form";import"react-dom";import"../../../../../modal/ui/IframeModalContent.js";import"../../../../../../../../node_modules/react-hot-toast/dist/index.js";import{Icon as Y}from"../../../../../icon/Icon.js";import"../../../../../table/ui/primitives/Primitives.js";import"../../../../../carousel/ui/CarouselContent.js";import"../../../../../slot/Slot.js";import"../../../autocomplete/Autocomplete.js";import"../../../checkbox/Checkbox.js";import"../../../combobox/combobox.js";import"../../../dayPicker/DayPicker.js";import{InputBase as Z}from"../../../input/Input.js";import"../../../inputOtp/InputOtpBase.js";import"../../../maskInput/MaskInput.js";import"../../../radio/RadioGroup.js";import"../../../radio/ui/RadioItem.js";import"../../SliderBase.js";import"../../../switch/Switch.js";import"../../../textarea/Textarea.js";import"../../../uploader/UploaderBase.js";import"../../../inputCurrency/InputCurrency.js";import"../../../../../../../../src/configs/api.js";import"../../../../controlled/editor/ui/Editor.js";import"../../../../controlled/input/MaskInputControl.js";import"../../../../../dropdownList/ui/dropdownItem/DropdownItem.js";const _=c(Y,{name:"general/edit",className:"size-[19px] text-icon-blue-grey-600 transition-[color] group-focus-within/icon:text-icon-blue-grey-800"}),zi=Q(({classes:k,invalid:w,externalHandlers:i,disabled:I,value:u,onChange:p,min:e,max:g,suffix:s,label:S,attachmentProps:t,additionalSuffix:C,readOnly:f,componentType:v,dataLayers:d,...r},B)=>{const R=h.useId(),l=h.useRef(null),y=()=>{var o;(o=l==null?void 0:l.current)==null||o.focus()},{sliderValue:j,sliderStep:A,sliderMin:F,sliderMax:M,handleChangeSlider:V}=W({min:e,max:g,defaultValue:0,value:u,onChange:p}),{root:$,slider:z,textLeft:G,textRight:q,inputRoot:D,textContainer:E,input:J,field:K}=k||{};return n("div",{"aria-label":v,className:m("flex w-full flex-col gap-1",$),children:[n("div",{className:m("relative w-full select-none",{"select-none":f},K),children:[c(Z,{label:S,value:u,attachmentProps:{onClickIcon:f?void 0:(t==null?void 0:t.onClickIcon)||y,icon:f?void 0:(t==null?void 0:t.icon)||_,...t},classes:{container:"border-[1px] bg-color-white border-blue-grey-500 focus-within:border-blue-grey-800",...D},onBlur:o=>{r!=null&&r.onBlur&&(r==null||r.onBlur(o)),i!=null&&i.onBlur&&i.onBlur(o)},onClick:i==null?void 0:i.onClick,onFocus:i==null?void 0:i.onBlur,renderValues:()=>c(T,{id:R,readOnly:f,"aria-invalid":w?"true":"false",value:u,disabled:I,suffix:` ${b(s,u)} ${C??""}`,thousandsGroupStyle:"thousand",thousandSeparator:" ",allowNegative:!1,getInputRef:X(l,B),onValueChange:({floatValue:o})=>{var N;o!==void 0&&(p&&p(o),(N=i==null?void 0:i.onInputChange)==null||N.call(i,o))},"data-
|
|
1
|
+
import{jsxs as n,jsx as c}from"react/jsx-runtime";import*as h from"react";import{forwardRef as Q}from"react";import{NumericFormat as T}from"../../../../../../../../node_modules/react-number-format/dist/react-number-format.es.js";import{getInputSliderSuffix as b}from"../../model/helpers/getInputSliderSuffix.js";import{SliderInner as U}from"../Slider.js";import{useSliderAlgorithmic as W}from"./hooks/useSliderAlgorithmic.js";import{cn as m}from"../../../../../../utils/cn.js";import{mergeRefs as X}from"../../../../../../utils/mergeRefs.js";import"../../../../../button/Button.js";import"../../../../../buttonIcon/ButtonIcon.js";import"../../../../../calendar/Calendar.js";import"../../../../../calendar/model/utils.js";import"../../../../../accordion/Accordion.js";import"react-hook-form";import"react-dom";import"../../../../../modal/ui/IframeModalContent.js";import"../../../../../../../../node_modules/react-hot-toast/dist/index.js";import{Icon as Y}from"../../../../../icon/Icon.js";import"../../../../../table/ui/primitives/Primitives.js";import"../../../../../carousel/ui/CarouselContent.js";import"../../../../../slot/Slot.js";import"../../../autocomplete/Autocomplete.js";import"../../../checkbox/Checkbox.js";import"../../../combobox/combobox.js";import"../../../dayPicker/DayPicker.js";import{InputBase as Z}from"../../../input/Input.js";import"../../../inputOtp/InputOtpBase.js";import"../../../maskInput/MaskInput.js";import"../../../radio/RadioGroup.js";import"../../../radio/ui/RadioItem.js";import"../../SliderBase.js";import"../../../switch/Switch.js";import"../../../textarea/Textarea.js";import"../../../uploader/UploaderBase.js";import"../../../inputCurrency/InputCurrency.js";import"../../../../../../../../src/configs/api.js";import"../../../../controlled/editor/ui/Editor.js";import"../../../../controlled/input/MaskInputControl.js";import"../../../../../dropdownList/ui/dropdownItem/DropdownItem.js";const _=c(Y,{name:"general/edit",className:"size-[19px] text-icon-blue-grey-600 transition-[color] group-focus-within/icon:text-icon-blue-grey-800"}),zi=Q(({classes:k,invalid:w,externalHandlers:i,disabled:I,value:u,onChange:p,min:e,max:g,suffix:s,label:S,attachmentProps:t,additionalSuffix:C,readOnly:f,componentType:v,dataLayers:d,...r},B)=>{const R=h.useId(),l=h.useRef(null),y=()=>{var o;(o=l==null?void 0:l.current)==null||o.focus()},{sliderValue:j,sliderStep:A,sliderMin:F,sliderMax:M,handleChangeSlider:V}=W({min:e,max:g,defaultValue:0,value:u,onChange:p}),{root:$,slider:z,textLeft:G,textRight:q,inputRoot:D,textContainer:E,input:J,field:K}=k||{};return n("div",{"aria-label":v,className:m("flex w-full flex-col gap-1",$),children:[n("div",{className:m("relative w-full select-none",{"select-none":f},K),children:[c(Z,{label:S,value:u,attachmentProps:{onClickIcon:f?void 0:(t==null?void 0:t.onClickIcon)||y,icon:f?void 0:(t==null?void 0:t.icon)||_,...t},classes:{container:"border-[1px] bg-color-white border-blue-grey-500 focus-within:border-blue-grey-800",...D},onBlur:o=>{r!=null&&r.onBlur&&(r==null||r.onBlur(o)),i!=null&&i.onBlur&&i.onBlur(o)},onClick:i==null?void 0:i.onClick,onFocus:i==null?void 0:i.onBlur,renderValues:()=>c(T,{id:R,readOnly:f,"aria-invalid":w?"true":"false",value:u,disabled:I,suffix:` ${b(s,u)} ${C??""}`,thousandsGroupStyle:"thousand",thousandSeparator:" ",allowNegative:!1,getInputRef:X(l,B),onValueChange:({floatValue:o})=>{var N;o!==void 0&&(p&&p(o),(N=i==null?void 0:i.onInputChange)==null||N.call(i,o))},"data-id":"slider",className:m("group/slider desk-title-bold-s w-full bg-color-transparent text-color-dark outline-none transition-all",J),"data-layer-id":d==null?void 0:d.targetId,...r})}),c(U,{classes:{...z},step:A,value:j,disabled:I,min:Number(F),max:Number(M),onChange:V,externalHandlers:i})]}),n("div",{className:m("flex justify-between",E),children:[e&&c("span",{className:m("desk-body-regular-m text-color-tetriary",G),children:b(s,e,!1)}),g&&c("span",{className:m("desk-body-regular-m text-color-tetriary",q),children:b(s,g,!1)})]})]})});export{zi as SliderAlgorithmic};
|
|
2
2
|
//# sourceMappingURL=SliderAlgorithmic.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SliderAlgorithmic.js","sources":["../../../../../../../../../lib/shared/ui/formElements/uncontrolled/slider/ui/sliderAlgorithmic/SliderAlgorithmic.tsx"],"sourcesContent":["import * as React from 'react'\nimport { forwardRef } from 'react'\nimport { NumericFormat } from 'react-number-format'\nimport { type SliderAlgorithmicProps } from '../../model'\nimport { getInputSliderSuffix } from '../../model/helpers'\nimport { SliderInner } from '../Slider'\nimport { useSliderAlgorithmic } from './hooks'\nimport { Icon, InputBase } from '$/shared/ui'\nimport { cn, mergeRefs } from '$/shared/utils'\n\nconst defaultIcon = (\n <Icon\n name='general/edit'\n className='size-[19px] text-icon-blue-grey-600 transition-[color] group-focus-within/icon:text-icon-blue-grey-800'\n />\n)\n\nexport const SliderAlgorithmic = forwardRef<HTMLInputElement, SliderAlgorithmicProps>(\n (\n {\n classes,\n invalid,\n externalHandlers,\n disabled,\n value,\n onChange,\n min,\n max,\n suffix,\n label,\n attachmentProps,\n additionalSuffix,\n readOnly,\n componentType,\n dataLayers,\n ...props\n },\n ref\n ) => {\n const inputId = React.useId()\n\n const inputRef = React.useRef<HTMLInputElement>(null)\n\n const handleIconClick = () => {\n inputRef?.current?.focus()\n }\n\n const { sliderValue, sliderStep, sliderMin, sliderMax, handleChangeSlider } = useSliderAlgorithmic({\n min,\n max,\n defaultValue: 0,\n value,\n onChange\n })\n\n const { root, slider, textLeft, textRight, inputRoot, textContainer, input, field } = classes || {}\n\n return (\n <div aria-label={componentType} className={cn('flex w-full flex-col gap-1', root)}>\n <div className={cn('relative w-full select-none', { ['select-none']: readOnly }, field)}>\n <InputBase\n label={label}\n value={value}\n attachmentProps={{\n onClickIcon: readOnly ? undefined : attachmentProps?.onClickIcon || handleIconClick,\n icon: readOnly ? undefined : attachmentProps?.icon || defaultIcon,\n ...attachmentProps\n }}\n classes={{\n container: 'border-[1px] bg-color-white border-blue-grey-500 focus-within:border-blue-grey-800',\n ...inputRoot\n }}\n onBlur={(e) => {\n if (props?.onBlur) props?.onBlur(e)\n if (externalHandlers?.onBlur) externalHandlers.onBlur(e)\n }}\n onClick={externalHandlers?.onClick}\n onFocus={externalHandlers?.onBlur}\n renderValues={() => (\n <NumericFormat\n id={inputId}\n readOnly={readOnly}\n aria-invalid={invalid ? 'true' : 'false'}\n value={value}\n disabled={disabled}\n suffix={` ${getInputSliderSuffix(suffix, value)} ${additionalSuffix ?? ''}`}\n thousandsGroupStyle='thousand'\n thousandSeparator={' '}\n allowNegative={false}\n getInputRef={mergeRefs(inputRef, ref)}\n onValueChange={({ floatValue }) => {\n if (floatValue !== undefined) {\n if (onChange) onChange(floatValue)\n externalHandlers?.onInputChange?.(floatValue)\n }\n }}\n data-
|
|
1
|
+
{"version":3,"file":"SliderAlgorithmic.js","sources":["../../../../../../../../../lib/shared/ui/formElements/uncontrolled/slider/ui/sliderAlgorithmic/SliderAlgorithmic.tsx"],"sourcesContent":["import * as React from 'react'\nimport { forwardRef } from 'react'\nimport { NumericFormat } from 'react-number-format'\nimport { type SliderAlgorithmicProps } from '../../model'\nimport { getInputSliderSuffix } from '../../model/helpers'\nimport { SliderInner } from '../Slider'\nimport { useSliderAlgorithmic } from './hooks'\nimport { Icon, InputBase } from '$/shared/ui'\nimport { cn, mergeRefs } from '$/shared/utils'\n\nconst defaultIcon = (\n <Icon\n name='general/edit'\n className='size-[19px] text-icon-blue-grey-600 transition-[color] group-focus-within/icon:text-icon-blue-grey-800'\n />\n)\n\nexport const SliderAlgorithmic = forwardRef<HTMLInputElement, SliderAlgorithmicProps>(\n (\n {\n classes,\n invalid,\n externalHandlers,\n disabled,\n value,\n onChange,\n min,\n max,\n suffix,\n label,\n attachmentProps,\n additionalSuffix,\n readOnly,\n componentType,\n dataLayers,\n ...props\n },\n ref\n ) => {\n const inputId = React.useId()\n\n const inputRef = React.useRef<HTMLInputElement>(null)\n\n const handleIconClick = () => {\n inputRef?.current?.focus()\n }\n\n const { sliderValue, sliderStep, sliderMin, sliderMax, handleChangeSlider } = useSliderAlgorithmic({\n min,\n max,\n defaultValue: 0,\n value,\n onChange\n })\n\n const { root, slider, textLeft, textRight, inputRoot, textContainer, input, field } = classes || {}\n\n return (\n <div aria-label={componentType} className={cn('flex w-full flex-col gap-1', root)}>\n <div className={cn('relative w-full select-none', { ['select-none']: readOnly }, field)}>\n <InputBase\n label={label}\n value={value}\n attachmentProps={{\n onClickIcon: readOnly ? undefined : attachmentProps?.onClickIcon || handleIconClick,\n icon: readOnly ? undefined : attachmentProps?.icon || defaultIcon,\n ...attachmentProps\n }}\n classes={{\n container: 'border-[1px] bg-color-white border-blue-grey-500 focus-within:border-blue-grey-800',\n ...inputRoot\n }}\n onBlur={(e) => {\n if (props?.onBlur) props?.onBlur(e)\n if (externalHandlers?.onBlur) externalHandlers.onBlur(e)\n }}\n onClick={externalHandlers?.onClick}\n onFocus={externalHandlers?.onBlur}\n renderValues={() => (\n <NumericFormat\n id={inputId}\n readOnly={readOnly}\n aria-invalid={invalid ? 'true' : 'false'}\n value={value}\n disabled={disabled}\n suffix={` ${getInputSliderSuffix(suffix, value)} ${additionalSuffix ?? ''}`}\n thousandsGroupStyle='thousand'\n thousandSeparator={' '}\n allowNegative={false}\n getInputRef={mergeRefs(inputRef, ref)}\n onValueChange={({ floatValue }) => {\n if (floatValue !== undefined) {\n if (onChange) onChange(floatValue)\n externalHandlers?.onInputChange?.(floatValue)\n }\n }}\n data-id='slider'\n className={cn(\n 'group/slider desk-title-bold-s w-full bg-color-transparent text-color-dark outline-none transition-all',\n\n input\n )}\n data-layer-id={dataLayers?.targetId}\n {...props}\n />\n )}\n />\n <SliderInner\n classes={{ ...slider }}\n step={sliderStep}\n value={sliderValue}\n disabled={disabled}\n min={Number(sliderMin)}\n max={Number(sliderMax)}\n onChange={handleChangeSlider}\n externalHandlers={externalHandlers}\n />\n </div>\n <div className={cn('flex justify-between', textContainer)}>\n {min && (\n <span className={cn('desk-body-regular-m text-color-tetriary', textLeft)}>\n {getInputSliderSuffix(suffix, min, false)}\n </span>\n )}\n {max && (\n <span className={cn('desk-body-regular-m text-color-tetriary', textRight)}>\n {getInputSliderSuffix(suffix, max, false)}\n </span>\n )}\n </div>\n </div>\n )\n }\n)\n"],"names":["defaultIcon","jsx","Icon","SliderAlgorithmic","forwardRef","classes","invalid","externalHandlers","disabled","value","onChange","min","max","suffix","label","attachmentProps","additionalSuffix","readOnly","componentType","dataLayers","props","ref","inputId","React","inputRef","handleIconClick","_a","sliderValue","sliderStep","sliderMin","sliderMax","handleChangeSlider","useSliderAlgorithmic","root","slider","textLeft","textRight","inputRoot","textContainer","input","field","jsxs","cn","InputBase","e","NumericFormat","getInputSliderSuffix","mergeRefs","floatValue","SliderInner"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as e,jsx as m}from"react/jsx-runtime";import*as d from"react";import{forwardRef as q}from"react";import{NumericFormat as z}from"../../../../../../../../node_modules/react-number-format/dist/react-number-format.es.js";import{getInputSliderSuffix as g}from"../../model/helpers/getInputSliderSuffix.js";import{SliderInner as A}from"../Slider.js";import{useSliderMarks as D}from"./hooks/useSliderMarks.js";import{cn as i}from"../../../../../../utils/cn.js";import{mergeRefs as E}from"../../../../../../utils/mergeRefs.js";import"../../../../../button/Button.js";import"../../../../../buttonIcon/ButtonIcon.js";import"../../../../../calendar/Calendar.js";import"../../../../../calendar/model/utils.js";import"../../../../../accordion/Accordion.js";import"react-hook-form";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"../../../autocomplete/Autocomplete.js";import"../../../checkbox/Checkbox.js";import"../../../combobox/combobox.js";import"../../../dayPicker/DayPicker.js";import{InputBase as J}from"../../../input/Input.js";import"../../../inputOtp/InputOtpBase.js";import"../../../maskInput/MaskInput.js";import"../../../radio/RadioGroup.js";import"../../../radio/ui/RadioItem.js";import"../../SliderBase.js";import"../../../switch/Switch.js";import"../../../textarea/Textarea.js";import"../../../uploader/UploaderBase.js";import"../../../inputCurrency/InputCurrency.js";import"../../../../../../../../src/configs/api.js";import"../../../../controlled/editor/ui/Editor.js";import"../../../../controlled/input/MaskInputControl.js";import"../../../../../dropdownList/ui/dropdownItem/DropdownItem.js";const Bo=q(({classes:n,invalid:b,externalHandlers:o,disabled:l,value:t,onChange:p,suffix:u,label:N,marks:h,attachmentProps:I,additionalSuffix:w,componentType:R,dataLayers:c,...S},k)=>{const y=d.useId(),C=d.useRef(null),{sliderMin:f,sliderMax:s,handleChangeSlider:B}=D({marks:h,onChange:p,value:t}),{root:M,slider:j,textLeft:v,textRight:F,inputRoot:$,textContainer:G,input:O,field:P}=n||{};return e("div",{"aria-label":R,className:i("flex w-full flex-col gap-1",M),children:[e("div",{className:i("relative w-full select-none",P),children:[m(J,{label:N,value:t,attachmentProps:{...I},classes:{container:"border-[1px] bg-color-white border-blue-grey-500 focus-within:border-blue-grey-800",...$},onClick:o==null?void 0:o.onClick,onFocus:o==null?void 0:o.onBlur,onBlur:r=>{o!=null&&o.onBlur&&(o==null||o.onBlur(r))},renderValues:()=>m(z,{id:y,readOnly:!0,"aria-invalid":b?"true":"false",value:t,disabled:l,suffix:` ${g(u,t)} ${w??""}`,thousandsGroupStyle:"thousand",thousandSeparator:" ",allowNegative:!1,getInputRef:E(C,k),onValueChange:({floatValue:r})=>{r&&(p&&p(r),o!=null&&o.onInputChange&&o.onInputChange(r))},"data-
|
|
1
|
+
import{jsxs as e,jsx as m}from"react/jsx-runtime";import*as d from"react";import{forwardRef as q}from"react";import{NumericFormat as z}from"../../../../../../../../node_modules/react-number-format/dist/react-number-format.es.js";import{getInputSliderSuffix as g}from"../../model/helpers/getInputSliderSuffix.js";import{SliderInner as A}from"../Slider.js";import{useSliderMarks as D}from"./hooks/useSliderMarks.js";import{cn as i}from"../../../../../../utils/cn.js";import{mergeRefs as E}from"../../../../../../utils/mergeRefs.js";import"../../../../../button/Button.js";import"../../../../../buttonIcon/ButtonIcon.js";import"../../../../../calendar/Calendar.js";import"../../../../../calendar/model/utils.js";import"../../../../../accordion/Accordion.js";import"react-hook-form";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"../../../autocomplete/Autocomplete.js";import"../../../checkbox/Checkbox.js";import"../../../combobox/combobox.js";import"../../../dayPicker/DayPicker.js";import{InputBase as J}from"../../../input/Input.js";import"../../../inputOtp/InputOtpBase.js";import"../../../maskInput/MaskInput.js";import"../../../radio/RadioGroup.js";import"../../../radio/ui/RadioItem.js";import"../../SliderBase.js";import"../../../switch/Switch.js";import"../../../textarea/Textarea.js";import"../../../uploader/UploaderBase.js";import"../../../inputCurrency/InputCurrency.js";import"../../../../../../../../src/configs/api.js";import"../../../../controlled/editor/ui/Editor.js";import"../../../../controlled/input/MaskInputControl.js";import"../../../../../dropdownList/ui/dropdownItem/DropdownItem.js";const Bo=q(({classes:n,invalid:b,externalHandlers:o,disabled:l,value:t,onChange:p,suffix:u,label:N,marks:h,attachmentProps:I,additionalSuffix:w,componentType:R,dataLayers:c,...S},k)=>{const y=d.useId(),C=d.useRef(null),{sliderMin:f,sliderMax:s,handleChangeSlider:B}=D({marks:h,onChange:p,value:t}),{root:M,slider:j,textLeft:v,textRight:F,inputRoot:$,textContainer:G,input:O,field:P}=n||{};return e("div",{"aria-label":R,className:i("flex w-full flex-col gap-1",M),children:[e("div",{className:i("relative w-full select-none",P),children:[m(J,{label:N,value:t,attachmentProps:{...I},classes:{container:"border-[1px] bg-color-white border-blue-grey-500 focus-within:border-blue-grey-800",...$},onClick:o==null?void 0:o.onClick,onFocus:o==null?void 0:o.onBlur,onBlur:r=>{o!=null&&o.onBlur&&(o==null||o.onBlur(r))},renderValues:()=>m(z,{id:y,readOnly:!0,"aria-invalid":b?"true":"false",value:t,disabled:l,suffix:` ${g(u,t)} ${w??""}`,thousandsGroupStyle:"thousand",thousandSeparator:" ",allowNegative:!1,getInputRef:E(C,k),onValueChange:({floatValue:r})=>{r&&(p&&p(r),o!=null&&o.onInputChange&&o.onInputChange(r))},"data-id":"slider",className:i("group/slider desk-title-bold-s w-full bg-color-transparent text-color-dark outline-none transition-all",O),"data-layer-id":c==null?void 0:c.targetId,...S})}),m(A,{classes:{...j},marks:h,step:null,value:t??0,disabled:l,min:Number(f),max:Number(s),onChange:B})]}),e("div",{className:i("flex justify-between",G),children:[f&&m("span",{className:i("desk-body-regular-m text-color-tetriary",v),children:g(u,f,!1)}),s&&m("span",{className:i("desk-body-regular-m text-color-tetriary",F),children:g(u,s,!1)})]})]})});export{Bo as SliderMarks};
|
|
2
2
|
//# sourceMappingURL=SliderMarks.js.map
|
package/dist/lib/shared/ui/formElements/uncontrolled/slider/ui/sliderMarks/SliderMarks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SliderMarks.js","sources":["../../../../../../../../../lib/shared/ui/formElements/uncontrolled/slider/ui/sliderMarks/SliderMarks.tsx"],"sourcesContent":["import * as React from 'react'\nimport { forwardRef } from 'react'\nimport { NumericFormat } from 'react-number-format'\nimport { type SliderMarksProps } from '../../model'\nimport { getInputSliderSuffix } from '../../model/helpers'\nimport { SliderInner } from '../Slider'\nimport { useSliderMarks } from './hooks'\nimport { InputBase } from '$/shared/ui'\nimport { cn, mergeRefs } from '$/shared/utils'\n\nexport const SliderMarks = forwardRef<HTMLInputElement, SliderMarksProps>(\n (\n {\n classes,\n invalid,\n externalHandlers,\n disabled,\n value,\n onChange,\n suffix,\n label,\n marks,\n attachmentProps,\n additionalSuffix,\n componentType,\n dataLayers,\n ...props\n },\n ref\n ) => {\n const inputId = React.useId()\n\n const inputRef = React.useRef<HTMLInputElement>(null)\n\n const { sliderMin, sliderMax, handleChangeSlider } = useSliderMarks({\n marks,\n onChange,\n value\n })\n\n const { root, slider, textLeft, textRight, inputRoot, textContainer, input, field } = classes || {}\n return (\n <div aria-label={componentType} className={cn('flex w-full flex-col gap-1', root)}>\n <div className={cn('relative w-full select-none', field)}>\n <InputBase\n label={label}\n value={value}\n attachmentProps={{\n ...attachmentProps\n }}\n classes={{\n container: 'border-[1px] bg-color-white border-blue-grey-500 focus-within:border-blue-grey-800',\n ...inputRoot\n }}\n onClick={externalHandlers?.onClick}\n onFocus={externalHandlers?.onBlur}\n onBlur={(e) => {\n if (externalHandlers?.onBlur) {\n externalHandlers?.onBlur(e)\n }\n }}\n renderValues={() => (\n <NumericFormat\n id={inputId}\n readOnly\n aria-invalid={invalid ? 'true' : 'false'}\n value={value}\n disabled={disabled}\n suffix={` ${getInputSliderSuffix(suffix, value)} ${additionalSuffix ?? ''}`}\n thousandsGroupStyle='thousand'\n thousandSeparator={' '}\n allowNegative={false}\n getInputRef={mergeRefs(inputRef, ref)}\n onValueChange={({ floatValue }) => {\n if (floatValue) {\n if (onChange) onChange(floatValue)\n if (externalHandlers?.onInputChange) {\n externalHandlers.onInputChange(floatValue)\n }\n }\n }}\n data-
|
|
1
|
+
{"version":3,"file":"SliderMarks.js","sources":["../../../../../../../../../lib/shared/ui/formElements/uncontrolled/slider/ui/sliderMarks/SliderMarks.tsx"],"sourcesContent":["import * as React from 'react'\nimport { forwardRef } from 'react'\nimport { NumericFormat } from 'react-number-format'\nimport { type SliderMarksProps } from '../../model'\nimport { getInputSliderSuffix } from '../../model/helpers'\nimport { SliderInner } from '../Slider'\nimport { useSliderMarks } from './hooks'\nimport { InputBase } from '$/shared/ui'\nimport { cn, mergeRefs } from '$/shared/utils'\n\nexport const SliderMarks = forwardRef<HTMLInputElement, SliderMarksProps>(\n (\n {\n classes,\n invalid,\n externalHandlers,\n disabled,\n value,\n onChange,\n suffix,\n label,\n marks,\n attachmentProps,\n additionalSuffix,\n componentType,\n dataLayers,\n ...props\n },\n ref\n ) => {\n const inputId = React.useId()\n\n const inputRef = React.useRef<HTMLInputElement>(null)\n\n const { sliderMin, sliderMax, handleChangeSlider } = useSliderMarks({\n marks,\n onChange,\n value\n })\n\n const { root, slider, textLeft, textRight, inputRoot, textContainer, input, field } = classes || {}\n return (\n <div aria-label={componentType} className={cn('flex w-full flex-col gap-1', root)}>\n <div className={cn('relative w-full select-none', field)}>\n <InputBase\n label={label}\n value={value}\n attachmentProps={{\n ...attachmentProps\n }}\n classes={{\n container: 'border-[1px] bg-color-white border-blue-grey-500 focus-within:border-blue-grey-800',\n ...inputRoot\n }}\n onClick={externalHandlers?.onClick}\n onFocus={externalHandlers?.onBlur}\n onBlur={(e) => {\n if (externalHandlers?.onBlur) {\n externalHandlers?.onBlur(e)\n }\n }}\n renderValues={() => (\n <NumericFormat\n id={inputId}\n readOnly\n aria-invalid={invalid ? 'true' : 'false'}\n value={value}\n disabled={disabled}\n suffix={` ${getInputSliderSuffix(suffix, value)} ${additionalSuffix ?? ''}`}\n thousandsGroupStyle='thousand'\n thousandSeparator={' '}\n allowNegative={false}\n getInputRef={mergeRefs(inputRef, ref)}\n onValueChange={({ floatValue }) => {\n if (floatValue) {\n if (onChange) onChange(floatValue)\n if (externalHandlers?.onInputChange) {\n externalHandlers.onInputChange(floatValue)\n }\n }\n }}\n data-id='slider'\n className={cn(\n 'group/slider desk-title-bold-s w-full bg-color-transparent text-color-dark outline-none transition-all',\n input\n )}\n data-layer-id={dataLayers?.targetId}\n {...props}\n />\n )}\n />\n <SliderInner\n classes={{ ...slider }}\n marks={marks}\n step={null}\n value={value ?? 0}\n disabled={disabled}\n min={Number(sliderMin)}\n max={Number(sliderMax)}\n onChange={handleChangeSlider}\n />\n </div>\n <div className={cn('flex justify-between', textContainer)}>\n {sliderMin && (\n <span className={cn('desk-body-regular-m text-color-tetriary', textLeft)}>\n {getInputSliderSuffix(suffix, sliderMin, false)}\n </span>\n )}\n {sliderMax && (\n <span className={cn('desk-body-regular-m text-color-tetriary', textRight)}>\n {getInputSliderSuffix(suffix, sliderMax, false)}\n </span>\n )}\n </div>\n </div>\n )\n }\n)\n"],"names":["SliderMarks","forwardRef","classes","invalid","externalHandlers","disabled","value","onChange","suffix","label","marks","attachmentProps","additionalSuffix","componentType","dataLayers","props","ref","inputId","React","inputRef","sliderMin","sliderMax","handleChangeSlider","useSliderMarks","root","slider","textLeft","textRight","inputRoot","textContainer","input","field","jsxs","cn","jsx","InputBase","e","NumericFormat","getInputSliderSuffix","mergeRefs","floatValue","SliderInner"],"mappings":"s0DAUO,MAAMA,GAAcC,EACzB,CACE,CACE,QAAAC,EACA,QAAAC,EACA,iBAAAC,EACA,SAAAC,EACA,MAAAC,EACA,SAAAC,EACA,OAAAC,EACA,MAAAC,EACA,MAAAC,EACA,gBAAAC,EACA,iBAAAC,EACA,cAAAC,EACA,WAAAC,EACA,GAAGC,CAAA,EAELC,IACG,CACH,MAAMC,EAAUC,EAAM,MAAA,EAEhBC,EAAWD,EAAM,OAAyB,IAAI,EAE9C,CAAE,UAAAE,EAAW,UAAAC,EAAW,mBAAAC,CAAA,EAAuBC,EAAe,CAClE,MAAAb,EACA,SAAAH,EACA,MAAAD,CAAA,CACD,EAEK,CAAE,KAAAkB,EAAM,OAAAC,EAAQ,SAAAC,EAAU,UAAAC,EAAW,UAAAC,EAAW,cAAAC,EAAe,MAAAC,EAAO,MAAAC,CAAA,EAAU7B,GAAW,CAAA,EACjG,OACE8B,EAAC,OAAI,aAAYnB,EAAe,UAAWoB,EAAG,6BAA8BT,CAAI,EAC9E,SAAA,CAAAQ,EAAC,MAAA,CAAI,UAAWC,EAAG,8BAA+BF,CAAK,EACrD,SAAA,CAAAG,EAACC,EAAA,CACC,MAAA1B,EACA,MAAAH,EACA,gBAAiB,CACf,GAAGK,CAAA,EAEL,QAAS,CACP,UAAW,qFACX,GAAGiB,CAAA,EAEL,QAASxB,GAAA,YAAAA,EAAkB,QAC3B,QAASA,GAAA,YAAAA,EAAkB,OAC3B,OAASgC,GAAM,CACThC,GAAA,MAAAA,EAAkB,SACpBA,GAAA,MAAAA,EAAkB,OAAOgC,GAE7B,EACA,aAAc,IACZF,EAACG,EAAA,CACC,GAAIpB,EACJ,SAAQ,GACR,eAAcd,EAAU,OAAS,QACjC,MAAAG,EACA,SAAAD,EACA,OAAQ,IAAIiC,EAAqB9B,EAAQF,CAAK,CAAC,IAAIM,GAAoB,EAAE,GACzE,oBAAoB,WACpB,kBAAmB,IACnB,cAAe,GACf,YAAa2B,EAAUpB,EAAUH,CAAG,EACpC,cAAe,CAAC,CAAE,WAAAwB,KAAiB,CAC7BA,IACEjC,KAAmBiC,CAAU,EAC7BpC,GAAA,MAAAA,EAAkB,eACpBA,EAAiB,cAAcoC,CAAU,EAG/C,EACA,UAAQ,SACR,UAAWP,EACT,yGACAH,CAAA,EAEF,gBAAehB,GAAA,YAAAA,EAAY,SAC1B,GAAGC,CAAA,CAAA,CACN,CAAA,EAGJmB,EAACO,EAAA,CACC,QAAS,CAAE,GAAGhB,CAAA,EACd,MAAAf,EACA,KAAM,KACN,MAAOJ,GAAS,EAChB,SAAAD,EACA,IAAK,OAAOe,CAAS,EACrB,IAAK,OAAOC,CAAS,EACrB,SAAUC,CAAA,CAAA,CACZ,EACF,IACC,MAAA,CAAI,UAAWW,EAAG,uBAAwBJ,CAAa,EACrD,SAAA,CAAAT,GACCc,EAAC,OAAA,CAAK,UAAWD,EAAG,0CAA2CP,CAAQ,EACpE,SAAAY,EAAqB9B,EAAQY,EAAW,EAAK,CAAA,CAChD,EAEDC,GACCa,EAAC,OAAA,CAAK,UAAWD,EAAG,0CAA2CN,CAAS,EACrE,SAAAW,EAAqB9B,EAAQa,EAAW,EAAK,CAAA,CAChD,CAAA,CAAA,CAEJ,CAAA,EACF,CAEJ,CACF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as d,jsx as c}from"react/jsx-runtime";import*as N from"react";import{forwardRef as Q}from"react";import{NumericFormat as T}from"../../../../../../../../node_modules/react-number-format/dist/react-number-format.es.js";import{getInputSliderSuffix as b}from"../../model/helpers/getInputSliderSuffix.js";import{SliderInner as U}from"../Slider.js";import{useSliderStep as V}from"./hooks/useSliderStep.js";import{cn as m}from"../../../../../../utils/cn.js";import{mergeRefs as W}from"../../../../../../utils/mergeRefs.js";import"../../../../../button/Button.js";import"../../../../../buttonIcon/ButtonIcon.js";import"../../../../../calendar/Calendar.js";import"../../../../../calendar/model/utils.js";import"../../../../../accordion/Accordion.js";import"react-hook-form";import"react-dom";import"../../../../../modal/ui/IframeModalContent.js";import"../../../../../../../../node_modules/react-hot-toast/dist/index.js";import{Icon as X}from"../../../../../icon/Icon.js";import"../../../../../table/ui/primitives/Primitives.js";import"../../../../../carousel/ui/CarouselContent.js";import"../../../../../slot/Slot.js";import"../../../autocomplete/Autocomplete.js";import"../../../checkbox/Checkbox.js";import"../../../combobox/combobox.js";import"../../../dayPicker/DayPicker.js";import{InputBase as Y}from"../../../input/Input.js";import"../../../inputOtp/InputOtpBase.js";import"../../../maskInput/MaskInput.js";import"../../../radio/RadioGroup.js";import"../../../radio/ui/RadioItem.js";import"../../SliderBase.js";import"../../../switch/Switch.js";import"../../../textarea/Textarea.js";import"../../../uploader/UploaderBase.js";import"../../../inputCurrency/InputCurrency.js";import"../../../../../../../../src/configs/api.js";import"../../../../controlled/editor/ui/Editor.js";import"../../../../controlled/input/MaskInputControl.js";import"../../../../../dropdownList/ui/dropdownItem/DropdownItem.js";const Z=c(X,{name:"general/edit",className:"size-[19px] text-icon-blue-grey-600 transition-[color] group-focus-within/icon:text-icon-blue-grey-800"}),qo=Q(({classes:S,invalid:k,externalHandlers:o,disabled:I,value:u,onChange:l,min:p,max:n,suffix:s,label:w,step:C,attachmentProps:t,additionalSuffix:h,readOnly:e,componentType:B,dataLayers:g,...r},R)=>{const v=N.useId(),f=N.useRef(null),y=()=>{var i;(i=f==null?void 0:f.current)==null||i.focus()},{sliderStep:j,sliderMin:F,sliderMax:M,handleChangeSlider:$}=V({min:p,max:n,step:C,onChange:l,value:u}),{root:z,slider:G,textLeft:q,textRight:A,inputRoot:D,textContainer:E,input:J,field:K}=S||{};return d("div",{"aria-label":B,className:m("flex w-full flex-col gap-1",z),children:[d("div",{className:m("relative w-full select-none",{"select-none":e},K),children:[c(Y,{label:w,value:u,attachmentProps:{onClickIcon:e?void 0:(t==null?void 0:t.onClickIcon)||y,icon:e?void 0:(t==null?void 0:t.icon)||Z,...t},classes:{container:"border-[1px] bg-color-white border-blue-grey-500 focus-within:border-blue-grey-800",...D},onBlur:i=>{r!=null&&r.onBlur&&(r==null||r.onBlur(i)),o!=null&&o.onBlur&&o.onBlur(i)},onClick:o==null?void 0:o.onClick,onFocus:o==null?void 0:o.onBlur,renderValues:()=>c(T,{id:v,readOnly:e,"aria-invalid":k?"true":"false",value:u,disabled:I,suffix:` ${b(s,u)} ${h??""}`,thousandsGroupStyle:"thousand",thousandSeparator:" ",allowNegative:!1,getInputRef:W(f,R),onValueChange:({floatValue:i})=>{i&&(l&&l(i),o!=null&&o.onInputChange&&o.onInputChange(i))},"data-
|
|
1
|
+
import{jsxs as d,jsx as c}from"react/jsx-runtime";import*as N from"react";import{forwardRef as Q}from"react";import{NumericFormat as T}from"../../../../../../../../node_modules/react-number-format/dist/react-number-format.es.js";import{getInputSliderSuffix as b}from"../../model/helpers/getInputSliderSuffix.js";import{SliderInner as U}from"../Slider.js";import{useSliderStep as V}from"./hooks/useSliderStep.js";import{cn as m}from"../../../../../../utils/cn.js";import{mergeRefs as W}from"../../../../../../utils/mergeRefs.js";import"../../../../../button/Button.js";import"../../../../../buttonIcon/ButtonIcon.js";import"../../../../../calendar/Calendar.js";import"../../../../../calendar/model/utils.js";import"../../../../../accordion/Accordion.js";import"react-hook-form";import"react-dom";import"../../../../../modal/ui/IframeModalContent.js";import"../../../../../../../../node_modules/react-hot-toast/dist/index.js";import{Icon as X}from"../../../../../icon/Icon.js";import"../../../../../table/ui/primitives/Primitives.js";import"../../../../../carousel/ui/CarouselContent.js";import"../../../../../slot/Slot.js";import"../../../autocomplete/Autocomplete.js";import"../../../checkbox/Checkbox.js";import"../../../combobox/combobox.js";import"../../../dayPicker/DayPicker.js";import{InputBase as Y}from"../../../input/Input.js";import"../../../inputOtp/InputOtpBase.js";import"../../../maskInput/MaskInput.js";import"../../../radio/RadioGroup.js";import"../../../radio/ui/RadioItem.js";import"../../SliderBase.js";import"../../../switch/Switch.js";import"../../../textarea/Textarea.js";import"../../../uploader/UploaderBase.js";import"../../../inputCurrency/InputCurrency.js";import"../../../../../../../../src/configs/api.js";import"../../../../controlled/editor/ui/Editor.js";import"../../../../controlled/input/MaskInputControl.js";import"../../../../../dropdownList/ui/dropdownItem/DropdownItem.js";const Z=c(X,{name:"general/edit",className:"size-[19px] text-icon-blue-grey-600 transition-[color] group-focus-within/icon:text-icon-blue-grey-800"}),qo=Q(({classes:S,invalid:k,externalHandlers:o,disabled:I,value:u,onChange:l,min:p,max:n,suffix:s,label:w,step:C,attachmentProps:t,additionalSuffix:h,readOnly:e,componentType:B,dataLayers:g,...r},R)=>{const v=N.useId(),f=N.useRef(null),y=()=>{var i;(i=f==null?void 0:f.current)==null||i.focus()},{sliderStep:j,sliderMin:F,sliderMax:M,handleChangeSlider:$}=V({min:p,max:n,step:C,onChange:l,value:u}),{root:z,slider:G,textLeft:q,textRight:A,inputRoot:D,textContainer:E,input:J,field:K}=S||{};return d("div",{"aria-label":B,className:m("flex w-full flex-col gap-1",z),children:[d("div",{className:m("relative w-full select-none",{"select-none":e},K),children:[c(Y,{label:w,value:u,attachmentProps:{onClickIcon:e?void 0:(t==null?void 0:t.onClickIcon)||y,icon:e?void 0:(t==null?void 0:t.icon)||Z,...t},classes:{container:"border-[1px] bg-color-white border-blue-grey-500 focus-within:border-blue-grey-800",...D},onBlur:i=>{r!=null&&r.onBlur&&(r==null||r.onBlur(i)),o!=null&&o.onBlur&&o.onBlur(i)},onClick:o==null?void 0:o.onClick,onFocus:o==null?void 0:o.onBlur,renderValues:()=>c(T,{id:v,readOnly:e,"aria-invalid":k?"true":"false",value:u,disabled:I,suffix:` ${b(s,u)} ${h??""}`,thousandsGroupStyle:"thousand",thousandSeparator:" ",allowNegative:!1,getInputRef:W(f,R),onValueChange:({floatValue:i})=>{i&&(l&&l(i),o!=null&&o.onInputChange&&o.onInputChange(i))},"data-id":"slider",className:m("group/slider desk-title-bold-s w-full bg-color-transparent text-color-dark outline-none transition-all",J),"data-layer-id":g==null?void 0:g.targetId,...r})}),c(U,{classes:{...G},step:j,value:u??0,disabled:I,min:Number(F),max:Number(M),onChange:$})]}),d("div",{className:m("flex justify-between",E),children:[p&&c("span",{className:m("desk-body-regular-m text-color-tetriary",q),children:b(s,p,!1)}),n&&c("span",{className:m("desk-body-regular-m text-color-tetriary",A),children:b(s,n,!1)})]})]})});export{qo as SliderStep};
|
|
2
2
|
//# sourceMappingURL=SliderStep.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SliderStep.js","sources":["../../../../../../../../../lib/shared/ui/formElements/uncontrolled/slider/ui/sliderStep/SliderStep.tsx"],"sourcesContent":["import * as React from 'react'\nimport { forwardRef } from 'react'\nimport { NumericFormat } from 'react-number-format'\nimport { type SliderStepProps } from '../../model'\nimport { getInputSliderSuffix } from '../../model/helpers'\nimport { SliderInner } from '../Slider'\nimport { useSliderStep } from './hooks'\nimport { Icon, InputBase } from '$/shared/ui'\nimport { cn, mergeRefs } from '$/shared/utils'\n\nconst defaultIcon = (\n <Icon\n name='general/edit'\n className='size-[19px] text-icon-blue-grey-600 transition-[color] group-focus-within/icon:text-icon-blue-grey-800'\n />\n)\n\nexport const SliderStep = forwardRef<HTMLInputElement, SliderStepProps>(\n (\n {\n classes,\n invalid,\n externalHandlers,\n disabled,\n value,\n onChange,\n min,\n max,\n suffix,\n label,\n step,\n attachmentProps,\n additionalSuffix,\n readOnly,\n componentType,\n dataLayers,\n ...props\n },\n ref\n ) => {\n const inputId = React.useId()\n\n const inputRef = React.useRef<HTMLInputElement>(null)\n\n const handleIconClick = () => {\n inputRef?.current?.focus()\n }\n\n const { sliderStep, sliderMin, sliderMax, handleChangeSlider } = useSliderStep({\n min,\n max,\n step,\n onChange,\n value\n })\n\n const { root, slider, textLeft, textRight, inputRoot, textContainer, input, field } = classes || {}\n\n return (\n <div aria-label={componentType} className={cn('flex w-full flex-col gap-1', root)}>\n <div className={cn('relative w-full select-none', { ['select-none']: readOnly }, field)}>\n <InputBase\n label={label}\n value={value}\n attachmentProps={{\n onClickIcon: readOnly ? undefined : attachmentProps?.onClickIcon || handleIconClick,\n icon: readOnly ? undefined : attachmentProps?.icon || defaultIcon,\n ...attachmentProps\n }}\n classes={{\n container: 'border-[1px] bg-color-white border-blue-grey-500 focus-within:border-blue-grey-800',\n ...inputRoot\n }}\n onBlur={(e) => {\n if (props?.onBlur) props?.onBlur(e)\n if (externalHandlers?.onBlur) externalHandlers.onBlur(e)\n }}\n onClick={externalHandlers?.onClick}\n onFocus={externalHandlers?.onBlur}\n renderValues={() => (\n <NumericFormat\n id={inputId}\n readOnly={readOnly}\n aria-invalid={invalid ? 'true' : 'false'}\n value={value}\n disabled={disabled}\n suffix={` ${getInputSliderSuffix(suffix, value)} ${additionalSuffix ?? ''}`}\n thousandsGroupStyle='thousand'\n thousandSeparator={' '}\n allowNegative={false}\n getInputRef={mergeRefs(inputRef, ref)}\n onValueChange={({ floatValue }) => {\n if (floatValue) {\n if (onChange) onChange(floatValue)\n if (externalHandlers?.onInputChange) {\n externalHandlers.onInputChange(floatValue)\n }\n }\n }}\n data-
|
|
1
|
+
{"version":3,"file":"SliderStep.js","sources":["../../../../../../../../../lib/shared/ui/formElements/uncontrolled/slider/ui/sliderStep/SliderStep.tsx"],"sourcesContent":["import * as React from 'react'\nimport { forwardRef } from 'react'\nimport { NumericFormat } from 'react-number-format'\nimport { type SliderStepProps } from '../../model'\nimport { getInputSliderSuffix } from '../../model/helpers'\nimport { SliderInner } from '../Slider'\nimport { useSliderStep } from './hooks'\nimport { Icon, InputBase } from '$/shared/ui'\nimport { cn, mergeRefs } from '$/shared/utils'\n\nconst defaultIcon = (\n <Icon\n name='general/edit'\n className='size-[19px] text-icon-blue-grey-600 transition-[color] group-focus-within/icon:text-icon-blue-grey-800'\n />\n)\n\nexport const SliderStep = forwardRef<HTMLInputElement, SliderStepProps>(\n (\n {\n classes,\n invalid,\n externalHandlers,\n disabled,\n value,\n onChange,\n min,\n max,\n suffix,\n label,\n step,\n attachmentProps,\n additionalSuffix,\n readOnly,\n componentType,\n dataLayers,\n ...props\n },\n ref\n ) => {\n const inputId = React.useId()\n\n const inputRef = React.useRef<HTMLInputElement>(null)\n\n const handleIconClick = () => {\n inputRef?.current?.focus()\n }\n\n const { sliderStep, sliderMin, sliderMax, handleChangeSlider } = useSliderStep({\n min,\n max,\n step,\n onChange,\n value\n })\n\n const { root, slider, textLeft, textRight, inputRoot, textContainer, input, field } = classes || {}\n\n return (\n <div aria-label={componentType} className={cn('flex w-full flex-col gap-1', root)}>\n <div className={cn('relative w-full select-none', { ['select-none']: readOnly }, field)}>\n <InputBase\n label={label}\n value={value}\n attachmentProps={{\n onClickIcon: readOnly ? undefined : attachmentProps?.onClickIcon || handleIconClick,\n icon: readOnly ? undefined : attachmentProps?.icon || defaultIcon,\n ...attachmentProps\n }}\n classes={{\n container: 'border-[1px] bg-color-white border-blue-grey-500 focus-within:border-blue-grey-800',\n ...inputRoot\n }}\n onBlur={(e) => {\n if (props?.onBlur) props?.onBlur(e)\n if (externalHandlers?.onBlur) externalHandlers.onBlur(e)\n }}\n onClick={externalHandlers?.onClick}\n onFocus={externalHandlers?.onBlur}\n renderValues={() => (\n <NumericFormat\n id={inputId}\n readOnly={readOnly}\n aria-invalid={invalid ? 'true' : 'false'}\n value={value}\n disabled={disabled}\n suffix={` ${getInputSliderSuffix(suffix, value)} ${additionalSuffix ?? ''}`}\n thousandsGroupStyle='thousand'\n thousandSeparator={' '}\n allowNegative={false}\n getInputRef={mergeRefs(inputRef, ref)}\n onValueChange={({ floatValue }) => {\n if (floatValue) {\n if (onChange) onChange(floatValue)\n if (externalHandlers?.onInputChange) {\n externalHandlers.onInputChange(floatValue)\n }\n }\n }}\n data-id='slider'\n className={cn(\n 'group/slider desk-title-bold-s w-full bg-color-transparent text-color-dark outline-none transition-all',\n\n input\n )}\n data-layer-id={dataLayers?.targetId}\n {...props}\n />\n )}\n />\n <SliderInner\n classes={{ ...slider }}\n step={sliderStep}\n value={value ?? 0}\n disabled={disabled}\n min={Number(sliderMin)}\n max={Number(sliderMax)}\n onChange={handleChangeSlider}\n />\n </div>\n <div className={cn('flex justify-between', textContainer)}>\n {min && (\n <span className={cn('desk-body-regular-m text-color-tetriary', textLeft)}>\n {getInputSliderSuffix(suffix, min, false)}\n </span>\n )}\n {max && (\n <span className={cn('desk-body-regular-m text-color-tetriary', textRight)}>\n {getInputSliderSuffix(suffix, max, false)}\n </span>\n )}\n </div>\n </div>\n )\n }\n)\n"],"names":["defaultIcon","jsx","Icon","SliderStep","forwardRef","classes","invalid","externalHandlers","disabled","value","onChange","min","max","suffix","label","step","attachmentProps","additionalSuffix","readOnly","componentType","dataLayers","props","ref","inputId","React","inputRef","handleIconClick","_a","sliderStep","sliderMin","sliderMax","handleChangeSlider","useSliderStep","root","slider","textLeft","textRight","inputRoot","textContainer","input","field","jsxs","cn","InputBase","e","NumericFormat","getInputSliderSuffix","mergeRefs","floatValue","SliderInner"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as x,jsx as t}from"react/jsx-runtime";import{forwardRef as v,useId as N}from"react";import{FieldAttachment as k}from"../../ui/fieldAttachment/FieldAttachment.js";import{cn as l}from"../../../../utils/cn.js";const C=v(({label:b,value:f,invalid:m,disabled:r,classes:e,attachmentProps:n,rows:p=4,externalHandlers:c,onChange:a,dataLayers:o,...g},h)=>{const d=N(),{onChange:i,...y}=c||{},w=u=>{a&&a(u),i&&i(u)};return x("div",{className:l("relative flex w-full items-start gap-x-4 rounded-sm bg-color-blue-grey-100 pb-4 pl-4 pr-1 pt-2","[&_label]:focus-within:text-color-tetriary","hover:bg-color-blue-grey-200","border-[1px] border-transparent focus-within:border-blue-grey-800",{"border-secondary-default":m},e==null?void 0:e.container),"data-
|
|
1
|
+
import{jsxs as x,jsx as t}from"react/jsx-runtime";import{forwardRef as v,useId as N}from"react";import{FieldAttachment as k}from"../../ui/fieldAttachment/FieldAttachment.js";import{cn as l}from"../../../../utils/cn.js";const C=v(({label:b,value:f,invalid:m,disabled:r,classes:e,attachmentProps:n,rows:p=4,externalHandlers:c,onChange:a,dataLayers:o,...g},h)=>{const d=N(),{onChange:i,...y}=c||{},w=u=>{a&&a(u),i&&i(u)};return x("div",{className:l("relative flex w-full items-start gap-x-4 rounded-sm bg-color-blue-grey-100 pb-4 pl-4 pr-1 pt-2","[&_label]:focus-within:text-color-tetriary","hover:bg-color-blue-grey-200","border-[1px] border-transparent focus-within:border-blue-grey-800",{"border-secondary-default":m},e==null?void 0:e.container),"data-id":"textarea-root",children:[x("div",{className:"flex w-full flex-col",children:[t("label",{htmlFor:d,className:l("desk-body-regular-s pointer-events-none","text-color-blue-grey-600 duration-100",{"text-color-disabled":r},e==null?void 0:e.label),children:b}),t("textarea",{...g,...y,rows:p,disabled:r,value:f??"",ref:h,id:d,onChange:w,className:l("customScrollbar-y peer desk-body-regular-l w-full overflow-y-auto bg-color-transparent","resize-none text-color-dark outline-none placeholder:text-color-blue-grey-600",{"placeholder:text-color-disabled":r},e==null?void 0:e.textarea),"data-layer-id":o==null?void 0:o.targetId})]}),n&&t(k,{...n})]})});C.displayName="TextareaBase";export{C as TextareaBase};
|
|
2
2
|
//# sourceMappingURL=Textarea.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Textarea.js","sources":["../../../../../../../lib/shared/ui/formElements/uncontrolled/textarea/Textarea.tsx"],"sourcesContent":["import { forwardRef, useId } from 'react'\nimport { FieldAttachment } from '../../ui'\nimport { type DataLayers, type DeepPartial } from '$/shared/types'\nimport { cn } from '$/shared/utils'\n\ntype TextareaBaseClasses = {\n container?: string\n textarea?: string\n label?: string\n}\n\ntype FieldAttachmentProps = React.ComponentPropsWithoutRef<typeof FieldAttachment>\n\ntype ExternalHandlers = {\n onChange?: (event: React.ChangeEvent<HTMLTextAreaElement>) => void\n onClick?: (event: React.MouseEvent<HTMLTextAreaElement>) => void\n onFocus?: (event: React.FocusEvent<HTMLTextAreaElement>) => void\n onBlur?: (event: React.FocusEvent<HTMLTextAreaElement>) => void\n}\n\nexport type TextareaBaseProps = Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, 'size' | 'className'> & {\n /**\n * Дополнительные стили внутренних компонентов\n */\n classes?: TextareaBaseClasses\n /**\n * Отображаемый placeholder\n */\n label: string\n /**\n * Отображение не валидного поля\n */\n invalid?: boolean\n /**\n * Свойства дополнительной иконки\n */\n attachmentProps?: DeepPartial<FieldAttachmentProps>\n /**\n * Дополнительные хендлеры\n */\n externalHandlers?: ExternalHandlers\n /**\n * Даталееры\n */\n dataLayers?: DataLayers\n}\n\nexport const TextareaBase = forwardRef<HTMLTextAreaElement, TextareaBaseProps>(\n (\n { label, value, invalid, disabled, classes, attachmentProps, rows = 4, externalHandlers, onChange, dataLayers, ...props },\n ref\n ) => {\n const id = useId()\n\n const { onChange: externalOnChange, ...restHandlers } = externalHandlers || {}\n\n const onValueChange = (event: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (onChange) onChange(event)\n if (externalOnChange) externalOnChange(event)\n }\n\n return (\n <div\n className={cn(\n 'relative flex w-full items-start gap-x-4 rounded-sm bg-color-blue-grey-100 pb-4 pl-4 pr-1 pt-2',\n '[&_label]:focus-within:text-color-tetriary',\n 'hover:bg-color-blue-grey-200',\n 'border-[1px] border-transparent focus-within:border-blue-grey-800',\n {\n 'border-secondary-default': invalid\n },\n classes?.container\n )}\n data-
|
|
1
|
+
{"version":3,"file":"Textarea.js","sources":["../../../../../../../lib/shared/ui/formElements/uncontrolled/textarea/Textarea.tsx"],"sourcesContent":["import { forwardRef, useId } from 'react'\nimport { FieldAttachment } from '../../ui'\nimport { type DataLayers, type DeepPartial } from '$/shared/types'\nimport { cn } from '$/shared/utils'\n\ntype TextareaBaseClasses = {\n container?: string\n textarea?: string\n label?: string\n}\n\ntype FieldAttachmentProps = React.ComponentPropsWithoutRef<typeof FieldAttachment>\n\ntype ExternalHandlers = {\n onChange?: (event: React.ChangeEvent<HTMLTextAreaElement>) => void\n onClick?: (event: React.MouseEvent<HTMLTextAreaElement>) => void\n onFocus?: (event: React.FocusEvent<HTMLTextAreaElement>) => void\n onBlur?: (event: React.FocusEvent<HTMLTextAreaElement>) => void\n}\n\nexport type TextareaBaseProps = Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, 'size' | 'className'> & {\n /**\n * Дополнительные стили внутренних компонентов\n */\n classes?: TextareaBaseClasses\n /**\n * Отображаемый placeholder\n */\n label: string\n /**\n * Отображение не валидного поля\n */\n invalid?: boolean\n /**\n * Свойства дополнительной иконки\n */\n attachmentProps?: DeepPartial<FieldAttachmentProps>\n /**\n * Дополнительные хендлеры\n */\n externalHandlers?: ExternalHandlers\n /**\n * Даталееры\n */\n dataLayers?: DataLayers\n}\n\nexport const TextareaBase = forwardRef<HTMLTextAreaElement, TextareaBaseProps>(\n (\n { label, value, invalid, disabled, classes, attachmentProps, rows = 4, externalHandlers, onChange, dataLayers, ...props },\n ref\n ) => {\n const id = useId()\n\n const { onChange: externalOnChange, ...restHandlers } = externalHandlers || {}\n\n const onValueChange = (event: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (onChange) onChange(event)\n if (externalOnChange) externalOnChange(event)\n }\n\n return (\n <div\n className={cn(\n 'relative flex w-full items-start gap-x-4 rounded-sm bg-color-blue-grey-100 pb-4 pl-4 pr-1 pt-2',\n '[&_label]:focus-within:text-color-tetriary',\n 'hover:bg-color-blue-grey-200',\n 'border-[1px] border-transparent focus-within:border-blue-grey-800',\n {\n 'border-secondary-default': invalid\n },\n classes?.container\n )}\n data-id='textarea-root'\n >\n <div className='flex w-full flex-col'>\n <label\n htmlFor={id}\n className={cn(\n 'desk-body-regular-s pointer-events-none',\n 'text-color-blue-grey-600 duration-100',\n {\n 'text-color-disabled': disabled\n },\n classes?.label\n )}\n >\n {label}\n </label>\n <textarea\n {...props}\n {...restHandlers}\n rows={rows}\n disabled={disabled}\n value={value ?? ''}\n ref={ref}\n id={id}\n onChange={onValueChange}\n className={cn(\n 'customScrollbar-y peer desk-body-regular-l w-full overflow-y-auto bg-color-transparent',\n 'resize-none text-color-dark outline-none placeholder:text-color-blue-grey-600',\n {\n 'placeholder:text-color-disabled': disabled\n },\n classes?.textarea\n )}\n data-layer-id={dataLayers?.targetId}\n />\n </div>\n {attachmentProps && <FieldAttachment {...attachmentProps} />}\n </div>\n )\n }\n)\nTextareaBase.displayName = 'TextareaBase'\n"],"names":["TextareaBase","forwardRef","label","value","invalid","disabled","classes","attachmentProps","rows","externalHandlers","onChange","dataLayers","props","ref","id","useId","externalOnChange","restHandlers","onValueChange","event","jsxs","cn","jsx","FieldAttachment"],"mappings":"2NA+CO,MAAMA,EAAeC,EAC1B,CACE,CAAE,MAAAC,EAAO,MAAAC,EAAO,QAAAC,EAAS,SAAAC,EAAU,QAAAC,EAAS,gBAAAC,EAAiB,KAAAC,EAAO,EAAG,iBAAAC,EAAkB,SAAAC,EAAU,WAAAC,EAAY,GAAGC,CAAA,EAClHC,IACG,CACH,MAAMC,EAAKC,EAAA,EAEL,CAAE,SAAUC,EAAkB,GAAGC,CAAA,EAAiBR,GAAoB,CAAA,EAEtES,EAAiBC,GAAkD,CACnET,KAAmBS,CAAK,EACxBH,KAAmCG,CAAK,CAC9C,EAEA,OACEC,EAAC,MAAA,CACC,UAAWC,EACT,iGACA,6CACA,+BACA,oEACA,CACE,2BAA4BjB,CAAA,EAE9BE,GAAA,YAAAA,EAAS,SAAA,EAEX,UAAQ,gBAER,SAAA,CAAAc,EAAC,MAAA,CAAI,UAAU,uBACb,SAAA,CAAAE,EAAC,QAAA,CACC,QAASR,EACT,UAAWO,EACT,0CACA,wCACA,CACE,sBAAuBhB,CAAA,EAEzBC,GAAA,YAAAA,EAAS,KAAA,EAGV,SAAAJ,CAAA,CAAA,EAEHoB,EAAC,WAAA,CACE,GAAGV,EACH,GAAGK,EACJ,KAAAT,EACA,SAAAH,EACA,MAAOF,GAAS,GAChB,IAAAU,EACA,GAAAC,EACA,SAAUI,EACV,UAAWG,EACT,yFACA,gFACA,CACE,kCAAmChB,CAAA,EAErCC,GAAA,YAAAA,EAAS,QAAA,EAEX,gBAAeK,GAAA,YAAAA,EAAY,QAAA,CAAA,CAC7B,EACF,EACCJ,GAAmBe,EAACC,EAAA,CAAiB,GAAGhB,CAAA,CAAiB,CAAA,CAAA,CAAA,CAGhE,CACF,EACAP,EAAa,YAAc"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as o}from"react/jsx-runtime";import{UploaderFile as f}from"./UploaderFile.js";import{cn as c}from"../../../../../utils/cn.js";import{TypeGuards as n}from"../../../../../utils/typeGuards.js";import"react";const F=({files:r=[],filesStatus:
|
|
1
|
+
import{jsx as o}from"react/jsx-runtime";import{UploaderFile as f}from"./UploaderFile.js";import{cn as c}from"../../../../../utils/cn.js";import{TypeGuards as n}from"../../../../../utils/typeGuards.js";import"react";const F=({files:r=[],filesStatus:e,classes:s,removeFile:t})=>{const p=n.isArrayEmpty(r),{root:i,file:m}=s||{};return p?null:o("ul",{"data-id":"file-list",className:c("flex max-w-[476px] flex-col gap-1 px-1",i),children:r.map((a,l)=>o(f,{file:a,index:l,filesStatus:e,removeFile:t,classes:m},l))})};export{F as UploaderFiles};
|
|
2
2
|
//# sourceMappingURL=UploaderFiles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UploaderFiles.js","sources":["../../../../../../../../lib/shared/ui/formElements/uncontrolled/uploader/ui/UploaderFiles.tsx"],"sourcesContent":["import { type HTMLAttributes } from 'react'\nimport { UploaderFile, type UploaderFileClasses } from '$/shared/ui/formElements/uncontrolled/uploader/ui/UploaderFile'\nimport { cn, TypeGuards } from '$/shared/utils'\n\nexport type UploaderFilesClasses = {\n root?: string\n file?: UploaderFileClasses\n}\n\ninterface UploaderFilesProps extends HTMLAttributes<HTMLDivElement> {\n files?: File[]\n filesStatus: {\n [key: string]: 'loading' | 'success' | 'error'\n }\n removeFile: (index: number) => void\n classes?: UploaderFilesClasses\n}\n\nexport const UploaderFiles = ({ files = [], filesStatus, classes, removeFile }: UploaderFilesProps) => {\n const filesEmpty = TypeGuards.isArrayEmpty(files)\n\n const { root, file: fileClasses } = classes || {}\n\n if (!filesEmpty) {\n return (\n <ul data-
|
|
1
|
+
{"version":3,"file":"UploaderFiles.js","sources":["../../../../../../../../lib/shared/ui/formElements/uncontrolled/uploader/ui/UploaderFiles.tsx"],"sourcesContent":["import { type HTMLAttributes } from 'react'\nimport { UploaderFile, type UploaderFileClasses } from '$/shared/ui/formElements/uncontrolled/uploader/ui/UploaderFile'\nimport { cn, TypeGuards } from '$/shared/utils'\n\nexport type UploaderFilesClasses = {\n root?: string\n file?: UploaderFileClasses\n}\n\ninterface UploaderFilesProps extends HTMLAttributes<HTMLDivElement> {\n files?: File[]\n filesStatus: {\n [key: string]: 'loading' | 'success' | 'error'\n }\n removeFile: (index: number) => void\n classes?: UploaderFilesClasses\n}\n\nexport const UploaderFiles = ({ files = [], filesStatus, classes, removeFile }: UploaderFilesProps) => {\n const filesEmpty = TypeGuards.isArrayEmpty(files)\n\n const { root, file: fileClasses } = classes || {}\n\n if (!filesEmpty) {\n return (\n <ul data-id='file-list' className={cn('flex max-w-[476px] flex-col gap-1 px-1', root)}>\n {files.map((file, index) => (\n <UploaderFile\n key={index}\n file={file}\n index={index}\n filesStatus={filesStatus}\n removeFile={removeFile}\n classes={fileClasses}\n />\n ))}\n </ul>\n )\n }\n\n return null\n}\n"],"names":["UploaderFiles","files","filesStatus","classes","removeFile","filesEmpty","TypeGuards","root","fileClasses","jsx","cn","file","index","UploaderFile"],"mappings":"uNAkBO,MAAMA,EAAgB,CAAC,CAAE,MAAAC,EAAQ,CAAA,EAAI,YAAAC,EAAa,QAAAC,EAAS,WAAAC,KAAqC,CACrG,MAAMC,EAAaC,EAAW,aAAaL,CAAK,EAE1C,CAAE,KAAAM,EAAM,KAAMC,CAAA,EAAgBL,GAAW,CAAA,EAE/C,OAAKE,EAiBE,KAfHI,EAAC,KAAA,CAAG,UAAQ,YAAY,UAAWC,EAAG,yCAA0CH,CAAI,EACjF,SAAAN,EAAM,IAAI,CAACU,EAAMC,IAChBH,EAACI,EAAA,CAEC,KAAAF,EACA,MAAAC,EACA,YAAAV,EACA,WAAAE,EACA,QAASI,CAAA,EALJI,CAAA,CAOR,EACH,CAKN"}
|