element-plus
Version:
A Component Library for Vue 3
1 lines • 3.9 kB
Source Map (JSON)
{"version":3,"file":"use-time-panel.mjs","sources":["../../../../../../../packages/components/time-picker/src/composables/use-time-panel.ts"],"sourcesContent":["import type { Dayjs } from 'dayjs'\nimport type {\n GetDisabledHours,\n GetDisabledMinutes,\n GetDisabledSeconds,\n} from '../common/props'\n\ntype UseTimePanelProps = {\n getAvailableHours: GetDisabledHours\n getAvailableMinutes: GetDisabledMinutes\n getAvailableSeconds: GetDisabledSeconds\n}\n\nexport const useTimePanel = ({\n getAvailableHours,\n getAvailableMinutes,\n getAvailableSeconds,\n}: UseTimePanelProps) => {\n const getAvailableTime = (\n date: Dayjs,\n role: string,\n first: boolean,\n compareDate?: Dayjs\n ) => {\n const availableTimeGetters = {\n hour: getAvailableHours,\n minute: getAvailableMinutes,\n second: getAvailableSeconds,\n } as const\n let result = date\n ;(['hour', 'minute', 'second'] as const).forEach((type) => {\n if (availableTimeGetters[type]) {\n let availableTimeSlots: number[]\n const method = availableTimeGetters[type]\n switch (type) {\n case 'minute': {\n availableTimeSlots = (method as typeof getAvailableMinutes)(\n result.hour(),\n role,\n compareDate\n )\n break\n }\n case 'second': {\n availableTimeSlots = (method as typeof getAvailableSeconds)(\n result.hour(),\n result.minute(),\n role,\n compareDate\n )\n break\n }\n default: {\n availableTimeSlots = (method as typeof getAvailableHours)(\n role,\n compareDate\n )\n break\n }\n }\n\n if (\n availableTimeSlots?.length &&\n !availableTimeSlots.includes(result[type]())\n ) {\n const pos = first ? 0 : availableTimeSlots.length - 1\n result = result[type](availableTimeSlots[pos]) as unknown as Dayjs\n }\n }\n })\n return result\n }\n\n const timePickerOptions: Record<string, (...args: any[]) => void> = {}\n\n const onSetOption = ([key, val]: [string, (...args: any[]) => void]) => {\n timePickerOptions[key] = val\n }\n\n return {\n timePickerOptions,\n\n getAvailableTime,\n onSetOption,\n }\n}\n"],"names":[],"mappings":"AAaO,MAAM,eAAe,CAAC;AAAA,EAC3B,iBAAA;AAAA,EACA,mBAAA;AAAA,EACA;AACF,CAAA,KAAyB;AACvB,EAAA,MAAM,gBAAA,GAAmB,CACvB,IAAA,EACA,IAAA,EACA,OACA,WAAA,KACG;AACH,IAAA,MAAM,oBAAA,GAAuB;AAAA,MAC3B,IAAA,EAAM,iBAAA;AAAA,MACN,MAAA,EAAQ,mBAAA;AAAA,MACR,MAAA,EAAQ;AAAA,KACV;AACA,IAAA,IAAI,MAAA,GAAS,IAAA;AACZ,IAAC,CAAC,MAAA,EAAQ,QAAA,EAAU,QAAQ,CAAA,CAAY,OAAA,CAAQ,CAAC,IAAA,KAAS;AACzD,MAAA,IAAI,oBAAA,CAAqB,IAAI,CAAA,EAAG;AAC9B,QAAA,IAAI,kBAAA;AACJ,QAAA,MAAM,MAAA,GAAS,qBAAqB,IAAI,CAAA;AACxC,QAAA,QAAQ,IAAA;AAAM,UACZ,KAAK,QAAA,EAAU;AACb,YAAA,kBAAA,GAAsB,MAAA;AAAA,cACpB,OAAO,IAAA,EAAK;AAAA,cACZ,IAAA;AAAA,cACA;AAAA,aACF;AACA,YAAA;AAAA,UACF;AAAA,UACA,KAAK,QAAA,EAAU;AACb,YAAA,kBAAA,GAAsB,MAAA;AAAA,cACpB,OAAO,IAAA,EAAK;AAAA,cACZ,OAAO,MAAA,EAAO;AAAA,cACd,IAAA;AAAA,cACA;AAAA,aACF;AACA,YAAA;AAAA,UACF;AAAA,UACA,SAAS;AACP,YAAA,kBAAA,GAAsB,MAAA;AAAA,cACpB,IAAA;AAAA,cACA;AAAA,aACF;AACA,YAAA;AAAA,UACF;AAAA;AAGF,QAAA,IAAA,CACE,kBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,kBAAA,CAAoB,WACpB,CAAC,kBAAA,CAAmB,SAAS,MAAA,CAAO,IAAI,CAAA,EAAG,CAAA,EAC3C;AACA,UAAA,MAAM,GAAA,GAAM,KAAA,GAAQ,CAAA,GAAI,kBAAA,CAAmB,MAAA,GAAS,CAAA;AACpD,UAAA,MAAA,GAAS,MAAA,CAAO,IAAI,CAAA,CAAE,kBAAA,CAAmB,GAAG,CAAC,CAAA;AAAA,QAC/C;AAAA,MACF;AAAA,IACF,CAAC,CAAA;AACD,IAAA,OAAO,MAAA;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,oBAA8D,EAAC;AAErE,EAAA,MAAM,WAAA,GAAc,CAAC,CAAC,GAAA,EAAK,GAAG,CAAA,KAA0C;AACtE,IAAA,iBAAA,CAAkB,GAAG,CAAA,GAAI,GAAA;AAAA,EAC3B,CAAA;AAEA,EAAA,OAAO;AAAA,IACL,iBAAA;AAAA,IAEA,gBAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}