@db-ux/react-core-components 2.0.0-0-6589a60 → 2.0.0-0-custom-select-16b8cce

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 (54) hide show
  1. package/dist/components/checkbox/checkbox.d.ts +1 -1
  2. package/dist/components/checkbox/checkbox.js +2 -2
  3. package/dist/components/custom-select/custom-select.d.ts +3 -0
  4. package/dist/components/custom-select/custom-select.js +543 -0
  5. package/dist/components/custom-select/index.d.ts +1 -0
  6. package/dist/components/custom-select/index.js +1 -0
  7. package/dist/components/custom-select/model.d.ts +173 -0
  8. package/dist/components/custom-select/model.js +1 -0
  9. package/dist/components/custom-select-dropdown/custom-select-dropdown.d.ts +3 -0
  10. package/dist/components/custom-select-dropdown/custom-select-dropdown.js +12 -0
  11. package/dist/components/custom-select-dropdown/index.d.ts +1 -0
  12. package/dist/components/custom-select-dropdown/index.js +1 -0
  13. package/dist/components/custom-select-dropdown/model.d.ts +15 -0
  14. package/dist/components/custom-select-dropdown/model.js +1 -0
  15. package/dist/components/custom-select-form-field/custom-select-form-field.d.ts +3 -0
  16. package/dist/components/custom-select-form-field/custom-select-form-field.js +11 -0
  17. package/dist/components/custom-select-form-field/index.d.ts +1 -0
  18. package/dist/components/custom-select-form-field/index.js +1 -0
  19. package/dist/components/custom-select-form-field/model.d.ts +5 -0
  20. package/dist/components/custom-select-form-field/model.js +1 -0
  21. package/dist/components/custom-select-list/custom-select-list.d.ts +3 -0
  22. package/dist/components/custom-select-list/custom-select-list.js +12 -0
  23. package/dist/components/custom-select-list/index.d.ts +1 -0
  24. package/dist/components/custom-select-list/index.js +1 -0
  25. package/dist/components/custom-select-list/model.d.ts +8 -0
  26. package/dist/components/custom-select-list/model.js +1 -0
  27. package/dist/components/custom-select-list-item/custom-select-list-item.d.ts +6 -0
  28. package/dist/components/custom-select-list-item/custom-select-list-item.js +40 -0
  29. package/dist/components/custom-select-list-item/index.d.ts +1 -0
  30. package/dist/components/custom-select-list-item/index.js +1 -0
  31. package/dist/components/custom-select-list-item/model.d.ts +29 -0
  32. package/dist/components/custom-select-list-item/model.js +1 -0
  33. package/dist/components/input/input.d.ts +1 -1
  34. package/dist/components/input/input.js +4 -4
  35. package/dist/components/radio/radio.d.ts +1 -1
  36. package/dist/components/select/model.d.ts +3 -3
  37. package/dist/components/select/select.d.ts +1 -1
  38. package/dist/components/select/select.js +6 -6
  39. package/dist/components/switch/switch.d.ts +1 -1
  40. package/dist/components/tag/model.d.ts +3 -3
  41. package/dist/components/tag/tag.d.ts +1 -1
  42. package/dist/components/tag/tag.js +5 -4
  43. package/dist/components/textarea/textarea.d.ts +1 -1
  44. package/dist/components/textarea/textarea.js +2 -2
  45. package/dist/index.d.ts +5 -0
  46. package/dist/index.js +5 -0
  47. package/dist/shared/constants.d.ts +5 -0
  48. package/dist/shared/constants.js +6 -1
  49. package/dist/shared/model.d.ts +31 -14
  50. package/dist/shared/model.js +3 -1
  51. package/dist/utils/index.d.ts +2 -0
  52. package/dist/utils/index.js +2 -0
  53. package/dist/utils/react.d.ts +4 -4
  54. package/package.json +3 -3
