@monolith-forensics/monolith-ui 1.3.92 → 1.3.95
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/{SearchableTextArea/SearchableTextArea.d.ts → SelectableTextArea/SelectableTextArea.d.ts} +10 -4
- package/dist/{SearchableTextArea/SearchableTextArea.js → SelectableTextArea/SelectableTextArea.js} +69 -31
- package/dist/SelectableTextArea/index.d.ts +2 -0
- package/dist/SelectableTextArea/index.js +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/dist/SearchableTextArea/index.d.ts +0 -2
- package/dist/SearchableTextArea/index.js +0 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
import type { DropDownItem } from "../DropDownMenu";
|
|
2
|
+
export interface SelectableTextAreaProps {
|
|
2
3
|
label?: string;
|
|
3
4
|
data?: Array<{
|
|
4
5
|
label: string;
|
|
@@ -17,9 +18,14 @@ export interface SearchableTextAreaProps {
|
|
|
17
18
|
textAreaMaxRows?: number;
|
|
18
19
|
textAreaProps?: Record<string, any>;
|
|
19
20
|
initialValue?: string;
|
|
21
|
+
actionMenuData?: Array<{
|
|
22
|
+
label: string;
|
|
23
|
+
value: string;
|
|
24
|
+
}>;
|
|
25
|
+
onActionMenuSelect?: (item: DropDownItem) => void;
|
|
20
26
|
}
|
|
21
|
-
declare function
|
|
22
|
-
declare namespace
|
|
27
|
+
declare function SelectableTextArea({ label, data, searchable, allowCustomValue, required, error, description, selectProps, value, onChange, textAreaPlaceholder, textAreaMinRows, textAreaMaxRows, textAreaProps, initialValue, actionMenuData, onActionMenuSelect, }: SelectableTextAreaProps): import("react/jsx-runtime").JSX.Element;
|
|
28
|
+
declare namespace SelectableTextArea {
|
|
23
29
|
var displayName: string;
|
|
24
30
|
}
|
|
25
|
-
export default
|
|
31
|
+
export default SelectableTextArea;
|
package/dist/{SearchableTextArea/SearchableTextArea.js → SelectableTextArea/SelectableTextArea.js}
RENAMED
|
@@ -17,20 +17,45 @@ const TextAreaRow = styled.div `
|
|
|
17
17
|
display: flex;
|
|
18
18
|
align-items: flex-start;
|
|
19
19
|
width: 100%;
|
|
20
|
+
z-index: 1; /* Lower than SelectBoxWrapper */
|
|
20
21
|
`;
|
|
21
22
|
const SelectBoxWrapper = styled.div `
|
|
22
|
-
position:
|
|
23
|
+
position: absolute;
|
|
23
24
|
width: 100%;
|
|
25
|
+
top: 0; /* Position at the top of the textarea */
|
|
26
|
+
left: 0;
|
|
27
|
+
z-index: 10; /* Ensure dropdown appears above textarea */
|
|
24
28
|
`;
|
|
25
29
|
const StyledSelectBox = styled(SelectBox) `
|
|
26
|
-
/* Completely hide the SelectBox
|
|
27
|
-
position:
|
|
28
|
-
top: 0;
|
|
29
|
-
left: 0;
|
|
30
|
+
/* Completely hide the SelectBox and disable all interactions */
|
|
31
|
+
position: relative;
|
|
30
32
|
width: 100%;
|
|
31
33
|
opacity: 0;
|
|
32
|
-
pointer-events:
|
|
33
|
-
|
|
34
|
+
pointer-events: none; /* Disable all interactions */
|
|
35
|
+
height: 0;
|
|
36
|
+
overflow: hidden;
|
|
37
|
+
|
|
38
|
+
/* Hide all child elements */
|
|
39
|
+
* {
|
|
40
|
+
opacity: 0;
|
|
41
|
+
pointer-events: none;
|
|
42
|
+
height: 0;
|
|
43
|
+
overflow: hidden;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/* Only allow dropdown portal to be visible and interactive when opened programmatically */
|
|
47
|
+
[data-floating-ui-portal] {
|
|
48
|
+
opacity: 1 !important;
|
|
49
|
+
pointer-events: auto !important;
|
|
50
|
+
z-index: 1000 !important;
|
|
51
|
+
|
|
52
|
+
* {
|
|
53
|
+
opacity: 1 !important;
|
|
54
|
+
pointer-events: auto !important;
|
|
55
|
+
height: auto !important;
|
|
56
|
+
overflow: visible !important;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
34
59
|
`;
|
|
35
60
|
const StyledFieldLabel = styled(FieldLabel) `
|
|
36
61
|
.action-section {
|
|
@@ -72,7 +97,7 @@ const StyledTextArea = styled.textarea `
|
|
|
72
97
|
opacity: 0.5;
|
|
73
98
|
}
|
|
74
99
|
`;
|
|
75
|
-
function
|
|
100
|
+
function SelectableTextArea({ label, data, searchable, allowCustomValue, required, error, description, selectProps = {}, value, onChange, textAreaPlaceholder, textAreaMinRows = 3, textAreaMaxRows, textAreaProps = {}, initialValue = "", actionMenuData, onActionMenuSelect, }) {
|
|
76
101
|
// Use controlled value if provided, otherwise use internal state
|
|
77
102
|
const [internalValue, setInternalValue] = useState(initialValue);
|
|
78
103
|
const [selectValue, setSelectValue] = useState(null);
|
|
@@ -108,36 +133,49 @@ function SearchableTextArea({ label, data, searchable, allowCustomValue, require
|
|
|
108
133
|
onChange(newValue);
|
|
109
134
|
}
|
|
110
135
|
};
|
|
111
|
-
|
|
112
|
-
const handleTextAreaKeyDown = (event) => {
|
|
113
|
-
// Ctrl/Cmd + Space to open dropdown
|
|
114
|
-
if ((event.ctrlKey || event.metaKey) && event.code === "Space") {
|
|
115
|
-
event.preventDefault();
|
|
116
|
-
handleSearchClick();
|
|
117
|
-
}
|
|
118
|
-
};
|
|
119
|
-
const handleSearchClick = () => {
|
|
136
|
+
const handleMenuClick = () => {
|
|
120
137
|
if (selectBoxRef.current) {
|
|
121
138
|
const selectInput = selectBoxRef.current.querySelector("input");
|
|
122
139
|
if (selectInput) {
|
|
140
|
+
// Temporarily enable interactions to trigger dropdown
|
|
141
|
+
selectInput.style.pointerEvents = "auto";
|
|
142
|
+
selectInput.style.opacity = "1";
|
|
143
|
+
selectInput.style.height = "auto";
|
|
123
144
|
selectInput.focus();
|
|
124
145
|
selectInput.click();
|
|
146
|
+
// Hide again immediately after triggering
|
|
147
|
+
setTimeout(() => {
|
|
148
|
+
selectInput.style.pointerEvents = "none";
|
|
149
|
+
selectInput.style.opacity = "0";
|
|
150
|
+
selectInput.style.height = "0";
|
|
151
|
+
}, 50);
|
|
125
152
|
}
|
|
126
153
|
}
|
|
127
154
|
};
|
|
128
155
|
// Used to create red border when zod validation detects errors
|
|
129
156
|
const hasError = Boolean(error);
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
157
|
+
// Create default menu data if none provided
|
|
158
|
+
const defaultMenuData = [
|
|
159
|
+
{
|
|
160
|
+
value: "recent",
|
|
161
|
+
label: "Select Recent Entry",
|
|
162
|
+
},
|
|
163
|
+
];
|
|
164
|
+
// Use provided menu data or fall back to default
|
|
165
|
+
const menuData = actionMenuData || defaultMenuData;
|
|
166
|
+
// Handle menu item selection with custom callback or default behavior
|
|
167
|
+
const handleActionMenuSelect = (item) => {
|
|
168
|
+
if (onActionMenuSelect) {
|
|
169
|
+
onActionMenuSelect(item);
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
// Default behavior: if item value is "recent", trigger handleMenuClick
|
|
173
|
+
if (item.value === "recent") {
|
|
174
|
+
handleMenuClick();
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
};
|
|
178
|
+
return (_jsxs(CombinedInputWrapper, { children: [label && (_jsx(StyledFieldLabel, { asterisk: required, error: error, description: description, actionComponent: _jsx(DropDownMenu, { data: menuData, variant: "text", size: "xs", arrow: false, onItemSelect: handleActionMenuSelect, buttonProps: {
|
|
141
179
|
style: {
|
|
142
180
|
minWidth: "auto",
|
|
143
181
|
border: "none",
|
|
@@ -147,7 +185,7 @@ function SearchableTextArea({ label, data, searchable, allowCustomValue, require
|
|
|
147
185
|
height: "16px",
|
|
148
186
|
width: "16px",
|
|
149
187
|
},
|
|
150
|
-
}, children: _jsx(MoreHorizontal, { size: 16 }) }), children: label })),
|
|
188
|
+
}, children: _jsx(MoreHorizontal, { size: 16 }) }), children: label })), _jsxs(TextAreaRow, { children: [_jsx(StyledTextArea, Object.assign({ placeholder: textAreaPlaceholder || "Enter details about the move", "$minRows": textAreaMinRows, "$maxRows": textAreaMaxRows, "$hasError": hasError, value: textAreaValue, onChange: handleTextAreaChange }, textAreaProps)), _jsx(SelectBoxWrapper, { ref: selectBoxRef, children: _jsx(StyledSelectBox, Object.assign({ data: data, searchable: searchable, allowCustomValue: allowCustomValue, arrow: false, value: selectValue || undefined, onChange: handleSelectChange, hasError: hasError }, selectProps), selectKey) })] })] }));
|
|
151
189
|
}
|
|
152
|
-
|
|
153
|
-
export default
|
|
190
|
+
SelectableTextArea.displayName = "SelectableTextArea";
|
|
191
|
+
export default SelectableTextArea;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from "./SelectableTextArea";
|
package/dist/index.d.ts
CHANGED
|
@@ -14,8 +14,8 @@ export type { DropDownItem } from "./DropDownMenu";
|
|
|
14
14
|
export { default as DateInput } from "./DateInput";
|
|
15
15
|
export { default as TextArea } from "./TextArea";
|
|
16
16
|
export { default as TextAreaInput } from "./TextAreaInput";
|
|
17
|
-
export { default as
|
|
18
|
-
export type {
|
|
17
|
+
export { default as SelectableTextArea } from "./SelectableTextArea";
|
|
18
|
+
export type { SelectableTextAreaProps } from "./SelectableTextArea";
|
|
19
19
|
export { default as TagBox } from "./TagBox";
|
|
20
20
|
export type { TagBoxProps, TagboxOption } from "./TagBox";
|
|
21
21
|
export { default as FieldLabel } from "./FieldLabel";
|
package/dist/index.js
CHANGED
|
@@ -8,7 +8,7 @@ export { default as DropDownMenu } from "./DropDownMenu";
|
|
|
8
8
|
export { default as DateInput } from "./DateInput";
|
|
9
9
|
export { default as TextArea } from "./TextArea";
|
|
10
10
|
export { default as TextAreaInput } from "./TextAreaInput";
|
|
11
|
-
export { default as
|
|
11
|
+
export { default as SelectableTextArea } from "./SelectableTextArea";
|
|
12
12
|
export { default as TagBox } from "./TagBox";
|
|
13
13
|
export { default as FieldLabel } from "./FieldLabel";
|
|
14
14
|
export { default as Modal } from "./Modal";
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { default } from "./SearchableTextArea";
|