@danske/sapphire-react-lab 0.97.0 → 0.98.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,83 @@
1
+ import clsx from 'clsx';
2
+ import styles from '@danske/sapphire-css/components/slider/slider.module.css';
3
+ import { useThemeCheck, useSapphireStyleProps, Field, Label } from '@danske/sapphire-react';
4
+ import { Slider as Slider$1, SliderTrack, SliderThumb } from 'react-aria-components';
5
+ import React from 'react';
6
+
7
+ var __defProp = Object.defineProperty;
8
+ var __defProps = Object.defineProperties;
9
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
10
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
11
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
12
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
13
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
14
+ var __spreadValues = (a, b) => {
15
+ for (var prop in b || (b = {}))
16
+ if (__hasOwnProp.call(b, prop))
17
+ __defNormalProp(a, prop, b[prop]);
18
+ if (__getOwnPropSymbols)
19
+ for (var prop of __getOwnPropSymbols(b)) {
20
+ if (__propIsEnum.call(b, prop))
21
+ __defNormalProp(a, prop, b[prop]);
22
+ }
23
+ return a;
24
+ };
25
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
26
+ var __objRest = (source, exclude) => {
27
+ var target = {};
28
+ for (var prop in source)
29
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
30
+ target[prop] = source[prop];
31
+ if (source != null && __getOwnPropSymbols)
32
+ for (var prop of __getOwnPropSymbols(source)) {
33
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
34
+ target[prop] = source[prop];
35
+ }
36
+ return target;
37
+ };
38
+ const Slider = (_a) => {
39
+ var _b = _a, {
40
+ label,
41
+ labelPlacement = "above",
42
+ note,
43
+ name,
44
+ isDisabled
45
+ } = _b, props = __objRest(_b, [
46
+ "label",
47
+ "labelPlacement",
48
+ "note",
49
+ "name",
50
+ "isDisabled"
51
+ ]);
52
+ useThemeCheck();
53
+ const { styleProps } = useSapphireStyleProps(props);
54
+ return /* @__PURE__ */ React.createElement(Field, __spreadProps(__spreadValues({}, styleProps), {
55
+ labelPlacement
56
+ }), /* @__PURE__ */ React.createElement(Field.Context, null, label && /* @__PURE__ */ React.createElement(Field.Label, null, /* @__PURE__ */ React.createElement(Label, null, label)), /* @__PURE__ */ React.createElement(Field.Control, null, /* @__PURE__ */ React.createElement(Slider$1, __spreadProps(__spreadValues({}, props), {
57
+ style: { height: "100%" }
58
+ }), /* @__PURE__ */ React.createElement("div", {
59
+ className: clsx(styles["sapphire-slider"]),
60
+ role: "slider"
61
+ }, /* @__PURE__ */ React.createElement(SliderTrack, {
62
+ className: clsx(styles["sapphire-slider__track"])
63
+ }, ({ state }) => /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("div", {
64
+ className: clsx(styles["sapphire-slider__track-remaining"])
65
+ }), /* @__PURE__ */ React.createElement("div", {
66
+ className: clsx(styles["sapphire-slider__track-fill"]),
67
+ style: { width: state.getThumbPercent(0) * 100 + "%" }
68
+ }), /* @__PURE__ */ React.createElement(SliderThumb, {
69
+ name,
70
+ className: (state2) => clsx(styles["sapphire-slider__thumb"], {
71
+ [styles["is-focus"]]: state2.isFocusVisible
72
+ }),
73
+ style: ({ state: state2 }) => {
74
+ const percent = Math.min(3 + state2.getThumbPercent(0) * 94, 100);
75
+ return {
76
+ left: `${percent}%`
77
+ };
78
+ }
79
+ })))))), note && /* @__PURE__ */ React.createElement(Field.Footer, null, note)));
80
+ };
81
+
82
+ export { Slider };
83
+ //# sourceMappingURL=Slider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Slider.js","sources":["../../../../src/Slider/src/Slider.tsx"],"sourcesContent":["import { ReactNode } from 'react';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/slider/slider.module.css';\nimport {\n useThemeCheck,\n useSapphireStyleProps,\n Label,\n SapphireStyleProps,\n Field,\n FieldProps,\n} from '@danske/sapphire-react';\nimport {\n Slider as RACSlider,\n SliderProps as RACSliderProps,\n SliderThumb as RACSliderThumb,\n SliderThumbProps as RACSliderThumbProps,\n SliderTrack as RACSliderTrack,\n} from 'react-aria-components';\nimport React from 'react';\n\nexport type SliderProps = {\n label?: ReactNode;\n /**\n * A note to show below the slider.\n * Use {@Link Slider.Note} to render the note.\n */\n note?: ReactNode;\n} & SapphireStyleProps &\n Pick<FieldProps, 'isDisabled' | 'labelPlacement'> &\n Pick<\n RACSliderProps<number>, // We're only supporting sliders with one end\n | 'minValue'\n | 'maxValue'\n | 'step'\n | 'value'\n | 'defaultValue'\n | 'aria-label'\n | 'onChange'\n | 'onChangeEnd'\n > &\n Pick<RACSliderThumbProps, 'name'>;\n\nexport const Slider = ({\n label,\n labelPlacement = 'above',\n note,\n name,\n isDisabled,\n ...props\n}: SliderProps): JSX.Element => {\n useThemeCheck();\n const { styleProps } = useSapphireStyleProps(props);\n\n return (\n <Field {...styleProps} labelPlacement={labelPlacement}>\n <Field.Context>\n {label && (\n <Field.Label>\n <Label>{label}</Label>\n </Field.Label>\n )}\n\n <Field.Control>\n <RACSlider {...props} style={{ height: '100%' }}>\n <div className={clsx(styles['sapphire-slider'])} role=\"slider\">\n <RACSliderTrack\n className={clsx(styles['sapphire-slider__track'])}\n >\n {({ state }) => (\n <>\n <div\n className={clsx(\n styles['sapphire-slider__track-remaining']\n )}\n />\n <div\n className={clsx(styles['sapphire-slider__track-fill'])}\n style={{ width: state.getThumbPercent(0) * 100 + '%' }}\n />\n <RACSliderThumb\n name={name}\n className={(state) =>\n clsx(styles['sapphire-slider__thumb'], {\n [styles['is-focus']]: state.isFocusVisible,\n })\n }\n style={({ state }) => {\n // Pad the thumb position, so it doesn't go over the track\n const percent = Math.min(\n 3 + state.getThumbPercent(0) * 94,\n 100\n );\n return {\n left: `${percent}%`,\n };\n }}\n />\n </>\n )}\n </RACSliderTrack>\n </div>\n </RACSlider>\n </Field.Control>\n\n {note && <Field.Footer>{note}</Field.Footer>}\n </Field.Context>\n </Field>\n );\n};\n"],"names":["RACSlider","RACSliderTrack","RACSliderThumb"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0Ca,MAAA,MAAA,GAAS,CAAC,EAOS,KAAA;AAPT,EACrB,IAAA,EAAA,GAAA,EAAA,EAAA;AAAA,IAAA,KAAA;AAAA,IACA,cAAiB,GAAA,OAAA;AAAA,IACjB,IAAA;AAAA,IACA,IAAA;AAAA,IACA,UAAA;AAAA,GALqB,GAAA,EAAA,EAMlB,kBANkB,EAMlB,EAAA;AAAA,IALH,OAAA;AAAA,IACA,gBAAA;AAAA,IACA,MAAA;AAAA,IACA,MAAA;AAAA,IACA,YAAA;AAAA,GAAA,CAAA,CAAA;AAGA,EAAA,aAAA,EAAA,CAAA;AACA,EAAM,MAAA,EAAE,eAAe,qBAAsB,CAAA,KAAA,CAAA,CAAA;AAE7C,EACE,uBAAA,KAAA,CAAA,aAAA,CAAC,KAAD,EAAA,aAAA,CAAA,cAAA,CAAA,EAAA,EAAW,UAAX,CAAA,EAAA;AAAA,IAAuB,cAAA;AAAA,GACrB,CAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,MAAM,OAAP,EAAA,IAAA,EACG,yBACE,KAAA,CAAA,aAAA,CAAA,KAAA,CAAM,OAAP,IACE,kBAAA,KAAA,CAAA,aAAA,CAAC,OAAD,IAAQ,EAAA,KAAA,CAAA,CAAA,sCAIX,KAAM,CAAA,OAAA,EAAP,sBACG,KAAA,CAAA,aAAA,CAAAA,QAAA,EAAD,iCAAe,KAAf,CAAA,EAAA;AAAA,IAAsB,KAAA,EAAO,EAAE,MAAQ,EAAA,MAAA,EAAA;AAAA,GAAA,CAAA,sCACpC,KAAD,EAAA;AAAA,IAAK,SAAA,EAAW,KAAK,MAAO,CAAA,iBAAA,CAAA,CAAA;AAAA,IAAqB,IAAK,EAAA,QAAA;AAAA,GAAA,sCACnDC,WAAD,EAAA;AAAA,IACE,SAAA,EAAW,KAAK,MAAO,CAAA,wBAAA,CAAA,CAAA;AAAA,GAAA,EAEtB,CAAC,EAAE,KACF,EAAA,qBAAA,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,sCACG,KAAD,EAAA;AAAA,IACE,SAAA,EAAW,KACT,MAAO,CAAA,kCAAA,CAAA,CAAA;AAAA,GAAA,CAAA,sCAGV,KAAD,EAAA;AAAA,IACE,SAAA,EAAW,KAAK,MAAO,CAAA,6BAAA,CAAA,CAAA;AAAA,IACvB,OAAO,EAAE,KAAA,EAAO,KAAM,CAAA,eAAA,CAAgB,KAAK,GAAM,GAAA,GAAA,EAAA;AAAA,GAAA,CAAA,sCAElDC,WAAD,EAAA;AAAA,IACE,IAAA;AAAA,IACA,SAAW,EAAA,CAAC,MACV,KAAA,IAAA,CAAK,OAAO,wBAA2B,CAAA,EAAA;AAAA,MACpC,CAAA,MAAA,CAAO,cAAc,MAAM,CAAA,cAAA;AAAA,KAAA,CAAA;AAAA,IAGhC,KAAA,EAAO,CAAC,EAAE,KAAY,EAAA,MAAA,EAAA,KAAA;AAEpB,MAAA,MAAM,UAAU,IAAK,CAAA,GAAA,CACnB,IAAI,MAAM,CAAA,eAAA,CAAgB,KAAK,EAC/B,EAAA,GAAA,CAAA,CAAA;AAEF,MAAO,OAAA;AAAA,QACL,MAAM,CAAG,EAAA,OAAA,CAAA,CAAA,CAAA;AAAA,OAAA,CAAA;AAAA,KAAA;AAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAW1B,IAAQ,oBAAA,KAAA,CAAA,aAAA,CAAC,KAAM,CAAA,MAAA,EAAP,IAAe,EAAA,IAAA,CAAA,CAAA,CAAA,CAAA;AAAA;;;;"}
@@ -6,6 +6,7 @@ export { FileTrigger } from './FileDropzone/src/FileTrigger.js';
6
6
  export { Flag } from './Flag/src/Flag.js';
