@dgshahr/ui-kit 1.7.1 → 1.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/dist/DateAndTimePickerFooter-ClSJWVd3.js +74 -0
  2. package/dist/DateAndTimePickerFooter-Dikf0ZUx.cjs +1 -0
  3. package/dist/Form/Common/DateAndTimePickerFooter/DateAndTimePickerFooter.d.ts +10 -0
  4. package/dist/Form/Common/DateAndTimePickerFooter/DateAndTimePickerFooter.d.ts.map +1 -0
  5. package/dist/Form/Datepicker/Footer.d.ts.map +1 -1
  6. package/dist/Form/Datepicker/index.cjs +1 -1
  7. package/dist/Form/Datepicker/index.d.ts.map +1 -1
  8. package/dist/Form/Datepicker/index.mjs +396 -425
  9. package/dist/Form/Datepicker/types.d.ts +2 -22
  10. package/dist/Form/Datepicker/types.d.ts.map +1 -1
  11. package/dist/Form/Select/index.cjs +1 -1
  12. package/dist/Form/Select/index.mjs +1 -1
  13. package/dist/Form/Timepicker/Body.d.ts +4 -0
  14. package/dist/Form/Timepicker/Body.d.ts.map +1 -0
  15. package/dist/Form/Timepicker/Footer.d.ts +4 -0
  16. package/dist/Form/Timepicker/Footer.d.ts.map +1 -0
  17. package/dist/Form/Timepicker/GradientOverlay.d.ts +7 -0
  18. package/dist/Form/Timepicker/GradientOverlay.d.ts.map +1 -0
  19. package/dist/Form/Timepicker/ScrollWheel.d.ts +5 -0
  20. package/dist/Form/Timepicker/ScrollWheel.d.ts.map +1 -0
  21. package/dist/Form/Timepicker/TimeInput.d.ts +10 -0
  22. package/dist/Form/Timepicker/TimeInput.d.ts.map +1 -0
  23. package/dist/Form/Timepicker/TimeInputs.d.ts +5 -0
  24. package/dist/Form/Timepicker/TimeInputs.d.ts.map +1 -0
  25. package/dist/Form/Timepicker/TimeScrollWheels.d.ts +5 -0
  26. package/dist/Form/Timepicker/TimeScrollWheels.d.ts.map +1 -0
  27. package/dist/Form/Timepicker/constants.d.ts +2 -0
  28. package/dist/Form/Timepicker/constants.d.ts.map +1 -0
  29. package/dist/Form/Timepicker/context.d.ts +12 -0
  30. package/dist/Form/Timepicker/context.d.ts.map +1 -0
  31. package/dist/Form/Timepicker/hooks/useCaret.d.ts +5 -0
  32. package/dist/Form/Timepicker/hooks/useCaret.d.ts.map +1 -0
  33. package/dist/Form/Timepicker/hooks/useScrollWheel.d.ts +5 -0
  34. package/dist/Form/Timepicker/hooks/useScrollWheel.d.ts.map +1 -0
  35. package/dist/Form/Timepicker/index.cjs +1 -0
  36. package/dist/Form/Timepicker/index.d.ts +5 -0
  37. package/dist/Form/Timepicker/index.d.ts.map +1 -0
  38. package/dist/Form/Timepicker/index.mjs +364 -0
  39. package/dist/Form/Timepicker/types.d.ts +44 -0
  40. package/dist/Form/Timepicker/types.d.ts.map +1 -0
  41. package/dist/Form/Timepicker/utils.d.ts +10 -0
  42. package/dist/Form/Timepicker/utils.d.ts.map +1 -0
  43. package/dist/Form/Wrappers/PickerWrapper/PickerWrapper.d.ts.map +1 -1
  44. package/dist/Form/Wrappers/PickerWrapper/type.d.ts +2 -1
  45. package/dist/Form/Wrappers/PickerWrapper/type.d.ts.map +1 -1
  46. package/dist/Menu/constants.d.ts +1 -1
  47. package/dist/Menu/constants.d.ts.map +1 -1
  48. package/dist/Menu/index.cjs +1 -1
  49. package/dist/Menu/index.d.ts.map +1 -1
  50. package/dist/Menu/index.mjs +11 -9
  51. package/dist/Menu/types.d.ts +1 -1
  52. package/dist/Menu/types.d.ts.map +1 -1
  53. package/dist/PickerWrapper-BcOkTb3G.cjs +1 -0
  54. package/dist/{PickerWrapper-CQAaW1cs.js → PickerWrapper-CZPsW03T.js} +52 -47
  55. package/dist/{Slide-Cg1SjpFn.js → Slide-BQvg6qNJ.js} +1 -1
  56. package/dist/Slide-p8rlxR_a.cjs +1 -0
  57. package/dist/Slider/index.cjs +1 -1
  58. package/dist/Slider/index.mjs +1 -1
  59. package/dist/Tooltip/Content.d.ts.map +1 -1
  60. package/dist/Tooltip/index.cjs +1 -1
  61. package/dist/Tooltip/index.d.ts +1 -1
  62. package/dist/Tooltip/index.d.ts.map +1 -1
  63. package/dist/Tooltip/index.mjs +21 -17
  64. package/dist/assets/styles.css +1 -1
  65. package/dist/index.cjs +1 -1
  66. package/dist/index.d.ts +1 -0
  67. package/dist/index.d.ts.map +1 -1
  68. package/dist/index.mjs +46 -44
  69. package/package.json +7 -1
  70. package/dist/PickerWrapper-DpLS0Ogo.cjs +0 -1
  71. package/dist/Slide-YnGNNNXw.cjs +0 -1
@@ -1,3 +1,4 @@
1
+ import { HasOrNotRange, HasOrNotSubmitButton } from '../../../utils/types/DateAndTimePicker';
1
2
  import { PickerWrapperProps } from '../Wrappers/PickerWrapper/type';
2
3
  export declare enum DateTypes {
3
4
  Day = 0,
@@ -27,28 +28,7 @@ type DatepickerPropsBase = PickerWrapperProps & {
27
28
  element: (dayItem: DayItem) => React.ReactNode;
28
29
  };
29
30
  };
