@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.
- package/dist/DateAndTimePickerFooter-ClSJWVd3.js +74 -0
- package/dist/DateAndTimePickerFooter-Dikf0ZUx.cjs +1 -0
- package/dist/Form/Common/DateAndTimePickerFooter/DateAndTimePickerFooter.d.ts +10 -0
- package/dist/Form/Common/DateAndTimePickerFooter/DateAndTimePickerFooter.d.ts.map +1 -0
- package/dist/Form/Datepicker/Footer.d.ts.map +1 -1
- package/dist/Form/Datepicker/index.cjs +1 -1
- package/dist/Form/Datepicker/index.d.ts.map +1 -1
- package/dist/Form/Datepicker/index.mjs +396 -425
- package/dist/Form/Datepicker/types.d.ts +2 -22
- package/dist/Form/Datepicker/types.d.ts.map +1 -1
- package/dist/Form/Select/index.cjs +1 -1
- package/dist/Form/Select/index.mjs +1 -1
- package/dist/Form/Timepicker/Body.d.ts +4 -0
- package/dist/Form/Timepicker/Body.d.ts.map +1 -0
- package/dist/Form/Timepicker/Footer.d.ts +4 -0
- package/dist/Form/Timepicker/Footer.d.ts.map +1 -0
- package/dist/Form/Timepicker/GradientOverlay.d.ts +7 -0
- package/dist/Form/Timepicker/GradientOverlay.d.ts.map +1 -0
- package/dist/Form/Timepicker/ScrollWheel.d.ts +5 -0
- package/dist/Form/Timepicker/ScrollWheel.d.ts.map +1 -0
- package/dist/Form/Timepicker/TimeInput.d.ts +10 -0
- package/dist/Form/Timepicker/TimeInput.d.ts.map +1 -0
- package/dist/Form/Timepicker/TimeInputs.d.ts +5 -0
- package/dist/Form/Timepicker/TimeInputs.d.ts.map +1 -0
- package/dist/Form/Timepicker/TimeScrollWheels.d.ts +5 -0
- package/dist/Form/Timepicker/TimeScrollWheels.d.ts.map +1 -0
- package/dist/Form/Timepicker/constants.d.ts +2 -0
- package/dist/Form/Timepicker/constants.d.ts.map +1 -0
- package/dist/Form/Timepicker/context.d.ts +12 -0
- package/dist/Form/Timepicker/context.d.ts.map +1 -0
- package/dist/Form/Timepicker/hooks/useCaret.d.ts +5 -0
- package/dist/Form/Timepicker/hooks/useCaret.d.ts.map +1 -0
- package/dist/Form/Timepicker/hooks/useScrollWheel.d.ts +5 -0
- package/dist/Form/Timepicker/hooks/useScrollWheel.d.ts.map +1 -0
- package/dist/Form/Timepicker/index.cjs +1 -0
- package/dist/Form/Timepicker/index.d.ts +5 -0
- package/dist/Form/Timepicker/index.d.ts.map +1 -0
- package/dist/Form/Timepicker/index.mjs +364 -0
- package/dist/Form/Timepicker/types.d.ts +44 -0
- package/dist/Form/Timepicker/types.d.ts.map +1 -0
- package/dist/Form/Timepicker/utils.d.ts +10 -0
- package/dist/Form/Timepicker/utils.d.ts.map +1 -0
- package/dist/Form/Wrappers/PickerWrapper/PickerWrapper.d.ts.map +1 -1
- package/dist/Form/Wrappers/PickerWrapper/type.d.ts +2 -1
- package/dist/Form/Wrappers/PickerWrapper/type.d.ts.map +1 -1
- package/dist/Menu/constants.d.ts +1 -1
- package/dist/Menu/constants.d.ts.map +1 -1
- package/dist/Menu/index.cjs +1 -1
- package/dist/Menu/index.d.ts.map +1 -1
- package/dist/Menu/index.mjs +11 -9
- package/dist/Menu/types.d.ts +1 -1
- package/dist/Menu/types.d.ts.map +1 -1
- package/dist/PickerWrapper-BcOkTb3G.cjs +1 -0
- package/dist/{PickerWrapper-CQAaW1cs.js → PickerWrapper-CZPsW03T.js} +52 -47
- package/dist/{Slide-Cg1SjpFn.js → Slide-BQvg6qNJ.js} +1 -1
- package/dist/Slide-p8rlxR_a.cjs +1 -0
- package/dist/Slider/index.cjs +1 -1
- package/dist/Slider/index.mjs +1 -1
- package/dist/Tooltip/Content.d.ts.map +1 -1
- package/dist/Tooltip/index.cjs +1 -1
- package/dist/Tooltip/index.d.ts +1 -1
- package/dist/Tooltip/index.d.ts.map +1 -1
- package/dist/Tooltip/index.mjs +21 -17
- package/dist/assets/styles.css +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +46 -44
- package/package.json +7 -1
- package/dist/PickerWrapper-DpLS0Ogo.cjs +0 -1
- 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
|
-
|
|
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,
|
|
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-
|
|
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-
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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
|