7
7
  export { NumberField } from './NumberField/src/NumberField.js';
8
8
  export { ProgressIndicator } from './ProgressIndicator/src/ProgressIndicator.js';
9
+ export { Slider } from './Slider/index.js';
9
10
  export { TagGroup } from './TagGroup/src/TagGroup.js';
10
11
  export { TagItem } from './TagGroup/src/TagItem.js';
11
12
  export { LabeledValue } from './LabeledValue/src/LabeledValue.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;"}
package/build/index.d.ts CHANGED
@@ -1,10 +1,11 @@
1
1
  import * as React from 'react';
2
2
  import React__default, { ReactNode, ReactElement, RefObject, Key } from 'react';
3
- import { SapphireStyleProps, PopoverTriggerProps, SearchFieldPropsWithRef, ListBoxProps, TypographyHeadingProps } from '@danske/sapphire-react';
3
+ import { SapphireStyleProps, PopoverTriggerProps, SearchFieldPropsWithRef, ListBoxProps, TypographyHeadingProps, FieldProps } from '@danske/sapphire-react';
4
4
  import { CollectionBase, DOMProps, Expandable, ItemProps, AriaLabelingProps, FocusableRefValue, PressEvents } from '@react-types/shared';
5
5
  import { HoverProps } from '@react-aria/interactions';