30
- interface DatepickerWithSubmitButton {
31
- showSubmitButton?: true;
32
- onSubmit?: () => void;
33
- }
34
- interface DatepickerWithoutSubmitButton {
35
- showSubmitButton?: false;
36
- onSubmit?: never;
37
- }
38
- export interface DatepickerWithRange {
39
- acceptRange: true;
40
- value: {
41
- start: Date | null;
42
- end: Date | null;
43
- };
44
- onChange: (value: DatepickerWithRange['value']) => void;
45
- }
46
- export interface DatepickerWithoutRange {
47
- acceptRange?: false;
48
- value: Date | null;
49
- onChange: (value: Date) => void;
50
- }
51
- export type DatepickerProps = DatepickerPropsBase & (DatepickerWithSubmitButton | DatepickerWithoutSubmitButton) & (DatepickerWithRange | DatepickerWithoutRange);
31
+ export type DatepickerProps = DatepickerPropsBase & HasOrNotSubmitButton & HasOrNotRange;
52
32
  export interface IDatepickerContext {
53
33
  dateType: DateTypes;
54
34
  setDateType: (type: DateTypes) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/Form/Datepicker/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEzE,oBAAY,SAAS;IACnB,GAAG,IAAA;IACH,KAAK,IAAA;IACL,IAAI,IAAA;CACL;AAED,MAAM,MAAM,OAAO,GAAG;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC;AAElG,KAAK,mBAAmB,GAAG,kBAAkB,GAAG;IAC9C,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC;IAClB,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IAC5B,oBAAoB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAC5C,cAAc,CAAC,EAAE;QACf,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;QACpC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,KAAK,CAAC,SAAS,CAAC;KAChD,CAAC;CACH,CAAC;AAEF,UAAU,0BAA0B;IAClC,gBAAgB,CAAC,EAAE,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,UAAU,6BAA6B;IACrC,gBAAgB,CAAC,EAAE,KAAK,CAAC;IACzB,QAAQ,CAAC,EAAE,KAAK,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,IAAI,CAAC;IAClB,KAAK,EAAE;QAAE,KAAK,EAAE,IAAI,GAAG,IAAI,CAAC;QAAC,GAAG,EAAE,IAAI,GAAG,IAAI,CAAA;KAAE,CAAC;IAChD,QAAQ,EAAE,CAAC,KAAK,EAAE,mBAAmB,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;CACzD;AAED,MAAM,WAAW,sBAAsB;IACrC,WAAW,CAAC,EAAE,KAAK,CAAC;IACpB,KAAK,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,CAAC;CACjC;AAED,MAAM,MAAM,eAAe,GAAG,mBAAmB,GAC/C,CAAC,0BAA0B,GAAG,6BAA6B,CAAC,GAC5D,CAAC,mBAAmB,GAAG,sBAAsB,CAAC,CAAC;AAEjD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,SAAS,CAAC;IACpB,WAAW,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IACvC,YAAY,EAAE,IAAI,CAAC;IACnB,eAAe,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACtC,eAAe,EAAE,eAAe,CAAC;CAClC;AAED,MAAM,WAAW,oBAAoB;IACnC,eAAe,EAAE,eAAe,CAAC;CAClC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/Form/Datepicker/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC/F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEzE,oBAAY,SAAS;IACnB,GAAG,IAAA;IACH,KAAK,IAAA;IACL,IAAI,IAAA;CACL;AAED,MAAM,MAAM,OAAO,GAAG;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC;AAElG,KAAK,mBAAmB,GAAG,kBAAkB,GAAG;IAC9C,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC;IAClB,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IAC5B,oBAAoB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAC5C,cAAc,CAAC,EAAE;QACf,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;QACpC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,KAAK,CAAC,SAAS,CAAC;KAChD,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,mBAAmB,GAAG,oBAAoB,GAAG,aAAa,CAAC;AAEzF,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,SAAS,CAAC;IACpB,WAAW,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IACvC,YAAY,EAAE,IAAI,CAAC;IACnB,eAAe,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACtC,eAAe,EAAE,eAAe,CAAC;CAClC;AAED,MAAM,WAAW,oBAAoB;IACnC,eAAe,EAAE,eAAe,CAAC;CAClC"}
@@ -1 +1 @@
1
- "use strict";require('../../assets/styles.css');const i=require("react/jsx-runtime"),d=require("../../clsx-C11secjj.cjs"),E=require("../../index-DmSuyV3m.cjs"),a=require("react"),_=require("../../IconSearch-BeVs-gUu.cjs"),H=require("../Checkbox/index.cjs"),V=require("../../Button/index.cjs"),M=require("../../PickerWrapper-DpLS0Ogo.cjs"),$=require("../../Chip/index.cjs");;/* empty css */function z({label:n,isMultiple:s,isActive:r,disabled:u}){return s?i.jsx(H,{checked:r,label:n,readOnly:!0,disabled:u}):n}const D=n=>{const{option:s,onClick:r,value:u,mode:c,optionCellClassName:g,optionCell:t}=n;function l(){return Array.isArray(u)?u.includes(s.value):s.value===u}return i.jsx("button",{type:"button",onClick:r,className:d.clsx("dgsuikit:w-full dgsuikit:text-start dgsuikit:px-3 dgsuikit:disabled:cursor-not-allowed dgsuikit:py-3 dgsuikit:font-p1-regular dgsuikit:disabled:bg-gray-50 dgsuikit:transition",l()?"dgsuikit:bg-primary-50 dgsuikit:text-primary-500":"dgsuikit:text-gray-700 dgsuikit:disabled:text-gray-400",g),disabled:s.disabled,children:t?t(s,l()):z({label:s.label,isMultiple:c==="multiple",isActive:l(),disabled:s.disabled??!1})})},A=a.memo(D),U=20,G=n=>{const{options:s,mode:r="single",afterOptions:u,beforeOptions:c,onChange:g,searchable:t=!0,separateSelectedOptions:l=!0,optionsTitle:f="عنوان‌ها",value:p,optionCellClassName:v,emptyContent:F="نتیجه‌ای یافت نشد !",showClearButtonOnEmpty:R=!0}=n,[k,I]=a.useState(""),[x,B]=a.useState(0),m=a.useRef(null),N=a.useRef(null),{toggleWrapperVisibility:L}=M.usePickerWrapperContext(),O=d.clsx("dgsuikit:border-t dgsuikit:border-solid dgsuikit:border-gray-100",(!t&&!c||r==="multiple"&&l)&&"dgsuikit:first-of-type:border-t-0",!!u&&"dgsuikit:last-of-type:border-b");let h;const b=t;typeof t=="boolean"?h=t:h=Object.keys(t).length>0;const j=a.useMemo(()=>{if(!Array.isArray(s))throw new Error("options should be array");return k?s?.filter(e=>e.label.includes(k)):s},[k,s]),C=a.useMemo(()=>r==="multiple"&&l?s?.filter(e=>p.includes(e.value))??[]:[],[s,p]),S=a.useMemo(()=>{let e=j;r==="multiple"&&l&&(e=e?.filter(P=>!p.includes(P.value)));const o=Math.min(x+U,e?.length??0);return e?.slice(x,o)},[j,x,p]),y=m?.current?.children[0]?.clientHeight??50,W=((j?.length??0)-(r==="multiple"?C.length??0:0))*y,w=a.useCallback(()=>{const e=m?.current?.parentElement;if(!e)return;const o=e.scrollTop,P=m.current.offsetTop,T=Math.floor((o-P)/y);B(T>=0?T:0)},[y]);a.useEffect(()=>{const e=m.current?.parentElement;if(e)return e.addEventListener("scroll",w),()=>e.removeEventListener("scroll",w)},[w]),a.useEffect(()=>{!h||b.autoFocus===!1||!N.current||setTimeout(()=>{N.current?.focus()},300)},[]);const q=a.useCallback(e=>{if(typeof g=="function")if(r==="multiple"){const o=[...p??[]];o.includes(e)?o.splice(o.indexOf(e),1):o.push(e),g(o)}else g(e),L()},[p]);return i.jsxs(i.Fragment,{children:[h&&i.jsx(E.Input,{ref:N,id:"search-input",wrapperClassName:d.clsx("dgsuikit:sticky dgsuikit:top-0 dgsuikit:pt-3 dgsuikit:right-0 dgsuikit:bg-white dgsuikit:z-10 dgsuikit:px-3",c?"dgsuikit:pb-2":"dgsuikit:pb-3",b?.wrapperClassName),placeholder:b?.placeholder??"جستجوی عنوان",value:k,onChange:e=>I(e.currentTarget.value),rightIcon:b?.rightIcon??i.jsx(_.IconSearch,{width:20,height:20}),...typeof t=="object"?t:{}}),c,r==="multiple"&&l&&C.length>0&&i.jsxs(i.Fragment,{children:[i.jsx("p",{className:"dgsuikit:font-p2-regular dgsuikit:text-gray-400 dgsuikit:px-3 dgsuikit:py-2",children:`${f}‌ی انتخاب شده`}),C.map(e=>i.jsx(A,{onClick:()=>q(e.value),option:e,optionCellClassName:d.clsx(O,v),...n},e.value))]}),i.jsxs(i.Fragment,{children:[r==="multiple"&&l&&i.jsx("p",{className:"dgsuikit:font-p2-regular dgsuikit:text-gray-400 dgsuikit:px-3 dgsuikit:py-2",children:f}),i.jsx("div",{ref:m,className:"dgsuikit:relative",style:{height:W},children:S?.map((e,o)=>i.jsx("div",{className:d.clsx("dgsuikit:absolute dgsuikit:w-full",O),style:{top:`${(x+o)*y}px`},children:i.jsx(A,{onClick:()=>q(e.value),option:e,...n})},e.value))}),!S?.length&&!C.length&&i.jsxs("div",{className:"dgsuikit:text-center dgsuikit:flex dgsuikit:flex-col dgsuikit:items-center dgsuikit:mt-2",children:[i.jsx("p",{className:"dgsuikit:text-gray-500 dgsuikit:font-p3-medium",children:F}),R&&i.jsx(V,{type:"button",className:"dgsuikit:mt-1",variant:"text",size:"small",onClick:()=>I(""),children:"پاک کردن"})]})]}),u]})};function J(n,s){if(!Array.isArray(n))return s.find(r=>r.value===n)?.label??""}const K=n=>{const{searchable:s=!0,value:r,options:u}=n,c=Array.isArray(r)&&r.length>0;function g(){return n.inputProps?.prefix?n.inputProps.prefix:c?r.map(l=>i.jsx($,{label:u.find(f=>f.value===l)?.label,clickable:!0,leftIcon:i.jsx(E.IconCloseSquare,{}),onClick:f=>{f.stopPropagation();const p=r.filter(v=>v!==l);n.onChange?.(p)}},l)):null}const t={...n};return t.dropdownType==="popover"&&!s&&(t.popoverClassName=d.clsx("dgsuikit:pt-3",t.popoverClassName)),t.dropdownType==="drawer"&&(t.drawerProps={...t.drawerProps,containerClassName:d.clsx(s?"dgsuikit:!pt-0":"dgsuikit:!pt-3",t.drawerProps?.containerClassName)}),t.customInput||(t.inputProps={...t.inputProps,value:J(r,u),prefix:g(),prefixClassName:c?d.clsx("dgsuikit:flex dgsuikit:items-center flex dgsuikit:flex-wrap dgsuikit:gap-2 dgsuikit:w-full",t.inputProps?.prefixClassName):t.inputProps?.prefixClassName,className:c?"dgsuikit:hidden":t.inputProps?.className,containerClassName:c?d.clsx("dgsuikit:items-baseline",t.inputProps?.containerClassName):t.inputProps?.containerClassName}),i.jsx(M.PickerWrapper,{...t,children:i.jsx(G,{...n})})};module.exports=K;
1
+ "use strict";require('../../assets/styles.css');const i=require("react/jsx-runtime"),d=require("../../clsx-C11secjj.cjs"),E=require("../../index-DmSuyV3m.cjs"),a=require("react"),_=require("../../IconSearch-BeVs-gUu.cjs"),H=require("../Checkbox/index.cjs"),V=require("../../Button/index.cjs"),M=require("../../PickerWrapper-BcOkTb3G.cjs"),$=require("../../Chip/index.cjs");;/* empty css */function z({label:n,isMultiple:s,isActive:r,disabled:u}){return s?i.jsx(H,{checked:r,label:n,readOnly:!0,disabled:u}):n}const D=n=>{const{option:s,onClick:r,value:u,mode:c,optionCellClassName:g,optionCell:t}=n;function l(){return Array.isArray(u)?u.includes(s.value):s.value===u}return i.jsx("button",{type:"button",onClick:r,className:d.clsx("dgsuikit:w-full dgsuikit:text-start dgsuikit:px-3 dgsuikit:disabled:cursor-not-allowed dgsuikit:py-3 dgsuikit:font-p1-regular dgsuikit:disabled:bg-gray-50 dgsuikit:transition",l()?"dgsuikit:bg-primary-50 dgsuikit:text-primary-500":"dgsuikit:text-gray-700 dgsuikit:disabled:text-gray-400",g),disabled:s.disabled,children:t?t(s,l()):z({label:s.label,isMultiple:c==="multiple",isActive:l(),disabled:s.disabled??!1})})},A=a.memo(D),U=20,G=n=>{const{options:s,mode:r="single",afterOptions:u,beforeOptions:c,onChange:g,searchable:t=!0,separateSelectedOptions:l=!0,optionsTitle:f="عنوان‌ها",value:p,optionCellClassName:v,emptyContent:F="نتیجه‌ای یافت نشد !",showClearButtonOnEmpty:R=!0}=n,[k,I]=a.useState(""),[x,B]=a.useState(0),m=a.useRef(null),N=a.useRef(null),{toggleWrapperVisibility:L}=M.usePickerWrapperContext(),O=d.clsx("dgsuikit:border-t dgsuikit:border-solid dgsuikit:border-gray-100",(!t&&!c||r==="multiple"&&l)&&"dgsuikit:first-of-type:border-t-0",!!u&&"dgsuikit:last-of-type:border-b");let h;const b=t;typeof t=="boolean"?h=t:h=Object.keys(t).length>0;const j=a.useMemo(()=>{if(!Array.isArray(s))throw new Error("options should be array");return k?s?.filter(e=>e.label.includes(k)):s},[k,s]),C=a.useMemo(()=>r==="multiple"&&l?s?.filter(e=>p.includes(e.value))??[]:[],[s,p]),S=a.useMemo(()=>{let e=j;r==="multiple"&&l&&(e=e?.filter(P=>!p.includes(P.value)));const o=Math.min(x+U,e?.length??0);return e?.slice(x,o)},[j,x,p]),y=m?.current?.children[0]?.clientHeight??50,W=((j?.length??0)-(r==="multiple"?C.length??0:0))*y,w=a.useCallback(()=>{const e=m?.current?.parentElement;if(!e)return;const o=e.scrollTop,P=m.current.offsetTop,T=Math.floor((o-P)/y);B(T>=0?T:0)},[y]);a.useEffect(()=>{const e=m.current?.parentElement;if(e)return e.addEventListener("scroll",w),()=>e.removeEventListener("scroll",w)},[w]),a.useEffect(()=>{!h||b.autoFocus===!1||!N.current||setTimeout(()=>{N.current?.focus()},300)},[]);const q=a.useCallback(e=>{if(typeof g=="function")if(r==="multiple"){const o=[...p??[]];o.includes(e)?o.splice(o.indexOf(e),1):o.push(e),g(o)}else g(e),L()},[p]);return i.jsxs(i.Fragment,{children:[h&&i.jsx(E.Input,{ref:N,id:"search-input",wrapperClassName:d.clsx("dgsuikit:sticky dgsuikit:top-0 dgsuikit:pt-3 dgsuikit:right-0 dgsuikit:bg-white dgsuikit:z-10 dgsuikit:px-3",c?"dgsuikit:pb-2":"dgsuikit:pb-3",b?.wrapperClassName),placeholder:b?.placeholder??"جستجوی عنوان",value:k,onChange:e=>I(e.currentTarget.value),rightIcon:b?.rightIcon??i.jsx(_.IconSearch,{width:20,height:20}),...typeof t=="object"?t:{}}),c,r==="multiple"&&l&&C.length>0&&i.jsxs(i.Fragment,{children:[i.jsx("p",{className:"dgsuikit:font-p2-regular dgsuikit:text-gray-400 dgsuikit:px-3 dgsuikit:py-2",children:`${f}‌ی انتخاب شده`}),C.map(e=>i.jsx(A,{onClick:()=>q(e.value),option:e,optionCellClassName:d.clsx(O,v),...n},e.value))]}),i.jsxs(i.Fragment,{children:[r==="multiple"&&l&&i.jsx("p",{className:"dgsuikit:font-p2-regular dgsuikit:text-gray-400 dgsuikit:px-3 dgsuikit:py-2",children:f}),i.jsx("div",{ref:m,className:"dgsuikit:relative",style:{height:W},children:S?.map((e,o)=>i.jsx("div",{className:d.clsx("dgsuikit:absolute dgsuikit:w-full",O),style:{top:`${(x+o)*y}px`},children:i.jsx(A,{onClick:()=>q(e.value),option:e,...n})},e.value))}),!S?.length&&!C.length&&i.jsxs("div",{className:"dgsuikit:text-center dgsuikit:flex dgsuikit:flex-col dgsuikit:items-center dgsuikit:mt-2",children:[i.jsx("p",{className:"dgsuikit:text-gray-500 dgsuikit:font-p3-medium",children:F}),R&&i.jsx(V,{type:"button",className:"dgsuikit:mt-1",variant:"text",size:"small",onClick:()=>I(""),children:"پاک کردن"})]})]}),u]})};function J(n,s){if(!Array.isArray(n))return s.find(r=>r.value===n)?.label??""}const K=n=>{const{searchable:s=!0,value:r,options:u}=n,c=Array.isArray(r)&&r.length>0;function g(){return n.inputProps?.prefix?n.inputProps.prefix:c?r.map(l=>i.jsx($,{label:u.find(f=>f.value===l)?.label,clickable:!0,leftIcon:i.jsx(E.IconCloseSquare,{}),onClick:f=>{f.stopPropagation();const p=r.filter(v=>v!==l);n.onChange?.(p)}},l)):null}const t={...n};return t.dropdownType==="popover"&&!s&&(t.popoverClassName=d.clsx("dgsuikit:pt-3",t.popoverClassName)),t.dropdownType==="drawer"&&(t.drawerProps={...t.drawerProps,containerClassName:d.clsx(s?"dgsuikit:!pt-0":"dgsuikit:!pt-3",t.drawerProps?.containerClassName)}),t.customInput||(t.inputProps={...t.inputProps,value:J(r,u),prefix:g(),prefixClassName:c?d.clsx("dgsuikit:flex dgsuikit:items-center flex dgsuikit:flex-wrap dgsuikit:gap-2 dgsuikit:w-full",t.inputProps?.prefixClassName):t.inputProps?.prefixClassName,className:c?"dgsuikit:hidden":t.inputProps?.className,containerClassName:c?d.clsx("dgsuikit:items-baseline",t.inputProps?.containerClassName):t.inputProps?.containerClassName}),i.jsx(M.PickerWrapper,{...t,children:i.jsx(G,{...n})})};module.exports=K;
@@ -5,7 +5,7 @@ import { memo as U, useState as B, useRef as L, useMemo as S, useCallback as H,
5
5
  import { I as G } from "../../IconSearch-aShj2vmu.js";
6
6
  import J from "../Checkbox/index.mjs";
7
7
  import K from "../../Button/index.mjs";
8
- import { u as Q, P as X } from "../../PickerWrapper-CQAaW1cs.js";
8
+ import { u as Q, P as X } from "../../PickerWrapper-CZPsW03T.js";
9
9
  import Y from "../../Chip/index.mjs";
10
10
  import '../../assets/styles.css';/* empty css */
11
11
  function Z({
@@ -0,0 +1,4 @@
1
+ import { FC } from 'react';
2
+ declare const Body: FC;
3
+ export default Body;
4
+ //# sourceMappingURL=Body.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Body.d.ts","sourceRoot":"","sources":["../../../src/components/Form/Timepicker/Body.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,EAAY,MAAM,OAAO,CAAC;AAK1C,QAAA,MAAM,IAAI,EAAE,EAgDX,CAAC;AAEF,eAAe,IAAI,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { FC } from 'react';
2
+ declare const Footer: FC;
3
+ export default Footer;
4
+ //# sourceMappingURL=Footer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Footer.d.ts","sourceRoot":"","sources":["../../../src/components/Form/Timepicker/Footer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAIhC,QAAA,MAAM,MAAM,EAAE,EAuCb,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { FC } from 'react';
2
+ type GradientOverlayProps = {
3
+ position: 'top' | 'bottom';
4
+ };
5
+ declare const GradientOverlay: FC<GradientOverlayProps>;
6
+ export default GradientOverlay;
7
+ //# sourceMappingURL=GradientOverlay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GradientOverlay.d.ts","sourceRoot":"","sources":["../../../src/components/Form/Timepicker/GradientOverlay.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAEhC,KAAK,oBAAoB,GAAG;IAAE,QAAQ,EAAE,KAAK,GAAG,QAAQ,CAAA;CAAE,CAAC;AAE3D,QAAA,MAAM,eAAe,EAAE,EAAE,CAAC,oBAAoB,CAY7C,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { FC } from 'react';
2
+ import { ScrollWheelProps } from './types';
3
+ declare const ScrollWheel: FC<ScrollWheelProps>;
4
+ export default ScrollWheel;
5
+ //# sourceMappingURL=ScrollWheel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScrollWheel.d.ts","sourceRoot":"","sources":["../../../src/components/Form/Timepicker/ScrollWheel.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAGhC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,QAAA,MAAM,WAAW,EAAE,EAAE,CAAC,gBAAgB,CAmCrC,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { FC } from 'react';
2
+ import { TimeValue } from './types';
3
+ import { InputProps } from '../Input';
4
+ export interface ControlledTimeInputProps extends Omit<InputProps, 'onChange' | 'value'> {
5
+ value: TimeValue;
6
+ onChange: (value: TimeValue) => void;
7
+ }
8
+ declare const ControlledTimeInput: FC<ControlledTimeInputProps>;
9
+ export default ControlledTimeInput;
10
+ //# sourceMappingURL=TimeInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimeInput.d.ts","sourceRoot":"","sources":["../../../src/components/Form/Timepicker/TimeInput.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAuB,KAAK,EAAE,EAAsB,MAAM,OAAO,CAAC;AAGhF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,OAAc,EAAE,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AAElD,MAAM,WAAW,wBAAyB,SAAQ,IAAI,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC;IACtF,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;CACtC;AAED,QAAA,MAAM,mBAAmB,EAAE,EAAE,CAAC,wBAAwB,CAyGrD,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { FC } from 'react';
2
+ import { TimeInputsProps } from './types';
3
+ declare const TimeInputs: FC<TimeInputsProps>;
4
+ export default TimeInputs;
5
+ //# sourceMappingURL=TimeInputs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimeInputs.d.ts","sourceRoot":"","sources":["../../../src/components/Form/Timepicker/TimeInputs.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,QAAA,MAAM,UAAU,EAAE,EAAE,CAAC,eAAe,CAuEnC,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { FC } from 'react';
2
+ import { TimeScrollWheelsProps } from './types';
3
+ declare const TimeScrollWheels: FC<TimeScrollWheelsProps>;
4
+ export default TimeScrollWheels;
5
+ //# sourceMappingURL=TimeScrollWheels.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimeScrollWheels.d.ts","sourceRoot":"","sources":["../../../src/components/Form/Timepicker/TimeScrollWheels.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAErD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAErD,QAAA,MAAM,gBAAgB,EAAE,EAAE,CAAC,qBAAqB,CAiD/C,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const editableIndices: number[];
2
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/components/Form/Timepicker/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,UAAe,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { FC, PropsWithChildren } from 'react';
2
+ import { TimepickerProps } from './types';
3
+ interface ITimePickerContext {
4
+ timePickerProps: TimepickerProps;
5
+ }
6
+ interface ContextProviderProps {
7
+ timePickerProps: TimepickerProps;
8
+ }
9
+ export declare const TimePickerProvider: FC<PropsWithChildren<ContextProviderProps>>;
10
+ export declare const useTimePickerContext: () => ITimePickerContext;
11
+ export {};
12
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/components/Form/Timepicker/context.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,EAAE,EAAE,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;AACnF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,UAAU,kBAAkB;IAC1B,eAAe,EAAE,eAAe,CAAC;CAClC;AAED,UAAU,oBAAoB;IAC5B,eAAe,EAAE,eAAe,CAAC;CAClC;AASD,eAAO,MAAM,kBAAkB,EAAE,EAAE,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,CAY1E,CAAC;AAEF,eAAO,MAAM,oBAAoB,0BAAsC,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare const useCaret: () => {
2
+ inputRef: import('react').RefObject<HTMLInputElement | null>;
3
+ setCaretToEditable: (pos: number, forward?: boolean) => void;
4
+ };
5
+ //# sourceMappingURL=useCaret.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCaret.d.ts","sourceRoot":"","sources":["../../../../src/components/Form/Timepicker/hooks/useCaret.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,QAAQ;;8BAGc,MAAM;CAUxC,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare function useScrollWheel(items: number[], defaultValue: number | null | undefined, onValueChange: (val: number) => void): {
2
+ containerRef: import('react').RefObject<HTMLDivElement | null>;
3
+ itemRefs: import('react').RefObject<(HTMLDivElement | null)[]>;
4
+ };
5
+ //# sourceMappingURL=useScrollWheel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useScrollWheel.d.ts","sourceRoot":"","sources":["../../../../src/components/Form/Timepicker/hooks/useScrollWheel.ts"],"names":[],"mappings":"AAGA,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EAAE,EACf,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACvC,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI;;;EAsCrC"}
@@ -0,0 +1 @@
1
+ "use strict";const g=require("react/jsx-runtime"),x=require("react"),D=require("../../DateAndTimePickerFooter-Dikf0ZUx.cjs"),y=require("../../index-BfuaA-Ji.cjs"),j=require("../../clsx-C11secjj.cjs"),A=require("../../index-DmSuyV3m.cjs"),H=x.createContext({timePickerProps:{value:new Date,onChange:()=>{}}}),$=t=>{const{children:e,timePickerProps:n}=t;return g.jsx(H.Provider,{value:{timePickerProps:n},children:e})},V=()=>x.useContext(H),S=[0,1,3,4],B=t=>t[0]?.getBoundingClientRect().height??64,E=(t,e,n,r,s="instant")=>{if(!t)return;const i=e.indexOf(n);i!==-1&&t.scrollTo({top:i*r(),behavior:s})},I=t=>{if(t.length!==2)return!1;const e=Number(t);return!Number.isNaN(e)&&e>=0&&e<=23},F=t=>{if(t.length!==2)return!1;const e=Number(t);return!Number.isNaN(e)&&e>=0&&e<=59},R=t=>{if(!t)return["-","-",":","-","-"];const e=t.hour==null?"--":String(t.hour).padStart(2,"0"),n=t.minute==null?"--":String(t.minute).padStart(2,"0");return[e.charAt(0)??"-",e.charAt(1)??"-",":",n.charAt(0)??"-",n.charAt(1)??"-"]},C=t=>{const e=`${t[0]??"-"}${t[1]??"-"}`,n=`${t[3]}${t[4]}`;return{hour:!e.includes("-")&&I(e)?Number(e):null,minute:!n.includes("-")&&F(n)?Number(n):null}},P=(t,e=!0)=>{const n=S.indexOf(t);if(n===-1)return e?S[0]:S[S.length-1]??0;const r=e?n+1:n-1;return r<0?S[0]:r>=S.length?S[S.length-1]??0:S[r]??0},q=(t,e,n)=>e===0?/[0-2]/.test(t):e===1?+`${n[0]==="-"?"0":n[0]}${t}`<=23:e===3?/[0-5]/.test(t):!0,W=()=>{const t=x.useRef(null);return{inputRef:t,setCaretToEditable:(n,r=!0)=>{const s=t.current;if(!s)return;const i=S.includes(n)?n:P(n,r);typeof i=="number"&&s.setSelectionRange(i,i+1)}}},K=t=>{const{value:e={hour:null,minute:null},onChange:n,disabled:r=!1,className:s,...i}=t,{inputRef:m,setCaretToEditable:l}=W(),[a,u]=x.useState(()=>R(e)),o=x.useRef(e);x.useEffect(()=>{(e.hour!==o.current.hour||e.minute!==o.current.minute)&&(o.current=e,u(R(e)))},[e]);const p=()=>{const f=m.current;if(!f)return;const h=f.selectionStart??0;S.includes(h)||l(h,!0)},b=(f,h)=>{const k=f==="ArrowRight";l(P(h,k),k)},d=(f,h)=>{const k=S.includes(h)?h:P(h,!1),c=[...a];c[k]="-",u(c),n(C(c));const w=f==="Backspace"?P(k,!1):P(k,!0);setTimeout(()=>l(w,f!=="Backspace"),0)},N=(f,h)=>{const k=S.includes(h)?h:P(h,!0),c=[...a];q(f,k,c)&&(c[k]=f,u(c),n(C(c)),setTimeout(()=>l(P(k,!0),!0),0))},T=f=>{if(f.preventDefault(),r)return;const h=m.current;if(!h)return;const k=h.selectionStart??0;if(["ArrowLeft","ArrowRight"].includes(f.key)){b(f.key,k);return}if(["Backspace","Delete"].includes(f.key)){d(f.key,k);return}/^\d$/.test(f.key)&&N(f.key,k)};return g.jsx(A.Input,{ref:m,dir:"ltr",className:s,value:a.join(""),onKeyDown:T,onFocus:p,disabled:r,inputMode:"numeric",pattern:"[0-9:]*",...i})},L=({timePickerProps:t,setActivePart:e,handleSingleTimeChange:n,handleRangeTimeChange:r})=>{const{acceptRange:s,value:i}=t,m=a=>({hour:a?.getHours()??0,minute:a?.getMinutes()??0}),l=s?[{key:"start",id:"from-time",label:"از ساعت",value:m(i?.start),className:"dgsuikit:w-1/2"},{key:"end",id:"to-time",label:"تا ساعت",value:m(i?.end),className:"dgsuikit:w-1/2"}]:[{key:"single",id:"time",label:"ساعت",value:m(i),className:void 0}];return g.jsx("div",{className:j.clsx(s&&"dgsuikit:flex dgsuikit:justify-between dgsuikit:gap-4 dgsuikit:mb-4"),children:l.map(({key:a,id:u,label:o,value:p,className:b})=>g.jsx(K,{id:u,value:p,labelContent:o,className:b,onFocus:()=>{s&&a!=="single"&&e(a)},onChange:d=>{typeof d.hour=="number"&&typeof d.minute=="number"&&(s&&a!=="single"?r(a,d.hour,d.minute):n(d.hour,d.minute))}},u))})},M=({position:t})=>g.jsx("div",{className:j.clsx("dgsuikit:absolute dgsuikit:left-0 dgsuikit:right-0 dgsuikit:h-12 dgsuikit:pointer-events-none","dgsuikit:from-[rgba(255,255,255,0.54)] dgsuikit:to-[rgba(255,255,255,0.90)]",t==="top"?"dgsuikit:bg-gradient-to-t dgsuikit:top-0":"dgsuikit:bg-gradient-to-b dgsuikit:bottom-0")});function O(t,e,n){const r=x.useRef(null),s=x.useRef([]),i=x.useRef(null),m=()=>B(s.current),l=(u=e??0,o="smooth")=>{E(r.current,t,u,m,o),i.current=u},a=u=>{const o=Math.round(u.scrollTop/m()),p=t[Math.max(0,Math.min(o,t.length-1))];p!=null&&p!==i.current&&(i.current=p,n(p))};return x.useEffect(()=>{const u=r.current;if(!u)return;const o=()=>a(u);return u.addEventListener("scroll",o),()=>u.removeEventListener("scroll",o)},[t]),x.useEffect(()=>{e!=null&&l()},[e]),{containerRef:r,itemRefs:s}}const v=t=>{const{items:e,defaultValue:n,onValueChange:r,className:s,formatValue:i=a=>String(a).padStart(2,"0")}=t,{containerRef:m,itemRefs:l}=O(e,n,r);return g.jsxs("div",{className:"dgsuikit:relative dgsuikit:h-28 dgsuikit:w-full",children:[g.jsx("div",{ref:m,className:j.clsx("dgsuikit:h-28 dgsuikit:w-full dgsuikit:py-10 dgsuikit:overflow-y-scroll dgsuikit:snap-y dgsuikit:snap-mandatory dgsuikit:scroll-smooth dgsuikit:no-scrollbar",s),children:e.map((a,u)=>g.jsx("div",{ref:o=>{l.current[u]=o},className:"dgsuikit:h-10 dgsuikit:flex dgsuikit:items-center dgsuikit:justify-center dgsuikit:snap-center dgsuikit:font-p1-regular",children:i(a)},a))}),g.jsx(M,{position:"top"}),g.jsx(M,{position:"bottom"})]})},_=t=>{const{timePickerProps:e,activePart:n,handleSingleTimeChange:r,handleRangeTimeChange:s}=t,{minuteStep:i=1,acceptRange:m,value:l}=e,a=Array.from({length:24},(c,w)=>w),u=Array.from({length:60},(c,w)=>w).filter(c=>c%i===0),o=c=>c.toString().padStart(2,"0"),p=c=>c.toString().padStart(2,"0"),b=c=>{if(m){const w=n==="start"?l?.start:l?.end;return w?w[c]():0}return l?l[c]():0},d=b("getHours"),N=b("getMinutes"),[T,f]=x.useState(N),[h,k]=x.useState(d);return x.useEffect(()=>{m?s(n,h,T):r(h,T)},[h,T]),g.jsxs("div",{className:"dgsuikit:flex dgsuikit:mt-2 dgsuikit:w-full dgsuikit:justify-center",children:[g.jsx(v,{items:u,defaultValue:N,onValueChange:c=>f(c),formatValue:p}),g.jsx(v,{items:a,defaultValue:d,onValueChange:c=>k(c),formatValue:o})]})},G=()=>{const{timePickerProps:t}=V(),{acceptRange:e,value:n,onChange:r}=t,[s,i]=x.useState("start"),m=(o,p,b)=>{const d=new Date(o);return d.setHours(p),d.setMinutes(b),d.setSeconds(0),d.setMilliseconds(0),d},l=y.debounce((o,p)=>{!n||e||n.getHours()===o&&n.getMinutes()===p||r(m(n,o,p))},200),a=y.debounce((o,p,b)=>{if(!n||!e)return;const d=new Date(n[o]??new Date);d.getHours()===p&&d.getMinutes()===b||r({...n,[o]:m(d,p,b)})},200),u={timePickerProps:t,handleSingleTimeChange:l,handleRangeTimeChange:a};return g.jsxs("div",{dir:"rtl",className:"dgsuikit:p-4 dgsuikit:ss02",children:[g.jsx(L,{setActivePart:i,...u}),g.jsx(_,{activePart:s,...u})]})},z=()=>{const{timePickerProps:t}=V(),{showSubmitButton:e=!0,showNowButton:n=!0,onSubmit:r,onChange:s,acceptRange:i}=t,m=()=>{if(i){const l=new Date;l.setHours(l.getHours()+1),s({start:new Date,end:l})}else s(new Date)};return g.jsx(D.DateAndTimePickerFooter,{...e&&{primaryButton:{onClick:r,children:"اعمال"}},...n&&{secondaryButton:{variant:"text",onClick:m,children:"رفتن به اکنون"}},className:"dgsuikit:p-4"})};function J(t){if(!t)return"";if(t instanceof Date){const e=t.getHours().toString().padStart(2,"0"),n=t.getMinutes().toString().padStart(2,"0");return`${e}:${n}`}if(t.start&&t.end){const e=t.start.getHours().toString().padStart(2,"0"),n=t.start.getMinutes().toString().padStart(2,"0"),r=t.end.getHours().toString().padStart(2,"0"),s=t.end.getMinutes().toString().padStart(2,"0");return`${e}:${n} - ${r}:${s}`}return""}const Q=t=>{const{showSubmitButton:e=!0,showNowButton:n=!0}=t,{Wrapper:r,wrapperProps:s}=D.useDateAndTimePickerWrapper({props:t,standaloneMode:"time",formatValue:J});return g.jsx(r,{...s,children:g.jsxs($,{timePickerProps:t,children:[g.jsx(G,{}),(e||n)&&g.jsx(z,{})]})})};module.exports=Q;
@@ -0,0 +1,5 @@
1
+ import { FC } from 'react';
2
+ import { TimepickerProps } from './types';
3
+ declare const TimePicker: FC<TimepickerProps>;
4
+ export default TimePicker;
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Form/Timepicker/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAKhC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAqB/C,QAAA,MAAM,UAAU,EAAE,EAAE,CAAC,eAAe,CAiBnC,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -0,0 +1,364 @@
1
+ import { jsx as p, jsxs as x } from "react/jsx-runtime";
2
+ import I, { createContext as E, useContext as j, useRef as y, useState as C, useEffect as M } from "react";
3
+ import { D as F, u as W } from "../../DateAndTimePickerFooter-ClSJWVd3.js";
4
+ import { d as v } from "../../index-CzwAoGdL.js";
5
+ import { c as R } from "../../clsx-OuTLNxxd.js";
6
+ import { I as K } from "../../index-ChP5zdaB.js";
7
+ const $ = E({
8
+ timePickerProps: {
9
+ value: /* @__PURE__ */ new Date(),
10
+ onChange: () => {
11
+ }
12
+ }
13
+ }), L = (t) => {
14
+ const { children: e, timePickerProps: n } = t;
15
+ return /* @__PURE__ */ p(
16
+ $.Provider,
17
+ {
18
+ value: {
19
+ timePickerProps: n
20
+ },
21
+ children: e
22
+ }
23
+ );
24
+ }, B = () => j($), b = [0, 1, 3, 4], O = (t) => t[0]?.getBoundingClientRect().height ?? 64, _ = (t, e, n, r, i = "instant") => {
25
+ if (!t) return;
26
+ const s = e.indexOf(n);
27
+ s !== -1 && t.scrollTo({
28
+ top: s * r(),
29
+ behavior: i
30
+ });
31
+ }, G = (t) => {
32
+ if (t.length !== 2) return !1;
33
+ const e = Number(t);
34
+ return !Number.isNaN(e) && e >= 0 && e <= 23;
35
+ }, q = (t) => {
36
+ if (t.length !== 2) return !1;
37
+ const e = Number(t);
38
+ return !Number.isNaN(e) && e >= 0 && e <= 59;
39
+ }, D = (t) => {
40
+ if (!t) return ["-", "-", ":", "-", "-"];
41
+ const e = t.hour == null ? "--" : String(t.hour).padStart(2, "0"), n = t.minute == null ? "--" : String(t.minute).padStart(2, "0");
42
+ return [e.charAt(0) ?? "-", e.charAt(1) ?? "-", ":", n.charAt(0) ?? "-", n.charAt(1) ?? "-"];
43
+ }, H = (t) => {
44
+ const e = `${t[0] ?? "-"}${t[1] ?? "-"}`, n = `${t[3]}${t[4]}`;
45
+ return {
46
+ hour: !e.includes("-") && G(e) ? Number(e) : null,
47
+ minute: !n.includes("-") && q(n) ? Number(n) : null
48
+ };
49
+ }, N = (t, e = !0) => {
50
+ const n = b.indexOf(t);
51
+ if (n === -1)
52
+ return e ? b[0] : b[b.length - 1] ?? 0;
53
+ const r = e ? n + 1 : n - 1;
54
+ return r < 0 ? b[0] : r >= b.length ? b[b.length - 1] ?? 0 : b[r] ?? 0;
55
+ }, z = (t, e, n) => e === 0 ? /[0-2]/.test(t) : e === 1 ? +`${n[0] === "-" ? "0" : n[0]}${t}` <= 23 : e === 3 ? /[0-5]/.test(t) : !0, J = () => {
56
+ const t = y(null);
57
+ return { inputRef: t, setCaretToEditable: (n, r = !0) => {
58
+ const i = t.current;
59
+ if (!i) return;
60
+ const s = b.includes(n) ? n : N(n, r);
61
+ typeof s == "number" && i.setSelectionRange(s, s + 1);
62
+ } };
63
+ }, Q = (t) => {
64
+ const {
65
+ value: e = { hour: null, minute: null },
66
+ onChange: n,
67
+ disabled: r = !1,
68
+ className: i,
69
+ ...s
70
+ } = t, { inputRef: m, setCaretToEditable: l } = J(), [c, u] = C(() => D(e)), o = I.useRef(e);
71
+ M(() => {
72
+ (e.hour !== o.current.hour || e.minute !== o.current.minute) && (o.current = e, u(D(e)));
73
+ }, [e]);
74
+ const h = () => {
75
+ const g = m.current;
76
+ if (!g) return;
77
+ const f = g.selectionStart ?? 0;
78
+ b.includes(f) || l(f, !0);
79
+ }, S = (g, f) => {
80
+ const k = g === "ArrowRight";
81
+ l(N(f, k), k);
82
+ }, d = (g, f) => {
83
+ const k = b.includes(f) ? f : N(f, !1), a = [...c];
84
+ a[k] = "-", u(a), n(H(a));
85
+ const w = g === "Backspace" ? N(k, !1) : N(k, !0);
86
+ setTimeout(() => l(w, g !== "Backspace"), 0);
87
+ }, T = (g, f) => {
88
+ const k = b.includes(f) ? f : N(f, !0), a = [...c];
89
+ z(g, k, a) && (a[k] = g, u(a), n(H(a)), setTimeout(() => l(N(k, !0), !0), 0));
90
+ }, P = (g) => {
91
+ if (g.preventDefault(), r) return;
92
+ const f = m.current;
93
+ if (!f) return;
94
+ const k = f.selectionStart ?? 0;
95
+ if (["ArrowLeft", "ArrowRight"].includes(g.key)) {
96
+ S(g.key, k);
97
+ return;
98
+ }
99
+ if (["Backspace", "Delete"].includes(g.key)) {
100
+ d(g.key, k);
101
+ return;
102
+ }
103
+ /^\d$/.test(g.key) && T(g.key, k);
104
+ };
105
+ return /* @__PURE__ */ p(
106
+ K,
107
+ {
108
+ ref: m,
109
+ dir: "ltr",
110
+ className: i,
111
+ value: c.join(""),
112
+ onKeyDown: P,
113
+ onFocus: h,
114
+ disabled: r,
115
+ inputMode: "numeric",
116
+ pattern: "[0-9:]*",
117
+ ...s
118
+ }
119
+ );
120
+ }, U = ({
121
+ timePickerProps: t,
122
+ setActivePart: e,
123
+ handleSingleTimeChange: n,
124
+ handleRangeTimeChange: r
125
+ }) => {
126
+ const { acceptRange: i, value: s } = t, m = (c) => ({
127
+ hour: c?.getHours() ?? 0,
128
+ minute: c?.getMinutes() ?? 0
129
+ }), l = i ? [
130
+ {
131
+ key: "start",
132
+ id: "from-time",
133
+ label: "از ساعت",
134
+ value: m(s?.start),
135
+ className: "dgsuikit:w-1/2"
136
+ },
137
+ {
138
+ key: "end",
139
+ id: "to-time",
140
+ label: "تا ساعت",
141
+ value: m(s?.end),
142
+ className: "dgsuikit:w-1/2"
143
+ }
144
+ ] : [
145
+ {
146
+ key: "single",
147
+ id: "time",
148
+ label: "ساعت",
149
+ value: m(s),
150
+ className: void 0
151
+ }
152
+ ];
153
+ return /* @__PURE__ */ p(
154
+ "div",
155
+ {
156
+ className: R(
157
+ i && "dgsuikit:flex dgsuikit:justify-between dgsuikit:gap-4 dgsuikit:mb-4"
158
+ ),
159
+ children: l.map(({ key: c, id: u, label: o, value: h, className: S }) => /* @__PURE__ */ p(
160
+ Q,
161
+ {
162
+ id: u,
163
+ value: h,
164
+ labelContent: o,
165
+ className: S,
166
+ onFocus: () => {
167
+ i && c !== "single" && e(c);
168
+ },
169
+ onChange: (d) => {
170
+ typeof d.hour == "number" && typeof d.minute == "number" && (i && c !== "single" ? r(c, d.hour, d.minute) : n(d.hour, d.minute));
171
+ }
172
+ },
173
+ u
174
+ ))
175
+ }
176
+ );
177
+ }, V = ({ position: t }) => /* @__PURE__ */ p(
178
+ "div",
179
+ {
180
+ className: R(
181
+ "dgsuikit:absolute dgsuikit:left-0 dgsuikit:right-0 dgsuikit:h-12 dgsuikit:pointer-events-none",
182
+ "dgsuikit:from-[rgba(255,255,255,0.54)] dgsuikit:to-[rgba(255,255,255,0.90)]",
183
+ t === "top" ? "dgsuikit:bg-gradient-to-t dgsuikit:top-0" : "dgsuikit:bg-gradient-to-b dgsuikit:bottom-0"
184
+ )
185
+ }
186
+ );
187
+ function X(t, e, n) {
188
+ const r = y(null), i = y([]), s = y(null), m = () => O(i.current), l = (u = e ?? 0, o = "smooth") => {
189
+ _(r.current, t, u, m, o), s.current = u;
190
+ }, c = (u) => {
191
+ const o = Math.round(u.scrollTop / m()), h = t[Math.max(0, Math.min(o, t.length - 1))];
192
+ h != null && h !== s.current && (s.current = h, n(h));
193
+ };
194
+ return M(() => {
195
+ const u = r.current;
196
+ if (!u) return;
197
+ const o = () => c(u);
198
+ return u.addEventListener("scroll", o), () => u.removeEventListener("scroll", o);
199
+ }, [t]), M(() => {
200
+ e != null && l();
201
+ }, [e]), { containerRef: r, itemRefs: i };
202
+ }
203
+ const A = (t) => {
204
+ const {
205
+ items: e,
206
+ defaultValue: n,
207
+ onValueChange: r,
208
+ className: i,
209
+ formatValue: s = (c) => String(c).padStart(2, "0")
210
+ } = t, { containerRef: m, itemRefs: l } = X(e, n, r);
211
+ return /* @__PURE__ */ x("div", { className: "dgsuikit:relative dgsuikit:h-28 dgsuikit:w-full", children: [
212
+ /* @__PURE__ */ p(
213
+ "div",
214
+ {
215
+ ref: m,
216
+ className: R(
217
+ "dgsuikit:h-28 dgsuikit:w-full dgsuikit:py-10 dgsuikit:overflow-y-scroll dgsuikit:snap-y dgsuikit:snap-mandatory dgsuikit:scroll-smooth dgsuikit:no-scrollbar",
218
+ i
219
+ ),
220
+ children: e.map((c, u) => /* @__PURE__ */ p(
221
+ "div",
222
+ {
223
+ ref: (o) => {
224
+ l.current[u] = o;
225
+ },
226
+ className: "dgsuikit:h-10 dgsuikit:flex dgsuikit:items-center dgsuikit:justify-center dgsuikit:snap-center dgsuikit:font-p1-regular",
227
+ children: s(c)
228
+ },
229
+ c
230
+ ))
231
+ }
232
+ ),
233
+ /* @__PURE__ */ p(V, { position: "top" }),
234
+ /* @__PURE__ */ p(V, { position: "bottom" })
235
+ ] });
236
+ }, Y = (t) => {
237
+ const { timePickerProps: e, activePart: n, handleSingleTimeChange: r, handleRangeTimeChange: i } = t, { minuteStep: s = 1, acceptRange: m, value: l } = e, c = Array.from({ length: 24 }, (a, w) => w), u = Array.from({ length: 60 }, (a, w) => w).filter(
238
+ (a) => a % s === 0
239
+ ), o = (a) => a.toString().padStart(2, "0"), h = (a) => a.toString().padStart(2, "0"), S = (a) => {
240
+ if (m) {
241
+ const w = n === "start" ? l?.start : l?.end;
242
+ return w ? w[a]() : 0;
243
+ }
244
+ return l ? l[a]() : 0;
245
+ }, d = S("getHours"), T = S("getMinutes"), [P, g] = C(T), [f, k] = C(d);
246
+ return M(() => {
247
+ m ? i(n, f, P) : r(f, P);
248
+ }, [f, P]), /* @__PURE__ */ x("div", { className: "dgsuikit:flex dgsuikit:mt-2 dgsuikit:w-full dgsuikit:justify-center", children: [
249
+ /* @__PURE__ */ p(
250
+ A,
251
+ {
252
+ items: u,
253
+ defaultValue: T,
254
+ onValueChange: (a) => g(a),
255
+ formatValue: h
256
+ }
257
+ ),
258
+ /* @__PURE__ */ p(
259
+ A,
260
+ {
261
+ items: c,
262
+ defaultValue: d,
263
+ onValueChange: (a) => k(a),
264
+ formatValue: o
265
+ }
266
+ )
267
+ ] });
268
+ }, Z = () => {
269
+ const { timePickerProps: t } = B(), { acceptRange: e, value: n, onChange: r } = t, [i, s] = C("start"), m = (o, h, S) => {
270
+ const d = new Date(o);
271
+ return d.setHours(h), d.setMinutes(S), d.setSeconds(0), d.setMilliseconds(0), d;
272
+ }, l = v((o, h) => {
273
+ !n || e || n.getHours() === o && n.getMinutes() === h || r(m(n, o, h));
274
+ }, 200), c = v((o, h, S) => {
275
+ if (!n || !e) return;
276
+ const d = new Date(n[o] ?? /* @__PURE__ */ new Date());
277
+ d.getHours() === h && d.getMinutes() === S || r({
278
+ ...n,
279
+ [o]: m(d, h, S)
280
+ });
281
+ }, 200), u = { timePickerProps: t, handleSingleTimeChange: l, handleRangeTimeChange: c };
282
+ return /* @__PURE__ */ x(
283
+ "div",
284
+ {
285
+ dir: "rtl",
286
+ className: "dgsuikit:p-4 dgsuikit:ss02",
287
+ children: [
288
+ /* @__PURE__ */ p(
289
+ U,
290
+ {
291
+ setActivePart: s,
292
+ ...u
293
+ }
294
+ ),
295
+ /* @__PURE__ */ p(
296
+ Y,
297
+ {
298
+ activePart: i,
299
+ ...u
300
+ }
301
+ )
302
+ ]
303
+ }
304
+ );
305
+ }, tt = () => {
306
+ const { timePickerProps: t } = B(), {
307
+ showSubmitButton: e = !0,
308
+ showNowButton: n = !0,
309
+ onSubmit: r,
310
+ onChange: i,
311
+ acceptRange: s
312
+ } = t;
313
+ return /* @__PURE__ */ p(
314
+ F,
315
+ {
316
+ ...e && {
317
+ primaryButton: {
318
+ onClick: r,
319
+ children: "اعمال"
320
+ }
321
+ },
322
+ ...n && {
323
+ secondaryButton: {
324
+ variant: "text",
325
+ onClick: () => {
326
+ if (s) {
327
+ const l = /* @__PURE__ */ new Date();
328
+ l.setHours(l.getHours() + 1), i({ start: /* @__PURE__ */ new Date(), end: l });
329
+ } else
330
+ i(/* @__PURE__ */ new Date());
331
+ },
332
+ children: "رفتن به اکنون"
333
+ }
334
+ },
335
+ className: "dgsuikit:p-4"
336
+ }
337
+ );
338
+ };
339
+ function et(t) {
340
+ if (!t) return "";
341
+ if (t instanceof Date) {
342
+ const e = t.getHours().toString().padStart(2, "0"), n = t.getMinutes().toString().padStart(2, "0");
343
+ return `${e}:${n}`;
344
+ }
345
+ if (t.start && t.end) {
346
+ const e = t.start.getHours().toString().padStart(2, "0"), n = t.start.getMinutes().toString().padStart(2, "0"), r = t.end.getHours().toString().padStart(2, "0"), i = t.end.getMinutes().toString().padStart(2, "0");
347
+ return `${e}:${n} - ${r}:${i}`;
348
+ }
349
+ return "";
350
+ }
351
+ const at = (t) => {
352
+ const { showSubmitButton: e = !0, showNowButton: n = !0 } = t, { Wrapper: r, wrapperProps: i } = W({
353
+ props: t,
354
+ standaloneMode: "time",
355
+ formatValue: et
356
+ });
357
+ return /* @__PURE__ */ p(r, { ...i, children: /* @__PURE__ */ x(L, { timePickerProps: t, children: [
358
+ /* @__PURE__ */ p(Z, {}),
359
+ (e || n) && /* @__PURE__ */ p(tt, {})
360
+ ] }) });
361
+ };
362
+ export {
363
+ at as default
364
+ };
@@ -0,0 +1,44 @@
1
+ import { HasOrNotRange, HasOrNotSubmitButton } from '../../../utils/types/DateAndTimePicker';
2
+ import { PickerWrapperProps } from '../Wrappers/PickerWrapper/type';
3
+ export type TimeValue = {
4
+ hour: number | null;
5
+ minute: number | null;
6
+ };
7
+ type TimepickerPropsBase = PickerWrapperProps & {
8
+ showSubmitButton?: boolean;
9
+ showNowButton?: boolean;
10
+ mode?: 'input' | 'time';
11
+ acceptRange?: boolean;
12
+ minuteStep?: number;
13
+ };
14
+ export type TimepickerProps = TimepickerPropsBase & HasOrNotSubmitButton & HasOrNotRange;
15
+ export interface ScrollWheelProps {
16
+ items: number[];
17
+ defaultValue: number;
18
+ onValueChange: (value: number) => void;
19
+ className?: string;
20
+ formatValue?: (value: number) => string;
21
+ }
22
+ export interface TimeInputProps {
23
+ value: Date | null;
24
+ onChange: (time: Date | null) => void;
25
+ placeholder?: string;
26
+ disabled?: boolean;
27
+ className?: string;
28
+ isRange?: boolean;
29
+ isStartTime?: boolean;
30
+ }
31
+ type RangePart = 'start' | 'end';
32
+ interface WithTimeHandlers {
33
+ timePickerProps: TimepickerProps;
34
+ handleSingleTimeChange: (hour: number, minute: number) => void;
35
+ handleRangeTimeChange: (part: RangePart, hour: number, minute: number) => void;
36
+ }
37
+ export interface TimeScrollWheelsProps extends WithTimeHandlers {
38
+ activePart: RangePart;
39
+ }
40
+ export interface TimeInputsProps extends WithTimeHandlers {
41
+ setActivePart: (part: RangePart) => void;
42
+ }
43
+ export {};
44
+ //# sourceMappingURL=types.d.ts.map