@fkui/vue 5.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"names":["statuses","_sfc_main$1d","vue","defineComponent","name","props","status","type","String","default","validator","value","includes","inverted","Boolean","computed","badgeClass","_sfc_render$13","_ctx","_cache","$props","$setup","$data","$options","class","normalizeClass","Flip","Rotate","_sfc_main$1c","inheritAttrs","required","library","flip","rotate","spriteKey","spriteId","modifiers","classes","push","ariaHidden","slotUsed","$slots","ariaLabel","$attrs","ariaLabelledby","ariaDescription","ariaDescribedby","hasText","_sfc_render$12","openBlock","createElementBlock","mergeProps","focusable","renderSlot","createTextVNode","createElementVNode","_hoisted_2$G","DATA_TEST_ATTRIBUTE_NAME","throwErrorIfEmpty","Error","TestDirective","mounted","el","setAttribute","updated","TestPlugin","install","app","directive","translate","key","defaultValueOrArgs","args","provider","logic","TranslationService","TranslationMixin","methods","$t","TranslationPlugin","mixin","useTranslate","listCacheClear$1","__data__","size","_listCacheClear","eq$2","other","eq_1","eq$1","assocIndexOf$4","array","length","_assocIndexOf","assocIndexOf$3","arrayProto","Array","prototype","splice","listCacheDelete$1","data","index","lastIndex","pop","call","_listCacheDelete","assocIndexOf$2","listCacheGet$1","_listCacheGet","assocIndexOf$1","listCacheHas$1","_listCacheHas","assocIndexOf","listCacheSet$1","_listCacheSet","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache$4","entries","clear","entry","set","get","has","_ListCache","ListCache$3","stackClear$1","_stackClear","stackDelete$1","result","_stackDelete","stackGet$1","_stackGet","stackHas$1","_stackHas","freeGlobal$1","commonjsGlobal","Object","_freeGlobal","freeGlobal","freeSelf","self","root$8","Function","_root","root$7","Symbol$4","Symbol","_Symbol","Symbol$3","objectProto$b","hasOwnProperty$8","hasOwnProperty","nativeObjectToString$1","toString","symToStringTag$1","toStringTag","getRawTag$1","isOwn","tag","unmasked","e","_getRawTag","objectProto$a","nativeObjectToString","objectToString$1","_objectToString","Symbol$2","getRawTag","objectToString","nullTag","undefinedTag","symToStringTag","baseGetTag$4","_baseGetTag","isObject$2","isObject_1","baseGetTag$3","isObject$1","asyncTag","funcTag$1","genTag","proxyTag","isFunction$2","isFunction_1","root$6","coreJsData$1","_coreJsData","coreJsData","maskSrcKey","uid","exec","keys","IE_PROTO","isMasked$1","func","_isMasked","funcProto$1","funcToString$1","toSource$2","_toSource","isFunction$1","isMasked","isObject","toSource$1","reRegExpChar","reIsHostCtor","funcProto","objectProto$9","funcToString","hasOwnProperty$7","reIsNative","RegExp","replace","baseIsNative$1","pattern","test","_baseIsNative","getValue$1","object","_getValue","baseIsNative","getValue","getNative$6","_getNative","getNative$5","root$5","Map$4","_Map","getNative$4","nativeCreate$4","_nativeCreate","nativeCreate$3","hashClear$1","_hashClear","hashDelete$1","_hashDelete","nativeCreate$2","HASH_UNDEFINED$2","objectProto$8","hasOwnProperty$6","hashGet$1","_hashGet","nativeCreate$1","objectProto$7","hasOwnProperty$5","hashHas$1","_hashHas","nativeCreate","HASH_UNDEFINED$1","hashSet$1","_hashSet","hashClear","hashDelete","hashGet","hashHas","hashSet","Hash$1","_Hash","Hash","ListCache$2","Map$3","mapCacheClear$1","_mapCacheClear","isKeyable$1","_isKeyable","isKeyable","getMapData$4","map","_getMapData","getMapData$3","mapCacheDelete$1","_mapCacheDelete","getMapData$2","mapCacheGet$1","_mapCacheGet","getMapData$1","mapCacheHas$1","_mapCacheHas","getMapData","mapCacheSet$1","_mapCacheSet","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache$2","_MapCache","ListCache$1","Map$2","MapCache$1","LARGE_ARRAY_SIZE","stackSet$1","pairs","_stackSet","ListCache","stackClear","stackDelete","stackGet","stackHas","stackSet","Stack$1","_Stack","HASH_UNDEFINED","setCacheAdd$1","_setCacheAdd","setCacheHas$1","_setCacheHas","MapCache","setCacheAdd","setCacheHas","SetCache$1","values","add","_SetCache","arraySome$1","predicate","_arraySome","cacheHas$1","cache","_cacheHas","SetCache","arraySome","cacheHas","COMPARE_PARTIAL_FLAG$3","COMPARE_UNORDERED_FLAG$1","equalArrays$2","bitmask","customizer","equalFunc","stack","isPartial","arrLength","othLength","arrStacked","othStacked","seen","arrValue","othValue","compared","othValue2","othIndex","_equalArrays","root$4","Uint8Array$1","Uint8Array","_Uint8Array","mapToArray$1","forEach","_mapToArray","setToArray$1","_setToArray","Symbol$1","Uint8Array2","eq","equalArrays$1","mapToArray","setToArray","COMPARE_PARTIAL_FLAG$2","COMPARE_UNORDERED_FLAG","boolTag$1","dateTag$1","errorTag$1","mapTag$2","numberTag$1","regexpTag$1","setTag$2","stringTag$1","symbolTag","arrayBufferTag$1","dataViewTag$2","symbolProto","symbolValueOf","valueOf","equalByTag$1","byteLength","byteOffset","buffer","message","convert","stacked","_equalByTag","arrayPush$1","offset2","_arrayPush","isArray$3","isArray","isArray_1","arrayPush","isArray$2","baseGetAllKeys$1","keysFunc","symbolsFunc","_baseGetAllKeys","arrayFilter$1","resIndex","_arrayFilter","stubArray$1","stubArray_1","arrayFilter","stubArray","objectProto$6","propertyIsEnumerable$1","propertyIsEnumerable","nativeGetSymbols","getOwnPropertySymbols","getSymbols$1","symbol","_getSymbols","baseTimes$1","n","iteratee","_baseTimes","isObjectLike$4","isObjectLike_1","baseGetTag$2","isObjectLike$3","argsTag$2","baseIsArguments$1","_baseIsArguments","baseIsArguments","isObjectLike$2","objectProto$5","hasOwnProperty$4","isArguments$1","arguments","isArguments_1","stubFalse","stubFalse_1","root2","stubFalse2","freeExports","exports2","nodeType","freeModule","module2","moduleExports","exports","Buffer2","Buffer","nativeIsBuffer","isBuffer","isBuffer2","MAX_SAFE_INTEGER$1","reIsUint","isIndex$1","_isIndex","MAX_SAFE_INTEGER","isLength$2","isLength_1","baseGetTag$1","isLength$1","isObjectLike$1","argsTag$1","arrayTag$1","boolTag","dateTag","errorTag","funcTag","mapTag$1","numberTag","objectTag$2","regexpTag","setTag$1","stringTag","weakMapTag$1","arrayBufferTag","dataViewTag$1","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","typedArrayTags","baseIsTypedArray$1","_baseIsTypedArray","baseUnary$1","_baseUnary","freeGlobal2","freeProcess","process","nodeUtil2","types","require","binding","baseIsTypedArray","baseUnary","nodeUtil","_nodeUtilExports","nodeIsTypedArray","isTypedArray","isTypedArray$2","isTypedArray_1","baseTimes","isArguments","isArray$1","isBuffer$1","isBufferExports","isIndex","isTypedArray$1","objectProto$4","hasOwnProperty$3","arrayLikeKeys$1","inherited","isArr","isArg","isBuff","isType","skipIndexes","_arrayLikeKeys","objectProto$3","isPrototype$1","Ctor","constructor","proto","_isPrototype","overArg$1","transform","arg","_overArg","overArg","nativeKeys$1","_nativeKeys","isPrototype","nativeKeys","objectProto$2","hasOwnProperty$2","baseKeys$1","_baseKeys","isFunction","isLength","isArrayLike$1","isArrayLike_1","arrayLikeKeys","baseKeys","isArrayLike","keys$1","keys_1","baseGetAllKeys","getSymbols","getAllKeys$1","_getAllKeys","getAllKeys","COMPARE_PARTIAL_FLAG$1","objectProto$1","hasOwnProperty$1","equalObjects$1","objProps","objLength","othProps","objStacked","skipCtor","objValue","objCtor","othCtor","_equalObjects","getNative$3","root$3","DataView$1","_DataView","getNative$2","root$2","Promise$2","_Promise","getNative$1","root$1","Set$1","_Set","getNative","root","WeakMap$1","_WeakMap","DataView","Map$1","Promise$1","Set","WeakMap","baseGetTag","toSource","mapTag","objectTag$1","promiseTag","setTag","weakMapTag","dataViewTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","getTag$1","ArrayBuffer","resolve","getTag","ctorString","_getTag","Stack","equalArrays","equalByTag","equalObjects","COMPARE_PARTIAL_FLAG","argsTag","arrayTag","objectTag","objectProto","baseIsEqualDeep$1","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","_baseIsEqualDeep","baseIsEqualDeep","isObjectLike","baseIsEqual$1","_baseIsEqual","baseIsEqual","isEqual","isEqual_1","itemEquals","item1","item2","compareAttribute","isSet","includeItem","item","itemList","itemCompareValue","match","find","it","handleKeyboardFocusNavigation","focusedElement","focusableElements","tabPosition","indexOf","keyDown2","keyUp2","focus","TableScroll","TableScroll2","scrollClasses","tableScrollClasses","val","defaultOptions","stripClasses","collapseWhitespace","text","intersection","a","b","filter","excludeClass","exclude","node","_a","split","matches","excludeComment","Comment","getTextContent","children","options","isVNode","child","join","renderSlotText","render","nodes","getTextFromScopedSlot","slot","_renderSlotText","dispatchComponentValidityEvent","element","detail","dispatchEvent","CustomEvent","bubbles","dispatchComponentUnmountEvent","event","elementId","id","refIsElement","Element","refIsElementArray","refIsHTMLElementArray","HTMLElement","refIsVue","$el","refIsVueArray","getElementsFromVueRef","ref","vueRef","getElementFromVueRef","getSortedHTMLElementsFromVueRef","htmlElements","getHTMLElementsFromVueRef","sort","lhs","rhs","lhsIndex","parseIntOrDefault","dataset","refIndex","Infinity","rhsIndex","defaultValue","parsed","parseInt","isNaN","isEmptyArray","getHTMLElementFromVueRef","findElementFromVueRef","findHTMLElementFromVueRef","emptyTableRow","textContent","toPrimitive","hint","proxy","Proxy","apply","_target","prop","lazyLoad","fn2","_cache2","eventTarget","EventTarget","fn","Map","$emit","$on","callback","addEventListener","$off","removeEventListener","delete","EventBus","FKUIConfigButtonOrder","FKUIConfigButtonOrder2","popupContainer","document","body","production","config","buttonOrder","LEFT_TO_RIGHT","teleportTarget","modalTarget","popupTarget","querySelector","configLogic","setRunningContext","fkuiContext","appContext","_context","globalProperties","$fkui","getRunningContext","callingInstance","getTargetElement","target","createContainer","attachTo","attachFirst","parent","createElement","insertBefore","firstChild","appendChild","mountComponent","Component","createApp","assign","mount","unmount","parentNode","removeChild","unpackPayload","src","defaultPayload","reason","rawData","openModal","_config$modalTarget","content","defaultOptions2","Promise","reject","terminate","payload","err","console","error","isOpen","onClose","formModal","_ref","beforeSubmit","ModalReason","ModalReason2","sizes","sizeClass","focusElement","container","elementIsRadioButton","focusRadioButtonGroup","radioGroupInputs","querySelectorAll","checkedRadioButton","from","inputEl","checked","isHTMLInputElement","HTMLInputElement","_sfc_main$1b","components","FIcon","mixins","ElementIdService","generateElementId","ariaCloseText","fullscreen","emits","nonModalFocusableElements","savedFocus","savedScroll","modalClass","containerClasses","hasHeaderSlot","hasSlot","watch","immediate","handler","$nextTick","restoreState","beforeUnmount","documentElement","scroll","scrollTop","style","top","classList","focusElement2","resolveFocusElement","pushFocus","titleElement","$refs","modalTitle","contentElement","modalContent","tabbableChildren","findTabbableElements","firstTabbableChildElement","_this$savedScroll","remove","removeProperty","popFocus","onFocusFirst","tabbableElements","modalDialogContainer","lastTabbableElement","onFocusLast","firstTabbableElement","_hoisted_1$T","_hoisted_2$F","_hoisted_3$z","_hoisted_4$t","_hoisted_6$l","_hoisted_7$g","tabindex","_hoisted_8$b","_hoisted_9$7","_component_f_icon","resolveComponent","role","onKeyup","withKeys","_hoisted_5$p","onFocus","createCommentVNode","_hoisted_10$7","onClick","toDisplayString","createVNode","_hoisted_11$3","prepareButtonList","list","_it$event","_ref2","_it$reason","_it$type","label","screenreader","classlist","buttonType","submitButton","RIGHT_TO_LEFT","reverse","defaultButtons","_sfc_main$1a","FModal","heading","buttons","_it$event2","preparedButtons","button","_hoisted_2$E","_hoisted_3$y","createBlock","_component_f_modal","header","withCtx","footer","_hoisted_1$S","Fragment","renderList","$event","_","GAP","ALIGNMENT","FLOAT","_sfc_main$19","gap","collapse","wrap","float","_sfc_render$$","_sfc_main$18","grow","shrink","align","_sfc_render$_","focusError","focusElementId","scrollTo","window","innerHeight","_sfc_main$17","IFlex","IFlexItem","items","bullets","beforeNavigate","hasTitleSlot","liClasses","errorItem","onClickItem","_hoisted_2$D","_hoisted_3$x","_hoisted_4$s","_hoisted_5$o","_hoisted_6$k","_hoisted_7$f","_component_i_flex","_hoisted_1$R","_component_i_flex_item","href","withModifiers","title","cleanUpElements","vm","setTimeout","domElement","sortComponentsWithErrorsOnDOMOrder","componentList","errorList","component","validity","Reference","isValid","validityMode","elementToCompareA","elementToCompareB","documentOrderComparator","isFormStepReference","reference","_sfc_main$16","modelValue","componentsWithError","componentCount","stopPropagation","onComponentUnmount","triggerGroupValidityEvent","onComponentValidity","every","_sfc_render$Y","FValidationFormAction","FValidationFormAction2","_sfc_main$15","FValidationGroup","FErrorList","beforeValidation","useErrorList","submitted","groupKey","errors","c","errorMessage","displayErrors","hasFormErrors","ValidationService","setSubmitted","validateAllElements","firstError","getElementById","onSubmit","CANCEL","beforeAction","_hoisted_1$Q","_hoisted_2$C","_component_f_validation_group","novalidate","autocomplete","_component_f_error_list","_sfc_main$14","FValidationForm","dataTest","formId","hasDeprecatedSlots","resetState","onCancel","_hoisted_2$B","_hoisted_3$w","_component_f_validation_form","_hoisted_1$P","form","_hoisted_4$r","confirmModal","modalData","confirm","dismiss","FConfirmModal","isVueComponent","_element$focusTarget","targetElement","focusTarget","getInputElement","inputElement","tagName","toLowerCase","findParentByName","current","$parent","getParentByName","parentVm","hasParentByName","ErrorData","info","__publicField","ErrorViewData","hasError","FormErrorList","fields","FormStep","MenuAction","MenuAction2","actionFromKeyboardEvent","MOVE_LAST","MOVE_FIRST","MOVE_PREV","MOVE_NEXT","shiftKey","ACTIVATE","getValidatableElement","isValidatableHTMLElement","validatableInsideElement","triggerInitialValidationToSupportFFormStepValidation","validateElement","registerValidators","bindingModifiers","bindingValue","validatorName","validatorConfigs","addValidatorsToElement","ValidationDirective","beforeMount","_binding","validatableElement","removeValidatorsFromElement","isEqual$1","oldValue","ValidationPrefixDirective","ValidationPlugin","UNHANDLED_ERROR_EVENT","defaults","captureWarnings","logToConsole","errorHandler","consoleOutput","warnHandler","msg","trace","warn","ErrorPlugin","config2","bind","_sfc_main$13","_hoisted_1$O","_hoisted_2$A","_sfc_render$V","_hoisted_3$v","_hoisted_4$q","_sfc_main$12","defaultComponent","errorComponent","FErrorPage","$route","created","_sfc_render$U","resolveDynamicComponent","isMonthBefore","date2","minDate","isBefore","startOfMonth","isMonthAfter","maxDate","isAfter","endOfMonth","isInvalidMonth","getMessage","invalidMonth","day","monthName","year","month","_sfc_main$11","previousDisabled","addMonths","nextDisabled","previousValue","nextValue","currentText","getDateText","previousSrText","nextSrText","previousIconClasses","nextIconClasses","onClickPreviousButton","previousMonth","previousMonthText","alertScreenReader","assertive","onClickNextButton","nextMonth","nextMonthText","isFocused","activeElement","_hoisted_1$N","_hoisted_2$z","_hoisted_3$u","_hoisted_4$p","_hoisted_6$j","getDayStartOffset","days","weekDay","getDayEndOffset","_sfc_main$10","hideWeekNumbers","weekdays","date","getWeekdayNamings","focused","resizeObserver","internalHideWeekNumbers","showShortWeekdays","totalCols","weeks","groupByWeek","ResizeObserver","debounce","onResize","observe","unmounted","disconnect","offsetWidth","onFocusin","onFocusout","relatedTarget","contains","_hoisted_1$M","_hoisted_2$y","_hoisted_3$t","_hoisted_4$o","_hoisted_5$m","_hoisted_6$i","_hoisted_7$e","_hoisted_8$a","_hoisted_10$6","_hoisted_11$2","scope","_hoisted_13$2","_hoisted_14$2","_hoisted_16$1","_hoisted_17$1","_hoisted_18$1","_hoisted_19$1","_sfc_render$S","_hoisted_9$6","weekday","week","colspan","_hoisted_15$2","_hoisted_20$1","DayStep","ArrowRight","ArrowLeft","ArrowUp","ArrowDown","isDayStepKey","code","getDayStep","keyBoardEvent","isSameMonth","equals","getDayTabindex","active","_sfc_main$$","ICalendarMonthGrid","tabDate","onClickDay","onKeydownDay","preventDefault","dayStep","navigatedDay","addDays","navigatedMonth","$forceUpdate","navigatedDayRef","navigatedDayElement","isDayFocused","getTabindex","date$1","activeDate","activeString","FDate","fromIso","_component_i_calendar_month_grid","onKeydown","_hoisted_1$L","_sfc_main$_","ICalendarNavbar","ICalendarMonth","onChangeMonth","_hoisted_1$K","_component_i_calendar_navbar","_component_i_calendar_month","getCalendarDaySrText","enabled","selected","t","parts","today","now","DateFormat","FULL","_sfc_main$Z","highlight","srText","dayClasses","_sfc_render$P","_hoisted_1$J","offset","page","rect","getBoundingClientRect","pageYOffset","left","pageXOffset","getElement","anchor","Placement","Placement2","CandidateOrder","CandidateOrder2","getCandidates","clippedArea","spacing","candidateOrder","dw","width","placement","x","y","height","direction","d","f","g","h","i","isInside","outer","inner","isHorizontalDirection","xSpacing","isVerticalDirection","ySpacing","ax","ay","bx","by","isElementOptions","clipRect","clip","Math","max","min","getAbsolutePosition","isRoot","isSameNode","clientWidth","clientHeight","floor","fitInsideArea","area","areaElement","anchorElement","viewport","viewportElement","spacing2","area2","anchor2","target2","viewport2","offsetParent","candidates","findIndex","getFallbackPosition","getScrollToPopup","param","popupOffset","popup","popupHeight","offsetHeight","neededScroll","windowInnerHeight","getContainer","closest","getFocusableElement","rootElement","_elements$","popupElement","elements","MIN_DESKTOP_WIDTH","POPUP_SPACING$1","isTeleportDisabled","window2","forceInline","forceOverlay","isMobileSize","innerWidth","disableTeleport","Fallback","_sfc_main$Y","inline","alwaysInline","keyboardTrap","setFocus","teleportDisabled","NotCalculated","noCloseOnResize","popupClasses","isInline","popupState","_config$popupTarget","toggleIsOpen","onDocumentClickHandler","onWindowResizeHandler","wrapper","shouldCheckCandidates","Default","useOverlay","applyFocus","scrollTarget","hasScrollTarget","scrollY","scrollOptions","behavior","focusableElement","onPopupClickHandler","onKeyEsc","onKeyTab","handleTab","Teleport","to","disabled","isContextMenuTextItem","isContextMenuSeparatorItem","separator","getNewItemIndexFromMenuAction$3","action","newIndex","doMenuAction$3","itemsLength","popupItems","currentIndex","currentFocusedItemIndex","newFocusedItemIndex","setFocusOnItem","activateItem","preventKeys$3","keyUp$1","_sfc_main$X","IPopup","setup","contextmenu","selectedItem","separatorPositions","res","pos","hasIcons","some","icon","hasSeparatorAfterItemAt","closePopup","tabIndex","onKeyUp","doHandlePopupMenuTabKey","onKeyDown","popupMenuItem","preventScroll","_hoisted_1$I","_hoisted_2$w","_hoisted_4$n","_hoisted_5$l","_component_i_popup","focus-element","ref_for","iconLibrary","_hoisted_3$s","anyType$1","Number","Date","_sfc_main$W","showDetails","inject","getFieldsetLabelText","expanded","initialStyle","overflow","transition","hiddenStyle","position","visibility","visibleStyle","openedStyle","attrs","lodash","toValue","onChange","emitVModelEvent","onInput","disabledClass","injected","updateExpandedFlag","checkboxInput","newModel","onValidity","labelText","enter","htmlElement","computedStyle","getComputedStyle","afterEnter","leave","_hoisted_2$v","_hoisted_3$r","_hoisted_4$m","_hoisted_5$k","_sfc_render$M","_hoisted_1$H","details","for","Transition","onEnter","onAfterEnter","onLeave","_hoisted_6$h","labelClasses","labelClass","contentClasses","hasRadiobutton","hasCheckbox","contentClass","_sfc_main$V","provide","sharedName","horizontal","chip","border","descriptionClass","discreteDescriptionClass","validityElement","dispatchObject","hasDocumentListener","legendKey","oldMessage","hasErrorMessageSlot","hasTooltipSlot","tooltip","hasDescriptionSlot","legendClass","groupLabelClass","groupContentClass","checkedChildren","debouncedUpdateChildren","updateCheckboxChildren","checkboxCheckedScreenReaderText","numberOfCheckboxesScreenReaderText","count","numberOfCheckedCheckboxesScreenText","getAttribute","_renderSlotText2","firstFocusableElement","validationMessage","forceLegendUpdate","_hoisted_1$G","_hoisted_2$u","_hoisted_3$q","_hoisted_4$l","_hoisted_5$j","_hoisted_7$d","_hoisted_8$9","_hoisted_9$5","_hoisted_10$5","normalizeProps","guardReactiveProps","_hoisted_6$g","_sfc_main$U","FFieldset","_component_f_fieldset","createSlots","description","Operation","Operation2","_sfc_main$T","FFormModal","deleteItem","modify","updateItem","registerCallbackAfterItemAdd","callbackAfterItemAdd","registerCallbackBeforeItemDelete","callbackBeforeItemDelete","beforeCreate","primaryButtonRight","addNewModalHeader","modifyModalHeader","deleteModalHeader","operation","originalItemToUpdate","isFormModalOpen","isConfirmModalOpen","confirmButtonText","cancelButtonText","confirmDeleteButtons","hasAddSlot","hasDeleteSlot","hasModifySlot","formModalHeader","deep","createItem","onDeleteConfirm","onDeleteClose","onModalClose","onFormModalSubmit","deepClone","_hoisted_1$F","_hoisted_2$t","_component_f_form_modal","ADD","MODIFY","_component_f_confirm_modal","onConfirm","FCrudDatasetInjected","_sfc_main$S","iconName","buttonText","executeAction","_hoisted_1$E","ActivateItemInjected","FTableColumnType","FTableColumnType2","FTableColumnSize","FTableColumnSize2","FTableColumnSort","FTableColumnSort2","addColumn","column","col","setVisibilityColumn","visible","updateSortOrder","columnName","ascending","setSortableColumns","columnNames","foundColumn","sortable","getSortableIconName","getSortableIconClasses","isTableColumnType","FTableInjected","textFieldTableMode","_sfc_main$R","rowHeader","expand","TEXT","SHRINK","EXPAND","UNSORTED","_sfc_render$H","_hoisted_1$D","FSortFilterDatasetInjected","registerCallbackOnSort","registerCallbackOnMount","_sfc_main$Q","forProperty","hasDefaultSlot","_hoisted_1$C","_hoisted_2$s","_hoisted_4$k","_hoisted_5$i","_hoisted_6$f","_hoisted_7$c","_hoisted_3$p","resolveWidthClass$1","words","word","_sfc_main$P","FLabel","labelWidth","selectWidth","rootClass","labelWrapperClass","selectWrapperClass","vModel","_renderSlotText3","_component_f_label","withDirectives","_hoisted_1$B","vModelSelect","computeArrowOffset","inputIconRect","wrapperRect","A","wrapperRightX","iconCenterX","B","C","D","E","F","G","H","I","POPUP_SPACING","_sfc_main$O","arrowPosition","arrowOffset","arrowClass","errorStyle","setArrowOffset","inputIcon","nextElementSibling","arrow","IPopupError","_hoisted_1$A","normalizeStyle","resolveWidthClass","_sfc_main$N","formatter","parser","inputWidth","showErrorPopup","viewValue","lastModelValue","defaultText","descriptionText","descriptionScreenReaderText","discreteDescriptionText","discreteDescriptionScreenReaderText","showPopupError","inputWrapperClass","isModelUpdatedProgrammatically","setViewValueToFormattedValueOrFallbackToValue","getErrorPopupAnchor","input","closePopupError","hasAttribute","onBlur","nativeEvent","newModelValue","resolveNewModelValue","syncViewValueAfterModelUpdate","triggerComponentValidityEvent","onPendingValidity","trimmedViewValue","trim","_this$parser","_this$formatter","validityEvent","_renderSlotText4","parsedValue","formattedValue","_hoisted_1$z","_hoisted_2$r","_hoisted_3$o","_hoisted_5$h","_hoisted_6$e","_hoisted_4$j","vModelDynamic","_component_i_popup_error","_sfc_main$M","FTextField","maxLength","extendedValidation","pasteErrorText","secondEmail","showPasteErrorMessage","configureValidators","onUpdate","onPaste","_renderSlotText5","validatorEmailConfig","email","configureExtendedValidation","validatorEmailMatchesConfig","_component_f_text_field","maxlength","_sfc_main$L","secondPhone","_renderSlotText6","validatorPhoneConfig","phoneNumber","validatorPhoneMatchesConfig","_sfc_main$K","extends","formatNumber","parseNumber","currency","integer","_sfc_main$J","clearableScreenReaderText","canClear","_sfc_main$I","parseBankAccountNumber","bankAccountNumber","_sfc_main$H","parseBankgiro","bankgiro","_sfc_main$G","parseClearingNumber","clearingNumber","defaultFormatter$1","decimals","_sfc_main$F","number","_sfc_main$E","formatPersonnummer","parsePersonnummer","personnummerFormat","personnummerLuhn","_sfc_main$D","parsePlusgiro","plusgiro","_sfc_main$C","formatPostalCode","postalCode","defaultFormatter","formatPercent","_sfc_main$B","parsePercent","percent","minValue","maxValue","_sfc_main$A","parseOrganisationsnummer","organisationsnummer","sortAttribute","compare","attribute","value1","value2","nullCompare","fixOrder","localeCompare","numberCompare","booleanCompare","order","includesAllSearchTerms","filterAttributes","searchTerms","toLocaleLowerCase","searchTerm","searchString","_sfc_main$z","FSelectField","foundAttribute","sortOrders","sortFilterData","tableCallbackOnSort","tableCallbackSortableColumns","sortableAttributes","defaultSortAttribute","showSort","showFilter","placeholderFilter","defaultSortAscending","sortFilterResult","showClearButton","arr","ascendingName","debouncedFilterResultset","filterResultset","filteredData","onChangeSortAttribute","onSearchInput","onClickClearSearch","searchAriaLive","search","_hoisted_1$w","_hoisted_2$q","_hoisted_3$n","_hoisted_4$i","_hoisted_5$g","slotClass","placeholder","_component_f_select_field","_hoisted_6$d","sortOrder","_sfc_main$y","ACTION","columns","rows","keyAttribute","striped","NONE","emptyRow","hasCaption","tableClasses","isEmpty","visibleColumns","hasInitiateColumns","wrapperClasses","callbackOnSort","callbackSortableColumns","rowKey","columnClasses","iconClasses","onClickColumnHeader","DESCENDING","ASCENDING","escapeNewlines","_hoisted_1$v","_hoisted_2$p","_hoisted_4$h","_hoisted_5$f","_hoisted_6$c","_hoisted_3$m","toHandlers","click","innerHTML","row","_hoisted_7$a","_hoisted_8$8","isDayEnabled","passesMinDate","passesMaxDate","passesInvalidDates","invalidDates","passesInvalidWeekdays","invalidWeekdays","limit","isInvalidDatesConfig","dates","isInvalidWeekdaysConfig","updateCalendarValue","newValue","newCalendarValue","calendarValue","isDateEnabled","getDisplayMonth","selectedDate","initialMonth","effectiveDate","_sfc_main$x","FCalendar","FCalendarDay","highlightToday","defaultMinDate","addYears","defaultMaxDate","textFieldValue","textFieldTouched","textFieldValidityRevealed","componentTouched","calendarMonth","shallowRef","isCalendarOpen","validationConfig","calendarInputs","calendarButtonText","prettyDate","popupClass","updateTextFieldValue","dateFormat","dateFormatter","parseDate","onValidityTextField","pendingValidityEvent","onChangeTextField","onClickCalendarButton","onFocusoutTextFieldButton","setTouched","onSelectCalendarDay","calendarButton","onKeyupEsc","waitForScreenReader","onClickCloseCalendarButton","onOpenPopup","navMonth","onClosePopup","onValidationConfigUpdate","minDateConfig","maxDateConfig","isDaySelected","highlightDay","_hoisted_1$u","_hoisted_2$o","onOpen","_component_f_calendar","_component_f_calendar_day","_hoisted_4$g","_sfc_main$w","_sfc_render$w","_sfc_main$v","FExpand","headerTag","notifications","screenReaderNotificationTemplate","expandedClass","hasOutsideSlot","haveNotifications","screenReaderNotificationText","onClickHeadingButton","_hoisted_2$n","_hoisted_3$k","_hoisted_4$f","_hoisted_7$9","_hoisted_8$7","suffix","_hoisted_5$e","_hoisted_1$t","_component_f_expand","_hoisted_6$b","vShow","_sfc_main$u","headerVisualTag","listClass","relatedClass","hasRelatedSlot","headerVisualClass","onClickMinimize","_hoisted_3$j","_hoisted_4$e","_hoisted_6$a","_hoisted_7$8","_hoisted_2$m","_hoisted_1$s","_hoisted_5$d","DEFAULT_ICON","iconMap","_sfc_main$t","fileName","mimeType","originalMimeType","changedMimeTypeText","isMimeTypeChanged","mimeTypeChangedText","_this$changedMimeType","currentMimeType","localChangedMimeTypeText","p","wildcard","_hoisted_1$r","_hoisted_3$i","_hoisted_4$d","_hoisted_6$9","_hoisted_7$7","_hoisted_2$l","_hoisted_5$c","_hoisted_8$6","_sfc_main$s","model","files","labelId","ariaDisabled","_hoisted_1$q","_hoisted_2$k","success","sign","screenReaderContextKey","screenReaderContextDefault","warning","_sfc_main$r","banner","provideScreenReaderContext","layout","headingClass","messageBoxType","bannerType","classType","classIcon","stackTypeClass","screenReaderContext","_hoisted_1$p","headingSlotClass","setRef","getRef","setIsOpen","createFFormProvideOptions","steps","step2","step","_sfc_main$q","FMessageBox","displayError","errorScroll","errorMessageSlotClass","originalSubmit","submitFunction","numberOfTimesSubmitted","isSubmitted","componentsWithErrors","sortedComponents","needsErrorScroll","focusDomElement","messageBoxError","scrollToTop","focusFallbackElement","invalidElement","force","_component_f_message_box","_sfc_main$p","hasArrow","isLastStep","disableErrorLinks","isAnyFieldTouched","hasBeenValid","isOpenedClosed","headerSlotClass","stepErrorId","groupValidity","defaultErrorMessage","displayErrorList","validationGroupKey","loadSelf","updateSelfRefTitle","beforeUpdate","firstSlotClass","headerElement","formStepError","formStepHeader","beforeNavigateToError","hasReceivedValidOrErrorEvent","_hoisted_1$n","_hoisted_2$j","_hoisted_3$g","_sfc_main$o","additionalScreenreaderText","_sfc_main$n","hasFooterSlot","_hoisted_1$l","_hoisted_2$h","_hoisted_3$f","_hoisted_4$c","_sfc_render$n","_sfc_main$m","showHeader","showTopNavigation","showFooter","_hoisted_1$k","_hoisted_2$g","_hoisted_3$e","_hoisted_4$b","_hoisted_5$b","_sfc_render$m","getGridClasses","useLayoutPanel","growToRight","borderDrag","dragStart","dragStartWidth","preferredWidth","minWidth","maxWidth","panelWidth","leftPrimaryClasses","rightPrimaryClasses","updateOptions","_options$initialWidth","_options$minWidth","_options$maxWidth","initialWidth","disableEvent","onMouseUp","cursor","onMouseMove","growDirection","screenX","limitWidth","onBorderMouseDown","selection","getSelection","removeAllRanges","newWidth","updatePrimaryGrid","leftPrimaryElement","rightPrimaryElement","gridClasses","onMounted","onUnmounted","watchEffect","_sfc_main$l","toRefs","offsetTop","navigationStyle","primaryStyle","contentStyle","headers","getElementsByClassName","toggleSideNavigation","_hoisted_2$f","_hoisted_3$d","_hoisted_4$a","_hoisted_6$8","_hoisted_7$6","_hoisted_1$j","_hoisted_5$a","onMousedown","_hoisted_8$5","_hoisted_9$4","_hoisted_10$4","FRightPanelServiceImpl","open","focusedElementBeforeOpenining","emit","openDialog","close","on","off","FLayoutRightPanelService","_sfc_main$k","isAbsolutePositioned","secondaryStyle","onOpenSecondary","onCloseSecondary","openSecondary","onClickCloseSecondary","_hoisted_1$i","_hoisted_2$e","_hoisted_3$c","_hoisted_4$9","_hoisted_5$9","_hoisted_6$7","_hoisted_7$5","_sfc_main$j","FCheckboxField","selectable","checkbox","selectedItems","activeItem","ariaActiveDescendant","getItemId","updateSelectedItemsFromVModel","updateActiveItemFromVModel","getLiElements","ulElement","itemKey","isSelected","itemClasses","isActive","getAriaSelected","onSelect","updateVModelWithSelectedItems","setActiveItem","onItemClick","onItemKeyDown","getAriaLabelledbyId","onItemFocus","onItemBlur","targetIndex","_hoisted_1$h","_hoisted_2$d","_hoisted_3$b","_hoisted_4$8","_hoisted_5$8","_hoisted_6$6","_hoisted_8$4","_hoisted_9$3","_component_f_checkbox_field","_hoisted_7$4","_hoisted_10$3","_sfc_main$i","show","overlay","delay","language","oldFocus","defaultLoadingText","openLoader","closeLoader","listener","saveFocus","addFocusListener","removeFocusListener","restoreFocus","_hoisted_2$c","_sfc_render$i","_hoisted_1$g","_hoisted_3$a","getNewItemIndexFromMenuAction$2","doMenuAction$2","preventKeys$2","_sfc_main$h","focusedItemKey","enableKeyboardNavigation","selectedMenuItemScreenReaderText","lastSelectedItem","newVal","indexOfItemByKey","setFocusedItemIndex","findItemByKey","doClick","anchors","cssClassHighlight","itemAnchor","_hoisted_1$f","_hoisted_2$b","_hoisted_4$7","_hoisted_5$7","iconRight","_hoisted_3$9","menuMoreKey","findOverflowIndex","totalWidth","sum","getNewItemIndexFromMenuAction$1","doMenuAction$1","preventKeys$1","_sfc_main$g","vertical","hasMenuMoreSelectedItems","cssClasses","getAnchor","getSelectedMenuItemScreenReaderText","menuMoreItem","srMenuMoreTextSelectedContents","srMenuMoreTextContents","ariaHasPopup","barElement","barWidth","itemElements","overflowIndex","ccsClassHighlightAnchor","ccsClassHighlightAnchorContainer","_hoisted_1$e","_hoisted_3$8","_hoisted_4$6","_hoisted_5$6","calcOverflowIndexFromIndex","getNewItemIndexFromMenuAction","minIndex","maxIndex","doMenuAction","preventKeys","keyUp","keyDown","arrowKeys","_sfc_main$f","IMenu","IPopupMenu","route","routes","menuMoreScreenReaderText","menuMoreWithSelectedItemsScreenReaderText","menuAriaLabel","popupAriaLabel","ignoreNoOverflow","selectedMenuItemKey","selectedPopupItemKey","popupAnchor","popupOpen","focusedMenuItemKey","focusedPopupMenuItemKey","initPopupNavigationIndex","visibleItems","slice","menuMoreWithSelectedItemsSrText","hasPopupMenuSelectedItems","itemIndex","isWithinMoreMenu","activateInvisibleItem","selectedMenuItemSrText","onOverflow","ignore","shouldReset","shouldIgnore","updateOverflowIndex","refreshSelectedItem","shouldClosePopup","setPopupOpen","popupStatus","_ref3","lastItem","at","doSelectItem","hasOverflow","onSelectMenu","menu","onSelectPopup","doHandleMenuTabKey","setCurrentFocusedItemIndex","doInitPopupNavigationIndex","setFocusedMenuItemKey","setFocusedPopupMenuItemKey","_b","setSelectedMenuItemKey","_component_i_menu","_component_i_popup_menu","EVENTS","_sfc_main$e","isOnline","navigator","onLine","shouldNotRead","updateOnlineStatus","prepend","offline","_hoisted_1$d","_hoisted_2$9","_hoisted_4$5","_hoisted_3$7","_hoisted_5$5","_hoisted_6$5","_sfc_main$d","htmlFor","_hoisted_1$c","_sfc_main$c","_sfc_render$c","_hoisted_1$b","getAltLogoText","hasRouterLink","routerLinkLabel","srStdLogoAltText","srStdRouterLinkLabel","_sfc_main$b","ISkipLink","logoSize","skipLink","skipLinkHref","routerLinkPath","routerLinkName","logoClass","routerLinkTo","path","altLogoText","_hoisted_2$7","_hoisted_3$6","_hoisted_4$4","_hoisted_5$4","_hoisted_6$4","_hoisted_1$a","_component_i_skip_link","_component_router_link","_hoisted_7$3","_hoisted_8$3","MIN_VALUE","MAX_VALUE","clamp","round","_sfc_main$a","valueText","progressValueNow","isFinished","isInProgress","isPending","cssWidth","progressBarClass","progressText","_hoisted_1$9","_sfc_render$a","anyType","_sfc_main$9","_this$sharedName","_hoisted_2$5","_hoisted_3$4","_hoisted_4$3","_hoisted_5$3","_sfc_render$9","_hoisted_1$8","_hoisted_6$3","_sfc_main$8","isHorizontal","indentClass","_sfc_main$7","_hoisted_1$7","_hoisted_2$4","keybindings","fromEntries","focusTrAbove","focusTrBelow","activateRow","tr","activate","useExpandableTable","expandableAttribute","describedby","slots","expandedRows","isExpandableTable","hasExpandableSlot","toggleExpanded","isExpanded","rowAriaExpanded","expandableRowClasses","expandableRows","expandableColumnClasses","indented","getExpandableDescribedby","hasExpandableContent","expandableRows2","forceRepaintIE11","userAgent","display","_sfc_main$6","hover","expandableDescribedby","context","sortFilterDatasetInjected","activateItemInjected","expandableTable","activeRow","selectedRows","hasCheckboxDescription","tableRole","nbOfColumns","columnCount","tbodyElement","trElements","trInteractableElements","onKeydownExpandable","isRelevant","nodeName","parentElement","td","rowDescription","updateVModelWithSelectedRows","rowClasses","isExpandableRow","expandable","_hoisted_2$3","_hoisted_3$3","_hoisted_4$2","_hoisted_5$2","_hoisted_6$2","_hoisted_7$2","_hoisted_8$2","_hoisted_10$2","_hoisted_11$1","_hoisted_12$1","_hoisted_14$1","_hoisted_15$1","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_9$2","_hoisted_13$1","expandableRow","expandableIndex","columnIndex","parentRow","_hoisted_24","_sfc_main$5","softLimit","charactersLeftWarning","resizable","validityClass","charactersLeft","showCharactersLeftWarning","charactersLeftWarningInterpolated","textareaClass","HTMLTextAreaElement","_renderSlotText7","_hoisted_1$5","ANIMATION_DURATION","NO_CSS_CLASSES","CLOSED_CSS_CLASS_OPACITY","CLOSED_CSS_CLASS","ANIMATION_CSS_CLASSES","_sfc_main$4","animate","useVShow","opacity","beforeAnimation","afterAnimation","internalExpanded","isAnimating","timerList","animationClasses","heightStyle","shouldVIf","shouldVShow","openAnimation","openNoAnimation","closeAnimation","closeNoAnimation","getContentHeight","timer","clearTimeout","t1","t2","_hoisted_1$4","_sfc_render$4","_sfc_main$3","screenReaderText","closeButtonText","hasHeader","positionArrow","onClickToggle","borderSize","buttonOffsetLeft","offsetLeft","relativeOffset","_hoisted_1$3","_hoisted_3$2","_hoisted_4$1","_hoisted_5$1","_hoisted_6$1","_hoisted_7$1","_hoisted_2$2","_hoisted_9$1","_hoisted_10$1","FWizardApiInjected","register","unregister","getStepCount","openStep","openNext","cancel","inheritedProps","reindex","dst","stepNumber","addStep","currentOpen","removeStep","_sfc_main$2","wizard","disableInitialFocus","anyOpen","getCurrentOpen","doOpen","_this$steps$find","next","stepToClose","_sfc_render$2","SCROLL_DURATION","ongoingScrollPromise","_sfc_main$1","IAnimateExpand","beforeNext","isOpenedFirstTime","ignoreClick","defaultCurrentStepInformation","totalSteps","animationId","isFinalStep","showLink","cssClass","getCurrentInstance","vnode","DomUtils","isVisibleInViewport","duration","_hoisted_1$1","_hoisted_2$1","_hoisted_3$1","_hoisted_4","_hoisted_6","_hoisted_7","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_5","headerClass","onKeypress","_hoisted_8","_hoisted_9","_component_i_animate_expand","_hoisted_14","isDialogueTreeEndQuestion","userData","_sfc_main","dialogueTree","currentStep","emitChange","onClickedOption","option","question","focusFirst","firstElement","lastStep","_hoisted_1","_hoisted_2","_hoisted_3"],"sources":["../src/components/FBadge/statuses.ts","../src/components/FBadge/FBadge.vue","../src/components/FIcon/FIcon.vue","../src/plugins/test/TestPlugin.ts","../src/plugins/translation/translate.ts","../src/plugins/translation/TranslationPlugin.ts","../src/plugins/translation/use-translate.ts","../../../node_modules/lodash/_listCacheClear.js","../../../node_modules/lodash/eq.js","../../../node_modules/lodash/_assocIndexOf.js","../../../node_modules/lodash/_listCacheDelete.js","../../../node_modules/lodash/_listCacheGet.js","../../../node_modules/lodash/_listCacheHas.js","../../../node_modules/lodash/_listCacheSet.js","../../../node_modules/lodash/_ListCache.js","../../../node_modules/lodash/_stackClear.js","../../../node_modules/lodash/_stackDelete.js","../../../node_modules/lodash/_stackGet.js","../../../node_modules/lodash/_stackHas.js","../../../node_modules/lodash/_freeGlobal.js","../../../node_modules/lodash/_root.js","../../../node_modules/lodash/_Symbol.js","../../../node_modules/lodash/_getRawTag.js","../../../node_modules/lodash/_objectToString.js","../../../node_modules/lodash/_baseGetTag.js","../../../node_modules/lodash/isObject.js","../../../node_modules/lodash/isFunction.js","../../../node_modules/lodash/_coreJsData.js","../../../node_modules/lodash/_isMasked.js","../../../node_modules/lodash/_toSource.js","../../../node_modules/lodash/_baseIsNative.js","../../../node_modules/lodash/_getValue.js","../../../node_modules/lodash/_getNative.js","../../../node_modules/lodash/_Map.js","../../../node_modules/lodash/_nativeCreate.js","../../../node_modules/lodash/_hashClear.js","../../../node_modules/lodash/_hashDelete.js","../../../node_modules/lodash/_hashGet.js","../../../node_modules/lodash/_hashHas.js","../../../node_modules/lodash/_hashSet.js","../../../node_modules/lodash/_Hash.js","../../../node_modules/lodash/_mapCacheClear.js","../../../node_modules/lodash/_isKeyable.js","../../../node_modules/lodash/_getMapData.js","../../../node_modules/lodash/_mapCacheDelete.js","../../../node_modules/lodash/_mapCacheGet.js","../../../node_modules/lodash/_mapCacheHas.js","../../../node_modules/lodash/_mapCacheSet.js","../../../node_modules/lodash/_MapCache.js","../../../node_modules/lodash/_stackSet.js","../../../node_modules/lodash/_Stack.js","../../../node_modules/lodash/_setCacheAdd.js","../../../node_modules/lodash/_setCacheHas.js","../../../node_modules/lodash/_SetCache.js","../../../node_modules/lodash/_arraySome.js","../../../node_modules/lodash/_cacheHas.js","../../../node_modules/lodash/_equalArrays.js","../../../node_modules/lodash/_Uint8Array.js","../../../node_modules/lodash/_mapToArray.js","../../../node_modules/lodash/_setToArray.js","../../../node_modules/lodash/_equalByTag.js","../../../node_modules/lodash/_arrayPush.js","../../../node_modules/lodash/isArray.js","../../../node_modules/lodash/_baseGetAllKeys.js","../../../node_modules/lodash/_arrayFilter.js","../../../node_modules/lodash/stubArray.js","../../../node_modules/lodash/_getSymbols.js","../../../node_modules/lodash/_baseTimes.js","../../../node_modules/lodash/isObjectLike.js","../../../node_modules/lodash/_baseIsArguments.js","../../../node_modules/lodash/isArguments.js","../../../node_modules/lodash/stubFalse.js","../../../node_modules/lodash/isBuffer.js","../../../node_modules/lodash/_isIndex.js","../../../node_modules/lodash/isLength.js","../../../node_modules/lodash/_baseIsTypedArray.js","../../../node_modules/lodash/_baseUnary.js","../../../node_modules/lodash/_nodeUtil.js","../../../node_modules/lodash/isTypedArray.js","../../../node_modules/lodash/_arrayLikeKeys.js","../../../node_modules/lodash/_isPrototype.js","../../../node_modules/lodash/_overArg.js","../../../node_modules/lodash/_nativeKeys.js","../../../node_modules/lodash/_baseKeys.js","../../../node_modules/lodash/isArrayLike.js","../../../node_modules/lodash/keys.js","../../../node_modules/lodash/_getAllKeys.js","../../../node_modules/lodash/_equalObjects.js","../../../node_modules/lodash/_DataView.js","../../../node_modules/lodash/_Promise.js","../../../node_modules/lodash/_Set.js","../../../node_modules/lodash/_WeakMap.js","../../../node_modules/lodash/_getTag.js","../../../node_modules/lodash/_baseIsEqualDeep.js","../../../node_modules/lodash/_baseIsEqual.js","../../../node_modules/lodash/isEqual.js","../src/utils/ListUtils.ts","../src/utils/TableScroll.ts","../src/utils/render-slot-text.ts","../src/utils/ValidationUtils.ts","../src/utils/VueRefUtils.ts","../src/utils/empty-table-row.ts","../src/utils/event-bus.ts","../src/config/FKUIConfig.ts","../src/config/config.ts","../src/config/context.ts","../src/utils/mount-component/mount-component.ts","../src/utils/open-modal/open-modal.ts","../src/utils/form-modal/form-modal.ts","../src/utils/open-modal/modal-reason.ts","../src/components/FModal/sizes.ts","../src/components/FModal/focus-element.ts","../src/components/FModal/FModal.vue","../src/components/FModal/modal-button.ts","../src/components/FModal/FConfirmModal/FConfirmModal.vue","../src/internal-components/IFlex/constants.ts","../src/internal-components/IFlex/IFlex.vue","../src/internal-components/IFlex/IFlexItem.vue","../src/components/FErrorList/focus-error.ts","../src/components/FErrorList/FErrorList.vue","../src/components/FForm/FormUtils.ts","../src/components/FValidationGroup/FValidationGroup.vue","../src/components/FValidationForm/types.ts","../src/components/FValidationForm/FValidationForm.vue","../src/components/FModal/FFormModal/FFormModal.vue","../src/utils/confirm-modal/confirm-modal.ts","../src/utils/focus.ts","../src/utils/get-input-element.ts","../src/utils/has-slot.ts","../src/utils/parent-by-name/find-parent-by-name.ts","../src/utils/parent-by-name/get-parent-by-name.ts","../src/utils/parent-by-name/has-parent-by-name.ts","../src/types/ErrorData.ts","../src/types/ErrorViewData.ts","../src/types/FForm/FormErrorList.ts","../src/types/FForm/FormStepData.ts","../src/types/MenuAction.ts","../src/utils/action-from-keyboard-event.ts","../src/plugins/validation/ValidationPlugin.ts","../src/plugins/error/ErrorPlugin.ts","../src/plugins/error/FErrorPage.vue","../src/plugins/error/FErrorHandlingApp.vue","../src/internal-components/calendar/is-invalid-month.ts","../src/internal-components/calendar/get-message.ts","../src/internal-components/calendar/ICalendarNavbar.vue","../src/internal-components/calendar/get-day-offset.ts","../src/internal-components/calendar/ICalendarMonthGrid.vue","../src/internal-components/calendar/get-day-step.ts","../src/internal-components/calendar/get-day-tabindex.ts","../src/internal-components/calendar/ICalendarMonth.vue","../src/components/FCalendar/FCalendar.vue","../src/components/FCalendar/get-calendar-day-sr-text.ts","../src/components/FCalendar/FCalendarDay.vue","../src/internal-components/IPopup/IPopupUtils.ts","../src/internal-components/IPopup/get-container.ts","../src/internal-components/IPopup/get-focusable-element.ts","../src/internal-components/IPopup/constants.ts","../src/internal-components/IPopup/is-teleport-disabled.ts","../src/internal-components/IPopup/IPopup.vue","../src/components/FContextMenu/contextmenuitem.ts","../src/components/FContextMenu/contextmenu-logic.ts","../src/components/FContextMenu/FContextMenu.vue","../src/components/FCheckboxField/FCheckboxField.vue","../src/components/FFieldset/FFieldsetProvide.ts","../src/components/FFieldset/label-classes.ts","../src/components/FFieldset/content-classes.ts","../src/components/FFieldset/FFieldset.vue","../src/components/FCheckboxField/FCheckboxGroup.vue","../src/components/FCrudDataset/FCrudDataset.vue","../src/components/FCrudDataset/FCrudDatasetInterface.ts","../src/components/FCrudDataset/FCrudButton.vue","../src/components/FCrudDataset/ActivateItemInterface.ts","../src/components/FTableColumn/FTableColumnData.ts","../src/components/FTableColumn/FTableInterface.ts","../src/components/FTableColumn/FTableColumn.vue","../src/components/FSortFilterDataset/FSortFilterDatasetInterface.ts","../src/components/FLabel/FLabel.vue","../src/components/FSelectField/FSelectField.logic.ts","../src/components/FSelectField/FSelectField.vue","../src/internal-components/IPopupError/compute-arrow-offset.ts","../src/internal-components/IPopupError/IPopupError.vue","../src/components/FTextField/FTextField.logic.ts","../src/components/FTextField/FTextField.vue","../src/components/FTextField/extendedTextFields/FEmailTextField/FEmailTextField.vue","../src/components/FTextField/extendedTextFields/FPhoneTextField/FPhoneTextField.vue","../src/components/FTextField/extendedTextFields/FCurrencyTextField/FCurrencyTextField.vue","../src/components/FTextField/extendedTextFields/FSearchTextField/FSearchTextField.vue","../src/components/FTextField/extendedTextFields/FBankAccountNumberTextField/FBankAccountNumberTextField.vue","../src/components/FTextField/extendedTextFields/FBankgiroTextField/FBankgiroTextField.vue","../src/components/FTextField/extendedTextFields/FClearingnumberTextField/FClearingnumberTextField.vue","../src/components/FTextField/extendedTextFields/FNumericTextField/FNumericTextField.vue","../src/components/FTextField/extendedTextFields/FPersonnummerTextField/FPersonnummerTextField.vue","../src/components/FTextField/extendedTextFields/FPlusgiroTextField/FPlusgiroTextField.vue","../src/components/FTextField/extendedTextFields/FPostalCodeTextField/FPostalCodeTextField.vue","../src/components/FTextField/extendedTextFields/FPercentTextField/FPercentTextField.vue","../src/components/FTextField/extendedTextFields/FOrganisationsnummerTextField/FOrganisationsnummerTextField.vue","../src/components/FSortFilterDataset/FSortFilterSorter.ts","../src/components/FSortFilterDataset/FSortFilterFilter.ts","../src/components/FSortFilterDataset/FSortFilterDataset.vue","../src/components/FDataTable/FDataTable.vue","../src/components/FDatepickerField/is-day-enabled/is-day-enabled.ts","../src/components/FDatepickerField/update-calendar-value.ts","../src/components/FDatepickerField/get-display-month.ts","../src/components/FDatepickerField/FDatepickerField.vue","../src/components/FExpand/FExpand.vue","../src/components/FExpandablePanel/FExpandablePanel.vue","../src/components/FExpandableParagraph/FExpandableParagraph.vue","../src/components/FFileItem/FFileItem.vue","../src/components/FFileSelector/FFileSelector.vue","../src/components/FMessageBox/FMessageBox.vue","../src/components/FForm/FFormProvide.ts","../src/components/FForm/FForm.vue","../src/components/FForm/FFormStep.vue","../src/components/FForm/FFormStepButton.vue","../src/components/FCard/FCard.vue","../src/components/FLayoutApplicationTemplate/FLayoutApplicationTemplate.vue","../src/components/FLayoutLeftPanel/get-grid-classes.ts","../src/components/FLayoutLeftPanel/FLayoutLeftPanelMixin.ts","../src/components/FLayoutLeftPanel/FLayoutLeftPanel.vue","../src/components/FLayoutRightPanel/services/FLayoutRightPanelService.ts","../src/components/FLayoutRightPanel/FLayoutRightPanel.vue","../src/components/FList/FList.vue","../src/components/FLoader/FLoader.vue","../src/internal-components/IPopupMenu/ipopupmenu-logic.ts","../src/internal-components/IPopupMenu/IPopupMenu.vue","../src/internal-components/IMenu/imenu-utils.ts","../src/internal-components/IMenu/imenu-logic.ts","../src/internal-components/IMenu/IMenu.vue","../src/components/FNavigationMenu/navigation-menu-utils.ts","../src/components/FNavigationMenu/navigation-menu-logic.ts","../src/components/FNavigationMenu/FNavigationMenu.vue","../src/components/FOffline/FOffline.vue","../src/components/FOutputField/FOutputField.vue","../src/internal-components/ISkipLink/ISkipLink.vue","../src/components/FPageHeader/get-alt-text.ts","../src/components/FPageHeader/FPageHeader.vue","../src/components/FProgressbar/FProgressbar.vue","../src/components/FRadioField/FRadioField.vue","../src/components/FRadioField/FRadioGroup.vue","../src/components/FStaticField/FStaticField.vue","../src/components/FInteractiveTable/FTableKeybindings.ts","../src/components/FInteractiveTable/useExpandableTable.ts","../src/components/FInteractiveTable/FInteractiveTable.vue","../src/components/FTextareaField/FTextareaField.vue","../src/internal-components/IAnimateExpand/IAnimateExpand.vue","../src/components/FTooltip/FTooltip.vue","../src/components/FWizard/FWizardApi.ts","../src/components/FWizard/FWizard.vue","../src/components/FWizard/FWizardStep.vue","../src/components/FDialogueTree/FDialogueTreeModel.ts","../src/components/FDialogueTree/FDialogueTree.vue"],"sourcesContent":["export const statuses = [\"default\", \"warning\", \"error\", \"success\", \"info\"];\n","<template>\n <div class=\"badge\" :class=\"badgeClass\">\n <!-- @slot Slot for text to display in the badge. -->\n <slot name=\"default\"></slot>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from \"vue\";\nimport { statuses } from \"./statuses\";\n\nexport default defineComponent({\n name: \"FBadge\",\n props: {\n /**\n * The status of the badge, can be either 'default', 'warning', 'error', 'success' or 'info'.\n *\n */\n status: {\n type: String,\n default: \"default\",\n validator: function (value: string) {\n return statuses.includes(value);\n },\n },\n /**\n * If badge should be inverted.\n *\n */\n inverted: {\n type: Boolean,\n default: false,\n },\n },\n computed: {\n badgeClass(): string {\n return this.inverted ? `badge--${this.status}-inverted` : `badge--${this.status}`;\n },\n },\n});\n</script>\n","<template>\n <!-- [html-validate-disable-block fkui/prefer-ficon -- this is the FIcon component]-->\n <svg v-bind=\"$attrs\" focusable=\"false\" class=\"icon\" :class=\"[spriteKey, ...modifiers]\" :aria-hidden=\"ariaHidden\">\n <slot></slot>\n <use :xlink:href=\"spriteId\" />\n </svg>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, type PropType } from \"vue\";\n\nconst Flip = [\"horizontal\", \"vertical\"];\nconst Rotate = [\"90\", \"180\", \"270\"];\n\nexport default defineComponent({\n name: \"FIcon\",\n inheritAttrs: false,\n props: {\n /**\n * Icon name.\n */\n name: {\n type: String,\n required: true,\n },\n /**\n * fk-icon library\n */\n library: {\n type: String,\n required: false,\n default: \"f\",\n },\n /**\n * Flip icon horizontally or vertically.\n *\n * Must be set to one of:\n *\n * - `horizontal`\n * - `vertical`\n */\n flip: {\n type: String as PropType<string>,\n default: null,\n required: false,\n validator(value: string): boolean {\n return Flip.includes(value);\n },\n },\n /**\n * Rotate icon.\n *\n * Must be set to one of:\n *\n * - `90`\n * - `180`\n * - `270`\n */\n rotate: {\n type: String as PropType<string>,\n default: null,\n required: false,\n validator(value: string): boolean {\n return Rotate.includes(value);\n },\n },\n },\n computed: {\n spriteKey(): string {\n return `${this.library}-icon-${this.name}`;\n },\n spriteId(): string {\n return `#${this.spriteKey}`;\n },\n modifiers(): string[] {\n const classes = [];\n if (this.flip) {\n classes.push(`icon--flip-${this.flip}`);\n }\n if (this.rotate) {\n classes.push(`icon--rotate-${this.rotate}`);\n }\n return classes;\n },\n ariaHidden(): \"true\" | undefined {\n const slotUsed = Boolean(this.$slots.default);\n const ariaLabel = this.$attrs[\"aria-label\"] !== undefined;\n const ariaLabelledby = this.$attrs[\"aria-labelledby\"] !== undefined;\n const ariaDescription = this.$attrs[\"aria-description\"] !== undefined;\n const ariaDescribedby = this.$attrs[\"aria-describedby\"] !== undefined;\n const hasText = slotUsed || ariaLabel || ariaLabelledby || ariaDescription || ariaDescribedby;\n return hasText ? undefined : \"true\";\n },\n },\n});\n</script>\n","import {\n type App,\n type Directive,\n type DirectiveBinding,\n type Plugin,\n} from \"vue\";\n\nconst DATA_TEST_ATTRIBUTE_NAME = \"data-test\";\n\nfunction throwErrorIfEmpty(value: unknown): never | void {\n if (!value) {\n throw new Error(`Did you forgot to add a value to v-test?`);\n }\n}\n\nconst TestDirective: Directive<HTMLElement, string> = {\n mounted(el: HTMLElement, { value }: DirectiveBinding): void {\n throwErrorIfEmpty(value);\n el.setAttribute(DATA_TEST_ATTRIBUTE_NAME, value);\n },\n updated(el: HTMLElement, { value }: DirectiveBinding): void {\n throwErrorIfEmpty(value);\n el.setAttribute(DATA_TEST_ATTRIBUTE_NAME, value);\n },\n};\n\n/**\n * @public\n */\nexport const TestPlugin: Plugin = {\n install(app: App) {\n app.directive(\"test\", TestDirective);\n },\n};\n","import { TranslationService } from \"@fkui/logic\";\n\n/**\n * @internal\n */\nexport function translate(\n key: string,\n defaultValueOrArgs?: string | Record<string, unknown>,\n args?: Record<string, unknown>,\n): string {\n const { provider } = TranslationService;\n return provider.translate(key, defaultValueOrArgs, args);\n}\n","import { type App, type ComponentOptions, type Plugin } from \"vue\";\nimport { translate } from \"./translate\";\nimport { TranslateFunction } from \"./translate-function\";\n\ndeclare module \"vue\" {\n interface ComponentCustomProperties {\n $t: TranslateFunction;\n }\n}\n\ndeclare module \"@vue/runtime-core\" {\n interface ComponentCustomProperties {\n $t: TranslateFunction;\n }\n}\n\n/**\n * @public\n */\nexport const TranslationMixin: ComponentOptions = {\n methods: {\n $t: translate,\n },\n};\n\n/**\n * @public\n */\nexport const TranslationPlugin: Plugin = {\n install(app: App) {\n app.mixin(TranslationMixin);\n },\n};\n","import { type TranslateFunction } from \"./translate-function\";\nimport { translate } from \"./translate\";\n\n/**\n * Translation function.\n * @public\n */\nexport function useTranslate(): TranslateFunction {\n return translate;\n}\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n","import { isSet } from \"@fkui/logic\";\nimport { type ListItem, type ListArray } from \"../types\";\n\n/**\n * @public\n */\nexport function itemEquals<T extends object, K extends keyof T>(\n item1: ListItem<T> | undefined,\n item2: ListItem<T> | undefined,\n compareAttribute: K,\n): boolean {\n if (!isSet(item1) || !isSet(item2)) {\n return false;\n }\n\n if (item1 === item2) {\n return true;\n }\n\n return item1[compareAttribute] === item2[compareAttribute];\n}\n\n/**\n * @public\n */\nexport function includeItem<T extends object, K extends keyof T>(\n item: ListItem<T> | undefined,\n itemList: ListArray<T> | undefined,\n compareAttribute: K,\n): boolean {\n if (!isSet(item) || !isSet(itemList)) {\n return false;\n }\n const itemCompareValue = item[compareAttribute];\n const match = itemList.find((it) => {\n return it[compareAttribute] === itemCompareValue;\n });\n return Boolean(match);\n}\n\n/**\n * @public\n */\nexport function handleKeyboardFocusNavigation(\n key: string,\n focusedElement: HTMLElement,\n focusableElements: Element[],\n): void {\n let tabPosition = focusableElements.indexOf(focusedElement);\n const keyDown = [\"ArrowDown\", \"Down\"];\n const keyUp = [\"ArrowUp\", \"Up\"];\n\n if (keyDown.includes(key)) {\n tabPosition++;\n if (tabPosition === focusableElements.length) {\n tabPosition = 0;\n }\n }\n\n if (keyUp.includes(key)) {\n tabPosition--;\n if (tabPosition === -1) {\n tabPosition = focusableElements.length - 1;\n }\n }\n\n if (focusableElements[tabPosition]) {\n (focusableElements[tabPosition] as HTMLElement).focus();\n }\n}\n","/**\n * @public\n */\nexport enum TableScroll {\n HORIZONTAL = \"horizontal\",\n VERTICAL = \"vertical\",\n BOTH = \"both\",\n NONE = \"none\",\n}\n\nconst scrollClasses: Record<TableScroll, string[]> = {\n [TableScroll.HORIZONTAL]: [\"table__scroll\", \"table__scroll--horizontal\"],\n [TableScroll.VERTICAL]: [\"table__scroll\", \"table__scroll--vertical\"],\n [TableScroll.BOTH]: [\n \"table__scroll\",\n \"table__scroll--horizontal\",\n \"table__scroll--vertical\",\n ],\n [TableScroll.NONE]: [],\n};\n\n/**\n * Get list of classes to apply based on what scrolling is requested.\n *\n * @public\n */\nexport function tableScrollClasses(val: TableScroll): string[] {\n return scrollClasses[val];\n}\n","import {\n type Slot,\n type VNode,\n type VNodeArrayChildren,\n Comment,\n isVNode,\n} from \"vue\";\n\n/**\n * @public\n */\nexport interface RenderSlotOptions {\n /**\n * List of classes to exclude when extracting slot text.\n *\n * Default: `[\"sr-only\"]`\n */\n stripClasses: string[];\n}\n\nconst defaultOptions: RenderSlotOptions = {\n stripClasses: [\"sr-only\"],\n};\n\n/**\n * Trims and collapses multiple whitespace (including newlines) to a single\n * space\n */\nfunction collapseWhitespace(text: string): string {\n return text.replace(/\\s+/gm, \" \").replace(/(^ | $)/g, \"\");\n}\n\nfunction intersection<T>(a: T[], b: T[]): T[] {\n return a.filter((it) => b.includes(it));\n}\n\nfunction excludeClass(\n exclude: string[],\n): <T extends VNode>(node: T) => boolean {\n return (node) => {\n if (typeof node.props?.class !== \"string\") {\n return true;\n }\n const classes = node.props.class.split(/\\s+/);\n const matches = intersection(classes, exclude);\n return matches.length === 0;\n };\n}\n\nfunction excludeComment<T extends VNode>(node: T): boolean {\n return node.type !== Comment;\n}\n\nfunction getTextContent(\n children: VNodeArrayChildren,\n options: RenderSlotOptions,\n): string {\n return children\n .filter(isVNode)\n .filter(excludeComment)\n .filter(excludeClass(options.stripClasses))\n .map((child) => {\n if (Array.isArray(child.children)) {\n return getTextContent(child.children, options);\n }\n if (typeof child.children === \"string\") {\n return child.children;\n }\n })\n .join(\"\");\n}\n\n/**\n * Pragmatically render slot content and return result as a string. Leading and\n * trailing whitespace is trimmed and internal whitespace is collapsed. Any\n * elements with the `sr-only` class will be ignored.\n *\n * Typical usage:\n *\n * ```ts\n * const slot = this.$slots[\"my-slot\"];\n * const text = renderSlotText(slot, { value: 'foobar' });\n * ```\n *\n * @public\n * @param render - Slot function.\n * @param props - Optional props to pass to render function.\n * @param options - Options\n * @returns Text content or undefined if render function was not found.\n */\nexport function renderSlotText(\n render: Slot | undefined,\n props: Record<string, unknown> = {},\n options?: Partial<RenderSlotOptions>,\n): string | undefined {\n if (!render) {\n return undefined;\n }\n\n const nodes = render(props);\n if (nodes.length === 0) {\n return undefined;\n }\n\n return collapseWhitespace(\n getTextContent(nodes, { ...defaultOptions, ...options }),\n );\n}\n","import { type Slot } from \"vue\";\nimport { type ValidatableHTMLElement } from \"@fkui/logic\";\nimport { ComponentUnmountEvent, type ComponentValidityEvent } from \"../types\";\nimport { renderSlotText } from \"./render-slot-text\";\n\n/**\n * Extracts plain text from given slot.\n * Supports only a flat structure of elements, e.g.\n * `<template v-slot:label>An <b>element</b> in the text</template>`\n * will return \"An element in the text.\"\n *\n * @public\n * @deprecated Use `renderSlotText` instead.\n * @param slot - slot to extract text from\n */\nexport function getTextFromScopedSlot(slot: Slot): string {\n return renderSlotText(slot) ?? \"\";\n}\n\n/**\n * Dispatch an ComponentValidityEvent to the given element.\n *\n * @public\n * @param element - the element to dispatch event to\n * @param detail - the event detail\n */\nexport function dispatchComponentValidityEvent(\n element: Element,\n detail: ComponentValidityEvent,\n): void {\n element.dispatchEvent(\n new CustomEvent<ComponentValidityEvent>(\"component-validity\", {\n detail,\n bubbles: true,\n }),\n );\n}\n\n/**\n * Dispatch an ComponentUnmountEvent to the given element.\n *\n * @internal\n * @param element - the element to dispatch event to\n */\nexport function dispatchComponentUnmountEvent(\n element: ValidatableHTMLElement,\n): void {\n const event = new CustomEvent<ComponentUnmountEvent>(\"component-unmount\", {\n detail: { elementId: element.id },\n bubbles: true,\n });\n element.dispatchEvent(event);\n}\n","import { type ComponentPublicInstance } from \"vue\";\nimport { isSet } from \"@fkui/logic\";\n\n/**\n * Verifies that a ref is a single `Element` and nothing else.\n *\n * @public\n * @param value - The value to type check.\n * @returns `true` if the ref is an `Element`, otherwise false.\n */\nexport function refIsElement(value: unknown): value is Element {\n return value instanceof Element;\n}\n\n/**\n * Verifies that a ref is an array containing at least one `Element`.\n *\n * @public\n * @param value - The value to type check.\n * @returns `true` if the ref is an `Element` array with at least one item,\n * otherwise false.\n */\nexport function refIsElementArray(value: unknown): value is Element[] {\n return (\n Array.isArray(value) && value.length > 0 && value[0] instanceof Element\n );\n}\n\n/**\n * Verifies that a ref is an array containing at least one `HTMLElement`.\n *\n * @public\n * @param value - The value to type check.\n * @returns `true` if the ref is an `HTMLElement` array with at least one item,\n * otherwise false.\n */\nexport function refIsHTMLElementArray(value: unknown): value is HTMLElement[] {\n return (\n Array.isArray(value) &&\n value.length > 0 &&\n value[0] instanceof HTMLElement\n );\n}\n\n/**\n * Verifies that a ref is a single Vue component and nothing else.\n *\n * @public\n * @param value - The value to type check.\n * @returns `true` if the ref is a `Vue` (component), otherwise false.\n */\nexport function refIsVue(value: unknown): value is ComponentPublicInstance {\n return (value as ComponentPublicInstance)?.$el !== undefined;\n}\n\n/**\n * Verifies that a ref is an array containing at least one Vue component.\n *\n * @public\n * @param value - The value to type check.\n * @returns `true` if the ref is a `Vue` (component) array with at least one\n * item, otherwise false.\n */\nexport function refIsVueArray(\n value: unknown,\n): value is ComponentPublicInstance[] {\n return Array.isArray(value) && value.length > 0 && refIsVue(value[0]);\n}\n\n/**\n * Gets an array of `Element` items from a ref. If there are none, the array\n * returned will be empty rather than `undefined`.\n *\n * @public\n * @param ref - The ref to extract `Element` items from.\n * @returns An `Array` of `Element` items. Possibly empty.\n */\nexport function getElementsFromVueRef(ref: unknown): Element[] {\n let result: Element[] = [];\n\n if (refIsVueArray(ref)) {\n result = ref.map((vueRef) => vueRef.$el);\n } else if (refIsElementArray(ref)) {\n result = ref;\n } else if (isSet(ref)) {\n result = [getElementFromVueRef(ref)];\n }\n\n return result;\n}\n\n/**\n * Gets an array of `HTMLElement` items from a ref. If there are none, the array\n * returned will be empty rather than `undefined`.\n * The items are sorted according to the attribute data-ref-index. Elements missing data-ref-index will be sorted as -Infinity.\n *\n * @public\n * @param ref - The ref to extract `HTMLElement` items from.\n * @returns An `Array` of `HTMLElement` items. Possibly empty.\n * @throws An error if an `HTMLElement` could not be found from a valid ref.\n */\nexport function getSortedHTMLElementsFromVueRef(ref: unknown): HTMLElement[] {\n const htmlElements = getHTMLElementsFromVueRef(ref);\n htmlElements.sort((lhs, rhs) => {\n const lhsIndex = parseIntOrDefault(lhs.dataset.refIndex, -Infinity);\n const rhsIndex = parseIntOrDefault(rhs.dataset.refIndex, -Infinity);\n // compare first to avoid NaN when subtracting equal infinities\n return lhsIndex === rhsIndex ? 0 : lhsIndex - rhsIndex;\n });\n return htmlElements;\n}\n\nfunction parseIntOrDefault(\n value: string | undefined,\n defaultValue: number,\n): number {\n if (typeof value === \"string\") {\n const parsed = parseInt(value, 10);\n if (!isNaN(parsed)) {\n return parsed;\n }\n }\n return defaultValue;\n}\n\n/**\n * Gets an array of `HTMLElement` items from a ref. If there are none, the array\n * returned will be empty rather than `undefined`.\n *\n * @public\n * @param ref - The ref to extract `HTMLElement` items from.\n * @returns An `Array` of `HTMLElement` items. Possibly empty.\n * @throws An error if an `HTMLElement` could not be found from a valid ref.\n */\nexport function getHTMLElementsFromVueRef(ref: unknown): HTMLElement[] {\n let result: HTMLElement[] = [];\n\n if (isEmptyArray(ref)) {\n result = [];\n } else if (refIsVueArray(ref)) {\n result = ref.map((vueRef) => vueRef.$el as HTMLElement);\n } else if (refIsHTMLElementArray(ref)) {\n result = [...ref];\n } else if (isSet(ref)) {\n result = [getHTMLElementFromVueRef(ref)];\n }\n\n return result;\n}\n\nfunction isEmptyArray(value: unknown): boolean {\n return Array.isArray(value) && value.length === 0;\n}\n\n/**\n * Find an `Element` from a ref, provided it is defined and not an array.\n *\n * @public\n * @param ref - The ref to extract the `Element` from.\n * @returns An `Element` if ref is `Vue` or `Element`. Otherwise `undefined`.\n */\nexport function findElementFromVueRef(ref: unknown): Element | undefined {\n if (refIsElement(ref)) {\n return ref;\n } else if (refIsVue(ref)) {\n return ref.$el;\n }\n}\n\n/**\n * Find an `HTMLElement` from a ref, provided it is defined and not an array.\n *\n * @public\n * @param ref - The ref to extract the `HTMLElement` from.\n * @returns An `HTMLElement` if ref is `Vue` or `HTMLElement`. Otherwise `undefined`.\n */\nexport function findHTMLElementFromVueRef(\n ref: unknown,\n): HTMLElement | undefined {\n const result = findElementFromVueRef(ref);\n if (result instanceof HTMLElement) {\n return result as HTMLElement;\n }\n return undefined;\n}\n\n/**\n * Gets an `Element` a ref, provided it is defined and not an array.\n *\n * @public\n * @param ref - The ref to extract the `Element` from.\n * @returns An `Element` if ref is `Vue` or `Element`.\n * @throws An error if an `Element` could not be found.\n */\nexport function getElementFromVueRef(ref: unknown): Element | never {\n const element = findElementFromVueRef(ref);\n\n if (!isSet(element)) {\n throw new Error(`Unable to find element from ${ref}.`);\n }\n\n return element;\n}\n\n/**\n * Gets an `HTMLElement` a ref, provided it is defined and not an array.\n *\n * @public\n * @param ref - The ref to extract the `HTMLElement` from.\n * @returns An `HTMLElement` if ref is `Vue` or `Element`.\n * @throws An error if an `HTMLElement` could not be found.\n */\nexport function getHTMLElementFromVueRef(ref: unknown): HTMLElement | never {\n const element = findElementFromVueRef(ref);\n\n if (!isSet(element)) {\n throw new Error(`Unable to find element from ${ref}.`);\n }\n\n if (element instanceof HTMLElement) {\n return element;\n }\n\n throw new Error(`Not instance of HTMLELement ${ref}.`);\n}\n","/**\n * @internal\n */\nexport interface EmptyTableRow {\n (): string;\n [Symbol.toPrimitive](hint: string): unknown;\n [key: string]: EmptyTableRow;\n}\n\n/**\n * Creates an empty item for the table components which allows to recursively\n * lookup any property even deeply nested.\n *\n * E.g. both `row.foo` and `row.foo.bar.baz` will be resolvable and not throw\n * any errors about missing properties.\n *\n * @internal\n */\nexport function emptyTableRow(textContent = \"\"): EmptyTableRow {\n function toPrimitive(hint: string): string | null {\n if (hint === \"string\") {\n return textContent;\n } else {\n return null;\n }\n }\n function toString(): string {\n return textContent;\n }\n const proxy = new Proxy(() => textContent, {\n apply() {\n return textContent;\n },\n get(_target, prop) {\n switch (prop) {\n case Symbol.toPrimitive:\n return toPrimitive;\n case \"toString\":\n return toString;\n case \"__v_isRef\":\n return false;\n default:\n return proxy;\n }\n },\n }) as EmptyTableRow;\n return proxy;\n}\n","/**\n * Interface used to create type-safe events for `EventBus`.\n *\n * Augment this interface in your application:\n *\n * ```ts\n * declare module \"@fkui/vue\" {\n * interface EventBusMap {\n * \"my-event\": [name: string, age: number];\n * }\n * }\n * ```\n *\n * @public\n */\n/* eslint-disable @typescript-eslint/no-empty-object-type -- augmented by consumers */\nexport interface EventBusMap {\n /* augmented by API consumers */\n}\n\n/**\n * API Interface for EventBus.\n *\n * @public\n */\nexport interface EventBus {\n /**\n * Emit event. All listeners for this event will notified in the same order\n * they where added. The listeners runs synchronous.\n */\n $emit<K extends keyof EventBusMap>(type: K, ...args: EventBusMap[K]): void;\n $emit(type: string, ...args: unknown[]): void;\n\n /**\n * Add a new event listener.\n */\n $on<K extends keyof EventBusMap>(\n type: K,\n callback: (...args: EventBusMap[K]) => void,\n ): void;\n $on(type: string, callback: (...args: unknown[]) => void): void;\n\n /**\n * Remove previously added event listener. Make sure to pass in the same\n * callback as you used when adding the listener.\n */\n $off<K extends keyof EventBusMap>(\n type: K,\n callback: (...args: EventBusMap[K]) => void,\n ): void;\n $off(type: string, callback: (data: unknown) => void): void;\n}\n\nfunction lazyLoad<T>(fn: () => T): () => T {\n let cache: T;\n return () => cache ?? (cache = fn());\n}\n\nconst eventTarget = lazyLoad(() => new EventTarget());\nconst fn = new Map();\n\nfunction $emit(type: string, ...args: unknown[]): void {\n const event = new CustomEvent(type, { detail: args });\n eventTarget().dispatchEvent(event);\n}\n\nfunction $on(type: string, callback: (...data: unknown[]) => void): void {\n fn.set(callback, (event: CustomEvent) => callback(...event.detail));\n eventTarget().addEventListener(type, fn.get(callback));\n}\n\nfunction $off(type: string, callback: (...data: unknown[]) => void): void {\n eventTarget().removeEventListener(type, fn.get(callback));\n fn.delete(callback);\n}\n\n/**\n * @public\n */\nexport const EventBus: EventBus = {\n $emit,\n $on,\n $off,\n};\n","/**\n * @public\n */\nexport enum FKUIConfigButtonOrder {\n LEFT_TO_RIGHT,\n RIGHT_TO_LEFT,\n}\n\n/**\n * @public\n */\nexport interface FKUIConfig {\n buttonOrder: FKUIConfigButtonOrder;\n teleportTarget: string | Element;\n /**\n * @deprecated Use `teleportTarget` instead.\n */\n modalTarget: string | Element | null;\n /**\n * @deprecated Use `teleportTarget` instead.\n */\n popupTarget: string | Element | null;\n get popupContainer(): HTMLElement;\n set popupContainer(value: string | Element);\n production: boolean;\n}\n","import { configLogic } from \"@fkui/logic\";\nimport { type FKUIConfig, FKUIConfigButtonOrder } from \"./FKUIConfig\";\n\nlet popupContainer: string | HTMLElement = document.body;\nlet production = true;\n\n/**\n * @public\n */\nexport const config: FKUIConfig = {\n buttonOrder: FKUIConfigButtonOrder.LEFT_TO_RIGHT,\n teleportTarget: document.body,\n modalTarget: null,\n popupTarget: null,\n\n get popupContainer(): HTMLElement {\n if (typeof popupContainer === \"string\") {\n const element = document.querySelector<HTMLElement>(popupContainer);\n if (!element) {\n throw new Error(\n `Failed to find popupContainer element from selector \"${popupContainer}\"`,\n );\n }\n return element;\n } else {\n return popupContainer;\n }\n },\n\n set popupContainer(value: string | HTMLElement) {\n popupContainer = value;\n },\n\n set production(value: boolean) {\n production = value;\n configLogic.production = value;\n },\n get production(): boolean {\n return production;\n },\n};\n","import { type App, type AppContext } from \"vue\";\n\ndeclare module \"@vue/runtime-core\" {\n interface ComponentCustomProperties {\n $fkui?: FKUIContext;\n }\n}\n\n/**\n * @public\n */\nexport interface FKUIContext {\n appContext: AppContext;\n}\n\n/**\n * @public\n */\nexport interface MaybeWithFKUIContext {\n $fkui?: FKUIContext;\n}\n\n/**\n * @public\n * @param app - Running app\n */\nexport function setRunningContext(app: App): void {\n const fkuiContext: FKUIContext = {\n appContext: app._context,\n };\n\n app.config.globalProperties.$fkui = fkuiContext;\n}\n\n/**\n * @internal\n * @param callingInstance - Calling component\n */\nexport function getRunningContext(\n callingInstance: MaybeWithFKUIContext,\n): FKUIContext {\n if (!callingInstance.$fkui) {\n throw new Error(\n \"Application running context is unset. Call `setRunningContext(app)` after `app = createApp(..)`.\",\n );\n }\n\n return callingInstance.$fkui;\n}\n","import { type App, createApp } from \"vue\";\nimport { type MaybeComponent } from \"../maybe-component\";\nimport { MaybeWithFKUIContext, getRunningContext } from \"../../config\";\n\n/**\n * @public\n */\nexport interface MountOptions {\n /**\n * Element to mount component under. Default `<body>`.\n */\n attachTo?: string | Element;\n\n /**\n * Attach as first child. Default `false`.\n */\n attachFirst?: boolean;\n}\n\nfunction getTargetElement(target: string | Element | undefined): Element {\n if (!target) {\n return document.body;\n }\n if (typeof target !== \"string\") {\n return target;\n }\n const element = document.querySelector(target);\n if (!element) {\n throw new Error(\n `mountComponent(..) requires a target element (selector \"${target}\" returned no element)`,\n );\n }\n return element;\n}\n\nfunction createContainer(options: {\n attachTo: string | Element | undefined;\n attachFirst: boolean;\n}): Element {\n const { attachTo, attachFirst } = options;\n const parent = getTargetElement(attachTo);\n const element = document.createElement(\"div\");\n\n if (attachFirst) {\n parent.insertBefore(element, parent.firstChild);\n } else {\n parent.appendChild(element);\n }\n\n return element;\n}\n\n/**\n * Create an instance of a component and mount it to given element.\n *\n * @public\n * @param callingInstance - Calling component.\n * @param Component - Component to mount.\n * @param options - Mount options.\n * @returns - Function to unmount component.\n *\n * @throws Error\n * Throw if [[Component]] is `undefined` or the `attachTo` selector does not\n * exist.\n */\nexport function mountComponent(\n callingInstance: MaybeWithFKUIContext,\n Component: MaybeComponent,\n options: Record<string, unknown> & MountOptions = {},\n): App<Element> {\n /* sanity check: ensure a component was passed */\n if (!Component) {\n throw new Error(\"mountComponent(..) called without a component\");\n }\n\n const { attachTo, attachFirst = false, ...data } = options;\n const el = createContainer({ attachTo, attachFirst });\n const app = createApp(Component, data);\n const fkuiContext = getRunningContext(callingInstance);\n if (fkuiContext) {\n Object.assign(app._context, fkuiContext.appContext); // must use Object.assign on _context\n }\n\n app.mount(el);\n\n /* monkey-patch unmount function to do our own cleanup as well */\n const unmount = app.unmount;\n app.unmount = () => {\n unmount.call(app);\n if (el.parentNode) {\n el.parentNode.removeChild(el);\n }\n };\n\n return app;\n}\n","import { mountComponent } from \"../mount-component\";\nimport { MaybeWithFKUIContext, config } from \"../../config\";\nimport { MaybeComponent } from \"../maybe-component\";\nimport { type ModalResult, type AsyncModalResult } from \"./modal-result\";\nimport { type ModalOptions } from \"./modal-options\";\n\ntype MaybeOptions = Partial<ModalOptions>;\ntype PartialResult<T = void> = Partial<ModalResult<T>>;\n\nfunction unpackPayload<T = void>(\n event: string,\n src: PartialResult<T>,\n): ModalResult<T> {\n const defaultPayload: PartialResult<T> = {};\n const { reason = event, data: rawData } = src ?? defaultPayload;\n /* this cast is needed when the caller lies about T, there is no sane way to\n * verify the type of the emitted event matches the caller requested type so\n * might as well just cast it. */\n const data: T = rawData as T;\n return { reason, data };\n}\n\n/**\n * Opens a modal using the given component.\n *\n * The component must adhere to the following rules:\n *\n * - Either be open by default or use a prop named `is-open` to toggle it.\n * - Emit the `close` event with the payload implementing `PartialResult<T>`.\n *\n * Props can be passed to the component using the options parameter.\n *\n * @public\n */\nexport function openModal<T = void>(\n callingInstance: MaybeWithFKUIContext,\n Component: MaybeComponent,\n text: string,\n): AsyncModalResult<T>;\n\n/**\n * @public\n */\nexport function openModal<T = void>(\n callingInstance: MaybeWithFKUIContext,\n Component: MaybeComponent,\n options?: MaybeOptions,\n): AsyncModalResult<T>;\n\nexport function openModal<T = void>(\n callingInstance: MaybeWithFKUIContext,\n Component: MaybeComponent,\n options?: string | MaybeOptions,\n): AsyncModalResult<T> {\n if (typeof options === \"string\") {\n return openModal(callingInstance, Component, {\n props: {\n content: options,\n },\n });\n }\n\n const defaultOptions: ModalOptions = {\n attachTo: config.modalTarget ?? config.teleportTarget,\n props: {},\n };\n const { attachTo, props } = { ...defaultOptions, ...options };\n\n return new Promise((resolve, reject) => {\n const terminate = (event: string, payload: PartialResult<T>): void => {\n try {\n const result = unpackPayload(event, payload);\n app.unmount();\n resolve(result);\n } catch (err) /* istanbul ignore next */ {\n /* eslint-disable-next-line no-console -- expected to log */\n console.error(err);\n reject(err);\n }\n };\n const app = mountComponent(callingInstance, Component, {\n attachTo,\n isOpen: true,\n onClose(data: PartialResult<T>) {\n terminate(\"close\", data);\n },\n ...props,\n });\n });\n}\n","import { openModal } from \"../open-modal/open-modal\";\nimport { type MaybeComponent } from \"../maybe-component\";\nimport { MaybeWithFKUIContext } from \"../../config\";\nimport { type ModalOptions } from \"./modal-options\";\n\ntype MaybeOptions = Partial<ModalOptions>;\n\n/**\n * Open a form modal and return the results from the input fields.\n *\n * @public\n * @param callingInstance - Calling component.\n * @param Component - Vue component to render.\n * @param options - Component options.\n * @returns A promise resolved with values from input fields or rejected if user cancels.\n */\nexport async function formModal<T>(\n callingInstance: MaybeWithFKUIContext,\n Component: MaybeComponent,\n options?: MaybeOptions,\n): Promise<T> {\n const props = {\n size: options?.size ?? \"\",\n beforeSubmit: options?.beforeSubmit,\n ...options?.props,\n };\n const result = await openModal<T>(callingInstance, Component, {\n props,\n });\n if (result.reason === \"submit\") {\n return result.data;\n } else {\n return Promise.reject(\"cancel\");\n }\n}\n","/**\n * Predefined reasons the modal was closed.\n *\n * @public\n */\nexport enum ModalReason {\n /**\n * Positive response from modal.\n */\n CONFIRM = \"confirm\",\n /**\n * Negative response from modal.\n */\n DISMISS = \"dismiss\",\n}\n","export const sizes = [\n \"\",\n \"small\",\n \"medium\",\n \"large\",\n \"fullscreen\",\n \"fullwidth\",\n];\n\nexport function sizeClass(size: string): string[] {\n if (!sizes.includes(size)) {\n throw new Error(`\"${size}\" is not a valid size`);\n }\n if (!size) {\n return [];\n } else if (size === \"fullscreen\") {\n return [`modal__dialog-container--fullwidth`];\n } else {\n return [`modal__dialog-container--${size}`];\n }\n}\n","/** @internal */\nimport { focus } from \"@fkui/logic\";\n\nexport function focusElement(element: HTMLElement, container: Element): void {\n if (elementIsRadioButton(element)) {\n focusRadioButtonGroup(element, container);\n } else {\n focus(element);\n }\n}\n/** @internal */\nfunction focusRadioButtonGroup(\n element: HTMLInputElement,\n container: Element,\n): void {\n const radioGroupInputs = container.querySelectorAll<HTMLInputElement>(\n `input[type=\"radio\"][name=\"${element.name}\"]`,\n );\n const checkedRadioButton = Array.from(radioGroupInputs).find(\n (inputEl) => inputEl.checked,\n );\n\n if (checkedRadioButton) {\n focus(checkedRadioButton);\n } else {\n focus(element);\n }\n}\n\n/** @internal */\nfunction elementIsRadioButton(\n element: HTMLElement,\n): element is HTMLInputElement {\n return isHTMLInputElement(element) && element.type === \"radio\";\n}\n\n/** @internal */\nfunction isHTMLInputElement(element: HTMLElement): element is HTMLInputElement {\n return element instanceof HTMLInputElement;\n}\n","<template>\n <div v-if=\"isOpen\" :id=\"id\" class=\"modal\" :class=\"modalClass\">\n <div class=\"modal__backdrop\">\n <div\n class=\"modal__outer-container scroll-target\"\n tabindex=\"-1\"\n role=\"dialog\"\n aria-modal=\"true\"\n @keyup.esc=\"onClose\"\n >\n <div class=\"modal__inner-container\">\n <div ref=\"modalDialogContainer\" class=\"modal__dialog-container\" :class=\"containerClasses\">\n <div class=\"modal__dialog\">\n <div class=\"modal__dialog-inner\">\n <div class=\"modal__header\">\n <div tabindex=\"0\" @focus=\"onFocusFirst\"></div>\n <h1 v-if=\"hasHeaderSlot\" ref=\"modalTitle\" class=\"modal__title\" tabindex=\"-1\">\n <!--@slot Slot for the header. -->\n <slot name=\"header\"></slot>\n </h1>\n </div>\n\n <div ref=\"modalContent\" class=\"modal__content\" tabindex=\"-1\">\n <!--@slot Slot for the main content, e.g. paragraphs, input fields, etc. -->\n <slot name=\"content\"></slot>\n </div>\n\n <div class=\"modal__footer\">\n <!--@slot Slot the footer content, i.e. buttons. -->\n <slot name=\"footer\"></slot>\n </div>\n </div>\n\n <div class=\"modal__shelf\">\n <button type=\"button\" class=\"close-button\" :aria-label=\"ariaCloseText\" @click=\"onClose\">\n <span>{{ $t(\"fkui.modal.close\", \"Stäng\") }}</span>\n <f-icon name=\"close\"></f-icon>\n </button>\n <div tabindex=\"0\" @focus=\"onFocusLast\"></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { type PropType, defineComponent } from \"vue\";\nimport { ElementIdService, pushFocus, popFocus, type StackHandle, findTabbableElements } from \"@fkui/logic\";\nimport { FIcon } from \"../FIcon\";\nimport { TranslationMixin } from \"../../plugins\";\nimport { findElementFromVueRef, getHTMLElementFromVueRef, hasSlot } from \"../../utils\";\nimport { sizes, sizeClass } from \"./sizes\";\nimport { focusElement } from \"./focus-element\";\n\ninterface FModalData {\n nonModalFocusableElements: HTMLElement[];\n savedFocus: StackHandle | null;\n savedScroll: number | null;\n}\n\n/**\n * Level: Ready\n */\nexport default defineComponent({\n name: \"FModal\",\n components: { FIcon },\n mixins: [TranslationMixin],\n inheritAttrs: true,\n props: {\n /**\n * The id for the root element id attribute.\n * If the prop is not set a random value will be generated.\n */\n id: {\n type: String,\n required: false,\n default: () => ElementIdService.generateElementId(),\n },\n /**\n * If the modal is open.\n * Use this to toggle if the modal should be visible or not.\n */\n isOpen: {\n type: Boolean,\n required: false,\n default: false,\n },\n /**\n * The aria-label attribute text for the top right close button.\n */\n ariaCloseText: {\n type: String,\n required: false,\n default: undefined,\n },\n /**\n * Enable fullscreen mode in mobile.\n */\n fullscreen: {\n type: Boolean,\n required: false,\n default: false,\n },\n /**\n * The type of modal. 'information', 'warning' and 'error' is valid.\n */\n type: {\n type: String as PropType<\"\" | \"information\" | \"warning\" | \"error\">,\n default: \"\",\n validator(value: string): boolean {\n return [\"\", \"information\", \"warning\", \"error\"].includes(value);\n },\n },\n /**\n * The size of modal in desktop mode.\n */\n size: {\n type: String,\n default: \"\",\n validator(value: string): boolean {\n return sizes.includes(value);\n },\n },\n },\n emits: [\"close\"],\n data(): FModalData {\n return {\n nonModalFocusableElements: [],\n savedFocus: null,\n savedScroll: null,\n };\n },\n computed: {\n modalClass(): string[] {\n return this.type ? [`modal--${this.type}`] : [];\n },\n containerClasses(): string[] {\n const size = sizeClass(this.size);\n if (this.fullscreen) {\n return [...size, \"modal__dialog-container--fullscreen\"];\n } else {\n return size;\n }\n },\n hasHeaderSlot(): boolean {\n return hasSlot(this, \"header\");\n },\n },\n watch: {\n isOpen: {\n immediate: true,\n async handler(value: boolean): Promise<void> {\n if (value) {\n await this.$nextTick();\n this.openModal();\n } else {\n this.restoreState();\n }\n },\n },\n },\n beforeUnmount(): void {\n this.restoreState();\n },\n methods: {\n onClose(): void {\n /**\n * Event that is dispatched when the escape button is pressed.\n * In most use cases the `isOpen` prop should be set to false when this event is triggered.\n */\n this.$emit(\"close\");\n },\n openModal(): void {\n const root = document.documentElement;\n const scroll = root.scrollTop;\n root.style.top = `-${scroll}px`;\n root.classList.add(\"modal__open\");\n const focusElement = this.resolveFocusElement();\n this.savedFocus = pushFocus(focusElement);\n this.savedScroll = scroll;\n },\n /**\n * Prioritises what element to initially focus on in the following order:\n *\n * 1. Header\n * 2. First interactive element within content\n * 3. Content\n */\n resolveFocusElement(): Element {\n const titleElement = findElementFromVueRef(this.$refs.modalTitle);\n if (titleElement) {\n return titleElement;\n }\n\n const contentElement = getHTMLElementFromVueRef(this.$refs.modalContent);\n const tabbableChildren = findTabbableElements(contentElement);\n const firstTabbableChildElement = tabbableChildren.length ? tabbableChildren[0] : undefined;\n\n return firstTabbableChildElement ?? contentElement;\n },\n restoreState(): void {\n if (this.savedFocus) {\n const root = document.documentElement;\n root.classList.remove(\"modal__open\");\n root.style.removeProperty(\"top\");\n root.scrollTop = this.savedScroll ?? 0;\n popFocus(this.savedFocus);\n this.savedFocus = null;\n this.savedScroll = null;\n }\n },\n onFocusFirst() {\n const tabbableElements = findTabbableElements(this.$refs.modalDialogContainer as HTMLElement);\n const lastTabbableElement = tabbableElements[tabbableElements.length - 2];\n focusElement(lastTabbableElement, this.$el);\n },\n onFocusLast() {\n const tabbableElements = findTabbableElements(this.$refs.modalDialogContainer as HTMLElement);\n const firstTabbableElement = tabbableElements[1];\n focusElement(firstTabbableElement, this.$el);\n },\n },\n});\n</script>\n","import { config, FKUIConfigButtonOrder } from \"../../config\";\n\n/**\n * @public\n */\nexport interface FModalButtonDescriptor {\n label: string;\n /** Additional text to present for a screenreader after ordinary text */\n screenreader?: string;\n event?: string;\n reason?: string;\n type: \"primary\" | \"secondary\";\n submitButton?: boolean;\n}\n\n/**\n * @public\n */\nexport interface FModalButton {\n label: string;\n /** Additional text to present for a screenreader after ordinary text */\n screenreader?: string;\n event: string;\n reason: string;\n classlist: string[];\n buttonType: \"button\" | \"submit\";\n}\n\n/**\n * @public\n */\nexport function prepareButtonList(\n src: FModalButtonDescriptor[],\n buttonOrder = config.buttonOrder,\n): FModalButton[] {\n const list: FModalButton[] = src.map((it) => ({\n label: it.label,\n screenreader: it.screenreader,\n event: it.event ?? \"dismiss\",\n reason: it.reason ?? it.event ?? \"dismiss\",\n classlist: [\"button\", `button--${it.type ?? \"secondary\"}`],\n buttonType: it.submitButton ? \"submit\" : \"button\",\n }));\n\n switch (buttonOrder) {\n case FKUIConfigButtonOrder.LEFT_TO_RIGHT:\n return list;\n case FKUIConfigButtonOrder.RIGHT_TO_LEFT:\n return list.reverse();\n }\n}\n","<template>\n <f-modal\n :fullscreen=\"fullscreen\"\n :is-open=\"isOpen\"\n :aria-close-text=\"ariaCloseText\"\n type=\"warning\"\n :size=\"size\"\n @close=\"onClose\"\n >\n <template #header>\n <!--@slot Slot for advanced header. -->\n <slot name=\"heading\">{{ heading }}</slot>\n </template>\n <template #content>\n <!--@slot Slot for advanced content. -->\n <slot name=\"content\">{{ content }}</slot>\n </template>\n\n <template #footer>\n <div class=\"button-group\">\n <button\n v-for=\"button in preparedButtons\"\n :key=\"button.label\"\n type=\"button\"\n :class=\"button.classlist\"\n class=\"button-group__item\"\n @click=\"onClick(button)\"\n >\n <span>{{ button.label }}</span>\n <span v-if=\"button.screenreader\" class=\"sr-only\">&nbsp;{{ button.screenreader }}</span>\n </button>\n </div>\n </template>\n </f-modal>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, type PropType } from \"vue\";\nimport FModal from \"../FModal.vue\";\nimport { sizes } from \"../sizes\";\n\nimport { FModalButton, FModalButtonDescriptor, prepareButtonList } from \"../modal-button\";\n\nconst defaultButtons: FModalButtonDescriptor[] = [\n { label: \"Primärknapp\", event: \"confirm\", type: \"primary\" },\n { label: \"Sekundärknapp\", event: \"dismiss\", type: \"secondary\" },\n];\n\n/**\n * Level: Ready\n */\nexport default defineComponent({\n name: \"FConfirmModal\",\n components: { FModal },\n inheritAttrs: true,\n props: {\n /**\n * Enable fullscreen mode in mobile.\n */\n fullscreen: {\n type: Boolean,\n required: false,\n default: false,\n },\n /**\n * Prop for opening modal\n */\n isOpen: {\n type: Boolean,\n required: false,\n default: false,\n },\n /**\n * Simple text content\n */\n content: {\n type: String,\n required: false,\n default: \"Brödtext\",\n },\n /**\n * Simple text header\n */\n heading: {\n type: String,\n required: false,\n default: \"Rubrik\",\n },\n /**\n * The size of modal. 'large' and 'fullscreen' is valid.\n */\n size: {\n type: String,\n default: \"\",\n validator(value: string): boolean {\n return sizes.includes(value);\n },\n },\n /**\n * The aria-label attribute text for the top right close button.\n */\n ariaCloseText: {\n type: String,\n required: false,\n default: undefined,\n },\n /**\n * List of buttons\n */\n buttons: {\n type: Array as PropType<FModalButtonDescriptor[]>,\n required: false,\n default: (): FModalButtonDescriptor[] => {\n return defaultButtons;\n },\n },\n },\n emits: [\"close\", ...defaultButtons.map((it) => it.event ?? \"\")],\n computed: {\n preparedButtons(): FModalButton[] {\n return prepareButtonList(this.buttons);\n },\n },\n methods: {\n onClose() {\n this.$emit(\"close\", {\n reason: \"close\",\n });\n },\n onClick(button: FModalButton): void {\n /**\n * Emits specified button event when clicked\n *\n * @event button.event\n *\n */\n this.$emit(button.event);\n\n /**\n * Emits reason for closing modal\n */\n this.$emit(\"close\", {\n reason: button.reason,\n });\n },\n },\n});\n</script>\n","export const GAP = [\"1x\", \"2x\", \"3x\", \"4x\", \"5x\", \"6x\", \"7x\", \"8x\"];\nexport const ALIGNMENT = [\"top\", \"center\", \"bottom\"];\nexport const FLOAT = [\"left\", \"center\", \"right\"];\n","<template>\n <div class=\"iflex\" :class=\"classList\">\n <!-- @slot Slot for IFlexItem's -->\n <slot></slot>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from \"vue\";\nimport { GAP, FLOAT } from \"./constants\";\n\nexport default defineComponent({\n name: \"IFlex\",\n inheritAttrs: true,\n\n props: {\n /**\n * Set gap (gutter) between items.\n *\n * Must be one of:\n *\n * - `\"1x\"`\n * - `\"2x\"`\n * - `\"3x\"`\n * - ...\n * - `\"8x\"`\n *\n * Example: a value of `\"3x\"` corresponds to a gap of `3 * 0.25 = 0.75rem`.\n */\n gap: {\n type: String,\n default: \"\",\n validator(val: string) {\n return val === \"\" || GAP.includes(val);\n },\n },\n /**\n * If set the IFlexItems will be fullwidth and\n * stacked on top of each other when breakpoint is small (aka mobile).\n */\n collapse: {\n type: Boolean,\n default: false,\n },\n /**\n * If set the IFlexItems will wrap when out of space\n */\n wrap: {\n type: Boolean,\n default: false,\n },\n /**\n * Set how IFlexItems should float.\n *\n * Must be one of:\n *\n * - `\"left\"`\n * - `\"center\"`\n * - `\"right\"`\n */\n float: {\n type: String,\n default: \"\",\n validator(val: string) {\n return val === \"\" || FLOAT.includes(val);\n },\n },\n },\n computed: {\n classList(): string[] {\n const classes: string[] = [];\n if (this.collapse) {\n classes.push(\"iflex--collapse\");\n }\n if (this.gap) {\n classes.push(`iflex--gap-${this.gap}`);\n }\n if (this.wrap) {\n classes.push(`iflex--wrap`);\n }\n if (this.float) {\n classes.push(`iflex--float-${this.float}`);\n }\n\n return classes;\n },\n },\n});\n</script>\n","<template>\n <div class=\"iflex__item\" :class=\"classList\">\n <!-- @slot Content -->\n <slot></slot>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from \"vue\";\nimport { ALIGNMENT } from \"./constants\";\n\nexport default defineComponent({\n name: \"IFlexItem\",\n inheritAttrs: true,\n\n props: {\n /**\n * If set this item will grow to its largest possible size.\n */\n grow: {\n type: Boolean,\n default: false,\n },\n /**\n * If set this item will shrink to its smallest possible size.\n */\n shrink: {\n type: Boolean,\n default: false,\n },\n /**\n * Vertical positioning of content.\n *\n * Must be one of:\n *\n * - `\"top\"`\n * - `\"center\"`\n * - `\"bottom\"`\n */\n align: {\n type: String,\n default: \"top\",\n validator(val: string) {\n return ALIGNMENT.includes(val);\n },\n },\n },\n computed: {\n classList(): string[] {\n const classList = [`iflex--align-${this.align}`];\n if (this.grow) {\n classList.push(\"iflex--grow\");\n } else if (this.shrink) {\n classList.push(\"iflex--shrink\");\n }\n return classList;\n },\n },\n});\n</script>\n","import { focus, scrollTo } from \"@fkui/logic\";\nimport { type ErrorItem } from \"../../types\";\n\nexport function focusError(item: ErrorItem): void {\n const element = document.querySelector(`#${item.id}`);\n if (!element) {\n throw new Error(`Can not find element with id \"${item.id}\"`);\n }\n\n const focusElement = document.querySelector(`#${item.focusElementId}`);\n\n scrollTo(element, window.innerHeight * 0.25);\n focus(focusElement ? focusElement : element);\n}\n","<template>\n <div class=\"error-list\">\n <i-flex>\n <i-flex-item v-if=\"hasTitleSlot\" shrink>\n <f-icon class=\"error-list__icon\" name=\"error\"></f-icon>\n </i-flex-item>\n <!-- use a space as separator to get same width FLabel which uses an actual space -->\n <i-flex-item v-if=\"hasTitleSlot\" shrink>&nbsp;</i-flex-item>\n <i-flex-item grow>\n <div v-if=\"hasTitleSlot\">\n <!-- @slot Optional title shown above the errorlist. No icon is shown if no title is set -->\n <slot name=\"title\"></slot>\n </div>\n <ul class=\"error-list__list error-list--list-style-none\">\n <li v-for=\"item in items\" :key=\"item.id\" :class=\"liClasses(item)\">\n <a v-if=\"item.id\" href=\"javascript:\" @click.prevent=\"onClickItem(item)\">\n <template v-if=\"bullets\">\n <span class=\"error-list__bullet\" aria-hidden=\"true\"></span>\n <span class=\"error-list__link\">{{ item.title }}</span>\n </template>\n <template v-else>{{ item.title }}</template>\n </a>\n <template v-else>\n <template v-if=\"bullets\">\n <span class=\"error-list__bullet\" aria-hidden=\"true\"></span>\n <span>{{ item.title }}</span>\n </template>\n <template v-else>{{ item.title }}</template>\n </template>\n </li>\n </ul>\n </i-flex-item>\n </i-flex>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, type PropType } from \"vue\";\nimport { type ErrorItem } from \"../../types\";\nimport { FIcon } from \"../FIcon\";\nimport { hasSlot } from \"../../utils\";\nimport { IFlex, IFlexItem } from \"../../internal-components/IFlex\";\nimport { type BeforeNavigate } from \"./BeforeNavigate\";\nimport { focusError } from \"./focus-error\";\n\nexport default defineComponent({\n name: \"FErrorList\",\n components: { FIcon, IFlex, IFlexItem },\n props: {\n /**\n * List of errors of type `ErrorItem`.\n * If element id is unspecified, no link will be rendered.\n * If element with id don't exist on navigation, an exception is thrown.\n */\n items: {\n type: Array as PropType<ErrorItem[]>,\n required: true,\n },\n /**\n * Display bullets in list.\n */\n bullets: {\n type: Boolean,\n required: false,\n default: false,\n },\n /**\n * Optional callback for performing actions before navigation.\n */\n beforeNavigate: {\n type: Function as PropType<BeforeNavigate>,\n required: false,\n default(): BeforeNavigate {\n return () => {\n /* do nothing */\n };\n },\n },\n },\n computed: {\n hasTitleSlot(): boolean {\n return hasSlot(this, \"title\");\n },\n },\n methods: {\n liClasses(errorItem: ErrorItem): string[] {\n const classes = [];\n if (!this.bullets && errorItem.id) {\n classes.push(\"error-list__link\");\n }\n\n return classes;\n },\n async onClickItem(item: ErrorItem) {\n await this.beforeNavigate(item);\n focusError(item);\n },\n },\n});\n</script>\n","import { Reference, documentOrderComparator } from \"@fkui/logic\";\nimport { ComponentValidityEvent, FormErrorList, FormStep } from \"../../types\";\n\n/**\n * @public\n */\nexport type ComponentReferences =\n | Record<string, ComponentValidityEvent>\n | Record<string, Reference<FormErrorList>>;\n\n/**\n * @public\n */\nexport type ComponentValueTypes =\n | ComponentValidityEvent\n | Reference<FormErrorList>;\n\n/**\n * Clean inputs which doesn't exist in the DOM\n *\n * @public\n */\nexport function cleanUpElements(vm: {\n $el: Element;\n components: ComponentReferences;\n}): Promise<void> {\n return new Promise((resolve) => {\n /**\n * To be able to clean up validation errors after elements that have been v-if:ed away (removed from DOM)\n * the clean up needs to be runned after DOM has been updated, thus setTimeout. $nextTick can't be\n * used due to only virtual DOM in Vue has been updated and not actual browse DOM.\n */\n window.setTimeout(() => {\n Object.keys(vm.components).forEach((id) => {\n const domElement = vm.$el.querySelector(`#${id}`);\n if (!domElement) {\n /* eslint-disable-next-line @typescript-eslint/no-dynamic-delete -- technical debt, this is potentially dangerous, should probably use a safer structure such as Map */\n delete vm.components[id];\n }\n });\n resolve();\n }, 0);\n });\n}\n\n/**\n * Sorts errorlist based on the order of the elements in the DOM\n *\n * @public\n */\nexport function sortComponentsWithErrorsOnDOMOrder(\n componentList: ComponentReferences,\n): ComponentValueTypes[] {\n const errorList = Object.values(componentList).filter((component) => {\n const validity =\n component instanceof Reference\n ? component.ref.isValid\n : component.validityMode;\n return typeof validity === \"boolean\"\n ? validity === false\n : validity === \"ERROR\";\n }) as ComponentValueTypes[];\n\n errorList.sort((a: ComponentValueTypes, b: ComponentValueTypes) => {\n const elementToCompareA =\n a instanceof Reference\n ? document.querySelector(`#${a.ref.id}`)\n : a.target;\n const elementToCompareB =\n b instanceof Reference\n ? document.querySelector(`#${b.ref.id}`)\n : b.target;\n return documentOrderComparator(elementToCompareA, elementToCompareB);\n });\n return errorList;\n}\n\n/**\n * Checks if reference is FormStep\n *\n * @public\n */\nexport function isFormStepReference(\n reference: Reference<FormErrorList | FormStep>,\n): reference is Reference<FormStep> {\n return \"isOpen\" in reference.ref;\n}\n","<template>\n <div @component-validity=\"onComponentValidity\" @component-unmount=\"onComponentUnmount\">\n <slot></slot>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { type PropType, defineComponent } from \"vue\";\nimport { documentOrderComparator } from \"@fkui/logic\";\nimport { type ComponentUnmountEvent, type ComponentValidityEvent, type GroupValidityEvent } from \"../../types\";\nimport { cleanUpElements } from \"../FForm/FormUtils\";\n\nexport default defineComponent({\n name: \"FValidationGroup\",\n props: {\n /**\n * A `GroupValidityEvent` object containing:\n *\n * `isValid`: the aggregated validity of underlying components\n *\n * `componentsWithError`: a list of components with errors sorted in DOM order\n *\n * `componentCount`: number of registered components\n * @model\n */\n modelValue: {\n type: Object as PropType<GroupValidityEvent>,\n required: false,\n default: (): GroupValidityEvent => {\n return { isValid: false, componentsWithError: [], componentCount: 0 };\n },\n },\n /**\n * Controls whether component-validity event should be propagated or not from underlying components.\n */\n stopPropagation: {\n type: Boolean,\n required: false,\n default: false,\n },\n },\n emits: [\"group-validity\", \"update:modelValue\"],\n data() {\n return {\n components: {} as unknown as Record<string, ComponentValidityEvent>,\n };\n },\n methods: {\n onComponentUnmount(event: CustomEvent<ComponentUnmountEvent>): void {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete -- Technical debt, a map would have been better.\n delete this.components[event.detail.elementId];\n this.triggerGroupValidityEvent();\n },\n async onComponentValidity(event: CustomEvent<ComponentValidityEvent>): Promise<void> {\n if (this.stopPropagation) {\n event.stopPropagation();\n }\n\n await cleanUpElements(this);\n this.components[event.detail.elementId] = event.detail;\n this.triggerGroupValidityEvent();\n },\n triggerGroupValidityEvent(): void {\n const components: ComponentValidityEvent[] = Object.values(this.components);\n const isValid = components.every((component) => component.isValid);\n const componentsWithError = components.filter((component) => component.validityMode === \"ERROR\");\n\n componentsWithError.sort((a, b) => documentOrderComparator(a.target, b.target));\n\n /**\n * V-model event.\n * @event group-validity\n * @type {GroupValidityEvent}\n */\n this.$emit(\"update:modelValue\", { isValid, componentsWithError, componentCount: components.length });\n\n /**\n * Vue2 v-model event.\n * @deprecated\n * @event group-validity\n * @type {GroupValidityEvent}\n */\n this.$emit(\"group-validity\", { isValid, componentsWithError, componentCount: components.length });\n },\n },\n});\n</script>\n","/**\n * @public\n */\nexport enum FValidationFormAction {\n CONTINUE = 0,\n CANCEL = 1,\n}\n\n/**\n * @public\n */\nexport type FValidationFormCallback = () =>\n | void // eslint-disable-line @typescript-eslint/no-invalid-void-type -- allow implicit undefined return value\n | FValidationFormAction\n | Promise<FValidationFormAction>\n | Promise<void>;\n","<template>\n <f-validation-group :key=\"groupKey\" v-model=\"validity\" :stop-propagation=\"true\">\n <!-- [html-validate-disable-next wcag/h32 -- submit button is slotted] -->\n <form :id=\"id\" v-bind=\"$attrs\" novalidate autocomplete=\"off\" @submit.prevent=\"onSubmit\">\n <nav v-if=\"displayErrors\" ref=\"errors\" tabindex=\"-1\" role=\"group\">\n <f-error-list :bullets=\"true\" :items=\"errors\">\n <template #title>\n <!--\n @slot **optional** Slot for displaying error description.\n\n After this slot a list of invalid elements is listed.\n When an item is clicked it will scroll to and focus that invalid element.\n -->\n <slot name=\"error-message\"></slot>\n </template>\n </f-error-list>\n </nav>\n <!-- @slot Slot for content, i.e. input elements. -->\n <slot name=\"default\"></slot>\n </form>\n </f-validation-group>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, type PropType } from \"vue\";\nimport { ValidationService, focus, ElementIdService } from \"@fkui/logic\";\nimport { FErrorList } from \"../FErrorList\";\nimport { FValidationGroup } from \"../FValidationGroup\";\nimport { GroupValidityEvent, ComponentValidityEvent, ErrorItem } from \"../../types\";\nimport { FValidationFormAction, type FValidationFormCallback } from \"./types\";\n\nexport default defineComponent({\n name: \"FValidationForm\",\n components: { FValidationGroup, FErrorList },\n inheritAttrs: false,\n props: {\n /**\n * If given, this function is called before the `submit` event is emitted.\n *\n * Optionally this callback may return `FValidationFormAction`. If\n * `FValidationFormAction.CANCEL` is returned the submission is\n * cancelled and no event will be emitted. The consumer should make it\n * clear why the action was cancelled.\n *\n * If a promise is returned it will be awaited.\n *\n * The consumer does not need to validate form data, it is handled\n * internally by the component.\n */\n beforeSubmit: {\n type: Function as PropType<FValidationFormCallback>,\n required: false,\n default() {\n return () => undefined;\n },\n },\n /**\n * If given, this function is called before the form data is validated and the `submit` event is emitted.\n */\n beforeValidation: {\n type: Function as PropType<FValidationFormCallback>,\n required: false,\n default() {\n return () => undefined;\n },\n },\n /**\n * The id for the form id attribute.\n * If the prop is not set a random value will be generated.\n */\n id: {\n type: String,\n required: false,\n default: () => ElementIdService.generateElementId(),\n },\n /**\n * Include the error list component.\n */\n useErrorList: {\n type: Boolean,\n required: false,\n default: true,\n },\n },\n emits: [\"submit\"],\n data() {\n return {\n validity: { isValid: true, componentsWithError: [], componentCount: 0 } as GroupValidityEvent,\n submitted: false,\n };\n },\n computed: {\n groupKey(): string {\n return `${this.id}-group`;\n },\n errors(): ErrorItem[] {\n return this.validity.componentsWithError.map((c: ComponentValidityEvent) => ({\n id: c.elementId,\n focusElementId: c.focusElementId,\n title: c.errorMessage,\n }));\n },\n displayErrors(): boolean {\n return this.useErrorList && this.submitted && this.errors.length > 0;\n },\n },\n methods: {\n async hasFormErrors(): Promise<boolean> {\n ValidationService.setSubmitted(this.id);\n await ValidationService.validateAllElements(this.id);\n await this.$nextTick();\n await new Promise((resolve) => window.setTimeout(resolve, 0));\n\n if (this.validity.isValid) {\n return false;\n }\n if (this.useErrorList) {\n focus(this.$refs.errors as HTMLElement);\n } else {\n const firstError = this.validity.componentsWithError[0];\n const element = document.getElementById(firstError.focusElementId) as HTMLElement;\n focus(element);\n }\n\n return true;\n },\n async onSubmit(event: Event): Promise<void> {\n this.submitted = true;\n\n const beforeValidation = this.beforeValidation ? await this.beforeValidation() : undefined;\n if (beforeValidation === FValidationFormAction.CANCEL) {\n return;\n }\n\n if (await this.hasFormErrors()) {\n return;\n }\n\n const beforeAction = this.beforeSubmit ? await this.beforeSubmit() : undefined;\n if (beforeAction === FValidationFormAction.CANCEL) {\n return;\n }\n\n if (await this.hasFormErrors()) {\n return;\n }\n\n /** V-model event.\n *\n * @event submit\n *\n */\n this.$emit(\"submit\", event);\n },\n },\n});\n</script>\n","<template>\n <f-modal\n :data-test=\"dataTest\"\n :fullscreen=\"fullscreen\"\n :is-open=\"isOpen\"\n :size=\"size\"\n :aria-close-text=\"ariaCloseText\"\n @close=\"onClose\"\n >\n <template #header>\n <!-- @slot Slot for the header. -->\n <slot name=\"header\"></slot>\n </template>\n <template #content>\n <div>\n <!-- @slot Slot for main content above text fields and buttons. -->\n <slot name=\"default\"></slot>\n </div>\n <f-validation-form\n :id=\"formId\"\n :before-submit=\"beforeSubmit\"\n :before-validation=\"beforeValidation\"\n :use-error-list=\"useErrorList\"\n @submit=\"onSubmit\"\n @cancel=\"onCancel\"\n >\n <template #error-message>\n <!-- @slot Slot for error message -->\n <slot name=\"error-message\"></slot>\n </template>\n <!-- @slot Slot for input text fields for entering text. -->\n <slot name=\"input-text-fields\"></slot>\n </f-validation-form>\n </template>\n <template #footer>\n <div class=\"button-group\">\n <template v-if=\"!hasDeprecatedSlots\">\n <button\n v-for=\"button in preparedButtons\"\n :key=\"button.label\"\n :type=\"button.buttonType\"\n :class=\"button.classlist\"\n class=\"button-group__item\"\n :form=\"button.buttonType === 'submit' ? formId : undefined\"\n @click=\"button.buttonType === 'button' ? onCancel() : false\"\n >\n <span>{{ button.label }}</span>\n <span v-if=\"button.screenreader\" class=\"sr-only\">&nbsp;{{ button.screenreader }}</span>\n </button>\n </template>\n <template v-else>\n <button\n :form=\"formId\"\n data-test=\"submit-button\"\n type=\"submit\"\n class=\"button button--primary button-group__item button--large\"\n >\n <!-- @slot @deprecated - Slot for submit button text. If you want to modify the footer section, see prop \"buttons\" -->\n <slot name=\"submit-button-text\">\n {{ $t(\"fkui.form-modal.button.submit.text\", \"Spara\") }}\n </slot>\n </button>\n <button\n data-test=\"cancel-button\"\n type=\"button\"\n class=\"button button--secondary button-group__item button--large\"\n @click=\"onCancel\"\n >\n <!-- @slot @deprecated - Slot for cancel button text. If you want to modify the footer section, see prop \"buttons\" -->\n <slot name=\"cancel-button-text\">\n {{ $t(\"fkui.form-modal.button.cancel.text\", \"Avbryt\") }}\n </slot>\n </button>\n </template>\n </div>\n </template>\n </f-modal>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, type PropType } from \"vue\";\nimport { ElementIdService, ValidationService, TranslationService } from \"@fkui/logic\";\nimport FModal from \"../FModal.vue\";\nimport { FValidationForm, type FValidationFormCallback } from \"../../FValidationForm\";\nimport { TranslationMixin } from \"../../../plugins/translation\";\nimport { sizes } from \"../sizes\";\nimport { FModalButton, FModalButtonDescriptor, prepareButtonList } from \"../modal-button\";\nimport { hasSlot } from \"../../../utils\";\nimport { FKUIConfigButtonOrder } from \"../../../config\";\n\nexport default defineComponent({\n name: \"FFormModal\",\n components: { FModal, FValidationForm },\n mixins: [TranslationMixin],\n inheritAttrs: true,\n\n props: {\n /**\n * Enable fullscreen mode in mobile.\n */\n fullscreen: {\n type: Boolean,\n required: false,\n default: true,\n },\n /**\n * If the modal is open.\n * Use this to toggle if the modal should be visible or not.\n */\n isOpen: {\n type: Boolean,\n required: false,\n default: true,\n },\n /**\n * See <f-modal> `size` props.\n */\n size: {\n type: String,\n default: \"\",\n validator(value: string): boolean {\n return sizes.includes(value);\n },\n },\n /**\n * @ignore\n */\n dataTest: {\n type: String,\n required: false,\n default: \"\",\n },\n /**\n * The data that has been submitted.\n */\n value: {\n type: Object,\n default: function () {\n return {};\n },\n },\n /**\n * Include the error list component.\n */\n useErrorList: {\n type: Boolean,\n required: false,\n default: true,\n },\n /**\n * The id for the form id attribute.\n * If the prop is not set a random value will be generated.\n */\n formId: {\n type: String,\n required: false,\n default: () => ElementIdService.generateElementId(),\n },\n /**\n * The aria-label attribute text for the top right close button.\n */\n ariaCloseText: {\n type: String,\n required: false,\n default: undefined,\n },\n /**\n * If given, this function is called before the [[submit]] event is emitted.\n * See <f-validation-form> `beforeSubmit` props for more info.\n */\n beforeSubmit: {\n type: Function as PropType<FValidationFormCallback>,\n required: false,\n default(): void {\n /* do nothing */\n },\n },\n /**\n * If given, this function is called before the form data is validated and the [[submit]] event is emitted.\n * See <f-validation-form> `beforeValidation` props for more info.\n */\n beforeValidation: {\n type: Function as PropType<FValidationFormCallback>,\n required: false,\n default(): void {\n /* do nothing */\n },\n },\n buttons: {\n type: Array as PropType<FModalButtonDescriptor[]>,\n required: false,\n default: (): FModalButtonDescriptor[] => [\n {\n label: TranslationService.provider.translate(\"fkui.form-modal.button.submit.text\", \"Spara\"),\n event: \"submit\",\n type: \"primary\",\n submitButton: true,\n },\n {\n label: TranslationService.provider.translate(\"fkui.form-modal.button.cancel.text\", \"Avbryt\"),\n event: \"dismiss\",\n type: \"secondary\",\n },\n ],\n },\n },\n emits: [\"cancel\", \"close\", \"submit\"],\n data() {\n return {};\n },\n computed: {\n preparedButtons(): FModalButton[] {\n return prepareButtonList(this.buttons, FKUIConfigButtonOrder.LEFT_TO_RIGHT);\n },\n hasDeprecatedSlots(): boolean {\n return hasSlot(this, \"cancel-button-text\") || hasSlot(this, \"submit-button-text\");\n },\n },\n methods: {\n onClose() {\n ValidationService.resetState(this.$el);\n /**\n * Event that is dispatched when escape is pressed or when the cancel or close buttons are clicked.\n * In most use cases the isOpen prop should be set to false when this event is triggered.\n */\n this.$emit(\"cancel\");\n /**\n * Event that is dispatched when escape is pressed or when the cancel or close buttons are clicked.\n * In most use cases the isOpen prop should be set to false when this event is triggered.\n */\n this.$emit(\"close\", { reason: \"close\" });\n },\n async onSubmit() {\n ValidationService.resetState(this.$el);\n /**\n * Event that is dispatched when the submit button is is clicked.\n * The event payload is the data that has been submitted.\n */\n this.$emit(\"submit\", { data: this.value });\n this.$emit(\"close\", { reason: \"submit\", data: this.value });\n },\n onCancel() {\n ValidationService.resetState(this.$el);\n this.$emit(\"cancel\");\n this.$emit(\"close\", { reason: \"close\" });\n },\n },\n});\n</script>\n","import { FConfirmModal } from \"../../components/FModal\";\nimport { MaybeWithFKUIContext } from \"../../config\";\nimport { openModal } from \"../open-modal\";\n\n/**\n * @public\n */\nexport interface confirmModalObject {\n heading: string;\n content: string;\n confirm: string;\n dismiss: string;\n}\n\n/**\n * @public\n */\nexport async function confirmModal(\n callingInstance: MaybeWithFKUIContext,\n modalData: confirmModalObject,\n): Promise<boolean> {\n const buttons = [\n { label: modalData.confirm, event: \"confirm\", type: \"primary\" },\n { label: modalData.dismiss, event: \"dismiss\", type: \"secondary\" },\n ];\n const { reason } = await openModal(callingInstance, FConfirmModal, {\n props: {\n heading: modalData.heading,\n content: modalData.content,\n buttons,\n },\n });\n\n return reason === \"confirm\";\n}\n","import { focus as focusElement, type FocusOptions } from \"@fkui/logic\";\n\n/**\n * An object that looks like a Vue instance.\n *\n * @public\n */\nexport interface VueLike {\n readonly $el: Element;\n focusTarget?: VueLike | Element | Array<VueLike | Element> | null;\n}\n\nfunction isVueComponent(element: unknown): element is VueLike {\n return Boolean(element && typeof element === \"object\" && \"$el\" in element);\n}\n\n/**\n * Give browser focus to a given element.\n *\n * If an array is passed, only the first element will receive focus.\n *\n * Vue components containing a `focusTarget` attribute will recursively pass along the focus to that\n * value.\n *\n * For convenience it will ignore `null` and `undefined` as element parameter.\n *\n * @public\n * @param element - Element to focus.\n * @param options - Focus options. If you pass boolean `true` or `false` it sets the `force` option.\n *\n * @returns `true` if successfully found an HTMLElement to focus. Otherwise, `false`.\n */\nexport function focus(\n element: unknown,\n options: boolean | FocusOptions = {},\n): boolean {\n if (Array.isArray(element)) {\n return focus(element[0], options);\n }\n\n if (isVueComponent(element)) {\n const targetElement = element.focusTarget ?? element.$el;\n return focus(targetElement, options);\n }\n\n if (element instanceof HTMLElement) {\n focusElement(element, options);\n return true;\n }\n\n return false;\n}\n","import { type ValidatableHTMLElement } from \"@fkui/logic\";\n\n/**\n * @public\n */\nexport function getInputElement(vm: { $el: Element }): ValidatableHTMLElement {\n const inputElement = vm.$el.querySelector(\"input\");\n\n if (!inputElement) {\n const id = vm.$el.id;\n const tag = vm.$el.tagName.toLowerCase();\n throw new Error(\n `Could not find input element from element \"${tag}#${id}\"`,\n );\n }\n\n return inputElement;\n}\n","import { type Slots } from \"vue\";\nimport { renderSlotText } from \"./render-slot-text\";\n\n/**\n * Check if slot is implemented by the user.\n *\n * @public\n * @param vm - Component instance.\n * @param name - Name of the slot to check for.\n * @param props - Props required by a scoped slot.\n * @returns true if the slot is implemented and have non-empty content.\n */\nexport function hasSlot(\n vm: { $slots: Slots },\n name: string,\n props: Record<string, unknown> = {},\n): boolean {\n const slot = vm.$slots[name];\n\n return Boolean(renderSlotText(slot, props));\n}\n","import { type ComponentPublicInstance } from \"vue\";\n\n/**\n * Finds and returns the parent component of given Vue component that matches given name.\n *\n * @public\n * @param vm - Component instance.\n * @param name - The name of the parent to be found.\n * @returns The found Vue component, otherwise undefined.\n */\nexport function findParentByName(\n vm: ComponentPublicInstance | undefined | null,\n name: string,\n): ComponentPublicInstance | undefined {\n let current = vm;\n while (current) {\n if (current.$options.name === name) {\n return current;\n }\n current = current.$parent;\n }\n return undefined;\n}\n","import { type ComponentPublicInstance } from \"vue\";\nimport { findParentByName } from \"./find-parent-by-name\";\n\n/**\n * Gets and returns the parent component of given Vue component that matches given name.\n *\n * @public\n * @param vm - Component instance.\n * @param name - The name of the parent to be found.\n * @returns The found Vue component.\n * @throws An error if parent by given name could not be found.\n */\nexport function getParentByName(\n vm: ComponentPublicInstance | undefined | null,\n name: string,\n): ComponentPublicInstance | never {\n const parentVm = findParentByName(vm, name);\n if (parentVm === undefined) {\n throw new Error(\n `Unable to find parent component by given name '${name}'.`,\n );\n }\n return parentVm;\n}\n","import { type ComponentPublicInstance } from \"vue\";\nimport { findParentByName } from \"./find-parent-by-name\";\n\n/**\n * Checks if a given Vue component has a parent component with given name.\n *\n * @public\n * @param vm - Component instance.\n * @param name - The name of the parent to be found.\n * @returns `true` if parent component is found, otherwise `false`.\n */\nexport function hasParentByName(\n vm: ComponentPublicInstance | undefined | null,\n name: string,\n): boolean {\n return findParentByName(vm, name) !== undefined;\n}\n","import { type ComponentPublicInstance } from \"vue\";\n\n/**\n * @public\n */\nexport class ErrorData {\n public error: Error;\n public vm: ComponentPublicInstance | null;\n public info: string;\n\n public constructor(\n error: Error,\n vm: ComponentPublicInstance | null,\n info: string,\n ) {\n this.error = error;\n this.vm = vm;\n this.info = info;\n }\n}\n","import { ErrorData } from \"./ErrorData\";\n\n/**\n * @public\n */\nexport class ErrorViewData {\n public hasError: boolean;\n public payload?: ErrorData;\n\n public constructor(hasError = false, payload?: ErrorData) {\n this.hasError = hasError;\n this.payload = payload;\n }\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging -- technical\n * debt, the class and the interface should not have the same name */\n\nimport { ErrorItem } from \"../FErrorList\";\n\n/**\n * @public\n */\nexport interface FormErrorList extends ErrorItem {\n // ? These fields are used in error list\n focusElementId?: string;\n id: string;\n isValid: boolean;\n numberOfTimesSubmitted: number;\n title: string;\n}\n\n/**\n * @public\n */\nexport class FormErrorList implements FormErrorList {\n public focusElementId? = \"\";\n public id = \"\";\n public isValid = false;\n public numberOfTimesSubmitted = 0;\n public title = \"\";\n\n public constructor(fields: FormErrorList) {\n Object.assign(this, fields);\n }\n}\n","import { FormErrorList } from \"./FormErrorList\";\n\n/**\n * @public\n */\nexport interface FormStepFields {\n isOpen: boolean;\n isAnyFieldTouched: boolean;\n}\n\n/**\n * @public\n */\nexport class FormStep implements FormErrorList, FormStepFields {\n public isOpen = false;\n public isAnyFieldTouched = false;\n\n public focusElementId? = \"\";\n public id = \"\";\n public isValid = false;\n public numberOfTimesSubmitted = 0;\n public title = \"\";\n\n public constructor(fields: FormStepFields) {\n Object.assign(this, fields);\n }\n}\n","/**\n * @public\n */\nexport enum MenuAction {\n MOVE_NEXT,\n MOVE_PREV,\n MOVE_FIRST,\n MOVE_LAST,\n ACTIVATE,\n}\n","import { MenuAction } from \"../types\";\n\n/**\n * @internal\n */\nexport function actionFromKeyboardEvent(\n event: KeyboardEvent,\n): MenuAction | null {\n switch (event.key) {\n case \"End\":\n return MenuAction.MOVE_LAST;\n case \"Home\":\n return MenuAction.MOVE_FIRST;\n case \"Up\":\n case \"ArrowUp\":\n return MenuAction.MOVE_PREV;\n case \"Down\":\n case \"ArrowDown\":\n return MenuAction.MOVE_NEXT;\n case \"Left\":\n case \"ArrowLeft\":\n return MenuAction.MOVE_PREV;\n case \"Right\":\n case \"ArrowRight\":\n return MenuAction.MOVE_NEXT;\n case \"Tab\":\n if (event.shiftKey) {\n return MenuAction.MOVE_PREV;\n }\n return MenuAction.MOVE_NEXT;\n case \" \":\n case \"Spacebar\":\n case \"Enter\":\n return MenuAction.ACTIVATE;\n default:\n return null;\n }\n}\n","import {\n type App,\n type Directive,\n type DirectiveBinding,\n type Plugin,\n} from \"vue\";\nimport isEqual from \"lodash/isEqual\";\nimport {\n isValidatableHTMLElement,\n ValidationService,\n type ValidatableHTMLElement,\n type ValidatorName,\n type ValidatorConfigs,\n type ValidatorConfig,\n} from \"@fkui/logic\";\nimport { ComponentValidityEvent } from \"../../types\";\n\nimport { dispatchComponentUnmountEvent } from \"../../utils\";\n\nfunction getValidatableElement(element: HTMLElement): ValidatableHTMLElement {\n if (isValidatableHTMLElement(element)) {\n return element;\n }\n const validatableInsideElement = element.querySelector(\n \"input, textarea, select\",\n );\n if (validatableInsideElement) {\n return validatableInsideElement as ValidatableHTMLElement;\n } else {\n throw new Error(`Couldn't find any validatable element`);\n }\n}\n\nfunction triggerInitialValidationToSupportFFormStepValidation(\n el: HTMLElement,\n): void {\n const target = getValidatableElement(el);\n ValidationService.validateElement(target);\n}\n\nfunction registerValidators(\n el: HTMLElement,\n binding: DirectiveBinding<Record<string, ValidatorConfig>>,\n): void | never {\n const { modifiers: bindingModifiers = {}, value: bindingValue = {} } =\n binding;\n const target = getValidatableElement(el);\n\n Object.keys(bindingValue).forEach((validatorName) => {\n if (!bindingModifiers[validatorName]) {\n throw new Error(\n `Have you forget to add '${validatorName}' to v-validation.${validatorName}?`,\n );\n }\n });\n\n const validatorConfigs: ValidatorConfigs = {};\n (Object.keys(bindingModifiers) as ValidatorName[]).forEach(\n (validatorName) => {\n validatorConfigs[validatorName] = bindingValue[validatorName] || {};\n },\n );\n\n ValidationService.addValidatorsToElement(target, validatorConfigs);\n}\n\nconst ValidationDirective: Directive<\n HTMLElement,\n Record<string, ValidatorConfig>\n> = {\n beforeMount(el: HTMLElement, binding: DirectiveBinding): void {\n registerValidators(el, binding);\n },\n beforeUnmount(el: HTMLElement, _binding: DirectiveBinding): void {\n const validatableElement = getValidatableElement(el);\n dispatchComponentUnmountEvent(validatableElement);\n ValidationService.removeValidatorsFromElement(validatableElement);\n },\n updated(el: HTMLElement, binding): void {\n if (!isEqual(binding.value, binding.oldValue)) {\n registerValidators(el, binding);\n }\n },\n mounted(el: HTMLElement) {\n triggerInitialValidationToSupportFFormStepValidation(el);\n },\n};\n\nconst ValidationPrefixDirective: Directive<HTMLElement, string> = {\n beforeMount(el: HTMLElement, binding: DirectiveBinding) {\n el.addEventListener(\"component-validity\", (event) => {\n const e = event as CustomEvent<ComponentValidityEvent>;\n e.detail.errorMessage = `${binding.value}${e.detail.errorMessage}`;\n });\n },\n};\n\n/**\n * @public\n */\nexport const ValidationPlugin: Plugin = {\n install(app: App) {\n app.directive(\"validation\", ValidationDirective);\n app.directive(\"validationPrefix\", ValidationPrefixDirective);\n },\n};\n","import { type App, type ComponentPublicInstance, type Plugin } from \"vue\";\nimport { EventBus } from \"../../utils\";\nimport { ErrorData } from \"../../types\";\n\ndeclare module \"../../utils/event-bus\" {\n export interface EventBusMap {\n [UNHANDLED_ERROR_EVENT]: [ErrorData];\n }\n}\n\n/**\n * @public\n */\nexport const UNHANDLED_ERROR_EVENT = \"unhandled-error\" as const;\n\n/**\n * @public\n */\nexport interface ErrorPluginOptions {\n /**\n * If `true` a `warnHandler` will be installed to make all warnings as\n * errors in development mode. Default `true`.\n *\n * In production builds this is ignored out-of-the-box thus only affecting the\n * local builds and when running E2E tests from CI (as it uses \"npm start\"\n * internally to start the server).\n *\n * https://vuejs.org/v2/api/#warnHandler\n */\n captureWarnings?: boolean;\n\n /**\n * If `true` errors will be logged to console by default.\n */\n logToConsole?: boolean;\n}\n\nconst defaults: ErrorPluginOptions = {\n captureWarnings: true,\n logToConsole: true,\n};\n\n/**\n * @internal\n */\nexport function errorHandler(\n options: ErrorPluginOptions,\n error: unknown,\n vm: ComponentPublicInstance | null,\n info: string,\n): void {\n if (options.logToConsole) {\n const consoleOutput = info\n ? [`Error in ${info}:`, error, vm]\n : [error, vm];\n\n /* eslint-disable-next-line no-console -- expected to log */\n console.error(...consoleOutput);\n }\n\n if (error instanceof Error) {\n EventBus.$emit(UNHANDLED_ERROR_EVENT, new ErrorData(error, vm, info));\n } else {\n EventBus.$emit(\n UNHANDLED_ERROR_EVENT,\n new ErrorData(new Error(String(error)), vm, info),\n );\n }\n}\n\n/**\n * @internal\n */\nexport function warnHandler(\n options: ErrorPluginOptions,\n msg: string,\n vm: ComponentPublicInstance | null,\n trace: string,\n): void {\n if (options.logToConsole) {\n /* eslint-disable-next-line no-console -- expected to log */\n console.warn(`Warning:`, msg, trace);\n }\n\n const error: Error = {\n name: \"warning\",\n message: msg,\n stack: trace,\n };\n\n EventBus.$emit(UNHANDLED_ERROR_EVENT, new ErrorData(error, vm, \"warning\"));\n}\n\n/**\n * @public\n */\nconst ErrorPlugin: Plugin<ErrorPluginOptions> = {\n install(app: App, options): void {\n const config = { ...defaults, ...options };\n app.config.errorHandler = errorHandler.bind(undefined, config);\n\n if (config.captureWarnings) {\n app.config.warnHandler = warnHandler.bind(undefined, config);\n }\n },\n};\n\nexport default ErrorPlugin;\n","<template>\n <div data-test=\"f-error-page\">\n <h1>Fel</h1>\n <p>Ett fel har uppstått.</p>\n <a href=\"/\">Gå till startsidan</a>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { type PropType, defineComponent } from \"vue\";\nimport { ErrorData } from \"../../types\";\n\nexport default defineComponent({\n name: \"FErrorPage\",\n props: {\n payload: {\n type: Object as PropType<ErrorData>,\n required: false,\n default: null,\n },\n },\n});\n</script>\n","<template>\n <div>\n <component :is=\"errorComponent\" v-if=\"hasError\" :payload=\"payload\"></component>\n <component :is=\"defaultComponent\" v-else-if=\"defaultComponent\"></component>\n <slot v-else></slot>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { type Component, defineComponent, type PropType } from \"vue\";\nimport { EventBus } from \"../../utils\";\nimport { ErrorViewData } from \"../../types\";\nimport FErrorPage from \"./FErrorPage.vue\";\nimport { UNHANDLED_ERROR_EVENT } from \"./ErrorPlugin\";\n\nexport default defineComponent({\n name: \"FErrorHandlingApp\",\n props: {\n defaultComponent: {\n type: [Function, Object] as PropType<Component | undefined>,\n required: false,\n default: undefined,\n },\n errorComponent: {\n type: [Function, Object] as PropType<Component>,\n required: false,\n default: FErrorPage,\n },\n },\n data() {\n return new ErrorViewData();\n },\n watch: {\n $route() {\n this.hasError = false;\n },\n },\n created() {\n EventBus.$on(UNHANDLED_ERROR_EVENT, (payload) => {\n this.hasError = true;\n this.payload = payload;\n });\n },\n});\n</script>\n","import { FDate } from \"@fkui/date\";\n\nexport function isMonthBefore(date: FDate, minDate?: FDate): boolean {\n return Boolean(minDate && date.isBefore(minDate.startOfMonth()));\n}\n\nexport function isMonthAfter(date: FDate, maxDate?: FDate): boolean {\n return Boolean(maxDate && date.isAfter(maxDate.endOfMonth()));\n}\n\n/**\n * Returns true if the month of the passed date is outside of allowed bounds.\n */\nexport function isInvalidMonth(\n date: FDate,\n minDate?: FDate,\n maxDate?: FDate,\n): boolean {\n const startOfMonth = date.startOfMonth();\n return (\n isMonthBefore(startOfMonth, minDate) ||\n isMonthAfter(startOfMonth, maxDate)\n );\n}\n","import { FDate } from \"@fkui/date\";\nimport { type TranslateFunction } from \"@fkui/logic\";\nimport { isInvalidMonth } from \"./is-invalid-month\";\n\n/**\n * Returns a message for when attempting to navigate to a month outside of the min or max date.\n *\n * @internal\n */\nexport function getMessage(\n $t: TranslateFunction,\n date: FDate,\n minDate: FDate,\n maxDate: FDate,\n): string | undefined {\n const invalidMonth = isInvalidMonth(date, minDate, maxDate);\n if (!invalidMonth) {\n return undefined;\n }\n\n if (date.isBefore(minDate)) {\n const { day, monthName, year } = minDate;\n return $t(\n \"fkui.calendar.error.below-min-date\",\n \"Du kan inte välja en dag före {{day}} {{month}} {{year}}\",\n { day: day, month: monthName, year: year },\n );\n }\n\n if (date.isAfter(maxDate)) {\n const { day, monthName, year } = maxDate;\n return $t(\n \"fkui.calendar.error.above-max-date\",\n \"Du kan inte välja en dag efter {{day}} {{month}} {{year}}\",\n { day: day, month: monthName, year: year },\n );\n }\n}\n","<template>\n <div class=\"calendar-navbar\">\n <div class=\"calendar-navbar__month\" tabindex=\"-1\">\n {{ currentText }}\n </div>\n\n <button\n ref=\"previousButton\"\n class=\"calendar-navbar__arrow calendar-navbar__arrow--previous\"\n type=\"button\"\n :aria-disabled=\"previousDisabled\"\n :aria-live=\"isFocused('previousButton') ? 'polite' : 'off'\"\n @click.stop=\"onClickPreviousButton\"\n >\n <span class=\"sr-only\">\n {{ previousSrText }}\n </span>\n <f-icon :class=\"previousIconClasses\" name=\"arrow-right\"></f-icon>\n </button>\n\n <button\n ref=\"nextButton\"\n class=\"calendar-navbar__arrow calendar-navbar__arrow--next\"\n type=\"button\"\n :aria-disabled=\"nextDisabled\"\n :aria-live=\"isFocused('nextButton') ? 'polite' : 'off'\"\n @click.stop=\"onClickNextButton\"\n >\n <span class=\"sr-only\">{{ nextSrText }}</span>\n <f-icon :class=\"nextIconClasses\" name=\"arrow-right\"></f-icon>\n </button>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, type PropType } from \"vue\";\nimport { FDate } from \"@fkui/date\";\nimport { alertScreenReader } from \"@fkui/logic\";\nimport { FIcon } from \"../../components/FIcon\";\nimport { TranslationMixin } from \"../../plugins\";\nimport { isInvalidMonth } from \"./is-invalid-month\";\nimport { getMessage } from \"./get-message\";\n\nexport default defineComponent({\n name: \"ICalendarNavbar\",\n components: {\n FIcon,\n },\n mixins: [TranslationMixin],\n props: {\n /**\n * Focused month.\n */\n modelValue: {\n type: Object as PropType<FDate>,\n required: true,\n },\n /**\n * Min date.\n */\n minDate: {\n type: Object as PropType<FDate>,\n required: true,\n },\n /**\n * Max date.\n */\n maxDate: {\n type: Object as PropType<FDate>,\n required: true,\n },\n },\n emits: [\"change\", \"update:modelValue\"],\n computed: {\n previousDisabled(): boolean {\n return isInvalidMonth(this.modelValue.addMonths(-1), this.minDate, this.maxDate);\n },\n nextDisabled(): boolean {\n return isInvalidMonth(this.modelValue.addMonths(1), this.minDate, this.maxDate);\n },\n previousValue(): FDate {\n return this.modelValue.addMonths(-1);\n },\n nextValue(): FDate {\n return this.modelValue.addMonths(1);\n },\n currentText(): string {\n return this.getDateText(this.modelValue);\n },\n previousSrText(): string {\n return this.$t(\"fkui.calendar-navbar.previous\", \"Föregående månad\");\n },\n nextSrText(): string {\n return this.$t(\"fkui.calendar-navbar.next\", \"Nästa månad\");\n },\n previousIconClasses(): Record<string, boolean> {\n return {\n \"calendar-navbar__icon\": true,\n \"calendar-navbar__icon--disabled\": this.previousDisabled,\n };\n },\n nextIconClasses(): Record<string, boolean> {\n return {\n \"calendar-navbar__icon\": true,\n \"calendar-navbar__icon--disabled\": this.nextDisabled,\n };\n },\n },\n methods: {\n onClickPreviousButton(): void {\n if (!this.previousDisabled) {\n /**\n * V-model event.\n * @event update:modelValue\n * @param value\n * @type {FDate}\n */\n this.$emit(\"update:modelValue\", this.previousValue);\n\n /**\n * Vue2 v-model event.\n * @deprecated\n * @event change\n * @param value\n * @type {FDate}\n */\n this.$emit(\"change\", this.previousValue);\n\n const previousMonth = this.getDateText(this.previousValue);\n const previousMonthText = this.$t(\"fkui.calendar-navbar.previous-month\", \"{{ previousMonth }} visas\", {\n previousMonth,\n });\n alertScreenReader(previousMonthText, { assertive: true });\n return;\n }\n\n const message = getMessage(this.$t, this.previousValue, this.minDate, this.maxDate);\n if (message) {\n alertScreenReader(message, { assertive: true });\n }\n },\n onClickNextButton(): void {\n if (!this.nextDisabled) {\n this.$emit(\"update:modelValue\", this.nextValue);\n this.$emit(\"change\", this.nextValue);\n\n const nextMonth = this.getDateText(this.nextValue);\n const nextMonthText = this.$t(\"fkui.calendar-navbar.next-month\", \"{{ nextMonth }} visas\", {\n nextMonth,\n });\n alertScreenReader(nextMonthText, { assertive: true });\n return;\n }\n\n const message = getMessage(this.$t, this.nextValue, this.minDate, this.maxDate);\n if (message) {\n alertScreenReader(message, { assertive: true });\n }\n },\n getDateText(value: FDate): string {\n return `${value.monthName} ${value.year}`;\n },\n isFocused(ref: string): boolean {\n return document.activeElement === this.$refs[ref];\n },\n },\n});\n</script>\n","import { FDate } from \"@fkui/date\";\n\n/**\n * Returns passed days in week before first day in array.\n *\n * @public\n */\nexport function getDayStartOffset(days: FDate[]): number {\n return days[0].weekDay - 1;\n}\n\n/**\n * Returns remaining days in week after last day in array.\n *\n * @public\n */\nexport function getDayEndOffset(days: FDate[]): number {\n return 7 - days[days.length - 1].weekDay;\n}\n","<template>\n <table class=\"calendar-month__table\" role=\"application\" @focusin=\"onFocusin\" @focusout=\"onFocusout\">\n <colgroup>\n <col v-if=\"!internalHideWeekNumbers\" class=\"calendar-month__col--week\" />\n <col class=\"calendar-month__col--day\" />\n <col class=\"calendar-month__col--day\" />\n <col class=\"calendar-month__col--day\" />\n <col class=\"calendar-month__col--day\" />\n <col class=\"calendar-month__col--day\" />\n <col class=\"calendar-month__col--day\" />\n <col class=\"calendar-month__col--day\" />\n </colgroup>\n\n <thead role=\"presentation\">\n <tr role=\"presentation\">\n <th\n v-if=\"!internalHideWeekNumbers\"\n scope=\"col\"\n aria-hidden=\"true\"\n class=\"calendar-month__header-cell\"\n ></th>\n\n <th\n v-for=\"weekday in weekdays\"\n :key=\"weekday.name\"\n scope=\"col\"\n role=\"presentation\"\n class=\"calendar-month__header-cell\"\n >\n <abbr aria-hidden=\"true\" :title=\"weekday.name\">{{\n showShortWeekdays ? weekday.shortName : weekday.name\n }}</abbr>\n </th>\n </tr>\n </thead>\n\n <tbody role=\"presentation\">\n <tr v-for=\"week in weeks\" :key=\"week.week\" role=\"presentation\">\n <td\n v-if=\"!internalHideWeekNumbers\"\n class=\"calendar-month__cell calendar-month__cell--week-number\"\n aria-hidden=\"true\"\n >\n {{ week.week }}\n </td>\n\n <td\n v-if=\"getDayStartOffset(week.days)\"\n class=\"calendar-month__cell\"\n :colspan=\"getDayStartOffset(week.days)\"\n aria-hidden=\"true\"\n ></td>\n\n <td v-for=\"day in week.days\" :key=\"day.toString()\" class=\"calendar-month__cell\" role=\"presentation\">\n <!-- @slot Slot for rendering of day content.\n\nSlot scope is available through `v-slot=\"{ <propertyName> }\"`, e.g.\n`v-slot=\"{ date, focused }\"`.\n\nThe following properties are available:\n\n* `date: FDate;` Date of day.\n* `focused: bool;` If month component is focused or not.\n -->\n <slot :date=\"day\" :focused=\"focused\"></slot>\n </td>\n\n <td\n v-if=\"getDayEndOffset(week.days)\"\n class=\"calendar-month__cell\"\n :colspan=\"getDayEndOffset(week.days)\"\n aria-hidden=\"true\"\n ></td>\n </tr>\n\n <tr v-if=\"weeks.length < 5\" aria-hidden=\"true\">\n <td class=\"calendar-month__cell\" :colspan=\"totalCols\" aria-hidden=\"true\"></td>\n </tr>\n\n <tr v-if=\"weeks.length < 6\" aria-hidden=\"true\">\n <td class=\"calendar-month__cell\" :colspan=\"totalCols\" aria-hidden=\"true\"></td>\n </tr>\n </tbody>\n </table>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, type PropType } from \"vue\";\nimport { FDate, groupByWeek, getWeekdayNamings } from \"@fkui/date\";\nimport { debounce } from \"@fkui/logic\";\nimport { getDayStartOffset, getDayEndOffset } from \"./get-day-offset\";\n\nexport default defineComponent({\n name: \"ICalendarMonthGrid\",\n props: {\n /**\n * Focused month.\n * @model\n */\n value: {\n type: Object as PropType<FDate>,\n required: true,\n },\n /**\n * Hide week numbers.\n */\n hideWeekNumbers: {\n type: Boolean,\n required: false,\n default: false,\n },\n },\n data() {\n return {\n weekdays: getWeekdayNamings(),\n focused: false,\n resizeObserver: undefined as ResizeObserver | undefined,\n internalHideWeekNumbers: false,\n showShortWeekdays: false,\n };\n },\n computed: {\n totalCols(): number {\n return this.hideWeekNumbers ? 7 : 8;\n },\n weeks(): Array<{ week: number; days: FDate[] }> {\n return groupByWeek(this.value.startOfMonth(), this.value.endOfMonth());\n },\n },\n mounted() {\n this.resizeObserver = new ResizeObserver(debounce(this.onResize, 100));\n this.resizeObserver.observe(this.$el);\n this.onResize();\n },\n unmounted() {\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n }\n },\n methods: {\n onResize(): void {\n const component = this.$el as HTMLElement;\n this.internalHideWeekNumbers = this.hideWeekNumbers || component.offsetWidth < 320;\n this.showShortWeekdays = component.offsetWidth < 640;\n },\n onFocusin() {\n this.focused = true;\n },\n onFocusout(e: FocusEvent) {\n const component = this.$el as HTMLElement;\n const relatedTarget = e.relatedTarget as Node;\n\n if (!component.contains(relatedTarget)) {\n this.focused = false;\n }\n },\n getDayStartOffset,\n getDayEndOffset,\n },\n});\n</script>\n","const DayStep = {\n ArrowRight: 1,\n ArrowLeft: -1,\n ArrowUp: -7,\n ArrowDown: 7,\n};\n\n/**\n * @internal\n */\nexport function isDayStepKey(\n e: KeyboardEvent,\n): e is KeyboardEvent & { code: keyof typeof DayStep } {\n return Object.keys(DayStep).includes(e.code);\n}\n\n/**\n * Returns number of day steps to increment or decrement current day based on arrow navigation.\n *\n * This function is based on default month navigation where left or right arrows navigates\n * one day step, while up or down arrows navigates one week.\n *\n * @internal\n */\nexport function getDayStep(\n keyBoardEvent: KeyboardEvent & { code: keyof typeof DayStep },\n): number {\n return DayStep[keyBoardEvent.code];\n}\n","import { FDate } from \"@fkui/date\";\n\nfunction isSameMonth(a: FDate, b: FDate): boolean {\n return a.startOfMonth().equals(b.startOfMonth());\n}\n\nexport function getDayTabindex(\n date: FDate,\n active: FDate | undefined,\n entry: FDate | undefined,\n): 0 | -1 {\n const ref = active ?? entry;\n\n if (ref && isSameMonth(ref, date)) {\n return date.equals(ref) ? 0 : -1;\n } else {\n return date.day === 1 ? 0 : -1;\n }\n}\n","<template>\n <i-calendar-month-grid :value=\"modelValue\">\n <template #default=\"{ date }\">\n <button\n :ref=\"date.toString()\"\n class=\"calendar-month__button\"\n data-test=\"select-day-button\"\n :data-date=\"date.toString()\"\n :tabindex=\"getTabindex(date)\"\n type=\"button\"\n @click.stop.prevent=\"onClickDay(date)\"\n @keydown=\"onKeydownDay(date, $event)\"\n >\n <!-- @slot Slot for rendering of day content. -->\n <slot :date=\"date\" :is-focused=\"isDayFocused(date)\"></slot>\n </button>\n </template>\n </i-calendar-month-grid>\n</template>\n\n<script lang=\"ts\">\nimport { FDate } from \"@fkui/date\";\nimport { alertScreenReader, focus } from \"@fkui/logic\";\nimport { defineComponent, type PropType } from \"vue\";\nimport { getHTMLElementFromVueRef } from \"../../utils\";\nimport { TranslationMixin } from \"../../plugins\";\nimport ICalendarMonthGrid from \"./ICalendarMonthGrid.vue\";\nimport { getDayStep, isDayStepKey } from \"./get-day-step\";\nimport { getDayTabindex } from \"./get-day-tabindex\";\nimport { getMessage } from \"./get-message\";\n\nexport default defineComponent({\n name: \"ICalendarMonth\",\n components: {\n ICalendarMonthGrid,\n },\n mixins: [TranslationMixin],\n props: {\n /**\n * Active month.\n * @model\n */\n modelValue: {\n type: Object as PropType<FDate>,\n required: true,\n },\n /**\n * Date to focus on when component gains focus.\n *\n * Consumers can update this related to active month.\n * If undefined, the first day of the month will gain focus.\n */\n tabDate: {\n type: Object as PropType<FDate | undefined>,\n required: false,\n default: undefined,\n },\n /**\n * Min date.\n */\n minDate: {\n type: Object as PropType<FDate>,\n required: true,\n },\n /**\n * Max date.\n */\n maxDate: {\n type: Object as PropType<FDate>,\n required: true,\n },\n },\n emits: [\"change\", \"click\", \"update:modelValue\"],\n methods: {\n onClickDay(date: FDate): void {\n /**\n * `click` event.\n * @event click\n * @type {string}\n */\n this.$emit(\"click\", date);\n },\n async onKeydownDay(date: FDate, event: KeyboardEvent): Promise<void> {\n if (!isDayStepKey(event)) {\n return;\n }\n\n event.preventDefault();\n const dayStep = getDayStep(event);\n const navigatedDay = date.addDays(dayStep);\n const navigatedMonth = navigatedDay.startOfMonth();\n\n const message = getMessage(this.$t, navigatedDay, this.minDate, this.maxDate);\n if (message) {\n alertScreenReader(message, { assertive: true });\n return;\n }\n\n /**\n * `v-model` event.\n * @event update:modelValue\n * @type {string}\n */\n this.$emit(\"update:modelValue\", navigatedMonth);\n\n /**\n * Vue2 `v-model` event.\n * @deprecated\n * @event change\n * @type {string}\n */\n this.$emit(\"change\", navigatedMonth);\n\n if (navigatedDay.month !== date.month) {\n await this.$nextTick(); // required for refs to be updated when navigating to another month\n }\n\n this.$forceUpdate(); // required for provided data to be updated\n const navigatedDayRef = this.$refs[navigatedDay.toString()];\n\n if (navigatedDayRef) {\n const navigatedDayElement = getHTMLElementFromVueRef(navigatedDayRef);\n focus(navigatedDayElement);\n }\n },\n isDayFocused(date: FDate): boolean {\n return document.activeElement === this.$refs[date.toString()];\n },\n getTabindex(date: FDate): 0 | -1 {\n let activeDate = undefined;\n\n if (document.activeElement instanceof HTMLElement) {\n const activeString = document.activeElement.dataset.date;\n activeDate = activeString ? FDate.fromIso(activeString) : undefined;\n }\n\n return getDayTabindex(date, activeDate, this.tabDate);\n },\n },\n});\n</script>\n","<template>\n <div class=\"calendar__wrapper\">\n <i-calendar-navbar\n :model-value=\"modelValue\"\n :min-date=\"minDate\"\n :max-date=\"maxDate\"\n @update:model-value=\"onChangeMonth\"\n ></i-calendar-navbar>\n\n <i-calendar-month\n :model-value=\"modelValue\"\n :min-date=\"minDate\"\n :max-date=\"maxDate\"\n :tab-date=\"tabDate\"\n @click=\"onClickDay\"\n @update:model-value=\"onChangeMonth\"\n >\n <template #default=\"{ date, focused }\">\n <!-- @slot Slot for calendar day. -->\n <slot :date=\"date\" :is-focused=\"focused\"></slot>\n </template>\n </i-calendar-month>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, type PropType } from \"vue\";\nimport { FDate } from \"@fkui/date\";\nimport ICalendarNavbar from \"../../internal-components/calendar/ICalendarNavbar.vue\";\nimport ICalendarMonth from \"../../internal-components/calendar/ICalendarMonth.vue\";\n\nexport default defineComponent({\n name: \"FCalendar\",\n components: {\n ICalendarNavbar,\n ICalendarMonth,\n },\n props: {\n /**\n * Active month.\n * @model\n */\n modelValue: {\n type: Object as PropType<FDate>,\n required: true,\n },\n /**\n * Date to set tabindex on when component gains focus.\n *\n * Consumers can update this related to active month.\n * If undefined, the first day of the month will gain focus.\n */\n tabDate: {\n type: Object as PropType<FDate | undefined>,\n required: false,\n default: undefined,\n },\n /**\n * Min date.\n */\n minDate: {\n type: Object as PropType<FDate>,\n required: true,\n },\n /**\n * Max date.\n */\n maxDate: {\n type: Object as PropType<FDate>,\n required: true,\n },\n },\n emits: [\"click\", \"change\", \"update:modelValue\"],\n methods: {\n onClickDay(date: FDate): void {\n /**\n * `click` event. Emitted when a calendar day is clicked.\n * @event click\n * @type {FDate}\n */\n this.$emit(\"click\", date);\n },\n onChangeMonth(date: FDate): void {\n /**\n * `v-model` event. Emitted when changing to a different month in the calendar.\n * @event update:modelValue\n * @type {FDate}\n */\n this.$emit(\"update:modelValue\", date);\n\n /**\n * Vue2 `v-model` event. Emitted when changing to a different month in the calendar.\n * @deprecated\n * @event change\n * @type {FDate}\n */\n this.$emit(\"change\", date);\n },\n },\n});\n</script>\n","import { DateFormat, FDate } from \"@fkui/date\";\nimport { type TranslateFunction } from \"@fkui/logic\";\n\n/**\n * @public\n *\n * Returns day screenreader text with information about its state and date.\n */\nexport function getCalendarDaySrText(\n day: FDate,\n enabled: boolean,\n selected: boolean,\n t: TranslateFunction,\n): string {\n const parts = [];\n\n if (!enabled) {\n parts.push(t(\"fkui.calendar.day.unselectable\", \"inte valbar\"));\n } else if (selected) {\n parts.push(t(\"fkui.calendar.day.selected\", \"vald dag\"));\n }\n\n const today = FDate.now();\n\n if (day.equals(today)) {\n parts.push(t(\"fkui.calendar.day.today\", \"idag\"));\n } else if (day.equals(today.addDays(-1))) {\n parts.push(t(\"fkui.calendar.day.yesterday\", \"igår\"));\n } else if (day.equals(today.addDays(1))) {\n parts.push(t(\"fkui.calendar.day.tomorrow\", \"imorgon\"));\n }\n\n parts.push(day.toString(DateFormat.FULL));\n\n return parts.join(\" \");\n}\n","<template>\n <span :class=\"dayClasses\">\n <span aria-hidden=\"true\">{{ day.day }}</span>\n <span class=\"sr-only\">{{ srText }}</span>\n </span>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, type PropType } from \"vue\";\nimport { FDate } from \"@fkui/date\";\nimport { TranslationMixin } from \"../../plugins\";\nimport { getCalendarDaySrText } from \"./get-calendar-day-sr-text\";\n\nexport default defineComponent({\n name: \"FCalendarDay\",\n mixins: [TranslationMixin],\n props: {\n /**\n * Day to render.\n */\n day: {\n type: Object as PropType<FDate>,\n required: true,\n },\n /**\n * Set to `true` if day is enabled.\n */\n enabled: {\n type: Boolean,\n required: false,\n default: true,\n },\n /**\n * Set to `true` if day is focused.\n */\n focused: {\n type: Boolean,\n required: false,\n default: false,\n },\n /**\n * Set to `true` if day is selected.\n */\n selected: {\n type: Boolean,\n required: false,\n default: false,\n },\n /**\n * Set to `true` if day should be highlighted.\n */\n highlight: {\n type: Boolean,\n required: false,\n default: false,\n },\n },\n computed: {\n srText(): string {\n return getCalendarDaySrText(this.day, this.enabled, this.selected, this.$t);\n },\n dayClasses(): string[] {\n const component = \"calendar-day\";\n const classes = [component];\n\n if (this.highlight) {\n classes.push(`${component}--highlight`);\n }\n if (this.enabled) {\n if (this.selected) {\n classes.push(`${component}--selected`);\n }\n } else {\n classes.push(`${component}--disabled`);\n }\n\n return classes;\n },\n },\n});\n</script>\n","interface PageOffset {\n pageXOffset: number;\n pageYOffset: number;\n}\n\nfunction offset(\n page: PageOffset,\n el: HTMLElement,\n): { top: number; left: number } {\n const rect = el.getBoundingClientRect();\n return {\n top: rect.top + page.pageYOffset,\n left: rect.left + page.pageXOffset,\n };\n}\n\nexport function clamp(value: number, min: number, max: number): number {\n return Math.max(Math.min(value, max), min);\n}\n\nexport function getElement(\n anchor: string | HTMLElement | null | undefined,\n): HTMLElement | null {\n if (!anchor) {\n return null;\n }\n if (typeof anchor === \"string\") {\n return document.getElementById(anchor);\n } else {\n return anchor;\n }\n}\n\n/**\n * @internal\n */\nexport enum SpacingDirection {\n \"Horizontal\",\n \"Vertical\",\n \"Both\",\n \"None\",\n}\n\nexport enum Placement {\n /** popup below and alignment towards the left edge. */\n \"A\" = \"A\",\n /** popup below and alignment towards the right edge. */\n \"B\" = \"B\",\n /** popup above and alignment towards the left edge. */\n \"C\" = \"C\",\n /** popup above and alignment towards the right edge. */\n \"D\" = \"D\",\n /** popup right of anchor vertically centered. */\n \"E\" = \"E\",\n /** popup left of anchor vertically centered. */\n \"F\" = \"F\",\n /** popup to the right of the anchor at the top of the area. */\n \"G\" = \"G\",\n /** popup to the left of the anchor at the top of the area. */\n \"H\" = \"H\",\n /** popup vertically and horizontally centered in area. */\n \"I\" = \"I\",\n /**\n * Fallback\n * - If inline is set to never, the popup is positioned below the anchor without inlining.\n * - If inline is set to auto, the popup will appear inline below the anchor.\n */\n \"Fallback\" = \"Fallback\",\n /** Placement not calculated. */\n \"NotCalculated\" = \"NotCalculated\",\n}\n\nexport enum CandidateOrder {\n \"Default\" = \"Default\",\n \"IPopupError\" = \"IPopupError\",\n}\n\nexport interface Point {\n x: number;\n y: number;\n}\n\nexport interface Rect extends Point {\n width: number;\n height: number;\n}\n\nexport interface Candidate extends Rect {\n /**\n * Which directions to include spacing in calculation for candidate position.\n */\n direction: SpacingDirection;\n placement: Placement;\n}\n\ntype AllCandidates = [\n Candidate,\n Candidate,\n Candidate,\n Candidate,\n Candidate,\n Candidate,\n Candidate,\n Candidate,\n Candidate,\n];\n\nexport interface FitInsideAreaOptions<T> {\n /**\n * The target area to fit inside the area.\n */\n target: T;\n\n /**\n * Anchor point. The target area is positioned relative to this point inside\n * area.\n */\n anchor: T;\n\n /**\n * Area to fit target inside.\n */\n area: T;\n\n /**\n * Restrict area to given viewport, i.e. a limited rectangle _inside_ the\n * area. Typically this is used when the area is a scrollable region.\n *\n * If you pass `<html>` element (`document.documentElement`) it uses the\n * windows viewport. See [CSSOM definition of clientWidth and\n * clientHeight](https://www.w3.org/TR/cssom-view-1/#dom-element-clientwidth).\n */\n viewport?: T;\n\n /**\n * Minimum amount of space (in pixels) between target, anchor and area.\n */\n spacing: number;\n\n /**\n * Determines the order in which the candidates are checked, first valid candidate will be used.\n */\n candidateOrder: CandidateOrder;\n}\n\nexport interface FitInsideAreaResult extends Point {\n placement: Placement;\n}\n\n/**\n * Given two rectangles it generates a list of candidate positions for the\n * target rectangle.\n *\n * Left-aligned | Right-aligned\n * +---------+ | +---------+\n * | C | | | D |\n * +---------+ | +---------+\n * (spacing) | (spacing)\n * +------+ | +------+\n * |Anchor| | |Anchor|\n * +------+ | +------+\n * (spacing) | (spacing)\n * +---------+ | +---------+\n * | A | | | B |\n * +---------+ | +---------+\n *\n * Centered Right (E) | Centered Left (F)\n * +----+ | +----+\n * +------+ | | | | | +------+\n * |Anchor| | E | | | F | |Anchor|\n * +------+ | | | | | +------+\n * +----+ | +----+\n *\n * Position G: Like E but positioned at the top of the clippedArea\n * Position H: Like F but positioned at the top of the clippedArea\n *\n * Position I: Vertically and horizontally centered in the clippedArea\n * +------------+\n * | X----+ |\n * | | I | |\n * | +----+ |\n * +------------+\n *\n * @internal\n */\nexport function getCandidates(\n anchor: Rect,\n target: Rect,\n clippedArea: Rect,\n spacing: number,\n candidateOrder: CandidateOrder,\n): AllCandidates {\n const dw = target.width - anchor.width;\n const a: Candidate = {\n placement: Placement.A,\n x: anchor.x,\n y: anchor.y + anchor.height + spacing,\n width: target.width,\n height: target.height,\n direction: SpacingDirection.Vertical,\n };\n const b: Candidate = {\n placement: Placement.B,\n x: anchor.x - dw,\n y: anchor.y + anchor.height + spacing,\n width: target.width,\n height: target.height,\n direction: SpacingDirection.Vertical,\n };\n const c: Candidate = {\n placement: Placement.C,\n x: anchor.x,\n y: anchor.y - target.height - spacing,\n width: target.width,\n height: target.height,\n direction: SpacingDirection.Vertical,\n };\n const d: Candidate = {\n placement: Placement.D,\n x: anchor.x - dw,\n y: anchor.y - target.height - spacing,\n width: target.width,\n height: target.height,\n direction: SpacingDirection.Vertical,\n };\n const e: Candidate = {\n placement: Placement.E,\n x: anchor.x + anchor.width + spacing,\n y: anchor.y + anchor.height / 2 - target.height / 2,\n width: target.width,\n height: target.height,\n direction: SpacingDirection.Horizontal,\n };\n const f: Candidate = {\n placement: Placement.F,\n x: anchor.x - (target.width + spacing),\n y: anchor.y + anchor.height / 2 - target.height / 2,\n width: target.width,\n height: target.height,\n direction: SpacingDirection.Horizontal,\n };\n const g: Candidate = {\n placement: Placement.G,\n x: anchor.x + anchor.width + spacing,\n y: clippedArea.y + spacing,\n width: target.width,\n height: target.height,\n direction: SpacingDirection.Both,\n };\n const h: Candidate = {\n placement: Placement.H,\n x: anchor.x - (target.width + spacing),\n y: clippedArea.y + spacing,\n width: target.width,\n height: target.height,\n direction: SpacingDirection.Both,\n };\n const i: Candidate = {\n placement: Placement.I,\n x: clippedArea.x + (clippedArea.width - target.width) / 2,\n y: clippedArea.y + (clippedArea.height - target.height) / 2,\n width: target.width,\n height: target.height,\n direction: SpacingDirection.None,\n };\n\n if (candidateOrder === CandidateOrder.IPopupError) {\n return [b, a, d, c, e, f, f, f, f];\n } else {\n //CandidateOrder.Default\n return [a, b, c, d, e, f, g, h, i];\n }\n}\n\n/**\n * Returns true if the inner rect is fully contained inside the outer rect\n * (minus spacing). Comparison is inclusive, i.e. the inner can overlap outer.\n *\n * @internal\n */\nexport function isInside(\n outer: Rect,\n inner: Candidate,\n spacing: number,\n): boolean {\n const isHorizontalDirection =\n inner.direction === SpacingDirection.Horizontal ||\n inner.direction === SpacingDirection.Both;\n const xSpacing = isHorizontalDirection ? spacing : 0;\n\n const isVerticalDirection =\n inner.direction === SpacingDirection.Vertical ||\n inner.direction === SpacingDirection.Both;\n const ySpacing = isVerticalDirection ? spacing : 0;\n\n const ax = [inner.x, inner.x + inner.width];\n const ay = [inner.y, inner.y + inner.height];\n const bx = [outer.x + xSpacing, outer.x + outer.width - xSpacing];\n const by = [outer.y + ySpacing, outer.y + outer.height - ySpacing];\n\n if (ax[0] < bx[0] || ax[1] > bx[1]) {\n return false;\n }\n if (ay[0] < by[0] || ay[1] > by[1]) {\n return false;\n }\n return true;\n}\n\nfunction isElementOptions(\n options: FitInsideAreaOptions<Rect> | FitInsideAreaOptions<HTMLElement>,\n): options is FitInsideAreaOptions<HTMLElement> {\n return options.target instanceof HTMLElement;\n}\n\n/**\n * Clip given rect so no edges is outside the viewport, i.e. the rect where rect\n * and viewport intersects.\n *\n * @internal\n */\nexport function clipRect(src: Rect, clip?: Rect): Rect {\n if (!clip) {\n return src;\n }\n\n const x = Math.max(src.x, clip.x);\n const y = Math.max(src.y, clip.y);\n const width = Math.min(src.x + src.width, clip.x + clip.width) - x;\n const height = Math.min(src.y + src.height, clip.y + clip.height) - y;\n return { x, y, width, height };\n}\n\n/**\n * Get elements position relative to root element.\n *\n * @internal\n */\nexport function getAbsolutePosition(src: HTMLElement): Rect;\nexport function getAbsolutePosition(src?: HTMLElement): Rect | undefined;\nexport function getAbsolutePosition(src?: HTMLElement): Rect | undefined {\n if (!src) {\n return undefined;\n }\n\n const isRoot = src.isSameNode(document.documentElement);\n if (isRoot) {\n return {\n x: window.pageXOffset,\n y: window.pageYOffset,\n width: src.clientWidth,\n height: src.clientHeight,\n };\n }\n\n const rect = src.getBoundingClientRect();\n return {\n x: Math.floor(rect.left + window.pageXOffset),\n y: Math.floor(rect.top + window.pageYOffset),\n width: Math.floor(rect.width),\n height: Math.floor(rect.height),\n };\n}\n\n/**\n * Takes a rect or element and returns a suitable position inside given area. It\n * uses an anchor point to try to align the target.\n *\n * @public\n */\nexport function fitInsideArea(\n options: FitInsideAreaOptions<Rect> | FitInsideAreaOptions<HTMLElement>,\n): FitInsideAreaResult {\n if (isElementOptions(options)) {\n const {\n area: areaElement,\n anchor: anchorElement,\n target: targetElement,\n viewport: viewportElement,\n spacing,\n candidateOrder,\n } = options;\n const area = getAbsolutePosition(areaElement);\n const anchor = getAbsolutePosition(anchorElement);\n const target = getAbsolutePosition(targetElement);\n const viewport = getAbsolutePosition(viewportElement);\n const result = fitInsideArea({\n area,\n target,\n anchor,\n viewport,\n spacing,\n candidateOrder,\n });\n\n const offset = targetElement.offsetParent?.getBoundingClientRect();\n if (!offset) {\n return result;\n }\n return {\n ...result,\n x: result.x - (offset.left + window.pageXOffset),\n y: result.y - (offset.top + window.pageYOffset),\n };\n }\n\n const { anchor, target, area, viewport, spacing } = options;\n const clippedArea = clipRect(area, viewport);\n\n const candidates = getCandidates(\n anchor,\n target,\n clippedArea,\n spacing,\n options.candidateOrder,\n );\n\n /* try to find a good match, i.e. a candidate where the entire target fits\n * inside given area */\n const index = candidates.findIndex((it) =>\n isInside(clippedArea, it, spacing),\n );\n if (index >= 0) {\n const match = candidates[index];\n return { x: match.x, y: match.y, placement: match.placement };\n }\n\n /* if all candidates would be obscured position target below anchor but\n * try to keep as close to anchor horizontal position as possible */\n return {\n ...getFallbackPosition(anchor, target, clippedArea, spacing),\n placement: Placement.Fallback,\n };\n}\n\n/**\n * When opening poupup inline this metod\n * calculates the need scroll to get the\n * popup within the viewport.\n */\nexport function getScrollToPopup(param: {\n popup: HTMLElement;\n windowInnerHeight: number;\n scrollTop: number;\n spacing: number;\n}): number {\n const popupOffset = offset(\n { pageXOffset: 0, pageYOffset: param.scrollTop },\n param.popup,\n );\n const popupHeight = param.popup.offsetHeight;\n\n const neededScroll =\n popupOffset.top - param.windowInnerHeight + popupHeight + param.spacing;\n\n if (neededScroll > param.scrollTop) {\n return neededScroll;\n } else {\n return param.scrollTop;\n }\n}\n\n/**\n * Get the fallback position coordinates\n * try to align with anchor.x if there is room for the target\n * if target is outside the clippedArea, use no horizontal alignment\n *\n * @internal\n */\nexport function getFallbackPosition(\n anchor: Rect,\n target: Rect,\n clippedArea: Rect,\n spacing: number,\n): Point {\n const x = anchor.x - (target.width + spacing);\n const y = anchor.y + anchor.height + spacing;\n if (x >= clippedArea.x) {\n return {\n x: x,\n y: y,\n };\n } else {\n // no horizontal alignment\n return {\n x: clippedArea.x + spacing,\n y: y,\n };\n }\n}\n","import { config } from \"../../config\";\n\n/**\n * Get container element from one of the following sources (in order):\n *\n * 1. An explicit element given by the container prop.\n * 2. A parent marked as a popup container.\n * 3. Default configured popup container element (e.g. `<body>`).\n */\nexport function getContainer(\n element: Element,\n prop: HTMLElement | null | undefined,\n): HTMLElement {\n if (prop) {\n return prop;\n }\n const parent = element.closest<HTMLElement>(\".popup__container\");\n if (parent) {\n return parent;\n }\n return config.popupContainer;\n}\n","import { findTabbableElements } from \"@fkui/logic\";\nimport { getHTMLElementFromVueRef } from \"../../utils\";\n\nexport function getFocusableElement(\n rootElement: unknown,\n callback?: () => HTMLElement | null,\n): HTMLElement | null {\n /* if user callback is provided use that only, if it returns null no element should be focused */\n if (callback) {\n return callback();\n }\n\n /* if no callback is provided we lookup the first tabbable element in the popup */\n const popupElement = getHTMLElementFromVueRef(rootElement);\n const elements = findTabbableElements(popupElement);\n return elements[0] ?? null; /* null coalece */\n}\n","/**\n * @internal\n */\nexport const MIN_DESKTOP_WIDTH = 640;\n\n/**\n * Space between popup and anchor in px.\n *\n * @internal\n */\nexport const POPUP_SPACING = 20;\n","import { Placement } from \"./IPopupUtils\";\nimport { MIN_DESKTOP_WIDTH } from \"./constants\";\n\n/**\n * @internal\n */\nexport interface IsTeleportDisabledOptions {\n window: { innerWidth: number };\n placement: Placement | null;\n forceInline: boolean;\n forceOverlay: boolean;\n}\n\n/**\n * @internal\n */\nexport function isTeleportDisabled(\n options: IsTeleportDisabledOptions,\n): boolean {\n const { window, placement, forceInline, forceOverlay } = options;\n const isMobileSize = window.innerWidth < MIN_DESKTOP_WIDTH;\n let disableTeleport = isMobileSize || placement === Placement.Fallback;\n\n if (forceInline) {\n disableTeleport = true;\n } else if (forceOverlay) {\n disableTeleport = false;\n }\n\n return disableTeleport;\n}\n","<template>\n <teleport v-if=\"isOpen\" :to=\"teleportTarget\" :disabled=\"teleportDisabled\">\n <div ref=\"popup\" v-bind=\"$attrs\" :class=\"popupClasses\">\n <div\n ref=\"wrapper\"\n role=\"presentation\"\n class=\"popup__wrapper\"\n @click=\"onPopupClickHandler\"\n @keyup.esc.stop=\"onKeyEsc\"\n @keydown.tab=\"onKeyTab\"\n >\n <slot v-bind=\"{ toggleIsOpen, placement }\"></slot>\n </div>\n </div>\n </teleport>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, type PropType } from \"vue\";\nimport { handleTab, pushFocus, popFocus, type StackHandle } from \"@fkui/logic\";\nimport { config } from \"../../config\";\nimport { getElement, fitInsideArea, getScrollToPopup, Placement, CandidateOrder } from \"./IPopupUtils\";\nimport { getContainer } from \"./get-container\";\nimport { getFocusableElement } from \"./get-focusable-element\";\nimport { isTeleportDisabled } from \"./is-teleport-disabled\";\nimport { MIN_DESKTOP_WIDTH, POPUP_SPACING } from \"./constants\";\n\ninterface IPopupData {\n teleportDisabled: boolean;\n placement: Placement;\n focus: StackHandle | null;\n noCloseOnResize: boolean;\n}\n\nexport default defineComponent({\n name: \"IPopup\",\n inheritAttrs: false,\n props: {\n /**\n * Toggle open/closed popup.\n */\n isOpen: {\n type: Boolean,\n required: true,\n },\n /**\n * DOM element to position popup at.\n */\n anchor: {\n type: HTMLElement as PropType<HTMLElement | null | undefined>,\n required: false,\n default: undefined,\n },\n /**\n * Type of inline behaviour.\n * - `\"auto\"` changes between overlay or inline depending on window size.\n * - `\"always\"` forces the popup to always be inline.\n * - `\"never\"` forces the popup to never be inline.\n */\n inline: {\n type: String as PropType<\"always\" | \"never\" | \"auto\">,\n required: false,\n validator(value: string) {\n // The value must match one of these strings\n return [\"always\", \"never\", \"auto\"].includes(value);\n },\n default: \"auto\",\n },\n /**\n * Force popup to always display inline.\n * @deprecated Use `inline=\"always\"` instead.\n */\n alwaysInline: {\n type: Boolean,\n required: false,\n default: false,\n },\n /**\n * Which element to use as container.\n */\n container: {\n type: HTMLElement as PropType<HTMLElement | null | undefined>,\n required: false,\n default: undefined,\n },\n /**\n * Which element to use as viewport.\n */\n viewport: {\n type: HTMLElement as PropType<HTMLElement>,\n required: false,\n default(): HTMLElement {\n return document.documentElement;\n },\n },\n /**\n * Prevents tabbing outside of component.\n */\n keyboardTrap: {\n type: Boolean,\n required: false,\n default: true,\n },\n /**\n * Function that returns the element that will receive focus\n */\n focusElement: {\n type: Function as PropType<() => HTMLElement | null>,\n required: false,\n default: null,\n },\n /**\n * Set focus on first tabbable element (or element in the `focusElement` prop if provided) when opened.\n */\n setFocus: {\n type: Boolean,\n required: false,\n default: true,\n },\n },\n emits: [\"open\", \"close\"],\n data(): IPopupData {\n return {\n teleportDisabled: false,\n placement: Placement.NotCalculated,\n focus: null,\n noCloseOnResize: false,\n };\n },\n computed: {\n popupClasses(): string[] {\n let isInline = this.teleportDisabled || this.placement === Placement.Fallback;\n\n if (this.forceInline) {\n isInline = true;\n } else if (this.forceOverlay) {\n isInline = false;\n }\n\n const popupState = isInline ? [\"popup--inline\"] : [\"popup--overlay\"];\n return [\"popup\", ...popupState];\n },\n forceInline(): boolean {\n return this.alwaysInline || this.inline === \"always\";\n },\n forceOverlay(): boolean {\n return this.inline === \"never\";\n },\n teleportTarget() {\n return config.popupTarget ?? config.teleportTarget;\n },\n },\n watch: {\n isOpen: {\n immediate: true,\n handler(value: boolean): void {\n this.toggleIsOpen(value);\n if (value) {\n const { placement, forceInline, forceOverlay } = this;\n this.teleportDisabled = isTeleportDisabled({ window, placement, forceInline, forceOverlay });\n\n // wait one tick so we dont get the click\n // that launches the popup (await nextTick doesnt work here)\n setTimeout(() => {\n // verify that it's still open\n if (this.isOpen) {\n document.addEventListener(\"click\", this.onDocumentClickHandler);\n window.addEventListener(\"resize\", this.onWindowResizeHandler);\n }\n }, 0);\n } else {\n document.removeEventListener(\"click\", this.onDocumentClickHandler);\n window.removeEventListener(\"resize\", this.onWindowResizeHandler);\n }\n },\n },\n },\n unmounted() {\n // Clean up if unmounted but still opened\n document.removeEventListener(\"click\", this.onDocumentClickHandler);\n window.removeEventListener(\"resize\", this.onWindowResizeHandler);\n },\n methods: {\n async toggleIsOpen(isOpen: boolean): Promise<void> {\n /* popup is closing */\n if (!isOpen) {\n this.placement = Placement.NotCalculated;\n\n /* restore focus */\n if (this.focus) {\n popFocus(this.focus);\n this.focus = null;\n }\n return;\n }\n\n /* popup is opening */\n // Wait for popup to show up\n await this.$nextTick();\n const popup = this.$refs[\"popup\"] as HTMLElement;\n const wrapper = this.$refs[\"wrapper\"] as HTMLElement;\n const anchor = getElement(this.anchor);\n\n if (!anchor) {\n throw new Error(\"No anchor element found\");\n }\n\n // Check candidates for overlay position.\n const shouldCheckCandidates = this.forceOverlay || !(this.isMobileSize() || this.forceInline);\n if (shouldCheckCandidates) {\n const area = getContainer(popup, this.container);\n const viewport = this.viewport;\n const result = fitInsideArea({\n area,\n anchor,\n target: wrapper,\n viewport,\n spacing: POPUP_SPACING,\n candidateOrder: CandidateOrder.Default,\n });\n\n this.placement = result.placement;\n const useOverlay = this.forceOverlay || result.placement !== Placement.Fallback;\n if (useOverlay) {\n wrapper.style.left = `${result.x}px`;\n wrapper.style.top = `${result.y}px`;\n this.applyFocus();\n\n /**\n * Emitted when popup is visible and placement is fully calculated.\n * @event open\n */\n this.$emit(\"open\");\n return;\n }\n }\n\n // Block resize close event while virtual keyboard\n // is closing so it doesn't instantly close popup.\n this.noCloseOnResize = true;\n\n // Force disable teleport since it won't be updated due to fallback placement.\n this.teleportDisabled = true;\n\n // Wait for virtual keyboard to be closed before calculating scroll.\n await new Promise((resolve) => setTimeout(resolve, 200));\n\n const scrollTarget = popup.closest(\".scroll-target\");\n const hasScrollTarget = scrollTarget !== null;\n const top = getScrollToPopup({\n popup: wrapper,\n windowInnerHeight: window.innerHeight,\n scrollTop: hasScrollTarget ? scrollTarget.scrollTop : window.scrollY,\n spacing: POPUP_SPACING,\n });\n const scrollOptions = { top, behavior: \"smooth\" } as const;\n\n wrapper.style.removeProperty(\"left\");\n wrapper.style.removeProperty(\"top\");\n\n if (hasScrollTarget) {\n scrollTarget.scrollTo(scrollOptions);\n } else {\n window.scrollTo(scrollOptions);\n }\n\n this.noCloseOnResize = false;\n this.applyFocus();\n this.$emit(\"open\");\n },\n applyFocus(): void {\n if (this.setFocus) {\n const wrapper = this.$refs[\"wrapper\"];\n const focusableElement = getFocusableElement(wrapper, this.focusElement);\n this.focus = pushFocus(focusableElement);\n }\n },\n isMobileSize(): boolean {\n return window.innerWidth < MIN_DESKTOP_WIDTH;\n },\n onDocumentClickHandler(): void {\n this.$emit(\"close\");\n },\n onWindowResizeHandler(): void {\n if (this.noCloseOnResize) {\n return;\n }\n\n this.$emit(\"close\");\n },\n onPopupClickHandler(event: Event): void {\n // prevent propagation so we don't catch this\n // event in onDocumentClickHandler and close ourself.\n event.stopPropagation();\n },\n onKeyEsc(): void {\n this.$emit(\"close\");\n },\n onKeyTab(event: KeyboardEvent): void {\n if (this.keyboardTrap) {\n handleTab(event, this.$refs.wrapper as HTMLElement);\n }\n },\n },\n});\n</script>\n","/**\n * @public\n */\nexport interface ContextMenuTextItem {\n label: string;\n key: string;\n icon?: string;\n iconLibrary?: string;\n}\n\n/**\n * @public\n */\nexport interface ContextMenuSeparatorItem {\n separator: true;\n}\n\n/**\n * @public\n */\nexport type ContextMenuItem = ContextMenuTextItem | ContextMenuSeparatorItem;\n\n/**\n * @public\n */\nexport function isContextMenuTextItem(\n value: ContextMenuItem & { key?: string },\n): value is ContextMenuTextItem {\n return typeof value.key === \"string\";\n}\n\n/**\n * @public\n */\nexport function isContextMenuSeparatorItem(\n value: ContextMenuItem & { separator?: true },\n): value is ContextMenuSeparatorItem {\n return typeof value.separator === \"boolean\" && value.separator;\n}\n","import { MenuAction } from \"../../types\";\nimport { ContextMenuItem } from \"./contextmenuitem\";\n\nexport interface MenuActionTarget {\n readonly currentFocusedItemIndex: number;\n readonly popupItems: ContextMenuItem[];\n\n setFocusOnItem(index: number): Promise<void>;\n activateItem(index: number): Promise<void>;\n}\n\nexport function getNewItemIndexFromMenuAction(\n action: MenuAction | null,\n index: number,\n n: number,\n): number {\n let newIndex;\n if (n <= 0) {\n return 0;\n }\n switch (action) {\n case MenuAction.MOVE_NEXT:\n newIndex = (index + 1) % n;\n break;\n\n case MenuAction.MOVE_PREV:\n newIndex = (index - 1 + n) % n;\n break;\n\n case MenuAction.MOVE_FIRST:\n newIndex = 0;\n break;\n\n case MenuAction.MOVE_LAST:\n newIndex = Math.max(n - 1, 0);\n break;\n\n default:\n newIndex = index;\n }\n return newIndex;\n}\n\nexport async function doMenuAction(\n action: MenuAction | null,\n target: MenuActionTarget,\n): Promise<void> {\n const itemsLength = target.popupItems.length;\n const currentIndex = target.currentFocusedItemIndex;\n const newFocusedItemIndex = getNewItemIndexFromMenuAction(\n action,\n currentIndex,\n itemsLength,\n );\n switch (action) {\n case MenuAction.MOVE_NEXT:\n case MenuAction.MOVE_PREV:\n case MenuAction.MOVE_FIRST:\n case MenuAction.MOVE_LAST:\n await target.setFocusOnItem(newFocusedItemIndex);\n break;\n case MenuAction.ACTIVATE:\n await target.activateItem(newFocusedItemIndex);\n break;\n }\n}\n","<template>\n <i-popup\n :is-open=\"isOpen\"\n :keyboard-trap=\"false\"\n :anchor=\"anchor\"\n :set-focus=\"true\"\n :focus-element=\"() => contextmenu\"\n inline=\"never\"\n @close=\"$emit('close')\"\n >\n <nav class=\"contextmenu\" :aria-label=\"ariaLabel\" @keyup=\"onKeyUp\" @keydown=\"onKeyDown\">\n <ul ref=\"contextmenu\" role=\"menu\" tabindex=\"-1\" class=\"contextmenu__list\">\n <li v-for=\"(item, index) in popupItems\" :key=\"item.key\" role=\"menuitem\" @click=\"onClickItem(item)\">\n <div ref=\"items\" :tabindex=\"tabIndex(index)\" class=\"contextmenu__list__item\">\n <f-icon\n v-if=\"hasIcons\"\n class=\"contextmenu__lefticon\"\n :name=\"item.icon ? item.icon : ''\"\n :library=\"item.iconLibrary ? item.iconLibrary : 'f'\"\n />\n <a ref=\"anchors\">{{ item.label }}</a>\n </div>\n <hr v-if=\"hasSeparatorAfterItemAt(index)\" class=\"contextmenu__separator\" />\n </li>\n </ul>\n </nav>\n </i-popup>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, ref, type PropType } from \"vue\";\nimport { focus } from \"@fkui/logic\";\nimport { IPopup } from \"../../internal-components/IPopup\";\nimport { FIcon } from \"../FIcon\";\nimport { actionFromKeyboardEvent, getHTMLElementsFromVueRef } from \"../../utils\";\nimport { MenuAction } from \"../../types\";\nimport {\n type ContextMenuItem,\n type ContextMenuTextItem,\n isContextMenuSeparatorItem,\n isContextMenuTextItem,\n} from \"./contextmenuitem\";\nimport { doMenuAction } from \"./contextmenu-logic\";\n\nconst preventKeys: string[] = [\n \"Tab\",\n \"Up\",\n \"Down\",\n \"ArrowUp\",\n \"ArrowDown\",\n \"Home\",\n \"End\",\n \" \",\n \"Spacebar\",\n \"Enter\",\n \"Escape\",\n];\n\nconst keyUp = [\"ArrowUp\", \"Up\"];\n\nexport default defineComponent({\n name: \"FContextMenu\",\n components: { IPopup, FIcon },\n props: {\n /**\n * Toggle open/closed popup.\n */\n isOpen: {\n type: Boolean,\n required: true,\n },\n /**\n * DOM element to position popup at.\n */\n anchor: {\n type: HTMLElement as PropType<HTMLElement | undefined>,\n required: false,\n default: undefined,\n },\n /**\n * The items to be diplayed in the menu\n */\n items: {\n type: Array as PropType<ContextMenuItem[]>,\n required: true,\n },\n /**\n * Unique accessible name for navigation landmark.\n */\n ariaLabel: {\n type: String,\n required: false,\n default: \"Kontextuell meny\",\n },\n },\n emits: [\"close\", \"select\"],\n setup() {\n return { contextmenu: ref<HTMLElement | null>(null) };\n },\n data() {\n return {\n selectedItem: \"\",\n currentFocusedItemIndex: -1,\n };\n },\n computed: {\n popupItems(): ContextMenuTextItem[] {\n return this.items.filter(isContextMenuTextItem);\n },\n separatorPositions(): number[] {\n const res: number[] = [];\n if (this.items.length > 1) {\n this.items.forEach((it, i) => {\n if (isContextMenuSeparatorItem(it)) {\n const pos = i - 1 - res.length;\n if (pos >= 0 && pos < this.items.length - 1) {\n res.push(pos);\n }\n }\n });\n }\n return res;\n },\n hasIcons(): boolean {\n return this.items.some((it) => isContextMenuTextItem(it) && it.icon);\n },\n },\n watch: {\n isOpen: {\n immediate: true,\n async handler(): Promise<void> {\n if (this.isOpen) {\n this.currentFocusedItemIndex = -1;\n this.selectedItem = \"\";\n }\n },\n },\n },\n methods: {\n hasSeparatorAfterItemAt(index: number): boolean {\n return this.separatorPositions.includes(index);\n },\n closePopup(): void {\n /**\n * Event that is dispatched after an item is selected or\n * after pressing for example esc in the menu\n */\n this.$emit(\"close\");\n },\n onClickItem(item: ContextMenuItem): void {\n if (isContextMenuTextItem(item) && item.key) {\n this.selectedItem = item.key;\n /**\n * Event that is dispatched when an item is selected.\n * @type {string} item key\n */\n this.$emit(\"select\", this.selectedItem);\n this.closePopup();\n }\n },\n tabIndex(index: number): number {\n return index === this.currentFocusedItemIndex ? 0 : -1;\n },\n onKeyUp(event: KeyboardEvent) {\n if (preventKeys.includes(event.key)) {\n event.preventDefault();\n }\n },\n doHandlePopupMenuTabKey(action: MenuAction): boolean {\n // Detect if tab (MOVE_NEXT) or shift+tab (MOVE_PREV) reaches the limits, to avoid trapping tab\n // returns true to indicate that one should NOT continue processing this keyboard action or false otherwise\n if (action === MenuAction.MOVE_NEXT && this.currentFocusedItemIndex + 1 === this.popupItems.length) {\n this.closePopup();\n return true;\n } else if (\n action === MenuAction.MOVE_PREV &&\n (this.currentFocusedItemIndex === 0 || this.currentFocusedItemIndex === -1)\n ) {\n // shift-tab (MOVE_PREV) inside the popup on the first element of the popup will close the popup and\n // adjust currentFocusedItemIndex and will resume processing this keyboard action\n this.closePopup();\n return false;\n }\n return false;\n },\n async onKeyDown(event: KeyboardEvent) {\n if (!preventKeys.includes(event.key)) {\n return;\n }\n\n if (event.key === \"Escape\") {\n this.$emit(\"close\");\n return;\n }\n const action = actionFromKeyboardEvent(event);\n if (action === null) {\n return;\n }\n if (event.key === \"Tab\" && this.doHandlePopupMenuTabKey(action)) {\n return;\n }\n if (keyUp.includes(event.key) && this.currentFocusedItemIndex === -1) {\n // If the user presses arrow up key (action MOVE_PREV) but there are no items in focus\n // adjust currentFocusedItemIndex so that MOVE_PREV will put focus on last item\n this.currentFocusedItemIndex = this.popupItems.length > 0 ? this.popupItems.length : 1;\n }\n event.preventDefault();\n await doMenuAction(action, this);\n },\n async setFocusOnItem(index: number): Promise<void> {\n if (index < 0 || index >= this.popupItems.length) {\n return;\n }\n this.currentFocusedItemIndex = index;\n await this.$nextTick();\n if (!this.isOpen) {\n return;\n }\n const items = getHTMLElementsFromVueRef(this.$refs.items);\n if (items.length > 0) {\n const popupMenuItem = items[index];\n focus(popupMenuItem, { preventScroll: true });\n }\n },\n async activateItem(index: number): Promise<void> {\n if (index < 0 || index >= this.popupItems.length) {\n return;\n }\n if (index !== this.currentFocusedItemIndex) {\n await this.setFocusOnItem(index);\n }\n this.onClickItem(this.popupItems[this.currentFocusedItemIndex]);\n },\n },\n});\n</script>\n","<template>\n <div class=\"checkbox\" :class=\"disabledClass\" @validity=\"onValidity\">\n <input\n :id=\"id\"\n v-bind=\"attrs\"\n ref=\"checkboxInput\"\n type=\"checkbox\"\n class=\"checkbox__input\"\n :disabled=\"disabled\"\n @keydown.space=\"onKeydown\"\n @change=\"updateExpandedFlag()\"\n />\n <label :class=\"$slots.details ? 'checkbox__label checkbox__width' : 'checkbox__label'\" :for=\"id\">\n <!-- @slot Slot for label content. -->\n <slot name=\"default\"></slot>\n <template v-if=\"$slots.details\">\n <span v-if=\"showDetails === 'always'\" class=\"checkbox__details\">\n <br />\n <!-- @slot Slot for extended label, should only contain short text -->\n <slot name=\"details\"></slot>\n </span>\n <transition\n v-if=\"showDetails === 'when-selected'\"\n @enter=\"enter\"\n @after-enter=\"afterEnter\"\n @leave=\"leave\"\n >\n <span v-if=\"expanded\" class=\"checkbox__details\">\n <br />\n <!-- @slot Slot for details, should only contain short text -->\n <slot name=\"details\" :height=\"height\"></slot>\n </span>\n </transition>\n </template>\n </label>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, inject, toValue } from \"vue\";\nimport { ElementIdService, type ValidityEvent } from \"@fkui/logic\";\nimport { isEqual } from \"lodash\";\nimport { dispatchComponentValidityEvent, renderSlotText, hasSlot, getHTMLElementFromVueRef } from \"../../utils\";\n\n// ! Boolean must be last so that empty string ('') is not parsed as true, see: https://github.com/vuejs/vue/blob/81e1e47cabbd479e2a285f03120944f1efffe749/test/unit/features/options/props.spec.js#L516.\nconst anyType = [String, Object, Array, Number, Date, Boolean];\n\nexport default defineComponent({\n name: \"FCheckboxField\",\n inheritAttrs: false,\n props: {\n /**\n * Set to `true`, empty string `\"\"` or string `\"disabled\"` to disable this input field.\n */\n disabled: {\n type: Boolean,\n required: false,\n default: false,\n },\n /**\n * The id for the input id attribute.\n * The id for the label for attribute.\n * If the prop is not set a random value will be generated.\n */\n id: {\n type: String,\n required: false,\n default: () => ElementIdService.generateElementId(),\n },\n /**\n * The value for the input checked attribute.\n * @model\n */\n // ? The rule is disabled so that the `checked` prop can be undefined or null.\n /* eslint-disable-next-line vue/require-default-prop -- technical debt,\n /* it should contain a default value of undefined and proptype should\n /* include undefined (see comment on line above) */\n modelValue: {\n type: anyType,\n required: false,\n },\n /**\n * The value for the input.\n */\n value: {\n type: anyType,\n required: true,\n },\n },\n emits: [\"change\", \"update:modelValue\"],\n setup() {\n return {\n showDetails: inject(\"showDetails\", \"never\") as \"never\" | \"always\" | \"when-selected\",\n getFieldsetLabelText: inject(\"getFieldsetLabelText\", () => \"\") as () => string,\n };\n },\n data() {\n return {\n expanded: false,\n height: 0,\n initialStyle: {\n overflow: \"hidden\",\n transition: \"height 400ms cubic-bezier(0.46, 0.03, 0.52, 0.96)\",\n },\n hiddenStyle: {\n height: \"auto\",\n position: \"absolute\",\n visibility: \"hidden\",\n },\n visibleStyle: {\n width: \"\",\n position: \"\",\n visibility: \"\",\n height: \"0px\",\n },\n openedStyle: {\n height: \"auto\",\n },\n };\n },\n computed: {\n attrs(): Record<string, unknown> {\n let checked;\n if (Array.isArray(this.modelValue)) {\n // `isEqual` since can't compare equality with a reactive (modelValue) object and non-reactive (this.value) object.\n checked = this.modelValue.findIndex((it) => isEqual(toValue(it), toValue(this.value))) >= 0;\n } else {\n checked = this.value === this.modelValue;\n }\n\n return {\n ...this.$attrs,\n value: this.value,\n checked,\n onChange: (event: Event) => {\n if (event.target instanceof HTMLInputElement) {\n this.emitVModelEvent(event);\n }\n },\n onInput: (event: Event) => {\n // ? Force focus on Mac + Safari\n (event.target as HTMLInputElement).focus();\n },\n };\n },\n disabledClass(): string {\n return this.disabled ? \"disabled\" : \"\";\n },\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- technical debt, nore sure whats going on here\n injected(): any {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- technical debt, nore sure whats going on here\n return this as any;\n },\n },\n methods: {\n updateExpandedFlag(): void {\n const checkboxInput = getHTMLElementFromVueRef(this.$refs[\"checkboxInput\"]) as HTMLInputElement;\n this.expanded = checkboxInput.checked;\n },\n emitVModelEvent(event: Event): void {\n let newModel;\n\n if (Array.isArray(this.modelValue)) {\n // `isEqual` since can't compare equality with a reactive (modelValue) object and non-reactive (this.value) object.\n newModel = [...this.modelValue].filter((it) => !isEqual(toValue(it), toValue(this.value)));\n\n // If nothing was filtered out (unchecked), then it was instead checked and the value should be pushed to model.\n if (this.modelValue.length <= newModel.length) {\n newModel.push(this.value);\n }\n } else {\n if (this.value === this.modelValue) {\n newModel = typeof this.value === \"boolean\" ? false : undefined;\n } else {\n const target = event.target as HTMLInputElement;\n newModel = target.value === \"true\" ? true : this.value;\n }\n }\n\n /**\n * V-model event.\n * @event update:modelValue\n * @type {anyType | anyType[]}\n */\n this.$emit(\"update:modelValue\", newModel);\n\n /**\n * Vue2 v-model event.\n * @deprecated\n * @event change\n * @type {anyType | anyType[]}\n */\n this.$emit(\"change\", newModel);\n },\n onKeydown(event: Event): void {\n // Fix SFKUI-2912: mark checkbox with space in IE11\n event.stopPropagation();\n },\n onValidity({ detail }: CustomEvent<ValidityEvent>): void {\n if (detail.target !== this.$el.querySelector(\"input\")) {\n return;\n }\n\n let errorMessage = \"\";\n\n if (hasSlot(this, \"default\")) {\n const labelText = this.injected.getFieldsetLabelText();\n if (labelText) {\n errorMessage = `${labelText} ${renderSlotText(this.$slots.default)}`;\n } else {\n errorMessage = `${renderSlotText(this.$slots.default)}`;\n }\n }\n\n const element = this.$el.querySelector(`#${detail.elementId}`);\n if (element) {\n dispatchComponentValidityEvent(element, {\n ...detail,\n errorMessage,\n focusElementId: detail.elementId,\n });\n }\n },\n enter(element: Element): void {\n const htmlElement = getHTMLElementFromVueRef(element);\n const computedStyle = getComputedStyle(element);\n Object.assign(htmlElement.style, this.initialStyle);\n Object.assign(htmlElement.style, this.hiddenStyle);\n htmlElement.style.width = computedStyle.width;\n const height = computedStyle.height;\n Object.assign(htmlElement.style, this.visibleStyle);\n // Force redraw\n /* eslint-disable-next-line @typescript-eslint/no-unused-expressions -- technical debt, there should be a better way */\n getComputedStyle(element).height;\n setTimeout(() => {\n this.height = parseInt(height as string, 10);\n htmlElement.style.height = height;\n });\n },\n afterEnter(element: Element): void {\n const htmlElement = getHTMLElementFromVueRef(element);\n Object.assign(htmlElement.style, this.openedStyle);\n },\n leave(element: Element): void {\n const htmlElement = getHTMLElementFromVueRef(element);\n const height = getComputedStyle(element).height;\n htmlElement.style.height = height;\n\n // Force redraw\n /* eslint-disable-next-line @typescript-eslint/no-unused-expressions -- technical debt, there should be a better way */\n getComputedStyle(element).height;\n setTimeout(() => {\n Object.assign(htmlElement.style, this.visibleStyle);\n });\n },\n },\n});\n</script>\n","export const getFieldsetLabelText = Symbol(\"getFieldsetLabelText\");\n","interface LabelOptions {\n hasRadiobutton: boolean;\n hasCheckbox: boolean;\n chip: boolean;\n labelClass: string;\n}\n\n/**\n * @internal\n */\nexport function* labelClasses(options: LabelOptions): Generator<string> {\n const { labelClass } = options;\n\n yield \"fieldset__label\";\n yield labelClass;\n}\n","interface LabelOptions {\n hasRadiobutton: boolean;\n hasCheckbox: boolean;\n chip: boolean;\n contentClass: string;\n}\n\n/**\n * @internal\n */\nexport function* contentClasses(options: LabelOptions): Generator<string> {\n const { hasRadiobutton, hasCheckbox, contentClass } = options;\n\n yield \"fieldset__content\";\n\n if (hasRadiobutton) {\n yield \"radio-button-group__content\";\n }\n\n if (hasCheckbox) {\n yield \"checkbox-group__content\";\n }\n\n yield contentClass;\n}\n","<template>\n <fieldset :id=\"id\" class=\"fieldset\" :class=\"classes\" @validity=\"onValidity\">\n <legend :key=\"legendKey\" class=\"label\" :class=\"legendClass\">\n <!-- @slot Slot for label content. This slot is required. -->\n <slot name=\"label\"></slot>\n\n <span v-if=\"hasCheckbox && children.length > 1\" class=\"sr-only\">\n <span>{{ numberOfCheckboxesScreenReaderText }}</span>\n </span>\n <!--\n @slot Optional slot for description. See [FLabel](#/Components/FLabel) for details.\n @binding {string[]} descriptionClass CSS classes for primary description content.\n @binding {string[]} discreteDescriptionClass CSS classes for format description.\n -->\n <slot name=\"description\" v-bind=\"{ descriptionClass, discreteDescriptionClass }\"></slot>\n\n <!--\n @slot Slot for displaying single or several error messages.\n @binding {boolean} hasError Set to true when a validation error is present\n @binding {string} valididationMessage Descriptive validation error message for current error\n -->\n <slot name=\"error-message\" v-bind=\"{ hasError, validationMessage: validity.validationMessage }\">\n <template v-if=\"hasError\">\n <span class=\"label__message label__message--error\">\n <f-icon class=\"label__icon--left\" name=\"error\"></f-icon>\n {{ validity.validationMessage }}\n </span>\n </template>\n </slot>\n </legend>\n\n <span v-if=\"hasCheckbox\" data-test=\"checked-boxes\" class=\"sr-only\" aria-live=\"polite\">\n <span v-if=\"children.length === 1\">{{ checkboxCheckedScreenReaderText }}</span>\n <span v-else>{{ numberOfCheckedCheckboxesScreenText }}</span>\n </span>\n\n <template v-if=\"hasTooltipSlot\">\n <div class=\"sr-separator\">\n <div class=\"tooltip-before\" aria-hidden=\"true\">\n <div class=\"label tooltip-before__label\">\n <slot name=\"label\"></slot>\n </div>\n </div>\n\n <!-- @slot Slot for tooltip. -->\n <slot name=\"tooltip\"></slot>\n </div>\n <div\n v-if=\"hasDescriptionSlot || hasErrorMessageSlot || hasError\"\n class=\"label\"\n aria-hidden=\"true\"\n :class=\"groupLabelClass\"\n >\n <!--\n @slot Optional slot for description. See [FLabel](#/Components/FLabel) for details.\n @binding {string[]} descriptionClass CSS classes for primary description content.\n @binding {string[]} discreteDescriptionClass CSS classes for format description.\n -->\n <slot name=\"description\" v-bind=\"{ descriptionClass, discreteDescriptionClass }\"></slot>\n\n <slot name=\"error-message\" v-bind=\"{ hasError, validationMessage: validity.validationMessage }\">\n <template v-if=\"hasError\">\n <span class=\"label__message label__message--error\">\n <f-icon class=\"label__icon--left\" name=\"error\"></f-icon>\n {{ validity.validationMessage }}\n </span>\n </template>\n </slot>\n </div>\n </template>\n\n <div :class=\"groupContentClass\">\n <!-- @slot Slot for fieldset content. -->\n <slot name=\"default\"></slot>\n </div>\n </fieldset>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from \"vue\";\nimport { ElementIdService, type ValidityEvent, debounce } from \"@fkui/logic\";\nimport { renderSlotText, dispatchComponentValidityEvent, hasSlot } from \"../../utils\";\nimport { ComponentValidityEvent } from \"../../types\";\nimport { FIcon } from \"../FIcon\";\nimport { TranslationMixin } from \"../../plugins\";\nimport { getFieldsetLabelText } from \"./FFieldsetProvide\";\nimport { labelClasses } from \"./label-classes\";\nimport { contentClasses } from \"./content-classes\";\n\nexport default defineComponent({\n name: \"FFieldset\",\n components: {\n FIcon,\n },\n mixins: [TranslationMixin],\n provide() {\n return {\n [getFieldsetLabelText]: () => {\n return renderSlotText(this.$slots.label);\n },\n sharedName: this.name,\n showDetails: this.showDetails,\n };\n },\n props: {\n /**\n * The id for the fieldset id attribute.\n * If the prop is not set a random value will be generated.\n */\n id: {\n type: String,\n required: false,\n default: () => ElementIdService.generateElementId(),\n },\n /**\n * Name provided to child content as `sharedName` for optional usage (it will not be set on the fieldset element).\n * For radio inputs this is a shortcut to specify the shared name attribute at one place,\n * instead of repeatedly setting the name attribute on each radio input.\n */\n name: {\n type: String,\n required: false,\n default: undefined,\n },\n /**\n * The CSS classes for the label, description and error-message slot.\n */\n labelClass: {\n type: String,\n required: false,\n default: \"\",\n },\n /**\n * The CSS classes for the default slot.\n */\n contentClass: {\n type: String,\n required: false,\n default: \"\",\n },\n /**\n * Aligns underlying items horizontally.\n * Supported by radiobuttons and chip layout.\n */\n horizontal: {\n type: Boolean,\n required: false,\n },\n /**\n * Displays radio and checkbox content with chip layout.\n */\n chip: {\n type: Boolean,\n required: false,\n default: false,\n },\n /**\n * Displays a box with border around radiobuttons and checkboxes.\n */\n border: {\n type: Boolean,\n required: false,\n },\n /**\n * Sets visibility behaviour for details slot in selectable child items. By default details slot is not rendered.\n *\n * * `never` (default) - Never show item details.\n * - `when-selected` - Show item details when selected.\n * - `always` - Always show item details.\n */\n showDetails: {\n type: String,\n default: \"never\",\n validator(value: string) {\n return [\"never\", \"when-selected\", \"always\"].includes(value);\n },\n },\n },\n data() {\n return {\n validity: {\n validityMode: \"INITIAL\",\n } as ValidityEvent,\n descriptionClass: [\"label__description\"],\n discreteDescriptionClass: [\"label__description\", \"label__description--discrete\"],\n validityElement: null as HTMLElement | null,\n dispatchObject: {} as unknown as ComponentValidityEvent,\n detail: {} as unknown as ValidityEvent,\n hasDocumentListener: false,\n legendKey: 1,\n oldMessage: \"\",\n children: new Array<HTMLInputElement>(),\n hasCheckbox: false,\n hasRadiobutton: false,\n };\n },\n computed: {\n hasError(): boolean {\n return this.validity.validityMode === \"ERROR\";\n },\n hasErrorMessageSlot() {\n return hasSlot(this, \"error-message\");\n },\n hasTooltipSlot(): boolean {\n // return hasSlot(this, \"tooltip\");\n return Boolean(this.$slots.tooltip);\n },\n hasDescriptionSlot(): boolean {\n return hasSlot(this, \"description\");\n },\n legendClass(): string[] {\n // If the tooltip is provided we should avoid adding label class to the top legend element.\n return this.hasTooltipSlot ? [\"sr-only\"] : this.groupLabelClass;\n },\n groupLabelClass(): string[] {\n return Array.from(labelClasses(this));\n },\n groupContentClass(): string[] {\n return Array.from(contentClasses(this));\n },\n classes(): Record<string, boolean> {\n const { hasRadiobutton, hasCheckbox, horizontal, chip, border } = this;\n return {\n \"radio-button-group\": hasRadiobutton,\n \"radio-button-group--chip\": chip && hasRadiobutton,\n \"radio-button-group--horizontal\": horizontal && hasRadiobutton,\n \"radio-button-group--border\": border && hasRadiobutton,\n \"checkbox-group\": hasCheckbox,\n \"checkbox-group--chip\": chip && hasCheckbox,\n \"checkbox-group--horizontal\": horizontal && hasCheckbox,\n \"checkbox-group--border\": border && hasCheckbox,\n };\n },\n checkedChildren(): HTMLInputElement[] {\n return this.children.filter((child) => child.checked);\n },\n debouncedUpdateChildren(): () => void {\n return debounce(this.updateCheckboxChildren.bind(this), 150);\n },\n checkboxCheckedScreenReaderText(): string {\n return this.checkedChildren.length === 1\n ? this.$t(\"fkui.checkbox-group.checkbox.checked\", \"Kryssruta kryssad\")\n : this.$t(\"fkui.checkbox-group.checkbox.not.checked\", \"Kryssruta ej kryssad\");\n },\n numberOfCheckboxesScreenReaderText(): string {\n return this.$t(\"fkui.checkbox-group.count\", \"Grupp med {{ count }} kryssrutor\", {\n count: String(this.children.length),\n });\n },\n numberOfCheckedCheckboxesScreenText(): string {\n return this.$t(\"fkui.checkbox-group.checked\", \"{{ checked }} kryssad av {{ count }}\", {\n checked: String(this.checkedChildren.length),\n count: String(this.children.length),\n });\n },\n },\n async mounted(): Promise<void> {\n await this.$nextTick();\n const types = Array.from(\n this.$el.querySelectorAll(`input[type=\"checkbox\"], input[type=\"radio\"]`),\n (it: HTMLInputElement) => it.getAttribute(\"type\"),\n );\n this.hasCheckbox = types.includes(\"checkbox\");\n this.hasRadiobutton = types.includes(\"radio\");\n if (this.hasCheckbox) {\n this.updateCheckboxChildren();\n }\n },\n updated(): void {\n if (this.hasCheckbox) {\n this.debouncedUpdateChildren();\n }\n },\n methods: {\n async onValidity({ detail }: CustomEvent<ValidityEvent>): Promise<void> {\n if (detail.target !== this.$el) {\n return;\n }\n this.detail = detail;\n\n await this.$nextTick();\n\n const errorMessage = renderSlotText(this.$slots.label) ?? \"\";\n\n const firstFocusableElement = this.$el.querySelector(\n \"input:not(disabled), select:not(disabled), textarea:not(disabled)\",\n );\n const focusElementId = firstFocusableElement ? firstFocusableElement.id : this.id;\n\n this.validityElement = this.$el as HTMLElement;\n this.dispatchObject = {\n ...detail,\n errorMessage,\n focusElementId,\n };\n this.validity = this.detail;\n\n if (this.validityElement) {\n dispatchComponentValidityEvent(this.validityElement, this.dispatchObject);\n }\n\n const message = detail.validityMode === \"INITIAL\" ? \"\" : detail.validationMessage;\n\n if (message !== this.oldMessage) {\n this.forceLegendUpdate();\n this.oldMessage = message;\n }\n },\n /**\n * Workaround for NVDA-bug. Force re rendering of legend element due to NVDA not recognizing innerHTML changes.\n * NVDA has closed the bug as it is related to the browser (works in FF): https://github.com/nvaccess/nvda/issues/13162\n */\n forceLegendUpdate(): void {\n this.legendKey++;\n },\n async updateCheckboxChildren(): Promise<void> {\n await this.$nextTick();\n this.children = Array.from(this.$el.querySelectorAll('input[type=\"checkbox\"]'));\n },\n },\n});\n</script>\n","<template>\n <f-fieldset :id=\"id\" :name=\"name\" v-bind=\"$attrs\">\n <template #label>\n <!-- @slot Slot for label content. This slot is required. -->\n <slot name=\"label\"></slot>\n </template>\n\n <template v-if=\"$slots.tooltip\" #tooltip>\n <!-- @slot Slot for tooltip. -->\n <slot name=\"tooltip\"></slot>\n </template>\n\n <template #description=\"{ descriptionClass, discreteDescriptionClass }\">\n <!--\n @slot Optional slot for description. See [FLabel](#/Components/FLabel) for details.\n @binding {string[]} descriptionClass CSS classes for primary description content.\n @binding {string[]} discreteDescriptionClass CSS classes for format description.\n -->\n <slot name=\"description\" v-bind=\"{ descriptionClass, discreteDescriptionClass }\"></slot>\n </template>\n\n <template #error-message>\n <!-- @slot Slot for displaying single or several error messages. -->\n <slot name=\"error-message\"></slot>\n </template>\n\n <!-- @slot Slot for main content, usually checkboxes. -->\n <slot name=\"default\"></slot>\n </f-fieldset>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from \"vue\";\nimport { ElementIdService } from \"@fkui/logic\";\nimport { FFieldset } from \"../FFieldset\";\nimport { TranslationMixin } from \"../../plugins\";\n\n/**\n * @deprecated `<f-checkbox-group>` is deprecated.\n * See migration guide: https://forsakringskassan.github.io/latest/guide/migration/migrating-to-fieldset.html\n */\nexport default defineComponent({\n name: \"FCheckboxGroup\",\n components: { FFieldset },\n mixins: [TranslationMixin],\n inheritAttrs: false,\n props: {\n /**\n * The id for the fieldset id attribute.\n * If the prop is not set the id will be generated.\n */\n id: {\n type: String,\n required: false,\n default: () => ElementIdService.generateElementId(),\n },\n /**\n * The name of the checkbox group.\n */\n name: {\n type: String,\n required: true,\n },\n },\n});\n</script>\n","<template>\n <div class=\"crud-dataset\">\n <!--\n@slot Slot for displaying the data.\n -->\n <slot></slot>\n <div v-if=\"hasAddSlot\">\n <button\n data-test=\"f-crud-dataset-add-button\"\n type=\"button\"\n class=\"button button--discrete crud-dataset__add-button\"\n @click=\"createItem()\"\n >\n <f-icon class=\"button__icon\" name=\"plus\" />\n <!--\n@slot Slot for changing the text in \"Add new\" button`\n -->\n <slot name=\"add-button\">{{ $t(\"fkui.crud-dataset.button.add\", \"Lägg till ny\") }}</slot>\n </button>\n </div>\n\n <f-form-modal\n :is-open=\"isFormModalOpen\"\n :aria-close-text=\"$t('fkui.crud-dataset.modal.close', 'Stäng')\"\n :use-error-list=\"false\"\n :before-submit=\"beforeSubmit\"\n :before-validation=\"beforeValidation\"\n :on-cancel=\"onCancel\"\n @close=\"onModalClose\"\n @cancel=\"onCancel\"\n @submit=\"onFormModalSubmit\"\n >\n <template #header>{{ formModalHeader }}</template>\n <template #input-text-fields>\n <!--\n@slot Slot for inputs when creating a new item.\nThe new item is available through `v-slot=\"{ item }\"`\nIf any data in the item should be set not by the user the prop beforeCreate can be used to set that data.\n -->\n <slot v-if=\"operation === Operation.ADD\" name=\"add\" v-bind=\"{ item: item }\" />\n <!--\n@slot Slot for inputs when modifying an item.\nThe item being modified is available through `v-slot=\"{ item }\"`\n -->\n <slot v-if=\"operation === Operation.MODIFY\" name=\"modify\" v-bind=\"{ item: item }\" />\n </template>\n <template #submit-button-text>{{ confirmButtonText }}</template>\n <template #cancel-button-text>{{ cancelButtonText }}</template>\n </f-form-modal>\n\n <f-confirm-modal\n :is-open=\"isConfirmModalOpen\"\n :buttons=\"confirmDeleteButtons\"\n @confirm=\"onDeleteConfirm\"\n @close=\"onDeleteClose\"\n >\n <template #heading>\n {{ deleteModalHeader }}\n </template>\n\n <template #content>\n <!--\n@slot Slot for displaying a warning message before an item is deleted.\nThe item being deleted is available through `v-slot=\"{ item }\"`\n -->\n <slot name=\"delete\" v-bind=\"{ item: item }\" />\n </template>\n </f-confirm-modal>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, type PropType } from \"vue\";\nimport { deepClone, alertScreenReader, TranslationService } from \"@fkui/logic\";\n\nimport { FIcon } from \"../FIcon\";\nimport { FFormModal, FConfirmModal } from \"../FModal\";\nimport { FModalButtonDescriptor } from \"../FModal/modal-button\";\nimport { type ListItem, type ListArray } from \"../../types\";\nimport { TranslationMixin } from \"../../plugins\";\nimport { type FValidationFormCallback } from \"../FValidationForm\";\nimport { FCrudDatasetInterface } from \"./FCrudDatasetInterface\";\nimport { ActivateItemInterface } from \"./ActivateItemInterface\";\n\nenum Operation {\n ADD,\n DELETE,\n MODIFY,\n NONE,\n}\n\ninterface FCrudDatasetData {\n result: ListArray;\n Operation: typeof Operation;\n operation: Operation;\n item: null | ListItem;\n originalItemToUpdate: null | ListItem;\n isFormModalOpen: boolean;\n isConfirmModalOpen: boolean;\n callbackAfterItemAdd(item: ListItem): void;\n callbackBeforeItemDelete(item: ListItem): void;\n}\n\nexport default defineComponent({\n name: \"FCrudDataset\",\n components: { FFormModal, FConfirmModal, FIcon },\n mixins: [TranslationMixin],\n provide(): FCrudDatasetInterface & ActivateItemInterface {\n return {\n delete: (item: ListItem) => {\n this.deleteItem(item);\n },\n modify: (item: ListItem) => {\n this.updateItem(item);\n },\n registerCallbackAfterItemAdd: (callback: (item: ListItem) => void) => {\n this.callbackAfterItemAdd = callback;\n },\n registerCallbackBeforeItemDelete: (callback: (item: ListItem) => void) => {\n this.callbackBeforeItemDelete = callback;\n },\n };\n },\n props: {\n /**\n * The list of items that should be deleted, modified or added to.\n * If the prop is not set an empty array will be used.\n * @model\n */\n modelValue: {\n type: Array as PropType<ListArray<ListItem>>,\n required: false,\n default: () => [],\n },\n /**\n * A function that returns an item to the #add template. Can be used to populate data that the user should not input themself e.g. an id.\n * Or to give the user suggestions for inputs. If the prop is not used an empty item will be returned.\n */\n beforeCreate: {\n type: Function as PropType<(() => ListItem) | undefined>,\n required: false,\n default: undefined,\n },\n /**\n * If `true` the primary button in the modals will be placed to the right side instead of to the left.\n */\n primaryButtonRight: {\n type: Boolean,\n default: false,\n },\n /**\n * If given, this function is called before the [[submit]] event is emitted.\n * See <f-validation-form> `beforeSubmit` props for more info.\n */\n beforeSubmit: {\n type: Function as PropType<FValidationFormCallback>,\n required: false,\n default(): void {\n /* do nothing */\n },\n },\n /**\n * If given, this function is called before the form data is validated and the [[submit]] event is emitted.\n * See <f-validation-form> `beforeValidation` props for more info.\n */\n beforeValidation: {\n type: Function as PropType<FValidationFormCallback>,\n required: false,\n default(): void {\n /* do nothing */\n },\n },\n /**\n * If given, this function is called after the modal has been closed.\n */\n onCancel: {\n type: Function as PropType<() => void>,\n required: false,\n default() {\n return undefined;\n },\n },\n\n /**\n * Property for changing the \"add new\" modal heading\n */\n addNewModalHeader: {\n type: String,\n required: false,\n default: TranslationService.provider.translate(\"fkui.crud-dataset.modal.header.add\", \"Lägg till rad\"),\n },\n /**\n * Property for changing the \"modify\" modal heading\n */\n modifyModalHeader: {\n type: String,\n required: false,\n default: TranslationService.provider.translate(\"fkui.crud-dataset.modal.header.modify\", \"Ändra rad\"),\n },\n /**\n * Property for changing the \"delete\" modal heading\n */\n deleteModalHeader: {\n type: String,\n required: false,\n default: TranslationService.provider.translate(\n \"fkui.crud-dataset.modal.header.delete\",\n \"Är du säker på att du vill ta bort raden?\",\n ),\n },\n },\n emits: [\"change\", \"created\", \"deleted\", \"updated\", \"update:modelValue\"],\n data(): FCrudDatasetData {\n return {\n result: [],\n Operation,\n operation: Operation.NONE,\n item: null,\n originalItemToUpdate: null,\n isFormModalOpen: false,\n isConfirmModalOpen: false,\n callbackAfterItemAdd() {\n // dummy method when not provided by underlying component\n },\n callbackBeforeItemDelete() {\n // dummy method when not provided by underlying component\n },\n };\n },\n computed: {\n confirmButtonText(): string {\n return this.operation === Operation.ADD\n ? this.$t(\"fkui.crud-dataset.modal.confirm.add\", \"Lägg till\")\n : this.$t(\"fkui.crud-dataset.modal.confirm.modify\", \"Spara\");\n },\n cancelButtonText(): string {\n return this.operation === Operation.ADD\n ? this.$t(\"fkui.crud-dataset.modal.cancel.add\", \"Avbryt\")\n : this.$t(\"fkui.crud-dataset.modal.cancel.modify\", \"Avbryt\");\n },\n confirmDeleteButtons(): FModalButtonDescriptor[] {\n return [\n {\n label: this.$t(\"fkui.crud-dataset.modal.confirm.delete\", \"Ja, ta bort\"),\n type: \"primary\",\n event: \"confirm\",\n },\n { label: this.$t(\"fkui.crud-dataset.modal.cancel.delete\", \"Nej, avbryt\"), type: \"secondary\" },\n ];\n },\n hasAddSlot(): boolean {\n return Boolean(this.$slots.add);\n },\n hasDeleteSlot(): boolean {\n return Boolean(this.$slots.delete);\n },\n hasModifySlot(): boolean {\n return Boolean(this.$slots.modify);\n },\n formModalHeader(): string {\n return this.operation === Operation.ADD ? this.addNewModalHeader : this.modifyModalHeader;\n },\n },\n watch: {\n modelValue: {\n immediate: true,\n deep: true,\n handler(data: ListItem[]) {\n this.result = [...data];\n },\n },\n },\n mounted(): void {\n if (!this.hasAddSlot && !this.hasDeleteSlot && !this.hasModifySlot) {\n throw Error(\"Atleast one template of the following must be defined. #add, #delete or #modify\");\n }\n },\n methods: {\n createItem(): void {\n if (!this.hasAddSlot) {\n throw Error(\"No template is defined for #add\");\n }\n this.operation = Operation.ADD;\n this.item = this.beforeCreate ? this.beforeCreate() : {};\n this.isFormModalOpen = true;\n },\n deleteItem(item: ListItem) {\n if (!this.hasDeleteSlot) {\n throw Error(\"No template is defined for #delete\");\n }\n this.operation = Operation.DELETE;\n this.item = item;\n this.isConfirmModalOpen = true;\n },\n onDeleteConfirm(): void {\n if (!this.item) {\n return;\n }\n this.callbackBeforeItemDelete(this.item);\n this.result = this.result.filter((item: ListItem) => item !== this.item);\n\n /**\n * Emitted when an item is deleted.\n * @event deleted\n * @param item - the deleted item.\n */\n this.$emit(\"deleted\", this.item);\n\n /**\n * V-model event.\n * @event update:modelValue\n */\n this.$emit(\"update:modelValue\", this.result);\n\n /**\n * Vue2 v-model event.\n * @deprecated\n * @event change\n */\n this.$emit(\"change\", this.result);\n\n alertScreenReader(this.$t(\"fkui.crud-dataset.aria-live.delete\", \"Raden har tagits bort\"), {\n assertive: true,\n });\n },\n onDeleteClose(e: { reason: string }) {\n this.onModalClose();\n if (e.reason === \"close\" && this.onCancel) {\n this.onCancel();\n }\n },\n\n onModalClose(): void {\n this.isFormModalOpen = false;\n this.isConfirmModalOpen = false;\n },\n onFormModalSubmit(): void {\n if (!this.item) {\n return;\n }\n if (this.operation === Operation.ADD) {\n this.result.push(this.item);\n /**\n * Emitted when an item is added.\n * @event created\n * @param item - the added item.\n */\n this.$emit(\"created\", this.item);\n this.$emit(\"update:modelValue\", this.result);\n this.$emit(\"change\", this.result);\n\n this.callbackAfterItemAdd(this.item);\n alertScreenReader(this.$t(\"fkui.crud-dataset.aria-live.add\", \"En rad har lagts till\"), {\n assertive: true,\n });\n } else if (this.operation === Operation.MODIFY) {\n if (this.originalItemToUpdate) {\n Object.assign(this.originalItemToUpdate, this.item);\n } else {\n this.originalItemToUpdate = this.item;\n }\n /**\n * Emitted when an item is updated.\n * @event updated\n * @param item - the updated item.\n */\n this.$emit(\"updated\", this.originalItemToUpdate);\n this.$emit(\"update:modelValue\", this.result);\n this.$emit(\"change\", this.result);\n\n alertScreenReader(this.$t(\"fkui.crud-dataset.aria-live.modify\", \"Raden har ändrats\"), {\n assertive: true,\n });\n }\n this.isFormModalOpen = false;\n },\n updateItem(item: ListItem): void {\n if (!this.hasModifySlot) {\n throw Error(\"No template is defined for #modify\");\n }\n this.operation = Operation.MODIFY;\n this.originalItemToUpdate = item;\n this.item = deepClone(item);\n this.isFormModalOpen = true;\n },\n },\n});\n</script>\n","import { inject } from \"vue\";\nimport { ListItem } from \"../../types\";\n\n/**\n * @public\n */\nexport interface FCrudDatasetInterface {\n delete(item: ListItem): void;\n modify(item: ListItem): void;\n}\n\nexport function FCrudDatasetInjected(): FCrudDatasetInterface {\n return {\n delete: inject(\"delete\") as (item: ListItem) => void,\n modify: inject(\"modify\") as (item: ListItem) => void,\n };\n}\n","<template>\n <button type=\"button\" class=\"button button--discrete\" @click=\"executeAction\">\n <f-icon v-if=\"icon\" class=\"button__icon\" :name=\"iconName\"></f-icon>\n <span v-if=\"!label\" class=\"sr-only\">\n <slot> {{ buttonText }} </slot>\n </span>\n <slot v-if=\"label\"> {{ buttonText }} </slot>\n </button>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from \"vue\";\nimport { FIcon } from \"../FIcon\";\nimport { TranslationMixin } from \"../../plugins\";\nimport { FCrudDatasetInjected, FCrudDatasetInterface } from \"./FCrudDatasetInterface\";\n\nexport default defineComponent({\n name: \"FCrudButton\",\n components: { FIcon },\n mixins: [TranslationMixin],\n props: {\n action: {\n type: String,\n required: true,\n validator(value: string) {\n return [\"delete\", \"modify\"].includes(value);\n },\n },\n icon: {\n type: Boolean,\n default: false,\n },\n item: {\n type: Object,\n required: true,\n },\n label: {\n type: Boolean,\n default: false,\n },\n },\n setup(): FCrudDatasetInterface {\n return FCrudDatasetInjected();\n },\n computed: {\n iconName(): string {\n if (this.action === \"delete\") {\n return \"trashcan\";\n } else {\n return \"pen\";\n }\n },\n buttonText(): string {\n if (this.action === \"delete\") {\n return this.$t(\"fkui.crud-button.delete\", \"Ta bort\");\n } else {\n return this.$t(\"fkui.crud-button.modify\", \"Ändra\");\n }\n },\n },\n methods: {\n executeAction(): void {\n if (this.action === \"delete\") {\n this.delete(this.item);\n } else {\n this.modify(this.item);\n }\n },\n },\n});\n</script>\n","import { inject } from \"vue\";\nimport { ListItem } from \"../../types\";\n\n/**\n * @public\n */\nexport type ActivateItemCallback = (item: ListItem) => void;\n\n/**\n * @public\n */\nexport interface ActivateItemInterface {\n // After an item is added it should be active\n registerCallbackAfterItemAdd(callback: ActivateItemCallback): void;\n // When an item is deleted the item above it should be set to active and have focus.\n registerCallbackBeforeItemDelete(callback: ActivateItemCallback): void;\n}\n\n/**\n * @public\n */\nexport function ActivateItemInjected(): ActivateItemInterface {\n return {\n registerCallbackAfterItemAdd: inject(\n \"registerCallbackAfterItemAdd\",\n () => undefined,\n ) as (callback: ActivateItemCallback) => void,\n registerCallbackBeforeItemDelete: inject(\n \"registerCallbackBeforeItemDelete\",\n () => undefined,\n ) as (callback: ActivateItemCallback) => void,\n };\n}\n","/**\n * @public\n */\nexport enum FTableColumnType {\n TEXT = \"text\",\n DATE = \"date\",\n NUMERIC = \"numeric\",\n ACTION = \"action\",\n}\n\nexport enum FTableColumnSize {\n EXPAND = \"table__column--expand\",\n SHRINK = \"table__column--shrink\",\n}\n\nexport enum FTableColumnSort {\n UNSORTED = \"unsorted\",\n ASCENDING = \"ascending\",\n DESCENDING = \"descending\",\n}\n\nexport interface FTableColumnData {\n id: string;\n name: string;\n title: string;\n description?: string;\n size: FTableColumnSize;\n type: FTableColumnType;\n visible: boolean;\n sortable: boolean;\n sort: FTableColumnSort;\n}\n\nexport function addColumn(\n src: FTableColumnData[],\n column: FTableColumnData,\n): FTableColumnData[] {\n if (!src.some((col) => col.name === column.name)) {\n return [...src, column];\n }\n return src;\n}\n\nexport function setVisibilityColumn(\n src: FTableColumnData[],\n id: string,\n visible: boolean,\n): void {\n const column = src.find((col) => col.name === id);\n if (column) {\n column.visible = visible;\n }\n}\n\nexport function updateSortOrder(\n src: FTableColumnData[],\n columnName: string,\n ascending: boolean,\n): void {\n src.forEach((column) => {\n if (column.name === columnName) {\n column.sort = ascending\n ? FTableColumnSort.ASCENDING\n : FTableColumnSort.DESCENDING;\n } else {\n column.sort = FTableColumnSort.UNSORTED;\n }\n });\n}\n\nexport function setSortableColumns(\n src: FTableColumnData[],\n columnNames: string[],\n): void {\n for (const columnName of columnNames) {\n const foundColumn = src.find((col) => col.name === columnName);\n if (foundColumn) {\n foundColumn.sortable = true;\n }\n }\n}\n\nexport function getSortableIconName(column: FTableColumnData): string {\n switch (column.sort) {\n case FTableColumnSort.UNSORTED:\n return \"sort\";\n case FTableColumnSort.ASCENDING:\n return \"caret-up\";\n case FTableColumnSort.DESCENDING:\n return \"caret-down\";\n default:\n return \"\";\n }\n}\n\nexport function getSortableIconClasses(column: FTableColumnData): string[] {\n const classes = [\"table__column__header__icon\"];\n if (column.sort === FTableColumnSort.UNSORTED) {\n classes.push(\"table__column__header__icon--discrete\");\n }\n return classes;\n}\n\n/**\n * @internal\n */\nexport function isTableColumnType(value: string): value is FTableColumnType {\n return [\"text\", \"date\", \"numeric\", \"action\"].includes(value);\n}\n","import { inject } from \"vue\";\nimport { FTableColumnData } from \"./FTableColumnData\";\n\n/**\n * This interface must be implemented (provided) by all Vue components\n * supporting table columns.\n *\n * @public\n */\nexport interface FTableInterface {\n /**\n * Called when a new column is added.\n */\n addColumn(column: FTableColumnData): void;\n\n /**\n * Called when a column is hidden.\n */\n setVisibilityColumn(id: string, visible: boolean): void;\n\n /**\n * Enables table mode when set to `true`.\n * Used to hide label (sr-only) and enable `IPopupError`, for inputfields enclosed by a table.\n */\n textFieldTableMode: boolean;\n}\n\nexport function FTableInjected(): FTableInterface {\n return {\n addColumn: inject(\"addColumn\") as (column: FTableColumnData) => void,\n setVisibilityColumn: inject(\"setVisibilityColumn\") as (\n id: string,\n visible: boolean,\n ) => void,\n textFieldTableMode: true,\n };\n}\n","<template>\n <component :is=\"tagName\" v-if=\"visible\" :class=\"classes\" :scope=\"scope\" v-bind=\"$attrs\">\n <slot></slot>\n <!-- Extra space between columns for screen reader. Otherwise it can sometimes read two numbers as one longer number.\n For example a table with | 2 | 200 | can be read as 2200 in some languages.\n -->\n <span class=\"sr-only\">&nbsp;</span>\n </component>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, type PropType } from \"vue\";\nimport { ElementIdService } from \"@fkui/logic\";\nimport { FTableInjected, FTableInterface } from \"./FTableInterface\";\nimport { FTableColumnType, FTableColumnSize, FTableColumnSort, isTableColumnType } from \"./FTableColumnData\";\n\nexport default defineComponent({\n name: \"FTableColumn\",\n inheritAttrs: false,\n props: {\n /**\n * Unique (per-table) identifier.\n *\n * Typically set to the row property displayed but any unique string can\n * be used.\n */\n name: {\n type: String,\n required: true,\n },\n /**\n * If set to true, display the column, set to false to hide it.\n */\n visible: {\n type: Boolean,\n default: true,\n },\n /**\n * If `true` this cell will be a row header (`<th>` as opposed to\n * `<td>`).\n */\n rowHeader: {\n type: Boolean,\n required: false,\n default: false,\n },\n /**\n * Text to show in column header. In order to force newlines use `\\n`.\n */\n title: {\n type: String,\n required: true,\n },\n /**\n * Additional column description.\n */\n description: {\n type: String,\n required: false,\n default: \"\",\n },\n /**\n * Set this column to shrink as small as possible.\n *\n * Cannot be combined with `expand`\n */\n shrink: {\n type: Boolean,\n required: false,\n default: false,\n },\n /**\n * Set this column to expand as large as possible.\n *\n * Cannot be combined with `shrink`\n *\n * Default if neither `expand` or `shrink` is set.\n */\n expand: {\n type: Boolean,\n required: false,\n default: false,\n },\n /**\n * Type of data the rows contains.\n *\n * Applies proper alignment and some styling (e.g. \"numeric\" uses fixed\n * width numbers).\n *\n * Can be one of the following values:\n *\n * - `\"text\"`: regular text data (default)\n * - `\"date\"`: date (should be YYYY-MM-DD)\n * - `\"numeric\"`: numeric data\n * - `\"action\"`: buttons to perform actions on row\n */\n type: {\n type: String as PropType<\"text\" | \"date\" | \"numeric\" | \"action\">,\n required: false,\n default: FTableColumnType.TEXT,\n validator(value: string) {\n return isTableColumnType(value);\n },\n },\n },\n setup(): FTableInterface {\n return FTableInjected();\n },\n computed: {\n classes(): string[] {\n return [\"table__column\", `table__column--${this.type}`];\n },\n scope(): \"row\" | null {\n return this.rowHeader ? \"row\" : null;\n },\n tagName(): \"td\" | \"th\" {\n if (this.rowHeader) {\n return \"th\";\n } else {\n return \"td\";\n }\n },\n },\n watch: {\n visible: {\n handler: function () {\n this.setVisibilityColumn(this.name, this.visible);\n },\n },\n },\n created() {\n if (this.shrink && this.expand) {\n throw new Error(\"Table cannot have both shrink and expand enabled at the same time\");\n }\n\n const size = this.shrink ? FTableColumnSize.SHRINK : FTableColumnSize.EXPAND;\n this.addColumn({\n name: this.name,\n title: this.title,\n description: this.description || undefined,\n id: ElementIdService.generateElementId(\"column\"),\n size,\n type: this.type as FTableColumnType,\n visible: this.visible,\n sortable: false,\n sort: FTableColumnSort.UNSORTED,\n });\n },\n});\n</script>\n","import { inject } from \"vue\";\n\n/**\n * @public\n * @param attribute - is the field that got sorted\n * @param ascending - is the order the fields got sorted\n */\nexport type FSortFilterDatasetSortCallback = (\n attribute: string,\n ascending: boolean,\n) => void;\n\n/**\n * @public\n */\nexport type FSortFilterDatasetMountCallback = (columnNames: string[]) => void;\n\n/**\n * This interface can be implemented (provided) by Vue components\n * supporting filtering. Not required.\n *\n * @public\n */\nexport interface FSortFilterDatasetInterface {\n /**\n * Sort the dataset\n * @param attribute - is the field that gets sorted\n * @param ascending - is the order the fields get sorted\n */\n sort(attribute: string, ascending: boolean): void;\n\n /**\n * Callback function that is called when dataset get sorted\n */\n registerCallbackOnSort(callback: FSortFilterDatasetSortCallback): void;\n\n /**\n * Called when FSortFilterDataset is mounted.\n * Returns the sortable field names.\n */\n registerCallbackOnMount(callback: FSortFilterDatasetMountCallback): void;\n}\n\n/**\n * Empty dummy methods to be used when no FSortFilterDataset is used\n *\n * @public\n */\nexport function FSortFilterDatasetInjected(): FSortFilterDatasetInterface {\n return {\n sort: inject(\"sort\", () => undefined) as (\n attribute: string,\n ascending: boolean,\n ) => void,\n registerCallbackOnSort: inject(\n \"registerCallbackOnSort\",\n () => undefined,\n ) as (callback: FSortFilterDatasetSortCallback) => void,\n registerCallbackOnMount: inject(\n \"registerCallbackOnMount\",\n () => undefined,\n ) as (callback: FSortFilterDatasetMountCallback) => void,\n };\n}\n","<template>\n <div v-if=\"$slots.tooltip\">\n <div v-if=\"hasDefaultSlot\" class=\"tooltip-before\">\n <label class=\"label tooltip-before__label\" :for=\"forProperty\">\n <slot name=\"default\"></slot>\n </label>\n </div>\n\n <!-- @slot Slot for tooltip. -->\n <slot name=\"tooltip\"></slot>\n\n <label v-if=\"hasDescriptionSlot || hasErrorMessageSlot\" class=\"label sr-separator\" :for=\"forProperty\">\n <!--\n @slot Optional slot for description.\n @binding {string[]} descriptionClass CSS classes for primary description content.\n @binding {string[]} discreteDescriptionClass CSS classes for format description.\n -->\n <slot name=\"description\" v-bind=\"{ descriptionClass, discreteDescriptionClass }\"></slot>\n <span v-if=\"hasErrorMessageSlot\" class=\"label__message label__message--error\">\n <f-icon class=\"label__icon--left\" name=\"error\"></f-icon>\n <slot name=\"error-message\"></slot>\n </span>\n </label>\n </div>\n\n <label v-else class=\"label\" :for=\"forProperty\">\n <!-- @slot Slot for label content. -->\n <slot name=\"default\"></slot>\n <!--\n @slot Optional slot for description.\n @binding {string[]} descriptionClass CSS classes for primary description content.\n @binding {string[]} discreteDescriptionClass CSS classes for format description.\n -->\n <slot name=\"description\" v-bind=\"{ descriptionClass, discreteDescriptionClass }\"></slot>\n <span v-if=\"hasErrorMessageSlot\" class=\"label__message label__message--error\">\n <f-icon class=\"label__icon--left\" name=\"error\"></f-icon>\n <!-- @slot Slot for displaying single or several error messages. -->\n <slot name=\"error-message\"></slot>\n </span>\n </label>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, type PropType } from \"vue\";\nimport { hasSlot } from \"../../utils\";\nimport { FIcon } from \"../FIcon\";\n\nexport default defineComponent({\n name: \"FLabel\",\n components: {\n FIcon,\n },\n props: {\n /**\n * The id for the form element the label is bound to.\n */\n for: {\n type: String as PropType<string | undefined>,\n required: false,\n default: undefined,\n },\n },\n data() {\n return {\n descriptionClass: [\"label__description\"],\n discreteDescriptionClass: [\"label__description\", \"label__description--discrete\"],\n };\n },\n computed: {\n forProperty(): string | undefined {\n return this.for;\n },\n hasDefaultSlot(): boolean {\n return hasSlot(this, \"default\");\n },\n hasErrorMessageSlot(): boolean {\n return hasSlot(this, \"error-message\");\n },\n hasDescriptionSlot(): boolean {\n return hasSlot(this, \"description\");\n },\n },\n});\n</script>\n","export function resolveWidthClass(\n words: string,\n inline: boolean,\n): string | undefined {\n return inline\n ? undefined\n : words\n .split(\" \")\n .map((word) => `i-width-${word}`)\n .join(\" \");\n}\n","<template>\n <div class=\"select-field\" :class=\"rootClass\" @validity=\"onValidity\">\n <div :class=\"labelWrapperClass\">\n <f-label :for=\"id\" :class=\"labelClass\">\n <template #default>\n <!-- @slot Slot for label content. -->\n <slot name=\"label\"></slot>\n </template>\n\n <template v-if=\"$slots.tooltip\" #tooltip>\n <!-- @slot Slot for tooltip. -->\n <slot name=\"tooltip\"></slot>\n </template>\n\n <template #description=\"{ descriptionClass, discreteDescriptionClass }\">\n <!--\n @slot Optional slot for description. See [FLabel](#/Components/FLabel) for details.\n @binding {string[]} descriptionClass CSS classes for primary description content.\n @binding {string[]} discreteDescriptionClass CSS classes for format description.\n -->\n <slot name=\"description\" v-bind=\"{ descriptionClass, discreteDescriptionClass }\"></slot>\n </template>\n\n <template #error-message>\n <!--\n @slot Slot for displaying single or several error messages.\n @binding {boolean} hasError Set to true when a validation error is present\n @binding {string} validationMessage Descriptive validation error message for current error\n -->\n <slot name=\"error-message\" v-bind=\"{ hasError, validationMessage }\">\n <template v-if=\"hasError\">{{ validationMessage }}</template>\n </slot>\n </template>\n </f-label>\n </div>\n <div class=\"select-field__icon-wrapper\" :class=\"selectWrapperClass\">\n <select :id=\"id\" v-model=\"vModel\" class=\"select-field__select\" v-bind=\"attrs\">\n <slot></slot>\n </select>\n <f-icon\n v-if=\"hasError && textFieldTableMode\"\n ref=\"icon\"\n class=\"text-field__icon input-icon select-field__error-popup-icon\"\n name=\"error\"\n ></f-icon>\n <f-icon class=\"select-field__icon\" name=\"arrow-down\"></f-icon>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, inject } from \"vue\";\nimport { ElementIdService, type ValidityEvent } from \"@fkui/logic\";\nimport { FIcon } from \"../FIcon\";\nimport { FLabel } from \"../FLabel\";\nimport { renderSlotText, dispatchComponentValidityEvent } from \"../../utils\";\nimport { resolveWidthClass } from \"./FSelectField.logic\";\n\nexport default defineComponent({\n name: \"FSelectField\",\n components: { FIcon, FLabel },\n inheritAttrs: false,\n props: {\n /**\n * The id for the select id attribute.\n * The id for the label for attribute.\n * If the prop is not set a random value will be generated.\n */\n id: {\n type: String,\n required: false,\n default: () => ElementIdService.generateElementId(),\n },\n /**\n * Show the component inline.\n */\n inline: {\n type: Boolean,\n required: false,\n default: false,\n },\n /**\n * The value for the input.\n * If the prop is not set undefined will be used.\n * @model\n */\n modelValue: {\n type: [String, Number, Object, Array, Boolean],\n required: false,\n default: undefined,\n },\n /**\n * Set responsive width for label section.\n *\n * ```\n * label-width=\"md-9 lg-6\"\n * ```\n */\n labelWidth: {\n type: String,\n required: false,\n default: \"sm-12\",\n },\n /**\n * Set responsive width for select section that wraps select element and icons.\n *\n * ```\n * select-width=\"md-6 lg-3\"\n * ```\n */\n selectWidth: {\n type: String,\n required: false,\n default: \"sm-12\",\n },\n },\n emits: [\"change\", \"update:modelValue\"],\n setup() {\n return {\n textFieldTableMode: inject(\"textFieldTableMode\", false) as boolean,\n };\n },\n data() {\n return {\n validityMode: \"INITIAL\" as string,\n validationMessage: \"\" as string,\n };\n },\n computed: {\n attrs(): Record<string, unknown> {\n return {\n ...this.$attrs,\n // Disable change\n onChange: () => undefined,\n };\n },\n hasError(): boolean {\n return this.validityMode === \"ERROR\";\n },\n rootClass(): Record<string, boolean> {\n return {\n [\"select-field--error\"]: this.hasError,\n [\"select-field--inline\"]: this.inline,\n [\"text-field--table\"]: this.textFieldTableMode,\n [\"select-field--table-error\"]: this.textFieldTableMode && this.hasError,\n };\n },\n labelClass(): string {\n return this.textFieldTableMode ? \"sr-only\" : \"\";\n },\n labelWrapperClass(): string | undefined {\n return resolveWidthClass(this.labelWidth, this.inline);\n },\n selectWrapperClass(): string | undefined {\n return resolveWidthClass(this.selectWidth, this.inline);\n },\n vModel: {\n get() {\n return this.modelValue;\n },\n set(value: unknown) {\n /**\n * V-model event.\n * @event update:modelValue\n * @type {string}\n */\n this.$emit(\"update:modelValue\", value);\n\n /**\n * Vue2 v-model event.\n * @deprecated\n * @event change\n * @type {string}\n */\n this.$emit(\"change\", value);\n },\n },\n },\n methods: {\n async onValidity({ detail }: CustomEvent<ValidityEvent>): Promise<void> {\n this.validationMessage = detail.validationMessage;\n this.validityMode = detail.validityMode;\n\n await this.$nextTick();\n\n const errorMessage = renderSlotText(this.$slots.label) ?? \"\";\n\n const element = this.$el.querySelector(`#${detail.elementId}`);\n if (element) {\n dispatchComponentValidityEvent(element, {\n ...detail,\n errorMessage,\n focusElementId: detail.elementId,\n });\n }\n },\n },\n});\n</script>\n","import { Placement } from \"../IPopup/IPopupUtils\";\n\nexport interface ArrowPosition {\n offset: number;\n position: \"bottom\" | \"top\" | \"left\" | \"right\";\n}\n\nexport function computeArrowOffset(\n placement: Placement,\n inputIconRect: DOMRect,\n wrapperRect: DOMRect,\n): ArrowPosition {\n switch (placement) {\n case Placement.A: {\n const wrapperRightX = wrapperRect.x + wrapperRect.width;\n const iconCenterX = inputIconRect.x + inputIconRect.width / 2;\n const offset = wrapperRightX - iconCenterX;\n return { position: \"top\", offset };\n }\n case Placement.B: {\n const offset =\n wrapperRect.x +\n wrapperRect.width -\n (inputIconRect.x + inputIconRect.width / 2);\n return { position: \"top\", offset };\n }\n case Placement.C: {\n const wrapperRightX = wrapperRect.x + wrapperRect.width;\n const iconCenterX = inputIconRect.x + inputIconRect.width / 2;\n const offset = wrapperRightX - iconCenterX;\n return { position: \"bottom\", offset };\n }\n case Placement.D: {\n const offset =\n wrapperRect.x +\n wrapperRect.width -\n (inputIconRect.x + inputIconRect.width / 2);\n return { position: \"bottom\", offset };\n }\n case Placement.E: {\n const offset =\n wrapperRect.y +\n wrapperRect.height -\n (inputIconRect.y + inputIconRect.height / 2);\n return { position: \"left\", offset };\n }\n case Placement.F: {\n const offset =\n wrapperRect.y +\n wrapperRect.height -\n (inputIconRect.y + inputIconRect.height / 2);\n return { position: \"right\", offset };\n }\n case Placement.G:\n case Placement.H:\n case Placement.I:\n case Placement.Fallback:\n // eslint-disable-next-line sonarjs/no-duplicated-branches, no-fallthrough -- Nice to have alphabetical order with fallthrough.\n case Placement.NotCalculated: {\n const offset =\n wrapperRect.x +\n wrapperRect.width -\n (inputIconRect.x + inputIconRect.width / 2);\n return { position: \"top\", offset };\n }\n }\n}\n","<template>\n <teleport v-if=\"isOpen\" to=\"body\" :disabled=\"teleportDisabled\">\n <div ref=\"popup\" :class=\"popupClasses\" aria-hidden=\"true\">\n <div ref=\"wrapper\" class=\"popup-error__wrapper\">\n <!-- [html-validate-disable-next no-inline-style] -->\n <div :class=\"arrowClass\" :style=\"errorStyle\">\n <span>{{ errorMessage }}</span>\n\n <!-- `tabindex=\"-1\" is set since `IPopupError` has `aria-hidden`, wich cannot be used on focusable elements.\n `IPopupError` will be closed on input-field `blur`, so the button is never focusable anyway .\n -->\n <button\n tabindex=\"-1\"\n type=\"button\"\n class=\"button button--discrete button--discrete--black modal__close-button popup-error__button\"\n aria-label=\"Stäng\"\n @click=\"onClose\"\n >\n <f-icon name=\"close\" class=\"button__icon\"></f-icon>\n </button>\n </div>\n </div>\n </div>\n </teleport>\n</template>\n\n<script lang=\"ts\">\nimport { type PropType, defineComponent } from \"vue\";\nimport { FIcon } from \"../../components/FIcon\";\nimport { CandidateOrder, Placement, fitInsideArea } from \"../IPopup/IPopupUtils\";\nimport { computeArrowOffset } from \"./compute-arrow-offset\";\n\nconst POPUP_SPACING = 10;\ninterface IPopupErrorData {\n teleportDisabled: boolean;\n placement: Placement;\n arrowPosition: string;\n arrowOffset: number;\n}\nexport default defineComponent({\n name: \"IPopupError\",\n components: { FIcon },\n inheritAttrs: false,\n props: {\n /**\n * Toggle open/closed error popup.\n */\n isOpen: {\n type: Boolean,\n required: true,\n },\n /**\n * Message to display\n */\n errorMessage: {\n type: String,\n required: false,\n default: \"Error\",\n },\n /**\n * DOM element to position error popup at.\n */\n anchor: {\n type: HTMLElement as PropType<HTMLElement | null | undefined>,\n required: false,\n default: undefined,\n },\n },\n emits: [\"close\"],\n data(): IPopupErrorData {\n return {\n teleportDisabled: false,\n placement: Placement.NotCalculated,\n arrowPosition: \"top\",\n arrowOffset: 24,\n };\n },\n computed: {\n popupClasses(): string[] {\n const forceInline = this.teleportDisabled || this.placement === Placement.Fallback;\n const popupState = forceInline ? [\"popup-error--inline\"] : [\"popup-error--overlay\"];\n return [\"popup-error\", ...popupState];\n },\n arrowClass(): string {\n return `popup-error popup-error--arrow popup-error--${this.arrowPosition}`;\n },\n errorStyle(): string {\n return `--i-popup-error-offset: ${this.arrowOffset}px`;\n },\n },\n watch: {\n anchor: {\n immediate: true,\n handler(anchor: HTMLElement | null | undefined): void {\n if (anchor) {\n anchor.addEventListener(\"keyup\", this.onKeyEsc);\n window.addEventListener(\"resize\", this.onResize);\n }\n },\n },\n isOpen: {\n immediate: true,\n async handler(value: boolean): Promise<void> {\n await this.toggleIsOpen(value);\n },\n },\n },\n unmounted() {\n this.anchor?.removeEventListener(\"keyup\", this.onKeyEsc);\n window.removeEventListener(\"resize\", this.onResize);\n },\n methods: {\n onResize() {\n this.toggleIsOpen(this.isOpen);\n },\n onKeyEsc(event: KeyboardEvent): void {\n if (event.key === \"Escape\") {\n this.$emit(\"close\");\n }\n },\n onClose() {\n this.$emit(\"close\");\n },\n setArrowOffset() {\n const wrapper = this.$refs[\"wrapper\"] as HTMLElement;\n const inputIcon = this.anchor?.nextElementSibling;\n if (!inputIcon || !wrapper) {\n return;\n }\n const inputIconRect = inputIcon.getBoundingClientRect();\n const wrapperRect = wrapper.getBoundingClientRect();\n const arrow = computeArrowOffset(this.placement, inputIconRect, wrapperRect);\n this.arrowOffset = arrow.offset;\n this.arrowPosition = arrow.position;\n },\n async toggleIsOpen(isOpen: boolean): Promise<void> {\n /* popup is closing */\n if (!isOpen) {\n this.placement = Placement.NotCalculated;\n return;\n }\n\n /* popup is opening */\n // Wait for popup to show up\n await this.$nextTick();\n const wrapper = this.$refs[\"wrapper\"] as HTMLElement;\n\n if (!this.anchor) {\n throw new Error(\"No anchor element found\");\n }\n\n // Check candidates for overlay position.\n const area = document.body;\n const viewport = document.documentElement;\n const result = fitInsideArea({\n area,\n anchor: this.anchor,\n target: wrapper,\n viewport,\n spacing: POPUP_SPACING,\n candidateOrder: CandidateOrder.IPopupError,\n });\n\n this.placement = result.placement;\n if (result.placement !== Placement.Fallback) {\n this.teleportDisabled = false;\n wrapper.style.left = `${result.x}px`;\n wrapper.style.top = `${result.y}px`;\n await this.setArrowOffset();\n return;\n }\n await this.setArrowOffset();\n this.teleportDisabled = true;\n wrapper.style.removeProperty(\"left\");\n wrapper.style.removeProperty(\"top\");\n },\n },\n});\n</script>\n","export function resolveWidthClass(\n words: string,\n inline: boolean,\n): string | undefined {\n return inline\n ? undefined\n : words\n .split(\" \")\n .map((word) => `i-width-${word}`)\n .join(\" \");\n}\n","<template>\n <div class=\"text-field\" :class=\"rootClass\">\n <div :class=\"labelWrapperClass\">\n <f-label :for=\"id\" :class=\"labelClass\">\n <template #default>\n <!-- @slot Slot for label content. -->\n <slot name=\"default\">\n <span v-if=\"defaultText !== ''\">{{ defaultText }}</span>\n </slot>\n </template>\n\n <template v-if=\"$slots.tooltip\" #tooltip>\n <!-- @slot Slot for tooltip. -->\n <slot name=\"tooltip\"></slot>\n </template>\n\n <template #description=\"{ descriptionClass, discreteDescriptionClass }\">\n <!--\n @slot Optional slot for description. See [FLabel](#/Components/FLabel) for details.\n @binding {string[]} descriptionClass CSS classes for primary description content.\n @binding {string[]} discreteDescriptionClass CSS classes for format description.\n -->\n <slot name=\"description\" v-bind=\"{ descriptionClass, discreteDescriptionClass }\">\n <span v-if=\"descriptionText\" :class=\"descriptionClass\">\n <span v-if=\"descriptionScreenReaderText\" class=\"sr-only\">{{\n descriptionScreenReaderText\n }}</span>\n <span>{{ descriptionText }}</span>\n </span>\n <span v-if=\"discreteDescriptionText\" :class=\"discreteDescriptionClass\">\n <span v-if=\"discreteDescriptionScreenReaderText\" class=\"sr-only\">{{\n discreteDescriptionScreenReaderText\n }}</span>\n <span>{{ discreteDescriptionText }}</span>\n </span>\n </slot>\n </template>\n\n <template #error-message>\n <!--\n @slot Slot for displaying single or several error messages.\n @binding {boolean} hasError Set to true when a validation error is present\n @binding {string} validationMessage Descriptive validation error message for current error\n -->\n <slot name=\"error-message\" v-bind=\"{ hasError, validationMessage }\">\n <template v-if=\"hasError\">{{ validationMessage }}</template>\n </slot>\n </template>\n </f-label>\n </div>\n\n <div class=\"text-field__input-wrapper\" :class=\"inputWrapperClass\">\n <!-- @slot Slot for adding content to the left of the input element. -->\n <slot name=\"input-left\" />\n\n <div class=\"text-field__icon-wrapper\">\n <input\n :id=\"id\"\n ref=\"input\"\n v-model=\"viewValue\"\n :type=\"type\"\n class=\"text-field__input\"\n v-bind=\"$attrs\"\n @blur=\"onBlur\"\n @focus=\"onFocus\"\n @change=\"onChange\"\n @validity=\"onValidity\"\n @pending-validity=\"onPendingValidity\"\n />\n <f-icon\n v-if=\"hasError && textFieldTableMode\"\n ref=\"icon\"\n class=\"text-field__icon input-icon text-field__append-inner text-field__error-popup-icon\"\n name=\"error\"\n ></f-icon>\n <i-popup-error\n v-if=\"textFieldTableMode\"\n :anchor=\"getErrorPopupAnchor()\"\n :is-open=\"showPopupError\"\n :error-message=\"validationMessage\"\n @close=\"closePopupError\"\n ></i-popup-error>\n <div v-if=\"$slots['append-inner']\" class=\"text-field__append-inner\">\n <!-- @slot Slot for add content inside the input to the right -->\n <slot name=\"append-inner\"></slot>\n </div>\n </div>\n\n <!-- @slot Slot for adding content to the right of the input element. -->\n <slot name=\"input-right\" />\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, inject, type PropType } from \"vue\";\nimport { ElementIdService, isSet, type ValidityEvent } from \"@fkui/logic\";\nimport { FLabel } from \"../FLabel\";\nimport { FIcon } from \"../FIcon\";\nimport { IPopupError } from \"../../internal-components/IPopupError\";\nimport { dispatchComponentValidityEvent, renderSlotText } from \"../../utils\";\nimport { resolveWidthClass } from \"./FTextField.logic\";\nimport { FormatFunction, ParseFunction } from \"./index\";\n\nexport default defineComponent({\n name: \"FTextField\",\n components: { FLabel, FIcon, IPopupError },\n inheritAttrs: false,\n props: {\n /**\n * The id for the input id attribute.\n * The id for the label for attribute.\n * If the prop is not set a random value will be generated.\n */\n id: {\n type: String,\n required: false,\n default: () => ElementIdService.generateElementId(),\n },\n /**\n * Show the component inline.\n */\n inline: {\n type: Boolean,\n required: false,\n default: false,\n },\n /**\n * The value for the input.\n * If the prop is not set undefined will be used.\n * @model\n */\n modelValue: {\n type: [String, Number],\n required: false,\n default: \"\",\n },\n /**\n * The type used for the input.\n * If the prop is not set text will be used.\n */\n type: {\n type: String,\n required: false,\n default: \"text\",\n },\n /**\n * - The `formatter` function must only be used on a component that uses validation.\n * - The `formatter` function acts differently depending on if the `parser` function is defined or not.\n *\n * | formatter without parser | formatter with parser |\n * | ----- | -----|\n * | modelvalue = parsed viewvalue using formatter function | modelvalue = parsed viewvalue using parser function |\n * | viewvalue = modelvalue (where modelvalue is already parsed) | viewvalue = formatted modelvalue using formatter function (where modelvalue is already parsed) |\n */\n formatter: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- We cannot know which type is used.\n type: Function as PropType<FormatFunction<any>>,\n required: false,\n default: undefined,\n },\n /**\n * - The `parser` function must only be used on a component that uses validation.\n * - The `parser` function acts differently depending on if the `formatter` function is defined or not.\n * - For parser combined with formatter, refer to formatter prop doc.\n *\n * | parser without formatter |\n * | ----- |\n * | modelvalue = parsed viewvalue using parser function |\n * | viewvalue = never updated except when modelvalue differs from parsed viewvalue |\n */\n parser: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- We cannot know which type is used.\n type: Function as PropType<ParseFunction<any>>,\n required: false,\n default: undefined,\n },\n /**\n * Set responsive width for label section.\n *\n * ```\n * label-width=\"md-9 lg-6\"\n * ```\n */\n labelWidth: {\n type: String,\n required: false,\n default: \"sm-12\",\n },\n /**\n * Set responsive width for input section that wraps input element and icons.\n *\n * ```\n * input-width=\"md-6 lg-3\"\n * ```\n */\n inputWidth: {\n type: String,\n required: false,\n default: \"sm-12\",\n },\n },\n emits: [\"blur\", \"change\", \"update\", \"update:modelValue\"],\n setup() {\n return {\n textFieldTableMode: inject(\"textFieldTableMode\", false) as boolean,\n };\n },\n data() {\n return {\n showErrorPopup: false,\n viewValue: \"\" as string,\n lastModelValue: \"\" as unknown,\n validationMessage: \"\" as string,\n validityMode: \"INITIAL\" as string,\n\n // internal default texts possible to override when extending component\n defaultText: \"\",\n descriptionText: \"\",\n descriptionScreenReaderText: \"\",\n discreteDescriptionText: \"\",\n discreteDescriptionScreenReaderText: \"\",\n };\n },\n computed: {\n showPopupError(): boolean {\n return this.textFieldTableMode && this.hasError && this.showErrorPopup;\n },\n labelClass(): string {\n return this.textFieldTableMode ? \"sr-only\" : \"\";\n },\n isValid(): boolean {\n return this.validityMode === \"VALID\";\n },\n hasError(): boolean {\n return this.validityMode === \"ERROR\";\n },\n rootClass(): Record<string, boolean> {\n return {\n \"text-field--error\": this.hasError,\n \"text-field--inline\": this.inline,\n \"text-field--table\": this.textFieldTableMode,\n };\n },\n labelWrapperClass(): string | undefined {\n return resolveWidthClass(this.labelWidth, this.inline);\n },\n inputWrapperClass(): string | undefined {\n return resolveWidthClass(this.inputWidth, this.inline);\n },\n isModelUpdatedProgrammatically(): boolean {\n return this.lastModelValue !== this.modelValue;\n },\n },\n watch: {\n modelValue: {\n immediate: true,\n handler: function () {\n if (this.modelValue === undefined || this.modelValue === null) {\n this.viewValue = \"\";\n return;\n }\n\n if (!this.isModelUpdatedProgrammatically) {\n return;\n }\n\n this.setViewValueToFormattedValueOrFallbackToValue();\n this.lastModelValue = this.modelValue;\n },\n },\n },\n methods: {\n getErrorPopupAnchor(): HTMLElement {\n return this.$refs.input as HTMLElement;\n },\n closePopupError() {\n this.showErrorPopup = false;\n },\n async onChange(): Promise<void> {\n // trigger v-model update when not handled by onValidity event\n if (!(this.$refs.input as HTMLInputElement).hasAttribute(\"data-validation\")) {\n /* V-model event.\n * @event update:modelValue\n * @type {string}\n */\n this.$emit(\"update:modelValue\", this.viewValue);\n\n /* Vue2 v-model event.\n * @deprecated\n * @event update\n * @type {string}\n */\n this.$emit(\"update\", this.viewValue);\n\n await this.$nextTick(); // wait for model update before triggering change event\n /**\n * @event change\n * @type {string}\n */\n this.$emit(\"change\", this.viewValue);\n }\n },\n onFocus() {\n this.showErrorPopup = true;\n },\n async onBlur(): Promise<void> {\n this.showErrorPopup = false;\n // blur event can be triggered when unmounted, check ref existance\n if (!this.$refs.input) {\n return;\n }\n\n // trigger v-model update when not handled by onValidity event\n if (!(this.$refs.input as HTMLInputElement).hasAttribute(\"data-validation\")) {\n this.$emit(\"update:modelValue\", this.viewValue);\n this.$emit(\"update\", this.viewValue);\n await this.$nextTick(); // wait for model update before triggering blur event\n /**\n * @event blur\n * @type {string}\n */\n this.$emit(\"blur\", this.viewValue);\n }\n },\n async onValidity({ detail }: CustomEvent<ValidityEvent>): Promise<void> {\n this.validationMessage = detail.validationMessage;\n this.validityMode = detail.validityMode;\n\n if (detail.nativeEvent === \"change\" || detail.nativeEvent === \"blur\") {\n let newModelValue;\n if (detail.isValid) {\n newModelValue = this.resolveNewModelValue(this.viewValue);\n } else {\n newModelValue = this.viewValue;\n }\n this.lastModelValue = newModelValue;\n\n this.$emit(\"update:modelValue\", newModelValue);\n this.$emit(\"update\", newModelValue);\n await this.$nextTick(); // wait for model update before triggering change, blur event\n\n this.$emit(detail.nativeEvent, newModelValue);\n if (detail.isValid) {\n this.syncViewValueAfterModelUpdate(newModelValue);\n }\n }\n\n this.triggerComponentValidityEvent(detail);\n },\n onPendingValidity(): void {\n this.validityMode = \"INITIAL\";\n },\n resolveNewModelValue(viewValue: string): unknown {\n const trimmedViewValue = viewValue.trim();\n\n if (trimmedViewValue === \"\") {\n return \"\";\n } else if (isSet(this.parser)) {\n return this.parser(trimmedViewValue) ?? trimmedViewValue;\n } else if (isSet(this.formatter)) {\n return this.formatter(trimmedViewValue) ?? trimmedViewValue;\n } else {\n return trimmedViewValue;\n }\n },\n syncViewValueAfterModelUpdate(newModelValue: unknown): void | never {\n if (newModelValue === \"\") {\n this.viewValue = \"\";\n } else if (isSet(this.parser)) {\n if (isSet(this.formatter)) {\n this.viewValue = String(this.formatter(newModelValue) || this.viewValue);\n }\n } else {\n this.viewValue = String(newModelValue);\n }\n },\n triggerComponentValidityEvent(validityEvent: ValidityEvent) {\n const errorMessage = renderSlotText(this.$slots.default, {}, { stripClasses: [] }) ?? this.defaultText;\n const element = this.$el.querySelector(`#${validityEvent.elementId}`);\n if (element) {\n dispatchComponentValidityEvent(element, {\n ...validityEvent,\n errorMessage,\n focusElementId: validityEvent.elementId,\n });\n }\n },\n\n setViewValueToFormattedValueOrFallbackToValue(): void {\n if (!isSet(this.formatter)) {\n this.viewValue = String(this.modelValue);\n return;\n }\n\n /**\n * A formatter function expects a proper parsed value as input.\n * If the modelvalue is a `string` type, it can be both valid or invalid.\n * Otherwise it is expected to be a type understood by the formatter, i.e. `number`.\n */\n const parsedValue =\n isSet(this.parser) && typeof this.modelValue === \"string\"\n ? this.parser(this.modelValue)\n : this.modelValue;\n\n const formattedValue = isSet(parsedValue) ? this.formatter(parsedValue) : undefined;\n this.viewValue = isSet(formattedValue) ? formattedValue : String(this.modelValue);\n },\n },\n});\n</script>\n","<template>\n <div>\n <f-text-field\n :id=\"id\"\n type=\"email\"\n :maxlength=\"maxLength\"\n v-bind=\"$attrs\"\n :model-value=\"modelValue\"\n @change=\"onChange\"\n @blur=\"onBlur\"\n @update=\"onUpdate\"\n @validity=\"onValidity\"\n @pending-validity=\"onPendingValidity\"\n >\n <!-- @slot Optional slot for label content. -->\n <slot name=\"default\">{{ defaultText }}</slot>\n <template #error-message>\n <span v-if=\"showPasteErrorMessage\">\n {{ pasteErrorText }}\n </span>\n </template>\n </f-text-field>\n <f-text-field\n v-if=\"extendedValidation\"\n v-model=\"secondEmail\"\n type=\"email\"\n :maxlength=\"maxLength\"\n @paste=\"onPaste\"\n @blur=\"showPasteErrorMessage = false\"\n >\n <!-- @slot Optional slot for label content of extended field. -->\n <slot name=\"extended-label\">{{ $t(\"fkui.email-text-field.label.repeat\", \"Upprepa mejladress\") }}</slot>\n </f-text-field>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from \"vue\";\nimport {\n type ValidatorConfigs,\n type ValidityEvent,\n ElementIdService,\n ValidationService,\n TranslationService,\n} from \"@fkui/logic\";\nimport { FTextField } from \"../..\";\nimport { TranslationMixin } from \"../../../../plugins\";\nimport { renderSlotText, dispatchComponentValidityEvent } from \"../../../../utils\";\n\nexport default defineComponent({\n name: \"FEmailTextField\",\n components: { FTextField },\n mixins: [TranslationMixin],\n inheritAttrs: false,\n props: {\n /**\n * The id for the input id attribute.\n * The id for the label for attribute.\n * If the prop is not set a random value will be generated.\n */\n id: {\n type: String,\n required: false,\n default: () => ElementIdService.generateElementId(),\n },\n /**\n * The value for the input.\n * If the prop is not set undefined will be used.\n * @model\n */\n modelValue: {\n type: String,\n required: false,\n default: undefined,\n },\n maxLength: {\n type: Number,\n default: 80,\n },\n extendedValidation: { type: Boolean, default: false },\n /**\n * The error message to be displayed on paste\n * If the prop is not set the default text \"Du kan inte kopiera mejladressen. Du måste skriva in den igen.\" will be set\n */\n pasteErrorText: {\n type: String,\n required: false,\n default: TranslationService.provider.translate(\n \"fkui.email-text-field.error.pasting\",\n \"Du kan inte kopiera mejladressen. Du måste skriva in den igen.\",\n ),\n },\n },\n emits: [\"blur\", \"change\", \"update\", \"update:modelValue\"],\n data() {\n return {\n validityMode: \"INITIAL\" as string,\n secondEmail: \"\",\n showPasteErrorMessage: false,\n defaultText: this.$t(\"fkui.email-text-field.label\", \"Mejladress\"),\n };\n },\n mounted() {\n this.configureValidators();\n },\n methods: {\n onChange(event: Event): void {\n /**\n * @event change\n * @type {string | number}\n */\n this.$emit(\"change\", event);\n },\n onBlur(event: Event): void {\n /**\n * @event blur\n * @type {string | number}\n */\n this.$emit(\"blur\", event);\n },\n onUpdate(event: Event): void {\n /**\n * V-model event.\n *\n * @event update:modelValue\n * @type {string}\n */\n this.$emit(\"update:modelValue\", event);\n\n /**\n * Vue2 v-model event.\n * @deprecated\n * @event update\n * @type {string}\n */\n this.$emit(\"update\", event);\n },\n onPaste(event: Event): boolean {\n this.showPasteErrorMessage = true;\n event.preventDefault();\n return false;\n },\n onValidity({ detail }: CustomEvent<ValidityEvent>): void {\n this.showPasteErrorMessage = false;\n this.validityMode = detail.validityMode;\n const errorMessage = renderSlotText(this.$slots.default) ?? this.defaultText;\n const element = this.$el.querySelector(`#${detail.elementId}`);\n if (element) {\n dispatchComponentValidityEvent(element, {\n ...detail,\n errorMessage,\n focusElementId: detail.elementId,\n });\n }\n },\n onPendingValidity(): void {\n this.validityMode = \"INITIAL\";\n },\n configureValidators(): void {\n const elements: HTMLInputElement[] = Array.from(this.$el.querySelectorAll(\"input\"));\n const validatorEmailConfig: ValidatorConfigs = {\n email: {},\n };\n /*\n * Since this is an extended component the third argument \"isBaseConfigs\" for addValidatorsToElement() is set to true\n * in order to keep the base configuration set in this constructor when the application code adds its own validators, for example:\n * <f-email-text-field v-validation.required>\n */\n ValidationService.addValidatorsToElement(elements[0], validatorEmailConfig, true);\n\n if (this.extendedValidation) {\n this.configureExtendedValidation(elements);\n }\n },\n configureExtendedValidation(elements: HTMLInputElement[]): void {\n const validatorEmailMatchesConfig: ValidatorConfigs = {\n required: {\n enabled: elements[0].hasAttribute(\"required\"),\n },\n email: {},\n matches: {\n id: elements[0].id,\n },\n };\n ValidationService.addValidatorsToElement(elements[1], validatorEmailMatchesConfig, true);\n },\n },\n});\n</script>\n","<template>\n <div>\n <f-text-field\n :id=\"id\"\n type=\"tel\"\n :maxlength=\"maxLength\"\n v-bind=\"$attrs\"\n :model-value=\"modelValue\"\n @change=\"onChange\"\n @blur=\"onBlur\"\n @update=\"onUpdate\"\n @validity=\"onValidity\"\n @pending-validity=\"onPendingValidity\"\n ><slot name=\"default\">{{ defaultText }}</slot></f-text-field\n >\n <f-text-field v-if=\"extendedValidation\" v-model=\"secondPhone\" type=\"tel\" :maxlength=\"maxLength\">\n <slot name=\"extendedLabel\">{{\n $t(\"fkui.phone-text-field.label.repeat\", \"Upprepa telefonnumret\")\n }}</slot></f-text-field\n >\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from \"vue\";\nimport { type ValidatorConfigs, type ValidityEvent, ValidationService, ElementIdService } from \"@fkui/logic\";\nimport { FTextField } from \"../..\";\nimport { TranslationMixin } from \"../../../../plugins\";\nimport { renderSlotText, dispatchComponentValidityEvent } from \"../../../../utils\";\n\nexport default defineComponent({\n name: \"FPhoneTextField\",\n components: { FTextField },\n mixins: [TranslationMixin],\n inheritAttrs: false,\n props: {\n /**\n * The id for the input id attribute.\n * The id for the label for attribute.\n * If the prop is not set a random value will be generated.\n */\n id: {\n type: String,\n required: false,\n default: () => ElementIdService.generateElementId(),\n },\n /**\n * The value for the input.\n * If the prop is not set undefined will be used.\n * @model\n */\n modelValue: {\n type: String,\n required: false,\n default: undefined,\n },\n maxLength: {\n type: Number,\n default: 80,\n },\n extendedValidation: { type: Boolean, default: false },\n },\n emits: [\"blur\", \"change\", \"update\", \"update:modelValue\"],\n data() {\n return {\n validityMode: \"INITIAL\" as string,\n secondPhone: \"\",\n defaultText: this.$t(\"fkui.phone-text-field.label\", \"Telefonnummer\"),\n };\n },\n mounted() {\n this.configureValidators();\n },\n methods: {\n onChange(event: Event): void {\n /**\n * @event change\n * @type {string | number}\n */\n this.$emit(\"change\", event);\n },\n onBlur(event: Event): void {\n /**\n * @event blur\n * @type {string | number}\n */\n this.$emit(\"blur\", event);\n },\n onUpdate(event: Event): void {\n /**\n * V-model event.\n * @event update:modelValue\n * @type {string}\n */\n this.$emit(\"update:modelValue\", event);\n\n /**\n * Vue2 v-model event.\n * @deprecated\n * @event update\n * @type {string}\n */\n this.$emit(\"update\", event);\n },\n onValidity({ detail }: CustomEvent<ValidityEvent>): void {\n this.validityMode = detail.validityMode;\n const errorMessage = renderSlotText(this.$slots.default) ?? this.defaultText;\n const element = this.$el.querySelector(`#${detail.elementId}`);\n if (element) {\n dispatchComponentValidityEvent(element, {\n ...detail,\n errorMessage,\n focusElementId: detail.elementId,\n });\n }\n },\n onPendingValidity(): void {\n this.validityMode = \"INITIAL\";\n },\n configureValidators(): void {\n const elements: HTMLInputElement[] = Array.from(this.$el.querySelectorAll(\"input\"));\n const validatorPhoneConfig: ValidatorConfigs = {\n phoneNumber: {},\n };\n /*\n * Since this is an extended component the third argument \"isBaseConfigs\" for addValidatorsToElement() is set to true\n * in order to keep the base configuration set in this constructor when the application code adds its own validators, for example:\n * <f-phone-text-field v-validation.required>\n */\n ValidationService.addValidatorsToElement(elements[0], validatorPhoneConfig, true);\n\n if (this.extendedValidation) {\n this.configureExtendedValidation(elements);\n }\n },\n configureExtendedValidation(elements: HTMLInputElement[]): void {\n const validatorPhoneMatchesConfig: ValidatorConfigs = {\n required: {\n enabled: elements[0].hasAttribute(\"required\"),\n },\n phoneNumber: {},\n matches: {\n id: elements[0].id,\n },\n };\n ValidationService.addValidatorsToElement(elements[1], validatorPhoneMatchesConfig, true);\n },\n },\n});\n</script>\n","<script lang=\"ts\">\nimport { formatNumber, parseNumber, ValidationService } from \"@fkui/logic\";\nimport { defineComponent, inject, type PropType } from \"vue\";\nimport { FormatFunction, ParseFunction } from \"../../index\";\nimport FTextField from \"../../FTextField.vue\";\nimport { getInputElement } from \"../../../../utils\";\nimport { TranslationMixin } from \"../../../../plugins\";\n\nexport default defineComponent({\n name: \"FCurrencyTextField\",\n extends: FTextField,\n mixins: [TranslationMixin],\n props: {\n formatter: {\n type: Function as PropType<FormatFunction<number>>,\n required: false,\n default: formatNumber,\n },\n parser: {\n type: Function as PropType<ParseFunction<number>>,\n required: false,\n default: parseNumber,\n },\n },\n setup() {\n return {\n textFieldTableMode: inject(\"textFieldTableMode\", false) as boolean,\n };\n },\n data() {\n return {\n defaultText: this.$t(\"fkui.currency-text-field.label\", \"Pengar\"),\n };\n },\n mounted() {\n const inputElement = getInputElement(this);\n\n inputElement.setAttribute(\"inputmode\", \"numeric\");\n inputElement.setAttribute(\"maxlength\", \"20\");\n\n ValidationService.addValidatorsToElement(\n inputElement,\n {\n currency: {},\n integer: {},\n },\n true,\n );\n\n ValidationService.validateElement(inputElement);\n },\n});\n</script>\n","<template>\n <div>\n <f-text-field\n :id=\"id\"\n :maxlength=\"maxLength\"\n :model-value=\"modelValue\"\n v-bind=\"$attrs\"\n type=\"search\"\n class=\"text-field--search\"\n @change=\"onChange\"\n @input=\"onInput\"\n @blur=\"onBlur\"\n @update=\"onUpdate\"\n >\n <slot name=\"default\">{{ defaultText }}</slot>\n <template v-if=\"$slots.tooltip\" #tooltip>\n <slot name=\"tooltip\"></slot>\n </template>\n <template #input-right>\n <slot name=\"input-right\"></slot>\n </template>\n <template #input-left>\n <slot name=\"input-left\"></slot>\n </template>\n <template #error-message=\"{ hasError, validationMessage }\">\n <slot name=\"error-message\" v-bind=\"{ hasError, validationMessage }\"></slot>\n </template>\n <template #description=\"{ descriptionClass, discreteDescriptionClass }\">\n <slot name=\"description\" v-bind=\"{ descriptionClass, discreteDescriptionClass }\"></slot>\n </template>\n <template v-if=\"canClear\" #append-inner>\n <button class=\"text-field__icon clear-button\" type=\"button\" @click.self=\"clear\">\n <f-icon name=\"cross\" class=\"clear-button__icon\"></f-icon>\n <span class=\"sr-only\">{{ clearableScreenReaderText }}</span>\n </button>\n </template>\n </f-text-field>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from \"vue\";\nimport { alertScreenReader, ElementIdService, TranslationService } from \"@fkui/logic\";\nimport { FIcon } from \"../../../FIcon\";\nimport { FTextField } from \"../..\";\n\nexport default defineComponent({\n name: \"FSearchTextField\",\n components: { FTextField, FIcon },\n props: {\n id: {\n type: String,\n required: false,\n default: () => ElementIdService.generateElementId(),\n },\n modelValue: {\n type: String,\n required: false,\n default: \"\",\n },\n clearableScreenReaderText: {\n type: String,\n required: false,\n default: TranslationService.provider.translate(\n \"fkui.search-text-field.search-screen-reader\",\n \"Töm inmatningsfält\",\n ),\n },\n maxLength: {\n type: Number,\n default: 80,\n },\n },\n emits: [\"blur\", \"change\", \"update\", \"update:modelValue\"],\n data() {\n return {\n defaultText: this.$t(\"fkui.search-text-field.label\", \"Sök\"),\n };\n },\n computed: {\n canClear(): boolean {\n return this.modelValue !== \"\";\n },\n },\n methods: {\n clear(): void {\n alertScreenReader(this.$t(\"fkui.search-text-field.aria-live.clear\", \"Inmatningsfältet har tömts\"), {\n assertive: true,\n });\n this.$emit(\"update:modelValue\", \"\");\n this.$el.querySelector(\"input\").focus();\n },\n onInput(event: Event): void {\n this.$emit(\"update:modelValue\", (event.target as HTMLInputElement).value);\n },\n onChange(event: Event): void {\n /**\n * @event change\n * @type {string | number}\n */\n this.$emit(\"change\", event);\n },\n onBlur(event: Event): void {\n /**\n * @event blur\n * @type {string | number}\n */\n this.$emit(\"blur\", event);\n },\n onUpdate(event: Event): void {\n /**\n * V-model event.\n *\n * @event update:modelValue\n * @type {string}\n */\n this.$emit(\"update:modelValue\", event);\n },\n },\n});\n</script>\n","<script lang=\"ts\">\nimport { type BankAccountNumberString, ValidationService, parseBankAccountNumber } from \"@fkui/logic\";\nimport { defineComponent, inject, type PropType } from \"vue\";\nimport FTextField from \"../../FTextField.vue\";\nimport { ParseFunction } from \"../../index\";\nimport { getInputElement } from \"../../../../utils\";\nimport { TranslationMixin } from \"../../../../plugins\";\n\nexport default defineComponent({\n name: \"FBankAccountNumberTextField\",\n extends: FTextField,\n mixins: [TranslationMixin],\n props: {\n parser: {\n type: Function as PropType<ParseFunction<BankAccountNumberString>>,\n required: false,\n default: parseBankAccountNumber,\n },\n },\n setup() {\n return {\n textFieldTableMode: inject(\"textFieldTableMode\", false) as boolean,\n };\n },\n data() {\n return {\n defaultText: this.$t(\"fkui.bank-account-number-text-field.label\", \"Kontonummer\"),\n };\n },\n mounted() {\n const inputElement = getInputElement(this);\n\n ValidationService.addValidatorsToElement(\n inputElement,\n {\n bankAccountNumber: {},\n },\n true,\n );\n\n inputElement.setAttribute(\"inputmode\", \"numeric\");\n inputElement.setAttribute(\"maxlength\", \"40\");\n\n ValidationService.validateElement(inputElement);\n },\n});\n</script>\n","<script lang=\"ts\">\nimport { parseBankgiro, type BankgiroString, ValidationService } from \"@fkui/logic\";\nimport { defineComponent, inject, type PropType } from \"vue\";\nimport FTextField from \"../../FTextField.vue\";\nimport { FormatFunction } from \"../../index\";\nimport { getInputElement } from \"../../../../utils\";\nimport { TranslationMixin } from \"../../../../plugins\";\n\nexport default defineComponent({\n name: \"FBankgiroTextField\",\n extends: FTextField,\n mixins: [TranslationMixin],\n props: {\n formatter: {\n type: Function as PropType<FormatFunction<BankgiroString>>,\n required: false,\n default: parseBankgiro,\n },\n },\n setup() {\n return {\n textFieldTableMode: inject(\"textFieldTableMode\", false) as boolean,\n };\n },\n data() {\n return {\n defaultText: this.$t(\"fkui.bankgiro-text-field.label\", \"Bankgironummer\"),\n };\n },\n mounted() {\n const inputElement = getInputElement(this);\n\n ValidationService.addValidatorsToElement(\n inputElement,\n {\n maxLength: { length: 9 },\n bankgiro: {},\n },\n true,\n );\n\n inputElement.setAttribute(\"inputmode\", \"numeric\");\n inputElement.setAttribute(\"maxlength\", \"40\");\n\n ValidationService.validateElement(inputElement);\n },\n});\n</script>\n","<script lang=\"ts\">\nimport { type ClearingnumberString, parseClearingNumber, ValidationService } from \"@fkui/logic\";\nimport { defineComponent, inject, type PropType } from \"vue\";\nimport FTextField from \"../../FTextField.vue\";\nimport { FormatFunction } from \"../../index\";\nimport { getInputElement } from \"../../../../utils\";\nimport { TranslationMixin } from \"../../../../plugins\";\n\nexport default defineComponent({\n name: \"FClearingnumberTextField\",\n extends: FTextField,\n mixins: [TranslationMixin],\n props: {\n formatter: {\n type: Function as PropType<FormatFunction<ClearingnumberString>>,\n required: false,\n default: parseClearingNumber,\n },\n },\n setup() {\n return {\n textFieldTableMode: inject(\"textFieldTableMode\", false) as boolean,\n };\n },\n data() {\n return {\n defaultText: this.$t(\"fkui.clearingnumber-text-field.label\", \"Clearingnummer\"),\n };\n },\n mounted() {\n const inputElement = getInputElement(this);\n\n ValidationService.addValidatorsToElement(\n inputElement,\n {\n clearingNumber: {},\n },\n true,\n );\n\n inputElement.setAttribute(\"inputmode\", \"numeric\");\n inputElement.setAttribute(\"maxlength\", \"16\");\n\n ValidationService.validateElement(inputElement);\n },\n});\n</script>\n","<script lang=\"ts\">\nimport { formatNumber, parseNumber, ValidationService } from \"@fkui/logic\";\nimport { defineComponent, inject, type PropType } from \"vue\";\nimport FTextField from \"../../FTextField.vue\";\nimport { FormatFunction, ParseFunction } from \"../../index\";\nimport { getInputElement } from \"../../../../utils\";\n\nfunction defaultFormatter(this: { decimals: number }, modelValue: number): string | undefined {\n return formatNumber(modelValue, this.decimals);\n}\n\nexport default defineComponent({\n name: \"FNumericTextField\",\n extends: FTextField,\n props: {\n /**\n * The number of decimals to format number as.\n * @model\n */\n decimals: {\n type: Number,\n required: false,\n default: undefined,\n },\n formatter: {\n type: Function as PropType<FormatFunction<number>>,\n required: false,\n default: defaultFormatter as FormatFunction<number>,\n },\n parser: {\n type: Function as PropType<ParseFunction<number>>,\n required: false,\n default: parseNumber,\n },\n },\n setup() {\n return {\n textFieldTableMode: inject(\"textFieldTableMode\", false) as boolean,\n };\n },\n mounted() {\n const inputElement = getInputElement(this);\n inputElement.setAttribute(\"inputmode\", \"numeric\");\n inputElement.setAttribute(\"maxlength\", \"20\");\n\n ValidationService.addValidatorsToElement(\n inputElement,\n {\n number: {},\n },\n true,\n );\n\n ValidationService.validateElement(inputElement);\n },\n});\n</script>\n","<script lang=\"ts\">\nimport { type PersonnummerString, formatPersonnummer, parsePersonnummer, ValidationService } from \"@fkui/logic\";\nimport { defineComponent, inject, type PropType } from \"vue\";\nimport FTextField from \"../../FTextField.vue\";\nimport { FormatFunction, ParseFunction } from \"../../index\";\nimport { getInputElement } from \"../../../../utils\";\nimport { TranslationMixin } from \"../../../../plugins\";\n\nexport default defineComponent({\n name: \"FPersonnummerTextField\",\n extends: FTextField,\n mixins: [TranslationMixin],\n props: {\n formatter: {\n type: Function as PropType<FormatFunction<PersonnummerString>>,\n required: false,\n default: formatPersonnummer,\n },\n parser: {\n type: Function as PropType<ParseFunction<PersonnummerString>>,\n required: false,\n default: parsePersonnummer,\n },\n },\n setup() {\n return {\n textFieldTableMode: inject(\"textFieldTableMode\", false) as boolean,\n };\n },\n data() {\n return {\n defaultText: this.$t(\"fkui.personnummer-text-field.label-10-digits\", \"Personnummer\"),\n discreteDescriptionText: this.$t(\"fkui.personnummer-text-field.example-10-digits\", \"(ååmmdd-nnnn)\"),\n discreteDescriptionScreenReaderText: this.$t(\n \"fkui.personnummer-text-field.format-description-10-digits\",\n \"Skriv personnumret med 10 siffror,\",\n ),\n };\n },\n mounted() {\n const inputElement = getInputElement(this);\n\n ValidationService.addValidatorsToElement(\n inputElement,\n {\n maxLength: { length: 20 },\n personnummerFormat: {},\n personnummerLuhn: {},\n },\n true,\n );\n\n inputElement.setAttribute(\"inputmode\", \"numeric\");\n inputElement.setAttribute(\"maxlength\", \"23\");\n\n ValidationService.validateElement(inputElement);\n },\n});\n</script>\n","<script lang=\"ts\">\nimport { type PlusgiroString, parsePlusgiro, ValidationService } from \"@fkui/logic\";\nimport { defineComponent, inject, type PropType } from \"vue\";\nimport FTextField from \"../../FTextField.vue\";\nimport { FormatFunction } from \"../../index\";\nimport { getInputElement } from \"../../../../utils\";\nimport { TranslationMixin } from \"../../../../plugins\";\n\nexport default defineComponent({\n name: \"FPlusgiroTextField\",\n extends: FTextField,\n mixins: [TranslationMixin],\n props: {\n formatter: {\n type: Function as PropType<FormatFunction<PlusgiroString>>,\n required: false,\n default: parsePlusgiro,\n },\n },\n setup() {\n return {\n textFieldTableMode: inject(\"textFieldTableMode\", false) as boolean,\n };\n },\n data() {\n return {\n defaultText: this.$t(\"fkui.plusgiro-text-field.label\", \"Plusgironummer\"),\n };\n },\n mounted() {\n const inputElement = getInputElement(this);\n\n ValidationService.addValidatorsToElement(\n inputElement,\n {\n maxLength: { length: 11 },\n plusgiro: {},\n },\n true,\n );\n\n inputElement.setAttribute(\"inputmode\", \"numeric\");\n inputElement.setAttribute(\"maxlength\", \"16\");\n\n ValidationService.validateElement(inputElement);\n },\n});\n</script>\n","<script lang=\"ts\">\nimport { type PostalCodeString, formatPostalCode, ValidationService } from \"@fkui/logic\";\nimport { defineComponent, inject, type PropType } from \"vue\";\nimport FTextField from \"../../FTextField.vue\";\nimport { FormatFunction } from \"../../index\";\nimport { getInputElement } from \"../../../../utils\";\nimport { TranslationMixin } from \"../../../../plugins\";\n\nexport default defineComponent({\n name: \"FPostalCodeTextField\",\n extends: FTextField,\n mixins: [TranslationMixin],\n props: {\n formatter: {\n type: Function as PropType<FormatFunction<PostalCodeString>>,\n required: false,\n default: formatPostalCode,\n },\n },\n setup() {\n return {\n textFieldTableMode: inject(\"textFieldTableMode\", false) as boolean,\n };\n },\n data() {\n return {\n defaultText: this.$t(\"fkui.postal-code-text-field.label\", \"Postnummer\"),\n discreteDescriptionText: this.$t(\"fkui.postal-code-text-field.example\", \"(123 45)\"),\n discreteDescriptionScreenReaderText: this.$t(\n \"fkui.postal-code-text-field.format-description\",\n \"Formatbeskrivning\",\n ),\n };\n },\n mounted() {\n const inputElement = getInputElement(this);\n\n ValidationService.addValidatorsToElement(\n inputElement,\n {\n maxLength: { length: 13 },\n postalCode: {},\n },\n true,\n );\n\n inputElement.setAttribute(\"inputmode\", \"numeric\");\n inputElement.setAttribute(\"maxlength\", \"15\");\n\n ValidationService.validateElement(inputElement);\n },\n});\n</script>\n","<script lang=\"ts\">\nimport { formatPercent, parsePercent, ValidationService } from \"@fkui/logic\";\nimport { defineComponent, inject, type PropType } from \"vue\";\nimport FTextField from \"../../FTextField.vue\";\nimport { FormatFunction, ParseFunction } from \"../../index\";\nimport { getInputElement } from \"../../../../utils\";\nimport { TranslationMixin } from \"../../../../plugins\";\n\nfunction defaultFormatter(this: { decimals: number }, modelValue: number): string | undefined {\n return formatPercent(modelValue, this.decimals);\n}\n\nexport default defineComponent({\n name: \"FPercentTextField\",\n extends: FTextField,\n mixins: [TranslationMixin],\n props: {\n /**\n * The number of decimals to format number as.\n */\n decimals: {\n type: Number,\n required: false,\n default: undefined,\n },\n formatter: {\n type: Function as PropType<FormatFunction<number>>,\n required: false,\n default: defaultFormatter as FormatFunction<number>,\n },\n parser: {\n type: Function as PropType<ParseFunction<number>>,\n required: false,\n default: parsePercent,\n },\n },\n setup() {\n return {\n textFieldTableMode: inject(\"textFieldTableMode\", false) as boolean,\n };\n },\n data() {\n return {\n defaultText: this.$t(\"fkui.percent-text-field.label\", \"Procent\"),\n };\n },\n mounted() {\n const inputElement = getInputElement(this);\n inputElement.setAttribute(\"inputmode\", this.decimals ? \"decimal\" : \"numeric\");\n inputElement.setAttribute(\"maxlength\", \"10\");\n\n ValidationService.addValidatorsToElement(\n inputElement,\n {\n percent: {},\n minValue: { minValue: 0 },\n maxValue: { maxValue: 999 },\n },\n true,\n );\n\n ValidationService.validateElement(inputElement);\n },\n});\n</script>\n","<script lang=\"ts\">\nimport { type OrganisationsnummerString, parseOrganisationsnummer, ValidationService } from \"@fkui/logic\";\nimport { defineComponent, inject, type PropType } from \"vue\";\nimport FTextField from \"../../FTextField.vue\";\nimport { FormatFunction } from \"../../index\";\nimport { getInputElement } from \"../../../../utils\";\nimport { TranslationMixin } from \"../../../../plugins\";\n\nexport default defineComponent({\n name: \"FOrganisationsnummerTextField\",\n extends: FTextField,\n mixins: [TranslationMixin],\n props: {\n formatter: {\n type: Function as PropType<FormatFunction<OrganisationsnummerString>>,\n required: false,\n default: parseOrganisationsnummer,\n },\n },\n setup() {\n return {\n textFieldTableMode: inject(\"textFieldTableMode\", false) as boolean,\n };\n },\n data() {\n return {\n defaultText: this.$t(\"fkui.organisationsnummer-text-field.label\", \"Organisationsnummer\"),\n discreteDescriptionText: this.$t(\"fkui.organisationsnummer-text-field.example\", \"(999999-9999)\"),\n discreteDescriptionScreenReaderText: this.$t(\n \"fkui.organisationsnummer-text-field.format-description\",\n \"Formatbeskrivning\",\n ),\n };\n },\n mounted() {\n const inputElement = getInputElement(this);\n\n ValidationService.addValidatorsToElement(\n inputElement,\n {\n maxLength: { length: 11 },\n organisationsnummer: {},\n },\n true,\n );\n\n inputElement.setAttribute(\"inputmode\", \"numeric\");\n inputElement.setAttribute(\"maxlength\", \"20\");\n\n ValidationService.validateElement(inputElement);\n },\n});\n</script>\n","import { isSet } from \"@fkui/logic\";\n\nexport function sort<T>(\n list: T[],\n sortAttribute: string,\n ascending: boolean,\n): T[] {\n return list.sort((item1, item2) =>\n compare(item1, item2, sortAttribute as keyof T, ascending),\n );\n}\n\nfunction compare<T>(\n item1: T,\n item2: T,\n attribute: keyof T,\n ascending: boolean,\n): number {\n const value1 = item1[attribute];\n const value2 = item2[attribute];\n\n if (!isSet(value1) || !isSet(value2)) {\n // Null values are always unsorted at the end of the list\n return nullCompare(value1, value2);\n }\n if (typeof value1 === \"string\" && typeof value2 === \"string\") {\n return fixOrder(value1.localeCompare(value2), ascending);\n }\n if (typeof value1 === \"number\" && typeof value2 === \"number\") {\n return fixOrder(numberCompare(value1, value2), ascending);\n }\n if (typeof value1 === \"boolean\" && typeof value2 === \"boolean\") {\n return fixOrder(booleanCompare(value1, value2), ascending);\n }\n\n if (typeof value1 !== typeof value2) {\n throw Error(\n `Sorting is not supported for rows containing different types (attribute '${attribute.toString()}')`,\n );\n }\n\n throw Error(\n `Sorting is only supported for types number, string and boolean (attribute '${attribute.toString()}')`,\n );\n}\n\n// This is used instead of list.reverse to keep null values\n// at the end of the list and in unsorted order\nfunction fixOrder(order: number, ascending: boolean): number {\n return ascending ? order : order - order * 2;\n}\n\nfunction booleanCompare(value1: boolean, value2: boolean): number {\n if (value1 === value2) {\n return 0;\n } else if (value1 > value2) {\n return 1;\n }\n return -1;\n}\n\nfunction numberCompare(value1: number, value2: number): number {\n return value1 - value2;\n}\n\nfunction nullCompare(value1: unknown, value2: unknown): number {\n if (!isSet(value1) && !isSet(value2)) {\n return 0;\n } else if (!isSet(value1)) {\n return 1;\n }\n return -1;\n}\n","import { isSet } from \"@fkui/logic\";\n\nfunction includesAllSearchTerms(\n item: Record<string, string | number | undefined>,\n filterAttributes: string[],\n searchTerms: string[],\n): boolean {\n const values = filterAttributes\n .map((it) => {\n const value = item[it];\n return isSet(value)\n ? value.toString().toLocaleLowerCase()\n : undefined;\n })\n .filter(Boolean);\n\n for (const searchTerm of searchTerms) {\n const match = values.find((it) => it?.includes(searchTerm));\n if (!match) {\n return false;\n }\n }\n return true;\n}\n\nexport function filter<T>(\n list: T[],\n filterAttributes: string[],\n searchString: string,\n): T[] {\n searchString = searchString.trim();\n if (searchString.trim() === \"\") {\n return list;\n }\n\n const searchTerms = searchString\n .split(/\\s+/)\n .map((word) => word.toLocaleLowerCase());\n\n return list.filter((item) =>\n includesAllSearchTerms(\n item as unknown as Record<string, string | number | undefined>,\n filterAttributes,\n searchTerms,\n ),\n );\n}\n","<template>\n <div class=\"sort-filter-dataset\">\n <i-flex collapse gap=\"3x\" wrap>\n <i-flex-item shrink align=\"center\">\n <!--\n@slot Slot for header to the left of the filter dropdown.\n\nSlot content is available through `v-slot=\"{ <propertyName> }\"`, e.g. `v-slot=\"{ slotClass }\"`.\n\nThe following properties are available:\n\n* `slotClass: string[];` CSS classes to use for the SortFilter header element. Use with `:class=\"slotClass\"`.\n -->\n <slot name=\"header\" v-bind=\"{ slotClass: 'sort-filter-dataset__toolbar__header' }\"></slot>\n </i-flex-item>\n\n <i-flex-item grow>\n <i-flex collapse float=\"right\">\n <i-flex-item v-if=\"showFilter\" shrink align=\"center\">\n <div class=\"sort-filter-dataset__search\">\n <f-icon name=\"search\" class=\"sort-filter-dataset__search__magnify-icon\" />\n\n <f-text-field\n v-model=\"searchString\"\n inline\n :placeholder=\"placeholderFilter\"\n maxlength=\"64\"\n @input=\"onSearchInput\"\n >\n <span class=\"sr-only\">{{ placeholderFilter }}</span>\n </f-text-field>\n\n <button\n v-if=\"showClearButton\"\n type=\"button\"\n class=\"button button--discrete sort-filter-dataset__search__close-icon\"\n :title=\"$t('fkui.sort-filter-dataset.clear.filter', 'Rensa sökfält')\"\n @click=\"onClickClearSearch\"\n >\n <f-icon name=\"close\" />\n <span class=\"sr-only\">{{\n $t(\"fkui.sort-filter-dataset.clear.filter\", \"Rensa sökfält\")\n }}</span>\n </button>\n </div>\n </i-flex-item>\n\n <i-flex-item v-if=\"showSort\" shrink align=\"center\">\n <f-select-field\n v-model=\"sortAttribute\"\n class=\"sort-filter-dataset__sort\"\n inline\n @change=\"onChangeSortAttribute\"\n >\n <template #label>{{\n $t(\"fkui.sort-filter-dataset.label.sort\", \"Sortera\\u00A0på\")\n }}</template>\n\n <option :value=\"{ attribute: '', ascending: false }\">\n {{ $t(\"fkui.sort-filter-dataset.label.unsorted\", \"Välj\") }}\n </option>\n\n <option v-for=\"sortOrder in sortOrders\" :key=\"sortOrder.id\" :value=\"sortOrder\">\n {{ sortOrder.name }} ({{ sortOrder.ascendingName }})\n </option>\n </f-select-field>\n </i-flex-item>\n </i-flex>\n </i-flex-item>\n </i-flex>\n <!--\n@slot Slot for displaying the data.\n\nThe data is available through `v-slot=\"{ <propertyName> }\"`, e.g. `v-slot=\"{ sortFilterResult }\"`.\n\nThe following properties are available:\n\n* `sortFilterResult: ListArray<ListItem>;` The sorted or filtered data.\n -->\n <slot v-bind=\"{ sortFilterResult }\"></slot>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, type PropType } from \"vue\";\nimport { focus, debounce, alertScreenReader } from \"@fkui/logic\";\nimport { IFlex, IFlexItem } from \"../../internal-components/IFlex\";\nimport { FSelectField } from \"../FSelectField\";\nimport { FIcon } from \"../FIcon\";\nimport { FTextField } from \"../FTextField\";\nimport { ListItem, ListArray } from \"../../types\";\nimport { TranslationMixin } from \"../../plugins\";\nimport {\n FSortFilterDatasetInterface,\n FSortFilterDatasetSortCallback,\n FSortFilterDatasetMountCallback,\n} from \"./FSortFilterDatasetInterface\";\nimport { sort } from \"./FSortFilterSorter\";\nimport { filter } from \"./FSortFilterFilter\";\nimport { type SortOrder } from \"./sort-order\";\n\nexport default defineComponent({\n name: \"FSortFilterDataset\",\n components: { FSelectField, FTextField, FIcon, IFlex, IFlexItem },\n mixins: [TranslationMixin],\n provide(): FSortFilterDatasetInterface {\n return {\n sort: (attribute: string, ascending: boolean) => {\n const foundAttribute = this.sortOrders.find(\n (item) => item.attribute === attribute && item.ascending === ascending,\n );\n\n if (foundAttribute) {\n this.sortAttribute = foundAttribute;\n } else {\n this.sortAttribute = { attribute: \"\", ascending: false } as SortOrder;\n }\n this.sortFilterData();\n /**\n * Emits the used sorting attributes.\n * @event usedSortAttributes\n * @param sortAttribute - The attributes used when sorting the data.\n * @type {SortOrder}\n */\n this.$emit(\"usedSortAttributes\", this.sortAttribute);\n },\n registerCallbackOnSort: (callback: FSortFilterDatasetSortCallback) => {\n this.tableCallbackOnSort = callback;\n },\n registerCallbackOnMount: (callback: FSortFilterDatasetMountCallback) => {\n this.tableCallbackSortableColumns = callback;\n },\n };\n },\n props: {\n /**\n * The data that you wish to sort or filter.\n */\n data: {\n type: Array as PropType<ListArray<ListItem>>,\n required: true,\n default: () => [],\n },\n /**\n * All the attributes you want to enable sorting for and the corresponding name to display in the dropdown.\n * Structured as `{attributeName: \"Name for dropdown\", secondAttributeName: \"Name for dropdown\"}`\n */\n sortableAttributes: {\n type: Object as PropType<Record<string, string>>,\n required: true,\n },\n /**\n * If set the data will be sorted by this attribute by default.\n */\n defaultSortAttribute: {\n type: String,\n required: false,\n default: () => \"\",\n },\n /**\n * Show/hides the sort dropdown.\n */\n showSort: {\n type: Boolean,\n required: false,\n default: true,\n },\n /**\n * Show/hides the filter input.\n */\n showFilter: {\n type: Boolean,\n required: false,\n default: true,\n },\n /**\n * Set placeholder text in filter input field.\n * Default is textkey \"fkui.sort-filter-dataset.placeholder.filter\"\n */\n placeholderFilter: {\n type: String,\n required: false,\n default: TranslationMixin.methods.$t(\"fkui.sort-filter-dataset.placeholder.filter\", \"Sök\"),\n },\n /**\n * The order the data will be sorted by if defaultSortAttribute has been set.\n */\n defaultSortAscending: {\n type: Boolean,\n required: false,\n default: () => true,\n },\n },\n emits: [\"datasetSorted\", \"usedSortAttributes\"],\n data() {\n return {\n searchString: \"\",\n sortAttribute: { attribute: \"\", ascending: false } as SortOrder,\n sortFilterResult: [] as ListArray<ListItem>,\n tableCallbackOnSort: (() => {\n return;\n }) as FSortFilterDatasetSortCallback,\n tableCallbackSortableColumns: (() => {\n return;\n }) as FSortFilterDatasetMountCallback,\n };\n },\n computed: {\n showClearButton(): boolean {\n return this.searchString.length > 0;\n },\n sortOrders(): SortOrder[] {\n const arr = [] as SortOrder[];\n let id = 0;\n Object.keys(this.sortableAttributes).forEach((key: string) => {\n arr.push({\n attribute: key,\n name: this.sortableAttributes[key],\n ascendingName: this.$t(\"fkui.sort-filter-dataset.label.ascending\", \"stigande\"),\n ascending: true,\n id: id++,\n });\n arr.push({\n attribute: key,\n name: this.sortableAttributes[key],\n ascendingName: this.$t(\"fkui.sort-filter-dataset.label.descending\", \"fallande\"),\n ascending: false,\n id: id++,\n });\n });\n return arr;\n },\n filterAttributes(): string[] {\n return Object.keys(this.sortableAttributes);\n },\n },\n watch: {\n data: {\n immediate: true,\n deep: true,\n handler: function () {\n if (this.defaultSortAttribute !== \"\") {\n const foundAttribute = this.sortOrders.find(\n (item) =>\n item.attribute === this.defaultSortAttribute &&\n item.ascending === this.defaultSortAscending,\n );\n if (foundAttribute) {\n this.sortAttribute = foundAttribute;\n }\n }\n this.sortFilterData();\n },\n },\n },\n created() {\n this.debouncedFilterResultset = debounce(this.filterResultset, 250).bind(this);\n },\n mounted() {\n this.tableCallbackSortableColumns(Object.keys(this.sortableAttributes));\n },\n methods: {\n sortFilterData(): void {\n const filteredData = filter(this.data, this.filterAttributes, this.searchString);\n\n if (this.sortAttribute.attribute === \"\") {\n this.sortFilterResult = filteredData;\n } else {\n this.sortFilterResult = sort(\n [...filteredData],\n this.sortAttribute.attribute,\n this.sortAttribute.ascending,\n );\n }\n // Await slot mount, otherwise if defaultSortAttribute is used the slot doesn't have time to register tableCallbackOnSort before this is called.\n this.$nextTick(() => {\n this.tableCallbackOnSort(this.sortAttribute.attribute, this.sortAttribute.ascending);\n });\n /**\n * Emitted when the data is sorted.\n * @event datasetSorted\n * @param sortFilterResult - The sorted data.\n * @type {ListArray}\n */\n this.$emit(\"datasetSorted\", this.sortFilterResult);\n },\n onChangeSortAttribute(): void {\n this.sortFilterData();\n /**\n * Emits the used sorting attributes.\n * @event usedSortAttributes\n * @param sortAttribute - The attributes used when sorting the data.\n * @type {SortOrder}\n */\n this.$emit(\"usedSortAttributes\", this.sortAttribute);\n },\n onSearchInput(event: InputEvent): void {\n this.searchString = (event.target as HTMLInputElement).value;\n this.debouncedFilterResultset();\n },\n onClickClearSearch(): void {\n this.searchString = \"\";\n this.sortFilterData();\n const input = this.$el.querySelector(\".text-field--inline input\");\n focus(input);\n },\n debouncedFilterResultset() {\n // debounce method created in create()\n },\n filterResultset(): void {\n this.sortFilterData();\n if (this.searchString === \"\") {\n alertScreenReader(this.$t(\"fkui.sort-filter-dataset.aria-live.empty\", \"Sök redigera Sök tom\"));\n } else {\n const searchAriaLive = this.$t(\n \"fkui.sort-filter-dataset.aria-live.search\",\n `Din sökning på \"{{ search }}\" gav {{ result }} träffar.`,\n {\n result: this.sortFilterResult.length,\n search: this.searchString,\n },\n );\n\n alertScreenReader(searchAriaLive);\n }\n },\n },\n});\n</script>\n","<template>\n <div :class=\"wrapperClasses\">\n <table class=\"table\" :class=\"tableClasses\" :tabindex=\"tabindex\" v-bind=\"$attrs\">\n <caption v-if=\"hasCaption\">\n <!-- @slot Slot for table caption. -->\n <slot name=\"caption\"></slot>\n </caption>\n <colgroup>\n <col v-for=\"column in columns\" :key=\"column.id\" :class=\"column.size\" />\n </colgroup>\n <thead>\n <tr class=\"table__row\">\n <th\n v-for=\"column in visibleColumns\"\n :key=\"column.id\"\n scope=\"col\"\n :class=\"columnClasses(column)\"\n v-on=\"column.sortable ? { click: () => onClickColumnHeader(column) } : {}\"\n >\n <!-- eslint-disable-next-line vue/no-v-html -->\n <span v-html=\"escapeNewlines(column.title)\"></span>\n <f-icon v-if=\"column.sortable\" :class=\"iconClasses(column)\" :name=\"iconName(column)\" />\n <span v-if=\"column.description\" class=\"table__column__description\">{{\n column.description\n }}</span>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr v-if=\"!hasInitiateColumns\">\n <slot v-bind=\"{ row: emptyRow }\"></slot>\n </tr>\n <tr v-if=\"isEmpty\">\n <td class=\"table__column table__column--action\" :colspan=\"columns.length\">\n <!--\n@slot Slot for displaying a message when table is empty.\nDefault text is 'Tabellen är tom' (key fkui.data-table.empty).\n -->\n <slot name=\"empty\">{{ $t(\"fkui.data-table.empty\", \"Tabellen är tom\") }}</slot>\n </td>\n </tr>\n <tr v-for=\"row in rows\" :key=\"rowKey(row)\" class=\"table__row\">\n <!--\n @slot Slot for table row.\n\n The item object is available through `v-slot=\"{ <propertyName> }\"`, e.g.\n `v-slot=\"{ row }\"`.\n\n The following properties are available:\n\n * `row: ListItem;` The object to be visualized..\n -->\n <slot v-bind=\"{ row }\" />\n </tr>\n </tbody>\n </table>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, type PropType } from \"vue\";\nimport { type ListArray, type ListItem } from \"../../types\";\nimport { TableScroll, emptyTableRow, tableScrollClasses, hasSlot } from \"../../utils\";\nimport {\n FTableColumnData,\n FTableColumnSort,\n FTableInterface,\n addColumn,\n setVisibilityColumn,\n updateSortOrder,\n setSortableColumns,\n getSortableIconName,\n getSortableIconClasses,\n FTableColumnType,\n} from \"../FTableColumn\";\nimport { FSortFilterDatasetInjected, FSortFilterDatasetInterface } from \"../FSortFilterDataset\";\nimport { FIcon } from \"../FIcon\";\nimport { TranslationMixin } from \"../../plugins\";\n\nexport default defineComponent({\n name: \"FDataTable\",\n components: {\n FIcon,\n },\n mixins: [TranslationMixin],\n provide(): FTableInterface {\n return {\n addColumn: (column: FTableColumnData) => {\n if (column.type === FTableColumnType.ACTION) {\n throw new Error(\"Cannot use action column in FDataTable component\");\n }\n this.columns = addColumn(this.columns, column);\n },\n setVisibilityColumn: (id: string, visible: boolean) => {\n setVisibilityColumn(this.columns, id, visible);\n },\n textFieldTableMode: true,\n };\n },\n inheritAttrs: false,\n props: {\n /**\n * The rows to be listed.\n * The rows will be listed in the given array order.\n */\n rows: {\n type: Array as PropType<ListArray>,\n required: true,\n },\n /**\n * Unique attribute in rows.\n */\n keyAttribute: {\n type: String,\n required: true,\n },\n /**\n * If `true` alternating rows will use a different background color.\n */\n striped: {\n type: Boolean,\n default: false,\n },\n /**\n * Enable scrolling inside table.\n *\n * Can be one of the following values:\n *\n * - `\"horizontal\"`: Enables horizontal scrolling\n * - `\"vertical\"`: Enables vertical scrolling\n * - `\"both\"`: Enables scrolling in both directions\n * - `\"none\"`: Disables scrolling (default)\n */\n scroll: {\n type: String as PropType<TableScroll>,\n default: TableScroll.NONE,\n validator: function (value: string): boolean {\n const types: string[] = Object.values(TableScroll);\n return types.includes(value);\n },\n },\n },\n setup(): FSortFilterDatasetInterface {\n return FSortFilterDatasetInjected();\n },\n data() {\n return {\n columns: [] as FTableColumnData[],\n emptyRow: emptyTableRow() as Record<string, unknown>,\n };\n },\n computed: {\n hasCaption(): boolean {\n return hasSlot(this, \"caption\");\n },\n tableClasses(): string[] {\n const classes = [];\n if (this.striped) {\n classes.push(\"table--striped\");\n }\n return classes;\n },\n isEmpty(): boolean {\n return this.rows.length === 0;\n },\n visibleColumns(): FTableColumnData[] {\n return this.columns.filter((col) => col.visible);\n },\n hasInitiateColumns(): boolean {\n return this.columns.length > 0;\n },\n wrapperClasses(): string[] {\n return tableScrollClasses(this.scroll);\n },\n tabindex(): number | undefined {\n return this.scroll !== TableScroll.NONE ? 0 : undefined;\n },\n },\n mounted() {\n this.registerCallbackOnSort(this.callbackOnSort);\n this.registerCallbackOnMount(this.callbackSortableColumns);\n },\n methods: {\n rowKey(item: ListItem): string {\n const key = item[this.keyAttribute];\n if (typeof key === \"undefined\") {\n throw new Error(`Key attribute [${this.keyAttribute}]' is missing in row`);\n }\n return String(key);\n },\n columnClasses(column: FTableColumnData): string[] {\n const classes = [\"table__column\", `table__column--${column.type}`, column.size];\n if (column.sortable) {\n classes.push(\"table__column--sortable\");\n }\n\n return classes;\n },\n iconClasses(column: FTableColumnData): string[] {\n return getSortableIconClasses(column);\n },\n iconName(column: FTableColumnData) {\n return getSortableIconName(column);\n },\n onClickColumnHeader(column: FTableColumnData): void {\n if (!column.sortable) {\n return;\n }\n let columnName = column.name;\n if (column.sort === FTableColumnSort.DESCENDING) {\n columnName = \"\";\n column.sort = FTableColumnSort.UNSORTED;\n }\n this.sort(columnName, column.sort !== FTableColumnSort.ASCENDING);\n },\n callbackOnSort(columnName: string, ascending: boolean): void {\n updateSortOrder(this.columns, columnName, ascending);\n },\n callbackSortableColumns(columnNames: string[]): void {\n setSortableColumns(this.columns, columnNames);\n },\n escapeNewlines(value: string): string {\n return value.replace(/\\n/g, \"<br/>\");\n },\n },\n});\n</script>\n","import { FDate } from \"@fkui/date\";\nimport {\n type InvalidDatesValidatorConfig,\n type InvalidWeekdaysValidatorConfig,\n type MaxDateValidatorConfig,\n type MinDateValidatorConfig,\n type ValidatorConfigs,\n isInvalidDatesConfig,\n isInvalidWeekdaysConfig,\n} from \"@fkui/logic\";\n\nexport function isDayEnabled(day: FDate, config: ValidatorConfigs): boolean {\n return (\n passesMinDate(day, config.minDate) &&\n passesMaxDate(day, config.maxDate) &&\n passesInvalidDates(day, config.invalidDates) &&\n passesInvalidWeekdays(day, config.invalidWeekdays)\n );\n}\n\nfunction passesMinDate(\n day: FDate,\n config: Partial<MinDateValidatorConfig> | undefined,\n): boolean {\n if (!config) {\n throw new Error(\"MinDate validator must be set\");\n }\n\n if (!config.limit) {\n throw new Error(\"Invalid minDate config\");\n }\n\n return config.limit <= day.toString();\n}\n\nfunction passesMaxDate(\n day: FDate,\n config: Partial<MaxDateValidatorConfig> | undefined,\n): boolean {\n if (!config) {\n throw new Error(\"MaxDate validator must be set\");\n }\n\n if (!config.limit) {\n throw new Error(\"Invalid maxDate config\");\n }\n\n return day.toString() <= config.limit;\n}\n\nfunction passesInvalidDates(\n day: FDate,\n config: Partial<InvalidDatesValidatorConfig> | undefined,\n): boolean {\n if (!config) {\n return true;\n }\n\n if (!isInvalidDatesConfig(config)) {\n throw new Error(\"Invalid invalidDates config\");\n }\n\n return !config.dates.includes(day.toString());\n}\n\nfunction passesInvalidWeekdays(\n day: FDate,\n config: Partial<InvalidWeekdaysValidatorConfig> | undefined,\n): boolean {\n if (!config) {\n return true;\n }\n\n if (!isInvalidWeekdaysConfig(config)) {\n throw new Error(\"Invalid invalidWeekdays config\");\n }\n\n return !config.days.includes(day.weekDay);\n}\n","import { FDate } from \"@fkui/date\";\nimport { isInvalidMonth } from \"../../internal-components/calendar/is-invalid-month\";\nimport FDatepickerField from \"./FDatepickerField.vue\";\n\n/**\n * @public\n */\nexport function updateCalendarValue(\n this: InstanceType<typeof FDatepickerField>,\n newValue: string,\n): void {\n const newCalendarValue = FDate.fromIso(newValue);\n\n if (!newCalendarValue.isValid()) {\n this.calendarValue = undefined;\n } else if (isInvalidMonth(newCalendarValue, this.minDate, this.maxDate)) {\n this.calendarValue = undefined;\n } else if (!this.isDateEnabled(newCalendarValue)) {\n this.calendarValue = undefined;\n } else if (\n !this.calendarValue ||\n !this.calendarValue.equals(newCalendarValue)\n ) {\n this.calendarValue = newCalendarValue;\n }\n}\n","import { FDate } from \"@fkui/date\";\nimport {\n isMonthAfter,\n isMonthBefore,\n isInvalidMonth,\n} from \"../../internal-components/calendar/is-invalid-month\";\n\n/**\n * Resolves month to display when opening calendar.\n *\n * @internal\n */\nexport function getDisplayMonth(\n minDate?: FDate,\n maxDate?: FDate,\n selectedDate?: FDate,\n initialMonth?: FDate,\n): FDate {\n let effectiveDate;\n if (selectedDate && selectedDate.isValid()) {\n effectiveDate = selectedDate;\n } else if (initialMonth && initialMonth.isValid()) {\n effectiveDate = initialMonth;\n } else {\n effectiveDate = FDate.now();\n }\n\n let month;\n if (!isInvalidMonth(effectiveDate, minDate, maxDate)) {\n month = effectiveDate.startOfMonth();\n } else if (isMonthBefore(effectiveDate, minDate)) {\n month = minDate?.startOfMonth();\n } else if (isMonthAfter(effectiveDate, maxDate)) {\n month = maxDate?.startOfMonth();\n }\n\n return month || FDate.now().startOfMonth();\n}\n","<template>\n <div ref=\"component\" class=\"datepicker-field\">\n <div ref=\"calendarInputs\" @focusout=\"onFocusoutTextFieldButton\">\n <f-text-field\n v-bind=\"$attrs\"\n v-model=\"textFieldValue\"\n maxlength=\"20\"\n :disabled=\"disabled\"\n :formatter=\"dateFormatter\"\n :label-width=\"labelWidth\"\n :input-width=\"inputWidth\"\n @component-validity=\"onValidityTextField\"\n @change=\"onChangeTextField\"\n @validation-config-update=\"onValidationConfigUpdate\"\n >\n <!-- @slot **Optional** Slot for setting the label. Default value \"Datum\" -->\n <slot>{{ $t(\"fkui.datepicker-field.label\", \"Datum\") }}</slot>\n\n <template v-if=\"$slots.tooltip\" #tooltip>\n <!-- @slot **Optional** Slot for tooltip. May only contain an {@link FTooltip}. -->\n <slot name=\"tooltip\"></slot>\n </template>\n\n <template #description=\"{ descriptionClass, discreteDescriptionClass }\">\n <!-- @slot **Optional** Slot for displaying description. The contents are passed to the description-slot of {@link FLabel}. -->\n <slot name=\"description\" v-bind=\"{ descriptionClass, discreteDescriptionClass }\"></slot>\n </template>\n\n <template #error-message=\"{ hasError, validationMessage }\">\n <!--\n @slot **Optional** Slot for error message(s). The contents are passed to the error message-slot of {@link FLabel}.\n @binding {boolean} hasError Set to true when a validation error is present\n @binding {string} validationMessage Descriptive validation error message for current error\n -->\n <slot name=\"error-message\" v-bind=\"{ hasError, validationMessage }\"></slot>\n </template>\n\n <template #input-right>\n <button\n ref=\"calendarButton\"\n :disabled=\"disabled\"\n class=\"datepicker-field__button\"\n type=\"button\"\n :aria-expanded=\"isCalendarOpen ? 'true' : 'false'\"\n data-test=\"calendar-button\"\n @click=\"onClickCalendarButton()\"\n >\n <f-icon name=\"calendar\"></f-icon>\n <span class=\"sr-only\">{{ calendarButtonText }}</span>\n </button>\n </template>\n </f-text-field>\n </div>\n\n <i-popup\n :is-open=\"isCalendarOpen\"\n :anchor=\"calendarInputs\"\n :inline=\"alwaysInline ? 'always' : undefined\"\n :set-focus=\"false\"\n @open=\"onOpenPopup\"\n @close=\"onClosePopup\"\n >\n <div ref=\"popup\" :class=\"popupClass\">\n <!-- eslint-disable vue/no-deprecated-v-on-native-modifier -- technical debt -->\n <f-calendar\n v-model=\"calendarMonth\"\n :tab-date=\"calendarValue\"\n :min-date=\"minDate\"\n :max-date=\"maxDate\"\n @click=\"onSelectCalendarDay\"\n @keyup.esc.stop.native=\"onKeyupEsc\"\n >\n <!-- eslint-enable vue/no-deprecated-v-on-native-modifier -->\n <template #default=\"{ date, isFocused }\">\n <f-calendar-day\n :day=\"date\"\n :enabled=\"isDateEnabled(date)\"\n :focused=\"isFocused\"\n :highlight=\"highlightDay(date)\"\n :selected=\"isDaySelected(date)\"\n >\n </f-calendar-day>\n </template>\n </f-calendar>\n\n <div class=\"datepicker-field__close\">\n <button\n class=\"button button--discrete button--discrete--black datepicker-field__close__button\"\n type=\"button\"\n @click=\"onClickCloseCalendarButton\"\n @keyup.esc.stop=\"onKeyupEsc\"\n >\n <span>{{ $t(\"fkui.datepicker-field.close\", \"Stäng\") }}</span>\n <f-icon aria-hidden=\"true\" class=\"button__icon\" name=\"close\" />\n </button>\n </div>\n </div>\n </i-popup>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, type PropType, ref, shallowRef, inject } from \"vue\";\nimport { FDate, DateFormat } from \"@fkui/date\";\nimport {\n type MinDateValidatorConfig,\n type MaxDateValidatorConfig,\n type PendingValidityEvent,\n type ValidationConfigUpdateDetail,\n type ValidatorConfigs,\n type ValidityEvent,\n ValidationService,\n alertScreenReader,\n parseDate,\n waitForScreenReader,\n} from \"@fkui/logic\";\nimport { IPopup } from \"../../internal-components/IPopup\";\nimport { TranslationMixin } from \"../../plugins\";\nimport { getInputElement, getHTMLElementFromVueRef, findHTMLElementFromVueRef } from \"../../utils\";\nimport { FCalendar, FCalendarDay } from \"../FCalendar\";\nimport { FTextField } from \"../FTextField\";\nimport { FIcon } from \"../FIcon\";\nimport { isDayEnabled } from \"./is-day-enabled/is-day-enabled\";\nimport { updateCalendarValue } from \"./update-calendar-value\";\nimport { getDisplayMonth } from \"./get-display-month\";\n\nexport default defineComponent({\n name: \"FDatepickerField\",\n components: {\n FCalendar,\n IPopup,\n FTextField,\n FIcon,\n FCalendarDay,\n },\n mixins: [TranslationMixin],\n inheritAttrs: false,\n props: {\n /** Selected day.\n * @model\n */\n modelValue: {\n type: String,\n required: false,\n default: \"\",\n },\n /**\n * Initial month. Applies when no day is selected.\n * If unspecified, todays month will be shown when no day is selected.\n */\n initialMonth: {\n type: Object as PropType<FDate | undefined>,\n required: false,\n default: undefined,\n },\n /**\n * Highlight today.\n */\n highlightToday: {\n type: Boolean,\n required: false,\n default: true,\n },\n /**\n * Always display inline.\n */\n alwaysInline: {\n type: Boolean,\n default: false,\n },\n /**\n * Set responsive width for label section.\n *\n * ```\n * label-width=\"md-9 lg-6\"\n * ```\n */\n labelWidth: {\n type: String,\n required: false,\n default: \"sm-12\",\n },\n /**\n * Set responsive width for input section that wraps input element and icons.\n *\n * ```\n * input-width=\"md-6 lg-3\"\n * ```\n */\n inputWidth: {\n type: String,\n required: false,\n default: \"sm-12\",\n },\n /**\n * Set to `true`, empty string `\"\"` or string `\"disabled\"` to disable this field.\n */\n disabled: {\n type: Boolean,\n required: false,\n default: false,\n },\n },\n emits: [\"change\", \"update:modelValue\"],\n setup() {\n const defaultMinDate = FDate.now().addYears(-10);\n const defaultMaxDate = FDate.now().addYears(10);\n\n return {\n textFieldValue: ref<string>(\"\"),\n textFieldTouched: ref<boolean>(false),\n textFieldValidityRevealed: ref<boolean>(false),\n textFieldTableMode: inject(\"textFieldTableMode\", false) as boolean,\n componentTouched: ref<boolean>(false),\n calendarMonth: shallowRef<FDate>(getDisplayMonth(defaultMinDate, defaultMaxDate)),\n calendarValue: shallowRef<FDate | undefined>(undefined),\n isCalendarOpen: ref<boolean>(false),\n validationConfig: ref<ValidatorConfigs>({}),\n minDate: shallowRef<FDate>(defaultMinDate),\n maxDate: shallowRef<FDate>(defaultMaxDate),\n calendarInputs: ref<HTMLElement | null>(null),\n };\n },\n computed: {\n calendarButtonText(): string {\n const { calendarValue } = this;\n if (calendarValue && calendarValue.isValid()) {\n const prettyDate = calendarValue.toString(DateFormat.FULL);\n const text = this.$t(\"fkui.datepicker-field.change\", \"Ändra datum\");\n return `${text} ${prettyDate}`;\n } else {\n return this.$t(\"fkui.datepicker-field.choose\", \"Välj datum\");\n }\n },\n popupClass(): string {\n return this.textFieldTableMode\n ? \"datepicker-field__popup datepicker-field__table\"\n : \"datepicker-field__popup\";\n },\n },\n watch: {\n modelValue: {\n async handler(value: string): Promise<void> {\n if (value !== this.textFieldValue) {\n await this.updateTextFieldValue(value);\n this.updateCalendarValue(value);\n }\n },\n immediate: true,\n },\n },\n mounted() {\n ValidationService.addValidatorsToElement(\n getInputElement(this),\n {\n date: {},\n dateFormat: {},\n minDate: { limit: this.minDate.toString() },\n maxDate: { limit: this.maxDate.toString() },\n },\n true,\n );\n },\n methods: {\n dateFormatter: parseDate,\n async onValidityTextField({ detail }: CustomEvent<ValidityEvent>) {\n // if state cleared in ValidationService, reset state locally\n if (this.textFieldValidityRevealed && detail.validityMode === \"INITIAL\") {\n this.textFieldTouched = false;\n this.componentTouched = false;\n }\n\n // keep track if textfield have been touched\n if (!this.textFieldTouched && [\"blur\", \"change\"].includes(detail.nativeEvent)) {\n this.textFieldTouched = true;\n }\n\n if (this.isCalendarOpen) {\n alertScreenReader(detail.validationMessage, { assertive: true });\n }\n\n // keep track if textfield validity has been shown to user\n this.textFieldValidityRevealed = detail.validityMode !== \"INITIAL\";\n\n // return if error not aims be shown\n // return if error aims to be shown but textfield was never touched, indicating textfield was submitted\n // return if error aims to be shown and group has been touched\n if (detail.validityMode === \"INITIAL\" || !this.textFieldTouched || this.componentTouched) {\n return;\n }\n\n // hide validity by triggering pending-validity event\n // this event sets textfield ValidityMode to INITIAL\n const inputElement = getInputElement(this);\n const pendingValidityEvent = new CustomEvent<PendingValidityEvent>(\"pending-validity\", {\n bubbles: false,\n });\n inputElement.dispatchEvent(pendingValidityEvent);\n },\n onChangeTextField(): void {\n this.updateCalendarValue(this.textFieldValue);\n\n /**\n * `v-model` event.\n * @event update:modelValue\n * @type {string}\n */\n this.$emit(\"update:modelValue\", this.textFieldValue);\n\n /**\n * Vue2 `v-model` event.\n * @deprecated\n * @event change\n * @type {string}\n */\n this.$emit(\"change\", this.textFieldValue);\n },\n onClickCalendarButton() {\n if (!this.isCalendarOpen) {\n this.calendarMonth = getDisplayMonth(this.minDate, this.maxDate, this.calendarValue, this.initialMonth);\n }\n\n this.isCalendarOpen = !this.isCalendarOpen;\n },\n onFocusoutTextFieldButton(e: FocusEvent) {\n if (this.componentTouched || this.$refs.component === null) {\n return;\n }\n\n const component = getHTMLElementFromVueRef(this.$refs.component);\n const relatedTarget = e.relatedTarget as Node;\n\n if (!component.contains(relatedTarget)) {\n this.componentTouched = true;\n const inputElement = getInputElement(this);\n ValidationService.setTouched(inputElement);\n ValidationService.validateElement(inputElement);\n }\n },\n async onSelectCalendarDay(date: FDate): Promise<void> {\n // Consider component touched when a date is selected.\n this.componentTouched = true;\n\n this.isCalendarOpen = !this.isDateEnabled(date);\n if (!this.isCalendarOpen) {\n getHTMLElementFromVueRef(this.$refs.calendarButton).focus();\n }\n\n this.$emit(\"update:modelValue\", date.toString());\n this.$emit(\"change\", date.toString());\n await this.updateTextFieldValue(date.toString());\n this.updateCalendarValue(date.toString());\n },\n async onKeyupEsc(): Promise<void> {\n this.isCalendarOpen = false;\n waitForScreenReader(() => {\n getHTMLElementFromVueRef(this.$refs.calendarButton).focus();\n });\n },\n async onClickCloseCalendarButton(): Promise<void> {\n this.isCalendarOpen = false;\n waitForScreenReader(() => {\n getHTMLElementFromVueRef(this.$refs.calendarButton).focus();\n });\n },\n onOpenPopup(): void {\n if (!this.isCalendarOpen) {\n return;\n }\n\n const popup = getHTMLElementFromVueRef(this.$refs.popup);\n const navMonth: HTMLElement | null = popup.querySelector(\".calendar-navbar__month\");\n if (navMonth) {\n navMonth.focus({ preventScroll: true });\n }\n },\n onClosePopup(): void {\n this.isCalendarOpen = false;\n },\n async onValidationConfigUpdate(event: CustomEvent<ValidationConfigUpdateDetail>): Promise<void> {\n this.validationConfig = event.detail.config;\n\n if (this.validationConfig.minDate) {\n const minDateConfig = this.validationConfig.minDate as Partial<MinDateValidatorConfig>;\n if (!minDateConfig.limit) {\n throw new Error(\"MinDate validator must be set\");\n }\n\n this.minDate = FDate.fromIso(minDateConfig.limit.toString());\n }\n\n if (this.validationConfig.maxDate) {\n const maxDateConfig = this.validationConfig.maxDate as Partial<MaxDateValidatorConfig>;\n if (!maxDateConfig.limit) {\n throw new Error(\"MaxDate validator must be set\");\n }\n\n this.maxDate = FDate.fromIso(maxDateConfig.limit.toString());\n }\n const element = findHTMLElementFromVueRef(this.$refs.calendarInputs);\n if (element) {\n await this.$nextTick();\n ValidationService.validateAllElements(element);\n }\n },\n isDateEnabled(day: FDate): boolean {\n return isDayEnabled(day, this.validationConfig);\n },\n isDaySelected(date: FDate): boolean {\n return this.calendarValue ? date.equals(this.calendarValue) : false;\n },\n highlightDay(date: FDate): boolean {\n return this.highlightToday && date.equals(FDate.now());\n },\n async updateTextFieldValue(newValue: string): Promise<void> {\n this.textFieldValue = newValue;\n await this.$nextTick();\n ValidationService.validateElement(getInputElement(this));\n },\n updateCalendarValue,\n },\n});\n</script>\n","<template>\n <transition @enter=\"enter\" @after-enter=\"afterEnter\" @leave=\"leave\">\n <!-- @slot Content to expand -->\n <slot :height=\"height\"></slot>\n </transition>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from \"vue\";\nimport { getHTMLElementFromVueRef } from \"../../utils\";\n\nexport default defineComponent({\n name: \"FExpand\",\n data() {\n return {\n height: 0,\n initialStyle: {\n overflow: \"hidden\",\n transition: \"height 400ms cubic-bezier(0.46, 0.03, 0.52, 0.96)\",\n },\n hiddenStyle: {\n height: \"auto\",\n position: \"absolute\",\n visibility: \"hidden\",\n },\n visibleStyle: {\n width: \"\",\n position: \"\",\n visibility: \"\",\n height: \"0px\",\n },\n openedStyle: {\n height: \"auto\",\n },\n };\n },\n methods: {\n enter(element: Element): void {\n const htmlElement = getHTMLElementFromVueRef(element);\n Object.assign(htmlElement.style, this.initialStyle);\n Object.assign(htmlElement.style, this.hiddenStyle);\n htmlElement.style.width = getComputedStyle(element).width;\n const height = getComputedStyle(element).height;\n Object.assign(htmlElement.style, this.visibleStyle);\n // Force redraw\n /* eslint-disable-next-line @typescript-eslint/no-unused-expressions -- technical debt, there should be a better way */\n getComputedStyle(element).height;\n setTimeout(() => {\n this.height = parseInt(height as string, 10);\n htmlElement.style.height = height;\n });\n },\n afterEnter(element: Element): void {\n const htmlElement = getHTMLElementFromVueRef(element);\n Object.assign(htmlElement.style, this.openedStyle);\n },\n leave(element: Element): void {\n const htmlElement = getHTMLElementFromVueRef(element);\n const height = getComputedStyle(element).height;\n htmlElement.style.height = height;\n\n // Force redraw\n /* eslint-disable-next-line @typescript-eslint/no-unused-expressions -- technical debt, there should be a better way */\n getComputedStyle(element).height;\n setTimeout(() => {\n Object.assign(htmlElement.style, this.visibleStyle);\n });\n },\n },\n});\n</script>\n","<template>\n <div class=\"expandable-panel\" :class=\"expandedClass\">\n <component :is=\"headerTag\" class=\"expandable-panel__heading\">\n <button\n type=\"button\"\n :aria-expanded=\"expanded ? 'true' : 'false'\"\n :aria-controls=\"id\"\n v-bind=\"$attrs\"\n @click=\"onClickHeadingButton\"\n >\n <span class=\"expandable-panel__icon\">\n <span class=\"icon-stack\">\n <f-icon name=\"dash\"></f-icon>\n <f-icon name=\"dash\"></f-icon>\n </span>\n </span>\n\n <!-- @slot Slot used for title content -->\n <slot name=\"title\"></slot>\n\n <span\n v-if=\"haveNotifications\"\n class=\"expandable-panel__notification\"\n :title=\"\n $t('fkui.expandable-panel.notification.title', '{{ count }} notifiering{{ suffix }}', {\n count: notifications,\n suffix: notifications > 1 ? 'ar' : '',\n })\n \"\n >\n <span class=\"sr-only\">{{ screenReaderNotificationText }}</span>\n <f-icon name=\"bell\"></f-icon>\n </span>\n </button>\n </component>\n\n <f-expand>\n <div v-show=\"expanded\" :id=\"id\" class=\"expandable-panel__content\">\n <div class=\"expandable-panel__body\">\n <!-- @slot Slot used for content shown when panel is expanded -->\n <slot></slot>\n </div>\n <div v-if=\"hasOutsideSlot\" class=\"expandable-panel__outside\">\n <!-- @slot Slot used for optional content rendered below panel when expanded -->\n <slot name=\"outside\"></slot>\n </div>\n </div>\n </f-expand>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from \"vue\";\nimport { ElementIdService } from \"@fkui/logic\";\nimport { FIcon } from \"../FIcon\";\nimport { FExpand } from \"../FExpand\";\nimport { hasSlot } from \"../../utils\";\nimport { TranslationMixin } from \"../../plugins\";\n\nexport default defineComponent({\n name: \"FExpandablePanel\",\n components: {\n FIcon,\n FExpand,\n },\n mixins: [TranslationMixin],\n inheritAttrs: false,\n props: {\n /**\n * Toggle expanded/collapsed state\n */\n expanded: {\n type: Boolean,\n required: false,\n default: false,\n },\n /**\n * Element to render for the header element inside the expandable panel.\n * 'h1', 'h2', 'h3', 'h4', 'h5' and 'h6' is valid.\n */\n headerTag: {\n default: \"h2\",\n required: false,\n validator(value: string): boolean {\n return [\"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\"].includes(value);\n },\n },\n /**\n * The id for the content id attribute.\n * If the prop is not set the id will be generated.\n */\n id: {\n type: String,\n required: false,\n default: () => ElementIdService.generateElementId(),\n },\n\n /**\n * Number of notifications present in panel.\n *\n * If set to zero (default) no notification badge will be displayed.\n */\n notifications: {\n type: Number,\n required: false,\n default: 0,\n },\n screenReaderNotificationTemplate: {\n type: String,\n required: false,\n default: \"Du har %VALUE% notifieringar.\",\n },\n },\n emits: [\"toggle\"],\n computed: {\n expandedClass(): string {\n return this.expanded ? \"expandable-panel--expanded\" : \"expandable-panel--collapsed\";\n },\n hasOutsideSlot(): boolean {\n return hasSlot(this, \"outside\");\n },\n haveNotifications(): boolean {\n return this.notifications > 0;\n },\n screenReaderNotificationText(): string {\n return `${this.screenReaderNotificationTemplate.replace(\"%VALUE%\", this.notifications.toString())}`;\n },\n },\n methods: {\n onClickHeadingButton(event: MouseEvent): void {\n /**\n * Emitted when panel heading is clicked.\n * @type {MouseEvent}\n */\n this.$emit(\"toggle\", event);\n },\n },\n});\n</script>\n","<template>\n <div class=\"expandable-paragraph\" :class=\"[expandedClass, listClass]\">\n <div :class=\"relatedClass\">\n <component :is=\"headerTag\" class=\"expandable-paragraph__heading\" :class=\"headerVisualClass\">\n <button\n type=\"button\"\n class=\"expandable-paragraph__button\"\n :aria-expanded=\"expanded ? 'true' : 'false'\"\n :aria-controls=\"id\"\n v-bind=\"$attrs\"\n @click=\"onClickMinimize\"\n >\n <span class=\"expandable-paragraph__icon\">\n <span class=\"icon-stack\">\n <f-icon name=\"dash\"></f-icon>\n <f-icon name=\"dash\"></f-icon>\n </span>\n </span>\n <!-- @slot Slot used for title content -->\n <slot name=\"title\"></slot>\n </button>\n </component>\n <div v-if=\"hasRelatedSlot\" class=\"expandable-paragraph__related-information\">\n <!-- @slot Slot used for related information besides the header element -->\n <slot name=\"related\"></slot>\n </div>\n </div>\n <f-expand>\n <div v-show=\"expanded\" :id=\"id\" class=\"expandable-paragraph__container\">\n <div class=\"expandable-paragraph__content\">\n <!-- @slot Slot used for content shown when expanded -->\n <slot></slot>\n </div>\n <div v-if=\"!list\" class=\"expandable-paragraph__separator\"></div>\n </div>\n </f-expand>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from \"vue\";\nimport { ElementIdService } from \"@fkui/logic\";\nimport { FIcon } from \"../FIcon\";\nimport { hasSlot } from \"../../utils\";\nimport { FExpand } from \"../FExpand\";\n\nexport default defineComponent({\n name: \"FExpandableParagraph\",\n components: {\n FIcon,\n FExpand,\n },\n inheritAttrs: false,\n props: {\n /**\n * Toggle expanded/collapsed state\n */\n expanded: {\n type: Boolean,\n required: false,\n default: false,\n },\n /**\n * Element to render for the button elmement\n * 'span', 'h1', 'h2', 'h3', 'h4', 'h5' and 'h6' is valid.\n */\n headerTag: {\n default: \"span\",\n required: false,\n validator(value: string): boolean {\n return [\"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\", \"span\"].includes(value);\n },\n },\n /**\n * Visual header size for the button element.\n * 'h1', 'h2', 'h3', 'h4', 'h5' and 'h6' is valid.\n * If not used, the default styling will be h4\n */\n headerVisualTag: {\n type: String,\n default: \"\",\n required: false,\n validator(value: string): boolean {\n return [\"\", \"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\"].includes(value);\n },\n },\n /**\n * Toggle list style of component\n */\n list: {\n type: Boolean,\n default: false,\n required: false,\n },\n /**\n * The id for the content id attribute.\n * If the prop is not set the id will be generated.\n */\n id: {\n type: String,\n required: false,\n default: () => ElementIdService.generateElementId(),\n },\n },\n emits: [\"toggle\"],\n computed: {\n expandedClass(): string {\n return this.expanded ? \"expandable-paragraph--open\" : \"expandable-paragraph--closed\";\n },\n listClass(): string {\n return this.list ? \"expandable-paragraph--list\" : \"\";\n },\n relatedClass(): string {\n return this.hasRelatedSlot ? \"expandable-paragraph--related-information\" : \"\";\n },\n hasRelatedSlot(): boolean {\n return hasSlot(this, \"related\");\n },\n headerVisualClass(): string {\n return `heading--${this.headerVisualTag || \"h4\"}`;\n },\n },\n methods: {\n onClickMinimize(event: MouseEvent): void {\n /**\n * Emitted when heading is clicked.\n * @type {MouseEvent}\n */\n this.$emit(\"toggle\", event);\n },\n },\n});\n</script>\n","<template>\n <div class=\"file-item\">\n <div class=\"file-item__row\">\n <a :id=\"id\" class=\"file-item__file-open\" v-bind=\"$attrs\">\n <div class=\"icon-stack button__icon icon-stack--new-window\">\n <f-icon name=\"new-window\"></f-icon>\n <f-icon :name=\"iconName\"></f-icon>\n </div>\n <span class=\"file-item__file-name\">{{ fileName }}</span>\n <span class=\"sr-only\">&nbsp;{{ $t(\"fkui.file-item.file-open\", \"öppnas i nytt fönster\") }}</span>\n </a>\n\n <!-- @slot\n Slot for any content that should be placed beside the file icon and file name.\n If several elements is placed, they will be spaced evenly,\n for more information see https://developer.mozilla.org/en-US/docs/Web/CSS/justify-content.-->\n <slot name=\"row\"></slot>\n </div>\n <!-- @slot Slot for any type of content. Elements placed in this slot will be position after the file icon and file name. -->\n <slot></slot>\n <div v-if=\"isMimeTypeChanged\" class=\"file-item__change-info\">{{ mimeTypeChangedText }}</div>\n <hr class=\"file-item__separator\" />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from \"vue\";\nimport { ElementIdService, isSet } from \"@fkui/logic\";\nimport FIcon from \"../FIcon/FIcon.vue\";\n\ntype IconName = \"doc\" | \"file\" | \"pic\" | \"pdf\";\n\n/* default icon used when no mimetype matches */\nconst DEFAULT_ICON: IconName = \"file\";\n\n/* map mimetype -> icon */\nconst iconMap: Record<string, IconName> = {\n \"image/*\": \"pic\",\n \"application/msword\": \"doc\",\n \"application/pdf\": \"pdf\",\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\": \"doc\",\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.template\": \"doc\",\n};\n\nexport default defineComponent({\n name: \"FFileItem\",\n components: { FIcon },\n inheritAttrs: false,\n props: {\n /**\n * The id for the input id attribute.\n * The id for the label for attribute.\n * If the prop is not set a random value will be generated.\n */\n id: {\n type: String,\n required: false,\n default: () => ElementIdService.generateElementId(),\n },\n /**\n * The file name.\n */\n fileName: {\n type: String,\n required: true,\n },\n /**\n * The mime type, can be changed if i.e server change the name.\n */\n mimeType: {\n type: String,\n required: false,\n default: undefined,\n },\n /**\n * The name of the file uploaded\n */\n originalMimeType: {\n type: String,\n required: false,\n default: undefined,\n },\n /**\n * If file name changed, this info will be displayed, placeholder %before% and %after% will be replaced with originalMimeType and mimeType\n */\n changedMimeTypeText: {\n type: String,\n required: false,\n default: undefined,\n },\n },\n computed: {\n isMimeTypeChanged(): boolean {\n return isSet(this.originalMimeType) && this.originalMimeType !== this.mimeType;\n },\n mimeTypeChangedText(): string {\n const originalMimeType = (this.originalMimeType || \"\").split(\"/\").pop() || \"\";\n const currentMimeType = (this.mimeType || \"\").split(\"/\").pop() || \"\";\n const localChangedMimeTypeText =\n this.changedMimeTypeText ??\n this.$t(\"fkui.file-item.changed-mime-type.text\", \"(%before% ändrad till %after%)\");\n return localChangedMimeTypeText.replace(\"%before%\", originalMimeType).replace(\"%after%\", currentMimeType);\n },\n iconName(): IconName {\n const { mimeType } = this;\n\n /* use default icon when mimetype is empty/missing */\n if (!mimeType) {\n return DEFAULT_ICON;\n }\n\n /* search literal match */\n if (iconMap[mimeType]) {\n return iconMap[mimeType];\n }\n\n /* search with subtype wildcard, e.g. image/* */\n const p = mimeType.split(\"/\", 1);\n const wildcard = [p[0], \"*\"].join(\"/\");\n if (iconMap[wildcard]) {\n return iconMap[wildcard];\n }\n\n /* default to file */\n return DEFAULT_ICON;\n },\n },\n});\n</script>\n","<template>\n <div class=\"file-selector\">\n <input\n :id=\"id\"\n ref=\"file-selector\"\n type=\"file\"\n :aria-labelledby=\"labelId\"\n :aria-disabled=\"ariaDisabled ? 'true' : undefined\"\n v-bind=\"attrs\"\n @click=\"onClick\"\n />\n <label\n :id=\"labelId\"\n role=\"button\"\n :class=\"labelClass\"\n :for=\"id\"\n class=\"button button--tertiary button--medium\"\n aria-hidden=\"true\"\n >\n <f-icon class=\"button__icon\" name=\"paper-clip\"></f-icon>\n <slot></slot>\n </label>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from \"vue\";\nimport { ElementIdService } from \"@fkui/logic\";\nimport FIcon from \"../FIcon/FIcon.vue\";\n\nexport default defineComponent({\n name: \"FFileSelector\",\n components: {\n FIcon,\n },\n inheritAttrs: false,\n model: {\n prop: \"files\",\n event: \"change\",\n },\n props: {\n /**\n * The id for the input id attribute.\n * The id for the label for attribute.\n * If the prop is not set a random value will be generated.\n */\n id: {\n type: String,\n required: false,\n default: () => ElementIdService.generateElementId(),\n },\n disabled: {\n type: Boolean,\n required: false,\n default: false,\n },\n },\n emits: [\"change\"],\n computed: {\n attrs(): Record<string, unknown> {\n return {\n ...this.$attrs,\n id: this.id,\n onChange: (event: Event) => {\n if (event.target instanceof HTMLInputElement) {\n /**\n * V-model event.\n *\n * @event input\n * @type {FileList}\n */\n this.$emit(\"change\", event.target.files);\n }\n },\n };\n },\n\n labelClass(): string {\n return this.disabled ? \"disabled\" : \"enabled\";\n },\n labelId(): string {\n return `${this.id}_label`;\n },\n ariaDisabled(): string | undefined {\n return this.disabled ? \"true\" : undefined;\n },\n },\n methods: {\n onClick(event: Event) {\n if (this.disabled) {\n event.preventDefault();\n return;\n }\n\n const input = this.$refs[\"file-selector\"] as HTMLInputElement;\n input.value = \"\";\n },\n },\n});\n</script>\n","<template>\n <div class=\"message-box\" :class=\"[messageBoxType, bannerType]\">\n <span v-if=\"provideScreenReaderContext\" class=\"sr-only\">{{ screenReaderContext() }}</span>\n\n <i-flex gap=\"2x\">\n <i-flex-item v-if=\"layout === 'short'\" class=\"message-box__icon\" shrink align=\"center\">\n <span class=\"icon-stack\" :class=\"stackTypeClass\">\n <f-icon :class=\"classType\" :name=\"symbol\"></f-icon>\n <f-icon :class=\"classIcon\" :name=\"sign\"></f-icon>\n </span>\n </i-flex-item>\n <i-flex-item class=\"message-box__content\" grow align=\"center\">\n <!-- @slot Slot for displaying content.\n\nSlot styling is available through `v-slot=\"{ <propertyName> }\"`, e.g.\n`v-slot=\"{ headingSlotClass }\"`.\n\nThe following properties are available:\n\n* `headingSlotClass: string[];` CSS class to use for the heading element. Only set for normal layout (avoid heading otherwise). Use with `:class=\"headingSlotClass\"`.\n-->\n <slot v-bind=\"layout === 'short' ? {} : { headingSlotClass: headingClass }\"></slot>\n </i-flex-item>\n </i-flex>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { type PropType, defineComponent } from \"vue\";\nimport { TranslationService } from \"@fkui/logic\";\nimport FIcon from \"../FIcon/FIcon.vue\";\nimport { IFlex, IFlexItem } from \"../../internal-components/IFlex\";\n\nconst iconClasses = {\n success: {\n symbol: \"circle\",\n sign: \"success\",\n screenReaderContextKey: \"fkui.message-box.sr-context.success\",\n screenReaderContextDefault: \"Meddelande\",\n },\n warning: {\n symbol: \"circle\",\n sign: \"alert\",\n screenReaderContextKey: \"fkui.message-box.sr-context.warning\",\n screenReaderContextDefault: \"Varningsmeddelande\",\n },\n error: {\n symbol: \"triangle\",\n sign: \"alert\",\n screenReaderContextKey: \"fkui.message-box.sr-context.error\",\n screenReaderContextDefault: \"Felmeddelande\",\n },\n info: {\n symbol: \"circle\",\n sign: \"i\",\n screenReaderContextKey: \"fkui.message-box.sr-context.info\",\n screenReaderContextDefault: \"Informationsmeddelande\",\n },\n} as Record<string, Record<string, string>>;\n\nexport default defineComponent({\n name: \"FMessageBox\",\n components: {\n FIcon,\n IFlex,\n IFlexItem,\n },\n props: {\n /**\n * Type of message-box. 'success', 'error', 'warning' and 'info' is valid.\n * */\n type: {\n type: String,\n required: true,\n validator(value: string) {\n // The value must match one of these strings\n return [\"success\", \"warning\", \"error\", \"info\"].includes(value);\n },\n },\n /**\n * If message-box should be a banner.\n * If prop is not used message-box will have default styling.\n */\n banner: {\n type: Boolean,\n required: false,\n },\n /**\n * It is important to provide a context for a screenreader, similar to a modal that initially outputs it is a dialog.\n * Type-specific screenreader context is output by default in this component.\n * By setting this property to false no context will be output.\n * Note that by doing this, it is the applications responsiblity to provide a clear context.\n */\n provideScreenReaderContext: {\n type: Boolean,\n required: false,\n default: true,\n },\n /**\n * Select standard or short layout.\n *\n * - 'normal' - Use normal layout when need for heading and/or longer text/multiple sentences\n * - 'short' - Use short layout when only need for shorter text\n */\n layout: {\n type: String as PropType<\"standard\" | \"short\">,\n required: false,\n default: \"standard\",\n validator(value: string) {\n return [\"standard\", \"short\"].includes(value);\n },\n },\n },\n data() {\n return {\n headingClass: [\"message-box__heading\"],\n };\n },\n computed: {\n messageBoxType(): string {\n if (this.layout === \"short\") {\n return `message-box--${this.type}-short`;\n } else {\n return `message-box--${this.type}`;\n }\n },\n bannerType(): string {\n return this.banner ? `message-box--banner` : \"\";\n },\n classType(): string {\n return `icon__${this.type}`;\n },\n classIcon(): string {\n return iconClasses[this.type].symbol === \"circle\" && iconClasses[this.type].sign === \"alert\"\n ? `icon__exclamation`\n : \"\";\n },\n stackTypeClass(): string {\n return `icon-stack--${this.type}`;\n },\n symbol(): string {\n return iconClasses[this.type].symbol;\n },\n sign(): string {\n return iconClasses[this.type].sign;\n },\n },\n methods: {\n screenReaderContext() {\n return TranslationService.provider.translate(\n iconClasses[this.type].screenReaderContextKey,\n iconClasses[this.type].screenReaderContextDefault,\n );\n },\n },\n});\n</script>\n","import { Reference } from \"@fkui/logic\";\nimport { FormErrorList, FormStep } from \"../../types\";\nimport { isFormStepReference } from \"./FormUtils\";\n\n/**\n * @public\n */\nexport const setRef = Symbol(\"setRef\");\n\n/**\n * @public\n */\nexport const getRef = Symbol(\"getRef\");\n\n/**\n * @public\n */\nexport const setIsOpen = Symbol(\"setIsOpen\");\n\n/**\n * Methods provided by FForm.\n *\n * @public\n */\nexport interface FFormProvider {\n [setRef](id: string, data: FormErrorList | FormStep): void;\n [getRef](id: string): Reference<FormErrorList | FormStep>;\n [setIsOpen](id: string, isOpen: boolean): void;\n}\n\n/**\n * @public\n */\nexport function createFFormProvideOptions(vm: {\n components: Record<string, Reference<FormErrorList | FormStep>>;\n}): FFormProvider {\n const { components } = vm;\n return {\n [setRef](id: string, data: FormErrorList | FormStep): void {\n components[id] = new Reference(data);\n },\n [getRef](id: string): Reference<FormErrorList | FormStep> {\n return components[id];\n },\n [setIsOpen](id: string, isOpen: boolean): void {\n const steps = Object.values(components).filter(isFormStepReference);\n for (const step of steps) {\n step.ref.isOpen = false;\n }\n\n const step = components[id];\n if (isFormStepReference(step)) {\n step.ref.isOpen = isOpen;\n }\n },\n };\n}\n","<template>\n <!-- [html-validate-disable-next wcag/h32: FForm does not have a default button and leaves the responsiblity to the application using FForm.] -->\n <form :id=\"id\" class=\"form\" novalidate v-bind=\"attrs\" @component-validity=\"onComponentValidity\">\n <f-message-box v-if=\"displayError && isSubmitted && hasError\" tabindex=\"-1\" type=\"error\">\n <!--\n@slot Slot for displaying error description.\n\nAfter this slot a list of invalid elements is listed.\nWhen an item is clicked it will scroll to that invalid element.\n\nSlot content is available through `v-slot=\"{ <propertyName> }\"`, e.g.\n`v-slot=\"{ slotClass }\"`.\n\nThe following properties are available:\n\n* `slotClass: string[];` CSS classes to use for the error message heading element. Use with `:class=\"slotClass\"`.\n -->\n <slot name=\"error-message\" v-bind=\"{ slotClass: errorMessageSlotClass }\"></slot>\n <nav>\n <f-error-list :items=\"componentsWithErrors\"></f-error-list>\n </nav>\n </f-message-box>\n <!-- @slot Slot for displaying content, e.g. input elements and form steps. -->\n <slot name=\"default\"></slot>\n </form>\n</template>\n\n<script lang=\"ts\">\nimport { ElementIdService, focus, Reference, ValidationService } from \"@fkui/logic\";\nimport { defineComponent, type PropType } from \"vue\";\nimport { ComponentValidityEvent, FormErrorList, FormStep } from \"../../types\";\nimport { FMessageBox } from \"../FMessageBox\";\nimport { FErrorList } from \"../FErrorList\";\nimport { type FFormProvider, createFFormProvideOptions } from \"./FFormProvide\";\nimport { cleanUpElements, isFormStepReference, sortComponentsWithErrorsOnDOMOrder } from \"./FormUtils\";\n\ninterface FFormData {\n errorMessageSlotClass: string[];\n components: Record<string, Reference<FormErrorList | FormStep>>;\n}\n\n/**\n * @deprecated `<f-form>` is deprecated.\n * See migration guide: https://forsakringskassan.github.io/latest/components/fform.html\n */\nexport default defineComponent({\n name: \"FForm\",\n components: { FMessageBox, FErrorList },\n provide(): FFormProvider {\n return createFFormProvideOptions(this);\n },\n inheritAttrs: false,\n props: {\n /**\n * The id for the form id attribute.\n * If the prop is not set a random value will be generated.\n */\n id: {\n type: String,\n required: false,\n default: () => ElementIdService.generateElementId(),\n },\n /**\n * If the error-message slot and the invalid elements list\n * should be displayed.\n */\n displayError: {\n type: Boolean,\n default: true,\n },\n /**\n * If invalid fields at submit this tells how the scroll to the error\n * field should occur. The default, \"center\", centres the error information\n * vertically. Allowed value is also \"top\" which scrolls such that the error\n * informations top is at the top of the viewport.\n */\n errorScroll: {\n type: String as PropType<\"center\" | \"top\">,\n default: \"center\",\n validator(value: string) {\n return [\"center\", \"top\"].includes(value);\n },\n },\n },\n data(): FFormData {\n return {\n errorMessageSlotClass: [\"message-box__heading\"],\n components: {},\n };\n },\n computed: {\n attrs(): Record<string, unknown> {\n type SubmitHandler = (e: SubmitEvent) => void;\n let onSubmit: SubmitHandler | SubmitHandler[];\n // ? Merge submit listeners\n if (this.$attrs.onSubmit) {\n const originalSubmit = this.$attrs.onSubmit as SubmitHandler | SubmitHandler[];\n\n onSubmit = async (event: SubmitEvent) => {\n const isValid = await this.onSubmit(event);\n if (isValid) {\n if (Array.isArray(originalSubmit)) {\n originalSubmit.forEach((submitFunction) => submitFunction(event));\n } else {\n originalSubmit(event);\n }\n }\n };\n } else {\n onSubmit = this.onSubmit;\n }\n const attrs: Record<string, unknown> = { ...this.$attrs, id: this.id, onSubmit };\n return attrs;\n },\n numberOfTimesSubmitted(): number {\n const components: Array<Reference<FormErrorList | FormStep>> = Object.values(this.components);\n return Math.max(0, ...components.map((it) => it.ref.numberOfTimesSubmitted));\n },\n isSubmitted(): boolean {\n return this.numberOfTimesSubmitted > 0;\n },\n hasError(): boolean {\n if (Object.values(this.components).length === 0) {\n return false;\n } else {\n const components: Array<Reference<FormErrorList | FormStep>> = Object.values(this.components);\n return components.some((component) => component.ref.isValid === false);\n }\n },\n componentsWithErrors(): Array<FormErrorList | FormStep> {\n const sortedComponents = sortComponentsWithErrorsOnDOMOrder(this.components) as Array<\n Reference<FormErrorList | FormStep>\n >;\n\n return sortedComponents.map((c) => c.ref);\n },\n needsErrorScroll(): boolean {\n return this.errorScroll !== \"center\";\n },\n },\n methods: {\n async focusDomElement(): Promise<void> {\n await this.$nextTick();\n const messageBoxError = this.$el.querySelector(\".message-box--error\");\n if (messageBoxError) {\n focus(messageBoxError, { scrollToTop: this.needsErrorScroll });\n }\n },\n async focusFallbackElement(): Promise<void> {\n await this.$nextTick();\n const element = this.$el.querySelector(\".form-step__header\");\n const invalidElement = this.$el.querySelector(\":invalid\");\n if (element) {\n focus(element, { scrollToTop: this.needsErrorScroll });\n } else if (invalidElement) {\n focus(invalidElement, { force: true, scrollToTop: this.needsErrorScroll });\n }\n },\n async onSubmit(event: Event): Promise<boolean> {\n event.preventDefault();\n\n const components: Array<Reference<FormErrorList | FormStep>> = Object.values(this.components);\n components.forEach((component) => {\n component.ref.numberOfTimesSubmitted++;\n\n if (!isFormStepReference(component)) {\n ValidationService.setTouched(component.ref.id);\n ValidationService.setSubmitted(component.ref.id);\n }\n });\n\n await cleanUpElements(this);\n await ValidationService.validateAllElements(this.id);\n\n if (this.displayError) {\n this.focusDomElement();\n } else {\n // ! TODO: Focus on first invalid FormStep error list.\n this.focusFallbackElement();\n }\n\n return this.hasError === false;\n },\n async onComponentValidity(event: CustomEvent<ComponentValidityEvent>): Promise<void> {\n const reference = new Reference<FormErrorList | FormStep>({\n id: event.detail.elementId,\n focusElementId: event.detail.focusElementId,\n title: event.detail.errorMessage,\n isValid: event.detail.isValid,\n numberOfTimesSubmitted: this.numberOfTimesSubmitted,\n });\n\n this.components[event.detail.elementId] = reference;\n\n // required for components not within formsteps\n await cleanUpElements(this);\n },\n },\n});\n</script>\n","<template>\n <f-validation-group\n :id=\"id\"\n v-bind=\"attrs\"\n :key=\"validationGroupKey\"\n v-model=\"groupValidity\"\n class=\"form-step\"\n :stop-propagation=\"true\"\n >\n <div class=\"form-step__header\" tabindex=\"-1\" role=\"group\">\n <!-- @slot\nSlot for header content, e.g. title.\n\nSlot content is available through `v-slot=\"{ <propertyName> }\"`, e.g.\n`v-slot=\"{ slotClass }\"`.\n\nThe following properties are available:\n\n* `slotClass: string[];` CSS classes to use for the heading element. Use with `:class=\"slotClass\"`.\n* `+` all properties that are available in the default slot.\n -->\n <slot name=\"header\" v-bind=\"{ slotClass: headerSlotClass, ...self.ref, toggleIsOpen }\"></slot>\n <f-icon v-if=\"self.ref.isValid\" class=\"form-step__check\" name=\"success\"></f-icon>\n </div>\n <div v-if=\"displayErrorList\" :id=\"stepErrorId\" class=\"form-step__error\" tabindex=\"-1\" role=\"group\">\n <nav>\n <f-error-list :bullets=\"true\" :items=\"componentsWithError\" :before-navigate=\"beforeNavigateToError\">\n <template #title>\n <!--\n @slot Slot for displaying error description.\n\n After this slot a list of invalid elements is listed.\n When an item is clicked it will scroll to and focus that invalid element.\n -->\n <slot name=\"error-message\">\n {{ defaultErrorMessage }}\n </slot>\n </template>\n </f-error-list>\n </nav>\n </div>\n\n <div @component-validity=\"onComponentValidity\">\n <!-- @slot\nSlot for displaying content, e.g. descriptions and input elements.\n\nSlot content is available through `v-slot=\"{ <propertyName> }\"`, e.g.\n`v-slot=\"{ isOpen, isSubmitted }\"`.\n\nThe following properties are available:\n\n* `isOpen: boolean;`\n* `isSubmitted: boolean;`\n* `isAnyFieldTouched: boolean;`\n* `isValid: boolean;`\n* `id: string;`\n* `title: string;`\n* `toggleIsOpen: () => void;`\n -->\n <slot name=\"default\" v-bind=\"{ ...self.ref, isSubmitted, toggleIsOpen }\"></slot>\n <span v-if=\"hasArrow\" class=\"form-step__arrow\"></span>\n </div>\n </f-validation-group>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, inject } from \"vue\";\nimport { ElementIdService, ValidationService, focus, Reference } from \"@fkui/logic\";\nimport { FormStep, ErrorItem, GroupValidityEvent, ComponentValidityEvent } from \"../../types\";\nimport { FIcon } from \"../FIcon\";\nimport { FErrorList } from \"../FErrorList\";\nimport { FValidationGroup } from \"../FValidationGroup\";\nimport { TranslationMixin } from \"../../plugins\";\nimport { setRef, getRef, setIsOpen } from \"./FFormProvide\";\n\n/**\n * @deprecated `<f-form-step>` is deprecated.\n * See migration guide: https://forsakringskassan.github.io/latest/components/fform.html\n */\nexport default defineComponent({\n name: \"FFormStep\",\n components: { FIcon, FValidationGroup, FErrorList },\n mixins: [TranslationMixin],\n inheritAttrs: false,\n props: {\n /**\n * The id for the root div id attribute.\n * If the prop is not set a random value will be generated.\n */\n id: {\n type: String,\n required: true,\n default: () => ElementIdService.generateElementId(),\n },\n /**\n * If the form step should have a bottom arrow.\n * It is recommended to remove the arrow for the last step with `:has-arrow=\"false\"`.\n */\n hasArrow: {\n type: Boolean,\n default: true,\n },\n /**\n * If the form step is the last step.\n * If set to true the form step will have a bigger bottom margin.\n */\n isLastStep: {\n type: Boolean,\n default: false,\n },\n /**\n * If error links should be disabled, `:disable-error-links=\"true\"`..\n * If `true`, errors will be displayed as text instead.\n */\n disableErrorLinks: {\n type: Boolean,\n default: false,\n },\n },\n setup() {\n return {\n setRef: inject(setRef) as (id: string, data: FormStep | FormStep) => void,\n getRef: inject(getRef) as (id: string) => Reference<FormStep | FormStep>,\n setIsOpen: inject(setIsOpen) as (id: string, isOpen: boolean) => void,\n };\n },\n data() {\n return {\n self: new Reference<FormStep>({\n isOpen: false,\n numberOfTimesSubmitted: 0,\n isAnyFieldTouched: false,\n isValid: true,\n id: this.id,\n focusElementId: `${this.id}-error`,\n title: \"\",\n }),\n hasBeenValid: false,\n isOpenedClosed: false,\n headerSlotClass: [\"form-step__title\"],\n stepErrorId: `${this.id}-error`,\n groupValidity: {\n isValid: false,\n componentsWithError: [],\n componentCount: 0,\n } as GroupValidityEvent,\n };\n },\n computed: {\n attrs(): Record<string, string | Record<string, unknown>> {\n return {\n ...this.$attrs,\n class: {\n \"form-step--complete\": this.self.ref.isValid,\n \"form-step--last-step\": this.isLastStep,\n },\n };\n },\n defaultErrorMessage(): string {\n return this.$t(\"fkui.form-step.errorlist.title\", \"Oj, du har glömt att fylla i något. Gå till:\");\n },\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- technical debt, not sure what is going on here\n injected(): any {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- technical debt, not sure what is going on here\n return this as any;\n },\n isSubmitted(): boolean {\n return this.self.ref.numberOfTimesSubmitted > 0;\n },\n componentsWithError(): ErrorItem[] {\n return this.groupValidity.componentsWithError.map((c: ComponentValidityEvent) => ({\n id: this.disableErrorLinks ? undefined : c.elementId,\n focusElementId: c.focusElementId,\n title: c.errorMessage,\n }));\n },\n hasError(): boolean {\n return this.groupValidity.componentsWithError.length > 0;\n },\n displayErrorList(): boolean {\n return (this.isOpenedClosed || this.hasBeenValid || this.isSubmitted) && this.hasError;\n },\n validationGroupKey(): string {\n return `${this.id}-group`;\n },\n },\n watch: {\n \"self.ref.numberOfTimesSubmitted\": {\n handler(): void {\n ValidationService.setSubmitted(this.$el);\n ValidationService.validateAllElements(this.id);\n },\n },\n groupValidity: {\n immediate: true,\n handler(): void {\n this.self.ref.isValid = this.groupValidity.isValid;\n\n if (this.hasBeenValid === false) {\n this.hasBeenValid = this.groupValidity.isValid;\n }\n },\n },\n },\n async mounted(): Promise<void> {\n await this.$nextTick();\n this.loadSelf();\n this.injected.setRef(this.id, this.self.ref);\n this.loadSelf();\n this.updateSelfRefTitle();\n },\n beforeUpdate() {\n this.updateSelfRefTitle();\n },\n methods: {\n updateSelfRefTitle(): void {\n const [firstSlotClass] = this.headerSlotClass;\n const headerElement = this.$el.querySelector(`.${firstSlotClass}`);\n if (headerElement && headerElement.textContent) {\n this.self.ref.title = headerElement.textContent;\n }\n },\n loadSelf(): void {\n const ref = this.injected.getRef(this.id);\n Object.assign(this.self, ref);\n },\n async focusDomElement(): Promise<void> {\n await this.$nextTick();\n\n if (this.hasError && this.self.ref.isAnyFieldTouched) {\n const formStepError = this.$el.querySelector(\".form-step__error\");\n focus(formStepError);\n } else {\n const formStepHeader = this.$el.querySelector(\".form-step__header\");\n focus(formStepHeader);\n }\n },\n async beforeNavigateToError(): Promise<void> {\n this.injected.setIsOpen(this.id, true);\n await this.$nextTick();\n },\n /**\n * Toggle if open or closed.\n * If another form step is open then it will be closed.\n * @public\n */\n toggleIsOpen(): void {\n this.injected.setIsOpen(this.id, !this.self.ref.isOpen);\n // ? If any field is touched and form step was opened and closed.\n if (this.self.ref.isAnyFieldTouched && this.self.ref.isOpen === false) {\n if (this.isOpenedClosed === false) {\n this.isOpenedClosed = true;\n }\n\n ValidationService.setTouched(this.$el);\n ValidationService.validateAllElements(this.id);\n }\n\n this.focusDomElement();\n },\n onComponentValidity(event: CustomEvent<ComponentValidityEvent>): void {\n const hasReceivedValidOrErrorEvent =\n event.detail.validityMode === \"VALID\" || event.detail.validityMode === \"ERROR\";\n\n if (hasReceivedValidOrErrorEvent && this.self.ref.isOpen) {\n this.self.ref.isAnyFieldTouched = true;\n }\n },\n },\n});\n</script>\n","<template>\n <button\n :id=\"id\"\n class=\"button button--margin-bottom-0 button--large\"\n type=\"button\"\n v-bind=\"$attrs\"\n :aria-expanded=\"isOpen ? 'true' : 'false'\"\n data-form-step-button\n >\n <template v-if=\"isOpen\">\n <f-icon name=\"success\" class=\"button__icon\" />\n {{ $t(\"fkui.form-step-button.close\", \"OK\") }}\n </template>\n <template v-else>\n <f-icon name=\"pen\" class=\"button__icon\" />\n {{\n isAnyFieldTouched\n ? $t(\"fkui.form-step-button.edit\", \"Ändra\")\n : $t(\"fkui.form-step-button.open\", \"Fyll i\")\n }}\n </template>\n <span class=\"sr-only\">{{ additionalScreenreaderText }}</span>\n </button>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from \"vue\";\nimport { ElementIdService } from \"@fkui/logic\";\nimport { FIcon } from \"../FIcon\";\nimport { TranslationMixin } from \"../../plugins\";\n\n/**\n * @deprecated `<f-form-step-button>` is deprecated.\n * See migration guide: https://forsakringskassan.github.io/latest/components/fform.html\n */\nexport default defineComponent({\n name: \"FFormStepButton\",\n components: { FIcon },\n mixins: [TranslationMixin],\n inheritAttrs: false,\n model: {\n prop: \"sr-only\",\n },\n props: {\n /**\n * If the id is not set a random value will be generated.\n */\n id: {\n type: String,\n required: false,\n default: () => ElementIdService.generateElementId(),\n },\n isOpen: Boolean,\n isAnyFieldTouched: Boolean,\n additionalScreenreaderText: {\n type: String,\n required: false,\n default: \"\",\n },\n },\n});\n</script>\n","<template>\n <div class=\"card card--default\">\n <div v-if=\"hasHeaderSlot\" class=\"card__header\">\n <!--@slot Slot for the title. -->\n <slot name=\"header\" v-bind=\"{ headingSlotClass: headingClass }\"></slot>\n </div>\n <div class=\"card__content\">\n <!--@slot Slot for the main content, e.g. paragraphs, input fields, etc. -->\n <slot name=\"default\"></slot>\n </div>\n <div v-if=\"hasFooterSlot\" class=\"card__footer\">\n <!--@slot Slot the footer content, i.e. buttons. -->\n <slot name=\"footer\"></slot>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from \"vue\";\nimport { hasSlot } from \"../../utils\";\n\n/**\n * Level: Beta\n */\nexport default defineComponent({\n name: \"FCard\",\n data() {\n return {\n headingClass: [\"card__header-label\"],\n };\n },\n computed: {\n hasHeaderSlot(): boolean {\n return hasSlot(this, \"header\");\n },\n hasFooterSlot(): boolean {\n return hasSlot(this, \"footer\");\n },\n },\n});\n</script>\n","<template>\n <div class=\"layout-application-template\">\n <header v-if=\"showHeader || showTopNavigation\" ref=\"header\" class=\"layout-application-template__header\">\n <!--\n@slot Slot for displaying the header.\n -->\n <slot v-if=\"showHeader\" name=\"header\"></slot>\n <nav v-if=\"showTopNavigation\">\n <!--\n@slot Slot for displaying top navigation.\n -->\n <slot name=\"top-navigation\"></slot>\n </nav>\n </header>\n <main ref=\"primary-content\" class=\"layout-application-template__main\">\n <!--\n@slot Slot for displaying the primary content.\n -->\n <slot name=\"default\"></slot>\n <footer v-if=\"showFooter\" class=\"layout-application-template__footer\">\n <!--\n@slot Slot for displaying the footer.\n -->\n <slot name=\"footer\"></slot>\n </footer>\n </main>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from \"vue\";\nimport { isSet } from \"@fkui/logic\";\n\nexport default defineComponent({\n name: \"FLayoutApplicationTemplate\",\n computed: {\n showHeader(): boolean {\n return this.hasSlot(\"header\");\n },\n showTopNavigation(): boolean {\n return this.hasSlot(\"top-navigation\");\n },\n showFooter(): boolean {\n return this.hasSlot(\"footer\");\n },\n },\n mounted() {\n document.body.classList.add(\"layout-application-template__body\");\n },\n beforeUnmount() {\n document.body.classList.remove(\"layout-application-template__body\");\n },\n methods: {\n hasSlot(name: string): boolean {\n return isSet(this.$slots[name]);\n },\n },\n});\n</script>\n","/**\n * @internal\n */\nexport function getGridClasses(\n element: { offsetWidth: number } | null,\n): Record<string, boolean>;\nexport function getGridClasses(width: number): Record<string, boolean>;\nexport function getGridClasses(\n target: { offsetWidth: number } | number | null,\n): Record<string, boolean> {\n if (target === null) {\n return {};\n }\n const width = typeof target === \"number\" ? target : target.offsetWidth;\n return {\n \"grid--force\": true,\n \"grid--force-sm\": true,\n \"grid--force-md\": width >= 640,\n \"grid--force-lg\": width >= 1024,\n \"grid--force-xl\": width >= 1280,\n };\n}\n","import {\n type Ref,\n onMounted,\n onUnmounted,\n ref,\n toValue,\n watchEffect,\n} from \"vue\";\nimport { getGridClasses } from \"./get-grid-classes\";\n\n/**\n * @public\n */\nexport interface PanelLayoutOptions {\n initialWidth?: string | Ref<string>;\n minWidth?: string | Ref<string>;\n maxWidth?: number | Ref<number>;\n grow: \"left\" | \"right\";\n}\n\n/**\n * @public\n */\nexport interface PanelLayoutComposable {\n readonly panelWidth: Ref<number>;\n readonly leftPrimaryClasses: Ref<Record<string, boolean>>;\n readonly rightPrimaryClasses: Ref<Record<string, boolean>>;\n onBorderMouseDown(event: MouseEvent): void;\n updatePrimaryGrid(): void;\n gridClasses(): Record<string, boolean>;\n}\n\nexport function useLayoutPanel(\n options: PanelLayoutOptions,\n): PanelLayoutComposable {\n const growToRight = options.grow === \"right\";\n let borderDrag = false;\n let dragStart = 0;\n let dragStartWidth = 0;\n let preferredWidth = -1;\n let minWidth = 150;\n let maxWidth = 0.5;\n\n const panelWidth = ref(0);\n const leftPrimaryClasses = ref({}) as Ref<Record<string, boolean>>;\n const rightPrimaryClasses = ref({}) as Ref<Record<string, boolean>>;\n\n function updateOptions(): void {\n panelWidth.value = parseInt(toValue(options.initialWidth ?? \"0\"), 10);\n minWidth = parseInt(toValue(options.minWidth ?? \"150\"), 10);\n maxWidth = toValue(options.maxWidth ?? 0.5);\n }\n\n function disableEvent(event: Event): void {\n event.preventDefault();\n }\n\n function onMouseUp(): void {\n document.body.style.cursor = \"\";\n borderDrag = false;\n window.removeEventListener(\"selectstart\", disableEvent);\n }\n\n function onMouseMove(event: MouseEvent): void {\n if (borderDrag) {\n const growDirection = growToRight ? 1 : -1;\n preferredWidth =\n dragStartWidth + (event.screenX - dragStart) * growDirection;\n limitWidth();\n }\n }\n\n function onBorderMouseDown(event: MouseEvent): void {\n document.body.style.cursor = \"w-resize\";\n borderDrag = true;\n dragStart = event.screenX;\n dragStartWidth = panelWidth.value;\n window.addEventListener(\"selectstart\", disableEvent);\n const selection = window.getSelection();\n if (selection) {\n selection.removeAllRanges();\n }\n }\n\n function limitWidth(): void {\n if (preferredWidth === -1) {\n preferredWidth = panelWidth.value;\n }\n let newWidth = preferredWidth;\n newWidth = Math.max(newWidth, minWidth);\n newWidth = Math.min(newWidth, window.innerWidth * maxWidth);\n panelWidth.value = newWidth;\n updatePrimaryGrid();\n }\n\n function updatePrimaryGrid(): void {\n const leftPrimaryElement = document.getElementById(\n \"layout-side-navigation__primary-content\",\n );\n const rightPrimaryElement = document.getElementById(\n \"layout-secondary__primary\",\n );\n leftPrimaryClasses.value = getGridClasses(leftPrimaryElement);\n rightPrimaryClasses.value = getGridClasses(rightPrimaryElement);\n }\n\n function gridClasses(): Record<string, boolean> {\n updatePrimaryGrid();\n return getGridClasses(preferredWidth);\n }\n\n onMounted(() => {\n window.addEventListener(\"mouseup\", onMouseUp);\n window.addEventListener(\"mousemove\", onMouseMove);\n window.addEventListener(\"resize\", limitWidth);\n });\n\n onUnmounted(() => {\n window.removeEventListener(\"mouseup\", onMouseUp);\n window.removeEventListener(\"mousemove\", onMouseMove);\n window.removeEventListener(\"resize\", limitWidth);\n });\n\n watchEffect(() => {\n updateOptions();\n });\n\n return {\n panelWidth,\n\n /* methods */\n onBorderMouseDown,\n updatePrimaryGrid,\n\n /* class getters */\n gridClasses,\n leftPrimaryClasses,\n rightPrimaryClasses,\n };\n}\n","<template>\n <div class=\"layout-navigation\">\n <!-- [html-validate-disable-next no-inline-style] -->\n <nav\n id=\"layout-navigation__navigation\"\n class=\"layout-navigation__navigation\"\n :style=\"navigationStyle\"\n :aria-expanded=\"isOpen\"\n >\n <div class=\"layout-navigation__navigation__inner\">\n <template v-if=\"isOpen\">\n <!-- [html-validate-disable-next no-inline-style] -->\n <div class=\"layout-navigation__navigation__inner__title\" :style=\"contentStyle\">\n <!-- @slot Slot for heading -->\n <slot name=\"heading\"></slot>\n <button\n ref=\"close-button\"\n class=\"button button--tertiary button--small button--tertiary--black\"\n type=\"button\"\n @click=\"toggleSideNavigation\"\n >\n <span class=\"sr-only\">Stäng navigationspanelen</span>\n <f-icon class=\"button__icon\" name=\"chevrons-left\" />\n </button>\n </div>\n <div>\n <hr />\n </div>\n <!-- [html-validate-disable-next no-inline-style] -->\n <div\n class=\"layout-navigation__navigation__inner__content scroll-target\"\n :class=\"gridClasses\"\n :style=\"contentStyle\"\n >\n <!--\n@slot Slot for displaying content in the navigation-panel\n -->\n <slot name=\"content\"></slot>\n </div>\n </template>\n <div v-if=\"!isOpen\" class=\"layout-navigation__navigation__inner--minimized\">\n <button\n ref=\"open-button\"\n class=\"button button--tertiary button--tertiary--black\"\n type=\"button\"\n @click=\"toggleSideNavigation\"\n >\n <span class=\"sr-only\">Öppna navigationspanelen</span>\n <f-icon class=\"button__icon\" name=\"bars\" />\n </button>\n </div>\n </div>\n <div v-if=\"isOpen\" class=\"layout-navigation__navigation__border\" @mousedown=\"onBorderMouseDown\">\n <div class=\"layout-navigation__navigation__border__dot\"></div>\n <div class=\"layout-navigation__navigation__border__dot\"></div>\n <div class=\"layout-navigation__navigation__border__dot\"></div>\n </div>\n </nav>\n <!-- [html-validate-disable-next no-inline-style] -->\n <div\n id=\"layout-navigation__primary\"\n class=\"layout-navigation__primary\"\n :class=\"leftPrimaryClasses\"\n :style=\"primaryStyle\"\n >\n <!--\n@slot Slot for displaying the primary content.\n -->\n <slot name=\"default\"></slot>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, toRefs } from \"vue\";\nimport { focus } from \"@fkui/logic\";\nimport { getElementFromVueRef } from \"../../utils\";\nimport { FIcon } from \"../FIcon\";\nimport { useLayoutPanel } from \"./FLayoutLeftPanelMixin\";\n\nexport default defineComponent({\n name: \"FLayoutLeftPanel\",\n components: {\n FIcon,\n },\n props: {\n /**\n * The default width for the panel in pixels\n */\n initialWidth: {\n type: String,\n default: \"320\",\n validator(value: string): boolean {\n const parsed = parseInt(value, 10);\n return !isNaN(parsed);\n },\n },\n },\n setup(props) {\n const { initialWidth } = toRefs(props);\n return useLayoutPanel({\n initialWidth: initialWidth,\n minWidth: \"150\" /* px */,\n maxWidth: 0.5 /* ratio [1..0] */,\n grow: \"right\",\n });\n },\n data() {\n return {\n isOpen: true,\n offsetTop: 0,\n };\n },\n computed: {\n navigationStyle(): Record<string, string> {\n if (this.isOpen) {\n return { width: `${this.panelWidth}px`, top: `${this.offsetTop}px` };\n } else {\n return { top: `${this.offsetTop}px` };\n }\n },\n primaryStyle(): Record<string, string> {\n if (this.isOpen) {\n return { \"margin-left\": `${this.panelWidth}px` };\n } else {\n return { \"margin-left\": `3.5rem` };\n }\n },\n // This is to make word-wrap work in IE11\n contentStyle(): Record<string, string> {\n return { \"max-width\": `${this.panelWidth - 35}px` };\n },\n },\n mounted(): void {\n const headers = document.getElementsByClassName(\"layout-application-template__header\");\n const header = headers.item(0) as HTMLElement;\n if (header) {\n this.offsetTop = header.offsetHeight;\n }\n },\n methods: {\n toggleSideNavigation(): void {\n this.isOpen = !this.isOpen;\n window.setTimeout(() => {\n this.updatePrimaryGrid();\n\n const ref = this.isOpen ? \"close-button\" : \"open-button\";\n const element = getElementFromVueRef(this.$refs[ref]);\n focus(element);\n }, 0);\n },\n },\n});\n</script>\n","import { EventBus } from \"../../../utils/event-bus\";\n\n/**\n * @public\n */\nexport type FLayoutRightPanelContentEvent = \"close\" | \"open-dialog\" | \"open\";\n\n/**\n * @public\n */\nexport interface FLayoutRightPanelInteface {\n open(): void;\n openDialog(title: string): void;\n close(): void;\n on(event: FLayoutRightPanelContentEvent, callback: () => void): void;\n off(event: FLayoutRightPanelContentEvent, callback: () => void): void;\n}\n\n/**\n * This service used to open and close the secondary panel.\n * The service has on/off methods to listen to these events\n * that is used internally by the layout components.\n *\n * @internal\n */\nclass FRightPanelServiceImpl implements FLayoutRightPanelInteface {\n private focusedElementBeforeOpenining: Element | null = null;\n\n public open(): void {\n this.focusedElementBeforeOpenining = window.document.activeElement;\n this.emit(\"open\");\n }\n\n public openDialog(title: string): void {\n this.focusedElementBeforeOpenining = window.document.activeElement;\n this.emit(\"open-dialog\", title);\n }\n\n public close(): void {\n this.emit(\"close\");\n if (this.focusedElementBeforeOpenining) {\n (this.focusedElementBeforeOpenining as HTMLElement).focus();\n }\n }\n\n public on(\n event: FLayoutRightPanelContentEvent,\n callback: () => void,\n ): void {\n EventBus.$on(`application-layout:${event}`, callback);\n }\n\n public off(\n event: FLayoutRightPanelContentEvent,\n callback: () => void,\n ): void {\n EventBus.$off(`application-layout:${event}`, callback);\n }\n\n private emit(event: FLayoutRightPanelContentEvent, arg?: unknown): void {\n EventBus.$emit(`application-layout:${event}`, arg);\n }\n}\n\n/**\n * @public\n */\nexport const FLayoutRightPanelService: FLayoutRightPanelInteface =\n new FRightPanelServiceImpl();\n","<template>\n <div class=\"layout-secondary\">\n <!-- [html-validate-disable-next no-inline-style] -->\n <div\n id=\"layout-secondary__primary\"\n class=\"layout-secondary__primary\"\n :class=\"rightPrimaryClasses\"\n :style=\"primaryStyle\"\n >\n <!--\n@slot Slot for displaying the primary content.\n -->\n <slot name=\"default\"></slot>\n </div>\n <!-- [html-validate-disable-next no-inline-style] -->\n <aside v-if=\"isOpen\" :style=\"secondaryStyle\" class=\"layout-secondary__secondary\">\n <div class=\"layout-secondary__secondary__border\" @mousedown=\"onBorderMouseDown\">\n <div class=\"layout-secondary__secondary__border__dot\"></div>\n <div class=\"layout-secondary__secondary__border__dot\"></div>\n <div class=\"layout-secondary__secondary__border__dot\"></div>\n </div>\n <div class=\"layout-secondary__secondary__inner\">\n <!-- [html-validate-disable-next no-inline-style] -->\n <div ref=\"title\" class=\"layout-secondary__secondary__inner__title\" :style=\"contentStyle\">\n <!-- @slot Slot for heading -->\n <slot name=\"heading\"></slot>\n </div>\n <div>\n <hr aria-hidden=\"true\" />\n </div>\n <!-- [html-validate-disable-next no-inline-style] -->\n <div\n class=\"layout-secondary__secondary__inner__content scroll-target\"\n :class=\"gridClasses\"\n :style=\"contentStyle\"\n >\n <!--\n@slot Slot for displaying content in the secondary-panel\n -->\n <slot name=\"content\"></slot>\n <button\n class=\"button button--tertiary button--small button--tertiary--black layout-secondary__secondary__inner__close\"\n type=\"button\"\n @click=\"onClickCloseSecondary\"\n >\n <span class=\"sr-only\">Stäng sekundärpanelen</span>\n <f-icon class=\"button__icon\" name=\"close\" />\n </button>\n </div>\n </div>\n </aside>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, toRefs } from \"vue\";\nimport { focus } from \"@fkui/logic\";\nimport { getElementFromVueRef } from \"../../utils\";\nimport { FIcon } from \"../FIcon\";\nimport { useLayoutPanel } from \"../FLayoutLeftPanel\";\nimport { FLayoutRightPanelService } from \"./services\";\n\nexport default defineComponent({\n name: \"FLayoutRightPanel\",\n components: {\n FIcon,\n },\n props: {\n /**\n * The default width for the panel in pixels\n */\n initialWidth: {\n type: String,\n default: \"320\",\n },\n /**\n * The default maximun width for the panel in percentage where 1 is 100% and 0 is 0%\n */\n maxWidth: {\n type: Number,\n default: 0.5,\n validator(value: unknown): boolean {\n return typeof value === \"number\" && value > 0 && value <= 1;\n },\n },\n /**\n * The default minium width for the panel in pixels\n */\n minWidth: {\n type: String,\n default: \"150\",\n },\n },\n setup(props) {\n const { initialWidth, minWidth, maxWidth } = toRefs(props);\n return useLayoutPanel({\n initialWidth,\n minWidth,\n maxWidth,\n grow: \"left\",\n });\n },\n data() {\n return {\n isAbsolutePositioned: false,\n isOpen: false,\n offsetTop: 0,\n };\n },\n computed: {\n secondaryStyle(): Record<string, string> {\n if (this.isOpen) {\n return { width: `${this.panelWidth}px`, top: `${this.offsetTop}px` };\n }\n return { top: `${this.offsetTop}px` };\n },\n primaryStyle(): Record<string, string> {\n if (this.isOpen && !this.isAbsolutePositioned) {\n return { \"margin-right\": `${this.panelWidth}px` };\n }\n return {};\n },\n // This is to make word-wrap work in IE11\n contentStyle(): Record<string, string> {\n return { \"max-width\": `${this.panelWidth - 35}px` };\n },\n },\n mounted(): void {\n const headers = document.getElementsByClassName(\"layout-application-template__header\");\n const header = headers.item(0) as HTMLElement;\n if (header) {\n this.offsetTop = header.offsetHeight;\n }\n FLayoutRightPanelService.on(\"open\", this.onOpenSecondary);\n FLayoutRightPanelService.on(\"close\", this.onCloseSecondary);\n window.addEventListener(\"resize\", this.onResize);\n this.onResize();\n },\n unmounted(): void {\n FLayoutRightPanelService.off(\"open\", this.onOpenSecondary);\n FLayoutRightPanelService.off(\"close\", this.onCloseSecondary);\n },\n methods: {\n async onOpenSecondary(): Promise<void> {\n this.isOpen = true;\n await this.$nextTick();\n const element = getElementFromVueRef(this.$refs[\"title\"]);\n const heading = element.querySelector(\"h1, h2, h3, h4, h5, h6\");\n focus(heading, { force: true });\n },\n onCloseSecondary(): void {\n this.isOpen = false;\n },\n openSecondary(): void {\n FLayoutRightPanelService.open();\n },\n onClickCloseSecondary(): void {\n FLayoutRightPanelService.close();\n },\n onResize(): void {\n this.isAbsolutePositioned = window.innerWidth < 1280;\n },\n },\n});\n</script>\n","<template>\n <ul v-if=\"!selectable\" class=\"list\">\n <li v-for=\"item in items\" :key=\"itemKey(item)\" class=\"list__item\">\n <div ref=\"listItemPanes\" class=\"list__item__itempane\">\n <!--\n@slot Slot for displaying an item.\n\nThe item object is available through `v-slot=\"{ <propertyName> }\"`, e.g.\n`v-slot=\"{ item }\"`.\n\nThe following properties are available:\n\n* `item: ListItem;` The object to be visualized.\"`.\n -->\n <slot v-bind=\"{ item }\" />\n </div>\n </li>\n <li v-if=\"isEmpty\" class=\"list__item\">\n <div class=\"list__item__itempane\">\n <!--\n@slot Slot for displaying a message when list is empty.\nDefault text is 'Listan är tom' (key fkui.list.empty).\n -->\n <slot name=\"empty\">\n <em>{{ $t(\"fkui.list.empty\", \"Listan är tom\") }}</em>\n </slot>\n </div>\n </li>\n </ul>\n <ul v-else ref=\"ulElement\" class=\"list list--hover\" :tabindex=\"checkbox ? 0 : undefined\">\n <li\n v-for=\"(item, index) in items\"\n :id=\"getItemId(item)\"\n :key=\"itemKey(item)\"\n :aria-labelledby=\"getItemId(item)\"\n :class=\"itemClasses(item)\"\n class=\"list__item\"\n :tabindex=\"checkbox ? 0 : undefined\"\n @keydown.self=\"onItemKeyDown($event, item)\"\n @focus.self=\"onItemFocus\"\n @blur.self=\"onItemBlur\"\n >\n <div v-if=\"checkbox\" class=\"list__item__selectpane\" @click.self=\"onSelect(item)\">\n <div class=\"list__item__selectpane__input\">\n <f-checkbox-field :value=\"true\" :model-value=\"isSelected(item)\" @click.self=\"onSelect(item)\">\n <span :id=\"getAriaLabelledbyId(item)\" class=\"sr-only\">\n <!--\n@slot Slot for screen reader text when checkbox (to selecte item) get focus.\n\nThe item object is available through `v-slot=\"{ <propertyName> }\"`, e.g.\n`v-slot=\"{ item }\"`.\n\nThe following properties are available:\n\n* `item: ListItem;` The object to be screen read.\"`.\n -->\n <slot name=\"screenreader\" v-bind=\"{ item }\" />\n </span>\n </f-checkbox-field>\n </div>\n </div>\n <component\n :is=\"checkbox ? 'div' : 'a'\"\n ref=\"listItemPanes\"\n :href=\"!checkbox ? 'javascript:' : undefined\"\n class=\"list__item__itempane\"\n @click=\"onItemClick($event, index, item)\"\n >\n <slot v-bind=\"{ item }\" />\n </component>\n </li>\n <li v-if=\"isEmpty\" class=\"list__item\">\n <div class=\"list__item__itempane\">\n <slot name=\"empty\">\n <em>{{ $t(\"fkui.list.empty\", \"Listan är tom\") }}</em>\n </slot>\n </div>\n </li>\n </ul>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, type PropType } from \"vue\";\nimport { ElementIdService } from \"@fkui/logic\";\nimport { FCheckboxField } from \"../FCheckboxField\";\nimport { type ListItem, type ListArray } from \"../../types\";\nimport { itemEquals, includeItem, handleKeyboardFocusNavigation, getElementFromVueRef } from \"../../utils\";\nimport { TranslationMixin } from \"../../plugins\";\nimport { ActivateItemInjected, ActivateItemInterface } from \"../FCrudDataset\";\n\ninterface FListData {\n selectedItems: ListArray;\n activeItem: ListItem | undefined;\n}\n\nexport default defineComponent({\n name: \"FList\",\n components: { FCheckboxField },\n mixins: [TranslationMixin],\n props: {\n /**\n * The items to be listed.\n * The items will be listed in the given array order.\n */\n items: {\n type: Array as PropType<ListArray>,\n required: true,\n },\n /**\n * Unique attribute in items.\n * V-for directive in vue requires a unique key to\n * be able to optimize reuse of components.\n */\n keyAttribute: {\n type: String,\n required: true,\n },\n /**\n * If `true` the list will be selectable.\n * @see 'select' and 'unselect' events.\n */\n selectable: {\n type: Boolean,\n default: false,\n },\n /**\n * Only applies if selectable:true\n * Disable checkbox in interactive list and create a <a>-wrapper for each item, making them clickable\n * @see 'select' and 'unselect' events.\n */\n checkbox: {\n type: Boolean,\n default: true,\n },\n /**\n * V-model will bind to value containing selected items.\n */\n modelValue: {\n type: Array as PropType<ListArray | undefined>,\n required: false,\n default: () => undefined,\n },\n /**\n * V-model will bind to value containing the current active item.\n */\n active: {\n type: Object as PropType<ListItem | undefined>,\n required: false,\n default: () => undefined,\n },\n /**\n * Unique item id that will be used instead of the automatically generated one.\n */\n elementId: {\n type: String,\n default: () => ElementIdService.generateElementId(),\n },\n },\n emits: [\"change\", \"click\", \"update\", \"unselect\", \"update:modelValue\", \"select\", \"update:active\"],\n setup(): ActivateItemInterface {\n return ActivateItemInjected();\n },\n data(): FListData {\n return {\n selectedItems: [],\n activeItem: undefined,\n };\n },\n computed: {\n isEmpty(): boolean {\n return this.items.length === 0;\n },\n ariaActiveDescendant(): string | undefined {\n return this.activeItem ? this.getItemId(this.activeItem) : undefined;\n },\n },\n watch: {\n items: {\n deep: true,\n immediate: true,\n handler: function () {\n this.updateSelectedItemsFromVModel();\n },\n },\n modelValue: {\n deep: true,\n immediate: true,\n handler: function () {\n this.updateSelectedItemsFromVModel();\n },\n },\n active: {\n immediate: true,\n handler: function () {\n this.updateActiveItemFromVModel();\n },\n },\n },\n mounted() {\n if (this.selectable && this.checkbox) {\n if (!this.$slots[\"screenreader\"]) {\n throw Error('Slot \"screenreader\" is required when having \"selectable\" & \"checkbox\" option.');\n }\n this.registerCallbackAfterItemAdd(this.callbackAfterItemAdd);\n this.registerCallbackBeforeItemDelete(this.callbackBeforeItemDelete);\n }\n },\n methods: {\n getLiElements(): Element[] {\n const ulElement = getElementFromVueRef(this.$refs[\"ulElement\"]);\n return Array.from(ulElement.children);\n },\n itemKey(item: ListItem): string {\n const key = item[this.keyAttribute];\n if (typeof key === \"undefined\") {\n throw new Error(`Key attribute [${this.keyAttribute}]' is missing in item`);\n }\n return String(key);\n },\n isSelected(item: ListItem): boolean {\n return includeItem(item, this.selectedItems, this.keyAttribute);\n },\n itemClasses(item: ListItem): Record<string, boolean> {\n return {\n \"list__item--selected\": this.isSelected(item),\n \"list__item--active\": this.isActive(item),\n };\n },\n getAriaSelected(item: ListItem): string {\n return String(itemEquals(this.activeItem, item, this.keyAttribute));\n },\n onSelect(item: ListItem): void {\n if (includeItem(item, this.selectedItems, this.keyAttribute)) {\n this.selectedItems = this.selectedItems.filter((i) => !itemEquals(i, item, this.keyAttribute));\n /**\n * Emitted when item is unselected.\n *\n * @event unselect\n * @param item\n * @type {ListItem}\n * @param selectedItems\n * @type {ListArray}\n *\n */\n this.$emit(\"unselect\", item);\n } else {\n this.selectedItems.push(item);\n /**\n * Emitted when item is selected.\n *\n * @event select\n * @param item\n * @type {ListItem}\n * @param selectedItems\n * @type {ListArray}\n */\n this.$emit(\"select\", item);\n }\n\n this.updateVModelWithSelectedItems();\n this.$forceUpdate();\n },\n setActiveItem(item: ListItem): void {\n /**\n * Emitted when item is activated, i.e. clicked\n *\n * @event click\n * @param item\n * @type {ListItem}\n */\n this.$emit(\"click\", item);\n\n if (!itemEquals(item, this.activeItem, this.keyAttribute)) {\n /**\n * Emitted when item is activated, i.e. clicked\n *\n * @event change\n * @param item\n * @type {ListItem}\n */\n this.$emit(\"change\", item);\n this.activeItem = item;\n /**\n * V-model active event.\n *\n * @event update:active\n * @param activeItem\n * @type {ListItem}\n */\n this.$emit(\"update:active\", this.activeItem);\n }\n },\n onItemClick(event: Event, index: number, item: ListItem): void {\n this.setActiveItem(item);\n },\n updateVModelWithSelectedItems(): void {\n if (this.modelValue) {\n /**\n * V-model event to update value property.\n * @event update:modelValue\n */\n this.$emit(\"update:modelValue\", this.selectedItems);\n\n /**\n * Vue2 v-model event to update value properity.\n * @deprecated\n * @event update\n */\n this.$emit(\"update\", this.selectedItems);\n }\n },\n updateSelectedItemsFromVModel(): void {\n if (Array.isArray(this.modelValue)) {\n // Remove old selected items that may not exists in items.\n this.selectedItems = this.modelValue.filter((item: ListItem) => {\n return includeItem(item, this.items, this.keyAttribute);\n });\n } else {\n this.selectedItems = [];\n }\n },\n updateActiveItemFromVModel(): void {\n if (this.active && !itemEquals(this.active, this.activeItem, this.keyAttribute)) {\n this.activeItem = this.active;\n }\n },\n onItemKeyDown(event: KeyboardEvent, item: ListItem): void {\n switch (event.key) {\n case \"Up\":\n case \"Down\":\n case \"ArrowUp\":\n case \"ArrowDown\":\n event.preventDefault();\n handleKeyboardFocusNavigation(event.key, event.target as HTMLElement, this.getLiElements());\n break;\n\n case \" \":\n case \"Spacebar\":\n event.preventDefault();\n this.setActiveItem(item);\n break;\n }\n },\n // Unique id to connect aria-labelledby with readonly label\n getAriaLabelledbyId(item: ListItem): string {\n return `${this.elementId}_${this.itemKey(item)}`;\n },\n // Unique id to connect aria-labelledby with readonly label\n getItemId(item: ListItem): string {\n return `${this.elementId}_item_${this.itemKey(item)}`;\n },\n // Focus effect is done with box-shadow.\n // By setting position to relative the\n // item and box-shadow is drawn with a higher z-index,\n // thus no focus border under other list items.\n onItemFocus(event: FocusEvent): void {\n if (event && event.target) {\n (event.target as HTMLElement).style.position = \"relative\";\n }\n },\n onItemBlur(event: FocusEvent): void {\n if (event && event.target) {\n (event.target as HTMLElement).style.position = \"static\";\n }\n },\n callbackAfterItemAdd(item: ListItem): void {\n this.setActiveItem(item);\n },\n callbackBeforeItemDelete(item: ListItem): void {\n if (this.items.length === 0) {\n return;\n }\n let targetIndex = this.items.indexOf(item) - 1;\n if (targetIndex < 0 && this.items.length > 1) {\n targetIndex = 1;\n } else if (targetIndex < 0) {\n targetIndex = 0;\n }\n this.setActiveItem(this.items[targetIndex]);\n if (this.getLiElements()[targetIndex]) {\n (this.getLiElements()[targetIndex] as HTMLElement).focus();\n }\n },\n isActive(item: ListItem): boolean {\n return this.checkbox && itemEquals(this.activeItem, item, this.keyAttribute);\n },\n },\n});\n</script>\n","<template>\n <teleport :to=\"teleportTarget\" :disabled=\"teleportDisabled\">\n <div v-show=\"show\" v-bind=\"$attrs\" class=\"loader\" :class=\"classes\">\n <div class=\"loader__backdrop\">\n <div class=\"loader__wrapper\">\n <div class=\"loader__spinner-1 loader__spinner\">\n <div class=\"loader__spinner-1-circle1 loader__circle loader__circle--1\"></div>\n <div class=\"loader__spinner-1-circle2 loader__circle loader__circle--2\"></div>\n <div class=\"loader__spinner-1-circle3 loader__circle loader__circle--3\"></div>\n <div class=\"loader__spinner-1-circle4 loader__circle loader__circle--4\"></div>\n </div>\n <div class=\"loader__spinner-2 loader__spinner\">\n <div class=\"loader__spinner-2-circle1 loader__circle loader__circle--1\"></div>\n <div class=\"loader__spinner-2-circle2 loader__circle loader__circle--2\"></div>\n <div class=\"loader__spinner-2-circle3 loader__circle loader__circle--3\"></div>\n <div class=\"loader__spinner-2-circle4 loader__circle loader__circle--4\"></div>\n </div>\n <div class=\"loader__spinner-3 loader__spinner\">\n <div class=\"loader__spinner-3-circle1 loader__circle loader__circle--1\"></div>\n <div class=\"loader__spinner-3-circle2 loader__circle loader__circle--2\"></div>\n <div class=\"loader__spinner-3-circle3 loader__circle loader__circle--3\"></div>\n <div class=\"loader__spinner-3-circle4 loader__circle loader__circle--4\"></div>\n </div>\n </div>\n <div ref=\"loader-text\" class=\"loader__wait-text\" :class=\"{ 'loader--delay': delay }\" tabindex=\"-1\">\n <span role=\"alert\">\n <!-- @slot Slot for define a custom loading text -->\n <slot>{{ $t(\"fkui.loader.wait.text\", defaultLoadingText) }}</slot>\n </span>\n </div>\n </div>\n </div>\n </teleport>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from \"vue\";\nimport { addFocusListener, findTabbableElements, removeFocusListener, restoreFocus, saveFocus } from \"@fkui/logic\";\nimport { TranslationMixin } from \"../../plugins\";\nimport { config } from \"../../config\";\nimport { focus } from \"../../utils\";\n\nexport default defineComponent({\n name: \"FLoader\",\n mixins: [TranslationMixin],\n inheritAttrs: false,\n props: {\n /* Aria-live must always be visible, hence v-if on component level is not possible, therefore we use show-prop */\n /**\n * Determine if the loader is visible or not\n */\n show: {\n type: Boolean,\n required: true,\n default: false,\n },\n /**\n * If loader should be displayed as a fullscreen overlay.\n */\n overlay: {\n type: Boolean,\n required: false,\n default: false,\n },\n /**\n * Delay the loader icon and text by 1 second\n */\n delay: {\n type: Boolean,\n required: false,\n default: false,\n },\n /**\n * Language used for determining fallback value for the loading text. Useful if loader is displayed before\n * text keys have been downloaded\n */\n language: {\n type: String,\n required: false,\n default: \"sv\",\n },\n },\n data() {\n return {\n oldFocus: undefined as unknown as HTMLElement,\n };\n },\n computed: {\n defaultLoadingText(): string {\n return this.language === \"en\" ? \"Please wait\" : \"Vänligen vänta\";\n },\n classes(): Record<string, boolean> {\n return {\n \"loader--overlay\": this.overlay,\n \"loader--delay\": this.delay,\n };\n },\n teleportTarget() {\n return config.teleportTarget;\n },\n teleportDisabled() {\n return !this.overlay;\n },\n },\n watch: {\n show(show) {\n if (show) {\n this.openLoader();\n } else {\n this.closeLoader();\n }\n },\n },\n mounted() {\n if (this.show) {\n this.openLoader();\n }\n },\n methods: {\n async listener(): Promise<void> {\n await this.$nextTick();\n focus(this.$refs[\"loader-text\"]);\n },\n async openLoader() {\n if (this.overlay) {\n saveFocus(document);\n this.listener();\n addFocusListener(findTabbableElements(document), this.listener);\n }\n },\n closeLoader() {\n if (this.overlay) {\n removeFocusListener(findTabbableElements(document), this.listener);\n restoreFocus();\n }\n },\n },\n});\n</script>\n","import { MenuAction } from \"../../types\";\nimport { IMenuItem } from \"../IMenu/imenu-utils\";\n\nexport interface MenuActionTarget {\n readonly currentFocusedItemIndex: number;\n readonly items: IMenuItem[];\n\n setFocusOnItem(index: number): Promise<void>;\n activateItem(index: number): Promise<void>;\n}\n\nexport function getNewItemIndexFromMenuAction(\n action: MenuAction | null,\n index: number,\n n: number,\n): number {\n let newIndex;\n if (n <= 0) {\n return 0;\n }\n switch (action) {\n case MenuAction.MOVE_NEXT:\n newIndex = (index + 1) % n;\n break;\n\n case MenuAction.MOVE_PREV:\n newIndex = (index - 1 + n) % n;\n break;\n\n case MenuAction.MOVE_FIRST:\n newIndex = 0;\n break;\n\n case MenuAction.MOVE_LAST:\n newIndex = Math.max(n - 1, 0);\n break;\n\n default:\n newIndex = index;\n }\n return newIndex;\n}\n\nexport async function doMenuAction(\n action: MenuAction | null,\n target: MenuActionTarget,\n): Promise<void> {\n const itemsLength = target.items.length;\n const currentIndex = target.currentFocusedItemIndex;\n const newFocusedItemIndex = getNewItemIndexFromMenuAction(\n action,\n currentIndex,\n itemsLength,\n );\n switch (action) {\n case MenuAction.MOVE_NEXT:\n case MenuAction.MOVE_PREV:\n case MenuAction.MOVE_FIRST:\n case MenuAction.MOVE_LAST:\n await target.setFocusOnItem(newFocusedItemIndex);\n break;\n case MenuAction.ACTIVATE:\n await target.activateItem(newFocusedItemIndex);\n break;\n }\n}\n","<template>\n <i-popup\n class=\"ipopupmenu\"\n :is-open=\"isOpen\"\n :keyboard-trap=\"false\"\n :anchor=\"anchor\"\n :focus-element=\"focusElement\"\n @close=\"$emit('close')\"\n @keyup=\"onKeyUp\"\n @keydown=\"onKeyDown\"\n >\n <nav class=\"ipopupmenu ipopupmenu--vertical\" :aria-label=\"ariaLabel\">\n <ul role=\"menu\" class=\"ipopupmenu__list\">\n <li\n v-for=\"(item, index) in items\"\n ref=\"items\"\n :key=\"item.key\"\n role=\"presentation\"\n class=\"ipopupmenu__list__item\"\n :class=\"cssClassHighlight(item)\"\n @click=\"onClickItem(item)\"\n >\n <a\n ref=\"anchors\"\n :data-ref-index=\"index\"\n :href=\"item.href\"\n role=\"menuitem\"\n :target=\"item.target\"\n tabindex=\"0\"\n >\n <span v-if=\"isSelected(index)\" class=\"sr-only\">\n <span>{{ selectedMenuItemScreenReaderText }}&nbsp;</span> </span\n >{{ item.label }} <f-icon v-if=\"item.iconRight\" :name=\"item.iconRight\" />\n </a>\n </li>\n </ul>\n </nav>\n </i-popup>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, type PropType } from \"vue\";\nimport { focus } from \"@fkui/logic\";\nimport { FIcon } from \"../../components/FIcon\";\nimport { IPopup } from \"../IPopup\";\nimport { type IMenuItem } from \"../IMenu\";\nimport { actionFromKeyboardEvent, getSortedHTMLElementsFromVueRef } from \"../../utils\";\nimport { doMenuAction } from \"./ipopupmenu-logic\";\n\nconst preventKeys: string[] = [\"Up\", \"Down\", \"ArrowUp\", \"ArrowDown\", \"Home\", \"End\", \" \", \"Spacebar\", \"Enter\"];\n\nexport default defineComponent({\n name: \"IPopupMenu\",\n components: { FIcon, IPopup },\n props: {\n /**\n * Toggle open/closed popup.\n */\n isOpen: {\n type: Boolean,\n required: true,\n },\n /**\n * DOM element to position popup at.\n */\n anchor: {\n type: HTMLElement as PropType<HTMLElement | undefined>,\n default: undefined,\n },\n /**\n * The currently highlighted menu item key\n * @model\n */\n modelValue: {\n type: String,\n required: false,\n default: \"\",\n },\n /**\n * The items to be diplayed in the menu\n */\n items: {\n type: Array as PropType<IMenuItem[]>,\n required: true,\n },\n /**\n * The key of the currently selected focused item\n */\n focusedItemKey: {\n type: String,\n required: false,\n default: \"\",\n },\n /**\n * If true, enable built-in keyboard navigation\n */\n enableKeyboardNavigation: {\n type: Boolean,\n required: false,\n default: false,\n },\n /**\n * Unique accessible name for navigation landmark.\n */\n ariaLabel: {\n type: String,\n required: false,\n default: \"Popupmeny\",\n },\n /**\n * Text for selected item for screen reader\n */\n selectedMenuItemScreenReaderText: {\n type: String,\n required: false,\n default: \"vald nu\",\n },\n },\n emits: [\"close\", \"select\", \"update:modelValue\"],\n data() {\n return {\n currentFocusedItemIndex: 0,\n lastSelectedItem: \"\",\n };\n },\n watch: {\n isOpen: {\n immediate: true,\n async handler(): Promise<void> {\n this.currentFocusedItemIndex = 0;\n this.lastSelectedItem = \"\";\n },\n },\n focusedItemKey: {\n async handler(newVal): Promise<void> {\n if (this.enableKeyboardNavigation) {\n return;\n }\n const index = this.indexOfItemByKey(newVal);\n if (index >= 0) {\n await this.setFocusOnItem(index);\n } else {\n this.setFocusedItemIndex(0);\n }\n },\n },\n modelValue: {\n async handler(newVal): Promise<void> {\n if (this.enableKeyboardNavigation) {\n return;\n }\n const index = this.indexOfItemByKey(newVal);\n if (index >= 0) {\n await this.activateItem(index);\n } else {\n this.setFocusedItemIndex(0);\n }\n },\n },\n },\n methods: {\n isSelected(index: number): boolean {\n return this.items[index].key === this.modelValue;\n },\n focusElement(): HTMLElement | null {\n return null;\n },\n findItemByKey(key: string): IMenuItem | undefined {\n return this.items.find((it) => it.key === key);\n },\n indexOfItemByKey(key: string): number {\n const item = this.findItemByKey(key);\n if (!item) {\n return -1;\n }\n return this.items.indexOf(item);\n },\n async onClickItem(item: IMenuItem, doClick: boolean = false): Promise<void> {\n if (item.key !== this.lastSelectedItem) {\n /**\n * V-model event. Event that is dispatched when an item is selected.\n * @event select\n * @type {string} item key\n */\n this.$emit(\"update:modelValue\", item.key);\n\n /**\n * Vue 2 V-model event. Event that is dispatched when an item is selected.\n * @event select\n * @deprecated\n * @type {string} item key\n */\n this.$emit(\"select\", item.key);\n\n this.lastSelectedItem = item.key;\n }\n /**\n * Event that is dispatched after an item is selected or\n * after pressing tab in the menu\n */\n this.$emit(\"close\");\n if (item.href && doClick) {\n const anchors = getSortedHTMLElementsFromVueRef(this.$refs.anchors);\n anchors[this.currentFocusedItemIndex]?.click();\n }\n },\n cssClassHighlight(item: IMenuItem): string {\n return item.key === this.modelValue ? \"ipopupmenu__list__item--highlight\" : \"\";\n },\n async setFocusOnItem(index: number): Promise<void> {\n this.setFocusedItemIndex(index);\n await this.$nextTick();\n if (this.isOpen) {\n const anchors = getSortedHTMLElementsFromVueRef(this.$refs.anchors);\n if (anchors.length > 0) {\n const itemAnchor = anchors[index];\n focus(itemAnchor, { preventScroll: true });\n }\n }\n },\n async activateItem(index: number): Promise<void> {\n if (index !== this.currentFocusedItemIndex) {\n await this.setFocusOnItem(index);\n }\n await this.onClickItem(this.items[index], true);\n },\n setFocusedItemIndex(index: number): void {\n this.currentFocusedItemIndex = index;\n },\n onKeyUp(event: KeyboardEvent) {\n if (!this.enableKeyboardNavigation) {\n return;\n }\n\n if (preventKeys.includes(event.key)) {\n event.preventDefault();\n }\n },\n async onKeyDown(event: KeyboardEvent) {\n if (!this.enableKeyboardNavigation) {\n return;\n }\n if (!preventKeys.includes(event.key)) {\n return;\n }\n\n const action = actionFromKeyboardEvent(event);\n if (action !== null) {\n event.preventDefault();\n await doMenuAction(action, this);\n }\n },\n },\n});\n</script>\n","export const menuMoreKey = \"MENU_MORE\";\n\n/**\n * @public\n */\nexport interface IMenuItem {\n /**\n * Menu item label text\n */\n label: string;\n /**\n * Menu item key for referencing upon for example item selection\n */\n key: string;\n /**\n * Optional href attribute to use on menu item link\n */\n href?: string;\n /**\n * Optional target attribute on menu item link\n */\n target?: string;\n /**\n * Optional name of an icon to show on the right side of the label\n */\n iconRight?: string;\n /**\n * Optional aria-haspopup attribute\n */\n ariaHasPopup?: boolean;\n /**\n * Optional screen reader text for the item menu \"mer/more\"\n */\n srMenuMoreTextContents?: string;\n srMenuMoreTextSelectedContents?: string;\n}\n\n/**\n * Find the first element to overflow.\n *\n * @internal\n * @returns Element index or -1 if no element overflows.\n */\nexport function findOverflowIndex(\n totalWidth: number,\n elements: Array<{ offsetWidth: number }>,\n): number {\n let sum = 0;\n return elements.findIndex((element) => {\n sum += element.offsetWidth;\n return sum > totalWidth;\n });\n}\n","import { MenuAction } from \"../../types\";\nimport { IMenuItem } from \"./imenu-utils\";\n\nexport interface MenuActionTarget {\n readonly currentFocusedItemIndex: number;\n readonly items: IMenuItem[];\n\n setFocusOnItem(index: number): Promise<void>;\n activateItem(index: number): Promise<void>;\n}\n\nexport function getNewItemIndexFromMenuAction(\n action: MenuAction | null,\n index: number,\n n: number,\n): number {\n let newIndex;\n if (n <= 0) {\n return 0;\n }\n switch (action) {\n case MenuAction.MOVE_NEXT:\n newIndex = (index + 1) % n;\n break;\n\n case MenuAction.MOVE_PREV:\n newIndex = (index - 1 + n) % n;\n break;\n\n case MenuAction.MOVE_FIRST:\n newIndex = 0;\n break;\n\n case MenuAction.MOVE_LAST:\n newIndex = Math.max(n - 1, 0);\n break;\n\n default:\n newIndex = index;\n }\n return newIndex;\n}\n\nexport async function doMenuAction(\n action: MenuAction | null,\n target: MenuActionTarget,\n): Promise<void> {\n const itemsLength = target.items.length;\n const currentIndex = target.currentFocusedItemIndex;\n const newFocusedItemIndex = getNewItemIndexFromMenuAction(\n action,\n currentIndex,\n itemsLength,\n );\n switch (action) {\n case MenuAction.MOVE_NEXT:\n case MenuAction.MOVE_PREV:\n case MenuAction.MOVE_FIRST:\n case MenuAction.MOVE_LAST:\n await target.setFocusOnItem(newFocusedItemIndex);\n break;\n case MenuAction.ACTIVATE:\n await target.activateItem(newFocusedItemIndex);\n break;\n }\n}\n","<template>\n <nav class=\"imenu\" aria-label=\"Navigeringsmeny\" :class=\"cssClasses\" @keyup=\"onKeyUp\" @keydown=\"onKeyDown\">\n <ul class=\"imenu__list\" role=\"menubar\">\n <li\n v-for=\"(item, index) in items\"\n ref=\"items\"\n :key=\"item.key\"\n :data-ref-index=\"index\"\n class=\"imenu__list__item\"\n :class=\"cssClassHighlight(item)\"\n role=\"none\"\n @click=\"onClickItem(item)\"\n >\n <div :class=\"ccsClassHighlightAnchorContainer(item)\" class=\"imenu__list__anchor-container\">\n <a\n ref=\"anchors\"\n :data-ref-index=\"index\"\n tabindex=\"0\"\n :href=\"item.href\"\n :target=\"item.target\"\n class=\"imenu__list__anchor\"\n :class=\"ccsClassHighlightAnchor(item)\"\n role=\"menuitem\"\n :aria-haspopup=\"ariaHasPopup(index)\"\n >\n <span v-if=\"isSelected(index)\" class=\"sr-only\">\n <span>{{ getSelectedMenuItemScreenReaderText(index) }}&nbsp;</span> </span\n >{{ item.label }}<span v-if=\"item.iconRight\" class=\"imenu__list__anchor-span\" />\n <f-icon v-if=\"item.iconRight\" :name=\"item.iconRight\" class=\"imenu__list__anchor-icon-right\" />\n </a>\n </div>\n </li>\n </ul>\n </nav>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, type PropType } from \"vue\";\nimport { debounce, focus } from \"@fkui/logic\";\nimport { FIcon } from \"../../components/FIcon\";\nimport { actionFromKeyboardEvent, getSortedHTMLElementsFromVueRef } from \"../../utils\";\nimport { IMenuItem, findOverflowIndex, menuMoreKey } from \"./imenu-utils\";\nimport { doMenuAction } from \"./imenu-logic\";\n\nconst preventKeys: string[] = [\n \"Tab\",\n \"Up\",\n \"Down\",\n \"Left\",\n \"Right\",\n \"ArrowUp\",\n \"ArrowDown\",\n \"ArrowLeft\",\n \"ArrowRight\",\n \"Home\",\n \"End\",\n \" \",\n \"Spacebar\",\n \"Enter\",\n];\n\nexport default defineComponent({\n name: \"IMenu\",\n components: { FIcon },\n props: {\n /**\n * The currently highlighted menu item key\n * @model\n */\n modelValue: {\n type: String,\n required: false,\n default: \"\",\n },\n /**\n * The items to be diplayed in the menu\n */\n items: {\n type: Array as PropType<IMenuItem[]>,\n required: true,\n },\n /**\n * If true, show the menu vertically\n */\n vertical: {\n type: Boolean,\n required: false,\n default: false,\n },\n /**\n * The key of the currently selected focused item\n */\n focusedItemKey: {\n type: String,\n required: false,\n default: \"\",\n },\n /**\n * If true, enable built-in keyboard navigation\n */\n enableKeyboardNavigation: {\n type: Boolean,\n required: false,\n default: false,\n },\n /**\n * Text for selected item for screen reader\n */\n selectedMenuItemScreenReaderText: {\n type: String,\n required: false,\n default: \"vald nu\",\n },\n /**\n * If true, indicates that the menu \"Mer/More\" has selected items\n */\n hasMenuMoreSelectedItems: {\n type: Boolean,\n required: false,\n default: false,\n },\n },\n emits: [\"overflow\", \"select\", \"update:modelValue\"],\n data() {\n return {\n resizeObserver: undefined as ResizeObserver | undefined,\n currentFocusedItemIndex: 0,\n lastSelectedItem: \"\",\n };\n },\n computed: {\n cssClasses(): Record<string, boolean> {\n return {\n \"imenu--horizontal\": !this.vertical,\n \"imenu--vertical\": this.vertical,\n };\n },\n },\n watch: {\n items: {\n deep: true,\n async handler() {\n await this.$nextTick();\n this.onResize();\n },\n },\n focusedItemKey: {\n async handler(newVal): Promise<void> {\n if (this.enableKeyboardNavigation) {\n return;\n }\n const index = this.indexOfItemByKey(newVal);\n if (index >= 0) {\n await this.setFocusOnItem(index);\n } else {\n this.setFocusedItemIndex(0);\n }\n },\n },\n modelValue: {\n async handler(newVal): Promise<void> {\n if (this.enableKeyboardNavigation) {\n return;\n }\n const index = this.indexOfItemByKey(newVal);\n if (index >= 0) {\n await this.activateItem(index);\n } else {\n this.setFocusedItemIndex(0);\n }\n },\n },\n },\n mounted() {\n this.currentFocusedItemIndex = 0;\n if (!this.vertical) {\n this.resizeObserver = new ResizeObserver(debounce(this.onResize, 100));\n this.resizeObserver.observe(this.$el);\n this.onResize();\n }\n },\n unmounted() {\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n }\n },\n methods: {\n getAnchor(index: number): HTMLElement | undefined {\n return getSortedHTMLElementsFromVueRef(this.$refs.anchors)[index];\n },\n getSelectedMenuItemScreenReaderText(index: number) {\n const menuMoreItem = this.items[index].key === menuMoreKey ? this.items[index] : null;\n if (menuMoreItem) {\n if (this.hasMenuMoreSelectedItems) {\n return menuMoreItem.srMenuMoreTextSelectedContents;\n } else {\n return menuMoreItem.srMenuMoreTextContents;\n }\n }\n return this.selectedMenuItemScreenReaderText;\n },\n isSelected(index: number): boolean {\n return this.items[index].key === this.modelValue;\n },\n ariaHasPopup(index: number): boolean | undefined {\n const item = this.items[index];\n return item?.ariaHasPopup ? true : undefined;\n },\n findItemByKey(key: string): IMenuItem | undefined {\n return this.items.find((it) => it.key === key);\n },\n indexOfItemByKey(key: string): number {\n const item = this.findItemByKey(key);\n if (!item) {\n return -1;\n }\n return this.items.indexOf(item);\n },\n async onClickItem(item: IMenuItem, doClick: boolean = false): Promise<void> {\n if (item.key === menuMoreKey || item.key !== this.lastSelectedItem) {\n /**\n * V-model event. Event that is dispatched when an item is clicked.\n *\n * @event update:modelValue\n * @type {string} item key\n */\n this.$emit(\"update:modelValue\", item.key);\n\n /**\n * Vue 2 v-model event. Event that is dispatched when an item is clicked.\n *\n * @deprecated\n * @event select\n * @type {string} item key\n */\n this.$emit(\"select\", item.key);\n\n this.lastSelectedItem = item.key;\n }\n if (item.href && doClick) {\n this.getAnchor(this.items.indexOf(item))?.click();\n }\n },\n onResize(): void {\n const barElement = this.$el as HTMLElement | undefined;\n if (!barElement) {\n return;\n }\n const barWidth = barElement.offsetWidth;\n\n const itemElements = getSortedHTMLElementsFromVueRef(this.$refs.items);\n\n const overflowIndex = findOverflowIndex(barWidth, itemElements);\n\n /**\n * Emitted on item overflow. Event that is dispatched when the horizontal\n * menu items do not fit in the current total width.\n * The event payload is the item position/index of the item in overflow.\n *\n * @event overflow\n * @type {number} index for overflowed item\n */\n this.$emit(\"overflow\", overflowIndex);\n },\n cssClassHighlight(item: IMenuItem): string {\n return item.key === this.modelValue ? \"imenu__list__item--highlight\" : \"\";\n },\n ccsClassHighlightAnchor(item: IMenuItem): string {\n return item.key === this.modelValue ? \"imenu__list__anchor--highlight\" : \"\";\n },\n ccsClassHighlightAnchorContainer(item: IMenuItem): string {\n return item.key === this.modelValue ? \"imenu__list__anchor-container--highlight\" : \"\";\n },\n async setFocusOnItem(index: number): Promise<void> {\n this.setFocusedItemIndex(index);\n await this.$nextTick();\n const itemAnchor = this.getAnchor(index);\n focus(itemAnchor, { preventScroll: true });\n },\n async activateItem(index: number): Promise<void> {\n await this.onClickItem(this.items[index], true);\n },\n setFocusedItemIndex(index: number): void {\n this.currentFocusedItemIndex = index;\n },\n onKeyUp(event: KeyboardEvent) {\n if (!this.enableKeyboardNavigation) {\n return;\n }\n\n if (preventKeys.includes(event.key)) {\n event.preventDefault();\n }\n },\n async onKeyDown(event: KeyboardEvent) {\n if (!this.enableKeyboardNavigation) {\n return;\n }\n\n const action = actionFromKeyboardEvent(event);\n if (action !== null) {\n event.preventDefault();\n await doMenuAction(action, this);\n }\n },\n },\n});\n</script>\n","import { getElementFromVueRef } from \"../../utils\";\n\n/**\n * Find the first focusable anchor item inside the given `IPopupMenu` object\n *\n * @internal\n *\n * @param ref - A reference to a focusable `IPopupMenu` object\n * @returns The first anchor element found\n */\nexport function findPopupMenuFirstItem(ref: unknown): HTMLElement | null {\n const selector = \"li:first-child a\";\n return getElementFromVueRef(ref).querySelector(selector);\n}\n\n/**\n * Returns the overflow index based on the real overflow index. This is to ensure\n * that there are always 2 or more items in the popupmenu\n *\n * @internal\n */\nexport function calcOverflowIndexFromIndex(index: number): number {\n return index === -1 ? -1 : index - 1;\n}\n","import { MenuAction } from \"../../types\";\n\nexport interface MenuActionTarget {\n readonly currentFocusedItemIndex: number;\n\n setFocusOnItem(index: number): Promise<void>;\n activateItem(index: number): Promise<void>;\n}\n\nexport function getNewItemIndexFromMenuAction(\n action: MenuAction | null,\n index: number,\n minIndex: number,\n maxIndex: number,\n): number {\n let newIndex;\n if (maxIndex <= minIndex) {\n return minIndex;\n }\n if (index >= maxIndex) {\n return maxIndex - 1;\n }\n switch (action) {\n case MenuAction.MOVE_NEXT:\n newIndex = (index + 1) % maxIndex;\n newIndex = Math.max(newIndex, minIndex);\n break;\n case MenuAction.MOVE_PREV:\n newIndex = index - 1;\n if (newIndex < minIndex) {\n newIndex = maxIndex - 1;\n }\n break;\n\n case MenuAction.MOVE_FIRST:\n newIndex = minIndex;\n break;\n\n case MenuAction.MOVE_LAST:\n newIndex = Math.max(maxIndex - 1, minIndex);\n break;\n\n default:\n newIndex = index;\n }\n return newIndex;\n}\n\nexport async function doMenuAction(\n action: MenuAction | null,\n target: MenuActionTarget,\n minIndex: number,\n maxIndex: number,\n): Promise<void> {\n const currentIndex = target.currentFocusedItemIndex;\n const newFocusedItemIndex = getNewItemIndexFromMenuAction(\n action,\n currentIndex,\n minIndex,\n maxIndex,\n );\n switch (action) {\n case MenuAction.MOVE_NEXT:\n case MenuAction.MOVE_PREV:\n case MenuAction.MOVE_FIRST:\n case MenuAction.MOVE_LAST:\n await target.setFocusOnItem(newFocusedItemIndex);\n break;\n case MenuAction.ACTIVATE:\n await target.activateItem(newFocusedItemIndex);\n break;\n }\n}\n","<template>\n <div>\n <i-menu\n ref=\"menu\"\n v-model=\"selectedMenuItemKey\"\n :items=\"visibleItems\"\n :vertical=\"vertical\"\n :focused-item-key=\"focusedMenuItemKey\"\n :selected-menu-item-screen-reader-text=\"selectedMenuItemSrText()\"\n :has-menu-more-selected-items=\"hasPopupMenuSelectedItems\"\n :aria-label=\"menuAriaLabel\"\n @select=\"onSelectMenu\"\n @overflow=\"onOverflow\"\n @keyup=\"onKeyUp\"\n @keydown=\"onKeyDown\"\n />\n <i-popup-menu\n ref=\"popupMenu\"\n v-model=\"selectedPopupItemKey\"\n :items=\"popupItems\"\n :is-open=\"popupOpen\"\n :anchor=\"popupAnchor\"\n :focused-item-key=\"focusedPopupMenuItemKey\"\n :selected-menu-item-screen-reader-text=\"selectedMenuItemSrText()\"\n :aria-label=\"popupAriaLabel\"\n @select=\"onSelectPopup\"\n @close=\"onClosePopup\"\n @keyup=\"onKeyUp\"\n @keydown=\"onKeyDown\"\n >\n </i-popup-menu>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, type PropType } from \"vue\";\nimport { isSet } from \"@fkui/logic\";\nimport { TranslationMixin } from \"../../plugins\";\nimport { IPopupMenu } from \"../../internal-components/IPopupMenu\";\nimport { IMenu, IMenuItem, menuMoreKey } from \"../../internal-components/IMenu\";\nimport { getHTMLElementFromVueRef, actionFromKeyboardEvent } from \"../../utils\";\nimport { MenuAction } from \"../../types\";\nimport { calcOverflowIndexFromIndex } from \"./navigation-menu-utils\";\nimport { NavigationMenuItem } from \"./navigation-menu-item\";\nimport { doMenuAction } from \"./navigation-menu-logic\";\n\nconst preventKeys: string[] = [\n \"Tab\",\n \"Up\",\n \"Down\",\n \"Left\",\n \"Right\",\n \"ArrowUp\",\n \"ArrowDown\",\n \"ArrowLeft\",\n \"ArrowRight\",\n \"Home\",\n \"End\",\n \" \",\n \"Spacebar\",\n \"Enter\",\n \"Escape\",\n];\n\nconst keyUp = [\"ArrowUp\", \"Up\"];\nconst keyDown = [\"ArrowDown\", \"Down\"];\n\nconst arrowKeys: string[] = [...keyUp, ...keyDown];\n\nexport default defineComponent({\n name: \"FNavigationMenu\",\n components: { IMenu, IPopupMenu },\n mixins: [TranslationMixin],\n props: {\n /** Current route.\n * @model\n */\n route: {\n type: String,\n required: false,\n default: \"\",\n },\n /**\n * The route items to be diplayed in the menu\n */\n routes: {\n type: Array as PropType<NavigationMenuItem[]>,\n required: true,\n },\n /**\n * If true, show the menu vertically\n */\n vertical: {\n type: Boolean,\n required: false,\n default: false,\n },\n /**\n * Screen reader text for selected item\n */\n selectedMenuItemScreenReaderText: {\n type: String,\n required: false,\n default: \"\",\n },\n /**\n * Screen reader text for the more menu item\n */\n menuMoreScreenReaderText: {\n type: String,\n required: false,\n default: \"\",\n },\n /**\n * Screen reader text for the more menu with selected items\n */\n menuMoreWithSelectedItemsScreenReaderText: {\n type: String,\n required: false,\n default: \"\",\n },\n /**\n * Unique accessible name for navigation landmark in menu.\n */\n menuAriaLabel: {\n type: String,\n required: false,\n default: \"Navigeringsmeny\",\n },\n /**\n * Unique accessible name for navigation landmark in popup.\n */\n popupAriaLabel: {\n type: String,\n required: false,\n default: \"Popupmeny\",\n },\n },\n emits: [\n /**\n * Event that is dispatched when a menu item is selected, for example, by clicking on the item.\n * In most use cases the event payload is used to call Vue `router.push()` from the consumer code.\n *\n * @event selectedRoute\n * @param route\n * @type {string}\n */\n \"selectedRoute\",\n /**\n * V-model event to update route property.\n *\n * @event update:route\n * @param route\n * @type {string}\n */\n \"update:route\",\n ],\n data() {\n return {\n overflowIndex: -1,\n ignoreNoOverflow: false,\n selectedMenuItemKey: \"\",\n selectedPopupItemKey: \"\",\n popupAnchor: this.$el as HTMLElement,\n popupOpen: false,\n currentFocusedItemIndex: 0,\n focusedMenuItemKey: \"\",\n focusedPopupMenuItemKey: \"\",\n initPopupNavigationIndex: true,\n };\n },\n computed: {\n items(): IMenuItem[] {\n return this.routes.map((i) => ({ label: i.label, key: i.route, href: i.href, target: i.target }));\n },\n visibleItems(): IMenuItem[] {\n if (this.overflowIndex > -1) {\n const visibleItems = this.items.slice(0, this.overflowIndex);\n visibleItems.push({\n label: this.$t(\"fkui.navigation-menu.more-text\", \"Mer\"),\n key: menuMoreKey,\n iconRight: \"arrow-down\",\n ariaHasPopup: true,\n srMenuMoreTextContents: this.menuMoreScreenReaderText,\n srMenuMoreTextSelectedContents: this.menuMoreWithSelectedItemsSrText(),\n });\n // The following will emit an overflow event with -1 (no overflow) because\n // after slicing all the items fit in the navigation menu\n return visibleItems;\n } else {\n return this.items;\n }\n },\n popupItems(): IMenuItem[] {\n return this.overflowIndex > -1 ? this.items.slice(this.overflowIndex) : [];\n },\n hasPopupMenuSelectedItems(): boolean {\n return this.selectedPopupItemKey !== \"\";\n },\n },\n watch: {\n route: {\n async handler(value: string): Promise<void> {\n const itemIndex = isSet(value) ? this.indexOfItemByKey(this.items, value) : -1;\n if (itemIndex < 0) {\n await this.activateItem(-1);\n return;\n }\n\n const isWithinMoreMenu = !this.findItemByKey(this.visibleItems, value);\n\n if (isWithinMoreMenu) {\n const item = this.items[itemIndex];\n await this.activateInvisibleItem(item);\n } else {\n await this.activateItem(itemIndex);\n }\n },\n immediate: true,\n },\n },\n mounted() {\n this.currentFocusedItemIndex = 0;\n },\n methods: {\n selectedMenuItemSrText(): string {\n if (this.selectedMenuItemScreenReaderText === \"\") {\n return this.$t(\"fkui.navigation-menu.current-page\", \"Aktuell sida\");\n } else {\n return this.selectedMenuItemScreenReaderText;\n }\n },\n menuMoreWithSelectedItemsSrText(): string {\n if (this.menuMoreWithSelectedItemsScreenReaderText === \"\") {\n return this.$t(\"fkui.navigation-menu.more-selection\", \"underliggande vald nu\");\n } else {\n return this.menuMoreWithSelectedItemsScreenReaderText;\n }\n },\n findItemByKey(items: IMenuItem[], key: string): IMenuItem | undefined {\n return items.find((it) => it.key === key);\n },\n indexOfItemByKey(items: IMenuItem[], key: string): number {\n return items.findIndex((it) => it.key === key);\n },\n async onOverflow(index: number): Promise<void> {\n const ignore = this.ignoreNoOverflow;\n const shouldReset = index === -1 && ignore;\n const shouldIgnore = index >= 0;\n\n if (shouldReset) {\n this.ignoreNoOverflow = false;\n return;\n }\n\n if (shouldIgnore) {\n this.ignoreNoOverflow = true;\n }\n\n this.updateOverflowIndex(index);\n await this.refreshSelectedItem();\n\n const shouldClosePopup = this.overflowIndex > -1 && !this.ignoreNoOverflow;\n if (shouldClosePopup) {\n await this.setPopupOpen(false);\n }\n },\n async refreshSelectedItem(): Promise<void> {\n const popupStatus = this.popupOpen;\n\n if (this.overflowIndex === -1) {\n // check if selected item has moved from popup-menu to menu\n if (this.visibleItems.some((i) => i.key === this.selectedPopupItemKey)) {\n this.selectedMenuItemKey = this.selectedPopupItemKey;\n this.selectedPopupItemKey = \"\";\n }\n } else {\n // check if selected item has moved from menu to popup-menu\n if (this.popupItems.some((i) => i.key === this.selectedMenuItemKey)) {\n this.selectedPopupItemKey = this.selectedMenuItemKey;\n const lastItem = this.visibleItems.at(-1);\n this.selectedMenuItemKey = lastItem?.key ?? \"\";\n }\n }\n\n await this.setPopupOpen(popupStatus);\n },\n async doSelectItem(key: string): Promise<void> {\n if (key !== menuMoreKey) {\n this.$emit(\"update:route\", key);\n this.$emit(\"selectedRoute\", key);\n }\n let index = -1;\n if (this.hasOverflow()) {\n index = this.indexOfItemByKey(this.visibleItems, key);\n if (index === -1) {\n index = this.indexOfItemByKey(this.items, key);\n }\n } else {\n index = this.indexOfItemByKey(this.items, key);\n }\n },\n async onSelectMenu(key: string): Promise<void> {\n await this.doSelectItem(key);\n // If key not equal MENU_MORE and key is in visible items reset selectedPopupItemKey\n if (key !== menuMoreKey) {\n if (this.findItemByKey(this.visibleItems, key) && this.selectedPopupItemKey !== \"\") {\n this.focusedPopupMenuItemKey = \"\";\n this.selectedPopupItemKey = \"\";\n }\n } else {\n const anchor = getHTMLElementFromVueRef(this.$refs.menu).querySelector(\"li:last-child\") as HTMLElement;\n if (anchor) {\n this.popupAnchor = anchor;\n }\n await this.setPopupOpen(true);\n }\n },\n async onSelectPopup(key: string): Promise<void> {\n await this.setPopupOpen(false);\n await this.doSelectItem(key);\n },\n async onClosePopup(): Promise<void> {\n await this.setPopupOpen(false);\n },\n async setPopupOpen(value: boolean): Promise<void> {\n if (value) {\n this.focusedPopupMenuItemKey = \"\";\n } else {\n this.initPopupNavigationIndex = true;\n }\n this.popupOpen = value;\n await this.$nextTick();\n },\n updateOverflowIndex(index: number) {\n this.overflowIndex = calcOverflowIndexFromIndex(index);\n },\n onKeyUp(event: KeyboardEvent) {\n if (preventKeys.includes(event.key)) {\n event.preventDefault();\n }\n },\n doHandleMenuTabKey(action: MenuAction): boolean {\n // Detect if tab (MOVE_NEXT) or shift+tab (MOVE_PREV) reaches the limits, to avoid trapping tab\n // returns true to indicate that one should NOT continue processing this keyboard action or false otherwise\n if (this.hasOverflow()) {\n if (action === MenuAction.MOVE_NEXT && this.currentFocusedItemIndex + 1 === this.visibleItems.length) {\n return true;\n }\n if (action === MenuAction.MOVE_PREV && this.currentFocusedItemIndex - 1 === -1) {\n return true;\n }\n } else {\n if (action === MenuAction.MOVE_NEXT && this.currentFocusedItemIndex + 1 === this.items.length) {\n return true;\n }\n if (action === MenuAction.MOVE_PREV && this.currentFocusedItemIndex - 1 === -1) {\n return true;\n }\n }\n return false;\n },\n async doHandlePopupMenuTabKey(action: MenuAction): Promise<boolean> {\n // Detect if tab (MOVE_NEXT) or shift+tab (MOVE_PREV) reaches the limits, to avoid trapping tab\n // returns true to indicate that one should NOT continue processing this keyboard action or false otherwise\n if (action === MenuAction.MOVE_NEXT && this.currentFocusedItemIndex + 1 === this.items.length) {\n await this.setPopupOpen(false);\n return true;\n } else if (action === MenuAction.MOVE_NEXT && this.currentFocusedItemIndex === this.overflowIndex) {\n // First press on tab must initialize the currentFocusedItemIndex correctly\n if (this.initPopupNavigationIndex) {\n this.initPopupNavigationIndex = !this.initPopupNavigationIndex;\n this.setCurrentFocusedItemIndex(this.overflowIndex - 1);\n return false;\n }\n } else if (action === MenuAction.MOVE_PREV && this.currentFocusedItemIndex === this.overflowIndex) {\n // shift-tab (MOVE_PREV) inside the popup on the first element of the popup will close the popup and\n // adjust currentFocusedItemIndex and will resume processing this keyboard action\n await this.setPopupOpen(false);\n this.setCurrentFocusedItemIndex(this.overflowIndex - 1);\n return false;\n }\n return false;\n },\n setCurrentFocusedItemIndex(value: number) {\n this.currentFocusedItemIndex = value;\n },\n doInitPopupNavigationIndex(event: KeyboardEvent) {\n if (keyDown.includes(event.key) || event.key === \"Tab\") {\n // user pressed arrow down key, adjust currentFocusedIndex before call to doMenuAction\n this.setCurrentFocusedItemIndex(this.overflowIndex - 1);\n } else if (keyUp.includes(event.key)) {\n // user pressed arrow up key, adjust currentFocusedIndex before call to doMenuAction\n this.setCurrentFocusedItemIndex(this.items.length + 1);\n }\n },\n async onKeyDown(event: KeyboardEvent) {\n if (event.key === \"Escape\") {\n await this.setPopupOpen(false);\n return;\n }\n let action = actionFromKeyboardEvent(event);\n if (action === null) {\n return;\n }\n if (!this.popupOpen) {\n if (event.key === \"Tab\" && this.doHandleMenuTabKey(action)) {\n return;\n }\n event.preventDefault();\n await doMenuAction(action, this, 0, this.visibleItems.length);\n } else {\n if (event.key === \"Tab\" && (await this.doHandlePopupMenuTabKey(action))) {\n return;\n }\n event.preventDefault();\n\n // if you activate (press space or enter) while there is nothing focused in this.focusedPopupMenuItemKey\n // just ignore further processing and close the popup\n if (action === MenuAction.ACTIVATE && this.focusedPopupMenuItemKey === \"\") {\n action = null;\n await this.setPopupOpen(false);\n return;\n }\n\n // First press on arrow down/up must initialize the currentFocusedItemIndex correctly\n if (this.initPopupNavigationIndex && arrowKeys.includes(event.key)) {\n this.initPopupNavigationIndex = !this.initPopupNavigationIndex;\n this.doInitPopupNavigationIndex(event);\n }\n await doMenuAction(action, this, this.overflowIndex, this.items.length);\n }\n },\n async setFocusOnItem(index: number): Promise<void> {\n this.setFocusedItemIndex(index);\n // if index in visible items then update focus in i-menu\n // else then update focus i-popup-menu, open popup if needed\n if (!this.hasOverflow() || (!this.popupOpen && index <= this.overflowIndex)) {\n this.setFocusedMenuItemKey(this.visibleItems[index]?.key || \"\");\n } else {\n await this.setFocusedPopupMenuItemKey(this.items[index]?.key || \"\");\n }\n },\n hasOverflow() {\n return this.overflowIndex !== -1;\n },\n async activateItem(index: number): Promise<void> {\n if (!this.hasOverflow() || (!this.popupOpen && index <= this.overflowIndex)) {\n const key = this.visibleItems[index]?.key || \"\";\n await this.setSelectedMenuItemKey(key);\n await this.onSelectMenu(key);\n } else {\n const key = this.items[index]?.key || \"\";\n this.selectedPopupItemKey = key;\n await this.onSelectPopup(key);\n }\n },\n async activateInvisibleItem(item: IMenuItem): Promise<void> {\n await this.setSelectedMenuItemKey(menuMoreKey);\n await this.onSelectMenu(menuMoreKey);\n this.selectedPopupItemKey = item.key;\n await this.onSelectPopup(item.key);\n if (item.href) {\n const anchor = document.createElement(\"a\");\n anchor.href = item.href;\n if (item.target) {\n anchor.target = item.target;\n }\n anchor.click();\n }\n },\n setFocusedItemIndex(index: number): void {\n if (index < 0) {\n return;\n }\n if (!this.popupOpen && this.hasOverflow() && index > this.overflowIndex) {\n this.setCurrentFocusedItemIndex(this.overflowIndex);\n } else {\n this.setCurrentFocusedItemIndex(index);\n }\n },\n async setFocusedPopupMenuItemKey(key: string): Promise<void> {\n this.focusedPopupMenuItemKey = \"\";\n if (key !== \"\") {\n await this.$nextTick();\n this.focusedPopupMenuItemKey = key;\n }\n },\n setFocusedMenuItemKey(key: string): void {\n this.focusedMenuItemKey = key;\n },\n async setSelectedMenuItemKey(key: string): Promise<void> {\n this.selectedMenuItemKey = \"\";\n if (key !== \"\") {\n await this.$nextTick();\n this.selectedMenuItemKey = key;\n }\n },\n },\n});\n</script>\n","<template>\n <div ref=\"offline\" class=\"offline__wrapper\" :role=\"role\">\n <div v-if=\"!isOnline\" class=\"offline\">\n <span class=\"offline__icon\">\n <span class=\"icon-stack icon-stack--error\">\n <f-icon name=\"triangle\"></f-icon>\n <f-icon name=\"alert\"></f-icon>\n </span>\n </span>\n <p class=\"offline__content\">\n <!-- @slot Slot for customizing text message. -->\n <slot> Det verkar som att du inte har någon internetuppkoppling just nu </slot>\n </p>\n </div>\n <span v-show=\"isOnline\" class=\"sr-only\" :aria-hidden=\"shouldNotRead ? 'true' : undefined\">\n Din internetuppkoppling fungerar igen\n </span>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from \"vue\";\nimport { FIcon } from \"../FIcon\";\nimport { getElementFromVueRef } from \"../../utils\";\n\nconst EVENTS = [\"online\", \"offline\"];\n\nexport default defineComponent({\n name: \"FOffline\",\n components: {\n FIcon,\n },\n data() {\n return {\n isOnline: navigator.onLine || false,\n role: \"none\",\n shouldNotRead: true,\n };\n },\n created() {\n EVENTS.forEach((event) => {\n window.addEventListener(event, this.updateOnlineStatus);\n });\n },\n beforeUnmount() {\n EVENTS.forEach((event) => {\n window.removeEventListener(event, this.updateOnlineStatus);\n });\n },\n mounted() {\n document.body.prepend(getElementFromVueRef(this.$refs.offline));\n },\n methods: {\n updateOnlineStatus(event: Event) {\n switch (event.type) {\n case \"online\":\n this.shouldNotRead = false;\n this.isOnline = true;\n break;\n case \"offline\":\n this.shouldNotRead = true;\n this.isOnline = false;\n break;\n /* eslint-disable-next-line sonarjs/no-duplicated-branches -- technical debt */\n default:\n this.shouldNotRead = true;\n this.isOnline = false;\n break;\n }\n this.role = \"alert\";\n },\n },\n});\n</script>\n","<template>\n <div class=\"output-field\">\n <f-label :for=\"id\">\n <template #default>\n <!-- @slot Slot for label content. -->\n <slot name=\"label\"></slot>\n </template>\n <!-- @slot Slot for tooltip. -->\n <template v-if=\"$slots.tooltip\" #tooltip>\n <!-- @slot Slot primarily for tooltip. -->\n <slot name=\"tooltip\"></slot>\n </template>\n </f-label>\n <output :id=\"id\" :for=\"htmlFor\" class=\"output-field__output\" v-bind=\"$attrs\">\n <!-- @slot Slot for output field content. -->\n <slot name=\"default\"></slot>\n </output>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from \"vue\";\nimport { ElementIdService } from \"@fkui/logic\";\nimport { FLabel } from \"../FLabel\";\n\nexport default defineComponent({\n name: \"FOutputField\",\n components: {\n FLabel,\n },\n inheritAttrs: false,\n props: {\n /**\n * Associate the output field with one or more id's of the elements\n * contributing or affecting the result of this field. Multiple id's can\n * be set with a space-separated string or an array of strings.\n */\n for: {\n type: [String, Array],\n required: true,\n },\n /**\n * The id for the output id attribute.\n * The id for the label for attribute.\n * If the prop is not set a random value will be generated.\n */\n id: {\n type: String,\n required: false,\n default: () => ElementIdService.generateElementId(),\n },\n },\n computed: {\n htmlFor(): string {\n return Array.isArray(this.for) ? this.for.join(\" \") : this.for;\n },\n },\n});\n</script>\n","<template>\n <a class=\"iskiplink\" :href=\"href\">\n <!-- @slot Slot for default skip link text. -->\n <slot>{{ $t(\"fkui.skip-link.text\", \"Gå direkt till innehåll\") }}</slot>\n </a>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from \"vue\";\nimport { TranslationMixin } from \"../../plugins/translation\";\n\nexport default defineComponent({\n name: \"ISkipLink\",\n mixins: [TranslationMixin],\n props: {\n /**\n * Target for skiplink.\n */\n href: {\n type: String,\n required: false,\n default: \"main\",\n },\n },\n});\n</script>\n","import { type TranslateFunction } from \"@fkui/logic\";\n\nexport function getAltLogoText(\n hasRouterLink: boolean,\n routerLinkLabel: string,\n t: TranslateFunction,\n): string {\n const srStdLogoAltText = t(\n \"fkui.page-header.logo.alt-text\",\n \"Försäkringskassan\",\n );\n const srStdRouterLinkLabel = t(\n \"fkui.page-header.router.link.label\",\n \"gå till startsidan\",\n );\n if (hasRouterLink && routerLinkLabel !== \"\") {\n return `${srStdLogoAltText} ${routerLinkLabel}`;\n } else if (hasRouterLink) {\n return `${srStdLogoAltText}, ${srStdRouterLinkLabel}`;\n } else {\n return srStdLogoAltText;\n }\n}\n","<template>\n <div class=\"page-header__root\">\n <nav v-if=\"skipLink\">\n <i-skip-link :href=\"skipLinkHref\">\n <!-- @slot Slot for skip link text. -->\n <slot name=\"skip-link-text\"></slot>\n </i-skip-link>\n </nav>\n <div ref=\"header\" class=\"page-header\">\n <div class=\"page-header__logo\">\n <!-- @slot Slot for custom logo. -->\n <slot name=\"logo\">\n <router-link v-if=\"routerLinkTo\" :to=\"routerLinkTo\">\n <span :class=\"logoClass\" :aria-label=\"altLogoText\" role=\"img\" />\n </router-link>\n <span v-else :class=\"logoClass\" :aria-label=\"altLogoText\" role=\"img\" />\n </slot>\n </div>\n\n <component :is=\"headerTag\" class=\"page-header__app-name\">\n <!--@slot Slot for application title.-->\n <slot></slot>\n </component>\n <div class=\"page-header__right\">\n <div class=\"page-header__right-slot\">\n <!--@slot Slot for user/custom information display.-->\n <slot name=\"right\"></slot>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from \"vue\";\nimport { type RouteLocationPathRaw, type RouteLocationNamedRaw } from \"vue-router\";\nimport { TranslationMixin } from \"../../plugins/translation\";\nimport { ISkipLink } from \"../../internal-components/ISkipLink\";\nimport { getAltLogoText } from \"./get-alt-text\";\n\nexport default defineComponent({\n name: \"FPageHeader\",\n components: { ISkipLink },\n mixins: [TranslationMixin],\n inheritAttrs: true,\n props: {\n /** Setting the logo sizes small, large or responsive. */\n logoSize: {\n type: String,\n default: \"responsive\",\n required: false,\n validator(value: string): boolean {\n return [\"small\", \"large\", \"responsive\"].includes(value);\n },\n },\n /**\n * Render skiplink.\n */\n skipLink: {\n type: Boolean,\n required: false,\n default: false,\n },\n /**\n * Target for skiplink.\n */\n skipLinkHref: {\n type: String,\n required: false,\n default: \"#applicationlayout-main-content\",\n },\n /**\n * HTML element type for header.\n */\n headerTag: {\n default: \"span\",\n required: false,\n validator(value: string): boolean {\n return [\"span\", \"h1\"].includes(value);\n },\n },\n /**\n * Target for router-link via path.\n * (Behaviour from using both name and path in combination is undefined.)\n */\n routerLinkPath: {\n type: String,\n required: false,\n default: \"\",\n },\n /**\n * Target for router-link via name.\n * (Behaviour from using both name and path in combination is undefined.)\n */\n routerLinkName: {\n type: String,\n required: false,\n default: \"\",\n },\n /**\n * Label to override the router-link label when router-link is present.\n */\n routerLinkLabel: {\n type: String,\n required: false,\n default: \"\",\n },\n },\n computed: {\n logoClass(): string {\n return `page-header__logo--${this.logoSize}`;\n },\n hasRouterLink(): boolean {\n return Boolean(this.routerLinkName || this.routerLinkPath);\n },\n routerLinkTo(): RouteLocationPathRaw | RouteLocationNamedRaw | null {\n const { routerLinkName, routerLinkPath } = this;\n if (routerLinkName) {\n return { name: routerLinkName };\n }\n if (routerLinkPath) {\n return { path: routerLinkPath };\n }\n return null;\n },\n altLogoText(): string {\n return getAltLogoText(this.hasRouterLink, this.routerLinkLabel, this.$t);\n },\n },\n});\n</script>\n","<template>\n <div class=\"progress\">\n <!-- [html-validate-disable-next no-inline-style] -->\n <span\n class=\"progress__meter\"\n :class=\"progressBarClass\"\n role=\"progressbar\"\n :aria-label=\"ariaLabel\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n :aria-valuenow=\"progressValueNow\"\n :aria-valuetext=\"progressText\"\n :style=\"cssWidth\"\n >\n <span class=\"sr-only\">{{ progressText }}</span>\n </span>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from \"vue\";\n\nconst MIN_VALUE = 0;\nconst MAX_VALUE = 100;\n\nfunction clamp(val: number): number {\n return Math.round(Math.min(Math.max(val || 0, MIN_VALUE), MAX_VALUE));\n}\n\nexport default defineComponent({\n name: \"FProgressbar\",\n\n props: {\n /**\n * Sets the progress. Higher value indicates further progress. Value must be in range 0-100.\n */\n value: {\n type: Number,\n required: true,\n validator(value: number) {\n return value >= MIN_VALUE && value <= MAX_VALUE;\n },\n },\n /**\n * Text that the screenreader will read, the actual value will be replaced with %VALUE% e.g You have uploaded %VALUE% percent\n */\n valueText: {\n type: String,\n required: false,\n default: \"Du har slutfört %VALUE% %.\",\n },\n ariaLabel: {\n type: String,\n required: true,\n },\n },\n\n computed: {\n progressValueNow(): number {\n return clamp(this.value);\n },\n\n isFinished(): boolean {\n return this.progressValueNow === MAX_VALUE;\n },\n\n isInProgress(): boolean {\n return this.progressValueNow > MIN_VALUE && this.progressValueNow < MAX_VALUE;\n },\n\n isPending(): boolean {\n return this.progressValueNow === MIN_VALUE;\n },\n\n cssWidth(): string {\n return `width: ${this.progressValueNow}%`;\n },\n\n progressBarClass(): string {\n return `${this.isInProgress ? \"progress__meter--inprogress\" : \"\"} ${\n this.isPending ? \"progress__meter--pending\" : \"\"\n } ${this.isFinished ? \"progress__meter--finished\" : \"\"}`;\n },\n\n progressText(): string {\n return `${this.valueText.replace(\"%VALUE%\", this.progressValueNow.toString())}`;\n },\n },\n});\n</script>\n","<template>\n <div class=\"radio-button\" :class=\"disabledClass\" @validity=\"onValidity\">\n <input :id=\"id\" type=\"radio\" class=\"radio-button__input\" :disabled=\"disabled\" v-bind=\"attrs\" />\n\n <label :class=\"$slots.details ? 'radio-button__label radio-button__width' : 'radio-button__label'\" :for=\"id\">\n <!-- @slot Slot for label content. -->\n <slot></slot>\n <template v-if=\"$slots.details\">\n <span v-if=\"showDetails === 'always'\" class=\"radio-button__details\">\n <br />\n <!-- @slot Slot for details, should only contain short text -->\n <slot name=\"details\"></slot>\n </span>\n <transition\n v-if=\"showDetails === 'when-selected'\"\n @enter=\"enter\"\n @after-enter=\"afterEnter\"\n @leave=\"leave\"\n >\n <span v-if=\"value === modelValue\" class=\"radio-button__details\">\n <br />\n <!-- @slot Slot for details, should only contain short text-->\n <slot name=\"details\" :height=\"height\"></slot>\n </span>\n </transition>\n </template>\n </label>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, inject } from \"vue\";\nimport { ElementIdService, type ValidityEvent } from \"@fkui/logic\";\nimport { renderSlotText, dispatchComponentValidityEvent, hasSlot, getHTMLElementFromVueRef } from \"../../utils\";\n\n// ! Boolean must be last so that empty string ('') is not parsed as true, see: https://github.com/vuejs/vue/blob/81e1e47cabbd479e2a285f03120944f1efffe749/test/unit/features/options/props.spec.js#L516.\nconst anyType = [String, Object, Array, Number, Date, Boolean];\n\nexport default defineComponent({\n name: \"FRadioField\",\n\n inheritAttrs: false,\n props: {\n /**\n * Set to `true`, empty string `\"\"` or string `\"disabled\"` to disable this input field.\n */\n disabled: {\n type: Boolean,\n required: false,\n default: false,\n },\n /**\n * The id for the input id attribute.\n * The id for the label for attribute.\n * If the prop is not set a random value will be generated.\n */\n id: {\n type: String,\n required: false,\n default: () => ElementIdService.generateElementId(),\n },\n /**\n * The value for the input checked attribute.\n * @model\n */\n // ? The rule is disabled so that the `checked` prop can be undefined or null.\n /* eslint-disable-next-line vue/require-default-prop -- technical debt,\n /* it should contain a default value of undefined and proptype should\n /* include undefined (see comment on line above) */\n modelValue: {\n type: anyType,\n required: false,\n },\n /**\n * The value for the input.\n */\n value: {\n type: anyType,\n required: true,\n },\n },\n emits: [\"change\", \"update:modelValue\"],\n setup() {\n return {\n sharedName: inject(\"sharedName\", undefined) as string | undefined,\n showDetails: inject(\"showDetails\", \"never\") as \"never\" | \"always\" | \"when-selected\",\n getFieldsetLabelText: inject(\"getFieldsetLabelText\", () => \"\") as () => string,\n };\n },\n data() {\n return {\n height: 0,\n initialStyle: {\n overflow: \"hidden\",\n transition: \"height 400ms cubic-bezier(0.46, 0.03, 0.52, 0.96)\",\n },\n hiddenStyle: {\n height: \"auto\",\n position: \"absolute\",\n visibility: \"hidden\",\n },\n visibleStyle: {\n width: \"\",\n position: \"\",\n visibility: \"\",\n height: \"0px\",\n },\n openedStyle: {\n height: \"auto\",\n },\n };\n },\n computed: {\n attrs(): Record<string, unknown> {\n return {\n ...this.$attrs,\n value: this.value,\n checked: this.value === this.modelValue,\n name: this.sharedName ?? this.$attrs.name,\n onChange: (event: Event) => {\n if (event.target instanceof HTMLInputElement) {\n /**\n * V-model event.\n * @event update:modelValue\n * @type {anyType}\n */\n this.$emit(\"update:modelValue\", this.value);\n\n /**\n * Vue2 v-model event.\n * @deprecated\n * @event change\n * @type {anyType}\n */\n this.$emit(\"change\", this.value);\n }\n },\n onInput: (event: Event) => {\n // ? Force focus on Mac + Safari\n (event.target as HTMLInputElement).focus();\n },\n };\n },\n disabledClass(): string {\n return this.disabled ? \"disabled\" : \"\";\n },\n },\n methods: {\n async onValidity({ detail }: CustomEvent<ValidityEvent>): Promise<void> {\n if (detail.target !== this.$el.querySelector(\"input\")) {\n return;\n }\n\n await this.$nextTick();\n\n let errorMessage = \"\";\n\n if (hasSlot(this, \"default\")) {\n const labelText = this.getFieldsetLabelText();\n if (labelText) {\n errorMessage = `${labelText} ${renderSlotText(this.$slots.default)}`;\n } else {\n errorMessage = `${renderSlotText(this.$slots.default)}`;\n }\n }\n\n const element = this.$el.querySelector(`#${detail.elementId}`);\n if (element) {\n dispatchComponentValidityEvent(element, {\n ...detail,\n errorMessage,\n focusElementId: detail.elementId,\n });\n }\n },\n enter(element: Element): void {\n const htmlElement = getHTMLElementFromVueRef(element);\n const computedStyle = getComputedStyle(element);\n Object.assign(htmlElement.style, this.initialStyle);\n Object.assign(htmlElement.style, this.hiddenStyle);\n htmlElement.style.width = computedStyle.width;\n const height = computedStyle.height;\n Object.assign(htmlElement.style, this.visibleStyle);\n // Force redraw\n /* eslint-disable-next-line @typescript-eslint/no-unused-expressions -- technical debt, there should be a better way */\n getComputedStyle(element).height;\n setTimeout(() => {\n this.height = parseInt(height as string, 10);\n htmlElement.style.height = height;\n });\n },\n afterEnter(element: Element): void {\n const htmlElement = getHTMLElementFromVueRef(element);\n Object.assign(htmlElement.style, this.openedStyle);\n },\n leave(element: Element): void {\n const htmlElement = getHTMLElementFromVueRef(element);\n const height = getComputedStyle(element).height;\n htmlElement.style.height = height;\n\n // Force redraw\n /* eslint-disable-next-line @typescript-eslint/no-unused-expressions -- technical debt, there should be a better way */\n getComputedStyle(element).height;\n setTimeout(() => {\n Object.assign(htmlElement.style, this.visibleStyle);\n });\n },\n },\n});\n</script>\n","<template>\n <f-fieldset :id=\"id\" :name=\"name\" v-bind=\"$attrs\" :horizontal=\"isHorizontal\">\n <template #label>\n <!-- @slot Slot for label content. This slot is required. -->\n <slot name=\"label\"></slot>\n </template>\n\n <template v-if=\"$slots.tooltip\" #tooltip>\n <!-- @slot Slot for tooltip. -->\n <slot name=\"tooltip\"></slot>\n </template>\n\n <template #description=\"{ descriptionClass, discreteDescriptionClass }\">\n <!--\n @slot Optional slot for description. See [FLabel](#/Components/FLabel) for details.\n @binding {string[]} descriptionClass CSS classes for primary description content.\n @binding {string[]} discreteDescriptionClass CSS classes for format description.\n -->\n <slot name=\"description\" v-bind=\"{ descriptionClass, discreteDescriptionClass }\"></slot>\n </template>\n\n <template #error-message>\n <!-- @slot Slot for displaying single or several error messages. -->\n <slot name=\"error-message\"></slot>\n </template>\n\n <!-- @slot\nSlot for main content, usually radio buttons.\n\nSlot content is available through `v-slot=\"{ <propertyName> }\"`, e.g.\n`v-slot=\"{ indentClass }\"`.\n\nThe following properties are available:\n* `indentClass: string[];` CSS class to use for nesting content under a radio button. Use with `:class=\"indentClass\"`.\n -->\n <template #default>\n <slot v-bind=\"{ indentClass: 'indent' }\" name=\"default\"></slot>\n </template>\n </f-fieldset>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from \"vue\";\nimport { ElementIdService } from \"@fkui/logic\";\nimport { FFieldset } from \"../FFieldset\";\n\n/**\n * @deprecated `<f-radio-group>` is deprecated.\n * See migration guide: https://forsakringskassan.github.io/latest/guide/migration/migrating-to-fieldset.html\n */\nexport default defineComponent({\n name: \"FRadioGroup\",\n components: { FFieldset },\n inheritAttrs: false,\n props: {\n /**\n * The id for the fieldset id attribute.\n * If the prop is not set the id will be generated.\n */\n id: {\n type: String,\n required: false,\n default: () => ElementIdService.generateElementId(),\n },\n /**\n * The name of the radio group.\n * The radio group fields in the group will use the same name.\n */\n name: {\n type: String,\n required: true,\n },\n /**\n * If radio buttons should be aligned horizontally.\n * If the prop is not set the radio buttons will be aligned vertically.\n * Default: `false`\n */\n isHorizontal: {\n type: Boolean,\n required: false,\n },\n },\n});\n</script>\n","<template>\n <div class=\"output-field\">\n <f-label>\n <template #default>\n <!-- @slot Slot for label content. -->\n <slot name=\"label\"></slot>\n </template>\n <template v-if=\"$slots.tooltip\" #tooltip>\n <!-- @slot Slot primarily for tooltip. -->\n <slot name=\"tooltip\"></slot>\n </template>\n\n <template #description=\"{ descriptionClass, discreteDescriptionClass }\">\n <!--\n @slot Optional slot for description. See [FLabel](#/Components/FLabel) for details.\n @binding {string[]} descriptionClass CSS classes for primary description content.\n @binding {string[]} discreteDescriptionClass CSS classes for format description.\n -->\n <slot name=\"description\" v-bind=\"{ descriptionClass, discreteDescriptionClass }\"></slot>\n </template>\n </f-label>\n <p class=\"output-field__output\">\n <!-- @slot Slot for text content. -->\n <slot name=\"default\"></slot>\n </p>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from \"vue\";\nimport { FLabel } from \"../FLabel\";\n\nexport default defineComponent({\n name: \"FStaticField\",\n components: {\n FLabel,\n },\n});\n</script>\n","import { type ListArray, type ListItem } from \"../../types\";\n\ninterface FTableKeyboardAdapter {\n rows: ListArray;\n tr: HTMLElement[];\n\n activate(row: ListItem, element: HTMLElement): void;\n}\n\ntype Callback = (this: FTableKeyboardAdapter, current: number) => void;\n\nconst keybindings: Record<string, Callback> = Object.fromEntries([\n [\"Up\", focusTrAbove],\n [\"Down\", focusTrBelow],\n [\"ArrowUp\", focusTrAbove],\n [\"ArrowDown\", focusTrBelow],\n [\" \", activateRow],\n [\"Spacebar\", activateRow],\n]);\n\nexport function focusTrAbove(\n this: FTableKeyboardAdapter,\n current: number,\n): void {\n if (current > 0) {\n this.tr[current - 1].focus();\n } else {\n this.tr[this.tr.length - 1].focus();\n }\n}\n\nexport function focusTrBelow(\n this: FTableKeyboardAdapter,\n current: number,\n): void {\n if (current < this.tr.length - 1) {\n this.tr[current + 1].focus();\n } else {\n this.tr[0].focus();\n }\n}\n\nexport function activateRow(\n this: FTableKeyboardAdapter,\n current: number,\n): void {\n const row = this.rows[current];\n const element = this.tr[current];\n this.activate(row, element);\n}\n\nexport function onKeydown(\n this: FTableKeyboardAdapter,\n event: KeyboardEvent,\n current: number,\n): void {\n const fn = keybindings[event.key];\n if (fn) {\n event.preventDefault();\n fn.call(this, current);\n }\n}\n","import { type ComputedRef, type Ref, type Slots, ref, computed } from \"vue\";\nimport { type ListArray, type ListItem } from \"../../types\";\nimport { type FTableColumnData } from \"../FTableColumn\";\nimport { itemEquals, includeItem } from \"../../utils\";\n\nexport interface ExpandableTable {\n expandedRows: Ref<ListArray>;\n isExpandableTable: ComputedRef<boolean>;\n hasExpandableSlot: ComputedRef<boolean>;\n toggleExpanded(row: ListItem): void;\n isExpanded(row: ListItem): boolean;\n rowAriaExpanded(row: ListItem): boolean | undefined;\n expandableRowClasses(row: ListItem, index: number): string[];\n expandableColumnClasses(column: FTableColumnData, index: number): string[];\n getExpandableDescribedby(row: ListItem): string | undefined;\n expandableRows(row: ListItem): ListArray | undefined;\n hasExpandableContent(row: ListItem): boolean;\n}\n\ntype InteractiveTableEmit = (\n event:\n | \"change\"\n | \"update:modelValue\"\n | \"click\"\n | \"update\"\n | \"unselect\"\n | \"select\"\n | \"expand\"\n | \"collapse\",\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- technical debt\n ...args: any[]\n) => void;\n\nexport function useExpandableTable(\n expandableAttribute: string,\n keyAttribute: string,\n describedby: string | undefined,\n emit: InteractiveTableEmit,\n slots: Slots,\n): ExpandableTable {\n const expandedRows: Ref<ListArray> = ref([]);\n\n const isExpandableTable = computed(() => {\n return expandableAttribute.length > 0;\n });\n\n const hasExpandableSlot = computed(() => {\n return Boolean(slots[\"expandable\"]);\n });\n\n function toggleExpanded(row: ListItem): void {\n if (isExpanded(row)) {\n expandedRows.value = expandedRows.value.filter(\n (it) => !itemEquals(it, row, keyAttribute),\n );\n emit(\"collapse\", row);\n } else {\n expandedRows.value.push(row);\n emit(\"expand\", row);\n }\n }\n\n function isExpanded(row: ListItem): boolean {\n return includeItem(row, expandedRows.value, keyAttribute);\n }\n\n function rowAriaExpanded(row: ListItem): boolean | undefined {\n if (!isExpandableTable || !row[expandableAttribute]) {\n return undefined;\n }\n\n return isExpanded(row);\n }\n\n function expandableRowClasses(row: ListItem, index: number): string[] {\n const rows = expandableRows(row);\n\n if (!rows) {\n return [];\n }\n\n const border =\n index < rows.length - 1 ? [\"table__row--expanded-border\"] : [];\n const expanded = isExpanded(row)\n ? []\n : [\"table__expandable-row--collapsed\"];\n\n return [\"table__expandable-row\", ...border, ...expanded];\n }\n\n function expandableColumnClasses(\n column: FTableColumnData,\n index: number,\n ): string[] {\n const indented = index === 0 ? [\"table__column--indented\"] : [];\n\n return [\n \"table__column\",\n `table__column--${column.type}`,\n column.size,\n ...indented,\n ];\n }\n\n function getExpandableDescribedby(row: ListItem): string | undefined {\n if (!isExpandableTable) {\n return undefined;\n }\n if (!describedby || describedby.length < 1) {\n return undefined;\n }\n\n if (!hasExpandableContent(row)) {\n return undefined;\n }\n\n return describedby;\n }\n\n function expandableRows(row: ListItem): ListArray | undefined {\n const expandableRows = row[expandableAttribute];\n\n if (typeof expandableRows === \"undefined\") {\n return undefined;\n }\n if (!Array.isArray(expandableRows)) {\n throw new Error(`Expandable rows must be a ListArray`);\n }\n\n return expandableRows;\n }\n\n function hasExpandableContent(row: ListItem): boolean {\n return Boolean(expandableRows(row));\n }\n\n return {\n expandedRows,\n isExpandableTable,\n hasExpandableSlot,\n toggleExpanded,\n isExpanded,\n rowAriaExpanded,\n expandableRowClasses,\n expandableColumnClasses,\n getExpandableDescribedby,\n expandableRows,\n hasExpandableContent,\n };\n}\n","<template>\n <div :class=\"wrapperClasses\">\n <table class=\"table\" :role=\"tableRole\" :class=\"tableClasses\" v-bind=\"$attrs\">\n <caption v-if=\"hasCaption\">\n <!-- @slot Slot for table caption. -->\n <slot name=\"caption\"></slot>\n </caption>\n <colgroup>\n <col v-if=\"isExpandableTable\" class=\"table__column--shrink\" />\n <col v-if=\"selectable\" class=\"table__column--shrink\" />\n <col v-for=\"column in columns\" :key=\"column.id\" :class=\"column.size\" />\n </colgroup>\n <thead>\n <tr class=\"table__row\">\n <th v-if=\"isExpandableTable\" scope=\"col\">\n <span class=\"sr-only\">{{ $t(\"fkui.interactive-table.select\", \"Expandera\") }}</span>\n </th>\n\n <th v-if=\"selectable\" scope=\"col\">\n <span class=\"sr-only\">{{ $t(\"fkui.interactive-table.select\", \"Markera\") }}</span>\n </th>\n\n <th\n v-for=\"column in visibleColumns\"\n :key=\"column.id\"\n scope=\"col\"\n :class=\"columnClasses(column)\"\n v-on=\"column.sortable ? { click: () => onClickColumnHeader(column) } : {}\"\n >\n <!-- eslint-disable-next-line vue/no-v-html -->\n <span v-html=\"escapeNewlines(column.title)\"></span>\n <f-icon v-if=\"column.sortable\" :class=\"iconClasses(column)\" :name=\"iconName(column)\" />\n <span v-if=\"column.description\" class=\"table__column__description\">{{\n column.description\n }}</span>\n </th>\n </tr>\n </thead>\n <tbody ref=\"tbodyElement\">\n <template v-for=\"(row, index) in rows\" :key=\"rowKey(row)\">\n <tr\n :class=\"rowClasses(row, index)\"\n :aria-label=\"rowDescription(row)\"\n :aria-expanded=\"rowAriaExpanded(row)\"\n :aria-level=\"isExpandableTable ? 1 : undefined\"\n :aria-describedby=\"getExpandableDescribedby(row)\"\n tabindex=\"0\"\n @keydown.self=\"onKeydown($event, index)\"\n @click=\"onClick($event, row, index)\"\n >\n <td v-if=\"isExpandableTable\">\n <div v-if=\"hasExpandableContent(row)\" class=\"table__expand-icon\">\n <f-icon name=\"arrow-right\" :rotate=\"isExpanded(row) ? '270' : '90'\"></f-icon>\n </div>\n </td>\n\n <td v-if=\"selectable\" class=\"table__column--selectable\">\n <div class=\"table__input\">\n <f-checkbox-field\n :value=\"true\"\n :model-value=\"isSelected(row)\"\n @click.self=\"onSelect(row)\"\n >\n <span v-if=\"hasCheckboxDescription\" class=\"sr-only\">\n <slot name=\"checkbox-description\" v-bind=\"{ row }\" />\n </span>\n </f-checkbox-field>\n </div>\n </td>\n\n <!--\n @slot Slot for table row.\n\n The row object is available through `v-slot=\"{ <propertyName> }\"`, e.g.\n `v-slot=\"{ row }\"`.\n\n The following properties are available:\n\n * `row: ListItem;` The object to be visualized.\n -->\n <slot v-bind=\"{ row }\" />\n </tr>\n\n <template v-if=\"isExpandableTable && hasExpandableContent(row)\">\n <tr\n v-for=\"(expandableRow, expandableIndex) in expandableRows(row)\"\n :key=\"rowKey(expandableRow)\"\n aria-level=\"2\"\n :class=\"expandableRowClasses(row, expandableIndex)\"\n >\n <!--\n Expandable column placeholder.\n Expandable rows cannot be expanded.\n -->\n <td></td>\n\n <!--\n Selectable column placeholder.\n Expandable rows cannot be selected.\n -->\n <td v-if=\"selectable\" class=\"table__column--selectable\"></td>\n\n <template v-if=\"!hasExpandableSlot\">\n <td\n v-for=\"(column, columnIndex) in columns\"\n :key=\"`${rowKey(expandableRow)}${column.name}`\"\n :class=\"expandableColumnClasses(column, columnIndex)\"\n >\n {{ expandableRow[column.name] }}\n </td>\n </template>\n <td v-else class=\"table__column table__column--indented\" :colspan=\"columns.length\">\n <!--\n @slot Slot for expandable table row.\n\n The row object is available through `v-slot=\"{ <propertyName> }\"`, e.g.\n `v-slot=\"{ expandableRow }\"`.\n\n The following properties are available:\n\n * `expandableRow: ListItem;` The object to be visualized.\n * `parentRow: ListItem;` The parent row of the expandable rows.\n -->\n <slot name=\"expandable\" v-bind=\"{ expandableRow, parentRow: row }\" />\n </td>\n </tr>\n </template>\n </template>\n\n <tr v-if=\"!hasInitiateColumns\">\n <slot v-bind=\"{ row: emptyRow }\"></slot>\n </tr>\n\n <template v-if=\"isEmpty\">\n <tr v-show=\"false\" hidden>\n <!--\n when no rows are present the columns wont be rendered\n either so we must add an empty blank row for columns\n visibility etc to update\n -->\n <slot v-bind=\"{ row: emptyRow }\"></slot>\n </tr>\n\n <tr>\n <td class=\"table__column table__column--action\" :colspan=\"nbOfColumns\">\n <!--\n @slot Slot for displaying a message when table is empty.\n Default text is 'Tabellen är tom' (key fkui.interactive-table.empty).\n -->\n <slot name=\"empty\">{{ $t(\"fkui.interactive-table.empty\", \"Tabellen är tom\") }}</slot>\n </td>\n </tr>\n </template>\n </tbody>\n </table>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, type PropType } from \"vue\";\nimport { type ListArray, type ListItem } from \"../../types\";\nimport {\n TableScroll,\n emptyTableRow,\n hasSlot,\n tableScrollClasses,\n itemEquals,\n includeItem,\n renderSlotText,\n} from \"../../utils\";\nimport {\n FTableColumnData,\n FTableColumnSort,\n FTableInterface,\n addColumn,\n setVisibilityColumn,\n updateSortOrder,\n setSortableColumns,\n getSortableIconName,\n getSortableIconClasses,\n} from \"../FTableColumn\";\nimport { ActivateItemInjected, ActivateItemInterface } from \"../FCrudDataset\";\nimport { FSortFilterDatasetInjected, FSortFilterDatasetInterface } from \"../FSortFilterDataset\";\nimport { FCheckboxField } from \"../FCheckboxField\";\nimport { TranslationMixin } from \"../../plugins\";\nimport { FIcon } from \"../FIcon\";\nimport { onKeydown } from \"./FTableKeybindings\";\nimport { type ExpandableTable, useExpandableTable } from \"./useExpandableTable\";\n\ninterface FInteractiveTableData {\n activeRow: ListItem | undefined;\n columns: FTableColumnData[];\n emptyRow: Record<string, unknown>;\n selectedRows: ListArray;\n tr: HTMLElement[];\n}\n\nfunction forceRepaintIE11(target: HTMLElement): void {\n if (navigator.userAgent.includes(\"Trident\")) {\n target.style.display = \"none\";\n /* eslint-disable-next-line @typescript-eslint/no-unused-expressions -- technical debt, this function is probably not needed any longer */\n target.offsetHeight;\n target.style.removeProperty(\"display\");\n }\n}\n\nexport default defineComponent({\n name: \"FInteractiveTable\",\n components: { FCheckboxField, FIcon },\n mixins: [TranslationMixin],\n provide(): FTableInterface {\n return {\n addColumn: (column: FTableColumnData) => {\n this.columns = addColumn(this.columns, column);\n },\n setVisibilityColumn: (id: string, visible: boolean) => {\n setVisibilityColumn(this.columns, id, visible);\n },\n textFieldTableMode: true,\n };\n },\n inheritAttrs: false,\n props: {\n /**\n * The rows to be listed.\n * The rows will be listed in the given array order.\n */\n rows: {\n type: Array as PropType<ListArray>,\n required: true,\n },\n /**\n * If `true` hovering over a row will be highlighted\n */\n hover: {\n type: Boolean,\n default: false,\n },\n /**\n * Unique attribute in rows.\n */\n keyAttribute: {\n type: String,\n required: true,\n },\n /**\n * Attribute of expandable content in rows.\n * If provided, the table can contain expandable rows.\n */\n expandableAttribute: {\n type: String,\n default: \"\",\n },\n /**\n * Element id for aria-describedby on expandable rows to describe expanded content.\n */\n expandableDescribedby: {\n type: String,\n default: \"\",\n },\n /**\n * If `true` the table rows will be selectable.\n * @see 'select' and 'unselect' events.\n */\n selectable: {\n type: Boolean,\n default: false,\n },\n /**\n * If `true` alternating rows will use a different background color.\n */\n striped: {\n type: Boolean,\n default: false,\n },\n /**\n * Enable scrolling inside table.\n *\n * Can be one of the following values:\n *\n * - `\"horizontal\"`: Enables horizontal scrolling\n * - `\"vertical\"`: Enables vertical scrolling\n * - `\"both\"`: Enables scrolling in both directions\n * - `\"none\"`: Disables scrolling (default)\n */\n scroll: {\n type: String as PropType<TableScroll>,\n default: TableScroll.NONE,\n validator: function (value: string): boolean {\n const types: string[] = Object.values(TableScroll);\n return types.includes(value);\n },\n },\n /**\n * V-model will bind to value containing selected rows.\n */\n modelValue: {\n type: Array as PropType<ListArray | undefined>,\n required: false,\n default: undefined,\n },\n },\n emits: [\n \"change\",\n \"click\",\n \"update\",\n \"unselect\",\n \"update:modelValue\",\n \"select\",\n /**\n * Emitted when row is expanded.\n *\n * @event expand\n * @param row\n * @type {ListItem}\n */\n \"expand\",\n /**\n * Emitted when row is collapsed.\n *\n * @event collapse\n * @param row\n * @type {ListItem}\n */\n \"collapse\",\n ],\n setup(props, context): FSortFilterDatasetInterface & ActivateItemInterface & ExpandableTable {\n const sortFilterDatasetInjected = FSortFilterDatasetInjected();\n const activateItemInjected = ActivateItemInjected();\n const expandableTable = useExpandableTable(\n props.expandableAttribute,\n props.keyAttribute,\n props.expandableDescribedby,\n context.emit,\n context.slots,\n );\n\n return { ...sortFilterDatasetInjected, ...activateItemInjected, ...expandableTable };\n },\n data(): FInteractiveTableData {\n return {\n activeRow: undefined,\n columns: [],\n emptyRow: emptyTableRow(),\n selectedRows: [],\n tr: [],\n };\n },\n computed: {\n hasCaption(): boolean {\n return hasSlot(this, \"caption\");\n },\n hasCheckboxDescription(): boolean {\n return hasSlot(this, \"checkbox-description\", { row: this.emptyRow });\n },\n hasInitiateColumns(): boolean {\n return this.columns.length > 0;\n },\n isEmpty(): boolean {\n return this.rows.length === 0;\n },\n visibleColumns(): FTableColumnData[] {\n return this.columns.filter((col) => col.visible);\n },\n tableClasses(): string[] {\n const classes = [];\n if (this.selectable) {\n classes.push(\"table--selectable\");\n }\n if (this.hover) {\n classes.push(\"table--hover\");\n }\n return classes;\n },\n tableRole(): string {\n return this.isExpandableTable ? \"treegrid\" : \"grid\";\n },\n wrapperClasses(): string[] {\n return tableScrollClasses(this.scroll);\n },\n nbOfColumns(): number {\n let columnCount = this.columns.length;\n\n if (this.selectable) {\n columnCount++;\n }\n if (this.isExpandableTable) {\n columnCount++;\n }\n\n return columnCount;\n },\n },\n watch: {\n rows: {\n immediate: true,\n deep: true,\n handler: function () {\n if (this.modelValue) {\n // Remove old selected rows that may not exists in rows.\n this.selectedRows = this.modelValue.filter((row: ListItem) => {\n return includeItem(row, this.rows, this.keyAttribute);\n });\n }\n },\n },\n },\n updated() {\n const tbodyElement = this.$refs[\"tbodyElement\"] as HTMLElement;\n const trElements = [].slice.call(tbodyElement.children) as HTMLElement[];\n const trInteractableElements = trElements.filter((tr) => {\n return tr.tabIndex === 0;\n });\n\n this.tr = trInteractableElements;\n },\n mounted() {\n this.registerCallbackOnSort(this.callbackOnSort);\n this.registerCallbackOnMount(this.callbackSortableColumns);\n this.registerCallbackAfterItemAdd(this.callbackAfterItemAdd);\n this.registerCallbackBeforeItemDelete(this.callbackBeforeItemDelete);\n },\n methods: {\n isActive(row: ListItem): boolean {\n return itemEquals(row, this.activeRow, this.keyAttribute);\n },\n isSelected(row: ListItem): boolean {\n return includeItem(row, this.selectedRows, this.keyAttribute);\n },\n onKeydownExpandable(event: KeyboardEvent, index: number) {\n if (event.key === \" \" || event.key === \"Spacebar\") {\n event.preventDefault();\n return;\n }\n\n onKeydown.call(this, event, index);\n },\n onKeydown(event: KeyboardEvent, index: number): void {\n onKeydown.call(this, event, index);\n },\n onClick(event: MouseEvent, row: ListItem): void {\n const { target } = event as MouseEvent & { target: HTMLElement };\n const isRelevant = [\"TD\", \"TH\"].includes(target.nodeName);\n\n if (isRelevant) {\n /* get <tr> element */\n const parent = target.parentElement;\n this.activate(row, parent);\n }\n },\n activate(row: ListItem, tr: HTMLElement | null): void {\n /**\n * Emitted when row is clicked.\n *\n * @event click\n * @param row\n * @type {ListItem}\n */\n this.$emit(\"click\", row);\n\n if (this.isExpandableTable && this.hasExpandableContent(row)) {\n this.toggleExpanded(row);\n }\n\n if (!itemEquals(row, this.activeRow, this.keyAttribute)) {\n /**\n * Emitted when row is activated.\n *\n * @event change\n * @param row\n * @type {ListItem}\n */\n this.$emit(\"change\", row);\n this.activeRow = row;\n\n if (tr) {\n /* ie11: force focus on <tr> instead of <td> */\n tr.focus();\n\n /* ie11 also needs to force repaint or the outline will not\n * be rendered properly */\n const td = tr.children[0] as HTMLElement;\n forceRepaintIE11(td);\n }\n }\n },\n rowDescription(row: ListItem): string | undefined {\n const slot = this.$slots[\"row-description\"];\n return renderSlotText(slot, { row });\n },\n onSelect(row: ListItem): void {\n if (includeItem(row, this.selectedRows, this.keyAttribute)) {\n this.selectedRows = this.selectedRows.filter((i) => !itemEquals(i, row, this.keyAttribute));\n /**\n * Emitted when row is unselected.\n *\n * @event unselect\n * @param row\n * @type {ListItem}\n */\n this.$emit(\"unselect\", row);\n } else {\n this.selectedRows.push(row);\n /**\n * Emitted when row is selected.\n *\n * @event select\n * @param row\n * @type {ListItem}\n * @param selectedRows\n * @type {ListArray}\n */\n this.$emit(\"select\", row);\n }\n\n this.updateVModelWithSelectedRows();\n this.$forceUpdate();\n },\n updateVModelWithSelectedRows(): void {\n if (this.modelValue) {\n /**\n * V-model event to update value property.\n * @event update:modelValue\n */\n this.$emit(\"update:modelValue\", this.selectedRows);\n\n /**\n * Vue2 v-model event to update value property.\n * @deprecated\n * @event update\n */\n this.$emit(\"update\", this.selectedRows);\n }\n },\n rowClasses(row: ListItem, index: number): string[] {\n const active = this.isActive(row) ? [\"table__row--active\"] : [];\n const selected = this.isSelected(row) ? [\"table__row--selected\"] : [];\n const isExpandableRow = this.isExpandableTable && this.hasExpandableContent(row);\n const expandable = isExpandableRow ? [\"table__row--expandable\"] : [];\n const expanded = this.isExpanded(row) ? [\"table__row--expanded-border\"] : [];\n const striped = this.striped && index % 2 !== 0 ? [\"table__row--striped\"] : [];\n\n return [\"table__row\", ...active, ...selected, ...striped, ...expandable, ...expanded];\n },\n rowKey(row: ListItem): string {\n const key = row[this.keyAttribute];\n if (typeof key === \"undefined\") {\n throw new Error(`Key attribute [${this.keyAttribute}]' is missing in row`);\n }\n return String(key);\n },\n columnClasses(column: FTableColumnData): string[] {\n const sortable = column.sortable ? [\"table__column--sortable\"] : [];\n return [\"table__column\", `table__column--${column.type}`, ...sortable, column.size];\n },\n iconClasses(column: FTableColumnData): string[] {\n return getSortableIconClasses(column);\n },\n iconName(column: FTableColumnData) {\n return getSortableIconName(column);\n },\n onClickColumnHeader(column: FTableColumnData): void {\n if (!column.sortable) {\n return;\n }\n let columnName = column.name;\n if (column.sort === FTableColumnSort.DESCENDING) {\n columnName = \"\";\n column.sort = FTableColumnSort.UNSORTED;\n }\n this.sort(columnName, column.sort !== FTableColumnSort.ASCENDING);\n },\n callbackOnSort(columnName: string, ascending: boolean): void {\n updateSortOrder(this.columns, columnName, ascending);\n },\n callbackSortableColumns(columnNames: string[]): void {\n setSortableColumns(this.columns, columnNames);\n },\n callbackAfterItemAdd(item: ListItem): void {\n this.activate(item, null);\n },\n callbackBeforeItemDelete(item: ListItem): void {\n if (this.rows.length === 0) {\n return;\n }\n // Activate the item above the deleted one if it exists\n let targetIndex = this.rows.indexOf(item) - 1;\n if (targetIndex < 0 && this.rows.length > 1) {\n targetIndex = 1;\n } else if (targetIndex < 0) {\n targetIndex = 0;\n }\n this.activate(this.rows[targetIndex], this.tr[targetIndex]);\n },\n escapeNewlines(value: string): string {\n return value.replace(/\\n/g, \"<br/>\");\n },\n },\n});\n</script>\n","<template>\n <div class=\"textarea-field\" :class=\"validityClass\">\n <f-label :for=\"id\">\n <template #default>\n <!-- @slot Slot for label content. -->\n <slot name=\"default\"></slot>\n </template>\n\n <template v-if=\"$slots.tooltip\" #tooltip>\n <!-- @slot Slot for tooltip. -->\n <slot name=\"tooltip\"></slot>\n </template>\n\n <template #description=\"{ descriptionClass, discreteDescriptionClass }\">\n <!--\n @slot Optional slot for description. See [FLabel](#/Components/FLabel) for details.\n @binding {string[]} descriptionClass CSS classes for primary description content.\n @binding {string[]} discreteDescriptionClass CSS classes for format description.\n -->\n <slot name=\"description\" v-bind=\"{ descriptionClass, discreteDescriptionClass }\"></slot>\n </template>\n\n <template #error-message>\n <!--\n @slot Slot for displaying single or several error messages.\n @binding {boolean} hasError Set to true when a validation error is present\n @binding {string} validationMessage Descriptive validation error message for current error\n -->\n <slot name=\"error-message\" v-bind=\"{ hasError, validationMessage }\">\n <template v-if=\"hasError\">{{ validationMessage }}</template>\n </slot>\n </template>\n </f-label>\n\n <f-label v-if=\"softLimit\" :for=\"id\" aria-live=\"polite\">\n <template #description=\"{ descriptionClass }\">\n <span v-if=\"showCharactersLeftWarning\" :class=\"descriptionClass\">\n {{ charactersLeftWarningInterpolated }}\n </span>\n </template>\n </f-label>\n <textarea\n :id=\"id\"\n :class=\"textareaClass\"\n v-bind=\"attrs\"\n :disabled=\"disabled\"\n @input=\"onInput\"\n @validity=\"onValidity\"\n @pending-validity=\"onPendingValidity\"\n ></textarea>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from \"vue\";\nimport { type ValidityEvent, isSet, ElementIdService } from \"@fkui/logic\";\nimport { FLabel } from \"../FLabel\";\nimport { renderSlotText, dispatchComponentValidityEvent } from \"../../utils\";\n\nexport default defineComponent({\n name: \"FTextareaField\",\n components: {\n FLabel,\n },\n inheritAttrs: false,\n props: {\n /**\n * The id for the input id attribute.\n * The id for the label for attribute.\n * If the prop is not set a random value will be generated.\n */\n id: {\n type: String,\n required: false,\n default: () => ElementIdService.generateElementId(),\n },\n /**\n * The value for the input.\n * If the prop is not set undefined will be used.\n * @model\n */\n modelValue: {\n type: String,\n required: false,\n default: undefined,\n },\n /**\n * The number of characters for when the \"characters left\" warning should be shown.\n * A value of 100 means that when 100 or less characters is left the warning is shown.\n * If softLimit is used, then maxlength is required.\n * If the prop is not set undefined will be used, which means that no warning will be shown.\n */\n softLimit: {\n type: Number,\n required: false,\n default: undefined,\n },\n /**\n * The maximum amount of characters permitted in the textarea.\n * If the prop is not set undefined will be used, which means unlimited.\n */\n maxlength: {\n type: Number,\n required: false,\n default: undefined,\n },\n /**\n * The string that should be shown in the \"characters left\" warning.\n * Must contain the word %charactersLeft% which is used to interpolate the number of characters left into the warning string.\n * If the prop is not set \"Antal tecken kvar: %charactersLeft%\" will be used.\n */\n charactersLeftWarning: {\n type: String,\n required: false,\n default: \"Antal tecken kvar: %charactersLeft%\",\n },\n /**\n * Specifies that the component should be disabled, i.e. unusable.\n */\n disabled: {\n type: Boolean,\n default: false,\n },\n /**\n * Enabling vertical resizing of the textarea\n */\n resizable: {\n type: Boolean,\n default: false,\n },\n },\n emits: [\"input\", \"update:modelValue\"],\n data() {\n return {\n validityMode: \"INITIAL\" as string,\n validationMessage: \"\" as string,\n };\n },\n computed: {\n attrs(): Record<string, unknown> {\n return {\n rows: 4,\n ...this.$attrs,\n value: this.modelValue,\n maxlength: this.maxlength,\n };\n },\n isValid(): boolean {\n return this.validityMode === \"VALID\";\n },\n hasError(): boolean {\n return this.validityMode === \"ERROR\";\n },\n validityClass(): Record<string, boolean> {\n return {\n [\"textarea-field--error\"]: this.hasError,\n };\n },\n charactersLeft(): number {\n if (this.modelValue) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- required when `softLimit`\n return this.maxlength! - this.modelValue.length;\n } else {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- required when `softLimit`\n return this.maxlength!;\n }\n },\n showCharactersLeftWarning(): boolean {\n return (\n isSet(this.softLimit) &&\n isSet(this.modelValue) &&\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- required when `softLimit`\n this.modelValue.length >= this.maxlength! - this.softLimit\n );\n },\n charactersLeftWarningInterpolated(): string {\n return `${this.charactersLeftWarning.replace(\"%charactersLeft%\", this.charactersLeft.toString())}`;\n },\n textareaClass(): string[] {\n const classes = [\"textarea-field__textarea\"];\n\n if (this.resizable) {\n classes.push(\"textarea-field__resize--vertical\");\n } else {\n classes.push(\"textarea-field__resize--none\");\n }\n\n return classes;\n },\n },\n mounted() {\n if (isSet(this.softLimit) && !isSet(this.maxlength)) {\n throw new Error(\"You must pass a maxlength\");\n }\n },\n methods: {\n onInput(event: Event): void {\n if (event.target instanceof HTMLTextAreaElement) {\n /**\n * V-model event.\n * @event update:modelValue\n * @type {string}\n */\n this.$emit(\"update:modelValue\", event.target.value);\n\n /**\n * Vue2 v-model event.\n * @deprecated\n * @event input\n * @type {string}\n */\n this.$emit(\"input\", event.target.value);\n }\n },\n onValidity({ detail }: CustomEvent<ValidityEvent>): void {\n this.validationMessage = detail.validationMessage;\n this.validityMode = detail.validityMode;\n const errorMessage = renderSlotText(this.$slots.default) ?? \"\";\n const element = this.$el.querySelector(`#${detail.elementId}`);\n if (element) {\n dispatchComponentValidityEvent(element, {\n ...detail,\n errorMessage,\n focusElementId: detail.elementId,\n });\n }\n },\n onPendingValidity(): void {\n this.validityMode = \"INITIAL\";\n },\n },\n});\n</script>\n","<template>\n <!-- [html-validate-disable-next no-inline-style] -->\n <div :class=\"animationClasses\" :style=\"heightStyle\">\n <div v-if=\"shouldVIf\" v-show=\"shouldVShow\" ref=\"content\" data-test=\"animation-content\">\n <!-- @slot Slot used for content shown when component is expanded -->\n <slot></slot>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, type PropType } from \"vue\";\nimport { AnimationCallback } from \"./AnimationCallback\";\n\nconst ANIMATION_DURATION = 500;\nconst NO_CSS_CLASSES = \"\";\nconst CLOSED_CSS_CLASS_OPACITY = \"animate-expand animate-expand--opacity\";\nconst CLOSED_CSS_CLASS = \"animate-expand\";\nconst ANIMATION_CSS_CLASSES = \"animate-expand animate-expand--expanded\";\n\nexport default defineComponent({\n name: \"IAnimateExpand\",\n props: {\n /**\n * Perform animation or not\n */\n animate: {\n type: Boolean,\n default: true,\n },\n /**\n * Use v-show instead of v-if when hiding content.\n */\n useVShow: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Toggle expanded/collapsed state\n */\n expanded: {\n type: [String, Number, Boolean],\n default: true,\n },\n /* Toggle opacity in animation */\n opacity: {\n type: Boolean,\n default: true,\n },\n /**\n * Optional callback for performing actions before animation.\n * Callback will await Promise.\n */\n beforeAnimation: {\n type: Function as PropType<AnimationCallback>,\n required: false,\n default(): AnimationCallback {\n return () => {\n /* do nothing */\n };\n },\n },\n /**\n * Optional callback for performing actions after animation.\n * Callback will await Promise.\n */\n afterAnimation: {\n type: Function as PropType<AnimationCallback>,\n required: false,\n default(): AnimationCallback {\n return () => {\n /* do nothing */\n };\n },\n },\n },\n data() {\n return {\n internalExpanded: Boolean(this.expanded),\n height: 0 as number | string,\n isAnimating: false,\n cssClasses: \"\",\n /**\n * When the open animation is triggered it creates a timer for `ANIMATION_DURATION`.\n * If the collapse animation is triggered before this timer has started\n * it must be canceled or the previous opening will reset the state before collapse is finished thus corrupting the state of the element.\n * Vice verse when collapse animation is triggered it also creates timers which the open animation must cancel.\n *\n * ```\n * Actor IAnimationExpand\n * | |\n * +----[ open ] -------> |\n * | +----+ Timer 1\n * | | |\n * +----[ close ] ------> | |\n * | +----)----+ Timer 2\n * | | | |\n * | *KABOOM* |<---+ |\n * | | |\n * | | |\n * | *KABOOM* |<--------+\n * | |\n * ```\n */\n timerList: [] as Array<ReturnType<typeof setTimeout>>,\n };\n },\n computed: {\n animationClasses(): string {\n if (!this.animate) {\n return \"\";\n }\n return this.cssClasses;\n },\n heightStyle(): string {\n return this.height === \"\" ? \"\" : `height: ${this.height}px`;\n },\n shouldVIf(): boolean {\n if (this.useVShow) {\n return true;\n } else {\n return this.internalExpanded;\n }\n },\n shouldVShow(): boolean {\n if (this.useVShow) {\n return this.internalExpanded;\n } else {\n return true;\n }\n },\n },\n watch: {\n expanded: {\n immediate: false,\n handler(): void {\n if (this.expanded && this.animate) {\n this.openAnimation();\n } else if (this.expanded) {\n this.openNoAnimation();\n } else if (this.animate) {\n this.closeAnimation();\n } else {\n this.closeNoAnimation();\n }\n },\n },\n },\n beforeMount(): void {\n // We don't want an initial animation (solved by immediate: false in watch),\n // but we need to setup css classes here for coming animations.\n if (this.expanded) {\n this.height = \"\";\n } else if (this.animate) {\n this.cssClasses = this.opacity ? CLOSED_CSS_CLASS_OPACITY : CLOSED_CSS_CLASS;\n }\n },\n methods: {\n getContentHeight(): number {\n const content = this.$refs.content as HTMLElement;\n return content ? content.getBoundingClientRect().height : 0;\n },\n async openNoAnimation(): Promise<void> {\n await this.beforeAnimation(true);\n this.internalExpanded = true;\n await this.$nextTick();\n this.cssClasses = NO_CSS_CLASSES;\n this.height = this.getContentHeight();\n await this.afterAnimation(true);\n },\n async closeNoAnimation(): Promise<void> {\n await this.beforeAnimation(false);\n this.internalExpanded = false;\n this.cssClasses = NO_CSS_CLASSES;\n this.height = \"0\";\n await this.$nextTick();\n await this.afterAnimation(false);\n },\n async openAnimation(): Promise<void> {\n await this.beforeAnimation(true);\n this.internalExpanded = true;\n await this.$nextTick();\n this.cssClasses = ANIMATION_CSS_CLASSES;\n this.height = this.getContentHeight();\n\n for (const timer of this.timerList) {\n clearTimeout(timer);\n }\n\n const t = setTimeout(async () => {\n this.timerList = [];\n this.cssClasses = NO_CSS_CLASSES;\n this.height = \"\";\n await this.afterAnimation(true);\n }, ANIMATION_DURATION);\n this.timerList = [t];\n },\n async closeAnimation(): Promise<void> {\n await this.beforeAnimation(false);\n\n this.height = this.getContentHeight();\n this.cssClasses = ANIMATION_CSS_CLASSES;\n\n for (const timer of this.timerList) {\n clearTimeout(timer);\n }\n\n const t1 = setTimeout(() => {\n this.timerList = this.timerList.filter((it) => it !== t1);\n this.cssClasses = this.opacity ? CLOSED_CSS_CLASS_OPACITY : CLOSED_CSS_CLASS;\n this.height = \"0\";\n }, 0);\n\n const t2 = setTimeout(async () => {\n this.timerList = this.timerList.filter((it) => it !== t2);\n this.internalExpanded = false;\n await this.afterAnimation(false);\n }, ANIMATION_DURATION);\n\n this.timerList = [t1, t2];\n },\n },\n});\n</script>\n","<template>\n <div class=\"tooltip\">\n <div class=\"tooltip__container\">\n <button\n class=\"tooltip__button\"\n type=\"button\"\n :aria-expanded=\"isOpen ? 'true' : 'false'\"\n @click=\"onClickToggle\"\n >\n <span class=\"icon-stack icon-stack--tooltip\">\n <f-icon name=\"circle\"></f-icon>\n <f-icon name=\"i\"></f-icon>\n <span class=\"sr-only\">{{ screenReaderText }}</span>\n </span>\n </button>\n <f-expand>\n <div v-if=\"isOpen\">\n <div class=\"tooltip__content-wrapper\" tabindex=\"-1\" :aria-hidden=\"isOpen ? undefined : 'true'\">\n <span v-show=\"isOpen\" class=\"tooltip__arrow\"></span>\n <div class=\"tooltip__content\">\n <component :is=\"headerTag\" v-if=\"hasHeader\" class=\"tooltip__header\">\n <!-- @slot Tooltip header content -->\n <slot name=\"header\"></slot>\n </component>\n\n <div class=\"tooltip__body\">\n <!-- @slot Tooltip body content-->\n <slot name=\"body\"></slot>\n </div>\n </div>\n <i-flex float=\"right\">\n <i-flex-item shrink>\n <button class=\"close-button\" type=\"button\" @click=\"onClickToggle\">\n <span>{{ closeButtonText }}</span>\n <f-icon class=\"button__icon\" name=\"close\"></f-icon>\n </button>\n </i-flex-item>\n </i-flex>\n </div>\n </div>\n </f-expand>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from \"vue\";\nimport { focus, TranslationService } from \"@fkui/logic\";\nimport { FExpand } from \"../FExpand\";\nimport { IFlex, IFlexItem } from \"../../internal-components\";\nimport { FIcon } from \"../FIcon\";\nimport { hasSlot } from \"../../utils\";\n\nexport default defineComponent({\n name: \"FTooltip\",\n components: { FExpand, FIcon, IFlex, IFlexItem },\n props: {\n /**\n * State (expanded or collapsed) of the tooltip. The value is `true` if the tooltip is expanded.\n *\n * @model\n */\n modelValue: {\n type: Boolean,\n required: false,\n },\n /**\n * Screen reader text for toggle button\n */\n screenReaderText: {\n type: String,\n required: true,\n },\n /**\n * Close button text\n */\n closeButtonText: {\n type: String,\n required: false,\n default: TranslationService.provider.translate(\"fkui.tooltip.close\", \"Stäng\"),\n },\n /**\n * Element to render for the header element inside the tooltip.\n *\n * Must be set to one of:\n *\n * - `div` (default)\n * - `span`\n * - `h1`\n * - `h2`\n * - `h3`\n * - `h4`\n * - `h5`\n * - `h6`\n */\n headerTag: {\n default: \"div\",\n required: false,\n validator(value: string): boolean {\n return [\"div\", \"span\", \"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\"].includes(value);\n },\n },\n },\n emits: [\"update:modelValue\", \"toggle\"],\n data() {\n return {\n isOpen: false,\n };\n },\n computed: {\n hasHeader(): boolean {\n return hasSlot(this, \"header\");\n },\n },\n watch: {\n modelValue: {\n immediate: true,\n handler(value: boolean) {\n this.isOpen = value;\n },\n },\n },\n mounted() {\n window.addEventListener(\"resize\", () => {\n if (this.isOpen) {\n this.positionArrow();\n }\n });\n\n if (this.isOpen) {\n this.positionArrow();\n }\n },\n methods: {\n /**\n * Gets called when the user interacts with the toggle button\n *\n * @internal\n */\n onClickToggle(): void {\n this.isOpen = !this.isOpen;\n\n const value = this.isOpen;\n const event = { isOpen: this.isOpen };\n\n /**\n * v-model event.\n *\n * @param {boolean} value - Model value\n */\n this.$emit(\"update:modelValue\", value);\n\n /**\n * Emitted when the state of the tooltip (collapsed/expanded) changes.\n *\n * @param {{ isOpen: boolean }} event - New state of tooltip.\n */\n this.$emit(\"toggle\", event);\n\n if (!this.isOpen) {\n const button = this.$el.querySelector(\".tooltip__button\");\n focus(button);\n }\n this.$nextTick(() => {\n this.positionArrow();\n });\n },\n positionArrow(): void {\n const button: HTMLElement | null = this.$el.querySelector(\".tooltip__button\");\n const arrow: HTMLElement | null = this.$el.querySelector(\".tooltip__arrow\");\n const content: HTMLElement | null = this.$el.querySelector(\".tooltip__content-wrapper\");\n const borderSize = 2;\n\n if (button && arrow && content) {\n const buttonOffsetLeft: number = button.offsetLeft - content.offsetLeft;\n const relativeOffset = buttonOffsetLeft - borderSize + button.getBoundingClientRect().width / 2;\n arrow.style.left = `${relativeOffset}px`;\n }\n },\n },\n});\n</script>\n","import { documentOrderComparator } from \"@fkui/logic\";\nimport { inject } from \"vue\";\n\n/**\n * @public\n */\nexport type FWizardKey = string | number | symbol | boolean;\n\n/**\n * @public\n */\nexport type StepNumber = number;\n\n/**\n * @public\n */\nexport interface FWizardStepDefinition {\n key: FWizardKey;\n element: Element;\n isOpen: boolean;\n stepNumber: number;\n\n /** Current open step or -1 if no step is open */\n currentOpen: StepNumber | -1;\n}\n\n/**\n * @public\n */\nexport interface FWizardApi {\n register(key: FWizardKey, element: Element): FWizardStepDefinition;\n unregister(key: FWizardKey): void;\n getStepCount(): number;\n openStep(step: FWizardStepDefinition): void;\n openNext(self: FWizardStepDefinition): void;\n cancel(): void;\n inheritedProps: {\n readonly headerTag: string;\n readonly disableInitialFocus: boolean;\n };\n}\n\nexport function FWizardApiInjected(): FWizardApi {\n return {\n register: inject(\"register\") as (\n key: FWizardKey,\n element: Element,\n ) => FWizardStepDefinition,\n unregister: inject(\"unregister\") as (key: FWizardKey) => void,\n getStepCount: inject(\"getStepCount\") as () => number,\n openStep: inject(\"openStep\") as (step: FWizardStepDefinition) => void,\n openNext: inject(\"openNext\") as (self: FWizardStepDefinition) => void,\n cancel: inject(\"cancel\") as () => void,\n inheritedProps: inject(\"inheritedProps\") as {\n readonly headerTag: string;\n readonly disableInitialFocus: boolean;\n },\n };\n}\n\nfunction reindex(dst: FWizardStepDefinition[]): void {\n dst.sort((a, b) => documentOrderComparator(a.element, b.element));\n for (let i = 0; i < dst.length; i++) {\n dst[i].stepNumber = i + 1;\n }\n}\n\n/**\n * Add a step to step list.\n *\n * @internal\n */\nexport function addStep(\n dst: FWizardStepDefinition[],\n key: FWizardKey,\n element: Element,\n): FWizardStepDefinition {\n const index = dst.findIndex((it) => it.key === key);\n if (index >= 0) {\n throw new Error(\n `An FWizardStep with key \"${key.toString()}\" is already registered, refusing to register multiple steps with same key.`,\n );\n }\n const step: FWizardStepDefinition = {\n key,\n element,\n stepNumber: -1 /* updated by reindex() later */,\n isOpen: false,\n currentOpen: -1,\n };\n dst.push(step);\n reindex(dst);\n return step;\n}\n\n/**\n * Remove a step from step list.\n *\n * @internal\n */\nexport function removeStep(\n dst: FWizardStepDefinition[],\n key: FWizardKey,\n): void {\n const index = dst.findIndex((it) => it.key === key);\n if (index >= 0) {\n dst.splice(index, 1);\n reindex(dst);\n }\n}\n","<template>\n <div class=\"wizard\">\n <!-- @slot One or more <f-wizard-step> elements -->\n <slot></slot>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, type PropType } from \"vue\";\nimport { FWizardApi, FWizardKey, FWizardStepDefinition, StepNumber, addStep, removeStep } from \"./FWizardApi\";\n\nexport default defineComponent({\n name: \"FWizard\",\n provide(): FWizardApi {\n const wizard = this; // eslint-disable-line @typescript-eslint/no-this-alias -- needed for provide to work\n const inheritedProps = {\n get headerTag(): string {\n return wizard.headerTag;\n },\n get disableInitialFocus(): boolean {\n return wizard.disableInitialFocus;\n },\n };\n return {\n register: this.register,\n unregister: this.unregister,\n getStepCount: this.getStepCount,\n openStep: this.openStep,\n openNext: this.openNext,\n cancel: this.cancel,\n inheritedProps,\n };\n },\n inheritAttrs: true,\n props: {\n modelValue: {\n type: String,\n default: null,\n },\n\n /**\n * Element to render for the header element inside the wizard steps.\n */\n headerTag: {\n type: String as PropType<string>,\n required: true,\n validator(value: string): boolean {\n return [\"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\"].includes(value);\n },\n },\n /**\n * When the first wizard step is registered, it is opened and focused by default.\n * Set this property to disable that behaviour.\n */\n disableInitialFocus: {\n type: Boolean,\n required: false,\n default: false,\n },\n },\n emits: [\"cancel\", \"change\", \"completed\", \"update:modelValue\"],\n data() {\n return {\n steps: [] as FWizardStepDefinition[],\n };\n },\n computed: {\n anyOpen(): boolean {\n return Boolean(this.getCurrentOpen());\n },\n },\n watch: {\n modelValue: {\n handler() {\n if (!this.modelValue) {\n return;\n }\n const step = this.steps.find((it) => it.key === this.modelValue);\n if (!step) {\n throw new Error(`Failed to open step \"${this.modelValue}\"`);\n }\n if (!step.isOpen) {\n this.openStep(step);\n }\n },\n },\n },\n methods: {\n register(key: FWizardKey, element: Element): FWizardStepDefinition {\n const step = addStep(this.steps, key, element);\n\n if (this.modelValue !== null) {\n if (step.key === this.modelValue) {\n this.doOpen(step.stepNumber);\n }\n } else {\n /* open this step if this is the first step being added */\n if (this.steps.length === 1) {\n this.doOpen(step.stepNumber);\n }\n }\n const current = this.getCurrentOpen();\n step.currentOpen = current ? current.stepNumber : -1;\n return step;\n },\n unregister(key: FWizardKey) {\n removeStep(this.steps, key);\n },\n getStepCount(): number {\n return this.steps.length;\n },\n getCurrentOpen(): FWizardStepDefinition | null {\n return this.steps.find((it) => it.isOpen) ?? null;\n },\n openStep(step: FWizardStepDefinition): void {\n this.doOpen(step.stepNumber);\n },\n async openNext(step: FWizardStepDefinition): Promise<void> {\n const current = step.stepNumber;\n const next = current + 1;\n\n if (next > this.steps.length) {\n await this.doOpen(-1);\n /**\n * Emitted when wizard is finished, i.e.\n * user pressing 'Fortsätt' button in last step.\n */\n this.$emit(\"completed\");\n } else {\n await this.doOpen(next);\n }\n },\n async doOpen(open: StepNumber | -1): Promise<void> {\n const stepToClose = this.steps.find((it) => it.isOpen);\n\n if (stepToClose) {\n stepToClose.isOpen = false;\n }\n /**\n * Ensure opened step is closed first with animation\n * before opening next step\n */\n await this.$nextTick();\n\n for (const step of this.steps) {\n step.isOpen = step.stepNumber === open;\n step.currentOpen = open;\n }\n\n if (open >= 0) {\n const step = this.steps[open - 1];\n /**\n * V-model event.\n * @event update:modelValue\n * @type {FWizardKey}\n */\n this.$emit(\"update:modelValue\", step.key);\n\n /**\n * Vue2 v-model event.\n * @deprecated\n * @event change\n * @type {FWizardKey}\n */\n this.$emit(\"change\", step.key);\n } else {\n this.$emit(\"update:modelValue\", null);\n this.$emit(\"change\", null);\n }\n },\n cancel(): void {\n /**\n * Emitted when wizard is canceled, i.e.\n * user pressing 'Avbryt' button.\n */\n this.$emit(\"cancel\");\n },\n },\n});\n</script>\n","<template>\n <div class=\"wizard-step\" :class=\"cssClass\" :aria-current=\"isOpen ? 'step' : undefined\">\n <div ref=\"header\" role=\"group\" class=\"wizard-step__header\" tabindex=\"-1\">\n <i-flex>\n <i-flex-item align=\"bottom\" shrink aria-hidden=\"true\">\n <div class=\"wizard-step__header__line-up\"></div>\n <div class=\"icon-stack\">\n <f-icon name=\"circle\" />\n <f-icon name=\"success\" />\n <div data-test=\"step-number\">{{ stepNumber }}</div>\n </div>\n <div class=\"wizard-step__header__line-down\"></div>\n </i-flex-item>\n\n <i-flex-item align=\"bottom\" grow>\n <template v-if=\"isOpen\">\n <slot\n name=\"step-of\"\n v-bind=\"{ headerClass: 'wizard-step__header__step-of', stepNumber, totalSteps }\"\n >\n <span aria-hidden=\"true\" class=\"wizard-step__header__step-of\">{{\n defaultCurrentStepInformation\n }}</span>\n </slot>\n </template>\n\n <i-flex class=\"wizard-step__header__title-container\">\n <i-flex-item align=\"center\">\n <a\n v-if=\"showLink\"\n aria-expanded=\"false\"\n role=\"button\"\n href=\"#\"\n class=\"anchor wizard-step__header__title\"\n @click.prevent=\"open\"\n @keypress.space.prevent=\"open\"\n >\n <span class=\"sr-only\">{{ defaultCurrentStepInformation }}&nbsp;</span>\n {{ title }}\n <span class=\"sr-only\"\n >&nbsp;{{ $t(\"fkui.wizard-step.finished-step\", \"Avklarat steg\") }}</span\n >\n </a>\n\n <component :is=\"inheritedProps.headerTag\" v-else class=\"wizard-step__header__title\">\n <span class=\"sr-only\">{{ defaultCurrentStepInformation }}&nbsp;</span>\n {{ title }}\n <span v-if=\"isPending\" class=\"sr-only\">\n &nbsp;{{ $t(\"fkui.wizard-step.pending\", \"Inaktivt\") }}\n </span>\n </component>\n </i-flex-item>\n </i-flex>\n <div class=\"wizard-step__header__line-adjustment\"></div>\n </i-flex-item>\n </i-flex>\n </div>\n\n <i-animate-expand\n :key=\"animationId\"\n :opacity=\"false\"\n :expanded=\"isOpen\"\n :before-animation=\"beforeAnimation\"\n :after-animation=\"afterAnimation\"\n class=\"wizard-step__connector\"\n >\n <f-validation-form\n :id=\"formId\"\n :before-submit=\"beforeNext\"\n :before-validation=\"beforeValidation\"\n :use-error-list=\"useErrorList\"\n class=\"wizard-step-body\"\n @submit=\"onSubmit\"\n >\n <template #error-message>\n <slot name=\"error-message\">\n {{ $t(\"fkui.wizard-step.errorlist.title\", \"Oj, du har glömt att fylla i något. Gå till:\") }}\n </slot>\n </template>\n\n <template #default>\n <slot name=\"default\"></slot>\n\n <div class=\"button-group\">\n <button\n data-test=\"submit-button\"\n :data-disabled=\"ignoreClick ? 'true' : 'false'\"\n type=\"submit\"\n class=\"button button--primary button-group__item button--large\"\n >\n <slot name=\"next-button-text\">\n <template v-if=\"isFinalStep\">\n {{ $t(\"fkui.wizard-step.button.next.text-final\", \"Gå vidare och granska\") }}\n </template>\n <template v-else>\n {{ $t(\"fkui.wizard-step.button.next.text\", \"Fortsätt\") }}\n <span class=\"sr-only\">\n &nbsp;{{ $t(\"fkui.wizard-step.button.next.sr-text\", \"till nästa steg\") }}\n </span>\n </template>\n </slot>\n </button>\n <button\n data-test=\"cancel-button\"\n type=\"button\"\n class=\"button button--secondary button-group__item button--large\"\n @click=\"onCancel\"\n >\n {{ $t(\"fkui.wizard-step.button.cancel.text\", \"Avbryt\") }}\n </button>\n </div>\n </template>\n </f-validation-form>\n </i-animate-expand>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, getCurrentInstance, type PropType } from \"vue\";\nimport { DomUtils } from \"@fkui/logic\";\nimport { TranslationMixin } from \"../../plugins\";\nimport { GroupValidityEvent } from \"../../types\";\nimport { getHTMLElementFromVueRef } from \"../../utils\";\nimport { IAnimateExpand, IFlex, IFlexItem } from \"../../internal-components\";\nimport { FValidationForm, type FValidationFormCallback } from \"../FValidationForm\";\nimport { FIcon } from \"../FIcon\";\nimport { FWizardApi, FWizardApiInjected, FWizardStepDefinition } from \"./FWizardApi\";\n\nconst SCROLL_DURATION = 500;\n\n/**\n * Shared variable to keep track if another step has\n * initated a scrolling that is ongoing.\n * @see beforeAnimation-method .\n */\nlet ongoingScrollPromise: undefined | Promise<void> = undefined;\n\nexport default defineComponent({\n name: \"FWizardStep\",\n components: { IAnimateExpand, IFlex, IFlexItem, FValidationForm, FIcon },\n mixins: [TranslationMixin],\n inheritAttrs: true,\n props: {\n title: {\n type: String,\n required: true,\n },\n /**\n * Supply this function in order to run actions before navigating to the next step.\n *\n * It is possible to cancel the navigation by returning `BeforeNextAction.CANCEL`.\n * When cancelled, the consumer is responsible to indicate why this happened.\n *\n * Note that `FWizardStep` already checks validity of contained fields using `v-validation`\n * before allowing navigation to the next step.\n */\n beforeNext: {\n type: Function as PropType<FValidationFormCallback>,\n required: false,\n default() {\n /* do nothing */\n },\n },\n /**\n * Supply this function in order to run actions before `FWizardStep` checks validity.\n *\n * `beforeValidation` is used by {@link FValidationForm}.\n *\n * It is possible to cancel the navigation by returning `BeforeNextAction.CANCEL`.\n * When cancelled, the consumer is responsible to indicate why this happened.\n */\n beforeValidation: {\n type: Function as PropType<FValidationFormCallback>,\n required: false,\n default() {\n /* do nothing */\n },\n },\n /**\n * Include the error list component.\n */\n useErrorList: {\n type: Boolean,\n required: false,\n default: true,\n },\n },\n setup(): FWizardApi {\n return FWizardApiInjected();\n },\n data() {\n return {\n step: {} as FWizardStepDefinition,\n validity: { isValid: true, componentsWithError: [], componentCount: 0 } as GroupValidityEvent,\n isOpenedFirstTime: true,\n ignoreClick: false,\n };\n },\n computed: {\n defaultCurrentStepInformation(): string {\n return this.$t(\"fkui.wizard-step.current-step\", `Steg {{ stepNumber }} av {{ totalSteps }}`, {\n stepNumber: this.stepNumber,\n totalSteps: this.totalSteps,\n });\n },\n formId(): string {\n return `${String(this.step.key)}-form`;\n },\n animationId(): string {\n return `${String(this.step.key)}-animation`;\n },\n isOpen(): boolean {\n return this.step.isOpen;\n },\n isPending(): boolean {\n const { currentOpen, stepNumber } = this.step;\n return currentOpen >= 0 && currentOpen < stepNumber;\n },\n isFinalStep(): boolean {\n return this.stepNumber === this.totalSteps;\n },\n showLink(): boolean {\n return !this.isOpen && !this.isPending;\n },\n stepNumber(): number {\n return this.step.stepNumber;\n },\n totalSteps(): number {\n return this.getStepCount();\n },\n cssClass(): string {\n if (this.isOpen) {\n return \"wizard-step--open\";\n }\n if (this.isPending) {\n return \"wizard-step--pending\";\n }\n return \"wizard-step--done\";\n },\n },\n mounted() {\n const key = getCurrentInstance()?.vnode?.key;\n\n if (!key) {\n throw new Error(\"FWizardStep requires key to be set\");\n }\n\n this.step = this.register(key, this.$el);\n },\n beforeUnmount() {\n const key = getCurrentInstance()?.vnode?.key;\n\n if (key) {\n this.unregister(key);\n }\n },\n methods: {\n open(): void {\n this.openStep(this.step);\n },\n async onSubmit(): Promise<void> {\n if (this.ignoreClick) {\n return;\n }\n this.openNext(this.step);\n },\n onCancel(): void {\n /* injected from FWizard */\n this.cancel();\n },\n /**\n * Scroll down before animation starts.\n */\n async beforeAnimation(open: boolean): Promise<void> {\n await this.$nextTick();\n this.ignoreClick = true;\n if (!open) {\n const headerElement = getHTMLElementFromVueRef(this.$refs[\"header\"]);\n if (!DomUtils.isVisibleInViewport(headerElement)) {\n ongoingScrollPromise = DomUtils.scrollTo(headerElement, {\n duration: SCROLL_DURATION,\n offset: 10,\n });\n await ongoingScrollPromise;\n }\n } else if (ongoingScrollPromise) {\n // Don't start animation in opening step before the scroll (initiated by closing step) is finished.\n await ongoingScrollPromise;\n }\n },\n async afterAnimation(open: boolean): Promise<void> {\n if (!open) {\n return;\n }\n\n this.ignoreClick = false;\n // Skip focus once for first step when `disableInitialFocus` is set\n if (this.isOpenedFirstTime) {\n this.isOpenedFirstTime = false;\n\n if (this.inheritedProps.disableInitialFocus && this.stepNumber === 1) {\n return;\n }\n }\n\n const headerElement = getHTMLElementFromVueRef(this.$refs[\"header\"]);\n await this.$nextTick();\n if (!DomUtils.isVisibleInViewport(headerElement)) {\n await DomUtils.scrollTo(headerElement, { duration: SCROLL_DURATION, offset: 10 });\n }\n DomUtils.focus(headerElement);\n },\n },\n});\n</script>\n","/**\n * @public\n */\nexport interface FDialogueTreeSubQuestion {\n label: string;\n options: FDialogueTreeOption[];\n}\n\n/**\n * @public\n */\nexport interface FDialogueTreeEndQuestion {\n label: string;\n /* Step information */\n userData: unknown;\n}\n\n/**\n * @public\n */\nexport type FDialogueTreeQuestion =\n | FDialogueTreeSubQuestion\n | FDialogueTreeEndQuestion;\n\n/**\n * Each option leads to a new question\n * @public\n */\nexport interface FDialogueTreeOption {\n label: string;\n question: FDialogueTreeQuestion;\n}\n\n/**\n * User progress for the Dialogue Tree.\n * Stores information regarding the options the user has made.\n * @public\n */\nexport interface FDialogueTreeUserProgress {\n /* Title for last clicked option*/\n label: string;\n\n /* If the user has reached the last step */\n lastStep: boolean;\n\n /* Step progress */\n steps: number[];\n}\n\n/**\n * Checks if question is an end or sub question\n * @public\n */\nexport function isDialogueTreeEndQuestion(\n value: Partial<FDialogueTreeEndQuestion>,\n): value is FDialogueTreeEndQuestion {\n return Boolean(value.userData);\n}\n","<template>\n <div class=\"dialogue-tree\">\n <template v-if=\"options.length > 0\">\n <ul class=\"dialogue-tree__list\">\n <li v-for=\"(option, index) in options\" :key=\"option.label\" class=\"dialogue-tree__list-item\">\n <button :ref=\"`dialogueButton-${index}`\" type=\"button\" @click=\"onClickedOption(option, index)\">\n <span>{{ option.label }}</span>\n <f-icon name=\"arrow-right\"></f-icon>\n </button>\n </li>\n </ul>\n </template>\n <template v-else>\n <!--\n @slot Slot for last dialogue step.\n @binding {userData} Step information\n -->\n <slot v-bind=\"{ userData: userData }\"></slot>\n </template>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, type PropType } from \"vue\";\nimport { focus, focusFirst } from \"@fkui/logic\";\n\nimport { FIcon } from \"../FIcon\";\nimport { getHTMLElementsFromVueRef } from \"../../utils\";\nimport {\n type FDialogueTreeOption,\n FDialogueTreeQuestion,\n type FDialogueTreeUserProgress,\n isDialogueTreeEndQuestion,\n} from \"./FDialogueTreeModel\";\n\ninterface DialogueTreeData {\n currentStep: FDialogueTreeQuestion;\n steps: number[];\n}\n\nexport default defineComponent({\n name: \"FDialogueTree\",\n components: {\n FIcon,\n },\n props: {\n /**\n * Current dialogue question\n * @model\n */\n modelValue: {\n type: Object as PropType<FDialogueTreeUserProgress>,\n required: true,\n },\n /**\n * Dialogue tree\n */\n dialogueTree: {\n type: Object as PropType<FDialogueTreeQuestion>,\n required: true,\n },\n },\n emits: [\"change\", \"update:modelValue\"],\n data(): DialogueTreeData {\n return {\n currentStep: this.dialogueTree,\n steps: [],\n };\n },\n computed: {\n userData(): unknown {\n if (isDialogueTreeEndQuestion(this.currentStep)) {\n return this.currentStep.userData;\n }\n return undefined;\n },\n options(): FDialogueTreeOption[] {\n if (!isDialogueTreeEndQuestion(this.currentStep)) {\n return this.currentStep.options;\n }\n return [];\n },\n },\n created() {\n this.currentStep = this.dialogueTree;\n\n if (isDialogueTreeEndQuestion(this.currentStep)) {\n this.emitChange(true);\n } else {\n this.emitChange(false);\n }\n },\n\n methods: {\n async onClickedOption(option: FDialogueTreeOption, index: number): Promise<void> {\n this.steps.push(index);\n this.currentStep = option.question;\n if (isDialogueTreeEndQuestion(option.question)) {\n this.emitChange(true);\n await this.$nextTick();\n focusFirst(this.$el as HTMLElement);\n } else {\n this.emitChange(false);\n await this.$nextTick();\n const firstElement = getHTMLElementsFromVueRef(this.$refs[\"dialogueButton-0\"])[0];\n if (firstElement) {\n focus(firstElement);\n }\n }\n },\n emitChange(lastStep: boolean) {\n const emit: FDialogueTreeUserProgress = {\n label: this.currentStep.label,\n lastStep,\n steps: this.steps,\n };\n\n /**\n * `v-model` event.\n * @event update:modelValue\n * @type {FDialogueTreeUserProgress}\n */\n this.$emit(\"update:modelValue\", emit);\n\n /**\n * Change event\n * Triggered once user clicks on option\n * Vue2 `v-model` event.\n * @deprecated\n * @event change\n * @type {FDialogueTreeUserProgress}\n */\n this.$emit(\"change\", emit);\n },\n },\n});\n</script>\n"],"mappings":"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","ignoreList":[]}