@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.
Files changed (112) hide show
  1. package/dist/components/accordion/accordion.d.ts +1 -1
  2. package/dist/components/accordion/accordion.js +8 -9
  3. package/dist/components/accordion/model.d.ts +2 -2
  4. package/dist/components/accordion-item/accordion-item.d.ts +3 -3
  5. package/dist/components/accordion-item/accordion-item.js +27 -3
  6. package/dist/components/accordion-item/model.d.ts +5 -5
  7. package/dist/components/badge/badge.d.ts +1 -1
  8. package/dist/components/badge/model.d.ts +2 -2
  9. package/dist/components/brand/brand.d.ts +1 -1
  10. package/dist/components/button/button.d.ts +1 -1
  11. package/dist/components/button/button.js +2 -2
  12. package/dist/components/button/model.d.ts +11 -7
  13. package/dist/components/card/card.d.ts +1 -1
  14. package/dist/components/checkbox/checkbox.d.ts +1 -1
  15. package/dist/components/checkbox/checkbox.js +34 -25
  16. package/dist/components/checkbox/model.d.ts +3 -3
  17. package/dist/components/custom-select/custom-select.d.ts +3 -0
  18. package/dist/components/custom-select/custom-select.js +553 -0
  19. package/dist/components/custom-select/index.d.ts +1 -0
  20. package/dist/components/custom-select/index.js +1 -0
  21. package/dist/components/custom-select/model.d.ts +193 -0
  22. package/dist/components/custom-select/model.js +1 -0
  23. package/dist/components/custom-select-dropdown/custom-select-dropdown.d.ts +3 -0
  24. package/dist/components/custom-select-dropdown/custom-select-dropdown.js +12 -0
  25. package/dist/components/custom-select-dropdown/index.d.ts +1 -0
  26. package/dist/components/custom-select-dropdown/index.js +1 -0
  27. package/dist/components/custom-select-dropdown/model.d.ts +15 -0
  28. package/dist/components/custom-select-dropdown/model.js +1 -0
  29. package/dist/components/custom-select-form-field/custom-select-form-field.d.ts +3 -0
  30. package/dist/components/custom-select-form-field/custom-select-form-field.js +11 -0
  31. package/dist/components/custom-select-form-field/index.d.ts +1 -0
  32. package/dist/components/custom-select-form-field/index.js +1 -0
  33. package/dist/components/custom-select-form-field/model.d.ts +5 -0
  34. package/dist/components/custom-select-form-field/model.js +1 -0
  35. package/dist/components/custom-select-list/custom-select-list.d.ts +3 -0
  36. package/dist/components/custom-select-list/custom-select-list.js +12 -0
  37. package/dist/components/custom-select-list/index.d.ts +1 -0
  38. package/dist/components/custom-select-list/index.js +1 -0
  39. package/dist/components/custom-select-list/model.d.ts +8 -0
  40. package/dist/components/custom-select-list/model.js +1 -0
  41. package/dist/components/custom-select-list-item/custom-select-list-item.d.ts +6 -0
  42. package/dist/components/custom-select-list-item/custom-select-list-item.js +37 -0
  43. package/dist/components/custom-select-list-item/index.d.ts +1 -0
  44. package/dist/components/custom-select-list-item/index.js +1 -0
  45. package/dist/components/custom-select-list-item/model.d.ts +29 -0
  46. package/dist/components/custom-select-list-item/model.js +1 -0
  47. package/dist/components/divider/divider.d.ts +1 -1
  48. package/dist/components/drawer/drawer.d.ts +1 -1
  49. package/dist/components/drawer/drawer.js +6 -7
  50. package/dist/components/drawer/model.d.ts +2 -2
  51. package/dist/components/header/header.d.ts +1 -1
  52. package/dist/components/header/header.js +8 -7
  53. package/dist/components/header/model.d.ts +2 -2
  54. package/dist/components/icon/icon.d.ts +1 -1
  55. package/dist/components/infotext/infotext.d.ts +1 -1
  56. package/dist/components/input/input.d.ts +1 -1
  57. package/dist/components/input/input.js +43 -34
  58. package/dist/components/input/model.d.ts +3 -3
  59. package/dist/components/link/link.d.ts +1 -1
  60. package/dist/components/link/link.js +1 -1
  61. package/dist/components/navigation/navigation.d.ts +1 -1
  62. package/dist/components/navigation-item/model.d.ts +2 -3
  63. package/dist/components/navigation-item/navigation-item.d.ts +1 -1
  64. package/dist/components/navigation-item/navigation-item.js +14 -17
  65. package/dist/components/notification/model.d.ts +3 -3
  66. package/dist/components/notification/notification.d.ts +1 -1
  67. package/dist/components/notification/notification.js +3 -3
  68. package/dist/components/page/model.d.ts +1 -1
  69. package/dist/components/page/page.d.ts +1 -1
  70. package/dist/components/page/page.js +1 -1
  71. package/dist/components/popover/model.d.ts +1 -1
  72. package/dist/components/popover/popover.d.ts +1 -1
  73. package/dist/components/popover/popover.js +1 -1
  74. package/dist/components/radio/radio.d.ts +1 -1
  75. package/dist/components/radio/radio.js +2 -11
  76. package/dist/components/section/section.d.ts +1 -1
  77. package/dist/components/select/model.d.ts +5 -5
  78. package/dist/components/select/select.d.ts +1 -1
  79. package/dist/components/select/select.js +47 -40
  80. package/dist/components/stack/model.d.ts +1 -1
  81. package/dist/components/stack/stack.d.ts +1 -1
  82. package/dist/components/switch/model.d.ts +2 -2
  83. package/dist/components/switch/switch.d.ts +1 -1
  84. package/dist/components/switch/switch.js +3 -12
  85. package/dist/components/tab-item/model.d.ts +6 -6
  86. package/dist/components/tab-item/tab-item.d.ts +1 -1
  87. package/dist/components/tab-item/tab-item.js +26 -9
  88. package/dist/components/tab-list/tab-list.d.ts +1 -1
  89. package/dist/components/tab-panel/tab-panel.d.ts +1 -1
  90. package/dist/components/tabs/model.d.ts +11 -3
  91. package/dist/components/tabs/tabs.d.ts +1 -1
  92. package/dist/components/tabs/tabs.js +16 -15
  93. package/dist/components/tag/model.d.ts +11 -7
  94. package/dist/components/tag/tag.d.ts +1 -1
  95. package/dist/components/tag/tag.js +6 -5
  96. package/dist/components/textarea/model.d.ts +4 -4
  97. package/dist/components/textarea/textarea.d.ts +1 -1
  98. package/dist/components/textarea/textarea.js +39 -31
  99. package/dist/components/tooltip/model.d.ts +1 -1
  100. package/dist/components/tooltip/tooltip.d.ts +1 -1
  101. package/dist/index.d.ts +5 -0
  102. package/dist/index.js +5 -0
  103. package/dist/shared/constants.d.ts +5 -0
  104. package/dist/shared/constants.js +6 -1
  105. package/dist/shared/model.d.ts +83 -41
  106. package/dist/shared/model.js +3 -2
  107. package/dist/utils/document-click-listener.d.ts +8 -0
  108. package/dist/utils/document-click-listener.js +29 -0
  109. package/dist/utils/index.d.ts +6 -27
  110. package/dist/utils/index.js +22 -20
  111. package/dist/utils/react.d.ts +4 -4
  112. 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<HTMLUListElement>, keyof import("../..").GlobalProps | keyof import("./model").DBAccordionDefaultProps> & import("./model").DBAccordionDefaultProps & import("../..").GlobalProps & React.RefAttributes<HTMLUListElement>>;
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(items) {
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) && ((_a = props.initOpenIndex) === null || _a === void 0 ? void 0 : _a.length) > 0) {
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(props.items)) === 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));
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: string;
39
- convertItems: (items?: unknown[] | string) => DBAccordionItemDefaultProps[];
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<HTMLDetailsElement>, "text" | "disabled" | "onToggle" | keyof import("../../shared/model").GlobalProps | "headline" | "defaultOpen" | "headlinePlain"> & {
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<HTMLDetailsElement>>;
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
- function toggle(event) {
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) => toggle(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: boolean;
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<HTMLSpanElement>, "text" | "size" | keyof import("../..").GlobalProps | "semantic" | keyof import("./model").DBBadgeDefaultProps | "emphasis"> & import("./model").DBBadgeDefaultProps & import("../..").GlobalProps & import("../..").SemanticProps & import("../..").SizeProps & import("../..").TagEmphasisProps & import("../..").TextProps & React.RefAttributes<HTMLSpanElement>>;
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, TagEmphasisProps, TextProps } from '../../shared/model';
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 & TagEmphasisProps & TextProps;
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<HTMLDivElement>, "text" | "icon" | keyof import("../..").GlobalProps | "showIcon" | "hideLogo"> & import("./model").DBBrandDefaultProps & import("../..").GlobalProps & import("../..").IconProps & import("../..").ShowIconProps & import("../..").TextProps & React.RefAttributes<HTMLDivElement>>;
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<HTMLButtonElement>, "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<HTMLButtonElement>>;
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
- * Define the text next to the icon specified via the icon Property to get hidden.
22
+ * Associates the control with a form element
23
23
  */
24
- noText?: boolean;
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<HTMLDivElement>, "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<HTMLDivElement>>;
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<HTMLInputElement>, "size" | "checked" | keyof import("../../shared/model").GlobalProps | "indeterminate" | keyof import("../../shared/model").ChangeEventProps<HTMLInputElement> | keyof import("../../shared/model").FocusEventProps<HTMLInputElement> | keyof import("../../shared/model").FormProps | 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").FormProps & import("../../shared/model").FormCheckProps & import("../../shared/model").FormMessageProps & import("../../shared/model").SizeProps & React.RefAttributes<HTMLInputElement>>;
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 handleChange(event) {
19
- var _a, _b, _c, _d, _e, _f;
20
- if (props.onChange) {
21
- props.onChange(event);
22
- }
23
- if (props.change) {
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((_d = (_b = props.invalidMessage) !== null && _b !== void 0 ? _b : (_c = _ref.current) === null || _c === void 0 ? void 0 : _c.validationMessage) !== null && _d !== void 0 ? _d : DEFAULT_INVALID_MESSAGE);
31
+ set_voiceOverFallback(_invalidMessage);
31
32
  delay(() => set_voiceOverFallback(""), 1000);
32
33
  }
33
34
  }
34
- else if (props.validation === "valid" ||
35
- (((_e = _ref.current) === null || _e === void 0 ? void 0 : _e.validity.valid) && props.required)) {
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((_f = props.validMessage) !== null && _f !== void 0 ? _f : DEFAULT_VALID_MESSAGE);
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 }, (_a = props.validMessage) !== null && _a !== void 0 ? _a : DEFAULT_VALID_MESSAGE),
109
- React.createElement(DBInfotext, { size: "small", semantic: "critical", id: _invalidMessageId }, (_d = (_b = props.invalidMessage) !== null && _b !== void 0 ? _b : (_c = _ref.current) === null || _c === void 0 ? void 0 : _c.validationMessage) !== null && _d !== void 0 ? _d : DEFAULT_INVALID_MESSAGE),
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;