@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.
- package/dist/components/Checkbox/Checkbox.d.ts +1 -1
- package/dist/components/Checkbox/Checkbox.d.ts.map +1 -1
- package/dist/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/components/Checkbox/CheckboxInput/CheckboxInput.d.ts +1 -1
- package/dist/components/Checkbox/CheckboxInput/CheckboxInput.d.ts.map +1 -1
- package/dist/components/Checkbox/CheckboxInput/CheckboxInput.js.map +1 -1
- package/dist/components/Select/Select.d.ts.map +1 -1
- package/dist/components/Select/Select.js +1 -1
- package/dist/components/Select/Select.js.map +1 -1
- package/dist/components/WriteBar/WriteBar.d.ts +1 -1
- package/dist/components/WriteBar/WriteBar.d.ts.map +1 -1
- package/dist/components/WriteBar/WriteBar.js.map +1 -1
- package/dist/cssm/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/cssm/components/Checkbox/CheckboxInput/CheckboxInput.js.map +1 -1
- package/dist/cssm/components/Select/Select.js +4 -1
- package/dist/cssm/components/Select/Select.js.map +1 -1
- package/dist/cssm/components/WriteBar/WriteBar.js.map +1 -1
- package/dist/cssm/hooks/useMergeProps.js +6 -2
- package/dist/cssm/hooks/useMergeProps.js.map +1 -1
- package/dist/hooks/useMergeProps.d.ts.map +1 -1
- package/dist/hooks/useMergeProps.js +6 -2
- package/dist/hooks/useMergeProps.js.map +1 -1
- package/package.json +1 -1
- package/src/components/Checkbox/Checkbox.tsx +1 -1
- package/src/components/Checkbox/CheckboxInput/CheckboxInput.tsx +2 -2
- package/src/components/Select/Select.tsx +12 -3
- package/src/components/WriteBar/WriteBar.tsx +3 -1
- 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,
|
|
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<
|
|
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,
|
|
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;
|
|
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
|
|
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<
|
|
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,
|
|
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<
|
|
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":"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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","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:
|
|
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
|
|
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<
|
|
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","
|
|
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;
|
|
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","
|
|
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
|
@@ -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<
|
|
46
|
-
HasRootRef<
|
|
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 {
|
|
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:
|
|
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<
|
|
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
|
};
|