@dgshahr/ui-kit 1.7.1 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) 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 +369 -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/Tooltip/Content.d.ts.map +1 -1
  56. package/dist/Tooltip/index.cjs +1 -1
  57. package/dist/Tooltip/index.d.ts +1 -1
  58. package/dist/Tooltip/index.d.ts.map +1 -1
  59. package/dist/Tooltip/index.mjs +21 -17
  60. package/dist/assets/styles.css +1 -1
  61. package/dist/index.cjs +1 -1
  62. package/dist/index.d.ts +1 -0
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/index.mjs +46 -44
  65. package/package.json +7 -1
  66. package/dist/PickerWrapper-DpLS0Ogo.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":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAY,MAAM,OAAO,CAAC;AAK1C,QAAA,MAAM,IAAI,EAAE,EA+CX,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,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAErD,QAAA,MAAM,gBAAgB,EAAE,EAAE,CAAC,qBAAqB,CAgE/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":"AAIA,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EAAE,EACf,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACvC,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI;;;EA4CrC"}
@@ -0,0 +1 @@
1
+ "use strict";const g=require("react/jsx-runtime"),b=require("react"),y=require("../../DateAndTimePickerFooter-Dikf0ZUx.cjs"),T=require("../../clsx-C11secjj.cjs"),V=require("../../index-DmSuyV3m.cjs"),A=require("../../index-BfuaA-Ji.cjs"),D=b.createContext({timePickerProps:{value:new Date,onChange:()=>{}}}),$=t=>{const{children:e,timePickerProps:n}=t;return g.jsx(D.Provider,{value:{timePickerProps:n},children:e})},H=()=>b.useContext(D),x=[0,1,3,4],B=t=>t[0]?.getBoundingClientRect().height??64,E=(t,e,n,r,o="instant")=>{if(!t)return;const c=e.indexOf(n);c!==-1&&t.scrollTo({top:c*r(),behavior:o})},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},N=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)??"-"]},R=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}},w=(t,e=!0)=>{const n=x.indexOf(t);if(n===-1)return e?x[0]:x[x.length-1]??0;const r=e?n+1:n-1;return r<0?x[0]:r>=x.length?x[x.length-1]??0:x[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=b.useRef(null);return{inputRef:t,setCaretToEditable:(n,r=!0)=>{const o=t.current;if(!o)return;const c=x.includes(n)?n:w(n,r);typeof c=="number"&&o.setSelectionRange(c,c+1)}}},K=t=>{const{value:e={hour:null,minute:null},onChange:n,disabled:r=!1,className:o,...c}=t,{inputRef:l,setCaretToEditable:u}=W(),[a,k]=b.useState(()=>N(e)),i=b.useRef(e);b.useEffect(()=>{(e.hour!==i.current.hour||e.minute!==i.current.minute)&&(i.current=e,k(N(e)))},[e]);const f=()=>{const h=l.current;if(!h)return;const s=h.selectionStart??0;x.includes(s)||u(s,!0)},p=(h,s)=>{const d=h==="ArrowRight";u(w(s,d),d)},m=(h,s)=>{const d=x.includes(s)?s:w(s,!1),S=[...a];S[d]="-",k(S),n(R(S));const v=h==="Backspace"?w(d,!1):w(d,!0);setTimeout(()=>u(v,h!=="Backspace"),0)},C=(h,s)=>{const d=x.includes(s)?s:w(s,!0),S=[...a];q(h,d,S)&&(S[d]=h,k(S),n(R(S)),setTimeout(()=>u(w(d,!0),!0),0))},P=h=>{if(h.preventDefault(),r)return;const s=l.current;if(!s)return;const d=s.selectionStart??0;if(["ArrowLeft","ArrowRight"].includes(h.key)){p(h.key,d);return}if(["Backspace","Delete"].includes(h.key)){m(h.key,d);return}/^\d$/.test(h.key)&&C(h.key,d)};return g.jsx(V.Input,{ref:l,dir:"ltr",className:o,value:a.join(""),onKeyDown:P,onFocus:f,disabled:r,inputMode:"numeric",pattern:"[0-9:]*",...c})},O=({timePickerProps:t,setActivePart:e,handleSingleTimeChange:n,handleRangeTimeChange:r})=>{const{acceptRange:o,value:c}=t,l=a=>({hour:a?.getHours()??0,minute:a?.getMinutes()??0}),u=o?[{key:"start",id:"from-time",label:"از ساعت",value:l(c?.start),className:"dgsuikit:w-1/2"},{key:"end",id:"to-time",label:"تا ساعت",value:l(c?.end),className:"dgsuikit:w-1/2"}]:[{key:"single",id:"time",label:"ساعت",value:l(c),className:void 0}];return g.jsx("div",{className:T.clsx(o&&"dgsuikit:flex dgsuikit:justify-between dgsuikit:gap-4 dgsuikit:mb-4"),children:u.map(({key:a,id:k,label:i,value:f,className:p})=>g.jsx(K,{id:k,value:f,labelContent:i,className:p,onFocus:()=>{o&&a!=="single"&&e(a)},onChange:m=>{typeof m.hour=="number"&&typeof m.minute=="number"&&(o&&a!=="single"?r(a,m.hour,m.minute):n(m.hour,m.minute))}},k))})},j=({position:t})=>g.jsx("div",{className:T.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 L(t,e,n){const r=b.useRef(null),o=b.useRef([]),c=b.useRef(null),l=()=>B(o.current),u=(i=e??0,f="smooth")=>{E(r.current,t,i,l,f),c.current=i},a=A.debounce(i=>{i!==c.current&&(c.current=i,n(i))},200),k=i=>{const f=Math.round(i.scrollTop/l()),p=t[Math.max(0,Math.min(f,t.length-1))];p!=null&&a(p)};return b.useEffect(()=>{const i=r.current;if(!i)return;const f=()=>k(i);return i.addEventListener("scroll",f),()=>i.removeEventListener("scroll",f)},[t,a]),b.useEffect(()=>{e!=null&&u()},[e]),{containerRef:r,itemRefs:o}}const M=t=>{const{items:e,defaultValue:n,onValueChange:r,className:o,formatValue:c=a=>String(a).padStart(2,"0")}=t,{containerRef:l,itemRefs:u}=L(e,n,r);return g.jsxs("div",{className:"dgsuikit:relative dgsuikit:h-28 dgsuikit:w-full",children:[g.jsx("div",{ref:l,className:T.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",o),children:e.map((a,k)=>g.jsx("div",{ref:i=>{u.current[k]=i},className:"dgsuikit:h-10 dgsuikit:flex dgsuikit:items-center dgsuikit:justify-center dgsuikit:snap-center dgsuikit:font-p1-regular",children:c(a)},a))}),g.jsx(j,{position:"top"}),g.jsx(j,{position:"bottom"})]})},_=t=>{const{timePickerProps:e,activePart:n,handleSingleTimeChange:r,handleRangeTimeChange:o}=t,{minuteStep:c=1,acceptRange:l,value:u}=e,a=Array.from({length:24},(s,d)=>d),k=Array.from({length:60},(s,d)=>d).filter(s=>s%c===0),i=s=>s.toString().padStart(2,"0"),f=s=>s.toString().padStart(2,"0"),p=s=>{if(l){const d=n==="start"?u?.start:u?.end;return d?d[s]():0}return u?u[s]():0},m=p("getHours"),C=p("getMinutes"),P=s=>{l?o(n,n==="start"?u?.start?.getHours()??0:u?.end?.getHours()??0,s):r(u?.getHours()??0,s)},h=s=>{l?o(n,s,n==="start"?u?.start?.getMinutes()??0:u?.end?.getMinutes()??0):r(s,u?.getMinutes()??0)};return g.jsxs("div",{className:"dgsuikit:flex dgsuikit:mt-2 dgsuikit:w-full dgsuikit:justify-center",children:[g.jsx(M,{items:k,defaultValue:C,onValueChange:P,formatValue:f}),g.jsx(M,{items:a,defaultValue:m,onValueChange:h,formatValue:i})]})},G=()=>{const{timePickerProps:t}=H(),{acceptRange:e,value:n,onChange:r}=t,[o,c]=b.useState("start"),l=(i,f,p)=>{const m=new Date(i);return m.setHours(f),m.setMinutes(p),m.setSeconds(0),m.setMilliseconds(0),m},k={timePickerProps:t,handleSingleTimeChange:(i,f)=>{!n||e||n.getHours()===i&&n.getMinutes()===f||r(l(n,i,f))},handleRangeTimeChange:(i,f,p)=>{if(!n||!e)return;const m=new Date(n[i]??new Date);m.getHours()===f&&m.getMinutes()===p||r({...n,[i]:l(m,f,p)})}};return g.jsxs("div",{className:"dgsuikit:p-4 dgsuikit:ss02",children:[g.jsx(O,{setActivePart:c,...k}),g.jsx(_,{activePart:o,...k})]})},z=()=>{const{timePickerProps:t}=H(),{showSubmitButton:e=!0,showNowButton:n=!0,onSubmit:r,onChange:o,acceptRange:c}=t,l=()=>{if(c){const u=new Date;u.setHours(u.getHours()+1),o({start:new Date,end:u})}else o(new Date)};return g.jsx(y.DateAndTimePickerFooter,{...e&&{primaryButton:{onClick:r,children:"اعمال"}},...n&&{secondaryButton:{variant:"text",onClick:l,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"),o=t.end.getMinutes().toString().padStart(2,"0");return`${e}:${n} - ${r}:${o}`}return""}const Q=t=>{const{showSubmitButton:e=!0,showNowButton:n=!0}=t,{Wrapper:r,wrapperProps:o}=y.useDateAndTimePickerWrapper({props:t,standaloneMode:"time",formatValue:J});return g.jsx(r,{...o,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,369 @@
1
+ import { jsx as h, jsxs as N } from "react/jsx-runtime";
2
+ import B, { createContext as I, useContext as E, useRef as C, useState as v, useEffect as M } from "react";
3
+ import { D as j, u as F } from "../../DateAndTimePickerFooter-ClSJWVd3.js";
4
+ import { c as T } from "../../clsx-OuTLNxxd.js";
5
+ import { I as W } from "../../index-ChP5zdaB.js";
6
+ import { d as K } from "../../index-CzwAoGdL.js";
7
+ const V = I({
8
+ timePickerProps: {
9
+ value: /* @__PURE__ */ new Date(),
10
+ onChange: () => {
11
+ }
12
+ }
13
+ }), O = (t) => {
14
+ const { children: e, timePickerProps: n } = t;
15
+ return /* @__PURE__ */ h(
16
+ V.Provider,
17
+ {
18
+ value: {
19
+ timePickerProps: n
20
+ },
21
+ children: e
22
+ }
23
+ );
24
+ }, A = () => E(V), b = [0, 1, 3, 4], L = (t) => t[0]?.getBoundingClientRect().height ?? 64, _ = (t, e, n, s, o = "instant") => {
25
+ if (!t) return;
26
+ const a = e.indexOf(n);
27
+ a !== -1 && t.scrollTo({
28
+ top: a * s(),
29
+ behavior: o
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
+ }, R = (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
+ }, y = (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
+ }, w = (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 s = e ? n + 1 : n - 1;
54
+ return s < 0 ? b[0] : s >= b.length ? b[b.length - 1] ?? 0 : b[s] ?? 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 = C(null);
57
+ return { inputRef: t, setCaretToEditable: (n, s = !0) => {
58
+ const o = t.current;
59
+ if (!o) return;
60
+ const a = b.includes(n) ? n : w(n, s);
61
+ typeof a == "number" && o.setSelectionRange(a, a + 1);
62
+ } };
63
+ }, Q = (t) => {
64
+ const {
65
+ value: e = { hour: null, minute: null },
66
+ onChange: n,
67
+ disabled: s = !1,
68
+ className: o,
69
+ ...a
70
+ } = t, { inputRef: d, setCaretToEditable: u } = J(), [c, p] = v(() => R(e)), i = B.useRef(e);
71
+ M(() => {
72
+ (e.hour !== i.current.hour || e.minute !== i.current.minute) && (i.current = e, p(R(e)));
73
+ }, [e]);
74
+ const g = () => {
75
+ const f = d.current;
76
+ if (!f) return;
77
+ const r = f.selectionStart ?? 0;
78
+ b.includes(r) || u(r, !0);
79
+ }, k = (f, r) => {
80
+ const l = f === "ArrowRight";
81
+ u(w(r, l), l);
82
+ }, m = (f, r) => {
83
+ const l = b.includes(r) ? r : w(r, !1), S = [...c];
84
+ S[l] = "-", p(S), n(y(S));
85
+ const $ = f === "Backspace" ? w(l, !1) : w(l, !0);
86
+ setTimeout(() => u($, f !== "Backspace"), 0);
87
+ }, P = (f, r) => {
88
+ const l = b.includes(r) ? r : w(r, !0), S = [...c];
89
+ z(f, l, S) && (S[l] = f, p(S), n(y(S)), setTimeout(() => u(w(l, !0), !0), 0));
90
+ }, x = (f) => {
91
+ if (f.preventDefault(), s) return;
92
+ const r = d.current;
93
+ if (!r) return;
94
+ const l = r.selectionStart ?? 0;
95
+ if (["ArrowLeft", "ArrowRight"].includes(f.key)) {
96
+ k(f.key, l);
97
+ return;
98
+ }
99
+ if (["Backspace", "Delete"].includes(f.key)) {
100
+ m(f.key, l);
101
+ return;
102
+ }
103
+ /^\d$/.test(f.key) && P(f.key, l);
104
+ };
105
+ return /* @__PURE__ */ h(
106
+ W,
107
+ {
108
+ ref: d,
109
+ dir: "ltr",
110
+ className: o,
111
+ value: c.join(""),
112
+ onKeyDown: x,
113
+ onFocus: g,
114
+ disabled: s,
115
+ inputMode: "numeric",
116
+ pattern: "[0-9:]*",
117
+ ...a
118
+ }
119
+ );
120
+ }, U = ({
121
+ timePickerProps: t,
122
+ setActivePart: e,
123
+ handleSingleTimeChange: n,
124
+ handleRangeTimeChange: s
125
+ }) => {
126
+ const { acceptRange: o, value: a } = t, d = (c) => ({
127
+ hour: c?.getHours() ?? 0,
128
+ minute: c?.getMinutes() ?? 0
129
+ }), u = o ? [
130
+ {
131
+ key: "start",
132
+ id: "from-time",
133
+ label: "از ساعت",
134
+ value: d(a?.start),
135
+ className: "dgsuikit:w-1/2"
136
+ },
137
+ {
138
+ key: "end",
139
+ id: "to-time",
140
+ label: "تا ساعت",
141
+ value: d(a?.end),
142
+ className: "dgsuikit:w-1/2"
143
+ }
144
+ ] : [
145
+ {
146
+ key: "single",
147
+ id: "time",
148
+ label: "ساعت",
149
+ value: d(a),
150
+ className: void 0
151
+ }
152
+ ];
153
+ return /* @__PURE__ */ h(
154
+ "div",
155
+ {
156
+ className: T(
157
+ o && "dgsuikit:flex dgsuikit:justify-between dgsuikit:gap-4 dgsuikit:mb-4"
158
+ ),
159
+ children: u.map(({ key: c, id: p, label: i, value: g, className: k }) => /* @__PURE__ */ h(
160
+ Q,
161
+ {
162
+ id: p,
163
+ value: g,
164
+ labelContent: i,
165
+ className: k,
166
+ onFocus: () => {
167
+ o && c !== "single" && e(c);
168
+ },
169
+ onChange: (m) => {
170
+ typeof m.hour == "number" && typeof m.minute == "number" && (o && c !== "single" ? s(c, m.hour, m.minute) : n(m.hour, m.minute));
171
+ }
172
+ },
173
+ p
174
+ ))
175
+ }
176
+ );
177
+ }, H = ({ position: t }) => /* @__PURE__ */ h(
178
+ "div",
179
+ {
180
+ className: T(
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 s = C(null), o = C([]), a = C(null), d = () => L(o.current), u = (i = e ?? 0, g = "smooth") => {
189
+ _(s.current, t, i, d, g), a.current = i;
190
+ }, c = K((i) => {
191
+ i !== a.current && (a.current = i, n(i));
192
+ }, 200), p = (i) => {
193
+ const g = Math.round(i.scrollTop / d()), k = t[Math.max(0, Math.min(g, t.length - 1))];
194
+ k != null && c(k);
195
+ };
196
+ return M(() => {
197
+ const i = s.current;
198
+ if (!i) return;
199
+ const g = () => p(i);
200
+ return i.addEventListener("scroll", g), () => i.removeEventListener("scroll", g);
201
+ }, [t, c]), M(() => {
202
+ e != null && u();
203
+ }, [e]), { containerRef: s, itemRefs: o };
204
+ }
205
+ const D = (t) => {
206
+ const {
207
+ items: e,
208
+ defaultValue: n,
209
+ onValueChange: s,
210
+ className: o,
211
+ formatValue: a = (c) => String(c).padStart(2, "0")
212
+ } = t, { containerRef: d, itemRefs: u } = X(e, n, s);
213
+ return /* @__PURE__ */ N("div", { className: "dgsuikit:relative dgsuikit:h-28 dgsuikit:w-full", children: [
214
+ /* @__PURE__ */ h(
215
+ "div",
216
+ {
217
+ ref: d,
218
+ className: T(
219
+ "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",
220
+ o
221
+ ),
222
+ children: e.map((c, p) => /* @__PURE__ */ h(
223
+ "div",
224
+ {
225
+ ref: (i) => {
226
+ u.current[p] = i;
227
+ },
228
+ className: "dgsuikit:h-10 dgsuikit:flex dgsuikit:items-center dgsuikit:justify-center dgsuikit:snap-center dgsuikit:font-p1-regular",
229
+ children: a(c)
230
+ },
231
+ c
232
+ ))
233
+ }
234
+ ),
235
+ /* @__PURE__ */ h(H, { position: "top" }),
236
+ /* @__PURE__ */ h(H, { position: "bottom" })
237
+ ] });
238
+ }, Y = (t) => {
239
+ const { timePickerProps: e, activePart: n, handleSingleTimeChange: s, handleRangeTimeChange: o } = t, { minuteStep: a = 1, acceptRange: d, value: u } = e, c = Array.from({ length: 24 }, (r, l) => l), p = Array.from({ length: 60 }, (r, l) => l).filter(
240
+ (r) => r % a === 0
241
+ ), i = (r) => r.toString().padStart(2, "0"), g = (r) => r.toString().padStart(2, "0"), k = (r) => {
242
+ if (d) {
243
+ const l = n === "start" ? u?.start : u?.end;
244
+ return l ? l[r]() : 0;
245
+ }
246
+ return u ? u[r]() : 0;
247
+ }, m = k("getHours"), P = k("getMinutes");
248
+ return /* @__PURE__ */ N("div", { className: "dgsuikit:flex dgsuikit:mt-2 dgsuikit:w-full dgsuikit:justify-center", children: [
249
+ /* @__PURE__ */ h(
250
+ D,
251
+ {
252
+ items: p,
253
+ defaultValue: P,
254
+ onValueChange: (r) => {
255
+ d ? o(
256
+ n,
257
+ n === "start" ? u?.start?.getHours() ?? 0 : u?.end?.getHours() ?? 0,
258
+ r
259
+ ) : s(u?.getHours() ?? 0, r);
260
+ },
261
+ formatValue: g
262
+ }
263
+ ),
264
+ /* @__PURE__ */ h(
265
+ D,
266
+ {
267
+ items: c,
268
+ defaultValue: m,
269
+ onValueChange: (r) => {
270
+ d ? o(
271
+ n,
272
+ r,
273
+ n === "start" ? u?.start?.getMinutes() ?? 0 : u?.end?.getMinutes() ?? 0
274
+ ) : s(r, u?.getMinutes() ?? 0);
275
+ },
276
+ formatValue: i
277
+ }
278
+ )
279
+ ] });
280
+ }, Z = () => {
281
+ const { timePickerProps: t } = A(), { acceptRange: e, value: n, onChange: s } = t, [o, a] = v("start"), d = (i, g, k) => {
282
+ const m = new Date(i);
283
+ return m.setHours(g), m.setMinutes(k), m.setSeconds(0), m.setMilliseconds(0), m;
284
+ }, p = { timePickerProps: t, handleSingleTimeChange: (i, g) => {
285
+ !n || e || n.getHours() === i && n.getMinutes() === g || s(d(n, i, g));
286
+ }, handleRangeTimeChange: (i, g, k) => {
287
+ if (!n || !e) return;
288
+ const m = new Date(n[i] ?? /* @__PURE__ */ new Date());
289
+ m.getHours() === g && m.getMinutes() === k || s({
290
+ ...n,
291
+ [i]: d(m, g, k)
292
+ });
293
+ } };
294
+ return /* @__PURE__ */ N("div", { className: "dgsuikit:p-4 dgsuikit:ss02", children: [
295
+ /* @__PURE__ */ h(
296
+ U,
297
+ {
298
+ setActivePart: a,
299
+ ...p
300
+ }
301
+ ),
302
+ /* @__PURE__ */ h(
303
+ Y,
304
+ {
305
+ activePart: o,
306
+ ...p
307
+ }
308
+ )
309
+ ] });
310
+ }, tt = () => {
311
+ const { timePickerProps: t } = A(), {
312
+ showSubmitButton: e = !0,
313
+ showNowButton: n = !0,
314
+ onSubmit: s,
315
+ onChange: o,
316
+ acceptRange: a
317
+ } = t;
318
+ return /* @__PURE__ */ h(
319
+ j,
320
+ {
321
+ ...e && {
322
+ primaryButton: {
323
+ onClick: s,
324
+ children: "اعمال"
325
+ }
326
+ },
327
+ ...n && {
328
+ secondaryButton: {
329
+ variant: "text",
330
+ onClick: () => {
331
+ if (a) {
332
+ const u = /* @__PURE__ */ new Date();
333
+ u.setHours(u.getHours() + 1), o({ start: /* @__PURE__ */ new Date(), end: u });
334
+ } else
335
+ o(/* @__PURE__ */ new Date());
336
+ },
337
+ children: "رفتن به اکنون"
338
+ }
339
+ },
340
+ className: "dgsuikit:p-4"
341
+ }
342
+ );
343
+ };
344
+ function et(t) {
345
+ if (!t) return "";
346
+ if (t instanceof Date) {
347
+ const e = t.getHours().toString().padStart(2, "0"), n = t.getMinutes().toString().padStart(2, "0");
348
+ return `${e}:${n}`;
349
+ }
350
+ if (t.start && t.end) {
351
+ const e = t.start.getHours().toString().padStart(2, "0"), n = t.start.getMinutes().toString().padStart(2, "0"), s = t.end.getHours().toString().padStart(2, "0"), o = t.end.getMinutes().toString().padStart(2, "0");
352
+ return `${e}:${n} - ${s}:${o}`;
353
+ }
354
+ return "";
355
+ }
356
+ const at = (t) => {
357
+ const { showSubmitButton: e = !0, showNowButton: n = !0 } = t, { Wrapper: s, wrapperProps: o } = F({
358
+ props: t,
359
+ standaloneMode: "time",
360
+ formatValue: et
361
+ });
362
+ return /* @__PURE__ */ h(s, { ...o, children: /* @__PURE__ */ N(O, { timePickerProps: t, children: [
363
+ /* @__PURE__ */ h(Z, {}),
364
+ (e || n) && /* @__PURE__ */ h(tt, {})
365
+ ] }) });
366
+ };
367
+ export {
368
+ at as default
369
+ };