@fremtind/jokul 0.28.1 → 0.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/build-stats.html +1 -1
- package/build/cjs/components/breadcrumb/index.d.cts +2 -4
- package/build/cjs/components/button/index.d.cts +1 -1
- package/build/cjs/components/button/types.cjs.map +1 -1
- package/build/cjs/components/button/types.d.cts +1 -2
- package/build/cjs/components/card/NavCard.cjs.map +1 -1
- package/build/cjs/components/card/NavCard.d.cts +1 -10
- package/build/cjs/components/card/index.d.cts +2 -2
- package/build/cjs/components/card/types.cjs.map +1 -1
- package/build/cjs/components/card/types.d.cts +8 -0
- package/build/cjs/components/combobox/Combobox.cjs.map +1 -1
- package/build/cjs/components/combobox/Combobox.d.cts +6 -7
- package/build/cjs/components/combobox/index.d.cts +1 -1
- package/build/cjs/components/cookie-consent/index.d.cts +2 -4
- package/build/cjs/components/datepicker/index.cjs +1 -1
- package/build/cjs/components/datepicker/index.d.cts +3 -3
- package/build/cjs/components/datepicker/types.d.cts +7 -0
- package/build/cjs/components/datepicker/utils.cjs +1 -1
- package/build/cjs/components/datepicker/utils.cjs.map +1 -1
- package/build/cjs/components/datepicker/utils.d.cts +0 -1
- package/build/cjs/components/datepicker/validation.cjs.map +1 -1
- package/build/cjs/components/datepicker/validation.d.cts +1 -8
- package/build/cjs/components/description-list/index.d.cts +1 -1
- package/build/cjs/components/expander/Expander.cjs.map +1 -1
- package/build/cjs/components/expander/Expander.d.cts +1 -2
- package/build/cjs/components/expander/index.d.cts +2 -4
- package/build/cjs/components/feedback/Feedback.cjs.map +1 -1
- package/build/cjs/components/feedback/Feedback.d.cts +4 -9
- package/build/cjs/components/feedback/followup/Followup.cjs.map +1 -1
- package/build/cjs/components/feedback/followup/Followup.d.cts +3 -14
- package/build/cjs/components/feedback/index.d.cts +3 -3
- package/build/cjs/components/feedback/presets.cjs.map +1 -1
- package/build/cjs/components/feedback/presets.d.cts +2 -5
- package/build/cjs/components/feedback/questions/ContactQuestion.cjs.map +1 -1
- package/build/cjs/components/feedback/questions/ContactQuestion.d.cts +3 -28
- package/build/cjs/components/feedback/types.d.cts +42 -7
- package/build/cjs/components/icon-button/index.d.cts +1 -2
- package/build/cjs/components/image/index.d.cts +1 -3
- package/build/cjs/components/index.cjs +1 -1
- package/build/cjs/components/index.d.cts +1 -1
- package/build/cjs/components/input-panel/BasePanel.cjs +2 -0
- package/build/cjs/components/input-panel/BasePanel.cjs.map +1 -0
- package/build/cjs/components/input-panel/BasePanel.d.cts +10 -0
- package/build/cjs/components/input-panel/CheckboxPanel.cjs +2 -0
- package/build/cjs/components/input-panel/CheckboxPanel.cjs.map +1 -0
- package/build/cjs/components/input-panel/CheckboxPanel.d.cts +7 -0
- package/build/cjs/components/input-panel/RadioPanel.cjs +2 -0
- package/build/cjs/components/input-panel/RadioPanel.cjs.map +1 -0
- package/build/cjs/components/{radio-panel → input-panel}/RadioPanel.d.cts +2 -4
- package/build/cjs/components/input-panel/RadioPanelGroup.cjs +2 -0
- package/build/cjs/components/input-panel/RadioPanelGroup.cjs.map +1 -0
- package/build/cjs/components/input-panel/RadioPanelGroup.d.cts +4 -0
- package/build/cjs/components/input-panel/documentation/checkbox-panel/ControlledExample.d.cts +4 -0
- package/build/cjs/components/input-panel/documentation/checkbox-panel/UncontrolledExample.d.cts +4 -0
- package/build/cjs/components/input-panel/documentation/radio-panel/ControlledExample.d.cts +4 -0
- package/build/cjs/components/input-panel/documentation/radio-panel/UncontrolledExample.d.cts +4 -0
- package/build/cjs/components/input-panel/index.cjs +2 -0
- package/build/cjs/components/input-panel/index.d.cts +3 -0
- package/build/cjs/components/input-panel/radioPanelContext.cjs +2 -0
- package/build/cjs/components/input-panel/radioPanelContext.cjs.map +1 -0
- package/build/cjs/components/input-panel/radioPanelContext.d.cts +7 -0
- package/build/cjs/components/link-list/LinkList.cjs.map +1 -1
- package/build/cjs/components/link-list/LinkList.d.cts +2 -11
- package/build/cjs/components/link-list/index.d.cts +1 -0
- package/build/cjs/components/link-list/types.cjs +2 -0
- package/build/cjs/components/link-list/types.cjs.map +1 -0
- package/build/cjs/components/link-list/types.d.cts +11 -0
- package/build/cjs/components/list/index.d.cts +2 -3
- package/build/cjs/components/loader/index.d.cts +9 -18
- package/build/cjs/components/logo/index.d.cts +2 -4
- package/build/cjs/components/menu/Menu.cjs +1 -1
- package/build/cjs/components/menu/Menu.cjs.map +1 -1
- package/build/cjs/components/modal/Modal.cjs.map +1 -1
- package/build/cjs/components/modal/Modal.d.cts +8 -2
- package/build/cjs/components/modal/index.d.cts +2 -4
- package/build/cjs/components/pagination/Pagination.cjs.map +1 -1
- package/build/cjs/components/pagination/Pagination.d.cts +2 -1
- package/build/cjs/components/pagination/index.d.cts +1 -1
- package/build/cjs/components/popover/Popover.cjs.map +1 -1
- package/build/cjs/components/popover/Popover.d.cts +6 -6
- package/build/cjs/components/popover/index.d.cts +1 -1
- package/build/cjs/components/progress-bar/index.d.cts +2 -4
- package/build/cjs/components/radio-button/index.d.cts +3 -6
- package/build/cjs/components/select/Select.cjs.map +1 -1
- package/build/cjs/components/select/Select.d.cts +5 -6
- package/build/cjs/components/select/index.d.cts +2 -4
- package/build/cjs/components/summary-table/SummaryTable.cjs.map +1 -1
- package/build/cjs/components/summary-table/SummaryTable.d.cts +2 -2
- package/build/cjs/components/summary-table/index.d.cts +2 -2
- package/build/cjs/components/system-message/SystemMessage.cjs.map +1 -1
- package/build/cjs/components/system-message/SystemMessage.d.cts +5 -6
- package/build/cjs/components/system-message/index.d.cts +1 -1
- package/build/cjs/components/tabs/index.d.cts +6 -6
- package/build/cjs/components/tag/index.d.cts +1 -3
- package/build/cjs/components/text-input/BaseTextArea.cjs.map +1 -1
- package/build/cjs/components/text-input/BaseTextArea.d.cts +1 -2
- package/build/cjs/components/text-input/index.d.cts +2 -2
- package/build/cjs/components/toast/index.d.cts +1 -1
- package/build/cjs/components/toast/toastContext.cjs.map +1 -1
- package/build/cjs/components/toast/toastContext.d.cts +1 -13
- package/build/cjs/components/toast/types.d.cts +11 -0
- package/build/cjs/components/toggle-switch/ToggleSlider.cjs.map +1 -1
- package/build/cjs/components/toggle-switch/ToggleSlider.d.cts +2 -3
- package/build/cjs/components/toggle-switch/ToggleSwitch.cjs.map +1 -1
- package/build/cjs/components/toggle-switch/ToggleSwitch.d.cts +1 -1
- package/build/cjs/components/toggle-switch/index.d.cts +2 -2
- package/build/cjs/components/tooltip/Tooltip.cjs +1 -1
- package/build/cjs/components/tooltip/Tooltip.cjs.map +1 -1
- package/build/cjs/components/tooltip/Tooltip.d.cts +2 -2
- package/build/cjs/components/tooltip/TooltipContent.cjs +1 -1
- package/build/cjs/components/tooltip/TooltipContent.cjs.map +1 -1
- package/build/cjs/components/tooltip/TooltipTrigger.cjs +1 -1
- package/build/cjs/components/tooltip/TooltipTrigger.cjs.map +1 -1
- package/build/cjs/index.cjs +1 -1
- package/build/es/components/breadcrumb/index.d.ts +2 -4
- package/build/es/components/button/index.d.ts +1 -1
- package/build/es/components/button/types.d.ts +1 -2
- package/build/es/components/button/types.js.map +1 -1
- package/build/es/components/card/NavCard.d.ts +1 -10
- package/build/es/components/card/NavCard.js.map +1 -1
- package/build/es/components/card/index.d.ts +2 -2
- package/build/es/components/card/types.d.ts +8 -0
- package/build/es/components/card/types.js.map +1 -1
- package/build/es/components/combobox/Combobox.d.ts +6 -7
- package/build/es/components/combobox/Combobox.js.map +1 -1
- package/build/es/components/combobox/index.d.ts +1 -1
- package/build/es/components/cookie-consent/index.d.ts +2 -4
- package/build/es/components/datepicker/index.d.ts +3 -3
- package/build/es/components/datepicker/index.js +1 -1
- package/build/es/components/datepicker/types.d.ts +7 -0
- package/build/es/components/datepicker/utils.d.ts +0 -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.d.ts +1 -8
- package/build/es/components/datepicker/validation.js.map +1 -1
- package/build/es/components/description-list/index.d.ts +1 -1
- package/build/es/components/expander/Expander.d.ts +1 -2
- package/build/es/components/expander/Expander.js.map +1 -1
- package/build/es/components/expander/index.d.ts +2 -4
- package/build/es/components/feedback/Feedback.d.ts +4 -9
- package/build/es/components/feedback/Feedback.js.map +1 -1
- package/build/es/components/feedback/followup/Followup.d.ts +3 -14
- package/build/es/components/feedback/followup/Followup.js.map +1 -1
- package/build/es/components/feedback/index.d.ts +3 -3
- package/build/es/components/feedback/presets.d.ts +2 -5
- package/build/es/components/feedback/presets.js.map +1 -1
- package/build/es/components/feedback/questions/ContactQuestion.d.ts +3 -28
- package/build/es/components/feedback/questions/ContactQuestion.js.map +1 -1
- package/build/es/components/feedback/types.d.ts +42 -7
- package/build/es/components/icon-button/index.d.ts +1 -2
- package/build/es/components/image/index.d.ts +1 -3
- package/build/es/components/index.d.ts +1 -1
- package/build/es/components/index.js +1 -1
- package/build/es/components/input-panel/BasePanel.d.ts +10 -0
- package/build/es/components/input-panel/BasePanel.js +2 -0
- package/build/es/components/input-panel/BasePanel.js.map +1 -0
- package/build/es/components/input-panel/CheckboxPanel.d.ts +7 -0
- package/build/es/components/input-panel/CheckboxPanel.js +2 -0
- package/build/es/components/input-panel/CheckboxPanel.js.map +1 -0
- package/build/es/components/{radio-panel → input-panel}/RadioPanel.d.ts +2 -4
- package/build/es/components/input-panel/RadioPanel.js +2 -0
- package/build/es/components/input-panel/RadioPanel.js.map +1 -0
- package/build/es/components/input-panel/RadioPanelGroup.d.ts +4 -0
- package/build/es/components/input-panel/RadioPanelGroup.js +2 -0
- package/build/es/components/input-panel/RadioPanelGroup.js.map +1 -0
- package/build/es/components/input-panel/documentation/checkbox-panel/ControlledExample.d.ts +4 -0
- package/build/es/components/input-panel/documentation/checkbox-panel/UncontrolledExample.d.ts +4 -0
- package/build/es/components/input-panel/documentation/radio-panel/ControlledExample.d.ts +4 -0
- package/build/es/components/input-panel/documentation/radio-panel/UncontrolledExample.d.ts +4 -0
- package/build/es/components/input-panel/index.d.ts +3 -0
- package/build/es/components/input-panel/index.js +2 -0
- package/build/es/components/input-panel/radioPanelContext.d.ts +7 -0
- package/build/es/components/input-panel/radioPanelContext.js +2 -0
- package/build/es/components/input-panel/radioPanelContext.js.map +1 -0
- package/build/es/components/link-list/LinkList.d.ts +2 -11
- package/build/es/components/link-list/LinkList.js.map +1 -1
- package/build/es/components/link-list/index.d.ts +1 -0
- package/build/es/components/link-list/types.d.ts +11 -0
- package/build/es/components/link-list/types.js +2 -0
- package/build/es/components/link-list/types.js.map +1 -0
- package/build/es/components/list/index.d.ts +2 -3
- package/build/es/components/loader/index.d.ts +9 -18
- package/build/es/components/logo/index.d.ts +2 -4
- package/build/es/components/menu/Menu.js +1 -1
- package/build/es/components/menu/Menu.js.map +1 -1
- package/build/es/components/modal/Modal.d.ts +8 -2
- package/build/es/components/modal/Modal.js.map +1 -1
- package/build/es/components/modal/index.d.ts +2 -4
- package/build/es/components/pagination/Pagination.d.ts +2 -1
- package/build/es/components/pagination/Pagination.js.map +1 -1
- package/build/es/components/pagination/index.d.ts +1 -1
- package/build/es/components/popover/Popover.d.ts +6 -6
- package/build/es/components/popover/Popover.js.map +1 -1
- package/build/es/components/popover/index.d.ts +1 -1
- package/build/es/components/progress-bar/index.d.ts +2 -4
- package/build/es/components/radio-button/index.d.ts +3 -6
- package/build/es/components/select/Select.d.ts +5 -6
- package/build/es/components/select/Select.js.map +1 -1
- package/build/es/components/select/index.d.ts +2 -4
- package/build/es/components/summary-table/SummaryTable.d.ts +2 -2
- package/build/es/components/summary-table/SummaryTable.js.map +1 -1
- package/build/es/components/summary-table/index.d.ts +2 -2
- package/build/es/components/system-message/SystemMessage.d.ts +5 -6
- package/build/es/components/system-message/SystemMessage.js.map +1 -1
- package/build/es/components/system-message/index.d.ts +1 -1
- package/build/es/components/tabs/index.d.ts +6 -6
- package/build/es/components/tag/index.d.ts +1 -3
- package/build/es/components/text-input/BaseTextArea.d.ts +1 -2
- package/build/es/components/text-input/BaseTextArea.js.map +1 -1
- package/build/es/components/text-input/index.d.ts +2 -2
- package/build/es/components/toast/index.d.ts +1 -1
- package/build/es/components/toast/toastContext.d.ts +1 -13
- package/build/es/components/toast/toastContext.js.map +1 -1
- package/build/es/components/toast/types.d.ts +11 -0
- package/build/es/components/toggle-switch/ToggleSlider.d.ts +2 -3
- package/build/es/components/toggle-switch/ToggleSlider.js.map +1 -1
- package/build/es/components/toggle-switch/ToggleSwitch.d.ts +1 -1
- package/build/es/components/toggle-switch/ToggleSwitch.js.map +1 -1
- package/build/es/components/toggle-switch/index.d.ts +2 -2
- package/build/es/components/tooltip/Tooltip.d.ts +2 -2
- 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 +1 -1
- package/build/es/components/tooltip/TooltipContent.js.map +1 -1
- package/build/es/components/tooltip/TooltipTrigger.js +1 -1
- package/build/es/components/tooltip/TooltipTrigger.js.map +1 -1
- package/build/es/index.js +1 -1
- package/package.json +12 -3
- package/styles/components/button/button.css +2 -2
- package/styles/components/button/button.min.css +1 -1
- package/styles/components/checkbox/checkbox.css +4 -4
- package/styles/components/checkbox/checkbox.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/input-panel/_index.scss +2 -0
- package/styles/components/input-panel/checkbox-panel.css +132 -0
- package/styles/components/input-panel/checkbox-panel.min.css +1 -0
- package/styles/components/input-panel/checkbox-panel.scss +88 -0
- package/styles/components/{radio-panel → input-panel}/radio-panel.css +67 -56
- package/styles/components/input-panel/radio-panel.min.css +1 -0
- package/styles/components/input-panel/radio-panel.scss +79 -0
- package/styles/components/input-panel/shared.css +61 -0
- package/styles/components/input-panel/shared.min.css +1 -0
- package/styles/components/input-panel/shared.scss +75 -0
- 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 +2 -2
- 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/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/components/tooltip/tooltip.css +2 -26
- package/styles/components/tooltip/tooltip.min.css +1 -1
- package/styles/components/tooltip/tooltip.scss +3 -31
- package/styles/styles.css +224 -166
- package/styles/styles.min.css +1 -1
- package/styles/styles.scss +1 -1
- package/build/cjs/components/radio-panel/RadioPanel.cjs +0 -2
- package/build/cjs/components/radio-panel/RadioPanel.cjs.map +0 -1
- package/build/cjs/components/radio-panel/index.cjs +0 -2
- package/build/cjs/components/radio-panel/index.d.cts +0 -1
- package/build/es/components/radio-panel/RadioPanel.js +0 -2
- package/build/es/components/radio-panel/RadioPanel.js.map +0 -1
- package/build/es/components/radio-panel/index.d.ts +0 -1
- package/build/es/components/radio-panel/index.js +0 -2
- package/styles/components/radio-panel/_index.scss +0 -1
- package/styles/components/radio-panel/radio-panel.min.css +0 -1
- package/styles/components/radio-panel/radio-panel.scss +0 -140
- /package/build/cjs/components/{radio-panel → input-panel}/index.cjs.map +0 -0
- /package/build/es/components/{radio-panel → input-panel}/index.js.map +0 -0
package/styles/styles.scss
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
@use "components/icon";
|
|
13
13
|
@use "components/icon-button";
|
|
14
14
|
@use "components/image";
|
|
15
|
+
@use "components/input-panel";
|
|
15
16
|
@use "components/input-group";
|
|
16
17
|
@use "components/link";
|
|
17
18
|
@use "components/link-list";
|
|
@@ -25,7 +26,6 @@
|
|
|
25
26
|
@use "components/popover";
|
|
26
27
|
@use "components/progress-bar";
|
|
27
28
|
@use "components/radio-button";
|
|
28
|
-
@use "components/radio-panel";
|
|
29
29
|
@use "components/select";
|
|
30
30
|
@use "components/summary-table";
|
|
31
31
|
@use "components/system-message";
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),a=require("../../../clsx-E3yX_9sL.cjs"),l=require("react"),n=require("../../hooks/useAnimatedHeight/useAutoAnimateHeight.cjs"),t=l.forwardRef((function({children:t,alwaysOpen:r=!1,label:s,extraLabel:i,checked:o,onChange:c,...d},u){const[p,j]=l.useState(!0),h=n.useAutoAnimatedHeight(p),x=l.useCallback((e=>(typeof e<"u"&&(null==c||c(e)),r?-1:(j(!1),window.setTimeout((()=>{j(!0)}),200)))),[j,r,c]);l.useEffect((()=>{if(!o)return;const e=x();return()=>window.clearTimeout(e)}),[o,x]);const m=l.Children.count(t)>0;return e.jsxs("div",{className:"jkl-radio-panel",ref:u,children:[e.jsxs("label",{className:"jkl-radio-panel__label",children:[e.jsx("input",{onChange:x,checked:o,className:"jkl-radio-panel__input",type:"radio",...d}),e.jsx("span",{"aria-hidden":"true",className:"jkl-radio-panel__dot"}),e.jsx("span",{className:"jkl-radio-panel__main-label",children:s}),e.jsx("span",{className:a.clsx("jkl-radio-panel__extra-label",{"jkl-radio-panel__extra-label--text":"string"==typeof i}),children:i})]}),e.jsx("div",{"data-open":p&&m,"data-alwaysOpen":r&&m,ref:h,className:"jkl-radio-panel__content","aria-live":!r&&m?"polite":void 0,children:p&&t})]})}));exports.RadioPanel=t;
|
|
2
|
-
//# sourceMappingURL=RadioPanel.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RadioPanel.cjs","sources":["../../../../src/components/radio-panel/RadioPanel.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, {\n ChangeEvent,\n Children,\n ComponentPropsWithRef,\n ForwardedRef,\n forwardRef,\n useCallback,\n useEffect,\n useState,\n} from \"react\";\nimport { useAutoAnimatedHeight } from \"../../hooks/useAnimatedHeight/useAutoAnimateHeight.js\";\n\ntype Props = Omit<ComponentPropsWithRef<\"input\">, \"type\"> & {\n name: string;\n value: string;\n label: string;\n extraLabel?: React.ReactNode;\n alwaysOpen?: boolean;\n};\n\nexport const RadioPanel = forwardRef(function RadioPanel(\n {\n children,\n alwaysOpen = false,\n label,\n extraLabel,\n checked,\n onChange,\n ...rest\n }: Props,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const [renderChildren, setRenderChildren] = useState(true);\n const animationRef = useAutoAnimatedHeight<HTMLDivElement>(renderChildren);\n\n const handleChange = useCallback(\n (e?: ChangeEvent<HTMLInputElement>) => {\n if (typeof e !== \"undefined\") {\n onChange?.(e);\n }\n\n if (alwaysOpen) {\n return -1;\n }\n\n // Hvis går fra lukket til åpen, trigge endring i live-region men\n // vent \"lenge nok\" til at skjermleseren får det med seg,\n // radio-knapper får bare en change event når de velges. Det at\n // en annen radio i gruppen blir valgt trigger bare et event på den.\n setRenderChildren(false);\n return window.setTimeout(() => {\n setRenderChildren(true);\n }, 200);\n },\n [setRenderChildren, alwaysOpen, onChange],\n );\n\n useEffect(() => {\n if (!checked) {\n return;\n }\n const timeoutId = handleChange();\n return () => window.clearTimeout(timeoutId);\n }, [checked, handleChange]);\n\n const hasChildren = Children.count(children) > 0;\n\n return (\n <div className=\"jkl-radio-panel\" ref={ref}>\n <label className=\"jkl-radio-panel__label\">\n <input\n onChange={handleChange}\n checked={checked}\n className=\"jkl-radio-panel__input\"\n type=\"radio\"\n {...rest}\n />\n <span\n aria-hidden=\"true\"\n className=\"jkl-radio-panel__dot\"\n ></span>\n <span className=\"jkl-radio-panel__main-label\">{label}</span>\n <span\n className={clsx(\"jkl-radio-panel__extra-label\", {\n \"jkl-radio-panel__extra-label--text\":\n typeof extraLabel === \"string\",\n })}\n >\n {extraLabel}\n </span>\n </label>\n <div\n data-open={renderChildren && hasChildren}\n data-alwaysOpen={alwaysOpen && hasChildren}\n ref={animationRef}\n className=\"jkl-radio-panel__content\"\n aria-live={!alwaysOpen && hasChildren ? \"polite\" : undefined}\n >\n {renderChildren && children}\n </div>\n </div>\n );\n});\n"],"names":["RadioPanel","forwardRef","children","alwaysOpen","label","extraLabel","checked","onChange","rest","ref","renderChildren","setRenderChildren","useState","animationRef","useAutoAnimatedHeight","handleChange","useCallback","e","window","setTimeout","useEffect","timeoutId","clearTimeout","hasChildren","Children","count","jsxs","className","jsx","type","clsx"],"mappings":"oPAqBaA,EAAaC,EAAAA,YAAW,UAE7BC,SAAAA,EACAC,WAAAA,GAAa,EACbC,MAAAA,EACAC,WAAAA,EACAC,QAAAA,EACAC,SAAAA,KACGC,GAEPC,GAEA,MAAOC,EAAgBC,GAAqBC,YAAS,GAC/CC,EAAeC,wBAAsCJ,GAErDK,EAAeC,EAAAA,aAChBC,WACcA,EAAM,MACb,MAAAV,GAAAA,EAAWU,IAGXd,GAQJQ,GAAAA,GAAkB,GACXO,OAAOC,YAAW,KACrBR,GAAkB,EAAI,GACvB,QAEP,CAACA,EAAmBR,EAAYI,IAGpCa,EAAAA,WAAU,KACN,IAAKd,EACD,OAEJ,MAAMe,EAAYN,IACX,MAAA,IAAMG,OAAOI,aAAaD,EAAS,GAC3C,CAACf,EAASS,IAEb,MAAMQ,EAAcC,EAAAA,SAASC,MAAMvB,GAAY,EAE/C,OACKwB,EAAAA,KAAA,MAAA,CAAIC,UAAU,kBAAkBlB,IAAAA,EAC7BP,SAAA,CAACwB,EAAAA,KAAA,QAAA,CAAMC,UAAU,yBACbzB,SAAA,CAAA0B,EAAAA,IAAC,QAAA,CACGrB,SAAUQ,EACVT,QAAAA,EACAqB,UAAU,yBACVE,KAAK,WACDrB,IAERoB,EAAAA,IAAC,OAAA,CACG,cAAY,OACZD,UAAU,yBAEbC,EAAAA,IAAA,OAAA,CAAKD,UAAU,8BAA+BzB,SAAME,IACrDwB,EAAAA,IAAC,OAAA,CACGD,UAAWG,OAAK,+BAAgC,CAC5C,qCAC0B,iBAAfzB,IAGdH,SAAAG,OAGTuB,EAAAA,IAAC,MAAA,CACG,YAAWlB,GAAkBa,EAC7B,kBAAiBpB,GAAcoB,EAC/Bd,IAAKI,EACLc,UAAU,2BACV,aAAYxB,GAAcoB,EAAc,cAAW,EAElDrB,SAAkBQ,GAAAR,MAInC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './RadioPanel.cjs';
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{jsxs as a,jsx as e}from"react/jsx-runtime";import{c as l}from"../../../clsx-BeLtu-UY.js";import{forwardRef as n,useState as s,useCallback as t,useEffect as i,Children as r}from"react";import{useAutoAnimatedHeight as o}from"../../hooks/useAnimatedHeight/useAutoAnimateHeight.js";const d=n((function({children:n,alwaysOpen:d=!1,label:c,extraLabel:p,checked:m,onChange:u,...h},f){const[_,j]=s(!0),k=o(_),x=t((a=>(typeof a<"u"&&(null==u||u(a)),d?-1:(j(!1),window.setTimeout((()=>{j(!0)}),200)))),[j,d,u]);i((()=>{if(!m)return;const a=x();return()=>window.clearTimeout(a)}),[m,x]);const b=r.count(n)>0;return a("div",{className:"jkl-radio-panel",ref:f,children:[a("label",{className:"jkl-radio-panel__label",children:[e("input",{onChange:x,checked:m,className:"jkl-radio-panel__input",type:"radio",...h}),e("span",{"aria-hidden":"true",className:"jkl-radio-panel__dot"}),e("span",{className:"jkl-radio-panel__main-label",children:c}),e("span",{className:l("jkl-radio-panel__extra-label",{"jkl-radio-panel__extra-label--text":"string"==typeof p}),children:p})]}),e("div",{"data-open":_&&b,"data-alwaysOpen":d&&b,ref:k,className:"jkl-radio-panel__content","aria-live":!d&&b?"polite":void 0,children:_&&n})]})}));export{d as RadioPanel};
|
|
2
|
-
//# sourceMappingURL=RadioPanel.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RadioPanel.js","sources":["../../../../src/components/radio-panel/RadioPanel.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, {\n ChangeEvent,\n Children,\n ComponentPropsWithRef,\n ForwardedRef,\n forwardRef,\n useCallback,\n useEffect,\n useState,\n} from \"react\";\nimport { useAutoAnimatedHeight } from \"../../hooks/useAnimatedHeight/useAutoAnimateHeight.js\";\n\ntype Props = Omit<ComponentPropsWithRef<\"input\">, \"type\"> & {\n name: string;\n value: string;\n label: string;\n extraLabel?: React.ReactNode;\n alwaysOpen?: boolean;\n};\n\nexport const RadioPanel = forwardRef(function RadioPanel(\n {\n children,\n alwaysOpen = false,\n label,\n extraLabel,\n checked,\n onChange,\n ...rest\n }: Props,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const [renderChildren, setRenderChildren] = useState(true);\n const animationRef = useAutoAnimatedHeight<HTMLDivElement>(renderChildren);\n\n const handleChange = useCallback(\n (e?: ChangeEvent<HTMLInputElement>) => {\n if (typeof e !== \"undefined\") {\n onChange?.(e);\n }\n\n if (alwaysOpen) {\n return -1;\n }\n\n // Hvis går fra lukket til åpen, trigge endring i live-region men\n // vent \"lenge nok\" til at skjermleseren får det med seg,\n // radio-knapper får bare en change event når de velges. Det at\n // en annen radio i gruppen blir valgt trigger bare et event på den.\n setRenderChildren(false);\n return window.setTimeout(() => {\n setRenderChildren(true);\n }, 200);\n },\n [setRenderChildren, alwaysOpen, onChange],\n );\n\n useEffect(() => {\n if (!checked) {\n return;\n }\n const timeoutId = handleChange();\n return () => window.clearTimeout(timeoutId);\n }, [checked, handleChange]);\n\n const hasChildren = Children.count(children) > 0;\n\n return (\n <div className=\"jkl-radio-panel\" ref={ref}>\n <label className=\"jkl-radio-panel__label\">\n <input\n onChange={handleChange}\n checked={checked}\n className=\"jkl-radio-panel__input\"\n type=\"radio\"\n {...rest}\n />\n <span\n aria-hidden=\"true\"\n className=\"jkl-radio-panel__dot\"\n ></span>\n <span className=\"jkl-radio-panel__main-label\">{label}</span>\n <span\n className={clsx(\"jkl-radio-panel__extra-label\", {\n \"jkl-radio-panel__extra-label--text\":\n typeof extraLabel === \"string\",\n })}\n >\n {extraLabel}\n </span>\n </label>\n <div\n data-open={renderChildren && hasChildren}\n data-alwaysOpen={alwaysOpen && hasChildren}\n ref={animationRef}\n className=\"jkl-radio-panel__content\"\n aria-live={!alwaysOpen && hasChildren ? \"polite\" : undefined}\n >\n {renderChildren && children}\n </div>\n </div>\n );\n});\n"],"names":["RadioPanel","forwardRef","children","alwaysOpen","label","extraLabel","checked","onChange","rest","ref","renderChildren","setRenderChildren","useState","animationRef","useAutoAnimatedHeight","handleChange","useCallback","e","window","setTimeout","useEffect","timeoutId","clearTimeout","hasChildren","Children","count","jsxs","className","jsx","type","clsx"],"mappings":"6RAqBa,MAAAA,EAAaC,GAAW,UAE7BC,SAAAA,EACAC,WAAAA,GAAa,EACbC,MAAAA,EACAC,WAAAA,EACAC,QAAAA,EACAC,SAAAA,KACGC,GAEPC,GAEM,MAACC,EAAgBC,GAAqBC,GAAS,GAC/CC,EAAeC,EAAsCJ,GAErDK,EAAeC,GAChBC,WACcA,EAAM,MACb,MAAAV,GAAAA,EAAWU,IAGXd,MAQJQ,GAAkB,GACXO,OAAOC,YAAW,KACrBR,GAAkB,EAAI,GACvB,QAEP,CAACA,EAAmBR,EAAYI,IAGpCa,GAAU,KACN,IAAKd,EACD,OAEJ,MAAMe,EAAYN,IACX,MAAA,IAAMG,OAAOI,aAAaD,EAAS,GAC3C,CAACf,EAASS,IAEb,MAAMQ,EAAcC,EAASC,MAAMvB,GAAY,EAG1C,OAAAwB,EAAA,MAAA,CAAIC,UAAU,kBAAkBlB,IAAAA,EAC7BP,SAAA,CAACwB,EAAA,QAAA,CAAMC,UAAU,yBACbzB,SAAA,CAAA0B,EAAC,QAAA,CACGrB,SAAUQ,EACVT,QAAAA,EACAqB,UAAU,yBACVE,KAAK,WACDrB,IAERoB,EAAC,OAAA,CACG,cAAY,OACZD,UAAU,yBAEbC,EAAA,OAAA,CAAKD,UAAU,8BAA+BzB,SAAME,IACrDwB,EAAC,OAAA,CACGD,UAAWG,EAAK,+BAAgC,CAC5C,qCAC0B,iBAAfzB,IAGdH,SAAAG,OAGTuB,EAAC,MAAA,CACG,YAAWlB,GAAkBa,EAC7B,kBAAiBpB,GAAcoB,EAC/Bd,IAAKI,EACLc,UAAU,2BACV,aAAYxB,GAAcoB,EAAc,cAAW,EAElDrB,SAAkBQ,GAAAR,MAInC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './RadioPanel.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
@forward "radio-panel";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
@keyframes jkl-dot-in-u81qfui{0%{transform:scale(.8)}to{transform:scale(1)}}.jkl-radio-panel{--outer-border-color:var(--jkl-color-border-input);--outer-border-thickness:0.0625rem;--dot-color:transparent;--ring-color:transparent;border-radius:4px;cursor:pointer;outline:var(--outer-border-thickness) solid var(--outer-border-color);padding-left:1rem}.jkl-radio-panel__label{align-items:center;cursor:pointer;display:grid;gap:.5rem;grid-template-columns:-webkit-min-content fit-content(30%) 1fr;grid-template-columns:min-content fit-content(30%) 1fr}.jkl-radio-panel__input{opacity:0;position:absolute;top:-6px}.jkl-radio-panel__dot{background-color:var(--ring-color);border:.0625rem solid var(--jkl-color-border-action);border-radius:50%;cursor:pointer;display:inline-block;height:1.5rem;position:relative;transition-duration:.15s;transition-property:background-color,outline;transition-timing-function:ease;width:1.5rem}.jkl-radio-panel__dot:after{background-color:var(--dot-color);border-radius:50%;content:"";height:1rem;left:50%;position:absolute;scale:1;top:50%;transition-duration:.15s;transition-property:transform;transition-timing-function:ease;translate:-50% -50%;width:1rem}@media screen and (forced-colors:active){.jkl-radio-panel__dot{border:1px solid ButtonText}}.jkl-radio-panel__input:checked+.jkl-radio-panel__dot:after{animation:jkl-dot-in-u81qfui .15s ease}.jkl-radio-panel__main-label{padding-block:1.5rem}.jkl-radio-panel__extra-label{align-self:stretch;margin-left:1rem;margin-right:1rem}.jkl-radio-panel__extra-label>:first-child{padding-right:1rem}.jkl-radio-panel__extra-label--text{align-items:center;display:flex;height:100%}.jkl-radio-panel__content{cursor:default;display:none;padding-right:1.5rem}.jkl-radio-panel:has(:checked) .jkl-radio-panel__content[data-open=true],.jkl-radio-panel__content[data-alwaysOpen=true]{display:block;margin-bottom:24px}.jkl-radio-panel:has(:checked),.jkl-radio-panel:has(:focus-visible),.jkl-radio-panel:hover{--outer-border-color:var(--jkl-color-border-separator-hover);--outer-border-thickness:0.125rem}.jkl-radio-panel:has(:checked){--dot-color:var(--jkl-color-border-action)}[aria-invalid=true] .jkl-radio-panel{--ring-color:var(--jkl-color-background-alert-error)}[aria-invalid=true] .jkl-radio-panel:has(:checked){--dot-color:var(--jkl-color-text-on-alert)}
|
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
@use "../../core/jkl/" as jkl;
|
|
2
|
-
@use "sass:string";
|
|
3
|
-
|
|
4
|
-
$_radio-panel-dot-animation-name: jkl-dot-in-#{string.unique-id()};
|
|
5
|
-
|
|
6
|
-
@keyframes #{$_radio-panel-dot-animation-name} {
|
|
7
|
-
0% {
|
|
8
|
-
transform: scale(0.8);
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
100% {
|
|
12
|
-
transform: scale(1);
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
.jkl-radio-panel {
|
|
17
|
-
--outer-border-color: var(--jkl-color-border-input);
|
|
18
|
-
--outer-border-thickness: #{jkl.rem(1px)};
|
|
19
|
-
--dot-color: transparent;
|
|
20
|
-
--ring-color: transparent;
|
|
21
|
-
|
|
22
|
-
outline: var(--outer-border-thickness) solid var(--outer-border-color);
|
|
23
|
-
border-radius: 4px;
|
|
24
|
-
padding-left: jkl.rem(16px);
|
|
25
|
-
|
|
26
|
-
cursor: pointer;
|
|
27
|
-
|
|
28
|
-
&__label {
|
|
29
|
-
display: grid;
|
|
30
|
-
grid-template-columns: min-content fit-content(30%) 1fr;
|
|
31
|
-
align-items: center;
|
|
32
|
-
gap: jkl.rem(8px);
|
|
33
|
-
cursor: pointer;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
&__input {
|
|
37
|
-
opacity: 0;
|
|
38
|
-
position: absolute;
|
|
39
|
-
top: -6px;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
/* The ring */
|
|
43
|
-
&__dot {
|
|
44
|
-
cursor: pointer;
|
|
45
|
-
|
|
46
|
-
display: inline-block;
|
|
47
|
-
position: relative;
|
|
48
|
-
|
|
49
|
-
height: jkl.rem(24px);
|
|
50
|
-
width: jkl.rem(24px);
|
|
51
|
-
border-radius: 50%;
|
|
52
|
-
border: jkl.rem(1px) solid var(--jkl-color-border-action);
|
|
53
|
-
background-color: var(--ring-color);
|
|
54
|
-
|
|
55
|
-
transition-property: background-color, outline;
|
|
56
|
-
@include jkl.motion;
|
|
57
|
-
|
|
58
|
-
/* The dot */
|
|
59
|
-
&::after {
|
|
60
|
-
content: "";
|
|
61
|
-
|
|
62
|
-
position: absolute;
|
|
63
|
-
left: 50%;
|
|
64
|
-
top: 50%;
|
|
65
|
-
translate: -50% -50%;
|
|
66
|
-
scale: 1;
|
|
67
|
-
|
|
68
|
-
height: jkl.rem(16px);
|
|
69
|
-
width: jkl.rem(16px);
|
|
70
|
-
border-radius: 50%;
|
|
71
|
-
background-color: var(--dot-color);
|
|
72
|
-
|
|
73
|
-
transition-property: transform;
|
|
74
|
-
@include jkl.motion;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
@include jkl.forced-colors-mode {
|
|
78
|
-
border: 1px solid ButtonText;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
&__input:checked + &__dot {
|
|
83
|
-
&::after {
|
|
84
|
-
animation: $_radio-panel-dot-animation-name jkl.timing("productive")
|
|
85
|
-
ease;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
&__main-label {
|
|
90
|
-
padding-block: jkl.rem(24px);
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
&__extra-label {
|
|
94
|
-
margin-left: jkl.rem(16px);
|
|
95
|
-
align-self: stretch;
|
|
96
|
-
|
|
97
|
-
margin-right: jkl.rem(16px);
|
|
98
|
-
|
|
99
|
-
> :first-child {
|
|
100
|
-
padding-right: jkl.rem(16px);
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
&--text {
|
|
104
|
-
display: flex;
|
|
105
|
-
height: 100%;
|
|
106
|
-
align-items: center;
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
&__content {
|
|
111
|
-
display: none;
|
|
112
|
-
cursor: default;
|
|
113
|
-
padding-right: jkl.rem(24px);
|
|
114
|
-
|
|
115
|
-
&[data-alwaysOpen="true"],
|
|
116
|
-
.jkl-radio-panel:has(:checked) &[data-open="true"] {
|
|
117
|
-
margin-bottom: 24px;
|
|
118
|
-
display: block;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
&:has(:checked),
|
|
123
|
-
&:has(:focus-visible),
|
|
124
|
-
&:hover {
|
|
125
|
-
--outer-border-color: var(--jkl-color-border-separator-hover);
|
|
126
|
-
--outer-border-thickness: #{jkl.rem(2px)};
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
&:has(:checked) {
|
|
130
|
-
--dot-color: var(--jkl-color-border-action);
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
[aria-invalid="true"] & {
|
|
134
|
-
--ring-color: var(--jkl-color-background-alert-error);
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
[aria-invalid="true"] &:has(:checked) {
|
|
138
|
-
--dot-color: var(--jkl-color-text-on-alert);
|
|
139
|
-
}
|
|
140
|
-
}
|
|
File without changes
|
|
File without changes
|