6
6
  import { DropOptions } from '@react-aria/dnd';
7
7
  import { AriaNumberFieldProps } from '@react-aria/numberfield';
8
+ import { SliderProps as SliderProps$1, SliderThumbProps } from 'react-aria-components';
8
9
  export { useLocale } from '@react-aria/i18n';
9
10
 
10
11
  interface FilterDropdownProps extends SapphireStyleProps, Pick<PopoverTriggerProps, 'defaultOpen' | 'isOpen' | 'onOpenChange' | 'noMaxWidth'> {
@@ -307,6 +308,23 @@ declare type ProgressIndicatorProps = {
307
308
  });
308
309
  declare const ProgressIndicator: (props: ProgressIndicatorProps) => JSX.Element;
309
310
 
311
+ declare type SliderProps = {
312
+ label?: ReactNode;
313
+ /**
314
+ * A note to show below the slider.
315
+ * Use {@Link Slider.Note} to render the note.
316
+ */
317
+ note?: ReactNode;
318
+ } & SapphireStyleProps & Pick<FieldProps, 'isDisabled' | 'labelPlacement'> & Pick<SliderProps$1<number>, // We're only supporting sliders with one end
319
+ 'minValue' | 'maxValue' | 'step' | 'value' | 'defaultValue' | 'aria-label' | 'onChange' | 'onChangeEnd'> & Pick<SliderThumbProps, 'name'>;
320
+
321
+ declare const _Slider: (({ label, labelPlacement, note, name, isDisabled, ...props }: SliderProps) => JSX.Element) & {
322
+ Note: ({ children, variant, ...props }: {
323
+ children?: React.ReactNode;
324
+ variant?: "warning" | "error" | "success" | "neutral" | undefined;
325
+ } & React.HTMLAttributes<HTMLElement>) => React.JSX.Element;
326
+ };
327
+
310
328
  interface TagGroupProps<T> extends CollectionBase<T>, DOMProps, Pick<AriaLabelingProps, 'aria-label' | 'aria-labelledby' | 'aria-describedby' | 'aria-details'>, SapphireStyleProps {
311
329
  /**
312
330
  * A HelpButton element to place next to the label.
@@ -402,4 +420,4 @@ interface SapphireAlertProps extends SapphireStyleProps {
402
420
  }
403
421
  declare function Alert({ children, title, variant, ...props }: SapphireAlertProps): React__default.JSX.Element;
404
422
 
405
- export { _Accordion as Accordion, AccordionContext, AccordionHeadingProps, AccordionItemProps, AccordionProps, Alert, FileDropzone, FileDropzoneProps, FileTrigger, FileTriggerProps, FilterDropdown, FilterDropdownProps, Flag, FlagProps, LabeledValue, NumberField, NumberFieldProps, NumberFieldRef, ProgressIndicator, ProgressIndicatorProps, SapphireAlertProps, SearchableSelectFilter, SearchableSelectFilterProps, TagGroup, TagGroupProps, TagItem };
423
+ export { _Accordion as Accordion, AccordionContext, AccordionHeadingProps, AccordionItemProps, AccordionProps, Alert, FileDropzone, FileDropzoneProps, FileTrigger, FileTriggerProps, FilterDropdown, FilterDropdownProps, Flag, FlagProps, LabeledValue, NumberField, NumberFieldProps, NumberFieldRef, ProgressIndicator, ProgressIndicatorProps, SapphireAlertProps, SearchableSelectFilter, SearchableSelectFilterProps, _Slider as Slider, SliderProps, TagGroup, TagGroupProps, TagItem };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@danske/sapphire-react-lab",
3
- "version": "0.97.0",
3
+ "version": "0.98.0",
4
4
  "license": "SEE LICENSE IN LICENSE",
5
5
  "description": "Experimental React components of the Sapphire Design System from Danske Bank A/S",
6
6
  "exports": {
@@ -25,47 +25,48 @@
25
25
  },
26
26
  "peerDependencies": {
27
27
  "@danske/sapphire-icons": "^3.1.0",
28
- "@danske/sapphire-react": "^5.3.0",
28
+ "@danske/sapphire-react": "^5.4.0",
29
29
  "react": ">=16.8.0",
30
30
  "react-dom": ">=16.8.0"
31
31
  },
32
32
  "devDependencies": {
33
33
  "@danske/sapphire-icons": "^3.1.0",
34
- "@danske/sapphire-react": "^5.3.0",
34
+ "@danske/sapphire-react": "^5.4.0",
35
35
  "@types/react-transition-group": "^4.4.5",
36
36
  "cross-env": "^7.0.3"
37
37
  },
38
38
  "dependencies": {
39
- "@danske/sapphire-css": "^42.0.0",
40
- "@internationalized/date": "^3.6.0",
41
- "@internationalized/string": "^3.2.5",
39
+ "@danske/sapphire-css": "^42.1.0",
40
+ "@internationalized/date": "^3.9.0",
41
+ "@internationalized/string": "^3.2.7",
42
42
  "@react-aria/accordion": "3.0.0-alpha.37",
43
- "@react-aria/button": "^3.14.0",
44
- "@react-aria/combobox": "^3.13.0",
45
- "@react-aria/dialog": "^3.5.28",
46
- "@react-aria/dnd": "^3.11.0",
47
- "@react-aria/focus": "^3.21.0",
48
- "@react-aria/i18n": "^3.12.11",
49
- "@react-aria/interactions": "^3.25.4",
50
- "@react-aria/label": "^3.7.20",
51
- "@react-aria/numberfield": "^3.12.0",
52
- "@react-aria/overlays": "^3.28.0",
53
- "@react-aria/progress": "^3.4.24",
54
- "@react-aria/tag": "^3.7.0",
55
- "@react-aria/utils": "^3.30.0",
56
- "@react-aria/visually-hidden": "^3.8.26",
43
+ "@react-aria/button": "^3.14.1",
44
+ "@react-aria/combobox": "^3.13.1",
45
+ "@react-aria/dialog": "^3.5.29",
46
+ "@react-aria/dnd": "^3.11.1",
47
+ "@react-aria/focus": "^3.21.1",
48
+ "@react-aria/i18n": "^3.12.12",
49
+ "@react-aria/interactions": "^3.25.5",
50
+ "@react-aria/label": "^3.7.21",
51
+ "@react-aria/numberfield": "^3.12.1",
52
+ "@react-aria/overlays": "^3.29.0",
53
+ "@react-aria/progress": "^3.4.26",
54
+ "@react-aria/tag": "^3.7.1",
55
+ "@react-aria/utils": "^3.30.1",
56
+ "@react-aria/visually-hidden": "^3.8.27",
57
57
  "@react-spectrum/utils": "^3.12.5",
58
- "@react-stately/collections": "^3.12.6",
59
- "@react-stately/combobox": "^3.11.0",
60
- "@react-stately/list": "^3.12.4",
61
- "@react-stately/numberfield": "^3.10.0",
62
- "@react-stately/toggle": "^3.9.0",
63
- "@react-stately/tree": "^3.9.1",
58
+ "@react-stately/collections": "^3.12.7",
59
+ "@react-stately/combobox": "^3.11.1",
60
+ "@react-stately/list": "^3.13.0",
61
+ "@react-stately/numberfield": "^3.10.1",
62
+ "@react-stately/toggle": "^3.9.1",
63
+ "@react-stately/tree": "^3.9.2",
64
64
  "@react-stately/utils": "^3.10.8",
65
- "@react-types/dialog": "^3.5.20",
66
- "@react-types/shared": "^3.31.0",
65
+ "@react-types/dialog": "^3.5.21",
66
+ "@react-types/shared": "^3.32.0",
67
67
  "clsx": "^1.1.1",
68
+ "react-aria-components": "^1.12.1",
68
69
  "react-transition-group": "^4.4.5"
69
70
  },
70
- "gitHead": "afb5a25463f39012c3599e6242c8d308786d11e1"
71
+ "gitHead": "1eefb683b16687ab3fc99c15fffb03a3eca522c5"
71
72
  }