@db-ux/react-core-components 1.0.0-test-13b991d
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +76 -0
- package/dist/components/accordion/accordion.d.ts +3 -0
- package/dist/components/accordion/accordion.js +92 -0
- package/dist/components/accordion/index.d.ts +1 -0
- package/dist/components/accordion/index.js +1 -0
- package/dist/components/accordion/model.d.ts +41 -0
- package/dist/components/accordion/model.js +2 -0
- package/dist/components/accordion-item/accordion-item.d.ts +8 -0
- package/dist/components/accordion-item/accordion-item.js +34 -0
- package/dist/components/accordion-item/index.d.ts +1 -0
- package/dist/components/accordion-item/index.js +1 -0
- package/dist/components/accordion-item/model.d.ts +24 -0
- package/dist/components/accordion-item/model.js +1 -0
- package/dist/components/badge/badge.d.ts +3 -0
- package/dist/components/badge/badge.js +32 -0
- package/dist/components/badge/index.d.ts +1 -0
- package/dist/components/badge/index.js +1 -0
- package/dist/components/badge/model.d.ts +16 -0
- package/dist/components/badge/model.js +1 -0
- package/dist/components/brand/brand.d.ts +3 -0
- package/dist/components/brand/brand.js +13 -0
- package/dist/components/brand/index.d.ts +1 -0
- package/dist/components/brand/index.js +1 -0
- package/dist/components/brand/model.d.ts +10 -0
- package/dist/components/brand/model.js +1 -0
- package/dist/components/button/button.d.ts +3 -0
- package/dist/components/button/button.js +16 -0
- package/dist/components/button/index.d.ts +1 -0
- package/dist/components/button/index.js +1 -0
- package/dist/components/button/model.d.ts +52 -0
- package/dist/components/button/model.js +3 -0
- package/dist/components/card/card.d.ts +3 -0
- package/dist/components/card/card.js +16 -0
- package/dist/components/card/index.d.ts +1 -0
- package/dist/components/card/index.js +1 -0
- package/dist/components/card/model.d.ts +18 -0
- package/dist/components/card/model.js +2 -0
- package/dist/components/checkbox/checkbox.d.ts +3 -0
- package/dist/components/checkbox/checkbox.js +112 -0
- package/dist/components/checkbox/index.d.ts +1 -0
- package/dist/components/checkbox/index.js +1 -0
- package/dist/components/checkbox/model.d.ts +10 -0
- package/dist/components/checkbox/model.js +1 -0
- package/dist/components/divider/divider.d.ts +3 -0
- package/dist/components/divider/divider.js +11 -0
- package/dist/components/divider/index.d.ts +1 -0
- package/dist/components/divider/index.js +1 -0
- package/dist/components/divider/model.d.ts +18 -0
- package/dist/components/divider/model.js +2 -0
- package/dist/components/drawer/drawer.d.ts +3 -0
- package/dist/components/drawer/drawer.js +70 -0
- package/dist/components/drawer/index.d.ts +1 -0
- package/dist/components/drawer/index.js +1 -0
- package/dist/components/drawer/model.d.ts +41 -0
- package/dist/components/drawer/model.js +3 -0
- package/dist/components/header/header.d.ts +3 -0
- package/dist/components/header/header.js +68 -0
- package/dist/components/header/index.d.ts +1 -0
- package/dist/components/header/index.js +1 -0
- package/dist/components/header/model.d.ts +44 -0
- package/dist/components/header/model.js +1 -0
- package/dist/components/icon/icon.d.ts +3 -0
- package/dist/components/icon/icon.js +11 -0
- package/dist/components/icon/index.d.ts +1 -0
- package/dist/components/icon/index.js +1 -0
- package/dist/components/icon/model.d.ts +12 -0
- package/dist/components/icon/model.js +2 -0
- package/dist/components/infotext/index.d.ts +1 -0
- package/dist/components/infotext/index.js +1 -0
- package/dist/components/infotext/infotext.d.ts +3 -0
- package/dist/components/infotext/infotext.js +12 -0
- package/dist/components/infotext/model.d.ts +5 -0
- package/dist/components/infotext/model.js +1 -0
- package/dist/components/input/index.d.ts +1 -0
- package/dist/components/input/index.js +1 -0
- package/dist/components/input/input.d.ts +3 -0
- package/dist/components/input/input.js +119 -0
- package/dist/components/input/model.d.ts +39 -0
- package/dist/components/input/model.js +5 -0
- package/dist/components/link/index.d.ts +1 -0
- package/dist/components/link/index.js +1 -0
- package/dist/components/link/link.d.ts +3 -0
- package/dist/components/link/link.js +17 -0
- package/dist/components/link/model.d.ts +24 -0
- package/dist/components/link/model.js +3 -0
- package/dist/components/navigation/index.d.ts +1 -0
- package/dist/components/navigation/index.js +1 -0
- package/dist/components/navigation/model.d.ts +5 -0
- package/dist/components/navigation/model.js +1 -0
- package/dist/components/navigation/navigation.d.ts +3 -0
- package/dist/components/navigation/navigation.js +17 -0
- package/dist/components/navigation-item/index.d.ts +1 -0
- package/dist/components/navigation-item/index.js +1 -0
- package/dist/components/navigation-item/model.d.ts +34 -0
- package/dist/components/navigation-item/model.js +1 -0
- package/dist/components/navigation-item/navigation-item.d.ts +3 -0
- package/dist/components/navigation-item/navigation-item.js +68 -0
- package/dist/components/notification/index.d.ts +1 -0
- package/dist/components/notification/index.js +1 -0
- package/dist/components/notification/model.d.ts +57 -0
- package/dist/components/notification/model.js +3 -0
- package/dist/components/notification/notification.d.ts +3 -0
- package/dist/components/notification/notification.js +25 -0
- package/dist/components/page/index.d.ts +1 -0
- package/dist/components/page/index.js +1 -0
- package/dist/components/page/model.d.ts +32 -0
- package/dist/components/page/model.js +2 -0
- package/dist/components/page/page.d.ts +3 -0
- package/dist/components/page/page.js +47 -0
- package/dist/components/popover/index.d.ts +1 -0
- package/dist/components/popover/index.js +1 -0
- package/dist/components/popover/model.d.ts +18 -0
- package/dist/components/popover/model.js +1 -0
- package/dist/components/popover/popover.d.ts +3 -0
- package/dist/components/popover/popover.js +74 -0
- package/dist/components/radio/index.d.ts +1 -0
- package/dist/components/radio/index.js +1 -0
- package/dist/components/radio/model.d.ts +7 -0
- package/dist/components/radio/model.js +1 -0
- package/dist/components/radio/radio.d.ts +3 -0
- package/dist/components/radio/radio.js +54 -0
- package/dist/components/section/index.d.ts +1 -0
- package/dist/components/section/index.js +1 -0
- package/dist/components/section/model.d.ts +5 -0
- package/dist/components/section/model.js +1 -0
- package/dist/components/section/section.d.ts +3 -0
- package/dist/components/section/section.js +16 -0
- package/dist/components/select/index.d.ts +1 -0
- package/dist/components/select/index.js +1 -0
- package/dist/components/select/model.d.ts +43 -0
- package/dist/components/select/model.js +1 -0
- package/dist/components/select/select.d.ts +3 -0
- package/dist/components/select/select.js +132 -0
- package/dist/components/stack/index.d.ts +1 -0
- package/dist/components/stack/index.js +1 -0
- package/dist/components/stack/model.d.ts +34 -0
- package/dist/components/stack/model.js +4 -0
- package/dist/components/stack/stack.d.ts +3 -0
- package/dist/components/stack/stack.js +11 -0
- package/dist/components/switch/index.d.ts +1 -0
- package/dist/components/switch/index.js +1 -0
- package/dist/components/switch/model.d.ts +12 -0
- package/dist/components/switch/model.js +1 -0
- package/dist/components/switch/switch.d.ts +3 -0
- package/dist/components/switch/switch.js +47 -0
- package/dist/components/tab-item/index.d.ts +1 -0
- package/dist/components/tab-item/index.js +1 -0
- package/dist/components/tab-item/model.d.ts +24 -0
- package/dist/components/tab-item/model.js +1 -0
- package/dist/components/tab-item/tab-item.d.ts +3 -0
- package/dist/components/tab-item/tab-item.js +37 -0
- package/dist/components/tab-list/index.d.ts +1 -0
- package/dist/components/tab-list/index.js +1 -0
- package/dist/components/tab-list/model.d.ts +5 -0
- package/dist/components/tab-list/model.js +1 -0
- package/dist/components/tab-list/tab-list.d.ts +3 -0
- package/dist/components/tab-list/tab-list.js +17 -0
- package/dist/components/tab-panel/index.d.ts +1 -0
- package/dist/components/tab-panel/index.js +1 -0
- package/dist/components/tab-panel/model.d.ts +10 -0
- package/dist/components/tab-panel/model.js +1 -0
- package/dist/components/tab-panel/tab-panel.d.ts +3 -0
- package/dist/components/tab-panel/tab-panel.js +14 -0
- package/dist/components/tabs/index.d.ts +1 -0
- package/dist/components/tabs/index.js +1 -0
- package/dist/components/tabs/model.d.ts +47 -0
- package/dist/components/tabs/model.js +2 -0
- package/dist/components/tabs/tabs.d.ts +3 -0
- package/dist/components/tabs/tabs.js +138 -0
- package/dist/components/tag/index.d.ts +1 -0
- package/dist/components/tag/index.js +1 -0
- package/dist/components/tag/model.d.ts +45 -0
- package/dist/components/tag/model.js +1 -0
- package/dist/components/tag/tag.d.ts +3 -0
- package/dist/components/tag/tag.js +46 -0
- package/dist/components/textarea/index.d.ts +1 -0
- package/dist/components/textarea/index.js +1 -0
- package/dist/components/textarea/model.d.ts +30 -0
- package/dist/components/textarea/model.js +2 -0
- package/dist/components/textarea/textarea.d.ts +3 -0
- package/dist/components/textarea/textarea.js +105 -0
- package/dist/components/tooltip/index.d.ts +1 -0
- package/dist/components/tooltip/index.js +1 -0
- package/dist/components/tooltip/model.d.ts +7 -0
- package/dist/components/tooltip/model.js +1 -0
- package/dist/components/tooltip/tooltip.d.ts +3 -0
- package/dist/components/tooltip/tooltip.js +43 -0
- package/dist/index.d.ts +36 -0
- package/dist/index.js +36 -0
- package/dist/shared/constants.d.ts +83 -0
- package/dist/shared/constants.js +87 -0
- package/dist/shared/model.d.ts +446 -0
- package/dist/shared/model.js +20 -0
- package/dist/utils/form-components.d.ts +2 -0
- package/dist/utils/form-components.js +10 -0
- package/dist/utils/index.d.ts +61 -0
- package/dist/utils/index.js +166 -0
- package/dist/utils/navigation.d.ts +32 -0
- package/dist/utils/navigation.js +136 -0
- package/package.json +43 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { GapProps, GlobalProps, GlobalState, InitializedState, PlacementProps, PopoverProps, PopoverState, SpacingProps } from '../../shared/model';
|
|
2
|
+
export type DBPopoverDefaultProps = {
|
|
3
|
+
/**
|
|
4
|
+
* Use open to disable the default hover/focus behavior to use it on click or other trigger.
|
|
5
|
+
*/
|
|
6
|
+
open?: boolean;
|
|
7
|
+
/**
|
|
8
|
+
* The trigger to open the popover e.g. a button
|
|
9
|
+
*/
|
|
10
|
+
trigger?: any;
|
|
11
|
+
};
|
|
12
|
+
export type DBPopoverProps = DBPopoverDefaultProps & GlobalProps & SpacingProps & PlacementProps & GapProps & PopoverProps;
|
|
13
|
+
export type DBPopoverDefaultState = {
|
|
14
|
+
isExpanded?: boolean;
|
|
15
|
+
getTrigger: () => Element | null;
|
|
16
|
+
handleLeave: (event: any) => void;
|
|
17
|
+
};
|
|
18
|
+
export type DBPopoverState = DBPopoverDefaultState & GlobalState & PopoverState & InitializedState;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
declare const DBPopover: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<HTMLDivElement>, "gap" | "spacing" | keyof import("../..").GlobalProps | keyof import("../..").PopoverProps | "placement" | keyof import("./model").DBPopoverDefaultProps> & import("./model").DBPopoverDefaultProps & import("../..").GlobalProps & import("../..").SpacingProps & import("../..").PlacementProps & import("../..").GapProps & import("../..").PopoverProps & React.RefAttributes<HTMLDivElement>>;
|
|
3
|
+
export default DBPopover;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { useState, useRef, useEffect, forwardRef } from "react";
|
|
4
|
+
import { cls, getBooleanAsString, handleDataOutside, filterPassingProps, getRootProps } from "../../utils";
|
|
5
|
+
function DBPopoverFn(props, component) {
|
|
6
|
+
var _a;
|
|
7
|
+
const _ref = component || useRef(component);
|
|
8
|
+
const [initialized, setInitialized] = useState(() => false);
|
|
9
|
+
const [isExpanded, setIsExpanded] = useState(() => false);
|
|
10
|
+
function handleAutoPlacement() {
|
|
11
|
+
setIsExpanded(true);
|
|
12
|
+
if (!_ref.current)
|
|
13
|
+
return;
|
|
14
|
+
const article = _ref.current.querySelector("article");
|
|
15
|
+
if (!article)
|
|
16
|
+
return;
|
|
17
|
+
handleDataOutside(article);
|
|
18
|
+
}
|
|
19
|
+
function handleLeave(event) {
|
|
20
|
+
const element = event.target;
|
|
21
|
+
const parent = element.parentNode;
|
|
22
|
+
if (!parent ||
|
|
23
|
+
(element.parentNode.querySelector(":focus") !== element &&
|
|
24
|
+
element.parentNode.querySelector(":focus-within") !== element &&
|
|
25
|
+
element.parentNode.querySelector(":hover") !== element)) {
|
|
26
|
+
setIsExpanded(false);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
function getTrigger() {
|
|
30
|
+
var _a;
|
|
31
|
+
if (_ref.current) {
|
|
32
|
+
const children = Array.from(_ref.current.children);
|
|
33
|
+
if (children.length >= 2) {
|
|
34
|
+
const firstChild = children[0];
|
|
35
|
+
if (firstChild.tagName.includes("-")) {
|
|
36
|
+
// this is a workaround for custom angular components
|
|
37
|
+
return ((_a = firstChild.children) === null || _a === void 0 ? void 0 : _a.length) > 0
|
|
38
|
+
? firstChild.children[0]
|
|
39
|
+
: null;
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
return firstChild;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
useEffect(() => {
|
|
49
|
+
setInitialized(true);
|
|
50
|
+
}, []);
|
|
51
|
+
useEffect(() => {
|
|
52
|
+
if (_ref.current && initialized) {
|
|
53
|
+
const child = getTrigger();
|
|
54
|
+
if (child) {
|
|
55
|
+
child.ariaHasPopup = "true";
|
|
56
|
+
}
|
|
57
|
+
setInitialized(false);
|
|
58
|
+
}
|
|
59
|
+
}, [_ref.current, initialized]);
|
|
60
|
+
useEffect(() => {
|
|
61
|
+
if (_ref.current) {
|
|
62
|
+
const child = getTrigger();
|
|
63
|
+
if (child) {
|
|
64
|
+
child.ariaExpanded = Boolean(isExpanded).toString();
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}, [_ref.current, isExpanded]);
|
|
68
|
+
return (React.createElement("div", 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-popover", props.className), onFocus: (event) => handleAutoPlacement(), onBlur: (event) => handleLeave(event), onMouseEnter: (event) => handleAutoPlacement(), onMouseLeave: (event) => handleLeave(event) }),
|
|
69
|
+
React.createElement(React.Fragment, null, props.trigger),
|
|
70
|
+
React.createElement("article", { className: "db-popover-content", "data-spacing": props.spacing, "data-gap": getBooleanAsString(props.gap), "data-animation": getBooleanAsString((_a = props.animation) !== null && _a !== void 0 ? _a : true), "data-open": props.open, "data-delay": props.delay, "data-width": props.width, "data-placement": props.placement }, props.children)));
|
|
71
|
+
}
|
|
72
|
+
const DBPopover = forwardRef(DBPopoverFn);
|
|
73
|
+
DBPopover.defaultProps = {};
|
|
74
|
+
export default DBPopover;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as DBRadio } from './radio';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as DBRadio } from './radio';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ChangeEventProps, ChangeEventState, FocusEventProps, FocusEventState, FormCheckProps, FormProps, FormState, GlobalProps, GlobalState, InitializedState, SizeProps } from '../../shared/model';
|
|
2
|
+
export type DBRadioDefaultProps = {
|
|
3
|
+
describedbyid?: string;
|
|
4
|
+
};
|
|
5
|
+
export type DBRadioProps = DBRadioDefaultProps & GlobalProps & ChangeEventProps<HTMLInputElement> & FocusEventProps<HTMLInputElement> & FormProps & FormCheckProps & SizeProps;
|
|
6
|
+
export type DBRadioDefaultState = {};
|
|
7
|
+
export type DBRadioState = DBRadioDefaultState & GlobalState & ChangeEventState<HTMLInputElement> & FocusEventState<HTMLInputElement> & FormState & InitializedState;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
declare const DBRadio: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<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>>;
|
|
3
|
+
export default DBRadio;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { useState, useRef, useEffect, forwardRef } from "react";
|
|
4
|
+
import { cls, getHideProp, uuid, filterPassingProps, getRootProps } from "../../utils";
|
|
5
|
+
function DBRadioFn(props, component) {
|
|
6
|
+
const _ref = component || useRef(component);
|
|
7
|
+
const [initialized, setInitialized] = useState(() => false);
|
|
8
|
+
const [_id, set_id] = useState(() => undefined);
|
|
9
|
+
function handleChange(event) {
|
|
10
|
+
if (props.onChange) {
|
|
11
|
+
props.onChange(event);
|
|
12
|
+
}
|
|
13
|
+
if (props.change) {
|
|
14
|
+
props.change(event);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
function handleBlur(event) {
|
|
18
|
+
if (props.onBlur) {
|
|
19
|
+
props.onBlur(event);
|
|
20
|
+
}
|
|
21
|
+
if (props.blur) {
|
|
22
|
+
props.blur(event);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
function handleFocus(event) {
|
|
26
|
+
if (props.onFocus) {
|
|
27
|
+
props.onFocus(event);
|
|
28
|
+
}
|
|
29
|
+
if (props.focus) {
|
|
30
|
+
props.focus(event);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
useEffect(() => {
|
|
34
|
+
var _a;
|
|
35
|
+
setInitialized(true);
|
|
36
|
+
set_id((_a = props.id) !== null && _a !== void 0 ? _a : `radio-${uuid()}`);
|
|
37
|
+
}, []);
|
|
38
|
+
useEffect(() => {
|
|
39
|
+
if (props.checked && initialized && document && _id) {
|
|
40
|
+
const radioElement = document === null || document === void 0 ? void 0 : document.getElementById(_id);
|
|
41
|
+
if (radioElement) {
|
|
42
|
+
if (props.checked != undefined) {
|
|
43
|
+
radioElement.checked = true;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}, [initialized, props.checked]);
|
|
48
|
+
return (React.createElement("label", Object.assign({ "data-size": props.size, "data-hide-label": getHideProp(props.showLabel) }, 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-radio", props.className), htmlFor: _id }),
|
|
49
|
+
React.createElement("input", Object.assign({ type: "radio", "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, "aria-describedby": props.describedbyid, value: props.value, required: props.required, onChange: (event) => handleChange(event), onBlur: (event) => handleBlur(event), onFocus: (event) => handleFocus(event) })),
|
|
50
|
+
props.label ? React.createElement(React.Fragment, null, props.label) : React.createElement(React.Fragment, null, props.children)));
|
|
51
|
+
}
|
|
52
|
+
const DBRadio = forwardRef(DBRadioFn);
|
|
53
|
+
DBRadio.defaultProps = {};
|
|
54
|
+
export default DBRadio;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as DBSection } from './section';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as DBSection } from './section';
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { ContainerWidthProps, GlobalProps, GlobalState, SpacingProps } from '../../shared/model';
|
|
2
|
+
export type DBSectionDefaultProps = {};
|
|
3
|
+
export type DBSectionProps = DBSectionDefaultProps & GlobalProps & SpacingProps & ContainerWidthProps;
|
|
4
|
+
export type DBSectionDefaultState = {};
|
|
5
|
+
export type DBSectionState = DBSectionDefaultState & GlobalState;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
declare const DBSection: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<HTMLDivElement>, "width" | "spacing" | keyof import("../..").GlobalProps> & import("../..").GlobalProps & import("../..").SpacingProps & import("../..").ContainerWidthProps & React.RefAttributes<HTMLDivElement>>;
|
|
3
|
+
export default DBSection;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { useState, useRef, useEffect, forwardRef } from "react";
|
|
4
|
+
import { cls, uuid, filterPassingProps, getRootProps } from "../../utils";
|
|
5
|
+
import { DEFAULT_ID } from "../../shared/constants";
|
|
6
|
+
function DBSectionFn(props, component) {
|
|
7
|
+
const _ref = component || useRef(component);
|
|
8
|
+
const [_id, set_id] = useState(() => DEFAULT_ID);
|
|
9
|
+
useEffect(() => {
|
|
10
|
+
set_id(props.id || "section-" + uuid());
|
|
11
|
+
}, []);
|
|
12
|
+
return (React.createElement("section", 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-section", props.className), "data-spacing": props.spacing || "medium", "data-width": props.width }), props.children));
|
|
13
|
+
}
|
|
14
|
+
const DBSection = forwardRef(DBSectionFn);
|
|
15
|
+
DBSection.defaultProps = {};
|
|
16
|
+
export default DBSection;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as DBSelect } from './select';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as DBSelect } from './select';
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { ChangeEventProps, ChangeEventState, ClickEventProps, ClickEventState, FocusEventProps, FocusEventState, FormMessageProps, FormProps, FormState, GlobalProps, GlobalState, IconProps, InitializedState, InputEventProps, InputEventState, ShowIconProps } from '../../shared/model';
|
|
2
|
+
export type DBSelectDefaultProps = {
|
|
3
|
+
/**
|
|
4
|
+
* The description attribute will add a paragraph below the select.
|
|
5
|
+
*/
|
|
6
|
+
description?: string;
|
|
7
|
+
/**
|
|
8
|
+
* If you don't/can't use children/slots you can pass in the options as an array.
|
|
9
|
+
*/
|
|
10
|
+
options?: DBSelectOptionType[];
|
|
11
|
+
};
|
|
12
|
+
export type DBSelectOptionType = {
|
|
13
|
+
/**
|
|
14
|
+
* Identifier for option
|
|
15
|
+
*/
|
|
16
|
+
id?: string;
|
|
17
|
+
/**
|
|
18
|
+
* Disables this option
|
|
19
|
+
*/
|
|
20
|
+
disabled?: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Selects this option
|
|
23
|
+
*/
|
|
24
|
+
selected?: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* If the value is different from the label you want to show to the user.
|
|
27
|
+
*/
|
|
28
|
+
label?: string;
|
|
29
|
+
/**
|
|
30
|
+
* If you want to use optgroup you can nest options here.
|
|
31
|
+
*/
|
|
32
|
+
options?: DBSelectOptionType[];
|
|
33
|
+
/**
|
|
34
|
+
* The main value you select, will be shown as default label if no label is set.
|
|
35
|
+
*/
|
|
36
|
+
value: string | string[] | number;
|
|
37
|
+
};
|
|
38
|
+
export type DBSelectProps = DBSelectDefaultProps & GlobalProps & ClickEventProps<HTMLSelectElement> & ChangeEventProps<HTMLSelectElement> & FocusEventProps<HTMLSelectElement> & InputEventProps<HTMLSelectElement> & FormProps & IconProps & FormMessageProps & ShowIconProps;
|
|
39
|
+
export type DBSelectDefaultState = {
|
|
40
|
+
_placeholderId: string;
|
|
41
|
+
getOptionLabel: (option: DBSelectOptionType) => string;
|
|
42
|
+
};
|
|
43
|
+
export type DBSelectState = DBSelectDefaultState & GlobalState & ClickEventState<HTMLSelectElement> & ChangeEventState<HTMLSelectElement> & FocusEventState<HTMLSelectElement> & InputEventState<HTMLSelectElement> & FormState & InitializedState;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
declare const DBSelect: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<HTMLSelectElement>, "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 & React.RefAttributes<HTMLSelectElement>>;
|
|
3
|
+
export default DBSelect;
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { useState, useRef, useEffect, forwardRef } from "react";
|
|
4
|
+
import { cls, delay, getHideProp, hasVoiceOver, stringPropVisible, uuid, filterPassingProps, getRootProps } from "../../utils";
|
|
5
|
+
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";
|
|
6
|
+
import DBInfotext from "../infotext/infotext";
|
|
7
|
+
function DBSelectFn(props, component) {
|
|
8
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
9
|
+
const _ref = component || useRef(component);
|
|
10
|
+
const [_id, set_id] = useState(() => undefined);
|
|
11
|
+
const [_messageId, set_messageId] = useState(() => undefined);
|
|
12
|
+
const [_validMessageId, set_validMessageId] = useState(() => undefined);
|
|
13
|
+
const [_invalidMessageId, set_invalidMessageId] = useState(() => undefined);
|
|
14
|
+
const [_placeholderId, set_placeholderId] = useState(() => "");
|
|
15
|
+
const [_descByIds, set_descByIds] = useState(() => "");
|
|
16
|
+
const [_value, set_value] = useState(() => "");
|
|
17
|
+
const [initialized, setInitialized] = useState(() => false);
|
|
18
|
+
const [_voiceOverFallback, set_voiceOverFallback] = useState(() => "");
|
|
19
|
+
function handleClick(event) {
|
|
20
|
+
if (props.onClick) {
|
|
21
|
+
props.onClick(event);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function handleInput(event) {
|
|
25
|
+
if (props.onInput) {
|
|
26
|
+
props.onInput(event);
|
|
27
|
+
}
|
|
28
|
+
if (props.input) {
|
|
29
|
+
props.input(event);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
function handleChange(event) {
|
|
33
|
+
var _a, _b, _c, _d, _e, _f;
|
|
34
|
+
if (props.onChange) {
|
|
35
|
+
props.onChange(event);
|
|
36
|
+
}
|
|
37
|
+
if (props.change) {
|
|
38
|
+
props.change(event);
|
|
39
|
+
}
|
|
40
|
+
/* For a11y reasons we need to map the correct message with the select */
|
|
41
|
+
if (!((_a = _ref.current) === null || _a === void 0 ? void 0 : _a.validity.valid) || props.validation === "invalid") {
|
|
42
|
+
set_descByIds(_invalidMessageId);
|
|
43
|
+
if (hasVoiceOver()) {
|
|
44
|
+
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);
|
|
45
|
+
delay(() => set_voiceOverFallback(""), 1000);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
else if (props.validation === "valid" ||
|
|
49
|
+
(((_e = _ref.current) === null || _e === void 0 ? void 0 : _e.validity.valid) && props.required)) {
|
|
50
|
+
set_descByIds(_validMessageId);
|
|
51
|
+
if (hasVoiceOver()) {
|
|
52
|
+
set_voiceOverFallback((_f = props.validMessage) !== null && _f !== void 0 ? _f : DEFAULT_VALID_MESSAGE);
|
|
53
|
+
delay(() => set_voiceOverFallback(""), 1000);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
else if (stringPropVisible(props.message, props.showMessage)) {
|
|
57
|
+
set_descByIds(_messageId);
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
set_descByIds(_placeholderId);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
function handleBlur(event) {
|
|
64
|
+
if (props.onBlur) {
|
|
65
|
+
props.onBlur(event);
|
|
66
|
+
}
|
|
67
|
+
if (props.blur) {
|
|
68
|
+
props.blur(event);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
function handleFocus(event) {
|
|
72
|
+
if (props.onFocus) {
|
|
73
|
+
props.onFocus(event);
|
|
74
|
+
}
|
|
75
|
+
if (props.focus) {
|
|
76
|
+
props.focus(event);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
function getOptionLabel(option) {
|
|
80
|
+
var _a;
|
|
81
|
+
return (_a = option.label) !== null && _a !== void 0 ? _a : option.value.toString();
|
|
82
|
+
}
|
|
83
|
+
useEffect(() => {
|
|
84
|
+
var _a;
|
|
85
|
+
setInitialized(true);
|
|
86
|
+
const mId = (_a = props.id) !== null && _a !== void 0 ? _a : `select-${uuid()}`;
|
|
87
|
+
set_id(mId);
|
|
88
|
+
set_messageId(mId + DEFAULT_MESSAGE_ID_SUFFIX);
|
|
89
|
+
set_validMessageId(mId + DEFAULT_VALID_MESSAGE_ID_SUFFIX);
|
|
90
|
+
set_invalidMessageId(mId + DEFAULT_INVALID_MESSAGE_ID_SUFFIX);
|
|
91
|
+
set_placeholderId(mId + DEFAULT_PLACEHOLDER_ID_SUFFIX);
|
|
92
|
+
}, []);
|
|
93
|
+
useEffect(() => {
|
|
94
|
+
if (_id && initialized) {
|
|
95
|
+
const messageId = _id + DEFAULT_MESSAGE_ID_SUFFIX;
|
|
96
|
+
const placeholderId = _id + DEFAULT_PLACEHOLDER_ID_SUFFIX;
|
|
97
|
+
set_messageId(messageId);
|
|
98
|
+
set_validMessageId(_id + DEFAULT_VALID_MESSAGE_ID_SUFFIX);
|
|
99
|
+
set_invalidMessageId(_id + DEFAULT_INVALID_MESSAGE_ID_SUFFIX);
|
|
100
|
+
set_placeholderId(placeholderId);
|
|
101
|
+
if (stringPropVisible(props.message, props.showMessage)) {
|
|
102
|
+
set_descByIds(messageId);
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
set_descByIds(placeholderId);
|
|
106
|
+
}
|
|
107
|
+
setInitialized(false);
|
|
108
|
+
}
|
|
109
|
+
}, [_id, initialized]);
|
|
110
|
+
useEffect(() => {
|
|
111
|
+
set_value(props.value);
|
|
112
|
+
}, [props.value]);
|
|
113
|
+
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) }),
|
|
114
|
+
React.createElement("label", { htmlFor: _id }, (_a = props.label) !== null && _a !== void 0 ? _a : DEFAULT_LABEL),
|
|
115
|
+
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, 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("option", { hidden: true }),
|
|
117
|
+
props.options ? (React.createElement(React.Fragment, { key: uuid() }, (_b = props.options) === null || _b === void 0 ? void 0 : _b.map((option) => {
|
|
118
|
+
var _a;
|
|
119
|
+
return (React.createElement(React.Fragment, { key: uuid() },
|
|
120
|
+
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,
|
|
121
|
+
!option.options ? (React.createElement("option", { value: option.value, disabled: option.disabled }, getOptionLabel(option))) : null));
|
|
122
|
+
}))) : null,
|
|
123
|
+
props.children),
|
|
124
|
+
React.createElement("span", { id: _placeholderId }, (_c = props.placeholder) !== null && _c !== void 0 ? _c : props.label),
|
|
125
|
+
stringPropVisible(props.message, props.showMessage) ? (React.createElement(DBInfotext, { size: "small", icon: props.messageIcon, id: _messageId }, props.message)) : null,
|
|
126
|
+
React.createElement(DBInfotext, { size: "small", semantic: "successful", id: _validMessageId }, (_d = props.validMessage) !== null && _d !== void 0 ? _d : DEFAULT_VALID_MESSAGE),
|
|
127
|
+
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("span", { "data-visually-hidden": "true", role: "status" }, _voiceOverFallback)));
|
|
129
|
+
}
|
|
130
|
+
const DBSelect = forwardRef(DBSelectFn);
|
|
131
|
+
DBSelect.defaultProps = {};
|
|
132
|
+
export default DBSelect;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as DBStack } from './stack';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as DBStack } from './stack';
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { GapSpacingProps, GlobalProps, GlobalState } from '../../shared/model';
|
|
2
|
+
export declare const StackVariantList: readonly ["simple", "divider"];
|
|
3
|
+
export type StackVariantType = (typeof StackVariantList)[number];
|
|
4
|
+
export declare const StackDirectionList: readonly ["row", "column"];
|
|
5
|
+
export type StackDirectionType = (typeof StackDirectionList)[number];
|
|
6
|
+
export declare const StackAlignmentList: readonly ["stretch", "start", "end", "center"];
|
|
7
|
+
export type StackAlignmentType = (typeof StackAlignmentList)[number];
|
|
8
|
+
export declare const StackJustifyContentList: readonly ["space-between", "start", "end", "center"];
|
|
9
|
+
export type StackJustifyContentType = (typeof StackJustifyContentList)[number];
|
|
10
|
+
export type DBStackDefaultProps = {
|
|
11
|
+
/**
|
|
12
|
+
* Change variant of stack. To use variant="divider" add a DBDivider after each element
|
|
13
|
+
*/
|
|
14
|
+
variant?: StackVariantType;
|
|
15
|
+
/**
|
|
16
|
+
* Set the direction of the stack. Defaults to "column"
|
|
17
|
+
*/
|
|
18
|
+
direction?: StackDirectionType;
|
|
19
|
+
/**
|
|
20
|
+
* If the stack should wrap if parent is too small otherwise you get an overflow
|
|
21
|
+
*/
|
|
22
|
+
wrap?: boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Represents css align-items
|
|
25
|
+
*/
|
|
26
|
+
alignment?: StackAlignmentType;
|
|
27
|
+
/**
|
|
28
|
+
* Represents css justify-content
|
|
29
|
+
*/
|
|
30
|
+
justifyContent?: StackJustifyContentType;
|
|
31
|
+
};
|
|
32
|
+
export type DBStackProps = DBStackDefaultProps & GlobalProps & GapSpacingProps;
|
|
33
|
+
export type DBStackDefaultState = {};
|
|
34
|
+
export type DBStackState = DBStackDefaultState & GlobalState;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
declare const DBStack: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<HTMLDivElement>, "gap" | keyof import("../..").GlobalProps | keyof import("./model").DBStackDefaultProps> & import("./model").DBStackDefaultProps & import("../..").GlobalProps & import("../..").GapSpacingProps & React.RefAttributes<HTMLDivElement>>;
|
|
3
|
+
export default DBStack;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { useRef, forwardRef } from "react";
|
|
4
|
+
import { cls, getBooleanAsString, filterPassingProps, getRootProps } from "../../utils";
|
|
5
|
+
function DBStackFn(props, component) {
|
|
6
|
+
const _ref = component || useRef(component);
|
|
7
|
+
return (React.createElement("div", 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-stack", props.className), "data-gap": props.gap, "data-variant": props.variant, "data-direction": props.direction, "data-alignment": props.alignment, "data-justify-content": props.justifyContent, "data-wrap": getBooleanAsString(props.wrap) }), props.children));
|
|
8
|
+
}
|
|
9
|
+
const DBStack = forwardRef(DBStackFn);
|
|
10
|
+
DBStack.defaultProps = {};
|
|
11
|
+
export default DBStack;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as DBSwitch } from './switch';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as DBSwitch } from './switch';
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ChangeEventProps, ChangeEventState, EmphasisProps, FocusEventProps, FocusEventState, FormCheckProps, FormProps, FormState, GlobalProps, GlobalState, IconAfterProps, IconProps, InitializedState, SizeProps } from '../../shared/model';
|
|
2
|
+
export type DBSwitchDefaultProps = {
|
|
3
|
+
/**
|
|
4
|
+
* Add additional icons to indicate active/inactive state.
|
|
5
|
+
*/
|
|
6
|
+
visualAid?: boolean;
|
|
7
|
+
};
|
|
8
|
+
export type DBSwitchProps = DBSwitchDefaultProps & GlobalProps & ChangeEventProps<HTMLInputElement> & FocusEventProps<HTMLInputElement> & FormProps & FormCheckProps & EmphasisProps & SizeProps & IconProps & IconAfterProps;
|
|
9
|
+
export type DBSwitchDefaultState = {
|
|
10
|
+
_checked: boolean;
|
|
11
|
+
};
|
|
12
|
+
export type DBSwitchState = DBSwitchDefaultState & GlobalState & ChangeEventState<HTMLInputElement> & FocusEventState<HTMLInputElement> & FormState & InitializedState;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
declare const DBSwitch: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<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>>;
|
|
3
|
+
export default DBSwitch;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { useState, useRef, useEffect, forwardRef } from "react";
|
|
4
|
+
import { cls, getBooleanAsString, getHideProp, uuid, filterPassingProps, getRootProps } from "../../utils";
|
|
5
|
+
function DBSwitchFn(props, component) {
|
|
6
|
+
const _ref = component || useRef(component);
|
|
7
|
+
const [_id, set_id] = useState(() => undefined);
|
|
8
|
+
const [_checked, set_checked] = useState(() => false);
|
|
9
|
+
const [initialized, setInitialized] = useState(() => false);
|
|
10
|
+
function handleChange(event) {
|
|
11
|
+
var _a;
|
|
12
|
+
if (props.onChange) {
|
|
13
|
+
props.onChange(event);
|
|
14
|
+
}
|
|
15
|
+
if (props.change) {
|
|
16
|
+
props.change(event);
|
|
17
|
+
}
|
|
18
|
+
// We have different ts types in different frameworks, so we need to use any here
|
|
19
|
+
set_checked((_a = event.target) === null || _a === void 0 ? void 0 : _a["checked"]);
|
|
20
|
+
}
|
|
21
|
+
function handleBlur(event) {
|
|
22
|
+
if (props.onBlur) {
|
|
23
|
+
props.onBlur(event);
|
|
24
|
+
}
|
|
25
|
+
if (props.blur) {
|
|
26
|
+
props.blur(event);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
function handleFocus(event) {
|
|
30
|
+
if (props.onFocus) {
|
|
31
|
+
props.onFocus(event);
|
|
32
|
+
}
|
|
33
|
+
if (props.focus) {
|
|
34
|
+
props.focus(event);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
useEffect(() => {
|
|
38
|
+
var _a;
|
|
39
|
+
set_id((_a = props.id) !== null && _a !== void 0 ? _a : `switch-${uuid()}`);
|
|
40
|
+
}, []);
|
|
41
|
+
return (React.createElement("label", Object.assign({ "data-visual-aid": getBooleanAsString(props.visualAid), "data-size": props.size, "data-hide-label": getHideProp(props.showLabel), "data-emphasis": props.emphasis, htmlFor: _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-switch", props.className) }),
|
|
42
|
+
React.createElement("input", Object.assign({ type: "checkbox", role: "switch", id: _id, "aria-checked": _checked, 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"]), { checked: props.checked, disabled: props.disabled, "aria-describedby": props.describedbyid, "aria-invalid": props.validation === "invalid", "data-custom-validity": props.validation, name: props.name, required: props.required, "data-aid-icon": props.icon, "data-aid-icon-after": props.iconAfter, onChange: (event) => handleChange(event), onBlur: (event) => handleBlur(event), onFocus: (event) => handleFocus(event) })),
|
|
43
|
+
props.label ? React.createElement(React.Fragment, null, props.label) : React.createElement(React.Fragment, null, props.children)));
|
|
44
|
+
}
|
|
45
|
+
const DBSwitch = forwardRef(DBSwitchFn);
|
|
46
|
+
DBSwitch.defaultProps = {};
|
|
47
|
+
export default DBSwitch;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as DBTabItem } from './tab-item';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as DBTabItem } from './tab-item';
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ActiveProps, AriaControlsProps, ChangeEventProps, ChangeEventState, GlobalProps, GlobalState, IconAfterProps, IconProps, InitializedState, ShowIconProps } from '../../shared/model';
|
|
2
|
+
export type DBTabItemDefaultProps = {
|
|
3
|
+
/**
|
|
4
|
+
* To control the component
|
|
5
|
+
*/
|
|
6
|
+
checked?: boolean;
|
|
7
|
+
/**
|
|
8
|
+
* The disabled attribute can be set to keep a user from clicking on the tab-item.
|
|
9
|
+
*/
|
|
10
|
+
disabled?: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* The label of the tab-item, if you don't want to use children.
|
|
13
|
+
*/
|
|
14
|
+
label?: string;
|
|
15
|
+
/**
|
|
16
|
+
* Define the text next to the icon specified via the icon Property to get hidden.
|
|
17
|
+
*/
|
|
18
|
+
noText?: boolean;
|
|
19
|
+
};
|
|
20
|
+
export type DBTabItemProps = GlobalProps & DBTabItemDefaultProps & IconProps & IconAfterProps & ActiveProps & AriaControlsProps & ChangeEventProps<HTMLInputElement> & ShowIconProps;
|
|
21
|
+
export type DBTabItemDefaultState = {
|
|
22
|
+
_selected: boolean;
|
|
23
|
+
};
|
|
24
|
+
export type DBTabItemState = DBTabItemDefaultState & GlobalState & ChangeEventState<HTMLInputElement> & InitializedState;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
declare const DBTabItem: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<HTMLInputElement>, "active" | "icon" | "controls" | keyof import("../../shared/model").GlobalProps | "showIcon" | keyof import("../../shared/model").ChangeEventProps<HTMLInputElement> | "iconAfter" | keyof import("./model").DBTabItemDefaultProps> & import("../../shared/model").GlobalProps & import("./model").DBTabItemDefaultProps & import("../../shared/model").IconProps & import("../../shared/model").IconAfterProps & import("../../shared/model").ActiveProps & import("../../shared/model").AriaControlsProps & import("../../shared/model").ChangeEventProps<HTMLInputElement> & import("../../shared/model").ShowIconProps & React.RefAttributes<HTMLInputElement>>;
|
|
3
|
+
export default DBTabItem;
|