@vkontakte/vkui 7.9.0 → 7.9.1

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/Checkbox/Checkbox.d.ts +1 -1
  2. package/dist/components/Checkbox/Checkbox.d.ts.map +1 -1
  3. package/dist/components/Checkbox/Checkbox.js.map +1 -1
  4. package/dist/components/Checkbox/CheckboxInput/CheckboxInput.d.ts +1 -1
  5. package/dist/components/Checkbox/CheckboxInput/CheckboxInput.d.ts.map +1 -1
  6. package/dist/components/Checkbox/CheckboxInput/CheckboxInput.js.map +1 -1
  7. package/dist/components/Select/Select.d.ts.map +1 -1
  8. package/dist/components/Select/Select.js +1 -1
  9. package/dist/components/Select/Select.js.map +1 -1
  10. package/dist/components/WriteBar/WriteBar.d.ts +1 -1
  11. package/dist/components/WriteBar/WriteBar.d.ts.map +1 -1
  12. package/dist/components/WriteBar/WriteBar.js.map +1 -1
  13. package/dist/cssm/components/Checkbox/Checkbox.js.map +1 -1
  14. package/dist/cssm/components/Checkbox/CheckboxInput/CheckboxInput.js.map +1 -1
  15. package/dist/cssm/components/Select/Select.js +4 -1
  16. package/dist/cssm/components/Select/Select.js.map +1 -1
  17. package/dist/cssm/components/WriteBar/WriteBar.js.map +1 -1
  18. package/dist/cssm/hooks/useMergeProps.js +6 -2
  19. package/dist/cssm/hooks/useMergeProps.js.map +1 -1
  20. package/dist/hooks/useMergeProps.d.ts.map +1 -1
  21. package/dist/hooks/useMergeProps.js +6 -2
  22. package/dist/hooks/useMergeProps.js.map +1 -1
  23. package/package.json +1 -1
  24. package/src/components/Checkbox/Checkbox.tsx +1 -1
  25. package/src/components/Checkbox/CheckboxInput/CheckboxInput.tsx +2 -2
  26. package/src/components/Select/Select.tsx +12 -3
  27. package/src/components/WriteBar/WriteBar.tsx +3 -1
  28. package/src/hooks/useMergeProps.ts +7 -2
@@ -2,7 +2,7 @@ import * as React from 'react';
2
2
  import type { HasDataAttribute, HasRootRef } from '../../types';
3
3
  import type { TappableOmitProps } from '../Tappable/Tappable';
4
4
  import { CheckboxInput, type CheckboxInputProps } from './CheckboxInput/CheckboxInput';
