@scbt-ecom/ui 0.140.1 → 0.140.3
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/ui/formElements/controlled/dadata/fio/query.js +1 -1
- package/dist/lib/shared/ui/formElements/controlled/dadata/fio/query.js.map +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/autocomplete/Autocomplete.js +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/autocomplete/Autocomplete.js.map +1 -1
- package/dist/lib/shared/ui/modal/Modal.js +1 -1
- package/dist/lib/shared/ui/modal/Modal.js.map +1 -1
- package/dist/stats.html +1 -1
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useQuery as
|
|
1
|
+
import{useQuery as i}from"../../../../../../../node_modules/@tanstack/react-query/build/modern/useQuery.js";import{getDataByDadataType as s}from"../helpers.js";const d=(e,a,o,r)=>i({queryKey:["fio",e],queryFn:async()=>{const n=await(await fetch(`${a}/fio`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({query:e})})).json();return s("fio",n)},staleTime:5*60*1e3,gcTime:0,placeholderData:t=>t,enabled:!!e,...o},r);export{d as useDadataQueryFio};
|
|
2
2
|
//# sourceMappingURL=query.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.js","sources":["../../../../../../../../lib/shared/ui/formElements/controlled/dadata/fio/query.ts"],"sourcesContent":["import { type QueryClient, useQuery, type UseQueryOptions } from '@tanstack/react-query'\nimport { getDataByDadataType } from '../helpers'\nimport { type IDadataCacheOption } from '../types'\n\nexport const useDadataQueryFio = (\n query: string,\n dadataBaseUrl: string,\n options?: Partial<UseQueryOptions<IDadataCacheOption<unknown>[]>>,\n queryClient?: QueryClient\n)
|
|
1
|
+
{"version":3,"file":"query.js","sources":["../../../../../../../../lib/shared/ui/formElements/controlled/dadata/fio/query.ts"],"sourcesContent":["import { type QueryClient, useQuery, type UseQueryOptions } from '@tanstack/react-query'\nimport { getDataByDadataType } from '../helpers'\nimport { type IDadataCacheOption } from '../types'\n\nexport const useDadataQueryFio = (\n query: string,\n dadataBaseUrl: string,\n options?: Partial<UseQueryOptions<IDadataCacheOption<unknown>[]>>,\n queryClient?: QueryClient\n) => {\n return useQuery(\n {\n queryKey: ['fio', query],\n queryFn: async () => {\n const result = await fetch(`${dadataBaseUrl}/fio`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({ query })\n })\n\n // if (!result.ok) {\n // return result\n // }\n\n const data = await result.json()\n return getDataByDadataType('fio', data) as IDadataCacheOption<unknown>[]\n },\n staleTime: 5 * 60 * 1000,\n gcTime: 0,\n placeholderData: (prev) => prev,\n enabled: Boolean(query),\n ...options\n },\n queryClient\n )\n}\n"],"names":["useDadataQueryFio","query","dadataBaseUrl","options","queryClient","useQuery","data","getDataByDadataType","prev"],"mappings":"gKAIO,MAAMA,EAAoB,CAC/BC,EACAC,EACAC,EACAC,IAEOC,EACL,CACE,SAAU,CAAC,MAAOJ,CAAK,EACvB,QAAS,SAAY,CAanB,MAAMK,EAAO,MAZE,MAAM,MAAM,GAAGJ,CAAa,OAAQ,CACjD,OAAQ,OACR,QAAS,CACP,eAAgB,kBAAA,EAElB,KAAM,KAAK,UAAU,CAAE,MAAAD,EAAO,CAAA,CAC/B,GAMyB,KAAA,EAC1B,OAAOM,EAAoB,MAAOD,CAAI,CACxC,EACA,UAAW,EAAI,GAAK,IACpB,OAAQ,EACR,gBAAkBE,GAASA,EAC3B,QAAS,EAAQP,EACjB,GAAGE,CAAA,EAELC,CAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as S}from"react/jsx-runtime";import{forwardRef as g,useState as q}from"react";import"../../../../../../node_modules/classnames/index.js";import"react-hook-form";import{useDebounceValue as y}from"../../../../hooks/useDebounce.js";import"../../../button/Button.js";import"../../../buttonIcon/ButtonIcon.js";import"../../../calendar/Calendar.js";import"../../../calendar/model/utils.js";import"../../../accordion/Accordion.js";import"react-dom";import"../../../modal/ui/IframeModalContent.js";import"../../../../../../node_modules/react-hot-toast/dist/index.js";import"../../../table/ui/primitives/Primitives.js";import"../../../carousel/ui/CarouselContent.js";import"../../../slot/Slot.js";import"../checkbox/Checkbox.js";import{Combobox as D}from"../combobox/combobox.js";import"../dayPicker/DayPicker.js";import"../input/Input.js";import"../inputOtp/InputOtpBase.js";import"../maskInput/MaskInput.js";import"../radio/RadioGroup.js";import"../radio/ui/RadioItem.js";import"../slider/SliderBase.js";import"../switch/Switch.js";import"../textarea/Textarea.js";import"../uploader/UploaderBase.js";import"../inputCurrency/InputCurrency.js";import"../../../../../../src/configs/api.js";import"../../controlled/editor/ui/Editor.js";import"../../controlled/input/MaskInputControl.js";import"../../../dropdownList/ui/dropdownItem/DropdownItem.js";const pt=g(({formatter:c,query:u,queryOptions:f,value:p,displayValue:o,limit:m=0,onChange:r,strategy:e="input-first",...a},b)=>{const[h,l]=q(p??""),n=e==="input-first"?p??"":h,x=e==="input-first"?r:l,s=y(n,100),A={...f},{data:t}=u(s,A),C=t&&Array.isArray(t)?t==null?void 0:t.map(c):[];return S(D,{...a,ref:b,options:C,searchable:!0,filterDisabled:!0,inputValue:n,onInputChange:x,multiple:!1,displayValue:o,onChange:i=>{i&&r&&r(o?o(i):i.label)},empty:s.length<m?`Введите более ${m} символов для поиска`:void 0})});export{pt as AutocompleteBase};
|
|
2
2
|
//# sourceMappingURL=Autocomplete.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Autocomplete.js","sources":["../../../../../../../lib/shared/ui/formElements/uncontrolled/autocomplete/Autocomplete.tsx"],"sourcesContent":["import { forwardRef, useState } from 'react'\nimport { type UseQueryOptions, type UseQueryResult } from '@tanstack/react-query'\nimport type { AutocompleteItemOption } from './types'\nimport { useDebounceValue } from '$/shared/hooks'\nimport { Combobox, type ComboboxProps, type ComboboxValue } from '$/shared/ui'\n\nexport interface AutocompleteBaseProps<TData>\n extends Omit<\n ComboboxProps<false>,\n 'options' | 'inputValue' | 'onInputChange' | 'searchable' | 'multiple' | 'value' | 'onChange'\n > {\n /**\n * Функция для запроса основанная на [@tanstack/query](https://tanstack.com/query/latest/docs/framework/react/overview)\n */\n query: (query: string, options?: Partial<UseQueryOptions<TData[]>>) => UseQueryResult<TData[]>\n /**\n * Параметры запроса\n */\n queryOptions?: Partial<UseQueryOptions<TData[]>>\n /**\n * Позволяет форматировать данные\n */\n formatter: (item: TData, index: number, array: TData[]) => AutocompleteItemOption<TData>\n /**\n * Значение инпута\n */\n value?: string\n /**\n * Handler инпута\n */\n onChange?: (value: string) => void\n /**\n * Стратегия управления полем\n * @variation `input-first` - источником правды является инпут\n * @variation `select-first` - источником правды является список\n * @default input-first\n */\n strategy?: 'input-first' | 'select-first'\n limit?: number\n}\n\nexport const AutocompleteBase = forwardRef(\n <TData,>(\n {\n formatter,\n query,\n queryOptions: initialQueryOptions,\n value,\n displayValue,\n limit = 0,\n onChange,\n strategy = 'input-first',\n ...props\n }: AutocompleteBaseProps<TData>,\n ref: React.ForwardedRef<HTMLInputElement>\n ) => {\n const [search, setSearch] = useState<string>(value ?? '')\n\n const inputValue = strategy === 'input-first' ? (value ?? '') : search\n const onInputChange = strategy === 'input-first' ? onChange : setSearch\n\n const debounceSearch = useDebounceValue(inputValue, 100)\n\n const queryOptions: Partial<UseQueryOptions<TData[]>> = {\n enabled: limit > 0 ? debounceSearch.length >= limit : true,\n ...initialQueryOptions\n }\n\n const { data } = query(debounceSearch, queryOptions)\n\n const options = data ? data
|
|
1
|
+
{"version":3,"file":"Autocomplete.js","sources":["../../../../../../../lib/shared/ui/formElements/uncontrolled/autocomplete/Autocomplete.tsx"],"sourcesContent":["import { forwardRef, useState } from 'react'\nimport { type UseQueryOptions, type UseQueryResult } from '@tanstack/react-query'\nimport type { AutocompleteItemOption } from './types'\nimport { useDebounceValue } from '$/shared/hooks'\nimport { Combobox, type ComboboxProps, type ComboboxValue } from '$/shared/ui'\n\nexport interface AutocompleteBaseProps<TData>\n extends Omit<\n ComboboxProps<false>,\n 'options' | 'inputValue' | 'onInputChange' | 'searchable' | 'multiple' | 'value' | 'onChange'\n > {\n /**\n * Функция для запроса основанная на [@tanstack/query](https://tanstack.com/query/latest/docs/framework/react/overview)\n */\n query: (query: string, options?: Partial<UseQueryOptions<TData[]>>) => UseQueryResult<TData[]>\n /**\n * Параметры запроса\n */\n queryOptions?: Partial<UseQueryOptions<TData[]>>\n /**\n * Позволяет форматировать данные\n */\n formatter: (item: TData, index: number, array: TData[]) => AutocompleteItemOption<TData>\n /**\n * Значение инпута\n */\n value?: string\n /**\n * Handler инпута\n */\n onChange?: (value: string) => void\n /**\n * Стратегия управления полем\n * @variation `input-first` - источником правды является инпут\n * @variation `select-first` - источником правды является список\n * @default input-first\n */\n strategy?: 'input-first' | 'select-first'\n limit?: number\n}\n\nexport const AutocompleteBase = forwardRef(\n <TData,>(\n {\n formatter,\n query,\n queryOptions: initialQueryOptions,\n value,\n displayValue,\n limit = 0,\n onChange,\n strategy = 'input-first',\n ...props\n }: AutocompleteBaseProps<TData>,\n ref: React.ForwardedRef<HTMLInputElement>\n ) => {\n const [search, setSearch] = useState<string>(value ?? '')\n\n const inputValue = strategy === 'input-first' ? (value ?? '') : search\n const onInputChange = strategy === 'input-first' ? onChange : setSearch\n\n const debounceSearch = useDebounceValue(inputValue, 100)\n\n const queryOptions: Partial<UseQueryOptions<TData[]>> = {\n // enabled: limit > 0 ? debounceSearch.length >= limit : true,\n ...initialQueryOptions\n }\n\n const { data } = query(debounceSearch, queryOptions)\n\n const options = data && Array.isArray(data) ? data?.map(formatter) : []\n\n const onValueChange = (value: ComboboxValue<false>) => {\n if (!value) return\n\n if (onChange) onChange(displayValue ? displayValue(value) : value.label)\n }\n\n return (\n <Combobox\n {...props}\n ref={ref}\n options={options}\n searchable\n filterDisabled\n inputValue={inputValue}\n onInputChange={onInputChange}\n multiple={false}\n displayValue={displayValue}\n onChange={onValueChange}\n empty={debounceSearch.length < limit ? `Введите более ${limit} символов для поиска` : undefined}\n />\n )\n }\n) as <TData>(props: AutocompleteBaseProps<TData> & { ref: React.Ref<HTMLInputElement> }) => React.JSX.Element\n"],"names":["AutocompleteBase","forwardRef","formatter","query","initialQueryOptions","value","displayValue","limit","onChange","strategy","props","ref","search","setSearch","useState","inputValue","onInputChange","debounceSearch","useDebounceValue","queryOptions","data","options","jsx","Combobox"],"mappings":"q0CAyCO,MAAMA,GAAmBC,EAC9B,CACE,CACE,UAAAC,EACA,MAAAC,EACA,aAAcC,EACd,MAAAC,EACA,aAAAC,EACA,MAAAC,EAAQ,EACR,SAAAC,EACA,SAAAC,EAAW,cACX,GAAGC,CAAA,EAELC,IACG,CACH,KAAM,CAACC,EAAQC,CAAS,EAAIC,EAAiBT,GAAS,EAAE,EAElDU,EAAaN,IAAa,cAAiBJ,GAAS,GAAMO,EAC1DI,EAAgBP,IAAa,cAAgBD,EAAWK,EAExDI,EAAiBC,EAAiBH,EAAY,GAAG,EAEjDI,EAAkD,CAEtD,GAAGf,CAAA,EAGC,CAAE,KAAAgB,CAAA,EAASjB,EAAMc,EAAgBE,CAAY,EAE7CE,EAAUD,GAAQ,MAAM,QAAQA,CAAI,EAAIA,GAAA,YAAAA,EAAM,IAAIlB,GAAa,CAAA,EAQrE,OACEoB,EAACC,EAAA,CACE,GAAGb,EACJ,IAAAC,EACA,QAAAU,EACA,WAAU,GACV,eAAc,GACd,WAAAN,EACA,cAAAC,EACA,SAAU,GACV,aAAAV,EACA,SAjBmBD,GAAgC,CAChDA,GAEDG,GAAUA,EAASF,EAAeA,EAAaD,CAAK,EAAIA,EAAM,KAAK,CACzE,EAcI,MAAOY,EAAe,OAASV,EAAQ,iBAAiBA,CAAK,uBAAyB,MAAA,CAAA,CAG5F,CACF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as r,jsxs as
|
|
1
|
+
import{jsx as r,jsxs as D,Fragment as M}from"react/jsx-runtime";import{useEffect as R,useRef as f}from"react";import{createPortal as y}from"react-dom";import{modalOverlayAnimation as N,modalContentAnimation as j}from"./model/helpers.js";import{IframeModalContent as k}from"./ui/IframeModalContent.js";import{ModalHeader as A}from"./ui/ModalHeader.js";import{cn as e}from"../../utils/cn.js";import{mergeRefs as C}from"../../utils/mergeRefs.js";import{AnimatePresence as E}from"../../../../node_modules/framer-motion/dist/es/components/AnimatePresence/index.js";import{motion as l}from"../../../../node_modules/framer-motion/dist/es/render/components/motion/proxy.js";const q=({title:c,children:u,isModalOpen:n,isPortal:a=!0,portalContainer:v=(h=>(h=globalThis==null?void 0:globalThis.document)==null?void 0:h.body)(),closeModal:m,classes:o,iframe:w})=>{R(()=>(n&&(document.body.style.overflow="hidden"),()=>{document.body.style.overflow="visible"}),[n]);const x=f(null),i=f(null),d=f(!1),b=t=>{t.target===i.current&&(d.current=!0)},g=t=>{d.current&&t.target===i.current&&m(),d.current=!1},p=r(E,{children:n&&r(l.div,{ref:C(t=>t==null?void 0:t.focus(),i),tabIndex:-1,onMouseDown:b,onMouseUp:g,className:e("fixed inset-0 flex h-screen w-screen items-center justify-center bg-color-overlay",{"z-1000":!a},o==null?void 0:o.overlay),onKeyDown:t=>{t.key==="Escape"&&m()},"data-test-id":"modal-overlay",...N,children:D(l.div,{onMouseDown:t=>t.stopPropagation(),className:e("w-full max-w-[600px] rounded-md bg-color-white px-4 py-6 shadow-sm desktop:px-6 desktop:py-8",o==null?void 0:o.modal),"data-test-id":"modal",...j,children:[r(A,{title:c,closeModal:m,classes:o==null?void 0:o.modalHeader}),w?r(k,{ref:x,className:e("mt-4",o==null?void 0:o.content),children:t=>y(u,t)}):r("div",{className:e("mt-4",o==null?void 0:o.content),children:u})]})})});return r(M,{children:a?y(p,v):p})};export{q as Modal};
|
|
2
2
|
//# sourceMappingURL=Modal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Modal.js","sources":["../../../../../lib/shared/ui/modal/Modal.tsx"],"sourcesContent":["'use client'\n\nimport * as React from 'react'\nimport { useEffect, useRef } from 'react'
|
|
1
|
+
{"version":3,"file":"Modal.js","sources":["../../../../../lib/shared/ui/modal/Modal.tsx"],"sourcesContent":["'use client'\n\nimport * as React from 'react'\nimport { useEffect, useRef } from 'react' // useState больше не нужен\nimport { createPortal } from 'react-dom'\nimport { AnimatePresence, motion } from 'framer-motion'\nimport { modalContentAnimation, modalOverlayAnimation } from './model/helpers'\nimport { IframeModalContent } from './ui/IframeModalContent'\nimport { ModalHeader, type TModalHeaderClasses } from './ui/ModalHeader'\nimport { cn, mergeRefs } from '$/shared/utils'\n\ntype ModalClasses = {\n overlay?: string\n modal?: string\n content?: string\n modalHeader?: TModalHeaderClasses\n}\n\nexport interface ModalProps {\n children: React.ReactElement\n isModalOpen: boolean\n classes?: ModalClasses\n isPortal?: boolean\n portalContainer?: HTMLElement\n title?: string | React.ReactElement\n closeModal: () => void\n iframe?: boolean\n}\n\nexport const Modal = ({\n title,\n children,\n isModalOpen,\n isPortal = true,\n portalContainer = globalThis?.document?.body,\n closeModal,\n classes,\n iframe\n}: ModalProps) => {\n useEffect(() => {\n if (isModalOpen) {\n document.body.style.overflow = 'hidden'\n }\n return () => {\n document.body.style.overflow = 'visible'\n }\n }, [isModalOpen])\n\n const iframeRef = useRef<HTMLIFrameElement>(null)\n const overlayRef = useRef<HTMLDivElement>(null)\n const isMouseDownOnOverlayRef = useRef(false)\n\n const handleMouseDown = (e: React.MouseEvent<HTMLDivElement>) => {\n if (e.target === overlayRef.current) {\n isMouseDownOnOverlayRef.current = true\n }\n }\n\n const handleMouseUp = (e: React.MouseEvent<HTMLDivElement>) => {\n if (isMouseDownOnOverlayRef.current && e.target === overlayRef.current) {\n closeModal()\n }\n isMouseDownOnOverlayRef.current = false\n }\n\n const modalBody = (\n <AnimatePresence>\n {isModalOpen && (\n <motion.div\n ref={mergeRefs((node) => node?.focus(), overlayRef)}\n tabIndex={-1}\n onMouseDown={handleMouseDown}\n onMouseUp={handleMouseUp}\n className={cn(\n 'fixed inset-0 flex h-screen w-screen items-center justify-center bg-color-overlay',\n { 'z-1000': !isPortal },\n classes?.overlay\n )}\n onKeyDown={(event) => {\n if (event.key === 'Escape') {\n closeModal()\n }\n }}\n data-test-id='modal-overlay'\n {...modalOverlayAnimation}\n >\n <motion.div\n onMouseDown={(event) => event.stopPropagation()}\n className={cn(\n 'w-full max-w-[600px] rounded-md bg-color-white px-4 py-6 shadow-sm desktop:px-6 desktop:py-8',\n classes?.modal\n )}\n data-test-id='modal'\n {...modalContentAnimation}\n >\n <ModalHeader title={title} closeModal={closeModal} classes={classes?.modalHeader} />\n {iframe ? (\n <IframeModalContent ref={iframeRef} className={cn('mt-4', classes?.content)}>\n {(iframeBody) => createPortal(children, iframeBody)}\n </IframeModalContent>\n ) : (\n <div className={cn('mt-4', classes?.content)}>{children}</div>\n )}\n </motion.div>\n </motion.div>\n )}\n </AnimatePresence>\n )\n return <>{isPortal ? createPortal(modalBody, portalContainer) : modalBody}</>\n}\n"],"names":["Modal","title","children","isModalOpen","isPortal","portalContainer","_a","closeModal","classes","iframe","useEffect","iframeRef","useRef","overlayRef","isMouseDownOnOverlayRef","handleMouseDown","e","handleMouseUp","modalBody","jsx","AnimatePresence","motion","mergeRefs","node","cn","event","modalOverlayAnimation","jsxs","modalContentAnimation","ModalHeader","IframeModalContent","iframeBody","createPortal"],"mappings":"0pBA6BO,MAAMA,EAAQ,CAAC,CACpB,MAAAC,EACA,SAAAC,EACA,YAAAC,EACA,SAAAC,EAAW,GACX,gBAAAC,GAAkBC,MAAA,mCAAY,WAAZ,YAAAA,EAAsB,QACxC,WAAAC,EACA,QAAAC,EACA,OAAAC,CACF,IAAkB,CAChBC,EAAU,KACJP,IACF,SAAS,KAAK,MAAM,SAAW,UAE1B,IAAM,CACX,SAAS,KAAK,MAAM,SAAW,SACjC,GACC,CAACA,CAAW,CAAC,EAEhB,MAAMQ,EAAYC,EAA0B,IAAI,EAC1CC,EAAaD,EAAuB,IAAI,EACxCE,EAA0BF,EAAO,EAAK,EAEtCG,EAAmBC,GAAwC,CAC3DA,EAAE,SAAWH,EAAW,UAC1BC,EAAwB,QAAU,GAEtC,EAEMG,EAAiBD,GAAwC,CACzDF,EAAwB,SAAWE,EAAE,SAAWH,EAAW,SAC7DN,EAAA,EAEFO,EAAwB,QAAU,EACpC,EAEMI,EACJC,EAACC,EAAA,CACE,SAAAjB,GACCgB,EAACE,EAAO,IAAP,CACC,IAAKC,EAAWC,GAASA,GAAA,YAAAA,EAAM,QAASV,CAAU,EAClD,SAAU,GACV,YAAaE,EACb,UAAWE,EACX,UAAWO,EACT,oFACA,CAAE,SAAU,CAACpB,CAAA,EACbI,GAAA,YAAAA,EAAS,OAAA,EAEX,UAAYiB,GAAU,CAChBA,EAAM,MAAQ,UAChBlB,EAAA,CAEJ,EACA,eAAa,gBACZ,GAAGmB,EAEJ,SAAAC,EAACN,EAAO,IAAP,CACC,YAAcI,GAAUA,EAAM,gBAAA,EAC9B,UAAWD,EACT,+FACAhB,GAAA,YAAAA,EAAS,KAAA,EAEX,eAAa,QACZ,GAAGoB,EAEJ,SAAA,CAAAT,EAACU,EAAA,CAAY,MAAA5B,EAAc,WAAAM,EAAwB,QAASC,GAAA,YAAAA,EAAS,YAAa,EACjFC,EACCU,EAACW,EAAA,CAAmB,IAAKnB,EAAW,UAAWa,EAAG,OAAQhB,GAAA,YAAAA,EAAS,OAAO,EACvE,SAACuB,GAAeC,EAAa9B,EAAU6B,CAAU,EACpD,EAEAZ,EAAC,MAAA,CAAI,UAAWK,EAAG,OAAQhB,GAAA,YAAAA,EAAS,OAAO,EAAI,SAAAN,CAAA,CAAS,CAAA,CAAA,CAAA,CAE5D,CAAA,EAGN,EAEF,YAAU,SAAAE,EAAW4B,EAAad,EAAWb,CAAe,EAAIa,EAAU,CAC5E"}
|