typescript-overlay-essentials 1.2.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +18 -3
- package/.github/workflows/npm-publish.yml +0 -32
- package/ConfirmationBox.css +0 -69
- package/ConfirmationBox.tsx +0 -148
- package/Dropdown.css +0 -31
- package/Dropdown.tsx +0 -211
- package/InfoOverlay.css +0 -65
- package/InfoOverlay.tsx +0 -101
- package/InfoOverlayWithInput.css +0 -88
- package/InfoOverlayWithInput.tsx +0 -157
- package/InputFilter.tsx +0 -36
- package/LoadingOverlay.css +0 -110
- package/LoadingOverlay.tsx +0 -57
- package/MultipleChoiceOverlay.css +0 -170
- package/MultipleChoiceOverlay.tsx +0 -170
- package/MultipleRadioOverlay.css +0 -170
- package/MultipleRadioOverlay.tsx +0 -158
- package/Toast.css +0 -13
- package/Toast.tsx +0 -31
- package/ToggleSwitch.tsx +0 -56
- package/Toggleswitch.css +0 -49
- package/index.ts +0 -10
package/Toast.tsx
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { useEffect, useState, ReactElement } from 'react';
|
|
2
|
-
import './Toast.css'
|
|
3
|
-
|
|
4
|
-
// Zeigt einen kleinen Toast in der oberen rechten Ecke an, der nach 2,5 Sekunden wieder verschwindet
|
|
5
|
-
export function Toast({ state, setState }: { state: string, setState: (value: string) => void }) : ReactElement {
|
|
6
|
-
// Wird verwendet um die Toast-Notification ein-/auszublenden
|
|
7
|
-
const [showToast, setShowToast] = useState(false);
|
|
8
|
-
// Wird verwendet um den Inhalt der Toast-Notification zu bestimmen
|
|
9
|
-
const [toastContent, setToastContent] = useState("");
|
|
10
|
-
|
|
11
|
-
useEffect(() => {
|
|
12
|
-
setToastContent(state)
|
|
13
|
-
}, [state]);
|
|
14
|
-
|
|
15
|
-
useEffect(() => {
|
|
16
|
-
if (toastContent && toastContent !== "") {
|
|
17
|
-
setShowToast(true);
|
|
18
|
-
setTimeout(() => { setState(""); }, 2500); // Hinweis nach 2,5 Sekunden wieder ausblenden
|
|
19
|
-
}
|
|
20
|
-
else {
|
|
21
|
-
setShowToast(false);
|
|
22
|
-
}
|
|
23
|
-
}, [toastContent, setState]);
|
|
24
|
-
|
|
25
|
-
return <>
|
|
26
|
-
{showToast && (
|
|
27
|
-
<div className="toast-notification">
|
|
28
|
-
{toastContent}
|
|
29
|
-
</div>)}
|
|
30
|
-
</>
|
|
31
|
-
}
|
package/ToggleSwitch.tsx
DELETED
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import React, { useRef, useEffect, useState } from "react";
|
|
2
|
-
import "./ToggleSwitch.css";
|
|
3
|
-
|
|
4
|
-
export interface ToggleSwitchOption<T> {
|
|
5
|
-
value: T;
|
|
6
|
-
label: string;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
// Attribute vom ToggleSwitch:
|
|
10
|
-
// - optionLeft: {value: valueLeft, label: labelLeft} Beschreibt die linke Option. valueLeft ist der Wert, der in "value" eingetragen wird und labelLeft, was als Option angezeigt wird.
|
|
11
|
-
// - optionRight: {value: valueLeft, label: labelRight} Beschreibt die rechte Option. valueRight ist der Wert, der in "value" eingetragen wird und labelRight, was als Option angezeigt wird.
|
|
12
|
-
// - value: Der Wert, der ausgewählt angezeigt werden soll (useState)
|
|
13
|
-
// - onChange: Die Funktion die bei Änderung ausgeführt werden soll.
|
|
14
|
-
// Standardmäßig könnte z.B. {(value) => {value === valueLeft ? setValue(valueLeft) : setValue(valueRight)}} genutzt werden
|
|
15
|
-
|
|
16
|
-
export function ToggleSwitch<T>({ optionLeft, optionRight, value, onChange } : { optionLeft: ToggleSwitchOption<T>, optionRight: ToggleSwitchOption<T>, value: T, onChange: (value: T) => void }) {
|
|
17
|
-
const containerRef = useRef<HTMLDivElement>(null);
|
|
18
|
-
const optionLeftRef = useRef<HTMLDivElement>(null);
|
|
19
|
-
const optionRightRef = useRef<HTMLDivElement>(null);
|
|
20
|
-
const [sliderStyle, setSliderStyle] = useState({});
|
|
21
|
-
|
|
22
|
-
useEffect(() => {
|
|
23
|
-
const el = value === optionLeft.value ? optionLeftRef.current : optionRightRef.current;
|
|
24
|
-
const container = containerRef.current;
|
|
25
|
-
|
|
26
|
-
if (!el || !container) return;
|
|
27
|
-
|
|
28
|
-
const { offsetLeft, offsetWidth } = el;
|
|
29
|
-
|
|
30
|
-
setSliderStyle({
|
|
31
|
-
transform: `translateX(calc(${offsetLeft}px - 1rem))`,
|
|
32
|
-
width: `calc(${offsetWidth}px + 2rem)`
|
|
33
|
-
});
|
|
34
|
-
}, [value, optionLeft, optionRight]);
|
|
35
|
-
|
|
36
|
-
return (
|
|
37
|
-
<div className="toggleWrapper" ref={containerRef}>
|
|
38
|
-
<div
|
|
39
|
-
className={`toggleOption ${value === optionLeft.value ? "active" : ""}`}
|
|
40
|
-
ref={el => {optionLeftRef.current = el}}
|
|
41
|
-
onClick={() => onChange(optionLeft.value)}
|
|
42
|
-
>
|
|
43
|
-
{optionLeft.label}
|
|
44
|
-
</div>
|
|
45
|
-
<div
|
|
46
|
-
className={`toggleOption ${value === optionRight.value ? "active" : ""}`}
|
|
47
|
-
ref={el => {optionRightRef.current = el}}
|
|
48
|
-
onClick={() => onChange(optionRight.value)}
|
|
49
|
-
>
|
|
50
|
-
{optionRight.label}
|
|
51
|
-
</div>
|
|
52
|
-
|
|
53
|
-
<div className={`toggleSlider ${value === optionLeft.value ? "left" : "right"}`} style={sliderStyle}/>
|
|
54
|
-
</div>
|
|
55
|
-
);
|
|
56
|
-
}
|
package/Toggleswitch.css
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
.toggleWrapper {
|
|
2
|
-
position: relative;
|
|
3
|
-
display: flex;
|
|
4
|
-
width: fit-content;
|
|
5
|
-
height: 40px;
|
|
6
|
-
border-radius: 20px;
|
|
7
|
-
background-color: #f9eeee;;
|
|
8
|
-
overflow: hidden;
|
|
9
|
-
cursor: pointer;
|
|
10
|
-
user-select: none;
|
|
11
|
-
font-family: sans-serif;
|
|
12
|
-
font-weight: 500;
|
|
13
|
-
float: right;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
.toggleOption {
|
|
17
|
-
flex: 1;
|
|
18
|
-
display: flex;
|
|
19
|
-
justify-content: center;
|
|
20
|
-
align-items: center;
|
|
21
|
-
z-index: 2;
|
|
22
|
-
color: var(--FastSchwarz, black);
|
|
23
|
-
transition: color 0.2s;
|
|
24
|
-
margin: 1rem;
|
|
25
|
-
white-space: nowrap;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
.toggleOption.active {
|
|
29
|
-
color: black;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
.toggleSlider {
|
|
33
|
-
position: absolute;
|
|
34
|
-
top: 0;
|
|
35
|
-
bottom: 0;
|
|
36
|
-
width: 50%;
|
|
37
|
-
border-radius: 20px;
|
|
38
|
-
background-color: var(--HellAkzent, red);
|
|
39
|
-
transition: transform 0.25s ease;
|
|
40
|
-
z-index: 1;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
.toggleSlider.left {
|
|
44
|
-
transform: translateX(0%);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
.toggleSlider.right {
|
|
48
|
-
transform: translateX(100%);
|
|
49
|
-
}
|
package/index.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export { ConfirmationBox, ConfirmationBoxState, defaultConfirmationState } from './ConfirmationBox.tsx';
|
|
2
|
-
export { Dropdown, DropdownOption } from './Dropdown.tsx';
|
|
3
|
-
export { InfoOverlay, InfoOverlayState, defaultInfoOverlayState } from './InfoOverlay.tsx';
|
|
4
|
-
export { InfoOverlayWithInput, InfoOverlayWithInputState, defaultInfoOverlayWithInputState } from './InfoOverlayWithInput.tsx';
|
|
5
|
-
export { setInputFilter } from './InputFilter.tsx';
|
|
6
|
-
export { LoadingOverlay, LoadingOverlayState, defaultLoadingOverlayState } from './LoadingOverlay.tsx';
|
|
7
|
-
export { MultipleChoiceOverlay, MultipleChoiceOverlayState, defaultMultipleChoiceState } from './MultipleChoiceOverlay.tsx';
|
|
8
|
-
export { MultipleRadioOverlay, MultipleRadioOverlayState, defaultMultipleRadioState } from './MultipleRadioOverlay.tsx';
|
|
9
|
-
export { Toast } from './Toast.tsx';
|
|
10
|
-
export { ToggleSwitch, ToggleSwitchOption } from './ToggleSwitch.tsx'
|