element-plus
Version:
A Component Library for Vue 3
1 lines • 3.13 kB
Source Map (JSON)
{"version":3,"file":"use-time-panel.mjs","names":[],"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"],"mappings":";AAaA,MAAa,gBAAgB,EAC3B,mBACA,qBACA,0BACuB;CACvB,MAAM,oBACJ,MACA,MACA,OACA,gBACG;EACH,MAAM,uBAAuB;GAC3B,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACD,IAAI,SAAS;AACZ,EAAC;GAAC;GAAQ;GAAU;GAAS,CAAW,SAAS,SAAS;AACzD,OAAI,qBAAqB,OAAO;IAC9B,IAAI;IACJ,MAAM,SAAS,qBAAqB;AACpC,YAAQ,MAAR;KACE,KAAK;AACH,2BAAsB,OACpB,OAAO,MAAM,EACb,MACA,YACD;AACD;KAEF,KAAK;AACH,2BAAsB,OACpB,OAAO,MAAM,EACb,OAAO,QAAQ,EACf,MACA,YACD;AACD;KAEF;AACE,2BAAsB,OACpB,MACA,YACD;AACD;;AAIJ,QACE,oBAAoB,UACpB,CAAC,mBAAmB,SAAS,OAAO,OAAO,CAAC,EAC5C;KACA,MAAM,MAAM,QAAQ,IAAI,mBAAmB,SAAS;AACpD,cAAS,OAAO,MAAM,mBAAmB,KAAK;;;IAGlD;AACF,SAAO;;CAGT,MAAM,oBAA8D,EAAE;CAEtE,MAAM,eAAe,CAAC,KAAK,SAA6C;AACtE,oBAAkB,OAAO;;AAG3B,QAAO;EACL;EAEA;EACA;EACD"}