@televet/kibble-ui 4.0.0-beta.122 → 4.0.0-beta.124
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/{buttonGroup.component-qXm5eq0l.js → buttonGroup.component-B6Ebjoh6.js} +2 -2
- package/dist/chunks/{buttonGroup.component-qXm5eq0l.js.map → buttonGroup.component-B6Ebjoh6.js.map} +1 -1
- package/dist/chunks/{buttonGroup.component-BVRTatwS.js → buttonGroup.component-BHDnteYx.js} +2 -2
- package/dist/chunks/{buttonGroup.component-BVRTatwS.js.map → buttonGroup.component-BHDnteYx.js.map} +1 -1
- package/dist/chunks/{checkbox.component-BdIZ3GiD.js → checkbox.component-BR65eR9h.js} +2 -2
- package/dist/chunks/{checkbox.component-BdIZ3GiD.js.map → checkbox.component-BR65eR9h.js.map} +1 -1
- package/dist/chunks/{checkbox.component-CvTfrYob.js → checkbox.component-u7MR3n4o.js} +2 -2
- package/dist/chunks/{checkbox.component-CvTfrYob.js.map → checkbox.component-u7MR3n4o.js.map} +1 -1
- package/dist/chunks/{checkboxGroup.component-DJKgkD87.js → checkboxGroup.component-CNnlDoOR.js} +2 -2
- package/dist/chunks/{checkboxGroup.component-DJKgkD87.js.map → checkboxGroup.component-CNnlDoOR.js.map} +1 -1
- package/dist/chunks/{checkboxGroup.component-CYmE3l6I.js → checkboxGroup.component-Ch2eLuiA.js} +3 -3
- package/dist/chunks/{checkboxGroup.component-CYmE3l6I.js.map → checkboxGroup.component-Ch2eLuiA.js.map} +1 -1
- package/dist/chunks/{conversationCard.component-B9-73MvR.js → conversationCard.component-D5UsucDp.js} +2 -2
- package/dist/chunks/{conversationCard.component-B9-73MvR.js.map → conversationCard.component-D5UsucDp.js.map} +1 -1
- package/dist/chunks/{conversationCard.component-BoR-pGix.js → conversationCard.component-DQqpy-FX.js} +2 -2
- package/dist/chunks/{conversationCard.component-BoR-pGix.js.map → conversationCard.component-DQqpy-FX.js.map} +1 -1
- package/dist/chunks/{datePicker.component-_-ci5_PJ.js → datePicker.component-CBYLerCE.js} +2 -2
- package/dist/chunks/{datePicker.component-_-ci5_PJ.js.map → datePicker.component-CBYLerCE.js.map} +1 -1
- package/dist/chunks/{datePicker.component-BhlcO3Qa.js → datePicker.component-Dwu1QDNa.js} +3 -3
- package/dist/chunks/{datePicker.component-BhlcO3Qa.js.map → datePicker.component-Dwu1QDNa.js.map} +1 -1
- package/dist/chunks/{menu.component-BEEsicXT.js → menu.component-OwlCMqw2.js} +2 -2
- package/dist/chunks/{menu.component-BEEsicXT.js.map → menu.component-OwlCMqw2.js.map} +1 -1
- package/dist/chunks/{menu.component-BFL1WXRS.js → menu.component-fFdY9cMO.js} +3 -3
- package/dist/chunks/{menu.component-BFL1WXRS.js.map → menu.component-fFdY9cMO.js.map} +1 -1
- package/dist/chunks/{pinInput.types-CLgxXzKy.js → pinInput.types-BW8TUMvl.js} +2 -2
- package/dist/chunks/{pinInput.types-CLgxXzKy.js.map → pinInput.types-BW8TUMvl.js.map} +1 -1
- package/dist/chunks/{pinInput.types-CnU27QDl.js → pinInput.types-DoQJLvWY.js} +2 -2
- package/dist/chunks/{pinInput.types-CnU27QDl.js.map → pinInput.types-DoQJLvWY.js.map} +1 -1
- package/dist/chunks/{radioGroup.types-B3a66q9p.js → radioGroup.types-Bm6SHbbS.js} +2 -2
- package/dist/chunks/{radioGroup.types-B3a66q9p.js.map → radioGroup.types-Bm6SHbbS.js.map} +1 -1
- package/dist/chunks/{radioGroup.types-DdX1SZnQ.js → radioGroup.types-CA2oK1Am.js} +3 -3
- package/dist/chunks/{radioGroup.types-DdX1SZnQ.js.map → radioGroup.types-CA2oK1Am.js.map} +1 -1
- package/dist/chunks/{ratingDots.component-Dxhfd6qE.js → ratingDots.component-CuKKpqru.js} +2 -2
- package/dist/chunks/{ratingDots.component-Dxhfd6qE.js.map → ratingDots.component-CuKKpqru.js.map} +1 -1
- package/dist/chunks/{ratingDots.component-BAtcU4JC.js → ratingDots.component-TPth4wKQ.js} +2 -2
- package/dist/chunks/{ratingDots.component-BAtcU4JC.js.map → ratingDots.component-TPth4wKQ.js.map} +1 -1
- package/dist/chunks/{select.component-29vEA8EQ.js → select.component-91EorPLw.js} +2 -2
- package/dist/chunks/{select.component-29vEA8EQ.js.map → select.component-91EorPLw.js.map} +1 -1
- package/dist/chunks/{select.component-o2RuJ5R1.js → select.component-DEf5MiUc.js} +3 -3
- package/dist/chunks/{select.component-o2RuJ5R1.js.map → select.component-DEf5MiUc.js.map} +1 -1
- package/dist/chunks/{switch.component-DghHmo1Q.js → switch.component-CJ3nDOQj.js} +2 -2
- package/dist/chunks/{switch.component-DghHmo1Q.js.map → switch.component-CJ3nDOQj.js.map} +1 -1
- package/dist/chunks/{switch.component-C2SVRVqH.js → switch.component-NP_hIh2c.js} +2 -2
- package/dist/chunks/{switch.component-C2SVRVqH.js.map → switch.component-NP_hIh2c.js.map} +1 -1
- package/dist/chunks/{tagBlock.component-BQNwnshc.js → tagBlock.component-jWG9O22v.js} +2 -2
- package/dist/chunks/{tagBlock.component-BQNwnshc.js.map → tagBlock.component-jWG9O22v.js.map} +1 -1
- package/dist/chunks/{tagBlock.component-BcdJnkIB.js → tagBlock.component-lQeyNLgK.js} +2 -2
- package/dist/chunks/{tagBlock.component-BcdJnkIB.js.map → tagBlock.component-lQeyNLgK.js.map} +1 -1
- package/dist/chunks/{textInput.component-Dg0NjMGd.js → textInput.component-Bw1lEr8q.js} +2 -2
- package/dist/chunks/{textInput.component-Dg0NjMGd.js.map → textInput.component-Bw1lEr8q.js.map} +1 -1
- package/dist/chunks/{textInput.component-DBOBy5dT.js → textInput.component-C8R6bZLW.js} +2 -2
- package/dist/chunks/{textInput.component-DBOBy5dT.js.map → textInput.component-C8R6bZLW.js.map} +1 -1
- package/dist/chunks/{textarea.component-DQAMtD62.js → textarea.component-DDYGwqlz.js} +2 -2
- package/dist/chunks/{textarea.component-DQAMtD62.js.map → textarea.component-DDYGwqlz.js.map} +1 -1
- package/dist/chunks/{textarea.component-BNiipjT7.js → textarea.component-DMisQzyb.js} +2 -2
- package/dist/chunks/{textarea.component-BNiipjT7.js.map → textarea.component-DMisQzyb.js.map} +1 -1
- package/dist/chunks/{theme.provider-B0zBjo_b.js → theme.provider-C2SyH4Og.js} +2 -2
- package/dist/chunks/{theme.provider-B0zBjo_b.js.map → theme.provider-C2SyH4Og.js.map} +1 -1
- package/dist/chunks/{theme.provider-Bhx8UNwC.js → theme.provider-h0MhVrWb.js} +2 -2
- package/dist/chunks/{theme.provider-Bhx8UNwC.js.map → theme.provider-h0MhVrWb.js.map} +1 -1
- package/dist/chunks/{timePicker.component-CbfNMKHg.js → timePicker.component-3lHlD-Sl.js} +2 -2
- package/dist/chunks/{timePicker.component-CbfNMKHg.js.map → timePicker.component-3lHlD-Sl.js.map} +1 -1
- package/dist/chunks/{timePicker.component-9uhrYSK_.js → timePicker.component-B8Md1wxz.js} +2 -2
- package/dist/chunks/{timePicker.component-9uhrYSK_.js.map → timePicker.component-B8Md1wxz.js.map} +1 -1
- package/dist/chunks/{timeRange.component-BSAMk2js.js → timeRange.component-DtNIkrsw.js} +2 -2
- package/dist/chunks/{timeRange.component-BSAMk2js.js.map → timeRange.component-DtNIkrsw.js.map} +1 -1
- package/dist/chunks/{timeRange.component-CL5z9FRa.js → timeRange.component-l8jhl4Vv.js} +2 -2
- package/dist/chunks/{timeRange.component-CL5z9FRa.js.map → timeRange.component-l8jhl4Vv.js.map} +1 -1
- package/dist/chunks/{withFormControl-D0tbS4T0.js → withFormControl-CCJImQAG.js} +37 -29
- package/dist/chunks/{withFormControl-D0tbS4T0.js.map → withFormControl-CCJImQAG.js.map} +1 -1
- package/dist/chunks/{withFormControl-ClG2Nbcf.js → withFormControl-COwU1OTv.js} +2 -2
- package/dist/chunks/{withFormControl-ClG2Nbcf.js.map → withFormControl-COwU1OTv.js.map} +1 -1
- package/dist/cjs/components/ButtonGroup/index.cjs +1 -1
- package/dist/cjs/components/Checkbox/index.cjs +1 -1
- package/dist/cjs/components/CheckboxGroup/index.cjs +1 -1
- package/dist/cjs/components/ConversationCard/index.cjs +1 -1
- package/dist/cjs/components/DatePicker/index.cjs +1 -1
- package/dist/cjs/components/Menu/index.cjs +1 -1
- package/dist/cjs/components/PinInput/index.cjs +1 -1
- package/dist/cjs/components/RadioGroup/index.cjs +1 -1
- package/dist/cjs/components/RatingDots/index.cjs +1 -1
- package/dist/cjs/components/Select/index.cjs +1 -1
- package/dist/cjs/components/Switch/index.cjs +1 -1
- package/dist/cjs/components/TagBlock/index.cjs +1 -1
- package/dist/cjs/components/TextInput/index.cjs +1 -1
- package/dist/cjs/components/Textarea/index.cjs +1 -1
- package/dist/cjs/components/TimePicker/index.cjs +1 -1
- package/dist/cjs/components/TimeRange/index.cjs +1 -1
- package/dist/cjs/components/index.cjs +1 -1
- package/dist/cjs/index.cjs +1 -1
- package/dist/cjs/theme/index.cjs +1 -1
- package/dist/esm/components/ButtonGroup/index.js +1 -1
- package/dist/esm/components/Checkbox/index.js +1 -1
- package/dist/esm/components/CheckboxGroup/index.js +1 -1
- package/dist/esm/components/ConversationCard/index.js +1 -1
- package/dist/esm/components/DatePicker/index.js +1 -1
- package/dist/esm/components/Menu/index.js +1 -1
- package/dist/esm/components/PinInput/index.js +1 -1
- package/dist/esm/components/RadioGroup/index.js +1 -1
- package/dist/esm/components/RatingDots/index.js +1 -1
- package/dist/esm/components/Select/index.js +1 -1
- package/dist/esm/components/Switch/index.js +1 -1
- package/dist/esm/components/TagBlock/index.js +1 -1
- package/dist/esm/components/TextInput/index.js +1 -1
- package/dist/esm/components/Textarea/index.js +1 -1
- package/dist/esm/components/TimePicker/index.js +1 -1
- package/dist/esm/components/TimeRange/index.js +1 -1
- package/dist/esm/components/index.js +16 -16
- package/dist/esm/index.js +17 -17
- package/dist/esm/theme/index.js +1 -1
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const n=require("./jsx-runtime-BjDatQAs.js"),t=require("react"),W=require("./textInput.component-
|
|
2
|
-
//# sourceMappingURL=timePicker.component-
|
|
1
|
+
"use strict";const n=require("./jsx-runtime-BjDatQAs.js"),t=require("react"),W=require("./textInput.component-Bw1lEr8q.js"),Y=require("./popover.component-B1NHpxuL.js"),F=require("./icon.component-B6R8-DRk.js"),G=require("./useIconTextSizeMap-BXmABb54.js"),J=require("./format-BRt-TIiQ.js"),A=require("./config-BFcXpdZo.js"),K=require("./use-recipe-DaPWl_pL.js"),h=require("./box-Baq7UBls.js"),O=require("./use-slot-recipe-8liupslO.js"),Q=A.defineRecipe({base:{borderRadius:"4px",cursor:"pointer",fontSize:"sm",px:3,py:1,textAlign:"center"},variants:{selected:{true:{background:"background.secondary",color:"text.contrast",_hover:{background:"background.secondary.hover"}},false:{background:"background",color:"text.subtle",_hover:{background:"background.secondaryAlpha.hover"}}}},defaultVariants:{selected:!1}}),U=({value:s,innerRef:a,onClick:i,selected:l})=>{const R=K.useRecipe({recipe:Q})({selected:l}),d=t.useCallback(r=>{const p=r.currentTarget.textContent||"";i(p)},[i]);return n.jsxRuntimeExports.jsx(h.Box,{className:"TimePicker__Option","data-testid":"kibble-timepicker-option",ref:a,onClick:d,css:R,children:s})},v=A.defineSlotRecipe({slots:["trigger","container","list"],base:{trigger:{width:"100%"},container:{display:"flex",gap:1.5,height:"186px",overflow:"hidden"},list:{display:"flex",flexDirection:"column",gap:1,overflowY:"auto","&::webkit-scrollbar":{display:"none"}}}}),C=({options:s,optionType:a,selectedValue:i,onClick:l,open:f=!1})=>{const d=O.useSlotRecipe({recipe:v})(),r=t.useRef(null),p=t.useRef(null);return t.useEffect(()=>{f&&p.current&&r.current&&(p.current.scrollTop=r.current?.offsetTop-p.current?.offsetTop)},[f]),n.jsxRuntimeExports.jsx(h.Box,{className:"TimePicker__List","data-testid":`kibble-timepicker-${a}-list`,css:d.list,children:s.map(c=>n.jsxRuntimeExports.jsx(U,{innerRef:c===i?r:null,value:c,selected:c===i,onClick:l,"data-testid":c},`${a}-option-${c}`))})};var u=(s=>(s.AM="AM",s.PM="PM",s))(u||{});const X=({initialTime:s,inputProps:a,minuteInterval:i=5,onTimeChange:l,placement:f="bottom"})=>{const d=O.useSlotRecipe({recipe:v})(),[r,p]=t.useState(!1),[c,E]=t.useState(s),[k,j]=t.useState(),[m,M]=t.useState(),[b,S]=t.useState(),N=t.useMemo(()=>c?J.format(c,"h:mm aa"):"",[c]),y=e=>{const o=e.toString();return o.length===1?`0${o}`:o},w=t.useMemo(()=>[12,1,2,3,4,5,6,7,8,9,10,11].map(e=>e.toString()),[]),H=t.useMemo(()=>{const e=[];for(let o=0;o<60;o+=i)e.push(o);return e.map(y)},[i]),z=[u.AM,u.PM],x=t.useCallback((e,o,g)=>{const T=e||"12",D=o||"00",P=g||"AM";let _=0;e||j("12"),o||M("00"),g||S("AM"),P===u.PM&&Number(T)<12&&(_=12),P===u.AM&&Number(T)===12&&(_=-12);const $=Number(T)+_,L=new Date().setHours($,Number(D),0,0),q=new Date(L);E(q),l&&l(q)},[l]),I=t.useCallback(e=>{j(e),x(e,m,b)},[x,b,m]),V=t.useCallback(e=>{M(e),x(k,e,b)},[x,k,b]),B=t.useCallback(e=>{S(e),x(k,m,e)},[x,k,m]);return t.useEffect(()=>{if(s){const e=new Date(s),g=e.getHours()%12||12;E(s),j(g.toString()),M(e.getMinutes().toString()),S(e.getHours()>11?u.PM:u.AM)}},[s]),n.jsxRuntimeExports.jsx(Y.Popover,{open:r,onOpenChange:({open:e})=>p(e),anchor:n.jsxRuntimeExports.jsx(h.Box,{className:"TimePicker__Trigger","data-testid":"kibble-timepicker-trigger",css:d.trigger,children:n.jsxRuntimeExports.jsx(W.WrappedTextInput,{placeholder:"12:00 AM",rightElement:n.jsxRuntimeExports.jsx(F.Icon,{size:G.useIconTextSizeMap(a?.size||"md"),name:"clock"}),value:N,readOnly:!0,cursor:"pointer",...a,...r&&{"data-focus":"true"}})}),contentProps:{w:"max-content"},placement:f,children:n.jsxRuntimeExports.jsxs(h.Box,{className:"TimePicker__Container","data-testid":"kibble-timepicker-container",css:d.container,children:[n.jsxRuntimeExports.jsx(C,{options:w,optionType:"hour",selectedValue:k,onClick:I,open:r}),n.jsxRuntimeExports.jsx(C,{options:H,optionType:"minute",selectedValue:m?y(m):void 0,onClick:V,open:r}),n.jsxRuntimeExports.jsx(C,{options:z,optionType:"meridiem",selectedValue:b,onClick:B,open:r})]})})};exports.Meridiem=u;exports.TimePicker=X;
|
|
2
|
+
//# sourceMappingURL=timePicker.component-3lHlD-Sl.js.map
|
package/dist/chunks/{timePicker.component-CbfNMKHg.js.map → timePicker.component-3lHlD-Sl.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timePicker.component-CbfNMKHg.js","sources":["../../src/components/TimePicker/components/TimeOption/timeOption.recipe.ts","../../src/components/TimePicker/components/TimeOption/timeOption.component.tsx","../../src/components/TimePicker/timePicker.recipe.ts","../../src/components/TimePicker/components/TimeList/timeList.component.tsx","../../src/components/TimePicker/timePicker.types.ts","../../src/components/TimePicker/timePicker.component.tsx"],"sourcesContent":["import { defineRecipe } from '@chakra-ui/react/styled-system';\n\nexport const timeOptionRecipe = defineRecipe({\n base: {\n borderRadius: '4px',\n cursor: 'pointer',\n fontSize: 'sm',\n px: 3,\n py: 1,\n textAlign: 'center',\n },\n variants: {\n selected: {\n true: {\n background: 'background.secondary',\n color: 'text.contrast',\n _hover: {\n background: 'background.secondary.hover',\n },\n },\n false: {\n background: 'background',\n color: 'text.subtle',\n _hover: {\n background: 'background.secondaryAlpha.hover',\n },\n },\n },\n },\n defaultVariants: {\n selected: false,\n },\n});\n","import React, { useCallback } from 'react';\nimport { Box } from '@chakra-ui/react/box';\nimport { useRecipe } from '@chakra-ui/react/styled-system';\nimport { timeOptionRecipe } from './timeOption.recipe';\n\ninterface TimeOptionProps {\n innerRef?: React.Ref<HTMLDivElement | null> | null;\n onClick: (selectedValue: string) => void;\n selected: boolean;\n value: string;\n}\n\nexport const TimeOption = ({ value, innerRef, onClick, selected }: TimeOptionProps): React.JSX.Element => {\n const recipe = useRecipe({ recipe: timeOptionRecipe });\n const styles = recipe({ selected });\n\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n const selectedValue = event.currentTarget.textContent || '';\n onClick(selectedValue);\n },\n [onClick],\n );\n\n return (\n <Box\n className=\"TimePicker__Option\"\n data-testid=\"kibble-timepicker-option\"\n ref={innerRef}\n onClick={handleClick}\n css={styles}\n >\n {value}\n </Box>\n );\n};\n","import { defineSlotRecipe } from '@chakra-ui/react/styled-system';\n\nexport const timePickerRecipe = defineSlotRecipe({\n slots: ['trigger', 'container', 'list'],\n base: {\n trigger: {\n width: '100%',\n },\n container: {\n display: 'flex',\n gap: 1.5,\n height: '186px',\n overflow: 'hidden',\n },\n list: {\n display: 'flex',\n flexDirection: 'column',\n gap: 1,\n overflowY: 'auto',\n '&::webkit-scrollbar': {\n display: 'none',\n },\n },\n },\n});\n","import React, { useEffect, useRef } from 'react';\nimport { Box } from '@chakra-ui/react/box';\nimport { TimeOption } from '../TimeOption/timeOption.component';\nimport { useSlotRecipe } from '@chakra-ui/react/styled-system';\nimport { timePickerRecipe } from '../../timePicker.recipe';\n\ninterface ScrollContainerProps {\n options: string[];\n optionType: 'hour' | 'minute' | 'meridiem';\n selectedValue?: string;\n onClick: (value: string) => void;\n open: boolean;\n}\n\nexport const TimeList = ({\n options,\n optionType,\n selectedValue,\n onClick,\n open = false,\n}: ScrollContainerProps): React.JSX.Element => {\n const recipe = useSlotRecipe({ recipe: timePickerRecipe });\n const styles = recipe();\n const itemRef = useRef<HTMLDivElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (open && containerRef.current && itemRef.current) {\n containerRef.current.scrollTop = itemRef.current?.offsetTop - containerRef.current?.offsetTop;\n }\n }, [open]);\n\n return (\n <Box className=\"TimePicker__List\" data-testid={`kibble-timepicker-${optionType}-list`} css={styles.list}>\n {options.map((option) => {\n return (\n <TimeOption\n key={`${optionType}-option-${option}`}\n innerRef={option === selectedValue ? itemRef : null}\n value={option}\n selected={option === selectedValue}\n onClick={onClick}\n data-testid={option}\n />\n );\n })}\n </Box>\n );\n};\n","export enum Meridiem {\n AM = 'AM',\n PM = 'PM',\n}\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { TextInput, TextInputProps } from 'components/TextInput/textInput.component';\nimport { Popover } from 'components/Popover/popover.component';\nimport { Icon } from 'components/Icon/icon.component';\nimport { useIconTextSizeMap } from 'hooks/useIconTextSizeMap';\nimport format from 'date-fns/format';\nimport { Box } from '@chakra-ui/react/box';\nimport { TimeList } from './components/TimeList/timeList.component';\nimport { Meridiem } from './timePicker.types';\nimport { useSlotRecipe } from '@chakra-ui/react/styled-system';\nimport { timePickerRecipe } from './timePicker.recipe';\nimport { Placement } from 'shared/types/placement';\n\nexport interface TimePickerProps {\n initialTime?: Date;\n inputProps?: Omit<TextInputProps, 'onChange' | 'value' | 'isClearable' | 'onClear'>;\n minuteInterval?: number;\n onTimeChange?: (time: Date) => void;\n placement?: Placement;\n}\n\nexport const TimePicker = ({\n initialTime,\n inputProps,\n minuteInterval = 5,\n onTimeChange,\n placement = 'bottom',\n}: TimePickerProps): React.JSX.Element => {\n const recipe = useSlotRecipe({ recipe: timePickerRecipe });\n const styles = recipe();\n const [isOpen, setIsOpen] = useState(false);\n const [selectedTime, setSelectedTime] = useState(initialTime);\n const [selectedHour, setSelectedHour] = useState<string | undefined>();\n const [selectedMinute, setSelectedMinute] = useState<string | undefined>();\n const [selectedMeridiem, setSelectedMeridiem] = useState<string | undefined>();\n\n const formattedTime = useMemo(() => {\n if (!selectedTime) return '';\n return format(selectedTime, 'h:mm aa');\n }, [selectedTime]);\n\n const formatNumber = (number: number | string): string => {\n const formattedValue = number.toString();\n if (formattedValue.length === 1) {\n return `0${formattedValue}`;\n }\n\n return formattedValue;\n };\n\n const hourOptions = useMemo(() => {\n return [12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11].map((hour) => hour.toString());\n }, []);\n\n const minuteOptions = useMemo(() => {\n const minutes = [];\n for (let i = 0; i < 60; i += minuteInterval) {\n minutes.push(i);\n }\n\n return minutes.map(formatNumber);\n }, [minuteInterval]);\n\n const meridiemOptions = [Meridiem.AM, Meridiem.PM];\n\n const handleTimeChange = useCallback(\n (hour?: string, minute?: string, meridiem?: string) => {\n const _hour = hour || '12';\n const _minute = minute || '00';\n const _meridiem = meridiem || 'AM';\n let meridiemAdjustment = 0;\n\n if (!hour) {\n setSelectedHour('12');\n }\n if (!minute) {\n setSelectedMinute('00');\n }\n if (!meridiem) {\n setSelectedMeridiem('AM');\n }\n\n // set 1-11pm to 13-23. Don't set 12pm to 24\n if (_meridiem === Meridiem.PM && Number(_hour) < 12) {\n meridiemAdjustment = 12;\n }\n\n // set 12am to 00\n if (_meridiem === Meridiem.AM && Number(_hour) === 12) {\n meridiemAdjustment = -12;\n }\n\n const hours = Number(_hour) + meridiemAdjustment;\n const time = new Date().setHours(hours, Number(_minute), 0, 0);\n const date = new Date(time);\n setSelectedTime(date);\n\n if (onTimeChange) {\n onTimeChange(date);\n }\n },\n [onTimeChange],\n );\n\n const handleHourClick = useCallback(\n (value: string) => {\n setSelectedHour(value);\n handleTimeChange(value, selectedMinute, selectedMeridiem);\n },\n [handleTimeChange, selectedMeridiem, selectedMinute],\n );\n\n const handleMinuteClick = useCallback(\n (value: string) => {\n setSelectedMinute(value);\n handleTimeChange(selectedHour, value, selectedMeridiem);\n },\n [handleTimeChange, selectedHour, selectedMeridiem],\n );\n\n const handleMeridiemClick = useCallback(\n (value: string) => {\n setSelectedMeridiem(value);\n handleTimeChange(selectedHour, selectedMinute, value);\n },\n [handleTimeChange, selectedHour, selectedMinute],\n );\n\n useEffect(() => {\n // Set default selections based on value passed in\n if (initialTime) {\n const localTime = new Date(initialTime);\n\n // calculate hours\n const hours = localTime.getHours();\n const adjustedHours = hours % 12 || 12;\n\n setSelectedTime(initialTime);\n setSelectedHour(adjustedHours.toString());\n setSelectedMinute(localTime.getMinutes().toString());\n setSelectedMeridiem(localTime.getHours() > 11 ? Meridiem.PM : Meridiem.AM);\n }\n }, [initialTime]);\n\n return (\n <Popover\n open={isOpen}\n onOpenChange={({ open }) => setIsOpen(open)}\n anchor={\n <Box className=\"TimePicker__Trigger\" data-testid=\"kibble-timepicker-trigger\" css={styles.trigger}>\n <TextInput\n placeholder=\"12:00 AM\"\n rightElement={<Icon size={useIconTextSizeMap(inputProps?.size || 'md')} name=\"clock\" />}\n value={formattedTime}\n readOnly\n cursor=\"pointer\"\n {...inputProps}\n {...(isOpen && { 'data-focus': 'true' })}\n />\n </Box>\n }\n contentProps={{ w: 'max-content' }}\n placement={placement}\n >\n <Box className=\"TimePicker__Container\" data-testid=\"kibble-timepicker-container\" css={styles.container}>\n <TimeList\n options={hourOptions}\n optionType=\"hour\"\n selectedValue={selectedHour}\n onClick={handleHourClick}\n open={isOpen}\n />\n <TimeList\n options={minuteOptions}\n optionType=\"minute\"\n selectedValue={selectedMinute ? formatNumber(selectedMinute) : undefined}\n onClick={handleMinuteClick}\n open={isOpen}\n />\n <TimeList\n options={meridiemOptions}\n optionType=\"meridiem\"\n selectedValue={selectedMeridiem}\n onClick={handleMeridiemClick}\n open={isOpen}\n />\n </Box>\n </Popover>\n );\n};\n"],"names":["timeOptionRecipe","defineRecipe","TimeOption","value","innerRef","onClick","selected","styles","useRecipe","handleClick","useCallback","event","selectedValue","jsx","Box","timePickerRecipe","defineSlotRecipe","TimeList","options","optionType","open","useSlotRecipe","itemRef","useRef","containerRef","useEffect","option","Meridiem","TimePicker","initialTime","inputProps","minuteInterval","onTimeChange","placement","isOpen","setIsOpen","useState","selectedTime","setSelectedTime","selectedHour","setSelectedHour","selectedMinute","setSelectedMinute","selectedMeridiem","setSelectedMeridiem","formattedTime","useMemo","format","formatNumber","number","formattedValue","hourOptions","hour","minuteOptions","minutes","i","meridiemOptions","handleTimeChange","minute","meridiem","_hour","_minute","_meridiem","meridiemAdjustment","hours","time","date","handleHourClick","handleMinuteClick","handleMeridiemClick","localTime","adjustedHours","Popover","TextInput","Icon","useIconTextSizeMap","jsxs"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"timePicker.component-3lHlD-Sl.js","sources":["../../src/components/TimePicker/components/TimeOption/timeOption.recipe.ts","../../src/components/TimePicker/components/TimeOption/timeOption.component.tsx","../../src/components/TimePicker/timePicker.recipe.ts","../../src/components/TimePicker/components/TimeList/timeList.component.tsx","../../src/components/TimePicker/timePicker.types.ts","../../src/components/TimePicker/timePicker.component.tsx"],"sourcesContent":["import { defineRecipe } from '@chakra-ui/react/styled-system';\n\nexport const timeOptionRecipe = defineRecipe({\n base: {\n borderRadius: '4px',\n cursor: 'pointer',\n fontSize: 'sm',\n px: 3,\n py: 1,\n textAlign: 'center',\n },\n variants: {\n selected: {\n true: {\n background: 'background.secondary',\n color: 'text.contrast',\n _hover: {\n background: 'background.secondary.hover',\n },\n },\n false: {\n background: 'background',\n color: 'text.subtle',\n _hover: {\n background: 'background.secondaryAlpha.hover',\n },\n },\n },\n },\n defaultVariants: {\n selected: false,\n },\n});\n","import React, { useCallback } from 'react';\nimport { Box } from '@chakra-ui/react/box';\nimport { useRecipe } from '@chakra-ui/react/styled-system';\nimport { timeOptionRecipe } from './timeOption.recipe';\n\ninterface TimeOptionProps {\n innerRef?: React.Ref<HTMLDivElement | null> | null;\n onClick: (selectedValue: string) => void;\n selected: boolean;\n value: string;\n}\n\nexport const TimeOption = ({ value, innerRef, onClick, selected }: TimeOptionProps): React.JSX.Element => {\n const recipe = useRecipe({ recipe: timeOptionRecipe });\n const styles = recipe({ selected });\n\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n const selectedValue = event.currentTarget.textContent || '';\n onClick(selectedValue);\n },\n [onClick],\n );\n\n return (\n <Box\n className=\"TimePicker__Option\"\n data-testid=\"kibble-timepicker-option\"\n ref={innerRef}\n onClick={handleClick}\n css={styles}\n >\n {value}\n </Box>\n );\n};\n","import { defineSlotRecipe } from '@chakra-ui/react/styled-system';\n\nexport const timePickerRecipe = defineSlotRecipe({\n slots: ['trigger', 'container', 'list'],\n base: {\n trigger: {\n width: '100%',\n },\n container: {\n display: 'flex',\n gap: 1.5,\n height: '186px',\n overflow: 'hidden',\n },\n list: {\n display: 'flex',\n flexDirection: 'column',\n gap: 1,\n overflowY: 'auto',\n '&::webkit-scrollbar': {\n display: 'none',\n },\n },\n },\n});\n","import React, { useEffect, useRef } from 'react';\nimport { Box } from '@chakra-ui/react/box';\nimport { TimeOption } from '../TimeOption/timeOption.component';\nimport { useSlotRecipe } from '@chakra-ui/react/styled-system';\nimport { timePickerRecipe } from '../../timePicker.recipe';\n\ninterface ScrollContainerProps {\n options: string[];\n optionType: 'hour' | 'minute' | 'meridiem';\n selectedValue?: string;\n onClick: (value: string) => void;\n open: boolean;\n}\n\nexport const TimeList = ({\n options,\n optionType,\n selectedValue,\n onClick,\n open = false,\n}: ScrollContainerProps): React.JSX.Element => {\n const recipe = useSlotRecipe({ recipe: timePickerRecipe });\n const styles = recipe();\n const itemRef = useRef<HTMLDivElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (open && containerRef.current && itemRef.current) {\n containerRef.current.scrollTop = itemRef.current?.offsetTop - containerRef.current?.offsetTop;\n }\n }, [open]);\n\n return (\n <Box className=\"TimePicker__List\" data-testid={`kibble-timepicker-${optionType}-list`} css={styles.list}>\n {options.map((option) => {\n return (\n <TimeOption\n key={`${optionType}-option-${option}`}\n innerRef={option === selectedValue ? itemRef : null}\n value={option}\n selected={option === selectedValue}\n onClick={onClick}\n data-testid={option}\n />\n );\n })}\n </Box>\n );\n};\n","export enum Meridiem {\n AM = 'AM',\n PM = 'PM',\n}\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { TextInput, TextInputProps } from 'components/TextInput/textInput.component';\nimport { Popover } from 'components/Popover/popover.component';\nimport { Icon } from 'components/Icon/icon.component';\nimport { useIconTextSizeMap } from 'hooks/useIconTextSizeMap';\nimport format from 'date-fns/format';\nimport { Box } from '@chakra-ui/react/box';\nimport { TimeList } from './components/TimeList/timeList.component';\nimport { Meridiem } from './timePicker.types';\nimport { useSlotRecipe } from '@chakra-ui/react/styled-system';\nimport { timePickerRecipe } from './timePicker.recipe';\nimport { Placement } from 'shared/types/placement';\n\nexport interface TimePickerProps {\n initialTime?: Date;\n inputProps?: Omit<TextInputProps, 'onChange' | 'value' | 'isClearable' | 'onClear'>;\n minuteInterval?: number;\n onTimeChange?: (time: Date) => void;\n placement?: Placement;\n}\n\nexport const TimePicker = ({\n initialTime,\n inputProps,\n minuteInterval = 5,\n onTimeChange,\n placement = 'bottom',\n}: TimePickerProps): React.JSX.Element => {\n const recipe = useSlotRecipe({ recipe: timePickerRecipe });\n const styles = recipe();\n const [isOpen, setIsOpen] = useState(false);\n const [selectedTime, setSelectedTime] = useState(initialTime);\n const [selectedHour, setSelectedHour] = useState<string | undefined>();\n const [selectedMinute, setSelectedMinute] = useState<string | undefined>();\n const [selectedMeridiem, setSelectedMeridiem] = useState<string | undefined>();\n\n const formattedTime = useMemo(() => {\n if (!selectedTime) return '';\n return format(selectedTime, 'h:mm aa');\n }, [selectedTime]);\n\n const formatNumber = (number: number | string): string => {\n const formattedValue = number.toString();\n if (formattedValue.length === 1) {\n return `0${formattedValue}`;\n }\n\n return formattedValue;\n };\n\n const hourOptions = useMemo(() => {\n return [12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11].map((hour) => hour.toString());\n }, []);\n\n const minuteOptions = useMemo(() => {\n const minutes = [];\n for (let i = 0; i < 60; i += minuteInterval) {\n minutes.push(i);\n }\n\n return minutes.map(formatNumber);\n }, [minuteInterval]);\n\n const meridiemOptions = [Meridiem.AM, Meridiem.PM];\n\n const handleTimeChange = useCallback(\n (hour?: string, minute?: string, meridiem?: string) => {\n const _hour = hour || '12';\n const _minute = minute || '00';\n const _meridiem = meridiem || 'AM';\n let meridiemAdjustment = 0;\n\n if (!hour) {\n setSelectedHour('12');\n }\n if (!minute) {\n setSelectedMinute('00');\n }\n if (!meridiem) {\n setSelectedMeridiem('AM');\n }\n\n // set 1-11pm to 13-23. Don't set 12pm to 24\n if (_meridiem === Meridiem.PM && Number(_hour) < 12) {\n meridiemAdjustment = 12;\n }\n\n // set 12am to 00\n if (_meridiem === Meridiem.AM && Number(_hour) === 12) {\n meridiemAdjustment = -12;\n }\n\n const hours = Number(_hour) + meridiemAdjustment;\n const time = new Date().setHours(hours, Number(_minute), 0, 0);\n const date = new Date(time);\n setSelectedTime(date);\n\n if (onTimeChange) {\n onTimeChange(date);\n }\n },\n [onTimeChange],\n );\n\n const handleHourClick = useCallback(\n (value: string) => {\n setSelectedHour(value);\n handleTimeChange(value, selectedMinute, selectedMeridiem);\n },\n [handleTimeChange, selectedMeridiem, selectedMinute],\n );\n\n const handleMinuteClick = useCallback(\n (value: string) => {\n setSelectedMinute(value);\n handleTimeChange(selectedHour, value, selectedMeridiem);\n },\n [handleTimeChange, selectedHour, selectedMeridiem],\n );\n\n const handleMeridiemClick = useCallback(\n (value: string) => {\n setSelectedMeridiem(value);\n handleTimeChange(selectedHour, selectedMinute, value);\n },\n [handleTimeChange, selectedHour, selectedMinute],\n );\n\n useEffect(() => {\n // Set default selections based on value passed in\n if (initialTime) {\n const localTime = new Date(initialTime);\n\n // calculate hours\n const hours = localTime.getHours();\n const adjustedHours = hours % 12 || 12;\n\n setSelectedTime(initialTime);\n setSelectedHour(adjustedHours.toString());\n setSelectedMinute(localTime.getMinutes().toString());\n setSelectedMeridiem(localTime.getHours() > 11 ? Meridiem.PM : Meridiem.AM);\n }\n }, [initialTime]);\n\n return (\n <Popover\n open={isOpen}\n onOpenChange={({ open }) => setIsOpen(open)}\n anchor={\n <Box className=\"TimePicker__Trigger\" data-testid=\"kibble-timepicker-trigger\" css={styles.trigger}>\n <TextInput\n placeholder=\"12:00 AM\"\n rightElement={<Icon size={useIconTextSizeMap(inputProps?.size || 'md')} name=\"clock\" />}\n value={formattedTime}\n readOnly\n cursor=\"pointer\"\n {...inputProps}\n {...(isOpen && { 'data-focus': 'true' })}\n />\n </Box>\n }\n contentProps={{ w: 'max-content' }}\n placement={placement}\n >\n <Box className=\"TimePicker__Container\" data-testid=\"kibble-timepicker-container\" css={styles.container}>\n <TimeList\n options={hourOptions}\n optionType=\"hour\"\n selectedValue={selectedHour}\n onClick={handleHourClick}\n open={isOpen}\n />\n <TimeList\n options={minuteOptions}\n optionType=\"minute\"\n selectedValue={selectedMinute ? formatNumber(selectedMinute) : undefined}\n onClick={handleMinuteClick}\n open={isOpen}\n />\n <TimeList\n options={meridiemOptions}\n optionType=\"meridiem\"\n selectedValue={selectedMeridiem}\n onClick={handleMeridiemClick}\n open={isOpen}\n />\n </Box>\n </Popover>\n );\n};\n"],"names":["timeOptionRecipe","defineRecipe","TimeOption","value","innerRef","onClick","selected","styles","useRecipe","handleClick","useCallback","event","selectedValue","jsx","Box","timePickerRecipe","defineSlotRecipe","TimeList","options","optionType","open","useSlotRecipe","itemRef","useRef","containerRef","useEffect","option","Meridiem","TimePicker","initialTime","inputProps","minuteInterval","onTimeChange","placement","isOpen","setIsOpen","useState","selectedTime","setSelectedTime","selectedHour","setSelectedHour","selectedMinute","setSelectedMinute","selectedMeridiem","setSelectedMeridiem","formattedTime","useMemo","format","formatNumber","number","formattedValue","hourOptions","hour","minuteOptions","minutes","i","meridiemOptions","handleTimeChange","minute","meridiem","_hour","_minute","_meridiem","meridiemAdjustment","hours","time","date","handleHourClick","handleMinuteClick","handleMeridiemClick","localTime","adjustedHours","Popover","TextInput","Icon","useIconTextSizeMap","jsxs"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { j as o } from "./jsx-runtime-C5mzlN2N.js";
|
|
2
2
|
import { useCallback as h, useRef as w, useEffect as H, useState as b, useMemo as R } from "react";
|
|
3
|
-
import { W as G } from "./textInput.component-
|
|
3
|
+
import { W as G } from "./textInput.component-C8R6bZLW.js";
|
|
4
4
|
import { P as J } from "./popover.component-DlFFiYME.js";
|
|
5
5
|
import { I as K } from "./icon.component-S_qFWBRf.js";
|
|
6
6
|
import { u as Q } from "./useIconTextSizeMap-BK-pUrQv.js";
|
|
@@ -206,4 +206,4 @@ export {
|
|
|
206
206
|
u as M,
|
|
207
207
|
fe as T
|
|
208
208
|
};
|
|
209
|
-
//# sourceMappingURL=timePicker.component-
|
|
209
|
+
//# sourceMappingURL=timePicker.component-B8Md1wxz.js.map
|
package/dist/chunks/{timePicker.component-9uhrYSK_.js.map → timePicker.component-B8Md1wxz.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timePicker.component-9uhrYSK_.js","sources":["../../src/components/TimePicker/components/TimeOption/timeOption.recipe.ts","../../src/components/TimePicker/components/TimeOption/timeOption.component.tsx","../../src/components/TimePicker/timePicker.recipe.ts","../../src/components/TimePicker/components/TimeList/timeList.component.tsx","../../src/components/TimePicker/timePicker.types.ts","../../src/components/TimePicker/timePicker.component.tsx"],"sourcesContent":["import { defineRecipe } from '@chakra-ui/react/styled-system';\n\nexport const timeOptionRecipe = defineRecipe({\n base: {\n borderRadius: '4px',\n cursor: 'pointer',\n fontSize: 'sm',\n px: 3,\n py: 1,\n textAlign: 'center',\n },\n variants: {\n selected: {\n true: {\n background: 'background.secondary',\n color: 'text.contrast',\n _hover: {\n background: 'background.secondary.hover',\n },\n },\n false: {\n background: 'background',\n color: 'text.subtle',\n _hover: {\n background: 'background.secondaryAlpha.hover',\n },\n },\n },\n },\n defaultVariants: {\n selected: false,\n },\n});\n","import React, { useCallback } from 'react';\nimport { Box } from '@chakra-ui/react/box';\nimport { useRecipe } from '@chakra-ui/react/styled-system';\nimport { timeOptionRecipe } from './timeOption.recipe';\n\ninterface TimeOptionProps {\n innerRef?: React.Ref<HTMLDivElement | null> | null;\n onClick: (selectedValue: string) => void;\n selected: boolean;\n value: string;\n}\n\nexport const TimeOption = ({ value, innerRef, onClick, selected }: TimeOptionProps): React.JSX.Element => {\n const recipe = useRecipe({ recipe: timeOptionRecipe });\n const styles = recipe({ selected });\n\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n const selectedValue = event.currentTarget.textContent || '';\n onClick(selectedValue);\n },\n [onClick],\n );\n\n return (\n <Box\n className=\"TimePicker__Option\"\n data-testid=\"kibble-timepicker-option\"\n ref={innerRef}\n onClick={handleClick}\n css={styles}\n >\n {value}\n </Box>\n );\n};\n","import { defineSlotRecipe } from '@chakra-ui/react/styled-system';\n\nexport const timePickerRecipe = defineSlotRecipe({\n slots: ['trigger', 'container', 'list'],\n base: {\n trigger: {\n width: '100%',\n },\n container: {\n display: 'flex',\n gap: 1.5,\n height: '186px',\n overflow: 'hidden',\n },\n list: {\n display: 'flex',\n flexDirection: 'column',\n gap: 1,\n overflowY: 'auto',\n '&::webkit-scrollbar': {\n display: 'none',\n },\n },\n },\n});\n","import React, { useEffect, useRef } from 'react';\nimport { Box } from '@chakra-ui/react/box';\nimport { TimeOption } from '../TimeOption/timeOption.component';\nimport { useSlotRecipe } from '@chakra-ui/react/styled-system';\nimport { timePickerRecipe } from '../../timePicker.recipe';\n\ninterface ScrollContainerProps {\n options: string[];\n optionType: 'hour' | 'minute' | 'meridiem';\n selectedValue?: string;\n onClick: (value: string) => void;\n open: boolean;\n}\n\nexport const TimeList = ({\n options,\n optionType,\n selectedValue,\n onClick,\n open = false,\n}: ScrollContainerProps): React.JSX.Element => {\n const recipe = useSlotRecipe({ recipe: timePickerRecipe });\n const styles = recipe();\n const itemRef = useRef<HTMLDivElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (open && containerRef.current && itemRef.current) {\n containerRef.current.scrollTop = itemRef.current?.offsetTop - containerRef.current?.offsetTop;\n }\n }, [open]);\n\n return (\n <Box className=\"TimePicker__List\" data-testid={`kibble-timepicker-${optionType}-list`} css={styles.list}>\n {options.map((option) => {\n return (\n <TimeOption\n key={`${optionType}-option-${option}`}\n innerRef={option === selectedValue ? itemRef : null}\n value={option}\n selected={option === selectedValue}\n onClick={onClick}\n data-testid={option}\n />\n );\n })}\n </Box>\n );\n};\n","export enum Meridiem {\n AM = 'AM',\n PM = 'PM',\n}\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { TextInput, TextInputProps } from 'components/TextInput/textInput.component';\nimport { Popover } from 'components/Popover/popover.component';\nimport { Icon } from 'components/Icon/icon.component';\nimport { useIconTextSizeMap } from 'hooks/useIconTextSizeMap';\nimport format from 'date-fns/format';\nimport { Box } from '@chakra-ui/react/box';\nimport { TimeList } from './components/TimeList/timeList.component';\nimport { Meridiem } from './timePicker.types';\nimport { useSlotRecipe } from '@chakra-ui/react/styled-system';\nimport { timePickerRecipe } from './timePicker.recipe';\nimport { Placement } from 'shared/types/placement';\n\nexport interface TimePickerProps {\n initialTime?: Date;\n inputProps?: Omit<TextInputProps, 'onChange' | 'value' | 'isClearable' | 'onClear'>;\n minuteInterval?: number;\n onTimeChange?: (time: Date) => void;\n placement?: Placement;\n}\n\nexport const TimePicker = ({\n initialTime,\n inputProps,\n minuteInterval = 5,\n onTimeChange,\n placement = 'bottom',\n}: TimePickerProps): React.JSX.Element => {\n const recipe = useSlotRecipe({ recipe: timePickerRecipe });\n const styles = recipe();\n const [isOpen, setIsOpen] = useState(false);\n const [selectedTime, setSelectedTime] = useState(initialTime);\n const [selectedHour, setSelectedHour] = useState<string | undefined>();\n const [selectedMinute, setSelectedMinute] = useState<string | undefined>();\n const [selectedMeridiem, setSelectedMeridiem] = useState<string | undefined>();\n\n const formattedTime = useMemo(() => {\n if (!selectedTime) return '';\n return format(selectedTime, 'h:mm aa');\n }, [selectedTime]);\n\n const formatNumber = (number: number | string): string => {\n const formattedValue = number.toString();\n if (formattedValue.length === 1) {\n return `0${formattedValue}`;\n }\n\n return formattedValue;\n };\n\n const hourOptions = useMemo(() => {\n return [12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11].map((hour) => hour.toString());\n }, []);\n\n const minuteOptions = useMemo(() => {\n const minutes = [];\n for (let i = 0; i < 60; i += minuteInterval) {\n minutes.push(i);\n }\n\n return minutes.map(formatNumber);\n }, [minuteInterval]);\n\n const meridiemOptions = [Meridiem.AM, Meridiem.PM];\n\n const handleTimeChange = useCallback(\n (hour?: string, minute?: string, meridiem?: string) => {\n const _hour = hour || '12';\n const _minute = minute || '00';\n const _meridiem = meridiem || 'AM';\n let meridiemAdjustment = 0;\n\n if (!hour) {\n setSelectedHour('12');\n }\n if (!minute) {\n setSelectedMinute('00');\n }\n if (!meridiem) {\n setSelectedMeridiem('AM');\n }\n\n // set 1-11pm to 13-23. Don't set 12pm to 24\n if (_meridiem === Meridiem.PM && Number(_hour) < 12) {\n meridiemAdjustment = 12;\n }\n\n // set 12am to 00\n if (_meridiem === Meridiem.AM && Number(_hour) === 12) {\n meridiemAdjustment = -12;\n }\n\n const hours = Number(_hour) + meridiemAdjustment;\n const time = new Date().setHours(hours, Number(_minute), 0, 0);\n const date = new Date(time);\n setSelectedTime(date);\n\n if (onTimeChange) {\n onTimeChange(date);\n }\n },\n [onTimeChange],\n );\n\n const handleHourClick = useCallback(\n (value: string) => {\n setSelectedHour(value);\n handleTimeChange(value, selectedMinute, selectedMeridiem);\n },\n [handleTimeChange, selectedMeridiem, selectedMinute],\n );\n\n const handleMinuteClick = useCallback(\n (value: string) => {\n setSelectedMinute(value);\n handleTimeChange(selectedHour, value, selectedMeridiem);\n },\n [handleTimeChange, selectedHour, selectedMeridiem],\n );\n\n const handleMeridiemClick = useCallback(\n (value: string) => {\n setSelectedMeridiem(value);\n handleTimeChange(selectedHour, selectedMinute, value);\n },\n [handleTimeChange, selectedHour, selectedMinute],\n );\n\n useEffect(() => {\n // Set default selections based on value passed in\n if (initialTime) {\n const localTime = new Date(initialTime);\n\n // calculate hours\n const hours = localTime.getHours();\n const adjustedHours = hours % 12 || 12;\n\n setSelectedTime(initialTime);\n setSelectedHour(adjustedHours.toString());\n setSelectedMinute(localTime.getMinutes().toString());\n setSelectedMeridiem(localTime.getHours() > 11 ? Meridiem.PM : Meridiem.AM);\n }\n }, [initialTime]);\n\n return (\n <Popover\n open={isOpen}\n onOpenChange={({ open }) => setIsOpen(open)}\n anchor={\n <Box className=\"TimePicker__Trigger\" data-testid=\"kibble-timepicker-trigger\" css={styles.trigger}>\n <TextInput\n placeholder=\"12:00 AM\"\n rightElement={<Icon size={useIconTextSizeMap(inputProps?.size || 'md')} name=\"clock\" />}\n value={formattedTime}\n readOnly\n cursor=\"pointer\"\n {...inputProps}\n {...(isOpen && { 'data-focus': 'true' })}\n />\n </Box>\n }\n contentProps={{ w: 'max-content' }}\n placement={placement}\n >\n <Box className=\"TimePicker__Container\" data-testid=\"kibble-timepicker-container\" css={styles.container}>\n <TimeList\n options={hourOptions}\n optionType=\"hour\"\n selectedValue={selectedHour}\n onClick={handleHourClick}\n open={isOpen}\n />\n <TimeList\n options={minuteOptions}\n optionType=\"minute\"\n selectedValue={selectedMinute ? formatNumber(selectedMinute) : undefined}\n onClick={handleMinuteClick}\n open={isOpen}\n />\n <TimeList\n options={meridiemOptions}\n optionType=\"meridiem\"\n selectedValue={selectedMeridiem}\n onClick={handleMeridiemClick}\n open={isOpen}\n />\n </Box>\n </Popover>\n );\n};\n"],"names":["timeOptionRecipe","defineRecipe","TimeOption","value","innerRef","onClick","selected","styles","useRecipe","handleClick","useCallback","event","selectedValue","jsx","Box","timePickerRecipe","defineSlotRecipe","TimeList","options","optionType","open","useSlotRecipe","itemRef","useRef","containerRef","useEffect","option","Meridiem","TimePicker","initialTime","inputProps","minuteInterval","onTimeChange","placement","isOpen","setIsOpen","useState","selectedTime","setSelectedTime","selectedHour","setSelectedHour","selectedMinute","setSelectedMinute","selectedMeridiem","setSelectedMeridiem","formattedTime","useMemo","format","formatNumber","number","formattedValue","hourOptions","hour","minuteOptions","minutes","i","meridiemOptions","handleTimeChange","minute","meridiem","_hour","_minute","_meridiem","meridiemAdjustment","hours","time","date","handleHourClick","handleMinuteClick","handleMeridiemClick","localTime","adjustedHours","Popover","TextInput","Icon","useIconTextSizeMap","jsxs"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"timePicker.component-B8Md1wxz.js","sources":["../../src/components/TimePicker/components/TimeOption/timeOption.recipe.ts","../../src/components/TimePicker/components/TimeOption/timeOption.component.tsx","../../src/components/TimePicker/timePicker.recipe.ts","../../src/components/TimePicker/components/TimeList/timeList.component.tsx","../../src/components/TimePicker/timePicker.types.ts","../../src/components/TimePicker/timePicker.component.tsx"],"sourcesContent":["import { defineRecipe } from '@chakra-ui/react/styled-system';\n\nexport const timeOptionRecipe = defineRecipe({\n base: {\n borderRadius: '4px',\n cursor: 'pointer',\n fontSize: 'sm',\n px: 3,\n py: 1,\n textAlign: 'center',\n },\n variants: {\n selected: {\n true: {\n background: 'background.secondary',\n color: 'text.contrast',\n _hover: {\n background: 'background.secondary.hover',\n },\n },\n false: {\n background: 'background',\n color: 'text.subtle',\n _hover: {\n background: 'background.secondaryAlpha.hover',\n },\n },\n },\n },\n defaultVariants: {\n selected: false,\n },\n});\n","import React, { useCallback } from 'react';\nimport { Box } from '@chakra-ui/react/box';\nimport { useRecipe } from '@chakra-ui/react/styled-system';\nimport { timeOptionRecipe } from './timeOption.recipe';\n\ninterface TimeOptionProps {\n innerRef?: React.Ref<HTMLDivElement | null> | null;\n onClick: (selectedValue: string) => void;\n selected: boolean;\n value: string;\n}\n\nexport const TimeOption = ({ value, innerRef, onClick, selected }: TimeOptionProps): React.JSX.Element => {\n const recipe = useRecipe({ recipe: timeOptionRecipe });\n const styles = recipe({ selected });\n\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n const selectedValue = event.currentTarget.textContent || '';\n onClick(selectedValue);\n },\n [onClick],\n );\n\n return (\n <Box\n className=\"TimePicker__Option\"\n data-testid=\"kibble-timepicker-option\"\n ref={innerRef}\n onClick={handleClick}\n css={styles}\n >\n {value}\n </Box>\n );\n};\n","import { defineSlotRecipe } from '@chakra-ui/react/styled-system';\n\nexport const timePickerRecipe = defineSlotRecipe({\n slots: ['trigger', 'container', 'list'],\n base: {\n trigger: {\n width: '100%',\n },\n container: {\n display: 'flex',\n gap: 1.5,\n height: '186px',\n overflow: 'hidden',\n },\n list: {\n display: 'flex',\n flexDirection: 'column',\n gap: 1,\n overflowY: 'auto',\n '&::webkit-scrollbar': {\n display: 'none',\n },\n },\n },\n});\n","import React, { useEffect, useRef } from 'react';\nimport { Box } from '@chakra-ui/react/box';\nimport { TimeOption } from '../TimeOption/timeOption.component';\nimport { useSlotRecipe } from '@chakra-ui/react/styled-system';\nimport { timePickerRecipe } from '../../timePicker.recipe';\n\ninterface ScrollContainerProps {\n options: string[];\n optionType: 'hour' | 'minute' | 'meridiem';\n selectedValue?: string;\n onClick: (value: string) => void;\n open: boolean;\n}\n\nexport const TimeList = ({\n options,\n optionType,\n selectedValue,\n onClick,\n open = false,\n}: ScrollContainerProps): React.JSX.Element => {\n const recipe = useSlotRecipe({ recipe: timePickerRecipe });\n const styles = recipe();\n const itemRef = useRef<HTMLDivElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (open && containerRef.current && itemRef.current) {\n containerRef.current.scrollTop = itemRef.current?.offsetTop - containerRef.current?.offsetTop;\n }\n }, [open]);\n\n return (\n <Box className=\"TimePicker__List\" data-testid={`kibble-timepicker-${optionType}-list`} css={styles.list}>\n {options.map((option) => {\n return (\n <TimeOption\n key={`${optionType}-option-${option}`}\n innerRef={option === selectedValue ? itemRef : null}\n value={option}\n selected={option === selectedValue}\n onClick={onClick}\n data-testid={option}\n />\n );\n })}\n </Box>\n );\n};\n","export enum Meridiem {\n AM = 'AM',\n PM = 'PM',\n}\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { TextInput, TextInputProps } from 'components/TextInput/textInput.component';\nimport { Popover } from 'components/Popover/popover.component';\nimport { Icon } from 'components/Icon/icon.component';\nimport { useIconTextSizeMap } from 'hooks/useIconTextSizeMap';\nimport format from 'date-fns/format';\nimport { Box } from '@chakra-ui/react/box';\nimport { TimeList } from './components/TimeList/timeList.component';\nimport { Meridiem } from './timePicker.types';\nimport { useSlotRecipe } from '@chakra-ui/react/styled-system';\nimport { timePickerRecipe } from './timePicker.recipe';\nimport { Placement } from 'shared/types/placement';\n\nexport interface TimePickerProps {\n initialTime?: Date;\n inputProps?: Omit<TextInputProps, 'onChange' | 'value' | 'isClearable' | 'onClear'>;\n minuteInterval?: number;\n onTimeChange?: (time: Date) => void;\n placement?: Placement;\n}\n\nexport const TimePicker = ({\n initialTime,\n inputProps,\n minuteInterval = 5,\n onTimeChange,\n placement = 'bottom',\n}: TimePickerProps): React.JSX.Element => {\n const recipe = useSlotRecipe({ recipe: timePickerRecipe });\n const styles = recipe();\n const [isOpen, setIsOpen] = useState(false);\n const [selectedTime, setSelectedTime] = useState(initialTime);\n const [selectedHour, setSelectedHour] = useState<string | undefined>();\n const [selectedMinute, setSelectedMinute] = useState<string | undefined>();\n const [selectedMeridiem, setSelectedMeridiem] = useState<string | undefined>();\n\n const formattedTime = useMemo(() => {\n if (!selectedTime) return '';\n return format(selectedTime, 'h:mm aa');\n }, [selectedTime]);\n\n const formatNumber = (number: number | string): string => {\n const formattedValue = number.toString();\n if (formattedValue.length === 1) {\n return `0${formattedValue}`;\n }\n\n return formattedValue;\n };\n\n const hourOptions = useMemo(() => {\n return [12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11].map((hour) => hour.toString());\n }, []);\n\n const minuteOptions = useMemo(() => {\n const minutes = [];\n for (let i = 0; i < 60; i += minuteInterval) {\n minutes.push(i);\n }\n\n return minutes.map(formatNumber);\n }, [minuteInterval]);\n\n const meridiemOptions = [Meridiem.AM, Meridiem.PM];\n\n const handleTimeChange = useCallback(\n (hour?: string, minute?: string, meridiem?: string) => {\n const _hour = hour || '12';\n const _minute = minute || '00';\n const _meridiem = meridiem || 'AM';\n let meridiemAdjustment = 0;\n\n if (!hour) {\n setSelectedHour('12');\n }\n if (!minute) {\n setSelectedMinute('00');\n }\n if (!meridiem) {\n setSelectedMeridiem('AM');\n }\n\n // set 1-11pm to 13-23. Don't set 12pm to 24\n if (_meridiem === Meridiem.PM && Number(_hour) < 12) {\n meridiemAdjustment = 12;\n }\n\n // set 12am to 00\n if (_meridiem === Meridiem.AM && Number(_hour) === 12) {\n meridiemAdjustment = -12;\n }\n\n const hours = Number(_hour) + meridiemAdjustment;\n const time = new Date().setHours(hours, Number(_minute), 0, 0);\n const date = new Date(time);\n setSelectedTime(date);\n\n if (onTimeChange) {\n onTimeChange(date);\n }\n },\n [onTimeChange],\n );\n\n const handleHourClick = useCallback(\n (value: string) => {\n setSelectedHour(value);\n handleTimeChange(value, selectedMinute, selectedMeridiem);\n },\n [handleTimeChange, selectedMeridiem, selectedMinute],\n );\n\n const handleMinuteClick = useCallback(\n (value: string) => {\n setSelectedMinute(value);\n handleTimeChange(selectedHour, value, selectedMeridiem);\n },\n [handleTimeChange, selectedHour, selectedMeridiem],\n );\n\n const handleMeridiemClick = useCallback(\n (value: string) => {\n setSelectedMeridiem(value);\n handleTimeChange(selectedHour, selectedMinute, value);\n },\n [handleTimeChange, selectedHour, selectedMinute],\n );\n\n useEffect(() => {\n // Set default selections based on value passed in\n if (initialTime) {\n const localTime = new Date(initialTime);\n\n // calculate hours\n const hours = localTime.getHours();\n const adjustedHours = hours % 12 || 12;\n\n setSelectedTime(initialTime);\n setSelectedHour(adjustedHours.toString());\n setSelectedMinute(localTime.getMinutes().toString());\n setSelectedMeridiem(localTime.getHours() > 11 ? Meridiem.PM : Meridiem.AM);\n }\n }, [initialTime]);\n\n return (\n <Popover\n open={isOpen}\n onOpenChange={({ open }) => setIsOpen(open)}\n anchor={\n <Box className=\"TimePicker__Trigger\" data-testid=\"kibble-timepicker-trigger\" css={styles.trigger}>\n <TextInput\n placeholder=\"12:00 AM\"\n rightElement={<Icon size={useIconTextSizeMap(inputProps?.size || 'md')} name=\"clock\" />}\n value={formattedTime}\n readOnly\n cursor=\"pointer\"\n {...inputProps}\n {...(isOpen && { 'data-focus': 'true' })}\n />\n </Box>\n }\n contentProps={{ w: 'max-content' }}\n placement={placement}\n >\n <Box className=\"TimePicker__Container\" data-testid=\"kibble-timepicker-container\" css={styles.container}>\n <TimeList\n options={hourOptions}\n optionType=\"hour\"\n selectedValue={selectedHour}\n onClick={handleHourClick}\n open={isOpen}\n />\n <TimeList\n options={minuteOptions}\n optionType=\"minute\"\n selectedValue={selectedMinute ? formatNumber(selectedMinute) : undefined}\n onClick={handleMinuteClick}\n open={isOpen}\n />\n <TimeList\n options={meridiemOptions}\n optionType=\"meridiem\"\n selectedValue={selectedMeridiem}\n onClick={handleMeridiemClick}\n open={isOpen}\n />\n </Box>\n </Popover>\n );\n};\n"],"names":["timeOptionRecipe","defineRecipe","TimeOption","value","innerRef","onClick","selected","styles","useRecipe","handleClick","useCallback","event","selectedValue","jsx","Box","timePickerRecipe","defineSlotRecipe","TimeList","options","optionType","open","useSlotRecipe","itemRef","useRef","containerRef","useEffect","option","Meridiem","TimePicker","initialTime","inputProps","minuteInterval","onTimeChange","placement","isOpen","setIsOpen","useState","selectedTime","setSelectedTime","selectedHour","setSelectedHour","selectedMinute","setSelectedMinute","selectedMeridiem","setSelectedMeridiem","formattedTime","useMemo","format","formatNumber","number","formattedValue","hourOptions","hour","minuteOptions","minutes","i","meridiemOptions","handleTimeChange","minute","meridiem","_hour","_minute","_meridiem","meridiemAdjustment","hours","time","date","handleHourClick","handleMinuteClick","handleMeridiemClick","localTime","adjustedHours","Popover","TextInput","Icon","useIconTextSizeMap","jsxs"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { j as e } from "./jsx-runtime-C5mzlN2N.js";
|
|
2
|
-
import { T as r } from "./timePicker.component-
|
|
2
|
+
import { T as r } from "./timePicker.component-B8Md1wxz.js";
|
|
3
3
|
import { F as a } from "./flex-smlF8uQG.js";
|
|
4
4
|
import { B as o } from "./box-Ck9I7FYv.js";
|
|
5
5
|
const j = ({
|
|
@@ -15,4 +15,4 @@ const j = ({
|
|
|
15
15
|
export {
|
|
16
16
|
j as T
|
|
17
17
|
};
|
|
18
|
-
//# sourceMappingURL=timeRange.component-
|
|
18
|
+
//# sourceMappingURL=timeRange.component-DtNIkrsw.js.map
|
package/dist/chunks/{timeRange.component-BSAMk2js.js.map → timeRange.component-DtNIkrsw.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timeRange.component-
|
|
1
|
+
{"version":3,"file":"timeRange.component-DtNIkrsw.js","sources":["../../src/components/TimeRange/timeRange.component.tsx"],"sourcesContent":["import React from 'react';\nimport { Box } from '@chakra-ui/react/box';\nimport { Flex, FlexProps } from '@chakra-ui/react/flex';\nimport { TimePicker, TimePickerProps } from 'components/TimePicker/timePicker.component';\n\nexport interface TimeRangeProps extends FlexProps {\n separator?: React.ReactNode;\n endTimePickerProps: TimePickerProps;\n startTimePickerProps: TimePickerProps;\n}\n\nexport const TimeRange = ({\n endTimePickerProps,\n separator,\n startTimePickerProps,\n ...rest\n}: TimeRangeProps): React.JSX.Element => {\n return (\n <Flex className=\"TimeRange\" data-testid=\"kibble-time-range\" {...rest}>\n <TimePicker {...startTimePickerProps} />\n <Box alignSelf=\"center\" mx={1}>\n {separator || '-'}\n </Box>\n <TimePicker {...endTimePickerProps} />\n </Flex>\n );\n};\n"],"names":["TimeRange","endTimePickerProps","separator","startTimePickerProps","rest","Flex","jsx","TimePicker","Box"],"mappings":";;;;AAWO,MAAMA,IAAY,CAAC;AAAA,EACxB,oBAAAC;AAAA,EACA,WAAAC;AAAA,EACA,sBAAAC;AAAA,EACA,GAAGC;AACL,6BAEKC,GAAK,EAAA,WAAU,aAAY,eAAY,qBAAqB,GAAGD,GAC9D,UAAA;AAAA,EAACE,gBAAAA,EAAAA,IAAAC,GAAA,EAAY,GAAGJ,GAAsB;AAAA,wBACrCK,GAAI,EAAA,WAAU,UAAS,IAAI,GACzB,eAAa,KAChB;AAAA,EACAF,gBAAAA,MAACC,GAAY,EAAA,GAAGN,EAAoB,CAAA;AAAA,GACtC;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const e=require("./jsx-runtime-BjDatQAs.js"),i=require("./timePicker.component-
|
|
2
|
-
//# sourceMappingURL=timeRange.component-
|
|
1
|
+
"use strict";const e=require("./jsx-runtime-BjDatQAs.js"),i=require("./timePicker.component-3lHlD-Sl.js"),x=require("./flex-D14H6HbP.js"),m=require("./box-Baq7UBls.js"),c=({endTimePickerProps:s,separator:t,startTimePickerProps:r,...n})=>e.jsxRuntimeExports.jsxs(x.Flex,{className:"TimeRange","data-testid":"kibble-time-range",...n,children:[e.jsxRuntimeExports.jsx(i.TimePicker,{...r}),e.jsxRuntimeExports.jsx(m.Box,{alignSelf:"center",mx:1,children:t||"-"}),e.jsxRuntimeExports.jsx(i.TimePicker,{...s})]});exports.TimeRange=c;
|
|
2
|
+
//# sourceMappingURL=timeRange.component-l8jhl4Vv.js.map
|
package/dist/chunks/{timeRange.component-CL5z9FRa.js.map → timeRange.component-l8jhl4Vv.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timeRange.component-
|
|
1
|
+
{"version":3,"file":"timeRange.component-l8jhl4Vv.js","sources":["../../src/components/TimeRange/timeRange.component.tsx"],"sourcesContent":["import React from 'react';\nimport { Box } from '@chakra-ui/react/box';\nimport { Flex, FlexProps } from '@chakra-ui/react/flex';\nimport { TimePicker, TimePickerProps } from 'components/TimePicker/timePicker.component';\n\nexport interface TimeRangeProps extends FlexProps {\n separator?: React.ReactNode;\n endTimePickerProps: TimePickerProps;\n startTimePickerProps: TimePickerProps;\n}\n\nexport const TimeRange = ({\n endTimePickerProps,\n separator,\n startTimePickerProps,\n ...rest\n}: TimeRangeProps): React.JSX.Element => {\n return (\n <Flex className=\"TimeRange\" data-testid=\"kibble-time-range\" {...rest}>\n <TimePicker {...startTimePickerProps} />\n <Box alignSelf=\"center\" mx={1}>\n {separator || '-'}\n </Box>\n <TimePicker {...endTimePickerProps} />\n </Flex>\n );\n};\n"],"names":["TimeRange","endTimePickerProps","separator","startTimePickerProps","rest","Flex","jsx","TimePicker","Box"],"mappings":"yKAWaA,EAAY,CAAC,CACxB,mBAAAC,EACA,UAAAC,EACA,qBAAAC,EACA,GAAGC,CACL,6BAEKC,OAAK,CAAA,UAAU,YAAY,cAAY,oBAAqB,GAAGD,EAC9D,SAAA,CAACE,EAAAA,kBAAAA,IAAAC,EAAA,WAAA,CAAY,GAAGJ,EAAsB,0BACrCK,EAAAA,IAAI,CAAA,UAAU,SAAS,GAAI,EACzB,YAAa,IAChB,EACAF,wBAACC,EAAAA,WAAY,CAAA,GAAGN,CAAoB,CAAA,CAAA,EACtC"}
|
|
@@ -4,7 +4,7 @@ import { p as F, f as U } from "./typography.records-Cq-V6T7j.js";
|
|
|
4
4
|
import { I as V } from "./icon.component-S_qFWBRf.js";
|
|
5
5
|
import { F as q } from "./flex-smlF8uQG.js";
|
|
6
6
|
import * as X from "react";
|
|
7
|
-
import { forwardRef as T, useLayoutEffect as Y, useEffect as ee, useState as L, useId as te, useRef as re, useMemo as
|
|
7
|
+
import { forwardRef as T, useLayoutEffect as Y, useEffect as ee, useState as L, useId as te, useRef as re, useMemo as u, Children as se } from "react";
|
|
8
8
|
import { c as M, a as B } from "./factory-Ctbv0Ozn.js";
|
|
9
9
|
import { c as oe } from "./create-slot-recipe-context-BJmsuxih.js";
|
|
10
10
|
import { c as ae } from "./create-recipe-context-D7FewUR4.js";
|
|
@@ -26,27 +26,27 @@ const z = T((a, t) => {
|
|
|
26
26
|
return /* @__PURE__ */ o.jsx(j.label, { ...e, ref: t });
|
|
27
27
|
});
|
|
28
28
|
z.displayName = "FieldLabel";
|
|
29
|
-
const me = typeof window < "u" ? Y : ee, [Me,
|
|
29
|
+
const me = typeof window < "u" ? Y : ee, [Me, pe] = ne({
|
|
30
30
|
name: "FieldsetContext",
|
|
31
31
|
hookName: "useFieldsetContext",
|
|
32
32
|
providerName: "<FieldsetProvider />",
|
|
33
33
|
strict: !1
|
|
34
|
-
}),
|
|
35
|
-
const t =
|
|
34
|
+
}), ue = (a = {}) => {
|
|
35
|
+
const t = pe(), { ids: r, disabled: e = !!t?.disabled, invalid: s = !1, readOnly: l = !1, required: n = !1 } = a, [c, f] = L(!1), [N, C] = L(!1), i = a.id ?? te(), P = re(null), m = r?.control ?? `field::${i}`, p = r?.errorText ?? `field::${i}::error-text`, d = r?.helperText ?? `field::${i}::helper-text`, y = r?.label ?? `field::${i}::label`;
|
|
36
36
|
me(() => {
|
|
37
37
|
const b = P.current;
|
|
38
38
|
if (!b) return;
|
|
39
39
|
const A = ce(b), H = A.document, k = () => {
|
|
40
|
-
f(!!H.getElementById(
|
|
40
|
+
f(!!H.getElementById(p)), C(!!H.getElementById(d));
|
|
41
41
|
};
|
|
42
42
|
k();
|
|
43
43
|
const $ = new A.MutationObserver(k);
|
|
44
44
|
return $.observe(b, { childList: !0, subtree: !0 }), () => $.disconnect();
|
|
45
|
-
}, [
|
|
46
|
-
const h =
|
|
45
|
+
}, [p, d]);
|
|
46
|
+
const h = u(() => {
|
|
47
47
|
const b = [];
|
|
48
|
-
return c && s && b.push(
|
|
49
|
-
}, [s,
|
|
48
|
+
return c && s && b.push(p), N && b.push(d), b.join(" ") || void 0;
|
|
49
|
+
}, [s, p, d, c, N]), R = u(
|
|
50
50
|
() => () => ({
|
|
51
51
|
...F.root.attrs,
|
|
52
52
|
id: m,
|
|
@@ -57,7 +57,7 @@ const me = typeof window < "u" ? Y : ee, [Me, ue] = ne({
|
|
|
57
57
|
"data-readonly": x(l)
|
|
58
58
|
}),
|
|
59
59
|
[e, s, l, m]
|
|
60
|
-
), E =
|
|
60
|
+
), E = u(
|
|
61
61
|
() => () => ({
|
|
62
62
|
...F.label.attrs,
|
|
63
63
|
id: y,
|
|
@@ -67,7 +67,7 @@ const me = typeof window < "u" ? Y : ee, [Me, ue] = ne({
|
|
|
67
67
|
htmlFor: i
|
|
68
68
|
}),
|
|
69
69
|
[e, s, l, i, y]
|
|
70
|
-
), g =
|
|
70
|
+
), g = u(
|
|
71
71
|
() => () => ({
|
|
72
72
|
"aria-describedby": h,
|
|
73
73
|
"aria-invalid": fe(s),
|
|
@@ -80,39 +80,39 @@ const me = typeof window < "u" ? Y : ee, [Me, ue] = ne({
|
|
|
80
80
|
readOnly: l
|
|
81
81
|
}),
|
|
82
82
|
[h, s, n, l, i, e]
|
|
83
|
-
), v =
|
|
83
|
+
), v = u(
|
|
84
84
|
() => () => ({
|
|
85
85
|
...g(),
|
|
86
86
|
...F.input.attrs
|
|
87
87
|
}),
|
|
88
88
|
[g]
|
|
89
|
-
), S =
|
|
89
|
+
), S = u(
|
|
90
90
|
() => () => ({
|
|
91
91
|
...g(),
|
|
92
92
|
...F.textarea.attrs
|
|
93
93
|
}),
|
|
94
94
|
[g]
|
|
95
|
-
), Z =
|
|
95
|
+
), Z = u(
|
|
96
96
|
() => () => ({
|
|
97
97
|
...g(),
|
|
98
98
|
...F.select.attrs
|
|
99
99
|
}),
|
|
100
100
|
[g]
|
|
101
|
-
), G =
|
|
101
|
+
), G = u(
|
|
102
102
|
() => () => ({
|
|
103
103
|
id: d,
|
|
104
104
|
...F.helperText.attrs,
|
|
105
105
|
"data-disabled": x(e)
|
|
106
106
|
}),
|
|
107
107
|
[e, d]
|
|
108
|
-
), J =
|
|
108
|
+
), J = u(
|
|
109
109
|
() => () => ({
|
|
110
|
-
id:
|
|
110
|
+
id: p,
|
|
111
111
|
...F.errorText.attrs,
|
|
112
112
|
"aria-live": "polite"
|
|
113
113
|
}),
|
|
114
|
-
[
|
|
115
|
-
), K =
|
|
114
|
+
[p]
|
|
115
|
+
), K = u(
|
|
116
116
|
() => () => ({
|
|
117
117
|
"aria-hidden": !0,
|
|
118
118
|
...F.requiredIndicator.attrs
|
|
@@ -125,7 +125,7 @@ const me = typeof window < "u" ? Y : ee, [Me, ue] = ne({
|
|
|
125
125
|
root: m,
|
|
126
126
|
control: i,
|
|
127
127
|
label: y,
|
|
128
|
-
errorText:
|
|
128
|
+
errorText: p,
|
|
129
129
|
helperText: d
|
|
130
130
|
},
|
|
131
131
|
refs: {
|
|
@@ -152,7 +152,7 @@ const me = typeof window < "u" ? Y : ee, [Me, ue] = ne({
|
|
|
152
152
|
"invalid",
|
|
153
153
|
"readOnly",
|
|
154
154
|
"required"
|
|
155
|
-
]), s =
|
|
155
|
+
]), s = ue(r), l = w(s.getRootProps(), e);
|
|
156
156
|
return /* @__PURE__ */ o.jsx(le, { value: s, children: /* @__PURE__ */ o.jsx(j.div, { ...l, ref: de(t, s.refs.rootRef) }) });
|
|
157
157
|
});
|
|
158
158
|
D.displayName = "FieldRoot";
|
|
@@ -247,7 +247,7 @@ const ve = T(function(t, r) {
|
|
|
247
247
|
labelPosition: i = "start",
|
|
248
248
|
labelStyle: P,
|
|
249
249
|
onContrast: m = !1,
|
|
250
|
-
readOnly:
|
|
250
|
+
readOnly: p = !1,
|
|
251
251
|
required: d = !1,
|
|
252
252
|
showOptionalElement: y = !1,
|
|
253
253
|
size: h = "md",
|
|
@@ -273,10 +273,18 @@ const ve = T(function(t, r) {
|
|
|
273
273
|
className: "FormControl__RequiredIndicator",
|
|
274
274
|
color: m ? "text.danger.contrast" : "text.danger",
|
|
275
275
|
...!d && {
|
|
276
|
-
fallback: y ? /* @__PURE__ */ o.jsxs(
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
276
|
+
fallback: y ? /* @__PURE__ */ o.jsxs(
|
|
277
|
+
Q,
|
|
278
|
+
{
|
|
279
|
+
variant: m ? "subtleOnContrast" : "subtle",
|
|
280
|
+
fontSize: Ie[h],
|
|
281
|
+
display: "contents",
|
|
282
|
+
children: [
|
|
283
|
+
" ",
|
|
284
|
+
"(Optional)"
|
|
285
|
+
]
|
|
286
|
+
}
|
|
287
|
+
) : /* @__PURE__ */ o.jsx(o.Fragment, {})
|
|
280
288
|
}
|
|
281
289
|
}
|
|
282
290
|
)
|
|
@@ -289,7 +297,7 @@ const ve = T(function(t, r) {
|
|
|
289
297
|
className: "FormControl group",
|
|
290
298
|
disabled: r,
|
|
291
299
|
invalid: f,
|
|
292
|
-
readOnly:
|
|
300
|
+
readOnly: p,
|
|
293
301
|
required: d,
|
|
294
302
|
width: l ? "100%" : "auto",
|
|
295
303
|
...s,
|
|
@@ -310,7 +318,7 @@ const ve = T(function(t, r) {
|
|
|
310
318
|
disabled: r,
|
|
311
319
|
invalid: f,
|
|
312
320
|
onContrast: m,
|
|
313
|
-
readOnly:
|
|
321
|
+
readOnly: p,
|
|
314
322
|
required: d,
|
|
315
323
|
size: h,
|
|
316
324
|
...g
|
|
@@ -349,4 +357,4 @@ const ve = T(function(t, r) {
|
|
|
349
357
|
export {
|
|
350
358
|
Be as w
|
|
351
359
|
};
|
|
352
|
-
//# sourceMappingURL=withFormControl-
|
|
360
|
+
//# sourceMappingURL=withFormControl-CCJImQAG.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withFormControl-D0tbS4T0.js","sources":["../../node_modules/@ark-ui/react/dist/components/field/field-error-text.js","../../node_modules/@ark-ui/react/dist/components/field/field-helper-text.js","../../node_modules/@ark-ui/react/dist/components/field/field-label.js","../../node_modules/@ark-ui/react/dist/utils/use-safe-layout-effect.js","../../node_modules/@ark-ui/react/dist/components/fieldset/use-fieldset-context.js","../../node_modules/@ark-ui/react/dist/components/field/use-field.js","../../node_modules/@ark-ui/react/dist/components/field/field-root.js","../../node_modules/@chakra-ui/react/dist/esm/components/icon/icon.js","../../node_modules/@chakra-ui/react/dist/esm/components/icon/create-icon.js","../../node_modules/@chakra-ui/react/dist/esm/components/field/field.js","../../src/hocs/withFormControl/withFormControl.records.ts","../../src/hocs/withFormControl/withFormControl.tsx"],"sourcesContent":["'use client';\nimport { jsx } from 'react/jsx-runtime';\nimport { mergeProps } from '@zag-js/react';\nimport { forwardRef } from 'react';\nimport { ark } from '../factory.js';\nimport { useFieldContext } from './use-field-context.js';\n\nconst FieldErrorText = forwardRef((props, ref) => {\n const field = useFieldContext();\n const mergedProps = mergeProps(field.getErrorTextProps(), props);\n if (field?.invalid) {\n return /* @__PURE__ */ jsx(ark.span, { ...mergedProps, ref });\n }\n return null;\n});\nFieldErrorText.displayName = \"FieldErrorText\";\n\nexport { FieldErrorText };\n","'use client';\nimport { jsx } from 'react/jsx-runtime';\nimport { mergeProps } from '@zag-js/react';\nimport { forwardRef } from 'react';\nimport { ark } from '../factory.js';\nimport { useFieldContext } from './use-field-context.js';\n\nconst FieldHelperText = forwardRef((props, ref) => {\n const field = useFieldContext();\n const mergedProps = mergeProps(field?.getHelperTextProps(), props);\n return /* @__PURE__ */ jsx(ark.span, { ...mergedProps, ref });\n});\nFieldHelperText.displayName = \"FieldHelperText\";\n\nexport { FieldHelperText };\n","'use client';\nimport { jsx } from 'react/jsx-runtime';\nimport { mergeProps } from '@zag-js/react';\nimport { forwardRef } from 'react';\nimport { ark } from '../factory.js';\nimport { useFieldContext } from './use-field-context.js';\n\nconst FieldLabel = forwardRef((props, ref) => {\n const field = useFieldContext();\n const mergedProps = mergeProps(field?.getLabelProps(), props);\n return /* @__PURE__ */ jsx(ark.label, { ...mergedProps, ref });\n});\nFieldLabel.displayName = \"FieldLabel\";\n\nexport { FieldLabel };\n","'use client';\nimport { useLayoutEffect, useEffect } from 'react';\n\nconst useSafeLayoutEffect = typeof window !== \"undefined\" ? useLayoutEffect : useEffect;\n\nexport { useSafeLayoutEffect };\n","'use client';\nimport { createContext } from '../../utils/create-context.js';\n\nconst [FieldsetProvider, useFieldsetContext] = createContext({\n name: \"FieldsetContext\",\n hookName: \"useFieldsetContext\",\n providerName: \"<FieldsetProvider />\",\n strict: false\n});\n\nexport { FieldsetProvider, useFieldsetContext };\n","'use client';\nimport { getWindow, dataAttr, ariaAttr } from '@zag-js/dom-query';\nimport { useState, useId, useRef, useMemo } from 'react';\nimport { useSafeLayoutEffect } from '../../utils/use-safe-layout-effect.js';\nimport { useFieldsetContext } from '../fieldset/use-fieldset-context.js';\nimport { parts } from './field.anatomy.js';\n\nconst useField = (props = {}) => {\n const fieldset = useFieldsetContext();\n const { ids, disabled = Boolean(fieldset?.disabled), invalid = false, readOnly = false, required = false } = props;\n const [hasErrorText, setHasErrorText] = useState(false);\n const [hasHelperText, setHasHelperText] = useState(false);\n const id = props.id ?? useId();\n const rootRef = useRef(null);\n const rootId = ids?.control ?? `field::${id}`;\n const errorTextId = ids?.errorText ?? `field::${id}::error-text`;\n const helperTextId = ids?.helperText ?? `field::${id}::helper-text`;\n const labelId = ids?.label ?? `field::${id}::label`;\n useSafeLayoutEffect(() => {\n const rootNode = rootRef.current;\n if (!rootNode) return;\n const win = getWindow(rootNode);\n const doc = win.document;\n const checkTextElements = () => {\n setHasErrorText(!!doc.getElementById(errorTextId));\n setHasHelperText(!!doc.getElementById(helperTextId));\n };\n checkTextElements();\n const observer = new win.MutationObserver(checkTextElements);\n observer.observe(rootNode, { childList: true, subtree: true });\n return () => observer.disconnect();\n }, [errorTextId, helperTextId]);\n const labelIds = useMemo(() => {\n const ids2 = [];\n if (hasErrorText && invalid) ids2.push(errorTextId);\n if (hasHelperText) ids2.push(helperTextId);\n return ids2.join(\" \") || void 0;\n }, [invalid, errorTextId, helperTextId, hasErrorText, hasHelperText]);\n const getRootProps = useMemo(\n () => () => ({\n ...parts.root.attrs,\n id: rootId,\n ref: rootRef,\n role: \"group\",\n \"data-disabled\": dataAttr(disabled),\n \"data-invalid\": dataAttr(invalid),\n \"data-readonly\": dataAttr(readOnly)\n }),\n [disabled, invalid, readOnly, rootId]\n );\n const getLabelProps = useMemo(\n () => () => ({\n ...parts.label.attrs,\n id: labelId,\n \"data-disabled\": dataAttr(disabled),\n \"data-invalid\": dataAttr(invalid),\n \"data-readonly\": dataAttr(readOnly),\n htmlFor: id\n }),\n [disabled, invalid, readOnly, id, labelId]\n );\n const getControlProps = useMemo(\n () => () => ({\n \"aria-describedby\": labelIds,\n \"aria-invalid\": ariaAttr(invalid),\n \"data-invalid\": dataAttr(invalid),\n \"data-required\": dataAttr(required),\n \"data-readonly\": dataAttr(readOnly),\n id,\n required,\n disabled,\n readOnly\n }),\n [labelIds, invalid, required, readOnly, id, disabled]\n );\n const getInputProps = useMemo(\n () => () => ({\n ...getControlProps(),\n ...parts.input.attrs\n }),\n [getControlProps]\n );\n const getTextareaProps = useMemo(\n () => () => ({\n ...getControlProps(),\n ...parts.textarea.attrs\n }),\n [getControlProps]\n );\n const getSelectProps = useMemo(\n () => () => ({\n ...getControlProps(),\n ...parts.select.attrs\n }),\n [getControlProps]\n );\n const getHelperTextProps = useMemo(\n () => () => ({\n id: helperTextId,\n ...parts.helperText.attrs,\n \"data-disabled\": dataAttr(disabled)\n }),\n [disabled, helperTextId]\n );\n const getErrorTextProps = useMemo(\n () => () => ({\n id: errorTextId,\n ...parts.errorText.attrs,\n \"aria-live\": \"polite\"\n }),\n [errorTextId]\n );\n const getRequiredIndicatorProps = useMemo(\n () => () => ({\n \"aria-hidden\": true,\n ...parts.requiredIndicator.attrs\n }),\n []\n );\n return {\n ariaDescribedby: labelIds,\n ids: {\n root: rootId,\n control: id,\n label: labelId,\n errorText: errorTextId,\n helperText: helperTextId\n },\n refs: {\n rootRef\n },\n disabled,\n invalid,\n readOnly,\n required,\n getLabelProps,\n getRootProps,\n getInputProps,\n getTextareaProps,\n getSelectProps,\n getHelperTextProps,\n getErrorTextProps,\n getRequiredIndicatorProps\n };\n};\n\nexport { useField };\n","'use client';\nimport { jsx } from 'react/jsx-runtime';\nimport { mergeProps } from '@zag-js/react';\nimport { forwardRef } from 'react';\nimport { composeRefs } from '../../utils/compose-refs.js';\nimport { createSplitProps } from '../../utils/create-split-props.js';\nimport { ark } from '../factory.js';\nimport { useField } from './use-field.js';\nimport { FieldProvider } from './use-field-context.js';\n\nconst FieldRoot = forwardRef((props, ref) => {\n const [useFieldProps, localProps] = createSplitProps()(props, [\n \"id\",\n \"ids\",\n \"disabled\",\n \"invalid\",\n \"readOnly\",\n \"required\"\n ]);\n const field = useField(useFieldProps);\n const mergedProps = mergeProps(field.getRootProps(), localProps);\n return /* @__PURE__ */ jsx(FieldProvider, { value: field, children: /* @__PURE__ */ jsx(ark.div, { ...mergedProps, ref: composeRefs(ref, field.refs.rootRef) }) });\n});\nFieldRoot.displayName = \"FieldRoot\";\n\nexport { FieldRoot };\n","\"use strict\";\n\"use client\";\nimport { jsx } from 'react/jsx-runtime';\nimport * as React from 'react';\nimport { cx } from '../../utils/cx.js';\nimport { createRecipeContext } from '../../styled-system/create-recipe-context.js';\nimport { chakra } from '../../styled-system/factory.js';\n\nconst { useRecipeResult, PropsProvider } = createRecipeContext({ key: \"icon\" });\nconst Icon = React.forwardRef(\n function Icon2(props, ref) {\n const {\n styles,\n className,\n props: otherProps\n } = useRecipeResult({ asChild: !props.as, ...props });\n return /* @__PURE__ */ jsx(\n chakra.svg,\n {\n ref,\n focusable: false,\n \"aria-hidden\": \"true\",\n ...otherProps,\n css: [styles, props.css],\n className: cx(className, props.className)\n }\n );\n }\n);\nconst IconPropsProvider = PropsProvider;\n\nexport { Icon, IconPropsProvider };\n","\"use strict\";\n\"use client\";\nimport { jsx } from 'react/jsx-runtime';\nimport { Children, forwardRef } from 'react';\nimport { Icon } from './icon.js';\n\nfunction createIcon(options) {\n const {\n viewBox = \"0 0 24 24\",\n d: pathDefinition,\n displayName,\n defaultProps = {}\n } = options;\n const path = Children.toArray(options.path);\n const Comp = forwardRef((props, ref) => /* @__PURE__ */ jsx(\n Icon,\n {\n ref,\n asChild: false,\n viewBox,\n ...defaultProps,\n ...props,\n children: path.length ? path : /* @__PURE__ */ jsx(\"path\", { fill: \"currentColor\", d: pathDefinition })\n }\n ));\n Comp.displayName = displayName;\n return Comp;\n}\n\nexport { createIcon };\n","\"use strict\";\n\"use client\";\nimport { jsx } from 'react/jsx-runtime';\nimport { Field, useFieldContext } from '@ark-ui/react/field';\nimport { forwardRef } from 'react';\nimport { cx } from '../../utils/cx.js';\nimport { createSlotRecipeContext } from '../../styled-system/create-slot-recipe-context.js';\nimport { chakra } from '../../styled-system/factory.js';\nimport { createIcon } from '../icon/create-icon.js';\n\nconst {\n withProvider,\n withContext,\n useStyles: useFieldStyles,\n useClassNames,\n PropsProvider\n} = createSlotRecipeContext({ key: \"field\" });\nconst FieldRoot = withProvider(\n Field.Root,\n \"root\",\n { forwardAsChild: true }\n);\nconst FieldPropsProvider = PropsProvider;\nconst FieldLabel = withContext(\n Field.Label,\n \"label\",\n { forwardAsChild: true }\n);\nconst FieldHelperText = withContext(Field.HelperText, \"helperText\", { forwardAsChild: true });\nconst FieldErrorText = withContext(\n Field.ErrorText,\n \"errorText\",\n { forwardAsChild: true }\n);\nconst FieldErrorIcon = createIcon({\n d: \"M11.983,0a12.206,12.206,0,0,0-8.51,3.653A11.8,11.8,0,0,0,0,12.207,11.779,11.779,0,0,0,11.8,24h.214A12.111,12.111,0,0,0,24,11.791h0A11.766,11.766,0,0,0,11.983,0ZM10.5,16.542a1.476,1.476,0,0,1,1.449-1.53h.027a1.527,1.527,0,0,1,1.523,1.47,1.475,1.475,0,0,1-1.449,1.53h-.027A1.529,1.529,0,0,1,10.5,16.542ZM11,12.5v-6a1,1,0,0,1,2,0v6a1,1,0,1,1-2,0Z\"\n});\nconst FieldRequiredIndicator = forwardRef(function RequiredIndicator(props, ref) {\n const { fallback, children = \"*\", ...restProps } = props;\n const field = useFieldContext();\n const classNames = useClassNames();\n const styles = useFieldStyles();\n if (!field?.required) {\n return fallback;\n }\n return /* @__PURE__ */ jsx(\n chakra.span,\n {\n ref,\n \"aria-hidden\": \"true\",\n ...restProps,\n className: cx(classNames.requiredIndicator, props.className),\n css: [styles.requiredIndicator, props.css],\n children\n }\n );\n});\n\nexport { FieldErrorIcon, FieldErrorText, FieldHelperText, FieldLabel, FieldPropsProvider, FieldRequiredIndicator, FieldRoot, useFieldStyles };\n","import { FormControlSize } from './withFormControl.types';\n\nexport const optionalTextSizeMap: Record<FormControlSize, number> = {\n sm: 10,\n md: 12,\n lg: 14,\n};\n","import React from 'react';\nimport { Field } from '@chakra-ui/react/field';\nimport { FormControlLabelPosition, FormControlSize } from './withFormControl.types';\nimport { SystemStyleObject } from '@chakra-ui/react/styled-system';\nimport { TypographyVariant } from 'shared/types/typography';\nimport { Text } from 'components/Text/text.component';\nimport { optionalTextSizeMap } from './withFormControl.records';\nimport { fontSizes } from 'theme/tokens/typography/typography.records';\nimport { Flex } from '@chakra-ui/react/flex';\nimport { Icon } from 'components/Icon/icon.component';\n\nexport interface WithFormControlProps {\n disabled?: boolean;\n errorText?: string;\n formControlStyle?: SystemStyleObject;\n fullWidth?: boolean;\n helperText?: string;\n inlineField?: boolean;\n invalid?: boolean;\n invalidIconColor?: TypographyVariant;\n label?: string | React.ReactNode;\n labelPosition?: FormControlLabelPosition;\n labelStyle?: SystemStyleObject;\n onContrast?: boolean;\n readOnly?: boolean;\n required?: boolean;\n showOptionalElement?: boolean;\n size?: FormControlSize;\n useInvalidIcon?: boolean;\n useInvalidText?: boolean;\n}\n\nexport const withFormControl = <P extends WithFormControlProps>(Component: React.ComponentType<P>): React.FC<P> => {\n const WithFormControl = ({\n disabled = false,\n errorText = 'Field is invalid',\n formControlStyle,\n fullWidth = true,\n helperText,\n inlineField = false,\n invalid = false,\n invalidIconColor = 'danger',\n label,\n labelPosition = 'start',\n labelStyle,\n onContrast = false,\n readOnly = false,\n required = false,\n showOptionalElement = false,\n size = 'md',\n useInvalidIcon = false,\n useInvalidText = true,\n ...props\n }: WithFormControlProps): React.JSX.Element => {\n // TODO: Fix (Optional) for multiple lines\n const labelComponent = (\n <Field.Label\n className=\"FormControl__Label\"\n color={onContrast ? 'text.contrast' : 'text'}\n fontSize={fontSizes[size]}\n {...labelStyle}\n onClick={(e) => {\n e.stopPropagation();\n }}\n >\n {label}\n <Field.RequiredIndicator\n className=\"FormControl__RequiredIndicator\"\n color={onContrast ? 'text.danger.contrast' : 'text.danger'}\n {...(!required && {\n fallback: showOptionalElement ? (\n <Text variant={onContrast ? 'subtleOnContrast' : 'subtle'} fontSize={optionalTextSizeMap[size]}>\n {' '}\n (Optional)\n </Text>\n ) : (\n <></>\n ),\n })}\n />\n </Field.Label>\n );\n\n return (\n <Field.Root\n className=\"FormControl group\"\n disabled={disabled}\n invalid={invalid}\n readOnly={readOnly}\n required={required}\n width={fullWidth ? '100%' : 'auto'}\n {...formControlStyle}\n >\n <Flex\n className=\"FormControl__Container\"\n flexDirection={inlineField ? 'row' : 'column'}\n w={inlineField ? 'max-content' : '100%'}\n gap={2}\n >\n {label && labelPosition === 'start' && labelComponent}\n <Flex className=\"FormControl__Content\" alignItems=\"center\" gap={2} w={inlineField ? 'max-content' : '100%'}>\n <Component\n disabled={disabled}\n invalid={invalid}\n onContrast={onContrast}\n readOnly={readOnly}\n required={required}\n size={size}\n {...(props as P)}\n />\n {useInvalidIcon && invalid && (\n <Icon className=\"FormControl__InvalidIcon\" name=\"warningSign\" variant={invalidIconColor} size={size} />\n )}\n </Flex>\n {label && labelPosition === 'end' && labelComponent}\n </Flex>\n {useInvalidText && invalid && (\n <Field.ErrorText\n className=\"FormControl__ErrorText\"\n fontSize=\"xs\"\n color={onContrast ? 'text.danger.contrast' : 'text.danger'}\n >\n {errorText}\n </Field.ErrorText>\n )}\n {helperText && (\n <Field.HelperText\n className=\"FormControl__HelperText\"\n fontSize=\"xs\"\n color={onContrast ? 'text.subtle.contrast' : 'text.subtle'}\n >\n {helperText}\n </Field.HelperText>\n )}\n </Field.Root>\n );\n };\n\n WithFormControl.displayName = `withFormControl(${Component.displayName || Component.name}`;\n return WithFormControl;\n};\n"],"names":["FieldErrorText","forwardRef","props","ref","field","useFieldContext","mergedProps","mergeProps","jsx","ark","FieldHelperText","FieldLabel","useSafeLayoutEffect","useLayoutEffect","useEffect","FieldsetProvider","useFieldsetContext","createContext","useField","fieldset","ids","disabled","invalid","readOnly","required","hasErrorText","setHasErrorText","useState","hasHelperText","setHasHelperText","id","useId","rootRef","useRef","rootId","errorTextId","helperTextId","labelId","rootNode","win","getWindow","doc","checkTextElements","observer","labelIds","useMemo","ids2","getRootProps","parts","dataAttr","getLabelProps","getControlProps","ariaAttr","getInputProps","getTextareaProps","getSelectProps","getHelperTextProps","getErrorTextProps","getRequiredIndicatorProps","FieldRoot","useFieldProps","localProps","createSplitProps","FieldProvider","composeRefs","useRecipeResult","createRecipeContext","Icon","React","styles","className","otherProps","chakra","cx","createIcon","options","viewBox","pathDefinition","displayName","defaultProps","path","Children","Comp","withProvider","withContext","useFieldStyles","useClassNames","createSlotRecipeContext","Field.Root","Field.Label","Field.HelperText","Field.ErrorText","FieldRequiredIndicator","fallback","children","restProps","classNames","optionalTextSizeMap","withFormControl","Component","WithFormControl","errorText","formControlStyle","fullWidth","helperText","inlineField","invalidIconColor","label","labelPosition","labelStyle","onContrast","showOptionalElement","size","useInvalidIcon","useInvalidText","labelComponent","jsxs","fontSizes","e","Field.RequiredIndicator","Text","Fragment","Flex"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9]}
|
|
1
|
+
{"version":3,"file":"withFormControl-CCJImQAG.js","sources":["../../node_modules/@ark-ui/react/dist/components/field/field-error-text.js","../../node_modules/@ark-ui/react/dist/components/field/field-helper-text.js","../../node_modules/@ark-ui/react/dist/components/field/field-label.js","../../node_modules/@ark-ui/react/dist/utils/use-safe-layout-effect.js","../../node_modules/@ark-ui/react/dist/components/fieldset/use-fieldset-context.js","../../node_modules/@ark-ui/react/dist/components/field/use-field.js","../../node_modules/@ark-ui/react/dist/components/field/field-root.js","../../node_modules/@chakra-ui/react/dist/esm/components/icon/icon.js","../../node_modules/@chakra-ui/react/dist/esm/components/icon/create-icon.js","../../node_modules/@chakra-ui/react/dist/esm/components/field/field.js","../../src/hocs/withFormControl/withFormControl.records.ts","../../src/hocs/withFormControl/withFormControl.tsx"],"sourcesContent":["'use client';\nimport { jsx } from 'react/jsx-runtime';\nimport { mergeProps } from '@zag-js/react';\nimport { forwardRef } from 'react';\nimport { ark } from '../factory.js';\nimport { useFieldContext } from './use-field-context.js';\n\nconst FieldErrorText = forwardRef((props, ref) => {\n const field = useFieldContext();\n const mergedProps = mergeProps(field.getErrorTextProps(), props);\n if (field?.invalid) {\n return /* @__PURE__ */ jsx(ark.span, { ...mergedProps, ref });\n }\n return null;\n});\nFieldErrorText.displayName = \"FieldErrorText\";\n\nexport { FieldErrorText };\n","'use client';\nimport { jsx } from 'react/jsx-runtime';\nimport { mergeProps } from '@zag-js/react';\nimport { forwardRef } from 'react';\nimport { ark } from '../factory.js';\nimport { useFieldContext } from './use-field-context.js';\n\nconst FieldHelperText = forwardRef((props, ref) => {\n const field = useFieldContext();\n const mergedProps = mergeProps(field?.getHelperTextProps(), props);\n return /* @__PURE__ */ jsx(ark.span, { ...mergedProps, ref });\n});\nFieldHelperText.displayName = \"FieldHelperText\";\n\nexport { FieldHelperText };\n","'use client';\nimport { jsx } from 'react/jsx-runtime';\nimport { mergeProps } from '@zag-js/react';\nimport { forwardRef } from 'react';\nimport { ark } from '../factory.js';\nimport { useFieldContext } from './use-field-context.js';\n\nconst FieldLabel = forwardRef((props, ref) => {\n const field = useFieldContext();\n const mergedProps = mergeProps(field?.getLabelProps(), props);\n return /* @__PURE__ */ jsx(ark.label, { ...mergedProps, ref });\n});\nFieldLabel.displayName = \"FieldLabel\";\n\nexport { FieldLabel };\n","'use client';\nimport { useLayoutEffect, useEffect } from 'react';\n\nconst useSafeLayoutEffect = typeof window !== \"undefined\" ? useLayoutEffect : useEffect;\n\nexport { useSafeLayoutEffect };\n","'use client';\nimport { createContext } from '../../utils/create-context.js';\n\nconst [FieldsetProvider, useFieldsetContext] = createContext({\n name: \"FieldsetContext\",\n hookName: \"useFieldsetContext\",\n providerName: \"<FieldsetProvider />\",\n strict: false\n});\n\nexport { FieldsetProvider, useFieldsetContext };\n","'use client';\nimport { getWindow, dataAttr, ariaAttr } from '@zag-js/dom-query';\nimport { useState, useId, useRef, useMemo } from 'react';\nimport { useSafeLayoutEffect } from '../../utils/use-safe-layout-effect.js';\nimport { useFieldsetContext } from '../fieldset/use-fieldset-context.js';\nimport { parts } from './field.anatomy.js';\n\nconst useField = (props = {}) => {\n const fieldset = useFieldsetContext();\n const { ids, disabled = Boolean(fieldset?.disabled), invalid = false, readOnly = false, required = false } = props;\n const [hasErrorText, setHasErrorText] = useState(false);\n const [hasHelperText, setHasHelperText] = useState(false);\n const id = props.id ?? useId();\n const rootRef = useRef(null);\n const rootId = ids?.control ?? `field::${id}`;\n const errorTextId = ids?.errorText ?? `field::${id}::error-text`;\n const helperTextId = ids?.helperText ?? `field::${id}::helper-text`;\n const labelId = ids?.label ?? `field::${id}::label`;\n useSafeLayoutEffect(() => {\n const rootNode = rootRef.current;\n if (!rootNode) return;\n const win = getWindow(rootNode);\n const doc = win.document;\n const checkTextElements = () => {\n setHasErrorText(!!doc.getElementById(errorTextId));\n setHasHelperText(!!doc.getElementById(helperTextId));\n };\n checkTextElements();\n const observer = new win.MutationObserver(checkTextElements);\n observer.observe(rootNode, { childList: true, subtree: true });\n return () => observer.disconnect();\n }, [errorTextId, helperTextId]);\n const labelIds = useMemo(() => {\n const ids2 = [];\n if (hasErrorText && invalid) ids2.push(errorTextId);\n if (hasHelperText) ids2.push(helperTextId);\n return ids2.join(\" \") || void 0;\n }, [invalid, errorTextId, helperTextId, hasErrorText, hasHelperText]);\n const getRootProps = useMemo(\n () => () => ({\n ...parts.root.attrs,\n id: rootId,\n ref: rootRef,\n role: \"group\",\n \"data-disabled\": dataAttr(disabled),\n \"data-invalid\": dataAttr(invalid),\n \"data-readonly\": dataAttr(readOnly)\n }),\n [disabled, invalid, readOnly, rootId]\n );\n const getLabelProps = useMemo(\n () => () => ({\n ...parts.label.attrs,\n id: labelId,\n \"data-disabled\": dataAttr(disabled),\n \"data-invalid\": dataAttr(invalid),\n \"data-readonly\": dataAttr(readOnly),\n htmlFor: id\n }),\n [disabled, invalid, readOnly, id, labelId]\n );\n const getControlProps = useMemo(\n () => () => ({\n \"aria-describedby\": labelIds,\n \"aria-invalid\": ariaAttr(invalid),\n \"data-invalid\": dataAttr(invalid),\n \"data-required\": dataAttr(required),\n \"data-readonly\": dataAttr(readOnly),\n id,\n required,\n disabled,\n readOnly\n }),\n [labelIds, invalid, required, readOnly, id, disabled]\n );\n const getInputProps = useMemo(\n () => () => ({\n ...getControlProps(),\n ...parts.input.attrs\n }),\n [getControlProps]\n );\n const getTextareaProps = useMemo(\n () => () => ({\n ...getControlProps(),\n ...parts.textarea.attrs\n }),\n [getControlProps]\n );\n const getSelectProps = useMemo(\n () => () => ({\n ...getControlProps(),\n ...parts.select.attrs\n }),\n [getControlProps]\n );\n const getHelperTextProps = useMemo(\n () => () => ({\n id: helperTextId,\n ...parts.helperText.attrs,\n \"data-disabled\": dataAttr(disabled)\n }),\n [disabled, helperTextId]\n );\n const getErrorTextProps = useMemo(\n () => () => ({\n id: errorTextId,\n ...parts.errorText.attrs,\n \"aria-live\": \"polite\"\n }),\n [errorTextId]\n );\n const getRequiredIndicatorProps = useMemo(\n () => () => ({\n \"aria-hidden\": true,\n ...parts.requiredIndicator.attrs\n }),\n []\n );\n return {\n ariaDescribedby: labelIds,\n ids: {\n root: rootId,\n control: id,\n label: labelId,\n errorText: errorTextId,\n helperText: helperTextId\n },\n refs: {\n rootRef\n },\n disabled,\n invalid,\n readOnly,\n required,\n getLabelProps,\n getRootProps,\n getInputProps,\n getTextareaProps,\n getSelectProps,\n getHelperTextProps,\n getErrorTextProps,\n getRequiredIndicatorProps\n };\n};\n\nexport { useField };\n","'use client';\nimport { jsx } from 'react/jsx-runtime';\nimport { mergeProps } from '@zag-js/react';\nimport { forwardRef } from 'react';\nimport { composeRefs } from '../../utils/compose-refs.js';\nimport { createSplitProps } from '../../utils/create-split-props.js';\nimport { ark } from '../factory.js';\nimport { useField } from './use-field.js';\nimport { FieldProvider } from './use-field-context.js';\n\nconst FieldRoot = forwardRef((props, ref) => {\n const [useFieldProps, localProps] = createSplitProps()(props, [\n \"id\",\n \"ids\",\n \"disabled\",\n \"invalid\",\n \"readOnly\",\n \"required\"\n ]);\n const field = useField(useFieldProps);\n const mergedProps = mergeProps(field.getRootProps(), localProps);\n return /* @__PURE__ */ jsx(FieldProvider, { value: field, children: /* @__PURE__ */ jsx(ark.div, { ...mergedProps, ref: composeRefs(ref, field.refs.rootRef) }) });\n});\nFieldRoot.displayName = \"FieldRoot\";\n\nexport { FieldRoot };\n","\"use strict\";\n\"use client\";\nimport { jsx } from 'react/jsx-runtime';\nimport * as React from 'react';\nimport { cx } from '../../utils/cx.js';\nimport { createRecipeContext } from '../../styled-system/create-recipe-context.js';\nimport { chakra } from '../../styled-system/factory.js';\n\nconst { useRecipeResult, PropsProvider } = createRecipeContext({ key: \"icon\" });\nconst Icon = React.forwardRef(\n function Icon2(props, ref) {\n const {\n styles,\n className,\n props: otherProps\n } = useRecipeResult({ asChild: !props.as, ...props });\n return /* @__PURE__ */ jsx(\n chakra.svg,\n {\n ref,\n focusable: false,\n \"aria-hidden\": \"true\",\n ...otherProps,\n css: [styles, props.css],\n className: cx(className, props.className)\n }\n );\n }\n);\nconst IconPropsProvider = PropsProvider;\n\nexport { Icon, IconPropsProvider };\n","\"use strict\";\n\"use client\";\nimport { jsx } from 'react/jsx-runtime';\nimport { Children, forwardRef } from 'react';\nimport { Icon } from './icon.js';\n\nfunction createIcon(options) {\n const {\n viewBox = \"0 0 24 24\",\n d: pathDefinition,\n displayName,\n defaultProps = {}\n } = options;\n const path = Children.toArray(options.path);\n const Comp = forwardRef((props, ref) => /* @__PURE__ */ jsx(\n Icon,\n {\n ref,\n asChild: false,\n viewBox,\n ...defaultProps,\n ...props,\n children: path.length ? path : /* @__PURE__ */ jsx(\"path\", { fill: \"currentColor\", d: pathDefinition })\n }\n ));\n Comp.displayName = displayName;\n return Comp;\n}\n\nexport { createIcon };\n","\"use strict\";\n\"use client\";\nimport { jsx } from 'react/jsx-runtime';\nimport { Field, useFieldContext } from '@ark-ui/react/field';\nimport { forwardRef } from 'react';\nimport { cx } from '../../utils/cx.js';\nimport { createSlotRecipeContext } from '../../styled-system/create-slot-recipe-context.js';\nimport { chakra } from '../../styled-system/factory.js';\nimport { createIcon } from '../icon/create-icon.js';\n\nconst {\n withProvider,\n withContext,\n useStyles: useFieldStyles,\n useClassNames,\n PropsProvider\n} = createSlotRecipeContext({ key: \"field\" });\nconst FieldRoot = withProvider(\n Field.Root,\n \"root\",\n { forwardAsChild: true }\n);\nconst FieldPropsProvider = PropsProvider;\nconst FieldLabel = withContext(\n Field.Label,\n \"label\",\n { forwardAsChild: true }\n);\nconst FieldHelperText = withContext(Field.HelperText, \"helperText\", { forwardAsChild: true });\nconst FieldErrorText = withContext(\n Field.ErrorText,\n \"errorText\",\n { forwardAsChild: true }\n);\nconst FieldErrorIcon = createIcon({\n d: \"M11.983,0a12.206,12.206,0,0,0-8.51,3.653A11.8,11.8,0,0,0,0,12.207,11.779,11.779,0,0,0,11.8,24h.214A12.111,12.111,0,0,0,24,11.791h0A11.766,11.766,0,0,0,11.983,0ZM10.5,16.542a1.476,1.476,0,0,1,1.449-1.53h.027a1.527,1.527,0,0,1,1.523,1.47,1.475,1.475,0,0,1-1.449,1.53h-.027A1.529,1.529,0,0,1,10.5,16.542ZM11,12.5v-6a1,1,0,0,1,2,0v6a1,1,0,1,1-2,0Z\"\n});\nconst FieldRequiredIndicator = forwardRef(function RequiredIndicator(props, ref) {\n const { fallback, children = \"*\", ...restProps } = props;\n const field = useFieldContext();\n const classNames = useClassNames();\n const styles = useFieldStyles();\n if (!field?.required) {\n return fallback;\n }\n return /* @__PURE__ */ jsx(\n chakra.span,\n {\n ref,\n \"aria-hidden\": \"true\",\n ...restProps,\n className: cx(classNames.requiredIndicator, props.className),\n css: [styles.requiredIndicator, props.css],\n children\n }\n );\n});\n\nexport { FieldErrorIcon, FieldErrorText, FieldHelperText, FieldLabel, FieldPropsProvider, FieldRequiredIndicator, FieldRoot, useFieldStyles };\n","import { FormControlSize } from './withFormControl.types';\n\nexport const optionalTextSizeMap: Record<FormControlSize, number> = {\n sm: 10,\n md: 12,\n lg: 14,\n};\n","import React from 'react';\nimport { Field } from '@chakra-ui/react/field';\nimport { FormControlLabelPosition, FormControlSize } from './withFormControl.types';\nimport { SystemStyleObject } from '@chakra-ui/react/styled-system';\nimport { TypographyVariant } from 'shared/types/typography';\nimport { Text } from 'components/Text/text.component';\nimport { optionalTextSizeMap } from './withFormControl.records';\nimport { fontSizes } from 'theme/tokens/typography/typography.records';\nimport { Flex } from '@chakra-ui/react/flex';\nimport { Icon } from 'components/Icon/icon.component';\n\nexport interface WithFormControlProps {\n disabled?: boolean;\n errorText?: string;\n formControlStyle?: SystemStyleObject;\n fullWidth?: boolean;\n helperText?: string;\n inlineField?: boolean;\n invalid?: boolean;\n invalidIconColor?: TypographyVariant;\n label?: string | React.ReactNode;\n labelPosition?: FormControlLabelPosition;\n labelStyle?: SystemStyleObject;\n onContrast?: boolean;\n readOnly?: boolean;\n required?: boolean;\n showOptionalElement?: boolean;\n size?: FormControlSize;\n useInvalidIcon?: boolean;\n useInvalidText?: boolean;\n}\n\nexport const withFormControl = <P extends WithFormControlProps>(Component: React.ComponentType<P>): React.FC<P> => {\n const WithFormControl = ({\n disabled = false,\n errorText = 'Field is invalid',\n formControlStyle,\n fullWidth = true,\n helperText,\n inlineField = false,\n invalid = false,\n invalidIconColor = 'danger',\n label,\n labelPosition = 'start',\n labelStyle,\n onContrast = false,\n readOnly = false,\n required = false,\n showOptionalElement = false,\n size = 'md',\n useInvalidIcon = false,\n useInvalidText = true,\n ...props\n }: WithFormControlProps): React.JSX.Element => {\n // TODO: Fix (Optional) for multiple lines\n const labelComponent = (\n <Field.Label\n className=\"FormControl__Label\"\n color={onContrast ? 'text.contrast' : 'text'}\n fontSize={fontSizes[size]}\n {...labelStyle}\n onClick={(e) => {\n e.stopPropagation();\n }}\n >\n {label}\n <Field.RequiredIndicator\n className=\"FormControl__RequiredIndicator\"\n color={onContrast ? 'text.danger.contrast' : 'text.danger'}\n {...(!required && {\n fallback: showOptionalElement ? (\n <Text\n variant={onContrast ? 'subtleOnContrast' : 'subtle'}\n fontSize={optionalTextSizeMap[size]}\n display=\"contents\"\n >\n {' '}\n (Optional)\n </Text>\n ) : (\n <></>\n ),\n })}\n />\n </Field.Label>\n );\n\n return (\n <Field.Root\n className=\"FormControl group\"\n disabled={disabled}\n invalid={invalid}\n readOnly={readOnly}\n required={required}\n width={fullWidth ? '100%' : 'auto'}\n {...formControlStyle}\n >\n <Flex\n className=\"FormControl__Container\"\n flexDirection={inlineField ? 'row' : 'column'}\n w={inlineField ? 'max-content' : '100%'}\n gap={2}\n >\n {label && labelPosition === 'start' && labelComponent}\n <Flex className=\"FormControl__Content\" alignItems=\"center\" gap={2} w={inlineField ? 'max-content' : '100%'}>\n <Component\n disabled={disabled}\n invalid={invalid}\n onContrast={onContrast}\n readOnly={readOnly}\n required={required}\n size={size}\n {...(props as P)}\n />\n {useInvalidIcon && invalid && (\n <Icon className=\"FormControl__InvalidIcon\" name=\"warningSign\" variant={invalidIconColor} size={size} />\n )}\n </Flex>\n {label && labelPosition === 'end' && labelComponent}\n </Flex>\n {useInvalidText && invalid && (\n <Field.ErrorText\n className=\"FormControl__ErrorText\"\n fontSize=\"xs\"\n color={onContrast ? 'text.danger.contrast' : 'text.danger'}\n >\n {errorText}\n </Field.ErrorText>\n )}\n {helperText && (\n <Field.HelperText\n className=\"FormControl__HelperText\"\n fontSize=\"xs\"\n color={onContrast ? 'text.subtle.contrast' : 'text.subtle'}\n >\n {helperText}\n </Field.HelperText>\n )}\n </Field.Root>\n );\n };\n\n WithFormControl.displayName = `withFormControl(${Component.displayName || Component.name}`;\n return WithFormControl;\n};\n"],"names":["FieldErrorText","forwardRef","props","ref","field","useFieldContext","mergedProps","mergeProps","jsx","ark","FieldHelperText","FieldLabel","useSafeLayoutEffect","useLayoutEffect","useEffect","FieldsetProvider","useFieldsetContext","createContext","useField","fieldset","ids","disabled","invalid","readOnly","required","hasErrorText","setHasErrorText","useState","hasHelperText","setHasHelperText","id","useId","rootRef","useRef","rootId","errorTextId","helperTextId","labelId","rootNode","win","getWindow","doc","checkTextElements","observer","labelIds","useMemo","ids2","getRootProps","parts","dataAttr","getLabelProps","getControlProps","ariaAttr","getInputProps","getTextareaProps","getSelectProps","getHelperTextProps","getErrorTextProps","getRequiredIndicatorProps","FieldRoot","useFieldProps","localProps","createSplitProps","FieldProvider","composeRefs","useRecipeResult","createRecipeContext","Icon","React","styles","className","otherProps","chakra","cx","createIcon","options","viewBox","pathDefinition","displayName","defaultProps","path","Children","Comp","withProvider","withContext","useFieldStyles","useClassNames","createSlotRecipeContext","Field.Root","Field.Label","Field.HelperText","Field.ErrorText","FieldRequiredIndicator","fallback","children","restProps","classNames","optionalTextSizeMap","withFormControl","Component","WithFormControl","errorText","formControlStyle","fullWidth","helperText","inlineField","invalidIconColor","label","labelPosition","labelStyle","onContrast","showOptionalElement","size","useInvalidIcon","useInvalidText","labelComponent","jsxs","fontSizes","e","Field.RequiredIndicator","Text","Fragment","Flex"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9]}
|