@bothub-chat/ui 2.61.0 → 2.61.1-feat-generics-in-select-b6b6cf11-a2ed-403a-b1b1-247607966754
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/components/badge-select-dropdown/index.d.ts +7 -7
- package/dist/components/file-field/index.d.ts +1 -0
- package/dist/components/file-field/index.js +1 -1
- package/dist/components/lang-switcher/index.d.ts +4 -4
- package/dist/components/lang-switcher/styled.d.ts +1 -1
- package/dist/components/select-field/index.d.ts +4 -4
- package/dist/components/select-field/nodes/value/index.d.ts +4 -4
- package/dist/components/select-field/select-modal/filterData.d.ts +2 -2
- package/dist/components/select-field/select-modal/index.d.ts +8 -8
- package/dist/components/select-field/select-modal/index.js +1 -1
- package/dist/components/select-field/select-modal/option/checkbox-group/index.d.ts +9 -9
- package/dist/components/select-field/select-modal/option/collapse/index.d.ts +4 -4
- package/dist/components/select-field/select-modal/option/list/index.d.ts +2 -2
- package/dist/components/select-field/select-modal/option/select-field-option/index.d.ts +3 -3
- package/dist/components/select-field/select-modal/option/types.d.ts +8 -8
- package/dist/components/select-field/types.d.ts +15 -15
- package/dist/components/select-field/useSelectField.d.ts +32 -16
- package/dist/components/select-field/useSelectField.js +1 -1
- package/package.json +1 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { SelectFieldChangeEventHandler, SelectFieldDataItem, SelectFieldSize, SelectFieldValueChangeEventHandler, UseSelectFieldProps } from '../select-field';
|
|
2
2
|
import { Variant } from './types';
|
|
3
|
-
export type BadgeSelectDropdownProps = {
|
|
4
|
-
options:
|
|
5
|
-
value?:
|
|
3
|
+
export type BadgeSelectDropdownProps<DataItem extends SelectFieldDataItem<any>> = {
|
|
4
|
+
options: DataItem[];
|
|
5
|
+
value?: DataItem | null;
|
|
6
6
|
variant?: Variant;
|
|
7
7
|
colorButtonOpened?: string;
|
|
8
8
|
className?: string;
|
|
@@ -13,8 +13,8 @@ export type BadgeSelectDropdownProps = {
|
|
|
13
13
|
contentWidth?: number;
|
|
14
14
|
searchPlaceholder?: string;
|
|
15
15
|
openedModel?: string;
|
|
16
|
-
onChange?: SelectFieldChangeEventHandler
|
|
17
|
-
onValueChange?: SelectFieldValueChangeEventHandler
|
|
18
|
-
} & Omit<UseSelectFieldProps
|
|
19
|
-
export declare const BadgeSelectDropdown:
|
|
16
|
+
onChange?: SelectFieldChangeEventHandler<DataItem>;
|
|
17
|
+
onValueChange?: SelectFieldValueChangeEventHandler<DataItem>;
|
|
18
|
+
} & Omit<UseSelectFieldProps<DataItem>, 'onChange' | 'multiple' | 'onValueChange' | 'value'>;
|
|
19
|
+
export declare const BadgeSelectDropdown: <DataItem extends SelectFieldDataItem<any>>(props: BadgeSelectDropdownProps<DataItem>) => React.ReactNode;
|
|
20
20
|
export * from './styled';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{__rest as i}from"tslib";import{jsx as o,jsxs as s}from"react/jsx-runtime";import{useCallback as n,useState as e}from"react";import{FileFieldIcon as r,FileFieldStyled as t,FileFieldLabel as c,FileFieldBlock as d,FileFieldInput as p,FileFieldPlaceholder as m,FileFieldFiles as x,FileFieldFile as j,FileFieldFileDeleteButton as a,FileFieldErrorText as l}from"./styled.js";import{BadgeText as g}from"../badge/styled.js";import{IconProvider as u}from"../icon/context.js";import"../icon/styled.js";import"@react-spring/web";import"react-markdown";import"react-dom";import"../portal/styled.js";import"../tooltip/styled.js";import"../tooltip/arrow/styled.js";import"../../theme/index.js";import{TooltipConsumer as b}from"../tooltip/context.js";import"../../icons/error/index.js";import"../badge/progress/styled.js";import"../../icons/arrow-down/index.js";import"../../icons/arrow-narrow-left/index.js";import"../../icons/arrow-narrow-right/index.js";import"../../icons/arrow-up/index.js";import"../../icons/bitcoin/index.js";import"../../icons/bot-circle/index.js";import"../../icons/bothub-agg/index.js";import"../../icons/business-colored/index.js";import"../../icons/check-circle/index.js";import"../../icons/close/index.js";import"../../icons/email-circle/index.js";import"../../icons/language/index.js";import"../../icons/lock-circle/index.js";import"../../icons/menu/index.js";import"../../icons/medium-circle/index.js";import"../../icons/tg-circle/index.js";import"../../icons/tg-colored/index.js";import"../../icons/youcassa/index.js";import"../../icons/dashboard/index.js";import"../../icons/user-profile/index.js";import"../../icons/logout/index.js";import"../../icons/habr-2/index.js";import"../../icons/arrow-2-down/index.js";import"../../icons/links/index.js";import"../../icons/free/index.js";import"../../icons/hotness/index.js";import"../../icons/checked/index.js";import"../../icons/ai/index.js";import"../../icons/bookmarks/index.js";import"../../icons/bookmarks-big/index.js";import"../../icons/chat/index.js";import"../../icons/chats/index.js";import"../../icons/coder/index.js";import"../../icons/copy/index.js";import"../../icons/edit/index.js";import"../../icons/presets-big/index.js";import"../../icons/referal/index.js";import"../../icons/restore/index.js";import"../../icons/tariff/index.js";import"../../icons/trash/index.js";import"../../icons/update/index.js";import"../../icons/menu-dot/index.js";import"../../icons/plus-2/index.js";import"../../icons/plus-1/index.js";import"../../icons/send/index.js";import"../../icons/settings/index.js";import"../../icons/habr/index.js";import"../../icons/check-small/index.js";import"../../icons/stop/index.js";import"../../icons/thumb-up/index.js";import"../../icons/thumb-down/index.js";import"../../icons/star/index.js";import"../../icons/info-big/index.js";import"../../icons/warning-big/index.js";import"../../icons/error-big/index.js";import"../../icons/success-big/index.js";import"../../icons/mj/index.js";import"../../icons/card/index.js";import"../../icons/arrow-narrow-up/index.js";import"../../icons/arrow-narrow-down/index.js";import"../../icons/filters/index.js";import"../../icons/info/index.js";import"../../icons/search-circle/index.js";import"../../icons/save/index.js";import"../../icons/light/index.js";import"../../icons/dark/index.js";import"../../icons/email-colored/index.js";import"../../icons/action-chat/index.js";import"../../icons/attach/index.js";import"../../icons/avatar-add/index.js";import"../../icons/brush/index.js";import"../../icons/calendar/index.js";import"../../icons/claude/index.js";import"../../icons/cookie/index.js";import"../../icons/dalle/index.js";import"../../icons/download-img/index.js";import"../../icons/expand/index.js";import"../../icons/eye/index.js";import"../../icons/face/index.js";import"../../icons/gear/index.js";import"../../icons/gear-min/index.js";import"../../icons/generation/index.js";import"../../icons/gpt-3_5/index.js";import"../../icons/gpt-4/index.js";import"../../icons/imagine/index.js";import"../../icons/imagine-2/index.js";import"../../icons/loader/index.js";import"../../icons/loader-circular/index.js";import"../../icons/loader-circular-gradient/index.js";import"../../icons/loader-circular-gradient-2/index.js";import"../../icons/minus/index.js";import"../../icons/mj-white/index.js";import"../../icons/prompt/index.js";import"../../icons/rabbit/index.js";import"../../icons/ratio-1x1/index.js";import"../../icons/ratio-2x3/index.js";import"../../icons/ratio-3x2/index.js";import"../../icons/ratio-4x5/index.js";import"../../icons/ratio-4x7/index.js";import"../../icons/ratio-5x4/index.js";import"../../icons/ratio-7x4/index.js";import"../../icons/ratio-16x9/index.js";import"../../icons/ratio-9x16/index.js";import"../../icons/ratio-21x9/index.js";import"../../icons/ratio-9x21/index.js";import"../../icons/refferal-min/index.js";import"../../icons/search-data/index.js";import"../../icons/square/index.js";import"../../icons/turtle/index.js";import"../../icons/upscale/index.js";import"../../icons/withdraw/index.js";import"../../icons/search-plus/index.js";import"../../icons/lightning/index.js";import"../../icons/blog-circle/index.js";import"../../icons/stripe/index.js";import"../../icons/corporate/index.js";import"../../icons/public/index.js";import"../../icons/private/index.js";import"../../icons/mistral/index.js";import"../../icons/gemini/index.js";import"../../icons/search-simple/index.js";import"../../icons/sad-robot/index.js";import"../../icons/model/index.js";import"../../icons/phone-colored/index.js";import"../../icons/questions/index.js";import"../../icons/pdf-big/index.js";import"../../icons/xls-big/index.js";import"../../icons/word-big/index.js";import"../../icons/txt-big/index.js";import{PdfIcon as h}from"../../icons/pdf/index.js";import{XlsIcon as f}from"../../icons/xls/index.js";import{WordIcon as w}from"../../icons/word/index.js";import{TxtIcon as y}from"../../icons/txt/index.js";import"../../icons/bothub-logo-gradient/index.js";import"../../icons/telegram-logo-gradient/index.js";import"../../icons/decline-circle/index.js";import"../../icons/simple-gear-bg/index.js";import"../../icons/advanced-filter/index.js";import"../../icons/big-corporate/index.js";import"../../icons/big-mj/index.js";import"../../icons/big-models/index.js";import"../../icons/big-stats/index.js";import"../../icons/big-success/index.js";import"../../icons/big-users/index.js";import"../../icons/optional-presets/index.js";import"../../icons/wallet-withdraw/index.js";import"../../icons/big-presets/index.js";import"../../icons/big-favorite/index.js";import"../../icons/big-referal/index.js";import{AttachFileIcon as k}from"../../icons/attach-file/index.js";import"../../icons/attach-file-big/index.js";import"../../icons/voice/index.js";import"../../icons/play-button/index.js";import"../../icons/pause-button/index.js";import"../../icons/text-read/index.js";import"../../icons/text-hide/index.js";import"../../icons/best-chat-bots/index.js";import"../../icons/upload/index.js";import"../../icons/enter/index.js";import"../../icons/discord/index.js";import"../../icons/discord-circle/index.js";import"../../icons/black-forest-labs/index.js";import"../../icons/flux/index.js";import"../../icons/stable-diffusion/index.js";import"../../icons/stability-ai/index.js";import"../../icons/article-generator/index.js";import"../../icons/success/index.js";import"../../icons/google/index.js";import"../../icons/yandex/index.js";import"../../icons/vk/index.js";import"../../icons/resend/index.js";import"../../icons/big-article/index.js";import"../../icons/add-chat/index.js";import"../../icons/add-group/index.js";import"../../icons/drag-dot/index.js";import"../../icons/add-folder/index.js";import"../../icons/temp-chat/index.js";import"../../icons/delete-chat/index.js";import"../../icons/sidebar-chat/index.js";import"../../icons/organization/index.js";import"../../icons/simple-gear/index.js";import"../../icons/text-bold/index.js";import"../../icons/text-italic/index.js";import"../../icons/text-underline/index.js";import"../../icons/text-strikethrough/index.js";import"../../icons/refresh/index.js";import"../../icons/copy-variants/index.js";import"../../icons/sort-ascending/index.js";import"../../icons/sort-descending/index.js";import"../../icons/quote/index.js";import"../../icons/url-circle/index.js";import"../../icons/show-ui/index.js";import"../../icons/hide-ui/index.js";import"../../icons/sort-user/index.js";import"../../icons/happy-robot/index.js";import"../../icons/happy-robot-gradient/index.js";import"../../icons/min-window/index.js";import"../../icons/max-window/index.js";import"../../icons/manage-chat/index.js";import"../../icons/analyze-urls/index.js";import"../../icons/web-search/index.js";import"../../icons/include-context/index.js";import"../../icons/queue/index.js";import"../../icons/sort-alphabet-ascending/index.js";import"../../icons/sort-alphabet-descending/index.js";import"../../icons/sort-date-ascending/index.js";import"../../icons/sort-date-descending/index.js";import"../../icons/cot-r1/index.js";import"../../icons/news/index.js";import"../../icons/volume/index.js";import"../../icons/flag-ru/index.js";import"../../icons/flag-kz/index.js";import"../../icons/print/index.js";import"../../icons/pc-icon-1/index.js";import"../../icons/pc-icon-2/index.js";import"../../icons/pc-icon-3/index.js";import"../../icons/star-unfilled/index.js";import"../../icons/image-generation/index.js";import"../../icons/speech-synthesys/index.js";import"../../icons/transcription/index.js";import"../../icons/text-rewrite/index.js";import"../../icons/code-generation/index.js";import"../../icons/essay-generation/index.js";import"../../icons/spelling/index.js";import"../../icons/text-generation/index.js";import"../../icons/traffic-analisys/index.js";import"../../icons/fav-profile/index.js";import"../../icons/exclamation/index.js";import"../../icons/article/index.js";import"../../icons/setchel/index.js";import"../../icons/assembly/index.js";import"../../icons/data-visualisation/index.js";import"../../icons/document-analisys/index.js";import"../../icons/problem-solvment/index.js";import"../../icons/setting-analisys/index.js";import"../../icons/translation/index.js";import"../../icons/stars/index.js";import"../../icons/academy/index.js";import"../../icons/articles/index.js";import"../../icons/blog-post/index.js";import"../../icons/book/index.js";import"../../icons/bow-tie/index.js";import"../../icons/case-study/index.js";import"../../icons/comments/index.js";import"../../icons/guide/index.js";import"../../icons/marketing/index.js";import"../../icons/post/index.js";import"../../icons/report/index.js";import"../../icons/review/index.js";import"../../icons/scientific-article/index.js";import"../../icons/selling-text/index.js";import"../../icons/textbook/index.js";import"../../icons/wind/index.js";import"../../icons/grok/index.js";import"../../icons/deepseek/index.js";import"../../icons/grid-horizontal/index.js";import"../../icons/grid-vertical/index.js";import"../../icons/star-gradient/index.js";import"../../icons/qwen/index.js";import"../../icons/sidebar-toggle-left/index.js";import"../../icons/sidebar-toggle-right/index.js";import"../../icons/system/index.js";import"../../icons/selector/index.js";import"../../icons/video-camera/index.js";import"../../icons/music-note/index.js";import"../../icons/add-profile/index.js";import"../../icons/token-counter/index.js";import"../../icons/customer-support/index.js";import"../../icons/sort-alphabet-top-bottom/index.js";import"../../icons/sort-alphabet-bottom-top/index.js";import"../../icons/pause/index.js";import"../../icons/play/index.js";import"../../icons/restore-2/index.js";import"../../icons/video-generation/index.js";import"../../icons/veo-model/index.js";import"../../icons/runway/index.js";import"../../icons/queue-select/index.js";import"../../icons/apple/index.js";import"../../icons/mail-colored/index.js";import"../../icons/shield/index.js";import"../../icons/stars-gradient/index.js";import"../../icons/fire/index.js";import"../../icons/brain/index.js";import"../../icons/mj-purple/index.js";import"../../icons/claude-black/index.js";import"../../icons/vk-filled/index.js";import"../../icons/tg/index.js";import"../../icons/gift/index.js";import"../../icons/exchange/index.js";import"../../icons/time/index.js";import"../../icons/folder/index.js";import"../../icons/history/index.js";import"../../icons/money-plus/index.js";import"../../icons/money-stack/index.js";import"../../icons/sort-numeric-bottom/index.js";import"../../icons/sort-numeric-top/index.js";import"../../icons/bulb/index.js";import"../../icons/prompt-queue/index.js";import"../../icons/image/index.js";import"../../icons/text/index.js";import"../../icons/code/index.js";import"../../icons/blue-grok/index.js";import"../../icons/double-image/index.js";const v=v=>{var{label:$,files:q,placeholder:z,error:M,fullWidth:C=!1,disabled:T=!1,multiple:W=!0,accept:A,onChange:E,id:L,open:D=!0,icon:O=o(r,{})}=v,_=i(v,["label","files","placeholder","error","fullWidth","disabled","multiple","accept","onChange","id","open","icon"]);const B=n(i=>{null==E||E(i)},[E]),[F,G]=Array.isArray(q)?[q,B]:e([]),H=n(i=>{var o,s;G(W?[...new Map([...F,...null!==(o=i.currentTarget.files)&&void 0!==o?o:[]].map(i=>[i.name,i])).values()]:[...null!==(s=i.currentTarget.files)&&void 0!==s?s:[]].slice(0,1))},[F,G,W]),I=n((i,o)=>{o.preventDefault(),G(F.filter(({name:o})=>o!==i.name))},[F,G]);return o(b,{children:({handleTooltipMouseEnter:i,handleTooltipMouseLeave:n})=>s(t,Object.assign({onMouseEnter:i,onMouseLeave:n,$error:!!M,$disabled:T,$fullWidth:C,$open:D},_,{children:["string"==typeof $&&D&&o(c,{children:$}),"string"!=typeof $&&$,s(d,{$error:!!M,$open:D,$disabled:T,children:[O,o(p,{id:L,disabled:T,multiple:W,accept:A,value:"",onChange:H}),z&&0===F.length&&D&&o(m,{children:z}),F.length>0&&D&&o(x,{children:F.map(i=>{let n;return n=i.name.match(/.txt$/i)?o(y,{}):i.name.match(/.docx$/i)?o(w,{}):i.name.match(/.xlsx$/i)?o(f,{}):i.name.match(/.pdf$/i)?o(h,{}):o(k,{}),s(j,{children:[o(u,{size:12,children:n}),s(g,{children:[i.name.length>18&&"...",i.name.slice(-18)]}),o(a,{disabled:T,onClick:I.bind(null,i)})]},i.name)})})]}),M&&o(l,{children:M})]}))})};export{v as FileField,d as FileFieldBlock,l as FileFieldErrorText,j as FileFieldFile,a as FileFieldFileDeleteButton,x as FileFieldFiles,r as FileFieldIcon,p as FileFieldInput,c as FileFieldLabel,m as FileFieldPlaceholder,t as FileFieldStyled};
|
|
1
|
+
import{__rest as i}from"tslib";import{jsx as o,jsxs as s}from"react/jsx-runtime";import{useCallback as n,useState as e}from"react";import{FileFieldIcon as r,FileFieldStyled as t,FileFieldLabel as c,FileFieldBlock as d,FileFieldInput as p,FileFieldPlaceholder as m,FileFieldFiles as x,FileFieldFile as j,FileFieldFileDeleteButton as a,FileFieldErrorText as l}from"./styled.js";import{BadgeText as g}from"../badge/styled.js";import{IconProvider as u}from"../icon/context.js";import"../icon/styled.js";import"@react-spring/web";import"react-markdown";import"react-dom";import"../portal/styled.js";import"../tooltip/styled.js";import"../tooltip/arrow/styled.js";import"../../theme/index.js";import{TooltipConsumer as b}from"../tooltip/context.js";import"../../icons/error/index.js";import"../badge/progress/styled.js";import"../../icons/arrow-down/index.js";import"../../icons/arrow-narrow-left/index.js";import"../../icons/arrow-narrow-right/index.js";import"../../icons/arrow-up/index.js";import"../../icons/bitcoin/index.js";import"../../icons/bot-circle/index.js";import"../../icons/bothub-agg/index.js";import"../../icons/business-colored/index.js";import"../../icons/check-circle/index.js";import"../../icons/close/index.js";import"../../icons/email-circle/index.js";import"../../icons/language/index.js";import"../../icons/lock-circle/index.js";import"../../icons/menu/index.js";import"../../icons/medium-circle/index.js";import"../../icons/tg-circle/index.js";import"../../icons/tg-colored/index.js";import"../../icons/youcassa/index.js";import"../../icons/dashboard/index.js";import"../../icons/user-profile/index.js";import"../../icons/logout/index.js";import"../../icons/habr-2/index.js";import"../../icons/arrow-2-down/index.js";import"../../icons/links/index.js";import"../../icons/free/index.js";import"../../icons/hotness/index.js";import"../../icons/checked/index.js";import"../../icons/ai/index.js";import"../../icons/bookmarks/index.js";import"../../icons/bookmarks-big/index.js";import"../../icons/chat/index.js";import"../../icons/chats/index.js";import"../../icons/coder/index.js";import"../../icons/copy/index.js";import"../../icons/edit/index.js";import"../../icons/presets-big/index.js";import"../../icons/referal/index.js";import"../../icons/restore/index.js";import"../../icons/tariff/index.js";import"../../icons/trash/index.js";import"../../icons/update/index.js";import"../../icons/menu-dot/index.js";import"../../icons/plus-2/index.js";import"../../icons/plus-1/index.js";import"../../icons/send/index.js";import"../../icons/settings/index.js";import"../../icons/habr/index.js";import"../../icons/check-small/index.js";import"../../icons/stop/index.js";import"../../icons/thumb-up/index.js";import"../../icons/thumb-down/index.js";import"../../icons/star/index.js";import"../../icons/info-big/index.js";import"../../icons/warning-big/index.js";import"../../icons/error-big/index.js";import"../../icons/success-big/index.js";import"../../icons/mj/index.js";import"../../icons/card/index.js";import"../../icons/arrow-narrow-up/index.js";import"../../icons/arrow-narrow-down/index.js";import"../../icons/filters/index.js";import"../../icons/info/index.js";import"../../icons/search-circle/index.js";import"../../icons/save/index.js";import"../../icons/light/index.js";import"../../icons/dark/index.js";import"../../icons/email-colored/index.js";import"../../icons/action-chat/index.js";import"../../icons/attach/index.js";import"../../icons/avatar-add/index.js";import"../../icons/brush/index.js";import"../../icons/calendar/index.js";import"../../icons/claude/index.js";import"../../icons/cookie/index.js";import"../../icons/dalle/index.js";import"../../icons/download-img/index.js";import"../../icons/expand/index.js";import"../../icons/eye/index.js";import"../../icons/face/index.js";import"../../icons/gear/index.js";import"../../icons/gear-min/index.js";import"../../icons/generation/index.js";import"../../icons/gpt-3_5/index.js";import"../../icons/gpt-4/index.js";import"../../icons/imagine/index.js";import"../../icons/imagine-2/index.js";import"../../icons/loader/index.js";import"../../icons/loader-circular/index.js";import"../../icons/loader-circular-gradient/index.js";import"../../icons/loader-circular-gradient-2/index.js";import"../../icons/minus/index.js";import"../../icons/mj-white/index.js";import"../../icons/prompt/index.js";import"../../icons/rabbit/index.js";import"../../icons/ratio-1x1/index.js";import"../../icons/ratio-2x3/index.js";import"../../icons/ratio-3x2/index.js";import"../../icons/ratio-4x5/index.js";import"../../icons/ratio-4x7/index.js";import"../../icons/ratio-5x4/index.js";import"../../icons/ratio-7x4/index.js";import"../../icons/ratio-16x9/index.js";import"../../icons/ratio-9x16/index.js";import"../../icons/ratio-21x9/index.js";import"../../icons/ratio-9x21/index.js";import"../../icons/refferal-min/index.js";import"../../icons/search-data/index.js";import"../../icons/square/index.js";import"../../icons/turtle/index.js";import"../../icons/upscale/index.js";import"../../icons/withdraw/index.js";import"../../icons/search-plus/index.js";import"../../icons/lightning/index.js";import"../../icons/blog-circle/index.js";import"../../icons/stripe/index.js";import"../../icons/corporate/index.js";import"../../icons/public/index.js";import"../../icons/private/index.js";import"../../icons/mistral/index.js";import"../../icons/gemini/index.js";import"../../icons/search-simple/index.js";import"../../icons/sad-robot/index.js";import"../../icons/model/index.js";import"../../icons/phone-colored/index.js";import"../../icons/questions/index.js";import"../../icons/pdf-big/index.js";import"../../icons/xls-big/index.js";import"../../icons/word-big/index.js";import"../../icons/txt-big/index.js";import{PdfIcon as h}from"../../icons/pdf/index.js";import{XlsIcon as f}from"../../icons/xls/index.js";import{WordIcon as w}from"../../icons/word/index.js";import{TxtIcon as y}from"../../icons/txt/index.js";import"../../icons/bothub-logo-gradient/index.js";import"../../icons/telegram-logo-gradient/index.js";import"../../icons/decline-circle/index.js";import"../../icons/simple-gear-bg/index.js";import"../../icons/advanced-filter/index.js";import"../../icons/big-corporate/index.js";import"../../icons/big-mj/index.js";import"../../icons/big-models/index.js";import"../../icons/big-stats/index.js";import"../../icons/big-success/index.js";import"../../icons/big-users/index.js";import"../../icons/optional-presets/index.js";import"../../icons/wallet-withdraw/index.js";import"../../icons/big-presets/index.js";import"../../icons/big-favorite/index.js";import"../../icons/big-referal/index.js";import{AttachFileIcon as k}from"../../icons/attach-file/index.js";import"../../icons/attach-file-big/index.js";import"../../icons/voice/index.js";import"../../icons/play-button/index.js";import"../../icons/pause-button/index.js";import"../../icons/text-read/index.js";import"../../icons/text-hide/index.js";import"../../icons/best-chat-bots/index.js";import"../../icons/upload/index.js";import"../../icons/enter/index.js";import"../../icons/discord/index.js";import"../../icons/discord-circle/index.js";import"../../icons/black-forest-labs/index.js";import"../../icons/flux/index.js";import"../../icons/stable-diffusion/index.js";import"../../icons/stability-ai/index.js";import"../../icons/article-generator/index.js";import"../../icons/success/index.js";import"../../icons/google/index.js";import"../../icons/yandex/index.js";import"../../icons/vk/index.js";import"../../icons/resend/index.js";import"../../icons/big-article/index.js";import"../../icons/add-chat/index.js";import"../../icons/add-group/index.js";import"../../icons/drag-dot/index.js";import"../../icons/add-folder/index.js";import"../../icons/temp-chat/index.js";import"../../icons/delete-chat/index.js";import"../../icons/sidebar-chat/index.js";import"../../icons/organization/index.js";import"../../icons/simple-gear/index.js";import"../../icons/text-bold/index.js";import"../../icons/text-italic/index.js";import"../../icons/text-underline/index.js";import"../../icons/text-strikethrough/index.js";import"../../icons/refresh/index.js";import"../../icons/copy-variants/index.js";import"../../icons/sort-ascending/index.js";import"../../icons/sort-descending/index.js";import"../../icons/quote/index.js";import"../../icons/url-circle/index.js";import"../../icons/show-ui/index.js";import"../../icons/hide-ui/index.js";import"../../icons/sort-user/index.js";import"../../icons/happy-robot/index.js";import"../../icons/happy-robot-gradient/index.js";import"../../icons/min-window/index.js";import"../../icons/max-window/index.js";import"../../icons/manage-chat/index.js";import"../../icons/analyze-urls/index.js";import"../../icons/web-search/index.js";import"../../icons/include-context/index.js";import"../../icons/queue/index.js";import"../../icons/sort-alphabet-ascending/index.js";import"../../icons/sort-alphabet-descending/index.js";import"../../icons/sort-date-ascending/index.js";import"../../icons/sort-date-descending/index.js";import"../../icons/cot-r1/index.js";import"../../icons/news/index.js";import"../../icons/volume/index.js";import"../../icons/flag-ru/index.js";import"../../icons/flag-kz/index.js";import"../../icons/print/index.js";import"../../icons/pc-icon-1/index.js";import"../../icons/pc-icon-2/index.js";import"../../icons/pc-icon-3/index.js";import"../../icons/star-unfilled/index.js";import"../../icons/image-generation/index.js";import"../../icons/speech-synthesys/index.js";import"../../icons/transcription/index.js";import"../../icons/text-rewrite/index.js";import"../../icons/code-generation/index.js";import"../../icons/essay-generation/index.js";import"../../icons/spelling/index.js";import"../../icons/text-generation/index.js";import"../../icons/traffic-analisys/index.js";import"../../icons/fav-profile/index.js";import"../../icons/exclamation/index.js";import"../../icons/article/index.js";import"../../icons/setchel/index.js";import"../../icons/assembly/index.js";import"../../icons/data-visualisation/index.js";import"../../icons/document-analisys/index.js";import"../../icons/problem-solvment/index.js";import"../../icons/setting-analisys/index.js";import"../../icons/translation/index.js";import"../../icons/stars/index.js";import"../../icons/academy/index.js";import"../../icons/articles/index.js";import"../../icons/blog-post/index.js";import"../../icons/book/index.js";import"../../icons/bow-tie/index.js";import"../../icons/case-study/index.js";import"../../icons/comments/index.js";import"../../icons/guide/index.js";import"../../icons/marketing/index.js";import"../../icons/post/index.js";import"../../icons/report/index.js";import"../../icons/review/index.js";import"../../icons/scientific-article/index.js";import"../../icons/selling-text/index.js";import"../../icons/textbook/index.js";import"../../icons/wind/index.js";import"../../icons/grok/index.js";import"../../icons/deepseek/index.js";import"../../icons/grid-horizontal/index.js";import"../../icons/grid-vertical/index.js";import"../../icons/star-gradient/index.js";import"../../icons/qwen/index.js";import"../../icons/sidebar-toggle-left/index.js";import"../../icons/sidebar-toggle-right/index.js";import"../../icons/system/index.js";import"../../icons/selector/index.js";import"../../icons/video-camera/index.js";import"../../icons/music-note/index.js";import"../../icons/add-profile/index.js";import"../../icons/token-counter/index.js";import"../../icons/customer-support/index.js";import"../../icons/sort-alphabet-top-bottom/index.js";import"../../icons/sort-alphabet-bottom-top/index.js";import"../../icons/pause/index.js";import"../../icons/play/index.js";import"../../icons/restore-2/index.js";import"../../icons/video-generation/index.js";import"../../icons/veo-model/index.js";import"../../icons/runway/index.js";import"../../icons/queue-select/index.js";import"../../icons/apple/index.js";import"../../icons/mail-colored/index.js";import"../../icons/shield/index.js";import"../../icons/stars-gradient/index.js";import"../../icons/fire/index.js";import"../../icons/brain/index.js";import"../../icons/mj-purple/index.js";import"../../icons/claude-black/index.js";import"../../icons/vk-filled/index.js";import"../../icons/tg/index.js";import"../../icons/gift/index.js";import"../../icons/exchange/index.js";import"../../icons/time/index.js";import"../../icons/folder/index.js";import"../../icons/history/index.js";import"../../icons/money-plus/index.js";import"../../icons/money-stack/index.js";import"../../icons/sort-numeric-bottom/index.js";import"../../icons/sort-numeric-top/index.js";import"../../icons/bulb/index.js";import"../../icons/prompt-queue/index.js";import"../../icons/image/index.js";import"../../icons/text/index.js";import"../../icons/code/index.js";import"../../icons/blue-grok/index.js";import"../../icons/double-image/index.js";const v=v=>{var{label:$,files:q,placeholder:z,error:M,fullWidth:C=!1,disabled:T=!1,multiple:W=!0,accept:A,fullNameFiles:E,onChange:F,id:L,open:N=!0,icon:D=o(r,{})}=v,O=i(v,["label","files","placeholder","error","fullWidth","disabled","multiple","accept","fullNameFiles","onChange","id","open","icon"]);const _=n(i=>{null==F||F(i)},[F]),[B,G]=Array.isArray(q)?[q,_]:e([]),H=n(i=>{var o,s;G(W?[...new Map([...B,...null!==(o=i.currentTarget.files)&&void 0!==o?o:[]].map(i=>[i.name,i])).values()]:[...null!==(s=i.currentTarget.files)&&void 0!==s?s:[]].slice(0,1))},[B,G,W]),I=n((i,o)=>{o.preventDefault(),G(B.filter(({name:o})=>o!==i.name))},[B,G]);return o(b,{children:({handleTooltipMouseEnter:i,handleTooltipMouseLeave:n})=>s(t,Object.assign({onMouseEnter:i,onMouseLeave:n,$error:!!M,$disabled:T,$fullWidth:C,$open:N},O,{children:["string"==typeof $&&N&&o(c,{children:$}),"string"!=typeof $&&$,s(d,{$error:!!M,$open:N,$disabled:T,children:[D,o(p,{id:L,disabled:T,multiple:W,accept:A,value:"",onChange:H}),z&&0===B.length&&N&&o(m,{children:z}),B.length>0&&N&&o(x,{children:B.map(i=>{let n;return n=i.name.match(/.txt$/i)?o(y,{}):i.name.match(/.docx$/i)?o(w,{}):i.name.match(/.xlsx$/i)?o(f,{}):i.name.match(/.pdf$/i)?o(h,{}):o(k,{}),s(j,{children:[o(u,{size:12,children:n}),s(g,{children:[!E&&i.name.length>18&&"...",E?i.name:i.name.slice(-18)]}),o(a,{disabled:T,onClick:I.bind(null,i)})]},i.name)})})]}),M&&o(l,{children:M})]}))})};export{v as FileField,d as FileFieldBlock,l as FileFieldErrorText,j as FileFieldFile,a as FileFieldFileDeleteButton,x as FileFieldFiles,r as FileFieldIcon,p as FileFieldInput,c as FileFieldLabel,m as FileFieldPlaceholder,t as FileFieldStyled};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { SelectFieldDataItemComplex } from '../select-field';
|
|
2
|
-
export type LangSwitcherProps = {
|
|
2
|
+
export type LangSwitcherProps<DataItem extends SelectFieldDataItemComplex<any>> = {
|
|
3
3
|
region: {
|
|
4
4
|
value: string;
|
|
5
5
|
label: string;
|
|
@@ -8,11 +8,11 @@ export type LangSwitcherProps = {
|
|
|
8
8
|
value: string;
|
|
9
9
|
label: string;
|
|
10
10
|
};
|
|
11
|
-
dataRegions:
|
|
12
|
-
dataLanguages:
|
|
11
|
+
dataRegions: DataItem[];
|
|
12
|
+
dataLanguages: DataItem[];
|
|
13
13
|
onChange: ({ lang, region }: {
|
|
14
14
|
lang: string;
|
|
15
15
|
region: string;
|
|
16
16
|
}) => void;
|
|
17
17
|
};
|
|
18
|
-
export declare const LangSwitcher:
|
|
18
|
+
export declare const LangSwitcher: <DataItem extends SelectFieldDataItemComplex<any>>({ lang, region, dataRegions, dataLanguages, onChange, }: LangSwitcherProps<DataItem>) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1995,7 +1995,7 @@ export declare const LangSwitcherLabel: import("styled-components").IStyledCompo
|
|
|
1995
1995
|
onTransitionStartCapture?: import("react").TransitionEventHandler<HTMLSpanElement> | undefined;
|
|
1996
1996
|
ref?: import("react").Ref<HTMLSpanElement> | undefined;
|
|
1997
1997
|
}>;
|
|
1998
|
-
export declare const LangSwitcherInput: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").Substitute<import("@/ui/components/select-field").SelectFieldProps
|
|
1998
|
+
export declare const LangSwitcherInput: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").Substitute<import("@/ui/components/select-field").SelectFieldProps<import("@/ui/components/select-field").SelectFieldDataItem<any>>, import("styled-components/dist/types").BaseObject>>;
|
|
1999
1999
|
export declare const LangSwitcherButton: import("styled-components").IStyledComponent<"web", {
|
|
2000
2000
|
children?: import("react").ReactNode;
|
|
2001
2001
|
value?: string | number | readonly string[] | undefined;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { SelectModalGeneralProps } from './select-modal';
|
|
2
|
-
import { SelectFieldInputChangeEventHandler, SelectFieldInputType } from './types';
|
|
2
|
+
import { SelectFieldDataItem, SelectFieldInputChangeEventHandler, SelectFieldInputType } from './types';
|
|
3
3
|
import { UseSelectFieldProps } from './useSelectField';
|
|
4
|
-
export type SelectFieldProps = {
|
|
4
|
+
export type SelectFieldProps<DataItem extends SelectFieldDataItem<any>> = {
|
|
5
5
|
className?: string;
|
|
6
6
|
label?: string | boolean | React.ReactNode;
|
|
7
7
|
placeholder?: string;
|
|
@@ -17,8 +17,8 @@ export type SelectFieldProps = {
|
|
|
17
17
|
dataTest?: string;
|
|
18
18
|
onInputChange?: SelectFieldInputChangeEventHandler;
|
|
19
19
|
onPointerLeave?: React.PointerEventHandler<HTMLDivElement>;
|
|
20
|
-
} & SelectModalGeneralProps & UseSelectFieldProps & React.PropsWithChildren;
|
|
21
|
-
export declare const SelectField: ({ className, label, placeholder, data, fullWidth, contentWidth, error, skeleton, blur, size, disableSelect, disableScrollbar, empty, after, loading, searchSampleIcon, enableInput, inputType, inputValue: initialInputValue, clearable, disablePortal, tabs, search, searchPlaceholder, resetStyleState, children, modalWidth, dataTest, selectedColor, compactWidth, modalStyles, openedModel, onSearch, onOptionClick, onGroupCheckboxClick, onInputChange, onPointerLeave, ...useSelectFieldProps }: SelectFieldProps) => import("react/jsx-runtime").JSX.Element;
|
|
20
|
+
} & SelectModalGeneralProps<DataItem> & UseSelectFieldProps<DataItem> & React.PropsWithChildren;
|
|
21
|
+
export declare const SelectField: <DataItem extends SelectFieldDataItem<any>>({ className, label, placeholder, data, fullWidth, contentWidth, error, skeleton, blur, size, disableSelect, disableScrollbar, empty, after, loading, searchSampleIcon, enableInput, inputType, inputValue: initialInputValue, clearable, disablePortal, tabs, search, searchPlaceholder, resetStyleState, children, modalWidth, dataTest, selectedColor, compactWidth, modalStyles, openedModel, onSearch, onOptionClick, onGroupCheckboxClick, onInputChange, onPointerLeave, ...useSelectFieldProps }: SelectFieldProps<DataItem>) => import("react/jsx-runtime").JSX.Element;
|
|
22
22
|
export * from './types';
|
|
23
23
|
export * from './styled';
|
|
24
24
|
export * from './context';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { SelectFieldDataItem, ValueType } from '../../types';
|
|
3
|
-
export interface SelectFieldInputValueProps {
|
|
4
|
-
value: ValueType
|
|
5
|
-
handleValueDelete: (item:
|
|
3
|
+
export interface SelectFieldInputValueProps<DataItem extends SelectFieldDataItem<any>> {
|
|
4
|
+
value: ValueType<DataItem>;
|
|
5
|
+
handleValueDelete: (item: DataItem, event: React.MouseEvent) => unknown;
|
|
6
6
|
}
|
|
7
|
-
export declare const SelectFieldInputValue:
|
|
7
|
+
export declare const SelectFieldInputValue: <DataItem extends SelectFieldDataItem<any>>({ value, handleValueDelete, }: SelectFieldInputValueProps<DataItem>) => import("react/jsx-runtime").JSX.Element | null;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare const filterData: (data:
|
|
1
|
+
import { SelectFieldDataItem } from '../types';
|
|
2
|
+
export declare const filterData: <DataItem extends SelectFieldDataItem<any>>(data: DataItem[], searchValue: string) => DataItem[];
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { ScrollableTabsProps } from '@/ui/components/scrollable-tabs';
|
|
3
3
|
import { UseSelectFieldReturnType } from '..';
|
|
4
|
-
import { ResetStyleStateType,
|
|
5
|
-
export type SelectModalGeneralProps = {
|
|
6
|
-
data?:
|
|
4
|
+
import { ResetStyleStateType, SelectFieldDataItem, SelectFieldGroupCheckboxClickEventHandler, SelectFieldInputChangeEventHandler, SelectFieldOptionClickEventHandler, SelectFieldSize } from '../types';
|
|
5
|
+
export type SelectModalGeneralProps<DataItem extends SelectFieldDataItem<any>> = {
|
|
6
|
+
data?: DataItem[];
|
|
7
7
|
contentWidth?: number;
|
|
8
8
|
contentHeight?: number | string;
|
|
9
9
|
size?: SelectFieldSize;
|
|
10
10
|
disableSelect?: boolean;
|
|
11
11
|
disableScrollbar?: boolean;
|
|
12
12
|
empty?: React.ReactNode;
|
|
13
|
-
after?:
|
|
13
|
+
after?: DataItem[];
|
|
14
14
|
tabs?: Omit<ScrollableTabsProps, 'variant' | 'component'>;
|
|
15
15
|
search?: boolean;
|
|
16
16
|
searchPlaceholder?: string;
|
|
@@ -23,10 +23,10 @@ export type SelectModalGeneralProps = {
|
|
|
23
23
|
selectedColor?: string;
|
|
24
24
|
compactWidth?: boolean;
|
|
25
25
|
modalStyles?: React.CSSProperties;
|
|
26
|
-
onOptionClick?: SelectFieldOptionClickEventHandler
|
|
27
|
-
onGroupCheckboxClick?: SelectFieldGroupCheckboxClickEventHandler
|
|
26
|
+
onOptionClick?: SelectFieldOptionClickEventHandler<DataItem>;
|
|
27
|
+
onGroupCheckboxClick?: SelectFieldGroupCheckboxClickEventHandler<DataItem>;
|
|
28
28
|
};
|
|
29
|
-
export type SelectModalProps = SelectModalGeneralProps & Omit<UseSelectFieldReturnType
|
|
30
|
-
export declare const SelectModal: ({ isOpen, data: initialData, contentWidth, contentHeight, size, disableSelect, disableScrollbar, empty, after, tabs, search, searchPlaceholder, resetStyleState, placement, selectModalRef, disablePortal, blur, x, y, width, isKeyboardOpen, value, multiple, modalWidth, openedModel, selectedColor, compactWidth, modalStyles, onSearch, onOptionClick, onGroupCheckboxClick, handleClose, setValue, }: SelectModalProps) => import("react/jsx-runtime").JSX.Element;
|
|
29
|
+
export type SelectModalProps<DataItem extends SelectFieldDataItem<any>> = SelectModalGeneralProps<DataItem> & Omit<UseSelectFieldReturnType<DataItem>, 'disabled' | 'handleInputClick' | 'maxHeight' | 'triggerRef'>;
|
|
30
|
+
export declare const SelectModal: <DataItem extends SelectFieldDataItem<any>>({ isOpen, data: initialData, contentWidth, contentHeight, size, disableSelect, disableScrollbar, empty, after, tabs, search, searchPlaceholder, resetStyleState, placement, selectModalRef, disablePortal, blur, x, y, width, isKeyboardOpen, value, multiple, modalWidth, openedModel, selectedColor, compactWidth, modalStyles, onSearch, onOptionClick, onGroupCheckboxClick, handleClose, setValue, }: SelectModalProps<DataItem>) => import("react/jsx-runtime").JSX.Element;
|
|
31
31
|
export * from './styled';
|
|
32
32
|
export * from './option';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{__rest as i}from"tslib";import{jsx as o,jsxs as s}from"react/jsx-runtime";import n,{useState as e,useRef as t,useCallback as r,useEffect as c,useMemo as d}from"react";import{SelectModalStyled as p,SelectModalPositionWrapper as m,SelectModalContent as x,SelectModalGroups as j,SelectModalTabsContainer as a,SelectModalTabs as l,SelectModalSearch as g,SelectModalAfter as b}from"./styled.js";import"../../../icons/arrow-down/index.js";import"../../../icons/arrow-narrow-left/index.js";import"../../../icons/arrow-narrow-right/index.js";import"../../../icons/arrow-up/index.js";import"../../../icons/bitcoin/index.js";import"../../../icons/bot-circle/index.js";import"../../../icons/bothub-agg/index.js";import"../../../icons/business-colored/index.js";import"../../../icons/check-circle/index.js";import"../../../icons/close/index.js";import"../../../icons/email-circle/index.js";import"../../../icons/language/index.js";import"../../../icons/lock-circle/index.js";import"../../../icons/menu/index.js";import"../../../icons/medium-circle/index.js";import"../../../icons/tg-circle/index.js";import"../../../icons/tg-colored/index.js";import"../../../icons/youcassa/index.js";import"../../../icons/dashboard/index.js";import"../../../icons/user-profile/index.js";import"../../../icons/logout/index.js";import"../../../icons/habr-2/index.js";import"../../../icons/arrow-2-down/index.js";import"../../../icons/links/index.js";import"../../../icons/free/index.js";import"../../../icons/hotness/index.js";import"../../../icons/checked/index.js";import"../../../icons/ai/index.js";import"../../../icons/bookmarks/index.js";import"../../../icons/bookmarks-big/index.js";import"../../../icons/chat/index.js";import"../../../icons/chats/index.js";import"../../../icons/coder/index.js";import"../../../icons/copy/index.js";import"../../../icons/edit/index.js";import"../../../icons/presets-big/index.js";import"../../../icons/referal/index.js";import"../../../icons/restore/index.js";import"../../../icons/tariff/index.js";import"../../../icons/trash/index.js";import"../../../icons/update/index.js";import"../../../icons/menu-dot/index.js";import"../../../icons/plus-2/index.js";import"../../../icons/plus-1/index.js";import"../../../icons/send/index.js";import"../../../icons/settings/index.js";import"../../../icons/habr/index.js";import"../../../icons/check-small/index.js";import"../../../icons/stop/index.js";import"../../../icons/thumb-up/index.js";import"../../../icons/thumb-down/index.js";import"../../../icons/star/index.js";import"../../../icons/info-big/index.js";import"../../../icons/warning-big/index.js";import"../../../icons/error-big/index.js";import"../../../icons/success-big/index.js";import"../../../icons/mj/index.js";import"../../../icons/card/index.js";import"../../../icons/arrow-narrow-up/index.js";import"../../../icons/arrow-narrow-down/index.js";import"../../../icons/filters/index.js";import"../../../icons/info/index.js";import"../../../icons/search-circle/index.js";import"../../../icons/save/index.js";import"../../../icons/light/index.js";import"../../../icons/dark/index.js";import"../../../icons/email-colored/index.js";import"../../../icons/action-chat/index.js";import"../../../icons/attach/index.js";import"../../../icons/avatar-add/index.js";import"../../../icons/brush/index.js";import"../../../icons/calendar/index.js";import"../../../icons/claude/index.js";import"../../../icons/cookie/index.js";import"../../../icons/dalle/index.js";import"../../../icons/download-img/index.js";import"../../../icons/error/index.js";import"../../../icons/expand/index.js";import"../../../icons/eye/index.js";import"../../../icons/face/index.js";import"../../../icons/gear/index.js";import"../../../icons/gear-min/index.js";import"../../../icons/generation/index.js";import"../../../icons/gpt-3_5/index.js";import"../../../icons/gpt-4/index.js";import"../../../icons/imagine/index.js";import"../../../icons/imagine-2/index.js";import"../../../icons/loader/index.js";import"../../../icons/loader-circular/index.js";import"../../../icons/loader-circular-gradient/index.js";import"../../../icons/loader-circular-gradient-2/index.js";import"../../../icons/minus/index.js";import"../../../icons/mj-white/index.js";import"../../../icons/prompt/index.js";import"../../../icons/rabbit/index.js";import"../../../icons/ratio-1x1/index.js";import"../../../icons/ratio-2x3/index.js";import"../../../icons/ratio-3x2/index.js";import"../../../icons/ratio-4x5/index.js";import"../../../icons/ratio-4x7/index.js";import"../../../icons/ratio-5x4/index.js";import"../../../icons/ratio-7x4/index.js";import"../../../icons/ratio-16x9/index.js";import"../../../icons/ratio-9x16/index.js";import"../../../icons/ratio-21x9/index.js";import"../../../icons/ratio-9x21/index.js";import"../../../icons/refferal-min/index.js";import"../../../icons/search-data/index.js";import"../../../icons/square/index.js";import"../../../icons/turtle/index.js";import"../../../icons/upscale/index.js";import"../../../icons/withdraw/index.js";import"../../../icons/search-plus/index.js";import"../../../icons/lightning/index.js";import"../../../icons/blog-circle/index.js";import"../../../icons/stripe/index.js";import"../../../icons/corporate/index.js";import"../../../icons/public/index.js";import"../../../icons/private/index.js";import"../../../icons/mistral/index.js";import"../../../icons/gemini/index.js";import{SearchSimpleIcon as u}from"../../../icons/search-simple/index.js";import"../../../icons/sad-robot/index.js";import"../../../icons/model/index.js";import"../../../icons/phone-colored/index.js";import"../../../icons/questions/index.js";import"../../../icons/pdf-big/index.js";import"../../../icons/xls-big/index.js";import"../../../icons/word-big/index.js";import"../../../icons/txt-big/index.js";import"../../../icons/pdf/index.js";import"../../../icons/xls/index.js";import"../../../icons/word/index.js";import"../../../icons/txt/index.js";import"../../../icons/bothub-logo-gradient/index.js";import"../../../icons/telegram-logo-gradient/index.js";import"../../../icons/decline-circle/index.js";import"../../../icons/simple-gear-bg/index.js";import"../../../icons/advanced-filter/index.js";import"../../../icons/big-corporate/index.js";import"../../../icons/big-mj/index.js";import"../../../icons/big-models/index.js";import"../../../icons/big-stats/index.js";import"../../../icons/big-success/index.js";import"../../../icons/big-users/index.js";import"../../../icons/optional-presets/index.js";import"../../../icons/wallet-withdraw/index.js";import"../../../icons/big-presets/index.js";import"../../../icons/big-favorite/index.js";import"../../../icons/big-referal/index.js";import"../../../icons/attach-file/index.js";import"../../../icons/attach-file-big/index.js";import"../../../icons/voice/index.js";import"../../../icons/play-button/index.js";import"../../../icons/pause-button/index.js";import"../../../icons/text-read/index.js";import"../../../icons/text-hide/index.js";import"../../../icons/best-chat-bots/index.js";import"../../../icons/upload/index.js";import"../../../icons/enter/index.js";import"../../../icons/discord/index.js";import"../../../icons/discord-circle/index.js";import"../../../icons/black-forest-labs/index.js";import"../../../icons/flux/index.js";import"../../../icons/stable-diffusion/index.js";import"../../../icons/stability-ai/index.js";import"../../../icons/article-generator/index.js";import"../../../icons/success/index.js";import"../../../icons/google/index.js";import"../../../icons/yandex/index.js";import"../../../icons/vk/index.js";import"../../../icons/resend/index.js";import"../../../icons/big-article/index.js";import"../../../icons/add-chat/index.js";import"../../../icons/add-group/index.js";import"../../../icons/drag-dot/index.js";import"../../../icons/add-folder/index.js";import"../../../icons/temp-chat/index.js";import"../../../icons/delete-chat/index.js";import"../../../icons/sidebar-chat/index.js";import"../../../icons/organization/index.js";import"../../../icons/simple-gear/index.js";import"../../../icons/text-bold/index.js";import"../../../icons/text-italic/index.js";import"../../../icons/text-underline/index.js";import"../../../icons/text-strikethrough/index.js";import"../../../icons/refresh/index.js";import"../../../icons/copy-variants/index.js";import"../../../icons/sort-ascending/index.js";import"../../../icons/sort-descending/index.js";import"../../../icons/quote/index.js";import"../../../icons/url-circle/index.js";import"../../../icons/show-ui/index.js";import"../../../icons/hide-ui/index.js";import"../../../icons/sort-user/index.js";import"../../../icons/happy-robot/index.js";import"../../../icons/happy-robot-gradient/index.js";import"../../../icons/min-window/index.js";import"../../../icons/max-window/index.js";import"../../../icons/manage-chat/index.js";import"../../../icons/analyze-urls/index.js";import"../../../icons/web-search/index.js";import"../../../icons/include-context/index.js";import"../../../icons/queue/index.js";import"../../../icons/sort-alphabet-ascending/index.js";import"../../../icons/sort-alphabet-descending/index.js";import"../../../icons/sort-date-ascending/index.js";import"../../../icons/sort-date-descending/index.js";import"../../../icons/cot-r1/index.js";import"../../../icons/news/index.js";import"../../../icons/volume/index.js";import"../../../icons/flag-ru/index.js";import"../../../icons/flag-kz/index.js";import"../../../icons/print/index.js";import"../../../icons/pc-icon-1/index.js";import"../../../icons/pc-icon-2/index.js";import"../../../icons/pc-icon-3/index.js";import"../../../icons/star-unfilled/index.js";import"../../../icons/image-generation/index.js";import"../../../icons/speech-synthesys/index.js";import"../../../icons/transcription/index.js";import"../../../icons/text-rewrite/index.js";import"../../../icons/code-generation/index.js";import"../../../icons/essay-generation/index.js";import"../../../icons/spelling/index.js";import"../../../icons/text-generation/index.js";import"../../../icons/traffic-analisys/index.js";import"../../../icons/fav-profile/index.js";import"../../../icons/exclamation/index.js";import"../../../icons/article/index.js";import"../../../icons/setchel/index.js";import"../../../icons/assembly/index.js";import"../../../icons/data-visualisation/index.js";import"../../../icons/document-analisys/index.js";import"../../../icons/problem-solvment/index.js";import"../../../icons/setting-analisys/index.js";import"../../../icons/translation/index.js";import"../../../icons/stars/index.js";import"../../../icons/academy/index.js";import"../../../icons/articles/index.js";import"../../../icons/blog-post/index.js";import"../../../icons/book/index.js";import"../../../icons/bow-tie/index.js";import"../../../icons/case-study/index.js";import"../../../icons/comments/index.js";import"../../../icons/guide/index.js";import"../../../icons/marketing/index.js";import"../../../icons/post/index.js";import"../../../icons/report/index.js";import"../../../icons/review/index.js";import"../../../icons/scientific-article/index.js";import"../../../icons/selling-text/index.js";import"../../../icons/textbook/index.js";import"../../../icons/wind/index.js";import"../../../icons/grok/index.js";import"../../../icons/deepseek/index.js";import"../../../icons/grid-horizontal/index.js";import"../../../icons/grid-vertical/index.js";import"../../../icons/star-gradient/index.js";import"../../../icons/qwen/index.js";import"../../../icons/sidebar-toggle-left/index.js";import"../../../icons/sidebar-toggle-right/index.js";import"../../../icons/system/index.js";import"../../../icons/selector/index.js";import"../../../icons/video-camera/index.js";import"../../../icons/music-note/index.js";import"../../../icons/add-profile/index.js";import"../../../icons/token-counter/index.js";import"../../../icons/customer-support/index.js";import"../../../icons/sort-alphabet-top-bottom/index.js";import"../../../icons/sort-alphabet-bottom-top/index.js";import"../../../icons/pause/index.js";import"../../../icons/play/index.js";import"../../../icons/restore-2/index.js";import"../../../icons/video-generation/index.js";import"../../../icons/veo-model/index.js";import"../../../icons/runway/index.js";import"../../../icons/queue-select/index.js";import"../../../icons/apple/index.js";import"../../../icons/mail-colored/index.js";import"../../../icons/shield/index.js";import"../../../icons/stars-gradient/index.js";import"../../../icons/fire/index.js";import"../../../icons/brain/index.js";import"../../../icons/mj-purple/index.js";import"../../../icons/claude-black/index.js";import"../../../icons/vk-filled/index.js";import"../../../icons/tg/index.js";import"../../../icons/gift/index.js";import"../../../icons/exchange/index.js";import"../../../icons/time/index.js";import"../../../icons/folder/index.js";import"../../../icons/history/index.js";import"../../../icons/money-plus/index.js";import"../../../icons/money-stack/index.js";import"../../../icons/sort-numeric-bottom/index.js";import"../../../icons/sort-numeric-top/index.js";import"../../../icons/bulb/index.js";import"../../../icons/prompt-queue/index.js";import"../../../icons/image/index.js";import"../../../icons/text/index.js";import"../../../icons/code/index.js";import"../../../icons/blue-grok/index.js";import"../../../icons/double-image/index.js";import{Portal as h}from"../../portal/index.js";import{SelectFieldGroup as f}from"./select-field-group/index.js";import{SelectFieldOptions as y}from"./option/list/index.js";import"./option/collapse/styled.js";import"../../icon/styled.js";import"@react-spring/web";import"react-markdown";import"../../tooltip/styled.js";import"../../tooltip/arrow/styled.js";import"../../../theme/index.js";import"../../tooltip/context.js";import{filterData as w}from"./filterData.js";const k=({isOpen:k,data:v=[],contentWidth:C,contentHeight:O,size:$="small",disableSelect:S=!1,disableScrollbar:z=!1,empty:q,after:W,tabs:T,search:P,searchPlaceholder:A,resetStyleState:G,placement:H,selectModalRef:M,disablePortal:B,blur:D=!1,x:F,y:I,width:K,isKeyboardOpen:R,value:V,multiple:_,modalWidth:E,openedModel:J,selectedColor:L,compactWidth:N,modalStyles:Q,onSearch:U,onOptionClick:X,onGroupCheckboxClick:Y,handleClose:Z,setValue:ii})=>{const[oi,si]=e([]),[ni,ei]=e(""),ti=t(0),ri=r(i=>{const{value:o}=i.currentTarget;null==U||U(o),ei(o)},[U,ei]),ci=r(i=>{var o;if("object"!=typeof i||!i.disabled){if("object"==typeof i&&i.noSelect)return null===(o=null==i?void 0:i.onClick)||void 0===o||o.call(i,i),void Z();null==X||X(i),S||"object"==typeof i&&("checkbox"===i.type||"checkbox-group"===i.type)||(_&&Array.isArray(V)?ii([...new Set([...V,i])]):ii(i)),("object"!=typeof i||"checkbox"!==i.type&&"checkbox-group"!==i.type)&&Z()}},[V,_,S,ii,X,Z]);c(()=>{si(J?[J]:[]),ti.current=0,ei("")},[G,J]);const di=r(i=>{ti.current=0,si([]),T&&T.onClick&&T.onClick(i)},[T]),pi=r(i=>si(o=>o.includes(i)?o.filter(o=>o!==i):[...o,i]),[]),mi=d(()=>B?n.Fragment:h,[B]),xi=d(()=>v.map(o=>{if(o&&"object"==typeof o&&"collapse"===o.type&&o.id&&!o.disabled){const{onClick:s}=o,n=i(o,["onClick"]),e=()=>{s&&s(o),o.id&&pi(o.id)},t=oi.includes(o.id);return Object.assign(Object.assign({},n),{open:t,onClick:e})}return o}),[v,oi,pi]);return o(mi,{children:o(p,{$isOpen:k,$contentWidth:C,$disablePortal:B,$placement:H,ref:M,style:Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},Q),0!==F&&Object.assign(Object.assign({},"top-right"!==H&&{left:F}),"top-right"===H&&Object.assign(Object.assign({},void 0===C&&{left:`calc(${F}px - ${K})`}),"number"==typeof C&&{left:`calc(${F}px - ${C>K?`calc(var(--bothub-scale, 1) * ${C}px)`:`${K}px`})`}))),0!==I&&{top:I}),void 0===C&&{width:K}),"number"==typeof C&&{width:C>K?`calc(var(--bothub-scale, 1) * ${C}px)`:K}),children:o(m,{$blur:D,$placement:H,$width:E,$compactWidth:N,style:Object.assign(Object.assign({},"number"==typeof O&&O>=0&&{height:`calc(var(--bothub-scale, 1) * ${O}px)`}),"string"==typeof O&&{height:O}),children:o(x,{children:s(j,{$size:$,children:[!!T&&o(a,{children:o(l,Object.assign({},T,{onClick:di}))}),P&&o(g,{startIcon:o(u,{}),placeholder:A,value:ni,onChange:ri,onClick:()=>{R.current=!0},onBlur:()=>setTimeout(()=>{R.current=!1},500)}),xi.length>0?o(f,{scrollTop:ti.current,onScrollTopChange:i=>{ti.current=i},$size:$,$disableScrollbar:z,$followContentHeight:!!O,children:o(y,{value:V,data:U?xi:w(xi,ni),size:$,disableSelect:S,onGroupCheckboxClick:Y,onOptionClick:ci,selectedColor:L})}):q,W&&o(b,{children:o(y,{value:V,data:W,size:$,disableSelect:S,onOptionClick:ci,selectedColor:L})})]})})})})})};export{y as SelectFieldOptions,k as SelectModal,b as SelectModalAfter,x as SelectModalContent,j as SelectModalGroups,m as SelectModalPositionWrapper,g as SelectModalSearch,p as SelectModalStyled,l as SelectModalTabs,a as SelectModalTabsContainer};
|
|
1
|
+
import{jsx as i,jsxs as o}from"react/jsx-runtime";import s,{useState as n,useRef as e,useCallback as t,useEffect as r,useMemo as c}from"react";import{SelectModalStyled as d,SelectModalPositionWrapper as p,SelectModalContent as m,SelectModalGroups as x,SelectModalTabsContainer as j,SelectModalTabs as a,SelectModalSearch as l,SelectModalAfter as g}from"./styled.js";import"../../../icons/arrow-down/index.js";import"../../../icons/arrow-narrow-left/index.js";import"../../../icons/arrow-narrow-right/index.js";import"../../../icons/arrow-up/index.js";import"../../../icons/bitcoin/index.js";import"../../../icons/bot-circle/index.js";import"../../../icons/bothub-agg/index.js";import"../../../icons/business-colored/index.js";import"../../../icons/check-circle/index.js";import"../../../icons/close/index.js";import"../../../icons/email-circle/index.js";import"../../../icons/language/index.js";import"../../../icons/lock-circle/index.js";import"../../../icons/menu/index.js";import"../../../icons/medium-circle/index.js";import"../../../icons/tg-circle/index.js";import"../../../icons/tg-colored/index.js";import"../../../icons/youcassa/index.js";import"../../../icons/dashboard/index.js";import"../../../icons/user-profile/index.js";import"../../../icons/logout/index.js";import"tslib";import"../../../icons/habr-2/index.js";import"../../../icons/arrow-2-down/index.js";import"../../../icons/links/index.js";import"../../../icons/free/index.js";import"../../../icons/hotness/index.js";import"../../../icons/checked/index.js";import"../../../icons/ai/index.js";import"../../../icons/bookmarks/index.js";import"../../../icons/bookmarks-big/index.js";import"../../../icons/chat/index.js";import"../../../icons/chats/index.js";import"../../../icons/coder/index.js";import"../../../icons/copy/index.js";import"../../../icons/edit/index.js";import"../../../icons/presets-big/index.js";import"../../../icons/referal/index.js";import"../../../icons/restore/index.js";import"../../../icons/tariff/index.js";import"../../../icons/trash/index.js";import"../../../icons/update/index.js";import"../../../icons/menu-dot/index.js";import"../../../icons/plus-2/index.js";import"../../../icons/plus-1/index.js";import"../../../icons/send/index.js";import"../../../icons/settings/index.js";import"../../../icons/habr/index.js";import"../../../icons/check-small/index.js";import"../../../icons/stop/index.js";import"../../../icons/thumb-up/index.js";import"../../../icons/thumb-down/index.js";import"../../../icons/star/index.js";import"../../../icons/info-big/index.js";import"../../../icons/warning-big/index.js";import"../../../icons/error-big/index.js";import"../../../icons/success-big/index.js";import"../../../icons/mj/index.js";import"../../../icons/card/index.js";import"../../../icons/arrow-narrow-up/index.js";import"../../../icons/arrow-narrow-down/index.js";import"../../../icons/filters/index.js";import"../../../icons/info/index.js";import"../../../icons/search-circle/index.js";import"../../../icons/save/index.js";import"../../../icons/light/index.js";import"../../../icons/dark/index.js";import"../../../icons/email-colored/index.js";import"../../../icons/action-chat/index.js";import"../../../icons/attach/index.js";import"../../../icons/avatar-add/index.js";import"../../../icons/brush/index.js";import"../../../icons/calendar/index.js";import"../../../icons/claude/index.js";import"../../../icons/cookie/index.js";import"../../../icons/dalle/index.js";import"../../../icons/download-img/index.js";import"../../../icons/error/index.js";import"../../../icons/expand/index.js";import"../../../icons/eye/index.js";import"../../../icons/face/index.js";import"../../../icons/gear/index.js";import"../../../icons/gear-min/index.js";import"../../../icons/generation/index.js";import"../../../icons/gpt-3_5/index.js";import"../../../icons/gpt-4/index.js";import"../../../icons/imagine/index.js";import"../../../icons/imagine-2/index.js";import"../../../icons/loader/index.js";import"../../../icons/loader-circular/index.js";import"../../../icons/loader-circular-gradient/index.js";import"../../../icons/loader-circular-gradient-2/index.js";import"../../../icons/minus/index.js";import"../../../icons/mj-white/index.js";import"../../../icons/prompt/index.js";import"../../../icons/rabbit/index.js";import"../../../icons/ratio-1x1/index.js";import"../../../icons/ratio-2x3/index.js";import"../../../icons/ratio-3x2/index.js";import"../../../icons/ratio-4x5/index.js";import"../../../icons/ratio-4x7/index.js";import"../../../icons/ratio-5x4/index.js";import"../../../icons/ratio-7x4/index.js";import"../../../icons/ratio-16x9/index.js";import"../../../icons/ratio-9x16/index.js";import"../../../icons/ratio-21x9/index.js";import"../../../icons/ratio-9x21/index.js";import"../../../icons/refferal-min/index.js";import"../../../icons/search-data/index.js";import"../../../icons/square/index.js";import"../../../icons/turtle/index.js";import"../../../icons/upscale/index.js";import"../../../icons/withdraw/index.js";import"../../../icons/search-plus/index.js";import"../../../icons/lightning/index.js";import"../../../icons/blog-circle/index.js";import"../../../icons/stripe/index.js";import"../../../icons/corporate/index.js";import"../../../icons/public/index.js";import"../../../icons/private/index.js";import"../../../icons/mistral/index.js";import"../../../icons/gemini/index.js";import{SearchSimpleIcon as b}from"../../../icons/search-simple/index.js";import"../../../icons/sad-robot/index.js";import"../../../icons/model/index.js";import"../../../icons/phone-colored/index.js";import"../../../icons/questions/index.js";import"../../../icons/pdf-big/index.js";import"../../../icons/xls-big/index.js";import"../../../icons/word-big/index.js";import"../../../icons/txt-big/index.js";import"../../../icons/pdf/index.js";import"../../../icons/xls/index.js";import"../../../icons/word/index.js";import"../../../icons/txt/index.js";import"../../../icons/bothub-logo-gradient/index.js";import"../../../icons/telegram-logo-gradient/index.js";import"../../../icons/decline-circle/index.js";import"../../../icons/simple-gear-bg/index.js";import"../../../icons/advanced-filter/index.js";import"../../../icons/big-corporate/index.js";import"../../../icons/big-mj/index.js";import"../../../icons/big-models/index.js";import"../../../icons/big-stats/index.js";import"../../../icons/big-success/index.js";import"../../../icons/big-users/index.js";import"../../../icons/optional-presets/index.js";import"../../../icons/wallet-withdraw/index.js";import"../../../icons/big-presets/index.js";import"../../../icons/big-favorite/index.js";import"../../../icons/big-referal/index.js";import"../../../icons/attach-file/index.js";import"../../../icons/attach-file-big/index.js";import"../../../icons/voice/index.js";import"../../../icons/play-button/index.js";import"../../../icons/pause-button/index.js";import"../../../icons/text-read/index.js";import"../../../icons/text-hide/index.js";import"../../../icons/best-chat-bots/index.js";import"../../../icons/upload/index.js";import"../../../icons/enter/index.js";import"../../../icons/discord/index.js";import"../../../icons/discord-circle/index.js";import"../../../icons/black-forest-labs/index.js";import"../../../icons/flux/index.js";import"../../../icons/stable-diffusion/index.js";import"../../../icons/stability-ai/index.js";import"../../../icons/article-generator/index.js";import"../../../icons/success/index.js";import"../../../icons/google/index.js";import"../../../icons/yandex/index.js";import"../../../icons/vk/index.js";import"../../../icons/resend/index.js";import"../../../icons/big-article/index.js";import"../../../icons/add-chat/index.js";import"../../../icons/add-group/index.js";import"../../../icons/drag-dot/index.js";import"../../../icons/add-folder/index.js";import"../../../icons/temp-chat/index.js";import"../../../icons/delete-chat/index.js";import"../../../icons/sidebar-chat/index.js";import"../../../icons/organization/index.js";import"../../../icons/simple-gear/index.js";import"../../../icons/text-bold/index.js";import"../../../icons/text-italic/index.js";import"../../../icons/text-underline/index.js";import"../../../icons/text-strikethrough/index.js";import"../../../icons/refresh/index.js";import"../../../icons/copy-variants/index.js";import"../../../icons/sort-ascending/index.js";import"../../../icons/sort-descending/index.js";import"../../../icons/quote/index.js";import"../../../icons/url-circle/index.js";import"../../../icons/show-ui/index.js";import"../../../icons/hide-ui/index.js";import"../../../icons/sort-user/index.js";import"../../../icons/happy-robot/index.js";import"../../../icons/happy-robot-gradient/index.js";import"../../../icons/min-window/index.js";import"../../../icons/max-window/index.js";import"../../../icons/manage-chat/index.js";import"../../../icons/analyze-urls/index.js";import"../../../icons/web-search/index.js";import"../../../icons/include-context/index.js";import"../../../icons/queue/index.js";import"../../../icons/sort-alphabet-ascending/index.js";import"../../../icons/sort-alphabet-descending/index.js";import"../../../icons/sort-date-ascending/index.js";import"../../../icons/sort-date-descending/index.js";import"../../../icons/cot-r1/index.js";import"../../../icons/news/index.js";import"../../../icons/volume/index.js";import"../../../icons/flag-ru/index.js";import"../../../icons/flag-kz/index.js";import"../../../icons/print/index.js";import"../../../icons/pc-icon-1/index.js";import"../../../icons/pc-icon-2/index.js";import"../../../icons/pc-icon-3/index.js";import"../../../icons/star-unfilled/index.js";import"../../../icons/image-generation/index.js";import"../../../icons/speech-synthesys/index.js";import"../../../icons/transcription/index.js";import"../../../icons/text-rewrite/index.js";import"../../../icons/code-generation/index.js";import"../../../icons/essay-generation/index.js";import"../../../icons/spelling/index.js";import"../../../icons/text-generation/index.js";import"../../../icons/traffic-analisys/index.js";import"../../../icons/fav-profile/index.js";import"../../../icons/exclamation/index.js";import"../../../icons/article/index.js";import"../../../icons/setchel/index.js";import"../../../icons/assembly/index.js";import"../../../icons/data-visualisation/index.js";import"../../../icons/document-analisys/index.js";import"../../../icons/problem-solvment/index.js";import"../../../icons/setting-analisys/index.js";import"../../../icons/translation/index.js";import"../../../icons/stars/index.js";import"../../../icons/academy/index.js";import"../../../icons/articles/index.js";import"../../../icons/blog-post/index.js";import"../../../icons/book/index.js";import"../../../icons/bow-tie/index.js";import"../../../icons/case-study/index.js";import"../../../icons/comments/index.js";import"../../../icons/guide/index.js";import"../../../icons/marketing/index.js";import"../../../icons/post/index.js";import"../../../icons/report/index.js";import"../../../icons/review/index.js";import"../../../icons/scientific-article/index.js";import"../../../icons/selling-text/index.js";import"../../../icons/textbook/index.js";import"../../../icons/wind/index.js";import"../../../icons/grok/index.js";import"../../../icons/deepseek/index.js";import"../../../icons/grid-horizontal/index.js";import"../../../icons/grid-vertical/index.js";import"../../../icons/star-gradient/index.js";import"../../../icons/qwen/index.js";import"../../../icons/sidebar-toggle-left/index.js";import"../../../icons/sidebar-toggle-right/index.js";import"../../../icons/system/index.js";import"../../../icons/selector/index.js";import"../../../icons/video-camera/index.js";import"../../../icons/music-note/index.js";import"../../../icons/add-profile/index.js";import"../../../icons/token-counter/index.js";import"../../../icons/customer-support/index.js";import"../../../icons/sort-alphabet-top-bottom/index.js";import"../../../icons/sort-alphabet-bottom-top/index.js";import"../../../icons/pause/index.js";import"../../../icons/play/index.js";import"../../../icons/restore-2/index.js";import"../../../icons/video-generation/index.js";import"../../../icons/veo-model/index.js";import"../../../icons/runway/index.js";import"../../../icons/queue-select/index.js";import"../../../icons/apple/index.js";import"../../../icons/mail-colored/index.js";import"../../../icons/shield/index.js";import"../../../icons/stars-gradient/index.js";import"../../../icons/fire/index.js";import"../../../icons/brain/index.js";import"../../../icons/mj-purple/index.js";import"../../../icons/claude-black/index.js";import"../../../icons/vk-filled/index.js";import"../../../icons/tg/index.js";import"../../../icons/gift/index.js";import"../../../icons/exchange/index.js";import"../../../icons/time/index.js";import"../../../icons/folder/index.js";import"../../../icons/history/index.js";import"../../../icons/money-plus/index.js";import"../../../icons/money-stack/index.js";import"../../../icons/sort-numeric-bottom/index.js";import"../../../icons/sort-numeric-top/index.js";import"../../../icons/bulb/index.js";import"../../../icons/prompt-queue/index.js";import"../../../icons/image/index.js";import"../../../icons/text/index.js";import"../../../icons/code/index.js";import"../../../icons/blue-grok/index.js";import"../../../icons/double-image/index.js";import{Portal as u}from"../../portal/index.js";import{SelectFieldGroup as h}from"./select-field-group/index.js";import{SelectFieldOptions as f}from"./option/list/index.js";import"./option/collapse/styled.js";import"../../icon/styled.js";import"@react-spring/web";import"react-markdown";import"../../tooltip/styled.js";import"../../tooltip/arrow/styled.js";import"../../../theme/index.js";import"../../tooltip/context.js";import{filterData as y}from"./filterData.js";const w=({isOpen:w,data:k=[],contentWidth:v,contentHeight:C,size:O="small",disableSelect:$=!1,disableScrollbar:S=!1,empty:z,after:q,tabs:W,search:T,searchPlaceholder:P,resetStyleState:A,placement:G,selectModalRef:H,disablePortal:M,blur:B=!1,x:D,y:F,width:I,isKeyboardOpen:K,value:R,multiple:V,modalWidth:_,openedModel:E,selectedColor:J,compactWidth:L,modalStyles:N,onSearch:Q,onOptionClick:U,onGroupCheckboxClick:X,handleClose:Y,setValue:Z})=>{const[ii,oi]=n([]),[si,ni]=n(""),ei=e(0),ti=t(i=>{const{value:o}=i.currentTarget;null==Q||Q(o),ni(o)},[Q,ni]),ri=t(i=>{var o;if("object"!=typeof i||!i.disabled){if("object"==typeof i&&i.noSelect)return null===(o=null==i?void 0:i.onClick)||void 0===o||o.call(i,i),void Y();null==U||U(i),$||"object"==typeof i&&("checkbox"===i.type||"checkbox-group"===i.type)||(V&&Array.isArray(R)?Z([...new Set([...R,i])]):Z(i)),("object"!=typeof i||"checkbox"!==i.type&&"checkbox-group"!==i.type)&&Y()}},[R,V,$,Z,U,Y]);r(()=>{oi(E?[E]:[]),ei.current=0,ni("")},[A,E]);const ci=t(i=>{ei.current=0,oi([]),W&&W.onClick&&W.onClick(i)},[W]),di=t(i=>oi(o=>o.includes(i)?o.filter(o=>o!==i):[...o,i]),[]),pi=c(()=>M?s.Fragment:u,[M]),mi=c(()=>k.map(i=>{if(i&&"object"==typeof i&&"collapse"===i.type&&i.id&&!i.disabled){const o=()=>{i.onClick&&i.onClick(i),i.id&&di(i.id)},s=ii.includes(i.id);return Object.assign(Object.assign({},i),{open:s,onClick:o})}return i}),[k,ii,di]);return i(pi,{children:i(d,{$isOpen:w,$contentWidth:v,$disablePortal:M,$placement:G,ref:H,style:Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},N),0!==D&&Object.assign(Object.assign({},"top-right"!==G&&{left:D}),"top-right"===G&&Object.assign(Object.assign({},void 0===v&&{left:`calc(${D}px - ${I})`}),"number"==typeof v&&{left:`calc(${D}px - ${v>I?`calc(var(--bothub-scale, 1) * ${v}px)`:`${I}px`})`}))),0!==F&&{top:F}),void 0===v&&{width:I}),"number"==typeof v&&{width:v>I?`calc(var(--bothub-scale, 1) * ${v}px)`:I}),children:i(p,{$blur:B,$placement:G,$width:_,$compactWidth:L,style:Object.assign(Object.assign({},"number"==typeof C&&C>=0&&{height:`calc(var(--bothub-scale, 1) * ${C}px)`}),"string"==typeof C&&{height:C}),children:i(m,{children:o(x,{$size:O,children:[!!W&&i(j,{children:i(a,Object.assign({},W,{onClick:ci}))}),T&&i(l,{startIcon:i(b,{}),placeholder:P,value:si,onChange:ti,onClick:()=>{K.current=!0},onBlur:()=>setTimeout(()=>{K.current=!1},500)}),mi.length>0?i(h,{scrollTop:ei.current,onScrollTopChange:i=>{ei.current=i},$size:O,$disableScrollbar:S,$followContentHeight:!!C,children:i(f,{value:R,data:Q?mi:y(mi,si),size:O,disableSelect:$,onGroupCheckboxClick:X,onOptionClick:ri,selectedColor:J})}):z,q&&i(g,{children:i(f,{value:R,data:q,size:O,disableSelect:$,onOptionClick:ri,selectedColor:J})})]})})})})})};export{f as SelectFieldOptions,w as SelectModal,g as SelectModalAfter,m as SelectModalContent,x as SelectModalGroups,p as SelectModalPositionWrapper,l as SelectModalSearch,d as SelectModalStyled,a as SelectModalTabs,j as SelectModalTabsContainer};
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { SelectFieldDataItemComplex, SelectFieldGroupCheckboxClickEventHandler, SelectFieldSize } from '@/ui/components/select-field';
|
|
3
3
|
import { SelectFieldOptionClickEventHandler, SelectFieldOptionsProps } from '../types';
|
|
4
|
-
export type SelectFieldCheckboxGroupOptionProps = {
|
|
5
|
-
value:
|
|
4
|
+
export type SelectFieldCheckboxGroupOptionProps<DataItem extends SelectFieldDataItemComplex<any>> = {
|
|
5
|
+
value: DataItem | DataItem[] | null;
|
|
6
6
|
size: SelectFieldSize;
|
|
7
|
-
item:
|
|
8
|
-
data:
|
|
9
|
-
onGroupCheckboxClick?: SelectFieldGroupCheckboxClickEventHandler
|
|
10
|
-
onOptionClick: SelectFieldOptionClickEventHandler | undefined;
|
|
7
|
+
item: DataItem;
|
|
8
|
+
data: DataItem[];
|
|
9
|
+
onGroupCheckboxClick?: SelectFieldGroupCheckboxClickEventHandler<DataItem>;
|
|
10
|
+
onOptionClick: SelectFieldOptionClickEventHandler<DataItem> | undefined;
|
|
11
11
|
icon?: React.ReactNode;
|
|
12
|
-
SelectFieldOptions: React.FC<SelectFieldOptionsProps
|
|
12
|
+
SelectFieldOptions: React.FC<SelectFieldOptionsProps<DataItem>>;
|
|
13
13
|
};
|
|
14
|
-
export declare const SelectFieldCheckboxGroupOption: ({ item, value, size, data, onOptionClick, onGroupCheckboxClick, icon, SelectFieldOptions, }: SelectFieldCheckboxGroupOptionProps) => import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
export declare const SelectFieldCheckboxGroupOption: <DataItem extends SelectFieldDataItemComplex<any>>({ item, value, size, data, onOptionClick, onGroupCheckboxClick, icon, SelectFieldOptions, }: SelectFieldCheckboxGroupOptionProps<DataItem>) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { SelectFieldDataItem, SelectFieldSize } from '@/ui/components/select-field';
|
|
3
3
|
import { SelectFieldOptionClickEventHandler } from '../types';
|
|
4
|
-
export interface SelectFieldCollapseOptionProps extends React.PropsWithChildren, Pick<React.ComponentProps<'div'>, 'onMouseEnter' | 'onMouseLeave' | 'onPointerDown' | 'onPointerUp' | 'onPointerLeave'> {
|
|
4
|
+
export interface SelectFieldCollapseOptionProps<DataItem extends SelectFieldDataItem<any>> extends React.PropsWithChildren, Pick<React.ComponentProps<'div'>, 'onMouseEnter' | 'onMouseLeave' | 'onPointerDown' | 'onPointerUp' | 'onPointerLeave'> {
|
|
5
5
|
size: SelectFieldSize;
|
|
6
|
-
item:
|
|
7
|
-
onClick?: SelectFieldOptionClickEventHandler
|
|
6
|
+
item: DataItem;
|
|
7
|
+
onClick?: SelectFieldOptionClickEventHandler<DataItem>;
|
|
8
8
|
icon?: React.ReactNode;
|
|
9
9
|
}
|
|
10
|
-
export declare const SelectFieldCollapseOption: ({ size, item, children, onClick, icon, ...props }: SelectFieldCollapseOptionProps) => import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export declare const SelectFieldCollapseOption: <DataItem extends SelectFieldDataItem<any>>({ size, item, children, onClick, icon, ...props }: SelectFieldCollapseOptionProps<DataItem>) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { SelectFieldDataItem } from '@/ui/components/select-field/types';
|
|
2
2
|
import { SelectFieldOptionsProps } from '../types';
|
|
3
|
-
export declare const SelectFieldOptions:
|
|
3
|
+
export declare const SelectFieldOptions: <DataItem extends SelectFieldDataItem<any>>({ value, data, size, disableSelect, selectedColor, onGroupCheckboxClick, onOptionClick, ...props }: SelectFieldOptionsProps<DataItem>) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { ComponentProps } from 'react';
|
|
2
2
|
import { SelectFieldDataItemComplex, SelectFieldSize } from '../../types';
|
|
3
|
-
export type SelectFieldOptionProps = {
|
|
4
|
-
item:
|
|
3
|
+
export type SelectFieldOptionProps<DataItem extends SelectFieldDataItemComplex<any>> = {
|
|
4
|
+
item: DataItem;
|
|
5
5
|
selected: boolean;
|
|
6
6
|
disabled: boolean;
|
|
7
7
|
size: SelectFieldSize;
|
|
8
8
|
selectedColor?: string;
|
|
9
9
|
} & ComponentProps<'div'>;
|
|
10
|
-
export declare const SelectFieldOption: ({ item, selected, disabled, size, selectedColor, ...rest }: SelectFieldOptionProps) => import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export declare const SelectFieldOption: <DataItem extends SelectFieldDataItemComplex<any>>({ item, selected, disabled, size, selectedColor, ...rest }: SelectFieldOptionProps<DataItem>) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
3
|
-
export type SelectFieldOptionClickEventHandler = (item:
|
|
4
|
-
export type SelectFieldGroupCheckboxClickEventHandler = (item:
|
|
5
|
-
export interface SelectFieldOptionsProps extends React.ComponentProps<'div'> {
|
|
6
|
-
value:
|
|
7
|
-
data:
|
|
2
|
+
import { SelectFieldDataItem, SelectFieldSize } from '@/ui/components/select-field/types';
|
|
3
|
+
export type SelectFieldOptionClickEventHandler<DataItem extends SelectFieldDataItem<any>> = (item: DataItem) => unknown;
|
|
4
|
+
export type SelectFieldGroupCheckboxClickEventHandler<DataItem extends SelectFieldDataItem<any>> = (item: DataItem) => unknown;
|
|
5
|
+
export interface SelectFieldOptionsProps<DataItem extends SelectFieldDataItem<any>> extends React.ComponentProps<'div'> {
|
|
6
|
+
value: DataItem | DataItem[] | null;
|
|
7
|
+
data: DataItem[];
|
|
8
8
|
size: SelectFieldSize;
|
|
9
9
|
disableSelect?: boolean;
|
|
10
10
|
selectedColor?: string;
|
|
11
|
-
onGroupCheckboxClick?: SelectFieldGroupCheckboxClickEventHandler
|
|
12
|
-
onOptionClick?: SelectFieldOptionClickEventHandler
|
|
11
|
+
onGroupCheckboxClick?: SelectFieldGroupCheckboxClickEventHandler<DataItem>;
|
|
12
|
+
onOptionClick?: SelectFieldOptionClickEventHandler<DataItem>;
|
|
13
13
|
}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { TooltipProps } from '@/ui/components/tooltip';
|
|
3
|
-
export type SelectFieldChangeEventHandler = (item:
|
|
4
|
-
export type SelectFieldValueChangeEventHandler = (value:
|
|
5
|
-
export type SelectFieldMultiChangeEventHandler = (items:
|
|
6
|
-
export type SelectFieldMultiValueChangeEventHandler = (value:
|
|
7
|
-
export type SelectFieldOptionClickEventHandler = (item:
|
|
8
|
-
export type SelectFieldGroupCheckboxClickEventHandler = (item:
|
|
3
|
+
export type SelectFieldChangeEventHandler<DataItem extends SelectFieldDataItem<any>> = (item: DataItem | null) => unknown;
|
|
4
|
+
export type SelectFieldValueChangeEventHandler<DataItem extends SelectFieldDataItem<any>, ValueType = DataItem extends string ? DataItem : DataItem extends SelectFieldDataItemComplex<DataItem> ? DataItem['value'] : never> = (value: ValueType | null) => unknown;
|
|
5
|
+
export type SelectFieldMultiChangeEventHandler<DataItem extends SelectFieldDataItem<any>> = (items: DataItem[]) => unknown;
|
|
6
|
+
export type SelectFieldMultiValueChangeEventHandler<DataItem extends SelectFieldDataItem<any>, ValueType = DataItem extends string ? DataItem : DataItem extends SelectFieldDataItemComplex<DataItem> ? DataItem['value'] : never> = (value: ValueType[]) => unknown;
|
|
7
|
+
export type SelectFieldOptionClickEventHandler<DataItem extends SelectFieldDataItem<any>> = (item: DataItem) => unknown;
|
|
8
|
+
export type SelectFieldGroupCheckboxClickEventHandler<DataItem extends SelectFieldDataItem<any>> = (item: DataItem) => unknown;
|
|
9
9
|
export type SelectFieldInputChangeEventHandler = (value: string) => unknown;
|
|
10
10
|
export type SelectFieldItemType = 'item' | 'divider' | 'collapse' | 'empty' | 'label' | 'radio' | 'checkbox' | 'checkbox-group';
|
|
11
11
|
export type SelectFieldDataItemSimple = string;
|
|
12
|
-
export type SelectFieldDataItemComplex = {
|
|
12
|
+
export type SelectFieldDataItemComplex<DataItem extends SelectFieldDataItem<any>> = {
|
|
13
13
|
id?: number | string;
|
|
14
14
|
type?: SelectFieldItemType;
|
|
15
15
|
color?: string;
|
|
@@ -23,22 +23,22 @@ export type SelectFieldDataItemComplex = {
|
|
|
23
23
|
tooltip?: TooltipProps;
|
|
24
24
|
open?: boolean;
|
|
25
25
|
backgroundHoverColor?: 'gradient' | 'primary';
|
|
26
|
-
data?:
|
|
26
|
+
data?: DataItem[];
|
|
27
27
|
best_model?: boolean;
|
|
28
28
|
noSelect?: boolean;
|
|
29
29
|
description?: string;
|
|
30
30
|
selected?: boolean;
|
|
31
31
|
checkedIcon?: React.ReactNode;
|
|
32
32
|
radioName?: string;
|
|
33
|
-
onClick?: SelectFieldOptionClickEventHandler
|
|
34
|
-
onGroupCheckboxClick?: SelectFieldGroupCheckboxClickEventHandler
|
|
33
|
+
onClick?: SelectFieldOptionClickEventHandler<DataItem>;
|
|
34
|
+
onGroupCheckboxClick?: SelectFieldGroupCheckboxClickEventHandler<DataItem>;
|
|
35
35
|
};
|
|
36
|
-
export type SelectFieldDataItem = string | SelectFieldDataItemComplex
|
|
37
|
-
export type SelectFieldData = SelectFieldDataItem[];
|
|
36
|
+
export type SelectFieldDataItem<DataItem extends SelectFieldDataItem<any>> = string | SelectFieldDataItemComplex<DataItem>;
|
|
37
|
+
export type SelectFieldData<DataItem extends SelectFieldDataItem<any>> = SelectFieldDataItem<DataItem>[];
|
|
38
38
|
export type SelectFieldSize = 'small' | 'md' | 'large';
|
|
39
39
|
export type SelectFieldPlacement = 'bottom-left' | 'bottom-center' | 'top-left' | 'top-right';
|
|
40
40
|
export type SelectFieldInputType = 'text' | 'search';
|
|
41
41
|
export type ResetStyleStateType = string | number | boolean | null;
|
|
42
|
-
export type SelectedItem
|
|
43
|
-
export type ValueType
|
|
44
|
-
export type ValueSetter = (value: ValueType) => void;
|
|
42
|
+
export type SelectedItem<DataItem extends SelectFieldDataItem<any>> = DataItem | null;
|
|
43
|
+
export type ValueType<DataItem extends SelectFieldDataItem<any>> = DataItem | DataItem[] | null;
|
|
44
|
+
export type ValueSetter<DataItem extends SelectFieldDataItem<any>> = (value: ValueType<DataItem>) => void;
|
|
@@ -1,27 +1,43 @@
|
|
|
1
1
|
import { SelectFieldChangeEventHandler, SelectFieldDataItem, SelectFieldMultiChangeEventHandler, SelectFieldMultiValueChangeEventHandler, SelectFieldPlacement, SelectFieldValueChangeEventHandler } from './types';
|
|
2
|
-
|
|
3
|
-
export interface UseSelectFieldDefaultProps {
|
|
2
|
+
export interface UseSelectFieldDefaultProps<DataItem extends SelectFieldDataItem<any>> {
|
|
4
3
|
multiple?: false;
|
|
5
|
-
value?:
|
|
6
|
-
onChange?: SelectFieldChangeEventHandler
|
|
7
|
-
onValueChange?: SelectFieldValueChangeEventHandler
|
|
4
|
+
value?: DataItem | null;
|
|
5
|
+
onChange?: SelectFieldChangeEventHandler<DataItem>;
|
|
6
|
+
onValueChange?: SelectFieldValueChangeEventHandler<DataItem>;
|
|
8
7
|
}
|
|
9
|
-
export interface UseSelectFieldMultiProps {
|
|
8
|
+
export interface UseSelectFieldMultiProps<DataItem extends SelectFieldDataItem<any>> {
|
|
10
9
|
multiple: true;
|
|
11
|
-
value?:
|
|
12
|
-
onChange?: SelectFieldMultiChangeEventHandler
|
|
13
|
-
onValueChange?: SelectFieldMultiValueChangeEventHandler
|
|
10
|
+
value?: DataItem[];
|
|
11
|
+
onChange?: SelectFieldMultiChangeEventHandler<DataItem>;
|
|
12
|
+
onValueChange?: SelectFieldMultiValueChangeEventHandler<DataItem>;
|
|
14
13
|
}
|
|
15
|
-
export type UseSelectFieldUnionProps = UseSelectFieldDefaultProps | UseSelectFieldMultiProps
|
|
16
|
-
export type UseSelectFieldProps = {
|
|
14
|
+
export type UseSelectFieldUnionProps<DataItem extends SelectFieldDataItem<any>> = UseSelectFieldDefaultProps<DataItem> | UseSelectFieldMultiProps<DataItem>;
|
|
15
|
+
export type UseSelectFieldProps<DataItem extends SelectFieldDataItem<any>> = {
|
|
17
16
|
disabled?: boolean;
|
|
18
17
|
placement?: SelectFieldPlacement;
|
|
19
18
|
contentHeight?: number | string;
|
|
20
19
|
onClose?: () => void;
|
|
21
20
|
onSelectClick?: () => void;
|
|
22
|
-
} & UseSelectFieldUnionProps
|
|
23
|
-
export type
|
|
24
|
-
|
|
21
|
+
} & UseSelectFieldUnionProps<DataItem>;
|
|
22
|
+
export type UseSelectFieldHook<DataItem extends SelectFieldDataItem<any>, TriggerType extends HTMLElement = HTMLDivElement> = (params: UseSelectFieldProps<DataItem>) => {
|
|
23
|
+
x: number;
|
|
24
|
+
y: number;
|
|
25
|
+
width: number;
|
|
26
|
+
isOpen: boolean;
|
|
27
|
+
triggerRef: React.RefObject<TriggerType | null>;
|
|
28
|
+
selectModalRef: React.RefObject<HTMLDivElement | null>;
|
|
29
|
+
placement: SelectFieldPlacement;
|
|
30
|
+
isKeyboardOpen: React.RefObject<boolean>;
|
|
31
|
+
value: DataItem | DataItem[] | null;
|
|
32
|
+
disabled: boolean;
|
|
33
|
+
multiple: boolean;
|
|
34
|
+
contentHeight?: number | string;
|
|
35
|
+
handleInputClick: (native: boolean, event: React.MouseEvent<HTMLElement>) => void;
|
|
36
|
+
handleClose: () => void;
|
|
37
|
+
setValue: (value: DataItem | DataItem[] | null) => void;
|
|
38
|
+
};
|
|
39
|
+
export type UseSelectFieldReturnType<DataItem extends SelectFieldDataItem<any>, TriggerType extends HTMLElement = HTMLDivElement> = ReturnType<UseSelectFieldHook<DataItem, TriggerType>>;
|
|
40
|
+
export declare const useSelectField: <DataItem extends SelectFieldDataItem<any>, TriggerType extends HTMLElement = HTMLDivElement>({ value: initialValue, multiple, disabled, placement: initialPlacement, contentHeight, onClose, onSelectClick, onChange, onValueChange, }: UseSelectFieldProps<DataItem>) => {
|
|
25
41
|
x: number;
|
|
26
42
|
y: number;
|
|
27
43
|
width: number;
|
|
@@ -30,11 +46,11 @@ export declare const useSelectField: <TriggerType extends HTMLElement = HTMLDivE
|
|
|
30
46
|
selectModalRef: import("react").RefObject<HTMLDivElement | null>;
|
|
31
47
|
placement: "top-left" | "top-right" | "bottom-left" | "bottom-center";
|
|
32
48
|
isKeyboardOpen: import("react").RefObject<boolean>;
|
|
33
|
-
value:
|
|
49
|
+
value: DataItem | DataItem[] | null;
|
|
34
50
|
disabled: boolean;
|
|
35
51
|
multiple: boolean;
|
|
36
52
|
contentHeight: string | number | undefined;
|
|
37
53
|
handleInputClick: (native: boolean, event: React.MouseEvent<HTMLElement>) => void;
|
|
38
54
|
handleClose: () => void;
|
|
39
|
-
setValue: (value:
|
|
55
|
+
setValue: (value: DataItem | DataItem[] | null) => void;
|
|
40
56
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useState as e,useCallback as t,useRef as n,useEffect as o}from"react";import"unified";import"remark-parse";import"remark-gfm";import"mdast-util-to-markdown";import"../../utils/colors/calculateGrayScale.js";import"../../utils/colors/calculateAccentColors.js";import{findNearestScrollableParent as r}from"../../utils/findNearestScrollableParent.js";import"tslib";const i=({value:i,multiple:l=!1,disabled:s=!1,placement:c="bottom-left",contentHeight:u,onClose:a,onSelectClick:d,onChange:m,onValueChange:w})=>{const[p,f]=e(!1),[g,v]=e(0),[h,b]=e(0),[y,E]=e(0),[L,C]=e(u),[k,A]=e(c),H=t(e=>{if(l&&Array.isArray(e)){const t=
|
|
1
|
+
import{useState as e,useCallback as t,useRef as n,useEffect as o}from"react";import"unified";import"remark-parse";import"remark-gfm";import"mdast-util-to-markdown";import"../../utils/colors/calculateGrayScale.js";import"../../utils/colors/calculateAccentColors.js";import{findNearestScrollableParent as r}from"../../utils/findNearestScrollableParent.js";import"tslib";const i=({value:i,multiple:l=!1,disabled:s=!1,placement:c="bottom-left",contentHeight:u,onClose:a,onSelectClick:d,onChange:m,onValueChange:w})=>{const[p,f]=e(!1),[g,v]=e(0),[h,b]=e(0),[y,E]=e(0),[L,C]=e(u),[k,A]=e(c),H=t(e=>{if(l&&Array.isArray(e)){const t=m,n=w,o=e;null==t||t(e),null==n||n(o.map(e=>"string"==typeof e?e:"string"==typeof e.value?e.value:"").filter(e=>!!e))}if(!l&&!Array.isArray(e)){const t=m,n=w;null==t||t(e),e?"string"==typeof e?null==n||n(e):"string"==typeof e.value&&(null==n||n(e.value)):null==n||n(null)}},[l,m,w]);let[R,z]=e(l?[]:null);void 0!==i&&([R,z]=[i,H]);const X=n(!1),Y=n(null),j=n(null);o(()=>{const e=()=>{const e=Y.current;if(!e||!L||!u)return;let t=u;const{top:n,bottom:o}=e.getBoundingClientRect();t=k.includes("top")?n-20:window.innerHeight-o-20,"string"!=typeof u&&C(t<u?t:u)};return e(),window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[Y.current,L,k,u,p]);const B=t(()=>{f(!1),null==a||a()},[]);o(()=>{if(!p||!Y.current)return;const e=r(Y.current);return e?(e.addEventListener("scroll",B),()=>e.removeEventListener("scroll",B)):void 0},[p]),o(()=>{if(!p)return;const e=e=>{if(!X.current||"orientationchange"===e.type){if("mousedown"===e.type){const t=Y.current,n=j.current;if(null===t||null===n)return;if(t.contains(e.target)||n.contains(e.target))return}B()}};return document.addEventListener("mousedown",e),document.addEventListener("scroll",e),window.addEventListener("resize",e),window.addEventListener("orientationchange",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("scroll",e),window.removeEventListener("resize",e),window.removeEventListener("orientationchange",e)}},[p]);const S=t((e,t)=>{null==d||d();const n=Y.current,o=j.current;if(!n||!o||s)return;e&&t.stopPropagation();const r=window.innerHeight||document.documentElement.clientHeight,{width:i,height:l,top:a,bottom:m,left:w,right:g}=n.getBoundingClientRect(),{width:h}=o.getBoundingClientRect();let y=k;y=a-186<0||"number"==typeof u&&u>a&&r-m>a?"bottom-center"===y?"bottom-center":"bottom-left":m+186>r||"number"==typeof u&&u>r-m&&r-m<a?"top-right"===c?"top-right":"top-left":c;let L=0,C=0;switch(y){case"bottom-left":L=w+window.scrollX,C=a+window.scrollY+l;break;case"bottom-center":L=Math.floor((w+g)/2+window.scrollX-h/2),C=a+window.scrollY+l;break;case"top-left":L=w+window.scrollX,C=a+window.scrollY;break;case"top-right":L=w+window.scrollX+i,C=a+window.scrollY}v(L),b(C),E(i),A(y),f(!!e||!p)},[s,p,k,c,d]);return{x:g,y:h,width:y,isOpen:p,triggerRef:Y,selectModalRef:j,placement:k,isKeyboardOpen:X,value:R,disabled:s,multiple:l,contentHeight:L,handleInputClick:S,handleClose:B,setValue:e=>{z===H?z(e):(z(e),H(e))}}};export{i as useSelectField};
|