{"version":3,"file":"datePicker.obs.js","sources":["../../../Framework/Controls/datePicker.obs"],"sourcesContent":["<!-- Copyright by the Spark Development Network; Licensed under the Rock Community License -->\r\n<template>\r\n <RockFormField v-bind=\"fieldProps\" :formGroupClasses=\"'date-picker ' + fieldProps.formGroupClasses\" #default=\"{ uniqueId, field }\" name=\"datepicker\" v-model.lazy=\"internalValue\">\r\n <div class=\"control-wrapper\">\r\n <div v-if=\"displayCurrentOption\" class=\"form-control-group\">\r\n <div class=\"form-row\">\r\n <DatePickerBase v-model.lazy=\"internalValue\" :id=\"uniqueId\" v-bind=\"field\" :disabled=\"isCurrent || field.disabled\" />\r\n <div v-if=\"displayCurrentOption || isCurrent\" class=\"input-group\">\r\n <div class=\"checkbox\">\r\n <label title=\"\">\r\n <input type=\"checkbox\" v-model=\"isCurrent\" />\r\n <span class=\"label-text\">Current Date</span></label>\r\n </div>\r\n </div>\r\n </div>\r\n <div v-if=\"isCurrent && isCurrentDateOffset\" class=\"form-row\">\r\n <TextBox label=\"+- Days\" v-model=\"currentDiff\" inputClasses=\"input-width-md\" help=\"Enter the number of days after the current date to use as the date. Use a negative number to specify days before.\" />\r\n </div>\r\n </div>\r\n <DatePickerBase v-else v-model.lazy=\"internalValue\" :id=\"uniqueId\" v-bind=\"{ ...field, ...basePickerProps }\" :disabled=\"isCurrent || field.disabled\" />\r\n </div>\r\n </RockFormField>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n\r\n\r\n import { computed, PropType, ref, watch } from \"vue\";\r\n import { toNumber } from \"@Obsidian/Utility/numberUtils\";\r\n import { standardRockFormFieldProps, useStandardRockFormFieldProps } from \"@Obsidian/Utility/component\";\r\n import RockFormField from \"./rockFormField\";\r\n import TextBox from \"./textBox\";\r\n import DatePickerBase from \"./datePickerBase.obs\";\r\n\r\n const props = defineProps({\r\n modelValue: {\r\n type: String as PropType<string | null>,\r\n default: null\r\n },\r\n\r\n displayCurrentOption: {\r\n type: Boolean as PropType<boolean>,\r\n default: false\r\n },\r\n\r\n isCurrentDateOffset: {\r\n type: Boolean as PropType<boolean>,\r\n default: false\r\n },\r\n\r\n /** Whether to parse the entered value and reformat it to match the set format. NOT Reactive */\r\n disableForceParse: {\r\n type: Boolean as PropType<boolean>,\r\n default: false\r\n },\r\n\r\n /** If set to true, only clicking on the calendar icon will open the calendar widget. NOT Reactive */\r\n disableShowOnFocus: {\r\n type: Boolean as PropType<boolean>,\r\n default: false\r\n },\r\n\r\n /** Whether or not to highlight the current day on the calendar. NOT Reactive */\r\n disableHighlightToday: {\r\n type: Boolean as PropType<boolean>,\r\n default: false\r\n },\r\n\r\n /** Whether or not the user should be able to select dates in the future. NOT Reactive */\r\n disallowFutureDateSelection: {\r\n type: Boolean as PropType<boolean>,\r\n default: false\r\n },\r\n\r\n /** Whether or not the user should be able to select dates in the past. NOT Reactive */\r\n disallowPastDateSelection: {\r\n type: Boolean as PropType<boolean>,\r\n default: false\r\n },\r\n\r\n /** Which view do we open the calendar widget on? 0 = Month, 1 = Year, 2 = Decade. NOT Reactive */\r\n startView: {\r\n type: Number as PropType<0 | 1 | 2>,\r\n default: 0\r\n },\r\n\r\n ...standardRockFormFieldProps\r\n });\r\n\r\n const emit = defineEmits<{\r\n (e: \"update:modelValue\", val: string | null): void\r\n }>();\r\n\r\n // #region Values\r\n\r\n const internalValue = ref<string | null>(null);\r\n const isCurrent = ref<boolean>(false);\r\n const currentDiff = ref<string>(\"0\");\r\n\r\n const fieldProps = useStandardRockFormFieldProps(props);\r\n\r\n // #endregion\r\n\r\n // #region Computed Values\r\n\r\n const asCurrentDateValue = computed<string>(() => {\r\n const plusMinus = `${toNumber(currentDiff.value)}`;\r\n return `CURRENT:${plusMinus}`;\r\n });\r\n\r\n const valueToEmit = computed<string | null>(() => {\r\n if (isCurrent.value) {\r\n return asCurrentDateValue.value;\r\n }\r\n\r\n return internalValue.value;\r\n });\r\n\r\n const basePickerProps = computed(() => {\r\n return {\r\n disableForceParse: props.disableForceParse,\r\n disableShowOnFocus: props.disableShowOnFocus,\r\n disableHighlightToday: props.disableHighlightToday,\r\n disallowFutureDateSelection: props.disallowFutureDateSelection,\r\n disallowPastDateSelection: props.disallowPastDateSelection,\r\n startView: props.startView,\r\n };\r\n });\r\n\r\n // #endregion\r\n\r\n // #region Watchers\r\n\r\n watch(() => props.isCurrentDateOffset, () => {\r\n if (!props.isCurrentDateOffset) {\r\n currentDiff.value = \"0\";\r\n }\r\n }, { immediate: true });\r\n\r\n watch(isCurrent, () => {\r\n if (isCurrent.value) {\r\n internalValue.value = \"Current\";\r\n }\r\n else {\r\n internalValue.value = null;\r\n }\r\n }, { immediate: true });\r\n\r\n watch(valueToEmit, () => {\r\n emit(\"update:modelValue\", valueToEmit.value);\r\n });\r\n\r\n watch(() => props.modelValue, () => {\r\n if (!props.modelValue) {\r\n internalValue.value = null;\r\n isCurrent.value = false;\r\n currentDiff.value = \"0\";\r\n\r\n return;\r\n }\r\n\r\n if (props.modelValue.indexOf(\"CURRENT\") === 0) {\r\n isCurrent.value = true;\r\n const parts = props.modelValue.split(\":\");\r\n\r\n if (parts.length === 2) {\r\n currentDiff.value = `${toNumber(parts[1])}`;\r\n }\r\n\r\n return;\r\n }\r\n\r\n internalValue.value = props.modelValue;\r\n }, { immediate: true });\r\n\r\n watch(() => props.displayCurrentOption, () => {\r\n // clear out the \"current\" data this option is disabled so we can actually set a new value\r\n if (!props.displayCurrentOption && isCurrent.value) {\r\n internalValue.value = null;\r\n isCurrent.value = false;\r\n currentDiff.value = \"0\";\r\n }\r\n });\r\n\r\n // #endregion\r\n\r\n\r\n</script>\r\n"],"names":["internalValue","ref","isCurrent","currentDiff","fieldProps","useStandardRockFormFieldProps","props","asCurrentDateValue","computed","plusMinus","concat","toNumber","value","valueToEmit","basePickerProps","disableForceParse","disableShowOnFocus","disableHighlightToday","disallowFutureDateSelection","disallowPastDateSelection","startView","watch","isCurrentDateOffset","immediate","emit","modelValue","indexOf","parts","split","length","displayCurrentOption"],"mappings":"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"}