@bothub-chat/ui 2.60.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.
Files changed (28) hide show
  1. package/dist/components/badge-select-dropdown/index.d.ts +7 -7
  2. package/dist/components/file-field/index.d.ts +1 -0
  3. package/dist/components/file-field/index.js +1 -1
  4. package/dist/components/index.d.ts +1 -0
  5. package/dist/components/lang-switcher/index.d.ts +4 -4
  6. package/dist/components/lang-switcher/styled.d.ts +1 -1
  7. package/dist/components/select-field/index.d.ts +4 -4
  8. package/dist/components/select-field/nodes/value/index.d.ts +4 -4
  9. package/dist/components/select-field/select-modal/filterData.d.ts +2 -2
  10. package/dist/components/select-field/select-modal/index.d.ts +8 -8
  11. package/dist/components/select-field/select-modal/index.js +1 -1
  12. package/dist/components/select-field/select-modal/option/checkbox-group/index.d.ts +9 -9
  13. package/dist/components/select-field/select-modal/option/collapse/index.d.ts +4 -4
  14. package/dist/components/select-field/select-modal/option/list/index.d.ts +2 -2
  15. package/dist/components/select-field/select-modal/option/select-field-option/index.d.ts +3 -3
  16. package/dist/components/select-field/select-modal/option/types.d.ts +8 -8
  17. package/dist/components/select-field/types.d.ts +15 -15
  18. package/dist/components/select-field/useSelectField.d.ts +32 -16
  19. package/dist/components/select-field/useSelectField.js +1 -1
  20. package/dist/components/sidebar/menu/item/index.d.ts +1 -0
  21. package/dist/components/sidebar/menu/item/index.js +1 -1
  22. package/dist/components/switcher-select/index.d.ts +9 -0
  23. package/dist/components/switcher-select/index.js +1 -0
  24. package/dist/components/switcher-select/styled.d.ts +578 -0
  25. package/dist/components/switcher-select/styled.js +1 -0
  26. package/dist/components/tariff/card/index.d.ts +1 -0
  27. package/dist/index.js +1 -1
  28. package/package.json +1 -1
@@ -1,27 +1,43 @@
1
1
  import { SelectFieldChangeEventHandler, SelectFieldDataItem, SelectFieldMultiChangeEventHandler, SelectFieldMultiValueChangeEventHandler, SelectFieldPlacement, SelectFieldValueChangeEventHandler } from './types';
2
- import { ValueType } from '.';
3
- export interface UseSelectFieldDefaultProps {
2
+ export interface UseSelectFieldDefaultProps<DataItem extends SelectFieldDataItem<any>> {
4
3
  multiple?: false;
5
- value?: SelectFieldDataItem | null;
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?: SelectFieldDataItem[];
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 UseSelectFieldReturnType = ReturnType<typeof useSelectField>;
24
- export declare const useSelectField: <TriggerType extends HTMLElement = HTMLDivElement>({ value: initialValue, multiple, disabled, placement: initialPlacement, contentHeight, onClose, onSelectClick, onChange, onValueChange, }: UseSelectFieldProps) => {
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: ValueType;
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: ValueType) => void;
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=w,n=e;null==m||m(e),null==t||t(n.map(e=>"string"==typeof e?e:"string"==typeof e.value?e.value:"").filter(e=>!!e))}if(!l&&!Array.isArray(e)){null==m||m(e);const t=w;e?"string"==typeof e?null==t||t(e):"string"==typeof e.value&&(null==t||t(e.value)):null==t||t(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};
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};
@@ -3,6 +3,7 @@ type SidebarMenuItemProps = {
3
3
  icon: React.ReactNode;
4
4
  active?: boolean;
5
5
  to?: string;
6
+ href?: string;
6
7
  as?: React.ElementType;
7
8
  } & React.PropsWithChildren & React.HTMLAttributes<HTMLElement>;
8
9
  export declare const SidebarMenuItem: React.FC<SidebarMenuItemProps>;
@@ -1 +1 @@
1
- import{__rest as t}from"tslib";import{jsxs as e,jsx as o}from"react/jsx-runtime";import{useRef as r,useState as i}from"react";import{SidebarMenuListItem as n,SidebarMenuItemIconBox as s,SidebarMenuItemText as c}from"../styled.js";import{useSidebar as m}from"../../context.js";import{useSidebarMenu as a}from"../context.js";import{SidebarMenuItemTooltip as d}from"./tooltip.js";const l=l=>{var{icon:p,children:h,active:f,as:v,to:j}=l,u=t(l,["icon","children","active","as","to"]);const{isOpen:x}=m(),{isShowTooltips:b}=a(),O=r(null),[$,M]=i(!1);return e(n,Object.assign({},u,{as:v,to:j,ref:O,onMouseEnter:()=>{M(!0)},onMouseLeave:()=>{M(!1)},"data-test":"sidebar-menu-item",children:[o(s,{$active:!!f,children:p}),o(c,{$isOpen:x,$active:!!f,children:h}),o(d,{hovered:$,hidden:x||!b,children:h})]}))};export{l as SidebarMenuItem};
1
+ import{__rest as e}from"tslib";import{jsxs as t,jsx as o}from"react/jsx-runtime";import{useRef as r,useState as i}from"react";import{SidebarMenuListItem as n,SidebarMenuItemIconBox as s,SidebarMenuItemText as c}from"../styled.js";import{useSidebar as m}from"../../context.js";import{useSidebarMenu as a}from"../context.js";import{SidebarMenuItemTooltip as d}from"./tooltip.js";const h=h=>{var{icon:l,children:p,active:f,as:v,to:j,href:u}=h,x=e(h,["icon","children","active","as","to","href"]);const{isOpen:b}=m(),{isShowTooltips:O}=a(),$=r(null),[M,g]=i(!1);return t(n,Object.assign({},x,{as:v,to:j,href:u,ref:$,onMouseEnter:()=>{g(!0)},onMouseLeave:()=>{g(!1)},"data-test":"sidebar-menu-item",children:[o(s,{$active:!!f,children:l}),o(c,{$isOpen:b,$active:!!f,children:p}),o(d,{hovered:M,hidden:b||!O,children:p})]}))};export{h as SidebarMenuItem};
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ interface SwitcherProps {
3
+ options: [string, string];
4
+ defaultOption?: 0 | 1;
5
+ onChange?: (selectedIndex: 0 | 1) => void;
6
+ className?: string;
7
+ }
8
+ export declare const SwitcherSelect: React.FC<SwitcherProps>;
9
+ export {};
@@ -0,0 +1 @@
1
+ import{jsxs as e,jsx as n}from"react/jsx-runtime";import{useState as t,useRef as r,useEffect as i}from"react";import{SwitcherContainer as o,SwitcherSlider as c,SwitcherOption as l}from"./styled.js";const s=({options:s,defaultOption:u=0,onChange:d,className:f})=>{const[m,a]=t(u),[p,h]=t(0),[w,g]=t(0),C=r(null),v=r(null),j=r(null);i(()=>{k()},[m]),i(()=>{const e=()=>{k()};return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[m]);const k=()=>{const e=[v,j][m];if(e.current&&C.current){const n=C.current.getBoundingClientRect(),t=e.current.getBoundingClientRect(),r=t.left-n.left,{width:i}=t;h(r),g(i)}},x=()=>{a(e=>0===e?1:0),null==d||d(0===m?1:0)};return e(o,{ref:C,className:f,children:[n(c,{position:p,width:w}),n(l,{ref:v,onClick:x,children:s[0]}),n(l,{ref:j,onClick:x,children:s[1]})]})};export{s as SwitcherSelect};