@gsretail.com/gui-core
Version:
A skeleton to create your own React component library using Rollup, TypeScript, Sass and Storybook
2 lines (1 loc) • 5.43 kB
JavaScript
import e from"../../../@babel/runtime/helpers/esm/extends.js";import*as o from"react";import{clsx as t}from"../../../clsx/dist/clsx.m.js";import s from"../../../prop-types/index.js";import{unstable_useId as r}from"@mui/material/utils";import{styled as n,useThemeProps as i}from"@mui/material/styles";import{unstable_composeClasses as l}from"@mui/material";import{Clock as a}from"./Clock.js";import{useLocaleText as c,useNow as m,useUtils as u}from"../internals/hooks/useUtils.js";import{buildDeprecatedPropsWarning as d}from"../internals/utils/warning.js";import{getMinutesNumbers as p,getHourNumbers as h}from"./ClockNumbers.js";import{PickersArrowSwitcher as w}from"../internals/components/PickersArrowSwitcher.js";import{createIsAfterIgnoreDatePart as b,convertValueToMeridiem as g}from"../internals/utils/time-utils.js";import{useViews as f}from"../internals/hooks/useViews.js";import{useMeridiemMode as C}from"../internals/hooks/date-helpers-hooks.js";import{getClockPickerUtilityClass as k}from"./clockPickerClasses.js";import{jsxs as x,jsx as T}from"react/jsx-runtime";import{PickerViewRoot as S}from"../internals/components/PickerViewRoot/PickerViewRoot.js";const N=n(S,{name:"MuiClockPicker",slot:"Root",overridesResolver:(e,o)=>o.root})({display:"flex",flexDirection:"column"}),v=n(w,{name:"MuiClockPicker",slot:"ArrowSwitcher",overridesResolver:(e,o)=>o.arrowSwitcher})({position:"absolute",right:12,top:15}),M=d("Props for translation are deprecated. See https://mui.com/x/react-date-pickers/localization for more information."),V=o.forwardRef((function(s,n){const d=i({props:s,name:"MuiClockPicker"}),{ampm:w=!1,ampmInClock:S=!1,autoFocus:V,components:j,componentsProps:P,date:y,disableIgnoringDatePartForTimeValidation:D,getClockLabelText:A,getHoursClockNumberText:O,getMinutesClockNumberText:R,getSecondsClockNumberText:I,leftArrowButtonText:B,maxTime:H,minTime:L,minutesStep:F=1,rightArrowButtonText:E,shouldDisableTime:q,showViewSwitcher:z,onChange:U,view:Y,views:_=["hours","minutes"],openTo:G,onViewChange:J,className:K,disabled:Q,readOnly:W}=d;M({leftArrowButtonText:B,rightArrowButtonText:E,getClockLabelText:A,getHoursClockNumberText:O,getMinutesClockNumberText:R,getSecondsClockNumberText:I});const X=c(),Z=null!=B?B:X.openPreviousView,$=null!=E?E:X.openNextView,ee=null!=A?A:X.clockLabelText,oe=null!=O?O:X.hoursClockNumberText,te=null!=R?R:X.minutesClockNumberText,se=null!=I?I:X.secondsClockNumberText,{openView:re,setOpenView:ne,nextView:ie,previousView:le,handleChangeAndOpenNext:ae}=f({view:Y,views:_,openTo:G,onViewChange:J,onChange:U}),ce=m(),me=u(),ue=o.useMemo((()=>y||me.setSeconds(me.setMinutes(me.setHours(ce,0),0),0)),[y,ce,me]),{meridiemMode:de,handleMeridiemChange:pe}=C(ue,w,ae),he=o.useCallback(((e,o)=>{const t=b(D,me),s=({start:e,end:o})=>(!L||!t(L,o))&&(!H||!t(e,H)),r=(e,t=1)=>e%t==0&&(!q||!q(e,o));switch(o){case"hours":{const o=g(e,de,w),t=me.setHours(ue,o);return!s({start:me.setSeconds(me.setMinutes(t,0),0),end:me.setSeconds(me.setMinutes(t,59),59)})||!r(o)}case"minutes":{const o=me.setMinutes(ue,e);return!s({start:me.setSeconds(o,0),end:me.setSeconds(o,59)})||!r(e,F)}case"seconds":{const o=me.setSeconds(ue,e);return!s({start:o,end:o})||!r(e)}default:throw new Error("not supported")}}),[w,ue,D,H,de,L,F,q,me]),we=r(),be=o.useMemo((()=>{switch(re){case"hours":{const e=(e,o)=>{const t=g(e,de,w);ae(me.setHours(ue,t),o)};return{onChange:e,value:me.getHours(ue),children:h({date:y,utils:me,ampm:w,onChange:e,getClockNumberText:oe,isDisabled:e=>Q||he(e,"hours"),selectedId:we})}}case"minutes":{const e=me.getMinutes(ue),o=(e,o)=>{ae(me.setMinutes(ue,e),o)};return{value:e,onChange:o,children:p({utils:me,value:e,onChange:o,getClockNumberText:te,isDisabled:e=>Q||he(e,"minutes"),selectedId:we})}}case"seconds":{const e=me.getSeconds(ue),o=(e,o)=>{ae(me.setSeconds(ue,e),o)};return{value:e,onChange:o,children:p({utils:me,value:e,onChange:o,getClockNumberText:se,isDisabled:e=>Q||he(e,"seconds"),selectedId:we})}}default:throw new Error("You must provide the type for ClockView")}}),[re,me,y,w,oe,te,se,de,ae,ue,he,we,Q]),ge=d,fe=(e=>{const{classes:o}=e;return l({root:["root"],arrowSwitcher:["arrowSwitcher"]},k,o)})(ge);return x(N,{ref:n,className:t(fe.root,K),ownerState:ge,children:[z&&T(v,{className:fe.arrowSwitcher,leftArrowButtonText:Z,rightArrowButtonText:$,components:j,componentsProps:P,onLeftClick:()=>ne(le),onRightClick:()=>ne(ie),isLeftDisabled:!le,isRightDisabled:!ie,ownerState:ge}),T(a,e({autoFocus:V,date:y,ampmInClock:S,type:re,ampm:w,getClockLabelText:ee,minutesStep:F,isTimeDisabled:he,meridiemMode:de,handleMeridiemChange:pe,selectedId:we,disabled:Q,readOnly:W},be))]})}));"production"!==process.env.NODE_ENV&&(V.propTypes={ampm:s.bool,ampmInClock:s.bool,autoFocus:s.bool,classes:s.object,className:s.string,components:s.object,componentsProps:s.object,date:s.any,disabled:s.bool,disableIgnoringDatePartForTimeValidation:s.bool,getClockLabelText:s.func,getHoursClockNumberText:s.func,getMinutesClockNumberText:s.func,getSecondsClockNumberText:s.func,leftArrowButtonText:s.string,maxTime:s.any,minTime:s.any,minutesStep:s.number,onChange:s.func.isRequired,onViewChange:s.func,openTo:s.oneOf(["hours","minutes","seconds"]),readOnly:s.bool,rightArrowButtonText:s.string,shouldDisableTime:s.func,showViewSwitcher:s.bool,view:s.oneOf(["hours","minutes","seconds"]),views:s.arrayOf(s.oneOf(["hours","minutes","seconds"]).isRequired)});export{V as ClockPicker};