phx-react 1.3.1416 → 1.3.1417
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/cjs/components/SelectWithAction/SelectWithAction.d.ts +2 -2
- package/dist/cjs/components/SelectWithAction/SelectWithAction.js +84 -52
- package/dist/cjs/components/SelectWithAction/SelectWithAction.js.map +1 -1
- package/dist/esm/components/SelectWithAction/SelectWithAction.d.ts +2 -2
- package/dist/esm/components/SelectWithAction/SelectWithAction.js +74 -42
- package/dist/esm/components/SelectWithAction/SelectWithAction.js.map +1 -1
- package/package.json +1 -1
|
@@ -19,7 +19,7 @@ export interface PHXSelectWithActionProps {
|
|
|
19
19
|
suffix?: ReactNode;
|
|
20
20
|
placeholder?: string;
|
|
21
21
|
options: Array<SelectOption>;
|
|
22
|
-
|
|
22
|
+
value?: string;
|
|
23
23
|
search?: Search;
|
|
24
24
|
onChange?(value: string): void;
|
|
25
25
|
searchPlaceholder?: string;
|
|
@@ -35,4 +35,4 @@ export interface PHXSelectWithActionProps {
|
|
|
35
35
|
onClick(): void;
|
|
36
36
|
};
|
|
37
37
|
}
|
|
38
|
-
export declare function PHXSelectWithAction({ addNew, className, emptySearchState, emptyState, error,
|
|
38
|
+
export declare function PHXSelectWithAction({ addNew, className, emptySearchState, emptyState, error, helpText, label, loading, maxHeight, onChange, options, placeholder, search, searchPlaceholder, suffix, value: defaultValue, }: PHXSelectWithActionProps): React.JSX.Element;
|
|
@@ -3,45 +3,75 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.PHXSelectWithAction = PHXSelectWithAction;
|
|
5
5
|
var tslib_1 = require("tslib");
|
|
6
|
-
var react_1 = require("@headlessui/react");
|
|
7
6
|
var image_1 = tslib_1.__importDefault(require("next/image"));
|
|
8
|
-
var
|
|
7
|
+
var react_1 = require("react");
|
|
9
8
|
var pencil_icon_svg_1 = tslib_1.__importDefault(require("../../assets/icons/pencil-icon.svg"));
|
|
10
9
|
var plus_circle_icon_svg_1 = tslib_1.__importDefault(require("../../assets/icons/plus-circle-icon.svg"));
|
|
11
10
|
var search_icon_svg_1 = tslib_1.__importDefault(require("../../assets/icons/search-icon.svg"));
|
|
12
11
|
var chevron_down_icon_svg_1 = tslib_1.__importDefault(require("../../assets/icons/chevron-down-icon.svg"));
|
|
13
12
|
var useDebounce_1 = tslib_1.__importDefault(require("../Func/useDebounce"));
|
|
14
|
-
var
|
|
13
|
+
var react_2 = tslib_1.__importDefault(require("react"));
|
|
15
14
|
var types_1 = require("../types");
|
|
16
15
|
var IconLoading_1 = require("../../commons/IconLoading");
|
|
17
16
|
var Text_1 = require("../Text/Text");
|
|
18
17
|
var ADD_NEW_VALUE = 'ADD_NEW';
|
|
19
18
|
function PHXSelectWithAction(_a) {
|
|
20
|
-
var addNew = _a.addNew,
|
|
21
|
-
var
|
|
19
|
+
var addNew = _a.addNew, _b = _a.className, className = _b === void 0 ? '' : _b, emptySearchState = _a.emptySearchState, emptyState = _a.emptyState, error = _a.error, helpText = _a.helpText, label = _a.label, loading = _a.loading, _c = _a.maxHeight, maxHeight = _c === void 0 ? '300px' : _c, onChange = _a.onChange, options = _a.options, _d = _a.placeholder, placeholder = _d === void 0 ? 'Lựa chọn' : _d, search = _a.search, _e = _a.searchPlaceholder, searchPlaceholder = _e === void 0 ? 'Tìm kiếm' : _e, suffix = _a.suffix, defaultValue = _a.value;
|
|
20
|
+
var _f = (0, react_1.useState)(''), searchQuery = _f[0], setSearchQuery = _f[1];
|
|
21
|
+
var _g = (0, react_1.useState)(false), isOpen = _g[0], setIsOpen = _g[1];
|
|
22
|
+
var _h = (0, react_1.useState)(false), isLeaving = _h[0], setIsLeaving = _h[1];
|
|
22
23
|
var deferredQuery = (0, useDebounce_1.default)(searchQuery, 300);
|
|
23
24
|
var filteredOptions = options.filter(function (option) { return option.label.toLowerCase().includes(deferredQuery.toLowerCase()); });
|
|
24
|
-
(0,
|
|
25
|
+
var containerRef = (0, react_1.useRef)(null);
|
|
26
|
+
var inputRef = (0, react_1.useRef)(null);
|
|
27
|
+
(0, react_1.useEffect)(function () {
|
|
25
28
|
search === null || search === void 0 ? void 0 : search.handleFilter(deferredQuery);
|
|
26
29
|
}, [deferredQuery]);
|
|
27
|
-
(0,
|
|
30
|
+
(0, react_1.useEffect)(function () {
|
|
28
31
|
setSearchQuery((search === null || search === void 0 ? void 0 : search.value) || '');
|
|
29
32
|
}, [search]);
|
|
33
|
+
var handleClose = function () {
|
|
34
|
+
setIsLeaving(true);
|
|
35
|
+
setTimeout(function () {
|
|
36
|
+
setIsOpen(false);
|
|
37
|
+
setIsLeaving(false);
|
|
38
|
+
setSearchQuery('');
|
|
39
|
+
}, 100);
|
|
40
|
+
};
|
|
41
|
+
(0, react_1.useEffect)(function () {
|
|
42
|
+
var handleClickOutside = function (event) {
|
|
43
|
+
if (containerRef.current && !containerRef.current.contains(event.target)) {
|
|
44
|
+
handleClose();
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
if (isOpen) {
|
|
48
|
+
document.addEventListener('mousedown', handleClickOutside);
|
|
49
|
+
}
|
|
50
|
+
return function () {
|
|
51
|
+
document.removeEventListener('mousedown', handleClickOutside);
|
|
52
|
+
};
|
|
53
|
+
}, [isOpen]);
|
|
54
|
+
(0, react_1.useEffect)(function () {
|
|
55
|
+
if (isOpen && search && inputRef.current) {
|
|
56
|
+
inputRef.current.focus();
|
|
57
|
+
}
|
|
58
|
+
}, [isOpen, search]);
|
|
30
59
|
var selectedOption = options.find(function (opt) { return opt.value === defaultValue; });
|
|
31
60
|
var handleChange = function (option) {
|
|
32
61
|
if (option === ADD_NEW_VALUE) {
|
|
33
62
|
addNew === null || addNew === void 0 ? void 0 : addNew.onClick();
|
|
63
|
+
handleClose();
|
|
34
64
|
return;
|
|
35
65
|
}
|
|
36
66
|
if (option && typeof option !== 'string') {
|
|
37
67
|
onChange === null || onChange === void 0 ? void 0 : onChange(option.value);
|
|
38
|
-
|
|
68
|
+
handleClose();
|
|
39
69
|
}
|
|
40
70
|
};
|
|
41
71
|
var getEmptyState = function () {
|
|
42
72
|
if (loading) {
|
|
43
|
-
return (
|
|
44
|
-
|
|
73
|
+
return (react_2.default.createElement("div", { className: 'flex items-center justify-center' },
|
|
74
|
+
react_2.default.createElement(IconLoading_1.IconLoading, { color: 'bg-gray-50' })));
|
|
45
75
|
}
|
|
46
76
|
if (options.length === 0 && deferredQuery) {
|
|
47
77
|
return emptySearchState || "Kh\u00F4ng t\u00ECm th\u1EA5y ".concat(label.toLowerCase(), " n\u00E0o");
|
|
@@ -54,48 +84,50 @@ function PHXSelectWithAction(_a) {
|
|
|
54
84
|
}
|
|
55
85
|
return pencil_icon_svg_1.default;
|
|
56
86
|
};
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
87
|
+
var isOptionSelected = function (option) { return option.value === defaultValue; };
|
|
88
|
+
return (react_2.default.createElement("div", { ref: containerRef, className: (0, types_1.classNames)('relative w-full', className) },
|
|
89
|
+
react_2.default.createElement("div", { className: 'mb-1 flex items-center justify-between' },
|
|
90
|
+
react_2.default.createElement(Text_1.PHXText, null, label),
|
|
91
|
+
suffix && react_2.default.createElement("div", { className: 'text-sm font-medium' }, suffix)),
|
|
92
|
+
react_2.default.createElement("div", { className: 'relative' },
|
|
93
|
+
react_2.default.createElement("button", { className: (0, types_1.classNames)('border-input bg-background shadow-sm mt-1 flex w-full items-center justify-between rounded-lg border-[0.5px] border-gray-500 py-1.5 pl-3 pr-2 text-xs hover:bg-gray-50', defaultValue ? '' : 'text-muted-foreground', error ? 'border-red-800 bg-red-50 hover:bg-red-50 focus:border-red-800 focus:bg-red-50' : ''), onClick: function () { return setIsOpen(!isOpen); }, type: 'button' },
|
|
94
|
+
react_2.default.createElement("span", { className: 'truncate' }, (selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.label) || placeholder),
|
|
95
|
+
react_2.default.createElement(image_1.default, { alt: '', className: (0, types_1.classNames)(' shrink-0 transition-transform', isOpen ? 'rotate-180' : ''), height: 20,
|
|
96
|
+
// @ts-ignore
|
|
97
|
+
src: chevron_down_icon_svg_1.default, width: 20 })),
|
|
98
|
+
isOpen && (react_2.default.createElement("div", { className: (0, types_1.classNames)('border-border shadow-lg absolute z-50 mt-1 w-full rounded-lg border bg-white transition-opacity duration-100', isLeaving ? 'opacity-0' : 'opacity-100') },
|
|
99
|
+
search && (react_2.default.createElement("div", { className: 'border-border border-b p-3' },
|
|
100
|
+
react_2.default.createElement("div", { className: 'relative' },
|
|
101
|
+
react_2.default.createElement(image_1.default, { alt: '', className: 'text-muted-foreground pointer-events-none absolute left-3 top-1/2 -translate-y-1/2', height: 13,
|
|
68
102
|
// @ts-ignore
|
|
69
|
-
src:
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
react_3.default.createElement("div", { className: " ".concat(helpText ? 'block' : 'hidden') },
|
|
99
|
-
react_3.default.createElement(Text_1.PHXText, { as: 'div', tone: 'subdued' }, helpText))));
|
|
103
|
+
src: search_icon_svg_1.default, width: 13 }),
|
|
104
|
+
react_2.default.createElement("input", { ref: inputRef, className: 'shadow-sm w-full rounded-lg border-[0.5px] border-gray-500 py-1.5 pr-4 text-xs font-normal outline-none transition-colors hover:bg-gray-50 focus:border-gray-500 focus:bg-gray-50 focus:outline-none focus:outline-offset-1 focus:outline-indigo-500 focus:ring-transparent', onChange: function (e) { return setSearchQuery(e.target.value); }, placeholder: searchPlaceholder, style: { paddingLeft: '30px' }, type: 'text', value: searchQuery })))),
|
|
105
|
+
react_2.default.createElement("div", { className: 'scrollbar-thin scrollbar-track-transparent scrollbar-thumb-gray-300 hover:scrollbar-thumb-gray-400 overflow-y-auto', style: { maxHeight: maxHeight } },
|
|
106
|
+
addNew && (react_2.default.createElement("button", { className: (0, types_1.classNames)('border-border flex w-full cursor-pointer items-center gap-2 border-b px-4 py-3 text-sm transition-colors hover:bg-zinc-100'), onClick: function () { return handleChange(ADD_NEW_VALUE); }, type: 'button' },
|
|
107
|
+
react_2.default.createElement(image_1.default, { alt: '', height: 13, src: plus_circle_icon_svg_1.default, width: 13 }),
|
|
108
|
+
react_2.default.createElement(Text_1.PHXText, null, addNew.title))),
|
|
109
|
+
react_2.default.createElement("div", { className: ' p-2' }, filteredOptions.length > 0 ? (filteredOptions.map(function (option) {
|
|
110
|
+
var selected = isOptionSelected(option);
|
|
111
|
+
return (react_2.default.createElement("button", { key: option.value, className: (0, types_1.classNames)('group flex w-full cursor-pointer items-center justify-between rounded-md ', selected ? 'bg-zinc-200 font-semibold text-gray-900' : 'text-gray-900 hover:bg-zinc-100'), onClick: function () { return handleChange(option); }, type: 'button' },
|
|
112
|
+
react_2.default.createElement("div", { className: 'max-w-[90%] px-2 py-2.5 text-left transition-colors' },
|
|
113
|
+
react_2.default.createElement(Text_1.PHXText, null, option.label)),
|
|
114
|
+
react_2.default.createElement("div", { className: 'mr-1 flex h-8 w-8 items-center justify-center rounded-md hover:bg-gray-200' }, !!option.action && (react_2.default.createElement("div", { className: ' flex items-center opacity-0 transition-opacity group-hover:opacity-100 ', onClick: function (e) {
|
|
115
|
+
var _a;
|
|
116
|
+
e.stopPropagation();
|
|
117
|
+
(_a = option.action) === null || _a === void 0 ? void 0 : _a.onClick(option.value);
|
|
118
|
+
}, onKeyDown: function (e) {
|
|
119
|
+
var _a;
|
|
120
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
121
|
+
e.preventDefault();
|
|
122
|
+
(_a = option.action) === null || _a === void 0 ? void 0 : _a.onClick(option.value);
|
|
123
|
+
}
|
|
124
|
+
}, role: 'button', tabIndex: 0 },
|
|
125
|
+
react_2.default.createElement(image_1.default, { alt: '', height: 13, src: getIconItem(option.action.type), width: 13 }))))));
|
|
126
|
+
})) : (react_2.default.createElement("div", { className: ' px-3 py-8 text-center' },
|
|
127
|
+
react_2.default.createElement(Text_1.PHXText, { as: 'div' }, getEmptyState())))))))),
|
|
128
|
+
react_2.default.createElement("div", { className: "".concat(error ? 'mt-1 block' : 'hidden') },
|
|
129
|
+
react_2.default.createElement(Text_1.PHXText, { as: 'div', tone: 'error' }, error)),
|
|
130
|
+
react_2.default.createElement("div", { className: "".concat(helpText ? 'mt-1 block' : 'hidden') },
|
|
131
|
+
react_2.default.createElement(Text_1.PHXText, { as: 'div', tone: 'subdued' }, helpText))));
|
|
100
132
|
}
|
|
101
133
|
//# sourceMappingURL=SelectWithAction.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectWithAction.js","sourceRoot":"","sources":["../../../../src/components/SelectWithAction/SelectWithAction.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAA;;
|
|
1
|
+
{"version":3,"file":"SelectWithAction.js","sourceRoot":"","sources":["../../../../src/components/SelectWithAction/SelectWithAction.tsx"],"names":[],"mappings":"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"}
|
|
@@ -19,7 +19,7 @@ export interface PHXSelectWithActionProps {
|
|
|
19
19
|
suffix?: ReactNode;
|
|
20
20
|
placeholder?: string;
|
|
21
21
|
options: Array<SelectOption>;
|
|
22
|
-
|
|
22
|
+
value?: string;
|
|
23
23
|
search?: Search;
|
|
24
24
|
onChange?(value: string): void;
|
|
25
25
|
searchPlaceholder?: string;
|
|
@@ -35,4 +35,4 @@ export interface PHXSelectWithActionProps {
|
|
|
35
35
|
onClick(): void;
|
|
36
36
|
};
|
|
37
37
|
}
|
|
38
|
-
export declare function PHXSelectWithAction({ addNew, className, emptySearchState, emptyState, error,
|
|
38
|
+
export declare function PHXSelectWithAction({ addNew, className, emptySearchState, emptyState, error, helpText, label, loading, maxHeight, onChange, options, placeholder, search, searchPlaceholder, suffix, value: defaultValue, }: PHXSelectWithActionProps): React.JSX.Element;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { Combobox, Transition } from '@headlessui/react';
|
|
3
2
|
import Image from 'next/image';
|
|
4
|
-
import { useEffect, useState } from 'react';
|
|
3
|
+
import { useEffect, useRef, useState } from 'react';
|
|
5
4
|
import PencilIcon from '../../assets/icons/pencil-icon.svg';
|
|
6
5
|
import PlusIcon from '../../assets/icons/plus-circle-icon.svg';
|
|
7
6
|
import SearchIcon from '../../assets/icons/search-icon.svg';
|
|
@@ -13,25 +12,56 @@ import { IconLoading } from '../../commons/IconLoading';
|
|
|
13
12
|
import { PHXText } from '../Text/Text';
|
|
14
13
|
var ADD_NEW_VALUE = 'ADD_NEW';
|
|
15
14
|
export function PHXSelectWithAction(_a) {
|
|
16
|
-
var addNew = _a.addNew,
|
|
17
|
-
var
|
|
15
|
+
var addNew = _a.addNew, _b = _a.className, className = _b === void 0 ? '' : _b, emptySearchState = _a.emptySearchState, emptyState = _a.emptyState, error = _a.error, helpText = _a.helpText, label = _a.label, loading = _a.loading, _c = _a.maxHeight, maxHeight = _c === void 0 ? '300px' : _c, onChange = _a.onChange, options = _a.options, _d = _a.placeholder, placeholder = _d === void 0 ? 'Lựa chọn' : _d, search = _a.search, _e = _a.searchPlaceholder, searchPlaceholder = _e === void 0 ? 'Tìm kiếm' : _e, suffix = _a.suffix, defaultValue = _a.value;
|
|
16
|
+
var _f = useState(''), searchQuery = _f[0], setSearchQuery = _f[1];
|
|
17
|
+
var _g = useState(false), isOpen = _g[0], setIsOpen = _g[1];
|
|
18
|
+
var _h = useState(false), isLeaving = _h[0], setIsLeaving = _h[1];
|
|
18
19
|
var deferredQuery = PHXUseDebounce(searchQuery, 300);
|
|
19
20
|
var filteredOptions = options.filter(function (option) { return option.label.toLowerCase().includes(deferredQuery.toLowerCase()); });
|
|
21
|
+
var containerRef = useRef(null);
|
|
22
|
+
var inputRef = useRef(null);
|
|
20
23
|
useEffect(function () {
|
|
21
24
|
search === null || search === void 0 ? void 0 : search.handleFilter(deferredQuery);
|
|
22
25
|
}, [deferredQuery]);
|
|
23
26
|
useEffect(function () {
|
|
24
27
|
setSearchQuery((search === null || search === void 0 ? void 0 : search.value) || '');
|
|
25
28
|
}, [search]);
|
|
29
|
+
var handleClose = function () {
|
|
30
|
+
setIsLeaving(true);
|
|
31
|
+
setTimeout(function () {
|
|
32
|
+
setIsOpen(false);
|
|
33
|
+
setIsLeaving(false);
|
|
34
|
+
setSearchQuery('');
|
|
35
|
+
}, 100);
|
|
36
|
+
};
|
|
37
|
+
useEffect(function () {
|
|
38
|
+
var handleClickOutside = function (event) {
|
|
39
|
+
if (containerRef.current && !containerRef.current.contains(event.target)) {
|
|
40
|
+
handleClose();
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
if (isOpen) {
|
|
44
|
+
document.addEventListener('mousedown', handleClickOutside);
|
|
45
|
+
}
|
|
46
|
+
return function () {
|
|
47
|
+
document.removeEventListener('mousedown', handleClickOutside);
|
|
48
|
+
};
|
|
49
|
+
}, [isOpen]);
|
|
50
|
+
useEffect(function () {
|
|
51
|
+
if (isOpen && search && inputRef.current) {
|
|
52
|
+
inputRef.current.focus();
|
|
53
|
+
}
|
|
54
|
+
}, [isOpen, search]);
|
|
26
55
|
var selectedOption = options.find(function (opt) { return opt.value === defaultValue; });
|
|
27
56
|
var handleChange = function (option) {
|
|
28
57
|
if (option === ADD_NEW_VALUE) {
|
|
29
58
|
addNew === null || addNew === void 0 ? void 0 : addNew.onClick();
|
|
59
|
+
handleClose();
|
|
30
60
|
return;
|
|
31
61
|
}
|
|
32
62
|
if (option && typeof option !== 'string') {
|
|
33
63
|
onChange === null || onChange === void 0 ? void 0 : onChange(option.value);
|
|
34
|
-
|
|
64
|
+
handleClose();
|
|
35
65
|
}
|
|
36
66
|
};
|
|
37
67
|
var getEmptyState = function () {
|
|
@@ -50,48 +80,50 @@ export function PHXSelectWithAction(_a) {
|
|
|
50
80
|
}
|
|
51
81
|
return PencilIcon;
|
|
52
82
|
};
|
|
53
|
-
|
|
83
|
+
var isOptionSelected = function (option) { return option.value === defaultValue; };
|
|
84
|
+
return (React.createElement("div", { ref: containerRef, className: classNames('relative w-full', className) },
|
|
54
85
|
React.createElement("div", { className: 'mb-1 flex items-center justify-between' },
|
|
55
86
|
React.createElement(PHXText, null, label),
|
|
56
87
|
suffix && React.createElement("div", { className: 'text-sm font-medium' }, suffix)),
|
|
57
|
-
React.createElement(
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
React.createElement(
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
88
|
+
React.createElement("div", { className: 'relative' },
|
|
89
|
+
React.createElement("button", { className: classNames('border-input bg-background shadow-sm mt-1 flex w-full items-center justify-between rounded-lg border-[0.5px] border-gray-500 py-1.5 pl-3 pr-2 text-xs hover:bg-gray-50', defaultValue ? '' : 'text-muted-foreground', error ? 'border-red-800 bg-red-50 hover:bg-red-50 focus:border-red-800 focus:bg-red-50' : ''), onClick: function () { return setIsOpen(!isOpen); }, type: 'button' },
|
|
90
|
+
React.createElement("span", { className: 'truncate' }, (selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.label) || placeholder),
|
|
91
|
+
React.createElement(Image, { alt: '', className: classNames(' shrink-0 transition-transform', isOpen ? 'rotate-180' : ''), height: 20,
|
|
92
|
+
// @ts-ignore
|
|
93
|
+
src: ChevronDownIcon, width: 20 })),
|
|
94
|
+
isOpen && (React.createElement("div", { className: classNames('border-border shadow-lg absolute z-50 mt-1 w-full rounded-lg border bg-white transition-opacity duration-100', isLeaving ? 'opacity-0' : 'opacity-100') },
|
|
95
|
+
search && (React.createElement("div", { className: 'border-border border-b p-3' },
|
|
96
|
+
React.createElement("div", { className: 'relative' },
|
|
97
|
+
React.createElement(Image, { alt: '', className: 'text-muted-foreground pointer-events-none absolute left-3 top-1/2 -translate-y-1/2', height: 13,
|
|
64
98
|
// @ts-ignore
|
|
65
|
-
src:
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
React.createElement("div", { className: '
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
}),
|
|
92
|
-
React.createElement("div", { className: " ".concat(error ? 'block' : 'hidden') },
|
|
99
|
+
src: SearchIcon, width: 13 }),
|
|
100
|
+
React.createElement("input", { ref: inputRef, className: 'shadow-sm w-full rounded-lg border-[0.5px] border-gray-500 py-1.5 pr-4 text-xs font-normal outline-none transition-colors hover:bg-gray-50 focus:border-gray-500 focus:bg-gray-50 focus:outline-none focus:outline-offset-1 focus:outline-indigo-500 focus:ring-transparent', onChange: function (e) { return setSearchQuery(e.target.value); }, placeholder: searchPlaceholder, style: { paddingLeft: '30px' }, type: 'text', value: searchQuery })))),
|
|
101
|
+
React.createElement("div", { className: 'scrollbar-thin scrollbar-track-transparent scrollbar-thumb-gray-300 hover:scrollbar-thumb-gray-400 overflow-y-auto', style: { maxHeight: maxHeight } },
|
|
102
|
+
addNew && (React.createElement("button", { className: classNames('border-border flex w-full cursor-pointer items-center gap-2 border-b px-4 py-3 text-sm transition-colors hover:bg-zinc-100'), onClick: function () { return handleChange(ADD_NEW_VALUE); }, type: 'button' },
|
|
103
|
+
React.createElement(Image, { alt: '', height: 13, src: PlusIcon, width: 13 }),
|
|
104
|
+
React.createElement(PHXText, null, addNew.title))),
|
|
105
|
+
React.createElement("div", { className: ' p-2' }, filteredOptions.length > 0 ? (filteredOptions.map(function (option) {
|
|
106
|
+
var selected = isOptionSelected(option);
|
|
107
|
+
return (React.createElement("button", { key: option.value, className: classNames('group flex w-full cursor-pointer items-center justify-between rounded-md ', selected ? 'bg-zinc-200 font-semibold text-gray-900' : 'text-gray-900 hover:bg-zinc-100'), onClick: function () { return handleChange(option); }, type: 'button' },
|
|
108
|
+
React.createElement("div", { className: 'max-w-[90%] px-2 py-2.5 text-left transition-colors' },
|
|
109
|
+
React.createElement(PHXText, null, option.label)),
|
|
110
|
+
React.createElement("div", { className: 'mr-1 flex h-8 w-8 items-center justify-center rounded-md hover:bg-gray-200' }, !!option.action && (React.createElement("div", { className: ' flex items-center opacity-0 transition-opacity group-hover:opacity-100 ', onClick: function (e) {
|
|
111
|
+
var _a;
|
|
112
|
+
e.stopPropagation();
|
|
113
|
+
(_a = option.action) === null || _a === void 0 ? void 0 : _a.onClick(option.value);
|
|
114
|
+
}, onKeyDown: function (e) {
|
|
115
|
+
var _a;
|
|
116
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
117
|
+
e.preventDefault();
|
|
118
|
+
(_a = option.action) === null || _a === void 0 ? void 0 : _a.onClick(option.value);
|
|
119
|
+
}
|
|
120
|
+
}, role: 'button', tabIndex: 0 },
|
|
121
|
+
React.createElement(Image, { alt: '', height: 13, src: getIconItem(option.action.type), width: 13 }))))));
|
|
122
|
+
})) : (React.createElement("div", { className: ' px-3 py-8 text-center' },
|
|
123
|
+
React.createElement(PHXText, { as: 'div' }, getEmptyState())))))))),
|
|
124
|
+
React.createElement("div", { className: "".concat(error ? 'mt-1 block' : 'hidden') },
|
|
93
125
|
React.createElement(PHXText, { as: 'div', tone: 'error' }, error)),
|
|
94
|
-
React.createElement("div", { className: "
|
|
126
|
+
React.createElement("div", { className: "".concat(helpText ? 'mt-1 block' : 'hidden') },
|
|
95
127
|
React.createElement(PHXText, { as: 'div', tone: 'subdued' }, helpText))));
|
|
96
128
|
}
|
|
97
129
|
//# sourceMappingURL=SelectWithAction.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectWithAction.js","sourceRoot":"","sources":["../../../../src/components/SelectWithAction/SelectWithAction.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,OAAO,
|
|
1
|
+
{"version":3,"file":"SelectWithAction.js","sourceRoot":"","sources":["../../../../src/components/SelectWithAction/SelectWithAction.tsx"],"names":[],"mappings":"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"}
|