@consta/uikit 5.1.0 → 5.2.0
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/__internal__/src/components/Chips/Chips.js +1 -1
- package/__internal__/src/components/Chips/Chips.js.map +1 -1
- package/__internal__/src/components/Chips/ChipsChoice/ChipsChoice.js +1 -1
- package/__internal__/src/components/Chips/ChipsChoice/ChipsChoice.js.map +1 -1
- package/__internal__/src/components/Chips/ChipsChoice/types.d.ts +1 -0
- package/__internal__/src/components/Chips/ChipsChoice/types.js.map +1 -1
- package/__internal__/src/components/Chips/ChipsItem/ChipsItem.css +2 -2
- package/__internal__/src/components/Chips/ChipsItem/ChipsItem.js +1 -1
- package/__internal__/src/components/Chips/ChipsItem/ChipsItem.js.map +1 -1
- package/__internal__/src/components/Chips/helpers.d.ts +6 -2
- package/__internal__/src/components/Chips/helpers.js +1 -1
- package/__internal__/src/components/Chips/helpers.js.map +1 -1
- package/__internal__/src/components/Chips/types.d.ts +4 -0
- package/__internal__/src/components/Chips/types.js.map +1 -1
- package/__internal__/src/components/ChoiceGroup/ChoiceGroup.js +1 -1
- package/__internal__/src/components/ChoiceGroup/ChoiceGroup.js.map +1 -1
- package/__internal__/src/components/ChoiceGroup/Item/ChoiceGroup-Item.js +1 -1
- package/__internal__/src/components/ChoiceGroup/Item/ChoiceGroup-Item.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDate/DatePickerFieldTypeDate.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDate/DatePickerFieldTypeDate.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDate/helpers.d.ts +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDate/helpers.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDate/helpers.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateTime/DatePickerFieldTypeDateTime.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateTime/DatePickerFieldTypeDateTime.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateTime/helpers.d.ts +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateTime/helpers.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateTime/helpers.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeMonth/DatePickerFieldTypeMonth.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeMonth/DatePickerFieldTypeMonth.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeMonth/helpers.d.ts +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeMonth/helpers.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeMonth/helpers.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeTime/DatePickerFieldTypeTime.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeTime/DatePickerFieldTypeTime.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeTime/helpers.d.ts +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeTime/helpers.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeTime/helpers.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeYear/DatePickerFieldTypeYear.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeYear/DatePickerFieldTypeYear.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeYear/helpers.d.ts +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeYear/helpers.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeYear/helpers.js.map +1 -1
- package/__internal__/src/components/DatePicker/helpers.d.ts +7 -1
- package/__internal__/src/components/DatePicker/helpers.js +1 -1
- package/__internal__/src/components/DatePicker/helpers.js.map +1 -1
- package/__internal__/src/components/Slider/useSlider/helper.d.ts +1 -0
- package/__internal__/src/components/Slider/useSlider/helper.js +1 -1
- package/__internal__/src/components/Slider/useSlider/helper.js.map +1 -1
- package/__internal__/src/components/Slider/useSlider/useSlider.js +1 -1
- package/__internal__/src/components/Slider/useSlider/useSlider.js.map +1 -1
- package/__internal__/src/components/Spoiler/Spoiler.js +1 -1
- package/__internal__/src/components/Spoiler/Spoiler.js.map +1 -1
- package/__internal__/src/components/Spoiler/types.d.ts +2 -0
- package/__internal__/src/components/Spoiler/types.js.map +1 -1
- package/__internal__/src/components/Switch/Switch.css +1 -1
- package/__internal__/src/components/TextField/TextField.js +1 -1
- package/__internal__/src/components/TextField/TextField.js.map +1 -1
- package/__internal__/src/components/TextField/types.d.ts +1 -0
- package/__internal__/src/components/TextField/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{getSteps}from"../useSliderStationing";export var isRangeParams=function(a){return!!a.range};export var isNotRangeParams=function(a){return!a.range};export var trackPosition=function(a){return"clientX"in a?{x:a.clientX,y:a.clientY}:{x:a.changedTouches[0].clientX,y:a.changedTouches[0].clientY}};export var getActiveValue=function(a,b){return Array.isArray(a)?a["number"==typeof b?b:0]:a};export var detectActiveButton=function(a,b){var c=null;return b.forEach(function(b,d){var e=b.current;if(e&&a){var f=e.getBoundingClientRect(),g=f.x,h=f.y,i=f.width,j=f.height;g<=a.x&&g+i>=a.x&&h<=a.y&&h+j>=a.y&&(c=d,e.focus())}}),c};export var getValidValue=function(a,b,c,d){if("number"==typeof a){if(a>=c)return c;if(a<=b)return b;if(!Array.isArray(d)){var e=null===d||void 0===d?void 0:d.toString().split(".")[1],f=d||1;if(1>Math.abs(a))return+a.toFixed(e?e.length:0);if(a<b)return b;for(var g=b;g<=c;g+=f)if(a>=g&&a<g+f)return+(a<g+f/2?g:g+f).toFixed(e?e.length:0);return c}var h=a;return d.forEach(function(e,f){var g=b,i=c;0===f?i=d[f+1]:f===d.length-1?(g=e,i=c):(i=d[f+1],g=e),a<=i&&a>=g&&((i+g)/2>a?h=g:h=i)}),h}return a};export var isValidValue=function(a,b,c,d){return getValidValue(a,b,c,d)===a};export var getValueByPosition=function(a,b,c,d,e){if(b.current&&a){var f=b.current.getBoundingClientRect(),g=f.x,h=f.width,i=Math.abs(d-c),j=c+(a.x-g)*i/h;return getValidValue(j,c,d,e)}return 0};export var getNewValue=function(a,b,c,d,e,f){var g=getValidValue(analyzeDivisionValue(a,c,d,e),d,e,c);return Array.isArray(b)?1===f?[b[0],g]:[g,b[1]]:g};export var analyzeDivisionValue=function(a,b,c,d){var e=a;if(Array.isArray(b)){var f=getSteps(b,c,d);f.forEach(function(b){a&&b.min<a&&b.max>=a&&((b.max+b.min)/2>a?e=b.min:e=b.max)})}else{if(a>=d)return d;if(a<=c)return c;var g=(a-c)%b;e=g>b/2?b-g+a:a-g}return e};
|
|
1
|
+
import{getSteps}from"../useSliderStationing";export var isRangeParams=function(a){return!!a.range};export var isNotRangeParams=function(a){return!a.range};export var trackPosition=function(a){return"clientX"in a?{x:a.clientX,y:a.clientY}:{x:a.changedTouches[0].clientX,y:a.changedTouches[0].clientY}};export var getActiveValue=function(a,b){return Array.isArray(a)?a["number"==typeof b?b:0]:a};export var detectActiveButton=function(a,b){var c=null;return b.forEach(function(b,d){var e=b.current;if(e&&a){var f=e.getBoundingClientRect(),g=f.x,h=f.y,i=f.width,j=f.height;g<=a.x&&g+i>=a.x&&h<=a.y&&h+j>=a.y&&(c=d,e.focus())}}),c};export var getValidValue=function(a,b,c,d){if("number"==typeof a){if(a>=c)return c;if(a<=b)return b;if(!Array.isArray(d)){var e=null===d||void 0===d?void 0:d.toString().split(".")[1],f=d||1;if(1>Math.abs(a))return+a.toFixed(e?e.length:0);if(a<b)return b;for(var g=b;g<=c;g+=f)if(a>=g&&a<g+f)return+(a<g+f/2?g:g+f).toFixed(e?e.length:0);return c}var h=a;return d.forEach(function(e,f){var g=b,i=c;0===f?i=d[f+1]:f===d.length-1?(g=e,i=c):(i=d[f+1],g=e),a<=i&&a>=g&&((i+g)/2>a?h=g:h=i)}),h}return a};export var isValidValue=function(a,b,c,d){return getValidValue(a,b,c,d)===a};export var getValueByPosition=function(a,b,c,d,e){if(b.current&&a){var f=b.current.getBoundingClientRect(),g=f.x,h=f.width,i=Math.abs(d-c),j=c+(a.x-g)*i/h;return getValidValue(j,c,d,e)}return 0};export var getNewValue=function(a,b,c,d,e,f){var g=getValidValue(analyzeDivisionValue(a,c,d,e),d,e,c);return Array.isArray(b)?1===f?[b[0],g]:[g,b[1]]:g};export var analyzeDivisionValue=function(a,b,c,d){var e=a;if(Array.isArray(b)){var f=getSteps(b,c,d);f.forEach(function(b){a&&b.min<a&&b.max>=a&&((b.max+b.min)/2>a?e=b.min:e=b.max)})}else{if(a>=d)return d;if(a<=c)return c;var g=(a-c)%b;e=g>b/2?b-g+a:a-g}return e};export var valueToSring=function(a){return a?"number"==typeof a?a.toString():a.join("-"):""};
|
|
2
2
|
//# sourceMappingURL=helper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helper.js","names":["getSteps","isRangeParams","params","range","isNotRangeParams","trackPosition","event","x","clientX","y","clientY","changedTouches","getActiveValue","value","active","Array","isArray","detectActiveButton","position","buttons","activeButton","forEach","buttonRef","index","button","current","getBoundingClientRect","width","height","focus","getValidValue","min","max","step","division","toString","split","stepValue","Math","abs","toFixed","length","i","resultValue","stepPoint","minValue","maxValue","isValidValue","getValueByPosition","sliderRef","absoluteSize","getNewValue","changedValue","currentValue","analyzedValue","analyzeDivisionValue","newValue","steps","stepSize","nearStep"],"sources":["../../../../../../src/components/Slider/useSlider/helper.ts"],"sourcesContent":["import React from 'react';\n\nimport { SliderPropOnChange, SliderValue, TrackPosition } from '../helper';\nimport { getSteps } from '../useSliderStationing';\n\nexport type ActiveButton = 0 | 1 | null | undefined;\n\nexport type Stationing = {\n x: number;\n y: number;\n width: number;\n height: number;\n};\n\nexport type UseSliderProps<RANGE extends boolean = false> = {\n disabled: boolean;\n range?: RANGE;\n value: SliderValue<RANGE>;\n min: number;\n max: number;\n step?: number | number[];\n onChange?: SliderPropOnChange<RANGE>;\n onAfterChange?: SliderPropOnChange<RANGE>;\n containerRef: React.RefObject<HTMLDivElement>;\n sliderRef: React.RefObject<HTMLDivElement | HTMLButtonElement>;\n buttonRefs: React.RefObject<HTMLButtonElement>[];\n};\n\nexport type UseSliderValues = {\n onKeyPress: (e: React.KeyboardEvent, typeButton: ActiveButton) => void;\n onFocus: (\n e: React.FocusEvent<HTMLButtonElement> | React.MouseEvent,\n button: ActiveButton,\n ) => void;\n handlePress: (typeButton: ActiveButton) => void;\n onSliderClick: React.MouseEventHandler;\n activeButton: ActiveButton;\n currentValue: [number] | [number, number];\n popoverPosition: TrackPosition[];\n};\n\nexport const isRangeParams = (\n params: UseSliderProps<boolean>,\n): params is UseSliderProps<true> => {\n return !!params.range;\n};\n\nexport const isNotRangeParams = (\n params: UseSliderProps<boolean>,\n): params is UseSliderProps<false> => {\n return !params.range;\n};\n\nexport const trackPosition = (\n event: TouchEvent | MouseEvent,\n): TrackPosition => {\n if ('clientX' in event) {\n return {\n x: event.clientX,\n y: event.clientY,\n };\n }\n return {\n x: event.changedTouches[0].clientX,\n y: event.changedTouches[0].clientY,\n };\n};\n\nexport const getActiveValue = (\n value: number | [number, number],\n active: ActiveButton,\n) => {\n if (Array.isArray(value)) {\n return value[typeof active === 'number' ? active : 0];\n }\n return value;\n};\n\nexport const detectActiveButton: (\n posittion: TrackPosition,\n buttons: React.RefObject<HTMLButtonElement>[],\n) => ActiveButton = (position, buttons) => {\n let activeButton: ActiveButton = null;\n buttons.forEach((buttonRef, index) => {\n const button = buttonRef.current;\n if (button && position) {\n const { x, y, width, height } = button.getBoundingClientRect();\n if (\n x <= position.x &&\n x + width >= position.x &&\n y <= position.y &&\n y + height >= position.y\n ) {\n activeButton = index as ActiveButton;\n button.focus();\n }\n }\n });\n return activeButton;\n};\n\nexport const getValidValue = (\n value: number,\n min: number,\n max: number,\n step?: number | number[],\n) => {\n if (typeof value === 'number') {\n if (value >= max) return max;\n if (value <= min) return min;\n if (!Array.isArray(step)) {\n const division = step?.toString().split('.')[1];\n const stepValue = step || 1;\n if (Math.abs(value) < 1) {\n return Number(value.toFixed(division ? division.length : 0));\n }\n if (value < min) return min;\n for (let i = min; i <= max; i += stepValue) {\n if (value >= i && value < i + stepValue) {\n return Number(\n (value < i + stepValue / 2 ? i : i + stepValue).toFixed(\n division ? division.length : 0,\n ),\n );\n }\n }\n return max;\n }\n let resultValue = value;\n step.forEach((stepPoint, index) => {\n let minValue = min;\n let maxValue = max;\n if (index === 0) {\n maxValue = step[index + 1];\n } else if (index === step.length - 1) {\n minValue = stepPoint;\n maxValue = max;\n } else {\n maxValue = step[index + 1];\n minValue = stepPoint;\n }\n if (value <= maxValue && value >= minValue) {\n if ((maxValue + minValue) / 2 > value) {\n resultValue = minValue;\n } else {\n resultValue = maxValue;\n }\n }\n });\n return resultValue;\n }\n return value;\n};\n\nexport const isValidValue = (\n value: number,\n min: number,\n max: number,\n step?: number | number[],\n) => getValidValue(value, min, max, step) === value;\n\nexport const getValueByPosition = (\n position: TrackPosition,\n sliderRef: React.RefObject<HTMLDivElement | HTMLButtonElement>,\n min: number,\n max: number,\n step?: number | number[],\n) => {\n if (sliderRef.current && position) {\n const { x, width } = sliderRef.current.getBoundingClientRect();\n const absoluteSize = Math.abs(max - min);\n const value = min + ((position.x - x) * absoluteSize) / width;\n return getValidValue(value, min, max, step);\n }\n return 0;\n};\n\nexport const getNewValue = (\n changedValue: number,\n currentValue: number | [number, number],\n step: number | number[],\n min: number,\n max: number,\n activeButton: ActiveButton,\n): number | [number, number] => {\n const analyzedValue = getValidValue(\n analyzeDivisionValue(changedValue, step, min, max),\n min,\n max,\n step,\n );\n if (Array.isArray(currentValue)) {\n return activeButton === 1\n ? [currentValue[0], analyzedValue]\n : [analyzedValue, currentValue[1]];\n }\n return analyzedValue;\n};\n\nexport const analyzeDivisionValue = (\n value: number,\n step: number | number[],\n min: number,\n max: number,\n) => {\n let newValue: number = value;\n if (Array.isArray(step)) {\n const steps = getSteps(step, min, max);\n steps.forEach((stepSize) => {\n if (value && stepSize.min < value && stepSize.max >= value) {\n if ((stepSize.max + stepSize.min) / 2 > value) {\n newValue = stepSize.min;\n } else {\n newValue = stepSize.max;\n }\n }\n });\n } else {\n if (value >= max) return max;\n if (value <= min) return min;\n const nearStep = (value - min) % step;\n if (nearStep > step / 2) {\n newValue = step - nearStep + value;\n } else {\n newValue = value - nearStep;\n }\n }\n return newValue;\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"helper.js","names":["getSteps","isRangeParams","params","range","isNotRangeParams","trackPosition","event","x","clientX","y","clientY","changedTouches","getActiveValue","value","active","Array","isArray","detectActiveButton","position","buttons","activeButton","forEach","buttonRef","index","button","current","getBoundingClientRect","width","height","focus","getValidValue","min","max","step","division","toString","split","stepValue","Math","abs","toFixed","length","i","resultValue","stepPoint","minValue","maxValue","isValidValue","getValueByPosition","sliderRef","absoluteSize","getNewValue","changedValue","currentValue","analyzedValue","analyzeDivisionValue","newValue","steps","stepSize","nearStep","valueToSring","join"],"sources":["../../../../../../src/components/Slider/useSlider/helper.ts"],"sourcesContent":["import React from 'react';\n\nimport { SliderPropOnChange, SliderValue, TrackPosition } from '../helper';\nimport { getSteps } from '../useSliderStationing';\n\nexport type ActiveButton = 0 | 1 | null | undefined;\n\nexport type Stationing = {\n x: number;\n y: number;\n width: number;\n height: number;\n};\n\nexport type UseSliderProps<RANGE extends boolean = false> = {\n disabled: boolean;\n range?: RANGE;\n value: SliderValue<RANGE>;\n min: number;\n max: number;\n step?: number | number[];\n onChange?: SliderPropOnChange<RANGE>;\n onAfterChange?: SliderPropOnChange<RANGE>;\n containerRef: React.RefObject<HTMLDivElement>;\n sliderRef: React.RefObject<HTMLDivElement | HTMLButtonElement>;\n buttonRefs: React.RefObject<HTMLButtonElement>[];\n};\n\nexport type UseSliderValues = {\n onKeyPress: (e: React.KeyboardEvent, typeButton: ActiveButton) => void;\n onFocus: (\n e: React.FocusEvent<HTMLButtonElement> | React.MouseEvent,\n button: ActiveButton,\n ) => void;\n handlePress: (typeButton: ActiveButton) => void;\n onSliderClick: React.MouseEventHandler;\n activeButton: ActiveButton;\n currentValue: [number] | [number, number];\n popoverPosition: TrackPosition[];\n};\n\nexport const isRangeParams = (\n params: UseSliderProps<boolean>,\n): params is UseSliderProps<true> => {\n return !!params.range;\n};\n\nexport const isNotRangeParams = (\n params: UseSliderProps<boolean>,\n): params is UseSliderProps<false> => {\n return !params.range;\n};\n\nexport const trackPosition = (\n event: TouchEvent | MouseEvent,\n): TrackPosition => {\n if ('clientX' in event) {\n return {\n x: event.clientX,\n y: event.clientY,\n };\n }\n return {\n x: event.changedTouches[0].clientX,\n y: event.changedTouches[0].clientY,\n };\n};\n\nexport const getActiveValue = (\n value: number | [number, number],\n active: ActiveButton,\n) => {\n if (Array.isArray(value)) {\n return value[typeof active === 'number' ? active : 0];\n }\n return value;\n};\n\nexport const detectActiveButton: (\n posittion: TrackPosition,\n buttons: React.RefObject<HTMLButtonElement>[],\n) => ActiveButton = (position, buttons) => {\n let activeButton: ActiveButton = null;\n buttons.forEach((buttonRef, index) => {\n const button = buttonRef.current;\n if (button && position) {\n const { x, y, width, height } = button.getBoundingClientRect();\n if (\n x <= position.x &&\n x + width >= position.x &&\n y <= position.y &&\n y + height >= position.y\n ) {\n activeButton = index as ActiveButton;\n button.focus();\n }\n }\n });\n return activeButton;\n};\n\nexport const getValidValue = (\n value: number,\n min: number,\n max: number,\n step?: number | number[],\n) => {\n if (typeof value === 'number') {\n if (value >= max) return max;\n if (value <= min) return min;\n if (!Array.isArray(step)) {\n const division = step?.toString().split('.')[1];\n const stepValue = step || 1;\n if (Math.abs(value) < 1) {\n return Number(value.toFixed(division ? division.length : 0));\n }\n if (value < min) return min;\n for (let i = min; i <= max; i += stepValue) {\n if (value >= i && value < i + stepValue) {\n return Number(\n (value < i + stepValue / 2 ? i : i + stepValue).toFixed(\n division ? division.length : 0,\n ),\n );\n }\n }\n return max;\n }\n let resultValue = value;\n step.forEach((stepPoint, index) => {\n let minValue = min;\n let maxValue = max;\n if (index === 0) {\n maxValue = step[index + 1];\n } else if (index === step.length - 1) {\n minValue = stepPoint;\n maxValue = max;\n } else {\n maxValue = step[index + 1];\n minValue = stepPoint;\n }\n if (value <= maxValue && value >= minValue) {\n if ((maxValue + minValue) / 2 > value) {\n resultValue = minValue;\n } else {\n resultValue = maxValue;\n }\n }\n });\n return resultValue;\n }\n return value;\n};\n\nexport const isValidValue = (\n value: number,\n min: number,\n max: number,\n step?: number | number[],\n) => getValidValue(value, min, max, step) === value;\n\nexport const getValueByPosition = (\n position: TrackPosition,\n sliderRef: React.RefObject<HTMLDivElement | HTMLButtonElement>,\n min: number,\n max: number,\n step?: number | number[],\n) => {\n if (sliderRef.current && position) {\n const { x, width } = sliderRef.current.getBoundingClientRect();\n const absoluteSize = Math.abs(max - min);\n const value = min + ((position.x - x) * absoluteSize) / width;\n return getValidValue(value, min, max, step);\n }\n return 0;\n};\n\nexport const getNewValue = (\n changedValue: number,\n currentValue: number | [number, number],\n step: number | number[],\n min: number,\n max: number,\n activeButton: ActiveButton,\n): number | [number, number] => {\n const analyzedValue = getValidValue(\n analyzeDivisionValue(changedValue, step, min, max),\n min,\n max,\n step,\n );\n if (Array.isArray(currentValue)) {\n return activeButton === 1\n ? [currentValue[0], analyzedValue]\n : [analyzedValue, currentValue[1]];\n }\n return analyzedValue;\n};\n\nexport const analyzeDivisionValue = (\n value: number,\n step: number | number[],\n min: number,\n max: number,\n) => {\n let newValue: number = value;\n if (Array.isArray(step)) {\n const steps = getSteps(step, min, max);\n steps.forEach((stepSize) => {\n if (value && stepSize.min < value && stepSize.max >= value) {\n if ((stepSize.max + stepSize.min) / 2 > value) {\n newValue = stepSize.min;\n } else {\n newValue = stepSize.max;\n }\n }\n });\n } else {\n if (value >= max) return max;\n if (value <= min) return min;\n const nearStep = (value - min) % step;\n if (nearStep > step / 2) {\n newValue = step - nearStep + value;\n } else {\n newValue = value - nearStep;\n }\n }\n return newValue;\n};\n\nexport const valueToSring = (value: number | number[] | undefined | null) => {\n if (!value) {\n return '';\n }\n return typeof value === 'number' ? value.toString() : value.join('-');\n};\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import _toConsumableArray from"@babel/runtime/helpers/toConsumableArray";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import{useCallback,useEffect,useMemo,useRef,useState}from"react";import{useClickOutside}from"../../../hooks/useClickOutside";import{useComponentSize}from"../../../hooks/useComponentSize/useComponentSize";import{useMutableRef}from"../../../hooks/useMutableRef/useMutableRef";import{getActiveValue,getNewValue,getValidValue,getValueByPosition,isNotRangeParams,isRangeParams,trackPosition}from"./helper";export var COUNT_STEPS=250;export function useSlider(a){var b=a.disabled,c=a.range,d=a.value,f=a.min,g=a.max,h=a.step,i=void 0===h?1:h,j=a.onChange,k=a.onAfterChange,l=a.sliderRef,m=a.containerRef,n=a.buttonRefs,o=g>f?f:0,p=g>f?g:100,q=useMemo(function(){if(!Array.isArray(i)&&1<=i){var a=Math.abs((p-o)/COUNT_STEPS);return a>i?a-a%i:Math.max(a,i)}return i},[g,f,i]),r=useState(d),s=_slicedToArray(r,2),t=s[0],u=s[1],v=useState(null),w=_slicedToArray(v,2),x=w[0],y=w[1],z=useState(null),A=_slicedToArray(z,2),B=A[0],C=A[1],D=useState(null),E=_slicedToArray(D,2),F=E[0],G=E[1],H=useRef(null),I=useComponentSize(l),J=useMutableRef(t);useClickOutside({isActive:!0,ignoreClicksInsideRefs:[m],handler:function handler(){G(null),H.current=null}}),useEffect(function(){b&&
|
|
1
|
+
import _toConsumableArray from"@babel/runtime/helpers/toConsumableArray";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import{useCallback,useEffect,useMemo,useRef,useState}from"react";import{useClickOutside}from"../../../hooks/useClickOutside";import{useComponentSize}from"../../../hooks/useComponentSize/useComponentSize";import{useMutableRef}from"../../../hooks/useMutableRef/useMutableRef";import{getActiveValue,getNewValue,getValidValue,getValueByPosition,isNotRangeParams,isRangeParams,trackPosition,valueToSring}from"./helper";export var COUNT_STEPS=250;export function useSlider(a){var b=a.disabled,c=a.range,d=a.value,f=a.min,g=a.max,h=a.step,i=void 0===h?1:h,j=a.onChange,k=a.onAfterChange,l=a.sliderRef,m=a.containerRef,n=a.buttonRefs,o=g>f?f:0,p=g>f?g:100,q=useMemo(function(){if(!Array.isArray(i)&&1<=i){var a=Math.abs((p-o)/COUNT_STEPS);return a>i?a-a%i:Math.max(a,i)}return i},[g,f,i]),r=useState(d),s=_slicedToArray(r,2),t=s[0],u=s[1],v=useState(null),w=_slicedToArray(v,2),x=w[0],y=w[1],z=useState(null),A=_slicedToArray(z,2),B=A[0],C=A[1],D=useState(null),E=_slicedToArray(D,2),F=E[0],G=E[1],H=useRef(null),I=useComponentSize(l),J=useMutableRef(t),K=useMutableRef(j),L=useMutableRef(k);useClickOutside({isActive:!0,ignoreClicksInsideRefs:[m],handler:function handler(){G(null),H.current=null}}),useEffect(function(){b&&M("remove")},[b]);var M=function(a){var b="add"===a?"addEventListener":"removeEventListener";document[b]("mouseup",R),document[b]("touchend",R),document[b]("mousemove",Q),document[b]("touchmove",Q)};useEffect(function(){Array.isArray(t)?(O(t[0],0),O(t[1],1)):O(t,0)},[t]),useEffect(function(){valueToSring(d)!==valueToSring(t)&&(Array.isArray(d)&&Array.isArray(t)?(-1===t.indexOf(d[0])||-1===t.indexOf(d[1]))&&(u(d),O(getActiveValue(d,H.current),0)):(u(d),O(getActiveValue(d,H.current),0)),G(null),H.current=null)},[d]),useEffect(function(){var a=Array.isArray(t)?[getNewValue(t[0],t[0],i,f,g,0),getNewValue(t[1],t[1],i,f,g,1)]:getNewValue(t,t,i,f,g,0);if(valueToSring(a)!==valueToSring(t)){var b;null===(b=K.current)||void 0===b?void 0:b.call(K,a,{})}},[i]),useEffect(function(){if("undefined"!=typeof d){var b=isRangeParams(a)?[getValidValue(a.value[0],f,g,i),getValidValue(a.value[1],f,g,i)]:getValidValue(a.value,f,g,i);u(b)}},[c,typeof d]),useEffect(function(){if(isRangeParams(a)&&a.value[0]>a.value[1]){var b,c=[a.value[1],a.value[1]];null===(b=K.current)||void 0===b?void 0:b.call(K,c,{})}},[]);var N=useCallback(function(a,c){if(!b&&"number"==typeof c&&"undefined"!=typeof t){a.preventDefault(),a.stopPropagation();var d=Array.isArray(i)?1:i||1,e=!1,h=getActiveValue(t,c);switch(a.key){case"ArrowUp":case"ArrowRight":case"+":e=!0;break;case"ArrowLeft":case"ArrowDown":case"-":e=!0,d*=-1;break;default:}if(e){var j;Array.isArray(i)&&i.forEach(function(a,b){"number"==typeof c&&h===a&&(0<=d?0===b?d=i[1]-o:d=("undefined"==typeof i[b+1]?p:i[b+1])-a:0===b?d=o-i[1]:d=("undefined"==typeof i[b-1]?o:i[b-1])-a)});var k=getNewValue(h+d,t,i,f,g,c);u(k),O(getActiveValue(k,c),c),null===(j=K.current)||void 0===j?void 0:j.call(K,k,{e:a})}}},[t,i,f,g]),O=function(a,b){if(l.current&&"number"==typeof b){var c=n[b].current||l.current,d=l.current.getBoundingClientRect(),e=d.x,f=d.width,g={y:c.offsetTop+c.offsetHeight+50,x:e+Math.abs((a-o)/(p-o))*f};0===b?y(g):C(g)}},P=function(a){if("number"!=typeof H.current)return d;var b=trackPosition(a),c=getValueByPosition(b,l,o,p,i);return getNewValue(c,t,q,f,g,H.current)},Q=function(a,b){var c=b||H.current;if("number"==typeof c){var d=P(a),e=getActiveValue(t,c),f=getActiveValue(d,c);if(u(d),valueToSring(e)!==valueToSring(f)){var g;null===(g=L.current)||void 0===g?void 0:g.call(L,d,{e:a})}}};useEffect(function(){if(isRangeParams(a)){var b;null===(b=a.value)||void 0===b?void 0:b.forEach(function(a,b){O(getActiveValue(a,H.current),0===b?0:1)})}isNotRangeParams(a)&&O(getActiveValue(d,H.current),0),H.current=null},[I,typeof d]);var R=useCallback(function(b){if(M("remove"),isRangeParams(a)&&Array.isArray(J.current)){var c,d=_toConsumableArray(J.current).sort(function(c,a){return+c-+a});null===(c=K.current)||void 0===c?void 0:c.call(K,d,{e:b})}if(isNotRangeParams(a)&&"number"==typeof J.current){var e;null===(e=K.current)||void 0===e?void 0:e.call(K,J.current,{e:b})}G(null),H.current=null},[d,Q]),S=useCallback(function(a){b||(G(a),H.current=a,M("add"))},[t,d,Q,b]);return{onKeyPress:N,onFocus:function onFocus(a,b){G(b),H.current=b},handlePress:S,onSliderClick:function onSliderClick(b){if(isNotRangeParams(a)){var c=getValueByPosition({x:b.pageX,y:b.pageY},l,o,p,i),e=getNewValue(c,t,q,f,g,H.current);if(e!==d){var h;u(e),O(getActiveValue(e,0),0),null===(h=K.current)||void 0===h?void 0:h.call(K,e,{e:b})}}},activeButton:F,popoverPosition:[x,B],currentValue:Array.isArray(t)?t:[t]}}
|
|
2
2
|
//# sourceMappingURL=useSlider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSlider.js","names":["useCallback","useEffect","useMemo","useRef","useState","useClickOutside","useComponentSize","useMutableRef","getActiveValue","getNewValue","getValidValue","getValueByPosition","isNotRangeParams","isRangeParams","trackPosition","COUNT_STEPS","useSlider","props","disabled","range","value","min","max","step","onChange","onAfterChange","sliderRef","containerRef","buttonRefs","minValue","maxValue","dragStepValue","Array","isArray","val","Math","abs","currentValue","setCurrentValue","leftPopover","setLeftPopover","rightPopover","setRightPopover","currentButton","setCurrentButton","activeButton","sizeSlider","lastValue","isActive","ignoreClicksInsideRefs","handler","current","controlListeners","type","method","document","handleRelease","handleTouchMove","setTooltipPosition","JSON","stringify","indexOf","newValue","targetValue","onKeyPress","event","typeButton","preventDefault","stopPropagation","stepIncrement","validKeyCode","changedValue","key","forEach","stepPoint","index","e","position","button","getBoundingClientRect","x","width","newPosition","y","offsetTop","offsetHeight","changePosition","positionValue","oldValue","copyValues","sort","a","b","handlePress","onFocus","onSliderClick","pageX","pageY","popoverPosition"],"sources":["../../../../../../src/components/Slider/useSlider/useSlider.ts"],"sourcesContent":["import React, {\n MutableRefObject,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { useClickOutside } from '##/hooks/useClickOutside';\n\nimport { useComponentSize } from '../../../hooks/useComponentSize/useComponentSize';\nimport { useMutableRef } from '../../../hooks/useMutableRef/useMutableRef';\nimport { SliderValue, TrackPosition } from '../helper';\nimport {\n ActiveButton,\n getActiveValue,\n getNewValue,\n getValidValue,\n getValueByPosition,\n isNotRangeParams,\n isRangeParams,\n trackPosition,\n UseSliderProps,\n UseSliderValues,\n} from './helper';\n\nexport const COUNT_STEPS = 250;\n\nexport function useSlider<RANGE extends boolean>(\n props: UseSliderProps<RANGE>,\n): UseSliderValues {\n const {\n disabled,\n range,\n value,\n min,\n max,\n step = 1,\n onChange,\n onAfterChange,\n sliderRef,\n containerRef,\n buttonRefs,\n } = props;\n\n const minValue = max > min ? min : 0;\n const maxValue = max > min ? max : 100;\n\n const dragStepValue = useMemo(() => {\n if (!Array.isArray(step)) {\n if (step >= 1) {\n const val = Math.abs((maxValue - minValue) / COUNT_STEPS);\n if (val > step) {\n return val - (val % step);\n }\n return Math.max(val, step);\n }\n }\n return step;\n }, [max, min, step]);\n\n const [currentValue, setCurrentValue] = useState<number | [number, number]>(\n value,\n );\n const [leftPopover, setLeftPopover] = useState<TrackPosition>(null);\n const [rightPopover, setRightPopover] = useState<TrackPosition>(null);\n const [currentButton, setCurrentButton] = useState<ActiveButton | null>(null);\n\n const activeButton: MutableRefObject<ActiveButton | null> = useRef(null);\n\n const sizeSlider = useComponentSize(sliderRef);\n\n const lastValue = useMutableRef(currentValue);\n\n useClickOutside({\n isActive: true,\n ignoreClicksInsideRefs: [containerRef],\n handler: () => {\n setCurrentButton(null);\n activeButton.current = null;\n },\n });\n\n useEffect(() => {\n if (disabled) {\n controlListeners('remove');\n }\n }, [disabled]);\n\n const controlListeners = (type: 'add' | 'remove') => {\n const method = type === 'add' ? 'addEventListener' : 'removeEventListener';\n document[method]('mouseup', handleRelease);\n document[method]('touchend', handleRelease);\n document[method]('mousemove', handleTouchMove);\n document[method]('touchmove', handleTouchMove);\n };\n\n useEffect(() => {\n if (Array.isArray(currentValue)) {\n setTooltipPosition(currentValue[0], 0);\n setTooltipPosition(currentValue[1], 1);\n } else {\n setTooltipPosition(currentValue, 0);\n }\n }, [currentValue]);\n\n useEffect(() => {\n if (JSON.stringify(value) !== JSON.stringify(currentValue)) {\n if (Array.isArray(value) && Array.isArray(currentValue)) {\n if (\n !(\n currentValue.indexOf(value[0]) !== -1 &&\n currentValue.indexOf(value[1]) !== -1\n )\n ) {\n setCurrentValue(value);\n setTooltipPosition(getActiveValue(value, activeButton.current), 0);\n }\n } else {\n setCurrentValue(value);\n setTooltipPosition(getActiveValue(value, activeButton.current), 0);\n }\n setCurrentButton(null);\n activeButton.current = null;\n }\n }, [value]);\n\n useEffect(() => {\n const newValue = Array.isArray(currentValue)\n ? ([\n getNewValue(currentValue[0], currentValue[0], step, min, max, 0),\n getNewValue(currentValue[1], currentValue[1], step, min, max, 1),\n ] as SliderValue<RANGE>)\n : (getNewValue(\n currentValue,\n currentValue,\n step,\n min,\n max,\n 0,\n ) as SliderValue<RANGE>);\n onChange?.(newValue, {});\n }, [step]);\n\n useEffect(() => {\n if (typeof value !== 'undefined') {\n const targetValue = isRangeParams(props)\n ? ([\n getValidValue(props.value[0], min, max, step),\n getValidValue(props.value[1], min, max, step),\n ] as [number, number])\n : getValidValue(props.value as number, min, max, step);\n setCurrentValue(targetValue);\n }\n }, [range, typeof value]);\n\n useEffect(() => {\n if (isRangeParams(props)) {\n if (props.value[0] > props.value[1]) {\n const newValue: SliderValue<true> = [props.value[1], props.value[1]];\n props.onChange?.(newValue, {});\n }\n }\n }, []);\n\n const onSliderClick = (e: React.MouseEvent) => {\n if (isNotRangeParams(props)) {\n const positionValue = getValueByPosition(\n { x: e.pageX, y: e.pageY },\n sliderRef,\n minValue,\n maxValue,\n step,\n );\n const newValue = getNewValue(\n positionValue,\n currentValue,\n dragStepValue,\n min,\n max,\n activeButton.current,\n ) as SliderValue<RANGE>;\n if (newValue !== value) {\n setCurrentValue(newValue);\n setTooltipPosition(getActiveValue(newValue, 0), 0);\n onChange?.(newValue, {\n e,\n });\n }\n }\n };\n\n const onKeyPress = useCallback(\n (event: React.KeyboardEvent, typeButton: ActiveButton) => {\n if (\n !disabled &&\n typeof typeButton === 'number' &&\n typeof currentValue !== 'undefined'\n ) {\n event.preventDefault();\n event.stopPropagation();\n let stepIncrement = !Array.isArray(step) ? step || 1 : 1;\n let validKeyCode = false;\n const changedValue = getActiveValue(currentValue, typeButton);\n switch (event.key) {\n case 'ArrowUp':\n case 'ArrowRight':\n case '+':\n validKeyCode = true;\n break;\n case 'ArrowLeft':\n case 'ArrowDown':\n case '-':\n validKeyCode = true;\n stepIncrement *= -1;\n break;\n default:\n break;\n }\n if (validKeyCode) {\n if (Array.isArray(step)) {\n step.forEach((stepPoint, index) => {\n if (\n typeof typeButton === 'number' &&\n changedValue === stepPoint\n ) {\n if (stepIncrement >= 0) {\n if (index === 0) {\n stepIncrement = step[1] - minValue;\n } else {\n stepIncrement =\n (typeof step[index + 1] !== 'undefined'\n ? step[index + 1]\n : maxValue) - stepPoint;\n }\n } else if (index === 0) {\n stepIncrement = minValue - step[1];\n } else {\n stepIncrement =\n (typeof step[index - 1] !== 'undefined'\n ? step[index - 1]\n : minValue) - stepPoint;\n }\n }\n });\n }\n const newValue = getNewValue(\n changedValue + stepIncrement,\n currentValue,\n step,\n min,\n max,\n typeButton,\n ) as SliderValue<RANGE>;\n setCurrentValue(newValue);\n setTooltipPosition(getActiveValue(newValue, typeButton), typeButton);\n onChange?.(newValue, {\n e: event,\n });\n }\n }\n },\n [currentValue, step, min, max],\n );\n\n const setTooltipPosition = (value: number, position: ActiveButton) => {\n if (sliderRef.current && typeof position === 'number') {\n const button = buttonRefs[position].current || sliderRef.current;\n const { x, width } = sliderRef.current.getBoundingClientRect();\n const newPosition = {\n y: button.offsetTop + button.offsetHeight + 50,\n x: x + Math.abs((value - minValue) / (maxValue - minValue)) * width,\n };\n if (position === 0) {\n setLeftPopover(newPosition);\n } else {\n setRightPopover(newPosition);\n }\n }\n };\n\n const changePosition = (event: Event) => {\n const nativeEvent = event as MouseEvent | TouchEvent;\n if (typeof activeButton.current !== 'number') {\n return value;\n }\n const position = trackPosition(nativeEvent);\n const positionValue = getValueByPosition(\n position,\n sliderRef,\n minValue,\n maxValue,\n step,\n );\n return getNewValue(\n positionValue,\n currentValue,\n dragStepValue,\n min,\n max,\n activeButton.current,\n );\n };\n\n const onFocus = (\n e: React.FocusEvent | React.MouseEvent,\n button: ActiveButton,\n ) => {\n setCurrentButton(button);\n activeButton.current = button;\n };\n\n const handleTouchMove = (\n event: MouseEvent | TouchEvent | Event,\n typeButton?: ActiveButton,\n ) => {\n const button = typeButton || activeButton.current;\n if (typeof button === 'number') {\n const position = changePosition(event) as SliderValue<RANGE>;\n const oldValue: number = getActiveValue(currentValue, button);\n const newValue: number = getActiveValue(position, button);\n setCurrentValue(position);\n if (oldValue !== newValue) {\n onAfterChange?.(position, { e: event });\n }\n }\n };\n\n useEffect(() => {\n if (isRangeParams(props)) {\n props.value?.forEach((val, index) => {\n setTooltipPosition(\n getActiveValue(val, activeButton.current),\n index === 0 ? 0 : 1,\n );\n });\n }\n if (isNotRangeParams(props)) {\n setTooltipPosition(getActiveValue(value, activeButton.current), 0);\n }\n activeButton.current = null;\n }, [sizeSlider, typeof value]);\n\n const handleRelease = useCallback(\n (e: MouseEvent | TouchEvent | Event) => {\n controlListeners('remove');\n if (isRangeParams(props) && Array.isArray(lastValue.current)) {\n const copyValues = [...lastValue.current].sort(\n (a, b) => Number(a) - Number(b),\n ) as SliderValue<true>;\n props.onChange?.(copyValues, { e });\n }\n if (isNotRangeParams(props) && typeof lastValue.current === 'number') {\n props.onChange?.(lastValue.current, { e });\n }\n setCurrentButton(null);\n activeButton.current = null;\n },\n [lastValue, value, onChange, handleTouchMove],\n );\n\n const handlePress = useCallback(\n (typeButton: ActiveButton) => {\n if (!disabled) {\n setCurrentButton(typeButton);\n activeButton.current = typeButton;\n controlListeners('add');\n }\n },\n [currentValue, value, onChange, handleTouchMove, disabled],\n );\n\n return {\n onKeyPress,\n onFocus,\n handlePress,\n onSliderClick,\n activeButton: currentButton,\n popoverPosition: [leftPopover, rightPopover],\n currentValue: Array.isArray(currentValue) ? currentValue : [currentValue],\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useSlider.js","names":["useCallback","useEffect","useMemo","useRef","useState","useClickOutside","useComponentSize","useMutableRef","getActiveValue","getNewValue","getValidValue","getValueByPosition","isNotRangeParams","isRangeParams","trackPosition","valueToSring","COUNT_STEPS","useSlider","props","disabled","range","value","min","max","step","onChange","onAfterChange","sliderRef","containerRef","buttonRefs","minValue","maxValue","dragStepValue","Array","isArray","val","Math","abs","currentValue","setCurrentValue","leftPopover","setLeftPopover","rightPopover","setRightPopover","currentButton","setCurrentButton","activeButton","sizeSlider","currentValueRef","onChangeRef","onAfterChangeRef","isActive","ignoreClicksInsideRefs","handler","current","controlListeners","type","method","document","handleRelease","handleTouchMove","setTooltipPosition","indexOf","newValue","targetValue","onKeyPress","event","typeButton","preventDefault","stopPropagation","stepIncrement","validKeyCode","changedValue","key","forEach","stepPoint","index","e","position","button","getBoundingClientRect","x","width","newPosition","y","offsetTop","offsetHeight","changePosition","positionValue","oldValue","copyValues","sort","a","b","handlePress","onFocus","onSliderClick","pageX","pageY","popoverPosition"],"sources":["../../../../../../src/components/Slider/useSlider/useSlider.ts"],"sourcesContent":["import React, {\n MutableRefObject,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { useClickOutside } from '##/hooks/useClickOutside';\nimport { useComponentSize } from '##/hooks/useComponentSize/useComponentSize';\nimport { useMutableRef } from '##/hooks/useMutableRef/useMutableRef';\n\nimport { SliderValue, TrackPosition } from '../helper';\nimport {\n ActiveButton,\n getActiveValue,\n getNewValue,\n getValidValue,\n getValueByPosition,\n isNotRangeParams,\n isRangeParams,\n trackPosition,\n UseSliderProps,\n UseSliderValues,\n valueToSring,\n} from './helper';\n\nexport const COUNT_STEPS = 250;\n\nexport function useSlider<RANGE extends boolean>(\n props: UseSliderProps<RANGE>,\n): UseSliderValues {\n const {\n disabled,\n range,\n value,\n min,\n max,\n step = 1,\n onChange,\n onAfterChange,\n sliderRef,\n containerRef,\n buttonRefs,\n } = props;\n\n const minValue = max > min ? min : 0;\n const maxValue = max > min ? max : 100;\n\n const dragStepValue = useMemo(() => {\n if (!Array.isArray(step)) {\n if (step >= 1) {\n const val = Math.abs((maxValue - minValue) / COUNT_STEPS);\n if (val > step) {\n return val - (val % step);\n }\n return Math.max(val, step);\n }\n }\n return step;\n }, [max, min, step]);\n\n const [currentValue, setCurrentValue] = useState<number | [number, number]>(\n value,\n );\n const [leftPopover, setLeftPopover] = useState<TrackPosition>(null);\n const [rightPopover, setRightPopover] = useState<TrackPosition>(null);\n const [currentButton, setCurrentButton] = useState<ActiveButton | null>(null);\n\n const activeButton: MutableRefObject<ActiveButton | null> = useRef(null);\n\n const sizeSlider = useComponentSize(sliderRef);\n\n const currentValueRef = useMutableRef(currentValue);\n const onChangeRef = useMutableRef(onChange);\n const onAfterChangeRef = useMutableRef(onAfterChange);\n\n useClickOutside({\n isActive: true,\n ignoreClicksInsideRefs: [containerRef],\n handler: () => {\n setCurrentButton(null);\n activeButton.current = null;\n },\n });\n\n useEffect(() => {\n if (disabled) {\n controlListeners('remove');\n }\n }, [disabled]);\n\n const controlListeners = (type: 'add' | 'remove') => {\n const method = type === 'add' ? 'addEventListener' : 'removeEventListener';\n document[method]('mouseup', handleRelease);\n document[method]('touchend', handleRelease);\n document[method]('mousemove', handleTouchMove);\n document[method]('touchmove', handleTouchMove);\n };\n\n useEffect(() => {\n if (Array.isArray(currentValue)) {\n setTooltipPosition(currentValue[0], 0);\n setTooltipPosition(currentValue[1], 1);\n } else {\n setTooltipPosition(currentValue, 0);\n }\n }, [currentValue]);\n\n useEffect(() => {\n if (valueToSring(value) !== valueToSring(currentValue)) {\n if (Array.isArray(value) && Array.isArray(currentValue)) {\n if (\n !(\n currentValue.indexOf(value[0]) !== -1 &&\n currentValue.indexOf(value[1]) !== -1\n )\n ) {\n setCurrentValue(value);\n setTooltipPosition(getActiveValue(value, activeButton.current), 0);\n }\n } else {\n setCurrentValue(value);\n setTooltipPosition(getActiveValue(value, activeButton.current), 0);\n }\n setCurrentButton(null);\n activeButton.current = null;\n }\n }, [value]);\n\n useEffect(() => {\n const newValue = Array.isArray(currentValue)\n ? ([\n getNewValue(currentValue[0], currentValue[0], step, min, max, 0),\n getNewValue(currentValue[1], currentValue[1], step, min, max, 1),\n ] as SliderValue<RANGE>)\n : (getNewValue(\n currentValue,\n currentValue,\n step,\n min,\n max,\n 0,\n ) as SliderValue<RANGE>);\n if (valueToSring(newValue) !== valueToSring(currentValue)) {\n onChangeRef.current?.(newValue, {});\n }\n }, [step]);\n\n useEffect(() => {\n if (typeof value !== 'undefined') {\n const targetValue = isRangeParams(props)\n ? ([\n getValidValue(props.value[0], min, max, step),\n getValidValue(props.value[1], min, max, step),\n ] as [number, number])\n : getValidValue(props.value as number, min, max, step);\n setCurrentValue(targetValue);\n }\n }, [range, typeof value]);\n\n useEffect(() => {\n if (isRangeParams(props) && props.value[0] > props.value[1]) {\n const newValue: SliderValue<true> = [props.value[1], props.value[1]];\n onChangeRef.current?.(newValue as SliderValue<RANGE>, {});\n }\n }, []);\n\n const onSliderClick = (e: React.MouseEvent) => {\n if (isNotRangeParams(props)) {\n const positionValue = getValueByPosition(\n { x: e.pageX, y: e.pageY },\n sliderRef,\n minValue,\n maxValue,\n step,\n );\n const newValue = getNewValue(\n positionValue,\n currentValue,\n dragStepValue,\n min,\n max,\n activeButton.current,\n ) as SliderValue<RANGE>;\n if (newValue !== value) {\n setCurrentValue(newValue);\n setTooltipPosition(getActiveValue(newValue, 0), 0);\n onChangeRef.current?.(newValue, {\n e,\n });\n }\n }\n };\n\n const onKeyPress = useCallback(\n (event: React.KeyboardEvent, typeButton: ActiveButton) => {\n if (\n !disabled &&\n typeof typeButton === 'number' &&\n typeof currentValue !== 'undefined'\n ) {\n event.preventDefault();\n event.stopPropagation();\n let stepIncrement = !Array.isArray(step) ? step || 1 : 1;\n let validKeyCode = false;\n const changedValue = getActiveValue(currentValue, typeButton);\n switch (event.key) {\n case 'ArrowUp':\n case 'ArrowRight':\n case '+':\n validKeyCode = true;\n break;\n case 'ArrowLeft':\n case 'ArrowDown':\n case '-':\n validKeyCode = true;\n stepIncrement *= -1;\n break;\n default:\n break;\n }\n if (validKeyCode) {\n if (Array.isArray(step)) {\n step.forEach((stepPoint, index) => {\n if (\n typeof typeButton === 'number' &&\n changedValue === stepPoint\n ) {\n if (stepIncrement >= 0) {\n if (index === 0) {\n stepIncrement = step[1] - minValue;\n } else {\n stepIncrement =\n (typeof step[index + 1] !== 'undefined'\n ? step[index + 1]\n : maxValue) - stepPoint;\n }\n } else if (index === 0) {\n stepIncrement = minValue - step[1];\n } else {\n stepIncrement =\n (typeof step[index - 1] !== 'undefined'\n ? step[index - 1]\n : minValue) - stepPoint;\n }\n }\n });\n }\n const newValue = getNewValue(\n changedValue + stepIncrement,\n currentValue,\n step,\n min,\n max,\n typeButton,\n ) as SliderValue<RANGE>;\n setCurrentValue(newValue);\n setTooltipPosition(getActiveValue(newValue, typeButton), typeButton);\n onChangeRef.current?.(newValue, {\n e: event,\n });\n }\n }\n },\n [currentValue, step, min, max],\n );\n\n const setTooltipPosition = (value: number, position: ActiveButton) => {\n if (sliderRef.current && typeof position === 'number') {\n const button = buttonRefs[position].current || sliderRef.current;\n const { x, width } = sliderRef.current.getBoundingClientRect();\n const newPosition = {\n y: button.offsetTop + button.offsetHeight + 50,\n x: x + Math.abs((value - minValue) / (maxValue - minValue)) * width,\n };\n if (position === 0) {\n setLeftPopover(newPosition);\n } else {\n setRightPopover(newPosition);\n }\n }\n };\n\n const changePosition = (event: Event) => {\n const nativeEvent = event as MouseEvent | TouchEvent;\n if (typeof activeButton.current !== 'number') {\n return value;\n }\n const position = trackPosition(nativeEvent);\n const positionValue = getValueByPosition(\n position,\n sliderRef,\n minValue,\n maxValue,\n step,\n );\n return getNewValue(\n positionValue,\n currentValue,\n dragStepValue,\n min,\n max,\n activeButton.current,\n );\n };\n\n const onFocus = (\n e: React.FocusEvent | React.MouseEvent,\n button: ActiveButton,\n ) => {\n setCurrentButton(button);\n activeButton.current = button;\n };\n\n const handleTouchMove = (\n event: MouseEvent | TouchEvent | Event,\n typeButton?: ActiveButton,\n ) => {\n const button = typeButton || activeButton.current;\n if (typeof button === 'number') {\n const position = changePosition(event) as SliderValue<RANGE>;\n const oldValue: number = getActiveValue(currentValue, button);\n const newValue: number = getActiveValue(position, button);\n setCurrentValue(position);\n if (valueToSring(oldValue) !== valueToSring(newValue)) {\n onAfterChangeRef.current?.(position, { e: event });\n }\n }\n };\n\n useEffect(() => {\n if (isRangeParams(props)) {\n props.value?.forEach((val, index) => {\n setTooltipPosition(\n getActiveValue(val, activeButton.current),\n index === 0 ? 0 : 1,\n );\n });\n }\n if (isNotRangeParams(props)) {\n setTooltipPosition(getActiveValue(value, activeButton.current), 0);\n }\n activeButton.current = null;\n }, [sizeSlider, typeof value]);\n\n const handleRelease = useCallback(\n (e: MouseEvent | TouchEvent | Event) => {\n controlListeners('remove');\n if (isRangeParams(props) && Array.isArray(currentValueRef.current)) {\n const copyValues = [...currentValueRef.current].sort(\n (a, b) => Number(a) - Number(b),\n ) as SliderValue<true>;\n onChangeRef.current?.(copyValues as SliderValue<RANGE>, { e });\n }\n if (\n isNotRangeParams(props) &&\n typeof currentValueRef.current === 'number'\n ) {\n onChangeRef.current?.(currentValueRef.current as SliderValue<RANGE>, {\n e,\n });\n }\n setCurrentButton(null);\n activeButton.current = null;\n },\n [value, handleTouchMove],\n );\n\n const handlePress = useCallback(\n (typeButton: ActiveButton) => {\n if (!disabled) {\n setCurrentButton(typeButton);\n activeButton.current = typeButton;\n controlListeners('add');\n }\n },\n [currentValue, value, handleTouchMove, disabled],\n );\n\n return {\n onKeyPress,\n onFocus,\n handlePress,\n onSliderClick,\n activeButton: currentButton,\n popoverPosition: [leftPopover, rightPopover],\n currentValue: Array.isArray(currentValue) ? currentValue : [currentValue],\n };\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import _defineProperty from"@babel/runtime/helpers/defineProperty";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["preview","maxHeight","content","size","lessIcon","lessLabel","children","moreIcon","moreLabel","className","lineClamp","buttonIndent","buttonAlign","style"];function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}import"./Spoiler.css";import React,{forwardRef}from"react";import{Text}from"../Text";import{getElementSize}from"../../hooks/useComponentSize";import{useFlag}from"../../hooks/useFlag";import{useForkRef}from"../../hooks/useForkRef";import{useRefs}from"../../hooks/useRefs";import{useResizeObserved}from"../../hooks/useResizeObserved";import{cnMixSpace}from"../../mixs/MixSpace";import{cn}from"../../utils/bem";import{SpoilerButton}from"./SpoilerButton";import{defaultSpoilerPropButtonAlign,defaultSpoilerPropSize}from"./types";export var cnSpoiler=cn("Spoiler");var spoilerOffsetMap={xs:"xs",s:"s",m:"m",l:"m"},getContent=function(a){var b=a.children,c=a.content,d=a.preview,e=a.lineClamp;return e?["lineClamp",b,b]:b?["blur",b,b]:["toggle",d,c]};export var Spoiler=forwardRef(function(a,b){var c=a.preview,d=a.maxHeight,e=a.content,f=a.size,g=void 0===f?defaultSpoilerPropSize:f,h=a.lessIcon,i=a.lessLabel,j=a.children,k=a.moreIcon,l=a.moreLabel,m=a.className,n=a.lineClamp,o=a.buttonIndent,p=a.buttonAlign,q=void 0===p?defaultSpoilerPropButtonAlign:p,r=a.style,s=_objectWithoutProperties(a,_excluded),
|
|
1
|
+
import _defineProperty from"@babel/runtime/helpers/defineProperty";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["preview","maxHeight","content","size","lessIcon","lessLabel","children","moreIcon","moreLabel","className","lineClamp","buttonIndent","buttonAlign","style","opened","onOpenButtonClick"];function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}import"./Spoiler.css";import React,{forwardRef,useCallback,useEffect}from"react";import{Text}from"../Text";import{getElementSize}from"../../hooks/useComponentSize";import{useFlag}from"../../hooks/useFlag";import{useForkRef}from"../../hooks/useForkRef";import{useMutableRef}from"../../hooks/useMutableRef";import{useRefs}from"../../hooks/useRefs";import{useResizeObserved}from"../../hooks/useResizeObserved";import{cnMixSpace}from"../../mixs/MixSpace";import{cn}from"../../utils/bem";import{SpoilerButton}from"./SpoilerButton";import{defaultSpoilerPropButtonAlign,defaultSpoilerPropSize}from"./types";export var cnSpoiler=cn("Spoiler");var spoilerOffsetMap={xs:"xs",s:"s",m:"m",l:"m"},getContent=function(a){var b=a.children,c=a.content,d=a.preview,e=a.lineClamp;return e?["lineClamp",b,b]:b?["blur",b,b]:["toggle",d,c]};export var Spoiler=forwardRef(function(a,b){var c=a.preview,d=a.maxHeight,e=a.content,f=a.size,g=void 0===f?defaultSpoilerPropSize:f,h=a.lessIcon,i=a.lessLabel,j=a.children,k=a.moreIcon,l=a.moreLabel,m=a.className,n=a.lineClamp,o=a.buttonIndent,p=a.buttonAlign,q=void 0===p?defaultSpoilerPropButtonAlign:p,r=a.style,s=a.opened,t=void 0!==s&&s,u=a.onOpenButtonClick,v=_objectWithoutProperties(a,_excluded),w=useFlag(t),x=_slicedToArray(w,2),y=x[0],z=x[1],A=getContent(a,y),B=_slicedToArray(A,3),C=B[0],D=B[1],E=B[2],F=useRefs(3),G=useResizeObserved(F,getElementSize),H=G[1].height>G[0].height,I=useMutableRef(u),J=useCallback(function(a){z.toggle(),I.current&&I.current(!y,a)},[]);return useEffect(function(){z.set(t)},[t]),React.createElement("div",Object.assign({},v,{className:cnSpoiler({size:g},[m]),ref:useForkRef([b,F[2]]),style:_objectSpread(_objectSpread(_objectSpread(_objectSpread({},r),"number"==typeof d&&_defineProperty({},"--spoiler-content-max-height","".concat(d,"px"))),"number"==typeof n&&_defineProperty({},"--spoiler-content-line-clamp",n)),"number"==typeof G[2].width&&_defineProperty({},"--spoiler-content-width","".concat(G[2].width,"px")))}),React.createElement(Text,{ref:F[0],className:cnSpoiler("Content",{mode:C,hidden:y||!H}),size:g},D),React.createElement(Text,{ref:F[1],className:cnSpoiler("Content",{hidden:!y&&H}),size:g},E),H&&React.createElement("div",{className:cnSpoiler("ButtonWrapper",{align:q},[cnMixSpace({mT:"undefined"==typeof o?spoilerOffsetMap[g]:o})])},React.createElement(SpoilerButton,{className:cnSpoiler("Button"),lessIcon:h,lessLabel:i,moreIcon:k,moreLabel:l,onClick:J,open:y,size:g})))});
|
|
2
2
|
//# sourceMappingURL=Spoiler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Spoiler.js","names":["React","forwardRef","Text","getElementSize","useFlag","useForkRef","useRefs","useResizeObserved","cnMixSpace","cn","SpoilerButton","defaultSpoilerPropButtonAlign","defaultSpoilerPropSize","cnSpoiler","spoilerOffsetMap","xs","s","m","l","getContent","children","content","preview","lineClamp","Spoiler","props","ref","maxHeight","size","lessIcon","lessLabel","moreIcon","moreLabel","className","buttonIndent","buttonAlign","style","otherProps","isOpen","setIsOpen","mode","previewContent","fullContent","refs","sizes","visibleMoreButton","height","width","hidden","align","mT"
|
|
1
|
+
{"version":3,"file":"Spoiler.js","names":["React","forwardRef","useCallback","useEffect","Text","getElementSize","useFlag","useForkRef","useMutableRef","useRefs","useResizeObserved","cnMixSpace","cn","SpoilerButton","defaultSpoilerPropButtonAlign","defaultSpoilerPropSize","cnSpoiler","spoilerOffsetMap","xs","s","m","l","getContent","children","content","preview","lineClamp","Spoiler","props","ref","maxHeight","size","lessIcon","lessLabel","moreIcon","moreLabel","className","buttonIndent","buttonAlign","style","opened","onOpenButtonClick","otherProps","isOpen","setIsOpen","mode","previewContent","fullContent","refs","sizes","visibleMoreButton","height","onOpenButtonClickRef","handleClick","event","toggle","current","set","width","hidden","align","mT"],"sources":["../../../../../src/components/Spoiler/Spoiler.tsx"],"sourcesContent":["import './Spoiler.css';\n\nimport React, { forwardRef, useCallback, useEffect } from 'react';\n\nimport { Text } from '##/components/Text';\nimport { getElementSize } from '##/hooks/useComponentSize';\nimport { useFlag } from '##/hooks/useFlag';\nimport { useForkRef } from '##/hooks/useForkRef';\nimport { useMutableRef } from '##/hooks/useMutableRef';\nimport { useRefs } from '##/hooks/useRefs';\nimport { useResizeObserved } from '##/hooks/useResizeObserved';\nimport { cnMixSpace, Space } from '##/mixs/MixSpace';\nimport { cn } from '##/utils/bem';\n\nimport { SpoilerButton } from './SpoilerButton';\nimport {\n defaultSpoilerPropButtonAlign,\n defaultSpoilerPropSize,\n SpoilerMode,\n SpoilerProps,\n SpoilerPropSize,\n} from './types';\n\nexport const cnSpoiler = cn('Spoiler');\n\nconst spoilerOffsetMap: Record<SpoilerPropSize, Space> = {\n xs: 'xs',\n s: 's',\n m: 'm',\n l: 'm',\n};\n\nconst getContent = (\n { children, content, preview, lineClamp }: SpoilerProps,\n isOpen: boolean,\n): [SpoilerMode, React.ReactNode, React.ReactNode] => {\n if (lineClamp) {\n return ['lineClamp', children, children];\n }\n if (children) {\n return ['blur', children, children];\n }\n return ['toggle', preview, content];\n};\n\nexport const Spoiler = forwardRef<HTMLDivElement, SpoilerProps>(\n (props, ref) => {\n const {\n preview,\n maxHeight,\n content,\n size = defaultSpoilerPropSize,\n lessIcon,\n lessLabel,\n children,\n moreIcon,\n moreLabel,\n className,\n lineClamp,\n buttonIndent,\n buttonAlign = defaultSpoilerPropButtonAlign,\n style,\n opened = false,\n onOpenButtonClick,\n ...otherProps\n } = props;\n\n const [isOpen, setIsOpen] = useFlag(opened);\n const [mode, previewContent, fullContent] = getContent(props, isOpen);\n const refs = useRefs<HTMLDivElement>(3);\n const sizes = useResizeObserved(refs, getElementSize);\n const visibleMoreButton = sizes[1].height > sizes[0].height;\n const onOpenButtonClickRef = useMutableRef(onOpenButtonClick);\n\n const handleClick = useCallback((event: React.MouseEvent): void => {\n setIsOpen.toggle();\n onOpenButtonClickRef.current &&\n onOpenButtonClickRef.current(!isOpen, event);\n }, []);\n\n useEffect(() => {\n setIsOpen.set(opened);\n }, [opened]);\n\n return (\n <div\n {...otherProps}\n className={cnSpoiler({ size }, [className])}\n ref={useForkRef([ref, refs[2]])}\n style={{\n ...style,\n ...(typeof maxHeight === 'number' && {\n ['--spoiler-content-max-height' as string]: `${maxHeight}px`,\n }),\n ...(typeof lineClamp === 'number' && {\n ['--spoiler-content-line-clamp' as string]: lineClamp,\n }),\n ...(typeof sizes[2].width === 'number' && {\n ['--spoiler-content-width' as string]: `${sizes[2].width}px`,\n }),\n }}\n >\n <Text\n ref={refs[0]}\n className={cnSpoiler('Content', {\n mode,\n hidden: isOpen || !visibleMoreButton,\n })}\n size={size}\n >\n {previewContent}\n </Text>\n <Text\n ref={refs[1]}\n className={cnSpoiler('Content', {\n hidden: !isOpen && visibleMoreButton,\n })}\n size={size}\n >\n {fullContent}\n </Text>\n {visibleMoreButton && (\n <div\n className={cnSpoiler('ButtonWrapper', { align: buttonAlign }, [\n cnMixSpace({\n mT:\n typeof buttonIndent === 'undefined'\n ? spoilerOffsetMap[size]\n : buttonIndent,\n }),\n ])}\n >\n <SpoilerButton\n className={cnSpoiler('Button')}\n lessIcon={lessIcon}\n lessLabel={lessLabel}\n moreIcon={moreIcon}\n moreLabel={moreLabel}\n onClick={handleClick}\n open={isOpen}\n size={size}\n />\n </div>\n )}\n </div>\n );\n },\n);\n"],"mappings":"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"}
|
|
@@ -25,6 +25,8 @@ export declare type SpoilerProps = Omit<PropsWithHTMLAttributes<{
|
|
|
25
25
|
moreIcon?: IconComponent;
|
|
26
26
|
buttonIndent?: Space;
|
|
27
27
|
buttonAlign?: SpoilerPropButtonAlign;
|
|
28
|
+
opened?: boolean;
|
|
29
|
+
onOpenButtonClick?: (open: boolean, event: React.MouseEvent) => void;
|
|
28
30
|
}, HTMLDivElement>, 'children'> & ({
|
|
29
31
|
preview: React.ReactNode;
|
|
30
32
|
content: React.ReactNode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":["spolierPropSize","defaultSpoilerPropSize","spolierPropButtonAlign","defaultSpoilerPropButtonAlign"],"sources":["../../../../../src/components/Spoiler/types.ts"],"sourcesContent":["import { IconComponent } from '@consta/icons/Icon';\nimport React from 'react';\n\nimport { Space } from '##/mixs/MixSpace';\nimport { PropsWithHTMLAttributes } from '##/utils/types/PropsWithHTMLAttributes';\n\nexport const spolierPropSize = ['xs', 's', 'm', 'l'] as const;\nexport type SpoilerPropSize = typeof spolierPropSize[number];\nexport const defaultSpoilerPropSize = 'm';\n\nexport const spolierPropButtonAlign = ['left', 'center', 'right'] as const;\nexport type SpoilerPropButtonAlign = typeof spolierPropButtonAlign[number];\nexport const defaultSpoilerPropButtonAlign = spolierPropButtonAlign[0];\n\nexport type SpoilerModeProp = 'dots' | 'blur';\n\nexport type SpoilerButtonProps = {\n size?: SpoilerPropSize;\n lessLabel?: string;\n lessIcon?: IconComponent;\n moreLabel?: string;\n moreIcon?: IconComponent;\n open?: boolean;\n};\n\nexport type SpoilerProps = Omit<\n PropsWithHTMLAttributes<\n {\n size?: SpoilerPropSize;\n lessLabel?: string;\n lessIcon?: IconComponent;\n moreLabel?: string;\n moreIcon?: IconComponent;\n buttonIndent?: Space;\n buttonAlign?: SpoilerPropButtonAlign;\n },\n HTMLDivElement\n >,\n 'children'\n> &\n (\n | {\n preview: React.ReactNode;\n content: React.ReactNode;\n maxHeight?: never;\n children?: never;\n lineClamp?: never;\n }\n | {\n preview?: never;\n content?: never;\n children: React.ReactNode;\n maxHeight: number;\n lineClamp?: never;\n }\n | {\n preview?: never;\n content?: never;\n children: React.ReactNode;\n maxHeight?: never;\n lineClamp: number;\n }\n );\n\nexport type SpoilerMode = 'lineClamp' | 'blur' | 'toggle';\n"],"mappings":"AAMA,MAAO,IAAMA,gBAAe,CAAG,CAAC,IAAD,CAAO,GAAP,CAAY,GAAZ,CAAiB,GAAjB,CAAxB,CAEP,MAAO,IAAMC,uBAAsB,CAAG,GAA/B,CAEP,MAAO,IAAMC,uBAAsB,CAAG,CAAC,MAAD,CAAS,QAAT,CAAmB,OAAnB,CAA/B,CAEP,MAAO,IAAMC,8BAA6B,CAAGD,sBAAsB,CAAC,CAAD,CAA5D"}
|
|
1
|
+
{"version":3,"file":"types.js","names":["spolierPropSize","defaultSpoilerPropSize","spolierPropButtonAlign","defaultSpoilerPropButtonAlign"],"sources":["../../../../../src/components/Spoiler/types.ts"],"sourcesContent":["import { IconComponent } from '@consta/icons/Icon';\nimport React from 'react';\n\nimport { Space } from '##/mixs/MixSpace';\nimport { PropsWithHTMLAttributes } from '##/utils/types/PropsWithHTMLAttributes';\n\nexport const spolierPropSize = ['xs', 's', 'm', 'l'] as const;\nexport type SpoilerPropSize = typeof spolierPropSize[number];\nexport const defaultSpoilerPropSize = 'm';\n\nexport const spolierPropButtonAlign = ['left', 'center', 'right'] as const;\nexport type SpoilerPropButtonAlign = typeof spolierPropButtonAlign[number];\nexport const defaultSpoilerPropButtonAlign = spolierPropButtonAlign[0];\n\nexport type SpoilerModeProp = 'dots' | 'blur';\n\nexport type SpoilerButtonProps = {\n size?: SpoilerPropSize;\n lessLabel?: string;\n lessIcon?: IconComponent;\n moreLabel?: string;\n moreIcon?: IconComponent;\n open?: boolean;\n};\n\nexport type SpoilerProps = Omit<\n PropsWithHTMLAttributes<\n {\n size?: SpoilerPropSize;\n lessLabel?: string;\n lessIcon?: IconComponent;\n moreLabel?: string;\n moreIcon?: IconComponent;\n buttonIndent?: Space;\n buttonAlign?: SpoilerPropButtonAlign;\n opened?: boolean;\n onOpenButtonClick?: (open: boolean, event: React.MouseEvent) => void;\n },\n HTMLDivElement\n >,\n 'children'\n> &\n (\n | {\n preview: React.ReactNode;\n content: React.ReactNode;\n maxHeight?: never;\n children?: never;\n lineClamp?: never;\n }\n | {\n preview?: never;\n content?: never;\n children: React.ReactNode;\n maxHeight: number;\n lineClamp?: never;\n }\n | {\n preview?: never;\n content?: never;\n children: React.ReactNode;\n maxHeight?: never;\n lineClamp: number;\n }\n );\n\nexport type SpoilerMode = 'lineClamp' | 'blur' | 'toggle';\n"],"mappings":"AAMA,MAAO,IAAMA,gBAAe,CAAG,CAAC,IAAD,CAAO,GAAP,CAAY,GAAZ,CAAiB,GAAjB,CAAxB,CAEP,MAAO,IAAMC,uBAAsB,CAAG,GAA/B,CAEP,MAAO,IAAMC,uBAAsB,CAAG,CAAC,MAAD,CAAS,QAAT,CAAmB,OAAnB,CAA/B,CAEP,MAAO,IAAMC,8BAA6B,CAAGD,sBAAsB,CAAC,CAAD,CAA5D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.Switch{cursor:pointer;display:inline-flex;font-family:var(--font-primary);position:relative}.Switch_size_xs{--box-
|
|
1
|
+
.Switch{--switch-border-gap:calc(var(--control-border-width)*4);--switch-circle-size:calc(var(--box-height) - var(--switch-border-gap));cursor:pointer;display:inline-flex;font-family:var(--font-primary);position:relative}.Switch_size_xs{--box-height:12px;--switch-font-size:var(--control-text-size-xs);--offset:var(--space-2xs)}.Switch_size_s{--box-height:16px;--switch-font-size:var(--control-text-size-s);--offset:var(--space-xs)}.Switch_size_m{--box-height:20px;--switch-font-size:var(--control-text-size-m);--offset:var(--space-xs)}.Switch_size_l{--box-height:24px;--switch-font-size:var(--control-text-size-l);--offset:var(--space-s)}.Switch_view_primary:hover .Switch-Input:not(:checked){--border-color:var(--color-control-bg-border-default-hover);--background-color:transparent;--content-color:var(--color-control-bg-border-default-hover)}.Switch_view_primary .Switch-Input:not(:checked){--border-color:var(--color-control-bg-border-default);--background-color:transparent;--content-color:var(--color-control-bg-border-default)}.Switch_view_primary:hover .Switch-Input:checked{--border-color:var(--color-control-bg-primary-hover);--background-color:var(--color-control-bg-primary-hover);--content-color:var(--color-control-typo-primary-hover)}.Switch_view_primary .Switch-Input:checked{--border-color:var(--color-control-bg-primary);--background-color:var(--color-control-bg-primary);--content-color:var(--color-control-typo-primary)}.Switch_view_ghost:hover .Switch-Input:not(:checked){--border-color:var(--color-control-bg-border-default-hover);--background-color:transparent;--content-color:var(--color-control-bg-border-default-hover)}.Switch_view_ghost .Switch-Input:not(:checked){--border-color:var(--color-control-bg-border-default);--background-color:transparent;--content-color:var(--color-control-bg-border-default)}.Switch_view_ghost:hover .Switch-Input:checked{--border-color:var(--color-control-bg-border-default-hover);--background-color:var(--color-control-bg-ghost-hover);--content-color:var(--color-control-typo-ghost-hover)}.Switch_view_ghost .Switch-Input:checked{--border-color:var(--color-control-bg-border-default);--background-color:var(--color-control-bg-ghost);--content-color:var(--color-control-typo-ghost)}.Switch-Input{align-items:center;-webkit-appearance:none;background-color:var(--background-color);border:var(--control-border-width) solid var(--border-color);border-radius:99rem;box-sizing:border-box;cursor:pointer;display:inline-flex;flex-shrink:0;height:var(--box-height);margin:0;position:relative;transition:background-color .15s,border-color .15s;width:calc(var(--box-height)*2 - var(--switch-border-gap))}.Switch-Input:before{background-color:var(--content-color);border-radius:999rem;box-sizing:border-box;content:"";height:var(--switch-circle-size);position:absolute;right:1px;transform:translateX(calc((var(--box-height) - var(--switch-border-gap))*-1));transition:transform .15s,background-color .15s;width:var(--switch-circle-size)}.Switch-Input:checked{background-color:var(--background-color)}.Switch-Input:checked:before{transform:translateX(0)}.Switch-Label{color:var(--color-control-typo-default);font-size:var(--switch-font-size);margin-left:var(--offset)}.Switch_disabled{pointer-events:none}.Switch_disabled .Switch-Input:disabled{--border-color:transparent;--background-color:var(--color-control-bg-disable);--content-color:var(--color-control-typo-disable)}.Switch_disabled .Switch-Input:disabled~.Switch-Label{color:var(--color-control-typo-disable)}.Switch_align_center{align-items:center}.Switch_align_top{align-items:top}.Switch_align_top .Switch-Input{margin-top:1px}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["className","type","value","defaultValue","onChange","id","name","rows","cols","minRows","maxRows","inputRef","maxLength","disabled","size","view","form","state","status","onBlur","onFocus","autoFocus","placeholder","leftSide","rightSide","autoComplete","withClearButton","incrementButtons","max","min","readOnly","required","step","tabIndex","ariaLabel","label","labelIcon","inputContainerRef","labelPosition","caption","iconSize","focused","onClick","onKeyDown","onKeyDownCapture","onKeyPress","onKeyPressCapture","onKeyUp","onKeyUpCapture"];import"./TextField.css";import{IconClear}from"@consta/icons/IconClear";import{IconEye}from"@consta/icons/IconEye";import{IconEyeClose}from"@consta/icons/IconEyeClose";import{IconSelect}from"@consta/icons/IconSelect";import React,{forwardRef,useCallback,useEffect}from"react";import TextAreaAutoSize from"react-textarea-autosize";import{usePropsHandler}from"../EventInterceptor/usePropsHandler";import{FieldCaption}from"../FieldCaption/FieldCaption";import{FieldLabel}from"../FieldLabel/FieldLabel";import{useFlag}from"../../hooks/useFlag/useFlag";import{useForkRef}from"../../hooks/useForkRef/useForkRef";import{useMutableRef}from"../../hooks/useMutableRef/useMutableRef";import{useSortSteps}from"../../hooks/useSortSteps/useSortSteps";import{cn}from"../../utils/bem";import{getByMap}from"../../utils/getByMap";import{isString}from"../../utils/type-guards";import{getIncrementFlag,getTypeForRender,getValueByStep,inputValue,sizeMap}from"./helpers";import{textFieldPropFormDefault,textFieldPropSizeDefault,textFieldPropViewDefault}from"./types";export var COMPONENT_NAME="TextField";export var cnTextField=cn("TextField");export var TextFieldRender=function(a,b){var c,d,e=React.useRef(null),f=React.useRef(null),g=usePropsHandler(COMPONENT_NAME,a,e),h=g.className,i=g.type,j=void 0===i?"text":i,k=g.value,l=g.defaultValue,m=g.onChange,n=g.id,o=g.name,p=g.rows,q=g.cols,r=g.minRows,s=g.maxRows,t=g.inputRef,u=g.maxLength,v=g.disabled,w=g.size,x=void 0===w?textFieldPropSizeDefault:w,y=g.view,z=void 0===y?textFieldPropViewDefault:y,A=g.form,B=void 0===A?textFieldPropFormDefault:A,C=g.state,D=g.status,E=g.onBlur,F=g.onFocus,G=g.autoFocus,H=void 0!==G&&G,I=g.placeholder,J=g.leftSide,K=g.rightSide,L=g.autoComplete,M=g.withClearButton,N=g.incrementButtons,O=g.max,P=g.min,Q=g.readOnly,R=g.required,S=g.step,T=void 0===S?1:S,U=g.tabIndex,V=g.ariaLabel,W=g.label,X=g.labelIcon,Y=g.inputContainerRef,Z=g.labelPosition,$=void 0===Z?"top":Z,_=g.caption,aa=g.iconSize,ba=g.focused,ca=g.onClick,da=g.onKeyDown,ea=g.onKeyDownCapture,fa=g.onKeyPress,ga=g.onKeyPressCapture,ha=g.onKeyUp,ia=g.onKeyUpCapture,ja=_objectWithoutProperties(g,_excluded),
|
|
1
|
+
import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["className","type","value","defaultValue","onChange","id","name","rows","cols","minRows","maxRows","inputRef","maxLength","disabled","size","view","form","state","status","onBlur","onFocus","autoFocus","placeholder","leftSide","rightSide","autoComplete","withClearButton","incrementButtons","max","min","readOnly","required","step","tabIndex","ariaLabel","label","labelIcon","inputContainerRef","labelPosition","caption","iconSize","focused","onClick","onKeyDown","onKeyDownCapture","onKeyPress","onKeyPressCapture","onKeyUp","onKeyUpCapture","onClear"];import"./TextField.css";import{IconClear}from"@consta/icons/IconClear";import{IconEye}from"@consta/icons/IconEye";import{IconEyeClose}from"@consta/icons/IconEyeClose";import{IconSelect}from"@consta/icons/IconSelect";import React,{forwardRef,useCallback,useEffect}from"react";import TextAreaAutoSize from"react-textarea-autosize";import{usePropsHandler}from"../EventInterceptor/usePropsHandler";import{FieldCaption}from"../FieldCaption/FieldCaption";import{FieldLabel}from"../FieldLabel/FieldLabel";import{useFlag}from"../../hooks/useFlag/useFlag";import{useForkRef}from"../../hooks/useForkRef/useForkRef";import{useMutableRef}from"../../hooks/useMutableRef/useMutableRef";import{useSortSteps}from"../../hooks/useSortSteps/useSortSteps";import{cn}from"../../utils/bem";import{getByMap}from"../../utils/getByMap";import{isString}from"../../utils/type-guards";import{getIncrementFlag,getTypeForRender,getValueByStep,inputValue,sizeMap}from"./helpers";import{textFieldPropFormDefault,textFieldPropSizeDefault,textFieldPropViewDefault}from"./types";export var COMPONENT_NAME="TextField";export var cnTextField=cn("TextField");export var TextFieldRender=function(a,b){var c,d,e=React.useRef(null),f=React.useRef(null),g=usePropsHandler(COMPONENT_NAME,a,e),h=g.className,i=g.type,j=void 0===i?"text":i,k=g.value,l=g.defaultValue,m=g.onChange,n=g.id,o=g.name,p=g.rows,q=g.cols,r=g.minRows,s=g.maxRows,t=g.inputRef,u=g.maxLength,v=g.disabled,w=g.size,x=void 0===w?textFieldPropSizeDefault:w,y=g.view,z=void 0===y?textFieldPropViewDefault:y,A=g.form,B=void 0===A?textFieldPropFormDefault:A,C=g.state,D=g.status,E=g.onBlur,F=g.onFocus,G=g.autoFocus,H=void 0!==G&&G,I=g.placeholder,J=g.leftSide,K=g.rightSide,L=g.autoComplete,M=g.withClearButton,N=g.incrementButtons,O=g.max,P=g.min,Q=g.readOnly,R=g.required,S=g.step,T=void 0===S?1:S,U=g.tabIndex,V=g.ariaLabel,W=g.label,X=g.labelIcon,Y=g.inputContainerRef,Z=g.labelPosition,$=void 0===Z?"top":Z,_=g.caption,aa=g.iconSize,ba=g.focused,ca=g.onClick,da=g.onKeyDown,ea=g.onKeyDownCapture,fa=g.onKeyPress,ga=g.onKeyPressCapture,ha=g.onKeyUp,ia=g.onKeyUpCapture,ja=g.onClear,ka=_objectWithoutProperties(g,_excluded),la="number"===j&&(void 0===N||N),ma=useFlag(H),na=_slicedToArray(ma,2),oa=na[0],pa=na[1],qa=useFlag(),ra=_slicedToArray(qa,2),sa=ra[0],ta=ra[1],ua=useFlag(),va=_slicedToArray(ua,2),wa=va[0],xa=va[1],ya=useMutableRef(ca),za=useMutableRef(m),Aa=useCallback(function(a){var b;a.stopPropagation(),ta.toggle(),null===(b=f.current)||void 0===b?void 0:b.focus()},[]),Ba=J,Ca=K,Da=isString(J),Ea=isString(K),Fa=getByMap(sizeMap,x,aa),Ga=useSortSteps({step:T,min:+P,max:+O}),Ha=useCallback(function(a){var b;v||(null===(b=za.current)||void 0===b?void 0:b.call(za,a.target.value||null,{e:a,id:n,name:o})),a.target.value?xa.on():xa.off()},[n,o,v]),Ia=function(a){pa.on(),null===F||void 0===F?void 0:F(a)},Ja={className:cnTextField("Input"),value:inputValue(k),defaultValue:inputValue(l),onChange:Ha,maxLength:u,disabled:v,onBlur:function handleBlur(a){pa.off(),null===E||void 0===E?void 0:E(a)},onFocus:Ia,autoFocus:H,placeholder:I,autoComplete:L,readOnly:Q,tabIndex:U,name:o,onKeyDownCapture:ea,onKeyPress:fa,onKeyPressCapture:ga,onKeyUp:ha,onKeyUpCapture:ia,id:n?n.toString():void 0,"aria-label":V},Ka=sa?IconEyeClose:IconEye,La={rows:p,cols:q,minRows:r||p,maxRows:s||p,ref:useForkRef([f,t])},Ma={type:getTypeForRender(j,sa),max:O,min:P,step:Array.isArray(Ga)?0:Ga,onKeyDown:function onKeyDown(a){var b=getIncrementFlag(a);if(null===da||void 0===da?void 0:da(a),"number"===j&&"boolean"==typeof b&&!v){var c,d;a.preventDefault();var e=getValueByStep(Ga,null===(c=f.current)||void 0===c?void 0:c.value,b,P,O);null===(d=za.current)||void 0===d?void 0:d.call(za,e,{e:a,id:n,name:o}),f.current&&(f.current.value=e,xa.on())}},ref:useForkRef([f,t])},Na=useCallback(function(a){var b;null===(b=za.current)||void 0===b?void 0:b.call(za,null,{e:a,id:n,name:o}),f.current&&(f.current.value="",xa.off())},[]),Oa=function(a){var b,c,d=!(1<arguments.length&&void 0!==arguments[1])||arguments[1],e=getValueByStep(Ga,null===(b=f.current)||void 0===b?void 0:b.value,d,P,O);null===(c=za.current)||void 0===c?void 0:c.call(za,e,{e:a,id:n,name:o}),f.current&&(f.current.value=e,xa.on())},Pa={onClick:useCallback(function(a){var b,c;null===(b=f.current)||void 0===b?void 0:b.focus(),null===(c=ya.current)||void 0===c?void 0:c.call(ya,a)},[])};return useEffect(function(){var a;xa[null!==(a=f.current)&&void 0!==a&&a.value?"on":"off"]()},[null===(c=f.current)||void 0===c?void 0:c.value]),React.createElement("div",Object.assign({className:cnTextField({labelPosition:$,size:x,view:z},[h]),ref:useForkRef([b,e])},Pa,ka),W&&React.createElement(FieldLabel,{as:"label",htmlFor:null===n||void 0===n?void 0:n.toString(),icon:X,required:R,className:cnTextField("Label",{labelPosition:$}),size:x},W),React.createElement("div",{className:cnTextField("Body")},React.createElement("div",{ref:Y,className:cnTextField("InputContainer",{view:z,form:B,status:D||C,disabled:v,type:j,focus:oa||ba,withValue:wa,incrementButtons:"number"===j&&la})},Ba&&React.createElement("div",{className:cnTextField("Side",{position:"left",type:Da?"string":"icon"}),title:"string"==typeof J?J:void 0},Da?J:React.createElement(Ba,{className:cnTextField("Icon"),size:Fa})),"textarea"===j?React.createElement(TextAreaAutoSize,Object.assign({},Ja,La)):React.createElement("input",Object.assign({},Ja,Ma)),"number"===j&&la&&!v&&React.createElement("div",{className:cnTextField("Counter")},React.createElement("button",{onFocus:Ia,onClick:function(a){return Oa(a,!0)},type:"button",className:cnTextField("CounterButton",{fn:"increment"})},React.createElement(IconSelect,{size:"xs"})),React.createElement("button",{onFocus:Ia,onClick:function(a){return Oa(a,!1)},type:"button",className:cnTextField("CounterButton")},React.createElement(IconSelect,{size:"xs"}))),!la&&wa&&M&&!v&&"number"!==j&&React.createElement("button",{type:"button",disabled:v,tabIndex:-1,onClick:ja||Na,className:cnTextField("ClearButton")},React.createElement(IconClear,{size:sizeMap[x],className:cnTextField("ClearButtonIcon")})),"password"===j&&(null===(d=f.current)||void 0===d?void 0:d.value)&&React.createElement("button",{className:cnTextField("ClearButton"),type:"button",onClick:Aa},React.createElement(Ka,{className:cnTextField("Icon"),size:Fa})),Ca&&!la&&"password"!==j&&React.createElement("div",{className:cnTextField("Side",{position:"right",type:Ea?"string":"icon"}),title:"string"==typeof K?K:void 0},Ea?K:React.createElement(Ca,{className:cnTextField("Icon"),size:Fa}))),_&&React.createElement(FieldCaption,{className:cnTextField("Caption"),status:D||C},_)))};export var TextField=forwardRef(TextFieldRender);export*from"./types";
|
|
2
2
|
//# sourceMappingURL=TextField.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextField.js","names":["IconClear","IconEye","IconEyeClose","IconSelect","React","forwardRef","useCallback","useEffect","TextAreaAutoSize","usePropsHandler","FieldCaption","FieldLabel","useFlag","useForkRef","useMutableRef","useSortSteps","cn","getByMap","isString","getIncrementFlag","getTypeForRender","getValueByStep","inputValue","sizeMap","textFieldPropFormDefault","textFieldPropSizeDefault","textFieldPropViewDefault","COMPONENT_NAME","cnTextField","TextFieldRender","props","ref","textFieldRef","useRef","inputRef","className","type","value","defaultValue","onChange","id","name","rows","cols","minRows","maxRows","inputRefProp","maxLength","disabled","size","view","form","state","status","onBlur","onFocus","autoFocus","placeholder","leftSide","rightSide","autoComplete","withClearButton","incrementButtons","max","min","readOnly","required","step","tabIndex","ariaLabel","label","labelIcon","inputContainerRef","labelPosition","caption","iconSizeProp","iconSize","focused","onClick","onKeyDownProp","onKeyDown","onKeyDownCapture","onKeyPress","onKeyPressCapture","onKeyUp","onKeyUpCapture","otherProps","focus","setFocus","passwordVisible","setPasswordVisuble","withValue","setWithValue","onClickRef","onChangeRef","handleEyeClick","e","stopPropagation","toggle","current","LeftIcon","RightIcon","leftSideIsString","rightSideIsString","sortedSteps","handleChange","target","on","off","handleFocus","commonProps","handleBlur","toString","Eye","textareaProps","inputProps","Array","isArray","flag","preventDefault","newValue","handleClear","changeNumberValue","isIncrement","rootProps","position","fn","TextField"],"sources":["../../../../../src/components/TextField/TextField.tsx"],"sourcesContent":["import './TextField.css';\n\nimport { IconClear } from '@consta/icons/IconClear';\nimport { IconEye } from '@consta/icons/IconEye';\nimport { IconEyeClose } from '@consta/icons/IconEyeClose';\nimport { IconSelect } from '@consta/icons/IconSelect';\nimport React, { forwardRef, useCallback, useEffect } from 'react';\nimport TextAreaAutoSize from 'react-textarea-autosize';\n\nimport { usePropsHandler } from '##/components/EventInterceptor/usePropsHandler';\nimport { FieldCaption } from '##/components/FieldCaption/FieldCaption';\nimport { FieldLabel } from '##/components/FieldLabel/FieldLabel';\nimport { useFlag } from '##/hooks/useFlag/useFlag';\nimport { useForkRef } from '##/hooks/useForkRef/useForkRef';\nimport { useMutableRef } from '##/hooks/useMutableRef/useMutableRef';\nimport { useSortSteps } from '##/hooks/useSortSteps/useSortSteps';\nimport { cn } from '##/utils/bem';\nimport { getByMap } from '##/utils/getByMap';\nimport { isString } from '##/utils/type-guards';\n\nimport {\n getIncrementFlag,\n getTypeForRender,\n getValueByStep,\n inputValue,\n sizeMap,\n} from './helpers';\nimport {\n TextFieldComponent,\n textFieldPropFormDefault,\n TextFieldProps,\n textFieldPropSizeDefault,\n textFieldPropViewDefault,\n} from './types';\n\nexport const COMPONENT_NAME = 'TextField' as const;\nexport const cnTextField = cn(COMPONENT_NAME);\n\nexport const TextFieldRender = <TYPE extends string>(\n props: TextFieldProps<TYPE>,\n ref: React.Ref<HTMLDivElement>,\n) => {\n const textFieldRef = React.useRef<HTMLDivElement>(null);\n const inputRef = React.useRef<HTMLInputElement | HTMLTextAreaElement>(null);\n\n const {\n className,\n type = 'text',\n value,\n defaultValue,\n onChange,\n id,\n name,\n rows,\n cols,\n minRows,\n maxRows,\n inputRef: inputRefProp,\n maxLength,\n disabled,\n size = textFieldPropSizeDefault,\n view = textFieldPropViewDefault,\n form = textFieldPropFormDefault,\n state,\n status,\n onBlur,\n onFocus,\n autoFocus = false,\n placeholder,\n leftSide,\n rightSide,\n autoComplete,\n withClearButton,\n incrementButtons: incrementButtonsProp = true,\n max,\n min,\n readOnly,\n required,\n step = 1,\n tabIndex,\n ariaLabel,\n label,\n labelIcon,\n inputContainerRef,\n labelPosition = 'top',\n caption,\n iconSize: iconSizeProp,\n focused,\n onClick,\n // onkey props\n onKeyDown: onKeyDownProp,\n onKeyDownCapture,\n onKeyPress,\n onKeyPressCapture,\n onKeyUp,\n onKeyUpCapture,\n\n ...otherProps\n } = usePropsHandler(COMPONENT_NAME, props, textFieldRef);\n\n const incrementButtons = type === 'number' ? incrementButtonsProp : false;\n\n const [focus, setFocus] = useFlag(autoFocus);\n const [passwordVisible, setPasswordVisuble] = useFlag();\n const [withValue, setWithValue] = useFlag();\n\n const onClickRef = useMutableRef(onClick);\n const onChangeRef = useMutableRef(onChange);\n\n const handleEyeClick = useCallback(\n (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n e.stopPropagation();\n setPasswordVisuble.toggle();\n inputRef.current?.focus();\n },\n [],\n );\n\n const textarea = type === 'textarea';\n const LeftIcon = leftSide;\n const RightIcon = rightSide;\n const leftSideIsString = isString(leftSide);\n const rightSideIsString = isString(rightSide);\n const iconSize = getByMap(sizeMap, size, iconSizeProp);\n\n const sortedSteps = useSortSteps({\n step,\n min: Number(min),\n max: Number(max),\n });\n\n const handleChange: React.ChangeEventHandler<\n HTMLInputElement | HTMLTextAreaElement\n > = useCallback(\n (e) => {\n !disabled &&\n onChangeRef.current?.(e.target.value || null, {\n e,\n id,\n name,\n });\n\n if (e.target.value) {\n setWithValue.on();\n } else {\n setWithValue.off();\n }\n },\n [id, name, disabled],\n );\n\n const handleBlur: React.FocusEventHandler<HTMLElement> = (e) => {\n setFocus.off();\n onBlur?.(e);\n };\n\n const handleFocus: React.FocusEventHandler<HTMLElement> = (e) => {\n setFocus.on();\n onFocus?.(e);\n };\n\n const commonProps = {\n 'className': cnTextField('Input'),\n 'value': inputValue(value),\n 'defaultValue': inputValue(defaultValue),\n 'onChange': handleChange,\n maxLength,\n disabled,\n 'onBlur': handleBlur,\n 'onFocus': handleFocus,\n autoFocus,\n placeholder,\n autoComplete,\n readOnly,\n tabIndex,\n name,\n onKeyDownCapture,\n onKeyPress,\n onKeyPressCapture,\n onKeyUp,\n onKeyUpCapture,\n 'id': id ? id.toString() : undefined,\n 'aria-label': ariaLabel,\n };\n\n const Eye = passwordVisible ? IconEyeClose : IconEye;\n\n const onKeyDown = (e: React.KeyboardEvent) => {\n const flag = getIncrementFlag(e);\n onKeyDownProp?.(e);\n if (type === 'number' && typeof flag === 'boolean' && !disabled) {\n e.preventDefault();\n\n const newValue = getValueByStep(\n sortedSteps,\n inputRef.current?.value,\n flag,\n min,\n max,\n );\n\n onChangeRef.current?.(newValue, {\n e,\n id,\n name,\n });\n\n if (inputRef.current) {\n inputRef.current.value = newValue;\n setWithValue.on();\n }\n }\n };\n\n const textareaProps = {\n rows,\n cols,\n minRows: minRows || rows,\n maxRows: maxRows || rows,\n ref: useForkRef([inputRef, inputRefProp]) as (\n node: HTMLTextAreaElement,\n ) => void,\n };\n\n const inputProps = {\n type: getTypeForRender(type, passwordVisible),\n max,\n min,\n step: !Array.isArray(sortedSteps) ? sortedSteps : 0,\n onKeyDown,\n ref: useForkRef([\n inputRef,\n inputRefProp,\n ]) as React.RefCallback<HTMLInputElement>,\n };\n\n const handleClear = useCallback((e: React.MouseEvent<HTMLButtonElement>) => {\n onChangeRef.current?.(null, {\n e,\n id,\n name,\n });\n\n if (inputRef.current) {\n inputRef.current.value = '';\n setWithValue.off();\n }\n }, []);\n\n const changeNumberValue = (\n e: React.MouseEvent<HTMLButtonElement>,\n isIncrement = true,\n ) => {\n const newValue = getValueByStep(\n sortedSteps,\n inputRef.current?.value,\n isIncrement,\n min,\n max,\n );\n onChangeRef.current?.(newValue, {\n e,\n id,\n name,\n });\n if (inputRef.current) {\n inputRef.current.value = newValue;\n setWithValue.on();\n }\n };\n\n const rootProps = {\n onClick: useCallback((e: React.MouseEvent<HTMLDivElement, MouseEvent>) => {\n inputRef.current?.focus();\n onClickRef.current?.(e);\n }, []),\n };\n\n useEffect(() => {\n setWithValue[inputRef.current?.value ? 'on' : 'off']();\n }, [inputRef.current?.value]);\n\n return (\n <div\n className={cnTextField({ labelPosition, size, view }, [className])}\n ref={useForkRef([ref, textFieldRef])}\n {...rootProps}\n {...otherProps}\n >\n {label && (\n <FieldLabel\n as=\"label\"\n htmlFor={id?.toString()}\n icon={labelIcon}\n required={required}\n className={cnTextField('Label', { labelPosition })}\n size={size}\n >\n {label}\n </FieldLabel>\n )}\n <div className={cnTextField('Body')}>\n <div\n ref={inputContainerRef}\n className={cnTextField('InputContainer', {\n view,\n form,\n status: status || state,\n disabled,\n type,\n focus: focus || focused,\n withValue,\n incrementButtons: type === 'number' && incrementButtons,\n })}\n >\n {LeftIcon && (\n <div\n className={cnTextField('Side', {\n position: 'left',\n type: leftSideIsString ? 'string' : 'icon',\n })}\n title={typeof leftSide === 'string' ? leftSide : undefined}\n >\n {leftSideIsString ? (\n leftSide\n ) : (\n <LeftIcon className={cnTextField('Icon')} size={iconSize} />\n )}\n </div>\n )}\n {textarea ? (\n <TextAreaAutoSize {...commonProps} {...textareaProps} />\n ) : (\n <input {...commonProps} {...inputProps} />\n )}\n\n {type === 'number' && incrementButtons && !disabled && (\n <div className={cnTextField('Counter')}>\n <button\n onFocus={handleFocus}\n onClick={(e) => changeNumberValue(e, true)}\n type=\"button\"\n className={cnTextField('CounterButton', { fn: 'increment' })}\n >\n <IconSelect size=\"xs\" />\n </button>\n <button\n onFocus={handleFocus}\n onClick={(e) => changeNumberValue(e, false)}\n type=\"button\"\n className={cnTextField('CounterButton')}\n >\n <IconSelect size=\"xs\" />\n </button>\n </div>\n )}\n\n {!incrementButtons &&\n withValue &&\n withClearButton &&\n !disabled &&\n type !== 'number' && (\n <button\n type=\"button\"\n disabled={disabled}\n tabIndex={-1}\n onClick={handleClear}\n className={cnTextField('ClearButton')}\n >\n <IconClear\n size={sizeMap[size]}\n className={cnTextField('ClearButtonIcon')}\n />\n </button>\n )}\n\n {type === 'password' && inputRef.current?.value && (\n <button\n className={cnTextField('ClearButton')}\n type=\"button\"\n onClick={handleEyeClick}\n >\n <Eye className={cnTextField('Icon')} size={iconSize} />\n </button>\n )}\n\n {RightIcon && !incrementButtons && type !== 'password' && (\n <div\n className={cnTextField('Side', {\n position: 'right',\n type: rightSideIsString ? 'string' : 'icon',\n })}\n title={typeof rightSide === 'string' ? rightSide : undefined}\n >\n {rightSideIsString ? (\n rightSide\n ) : (\n <RightIcon className={cnTextField('Icon')} size={iconSize} />\n )}\n </div>\n )}\n </div>\n {caption && (\n <FieldCaption\n className={cnTextField('Caption')}\n status={status || state}\n >\n {caption}\n </FieldCaption>\n )}\n </div>\n </div>\n );\n};\n\nexport const TextField = forwardRef(TextFieldRender) as TextFieldComponent;\nexport * from './types';\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TextField.js","names":["IconClear","IconEye","IconEyeClose","IconSelect","React","forwardRef","useCallback","useEffect","TextAreaAutoSize","usePropsHandler","FieldCaption","FieldLabel","useFlag","useForkRef","useMutableRef","useSortSteps","cn","getByMap","isString","getIncrementFlag","getTypeForRender","getValueByStep","inputValue","sizeMap","textFieldPropFormDefault","textFieldPropSizeDefault","textFieldPropViewDefault","COMPONENT_NAME","cnTextField","TextFieldRender","props","ref","textFieldRef","useRef","inputRef","className","type","value","defaultValue","onChange","id","name","rows","cols","minRows","maxRows","inputRefProp","maxLength","disabled","size","view","form","state","status","onBlur","onFocus","autoFocus","placeholder","leftSide","rightSide","autoComplete","withClearButton","incrementButtons","max","min","readOnly","required","step","tabIndex","ariaLabel","label","labelIcon","inputContainerRef","labelPosition","caption","iconSizeProp","iconSize","focused","onClick","onKeyDownProp","onKeyDown","onKeyDownCapture","onKeyPress","onKeyPressCapture","onKeyUp","onKeyUpCapture","onClear","otherProps","focus","setFocus","passwordVisible","setPasswordVisuble","withValue","setWithValue","onClickRef","onChangeRef","handleEyeClick","e","stopPropagation","toggle","current","LeftIcon","RightIcon","leftSideIsString","rightSideIsString","sortedSteps","handleChange","target","on","off","handleFocus","commonProps","handleBlur","toString","Eye","textareaProps","inputProps","Array","isArray","flag","preventDefault","newValue","handleClear","changeNumberValue","isIncrement","rootProps","position","fn","TextField"],"sources":["../../../../../src/components/TextField/TextField.tsx"],"sourcesContent":["import './TextField.css';\n\nimport { IconClear } from '@consta/icons/IconClear';\nimport { IconEye } from '@consta/icons/IconEye';\nimport { IconEyeClose } from '@consta/icons/IconEyeClose';\nimport { IconSelect } from '@consta/icons/IconSelect';\nimport React, { forwardRef, useCallback, useEffect } from 'react';\nimport TextAreaAutoSize from 'react-textarea-autosize';\n\nimport { usePropsHandler } from '##/components/EventInterceptor/usePropsHandler';\nimport { FieldCaption } from '##/components/FieldCaption/FieldCaption';\nimport { FieldLabel } from '##/components/FieldLabel/FieldLabel';\nimport { useFlag } from '##/hooks/useFlag/useFlag';\nimport { useForkRef } from '##/hooks/useForkRef/useForkRef';\nimport { useMutableRef } from '##/hooks/useMutableRef/useMutableRef';\nimport { useSortSteps } from '##/hooks/useSortSteps/useSortSteps';\nimport { cn } from '##/utils/bem';\nimport { getByMap } from '##/utils/getByMap';\nimport { isString } from '##/utils/type-guards';\n\nimport {\n getIncrementFlag,\n getTypeForRender,\n getValueByStep,\n inputValue,\n sizeMap,\n} from './helpers';\nimport {\n TextFieldComponent,\n textFieldPropFormDefault,\n TextFieldProps,\n textFieldPropSizeDefault,\n textFieldPropViewDefault,\n} from './types';\n\nexport const COMPONENT_NAME = 'TextField' as const;\nexport const cnTextField = cn(COMPONENT_NAME);\n\nexport const TextFieldRender = <TYPE extends string>(\n props: TextFieldProps<TYPE>,\n ref: React.Ref<HTMLDivElement>,\n) => {\n const textFieldRef = React.useRef<HTMLDivElement>(null);\n const inputRef = React.useRef<HTMLInputElement | HTMLTextAreaElement>(null);\n\n const {\n className,\n type = 'text',\n value,\n defaultValue,\n onChange,\n id,\n name,\n rows,\n cols,\n minRows,\n maxRows,\n inputRef: inputRefProp,\n maxLength,\n disabled,\n size = textFieldPropSizeDefault,\n view = textFieldPropViewDefault,\n form = textFieldPropFormDefault,\n state,\n status,\n onBlur,\n onFocus,\n autoFocus = false,\n placeholder,\n leftSide,\n rightSide,\n autoComplete,\n withClearButton,\n incrementButtons: incrementButtonsProp = true,\n max,\n min,\n readOnly,\n required,\n step = 1,\n tabIndex,\n ariaLabel,\n label,\n labelIcon,\n inputContainerRef,\n labelPosition = 'top',\n caption,\n iconSize: iconSizeProp,\n focused,\n onClick,\n // onkey props\n onKeyDown: onKeyDownProp,\n onKeyDownCapture,\n onKeyPress,\n onKeyPressCapture,\n onKeyUp,\n onKeyUpCapture,\n onClear,\n ...otherProps\n } = usePropsHandler(COMPONENT_NAME, props, textFieldRef);\n\n const incrementButtons = type === 'number' ? incrementButtonsProp : false;\n\n const [focus, setFocus] = useFlag(autoFocus);\n const [passwordVisible, setPasswordVisuble] = useFlag();\n const [withValue, setWithValue] = useFlag();\n\n const onClickRef = useMutableRef(onClick);\n const onChangeRef = useMutableRef(onChange);\n\n const handleEyeClick = useCallback(\n (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n e.stopPropagation();\n setPasswordVisuble.toggle();\n inputRef.current?.focus();\n },\n [],\n );\n\n const textarea = type === 'textarea';\n const LeftIcon = leftSide;\n const RightIcon = rightSide;\n const leftSideIsString = isString(leftSide);\n const rightSideIsString = isString(rightSide);\n const iconSize = getByMap(sizeMap, size, iconSizeProp);\n\n const sortedSteps = useSortSteps({\n step,\n min: Number(min),\n max: Number(max),\n });\n\n const handleChange: React.ChangeEventHandler<\n HTMLInputElement | HTMLTextAreaElement\n > = useCallback(\n (e) => {\n !disabled &&\n onChangeRef.current?.(e.target.value || null, {\n e,\n id,\n name,\n });\n\n if (e.target.value) {\n setWithValue.on();\n } else {\n setWithValue.off();\n }\n },\n [id, name, disabled],\n );\n\n const handleBlur: React.FocusEventHandler<HTMLElement> = (e) => {\n setFocus.off();\n onBlur?.(e);\n };\n\n const handleFocus: React.FocusEventHandler<HTMLElement> = (e) => {\n setFocus.on();\n onFocus?.(e);\n };\n\n const commonProps = {\n 'className': cnTextField('Input'),\n 'value': inputValue(value),\n 'defaultValue': inputValue(defaultValue),\n 'onChange': handleChange,\n maxLength,\n disabled,\n 'onBlur': handleBlur,\n 'onFocus': handleFocus,\n autoFocus,\n placeholder,\n autoComplete,\n readOnly,\n tabIndex,\n name,\n onKeyDownCapture,\n onKeyPress,\n onKeyPressCapture,\n onKeyUp,\n onKeyUpCapture,\n 'id': id ? id.toString() : undefined,\n 'aria-label': ariaLabel,\n };\n\n const Eye = passwordVisible ? IconEyeClose : IconEye;\n\n const onKeyDown = (e: React.KeyboardEvent) => {\n const flag = getIncrementFlag(e);\n onKeyDownProp?.(e);\n if (type === 'number' && typeof flag === 'boolean' && !disabled) {\n e.preventDefault();\n\n const newValue = getValueByStep(\n sortedSteps,\n inputRef.current?.value,\n flag,\n min,\n max,\n );\n\n onChangeRef.current?.(newValue, {\n e,\n id,\n name,\n });\n\n if (inputRef.current) {\n inputRef.current.value = newValue;\n setWithValue.on();\n }\n }\n };\n\n const textareaProps = {\n rows,\n cols,\n minRows: minRows || rows,\n maxRows: maxRows || rows,\n ref: useForkRef([inputRef, inputRefProp]) as (\n node: HTMLTextAreaElement,\n ) => void,\n };\n\n const inputProps = {\n type: getTypeForRender(type, passwordVisible),\n max,\n min,\n step: !Array.isArray(sortedSteps) ? sortedSteps : 0,\n onKeyDown,\n ref: useForkRef([\n inputRef,\n inputRefProp,\n ]) as React.RefCallback<HTMLInputElement>,\n };\n\n const handleClear = useCallback((e: React.MouseEvent<HTMLButtonElement>) => {\n onChangeRef.current?.(null, {\n e,\n id,\n name,\n });\n\n if (inputRef.current) {\n inputRef.current.value = '';\n setWithValue.off();\n }\n }, []);\n\n const changeNumberValue = (\n e: React.MouseEvent<HTMLButtonElement>,\n isIncrement = true,\n ) => {\n const newValue = getValueByStep(\n sortedSteps,\n inputRef.current?.value,\n isIncrement,\n min,\n max,\n );\n onChangeRef.current?.(newValue, {\n e,\n id,\n name,\n });\n if (inputRef.current) {\n inputRef.current.value = newValue;\n setWithValue.on();\n }\n };\n\n const rootProps = {\n onClick: useCallback((e: React.MouseEvent<HTMLDivElement, MouseEvent>) => {\n inputRef.current?.focus();\n onClickRef.current?.(e);\n }, []),\n };\n\n useEffect(() => {\n setWithValue[inputRef.current?.value ? 'on' : 'off']();\n }, [inputRef.current?.value]);\n\n return (\n <div\n className={cnTextField({ labelPosition, size, view }, [className])}\n ref={useForkRef([ref, textFieldRef])}\n {...rootProps}\n {...otherProps}\n >\n {label && (\n <FieldLabel\n as=\"label\"\n htmlFor={id?.toString()}\n icon={labelIcon}\n required={required}\n className={cnTextField('Label', { labelPosition })}\n size={size}\n >\n {label}\n </FieldLabel>\n )}\n <div className={cnTextField('Body')}>\n <div\n ref={inputContainerRef}\n className={cnTextField('InputContainer', {\n view,\n form,\n status: status || state,\n disabled,\n type,\n focus: focus || focused,\n withValue,\n incrementButtons: type === 'number' && incrementButtons,\n })}\n >\n {LeftIcon && (\n <div\n className={cnTextField('Side', {\n position: 'left',\n type: leftSideIsString ? 'string' : 'icon',\n })}\n title={typeof leftSide === 'string' ? leftSide : undefined}\n >\n {leftSideIsString ? (\n leftSide\n ) : (\n <LeftIcon className={cnTextField('Icon')} size={iconSize} />\n )}\n </div>\n )}\n {textarea ? (\n <TextAreaAutoSize {...commonProps} {...textareaProps} />\n ) : (\n <input {...commonProps} {...inputProps} />\n )}\n\n {type === 'number' && incrementButtons && !disabled && (\n <div className={cnTextField('Counter')}>\n <button\n onFocus={handleFocus}\n onClick={(e) => changeNumberValue(e, true)}\n type=\"button\"\n className={cnTextField('CounterButton', { fn: 'increment' })}\n >\n <IconSelect size=\"xs\" />\n </button>\n <button\n onFocus={handleFocus}\n onClick={(e) => changeNumberValue(e, false)}\n type=\"button\"\n className={cnTextField('CounterButton')}\n >\n <IconSelect size=\"xs\" />\n </button>\n </div>\n )}\n\n {!incrementButtons &&\n withValue &&\n withClearButton &&\n !disabled &&\n type !== 'number' && (\n <button\n type=\"button\"\n disabled={disabled}\n tabIndex={-1}\n onClick={onClear || handleClear}\n className={cnTextField('ClearButton')}\n >\n <IconClear\n size={sizeMap[size]}\n className={cnTextField('ClearButtonIcon')}\n />\n </button>\n )}\n\n {type === 'password' && inputRef.current?.value && (\n <button\n className={cnTextField('ClearButton')}\n type=\"button\"\n onClick={handleEyeClick}\n >\n <Eye className={cnTextField('Icon')} size={iconSize} />\n </button>\n )}\n\n {RightIcon && !incrementButtons && type !== 'password' && (\n <div\n className={cnTextField('Side', {\n position: 'right',\n type: rightSideIsString ? 'string' : 'icon',\n })}\n title={typeof rightSide === 'string' ? rightSide : undefined}\n >\n {rightSideIsString ? (\n rightSide\n ) : (\n <RightIcon className={cnTextField('Icon')} size={iconSize} />\n )}\n </div>\n )}\n </div>\n {caption && (\n <FieldCaption\n className={cnTextField('Caption')}\n status={status || state}\n >\n {caption}\n </FieldCaption>\n )}\n </div>\n </div>\n );\n};\n\nexport const TextField = forwardRef(TextFieldRender) as TextFieldComponent;\nexport * from './types';\n"],"mappings":"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"}
|
|
@@ -86,6 +86,7 @@ export declare type TextFieldProps<TYPE extends string> = PropsWithHTMLAttribute
|
|
|
86
86
|
onKeyUp?: React.KeyboardEventHandler;
|
|
87
87
|
onKeyUpCapture?: React.KeyboardEventHandler;
|
|
88
88
|
onKeyDown?: React.KeyboardEventHandler;
|
|
89
|
+
onClear?: React.MouseEventHandler<HTMLButtonElement>;
|
|
89
90
|
}, HTMLDivElement> & InputRef<TYPE> & TextFieldPropsTextareaType<TYPE> & React.RefAttributes<HTMLDivElement>;
|
|
90
91
|
export declare type TextFieldComponent = <TYPE extends string>(props: TextFieldProps<TYPE>) => React.ReactElement | null;
|
|
91
92
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":["textFieldPropSize","textFieldPropSizeDefault","textFieldPropView","textFieldPropViewDefault","textFieldPropForm","textFieldPropFormDefault","textFieldPropStatus"],"sources":["../../../../../src/components/TextField/types.ts"],"sourcesContent":["import { IconComponent, IconPropSize } from '@consta/icons/Icon';\nimport React from 'react';\n\nimport { AutoCompete } from '../../utils/types/AutoComplete';\nimport { PropsWithHTMLAttributes } from '../../utils/types/PropsWithHTMLAttributes';\n\nexport type TextFieldPropValue = string | null;\nexport type TextFieldPropName = string;\nexport type TextFieldPropId = string | number;\n\nexport const textFieldPropSize = ['m', 'xs', 's', 'l'] as const;\nexport type TextFieldPropSize = typeof textFieldPropSize[number];\nexport const textFieldPropSizeDefault: TextFieldPropSize = textFieldPropSize[0];\n\nexport type TextFieldPropOnChange = (\n value: TextFieldPropValue,\n params: TextFieldOnChangeArguments,\n) => void;\nexport type TextFieldOnChangeArguments = {\n e: React.ChangeEvent | React.MouseEvent | React.KeyboardEvent;\n id?: TextFieldPropId;\n name?: TextFieldPropName;\n};\n\nexport const textFieldPropView = ['default', 'clear'] as const;\nexport type TextFieldPropView = typeof textFieldPropView[number];\nexport const textFieldPropViewDefault: TextFieldPropView = textFieldPropView[0];\n\nexport const textFieldPropForm = [\n 'default',\n 'defaultClear',\n 'defaultBrick',\n 'brick',\n 'brickDefault',\n 'brickClear',\n 'brickRound',\n 'round',\n 'roundClear',\n 'roundBrick',\n 'clearRound',\n 'clearDefault',\n 'clearBrick',\n 'clearClear',\n] as const;\nexport type TextFieldPropForm = typeof textFieldPropForm[number];\nexport const textFieldPropFormDefault: TextFieldPropForm = textFieldPropForm[0];\n\nexport const textFieldPropStatus = ['alert', 'success', 'warning'] as const;\nexport type TextFieldPropStatus = typeof textFieldPropStatus[number];\n\nexport type TextFieldPropsTextareaType<TYPE> = TYPE extends 'textarea'\n ?\n | {\n minRows?: never;\n maxRows?: never;\n rows?: number;\n }\n | {\n rows?: never;\n minRows?: number;\n maxRows?: number;\n }\n : {\n rows?: never;\n minRows?: never;\n maxRows?: never;\n };\n\ntype InputRef<TYPE> = TYPE extends 'textarea'\n ? { inputRef?: React.Ref<HTMLTextAreaElement> }\n : { inputRef?: React.Ref<HTMLInputElement> };\n\nexport type TextFieldProps<TYPE extends string> = PropsWithHTMLAttributes<\n {\n className?: string;\n value?: TextFieldPropValue;\n defaultValue?: TextFieldPropValue;\n cols?: number;\n onChange?: TextFieldPropOnChange;\n id?: TextFieldPropId;\n name?: TextFieldPropName;\n type?: TYPE;\n disabled?: boolean;\n maxLength?: number;\n size?: TextFieldPropSize;\n view?: TextFieldPropView;\n form?: TextFieldPropForm;\n state?: TextFieldPropStatus;\n status?: TextFieldPropStatus;\n onFocus?: React.FocusEventHandler<HTMLElement>;\n onBlur?: React.FocusEventHandler<HTMLElement>;\n incrementButtons?: boolean;\n autoFocus?: boolean;\n placeholder?: string;\n leftSide?: string | IconComponent;\n rightSide?: string | IconComponent;\n withClearButton?: boolean;\n autoComplete?: AutoCompete;\n max?: number | string;\n min?: number | string;\n readOnly?: boolean;\n required?: boolean;\n step?: number | string | number[];\n tabIndex?: number;\n inputContainerRef?: React.Ref<HTMLDivElement>;\n ariaLabel?: string;\n iconSize?: IconPropSize;\n children?: never;\n label?: string;\n labelIcon?: IconComponent;\n caption?: string;\n labelPosition?: 'top' | 'left';\n focused?: boolean;\n onKeyDownCapture?: React.KeyboardEventHandler;\n onKeyPress?: React.KeyboardEventHandler;\n onKeyPressCapture?: React.KeyboardEventHandler;\n onKeyUp?: React.KeyboardEventHandler;\n onKeyUpCapture?: React.KeyboardEventHandler;\n onKeyDown?: React.KeyboardEventHandler;\n },\n HTMLDivElement\n> &\n InputRef<TYPE> &\n TextFieldPropsTextareaType<TYPE> &\n React.RefAttributes<HTMLDivElement>;\n\nexport type TextFieldComponent = <TYPE extends string>(\n props: TextFieldProps<TYPE>,\n) => React.ReactElement | null;\n"],"mappings":"AAUA,MAAO,IAAMA,kBAAiB,CAAG,CAAC,GAAD,CAAM,IAAN,CAAY,GAAZ,CAAiB,GAAjB,CAA1B,CAEP,MAAO,IAAMC,yBAA2C,CAAGD,iBAAiB,CAAC,CAAD,CAArE,CAYP,MAAO,IAAME,kBAAiB,CAAG,CAAC,SAAD,CAAY,OAAZ,CAA1B,CAEP,MAAO,IAAMC,yBAA2C,CAAGD,iBAAiB,CAAC,CAAD,CAArE,CAEP,MAAO,IAAME,kBAAiB,CAAG,CAC/B,SAD+B,CAE/B,cAF+B,CAG/B,cAH+B,CAI/B,OAJ+B,CAK/B,cAL+B,CAM/B,YAN+B,CAO/B,YAP+B,CAQ/B,OAR+B,CAS/B,YAT+B,CAU/B,YAV+B,CAW/B,YAX+B,CAY/B,cAZ+B,CAa/B,YAb+B,CAc/B,YAd+B,CAA1B,CAiBP,MAAO,IAAMC,yBAA2C,CAAGD,iBAAiB,CAAC,CAAD,CAArE,CAEP,MAAO,IAAME,oBAAmB,CAAG,CAAC,OAAD,CAAU,SAAV,CAAqB,SAArB,CAA5B"}
|
|
1
|
+
{"version":3,"file":"types.js","names":["textFieldPropSize","textFieldPropSizeDefault","textFieldPropView","textFieldPropViewDefault","textFieldPropForm","textFieldPropFormDefault","textFieldPropStatus"],"sources":["../../../../../src/components/TextField/types.ts"],"sourcesContent":["import { IconComponent, IconPropSize } from '@consta/icons/Icon';\nimport React from 'react';\n\nimport { AutoCompete } from '../../utils/types/AutoComplete';\nimport { PropsWithHTMLAttributes } from '../../utils/types/PropsWithHTMLAttributes';\n\nexport type TextFieldPropValue = string | null;\nexport type TextFieldPropName = string;\nexport type TextFieldPropId = string | number;\n\nexport const textFieldPropSize = ['m', 'xs', 's', 'l'] as const;\nexport type TextFieldPropSize = typeof textFieldPropSize[number];\nexport const textFieldPropSizeDefault: TextFieldPropSize = textFieldPropSize[0];\n\nexport type TextFieldPropOnChange = (\n value: TextFieldPropValue,\n params: TextFieldOnChangeArguments,\n) => void;\nexport type TextFieldOnChangeArguments = {\n e: React.ChangeEvent | React.MouseEvent | React.KeyboardEvent;\n id?: TextFieldPropId;\n name?: TextFieldPropName;\n};\n\nexport const textFieldPropView = ['default', 'clear'] as const;\nexport type TextFieldPropView = typeof textFieldPropView[number];\nexport const textFieldPropViewDefault: TextFieldPropView = textFieldPropView[0];\n\nexport const textFieldPropForm = [\n 'default',\n 'defaultClear',\n 'defaultBrick',\n 'brick',\n 'brickDefault',\n 'brickClear',\n 'brickRound',\n 'round',\n 'roundClear',\n 'roundBrick',\n 'clearRound',\n 'clearDefault',\n 'clearBrick',\n 'clearClear',\n] as const;\nexport type TextFieldPropForm = typeof textFieldPropForm[number];\nexport const textFieldPropFormDefault: TextFieldPropForm = textFieldPropForm[0];\n\nexport const textFieldPropStatus = ['alert', 'success', 'warning'] as const;\nexport type TextFieldPropStatus = typeof textFieldPropStatus[number];\n\nexport type TextFieldPropsTextareaType<TYPE> = TYPE extends 'textarea'\n ?\n | {\n minRows?: never;\n maxRows?: never;\n rows?: number;\n }\n | {\n rows?: never;\n minRows?: number;\n maxRows?: number;\n }\n : {\n rows?: never;\n minRows?: never;\n maxRows?: never;\n };\n\ntype InputRef<TYPE> = TYPE extends 'textarea'\n ? { inputRef?: React.Ref<HTMLTextAreaElement> }\n : { inputRef?: React.Ref<HTMLInputElement> };\n\nexport type TextFieldProps<TYPE extends string> = PropsWithHTMLAttributes<\n {\n className?: string;\n value?: TextFieldPropValue;\n defaultValue?: TextFieldPropValue;\n cols?: number;\n onChange?: TextFieldPropOnChange;\n id?: TextFieldPropId;\n name?: TextFieldPropName;\n type?: TYPE;\n disabled?: boolean;\n maxLength?: number;\n size?: TextFieldPropSize;\n view?: TextFieldPropView;\n form?: TextFieldPropForm;\n state?: TextFieldPropStatus;\n status?: TextFieldPropStatus;\n onFocus?: React.FocusEventHandler<HTMLElement>;\n onBlur?: React.FocusEventHandler<HTMLElement>;\n incrementButtons?: boolean;\n autoFocus?: boolean;\n placeholder?: string;\n leftSide?: string | IconComponent;\n rightSide?: string | IconComponent;\n withClearButton?: boolean;\n autoComplete?: AutoCompete;\n max?: number | string;\n min?: number | string;\n readOnly?: boolean;\n required?: boolean;\n step?: number | string | number[];\n tabIndex?: number;\n inputContainerRef?: React.Ref<HTMLDivElement>;\n ariaLabel?: string;\n iconSize?: IconPropSize;\n children?: never;\n label?: string;\n labelIcon?: IconComponent;\n caption?: string;\n labelPosition?: 'top' | 'left';\n focused?: boolean;\n onKeyDownCapture?: React.KeyboardEventHandler;\n onKeyPress?: React.KeyboardEventHandler;\n onKeyPressCapture?: React.KeyboardEventHandler;\n onKeyUp?: React.KeyboardEventHandler;\n onKeyUpCapture?: React.KeyboardEventHandler;\n onKeyDown?: React.KeyboardEventHandler;\n onClear?: React.MouseEventHandler<HTMLButtonElement>;\n },\n HTMLDivElement\n> &\n InputRef<TYPE> &\n TextFieldPropsTextareaType<TYPE> &\n React.RefAttributes<HTMLDivElement>;\n\nexport type TextFieldComponent = <TYPE extends string>(\n props: TextFieldProps<TYPE>,\n) => React.ReactElement | null;\n"],"mappings":"AAUA,MAAO,IAAMA,kBAAiB,CAAG,CAAC,GAAD,CAAM,IAAN,CAAY,GAAZ,CAAiB,GAAjB,CAA1B,CAEP,MAAO,IAAMC,yBAA2C,CAAGD,iBAAiB,CAAC,CAAD,CAArE,CAYP,MAAO,IAAME,kBAAiB,CAAG,CAAC,SAAD,CAAY,OAAZ,CAA1B,CAEP,MAAO,IAAMC,yBAA2C,CAAGD,iBAAiB,CAAC,CAAD,CAArE,CAEP,MAAO,IAAME,kBAAiB,CAAG,CAC/B,SAD+B,CAE/B,cAF+B,CAG/B,cAH+B,CAI/B,OAJ+B,CAK/B,cAL+B,CAM/B,YAN+B,CAO/B,YAP+B,CAQ/B,OAR+B,CAS/B,YAT+B,CAU/B,YAV+B,CAW/B,YAX+B,CAY/B,cAZ+B,CAa/B,YAb+B,CAc/B,YAd+B,CAA1B,CAiBP,MAAO,IAAMC,yBAA2C,CAAGD,iBAAiB,CAAC,CAAD,CAArE,CAEP,MAAO,IAAME,oBAAmB,CAAG,CAAC,OAAD,CAAU,SAAV,CAAqB,SAArB,CAA5B"}
|