@@ -0,0 +1,173 @@
1
+ import { BaseFormProps, CloseEventState, CustomFormProps, FormMessageProps, FormState, GlobalProps, GlobalState, IconProps, PlacementVerticalType, PopoverState, RequiredProps, ShowIconProps, ShowLabelProps, ValidationType, WidthProps } from '../../shared/model';
2
+ import { DBCustomSelectFormFieldDefaultProps } from '../custom-select-form-field/model';
3
+ import { CustomSelectDropdownWidthType } from '../custom-select-dropdown/model';
4
+ import { DBCustomSelectListItemExtraProps } from '../custom-select-list-item/model';
5
+ export type CustomSelectOptionType = {
6
+ /**
7
+ * Disables this option
8
+ */
9
+ disabled?: boolean;
10
+ /**
11
+ * Identifier for option
12
+ */
13
+ id?: string;
14
+ /**
15
+ * If the value is different from the label you want to show to the user.
16
+ */
17
+ label?: string;
18
+ /**
19
+ * The value for the option
20
+ */
21
+ value?: string;
22
+ } & DBCustomSelectListItemExtraProps;
23
+ export declare const SelectedTypeList: readonly ["amount", "text", "tag"];
24
+ export type SelectedTypeType = (typeof SelectedTypeList)[number];
25
+ export type DBCustomSelectDefaultProps = {
26
+ /**
27
+ * Optional: if select-type="amount" change the shown text
28
+ */
29
+ amountText?: string;
30
+ /**
31
+ * Label for the clear selection button
32
+ */
33
+ clearSelectionLabel?: string;
34
+ /**
35
+ * Deselect all checkbox label
36
+ */
37
+ deSelectAllLabel?: string;
38
+ /**
39
+ * Changes the behavior of the dropdown with.
40
+ * Default: fixed 328px
41
+ * Auto: Based on the size of the form-field
42
+ */
43
+ dropdownWidth?: CustomSelectDropdownWidthType | 'string';
44
+ /**
45
+ * Dropdown - hint if data has to be loaded
46
+ */
47
+ loadingText?: string;
48
+ /**
49
+ * Change the button text for mobile close
50
+ */
51
+ mobileCloseButtonText?: string;
52
+ /**
53
+ * Enables CustomSelect
54
+ */
55
+ multiple?: boolean;
56
+ /**
57
+ * Dropdown - hint if there are no options
58
+ */
59
+ noResultsText?: string;
60
+ /**
61
+ * Optional: if select-type="amount" when amount changes
62
+ * @param amount The amount of selected checkboxes
63
+ */
64
+ onAmountChange?: (amount: number) => void;
65
+ /**
66
+ * Triggers after some checkbox was clicked in dropdown
67
+ * @param values the changed values
68
+ */
69
+ onSelect?: (values: string[]) => void;
70
+ /**
71
+ * You should pass in the options as an array.
72
+ */
73
+ options?: CustomSelectOptionType[];
74
+ /**
75
+ * The `placement` attributes values change the position to absolute and adds a transform based on the placement.
76
+ */
77
+ placement?: PlacementVerticalType;
78
+ /**
79
+ * Optional: if you use selectedType=tag and options, you need to set the removeTagsTexts for screen reader users
80
+ */
81
+ removeTagsTexts?: string[];
82
+ /**
83
+ * Search label
84
+ */
85
+ searchLabel?: string;
86
+ /**
87
+ * Search placeholder
88
+ */
89
+ searchPlaceholder?: string;
90
+ /**
91
+ * Select all checkbox label
92
+ */
93
+ selectAllLabel?: string;
94
+ /**
95
+ * Change the selected type for values shown in multi select
96
+ */
97
+ selectedType?: SelectedTypeType;
98
+ /**
99
+ * Show clear selection button (default:true). Hide it if you have very small inputs e.g. in tables.
100
+ */
101
+ showClearSelection?: boolean;
102
+ /**
103
+ * Dropdown - enable loading infotext and spinner
104
+ */
105
+ showLoading?: boolean;
106
+ /**
107
+ * Dropdown - enable no options infotext
108
+ */
109
+ showNoResults?: boolean;
110
+ /**
111
+ * Forces search in header.
112
+ */
113
+ showSearch?: boolean;
114
+ /**
115
+ * Forces select all checkbox (only for multiple).
116
+ */
117
+ showSelectAll?: boolean;
118
+ /**
119
+ * Initial value for multi select
120
+ */
121
+ values?: string[];
122
+ /**
123
+ * Programmatically open the dropdown. May differ if you don't use onDropdownToggle.
124
+ */
125
+ open?: boolean;
126
+ /**
127
+ * Informs the user when dropdown was toggled.
128
+ */
129
+ onDropdownToggle?: (event: any) => void;
130
+ };
131
+ export type DBCustomSelectProps = GlobalProps & CustomFormProps & BaseFormProps & RequiredProps & FormMessageProps & DBCustomSelectDefaultProps & DBCustomSelectFormFieldDefaultProps & WidthProps & IconProps & ShowIconProps & ShowLabelProps;
132
+ export type DBCustomSelectDefaultState = {
133
+ _validity?: ValidationType;
134
+ _values?: string[];
135
+ _options?: CustomSelectOptionType[];
136
+ _selectedOptions?: CustomSelectOptionType[];
137
+ _hasNoOptions: boolean;
138
+ _selectId?: string;
139
+ _labelId?: string;
140
+ _summaryId?: string;
141
+ _placeholderId?: string;
142
+ _selectedLabels?: string;
143
+ _selectedLabelsId?: string;
144
+ _infoTextId?: string;
145
+ _externalChangeTimestamp?: number;
146
+ _internalChangeTimestamp?: number;
147
+ _name?: string;
148
+ getNativeSelectValue: () => string;
149
+ getOptionLabel: (option: CustomSelectOptionType) => string;
150
+ getOptionChecked: (value?: string) => boolean;
151
+ getOptionKey: (option: CustomSelectOptionType) => string;
152
+ getTagRemoveLabel: (index: number) => string;
153
+ selectAllEnabled: boolean;
154
+ searchEnabled: boolean;
155
+ amountOptions: number;
156
+ setDescById: (descId?: string) => void;
157
+ handleTagRemove: (option: CustomSelectOptionType, event?: any) => void;
158
+ handleSummaryFocus: () => void;
159
+ handleSelect: (value?: string) => void;
160
+ handleSelectAll: () => void;
161
+ handleClearAll: () => void;
162
+ handleDropdownToggle: (event: any) => void;
163
+ handleDocumentClose: (event: any) => void;
164
+ handleOpenByKeyboardFocus: (onlySearch?: boolean) => void;
165
+ handleFocusFirstDropdownCheckbox: (activeElement?: Element) => void;
166
+ handleKeyboardPress: (event: any) => void;
167
+ handleArrowDownUp: (event: any) => void;
168
+ handleSearch: (event: any) => void;
169
+ getSelectAllLabel: () => string;
170
+ selectAllChecked: boolean;
171
+ selectAllIndeterminate: boolean;
172
+ };
173
+ export type DBCustomSelectState = DBCustomSelectDefaultState & GlobalState & FormState & CloseEventState & PopoverState;
@@ -0,0 +1 @@
1
+ export const SelectedTypeList = ['amount', 'text', 'tag'];
@@ -0,0 +1,3 @@
1
+ import * as React from "react";
2
+ declare const DBCustomSelectDropdown: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<HTMLDivElement>, "width" | keyof import("../..").GlobalProps> & import("./model").DBCustomSelectDropdownDefaultProps & import("../..").GlobalProps & React.RefAttributes<HTMLDivElement>>;
3
+ export default DBCustomSelectDropdown;
@@ -0,0 +1,12 @@
1
+ "use client";
2
+ import * as React from "react";
3
+ import { filterPassingProps, getRootProps } from "../../utils/react";
4
+ import { useRef, forwardRef } from "react";
5
+ import { cls } from "../../utils";
6
+ function DBCustomSelectDropdownFn(props, component) {
7
+ props = Object.assign({ width: "fixed" }, props);
8
+ const _ref = component || useRef(component);
9
+ return (React.createElement("article", Object.assign({ "data-spacing": "none", 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-custom-select-dropdown db-card", props.className), "data-width": props.width }), props.children));
10
+ }
11
+ const DBCustomSelectDropdown = forwardRef(DBCustomSelectDropdownFn);
12
+ export default DBCustomSelectDropdown;
@@ -0,0 +1 @@
1
+ export { default as DBCustomSelectDropdown } from './custom-select-dropdown';
@@ -0,0 +1 @@
1
+ export { default as DBCustomSelectDropdown } from './custom-select-dropdown';
@@ -0,0 +1,15 @@
1
+ import { GlobalProps, GlobalState } from '../../shared/model';
2
+ export declare const CustomSelectDropdownWidthList: readonly ["fixed", "auto", "full"];
3
+ export type CustomSelectDropdownWidthType = (typeof CustomSelectDropdownWidthList)[number];
4
+ export type DBCustomSelectDropdownDefaultProps = {
5
+ /**
6
+ * Changes the behavior of the dropdown with.
7
+ * Default: fixed 328px
8
+ * Full: Based on the size of the form-field
9
+ * Auto: Based on the size of the largest list item
10
+ */
11
+ width?: CustomSelectDropdownWidthType | string;
12
+ };
13
+ export type DBCustomSelectDropdownProps = DBCustomSelectDropdownDefaultProps & GlobalProps;
14
+ export type DBCustomSelectDropdownDefaultState = {};
15
+ export type DBCustomSelectDropdownState = DBCustomSelectDropdownDefaultState & GlobalState;
@@ -0,0 +1 @@
1
+ export const CustomSelectDropdownWidthList = ['fixed', 'auto', 'full'];
@@ -0,0 +1,3 @@
1
+ import * as React from "react";
2
+ declare const DBCustomSelectFormField: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<HTMLDivElement>, keyof import("../../shared/model").GlobalProps> & import("../../shared/model").GlobalProps & React.RefAttributes<HTMLDivElement>>;
3
+ export default DBCustomSelectFormField;
@@ -0,0 +1,11 @@
1
+ "use client";
2
+ import * as React from "react";
3
+ import { filterPassingProps, getRootProps } from "../../utils/react";
4
+ import { useRef, forwardRef } from "react";
5
+ import { cls } from "../../utils";
6
+ function DBCustomSelectFormFieldFn(props, component) {
7
+ const _ref = component || useRef(component);
8
+ return (React.createElement("summary", 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-custom-select-form-field", props.className) }), props.children));
9
+ }
10
+ const DBCustomSelectFormField = forwardRef(DBCustomSelectFormFieldFn);
11
+ export default DBCustomSelectFormField;
@@ -0,0 +1 @@
1
+ export { default as DBCustomSelectFormField } from './custom-select-form-field';
@@ -0,0 +1 @@
1
+ export { default as DBCustomSelectFormField } from './custom-select-form-field';
@@ -0,0 +1,5 @@
1
+ import { GlobalProps, GlobalState } from '../../shared/model';
2
+ export type DBCustomSelectFormFieldDefaultProps = {};
3
+ export type DBCustomSelectFormFieldProps = DBCustomSelectFormFieldDefaultProps & GlobalProps;
4
+ export type DBCustomSelectFormFieldDefaultState = {};
5
+ export type DBCustomSelectFormFieldState = DBCustomSelectFormFieldDefaultState & GlobalState;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ import * as React from "react";
2
+ declare const DBCustomSelectList: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<HTMLUListElement>, keyof import("../..").GlobalProps | keyof import("./model").DBCustomSelectListDefaultProps> & import("./model").DBCustomSelectListDefaultProps & import("../..").GlobalProps & React.RefAttributes<HTMLUListElement>>;
3
+ export default DBCustomSelectList;
@@ -0,0 +1,12 @@
1
+ "use client";
2
+ import * as React from "react";
3
+ import { filterPassingProps, getRootProps } from "../../utils/react";
4
+ import { useRef, forwardRef } from "react";
5
+ import { cls } from "../../utils";
6
+ function DBCustomSelectListFn(props, component) {
7
+ const _ref = component || useRef(component);
8
+ return (React.createElement("div", Object.assign({ role: props.multiple ? "group" : "radiogroup", "aria-label": props.label, 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-custom-select-list", props.className) }),
9
+ React.createElement("ul", null, props.children)));
10
+ }
11
+ const DBCustomSelectList = forwardRef(DBCustomSelectListFn);
12
+ export default DBCustomSelectList;
@@ -0,0 +1 @@
1
+ export { default as DBCustomSelectList } from './custom-select-list';
@@ -0,0 +1 @@
1
+ export { default as DBCustomSelectList } from './custom-select-list';
@@ -0,0 +1,8 @@
1
+ import { GlobalProps, GlobalState } from '../../shared/model';
2
+ export type DBCustomSelectListDefaultProps = {
3
+ label?: string;
4
+ multiple?: boolean;
5
+ };
6
+ export type DBCustomSelectListProps = DBCustomSelectListDefaultProps & GlobalProps;
7
+ export type DBCustomSelectListDefaultState = {};
8
+ export type DBCustomSelectListState = DBCustomSelectListDefaultState & GlobalState;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,6 @@
1
+ import * as React from "react";
2
+ declare const DBCustomSelectListItem: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<HTMLLIElement>, "value" | "icon" | "checked" | keyof import("../../shared/model").GlobalProps | "showIcon" | keyof import("../../shared/model").ChangeEventProps<HTMLInputElement> | keyof import("../../shared/model").BaseFormProps | keyof import("./model").DBCustomSelectListItemDefaultProps | "isGroupTitle" | "showDivider"> & import("./model").DBCustomSelectListItemDefaultProps & import("../../shared/model").GlobalProps & import("../../shared/model").BaseFormProps & import("../../shared/model").ValueProps & import("../../shared/model").FormCheckProps & import("../../shared/model").ChangeEventProps<HTMLInputElement> & {
3
+ isGroupTitle?: boolean;
4
+ showDivider?: boolean;
5
+ } & import("../../shared/model").IconProps & import("../../shared/model").ShowIconProps & React.RefAttributes<HTMLLIElement>>;
6
+ export default DBCustomSelectListItem;
@@ -0,0 +1,40 @@
1
+ "use client";
2
+ import * as React from "react";
3
+ import { filterPassingProps, getRootProps } from "../../utils/react";
4
+ import { useState, useRef, useEffect, forwardRef } from "react";
5
+ import { cls, getBooleanAsString, getHideProp, uuid } from "../../utils";
6
+ function DBCustomSelectListItemFn(props, component) {
7
+ const _ref = component || useRef(component);
8
+ const [_id, set_id] = useState(() => undefined);
9
+ const [hasDivider, setHasDivider] = useState(() => false);
10
+ function handleChange(event) {
11
+ if (props.onChange) {
12
+ props.onChange(event);
13
+ }
14
+ if (props.change) {
15
+ props.change(event);
16
+ }
17
+ }
18
+ function getIconAfter() {
19
+ if (props.isGroupTitle || props.type === "checkbox") {
20
+ return;
21
+ }
22
+ return props.checked ? "check" : "x_placeholder";
23
+ }
24
+ useEffect(() => {
25
+ var _a;
26
+ set_id((_a = props.id) !== null && _a !== void 0 ? _a : `custom-select-list-item-${uuid()}`);
27
+ }, []);
28
+ useEffect(() => {
29
+ setHasDivider(Boolean(props.isGroupTitle || props.showDivider));
30
+ }, [props.isGroupTitle, props.showDivider]);
31
+ return (React.createElement("li", 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-custom-select-list-item", props.className, {
32
+ "db-checkbox": props.type === "checkbox" && !props.isGroupTitle,
33
+ "db-radio": props.type !== "checkbox" && !props.isGroupTitle,
34
+ }), "data-divider": getBooleanAsString(hasDivider) }), !props.isGroupTitle ? (React.createElement("label", { "data-icon": props.type !== "checkbox" && props.icon ? props.icon : undefined, "data-hide-icon": getHideProp(props.showIcon), "data-icon-after": getIconAfter() },
35
+ React.createElement("input", { className: "db-custom-select-list-item-checkbox", "data-disable-focus": "true", type: props.type, name: props.name, checked: props.checked, disabled: props.disabled, value: props.value, onChange: (event) => handleChange(event) }),
36
+ props.label ? React.createElement(React.Fragment, null, props.label) : null,
37
+ !props.label ? React.createElement(React.Fragment, null, props.children) : null)) : (React.createElement("span", null, props.groupTitle))));
38
+ }
39
+ const DBCustomSelectListItem = forwardRef(DBCustomSelectListItemFn);
40
+ export default DBCustomSelectListItem;
@@ -0,0 +1 @@
1
+ export { default as DBCustomSelectListItem } from './custom-select-list-item';
@@ -0,0 +1 @@
1
+ export { default as DBCustomSelectListItem } from './custom-select-list-item';
@@ -0,0 +1,29 @@
1
+ import { BaseFormProps, ChangeEventProps, ChangeEventState, FormCheckProps, GlobalProps, GlobalState, IconProps, ShowIconProps, ValueProps } from '../../shared/model';
2
+ export declare const CustomSelectListItemTypeList: readonly ["checkbox", "radio"];
3
+ export type CustomSelectListItemTypeType = (typeof CustomSelectListItemTypeList)[number];
4
+ export type DBCustomSelectListItemExtraProps = {
5
+ /**
6
+ * If the item is a group title (only text)
7
+ */
8
+ isGroupTitle?: boolean;
9
+ /**
10
+ * Show a divider on the bottom of the list item for visual grouping (don't use it on every item)
11
+ */
12
+ showDivider?: boolean;
13
+ } & IconProps & ShowIconProps;
14
+ export type DBCustomSelectListItemDefaultProps = {
15
+ /**
16
+ * Set the title of a group of items - disables radio/checkbox behavior
17
+ */
18
+ groupTitle?: string;
19
+ /**
20
+ * Change the behavior of the item single(radio) or multiple(checkbox)
21
+ */
22
+ type?: CustomSelectListItemTypeType;
23
+ };
24
+ export type DBCustomSelectListItemProps = DBCustomSelectListItemDefaultProps & GlobalProps & BaseFormProps & ValueProps & FormCheckProps & ChangeEventProps<HTMLInputElement> & DBCustomSelectListItemExtraProps;
25
+ export type DBCustomSelectListItemDefaultState = {
26
+ getIconAfter: () => string | undefined;
27
+ hasDivider?: boolean;
28
+ };
29
+ export type DBCustomSelectListItemState = DBCustomSelectListItemDefaultState & ChangeEventState<HTMLInputElement> & GlobalState;
@@ -0,0 +1 @@
1
+ export const CustomSelectListItemTypeList = ['checkbox', 'radio'];
@@ -1,3 +1,3 @@
1
1
  import * as React from "react";
2
- declare const DBInput: React.ForwardRefExoticComponent<Omit<React.InputHTMLAttributes<HTMLInputElement>, "size" | "icon" | keyof import("../../shared/model").GlobalProps | "showIcon" | keyof import("../../shared/model").ChangeEventProps<HTMLInputElement> | keyof import("../../shared/model").FocusEventProps<HTMLInputElement> | keyof import("../../shared/model").FormProps | keyof import("../../shared/model").FormMessageProps | keyof import("./model").DBInputDefaultProps | keyof import("../../shared/model").FormTextProps | keyof import("../../shared/model").InputEventProps<HTMLInputElement> | "iconAfter"> & import("./model").DBInputDefaultProps & import("../../shared/model").GlobalProps & import("../../shared/model").FormTextProps & import("../../shared/model").InputEventProps<HTMLInputElement> & import("../../shared/model").ChangeEventProps<HTMLInputElement> & import("../../shared/model").FocusEventProps<HTMLInputElement> & import("../../shared/model").FormProps & import("../../shared/model").IconProps & import("../../shared/model").IconAfterProps & import("../../shared/model").FormMessageProps & import("../../shared/model").ShowIconProps & import("../../shared/model").FormSizeProps & React.RefAttributes<HTMLInputElement>>;
2
+ declare const DBInput: React.ForwardRefExoticComponent<Omit<React.InputHTMLAttributes<HTMLInputElement>, "required" | "value" | "size" | "icon" | keyof import("../../shared/model").GlobalProps | "showIcon" | 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 | keyof import("./model").DBInputDefaultProps | keyof import("../../shared/model").FormTextProps | keyof import("../../shared/model").InputEventProps<HTMLInputElement> | "iconAfter"> & import("./model").DBInputDefaultProps & import("../../shared/model").GlobalProps & import("../../shared/model").FormTextProps & import("../../shared/model").InputEventProps<HTMLInputElement> & 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").IconProps & import("../../shared/model").IconAfterProps & import("../../shared/model").FormMessageProps & import("../../shared/model").ShowIconProps & import("../../shared/model").FormSizeProps & React.RefAttributes<HTMLInputElement>>;
3
3
  export default DBInput;
@@ -107,12 +107,12 @@ function DBInputFn(props, component) {
107
107
  }, [props.value]);
108
108
  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-input", props.className), "data-variant": props.variant, "data-hide-label": getHideProp(props.showLabel), "data-hide-icon": getHideProp(props.showIcon), "data-icon": props.icon, "data-icon-after": props.iconAfter, "data-hide-icon-after": getHideProp(props.showIcon) }),
109
109
  React.createElement("label", { htmlFor: _id }, (_a = props.label) !== null && _a !== void 0 ? _a : DEFAULT_LABEL),
110
- React.createElement("input", Object.assign({ "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, type: props.type || "text", placeholder: (_b = props.placeholder) !== null && _b !== void 0 ? _b : DEFAULT_PLACEHOLDER, disabled: props.disabled, required: props.required, step: props.step, value: props.value, maxLength: props.maxLength, minLength: props.minLength, max: props.max, min: props.min, readOnly: props.readOnly, form: props.form, pattern: props.pattern, size: props.size, autoComplete: props.autocomplete, autoFocus: props.autofocus, onInput: (event) => handleInput(event), onChange: (event) => handleChange(event), onBlur: (event) => handleBlur(event), onFocus: (event) => handleFocus(event), list: props.dataList && _dataListId, "aria-describedby": _descByIds })),
111
- props.dataList ? (React.createElement("datalist", { id: _dataListId }, (_c = getDataList(props.dataList)) === null || _c === void 0 ? void 0 : _c.map((option) => (React.createElement("option", { key: _dataListId + "-option-" + option.value, value: option.value }, option.label))))) : null,
110
+ React.createElement("input", Object.assign({ "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, type: props.type || "text", placeholder: (_b = props.placeholder) !== null && _b !== void 0 ? _b : DEFAULT_PLACEHOLDER, disabled: props.disabled, required: props.required, step: props.step, value: props.value, maxLength: props.maxLength, minLength: props.minLength, max: props.max, min: props.min, readOnly: props.readOnly, form: props.form, pattern: props.pattern, size: props.size, autoComplete: props.autocomplete, autoFocus: props.autofocus, onInput: (event) => handleInput(event), onChange: (event) => handleChange(event), onBlur: (event) => handleBlur(event), onFocus: (event) => handleFocus(event), list: props.dataList && _dataListId, "aria-describedby": (_c = props.ariaDescribedBy) !== null && _c !== void 0 ? _c : _descByIds })),
111
+ props.dataList ? (React.createElement("datalist", { id: _dataListId }, (_d = getDataList(props.dataList)) === null || _d === void 0 ? void 0 : _d.map((option) => (React.createElement("option", { key: _dataListId + "-option-" + option.value, value: option.value }, option.label))))) : null,
112
112
  props.children,
113
113
  stringPropVisible(props.message, props.showMessage) ? (React.createElement(DBInfotext, { size: "small", icon: props.messageIcon, id: _messageId }, props.message)) : null,
114
- React.createElement(DBInfotext, { size: "small", semantic: "successful", id: _validMessageId }, (_d = props.validMessage) !== null && _d !== void 0 ? _d : DEFAULT_VALID_MESSAGE),
115
- React.createElement(DBInfotext, { size: "small", semantic: "critical", id: _invalidMessageId }, (_g = (_e = props.invalidMessage) !== null && _e !== void 0 ? _e : (_f = _ref.current) === null || _f === void 0 ? void 0 : _f.validationMessage) !== null && _g !== void 0 ? _g : DEFAULT_INVALID_MESSAGE),
114
+ React.createElement(DBInfotext, { size: "small", semantic: "successful", id: _validMessageId }, (_e = props.validMessage) !== null && _e !== void 0 ? _e : DEFAULT_VALID_MESSAGE),
115
+ React.createElement(DBInfotext, { size: "small", semantic: "critical", id: _invalidMessageId }, (_f = props.invalidMessage) !== null && _f !== void 0 ? _f : (((_g = _ref.current) === null || _g === void 0 ? void 0 : _g.validationMessage) || DEFAULT_INVALID_MESSAGE)),
116
116
  React.createElement("span", { "data-visually-hidden": "true", role: "status" }, _voiceOverFallback)));
117
117
  }
118
118
  const DBInput = forwardRef(DBInputFn);
@@ -1,3 +1,3 @@
1
1
  import * as React from "react";
2
- declare const DBRadio: React.ForwardRefExoticComponent<Omit<React.InputHTMLAttributes<HTMLInputElement>, "size" | "checked" | keyof import("../../shared/model").GlobalProps | keyof import("../../shared/model").ChangeEventProps<HTMLInputElement> | keyof import("../../shared/model").FocusEventProps<HTMLInputElement> | keyof import("../../shared/model").FormProps> & import("./model").DBRadioDefaultProps & 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").SizeProps & React.RefAttributes<HTMLInputElement>>;
2
+ declare const DBRadio: React.ForwardRefExoticComponent<Omit<React.InputHTMLAttributes<HTMLInputElement>, "required" | "value" | "size" | "checked" | keyof import("../../shared/model").GlobalProps | keyof import("../../shared/model").ChangeEventProps<HTMLInputElement> | keyof import("../../shared/model").FocusEventProps<HTMLInputElement> | keyof import("../../shared/model").CustomFormProps | keyof import("../../shared/model").BaseFormProps | "showLabel"> & import("./model").DBRadioDefaultProps & 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").SizeProps & React.RefAttributes<HTMLInputElement>>;
3
3
  export default DBRadio;
@@ -1,9 +1,9 @@
1
1
  import { ChangeEventProps, ChangeEventState, ClickEventProps, ClickEventState, FocusEventProps, FocusEventState, FormMessageProps, FormProps, FormSizeProps, FormState, GlobalProps, GlobalState, IconProps, InitializedState, InputEventProps, InputEventState, ShowIconProps } from '../../shared/model';
2
2
  export type DBSelectDefaultProps = {
3
3
  /**
4
- * The description attribute will add a paragraph below the select.
4
+ * Enable multiple select -> use DBCustomSelect/db-custom-select for a better look
5
5
  */
6
- description?: string;
6
+ multiple?: boolean;
7
7
  /**
8
8
  * If you don't/can't use children/slots you can pass in the options as an array.
9
9
  */
@@ -35,7 +35,7 @@ export type DBSelectOptionType = {
35
35
  */
36
36
  value: string | string[] | number;
37
37
  };
38
- export type DBSelectProps = DBSelectDefaultProps & GlobalProps & ClickEventProps<HTMLSelectElement> & ChangeEventProps<HTMLSelectElement> & FocusEventProps<HTMLSelectElement> & InputEventProps<HTMLSelectElement> & FormProps & IconProps & FormMessageProps & ShowIconProps & FormSizeProps;
38
+ export type DBSelectProps = GlobalProps & ClickEventProps<HTMLSelectElement> & ChangeEventProps<HTMLSelectElement> & FocusEventProps<HTMLSelectElement> & InputEventProps<HTMLSelectElement> & FormProps & IconProps & FormMessageProps & DBSelectDefaultProps & ShowIconProps & FormSizeProps;
39
39
  export type DBSelectDefaultState = {
40
40
  _placeholderId: string;
41
41
  getOptionLabel: (option: DBSelectOptionType) => string;
@@ -1,3 +1,3 @@
1
1
  import * as React from "react";
2
- declare const DBSelect: React.ForwardRefExoticComponent<Omit<React.SelectHTMLAttributes<HTMLSelectElement>, "size" | "icon" | "onClick" | keyof import("../../shared/model").GlobalProps | "showIcon" | keyof import("../../shared/model").FormProps | keyof import("../../shared/model").FormMessageProps | keyof import("./model").DBSelectDefaultProps | keyof import("../../shared/model").ChangeEventProps<HTMLSelectElement> | keyof import("../../shared/model").FocusEventProps<HTMLSelectElement> | keyof import("../../shared/model").InputEventProps<HTMLSelectElement>> & import("./model").DBSelectDefaultProps & import("../../shared/model").GlobalProps & import("../../shared/model").ClickEventProps<HTMLSelectElement> & import("../../shared/model").ChangeEventProps<HTMLSelectElement> & import("../../shared/model").FocusEventProps<HTMLSelectElement> & import("../../shared/model").InputEventProps<HTMLSelectElement> & import("../../shared/model").FormProps & import("../../shared/model").IconProps & import("../../shared/model").FormMessageProps & import("../../shared/model").ShowIconProps & import("../../shared/model").FormSizeProps & React.RefAttributes<HTMLSelectElement>>;
2
+ declare const DBSelect: React.ForwardRefExoticComponent<Omit<React.SelectHTMLAttributes<HTMLSelectElement>, "required" | "value" | "size" | "icon" | "onClick" | keyof import("../../shared/model").GlobalProps | "showIcon" | keyof import("../../shared/model").CustomFormProps | keyof import("../../shared/model").BaseFormProps | "showLabel" | keyof import("../../shared/model").FormMessageProps | keyof import("../../shared/model").ChangeEventProps<HTMLSelectElement> | keyof import("../../shared/model").FocusEventProps<HTMLSelectElement> | keyof import("../../shared/model").InputEventProps<HTMLSelectElement> | keyof import("./model").DBSelectDefaultProps> & import("../../shared/model").GlobalProps & import("../../shared/model").ClickEventProps<HTMLSelectElement> & import("../../shared/model").ChangeEventProps<HTMLSelectElement> & import("../../shared/model").FocusEventProps<HTMLSelectElement> & import("../../shared/model").InputEventProps<HTMLSelectElement> & import("../../shared/model").CustomFormProps & import("../../shared/model").BaseFormProps & import("../../shared/model").RequiredProps & import("../../shared/model").ShowLabelProps & import("../../shared/model").ValueProps & import("../../shared/model").IconProps & import("../../shared/model").FormMessageProps & import("./model").DBSelectDefaultProps & import("../../shared/model").ShowIconProps & import("../../shared/model").FormSizeProps & React.RefAttributes<HTMLSelectElement>>;
3
3
  export default DBSelect;
@@ -6,7 +6,7 @@ import { cls, delay, getHideProp, hasVoiceOver, stringPropVisible, uuid, } from
6
6
  import { DEFAULT_INVALID_MESSAGE, DEFAULT_INVALID_MESSAGE_ID_SUFFIX, DEFAULT_LABEL, DEFAULT_MESSAGE_ID_SUFFIX, DEFAULT_PLACEHOLDER_ID_SUFFIX, DEFAULT_VALID_MESSAGE, DEFAULT_VALID_MESSAGE_ID_SUFFIX, } from "../../shared/constants";
7
7
  import DBInfotext from "../infotext/infotext";
8
8
  function DBSelectFn(props, component) {
9
- var _a, _b, _c, _d, _e, _f, _g;
9
+ var _a, _b, _c, _d, _e, _f;
10
10
  const _ref = component || useRef(component);
11
11
  const [_id, set_id] = useState(() => undefined);
12
12
  const [_messageId, set_messageId] = useState(() => undefined);
@@ -78,8 +78,8 @@ function DBSelectFn(props, component) {
78
78
  }
79
79
  }
80
80
  function getOptionLabel(option) {
81
- var _a;
82
- return (_a = option.label) !== null && _a !== void 0 ? _a : option.value.toString();
81
+ var _a, _b;
82
+ return (_a = option.label) !== null && _a !== void 0 ? _a : (_b = option.value) === null || _b === void 0 ? void 0 : _b.toString();
83
83
  }
84
84
  useEffect(() => {
85
85
  var _a;
@@ -113,9 +113,9 @@ function DBSelectFn(props, component) {
113
113
  }, [props.value]);
114
114
  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-select", props.className), "data-variant": props.variant, "data-hide-label": getHideProp(props.showLabel), "data-icon": props.icon, "data-hide-icon": getHideProp(props.showIcon) }),
115
115
  React.createElement("label", { htmlFor: _id }, (_a = props.label) !== null && _a !== void 0 ? _a : DEFAULT_LABEL),
116
- React.createElement("select", Object.assign({ "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"]), { required: props.required, disabled: props.disabled, id: _id, name: props.name, size: props.size, value: props.value, autoComplete: props.autocomplete, onInput: (event) => handleInput(event), onClick: (event) => handleClick(event), onChange: (event) => handleChange(event), onBlur: (event) => handleBlur(event), onFocus: (event) => handleFocus(event), "aria-describedby": _descByIds }),
116
+ React.createElement("select", Object.assign({ "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"]), { required: props.required, disabled: props.disabled, id: _id, name: props.name, size: props.size, value: props.value, autoComplete: props.autocomplete, multiple: props.multiple, onInput: (event) => handleInput(event), onClick: (event) => handleClick(event), onChange: (event) => handleChange(event), onBlur: (event) => handleBlur(event), onFocus: (event) => handleFocus(event), "aria-describedby": _descByIds }),
117
117
  React.createElement("option", { hidden: true }),
118
- props.options ? (React.createElement(React.Fragment, { key: uuid() }, (_b = props.options) === null || _b === void 0 ? void 0 : _b.map((option) => {
118
+ props.options ? (React.createElement(React.Fragment, null, (_b = props.options) === null || _b === void 0 ? void 0 : _b.map((option) => {
119
119
  var _a;
120
120
  return (React.createElement(React.Fragment, { key: uuid() },
121
121
  option.options ? (React.createElement("optgroup", { label: getOptionLabel(option) }, (_a = option.options) === null || _a === void 0 ? void 0 : _a.map((optgroupOption) => (React.createElement("option", { key: optgroupOption.value.toString(), value: optgroupOption.value, disabled: optgroupOption.disabled }, getOptionLabel(optgroupOption)))))) : null,
@@ -125,7 +125,7 @@ function DBSelectFn(props, component) {
125
125
  React.createElement("span", { id: _placeholderId }, (_c = props.placeholder) !== null && _c !== void 0 ? _c : props.label),
126
126
  stringPropVisible(props.message, props.showMessage) ? (React.createElement(DBInfotext, { size: "small", icon: props.messageIcon, id: _messageId }, props.message)) : null,
127
127
  React.createElement(DBInfotext, { size: "small", semantic: "successful", id: _validMessageId }, (_d = props.validMessage) !== null && _d !== void 0 ? _d : DEFAULT_VALID_MESSAGE),
128
- React.createElement(DBInfotext, { size: "small", semantic: "critical", id: _invalidMessageId }, (_g = (_e = props.invalidMessage) !== null && _e !== void 0 ? _e : (_f = _ref.current) === null || _f === void 0 ? void 0 : _f.validationMessage) !== null && _g !== void 0 ? _g : DEFAULT_INVALID_MESSAGE),
128
+ React.createElement(DBInfotext, { size: "small", semantic: "critical", id: _invalidMessageId }, (_e = props.invalidMessage) !== null && _e !== void 0 ? _e : (((_f = _ref.current) === null || _f === void 0 ? void 0 : _f.validationMessage) || DEFAULT_INVALID_MESSAGE)),
129
129
  React.createElement("span", { "data-visually-hidden": "true", role: "status" }, _voiceOverFallback)));
130
130
  }
131
131
  const DBSelect = forwardRef(DBSelectFn);
@@ -1,3 +1,3 @@
1
1
  import * as React from "react";
2
- declare const DBSwitch: React.ForwardRefExoticComponent<Omit<React.InputHTMLAttributes<HTMLInputElement>, "size" | "icon" | "checked" | keyof import("../../shared/model").GlobalProps | "emphasis" | keyof import("../../shared/model").ChangeEventProps<HTMLInputElement> | keyof import("../../shared/model").FocusEventProps<HTMLInputElement> | keyof import("../../shared/model").FormProps | "iconAfter" | "visualAid"> & import("./model").DBSwitchDefaultProps & 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").EmphasisProps & import("../../shared/model").SizeProps & import("../../shared/model").IconProps & import("../../shared/model").IconAfterProps & React.RefAttributes<HTMLInputElement>>;
2
+ declare const DBSwitch: React.ForwardRefExoticComponent<Omit<React.InputHTMLAttributes<HTMLInputElement>, "required" | "value" | "size" | "icon" | "checked" | keyof import("../../shared/model").GlobalProps | "emphasis" | keyof import("../../shared/model").ChangeEventProps<HTMLInputElement> | keyof import("../../shared/model").FocusEventProps<HTMLInputElement> | keyof import("../../shared/model").CustomFormProps | keyof import("../../shared/model").BaseFormProps | "showLabel" | "iconAfter" | "visualAid"> & import("./model").DBSwitchDefaultProps & 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").EmphasisProps & import("../../shared/model").SizeProps & import("../../shared/model").IconProps & import("../../shared/model").IconAfterProps & React.RefAttributes<HTMLInputElement>>;
3
3
  export default DBSwitch;
@@ -1,4 +1,4 @@
1
- import { ContentSlotProps, GlobalProps, GlobalState, IconProps, InitializedState, OverflowProps, SemanticProps, ShowIconProps, TagEmphasisProps } from '../../shared/model';
1
+ import { ClickEvent, ContentSlotProps, GlobalProps, GlobalState, IconProps, InitializedState, OverflowProps, SemanticProps, ShowIconProps, TagEmphasisProps } from '../../shared/model';
2
2
  export declare const TagBehaviorList: readonly ["static", "removable"];
3
3
  export type TagBehaviorType = (typeof TagBehaviorList)[number];
4
4
  export type DBTagDefaultProps = {
@@ -19,7 +19,7 @@ export type DBTagDefaultProps = {
19
19
  /**
20
20
  * If "removeButton" attribute is set this function will be called when user clicks cancel button inside the tag.
21
21
  */
22
- onRemove?: () => void;
22
+ onRemove?: (event?: any) => void;
23
23
  /**
24
24
  * The removeButton attribute shows the cancel button.
25
25
  */
@@ -40,6 +40,6 @@ export type DBTagDefaultProps = {
40
40
  export type DBTagProps = DBTagDefaultProps & GlobalProps & IconProps & SemanticProps & OverflowProps & TagEmphasisProps & ShowIconProps & ContentSlotProps;
41
41
  export type DBTagDefaultState = {
42
42
  getRemoveButtonText: () => string;
43
- handleRemove: () => void;
43
+ handleRemove: (event?: ClickEvent<HTMLButtonElement>) => void;
44
44
  };
45
45
  export type DBTagState = DBTagDefaultState & GlobalState & InitializedState;
@@ -1,3 +1,3 @@
1
1
  import * as React from "react";
2
- declare const DBTag: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<HTMLDivElement>, "content" | "overflow" | "icon" | keyof import("../..").GlobalProps | "showIcon" | "semantic" | "emphasis" | keyof import("./model").DBTagDefaultProps> & import("./model").DBTagDefaultProps & import("../..").GlobalProps & import("../..").IconProps & import("../..").SemanticProps & import("../..").OverflowProps & import("../..").TagEmphasisProps & import("../..").ShowIconProps & import("../..").ContentSlotProps & React.RefAttributes<HTMLDivElement>>;
2
+ declare const DBTag: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<HTMLDivElement>, "content" | "overflow" | "icon" | keyof import("../../shared/model").GlobalProps | "showIcon" | "semantic" | "emphasis" | keyof import("./model").DBTagDefaultProps> & import("./model").DBTagDefaultProps & import("../../shared/model").GlobalProps & import("../../shared/model").IconProps & import("../../shared/model").SemanticProps & import("../../shared/model").OverflowProps & import("../../shared/model").TagEmphasisProps & import("../../shared/model").ShowIconProps & import("../../shared/model").ContentSlotProps & React.RefAttributes<HTMLDivElement>>;
3
3
  export default DBTag;
@@ -3,13 +3,14 @@ import * as React from "react";
3
3
  import { filterPassingProps, getRootProps } from "../../utils/react";
4
4
  import { useState, useRef, useEffect, forwardRef } from "react";
5
5
  import { cls, getBooleanAsString, getHideProp } from "../../utils";
6
+ import { DEFAULT_REMOVE } from "../../shared/constants";
6
7
  function DBTagFn(props, component) {
7
8
  var _a;
8
9
  const _ref = component || useRef(component);
9
10
  const [initialized, setInitialized] = useState(() => false);
10
- function handleRemove() {
11
+ function handleRemove(event) {
11
12
  if (props.onRemove) {
12
- props.onRemove();
13
+ props.onRemove(event);
13
14
  }
14
15
  }
15
16
  function getRemoveButtonText() {
@@ -17,7 +18,7 @@ function DBTagFn(props, component) {
17
18
  return props.removeButton;
18
19
  }
19
20
  // TODO: We should think this through again, if we would really like to have default and especially english, instead of german labels in here
20
- return "Remove tag";
21
+ return DEFAULT_REMOVE;
21
22
  }
22
23
  const hasInitialized = useRef(false);
23
24
  if (!hasInitialized.current) {
@@ -40,7 +41,7 @@ function DBTagFn(props, component) {
40
41
  React.createElement(React.Fragment, null, props.content),
41
42
  props.children,
42
43
  props.text ? React.createElement(React.Fragment, null, props.text) : null,
43
- props.behavior === "removable" ? (React.createElement("button", { className: "db-button db-tab-remove-button", "data-icon": "cross", "data-size": "small", "data-no-text": "true", "data-variant": "ghost", onClick: (event) => handleRemove(), title: getRemoveButtonText() }, getRemoveButtonText())) : null));
44
+ props.behavior === "removable" ? (React.createElement("button", { className: "db-button db-tab-remove-button", "data-icon": "cross", "data-size": "small", "data-no-text": "true", "data-variant": "ghost", onClick: (event) => handleRemove(event), title: getRemoveButtonText() }, getRemoveButtonText())) : null));
44
45
  }
45
46
  const DBTag = forwardRef(DBTagFn);
46
47
  export default DBTag;