@danske/sapphire-react-lab 0.76.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/LICENSE +7 -0
- package/README.md +15 -0
- package/build/cjs/index.js +2876 -0
- package/build/cjs/index.js.map +1 -0
- package/build/esm/Accordion/index.js +11 -0
- package/build/esm/Accordion/index.js.map +1 -0
- package/build/esm/Accordion/src/Accordion.js +72 -0
- package/build/esm/Accordion/src/Accordion.js.map +1 -0
- package/build/esm/Accordion/src/AccordionHeading.js +49 -0
- package/build/esm/Accordion/src/AccordionHeading.js.map +1 -0
- package/build/esm/Accordion/src/AccordionItem.js +68 -0
- package/build/esm/Accordion/src/AccordionItem.js.map +1 -0
- package/build/esm/Accordion/src/useTreeState.js +42 -0
- package/build/esm/Accordion/src/useTreeState.js.map +1 -0
- package/build/esm/Avatar/src/Avatar.js +63 -0
- package/build/esm/Avatar/src/Avatar.js.map +1 -0
- package/build/esm/Calendar/i18n/da-DK.js +9 -0
- package/build/esm/Calendar/i18n/da-DK.js.map +1 -0
- package/build/esm/Calendar/i18n/de-DE.js +9 -0
- package/build/esm/Calendar/i18n/de-DE.js.map +1 -0
- package/build/esm/Calendar/i18n/en-US.js +9 -0
- package/build/esm/Calendar/i18n/en-US.js.map +1 -0
- package/build/esm/Calendar/i18n/fi-FI.js +9 -0
- package/build/esm/Calendar/i18n/fi-FI.js.map +1 -0
- package/build/esm/Calendar/i18n/index.js +20 -0
- package/build/esm/Calendar/i18n/index.js.map +1 -0
- package/build/esm/Calendar/i18n/nb-NO.js +9 -0
- package/build/esm/Calendar/i18n/nb-NO.js.map +1 -0
- package/build/esm/Calendar/i18n/pl-PL.js +9 -0
- package/build/esm/Calendar/i18n/pl-PL.js.map +1 -0
- package/build/esm/Calendar/i18n/sv-SE.js +9 -0
- package/build/esm/Calendar/i18n/sv-SE.js.map +1 -0
- package/build/esm/Calendar/src/Calendar.js +122 -0
- package/build/esm/Calendar/src/Calendar.js.map +1 -0
- package/build/esm/Calendar/src/CalendarButtons.js +96 -0
- package/build/esm/Calendar/src/CalendarButtons.js.map +1 -0
- package/build/esm/Calendar/src/CalendarDaysGrid.js +169 -0
- package/build/esm/Calendar/src/CalendarDaysGrid.js.map +1 -0
- package/build/esm/Calendar/src/CalendarHeader.js +58 -0
- package/build/esm/Calendar/src/CalendarHeader.js.map +1 -0
- package/build/esm/Calendar/src/CalendarMonthOrYearCell.js +79 -0
- package/build/esm/Calendar/src/CalendarMonthOrYearCell.js.map +1 -0
- package/build/esm/Calendar/src/CalendarMonthsGrid.js +58 -0
- package/build/esm/Calendar/src/CalendarMonthsGrid.js.map +1 -0
- package/build/esm/Calendar/src/CalendarPageAnimation.js +67 -0
- package/build/esm/Calendar/src/CalendarPageAnimation.js.map +1 -0
- package/build/esm/Calendar/src/CalendarYearsGrid.js +52 -0
- package/build/esm/Calendar/src/CalendarYearsGrid.js.map +1 -0
- package/build/esm/Calendar/src/RangeCalendar.js +119 -0
- package/build/esm/Calendar/src/RangeCalendar.js.map +1 -0
- package/build/esm/Calendar/src/useCustomDurationCalendarGrid.js +57 -0
- package/build/esm/Calendar/src/useCustomDurationCalendarGrid.js.map +1 -0
- package/build/esm/Calendar/src/useRangeCalendarState.js +57 -0
- package/build/esm/Calendar/src/useRangeCalendarState.js.map +1 -0
- package/build/esm/Calendar/src/useSapphireCalendarState.js +86 -0
- package/build/esm/Calendar/src/useSapphireCalendarState.js.map +1 -0
- package/build/esm/Calendar/src/utils.js +12 -0
- package/build/esm/Calendar/src/utils.js.map +1 -0
- package/build/esm/DateField/i18n/da-DK.js +7 -0
- package/build/esm/DateField/i18n/da-DK.js.map +1 -0
- package/build/esm/DateField/i18n/de-DE.js +7 -0
- package/build/esm/DateField/i18n/de-DE.js.map +1 -0
- package/build/esm/DateField/i18n/en-US.js +7 -0
- package/build/esm/DateField/i18n/en-US.js.map +1 -0
- package/build/esm/DateField/i18n/fi-FI.js +7 -0
- package/build/esm/DateField/i18n/fi-FI.js.map +1 -0
- package/build/esm/DateField/i18n/index.js +20 -0
- package/build/esm/DateField/i18n/index.js.map +1 -0
- package/build/esm/DateField/i18n/nb-NO.js +7 -0
- package/build/esm/DateField/i18n/nb-NO.js.map +1 -0
- package/build/esm/DateField/i18n/pl-PL.js +7 -0
- package/build/esm/DateField/i18n/pl-PL.js.map +1 -0
- package/build/esm/DateField/i18n/sv-SE.js +7 -0
- package/build/esm/DateField/i18n/sv-SE.js.map +1 -0
- package/build/esm/DateField/src/DateField.js +126 -0
- package/build/esm/DateField/src/DateField.js.map +1 -0
- package/build/esm/DateField/src/DateFieldButton.js +44 -0
- package/build/esm/DateField/src/DateFieldButton.js.map +1 -0
- package/build/esm/DateField/src/DateInput.js +81 -0
- package/build/esm/DateField/src/DateInput.js.map +1 -0
- package/build/esm/DateField/src/DateRangeField.js +151 -0
- package/build/esm/DateField/src/DateRangeField.js.map +1 -0
- package/build/esm/DateField/src/DateRangeInput.js +90 -0
- package/build/esm/DateField/src/DateRangeInput.js.map +1 -0
- package/build/esm/DateField/src/DateSegment.js +52 -0
- package/build/esm/DateField/src/DateSegment.js.map +1 -0
- package/build/esm/DateField/src/helpers.js +14 -0
- package/build/esm/DateField/src/helpers.js.map +1 -0
- package/build/esm/DateField/src/useDateRangePickerState.js +57 -0
- package/build/esm/DateField/src/useDateRangePickerState.js.map +1 -0
- package/build/esm/DateField/src/utils/placeholders.js +91 -0
- package/build/esm/DateField/src/utils/placeholders.js.map +1 -0
- package/build/esm/DateField/src/utils/segments.js +46 -0
- package/build/esm/DateField/src/utils/segments.js.map +1 -0
- package/build/esm/FeedbackMessage/src/FeedbackMessage.js +55 -0
- package/build/esm/FeedbackMessage/src/FeedbackMessage.js.map +1 -0
- package/build/esm/Fieldset/src/Fieldset.js +77 -0
- package/build/esm/Fieldset/src/Fieldset.js.map +1 -0
- package/build/esm/Filtering/src/FilterDropdown.js +61 -0
- package/build/esm/Filtering/src/FilterDropdown.js.map +1 -0
- package/build/esm/NotificationBadge/src/NotificationBadge.js +72 -0
- package/build/esm/NotificationBadge/src/NotificationBadge.js.map +1 -0
- package/build/esm/SearchField/src/SearchField.js +115 -0
- package/build/esm/SearchField/src/SearchField.js.map +1 -0
- package/build/esm/SearchField/src/useComboBoxState.js +42 -0
- package/build/esm/SearchField/src/useComboBoxState.js.map +1 -0
- package/build/esm/Spinner/src/Spinner.js +46 -0
- package/build/esm/Spinner/src/Spinner.js.map +1 -0
- package/build/esm/Toast/src/Toast.js +66 -0
- package/build/esm/Toast/src/Toast.js.map +1 -0
- package/build/esm/Toast/src/ToastProvider.js +53 -0
- package/build/esm/Toast/src/ToastProvider.js.map +1 -0
- package/build/esm/Toast/src/ToastRegion.js +56 -0
- package/build/esm/Toast/src/ToastRegion.js.map +1 -0
- package/build/esm/Toast/src/context.js +10 -0
- package/build/esm/Toast/src/context.js.map +1 -0
- package/build/esm/Toast/src/useShowToast.js +15 -0
- package/build/esm/Toast/src/useShowToast.js.map +1 -0
- package/build/esm/ToggleButton/src/ToggleButton.js +85 -0
- package/build/esm/ToggleButton/src/ToggleButton.js.map +1 -0
- package/build/esm/Typography/index.js +14 -0
- package/build/esm/Typography/index.js.map +1 -0
- package/build/esm/Typography/src/Body.js +66 -0
- package/build/esm/Typography/src/Body.js.map +1 -0
- package/build/esm/Typography/src/Caption.js +59 -0
- package/build/esm/Typography/src/Caption.js.map +1 -0
- package/build/esm/Typography/src/Heading.js +55 -0
- package/build/esm/Typography/src/Heading.js.map +1 -0
- package/build/esm/Typography/src/Subheading.js +63 -0
- package/build/esm/Typography/src/Subheading.js.map +1 -0
- package/build/esm/index.js +21 -0
- package/build/esm/index.js.map +1 -0
- package/build/index.d.ts +746 -0
- package/package.json +65 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DateSegment.js","sources":["../../../../src/DateField/src/DateSegment.tsx"],"sourcesContent":["import React, { useRef } from 'react';\nimport { useDateSegment } from '@react-aria/datepicker';\nimport {\n DateFieldState,\n DateSegment as DateSegmentType,\n} from '@react-stately/datepicker';\nimport styles from '@danske/sapphire-css/components/dateField/dateField.module.css';\nimport clsx from 'clsx';\nimport { setPlaceholderLanguage } from './utils/segments';\nimport { useLocale } from '@react-aria/i18n';\n\nexport type DateSegmentProps = {\n segment: DateSegmentType;\n state: DateFieldState;\n};\n\nexport const DateSegment = ({ segment, state }: DateSegmentProps) =>\n segment.type === 'literal' ? (\n <SeparatorSegment segment={segment} />\n ) : (\n <EditableSegment segment={segment} state={state}></EditableSegment>\n );\n\nconst SeparatorSegment = ({ segment }: { segment: DateSegmentType }) => (\n <span\n aria-hidden=\"true\"\n className={clsx(styles['sapphire-date-field__segment'])}\n >\n {segment.text}\n </span>\n);\n\nconst EditableSegment = ({ segment, state }: DateSegmentProps) => {\n const ref = useRef(null);\n const { segmentProps } = useDateSegment(segment, state, ref);\n const { locale } = useLocale();\n const segmentWithTranslatedPlaceholders = setPlaceholderLanguage(\n segment,\n locale\n );\n\n return (\n <div\n {...segmentProps}\n style={segmentProps.style}\n ref={ref}\n className={clsx(styles['sapphire-date-field__segment'], {\n [styles['sapphire-date-field__segment--filled']]:\n !segmentWithTranslatedPlaceholders.isPlaceholder,\n })}\n >\n {segmentWithTranslatedPlaceholders.text}\n </div>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAgBa,MAAA,WAAA,GAAc,CAAC,EAAE,OAAA,EAAS,YACrC,OAAQ,CAAA,IAAA,KAAS,SACf,mBAAA,KAAA,CAAA,aAAA,CAAC,gBAAD,EAAA;AAAA,EAAkB,OAAA;AAAA,CAAA,CAAA,uCAEjB,eAAD,EAAA;AAAA,EAAiB,OAAA;AAAA,EAAkB,KAAA;AAAA,CAAA,EAAA;AAGvC,MAAM,gBAAmB,GAAA,CAAC,EAAE,OAAA,EAAA,yCACzB,MAAD,EAAA;AAAA,EACE,aAAY,EAAA,MAAA;AAAA,EACZ,SAAA,EAAW,KAAK,MAAO,CAAA,8BAAA,CAAA,CAAA;AAAA,CAAA,EAEtB,OAAQ,CAAA,IAAA,CAAA,CAAA;AAIb,MAAM,eAAkB,GAAA,CAAC,EAAE,OAAA,EAAS,KAA8B,EAAA,KAAA;AAChE,EAAA,MAAM,MAAM,MAAO,CAAA,IAAA,CAAA,CAAA;AACnB,EAAA,MAAM,EAAE,YAAA,EAAA,GAAiB,cAAe,CAAA,OAAA,EAAS,KAAO,EAAA,GAAA,CAAA,CAAA;AACxD,EAAA,MAAM,EAAE,MAAW,EAAA,GAAA,SAAA,EAAA,CAAA;AACnB,EAAM,MAAA,iCAAA,GAAoC,uBACxC,OACA,EAAA,MAAA,CAAA,CAAA;AAGF,EACE,uBAAA,KAAA,CAAA,aAAA,CAAC,KAAD,EAAA,aAAA,CAAA,cAAA,CAAA,EAAA,EACM,YADN,CAAA,EAAA;AAAA,IAEE,OAAO,YAAa,CAAA,KAAA;AAAA,IACpB,GAAA;AAAA,IACA,SAAA,EAAW,IAAK,CAAA,MAAA,CAAO,8BAAiC,CAAA,EAAA;AAAA,MACrD,CAAA,MAAA,CAAO,sCACN,CAAA,GAAA,CAAC,iCAAkC,CAAA,aAAA;AAAA,KAAA,CAAA;AAAA,GAAA,CAAA,EAGtC,iCAAkC,CAAA,IAAA,CAAA,CAAA;AAAA,CAAA;;;;"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
const isEndDateBeforeStartDate = (dateRange) => dateRange && dateRange.end && dateRange.start && dateRange.end.compare(dateRange.start) < 0;
|
|
2
|
+
const isDateOutsideValidRange = (value, minValue, maxValue) => {
|
|
3
|
+
if (value) {
|
|
4
|
+
if (minValue && value.compare(minValue) < 0) {
|
|
5
|
+
return "before";
|
|
6
|
+
}
|
|
7
|
+
if (maxValue && value.compare(maxValue) > 0) {
|
|
8
|
+
return "after";
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export { isDateOutsideValidRange, isEndDateBeforeStartDate };
|
|
14
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sources":["../../../../src/DateField/src/helpers.ts"],"sourcesContent":["/**\n * The helpers in this file are meant for external use.\n * We're exporting these.\n */\nimport { DateValue } from '@react-aria/datepicker';\nimport { RangeValue } from '@react-types/shared';\n\nexport const isEndDateBeforeStartDate = (\n dateRange?: RangeValue<DateValue> | null\n) =>\n dateRange &&\n dateRange.end &&\n dateRange.start &&\n dateRange.end.compare(dateRange.start) < 0;\n\nexport const isDateOutsideValidRange = (\n value?: DateValue | null,\n minValue?: DateValue | null,\n maxValue?: DateValue | null\n) => {\n if (value) {\n if (minValue && value.compare(minValue) < 0) {\n return 'before';\n }\n if (maxValue && value.compare(maxValue) > 0) {\n return 'after';\n }\n }\n};\n"],"names":[],"mappings":"AAOO,MAAM,wBAA2B,GAAA,CACtC,SAEA,KAAA,SAAA,IACA,SAAU,CAAA,GAAA,IACV,SAAU,CAAA,KAAA,IACV,SAAU,CAAA,GAAA,CAAI,OAAQ,CAAA,SAAA,CAAU,KAAS,CAAA,GAAA,EAAA;AAEpC,MAAM,uBAA0B,GAAA,CACrC,KACA,EAAA,QAAA,EACA,QACG,KAAA;AACH,EAAA,IAAI,KAAO,EAAA;AACT,IAAA,IAAI,QAAY,IAAA,KAAA,CAAM,OAAQ,CAAA,QAAA,CAAA,GAAY,CAAG,EAAA;AAC3C,MAAO,OAAA,QAAA,CAAA;AAAA,KAAA;AAET,IAAA,IAAI,QAAY,IAAA,KAAA,CAAM,OAAQ,CAAA,QAAA,CAAA,GAAY,CAAG,EAAA;AAC3C,MAAO,OAAA,OAAA,CAAA;AAAA,KAAA;AAAA,GAAA;AAAA;;;;"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { useDateRangePickerState as useDateRangePickerState$1 } from '@react-stately/datepicker';
|
|
2
|
+
import { useRef } from 'react';
|
|
3
|
+
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __defProps = Object.defineProperties;
|
|
6
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
7
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
8
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
10
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
11
|
+
var __spreadValues = (a, b) => {
|
|
12
|
+
for (var prop in b || (b = {}))
|
|
13
|
+
if (__hasOwnProp.call(b, prop))
|
|
14
|
+
__defNormalProp(a, prop, b[prop]);
|
|
15
|
+
if (__getOwnPropSymbols)
|
|
16
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
17
|
+
if (__propIsEnum.call(b, prop))
|
|
18
|
+
__defNormalProp(a, prop, b[prop]);
|
|
19
|
+
}
|
|
20
|
+
return a;
|
|
21
|
+
};
|
|
22
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
23
|
+
var __objRest = (source, exclude) => {
|
|
24
|
+
var target = {};
|
|
25
|
+
for (var prop in source)
|
|
26
|
+
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
27
|
+
target[prop] = source[prop];
|
|
28
|
+
if (source != null && __getOwnPropSymbols)
|
|
29
|
+
for (var prop of __getOwnPropSymbols(source)) {
|
|
30
|
+
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
|
|
31
|
+
target[prop] = source[prop];
|
|
32
|
+
}
|
|
33
|
+
return target;
|
|
34
|
+
};
|
|
35
|
+
const useDateRangePickerState = (_a) => {
|
|
36
|
+
var _b = _a, {
|
|
37
|
+
onChange
|
|
38
|
+
} = _b, options = __objRest(_b, [
|
|
39
|
+
"onChange"
|
|
40
|
+
]);
|
|
41
|
+
const lastPredefinedRange = useRef(void 0);
|
|
42
|
+
const state = useDateRangePickerState$1(__spreadProps(__spreadValues({}, options), {
|
|
43
|
+
onChange: (value) => {
|
|
44
|
+
onChange == null ? void 0 : onChange(value, lastPredefinedRange.current);
|
|
45
|
+
lastPredefinedRange.current = void 0;
|
|
46
|
+
}
|
|
47
|
+
}));
|
|
48
|
+
return __spreadProps(__spreadValues({}, state), {
|
|
49
|
+
setDateRange: (value, predefinedRange) => {
|
|
50
|
+
lastPredefinedRange.current = predefinedRange;
|
|
51
|
+
state.setDateRange(value);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
export { useDateRangePickerState };
|
|
57
|
+
//# sourceMappingURL=useDateRangePickerState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDateRangePickerState.js","sources":["../../../../src/DateField/src/useDateRangePickerState.ts"],"sourcesContent":["import { useDateRangePickerState as originalUseDateRangePickerState } from '@react-stately/datepicker';\nimport type {\n DateRangePickerStateOptions as OriginalDateRangePickerOptions,\n DateRangePickerState as OriginalDateRangePickerState,\n} from '@react-stately/datepicker';\nimport { DateValue } from '@internationalized/date';\nimport { useRef } from 'react';\n\ntype OriginalOnChange<T extends DateValue> = NonNullable<\n OriginalDateRangePickerOptions<T>['onChange']\n>;\n\nexport type DateRangePickerStateOptions<\n T extends DateValue,\n P extends string,\n O extends OriginalOnChange<T> = OriginalOnChange<T>\n> = Omit<OriginalDateRangePickerOptions<T>, 'onChange'> & {\n // We allow clearing the DateRangeField and thus have to allow a null value\n // which is currently not part of the DateRangePickerProps type:\n // https://unpkg.com/browse/@react-types/datepicker@3.5.0/src/index.d.ts#:~:text=ValueBase%3CRangeValue%3CT%3E%20%7C%20null%2C%20RangeValue%3CMappedDateValue%3CT%3E%3E\n onChange?: (\n value: Parameters<O>[0] | null,\n predefinedRange?: P\n ) => ReturnType<O>;\n};\n\ntype OriginalSetDate = OriginalDateRangePickerState['setDateRange'];\n\nexport type DateRangePickerState<P extends string> = Omit<\n OriginalDateRangePickerState,\n 'setDateRange'\n> & {\n setDateRange: (\n value: Parameters<OriginalSetDate>[0],\n predefinedRange?: P\n ) => ReturnType<OriginalSetDate>;\n};\n\n/**\n * A wrapper to allow for the onChange callback to have extra info\n **/\nexport const useDateRangePickerState = <P extends string>({\n onChange,\n ...options\n}: DateRangePickerStateOptions<DateValue, P>): DateRangePickerState<P> => {\n const lastPredefinedRange = useRef<P | undefined>(undefined);\n\n const state = originalUseDateRangePickerState({\n ...options,\n onChange: (value) => {\n onChange?.(value, lastPredefinedRange.current);\n lastPredefinedRange.current = undefined;\n },\n });\n\n return {\n ...state,\n setDateRange: (value, predefinedRange) => {\n lastPredefinedRange.current = predefinedRange;\n state.setDateRange(value);\n },\n };\n};\n"],"names":["originalUseDateRangePickerState"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCa,MAAA,uBAAA,GAA0B,CAAmB,EAGgB,KAAA;AAHhB,EACxD,IAAA,EAAA,GAAA,EAAA,EAAA;AAAA,IAAA,QAAA;AAAA,GADwD,GAAA,EAAA,EAErD,oBAFqD,EAErD,EAAA;AAAA,IADH,UAAA;AAAA,GAAA,CAAA,CAAA;AAGA,EAAA,MAAM,sBAAsB,MAAsB,CAAA,KAAA,CAAA,CAAA,CAAA;AAElD,EAAM,MAAA,KAAA,GAAQA,yBAAgC,CAAA,aAAA,CAAA,cAAA,CAAA,EAAA,EACzC,OADyC,CAAA,EAAA;AAAA,IAE5C,QAAA,EAAU,CAAC,KAAU,KAAA;AACnB,MAAA,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAW,OAAO,mBAAoB,CAAA,OAAA,CAAA,CAAA;AACtC,MAAA,mBAAA,CAAoB,OAAU,GAAA,KAAA,CAAA,CAAA;AAAA,KAAA;AAAA,GAAA,CAAA,CAAA,CAAA;AAIlC,EAAA,OAAO,iCACF,KADE,CAAA,EAAA;AAAA,IAEL,YAAA,EAAc,CAAC,KAAA,EAAO,eAAoB,KAAA;AACxC,MAAA,mBAAA,CAAoB,OAAU,GAAA,eAAA,CAAA;AAC9B,MAAA,KAAA,CAAM,YAAa,CAAA,KAAA,CAAA,CAAA;AAAA,KAAA;AAAA,GAAA,CAAA,CAAA;AAAA;;;;"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { LocalizedStringDictionary } from '@internationalized/string';
|
|
2
|
+
|
|
3
|
+
const placeholders = new LocalizedStringDictionary({
|
|
4
|
+
ach: { year: "mwaka", month: "dwe", day: "nino" },
|
|
5
|
+
af: { year: "jjjj", month: "mm", day: "dd" },
|
|
6
|
+
am: { year: "\u12D3\u12D3\u12D3\u12D3", month: "\u121A\u121C", day: "\u1240\u1240" },
|
|
7
|
+
an: { year: "aaaa", month: "mm", day: "dd" },
|
|
8
|
+
ar: { year: "\u0633\u0646\u0629", month: "\u0634\u0647\u0631", day: "\u064A\u0648\u0645" },
|
|
9
|
+
ast: { year: "aaaa", month: "mm", day: "dd" },
|
|
10
|
+
az: { year: "iiii", month: "aa", day: "gg" },
|
|
11
|
+
be: { year: "\u0433\u0433\u0433\u0433", month: "\u043C\u043C", day: "\u0434\u0434" },
|
|
12
|
+
bg: { year: "\u0433\u0433\u0433\u0433", month: "\u043C\u043C", day: "\u0434\u0434" },
|
|
13
|
+
bn: { year: "yyyy", month: "\u09AE\u09BF\u09AE\u09BF", day: "dd" },
|
|
14
|
+
br: { year: "bbbb", month: "mm", day: "dd" },
|
|
15
|
+
bs: { year: "gggg", month: "mm", day: "dd" },
|
|
16
|
+
ca: { year: "aaaa", month: "mm", day: "dd" },
|
|
17
|
+
cak: { year: "jjjj", month: "ii", day: "q'q'" },
|
|
18
|
+
ckb: { year: "\u0633\u0627\u06B5", month: "\u0645\u0627\u0646\u06AF", day: "\u0695\u06C6\u0698" },
|
|
19
|
+
cs: { year: "rrrr", month: "mm", day: "dd" },
|
|
20
|
+
cy: { year: "bbbb", month: "mm", day: "dd" },
|
|
21
|
+
da: { year: "\xE5\xE5\xE5\xE5", month: "mm", day: "dd" },
|
|
22
|
+
de: { year: "jjjj", month: "mm", day: "tt" },
|
|
23
|
+
dsb: { year: "llll", month: "mm", day: "\u017A\u017A" },
|
|
24
|
+
el: { year: "\u03B5\u03B5\u03B5\u03B5", month: "\u03BC\u03BC", day: "\u03B7\u03B7" },
|
|
25
|
+
en: { year: "yyyy", month: "mm", day: "dd" },
|
|
26
|
+
eo: { year: "jjjj", month: "mm", day: "tt" },
|
|
27
|
+
es: { year: "aaaa", month: "mm", day: "dd" },
|
|
28
|
+
et: { year: "aaaa", month: "kk", day: "pp" },
|
|
29
|
+
eu: { year: "uuuu", month: "hh", day: "ee" },
|
|
30
|
+
fa: { year: "\u0633\u0627\u0644", month: "\u0645\u0627\u0647", day: "\u0631\u0648\u0632" },
|
|
31
|
+
ff: { year: "hhhh", month: "ll", day: "\xF1\xF1" },
|
|
32
|
+
fi: { year: "vvvv", month: "kk", day: "pp" },
|
|
33
|
+
fr: { year: "aaaa", month: "mm", day: "jj" },
|
|
34
|
+
fy: { year: "jjjj", month: "mm", day: "dd" },
|
|
35
|
+
ga: { year: "bbbb", month: "mm", day: "ll" },
|
|
36
|
+
gd: { year: "bbbb", month: "mm", day: "ll" },
|
|
37
|
+
gl: { year: "aaaa", month: "mm", day: "dd" },
|
|
38
|
+
he: { year: "\u05E9\u05E0\u05D4", month: "\u05D7\u05D5\u05D3\u05E9", day: "\u05D9\u05D5\u05DD" },
|
|
39
|
+
hr: { year: "gggg", month: "mm", day: "dd" },
|
|
40
|
+
hsb: { year: "llll", month: "mm", day: "dd" },
|
|
41
|
+
hu: { year: "\xE9\xE9\xE9\xE9", month: "hh", day: "nn" },
|
|
42
|
+
ia: { year: "aaaa", month: "mm", day: "dd" },
|
|
43
|
+
id: { year: "tttt", month: "bb", day: "hh" },
|
|
44
|
+
it: { year: "aaaa", month: "mm", day: "gg" },
|
|
45
|
+
ja: { year: " \u5E74 ", month: "\u6708", day: "\u65E5" },
|
|
46
|
+
ka: { year: "\u10EC\u10EC\u10EC\u10EC", month: "\u10D7\u10D7", day: "\u10E0\u10E0" },
|
|
47
|
+
kk: { year: "\u0436\u0436\u0436\u0436", month: "\u0430\u0430", day: "\u043A\u043A" },
|
|
48
|
+
kn: { year: "\u0CB5\u0CB5\u0CB5\u0CB5", month: "\u0CAE\u0CBF\u0CAE\u0CC0", day: "\u0CA6\u0CBF\u0CA6\u0CBF" },
|
|
49
|
+
ko: { year: "\uC5F0\uB3C4", month: "\uC6D4", day: "\uC77C" },
|
|
50
|
+
lb: { year: "jjjj", month: "mm", day: "dd" },
|
|
51
|
+
lo: { year: "\u0E9B\u0E9B\u0E9B\u0E9B", month: "\u0E94\u0E94", day: "\u0EA7\u0EA7" },
|
|
52
|
+
lt: { year: "mmmm", month: "mm", day: "dd" },
|
|
53
|
+
lv: { year: "gggg", month: "mm", day: "dd" },
|
|
54
|
+
meh: { year: "aaaa", month: "mm", day: "dd" },
|
|
55
|
+
ml: { year: "\u0D35\u0D7C\u0D37\u0D02", month: "\u0D2E\u0D3E\u0D38\u0D02", day: "\u0D24\u0D40\u0D2F\u0D24\u0D3F" },
|
|
56
|
+
ms: { year: "tttt", month: "mm", day: "hh" },
|
|
57
|
+
nl: { year: "jjjj", month: "mm", day: "dd" },
|
|
58
|
+
nn: { year: "\xE5\xE5\xE5\xE5", month: "mm", day: "dd" },
|
|
59
|
+
no: { year: "\xE5\xE5\xE5\xE5", month: "mm", day: "dd" },
|
|
60
|
+
oc: { year: "aaaa", month: "mm", day: "jj" },
|
|
61
|
+
pl: { year: "rrrr", month: "mm", day: "dd" },
|
|
62
|
+
pt: { year: "aaaa", month: "mm", day: "dd" },
|
|
63
|
+
rm: { year: "oooo", month: "mm", day: "dd" },
|
|
64
|
+
ro: { year: "aaaa", month: "ll", day: "zz" },
|
|
65
|
+
ru: { year: "\u0433\u0433\u0433\u0433", month: "\u043C\u043C", day: "\u0434\u0434" },
|
|
66
|
+
sc: { year: "aaaa", month: "mm", day: "dd" },
|
|
67
|
+
scn: { year: "aaaa", month: "mm", day: "jj" },
|
|
68
|
+
sk: { year: "rrrr", month: "mm", day: "dd" },
|
|
69
|
+
sl: { year: "llll", month: "mm", day: "dd" },
|
|
70
|
+
sr: { year: "\u0433\u0433\u0433\u0433", month: "\u043C\u043C", day: "\u0434\u0434" },
|
|
71
|
+
sv: { year: "\xE5\xE5\xE5\xE5", month: "mm", day: "dd" },
|
|
72
|
+
szl: { year: "rrrr", month: "mm", day: "dd" },
|
|
73
|
+
tg: { year: "\u0441\u0441\u0441\u0441", month: "\u043C\u043C", day: "\u0440\u0440" },
|
|
74
|
+
th: { year: "\u0E1B\u0E1B\u0E1B\u0E1B", month: "\u0E14\u0E14", day: "\u0E27\u0E27" },
|
|
75
|
+
tr: { year: "yyyy", month: "aa", day: "gg" },
|
|
76
|
+
uk: { year: "\u0440\u0440\u0440\u0440", month: "\u043C\u043C", day: "\u0434\u0434" },
|
|
77
|
+
"zh-CN": { year: "\u5E74", month: "\u6708", day: "\u65E5" },
|
|
78
|
+
"zh-TW": { year: "\u5E74", month: "\u6708", day: "\u65E5" }
|
|
79
|
+
}, "en");
|
|
80
|
+
function getPlaceholder(field, value, locale) {
|
|
81
|
+
if (field === "era" || field === "dayPeriod") {
|
|
82
|
+
return value;
|
|
83
|
+
}
|
|
84
|
+
if (field === "year" || field === "month" || field === "day") {
|
|
85
|
+
return placeholders.getStringForLocale(field, locale);
|
|
86
|
+
}
|
|
87
|
+
return "\u2013\u2013";
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export { getPlaceholder };
|
|
91
|
+
//# sourceMappingURL=placeholders.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"placeholders.js","sources":["../../../../../src/DateField/src/utils/placeholders.ts"],"sourcesContent":["/**\n * This file is a copy of this private file from react-stately.\n * https://github.com/adobe/react-spectrum/blob/main/packages/%40react-stately/datepicker/src/placeholders.ts\n *\n * It represents the placeholder values used in date and date range\n * fields when they are empty. The placeholders from here are then\n * formatted according to the locale.\n *\n * We need this because we have a requirement not supported by react-aria.\n * We need to be able to format a date based on a locale which is different\n * than the app's locale. This means that our placeholders can be in \"danish\"\n * while the actual date format is in \"swedish\".\n *\n * Examples:\n * - UI locale: sv-SE. Date format locale: sv-SE: 'ÅÅÅÅ-MM-DD'.\n * - UI locale: en. Date formate locale: sv-SE: 'YYYY-MM-DD'\n * - UI locale: sv-SE. Date format locale: en-US: 'MM/DD/ÅÅÅÅ'\n *\n * This is arguably counter-intuitive. But sapphire is used in some apps\n * where the user can decide the language and the date format separately.\n * It is up to the app to allow sane combinations.\n */\n\nimport { LocalizedStringDictionary } from '@internationalized/string';\n\n// These placeholders are based on the strings used by the <input type=\"date\">\n// implementations in Chrome and Firefox. Additional languages are supported\n// here than React Spectrum's typical translations.\nconst placeholders = new LocalizedStringDictionary(\n {\n ach: { year: 'mwaka', month: 'dwe', day: 'nino' },\n af: { year: 'jjjj', month: 'mm', day: 'dd' },\n am: { year: 'ዓዓዓዓ', month: 'ሚሜ', day: 'ቀቀ' },\n an: { year: 'aaaa', month: 'mm', day: 'dd' },\n ar: { year: 'سنة', month: 'شهر', day: 'يوم' },\n ast: { year: 'aaaa', month: 'mm', day: 'dd' },\n az: { year: 'iiii', month: 'aa', day: 'gg' },\n be: { year: 'гггг', month: 'мм', day: 'дд' },\n bg: { year: 'гггг', month: 'мм', day: 'дд' },\n bn: { year: 'yyyy', month: 'মিমি', day: 'dd' },\n br: { year: 'bbbb', month: 'mm', day: 'dd' },\n bs: { year: 'gggg', month: 'mm', day: 'dd' },\n ca: { year: 'aaaa', month: 'mm', day: 'dd' },\n cak: { year: 'jjjj', month: 'ii', day: \"q'q'\" },\n ckb: { year: 'ساڵ', month: 'مانگ', day: 'ڕۆژ' },\n cs: { year: 'rrrr', month: 'mm', day: 'dd' },\n cy: { year: 'bbbb', month: 'mm', day: 'dd' },\n da: { year: 'åååå', month: 'mm', day: 'dd' },\n de: { year: 'jjjj', month: 'mm', day: 'tt' },\n dsb: { year: 'llll', month: 'mm', day: 'źź' },\n el: { year: 'εεεε', month: 'μμ', day: 'ηη' },\n en: { year: 'yyyy', month: 'mm', day: 'dd' },\n eo: { year: 'jjjj', month: 'mm', day: 'tt' },\n es: { year: 'aaaa', month: 'mm', day: 'dd' },\n et: { year: 'aaaa', month: 'kk', day: 'pp' },\n eu: { year: 'uuuu', month: 'hh', day: 'ee' },\n fa: { year: 'سال', month: 'ماه', day: 'روز' },\n ff: { year: 'hhhh', month: 'll', day: 'ññ' },\n fi: { year: 'vvvv', month: 'kk', day: 'pp' },\n fr: { year: 'aaaa', month: 'mm', day: 'jj' },\n fy: { year: 'jjjj', month: 'mm', day: 'dd' },\n ga: { year: 'bbbb', month: 'mm', day: 'll' },\n gd: { year: 'bbbb', month: 'mm', day: 'll' },\n gl: { year: 'aaaa', month: 'mm', day: 'dd' },\n he: { year: 'שנה', month: 'חודש', day: 'יום' },\n hr: { year: 'gggg', month: 'mm', day: 'dd' },\n hsb: { year: 'llll', month: 'mm', day: 'dd' },\n hu: { year: 'éééé', month: 'hh', day: 'nn' },\n ia: { year: 'aaaa', month: 'mm', day: 'dd' },\n id: { year: 'tttt', month: 'bb', day: 'hh' },\n it: { year: 'aaaa', month: 'mm', day: 'gg' },\n ja: { year: ' 年 ', month: '月', day: '日' },\n ka: { year: 'წწწწ', month: 'თთ', day: 'რრ' },\n kk: { year: 'жжжж', month: 'аа', day: 'кк' },\n kn: { year: 'ವವವವ', month: 'ಮಿಮೀ', day: 'ದಿದಿ' },\n ko: { year: '연도', month: '월', day: '일' },\n lb: { year: 'jjjj', month: 'mm', day: 'dd' },\n lo: { year: 'ປປປປ', month: 'ດດ', day: 'ວວ' },\n lt: { year: 'mmmm', month: 'mm', day: 'dd' },\n lv: { year: 'gggg', month: 'mm', day: 'dd' },\n meh: { year: 'aaaa', month: 'mm', day: 'dd' },\n ml: { year: 'വർഷം', month: 'മാസം', day: 'തീയതി' },\n ms: { year: 'tttt', month: 'mm', day: 'hh' },\n nl: { year: 'jjjj', month: 'mm', day: 'dd' },\n nn: { year: 'åååå', month: 'mm', day: 'dd' },\n no: { year: 'åååå', month: 'mm', day: 'dd' },\n oc: { year: 'aaaa', month: 'mm', day: 'jj' },\n pl: { year: 'rrrr', month: 'mm', day: 'dd' },\n pt: { year: 'aaaa', month: 'mm', day: 'dd' },\n rm: { year: 'oooo', month: 'mm', day: 'dd' },\n ro: { year: 'aaaa', month: 'll', day: 'zz' },\n ru: { year: 'гггг', month: 'мм', day: 'дд' },\n sc: { year: 'aaaa', month: 'mm', day: 'dd' },\n scn: { year: 'aaaa', month: 'mm', day: 'jj' },\n sk: { year: 'rrrr', month: 'mm', day: 'dd' },\n sl: { year: 'llll', month: 'mm', day: 'dd' },\n sr: { year: 'гггг', month: 'мм', day: 'дд' },\n sv: { year: 'åååå', month: 'mm', day: 'dd' },\n szl: { year: 'rrrr', month: 'mm', day: 'dd' },\n tg: { year: 'сссс', month: 'мм', day: 'рр' },\n th: { year: 'ปปปป', month: 'ดด', day: 'วว' },\n tr: { year: 'yyyy', month: 'aa', day: 'gg' },\n uk: { year: 'рррр', month: 'мм', day: 'дд' },\n 'zh-CN': { year: '年', month: '月', day: '日' },\n 'zh-TW': { year: '年', month: '月', day: '日' },\n },\n 'en'\n);\n\nexport function getPlaceholder(field: string, value: string, locale: string) {\n // Use the actual placeholder value for the era and day period fields.\n if (field === 'era' || field === 'dayPeriod') {\n return value;\n }\n\n if (field === 'year' || field === 'month' || field === 'day') {\n return placeholders.getStringForLocale(field, locale);\n }\n\n // For time fields (e.g. hour, minute, etc.), use two dashes as the placeholder.\n return '––';\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { getPlaceholder } from './placeholders.js';
|
|
2
|
+
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __defProps = Object.defineProperties;
|
|
5
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
6
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
9
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
10
|
+
var __spreadValues = (a, b) => {
|
|
11
|
+
for (var prop in b || (b = {}))
|
|
12
|
+
if (__hasOwnProp.call(b, prop))
|
|
13
|
+
__defNormalProp(a, prop, b[prop]);
|
|
14
|
+
if (__getOwnPropSymbols)
|
|
15
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
16
|
+
if (__propIsEnum.call(b, prop))
|
|
17
|
+
__defNormalProp(a, prop, b[prop]);
|
|
18
|
+
}
|
|
19
|
+
return a;
|
|
20
|
+
};
|
|
21
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
22
|
+
const segmentTypes = [
|
|
23
|
+
"day",
|
|
24
|
+
"hour",
|
|
25
|
+
"minute",
|
|
26
|
+
"second",
|
|
27
|
+
"era",
|
|
28
|
+
"year",
|
|
29
|
+
"month",
|
|
30
|
+
"dayPeriod",
|
|
31
|
+
"literal",
|
|
32
|
+
"timeZoneName"
|
|
33
|
+
];
|
|
34
|
+
const isAnyModified = (segments) => segments.map(({ type, isPlaceholder }) => {
|
|
35
|
+
return type !== "literal" && !isPlaceholder;
|
|
36
|
+
}).some((isModified) => isModified);
|
|
37
|
+
const setPlaceholderLanguage = (segment, locale) => {
|
|
38
|
+
const placeholder = getPlaceholder(segment.type, segment.text, locale);
|
|
39
|
+
return __spreadProps(__spreadValues({}, segment), {
|
|
40
|
+
text: segment.isPlaceholder ? placeholder : segment.text,
|
|
41
|
+
placeholder
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
export { isAnyModified, segmentTypes, setPlaceholderLanguage };
|
|
46
|
+
//# sourceMappingURL=segments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"segments.js","sources":["../../../../../src/DateField/src/utils/segments.ts"],"sourcesContent":["/**\n * The helpers in this file are meant for internal use.\n */\nimport {\n SegmentType,\n DateSegment as DateSegmentType,\n} from '@react-stately/datepicker';\nimport { getPlaceholder } from './placeholders';\n\n/**\n * The interface from `useDateFieldState` to clear the input is not ideal. We\n * have to manually clear each segment type.\n */\nexport const segmentTypes: SegmentType[] = [\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'era',\n 'year',\n 'month',\n 'dayPeriod',\n 'literal',\n 'timeZoneName',\n];\n\nexport const isAnyModified = (segments: DateSegmentType[]) =>\n segments\n .map(({ type, isPlaceholder }) => {\n // type \"literal\" refers to the segment containing the non-editable separator\n return type !== 'literal' && !isPlaceholder;\n })\n .some((isModified) => isModified);\n\n/**\n * Check out the `getPlaceholder` function's description for\n * an explanation.\n */\nexport const setPlaceholderLanguage = (\n segment: DateSegmentType,\n locale: string\n): DateSegmentType => {\n const placeholder = getPlaceholder(segment.type, segment.text, locale);\n\n return {\n ...segment,\n text: segment.isPlaceholder ? placeholder : segment.text,\n placeholder,\n };\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAaO,MAAM,YAA8B,GAAA;AAAA,EACzC,KAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EACA,WAAA;AAAA,EACA,SAAA;AAAA,EACA,cAAA;AAAA,EAAA;AAGW,MAAA,aAAA,GAAgB,CAAC,QAC5B,KAAA,QAAA,CACG,IAAI,CAAC,EAAE,MAAM,aAAoB,EAAA,KAAA;AAEhC,EAAO,OAAA,IAAA,KAAS,aAAa,CAAC,aAAA,CAAA;AAAA,CAE/B,CAAA,CAAA,IAAA,CAAK,CAAC,UAAe,KAAA,UAAA,EAAA;AAMb,MAAA,sBAAA,GAAyB,CACpC,OAAA,EACA,MACoB,KAAA;AACpB,EAAA,MAAM,WAAc,GAAA,cAAA,CAAe,OAAQ,CAAA,IAAA,EAAM,QAAQ,IAAM,EAAA,MAAA,CAAA,CAAA;AAE/D,EAAA,OAAO,iCACF,OADE,CAAA,EAAA;AAAA,IAEL,IAAM,EAAA,OAAA,CAAQ,aAAgB,GAAA,WAAA,GAAc,OAAQ,CAAA,IAAA;AAAA,IACpD,WAAA;AAAA,GAAA,CAAA,CAAA;AAAA;;;;"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import clsx from 'clsx';
|
|
3
|
+
import { CheckMarkCircle, AlertCircle } from '@danske/sapphire-icons/react';
|
|
4
|
+
import { useThemeCheck, useSapphireStyleProps, Icon, Heading } from '@danske/sapphire-react';
|
|
5
|
+
import styles from '@danske/sapphire-css/components/feedbackMessage/feedbackMessage.module.css';
|
|
6
|
+
|
|
7
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
8
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
10
|
+
var __objRest = (source, exclude) => {
|
|
11
|
+
var target = {};
|
|
12
|
+
for (var prop in source)
|
|
13
|
+
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
14
|
+
target[prop] = source[prop];
|
|
15
|
+
if (source != null && __getOwnPropSymbols)
|
|
16
|
+
for (var prop of __getOwnPropSymbols(source)) {
|
|
17
|
+
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
|
|
18
|
+
target[prop] = source[prop];
|
|
19
|
+
}
|
|
20
|
+
return target;
|
|
21
|
+
};
|
|
22
|
+
const FeedbackMessage = (_a) => {
|
|
23
|
+
var _b = _a, {
|
|
24
|
+
heading,
|
|
25
|
+
body,
|
|
26
|
+
actions,
|
|
27
|
+
type = "neutral"
|
|
28
|
+
} = _b, otherProps = __objRest(_b, [
|
|
29
|
+
"heading",
|
|
30
|
+
"body",
|
|
31
|
+
"actions",
|
|
32
|
+
"type"
|
|
33
|
+
]);
|
|
34
|
+
useThemeCheck();
|
|
35
|
+
const {
|
|
36
|
+
styleProps: { style, className }
|
|
37
|
+
} = useSapphireStyleProps(otherProps);
|
|
38
|
+
return /* @__PURE__ */ React.createElement("div", {
|
|
39
|
+
className: clsx(styles["sapphire-feedback-message"], className),
|
|
40
|
+
style
|
|
41
|
+
}, type !== "neutral" && /* @__PURE__ */ React.createElement("div", {
|
|
42
|
+
className: clsx(styles["sapphire-feedback-message__icon"], styles[`sapphire-feedback-message__icon--${type}`])
|
|
43
|
+
}, /* @__PURE__ */ React.createElement(Icon, {
|
|
44
|
+
size: "xl"
|
|
45
|
+
}, type === "success" ? /* @__PURE__ */ React.createElement(CheckMarkCircle, null) : /* @__PURE__ */ React.createElement(AlertCircle, null))), /* @__PURE__ */ React.createElement("div", {
|
|
46
|
+
className: styles["sapphire-feedback-message__content"]
|
|
47
|
+
}, /* @__PURE__ */ React.createElement(Heading, {
|
|
48
|
+
level: 3
|
|
49
|
+
}, heading), /* @__PURE__ */ React.createElement("section", {
|
|
50
|
+
className: styles["sapphire-feedback-message__body"]
|
|
51
|
+
}, body)), actions);
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
export { FeedbackMessage };
|
|
55
|
+
//# sourceMappingURL=FeedbackMessage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FeedbackMessage.js","sources":["../../../../src/FeedbackMessage/src/FeedbackMessage.tsx"],"sourcesContent":["import React from 'react';\nimport clsx from 'clsx';\nimport { AlertCircle, CheckMarkCircle } from '@danske/sapphire-icons/react';\nimport {\n Heading,\n Icon,\n SapphireStyleProps,\n useSapphireStyleProps,\n useThemeCheck,\n} from '@danske/sapphire-react';\nimport styles from '@danske/sapphire-css/components/feedbackMessage/feedbackMessage.module.css';\n\nexport interface SapphireFeedbackMessageProps extends SapphireStyleProps {\n /**\n * Heading content, rendered in a sapphire Heading component.\n */\n heading: React.ReactNode;\n /**\n * The type of message.\n * The 'error' and 'success' are meant to attract more attention.\n *\n * @default 'neutral'\n */\n type?: 'error' | 'success' | 'neutral';\n /**\n * Optional description, rendered as a section below heading.\n */\n body?: React.ReactNode;\n /**\n * Optional actions, rendered at the bottom. Use {@link ButtonGroup}\n * for the content.\n */\n actions?: React.ReactNode;\n}\n\n/**\n * Implements layout and style of a feedback message.\n */\nexport const FeedbackMessage = ({\n heading,\n body,\n actions,\n type = 'neutral',\n ...otherProps\n}: SapphireFeedbackMessageProps): JSX.Element => {\n useThemeCheck();\n const {\n styleProps: { style, className },\n } = useSapphireStyleProps(otherProps);\n\n return (\n <div\n className={clsx(styles['sapphire-feedback-message'], className)}\n style={style}\n >\n {type !== 'neutral' && (\n <div\n className={clsx(\n styles['sapphire-feedback-message__icon'],\n styles[`sapphire-feedback-message__icon--${type}`]\n )}\n >\n <Icon size=\"xl\">\n {type === 'success' ? <CheckMarkCircle /> : <AlertCircle />}\n </Icon>\n </div>\n )}\n <div className={styles['sapphire-feedback-message__content']}>\n <Heading level={3}>{heading}</Heading>\n <section className={styles['sapphire-feedback-message__body']}>\n {body}\n </section>\n </div>\n {actions}\n </div>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAsCa,MAAA,eAAA,GAAkB,CAAC,EAMiB,KAAA;AANjB,EAC9B,IAAA,EAAA,GAAA,EAAA,EAAA;AAAA,IAAA,OAAA;AAAA,IACA,IAAA;AAAA,IACA,OAAA;AAAA,IACA,IAAO,GAAA,SAAA;AAAA,GAJuB,GAAA,EAAA,EAK3B,uBAL2B,EAK3B,EAAA;AAAA,IAJH,SAAA;AAAA,IACA,MAAA;AAAA,IACA,SAAA;AAAA,IACA,MAAA;AAAA,GAAA,CAAA,CAAA;AAGA,EAAA,aAAA,EAAA,CAAA;AACA,EAAM,MAAA;AAAA,IACJ,UAAA,EAAY,EAAE,KAAO,EAAA,SAAA,EAAA;AAAA,GAAA,GACnB,qBAAsB,CAAA,UAAA,CAAA,CAAA;AAE1B,EAAA,2CACG,KAAD,EAAA;AAAA,IACE,SAAA,EAAW,IAAK,CAAA,MAAA,CAAO,2BAA8B,CAAA,EAAA,SAAA,CAAA;AAAA,IACrD,KAAA;AAAA,GAEC,EAAA,IAAA,KAAS,SACR,oBAAA,KAAA,CAAA,aAAA,CAAC,KAAD,EAAA;AAAA,IACE,SAAW,EAAA,IAAA,CACT,MAAO,CAAA,iCAAA,CAAA,EACP,OAAO,CAAoC,iCAAA,EAAA,IAAA,CAAA,CAAA,CAAA,CAAA;AAAA,GAAA,sCAG5C,IAAD,EAAA;AAAA,IAAM,IAAK,EAAA,IAAA;AAAA,GACR,EAAA,IAAA,KAAS,4BAAa,KAAA,CAAA,aAAA,CAAA,eAAA,EAAD,wBAAuB,KAAA,CAAA,aAAA,CAAA,WAAA,EAAD,IAIlD,CAAA,CAAA,CAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,KAAD,EAAA;AAAA,IAAK,WAAW,MAAO,CAAA,oCAAA,CAAA;AAAA,GAAA,sCACpB,OAAD,EAAA;AAAA,IAAS,KAAO,EAAA,CAAA;AAAA,GAAI,EAAA,OAAA,CAAA,sCACnB,SAAD,EAAA;AAAA,IAAS,WAAW,MAAO,CAAA,iCAAA,CAAA;AAAA,GAAA,EACxB,IAGJ,CAAA,CAAA,EAAA,OAAA,CAAA,CAAA;AAAA;;;;"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { useThemeCheck, Field, Label } from '@danske/sapphire-react';
|
|
3
|
+
import { useField } from '@react-aria/label';
|
|
4
|
+
import { mergeProps } from '@react-aria/utils';
|
|
5
|
+
|
|
6
|
+
var __defProp = Object.defineProperty;
|
|
7
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
8
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
10
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
11
|
+
var __spreadValues = (a, b) => {
|
|
12
|
+
for (var prop in b || (b = {}))
|
|
13
|
+
if (__hasOwnProp.call(b, prop))
|
|
14
|
+
__defNormalProp(a, prop, b[prop]);
|
|
15
|
+
if (__getOwnPropSymbols)
|
|
16
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
17
|
+
if (__propIsEnum.call(b, prop))
|
|
18
|
+
__defNormalProp(a, prop, b[prop]);
|
|
19
|
+
}
|
|
20
|
+
return a;
|
|
21
|
+
};
|
|
22
|
+
var __objRest = (source, exclude) => {
|
|
23
|
+
var target = {};
|
|
24
|
+
for (var prop in source)
|
|
25
|
+
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
26
|
+
target[prop] = source[prop];
|
|
27
|
+
if (source != null && __getOwnPropSymbols)
|
|
28
|
+
for (var prop of __getOwnPropSymbols(source)) {
|
|
29
|
+
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
|
|
30
|
+
target[prop] = source[prop];
|
|
31
|
+
}
|
|
32
|
+
return target;
|
|
33
|
+
};
|
|
34
|
+
const Fieldset = (_a) => {
|
|
35
|
+
var _b = _a, {
|
|
36
|
+
label,
|
|
37
|
+
contextualHelp,
|
|
38
|
+
note,
|
|
39
|
+
error,
|
|
40
|
+
isDisabled,
|
|
41
|
+
isRequired,
|
|
42
|
+
necessityIndicator,
|
|
43
|
+
children,
|
|
44
|
+
size = "large"
|
|
45
|
+
} = _b, props = __objRest(_b, [
|
|
46
|
+
"label",
|
|
47
|
+
"contextualHelp",
|
|
48
|
+
"note",
|
|
49
|
+
"error",
|
|
50
|
+
"isDisabled",
|
|
51
|
+
"isRequired",
|
|
52
|
+
"necessityIndicator",
|
|
53
|
+
"children",
|
|
54
|
+
"size"
|
|
55
|
+
]);
|
|
56
|
+
useThemeCheck();
|
|
57
|
+
const { fieldProps, descriptionProps, errorMessageProps } = useField({
|
|
58
|
+
isInvalid: !!error
|
|
59
|
+
});
|
|
60
|
+
return /* @__PURE__ */ React.createElement(Field, __spreadValues({
|
|
61
|
+
elementType: "fieldset",
|
|
62
|
+
error: !!error,
|
|
63
|
+
isDisabled,
|
|
64
|
+
size
|
|
65
|
+
}, mergeProps(props, fieldProps)), /* @__PURE__ */ React.createElement(Field.Label, {
|
|
66
|
+
elementType: "legend"
|
|
67
|
+
}, /* @__PURE__ */ React.createElement(Label, {
|
|
68
|
+
size,
|
|
69
|
+
necessityIndicator: isRequired && necessityIndicator ? "required" : !isRequired && necessityIndicator ? "optional" : void 0,
|
|
70
|
+
contextualHelp
|
|
71
|
+
}, label)), /* @__PURE__ */ React.createElement(Field.Control, {
|
|
72
|
+
isGroup: true
|
|
73
|
+
}, children), (error || note) && /* @__PURE__ */ React.createElement(Field.Footer, null, error ? /* @__PURE__ */ React.createElement(Field.Note, __spreadValues({}, errorMessageProps), error) : note ? /* @__PURE__ */ React.createElement(Field.Note, __spreadValues({}, descriptionProps), note) : /* @__PURE__ */ React.createElement(React.Fragment, null)));
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
export { Fieldset };
|
|
77
|
+
//# sourceMappingURL=Fieldset.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Fieldset.js","sources":["../../../../src/Fieldset/src/Fieldset.tsx"],"sourcesContent":["import React, { ReactNode } from 'react';\n\nimport {\n SapphireStyleProps,\n useThemeCheck,\n Field,\n Label,\n} from '@danske/sapphire-react';\nimport { useField } from '@react-aria/label';\nimport { mergeProps } from '@react-aria/utils';\n\nexport type FieldsetProps = SapphireStyleProps & {\n /**\n * A label that describes the groups of fields.\n * The label is required because a fieldset that is not labelled is not\n * better than separate labelled fields.\n */\n label: ReactNode;\n /**\n * Whether the input is disabled.\n * */\n isDisabled?: boolean;\n /**\n * Whether the input is disabled.\n * */\n isRequired?: boolean;\n /**\n * Whether the input should render as having an error and an error message.\n * This also sets the appropriate `aria` attributes on the input.\n *\n * A `boolean` sets the error state.\n * A `string` sets the error state with an additional error message.\n *\n * **An error message is strongly recommended because an error should\n * always have an explanation about how to fix it.**\n */\n error?: boolean | string;\n /**\n * A note to show below the input.\n * If the input has an error message, this note will be replaced by that.\n */\n note?: ReactNode;\n /**\n * A ContextualHelp to render next to the label.\n */\n contextualHelp?: ReactNode;\n /**\n * @default 'large'\n */\n size?: 'large' | 'medium';\n /**\n * To visually indicate if this field is required or optional.\n * @default false\n */\n necessityIndicator?: boolean;\n /**\n * Children should be two or more form controls without labels, notes or\n * error messages.\n *\n * We recommend you only use these fields inside: `<TextField>`, `<Select> `,\n * `<SearchableSelect>`, `<MultiSelect>`, `<SearchableMultiSelect>`,\n * `<DateField>` or `<DateRangeField>`.\n *\n * Example:\n * ```jsx\n * <Fieldset label=\"Phone Number\">\n * <Select aria-label=\"Country code\" placeholder=\"+00\" width={90}>\n * <SelectItem>+40</SelectItem>\n * <SelectItem>+42</SelectItem>\n * <SelectItem>+45</SelectItem>\n * </Select>\n * <TextField\n * aria-label=\"Phone number\"\n * placeholder=\"000-000-0000\"\n * ></TextField>\n * </Fieldset>\n * ```\n */\n children: ReactNode;\n};\n\n/**\n * Sapphire search input field.\n */\nexport const Fieldset = ({\n label,\n contextualHelp,\n note,\n error,\n isDisabled,\n isRequired,\n necessityIndicator,\n children,\n size = 'large',\n ...props\n}: FieldsetProps) => {\n useThemeCheck();\n\n const { fieldProps, descriptionProps, errorMessageProps } = useField({\n isInvalid: !!error,\n });\n\n return (\n <Field\n elementType=\"fieldset\"\n error={!!error}\n isDisabled={isDisabled}\n size={size}\n {...mergeProps(props, fieldProps)}\n >\n <Field.Label elementType=\"legend\">\n <Label\n size={size}\n necessityIndicator={\n isRequired && necessityIndicator\n ? 'required'\n : !isRequired && necessityIndicator\n ? 'optional'\n : undefined\n }\n contextualHelp={contextualHelp}\n >\n {label}\n </Label>\n </Field.Label>\n <Field.Control isGroup>{children}</Field.Control>\n {(error || note) && (\n <Field.Footer>\n {error ? (\n <Field.Note {...errorMessageProps}>{error}</Field.Note>\n ) : note ? (\n <Field.Note {...descriptionProps}>{note}</Field.Note>\n ) : (\n <></>\n )}\n </Field.Footer>\n )}\n </Field>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoFa,MAAA,QAAA,GAAW,CAAC,EAWJ,KAAA;AAXI,EACvB,IAAA,EAAA,GAAA,EAAA,EAAA;AAAA,IAAA,KAAA;AAAA,IACA,cAAA;AAAA,IACA,IAAA;AAAA,IACA,KAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA,kBAAA;AAAA,IACA,QAAA;AAAA,IACA,IAAO,GAAA,OAAA;AAAA,GATgB,GAAA,EAAA,EAUpB,kBAVoB,EAUpB,EAAA;AAAA,IATH,OAAA;AAAA,IACA,gBAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,IACA,YAAA;AAAA,IACA,YAAA;AAAA,IACA,oBAAA;AAAA,IACA,UAAA;AAAA,IACA,MAAA;AAAA,GAAA,CAAA,CAAA;AAGA,EAAA,aAAA,EAAA,CAAA;AAEA,EAAA,MAAM,EAAE,UAAA,EAAY,gBAAkB,EAAA,iBAAA,EAAA,GAAsB,QAAS,CAAA;AAAA,IACnE,SAAA,EAAW,CAAC,CAAC,KAAA;AAAA,GAAA,CAAA,CAAA;AAGf,EAAA,2CACG,KAAD,EAAA,cAAA,CAAA;AAAA,IACE,WAAY,EAAA,UAAA;AAAA,IACZ,KAAA,EAAO,CAAC,CAAC,KAAA;AAAA,IACT,UAAA;AAAA,IACA,IAAA;AAAA,GAAA,EACI,UAAW,CAAA,KAAA,EAAO,UAEtB,CAAA,CAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,MAAM,KAAP,EAAA;AAAA,IAAa,WAAY,EAAA,QAAA;AAAA,GAAA,sCACtB,KAAD,EAAA;AAAA,IACE,IAAA;AAAA,IACA,oBACE,UAAc,IAAA,kBAAA,GACV,aACA,CAAC,UAAA,IAAc,qBACf,UACA,GAAA,KAAA,CAAA;AAAA,IAEN,cAAA;AAAA,GAEC,EAAA,KAAA,CAAA,CAAA,kBAGJ,KAAA,CAAA,aAAA,CAAA,KAAA,CAAM,OAAP,EAAA;AAAA,IAAe,OAAO,EAAA,IAAA;AAAA,GAAE,EAAA,QAAA,CAAA,EACtB,UAAS,IACT,qBAAA,KAAA,CAAA,aAAA,CAAC,MAAM,MAAP,EAAA,IAAA,EACG,wBACE,KAAA,CAAA,aAAA,CAAA,KAAA,CAAM,MAAP,cAAgB,CAAA,EAAA,EAAA,iBAAA,CAAA,EAAoB,SAClC,IACF,mBAAA,KAAA,CAAA,aAAA,CAAC,MAAM,IAAP,EAAA,cAAA,CAAA,EAAA,EAAgB,mBAAmB,IAEnC,CAAA,mBAAA,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,CAAA,CAAA,CAAA,CAAA;AAAA;;;;"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { useControlledState } from '@react-stately/utils';
|
|
3
|
+
import { VisuallyHidden } from '@react-aria/visually-hidden';
|
|
4
|
+
import { PopoverTrigger, Flex, tokens, Button, Icon } from '@danske/sapphire-react';
|
|
5
|
+
import { ToggleButton } from '../../ToggleButton/src/ToggleButton.js';
|
|
6
|
+
import { ChevronUp, ChevronDown } from '@danske/sapphire-icons/react';
|
|
7
|
+
|
|
8
|
+
function FilterDropdown({
|
|
9
|
+
children,
|
|
10
|
+
label,
|
|
11
|
+
value,
|
|
12
|
+
isOpen: isOpenProp,
|
|
13
|
+
clearButtonLabel = "Clear",
|
|
14
|
+
applyButtonLabel = "Apply",
|
|
15
|
+
defaultOpen = false,
|
|
16
|
+
onOpenChange,
|
|
17
|
+
hasApplyButton = false,
|
|
18
|
+
onApply,
|
|
19
|
+
onClear,
|
|
20
|
+
noMaxWidth,
|
|
21
|
+
isDisabled = false
|
|
22
|
+
}) {
|
|
23
|
+
const [isOpen, setIsOpen] = useControlledState(isOpenProp, defaultOpen, onOpenChange);
|
|
24
|
+
const hasValue = value != null && value !== "";
|
|
25
|
+
const close = () => setIsOpen(false);
|
|
26
|
+
const apply = () => {
|
|
27
|
+
onApply == null ? void 0 : onApply();
|
|
28
|
+
close();
|
|
29
|
+
};
|
|
30
|
+
const applyButton = /* @__PURE__ */ React.createElement(Button, {
|
|
31
|
+
type: "submit",
|
|
32
|
+
excludeFromTabOrder: !hasApplyButton
|
|
33
|
+
}, applyButtonLabel);
|
|
34
|
+
return /* @__PURE__ */ React.createElement(PopoverTrigger, {
|
|
35
|
+
popoverContent: /* @__PURE__ */ React.createElement("form", {
|
|
36
|
+
onSubmit: apply
|
|
37
|
+
}, children, /* @__PURE__ */ React.createElement(Flex, {
|
|
38
|
+
justifyContent: "space-between",
|
|
39
|
+
marginTop: tokens.size.spacing30
|
|
40
|
+
}, /* @__PURE__ */ React.createElement(Button, {
|
|
41
|
+
variant: "secondary",
|
|
42
|
+
onPress: () => {
|
|
43
|
+
close();
|
|
44
|
+
onClear == null ? void 0 : onClear();
|
|
45
|
+
},
|
|
46
|
+
isDisabled: !hasValue
|
|
47
|
+
}, clearButtonLabel), hasApplyButton ? applyButton : /* @__PURE__ */ React.createElement(VisuallyHidden, null, applyButton))),
|
|
48
|
+
placement: "bottom left",
|
|
49
|
+
isOpen,
|
|
50
|
+
onOpenChange: setIsOpen,
|
|
51
|
+
noMaxWidth
|
|
52
|
+
}, /* @__PURE__ */ React.createElement(ToggleButton, {
|
|
53
|
+
icon: /* @__PURE__ */ React.createElement(Icon, null, isOpen ? /* @__PURE__ */ React.createElement(ChevronUp, null) : /* @__PURE__ */ React.createElement(ChevronDown, null)),
|
|
54
|
+
iconAlign: "right",
|
|
55
|
+
isSelected: hasValue,
|
|
56
|
+
isDisabled
|
|
57
|
+
}, label, value ? ": " : "", value));
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export { FilterDropdown };
|
|
61
|
+
//# sourceMappingURL=FilterDropdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FilterDropdown.js","sources":["../../../../src/Filtering/src/FilterDropdown.tsx"],"sourcesContent":["import React, { ReactNode } from 'react';\nimport { useControlledState } from '@react-stately/utils';\nimport { VisuallyHidden } from '@react-aria/visually-hidden';\nimport {\n Button,\n Flex,\n Icon,\n SapphireStyleProps,\n tokens,\n PopoverTrigger,\n PopoverTriggerProps,\n} from '@danske/sapphire-react';\nimport { ToggleButton } from '../../ToggleButton';\nimport { ChevronDown, ChevronUp } from '@danske/sapphire-icons/react';\n\nexport interface SapphireFilterDropdownProps\n extends SapphireStyleProps,\n Pick<\n PopoverTriggerProps,\n 'defaultOpen' | 'isOpen' | 'onOpenChange' | 'noMaxWidth'\n > {\n /**\n * \"Filter by\" label, shown inside the trigger button.\n */\n label: ReactNode;\n /**\n * Filter value, shown inside the trigger button. `null`, `undefined` and empty string are\n * considered as unset value.\n */\n value: ReactNode;\n /**\n * Filtering UI controls, rendered in a popover.\n */\n children: ReactNode;\n /**\n * Called when:\n * - `Enter` is pressed on form fields rendered inside the popover.\n * - 'Apply' button is pressed (if `hasApplyButton` is true)\n */\n onApply?: () => void;\n /**\n * Whether to show the 'Apply' button.\n */\n hasApplyButton?: boolean;\n /**\n * Called when 'Clear' button is pressed.\n */\n onClear?: () => void;\n /**\n * Wheter the button is disabled.\n */\n isDisabled?: boolean;\n /**\n * The label of the 'Clear' button.\n * @default \"Clear\"\n */\n clearButtonLabel?: ReactNode;\n /**\n * The label of the 'Apply' button.\n * @default \"Apply\"\n */\n applyButtonLabel?: ReactNode;\n}\n\n/**\n * A button with a dropdown, used for filtering UI.\n */\nexport function FilterDropdown({\n children,\n label,\n value,\n isOpen: isOpenProp,\n clearButtonLabel = 'Clear',\n applyButtonLabel = 'Apply',\n defaultOpen = false,\n onOpenChange,\n hasApplyButton = false,\n onApply,\n onClear,\n noMaxWidth,\n isDisabled = false,\n}: SapphireFilterDropdownProps): JSX.Element {\n // We need to know if the dropdown is open or not, so we control the state here, still\n // allowing for both controlled and uncontrolled modes.\n const [isOpen, setIsOpen] = useControlledState(\n isOpenProp,\n defaultOpen,\n onOpenChange\n );\n const hasValue = value != null && value !== '';\n const close = () => setIsOpen(false);\n const apply = () => {\n onApply?.();\n close();\n };\n\n const applyButton = (\n <Button type=\"submit\" excludeFromTabOrder={!hasApplyButton}>\n {applyButtonLabel}\n </Button>\n );\n return (\n <PopoverTrigger\n popoverContent={\n <form onSubmit={apply}>\n {children}\n <Flex\n justifyContent=\"space-between\"\n marginTop={tokens.size.spacing30}\n >\n <Button\n variant=\"secondary\"\n onPress={() => {\n close();\n onClear?.();\n }}\n isDisabled={!hasValue}\n >\n {clearButtonLabel}\n </Button>\n {hasApplyButton ? (\n applyButton\n ) : (\n // The following is necessary to have the form submitted on \"Enter\", if there is more than one field\n <VisuallyHidden>{applyButton}</VisuallyHidden>\n )}\n </Flex>\n </form>\n }\n placement=\"bottom left\"\n isOpen={isOpen}\n onOpenChange={setIsOpen}\n noMaxWidth={noMaxWidth}\n >\n <ToggleButton\n icon={<Icon>{isOpen ? <ChevronUp /> : <ChevronDown />}</Icon>}\n iconAlign=\"right\"\n isSelected={hasValue}\n isDisabled={isDisabled}\n >\n {label}\n {value ? ': ' : ''}\n {value}\n </ToggleButton>\n </PopoverTrigger>\n );\n}\n"],"names":[],"mappings":";;;;;;;AAmE+B,SAAA,cAAA,CAAA;AAAA,EAC7B,QAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAQ,EAAA,UAAA;AAAA,EACR,gBAAmB,GAAA,OAAA;AAAA,EACnB,gBAAmB,GAAA,OAAA;AAAA,EACnB,WAAc,GAAA,KAAA;AAAA,EACd,YAAA;AAAA,EACA,cAAiB,GAAA,KAAA;AAAA,EACjB,OAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAa,GAAA,KAAA;AAAA,CAC8B,EAAA;AAG3C,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAa,CAAA,GAAA,kBAAA,CAC1B,YACA,WACA,EAAA,YAAA,CAAA,CAAA;AAEF,EAAM,MAAA,QAAA,GAAW,KAAS,IAAA,IAAA,IAAQ,KAAU,KAAA,EAAA,CAAA;AAC5C,EAAM,MAAA,KAAA,GAAQ,MAAM,SAAU,CAAA,KAAA,CAAA,CAAA;AAC9B,EAAA,MAAM,QAAQ,MAAM;AAClB,IAAA,OAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,OAAA,EAAA,CAAA;AACA,IAAA,KAAA,EAAA,CAAA;AAAA,GAAA,CAAA;AAGF,EAAM,MAAA,WAAA,uCACH,MAAD,EAAA;AAAA,IAAQ,IAAK,EAAA,QAAA;AAAA,IAAS,qBAAqB,CAAC,cAAA;AAAA,GACzC,EAAA,gBAAA,CAAA,CAAA;AAGL,EAAA,2CACG,cAAD,EAAA;AAAA,IACE,cAAA,sCACG,MAAD,EAAA;AAAA,MAAM,QAAU,EAAA,KAAA;AAAA,KACb,EAAA,QAAA,sCACA,IAAD,EAAA;AAAA,MACE,cAAe,EAAA,eAAA;AAAA,MACf,SAAA,EAAW,OAAO,IAAK,CAAA,SAAA;AAAA,KAAA,sCAEtB,MAAD,EAAA;AAAA,MACE,OAAQ,EAAA,WAAA;AAAA,MACR,SAAS,MAAM;AACb,QAAA,KAAA,EAAA,CAAA;AACA,QAAA,OAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,OAAA,EAAA,CAAA;AAAA,OAAA;AAAA,MAEF,YAAY,CAAC,QAAA;AAAA,KAAA,EAEZ,gBAEF,CAAA,EAAA,cAAA,GACC,WAGA,mBAAA,KAAA,CAAA,aAAA,CAAC,gBAAD,IAAiB,EAAA,WAAA,CAAA,CAAA,CAAA;AAAA,IAKzB,SAAU,EAAA,aAAA;AAAA,IACV,MAAA;AAAA,IACA,YAAc,EAAA,SAAA;AAAA,IACd,UAAA;AAAA,GAAA,sCAEC,YAAD,EAAA;AAAA,IACE,IAAA,sCAAO,IAAD,EAAA,IAAA,EAAO,yBAAU,KAAA,CAAA,aAAA,CAAA,SAAA,EAAD,IAAgB,CAAA,mBAAA,KAAA,CAAA,aAAA,CAAC,WAAD,EAAA,IAAA,CAAA,CAAA;AAAA,IACtC,SAAU,EAAA,OAAA;AAAA,IACV,UAAY,EAAA,QAAA;AAAA,IACZ,UAAA;AAAA,GAEC,EAAA,KAAA,EACA,KAAQ,GAAA,IAAA,GAAO,EACf,EAAA,KAAA,CAAA,CAAA,CAAA;AAAA;;;;"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import clsx from 'clsx';
|
|
3
|
+
import styles from '@danske/sapphire-css/components/notificationBadge/notificationBadge.module.css';
|
|
4
|
+
import { useThemeCheck, useSapphireStyleProps } from '@danske/sapphire-react';
|
|
5
|
+
|
|
6
|
+
var __defProp = Object.defineProperty;
|
|
7
|
+
var __defProps = Object.defineProperties;
|
|
8
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
9
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
10
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
11
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
12
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
13
|
+
var __spreadValues = (a, b) => {
|
|
14
|
+
for (var prop in b || (b = {}))
|
|
15
|
+
if (__hasOwnProp.call(b, prop))
|
|
16
|
+
__defNormalProp(a, prop, b[prop]);
|
|
17
|
+
if (__getOwnPropSymbols)
|
|
18
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
19
|
+
if (__propIsEnum.call(b, prop))
|
|
20
|
+
__defNormalProp(a, prop, b[prop]);
|
|
21
|
+
}
|
|
22
|
+
return a;
|
|
23
|
+
};
|
|
24
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
25
|
+
var __objRest = (source, exclude) => {
|
|
26
|
+
var target = {};
|
|
27
|
+
for (var prop in source)
|
|
28
|
+
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
29
|
+
target[prop] = source[prop];
|
|
30
|
+
if (source != null && __getOwnPropSymbols)
|
|
31
|
+
for (var prop of __getOwnPropSymbols(source)) {
|
|
32
|
+
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
|
|
33
|
+
target[prop] = source[prop];
|
|
34
|
+
}
|
|
35
|
+
return target;
|
|
36
|
+
};
|
|
37
|
+
const NotificationBadge = (props) => {
|
|
38
|
+
useThemeCheck();
|
|
39
|
+
const _a = props, {
|
|
40
|
+
children,
|
|
41
|
+
count,
|
|
42
|
+
containerType = "circle",
|
|
43
|
+
variant = "primary",
|
|
44
|
+
size = "medium",
|
|
45
|
+
show = true
|
|
46
|
+
} = _a, otherProps = __objRest(_a, [
|
|
47
|
+
"children",
|
|
48
|
+
"count",
|
|
49
|
+
"containerType",
|
|
50
|
+
"variant",
|
|
51
|
+
"size",
|
|
52
|
+
"show"
|
|
53
|
+
]);
|
|
54
|
+
const { styleProps } = useSapphireStyleProps(props);
|
|
55
|
+
const badge = () => /* @__PURE__ */ React.createElement("span", __spreadProps(__spreadValues({}, otherProps), {
|
|
56
|
+
role: "status",
|
|
57
|
+
className: clsx(styleProps.className, styles["sapphire-notification-badge"], styles[`sapphire-notification-badge--${size}`], styles[`sapphire-notification-badge--${variant}`], {
|
|
58
|
+
[styles[`sapphire-notification-badge--pop-in`]]: show,
|
|
59
|
+
[styles[`sapphire-notification-badge--pop-out`]]: !show
|
|
60
|
+
}),
|
|
61
|
+
style: styleProps.style
|
|
62
|
+
}), size !== "small" && displayCount);
|
|
63
|
+
const displayCount = count.toString().length > 2 ? `99+` : count;
|
|
64
|
+
return children ? /* @__PURE__ */ React.createElement("span", {
|
|
65
|
+
className: clsx(styles["sapphire-notification-badge-container"], {
|
|
66
|
+
[styles["sapphire-notification-badge-container--rectangle"]]: containerType === "rectangle"
|
|
67
|
+
})
|
|
68
|
+
}, children, badge()) : badge();
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
export { NotificationBadge };
|
|
72
|
+
//# sourceMappingURL=NotificationBadge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NotificationBadge.js","sources":["../../../../src/NotificationBadge/src/NotificationBadge.tsx"],"sourcesContent":["import React from 'react';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/notificationBadge/notificationBadge.module.css';\nimport {\n useThemeCheck,\n SapphireStyleProps,\n useSapphireStyleProps,\n} from '@danske/sapphire-react';\n\nexport type NotificationBadgeProps = {\n /**\n * Badge will be added relative to the children. It is rendered inline if there is no children provided\n * */\n children?: React.ReactNode;\n /**\n * The shape of the container, based on which badge should be positioned. Badge is positioned on the border of the container\n * @default 'circle'\n * */\n containerType?: 'circle' | 'rectangle';\n /**\n * Number to show in badge\n * */\n count: number;\n /**\n * The variation of badge which determines the badge's color.\n *\n * @default 'primary'\n */\n variant?: 'primary' | 'secondary';\n /**\n * @default 'medium'\n */\n size?: 'large' | 'medium' | 'small';\n /**\n * Boolean to show/hide the badge\n *\n * @default true\n */\n show?: boolean;\n} & SapphireStyleProps &\n ({ 'aria-labelledby': string } | { 'aria-label': string });\n\nexport const NotificationBadge = (\n props: NotificationBadgeProps\n): JSX.Element => {\n useThemeCheck();\n\n const {\n children,\n count,\n containerType = 'circle',\n variant = 'primary',\n size = 'medium',\n show = true,\n ...otherProps\n } = props;\n const { styleProps } = useSapphireStyleProps(props);\n\n const badge = () => (\n <span\n {...otherProps}\n role=\"status\"\n className={clsx(\n styleProps.className,\n styles['sapphire-notification-badge'],\n styles[`sapphire-notification-badge--${size}` as const],\n styles[`sapphire-notification-badge--${variant}` as const],\n {\n [styles[`sapphire-notification-badge--pop-in`]]: show,\n [styles[`sapphire-notification-badge--pop-out`]]: !show,\n }\n )}\n style={styleProps.style}\n >\n {size !== 'small' && displayCount}\n </span>\n );\n\n const displayCount = count.toString().length > 2 ? `99+` : count;\n return children ? (\n <span\n className={clsx(styles['sapphire-notification-badge-container'], {\n [styles['sapphire-notification-badge-container--rectangle']]:\n containerType === 'rectangle',\n })}\n >\n {children}\n {badge()}\n </span>\n ) : (\n badge()\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0Ca,MAAA,iBAAA,GAAoB,CAC/B,KACgB,KAAA;AAChB,EAAA,aAAA,EAAA,CAAA;AAEA,EAAA,MAQI,EAPF,GAAA,KAAA,EAAA;AAAA,IAAA,QAAA;AAAA,IACA,KAAA;AAAA,IACA,aAAgB,GAAA,QAAA;AAAA,IAChB,OAAU,GAAA,SAAA;AAAA,IACV,IAAO,GAAA,QAAA;AAAA,IACP,IAAO,GAAA,IAAA;AAAA,GAEL,GAAA,EAAA,EADC,uBACD,EADC,EAAA;AAAA,IANH,UAAA;AAAA,IACA,OAAA;AAAA,IACA,eAAA;AAAA,IACA,SAAA;AAAA,IACA,MAAA;AAAA,IACA,MAAA;AAAA,GAAA,CAAA,CAAA;AAGF,EAAM,MAAA,EAAE,eAAe,qBAAsB,CAAA,KAAA,CAAA,CAAA;AAE7C,EAAA,MAAM,KAAQ,GAAA,sBACX,KAAA,CAAA,aAAA,CAAA,MAAA,EAAD,iCACM,UADN,CAAA,EAAA;AAAA,IAEE,IAAK,EAAA,QAAA;AAAA,IACL,SAAA,EAAW,IACT,CAAA,UAAA,CAAW,SACX,EAAA,MAAA,CAAO,6BACP,CAAA,EAAA,MAAA,CAAO,CAAgC,6BAAA,EAAA,IAAA,CAAA,CAAA,CAAA,EACvC,MAAO,CAAA,CAAA,6BAAA,EAAgC,OACvC,CAAA,CAAA,CAAA,EAAA;AAAA,MAAA,CACG,OAAO,CAAyC,mCAAA,CAAA,CAAA,GAAA,IAAA;AAAA,MAChD,CAAA,MAAA,CAAO,0CAA0C,CAAC,IAAA;AAAA,KAAA,CAAA;AAAA,IAGvD,OAAO,UAAW,CAAA,KAAA;AAAA,GAAA,CAAA,EAEjB,SAAS,OAAW,IAAA,YAAA,CAAA,CAAA;AAIzB,EAAA,MAAM,YAAe,GAAA,KAAA,CAAM,QAAW,EAAA,CAAA,MAAA,GAAS,IAAI,CAAQ,GAAA,CAAA,GAAA,KAAA,CAAA;AAC3D,EAAO,OAAA,QAAA,uCACJ,MAAD,EAAA;AAAA,IACE,SAAA,EAAW,IAAK,CAAA,MAAA,CAAO,uCAA0C,CAAA,EAAA;AAAA,MAC9D,CAAA,MAAA,CAAO,sDACN,aAAkB,KAAA,WAAA;AAAA,KAAA,CAAA;AAAA,GAAA,EAGrB,UACA,KAGH,EAAA,CAAA,GAAA,KAAA,EAAA,CAAA;AAAA;;;;"}
|