@fremtind/jokul 0.64.2 → 0.66.1
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.
- package/build/build-stats.html +1 -1
- package/build/cjs/components/ScreenReaderOnly.cjs +1 -1
- package/build/cjs/components/ScreenReaderOnly.cjs.map +1 -1
- package/build/cjs/components/accordion/Accordion.cjs +1 -1
- package/build/cjs/components/accordion/Accordion.cjs.map +1 -1
- package/build/cjs/components/accordion/AccordionItem.cjs.map +1 -1
- package/build/cjs/components/accordion/stories/Accordion.stories.cjs +1 -1
- package/build/cjs/components/accordion/stories/Accordion.stories.cjs.map +1 -1
- package/build/cjs/components/accordion/stories/AccordionItem.stories.cjs +1 -1
- package/build/cjs/components/accordion/stories/AccordionItem.stories.cjs.map +1 -1
- package/build/cjs/components/autosuggest/Autosuggest.cjs.map +1 -1
- package/build/cjs/components/autosuggest/BaseAutosuggest.cjs.map +1 -1
- package/build/cjs/components/autosuggest/ControllerButton.cjs +1 -1
- package/build/cjs/components/autosuggest/ControllerButton.cjs.map +1 -1
- package/build/cjs/components/autosuggest/Menu.cjs +1 -1
- package/build/cjs/components/autosuggest/Menu.cjs.map +1 -1
- package/build/cjs/components/breadcrumb/Breadcrumb.cjs.map +1 -1
- package/build/cjs/components/breadcrumb/BreadcrumbItem.cjs.map +1 -1
- package/build/cjs/components/breadcrumb/documentation/BreadcrumbDocs.cjs +1 -1
- package/build/cjs/components/breadcrumb/documentation/BreadcrumbDocs.cjs.map +1 -1
- package/build/cjs/components/breadcrumb/stories/Breadcrumb.stories.cjs +1 -1
- package/build/cjs/components/breadcrumb/stories/Breadcrumb.stories.cjs.map +1 -1
- package/build/cjs/components/breadcrumb/stories/BreadcrumbItem.stories.cjs +1 -1
- package/build/cjs/components/breadcrumb/stories/BreadcrumbItem.stories.cjs.map +1 -1
- package/build/cjs/components/button/Button.cjs +1 -1
- package/build/cjs/components/button/Button.cjs.map +1 -1
- package/build/cjs/components/button/documentation/AnchorDocs.cjs +1 -1
- package/build/cjs/components/button/documentation/AnchorDocs.cjs.map +1 -1
- package/build/cjs/components/button/types.cjs.map +1 -1
- package/build/cjs/components/card/Card.cjs.map +1 -1
- package/build/cjs/components/card/CardImage.cjs.map +1 -1
- package/build/cjs/components/card/InfoCard.cjs +1 -1
- package/build/cjs/components/card/InfoCard.cjs.map +1 -1
- package/build/cjs/components/card/NavCard.cjs.map +1 -1
- package/build/cjs/components/card/TaskCard.cjs +1 -1
- package/build/cjs/components/card/TaskCard.cjs.map +1 -1
- package/build/cjs/components/card/development/examples/FakturainfoExample.d.cts +1 -1
- package/build/cjs/components/card/development/examples/InfoCardExample.d.cts +1 -1
- package/build/cjs/components/card/development/examples/NavCardExample.d.cts +1 -1
- package/build/cjs/components/card/development/examples/StatuskortExample.d.cts +1 -1
- package/build/cjs/components/card/development/examples/TaskCardExample.d.cts +1 -1
- package/build/cjs/components/card/development/examples/TopExample.d.cts +1 -1
- package/build/cjs/components/card/stories/Card.stories.cjs +1 -1
- package/build/cjs/components/card/stories/Card.stories.cjs.map +1 -1
- package/build/cjs/components/card/types.cjs.map +1 -1
- package/build/cjs/components/card/utils.cjs.map +1 -1
- package/build/cjs/components/checkbox/Checkbox.cjs.map +1 -1
- package/build/cjs/components/checkbox-panel/CheckboxPanel.cjs +1 -1
- package/build/cjs/components/checkbox-panel/CheckboxPanel.cjs.map +1 -1
- package/build/cjs/components/checkbox-panel/stories/CheckboxPanel.stories.cjs +1 -1
- package/build/cjs/components/checkbox-panel/stories/CheckboxPanel.stories.cjs.map +1 -1
- package/build/cjs/components/chip/Chip.cjs.map +1 -1
- package/build/cjs/components/combobox/Combobox.cjs +1 -1
- package/build/cjs/components/combobox/Combobox.cjs.map +1 -1
- package/build/cjs/components/combobox/stories/Combobox.stories.cjs +1 -1
- package/build/cjs/components/combobox/stories/Combobox.stories.cjs.map +1 -1
- package/build/cjs/components/cookie-consent/CookieConsent.cjs +1 -1
- package/build/cjs/components/cookie-consent/CookieConsent.cjs.map +1 -1
- package/build/cjs/components/cookie-consent/CookieConsentContext.cjs.map +1 -1
- package/build/cjs/components/cookie-consent/RequirementCheckbox.cjs +1 -1
- package/build/cjs/components/cookie-consent/RequirementCheckbox.cjs.map +1 -1
- package/build/cjs/components/cookie-consent/cookieConsentUtils.cjs +1 -1
- package/build/cjs/components/cookie-consent/cookieConsentUtils.cjs.map +1 -1
- package/build/cjs/components/cookie-consent/stories/CookieConsent.stories.cjs +1 -1
- package/build/cjs/components/cookie-consent/stories/CookieConsent.stories.cjs.map +1 -1
- package/build/cjs/components/countdown/Countdown.cjs +1 -1
- package/build/cjs/components/countdown/Countdown.cjs.map +1 -1
- package/build/cjs/components/countdown/stories/Countdown.stories.cjs.map +1 -1
- package/build/cjs/components/datepicker/DatePicker.cjs +1 -1
- package/build/cjs/components/datepicker/DatePicker.cjs.map +1 -1
- package/build/cjs/components/datepicker/index.d.cts +1 -1
- package/build/cjs/components/datepicker/internal/Calendar.cjs +1 -1
- package/build/cjs/components/datepicker/internal/Calendar.cjs.map +1 -1
- package/build/cjs/components/datepicker/internal/calendarReducer.cjs.map +1 -1
- package/build/cjs/components/datepicker/internal/useCalendar.cjs.map +1 -1
- package/build/cjs/components/datepicker/internal/useCalendar.d.cts +1 -1
- package/build/cjs/components/datepicker/internal/utils.cjs +1 -1
- package/build/cjs/components/datepicker/internal/utils.cjs.map +1 -1
- package/build/cjs/components/datepicker/utils.cjs +1 -1
- package/build/cjs/components/datepicker/utils.cjs.map +1 -1
- package/build/cjs/components/datepicker/validation.cjs.map +1 -1
- package/build/cjs/components/description-list/DescriptionList.cjs +1 -1
- package/build/cjs/components/description-list/DescriptionList.cjs.map +1 -1
- package/build/cjs/components/description-list/stories/DescriptionList.stories.cjs +1 -1
- package/build/cjs/components/description-list/stories/DescriptionList.stories.cjs.map +1 -1
- package/build/cjs/components/expander/ExpandablePanel.cjs +1 -1
- package/build/cjs/components/expander/ExpandablePanel.cjs.map +1 -1
- package/build/cjs/components/expander/ExpandablePanelContent.cjs.map +1 -1
- package/build/cjs/components/expander/Expander.cjs +1 -1
- package/build/cjs/components/expander/Expander.cjs.map +1 -1
- package/build/cjs/components/expander/context.cjs.map +1 -1
- package/build/cjs/components/expander/deprecated/ExpandSection.cjs.map +1 -1
- package/build/cjs/components/expander/deprecated/Expander.cjs +1 -1
- package/build/cjs/components/expander/deprecated/Expander.cjs.map +1 -1
- package/build/cjs/components/expander/index.d.cts +1 -1
- package/build/cjs/components/expander/stories/Expander.stories.cjs +1 -1
- package/build/cjs/components/expander/stories/Expander.stories.cjs.map +1 -1
- package/build/cjs/components/expander/stories/ExpanderPanel.stories.cjs +1 -1
- package/build/cjs/components/expander/stories/ExpanderPanel.stories.cjs.map +1 -1
- package/build/cjs/components/feedback/Feedback.cjs.map +1 -1
- package/build/cjs/components/feedback/FeedbackSuccess.cjs +1 -1
- package/build/cjs/components/feedback/FeedbackSuccess.cjs.map +1 -1
- package/build/cjs/components/feedback/FeedbackValues.cjs.map +1 -1
- package/build/cjs/components/feedback/feedbackContext.cjs.map +1 -1
- package/build/cjs/components/feedback/followup/Followup.cjs +1 -1
- package/build/cjs/components/feedback/followup/Followup.cjs.map +1 -1
- package/build/cjs/components/feedback/followup/followupContext.cjs.map +1 -1
- package/build/cjs/components/feedback/followup/useFollowup.cjs.map +1 -1
- package/build/cjs/components/feedback/index.d.cts +1 -1
- package/build/cjs/components/feedback/main-question/MainQuestion.cjs +1 -1
- package/build/cjs/components/feedback/main-question/MainQuestion.cjs.map +1 -1
- package/build/cjs/components/feedback/main-question/mainQuestionContext.cjs.map +1 -1
- package/build/cjs/components/feedback/main-question/useMainQuestion.cjs.map +1 -1
- package/build/cjs/components/feedback/main-question/useMainQuestion.d.cts +2 -2
- package/build/cjs/components/feedback/presets.cjs.map +1 -1
- package/build/cjs/components/feedback/questions/AddonQuestion.cjs.map +1 -1
- package/build/cjs/components/feedback/questions/CheckboxQuestion.cjs +1 -1
- package/build/cjs/components/feedback/questions/CheckboxQuestion.cjs.map +1 -1
- package/build/cjs/components/feedback/questions/ContactQuestion.cjs +1 -1
- package/build/cjs/components/feedback/questions/ContactQuestion.cjs.map +1 -1
- package/build/cjs/components/feedback/questions/RadioQuestion.cjs +1 -1
- package/build/cjs/components/feedback/questions/RadioQuestion.cjs.map +1 -1
- package/build/cjs/components/feedback/questions/SmileyQuestion.cjs.map +1 -1
- package/build/cjs/components/feedback/questions/TextQuestion.cjs +1 -1
- package/build/cjs/components/feedback/questions/TextQuestion.cjs.map +1 -1
- package/build/cjs/components/feedback/questions/smileyUtils.cjs +1 -1
- package/build/cjs/components/feedback/questions/smileyUtils.cjs.map +1 -1
- package/build/cjs/components/feedback/stories/Feedback.stories.cjs +1 -1
- package/build/cjs/components/feedback/stories/Feedback.stories.cjs.map +1 -1
- package/build/cjs/components/feedback/utils.cjs.map +1 -1
- package/build/cjs/components/file-input/File.cjs +1 -1
- package/build/cjs/components/file-input/File.cjs.map +1 -1
- package/build/cjs/components/file-input/FileInput.cjs +1 -1
- package/build/cjs/components/file-input/FileInput.cjs.map +1 -1
- package/build/cjs/components/file-input/internal/Dropzone.cjs.map +1 -1
- package/build/cjs/components/file-input/internal/Input.cjs +1 -1
- package/build/cjs/components/file-input/internal/Input.cjs.map +1 -1
- package/build/cjs/components/file-input/internal/MaxSize.cjs +1 -1
- package/build/cjs/components/file-input/internal/MaxSize.cjs.map +1 -1
- package/build/cjs/components/file-input/internal/Thumbnail.cjs +1 -1
- package/build/cjs/components/file-input/internal/Thumbnail.cjs.map +1 -1
- package/build/cjs/components/file-input/internal/fileInputContext.cjs.map +1 -1
- package/build/cjs/components/file-input/internal/validateFile.cjs.map +1 -1
- package/build/cjs/components/file-input/stories/File.stories.cjs +1 -1
- package/build/cjs/components/file-input/stories/File.stories.cjs.map +1 -1
- package/build/cjs/components/file-input/stories/FileInput.stories.cjs +1 -1
- package/build/cjs/components/file-input/stories/FileInput.stories.cjs.map +1 -1
- package/build/cjs/components/file-input/utils.cjs +1 -1
- package/build/cjs/components/file-input/utils.cjs.map +1 -1
- package/build/cjs/components/flex/Flex.cjs.map +1 -1
- package/build/cjs/components/flex/stories/Flex.stories.cjs +1 -1
- package/build/cjs/components/flex/stories/Flex.stories.cjs.map +1 -1
- package/build/cjs/components/flex/types.cjs +1 -1
- package/build/cjs/components/icon/Icon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/ArrowDownIcon.cjs +1 -1
- package/build/cjs/components/icon/icons/ArrowDownIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/ArrowLeftIcon.cjs +1 -1
- package/build/cjs/components/icon/icons/ArrowLeftIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/ArrowNorthEastIcon.cjs +1 -1
- package/build/cjs/components/icon/icons/ArrowNorthEastIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/ArrowRightIcon.cjs +1 -1
- package/build/cjs/components/icon/icons/ArrowRightIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/ArrowUpIcon.cjs +1 -1
- package/build/cjs/components/icon/icons/ArrowUpIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/CalendarIcon.cjs +1 -1
- package/build/cjs/components/icon/icons/CalendarIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/CheckIcon.cjs +1 -1
- package/build/cjs/components/icon/icons/CheckIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/ChevronDownIcon.cjs +1 -1
- package/build/cjs/components/icon/icons/ChevronDownIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/ChevronLeftIcon.cjs +1 -1
- package/build/cjs/components/icon/icons/ChevronLeftIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/ChevronRightIcon.cjs +1 -1
- package/build/cjs/components/icon/icons/ChevronRightIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/ChevronUpIcon.cjs +1 -1
- package/build/cjs/components/icon/icons/ChevronUpIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/CloseIcon.cjs +1 -1
- package/build/cjs/components/icon/icons/CloseIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/CopyIcon.cjs +1 -1
- package/build/cjs/components/icon/icons/CopyIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/DotsIcon.cjs +1 -1
- package/build/cjs/components/icon/icons/DotsIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/DragIcon.cjs +1 -1
- package/build/cjs/components/icon/icons/DragIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/ErrorIcon.cjs +1 -1
- package/build/cjs/components/icon/icons/ErrorIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/GreenCheckIcon.cjs +1 -1
- package/build/cjs/components/icon/icons/GreenCheckIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/HamburgerIcon.cjs +1 -1
- package/build/cjs/components/icon/icons/HamburgerIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/InfoIcon.cjs +1 -1
- package/build/cjs/components/icon/icons/InfoIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/LinkIcon.cjs +1 -1
- package/build/cjs/components/icon/icons/LinkIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/MinusIcon.cjs +1 -1
- package/build/cjs/components/icon/icons/MinusIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/OpenInNewIcon.cjs +1 -1
- package/build/cjs/components/icon/icons/OpenInNewIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/PenIcon.cjs +1 -1
- package/build/cjs/components/icon/icons/PenIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/PlusIcon.cjs +1 -1
- package/build/cjs/components/icon/icons/PlusIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/QuestionIcon.cjs +1 -1
- package/build/cjs/components/icon/icons/QuestionIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/RedCrossIcon.cjs +1 -1
- package/build/cjs/components/icon/icons/RedCrossIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/SearchIcon.cjs +1 -1
- package/build/cjs/components/icon/icons/SearchIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/SuccessIcon.cjs +1 -1
- package/build/cjs/components/icon/icons/SuccessIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/ThumbDownIcon.cjs +1 -1
- package/build/cjs/components/icon/icons/ThumbDownIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/ThumbUpIcon.cjs +1 -1
- package/build/cjs/components/icon/icons/ThumbUpIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/TrashCanIcon.cjs +1 -1
- package/build/cjs/components/icon/icons/TrashCanIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/WarningIcon.cjs +1 -1
- package/build/cjs/components/icon/icons/WarningIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/animated/ArrowHorizontalAnimated.cjs +1 -1
- package/build/cjs/components/icon/icons/animated/ArrowHorizontalAnimated.cjs.map +1 -1
- package/build/cjs/components/icon/icons/animated/ArrowVerticalAnimated.cjs +1 -1
- package/build/cjs/components/icon/icons/animated/ArrowVerticalAnimated.cjs.map +1 -1
- package/build/cjs/components/icon/icons/animated/PlusRemoveAnimated.cjs +1 -1
- package/build/cjs/components/icon/icons/animated/PlusRemoveAnimated.cjs.map +1 -1
- package/build/cjs/components/icon/stories/Icons.stories.cjs.map +1 -1
- package/build/cjs/components/icon-button/IconButton.cjs.map +1 -1
- package/build/cjs/components/icon-button/stories/IconButton.stories.cjs +1 -1
- package/build/cjs/components/icon-button/stories/IconButton.stories.cjs.map +1 -1
- package/build/cjs/components/image/Image.cjs +1 -1
- package/build/cjs/components/image/Image.cjs.map +1 -1
- package/build/cjs/components/image/stories/Image.stories.cjs +1 -1
- package/build/cjs/components/image/stories/Image.stories.cjs.map +1 -1
- package/build/cjs/components/image/useImageLoadingStatus.cjs.map +1 -1
- package/build/cjs/components/input-group/FieldGroup.cjs +1 -1
- package/build/cjs/components/input-group/FieldGroup.cjs.map +1 -1
- package/build/cjs/components/input-group/InputGroup.cjs.map +1 -1
- package/build/cjs/components/input-group/Label.cjs +1 -1
- package/build/cjs/components/input-group/Label.cjs.map +1 -1
- package/build/cjs/components/input-group/SupportLabel.cjs +1 -1
- package/build/cjs/components/input-group/SupportLabel.cjs.map +1 -1
- package/build/cjs/components/input-group/stories/FieldGroup.stories.cjs +1 -1
- package/build/cjs/components/input-group/stories/FieldGroup.stories.cjs.map +1 -1
- package/build/cjs/components/input-group/stories/InputGroup.stories.cjs +1 -1
- package/build/cjs/components/input-group/stories/InputGroup.stories.cjs.map +1 -1
- package/build/cjs/components/input-group/stories/Label.stories.cjs +1 -1
- package/build/cjs/components/input-group/stories/Label.stories.cjs.map +1 -1
- package/build/cjs/components/input-group/stories/SupportLabel.stories.cjs +1 -1
- package/build/cjs/components/input-group/stories/SupportLabel.stories.cjs.map +1 -1
- package/build/cjs/components/link/Link.cjs.map +1 -1
- package/build/cjs/components/link/stories/Link.stories.cjs +1 -1
- package/build/cjs/components/link/stories/Link.stories.cjs.map +1 -1
- package/build/cjs/components/link-list/LinkList.cjs.map +1 -1
- package/build/cjs/components/link-list/index.d.cts +1 -1
- package/build/cjs/components/link-list/stories/LinkList.stories.cjs +1 -1
- package/build/cjs/components/link-list/stories/LinkList.stories.cjs.map +1 -1
- package/build/cjs/components/list/List.cjs +1 -1
- package/build/cjs/components/list/List.cjs.map +1 -1
- package/build/cjs/components/list/ListItem.cjs +1 -1
- package/build/cjs/components/list/ListItem.cjs.map +1 -1
- package/build/cjs/components/list/stories/List.stories.cjs +1 -1
- package/build/cjs/components/list/stories/List.stories.cjs.map +1 -1
- package/build/cjs/components/loader/Loader.cjs +1 -1
- package/build/cjs/components/loader/Loader.cjs.map +1 -1
- package/build/cjs/components/loader/skeletons/SkeletonAnimation.cjs +1 -1
- package/build/cjs/components/loader/skeletons/SkeletonAnimation.cjs.map +1 -1
- package/build/cjs/components/loader/skeletons/SkeletonButton.cjs +1 -1
- package/build/cjs/components/loader/skeletons/SkeletonButton.cjs.map +1 -1
- package/build/cjs/components/loader/skeletons/SkeletonCheckboxGroup.cjs +1 -1
- package/build/cjs/components/loader/skeletons/SkeletonCheckboxGroup.cjs.map +1 -1
- package/build/cjs/components/loader/skeletons/SkeletonElement.cjs +1 -1
- package/build/cjs/components/loader/skeletons/SkeletonElement.cjs.map +1 -1
- package/build/cjs/components/loader/skeletons/SkeletonInput.cjs +1 -1
- package/build/cjs/components/loader/skeletons/SkeletonInput.cjs.map +1 -1
- package/build/cjs/components/loader/skeletons/SkeletonLabel.cjs +1 -1
- package/build/cjs/components/loader/skeletons/SkeletonLabel.cjs.map +1 -1
- package/build/cjs/components/loader/skeletons/SkeletonRadioButtonGroup.cjs +1 -1
- package/build/cjs/components/loader/skeletons/SkeletonRadioButtonGroup.cjs.map +1 -1
- package/build/cjs/components/loader/skeletons/SkeletonTable.cjs +1 -1
- package/build/cjs/components/loader/skeletons/SkeletonTable.cjs.map +1 -1
- package/build/cjs/components/loader/skeletons/SkeletonTextArea.cjs +1 -1
- package/build/cjs/components/loader/skeletons/SkeletonTextArea.cjs.map +1 -1
- package/build/cjs/components/loader/stories/Loader.stories.cjs +1 -1
- package/build/cjs/components/loader/stories/Loader.stories.cjs.map +1 -1
- package/build/cjs/components/loader/stories/Skeleton.stories.cjs +1 -1
- package/build/cjs/components/loader/stories/Skeleton.stories.cjs.map +1 -1
- package/build/cjs/components/loader/useDelayedRender.cjs +1 -1
- package/build/cjs/components/loader/useDelayedRender.cjs.map +1 -1
- package/build/cjs/components/logo/Logo.cjs +1 -1
- package/build/cjs/components/logo/Logo.cjs.map +1 -1
- package/build/cjs/components/logo/LogoStamp.cjs.map +1 -1
- package/build/cjs/components/logo/stories/Logo.stories.cjs +1 -1
- package/build/cjs/components/logo/stories/Logo.stories.cjs.map +1 -1
- package/build/cjs/components/logo/stories/LogoStamp.stories.cjs +1 -1
- package/build/cjs/components/logo/stories/LogoStamp.stories.cjs.map +1 -1
- package/build/cjs/components/logo/text-paths/ForsikringLevertAvFremtind.cjs +1 -1
- package/build/cjs/components/logo/text-paths/ForsikringLevertAvFremtind.cjs.map +1 -1
- package/build/cjs/components/logo/text-paths/FraSB1ogDNB.cjs +1 -1
- package/build/cjs/components/logo/text-paths/FraSB1ogDNB.cjs.map +1 -1
- package/build/cjs/components/logo/text-paths/InnovasjonFraFremtind.cjs +1 -1
- package/build/cjs/components/logo/text-paths/InnovasjonFraFremtind.cjs.map +1 -1
- package/build/cjs/components/logo/text-paths/TeknologiFraFremtind.cjs +1 -1
- package/build/cjs/components/logo/text-paths/TeknologiFraFremtind.cjs.map +1 -1
- package/build/cjs/components/logo/text-paths/VartEgetForsikringsselskap.cjs +1 -1
- package/build/cjs/components/logo/text-paths/VartEgetForsikringsselskap.cjs.map +1 -1
- package/build/cjs/components/logo/text-paths/VartForsikringsselskap.cjs +1 -1
- package/build/cjs/components/logo/text-paths/VartForsikringsselskap.cjs.map +1 -1
- package/build/cjs/components/menu/Menu.cjs.map +1 -1
- package/build/cjs/components/menu/MenuDivider.cjs +1 -1
- package/build/cjs/components/menu/MenuDivider.cjs.map +1 -1
- package/build/cjs/components/menu/MenuItem.cjs.map +1 -1
- package/build/cjs/components/menu/MenuItemCheckbox.cjs.map +1 -1
- package/build/cjs/components/menu/stories/Menu.stories.cjs +1 -1
- package/build/cjs/components/menu/stories/Menu.stories.cjs.map +1 -1
- package/build/cjs/components/menu/stories/MenuDivider.stories.cjs +1 -1
- package/build/cjs/components/menu/stories/MenuDivider.stories.cjs.map +1 -1
- package/build/cjs/components/menu/stories/MenuItem.stories.cjs +1 -1
- package/build/cjs/components/menu/stories/MenuItem.stories.cjs.map +1 -1
- package/build/cjs/components/menu/stories/MenuItemCheckbox.stories.cjs.map +1 -1
- package/build/cjs/components/menu/types.d.cts +2 -2
- package/build/cjs/components/menu/useMenuWideEvents.cjs +1 -1
- package/build/cjs/components/menu/useMenuWideEvents.cjs.map +1 -1
- package/build/cjs/components/message/DismissButton.cjs.map +1 -1
- package/build/cjs/components/message/FormErrorMessage.cjs.map +1 -1
- package/build/cjs/components/message/Message.cjs +1 -1
- package/build/cjs/components/message/Message.cjs.map +1 -1
- package/build/cjs/components/message/stories/ErrorMessage.stories.cjs.map +1 -1
- package/build/cjs/components/message/stories/FormErrorMessage.stories.cjs.map +1 -1
- package/build/cjs/components/message/stories/InfoMessage.stories.cjs.map +1 -1
- package/build/cjs/components/message/stories/SuccessMessage.stories.cjs.map +1 -1
- package/build/cjs/components/message/stories/WarningMessage.stories.cjs.map +1 -1
- package/build/cjs/components/modal/Modal.cjs +1 -1
- package/build/cjs/components/modal/Modal.cjs.map +1 -1
- package/build/cjs/components/modal/stories/CompleteModal.stories.cjs +1 -1
- package/build/cjs/components/modal/stories/CompleteModal.stories.cjs.map +1 -1
- package/build/cjs/components/modal/stories/ModalActions.stories.cjs +1 -1
- package/build/cjs/components/modal/stories/ModalActions.stories.cjs.map +1 -1
- package/build/cjs/components/modal/stories/ModalCloseButton.stories.cjs +1 -1
- package/build/cjs/components/modal/stories/ModalCloseButton.stories.cjs.map +1 -1
- package/build/cjs/components/modal/stories/ModalOverlay.stories.cjs.map +1 -1
- package/build/cjs/components/modal/useModal.cjs.map +1 -1
- package/build/cjs/components/nav-link/NavLink.cjs.map +1 -1
- package/build/cjs/components/nav-link/stories/NavLink.stories.cjs.map +1 -1
- package/build/cjs/components/pagination/PageButton.cjs.map +1 -1
- package/build/cjs/components/pagination/Pagination.cjs +1 -1
- package/build/cjs/components/pagination/Pagination.cjs.map +1 -1
- package/build/cjs/components/pagination/stories/Pagination.stories.cjs.map +1 -1
- package/build/cjs/components/popover/Popover.cjs.map +1 -1
- package/build/cjs/components/popover/stories/PopoverControlled.stories.cjs.map +1 -1
- package/build/cjs/components/popover/stories/PopoverUncontrolled.stories.cjs.map +1 -1
- package/build/cjs/components/popover/types.d.cts +1 -1
- package/build/cjs/components/progress-bar/ProgressBar.cjs +1 -1
- package/build/cjs/components/progress-bar/ProgressBar.cjs.map +1 -1
- package/build/cjs/components/progress-bar/stories/ProgressBar.stories.cjs +1 -1
- package/build/cjs/components/progress-bar/stories/ProgressBar.stories.cjs.map +1 -1
- package/build/cjs/components/radio-button/BaseRadioButton.cjs.map +1 -1
- package/build/cjs/components/radio-button/RadioButton.cjs.map +1 -1
- package/build/cjs/components/radio-button/RadioButtonGroup.cjs +1 -1
- package/build/cjs/components/radio-button/RadioButtonGroup.cjs.map +1 -1
- package/build/cjs/components/radio-button/radioGroupContext.cjs.map +1 -1
- package/build/cjs/components/radio-button/stories/BaseRadioButton.stories.cjs.map +1 -1
- package/build/cjs/components/radio-button/stories/RadioButton.stories.cjs.map +1 -1
- package/build/cjs/components/radio-button/stories/RadioButtonGroup.stories.cjs +1 -1
- package/build/cjs/components/radio-button/stories/RadioButtonGroup.stories.cjs.map +1 -1
- package/build/cjs/components/radio-panel/RadioPanel.cjs.map +1 -1
- package/build/cjs/components/radio-panel/RadioPanelGroup.cjs.map +1 -1
- package/build/cjs/components/radio-panel/stories/RadioPanel.stories.cjs +1 -1
- package/build/cjs/components/radio-panel/stories/RadioPanel.stories.cjs.map +1 -1
- package/build/cjs/components/select/NativeSelect.cjs.map +1 -1
- package/build/cjs/components/select/Select.cjs +1 -1
- package/build/cjs/components/select/Select.cjs.map +1 -1
- package/build/cjs/components/select/stories/select.stories.cjs +1 -1
- package/build/cjs/components/select/stories/select.stories.cjs.map +1 -1
- package/build/cjs/components/summary-table/SummaryTable.cjs +1 -1
- package/build/cjs/components/summary-table/SummaryTable.cjs.map +1 -1
- package/build/cjs/components/summary-table/SummaryTableRow.cjs +1 -1
- package/build/cjs/components/summary-table/SummaryTableRow.cjs.map +1 -1
- package/build/cjs/components/summary-table/mocks.cjs +1 -1
- package/build/cjs/components/summary-table/mocks.cjs.map +1 -1
- package/build/cjs/components/summary-table/stories/summary-table.stories.cjs +1 -1
- package/build/cjs/components/summary-table/stories/summary-table.stories.cjs.map +1 -1
- package/build/cjs/components/system-message/SystemMessage.cjs +1 -1
- package/build/cjs/components/system-message/SystemMessage.cjs.map +1 -1
- package/build/cjs/components/system-message/common/DismissButton.cjs.map +1 -1
- package/build/cjs/components/system-message/common/MessageIcon.cjs +1 -1
- package/build/cjs/components/system-message/common/MessageIcon.cjs.map +1 -1
- package/build/cjs/components/table/DataTable.cjs.map +1 -1
- package/build/cjs/components/table/ExpandableTableRow.cjs +1 -1
- package/build/cjs/components/table/ExpandableTableRow.cjs.map +1 -1
- package/build/cjs/components/table/ExpandableTableRowController.cjs.map +1 -1
- package/build/cjs/components/table/Table.cjs.map +1 -1
- package/build/cjs/components/table/TableBody.cjs.map +1 -1
- package/build/cjs/components/table/TableCaption.cjs.map +1 -1
- package/build/cjs/components/table/TableCell.cjs.map +1 -1
- package/build/cjs/components/table/TableColumn.cjs.map +1 -1
- package/build/cjs/components/table/TableColumnGroup.cjs.map +1 -1
- package/build/cjs/components/table/TableFooter.cjs.map +1 -1
- package/build/cjs/components/table/TableHead.cjs.map +1 -1
- package/build/cjs/components/table/TableHeader.cjs.map +1 -1
- package/build/cjs/components/table/TablePagination.cjs +1 -1
- package/build/cjs/components/table/TablePagination.cjs.map +1 -1
- package/build/cjs/components/table/TableRow.cjs.map +1 -1
- package/build/cjs/components/table/stories/table.stories.cjs +1 -1
- package/build/cjs/components/table/stories/table.stories.cjs.map +1 -1
- package/build/cjs/components/table/tableContext.cjs.map +1 -1
- package/build/cjs/components/table/tableSectionContext.cjs.map +1 -1
- package/build/cjs/components/table/types.cjs +1 -1
- package/build/cjs/components/table/utils.cjs.map +1 -1
- package/build/cjs/components/tabs/NavTab.cjs.map +1 -1
- package/build/cjs/components/tabs/NavTabs.cjs.map +1 -1
- package/build/cjs/components/tabs/Tab.cjs.map +1 -1
- package/build/cjs/components/tabs/TabList.cjs.map +1 -1
- package/build/cjs/components/tabs/TabPanel.cjs +1 -1
- package/build/cjs/components/tabs/TabPanel.cjs.map +1 -1
- package/build/cjs/components/tabs/Tabs.cjs.map +1 -1
- package/build/cjs/components/tabs/stories/NavTabs.stories.cjs +1 -1
- package/build/cjs/components/tabs/stories/NavTabs.stories.cjs.map +1 -1
- package/build/cjs/components/tabs/stories/Tabs.stories.cjs +1 -1
- package/build/cjs/components/tabs/stories/Tabs.stories.cjs.map +1 -1
- package/build/cjs/components/tabs/tabsContext.cjs.map +1 -1
- package/build/cjs/components/tabs/types.d.cts +1 -1
- package/build/cjs/components/tag/Tag.cjs +1 -1
- package/build/cjs/components/tag/Tag.cjs.map +1 -1
- package/build/cjs/components/tag/index.d.cts +1 -1
- package/build/cjs/components/tag/stories/Tag.stories.cjs +1 -1
- package/build/cjs/components/tag/stories/Tag.stories.cjs.map +1 -1
- package/build/cjs/components/text-area/BaseTextArea.cjs.map +1 -1
- package/build/cjs/components/text-area/TextArea.cjs.map +1 -1
- package/build/cjs/components/text-area/stories/TextArea.stories.cjs.map +1 -1
- package/build/cjs/components/text-input/BaseTextInput.cjs.map +1 -1
- package/build/cjs/components/text-input/TextInput.cjs.map +1 -1
- package/build/cjs/components/toast/Toast.cjs +1 -1
- package/build/cjs/components/toast/Toast.cjs.map +1 -1
- package/build/cjs/components/toast/ToastRegion.cjs +1 -1
- package/build/cjs/components/toast/ToastRegion.cjs.map +1 -1
- package/build/cjs/components/toast/index.d.cts +1 -1
- package/build/cjs/components/toast/stories/Toast.stories.cjs +1 -1
- package/build/cjs/components/toast/stories/Toast.stories.cjs.map +1 -1
- package/build/cjs/components/toast/toastContext.cjs.map +1 -1
- package/build/cjs/components/toggle-switch/ToggleSlider.cjs.map +1 -1
- package/build/cjs/components/toggle-switch/ToggleSwitch.cjs.map +1 -1
- package/build/cjs/components/toggle-switch/stories/ToggleSwitch.stories.cjs.map +1 -1
- package/build/cjs/components/toggle-switch/usePillStyles.cjs +1 -1
- package/build/cjs/components/toggle-switch/usePillStyles.cjs.map +1 -1
- package/build/cjs/components/tooltip/PopupTip.cjs.map +1 -1
- package/build/cjs/components/tooltip/Tooltip.cjs +1 -1
- package/build/cjs/components/tooltip/Tooltip.cjs.map +1 -1
- package/build/cjs/components/tooltip/TooltipContent.cjs.map +1 -1
- package/build/cjs/components/tooltip/stories/Tooltip.stories.cjs +1 -1
- package/build/cjs/components/tooltip/stories/Tooltip.stories.cjs.map +1 -1
- package/build/cjs/hooks/useAnimatedHeight/useAnimatedHeight.cjs +1 -1
- package/build/cjs/hooks/useAnimatedHeight/useAnimatedHeight.cjs.map +1 -1
- package/build/cjs/hooks/useAnimatedHeight/useAnimatedHeightBetween.cjs +1 -1
- package/build/cjs/hooks/useAnimatedHeight/useAnimatedHeightBetween.cjs.map +1 -1
- package/build/cjs/hooks/useAnimatedHeight/useAutoAnimateHeight.cjs +1 -1
- package/build/cjs/hooks/useAnimatedHeight/useAutoAnimateHeight.cjs.map +1 -1
- package/build/cjs/hooks/useBrowserPreferences/useBrowserPreferences.cjs.map +1 -1
- package/build/cjs/hooks/useClickOutside/useClickOutside.cjs +1 -1
- package/build/cjs/hooks/useClickOutside/useClickOutside.cjs.map +1 -1
- package/build/cjs/hooks/useElementDimensions/useElementDimensions.cjs.map +1 -1
- package/build/cjs/hooks/useFocusOutside/useFocusOutside.cjs +1 -1
- package/build/cjs/hooks/useFocusOutside/useFocusOutside.cjs.map +1 -1
- package/build/cjs/hooks/useIntersectionObserver/useIntersectionObserver.cjs +1 -1
- package/build/cjs/hooks/useIntersectionObserver/useIntersectionObserver.cjs.map +1 -1
- package/build/cjs/hooks/useIntersectionObserver/useIntersectionObserver.d.cts +1 -1
- package/build/cjs/hooks/useKeyListener/useKeyListener.cjs +1 -1
- package/build/cjs/hooks/useKeyListener/useKeyListener.cjs.map +1 -1
- package/build/cjs/hooks/useListNavigation/useListNavigation.cjs +1 -1
- package/build/cjs/hooks/useListNavigation/useListNavigation.cjs.map +1 -1
- package/build/cjs/hooks/useMutationObserver/useMutationObserver.cjs.map +1 -1
- package/build/cjs/hooks/useProgressiveImg/useProgressiveImg.cjs.map +1 -1
- package/build/cjs/hooks/useScreen/index.d.cts +1 -1
- package/build/cjs/hooks/useScreen/useScreen.cjs +1 -1
- package/build/cjs/hooks/useScreen/useScreen.cjs.map +1 -1
- package/build/cjs/hooks/useScrollIntoView/useScrollIntoView.cjs.map +1 -1
- package/build/cjs/hooks/useSwipeGesture/useSwipeGesture.cjs.map +1 -1
- package/build/cjs/hooks/useSwipeGesture/useSwipeGesture.d.cts +1 -1
- package/build/cjs/shared/input-panel/BasePanel.cjs.map +1 -1
- package/build/cjs/utilities/formatters/avstand/formatAvstand.cjs.map +1 -1
- package/build/cjs/utilities/formatters/bytes/formatBytes.cjs.map +1 -1
- package/build/cjs/utilities/formatters/util/parseNumber.cjs.map +1 -1
- package/build/cjs/utilities/formatters/valuta/formatValuta.cjs +1 -1
- package/build/cjs/utilities/formatters/valuta/formatValuta.cjs.map +1 -1
- package/build/cjs/utilities/getThemeAndDensity.cjs +1 -1
- package/build/cjs/utilities/getThemeAndDensity.cjs.map +1 -1
- package/build/cjs/utilities/polymorphism/mergeRefs.cjs +1 -1
- package/build/cjs/utilities/polymorphism/mergeRefs.cjs.map +1 -1
- package/build/cjs/utilities/tabListener.cjs +1 -1
- package/build/cjs/utilities/tabListener.cjs.map +1 -1
- package/build/es/components/ScreenReaderOnly.js +1 -1
- package/build/es/components/ScreenReaderOnly.js.map +1 -1
- package/build/es/components/accordion/Accordion.js +1 -1
- package/build/es/components/accordion/Accordion.js.map +1 -1
- package/build/es/components/accordion/AccordionItem.js.map +1 -1
- package/build/es/components/accordion/stories/Accordion.stories.js +1 -1
- package/build/es/components/accordion/stories/Accordion.stories.js.map +1 -1
- package/build/es/components/accordion/stories/AccordionItem.stories.js +1 -1
- package/build/es/components/accordion/stories/AccordionItem.stories.js.map +1 -1
- package/build/es/components/autosuggest/Autosuggest.js.map +1 -1
- package/build/es/components/autosuggest/BaseAutosuggest.js.map +1 -1
- package/build/es/components/autosuggest/ControllerButton.js +1 -1
- package/build/es/components/autosuggest/ControllerButton.js.map +1 -1
- package/build/es/components/autosuggest/Menu.js +1 -1
- package/build/es/components/autosuggest/Menu.js.map +1 -1
- package/build/es/components/breadcrumb/Breadcrumb.js.map +1 -1
- package/build/es/components/breadcrumb/BreadcrumbItem.js.map +1 -1
- package/build/es/components/breadcrumb/documentation/BreadcrumbDocs.js +1 -1
- package/build/es/components/breadcrumb/documentation/BreadcrumbDocs.js.map +1 -1
- package/build/es/components/breadcrumb/stories/Breadcrumb.stories.js +1 -1
- package/build/es/components/breadcrumb/stories/Breadcrumb.stories.js.map +1 -1
- package/build/es/components/breadcrumb/stories/BreadcrumbItem.stories.js +1 -1
- package/build/es/components/breadcrumb/stories/BreadcrumbItem.stories.js.map +1 -1
- package/build/es/components/button/Button.js +1 -1
- package/build/es/components/button/Button.js.map +1 -1
- package/build/es/components/button/documentation/AnchorDocs.js +1 -1
- package/build/es/components/button/documentation/AnchorDocs.js.map +1 -1
- package/build/es/components/button/types.js.map +1 -1
- package/build/es/components/card/Card.js.map +1 -1
- package/build/es/components/card/CardImage.js.map +1 -1
- package/build/es/components/card/InfoCard.js +1 -1
- package/build/es/components/card/InfoCard.js.map +1 -1
- package/build/es/components/card/NavCard.js.map +1 -1
- package/build/es/components/card/TaskCard.js +1 -1
- package/build/es/components/card/TaskCard.js.map +1 -1
- package/build/es/components/card/development/examples/FakturainfoExample.d.ts +1 -1
- package/build/es/components/card/development/examples/InfoCardExample.d.ts +1 -1
- package/build/es/components/card/development/examples/NavCardExample.d.ts +1 -1
- package/build/es/components/card/development/examples/StatuskortExample.d.ts +1 -1
- package/build/es/components/card/development/examples/TaskCardExample.d.ts +1 -1
- package/build/es/components/card/development/examples/TopExample.d.ts +1 -1
- package/build/es/components/card/stories/Card.stories.js +1 -1
- package/build/es/components/card/stories/Card.stories.js.map +1 -1
- package/build/es/components/card/types.js.map +1 -1
- package/build/es/components/card/utils.js.map +1 -1
- package/build/es/components/checkbox/Checkbox.js.map +1 -1
- package/build/es/components/checkbox-panel/CheckboxPanel.js +1 -1
- package/build/es/components/checkbox-panel/CheckboxPanel.js.map +1 -1
- package/build/es/components/checkbox-panel/stories/CheckboxPanel.stories.js +1 -1
- package/build/es/components/checkbox-panel/stories/CheckboxPanel.stories.js.map +1 -1
- package/build/es/components/chip/Chip.js.map +1 -1
- package/build/es/components/combobox/Combobox.js +1 -1
- package/build/es/components/combobox/Combobox.js.map +1 -1
- package/build/es/components/combobox/stories/Combobox.stories.js +1 -1
- package/build/es/components/combobox/stories/Combobox.stories.js.map +1 -1
- package/build/es/components/cookie-consent/CookieConsent.js +1 -1
- package/build/es/components/cookie-consent/CookieConsent.js.map +1 -1
- package/build/es/components/cookie-consent/CookieConsentContext.js.map +1 -1
- package/build/es/components/cookie-consent/RequirementCheckbox.js +1 -1
- package/build/es/components/cookie-consent/RequirementCheckbox.js.map +1 -1
- package/build/es/components/cookie-consent/cookieConsentUtils.js +1 -1
- package/build/es/components/cookie-consent/cookieConsentUtils.js.map +1 -1
- package/build/es/components/cookie-consent/stories/CookieConsent.stories.js +1 -1
- package/build/es/components/cookie-consent/stories/CookieConsent.stories.js.map +1 -1
- package/build/es/components/countdown/Countdown.js +1 -1
- package/build/es/components/countdown/Countdown.js.map +1 -1
- package/build/es/components/countdown/stories/Countdown.stories.js.map +1 -1
- package/build/es/components/datepicker/DatePicker.js +1 -1
- package/build/es/components/datepicker/DatePicker.js.map +1 -1
- package/build/es/components/datepicker/index.d.ts +1 -1
- package/build/es/components/datepicker/internal/Calendar.js +1 -1
- package/build/es/components/datepicker/internal/Calendar.js.map +1 -1
- package/build/es/components/datepicker/internal/calendarReducer.js.map +1 -1
- package/build/es/components/datepicker/internal/useCalendar.d.ts +1 -1
- package/build/es/components/datepicker/internal/useCalendar.js.map +1 -1
- package/build/es/components/datepicker/internal/utils.js +1 -1
- package/build/es/components/datepicker/internal/utils.js.map +1 -1
- package/build/es/components/datepicker/utils.js +1 -1
- package/build/es/components/datepicker/utils.js.map +1 -1
- package/build/es/components/datepicker/validation.js.map +1 -1
- package/build/es/components/description-list/DescriptionList.js +1 -1
- package/build/es/components/description-list/DescriptionList.js.map +1 -1
- package/build/es/components/description-list/stories/DescriptionList.stories.js +1 -1
- package/build/es/components/description-list/stories/DescriptionList.stories.js.map +1 -1
- package/build/es/components/expander/ExpandablePanel.js +1 -1
- package/build/es/components/expander/ExpandablePanel.js.map +1 -1
- package/build/es/components/expander/ExpandablePanelContent.js.map +1 -1
- package/build/es/components/expander/Expander.js +1 -1
- package/build/es/components/expander/Expander.js.map +1 -1
- package/build/es/components/expander/context.js.map +1 -1
- package/build/es/components/expander/deprecated/ExpandSection.js.map +1 -1
- package/build/es/components/expander/deprecated/Expander.js +1 -1
- package/build/es/components/expander/deprecated/Expander.js.map +1 -1
- package/build/es/components/expander/index.d.ts +1 -1
- package/build/es/components/expander/stories/Expander.stories.js +1 -1
- package/build/es/components/expander/stories/Expander.stories.js.map +1 -1
- package/build/es/components/expander/stories/ExpanderPanel.stories.js +1 -1
- package/build/es/components/expander/stories/ExpanderPanel.stories.js.map +1 -1
- package/build/es/components/feedback/Feedback.js.map +1 -1
- package/build/es/components/feedback/FeedbackSuccess.js +1 -1
- package/build/es/components/feedback/FeedbackSuccess.js.map +1 -1
- package/build/es/components/feedback/FeedbackValues.js.map +1 -1
- package/build/es/components/feedback/feedbackContext.js.map +1 -1
- package/build/es/components/feedback/followup/Followup.js +1 -1
- package/build/es/components/feedback/followup/Followup.js.map +1 -1
- package/build/es/components/feedback/followup/followupContext.js.map +1 -1
- package/build/es/components/feedback/followup/useFollowup.js.map +1 -1
- package/build/es/components/feedback/index.d.ts +1 -1
- package/build/es/components/feedback/main-question/MainQuestion.js +1 -1
- package/build/es/components/feedback/main-question/MainQuestion.js.map +1 -1
- package/build/es/components/feedback/main-question/mainQuestionContext.js.map +1 -1
- package/build/es/components/feedback/main-question/useMainQuestion.d.ts +2 -2
- package/build/es/components/feedback/main-question/useMainQuestion.js.map +1 -1
- package/build/es/components/feedback/presets.js.map +1 -1
- package/build/es/components/feedback/questions/AddonQuestion.js.map +1 -1
- package/build/es/components/feedback/questions/CheckboxQuestion.js +1 -1
- package/build/es/components/feedback/questions/CheckboxQuestion.js.map +1 -1
- package/build/es/components/feedback/questions/ContactQuestion.js +1 -1
- package/build/es/components/feedback/questions/ContactQuestion.js.map +1 -1
- package/build/es/components/feedback/questions/RadioQuestion.js +1 -1
- package/build/es/components/feedback/questions/RadioQuestion.js.map +1 -1
- package/build/es/components/feedback/questions/SmileyQuestion.js.map +1 -1
- package/build/es/components/feedback/questions/TextQuestion.js +1 -1
- package/build/es/components/feedback/questions/TextQuestion.js.map +1 -1
- package/build/es/components/feedback/questions/smileyUtils.js +1 -1
- package/build/es/components/feedback/questions/smileyUtils.js.map +1 -1
- package/build/es/components/feedback/stories/Feedback.stories.js +1 -1
- package/build/es/components/feedback/stories/Feedback.stories.js.map +1 -1
- package/build/es/components/feedback/utils.js.map +1 -1
- package/build/es/components/file-input/File.js +1 -1
- package/build/es/components/file-input/File.js.map +1 -1
- package/build/es/components/file-input/FileInput.js +1 -1
- package/build/es/components/file-input/FileInput.js.map +1 -1
- package/build/es/components/file-input/internal/Dropzone.js.map +1 -1
- package/build/es/components/file-input/internal/Input.js +1 -1
- package/build/es/components/file-input/internal/Input.js.map +1 -1
- package/build/es/components/file-input/internal/MaxSize.js +1 -1
- package/build/es/components/file-input/internal/MaxSize.js.map +1 -1
- package/build/es/components/file-input/internal/Thumbnail.js +1 -1
- package/build/es/components/file-input/internal/Thumbnail.js.map +1 -1
- package/build/es/components/file-input/internal/fileInputContext.js.map +1 -1
- package/build/es/components/file-input/internal/validateFile.js.map +1 -1
- package/build/es/components/file-input/stories/File.stories.js +1 -1
- package/build/es/components/file-input/stories/File.stories.js.map +1 -1
- package/build/es/components/file-input/stories/FileInput.stories.js +1 -1
- package/build/es/components/file-input/stories/FileInput.stories.js.map +1 -1
- package/build/es/components/file-input/utils.js +1 -1
- package/build/es/components/file-input/utils.js.map +1 -1
- package/build/es/components/flex/Flex.js.map +1 -1
- package/build/es/components/flex/stories/Flex.stories.js +1 -1
- package/build/es/components/flex/stories/Flex.stories.js.map +1 -1
- package/build/es/components/flex/types.js +1 -1
- package/build/es/components/icon/Icon.js.map +1 -1
- package/build/es/components/icon/icons/ArrowDownIcon.js +1 -1
- package/build/es/components/icon/icons/ArrowDownIcon.js.map +1 -1
- package/build/es/components/icon/icons/ArrowLeftIcon.js +1 -1
- package/build/es/components/icon/icons/ArrowLeftIcon.js.map +1 -1
- package/build/es/components/icon/icons/ArrowNorthEastIcon.js +1 -1
- package/build/es/components/icon/icons/ArrowNorthEastIcon.js.map +1 -1
- package/build/es/components/icon/icons/ArrowRightIcon.js +1 -1
- package/build/es/components/icon/icons/ArrowRightIcon.js.map +1 -1
- package/build/es/components/icon/icons/ArrowUpIcon.js +1 -1
- package/build/es/components/icon/icons/ArrowUpIcon.js.map +1 -1
- package/build/es/components/icon/icons/CalendarIcon.js +1 -1
- package/build/es/components/icon/icons/CalendarIcon.js.map +1 -1
- package/build/es/components/icon/icons/CheckIcon.js +1 -1
- package/build/es/components/icon/icons/CheckIcon.js.map +1 -1
- package/build/es/components/icon/icons/ChevronDownIcon.js +1 -1
- package/build/es/components/icon/icons/ChevronDownIcon.js.map +1 -1
- package/build/es/components/icon/icons/ChevronLeftIcon.js +1 -1
- package/build/es/components/icon/icons/ChevronLeftIcon.js.map +1 -1
- package/build/es/components/icon/icons/ChevronRightIcon.js +1 -1
- package/build/es/components/icon/icons/ChevronRightIcon.js.map +1 -1
- package/build/es/components/icon/icons/ChevronUpIcon.js +1 -1
- package/build/es/components/icon/icons/ChevronUpIcon.js.map +1 -1
- package/build/es/components/icon/icons/CloseIcon.js +1 -1
- package/build/es/components/icon/icons/CloseIcon.js.map +1 -1
- package/build/es/components/icon/icons/CopyIcon.js +1 -1
- package/build/es/components/icon/icons/CopyIcon.js.map +1 -1
- package/build/es/components/icon/icons/DotsIcon.js +1 -1
- package/build/es/components/icon/icons/DotsIcon.js.map +1 -1
- package/build/es/components/icon/icons/DragIcon.js +1 -1
- package/build/es/components/icon/icons/DragIcon.js.map +1 -1
- package/build/es/components/icon/icons/ErrorIcon.js +1 -1
- package/build/es/components/icon/icons/ErrorIcon.js.map +1 -1
- package/build/es/components/icon/icons/GreenCheckIcon.js +1 -1
- package/build/es/components/icon/icons/GreenCheckIcon.js.map +1 -1
- package/build/es/components/icon/icons/HamburgerIcon.js +1 -1
- package/build/es/components/icon/icons/HamburgerIcon.js.map +1 -1
- package/build/es/components/icon/icons/InfoIcon.js +1 -1
- package/build/es/components/icon/icons/InfoIcon.js.map +1 -1
- package/build/es/components/icon/icons/LinkIcon.js +1 -1
- package/build/es/components/icon/icons/LinkIcon.js.map +1 -1
- package/build/es/components/icon/icons/MinusIcon.js +1 -1
- package/build/es/components/icon/icons/MinusIcon.js.map +1 -1
- package/build/es/components/icon/icons/OpenInNewIcon.js +1 -1
- package/build/es/components/icon/icons/OpenInNewIcon.js.map +1 -1
- package/build/es/components/icon/icons/PenIcon.js +1 -1
- package/build/es/components/icon/icons/PenIcon.js.map +1 -1
- package/build/es/components/icon/icons/PlusIcon.js +1 -1
- package/build/es/components/icon/icons/PlusIcon.js.map +1 -1
- package/build/es/components/icon/icons/QuestionIcon.js +1 -1
- package/build/es/components/icon/icons/QuestionIcon.js.map +1 -1
- package/build/es/components/icon/icons/RedCrossIcon.js +1 -1
- package/build/es/components/icon/icons/RedCrossIcon.js.map +1 -1
- package/build/es/components/icon/icons/SearchIcon.js +1 -1
- package/build/es/components/icon/icons/SearchIcon.js.map +1 -1
- package/build/es/components/icon/icons/SuccessIcon.js +1 -1
- package/build/es/components/icon/icons/SuccessIcon.js.map +1 -1
- package/build/es/components/icon/icons/ThumbDownIcon.js +1 -1
- package/build/es/components/icon/icons/ThumbDownIcon.js.map +1 -1
- package/build/es/components/icon/icons/ThumbUpIcon.js +1 -1
- package/build/es/components/icon/icons/ThumbUpIcon.js.map +1 -1
- package/build/es/components/icon/icons/TrashCanIcon.js +1 -1
- package/build/es/components/icon/icons/TrashCanIcon.js.map +1 -1
- package/build/es/components/icon/icons/WarningIcon.js +1 -1
- package/build/es/components/icon/icons/WarningIcon.js.map +1 -1
- package/build/es/components/icon/icons/animated/ArrowHorizontalAnimated.js +1 -1
- package/build/es/components/icon/icons/animated/ArrowHorizontalAnimated.js.map +1 -1
- package/build/es/components/icon/icons/animated/ArrowVerticalAnimated.js +1 -1
- package/build/es/components/icon/icons/animated/ArrowVerticalAnimated.js.map +1 -1
- package/build/es/components/icon/icons/animated/PlusRemoveAnimated.js +1 -1
- package/build/es/components/icon/icons/animated/PlusRemoveAnimated.js.map +1 -1
- package/build/es/components/icon/stories/Icons.stories.js.map +1 -1
- package/build/es/components/icon-button/IconButton.js.map +1 -1
- package/build/es/components/icon-button/stories/IconButton.stories.js +1 -1
- package/build/es/components/icon-button/stories/IconButton.stories.js.map +1 -1
- package/build/es/components/image/Image.js +1 -1
- package/build/es/components/image/Image.js.map +1 -1
- package/build/es/components/image/stories/Image.stories.js +1 -1
- package/build/es/components/image/stories/Image.stories.js.map +1 -1
- package/build/es/components/image/useImageLoadingStatus.js.map +1 -1
- package/build/es/components/input-group/FieldGroup.js +1 -1
- package/build/es/components/input-group/FieldGroup.js.map +1 -1
- package/build/es/components/input-group/InputGroup.js.map +1 -1
- package/build/es/components/input-group/Label.js +1 -1
- package/build/es/components/input-group/Label.js.map +1 -1
- package/build/es/components/input-group/SupportLabel.js +1 -1
- package/build/es/components/input-group/SupportLabel.js.map +1 -1
- package/build/es/components/input-group/stories/FieldGroup.stories.js +1 -1
- package/build/es/components/input-group/stories/FieldGroup.stories.js.map +1 -1
- package/build/es/components/input-group/stories/InputGroup.stories.js +1 -1
- package/build/es/components/input-group/stories/InputGroup.stories.js.map +1 -1
- package/build/es/components/input-group/stories/Label.stories.js +1 -1
- package/build/es/components/input-group/stories/Label.stories.js.map +1 -1
- package/build/es/components/input-group/stories/SupportLabel.stories.js +1 -1
- package/build/es/components/input-group/stories/SupportLabel.stories.js.map +1 -1
- package/build/es/components/link/Link.js.map +1 -1
- package/build/es/components/link/stories/Link.stories.js +1 -1
- package/build/es/components/link/stories/Link.stories.js.map +1 -1
- package/build/es/components/link-list/LinkList.js.map +1 -1
- package/build/es/components/link-list/index.d.ts +1 -1
- package/build/es/components/link-list/stories/LinkList.stories.js +1 -1
- package/build/es/components/link-list/stories/LinkList.stories.js.map +1 -1
- package/build/es/components/list/List.js +1 -1
- package/build/es/components/list/List.js.map +1 -1
- package/build/es/components/list/ListItem.js +1 -1
- package/build/es/components/list/ListItem.js.map +1 -1
- package/build/es/components/list/stories/List.stories.js +1 -1
- package/build/es/components/list/stories/List.stories.js.map +1 -1
- package/build/es/components/loader/Loader.js +1 -1
- package/build/es/components/loader/Loader.js.map +1 -1
- package/build/es/components/loader/skeletons/SkeletonAnimation.js +1 -1
- package/build/es/components/loader/skeletons/SkeletonAnimation.js.map +1 -1
- package/build/es/components/loader/skeletons/SkeletonButton.js +1 -1
- package/build/es/components/loader/skeletons/SkeletonButton.js.map +1 -1
- package/build/es/components/loader/skeletons/SkeletonCheckboxGroup.js +1 -1
- package/build/es/components/loader/skeletons/SkeletonCheckboxGroup.js.map +1 -1
- package/build/es/components/loader/skeletons/SkeletonElement.js +1 -1
- package/build/es/components/loader/skeletons/SkeletonElement.js.map +1 -1
- package/build/es/components/loader/skeletons/SkeletonInput.js +1 -1
- package/build/es/components/loader/skeletons/SkeletonInput.js.map +1 -1
- package/build/es/components/loader/skeletons/SkeletonLabel.js +1 -1
- package/build/es/components/loader/skeletons/SkeletonLabel.js.map +1 -1
- package/build/es/components/loader/skeletons/SkeletonRadioButtonGroup.js +1 -1
- package/build/es/components/loader/skeletons/SkeletonRadioButtonGroup.js.map +1 -1
- package/build/es/components/loader/skeletons/SkeletonTable.js +1 -1
- package/build/es/components/loader/skeletons/SkeletonTable.js.map +1 -1
- package/build/es/components/loader/skeletons/SkeletonTextArea.js +1 -1
- package/build/es/components/loader/skeletons/SkeletonTextArea.js.map +1 -1
- package/build/es/components/loader/stories/Loader.stories.js +1 -1
- package/build/es/components/loader/stories/Loader.stories.js.map +1 -1
- package/build/es/components/loader/stories/Skeleton.stories.js +1 -1
- package/build/es/components/loader/stories/Skeleton.stories.js.map +1 -1
- package/build/es/components/loader/useDelayedRender.js +1 -1
- package/build/es/components/loader/useDelayedRender.js.map +1 -1
- package/build/es/components/logo/Logo.js +1 -1
- package/build/es/components/logo/Logo.js.map +1 -1
- package/build/es/components/logo/LogoStamp.js.map +1 -1
- package/build/es/components/logo/stories/Logo.stories.js +1 -1
- package/build/es/components/logo/stories/Logo.stories.js.map +1 -1
- package/build/es/components/logo/stories/LogoStamp.stories.js +1 -1
- package/build/es/components/logo/stories/LogoStamp.stories.js.map +1 -1
- package/build/es/components/logo/text-paths/ForsikringLevertAvFremtind.js +1 -1
- package/build/es/components/logo/text-paths/ForsikringLevertAvFremtind.js.map +1 -1
- package/build/es/components/logo/text-paths/FraSB1ogDNB.js +1 -1
- package/build/es/components/logo/text-paths/FraSB1ogDNB.js.map +1 -1
- package/build/es/components/logo/text-paths/InnovasjonFraFremtind.js +1 -1
- package/build/es/components/logo/text-paths/InnovasjonFraFremtind.js.map +1 -1
- package/build/es/components/logo/text-paths/TeknologiFraFremtind.js +1 -1
- package/build/es/components/logo/text-paths/TeknologiFraFremtind.js.map +1 -1
- package/build/es/components/logo/text-paths/VartEgetForsikringsselskap.js +1 -1
- package/build/es/components/logo/text-paths/VartEgetForsikringsselskap.js.map +1 -1
- package/build/es/components/logo/text-paths/VartForsikringsselskap.js +1 -1
- package/build/es/components/logo/text-paths/VartForsikringsselskap.js.map +1 -1
- package/build/es/components/menu/Menu.js.map +1 -1
- package/build/es/components/menu/MenuDivider.js +1 -1
- package/build/es/components/menu/MenuDivider.js.map +1 -1
- package/build/es/components/menu/MenuItem.js.map +1 -1
- package/build/es/components/menu/MenuItemCheckbox.js.map +1 -1
- package/build/es/components/menu/stories/Menu.stories.js +1 -1
- package/build/es/components/menu/stories/Menu.stories.js.map +1 -1
- package/build/es/components/menu/stories/MenuDivider.stories.js +1 -1
- package/build/es/components/menu/stories/MenuDivider.stories.js.map +1 -1
- package/build/es/components/menu/stories/MenuItem.stories.js +1 -1
- package/build/es/components/menu/stories/MenuItem.stories.js.map +1 -1
- package/build/es/components/menu/stories/MenuItemCheckbox.stories.js.map +1 -1
- package/build/es/components/menu/types.d.ts +2 -2
- package/build/es/components/menu/useMenuWideEvents.js +1 -1
- package/build/es/components/menu/useMenuWideEvents.js.map +1 -1
- package/build/es/components/message/DismissButton.js.map +1 -1
- package/build/es/components/message/FormErrorMessage.js.map +1 -1
- package/build/es/components/message/Message.js +1 -1
- package/build/es/components/message/Message.js.map +1 -1
- package/build/es/components/message/stories/ErrorMessage.stories.js.map +1 -1
- package/build/es/components/message/stories/FormErrorMessage.stories.js.map +1 -1
- package/build/es/components/message/stories/InfoMessage.stories.js.map +1 -1
- package/build/es/components/message/stories/SuccessMessage.stories.js.map +1 -1
- package/build/es/components/message/stories/WarningMessage.stories.js.map +1 -1
- package/build/es/components/modal/Modal.js +1 -1
- package/build/es/components/modal/Modal.js.map +1 -1
- package/build/es/components/modal/stories/CompleteModal.stories.js +1 -1
- package/build/es/components/modal/stories/CompleteModal.stories.js.map +1 -1
- package/build/es/components/modal/stories/ModalActions.stories.js +1 -1
- package/build/es/components/modal/stories/ModalActions.stories.js.map +1 -1
- package/build/es/components/modal/stories/ModalCloseButton.stories.js +1 -1
- package/build/es/components/modal/stories/ModalCloseButton.stories.js.map +1 -1
- package/build/es/components/modal/stories/ModalOverlay.stories.js.map +1 -1
- package/build/es/components/modal/useModal.js.map +1 -1
- package/build/es/components/nav-link/NavLink.js.map +1 -1
- package/build/es/components/nav-link/stories/NavLink.stories.js.map +1 -1
- package/build/es/components/pagination/PageButton.js.map +1 -1
- package/build/es/components/pagination/Pagination.js +1 -1
- package/build/es/components/pagination/Pagination.js.map +1 -1
- package/build/es/components/pagination/stories/Pagination.stories.js.map +1 -1
- package/build/es/components/popover/Popover.js.map +1 -1
- package/build/es/components/popover/stories/PopoverControlled.stories.js.map +1 -1
- package/build/es/components/popover/stories/PopoverUncontrolled.stories.js.map +1 -1
- package/build/es/components/popover/types.d.ts +1 -1
- package/build/es/components/progress-bar/ProgressBar.js +1 -1
- package/build/es/components/progress-bar/ProgressBar.js.map +1 -1
- package/build/es/components/progress-bar/stories/ProgressBar.stories.js +1 -1
- package/build/es/components/progress-bar/stories/ProgressBar.stories.js.map +1 -1
- package/build/es/components/radio-button/BaseRadioButton.js.map +1 -1
- package/build/es/components/radio-button/RadioButton.js.map +1 -1
- package/build/es/components/radio-button/RadioButtonGroup.js +1 -1
- package/build/es/components/radio-button/RadioButtonGroup.js.map +1 -1
- package/build/es/components/radio-button/radioGroupContext.js.map +1 -1
- package/build/es/components/radio-button/stories/BaseRadioButton.stories.js.map +1 -1
- package/build/es/components/radio-button/stories/RadioButton.stories.js.map +1 -1
- package/build/es/components/radio-button/stories/RadioButtonGroup.stories.js +1 -1
- package/build/es/components/radio-button/stories/RadioButtonGroup.stories.js.map +1 -1
- package/build/es/components/radio-panel/RadioPanel.js.map +1 -1
- package/build/es/components/radio-panel/RadioPanelGroup.js.map +1 -1
- package/build/es/components/radio-panel/stories/RadioPanel.stories.js +1 -1
- package/build/es/components/radio-panel/stories/RadioPanel.stories.js.map +1 -1
- package/build/es/components/select/NativeSelect.js.map +1 -1
- package/build/es/components/select/Select.js +1 -1
- package/build/es/components/select/Select.js.map +1 -1
- package/build/es/components/select/stories/select.stories.js +1 -1
- package/build/es/components/select/stories/select.stories.js.map +1 -1
- package/build/es/components/summary-table/SummaryTable.js +1 -1
- package/build/es/components/summary-table/SummaryTable.js.map +1 -1
- package/build/es/components/summary-table/SummaryTableRow.js +1 -1
- package/build/es/components/summary-table/SummaryTableRow.js.map +1 -1
- package/build/es/components/summary-table/mocks.js +1 -1
- package/build/es/components/summary-table/mocks.js.map +1 -1
- package/build/es/components/summary-table/stories/summary-table.stories.js +1 -1
- package/build/es/components/summary-table/stories/summary-table.stories.js.map +1 -1
- package/build/es/components/system-message/SystemMessage.js +1 -1
- package/build/es/components/system-message/SystemMessage.js.map +1 -1
- package/build/es/components/system-message/common/DismissButton.js.map +1 -1
- package/build/es/components/system-message/common/MessageIcon.js +1 -1
- package/build/es/components/system-message/common/MessageIcon.js.map +1 -1
- package/build/es/components/table/DataTable.js.map +1 -1
- package/build/es/components/table/ExpandableTableRow.js +1 -1
- package/build/es/components/table/ExpandableTableRow.js.map +1 -1
- package/build/es/components/table/ExpandableTableRowController.js.map +1 -1
- package/build/es/components/table/Table.js.map +1 -1
- package/build/es/components/table/TableBody.js.map +1 -1
- package/build/es/components/table/TableCaption.js.map +1 -1
- package/build/es/components/table/TableCell.js.map +1 -1
- package/build/es/components/table/TableColumn.js.map +1 -1
- package/build/es/components/table/TableColumnGroup.js.map +1 -1
- package/build/es/components/table/TableFooter.js.map +1 -1
- package/build/es/components/table/TableHead.js.map +1 -1
- package/build/es/components/table/TableHeader.js.map +1 -1
- package/build/es/components/table/TablePagination.js +1 -1
- package/build/es/components/table/TablePagination.js.map +1 -1
- package/build/es/components/table/TableRow.js.map +1 -1
- package/build/es/components/table/stories/table.stories.js +1 -1
- package/build/es/components/table/stories/table.stories.js.map +1 -1
- package/build/es/components/table/tableContext.js.map +1 -1
- package/build/es/components/table/tableSectionContext.js.map +1 -1
- package/build/es/components/table/types.js +1 -1
- package/build/es/components/table/utils.js.map +1 -1
- package/build/es/components/tabs/NavTab.js.map +1 -1
- package/build/es/components/tabs/NavTabs.js.map +1 -1
- package/build/es/components/tabs/Tab.js.map +1 -1
- package/build/es/components/tabs/TabList.js.map +1 -1
- package/build/es/components/tabs/TabPanel.js +1 -1
- package/build/es/components/tabs/TabPanel.js.map +1 -1
- package/build/es/components/tabs/Tabs.js.map +1 -1
- package/build/es/components/tabs/stories/NavTabs.stories.js +1 -1
- package/build/es/components/tabs/stories/NavTabs.stories.js.map +1 -1
- package/build/es/components/tabs/stories/Tabs.stories.js +1 -1
- package/build/es/components/tabs/stories/Tabs.stories.js.map +1 -1
- package/build/es/components/tabs/tabsContext.js.map +1 -1
- package/build/es/components/tabs/types.d.ts +1 -1
- package/build/es/components/tag/Tag.js +1 -1
- package/build/es/components/tag/Tag.js.map +1 -1
- package/build/es/components/tag/index.d.ts +1 -1
- package/build/es/components/tag/stories/Tag.stories.js +1 -1
- package/build/es/components/tag/stories/Tag.stories.js.map +1 -1
- package/build/es/components/text-area/BaseTextArea.js.map +1 -1
- package/build/es/components/text-area/TextArea.js.map +1 -1
- package/build/es/components/text-area/stories/TextArea.stories.js.map +1 -1
- package/build/es/components/text-input/BaseTextInput.js.map +1 -1
- package/build/es/components/text-input/TextInput.js.map +1 -1
- package/build/es/components/toast/Toast.js +1 -1
- package/build/es/components/toast/Toast.js.map +1 -1
- package/build/es/components/toast/ToastRegion.js +1 -1
- package/build/es/components/toast/ToastRegion.js.map +1 -1
- package/build/es/components/toast/index.d.ts +1 -1
- package/build/es/components/toast/stories/Toast.stories.js +1 -1
- package/build/es/components/toast/stories/Toast.stories.js.map +1 -1
- package/build/es/components/toast/toastContext.js.map +1 -1
- package/build/es/components/toggle-switch/ToggleSlider.js.map +1 -1
- package/build/es/components/toggle-switch/ToggleSwitch.js.map +1 -1
- package/build/es/components/toggle-switch/stories/ToggleSwitch.stories.js.map +1 -1
- package/build/es/components/toggle-switch/usePillStyles.js +1 -1
- package/build/es/components/toggle-switch/usePillStyles.js.map +1 -1
- package/build/es/components/tooltip/PopupTip.js.map +1 -1
- package/build/es/components/tooltip/Tooltip.js +1 -1
- package/build/es/components/tooltip/Tooltip.js.map +1 -1
- package/build/es/components/tooltip/TooltipContent.js.map +1 -1
- package/build/es/components/tooltip/stories/Tooltip.stories.js +1 -1
- package/build/es/components/tooltip/stories/Tooltip.stories.js.map +1 -1
- package/build/es/hooks/useAnimatedHeight/useAnimatedHeight.js +1 -1
- package/build/es/hooks/useAnimatedHeight/useAnimatedHeight.js.map +1 -1
- package/build/es/hooks/useAnimatedHeight/useAnimatedHeightBetween.js +1 -1
- package/build/es/hooks/useAnimatedHeight/useAnimatedHeightBetween.js.map +1 -1
- package/build/es/hooks/useAnimatedHeight/useAutoAnimateHeight.js +1 -1
- package/build/es/hooks/useAnimatedHeight/useAutoAnimateHeight.js.map +1 -1
- package/build/es/hooks/useBrowserPreferences/useBrowserPreferences.js.map +1 -1
- package/build/es/hooks/useClickOutside/useClickOutside.js +1 -1
- package/build/es/hooks/useClickOutside/useClickOutside.js.map +1 -1
- package/build/es/hooks/useElementDimensions/useElementDimensions.js.map +1 -1
- package/build/es/hooks/useFocusOutside/useFocusOutside.js +1 -1
- package/build/es/hooks/useFocusOutside/useFocusOutside.js.map +1 -1
- package/build/es/hooks/useIntersectionObserver/useIntersectionObserver.d.ts +1 -1
- package/build/es/hooks/useIntersectionObserver/useIntersectionObserver.js +1 -1
- package/build/es/hooks/useIntersectionObserver/useIntersectionObserver.js.map +1 -1
- package/build/es/hooks/useKeyListener/useKeyListener.js +1 -1
- package/build/es/hooks/useKeyListener/useKeyListener.js.map +1 -1
- package/build/es/hooks/useListNavigation/useListNavigation.js +1 -1
- package/build/es/hooks/useListNavigation/useListNavigation.js.map +1 -1
- package/build/es/hooks/useMutationObserver/useMutationObserver.js.map +1 -1
- package/build/es/hooks/useProgressiveImg/useProgressiveImg.js.map +1 -1
- package/build/es/hooks/useScreen/index.d.ts +1 -1
- package/build/es/hooks/useScreen/useScreen.js +1 -1
- package/build/es/hooks/useScreen/useScreen.js.map +1 -1
- package/build/es/hooks/useScrollIntoView/useScrollIntoView.js.map +1 -1
- package/build/es/hooks/useSwipeGesture/useSwipeGesture.d.ts +1 -1
- package/build/es/hooks/useSwipeGesture/useSwipeGesture.js.map +1 -1
- package/build/es/shared/input-panel/BasePanel.js.map +1 -1
- package/build/es/utilities/formatters/avstand/formatAvstand.js.map +1 -1
- package/build/es/utilities/formatters/bytes/formatBytes.js.map +1 -1
- package/build/es/utilities/formatters/util/parseNumber.js.map +1 -1
- package/build/es/utilities/formatters/valuta/formatValuta.js +1 -1
- package/build/es/utilities/formatters/valuta/formatValuta.js.map +1 -1
- package/build/es/utilities/getThemeAndDensity.js +1 -1
- package/build/es/utilities/getThemeAndDensity.js.map +1 -1
- package/build/es/utilities/polymorphism/mergeRefs.js +1 -1
- package/build/es/utilities/polymorphism/mergeRefs.js.map +1 -1
- package/build/es/utilities/tabListener.js +1 -1
- package/build/es/utilities/tabListener.js.map +1 -1
- package/build/style.css +1 -1
- package/package.json +2 -2
- package/styles/components/button/button.css +3 -31
- package/styles/components/button/button.min.css +1 -1
- package/styles/components/button/button.scss +6 -67
- package/styles/components/checkbox/checkbox.css +4 -4
- package/styles/components/checkbox/checkbox.min.css +1 -1
- package/styles/components/checkbox-panel/checkbox-panel.css +2 -2
- package/styles/components/checkbox-panel/checkbox-panel.min.css +1 -1
- package/styles/components/countdown/countdown.css +2 -2
- package/styles/components/countdown/countdown.min.css +1 -1
- package/styles/components/feedback/feedback.css +2 -2
- package/styles/components/feedback/feedback.min.css +1 -1
- package/styles/components/input-group/input-group.css +2 -2
- package/styles/components/input-group/input-group.min.css +1 -1
- package/styles/components/loader/loader.css +6 -6
- package/styles/components/loader/loader.min.css +1 -1
- package/styles/components/loader/skeleton-loader.css +5 -5
- package/styles/components/loader/skeleton-loader.min.css +1 -1
- package/styles/components/message/message.css +2 -2
- package/styles/components/message/message.min.css +1 -1
- package/styles/components/progress-bar/progress-bar.css +1 -1
- package/styles/components/progress-bar/progress-bar.min.css +1 -1
- package/styles/components/radio-button/radio-button.css +2 -2
- package/styles/components/radio-button/radio-button.min.css +1 -1
- package/styles/components/radio-panel/radio-panel.css +2 -2
- package/styles/components/radio-panel/radio-panel.min.css +1 -1
- package/styles/components/system-message/system-message.css +2 -2
- package/styles/components/system-message/system-message.min.css +1 -1
- package/styles/components/toast/toast.css +4 -4
- package/styles/components/toast/toast.min.css +1 -1
- package/styles/styles.css +39 -67
- package/styles/styles.min.css +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chip.cjs","sources":["../../../../src/components/chip/Chip.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, { forwardRef } from \"react\";\nimport { CheckIcon } from \"../icon/icons/CheckIcon.js\";\nimport { CloseIcon } from \"../icon/icons/CloseIcon.js\";\nimport { ChipProps } from \"./types.js\";\n\nexport const Chip = forwardRef<HTMLButtonElement, ChipProps>(function Chip(\n {\n className,\n variant,\n onClick,\n children,\n selected,\n size = \"small\",\n ...rest\n },\n ref,\n) {\n return (\n <button\n type=\"button\"\n ref={ref}\n className={clsx(\n \"jkl-chip\",\n `jkl-chip--${size}`,\n `jkl-chip--${variant}`,\n className,\n )}\n onClick={onClick}\n aria-pressed={selected}\n {...rest}\n >\n {children}\n {variant === \"filter\" && selected && (\n <CheckIcon\n className=\"jkl-chip__icon\"\n variant=\"small\"\n data-testid=\"jkl-check-icon\"\n />\n )}\n {variant === \"input\" && (\n <CloseIcon\n className=\"jkl-chip__icon\"\n variant=\"small\"\n data-testid=\"jkl-close-icon\"\n />\n )}\n </button>\n );\n});\n"],"names":["Chip","forwardRef","className","variant","onClick","children","selected","size","rest","ref","jsxs","type","clsx","jsx","CheckIcon","CloseIcon"],"mappings":"kQAMaA,EAAOC,EAAAA,YAAyC,UAErDC,UAAAA,EACAC,QAAAA,EACAC,QAAAA,EACAC,SAAAA,EACAC,SAAAA,EACAC,KAAAA,EAAO,WACJC,GAEPC,GAGI,OAAAC,EAAAA,KAAC,SAAA,CACGC,KAAK,SACLF,IAAAA,EACAP,UAAWU,EAAAA,KACP,WACA,aAAaL,IACb,aAAaJ,IACbD,GAEJE,QAAAA,EACA,eAAcE,KACVE,EAEHH,SAAA,CAAAA,EACY,WAAZF,GAAwBG,GACrBO,EAAAA,IAACC,EAAAA,UAAA,CACGZ,UAAU,iBACVC,QAAQ,QACR,cAAY,mBAGP,UAAZA,GACGU,EAAAA,IAACE,EAAAA,UAAA,CACGb,UAAU,iBACVC,QAAQ,QACR,cAAY,qBAKhC"}
|
|
1
|
+
{"version":3,"file":"Chip.cjs","sources":["../../../../src/components/chip/Chip.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, { forwardRef } from \"react\";\nimport { CheckIcon } from \"../icon/icons/CheckIcon.js\";\nimport { CloseIcon } from \"../icon/icons/CloseIcon.js\";\nimport type { ChipProps } from \"./types.js\";\n\nexport const Chip = forwardRef<HTMLButtonElement, ChipProps>(function Chip(\n {\n className,\n variant,\n onClick,\n children,\n selected,\n size = \"small\",\n ...rest\n },\n ref,\n) {\n return (\n <button\n type=\"button\"\n ref={ref}\n className={clsx(\n \"jkl-chip\",\n `jkl-chip--${size}`,\n `jkl-chip--${variant}`,\n className,\n )}\n onClick={onClick}\n aria-pressed={selected}\n {...rest}\n >\n {children}\n {variant === \"filter\" && selected && (\n <CheckIcon\n className=\"jkl-chip__icon\"\n variant=\"small\"\n data-testid=\"jkl-check-icon\"\n />\n )}\n {variant === \"input\" && (\n <CloseIcon\n className=\"jkl-chip__icon\"\n variant=\"small\"\n data-testid=\"jkl-close-icon\"\n />\n )}\n </button>\n );\n});\n"],"names":["Chip","forwardRef","className","variant","onClick","children","selected","size","rest","ref","jsxs","type","clsx","jsx","CheckIcon","CloseIcon"],"mappings":"kQAMaA,EAAOC,EAAAA,YAAyC,UAErDC,UAAAA,EACAC,QAAAA,EACAC,QAAAA,EACAC,SAAAA,EACAC,SAAAA,EACAC,KAAAA,EAAO,WACJC,GAEPC,GAGI,OAAAC,EAAAA,KAAC,SAAA,CACGC,KAAK,SACLF,IAAAA,EACAP,UAAWU,EAAAA,KACP,WACA,aAAaL,IACb,aAAaJ,IACbD,GAEJE,QAAAA,EACA,eAAcE,KACVE,EAEHH,SAAA,CAAAA,EACY,WAAZF,GAAwBG,GACrBO,EAAAA,IAACC,EAAAA,UAAA,CACGZ,UAAU,iBACVC,QAAQ,QACR,cAAY,mBAGP,UAAZA,GACGU,EAAAA,IAACE,EAAAA,UAAA,CACGb,UAAU,iBACVC,QAAQ,QACR,cAAY,qBAKhC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),o=require("../../../clsx-E3yX_9sL.cjs"),t=require("react"),l=require("../../hooks/useAnimatedHeight/useAnimatedHeight.cjs"),a=require("../../hooks/useId/useId.cjs"),n=require("../../hooks/useListNavigation/useListNavigation.cjs"),r=require("../chip/Chip.cjs"),s=require("../icon/
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),o=require("../../../clsx-E3yX_9sL.cjs"),t=require("react"),l=require("../../hooks/useAnimatedHeight/useAnimatedHeight.cjs"),a=require("../../hooks/useId/useId.cjs"),n=require("../../hooks/useListNavigation/useListNavigation.cjs"),r=require("../chip/Chip.cjs"),s=require("../icon-button/IconButton.cjs"),i=require("../icon/icons/CheckIcon.cjs"),c=require("../icon/icons/animated/ArrowVerticalAnimated.cjs"),u=require("../input-group/InputGroup.cjs"),d=require("../tooltip/Tooltip.cjs"),b=require("../tooltip/TooltipContent.cjs"),p=require("../tooltip/TooltipTrigger.cjs");function m(e){return"string"==typeof e?{value:e,label:e}:e}const v=({id:v,placeholder:x,items:j,onChange:k,onFocus:f,onBlur:h,value:g,label:_,noMatchingOption:y,labelProps:C,helpLabel:w,errorLabel:$,width:q,density:N,name:L,className:T,invalid:S,hasTagHover:I})=>{var P,B;const D=a.useId(v||"jkl-combobox",{generateSuffix:!v}),E=`${D}_label`,A=`${D}_button`,F=`${D}_search-input`,[M,O]=t.useState(g||[]),[K,V]=t.useState(!1),[H,R]=t.useState(""),[G,U]=t.useState(!1),[z,J]=t.useState(!1),Q=t.useRef(null),W=t.useRef(null),X=t.useRef(!1);t.useEffect((()=>{R(""),K&&Q.current&&Q.current.focus()}),[K]),t.useEffect((()=>{O((e=>g||e))}),[g]);const Y=e=>!!M&&M.some((o=>o.value===e.value)),Z=t.useCallback((e=>M.filter((o=>o.value!==e))),[M]),ee=t.useCallback(((e,o)=>{const t=Z(o);O(t),k({type:"change",target:{name:L,value:o,selectedOptions:t}}),e.stopPropagation(),0===t.length&&J(!1)}),[Z,k,L]),oe=t.useCallback((e=>{var o;let t;if(M.some((o=>o.value===e)))t=Z(e);else{const o=j.find((o=>o.value===e));t=[...M,o]}null==(o=Q.current)||o.focus(),O(t),k({type:"change",target:{name:L,value:e,selectedOptions:t}})}),[M,k,L,Z,j]),te=e=>{var o;null==(o=Q.current)||o.focus(),V(!0),R(e.target.value)},le=t.useMemo((()=>{if(!H)return j;const e=j.filter((e=>e.label.toLowerCase().indexOf(H.toLowerCase())>=0));return U(0===e.length),e}),[H,j]),[ae,ne]=t.useState(null!=(P=le[0])&&P.value?`${D}-${null==(B=le[0])?void 0:B.value}`:void 0),re=!K;t.useEffect((()=>{const e=e=>{"Escape"===e.key&&K&&V(!1)};return typeof window<"u"&&window.addEventListener("keydown",e),()=>{typeof window<"u"&&K&&window.removeEventListener("keydown",e)}}),[K]);const se=t.useCallback((e=>{e?Q.current&&Q.current.focus():X.current&&W.current&&W.current.focus()}),[]),ie=t.useCallback((()=>{X.current||(f&&f({type:"change",target:{name:L,value:(null==M?void 0:M[0].value)||"",selectedOptions:M}}),X.current=!0,V(!0))}),[f,M,L]),[ce]=l.useAnimatedHeight(K,{onFirstVisible:se,onTransitionEnd:se});n.useListNavigation({ref:ce});const ue=t.useRef(null),de=t.useCallback((e=>{var o,t;const l=ue.current;(null==l?void 0:l.contains(e.relatedTarget))||(R(""),h&&(h({type:"blur",target:{name:L,value:(null==(o=null==M?void 0:M[0])?void 0:o.value)||"",selectedOptions:M}}),null==(t=W.current)||t.dispatchEvent(new Event("focusout",{bubbles:!0}))),X.current=!1,V(!1))}),[h,L,M]),be=t.useCallback((e=>{e.target.focus({preventScroll:!0})}),[]),pe=t.useCallback((e=>{var o;if("ArrowDown"===e.key){e.preventDefault(),e.stopPropagation();const t=ce.current;t&&(null==(o=t.querySelector('[role="option"]'))||o.focus())}else"Escape"===e.key&&(e.preventDefault(),e.stopPropagation(),V(!1));if(e.metaKey&&"a"===e.key||e.ctrlKey&&"a"===e.key){e.preventDefault(),e.stopPropagation();const o=M.map((e=>({...e,isMarked:!0})));J(!0),O(o)}else if("Backspace"===e.key)if(e.stopPropagation(),J(!1),M.some((e=>e.isMarked))){const e=M.filter((e=>!e.isMarked));O(e),R("")}else M.length>0&&""===H&&ee(e,M[M.length-1].value)}),[M,H,ce,ee]),me=t.useCallback((e=>{if("Tab"===e.key)Q.current&&(e.preventDefault(),e.stopPropagation(),e.shiftKey||V(!1),Q.current.focus());else if("ArrowUp"===e.key&&ce.current&&Q.current){const o=ce.current.querySelector('[role="option"]:not([hidden])');e.currentTarget.id===(null==o?void 0:o.id)&&Q.current&&Q.current.focus()}}),[ce]),ve=M.length>=1,xe=t.useCallback((o=>e.jsx(r.Chip,{"data-testid":"jkl-chip","aria-label":`Fjern ${o.tagLabel}`,className:`jkl-combobox__selected-option ${z&&"jkl-combobox__selected-option--marked"}`,variant:"input",onClick:e=>{Q.current&&Q.current.focus(),ee(e,o.value)},onBlur:de,children:o.tagLabel?o.tagLabel:o.label},o.value)),[de,ee,z]);return e.jsx(u.InputGroup,{label:_,id:F,ref:ue,"data-testid":"jkl-combobox",className:o.clsx("jkl-combobox",T,{"jkl-combobox--invalid":!!$||S,"jkl-combobox--menu-open":K,"jkl-combobox--menu-closed":!K&&ve}),labelProps:{id:E,...C},helpLabel:w,errorLabel:$,density:N,render:t=>e.jsxs("div",{className:o.clsx("jkl-combobox__wrapper",{"jkl-combobox__wrapper--active-value":ve}),style:{width:q},tabIndex:-1,onFocus:ie,onBlur:de,children:[e.jsxs("div",{className:"jkl-combobox__chips","data-testid":"jkl-combobox__chips",children:[M.map(m).map((o=>I?e.jsxs(d.Tooltip,{children:[e.jsx(p.TooltipTrigger,{children:xe(o)}),e.jsx(b.TooltipContent,{children:o.label})]},o.value):xe(o))),e.jsx("input",{...t,className:"jkl-combobox__search-input",onChange:te,"data-testid":"jkl-combobox__search-input",onFocus:ie,onBlur:de,onKeyDown:pe,value:H,ref:Q,"aria-controls":D,role:"combobox","aria-autocomplete":"list","aria-expanded":K,placeholder:M.length>0?"":x,autoComplete:"off"})]}),e.jsxs("div",{className:"jkl-combobox__menu",role:"listbox",ref:ce,id:D,"aria-labelledby":E,"aria-multiselectable":"true","aria-activedescendant":ae,onFocus:ie,onBlur:de,tabIndex:-1,children:[le.map(((o,t)=>e.jsxs("button",{type:"button",id:`${D}__${o.value}`,"aria-selected":Y(o),role:"option",value:o.value,onBlur:de,className:`jkl-combobox__option ${Y(o)&&"jkl-combobox__option--selected"}`,"data-testid":"jkl-combobox__option","data-testautoid":`jkl-combobox__option-${t}`,onFocus:ie,onKeyDown:me,onClick:e=>{ne(`${D}__${o.value}`),e.stopPropagation(),oe(o.value),R("")},onMouseOver:be,children:[o.description?e.jsxs("span",{children:[o.label,e.jsx("span",{className:"jkl-combobox__option-description",children:o.description})]}):o.label,Y(o)?e.jsxs("span",{children:[e.jsx(i.CheckIcon,{})," "]}):null]},`${D}-${o.value}`))),G&&e.jsx("div",{className:"jkl-combobox__no-option",children:y})]}),e.jsx("div",{className:"jkl-combobox__actions",children:e.jsx(s.IconButton,{id:A,onFocus:ie,onBlur:de,className:"jkl-combobox__button","data-testid":"jkl-combobox__button","aria-label":`${M.map((e=>e.label))||"Velg"},${_}`,"aria-expanded":K,"aria-controls":D,onClick:()=>V((e=>!e)),onMouseDown:e=>{var o;e.preventDefault(),null==(o=W.current)||o.focus()},children:e.jsx(c.ArrowVerticalAnimated,{pointingDown:re})})})]})})};v.displayName="Combobox",exports.Combobox=v,exports.getComboboxValuePair=m;
|
|
2
2
|
//# sourceMappingURL=Combobox.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Combobox.cjs","sources":["../../../../src/components/combobox/Combobox.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, {\n FC,\n FocusEvent,\n KeyboardEvent,\n MouseEvent,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useAnimatedHeight } from \"../../hooks/useAnimatedHeight/useAnimatedHeight.js\";\nimport { useId } from \"../../hooks/useId/useId.js\";\nimport { useListNavigation } from \"../../hooks/useListNavigation/useListNavigation.js\";\nimport { ValuePair } from \"../../utilities/valuePair.js\";\nimport { Chip } from \"../chip/Chip.js\";\nimport { ArrowVerticalAnimated } from \"../icon/icons/animated/ArrowVerticalAnimated.js\";\nimport { CheckIcon } from \"../icon/icons/CheckIcon.js\";\nimport { IconButton } from \"../icon-button/IconButton.js\";\nimport { InputGroup } from \"../input-group/InputGroup.js\";\nimport { Tooltip } from \"../tooltip/Tooltip.js\";\nimport { TooltipContent } from \"../tooltip/TooltipContent.js\";\nimport { TooltipTrigger } from \"../tooltip/TooltipTrigger.js\";\nimport { ComboboxProps, ComboboxValuePair } from \"./types.js\";\n\nexport function getComboboxValuePair(\n item: string | ComboboxValuePair,\n): ComboboxValuePair {\n return typeof item === \"string\" ? { value: item, label: item } : item;\n}\n\nexport const Combobox: FC<ComboboxProps> = ({\n id,\n placeholder,\n items,\n onChange,\n onFocus,\n onBlur,\n value,\n label,\n noMatchingOption,\n labelProps,\n helpLabel,\n errorLabel,\n width,\n density,\n name,\n className,\n invalid,\n hasTagHover,\n}) => {\n const listId = useId(id || \"jkl-combobox\", { generateSuffix: !id });\n const labelId = `${listId}_label`;\n const buttonId = `${listId}_button`;\n const inputId = `${listId}_search-input`;\n\n const [selectedValue, setSelectedValue] = useState<\n Array<ComboboxValuePair>\n >(value || []);\n const [showMenu, setShowMenu] = useState<boolean>(false);\n const [searchValue, setSearchValue] = useState<string>(\"\");\n const [noResults, setNoResults] = useState(false);\n const [marked, setMarked] = useState<boolean>(false);\n\n const searchRef = useRef<HTMLInputElement>(null);\n const inputRef = useRef<HTMLDivElement>(null);\n const focusInsideRef = useRef(false);\n\n useEffect(() => {\n setSearchValue(\"\");\n if (showMenu && searchRef.current) {\n searchRef.current.focus();\n }\n }, [showMenu]);\n\n useEffect(() => {\n setSelectedValue((prev) => value || prev);\n }, [value]);\n\n // Funksjon for å stile valgt element\n const isSelected = (option: ValuePair) => {\n if (!selectedValue) {\n return false;\n } else {\n return selectedValue.some((value) => value.value === option.value);\n }\n };\n\n // Fjerne ett eller flere valg\n const removeOption = useCallback(\n (option: string) => {\n return selectedValue.filter((value) => value.value !== option);\n },\n [selectedValue],\n );\n\n const onTagRemove = useCallback(\n (\n e:\n | React.MouseEvent<HTMLButtonElement, globalThis.MouseEvent>\n | React.KeyboardEvent<HTMLInputElement>,\n option: string,\n ) => {\n let newValue = removeOption(option);\n setSelectedValue(newValue);\n onChange({\n type: \"change\",\n target: { name, value: option, selectedOptions: newValue },\n });\n e.stopPropagation();\n\n if (newValue.length === 0) {\n setMarked(false);\n }\n },\n [removeOption, setSelectedValue, onChange, name, setMarked],\n );\n\n // Håndtere valgt verdi i listen\n const onItemClick = useCallback(\n (option: string) => {\n let newValue: Array<ValuePair>;\n\n if (selectedValue.some((value) => value.value === option)) {\n newValue = removeOption(option);\n } else {\n const item = items.find((i) => i.value === option);\n newValue = [...selectedValue, item as ValuePair];\n }\n searchRef.current?.focus();\n setSelectedValue(newValue);\n onChange({\n type: \"change\",\n target: { name, value: option, selectedOptions: newValue },\n });\n },\n [selectedValue, setSelectedValue, onChange, name, removeOption, items],\n );\n\n // Funksjon for søk\n const onSearch = (e: {\n target: { value: React.SetStateAction<string> };\n }) => {\n searchRef.current?.focus();\n setShowMenu(true);\n setSearchValue(e.target.value);\n };\n\n const options = useMemo(() => {\n if (!searchValue) {\n return items;\n }\n\n const filteredOptions = items.filter(\n (option) =>\n option.label.toLowerCase().indexOf(searchValue.toLowerCase()) >=\n 0,\n );\n\n setNoResults(filteredOptions.length === 0);\n\n return filteredOptions;\n }, [searchValue, items]);\n\n // Det første elementet i listen skal være aktivt fram til brukeren klikker på noe annet\n const [activeDescendant, setActiveDescendant] = useState<\n string | undefined\n >(options[0]?.value ? `${listId}-${options[0]?.value}` : undefined);\n\n // Håndtere arrow-state\n const isPointingDown = !showMenu;\n\n // Lukk meny med ESC\n useEffect(() => {\n const handleEscape = (e: globalThis.KeyboardEvent) => {\n if (e.key === \"Escape\" && showMenu) {\n setShowMenu(false);\n }\n };\n if (typeof window !== \"undefined\") {\n window.addEventListener(\"keydown\", handleEscape);\n }\n return () => {\n if (typeof window !== \"undefined\" && showMenu) {\n window.removeEventListener(\"keydown\", handleEscape);\n }\n };\n }, [setShowMenu, showMenu]);\n\n // Fokushåndtering\n const handleFocusPlacement = useCallback((isOpen: boolean) => {\n if (isOpen) {\n if (searchRef.current) {\n searchRef.current.focus();\n }\n } else {\n if (focusInsideRef.current && inputRef.current) {\n inputRef.current.focus();\n }\n }\n }, []);\n\n const handleFocus = useCallback(() => {\n if (!focusInsideRef.current) {\n if (onFocus) {\n onFocus({\n type: \"change\",\n target: {\n name,\n value: selectedValue?.[0].value || \"\",\n selectedOptions: selectedValue,\n },\n });\n }\n focusInsideRef.current = true;\n setShowMenu(true);\n }\n }, [onFocus, selectedValue, name]);\n\n const [dropdownRef] = useAnimatedHeight<HTMLDivElement>(showMenu, {\n onFirstVisible: handleFocusPlacement,\n onTransitionEnd: handleFocusPlacement,\n });\n\n useListNavigation({ ref: dropdownRef });\n\n const componentRootElementRef = useRef<HTMLDivElement>(null);\n\n const handleBlur = useCallback(\n (\n e: FocusEvent<\n HTMLDivElement | HTMLInputElement | HTMLButtonElement\n >,\n ) => {\n const componentRootElement = componentRootElementRef.current;\n const nextFocusIsInsideComponent =\n componentRootElement &&\n componentRootElement.contains(e.relatedTarget as Node);\n if (!nextFocusIsInsideComponent) {\n setSearchValue(\"\");\n\n if (onBlur) {\n onBlur({\n type: \"blur\",\n target: {\n name,\n value: selectedValue?.[0]?.value || \"\",\n selectedOptions: selectedValue,\n },\n });\n inputRef.current?.dispatchEvent(\n new Event(\"focusout\", { bubbles: true }),\n );\n }\n focusInsideRef.current = false;\n setShowMenu(false);\n }\n },\n [onBlur, name, selectedValue],\n );\n\n const handleMouseOver = useCallback((e: MouseEvent<HTMLButtonElement>) => {\n // Ved mouseOver på options flytter vi fokus til dem for å unngå \"dobbel fokus\"\n // der det ser ut som to forskjellige elementer er fokusert/hovered samtidig\n (e.target as HTMLButtonElement).focus({ preventScroll: true });\n }, []);\n\n // Tastaturnavigasjon\n const handleSearchOnKeyDown = useCallback(\n (e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n e.stopPropagation();\n const listElement = dropdownRef.current;\n if (listElement) {\n listElement\n .querySelector<HTMLButtonElement>('[role=\"option\"]')\n ?.focus();\n }\n } else if (e.key === \"Escape\") {\n e.preventDefault();\n e.stopPropagation();\n setShowMenu(false);\n }\n\n if ((e.metaKey && e.key === \"a\") || (e.ctrlKey && e.key === \"a\")) {\n e.preventDefault();\n e.stopPropagation();\n const updatedSelectedValue = selectedValue.map((item) => ({\n ...item,\n isMarked: true,\n }));\n setMarked(true);\n setSelectedValue(updatedSelectedValue);\n } else if (e.key === \"Backspace\") {\n e.stopPropagation();\n setMarked(false);\n\n // Sjekk om selectedValue er markert\n const selectedValueIsMarked = selectedValue.some(\n (item) => item.isMarked,\n );\n\n if (selectedValueIsMarked) {\n const updatedSelectedValue = selectedValue.filter(\n (item) => !item.isMarked,\n );\n setSelectedValue(updatedSelectedValue);\n setSearchValue(\"\");\n } else if (selectedValue.length > 0 && searchValue === \"\") {\n // Hvis ingen items er markert, fjern siste valgte item\n onTagRemove(\n e,\n selectedValue[selectedValue.length - 1].value,\n );\n }\n }\n },\n [selectedValue, searchValue, dropdownRef, onTagRemove],\n );\n\n const handleOptionOnKeyDown = useCallback(\n (e: KeyboardEvent<HTMLButtonElement>) => {\n if (e.key === \"Tab\") {\n if (searchRef.current) {\n e.preventDefault();\n e.stopPropagation();\n\n if (e.shiftKey) {\n searchRef.current.focus();\n } else {\n setShowMenu(false);\n searchRef.current.focus();\n }\n }\n } else if (e.key === \"ArrowUp\") {\n if (dropdownRef.current && searchRef.current) {\n // Can't be based on index since the first item might be filtered out\n const firstVisible = dropdownRef.current.querySelector(\n '[role=\"option\"]:not([hidden])',\n );\n if (\n e.currentTarget.id === firstVisible?.id &&\n searchRef.current\n ) {\n searchRef.current.focus();\n }\n }\n }\n },\n [setShowMenu, dropdownRef],\n );\n\n const hasSelection = selectedValue.length >= 1;\n\n const renderSelectedOption = useCallback(\n (option: ComboboxValuePair) => (\n <Chip\n key={option.value}\n data-testid=\"jkl-chip\"\n aria-label={`Fjern ${option.tagLabel}`}\n className={`jkl-combobox__selected-option ${\n marked && \"jkl-combobox__selected-option--marked\"\n }`}\n variant=\"input\"\n onClick={(e) => {\n if (searchRef.current) {\n searchRef.current.focus();\n }\n onTagRemove(e, option.value);\n }}\n onBlur={handleBlur}\n >\n {option.tagLabel ? option.tagLabel : option.label}\n </Chip>\n ),\n [handleBlur, onTagRemove, marked],\n );\n\n return (\n <InputGroup\n label={label}\n id={inputId}\n ref={componentRootElementRef}\n data-testid=\"jkl-combobox\"\n className={clsx(\"jkl-combobox\", className, {\n \"jkl-combobox--invalid\": !!errorLabel || invalid,\n \"jkl-combobox--menu-open\": showMenu,\n \"jkl-combobox--menu-closed\": !showMenu && hasSelection,\n })}\n labelProps={{\n id: labelId,\n ...labelProps,\n }}\n helpLabel={helpLabel}\n errorLabel={errorLabel}\n density={density}\n render={(inputProps) => (\n <div\n className={clsx(\"jkl-combobox__wrapper\", {\n \"jkl-combobox__wrapper--active-value\": hasSelection,\n })}\n style={{ width }}\n tabIndex={-1}\n onFocus={handleFocus}\n onBlur={handleBlur}\n >\n <div\n className=\"jkl-combobox__chips\"\n data-testid=\"jkl-combobox__chips\"\n >\n {selectedValue\n .map(getComboboxValuePair)\n .map((option) => {\n return hasTagHover ? (\n <Tooltip key={option.value}>\n <TooltipTrigger>\n {renderSelectedOption(option)}\n </TooltipTrigger>\n <TooltipContent>\n {option.label}\n </TooltipContent>\n </Tooltip>\n ) : (\n renderSelectedOption(option)\n );\n })}\n <input\n {...inputProps}\n className=\"jkl-combobox__search-input\"\n onChange={onSearch}\n data-testid=\"jkl-combobox__search-input\"\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleSearchOnKeyDown}\n value={searchValue}\n ref={searchRef}\n aria-controls={listId}\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-expanded={showMenu}\n placeholder={\n selectedValue.length > 0 ? \"\" : placeholder\n }\n autoComplete=\"off\"\n />\n </div>\n\n <div\n className=\"jkl-combobox__menu\"\n role=\"listbox\"\n ref={dropdownRef}\n id={listId}\n aria-labelledby={labelId}\n aria-multiselectable=\"true\"\n aria-activedescendant={activeDescendant}\n onFocus={handleFocus}\n onBlur={handleBlur}\n tabIndex={-1}\n >\n {options.map((option, i) => (\n <button\n key={`${listId}-${option.value}`}\n type=\"button\"\n id={`${listId}__${option.value}`}\n aria-selected={isSelected(option)}\n role=\"option\"\n value={option.value}\n onBlur={handleBlur}\n className={`jkl-combobox__option ${\n isSelected(option) &&\n \"jkl-combobox__option--selected\"\n }`}\n data-testid=\"jkl-combobox__option\"\n data-testautoid={`jkl-combobox__option-${i}`}\n onFocus={handleFocus}\n onKeyDown={handleOptionOnKeyDown}\n onClick={(e) => {\n setActiveDescendant(\n `${listId}__${option.value}`,\n ); // https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/listbox_role#required_javascript_features\n e.stopPropagation();\n onItemClick(option.value);\n setSearchValue(\"\");\n }}\n onMouseOver={handleMouseOver}\n >\n {option.description ? (\n <span>\n {option.label}\n <span className=\"jkl-combobox__option-description\">\n {option.description}\n </span>\n </span>\n ) : (\n option.label\n )}\n {isSelected(option) ? (\n <span>\n <CheckIcon />{\" \"}\n </span>\n ) : null}\n </button>\n ))}\n {noResults && (\n <div className=\"jkl-combobox__no-option\">\n {noMatchingOption}\n </div>\n )}\n </div>\n <div className=\"jkl-combobox__actions\">\n <IconButton\n id={buttonId}\n onFocus={handleFocus}\n onBlur={handleBlur}\n className=\"jkl-combobox__button\"\n data-testid=\"jkl-combobox__button\"\n aria-label={`${\n selectedValue.map((value) => value.label) ||\n \"Velg\"\n },${label}`}\n aria-expanded={showMenu}\n aria-controls={listId}\n role=\"button\"\n onClick={() => setShowMenu((previous) => !previous)}\n onMouseDown={(e) => {\n e.preventDefault();\n inputRef.current?.focus();\n }}\n >\n <ArrowVerticalAnimated\n pointingDown={isPointingDown}\n />\n </IconButton>\n </div>\n </div>\n )}\n />\n );\n};\nCombobox.displayName = \"Combobox\";\n"],"names":["getComboboxValuePair","item","value","label","Combobox","id","placeholder","items","onChange","onFocus","onBlur","noMatchingOption","labelProps","helpLabel","errorLabel","width","density","name","className","invalid","hasTagHover","listId","useId","generateSuffix","labelId","buttonId","inputId","selectedValue","setSelectedValue","useState","showMenu","setShowMenu","searchValue","setSearchValue","noResults","setNoResults","marked","setMarked","searchRef","useRef","inputRef","focusInsideRef","useEffect","current","focus","prev","isSelected","option","some","removeOption","useCallback","filter","onTagRemove","e","newValue","type","target","selectedOptions","stopPropagation","length","onItemClick","find","i","_a","onSearch","options","useMemo","filteredOptions","toLowerCase","indexOf","activeDescendant","setActiveDescendant","_b","isPointingDown","handleEscape","key","window","addEventListener","removeEventListener","handleFocusPlacement","isOpen","handleFocus","dropdownRef","useAnimatedHeight","onFirstVisible","onTransitionEnd","useListNavigation","ref","componentRootElementRef","handleBlur","componentRootElement","contains","relatedTarget","dispatchEvent","Event","bubbles","handleMouseOver","preventScroll","handleSearchOnKeyDown","preventDefault","listElement","querySelector","metaKey","ctrlKey","updatedSelectedValue","map","isMarked","handleOptionOnKeyDown","shiftKey","firstVisible","currentTarget","hasSelection","renderSelectedOption","jsx","Chip","tagLabel","variant","onClick","children","InputGroup","clsx","render","inputProps","jsxs","style","tabIndex","Tooltip","TooltipTrigger","TooltipContent","onKeyDown","role","autoComplete","onMouseOver","description","CheckIcon","IconButton","previous","onMouseDown","ArrowVerticalAnimated","pointingDown","displayName"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Combobox.cjs","sources":["../../../../src/components/combobox/Combobox.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, {\n type FC,\n type FocusEvent,\n type KeyboardEvent,\n type MouseEvent,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useAnimatedHeight } from \"../../hooks/useAnimatedHeight/useAnimatedHeight.js\";\nimport { useId } from \"../../hooks/useId/useId.js\";\nimport { useListNavigation } from \"../../hooks/useListNavigation/useListNavigation.js\";\nimport type { ValuePair } from \"../../utilities/valuePair.js\";\nimport { Chip } from \"../chip/Chip.js\";\nimport { IconButton } from \"../icon-button/IconButton.js\";\nimport { CheckIcon } from \"../icon/icons/CheckIcon.js\";\nimport { ArrowVerticalAnimated } from \"../icon/icons/animated/ArrowVerticalAnimated.js\";\nimport { InputGroup } from \"../input-group/InputGroup.js\";\nimport { Tooltip } from \"../tooltip/Tooltip.js\";\nimport { TooltipContent } from \"../tooltip/TooltipContent.js\";\nimport { TooltipTrigger } from \"../tooltip/TooltipTrigger.js\";\nimport type { ComboboxProps, ComboboxValuePair } from \"./types.js\";\n\nexport function getComboboxValuePair(\n item: string | ComboboxValuePair,\n): ComboboxValuePair {\n return typeof item === \"string\" ? { value: item, label: item } : item;\n}\n\nexport const Combobox: FC<ComboboxProps> = ({\n id,\n placeholder,\n items,\n onChange,\n onFocus,\n onBlur,\n value,\n label,\n noMatchingOption,\n labelProps,\n helpLabel,\n errorLabel,\n width,\n density,\n name,\n className,\n invalid,\n hasTagHover,\n}) => {\n const listId = useId(id || \"jkl-combobox\", { generateSuffix: !id });\n const labelId = `${listId}_label`;\n const buttonId = `${listId}_button`;\n const inputId = `${listId}_search-input`;\n\n const [selectedValue, setSelectedValue] = useState<\n Array<ComboboxValuePair>\n >(value || []);\n const [showMenu, setShowMenu] = useState<boolean>(false);\n const [searchValue, setSearchValue] = useState<string>(\"\");\n const [noResults, setNoResults] = useState(false);\n const [marked, setMarked] = useState<boolean>(false);\n\n const searchRef = useRef<HTMLInputElement>(null);\n const inputRef = useRef<HTMLDivElement>(null);\n const focusInsideRef = useRef(false);\n\n useEffect(() => {\n setSearchValue(\"\");\n if (showMenu && searchRef.current) {\n searchRef.current.focus();\n }\n }, [showMenu]);\n\n useEffect(() => {\n setSelectedValue((prev) => value || prev);\n }, [value]);\n\n // Funksjon for å stile valgt element\n const isSelected = (option: ValuePair) => {\n if (!selectedValue) {\n return false;\n }\n\n return selectedValue.some((value) => value.value === option.value);\n };\n\n // Fjerne ett eller flere valg\n const removeOption = useCallback(\n (option: string) => {\n return selectedValue.filter((value) => value.value !== option);\n },\n [selectedValue],\n );\n\n const onTagRemove = useCallback(\n (\n e:\n | React.MouseEvent<HTMLButtonElement, globalThis.MouseEvent>\n | React.KeyboardEvent<HTMLInputElement>,\n option: string,\n ) => {\n const newValue = removeOption(option);\n setSelectedValue(newValue);\n onChange({\n type: \"change\",\n target: { name, value: option, selectedOptions: newValue },\n });\n e.stopPropagation();\n\n if (newValue.length === 0) {\n setMarked(false);\n }\n },\n [removeOption, onChange, name],\n );\n\n // Håndtere valgt verdi i listen\n const onItemClick = useCallback(\n (option: string) => {\n let newValue: Array<ValuePair>;\n\n if (selectedValue.some((value) => value.value === option)) {\n newValue = removeOption(option);\n } else {\n const item = items.find((i) => i.value === option);\n newValue = [...selectedValue, item as ValuePair];\n }\n searchRef.current?.focus();\n setSelectedValue(newValue);\n onChange({\n type: \"change\",\n target: { name, value: option, selectedOptions: newValue },\n });\n },\n [selectedValue, onChange, name, removeOption, items],\n );\n\n // Funksjon for søk\n const onSearch = (e: {\n target: { value: React.SetStateAction<string> };\n }) => {\n searchRef.current?.focus();\n setShowMenu(true);\n setSearchValue(e.target.value);\n };\n\n const options = useMemo(() => {\n if (!searchValue) {\n return items;\n }\n\n const filteredOptions = items.filter(\n (option) =>\n option.label.toLowerCase().indexOf(searchValue.toLowerCase()) >=\n 0,\n );\n\n setNoResults(filteredOptions.length === 0);\n\n return filteredOptions;\n }, [searchValue, items]);\n\n // Det første elementet i listen skal være aktivt fram til brukeren klikker på noe annet\n const [activeDescendant, setActiveDescendant] = useState<\n string | undefined\n >(options[0]?.value ? `${listId}-${options[0]?.value}` : undefined);\n\n // Håndtere arrow-state\n const isPointingDown = !showMenu;\n\n // Lukk meny med ESC\n useEffect(() => {\n const handleEscape = (e: globalThis.KeyboardEvent) => {\n if (e.key === \"Escape\" && showMenu) {\n setShowMenu(false);\n }\n };\n if (typeof window !== \"undefined\") {\n window.addEventListener(\"keydown\", handleEscape);\n }\n return () => {\n if (typeof window !== \"undefined\" && showMenu) {\n window.removeEventListener(\"keydown\", handleEscape);\n }\n };\n }, [showMenu]);\n\n // Fokushåndtering\n const handleFocusPlacement = useCallback((isOpen: boolean) => {\n if (isOpen) {\n if (searchRef.current) {\n searchRef.current.focus();\n }\n } else {\n if (focusInsideRef.current && inputRef.current) {\n inputRef.current.focus();\n }\n }\n }, []);\n\n const handleFocus = useCallback(() => {\n if (!focusInsideRef.current) {\n if (onFocus) {\n onFocus({\n type: \"change\",\n target: {\n name,\n value: selectedValue?.[0].value || \"\",\n selectedOptions: selectedValue,\n },\n });\n }\n focusInsideRef.current = true;\n setShowMenu(true);\n }\n }, [onFocus, selectedValue, name]);\n\n const [dropdownRef] = useAnimatedHeight<HTMLDivElement>(showMenu, {\n onFirstVisible: handleFocusPlacement,\n onTransitionEnd: handleFocusPlacement,\n });\n\n useListNavigation({ ref: dropdownRef });\n\n const componentRootElementRef = useRef<HTMLDivElement>(null);\n\n const handleBlur = useCallback(\n (\n e: FocusEvent<\n HTMLDivElement | HTMLInputElement | HTMLButtonElement\n >,\n ) => {\n const componentRootElement = componentRootElementRef.current;\n const nextFocusIsInsideComponent = componentRootElement?.contains(\n e.relatedTarget as Node,\n );\n if (!nextFocusIsInsideComponent) {\n setSearchValue(\"\");\n\n if (onBlur) {\n onBlur({\n type: \"blur\",\n target: {\n name,\n value: selectedValue?.[0]?.value || \"\",\n selectedOptions: selectedValue,\n },\n });\n inputRef.current?.dispatchEvent(\n new Event(\"focusout\", { bubbles: true }),\n );\n }\n focusInsideRef.current = false;\n setShowMenu(false);\n }\n },\n [onBlur, name, selectedValue],\n );\n\n const handleMouseOver = useCallback((e: MouseEvent<HTMLButtonElement>) => {\n // Ved mouseOver på options flytter vi fokus til dem for å unngå \"dobbel fokus\"\n // der det ser ut som to forskjellige elementer er fokusert/hovered samtidig\n (e.target as HTMLButtonElement).focus({ preventScroll: true });\n }, []);\n\n // Tastaturnavigasjon\n const handleSearchOnKeyDown = useCallback(\n (e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n e.stopPropagation();\n const listElement = dropdownRef.current;\n if (listElement) {\n listElement\n .querySelector<HTMLButtonElement>('[role=\"option\"]')\n ?.focus();\n }\n } else if (e.key === \"Escape\") {\n e.preventDefault();\n e.stopPropagation();\n setShowMenu(false);\n }\n\n if ((e.metaKey && e.key === \"a\") || (e.ctrlKey && e.key === \"a\")) {\n e.preventDefault();\n e.stopPropagation();\n const updatedSelectedValue = selectedValue.map((item) => ({\n ...item,\n isMarked: true,\n }));\n setMarked(true);\n setSelectedValue(updatedSelectedValue);\n } else if (e.key === \"Backspace\") {\n e.stopPropagation();\n setMarked(false);\n\n // Sjekk om selectedValue er markert\n const selectedValueIsMarked = selectedValue.some(\n (item) => item.isMarked,\n );\n\n if (selectedValueIsMarked) {\n const updatedSelectedValue = selectedValue.filter(\n (item) => !item.isMarked,\n );\n setSelectedValue(updatedSelectedValue);\n setSearchValue(\"\");\n } else if (selectedValue.length > 0 && searchValue === \"\") {\n // Hvis ingen items er markert, fjern siste valgte item\n onTagRemove(\n e,\n selectedValue[selectedValue.length - 1].value,\n );\n }\n }\n },\n [selectedValue, searchValue, dropdownRef, onTagRemove],\n );\n\n const handleOptionOnKeyDown = useCallback(\n (e: KeyboardEvent<HTMLButtonElement>) => {\n if (e.key === \"Tab\") {\n if (searchRef.current) {\n e.preventDefault();\n e.stopPropagation();\n\n if (e.shiftKey) {\n searchRef.current.focus();\n } else {\n setShowMenu(false);\n searchRef.current.focus();\n }\n }\n } else if (e.key === \"ArrowUp\") {\n if (dropdownRef.current && searchRef.current) {\n // Can't be based on index since the first item might be filtered out\n const firstVisible = dropdownRef.current.querySelector(\n '[role=\"option\"]:not([hidden])',\n );\n if (\n e.currentTarget.id === firstVisible?.id &&\n searchRef.current\n ) {\n searchRef.current.focus();\n }\n }\n }\n },\n [dropdownRef],\n );\n\n const hasSelection = selectedValue.length >= 1;\n\n const renderSelectedOption = useCallback(\n (option: ComboboxValuePair) => (\n <Chip\n key={option.value}\n data-testid=\"jkl-chip\"\n aria-label={`Fjern ${option.tagLabel}`}\n className={`jkl-combobox__selected-option ${\n marked && \"jkl-combobox__selected-option--marked\"\n }`}\n variant=\"input\"\n onClick={(e) => {\n if (searchRef.current) {\n searchRef.current.focus();\n }\n onTagRemove(e, option.value);\n }}\n onBlur={handleBlur}\n >\n {option.tagLabel ? option.tagLabel : option.label}\n </Chip>\n ),\n [handleBlur, onTagRemove, marked],\n );\n\n return (\n <InputGroup\n label={label}\n id={inputId}\n ref={componentRootElementRef}\n data-testid=\"jkl-combobox\"\n className={clsx(\"jkl-combobox\", className, {\n \"jkl-combobox--invalid\": !!errorLabel || invalid,\n \"jkl-combobox--menu-open\": showMenu,\n \"jkl-combobox--menu-closed\": !showMenu && hasSelection,\n })}\n labelProps={{\n id: labelId,\n ...labelProps,\n }}\n helpLabel={helpLabel}\n errorLabel={errorLabel}\n density={density}\n render={(inputProps) => (\n <div\n className={clsx(\"jkl-combobox__wrapper\", {\n \"jkl-combobox__wrapper--active-value\": hasSelection,\n })}\n style={{ width }}\n tabIndex={-1}\n onFocus={handleFocus}\n onBlur={handleBlur}\n >\n <div\n className=\"jkl-combobox__chips\"\n data-testid=\"jkl-combobox__chips\"\n >\n {selectedValue\n .map(getComboboxValuePair)\n .map((option) => {\n return hasTagHover ? (\n <Tooltip key={option.value}>\n <TooltipTrigger>\n {renderSelectedOption(option)}\n </TooltipTrigger>\n <TooltipContent>\n {option.label}\n </TooltipContent>\n </Tooltip>\n ) : (\n renderSelectedOption(option)\n );\n })}\n <input\n {...inputProps}\n className=\"jkl-combobox__search-input\"\n onChange={onSearch}\n data-testid=\"jkl-combobox__search-input\"\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleSearchOnKeyDown}\n value={searchValue}\n ref={searchRef}\n aria-controls={listId}\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-expanded={showMenu}\n placeholder={\n selectedValue.length > 0 ? \"\" : placeholder\n }\n autoComplete=\"off\"\n />\n </div>\n\n <div\n className=\"jkl-combobox__menu\"\n // biome-ignore lint/a11y/useSemanticElements: Dette er en reimplementering av en liste\n role=\"listbox\"\n ref={dropdownRef}\n id={listId}\n aria-labelledby={labelId}\n aria-multiselectable=\"true\"\n aria-activedescendant={activeDescendant}\n onFocus={handleFocus}\n onBlur={handleBlur}\n tabIndex={-1}\n >\n {options.map((option, i) => (\n <button\n key={`${listId}-${option.value}`}\n type=\"button\"\n id={`${listId}__${option.value}`}\n aria-selected={isSelected(option)}\n // biome-ignore lint/a11y/useSemanticElements: Dette er en reimplementering av en liste\n role=\"option\"\n value={option.value}\n onBlur={handleBlur}\n className={`jkl-combobox__option ${\n isSelected(option) &&\n \"jkl-combobox__option--selected\"\n }`}\n data-testid=\"jkl-combobox__option\"\n data-testautoid={`jkl-combobox__option-${i}`}\n onFocus={handleFocus}\n onKeyDown={handleOptionOnKeyDown}\n onClick={(e) => {\n setActiveDescendant(\n `${listId}__${option.value}`,\n ); // https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/listbox_role#required_javascript_features\n e.stopPropagation();\n onItemClick(option.value);\n setSearchValue(\"\");\n }}\n onMouseOver={handleMouseOver}\n >\n {option.description ? (\n <span>\n {option.label}\n <span className=\"jkl-combobox__option-description\">\n {option.description}\n </span>\n </span>\n ) : (\n option.label\n )}\n {isSelected(option) ? (\n <span>\n <CheckIcon />{\" \"}\n </span>\n ) : null}\n </button>\n ))}\n {noResults && (\n <div className=\"jkl-combobox__no-option\">\n {noMatchingOption}\n </div>\n )}\n </div>\n <div className=\"jkl-combobox__actions\">\n <IconButton\n id={buttonId}\n onFocus={handleFocus}\n onBlur={handleBlur}\n className=\"jkl-combobox__button\"\n data-testid=\"jkl-combobox__button\"\n aria-label={`${\n selectedValue.map((value) => value.label) ||\n \"Velg\"\n },${label}`}\n aria-expanded={showMenu}\n aria-controls={listId}\n onClick={() => setShowMenu((previous) => !previous)}\n onMouseDown={(e) => {\n e.preventDefault();\n inputRef.current?.focus();\n }}\n >\n <ArrowVerticalAnimated\n pointingDown={isPointingDown}\n />\n </IconButton>\n </div>\n </div>\n )}\n />\n );\n};\nCombobox.displayName = \"Combobox\";\n"],"names":["getComboboxValuePair","item","value","label","Combobox","id","placeholder","items","onChange","onFocus","onBlur","noMatchingOption","labelProps","helpLabel","errorLabel","width","density","name","className","invalid","hasTagHover","listId","useId","generateSuffix","labelId","buttonId","inputId","selectedValue","setSelectedValue","useState","showMenu","setShowMenu","searchValue","setSearchValue","noResults","setNoResults","marked","setMarked","searchRef","useRef","inputRef","focusInsideRef","useEffect","current","focus","prev","isSelected","option","some","removeOption","useCallback","filter","onTagRemove","e","newValue","type","target","selectedOptions","stopPropagation","length","onItemClick","find","i","_a","onSearch","options","useMemo","filteredOptions","toLowerCase","indexOf","activeDescendant","setActiveDescendant","_b","isPointingDown","handleEscape","key","window","addEventListener","removeEventListener","handleFocusPlacement","isOpen","handleFocus","dropdownRef","useAnimatedHeight","onFirstVisible","onTransitionEnd","useListNavigation","ref","componentRootElementRef","handleBlur","componentRootElement","contains","relatedTarget","dispatchEvent","Event","bubbles","handleMouseOver","preventScroll","handleSearchOnKeyDown","preventDefault","listElement","querySelector","metaKey","ctrlKey","updatedSelectedValue","map","isMarked","handleOptionOnKeyDown","shiftKey","firstVisible","currentTarget","hasSelection","renderSelectedOption","jsx","Chip","tagLabel","variant","onClick","children","InputGroup","clsx","render","inputProps","jsxs","style","tabIndex","Tooltip","TooltipTrigger","TooltipContent","onKeyDown","role","autoComplete","onMouseOver","description","CheckIcon","IconButton","previous","onMouseDown","ArrowVerticalAnimated","pointingDown","displayName"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),a={title:"Komponenter/Combobox",component:
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),a=require("../Combobox.cjs");require("react");const t={title:"Komponenter/Combobox",component:a.Combobox,parameters:{layout:"centered"},tags:["autodocs"]},l={args:{items:[{value:"a080",label:"A080 - Rotavirusenteritt",tagLabel:"A080"},{value:"a081",label:"A081 - Akutt gastroenteritt som skyldes norovirus",tagLabel:"A081"},{value:"a082",label:"A082 - Adenovirusenteritt",tagLabel:"A082"},{value:"a083",label:"A083 - Annen virusenteritt",tagLabel:"A083"},{value:"a084",label:"A084 - Uspesifisert virusinfeksjon i mage-tarmkanalen",tagLabel:"A084"},{value:"a085",label:"A085 - Annen spesifisert mage-tarminfeksjon",tagLabel:"A085"},{value:"a090",label:"A090 - Annen eller uspesifisert gastroenteritt eller kolitt av infeksiøs årsak",tagLabel:"A090"},{value:"a099",label:"A099 - Gastroenteritt eller kolitt av uspesifisert årsak",tagLabel:"A099"},{value:"a150",label:"A150 - Lungetuberkulose bekreftet ved mikroskopi av sputum med eller uten kultur",tagLabel:"A150"}],label:"Velg sykdommer",name:"disease",onChange:()=>{}},decorators:a=>e.jsx("div",{style:{maxWidth:220},children:e.jsx(a,{})})};exports.Combobox=l,exports.default=t;
|
|
2
2
|
//# sourceMappingURL=Combobox.stories.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Combobox.stories.cjs","sources":["../../../../../src/components/combobox/stories/Combobox.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from \"@storybook/react\";\nimport { Combobox as ComboboxComponent } from \"../Combobox.js\";\nimport \"../styles/_index.scss\";\nimport { ComboboxValuePair } from \"../../combobox/types.js\";\
|
|
1
|
+
{"version":3,"file":"Combobox.stories.cjs","sources":["../../../../../src/components/combobox/stories/Combobox.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from \"@storybook/react\";\nimport { Combobox as ComboboxComponent } from \"../Combobox.js\";\nimport \"../styles/_index.scss\";\nimport React from \"react\";\nimport type { ComboboxValuePair } from \"../../combobox/types.js\";\n\nconst meta = {\n title: \"Komponenter/Combobox\",\n component: ComboboxComponent,\n parameters: {\n layout: \"centered\",\n },\n tags: [\"autodocs\"],\n} satisfies Meta<typeof ComboboxComponent>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\nconst items: ComboboxValuePair[] = [\n { value: \"a080\", label: \"A080 - Rotavirusenteritt\", tagLabel: \"A080\" },\n {\n value: \"a081\",\n label: \"A081 - Akutt gastroenteritt som skyldes norovirus\",\n tagLabel: \"A081\",\n },\n { value: \"a082\", label: \"A082 - Adenovirusenteritt\", tagLabel: \"A082\" },\n {\n value: \"a083\",\n label: \"A083 - Annen virusenteritt\",\n tagLabel: \"A083\",\n },\n {\n value: \"a084\",\n label: \"A084 - Uspesifisert virusinfeksjon i mage-tarmkanalen\",\n tagLabel: \"A084\",\n },\n {\n value: \"a085\",\n label: \"A085 - Annen spesifisert mage-tarminfeksjon\",\n tagLabel: \"A085\",\n },\n {\n value: \"a090\",\n label: \"A090 - Annen eller uspesifisert gastroenteritt eller kolitt av infeksiøs årsak\",\n tagLabel: \"A090\",\n },\n {\n value: \"a099\",\n label: \"A099 - Gastroenteritt eller kolitt av uspesifisert årsak\",\n tagLabel: \"A099\",\n },\n {\n value: \"a150\",\n label: \"A150 - Lungetuberkulose bekreftet ved mikroskopi av sputum med eller uten kultur\",\n tagLabel: \"A150\",\n },\n];\n\nexport const Combobox: Story = {\n args: {\n items,\n label: \"Velg sykdommer\",\n name: \"disease\",\n onChange: () => {},\n },\n decorators: (Story) => (\n <div style={{ maxWidth: 220 }}>\n <Story />\n </div>\n ),\n};\n"],"names":["meta","title","component","ComboboxComponent","Combobox","parameters","layout","tags","args","items","value","label","tagLabel","name","onChange","decorators","Story","jsx","style","maxWidth","children"],"mappings":"+LAMA,MAAMA,EAAO,CACTC,MAAO,uBACPC,UAAWC,EAAAC,SACXC,WAAY,CACRC,OAAQ,YAEZC,KAAM,CAAC,aA8CEH,EAAkB,CAC3BI,KAAM,CACFC,MA1C2B,CAC/B,CAAEC,MAAO,OAAQC,MAAO,2BAA4BC,SAAU,QAC9D,CACIF,MAAO,OACPC,MAAO,oDACPC,SAAU,QAEd,CAAEF,MAAO,OAAQC,MAAO,4BAA6BC,SAAU,QAC/D,CACIF,MAAO,OACPC,MAAO,6BACPC,SAAU,QAEd,CACIF,MAAO,OACPC,MAAO,wDACPC,SAAU,QAEd,CACIF,MAAO,OACPC,MAAO,8CACPC,SAAU,QAEd,CACIF,MAAO,OACPC,MAAO,iFACPC,SAAU,QAEd,CACIF,MAAO,OACPC,MAAO,2DACPC,SAAU,QAEd,CACIF,MAAO,OACPC,MAAO,mFACPC,SAAU,SAOVD,MAAO,iBACPE,KAAM,UACNC,SAAU,QAEdC,WAAaC,GACTC,EAAAA,IAAC,MAAI,CAAAC,MAAO,CAAEC,SAAU,KACpBC,SAACH,EAAAA,IAAAD,EAAA,CAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),t=require("react"),n=require("react-dom"),o=require("../button/Button.cjs"),i=require("../modal/Modal.cjs"),s=require("../modal/useModal.cjs"),r=require("./CookieConsentContext.cjs"),a=require("./
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),t=require("react"),n=require("react-dom"),o=require("../button/Button.cjs"),i=require("../modal/Modal.cjs"),s=require("../modal/useModal.cjs"),r=require("./CookieConsentContext.cjs"),a=require("./RequirementCheckbox.cjs"),l=require("./cookieConsentUtils.cjs");exports.CookieConsent=({blocking:c,onAccept:d,...u})=>{const{currentConsent:k,cookieName:m,cookieDomain:g,cookiePath:j,requirement:f,isOpen:p,setIsOpen:h,updateCurrentConsents:b}=r.useInternalState(),[C,x]=s.useModal({id:`jkl-cookie-modal-${t.useId()}`,role:c?"alertdialog":"dialog",title:"Informasjonskapsler"});if(t.useEffect((()=>{p?null==C||C.show():null==C||C.hide()}),[C,p]),t.useEffect((()=>{const e=()=>h(!1);return null==C||C.on("hide",e),()=>{null==C||C.off("hide",e)}}),[C,h]),typeof document>"u")return null;if(typeof navigator<"u"&&!navigator.cookieEnabled)return d&&d({functional:"denied",marketing:"denied",statistics:"denied"}),null;const v=(e=l.convertBooleanConsentObjectToConsentObject({functional:!0,statistics:!0,marketing:!0},f))=>{const t=Object.fromEntries(Object.entries(e).filter((([,e])=>typeof e<"u"))),n={...k,...t};l.setConsentCookie({consent:n,name:m,domain:g,path:j}),b(),null==d||d(n),null==C||C.hide()};return n.createPortal(e.jsxs(i.ModalContainer,{...x.container,...u,"data-cookie-consent-open":p,children:[e.jsx(i.ModalOverlay,{...x.overlay}),e.jsxs(i.Modal,{component:"form",...x.modal,onSubmit:e=>{e.preventDefault();const t=new FormData(e.currentTarget),n=l.convertBooleanConsentObjectToConsentObject({functional:"true"===t.get("functional"),statistics:"true"===t.get("statistics"),marketing:"true"===t.get("marketing")},f);v(n)},children:[e.jsx(i.ModalHeader,{children:e.jsx(i.ModalTitle,{...x.title,children:"Velg informasjonskapsler"})}),e.jsxs(i.ModalBody,{children:[e.jsx("p",{children:"For at nettsidene skal fungere må vi bruke tekniske informasjonskaplser. Disse lagres derfor uten samtykke."}),f.functional&&e.jsx(a.RequirementCheckbox,{name:"functional",label:"Tillat funksjonelle",defaultChecked:"accepted"===k.functional,children:"Funksjonelle informasjonskapsler lagrer opplysninger om din bruk av nettsidene og hvilke innstillinger du har gjort, slik at du kan få funksjonalitet tilpasset deg."},`functional-${k.functional}`),f.statistics&&e.jsx(a.RequirementCheckbox,{name:"statistics",label:"Tillat statistikk",defaultChecked:"accepted"===k.statistics,children:"Informasjonskapslene lagrer statistikk som hjelper oss med å forstå hvordan nettsidene blir brukt, slik at vi kan gjøre dem bedre og enklere å bruke."},`statistics-${k.statistics}`),f.marketing&&e.jsx(a.RequirementCheckbox,{name:"marketing",label:"Tillat personlig markedsføring",defaultChecked:"accepted"===k.marketing,children:"Dette gjør at vi kan gi deg mer relevant og tilpasset markedsføring, også gjennom våre samarbeidspartnere, på for eksempel nettsider, annonser og i sosiale medier."},`marketing-${k.marketing}`)]}),e.jsxs(i.ModalActions,{children:[e.jsx(o.SecondaryButton,{"data-testid":"jkl-cookie-consent-godta-alle",type:"button",onClick:()=>v(),children:"Godta alle"}),e.jsx(o.SecondaryButton,{"data-testid":"jkl-cookie-consent-godta",type:"submit",children:"Godta mine valg"})]})]})]}),document.body)};
|
|
2
2
|
//# sourceMappingURL=CookieConsent.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CookieConsent.cjs","sources":["../../../../src/components/cookie-consent/CookieConsent.tsx"],"sourcesContent":["import React, { FormEventHandler, useEffect, useId } from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { SecondaryButton } from \"../button/Button.js\";\nimport {\n Modal,\n ModalActions,\n ModalBody,\n ModalContainer,\n ModalHeader,\n ModalOverlay,\n ModalTitle,\n} from \"../modal/Modal.js\";\nimport { useModal } from \"../modal/useModal.js\";\nimport { useInternalState } from \"./CookieConsentContext.js\";\nimport {\n convertBooleanConsentObjectToConsentObject,\n setConsentCookie,\n} from \"./cookieConsentUtils.js\";\nimport { RequirementCheckbox } from \"./RequirementCheckbox.js\";\nimport { AcceptConsentCallback, Consent } from \"./types.js\";\n\nexport interface CookieConsentProps {\n blocking?: boolean;\n onAccept?: AcceptConsentCallback;\n}\n\nexport const CookieConsent = ({\n blocking,\n onAccept,\n ...rest\n}: CookieConsentProps): JSX.Element | null => {\n const {\n currentConsent,\n cookieName,\n cookieDomain,\n cookiePath,\n requirement,\n isOpen,\n setIsOpen,\n updateCurrentConsents,\n } = useInternalState();\n\n const [instance, modalConfig] = useModal({\n id: `jkl-cookie-modal-${useId()}`,\n // The optional `role` attribute of the dialog element, either `dialog`\n // (default) or `alertdialog` to make it a modal (preventing closing on\n // click outside of ESC key).\n role: blocking ? \"alertdialog\" : \"dialog\",\n // The required dialog title, mandatory in the document\n // to provide context to assistive technology.\n title: \"Informasjonskapsler\",\n });\n\n useEffect(() => {\n if (isOpen) {\n instance?.show();\n } else {\n instance?.hide();\n }\n }, [instance, isOpen]);\n\n useEffect(() => {\n const onHide = () => setIsOpen(false);\n instance?.on(\"hide\", onHide);\n return () => {\n instance?.off(\"hide\", onHide);\n };\n }, [instance, setIsOpen]);\n\n if (typeof document === \"undefined\") {\n return null;\n }\n\n // Cookies are disabled in the browser\n if (typeof navigator !== \"undefined\" && !navigator.cookieEnabled) {\n if (onAccept) {\n onAccept({\n functional: \"denied\",\n marketing: \"denied\",\n statistics: \"denied\",\n });\n }\n\n return null;\n }\n\n const accept = (\n selection = convertBooleanConsentObjectToConsentObject(\n {\n functional: true,\n statistics: true,\n marketing: true,\n },\n requirement,\n ),\n ) => {\n const selectionWithoutEmptyValues = Object.fromEntries(\n Object.entries(selection).filter(\n ([, value]) => typeof value !== \"undefined\",\n ),\n );\n\n const updatedConsent: Consent = {\n ...currentConsent,\n ...selectionWithoutEmptyValues,\n };\n\n setConsentCookie({\n consent: updatedConsent,\n name: cookieName,\n domain: cookieDomain,\n path: cookiePath,\n });\n\n updateCurrentConsents();\n\n onAccept?.(updatedConsent);\n\n instance?.hide();\n };\n\n const onSubmit: FormEventHandler<HTMLFormElement> = (e) => {\n e.preventDefault();\n\n const formData = new FormData(e.currentTarget);\n\n const newConsents = convertBooleanConsentObjectToConsentObject(\n {\n functional: formData.get(\"functional\") === \"true\",\n statistics: formData.get(\"statistics\") === \"true\",\n marketing: formData.get(\"marketing\") === \"true\",\n },\n requirement,\n );\n\n accept(newConsents);\n };\n\n return ReactDOM.createPortal(\n <ModalContainer\n {...modalConfig.container}\n {...rest}\n data-cookie-consent-open={isOpen}\n >\n <ModalOverlay {...modalConfig.overlay} />\n <Modal component=\"form\" {...modalConfig.modal} {...{ onSubmit }}>\n <ModalHeader>\n <ModalTitle {...modalConfig.title}>\n Velg informasjonskapsler\n </ModalTitle>\n </ModalHeader>\n <ModalBody>\n <p>\n For at nettsidene skal fungere må vi bruke tekniske\n informasjonskaplser. Disse lagres derfor uten samtykke.\n </p>\n {requirement.functional && (\n <RequirementCheckbox\n name=\"functional\"\n label=\"Tillat funksjonelle\"\n defaultChecked={\n currentConsent.functional === \"accepted\"\n }\n key={`functional-${currentConsent.functional}`}\n >\n Funksjonelle informasjonskapsler lagrer opplysninger\n om din bruk av nettsidene og hvilke innstillinger du\n har gjort, slik at du kan få funksjonalitet\n tilpasset deg.\n </RequirementCheckbox>\n )}\n {requirement.statistics && (\n <RequirementCheckbox\n name=\"statistics\"\n label=\"Tillat statistikk\"\n defaultChecked={\n currentConsent.statistics === \"accepted\"\n }\n key={`statistics-${currentConsent.statistics}`}\n >\n Informasjonskapslene lagrer statistikk som hjelper\n oss med å forstå hvordan nettsidene blir brukt, slik\n at vi kan gjøre dem bedre og enklere å bruke.\n </RequirementCheckbox>\n )}\n {requirement.marketing && (\n <RequirementCheckbox\n name=\"marketing\"\n label=\"Tillat personlig markedsføring\"\n defaultChecked={\n currentConsent.marketing === \"accepted\"\n }\n key={`marketing-${currentConsent.marketing}`}\n >\n Dette gjør at vi kan gi deg mer relevant og\n tilpasset markedsføring, også gjennom våre\n samarbeidspartnere, på for eksempel nettsider,\n annonser og i sosiale medier.\n </RequirementCheckbox>\n )}\n </ModalBody>\n <ModalActions>\n <SecondaryButton\n data-testid=\"jkl-cookie-consent-godta-alle\"\n type=\"button\"\n onClick={() => accept()}\n >\n Godta alle\n </SecondaryButton>\n <SecondaryButton\n data-testid=\"jkl-cookie-consent-godta\"\n type=\"submit\"\n >\n Godta mine valg\n </SecondaryButton>\n </ModalActions>\n </Modal>\n </ModalContainer>,\n document.body,\n );\n};\n"],"names":["blocking","onAccept","rest","currentConsent","cookieName","cookieDomain","cookiePath","requirement","isOpen","setIsOpen","updateCurrentConsents","useInternalState","instance","modalConfig","useModal","id","useId","role","title","useEffect","show","hide","onHide","on","off","document","navigator","cookieEnabled","functional","marketing","statistics","accept","selection","convertBooleanConsentObjectToConsentObject","selectionWithoutEmptyValues","Object","fromEntries","entries","filter","value","updatedConsent","setConsentCookie","consent","name","domain","path","ReactDOM","createPortal","jsxs","ModalContainer","container","children","jsx","ModalOverlay","overlay","Modal","component","modal","onSubmit","e","preventDefault","formData","FormData","currentTarget","newConsents","get","ModalHeader","ModalTitle","ModalBody","RequirementCheckbox","label","defaultChecked","ModalActions","SecondaryButton","type","onClick","body"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CookieConsent.cjs","sources":["../../../../src/components/cookie-consent/CookieConsent.tsx"],"sourcesContent":["import React, { type FormEventHandler, useEffect, useId } from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { SecondaryButton } from \"../button/Button.js\";\nimport {\n Modal,\n ModalActions,\n ModalBody,\n ModalContainer,\n ModalHeader,\n ModalOverlay,\n ModalTitle,\n} from \"../modal/Modal.js\";\nimport { useModal } from \"../modal/useModal.js\";\nimport { useInternalState } from \"./CookieConsentContext.js\";\nimport { RequirementCheckbox } from \"./RequirementCheckbox.js\";\nimport {\n convertBooleanConsentObjectToConsentObject,\n setConsentCookie,\n} from \"./cookieConsentUtils.js\";\nimport type { AcceptConsentCallback, Consent } from \"./types.js\";\n\nexport interface CookieConsentProps {\n blocking?: boolean;\n onAccept?: AcceptConsentCallback;\n}\n\nexport const CookieConsent = ({\n blocking,\n onAccept,\n ...rest\n}: CookieConsentProps): JSX.Element | null => {\n const {\n currentConsent,\n cookieName,\n cookieDomain,\n cookiePath,\n requirement,\n isOpen,\n setIsOpen,\n updateCurrentConsents,\n } = useInternalState();\n\n const [instance, modalConfig] = useModal({\n id: `jkl-cookie-modal-${useId()}`,\n // The optional `role` attribute of the dialog element, either `dialog`\n // (default) or `alertdialog` to make it a modal (preventing closing on\n // click outside of ESC key).\n role: blocking ? \"alertdialog\" : \"dialog\",\n // The required dialog title, mandatory in the document\n // to provide context to assistive technology.\n title: \"Informasjonskapsler\",\n });\n\n useEffect(() => {\n if (isOpen) {\n instance?.show();\n } else {\n instance?.hide();\n }\n }, [instance, isOpen]);\n\n useEffect(() => {\n const onHide = () => setIsOpen(false);\n instance?.on(\"hide\", onHide);\n return () => {\n instance?.off(\"hide\", onHide);\n };\n }, [instance, setIsOpen]);\n\n if (typeof document === \"undefined\") {\n return null;\n }\n\n // Cookies are disabled in the browser\n if (typeof navigator !== \"undefined\" && !navigator.cookieEnabled) {\n if (onAccept) {\n onAccept({\n functional: \"denied\",\n marketing: \"denied\",\n statistics: \"denied\",\n });\n }\n\n return null;\n }\n\n const accept = (\n selection = convertBooleanConsentObjectToConsentObject(\n {\n functional: true,\n statistics: true,\n marketing: true,\n },\n requirement,\n ),\n ) => {\n const selectionWithoutEmptyValues = Object.fromEntries(\n Object.entries(selection).filter(\n ([, value]) => typeof value !== \"undefined\",\n ),\n );\n\n const updatedConsent: Consent = {\n ...currentConsent,\n ...selectionWithoutEmptyValues,\n };\n\n setConsentCookie({\n consent: updatedConsent,\n name: cookieName,\n domain: cookieDomain,\n path: cookiePath,\n });\n\n updateCurrentConsents();\n\n onAccept?.(updatedConsent);\n\n instance?.hide();\n };\n\n const onSubmit: FormEventHandler<HTMLFormElement> = (e) => {\n e.preventDefault();\n\n const formData = new FormData(e.currentTarget);\n\n const newConsents = convertBooleanConsentObjectToConsentObject(\n {\n functional: formData.get(\"functional\") === \"true\",\n statistics: formData.get(\"statistics\") === \"true\",\n marketing: formData.get(\"marketing\") === \"true\",\n },\n requirement,\n );\n\n accept(newConsents);\n };\n\n return ReactDOM.createPortal(\n <ModalContainer\n {...modalConfig.container}\n {...rest}\n data-cookie-consent-open={isOpen}\n >\n <ModalOverlay {...modalConfig.overlay} />\n <Modal component=\"form\" {...modalConfig.modal} {...{ onSubmit }}>\n <ModalHeader>\n <ModalTitle {...modalConfig.title}>\n Velg informasjonskapsler\n </ModalTitle>\n </ModalHeader>\n <ModalBody>\n <p>\n For at nettsidene skal fungere må vi bruke tekniske\n informasjonskaplser. Disse lagres derfor uten samtykke.\n </p>\n {requirement.functional && (\n <RequirementCheckbox\n name=\"functional\"\n label=\"Tillat funksjonelle\"\n defaultChecked={\n currentConsent.functional === \"accepted\"\n }\n key={`functional-${currentConsent.functional}`}\n >\n Funksjonelle informasjonskapsler lagrer opplysninger\n om din bruk av nettsidene og hvilke innstillinger du\n har gjort, slik at du kan få funksjonalitet\n tilpasset deg.\n </RequirementCheckbox>\n )}\n {requirement.statistics && (\n <RequirementCheckbox\n name=\"statistics\"\n label=\"Tillat statistikk\"\n defaultChecked={\n currentConsent.statistics === \"accepted\"\n }\n key={`statistics-${currentConsent.statistics}`}\n >\n Informasjonskapslene lagrer statistikk som hjelper\n oss med å forstå hvordan nettsidene blir brukt, slik\n at vi kan gjøre dem bedre og enklere å bruke.\n </RequirementCheckbox>\n )}\n {requirement.marketing && (\n <RequirementCheckbox\n name=\"marketing\"\n label=\"Tillat personlig markedsføring\"\n defaultChecked={\n currentConsent.marketing === \"accepted\"\n }\n key={`marketing-${currentConsent.marketing}`}\n >\n Dette gjør at vi kan gi deg mer relevant og\n tilpasset markedsføring, også gjennom våre\n samarbeidspartnere, på for eksempel nettsider,\n annonser og i sosiale medier.\n </RequirementCheckbox>\n )}\n </ModalBody>\n <ModalActions>\n <SecondaryButton\n data-testid=\"jkl-cookie-consent-godta-alle\"\n type=\"button\"\n onClick={() => accept()}\n >\n Godta alle\n </SecondaryButton>\n <SecondaryButton\n data-testid=\"jkl-cookie-consent-godta\"\n type=\"submit\"\n >\n Godta mine valg\n </SecondaryButton>\n </ModalActions>\n </Modal>\n </ModalContainer>,\n document.body,\n );\n};\n"],"names":["blocking","onAccept","rest","currentConsent","cookieName","cookieDomain","cookiePath","requirement","isOpen","setIsOpen","updateCurrentConsents","useInternalState","instance","modalConfig","useModal","id","useId","role","title","useEffect","show","hide","onHide","on","off","document","navigator","cookieEnabled","functional","marketing","statistics","accept","selection","convertBooleanConsentObjectToConsentObject","selectionWithoutEmptyValues","Object","fromEntries","entries","filter","value","updatedConsent","setConsentCookie","consent","name","domain","path","ReactDOM","createPortal","jsxs","ModalContainer","container","children","jsx","ModalOverlay","overlay","Modal","component","modal","onSubmit","e","preventDefault","formData","FormData","currentTarget","newConsents","get","ModalHeader","ModalTitle","ModalBody","RequirementCheckbox","label","defaultChecked","ModalActions","SecondaryButton","type","onClick","body"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CookieConsentContext.cjs","sources":["../../../../src/components/cookie-consent/CookieConsentContext.tsx"],"sourcesContent":["import React, { useContext, useMemo, useState } from \"react\";\nimport {\n buildRequirementsObject,\n getConsentCookie,\n shouldShowConsentDialog,\n} from \"./cookieConsentUtils.js\";\nimport {\n Consent,\n CookieConsentProviderProps,\n InternalContext,\n} from \"./types.js\";\n\nexport const DEFAULT_COOKIE_NAME = \"fremtind-cookie-consent\";\n\nconst Context = React.createContext<InternalContext | undefined>(undefined);\n\nexport const CookieConsentProvider: React.FC<CookieConsentProviderProps> = ({\n children,\n cookieAdapter,\n marketing,\n functional,\n statistics,\n cookieName = DEFAULT_COOKIE_NAME,\n cookieDomain,\n cookiePath,\n}) => {\n const [timestamp, setTimestamp] = useState(() => Date.now());\n\n const requirement = useMemo(\n () => buildRequirementsObject({ marketing, functional, statistics }),\n [marketing, functional, statistics],\n );\n\n const consentCookie = useMemo(() => {\n return (\n getConsentCookie({ adapter: cookieAdapter, name: cookieName }) ?? {\n marketing: null,\n functional: null,\n statistics: null,\n }\n );\n
|
|
1
|
+
{"version":3,"file":"CookieConsentContext.cjs","sources":["../../../../src/components/cookie-consent/CookieConsentContext.tsx"],"sourcesContent":["import React, { useContext, useMemo, useState } from \"react\";\nimport {\n buildRequirementsObject,\n getConsentCookie,\n shouldShowConsentDialog,\n} from \"./cookieConsentUtils.js\";\nimport type {\n Consent,\n CookieConsentProviderProps,\n InternalContext,\n} from \"./types.js\";\n\nexport const DEFAULT_COOKIE_NAME = \"fremtind-cookie-consent\";\n\nconst Context = React.createContext<InternalContext | undefined>(undefined);\n\nexport const CookieConsentProvider: React.FC<CookieConsentProviderProps> = ({\n children,\n cookieAdapter,\n marketing,\n functional,\n statistics,\n cookieName = DEFAULT_COOKIE_NAME,\n cookieDomain,\n cookiePath,\n}) => {\n const [timestamp, setTimestamp] = useState(() => Date.now());\n\n const requirement = useMemo(\n () => buildRequirementsObject({ marketing, functional, statistics }),\n [marketing, functional, statistics],\n );\n\n /* Use timestamp as a dependency to be able to force re-reading of cookie */\n // biome-ignore lint/correctness/useExhaustiveDependencies:\n const consentCookie = useMemo(() => {\n return (\n getConsentCookie({ adapter: cookieAdapter, name: cookieName }) ?? {\n marketing: null,\n functional: null,\n statistics: null,\n }\n );\n }, [cookieAdapter, cookieName, timestamp]);\n\n const [isOpen, setIsOpen] = useState(() => {\n return shouldShowConsentDialog(requirement, consentCookie);\n });\n\n return (\n <Context.Provider\n value={{\n isOpen,\n setIsOpen,\n updateCurrentConsents: () => setTimestamp(Date.now()),\n requirement,\n currentConsent: consentCookie,\n cookieName,\n cookieDomain,\n cookiePath,\n }}\n >\n {children}\n </Context.Provider>\n );\n};\n\nexport const useInternalState = () => {\n const context = React.useContext(Context);\n if (context === undefined) {\n throw new Error(\n \"CookieConsent must be used within a CookieConsentProvider\",\n );\n }\n\n return context;\n};\n\ntype UseCookieConsent = {\n openConsentModal: () => void;\n consents: Consent;\n};\n\nexport const useCookieConsent = (): UseCookieConsent => {\n const context = useContext(Context);\n\n if (context === undefined) {\n throw new Error(\n \"useCookieConsent must be used within a CookieConsentProvider\",\n );\n }\n\n const openConsentModal = () => {\n context.setIsOpen(true);\n };\n\n const consents = context.currentConsent;\n\n return { openConsentModal, consents };\n};\n"],"names":["DEFAULT_COOKIE_NAME","Context","React","createContext","children","cookieAdapter","marketing","functional","statistics","cookieName","cookieDomain","cookiePath","timestamp","setTimestamp","useState","Date","now","requirement","useMemo","buildRequirementsObject","consentCookie","getConsentCookie","adapter","name","isOpen","setIsOpen","shouldShowConsentDialog","jsx","Provider","value","updateCurrentConsents","currentConsent","context","useContext","Error","openConsentModal","consents"],"mappings":"8KAYaA,EAAsB,0BAE7BC,EAAUC,EAAMC,mBAA2C,iCAEU,EACvEC,SAAAA,EACAC,cAAAA,EACAC,UAAAA,EACAC,WAAAA,EACAC,WAAAA,EACAC,WAAAA,EAAaT,EACbU,aAAAA,EACAC,WAAAA,MAEM,MAACC,EAAWC,GAAgBC,YAAS,IAAMC,KAAKC,QAEhDC,EAAcC,EAAAA,SAChB,IAAMC,EAAwBA,wBAAA,CAAEb,UAAAA,EAAWC,WAAAA,EAAYC,WAAAA,KACvD,CAACF,EAAWC,EAAYC,IAKtBY,EAAgBF,EAAAA,SAAQ,IAEtBG,EAAAA,iBAAiB,CAAEC,QAASjB,EAAekB,KAAMd,KAAiB,CAC9DH,UAAW,KACXC,WAAY,KACZC,WAAY,OAGrB,CAACH,EAAeI,EAAYG,KAExBY,EAAQC,GAAaX,YAAS,IAC1BY,EAAAA,wBAAwBT,EAAaG,KAI5C,OAAAO,EAAAA,IAAC1B,EAAQ2B,SAAR,CACGC,MAAO,CACHL,OAAAA,EACAC,UAAAA,EACAK,sBAAuB,IAAMjB,EAAaE,KAAKC,OAC/CC,YAAAA,EACAc,eAAgBX,EAChBX,WAAAA,EACAC,aAAAA,EACAC,WAAAA,GAGHP,SAAAA,GAAA,yDAqBmB,KACtB,MAAA4B,EAAUC,aAAWhC,GAE3B,QAAgB,IAAZ+B,EACA,MAAM,IAAIE,MACN,gEAUD,MAAA,CAAEC,iBANgB,KACrBH,EAAQP,WAAU,EAAI,EAKCW,SAFVJ,EAAQD,0CA7BG,KACtB,MAAAC,EAAU9B,EAAM+B,WAAWhC,GACjC,QAAgB,IAAZ+B,EACA,MAAM,IAAIE,MACN,6DAID,OAAAF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime")
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime");require("react");const c=require("../checkbox/Checkbox.cjs");exports.RequirementCheckbox=({defaultChecked:o,name:r,label:t,children:l})=>e.jsxs(e.Fragment,{children:[e.jsx(c.Checkbox,{className:"jkl-cookie-consent-modal__checkbox",value:"true",name:r,defaultChecked:o,children:t}),e.jsx("p",{className:"jkl-cookie-consent-modal__info-text",children:l})]});
|
|
2
2
|
//# sourceMappingURL=RequirementCheckbox.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RequirementCheckbox.cjs","sources":["../../../../src/components/cookie-consent/RequirementCheckbox.tsx"],"sourcesContent":["import React from \"react\";\nimport { WithChildren } from \"../../core/types.js\";\nimport { Checkbox } from \"../checkbox/Checkbox.js\";\n\ninterface RequirementCheckboxProps extends WithChildren {\n defaultChecked: boolean;\n name: \"functional\" | \"marketing\" | \"statistics\";\n label: string;\n}\n\nexport const RequirementCheckbox = ({\n defaultChecked,\n name,\n label,\n children,\n}: RequirementCheckboxProps) => {\n return (\n <>\n <Checkbox\n className=\"jkl-cookie-consent-modal__checkbox\"\n value=\"true\"\n name={name}\n defaultChecked={defaultChecked}\n >\n {label}\n </Checkbox>\n <p className=\"jkl-cookie-consent-modal__info-text\">{children}</p>\n </>\n );\n};\n"],"names":["defaultChecked","name","label","children","jsxs","Fragment","jsx","Checkbox","className","value"],"mappings":"
|
|
1
|
+
{"version":3,"file":"RequirementCheckbox.cjs","sources":["../../../../src/components/cookie-consent/RequirementCheckbox.tsx"],"sourcesContent":["import React from \"react\";\nimport type { WithChildren } from \"../../core/types.js\";\nimport { Checkbox } from \"../checkbox/Checkbox.js\";\n\ninterface RequirementCheckboxProps extends WithChildren {\n defaultChecked: boolean;\n name: \"functional\" | \"marketing\" | \"statistics\";\n label: string;\n}\n\nexport const RequirementCheckbox = ({\n defaultChecked,\n name,\n label,\n children,\n}: RequirementCheckboxProps) => {\n return (\n <>\n <Checkbox\n className=\"jkl-cookie-consent-modal__checkbox\"\n value=\"true\"\n name={name}\n defaultChecked={defaultChecked}\n >\n {label}\n </Checkbox>\n <p className=\"jkl-cookie-consent-modal__info-text\">{children}</p>\n </>\n );\n};\n"],"names":["defaultChecked","name","label","children","jsxs","Fragment","jsx","Checkbox","className","value"],"mappings":"8MAUmC,EAC/BA,eAAAA,EACAC,KAAAA,EACAC,MAAAA,EACAC,SAAAA,KAIQC,EAAAA,KAAAC,WAAA,CAAAF,SAAA,CAAAG,EAAAA,IAACC,EAAAA,SAAA,CACGC,UAAU,qCACVC,MAAM,OACNR,KAAAA,EACAD,eAAAA,EAECG,SAAAD,IAEJI,EAAAA,IAAA,IAAA,CAAEE,UAAU,sCAAuCL,SAAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=t=>typeof t>"u"?null:!1===t||"false"===String(t).toLowerCase()?"denied":"accepted";exports.buildRequirementsObject=({marketing:t,functional:e,statistics:o})=>({...t&&{marketing:t},...e&&{functional:e},...o&&{statistics:o}}),exports.convertBooleanConsentObjectToConsentObject=(e,o)=>({functional:o.functional?t(e.functional):void 0,statistics:o.statistics?t(e.statistics):void 0,marketing:o.marketing?t(e.marketing):void 0}),exports.convertBooleanToConsentValue=t,exports.getConsentCookie=({adapter:t,name:e})=>{const o=(t=>{if(typeof document>"u")return;const e=document.cookie.split(";").map((t=>t.trim().split("="))).find((e=>e[0]===t));return e||void 0})(e);return o?JSON.parse(o[1]):t?t():void 0},exports.setConsentCookie=({consent:t,maxAge:e=10368e3,name:o,domain:n,path:i})=>{document.cookie=[`${o}=${JSON.stringify(t)}`,`max-age=${e}`,"SameSite=Lax",!!n&&`domain=${n}`,!!i&&`path=${i}`].filter((t=>t)).join(";")},exports.shouldShowConsentDialog=(t,e)=>{if(e)
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=t=>typeof t>"u"?null:!1===t||"false"===String(t).toLowerCase()?"denied":"accepted";exports.buildRequirementsObject=({marketing:t,functional:e,statistics:o})=>({...t&&{marketing:t},...e&&{functional:e},...o&&{statistics:o}}),exports.convertBooleanConsentObjectToConsentObject=(e,o)=>({functional:o.functional?t(e.functional):void 0,statistics:o.statistics?t(e.statistics):void 0,marketing:o.marketing?t(e.marketing):void 0}),exports.convertBooleanToConsentValue=t,exports.getConsentCookie=({adapter:t,name:e})=>{const o=(t=>{if(typeof document>"u")return;const e=document.cookie.split(";").map((t=>t.trim().split("="))).find((e=>e[0]===t));return e||void 0})(e);return o?JSON.parse(o[1]):t?t():void 0},exports.setConsentCookie=({consent:t,maxAge:e=10368e3,name:o,domain:n,path:i})=>{document.cookie=[`${o}=${JSON.stringify(t)}`,`max-age=${e}`,"SameSite=Lax",!!n&&`domain=${n}`,!!i&&`path=${i}`].filter((t=>t)).join(";")},exports.shouldShowConsentDialog=(t,e)=>{if(!e)return Object.values(t).some((t=>t));const o=new Map(Object.entries(e)),n=Object.entries(t);for(const[t,e]of n)if(e&&null===o.get(t))return!0;return!1};
|
|
2
2
|
//# sourceMappingURL=cookieConsentUtils.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cookieConsentUtils.cjs","sources":["../../../../src/components/cookie-consent/cookieConsentUtils.ts"],"sourcesContent":["import type { Consent, ConsentRequirement, ConsentState } from \"./types.js\";\n\nconst getCookie = (name: string) => {\n if (typeof document === \"undefined\") {\n return undefined;\n }\n\n const cookie = document.cookie\n // split a string of cookies into array of cookies\n .split(\";\")\n // split cookies into [name, value]\n .map((s) => s.trim().split(\"=\"))\n // find our golden nugget\n .find((c) => c[0] === name);\n\n if (!cookie) {\n return undefined;\n }\n\n return cookie;\n};\n\nexport const getConsentCookie = ({\n adapter,\n name,\n}: {\n adapter?: () => Consent | undefined;\n name: string;\n}): Consent | undefined => {\n const cookie = getCookie(name);\n\n if (cookie) {\n const consent = JSON.parse(cookie[1]);\n\n return consent as Consent;\n }\n\n if (adapter) {\n return adapter();\n }\n\n return undefined;\n};\n\n// 120 days\nconst DEFAULT_MAX_AGE = 10368000;\n\nexport const setConsentCookie = ({\n consent,\n maxAge = DEFAULT_MAX_AGE,\n name,\n domain,\n path,\n}: {\n consent: Consent;\n maxAge?: number;\n name: string;\n domain?: string;\n path?: string;\n}): void => {\n document.cookie = [\n `${name}=${JSON.stringify(consent)}`,\n `max-age=${maxAge}`,\n
|
|
1
|
+
{"version":3,"file":"cookieConsentUtils.cjs","sources":["../../../../src/components/cookie-consent/cookieConsentUtils.ts"],"sourcesContent":["import type { Consent, ConsentRequirement, ConsentState } from \"./types.js\";\n\nconst getCookie = (name: string) => {\n if (typeof document === \"undefined\") {\n return undefined;\n }\n\n const cookie = document.cookie\n // split a string of cookies into array of cookies\n .split(\";\")\n // split cookies into [name, value]\n .map((s) => s.trim().split(\"=\"))\n // find our golden nugget\n .find((c) => c[0] === name);\n\n if (!cookie) {\n return undefined;\n }\n\n return cookie;\n};\n\nexport const getConsentCookie = ({\n adapter,\n name,\n}: {\n adapter?: () => Consent | undefined;\n name: string;\n}): Consent | undefined => {\n const cookie = getCookie(name);\n\n if (cookie) {\n const consent = JSON.parse(cookie[1]);\n\n return consent as Consent;\n }\n\n if (adapter) {\n return adapter();\n }\n\n return undefined;\n};\n\n// 120 days\nconst DEFAULT_MAX_AGE = 10368000;\n\nexport const setConsentCookie = ({\n consent,\n maxAge = DEFAULT_MAX_AGE,\n name,\n domain,\n path,\n}: {\n consent: Consent;\n maxAge?: number;\n name: string;\n domain?: string;\n path?: string;\n}): void => {\n document.cookie = [\n `${name}=${JSON.stringify(consent)}`,\n `max-age=${maxAge}`,\n \"SameSite=Lax\",\n !!domain && `domain=${domain}`,\n !!path && `path=${path}`,\n ]\n .filter((f) => f)\n .join(\";\");\n};\n\nexport const shouldShowConsentDialog = (\n requirement: ConsentRequirement,\n consent: Consent | undefined,\n): boolean => {\n if (!consent) {\n // check if requirement has truthy values. should show consent if it has\n return Object.values(requirement).some(\n (requirementValue) => requirementValue,\n );\n }\n\n // convert to a map to ease accessing dynamic keys\n const consentMap = new Map(Object.entries(consent));\n\n // pls spare the CPU of converting to an entries array 3 times\n const requirementEntries = Object.entries(requirement);\n\n for (const [name, required] of requirementEntries) {\n // no need to check more if the value isn't required\n if (!required) {\n continue;\n }\n\n // cancel and show consent if a value isn't decided\n if (consentMap.get(name) === null) {\n return true;\n }\n }\n\n return false;\n};\n\nexport const convertBooleanToConsentValue = (\n formValue: boolean | undefined,\n): ConsentState => {\n if (typeof formValue === \"undefined\") {\n return null;\n }\n\n if (formValue === false || String(formValue).toLowerCase() === \"false\") {\n return \"denied\";\n }\n\n return \"accepted\";\n};\n\nexport const convertBooleanConsentObjectToConsentObject = (\n consent: Partial<Record<keyof Consent, boolean | undefined>>,\n requirement: ConsentRequirement,\n): Consent => {\n return {\n functional: requirement.functional\n ? convertBooleanToConsentValue(consent.functional)\n : undefined,\n statistics: requirement.statistics\n ? convertBooleanToConsentValue(consent.statistics)\n : undefined,\n marketing: requirement.marketing\n ? convertBooleanToConsentValue(consent.marketing)\n : undefined,\n };\n};\n\nexport const buildRequirementsObject = ({\n marketing,\n functional,\n statistics,\n}: ConsentRequirement) => {\n return {\n ...(marketing && { marketing }),\n ...(functional && { functional }),\n ...(statistics && { statistics }),\n };\n};\n"],"names":["convertBooleanToConsentValue","formValue","String","toLowerCase","marketing","functional","statistics","consent","requirement","adapter","name","cookie","document","split","map","s","trim","find","c","getCookie","JSON","parse","maxAge","domain","path","stringify","filter","f","join","Object","values","some","requirementValue","consentMap","Map","entries","requirementEntries","required","get"],"mappings":"gFAEA,MAqGaA,EACTC,UAEWA,EAAc,IACd,MAGO,IAAdA,GAA2D,UAApCC,OAAOD,GAAWE,cAClC,SAGJ,2CAoB4B,EACnCC,UAAAA,EACAC,WAAAA,EACAC,WAAAA,MACJ,IAEYF,GAAa,CAAEA,UAAAA,MACfC,GAAc,CAAEA,WAAAA,MAChBC,GAAc,CAAEA,WAAAA,wDAzB8B,CACtDC,EACAC,KAAAA,CAGIH,WAAYG,EAAYH,WAClBL,EAA6BO,EAAQF,iBACrC,EACNC,WAAYE,EAAYF,WAClBN,EAA6BO,EAAQD,iBACrC,EACNF,UAAWI,EAAYJ,UACjBJ,EAA6BO,EAAQH,gBACrC,oEA5GkB,EAC5BK,QAAAA,EACAC,KAAAA,MAKM,MAAAC,EA3BSD,KACX,UAAOE,SAAa,IACb,OAGL,MAAAD,EAASC,SAASD,OAEnBE,MAAM,KAENC,KAAKC,GAAMA,EAAEC,OAAOH,MAAM,OAE1BI,MAAMC,GAAMA,EAAE,KAAOR,IAE1B,OAAKC,QAAL,CAIOA,EAUQQ,CAAUT,GAEzB,OAAIC,EACgBS,KAAKC,MAAMV,EAAO,IAKlCF,EACOA,SADX,CACmB,2BASS,EAC5BF,QAAAA,EACAe,OAAAA,EAJoB,QAKpBZ,KAAAA,EACAa,OAAAA,EACAC,KAAAA,MAQAZ,SAASD,OAAS,CACd,GAAGD,KAAQU,KAAKK,UAAUlB,KAC1B,WAAWe,IACX,iBACEC,GAAU,UAAUA,MACpBC,GAAQ,QAAQA,KAEjBE,QAAQC,GAAMA,IACdC,KAAK,IAAG,kCAGsB,CACnCpB,EACAD,KAEA,IAAKA,EAEM,OAAAsB,OAAOC,OAAOtB,GAAauB,MAC7BC,GAAqBA,IAK9B,MAAMC,EAAa,IAAIC,IAAIL,OAAOM,QAAQ5B,IAGpC6B,EAAqBP,OAAOM,QAAQ3B,GAE1C,IAAW,MAACE,EAAM2B,KAAaD,EAE3B,GAAKC,GAKwB,OAAzBJ,EAAWK,IAAI5B,GACR,OAAA,EAIR,OAAA,CAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime")
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime");require("react");const o=require("../../button/Button.cjs"),t=require("../CookieConsent.cjs"),n=require("../CookieConsentContext.cjs"),r={title:"Komponenter/CookieConsent",component:n.CookieConsentProvider,parameters:{layout:"centered"},tags:["autodocs"],argTypes:{}},s={args:{children:e.jsx((({children:t})=>{const{openConsentModal:r}=n.useCookieConsent();return e.jsxs("div",{children:[e.jsx(o.PrimaryButton,{onClick:()=>r(),children:"Åpne samtykker"}),t]})}),{children:e.jsx(t.CookieConsent,{})}),cookieName:"demo-consent-cookie",functional:!0,statistics:!0,marketing:!0}};exports.CookieConsent=s,exports.default=r;
|
|
2
2
|
//# sourceMappingURL=CookieConsent.stories.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CookieConsent.stories.cjs","sources":["../../../../../src/components/cookie-consent/stories/CookieConsent.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from \"@storybook/react\";\nimport React, { FC } from \"react\";\nimport { WithChildren } from \"../../../core/types.js\";\nimport { PrimaryButton } from \"../../button/Button.js\";\nimport { CookieConsent as CookieConsentComponent } from \"../CookieConsent.js\";\nimport {\n CookieConsentProvider,\n useCookieConsent,\n} from \"../CookieConsentContext.js\";\nimport \"../styles/_index.scss\";\n\nconst meta = {\n title: \"Komponenter/CookieConsent\",\n component: CookieConsentProvider,\n parameters: {\n layout: \"centered\",\n },\n tags: [\"autodocs\"],\n argTypes: {},\n} satisfies Meta<typeof CookieConsentProvider>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\nconst Wrapper: FC<WithChildren> = ({ children }) => {\n const { openConsentModal } = useCookieConsent();\n\n return (\n <div>\n <PrimaryButton onClick={() => openConsentModal()}>\n Åpne samtykker\n </PrimaryButton>\n {children}\n </div>\n );\n};\n\nexport const CookieConsent: Story = {\n args: {\n children: (\n <Wrapper>\n <CookieConsentComponent />\n </Wrapper>\n ),\n cookieName: \"demo-consent-cookie\",\n functional: true,\n statistics: true,\n marketing: true,\n },\n};\n"],"names":["meta","title","component","CookieConsentProvider","parameters","layout","tags","argTypes","CookieConsent","args","children","jsx","openConsentModal","useCookieConsent","PrimaryButton","onClick","CookieConsentComponent","cookieName","functional","statistics","marketing"],"mappings":"
|
|
1
|
+
{"version":3,"file":"CookieConsent.stories.cjs","sources":["../../../../../src/components/cookie-consent/stories/CookieConsent.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from \"@storybook/react\";\nimport React, { type FC } from \"react\";\nimport type { WithChildren } from \"../../../core/types.js\";\nimport { PrimaryButton } from \"../../button/Button.js\";\nimport { CookieConsent as CookieConsentComponent } from \"../CookieConsent.js\";\nimport {\n CookieConsentProvider,\n useCookieConsent,\n} from \"../CookieConsentContext.js\";\nimport \"../styles/_index.scss\";\n\nconst meta = {\n title: \"Komponenter/CookieConsent\",\n component: CookieConsentProvider,\n parameters: {\n layout: \"centered\",\n },\n tags: [\"autodocs\"],\n argTypes: {},\n} satisfies Meta<typeof CookieConsentProvider>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\nconst Wrapper: FC<WithChildren> = ({ children }) => {\n const { openConsentModal } = useCookieConsent();\n\n return (\n <div>\n <PrimaryButton onClick={() => openConsentModal()}>\n Åpne samtykker\n </PrimaryButton>\n {children}\n </div>\n );\n};\n\nexport const CookieConsent: Story = {\n args: {\n children: (\n <Wrapper>\n <CookieConsentComponent />\n </Wrapper>\n ),\n cookieName: \"demo-consent-cookie\",\n functional: true,\n statistics: true,\n marketing: true,\n },\n};\n"],"names":["meta","title","component","CookieConsentProvider","parameters","layout","tags","argTypes","CookieConsent","args","children","jsx","openConsentModal","useCookieConsent","PrimaryButton","onClick","CookieConsentComponent","cookieName","functional","statistics","marketing"],"mappings":"wRAWMA,EAAO,CACTC,MAAO,4BACPC,UAAWC,EAAAA,sBACXC,WAAY,CACRC,OAAQ,YAEZC,KAAM,CAAC,YACPC,SAAU,CAAC,GAmBFC,EAAuB,CAChCC,KAAM,CACFC,SACIC,EAAAA,KAhBsB,EAAGD,SAAAA,MAC3B,MAAEE,iBAAAA,GAAqBC,EAAAA,mBAE7B,cACK,MACG,CAAAH,SAAA,CAAAC,EAAAA,IAACG,EAAcA,cAAA,CAAAC,QAAS,IAAMH,IAAoBF,SAElD,mBACCA,IACL,GAQQ,CAAAA,SAAAC,EAAAA,IAACK,iBAAuB,KAGhCC,WAAY,sBACZC,YAAY,EACZC,YAAY,EACZC,WAAW"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),t=require("react");exports.Countdown=({className:s,from:r,isPaused:a,...n})=>{const[o,l]=t.useState(Math.floor(r/1e3));return t.useEffect((()=>{o<=0||setTimeout((()=>{a||l((e=>e-1))}),1e3)}),[a,
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),t=require("react");exports.Countdown=({className:s,from:r,isPaused:a,...n})=>{const[o,l]=t.useState(Math.floor(r/1e3));return t.useEffect((()=>{o<=0||setTimeout((()=>{a||l((e=>e-1))}),1e3)}),[a,o]),e.jsxs("div",{className:`jkl-countdown ${s??""}`,role:"timer","data-testid":"jkl-countdown",...n,children:[e.jsx("span",{className:"jkl-countdown__tracker",role:"presentation",style:{"--duration":`${r}ms`,"--play-state":a?"paused":"running"},"data-testid":"jkl-countdown__tracker"}),e.jsx("span",{className:"jkl-sr-only",children:o})]})};
|
|
2
2
|
//# sourceMappingURL=Countdown.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Countdown.cjs","sources":["../../../../src/components/countdown/Countdown.tsx"],"sourcesContent":["import React, { useState, type CSSProperties, type FC, useEffect } from \"react\";\nimport { CountdownProps } from \"./types.js\";\n\nexport const Countdown: FC<CountdownProps> = ({\n className,\n from,\n isPaused,\n ...rest\n}) => {\n const [remainingSeconds, setRemainingSeconds] = useState(\n Math.floor(from / 1000),\n );\n\n useEffect(() => {\n if (remainingSeconds <= 0) {\n return;\n }\n\n setTimeout(() => {\n if (!isPaused) {\n setRemainingSeconds((sec) => sec - 1);\n }\n }, 1000);\n }, [isPaused,
|
|
1
|
+
{"version":3,"file":"Countdown.cjs","sources":["../../../../src/components/countdown/Countdown.tsx"],"sourcesContent":["import React, { useState, type CSSProperties, type FC, useEffect } from \"react\";\nimport type { CountdownProps } from \"./types.js\";\n\nexport const Countdown: FC<CountdownProps> = ({\n className,\n from,\n isPaused,\n ...rest\n}) => {\n const [remainingSeconds, setRemainingSeconds] = useState(\n Math.floor(from / 1000),\n );\n\n useEffect(() => {\n if (remainingSeconds <= 0) {\n return;\n }\n\n setTimeout(() => {\n if (!isPaused) {\n setRemainingSeconds((sec) => sec - 1);\n }\n }, 1000);\n }, [isPaused, remainingSeconds]);\n\n return (\n <div\n className={`jkl-countdown ${className ?? \"\"}`}\n role=\"timer\"\n data-testid=\"jkl-countdown\"\n {...rest}\n >\n <span\n className=\"jkl-countdown__tracker\"\n role=\"presentation\"\n style={\n {\n \"--duration\": `${from}ms`,\n \"--play-state\": isPaused ? \"paused\" : \"running\",\n } as CSSProperties\n }\n data-testid=\"jkl-countdown__tracker\"\n />\n <span className=\"jkl-sr-only\">{remainingSeconds}</span>\n </div>\n );\n};\n"],"names":["className","from","isPaused","rest","remainingSeconds","setRemainingSeconds","useState","Math","floor","useEffect","setTimeout","sec","jsxs","role","children","jsx","style"],"mappings":"0JAG6C,EACzCA,UAAAA,EACAC,KAAAA,EACAC,SAAAA,KACGC,MAEG,MAACC,EAAkBC,GAAuBC,EAAAA,SAC5CC,KAAKC,MAAMP,EAAO,MAGtBQ,OAAAA,EAAAA,WAAU,KACFL,GAAoB,GAIxBM,YAAW,KACFR,GACmBG,GAACM,GAAQA,EAAM,GAAC,GAEzC,IAAI,GACR,CAACT,EAAUE,IAGVQ,EAAAA,KAAC,MAAA,CACGZ,UAAW,iBAAiBA,GAAa,KACzCa,KAAK,QACL,cAAY,mBACRV,EAEJW,SAAA,CAAAC,EAAAA,IAAC,OAAA,CACGf,UAAU,yBACVa,KAAK,eACLG,MACI,CACI,aAAc,GAAGf,MACjB,eAAgBC,EAAW,SAAW,WAG9C,cAAY,2BAEfa,EAAAA,IAAA,OAAA,CAAKf,UAAU,cAAec,SAAiBV,MAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Countdown.stories.cjs","sources":["../../../../../src/components/countdown/stories/Countdown.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from \"@storybook/react\";\nimport { Countdown as CountdownComponent } from \"../Countdown.js\";\nimport \"../styles/_index.scss\";\nimport React, { FC, useState } from \"react\";\nimport { WithChildren } from \"../../../core/types.js\";\nimport { PrimaryButton } from \"../../button/Button.js\";\nimport { Flex } from \"../../flex/Flex.js\";\n\nconst meta = {\n title: \"Komponenter/Countdown\",\n component: CountdownComponent,\n parameters: {\n layout: \"centered\",\n },\n tags: [\"autodocs\"],\n} satisfies Meta<typeof CountdownComponent>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\nconst Wrapper: FC<WithChildren> = ({ children }) => {\n const [key, setKey] = useState(0);\n\n return (\n <Flex style={{ width: 500 }} direction=\"column\" gap={24}>\n <div key={key}>{children}</div>\n <PrimaryButton\n onClick={() => setKey(Date.now())}\n style={{ width: 200 }}\n >\n Restart\n </PrimaryButton>\n </Flex>\n );\n};\n\nexport const Countdown: Story = {\n args: {\n from: 5000,\n },\n decorators: (Story) => (\n <Wrapper>\n <Story />\n </Wrapper>\n ),\n};\n"],"names":["meta","title","component","CountdownComponent","Countdown","parameters","layout","tags","Wrapper","children","key","setKey","useState","jsxs","Flex","style","width","direction","gap","jsx","PrimaryButton","onClick","Date","now","args","from","decorators","Story"],"mappings":"wQAQMA,EAAO,CACTC,MAAO,wBACPC,UAAWC,EAAAC,UACXC,WAAY,CACRC,OAAQ,YAEZC,KAAM,CAAC,aAMLC,EAA4B,EAAGC,SAAAA,MACjC,MAAOC,EAAKC,GAAUC,WAAS,GAG3B,OAAAC,OAACC,EAAAA,KAAK,CAAAC,MAAO,CAAEC,MAAO,KAAOC,UAAU,SAASC,IAAK,GACjDT,SAAA,CAACU,EAAAA,IAAA,MAAA,CAAeV,SAAAA,GAANC,GACVS,EAAAA,IAACC,EAAAA,cAAA,CACGC,QAAS,IAAMV,EAAOW,KAAKC,OAC3BR,MAAO,CAAEC,MAAO,KACnBP,SAAA,cAGL,EAIKL,EAAmB,CAC5BoB,KAAM,CACFC,KAAM,KAEVC,WAAaC,SACRnB,EACG,CAAAC,SAAAU,MAACQ,GAAM"}
|
|
1
|
+
{"version":3,"file":"Countdown.stories.cjs","sources":["../../../../../src/components/countdown/stories/Countdown.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from \"@storybook/react\";\nimport { Countdown as CountdownComponent } from \"../Countdown.js\";\nimport \"../styles/_index.scss\";\nimport React, { type FC, useState } from \"react\";\nimport type { WithChildren } from \"../../../core/types.js\";\nimport { PrimaryButton } from \"../../button/Button.js\";\nimport { Flex } from \"../../flex/Flex.js\";\n\nconst meta = {\n title: \"Komponenter/Countdown\",\n component: CountdownComponent,\n parameters: {\n layout: \"centered\",\n },\n tags: [\"autodocs\"],\n} satisfies Meta<typeof CountdownComponent>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\nconst Wrapper: FC<WithChildren> = ({ children }) => {\n const [key, setKey] = useState(0);\n\n return (\n <Flex style={{ width: 500 }} direction=\"column\" gap={24}>\n <div key={key}>{children}</div>\n <PrimaryButton\n onClick={() => setKey(Date.now())}\n style={{ width: 200 }}\n >\n Restart\n </PrimaryButton>\n </Flex>\n );\n};\n\nexport const Countdown: Story = {\n args: {\n from: 5000,\n },\n decorators: (Story) => (\n <Wrapper>\n <Story />\n </Wrapper>\n ),\n};\n"],"names":["meta","title","component","CountdownComponent","Countdown","parameters","layout","tags","Wrapper","children","key","setKey","useState","jsxs","Flex","style","width","direction","gap","jsx","PrimaryButton","onClick","Date","now","args","from","decorators","Story"],"mappings":"wQAQMA,EAAO,CACTC,MAAO,wBACPC,UAAWC,EAAAC,UACXC,WAAY,CACRC,OAAQ,YAEZC,KAAM,CAAC,aAMLC,EAA4B,EAAGC,SAAAA,MACjC,MAAOC,EAAKC,GAAUC,WAAS,GAG3B,OAAAC,OAACC,EAAAA,KAAK,CAAAC,MAAO,CAAEC,MAAO,KAAOC,UAAU,SAASC,IAAK,GACjDT,SAAA,CAACU,EAAAA,IAAA,MAAA,CAAeV,SAAAA,GAANC,GACVS,EAAAA,IAACC,EAAAA,cAAA,CACGC,QAAS,IAAMV,EAAOW,KAAKC,OAC3BR,MAAO,CAAEC,MAAO,KACnBP,SAAA,cAGL,EAIKL,EAAmB,CAC5BoB,KAAM,CACFC,KAAM,KAEVC,WAAaC,SACRnB,EACG,CAAAC,SAAAU,MAACQ,GAAM"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),t=require("../../../clsx-E3yX_9sL.cjs"),a=require("date-fns"),r=require("react"),n=require("react-dom"),l=require("../icon/
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),t=require("../../../clsx-E3yX_9sL.cjs"),a=require("date-fns"),r=require("react"),n=require("react-dom"),l=require("../icon-button/IconButton.cjs"),o=require("../icon/icons/CalendarIcon.cjs"),u=require("../input-group/InputGroup.cjs"),s=require("../popover/Popover.cjs"),i=require("../text-input/BaseTextInput.cjs"),c=require("./internal/Calendar.cjs"),d=require("./internal/utils.cjs"),p=require("./utils.cjs"),v=require("./validation.cjs"),f=r.forwardRef(((f,b)=>{const{"data-testautoid":k,id:h,className:m="",label:g="Velg dato",labelProps:j,defaultValue:D,defaultShow:y=!1,value:C,disableBeforeDate:x,disableAfterDate:q,yearsToShow:L,name:P,helpLabel:S,errorLabel:w,invalid:I,density:O,days:B,months:T,monthLabel:_,yearLabel:E,placeholder:N="dd.mm.åååå",width:R="11.25rem",onChange:U,onBlur:V,onFocus:F,onKeyDown:K,action:W,showCalendarLabel:A="Åpne kalender",hideCalendarLabel:G="Lukk kalender",supportLabelProps:M,tooltip:H,textInputProps:z,...J}=f;"production"!==process.env.NODE_ENV&&C&&D&&console.warn("DatePicker må enten være controlled eller uncontrolled. Hvis du bruker defaultValue og value sammen vil defaultValue bli ignorert.");const Q=p.parseDateString(x),X=Q?a.startOfDay(Q):void 0,Y=p.parseDateString(q),Z=Y?a.startOfDay(Y):void 0,[$,ee]=r.useState(d.getInitialDate(C,D,X,Z)),[te,ae]=r.useState(null),[re,ne]=r.useState(y),le=r.useRef(null),oe=r.useRef(null),ue=r.useRef(null),se=r.useRef(null),ie=r.useCallback((e=>{se.current=e,b&&("function"==typeof b?b(e):b.current=e)}),[b]),ce=r.useCallback((e=>{F&&oe.current&&(oe.current.contains(e.relatedTarget)||F(e,$,{error:te,value:e.target.value}))}),[F,$,te]),de=r.useCallback((e=>{V&&V(e,$,{error:te,value:e.target.value})}),[V,$,te]),pe=r.useCallback((e=>{"Escape"===e.key&&(ne(!1),e.preventDefault(),e.stopPropagation()),null!=W&&W.onKeyDown&&W.onKeyDown(e)}),[W]),ve=r.useCallback((e=>{let t=null,a=null;if(e.target.value){const r=p.parseDateString(e.target.value);r?X&&!v.isWithinLowerBound(r,X)?a="OUTSIDE_LOWER_BOUND":Z&&!v.isWithinUpperBound(r,Z)?a="OUTSIDE_UPPER_BOUND":ne(!1):a="WRONG_FORMAT",t=r||null}ae(a),ee(t),U&&U(e,t,{error:a,value:e.target.value})}),[U,X,Z]),fe=r.useCallback((e=>{n.flushSync((()=>{ne(!re)}));const t=le.current,a=t&&t.querySelector('[aria-pressed="true"]');window.requestAnimationFrame((()=>null==a?void 0:a.focus())),null!=W&&W.onClick&&W.onClick(e)}),[re,W]),be=r.useCallback((({date:e})=>{if(ne(!1),ee(e),se.current){const t=se.current;t.value=p.formatInput(e);const a=document.createEvent("HTMLEvents");a.initEvent("input",!0,!1),t.dispatchEvent(a),t.focus(),U&&U(a,e,{error:null,value:t.value})}}),[U]),ke=r.useCallback((e=>{var t;e.preventDefault(),ne(!1),null==(t=ue.current)||t.focus()}),[]);return e.jsx(u.InputGroup,{id:h,className:t.clsx("jkl-datepicker",m),...J,ref:oe,label:g,labelProps:j,density:O,helpLabel:S,errorLabel:w,supportLabelProps:M,tooltip:H,render:t=>e.jsx(i.BaseTextInput,{"data-focused":re?"true":void 0,ref:ie,"data-testid":"jkl-datepicker__input","data-testautoid":k,className:"jkl-datepicker__input",name:P,defaultValue:D,density:O,value:C,type:"text",placeholder:N,width:R,onFocus:ce,onBlur:de,onChange:ve,actionButton:e.jsxs(s.Popover,{positionReference:se,open:re,onOpenChange:()=>ne(!re),offset:8,children:[e.jsx(s.Popover.Trigger,{...W,"data-testid":"jkl-datepicker__trigger",className:"jkl-text-input-action-button",title:re?G:A,tabIndex:0,onClick:fe,onKeyDown:pe,asChild:!0,children:e.jsx(l.IconButton,{children:e.jsx(o.CalendarIcon,{})})}),e.jsx(s.Popover.Content,{initialFocus:-1,padding:24,children:e.jsx(c.Calendar,{ref:le,density:O,date:$,minDate:X,maxDate:Z,days:B,months:T,monthLabel:_,yearLabel:E,yearsToShow:L,onDateSelected:be,onTabOutside:ke})})]}),...z,...t,"aria-invalid":I||!!w})})}));f.displayName="DatePicker",exports.DatePicker=f;
|
|
2
2
|
//# sourceMappingURL=DatePicker.cjs.map
|