{"version":3,"file":"tds.js","sources":["../source/js/shared/i18n.js","../source/js/components/date-input/js/localization.js","../source/js/shared/constants.js","../source/js/shared/eventDispatcher.js","../source/js/shared/when-dom-ready.js","../source/js/shared/onDOMChanges.js","../source/js/shared/instances.js","../source/js/components/date-input/js/date-utils.js","../source/js/components/date-input/js/calendar.js","../source/js/shared/containTabFocus.js","../source/js/shared/getTargetElement.js","../source/js/shared/animation.js","../source/js/shared/keyboard.js","../source/js/components/date-input/date-input.js","../source/js/components/dropdown/dropdown-menu.js","../source/js/shared/ModuleInstance.js","../source/js/shared/Dialog.js","../source/js/shared/debounce.js","../source/js/shared/scroll-shadow/ScrollShadow.js","../source/js/modules/modal/modal.js","../source/js/components/timepicker/timepicker.js","../source/js/modules/alert/alert.js","../source/js/modules/workflow-navigation/workflow-navigation.js","../source/js/templates/workflow/workflow.js","../source/js/components/compound-field/compound-field.js","../source/js/components/masked-field/masked-field.js","../source/js/modules/navigation/navigation.js","../source/js/modules/data-table/js/scrollpanel-shadow.js","../source/js/modules/data-table/js/bindTableSortControl.js","../source/js/modules/data-table/data-table.js"],"sourcesContent":["const languages = {\n default: 'en',\n en: {\n // date-input/calendar\n year: 'Year',\n month: 'Month',\n current: 'current',\n minimum: 'minimum',\n maximum: 'maximum',\n today: 'Today',\n close: 'Close',\n nextYear: 'Next year',\n nextMonth: 'Next month',\n prevYear: 'Previous year',\n prevMonth: 'Previous month',\n calendar: 'Calendar',\n pageUp: 'Page Up',\n pageDown: 'Page Down',\n escapeLabel: \"Press escape to close calendar\",\n altKey: 'Alt',\n optionKey: 'Option',\n day: 'Day',\n months: [\n {name: 'January', abbr: 'Jan'},\n {name: 'February', abbr: 'Feb'},\n {name: 'March', abbr: 'Mar'},\n {name: 'April', abbr: 'Apr'},\n {name: 'May', abbr: 'May'},\n {name: 'June', abbr: 'Jun'},\n {name: 'July', abbr: 'Jul'},\n {name: 'August', abbr: 'Aug'},\n {name: 'September', abbr: 'Sep'},\n {name: 'October', abbr: 'Oct'},\n {name: 'November', abbr: 'Nov'},\n {name: 'December', abbr: 'Dec'}\n ],\n days: [\n {name: 'Sunday', abbr: 'Sun', initial: 'S'},\n {name: 'Monday', abbr: 'Mon', initial: 'M'},\n {name: 'Tuesday', abbr: 'Tue', initial: 'T'},\n {name: 'Wednesday', abbr: 'Wed', initial: 'W'},\n {name: 'Thursday', abbr: 'Thu', initial: 'T'},\n {name: 'Friday', abbr: 'Fri', initial: 'F'},\n {name: 'Saturday', abbr: 'Sat', initial: 'S'}\n ],\n // sorted content\n ascending: 'ascending',\n descending: 'descending',\n htmlTableIs: 'Table {0} is ',\n tableSortStateDescription: 'sorted by {0}, {1}',\n notSorted: 'not sorted',\n sortColumnDescription: \"Sorts by this column\",\n // for unit test\n color: 'color',\n interpolate: '{0} {1} {2} - {2} {1} {0}'\n },\n // additional languages are for unit tests now\n \"en-gb\": {\n color: 'colour',\n },\n fr: {\n year: 'AnnĂ©e',\n sortColumnDescription: \"Trie cette colonne\"\n }\n}\n\nfunction translations(lang) {\n if ('string' !== typeof lang) {\n // hopefully, it's an Element\n lang = getLang(lang)\n }\n lang = lang.toLowerCase()\n const langParts = lang.split('-')\n const language = langParts.reduce((acc, value, index ) => {\n const langCode = langParts.slice(0, index+1).join('-')\n const l = languages[langCode]\n return l ? {...acc, ...l} : acc\n }, lang.indexOf(languages.default) === -1 ? languages[languages.default] : {})\n\n return {\n t: (key, ...replacements) => translate(language, key, ...replacements),\n language\n }\n}\n\nfunction translate(language, key, ...replacements) {\n let value = language[key] || ''\n if ('string' === typeof value) {\n // replace positional substitions.\n // e.g. {0} is replaced with replacements[0], {1} is replaced with replacements[1], etc.\n value = replacements.reduce((v, r, i) => {\n return v.replace(new RegExp(`\\\\{${i}\\\\}`, 'g'), r)\n }, value)\n }\n return value\n}\n\nfunction getLang(element) {\n const langEl = element && element.closest('[lang]')\n return ((langEl && langEl.lang) || window.navigator.language)\n}\n\nexport { getLang, translations }\n","/*\n Manages internationalization and localization for Dates\n\n Translations are managed by shared/i18n/index.js. Localization (e.g. Date part order) still managed here\n\n */\nimport { getLang, translations } from '../../../shared/i18n'\n\nconst l10n = {\n default: 'iso',\n us: { dateFormat: 'MM/DD/YYYY', firstDayOfWeek: 0},\n gb: {dateFormat: 'DD/MM/YYYY'},\n iso: {dateFormat: 'YYYY/MM/DD', firstDayOfWeek: 1}\n}\n\n/**\n * returns language map and format for the element\n * @param element {HTMLElement} The element to apply localization based on its or an ancestor's lang attribute\n * @returns {object} {lang: object, locale: string}\n */\nfunction getLocale (element) {\n const langAttr = getLang(element)\n const lang = translations(langAttr).language\n const country = langAttr.toLowerCase().split('-')[1] ||\n window.navigator.language.toLowerCase().split('-')[1] ||\n l10n.default\n const localization = l10n[country] || l10n[l10n.default]\n const format = localization.dateFormat || l10n[l10n.default].dateFormat\n const firstDayOfWeek = localization.hasOwnProperty('firstDayOfWeek') ?\n localization.firstDayOfWeek : l10n[l10n.default].firstDayOfWeek\n const dateFormatLabel = format\n .replace('MM', lang.month)\n .replace('DD', lang.day)\n .replace('YYYY', lang.year)\n .replace(/\\//g, ' ')\n .toLowerCase()\n return {lang, format, firstDayOfWeek, dateFormatLabel}\n}\n\nexport { getLocale }\n","export const NAMESPACE = 'tds'\nexport const CSS_NS = `${NAMESPACE}-`\n","/**\n * Cross-browser (meaning IE) function to create an Event to dispatch. Creates a Custom Event\n * @param eventType {string} - The name of the event\n * @param eventInit {object} - Dictionary with the event initialization values as defined in https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent.\n * For this function, though, bubbles defaults to true\n * @return {CustomEvent} A CustomEvent object\n */\nconst createEvent = (eventType, eventInit = {}) => {\n eventInit = {...eventInit}\n const additionalProperties = stripNonCustomEventInitProperties(eventInit)\n let event\n const init = {...{bubbles: true}, ...eventInit}\n if ('CustomEvent' in window && typeof window.CustomEvent === 'function') {\n event = new window.CustomEvent(eventType, init)\n } else {\n event = document.createEvent('CustomEvent')\n const bubbles = !!init.bubbles\n const cancelable = !!init.cancelable\n const details = init.detail\n event.initCustomEvent(eventType, bubbles, cancelable, details)\n }\n\n // add any additioab properties as read-only\n Object.keys(additionalProperties)\n .forEach(key => {\n Object.defineProperty(event, key, {\n get() {\n return additionalProperties[key]\n }\n })\n })\n\n return event\n}\n\n/**\n * Dispatches a (Custom) Event for the target\n * @param target {EventTarget} - The target to dispatch the event on\n * @param eventType {string} - The name of the event\n * @param eventInit {object} - Dictionary with the event initialization values as defined in https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent.\n * For this function, though, bubbles defaults to true\n * @return {boolean} False if event is cancelable and at least one of the event handlers called Event.preventDefault(); otherwise true.\n */\nconst dispatchEvent = (target, eventType, eventInit) => {\n return target.dispatchEvent(createEvent(eventType, eventInit))\n}\n\nfunction stripNonCustomEventInitProperties (eventInit) {\n const properties = 'detail bubbles cancelable composed'\n const strippedProperties = {}\n Object.keys(eventInit).forEach(key => {\n if (properties.indexOf(key) === -1) {\n strippedProperties[key] = eventInit[key]\n delete eventInit[key]\n }\n })\n return strippedProperties\n}\nexport {\n dispatchEvent,\n createEvent\n}\n","/**\n * Calls a function when the DOM is loaded\n * @param callback {function} The function to call when the DOM is loaded\n */\nconst whenDOMReady = callback => {\n if (document.readyState === \"loading\") {\n document.addEventListener('DOMContentLoaded', callback)\n }\n else {\n callback()\n }\n}\n\nexport default whenDOMReady\n","import whenReady from './when-dom-ready'\n\nlet observer\nlet nextId = 1\nconst listeners = []\nfunction onDomChanges (selector, onNodeAdded, onNodeRemoved) {\n const id = nextId++\n listeners.push({id, selector, onNodeAdded, onNodeRemoved})\n\n whenReady(() => {\n if ('function' === typeof onNodeAdded) {\n const existingNodes = document.body.querySelectorAll(selector)\n for(let i=0; i < existingNodes.length; i++) {\n onNodeAdded(existingNodes[i])\n }\n }\n\n if (!observer) {\n observer = new MutationObserver(observerCallback)\n observer.observe(document.body, {childList: true, subtree: true})\n }\n })\n\n const cancel = () => {\n for(let i =0; i< listeners.length; i++) {\n if (listeners[i].id === id) {\n listeners.splice(i,1)\n break;\n }\n }\n }\n return cancel\n}\n\nfunction observerCallback( mutationList) {\n mutationList.forEach((mutation) => {\n if (mutation.type === 'childList') {\n onChildListUpdates(mutation)\n }\n })\n}\n\nfunction onChildListUpdates({addedNodes, removedNodes}) {\n listeners.forEach(({selector, onNodeAdded, onNodeRemoved}) => {\n if (('function' === typeof onNodeAdded) && addedNodes && addedNodes.length) {\n dispatchUpdates(selector, addedNodes, onNodeAdded)\n }\n if (('function' === typeof onNodeRemoved) && removedNodes && removedNodes.length) {\n dispatchUpdates(selector, removedNodes, onNodeRemoved)\n }\n })\n}\n\nfunction dispatchUpdates(selector, nodeList, callback) {\n const matchedNodes = []\n for (let i = 0; i < nodeList.length; i++ ) {\n const node = nodeList[i]\n if (node instanceof HTMLElement) {\n if (node.matches(selector)) {\n matchedNodes.push(node)\n }\n const childNodes = node.querySelectorAll(selector)\n for (let j = 0; j< childNodes.length; j++) {\n matchedNodes.push(childNodes[j])\n }\n }\n }\n matchedNodes.forEach(callback)\n}\n\nexport default onDomChanges\n","const storeInstances = {}\nlet id = 1\n\nconst instances = {\n set(element, key, instance) {\n if (typeof element.tdsEnhancers === 'undefined') {\n element.tdsEnhancers = {}\n }\n\n if (typeof element.tdsEnhancers[key] === 'undefined') {\n element.tdsEnhancers[key] = {id}\n id++\n }\n\n storeInstances[element.tdsEnhancers[key].id] = instance\n },\n\n get(element, key) {\n if (!element || typeof element.tdsEnhancers === 'undefined' || typeof element.tdsEnhancers[key] === 'undefined') {\n return null\n }\n\n return storeInstances[element.tdsEnhancers[key].id] || null\n },\n\n remove(element, key) {\n if (!element || typeof element.tdsEnhancers === 'undefined' || typeof element.tdsEnhancers[key] === 'undefined') {\n return\n }\n\n delete storeInstances[element.tdsEnhancers[key].id]\n delete element.tdsEnhancers[key]\n if (Object.keys(element.tdsEnhancers).length === 0) {\n delete element.tdsEnhancers\n }\n }\n}\n\nexport { instances }\n","/**\n * Tests whether or not the parameter passed in is a valid date instance\n * Only validates against a Date object. Does not validate strings\n * @param date The date instance to evaluate\n * @return {boolean} True if the parameter is a Date instance with a valid date\n */\nfunction isValidDateInstance(date) {\n return !!(date && (date instanceof Date) && !isNaN(date.getDate()))\n}\n\n/**\n * Parses a string into a date.\n * @param str {string} The string to parse\n * @param localeFormat The locale format, e.g. MM-DD-YYYY\n * @return {*}\n */\nfunction parseDate(str, localeFormat) {\n const ISO_RX = /^(\\d{4})-(\\d{2})-(\\d{2})/\n const DELIMITED_RX = /^(\\d+)\\D(\\d+)\\D(\\d+)$/\n const NOT_DELIMITER_RX = /^\\d{8}$/\n let dateStr = str\n let date = null\n\n if (!ISO_RX.test(str)) {\n const formatParts = localeFormat.split('/')\n let parts\n\n // try to convert other formats into an ISO formatted string\n const delimitedMatch = DELIMITED_RX.exec(str)\n if (delimitedMatch) {\n // try locally formatted date such as MM/DD/YYYY or DD.MM.YYYY\n parts = formatParts.reduce((map, placeholder, i) => {\n map[placeholder] = delimitedMatch[i+1]\n return map\n }, {})\n }\n else if (NOT_DELIMITER_RX.test(str)) {\n // try local date formatted without\n let offset = 0\n parts = formatParts.reduce((map, placeholder) => {\n map[placeholder] = dateStr.substring(offset, offset + placeholder.length)\n offset += placeholder.length\n return map\n }, {})\n }\n if (parts) {\n dateStr = `${parts.YYYY}-${`0${parts.MM}`.slice(-2)}-${`0${parts.DD}`.slice(-2)}`\n }\n }\n\n const ISO_MATCH = ISO_RX.exec(dateStr);\n if (ISO_MATCH) {\n date = new Date(parseInt(ISO_MATCH[1]), parseInt(ISO_MATCH[2]) - 1, parseInt(ISO_MATCH[3]), 0, 0, 0, 0)\n const dateStr2 = date.toISOString()\n if (dateStr.substring(0,10) !== dateStr2.substring(0,10)) {\n // if date parts change, e.g 2020-04-31 becomes 2020-05-01,\n // then it is not a valid date\n date = null;\n }\n }\n\n if (!isValidDateInstance(date)) {\n // try as entered\n date = new Date(str)\n }\n\n if (!isValidDateInstance(date)) {\n date = null\n }\n\n return date\n}\n\n/**\n * Formats a Date in ISO format without time (YYYY-MM-DD)\n * @param date The date to format\n * @return {string} The formatted date\n */\nfunction toISODate(date) {\n const yy = date.getFullYear()\n const mm = `0${date.getMonth() + 1}`.slice(-2)\n const dd = `0${date.getDate()}`.slice(-2)\n return [yy, mm, dd].join('-')\n}\n\n\n/**\n * Formats a date into a readable string - day date month year. e.g. Monday 4 February 2019\n * @param date\n * @param lang\n * @return {*}\n */\nfunction toReadableDate(date, lang) {\n if (!date || isNaN(date.getDate())) {\n return ''\n }\n const day = lang.days[date.getDay()].name\n const month = lang.months[date.getMonth()].name\n return `${day} ${date.getDate()} ${month} ${date.getFullYear()}`\n}\n\nfunction configureDates(config, format) {\n return {...config, dueDate: stringifyConfigDate(config.dueDate, format), ...setMinMaxOptions(config.min, config.max, format), ...configureDisabledDates(config)}\n}\n\nfunction stringifyConfigDate(date, format) {\n if (date) {\n switch (typeof date) {\n case 'string':\n const dt = parseDate(date, format)\n return (dt && toISODate(dt)) || undefined\n default:\n return (isValidDateInstance(date) && toISODate(date)) || undefined\n }\n }\n return undefined\n}\n\nfunction setMinMaxOptions(minIn, maxIn, format) {\n const min_max = [minIn, maxIn]\n .map(d => stringifyConfigDate(d, format))\n let [min, max] = min_max\n if (min && max && min > max) {\n min = max = null\n }\n return {min, max}\n}\n\nfunction configureDisabledDates(config = {}) {\n const DATE_RANGE_RX = /(\\d{4}-\\d{2}-\\d{2})\\s*-\\s*(\\d{4}-\\d{2}-\\d{2})/\n let { disabledDates } = config\n if (typeof disabledDates === 'string') {\n disabledDates = disabledDates.split(',')\n for(let i=0; i< disabledDates.length; i++) {\n disabledDates[i] = disabledDates[i].trim()\n const rangeMatch = DATE_RANGE_RX.exec(disabledDates[i])\n if (rangeMatch) {\n disabledDates[i] = {from: rangeMatch[1], to: rangeMatch[2]}\n }\n }\n }\n else if ( disabledDates) {\n disabledDates = [].concat(disabledDates)\n for(let i=0; i< disabledDates.length; i++) {\n if (disabledDates[i] instanceof Date) {\n disabledDates[i] = stringifyConfigDate(disabledDates[i])\n }\n else if (typeof disabledDates[i] === 'object') {\n if (disabledDates[i].from instanceof Date) {\n disabledDates[i].from = stringifyConfigDate(disabledDates[i].from)\n }\n if (disabledDates[i].to instanceof Date) {\n disabledDates[i].to = stringifyConfigDate(disabledDates[i].to)\n }\n }\n }\n }\n return disabledDates ? {disabledDates: [].concat(disabledDates)} : {}\n}\n\nfunction isDateDisabled(disabledDates, date, dateStr = toISODate(date)) {\n let disabled = false\n if (disabledDates) {\n for(let i=0; i< disabledDates.length; i++) {\n switch (typeof disabledDates[i]) {\n case 'string': {\n disabled = disabledDates[i] === dateStr\n break\n }\n case 'object': {\n const from = disabledDates[i].from\n const to = disabledDates[i].to\n disabled = (from && dateStr >= from && to && dateStr <= to)\n break\n }\n case 'function': {\n disabled = disabledDates[i](date)\n break\n }\n }\n if (disabled) break\n }\n }\n return disabled\n}\n\n\nexport {\n isValidDateInstance,\n parseDate,\n toISODate,\n toReadableDate,\n isDateDisabled,\n configureDates\n}\n\n","import {getLocale} from './localization'\nimport {CSS_NS, NAMESPACE} from '../../../shared/constants'\nimport {dispatchEvent} from '../../../shared/eventDispatcher'\nimport onDOMChanges from '../../../shared/onDOMChanges'\nimport { instances } from '../../../shared/instances'\nimport { isValidDateInstance,\n parseDate,\n toISODate,\n toReadableDate,\n configureDates,\n isDateDisabled } from './date-utils'\n\nconst CALENDAR_CLASS = `${CSS_NS}calendar`\nconst CALENDAR_MONTH_CLASS = `${CALENDAR_CLASS}__month`\nconst CALENDAR_HEADER_CLASS = `${CALENDAR_CLASS}__header`\nconst CALENDAR_FOOTER_CLASS = `${CALENDAR_CLASS}__footer`\nconst CALENDAR_BODY_CLASS = `${CALENDAR_CLASS}__body`\nconst SELECTABLE_DAY_CLASS = `${CALENDAR_CLASS}__select-date`\nconst SELECTED_DAY_CLASS = `${SELECTABLE_DAY_CLASS}--selected`\nconst CURRENT_DATE_CLASS = `${SELECTABLE_DAY_CLASS}--current-date`\nconst DUE_DATE_CLASS = `${SELECTABLE_DAY_CLASS}--due-date`\nconst DAY_OUTSIDE_MONTH_CLASS = `${SELECTABLE_DAY_CLASS}--outside-month`\nconst INSTANCE_KEY = `${NAMESPACE}Calendar`\nconst REMOVED_EVENT = 'calendar:removed'\nconst HOOKS = {\n onDayCreated: \"onDayCreated\"\n}\nconst defaultConfig = {\n today: true\n}\n\nclass _CalendarInstance {\n constructor(element) {\n this._element = element\n element.dataset.enhancedCalendar = true\n init(this)\n\n this._handlers = [\n [element, 'keydown', keyHandler(this)],\n [element, 'click', actionHandler(this)],\n [document, REMOVED_EVENT, calendarRemovedHandler(this)]\n ]\n bindHandlers(this, true)\n instances.set(element, INSTANCE_KEY , this)\n }\n\n render() {\n renderCalendarTemplate(this)\n renderMonth(this)\n enableNavigationButtons(this)\n updateCalendarDays(this)\n this._rendered = true\n }\n\n get selectedDate() {\n return this.state.selectedDate\n }\n\n set selectedDate(date) {\n let selectedDate = isValidDateInstance(date) ? date : null\n const activeDate = constrainActiveDate(this, selectedDate || new Date())\n if (selectedDate) {\n const selDateStr = toISODate(selectedDate)\n const activeDateStr = toISODate(activeDate)\n if (selDateStr !== activeDateStr) {\n //selected date is not in range. keep current value\n selectedDate = this.state.selectedDate\n }\n }\n this.state = {...this.state, selectedDate: selectedDate, activeDate: activeDate }\n }\n\n get state() {\n return this._state\n }\n\n set state(newState) {\n this._state = newState\n if (this._rendered) {\n this.render()\n }\n }\n\n setConfig(config = {}) {\n const min = config.min\n const max = config.max\n const currentOptions = this._config || {}\n this._config = {...currentOptions, ...config, ...configureDates(config, this._locale.format)}\n if (this._rendered) {\n this.render()\n }\n }\n\n setActiveDate(date) {\n const activeDate = constrainActiveDate(this, date || new Date())\n this.state = {...this.state, activeDate: activeDate}\n }\n\n /**\n * Focuses on the selected date; otherwise first button\n */\n focus() {\n const calElement = this._element\n const focusOn = calElement && (calElement.querySelector(`[data-date][tabIndex=\"0\"]`) || calElement.querySelector(`[data-action]`))\n if (focusOn) {\n setTimeout(() => focusOn.focus(), 0)\n }\n }\n\n addHook(hookName, callback) {\n const hooks = this._hooks || (this._hooks = {})\n const hookArray = hooks[hookName] || (hooks[hookName] = [])\n hookArray.push(callback)\n }\n\n removeHook(hookName, callback) {\n const hookArray = this._hooks && this._hooks[hookName]\n if (hookArray) {\n const i = hookArray.indexOf(callback)\n if (i > -1) {\n hookArray.splice(i,1)\n }\n }\n }\n\n destroy() {\n if (this._element) {\n bindHandlers(this, false)\n instances.remove(this._element, INSTANCE_KEY)\n delete this._element\n }\n }\n}\n\nfunction init(calendar) {\n const element = calendar._element\n calendar._locale = getLocale(element)\n\n //initialize config with default config and data attributes\n const config = {...defaultConfig}\n for(let data in element.dataset) {\n if (data !== 'enhancedCalendar') {\n const value = element.dataset[data]\n config[data] = value === 'true' ? true : value === 'false' ? false : value\n }\n }\n calendar.setConfig(config)\n calendar.setActiveDate(new Date())\n}\n\nfunction constrainActiveDate(calendar, activeDate) {\n const {min, max} = calendar._config\n if (min || max ) {\n const activeDateStr = toISODate(activeDate)\n const { format } = calendar._locale.format\n if (max && activeDateStr > max) {\n activeDate = parseDate(max, format)\n }\n else if (min && activeDateStr < min) {\n activeDate = parseDate(min, format)\n }\n }\n return activeDate\n}\n\n////////////////////////////////////////////////\n// - Render functions\n\nfunction renderCalendarTemplate(calendar) {\n const container = calendar._element\n const prevConfig = calendar._prevConfig || {}\n const { min, max, today } = calendar._config\n let calendarMonth = container.querySelector(`.${CALENDAR_MONTH_CLASS}`)\n if (calendarMonth && prevConfig.min === min && prevConfig.max === max && prevConfig.today === today ) {\n return\n }\n\n calendar._prevConfig = calendar._config\n const {lang, firstDayOfWeek} = calendar._locale\n container.querySelector(`.${CALENDAR_BODY_CLASS}`)\n\n const week = [0, 1, 2, 3, 4, 5, 6]\n const hdrCells = week.map(ix => {\n const day = (ix + firstDayOfWeek) % 7\n return `${lang.days[day].initial}`\n })\n\n let includeToday = today\n if (includeToday && (min || max)) {\n //if today is out of range, do not include\n const currentDate = new Date()\n const endOfMonth = min && toISODate(new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, 0))\n const startOfMonth = max && toISODate(new Date(currentDate.getFullYear(), currentDate.getMonth(), 1))\n includeToday = !((min && min > endOfMonth) || (max && max < startOfMonth))\n }\n\n const isMac = /^mac/i.test(window.navigator.platform)\n const metaKeyTitle = isMac ? '⌥' : lang.altKey\n const metaKeyLabel = isMac ? lang.optionKey : lang.altKey\n const prevYearTitle = `${lang.prevYear} (${metaKeyTitle}+${lang.pageUp})`\n const prevYearLabel = `${lang.prevYear} (${metaKeyLabel}+${lang.pageUp})`\n const nextYearTitle = `${lang.nextYear} (${metaKeyTitle}+${lang.pageDown})`\n const nextYearLabel = `${lang.nextYear} (${metaKeyLabel}+${lang.pageDown})`\n const prevMonthLabel = `${lang.prevMonth} (${lang.pageUp})`\n const nextMonthLabel = `${lang.nextMonth} (${lang.pageDown})`\n const todayAccesskey = lang.today.toLowerCase().substring(0,1)\n\n const calendarTemplate = `\n
\n \n \n \n \n \n
\n \n \n ${hdrCells.join('')}\n \n \n
\n ${includeToday ?\n `` : ''}`\n\n if (calendarMonth) {\n calendarMonth.innerHTML = calendarTemplate\n }\n else {\n container.insertAdjacentHTML('afterbegin', `
${calendarTemplate}
`)\n container.setAttribute('tabindex', '-1')\n }\n}\n\nfunction renderMonth(calendar) {\n const element = calendar._element\n const activeDate = calendar.state.activeDate\n const prevState = calendar._prevState || {}\n const prevActiveDate = prevState.activeDate\n const tbody = element.querySelector(`.${CALENDAR_MONTH_CLASS} tbody`)\n\n if (tbody.innerHTML && activeDate && prevActiveDate &&\n activeDate.getMonth() === prevActiveDate.getMonth() &&\n activeDate.getFullYear() === prevActiveDate.getFullYear() ) {\n return\n }\n\n calendar._prevState = calendar._state\n\n const {lang} = calendar._locale\n const monthName = lang.months[activeDate.getMonth()].name\n const title = element.querySelector(`.${CALENDAR_CLASS}__title`)\n title.innerText = `${monthName} ${activeDate.getFullYear()}`\n tbody.innerHTML = renderDays(calendar)\n onDayCreatedHook(calendar)\n}\n\n/**\n * render the weeks as rows and days as cells\n * @param {Calendar} calendar\n */\nfunction renderDays(calendar) {\n const {firstDayOfWeek, lang} = calendar._locale\n const {activeDate} = calendar.state\n const activeYear = activeDate.getFullYear()\n const activeMonth = activeDate.getMonth()\n const todayStr = toISODate(new Date())\n const start = new Date(activeYear, activeMonth)\n const end = new Date(activeYear, activeMonth + 1, 0)\n const startDayOfWeek = (start.getDay() + 7 - firstDayOfWeek) % 7\n const endDate = end.getDate()\n const {min, max, dueDate, disabledDates} = calendar._config\n\n // Builds an array of numbers for as many full weeks needed to display the month\n // Each number represents the number of days into the month\n // if a month starts after 1st day of the week, first numbers will be negative\n const totalDays = 7 * Math.ceil((endDate + startDayOfWeek) / 7)\n const monthDay1 = -startDayOfWeek + 1\n const days = []\n for (let i = 0; i < totalDays; i++) {\n days[i] = monthDay1 + i\n }\n\n // convert each number to a date selection button\n return days.map((day, i) => {\n const date = new Date(activeYear, activeMonth, day, 0, 0, 0)\n const dateStr = toISODate(date)\n const isCurrentDate = dateStr === todayStr\n const labelDescriptors = []\n if (isCurrentDate) {\n labelDescriptors.push(lang.current)\n }\n if (dateStr === min) {\n labelDescriptors.push(lang.minimum)\n }\n if (dateStr === max) {\n labelDescriptors.push(lang.maximum)\n }\n const labelDescription = labelDescriptors.length ? ` (${labelDescriptors.join()})` : ''\n const label = `${toReadableDate(date, lang)}${labelDescription}`\n const weekday = (i % 7)\n const firstDay = weekday === 0\n const lastDay = weekday === 6\n const outOfRange = (min && min > dateStr) || (max && max < dateStr)\n const disabled = outOfRange || isDateDisabled(disabledDates, date, dateStr)\n const attributeMap = {\n 'role': \"button\",\n 'aria-label':label,\n 'aria-current': isCurrentDate && 'date',\n //if date is disabled, disallow selection, but still allow navigation to that date\n 'data-action': outOfRange ? false : disabled ? 'goto' : 'select',\n 'data-date': !outOfRange && dateStr,\n 'aria-disabled' : disabled && true\n }\n const attributes = Object.keys(attributeMap)\n .filter(key => attributeMap[key])\n .map(key => `${key}=\"${attributeMap[key]}\"`)\n .join(' ')\n\n const classMap = {\n [SELECTABLE_DAY_CLASS]: true,\n [CURRENT_DATE_CLASS]: isCurrentDate,\n [DUE_DATE_CLASS]: dateStr === dueDate,\n [DAY_OUTSIDE_MONTH_CLASS]: date.getMonth() != activeDate.getMonth()\n }\n const classNames = Object.keys(classMap)\n .filter(key => classMap[key])\n .map(key => key)\n const classAttr = classNames.length ? `class=\"${classNames.join(' ')}\"` : ''\n\n const cell = `${date.getDate()}`\n return `${firstDay ? '' : ''}${cell}${lastDay ? '' : ''}`\n }).join('')\n}\n\nfunction enableNavigationButtons(calendar) {\n const { min, max} = calendar._config\n if (min || max) {\n const element = calendar._element\n const buttons = element.querySelectorAll('button[data-action]')\n for (let i=0; i max)\n break\n\n case '-year':\n disabled = (`${goToDate.getFullYear()}-12-31` < min)\n break\n\n default:\n const endOfMonth = min && toISODate(new Date(goToDate.getFullYear(), goToDate.getMonth() + 1, 0))\n const startOfMonth = max && toISODate(new Date(goToDate.getFullYear(), goToDate.getMonth(), 1))\n disabled = ((min && min > endOfMonth) || (max && max < startOfMonth))\n }\n\n if (disabled) {\n buttons[i].setAttribute('aria-disabled', true)\n }\n else {\n buttons[i].removeAttribute('aria-disabled')\n }\n }\n }\n}\n\nfunction updateCalendarDays(calendar) {\n const {activeDate, selectedDate} = calendar.state\n const container = calendar._element\n const activeDateStr = toISODate(activeDate)\n const selectedDateStr = selectedDate && toISODate(selectedDate)\n const days = container.querySelectorAll('[data-date]')\n for (let i = 0; i < days.length; i++) {\n const dataDate = days[i].getAttribute('data-date')\n const isActive = dataDate === activeDateStr\n const isSelected = dataDate === selectedDateStr\n days[i].setAttribute('tabindex', isActive ? '0' : '-1')\n days[i].setAttribute('aria-selected', isActive ? 'true' : 'false')\n days[i].classList[isSelected ? 'add' : 'remove'](SELECTED_DAY_CLASS)\n }\n}\n\nfunction onDayCreatedHook(calendar) {\n if (hasHook(calendar, HOOKS.onDayCreated)) {\n const container = calendar._element\n const days = container.querySelectorAll('[data-date]')\n for (let i = 0; i < days.length; i++) {\n const dayEl = days[i]\n const dataStr = dayEl.getAttribute('data-date')\n const date = parseDate(dataStr)\n triggerHook(calendar, HOOKS.onDayCreated, dayEl, date, dataStr)\n }\n }\n}\n\n//////////////////////////////////////////////\n// - event handlers\n\nfunction bindHandlers(calendar, bind) {\n let method = bind ? 'addEventListener' : 'removeEventListener'\n calendar._handlers.forEach(([el, action, handler ]) => {\n el[method](action, handler)\n })\n calendar._handlersBound = bind\n}\n\nfunction calendarRemovedHandler(calendar) {\n return ({detail}) => {\n if (detail === calendar._element) {\n calendar.destroy()\n }\n }\n}\n\nfunction keyHandler(calendar) {\n return (event => {\n let goToDateAction = ''\n\n switch (event.key || event.code) {\n case ' ':\n case 'Space':\n case 'Spacebar':\n case 'Enter':\n const action = event.target.getAttribute('data-action')\n if (action === 'select') {\n const dateStr = event.target.getAttribute('data-date')\n selectDate(calendar, dateStr)\n event.preventDefault() //ensure no side effects from any change of focus\n }\n return\n\n case 'PageDown':\n goToDateAction = event.altKey ? '+year' : '+month'\n break\n\n case 'PageUp':\n goToDateAction = event.altKey ? '-year' : '-month'\n break\n\n case 'Home':\n goToDateAction = '-eow'\n break\n\n case 'End':\n goToDateAction = '+eow'\n break\n\n case 'Right':\n case 'ArrowRight':\n goToDateAction = event.metaKey ? '+eow' : '+day'\n break\n\n case 'Left':\n case 'ArrowLeft':\n goToDateAction = event.metaKey ? '-eow' : '-day'\n break\n\n case 'Up':\n case 'ArrowUp':\n goToDateAction = '-week'\n break\n\n case 'Down':\n case 'ArrowDown':\n goToDateAction = '+week'\n break\n\n default:\n const btnToday = calendar._element.querySelector('[data-action=\"today\"]')\n if (btnToday &&(event.key || event.code) === btnToday.accessKey) {\n goToDateAction = 'today'\n break\n }\n return\n }\n\n if (goToDateAction) {\n event.preventDefault()\n goToDate(calendar, goToDateAction)\n calendar.focus()\n }\n })\n}\n\nfunction actionHandler(calendar) {\n const ACTION_ATTR = 'data-action'\n return (event) => {\n const button = event.target.closest(`[${ACTION_ATTR}]`)\n if (button) {\n const action = button.getAttribute(ACTION_ATTR)\n const disabled = button.getAttribute('aria-disabled') === 'true'\n switch (action) {\n case 'select':\n if (!disabled) {\n selectDate(calendar, button.getAttribute('data-date'))\n }\n break\n\n default:\n if (!disabled || action === 'goto') {\n goToDate(calendar, action, action === 'goto' ? button.getAttribute('data-date') : null)\n if (action === 'today') {\n calendar.focus()\n }\n }\n }\n }\n }\n}\n\nfunction goToDate(calendar, action, dateStr) {\n const { activeDate } = calendar.state\n const newActiveDate = calcGoToDate(calendar, action, dateStr)\n if (newActiveDate !== activeDate) {\n if (action.substring(1) === 'week' && constrainActiveDate(calendar, newActiveDate) !== newActiveDate) {\n // keyboard navigation to previous or next week bumped into dates not in range\n // ignore action (otherwise, arrow up|down unexpectedly goes to start/end of week)\n return\n }\n calendar.setActiveDate(newActiveDate)\n }\n}\n\nfunction calcGoToDate(calendar, action, dateStr) {\n const {firstDayOfWeek} = calendar._locale\n const { activeDate } = calendar.state\n let goToYear = activeDate.getFullYear()\n let goToMonth = activeDate.getMonth()\n let goToDay = activeDate.getDate()\n let change = 1\n action = action.replace(/^([+-])/, ($) => {\n if ($ === '-') {\n change = -1\n }\n return ''\n })\n\n switch (action) {\n case 'year':\n goToYear += change\n break\n\n case 'month':\n goToMonth += change\n break\n\n case 'day':\n goToDay += change\n break\n\n case 'week':\n goToDay += (change * 7)\n break\n\n case 'eow':\n const relativeDayOfWeek = ( activeDate.getDay() + 7 - firstDayOfWeek) % 7\n goToDay += (change === -1 ? 0 : 6) - relativeDayOfWeek\n break\n\n case 'today':\n const today = new Date()\n goToYear = today.getFullYear()\n goToMonth = today.getMonth()\n goToDay = today.getDate()\n break;\n\n case 'goto':\n const dateParts = dateStr.split('-')\n goToYear = dateParts[0]\n goToMonth = dateParts[1] - 1\n goToDay = dateParts[2]\n }\n\n if (goToYear !== activeDate.getFullYear() ||\n goToMonth !== activeDate.getMonth() ||\n goToDay !== activeDate.getDate())\n {\n const newActiveDate = new Date(goToYear, goToMonth, goToDay)\n if (goToDay === activeDate.getDate() && newActiveDate.getMonth() !== (( goToMonth + 12) % 12)) {\n // moved from one month to another month without that day\n // move to end of month\n newActiveDate.setDate(0)\n }\n return newActiveDate\n }\n else {\n return activeDate\n }\n}\n\nfunction selectDate(calendar, dateStr) {\n const dateParts = dateStr.split('-')\n calendar.selectedDate = new Date(dateParts[0], dateParts[1] - 1, dateParts[2])\n dispatchEvent(calendar._element, 'selected', {detail: {calendar}} )\n goToDate(calendar, 'goto', dateStr)\n}\n\nfunction hasHook(calendar, hookName) {\n const hookArray = calendar._hooks && calendar._hooks[hookName]\n return (hookArray && hookArray.length)\n}\n\nfunction triggerHook(calendar, hookName, ...hookArgs) {\n const hookArray = calendar._hooks && calendar._hooks[hookName]\n if (hookArray && hookArray.length) {\n for(let i=0; i container.removeEventListener('keydown', handler)\n}\n\n/**\n * On tab key, checks if currently on the last focusable element. If so, sets focus to the first element\n * Reverses the logic for shift key\n *\n * @param container\n * @param event - KeyEvent\n * @private\n */\nfunction onTabKey(container) {\n return event => {\n if ('Tab' === (event.key || event.code)) {\n const target = event.target\n\n // If current element is a video or audio component, fall out. Otherwise, we interfere with keyboard access to video controls\n if (target && (target.tagName === 'VIDEO' || target.tagName === 'AUDIO')) {\n return;\n }\n\n const focusables = getFocusableElements(container)\n if (focusables && focusables.length) {\n const match = event.shiftKey ? focusables[0] : focusables[focusables.length - 1]\n const goTo = event.shiftKey ? focusables[focusables.length - 1] : focusables[0]\n if (target === match) {\n event.preventDefault();\n goTo.focus();\n }\n }\n }\n }\n}\n\n\nfunction getFocusableElements(container) {\n const focusables = []\n const nodes = container.querySelectorAll(FOCUSABLE_SELECTOR)\n for (let i = 0; i < nodes.length; i++) {\n const el = nodes[i]\n const tabbable = el.getAttribute('tabindex') !== '-1';\n const enabled = !el.disabled && el.getAttribute('aria-disabled') !== 'true';\n const visible = el.offsetWidth > 0 || el.offsetHeight > 0;\n if (tabbable && enabled && visible || el === document.activeElement) {\n focusables.push(el)\n }\n }\n\n focusables.filter(el => {\n let keep = true\n if (el.getAttribute('type') === 'radio' && !el.checked) {\n keep = el === (container.querySelector(`input[name=\"${el.getAttribute('name')}\"]:checked`) || el);\n }\n return keep\n })\n\n focusables.sort((a, b) => {\n const tabindexA = a.getAttribute('tabindex') || 0\n const tabindexB = b.getAttribute('tabindex') || 0\n return ((0 + tabindexA) - (0 + tabindexB))\n })\n\n return focusables;\n}\n\nexport default containTabFocus\n","/**\n * Gets the target element from an element's attribute. Used by elements that 'trigger' another component\n * Target reference can be an id or a selector\n * Checks 3 atttributes\n * - aria-controls\n * - attribute, which defaults to 'data-target'\n * - href\n * @param element with the target or href attribute\n * @param attribute - The attribute to check after aria-controls. Defaults to 'data-target'\n * @return {*}\n */\nfunction getTargetElement(element, attribute = 'data-target') {\n let selector = element.getAttribute('aria-controls') || element.getAttribute(attribute)\n if (!selector) {\n const href = element.getAttribute('href')\n selector = href && href[0]==='#' && href.length > 1 ? href.trim() : ''\n }\n\n try {\n return document.getElementById(selector) || document.querySelector(selector) || null\n } catch (err) {\n return null\n }\n}\n\nexport default getTargetElement\n","const TRANSITION_END = 'transitionend'\nconst onTransitionEnd = (el, callback, propertyName) => {\n let timeoutId\n const eventHandler = event => {\n if (!event || !propertyName || event.propertyName === propertyName) {\n clearTimeout(timeoutId);\n el.removeEventListener(TRANSITION_END, eventHandler);\n callback();\n }\n }\n timeoutId = setTimeout(eventHandler, 1000); //in case event never fires\n el.addEventListener(TRANSITION_END, eventHandler);\n}\n\nexport {\n onTransitionEnd\n}\n","const normalizeKeyMap = {\n 'Esc': 'Escape',\n 'Left': 'ArrowLeft',\n 'Right': 'ArrowRight',\n 'Up': 'ArrowUp',\n 'Down': 'ArrowDown'\n}\n\n/**\n * Normalizes key values to standard strings. e.g. \"Down\" to \"ArrowDown\"\n * @param keyEvent\n * @return {*}\n */\nfunction normalizeKey(keyEvent) {\n let key = keyEvent.key || keyEvent.code\n if (key) {\n key = normalizeKeyMap[key] || key\n }\n return key;\n}\n\n/**\n * Determines whether or not a key event is the user typing.\n * Returns true if the key length is 1 and the ctrl and meta keys are not pressed\n * @param keyEvent\n */\nfunction isTyping(keyEvent) {\n let key = keyEvent.key || keyEvent.code || ''\n return key.length === 1 && !keyEvent.ctrlKey && !keyEvent.metaKey\n}\n\nexport {\n normalizeKey,\n isTyping\n}\n","import { Calendar } from './js/calendar'\nimport { getLocale } from './js/localization'\nimport {\n isValidDateInstance,\n parseDate,\n toISODate,\n toReadableDate,\n configureDates,\n isDateDisabled\n} from './js/date-utils'\nimport { CSS_NS, NAMESPACE } from '../../shared/constants'\nimport containTabFocus from '../../shared/containTabFocus'\nimport { dispatchEvent } from '../../shared/eventDispatcher'\nimport onDOMChanges from '../../shared/onDOMChanges'\nimport getTargetElement from '../../shared/getTargetElement'\nimport { onTransitionEnd } from '../../shared/animation'\nimport { instances } from '../../shared/instances'\nimport { isTyping } from '../../shared/keyboard'\n\nconst CALENDAR_CLASS = `${CSS_NS}calendar`\nconst INSTANCE_KEY = `${NAMESPACE}DateInput`\nconst REMOVED_EVENT = 'date-input:removed'\nconst ESCAPE_LABEL = `${CSS_NS}calendar-escape-label-` + (Math.floor(Math.random() * (1001 - 101 + 1)) + 101)\nlet nextId = 1\n\nconst date_format_label_output_selector = `[data-date-format-label]:not([data-date-format-label=\"done\"])`\nconst date_format_label_default = \"YYYY/MM/DD\"\n\nclass _DateInputInstance {\n constructor(element) {\n const privateData = this._private = {}\n privateData.element = element\n new Array(\"year\", \"month\", \"day\").forEach(datePart => {\n privateData[`${datePart}Input`] = element.querySelector(`input[data-date-part=\"${datePart}\"]`)\n })\n\n if (!(privateData.yearInput && privateData.monthInput && privateData.dayInput)) {\n throw new Error('DateInput element must have inputs for year, month, and day, as indicated by the \"data-date-part\" attribute')\n }\n\n init(this)\n instances.set(element, INSTANCE_KEY, this)\n }\n\n setConfig(config = {}) {\n const currentConfig = this._config || {}\n this._config = { ...currentConfig, ...config, ...configureDates(config, this._private.dateFormat) }\n setValidityState(this)\n if (this._private.calendar) {\n this._private.calendar.setConfig(config)\n }\n }\n\n /**\n * Returns a concatenated date in ISO format (YYYY-MM-DD) based input values.\n * The value may or may not be a valid date string.\n *\n * If using this value as input to new Date() or Date.parse(), append 'T00:00' to return a date for the current\n * timezone; otherwise, the date will set for UTC\n */\n get value() {\n const { yearInput, monthInput, dayInput } = this._private\n const value = new Array(yearInput, monthInput, dayInput)\n .map((input, ix) => {\n const val = input.value.trim()\n return val && (ix === 0 ? to4Digits(val) : to2Digits(val))\n })\n .join('-')\n\n return value === '--' ? '' : value\n }\n\n set value(date) {\n const { yearInput, monthInput, dayInput, dateFormat } = this._private\n if (date && !(date instanceof Date)) {\n date = parseDate(date.toString(), dateFormat)\n }\n if (date) {\n dayInput.value = to2Digits(date.getDate())\n monthInput.value = to2Digits(date.getMonth() + 1)\n yearInput.value = date.getFullYear()\n }\n else {\n dayInput.value = ''\n monthInput.value = ''\n yearInput.value = ''\n }\n\n synchHiddenRelatedElements(this)\n setValidityState(this)\n }\n\n /**\n * If inputs contain valid date values, returns input as a Date object; otherwise returns null\n */\n get valueAsDate() {\n const { yearInput, monthInput, dayInput } = this._private\n try {\n const year = parseInt(yearInput.value.trim())\n const month = parseInt(monthInput.value.trim())\n const day = parseInt(dayInput.value.trim())\n if (isNaN(year + month + day)) {\n return null;\n }\n else if (month < 1 || month > 12) {\n return null;\n }\n else if (day < 1 || day > 31) {\n return null\n }\n else if (yearInput.value.trim().length < 4) {\n return null;\n }\n\n const date = new Date(year, month - 1, day, 0, 0, 0, 0)\n if (!isValidDateInstance(date)) {\n return null\n }\n\n // if date entered resolves to a different date, then an invalid day value was\n // entered. For instance, 4/31/20XX would resolved to 5/1/20XX.\n // Consider this bad input and return null\n return (date.getDate() === (day)) ? date : null\n } catch (err) {\n return null;\n }\n }\n\n get isValid() {\n return this.validity.valid\n }\n\n get validity() {\n const { min, max, disabledDates } = this._config\n const validity = { valid: true }\n const valueAsDate = this.valueAsDate\n\n if (this.value && !valueAsDate) {\n validity.badInput = true\n validity.valid = false\n }\n else if (valueAsDate) {\n const dateStr = this.value\n if (min && dateStr < min) {\n validity.rangeUnderflow = true\n validity.valid = false\n }\n if (max && dateStr > max) {\n validity.rangeOverflow = true\n validity.valid = false\n }\n if (isDateDisabled(disabledDates, valueAsDate, dateStr)) {\n validity.unavailable = true\n validity.valid = false\n }\n }\n\n return validity\n }\n\n toReadableDate() {\n return toReadableDate(this.valueAsDate, this._private.lang)\n }\n\n toggleCalendar() {\n const { trigger } = this._private\n if (!trigger.closest('[aria-disabled=\"true\"]')) {\n if (this.isCalendarOpened()) {\n this.closeCalendar()\n trigger.focus()\n }\n else {\n this.openCalendar()\n }\n }\n }\n\n openCalendar() {\n if (!this._private.calendar) {\n bindCalendar(this)\n }\n\n const _private = this._private\n const { calendar, calendarElement, trigger, transitioning } = _private\n\n if (!this.isCalendarOpened() && !transitioning) {\n calendar.selectedDate = this.valueAsDate\n document.addEventListener('click', _private.documentClickHandler = documentClickHandler(this))\n _private.cancelTabFocus = containTabFocus(calendarElement)\n calendarElement.hidden = false\n // calendar is not hidden, but still not visible until trigger[aria-expanded=\"true\"]\n setTimeout(() => {\n _private.transitioning = true\n onTransitionEnd(calendarElement, () => {\n _private.transitioning = false\n })\n // this will make the calendar visible\n trigger.setAttribute('aria-expanded', true)\n calendar.focus()\n }, 20)\n }\n }\n\n closeCalendar() {\n const _private = this._private\n const { calendarElement, trigger, transitioning, documentClickHandler, cancelTabFocus } = _private\n if (this.isCalendarOpened()) {\n if (documentClickHandler) {\n document.removeEventListener('click', documentClickHandler)\n }\n if (cancelTabFocus) {\n cancelTabFocus()\n }\n if (transitioning) {\n // just close\n calendarElement.hidden = true\n _private.transitioning = false\n trigger.setAttribute('aria-expanded', false)\n }\n else {\n _private.transitioning = true\n onTransitionEnd(calendarElement, () => {\n // once not visible, truly hide the calendar\n calendarElement.hidden = true\n _private.transitioning = false\n })\n // this will make the calendar not visible\n trigger.setAttribute('aria-expanded', false)\n }\n }\n }\n\n isCalendarOpened() {\n const { trigger } = this._private\n return trigger && trigger.getAttribute('aria-expanded') === 'true'\n }\n\n destroy() {\n const privateData = this._private\n if (privateData) {\n const { element, documentClickHandler, cancelTabFocus } = privateData\n removeEventHandlers(this)\n if (documentClickHandler) {\n document.removeEventListener('click', documentClickHandler)\n }\n if (cancelTabFocus) {\n cancelTabFocus()\n }\n element.dataset.enhancedDate = false\n instances.remove(element, INSTANCE_KEY)\n delete this._private\n }\n }\n}\n\n////////////////////////////////////////////////\n// - \"Private\" DateInput methods\n\nfunction init(dateInput) {\n const { element, yearInput, monthInput, dayInput } = dateInput._private\n\n yearInput.maxLength = 4\n monthInput.maxLength = dayInput.maxLength = 2\n\n const { lang, format, dateFormatLabel } = getLocale(element)\n dateInput._private.dateFormat = format\n dateInput._private.dateFormatLabel = dateFormatLabel\n dateInput._private.lang = lang\n dateInput._private.hiddenInput = element.querySelector('input[type=\"hidden\"]')\n\n applyDateFormat(dateInput)\n controlDateFormatLabel(dateInput)\n createA11ySpan(dateInput)\n bindCalendarTrigger(dateInput)\n\n addEventHandler(dateInput, element, 'focusout', focusOutHandler(dateInput))\n addEventHandler(dateInput, element, 'paste', pasteHandler(dateInput))\n addEventHandler(dateInput, element, 'change', changeHandler(dateInput))\n addEventHandler(dateInput, element, 'keydown', keydownHandler(dateInput))\n addEventHandler(dateInput, element, 'input', () => synchHiddenRelatedElements(dateInput))\n addEventHandler(dateInput, element, 'focusout', () => synchHiddenRelatedElements(dateInput))\n synchHiddenRelatedElements(dateInput)\n addEventHandler(dateInput, document, REMOVED_EVENT, ({ detail }) => {\n if (detail === element) {\n dateInput.destroy()\n }\n })\n\n // add all data attributes so can pass to calendar as needed\n const config = {}\n for (let data in element.dataset) {\n if (data !== 'enhancedDate') {\n const value = element.dataset[data]\n config[data] = value === 'true' ? true : value === 'false' ? false : value\n }\n }\n dateInput.setConfig(config)\n element.dataset.enhancedDate = true\n}\n\nfunction addEventHandler(dateInput, element, event, handler) {\n const handlers = dateInput._private.handlers || (dateInput._private.handlers = [])\n handlers.push({ element, event, handler })\n element.addEventListener(event, handler)\n}\n\nfunction removeEventHandlers(dateInput) {\n const handlers = dateInput._private.handlers || []\n handlers.forEach(({ element, event, handler }) => {\n element.removeEventListener(event, handler)\n })\n}\n\n/**\n * Orders date input fields based on locale\n * @param dateInput\n */\nfunction applyDateFormat(dateInput) {\n const container = dateInput._private.element\n const inputsInFormatOrder = dateInput._private.inputsInFormatOrder = []\n let lastDatePart\n\n dateInput._private.dateFormat.split('/')\n .map((placeholder, ix) => {\n const partName = `${placeholder === 'YYYY' ? 'year' : placeholder === 'MM' ? 'month' : 'day'}Input`\n const input = dateInput._private[partName]\n inputsInFormatOrder.push(input)\n let datePart = input\n while (datePart.parentNode !== container) {\n datePart = datePart.parentNode\n }\n lastDatePart = ix === 2 && datePart\n return datePart\n })\n .forEach(datePart => {\n if (datePart !== lastDatePart) {\n lastDatePart.parentNode.insertBefore(datePart, lastDatePart)\n }\n })\n}\n\n/**\n * Control format of date input\n */\nfunction controlDateFormatLabel(dateInput) {\n const date_format_label_output = document.body.querySelectorAll(date_format_label_output_selector)\n const { dateFormat, dateFormatLabel } = dateInput._private\n for (let i = 0; i < date_format_label_output.length; i++) {\n const date_format_label_new = date_format_label_output[i].innerText.match(/^\\(.*\\)$/) ? \"(\" + dateFormat + \")\" : dateFormat\n date_format_label_output[i].innerText = date_format_label_new\n date_format_label_output[i].setAttribute(\"aria-label\", dateFormatLabel)\n date_format_label_output[i].setAttribute(\"data-date-format-label\", \"done\")\n }\n}\n\n\n/**\n * Creates span to insert readable date\n * for screen readers to read\n * @param dateInput\n */\nfunction createA11ySpan(dateInput) {\n const container = dateInput._private.element\n var a11ySpan = container.querySelector(`[data-a11y=\"true\"]`)\n if (!a11ySpan) {\n a11ySpan = document.createElement('span')\n a11ySpan.setAttribute(\"aria-live\", \"assertive\")\n a11ySpan.dataset.a11y = true\n a11ySpan.classList.add(`${CSS_NS}sr-only`)\n container.appendChild(a11ySpan)\n }\n dateInput._private.hiddenOutput = a11ySpan\n}\n\n/**\n * Gets or creates calendar trigger\n * @param dateInput\n */\nfunction bindCalendarTrigger(dateInput) {\n const container = dateInput._private.element\n let trigger = container.querySelector('[data-trigger=\"calendar\"]')\n if (trigger) {\n trigger.setAttribute('aria-expanded', false)\n addEventHandler(dateInput, trigger, 'click', dateInput.toggleCalendar.bind(dateInput))\n trigger.hidden = false\n dateInput._private.trigger = trigger\n let calendar = getTargetElement(trigger) || container.querySelector(`.${CALENDAR_CLASS}`)\n if (!calendar) {\n calendar = document.createElement('div')\n calendar.dataset.dataToday = true\n dateInput._private.element.appendChild(calendar)\n }\n if (!calendar.id) {\n calendar.id = container.id ? `${container.id}__${CALENDAR_CLASS}` : `${CALENDAR_CLASS}-${nextId++}`\n }\n calendar.setAttribute('role', 'dialog')\n calendar.setAttribute('aria-describedby', ESCAPE_LABEL)\n calendar.classList.add(CALENDAR_CLASS)\n trigger.setAttribute('aria-controls', calendar.id)\n calendar.hidden = true\n\n if (document.getElementById(ESCAPE_LABEL) === null) {\n var escapeLabel = document.createElement('span')\n escapeLabel.setAttribute(\"id\", ESCAPE_LABEL)\n escapeLabel.innerText = dateInput._private.lang.escapeLabel\n escapeLabel.hidden = true\n document.body.appendChild(escapeLabel)\n }\n }\n}\n\n/**\n * Gets or create the calendar component\n * @param dateInput\n */\nfunction bindCalendar(dateInput) {\n const container = dateInput._private.element\n const trigger = dateInput._private.trigger\n let calendar = getTargetElement(trigger) || container.querySelector(`.${CALENDAR_CLASS}`)\n\n dateInput._private.calendarElement = calendar\n dateInput._private.calendar = new Calendar(calendar, dateInput._config)\n dateInput._private.calendar.render()\n addEventHandler(dateInput, calendar, 'keydown', calendarKeyHandler(dateInput))\n addEventHandler(dateInput, calendar, 'selected', calendarDateSelectedHandler(dateInput))\n}\n\n\nfunction pasteHandler(dateInput) {\n return event => {\n const target = event.target\n const { inputsInFormatOrder } = dateInput._private\n const order = inputsInFormatOrder.indexOf(target)\n if (order > -1) {\n if (order === 0) {\n const clipboardData = event.clipboardData || window.clipboardData\n if (clipboardData) {\n event.preventDefault()\n const text = clipboardData.getData('text')\n setTimeout(() => {\n dateInput.value = text\n fireChangeEvent(dateInput)\n // if valid date, focus on end of date, else focus on beginning\n const focusOn = dateInput.value ? inputsInFormatOrder[2] : inputsInFormatOrder[0]\n focusOn.focus()\n focusOn.selectionStart = focusOn.selectionEnd = text.length\n }, 0)\n }\n }\n else {\n event.preventDefault()\n }\n }\n }\n}\n\nfunction changeHandler(dateInput) {\n return event => {\n const target = event.target\n if (dateInput._private.inputsInFormatOrder.indexOf(target) > -1) {\n const date = dateInput.valueAsDate\n if (date) {\n dateInput.value = date\n }\n setValidityState(dateInput)\n fireChangeEvent(dateInput)\n }\n }\n}\n\nfunction keydownHandler(dateInput) {\n return event => {\n const target = event.target\n const { yearInput, inputsInFormatOrder } = dateInput._private\n const inputIX = inputsInFormatOrder.indexOf(target)\n if (inputIX > -1) {\n const key = event.key || ''\n switch (key) {\n case '/':\n case '-':\n case '.':\n event.preventDefault()\n if (target.value.length\n && target.selectionStart === target.value.length\n && target.selectionStart === target.selectionEnd) {\n if (inputsInFormatOrder[inputIX + 1]) {\n inputsInFormatOrder[inputIX + 1].focus()\n }\n }\n break;\n\n default: {\n if (isTyping(event) && !key.match(/\\d/)) {\n event.preventDefault()\n }\n }\n }\n }\n }\n}\n\nfunction focusOutHandler(dateInput) {\n return event => {\n const target = event.target\n const { monthInput, dayInput } = dateInput._private\n if ((target === monthInput || target === dayInput) && target.value.length === 1) {\n target.value = `0${target.value}`\n }\n }\n}\n\nfunction calendarKeyHandler(dateInput) {\n return event => {\n switch (event.key || event.code) {\n case 'Esc':\n case 'Escape':\n if (dateInput.isCalendarOpened()) {\n dateInput.closeCalendar()\n dateInput._private.trigger.focus()\n }\n }\n }\n}\n\nfunction calendarDateSelectedHandler(dateInput) {\n return event => {\n dateInput.value = dateInput._private.calendar.selectedDate\n fireChangeEvent(dateInput)\n dateInput.closeCalendar()\n dateInput._private.trigger.focus()\n }\n}\n\nfunction synchHiddenRelatedElements(dateInput) {\n const { hiddenInput, hiddenOutput } = dateInput._private\n if (hiddenInput) {\n hiddenInput.value = dateInput.value\n }\n if (hiddenOutput) {\n hiddenOutput.innerText = dateInput.toReadableDate()\n }\n}\n\nfunction documentClickHandler(dateInput) {\n return event => {\n const { calendarElement, trigger } = dateInput._private\n if (!document.body.contains(event.target)) return // element was removed, probably a change of date\n const keepOpen = calendarElement.contains(event.target) || trigger.contains(event.target)\n if (!keepOpen) {\n dateInput.closeCalendar()\n }\n }\n}\n\nfunction fireChangeEvent(dateInput) {\n dispatchEvent(dateInput._private.element, 'change', { detail: { dateInput: dateInput } })\n}\n\nfunction setValidityState(dateInput) {\n const { element } = dateInput._private\n const invalids = []\n const validity = dateInput.validity\n for (let state in validity) {\n if (state !== 'valid' && validity[state]) {\n invalids.push(state)\n }\n }\n if (invalids.length) {\n element.dataset.validity = invalids.join()\n dispatchEvent(element, 'invalid', { detail: validity })\n }\n else {\n delete element.dataset.validity\n }\n}\n\n////////////////////////////////////////////////\n// - Helper functions\n\nfunction to2Digits(value) {\n return `00${value}`.slice(-2)\n}\n\nfunction to4Digits(value) {\n return `0000${value}`.slice(-4)\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nonDOMChanges(`.${CSS_NS}date-input`,\n function onDateAdded(element) {\n if (!element.dataset.enhancedDate) {\n new _DateInputInstance(element)\n }\n },\n function onDateRemoved(element) {\n dispatchEvent(document, REMOVED_EVENT, { detail: element })\n })\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nclass DateInput {\n constructor(element, config) {\n this._instance = instances.get(element, INSTANCE_KEY) || new _DateInputInstance(element)\n this.setConfig(config)\n }\n\n setConfig(config) {\n this._instance.setConfig(config)\n }\n\n /**\n * Returns a concatenated date in ISO format (YYYY-MM-DD) based input values.\n * The value may or may not be a valid date string.\n *\n * If using this value as input to new Date() or Date.parse(), append 'T00:00' to return a date for the current\n * timezone; otherwise, the date will set for UTC\n */\n get value() {\n return this._instance.value\n }\n\n set value(date) {\n this._instance.value = date\n }\n\n /**\n * If inputs contain valid date values, returns inout as a Date object; otherwise returns null\n */\n get valueAsDate() {\n return this._instance.valueAsDate\n }\n\n get isValid() {\n return this._instance.isValid\n }\n\n get validity() {\n return this._instance.validity\n }\n\n toReadableDate() {\n return this._instance.toReadableDate()\n }\n\n toggleCalendar() {\n this._instance.toggleCalendar()\n }\n\n openCalendar() {\n this._instance.openCalendar()\n }\n\n closeCalendar() {\n this._instance.closeCalendar()\n }\n\n isCalendarOpened() {\n return this._instance.isCalendarOpened()\n }\n\n destroy() {\n this._instance.destroy()\n delete this._instance\n }\n}\n\nexport { DateInput }\n\n// todo: how to disable? => disable fieldset. Not sure about aria-disabled. Read-only instead?\n// todo: example of showing invalid states\n// todo: placement of calendar when off-screen\n","function enableDropdownMenu (element) {\n if (element.dataset.enhancedDropdownMenu === 'true') return null\n\n element.dataset.enhancedDropdownMenu = true\n let state = {}\n\n function onChange (event) {\n if (!event.isMenuAction) {\n const diff = new Date().getTime() - state.lastKeyboardTS\n state.keyboardChange = diff < 50\n if (!state.keyboardChange) {\n fireMenuActionEvent()\n }\n }\n }\n\n function onKeyDown (event) {\n const key = event.key || event.code\n switch (key) {\n case 'Enter':\n if (state.keyboardChange) {\n event.preventDefault()\n fireMenuActionEvent()\n }\n break\n\n case 'Esc':\n case 'Escape':\n if (state.keyboardChange) {\n event.preventDefault()\n element.value = state.restoreValue\n initState()\n }\n break\n\n case 'ArrowUp':\n case 'Up':\n case 'ArrowDown':\n case 'Down':\n case 'ArrowLeft':\n case 'Left':\n case 'ArrowRight':\n case 'Right':\n state.lastKeyboardTS = new Date().getTime()\n break\n\n default:\n if (key.length === 1) {\n // character pressed\n state.lastKeyboardTS = new Date().getTime()\n }\n }\n }\n\n function onFocus () {\n initState()\n }\n\n function onBlur () {\n if (state.keyboardChange) {\n fireMenuActionEvent()\n }\n }\n\n function fireMenuActionEvent () {\n window.setTimeout(() => {\n const eventType = 'change'\n let event\n if ('Event' in window && typeof window.Event === 'function') {\n event = new Event(eventType, { bubbles: true, cancelable: false })\n } else {\n event = document.createEvent('Event')\n event.initEvent(eventType, true, false)\n }\n event.isMenuAction = true\n element.dispatchEvent(event)\n initState()\n })\n }\n\n function initState () {\n state.lastKeyboardTS = 0\n state.keyboardChange = false\n state.restoreValue = element.value\n }\n\n initState()\n\n element.addEventListener('change', onChange)\n element.addEventListener('keydown', onKeyDown)\n element.addEventListener('focus', onFocus)\n element.addEventListener('blur', onBlur)\n\n return function disableDropdownMenu () {\n element.removeEventListener('change', onChange)\n element.removeEventListener('keydown', onKeyDown)\n element.removeEventListener('focus', onFocus)\n element.removeEventListener('blur', onBlur)\n }\n}\n\n// ///////////////////////////////////////////////////////////////////////////////////////////////////////\n\nclass DropdownMenu {\n constructor (element) {\n this._disableDropdownMenu = enableDropdownMenu(element)\n }\n\n /**\n * Detaches from the element, removes event listeners, and frees resources.\n */\n destroy () {\n if (this._disableDropdownMenu) {\n this._disableDropdownMenu()\n }\n delete this._disableDropdownMenu\n }\n}\n\nconst selector = 'select[data-dropdown-menu=\"true\"]'\ndocument.addEventListener('focusin', e => {\n const el = e.target\n if (el.matches(selector)) {\n enableDropdownMenu(el)\n }\n})\n\nexport { DropdownMenu }\n","import onDOMChanges from './onDOMChanges'\nimport { instances } from './instances'\n\nclass ModuleInstance {\n constructor (moduleName, element, config = {}, defaultConfig) {\n if ('string' === typeof element) {\n element = document.getElementById(element) || document.querySelector(element)\n }\n this._private = {\n element,\n moduleName,\n enhancedFlagName: (config.enhancedFlagName || moduleName),\n listeners: [],\n defaultConfig\n }\n this._init(config)\n this.on = this.addEventListener.bind(this)\n this.off = this.removeEventListener.bind(this)\n }\n\n get element () {\n return this._private.element\n }\n\n addEventHandler (element, event, handler) {\n const handlers = this._private.handlers || (this._private.handlers = [])\n handlers.push({ element, event, handler})\n element.addEventListener(event, handler)\n return handlers[handlers.length - 1]\n }\n\n removeEventHandlers () {\n const handlers = this._private.handlers || []\n handlers.forEach(({ element, event, handler }) => {\n element.removeEventListener(event, handler)\n })\n }\n\n removeEventHandler (handlerMap) {\n const { element, event, handler } = handlerMap\n element.removeEventListener(event, handler)\n const handlers = this._private.handlers || []\n const index = handlers.indexOf(handlerMap)\n if (index > -1) {\n handlers.splice(index, 1)\n }\n }\n\n setConfig(config = {}) {\n const _private = this._private\n const { datasetEnhancedProperty, defaultConfig = {}} = _private\n const dataConfig = getDataConfiguration(this.element, datasetEnhancedProperty)\n const currentConfig = this.getConfig() || {}\n this._private.config = {...defaultConfig, ...dataConfig, ...currentConfig, ...config}\n return this\n }\n\n getConfig() {\n return this._private.config\n }\n\n destroy () {\n if (this._private) {\n const { element, moduleName, datasetEnhancedProperty, cancelDOMWatch } = this._private\n this.removeEventHandlers()\n cancelDOMWatch()\n if (datasetEnhancedProperty) {\n delete element.dataset[datasetEnhancedProperty]\n }\n instances.remove(element, moduleName)\n delete this._private\n }\n return this\n }\n\n addEventListener (type, handler) {\n if (this._private) {\n const { listeners } = this._private || {}\n const typeListeners = listeners[type] || (listeners[type] = [])\n typeListeners.push(handler);\n }\n return this;\n }\n\n removeEventListener (type, handler) {\n if (this._private) {\n const { listeners } = this._private\n const typeListeners = listeners[type] || []\n const index = typeListeners.indexOf(handler);\n if (index > -1) {\n typeListeners.splice(index, 1);\n }\n }\n return this;\n }\n\n dispatchEvent (event) {\n if (this._private) {\n const target = this\n Object.defineProperty(event, 'target', { get() { return target } })\n const { listeners } = this._private\n const typeListeners = listeners[event.type] || []\n typeListeners.forEach(handler => {\n handler.call(this, event);\n })\n }\n return !event.defaultPrevented\n }\n\n _init (config = {}) {\n const { element, moduleName, enhancedFlagName } = this._private\n const datasetEnhancedProperty = this._private.datasetEnhancedProperty = getDatasetEnhancedProperty(enhancedFlagName)\n const enhancedDataAttribute = 'data-' + datasetEnhancedProperty.replace(/[A-Z]/g, v => \"-\" + v.toLowerCase())\n this.setConfig(config)\n\n let destroyTimeout = 0\n const onInstanceAdded = addedEl => {\n // use timeout in case add event comes before remove event\n window.setTimeout(() => {\n if (addedEl === element) {\n window.clearTimeout(destroyTimeout)\n destroyTimeout = 0\n }\n }, 100)\n }\n\n const onInstanceDeleted = deletedEl => {\n if (deletedEl === element) {\n destroyTimeout = window.setTimeout(this.destroy.bind(this), 200)\n }\n }\n\n this._private.cancelDOMWatch = onDOMChanges(`[${enhancedDataAttribute}=\"true\"]`, onInstanceAdded, onInstanceDeleted)\n\n instances.set(element, moduleName, this)\n this.element.dataset[datasetEnhancedProperty] = true\n }\n\n static getInstance(moduleName, element, constructor, config) {\n let instance = instances.get(element, moduleName)\n if (!instance) {\n instance = new constructor(element, config)\n } else if (config && instance.setConfig) {\n instance.setConfig(config)\n }\n return instance\n }\n\n static isEnhanced(element, enhancedFlagName) {\n return element.dataset[getDatasetEnhancedProperty(enhancedFlagName)] === \"true\"\n }\n}\n\nfunction getDatasetEnhancedProperty(enhancedFlagName) {\n return `enhanced${enhancedFlagName[0].toUpperCase()}${enhancedFlagName.substring(1)}`\n}\n\nfunction getDataConfiguration(element, datasetEnhancedProperty) {\n const dataConfig = {}\n for (let data in element.dataset) {\n if (data !== datasetEnhancedProperty) {\n const value = element.dataset[data]\n dataConfig[data] = value === 'true' || value === \"\" ? true : value === 'false' ? false : value\n }\n }\n return dataConfig\n}\n\nexport { ModuleInstance }\n","import { CSS_NS } from './constants'\n\nconst TAB_TRAP_ATTRIBUTE = 'data-dialog-tab-trap'\nconst FOCUSABLE_ELEMENTS = [\n 'a[href]:not([tabindex^=\"-\"]):not([inert])',\n 'area[href]:not([tabindex^=\"-\"]):not([inert])',\n 'input:not([disabled]):not([inert])',\n 'select:not([disabled]):not([inert])',\n 'textarea:not([disabled]):not([inert])',\n 'button:not([disabled]):not([inert])',\n 'iframe:not([tabindex^=\"-\"]):not([inert])',\n 'audio:not([tabindex^=\"-\"]):not([inert])',\n 'video:not([tabindex^=\"-\"]):not([inert])',\n '[contenteditable]:not([tabindex^=\"-\"]):not([inert])',\n `[tabindex]:not([tabindex^=\"-\"]):not([inert]):not([${TAB_TRAP_ATTRIBUTE}])`\n]\n\nconst classes = {\n DISMISS: `${CSS_NS}modal__dismiss`\n}\n\nclass Dialog {\n constructor (element, config) {\n this._private = {element, config}\n this._onFocusAway = this._onFocusAway.bind(this)\n }\n\n open () {\n if (this._isOpen) {\n return\n }\n const privateData = this._private\n const { element, config } = privateData\n privateData.returnTo = config.returnTo !== false && (getConfigElement(config.returnTo) || document.activeElement)\n const tabTraps = getTabTraps(element)\n this._tabTrapFocusHandler = onTabTrapFocus(element, tabTraps)\n tabTraps.forEach(tabTrap => tabTrap.addEventListener('focus', this._tabTrapFocusHandler))\n document.addEventListener('focus', this._onFocusAway, true)\n this._initialFocus()\n this._isOpen = true\n }\n\n close () {\n if (this._isOpen) {\n this._isOpen = false\n this._removeHandlers()\n const { returnTo, element } = this._private\n if (returnTo && returnTo.focus) {\n const focused = document.querySelector(':focus')\n // if the focus is on another element outside of the dialog, do not change focus\n if (!focused || focused === element || element.contains(focused)) {\n returnTo.focus()\n }\n }\n }\n }\n\n _initialFocus () {\n const { element, config } = this._private\n if (config.initialFocus !== false) {\n let initialFocus = getConfigElement(config.initialFocus, element)\n if (!initialFocus) {\n const [firstFocusable, secondFocusable] = getFocusableChildren(element)\n if (firstFocusable) {\n initialFocus = firstFocusable\n if (firstFocusable.classList.contains(classes.DISMISS) && secondFocusable) {\n initialFocus = secondFocusable\n }\n } else {\n initialFocus = element\n }\n }\n focus(initialFocus, element)\n }\n }\n\n _onFocusAway ({target}) {\n if (this._isOpen) {\n // if focus leaves the dialog, for instance if clicked on address bar then tab in,\n // return to 1st element\n const { element, config } = this._private\n if (target !== element && !element.contains(target) && !config.modeless) {\n this._initialFocus()\n }\n }\n }\n\n _removeHandlers () {\n document.removeEventListener('focus', this._onFocusAway)\n if (this._tabTrapFocusHandler) {\n const tabTraps = getTabTraps(this._private.element)\n tabTraps.forEach(tabTrap => tabTrap.removeEventListener('focus', this._tabTrapFocusHandler))\n delete this._tabTrapFocusHandler\n }\n }\n\n destroy () {\n this._removeHandlers()\n delete this._private\n }\n\n static get tabTrapAttribute () {\n return TAB_TRAP_ATTRIBUTE\n }\n}\n\nfunction getTabTraps (element) {\n const tabTraps = Array.from(element.querySelectorAll(`[${TAB_TRAP_ATTRIBUTE}]`))\n if (!tabTraps.length) {\n tabTraps.push(element.insertBefore(createTabTrap(), element.firstChild))\n tabTraps.push(element.appendChild(createTabTrap()))\n }\n return tabTraps\n}\n\nfunction createTabTrap () {\n const tabTrap = document.createElement('span')\n tabTrap.setAttribute(TAB_TRAP_ATTRIBUTE, '')\n tabTrap.setAttribute('tabindex', 0)\n return tabTrap\n}\n\nfunction onTabTrapFocus (element, tabTraps) {\n return ({target, relatedTarget}) => {\n const focusables = getFocusableChildren(element)\n // if on the last tabTrap, or focusing from the dialog into its contents, focus on first\n // else focus on last\n const index = target === tabTraps[1] || (relatedTarget && relatedTarget.contains(target)) ? 0 : [focusables.length - 1]\n if (focusables[index]) {\n focus(focusables[index], element)\n }\n }\n}\n\nfunction getFocusableChildren (element) {\n const children = Array.from (element.querySelectorAll(FOCUSABLE_ELEMENTS.join(',')))\n return children\n .filter(child => {\n return !!(\n child.offsetWidth ||\n child.offsetHeight ||\n child.getClientRects().length\n )\n })\n}\n\nfunction focus (el, dlg) {\n let focusOn = el\n // if focusing on a radio button, focus on the selected radio button\n if (el.getAttribute('type') === 'radio' && !el.checked) {\n focusOn = dlg.querySelector(`input[name=\"${el.getAttribute('name')}\"]:checked`) || el\n }\n if (focusOn.focus) {\n focusOn.focus()\n }\n}\n\nfunction getConfigElement (id_selector_or_node, context = document) {\n return id_selector_or_node && (id_selector_or_node instanceof HTMLElement ? id_selector_or_node : context.querySelector(id_selector_or_node) || document.getElementById(id_selector_or_node))\n}\n\nexport { Dialog }\n","/**\n * Returns a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * the number of milliseconds specified. If `immediate` is passed, trigger the function on the\n * leading edge, instead of the trailing.\n * (inspired by https://davidwalsh.name/javascript-debounce-function)\n * @param {*} fn The function to call\n * @param {*} delay The number of milliseconds to wait. Defaults to 300\n * @param {*} immediate If true, performs the function on the leading edge of the timeout\n */\nconst debounce = (fn, delay=300, immediate) => {\n\tlet timeout\n\treturn function() {\n const context = this\n const args = arguments;\n\t\tconst callNow = immediate && !timeout\n\t\tclearTimeout(timeout)\n\t\ttimeout = setTimeout(() => {\n\t\t\ttimeout = null\n\t\t\tif (!immediate) fn.apply(context, args)\n\t\t}, delay)\n\t\tif (callNow) fn.apply(context, args)\n }\n}\n\nexport default debounce\n","/**\n * Looks for instances of [data-scroll-shadow=\"true\"] to manage the shadow effect\n * For each scroll panel:\n * - Observes changes to the scrollpanel using MutationObserver\n * - on window.resize events and any observed changes to scrollpanel, positions the shadow\n *\n * The shadow effect is shown only when there are not scrollbars, and their is overflow.\n *\n * To determine if scrollbars exists, the scroll panel's clientWidth is compared to its offsetWidth.\n * If they are the same, then there are no scrollbars\n *\n * The tds-scroll-shadow--x classe is added if there is horizontal overflow; otherwise it is removed\n * The tds-scroll-shadow--y classe is added if there is vertical overflow; otherwise it is removed\n *\n */\n\nimport { CSS_NS } from '../constants'\nimport debounce from '../debounce'\nimport onDOMChanges from '../onDOMChanges'\nimport { dispatchEvent } from '../eventDispatcher'\n\nconst REMOVED_EVENT = 'scrollShadow:removed'\nconst SHADOW_EFFECT_CLASSNAME = `${CSS_NS}scroll-shadow`\n\nconst instanceList = []\nconst onResize = debounce(() => {\n instanceList.forEach(instance => instance.setShadowEffect())\n}, 200)\n\nclass ScrollShadow {\n constructor(scrollpanel) {\n this._private = {\n scrollpanel,\n shadowX: false,\n shadowY: false\n }\n\n if (!instanceList.length) {\n window.addEventListener('resize', onResize)\n }\n instanceList.push(this)\n this.setShadowEffect()\n }\n\n setShadowEffect() {\n if (this._private) {\n const { scrollpanel } = this._private\n this.pauseWatch()\n const offsets = getShadowOffsets(scrollpanel)\n applyShadowEffect(scrollpanel, offsets)\n window.setTimeout(() => { this.watch()}, 100)\n }\n }\n\n destroy() {\n this.pauseWatch()\n delete this._private\n const ix = instanceList.indexOf(this)\n if (ix > -1) {\n instanceList.splice(ix, 1)\n if (!instanceList.length) {\n window.removeEventListener('resize', onResize)\n }\n }\n }\n\n watch() {\n const privateData = this._private\n const scrollpanel = privateData && privateData.scrollpanel\n if (scrollpanel) {\n const observer = privateData.observer || (privateData.observer =\n new MutationObserver(this.setShadowEffect.bind(this)))\n observer.observe(scrollpanel, { attributes: true, characterData: true, childList: true, subtree: true })\n }\n }\n\n pauseWatch() {\n const { observer } = this._private\n if (observer) {\n observer.disconnect()\n }\n }\n\n _checkDestroy(element) {\n if (element === this._private.scrollpanel) {\n this.destroy()\n }\n }\n}\n\nfunction getShadowOffsets(scrollpanel) {\n let x = false, y = false\n const style = window.getComputedStyle(scrollpanel)\n const borderLeft = style.borderLeftWidth ? parseInt(style.borderLeftWidth) : 0\n const borderRight = style.borderRightWidth ? parseInt(style.borderRightWidth) : 0\n const borderTop = style.borderTopWidth ? parseInt(style.borderTopWidth) : 0\n const borderBottom = style.borderBottomWidth ? parseInt(style.borderBottomWidth) : 0\n const offsetWidth = scrollpanel.offsetWidth - borderLeft - borderRight\n const offsetHeight = scrollpanel.offsetHeight - borderTop - borderBottom\n\n // only create the shadow effect if no scrollbars are showing but there is overflow\n if (scrollpanel.clientWidth === offsetWidth && scrollpanel.clientHeight === offsetHeight) {\n x = (scrollpanel.clientWidth < scrollpanel.scrollWidth)\n y = (scrollpanel.clientHeight < scrollpanel.scrollHeight)\n }\n return { x, y }\n}\n\nfunction applyShadowEffect(scrollpanel, { x, y }) {\n\n scrollpanel.classList[x ? 'add' : 'remove'](`${SHADOW_EFFECT_CLASSNAME}--x`)\n scrollpanel.classList[y ? 'add' : 'remove'](`${SHADOW_EFFECT_CLASSNAME}--y`)\n}\n\n\n\ndocument.addEventListener(REMOVED_EVENT,\n (e) => instanceList.forEach(instance => instance._checkDestroy(e.detail)))\n\nonDOMChanges(`[data-scroll-shadow=\"true\"]`,\n function onDataTableAdded(scrollpanel) {\n new ScrollShadow(scrollpanel)\n },\n function onDataTableRemoved(element) {\n dispatchEvent(document, REMOVED_EVENT, { detail: element })\n })\n\n\nexport { ScrollShadow }\n","import { ModuleInstance } from '../../shared/ModuleInstance'\nimport { CSS_NS } from '../../shared/constants'\nimport { dispatchEvent } from '../../shared/eventDispatcher'\nimport { onTransitionEnd } from '../../shared/animation'\nimport getTargetElement from '../../shared/getTargetElement'\nimport { Dialog } from '../../shared/Dialog'\nimport { ScrollShadow } from '../../shared/scroll-shadow'\n\nconst MODULE_NAME = 'Modal'\nconst MODAL_TRIGGER_ATTR = 'data-trigger-modal'\nconst MODAL_OPEN_BODY_CLASS = `${CSS_NS}body--modal-open`\nconst MODAL_DISMISS_SELECTOR = `[data-dismiss=\"modal\"]`\nconst MADE_INERT_ATTR = 'made-inert-by-tds-modal';\nconst MADE_INERT_ALL = 'true';\nconst MADE_INERT_INERT_ONLY = 'inert-only';\nconst EVENTS = {\n OPEN: 'modal.open',\n OPENED: 'modal.opened',\n CLOSE: 'modal.close',\n CLOSED: 'modal.closed'\n}\nconst classes = {\n DISMISS: `${CSS_NS}modal__dismiss`,\n BODY: `${CSS_NS}modal__dialog-body`\n}\n\nconst defaultConfig = {\n escapeClose: true\n}\n\nclass _ModalInstance extends ModuleInstance {\n constructor(element, config = {}) {\n const backdropClose = !!(element && element.querySelector(`.${classes.DISMISS}`))\n super(MODULE_NAME, element, config, { ...defaultConfig, backdropClose })\n this._dismissHandler = this._dismissHandler.bind(this)\n }\n\n open() {\n const element = this.element\n const privateData = this._private\n const { dialog, positioned } = privateData\n const config = this.getConfig()\n\n if (!positioned && !config.doNotMove) {\n // move element to the end of the document body for z index layering\n document.body.appendChild(element)\n privateData.positioned = true\n window.setTimeout(this.open.bind(this), 50) // use timeout after move so animation will work\n return\n }\n\n if (element && element.hidden) {\n setBodyModalOpenState(true, this)\n inertOutsideNodes(element)\n const eventInit = {}\n if (config.relatedTarget) {\n eventInit.relatedTarget = config.relatedTarget\n }\n\n onTransitionEnd(element, () => {\n if (element.hidden) {\n return // in case closed before transition ended\n }\n privateData.clickHandler = this.addEventHandler(element, 'click', this._dismissHandler)\n privateData.keydownHandler = this.addEventHandler(document, 'keydown', this._dismissHandler)\n if (dialog) {\n dialog.open()\n const body = element.querySelector(`.${classes.BODY}`)\n if (body && ScrollShadow) {\n privateData.scrollShadow = new ScrollShadow(body)\n } else {\n console.log('%cNO SCROLL SHADOW! CHECK body class matches in HTML to JS definition!', 'background: #F00; color: #FFF');\n }\n }\n dispatchEvent(this, EVENTS.OPENED, eventInit)\n dispatchEvent(element, EVENTS.OPENED, eventInit)\n element.classList.remove('transitioning')\n })\n element.classList.add('transitioning')\n element.hidden = false\n dispatchEvent(this, EVENTS.OPEN, eventInit)\n dispatchEvent(element, EVENTS.OPEN, eventInit)\n }\n }\n\n close(returnValue) {\n const element = this.element\n this._returnValue = returnValue\n if (element && !element.hidden) {\n const eventInit = {\n cancelable: true,\n detail: returnValue\n }\n\n if (dispatchEvent(this, EVENTS.CLOSE, eventInit) && dispatchEvent(element, EVENTS.CLOSE, eventInit)) {\n const privateData = this._private\n const { dialog, clickHandler, keydownHandler, scrollShadow } = privateData\n element.classList.add('transitioning')\n element.hidden = true\n if (clickHandler) {\n this.removeEventHandler(clickHandler)\n }\n if (keydownHandler) {\n this.removeEventHandler(keydownHandler)\n }\n if (dialog) {\n dialog.close()\n }\n setBodyModalOpenState(false, this)\n const madeInert = Array.from(document.querySelectorAll(`[${MADE_INERT_ATTR}]`))\n madeInert.forEach(node => {\n node.removeAttribute('inert')\n if (node.getAttribute(MADE_INERT_ATTR) === MADE_INERT_ALL) {\n node.removeAttribute('aria-hidden')\n }\n node.removeAttribute(MADE_INERT_ATTR)\n })\n\n if (scrollShadow) {\n scrollShadow.destroy()\n delete privateData.scrollShadow\n }\n\n onTransitionEnd(element, () => {\n eventInit.cancelable = false\n dispatchEvent(this, EVENTS.CLOSED, eventInit)\n dispatchEvent(element, EVENTS.CLOSED, eventInit)\n element.classList.remove('transitioning')\n }, 'opacity')\n }\n }\n }\n\n destroy() {\n const { dialog, scrollShadow } = (this._private || {})\n super.destroy()\n if (dialog) {\n dialog.destroy()\n }\n if (scrollShadow) {\n scrollShadow.destroy()\n }\n }\n\n get returnValue() {\n return this._returnValue\n }\n\n _init(config = {}) {\n super._init(config)\n const dlg = this.element.matches('[role=\"dialog\"],[role=\"alertdialog\"]') ? this.element : this.element.querySelector('[role=\"dialog\"],[role=\"alertdialog\"]')\n if (dlg) {\n this._private.dialog = new Dialog(dlg, this.getConfig())\n }\n }\n\n _dismissHandler({ type, target }) {\n const config = this.getConfig()\n let closeModal = false\n switch (type) {\n case 'click':\n if (target === this.element) {\n if (config.backdropClose) {\n closeModal = 'backdrop'\n }\n } else {\n const dismiss = target.closest(`.${CSS_NS}modal__dismiss, ${MODAL_DISMISS_SELECTOR}`)\n if (dismiss) {\n closeModal = dismiss.value\n }\n }\n break\n\n case 'keydown':\n if (event.which === 27 && config.escapeClose) {\n closeModal = 'escape'\n }\n break\n }\n if (closeModal !== false) {\n this.close(closeModal)\n }\n }\n}\n\nfunction setBodyModalOpenState(open, modal) {\n const body = document.body\n if (open) {\n const vScrollBarWidth = window.innerWidth - body.clientWidth\n if (vScrollBarWidth) {\n body.style.paddingRight = `${vScrollBarWidth}px`\n }\n document.body.classList.add(MODAL_OPEN_BODY_CLASS)\n }\n else {\n onTransitionEnd(modal.element, () => {\n body.style.removeProperty('padding-right')\n body.classList.remove(MODAL_OPEN_BODY_CLASS)\n }, 'opacity')\n }\n preventIOSScroll(open, modal)\n}\n\nfunction preventIOSScroll(open, modal) {\n const privateData = modal._private\n if (open) {\n if (window.CSS && CSS.supports && CSS.supports(\"-webkit-overflow-scrolling: touch\")) {\n privateData.stored_scrollTop = window.pageYOffset || document.body.scrollTop\n setTimeout(() => {\n document.body.style.position = \"fixed\"\n document.body.style.top = `${-privateData.stored_scrollTop}px`\n document.body.style.right = \"0\"\n document.body.style.bottom = \"0\"\n document.body.style.left = \"0\"\n }, 1000);\n }\n } else {\n const body_pos = window.getComputedStyle(document.body).position\n if (body_pos === \"fixed\") {\n document.body.style.removeProperty(\"position\")\n document.body.style.removeProperty(\"top\")\n document.body.style.removeProperty(\"left\")\n document.body.style.removeProperty(\"bottom\")\n document.body.style.removeProperty(\"right\")\n window.scrollTo(window.pageXOffset, privateData.stored_scrollTop)\n }\n }\n}\n\nfunction inertOutsideNodes(element) {\n const siblings = Array.from(element.parentNode.children)\n siblings\n .filter(sibling => ['SCRIPT', 'STYLE'].indexOf(sibling.tagName) === -1)\n .forEach(sibling => {\n if (sibling !== element && !sibling.hasAttribute('inert')) {\n const ariaHidden = sibling.getAttribute('aria-hidden')\n let madeInertValue = MADE_INERT_ALL\n sibling.setAttribute('inert', '')\n if (ariaHidden === 'true') {\n madeInertValue = MADE_INERT_INERT_ONLY\n } else {\n sibling.setAttribute('aria-hidden', 'true')\n }\n sibling.setAttribute(MADE_INERT_ATTR, madeInertValue)\n }\n })\n if (element.parentNode !== document.body && element.parentNode.parentNode) {\n inertOutsideNodes(element.parentNode)\n }\n}\n\n/**\n * @description A class to initialize a modal element\n * @class\n * @param {DomElement} element - the dom element\n * @param {config} object - config\n */\n\nclass Modal {\n constructor(element, config) {\n this._instance = ModuleInstance.getInstance(MODULE_NAME, element, _ModalInstance, config)\n }\n\n /**\n * Sets or resets the configuration\n * When resetting, only properties included in the config object will be updated\n * @param {object} config\n */\n setConfig(config) {\n this._instance.setConfig(config)\n return this\n }\n\n /**\n * Opens (shows) the modal\n */\n open() {\n this._instance.open()\n return this\n }\n\n /**\n * Closes the modal\n * @param {*} returnValue The value to set as the returnValue and the value passed in the 'modal.close' event\n */\n close(returnValue) {\n this._instance.close(returnValue)\n return this\n }\n\n /**\n * Detaches from the nav element, removes event listeners, and frees resources.\n */\n destroy() {\n this._instance.destroy()\n delete this._instance\n return this\n }\n\n /**\n * The modal DOM element\n */\n get element() {\n return this._instance.element\n }\n\n /**\n * The returnValue passed to close\n */\n get returnValue() {\n return this._instance.returnValue\n }\n\n /**\n * Adds an event handler for this module. (Not the DOM element)\n * @param {*} type - Event type\n * @param {*} handler The handler function\n */\n on(type, handler) {\n this._instance.on(type, handler)\n return this\n }\n\n /**\n * Removes an event handler for this module. (Not the DOM element)\n * @param {*} type - Event type\n * @param {*} handler The handler function\n */\n off(type, handler) {\n this._instance.off(type, handler)\n return this\n }\n}\n\ndocument.addEventListener('click', function (e) {\n const trigger = e.target.closest(`[${MODAL_TRIGGER_ATTR}]`)\n if (trigger) {\n const modalEl = getTargetElement(trigger, MODAL_TRIGGER_ATTR)\n new Modal(modalEl, { relatedTarget: trigger }).open()\n if (trigger.tagName === 'A' || trigger.tagName === 'AREA') {\n e.preventDefault()\n }\n }\n})\n\nexport { Modal }\n","/**\n * @description A class to initialize a timepicker element\n * - input validation\n * - input formats\n * - input highlight\n * - input default current timestamp\n * - Arrow Key Up Down Update Time\n * - 24 hour input conversion\n * - Arrow Key Left Right Switch Focus\n * - Option to set default time\n * - Option to set max time\n * - custom dispatch event\n *\n * @class\n * @param {DomElement} element - the dom element\n * @param {options} element - options\n */\n\n/* eslint-disable no-undef */\nclass Timepicker {\n // eslint-disable-line\n constructor (element, options) {\n this.options = options || {}\n this.element = element\n this.elHour = element.querySelector('.hour')\n this.elMinute = element.querySelector('.minute')\n this.elAmpm = element.querySelector('.ampm')\n this.elMobile = element.querySelector('.time')\n this.format = 'h:mmA'\n this.format24 = 'HH:mm'\n\n if (!element || !this.elHour || !this.elMinute || !this.elAmpm) {\n throw new Error('Timepicker: No DOM element passed to constructor')\n }\n this.max = this.options.max ? moment(this.options.max, this.format) : null\n if (this.options.default) {\n var defaultTime = moment(this.options.default, this.format)\n this.setTime(defaultTime.format(this.format))\n } else {\n if (this.max && this.max.diff(moment()) < 0) {\n // set to max time\n this.setTime(this.max.format(this.format))\n } else {\n // set to current time\n this.setTime(moment().format(this.format))\n }\n }\n this.updateTime()\n this.addEvents()\n }\n\n setTime (timestamp) {\n var sep = timestamp.indexOf(':')\n var total = timestamp.length\n this.hour = timestamp.substring(0, sep)\n this.minute = timestamp.substring(sep + 1, total - 2)\n this.ampm = timestamp.substring(total - 2, total)\n // set element attributes\n this.elHour.setAttribute('value', this.hour)\n this.elMinute.setAttribute('value', this.minute)\n this.elAmpm.setAttribute('value', this.ampm)\n }\n\n setMax (d) {\n this.max = moment(d)\n }\n\n updateTime () {\n // set attribute for desktop\n var timestamp = this.hour + ':' + this.minute + this.ampm\n this.element.setAttribute('value', timestamp)\n // set value for mobile input\n var timestamp24 = moment(timestamp, this.format).format(this.format24)\n this.elMobile.value = timestamp24\n // dispath event\n var event = new Event('tds.timepicker.change', {\n bubbles: true,\n cancelable: true\n })\n this.element.dispatchEvent(event)\n }\n\n updateFocus (element) {\n // select all from input\n this.currFocus = element\n element.setSelectionRange(0, element.value.length)\n }\n\n // validate hours input\n validateHour () {\n var numberRegex = /^[0-9]+$/\n var hourStr = this.elHour.value\n var hour = parseInt(hourStr, 10)\n if (hourStr.length > 0) {\n if (\n hour > 0 &&\n hourStr.match(numberRegex) &&\n hour < 24 &&\n this.checkMax(hourStr, this.minute, this.ampm)\n ) {\n this.hour = hourStr\n } else {\n this.elHour.value = this.hour\n }\n }\n }\n\n updateHour (d) {\n var hour = parseInt(this.hour, 10)\n // new value exceed max\n if (!this.checkMax((hour + d - 1) % 11 + 1, this.minute, this.ampm)) {\n return\n }\n // step through time\n if (hour + d === 0) {\n this.hour = this.elHour.value = '12'\n } else if (hour + d === 13) {\n this.hour = this.elHour.value = '1'\n } else {\n if (\n (hour + d === 11 && hour === 12) ||\n (hour + d === 12 && hour === 11)\n ) {\n this.switchAMPM()\n }\n this.hour = this.elHour.value = (hour + d).toString()\n }\n }\n\n // if hours value exceed 12, reset to PM\n reformatHour () {\n var hour = parseInt(this.hour, 10)\n if (hour > 12) {\n this.hour = this.elHour.value = (hour - 12).toString()\n this.ampm = this.elAmpm.value = 'PM'\n }\n }\n\n // validate minutes input\n validateMinute () {\n var numberRegex = /^[0-9]+$/\n var minuteStr = this.elMinute.value\n var minute = parseInt(minuteStr, 10)\n if (minuteStr.length > 0) {\n if (\n minute >= 0 &&\n minuteStr.match(numberRegex) &&\n minute < 60 &&\n this.checkMax(this.hour, minuteStr, this.ampm)\n ) {\n this.minute = minuteStr\n } else {\n this.elMinute.value = this.minute\n }\n }\n }\n\n updateMinute (d) {\n var minute = parseInt(this.minute, 10)\n // new value exceed max\n if (!this.checkMax(this.hour, minute + d, this.ampm)) {\n return\n }\n // step through minutes\n if (minute + d === -1) {\n this.minute = this.elMinute.value = '59'\n this.updateHour(-1)\n } else if (minute + d === 60) {\n this.minute = this.elMinute.value = '0'\n this.updateHour(1)\n } else {\n this.minute = this.elMinute.value = (minute + d).toString()\n }\n this.reformatMinute()\n }\n\n // add extra 0 to minutes\n reformatMinute () {\n var minute = parseInt(this.minute, 10)\n if (minute < 10) {\n this.minute = this.elMinute.value = '0' + this.minute\n }\n }\n\n // validate am/pm input\n validateAMPM () {\n var letterRegex = /^[a-zA-Z]+$/\n var value = this.elAmpm.value.toUpperCase()\n if (\n value.match(letterRegex) &&\n (value === 'A' || value === 'P') &&\n this.checkMax(this.hour, this.minute, value + 'M')\n ) {\n this.ampm = this.elAmpm.value = value + 'M'\n } else {\n this.elAmpm.value = this.ampm\n }\n this.elAmpm.setSelectionRange(0, 2)\n }\n\n // switch am to pm\n switchAMPM () {\n this.ampm = this.elAmpm.value = this.ampm === 'AM' ? 'PM' : 'AM'\n }\n\n // check max time\n checkMax (h, m, ap) {\n if (this.max) {\n var timestamp = moment(h + ':' + m + ap, this.format)\n if (this.max.diff(timestamp) < 0) {\n return false\n }\n }\n return true\n }\n\n addEvents () {\n var obj = this\n if (this.elHour) {\n this.elHour.addEventListener('focus', function (event) {\n obj.updateFocus(this)\n })\n this.elHour.addEventListener('input', function (event) {\n obj.validateHour()\n })\n this.elHour.addEventListener('change', function (event) {\n if (obj.elHour.value.length === 0) {\n obj.elHour.value = obj.hour\n }\n obj.reformatHour()\n obj.elHour.setAttribute('value', obj.hour)\n obj.updateTime()\n })\n this.elHour.addEventListener('keydown', function (event) {\n if (event.keyCode === 40) {\n event.preventDefault()\n obj.updateHour(-1)\n obj.elHour.setSelectionRange(0, obj.hour.length)\n obj.elHour.setAttribute('value', obj.hour)\n obj.updateTime()\n } else if (event.keyCode === 38) {\n event.preventDefault()\n obj.updateHour(1)\n obj.elHour.setSelectionRange(0, obj.hour.length)\n obj.elHour.setAttribute('value', obj.hour)\n obj.updateTime()\n } else if (event.keyCode === 39) {\n event.preventDefault()\n obj.elMinute.focus()\n } else if (event.keyCode === 37) {\n event.preventDefault()\n }\n })\n }\n if (this.elMinute) {\n this.elMinute.addEventListener('focus', function (event) {\n obj.updateFocus(this)\n })\n this.elMinute.addEventListener('input', function (event) {\n obj.validateMinute()\n })\n this.elMinute.addEventListener('change', function (event) {\n if (obj.elMinute.value.length === 0) {\n obj.elMinute.value = obj.minute\n }\n obj.reformatMinute()\n obj.elMinute.setAttribute('value', obj.minute)\n obj.updateTime()\n })\n this.elMinute.addEventListener('keydown', function (event) {\n if (event.keyCode === 40) {\n event.preventDefault()\n obj.updateMinute(-1)\n obj.elMinute.setSelectionRange(0, obj.minute.length)\n obj.elMinute.setAttribute('value', obj.minute)\n obj.updateTime()\n } else if (event.keyCode === 38) {\n event.preventDefault()\n obj.updateMinute(1)\n obj.elMinute.setSelectionRange(0, obj.minute.length)\n obj.elMinute.setAttribute('value', obj.minute)\n obj.updateTime()\n } else if (event.keyCode === 37) {\n event.preventDefault()\n obj.elHour.focus()\n } else if (event.keyCode === 39) {\n event.preventDefault()\n obj.elAmpm.focus()\n }\n })\n }\n if (this.elAmpm) {\n this.elAmpm.addEventListener('focus', function (event) {\n obj.updateFocus(this)\n })\n this.elAmpm.addEventListener('input', function (event) {\n obj.validateAMPM()\n obj.elAmpm.setAttribute('value', obj.ampm)\n obj.updateTime()\n })\n this.elAmpm.addEventListener('change', function (event) {\n obj.validateAMPM()\n })\n this.elAmpm.addEventListener('keydown', function (event) {\n if (event.keyCode === 40) {\n event.preventDefault()\n if (\n obj.checkMax(obj.hour, obj.minute, obj.ampm === 'AM' ? 'PM' : 'AM')\n ) {\n obj.switchAMPM()\n obj.elAmpm.setAttribute('value', obj.ampm)\n obj.updateTime()\n }\n obj.elAmpm.setSelectionRange(0, 2)\n } else if (event.keyCode === 38) {\n event.preventDefault()\n if (\n obj.checkMax(obj.hour, obj.minute, obj.ampm === 'AM' ? 'PM' : 'AM')\n ) {\n obj.switchAMPM()\n obj.elAmpm.setAttribute('value', obj.ampm)\n obj.updateTime()\n }\n obj.elAmpm.setSelectionRange(0, 2)\n } else if (event.keyCode === 37) {\n event.preventDefault()\n obj.elMinute.focus()\n } else if (event.keyCode === 39) {\n event.preventDefault()\n }\n })\n }\n if (this.elMobile) {\n this.elMobile.addEventListener('change', function (event) {\n var timestamp24 = moment(event.target.value, obj.format24)\n if (obj.max && obj.max.diff(timestamp24) < 0) {\n obj.updateTime()\n } else {\n obj.setTime(timestamp24.format(obj.format))\n }\n })\n }\n }\n}\n\nexport { Timepicker }\n","import { CSS_NS } from '../../shared/constants'\nimport onDOMChanges from '../../shared/onDOMChanges'\nimport { dispatchEvent } from '../../shared/eventDispatcher'\n\nconst ENHANCED_FLAG = 'alert_enhanced'\nconst DISMISS_CLASS = `${CSS_NS}alert__dismiss`\nconst DISMISS_DATA_ATTR = `[data-toggle=\"alert\"]`\n\nclass Alert {\n constructor(element) {\n this._element = element\n if (!element.dataset[ENHANCED_FLAG]) {\n this._enhance()\n }\n }\n\n // public\n close(val) {\n const alert = this._element\n const button = alert.querySelector(`.${DISMISS_CLASS}`) || alert.querySelector(`[data-toggle=\"alert\"]`)\n const x = window.pageXOffset\n const y = window.pageYOffset\n const focusElm = button && document.querySelector(button.dataset.focus)\n\n if (dispatchEvent(alert, 'alert.dismissed', { detail: val })) {\n alert.hidden = true\n // manage focus for keyboard users\n if (focusElm) {\n focusElm.focus()\n }\n // manage scrolling for screen magnifiers\n window.scroll(x, y)\n }\n }\n\n // private\n _enhance() {\n const alert = this._element\n const link = alert.querySelector(`a.${DISMISS_CLASS}`)\n const buttons = Array.from(alert.querySelectorAll(`.${DISMISS_CLASS}, ${DISMISS_DATA_ATTR}`))\n\n if (link && alert.querySelector(`.${DISMISS_CLASS}`)) {\n link.hidden = true\n }\n\n buttons.forEach(button => {\n button.hidden = false\n\n button.addEventListener('click', () => {\n this.close(button.value)\n })\n })\n\n alert.addEventListener('keydown', event => {\n if ((event.keyCode || event.which) === 27) {\n this.close(\"escape\")\n }\n })\n\n alert.dataset[ENHANCED_FLAG] = true\n }\n}\n\nonDOMChanges(`.${DISMISS_CLASS}, ${DISMISS_DATA_ATTR}`, // <= watch for buttons that close alerts \n function onDismissableAlertAdded(element) {\n // find the alert parent of element \n const ALERT_SELECTOR = `[class*=\"${CSS_NS}app-alert-\"], [class*=\"${CSS_NS}alert-\"], [class*=\"${CSS_NS}inline-alert-\"]`;\n const alert = element.closest(ALERT_SELECTOR)\n if (alert && !alert.dataset[ENHANCED_FLAG]) {\n\n new Alert(alert)\n }\n })\n\nexport { Alert }\n","import { CSS_NS } from '../../shared/constants'\n\n/**\n * WorkflowNavigation\n * @constructor\n * @param {DomElement} element - the workflow navigation bar dom element\n * @param {Object} options - Options to pass in the constructor, details for each option can be found below.\n * @param {Array} options.steps - The length of this array determines the number of total steps. Since the icon appended on the right side would change based on which step a user is in, you can pass the array to define the behavior. You can also change the attribute step by step, please see the example.\n * @param {Number} options.index - Initial index of step\n * @example\n * // array to define navigation steps\n * // 2 steps - first step being exit icon with aria-label appended, second step being close icon with no attributes appended\n * var navigationSteps = [\n * {\n * 'icon': 'exit',\n * 'attributes': [\n * {\n * name: 'aria-label',\n * value: 'Activate modal'\n * }\n * ]\n * },\n * {\n * 'icon': 'close',\n * 'attributes': []\n * }\n * ];\n *\n * // Instantiation\n * var workflowNavigationConst = new WorkflowNavigation( document.getElementById('tds-workflow-navigation-example'), { steps: navigationSteps } );\n */\n\nclass WorkflowNavigation {\n constructor(element, options) {\n this.options = options || {}\n if (!element) {\n throw new Error('ProgressBar: No DOM element passed to constructor')\n }\n if (!options.hasOwnProperty('steps')) {\n throw new Error(\n 'ProgressBar: No options.steps value passed to the constructor'\n )\n }\n\n this.element = element\n this.statusTitle = this.element.getElementsByClassName('status-title')[0]\n this.barContainer = this.element.getElementsByClassName(\n 'progress-bar__workflow-nav'\n )[0]\n this.bar = this.barContainer.getElementsByClassName('progress-bar__bar')[0]\n\n this._total = this.options.steps.length - 1\n this._index = this.options.hasOwnProperty('index') ? this.options.index : 0\n\n this.total(this._total)\n this.index(this._index)\n this.updateUI()\n return this\n }\n\n /**\n * Update the total number of steps\n * @param value - total number of steps\n */\n total(value) {\n if (value) {\n this._total = value\n }\n this.updateUI()\n return this._total\n }\n\n /**\n * Update the index variable out of total steps\n * @param value - index number of step\n */\n index(value) {\n if (Number.isInteger(value) && value >= 0 && value - 1 < this._total) {\n this._index = value\n }\n this.updateUI()\n return this._index\n }\n\n /**\n * Handle UI changes - icon/event and progress bar updates based on index/total number of step change\n */\n updateUI() {\n var currentProgress = this._index / this._total * 100 + '%'\n this.bar.style.width = currentProgress\n if (this._index < this.options.steps.length) {\n var iconEls = this.element.getElementsByClassName('icon-appended')\n for (var i = 0; i < iconEls.length; i++) {\n var attrs = this.options.steps[this._index].attributes\n var attributeTags = ''\n var classTags =\n `class=\"${CSS_NS}icon ${CSS_NS}icon__${this.options.steps[this._index].icon}`\n for (var ii = 0; ii < attrs.length; ii++) {\n if (attrs[ii].name !== 'class') {\n attributeTags += attrs[ii].name + '=\"' + attrs[ii].value + '\" '\n } else {\n classTags += ' ' + attrs[ii].value\n }\n }\n iconEls[i].innerHTML =\n ''\n }\n }\n this.barContainer.setAttribute('aria-valuemax', this._total)\n this.barContainer.setAttribute('aria-valuenow', this._index)\n this.barContainer.setAttribute(\n 'aria-valuetext',\n 'Current step ' + this._index + ' of ' + this._total\n )\n }\n}\nexport { WorkflowNavigation }\n","import { CSS_NS } from '../../shared/constants'\n\n/**\n * Workflow\n * @constructor\n * @param {DomElement} element - the workflow navigation bar dom element\n * @param {JSON} navigationSteps - navigationSteps passed to the Workflow based on the WorkflowNavigation class\n * @param {Object} options - Options to pass in the constructor, details for each option can be found below.\n * @example\n * // array to define navigation steps\n * // 2 steps - first step being exit icon with aria-label appended, second step being close icon with no attributes appended\n * var navigationSteps = [\n * {\n * 'icon': 'exit',\n * 'attributes': [\n * {\n * name: 'aria-label',\n * value: 'Activate modal'\n * }\n * ]\n * },\n * {\n * 'icon': 'close',\n * 'attributes': []\n * }\n * ];\n *\n * // Instantiation\n * var workflowConst = new Workflow(document.getElementById('tds-workflow-example'), { steps: navigationSteps } );\n */\n\nclass Workflow {\n constructor(element, navigationSteps, options) {\n this.options = options || {}\n if (!element) {\n throw new Error('Workflow: No DOM element passed to constructor')\n }\n var that = this\n this.element = element\n this.progress\n\n this.sectionElements = [].slice.call(\n this.element.querySelectorAll(`.${CSS_NS}workflow__section`)\n )\n this.workflowSections = []\n\n if (this.sectionElements.length === 0) {\n throw new Error('Workflow: No sections detected in the workflow')\n }\n\n this.progressElement = this.element.querySelector(`.${CSS_NS}workflow-navigation`)\n if (this.progressElement) {\n // User has indicated there is navigation\n if (navigationSteps) {\n this.progress = new WorkflowNavigation(this.progressElement, {\n steps: navigationSteps\n })\n } else {\n throw new Error('Workflow: No navigational steps are given')\n }\n }\n\n var len = this.sectionElements.length\n for (var ii = 0; ii < len; ii++) {\n var cur = this.sectionElements[ii]\n // console.log('cur ', cur)\n this.workflowSections.push(new WorkflowSection(cur, {}))\n }\n this.addEvents()\n return this\n }\n\n /**\n * Add event listeners for focusing and advancing\n */\n addEvents() {\n var that = this\n /// when a section has requested focus\n this.element.addEventListener('tds.workflow.section.focus', function (e) {\n var i = that.sectionElements.indexOf(e.target)\n // console.log('detected focus request ', i)\n that.focus(i, true)\n })\n\n // move onto the next section\n this.element.addEventListener('tds.workflow.advance', function (e) {\n var i = that.sectionElements.indexOf(e.target)\n that.workflowSections[i].confirm(true)\n // console.log('detected advance event ', i)\n var len = that.sectionElements.length\n i++\n if (i < len - 1) {\n that.focus(i)\n } else if (i === len - 1) {\n that.createSummary()\n that.focus(i, true)\n }\n })\n\n // section is confirmed, expand next incomplete section\n this.element.addEventListener('tds.workflow.section.confirm', function (e) {\n // console.log('confirming section');\n var i = that.sectionElements.indexOf(e.target)\n var len = that.sectionElements.length\n if (i <= len - 1) {\n that.expand(i)\n }\n })\n }\n\n /**\n * Expanding a minimized section\n * @param index for which section to expand\n */\n // loop through and minimize all completed sections, expand incomplete, scroll to index\n expand(index) {\n // console.log('expanding', index);\n var len = this.workflowSections.length\n for (var ii = 0; ii < len; ii++) {\n if (\n this.workflowSections[ii].isComplete() &&\n this.workflowSections[ii].isConfirmed()\n ) {\n this.workflowSections[ii].activate(false)\n this.workflowSections[ii].hide(false)\n } else {\n this.workflowSections[ii].activate(true)\n break\n }\n }\n this.scrollToSection(this.workflowSections[index].element, true)\n }\n\n /**\n * Focus on a section\n * @param lock for locking the current section\n * @param index for which section to focus on\n */\n focus(index, lock = false) {\n // console.log('focus on section ',index);\n var len = this.workflowSections.length\n var hide = lock\n for (var ii = 0; ii < len; ii++) {\n if (ii !== index) {\n this.workflowSections[ii].activate(false)\n this.workflowSections[ii].hide(hide)\n } else {\n this.workflowSections[ii].activate(true)\n this.scrollToSection(this.workflowSections[ii].element, false)\n // if the section is incomplete we hide subsequent sections\n // console.log('complete--> ',this.workflowSections[ii].isComplete());\n // if (!this.workflowSections[ii].isComplete()) {\n hide = true\n // }\n }\n }\n this.updateProgressBar()\n }\n\n /**\n * Updating the progress bar\n */\n updateProgressBar() {\n if (this.progress) {\n var all = [].slice.call(\n this.element.querySelectorAll(`.${CSS_NS}workflow__section:not(.workflow__section--final)`)\n )\n var total = all.length\n var complete = [].slice.call(\n this.element.querySelectorAll(`.${CSS_NS}workflow__section--confirmed`)\n )\n this.progress.total(total)\n this.progress.index(complete.length)\n }\n }\n\n /**\n * Scroll to section\n * @param section to scroll to\n * @param include navigational height\n */\n\n scrollToSection(section, includeNav = false) {\n var keys = {37: 1, 38: 1, 39: 1, 40: 1}\n\n function preventDefault(e) {\n e = e || window.event\n if (e.preventDefault) {\n e.preventDefault()\n e.returnValue = false\n }\n }\n\n function preventDefaultForScrollKeys(e) {\n if (keys[e.keyCode]) {\n preventDefault(e)\n return false\n }\n }\n\n function disableScroll() {\n if (window.addEventListener) {\n // older FF\n window.addEventListener('DOMMouseScroll', preventDefault, false)\n window.onwheel = preventDefault // modern standard\n window.onmousewheel = document.onmousewheel = preventDefault // older browsers, IE\n window.ontouchmove = preventDefault // mobile\n document.onkeydown = preventDefaultForScrollKeys\n }\n }\n\n function enableScroll() {\n if (window.removeEventListener) {\n window.removeEventListener('DOMMouseScroll', preventDefault, false)\n window.onmousewheel = document.onmousewheel = null\n window.onwheel = null\n window.ontouchmove = null\n document.onkeydown = null\n }\n }\n\n disableScroll()\n var rect = section.getBoundingClientRect()\n var destination = rect.top\n if (this.progressElement && includeNav) {\n var navigationHeight = this.progressElement.clientHeight // to be refactored to progress\n destination -= navigationHeight\n }\n\n var increment = 50\n var position = 0\n var current = 0\n\n var animate = function () {\n position += destination / increment\n window.scrollBy(0, position)\n if (Math.abs(position - destination) > 2) {\n setTimeout(function () {\n animate()\n }, 15)\n } else {\n enableScroll()\n }\n }\n\n setTimeout(function () {\n animate()\n }, 600) // Enough to show css animation\n }\n\n /**\n * Generate summary of sections\n */\n createSummary() {\n var summary = document.querySelector(`.${CSS_NS}workflow__summary`)\n var summaryText = ''\n if (summary) {\n summaryText += `
\n

Summary

\n
\n
\n `\n var len = this.sectionElements.length\n for (var i = 0; i < len - 1; i++) {\n summaryText +=\n '
' +\n this.workflowSections[i].topic.textContent +\n '
'\n summaryText +=\n '

' + this.sectionElements[i].getAttribute('data-summary') + '

'\n }\n summaryText += `\n
\n
\n
\n `\n summary.innerHTML = summaryText\n }\n }\n}\n\nexport { Workflow }\n","import {CSS_NS, NAMESPACE} from '../../shared/constants'\nimport onDOMChanges from '../../shared/onDOMChanges'\nimport { instances } from '../../shared/instances'\nimport {dispatchEvent} from '../../shared/eventDispatcher'\n\nconst INSTANCE_KEY = `${NAMESPACE}CompoundField`\nconst REMOVED_EVENT = 'compound-field:removed'\nconst COMPOUND_FIELD_CLASS = `${CSS_NS}compound-field`\nconst PHONE_CLASS = `${CSS_NS}phone`\nconst POSTALCODE_CLASS = `${CSS_NS}postalcode`\n\nconst COMPOUND_FIELD_SELECTORS = []\n\nclass _CompoundFieldInstance {\n constructor(container, config = {}) {\n container.dataset.compoundFieldEnhanced = true\n this._cont = container\n this._config = {...config}\n this._arr = this.getFields(container)\n this._hiddenInput = this.getHiddenInput(container)\n this._setUpEventHandlers()\n instances.set(container, INSTANCE_KEY , this)\n }\n\n destroy() {\n if (this._handlers) {\n this._handlers.forEach(({element, eventType, handler}) =>\n element.removeEventListener(eventType, handler))\n instances.remove(this._cont, INSTANCE_KEY)\n delete this._cont\n delete this._arr\n delete this._hiddenInput\n delete this._handlers\n }\n }\n\n _setUpEventHandlers() {\n const cont = this._cont\n const config = this._config\n this._addEventHandler(cont, 'keyup', this._adjust.bind(this));\n this._addEventHandler(cont, 'keydown', this._adjust.bind(this));\n if (this._hiddenInput) {\n this._addEventHandler(cont, 'focusout', this._concatFields.bind(this));\n }\n if (!config.noPaste) {\n this._addEventHandler(cont, 'paste', (e) => {\n const t = e.target\n if (t.value.length <= 0) {\n var paste = (event.clipboardData || window.clipboardData).getData('text').replace(/[^a-zA-Z0-9]/g, \"\")\n if (this._arr.indexOf(t) > -1) {\n setTimeout(() => {\n if (this._cont.classList.contains(PHONE_CLASS)) {\n if (paste.substr(0, 1) === \"1\") {\n paste = paste.substr(1)\n }\n }\n if (this._cont.classList.contains(POSTALCODE_CLASS)) {\n this._pasteAdjust(e, paste.toUpperCase())\n } else {\n this._pasteAdjust(e, paste)\n }\n }, 1);\n }\n }\n });\n }\n this._addEventHandler(document, REMOVED_EVENT, ({detail}) => {\n if (detail === cont) {\n this.destroy()\n }\n })\n }\n\n _addEventHandler(element, eventType, handler) {\n element.addEventListener(eventType, handler, false)\n const handlers = this._handlers || (this._handlers = [])\n handlers.push({element, eventType, handler})\n }\n\n _adjust(e) {\n const t = e.target\n if (this._arr.indexOf(t) === -1) return\n\n const key = e.key\n const type = e.type\n const cursorPosition = t.selectionStart\n const a = this._arr\n var direction = 0\n\n if (type === \"keyup\") {\n if (!e.ctrlKey && !e.metaKey && key && key.length === 1 && cursorPosition === t.maxLength) {\n direction = 1\n }\n }\n else if (type === \"keydown\") {\n switch (key) {\n case 'ArrowRight':\n case 'Right':\n if (cursorPosition === t.maxLength) {\n e.preventDefault()\n direction = 1\n }\n break;\n\n case 'ArrowLeft':\n case 'Left':\n case 'Backspace':\n if (cursorPosition === 0) {\n direction = -1\n if (key !== 'Backspace') {\n e.preventDefault();\n }\n }\n break;\n }\n }\n\n if (direction) {\n var nextIX = a.indexOf(t) + direction\n const focusTo = a[nextIX]\n if (focusTo) {\n focusTo.focus()\n }\n }\n }\n\n _pasteAdjust(event, paste) {\n const t = event.target\n var a = this._arr\n t.setSelectionRange(t.maxLength, t.maxLength)\n if (a[0] === t) {\n for (var i = 0; i < a.length && paste.length; i++) {\n var pastevalue = paste.substr(0, a[i].maxLength)\n a[i].value = pastevalue\n paste = paste.substr(a[i].maxLength)\n if (a[i].value) {\n a[i].focus()\n }\n }\n }\n }\n\n _concatFields(event) {\n if (this._hiddenInput) {\n var a = this._arr\n const format = this._hiddenInput.dataset.format || a.map((_, i) => `{${i}}`).join('')\n const valueMap = a.reduce((map, field, i) => {\n map[i] = field.value\n if (field.name) {\n map[field.name] = field.value\n }\n return map\n }, {})\n\n const concatenated = format.replace(/{([^{}]+)}/g, (_, name) => {\n return valueMap[name] || ''\n })\n\n this._hiddenInput.value = concatenated\n }\n }\n\n getFields(container) {\n var compoundField = container.querySelectorAll(\"input:not([type='hidden'])\")\n return Array.from(compoundField)\n }\n\n getHiddenInput(container) {\n var hiddenInput = container.querySelector(\"input[type='hidden']\")\n return hiddenInput\n }\n}\n\nclass CompoundField {\n constructor(container, config) {\n this._instance = instances.get(container, INSTANCE_KEY) || new _CompoundFieldInstance(container, config)\n }\n\n destroy () {\n this._instance.destroy()\n }\n\n static registerSelector(selector) {\n COMPOUND_FIELD_SELECTORS.push(selector)\n onDOMChanges(selector, null,\n element => dispatchEvent(document, REMOVED_EVENT, {detail: element}))\n }\n}\n\nCompoundField.registerSelector(`.${COMPOUND_FIELD_CLASS}`)\n\ndocument.addEventListener(\"focusin\", function (e) {\n const compFld = e.target.closest(COMPOUND_FIELD_SELECTORS.join(','))\n if (compFld && !compFld.dataset.compoundFieldEnhanced) {\n new _CompoundFieldInstance(compFld);\n }\n});\n\n\nexport {CompoundField}\n","document.addEventListener(\"focusin\", function (e) {\n if (e.target.dataset.masking) {\n if (!e.target.dataset.maskedEnhanced) {\n e.target.dataset.maskedEnhanced = true\n new MaskedField(e.target);\n }\n }\n});\n\nclass MaskedField {\n constructor(element) {\n this._element = element\n this._masking = element.getAttribute('data-masking')\n this._masking_format = element.getAttribute('data-masking-format')\n this._masking_value = element.getAttribute(\"data-masked-value\")\n this.alterField()\n }\n\n alterField() {\n const t = this._element\n var maskedformat = this._masking_format\n if (this._masking === \"true\") {\n t.setAttribute('maxlength', maskedformat.length);\n this.activateMasking()\n }\n\n }\n\n activateMasking() {\n const t = this._element\n var that = this;\n t.addEventListener('keyup', function (e) {\n if (!e.ctrlKey && !e.metaKey && e.key.length === 1) {\n that.handleValueChange(e, t.selectionStart)\n }\n }, false);\n t.addEventListener('paste', function (e) {\n setTimeout(() => {\n that.handleValueChange(e)\n }, 10);\n }, false);\n }\n\n handleValueChange(event) {\n const t = this._element\n if (t.value == this._masking_value) {\n return; // Continue only if value hasn't changed\n }\n t.value = this.handleCurrentValue(event)\n t.setAttribute(\"data-masked-value\", t.value)\n }\n\n handleCurrentValue() {\n const t = this._element\n var isCharsetPresent = this._masking_format,\n value = t.value, l = isCharsetPresent.length, newValue = '',\n i, j, isInt, isLetter, strippedValue,\n mNum = 'XdDmMyY9', mChar = '_A';\n // strip special characters\n strippedValue = isCharsetPresent ? value.replace(/\\W/g, \"\") : value.replace(/\\D/g, \"\");\n\n for (i = 0, j = 0; i < l; i++) {\n isInt = strippedValue[j] ? strippedValue[j].match(/[0-9-]/i) : false;\n isLetter = strippedValue[j] ? strippedValue[j].match(/[A-Z]/i) : false;\n var matchesNumber = mNum.indexOf(isCharsetPresent[i]) >= 0;\n var matchesLetter = mChar.indexOf(isCharsetPresent[i]) >= 0;\n if ((matchesNumber && isInt) || (isCharsetPresent && matchesLetter && isLetter)) {\n newValue += strippedValue[j++];\n } else if ((!isCharsetPresent && !isInt && matchesNumber) || (isCharsetPresent && ((matchesLetter && !isLetter) || (matchesNumber && !isInt)))) {\n return newValue;\n } else {\n newValue += maskedformat[i];\n }\n\n // break if no characters left and the pattern is non-special character\n if (strippedValue[j] == undefined) {\n break;\n }\n }\n return newValue.toUpperCase();\n }\n}\n\nexport { MaskedField }\n","import onDOMChanges from '../../shared/onDOMChanges'\nimport { instances } from '../../shared/instances'\nimport { CSS_NS, NAMESPACE } from '../../shared/constants'\nimport { dispatchEvent } from '../../shared/eventDispatcher'\n\nconst INSTANCE_KEY = `${NAMESPACE}Navigation`\nconst REMOVED_EVENT = 'navigation:removed'\nconst TOGGLE_EVENT = 'navigation:toggle'\nconst NAV_CLASSNAME = `${CSS_NS}nav`\nconst NAV_DISMISS_SELECTOR = '[data-dismiss=\"nav\"]'\n\nlet nextId = 0\n\nclass _NavigationInstance {\n constructor (element, baseNavClass) {\n const privateData = this._private = {}\n privateData.element = element\n privateData.classes = navClasses(baseNavClass)\n this._init()\n element.dataset.enhancedNav = true\n instances.set(element, INSTANCE_KEY , this)\n }\n\n open () {\n this.toggle(true)\n }\n\n close () {\n this.toggle(false)\n }\n\n toggle (expand) {\n const toggle = this._topToggle\n const expanded = toggle && toggle.getAttribute('aria-expanded') === 'true'\n if (toggle && (arguments.length === 0 || expand !== expanded)) {\n toggleNavItem(toggle, this)\n }\n }\n\n get isOpen () {\n const topToggle = this._topToggle\n return !!topToggle && topToggle.offsetWidth && topToggle.offsetHeight && topToggle.getAttribute('aria-expanded') === 'true'\n }\n\n destroy () {\n const { element } = this._private\n this._removeEventHandlers(this)\n element.dataset.enhancedNav = false\n instances.remove(element, INSTANCE_KEY)\n delete this._private\n }\n\n _init () {\n const { element, classes } = this._private\n enhance(element, classes)\n this._addEventHandler(element, 'click', onExpandCollapse(this))\n this._addEventHandler(element, 'click', onCloseNav(this))\n this._addEventHandler(document, 'keydown', onEscape(this))\n this._addEventHandler(document, 'focusout', onFocusOut(this))\n this._addEventHandler(document, REMOVED_EVENT, this._checkDestroy.bind(this))\n }\n\n _addEventHandler (element, event, handler) {\n const handlers = this._private.handlers || (this._private.handlers = [])\n handlers.push({element, event, handler})\n element.addEventListener(event, handler)\n }\n\n _removeEventHandlers () {\n const handlers = this._private.handlers || []\n handlers.forEach(({element, event, handler}) => {\n element.removeEventListener(event, handler)\n })\n }\n\n _checkDestroy ({detail}) {\n if (detail === this._private.element) {\n this.destroy()\n }\n }\n\n get _topToggle () {\n return Array.from(this._private.element.children).find(node => node.matches('button[aria-expanded]'))\n }\n}\n\nfunction navClasses (baseClassName) {\n return {\n nav: baseClassName,\n navList: `${baseClassName}__list`,\n navDropdown: `${baseClassName}__dropdown`,\n navItem: `${baseClassName}__item`,\n navToggle: `${baseClassName}__toggle`,\n navToggleExpandedText: `${baseClassName}__toggle--expanded`,\n navToggleCollapsedText: `${baseClassName}__toggle--collapsed`\n }\n}\n\nfunction enhance (element, classes) {\n // find each nav-list\n const buttonToggleSelector = `button.${classes.navToggle}`\n const labelToggleSelector = `label.${classes.navToggle}`\n const toggleSelectors = [buttonToggleSelector, `[type=\"checkbox\"] + ${labelToggleSelector}`]\n\n const selectors = []\n toggleSelectors.forEach(s1 => {\n selectors.push(`${s1} + *`)\n })\n\n const toggledNavGroups = Array.from(element.querySelectorAll(selectors.join()))\n toggledNavGroups.forEach(navGroup => {\n let checkbox, label, button\n const navGroupParent = navGroup.parentNode\n const siblings = navGroupParent.children\n for (let i = 0; i < siblings.length; i++) {\n const node = siblings[i]\n if (node.matches(buttonToggleSelector)) {\n button = node\n }\n else if (node.matches('[type=\"checkbox\"]')) {\n checkbox = node\n }\n else if (node.matches(labelToggleSelector)) {\n label = node\n }\n else if (node === navGroup) {\n break\n }\n }\n\n if (checkbox) {\n navGroupParent.removeChild(checkbox)\n }\n\n if (label) {\n navGroupParent.removeChild(label)\n }\n\n if (!button && checkbox) {\n button = createToggleButton(label, classes)\n navGroup.parentNode.insertBefore(button, navGroup)\n }\n\n if (button) {\n button.hidden = false\n if (!button.getAttribute('aria-expanded')) {\n button.setAttribute('aria-expanded', !!(checkbox && checkbox.checked))\n }\n\n if (!button.getAttribute('aria-controls')) {\n if (!navGroup.id) {\n navGroup.id = `${classes.nav}-group_${++nextId}`\n }\n button.setAttribute('aria-controls', navGroup.id)\n }\n }\n })\n const closeButton = element.querySelector(NAV_DISMISS_SELECTOR)\n if (closeButton) {\n closeButton.hidden = false\n }\n}\n\nfunction onExpandCollapse (navigation) {\n return e => {\n // todo: should selector be more specific?\n const toggle = e.target.closest('button[aria-expanded]')\n if (toggle) {\n toggleNavItem(toggle, navigation)\n }\n }\n}\n\nfunction onCloseNav (navigation) {\n return e => {\n const closeButton = e.target.closest(NAV_DISMISS_SELECTOR)\n if (closeButton && navigation.isOpen) {\n navigation.close()\n const toggle = navigation._topToggle\n if (toggle) {\n toggle.focus()\n }\n }\n }\n}\n\nfunction onFocusOut (navigation) {\n return e => {\n const { element } = navigation._private\n if (navigation.isOpen) {\n const {target, relatedTarget} = e\n if (element.contains(target) && (!relatedTarget || !element.contains(relatedTarget))) {\n navigation.close()\n }\n }\n }\n}\n\nfunction onEscape (navigation) {\n return e => {\n switch (e.key || e.code) {\n case 'Esc':\n case 'Escape':\n if (navigation.isOpen) {\n navigation.close()\n const toggle = navigation._topToggle\n if (toggle) {\n toggle.focus()\n }\n }\n }\n }\n}\n\nfunction toggleNavItem (toggle, navigation, done) {\n const {element, classes} = navigation._private\n const expand = toggle.getAttribute('aria-expanded') !== 'true'\n const isTopToggle = toggle.parentNode === element\n const navGroupId = toggle.getAttribute('aria-controls')\n const navGroup = navGroupId && document.getElementById(navGroupId)\n const isTopLevelDropdown = isTopToggle && navGroup.matches(`.${classes.navDropdown}`)\n if (navGroup) {\n const toggleSubNav = () => {\n const subToggles = !isTopLevelDropdown && !expand && navGroup.querySelectorAll('button[aria-expanded=\"true\"]')\n if (subToggles && subToggles.length) {\n toggleNavItem(subToggles[subToggles.length - 1], navigation, toggleSubNav)\n } else {\n if (!isTopLevelDropdown) {\n transitionNavItems(navGroup, classes, expand, done)\n }\n toggle.setAttribute('aria-expanded', expand)\n if (isTopToggle) {\n dispatchEvent(element, TOGGLE_EVENT, {detail: {expanded: expand}})\n }\n }\n }\n toggleSubNav()\n } else if (done) {\n done()\n }\n}\n\nfunction transitionNavItems (navGroup, classes, expand, done) {\n const heightDuration = 50\n const opacityDuration = heightDuration * 2\n const heightDelay = opacityDuration\n const opacityDelay = heightDuration * 2\n const navList = getNavList(navGroup, `.${classes.navList}`)\n const items = (navList ? Array.from(navList.children) : []).filter(isVisible)\n if (!expand) {\n items.reverse()\n }\n\n if (items.length) {\n const wrapup = () => {\n items.forEach(item => restoreStyles(item))\n restoreStyles(navGroup)\n if (done) {\n done()\n }\n }\n\n if (!expand) {\n // keep open until transition ends\n saveCurrentStyles(navGroup)\n navGroup.style.display = 'block'\n }\n\n const style = {\n overflow: 'hidden',\n transitionProperty: 'height, opacity',\n transitionDuration: `${heightDuration}ms, ${opacityDuration}ms`,\n transitionTimingFunction: 'linear, ease'\n }\n // prep each item\n items.forEach((item, index) => {\n const hDelay = heightDuration * index + (expand ? 0 : heightDelay)\n const oDelay = heightDuration * index + (expand ? opacityDelay : 0)\n style.height = expand ? 0 : item.scrollHeight + 'px'\n style.opacity = expand ? 0 : 1\n style.transitionDelay = `${hDelay}ms, ${oDelay}ms`\n if (index === items.length - 1) {\n // ease the last one in or out\n style.transitionDuration = `${heightDuration * 2}ms, ${opacityDuration}ms`\n style.transitionTimingFunction = 'ease-out, ease'\n onNavItemTransitionEnd(item, expand, wrapup)\n }\n saveCurrentStyles(item)\n applyStyles(item, style)\n })\n\n window.setTimeout(() => {\n // show or hide item\n items.forEach((item, index) => {\n item.style.height = expand ? item.scrollHeight + 'px' : 0\n item.style.opacity = expand ? 1 : 0\n })\n }, 10)\n } else if (done) {\n done()\n }\n}\n\nfunction getNavList (navGroup, navListSelector) {\n return navGroup.matches(navListSelector) ? navGroup : navGroup.querySelector(navListSelector)\n}\n\n// IE requires empty string rather than null to delete styles\n// So, use this approach instead\nconst SAVE_STYLES_PROP = `${NAMESPACE}NavItemSavedStyles`\nfunction saveCurrentStyles (el) {\n const style = el.getAttribute('style')\n if (style) {\n el[SAVE_STYLES_PROP] = style\n }\n}\n\nfunction restoreStyles (el) {\n if (el[SAVE_STYLES_PROP]) {\n el.setAttribute('style', el[SAVE_STYLES_PROP])\n delete el[SAVE_STYLES_PROP]\n }else {\n el.removeAttribute('style')\n }\n}\n\nfunction applyStyles (el, styles) {\n for (let style in styles) {\n if (styles.hasOwnProperty(style)) {\n el.style[style] = styles[style]\n }\n }\n}\n\nfunction isVisible(el) {\n const style = window.getComputedStyle(el)\n return style.display !== 'none' && style.visibility !== 'hidden'\n}\n\nfunction onNavItemTransitionEnd (item, expand, callback) {\n const onEnd = (e) => {\n if (e.target === item && e.propertyName === (expand ? 'opacity' : 'height')) {\n item.removeEventListener('transitionend', onEnd)\n callback()\n }\n }\n item.addEventListener('transitionend', onEnd)\n}\n\nfunction createToggleButton (label, classes) {\n const button = document.createElement('button')\n if (label) {\n button.innerHTML = label.innerHTML\n const nodes = Array. from (button.querySelectorAll(`.${classes.navToggleExpandedText}, .${classes.navToggleCollapsedText}`))\n nodes.forEach(node => node.parentNode.removeChild(node))\n\n button.className = label.className\n if (label.getAttribute('aria-label')) {\n button.setAttribute('aria-label', label.getAttribute('aria-label'))\n }\n } else {\n button.innerHTML = `Submenu`\n button.className = classes.navToggle\n }\n return button\n}\n\n// ///////////////////////////////////////////////////////////////////////////////////////////////////////\n\nclass Navigation {\n constructor (element, baseClassName=NAV_CLASSNAME) {\n this._instance = instances.get(element, INSTANCE_KEY) || new _NavigationInstance(element, baseClassName)\n }\n\n /**\n * Expands the top level navigation list.\n * Applicable only when navigation has a top level toggle the is in effect.\n */\n open () {\n this._instance.open()\n }\n\n /**\n * Collapses the top level navigation list.\n * Applicable only when navigation has a top level toggle the is in effect.\n */\n close () {\n this._instance.close()\n }\n\n /**\n * Expands ot collapses the top level navigation list.\n * Applicable only when navigation has a top level toggle the is in effect.\n *\n * @param {boolean} expand If passed, indicates whether to expand (true) or collapse (false) the navigation.\n * If not passed, then this method toggles the current state.\n */\n toggle (expand) {\n this._instance.toggle(expand)\n }\n\n /**\n * Detaches from the nav element, removes event listeners, and frees resources.\n */\n destroy () {\n this._instance.destroy()\n delete this._instance\n }\n\n /**\n * A static class method to register a custom base CSS class. Call this when using a custom class\n * generated using the Sass mixins\n *\n * @param {string} baseNavClass The base classname used to generate the custom class\n */\n static registerBaseClassName (baseNavClass) {\n onDOMChanges(`.${baseNavClass}`,\n function onNavAdded (element) {\n if (!element.dataset.enhancedNav) {\n new _NavigationInstance(element, baseNavClass)\n }\n },\n function onNavRemoved (element) {\n dispatchEvent(document, REMOVED_EVENT, {detail: element})\n })\n\n onDOMChanges(`.${baseNavClass}__item-text `, element => {\n if (!element.dataset.fixedWidth && element.innerText) {\n element.dataset.fixedWidth = element.innerText\n }\n })\n }\n}\n\nNavigation.registerBaseClassName(NAV_CLASSNAME)\n\nexport { Navigation }\n","/**\n * Looks for instances of tds-data-table-scrollpanel with [data-scroll-shadow-effect=\"true\"] to manage the shadow effect\n * For each scroll panel:\n * - Wraps panel in tds--scrollpanel-shadow-wrapper element if needed\n * - Observes changes to the scrollpanel using MutationObserver\n * - on window.resize events and any observed changes to scrollpanel, positions the shadow\n *\n * The shadow wrapper is position:relative. It contains a tds-scrollpanel-shadow element which is\n * positioned absolute. The shadow uses a before pseudo-element, also absolutely positioned, to create\n * the shadow effect. tds-scrollpanel-shadow has 2 modifiers: tds-scrollpanel-shadow--x to show\n * left and right shadows, and tds-scrollpanel-shadow--y, to show the top/bottom shadows\n *\n * The shadow effect is shown only when there are not scrollbars, and their is overflow.\n *\n * To determine if scrollbars exists, the scroll panel's clientWidth is compared to its offsetWidth.\n * If they are the same, then there are no scrollbars\n *\n * The tds-scrollpanel-shadow--x classe is added if there is horizontal overflow; otherwise it is removed\n * The tds-scrollpanel-shadow--y classe is added if there is vertical overflow; otherwise it is removed\n *\n * The last step is to see if the scrollpanel wraps a table with sticky rows or columns. If it does\n * it adjusts the top, bottom, left, and right values accordingly so the shadow aligns with the sticky elements\n *\n * For all this to work as intended\n * - The scroll panel cannot have any padding or margins. Shadow placement does not account for this\n * - For tables with sticky headers or footers, either must have just one row\n * - For tables with sticky columns, header columns counts must be the same as the column count for rows.\n *\n * To disable this feature, remove the import line from ../data-table.js. Or, remove\n * [data-scroll-shadow-effect=\"true\"]\n *\n */\nimport onDOMChanges from '../../../shared/onDOMChanges'\nimport { instances } from '../../../shared/instances'\nimport { CSS_NS, NAMESPACE } from '../../../shared/constants'\nimport { dispatchEvent } from '../../../shared/eventDispatcher'\n\nconst INSTANCE_KEY = `${NAMESPACE}ScrollpanelShadow`\nconst REMOVED_EVENT = 'dataTableScrollpanel:removed'\nconst SCROLLPANEL_CLASSNAME = `${CSS_NS}data-table-scrollpanel`\nconst SHADOW_WRAPPER_CLASSNAME = `${CSS_NS}scrollpanel-shadow-wrapper`\nconst SHADOW_EFFECT_CLASSNAME = `${CSS_NS}scrollpanel-shadow`\n\nconst positionStickySupport = function () {\n const style = document.createElement('div').style\n style.cssText = 'position:sticky;position:-webkit-sticky;position:-ms-sticky;'\n return style.position.indexOf('sticky') !== -1\n}()\n\nconst pointerEventsSupport = function () {\n const style = document.createElement('div').style\n style.cssText = 'pointer-events:none'\n return !!style.pointerEvents && style.pointerEvents == 'none'\n}()\n\nconst instanceList = []\nlet timeoutid = 0\nfunction onResize() {\n if (timeoutid) {\n window.clearTimeout(timeoutid)\n }\n\n timeoutid = window.setTimeout(() => {\n instanceList.forEach(instance => instance.setShadowEffect())\n }, 200)\n}\n\nclass ScrollpanelShadow {\n constructor(scrollpanel) {\n this._private = {\n scrollpanel,\n shadowX: false,\n shadowY: false\n }\n\n if (!pointerEventsSupport) {\n // shadow effect blocks pointer event unless pointer-events: none\n // If not supported, don't enable\n return\n }\n\n if (!instanceList.length) {\n window.addEventListener('resize', onResize)\n }\n instanceList.push(this)\n // ensure shadow wrapper exists, before calling instances.set()\n getShadowEffectElements(scrollpanel)\n this.setShadowEffect()\n watch(this)\n\n // must be called after shadow wrapper is created because repositioning table element causes a 'destroy' event\n instances.set(scrollpanel, INSTANCE_KEY, this)\n }\n\n setShadowEffect() {\n if (this._private) {\n const { scrollpanel } = this._private\n const offsets = getShadowOffsets(scrollpanel)\n positionShadowEffect(scrollpanel, offsets)\n }\n }\n\n destroy() {\n const { scrollpanel, observer } = this._private\n delete this._private\n const ix = instanceList.indexOf(this)\n if (ix > -1) {\n instanceList.splice(ix, 1)\n if (!instanceList.length) {\n window.removeEventListener('resize', onResize)\n }\n }\n if (observer) {\n observer.disconnect()\n }\n instances.remove(scrollpanel, INSTANCE_KEY)\n }\n\n _checkDestroy(element) {\n if (element === this._private.scrollpanel) {\n this.destroy()\n }\n }\n\n}\n\nfunction getShadowOffsets(scrollpanel) {\n let x = false, y = false\n const style = window.getComputedStyle(scrollpanel)\n const borderLeft = style.borderLeftWidth ? parseInt(style.borderLeftWidth) : 0\n const borderRight = style.borderRightWidth ? parseInt(style.borderRightWidth) : 0\n const borderTop = style.borderTopWidth ? parseInt(style.borderTopWidth) : 0\n const borderBottom = style.borderBottomWidth ? parseInt(style.borderBottomWidth) : 0\n const offsetWidth = scrollpanel.offsetWidth - borderLeft - borderRight\n const offsetHeight = scrollpanel.offsetHeight - borderTop - borderBottom\n\n // only create the shadow effect if no scrollbars are showing but there is overflow\n if (scrollpanel.clientWidth === offsetWidth && scrollpanel.clientHeight === offsetHeight) {\n x = (scrollpanel.clientWidth < scrollpanel.scrollWidth)\n y = (scrollpanel.clientHeight < scrollpanel.scrollHeight)\n }\n return { x, y }\n}\n\nfunction positionShadowEffect(scrollpanel, { x, y }) {\n const effectElements = getShadowEffectElements(scrollpanel)\n effectElements[0].classList[x ? 'add' : 'remove'](`${SHADOW_EFFECT_CLASSNAME}--x`)\n effectElements[1].classList[y ? 'add' : 'remove'](`${SHADOW_EFFECT_CLASSNAME}--y`)\n}\n\nfunction getShadowEffectElements(scrollpanel) {\n const table = scrollpanel.querySelector('table')\n const shadowEffectsNeeded = table && table.className.indexOf('--sticky') > -1 ? 2 : 1\n\n let wrapper = scrollpanel.parentNode\n if (!wrapper.matches(`.${SHADOW_WRAPPER_CLASSNAME}`)) {\n wrapper = document.createElement('div')\n wrapper.classList.add(SHADOW_WRAPPER_CLASSNAME)\n scrollpanel.parentNode.insertBefore(wrapper, scrollpanel)\n wrapper.appendChild(scrollpanel)\n }\n\n while (wrapper.querySelectorAll(`.${SHADOW_EFFECT_CLASSNAME}`).length < shadowEffectsNeeded) {\n wrapper.insertAdjacentHTML('afterbegin', `
`)\n }\n\n const effectElements = Array.from(wrapper.querySelectorAll(`.${SHADOW_EFFECT_CLASSNAME}`))\n if (effectElements.length === 1) {\n effectElements[1] = effectElements[0]\n }\n\n if (positionStickySupport) {\n positionForStickyTable(scrollpanel, effectElements)\n }\n return effectElements\n}\n\nfunction positionForStickyTable(scrollpanel, shadowEffectElements) {\n let wrapper = scrollpanel.parentNode\n const table = scrollpanel.querySelector('table')\n let top = 0, bottom = 0, left = 0, right = 0\n if (table) {\n const className = table.className || ''\n const styleX = shadowEffectElements[0].style\n const styleY = shadowEffectElements[1].style\n const currentLeft = styleX.left ? parseInt(styleX.left) : 0\n const currentRight = styleX.right ? parseInt(styleX.right) : 0\n const currentTop = styleY.top ? parseInt(styleY.top) : 0\n const currentBottom = styleY.bottom ? parseInt(styleY.bottom) : 0\n\n\n if (className.indexOf('--sticky-header') > -1) {\n const tbody1 = table.querySelector('tbody:first-of-type')\n top = (tbody1 && tbody1.offsetTop) || 0\n }\n if (className.indexOf('--sticky-footer') > -1) {\n const tbody2 = table.querySelector('tbody:last-of-type')\n const tbodyBottom = tbody2 && (tbody2.offsetTop + tbody2.offsetHeight) || 0\n bottom = table.clientHeight - tbodyBottom\n }\n if (className.indexOf('--sticky-firstcol') > -1) {\n const firstCell = table.querySelector('th:first-child,td:first-child')\n left = (firstCell && firstCell.offsetWidth)\n }\n if (className.indexOf('--sticky-lastcol') > -1) {\n const lastCell = table.querySelector('th:last-child,td:last-child')\n right = (lastCell && lastCell.offsetWidth)\n }\n\n if (top !== currentTop) {\n styleY.top = `${top}px`\n }\n\n if (bottom !== currentBottom) {\n styleY.bottom = `${bottom}px`\n }\n if (left !== currentLeft) {\n styleX.left = `${left}px`\n }\n if (right !== currentRight) {\n styleX.right = `${right}px`\n }\n\n // THIS IS FIX FOR WHEN SCREEN IS WIDER THAN THE TABLE WIDTH\n // THIS WILL ADJUST THE WIDTH OF THE WRAPPER AND THE\n // SHADOW EFFECT TO BE EQUAL TO THE TABLE WIDTH\n wrapper.style.maxWidth = table.offsetWidth + \"px\"\n scrollpanel.style.maxWidth = table.offsetWidth + \"px\"\n\n }\n}\n\nfunction watch(scrollpanelShadow) {\n const { scrollpanel } = scrollpanelShadow._private\n const observer = scrollpanelShadow._private.observer =\n new MutationObserver(scrollpanelShadow.setShadowEffect.bind(scrollpanelShadow))\n observer.observe(scrollpanel, { attributes: true, characterData: true, childList: true, subtree: true })\n}\n\ndocument.addEventListener(REMOVED_EVENT,\n (e) => instanceList.forEach(instance => instance._checkDestroy(e.detail)))\n\nonDOMChanges(`.${SCROLLPANEL_CLASSNAME}[data-scroll-shadow-effect=\"true\"]`,\n function onDataTableAdded(scrollpanel) {\n new ScrollpanelShadow(scrollpanel)\n },\n function onDataTableRemoved(element) {\n dispatchEvent(document, REMOVED_EVENT, { detail: element })\n })\n","import debounce from '../../../shared/debounce'\n\nexport default function bindTableSortControl (dataTable, sortControl) {\n sortControl = getSortControl(sortControl)\n if (sortControl) {\n const tableSortColumnHandler = e => {\n window.setTimeout(() => {\n if (!e.defaultPrevented) {\n synchControlWithTable(sortControl, dataTable)\n }\n })\n }\n const sortControlChangeHandler = getSortControlChangeHandler(sortControl, dataTable)\n\n dataTable.element.addEventListener('sortbycolumn', tableSortColumnHandler)\n let sortHandlerTarget = sortControl.form || sortControl\n const sortHandlerEventType = sortControl.form ? 'submit' : 'change'\n sortHandlerTarget.addEventListener(sortHandlerEventType, sortControlChangeHandler)\n if (dataTable.getSortedColumn()) {\n synchControlWithTable(sortControl, dataTable)\n }\n else if (sortControl.value) {\n synchTableWithControl(sortControl, dataTable)\n }\n\n const unbindTableSortControl = () => {\n dataTable.element.removeEventListener('sortbycolumn', tableSortColumnHandler)\n sortHandlerTarget.removeEventListener(sortHandlerEventType, sortControlChangeHandler)\n dataTable = sortControl = sortHandlerTarget = null\n }\n return unbindTableSortControl\n }\n}\n\nfunction getSortControlChangeHandler(sortControl, dataTable) {\n if (sortControl.form) {\n return (e) => {\n e.preventDefault()\n synchTableWithControl(sortControl, dataTable)\n }\n } else if (sortControl.dataset.dropdownMenu === 'true') {\n return (e) => {\n if (e.isMenuAction) {\n synchTableWithControl(sortControl, dataTable)\n }\n }\n } else {\n return debounce(() => synchTableWithControl(sortControl, dataTable), 500)\n }\n}\n\nfunction synchControlWithTable (sortControl, dataTable) {\n const sortedColumn = dataTable.getSortedColumn()\n if (sortedColumn) {\n sortControl.value = `${sortedColumn.colIndex}${sortedColumn.ascending ? 'a' : 'd'}`\n }\n}\n\nfunction synchTableWithControl (sortControl, dataTable) {\n const match = sortControl.value.match(/(^\\d+)([ad]$)/)\n if (match) {\n const colIndex = match[1] * 1\n const ascending = match[2] !== 'd'\n dataTable.sortColumn(colIndex, ascending)\n }\n}\n\nfunction getSortControl (sortControl) {\n if ('string' === typeof sortControl) {\n // see if it works as selector\n const controlSelector = sortControl\n sortControl = document.querySelector(controlSelector)\n if (!sortControl) {\n // try by id\n sortControl = document.getElementById(controlSelector)\n }\n }\n return sortControl\n}\n","/**\n * NOTE: We use .textContext rather than .innerText because the latter returns the text in uppercase when\n * css text-transform is uppercase.\n */\nimport onDOMChanges from '../../shared/onDOMChanges'\nimport { ModuleInstance } from '../../shared/ModuleInstance'\nimport { CSS_NS } from '../../shared/constants'\nimport { dispatchEvent } from '../../shared/eventDispatcher'\nimport { translations, getLang } from '../../shared/i18n'\nimport './js/scrollpanel-shadow'\nimport bindTableSortControl from './js/bindTableSortControl'\n\nconst MODULE_NAME = 'DataTable'\nconst DTABLE_CLASSNAME = `${CSS_NS}data-table`\nconst ROW_SELECTED_CLASS = `${DTABLE_CLASSNAME}__row--selected`\nconst COLUMN_SORT_BUTTON_CLASS = `${DTABLE_CLASSNAME}__sort-col-button`\nconst ID_PARSER_RX = /\\b\\S+\\b/g\nconst ENHANCED_FLAG_NAME = 'table'\nconst defaultConfig = {\n announceSortState: true,\n rowSelectedClass: ROW_SELECTED_CLASS\n}\nconst columnSortDescribers = {}\n\n// used the generate unique id for describedy elements\nlet nextElementId = 1\n\nclass _DataTableInstance extends ModuleInstance{\n constructor(element, config = {}) {\n super(MODULE_NAME, element, {...config, enhancedFlagName: ENHANCED_FLAG_NAME}, defaultConfig)\n // Ignore TH elements that have aria-label or aria-labelledby set. The assumption is that the column label\n // is set by this attribute because the button already has a more descriptive label indicative of its action\n setColumnSortDescribers(element)\n }\n\n setConfig(config = {}) {\n super.setConfig(config)\n const { sortColumnHandler } = this._private\n const newConfig = this.getConfig() || {}\n\n const functions = ['onSortColumn', 'sortComparer']\n functions.forEach(fn => {\n if (\"string\" === typeof newConfig[fn] && 'function' === typeof window[newConfig[fn]]) {\n newConfig[fn] = window[newConfig[fn]]\n }\n })\n\n const announceSortState = newConfig.announceSortState\n if ('string' === typeof announceSortState) {\n newConfig.announceSortState = document.getElementById(announceSortState) || document.querySelector(announceSortState)\n }\n\n switch ((newConfig.tableSort || '').toLowerCase()) {\n case 'simple':\n case 'callback':\n case 'event':\n if (!sortColumnHandler) {\n onTableSortColumn(this)\n }\n break;\n default:\n if (sortColumnHandler) {\n this.removeEventHandler(sortColumnHandler)\n this._private.sortColumnHandler = null\n }\n }\n setSortStateDescribers(this)\n }\n\n sortColumn(colIndex, ascending) {\n const sortedColumn = this.getSortedColumn()\n if (sortedColumn && sortedColumn.colIndex === colIndex && sortedColumn.ascending === ascending) {\n return\n }\n\n const element = this.element\n const th = element.querySelectorAll('thead tr:last-child th')[colIndex]\n if (th) {\n if ('undefined' === typeof ascending) {\n ascending = !isSortedAscending(th)\n }\n\n if (!doSort(this, colIndex, ascending, th)) {\n // false means sort state was not updated by one of the sort modes\n setSortState(this, th, ascending)\n }\n }\n }\n\n getSortedColumn() {\n const element = this.element\n const sortableHeader = element.querySelector('th[aria-sort]')\n if (sortableHeader) {\n const sortedHeader = sortableHeader.parentNode.querySelector('th[aria-sort=\"ascending\"], th[aria-sort=\"descending\"]')\n if (sortedHeader) {\n return {\n colIndex: Array.from(sortedHeader.parentNode.children).indexOf(sortedHeader),\n ascending: isSortedAscending(sortedHeader),\n th: sortedHeader\n }\n }\n }\n return null\n }\n\n destroy() {\n const { unbindTableSortControl, liveRegion, sortStateDescriber } = this._private\n if (unbindTableSortControl) {\n unbindTableSortControl()\n }\n if (liveRegion) {\n if (liveRegion.parentNode) {\n liveRegion.parentNode.removeChild(liveRegion)\n }\n if (sortStateDescriber) {\n const element = this.element\n const describedBy = (element.getAttribute('aria-describedby') || '')\n .replace(sortStateDescriber.id, '').trim()\n if (describedBy) {\n element.setAttribute('aria-describedby', describedBy)\n } else {\n element.removeAttribute('aria-describedby')\n }\n }\n }\n clearUnusedSortDescribers()\n super.destroy()\n }\n\n _init(config) {\n super._init(config)\n const element = this.element\n\n this.addEventHandler(element, \"click\", onRowSelection(this))\n\n const tableSort = (this.getConfig().tableSort || '').toLowerCase()\n if (tableSort === \"simple\") {\n const sortableHeader = element.querySelector('th[aria-sort=\"ascending\"], th[aria-sort=\"descending\"]')\n if (sortableHeader) {\n const ascending = isSortedAscending(sortableHeader)\n const colIndex = Array.from(sortableHeader.parentNode.children).indexOf(sortableHeader)\n sortTableBody(this, colIndex, ascending, sortableHeader)\n }\n }\n setRowSelectionState(this)\n if (element.dataset.sortControl) {\n this._private.unbindTableSortControl = bindTableSortControl(this, element.dataset.sortControl)\n }\n }\n}\n\nfunction onRowSelection(dataTable) {\n return e => {\n if (e.target.matches('input[type=\"checkbox\"]') && e.target.closest(\"[data-row-selector='true']\")) {\n if (e.target.closest('thead')) {\n selectAllRows(dataTable, e.target.checked)\n }\n setRowSelectionState(dataTable)\n }\n }\n}\n\nfunction selectAllRows(dataTable, selectAll) {\n const element = dataTable.element\n const checkGroup = Array.from(element.querySelectorAll(\"tbody [data-row-selector='true'] input, tbody input[data-row-selector='true']\"))\n checkGroup.forEach((item) => {\n item.checked = selectAll\n })\n}\n\nfunction setRowSelectionState(dataTable) {\n const element = dataTable.element\n const config = dataTable.getConfig()\n\n const checkGroup = Array.from(element.querySelectorAll(\"tbody [data-row-selector='true'] input, tbody input[data-row-selector='true']\"))\n let selectedCount = 0\n checkGroup.forEach((item) => {\n item.closest(\"tr\").classList[item.checked ? 'add' : 'remove'](config.rowSelectedClass)\n if (item.checked) {\n selectedCount++\n }\n })\n const selectAllCheck = element.querySelector(\"thead [data-row-selector='true'] input, thead input[data-row-selector='true']\")\n if (selectAllCheck) {\n selectAllCheck.indeterminate = selectedCount && selectedCount !== checkGroup.length\n selectAllCheck.checked = selectedCount && selectedCount === checkGroup.length\n }\n}\n\nfunction onTableSortColumn(dataTable) {\n const element = dataTable.element\n\n dataTable._private.sortColumnHandler = dataTable.addEventHandler(element, 'click', e => {\n const th = e.target.closest('th[aria-sort]')\n if (th) {\n const ascending = !isSortedAscending(th)\n const colIndex = Array.from(th.parentNode.children).indexOf(th)\n doSort(dataTable, colIndex, ascending, th)\n }\n })\n}\n\nfunction doSort(dataTable, colIndex, ascending, th) {\n const config = dataTable.getConfig()\n let handled = true\n switch ((config.tableSort || '').toLowerCase()) {\n case 'simple':\n doSimpleSort(dataTable, colIndex, ascending, th)\n break\n case 'callback':\n doCallbackSort(dataTable, colIndex, ascending, th)\n break\n case 'event':\n fireSortEvent(dataTable, colIndex, ascending, th, true)\n break\n default:\n handled = false\n }\n return handled\n}\n\n\nfunction doSimpleSort(dataTable, colIndex, ascending, th) {\n sortTableBody(dataTable, colIndex, ascending, th)\n fireSortEvent(dataTable, colIndex, ascending, th, false)\n}\n\nfunction doCallbackSort(dataTable, colIndex, ascending, th) {\n const config = dataTable.getConfig()\n const onSortColumn = config && config.onSortColumn\n if (onSortColumn) {\n const resp = onSortColumn(colIndex, ascending, th)\n if (resp && 'function' === typeof resp.then) {\n resp.then(() => fireSortEvent(dataTable, colIndex, ascending, th, false)).catch(() => { })\n }\n else if (resp !== false) {\n fireSortEvent(dataTable, colIndex, ascending, th, false)\n }\n }\n}\n\nfunction fireSortEvent(dataTable, colIndex, ascending, th, cancelable) {\n const element = dataTable.element\n const eventInit = {\n cancelable: cancelable,\n detail: { colIndex, ascending, th }\n }\n\n if (!cancelable) {\n //when not cancelable, set sort state before event is thrown\n setSortState(dataTable, th, ascending)\n }\n\n const notPrevented = dispatchEvent(element, 'sortbycolumn', eventInit)\n\n if (cancelable && notPrevented) {\n //when cancelable, set sort state only if event was not prevented\n setSortState(dataTable, th, ascending)\n }\n}\n\nfunction setSortState(dataTable, th, ascending) {\n const headers = th.parentNode.querySelectorAll('th[aria-sort]')\n for (let i = 0; i < headers.length; i++) {\n const hdr = headers[i]\n const state = hdr === th ? (ascending ? 'ascending' : 'descending') : 'none'\n hdr.setAttribute('aria-sort', state)\n }\n setSortStateDescribers(dataTable)\n}\n\nfunction sortTableBody(dataTable, colIndex, ascending, th) {\n const element = dataTable.element\n const config = dataTable.getConfig()\n const sortColDataType = th.dataset.sortDataType || ''\n\n function getSortValue(tr) {\n const cell = tr.querySelectorAll('td,th')[colIndex]\n let value = cell ? cell.dataset.sortValue || cell.innerText : ''\n if (sortColDataType === 'numeric') {\n let numeric = value.replace(/[^\\d.-]/g, '')\n numeric = numeric ? parseFloat(numeric) : 0\n if (!isNaN(numeric) && isFinite(numeric)) {\n value = numeric\n } else {\n // not sure if this could happen, but...\n value = Number.MAX_VALUE // sort invalid numerics last\n }\n }\n return value\n }\n\n function isRowGroupHeader(tr) {\n return !!tr.querySelector('th:only-child')\n }\n\n const tbodies = Array.from(element.querySelectorAll('tbody')).map(tbody => {\n const trows = Array.from(tbody.querySelectorAll('tr'))\n return {\n tbody,\n rows: trows.map(tr => {\n return {\n tr,\n sortValue: getSortValue(tr)\n }\n })\n }\n })\n\n tbodies.forEach(tbodyData => {\n const { rows, tbody } = tbodyData\n rows.sort((rowA, rowB) => {\n if (isRowGroupHeader(rowA.tr)) {\n return -1\n }\n if (isRowGroupHeader(rowB.tr)) {\n return 1\n }\n const a = ascending ? rowA.sortValue : rowB.sortValue\n const b = ascending ? rowB.sortValue : rowA.sortValue\n\n let order\n if ('function' === typeof config.sortComparer) {\n order = config.sortComparer(a, b, colIndex, ascending ? rowA.tr : rowB.tr, ascending ? rowB.tr : rowB)\n }\n\n if (!order && order !== 0) {\n order = sortColDataType === 'numeric' ? (a - b) :\n a.localeCompare(b, undefined, { sensitivity: 'base', numeric: true })\n }\n\n return order\n })\n\n rows.forEach(({ tr }) => tbody.appendChild(tr))\n })\n}\n\nfunction isSortedAscending(th) {\n return th.getAttribute('aria-sort') === 'ascending'\n}\n\nfunction setSortStateDescribers(dataTable) {\n const { announceSortState, tableSort } = dataTable.getConfig()\n if (announceSortState) {\n const _private = dataTable._private\n let liveRegion = _private.liveRegion\n // A liveRegion should only be \"visible\" when announcing. At other times, it should be \"hidden\" so\n // that it is not read as normal page text as the user moves past the table to the next part of the page.\n // Here, if the liveRegion is hidden, show, then return after a brief timeout to let the change take effect\n if (liveRegion && liveRegion.getAttribute('aria-hidden') === 'true') {\n liveRegion.removeAttribute('aria-hidden')\n window.setTimeout(() => {\n setSortStateDescribers(dataTable)\n }, 100)\n return\n }\n const sortedColumn = dataTable.getSortedColumn()\n let sortStateDescriber = _private.sortStateDescriber\n if (tableSort || sortedColumn || sortStateDescriber) {\n const translation = translations(getLang(dataTable.element)).t\n if (!sortStateDescriber) {\n sortStateDescriber = _private.sortStateDescriber = getSortStateDescriberElement(dataTable, translation)\n }\n sortStateDescriber.textContent = getSortedStateDescription(sortedColumn, translation)\n liveRegion = _private.liveRegion\n const element = dataTable.element\n if (liveRegion) {\n if (!liveRegion.parentNode && element.parentNode) {\n // liveRegion added here rather then when created to:\n // 1. Prevent the liveRegion from announcing itself on a change in text when first created\n // 2. On the remote chance that the table (element) has not yet been added to the DOM\n element.parentNode.insertBefore(liveRegion, element.nextSibling)\n }\n if (_private.liveRegionTimeout) {\n window.clearTimeout(_private.liveRegionTimeout)\n }\n // after 3 seconds, hide the live region\n _private.liveRegionTimeout = window.setTimeout(() => {\n liveRegion.setAttribute('aria-hidden', true)\n _private.liveRegionTimeout = 0\n }, 5000)\n }\n }\n }\n\n}\n\nfunction getSortStateDescriberElement(dataTable, t) {\n const { announceSortState } = dataTable.getConfig()\n let sortStateEl\n\n if (announceSortState instanceof Element) {\n sortStateEl = announceSortState\n }\n\n if (!sortStateEl) {\n const element = dataTable.element\n // create descriptor in 2 parts.\n // Part 1 is the table caption followed by \"is\". e.g. \"Table 'Policies' is \"\n const part1 = t('htmlTableIs', getTableCaption(element))\n // Part 2 is the sort state. e.g. \"sorted by Name, ascending\"\n // It is what is updated with each each sort\n const part2 = sortStateEl = document.createElement('span')\n // Part 2 is associated with the table via aria-describedby, so AT will describe the table's sort state\n // without repeating the table caption\n part2.id = `table-sort-describer-${nextElementId++}`\n const describedby = `${element.getAttribute('aria-describedby') || ''} ${sortStateEl.id}`.trim()\n element.setAttribute('aria-describedby', describedby)\n // parts 1&2 are combined as a live region after the table, so AT will read this as:\n // \"Table 'Policies' is sorted by Name, ascending\"\n const liveRegion = dataTable._private.liveRegion = document.createElement('span')\n liveRegion.textContent = part1\n liveRegion.appendChild(part2)\n liveRegion.classList.add(`${CSS_NS}sr-only`)\n liveRegion.setAttribute('aria-live', 'polite')\n // aria-atomic = true means to read the entire live region when sortStateEl changes, not just the updated text\n liveRegion.setAttribute('aria-atomic', 'true')\n // NOTE: liveRegion added to the DOM in setSortStateDescribers\n }\n return sortStateEl\n}\n\n\nfunction getSortedStateDescription(sortedColumn, t) {\n if (sortedColumn) {\n const { ascending, th } = sortedColumn\n const columnName = getColumnName(th)\n const DIRECTION_ATTR = ascending ? 'data-ascending-text' : 'data-descending-text'\n const direction = th.getAttribute(DIRECTION_ATTR) || t(ascending ? 'ascending' : 'descending')\n return t('tableSortStateDescription', columnName, direction)\n }\n return t('notSorted')\n}\n\nfunction getColumnName(th) {\n const columnName = th.getAttribute('data-column-name') ||\n th.getAttribute('aria-label') ||\n getLabelledByLabel(th) ||\n th.textContent || ''\n return columnName.trim()\n}\n\nfunction getTableCaption(table) {\n const caption = table.querySelector('caption')\n let text = (caption && caption.textContent && caption.textContent.trim()) || getLabelledByLabel(table)\n if (!text) {\n const figure = table.closest('figure')\n const figcaption = figure && figure.querySelector('figcaption')\n text = (figcaption && figcaption.textContent && figcaption.textContent.trim() )\n }\n return text ? `'${text}'` : ''\n}\n\n\nfunction getLabelledByLabel(el) {\n const labelledByIds = el.getAttribute('aria-labelledby')\n return labelledByIds ? labelledByIds.match(ID_PARSER_RX).map((id) => {\n const el = document.getElementById(id)\n return (el && el.textContent && el.textContent.trim())\n }).filter(label => label).join(' ').trim() : ''\n}\n\nfunction setColumnSortDescribers(table) {\n // Only apply to column headers whose label is not configured by aria-label or aria-labelledby.\n // The assumption is if is so labelled, then sort button can have a more meaningful label\n // and would not need aria-describedby\n const sortableHeaders = Array.from(table.querySelectorAll('th[aria-sort]:not([aria-label]):not([aria-labelledby])'))\n sortableHeaders.forEach(th => {\n const SORT_BUTTON_SELECTOR = `.${COLUMN_SORT_BUTTON_CLASS}`\n const sortButton = th.querySelector(SORT_BUTTON_SELECTOR) || th.matches(SORT_BUTTON_SELECTOR)\n if (sortButton) {\n const describer = getColumnSortDescriber(getLang(sortButton))\n const describedbyIds = (sortButton.getAttribute('aria-describedby') || '').match(ID_PARSER_RX) || []\n if (describedbyIds.indexOf(describer.id) === -1) {\n describedbyIds.push(describer.id)\n }\n sortButton.setAttribute('aria-describedby', describedbyIds.join(' '))\n }\n })\n}\n\nfunction getColumnSortDescriber(lang) {\n let describer = columnSortDescribers[lang]\n if (!describer) {\n const docLang = getLang(document.body)\n const SORT_DESCR_ID_PFX = 'data-column-sort-button-description'\n const selector = `[id^=\"${SORT_DESCR_ID_PFX}\"]${lang !== docLang ? `[lang=\"${lang}\"]` : ''}`\n describer = document.querySelector(selector)\n if (!describer) {\n describer = document.createElement('span')\n describer.hidden = true\n describer.id = `${SORT_DESCR_ID_PFX}-${nextElementId++}`\n describer.textContent = translations(lang).t('sortColumnDescription')\n if (lang !== docLang) {\n describer.lang = lang\n }\n document.body.appendChild(describer)\n // only track the describers created so we know which to delete\n columnSortDescribers[lang] = describer\n }\n }\n return describer\n}\n\nfunction clearUnusedSortDescribers() {\n // called by destroy. Removes any column sort describers created by this module no longer needed\n Object.keys(columnSortDescribers).forEach(key => {\n const describer = columnSortDescribers[key]\n if (!document.querySelector(`[aria-describedby~=\"${describer.id}\"]`)) {\n describer.parentNode.removeChild(describer)\n delete columnSortDescribers[key]\n }\n })\n}\n\n/////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nclass DataTable {\n constructor(element, config) {\n this._instance = ModuleInstance.getInstance(MODULE_NAME, element, _DataTableInstance, config)\n }\n\n /**\n * Sets or resets the configuration\n * When resetting, only properties included in the config object will be updated\n * @param {object} config\n */\n setConfig(config) {\n this._instance.setConfig(config)\n }\n\n /**\n * Sort table by column based on its table-sort configuration: simlple, callback, event.\n * If table-sort is not set, simply toggles the column's sort state\n * @param {number} colIndex - The zero-based column index to sort\n * @param {boolean} ascending (optional) Forces an ascending or decending order. If not provided, reverses the current sort order or sorts ascending if not currently sorted.\n */\n sortColumn(colIndex, ascending) {\n this._instance.sortColumn(colIndex, ascending)\n }\n\n /**\n * Gets the column index and sort state of the currently sorted column\n * @returns {object} If a column is sorted, returns an object with the properties:\n * - colIndex: The zero-based index of the sorted column\n * - acending: true if sorted ascending; otherwise false\n * Returns null if no column is sorted\n */\n getSortedColumn() {\n return this._instance.getSortedColumn()\n }\n /**\n * Detaches from the nav element, removes event listeners, and frees resources.\n */\n destroy() {\n this._instance.destroy()\n delete this._instance\n }\n}\n\nonDOMChanges('table[data-table-sort], table [data-row-selector=\"true\"]',\n function onDataTableAdded(element) {\n const table = element.closest('table')\n if (table && !ModuleInstance.isEnhanced(table, ENHANCED_FLAG_NAME)) {\n new _DataTableInstance(table)\n }\n })\n\nexport { DataTable }\n"],"names":["languages","en","year","month","current","minimum","maximum","today","close","nextYear","nextMonth","prevYear","prevMonth","calendar","pageUp","pageDown","escapeLabel","altKey","optionKey","day","months","name","abbr","days","initial","ascending","descending","htmlTableIs","tableSortStateDescription","notSorted","sortColumnDescription","color","interpolate","fr","translations","lang","getLang","toLowerCase","langParts","split","language","reduce","acc","value","index","langCode","slice","join","l","indexOf","t","key","replacements","translate","v","r","i","replace","RegExp","element","langEl","closest","window","navigator","l10n","us","dateFormat","firstDayOfWeek","gb","iso","getLocale","langAttr","country","localization","format","hasOwnProperty","dateFormatLabel","NAMESPACE","CSS_NS","createEvent","eventType","eventInit","additionalProperties","stripNonCustomEventInitProperties","event","init","bubbles","CustomEvent","document","cancelable","details","detail","initCustomEvent","Object","keys","forEach","defineProperty","get","dispatchEvent","target","properties","strippedProperties","whenDOMReady","callback","readyState","addEventListener","observer","nextId","listeners","onDomChanges","selector","onNodeAdded","onNodeRemoved","id","push","whenReady","existingNodes","body","querySelectorAll","length","MutationObserver","observerCallback","observe","childList","subtree","cancel","splice","mutationList","mutation","type","onChildListUpdates","addedNodes","removedNodes","dispatchUpdates","nodeList","matchedNodes","node","HTMLElement","matches","childNodes","j","storeInstances","instances","set","instance","tdsEnhancers","remove","isValidDateInstance","date","Date","isNaN","getDate","parseDate","str","localeFormat","ISO_RX","DELIMITED_RX","NOT_DELIMITER_RX","dateStr","test","formatParts","parts","delimitedMatch","exec","map","placeholder","offset","substring","YYYY","MM","DD","ISO_MATCH","parseInt","dateStr2","toISOString","toISODate","yy","getFullYear","mm","getMonth","dd","toReadableDate","getDay","configureDates","config","dueDate","stringifyConfigDate","setMinMaxOptions","min","max","configureDisabledDates","dt","undefined","minIn","maxIn","min_max","d","DATE_RANGE_RX","disabledDates","trim","rangeMatch","from","to","concat","isDateDisabled","disabled","CALENDAR_CLASS","CALENDAR_MONTH_CLASS","CALENDAR_HEADER_CLASS","CALENDAR_FOOTER_CLASS","CALENDAR_BODY_CLASS","SELECTABLE_DAY_CLASS","SELECTED_DAY_CLASS","CURRENT_DATE_CLASS","DUE_DATE_CLASS","DAY_OUTSIDE_MONTH_CLASS","INSTANCE_KEY","REMOVED_EVENT","HOOKS","onDayCreated","defaultConfig","_CalendarInstance","_element","dataset","enhancedCalendar","_handlers","keyHandler","actionHandler","calendarRemovedHandler","bindHandlers","renderCalendarTemplate","renderMonth","enableNavigationButtons","updateCalendarDays","_rendered","currentOptions","_config","_locale","render","activeDate","constrainActiveDate","state","calElement","focusOn","querySelector","setTimeout","focus","hookName","hooks","_hooks","hookArray","selectedDate","selDateStr","activeDateStr","_state","newState","data","setConfig","setActiveDate","container","prevConfig","_prevConfig","calendarMonth","week","hdrCells","ix","includeToday","currentDate","endOfMonth","startOfMonth","isMac","platform","metaKeyTitle","metaKeyLabel","prevYearTitle","prevYearLabel","nextYearTitle","nextYearLabel","prevMonthLabel","nextMonthLabel","todayAccesskey","calendarTemplate","toUpperCase","innerHTML","insertAdjacentHTML","setAttribute","prevState","_prevState","prevActiveDate","tbody","monthName","title","innerText","renderDays","onDayCreatedHook","activeYear","activeMonth","todayStr","start","end","startDayOfWeek","endDate","totalDays","Math","ceil","monthDay1","isCurrentDate","labelDescriptors","labelDescription","label","weekday","firstDay","lastDay","outOfRange","attributeMap","attributes","filter","classMap","classNames","classAttr","cell","buttons","action","getAttribute","goToDate","calcGoToDate","removeAttribute","selectedDateStr","dataDate","isActive","isSelected","classList","hasHook","dayEl","dataStr","triggerHook","bind","method","el","handler","_handlersBound","destroy","goToDateAction","code","selectDate","preventDefault","metaKey","btnToday","accessKey","ACTION_ATTR","button","newActiveDate","goToYear","goToMonth","goToDay","change","$","relativeDayOfWeek","dateParts","setDate","hookArgs","onDOMChanges","onDateRemoved","Calendar","_instance","hookNames","removeHook","addHook","FOCUSABLE_SELECTOR","containTabFocus","onTabKey","removeEventListener","tagName","focusables","getFocusableElements","match","shiftKey","goTo","nodes","tabbable","enabled","visible","offsetWidth","offsetHeight","activeElement","keep","checked","sort","a","b","tabindexA","tabindexB","getTargetElement","attribute","href","getElementById","err","TRANSITION_END","onTransitionEnd","propertyName","timeoutId","eventHandler","clearTimeout","isTyping","keyEvent","ctrlKey","ESCAPE_LABEL","floor","random","date_format_label_output_selector","_DateInputInstance","privateData","_private","Array","datePart","yearInput","monthInput","dayInput","Error","currentConfig","setValidityState","valueAsDate","trigger","isCalendarOpened","closeCalendar","openCalendar","bindCalendar","calendarElement","transitioning","documentClickHandler","cancelTabFocus","hidden","removeEventHandlers","enhancedDate","input","val","to4Digits","to2Digits","toString","synchHiddenRelatedElements","validity","valid","badInput","rangeUnderflow","rangeOverflow","unavailable","dateInput","maxLength","hiddenInput","applyDateFormat","controlDateFormatLabel","createA11ySpan","bindCalendarTrigger","addEventHandler","focusOutHandler","pasteHandler","changeHandler","keydownHandler","handlers","inputsInFormatOrder","lastDatePart","partName","parentNode","insertBefore","date_format_label_output","date_format_label_new","a11ySpan","createElement","a11y","add","appendChild","hiddenOutput","toggleCalendar","dataToday","calendarKeyHandler","calendarDateSelectedHandler","order","clipboardData","text","getData","fireChangeEvent","selectionStart","selectionEnd","inputIX","contains","keepOpen","invalids","onDateAdded","DateInput","isValid","enableDropdownMenu","enhancedDropdownMenu","onChange","isMenuAction","diff","getTime","lastKeyboardTS","keyboardChange","fireMenuActionEvent","onKeyDown","restoreValue","initState","onFocus","onBlur","Event","initEvent","disableDropdownMenu","DropdownMenu","_disableDropdownMenu","e","ModuleInstance","moduleName","enhancedFlagName","_init","on","off","handlerMap","datasetEnhancedProperty","dataConfig","getDataConfiguration","getConfig","cancelDOMWatch","typeListeners","call","defaultPrevented","getDatasetEnhancedProperty","enhancedDataAttribute","destroyTimeout","onInstanceAdded","addedEl","onInstanceDeleted","deletedEl","constructor","TAB_TRAP_ATTRIBUTE","FOCUSABLE_ELEMENTS","classes","DISMISS","Dialog","_onFocusAway","_isOpen","returnTo","getConfigElement","tabTraps","getTabTraps","_tabTrapFocusHandler","onTabTrapFocus","tabTrap","_initialFocus","_removeHandlers","focused","initialFocus","getFocusableChildren","firstFocusable","secondFocusable","modeless","createTabTrap","firstChild","relatedTarget","children","child","getClientRects","dlg","id_selector_or_node","context","debounce","fn","delay","immediate","timeout","args","arguments","callNow","apply","SHADOW_EFFECT_CLASSNAME","instanceList","onResize","setShadowEffect","ScrollShadow","scrollpanel","shadowX","shadowY","pauseWatch","offsets","getShadowOffsets","applyShadowEffect","watch","characterData","disconnect","x","y","style","getComputedStyle","borderLeft","borderLeftWidth","borderRight","borderRightWidth","borderTop","borderTopWidth","borderBottom","borderBottomWidth","clientWidth","clientHeight","scrollWidth","scrollHeight","_checkDestroy","onDataTableAdded","onDataTableRemoved","MODULE_NAME","MODAL_TRIGGER_ATTR","MODAL_OPEN_BODY_CLASS","MODAL_DISMISS_SELECTOR","MADE_INERT_ATTR","MADE_INERT_ALL","MADE_INERT_INERT_ONLY","EVENTS","OPEN","OPENED","CLOSE","CLOSED","BODY","escapeClose","_ModalInstance","backdropClose","_dismissHandler","dialog","positioned","doNotMove","open","setBodyModalOpenState","inertOutsideNodes","clickHandler","scrollShadow","console","log","returnValue","_returnValue","removeEventHandler","madeInert","closeModal","dismiss","which","modal","vScrollBarWidth","innerWidth","paddingRight","removeProperty","preventIOSScroll","CSS","supports","stored_scrollTop","pageYOffset","scrollTop","position","top","right","bottom","left","body_pos","scrollTo","pageXOffset","siblings","sibling","hasAttribute","ariaHidden","madeInertValue","Modal","getInstance","modalEl","Timepicker","options","elHour","elMinute","elAmpm","elMobile","format24","moment","defaultTime","setTime","updateTime","addEvents","timestamp","sep","total","hour","minute","ampm","timestamp24","currFocus","setSelectionRange","numberRegex","hourStr","checkMax","switchAMPM","minuteStr","updateHour","reformatMinute","letterRegex","h","m","ap","obj","updateFocus","validateHour","reformatHour","keyCode","validateMinute","updateMinute","validateAMPM","ENHANCED_FLAG","DISMISS_CLASS","DISMISS_DATA_ATTR","Alert","_enhance","alert","focusElm","scroll","link","onDismissableAlertAdded","ALERT_SELECTOR","WorkflowNavigation","statusTitle","getElementsByClassName","barContainer","bar","_total","steps","_index","updateUI","Number","isInteger","currentProgress","width","iconEls","attrs","attributeTags","classTags","icon","ii","Workflow","navigationSteps","progress","sectionElements","workflowSections","progressElement","len","cur","WorkflowSection","that","confirm","createSummary","expand","isComplete","isConfirmed","activate","hide","scrollToSection","lock","updateProgressBar","all","complete","section","includeNav","preventDefaultForScrollKeys","disableScroll","onwheel","onmousewheel","ontouchmove","onkeydown","enableScroll","rect","getBoundingClientRect","destination","navigationHeight","increment","animate","scrollBy","abs","summary","summaryText","topic","textContent","COMPOUND_FIELD_CLASS","PHONE_CLASS","POSTALCODE_CLASS","COMPOUND_FIELD_SELECTORS","_CompoundFieldInstance","compoundFieldEnhanced","_cont","_arr","getFields","_hiddenInput","getHiddenInput","_setUpEventHandlers","cont","_addEventHandler","_adjust","_concatFields","noPaste","paste","substr","_pasteAdjust","cursorPosition","direction","nextIX","focusTo","pastevalue","_","valueMap","field","concatenated","compoundField","CompoundField","registerSelector","compFld","masking","maskedEnhanced","MaskedField","_masking","_masking_format","_masking_value","alterField","maskedformat","activateMasking","handleValueChange","handleCurrentValue","isCharsetPresent","newValue","isInt","isLetter","strippedValue","mNum","mChar","matchesNumber","matchesLetter","TOGGLE_EVENT","NAV_CLASSNAME","NAV_DISMISS_SELECTOR","_NavigationInstance","baseNavClass","navClasses","enhancedNav","toggle","_topToggle","expanded","toggleNavItem","_removeEventHandlers","enhance","onExpandCollapse","onCloseNav","onEscape","onFocusOut","topToggle","find","baseClassName","nav","navList","navDropdown","navItem","navToggle","navToggleExpandedText","navToggleCollapsedText","buttonToggleSelector","labelToggleSelector","toggleSelectors","selectors","s1","toggledNavGroups","navGroup","checkbox","navGroupParent","removeChild","createToggleButton","closeButton","navigation","isOpen","done","isTopToggle","navGroupId","isTopLevelDropdown","toggleSubNav","subToggles","transitionNavItems","heightDuration","opacityDuration","heightDelay","opacityDelay","getNavList","items","isVisible","reverse","wrapup","item","restoreStyles","saveCurrentStyles","display","overflow","transitionProperty","transitionDuration","transitionTimingFunction","hDelay","oDelay","height","opacity","transitionDelay","onNavItemTransitionEnd","applyStyles","navListSelector","SAVE_STYLES_PROP","styles","visibility","onEnd","className","Navigation","onNavAdded","onNavRemoved","fixedWidth","registerBaseClassName","SCROLLPANEL_CLASSNAME","SHADOW_WRAPPER_CLASSNAME","positionStickySupport","cssText","pointerEventsSupport","pointerEvents","timeoutid","ScrollpanelShadow","getShadowEffectElements","positionShadowEffect","effectElements","table","shadowEffectsNeeded","wrapper","positionForStickyTable","shadowEffectElements","styleX","styleY","currentLeft","currentRight","currentTop","currentBottom","tbody1","offsetTop","tbody2","tbodyBottom","firstCell","lastCell","maxWidth","scrollpanelShadow","bindTableSortControl","dataTable","sortControl","getSortControl","tableSortColumnHandler","synchControlWithTable","sortControlChangeHandler","getSortControlChangeHandler","sortHandlerTarget","form","sortHandlerEventType","getSortedColumn","synchTableWithControl","unbindTableSortControl","dropdownMenu","sortedColumn","colIndex","sortColumn","controlSelector","DTABLE_CLASSNAME","ROW_SELECTED_CLASS","COLUMN_SORT_BUTTON_CLASS","ID_PARSER_RX","ENHANCED_FLAG_NAME","announceSortState","rowSelectedClass","columnSortDescribers","nextElementId","_DataTableInstance","setColumnSortDescribers","sortColumnHandler","newConfig","functions","tableSort","onTableSortColumn","setSortStateDescribers","th","isSortedAscending","doSort","setSortState","sortableHeader","sortedHeader","liveRegion","sortStateDescriber","describedBy","clearUnusedSortDescribers","onRowSelection","sortTableBody","setRowSelectionState","selectAllRows","selectAll","checkGroup","selectedCount","selectAllCheck","indeterminate","handled","doSimpleSort","doCallbackSort","fireSortEvent","onSortColumn","resp","then","notPrevented","headers","hdr","sortColDataType","sortDataType","getSortValue","tr","sortValue","numeric","parseFloat","isFinite","MAX_VALUE","isRowGroupHeader","tbodies","trows","rows","tbodyData","rowA","rowB","sortComparer","localeCompare","sensitivity","translation","getSortStateDescriberElement","getSortedStateDescription","nextSibling","liveRegionTimeout","sortStateEl","Element","part1","getTableCaption","part2","describedby","columnName","getColumnName","DIRECTION_ATTR","getLabelledByLabel","caption","figure","figcaption","labelledByIds","sortableHeaders","SORT_BUTTON_SELECTOR","sortButton","describer","getColumnSortDescriber","describedbyIds","docLang","SORT_DESCR_ID_PFX","DataTable","isEnhanced"],"mappings":"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"}