{"version":3,"sources":["webpack:///./node_modules/bootstrap-vue/esm/utils/date.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/form-selection.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/form-validity.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/form-text.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-input/form-input.js","webpack:///./node_modules/bootstrap-vue/esm/utils/locale.js","webpack:///./node_modules/bootstrap-vue/esm/constants/date.js","webpack:///./node_modules/bootstrap-vue/esm/components/calendar/calendar.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-datepicker/form-datepicker.js","webpack:///./node_modules/bootstrap-vue/esm/directives/hover/hover.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-btn-label-control/bv-form-btn-label-control.js"],"names":["_slicedToArray","arr","i","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","TypeError","o","minLen","_arrayLikeToArray","n","Object","prototype","toString","call","slice","constructor","name","Array","from","test","len","length","arr2","Symbol","iterator","_arr","_n","_d","_e","undefined","_s","_i","next","done","push","value","err","isArray","_construct","Parent","args","Class","_isNativeReflectConstruct","Reflect","construct","a","apply","Constructor","Function","bind","instance","_setPrototypeOf","arguments","sham","Proxy","Date","e","p","setPrototypeOf","__proto__","createDate","_len","_key","parseYMD","date","trim","_date$split$map","split","map","v","_date$split$map2","year","month","day","getFullYear","getMonth","getDate","formatYMD","concat","resolveLocale","locales","calendar","filter","fmt","Intl","DateTimeFormat","resolvedOptions","locale","createDateFormatter","options","dtf","format","datesEqual","date1","date2","firstDateOfMonth","setDate","lastDateOfMonth","setMonth","addYears","numberOfYears","setFullYear","oneMonthAgo","oneMonthAhead","oneYearAgo","oneYearAhead","oneDecadeAgo","oneDecadeAhead","constrainDate","min","max","formSelectionMixin","extend","computed","selectionStart","cache","get","this","$refs","input","set","val","selectionEnd","selectionDirection","methods","select","_this$$refs$input","setSelectionRange","_this$$refs$input2","setRangeText","_this$$refs$input3","formValidityMixin","validity","validationMessage","willValidate","setCustomValidity","checkValidity","reportValidity","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","enumerable","_objectSpread","target","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","obj","configurable","writable","_makeModelMixin","type","defaultValue","event","modelMixin","mixin","modelProps","props","MODEL_PROP_NAME","prop","MODEL_EVENT_NAME","ariaInvalid","autocomplete","debounce","formatter","lazy","lazyFormatter","number","placeholder","plaintext","readonly","formTextMixin","mixins","data","localValue","vModelValue","modifyValue","computedClass","isRange","isColor","sizeFormClass","stateClass","computedDebounce","hasFormatter","watch","newValue","stringifyValue","modifiedValue","clearDebounce","created","$_inputDebounceTimer","mounted","$on","beforeDestroy","clearTimeout","formatValue","force","updateValue","_this","doUpdate","$emit","$input","setTimeout","onInput","composing","formattedValue","defaultPrevented","propagation","onChange","onBlur","focus","disabled","$el","blur","TYPES","list","noWheel","step","BFormInput","localType","computedAttrs","form","required","id","safeId","computedAriaInvalid","computedListeners","bvListeners","change","setWheelStopper","deactivated","activated","on","onWheelFocus","onWheelBlur","document","stopWheel","render","h","class","attrs","domProps","ref","RTL_LANGS","toLowerCase","isLocaleRTL","parts","replace","locale1","join","locale2","CALENDAR_GREGORY","CALENDAR_LONG","CALENDAR_NARROW","CALENDAR_SHORT","DATE_FORMAT_2_DIGIT","DATE_FORMAT_NUMERIC","_watch","ariaControls","block","dateDisabledFn","dateFormatOptions","weekday","dateInfoFn","direction","hidden","hideHeader","initialDate","labelCalendar","labelCurrentMonth","labelHelp","labelNav","labelNextDecade","labelNextMonth","labelNextYear","labelNoDateSelected","labelPrevDecade","labelPrevMonth","labelPrevYear","labelSelected","labelToday","navButtonVariant","noHighlightToday","noKeyNav","roleDescription","selectedVariant","showDecadeNav","startWeekday","todayVariant","valueAsDate","weekdayHeaderFormat","width","BCalendar","selected","selectedYMD","activeYMD","getToday","gridHasFocus","isLive","valueId","widgetId","navId","gridId","gridCaptionId","gridHelpId","activeId","selectedDate","activeDate","computedMin","computedMax","computedWeekStarts","computedLocale","computedDateDisabledFn","computedDateInfoFn","calendarLocale","calendarYear","calendarMonth","calendarFirstDay","calendarDaysInMonth","computedVariant","computedTodayVariant","computedNavButtonVariant","isRTL","dir","context","selectedFormatted","formatDateString","activeFormatted","dateDisabled","rtl","dateOutOfRange","rangeFn","ymd","hour","minute","second","formatYearMonth","formatWeekdayName","formatWeekdayNameShort","formatDay","nf","NumberFormat","style","minimumIntegerDigits","minimumFractionDigits","maximumFractionDigits","notation","prevDecadeDisabled","prevYearDisabled","prevMonthDisabled","thisMonthDisabled","nextMonthDisabled","nextYearDisabled","nextDecadeDisabled","matrix","firstDay","daysInMonth","startIndex","getDay","weekOffset","currentDay","week","j","dayYMD","dayDisabled","dateInfo","label","isThisMonth","isDisabled","info","calendarHeadings","_this2","d","text","oldValue","old","newYMD","oldYMD","setLive","_this3","$nextTick","grid","_this4","emitSelected","_this5","setGridFocusFlag","onKeydownWrapper","altKey","ctrlKey","keyCode","checkDate","constrainedToday","onKeydownGrid","onClickDay","clickedDate","gotoPrevDecade","gotoPrevYear","gotoPrevMonth","gotoCurrentMonth","gotoNextMonth","gotoNextYear","gotoNextDecade","onHeaderClick","_this6","hideDecadeNav","todayYMD","highlightToday","$header","staticClass","for","role","tabindex","click","title","labelSelectedDate","navScope","navProps","shiftV","navPrevProps","flipH","navNextProps","$prevDecadeIcon","normalizeSlot","$prevYearIcon","$prevMonthIcon","$thisMonthIcon","$nextMonthIcon","$nextYearIcon","$nextDecadeIcon","makeNavBtn","content","handler","btnDisabled","shortcut","$nav","$gridCaption","$gridWeekDays","idx","$gridBody","$cells","dIndex","_class","isSelected","isActive","isToday","idCell","$btn","active","pointerEvents","$gridHelp","$grid","keydown","$slot","$widget","lang","bvAttrs","calendarProps","formBtnLabelControlProps","calendarWidth","closeButton","closeButtonVariant","dark","labelCloseButton","labelResetButton","labelTodayButton","noCloseOnSelect","resetButton","resetButtonVariant","resetValue","todayButton","todayButtonVariant","BFormDatepicker","localYMD","isVisible","localLocale","calendarYM","computedLang","computedResetValue","control","updatePopper","_unused","setAndClose","hide","onSelected","onContext","ctx","onTodayButton","onResetButton","onCloseButton","onShow","onShown","onHidden","defaultButtonFn","_ref","isHovered","hasFocus","$createElement","$props","$scopedSlots","$footer","size","variant","_label","_label2","$calendar","scopedSlots","menuClass","show","shown","PROP","MOUSEENTER","MOUSELEAVE","createListener","listener","fn","el","_ref$value","hasListener","handlerChanged","VBHover","componentUpdated","unbind","dropdown","buttonOnly","buttonVariant","BVFormBtnLabelControl","directives","idButton","idLabel","idMenu","idWrapper","computedDir","toggle","setFocus","handleHover","hovered","state","visible","invalid","btnScope","opened","$button","mousedown","onMousedown","hasNormalizedSlot","scale","$hidden","$menu","right","onKeydown","$label","preventDefault","directionClass","boundaryClass"],"mappings":"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","file":"js/chunk-6ec0b8f4.39285270.js","sourcesContent":["function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n// Date utility functions\nimport { CALENDAR_GREGORY } from '../constants/date';\nimport { RX_DATE, RX_DATE_SPLIT } from '../constants/regex';\nimport { concat } from './array';\nimport { identity } from './identity';\nimport { isDate, isString } from './inspect';\nimport { toInteger } from './number'; // --- Date utility methods ---\n// Create or clone a date (`new Date(...)` shortcut)\n\nexport var createDate = function createDate() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _construct(Date, args);\n}; // Parse a date sting, or Date object, into a Date object (with no time information)\n\nexport var parseYMD = function parseYMD(date) {\n if (isString(date) && RX_DATE.test(date.trim())) {\n var _date$split$map = date.split(RX_DATE_SPLIT).map(function (v) {\n return toInteger(v, 1);\n }),\n _date$split$map2 = _slicedToArray(_date$split$map, 3),\n year = _date$split$map2[0],\n month = _date$split$map2[1],\n day = _date$split$map2[2];\n\n return createDate(year, month - 1, day);\n } else if (isDate(date)) {\n return createDate(date.getFullYear(), date.getMonth(), date.getDate());\n }\n\n return null;\n}; // Format a date object as `YYYY-MM-DD` format\n\nexport var formatYMD = function formatYMD(date) {\n date = parseYMD(date);\n\n if (!date) {\n return null;\n }\n\n var year = date.getFullYear();\n var month = \"0\".concat(date.getMonth() + 1).slice(-2);\n var day = \"0\".concat(date.getDate()).slice(-2);\n return \"\".concat(year, \"-\").concat(month, \"-\").concat(day);\n}; // Given a locale (or locales), resolve the browser available locale\n\nexport var resolveLocale = function resolveLocale(locales)\n/* istanbul ignore next */\n{\n var calendar = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : CALENDAR_GREGORY;\n locales = concat(locales).filter(identity);\n var fmt = new Intl.DateTimeFormat(locales, {\n calendar: calendar\n });\n return fmt.resolvedOptions().locale;\n}; // Create a `Intl.DateTimeFormat` formatter function\n\nexport var createDateFormatter = function createDateFormatter(locale, options)\n/* istanbul ignore next */\n{\n var dtf = new Intl.DateTimeFormat(locale, options);\n return dtf.format;\n}; // Determine if two dates are the same date (ignoring time portion)\n\nexport var datesEqual = function datesEqual(date1, date2) {\n // Returns true of the date portion of two date objects are equal\n // We don't compare the time portion\n return formatYMD(date1) === formatYMD(date2);\n}; // --- Date \"math\" utility methods (for BCalendar component mainly) ---\n\nexport var firstDateOfMonth = function firstDateOfMonth(date) {\n date = createDate(date);\n date.setDate(1);\n return date;\n};\nexport var lastDateOfMonth = function lastDateOfMonth(date) {\n date = createDate(date);\n date.setMonth(date.getMonth() + 1);\n date.setDate(0);\n return date;\n};\nexport var addYears = function addYears(date, numberOfYears) {\n date = createDate(date);\n var month = date.getMonth();\n date.setFullYear(date.getFullYear() + numberOfYears); // Handle Feb 29th for leap years\n\n if (date.getMonth() !== month) {\n date.setDate(0);\n }\n\n return date;\n};\nexport var oneMonthAgo = function oneMonthAgo(date) {\n date = createDate(date);\n var month = date.getMonth();\n date.setMonth(month - 1); // Handle when days in month are different\n\n if (date.getMonth() === month) {\n date.setDate(0);\n }\n\n return date;\n};\nexport var oneMonthAhead = function oneMonthAhead(date) {\n date = createDate(date);\n var month = date.getMonth();\n date.setMonth(month + 1); // Handle when days in month are different\n\n if (date.getMonth() === (month + 2) % 12) {\n date.setDate(0);\n }\n\n return date;\n};\nexport var oneYearAgo = function oneYearAgo(date) {\n return addYears(date, -1);\n};\nexport var oneYearAhead = function oneYearAhead(date) {\n return addYears(date, 1);\n};\nexport var oneDecadeAgo = function oneDecadeAgo(date) {\n return addYears(date, -10);\n};\nexport var oneDecadeAhead = function oneDecadeAhead(date) {\n return addYears(date, 10);\n}; // Helper function to constrain a date between two values\n// Always returns a `Date` object or `null` if no date passed\n\nexport var constrainDate = function constrainDate(date) {\n var min = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var max = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n // Ensure values are `Date` objects (or `null`)\n date = parseYMD(date);\n min = parseYMD(min) || date;\n max = parseYMD(max) || date; // Return a new `Date` object (or `null`)\n\n return date ? date < min ? min : date > max ? max : date : null;\n};","import { Vue } from '../vue'; // @vue/component\n\nexport var formSelectionMixin = Vue.extend({\n computed: {\n selectionStart: {\n // Expose selectionStart for formatters, etc\n cache: false,\n\n /* istanbul ignore next */\n get: function get() {\n return this.$refs.input.selectionStart;\n },\n\n /* istanbul ignore next */\n set: function set(val) {\n this.$refs.input.selectionStart = val;\n }\n },\n selectionEnd: {\n // Expose selectionEnd for formatters, etc\n cache: false,\n\n /* istanbul ignore next */\n get: function get() {\n return this.$refs.input.selectionEnd;\n },\n\n /* istanbul ignore next */\n set: function set(val) {\n this.$refs.input.selectionEnd = val;\n }\n },\n selectionDirection: {\n // Expose selectionDirection for formatters, etc\n cache: false,\n\n /* istanbul ignore next */\n get: function get() {\n return this.$refs.input.selectionDirection;\n },\n\n /* istanbul ignore next */\n set: function set(val) {\n this.$refs.input.selectionDirection = val;\n }\n }\n },\n methods: {\n /* istanbul ignore next */\n select: function select() {\n var _this$$refs$input;\n\n // For external handler that may want a select() method\n (_this$$refs$input = this.$refs.input).select.apply(_this$$refs$input, arguments);\n },\n\n /* istanbul ignore next */\n setSelectionRange: function setSelectionRange() {\n var _this$$refs$input2;\n\n // For external handler that may want a setSelectionRange(a,b,c) method\n (_this$$refs$input2 = this.$refs.input).setSelectionRange.apply(_this$$refs$input2, arguments);\n },\n\n /* istanbul ignore next */\n setRangeText: function setRangeText() {\n var _this$$refs$input3;\n\n // For external handler that may want a setRangeText(a,b,c) method\n (_this$$refs$input3 = this.$refs.input).setRangeText.apply(_this$$refs$input3, arguments);\n }\n }\n});","import { Vue } from '../vue'; // @vue/component\n\nexport var formValidityMixin = Vue.extend({\n computed: {\n validity: {\n // Expose validity property\n cache: false,\n\n /* istanbul ignore next */\n get: function get() {\n return this.$refs.input.validity;\n }\n },\n validationMessage: {\n // Expose validationMessage property\n cache: false,\n\n /* istanbul ignore next */\n get: function get() {\n return this.$refs.input.validationMessage;\n }\n },\n willValidate: {\n // Expose willValidate property\n cache: false,\n\n /* istanbul ignore next */\n get: function get() {\n return this.$refs.input.willValidate;\n }\n }\n },\n methods: {\n /* istanbul ignore next */\n setCustomValidity: function setCustomValidity() {\n var _this$$refs$input;\n\n // For external handler that may want a setCustomValidity(...) method\n return (_this$$refs$input = this.$refs.input).setCustomValidity.apply(_this$$refs$input, arguments);\n },\n\n /* istanbul ignore next */\n checkValidity: function checkValidity() {\n var _this$$refs$input2;\n\n // For external handler that may want a checkValidity(...) method\n return (_this$$refs$input2 = this.$refs.input).checkValidity.apply(_this$$refs$input2, arguments);\n },\n\n /* istanbul ignore next */\n reportValidity: function reportValidity() {\n var _this$$refs$input3;\n\n // For external handler that may want a reportValidity(...) method\n return (_this$$refs$input3 = this.$refs.input).reportValidity.apply(_this$$refs$input3, arguments);\n }\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../vue';\nimport { EVENT_NAME_BLUR, EVENT_NAME_CHANGE, EVENT_NAME_INPUT, EVENT_NAME_UPDATE, HOOK_EVENT_NAME_BEFORE_DESTROY } from '../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_FUNCTION, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../constants/props';\nimport { attemptBlur, attemptFocus } from '../utils/dom';\nimport { stopEvent } from '../utils/events';\nimport { mathMax } from '../utils/math';\nimport { makeModelMixin } from '../utils/model';\nimport { toInteger, toFloat } from '../utils/number';\nimport { sortKeys } from '../utils/object';\nimport { hasPropFunction, makeProp, makePropsConfigurable } from '../utils/props';\nimport { toString } from '../utils/string'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('value', {\n type: PROP_TYPE_NUMBER_STRING,\n defaultValue: '',\n event: EVENT_NAME_UPDATE\n}),\n modelMixin = _makeModelMixin.mixin,\n modelProps = _makeModelMixin.props,\n MODEL_PROP_NAME = _makeModelMixin.prop,\n MODEL_EVENT_NAME = _makeModelMixin.event;\n\nexport { MODEL_PROP_NAME, MODEL_EVENT_NAME }; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, modelProps), {}, {\n ariaInvalid: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n autocomplete: makeProp(PROP_TYPE_STRING),\n // Debounce timeout (in ms). Not applicable with `lazy` prop\n debounce: makeProp(PROP_TYPE_NUMBER_STRING, 0),\n formatter: makeProp(PROP_TYPE_FUNCTION),\n // Only update the `v-model` on blur/change events\n lazy: makeProp(PROP_TYPE_BOOLEAN, false),\n lazyFormatter: makeProp(PROP_TYPE_BOOLEAN, false),\n number: makeProp(PROP_TYPE_BOOLEAN, false),\n placeholder: makeProp(PROP_TYPE_STRING),\n plaintext: makeProp(PROP_TYPE_BOOLEAN, false),\n readonly: makeProp(PROP_TYPE_BOOLEAN, false),\n trim: makeProp(PROP_TYPE_BOOLEAN, false)\n})), 'formTextControls'); // --- Mixin ---\n// @vue/component\n\nexport var formTextMixin = Vue.extend({\n mixins: [modelMixin],\n props: props,\n data: function data() {\n var value = this[MODEL_PROP_NAME];\n return {\n localValue: toString(value),\n vModelValue: this.modifyValue(value)\n };\n },\n computed: {\n computedClass: function computedClass() {\n var plaintext = this.plaintext,\n type = this.type;\n var isRange = type === 'range';\n var isColor = type === 'color';\n return [{\n // Range input needs class `custom-range`\n 'custom-range': isRange,\n // `plaintext` not supported by `type=\"range\"` or `type=\"color\"`\n 'form-control-plaintext': plaintext && !isRange && !isColor,\n // `form-control` not used by `type=\"range\"` or `plaintext`\n // Always used by `type=\"color\"`\n 'form-control': isColor || !plaintext && !isRange\n }, this.sizeFormClass, this.stateClass];\n },\n computedDebounce: function computedDebounce() {\n // Ensure we have a positive number equal to or greater than 0\n return mathMax(toInteger(this.debounce, 0), 0);\n },\n hasFormatter: function hasFormatter() {\n return hasPropFunction(this.formatter);\n }\n },\n watch: _defineProperty({}, MODEL_PROP_NAME, function (newValue) {\n var stringifyValue = toString(newValue);\n var modifiedValue = this.modifyValue(newValue);\n\n if (stringifyValue !== this.localValue || modifiedValue !== this.vModelValue) {\n // Clear any pending debounce timeout, as we are overwriting the user input\n this.clearDebounce(); // Update the local values\n\n this.localValue = stringifyValue;\n this.vModelValue = modifiedValue;\n }\n }),\n created: function created() {\n // Create private non-reactive props\n this.$_inputDebounceTimer = null;\n },\n mounted: function mounted() {\n // Set up destroy handler\n this.$on(HOOK_EVENT_NAME_BEFORE_DESTROY, this.clearDebounce);\n },\n beforeDestroy: function beforeDestroy() {\n this.clearDebounce();\n },\n methods: {\n clearDebounce: function clearDebounce() {\n clearTimeout(this.$_inputDebounceTimer);\n this.$_inputDebounceTimer = null;\n },\n formatValue: function formatValue(value, event) {\n var force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n value = toString(value);\n\n if (this.hasFormatter && (!this.lazyFormatter || force)) {\n value = this.formatter(value, event);\n }\n\n return value;\n },\n modifyValue: function modifyValue(value) {\n value = toString(value); // Emulate `.trim` modifier behaviour\n\n if (this.trim) {\n value = value.trim();\n } // Emulate `.number` modifier behaviour\n\n\n if (this.number) {\n value = toFloat(value, value);\n }\n\n return value;\n },\n updateValue: function updateValue(value) {\n var _this = this;\n\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var lazy = this.lazy;\n\n if (lazy && !force) {\n return;\n } // Make sure to always clear the debounce when `updateValue()`\n // is called, even when the v-model hasn't changed\n\n\n this.clearDebounce(); // Define the shared update logic in a method to be able to use\n // it for immediate and debounced value changes\n\n var doUpdate = function doUpdate() {\n value = _this.modifyValue(value);\n\n if (value !== _this.vModelValue) {\n _this.vModelValue = value;\n\n _this.$emit(MODEL_EVENT_NAME, value);\n } else if (_this.hasFormatter) {\n // When the `vModelValue` hasn't changed but the actual input value\n // is out of sync, make sure to change it to the given one\n // Usually caused by browser autocomplete and how it triggers the\n // change or input event, or depending on the formatter function\n // https://github.com/bootstrap-vue/bootstrap-vue/issues/2657\n // https://github.com/bootstrap-vue/bootstrap-vue/issues/3498\n\n /* istanbul ignore next: hard to test */\n var $input = _this.$refs.input;\n /* istanbul ignore if: hard to test out of sync value */\n\n if ($input && value !== $input.value) {\n $input.value = value;\n }\n }\n }; // Only debounce the value update when a value greater than `0`\n // is set and we are not in lazy mode or this is a forced update\n\n\n var debounce = this.computedDebounce;\n\n if (debounce > 0 && !lazy && !force) {\n this.$_inputDebounceTimer = setTimeout(doUpdate, debounce);\n } else {\n // Immediately update the v-model\n doUpdate();\n }\n },\n onInput: function onInput(event) {\n // `event.target.composing` is set by Vue\n // https://github.com/vuejs/vue/blob/dev/src/platforms/web/runtime/directives/model.js\n // TODO: Is this needed now with the latest Vue?\n\n /* istanbul ignore if: hard to test composition events */\n if (event.target.composing) {\n return;\n }\n\n var value = event.target.value;\n var formattedValue = this.formatValue(value, event); // Exit when the `formatter` function strictly returned `false`\n // or prevented the input event\n\n /* istanbul ignore next */\n\n if (formattedValue === false || event.defaultPrevented) {\n stopEvent(event, {\n propagation: false\n });\n return;\n }\n\n this.localValue = formattedValue;\n this.updateValue(formattedValue);\n this.$emit(EVENT_NAME_INPUT, formattedValue);\n },\n onChange: function onChange(event) {\n var value = event.target.value;\n var formattedValue = this.formatValue(value, event); // Exit when the `formatter` function strictly returned `false`\n // or prevented the input event\n\n /* istanbul ignore next */\n\n if (formattedValue === false || event.defaultPrevented) {\n stopEvent(event, {\n propagation: false\n });\n return;\n }\n\n this.localValue = formattedValue;\n this.updateValue(formattedValue, true);\n this.$emit(EVENT_NAME_CHANGE, formattedValue);\n },\n onBlur: function onBlur(event) {\n // Apply the `localValue` on blur to prevent cursor jumps\n // on mobile browsers (e.g. caused by autocomplete)\n var value = event.target.value;\n var formattedValue = this.formatValue(value, event, true);\n\n if (formattedValue !== false) {\n // We need to use the modified value here to apply the\n // `.trim` and `.number` modifiers properly\n this.localValue = toString(this.modifyValue(formattedValue)); // We pass the formatted value here since the `updateValue` method\n // handles the modifiers itself\n\n this.updateValue(formattedValue, true);\n } // Emit native blur event\n\n\n this.$emit(EVENT_NAME_BLUR, event);\n },\n focus: function focus() {\n // For external handler that may want a focus method\n if (!this.disabled) {\n attemptFocus(this.$el);\n }\n },\n blur: function blur() {\n // For external handler that may want a blur method\n if (!this.disabled) {\n attemptBlur(this.$el);\n }\n }\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_FORM_INPUT } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { arrayIncludes } from '../../utils/array';\nimport { attemptBlur } from '../../utils/dom';\nimport { eventOn, eventOff, eventOnOff, stopEvent } from '../../utils/events';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { formControlMixin, props as formControlProps } from '../../mixins/form-control';\nimport { formSelectionMixin } from '../../mixins/form-selection';\nimport { formSizeMixin, props as formSizeProps } from '../../mixins/form-size';\nimport { formStateMixin, props as formStateProps } from '../../mixins/form-state';\nimport { formTextMixin, props as formTextProps } from '../../mixins/form-text';\nimport { formValidityMixin } from '../../mixins/form-validity';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { listenersMixin } from '../../mixins/listeners'; // --- Constants ---\n// Valid supported input types\n\nvar TYPES = ['text', 'password', 'email', 'number', 'url', 'tel', 'search', 'range', 'color', 'date', 'time', 'datetime', 'datetime-local', 'month', 'week']; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), formControlProps), formSizeProps), formStateProps), formTextProps), {}, {\n list: makeProp(PROP_TYPE_STRING),\n max: makeProp(PROP_TYPE_NUMBER_STRING),\n min: makeProp(PROP_TYPE_NUMBER_STRING),\n // Disable mousewheel to prevent wheel from changing values (i.e. number/date)\n noWheel: makeProp(PROP_TYPE_BOOLEAN, false),\n step: makeProp(PROP_TYPE_NUMBER_STRING),\n type: makeProp(PROP_TYPE_STRING, 'text', function (type) {\n return arrayIncludes(TYPES, type);\n })\n})), NAME_FORM_INPUT); // --- Main component ---\n// @vue/component\n\nexport var BFormInput = /*#__PURE__*/Vue.extend({\n name: NAME_FORM_INPUT,\n // Mixin order is important!\n mixins: [listenersMixin, idMixin, formControlMixin, formSizeMixin, formStateMixin, formTextMixin, formSelectionMixin, formValidityMixin],\n props: props,\n computed: {\n localType: function localType() {\n // We only allow certain types\n var type = this.type;\n return arrayIncludes(TYPES, type) ? type : 'text';\n },\n computedAttrs: function computedAttrs() {\n var type = this.localType,\n name = this.name,\n form = this.form,\n disabled = this.disabled,\n placeholder = this.placeholder,\n required = this.required,\n min = this.min,\n max = this.max,\n step = this.step;\n return {\n id: this.safeId(),\n name: name,\n form: form,\n type: type,\n disabled: disabled,\n placeholder: placeholder,\n required: required,\n autocomplete: this.autocomplete || null,\n readonly: this.readonly || this.plaintext,\n min: min,\n max: max,\n step: step,\n list: type !== 'password' ? this.list : null,\n 'aria-required': required ? 'true' : null,\n 'aria-invalid': this.computedAriaInvalid\n };\n },\n computedListeners: function computedListeners() {\n return _objectSpread(_objectSpread({}, this.bvListeners), {}, {\n input: this.onInput,\n change: this.onChange,\n blur: this.onBlur\n });\n }\n },\n watch: {\n noWheel: function noWheel(newValue) {\n this.setWheelStopper(newValue);\n }\n },\n mounted: function mounted() {\n this.setWheelStopper(this.noWheel);\n },\n\n /* istanbul ignore next */\n deactivated: function deactivated() {\n // Turn off listeners when keep-alive component deactivated\n\n /* istanbul ignore next */\n this.setWheelStopper(false);\n },\n\n /* istanbul ignore next */\n activated: function activated() {\n // Turn on listeners (if no-wheel) when keep-alive component activated\n\n /* istanbul ignore next */\n this.setWheelStopper(this.noWheel);\n },\n beforeDestroy: function beforeDestroy() {\n /* istanbul ignore next */\n this.setWheelStopper(false);\n },\n methods: {\n setWheelStopper: function setWheelStopper(on) {\n var input = this.$el; // We use native events, so that we don't interfere with propagation\n\n eventOnOff(on, input, 'focus', this.onWheelFocus);\n eventOnOff(on, input, 'blur', this.onWheelBlur);\n\n if (!on) {\n eventOff(document, 'wheel', this.stopWheel);\n }\n },\n onWheelFocus: function onWheelFocus() {\n eventOn(document, 'wheel', this.stopWheel);\n },\n onWheelBlur: function onWheelBlur() {\n eventOff(document, 'wheel', this.stopWheel);\n },\n stopWheel: function stopWheel(event) {\n stopEvent(event, {\n propagation: false\n });\n attemptBlur(this.$el);\n }\n },\n render: function render(h) {\n return h('input', {\n class: this.computedClass,\n attrs: this.computedAttrs,\n domProps: {\n value: this.localValue\n },\n on: this.computedListeners,\n ref: 'input'\n });\n }\n});","// Localization utilities\nimport { RX_STRIP_LOCALE_MODS } from '../constants/regex';\nimport { arrayIncludes } from './array';\nimport { toString } from './string'; // Languages that are RTL\n\nvar RTL_LANGS = ['ar', 'az', 'ckb', 'fa', 'he', 'ks', 'lrc', 'mzn', 'ps', 'sd', 'te', 'ug', 'ur', 'yi'].map(function (locale) {\n return locale.toLowerCase();\n}); // Returns true if the locale is RTL\n\nexport var isLocaleRTL = function isLocaleRTL(locale) {\n // Determines if the locale is RTL (only single locale supported)\n var parts = toString(locale).toLowerCase().replace(RX_STRIP_LOCALE_MODS, '').split('-');\n var locale1 = parts.slice(0, 2).join('-');\n var locale2 = parts[0];\n return arrayIncludes(RTL_LANGS, locale1) || arrayIncludes(RTL_LANGS, locale2);\n};","export var CALENDAR_GREGORY = 'gregory';\nexport var CALENDAR_LONG = 'long';\nexport var CALENDAR_NARROW = 'narrow';\nexport var CALENDAR_SHORT = 'short';\nexport var DATE_FORMAT_2_DIGIT = '2-digit';\nexport var DATE_FORMAT_NUMERIC = 'numeric';","var _watch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_CALENDAR } from '../../constants/components';\nimport { CALENDAR_GREGORY, CALENDAR_LONG, CALENDAR_NARROW, CALENDAR_SHORT, DATE_FORMAT_2_DIGIT, DATE_FORMAT_NUMERIC } from '../../constants/date';\nimport { EVENT_NAME_CONTEXT, EVENT_NAME_SELECTED } from '../../constants/events';\nimport { CODE_DOWN, CODE_END, CODE_ENTER, CODE_HOME, CODE_LEFT, CODE_PAGEDOWN, CODE_PAGEUP, CODE_RIGHT, CODE_SPACE, CODE_UP } from '../../constants/key-codes';\nimport { PROP_TYPE_ARRAY_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_DATE_STRING, PROP_TYPE_FUNCTION, PROP_TYPE_NUMBER_STRING, PROP_TYPE_OBJECT, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_NAV_NEXT_DECADE, SLOT_NAME_NAV_NEXT_MONTH, SLOT_NAME_NAV_NEXT_YEAR, SLOT_NAME_NAV_PEV_DECADE, SLOT_NAME_NAV_PEV_MONTH, SLOT_NAME_NAV_PEV_YEAR, SLOT_NAME_NAV_THIS_MONTH } from '../../constants/slots';\nimport { arrayIncludes, concat } from '../../utils/array';\nimport { createDate, createDateFormatter, constrainDate as _constrainDate, datesEqual, firstDateOfMonth, formatYMD, lastDateOfMonth, oneMonthAgo, oneMonthAhead, oneYearAgo, oneYearAhead, oneDecadeAgo, oneDecadeAhead, parseYMD, resolveLocale } from '../../utils/date';\nimport { attemptBlur, attemptFocus, requestAF } from '../../utils/dom';\nimport { stopEvent } from '../../utils/events';\nimport { identity } from '../../utils/identity';\nimport { isArray, isPlainObject, isString } from '../../utils/inspect';\nimport { isLocaleRTL } from '../../utils/locale';\nimport { looseEqual } from '../../utils/loose-equal';\nimport { mathMax } from '../../utils/math';\nimport { makeModelMixin } from '../../utils/model';\nimport { toInteger } from '../../utils/number';\nimport { sortKeys } from '../../utils/object';\nimport { hasPropFunction, makeProp, makePropsConfigurable } from '../../utils/props';\nimport { toString } from '../../utils/string';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BIconChevronLeft, BIconChevronDoubleLeft, BIconChevronBarLeft, BIconCircleFill } from '../../icons/icons'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('value', {\n type: PROP_TYPE_DATE_STRING\n}),\n modelMixin = _makeModelMixin.mixin,\n modelProps = _makeModelMixin.props,\n MODEL_PROP_NAME = _makeModelMixin.prop,\n MODEL_EVENT_NAME = _makeModelMixin.event; // --- Props ---\n\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread({}, idProps), modelProps), {}, {\n ariaControls: makeProp(PROP_TYPE_STRING),\n // Makes calendar the full width of its parent container\n block: makeProp(PROP_TYPE_BOOLEAN, false),\n dateDisabledFn: makeProp(PROP_TYPE_FUNCTION),\n // `Intl.DateTimeFormat` object\n dateFormatOptions: makeProp(PROP_TYPE_OBJECT, {\n year: DATE_FORMAT_NUMERIC,\n month: CALENDAR_LONG,\n day: DATE_FORMAT_NUMERIC,\n weekday: CALENDAR_LONG\n }),\n // Function to set a class of (classes) on the date cell\n // if passed a string or an array\n // TODO:\n // If the function returns an object, look for class prop for classes,\n // and other props for handling events/details/descriptions\n dateInfoFn: makeProp(PROP_TYPE_FUNCTION),\n // 'ltr', 'rtl', or `null` (for auto detect)\n direction: makeProp(PROP_TYPE_STRING),\n disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n // When `true`, renders a comment node, but keeps the component instance active\n // Mainly for , so that we can get the component's value and locale\n // But we might just use separate date formatters, using the resolved locale\n // (adjusted for the gregorian calendar)\n hidden: makeProp(PROP_TYPE_BOOLEAN, false),\n // When `true` makes the selected date header `sr-only`\n hideHeader: makeProp(PROP_TYPE_BOOLEAN, false),\n // This specifies the calendar year/month/day that will be shown when\n // first opening the datepicker if no v-model value is provided\n // Default is the current date (or `min`/`max`)\n initialDate: makeProp(PROP_TYPE_DATE_STRING),\n // Labels for buttons and keyboard shortcuts\n labelCalendar: makeProp(PROP_TYPE_STRING, 'Calendar'),\n labelCurrentMonth: makeProp(PROP_TYPE_STRING, 'Current month'),\n labelHelp: makeProp(PROP_TYPE_STRING, 'Use cursor keys to navigate calendar dates'),\n labelNav: makeProp(PROP_TYPE_STRING, 'Calendar navigation'),\n labelNextDecade: makeProp(PROP_TYPE_STRING, 'Next decade'),\n labelNextMonth: makeProp(PROP_TYPE_STRING, 'Next month'),\n labelNextYear: makeProp(PROP_TYPE_STRING, 'Next year'),\n labelNoDateSelected: makeProp(PROP_TYPE_STRING, 'No date selected'),\n labelPrevDecade: makeProp(PROP_TYPE_STRING, 'Previous decade'),\n labelPrevMonth: makeProp(PROP_TYPE_STRING, 'Previous month'),\n labelPrevYear: makeProp(PROP_TYPE_STRING, 'Previous year'),\n labelSelected: makeProp(PROP_TYPE_STRING, 'Selected date'),\n labelToday: makeProp(PROP_TYPE_STRING, 'Today'),\n // Locale(s) to use\n // Default is to use page/browser default setting\n locale: makeProp(PROP_TYPE_ARRAY_STRING),\n max: makeProp(PROP_TYPE_DATE_STRING),\n min: makeProp(PROP_TYPE_DATE_STRING),\n // Variant color to use for the navigation buttons\n navButtonVariant: makeProp(PROP_TYPE_STRING, 'secondary'),\n // Disable highlighting today's date\n noHighlightToday: makeProp(PROP_TYPE_BOOLEAN, false),\n noKeyNav: makeProp(PROP_TYPE_BOOLEAN, false),\n readonly: makeProp(PROP_TYPE_BOOLEAN, false),\n roleDescription: makeProp(PROP_TYPE_STRING),\n // Variant color to use for the selected date\n selectedVariant: makeProp(PROP_TYPE_STRING, 'primary'),\n // When `true` enables the decade navigation buttons\n showDecadeNav: makeProp(PROP_TYPE_BOOLEAN, false),\n // Day of week to start calendar on\n // `0` (Sunday), `1` (Monday), ... `6` (Saturday)\n startWeekday: makeProp(PROP_TYPE_NUMBER_STRING, 0),\n // Variant color to use for today's date (defaults to `selectedVariant`)\n todayVariant: makeProp(PROP_TYPE_STRING),\n // Always return the `v-model` value as a date object\n valueAsDate: makeProp(PROP_TYPE_BOOLEAN, false),\n // Format of the weekday names at the top of the calendar\n // `short` is typically a 3 letter abbreviation,\n // `narrow` is typically a single letter\n // `long` is the full week day name\n // Although some locales may override this (i.e `ar`, etc.)\n weekdayHeaderFormat: makeProp(PROP_TYPE_STRING, CALENDAR_SHORT, function (value) {\n return arrayIncludes([CALENDAR_LONG, CALENDAR_SHORT, CALENDAR_NARROW], value);\n }),\n // Has no effect if prop `block` is set\n width: makeProp(PROP_TYPE_STRING, '270px')\n})), NAME_CALENDAR); // --- Main component ---\n// @vue/component\n\nexport var BCalendar = Vue.extend({\n name: NAME_CALENDAR,\n // Mixin order is important!\n mixins: [attrsMixin, idMixin, modelMixin, normalizeSlotMixin],\n props: props,\n data: function data() {\n var selected = formatYMD(this[MODEL_PROP_NAME]) || '';\n return {\n // Selected date\n selectedYMD: selected,\n // Date in calendar grid that has `tabindex` of `0`\n activeYMD: selected || formatYMD(_constrainDate(this.initialDate || this.getToday()), this.min, this.max),\n // Will be true if the calendar grid has/contains focus\n gridHasFocus: false,\n // Flag to enable the `aria-live` region(s) after mount\n // to prevent screen reader \"outbursts\" when mounting\n isLive: false\n };\n },\n computed: {\n valueId: function valueId() {\n return this.safeId();\n },\n widgetId: function widgetId() {\n return this.safeId('_calendar-wrapper_');\n },\n navId: function navId() {\n return this.safeId('_calendar-nav_');\n },\n gridId: function gridId() {\n return this.safeId('_calendar-grid_');\n },\n gridCaptionId: function gridCaptionId() {\n return this.safeId('_calendar-grid-caption_');\n },\n gridHelpId: function gridHelpId() {\n return this.safeId('_calendar-grid-help_');\n },\n activeId: function activeId() {\n return this.activeYMD ? this.safeId(\"_cell-\".concat(this.activeYMD, \"_\")) : null;\n },\n // TODO: Use computed props to convert `YYYY-MM-DD` to `Date` object\n selectedDate: function selectedDate() {\n // Selected as a `Date` object\n return parseYMD(this.selectedYMD);\n },\n activeDate: function activeDate() {\n // Active as a `Date` object\n return parseYMD(this.activeYMD);\n },\n computedMin: function computedMin() {\n return parseYMD(this.min);\n },\n computedMax: function computedMax() {\n return parseYMD(this.max);\n },\n computedWeekStarts: function computedWeekStarts() {\n // `startWeekday` is a prop (constrained to `0` through `6`)\n return mathMax(toInteger(this.startWeekday, 0), 0) % 7;\n },\n computedLocale: function computedLocale() {\n // Returns the resolved locale used by the calendar\n return resolveLocale(concat(this.locale).filter(identity), CALENDAR_GREGORY);\n },\n computedDateDisabledFn: function computedDateDisabledFn() {\n var dateDisabledFn = this.dateDisabledFn;\n return hasPropFunction(dateDisabledFn) ? dateDisabledFn : function () {\n return false;\n };\n },\n // TODO: Change `dateInfoFn` to handle events and notes as well as classes\n computedDateInfoFn: function computedDateInfoFn() {\n var dateInfoFn = this.dateInfoFn;\n return hasPropFunction(dateInfoFn) ? dateInfoFn : function () {\n return {};\n };\n },\n calendarLocale: function calendarLocale() {\n // This locale enforces the gregorian calendar (for use in formatter functions)\n // Needed because IE 11 resolves `ar-IR` as islamic-civil calendar\n // and IE 11 (and some other browsers) do not support the `calendar` option\n // And we currently only support the gregorian calendar\n var fmt = new Intl.DateTimeFormat(this.computedLocale, {\n calendar: CALENDAR_GREGORY\n });\n var calendar = fmt.resolvedOptions().calendar;\n var locale = fmt.resolvedOptions().locale;\n /* istanbul ignore if: mainly for IE 11 and a few other browsers, hard to test in JSDOM */\n\n if (calendar !== CALENDAR_GREGORY) {\n // Ensure the locale requests the gregorian calendar\n // Mainly for IE 11, and currently we can't handle non-gregorian calendars\n // TODO: Should we always return this value?\n locale = locale.replace(/-u-.+$/i, '').concat('-u-ca-gregory');\n }\n\n return locale;\n },\n calendarYear: function calendarYear() {\n return this.activeDate.getFullYear();\n },\n calendarMonth: function calendarMonth() {\n return this.activeDate.getMonth();\n },\n calendarFirstDay: function calendarFirstDay() {\n // We set the time for this date to 12pm to work around\n // date formatting issues in Firefox and Safari\n // See: https://github.com/bootstrap-vue/bootstrap-vue/issues/5818\n return createDate(this.calendarYear, this.calendarMonth, 1, 12);\n },\n calendarDaysInMonth: function calendarDaysInMonth() {\n // We create a new date as to not mutate the original\n var date = createDate(this.calendarFirstDay);\n date.setMonth(date.getMonth() + 1, 0);\n return date.getDate();\n },\n computedVariant: function computedVariant() {\n return \"btn-\".concat(this.selectedVariant || 'primary');\n },\n computedTodayVariant: function computedTodayVariant() {\n return \"btn-outline-\".concat(this.todayVariant || this.selectedVariant || 'primary');\n },\n computedNavButtonVariant: function computedNavButtonVariant() {\n return \"btn-outline-\".concat(this.navButtonVariant || 'primary');\n },\n isRTL: function isRTL() {\n // `true` if the language requested is RTL\n var dir = toString(this.direction).toLowerCase();\n\n if (dir === 'rtl') {\n /* istanbul ignore next */\n return true;\n } else if (dir === 'ltr') {\n /* istanbul ignore next */\n return false;\n }\n\n return isLocaleRTL(this.computedLocale);\n },\n context: function context() {\n var selectedYMD = this.selectedYMD,\n activeYMD = this.activeYMD;\n var selectedDate = parseYMD(selectedYMD);\n var activeDate = parseYMD(activeYMD);\n return {\n // The current value of the `v-model`\n selectedYMD: selectedYMD,\n selectedDate: selectedDate,\n selectedFormatted: selectedDate ? this.formatDateString(selectedDate) : this.labelNoDateSelected,\n // Which date cell is considered active due to navigation\n activeYMD: activeYMD,\n activeDate: activeDate,\n activeFormatted: activeDate ? this.formatDateString(activeDate) : '',\n // `true` if the date is disabled (when using keyboard navigation)\n disabled: this.dateDisabled(activeDate),\n // Locales used in formatting dates\n locale: this.computedLocale,\n calendarLocale: this.calendarLocale,\n rtl: this.isRTL\n };\n },\n // Computed props that return a function reference\n dateOutOfRange: function dateOutOfRange() {\n // Check whether a date is within the min/max range\n // Returns a new function ref if the pops change\n // We do this as we need to trigger the calendar computed prop\n // to update when these props update\n var min = this.computedMin,\n max = this.computedMax;\n return function (date) {\n // Handle both `YYYY-MM-DD` and `Date` objects\n date = parseYMD(date);\n return min && date < min || max && date > max;\n };\n },\n dateDisabled: function dateDisabled() {\n var _this = this;\n\n // Returns a function for validating if a date is within range\n // We grab this variables first to ensure a new function ref\n // is generated when the props value changes\n // We do this as we need to trigger the calendar computed prop\n // to update when these props update\n var rangeFn = this.dateOutOfRange; // Return the function ref\n\n return function (date) {\n // Handle both `YYYY-MM-DD` and `Date` objects\n date = parseYMD(date);\n var ymd = formatYMD(date);\n return !!(rangeFn(date) || _this.computedDateDisabledFn(ymd, date));\n };\n },\n // Computed props that return date formatter functions\n formatDateString: function formatDateString() {\n // Returns a date formatter function\n return createDateFormatter(this.calendarLocale, _objectSpread(_objectSpread({\n // Ensure we have year, month, day shown for screen readers/ARIA\n // If users really want to leave one of these out, they can\n // pass `undefined` for the property value\n year: DATE_FORMAT_NUMERIC,\n month: DATE_FORMAT_2_DIGIT,\n day: DATE_FORMAT_2_DIGIT\n }, this.dateFormatOptions), {}, {\n // Ensure hours/minutes/seconds are not shown\n // As we do not support the time portion (yet)\n hour: undefined,\n minute: undefined,\n second: undefined,\n // Ensure calendar is gregorian\n calendar: CALENDAR_GREGORY\n }));\n },\n formatYearMonth: function formatYearMonth() {\n // Returns a date formatter function\n return createDateFormatter(this.calendarLocale, {\n year: DATE_FORMAT_NUMERIC,\n month: CALENDAR_LONG,\n calendar: CALENDAR_GREGORY\n });\n },\n formatWeekdayName: function formatWeekdayName() {\n // Long weekday name for weekday header aria-label\n return createDateFormatter(this.calendarLocale, {\n weekday: CALENDAR_LONG,\n calendar: CALENDAR_GREGORY\n });\n },\n formatWeekdayNameShort: function formatWeekdayNameShort() {\n // Weekday header cell format\n // defaults to 'short' 3 letter days, where possible\n return createDateFormatter(this.calendarLocale, {\n weekday: this.weekdayHeaderFormat || CALENDAR_SHORT,\n calendar: CALENDAR_GREGORY\n });\n },\n formatDay: function formatDay() {\n // Calendar grid day number formatter\n // We don't use DateTimeFormatter here as it can place extra\n // character(s) after the number (i.e the `zh` locale)\n var nf = new Intl.NumberFormat([this.computedLocale], {\n style: 'decimal',\n minimumIntegerDigits: 1,\n minimumFractionDigits: 0,\n maximumFractionDigits: 0,\n notation: 'standard'\n }); // Return a formatter function instance\n\n return function (date) {\n return nf.format(date.getDate());\n };\n },\n // Disabled states for the nav buttons\n prevDecadeDisabled: function prevDecadeDisabled() {\n var min = this.computedMin;\n return this.disabled || min && lastDateOfMonth(oneDecadeAgo(this.activeDate)) < min;\n },\n prevYearDisabled: function prevYearDisabled() {\n var min = this.computedMin;\n return this.disabled || min && lastDateOfMonth(oneYearAgo(this.activeDate)) < min;\n },\n prevMonthDisabled: function prevMonthDisabled() {\n var min = this.computedMin;\n return this.disabled || min && lastDateOfMonth(oneMonthAgo(this.activeDate)) < min;\n },\n thisMonthDisabled: function thisMonthDisabled() {\n // TODO: We could/should check if today is out of range\n return this.disabled;\n },\n nextMonthDisabled: function nextMonthDisabled() {\n var max = this.computedMax;\n return this.disabled || max && firstDateOfMonth(oneMonthAhead(this.activeDate)) > max;\n },\n nextYearDisabled: function nextYearDisabled() {\n var max = this.computedMax;\n return this.disabled || max && firstDateOfMonth(oneYearAhead(this.activeDate)) > max;\n },\n nextDecadeDisabled: function nextDecadeDisabled() {\n var max = this.computedMax;\n return this.disabled || max && firstDateOfMonth(oneDecadeAhead(this.activeDate)) > max;\n },\n // Calendar dates generation\n calendar: function calendar() {\n var matrix = [];\n var firstDay = this.calendarFirstDay;\n var calendarYear = firstDay.getFullYear();\n var calendarMonth = firstDay.getMonth();\n var daysInMonth = this.calendarDaysInMonth;\n var startIndex = firstDay.getDay(); // `0`..`6`\n\n var weekOffset = (this.computedWeekStarts > startIndex ? 7 : 0) - this.computedWeekStarts; // Build the calendar matrix\n\n var currentDay = 0 - weekOffset - startIndex;\n\n for (var week = 0; week < 6 && currentDay < daysInMonth; week++) {\n // For each week\n matrix[week] = []; // The following could be a map function\n\n for (var j = 0; j < 7; j++) {\n // For each day in week\n currentDay++;\n var date = createDate(calendarYear, calendarMonth, currentDay);\n var month = date.getMonth();\n var dayYMD = formatYMD(date);\n var dayDisabled = this.dateDisabled(date); // TODO: This could be a normalizer method\n\n var dateInfo = this.computedDateInfoFn(dayYMD, parseYMD(dayYMD));\n dateInfo = isString(dateInfo) || isArray(dateInfo) ?\n /* istanbul ignore next */\n {\n class: dateInfo\n } : isPlainObject(dateInfo) ? _objectSpread({\n class: ''\n }, dateInfo) :\n /* istanbul ignore next */\n {\n class: ''\n };\n matrix[week].push({\n ymd: dayYMD,\n // Cell content\n day: this.formatDay(date),\n label: this.formatDateString(date),\n // Flags for styling\n isThisMonth: month === calendarMonth,\n isDisabled: dayDisabled,\n // TODO: Handle other dateInfo properties such as notes/events\n info: dateInfo\n });\n }\n }\n\n return matrix;\n },\n calendarHeadings: function calendarHeadings() {\n var _this2 = this;\n\n return this.calendar[0].map(function (d) {\n return {\n text: _this2.formatWeekdayNameShort(parseYMD(d.ymd)),\n label: _this2.formatWeekdayName(parseYMD(d.ymd))\n };\n });\n }\n },\n watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function (newValue, oldValue) {\n var selected = formatYMD(newValue) || '';\n var old = formatYMD(oldValue) || '';\n\n if (!datesEqual(selected, old)) {\n this.activeYMD = selected || this.activeYMD;\n this.selectedYMD = selected;\n }\n }), _defineProperty(_watch, \"selectedYMD\", function selectedYMD(newYMD, oldYMD) {\n // TODO:\n // Should we compare to `formatYMD(this.value)` and emit\n // only if they are different?\n if (newYMD !== oldYMD) {\n this.$emit(MODEL_EVENT_NAME, this.valueAsDate ? parseYMD(newYMD) || null : newYMD || '');\n }\n }), _defineProperty(_watch, \"context\", function context(newValue, oldValue) {\n if (!looseEqual(newValue, oldValue)) {\n this.$emit(EVENT_NAME_CONTEXT, newValue);\n }\n }), _defineProperty(_watch, \"hidden\", function hidden(newValue) {\n // Reset the active focused day when hidden\n this.activeYMD = this.selectedYMD || formatYMD(this[MODEL_PROP_NAME] || this.constrainDate(this.initialDate || this.getToday())); // Enable/disable the live regions\n\n this.setLive(!newValue);\n }), _watch),\n created: function created() {\n var _this3 = this;\n\n this.$nextTick(function () {\n _this3.$emit(EVENT_NAME_CONTEXT, _this3.context);\n });\n },\n mounted: function mounted() {\n this.setLive(true);\n },\n\n /* istanbul ignore next */\n activated: function activated() {\n this.setLive(true);\n },\n\n /* istanbul ignore next */\n deactivated: function deactivated() {\n this.setLive(false);\n },\n beforeDestroy: function beforeDestroy() {\n this.setLive(false);\n },\n methods: {\n // Public method(s)\n focus: function focus() {\n if (!this.disabled) {\n attemptFocus(this.$refs.grid);\n }\n },\n blur: function blur() {\n if (!this.disabled) {\n attemptBlur(this.$refs.grid);\n }\n },\n // Private methods\n setLive: function setLive(on) {\n var _this4 = this;\n\n if (on) {\n this.$nextTick(function () {\n requestAF(function () {\n _this4.isLive = true;\n });\n });\n } else {\n this.isLive = false;\n }\n },\n getToday: function getToday() {\n return parseYMD(createDate());\n },\n constrainDate: function constrainDate(date) {\n // Constrains a date between min and max\n // returns a new `Date` object instance\n return _constrainDate(date, this.computedMin, this.computedMax);\n },\n emitSelected: function emitSelected(date) {\n var _this5 = this;\n\n // Performed in a `$nextTick()` to (probably) ensure\n // the input event has emitted first\n this.$nextTick(function () {\n _this5.$emit(EVENT_NAME_SELECTED, formatYMD(date) || '', parseYMD(date) || null);\n });\n },\n // Event handlers\n setGridFocusFlag: function setGridFocusFlag(event) {\n // Sets the gridHasFocus flag to make date \"button\" look focused\n this.gridHasFocus = !this.disabled && event.type === 'focus';\n },\n onKeydownWrapper: function onKeydownWrapper(event) {\n // Calendar keyboard navigation\n // Handles PAGEUP/PAGEDOWN/END/HOME/LEFT/UP/RIGHT/DOWN\n // Focuses grid after updating\n if (this.noKeyNav) {\n /* istanbul ignore next */\n return;\n }\n\n var altKey = event.altKey,\n ctrlKey = event.ctrlKey,\n keyCode = event.keyCode;\n\n if (!arrayIncludes([CODE_PAGEUP, CODE_PAGEDOWN, CODE_END, CODE_HOME, CODE_LEFT, CODE_UP, CODE_RIGHT, CODE_DOWN], keyCode)) {\n /* istanbul ignore next */\n return;\n }\n\n stopEvent(event);\n var activeDate = createDate(this.activeDate);\n var checkDate = createDate(this.activeDate);\n var day = activeDate.getDate();\n var constrainedToday = this.constrainDate(this.getToday());\n var isRTL = this.isRTL;\n\n if (keyCode === CODE_PAGEUP) {\n // PAGEUP - Previous month/year\n activeDate = (altKey ? ctrlKey ? oneDecadeAgo : oneYearAgo : oneMonthAgo)(activeDate); // We check the first day of month to be in rage\n\n checkDate = createDate(activeDate);\n checkDate.setDate(1);\n } else if (keyCode === CODE_PAGEDOWN) {\n // PAGEDOWN - Next month/year\n activeDate = (altKey ? ctrlKey ? oneDecadeAhead : oneYearAhead : oneMonthAhead)(activeDate); // We check the last day of month to be in rage\n\n checkDate = createDate(activeDate);\n checkDate.setMonth(checkDate.getMonth() + 1);\n checkDate.setDate(0);\n } else if (keyCode === CODE_LEFT) {\n // LEFT - Previous day (or next day for RTL)\n activeDate.setDate(day + (isRTL ? 1 : -1));\n activeDate = this.constrainDate(activeDate);\n checkDate = activeDate;\n } else if (keyCode === CODE_RIGHT) {\n // RIGHT - Next day (or previous day for RTL)\n activeDate.setDate(day + (isRTL ? -1 : 1));\n activeDate = this.constrainDate(activeDate);\n checkDate = activeDate;\n } else if (keyCode === CODE_UP) {\n // UP - Previous week\n activeDate.setDate(day - 7);\n activeDate = this.constrainDate(activeDate);\n checkDate = activeDate;\n } else if (keyCode === CODE_DOWN) {\n // DOWN - Next week\n activeDate.setDate(day + 7);\n activeDate = this.constrainDate(activeDate);\n checkDate = activeDate;\n } else if (keyCode === CODE_HOME) {\n // HOME - Today\n activeDate = constrainedToday;\n checkDate = activeDate;\n } else if (keyCode === CODE_END) {\n // END - Selected date, or today if no selected date\n activeDate = parseYMD(this.selectedDate) || constrainedToday;\n checkDate = activeDate;\n }\n\n if (!this.dateOutOfRange(checkDate) && !datesEqual(activeDate, this.activeDate)) {\n // We only jump to date if within min/max\n // We don't check for individual disabled dates though (via user function)\n this.activeYMD = formatYMD(activeDate);\n } // Ensure grid is focused\n\n\n this.focus();\n },\n onKeydownGrid: function onKeydownGrid(event) {\n // Pressing enter/space on grid to select active date\n var keyCode = event.keyCode;\n var activeDate = this.activeDate;\n\n if (keyCode === CODE_ENTER || keyCode === CODE_SPACE) {\n stopEvent(event);\n\n if (!this.disabled && !this.readonly && !this.dateDisabled(activeDate)) {\n this.selectedYMD = formatYMD(activeDate);\n this.emitSelected(activeDate);\n } // Ensure grid is focused\n\n\n this.focus();\n }\n },\n onClickDay: function onClickDay(day) {\n // Clicking on a date \"button\" to select it\n var selectedDate = this.selectedDate,\n activeDate = this.activeDate;\n var clickedDate = parseYMD(day.ymd);\n\n if (!this.disabled && !day.isDisabled && !this.dateDisabled(clickedDate)) {\n if (!this.readonly) {\n // If readonly mode, we don't set the selected date, just the active date\n // If the clicked date is equal to the already selected date, we don't update the model\n this.selectedYMD = formatYMD(datesEqual(clickedDate, selectedDate) ? selectedDate : clickedDate);\n this.emitSelected(clickedDate);\n }\n\n this.activeYMD = formatYMD(datesEqual(clickedDate, activeDate) ? activeDate : createDate(clickedDate)); // Ensure grid is focused\n\n this.focus();\n }\n },\n gotoPrevDecade: function gotoPrevDecade() {\n this.activeYMD = formatYMD(this.constrainDate(oneDecadeAgo(this.activeDate)));\n },\n gotoPrevYear: function gotoPrevYear() {\n this.activeYMD = formatYMD(this.constrainDate(oneYearAgo(this.activeDate)));\n },\n gotoPrevMonth: function gotoPrevMonth() {\n this.activeYMD = formatYMD(this.constrainDate(oneMonthAgo(this.activeDate)));\n },\n gotoCurrentMonth: function gotoCurrentMonth() {\n // TODO: Maybe this goto date should be configurable?\n this.activeYMD = formatYMD(this.constrainDate(this.getToday()));\n },\n gotoNextMonth: function gotoNextMonth() {\n this.activeYMD = formatYMD(this.constrainDate(oneMonthAhead(this.activeDate)));\n },\n gotoNextYear: function gotoNextYear() {\n this.activeYMD = formatYMD(this.constrainDate(oneYearAhead(this.activeDate)));\n },\n gotoNextDecade: function gotoNextDecade() {\n this.activeYMD = formatYMD(this.constrainDate(oneDecadeAhead(this.activeDate)));\n },\n onHeaderClick: function onHeaderClick() {\n if (!this.disabled) {\n this.activeYMD = this.selectedYMD || formatYMD(this.getToday());\n this.focus();\n }\n }\n },\n render: function render(h) {\n var _this6 = this;\n\n // If `hidden` prop is set, render just a placeholder node\n if (this.hidden) {\n return h();\n }\n\n var valueId = this.valueId,\n widgetId = this.widgetId,\n navId = this.navId,\n gridId = this.gridId,\n gridCaptionId = this.gridCaptionId,\n gridHelpId = this.gridHelpId,\n activeId = this.activeId,\n disabled = this.disabled,\n noKeyNav = this.noKeyNav,\n isLive = this.isLive,\n isRTL = this.isRTL,\n activeYMD = this.activeYMD,\n selectedYMD = this.selectedYMD,\n safeId = this.safeId;\n var hideDecadeNav = !this.showDecadeNav;\n var todayYMD = formatYMD(this.getToday());\n var highlightToday = !this.noHighlightToday; // Header showing current selected date\n\n var $header = h('output', {\n staticClass: 'form-control form-control-sm text-center',\n class: {\n 'text-muted': disabled,\n readonly: this.readonly || disabled\n },\n attrs: {\n id: valueId,\n for: gridId,\n role: 'status',\n tabindex: disabled ? null : '-1',\n // Mainly for testing purposes, as we do not know\n // the exact format `Intl` will format the date string\n 'data-selected': toString(selectedYMD),\n // We wait until after mount to enable `aria-live`\n // to prevent initial announcement on page render\n 'aria-live': isLive ? 'polite' : 'off',\n 'aria-atomic': isLive ? 'true' : null\n },\n on: {\n // Transfer focus/click to focus grid\n // and focus active date (or today if no selection)\n click: this.onHeaderClick,\n focus: this.onHeaderClick\n }\n }, this.selectedDate ? [// We use `bdi` elements here in case the label doesn't match the locale\n // Although IE 11 does not deal with at all (equivalent to a span)\n h('bdi', {\n staticClass: 'sr-only'\n }, \" (\".concat(toString(this.labelSelected), \") \")), h('bdi', this.formatDateString(this.selectedDate))] : this.labelNoDateSelected || \"\\xA0\" // ' '\n );\n $header = h('header', {\n staticClass: 'b-calendar-header',\n class: {\n 'sr-only': this.hideHeader\n },\n attrs: {\n title: this.selectedDate ? this.labelSelectedDate || null : null\n }\n }, [$header]); // Content for the date navigation buttons\n\n var navScope = {\n isRTL: isRTL\n };\n var navProps = {\n shiftV: 0.5\n };\n\n var navPrevProps = _objectSpread(_objectSpread({}, navProps), {}, {\n flipH: isRTL\n });\n\n var navNextProps = _objectSpread(_objectSpread({}, navProps), {}, {\n flipH: !isRTL\n });\n\n var $prevDecadeIcon = this.normalizeSlot(SLOT_NAME_NAV_PEV_DECADE, navScope) || h(BIconChevronBarLeft, {\n props: navPrevProps\n });\n var $prevYearIcon = this.normalizeSlot(SLOT_NAME_NAV_PEV_YEAR, navScope) || h(BIconChevronDoubleLeft, {\n props: navPrevProps\n });\n var $prevMonthIcon = this.normalizeSlot(SLOT_NAME_NAV_PEV_MONTH, navScope) || h(BIconChevronLeft, {\n props: navPrevProps\n });\n var $thisMonthIcon = this.normalizeSlot(SLOT_NAME_NAV_THIS_MONTH, navScope) || h(BIconCircleFill, {\n props: navProps\n });\n var $nextMonthIcon = this.normalizeSlot(SLOT_NAME_NAV_NEXT_MONTH, navScope) || h(BIconChevronLeft, {\n props: navNextProps\n });\n var $nextYearIcon = this.normalizeSlot(SLOT_NAME_NAV_NEXT_YEAR, navScope) || h(BIconChevronDoubleLeft, {\n props: navNextProps\n });\n var $nextDecadeIcon = this.normalizeSlot(SLOT_NAME_NAV_NEXT_DECADE, navScope) || h(BIconChevronBarLeft, {\n props: navNextProps\n }); // Utility to create the date navigation buttons\n\n var makeNavBtn = function makeNavBtn(content, label, handler, btnDisabled, shortcut) {\n return h('button', {\n staticClass: 'btn btn-sm border-0 flex-fill',\n class: [_this6.computedNavButtonVariant, {\n disabled: btnDisabled\n }],\n attrs: {\n title: label || null,\n type: 'button',\n tabindex: noKeyNav ? '-1' : null,\n 'aria-label': label || null,\n 'aria-disabled': btnDisabled ? 'true' : null,\n 'aria-keyshortcuts': shortcut || null\n },\n on: btnDisabled ? {} : {\n click: handler\n }\n }, [h('div', {\n attrs: {\n 'aria-hidden': 'true'\n }\n }, [content])]);\n }; // Generate the date navigation buttons\n\n\n var $nav = h('div', {\n staticClass: 'b-calendar-nav d-flex',\n attrs: {\n id: navId,\n role: 'group',\n tabindex: noKeyNav ? '-1' : null,\n 'aria-hidden': disabled ? 'true' : null,\n 'aria-label': this.labelNav || null,\n 'aria-controls': gridId\n }\n }, [hideDecadeNav ? h() : makeNavBtn($prevDecadeIcon, this.labelPrevDecade, this.gotoPrevDecade, this.prevDecadeDisabled, 'Ctrl+Alt+PageDown'), makeNavBtn($prevYearIcon, this.labelPrevYear, this.gotoPrevYear, this.prevYearDisabled, 'Alt+PageDown'), makeNavBtn($prevMonthIcon, this.labelPrevMonth, this.gotoPrevMonth, this.prevMonthDisabled, 'PageDown'), makeNavBtn($thisMonthIcon, this.labelCurrentMonth, this.gotoCurrentMonth, this.thisMonthDisabled, 'Home'), makeNavBtn($nextMonthIcon, this.labelNextMonth, this.gotoNextMonth, this.nextMonthDisabled, 'PageUp'), makeNavBtn($nextYearIcon, this.labelNextYear, this.gotoNextYear, this.nextYearDisabled, 'Alt+PageUp'), hideDecadeNav ? h() : makeNavBtn($nextDecadeIcon, this.labelNextDecade, this.gotoNextDecade, this.nextDecadeDisabled, 'Ctrl+Alt+PageUp')]); // Caption for calendar grid\n\n var $gridCaption = h('header', {\n staticClass: 'b-calendar-grid-caption text-center font-weight-bold',\n class: {\n 'text-muted': disabled\n },\n attrs: {\n id: gridCaptionId,\n 'aria-live': isLive ? 'polite' : null,\n 'aria-atomic': isLive ? 'true' : null\n },\n key: 'grid-caption'\n }, this.formatYearMonth(this.calendarFirstDay)); // Calendar weekday headings\n\n var $gridWeekDays = h('div', {\n staticClass: 'b-calendar-grid-weekdays row no-gutters border-bottom',\n attrs: {\n 'aria-hidden': 'true'\n }\n }, this.calendarHeadings.map(function (d, idx) {\n return h('small', {\n staticClass: 'col text-truncate',\n class: {\n 'text-muted': disabled\n },\n attrs: {\n title: d.label === d.text ? null : d.label,\n 'aria-label': d.label\n },\n key: idx\n }, d.text);\n })); // Calendar day grid\n\n var $gridBody = this.calendar.map(function (week) {\n var $cells = week.map(function (day, dIndex) {\n var _class;\n\n var isSelected = day.ymd === selectedYMD;\n var isActive = day.ymd === activeYMD;\n var isToday = day.ymd === todayYMD;\n var idCell = safeId(\"_cell-\".concat(day.ymd, \"_\")); // \"fake\" button\n\n var $btn = h('span', {\n staticClass: 'btn border-0 rounded-circle text-nowrap',\n // Should we add some classes to signify if today/selected/etc?\n class: (_class = {\n // Give the fake button a focus ring\n focus: isActive && _this6.gridHasFocus,\n // Styling\n disabled: day.isDisabled || disabled,\n active: isSelected\n }, _defineProperty(_class, _this6.computedVariant, isSelected), _defineProperty(_class, _this6.computedTodayVariant, isToday && highlightToday && !isSelected && day.isThisMonth), _defineProperty(_class, 'btn-outline-light', !(isToday && highlightToday) && !isSelected && !isActive), _defineProperty(_class, 'btn-light', !(isToday && highlightToday) && !isSelected && isActive), _defineProperty(_class, 'text-muted', !day.isThisMonth && !isSelected), _defineProperty(_class, 'text-dark', !(isToday && highlightToday) && !isSelected && !isActive && day.isThisMonth), _defineProperty(_class, 'font-weight-bold', (isSelected || day.isThisMonth) && !day.isDisabled), _class),\n on: {\n click: function click() {\n return _this6.onClickDay(day);\n }\n }\n }, day.day);\n return h('div', // Cell with button\n {\n staticClass: 'col p-0',\n class: day.isDisabled ? 'bg-light' : day.info.class || '',\n attrs: {\n id: idCell,\n role: 'button',\n 'data-date': day.ymd,\n // Primarily for testing purposes\n // Only days in the month are presented as buttons to screen readers\n 'aria-hidden': day.isThisMonth ? null : 'true',\n 'aria-disabled': day.isDisabled || disabled ? 'true' : null,\n 'aria-label': [day.label, isSelected ? \"(\".concat(_this6.labelSelected, \")\") : null, isToday ? \"(\".concat(_this6.labelToday, \")\") : null].filter(identity).join(' '),\n // NVDA doesn't convey `aria-selected`, but does `aria-current`,\n // ChromeVox doesn't convey `aria-current`, but does `aria-selected`,\n // so we set both attributes for robustness\n 'aria-selected': isSelected ? 'true' : null,\n 'aria-current': isSelected ? 'date' : null\n },\n key: dIndex\n }, [$btn]);\n }); // Return the week \"row\"\n // We use the first day of the weeks YMD value as a\n // key for efficient DOM patching / element re-use\n\n return h('div', {\n staticClass: 'row no-gutters',\n key: week[0].ymd\n }, $cells);\n });\n $gridBody = h('div', {\n // A key is only required on the body if we add in transition support\n staticClass: 'b-calendar-grid-body',\n style: disabled ? {\n pointerEvents: 'none'\n } : {} // key: this.activeYMD.slice(0, -3)\n\n }, $gridBody);\n var $gridHelp = h('footer', {\n staticClass: 'b-calendar-grid-help border-top small text-muted text-center bg-light',\n attrs: {\n id: gridHelpId\n }\n }, [h('div', {\n staticClass: 'small'\n }, this.labelHelp)]);\n var $grid = h('div', {\n staticClass: 'b-calendar-grid form-control h-auto text-center',\n attrs: {\n id: gridId,\n role: 'application',\n tabindex: noKeyNav ? '-1' : disabled ? null : '0',\n 'data-month': activeYMD.slice(0, -3),\n // `YYYY-MM`, mainly for testing\n 'aria-roledescription': this.labelCalendar || null,\n 'aria-labelledby': gridCaptionId,\n 'aria-describedby': gridHelpId,\n // `aria-readonly` is not considered valid on `role=\"application\"`\n // https://www.w3.org/TR/wai-aria-1.1/#aria-readonly\n // 'aria-readonly': this.readonly && !disabled ? 'true' : null,\n 'aria-disabled': disabled ? 'true' : null,\n 'aria-activedescendant': activeId\n },\n on: {\n keydown: this.onKeydownGrid,\n focus: this.setGridFocusFlag,\n blur: this.setGridFocusFlag\n },\n ref: 'grid'\n }, [$gridCaption, $gridWeekDays, $gridBody, $gridHelp]); // Optional bottom slot\n\n var $slot = this.normalizeSlot();\n $slot = $slot ? h('footer', {\n staticClass: 'b-calendar-footer'\n }, $slot) : h();\n var $widget = h('div', {\n staticClass: 'b-calendar-inner',\n style: this.block ? {} : {\n width: this.width\n },\n attrs: {\n id: widgetId,\n dir: isRTL ? 'rtl' : 'ltr',\n lang: this.computedLocale || null,\n role: 'group',\n 'aria-disabled': disabled ? 'true' : null,\n // If datepicker controls an input, this will specify the ID of the input\n 'aria-controls': this.ariaControls || null,\n // This should be a prop (so it can be changed to Date picker, etc, localized\n 'aria-roledescription': this.roleDescription || null,\n 'aria-describedby': [// Should the attr (if present) go last?\n // Or should this attr be a prop?\n this.bvAttrs['aria-describedby'], valueId, gridHelpId].filter(identity).join(' ')\n },\n on: {\n keydown: this.onKeydownWrapper\n }\n }, [$header, $nav, $grid, $slot]); // Wrap in an outer div that can be styled\n\n return h('div', {\n staticClass: 'b-calendar',\n class: {\n 'd-block': this.block\n }\n }, [$widget]);\n }\n});","var _watch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_FORM_DATEPICKER } from '../../constants/components';\nimport { EVENT_NAME_CONTEXT, EVENT_NAME_HIDDEN, EVENT_NAME_SHOWN } from '../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_DATE_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_BUTTON_CONTENT } from '../../constants/slots';\nimport { createDate, constrainDate, formatYMD, parseYMD } from '../../utils/date';\nimport { attemptBlur, attemptFocus } from '../../utils/dom';\nimport { isUndefinedOrNull } from '../../utils/inspect';\nimport { makeModelMixin } from '../../utils/model';\nimport { omit, pick, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable, pluckProps } from '../../utils/props';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { BIconCalendar, BIconCalendarFill } from '../../icons/icons';\nimport { BButton } from '../button/button';\nimport { BCalendar, props as BCalendarProps } from '../calendar/calendar';\nimport { BVFormBtnLabelControl, props as BVFormBtnLabelControlProps } from '../form-btn-label-control/bv-form-btn-label-control'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('value', {\n type: PROP_TYPE_DATE_STRING\n}),\n modelMixin = _makeModelMixin.mixin,\n modelProps = _makeModelMixin.props,\n MODEL_PROP_NAME = _makeModelMixin.prop,\n MODEL_EVENT_NAME = _makeModelMixin.event; // --- Props ---\n\n\nvar calendarProps = omit(BCalendarProps, ['block', 'hidden', 'id', 'noKeyNav', 'roleDescription', 'value', 'width']);\nvar formBtnLabelControlProps = omit(BVFormBtnLabelControlProps, ['formattedValue', 'id', 'lang', 'rtl', 'value']);\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), modelProps), calendarProps), formBtnLabelControlProps), {}, {\n // Width of the calendar dropdown\n calendarWidth: makeProp(PROP_TYPE_STRING, '270px'),\n closeButton: makeProp(PROP_TYPE_BOOLEAN, false),\n closeButtonVariant: makeProp(PROP_TYPE_STRING, 'outline-secondary'),\n // Dark mode\n dark: makeProp(PROP_TYPE_BOOLEAN, false),\n labelCloseButton: makeProp(PROP_TYPE_STRING, 'Close'),\n labelResetButton: makeProp(PROP_TYPE_STRING, 'Reset'),\n labelTodayButton: makeProp(PROP_TYPE_STRING, 'Select today'),\n noCloseOnSelect: makeProp(PROP_TYPE_BOOLEAN, false),\n resetButton: makeProp(PROP_TYPE_BOOLEAN, false),\n resetButtonVariant: makeProp(PROP_TYPE_STRING, 'outline-danger'),\n resetValue: makeProp(PROP_TYPE_DATE_STRING),\n todayButton: makeProp(PROP_TYPE_BOOLEAN, false),\n todayButtonVariant: makeProp(PROP_TYPE_STRING, 'outline-primary')\n})), NAME_FORM_DATEPICKER); // --- Main component ---\n// @vue/component\n\nexport var BFormDatepicker = /*#__PURE__*/Vue.extend({\n name: NAME_FORM_DATEPICKER,\n mixins: [idMixin, modelMixin],\n props: props,\n data: function data() {\n return {\n // We always use `YYYY-MM-DD` value internally\n localYMD: formatYMD(this[MODEL_PROP_NAME]) || '',\n // If the popup is open\n isVisible: false,\n // Context data from BCalendar\n localLocale: null,\n isRTL: false,\n formattedValue: '',\n activeYMD: ''\n };\n },\n computed: {\n calendarYM: function calendarYM() {\n // Returns the calendar year/month\n // Returns the `YYYY-MM` portion of the active calendar date\n return this.activeYMD.slice(0, -3);\n },\n computedLang: function computedLang() {\n return (this.localLocale || '').replace(/-u-.*$/i, '') || null;\n },\n computedResetValue: function computedResetValue() {\n return formatYMD(constrainDate(this.resetValue)) || '';\n }\n },\n watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function (newValue) {\n this.localYMD = formatYMD(newValue) || '';\n }), _defineProperty(_watch, \"localYMD\", function localYMD(newValue) {\n // We only update the v-model when the datepicker is open\n if (this.isVisible) {\n this.$emit(MODEL_EVENT_NAME, this.valueAsDate ? parseYMD(newValue) || null : newValue || '');\n }\n }), _defineProperty(_watch, \"calendarYM\", function calendarYM(newValue, oldValue) {\n // Displayed calendar month has changed\n // So possibly the calendar height has changed...\n // We need to update popper computed position\n if (newValue !== oldValue && oldValue) {\n try {\n this.$refs.control.updatePopper();\n } catch (_unused) {}\n }\n }), _watch),\n methods: {\n // Public methods\n focus: function focus() {\n if (!this.disabled) {\n attemptFocus(this.$refs.control);\n }\n },\n blur: function blur() {\n if (!this.disabled) {\n attemptBlur(this.$refs.control);\n }\n },\n // Private methods\n setAndClose: function setAndClose(ymd) {\n var _this = this;\n\n this.localYMD = ymd; // Close calendar popup, unless `noCloseOnSelect`\n\n if (!this.noCloseOnSelect) {\n this.$nextTick(function () {\n _this.$refs.control.hide(true);\n });\n }\n },\n onSelected: function onSelected(ymd) {\n var _this2 = this;\n\n this.$nextTick(function () {\n _this2.setAndClose(ymd);\n });\n },\n onInput: function onInput(ymd) {\n if (this.localYMD !== ymd) {\n this.localYMD = ymd;\n }\n },\n onContext: function onContext(ctx) {\n var activeYMD = ctx.activeYMD,\n isRTL = ctx.isRTL,\n locale = ctx.locale,\n selectedYMD = ctx.selectedYMD,\n selectedFormatted = ctx.selectedFormatted;\n this.isRTL = isRTL;\n this.localLocale = locale;\n this.formattedValue = selectedFormatted;\n this.localYMD = selectedYMD;\n this.activeYMD = activeYMD; // Re-emit the context event\n\n this.$emit(EVENT_NAME_CONTEXT, ctx);\n },\n onTodayButton: function onTodayButton() {\n // Set to today (or min/max if today is out of range)\n this.setAndClose(formatYMD(constrainDate(createDate(), this.min, this.max)));\n },\n onResetButton: function onResetButton() {\n this.setAndClose(this.computedResetValue);\n },\n onCloseButton: function onCloseButton() {\n this.$refs.control.hide(true);\n },\n // Menu handlers\n onShow: function onShow() {\n this.isVisible = true;\n },\n onShown: function onShown() {\n var _this3 = this;\n\n this.$nextTick(function () {\n attemptFocus(_this3.$refs.calendar);\n\n _this3.$emit(EVENT_NAME_SHOWN);\n });\n },\n onHidden: function onHidden() {\n this.isVisible = false;\n this.$emit(EVENT_NAME_HIDDEN);\n },\n // Render helpers\n defaultButtonFn: function defaultButtonFn(_ref) {\n var isHovered = _ref.isHovered,\n hasFocus = _ref.hasFocus;\n return this.$createElement(isHovered || hasFocus ? BIconCalendarFill : BIconCalendar, {\n attrs: {\n 'aria-hidden': 'true'\n }\n });\n }\n },\n render: function render(h) {\n var localYMD = this.localYMD,\n disabled = this.disabled,\n readonly = this.readonly,\n dark = this.dark,\n $props = this.$props,\n $scopedSlots = this.$scopedSlots;\n var placeholder = isUndefinedOrNull(this.placeholder) ? this.labelNoDateSelected : this.placeholder; // Optional footer buttons\n\n var $footer = [];\n\n if (this.todayButton) {\n var label = this.labelTodayButton;\n $footer.push(h(BButton, {\n props: {\n disabled: disabled || readonly,\n size: 'sm',\n variant: this.todayButtonVariant\n },\n attrs: {\n 'aria-label': label || null\n },\n on: {\n click: this.onTodayButton\n }\n }, label));\n }\n\n if (this.resetButton) {\n var _label = this.labelResetButton;\n $footer.push(h(BButton, {\n props: {\n disabled: disabled || readonly,\n size: 'sm',\n variant: this.resetButtonVariant\n },\n attrs: {\n 'aria-label': _label || null\n },\n on: {\n click: this.onResetButton\n }\n }, _label));\n }\n\n if (this.closeButton) {\n var _label2 = this.labelCloseButton;\n $footer.push(h(BButton, {\n props: {\n disabled: disabled,\n size: 'sm',\n variant: this.closeButtonVariant\n },\n attrs: {\n 'aria-label': _label2 || null\n },\n on: {\n click: this.onCloseButton\n }\n }, _label2));\n }\n\n if ($footer.length > 0) {\n $footer = [h('div', {\n staticClass: 'b-form-date-controls d-flex flex-wrap',\n class: {\n 'justify-content-between': $footer.length > 1,\n 'justify-content-end': $footer.length < 2\n }\n }, $footer)];\n }\n\n var $calendar = h(BCalendar, {\n staticClass: 'b-form-date-calendar w-100',\n props: _objectSpread(_objectSpread({}, pluckProps(calendarProps, $props)), {}, {\n hidden: !this.isVisible,\n value: localYMD,\n valueAsDate: false,\n width: this.calendarWidth\n }),\n on: {\n selected: this.onSelected,\n input: this.onInput,\n context: this.onContext\n },\n scopedSlots: pick($scopedSlots, ['nav-prev-decade', 'nav-prev-year', 'nav-prev-month', 'nav-this-month', 'nav-next-month', 'nav-next-year', 'nav-next-decade']),\n key: 'calendar',\n ref: 'calendar'\n }, $footer);\n return h(BVFormBtnLabelControl, {\n staticClass: 'b-form-datepicker',\n props: _objectSpread(_objectSpread({}, pluckProps(formBtnLabelControlProps, $props)), {}, {\n formattedValue: localYMD ? this.formattedValue : '',\n id: this.safeId(),\n lang: this.computedLang,\n menuClass: [{\n 'bg-dark': dark,\n 'text-light': dark\n }, this.menuClass],\n placeholder: placeholder,\n rtl: this.isRTL,\n value: localYMD\n }),\n on: {\n show: this.onShow,\n shown: this.onShown,\n hidden: this.onHidden\n },\n scopedSlots: _defineProperty({}, SLOT_NAME_BUTTON_CONTENT, $scopedSlots[SLOT_NAME_BUTTON_CONTENT] || this.defaultButtonFn),\n ref: 'control'\n }, [$calendar]);\n }\n});","// v-b-hover directive\nimport { IS_BROWSER } from '../../constants/env';\nimport { EVENT_OPTIONS_NO_CAPTURE } from '../../constants/events';\nimport { eventOnOff } from '../../utils/events';\nimport { isFunction } from '../../utils/inspect'; // --- Constants ---\n\nvar PROP = '__BV_hover_handler__';\nvar MOUSEENTER = 'mouseenter';\nvar MOUSELEAVE = 'mouseleave'; // --- Helper methods ---\n\nvar createListener = function createListener(handler) {\n var listener = function listener(event) {\n handler(event.type === MOUSEENTER, event);\n };\n\n listener.fn = handler;\n return listener;\n};\n\nvar updateListeners = function updateListeners(on, el, listener) {\n eventOnOff(on, el, MOUSEENTER, listener, EVENT_OPTIONS_NO_CAPTURE);\n eventOnOff(on, el, MOUSELEAVE, listener, EVENT_OPTIONS_NO_CAPTURE);\n}; // --- Directive bind/unbind/update handler ---\n\n\nvar directive = function directive(el, _ref) {\n var _ref$value = _ref.value,\n handler = _ref$value === void 0 ? null : _ref$value;\n\n if (IS_BROWSER) {\n var listener = el[PROP];\n var hasListener = isFunction(listener);\n var handlerChanged = !(hasListener && listener.fn === handler);\n\n if (hasListener && handlerChanged) {\n updateListeners(false, el, listener);\n delete el[PROP];\n }\n\n if (isFunction(handler) && handlerChanged) {\n el[PROP] = createListener(handler);\n updateListeners(true, el, el[PROP]);\n }\n }\n}; // VBHover directive\n\n\nexport var VBHover = {\n bind: directive,\n componentUpdated: directive,\n unbind: function unbind(el) {\n directive(el, {\n value: null\n });\n }\n};","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n//\n// Private component used by `b-form-datepicker` and `b-form-timepicker`\n//\nimport { Vue } from '../../vue';\nimport { NAME_FORM_BUTTON_LABEL_CONTROL } from '../../constants/components';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_BUTTON_CONTENT, SLOT_NAME_DEFAULT } from '../../constants/slots';\nimport { attemptBlur, attemptFocus } from '../../utils/dom';\nimport { stopEvent } from '../../utils/events';\nimport { omit, sortKeys } from '../../utils/object';\nimport { makeProp } from '../../utils/props';\nimport { toString } from '../../utils/string';\nimport { dropdownMixin, props as dropdownProps } from '../../mixins/dropdown';\nimport { props as formControlProps } from '../../mixins/form-control';\nimport { formSizeMixin, props as formSizeProps } from '../../mixins/form-size';\nimport { formStateMixin, props as formStateProps } from '../../mixins/form-state';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { VBHover } from '../../directives/hover/hover';\nimport { BIconChevronDown } from '../../icons/icons'; // --- Props ---\n\nexport var props = sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), formSizeProps), formStateProps), omit(dropdownProps, ['disabled'])), omit(formControlProps, ['autofocus'])), {}, {\n // When `true`, renders a `btn-group` wrapper and visually hides the label\n buttonOnly: makeProp(PROP_TYPE_BOOLEAN, false),\n // Applicable in button mode only\n buttonVariant: makeProp(PROP_TYPE_STRING, 'secondary'),\n // This is the value shown in the label\n // Defaults back to `value`\n formattedValue: makeProp(PROP_TYPE_STRING),\n // Value placed in `.sr-only` span inside label when value is present\n labelSelected: makeProp(PROP_TYPE_STRING),\n lang: makeProp(PROP_TYPE_STRING),\n // Extra classes to apply to the `dropdown-menu` div\n menuClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n // This is the value placed on the hidden input when no value selected\n placeholder: makeProp(PROP_TYPE_STRING),\n readonly: makeProp(PROP_TYPE_BOOLEAN, false),\n // Tri-state prop: `true`, `false` or `null`\n rtl: makeProp(PROP_TYPE_BOOLEAN, null),\n value: makeProp(PROP_TYPE_STRING, '')\n})); // --- Main component ---\n// @vue/component\n\nexport var BVFormBtnLabelControl = /*#__PURE__*/Vue.extend({\n name: NAME_FORM_BUTTON_LABEL_CONTROL,\n directives: {\n 'b-hover': VBHover\n },\n mixins: [idMixin, formSizeMixin, formStateMixin, dropdownMixin, normalizeSlotMixin],\n props: props,\n data: function data() {\n return {\n isHovered: false,\n hasFocus: false\n };\n },\n computed: {\n idButton: function idButton() {\n return this.safeId();\n },\n idLabel: function idLabel() {\n return this.safeId('_value_');\n },\n idMenu: function idMenu() {\n return this.safeId('_dialog_');\n },\n idWrapper: function idWrapper() {\n return this.safeId('_outer_');\n },\n computedDir: function computedDir() {\n return this.rtl === true ? 'rtl' : this.rtl === false ? 'ltr' : null;\n }\n },\n methods: {\n focus: function focus() {\n if (!this.disabled) {\n attemptFocus(this.$refs.toggle);\n }\n },\n blur: function blur() {\n if (!this.disabled) {\n attemptBlur(this.$refs.toggle);\n }\n },\n setFocus: function setFocus(event) {\n this.hasFocus = event.type === 'focus';\n },\n handleHover: function handleHover(hovered) {\n this.isHovered = hovered;\n }\n },\n render: function render(h) {\n var _class;\n\n var idButton = this.idButton,\n idLabel = this.idLabel,\n idMenu = this.idMenu,\n idWrapper = this.idWrapper,\n disabled = this.disabled,\n readonly = this.readonly,\n required = this.required,\n name = this.name,\n state = this.state,\n visible = this.visible,\n size = this.size,\n isHovered = this.isHovered,\n hasFocus = this.hasFocus,\n labelSelected = this.labelSelected,\n buttonVariant = this.buttonVariant,\n buttonOnly = this.buttonOnly;\n var value = toString(this.value) || '';\n var invalid = state === false || required && !value;\n var btnScope = {\n isHovered: isHovered,\n hasFocus: hasFocus,\n state: state,\n opened: visible\n };\n var $button = h('button', {\n staticClass: 'btn',\n class: (_class = {}, _defineProperty(_class, \"btn-\".concat(buttonVariant), buttonOnly), _defineProperty(_class, \"btn-\".concat(size), size), _defineProperty(_class, 'h-auto', !buttonOnly), _defineProperty(_class, 'dropdown-toggle', buttonOnly), _defineProperty(_class, 'dropdown-toggle-no-caret', buttonOnly), _class),\n attrs: {\n id: idButton,\n type: 'button',\n disabled: disabled,\n 'aria-haspopup': 'dialog',\n 'aria-expanded': visible ? 'true' : 'false',\n 'aria-invalid': invalid ? 'true' : null,\n 'aria-required': required ? 'true' : null\n },\n directives: [{\n name: 'b-hover',\n value: this.handleHover\n }],\n on: {\n mousedown: this.onMousedown,\n click: this.toggle,\n keydown: this.toggle,\n // Handle ENTER, SPACE and DOWN\n '!focus': this.setFocus,\n '!blur': this.setFocus\n },\n ref: 'toggle'\n }, [this.hasNormalizedSlot(SLOT_NAME_BUTTON_CONTENT) ? this.normalizeSlot(SLOT_NAME_BUTTON_CONTENT, btnScope) :\n /* istanbul ignore next */\n h(BIconChevronDown, {\n props: {\n scale: 1.25\n }\n })]); // Hidden input\n\n var $hidden = h();\n\n if (name && !disabled) {\n $hidden = h('input', {\n attrs: {\n type: 'hidden',\n name: name || null,\n form: this.form || null,\n value: value\n }\n });\n } // Dropdown content\n\n\n var $menu = h('div', {\n staticClass: 'dropdown-menu',\n class: [this.menuClass, {\n show: visible,\n 'dropdown-menu-right': this.right\n }],\n attrs: {\n id: idMenu,\n role: 'dialog',\n tabindex: '-1',\n 'aria-modal': 'false',\n 'aria-labelledby': idLabel\n },\n on: {\n keydown: this.onKeydown // Handle ESC\n\n },\n ref: 'menu'\n }, [this.normalizeSlot(SLOT_NAME_DEFAULT, {\n opened: visible\n })]); // Value label\n\n var $label = h('label', {\n class: buttonOnly ? 'sr-only' // Hidden in button only mode\n : ['form-control', 'text-break', 'text-wrap', 'bg-transparent', // Mute the text if showing the placeholder\n {\n 'text-muted': !value\n }, this.stateClass, this.sizeFormClass],\n attrs: {\n id: idLabel,\n for: idButton,\n 'aria-invalid': invalid ? 'true' : null,\n 'aria-required': required ? 'true' : null\n },\n directives: [{\n name: 'b-hover',\n value: this.handleHover\n }],\n on: {\n // Disable bubbling of the click event to\n // prevent menu from closing and re-opening\n '!click':\n /* istanbul ignore next */\n function click(event) {\n stopEvent(event, {\n preventDefault: false\n });\n }\n }\n }, [value ? this.formattedValue || value : this.placeholder || '', // Add the selected label for screen readers when a value is provided\n value && labelSelected ? h('bdi', {\n staticClass: 'sr-only'\n }, labelSelected) : '']); // Return the custom form control wrapper\n\n return h('div', {\n staticClass: 'b-form-btn-label-control dropdown',\n class: [this.directionClass, this.boundaryClass, [{\n 'btn-group': buttonOnly,\n 'form-control': !buttonOnly,\n 'd-flex': !buttonOnly,\n 'h-auto': !buttonOnly,\n 'align-items-stretch': !buttonOnly,\n focus: hasFocus && !buttonOnly,\n show: visible,\n 'is-valid': state === true,\n 'is-invalid': state === false\n }, buttonOnly ? null : this.sizeFormClass]],\n attrs: {\n id: idWrapper,\n role: buttonOnly ? null : 'group',\n lang: this.lang || null,\n dir: this.computedDir,\n 'aria-disabled': disabled,\n 'aria-readonly': readonly && !disabled,\n 'aria-labelledby': idLabel,\n 'aria-invalid': state === false || required && !value ? 'true' : null,\n 'aria-required': required ? 'true' : null\n }\n }, [$button, $hidden, $menu, $label]);\n }\n});"],"sourceRoot":""}