@fremtind/jokul 5.2.3 → 6.0.0-next.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/README.md +1 -1
- package/build/build-stats.html +37 -36
- package/build/cjs/components/autosuggest/BaseAutosuggest.cjs +1 -1
- package/build/cjs/components/autosuggest/BaseAutosuggest.cjs.map +1 -1
- package/build/cjs/components/date-input/DateInput.cjs +2 -0
- package/build/cjs/components/date-input/DateInput.cjs.map +1 -0
- package/build/cjs/components/date-input/DateInput.d.cts +7 -0
- package/build/cjs/components/date-input/calendar/Calendar.cjs +2 -0
- package/build/cjs/components/date-input/calendar/Calendar.cjs.map +1 -0
- package/build/cjs/components/date-input/calendar/Calendar.d.cts +6 -0
- package/build/cjs/components/date-input/calendar/CalendarDay.cjs +2 -0
- package/build/cjs/components/date-input/calendar/CalendarDay.cjs.map +1 -0
- package/build/cjs/components/date-input/calendar/CalendarDay.d.cts +16 -0
- package/build/cjs/components/date-input/calendar/CalendarWeek.cjs +2 -0
- package/build/cjs/components/date-input/calendar/CalendarWeek.cjs.map +1 -0
- package/build/cjs/components/date-input/calendar/CalendarWeek.d.cts +8 -0
- package/build/cjs/components/date-input/calendar/types.d.cts +6 -0
- package/build/cjs/components/date-input/calendar/utils.cjs +2 -0
- package/build/cjs/components/date-input/calendar/utils.cjs.map +1 -0
- package/build/cjs/components/date-input/calendar/utils.d.cts +19 -0
- package/build/cjs/components/date-input/index.cjs +2 -0
- package/build/cjs/components/date-input/index.d.cts +3 -0
- package/build/cjs/components/date-input/types.d.cts +35 -0
- package/build/cjs/components/date-input/utils.cjs +2 -0
- package/build/cjs/components/date-input/utils.cjs.map +1 -0
- package/build/cjs/components/date-input/utils.d.cts +34 -0
- package/build/cjs/components/file/File.cjs +1 -1
- package/build/cjs/components/file/File.cjs.map +1 -1
- package/build/cjs/components/file/types.d.cts +10 -1
- package/build/cjs/components/search/Search.cjs +1 -1
- package/build/cjs/components/search/Search.cjs.map +1 -1
- package/build/cjs/components/select/Option.cjs +2 -0
- package/build/cjs/components/select/Option.cjs.map +1 -0
- package/build/cjs/components/select/Option.d.cts +12 -0
- package/build/cjs/components/select/Select.cjs +1 -1
- package/build/cjs/components/select/Select.cjs.map +1 -1
- package/build/cjs/components/select/Select.d.cts +18 -3
- package/build/cjs/components/select/index.cjs +1 -1
- package/build/cjs/components/select/index.d.cts +1 -5
- package/build/cjs/components/select/utils.cjs +2 -0
- package/build/cjs/components/select/utils.cjs.map +1 -0
- package/build/cjs/components/select/utils.d.cts +5 -0
- package/build/cjs/components/table/TablePagination.cjs +1 -1
- package/build/cjs/components/table/TablePagination.cjs.map +1 -1
- package/build/cjs/components/tabs/Tabs.cjs.map +1 -1
- package/build/cjs/hooks/index.cjs +1 -1
- package/build/cjs/hooks/index.d.cts +0 -1
- package/build/cjs/hooks/useListNavigation/useListNavigation.cjs +1 -1
- package/build/cjs/hooks/useListNavigation/useListNavigation.cjs.map +1 -1
- package/build/cjs/hooks/useListNavigation/useListNavigation.d.cts +4 -2
- package/build/cjs/utilities/formatters/index.cjs +1 -1
- package/build/cjs/utilities/formatters/index.d.cts +1 -1
- package/build/cjs/utilities/formatters/util/registerWithMask.cjs +1 -1
- package/build/cjs/utilities/formatters/util/registerWithMask.cjs.map +1 -1
- package/build/cjs/utilities/formatters/util/registerWithMask.d.cts +0 -8
- package/build/cjs/utilities/index.cjs +1 -1
- package/build/cjs/utilities/validators/index.cjs +1 -1
- package/build/cjs/utilities/validators/index.d.cts +0 -1
- package/build/cjs/utilities/valuePair.cjs.map +1 -1
- package/build/cjs/utilities/valuePair.d.cts +2 -0
- package/build/es/components/autosuggest/BaseAutosuggest.js +1 -1
- package/build/es/components/autosuggest/BaseAutosuggest.js.map +1 -1
- package/build/es/components/date-input/DateInput.d.ts +7 -0
- package/build/es/components/date-input/DateInput.js +2 -0
- package/build/es/components/date-input/DateInput.js.map +1 -0
- package/build/es/components/date-input/calendar/Calendar.d.ts +6 -0
- package/build/es/components/date-input/calendar/Calendar.js +2 -0
- package/build/es/components/date-input/calendar/Calendar.js.map +1 -0
- package/build/es/components/date-input/calendar/CalendarDay.d.ts +16 -0
- package/build/es/components/date-input/calendar/CalendarDay.js +2 -0
- package/build/es/components/date-input/calendar/CalendarDay.js.map +1 -0
- package/build/es/components/date-input/calendar/CalendarWeek.d.ts +8 -0
- package/build/es/components/date-input/calendar/CalendarWeek.js +2 -0
- package/build/es/components/date-input/calendar/CalendarWeek.js.map +1 -0
- package/build/es/components/date-input/calendar/types.d.ts +6 -0
- package/build/es/components/date-input/calendar/utils.d.ts +19 -0
- package/build/es/components/date-input/calendar/utils.js +2 -0
- package/build/es/components/date-input/calendar/utils.js.map +1 -0
- package/build/es/components/date-input/index.d.ts +3 -0
- package/build/es/components/date-input/index.js +2 -0
- package/build/es/components/date-input/types.d.ts +35 -0
- package/build/es/components/date-input/utils.d.ts +34 -0
- package/build/es/components/date-input/utils.js +2 -0
- package/build/es/components/date-input/utils.js.map +1 -0
- package/build/es/components/file/File.js +1 -1
- package/build/es/components/file/File.js.map +1 -1
- package/build/es/components/file/types.d.ts +10 -1
- package/build/es/components/search/Search.js +1 -1
- package/build/es/components/search/Search.js.map +1 -1
- package/build/es/components/select/Option.d.ts +12 -0
- package/build/es/components/select/Option.js +2 -0
- package/build/es/components/select/Option.js.map +1 -0
- package/build/es/components/select/Select.d.ts +18 -3
- package/build/es/components/select/Select.js +1 -1
- package/build/es/components/select/Select.js.map +1 -1
- package/build/es/components/select/index.d.ts +1 -5
- package/build/es/components/select/index.js +1 -1
- package/build/es/components/select/utils.d.ts +5 -0
- package/build/es/components/select/utils.js +2 -0
- package/build/es/components/select/utils.js.map +1 -0
- package/build/es/components/table/TablePagination.js +1 -1
- package/build/es/components/table/TablePagination.js.map +1 -1
- package/build/es/components/tabs/Tabs.js.map +1 -1
- package/build/es/hooks/index.d.ts +0 -1
- package/build/es/hooks/index.js +1 -1
- package/build/es/hooks/useListNavigation/useListNavigation.d.ts +4 -2
- package/build/es/hooks/useListNavigation/useListNavigation.js +1 -1
- package/build/es/hooks/useListNavigation/useListNavigation.js.map +1 -1
- package/build/es/utilities/formatters/index.d.ts +1 -1
- package/build/es/utilities/formatters/index.js +1 -1
- package/build/es/utilities/formatters/util/registerWithMask.d.ts +0 -8
- package/build/es/utilities/formatters/util/registerWithMask.js +1 -1
- package/build/es/utilities/formatters/util/registerWithMask.js.map +1 -1
- package/build/es/utilities/index.js +1 -1
- package/build/es/utilities/validators/index.d.ts +0 -1
- package/build/es/utilities/validators/index.js +1 -1
- package/build/es/utilities/valuePair.d.ts +2 -0
- package/build/es/utilities/valuePair.js.map +1 -1
- package/codemods/CODEMODS.md +55 -0
- package/codemods/__tests__/import-paths.test.mjs +155 -0
- package/codemods/import-paths.mjs +10 -2
- package/codemods/transforms/date-input.mjs +225 -0
- package/codemods/transforms/import-specifiers.mjs +26 -0
- package/codemods/transforms/register-with-mask.mjs +267 -0
- package/package.json +14 -13
- package/src/fonts/Jokul-Icons.woff2 +0 -0
- package/src/fonts/brands/fremtind/Jokul-Icons.woff2 +0 -0
- package/styles/base.css +8 -1
- package/styles/base.min.css +1 -1
- package/styles/components/autosuggest/autosuggest.min.css +1 -1
- package/styles/components/beta/description-list/description-list.min.css +1 -1
- package/styles/components/beta/nav-link/navlink.min.css +1 -1
- package/styles/components/breadcrumb/breadcrumb.min.css +1 -1
- package/styles/components/button/button.min.css +1 -1
- package/styles/components/card/card.min.css +1 -1
- package/styles/components/checkbox/checkbox.min.css +1 -1
- package/styles/components/checkbox-panel/checkbox-panel.min.css +1 -1
- package/styles/components/checkbox-panel/development/styles.min.css +1 -1
- package/styles/components/chip/chip.min.css +1 -1
- package/styles/components/combobox/combobox.min.css +1 -1
- package/styles/components/cookie-consent/cookie-consent.min.css +1 -1
- package/styles/components/countdown/countdown.css +2 -2
- package/styles/components/countdown/countdown.min.css +1 -1
- package/styles/components/date-input/_index.scss +8 -0
- package/styles/components/date-input/calendar/_index.scss +8 -0
- package/styles/components/date-input/calendar/calendar.css +60 -0
- package/styles/components/date-input/calendar/calendar.min.css +1 -0
- package/styles/components/date-input/calendar/calendar.scss +79 -0
- package/styles/components/date-input/date-input.css +187 -0
- package/styles/components/date-input/date-input.min.css +1 -0
- package/styles/components/date-input/date-input.scss +67 -0
- package/styles/components/description-list/description-list.min.css +1 -1
- package/styles/components/expander/accordion.min.css +1 -1
- package/styles/components/expander/expandable.min.css +1 -1
- package/styles/components/feedback/feedback.css +2 -2
- package/styles/components/feedback/feedback.min.css +1 -1
- package/styles/components/file/file.css +50 -61
- package/styles/components/file/file.min.css +1 -1
- package/styles/components/file/file.scss +66 -79
- package/styles/components/file-input/file-input.css +59 -70
- package/styles/components/file-input/file-input.min.css +1 -1
- package/styles/components/flex/flex.min.css +1 -1
- package/styles/components/help/help.min.css +1 -1
- package/styles/components/icon/icon.css +1 -1
- package/styles/components/icon/icon.min.css +1 -1
- package/styles/components/icon/icon.scss +1 -0
- package/styles/components/icon-button/icon-button.min.css +1 -1
- package/styles/components/image/development/style.min.css +1 -1
- package/styles/components/image/image.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/input-panel/input-panel.min.css +1 -1
- package/styles/components/link/link.min.css +1 -1
- package/styles/components/link-list/link-list.min.css +1 -1
- package/styles/components/list/list.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 +3 -3
- package/styles/components/loader/skeleton-loader.min.css +1 -1
- package/styles/components/logo/development/styles.min.css +1 -1
- package/styles/components/logo/logo.min.css +1 -1
- package/styles/components/menu/menu.min.css +1 -1
- package/styles/components/message/message.css +2 -2
- package/styles/components/message/message.min.css +1 -1
- package/styles/components/modal/modal.min.css +1 -1
- package/styles/components/nav-link/nav-link.min.css +1 -1
- package/styles/components/number-input/number-input.min.css +1 -1
- package/styles/components/pagination/development/styles.min.css +1 -1
- package/styles/components/pagination/pagination.min.css +1 -1
- package/styles/components/popover/popover.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.min.css +1 -1
- package/styles/components/radio-panel/development/styles.min.css +1 -1
- package/styles/components/radio-panel/radio-panel.min.css +1 -1
- package/styles/components/search/search-with-submit-button.min.css +1 -1
- package/styles/components/search/search.min.css +1 -1
- package/styles/components/segmented-control/segmented-control.css +3 -3
- package/styles/components/segmented-control/segmented-control.min.css +1 -1
- package/styles/components/select/_index.scss +5 -0
- package/styles/components/select/option.css +73 -0
- package/styles/components/select/option.min.css +1 -0
- package/styles/components/select/option.scss +74 -0
- package/styles/components/select/select.css +84 -264
- package/styles/components/select/select.min.css +1 -1
- package/styles/components/select/select.scss +79 -328
- package/styles/components/summary-table/summary-table.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/table/table.min.css +3 -1
- package/styles/components/table-of-contents/table-of-contents.min.css +1 -1
- package/styles/components/tabs/tabs.min.css +1 -1
- package/styles/components/tag/tag.min.css +1 -1
- package/styles/components/text-area/text-area.min.css +1 -1
- package/styles/components/text-input/text-input.min.css +1 -1
- package/styles/components/toast/toast.css +4 -4
- package/styles/components/toast/toast.min.css +1 -1
- package/styles/components/toggle-switch/toggle-switch.min.css +1 -1
- package/styles/components/tooltip/tooltip.min.css +1 -1
- package/styles/components/typography/title.min.css +1 -1
- package/styles/components.css +4391 -4612
- package/styles/components.min.css +3 -1
- package/styles/components.scss +2 -3
- package/styles/jkl/_shadows.scss +0 -12
- package/styles/theme/_fonts.scss +1 -1
- package/styles/utility/_index.scss +2 -1
- package/styles/utility/_lists.scss +7 -0
- package/build/_commonjsHelpers-C37NGDzP.cjs +0 -2
- package/build/_commonjsHelpers-C37NGDzP.cjs.map +0 -1
- package/build/_commonjsHelpers-CXUWDbkB.js +0 -2
- package/build/_commonjsHelpers-CXUWDbkB.js.map +0 -1
- package/build/cjs/components/beta/select/Select.cjs +0 -2
- package/build/cjs/components/beta/select/Select.cjs.map +0 -1
- package/build/cjs/components/beta/select/Select.d.cts +0 -3
- package/build/cjs/components/beta/select/index.cjs +0 -2
- package/build/cjs/components/beta/select/index.d.cts +0 -2
- package/build/cjs/components/beta/select/types.d.cts +0 -10
- package/build/cjs/components/datepicker/DatePicker.cjs +0 -2
- package/build/cjs/components/datepicker/DatePicker.cjs.map +0 -1
- package/build/cjs/components/datepicker/DatePicker.d.cts +0 -3
- package/build/cjs/components/datepicker/index.cjs +0 -2
- package/build/cjs/components/datepicker/index.cjs.map +0 -1
- package/build/cjs/components/datepicker/index.d.cts +0 -4
- package/build/cjs/components/datepicker/internal/Calendar.cjs +0 -2
- package/build/cjs/components/datepicker/internal/Calendar.cjs.map +0 -1
- package/build/cjs/components/datepicker/internal/Calendar.d.cts +0 -15
- package/build/cjs/components/datepicker/internal/calendarReducer.cjs +0 -2
- package/build/cjs/components/datepicker/internal/calendarReducer.cjs.map +0 -1
- package/build/cjs/components/datepicker/internal/calendarReducer.d.cts +0 -18
- package/build/cjs/components/datepicker/internal/useCalendar.cjs +0 -2
- package/build/cjs/components/datepicker/internal/useCalendar.cjs.map +0 -1
- package/build/cjs/components/datepicker/internal/useCalendar.d.cts +0 -59
- package/build/cjs/components/datepicker/internal/utils.cjs +0 -2
- package/build/cjs/components/datepicker/internal/utils.cjs.map +0 -1
- package/build/cjs/components/datepicker/internal/utils.d.cts +0 -167
- package/build/cjs/components/datepicker/types.d.cts +0 -280
- package/build/cjs/components/datepicker/utils.cjs +0 -2
- package/build/cjs/components/datepicker/utils.cjs.map +0 -1
- package/build/cjs/components/datepicker/utils.d.cts +0 -22
- package/build/cjs/components/datepicker/validation.cjs +0 -2
- package/build/cjs/components/datepicker/validation.cjs.map +0 -1
- package/build/cjs/components/datepicker/validation.d.cts +0 -4
- package/build/cjs/components/select/NativeSelect.cjs +0 -2
- package/build/cjs/components/select/NativeSelect.cjs.map +0 -1
- package/build/cjs/components/select/NativeSelect.d.cts +0 -3
- package/build/cjs/components/select/select-utils.cjs +0 -2
- package/build/cjs/components/select/select-utils.cjs.map +0 -1
- package/build/cjs/components/select/select-utils.d.cts +0 -2
- package/build/cjs/components/select/types.cjs +0 -2
- package/build/cjs/components/select/types.cjs.map +0 -1
- package/build/cjs/components/select/types.d.cts +0 -66
- package/build/cjs/hooks/useAnimatedDetails/index.cjs +0 -2
- package/build/cjs/hooks/useAnimatedDetails/index.cjs.map +0 -1
- package/build/cjs/hooks/useAnimatedDetails/index.d.cts +0 -1
- package/build/cjs/hooks/useAnimatedDetails/useAnimatedDetails.cjs +0 -2
- package/build/cjs/hooks/useAnimatedDetails/useAnimatedDetails.cjs.map +0 -1
- package/build/cjs/hooks/useAnimatedDetails/useAnimatedDetails.d.cts +0 -21
- package/build/cjs/utilities/validators/isValidDogId/isValidDogId.cjs +0 -2
- package/build/cjs/utilities/validators/isValidDogId/isValidDogId.cjs.map +0 -1
- package/build/cjs/utilities/validators/isValidDogId/isValidDogId.d.cts +0 -7
- package/build/es/components/beta/select/Select.d.ts +0 -3
- package/build/es/components/beta/select/Select.js +0 -2
- package/build/es/components/beta/select/Select.js.map +0 -1
- package/build/es/components/beta/select/index.d.ts +0 -2
- package/build/es/components/beta/select/index.js +0 -2
- package/build/es/components/beta/select/types.d.ts +0 -10
- package/build/es/components/datepicker/DatePicker.d.ts +0 -3
- package/build/es/components/datepicker/DatePicker.js +0 -2
- package/build/es/components/datepicker/DatePicker.js.map +0 -1
- package/build/es/components/datepicker/index.d.ts +0 -4
- package/build/es/components/datepicker/index.js +0 -2
- package/build/es/components/datepicker/index.js.map +0 -1
- package/build/es/components/datepicker/internal/Calendar.d.ts +0 -15
- package/build/es/components/datepicker/internal/Calendar.js +0 -2
- package/build/es/components/datepicker/internal/Calendar.js.map +0 -1
- package/build/es/components/datepicker/internal/calendarReducer.d.ts +0 -18
- package/build/es/components/datepicker/internal/calendarReducer.js +0 -2
- package/build/es/components/datepicker/internal/calendarReducer.js.map +0 -1
- package/build/es/components/datepicker/internal/useCalendar.d.ts +0 -59
- package/build/es/components/datepicker/internal/useCalendar.js +0 -2
- package/build/es/components/datepicker/internal/useCalendar.js.map +0 -1
- package/build/es/components/datepicker/internal/utils.d.ts +0 -167
- package/build/es/components/datepicker/internal/utils.js +0 -2
- package/build/es/components/datepicker/internal/utils.js.map +0 -1
- package/build/es/components/datepicker/types.d.ts +0 -280
- package/build/es/components/datepicker/utils.d.ts +0 -22
- package/build/es/components/datepicker/utils.js +0 -2
- package/build/es/components/datepicker/utils.js.map +0 -1
- package/build/es/components/datepicker/validation.d.ts +0 -4
- package/build/es/components/datepicker/validation.js +0 -2
- package/build/es/components/datepicker/validation.js.map +0 -1
- package/build/es/components/select/NativeSelect.d.ts +0 -3
- package/build/es/components/select/NativeSelect.js +0 -2
- package/build/es/components/select/NativeSelect.js.map +0 -1
- package/build/es/components/select/select-utils.d.ts +0 -2
- package/build/es/components/select/select-utils.js +0 -2
- package/build/es/components/select/select-utils.js.map +0 -1
- package/build/es/components/select/types.d.ts +0 -66
- package/build/es/components/select/types.js +0 -2
- package/build/es/components/select/types.js.map +0 -1
- package/build/es/hooks/useAnimatedDetails/index.d.ts +0 -1
- package/build/es/hooks/useAnimatedDetails/index.js +0 -2
- package/build/es/hooks/useAnimatedDetails/index.js.map +0 -1
- package/build/es/hooks/useAnimatedDetails/useAnimatedDetails.d.ts +0 -21
- package/build/es/hooks/useAnimatedDetails/useAnimatedDetails.js +0 -2
- package/build/es/hooks/useAnimatedDetails/useAnimatedDetails.js.map +0 -1
- package/build/es/utilities/validators/isValidDogId/isValidDogId.d.ts +0 -7
- package/build/es/utilities/validators/isValidDogId/isValidDogId.js +0 -2
- package/build/es/utilities/validators/isValidDogId/isValidDogId.js.map +0 -1
- package/build/utils-C5AH4j8B.js +0 -2
- package/build/utils-C5AH4j8B.js.map +0 -1
- package/build/utils-CD_aHC6R.cjs +0 -2
- package/build/utils-CD_aHC6R.cjs.map +0 -1
- package/src/fonts/Fremtind-Material-Symbols.woff2 +0 -0
- package/src/fonts/brands/fremtind/Fremtind-Material-Symbols.woff2 +0 -0
- package/styles/components/beta/select/_index.scss +0 -3
- package/styles/components/beta/select/select.css +0 -101
- package/styles/components/beta/select/select.min.css +0 -1
- package/styles/components/beta/select/select.scss +0 -99
- package/styles/components/datepicker/_calendar-date-button.scss +0 -72
- package/styles/components/datepicker/_calendar-navigation-dropdown.scss +0 -55
- package/styles/components/datepicker/_calendar-navigation.scss +0 -14
- package/styles/components/datepicker/_calendar-table.scss +0 -29
- package/styles/components/datepicker/_calendar.scss +0 -28
- package/styles/components/datepicker/_index.scss +0 -6
- package/styles/components/datepicker/datepicker.css +0 -246
- package/styles/components/datepicker/datepicker.min.css +0 -1
- package/styles/components/datepicker/datepicker.scss +0 -49
- /package/build/cjs/components/{beta/select → date-input/calendar}/types.cjs +0 -0
- /package/build/cjs/components/{beta/select → date-input/calendar}/types.cjs.map +0 -0
- /package/build/cjs/components/{beta/select → date-input}/index.cjs.map +0 -0
- /package/build/cjs/components/{datepicker → date-input}/types.cjs +0 -0
- /package/build/cjs/components/{datepicker → date-input}/types.cjs.map +0 -0
- /package/build/es/components/{beta/select → date-input/calendar}/types.js +0 -0
- /package/build/es/components/{beta/select → date-input/calendar}/types.js.map +0 -0
- /package/build/es/components/{beta/select → date-input}/index.js.map +0 -0
- /package/build/es/components/{datepicker → date-input}/types.js +0 -0
- /package/build/es/components/{datepicker → date-input}/types.js.map +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{formatNumber as
|
|
1
|
+
import{formatNumber as m}from"./util/formatNumber.js";import{parseNumber as r}from"./util/parseNumber.js";import{registerWithMasks as a}from"./util/registerWithMask.js";import{formatAvstand as s}from"./avstand/formatAvstand.js";import{formatBytes as o}from"./bytes/formatBytes.js";import{formatDate as t}from"./date/formatDate.js";import{FODSELSNUMMER_REGEX as e,formatFodselsnummer as f}from"./fodselsnummer/formatFodselsnummer.js";import{ORGANISASJONSNUMMER_REGEX as n,formatOrganisasjonsnummer as E}from"./organisasjonsnummer/formatOrganisasjonsnummer.js";import{KONTONUMMER_REGEX as u,formatKontonummer as i}from"./kontonummer/formatKontonummer.js";import{KORTNUMMER_REGEX as N,formatKortnummer as R}from"./kortnummer/formatKortnummer.js";import{TELEFONNUMMER_REGEX as M,formatTelefonnummer as O}from"./telefonnummer/formatTelefonnummer.js";import{formatValuta as j}from"./valuta/formatValuta.js";export{e as FODSELSNUMMER_REGEX,u as KONTONUMMER_REGEX,N as KORTNUMMER_REGEX,n as ORGANISASJONSNUMMER_REGEX,M as TELEFONNUMMER_REGEX,s as formatAvstand,o as formatBytes,t as formatDate,f as formatFodselsnummer,i as formatKontonummer,R as formatKortnummer,m as formatNumber,E as formatOrganisasjonsnummer,O as formatTelefonnummer,j as formatValuta,r as parseNumber,a as registerWithMasks};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -17,14 +17,6 @@ declare const formatters: {
|
|
|
17
17
|
};
|
|
18
18
|
export type Formatter = keyof typeof formatters;
|
|
19
19
|
export type RegisterWithMaskOptions<T extends FieldValues> = Omit<RegisterOptions<T>, "setValueAs">;
|
|
20
|
-
/** @deprecated Bruk `registerWithMasks` i stedet */
|
|
21
|
-
export declare const registerWithFodselsnummerMask: <T extends FieldValues>(form: UseFormReturn<T>, name: Path<T>, options?: RegisterWithMaskOptions<T>) => UseFormRegisterReturn<Path<T>> & Record<string, unknown>;
|
|
22
|
-
/** @deprecated Bruk `registerWithMasks` i stedet */
|
|
23
|
-
export declare const registerWithKortnummerMask: <T extends FieldValues>(form: UseFormReturn<T>, name: Path<T>, options?: RegisterWithMaskOptions<T>) => UseFormRegisterReturn<Path<T>> & Record<string, unknown>;
|
|
24
|
-
/** @deprecated Bruk `registerWithMasks` i stedet */
|
|
25
|
-
export declare const registerWithKontonummerMask: <T extends FieldValues>(form: UseFormReturn<T>, name: Path<T>, options?: RegisterWithMaskOptions<T>) => UseFormRegisterReturn<Path<T>> & Record<string, unknown>;
|
|
26
|
-
/** @deprecated Bruk `registerWithMasks` i stedet */
|
|
27
|
-
export declare const registerWithTelefonnummerMask: <T extends FieldValues>(form: UseFormReturn<T>, name: Path<T>, options?: RegisterWithMaskOptions<T>) => UseFormRegisterReturn<Path<T>> & Record<string, unknown>;
|
|
28
20
|
/**
|
|
29
21
|
* Hjelpefunksjon for React Hook Form som lar deg bruke formateringsfunksjonene i denne pakken som inputmasker.
|
|
30
22
|
*/
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{formatDateString as e}from"../date/formatDate.js";import{formatFodselsnummer as
|
|
1
|
+
import{formatDateString as e}from"../date/formatDate.js";import{formatFodselsnummer as t}from"../fodselsnummer/formatFodselsnummer.js";import{formatKontonummer as r}from"../kontonummer/formatKontonummer.js";import{formatKortnummer as m}from"../kortnummer/formatKortnummer.js";import{formatOrganisasjonsnummer as n}from"../organisasjonsnummer/formatOrganisasjonsnummer.js";import{formatTelefonnummer as s}from"../telefonnummer/formatTelefonnummer.js";import{formatNumber as o}from"./formatNumber.js";const a={date:e,fodselsnummer:t,kortnummer:m,kontonummer:r,telefonnummer:s,number:o,organisasjonsnummer:n},i=e=>(t,r,m)=>{let n=0,s="",o="";const i={setValueAs:e=>e.replace(/\s/g,""),onChange:i=>{m?.onChange?.(i);let u=0;const l=i.target.value.length;null!==i.target.selectionStart&&(u=i.target.selectionStart);const f=a[e](i.target.value,{partial:!0}),g=f.toString().length;t.setValue(r,f);let c=null;if(["Delete","Backspace"].includes(s)){const e=n-u,t=""===o.trim()?0:g-l;c=n-e+t}else if(u<i.target.value.length||l!==g){c=u+(g-l)}if(null!==c){const e=((e,t,r)=>Math.min(Math.max(e,t),r))(c,0,g);i.target.setSelectionRange(e,e,void 0)}}};m&&Object.assign(i,m);const u=t.register(r,i);return Object.assign(u,{onKeyDown:e=>{o="";const t=e.target,{selectionStart:r,selectionEnd:m,value:a}=t;null!==r&&(n=r,null!==m&&m>r?o=a.slice(r,m):"Backspace"===e.key?o=a[n-1]??"":"Delete"===e.key&&(o=a[n]??"")),s=e.key}})},u=e=>({registerWithFodselsnummerMask:(t,r)=>i("fodselsnummer")(e,t,r),registerWithKortnummerMask:(t,r)=>i("kortnummer")(e,t,r),registerWithKontonummerMask:(t,r)=>i("kontonummer")(e,t,r),registerWithTelefonnummerMask:(t,r)=>i("telefonnummer")(e,t,r),registerWithOrganisasjonsnummerMask:(t,r)=>i("organisasjonsnummer")(e,t,r),registerWithDateMask:(t,r)=>i("date")(e,t,r),registerWithNumber:(t,r)=>i("number")(e,t,r)});export{u as registerWithMasks};
|
|
2
2
|
//# sourceMappingURL=registerWithMask.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registerWithMask.js","sources":["../../../../../src/utilities/formatters/util/registerWithMask.ts"],"sourcesContent":["import type { ChangeEvent, KeyboardEventHandler } from \"react\";\nimport type {\n FieldValues,\n Path,\n PathValue,\n RegisterOptions,\n UseFormRegisterReturn,\n UseFormReturn,\n} from \"react-hook-form\";\nimport { formatDateString } from \"../date/formatDate.js\";\nimport { formatFodselsnummer } from \"../fodselsnummer/formatFodselsnummer.js\";\nimport { formatKontonummer } from \"../kontonummer/formatKontonummer.js\";\nimport { formatKortnummer } from \"../kortnummer/formatKortnummer.js\";\nimport { formatOrganisasjonsnummer } from \"../organisasjonsnummer/formatOrganisasjonsnummer.js\";\nimport { formatTelefonnummer } from \"../telefonnummer/formatTelefonnummer.js\";\nimport { formatNumber } from \"./formatNumber.js\";\n\nconst formatters = {\n date: formatDateString,\n fodselsnummer: formatFodselsnummer,\n kortnummer: formatKortnummer,\n kontonummer: formatKontonummer,\n telefonnummer: formatTelefonnummer,\n number: formatNumber,\n organisasjonsnummer: formatOrganisasjonsnummer,\n};\nexport type Formatter = keyof typeof formatters;\n\nconst clamp = (value: number, min: number, max: number) =>\n Math.min(Math.max(value, min), max);\n\nexport type RegisterWithMaskOptions<T extends FieldValues> = Omit<\n RegisterOptions<T>,\n \"setValueAs\"\n>;\n\nconst registerWithMask =\n (formatter: Formatter) =>\n <T extends FieldValues>(\n form: UseFormReturn<T>,\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ) => {\n let onKeyDownCaretPosition = 0;\n let onKeyDownKeyPressed = \"\";\n let deletedCharactersOnKeyDown = \"\";\n\n const setValueAs = (value: string) => value.replace(/\\s/g, \"\");\n const onChange = (event: ChangeEvent<HTMLInputElement>) => {\n options?.onChange?.(event);\n\n // save some values before event.target.value change\n let onChangeCaretPosition = 0;\n const inputLength = event.target.value.length;\n\n // type checking formalities\n if (event.target.selectionStart !== null) {\n onChangeCaretPosition = event.target.selectionStart;\n }\n\n const formattedValue = formatters[formatter](event.target.value, {\n partial: true,\n });\n const formattedLength = formattedValue.toString().length;\n\n form.setValue(name, formattedValue as PathValue<T, Path<T>>);\n\n let newPosition: number | null = null;\n\n if ([\"Delete\", \"Backspace\"].includes(onKeyDownKeyPressed)) {\n // handle removing content\n // calculate how much to move the caret, this also accounts for removing sections of text\n const delta = onKeyDownCaretPosition - onChangeCaretPosition;\n const formattedLengthChange =\n deletedCharactersOnKeyDown.trim() === \"\"\n ? 0\n : formattedLength - inputLength;\n\n // calculate new caret position (- because we move backwards)\n newPosition =\n onKeyDownCaretPosition - delta + formattedLengthChange;\n } else if (\n onChangeCaretPosition < event.target.value.length ||\n inputLength !== formattedLength\n ) {\n // handle adding content from inside the string\n // calculate how much to move the caret forwards\n const delta = formattedLength - inputLength;\n\n // calculate new caret position (+ because we move forwards)\n newPosition = onChangeCaretPosition + delta;\n }\n\n if (newPosition !== null) {\n const clampedPosition = clamp(newPosition, 0, formattedLength);\n\n event.target.setSelectionRange(\n clampedPosition,\n clampedPosition,\n undefined,\n );\n }\n };\n\n const registerOptions: RegisterOptions<T, Path<T>> = {\n setValueAs,\n onChange,\n };\n if (options) {\n Object.assign(registerOptions, options);\n }\n const register = form.register(name, registerOptions);\n\n // save the caret position before the change occured\n const onKeyDown: KeyboardEventHandler<HTMLInputElement> = (event) => {\n deletedCharactersOnKeyDown = \"\";\n\n const input = event.target as HTMLInputElement;\n const { selectionStart, selectionEnd, value } = input;\n\n if (selectionStart !== null) {\n onKeyDownCaretPosition = selectionStart;\n\n if (selectionEnd !== null && selectionEnd > selectionStart) {\n deletedCharactersOnKeyDown = value.slice(\n selectionStart,\n selectionEnd,\n );\n } else if (event.key === \"Backspace\") {\n deletedCharactersOnKeyDown =\n value[onKeyDownCaretPosition - 1] ?? \"\";\n } else if (event.key === \"Delete\") {\n deletedCharactersOnKeyDown =\n value[onKeyDownCaretPosition] ?? \"\";\n }\n }\n onKeyDownKeyPressed = event.key;\n };\n\n // add onKeyDown event handler to the registered input\n const extra: Record<string, unknown> = {\n onKeyDown,\n };\n\n return Object.assign(register, extra);\n };\n\n/** @deprecated Bruk `registerWithMasks` i stedet */\nexport const registerWithFodselsnummerMask = registerWithMask(\"fodselsnummer\");\n/** @deprecated Bruk `registerWithMasks` i stedet */\nexport const registerWithKortnummerMask = registerWithMask(\"kortnummer\");\n/** @deprecated Bruk `registerWithMasks` i stedet */\nexport const registerWithKontonummerMask = registerWithMask(\"kontonummer\");\n/** @deprecated Bruk `registerWithMasks` i stedet */\nexport const registerWithTelefonnummerMask = registerWithMask(\"telefonnummer\");\n\n/**\n * Hjelpefunksjon for React Hook Form som lar deg bruke formateringsfunksjonene i denne pakken som inputmasker.\n */\nexport const registerWithMasks = <T extends FieldValues>(\n form: UseFormReturn<T>,\n) => ({\n registerWithFodselsnummerMask: (\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ): UseFormRegisterReturn =>\n registerWithMask(\"fodselsnummer\")<T>(form, name, options),\n registerWithKortnummerMask: (\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ): UseFormRegisterReturn =>\n registerWithMask(\"kortnummer\")<T>(form, name, options),\n registerWithKontonummerMask: (\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ): UseFormRegisterReturn =>\n registerWithMask(\"kontonummer\")<T>(form, name, options),\n registerWithTelefonnummerMask: (\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ): UseFormRegisterReturn =>\n registerWithMask(\"telefonnummer\")<T>(form, name, options),\n registerWithOrganisasjonsnummerMask: (\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ): UseFormRegisterReturn =>\n registerWithMask(\"organisasjonsnummer\")<T>(form, name, options),\n registerWithDateMask: (\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ): UseFormRegisterReturn =>\n registerWithMask(\"date\")<T>(form, name, options),\n registerWithNumber: (\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ): UseFormRegisterReturn =>\n registerWithMask(\"number\")<T>(form, name, options),\n});\n"],"names":["formatters","date","formatDateString","fodselsnummer","formatFodselsnummer","kortnummer","formatKortnummer","kontonummer","formatKontonummer","telefonnummer","formatTelefonnummer","number","formatNumber","organisasjonsnummer","formatOrganisasjonsnummer","registerWithMask","formatter","form","name","options","onKeyDownCaretPosition","onKeyDownKeyPressed","deletedCharactersOnKeyDown","registerOptions","setValueAs","value","replace","onChange","event","onChangeCaretPosition","inputLength","target","length","selectionStart","formattedValue","partial","formattedLength","toString","setValue","newPosition","includes","delta","formattedLengthChange","trim","clampedPosition","min","max","Math","clamp","setSelectionRange","Object","assign","register","onKeyDown","input","selectionEnd","slice","key","registerWithFodselsnummerMask","registerWithKortnummerMask","registerWithKontonummerMask","registerWithTelefonnummerMask","registerWithMasks","registerWithOrganisasjonsnummerMask","registerWithDateMask","registerWithNumber"],"mappings":"mfAiBA,MAAMA,EAAa,CACfC,KAAMC,EACNC,cAAeC,EACfC,WAAYC,EACZC,YAAaC,EACbC,cAAeC,EACfC,OAAQC,EACRC,oBAAqBC,GAYnBC,EACDC,GACD,CACIC,EACAC,EACAC,KAEA,IAAIC,EAAyB,EACzBC,EAAsB,GACtBC,EAA6B,GA2DjC,MAAMC,EAA+C,CACjDC,WA1DgBC,GAAkBA,EAAMC,QAAQ,MAAO,IA2DvDC,SA1DcC,IACdT,GAASQ,WAAWC,GAGpB,IAAIC,EAAwB,EAC5B,MAAMC,EAAcF,EAAMG,OAAON,MAAMO,OAGH,OAAhCJ,EAAMG,OAAOE,iBACbJ,EAAwBD,EAAMG,OAAOE,gBAGzC,MAAMC,EAAiBlC,EAAWgB,GAAWY,EAAMG,OAAON,MAAO,CAC7DU,SAAS,IAEPC,EAAkBF,EAAeG,WAAWL,OAElDf,EAAKqB,SAASpB,EAAMgB,GAEpB,IAAIK,EAA6B,KAEjC,GAAI,CAAC,SAAU,aAAaC,SAASnB,GAAsB,CAGvD,MAAMoB,EAAQrB,EAAyBS,EACjCa,EACoC,KAAtCpB,EAA2BqB,OACrB,EACAP,EAAkBN,EAG5BS,EACInB,EAAyBqB,EAAQC,CACzC,SACIb,EAAwBD,EAAMG,OAAON,MAAMO,QAC3CF,IAAgBM,EAClB,CAMEG,EAAcV,GAHAO,EAAkBN,EAIpC,CAEA,GAAoB,OAAhBS,EAAsB,CACtB,MAAMK,EAlER,EAACnB,EAAeoB,EAAaC,IACvCC,KAAKF,IAAIE,KAAKD,IAAIrB,EAAOoB,GAAMC,GAiEKE,CAAMT,EAAa,EAAGH,GAE9CR,EAAMG,OAAOkB,kBACTL,EACAA,OACA,EAER,IAOAzB,GACA+B,OAAOC,OAAO5B,EAAiBJ,GAEnC,MAAMiC,EAAWnC,EAAKmC,SAASlC,EAAMK,GAiCrC,OAAO2B,OAAOC,OAAOC,EAJkB,CACnCC,UA3BuDzB,IACvDN,EAA6B,GAE7B,MAAMgC,EAAQ1B,EAAMG,QACZE,eAAAA,EAAgBsB,aAAAA,EAAc9B,MAAAA,GAAU6B,EAEzB,OAAnBrB,IACAb,EAAyBa,EAEJ,OAAjBsB,GAAyBA,EAAetB,EACxCX,EAA6BG,EAAM+B,MAC/BvB,EACAsB,GAEiB,cAAd3B,EAAM6B,IACbnC,EACIG,EAAML,EAAyB,IAAM,GACpB,WAAdQ,EAAM6B,MACbnC,EACIG,EAAML,IAA2B,KAG7CC,EAAsBO,EAAM6B,QAY3BC,EAAgC3C,EAAiB,iBAEjD4C,EAA6B5C,EAAiB,cAE9C6C,EAA8B7C,EAAiB,eAE/C8C,EAAgC9C,EAAiB,iBAKjD+C,EACT7C,IAAAA,CAEAyC,8BAA+B,CAC3BxC,EACAC,IAEAJ,EAAiB,gBAAjBA,CAAqCE,EAAMC,EAAMC,GACrDwC,2BAA4B,CACxBzC,EACAC,IAEAJ,EAAiB,aAAjBA,CAAkCE,EAAMC,EAAMC,GAClDyC,4BAA6B,CACzB1C,EACAC,IAEAJ,EAAiB,cAAjBA,CAAmCE,EAAMC,EAAMC,GACnD0C,8BAA+B,CAC3B3C,EACAC,IAEAJ,EAAiB,gBAAjBA,CAAqCE,EAAMC,EAAMC,GACrD4C,oCAAqC,CACjC7C,EACAC,IAEAJ,EAAiB,sBAAjBA,CAA2CE,EAAMC,EAAMC,GAC3D6C,qBAAsB,CAClB9C,EACAC,IAEAJ,EAAiB,OAAjBA,CAA4BE,EAAMC,EAAMC,GAC5C8C,mBAAoB,CAChB/C,EACAC,IAEAJ,EAAiB,SAAjBA,CAA8BE,EAAMC,EAAMC"}
|
|
1
|
+
{"version":3,"file":"registerWithMask.js","sources":["../../../../../src/utilities/formatters/util/registerWithMask.ts"],"sourcesContent":["import type { ChangeEvent, KeyboardEventHandler } from \"react\";\nimport type {\n FieldValues,\n Path,\n PathValue,\n RegisterOptions,\n UseFormRegisterReturn,\n UseFormReturn,\n} from \"react-hook-form\";\nimport { formatDateString } from \"../date/formatDate.js\";\nimport { formatFodselsnummer } from \"../fodselsnummer/formatFodselsnummer.js\";\nimport { formatKontonummer } from \"../kontonummer/formatKontonummer.js\";\nimport { formatKortnummer } from \"../kortnummer/formatKortnummer.js\";\nimport { formatOrganisasjonsnummer } from \"../organisasjonsnummer/formatOrganisasjonsnummer.js\";\nimport { formatTelefonnummer } from \"../telefonnummer/formatTelefonnummer.js\";\nimport { formatNumber } from \"./formatNumber.js\";\n\nconst formatters = {\n date: formatDateString,\n fodselsnummer: formatFodselsnummer,\n kortnummer: formatKortnummer,\n kontonummer: formatKontonummer,\n telefonnummer: formatTelefonnummer,\n number: formatNumber,\n organisasjonsnummer: formatOrganisasjonsnummer,\n};\nexport type Formatter = keyof typeof formatters;\n\nconst clamp = (value: number, min: number, max: number) =>\n Math.min(Math.max(value, min), max);\n\nexport type RegisterWithMaskOptions<T extends FieldValues> = Omit<\n RegisterOptions<T>,\n \"setValueAs\"\n>;\n\nconst registerWithMask =\n (formatter: Formatter) =>\n <T extends FieldValues>(\n form: UseFormReturn<T>,\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ) => {\n let onKeyDownCaretPosition = 0;\n let onKeyDownKeyPressed = \"\";\n let deletedCharactersOnKeyDown = \"\";\n\n const setValueAs = (value: string) => value.replace(/\\s/g, \"\");\n const onChange = (event: ChangeEvent<HTMLInputElement>) => {\n options?.onChange?.(event);\n\n // save some values before event.target.value change\n let onChangeCaretPosition = 0;\n const inputLength = event.target.value.length;\n\n // type checking formalities\n if (event.target.selectionStart !== null) {\n onChangeCaretPosition = event.target.selectionStart;\n }\n\n const formattedValue = formatters[formatter](event.target.value, {\n partial: true,\n });\n const formattedLength = formattedValue.toString().length;\n\n form.setValue(name, formattedValue as PathValue<T, Path<T>>);\n\n let newPosition: number | null = null;\n\n if ([\"Delete\", \"Backspace\"].includes(onKeyDownKeyPressed)) {\n // handle removing content\n // calculate how much to move the caret, this also accounts for removing sections of text\n const delta = onKeyDownCaretPosition - onChangeCaretPosition;\n const formattedLengthChange =\n deletedCharactersOnKeyDown.trim() === \"\"\n ? 0\n : formattedLength - inputLength;\n\n // calculate new caret position (- because we move backwards)\n newPosition =\n onKeyDownCaretPosition - delta + formattedLengthChange;\n } else if (\n onChangeCaretPosition < event.target.value.length ||\n inputLength !== formattedLength\n ) {\n // handle adding content from inside the string\n // calculate how much to move the caret forwards\n const delta = formattedLength - inputLength;\n\n // calculate new caret position (+ because we move forwards)\n newPosition = onChangeCaretPosition + delta;\n }\n\n if (newPosition !== null) {\n const clampedPosition = clamp(newPosition, 0, formattedLength);\n\n event.target.setSelectionRange(\n clampedPosition,\n clampedPosition,\n undefined,\n );\n }\n };\n\n const registerOptions: RegisterOptions<T, Path<T>> = {\n setValueAs,\n onChange,\n };\n if (options) {\n Object.assign(registerOptions, options);\n }\n const register = form.register(name, registerOptions);\n\n // save the caret position before the change occured\n const onKeyDown: KeyboardEventHandler<HTMLInputElement> = (event) => {\n deletedCharactersOnKeyDown = \"\";\n\n const input = event.target as HTMLInputElement;\n const { selectionStart, selectionEnd, value } = input;\n\n if (selectionStart !== null) {\n onKeyDownCaretPosition = selectionStart;\n\n if (selectionEnd !== null && selectionEnd > selectionStart) {\n deletedCharactersOnKeyDown = value.slice(\n selectionStart,\n selectionEnd,\n );\n } else if (event.key === \"Backspace\") {\n deletedCharactersOnKeyDown =\n value[onKeyDownCaretPosition - 1] ?? \"\";\n } else if (event.key === \"Delete\") {\n deletedCharactersOnKeyDown =\n value[onKeyDownCaretPosition] ?? \"\";\n }\n }\n onKeyDownKeyPressed = event.key;\n };\n\n // add onKeyDown event handler to the registered input\n const extra: Record<string, unknown> = {\n onKeyDown,\n };\n\n return Object.assign(register, extra);\n };\n\n/**\n * Hjelpefunksjon for React Hook Form som lar deg bruke formateringsfunksjonene i denne pakken som inputmasker.\n */\nexport const registerWithMasks = <T extends FieldValues>(\n form: UseFormReturn<T>,\n) => ({\n registerWithFodselsnummerMask: (\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ): UseFormRegisterReturn =>\n registerWithMask(\"fodselsnummer\")<T>(form, name, options),\n registerWithKortnummerMask: (\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ): UseFormRegisterReturn =>\n registerWithMask(\"kortnummer\")<T>(form, name, options),\n registerWithKontonummerMask: (\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ): UseFormRegisterReturn =>\n registerWithMask(\"kontonummer\")<T>(form, name, options),\n registerWithTelefonnummerMask: (\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ): UseFormRegisterReturn =>\n registerWithMask(\"telefonnummer\")<T>(form, name, options),\n registerWithOrganisasjonsnummerMask: (\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ): UseFormRegisterReturn =>\n registerWithMask(\"organisasjonsnummer\")<T>(form, name, options),\n registerWithDateMask: (\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ): UseFormRegisterReturn =>\n registerWithMask(\"date\")<T>(form, name, options),\n registerWithNumber: (\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ): UseFormRegisterReturn =>\n registerWithMask(\"number\")<T>(form, name, options),\n});\n"],"names":["formatters","date","formatDateString","fodselsnummer","formatFodselsnummer","kortnummer","formatKortnummer","kontonummer","formatKontonummer","telefonnummer","formatTelefonnummer","number","formatNumber","organisasjonsnummer","formatOrganisasjonsnummer","registerWithMask","formatter","form","name","options","onKeyDownCaretPosition","onKeyDownKeyPressed","deletedCharactersOnKeyDown","registerOptions","setValueAs","value","replace","onChange","event","onChangeCaretPosition","inputLength","target","length","selectionStart","formattedValue","partial","formattedLength","toString","setValue","newPosition","includes","delta","formattedLengthChange","trim","clampedPosition","min","max","Math","clamp","setSelectionRange","Object","assign","register","onKeyDown","input","selectionEnd","slice","key","registerWithMasks","registerWithFodselsnummerMask","registerWithKortnummerMask","registerWithKontonummerMask","registerWithTelefonnummerMask","registerWithOrganisasjonsnummerMask","registerWithDateMask","registerWithNumber"],"mappings":"mfAiBA,MAAMA,EAAa,CACfC,KAAMC,EACNC,cAAeC,EACfC,WAAYC,EACZC,YAAaC,EACbC,cAAeC,EACfC,OAAQC,EACRC,oBAAqBC,GAYnBC,EACDC,GACD,CACIC,EACAC,EACAC,KAEA,IAAIC,EAAyB,EACzBC,EAAsB,GACtBC,EAA6B,GA2DjC,MAAMC,EAA+C,CACjDC,WA1DgBC,GAAkBA,EAAMC,QAAQ,MAAO,IA2DvDC,SA1DcC,IACdT,GAASQ,WAAWC,GAGpB,IAAIC,EAAwB,EAC5B,MAAMC,EAAcF,EAAMG,OAAON,MAAMO,OAGH,OAAhCJ,EAAMG,OAAOE,iBACbJ,EAAwBD,EAAMG,OAAOE,gBAGzC,MAAMC,EAAiBlC,EAAWgB,GAAWY,EAAMG,OAAON,MAAO,CAC7DU,SAAS,IAEPC,EAAkBF,EAAeG,WAAWL,OAElDf,EAAKqB,SAASpB,EAAMgB,GAEpB,IAAIK,EAA6B,KAEjC,GAAI,CAAC,SAAU,aAAaC,SAASnB,GAAsB,CAGvD,MAAMoB,EAAQrB,EAAyBS,EACjCa,EACoC,KAAtCpB,EAA2BqB,OACrB,EACAP,EAAkBN,EAG5BS,EACInB,EAAyBqB,EAAQC,CACzC,SACIb,EAAwBD,EAAMG,OAAON,MAAMO,QAC3CF,IAAgBM,EAClB,CAMEG,EAAcV,GAHAO,EAAkBN,EAIpC,CAEA,GAAoB,OAAhBS,EAAsB,CACtB,MAAMK,EAlER,EAACnB,EAAeoB,EAAaC,IACvCC,KAAKF,IAAIE,KAAKD,IAAIrB,EAAOoB,GAAMC,GAiEKE,CAAMT,EAAa,EAAGH,GAE9CR,EAAMG,OAAOkB,kBACTL,EACAA,OACA,EAER,IAOAzB,GACA+B,OAAOC,OAAO5B,EAAiBJ,GAEnC,MAAMiC,EAAWnC,EAAKmC,SAASlC,EAAMK,GAiCrC,OAAO2B,OAAOC,OAAOC,EAJkB,CACnCC,UA3BuDzB,IACvDN,EAA6B,GAE7B,MAAMgC,EAAQ1B,EAAMG,QACZE,eAAAA,EAAgBsB,aAAAA,EAAc9B,MAAAA,GAAU6B,EAEzB,OAAnBrB,IACAb,EAAyBa,EAEJ,OAAjBsB,GAAyBA,EAAetB,EACxCX,EAA6BG,EAAM+B,MAC/BvB,EACAsB,GAEiB,cAAd3B,EAAM6B,IACbnC,EACIG,EAAML,EAAyB,IAAM,GACpB,WAAdQ,EAAM6B,MACbnC,EACIG,EAAML,IAA2B,KAG7CC,EAAsBO,EAAM6B,QAc3BC,EACTzC,IAAAA,CAEA0C,8BAA+B,CAC3BzC,EACAC,IAEAJ,EAAiB,gBAAjBA,CAAqCE,EAAMC,EAAMC,GACrDyC,2BAA4B,CACxB1C,EACAC,IAEAJ,EAAiB,aAAjBA,CAAkCE,EAAMC,EAAMC,GAClD0C,4BAA6B,CACzB3C,EACAC,IAEAJ,EAAiB,cAAjBA,CAAmCE,EAAMC,EAAMC,GACnD2C,8BAA+B,CAC3B5C,EACAC,IAEAJ,EAAiB,gBAAjBA,CAAqCE,EAAMC,EAAMC,GACrD4C,oCAAqC,CACjC7C,EACAC,IAEAJ,EAAiB,sBAAjBA,CAA2CE,EAAMC,EAAMC,GAC3D6C,qBAAsB,CAClB9C,EACAC,IAEAJ,EAAiB,OAAjBA,CAA4BE,EAAMC,EAAMC,GAC5C8C,mBAAoB,CAChB/C,EACAC,IAEAJ,EAAiB,SAAjBA,CAA8BE,EAAMC,EAAMC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{u as s}from"../../index-C1iqmqvT.js";import{formatNumber as a}from"./formatters/util/formatNumber.js";import{parseNumber as r}from"./formatters/util/parseNumber.js";import{
|
|
1
|
+
import{u as s}from"../../index-C1iqmqvT.js";import{formatNumber as a}from"./formatters/util/formatNumber.js";import{parseNumber as r}from"./formatters/util/parseNumber.js";import{registerWithMasks as m}from"./formatters/util/registerWithMask.js";import{formatAvstand as e}from"./formatters/avstand/formatAvstand.js";import{formatBytes as o}from"./formatters/bytes/formatBytes.js";import{formatDate as t}from"./formatters/date/formatDate.js";import{FODSELSNUMMER_REGEX as i,formatFodselsnummer as n}from"./formatters/fodselsnummer/formatFodselsnummer.js";import{ORGANISASJONSNUMMER_REGEX as f,formatOrganisasjonsnummer as l}from"./formatters/organisasjonsnummer/formatOrganisasjonsnummer.js";import{KONTONUMMER_REGEX as u,formatKontonummer as d}from"./formatters/kontonummer/formatKontonummer.js";import{KORTNUMMER_REGEX as p,formatKortnummer as g}from"./formatters/kortnummer/formatKortnummer.js";import{TELEFONNUMMER_REGEX as E,formatTelefonnummer as j}from"./formatters/telefonnummer/formatTelefonnummer.js";import{formatValuta as R}from"./formatters/valuta/formatValuta.js";import{getThemeAndSize as N}from"./getThemeAndSize.js";import{mergeRefs as V,useMergeRefs as M}from"./mergeRefs.js";import{mergeProps as h}from"./polymorphism/mergeProps.js";import{SlotComponent as O}from"./polymorphism/SlotComponent.js";import{initTabListener as S}from"./tabListener.js";import{isValidEpost as T}from"./validators/isValidEpost/isValidEpost.js";import{isValidTelefonnummer as v}from"./validators/isValidTelefonnummer/isValidTelefonnummer.js";import{isValidRegistreringsnummer as A}from"./validators/isValidRegistreringsnummer/isValidRegistreringsnummer.js";import{isValidChassisnummer as G}from"./validators/isValidChassisnummer/isValidChassisnummer.js";import{isExactLength as C}from"./validators/isExactLength/isExactLength.js";import{isInteger as F}from"./validators/isInteger/isInteger.js";import{isValidFodselsnummer as L}from"./validators/isValidFodselsnummer/isValidFodselsnummer.js";import{isValidOrganisasjonsnummer as b}from"./validators/isValidOrganisasjonsnummer/isValidOrganisasjonsnummer.js";import{isValidName as I}from"./validators/isValidName/isValidName.js";import{hasMinimumWords as K}from"./validators/hasMinimumWords/hasMinimumWords.js";import{hasNoIllegalCharacters as U}from"./validators/hasNoIllegalCharacters/hasNoIllegalCharacters.js";import{getValuePair as X}from"./valuePair.js";import{BRANDS as _}from"./types.js";export{_ as BRANDS,i as FODSELSNUMMER_REGEX,u as KONTONUMMER_REGEX,p as KORTNUMMER_REGEX,f as ORGANISASJONSNUMMER_REGEX,O as SlotComponent,E as TELEFONNUMMER_REGEX,e as formatAvstand,o as formatBytes,t as formatDate,n as formatFodselsnummer,d as formatKontonummer,g as formatKortnummer,a as formatNumber,l as formatOrganisasjonsnummer,j as formatTelefonnummer,R as formatValuta,N as getThemeAndSize,X as getValuePair,K as hasMinimumWords,U as hasNoIllegalCharacters,S as initTabListener,C as isExactLength,F as isInteger,G as isValidChassisnummer,T as isValidEpost,L as isValidFodselsnummer,I as isValidName,b as isValidOrganisasjonsnummer,A as isValidRegistreringsnummer,v as isValidTelefonnummer,h as mergeProps,V as mergeRefs,r as parseNumber,m as registerWithMasks,s as unicode,M as useMergeRefs};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -2,7 +2,6 @@ export { isValidEpost } from './isValidEpost/isValidEpost.js';
|
|
|
2
2
|
export { isValidTelefonnummer } from './isValidTelefonnummer/isValidTelefonnummer.js';
|
|
3
3
|
export { isValidRegistreringsnummer } from './isValidRegistreringsnummer/isValidRegistreringsnummer.js';
|
|
4
4
|
export { isValidChassisnummer } from './isValidChassisnummer/isValidChassisnummer.js';
|
|
5
|
-
export { isValidDogId } from './isValidDogId/isValidDogId.js';
|
|
6
5
|
export { isExactLength } from './isExactLength/isExactLength.js';
|
|
7
6
|
export { isInteger } from './isInteger/isInteger.js';
|
|
8
7
|
export { isValidFodselsnummer } from './isValidFodselsnummer/isValidFodselsnummer.js';
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{isValidEpost as s}from"./isValidEpost/isValidEpost.js";import{isValidTelefonnummer as i}from"./isValidTelefonnummer/isValidTelefonnummer.js";import{isValidRegistreringsnummer as a}from"./isValidRegistreringsnummer/isValidRegistreringsnummer.js";import{isValidChassisnummer as m}from"./isValidChassisnummer/isValidChassisnummer.js";import{
|
|
1
|
+
import{isValidEpost as s}from"./isValidEpost/isValidEpost.js";import{isValidTelefonnummer as i}from"./isValidTelefonnummer/isValidTelefonnummer.js";import{isValidRegistreringsnummer as a}from"./isValidRegistreringsnummer/isValidRegistreringsnummer.js";import{isValidChassisnummer as m}from"./isValidChassisnummer/isValidChassisnummer.js";import{isExactLength as r}from"./isExactLength/isExactLength.js";import{isInteger as e}from"./isInteger/isInteger.js";import{isValidFodselsnummer as l}from"./isValidFodselsnummer/isValidFodselsnummer.js";import{isValidOrganisasjonsnummer as n}from"./isValidOrganisasjonsnummer/isValidOrganisasjonsnummer.js";import{isValidName as o}from"./isValidName/isValidName.js";import{hasMinimumWords as d}from"./hasMinimumWords/hasMinimumWords.js";import{hasNoIllegalCharacters as t}from"./hasNoIllegalCharacters/hasNoIllegalCharacters.js";export{d as hasMinimumWords,t as hasNoIllegalCharacters,r as isExactLength,e as isInteger,m as isValidChassisnummer,s as isValidEpost,l as isValidFodselsnummer,o as isValidName,n as isValidOrganisasjonsnummer,a as isValidRegistreringsnummer,i as isValidTelefonnummer};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"valuePair.js","sources":["../../../src/utilities/valuePair.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"valuePair.js","sources":["../../../src/utilities/valuePair.ts"],"sourcesContent":["import type { ReactNode } from \"react\";\n\nexport type ValuePair = {\n value: string;\n label: string;\n description?: string;\n media?: ReactNode;\n};\n\nexport function getValuePair(item: string | ValuePair): ValuePair {\n return typeof item === \"string\" ? { value: item, label: item } : item;\n}\n"],"names":["getValuePair","item","value","label"],"mappings":"AASO,SAASA,EAAaC,GACzB,MAAuB,iBAATA,EAAoB,CAAEC,MAAOD,EAAME,MAAOF,GAASA,CACrE"}
|
package/codemods/CODEMODS.md
CHANGED
|
@@ -118,8 +118,59 @@ Tilsvarende omdøping for alle Tailwind v4-fargeklasser generert fra `--color-*`
|
|
|
118
118
|
|
|
119
119
|
Tailwind-modifikatorer (`hover:`, `dark:`, `md:`, `focus:` o.l.), opacity-modifikatorer (`/50`) og viktig-prefiks (`!`) håndteres korrekt.
|
|
120
120
|
|
|
121
|
+
#### DateInput (Jøkul 6)
|
|
122
|
+
|
|
123
|
+
Import path, stilimporter og komponentnavn omdøpes automatisk:
|
|
124
|
+
|
|
125
|
+
| Gammel import | Ny import |
|
|
126
|
+
|---|---|
|
|
127
|
+
| `@fremtind/jokul/datepicker` | `@fremtind/jokul/date-input` |
|
|
128
|
+
| `@fremtind/jokul/date-inputs` | `@fremtind/jokul/date-input` |
|
|
129
|
+
| `@fremtind/jokul/date-picker` | `@fremtind/jokul/date-input` |
|
|
130
|
+
|
|
131
|
+
Stilmappa følger komponentmappa, så både mappe- og filnavn skrives om. Gjelder både `import "..."` og Sass `@use`/`@forward`:
|
|
132
|
+
|
|
133
|
+
| Gammel stilimport | Ny stilimport |
|
|
134
|
+
|---|---|
|
|
135
|
+
| `@fremtind/jokul/styles/components/datepicker` | `@fremtind/jokul/styles/components/date-input` |
|
|
136
|
+
| `@fremtind/jokul/styles/components/datepicker/_index.scss` | `@fremtind/jokul/styles/components/date-input/_index.scss` |
|
|
137
|
+
| `@fremtind/jokul/styles/components/datepicker/datepicker.scss` | `@fremtind/jokul/styles/components/date-input/date-input.scss` |
|
|
138
|
+
| `@fremtind/jokul/styles/components/datepicker/datepicker.css` | `@fremtind/jokul/styles/components/date-input/date-input.css` |
|
|
139
|
+
| `@fremtind/jokul/styles/components/datepicker/datepicker.min.css` | `@fremtind/jokul/styles/components/date-input/date-input.min.css` |
|
|
140
|
+
|
|
141
|
+
De samme variantene håndteres for de eldre mappenavnene `date-picker` og `date-inputs`.
|
|
142
|
+
|
|
143
|
+
| Gammel komponent | Ny komponent |
|
|
144
|
+
|---|---|
|
|
145
|
+
| `DatePicker` | `DateInput` |
|
|
146
|
+
|
|
147
|
+
Prop-navnene som begrenser datovalg omdøpes automatisk:
|
|
148
|
+
|
|
149
|
+
| Gammel prop | Ny prop |
|
|
150
|
+
|---|---|
|
|
151
|
+
| `disableBeforeDate` | `min` |
|
|
152
|
+
| `disableAfterDate` | `max` |
|
|
153
|
+
|
|
154
|
+
Fjernede props endres ikke automatisk, men gir varsel når de finnes i en fil som bruker `DateInput`/`DatePicker`: `defaultShow`, `initialShow`, `extended`, `invalid`, `yearsToShow`, `days`, `months`, `monthLabel`, `yearLabel`, `action`, `showCalendarLabel`, `hideCalendarLabel` og `textInputProps`. Se [MIGRATION.md](../MIGRATION.md#fjernede-props-og-hjelpefunksjoner) for erstatninger.
|
|
155
|
+
|
|
121
156
|
---
|
|
122
157
|
|
|
158
|
+
#### Fjernede maskefunksjoner
|
|
159
|
+
|
|
160
|
+
De frittstående, utgåtte maskefunksjonene er fjernet. Kall og importer skrives om
|
|
161
|
+
til `registerWithMasks(form)`-API-et.
|
|
162
|
+
|
|
163
|
+
| Fjernet funksjon | Erstatning |
|
|
164
|
+
|---|---|
|
|
165
|
+
| `registerWithFodselsnummerMask(form, name, options)` | `registerWithMasks(form).registerWithFodselsnummerMask(name, options)` |
|
|
166
|
+
| `registerWithKontonummerMask(form, name, options)` | `registerWithMasks(form).registerWithKontonummerMask(name, options)` |
|
|
167
|
+
| `registerWithKortnummerMask(form, name, options)` | `registerWithMasks(form).registerWithKortnummerMask(name, options)` |
|
|
168
|
+
| `registerWithTelefonnummerMask(form, name, options)` | `registerWithMasks(form).registerWithTelefonnummerMask(name, options)` |
|
|
169
|
+
|
|
170
|
+
Importer fra `@fremtind/jokul/utilities` (og gamle `@fremtind/jokul/core`) ryddes:
|
|
171
|
+
de fjernede navnene tas ut og `registerWithMasks` legges til. Aliaserte importer
|
|
172
|
+
(`... as x`) migreres ikke automatisk og gir et varsel.
|
|
173
|
+
|
|
123
174
|
### Varsler (krever manuell vurdering)
|
|
124
175
|
|
|
125
176
|
Disse mønstrene kan ikke omdøpes automatisk. Codemoden skriver ut ett varsel per fil der mønsteret finnes.
|
|
@@ -131,3 +182,7 @@ Disse mønstrene kan ikke omdøpes automatisk. Codemoden skriver ut ett varsel p
|
|
|
131
182
|
| `variant="outlined\|high\|low"` (på `Card`) | `variant`-prop er fjernet. Bruk `outlined` (boolean) for ramme, fjern `high`/`low`. |
|
|
132
183
|
| `bg-background-interactive` o.l. (Tailwind) | Fjernede Tailwind-klasser basert på `background-interactive`/`text-interactive`. |
|
|
133
184
|
| `border-border-separator` o.l. (Tailwind) | Fjernede Tailwind-kantklasser. Bruk `border-border-default`, `-subdued` eller `-strong`. |
|
|
185
|
+
| `<DateInput>` | Datoverdier bruker nå ISO-format (`yyyy-mm-dd`), ikke `dd.mm.yyyy`. |
|
|
186
|
+
| `<DateInput>` `onChange` | Gir nå et standard React change-event. Les datoen fra `event.target.value`. |
|
|
187
|
+
| `defaultShow` | Fjernet fra DateInput. Kalenderen åpnes via kalenderknappen. |
|
|
188
|
+
| `extended`, `invalid`, `yearsToShow`, `days`, `months`, `monthLabel`, `yearLabel`, `action`, `showCalendarLabel`, `hideCalendarLabel`, `textInputProps` | Fjernet fra DateInput. Se migrasjonsguiden for erstatninger. |
|
|
@@ -745,3 +745,158 @@ test("ExpandablePanel: håndterer flerlinjet JSX korrekt", () => {
|
|
|
745
745
|
);
|
|
746
746
|
assert.equal(result.changed, true);
|
|
747
747
|
});
|
|
748
|
+
|
|
749
|
+
test("renames DatePicker disable-bound props to min/max", () => {
|
|
750
|
+
const source = `import { DatePicker } from "@fremtind/jokul/date-inputs";
|
|
751
|
+
|
|
752
|
+
<DatePicker
|
|
753
|
+
disableBeforeDate={lower}
|
|
754
|
+
disableAfterDate={upper}
|
|
755
|
+
onChange={(event, date, { error }) => handle(date)}
|
|
756
|
+
/>;
|
|
757
|
+
`;
|
|
758
|
+
|
|
759
|
+
const result = transformImportPaths(source, "/tmp/Form.tsx");
|
|
760
|
+
|
|
761
|
+
assert.equal(result.text.includes("min={lower}"), true);
|
|
762
|
+
assert.equal(result.text.includes("max={upper}"), true);
|
|
763
|
+
assert.equal(result.text.includes("disableBeforeDate"), false);
|
|
764
|
+
assert.equal(result.text.includes("disableAfterDate"), false);
|
|
765
|
+
});
|
|
766
|
+
|
|
767
|
+
test("warns about breaking DatePicker changes that need manual review", () => {
|
|
768
|
+
const source = `import { DatePicker } from "@fremtind/jokul/date-inputs";
|
|
769
|
+
const iso = formatInput(new Date());
|
|
770
|
+
<DatePicker defaultShow onChange={(e, d) => save(d)} />;
|
|
771
|
+
`;
|
|
772
|
+
|
|
773
|
+
const result = transformImportPaths(source, "/tmp/Form.tsx");
|
|
774
|
+
|
|
775
|
+
assert.equal(
|
|
776
|
+
result.warnings.some((w) => w.includes("ISO-datoformat")),
|
|
777
|
+
true,
|
|
778
|
+
);
|
|
779
|
+
assert.equal(
|
|
780
|
+
result.warnings.some((w) => w.includes("event.target.value")),
|
|
781
|
+
true,
|
|
782
|
+
);
|
|
783
|
+
assert.equal(
|
|
784
|
+
result.warnings.some((w) => w.includes("defaultShow")),
|
|
785
|
+
true,
|
|
786
|
+
);
|
|
787
|
+
assert.equal(
|
|
788
|
+
result.warnings.some((w) => w.includes("formatInput")),
|
|
789
|
+
true,
|
|
790
|
+
);
|
|
791
|
+
});
|
|
792
|
+
|
|
793
|
+
test("migrerer DatePicker-stilimporter (ESM import)", () => {
|
|
794
|
+
const source = `import "@fremtind/jokul/styles/components/datepicker/_index.scss";
|
|
795
|
+
import "@fremtind/jokul/styles/components/datepicker/datepicker.min.css";
|
|
796
|
+
import "@fremtind/jokul/styles/components/datepicker/datepicker.css";
|
|
797
|
+
`;
|
|
798
|
+
|
|
799
|
+
const result = transformImportPaths(source, "/tmp/App.tsx");
|
|
800
|
+
|
|
801
|
+
assert.equal(
|
|
802
|
+
result.text,
|
|
803
|
+
`import "@fremtind/jokul/styles/components/date-input/_index.scss";
|
|
804
|
+
import "@fremtind/jokul/styles/components/date-input/date-input.min.css";
|
|
805
|
+
import "@fremtind/jokul/styles/components/date-input/date-input.css";
|
|
806
|
+
`,
|
|
807
|
+
);
|
|
808
|
+
assert.equal(result.text.includes("datepicker"), false);
|
|
809
|
+
});
|
|
810
|
+
|
|
811
|
+
test("migrerer DatePicker-stilimporter (Sass @use/@forward)", () => {
|
|
812
|
+
const source = `@use "@fremtind/jokul/styles/components/datepicker";
|
|
813
|
+
@use "@fremtind/jokul/styles/components/datepicker/datepicker.scss";
|
|
814
|
+
@forward "@fremtind/jokul/styles/components/date-inputs";
|
|
815
|
+
`;
|
|
816
|
+
|
|
817
|
+
const result = transformImportPaths(source, "/tmp/global.scss");
|
|
818
|
+
|
|
819
|
+
assert.equal(
|
|
820
|
+
result.text,
|
|
821
|
+
`@use "@fremtind/jokul/styles/components/date-input";
|
|
822
|
+
@use "@fremtind/jokul/styles/components/date-input/date-input.scss";
|
|
823
|
+
@forward "@fremtind/jokul/styles/components/date-input";
|
|
824
|
+
`,
|
|
825
|
+
);
|
|
826
|
+
assert.deepEqual(result.warnings, []);
|
|
827
|
+
});
|
|
828
|
+
|
|
829
|
+
test("migrerer komponent- og stilimport i samme fil", () => {
|
|
830
|
+
const source = `import { DatePicker } from "@fremtind/jokul/datepicker";
|
|
831
|
+
import "@fremtind/jokul/styles/components/datepicker/_index.scss";
|
|
832
|
+
|
|
833
|
+
<DatePicker defaultValue={value} />;
|
|
834
|
+
`;
|
|
835
|
+
|
|
836
|
+
const result = transformImportPaths(source, "/tmp/Form.tsx");
|
|
837
|
+
|
|
838
|
+
assert.equal(result.text.includes("datepicker"), false);
|
|
839
|
+
assert.equal(
|
|
840
|
+
result.text.includes(
|
|
841
|
+
'import "@fremtind/jokul/styles/components/date-input/_index.scss";',
|
|
842
|
+
),
|
|
843
|
+
true,
|
|
844
|
+
);
|
|
845
|
+
assert.equal(result.text.includes("<DateInput"), true);
|
|
846
|
+
});
|
|
847
|
+
|
|
848
|
+
test("warns about removed DatePicker props", () => {
|
|
849
|
+
const source = `import { DatePicker } from "@fremtind/jokul/datepicker";
|
|
850
|
+
<DatePicker extended yearsToShow={10} textInputProps={{}} action={reset} />;
|
|
851
|
+
`;
|
|
852
|
+
const result = transformImportPaths(source, "/tmp/Form.tsx");
|
|
853
|
+
|
|
854
|
+
for (const prop of [
|
|
855
|
+
"extended",
|
|
856
|
+
"yearsToShow",
|
|
857
|
+
"textInputProps",
|
|
858
|
+
"action",
|
|
859
|
+
]) {
|
|
860
|
+
assert.equal(
|
|
861
|
+
result.warnings.some((w) => w.includes(prop)),
|
|
862
|
+
true,
|
|
863
|
+
);
|
|
864
|
+
}
|
|
865
|
+
});
|
|
866
|
+
|
|
867
|
+
test("does not warn about identifiers that look like removed props", () => {
|
|
868
|
+
const source = `import { DateInput } from "@fremtind/jokul/date-input";
|
|
869
|
+
const months = ["januar"];
|
|
870
|
+
<DateInput aria-invalid={true} label={months[0]} />;
|
|
871
|
+
`;
|
|
872
|
+
const result = transformImportPaths(source, "/tmp/Form.tsx");
|
|
873
|
+
|
|
874
|
+
assert.equal(
|
|
875
|
+
result.warnings.some((w) => w.includes("`months`")),
|
|
876
|
+
false,
|
|
877
|
+
);
|
|
878
|
+
assert.equal(
|
|
879
|
+
result.warnings.some((w) => w.includes("`invalid`")),
|
|
880
|
+
false,
|
|
881
|
+
);
|
|
882
|
+
});
|
|
883
|
+
|
|
884
|
+
test("DateInput: rører ikke like prop-navn på andre komponenter", () => {
|
|
885
|
+
const source =
|
|
886
|
+
"<OtherComponent disableBeforeDate={x} disableAfterDate={y} />;";
|
|
887
|
+
const result = transformImportPaths(source, "src/App.tsx");
|
|
888
|
+
assert.equal(result.text.includes("disableBeforeDate={x}"), true);
|
|
889
|
+
assert.equal(result.text.includes("disableAfterDate={y}"), true);
|
|
890
|
+
});
|
|
891
|
+
|
|
892
|
+
test("DateInput: håndterer piluttrykk i props ved omdøping", () => {
|
|
893
|
+
const source = `<DateInput onChange={(e) => setX(e)} disableBeforeDate={a} />;
|
|
894
|
+
<Other disableAfterDate={b} />;
|
|
895
|
+
`;
|
|
896
|
+
const result = transformImportPaths(source, "src/App.tsx");
|
|
897
|
+
assert.equal(
|
|
898
|
+
result.text.includes("<DateInput onChange={(e) => setX(e)} min={a} />"),
|
|
899
|
+
true,
|
|
900
|
+
);
|
|
901
|
+
assert.equal(result.text.includes("<Other disableAfterDate={b} />"), true);
|
|
902
|
+
});
|
|
@@ -5,6 +5,7 @@ import {
|
|
|
5
5
|
applyCssTokenRenames,
|
|
6
6
|
applyTailwindColorRenames,
|
|
7
7
|
} from "./transforms/color-tokens.mjs";
|
|
8
|
+
import { applyDateInputTransforms } from "./transforms/date-input.mjs";
|
|
8
9
|
import { applyExpandablePanelTransforms } from "./transforms/expandable-panel.mjs";
|
|
9
10
|
import { applyFontFamilyReplacements } from "./transforms/font-family.mjs";
|
|
10
11
|
import {
|
|
@@ -14,6 +15,7 @@ import {
|
|
|
14
15
|
removeRedundantWebfontsCssImport,
|
|
15
16
|
reorderConfiguredFontImport,
|
|
16
17
|
} from "./transforms/import-specifiers.mjs";
|
|
18
|
+
import { applyRegisterWithMaskTransforms } from "./transforms/register-with-mask.mjs";
|
|
17
19
|
import { collectManualMigrationWarnings } from "./transforms/warnings.mjs";
|
|
18
20
|
|
|
19
21
|
const TEXT_EXTENSIONS = new Set([
|
|
@@ -72,7 +74,9 @@ export function transformImportPaths(text, filePath = "") {
|
|
|
72
74
|
const cssTokens = applyCssTokenRenames(beta.text);
|
|
73
75
|
const tailwindColors = applyTailwindColorRenames(cssTokens.text);
|
|
74
76
|
const expandablePanel = applyExpandablePanelTransforms(tailwindColors.text);
|
|
75
|
-
|
|
77
|
+
const dateInput = applyDateInputTransforms(expandablePanel.text);
|
|
78
|
+
const masks = applyRegisterWithMaskTransforms(dateInput.text);
|
|
79
|
+
let next = masks.text;
|
|
76
80
|
let reordered = false;
|
|
77
81
|
|
|
78
82
|
if (/\.(sass|scss)$/i.test(filePath)) {
|
|
@@ -83,6 +87,8 @@ export function transformImportPaths(text, filePath = "") {
|
|
|
83
87
|
|
|
84
88
|
const warnings = [
|
|
85
89
|
...beta.warnings,
|
|
90
|
+
...dateInput.warnings,
|
|
91
|
+
...masks.warnings,
|
|
86
92
|
...collectManualMigrationWarnings(text),
|
|
87
93
|
];
|
|
88
94
|
|
|
@@ -105,7 +111,9 @@ export function transformImportPaths(text, filePath = "") {
|
|
|
105
111
|
fontFamily.count +
|
|
106
112
|
cssTokens.count +
|
|
107
113
|
tailwindColors.count +
|
|
108
|
-
expandablePanel.count
|
|
114
|
+
expandablePanel.count +
|
|
115
|
+
dateInput.count +
|
|
116
|
+
masks.count,
|
|
109
117
|
warnings,
|
|
110
118
|
reordered,
|
|
111
119
|
};
|