{"version":3,"file":"/Users/anthonygubler/development/dojo-org/widgets/src/date-input/index.tsx","sourceRoot":"","sources":["index.tsx"],"names":[],"mappings":"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","sourcesContent":["import { create, tsx } from '@dojo/framework/core/vdom';\nimport { createICacheMiddleware } from '@dojo/framework/core/middleware/icache';\nimport { i18n } from '@dojo/framework/core/middleware/i18n';\nimport { focus } from '@dojo/framework/core/middleware/focus';\nimport { FocusProperties } from '@dojo/framework/core/mixins/Focus';\n\nimport { parseDate, formatDateISO, formatDate } from './date-utils';\nimport { isRenderResult, Keys } from '../common/util';\nimport theme, { ThemeProperties } from '../middleware/theme';\nimport Calendar from '../calendar';\nimport TextInput from '../text-input';\nimport Icon from '../icon';\nimport TriggerPopup from '../trigger-popup';\nimport * as textInputCss from '../theme/default/text-input.m.css';\nimport * as css from '../theme/default/date-input.m.css';\n\nimport bundle from './nls/DateInput';\nimport { RenderResult } from '@dojo/framework/core/interfaces';\n\nexport interface DateInputProperties extends ThemeProperties, FocusProperties {\n\t/** The initial value */\n\tinitialValue?: string;\n\t/** Controlled value property */\n\tvalue?: string;\n\t/** Set the latest date the calendar will display in (it will show the whole month but not allow previous selections) */\n\tmax?: string;\n\t/** Set the earliest date the calendar will display (it will show the whole month but not allow previous selections) */\n\tmin?: string;\n\t/** name used on the underlying form input's name attribute */\n\tname?: string;\n\t/** Callback fired with new value in YYYY-MM-DD format */\n\tonValue?(date: string): void;\n\t/** Callback fired when input validation changes */\n\tonValidate?: (valid: boolean | undefined, message: string) => void;\n\t/** Custom date string parser function to allow custom date formats. Must work with dateFormatter */\n\tdateParser?(date?: string): Date | undefined;\n\t/** Custom date formatter function to convert Dates to strings. Must work with dateParser */\n\tdateFormatter?(date?: Date): string | undefined;\n\t/** The disabled property of the input */\n\tdisabled?: boolean;\n\t/** The readonly attribute of the input */\n\treadOnly?: boolean;\n\t/** Determines if this input is required, styles accordingly */\n\trequired?: boolean;\n\t/** The kind of date input */\n\tkind?: 'outlined' | 'filled';\n}\n\nexport interface DateInputChildren {\n\t/** The label for the wrapped text input */\n\tlabel?: RenderResult;\n}\n\ninterface DateInputICache {\n\t/** The most recent \"initialValue\" property passed */\n\tinitialValue: string;\n\t/** Current user-inputted value */\n\tinputValue?: string;\n\t/** The last valid Date of value */\n\tvalue: Date;\n\t/** The last \"value\" property passed */\n\tlastValue: string;\n\t/** A possible new value that should not be saved until we call a callback */\n\tnextValue: string;\n\t/** Message for current validation state */\n\tvalidationMessage: string | undefined;\n\t/** Indicates which node will be focused */\n\tfocusNode: 'input' | 'calendar';\n\t/** Indicates if user has interacted with input */\n\tdirty: boolean;\n\t/** Calls when user inputs value */\n\tcallOnValue: void;\n}\n\nconst icache = createICacheMiddleware<DateInputICache>();\nconst factory = create({ theme, icache, i18n, focus })\n\t.properties<DateInputProperties>()\n\t.children<DateInputChildren | RenderResult | undefined>();\n\nexport default factory(function DateInput({\n\tproperties,\n\tchildren,\n\tmiddleware: { theme, icache, i18n, focus }\n}) {\n\tconst {\n\t\tinitialValue,\n\t\tname,\n\t\tonValue,\n\t\tonValidate,\n\t\tdateParser = parseDate,\n\t\tdateFormatter = formatDate,\n\t\tvalue: controlledValue,\n\t\tdisabled = false,\n\t\treadOnly = false,\n\t\tmin: minInput,\n\t\tmax: maxInput,\n\t\ttheme: themeProp,\n\t\tvariant,\n\t\tclasses,\n\t\trequired,\n\t\tkind\n\t} = properties();\n\tconst { messages } = i18n.localize(bundle);\n\tconst themedCss = theme.classes(css);\n\tconst max = (Boolean(maxInput) && dateParser(maxInput)) || undefined;\n\tconst min = (Boolean(minInput) && dateParser(minInput)) || undefined;\n\n\tif (\n\t\tinitialValue !== undefined &&\n\t\tcontrolledValue === undefined &&\n\t\ticache.get('initialValue') !== initialValue\n\t) {\n\t\tconst parsed = initialValue && dateParser(initialValue);\n\n\t\tif (parsed) {\n\t\t\ticache.set('inputValue', dateFormatter(parsed));\n\t\t}\n\t\ticache.set('initialValue', initialValue);\n\t\ticache.delete('callOnValue');\n\t}\n\n\tif (controlledValue !== undefined && icache.get('lastValue') !== controlledValue) {\n\t\tconst parsed = controlledValue && dateParser(controlledValue);\n\t\tif (parsed) {\n\t\t\ticache.set('inputValue', dateFormatter(parsed));\n\t\t\ticache.set('value', parsed);\n\t\t}\n\t\ticache.set('lastValue', controlledValue);\n\t}\n\n\tconst shouldFocus = focus.shouldFocus();\n\tconst focusNode = icache.getOrSet('focusNode', 'input');\n\tconst [labelChild] = children();\n\tconst label = isRenderResult(labelChild) ? labelChild : labelChild.label;\n\n\tfunction callOnValue() {\n\t\tconst testValue =\n\t\t\tcontrolledValue === undefined ? icache.get('inputValue') : icache.get('nextValue');\n\t\tlet isValid: boolean | undefined;\n\t\tlet validationMessages: string[] = [];\n\n\t\t// if min & max create an impossible range, no need to validate anything else\n\t\tif (min && max && min > max) {\n\t\t\tvalidationMessages.push(messages.invalidProps);\n\t\t\tisValid = false;\n\t\t} else {\n\t\t\tconst newDate = dateParser(testValue);\n\n\t\t\tif (newDate !== undefined) {\n\t\t\t\tif (min && newDate < min) {\n\t\t\t\t\tvalidationMessages.push(messages.tooEarly);\n\t\t\t\t} else if (max && newDate > max) {\n\t\t\t\t\tvalidationMessages.push(messages.tooLate);\n\t\t\t\t} else {\n\t\t\t\t\tif (controlledValue === undefined) {\n\t\t\t\t\t\ticache.set('value', newDate);\n\t\t\t\t\t\ticache.set('inputValue', dateFormatter(newDate));\n\t\t\t\t\t}\n\t\t\t\t\tif (onValue) {\n\t\t\t\t\t\tonValue(formatDateISO(newDate));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (testValue) {\n\t\t\t\tvalidationMessages.push(messages.invalidDate);\n\t\t\t} else {\n\t\t\t\tonValue && onValue('');\n\t\t\t}\n\n\t\t\tisValid = validationMessages.length === 0;\n\t\t}\n\n\t\tif (testValue === '' && icache.get('dirty') && required) {\n\t\t\tvalidationMessages = [messages.requiredDate];\n\t\t\tisValid = false;\n\t\t}\n\n\t\tconst validationMessage = validationMessages.join('; ');\n\t\tonValidate && onValidate(isValid, validationMessage);\n\t\ticache.set('validationMessage', validationMessage);\n\t}\n\ticache.getOrSet('callOnValue', () => callOnValue());\n\n\treturn (\n\t\t<div classes={[theme.variant(), themedCss.root]}>\n\t\t\t<input\n\t\t\t\ttype=\"hidden\"\n\t\t\t\tname={name}\n\t\t\t\tvalue={formatDateISO(icache.get('value'))}\n\t\t\t\taria-hidden=\"true\"\n\t\t\t\trequired={required}\n\t\t\t/>\n\t\t\t<TriggerPopup key=\"popup\" theme={themeProp} classes={classes} variant={variant}>\n\t\t\t\t{{\n\t\t\t\t\ttrigger: (toggleOpen) => {\n\t\t\t\t\t\tfunction openCalendar() {\n\t\t\t\t\t\t\tif (!disabled && !readOnly) {\n\t\t\t\t\t\t\t\ticache.set('focusNode', 'calendar');\n\t\t\t\t\t\t\t\tfocus.focus();\n\t\t\t\t\t\t\t\ttoggleOpen();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<div classes={themedCss.input}>\n\t\t\t\t\t\t\t\t<TextInput\n\t\t\t\t\t\t\t\t\tkey=\"input\"\n\t\t\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\t\t\trequired={required}\n\t\t\t\t\t\t\t\t\treadOnly={readOnly}\n\t\t\t\t\t\t\t\t\tfocus={() => shouldFocus && focusNode === 'input'}\n\t\t\t\t\t\t\t\t\ttheme={theme.compose(\n\t\t\t\t\t\t\t\t\t\ttextInputCss,\n\t\t\t\t\t\t\t\t\t\tcss,\n\t\t\t\t\t\t\t\t\t\t'input'\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\t\tinitialValue={icache.get('inputValue')}\n\t\t\t\t\t\t\t\t\tonBlur={() => {\n\t\t\t\t\t\t\t\t\t\tif (icache.get('dirty')) {\n\t\t\t\t\t\t\t\t\t\t\tcallOnValue();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tonValue={(v = '') => {\n\t\t\t\t\t\t\t\t\t\ticache.set('dirty', true);\n\t\t\t\t\t\t\t\t\t\ticache.set(\n\t\t\t\t\t\t\t\t\t\t\tcontrolledValue === undefined\n\t\t\t\t\t\t\t\t\t\t\t\t? 'inputValue'\n\t\t\t\t\t\t\t\t\t\t\t\t: 'nextValue',\n\t\t\t\t\t\t\t\t\t\t\tv\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tvalid={\n\t\t\t\t\t\t\t\t\t\ticache.get('validationMessage')\n\t\t\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\t\t\tvalid: false,\n\t\t\t\t\t\t\t\t\t\t\t\t\tmessage: icache.get('validationMessage')\n\t\t\t\t\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tonFocus={() => {\n\t\t\t\t\t\t\t\t\t\ticache.set('dirty', true);\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tonKeyDown={(key) => {\n\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\tkey === Keys.Down ||\n\t\t\t\t\t\t\t\t\t\t\tkey === Keys.Space ||\n\t\t\t\t\t\t\t\t\t\t\tkey === Keys.Enter\n\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\tif (key === Keys.Enter && icache.get('dirty')) {\n\t\t\t\t\t\t\t\t\t\t\t\tcallOnValue();\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\topenCalendar();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tclasses={classes}\n\t\t\t\t\t\t\t\t\tvariant={variant}\n\t\t\t\t\t\t\t\t\tkind={kind}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{{\n\t\t\t\t\t\t\t\t\t\tlabel,\n\t\t\t\t\t\t\t\t\t\ttrailing: (\n\t\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\t\tkey=\"dateIcon\"\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\t\t\t\t\t\tonclick={(e) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t\t\t\t\t\t\topenCalendar();\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\tclasses={themedCss.toggleCalendarButton}\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<Icon type=\"dateIcon\" />\n\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t</TextInput>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t\tcontent: (onClose) => {\n\t\t\t\t\t\tfunction closeCalendar() {\n\t\t\t\t\t\t\ticache.set('focusNode', 'input');\n\t\t\t\t\t\t\tfocus.focus();\n\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<div classes={themedCss.popup}>\n\t\t\t\t\t\t\t\t<Calendar\n\t\t\t\t\t\t\t\t\tkey=\"calendar\"\n\t\t\t\t\t\t\t\t\tfocus={() => shouldFocus && focusNode === 'calendar'}\n\t\t\t\t\t\t\t\t\tmaxDate={max}\n\t\t\t\t\t\t\t\t\tminDate={min}\n\t\t\t\t\t\t\t\t\tinitialValue={\n\t\t\t\t\t\t\t\t\t\ticache.get('value') || parseDate(formatDateISO(new Date()))\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tonValue={(date) => {\n\t\t\t\t\t\t\t\t\t\ticache.set(\n\t\t\t\t\t\t\t\t\t\t\tcontrolledValue === undefined\n\t\t\t\t\t\t\t\t\t\t\t\t? 'inputValue'\n\t\t\t\t\t\t\t\t\t\t\t\t: 'nextValue',\n\t\t\t\t\t\t\t\t\t\t\tdateFormatter(date)\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\tcallOnValue();\n\t\t\t\t\t\t\t\t\t\tcloseCalendar();\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\ttheme={themeProp}\n\t\t\t\t\t\t\t\t\tclasses={classes}\n\t\t\t\t\t\t\t\t\tvariant={variant}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t</TriggerPopup>\n\t\t</div>\n\t);\n});\n"]}