UNPKG

xdesign-vue-next

Version:

XDesign Component for vue-next

1 lines 6.57 kB
{"version":3,"file":"useController.mjs","sources":["../../../src/calendar/hook/useController.ts"],"sourcesContent":["import isFunction from 'lodash/isFunction';\nimport isBoolean from 'lodash/isBoolean';\nimport { computed, nextTick } from 'vue';\nimport dayjs from 'dayjs';\nimport { COMPONENT_NAME } from '../const';\nimport { CalendarState } from '../interface';\nimport { TdCalendarProps, ControllerOptions } from '../type';\nimport { useConfig } from '../../hooks/useConfig';\n\nconst getDefaultControllerConfigData = (visible = true): Record<string, any> => ({\n visible, // 是否显示(全部控件)\n disabled: false, // 是否禁用(全部控件)\n // 模式切换单选组件设置\n mode: {\n visible: true, // 是否显示\n radioGroupProps: {}, // 用于透传props给该radioGroup组件\n },\n // 年份选择框组件相关设置\n year: {\n visible: true, // 是否显示\n selectProps: {}, // 用于透传props给该select组件\n },\n // 年份选择框组件相关设置\n month: {\n visible: true, // 是否显示(“year”模式下本身是不显示该组件的)\n selectProps: {}, // 用于透传props给该select组件\n },\n // 隐藏\\显示周末按钮组件相关设置\n weekend: {\n visible: true, // 是否显示\n showWeekendButtonProps: {}, // 用于透传props给显示周末按钮组件\n hideWeekendButtonProps: {}, // 用于透传props给隐藏周末按钮组件\n },\n // “今天\\本月”按钮组件相关设置\n current: {\n visible: true, // 是否显示\n currentDayButtonProps: {}, // 用于透传props给“今天”钮组件(“month”模式下有效)\n currentMonthButtonProps: {}, // 用于透传props给“本月”按钮组件(“year”模式下有效)\n },\n});\n\nexport function userController(props: TdCalendarProps, state: CalendarState) {\n const { globalConfig } = useConfig(COMPONENT_NAME);\n\n const options = computed<ControllerOptions>(() => {\n const dayJsFilterDate = dayjs(`${state.curSelectedYear}-${state.curSelectedMonth}`);\n const re = {\n isShowWeekend: state.isShowWeekend,\n filterDate: dayJsFilterDate.toDate(),\n formattedFilterDate: dayJsFilterDate.format(props.format),\n mode: state.curSelectedMode,\n };\n return re;\n });\n const configData = computed<Record<string, any>>(() => {\n const controllerConfig = props.controllerConfig ?? globalConfig.value.controllerConfig ?? true;\n if (isBoolean(controllerConfig)) {\n return getDefaultControllerConfigData(controllerConfig);\n }\n return {\n ...getDefaultControllerConfigData(),\n ...controllerConfig,\n };\n });\n const visible = computed<boolean>(() => {\n return !!configData.value && configData.value.visible;\n });\n /**\n * 判断某个控件是否显示\n * @param name 控件对应的配置节点名(对应controllerConfigData)\n * @returns true表示显示\n */\n function checkControllerVisible(name: string): boolean {\n let re = true;\n const conf = configData.value;\n if (!conf || !conf.visible || conf[name] === false || (conf[name] && !conf[name].visible)) {\n re = false;\n }\n return re;\n }\n /**\n * 判断某个控件是否禁用\n * @param name 控件对应的配置节点名(对应controllerConfigData)\n * @param propsName 表示禁用的控件属性(对应controllerConfigData)\n * @returns true表示禁用\n */\n function checkControllerDisabled(name: string, propsName: string): boolean {\n let re = false;\n const conf = configData.value;\n if (conf && (conf.disabled || (conf[name] && conf[name][propsName] && conf[name][propsName].disabled))) {\n re = true;\n }\n return re;\n }\n function emitControllerChange() {\n nextTick(() => {\n isFunction(props.onControllerChange) && props.onControllerChange({ ...options.value });\n });\n }\n\n return {\n options,\n configData,\n visible,\n checkControllerVisible,\n checkControllerDisabled,\n emitControllerChange,\n };\n}\n"],"names":["visible","disabled","mode","radioGroupProps","year","selectProps","month","weekend","hideWeekendButtonProps","current","currentMonthButtonProps","filterDate","isBoolean","re","nextTick","isFunction","options","configData","checkControllerVisible","checkControllerDisabled","emitControllerChange"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,IAAA,8BAAA,GAAA,SAAA,8BAAA,GAAA;AAAM,EAAA,IAAA,OAAA,GAAA,SAAA,CAAA,MAAA,GAAA,CAAA,IAAA,SAAA,CAAA,CAAA,CAAA,KAAA,SAAA,GAAA,SAAA,CAAA,CAAA,CAAA,GAAA,IAAA,CAAA;;AACJA,IAAAA,OAAAA,EAAAA,OAAAA;AACAC,IAAAA,QAAAA,EAAAA,KAAAA;AAEAC,IAAAA,IAAAA,EAAAA;AACEF,MAAAA,OAAAA,EAAAA,IAAAA;AACAG,MAAAA,eAAAA,EAAAA,EAAAA;;AAGFC,IAAAA,IAAAA,EAAAA;AACEJ,MAAAA,OAAAA,EAAAA,IAAAA;AACAK,MAAAA,WAAAA,EAAAA,EAAAA;;AAGFC,IAAAA,KAAAA,EAAAA;AACEN,MAAAA,OAAAA,EAAAA,IAAAA;AACAK,MAAAA,WAAAA,EAAAA,EAAAA;;AAGFE,IAAAA,OAAAA,EAAAA;AACEP,MAAAA,OAAAA,EAAAA,IAAAA;;AAEAQ,MAAAA,sBAAAA,EAAAA,EAAAA;;AAGFC,IAAAA,OAAAA,EAAAA;AACET,MAAAA,OAAAA,EAAAA,IAAAA;;AAEAU,MAAAA,uBAAAA,EAAAA,EAAAA;AACF,KAAA;;AACF,CAAA,CAAA;AAEO,SAAA,cAAA,CAAA,KAAA,EAAA,KAAA,EAAA;AACL,EAAA,IAAA,UAAA,GAAA,SAAA,CAAA,cAAA,CAAA;;AAEM,EAAA,IAAA,OAAA,GAAA,QAAA,CAAA,YAAA;AACJ,IAAA,IAAA,eAAA,GAAA,KAAA,CAAA,EAAA,CAAA,MAAA,CAAA,KAAA,CAAA,eAAA,EAAA,GAAA,CAAA,CAAA,MAAA,CAAA,KAAA,CAAA,gBAAA,CAAA,CAAA,CAAA;AACA,IAAA,IAAA,EAAA,GAAA;;AAEEC,MAAAA,UAAAA,EAAAA,eAAAA,CAAAA,MAAAA,EAAAA;;;;AAIK,IAAA,OAAA,EAAA,CAAA;AACT,GAAA,CAAA,CAAA;AACM,EAAA,IAAA,UAAA,GAAA,QAAA,CAAA,YAAA;;;AAEA,IAAA,IAAAC,WAAA,CAAA,gBAAA,CAAA,EAAA;;AAEJ,KAAA;;AAKF,GAAA,CAAA,CAAA;AACM,EAAA,IAAA,OAAA,GAAA,QAAA,CAAA,YAAA;;AAEN,GAAA,CAAA,CAAA;;;AAQE,IAAA,IAAA,IAAA,GAAA,UAAA,CAAA,KAAA,CAAA;;AAEOC,MAAAA,EAAAA,GAAAA,KAAAA,CAAAA;AACP,KAAA;AACO,IAAA,OAAA,EAAA,CAAA;AACT,GAAA;AAOS,EAAA,SAAA,uBAAA,CAAA,IAAA,EAAA,SAAA,EAAA;;AAEP,IAAA,IAAA,IAAA,GAAA,UAAA,CAAA,KAAA,CAAA;AACI,IAAA,IAAA,IAAA,KAAA,IAAA,CAAA,QAAA,IAAA,IAAA,CAAA,IAAA,CAAA,IAAA,IAAA,CAAA,IAAA,CAAA,CAAA,SAAA,CAAA,IAAA,IAAA,CAAA,IAAA,CAAA,CAAA,SAAA,CAAA,CAAA,QAAA,CAAA,EAAA;AACGA,MAAAA,EAAAA,GAAAA,IAAAA,CAAAA;AACP,KAAA;AACO,IAAA,OAAA,EAAA,CAAA;AACT,GAAA;;AAEEC,IAAAA,QAAAA,CAAAA,YAAAA;AACaC,MAAAA,YAAAA,CAAAA,KAAAA,CAAAA,kBAAAA,CAAAA,IAAAA,KAAAA,CAAAA,kBAAAA,CAAAA,aAAAA,CAAAA,EAAAA,EAAAA,OAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA;AACb,KAAA,CAAA,CAAA;AACF,GAAA;;AAGEC,IAAAA,OAAAA,EAAAA,OAAAA;AACAC,IAAAA,UAAAA,EAAAA,UAAAA;AACAjB,IAAAA,OAAAA,EAAAA,OAAAA;AACAkB,IAAAA,sBAAAA,EAAAA,sBAAAA;AACAC,IAAAA,uBAAAA,EAAAA,uBAAAA;AACAC,IAAAA,oBAAAA,EAAAA,oBAAAA;;AAEJ;;;;"}