@sikka/hawa 0.0.247 → 0.0.248
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/styles.css +17 -0
- package/es/elements/FloatingCommentExec.d.ts +4 -0
- package/es/elements/UserFeedback.d.ts +1 -0
- package/es/elements/index.d.ts +1 -0
- package/es/index.es.js +9 -9
- package/lib/elements/FloatingCommentExec.d.ts +4 -0
- package/lib/elements/UserFeedback.d.ts +1 -0
- package/lib/elements/index.d.ts +1 -0
- package/lib/index.js +9 -9
- package/package.json +1 -1
- package/src/elements/FloatingCommentExec.tsx +106 -0
- package/src/elements/UserFeedback.tsx +108 -38
- package/src/elements/index.ts +1 -0
- package/src/styles.css +17 -0
package/package.json
CHANGED
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import React, { useRef, useState, useEffect, FC } from "react"
|
|
2
|
+
import ReactDOMServer from "react-dom/server"
|
|
3
|
+
import { AiOutlineClose } from "react-icons/ai"
|
|
4
|
+
|
|
5
|
+
let base64 =
|
|
6
|
+
"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"
|
|
7
|
+
|
|
8
|
+
type ComponentTypes = {}
|
|
9
|
+
const Property = (props) => {
|
|
10
|
+
return (
|
|
11
|
+
<div
|
|
12
|
+
className="border-box mr-[10px] flex h-[32px] w-fit min-w-[32px] items-center justify-center rounded bg-gray-300 p-2 transition-all hover:opacity-50"
|
|
13
|
+
onMouseDown={props.onMouseDown}
|
|
14
|
+
>
|
|
15
|
+
{props.name}
|
|
16
|
+
</div>
|
|
17
|
+
)
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
const Image = (props) => {
|
|
21
|
+
return (
|
|
22
|
+
<div className="group relative w-fit">
|
|
23
|
+
<img src={`data:image/pngg;charset=utf-8;base64,${base64}`} />
|
|
24
|
+
<div className="absolute right-0 top-0 text-red-900 opacity-0 transition-all hover:opacity-50 group-hover:opacity-100">
|
|
25
|
+
<AiOutlineClose />
|
|
26
|
+
</div>
|
|
27
|
+
</div>
|
|
28
|
+
)
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const styles = {
|
|
32
|
+
bold: "B",
|
|
33
|
+
italic: "I",
|
|
34
|
+
underline: "U",
|
|
35
|
+
strikeThrough: "S",
|
|
36
|
+
subscript: "SubS",
|
|
37
|
+
superscript: "SuperS",
|
|
38
|
+
removeFormat: "Plain",
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export const FloatingCommentExec: React.FC<ComponentTypes> = (props) => {
|
|
42
|
+
return (
|
|
43
|
+
<div className="align-center box-border flex h-min w-[400px] flex-col items-center justify-center rounded shadow-md">
|
|
44
|
+
<div className={"flex w-full flex-row justify-start p-2"}>
|
|
45
|
+
{Object.entries(styles).map(([id, acronym]) => {
|
|
46
|
+
return (
|
|
47
|
+
<Property
|
|
48
|
+
name={acronym}
|
|
49
|
+
key={`property-${id}`}
|
|
50
|
+
onMouseDown={(event) => {
|
|
51
|
+
event.preventDefault()
|
|
52
|
+
document.execCommand(id, false, null)
|
|
53
|
+
console.log(`Executing ${id}`)
|
|
54
|
+
// perform(id)
|
|
55
|
+
}}
|
|
56
|
+
/>
|
|
57
|
+
)
|
|
58
|
+
})}
|
|
59
|
+
<Property
|
|
60
|
+
name="Image"
|
|
61
|
+
key={`property-insertImage`}
|
|
62
|
+
onMouseDown={(event) => {
|
|
63
|
+
event.preventDefault()
|
|
64
|
+
let html = ReactDOMServer.renderToString(<Image />)
|
|
65
|
+
document.execCommand("insertHTML", false, html)
|
|
66
|
+
|
|
67
|
+
// const byteCharacters = atob(base64)
|
|
68
|
+
// const byteNumbers = new Array(byteCharacters.length)
|
|
69
|
+
// for (let i = 0; i < byteCharacters.length; i++) {
|
|
70
|
+
// byteNumbers[i] = byteCharacters.charCodeAt(i)
|
|
71
|
+
// }
|
|
72
|
+
// const byteArray = new Uint8Array(byteNumbers)
|
|
73
|
+
// const blob = new Blob([byteArray], { type: "image/png" })
|
|
74
|
+
|
|
75
|
+
// let url = URL.createObjectURL(blob)
|
|
76
|
+
|
|
77
|
+
// document.execCommand("insertImage", false, url)
|
|
78
|
+
}}
|
|
79
|
+
/>
|
|
80
|
+
</div>
|
|
81
|
+
<div className="h-[1px] w-full bg-slate-600"> </div>
|
|
82
|
+
|
|
83
|
+
<div className=" box-border w-full p-2">
|
|
84
|
+
<div
|
|
85
|
+
contentEditable="true"
|
|
86
|
+
className="rtl h-[150px] w-full resize-none overflow-auto overflow-x-hidden border-none font-['Arial'] text-[16px] outline-none"
|
|
87
|
+
|
|
88
|
+
// onKeyDown={(event) => {
|
|
89
|
+
// if (event.key == "Tab") {
|
|
90
|
+
// event.preventDefault()
|
|
91
|
+
// document.execCommand("indent", false, null)
|
|
92
|
+
// return
|
|
93
|
+
// }
|
|
94
|
+
// }}
|
|
95
|
+
></div>
|
|
96
|
+
</div>
|
|
97
|
+
<div className="h-[1px] w-full bg-slate-600"> </div>
|
|
98
|
+
<button
|
|
99
|
+
className="my-1 rounded bg-cyan-800 p-2 py-1 text-white"
|
|
100
|
+
onClick={() => {}}
|
|
101
|
+
>
|
|
102
|
+
Submit
|
|
103
|
+
</button>
|
|
104
|
+
</div>
|
|
105
|
+
)
|
|
106
|
+
}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import
|
|
1
|
+
import clsx from "clsx"
|
|
2
|
+
import { FC, useEffect, useRef, useState } from "react"
|
|
3
|
+
import { HawaButton } from "./HawaButton"
|
|
2
4
|
|
|
3
5
|
type ComponentTypes = {
|
|
4
6
|
title?: string
|
|
@@ -8,50 +10,118 @@ type ComponentTypes = {
|
|
|
8
10
|
least: string
|
|
9
11
|
most: string
|
|
10
12
|
}
|
|
13
|
+
position?: "bottom-right" | "bottom-left"
|
|
11
14
|
onOptionClicked?: (option) => void
|
|
12
15
|
}
|
|
13
|
-
export const UserFeedback: FC<ComponentTypes> = ({
|
|
16
|
+
export const UserFeedback: FC<ComponentTypes> = ({
|
|
17
|
+
position = "bottom-right",
|
|
18
|
+
...props
|
|
19
|
+
}) => {
|
|
20
|
+
const [closed, setClosed] = useState(false)
|
|
21
|
+
const [answered, setAnswered] = useState(false)
|
|
22
|
+
const [clickedOption, setClickedOption] = useState(null)
|
|
23
|
+
const [closingTimer, setClosingTimer] = useState(5)
|
|
24
|
+
const popUpRef = useRef(null)
|
|
25
|
+
|
|
26
|
+
const boxPosition = {
|
|
27
|
+
"bottom-right": "right-4",
|
|
28
|
+
"bottom-left": "left-4",
|
|
29
|
+
}
|
|
30
|
+
useEffect(() => {
|
|
31
|
+
//To change opacity and hide the component
|
|
32
|
+
const timeoutHide = setTimeout(() => {
|
|
33
|
+
setClosingTimer(closingTimer - 1)
|
|
34
|
+
}, 1000)
|
|
35
|
+
|
|
36
|
+
return () => {
|
|
37
|
+
clearTimeout(timeoutHide)
|
|
38
|
+
}
|
|
39
|
+
}, [closingTimer])
|
|
40
|
+
|
|
41
|
+
const slowClose = () => {
|
|
42
|
+
setClosed(true)
|
|
43
|
+
setTimeout(() => {
|
|
44
|
+
popUpRef.current.removeChild(popUpRef.current.children[0])
|
|
45
|
+
}, 200)
|
|
46
|
+
}
|
|
14
47
|
return (
|
|
15
|
-
<div
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
48
|
+
<div
|
|
49
|
+
ref={popUpRef}
|
|
50
|
+
className={clsx("fixed bottom-4", boxPosition[position])}
|
|
51
|
+
>
|
|
52
|
+
<div
|
|
53
|
+
className={clsx(
|
|
54
|
+
"relative flex w-full max-w-sm flex-col gap-2 rounded bg-white p-4 shadow-md transition-all",
|
|
55
|
+
closed ? "opacity-0" : "opacity-100"
|
|
56
|
+
)}
|
|
23
57
|
>
|
|
24
|
-
<
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
58
|
+
<div className="absolute left-2 top-2 p-1.5 text-sm">{props.title}</div>
|
|
59
|
+
<button
|
|
60
|
+
type="button"
|
|
61
|
+
className="absolute right-2 top-2 inline-flex h-8 w-8 rounded p-1.5 text-gray-400 hover:bg-gray-100 hover:text-gray-900 focus:ring-2 focus:ring-gray-300 dark:bg-gray-800 dark:text-gray-500 dark:hover:bg-gray-700 dark:hover:text-white"
|
|
62
|
+
data-dismiss-target="#toast-default"
|
|
63
|
+
aria-label="Close"
|
|
64
|
+
onClick={() => slowClose()}
|
|
30
65
|
>
|
|
31
|
-
<
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
</button>
|
|
38
|
-
<div className="mt-8">{props.question}</div>
|
|
39
|
-
<div className="flex w-full flex-row gap-1 rounded">
|
|
40
|
-
{props.options.map((op) => (
|
|
41
|
-
<span
|
|
42
|
-
onClick={() => props.onOptionClicked(op)}
|
|
43
|
-
className="w-full cursor-pointer rounded border bg-white p-4 text-center transition-all hover:bg-gray-100"
|
|
66
|
+
<svg
|
|
67
|
+
aria-hidden="true"
|
|
68
|
+
className="h-5 w-5"
|
|
69
|
+
fill="currentColor"
|
|
70
|
+
viewBox="0 0 20 20"
|
|
71
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
44
72
|
>
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
73
|
+
<path
|
|
74
|
+
fillRule="evenodd"
|
|
75
|
+
d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z"
|
|
76
|
+
clipRule="evenodd"
|
|
77
|
+
></path>
|
|
78
|
+
</svg>
|
|
79
|
+
</button>
|
|
80
|
+
<div className="mt-8">{props.question}</div>
|
|
81
|
+
<div className="flex w-full flex-row gap-1 rounded">
|
|
82
|
+
{props.options.map((op) => (
|
|
83
|
+
<span
|
|
84
|
+
onClick={() => {
|
|
85
|
+
props.onOptionClicked(op)
|
|
86
|
+
setClickedOption(op)
|
|
87
|
+
setAnswered(true)
|
|
88
|
+
const timeoutDestroy = setTimeout(() => {
|
|
89
|
+
setClosed(true)
|
|
90
|
+
}, 4800)
|
|
91
|
+
setTimeout(() => {
|
|
92
|
+
popUpRef.current.removeChild(popUpRef.current.children[0])
|
|
93
|
+
clearTimeout(timeoutDestroy)
|
|
94
|
+
}, 5300)
|
|
95
|
+
}}
|
|
96
|
+
className={clsx(
|
|
97
|
+
"w-full cursor-pointer rounded border p-4 text-center transition-all ",
|
|
98
|
+
clickedOption === op
|
|
99
|
+
? "bg-gray-500 text-white"
|
|
100
|
+
: "bg-white hover:bg-gray-100"
|
|
101
|
+
)}
|
|
102
|
+
>
|
|
103
|
+
{op}
|
|
104
|
+
</span>
|
|
105
|
+
))}
|
|
53
106
|
</div>
|
|
54
|
-
|
|
107
|
+
{props.texts && (
|
|
108
|
+
<div className=" flex flex-row justify-between text-xs">
|
|
109
|
+
<span>{props.texts.least}</span>
|
|
110
|
+
<span>{props.texts.most}</span>
|
|
111
|
+
</div>
|
|
112
|
+
)}
|
|
113
|
+
{answered && (
|
|
114
|
+
<div className="absolute left-0 top-0 flex h-full w-full flex-col items-center justify-center rounded bg-black bg-opacity-80 p-4 text-center transition-all">
|
|
115
|
+
<span className="font-bold text-white">
|
|
116
|
+
Thank you for your answer. This box will disappear in
|
|
117
|
+
{" " + closingTimer} seconds
|
|
118
|
+
</span>
|
|
119
|
+
<div className="flex flex-row gap-2">
|
|
120
|
+
<HawaButton onClick={() => slowClose()}>Close</HawaButton>
|
|
121
|
+
</div>
|
|
122
|
+
</div>
|
|
123
|
+
)}
|
|
124
|
+
</div>
|
|
55
125
|
</div>
|
|
56
126
|
)
|
|
57
127
|
}
|
package/src/elements/index.ts
CHANGED
|
@@ -35,6 +35,7 @@ export * from "./UserFeedback"
|
|
|
35
35
|
export * from "./ArrowCarousel"
|
|
36
36
|
export * from "./FloatingComment"
|
|
37
37
|
export * from "./FloatingCommentSlate"
|
|
38
|
+
export * from "./FloatingCommentExec"
|
|
38
39
|
export * from "./BackToTop"
|
|
39
40
|
// Inputs
|
|
40
41
|
export * from "./HawaTextField"
|
package/src/styles.css
CHANGED
|
@@ -624,6 +624,9 @@ video {
|
|
|
624
624
|
.left-3 {
|
|
625
625
|
left: 0.75rem;
|
|
626
626
|
}
|
|
627
|
+
.left-4 {
|
|
628
|
+
left: 1rem;
|
|
629
|
+
}
|
|
627
630
|
.right-0 {
|
|
628
631
|
right: 0px;
|
|
629
632
|
}
|
|
@@ -1062,6 +1065,9 @@ video {
|
|
|
1062
1065
|
.min-w-\[24px\] {
|
|
1063
1066
|
min-width: 24px;
|
|
1064
1067
|
}
|
|
1068
|
+
.min-w-\[32px\] {
|
|
1069
|
+
min-width: 32px;
|
|
1070
|
+
}
|
|
1065
1071
|
.min-w-fit {
|
|
1066
1072
|
min-width: -moz-fit-content;
|
|
1067
1073
|
min-width: fit-content;
|
|
@@ -1659,6 +1665,9 @@ video {
|
|
|
1659
1665
|
.bg-opacity-75 {
|
|
1660
1666
|
--tw-bg-opacity: 0.75;
|
|
1661
1667
|
}
|
|
1668
|
+
.bg-opacity-80 {
|
|
1669
|
+
--tw-bg-opacity: 0.8;
|
|
1670
|
+
}
|
|
1662
1671
|
.bg-none {
|
|
1663
1672
|
background-image: none;
|
|
1664
1673
|
}
|
|
@@ -1962,6 +1971,10 @@ video {
|
|
|
1962
1971
|
--tw-text-opacity: 1;
|
|
1963
1972
|
color: rgb(185 28 28 / var(--tw-text-opacity));
|
|
1964
1973
|
}
|
|
1974
|
+
.text-red-900 {
|
|
1975
|
+
--tw-text-opacity: 1;
|
|
1976
|
+
color: rgb(127 29 29 / var(--tw-text-opacity));
|
|
1977
|
+
}
|
|
1965
1978
|
.text-white {
|
|
1966
1979
|
--tw-text-opacity: 1;
|
|
1967
1980
|
color: rgb(255 255 255 / var(--tw-text-opacity));
|
|
@@ -2310,6 +2323,10 @@ body {
|
|
|
2310
2323
|
text-decoration-thickness: 2px;
|
|
2311
2324
|
}
|
|
2312
2325
|
|
|
2326
|
+
.hover\:opacity-50:hover {
|
|
2327
|
+
opacity: 0.5;
|
|
2328
|
+
}
|
|
2329
|
+
|
|
2313
2330
|
.hover\:shadow-lg:hover {
|
|
2314
2331
|
--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
|
|
2315
2332
|
--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);
|