element-plus
Version:
A Component Library for Vue 3
1 lines • 4.25 kB
Source Map (JSON)
{"version":3,"file":"use-time-picker.mjs","names":[],"sources":["../../../../../../../packages/components/time-picker/src/composables/use-time-picker.ts"],"sourcesContent":["import { ref, toValue, watch } from 'vue'\nimport { makeList } from '../utils'\n\nimport type { MaybeRefOrGetter } from 'vue'\nimport type { Dayjs } from 'dayjs'\nimport type {\n GetDisabledHours,\n GetDisabledMinutes,\n GetDisabledSeconds,\n} from '../common/props'\n\nconst makeAvailableArr = (disabledList: boolean[]): number[] => {\n const trueOrNumber = (isDisabled: boolean, index: number) =>\n isDisabled || index\n\n const getNumber = (predicate: number | true): predicate is number =>\n predicate !== true\n\n return disabledList.map(trueOrNumber).filter(getNumber)\n}\n\nexport const getTimeLists = (\n disabledHours?: GetDisabledHours,\n disabledMinutes?: GetDisabledMinutes,\n disabledSeconds?: GetDisabledSeconds\n) => {\n const getHoursList = (role: string, compare?: Dayjs) => {\n return makeList(24, disabledHours && (() => disabledHours?.(role, compare)))\n }\n\n const getMinutesList = (hour: number, role: string, compare?: Dayjs) => {\n return makeList(\n 60,\n disabledMinutes && (() => disabledMinutes?.(hour, role, compare))\n )\n }\n\n const getSecondsList = (\n hour: number,\n minute: number,\n role: string,\n compare?: Dayjs\n ) => {\n return makeList(\n 60,\n disabledSeconds && (() => disabledSeconds?.(hour, minute, role, compare))\n )\n }\n\n return {\n getHoursList,\n getMinutesList,\n getSecondsList,\n }\n}\n\nexport const buildAvailableTimeSlotGetter = (\n disabledHours: GetDisabledHours,\n disabledMinutes: GetDisabledMinutes,\n disabledSeconds: GetDisabledSeconds\n) => {\n const { getHoursList, getMinutesList, getSecondsList } = getTimeLists(\n disabledHours,\n disabledMinutes,\n disabledSeconds\n )\n\n const getAvailableHours: GetDisabledHours = (role, compare?) => {\n return makeAvailableArr(getHoursList(role, compare))\n }\n\n const getAvailableMinutes: GetDisabledMinutes = (hour, role, compare?) => {\n return makeAvailableArr(getMinutesList(hour, role, compare))\n }\n\n const getAvailableSeconds: GetDisabledSeconds = (\n hour,\n minute,\n role,\n compare?\n ) => {\n return makeAvailableArr(getSecondsList(hour, minute, role, compare))\n }\n\n return {\n getAvailableHours,\n getAvailableMinutes,\n getAvailableSeconds,\n }\n}\n\nexport const useOldValue = (\n props: {\n parsedValue?: string | Dayjs | Dayjs[]\n visible: boolean\n },\n options: {\n modelValue: MaybeRefOrGetter<unknown>\n valueOnClear: MaybeRefOrGetter<unknown>\n }\n) => {\n const oldValue = ref(props.parsedValue)\n\n watch(\n () => props.visible,\n (val) => {\n const modelValue = toValue(options.modelValue)\n const valueOnClear = toValue(options.valueOnClear)\n if (val && modelValue === valueOnClear) {\n oldValue.value = valueOnClear as typeof oldValue.value\n return\n }\n if (!val) {\n oldValue.value = props.parsedValue\n }\n }\n )\n\n return oldValue\n}\n"],"mappings":";;;;AAWA,MAAM,oBAAoB,iBAAsC;CAC9D,MAAM,gBAAgB,YAAqB,UACzC,cAAc;CAEhB,MAAM,aAAa,cACjB,cAAc;AAEhB,QAAO,aAAa,IAAI,aAAa,CAAC,OAAO,UAAU;;AAGzD,MAAa,gBACX,eACA,iBACA,oBACG;CACH,MAAM,gBAAgB,MAAc,YAAoB;AACtD,SAAO,SAAS,IAAI,wBAAwB,gBAAgB,MAAM,QAAQ,EAAE;;CAG9E,MAAM,kBAAkB,MAAc,MAAc,YAAoB;AACtE,SAAO,SACL,IACA,0BAA0B,kBAAkB,MAAM,MAAM,QAAQ,EACjE;;CAGH,MAAM,kBACJ,MACA,QACA,MACA,YACG;AACH,SAAO,SACL,IACA,0BAA0B,kBAAkB,MAAM,QAAQ,MAAM,QAAQ,EACzE;;AAGH,QAAO;EACL;EACA;EACA;EACD;;AAGH,MAAa,gCACX,eACA,iBACA,oBACG;CACH,MAAM,EAAE,cAAc,gBAAgB,mBAAmB,aACvD,eACA,iBACA,gBACD;CAED,MAAM,qBAAuC,MAAM,YAAa;AAC9D,SAAO,iBAAiB,aAAa,MAAM,QAAQ,CAAC;;CAGtD,MAAM,uBAA2C,MAAM,MAAM,YAAa;AACxE,SAAO,iBAAiB,eAAe,MAAM,MAAM,QAAQ,CAAC;;CAG9D,MAAM,uBACJ,MACA,QACA,MACA,YACG;AACH,SAAO,iBAAiB,eAAe,MAAM,QAAQ,MAAM,QAAQ,CAAC;;AAGtE,QAAO;EACL;EACA;EACA;EACD;;AAGH,MAAa,eACX,OAIA,YAIG;CACH,MAAM,WAAW,IAAI,MAAM,YAAY;AAEvC,aACQ,MAAM,UACX,QAAQ;EACP,MAAM,aAAa,QAAQ,QAAQ,WAAW;EAC9C,MAAM,eAAe,QAAQ,QAAQ,aAAa;AAClD,MAAI,OAAO,eAAe,cAAc;AACtC,YAAS,QAAQ;AACjB;;AAEF,MAAI,CAAC,IACH,UAAS,QAAQ,MAAM;GAG5B;AAED,QAAO"}