@db-ux/react-core-components 2.0.0-0-6589a60 → 2.0.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/dist/components/accordion/accordion.d.ts +1 -1
- package/dist/components/accordion/accordion.js +8 -9
- package/dist/components/accordion/model.d.ts +2 -2
- package/dist/components/accordion-item/accordion-item.d.ts +3 -3
- package/dist/components/accordion-item/accordion-item.js +27 -3
- package/dist/components/accordion-item/model.d.ts +5 -5
- package/dist/components/badge/badge.d.ts +1 -1
- package/dist/components/badge/model.d.ts +2 -2
- package/dist/components/brand/brand.d.ts +1 -1
- package/dist/components/button/button.d.ts +1 -1
- package/dist/components/button/button.js +2 -2
- package/dist/components/button/model.d.ts +11 -7
- package/dist/components/card/card.d.ts +1 -1
- package/dist/components/checkbox/checkbox.d.ts +1 -1
- package/dist/components/checkbox/checkbox.js +34 -25
- package/dist/components/checkbox/model.d.ts +3 -3
- package/dist/components/custom-select/custom-select.d.ts +3 -0
- package/dist/components/custom-select/custom-select.js +553 -0
- package/dist/components/custom-select/index.d.ts +1 -0
- package/dist/components/custom-select/index.js +1 -0
- package/dist/components/custom-select/model.d.ts +193 -0
- package/dist/components/custom-select/model.js +1 -0
- package/dist/components/custom-select-dropdown/custom-select-dropdown.d.ts +3 -0
- package/dist/components/custom-select-dropdown/custom-select-dropdown.js +12 -0
- package/dist/components/custom-select-dropdown/index.d.ts +1 -0
- package/dist/components/custom-select-dropdown/index.js +1 -0
- package/dist/components/custom-select-dropdown/model.d.ts +15 -0
- package/dist/components/custom-select-dropdown/model.js +1 -0
- package/dist/components/custom-select-form-field/custom-select-form-field.d.ts +3 -0
- package/dist/components/custom-select-form-field/custom-select-form-field.js +11 -0
- package/dist/components/custom-select-form-field/index.d.ts +1 -0
- package/dist/components/custom-select-form-field/index.js +1 -0
- package/dist/components/custom-select-form-field/model.d.ts +5 -0
- package/dist/components/custom-select-form-field/model.js +1 -0
- package/dist/components/custom-select-list/custom-select-list.d.ts +3 -0
- package/dist/components/custom-select-list/custom-select-list.js +12 -0
- package/dist/components/custom-select-list/index.d.ts +1 -0
- package/dist/components/custom-select-list/index.js +1 -0
- package/dist/components/custom-select-list/model.d.ts +8 -0
- package/dist/components/custom-select-list/model.js +1 -0
- package/dist/components/custom-select-list-item/custom-select-list-item.d.ts +6 -0
- package/dist/components/custom-select-list-item/custom-select-list-item.js +37 -0
- package/dist/components/custom-select-list-item/index.d.ts +1 -0
- package/dist/components/custom-select-list-item/index.js +1 -0
- package/dist/components/custom-select-list-item/model.d.ts +29 -0
- package/dist/components/custom-select-list-item/model.js +1 -0
- package/dist/components/divider/divider.d.ts +1 -1
- package/dist/components/drawer/drawer.d.ts +1 -1
- package/dist/components/drawer/drawer.js +6 -7
- package/dist/components/drawer/model.d.ts +2 -2
- package/dist/components/header/header.d.ts +1 -1
- package/dist/components/header/header.js +8 -7
- package/dist/components/header/model.d.ts +2 -2
- package/dist/components/icon/icon.d.ts +1 -1
- package/dist/components/infotext/infotext.d.ts +1 -1
- package/dist/components/input/input.d.ts +1 -1
- package/dist/components/input/input.js +43 -34
- package/dist/components/input/model.d.ts +3 -3
- package/dist/components/link/link.d.ts +1 -1
- package/dist/components/link/link.js +1 -1
- package/dist/components/navigation/navigation.d.ts +1 -1
- package/dist/components/navigation-item/model.d.ts +2 -3
- package/dist/components/navigation-item/navigation-item.d.ts +1 -1
- package/dist/components/navigation-item/navigation-item.js +14 -17
- package/dist/components/notification/model.d.ts +3 -3
- package/dist/components/notification/notification.d.ts +1 -1
- package/dist/components/notification/notification.js +3 -3
- package/dist/components/page/model.d.ts +1 -1
- package/dist/components/page/page.d.ts +1 -1
- package/dist/components/page/page.js +1 -1
- package/dist/components/popover/model.d.ts +1 -1
- package/dist/components/popover/popover.d.ts +1 -1
- package/dist/components/popover/popover.js +1 -1
- package/dist/components/radio/radio.d.ts +1 -1
- package/dist/components/radio/radio.js +2 -11
- package/dist/components/section/section.d.ts +1 -1
- package/dist/components/select/model.d.ts +5 -5
- package/dist/components/select/select.d.ts +1 -1
- package/dist/components/select/select.js +47 -40
- package/dist/components/stack/model.d.ts +1 -1
- package/dist/components/stack/stack.d.ts +1 -1
- package/dist/components/switch/model.d.ts +2 -2
- package/dist/components/switch/switch.d.ts +1 -1
- package/dist/components/switch/switch.js +3 -12
- package/dist/components/tab-item/model.d.ts +6 -6
- package/dist/components/tab-item/tab-item.d.ts +1 -1
- package/dist/components/tab-item/tab-item.js +26 -9
- package/dist/components/tab-list/tab-list.d.ts +1 -1
- package/dist/components/tab-panel/tab-panel.d.ts +1 -1
- package/dist/components/tabs/model.d.ts +11 -3
- package/dist/components/tabs/tabs.d.ts +1 -1
- package/dist/components/tabs/tabs.js +16 -15
- package/dist/components/tag/model.d.ts +11 -7
- package/dist/components/tag/tag.d.ts +1 -1
- package/dist/components/tag/tag.js +6 -5
- package/dist/components/textarea/model.d.ts +4 -4
- package/dist/components/textarea/textarea.d.ts +1 -1
- package/dist/components/textarea/textarea.js +39 -31
- package/dist/components/tooltip/model.d.ts +1 -1
- package/dist/components/tooltip/tooltip.d.ts +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.js +5 -0
- package/dist/shared/constants.d.ts +5 -0
- package/dist/shared/constants.js +6 -1
- package/dist/shared/model.d.ts +83 -41
- package/dist/shared/model.js +3 -2
- package/dist/utils/document-click-listener.d.ts +8 -0
- package/dist/utils/document-click-listener.js +29 -0
- package/dist/utils/index.d.ts +6 -27
- package/dist/utils/index.js +22 -20
- package/dist/utils/react.d.ts +4 -4
- package/package.json +4 -3
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
declare const DBAccordion: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<
|
|
2
|
+
declare const DBAccordion: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<any>, keyof import("../..").GlobalProps | keyof import("./model").DBAccordionDefaultProps> & import("./model").DBAccordionDefaultProps & import("../..").GlobalProps & React.RefAttributes<any>>;
|
|
3
3
|
export default DBAccordion;
|
|
@@ -12,12 +12,12 @@ function DBAccordionFn(props, component) {
|
|
|
12
12
|
const [_name, set_name] = useState(() => "");
|
|
13
13
|
const [initialized, setInitialized] = useState(() => false);
|
|
14
14
|
const [_initOpenIndexDone, set_initOpenIndexDone] = useState(() => false);
|
|
15
|
-
function convertItems(
|
|
15
|
+
function convertItems() {
|
|
16
16
|
try {
|
|
17
|
-
if (typeof items === "string") {
|
|
18
|
-
return JSON.parse(items);
|
|
17
|
+
if (typeof props.items === "string") {
|
|
18
|
+
return JSON.parse(props.items);
|
|
19
19
|
}
|
|
20
|
-
return items;
|
|
20
|
+
return props.items;
|
|
21
21
|
}
|
|
22
22
|
catch (error) {
|
|
23
23
|
console.error(error);
|
|
@@ -59,23 +59,22 @@ function DBAccordionFn(props, component) {
|
|
|
59
59
|
details.removeAttribute("name");
|
|
60
60
|
}
|
|
61
61
|
else {
|
|
62
|
-
details.name = _name;
|
|
62
|
+
details.name = _name !== null && _name !== void 0 ? _name : "";
|
|
63
63
|
}
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
67
|
}, [_ref.current, _name]);
|
|
68
68
|
useEffect(() => {
|
|
69
|
-
var _a;
|
|
70
69
|
if (_ref.current && _initOpenIndexDone) {
|
|
71
|
-
if ((props === null || props === void 0 ? void 0 : props.initOpenIndex) &&
|
|
70
|
+
if ((props === null || props === void 0 ? void 0 : props.initOpenIndex) && props.initOpenIndex.length > 0) {
|
|
72
71
|
const childDetails = _ref.current.getElementsByTagName("details");
|
|
73
72
|
if (childDetails) {
|
|
74
73
|
const initOpenIndex = props.behavior === "single" && props.initOpenIndex.length > 1
|
|
75
74
|
? [props.initOpenIndex[0]] // use only one index for behavior=single
|
|
76
75
|
: props.initOpenIndex;
|
|
77
76
|
Array.from(childDetails).forEach((details, index) => {
|
|
78
|
-
if (initOpenIndex.includes(index)) {
|
|
77
|
+
if (initOpenIndex === null || initOpenIndex === void 0 ? void 0 : initOpenIndex.includes(index)) {
|
|
79
78
|
details.open = true;
|
|
80
79
|
}
|
|
81
80
|
});
|
|
@@ -86,7 +85,7 @@ function DBAccordionFn(props, component) {
|
|
|
86
85
|
}, [_ref.current, _initOpenIndexDone, props.initOpenIndex]);
|
|
87
86
|
return (React.createElement("ul", Object.assign({ ref: _ref }, filterPassingProps(props, ["data-icon-variant", "data-icon-variant-before", "data-icon-variant-after", "data-icon-weight", "data-icon-weight-before", "data-icon-weight-after", "data-interactive", "data-force-mobile", "data-color", "data-container-color", "data-bg-color", "data-on-bg-color", "data-color-scheme", "data-font-size", "data-headline-size", "data-divider", "data-focus", "data-font"]), { id: _id }, getRootProps(props, ["data-icon-variant", "data-icon-variant-before", "data-icon-variant-after", "data-icon-weight", "data-icon-weight-before", "data-icon-weight-after", "data-interactive", "data-force-mobile", "data-color", "data-container-color", "data-bg-color", "data-on-bg-color", "data-color-scheme", "data-font-size", "data-headline-size", "data-divider", "data-focus", "data-font"]), { className: cls("db-accordion", props.className), "data-variant": props.variant }),
|
|
88
87
|
!props.items ? React.createElement(React.Fragment, null, props.children) : null,
|
|
89
|
-
props.items ? (React.createElement(React.Fragment, null, (_a = convertItems(
|
|
88
|
+
props.items ? (React.createElement(React.Fragment, null, (_a = convertItems()) === null || _a === void 0 ? void 0 : _a.map((item, index) => (React.createElement(DBAccordionItem, { key: `accordion-item-${index}`, headlinePlain: item.headlinePlain, disabled: item.disabled, text: item.text }))))) : null));
|
|
90
89
|
}
|
|
91
90
|
const DBAccordion = forwardRef(DBAccordionFn);
|
|
92
91
|
export default DBAccordion;
|
|
@@ -35,7 +35,7 @@ export type DBAccordionDefaultProps = {
|
|
|
35
35
|
export type DBAccordionProps = DBAccordionDefaultProps & GlobalProps;
|
|
36
36
|
export type DBAccordionDefaultState = {
|
|
37
37
|
_initOpenIndexDone: boolean;
|
|
38
|
-
_name
|
|
39
|
-
convertItems: (
|
|
38
|
+
_name?: string;
|
|
39
|
+
convertItems: () => DBAccordionItemDefaultProps[];
|
|
40
40
|
};
|
|
41
41
|
export type DBAccordionState = DBAccordionDefaultState & GlobalState & InitializedState;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
declare const DBAccordionItem: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<
|
|
2
|
+
declare const DBAccordionItem: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<any>, "name" | "text" | "disabled" | keyof import("../../shared/model").GlobalProps | "headline" | keyof import("../../shared/model").ToggleEventProps | "defaultOpen" | "headlinePlain"> & {
|
|
3
3
|
defaultOpen?: boolean;
|
|
4
|
-
disabled?: boolean;
|
|
4
|
+
disabled?: boolean | string;
|
|
5
5
|
headline?: any;
|
|
6
6
|
headlinePlain?: string;
|
|
7
|
-
} & import("../../shared/model").TextProps & import("../../shared/model").GlobalProps & import("../../shared/model").ToggleEventProps & React.RefAttributes<
|
|
7
|
+
} & import("../../shared/model").TextProps & import("../../shared/model").GlobalProps & import("../../shared/model").ToggleEventProps & import("../../shared/model").NameProps & React.RefAttributes<any>>;
|
|
8
8
|
export default DBAccordionItem;
|
|
@@ -8,7 +8,20 @@ function DBAccordionItemFn(props, component) {
|
|
|
8
8
|
const _ref = component || useRef(component);
|
|
9
9
|
const [_id, set_id] = useState(() => DEFAULT_ID);
|
|
10
10
|
const [_open, set_open] = useState(() => false);
|
|
11
|
-
|
|
11
|
+
const [_name, set_name] = useState(() => undefined);
|
|
12
|
+
const [initialized, setInitialized] = useState(() => false);
|
|
13
|
+
function handleNameAttribute() {
|
|
14
|
+
if (_ref.current) {
|
|
15
|
+
const setAttribute = _ref.current.setAttribute;
|
|
16
|
+
_ref.current.setAttribute = (attribute, value) => {
|
|
17
|
+
setAttribute.call(_ref.current, attribute, value);
|
|
18
|
+
if (attribute === "name") {
|
|
19
|
+
set_name(value);
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function handleToggle(event) {
|
|
12
25
|
// We need this for react https://github.com/facebook/react/issues/15486#issuecomment-488028431
|
|
13
26
|
event === null || event === void 0 ? void 0 : event.preventDefault();
|
|
14
27
|
const newStateOpen = !_open;
|
|
@@ -22,10 +35,21 @@ function DBAccordionItemFn(props, component) {
|
|
|
22
35
|
if (props.defaultOpen) {
|
|
23
36
|
set_open(props.defaultOpen);
|
|
24
37
|
}
|
|
38
|
+
setInitialized(true);
|
|
25
39
|
}, []);
|
|
40
|
+
useEffect(() => {
|
|
41
|
+
if (_ref.current && initialized) {
|
|
42
|
+
handleNameAttribute();
|
|
43
|
+
}
|
|
44
|
+
}, [_ref.current, initialized]);
|
|
45
|
+
useEffect(() => {
|
|
46
|
+
if (props.name) {
|
|
47
|
+
set_name(props.name);
|
|
48
|
+
}
|
|
49
|
+
}, [props.name]);
|
|
26
50
|
return (React.createElement("li", Object.assign({ id: _id }, getRootProps(props, ["data-icon-variant", "data-icon-variant-before", "data-icon-variant-after", "data-icon-weight", "data-icon-weight-before", "data-icon-weight-after", "data-interactive", "data-force-mobile", "data-color", "data-container-color", "data-bg-color", "data-on-bg-color", "data-color-scheme", "data-font-size", "data-headline-size", "data-divider", "data-focus", "data-font"]), { className: cls("db-accordion-item", props.className) }),
|
|
27
|
-
React.createElement("details", Object.assign({ "aria-disabled": getBooleanAsString(props.disabled), ref: _ref }, filterPassingProps(props, ["data-icon-variant", "data-icon-variant-before", "data-icon-variant-after", "data-icon-weight", "data-icon-weight-before", "data-icon-weight-after", "data-interactive", "data-force-mobile", "data-color", "data-container-color", "data-bg-color", "data-on-bg-color", "data-color-scheme", "data-font-size", "data-headline-size", "data-divider", "data-focus", "data-font", "onToggle"]), { open: _open }),
|
|
28
|
-
React.createElement("summary", { onClick: (event) =>
|
|
51
|
+
React.createElement("details", Object.assign({ "aria-disabled": getBooleanAsString(props.disabled), ref: _ref }, filterPassingProps(props, ["data-icon-variant", "data-icon-variant-before", "data-icon-variant-after", "data-icon-weight", "data-icon-weight-before", "data-icon-weight-after", "data-interactive", "data-force-mobile", "data-color", "data-container-color", "data-bg-color", "data-on-bg-color", "data-color-scheme", "data-font-size", "data-headline-size", "data-divider", "data-focus", "data-font", "onToggle"]), { name: _name, open: _open }),
|
|
52
|
+
React.createElement("summary", { onClick: (event) => handleToggle(event) },
|
|
29
53
|
props.headlinePlain ? React.createElement(React.Fragment, null, props.headlinePlain) : null,
|
|
30
54
|
!props.headlinePlain ? React.createElement(React.Fragment, null, props.headline) : null),
|
|
31
55
|
React.createElement("div", null, props.text ? React.createElement(React.Fragment, null, props.text) : React.createElement(React.Fragment, null, props.children)))));
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { GlobalProps, GlobalState, TextProps, ToggleEventProps, ToggleEventState } from '../../shared/model';
|
|
1
|
+
import { GlobalProps, GlobalState, InitializedState, NameProps, NameState, TextProps, ToggleEventProps, ToggleEventState } from '../../shared/model';
|
|
2
2
|
export type DBAccordionItemDefaultProps = {
|
|
3
3
|
/**
|
|
4
4
|
* Initial state for the accordion item
|
|
@@ -7,7 +7,7 @@ export type DBAccordionItemDefaultProps = {
|
|
|
7
7
|
/**
|
|
8
8
|
* The disabled attribute can be set to keep a user from clicking on the element.
|
|
9
9
|
*/
|
|
10
|
-
disabled?: boolean;
|
|
10
|
+
disabled?: boolean | string;
|
|
11
11
|
/**
|
|
12
12
|
* Title of the accordion-item as slot
|
|
13
13
|
*/
|
|
@@ -17,8 +17,8 @@ export type DBAccordionItemDefaultProps = {
|
|
|
17
17
|
*/
|
|
18
18
|
headlinePlain?: string;
|
|
19
19
|
} & TextProps;
|
|
20
|
-
export type DBAccordionItemProps = DBAccordionItemDefaultProps & GlobalProps & ToggleEventProps;
|
|
20
|
+
export type DBAccordionItemProps = DBAccordionItemDefaultProps & GlobalProps & ToggleEventProps & NameProps;
|
|
21
21
|
export type DBAccordionItemDefaultState = {
|
|
22
|
-
_open
|
|
22
|
+
_open?: boolean;
|
|
23
23
|
};
|
|
24
|
-
export type DBAccordionItemState = DBAccordionItemDefaultState & GlobalState & ToggleEventState<HTMLElement
|
|
24
|
+
export type DBAccordionItemState = DBAccordionItemDefaultState & GlobalState & ToggleEventState<HTMLElement> & InitializedState & NameState;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
declare const DBBadge: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<
|
|
2
|
+
declare const DBBadge: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<any>, "text" | "size" | keyof import("../..").GlobalProps | "semantic" | keyof import("./model").DBBadgeDefaultProps | "emphasis"> & import("./model").DBBadgeDefaultProps & import("../..").GlobalProps & import("../..").SemanticProps & import("../..").SizeProps & import("../..").EmphasisProps & import("../..").TextProps & React.RefAttributes<any>>;
|
|
3
3
|
export default DBBadge;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { GlobalProps, GlobalState, InitializedState, SemanticProps, SizeProps,
|
|
1
|
+
import { GlobalProps, GlobalState, InitializedState, SemanticProps, SizeProps, EmphasisProps, TextProps } from '../../shared/model';
|
|
2
2
|
export declare const BadgePlacementList: readonly ["inline", "corner-top-left", "corner-top-right", "corner-center-left", "corner-center-right", "corner-bottom-left", "corner-bottom-right"];
|
|
3
3
|
export type BadgePlacementType = (typeof BadgePlacementList)[number];
|
|
4
4
|
export type DBBadgeDefaultProps = {
|
|
@@ -11,6 +11,6 @@ export type DBBadgeDefaultProps = {
|
|
|
11
11
|
*/
|
|
12
12
|
label?: string;
|
|
13
13
|
};
|
|
14
|
-
export type DBBadgeProps = DBBadgeDefaultProps & GlobalProps & SemanticProps & SizeProps &
|
|
14
|
+
export type DBBadgeProps = DBBadgeDefaultProps & GlobalProps & SemanticProps & SizeProps & EmphasisProps & TextProps;
|
|
15
15
|
export type DBBadgeDefaultState = {};
|
|
16
16
|
export type DBBadgeState = DBBadgeDefaultState & GlobalState & InitializedState;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
declare const DBBrand: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<
|
|
2
|
+
declare const DBBrand: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<any>, "text" | "icon" | keyof import("../..").GlobalProps | "showIcon" | "hideLogo"> & import("./model").DBBrandDefaultProps & import("../..").GlobalProps & import("../..").IconProps & import("../..").ShowIconProps & import("../..").TextProps & React.RefAttributes<any>>;
|
|
3
3
|
export default DBBrand;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
declare const DBButton: React.ForwardRefExoticComponent<Omit<React.ButtonHTMLAttributes<
|
|
2
|
+
declare const DBButton: React.ForwardRefExoticComponent<Omit<React.ButtonHTMLAttributes<any>, "width" | "text" | "size" | "icon" | "onClick" | keyof import("./model").DBButtonDefaultProps | keyof import("../../shared/model").GlobalProps | "showIcon"> & import("./model").DBButtonDefaultProps & import("../../shared/model").GlobalProps & import("../../shared/model").ClickEventProps<HTMLButtonElement> & import("../../shared/model").IconProps & import("../../shared/model").WidthProps & import("../../shared/model").SizeProps & import("../../shared/model").ShowIconProps & import("../../shared/model").TextProps & React.RefAttributes<any>>;
|
|
3
3
|
export default DBButton;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import * as React from "react";
|
|
3
3
|
import { filterPassingProps, getRootProps } from "../../utils/react";
|
|
4
4
|
import { useRef, forwardRef } from "react";
|
|
5
|
-
import { cls, getBooleanAsString, getHideProp } from "../../utils";
|
|
5
|
+
import { cls, getBoolean, getBooleanAsString, getHideProp } from "../../utils";
|
|
6
6
|
function DBButtonFn(props, component) {
|
|
7
7
|
const _ref = component || useRef(component);
|
|
8
8
|
function handleClick(event) {
|
|
@@ -10,7 +10,7 @@ function DBButtonFn(props, component) {
|
|
|
10
10
|
props.onClick(event);
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
|
-
return (React.createElement("button", Object.assign({ ref: _ref }, filterPassingProps(props, ["data-icon-variant", "data-icon-variant-before", "data-icon-variant-after", "data-icon-weight", "data-icon-weight-before", "data-icon-weight-after", "data-interactive", "data-force-mobile", "data-color", "data-container-color", "data-bg-color", "data-on-bg-color", "data-color-scheme", "data-font-size", "data-headline-size", "data-divider", "data-focus", "data-font"]), { id: props.id }, getRootProps(props, ["data-icon-variant", "data-icon-variant-before", "data-icon-variant-after", "data-icon-weight", "data-icon-weight-before", "data-icon-weight-after", "data-interactive", "data-force-mobile", "data-color", "data-container-color", "data-bg-color", "data-on-bg-color", "data-color-scheme", "data-font-size", "data-headline-size", "data-divider", "data-focus", "data-font"]), { className: cls("db-button", props.className), type: props.type || "button", disabled: props.disabled, "aria-label": props.label, "data-icon": props.icon, "data-hide-icon": getHideProp(props.showIcon), "data-size": props.size, "data-state": props.state, "data-width": props.width, "data-variant": props.variant, "data-no-text": getBooleanAsString(props.noText), name: props.name, value: props.value, "aria-describedby": props.describedbyid, "aria-expanded": props.ariaexpanded, "aria-pressed": props.ariapressed, onClick: (event) => handleClick(event) }), props.text ? React.createElement(React.Fragment, null, props.text) : React.createElement(React.Fragment, null, props.children)));
|
|
13
|
+
return (React.createElement("button", Object.assign({ ref: _ref }, filterPassingProps(props, ["data-icon-variant", "data-icon-variant-before", "data-icon-variant-after", "data-icon-weight", "data-icon-weight-before", "data-icon-weight-after", "data-interactive", "data-force-mobile", "data-color", "data-container-color", "data-bg-color", "data-on-bg-color", "data-color-scheme", "data-font-size", "data-headline-size", "data-divider", "data-focus", "data-font"]), { id: props.id }, getRootProps(props, ["data-icon-variant", "data-icon-variant-before", "data-icon-variant-after", "data-icon-weight", "data-icon-weight-before", "data-icon-weight-after", "data-interactive", "data-force-mobile", "data-color", "data-container-color", "data-bg-color", "data-on-bg-color", "data-color-scheme", "data-font-size", "data-headline-size", "data-divider", "data-focus", "data-font"]), { className: cls("db-button", props.className), type: props.type || "button", disabled: getBoolean(props.disabled, "disabled"), "aria-label": props.label, "data-icon": props.icon, "data-hide-icon": getHideProp(props.showIcon), "data-size": props.size, "data-state": props.state, "data-width": props.width, "data-variant": props.variant, "data-no-text": getBooleanAsString(props.noText), name: props.name, form: props.form, value: props.value, "aria-describedby": props.describedbyid, "aria-expanded": props.ariaexpanded, "aria-pressed": props.ariapressed, onClick: (event) => handleClick(event) }), props.text ? React.createElement(React.Fragment, null, props.text) : React.createElement(React.Fragment, null, props.children)));
|
|
14
14
|
}
|
|
15
15
|
const DBButton = forwardRef(DBButtonFn);
|
|
16
16
|
export default DBButton;
|
|
@@ -17,11 +17,11 @@ export type DBButtonDefaultProps = {
|
|
|
17
17
|
/**
|
|
18
18
|
* The disabled attribute can be set to [keep a user from clicking on the button](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#disabled).
|
|
19
19
|
*/
|
|
20
|
-
disabled?: boolean;
|
|
20
|
+
disabled?: boolean | string;
|
|
21
21
|
/**
|
|
22
|
-
*
|
|
22
|
+
* Associates the control with a form element
|
|
23
23
|
*/
|
|
24
|
-
|
|
24
|
+
form?: string;
|
|
25
25
|
/**
|
|
26
26
|
* The label represents the [aria-label attributes](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-label) value of the button
|
|
27
27
|
*/
|
|
@@ -30,6 +30,14 @@ export type DBButtonDefaultProps = {
|
|
|
30
30
|
* The name attribute specifies a [name attributes value](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#name) for the button.
|
|
31
31
|
*/
|
|
32
32
|
name?: string;
|
|
33
|
+
/**
|
|
34
|
+
* Define the text next to the icon specified via the icon Property to get hidden.
|
|
35
|
+
*/
|
|
36
|
+
noText?: boolean | string;
|
|
37
|
+
/**
|
|
38
|
+
* Show loading progress inside button.
|
|
39
|
+
*/
|
|
40
|
+
state?: ButtonStateType;
|
|
33
41
|
/**
|
|
34
42
|
* The type attribute specifies the [type of button](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#type).
|
|
35
43
|
*/
|
|
@@ -38,10 +46,6 @@ export type DBButtonDefaultProps = {
|
|
|
38
46
|
* The value attribute specifies an initial [value for the button](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#value).
|
|
39
47
|
*/
|
|
40
48
|
value?: string;
|
|
41
|
-
/**
|
|
42
|
-
* Show loading progress inside button.
|
|
43
|
-
*/
|
|
44
|
-
state?: ButtonStateType;
|
|
45
49
|
/**
|
|
46
50
|
* Variant of the button. Use only 1 primary button on a page as CTA otherwise use one of the adaptive buttons.
|
|
47
51
|
*/
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
declare const DBCard: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<
|
|
2
|
+
declare const DBCard: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<any>, "spacing" | "onClick" | keyof import("../../shared/model").GlobalProps | keyof import("./model").DBCardDefaultProps> & import("./model").DBCardDefaultProps & import("../../shared/model").GlobalProps & import("../../shared/model").ClickEventProps<HTMLElement> & import("../../shared/model").SpacingProps & React.RefAttributes<any>>;
|
|
3
3
|
export default DBCard;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
declare const DBCheckbox: React.ForwardRefExoticComponent<Omit<React.InputHTMLAttributes<
|
|
2
|
+
declare const DBCheckbox: React.ForwardRefExoticComponent<Omit<React.InputHTMLAttributes<any>, "required" | "value" | "size" | "checked" | keyof import("../../shared/model").GlobalProps | "indeterminate" | keyof import("../../shared/model").ChangeEventProps<HTMLInputElement> | keyof import("../../shared/model").FocusEventProps<HTMLInputElement> | keyof import("../../shared/model").CustomFormProps | keyof import("../../shared/model").BaseFormProps | "showLabel" | keyof import("../../shared/model").FormMessageProps> & import("./model").DBCheckboxDefaultProps & import("../../shared/model").GlobalProps & import("../../shared/model").ChangeEventProps<HTMLInputElement> & import("../../shared/model").FocusEventProps<HTMLInputElement> & import("../../shared/model").CustomFormProps & import("../../shared/model").BaseFormProps & import("../../shared/model").RequiredProps & import("../../shared/model").ShowLabelProps & import("../../shared/model").ValueProps & import("../../shared/model").FormCheckProps & import("../../shared/model").FormMessageProps & import("../../shared/model").SizeProps & React.RefAttributes<any>>;
|
|
3
3
|
export default DBCheckbox;
|
|
@@ -4,38 +4,40 @@ import { filterPassingProps, getRootProps } from "../../utils/react";
|
|
|
4
4
|
import { useState, useRef, useEffect, forwardRef } from "react";
|
|
5
5
|
import { DEFAULT_INVALID_MESSAGE, DEFAULT_INVALID_MESSAGE_ID_SUFFIX, DEFAULT_MESSAGE_ID_SUFFIX, DEFAULT_VALID_MESSAGE, DEFAULT_VALID_MESSAGE_ID_SUFFIX, } from "../../shared/constants";
|
|
6
6
|
import DBInfotext from "../infotext/infotext";
|
|
7
|
-
import { cls, delay, getHideProp, hasVoiceOver, stringPropVisible, uuid, } from "../../utils";
|
|
7
|
+
import { cls, delay, getBoolean, getHideProp, hasVoiceOver, stringPropVisible, uuid, } from "../../utils";
|
|
8
8
|
function DBCheckboxFn(props, component) {
|
|
9
|
-
var _a, _b, _c, _d;
|
|
10
9
|
const _ref = component || useRef(component);
|
|
11
10
|
const [initialized, setInitialized] = useState(() => false);
|
|
12
11
|
const [_id, set_id] = useState(() => undefined);
|
|
13
12
|
const [_messageId, set_messageId] = useState(() => undefined);
|
|
14
13
|
const [_validMessageId, set_validMessageId] = useState(() => undefined);
|
|
15
14
|
const [_invalidMessageId, set_invalidMessageId] = useState(() => undefined);
|
|
15
|
+
const [_invalidMessage, set_invalidMessage] = useState(() => undefined);
|
|
16
16
|
const [_descByIds, set_descByIds] = useState(() => "");
|
|
17
17
|
const [_voiceOverFallback, set_voiceOverFallback] = useState(() => "");
|
|
18
|
-
function
|
|
19
|
-
var _a
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
props.change(event);
|
|
25
|
-
}
|
|
18
|
+
function hasValidState() {
|
|
19
|
+
var _a;
|
|
20
|
+
return !!((_a = props.validMessage) !== null && _a !== void 0 ? _a : props.validation === "valid");
|
|
21
|
+
}
|
|
22
|
+
function handleValidation() {
|
|
23
|
+
var _a, _b, _c, _d;
|
|
26
24
|
/* For a11y reasons we need to map the correct message with the checkbox */
|
|
27
25
|
if (!((_a = _ref.current) === null || _a === void 0 ? void 0 : _a.validity.valid) || props.validation === "invalid") {
|
|
28
26
|
set_descByIds(_invalidMessageId);
|
|
27
|
+
set_invalidMessage(props.invalidMessage ||
|
|
28
|
+
((_b = _ref.current) === null || _b === void 0 ? void 0 : _b.validationMessage) ||
|
|
29
|
+
DEFAULT_INVALID_MESSAGE);
|
|
29
30
|
if (hasVoiceOver()) {
|
|
30
|
-
set_voiceOverFallback(
|
|
31
|
+
set_voiceOverFallback(_invalidMessage);
|
|
31
32
|
delay(() => set_voiceOverFallback(""), 1000);
|
|
32
33
|
}
|
|
33
34
|
}
|
|
34
|
-
else if (
|
|
35
|
-
((
|
|
35
|
+
else if (hasValidState() &&
|
|
36
|
+
((_c = _ref.current) === null || _c === void 0 ? void 0 : _c.validity.valid) &&
|
|
37
|
+
props.required) {
|
|
36
38
|
set_descByIds(_validMessageId);
|
|
37
39
|
if (hasVoiceOver()) {
|
|
38
|
-
set_voiceOverFallback((
|
|
40
|
+
set_voiceOverFallback((_d = props.validMessage) !== null && _d !== void 0 ? _d : DEFAULT_VALID_MESSAGE);
|
|
39
41
|
delay(() => set_voiceOverFallback(""), 1000);
|
|
40
42
|
}
|
|
41
43
|
}
|
|
@@ -46,21 +48,21 @@ function DBCheckboxFn(props, component) {
|
|
|
46
48
|
set_descByIds("");
|
|
47
49
|
}
|
|
48
50
|
}
|
|
51
|
+
function handleChange(event) {
|
|
52
|
+
if (props.onChange) {
|
|
53
|
+
props.onChange(event);
|
|
54
|
+
}
|
|
55
|
+
handleValidation();
|
|
56
|
+
}
|
|
49
57
|
function handleBlur(event) {
|
|
50
58
|
if (props.onBlur) {
|
|
51
59
|
props.onBlur(event);
|
|
52
60
|
}
|
|
53
|
-
if (props.blur) {
|
|
54
|
-
props.blur(event);
|
|
55
|
-
}
|
|
56
61
|
}
|
|
57
62
|
function handleFocus(event) {
|
|
58
63
|
if (props.onFocus) {
|
|
59
64
|
props.onFocus(event);
|
|
60
65
|
}
|
|
61
|
-
if (props.focus) {
|
|
62
|
-
props.focus(event);
|
|
63
|
-
}
|
|
64
66
|
}
|
|
65
67
|
useEffect(() => {
|
|
66
68
|
var _a;
|
|
@@ -70,7 +72,14 @@ function DBCheckboxFn(props, component) {
|
|
|
70
72
|
set_messageId(mId + DEFAULT_MESSAGE_ID_SUFFIX);
|
|
71
73
|
set_validMessageId(mId + DEFAULT_VALID_MESSAGE_ID_SUFFIX);
|
|
72
74
|
set_invalidMessageId(mId + DEFAULT_INVALID_MESSAGE_ID_SUFFIX);
|
|
75
|
+
set_invalidMessage(props.invalidMessage || DEFAULT_INVALID_MESSAGE);
|
|
73
76
|
}, []);
|
|
77
|
+
useEffect(() => {
|
|
78
|
+
var _a;
|
|
79
|
+
set_invalidMessage(props.invalidMessage ||
|
|
80
|
+
((_a = _ref.current) === null || _a === void 0 ? void 0 : _a.validationMessage) ||
|
|
81
|
+
DEFAULT_INVALID_MESSAGE);
|
|
82
|
+
}, [_ref.current, props.invalidMessage]);
|
|
74
83
|
useEffect(() => {
|
|
75
84
|
if (_id) {
|
|
76
85
|
const messageId = _id + DEFAULT_MESSAGE_ID_SUFFIX;
|
|
@@ -87,7 +96,7 @@ function DBCheckboxFn(props, component) {
|
|
|
87
96
|
if (props.indeterminate !== undefined) {
|
|
88
97
|
// When indeterminate is set, the value of the checked prop only impacts the form submitted values.
|
|
89
98
|
// It has no accessibility or UX implications. (https://mui.com/material-ui/react-checkbox/)
|
|
90
|
-
_ref.current.indeterminate = props.indeterminate;
|
|
99
|
+
_ref.current.indeterminate = !!getBoolean(props.indeterminate);
|
|
91
100
|
}
|
|
92
101
|
}
|
|
93
102
|
}, [initialized, _ref.current, props.indeterminate]);
|
|
@@ -95,18 +104,18 @@ function DBCheckboxFn(props, component) {
|
|
|
95
104
|
if (initialized && _ref.current) {
|
|
96
105
|
// in angular this must be set via native element
|
|
97
106
|
if (props.checked != undefined) {
|
|
98
|
-
_ref.current.checked = props.checked;
|
|
107
|
+
_ref.current.checked = !!getBoolean(props.checked);
|
|
99
108
|
}
|
|
100
109
|
setInitialized(false);
|
|
101
110
|
}
|
|
102
111
|
}, [initialized, _ref.current, props.checked]);
|
|
103
112
|
return (React.createElement("div", Object.assign({}, getRootProps(props, ["data-icon-variant", "data-icon-variant-before", "data-icon-variant-after", "data-icon-weight", "data-icon-weight-before", "data-icon-weight-after", "data-interactive", "data-force-mobile", "data-color", "data-container-color", "data-bg-color", "data-on-bg-color", "data-color-scheme", "data-font-size", "data-headline-size", "data-divider", "data-focus", "data-font"]), { className: cls("db-checkbox", props.className), "data-size": props.size, "data-hide-label": getHideProp(props.showLabel) }),
|
|
104
113
|
React.createElement("label", { htmlFor: _id },
|
|
105
|
-
React.createElement("input", Object.assign({ type: "checkbox", "aria-invalid": props.validation === "invalid", "data-custom-validity": props.validation, ref: _ref }, filterPassingProps(props, ["data-icon-variant", "data-icon-variant-before", "data-icon-variant-after", "data-icon-weight", "data-icon-weight-before", "data-icon-weight-after", "data-interactive", "data-force-mobile", "data-color", "data-container-color", "data-bg-color", "data-on-bg-color", "data-color-scheme", "data-font-size", "data-headline-size", "data-divider", "data-focus", "data-font"]), { id: _id, name: props.name, checked: props.checked, disabled: props.disabled, value: props.value, required: props.required, onChange: (event) => handleChange(event), onBlur: (event) => handleBlur(event), onFocus: (event) => handleFocus(event), "aria-describedby": _descByIds })),
|
|
114
|
+
React.createElement("input", Object.assign({ type: "checkbox", "aria-invalid": props.validation === "invalid", "data-custom-validity": props.validation, ref: _ref }, filterPassingProps(props, ["data-icon-variant", "data-icon-variant-before", "data-icon-variant-after", "data-icon-weight", "data-icon-weight-before", "data-icon-weight-after", "data-interactive", "data-force-mobile", "data-color", "data-container-color", "data-bg-color", "data-on-bg-color", "data-color-scheme", "data-font-size", "data-headline-size", "data-divider", "data-focus", "data-font"]), { id: _id, name: props.name, checked: getBoolean(props.checked, "checked"), disabled: getBoolean(props.disabled, "disabled"), value: props.value, required: getBoolean(props.required, "required"), onChange: (event) => handleChange(event), onBlur: (event) => handleBlur(event), onFocus: (event) => handleFocus(event), "aria-describedby": _descByIds })),
|
|
106
115
|
props.label ? React.createElement(React.Fragment, null, props.label) : React.createElement(React.Fragment, null, props.children)),
|
|
107
116
|
stringPropVisible(props.message, props.showMessage) ? (React.createElement(DBInfotext, { size: "small", icon: props.messageIcon, id: _messageId }, props.message)) : null,
|
|
108
|
-
React.createElement(DBInfotext, { size: "small", semantic: "successful", id: _validMessageId },
|
|
109
|
-
React.createElement(DBInfotext, { size: "small", semantic: "critical", id: _invalidMessageId },
|
|
117
|
+
hasValidState() ? (React.createElement(DBInfotext, { size: "small", semantic: "successful", id: _validMessageId }, props.validMessage || DEFAULT_VALID_MESSAGE)) : null,
|
|
118
|
+
React.createElement(DBInfotext, { size: "small", semantic: "critical", id: _invalidMessageId }, _invalidMessage),
|
|
110
119
|
React.createElement("span", { "data-visually-hidden": "true", role: "status" }, _voiceOverFallback)));
|
|
111
120
|
}
|
|
112
121
|
const DBCheckbox = forwardRef(DBCheckboxFn);
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { ChangeEventProps, ChangeEventState, FocusEventProps, FocusEventState, FormCheckProps, FormMessageProps, FormProps, FormState, GlobalProps, GlobalState, InitializedState, SizeProps } from '../../shared/model';
|
|
1
|
+
import { ChangeEventProps, ChangeEventState, FocusEventProps, FocusEventState, FormCheckProps, FormMessageProps, FormProps, FormState, FromValidState, GlobalProps, GlobalState, InitializedState, SizeProps } from '../../shared/model';
|
|
2
2
|
export type DBCheckboxDefaultProps = {
|
|
3
3
|
/**
|
|
4
4
|
* Define an [indeterminate](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement#indeterminate) state of a checkbox
|
|
5
5
|
*/
|
|
6
|
-
indeterminate?: boolean;
|
|
6
|
+
indeterminate?: boolean | string;
|
|
7
7
|
};
|
|
8
8
|
export type DBCheckboxProps = DBCheckboxDefaultProps & GlobalProps & ChangeEventProps<HTMLInputElement> & FocusEventProps<HTMLInputElement> & FormProps & FormCheckProps & FormMessageProps & SizeProps;
|
|
9
9
|
export type DBCheckboxDefaultState = {};
|
|
10
|
-
export type DBCheckboxState = DBCheckboxDefaultState & GlobalState & ChangeEventState<HTMLInputElement> & FocusEventState<HTMLInputElement> & FormState & InitializedState;
|
|
10
|
+
export type DBCheckboxState = DBCheckboxDefaultState & GlobalState & ChangeEventState<HTMLInputElement> & FocusEventState<HTMLInputElement> & FormState & InitializedState & FromValidState;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
declare const DBCustomSelect: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<any>, "required" | "icon" | keyof import("../../shared/model").GlobalProps | "showIcon" | keyof import("../../shared/model").CustomFormProps | keyof import("../../shared/model").BaseFormProps | "showLabel" | keyof import("../../shared/model").FormMessageProps | keyof import("./model").DBCustomSelectDefaultProps | keyof import("./model").DBCustomSelectEvents> & import("../../shared/model").GlobalProps & import("../../shared/model").CustomFormProps & import("../../shared/model").BaseFormProps & import("../../shared/model").RequiredProps & import("../../shared/model").FormMessageProps & import("./model").DBCustomSelectDefaultProps & import("./model").DBCustomSelectEvents & import("../../shared/model").IconProps & import("../../shared/model").ShowIconProps & import("../../shared/model").ShowLabelProps & React.RefAttributes<any>>;
|
|
3
|
+
export default DBCustomSelect;
|