5
- export interface CheckboxProps extends Omit<CheckboxInputProps, 'getRootRef'>, HasRootRef<HTMLLabelElement>, Pick<TappableOmitProps, 'hoverMode' | 'activeMode' | 'hasHover' | 'hasActive' | 'focusVisibleMode'> {
5
+ export interface CheckboxProps extends Omit<CheckboxInputProps, 'getRootRef' | 'slotProps'>, HasRootRef<HTMLLabelElement>, Pick<TappableOmitProps, 'hoverMode' | 'activeMode' | 'hasHover' | 'hasActive' | 'focusVisibleMode'> {
6
6
  /**
7
7
  * Свойства, которые можно прокинуть внутрь компонента:
8
8
  * - `root`: свойства для прокидывания в корень компонента;
@@ -1 +1 @@
1
- {"version":3,"file":"Checkbox.d.ts","sourceRoot":"","sources":["../../../src/components/Checkbox/Checkbox.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGhE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAKvF,MAAM,WAAW,aACf,SAAQ,IAAI,CAAC,kBAAkB,EAAE,YAAY,CAAC,EAC5C,UAAU,CAAC,gBAAgB,CAAC,EAC5B,IAAI,CACF,iBAAiB,EACjB,WAAW,GAAG,YAAY,GAAG,UAAU,GAAG,WAAW,GAAG,kBAAkB,CAC3E;IACH;;;;OAIG;IACH,SAAS,CAAC,EAAE;QACV,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,UAAU,CAAC,GAClE,UAAU,CAAC,gBAAgB,CAAC,GAC5B,gBAAgB,CAAC;QACnB,KAAK,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,UAAU,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,CAAC;KACzF,CAAC;IACF;;OAEG;IACH,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B;;OAEG;IACH,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAmED;;GAEG;AACH,eAAO,MAAM,QAAQ;YAAW,aAAa,GAAG,KAAK,CAAC,SAAS;;CAW9D,CAAC"}
1
+ {"version":3,"file":"Checkbox.d.ts","sourceRoot":"","sources":["../../../src/components/Checkbox/Checkbox.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGhE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAKvF,MAAM,WAAW,aACf,SAAQ,IAAI,CAAC,kBAAkB,EAAE,YAAY,GAAG,WAAW,CAAC,EAC1D,UAAU,CAAC,gBAAgB,CAAC,EAC5B,IAAI,CACF,iBAAiB,EACjB,WAAW,GAAG,YAAY,GAAG,UAAU,GAAG,WAAW,GAAG,kBAAkB,CAC3E;IACH;;;;OAIG;IACH,SAAS,CAAC,EAAE;QACV,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,UAAU,CAAC,GAClE,UAAU,CAAC,gBAAgB,CAAC,GAC5B,gBAAgB,CAAC;QACnB,KAAK,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,UAAU,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,CAAC;KACzF,CAAC;IACF;;OAEG;IACH,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B;;OAEG;IACH,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAmED;;GAEG;AACH,eAAO,MAAM,QAAQ;YAAW,aAAa,GAAG,KAAK,CAAC,SAAS;;CAW9D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/Checkbox/Checkbox.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { hasReactNode } from '@vkontakte/vkjs';\nimport { useMergeProps } from '../../hooks/useMergeProps';\nimport { warnOnce } from '../../lib/warnOnce';\nimport type { HasDataAttribute, HasRootRef } from '../../types';\nimport { SelectionControl } from '../SelectionControl/SelectionControl';\nimport { SelectionControlLabel } from '../SelectionControl/SelectionControlLabel/SelectionControlLabel';\nimport type { TappableOmitProps } from '../Tappable/Tappable';\nimport { CheckboxInput, type CheckboxInputProps } from './CheckboxInput/CheckboxInput';\nimport { CheckboxSimple } from './CheckboxSimple/CheckboxSimple';\n\nconst warn = warnOnce('Checkbox');\n\nexport interface CheckboxProps\n extends Omit<CheckboxInputProps, 'getRootRef'>,\n HasRootRef<HTMLLabelElement>,\n Pick<\n TappableOmitProps,\n 'hoverMode' | 'activeMode' | 'hasHover' | 'hasActive' | 'focusVisibleMode'\n > {\n /**\n * Свойства, которые можно прокинуть внутрь компонента:\n * - `root`: свойства для прокидывания в корень компонента;\n * - `input`: свойства для прокидывания в скрытый `input`.\n */\n slotProps?: {\n root?: Omit<React.LabelHTMLAttributes<HTMLLabelElement>, 'children'> &\n HasRootRef<HTMLLabelElement> &\n HasDataAttribute;\n input?: React.ComponentProps<'input'> & HasRootRef<HTMLInputElement> & HasDataAttribute;\n };\n /**\n * Подпись под основным текстом.\n */\n description?: React.ReactNode;\n /**\n * Контент, идущий за основным текстом.\n */\n titleAfter?: React.ReactNode;\n /**\n * Отключает отступы у чекбокса. При использовании этого свойства, значение по умолчанию для свойств `hoverMode` и `activeMode` становится `\"opacity\"`.\n */\n noPadding?: boolean;\n}\n\nconst CheckboxComponent = ({\n children,\n className,\n style,\n getRootRef,\n getRef,\n description,\n hoverMode,\n activeMode,\n hasHover,\n hasActive,\n focusVisibleMode,\n titleAfter,\n noPadding,\n\n indeterminate,\n defaultIndeterminate,\n IconOnCompact,\n IconOnRegular,\n IconOffCompact,\n IconOffRegular,\n IconIndeterminate,\n\n slotProps,\n ...restProps\n}: CheckboxProps): React.ReactNode => {\n const rootRest = useMergeProps(\n {\n className,\n style,\n getRootRef,\n },\n slotProps?.root,\n );\n\n const inputRest = useMergeProps({ getRootRef: getRef, ...restProps }, slotProps?.input);\n\n return (\n <SelectionControl\n disabled={inputRest.disabled}\n hoverMode={hoverMode}\n activeMode={activeMode}\n hasHover={hasHover}\n hasActive={hasActive}\n focusVisibleMode={focusVisibleMode}\n noPadding={noPadding}\n {...rootRest}\n >\n <CheckboxInput\n indeterminate={indeterminate}\n defaultIndeterminate={defaultIndeterminate}\n IconIndeterminate={IconIndeterminate}\n IconOnCompact={IconOnCompact}\n IconOnRegular={IconOnRegular}\n IconOffCompact={IconOffCompact}\n IconOffRegular={IconOffRegular}\n slotProps={{ input: inputRest }}\n />\n <SelectionControlLabel titleAfter={titleAfter} description={description}>\n {children}\n </SelectionControlLabel>\n </SelectionControl>\n );\n};\n\n/**\n * @see https://vkui.io/components/checkbox\n */\nexport const Checkbox = (props: CheckboxProps): React.ReactNode => {\n if (process.env.NODE_ENV === 'development' && props.getRef) {\n warn('Свойство `getRef` устаревшее, используйте `slotProps={ input: { getRootRef: ... } }`');\n }\n\n const simple = !(hasReactNode(props.children) || hasReactNode(props.description));\n if (simple) {\n return <CheckboxSimple {...props} />;\n }\n\n return <CheckboxComponent {...props} />;\n};\n\nCheckbox.Input = CheckboxInput;\n"],"names":["React","hasReactNode","useMergeProps","warnOnce","SelectionControl","SelectionControlLabel","CheckboxInput","CheckboxSimple","warn","CheckboxComponent","children","className","style","getRootRef","getRef","description","hoverMode","activeMode","hasHover","hasActive","focusVisibleMode","titleAfter","noPadding","indeterminate","defaultIndeterminate","IconOnCompact","IconOnRegular","IconOffCompact","IconOffRegular","IconIndeterminate","slotProps","restProps","rootRest","root","inputRest","input","disabled","Checkbox","props","process","env","NODE_ENV","simple","Input"],"mappings":"AAAA;;;;;AAEA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,YAAY,QAAQ,kBAAkB;AAC/C,SAASC,aAAa,QAAQ,+BAA4B;AAC1D,SAASC,QAAQ,QAAQ,wBAAqB;AAE9C,SAASC,gBAAgB,QAAQ,0CAAuC;AACxE,SAASC,qBAAqB,QAAQ,qEAAkE;AAExG,SAASC,aAAa,QAAiC,mCAAgC;AACvF,SAASC,cAAc,QAAQ,qCAAkC;AAEjE,MAAMC,OAAOL,SAAS;AAkCtB,MAAMM,oBAAoB;QAAC,EACzBC,QAAQ,EACRC,SAAS,EACTC,KAAK,EACLC,UAAU,EACVC,MAAM,EACNC,WAAW,EACXC,SAAS,EACTC,UAAU,EACVC,QAAQ,EACRC,SAAS,EACTC,gBAAgB,EAChBC,UAAU,EACVC,SAAS,EAETC,aAAa,EACbC,oBAAoB,EACpBC,aAAa,EACbC,aAAa,EACbC,cAAc,EACdC,cAAc,EACdC,iBAAiB,EAEjBC,SAAS,EAEK,WADXC;QAvBHrB;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QAEAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QAEAC;;IAGA,MAAME,WAAW9B,cACf;QACES;QACAC;QACAC;IACF,GACAiB,sBAAAA,gCAAAA,UAAWG,IAAI;IAGjB,MAAMC,YAAYhC,cAAc;QAAEW,YAAYC;OAAWiB,YAAaD,sBAAAA,gCAAAA,UAAWK,KAAK;IAEtF,qBACE,MAAC/B;QACCgC,UAAUF,UAAUE,QAAQ;QAC5BpB,WAAWA;QACXC,YAAYA;QACZC,UAAUA;QACVC,WAAWA;QACXC,kBAAkBA;QAClBE,WAAWA;OACPU;;0BAEJ,KAAC1B;gBACCiB,eAAeA;gBACfC,sBAAsBA;gBACtBK,mBAAmBA;gBACnBJ,eAAeA;gBACfC,eAAeA;gBACfC,gBAAgBA;gBAChBC,gBAAgBA;gBAChBE,WAAW;oBAAEK,OAAOD;gBAAU;;0BAEhC,KAAC7B;gBAAsBgB,YAAYA;gBAAYN,aAAaA;0BACzDL;;;;AAIT;AAEA;;CAEC,GACD,OAAO,MAAM2B,WAAW,CAACC;IACvB,IAAIC,QAAQC,GAAG,CAACC,QAAQ,KAAK,iBAAiBH,MAAMxB,MAAM,EAAE;QAC1DN,KAAK;IACP;IAEA,MAAMkC,SAAS,CAAEzC,CAAAA,aAAaqC,MAAM5B,QAAQ,KAAKT,aAAaqC,MAAMvB,WAAW,CAAA;IAC/E,IAAI2B,QAAQ;QACV,qBAAO,KAACnC,mCAAmB+B;IAC7B;IAEA,qBAAO,KAAC7B,sCAAsB6B;AAChC,EAAE;AAEFD,SAASM,KAAK,GAAGrC"}
1
+ {"version":3,"sources":["../../../src/components/Checkbox/Checkbox.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { hasReactNode } from '@vkontakte/vkjs';\nimport { useMergeProps } from '../../hooks/useMergeProps';\nimport { warnOnce } from '../../lib/warnOnce';\nimport type { HasDataAttribute, HasRootRef } from '../../types';\nimport { SelectionControl } from '../SelectionControl/SelectionControl';\nimport { SelectionControlLabel } from '../SelectionControl/SelectionControlLabel/SelectionControlLabel';\nimport type { TappableOmitProps } from '../Tappable/Tappable';\nimport { CheckboxInput, type CheckboxInputProps } from './CheckboxInput/CheckboxInput';\nimport { CheckboxSimple } from './CheckboxSimple/CheckboxSimple';\n\nconst warn = warnOnce('Checkbox');\n\nexport interface CheckboxProps\n extends Omit<CheckboxInputProps, 'getRootRef' | 'slotProps'>,\n HasRootRef<HTMLLabelElement>,\n Pick<\n TappableOmitProps,\n 'hoverMode' | 'activeMode' | 'hasHover' | 'hasActive' | 'focusVisibleMode'\n > {\n /**\n * Свойства, которые можно прокинуть внутрь компонента:\n * - `root`: свойства для прокидывания в корень компонента;\n * - `input`: свойства для прокидывания в скрытый `input`.\n */\n slotProps?: {\n root?: Omit<React.LabelHTMLAttributes<HTMLLabelElement>, 'children'> &\n HasRootRef<HTMLLabelElement> &\n HasDataAttribute;\n input?: React.ComponentProps<'input'> & HasRootRef<HTMLInputElement> & HasDataAttribute;\n };\n /**\n * Подпись под основным текстом.\n */\n description?: React.ReactNode;\n /**\n * Контент, идущий за основным текстом.\n */\n titleAfter?: React.ReactNode;\n /**\n * Отключает отступы у чекбокса. При использовании этого свойства, значение по умолчанию для свойств `hoverMode` и `activeMode` становится `\"opacity\"`.\n */\n noPadding?: boolean;\n}\n\nconst CheckboxComponent = ({\n children,\n className,\n style,\n getRootRef,\n getRef,\n description,\n hoverMode,\n activeMode,\n hasHover,\n hasActive,\n focusVisibleMode,\n titleAfter,\n noPadding,\n\n indeterminate,\n defaultIndeterminate,\n IconOnCompact,\n IconOnRegular,\n IconOffCompact,\n IconOffRegular,\n IconIndeterminate,\n\n slotProps,\n ...restProps\n}: CheckboxProps): React.ReactNode => {\n const rootRest = useMergeProps(\n {\n className,\n style,\n getRootRef,\n },\n slotProps?.root,\n );\n\n const inputRest = useMergeProps({ getRootRef: getRef, ...restProps }, slotProps?.input);\n\n return (\n <SelectionControl\n disabled={inputRest.disabled}\n hoverMode={hoverMode}\n activeMode={activeMode}\n hasHover={hasHover}\n hasActive={hasActive}\n focusVisibleMode={focusVisibleMode}\n noPadding={noPadding}\n {...rootRest}\n >\n <CheckboxInput\n indeterminate={indeterminate}\n defaultIndeterminate={defaultIndeterminate}\n IconIndeterminate={IconIndeterminate}\n IconOnCompact={IconOnCompact}\n IconOnRegular={IconOnRegular}\n IconOffCompact={IconOffCompact}\n IconOffRegular={IconOffRegular}\n slotProps={{ input: inputRest }}\n />\n <SelectionControlLabel titleAfter={titleAfter} description={description}>\n {children}\n </SelectionControlLabel>\n </SelectionControl>\n );\n};\n\n/**\n * @see https://vkui.io/components/checkbox\n */\nexport const Checkbox = (props: CheckboxProps): React.ReactNode => {\n if (process.env.NODE_ENV === 'development' && props.getRef) {\n warn('Свойство `getRef` устаревшее, используйте `slotProps={ input: { getRootRef: ... } }`');\n }\n\n const simple = !(hasReactNode(props.children) || hasReactNode(props.description));\n if (simple) {\n return <CheckboxSimple {...props} />;\n }\n\n return <CheckboxComponent {...props} />;\n};\n\nCheckbox.Input = CheckboxInput;\n"],"names":["React","hasReactNode","useMergeProps","warnOnce","SelectionControl","SelectionControlLabel","CheckboxInput","CheckboxSimple","warn","CheckboxComponent","children","className","style","getRootRef","getRef","description","hoverMode","activeMode","hasHover","hasActive","focusVisibleMode","titleAfter","noPadding","indeterminate","defaultIndeterminate","IconOnCompact","IconOnRegular","IconOffCompact","IconOffRegular","IconIndeterminate","slotProps","restProps","rootRest","root","inputRest","input","disabled","Checkbox","props","process","env","NODE_ENV","simple","Input"],"mappings":"AAAA;;;;;AAEA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,YAAY,QAAQ,kBAAkB;AAC/C,SAASC,aAAa,QAAQ,+BAA4B;AAC1D,SAASC,QAAQ,QAAQ,wBAAqB;AAE9C,SAASC,gBAAgB,QAAQ,0CAAuC;AACxE,SAASC,qBAAqB,QAAQ,qEAAkE;AAExG,SAASC,aAAa,QAAiC,mCAAgC;AACvF,SAASC,cAAc,QAAQ,qCAAkC;AAEjE,MAAMC,OAAOL,SAAS;AAkCtB,MAAMM,oBAAoB;QAAC,EACzBC,QAAQ,EACRC,SAAS,EACTC,KAAK,EACLC,UAAU,EACVC,MAAM,EACNC,WAAW,EACXC,SAAS,EACTC,UAAU,EACVC,QAAQ,EACRC,SAAS,EACTC,gBAAgB,EAChBC,UAAU,EACVC,SAAS,EAETC,aAAa,EACbC,oBAAoB,EACpBC,aAAa,EACbC,aAAa,EACbC,cAAc,EACdC,cAAc,EACdC,iBAAiB,EAEjBC,SAAS,EAEK,WADXC;QAvBHrB;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QAEAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QAEAC;;IAGA,MAAME,WAAW9B,cACf;QACES;QACAC;QACAC;IACF,GACAiB,sBAAAA,gCAAAA,UAAWG,IAAI;IAGjB,MAAMC,YAAYhC,cAAc;QAAEW,YAAYC;OAAWiB,YAAaD,sBAAAA,gCAAAA,UAAWK,KAAK;IAEtF,qBACE,MAAC/B;QACCgC,UAAUF,UAAUE,QAAQ;QAC5BpB,WAAWA;QACXC,YAAYA;QACZC,UAAUA;QACVC,WAAWA;QACXC,kBAAkBA;QAClBE,WAAWA;OACPU;;0BAEJ,KAAC1B;gBACCiB,eAAeA;gBACfC,sBAAsBA;gBACtBK,mBAAmBA;gBACnBJ,eAAeA;gBACfC,eAAeA;gBACfC,gBAAgBA;gBAChBC,gBAAgBA;gBAChBE,WAAW;oBAAEK,OAAOD;gBAAU;;0BAEhC,KAAC7B;gBAAsBgB,YAAYA;gBAAYN,aAAaA;0BACzDL;;;;AAIT;AAEA;;CAEC,GACD,OAAO,MAAM2B,WAAW,CAACC;IACvB,IAAIC,QAAQC,GAAG,CAACC,QAAQ,KAAK,iBAAiBH,MAAMxB,MAAM,EAAE;QAC1DN,KAAK;IACP;IAEA,MAAMkC,SAAS,CAAEzC,CAAAA,aAAaqC,MAAM5B,QAAQ,KAAKT,aAAaqC,MAAMvB,WAAW,CAAA;IAC/E,IAAI2B,QAAQ;QACV,qBAAO,KAACnC,mCAAmB+B;IAC7B;IAEA,qBAAO,KAAC7B,sCAAsB6B;AAChC,EAAE;AAEFD,SAASM,KAAK,GAAGrC"}
@@ -14,7 +14,7 @@ export interface CheckboxInputProps extends React.ComponentProps<'input'>, HasRo
14
14
  * - `input`: свойства для прокидывания в скрытый `input`.
15
15
  */
16
16
  slotProps?: {
17
- root?: Omit<React.HTMLAttributes<HTMLElement>, 'children'> & HasRootRef<HTMLElement> & HasDataAttribute;
17
+ root?: Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> & HasRootRef<HTMLDivElement> & HasDataAttribute;
18
18
  input?: React.ComponentProps<'input'> & HasRootRef<HTMLInputElement> & HasDataAttribute;
19
19
  };
20
20
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"CheckboxInput.d.ts","sourceRoot":"","sources":["../../../../src/components/Checkbox/CheckboxInput/CheckboxInput.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAGL,gBAAgB,EAGjB,MAAM,kBAAkB,CAAC;AAO1B,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAKnE,KAAK,cAAc,GAAG,OAAO,gBAAgB,CAAC;AAE9C,MAAM,MAAM,qBAAqB,GAC7B,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,GAClD,cAAc,CAAC;AAMnB,MAAM,WAAW,kBACf,SAAQ,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,EACnC,UAAU,CAAC,cAAc,CAAC;IAC5B;;OAEG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACrC;;;;OAIG;IACH,SAAS,CAAC,EAAE;QACV,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC,GACxD,UAAU,CAAC,WAAW,CAAC,GACvB,gBAAgB,CAAC;QACnB,KAAK,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,UAAU,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,CAAC;KACzF,CAAC;IACF;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;OAEG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;OAEG;IACH,aAAa,CAAC,EAAE,qBAAqB,CAAC;IACtC;;OAEG;IACH,aAAa,CAAC,EAAE,qBAAqB,CAAC;IACtC;;OAEG;IACH,cAAc,CAAC,EAAE,qBAAqB,CAAC;IACvC;;OAEG;IACH,cAAc,CAAC,EAAE,qBAAqB,CAAC;IACvC;;OAEG;IACH,iBAAiB,CAAC,EAAE,qBAAqB,CAAC;CAC3C;AAID,wBAAgB,aAAa,CAAC,EAC5B,SAAS,EACT,KAAK,EACL,UAAU,EACV,MAAM,EAEN,aAAa,EACb,oBAAoB,EACpB,aAAgC,EAChC,aAAgC,EAChC,cAAkC,EAClC,cAAkC,EAClC,iBAA+C,EAE/C,SAAS,EACT,GAAG,SAAS,EACb,EAAE,kBAAkB,2CA8HpB"}
1
+ {"version":3,"file":"CheckboxInput.d.ts","sourceRoot":"","sources":["../../../../src/components/Checkbox/CheckboxInput/CheckboxInput.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAGL,gBAAgB,EAGjB,MAAM,kBAAkB,CAAC;AAO1B,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAKnE,KAAK,cAAc,GAAG,OAAO,gBAAgB,CAAC;AAE9C,MAAM,MAAM,qBAAqB,GAC7B,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,GAClD,cAAc,CAAC;AAMnB,MAAM,WAAW,kBACf,SAAQ,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,EACnC,UAAU,CAAC,cAAc,CAAC;IAC5B;;OAEG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACrC;;;;OAIG;IACH,SAAS,CAAC,EAAE;QACV,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC,GAC3D,UAAU,CAAC,cAAc,CAAC,GAC1B,gBAAgB,CAAC;QACnB,KAAK,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,UAAU,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,CAAC;KACzF,CAAC;IACF;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;OAEG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;OAEG;IACH,aAAa,CAAC,EAAE,qBAAqB,CAAC;IACtC;;OAEG;IACH,aAAa,CAAC,EAAE,qBAAqB,CAAC;IACtC;;OAEG;IACH,cAAc,CAAC,EAAE,qBAAqB,CAAC;IACvC;;OAEG;IACH,cAAc,CAAC,EAAE,qBAAqB,CAAC;IACvC;;OAEG;IACH,iBAAiB,CAAC,EAAE,qBAAqB,CAAC;CAC3C;AAID,wBAAgB,aAAa,CAAC,EAC5B,SAAS,EACT,KAAK,EACL,UAAU,EACV,MAAM,EAEN,aAAa,EACb,oBAAoB,EACpB,aAAgC,EAChC,aAAgC,EAChC,cAAkC,EAClC,cAAkC,EAClC,iBAA+C,EAE/C,SAAS,EACT,GAAG,SAAS,EACb,EAAE,kBAAkB,2CA8HpB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/Checkbox/CheckboxInput/CheckboxInput.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport {\n Icon20CheckBoxIndetermanate,\n Icon20CheckBoxOff,\n Icon20CheckBoxOn,\n Icon24CheckBoxOff,\n Icon24CheckBoxOn,\n} from '@vkontakte/icons';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivityConditionalRender } from '../../../hooks/useAdaptivityConditionalRender';\nimport { useExternRef } from '../../../hooks/useExternRef';\nimport { useMergeProps } from '../../../hooks/useMergeProps';\nimport { usePlatform } from '../../../hooks/usePlatform';\nimport { warnOnce } from '../../../lib/warnOnce';\nimport type { HasDataAttribute, HasRootRef } from '../../../types';\nimport { RootComponent } from '../../RootComponent/RootComponent';\nimport { VisuallyHidden } from '../../VisuallyHidden/VisuallyHidden';\nimport styles from './CheckboxInput.module.css';\n\ntype VendorIconType = typeof Icon20CheckBoxOn;\n\nexport type CheckboxInputIconType =\n | React.ComponentType<React.SVGProps<SVGSVGElement>>\n | VendorIconType;\n\nfunction setIndeterminate(el: HTMLInputElement, indeterminate: boolean) {\n el.indeterminate = indeterminate;\n}\n\nexport interface CheckboxInputProps\n extends React.ComponentProps<'input'>,\n HasRootRef<HTMLDivElement> {\n /**\n * @deprecated Since 7.9.0. Вместо этого используйте `slotProps={ input: { getRootRef: ... } }`.\n */\n getRef?: React.Ref<HTMLInputElement>;\n /**\n * Свойства, которые можно прокинуть внутрь компонента:\n * - `root`: свойства для прокидывания в корень компонента;\n * - `input`: свойства для прокидывания в скрытый `input`.\n */\n slotProps?: {\n root?: Omit<React.HTMLAttributes<HTMLElement>, 'children'> &\n HasRootRef<HTMLElement> &\n HasDataAttribute;\n input?: React.ComponentProps<'input'> & HasRootRef<HTMLInputElement> & HasDataAttribute;\n };\n /**\n * Неопределенное состояние чекбокса.\n */\n indeterminate?: boolean;\n /**\n * Неопределенное состояние чекбокса по умолчанию.\n */\n defaultIndeterminate?: boolean;\n /**\n * Иконка для включенного состояния в компактном режиме.\n */\n IconOnCompact?: CheckboxInputIconType;\n /**\n * Иконка для включенного состояния в обычном режиме.\n */\n IconOnRegular?: CheckboxInputIconType;\n /**\n * Иконка для выключенного состояния в компактном режиме.\n */\n IconOffCompact?: CheckboxInputIconType;\n /**\n * Иконка для выключенного состояния в обычном режиме.\n */\n IconOffRegular?: CheckboxInputIconType;\n /**\n * Иконка для неопределенного состояния.\n */\n IconIndeterminate?: CheckboxInputIconType;\n}\n\nconst warn = warnOnce('Checkbox');\n\nexport function CheckboxInput({\n className,\n style,\n getRootRef,\n getRef,\n\n indeterminate,\n defaultIndeterminate,\n IconOnCompact = Icon20CheckBoxOn,\n IconOnRegular = Icon24CheckBoxOn,\n IconOffCompact = Icon20CheckBoxOff,\n IconOffRegular = Icon24CheckBoxOff,\n IconIndeterminate = Icon20CheckBoxIndetermanate,\n\n slotProps,\n ...restProps\n}: CheckboxInputProps) {\n const rootRest = useMergeProps(\n {\n className,\n style,\n getRootRef,\n },\n slotProps?.root,\n );\n\n const {\n onChange,\n getRootRef: getInputRef,\n ...inputRest\n } = useMergeProps({ getRootRef: getRef, ...restProps }, slotProps?.input);\n\n const inputRef = useExternRef<HTMLInputElement>(getInputRef);\n\n const platform = usePlatform();\n const { sizeY: adaptiveSizeY } = useAdaptivityConditionalRender();\n\n React.useEffect(() => {\n const indeterminateValue = indeterminate === undefined ? defaultIndeterminate : indeterminate;\n\n if (inputRef.current) {\n setIndeterminate(inputRef.current, Boolean(indeterminateValue));\n }\n }, [defaultIndeterminate, indeterminate, inputRef]);\n\n const handleChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n if (\n defaultIndeterminate !== undefined &&\n indeterminate === undefined &&\n inputRest.checked === undefined &&\n inputRef.current\n ) {\n setIndeterminate(inputRef.current, false);\n }\n if (indeterminate !== undefined && inputRef.current) {\n setIndeterminate(inputRef.current, Boolean(indeterminate));\n }\n onChange && onChange(event);\n },\n [defaultIndeterminate, indeterminate, inputRest.checked, onChange, inputRef],\n );\n\n if (process.env.NODE_ENV === 'development') {\n /* istanbul ignore if: не проверяем в тестах */\n if (getRef) {\n warn('Свойство `getRef` устаревшее, используйте `slotProps={ input: { getRootRef: ... } }`');\n }\n\n if (defaultIndeterminate && inputRest.defaultChecked) {\n warn('defaultIndeterminate и defaultChecked не могут быть true одновременно', 'error');\n }\n\n if (indeterminate && inputRest.checked) {\n warn('indeterminate и checked не могут быть true одновременно', 'error');\n }\n\n if (inputRest.defaultChecked && inputRest.checked) {\n warn('defaultChecked и checked не могут быть true одновременно', 'error');\n }\n }\n\n return (\n <RootComponent baseClassName={styles.host} {...rootRest}>\n <VisuallyHidden\n Component=\"input\"\n type=\"checkbox\"\n onChange={handleChange}\n getRootRef={inputRef}\n baseClassName={styles.input}\n {...inputRest}\n />\n {platform === 'vkcom' ? (\n <IconOnCompact className={styles.iconOn} />\n ) : (\n <React.Fragment>\n {adaptiveSizeY.compact && (\n <IconOnCompact className={classNames(styles.iconOn, adaptiveSizeY.compact.className)} />\n )}\n {adaptiveSizeY.regular && (\n <IconOnRegular className={classNames(styles.iconOn, adaptiveSizeY.regular.className)} />\n )}\n </React.Fragment>\n )}\n {platform === 'vkcom' ? (\n <IconOffCompact className={styles.iconOff} />\n ) : (\n <React.Fragment>\n {adaptiveSizeY.compact && (\n <IconOffCompact\n className={classNames(styles.iconOff, adaptiveSizeY.compact.className)}\n />\n )}\n {adaptiveSizeY.regular && (\n <IconOffRegular\n className={classNames(styles.iconOff, adaptiveSizeY.regular.className)}\n />\n )}\n </React.Fragment>\n )}\n {platform === 'vkcom' ? (\n <IconIndeterminate width={20} height={20} className={styles.iconIndeterminate} />\n ) : (\n <React.Fragment>\n {adaptiveSizeY.compact && (\n <IconIndeterminate\n className={classNames(styles.iconIndeterminate, adaptiveSizeY.compact.className)}\n width={20}\n height={20}\n />\n )}\n {adaptiveSizeY.regular && (\n <IconIndeterminate\n className={classNames(styles.iconIndeterminate, adaptiveSizeY.regular.className)}\n width={24}\n height={24}\n />\n )}\n </React.Fragment>\n )}\n </RootComponent>\n );\n}\n"],"names":["React","Icon20CheckBoxIndetermanate","Icon20CheckBoxOff","Icon20CheckBoxOn","Icon24CheckBoxOff","Icon24CheckBoxOn","classNames","useAdaptivityConditionalRender","useExternRef","useMergeProps","usePlatform","warnOnce","RootComponent","VisuallyHidden","setIndeterminate","el","indeterminate","warn","CheckboxInput","className","style","getRootRef","getRef","defaultIndeterminate","IconOnCompact","IconOnRegular","IconOffCompact","IconOffRegular","IconIndeterminate","slotProps","restProps","rootRest","root","input","onChange","getInputRef","inputRest","inputRef","platform","sizeY","adaptiveSizeY","useEffect","indeterminateValue","undefined","current","Boolean","handleChange","useCallback","event","checked","process","env","NODE_ENV","defaultChecked","baseClassName","Component","type","Fragment","compact","regular","width","height"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/components/Checkbox/CheckboxInput/CheckboxInput.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport {\n Icon20CheckBoxIndetermanate,\n Icon20CheckBoxOff,\n Icon20CheckBoxOn,\n Icon24CheckBoxOff,\n Icon24CheckBoxOn,\n} from '@vkontakte/icons';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivityConditionalRender } from '../../../hooks/useAdaptivityConditionalRender';\nimport { useExternRef } from '../../../hooks/useExternRef';\nimport { useMergeProps } from '../../../hooks/useMergeProps';\nimport { usePlatform } from '../../../hooks/usePlatform';\nimport { warnOnce } from '../../../lib/warnOnce';\nimport type { HasDataAttribute, HasRootRef } from '../../../types';\nimport { RootComponent } from '../../RootComponent/RootComponent';\nimport { VisuallyHidden } from '../../VisuallyHidden/VisuallyHidden';\nimport styles from './CheckboxInput.module.css';\n\ntype VendorIconType = typeof Icon20CheckBoxOn;\n\nexport type CheckboxInputIconType =\n | React.ComponentType<React.SVGProps<SVGSVGElement>>\n | VendorIconType;\n\nfunction setIndeterminate(el: HTMLInputElement, indeterminate: boolean) {\n el.indeterminate = indeterminate;\n}\n\nexport interface CheckboxInputProps\n extends React.ComponentProps<'input'>,\n HasRootRef<HTMLDivElement> {\n /**\n * @deprecated Since 7.9.0. Вместо этого используйте `slotProps={ input: { getRootRef: ... } }`.\n */\n getRef?: React.Ref<HTMLInputElement>;\n /**\n * Свойства, которые можно прокинуть внутрь компонента:\n * - `root`: свойства для прокидывания в корень компонента;\n * - `input`: свойства для прокидывания в скрытый `input`.\n */\n slotProps?: {\n root?: Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> &\n HasRootRef<HTMLDivElement> &\n HasDataAttribute;\n input?: React.ComponentProps<'input'> & HasRootRef<HTMLInputElement> & HasDataAttribute;\n };\n /**\n * Неопределенное состояние чекбокса.\n */\n indeterminate?: boolean;\n /**\n * Неопределенное состояние чекбокса по умолчанию.\n */\n defaultIndeterminate?: boolean;\n /**\n * Иконка для включенного состояния в компактном режиме.\n */\n IconOnCompact?: CheckboxInputIconType;\n /**\n * Иконка для включенного состояния в обычном режиме.\n */\n IconOnRegular?: CheckboxInputIconType;\n /**\n * Иконка для выключенного состояния в компактном режиме.\n */\n IconOffCompact?: CheckboxInputIconType;\n /**\n * Иконка для выключенного состояния в обычном режиме.\n */\n IconOffRegular?: CheckboxInputIconType;\n /**\n * Иконка для неопределенного состояния.\n */\n IconIndeterminate?: CheckboxInputIconType;\n}\n\nconst warn = warnOnce('Checkbox');\n\nexport function CheckboxInput({\n className,\n style,\n getRootRef,\n getRef,\n\n indeterminate,\n defaultIndeterminate,\n IconOnCompact = Icon20CheckBoxOn,\n IconOnRegular = Icon24CheckBoxOn,\n IconOffCompact = Icon20CheckBoxOff,\n IconOffRegular = Icon24CheckBoxOff,\n IconIndeterminate = Icon20CheckBoxIndetermanate,\n\n slotProps,\n ...restProps\n}: CheckboxInputProps) {\n const rootRest = useMergeProps(\n {\n className,\n style,\n getRootRef,\n },\n slotProps?.root,\n );\n\n const {\n onChange,\n getRootRef: getInputRef,\n ...inputRest\n } = useMergeProps({ getRootRef: getRef, ...restProps }, slotProps?.input);\n\n const inputRef = useExternRef<HTMLInputElement>(getInputRef);\n\n const platform = usePlatform();\n const { sizeY: adaptiveSizeY } = useAdaptivityConditionalRender();\n\n React.useEffect(() => {\n const indeterminateValue = indeterminate === undefined ? defaultIndeterminate : indeterminate;\n\n if (inputRef.current) {\n setIndeterminate(inputRef.current, Boolean(indeterminateValue));\n }\n }, [defaultIndeterminate, indeterminate, inputRef]);\n\n const handleChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n if (\n defaultIndeterminate !== undefined &&\n indeterminate === undefined &&\n inputRest.checked === undefined &&\n inputRef.current\n ) {\n setIndeterminate(inputRef.current, false);\n }\n if (indeterminate !== undefined && inputRef.current) {\n setIndeterminate(inputRef.current, Boolean(indeterminate));\n }\n onChange && onChange(event);\n },\n [defaultIndeterminate, indeterminate, inputRest.checked, onChange, inputRef],\n );\n\n if (process.env.NODE_ENV === 'development') {\n /* istanbul ignore if: не проверяем в тестах */\n if (getRef) {\n warn('Свойство `getRef` устаревшее, используйте `slotProps={ input: { getRootRef: ... } }`');\n }\n\n if (defaultIndeterminate && inputRest.defaultChecked) {\n warn('defaultIndeterminate и defaultChecked не могут быть true одновременно', 'error');\n }\n\n if (indeterminate && inputRest.checked) {\n warn('indeterminate и checked не могут быть true одновременно', 'error');\n }\n\n if (inputRest.defaultChecked && inputRest.checked) {\n warn('defaultChecked и checked не могут быть true одновременно', 'error');\n }\n }\n\n return (\n <RootComponent baseClassName={styles.host} {...rootRest}>\n <VisuallyHidden\n Component=\"input\"\n type=\"checkbox\"\n onChange={handleChange}\n getRootRef={inputRef}\n baseClassName={styles.input}\n {...inputRest}\n />\n {platform === 'vkcom' ? (\n <IconOnCompact className={styles.iconOn} />\n ) : (\n <React.Fragment>\n {adaptiveSizeY.compact && (\n <IconOnCompact className={classNames(styles.iconOn, adaptiveSizeY.compact.className)} />\n )}\n {adaptiveSizeY.regular && (\n <IconOnRegular className={classNames(styles.iconOn, adaptiveSizeY.regular.className)} />\n )}\n </React.Fragment>\n )}\n {platform === 'vkcom' ? (\n <IconOffCompact className={styles.iconOff} />\n ) : (\n <React.Fragment>\n {adaptiveSizeY.compact && (\n <IconOffCompact\n className={classNames(styles.iconOff, adaptiveSizeY.compact.className)}\n />\n )}\n {adaptiveSizeY.regular && (\n <IconOffRegular\n className={classNames(styles.iconOff, adaptiveSizeY.regular.className)}\n />\n )}\n </React.Fragment>\n )}\n {platform === 'vkcom' ? (\n <IconIndeterminate width={20} height={20} className={styles.iconIndeterminate} />\n ) : (\n <React.Fragment>\n {adaptiveSizeY.compact && (\n <IconIndeterminate\n className={classNames(styles.iconIndeterminate, adaptiveSizeY.compact.className)}\n width={20}\n height={20}\n />\n )}\n {adaptiveSizeY.regular && (\n <IconIndeterminate\n className={classNames(styles.iconIndeterminate, adaptiveSizeY.regular.className)}\n width={24}\n height={24}\n />\n )}\n </React.Fragment>\n )}\n </RootComponent>\n );\n}\n"],"names":["React","Icon20CheckBoxIndetermanate","Icon20CheckBoxOff","Icon20CheckBoxOn","Icon24CheckBoxOff","Icon24CheckBoxOn","classNames","useAdaptivityConditionalRender","useExternRef","useMergeProps","usePlatform","warnOnce","RootComponent","VisuallyHidden","setIndeterminate","el","indeterminate","warn","CheckboxInput","className","style","getRootRef","getRef","defaultIndeterminate","IconOnCompact","IconOnRegular","IconOffCompact","IconOffRegular","IconIndeterminate","slotProps","restProps","rootRest","root","input","onChange","getInputRef","inputRest","inputRef","platform","sizeY","adaptiveSizeY","useEffect","indeterminateValue","undefined","current","Boolean","handleChange","useCallback","event","checked","process","env","NODE_ENV","defaultChecked","baseClassName","Component","type","Fragment","compact","regular","width","height"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../../../src/components/Select/Select.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAgB,KAAK,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAEzE,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;AAExD;;GAEG;AACH,eAAO,MAAM,MAAM,GAAI,OAAO,SAAS,2BAA2B,EAAE,mCAIjE,WAAW,CAAC,OAAO,CAAC,KAAG,KAAK,CAAC,SAyE/B,CAAC"}
1
+ {"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../../../src/components/Select/Select.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAgB,KAAK,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAMzE,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;AAExD;;GAEG;AACH,eAAO,MAAM,MAAM,GAAI,OAAO,SAAS,2BAA2B,EAAE,mCAIjE,WAAW,CAAC,OAAO,CAAC,KAAG,KAAK,CAAC,SA8E/B,CAAC"}
@@ -64,7 +64,7 @@ import { NativeSelect } from "../NativeSelect/NativeSelect.js";
64
64
  deviceType.mobile && /*#__PURE__*/ _jsx(NativeSelect, _object_spread_props(_object_spread({
65
65
  className: classNames(className, deviceType.mobile.className),
66
66
  slotProps: {
67
- select: slotProps === null || slotProps === void 0 ? void 0 : slotProps.select,
67
+ select: _object_spread({}, slotProps === null || slotProps === void 0 ? void 0 : slotProps.input, slotProps === null || slotProps === void 0 ? void 0 : slotProps.select),
68
68
  root: slotProps === null || slotProps === void 0 ? void 0 : slotProps.root
69
69
  }
70
70
  }, nativeProps), {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/Select/Select.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivityConditionalRender } from '../../hooks/useAdaptivityConditionalRender';\nimport type { HasOnlyExpectedProps } from '../../types';\nimport { CustomSelect, type SelectProps } from '../CustomSelect/CustomSelect';\nimport { type CustomSelectOptionInterface } from '../CustomSelect/types';\nimport { NativeSelect, type NativeSelectProps } from '../NativeSelect/NativeSelect';\nexport type SelectType = 'default' | 'plain' | 'accent';\n\n/**\n * @see https://vkui.io/components/select\n */\nexport const Select = <OptionT extends CustomSelectOptionInterface>({\n children,\n className,\n ...props\n}: SelectProps<OptionT>): React.ReactNode => {\n const {\n options = [],\n searchable,\n emptyText,\n onInputChange,\n filterFn,\n popupDirection,\n renderOption,\n renderDropdown,\n fetching,\n onClose,\n onOpen,\n icon,\n ClearButton,\n allowClearButton,\n clearButtonTestId,\n dropdownOffsetDistance,\n dropdownAutoWidth,\n forceDropdownPortal,\n noMaxHeight,\n labelTextTestId,\n nativeSelectTestId,\n after,\n mode,\n pattern,\n minLength,\n maxLength,\n readOnly,\n getSelectInputRef,\n overscrollBehavior,\n beforeAlign,\n afterAlign,\n onInputKeyDown,\n accessible,\n fetchingCompletedLabel,\n fetchingInProgressLabel,\n\n slotProps,\n ...restProps\n } = props;\n\n const { deviceType } = useAdaptivityConditionalRender();\n\n const nativeProps: HasOnlyExpectedProps<typeof restProps, NativeSelectProps> = restProps;\n\n return (\n <React.Fragment>\n {deviceType.desktop && (\n <CustomSelect\n className={classNames(className, deviceType.desktop.className)}\n slotProps={slotProps}\n {...props}\n />\n )}\n {deviceType.mobile && (\n <NativeSelect\n className={classNames(className, deviceType.mobile.className)}\n slotProps={{\n select: slotProps?.select,\n root: slotProps?.root,\n }}\n {...nativeProps}\n >\n {options.map(({ label, value, disabled }) => (\n <option value={value} key={`${value}`} disabled={disabled}>\n {label}\n </option>\n ))}\n </NativeSelect>\n )}\n </React.Fragment>\n );\n};\n"],"names":["React","classNames","useAdaptivityConditionalRender","CustomSelect","NativeSelect","Select","children","className","props","options","searchable","emptyText","onInputChange","filterFn","popupDirection","renderOption","renderDropdown","fetching","onClose","onOpen","icon","ClearButton","allowClearButton","clearButtonTestId","dropdownOffsetDistance","dropdownAutoWidth","forceDropdownPortal","noMaxHeight","labelTextTestId","nativeSelectTestId","after","mode","pattern","minLength","maxLength","readOnly","getSelectInputRef","overscrollBehavior","beforeAlign","afterAlign","onInputKeyDown","accessible","fetchingCompletedLabel","fetchingInProgressLabel","slotProps","restProps","deviceType","nativeProps","Fragment","desktop","mobile","select","root","map","label","value","disabled","option"],"mappings":"AAAA;;;;;AAEA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,8BAA8B,QAAQ,sDAA6C;AAE5F,SAASC,YAAY,QAA0B,kCAA+B;AAE9E,SAASC,YAAY,QAAgC,kCAA+B;AAGpF;;CAEC,GACD,OAAO,MAAMC,SAAS;QAA8C,EAClEC,QAAQ,EACRC,SAAS,EAEY,WADlBC;QAFHF;QACAC;;IAGA,MAAM,EACJE,UAAU,EAAE,EACZC,UAAU,EACVC,SAAS,EACTC,aAAa,EACbC,QAAQ,EACRC,cAAc,EACdC,YAAY,EACZC,cAAc,EACdC,QAAQ,EACRC,OAAO,EACPC,MAAM,EACNC,IAAI,EACJC,WAAW,EACXC,gBAAgB,EAChBC,iBAAiB,EACjBC,sBAAsB,EACtBC,iBAAiB,EACjBC,mBAAmB,EACnBC,WAAW,EACXC,eAAe,EACfC,kBAAkB,EAClBC,KAAK,EACLC,IAAI,EACJC,OAAO,EACPC,SAAS,EACTC,SAAS,EACTC,QAAQ,EACRC,iBAAiB,EACjBC,kBAAkB,EAClBC,WAAW,EACXC,UAAU,EACVC,cAAc,EACdC,UAAU,EACVC,sBAAsB,EACtBC,uBAAuB,EAEvBC,SAAS,EAEV,GAAGpC,OADCqC,uCACDrC;QAtCFC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QAEAC;;IAIF,MAAM,EAAEE,UAAU,EAAE,GAAG5C;IAEvB,MAAM6C,cAAyEF;IAE/E,qBACE,MAAC7C,MAAMgD,QAAQ;;YACZF,WAAWG,OAAO,kBACjB,KAAC9C;gBACCI,WAAWN,WAAWM,WAAWuC,WAAWG,OAAO,CAAC1C,SAAS;gBAC7DqC,WAAWA;eACPpC;YAGPsC,WAAWI,MAAM,kBAChB,KAAC9C;gBACCG,WAAWN,WAAWM,WAAWuC,WAAWI,MAAM,CAAC3C,SAAS;gBAC5DqC,WAAW;oBACTO,MAAM,EAAEP,sBAAAA,gCAAAA,UAAWO,MAAM;oBACzBC,IAAI,EAAER,sBAAAA,gCAAAA,UAAWQ,IAAI;gBACvB;eACIL;0BAEHtC,QAAQ4C,GAAG,CAAC,CAAC,EAAEC,KAAK,EAAEC,KAAK,EAAEC,QAAQ,EAAE,iBACtC,KAACC;wBAAOF,OAAOA;wBAAwBC,UAAUA;kCAC9CF;uBADwB,GAAGC,OAAO;;;;AAQjD,EAAE"}
1
+ {"version":3,"sources":["../../../src/components/Select/Select.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivityConditionalRender } from '../../hooks/useAdaptivityConditionalRender';\nimport type { HasDataAttribute, HasOnlyExpectedProps, HasRootRef } from '../../types';\nimport { CustomSelect, type SelectProps } from '../CustomSelect/CustomSelect';\nimport { type CustomSelectOptionInterface } from '../CustomSelect/types';\nimport {\n type NativeHTMLSelectProps,\n NativeSelect,\n type NativeSelectProps,\n} from '../NativeSelect/NativeSelect';\nexport type SelectType = 'default' | 'plain' | 'accent';\n\n/**\n * @see https://vkui.io/components/select\n */\nexport const Select = <OptionT extends CustomSelectOptionInterface>({\n children,\n className,\n ...props\n}: SelectProps<OptionT>): React.ReactNode => {\n const {\n options = [],\n searchable,\n emptyText,\n onInputChange,\n filterFn,\n popupDirection,\n renderOption,\n renderDropdown,\n fetching,\n onClose,\n onOpen,\n icon,\n ClearButton,\n allowClearButton,\n clearButtonTestId,\n dropdownOffsetDistance,\n dropdownAutoWidth,\n forceDropdownPortal,\n noMaxHeight,\n labelTextTestId,\n nativeSelectTestId,\n after,\n mode,\n pattern,\n minLength,\n maxLength,\n readOnly,\n getSelectInputRef,\n overscrollBehavior,\n beforeAlign,\n afterAlign,\n onInputKeyDown,\n accessible,\n fetchingCompletedLabel,\n fetchingInProgressLabel,\n\n slotProps,\n ...restProps\n } = props;\n\n const { deviceType } = useAdaptivityConditionalRender();\n\n const nativeProps: HasOnlyExpectedProps<typeof restProps, NativeSelectProps> = restProps;\n\n return (\n <React.Fragment>\n {deviceType.desktop && (\n <CustomSelect\n className={classNames(className, deviceType.desktop.className)}\n slotProps={slotProps}\n {...props}\n />\n )}\n {deviceType.mobile && (\n <NativeSelect\n className={classNames(className, deviceType.mobile.className)}\n slotProps={{\n select: {\n ...(slotProps?.input as NativeHTMLSelectProps &\n HasRootRef<HTMLSelectElement> &\n HasDataAttribute),\n ...slotProps?.select,\n },\n root: slotProps?.root,\n }}\n {...nativeProps}\n >\n {options.map(({ label, value, disabled }) => (\n <option value={value} key={`${value}`} disabled={disabled}>\n {label}\n </option>\n ))}\n </NativeSelect>\n )}\n </React.Fragment>\n );\n};\n"],"names":["React","classNames","useAdaptivityConditionalRender","CustomSelect","NativeSelect","Select","children","className","props","options","searchable","emptyText","onInputChange","filterFn","popupDirection","renderOption","renderDropdown","fetching","onClose","onOpen","icon","ClearButton","allowClearButton","clearButtonTestId","dropdownOffsetDistance","dropdownAutoWidth","forceDropdownPortal","noMaxHeight","labelTextTestId","nativeSelectTestId","after","mode","pattern","minLength","maxLength","readOnly","getSelectInputRef","overscrollBehavior","beforeAlign","afterAlign","onInputKeyDown","accessible","fetchingCompletedLabel","fetchingInProgressLabel","slotProps","restProps","deviceType","nativeProps","Fragment","desktop","mobile","select","input","root","map","label","value","disabled","option"],"mappings":"AAAA;;;;;AAEA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,8BAA8B,QAAQ,sDAA6C;AAE5F,SAASC,YAAY,QAA0B,kCAA+B;AAE9E,SAEEC,YAAY,QAEP,kCAA+B;AAGtC;;CAEC,GACD,OAAO,MAAMC,SAAS;QAA8C,EAClEC,QAAQ,EACRC,SAAS,EAEY,WADlBC;QAFHF;QACAC;;IAGA,MAAM,EACJE,UAAU,EAAE,EACZC,UAAU,EACVC,SAAS,EACTC,aAAa,EACbC,QAAQ,EACRC,cAAc,EACdC,YAAY,EACZC,cAAc,EACdC,QAAQ,EACRC,OAAO,EACPC,MAAM,EACNC,IAAI,EACJC,WAAW,EACXC,gBAAgB,EAChBC,iBAAiB,EACjBC,sBAAsB,EACtBC,iBAAiB,EACjBC,mBAAmB,EACnBC,WAAW,EACXC,eAAe,EACfC,kBAAkB,EAClBC,KAAK,EACLC,IAAI,EACJC,OAAO,EACPC,SAAS,EACTC,SAAS,EACTC,QAAQ,EACRC,iBAAiB,EACjBC,kBAAkB,EAClBC,WAAW,EACXC,UAAU,EACVC,cAAc,EACdC,UAAU,EACVC,sBAAsB,EACtBC,uBAAuB,EAEvBC,SAAS,EAEV,GAAGpC,OADCqC,uCACDrC;QAtCFC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QAEAC;;IAIF,MAAM,EAAEE,UAAU,EAAE,GAAG5C;IAEvB,MAAM6C,cAAyEF;IAE/E,qBACE,MAAC7C,MAAMgD,QAAQ;;YACZF,WAAWG,OAAO,kBACjB,KAAC9C;gBACCI,WAAWN,WAAWM,WAAWuC,WAAWG,OAAO,CAAC1C,SAAS;gBAC7DqC,WAAWA;eACPpC;YAGPsC,WAAWI,MAAM,kBAChB,KAAC9C;gBACCG,WAAWN,WAAWM,WAAWuC,WAAWI,MAAM,CAAC3C,SAAS;gBAC5DqC,WAAW;oBACTO,QAAQ,mBACFP,sBAAAA,gCAAAA,UAAWQ,KAAK,EAGjBR,sBAAAA,gCAAAA,UAAWO,MAAM;oBAEtBE,IAAI,EAAET,sBAAAA,gCAAAA,UAAWS,IAAI;gBACvB;eACIN;0BAEHtC,QAAQ6C,GAAG,CAAC,CAAC,EAAEC,KAAK,EAAEC,KAAK,EAAEC,QAAQ,EAAE,iBACtC,KAACC;wBAAOF,OAAOA;wBAAwBC,UAAUA;kCAC9CF;uBADwB,GAAGC,OAAO;;;;AAQjD,EAAE"}
@@ -11,7 +11,7 @@ export interface WriteBarProps extends React.TextareaHTMLAttributes<HTMLTextArea
11
11
  * - `textArea`: свойства для прокидывания в поле ввода.
12
12
  */
13
13
  slotProps?: {
14
- root?: React.HTMLAttributes<HTMLElement> & HasRootRef<HTMLElement> & HasDataAttribute;
14
+ root?: Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> & HasRootRef<HTMLDivElement> & HasDataAttribute;
15
15
  textArea?: React.TextareaHTMLAttributes<HTMLTextAreaElement> & HasRootRef<HTMLTextAreaElement> & HasDataAttribute;
16
16
  };
17
17
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"WriteBar.d.ts","sourceRoot":"","sources":["../../../src/components/WriteBar/WriteBar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAUhE,MAAM,WAAW,aACf,SAAQ,KAAK,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,EACvD,UAAU,CAAC,cAAc,CAAC;IAC5B;;OAEG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACxC;;;;OAIG;IACH,SAAS,CAAC,EAAE;QACV,IAAI,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,gBAAgB,CAAC;QACtF,QAAQ,CAAC,EAAE,KAAK,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,GAC1D,UAAU,CAAC,mBAAmB,CAAC,GAC/B,gBAAgB,CAAC;KACpB,CAAC;IACF;;OAEG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB;;OAEG;IACH,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB;;OAEG;IACH,cAAc,CAAC,EAAE,YAAY,CAAC;IAC9B;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC;CAClB;AAYD;;GAEG;AACH,eAAO,MAAM,QAAQ,GAAI,uHAatB,aAAa,KAAG,KAAK,CAAC,SA6DxB,CAAC"}
1
+ {"version":3,"file":"WriteBar.d.ts","sourceRoot":"","sources":["../../../src/components/WriteBar/WriteBar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAUhE,MAAM,WAAW,aACf,SAAQ,KAAK,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,EACvD,UAAU,CAAC,cAAc,CAAC;IAC5B;;OAEG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACxC;;;;OAIG;IACH,SAAS,CAAC,EAAE;QACV,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC,GAC3D,UAAU,CAAC,cAAc,CAAC,GAC1B,gBAAgB,CAAC;QACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,GAC1D,UAAU,CAAC,mBAAmB,CAAC,GAC/B,gBAAgB,CAAC;KACpB,CAAC;IACF;;OAEG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB;;OAEG;IACH,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB;;OAEG;IACH,cAAc,CAAC,EAAE,YAAY,CAAC;IAC9B;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC;CAClB;AAYD;;GAEG;AACH,eAAO,MAAM,QAAQ,GAAI,uHAatB,aAAa,KAAG,KAAK,CAAC,SA6DxB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/WriteBar/WriteBar.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { classNames, hasReactNode } from '@vkontakte/vkjs';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { useMergeProps } from '../../hooks/useMergeProps';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { callMultiple } from '../../lib/callMultiple';\nimport { warnOnce } from '../../lib/warnOnce';\nimport type { HasDataAttribute, HasRootRef } from '../../types';\nimport { RootComponent } from '../RootComponent/RootComponent';\nimport { useResizeTextarea } from '../Textarea/useResizeTextarea';\nimport { Headline } from '../Typography/Headline/Headline';\nimport { Title } from '../Typography/Title/Title';\nimport type { TypographyProps } from '../Typography/Typography';\nimport styles from './WriteBar.module.css';\n\nconst warn = warnOnce('WriteBar');\n\nexport interface WriteBarProps\n extends React.TextareaHTMLAttributes<HTMLTextAreaElement>,\n HasRootRef<HTMLDivElement> {\n /**\n * @deprecated Since 7.9.0. Вместо этого используйте `slotProps={ textArea: { getRootRef: ... } }`.\n */\n getRef?: React.Ref<HTMLTextAreaElement>;\n /**\n * Свойства, которые можно прокинуть внутрь компонента:\n * - `root`: свойства для прокидывания в корень компонента;\n * - `textArea`: свойства для прокидывания в поле ввода.\n */\n slotProps?: {\n root?: React.HTMLAttributes<HTMLElement> & HasRootRef<HTMLElement> & HasDataAttribute;\n textArea?: React.TextareaHTMLAttributes<HTMLTextAreaElement> &\n HasRootRef<HTMLTextAreaElement> &\n HasDataAttribute;\n };\n /**\n * Содержимое, отображаемое слева от поля ввода.\n */\n before?: React.ReactNode;\n /**\n * Содержимое, отображаемое поверх поля ввода (актуально для iOS).\n */\n inlineAfter?: React.ReactNode;\n /**\n * Содержимое, отображаемое справа от поля ввода.\n */\n after?: React.ReactNode;\n /**\n * Вызывается при смене высоты поля ввода.\n */\n onHeightChange?: VoidFunction;\n /**\n * Добавляет тень вокруг поля ввода.\n */\n shadow?: boolean;\n /**\n * @deprecated Неиспользуемое свойство.\n */\n children?: never;\n}\n\nconst WriteBarTypography = (props: TypographyProps) => {\n const platform = usePlatform();\n\n if (platform === 'ios') {\n return <Title {...props} level=\"3\" weight=\"3\" />;\n }\n\n return <Headline weight=\"3\" {...props} />;\n};\n\n/**\n * @see https://vkui.io/components/write-bar\n */\nexport const WriteBar = ({\n className,\n style,\n before,\n inlineAfter,\n after,\n getRootRef,\n getRef,\n onHeightChange,\n shadow = false,\n\n slotProps,\n ...restProps\n}: WriteBarProps): React.ReactNode => {\n /* istanbul ignore if: не проверяем в тестах */\n if (process.env.NODE_ENV === 'development' && getRef) {\n warn('Свойство `getRef` устаревшее, используйте `slotProps={ textArea: { getRootRef: ... } }`');\n }\n\n const platform = usePlatform();\n\n const rootProps = useMergeProps(\n {\n className,\n getRootRef,\n style,\n },\n slotProps?.root,\n );\n\n const {\n onChange,\n getRootRef: getTextAreaRef,\n ...textAreaRest\n } = useMergeProps(\n {\n className: styles.textarea,\n getRootRef: getRef,\n ...restProps,\n },\n slotProps?.textArea,\n );\n\n const [refResizeTextarea, resize] = useResizeTextarea(onHeightChange, true);\n const textareaRef = useExternRef(getTextAreaRef, refResizeTextarea);\n\n React.useEffect(resize, [resize, platform]);\n\n return (\n <RootComponent\n baseClassName={classNames(\n styles.host,\n platform === 'ios' && styles.ios,\n shadow && styles.shadow,\n )}\n {...rootProps}\n >\n <div className={styles.form}>\n {hasReactNode(before) && <div className={styles.before}>{before}</div>}\n\n <div className={styles.formIn}>\n <WriteBarTypography\n Component=\"textarea\"\n onChange={callMultiple(onChange, resize)}\n getRootRef={textareaRef}\n {...textAreaRest}\n />\n {hasReactNode(inlineAfter) && <div className={styles.inlineAfter}>{inlineAfter}</div>}\n </div>\n\n {hasReactNode(after) && <div className={styles.after}>{after}</div>}\n </div>\n </RootComponent>\n );\n};\n"],"names":["React","classNames","hasReactNode","useExternRef","useMergeProps","usePlatform","callMultiple","warnOnce","RootComponent","useResizeTextarea","Headline","Title","warn","WriteBarTypography","props","platform","level","weight","WriteBar","className","style","before","inlineAfter","after","getRootRef","getRef","onHeightChange","shadow","slotProps","restProps","process","env","NODE_ENV","rootProps","root","textArea","onChange","getTextAreaRef","textAreaRest","refResizeTextarea","resize","textareaRef","useEffect","baseClassName","div","Component"],"mappings":"AAAA;;;;;AAEA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,EAAEC,YAAY,QAAQ,kBAAkB;AAC3D,SAASC,YAAY,QAAQ,8BAA2B;AACxD,SAASC,aAAa,QAAQ,+BAA4B;AAC1D,SAASC,WAAW,QAAQ,6BAA0B;AACtD,SAASC,YAAY,QAAQ,4BAAyB;AACtD,SAASC,QAAQ,QAAQ,wBAAqB;AAE9C,SAASC,aAAa,QAAQ,oCAAiC;AAC/D,SAASC,iBAAiB,QAAQ,mCAAgC;AAClE,SAASC,QAAQ,QAAQ,qCAAkC;AAC3D,SAASC,KAAK,QAAQ,+BAA4B;AAIlD,MAAMC,OAAOL,SAAS;AA8CtB,MAAMM,qBAAqB,CAACC;IAC1B,MAAMC,WAAWV;IAEjB,IAAIU,aAAa,OAAO;QACtB,qBAAO,KAACJ,+CAAUG;YAAOE,OAAM;YAAIC,QAAO;;IAC5C;IAEA,qBAAO,KAACP;QAASO,QAAO;OAAQH;AAClC;AAEA;;CAEC,GACD,OAAO,MAAMI,WAAW;QAAC,EACvBC,SAAS,EACTC,KAAK,EACLC,MAAM,EACNC,WAAW,EACXC,KAAK,EACLC,UAAU,EACVC,MAAM,EACNC,cAAc,EACdC,SAAS,KAAK,EAEdC,SAAS,EAEK,WADXC;QAXHV;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QAEAC;;IAGA,6CAA6C,GAC7C,IAAIE,QAAQC,GAAG,CAACC,QAAQ,KAAK,iBAAiBP,QAAQ;QACpDb,KAAK;IACP;IAEA,MAAMG,WAAWV;IAEjB,MAAM4B,YAAY7B,cAChB;QACEe;QACAK;QACAJ;IACF,GACAQ,sBAAAA,gCAAAA,UAAWM,IAAI;IAGjB,MAII9B,iBAAAA,cACF;QACEe,SAAS;QACTK,YAAYC;OACTI,YAELD,sBAAAA,gCAAAA,UAAWO,QAAQ,GAVf,EACJC,QAAQ,EACRZ,YAAYa,cAAc,EAE3B,GAAGjC,gBADCkC,0CACDlC;QAHFgC;QACAZ;;IAWF,MAAM,CAACe,mBAAmBC,OAAO,GAAG/B,kBAAkBiB,gBAAgB;IACtE,MAAMe,cAActC,aAAakC,gBAAgBE;IAEjDvC,MAAM0C,SAAS,CAACF,QAAQ;QAACA;QAAQzB;KAAS;IAE1C,qBACE,KAACP;QACCmC,eAAe1C,iCAEbc,aAAa,8BACbY;OAEEM;kBAEJ,cAAA,MAACW;YAAIzB,SAAS;;gBACXjB,aAAamB,yBAAW,KAACuB;oBAAIzB,SAAS;8BAAkBE;;8BAEzD,MAACuB;oBAAIzB,SAAS;;sCACZ,KAACN;4BACCgC,WAAU;4BACVT,UAAU9B,aAAa8B,UAAUI;4BACjChB,YAAYiB;2BACRH;wBAELpC,aAAaoB,8BAAgB,KAACsB;4BAAIzB,SAAS;sCAAuBG;;;;gBAGpEpB,aAAaqB,wBAAU,KAACqB;oBAAIzB,SAAS;8BAAiBI;;;;;AAI/D,EAAE"}
1
+ {"version":3,"sources":["../../../src/components/WriteBar/WriteBar.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { classNames, hasReactNode } from '@vkontakte/vkjs';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { useMergeProps } from '../../hooks/useMergeProps';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { callMultiple } from '../../lib/callMultiple';\nimport { warnOnce } from '../../lib/warnOnce';\nimport type { HasDataAttribute, HasRootRef } from '../../types';\nimport { RootComponent } from '../RootComponent/RootComponent';\nimport { useResizeTextarea } from '../Textarea/useResizeTextarea';\nimport { Headline } from '../Typography/Headline/Headline';\nimport { Title } from '../Typography/Title/Title';\nimport type { TypographyProps } from '../Typography/Typography';\nimport styles from './WriteBar.module.css';\n\nconst warn = warnOnce('WriteBar');\n\nexport interface WriteBarProps\n extends React.TextareaHTMLAttributes<HTMLTextAreaElement>,\n HasRootRef<HTMLDivElement> {\n /**\n * @deprecated Since 7.9.0. Вместо этого используйте `slotProps={ textArea: { getRootRef: ... } }`.\n */\n getRef?: React.Ref<HTMLTextAreaElement>;\n /**\n * Свойства, которые можно прокинуть внутрь компонента:\n * - `root`: свойства для прокидывания в корень компонента;\n * - `textArea`: свойства для прокидывания в поле ввода.\n */\n slotProps?: {\n root?: Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> &\n HasRootRef<HTMLDivElement> &\n HasDataAttribute;\n textArea?: React.TextareaHTMLAttributes<HTMLTextAreaElement> &\n HasRootRef<HTMLTextAreaElement> &\n HasDataAttribute;\n };\n /**\n * Содержимое, отображаемое слева от поля ввода.\n */\n before?: React.ReactNode;\n /**\n * Содержимое, отображаемое поверх поля ввода (актуально для iOS).\n */\n inlineAfter?: React.ReactNode;\n /**\n * Содержимое, отображаемое справа от поля ввода.\n */\n after?: React.ReactNode;\n /**\n * Вызывается при смене высоты поля ввода.\n */\n onHeightChange?: VoidFunction;\n /**\n * Добавляет тень вокруг поля ввода.\n */\n shadow?: boolean;\n /**\n * @deprecated Неиспользуемое свойство.\n */\n children?: never;\n}\n\nconst WriteBarTypography = (props: TypographyProps) => {\n const platform = usePlatform();\n\n if (platform === 'ios') {\n return <Title {...props} level=\"3\" weight=\"3\" />;\n }\n\n return <Headline weight=\"3\" {...props} />;\n};\n\n/**\n * @see https://vkui.io/components/write-bar\n */\nexport const WriteBar = ({\n className,\n style,\n before,\n inlineAfter,\n after,\n getRootRef,\n getRef,\n onHeightChange,\n shadow = false,\n\n slotProps,\n ...restProps\n}: WriteBarProps): React.ReactNode => {\n /* istanbul ignore if: не проверяем в тестах */\n if (process.env.NODE_ENV === 'development' && getRef) {\n warn('Свойство `getRef` устаревшее, используйте `slotProps={ textArea: { getRootRef: ... } }`');\n }\n\n const platform = usePlatform();\n\n const rootProps = useMergeProps(\n {\n className,\n getRootRef,\n style,\n },\n slotProps?.root,\n );\n\n const {\n onChange,\n getRootRef: getTextAreaRef,\n ...textAreaRest\n } = useMergeProps(\n {\n className: styles.textarea,\n getRootRef: getRef,\n ...restProps,\n },\n slotProps?.textArea,\n );\n\n const [refResizeTextarea, resize] = useResizeTextarea(onHeightChange, true);\n const textareaRef = useExternRef(getTextAreaRef, refResizeTextarea);\n\n React.useEffect(resize, [resize, platform]);\n\n return (\n <RootComponent\n baseClassName={classNames(\n styles.host,\n platform === 'ios' && styles.ios,\n shadow && styles.shadow,\n )}\n {...rootProps}\n >\n <div className={styles.form}>\n {hasReactNode(before) && <div className={styles.before}>{before}</div>}\n\n <div className={styles.formIn}>\n <WriteBarTypography\n Component=\"textarea\"\n onChange={callMultiple(onChange, resize)}\n getRootRef={textareaRef}\n {...textAreaRest}\n />\n {hasReactNode(inlineAfter) && <div className={styles.inlineAfter}>{inlineAfter}</div>}\n </div>\n\n {hasReactNode(after) && <div className={styles.after}>{after}</div>}\n </div>\n </RootComponent>\n );\n};\n"],"names":["React","classNames","hasReactNode","useExternRef","useMergeProps","usePlatform","callMultiple","warnOnce","RootComponent","useResizeTextarea","Headline","Title","warn","WriteBarTypography","props","platform","level","weight","WriteBar","className","style","before","inlineAfter","after","getRootRef","getRef","onHeightChange","shadow","slotProps","restProps","process","env","NODE_ENV","rootProps","root","textArea","onChange","getTextAreaRef","textAreaRest","refResizeTextarea","resize","textareaRef","useEffect","baseClassName","div","Component"],"mappings":"AAAA;;;;;AAEA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,EAAEC,YAAY,QAAQ,kBAAkB;AAC3D,SAASC,YAAY,QAAQ,8BAA2B;AACxD,SAASC,aAAa,QAAQ,+BAA4B;AAC1D,SAASC,WAAW,QAAQ,6BAA0B;AACtD,SAASC,YAAY,QAAQ,4BAAyB;AACtD,SAASC,QAAQ,QAAQ,wBAAqB;AAE9C,SAASC,aAAa,QAAQ,oCAAiC;AAC/D,SAASC,iBAAiB,QAAQ,mCAAgC;AAClE,SAASC,QAAQ,QAAQ,qCAAkC;AAC3D,SAASC,KAAK,QAAQ,+BAA4B;AAIlD,MAAMC,OAAOL,SAAS;AAgDtB,MAAMM,qBAAqB,CAACC;IAC1B,MAAMC,WAAWV;IAEjB,IAAIU,aAAa,OAAO;QACtB,qBAAO,KAACJ,+CAAUG;YAAOE,OAAM;YAAIC,QAAO;;IAC5C;IAEA,qBAAO,KAACP;QAASO,QAAO;OAAQH;AAClC;AAEA;;CAEC,GACD,OAAO,MAAMI,WAAW;QAAC,EACvBC,SAAS,EACTC,KAAK,EACLC,MAAM,EACNC,WAAW,EACXC,KAAK,EACLC,UAAU,EACVC,MAAM,EACNC,cAAc,EACdC,SAAS,KAAK,EAEdC,SAAS,EAEK,WADXC;QAXHV;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QAEAC;;IAGA,6CAA6C,GAC7C,IAAIE,QAAQC,GAAG,CAACC,QAAQ,KAAK,iBAAiBP,QAAQ;QACpDb,KAAK;IACP;IAEA,MAAMG,WAAWV;IAEjB,MAAM4B,YAAY7B,cAChB;QACEe;QACAK;QACAJ;IACF,GACAQ,sBAAAA,gCAAAA,UAAWM,IAAI;IAGjB,MAII9B,iBAAAA,cACF;QACEe,SAAS;QACTK,YAAYC;OACTI,YAELD,sBAAAA,gCAAAA,UAAWO,QAAQ,GAVf,EACJC,QAAQ,EACRZ,YAAYa,cAAc,EAE3B,GAAGjC,gBADCkC,0CACDlC;QAHFgC;QACAZ;;IAWF,MAAM,CAACe,mBAAmBC,OAAO,GAAG/B,kBAAkBiB,gBAAgB;IACtE,MAAMe,cAActC,aAAakC,gBAAgBE;IAEjDvC,MAAM0C,SAAS,CAACF,QAAQ;QAACA;QAAQzB;KAAS;IAE1C,qBACE,KAACP;QACCmC,eAAe1C,iCAEbc,aAAa,8BACbY;OAEEM;kBAEJ,cAAA,MAACW;YAAIzB,SAAS;;gBACXjB,aAAamB,yBAAW,KAACuB;oBAAIzB,SAAS;8BAAkBE;;8BAEzD,MAACuB;oBAAIzB,SAAS;;sCACZ,KAACN;4BACCgC,WAAU;4BACVT,UAAU9B,aAAa8B,UAAUI;4BACjChB,YAAYiB;2BACRH;wBAELpC,aAAaoB,8BAAgB,KAACsB;4BAAIzB,SAAS;sCAAuBG;;;;gBAGpEpB,aAAaqB,wBAAU,KAACqB;oBAAIzB,SAAS;8BAAiBI;;;;;AAI/D,EAAE"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/Checkbox/Checkbox.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { hasReactNode } from '@vkontakte/vkjs';\nimport { useMergeProps } from '../../hooks/useMergeProps';\nimport { warnOnce } from '../../lib/warnOnce';\nimport type { HasDataAttribute, HasRootRef } from '../../types';\nimport { SelectionControl } from '../SelectionControl/SelectionControl';\nimport { SelectionControlLabel } from '../SelectionControl/SelectionControlLabel/SelectionControlLabel';\nimport type { TappableOmitProps } from '../Tappable/Tappable';\nimport { CheckboxInput, type CheckboxInputProps } from './CheckboxInput/CheckboxInput';\nimport { CheckboxSimple } from './CheckboxSimple/CheckboxSimple';\n\nconst warn = warnOnce('Checkbox');\n\nexport interface CheckboxProps\n extends Omit<CheckboxInputProps, 'getRootRef'>,\n HasRootRef<HTMLLabelElement>,\n Pick<\n TappableOmitProps,\n 'hoverMode' | 'activeMode' | 'hasHover' | 'hasActive' | 'focusVisibleMode'\n > {\n /**\n * Свойства, которые можно прокинуть внутрь компонента:\n * - `root`: свойства для прокидывания в корень компонента;\n * - `input`: свойства для прокидывания в скрытый `input`.\n */\n slotProps?: {\n root?: Omit<React.LabelHTMLAttributes<HTMLLabelElement>, 'children'> &\n HasRootRef<HTMLLabelElement> &\n HasDataAttribute;\n input?: React.ComponentProps<'input'> & HasRootRef<HTMLInputElement> & HasDataAttribute;\n };\n /**\n * Подпись под основным текстом.\n */\n description?: React.ReactNode;\n /**\n * Контент, идущий за основным текстом.\n */\n titleAfter?: React.ReactNode;\n /**\n * Отключает отступы у чекбокса. При использовании этого свойства, значение по умолчанию для свойств `hoverMode` и `activeMode` становится `\"opacity\"`.\n */\n noPadding?: boolean;\n}\n\nconst CheckboxComponent = ({\n children,\n className,\n style,\n getRootRef,\n getRef,\n description,\n hoverMode,\n activeMode,\n hasHover,\n hasActive,\n focusVisibleMode,\n titleAfter,\n noPadding,\n\n indeterminate,\n defaultIndeterminate,\n IconOnCompact,\n IconOnRegular,\n IconOffCompact,\n IconOffRegular,\n IconIndeterminate,\n\n slotProps,\n ...restProps\n}: CheckboxProps): React.ReactNode => {\n const rootRest = useMergeProps(\n {\n className,\n style,\n getRootRef,\n },\n slotProps?.root,\n );\n\n const inputRest = useMergeProps({ getRootRef: getRef, ...restProps }, slotProps?.input);\n\n return (\n <SelectionControl\n disabled={inputRest.disabled}\n hoverMode={hoverMode}\n activeMode={activeMode}\n hasHover={hasHover}\n hasActive={hasActive}\n focusVisibleMode={focusVisibleMode}\n noPadding={noPadding}\n {...rootRest}\n >\n <CheckboxInput\n indeterminate={indeterminate}\n defaultIndeterminate={defaultIndeterminate}\n IconIndeterminate={IconIndeterminate}\n IconOnCompact={IconOnCompact}\n IconOnRegular={IconOnRegular}\n IconOffCompact={IconOffCompact}\n IconOffRegular={IconOffRegular}\n slotProps={{ input: inputRest }}\n />\n <SelectionControlLabel titleAfter={titleAfter} description={description}>\n {children}\n </SelectionControlLabel>\n </SelectionControl>\n );\n};\n\n/**\n * @see https://vkui.io/components/checkbox\n */\nexport const Checkbox = (props: CheckboxProps): React.ReactNode => {\n if (process.env.NODE_ENV === 'development' && props.getRef) {\n warn('Свойство `getRef` устаревшее, используйте `slotProps={ input: { getRootRef: ... } }`');\n }\n\n const simple = !(hasReactNode(props.children) || hasReactNode(props.description));\n if (simple) {\n return <CheckboxSimple {...props} />;\n }\n\n return <CheckboxComponent {...props} />;\n};\n\nCheckbox.Input = CheckboxInput;\n"],"names":["React","hasReactNode","useMergeProps","warnOnce","SelectionControl","SelectionControlLabel","CheckboxInput","CheckboxSimple","warn","CheckboxComponent","children","className","style","getRootRef","getRef","description","hoverMode","activeMode","hasHover","hasActive","focusVisibleMode","titleAfter","noPadding","indeterminate","defaultIndeterminate","IconOnCompact","IconOnRegular","IconOffCompact","IconOffRegular","IconIndeterminate","slotProps","restProps","rootRest","root","inputRest","input","disabled","Checkbox","props","process","env","NODE_ENV","simple","Input"],"mappings":"AAAA;;AAEA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,YAAY,QAAQ,kBAAkB;AAC/C,SAASC,aAAa,QAAQ,+BAA4B;AAC1D,SAASC,QAAQ,QAAQ,wBAAqB;AAE9C,SAASC,gBAAgB,QAAQ,0CAAuC;AACxE,SAASC,qBAAqB,QAAQ,qEAAkE;AAExG,SAASC,aAAa,QAAiC,mCAAgC;AACvF,SAASC,cAAc,QAAQ,qCAAkC;AAEjE,MAAMC,OAAOL,SAAS;AAkCtB,MAAMM,oBAAoB,CAAC,EACzBC,QAAQ,EACRC,SAAS,EACTC,KAAK,EACLC,UAAU,EACVC,MAAM,EACNC,WAAW,EACXC,SAAS,EACTC,UAAU,EACVC,QAAQ,EACRC,SAAS,EACTC,gBAAgB,EAChBC,UAAU,EACVC,SAAS,EAETC,aAAa,EACbC,oBAAoB,EACpBC,aAAa,EACbC,aAAa,EACbC,cAAc,EACdC,cAAc,EACdC,iBAAiB,EAEjBC,SAAS,EACT,GAAGC,WACW;IACd,MAAMC,WAAW9B,cACf;QACES;QACAC;QACAC;IACF,GACAiB,WAAWG;IAGb,MAAMC,YAAYhC,cAAc;QAAEW,YAAYC;QAAQ,GAAGiB,SAAS;IAAC,GAAGD,WAAWK;IAEjF,qBACE,MAAC/B;QACCgC,UAAUF,UAAUE,QAAQ;QAC5BpB,WAAWA;QACXC,YAAYA;QACZC,UAAUA;QACVC,WAAWA;QACXC,kBAAkBA;QAClBE,WAAWA;QACV,GAAGU,QAAQ;;0BAEZ,KAAC1B;gBACCiB,eAAeA;gBACfC,sBAAsBA;gBACtBK,mBAAmBA;gBACnBJ,eAAeA;gBACfC,eAAeA;gBACfC,gBAAgBA;gBAChBC,gBAAgBA;gBAChBE,WAAW;oBAAEK,OAAOD;gBAAU;;0BAEhC,KAAC7B;gBAAsBgB,YAAYA;gBAAYN,aAAaA;0BACzDL;;;;AAIT;AAEA;;CAEC,GACD,OAAO,MAAM2B,WAAW,CAACC;IACvB,IAAIC,QAAQC,GAAG,CAACC,QAAQ,KAAK,iBAAiBH,MAAMxB,MAAM,EAAE;QAC1DN,KAAK;IACP;IAEA,MAAMkC,SAAS,CAAEzC,CAAAA,aAAaqC,MAAM5B,QAAQ,KAAKT,aAAaqC,MAAMvB,WAAW,CAAA;IAC/E,IAAI2B,QAAQ;QACV,qBAAO,KAACnC;YAAgB,GAAG+B,KAAK;;IAClC;IAEA,qBAAO,KAAC7B;QAAmB,GAAG6B,KAAK;;AACrC,EAAE;AAEFD,SAASM,KAAK,GAAGrC"}
1
+ {"version":3,"sources":["../../../../src/components/Checkbox/Checkbox.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { hasReactNode } from '@vkontakte/vkjs';\nimport { useMergeProps } from '../../hooks/useMergeProps';\nimport { warnOnce } from '../../lib/warnOnce';\nimport type { HasDataAttribute, HasRootRef } from '../../types';\nimport { SelectionControl } from '../SelectionControl/SelectionControl';\nimport { SelectionControlLabel } from '../SelectionControl/SelectionControlLabel/SelectionControlLabel';\nimport type { TappableOmitProps } from '../Tappable/Tappable';\nimport { CheckboxInput, type CheckboxInputProps } from './CheckboxInput/CheckboxInput';\nimport { CheckboxSimple } from './CheckboxSimple/CheckboxSimple';\n\nconst warn = warnOnce('Checkbox');\n\nexport interface CheckboxProps\n extends Omit<CheckboxInputProps, 'getRootRef' | 'slotProps'>,\n HasRootRef<HTMLLabelElement>,\n Pick<\n TappableOmitProps,\n 'hoverMode' | 'activeMode' | 'hasHover' | 'hasActive' | 'focusVisibleMode'\n > {\n /**\n * Свойства, которые можно прокинуть внутрь компонента:\n * - `root`: свойства для прокидывания в корень компонента;\n * - `input`: свойства для прокидывания в скрытый `input`.\n */\n slotProps?: {\n root?: Omit<React.LabelHTMLAttributes<HTMLLabelElement>, 'children'> &\n HasRootRef<HTMLLabelElement> &\n HasDataAttribute;\n input?: React.ComponentProps<'input'> & HasRootRef<HTMLInputElement> & HasDataAttribute;\n };\n /**\n * Подпись под основным текстом.\n */\n description?: React.ReactNode;\n /**\n * Контент, идущий за основным текстом.\n */\n titleAfter?: React.ReactNode;\n /**\n * Отключает отступы у чекбокса. При использовании этого свойства, значение по умолчанию для свойств `hoverMode` и `activeMode` становится `\"opacity\"`.\n */\n noPadding?: boolean;\n}\n\nconst CheckboxComponent = ({\n children,\n className,\n style,\n getRootRef,\n getRef,\n description,\n hoverMode,\n activeMode,\n hasHover,\n hasActive,\n focusVisibleMode,\n titleAfter,\n noPadding,\n\n indeterminate,\n defaultIndeterminate,\n IconOnCompact,\n IconOnRegular,\n IconOffCompact,\n IconOffRegular,\n IconIndeterminate,\n\n slotProps,\n ...restProps\n}: CheckboxProps): React.ReactNode => {\n const rootRest = useMergeProps(\n {\n className,\n style,\n getRootRef,\n },\n slotProps?.root,\n );\n\n const inputRest = useMergeProps({ getRootRef: getRef, ...restProps }, slotProps?.input);\n\n return (\n <SelectionControl\n disabled={inputRest.disabled}\n hoverMode={hoverMode}\n activeMode={activeMode}\n hasHover={hasHover}\n hasActive={hasActive}\n focusVisibleMode={focusVisibleMode}\n noPadding={noPadding}\n {...rootRest}\n >\n <CheckboxInput\n indeterminate={indeterminate}\n defaultIndeterminate={defaultIndeterminate}\n IconIndeterminate={IconIndeterminate}\n IconOnCompact={IconOnCompact}\n IconOnRegular={IconOnRegular}\n IconOffCompact={IconOffCompact}\n IconOffRegular={IconOffRegular}\n slotProps={{ input: inputRest }}\n />\n <SelectionControlLabel titleAfter={titleAfter} description={description}>\n {children}\n </SelectionControlLabel>\n </SelectionControl>\n );\n};\n\n/**\n * @see https://vkui.io/components/checkbox\n */\nexport const Checkbox = (props: CheckboxProps): React.ReactNode => {\n if (process.env.NODE_ENV === 'development' && props.getRef) {\n warn('Свойство `getRef` устаревшее, используйте `slotProps={ input: { getRootRef: ... } }`');\n }\n\n const simple = !(hasReactNode(props.children) || hasReactNode(props.description));\n if (simple) {\n return <CheckboxSimple {...props} />;\n }\n\n return <CheckboxComponent {...props} />;\n};\n\nCheckbox.Input = CheckboxInput;\n"],"names":["React","hasReactNode","useMergeProps","warnOnce","SelectionControl","SelectionControlLabel","CheckboxInput","CheckboxSimple","warn","CheckboxComponent","children","className","style","getRootRef","getRef","description","hoverMode","activeMode","hasHover","hasActive","focusVisibleMode","titleAfter","noPadding","indeterminate","defaultIndeterminate","IconOnCompact","IconOnRegular","IconOffCompact","IconOffRegular","IconIndeterminate","slotProps","restProps","rootRest","root","inputRest","input","disabled","Checkbox","props","process","env","NODE_ENV","simple","Input"],"mappings":"AAAA;;AAEA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,YAAY,QAAQ,kBAAkB;AAC/C,SAASC,aAAa,QAAQ,+BAA4B;AAC1D,SAASC,QAAQ,QAAQ,wBAAqB;AAE9C,SAASC,gBAAgB,QAAQ,0CAAuC;AACxE,SAASC,qBAAqB,QAAQ,qEAAkE;AAExG,SAASC,aAAa,QAAiC,mCAAgC;AACvF,SAASC,cAAc,QAAQ,qCAAkC;AAEjE,MAAMC,OAAOL,SAAS;AAkCtB,MAAMM,oBAAoB,CAAC,EACzBC,QAAQ,EACRC,SAAS,EACTC,KAAK,EACLC,UAAU,EACVC,MAAM,EACNC,WAAW,EACXC,SAAS,EACTC,UAAU,EACVC,QAAQ,EACRC,SAAS,EACTC,gBAAgB,EAChBC,UAAU,EACVC,SAAS,EAETC,aAAa,EACbC,oBAAoB,EACpBC,aAAa,EACbC,aAAa,EACbC,cAAc,EACdC,cAAc,EACdC,iBAAiB,EAEjBC,SAAS,EACT,GAAGC,WACW;IACd,MAAMC,WAAW9B,cACf;QACES;QACAC;QACAC;IACF,GACAiB,WAAWG;IAGb,MAAMC,YAAYhC,cAAc;QAAEW,YAAYC;QAAQ,GAAGiB,SAAS;IAAC,GAAGD,WAAWK;IAEjF,qBACE,MAAC/B;QACCgC,UAAUF,UAAUE,QAAQ;QAC5BpB,WAAWA;QACXC,YAAYA;QACZC,UAAUA;QACVC,WAAWA;QACXC,kBAAkBA;QAClBE,WAAWA;QACV,GAAGU,QAAQ;;0BAEZ,KAAC1B;gBACCiB,eAAeA;gBACfC,sBAAsBA;gBACtBK,mBAAmBA;gBACnBJ,eAAeA;gBACfC,eAAeA;gBACfC,gBAAgBA;gBAChBC,gBAAgBA;gBAChBE,WAAW;oBAAEK,OAAOD;gBAAU;;0BAEhC,KAAC7B;gBAAsBgB,YAAYA;gBAAYN,aAAaA;0BACzDL;;;;AAIT;AAEA;;CAEC,GACD,OAAO,MAAM2B,WAAW,CAACC;IACvB,IAAIC,QAAQC,GAAG,CAACC,QAAQ,KAAK,iBAAiBH,MAAMxB,MAAM,EAAE;QAC1DN,KAAK;IACP;IAEA,MAAMkC,SAAS,CAAEzC,CAAAA,aAAaqC,MAAM5B,QAAQ,KAAKT,aAAaqC,MAAMvB,WAAW,CAAA;IAC/E,IAAI2B,QAAQ;QACV,qBAAO,KAACnC;YAAgB,GAAG+B,KAAK;;IAClC;IAEA,qBAAO,KAAC7B;QAAmB,GAAG6B,KAAK;;AACrC,EAAE;AAEFD,SAASM,KAAK,GAAGrC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/Checkbox/CheckboxInput/CheckboxInput.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport {\n Icon20CheckBoxIndetermanate,\n Icon20CheckBoxOff,\n Icon20CheckBoxOn,\n Icon24CheckBoxOff,\n Icon24CheckBoxOn,\n} from '@vkontakte/icons';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivityConditionalRender } from '../../../hooks/useAdaptivityConditionalRender';\nimport { useExternRef } from '../../../hooks/useExternRef';\nimport { useMergeProps } from '../../../hooks/useMergeProps';\nimport { usePlatform } from '../../../hooks/usePlatform';\nimport { warnOnce } from '../../../lib/warnOnce';\nimport type { HasDataAttribute, HasRootRef } from '../../../types';\nimport { RootComponent } from '../../RootComponent/RootComponent';\nimport { VisuallyHidden } from '../../VisuallyHidden/VisuallyHidden';\nimport styles from './CheckboxInput.module.css';\n\ntype VendorIconType = typeof Icon20CheckBoxOn;\n\nexport type CheckboxInputIconType =\n | React.ComponentType<React.SVGProps<SVGSVGElement>>\n | VendorIconType;\n\nfunction setIndeterminate(el: HTMLInputElement, indeterminate: boolean) {\n el.indeterminate = indeterminate;\n}\n\nexport interface CheckboxInputProps\n extends React.ComponentProps<'input'>,\n HasRootRef<HTMLDivElement> {\n /**\n * @deprecated Since 7.9.0. Вместо этого используйте `slotProps={ input: { getRootRef: ... } }`.\n */\n getRef?: React.Ref<HTMLInputElement>;\n /**\n * Свойства, которые можно прокинуть внутрь компонента:\n * - `root`: свойства для прокидывания в корень компонента;\n * - `input`: свойства для прокидывания в скрытый `input`.\n */\n slotProps?: {\n root?: Omit<React.HTMLAttributes<HTMLElement>, 'children'> &\n HasRootRef<HTMLElement> &\n HasDataAttribute;\n input?: React.ComponentProps<'input'> & HasRootRef<HTMLInputElement> & HasDataAttribute;\n };\n /**\n * Неопределенное состояние чекбокса.\n */\n indeterminate?: boolean;\n /**\n * Неопределенное состояние чекбокса по умолчанию.\n */\n defaultIndeterminate?: boolean;\n /**\n * Иконка для включенного состояния в компактном режиме.\n */\n IconOnCompact?: CheckboxInputIconType;\n /**\n * Иконка для включенного состояния в обычном режиме.\n */\n IconOnRegular?: CheckboxInputIconType;\n /**\n * Иконка для выключенного состояния в компактном режиме.\n */\n IconOffCompact?: CheckboxInputIconType;\n /**\n * Иконка для выключенного состояния в обычном режиме.\n */\n IconOffRegular?: CheckboxInputIconType;\n /**\n * Иконка для неопределенного состояния.\n */\n IconIndeterminate?: CheckboxInputIconType;\n}\n\nconst warn = warnOnce('Checkbox');\n\nexport function CheckboxInput({\n className,\n style,\n getRootRef,\n getRef,\n\n indeterminate,\n defaultIndeterminate,\n IconOnCompact = Icon20CheckBoxOn,\n IconOnRegular = Icon24CheckBoxOn,\n IconOffCompact = Icon20CheckBoxOff,\n IconOffRegular = Icon24CheckBoxOff,\n IconIndeterminate = Icon20CheckBoxIndetermanate,\n\n slotProps,\n ...restProps\n}: CheckboxInputProps) {\n const rootRest = useMergeProps(\n {\n className,\n style,\n getRootRef,\n },\n slotProps?.root,\n );\n\n const {\n onChange,\n getRootRef: getInputRef,\n ...inputRest\n } = useMergeProps({ getRootRef: getRef, ...restProps }, slotProps?.input);\n\n const inputRef = useExternRef<HTMLInputElement>(getInputRef);\n\n const platform = usePlatform();\n const { sizeY: adaptiveSizeY } = useAdaptivityConditionalRender();\n\n React.useEffect(() => {\n const indeterminateValue = indeterminate === undefined ? defaultIndeterminate : indeterminate;\n\n if (inputRef.current) {\n setIndeterminate(inputRef.current, Boolean(indeterminateValue));\n }\n }, [defaultIndeterminate, indeterminate, inputRef]);\n\n const handleChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n if (\n defaultIndeterminate !== undefined &&\n indeterminate === undefined &&\n inputRest.checked === undefined &&\n inputRef.current\n ) {\n setIndeterminate(inputRef.current, false);\n }\n if (indeterminate !== undefined && inputRef.current) {\n setIndeterminate(inputRef.current, Boolean(indeterminate));\n }\n onChange && onChange(event);\n },\n [defaultIndeterminate, indeterminate, inputRest.checked, onChange, inputRef],\n );\n\n if (process.env.NODE_ENV === 'development') {\n /* istanbul ignore if: не проверяем в тестах */\n if (getRef) {\n warn('Свойство `getRef` устаревшее, используйте `slotProps={ input: { getRootRef: ... } }`');\n }\n\n if (defaultIndeterminate && inputRest.defaultChecked) {\n warn('defaultIndeterminate и defaultChecked не могут быть true одновременно', 'error');\n }\n\n if (indeterminate && inputRest.checked) {\n warn('indeterminate и checked не могут быть true одновременно', 'error');\n }\n\n if (inputRest.defaultChecked && inputRest.checked) {\n warn('defaultChecked и checked не могут быть true одновременно', 'error');\n }\n }\n\n return (\n <RootComponent baseClassName={styles.host} {...rootRest}>\n <VisuallyHidden\n Component=\"input\"\n type=\"checkbox\"\n onChange={handleChange}\n getRootRef={inputRef}\n baseClassName={styles.input}\n {...inputRest}\n />\n {platform === 'vkcom' ? (\n <IconOnCompact className={styles.iconOn} />\n ) : (\n <React.Fragment>\n {adaptiveSizeY.compact && (\n <IconOnCompact className={classNames(styles.iconOn, adaptiveSizeY.compact.className)} />\n )}\n {adaptiveSizeY.regular && (\n <IconOnRegular className={classNames(styles.iconOn, adaptiveSizeY.regular.className)} />\n )}\n </React.Fragment>\n )}\n {platform === 'vkcom' ? (\n <IconOffCompact className={styles.iconOff} />\n ) : (\n <React.Fragment>\n {adaptiveSizeY.compact && (\n <IconOffCompact\n className={classNames(styles.iconOff, adaptiveSizeY.compact.className)}\n />\n )}\n {adaptiveSizeY.regular && (\n <IconOffRegular\n className={classNames(styles.iconOff, adaptiveSizeY.regular.className)}\n />\n )}\n </React.Fragment>\n )}\n {platform === 'vkcom' ? (\n <IconIndeterminate width={20} height={20} className={styles.iconIndeterminate} />\n ) : (\n <React.Fragment>\n {adaptiveSizeY.compact && (\n <IconIndeterminate\n className={classNames(styles.iconIndeterminate, adaptiveSizeY.compact.className)}\n width={20}\n height={20}\n />\n )}\n {adaptiveSizeY.regular && (\n <IconIndeterminate\n className={classNames(styles.iconIndeterminate, adaptiveSizeY.regular.className)}\n width={24}\n height={24}\n />\n )}\n </React.Fragment>\n )}\n </RootComponent>\n );\n}\n"],"names":["React","Icon20CheckBoxIndetermanate","Icon20CheckBoxOff","Icon20CheckBoxOn","Icon24CheckBoxOff","Icon24CheckBoxOn","classNames","useAdaptivityConditionalRender","useExternRef","useMergeProps","usePlatform","warnOnce","RootComponent","VisuallyHidden","styles","setIndeterminate","el","indeterminate","warn","CheckboxInput","className","style","getRootRef","getRef","defaultIndeterminate","IconOnCompact","IconOnRegular","IconOffCompact","IconOffRegular","IconIndeterminate","slotProps","restProps","rootRest","root","onChange","getInputRef","inputRest","input","inputRef","platform","sizeY","adaptiveSizeY","useEffect","indeterminateValue","undefined","current","Boolean","handleChange","useCallback","event","checked","process","env","NODE_ENV","defaultChecked","baseClassName","host","Component","type","iconOn","Fragment","compact","regular","iconOff","width","height","iconIndeterminate"],"mappings":"AAAA;;AAEA,YAAYA,WAAW,QAAQ;AAC/B,SACEC,2BAA2B,EAC3BC,iBAAiB,EACjBC,gBAAgB,EAChBC,iBAAiB,EACjBC,gBAAgB,QACX,mBAAmB;AAC1B,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,8BAA8B,QAAQ,yDAAgD;AAC/F,SAASC,YAAY,QAAQ,iCAA8B;AAC3D,SAASC,aAAa,QAAQ,kCAA+B;AAC7D,SAASC,WAAW,QAAQ,gCAA6B;AACzD,SAASC,QAAQ,QAAQ,2BAAwB;AAEjD,SAASC,aAAa,QAAQ,uCAAoC;AAClE,SAASC,cAAc,QAAQ,yCAAsC;AACrE,OAAOC,YAAY,6BAA6B;AAQhD,SAASC,iBAAiBC,EAAoB,EAAEC,aAAsB;IACpED,GAAGC,aAAa,GAAGA;AACrB;AAkDA,MAAMC,OAAOP,SAAS;AAEtB,OAAO,SAASQ,cAAc,EAC5BC,SAAS,EACTC,KAAK,EACLC,UAAU,EACVC,MAAM,EAENN,aAAa,EACbO,oBAAoB,EACpBC,gBAAgBtB,gBAAgB,EAChCuB,gBAAgBrB,gBAAgB,EAChCsB,iBAAiBzB,iBAAiB,EAClC0B,iBAAiBxB,iBAAiB,EAClCyB,oBAAoB5B,2BAA2B,EAE/C6B,SAAS,EACT,GAAGC,WACgB;IACnB,MAAMC,WAAWvB,cACf;QACEW;QACAC;QACAC;IACF,GACAQ,WAAWG;IAGb,MAAM,EACJC,QAAQ,EACRZ,YAAYa,WAAW,EACvB,GAAGC,WACJ,GAAG3B,cAAc;QAAEa,YAAYC;QAAQ,GAAGQ,SAAS;IAAC,GAAGD,WAAWO;IAEnE,MAAMC,WAAW9B,aAA+B2B;IAEhD,MAAMI,WAAW7B;IACjB,MAAM,EAAE8B,OAAOC,aAAa,EAAE,GAAGlC;IAEjCP,MAAM0C,SAAS,CAAC;QACd,MAAMC,qBAAqB1B,kBAAkB2B,YAAYpB,uBAAuBP;QAEhF,IAAIqB,SAASO,OAAO,EAAE;YACpB9B,iBAAiBuB,SAASO,OAAO,EAAEC,QAAQH;QAC7C;IACF,GAAG;QAACnB;QAAsBP;QAAeqB;KAAS;IAElD,MAAMS,eAAe/C,MAAMgD,WAAW,CACpC,CAACC;QACC,IACEzB,yBAAyBoB,aACzB3B,kBAAkB2B,aAClBR,UAAUc,OAAO,KAAKN,aACtBN,SAASO,OAAO,EAChB;YACA9B,iBAAiBuB,SAASO,OAAO,EAAE;QACrC;QACA,IAAI5B,kBAAkB2B,aAAaN,SAASO,OAAO,EAAE;YACnD9B,iBAAiBuB,SAASO,OAAO,EAAEC,QAAQ7B;QAC7C;QACAiB,YAAYA,SAASe;IACvB,GACA;QAACzB;QAAsBP;QAAemB,UAAUc,OAAO;QAAEhB;QAAUI;KAAS;IAG9E,IAAIa,QAAQC,GAAG,CAACC,QAAQ,KAAK,eAAe;QAC1C,6CAA6C,GAC7C,IAAI9B,QAAQ;YACVL,KAAK;QACP;QAEA,IAAIM,wBAAwBY,UAAUkB,cAAc,EAAE;YACpDpC,KAAK,yEAAyE;QAChF;QAEA,IAAID,iBAAiBmB,UAAUc,OAAO,EAAE;YACtChC,KAAK,2DAA2D;QAClE;QAEA,IAAIkB,UAAUkB,cAAc,IAAIlB,UAAUc,OAAO,EAAE;YACjDhC,KAAK,4DAA4D;QACnE;IACF;IAEA,qBACE,MAACN;QAAc2C,eAAezC,OAAO0C,IAAI;QAAG,GAAGxB,QAAQ;;0BACrD,KAACnB;gBACC4C,WAAU;gBACVC,MAAK;gBACLxB,UAAUa;gBACVzB,YAAYgB;gBACZiB,eAAezC,OAAOuB,KAAK;gBAC1B,GAAGD,SAAS;;YAEdG,aAAa,wBACZ,KAACd;gBAAcL,WAAWN,OAAO6C,MAAM;+BAEvC,MAAC3D,MAAM4D,QAAQ;;oBACZnB,cAAcoB,OAAO,kBACpB,KAACpC;wBAAcL,WAAWd,WAAWQ,OAAO6C,MAAM,EAAElB,cAAcoB,OAAO,CAACzC,SAAS;;oBAEpFqB,cAAcqB,OAAO,kBACpB,KAACpC;wBAAcN,WAAWd,WAAWQ,OAAO6C,MAAM,EAAElB,cAAcqB,OAAO,CAAC1C,SAAS;;;;YAIxFmB,aAAa,wBACZ,KAACZ;gBAAeP,WAAWN,OAAOiD,OAAO;+BAEzC,MAAC/D,MAAM4D,QAAQ;;oBACZnB,cAAcoB,OAAO,kBACpB,KAAClC;wBACCP,WAAWd,WAAWQ,OAAOiD,OAAO,EAAEtB,cAAcoB,OAAO,CAACzC,SAAS;;oBAGxEqB,cAAcqB,OAAO,kBACpB,KAAClC;wBACCR,WAAWd,WAAWQ,OAAOiD,OAAO,EAAEtB,cAAcqB,OAAO,CAAC1C,SAAS;;;;YAK5EmB,aAAa,wBACZ,KAACV;gBAAkBmC,OAAO;gBAAIC,QAAQ;gBAAI7C,WAAWN,OAAOoD,iBAAiB;+BAE7E,MAAClE,MAAM4D,QAAQ;;oBACZnB,cAAcoB,OAAO,kBACpB,KAAChC;wBACCT,WAAWd,WAAWQ,OAAOoD,iBAAiB,EAAEzB,cAAcoB,OAAO,CAACzC,SAAS;wBAC/E4C,OAAO;wBACPC,QAAQ;;oBAGXxB,cAAcqB,OAAO,kBACpB,KAACjC;wBACCT,WAAWd,WAAWQ,OAAOoD,iBAAiB,EAAEzB,cAAcqB,OAAO,CAAC1C,SAAS;wBAC/E4C,OAAO;wBACPC,QAAQ;;;;;;AAOtB"}
1
+ {"version":3,"sources":["../../../../../src/components/Checkbox/CheckboxInput/CheckboxInput.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport {\n Icon20CheckBoxIndetermanate,\n Icon20CheckBoxOff,\n Icon20CheckBoxOn,\n Icon24CheckBoxOff,\n Icon24CheckBoxOn,\n} from '@vkontakte/icons';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivityConditionalRender } from '../../../hooks/useAdaptivityConditionalRender';\nimport { useExternRef } from '../../../hooks/useExternRef';\nimport { useMergeProps } from '../../../hooks/useMergeProps';\nimport { usePlatform } from '../../../hooks/usePlatform';\nimport { warnOnce } from '../../../lib/warnOnce';\nimport type { HasDataAttribute, HasRootRef } from '../../../types';\nimport { RootComponent } from '../../RootComponent/RootComponent';\nimport { VisuallyHidden } from '../../VisuallyHidden/VisuallyHidden';\nimport styles from './CheckboxInput.module.css';\n\ntype VendorIconType = typeof Icon20CheckBoxOn;\n\nexport type CheckboxInputIconType =\n | React.ComponentType<React.SVGProps<SVGSVGElement>>\n | VendorIconType;\n\nfunction setIndeterminate(el: HTMLInputElement, indeterminate: boolean) {\n el.indeterminate = indeterminate;\n}\n\nexport interface CheckboxInputProps\n extends React.ComponentProps<'input'>,\n HasRootRef<HTMLDivElement> {\n /**\n * @deprecated Since 7.9.0. Вместо этого используйте `slotProps={ input: { getRootRef: ... } }`.\n */\n getRef?: React.Ref<HTMLInputElement>;\n /**\n * Свойства, которые можно прокинуть внутрь компонента:\n * - `root`: свойства для прокидывания в корень компонента;\n * - `input`: свойства для прокидывания в скрытый `input`.\n */\n slotProps?: {\n root?: Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> &\n HasRootRef<HTMLDivElement> &\n HasDataAttribute;\n input?: React.ComponentProps<'input'> & HasRootRef<HTMLInputElement> & HasDataAttribute;\n };\n /**\n * Неопределенное состояние чекбокса.\n */\n indeterminate?: boolean;\n /**\n * Неопределенное состояние чекбокса по умолчанию.\n */\n defaultIndeterminate?: boolean;\n /**\n * Иконка для включенного состояния в компактном режиме.\n */\n IconOnCompact?: CheckboxInputIconType;\n /**\n * Иконка для включенного состояния в обычном режиме.\n */\n IconOnRegular?: CheckboxInputIconType;\n /**\n * Иконка для выключенного состояния в компактном режиме.\n */\n IconOffCompact?: CheckboxInputIconType;\n /**\n * Иконка для выключенного состояния в обычном режиме.\n */\n IconOffRegular?: CheckboxInputIconType;\n /**\n * Иконка для неопределенного состояния.\n */\n IconIndeterminate?: CheckboxInputIconType;\n}\n\nconst warn = warnOnce('Checkbox');\n\nexport function CheckboxInput({\n className,\n style,\n getRootRef,\n getRef,\n\n indeterminate,\n defaultIndeterminate,\n IconOnCompact = Icon20CheckBoxOn,\n IconOnRegular = Icon24CheckBoxOn,\n IconOffCompact = Icon20CheckBoxOff,\n IconOffRegular = Icon24CheckBoxOff,\n IconIndeterminate = Icon20CheckBoxIndetermanate,\n\n slotProps,\n ...restProps\n}: CheckboxInputProps) {\n const rootRest = useMergeProps(\n {\n className,\n style,\n getRootRef,\n },\n slotProps?.root,\n );\n\n const {\n onChange,\n getRootRef: getInputRef,\n ...inputRest\n } = useMergeProps({ getRootRef: getRef, ...restProps }, slotProps?.input);\n\n const inputRef = useExternRef<HTMLInputElement>(getInputRef);\n\n const platform = usePlatform();\n const { sizeY: adaptiveSizeY } = useAdaptivityConditionalRender();\n\n React.useEffect(() => {\n const indeterminateValue = indeterminate === undefined ? defaultIndeterminate : indeterminate;\n\n if (inputRef.current) {\n setIndeterminate(inputRef.current, Boolean(indeterminateValue));\n }\n }, [defaultIndeterminate, indeterminate, inputRef]);\n\n const handleChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n if (\n defaultIndeterminate !== undefined &&\n indeterminate === undefined &&\n inputRest.checked === undefined &&\n inputRef.current\n ) {\n setIndeterminate(inputRef.current, false);\n }\n if (indeterminate !== undefined && inputRef.current) {\n setIndeterminate(inputRef.current, Boolean(indeterminate));\n }\n onChange && onChange(event);\n },\n [defaultIndeterminate, indeterminate, inputRest.checked, onChange, inputRef],\n );\n\n if (process.env.NODE_ENV === 'development') {\n /* istanbul ignore if: не проверяем в тестах */\n if (getRef) {\n warn('Свойство `getRef` устаревшее, используйте `slotProps={ input: { getRootRef: ... } }`');\n }\n\n if (defaultIndeterminate && inputRest.defaultChecked) {\n warn('defaultIndeterminate и defaultChecked не могут быть true одновременно', 'error');\n }\n\n if (indeterminate && inputRest.checked) {\n warn('indeterminate и checked не могут быть true одновременно', 'error');\n }\n\n if (inputRest.defaultChecked && inputRest.checked) {\n warn('defaultChecked и checked не могут быть true одновременно', 'error');\n }\n }\n\n return (\n <RootComponent baseClassName={styles.host} {...rootRest}>\n <VisuallyHidden\n Component=\"input\"\n type=\"checkbox\"\n onChange={handleChange}\n getRootRef={inputRef}\n baseClassName={styles.input}\n {...inputRest}\n />\n {platform === 'vkcom' ? (\n <IconOnCompact className={styles.iconOn} />\n ) : (\n <React.Fragment>\n {adaptiveSizeY.compact && (\n <IconOnCompact className={classNames(styles.iconOn, adaptiveSizeY.compact.className)} />\n )}\n {adaptiveSizeY.regular && (\n <IconOnRegular className={classNames(styles.iconOn, adaptiveSizeY.regular.className)} />\n )}\n </React.Fragment>\n )}\n {platform === 'vkcom' ? (\n <IconOffCompact className={styles.iconOff} />\n ) : (\n <React.Fragment>\n {adaptiveSizeY.compact && (\n <IconOffCompact\n className={classNames(styles.iconOff, adaptiveSizeY.compact.className)}\n />\n )}\n {adaptiveSizeY.regular && (\n <IconOffRegular\n className={classNames(styles.iconOff, adaptiveSizeY.regular.className)}\n />\n )}\n </React.Fragment>\n )}\n {platform === 'vkcom' ? (\n <IconIndeterminate width={20} height={20} className={styles.iconIndeterminate} />\n ) : (\n <React.Fragment>\n {adaptiveSizeY.compact && (\n <IconIndeterminate\n className={classNames(styles.iconIndeterminate, adaptiveSizeY.compact.className)}\n width={20}\n height={20}\n />\n )}\n {adaptiveSizeY.regular && (\n <IconIndeterminate\n className={classNames(styles.iconIndeterminate, adaptiveSizeY.regular.className)}\n width={24}\n height={24}\n />\n )}\n </React.Fragment>\n )}\n </RootComponent>\n );\n}\n"],"names":["React","Icon20CheckBoxIndetermanate","Icon20CheckBoxOff","Icon20CheckBoxOn","Icon24CheckBoxOff","Icon24CheckBoxOn","classNames","useAdaptivityConditionalRender","useExternRef","useMergeProps","usePlatform","warnOnce","RootComponent","VisuallyHidden","styles","setIndeterminate","el","indeterminate","warn","CheckboxInput","className","style","getRootRef","getRef","defaultIndeterminate","IconOnCompact","IconOnRegular","IconOffCompact","IconOffRegular","IconIndeterminate","slotProps","restProps","rootRest","root","onChange","getInputRef","inputRest","input","inputRef","platform","sizeY","adaptiveSizeY","useEffect","indeterminateValue","undefined","current","Boolean","handleChange","useCallback","event","checked","process","env","NODE_ENV","defaultChecked","baseClassName","host","Component","type","iconOn","Fragment","compact","regular","iconOff","width","height","iconIndeterminate"],"mappings":"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"}
@@ -21,7 +21,10 @@ import { NativeSelect } from "../NativeSelect/NativeSelect.js";
21
21
  deviceType.mobile && /*#__PURE__*/ _jsx(NativeSelect, {
22
22
  className: classNames(className, deviceType.mobile.className),
23
23
  slotProps: {
24
- select: slotProps?.select,
24
+ select: {
25
+ ...slotProps?.input,
26
+ ...slotProps?.select
27
+ },
25
28
  root: slotProps?.root
26
29
  },
27
30
  ...nativeProps,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/Select/Select.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivityConditionalRender } from '../../hooks/useAdaptivityConditionalRender';\nimport type { HasOnlyExpectedProps } from '../../types';\nimport { CustomSelect, type SelectProps } from '../CustomSelect/CustomSelect';\nimport { type CustomSelectOptionInterface } from '../CustomSelect/types';\nimport { NativeSelect, type NativeSelectProps } from '../NativeSelect/NativeSelect';\nexport type SelectType = 'default' | 'plain' | 'accent';\n\n/**\n * @see https://vkui.io/components/select\n */\nexport const Select = <OptionT extends CustomSelectOptionInterface>({\n children,\n className,\n ...props\n}: SelectProps<OptionT>): React.ReactNode => {\n const {\n options = [],\n searchable,\n emptyText,\n onInputChange,\n filterFn,\n popupDirection,\n renderOption,\n renderDropdown,\n fetching,\n onClose,\n onOpen,\n icon,\n ClearButton,\n allowClearButton,\n clearButtonTestId,\n dropdownOffsetDistance,\n dropdownAutoWidth,\n forceDropdownPortal,\n noMaxHeight,\n labelTextTestId,\n nativeSelectTestId,\n after,\n mode,\n pattern,\n minLength,\n maxLength,\n readOnly,\n getSelectInputRef,\n overscrollBehavior,\n beforeAlign,\n afterAlign,\n onInputKeyDown,\n accessible,\n fetchingCompletedLabel,\n fetchingInProgressLabel,\n\n slotProps,\n ...restProps\n } = props;\n\n const { deviceType } = useAdaptivityConditionalRender();\n\n const nativeProps: HasOnlyExpectedProps<typeof restProps, NativeSelectProps> = restProps;\n\n return (\n <React.Fragment>\n {deviceType.desktop && (\n <CustomSelect\n className={classNames(className, deviceType.desktop.className)}\n slotProps={slotProps}\n {...props}\n />\n )}\n {deviceType.mobile && (\n <NativeSelect\n className={classNames(className, deviceType.mobile.className)}\n slotProps={{\n select: slotProps?.select,\n root: slotProps?.root,\n }}\n {...nativeProps}\n >\n {options.map(({ label, value, disabled }) => (\n <option value={value} key={`${value}`} disabled={disabled}>\n {label}\n </option>\n ))}\n </NativeSelect>\n )}\n </React.Fragment>\n );\n};\n"],"names":["React","classNames","useAdaptivityConditionalRender","CustomSelect","NativeSelect","Select","children","className","props","options","searchable","emptyText","onInputChange","filterFn","popupDirection","renderOption","renderDropdown","fetching","onClose","onOpen","icon","ClearButton","allowClearButton","clearButtonTestId","dropdownOffsetDistance","dropdownAutoWidth","forceDropdownPortal","noMaxHeight","labelTextTestId","nativeSelectTestId","after","mode","pattern","minLength","maxLength","readOnly","getSelectInputRef","overscrollBehavior","beforeAlign","afterAlign","onInputKeyDown","accessible","fetchingCompletedLabel","fetchingInProgressLabel","slotProps","restProps","deviceType","nativeProps","Fragment","desktop","mobile","select","root","map","label","value","disabled","option"],"mappings":"AAAA;;AAEA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,8BAA8B,QAAQ,sDAA6C;AAE5F,SAASC,YAAY,QAA0B,kCAA+B;AAE9E,SAASC,YAAY,QAAgC,kCAA+B;AAGpF;;CAEC,GACD,OAAO,MAAMC,SAAS,CAA8C,EAClEC,QAAQ,EACRC,SAAS,EACT,GAAGC,OACkB;IACrB,MAAM,EACJC,UAAU,EAAE,EACZC,UAAU,EACVC,SAAS,EACTC,aAAa,EACbC,QAAQ,EACRC,cAAc,EACdC,YAAY,EACZC,cAAc,EACdC,QAAQ,EACRC,OAAO,EACPC,MAAM,EACNC,IAAI,EACJC,WAAW,EACXC,gBAAgB,EAChBC,iBAAiB,EACjBC,sBAAsB,EACtBC,iBAAiB,EACjBC,mBAAmB,EACnBC,WAAW,EACXC,eAAe,EACfC,kBAAkB,EAClBC,KAAK,EACLC,IAAI,EACJC,OAAO,EACPC,SAAS,EACTC,SAAS,EACTC,QAAQ,EACRC,iBAAiB,EACjBC,kBAAkB,EAClBC,WAAW,EACXC,UAAU,EACVC,cAAc,EACdC,UAAU,EACVC,sBAAsB,EACtBC,uBAAuB,EAEvBC,SAAS,EACT,GAAGC,WACJ,GAAGrC;IAEJ,MAAM,EAAEsC,UAAU,EAAE,GAAG5C;IAEvB,MAAM6C,cAAyEF;IAE/E,qBACE,MAAC7C,MAAMgD,QAAQ;;YACZF,WAAWG,OAAO,kBACjB,KAAC9C;gBACCI,WAAWN,WAAWM,WAAWuC,WAAWG,OAAO,CAAC1C,SAAS;gBAC7DqC,WAAWA;gBACV,GAAGpC,KAAK;;YAGZsC,WAAWI,MAAM,kBAChB,KAAC9C;gBACCG,WAAWN,WAAWM,WAAWuC,WAAWI,MAAM,CAAC3C,SAAS;gBAC5DqC,WAAW;oBACTO,QAAQP,WAAWO;oBACnBC,MAAMR,WAAWQ;gBACnB;gBACC,GAAGL,WAAW;0BAEdtC,QAAQ4C,GAAG,CAAC,CAAC,EAAEC,KAAK,EAAEC,KAAK,EAAEC,QAAQ,EAAE,iBACtC,KAACC;wBAAOF,OAAOA;wBAAwBC,UAAUA;kCAC9CF;uBADwB,GAAGC,OAAO;;;;AAQjD,EAAE"}
1
+ {"version":3,"sources":["../../../../src/components/Select/Select.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivityConditionalRender } from '../../hooks/useAdaptivityConditionalRender';\nimport type { HasDataAttribute, HasOnlyExpectedProps, HasRootRef } from '../../types';\nimport { CustomSelect, type SelectProps } from '../CustomSelect/CustomSelect';\nimport { type CustomSelectOptionInterface } from '../CustomSelect/types';\nimport {\n type NativeHTMLSelectProps,\n NativeSelect,\n type NativeSelectProps,\n} from '../NativeSelect/NativeSelect';\nexport type SelectType = 'default' | 'plain' | 'accent';\n\n/**\n * @see https://vkui.io/components/select\n */\nexport const Select = <OptionT extends CustomSelectOptionInterface>({\n children,\n className,\n ...props\n}: SelectProps<OptionT>): React.ReactNode => {\n const {\n options = [],\n searchable,\n emptyText,\n onInputChange,\n filterFn,\n popupDirection,\n renderOption,\n renderDropdown,\n fetching,\n onClose,\n onOpen,\n icon,\n ClearButton,\n allowClearButton,\n clearButtonTestId,\n dropdownOffsetDistance,\n dropdownAutoWidth,\n forceDropdownPortal,\n noMaxHeight,\n labelTextTestId,\n nativeSelectTestId,\n after,\n mode,\n pattern,\n minLength,\n maxLength,\n readOnly,\n getSelectInputRef,\n overscrollBehavior,\n beforeAlign,\n afterAlign,\n onInputKeyDown,\n accessible,\n fetchingCompletedLabel,\n fetchingInProgressLabel,\n\n slotProps,\n ...restProps\n } = props;\n\n const { deviceType } = useAdaptivityConditionalRender();\n\n const nativeProps: HasOnlyExpectedProps<typeof restProps, NativeSelectProps> = restProps;\n\n return (\n <React.Fragment>\n {deviceType.desktop && (\n <CustomSelect\n className={classNames(className, deviceType.desktop.className)}\n slotProps={slotProps}\n {...props}\n />\n )}\n {deviceType.mobile && (\n <NativeSelect\n className={classNames(className, deviceType.mobile.className)}\n slotProps={{\n select: {\n ...(slotProps?.input as NativeHTMLSelectProps &\n HasRootRef<HTMLSelectElement> &\n HasDataAttribute),\n ...slotProps?.select,\n },\n root: slotProps?.root,\n }}\n {...nativeProps}\n >\n {options.map(({ label, value, disabled }) => (\n <option value={value} key={`${value}`} disabled={disabled}>\n {label}\n </option>\n ))}\n </NativeSelect>\n )}\n </React.Fragment>\n );\n};\n"],"names":["React","classNames","useAdaptivityConditionalRender","CustomSelect","NativeSelect","Select","children","className","props","options","searchable","emptyText","onInputChange","filterFn","popupDirection","renderOption","renderDropdown","fetching","onClose","onOpen","icon","ClearButton","allowClearButton","clearButtonTestId","dropdownOffsetDistance","dropdownAutoWidth","forceDropdownPortal","noMaxHeight","labelTextTestId","nativeSelectTestId","after","mode","pattern","minLength","maxLength","readOnly","getSelectInputRef","overscrollBehavior","beforeAlign","afterAlign","onInputKeyDown","accessible","fetchingCompletedLabel","fetchingInProgressLabel","slotProps","restProps","deviceType","nativeProps","Fragment","desktop","mobile","select","input","root","map","label","value","disabled","option"],"mappings":"AAAA;;AAEA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,8BAA8B,QAAQ,sDAA6C;AAE5F,SAASC,YAAY,QAA0B,kCAA+B;AAE9E,SAEEC,YAAY,QAEP,kCAA+B;AAGtC;;CAEC,GACD,OAAO,MAAMC,SAAS,CAA8C,EAClEC,QAAQ,EACRC,SAAS,EACT,GAAGC,OACkB;IACrB,MAAM,EACJC,UAAU,EAAE,EACZC,UAAU,EACVC,SAAS,EACTC,aAAa,EACbC,QAAQ,EACRC,cAAc,EACdC,YAAY,EACZC,cAAc,EACdC,QAAQ,EACRC,OAAO,EACPC,MAAM,EACNC,IAAI,EACJC,WAAW,EACXC,gBAAgB,EAChBC,iBAAiB,EACjBC,sBAAsB,EACtBC,iBAAiB,EACjBC,mBAAmB,EACnBC,WAAW,EACXC,eAAe,EACfC,kBAAkB,EAClBC,KAAK,EACLC,IAAI,EACJC,OAAO,EACPC,SAAS,EACTC,SAAS,EACTC,QAAQ,EACRC,iBAAiB,EACjBC,kBAAkB,EAClBC,WAAW,EACXC,UAAU,EACVC,cAAc,EACdC,UAAU,EACVC,sBAAsB,EACtBC,uBAAuB,EAEvBC,SAAS,EACT,GAAGC,WACJ,GAAGrC;IAEJ,MAAM,EAAEsC,UAAU,EAAE,GAAG5C;IAEvB,MAAM6C,cAAyEF;IAE/E,qBACE,MAAC7C,MAAMgD,QAAQ;;YACZF,WAAWG,OAAO,kBACjB,KAAC9C;gBACCI,WAAWN,WAAWM,WAAWuC,WAAWG,OAAO,CAAC1C,SAAS;gBAC7DqC,WAAWA;gBACV,GAAGpC,KAAK;;YAGZsC,WAAWI,MAAM,kBAChB,KAAC9C;gBACCG,WAAWN,WAAWM,WAAWuC,WAAWI,MAAM,CAAC3C,SAAS;gBAC5DqC,WAAW;oBACTO,QAAQ;wBACN,GAAIP,WAAWQ,KAAK;wBAGpB,GAAGR,WAAWO,MAAM;oBACtB;oBACAE,MAAMT,WAAWS;gBACnB;gBACC,GAAGN,WAAW;0BAEdtC,QAAQ6C,GAAG,CAAC,CAAC,EAAEC,KAAK,EAAEC,KAAK,EAAEC,QAAQ,EAAE,iBACtC,KAACC;wBAAOF,OAAOA;wBAAwBC,UAAUA;kCAC9CF;uBADwB,GAAGC,OAAO;;;;AAQjD,EAAE"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/WriteBar/WriteBar.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { classNames, hasReactNode } from '@vkontakte/vkjs';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { useMergeProps } from '../../hooks/useMergeProps';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { callMultiple } from '../../lib/callMultiple';\nimport { warnOnce } from '../../lib/warnOnce';\nimport type { HasDataAttribute, HasRootRef } from '../../types';\nimport { RootComponent } from '../RootComponent/RootComponent';\nimport { useResizeTextarea } from '../Textarea/useResizeTextarea';\nimport { Headline } from '../Typography/Headline/Headline';\nimport { Title } from '../Typography/Title/Title';\nimport type { TypographyProps } from '../Typography/Typography';\nimport styles from './WriteBar.module.css';\n\nconst warn = warnOnce('WriteBar');\n\nexport interface WriteBarProps\n extends React.TextareaHTMLAttributes<HTMLTextAreaElement>,\n HasRootRef<HTMLDivElement> {\n /**\n * @deprecated Since 7.9.0. Вместо этого используйте `slotProps={ textArea: { getRootRef: ... } }`.\n */\n getRef?: React.Ref<HTMLTextAreaElement>;\n /**\n * Свойства, которые можно прокинуть внутрь компонента:\n * - `root`: свойства для прокидывания в корень компонента;\n * - `textArea`: свойства для прокидывания в поле ввода.\n */\n slotProps?: {\n root?: React.HTMLAttributes<HTMLElement> & HasRootRef<HTMLElement> & HasDataAttribute;\n textArea?: React.TextareaHTMLAttributes<HTMLTextAreaElement> &\n HasRootRef<HTMLTextAreaElement> &\n HasDataAttribute;\n };\n /**\n * Содержимое, отображаемое слева от поля ввода.\n */\n before?: React.ReactNode;\n /**\n * Содержимое, отображаемое поверх поля ввода (актуально для iOS).\n */\n inlineAfter?: React.ReactNode;\n /**\n * Содержимое, отображаемое справа от поля ввода.\n */\n after?: React.ReactNode;\n /**\n * Вызывается при смене высоты поля ввода.\n */\n onHeightChange?: VoidFunction;\n /**\n * Добавляет тень вокруг поля ввода.\n */\n shadow?: boolean;\n /**\n * @deprecated Неиспользуемое свойство.\n */\n children?: never;\n}\n\nconst WriteBarTypography = (props: TypographyProps) => {\n const platform = usePlatform();\n\n if (platform === 'ios') {\n return <Title {...props} level=\"3\" weight=\"3\" />;\n }\n\n return <Headline weight=\"3\" {...props} />;\n};\n\n/**\n * @see https://vkui.io/components/write-bar\n */\nexport const WriteBar = ({\n className,\n style,\n before,\n inlineAfter,\n after,\n getRootRef,\n getRef,\n onHeightChange,\n shadow = false,\n\n slotProps,\n ...restProps\n}: WriteBarProps): React.ReactNode => {\n /* istanbul ignore if: не проверяем в тестах */\n if (process.env.NODE_ENV === 'development' && getRef) {\n warn('Свойство `getRef` устаревшее, используйте `slotProps={ textArea: { getRootRef: ... } }`');\n }\n\n const platform = usePlatform();\n\n const rootProps = useMergeProps(\n {\n className,\n getRootRef,\n style,\n },\n slotProps?.root,\n );\n\n const {\n onChange,\n getRootRef: getTextAreaRef,\n ...textAreaRest\n } = useMergeProps(\n {\n className: styles.textarea,\n getRootRef: getRef,\n ...restProps,\n },\n slotProps?.textArea,\n );\n\n const [refResizeTextarea, resize] = useResizeTextarea(onHeightChange, true);\n const textareaRef = useExternRef(getTextAreaRef, refResizeTextarea);\n\n React.useEffect(resize, [resize, platform]);\n\n return (\n <RootComponent\n baseClassName={classNames(\n styles.host,\n platform === 'ios' && styles.ios,\n shadow && styles.shadow,\n )}\n {...rootProps}\n >\n <div className={styles.form}>\n {hasReactNode(before) && <div className={styles.before}>{before}</div>}\n\n <div className={styles.formIn}>\n <WriteBarTypography\n Component=\"textarea\"\n onChange={callMultiple(onChange, resize)}\n getRootRef={textareaRef}\n {...textAreaRest}\n />\n {hasReactNode(inlineAfter) && <div className={styles.inlineAfter}>{inlineAfter}</div>}\n </div>\n\n {hasReactNode(after) && <div className={styles.after}>{after}</div>}\n </div>\n </RootComponent>\n );\n};\n"],"names":["React","classNames","hasReactNode","useExternRef","useMergeProps","usePlatform","callMultiple","warnOnce","RootComponent","useResizeTextarea","Headline","Title","styles","warn","WriteBarTypography","props","platform","level","weight","WriteBar","className","style","before","inlineAfter","after","getRootRef","getRef","onHeightChange","shadow","slotProps","restProps","process","env","NODE_ENV","rootProps","root","onChange","getTextAreaRef","textAreaRest","textarea","textArea","refResizeTextarea","resize","textareaRef","useEffect","baseClassName","host","ios","div","form","formIn","Component"],"mappings":"AAAA;;AAEA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,EAAEC,YAAY,QAAQ,kBAAkB;AAC3D,SAASC,YAAY,QAAQ,8BAA2B;AACxD,SAASC,aAAa,QAAQ,+BAA4B;AAC1D,SAASC,WAAW,QAAQ,6BAA0B;AACtD,SAASC,YAAY,QAAQ,4BAAyB;AACtD,SAASC,QAAQ,QAAQ,wBAAqB;AAE9C,SAASC,aAAa,QAAQ,oCAAiC;AAC/D,SAASC,iBAAiB,QAAQ,mCAAgC;AAClE,SAASC,QAAQ,QAAQ,qCAAkC;AAC3D,SAASC,KAAK,QAAQ,+BAA4B;AAElD,OAAOC,YAAY,wBAAwB;AAE3C,MAAMC,OAAON,SAAS;AA8CtB,MAAMO,qBAAqB,CAACC;IAC1B,MAAMC,WAAWX;IAEjB,IAAIW,aAAa,OAAO;QACtB,qBAAO,KAACL;YAAO,GAAGI,KAAK;YAAEE,OAAM;YAAIC,QAAO;;IAC5C;IAEA,qBAAO,KAACR;QAASQ,QAAO;QAAK,GAAGH,KAAK;;AACvC;AAEA;;CAEC,GACD,OAAO,MAAMI,WAAW,CAAC,EACvBC,SAAS,EACTC,KAAK,EACLC,MAAM,EACNC,WAAW,EACXC,KAAK,EACLC,UAAU,EACVC,MAAM,EACNC,cAAc,EACdC,SAAS,KAAK,EAEdC,SAAS,EACT,GAAGC,WACW;IACd,6CAA6C,GAC7C,IAAIC,QAAQC,GAAG,CAACC,QAAQ,KAAK,iBAAiBP,QAAQ;QACpDb,KAAK;IACP;IAEA,MAAMG,WAAWX;IAEjB,MAAM6B,YAAY9B,cAChB;QACEgB;QACAK;QACAJ;IACF,GACAQ,WAAWM;IAGb,MAAM,EACJC,QAAQ,EACRX,YAAYY,cAAc,EAC1B,GAAGC,cACJ,GAAGlC,cACF;QACEgB,WAAWR,OAAO2B,QAAQ;QAC1Bd,YAAYC;QACZ,GAAGI,SAAS;IACd,GACAD,WAAWW;IAGb,MAAM,CAACC,mBAAmBC,OAAO,GAAGjC,kBAAkBkB,gBAAgB;IACtE,MAAMgB,cAAcxC,aAAakC,gBAAgBI;IAEjDzC,MAAM4C,SAAS,CAACF,QAAQ;QAACA;QAAQ1B;KAAS;IAE1C,qBACE,KAACR;QACCqC,eAAe5C,WACbW,OAAOkC,IAAI,EACX9B,aAAa,SAASJ,OAAOmC,GAAG,EAChCnB,UAAUhB,OAAOgB,MAAM;QAExB,GAAGM,SAAS;kBAEb,cAAA,MAACc;YAAI5B,WAAWR,OAAOqC,IAAI;;gBACxB/C,aAAaoB,yBAAW,KAAC0B;oBAAI5B,WAAWR,OAAOU,MAAM;8BAAGA;;8BAEzD,MAAC0B;oBAAI5B,WAAWR,OAAOsC,MAAM;;sCAC3B,KAACpC;4BACCqC,WAAU;4BACVf,UAAU9B,aAAa8B,UAAUM;4BACjCjB,YAAYkB;4BACX,GAAGL,YAAY;;wBAEjBpC,aAAaqB,8BAAgB,KAACyB;4BAAI5B,WAAWR,OAAOW,WAAW;sCAAGA;;;;gBAGpErB,aAAasB,wBAAU,KAACwB;oBAAI5B,WAAWR,OAAOY,KAAK;8BAAGA;;;;;AAI/D,EAAE"}
1
+ {"version":3,"sources":["../../../../src/components/WriteBar/WriteBar.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { classNames, hasReactNode } from '@vkontakte/vkjs';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { useMergeProps } from '../../hooks/useMergeProps';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { callMultiple } from '../../lib/callMultiple';\nimport { warnOnce } from '../../lib/warnOnce';\nimport type { HasDataAttribute, HasRootRef } from '../../types';\nimport { RootComponent } from '../RootComponent/RootComponent';\nimport { useResizeTextarea } from '../Textarea/useResizeTextarea';\nimport { Headline } from '../Typography/Headline/Headline';\nimport { Title } from '../Typography/Title/Title';\nimport type { TypographyProps } from '../Typography/Typography';\nimport styles from './WriteBar.module.css';\n\nconst warn = warnOnce('WriteBar');\n\nexport interface WriteBarProps\n extends React.TextareaHTMLAttributes<HTMLTextAreaElement>,\n HasRootRef<HTMLDivElement> {\n /**\n * @deprecated Since 7.9.0. Вместо этого используйте `slotProps={ textArea: { getRootRef: ... } }`.\n */\n getRef?: React.Ref<HTMLTextAreaElement>;\n /**\n * Свойства, которые можно прокинуть внутрь компонента:\n * - `root`: свойства для прокидывания в корень компонента;\n * - `textArea`: свойства для прокидывания в поле ввода.\n */\n slotProps?: {\n root?: Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> &\n HasRootRef<HTMLDivElement> &\n HasDataAttribute;\n textArea?: React.TextareaHTMLAttributes<HTMLTextAreaElement> &\n HasRootRef<HTMLTextAreaElement> &\n HasDataAttribute;\n };\n /**\n * Содержимое, отображаемое слева от поля ввода.\n */\n before?: React.ReactNode;\n /**\n * Содержимое, отображаемое поверх поля ввода (актуально для iOS).\n */\n inlineAfter?: React.ReactNode;\n /**\n * Содержимое, отображаемое справа от поля ввода.\n */\n after?: React.ReactNode;\n /**\n * Вызывается при смене высоты поля ввода.\n */\n onHeightChange?: VoidFunction;\n /**\n * Добавляет тень вокруг поля ввода.\n */\n shadow?: boolean;\n /**\n * @deprecated Неиспользуемое свойство.\n */\n children?: never;\n}\n\nconst WriteBarTypography = (props: TypographyProps) => {\n const platform = usePlatform();\n\n if (platform === 'ios') {\n return <Title {...props} level=\"3\" weight=\"3\" />;\n }\n\n return <Headline weight=\"3\" {...props} />;\n};\n\n/**\n * @see https://vkui.io/components/write-bar\n */\nexport const WriteBar = ({\n className,\n style,\n before,\n inlineAfter,\n after,\n getRootRef,\n getRef,\n onHeightChange,\n shadow = false,\n\n slotProps,\n ...restProps\n}: WriteBarProps): React.ReactNode => {\n /* istanbul ignore if: не проверяем в тестах */\n if (process.env.NODE_ENV === 'development' && getRef) {\n warn('Свойство `getRef` устаревшее, используйте `slotProps={ textArea: { getRootRef: ... } }`');\n }\n\n const platform = usePlatform();\n\n const rootProps = useMergeProps(\n {\n className,\n getRootRef,\n style,\n },\n slotProps?.root,\n );\n\n const {\n onChange,\n getRootRef: getTextAreaRef,\n ...textAreaRest\n } = useMergeProps(\n {\n className: styles.textarea,\n getRootRef: getRef,\n ...restProps,\n },\n slotProps?.textArea,\n );\n\n const [refResizeTextarea, resize] = useResizeTextarea(onHeightChange, true);\n const textareaRef = useExternRef(getTextAreaRef, refResizeTextarea);\n\n React.useEffect(resize, [resize, platform]);\n\n return (\n <RootComponent\n baseClassName={classNames(\n styles.host,\n platform === 'ios' && styles.ios,\n shadow && styles.shadow,\n )}\n {...rootProps}\n >\n <div className={styles.form}>\n {hasReactNode(before) && <div className={styles.before}>{before}</div>}\n\n <div className={styles.formIn}>\n <WriteBarTypography\n Component=\"textarea\"\n onChange={callMultiple(onChange, resize)}\n getRootRef={textareaRef}\n {...textAreaRest}\n />\n {hasReactNode(inlineAfter) && <div className={styles.inlineAfter}>{inlineAfter}</div>}\n </div>\n\n {hasReactNode(after) && <div className={styles.after}>{after}</div>}\n </div>\n </RootComponent>\n );\n};\n"],"names":["React","classNames","hasReactNode","useExternRef","useMergeProps","usePlatform","callMultiple","warnOnce","RootComponent","useResizeTextarea","Headline","Title","styles","warn","WriteBarTypography","props","platform","level","weight","WriteBar","className","style","before","inlineAfter","after","getRootRef","getRef","onHeightChange","shadow","slotProps","restProps","process","env","NODE_ENV","rootProps","root","onChange","getTextAreaRef","textAreaRest","textarea","textArea","refResizeTextarea","resize","textareaRef","useEffect","baseClassName","host","ios","div","form","formIn","Component"],"mappings":"AAAA;;AAEA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,EAAEC,YAAY,QAAQ,kBAAkB;AAC3D,SAASC,YAAY,QAAQ,8BAA2B;AACxD,SAASC,aAAa,QAAQ,+BAA4B;AAC1D,SAASC,WAAW,QAAQ,6BAA0B;AACtD,SAASC,YAAY,QAAQ,4BAAyB;AACtD,SAASC,QAAQ,QAAQ,wBAAqB;AAE9C,SAASC,aAAa,QAAQ,oCAAiC;AAC/D,SAASC,iBAAiB,QAAQ,mCAAgC;AAClE,SAASC,QAAQ,QAAQ,qCAAkC;AAC3D,SAASC,KAAK,QAAQ,+BAA4B;AAElD,OAAOC,YAAY,wBAAwB;AAE3C,MAAMC,OAAON,SAAS;AAgDtB,MAAMO,qBAAqB,CAACC;IAC1B,MAAMC,WAAWX;IAEjB,IAAIW,aAAa,OAAO;QACtB,qBAAO,KAACL;YAAO,GAAGI,KAAK;YAAEE,OAAM;YAAIC,QAAO;;IAC5C;IAEA,qBAAO,KAACR;QAASQ,QAAO;QAAK,GAAGH,KAAK;;AACvC;AAEA;;CAEC,GACD,OAAO,MAAMI,WAAW,CAAC,EACvBC,SAAS,EACTC,KAAK,EACLC,MAAM,EACNC,WAAW,EACXC,KAAK,EACLC,UAAU,EACVC,MAAM,EACNC,cAAc,EACdC,SAAS,KAAK,EAEdC,SAAS,EACT,GAAGC,WACW;IACd,6CAA6C,GAC7C,IAAIC,QAAQC,GAAG,CAACC,QAAQ,KAAK,iBAAiBP,QAAQ;QACpDb,KAAK;IACP;IAEA,MAAMG,WAAWX;IAEjB,MAAM6B,YAAY9B,cAChB;QACEgB;QACAK;QACAJ;IACF,GACAQ,WAAWM;IAGb,MAAM,EACJC,QAAQ,EACRX,YAAYY,cAAc,EAC1B,GAAGC,cACJ,GAAGlC,cACF;QACEgB,WAAWR,OAAO2B,QAAQ;QAC1Bd,YAAYC;QACZ,GAAGI,SAAS;IACd,GACAD,WAAWW;IAGb,MAAM,CAACC,mBAAmBC,OAAO,GAAGjC,kBAAkBkB,gBAAgB;IACtE,MAAMgB,cAAcxC,aAAakC,gBAAgBI;IAEjDzC,MAAM4C,SAAS,CAACF,QAAQ;QAACA;QAAQ1B;KAAS;IAE1C,qBACE,KAACR;QACCqC,eAAe5C,WACbW,OAAOkC,IAAI,EACX9B,aAAa,SAASJ,OAAOmC,GAAG,EAChCnB,UAAUhB,OAAOgB,MAAM;QAExB,GAAGM,SAAS;kBAEb,cAAA,MAACc;YAAI5B,WAAWR,OAAOqC,IAAI;;gBACxB/C,aAAaoB,yBAAW,KAAC0B;oBAAI5B,WAAWR,OAAOU,MAAM;8BAAGA;;8BAEzD,MAAC0B;oBAAI5B,WAAWR,OAAOsC,MAAM;;sCAC3B,KAACpC;4BACCqC,WAAU;4BACVf,UAAU9B,aAAa8B,UAAUM;4BACjCjB,YAAYkB;4BACX,GAAGL,YAAY;;wBAEjBpC,aAAaqB,8BAAgB,KAACyB;4BAAI5B,WAAWR,OAAOW,WAAW;sCAAGA;;;;gBAGpErB,aAAasB,wBAAU,KAACwB;oBAAI5B,WAAWR,OAAOY,KAAK;8BAAGA;;;;;AAI/D,EAAE"}
@@ -1,13 +1,17 @@
1
1
  import { classNames } from "@vkontakte/vkjs";
2
2
  import { getMergedSameEventsByProps } from "../helpers/getMergedSameEventsByProps.js";
3
3
  import { mergeStyle } from "../helpers/mergeStyle.js";
4
+ import { filterObject } from "../lib/object.js";
4
5
  import { useExternRef } from "./useExternRef.js";
6
+ const filterProps = (props)=>{
7
+ return filterObject(props, (value)=>value !== undefined);
8
+ };
5
9
  export const useMergeProps = (originalProps, slotProps)=>{
6
10
  const originalSlotGetRef = originalProps.getRootRef;
7
11
  const rootSlotGetRef = slotProps?.getRootRef;
8
12
  const getRootRef = useExternRef(originalSlotGetRef, rootSlotGetRef);
9
13
  if (!slotProps) {
10
- return originalProps;
14
+ return filterProps(originalProps);
11
15
  }
12
16
  const { className: rootSlotClassName, style: rootSlotStyle, ...rootSlotProps } = slotProps || {};
13
17
  const { className: originalClassName, style: originalSlotStyle, ...originalRestProps } = originalProps;
@@ -28,7 +32,7 @@ export const useMergeProps = (originalProps, slotProps)=>{
28
32
  if (rootSlotGetRef || originalSlotGetRef) {
29
33
  resolvedProps.getRootRef = getRootRef;
30
34
  }
31
- return resolvedProps;
35
+ return filterProps(resolvedProps);
32
36
  };
33
37
 
34
38
  //# sourceMappingURL=useMergeProps.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/hooks/useMergeProps.ts"],"sourcesContent":["import { type AllHTMLAttributes } from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { getMergedSameEventsByProps } from '../helpers/getMergedSameEventsByProps';\nimport { mergeStyle } from '../helpers/mergeStyle';\nimport { type HasRootRef } from '../types';\nimport { useExternRef } from './useExternRef';\n\ntype BaseProps<T extends HTMLElement = HTMLElement> = HasRootRef<T> &\n Pick<AllHTMLAttributes<T>, 'className' | 'style'>;\n\nexport const useMergeProps = <T extends BaseProps = BaseProps>(\n originalProps: T,\n slotProps?: T,\n): T => {\n const originalSlotGetRef = originalProps.getRootRef;\n const rootSlotGetRef = slotProps?.getRootRef;\n\n const getRootRef = useExternRef(originalSlotGetRef, rootSlotGetRef);\n\n if (!slotProps) {\n return originalProps;\n }\n\n const { className: rootSlotClassName, style: rootSlotStyle, ...rootSlotProps } = slotProps || {};\n\n const {\n className: originalClassName,\n style: originalSlotStyle,\n ...originalRestProps\n } = originalProps;\n\n const resolvedClassName =\n originalClassName || rootSlotClassName\n ? classNames(originalClassName, rootSlotClassName)\n : undefined;\n const resolvedStyle =\n originalSlotStyle || rootSlotStyle ? mergeStyle(originalSlotStyle, rootSlotStyle) : undefined;\n\n const mergedEventsByInjectProps: any = getMergedSameEventsByProps(\n originalRestProps,\n rootSlotProps,\n );\n\n const resolvedProps: T = {\n ...originalRestProps,\n ...rootSlotProps,\n ...mergedEventsByInjectProps,\n };\n\n if (resolvedClassName) {\n resolvedProps.className = resolvedClassName;\n }\n if (resolvedStyle) {\n resolvedProps.style = resolvedStyle;\n }\n if (rootSlotGetRef || originalSlotGetRef) {\n resolvedProps.getRootRef = getRootRef;\n }\n\n return resolvedProps;\n};\n"],"names":["classNames","getMergedSameEventsByProps","mergeStyle","useExternRef","useMergeProps","originalProps","slotProps","originalSlotGetRef","getRootRef","rootSlotGetRef","className","rootSlotClassName","style","rootSlotStyle","rootSlotProps","originalClassName","originalSlotStyle","originalRestProps","resolvedClassName","undefined","resolvedStyle","mergedEventsByInjectProps","resolvedProps"],"mappings":"AACA,SAASA,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,0BAA0B,QAAQ,2CAAwC;AACnF,SAASC,UAAU,QAAQ,2BAAwB;AAEnD,SAASC,YAAY,QAAQ,oBAAiB;AAK9C,OAAO,MAAMC,gBAAgB,CAC3BC,eACAC;IAEA,MAAMC,qBAAqBF,cAAcG,UAAU;IACnD,MAAMC,iBAAiBH,WAAWE;IAElC,MAAMA,aAAaL,aAAaI,oBAAoBE;IAEpD,IAAI,CAACH,WAAW;QACd,OAAOD;IACT;IAEA,MAAM,EAAEK,WAAWC,iBAAiB,EAAEC,OAAOC,aAAa,EAAE,GAAGC,eAAe,GAAGR,aAAa,CAAC;IAE/F,MAAM,EACJI,WAAWK,iBAAiB,EAC5BH,OAAOI,iBAAiB,EACxB,GAAGC,mBACJ,GAAGZ;IAEJ,MAAMa,oBACJH,qBAAqBJ,oBACjBX,WAAWe,mBAAmBJ,qBAC9BQ;IACN,MAAMC,gBACJJ,qBAAqBH,gBAAgBX,WAAWc,mBAAmBH,iBAAiBM;IAEtF,MAAME,4BAAiCpB,2BACrCgB,mBACAH;IAGF,MAAMQ,gBAAmB;QACvB,GAAGL,iBAAiB;QACpB,GAAGH,aAAa;QAChB,GAAGO,yBAAyB;IAC9B;IAEA,IAAIH,mBAAmB;QACrBI,cAAcZ,SAAS,GAAGQ;IAC5B;IACA,IAAIE,eAAe;QACjBE,cAAcV,KAAK,GAAGQ;IACxB;IACA,IAAIX,kBAAkBF,oBAAoB;QACxCe,cAAcd,UAAU,GAAGA;IAC7B;IAEA,OAAOc;AACT,EAAE"}
1
+ {"version":3,"sources":["../../../src/hooks/useMergeProps.ts"],"sourcesContent":["import { type AllHTMLAttributes } from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { getMergedSameEventsByProps } from '../helpers/getMergedSameEventsByProps';\nimport { mergeStyle } from '../helpers/mergeStyle';\nimport { filterObject } from '../lib/object';\nimport { type HasRootRef } from '../types';\nimport { useExternRef } from './useExternRef';\n\ntype BaseProps<T extends HTMLElement = HTMLElement> = HasRootRef<T> &\n Pick<AllHTMLAttributes<T>, 'className' | 'style'>;\n\nconst filterProps = <T extends BaseProps = BaseProps>(props: T) => {\n return filterObject(props, (value) => value !== undefined);\n};\n\nexport const useMergeProps = <T extends BaseProps = BaseProps>(\n originalProps: T,\n slotProps?: T,\n): T => {\n const originalSlotGetRef = originalProps.getRootRef;\n const rootSlotGetRef = slotProps?.getRootRef;\n\n const getRootRef = useExternRef(originalSlotGetRef, rootSlotGetRef);\n\n if (!slotProps) {\n return filterProps(originalProps);\n }\n\n const { className: rootSlotClassName, style: rootSlotStyle, ...rootSlotProps } = slotProps || {};\n\n const {\n className: originalClassName,\n style: originalSlotStyle,\n ...originalRestProps\n } = originalProps;\n\n const resolvedClassName =\n originalClassName || rootSlotClassName\n ? classNames(originalClassName, rootSlotClassName)\n : undefined;\n const resolvedStyle =\n originalSlotStyle || rootSlotStyle ? mergeStyle(originalSlotStyle, rootSlotStyle) : undefined;\n\n const mergedEventsByInjectProps: any = getMergedSameEventsByProps(\n originalRestProps,\n rootSlotProps,\n );\n\n const resolvedProps: T = {\n ...originalRestProps,\n ...rootSlotProps,\n ...mergedEventsByInjectProps,\n };\n\n if (resolvedClassName) {\n resolvedProps.className = resolvedClassName;\n }\n if (resolvedStyle) {\n resolvedProps.style = resolvedStyle;\n }\n if (rootSlotGetRef || originalSlotGetRef) {\n resolvedProps.getRootRef = getRootRef;\n }\n\n return filterProps(resolvedProps);\n};\n"],"names":["classNames","getMergedSameEventsByProps","mergeStyle","filterObject","useExternRef","filterProps","props","value","undefined","useMergeProps","originalProps","slotProps","originalSlotGetRef","getRootRef","rootSlotGetRef","className","rootSlotClassName","style","rootSlotStyle","rootSlotProps","originalClassName","originalSlotStyle","originalRestProps","resolvedClassName","resolvedStyle","mergedEventsByInjectProps","resolvedProps"],"mappings":"AACA,SAASA,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,0BAA0B,QAAQ,2CAAwC;AACnF,SAASC,UAAU,QAAQ,2BAAwB;AACnD,SAASC,YAAY,QAAQ,mBAAgB;AAE7C,SAASC,YAAY,QAAQ,oBAAiB;AAK9C,MAAMC,cAAc,CAAkCC;IACpD,OAAOH,aAAaG,OAAO,CAACC,QAAUA,UAAUC;AAClD;AAEA,OAAO,MAAMC,gBAAgB,CAC3BC,eACAC;IAEA,MAAMC,qBAAqBF,cAAcG,UAAU;IACnD,MAAMC,iBAAiBH,WAAWE;IAElC,MAAMA,aAAaT,aAAaQ,oBAAoBE;IAEpD,IAAI,CAACH,WAAW;QACd,OAAON,YAAYK;IACrB;IAEA,MAAM,EAAEK,WAAWC,iBAAiB,EAAEC,OAAOC,aAAa,EAAE,GAAGC,eAAe,GAAGR,aAAa,CAAC;IAE/F,MAAM,EACJI,WAAWK,iBAAiB,EAC5BH,OAAOI,iBAAiB,EACxB,GAAGC,mBACJ,GAAGZ;IAEJ,MAAMa,oBACJH,qBAAqBJ,oBACjBhB,WAAWoB,mBAAmBJ,qBAC9BR;IACN,MAAMgB,gBACJH,qBAAqBH,gBAAgBhB,WAAWmB,mBAAmBH,iBAAiBV;IAEtF,MAAMiB,4BAAiCxB,2BACrCqB,mBACAH;IAGF,MAAMO,gBAAmB;QACvB,GAAGJ,iBAAiB;QACpB,GAAGH,aAAa;QAChB,GAAGM,yBAAyB;IAC9B;IAEA,IAAIF,mBAAmB;QACrBG,cAAcX,SAAS,GAAGQ;IAC5B;IACA,IAAIC,eAAe;QACjBE,cAAcT,KAAK,GAAGO;IACxB;IACA,IAAIV,kBAAkBF,oBAAoB;QACxCc,cAAcb,UAAU,GAAGA;IAC7B;IAEA,OAAOR,YAAYqB;AACrB,EAAE"}
@@ -1 +1 @@
1
- {"version":3,"file":"useMergeProps.d.ts","sourceRoot":"","sources":["../../src/hooks/useMergeProps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAI/C,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AAG3C,KAAK,SAAS,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,IAAI,UAAU,CAAC,CAAC,CAAC,GACjE,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC;AAEpD,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,SAAS,GAAG,SAAS,EAC3D,eAAe,CAAC,EAChB,YAAY,CAAC,KACZ,CA+CF,CAAC"}
1
+ {"version":3,"file":"useMergeProps.d.ts","sourceRoot":"","sources":["../../src/hooks/useMergeProps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAK/C,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AAG3C,KAAK,SAAS,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,IAAI,UAAU,CAAC,CAAC,CAAC,GACjE,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC;AAMpD,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,SAAS,GAAG,SAAS,EAC3D,eAAe,CAAC,EAChB,YAAY,CAAC,KACZ,CA+CF,CAAC"}
@@ -3,13 +3,17 @@ import { _ as _object_without_properties } from "@swc/helpers/_/_object_without_
3
3
  import { classNames } from "@vkontakte/vkjs";
4
4
  import { getMergedSameEventsByProps } from "../helpers/getMergedSameEventsByProps.js";
5
5
  import { mergeStyle } from "../helpers/mergeStyle.js";
6
+ import { filterObject } from "../lib/object.js";
6
7
  import { useExternRef } from "./useExternRef.js";
8
+ const filterProps = (props)=>{
9
+ return filterObject(props, (value)=>value !== undefined);
10
+ };
7
11
  export const useMergeProps = (originalProps, slotProps)=>{
8
12
  const originalSlotGetRef = originalProps.getRootRef;
9
13
  const rootSlotGetRef = slotProps === null || slotProps === void 0 ? void 0 : slotProps.getRootRef;
10
14
  const getRootRef = useExternRef(originalSlotGetRef, rootSlotGetRef);
11
15
  if (!slotProps) {
12
- return originalProps;
16
+ return filterProps(originalProps);
13
17
  }
14
18
  const _ref = slotProps || {}, { className: rootSlotClassName, style: rootSlotStyle } = _ref, rootSlotProps = _object_without_properties(_ref, [
15
19
  "className",
@@ -32,7 +36,7 @@ export const useMergeProps = (originalProps, slotProps)=>{
32
36
  if (rootSlotGetRef || originalSlotGetRef) {
33
37
  resolvedProps.getRootRef = getRootRef;
34
38
  }
35
- return resolvedProps;
39
+ return filterProps(resolvedProps);
36
40
  };
37
41
 
38
42
  //# sourceMappingURL=useMergeProps.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/hooks/useMergeProps.ts"],"sourcesContent":["import { type AllHTMLAttributes } from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { getMergedSameEventsByProps } from '../helpers/getMergedSameEventsByProps';\nimport { mergeStyle } from '../helpers/mergeStyle';\nimport { type HasRootRef } from '../types';\nimport { useExternRef } from './useExternRef';\n\ntype BaseProps<T extends HTMLElement = HTMLElement> = HasRootRef<T> &\n Pick<AllHTMLAttributes<T>, 'className' | 'style'>;\n\nexport const useMergeProps = <T extends BaseProps = BaseProps>(\n originalProps: T,\n slotProps?: T,\n): T => {\n const originalSlotGetRef = originalProps.getRootRef;\n const rootSlotGetRef = slotProps?.getRootRef;\n\n const getRootRef = useExternRef(originalSlotGetRef, rootSlotGetRef);\n\n if (!slotProps) {\n return originalProps;\n }\n\n const { className: rootSlotClassName, style: rootSlotStyle, ...rootSlotProps } = slotProps || {};\n\n const {\n className: originalClassName,\n style: originalSlotStyle,\n ...originalRestProps\n } = originalProps;\n\n const resolvedClassName =\n originalClassName || rootSlotClassName\n ? classNames(originalClassName, rootSlotClassName)\n : undefined;\n const resolvedStyle =\n originalSlotStyle || rootSlotStyle ? mergeStyle(originalSlotStyle, rootSlotStyle) : undefined;\n\n const mergedEventsByInjectProps: any = getMergedSameEventsByProps(\n originalRestProps,\n rootSlotProps,\n );\n\n const resolvedProps: T = {\n ...originalRestProps,\n ...rootSlotProps,\n ...mergedEventsByInjectProps,\n };\n\n if (resolvedClassName) {\n resolvedProps.className = resolvedClassName;\n }\n if (resolvedStyle) {\n resolvedProps.style = resolvedStyle;\n }\n if (rootSlotGetRef || originalSlotGetRef) {\n resolvedProps.getRootRef = getRootRef;\n }\n\n return resolvedProps;\n};\n"],"names":["classNames","getMergedSameEventsByProps","mergeStyle","useExternRef","useMergeProps","originalProps","slotProps","originalSlotGetRef","getRootRef","rootSlotGetRef","className","rootSlotClassName","style","rootSlotStyle","rootSlotProps","originalClassName","originalSlotStyle","originalRestProps","resolvedClassName","undefined","resolvedStyle","mergedEventsByInjectProps","resolvedProps"],"mappings":";;AACA,SAASA,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,0BAA0B,QAAQ,2CAAwC;AACnF,SAASC,UAAU,QAAQ,2BAAwB;AAEnD,SAASC,YAAY,QAAQ,oBAAiB;AAK9C,OAAO,MAAMC,gBAAgB,CAC3BC,eACAC;IAEA,MAAMC,qBAAqBF,cAAcG,UAAU;IACnD,MAAMC,iBAAiBH,sBAAAA,gCAAAA,UAAWE,UAAU;IAE5C,MAAMA,aAAaL,aAAaI,oBAAoBE;IAEpD,IAAI,CAACH,WAAW;QACd,OAAOD;IACT;IAEA,MAAiFC,OAAAA,aAAa,CAAC,GAAzF,EAAEI,WAAWC,iBAAiB,EAAEC,OAAOC,aAAa,EAAoB,GAAGP,MAAlBQ,2CAAkBR;QAAzEI;QAA8BE;;IAEtC,MAAM,EACJF,WAAWK,iBAAiB,EAC5BH,OAAOI,iBAAiB,EAEzB,GAAGX,eADCY,+CACDZ;QAHFK;QACAE;;IAIF,MAAMM,oBACJH,qBAAqBJ,oBACjBX,WAAWe,mBAAmBJ,qBAC9BQ;IACN,MAAMC,gBACJJ,qBAAqBH,gBAAgBX,WAAWc,mBAAmBH,iBAAiBM;IAEtF,MAAME,4BAAiCpB,2BACrCgB,mBACAH;IAGF,MAAMQ,gBAAmB,mBACpBL,mBACAH,eACAO;IAGL,IAAIH,mBAAmB;QACrBI,cAAcZ,SAAS,GAAGQ;IAC5B;IACA,IAAIE,eAAe;QACjBE,cAAcV,KAAK,GAAGQ;IACxB;IACA,IAAIX,kBAAkBF,oBAAoB;QACxCe,cAAcd,UAAU,GAAGA;IAC7B;IAEA,OAAOc;AACT,EAAE"}
1
+ {"version":3,"sources":["../../src/hooks/useMergeProps.ts"],"sourcesContent":["import { type AllHTMLAttributes } from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { getMergedSameEventsByProps } from '../helpers/getMergedSameEventsByProps';\nimport { mergeStyle } from '../helpers/mergeStyle';\nimport { filterObject } from '../lib/object';\nimport { type HasRootRef } from '../types';\nimport { useExternRef } from './useExternRef';\n\ntype BaseProps<T extends HTMLElement = HTMLElement> = HasRootRef<T> &\n Pick<AllHTMLAttributes<T>, 'className' | 'style'>;\n\nconst filterProps = <T extends BaseProps = BaseProps>(props: T) => {\n return filterObject(props, (value) => value !== undefined);\n};\n\nexport const useMergeProps = <T extends BaseProps = BaseProps>(\n originalProps: T,\n slotProps?: T,\n): T => {\n const originalSlotGetRef = originalProps.getRootRef;\n const rootSlotGetRef = slotProps?.getRootRef;\n\n const getRootRef = useExternRef(originalSlotGetRef, rootSlotGetRef);\n\n if (!slotProps) {\n return filterProps(originalProps);\n }\n\n const { className: rootSlotClassName, style: rootSlotStyle, ...rootSlotProps } = slotProps || {};\n\n const {\n className: originalClassName,\n style: originalSlotStyle,\n ...originalRestProps\n } = originalProps;\n\n const resolvedClassName =\n originalClassName || rootSlotClassName\n ? classNames(originalClassName, rootSlotClassName)\n : undefined;\n const resolvedStyle =\n originalSlotStyle || rootSlotStyle ? mergeStyle(originalSlotStyle, rootSlotStyle) : undefined;\n\n const mergedEventsByInjectProps: any = getMergedSameEventsByProps(\n originalRestProps,\n rootSlotProps,\n );\n\n const resolvedProps: T = {\n ...originalRestProps,\n ...rootSlotProps,\n ...mergedEventsByInjectProps,\n };\n\n if (resolvedClassName) {\n resolvedProps.className = resolvedClassName;\n }\n if (resolvedStyle) {\n resolvedProps.style = resolvedStyle;\n }\n if (rootSlotGetRef || originalSlotGetRef) {\n resolvedProps.getRootRef = getRootRef;\n }\n\n return filterProps(resolvedProps);\n};\n"],"names":["classNames","getMergedSameEventsByProps","mergeStyle","filterObject","useExternRef","filterProps","props","value","undefined","useMergeProps","originalProps","slotProps","originalSlotGetRef","getRootRef","rootSlotGetRef","className","rootSlotClassName","style","rootSlotStyle","rootSlotProps","originalClassName","originalSlotStyle","originalRestProps","resolvedClassName","resolvedStyle","mergedEventsByInjectProps","resolvedProps"],"mappings":";;AACA,SAASA,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,0BAA0B,QAAQ,2CAAwC;AACnF,SAASC,UAAU,QAAQ,2BAAwB;AACnD,SAASC,YAAY,QAAQ,mBAAgB;AAE7C,SAASC,YAAY,QAAQ,oBAAiB;AAK9C,MAAMC,cAAc,CAAkCC;IACpD,OAAOH,aAAaG,OAAO,CAACC,QAAUA,UAAUC;AAClD;AAEA,OAAO,MAAMC,gBAAgB,CAC3BC,eACAC;IAEA,MAAMC,qBAAqBF,cAAcG,UAAU;IACnD,MAAMC,iBAAiBH,sBAAAA,gCAAAA,UAAWE,UAAU;IAE5C,MAAMA,aAAaT,aAAaQ,oBAAoBE;IAEpD,IAAI,CAACH,WAAW;QACd,OAAON,YAAYK;IACrB;IAEA,MAAiFC,OAAAA,aAAa,CAAC,GAAzF,EAAEI,WAAWC,iBAAiB,EAAEC,OAAOC,aAAa,EAAoB,GAAGP,MAAlBQ,2CAAkBR;QAAzEI;QAA8BE;;IAEtC,MAAM,EACJF,WAAWK,iBAAiB,EAC5BH,OAAOI,iBAAiB,EAEzB,GAAGX,eADCY,+CACDZ;QAHFK;QACAE;;IAIF,MAAMM,oBACJH,qBAAqBJ,oBACjBhB,WAAWoB,mBAAmBJ,qBAC9BR;IACN,MAAMgB,gBACJH,qBAAqBH,gBAAgBhB,WAAWmB,mBAAmBH,iBAAiBV;IAEtF,MAAMiB,4BAAiCxB,2BACrCqB,mBACAH;IAGF,MAAMO,gBAAmB,mBACpBJ,mBACAH,eACAM;IAGL,IAAIF,mBAAmB;QACrBG,cAAcX,SAAS,GAAGQ;IAC5B;IACA,IAAIC,eAAe;QACjBE,cAAcT,KAAK,GAAGO;IACxB;IACA,IAAIV,kBAAkBF,oBAAoB;QACxCc,cAAcb,UAAU,GAAGA;IAC7B;IAEA,OAAOR,YAAYqB;AACrB,EAAE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "type": "module",
3
- "version": "7.9.0",
3
+ "version": "7.9.1",
4
4
  "name": "@vkontakte/vkui",
5
5
  "description": "VKUI library",
6
6
  "module": "./dist/index.js",
@@ -14,7 +14,7 @@ import { CheckboxSimple } from './CheckboxSimple/CheckboxSimple';
14
14
  const warn = warnOnce('Checkbox');
15
15
 
16
16
  export interface CheckboxProps
17
- extends Omit<CheckboxInputProps, 'getRootRef'>,
17
+ extends Omit<CheckboxInputProps, 'getRootRef' | 'slotProps'>,
18
18
  HasRootRef<HTMLLabelElement>,
19
19
  Pick<
20
20
  TappableOmitProps,
@@ -42,8 +42,8 @@ export interface CheckboxInputProps
42
42
  * - `input`: свойства для прокидывания в скрытый `input`.
43
43
  */
44
44
  slotProps?: {
45
- root?: Omit<React.HTMLAttributes<HTMLElement>, 'children'> &
46
- HasRootRef<HTMLElement> &
45
+ root?: Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> &
46
+ HasRootRef<HTMLDivElement> &
47
47
  HasDataAttribute;
48
48
  input?: React.ComponentProps<'input'> & HasRootRef<HTMLInputElement> & HasDataAttribute;
49
49
  };
@@ -3,10 +3,14 @@
3
3
  import * as React from 'react';
4
4
  import { classNames } from '@vkontakte/vkjs';
5
5
  import { useAdaptivityConditionalRender } from '../../hooks/useAdaptivityConditionalRender';
6
- import type { HasOnlyExpectedProps } from '../../types';
6
+ import type { HasDataAttribute, HasOnlyExpectedProps, HasRootRef } from '../../types';
7
7
  import { CustomSelect, type SelectProps } from '../CustomSelect/CustomSelect';
8
8
  import { type CustomSelectOptionInterface } from '../CustomSelect/types';
9
- import { NativeSelect, type NativeSelectProps } from '../NativeSelect/NativeSelect';
9
+ import {
10
+ type NativeHTMLSelectProps,
11
+ NativeSelect,
12
+ type NativeSelectProps,
13
+ } from '../NativeSelect/NativeSelect';
10
14
  export type SelectType = 'default' | 'plain' | 'accent';
11
15
 
12
16
  /**
@@ -75,7 +79,12 @@ export const Select = <OptionT extends CustomSelectOptionInterface>({
75
79
  <NativeSelect
76
80
  className={classNames(className, deviceType.mobile.className)}
77
81
  slotProps={{
78
- select: slotProps?.select,
82
+ select: {
83
+ ...(slotProps?.input as NativeHTMLSelectProps &
84
+ HasRootRef<HTMLSelectElement> &
85
+ HasDataAttribute),
86
+ ...slotProps?.select,
87
+ },
79
88
  root: slotProps?.root,
80
89
  }}
81
90
  {...nativeProps}
@@ -30,7 +30,9 @@ export interface WriteBarProps
30
30
  * - `textArea`: свойства для прокидывания в поле ввода.
31
31
  */
32
32
  slotProps?: {
33
- root?: React.HTMLAttributes<HTMLElement> & HasRootRef<HTMLElement> & HasDataAttribute;
33
+ root?: Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> &
34
+ HasRootRef<HTMLDivElement> &
35
+ HasDataAttribute;
34
36
  textArea?: React.TextareaHTMLAttributes<HTMLTextAreaElement> &
35
37
  HasRootRef<HTMLTextAreaElement> &
36
38
  HasDataAttribute;
@@ -2,12 +2,17 @@ import { type AllHTMLAttributes } from 'react';
2
2
  import { classNames } from '@vkontakte/vkjs';
3
3
  import { getMergedSameEventsByProps } from '../helpers/getMergedSameEventsByProps';
4
4
  import { mergeStyle } from '../helpers/mergeStyle';
5
+ import { filterObject } from '../lib/object';
5
6
  import { type HasRootRef } from '../types';
6
7
  import { useExternRef } from './useExternRef';
7
8
 
8
9
  type BaseProps<T extends HTMLElement = HTMLElement> = HasRootRef<T> &
9
10
  Pick<AllHTMLAttributes<T>, 'className' | 'style'>;
10
11
 
12
+ const filterProps = <T extends BaseProps = BaseProps>(props: T) => {
13
+ return filterObject(props, (value) => value !== undefined);
14
+ };
15
+
11
16
  export const useMergeProps = <T extends BaseProps = BaseProps>(
12
17
  originalProps: T,
13
18
  slotProps?: T,
@@ -18,7 +23,7 @@ export const useMergeProps = <T extends BaseProps = BaseProps>(
18
23
  const getRootRef = useExternRef(originalSlotGetRef, rootSlotGetRef);
19
24
 
20
25
  if (!slotProps) {
21
- return originalProps;
26
+ return filterProps(originalProps);
22
27
  }
23
28
 
24
29
  const { className: rootSlotClassName, style: rootSlotStyle, ...rootSlotProps } = slotProps || {};
@@ -57,5 +62,5 @@ export const useMergeProps = <T extends BaseProps = BaseProps>(
57
62
  resolvedProps.getRootRef = getRootRef;
58
63
  }
59
64
 
60
- return resolvedProps;
65
+ return filterProps(resolvedProps);
61
66
  };