@scaleflex/widget-common 4.4.0 → 4.5.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/CHANGELOG.md +8 -0
- package/dist/style.css +1126 -0
- package/dist/style.min.css +1 -0
- package/lib/ApprovalStatus/ApprovalStatus.styled.js +21 -0
- package/lib/ApprovalStatus/index.js +104 -0
- package/lib/AssetPreview.js +53 -0
- package/lib/AutoSuggest.js +166 -0
- package/lib/Avatar/Avatar.styled.js +25 -0
- package/lib/Avatar/index.js +83 -0
- package/lib/AvatarWithStatus/AvatarWithStatus.styled.js +12 -0
- package/lib/AvatarWithStatus/index.js +30 -0
- package/lib/BackButton.js +46 -0
- package/lib/BackdropOverlay.js +77 -0
- package/lib/BadgeButton.js +35 -0
- package/lib/BaseButton.js +36 -0
- package/lib/Button.js +29 -0
- package/lib/Carousel/Carousel.styled.js +19 -0
- package/lib/Carousel/index.js +136 -0
- package/lib/Checkbox.js +55 -0
- package/lib/CloseButton.js +46 -0
- package/lib/ColorPicker/ColorPicker.styled.js +29 -0
- package/lib/ColorPicker/index.js +117 -0
- package/lib/ColorPickerModal/ColorPickerModal.styled.js +17 -0
- package/lib/ColorPickerModal/index.js +103 -0
- package/lib/DatePicker/MyDatePicker.js +350 -0
- package/lib/DatePicker/index.js +1 -0
- package/lib/DropFilesWindow.js +45 -0
- package/lib/FilterItem/FilterItem.styled.js +42 -0
- package/lib/FilterItem/index.js +48 -0
- package/lib/FilterPopup/FilterPopup.styled.js +16 -0
- package/lib/FilterPopup/index.js +85 -0
- package/lib/FormControl.js +25 -0
- package/lib/FormGroup.js +18 -0
- package/lib/FormHelperText.js +29 -0
- package/lib/IconLabeledButton.js +32 -0
- package/lib/Image/Image.styled.js +16 -0
- package/lib/Image/index.js +95 -0
- package/lib/ImagePreview/ImagePreview.styled.js +19 -0
- package/lib/ImagePreview/index.js +198 -0
- package/lib/InputAndLabel.js +77 -0
- package/lib/InputGroupTime.js +6 -0
- package/lib/InputLabel.js +18 -0
- package/lib/ItemButtonOverlay/ItemButtonOverlay.styled.js +33 -0
- package/lib/ItemButtonOverlay/index.js +23 -0
- package/lib/ItemHoverTopOptions.js +58 -0
- package/lib/LoaderView/LoaderView.styled.js +37 -0
- package/lib/LoaderView/index.js +32 -0
- package/lib/MetaData/FilterMetadataFields.js +115 -0
- package/lib/MetaData/FilterMetadataFields.styled.js +16 -0
- package/lib/MetaData/MetaDataField.js +246 -0
- package/lib/MetaData/MetaDataFieldTypes/MetaDataFieldBooleanType.js +36 -0
- package/lib/MetaData/MetaDataFieldTypes/MetaDataFieldDateType.js +53 -0
- package/lib/MetaData/MetaDataFieldTypes/MetaDataFieldMultiSelectType.js +71 -0
- package/lib/MetaData/MetaDataFieldTypes/MetaDataFieldNumericType.js +45 -0
- package/lib/MetaData/MetaDataFieldTypes/MetaDataFieldSelectType.js +69 -0
- package/lib/MetaData/MetaDataFieldTypes/MetaDataFieldTagsType.js +143 -0
- package/lib/MetaData/MetaDataFieldTypes/MetaDataFieldTextType.js +42 -0
- package/lib/MetaData/MetaDataFieldTypes/MetaDataFieldTextareaType.js +72 -0
- package/lib/MetaData/MetaDataFieldTypes/MetaDataFieldTypes.styled.js +57 -0
- package/lib/MetaData/MetaDataFieldTypes/MetadataAttachmentsFieldType/AttachmentsAssetsMetadataAccordion.styled.js +95 -0
- package/lib/MetaData/MetaDataFieldTypes/MetadataAttachmentsFieldType/MetadataAttachmentsAction.js +188 -0
- package/lib/MetaData/MetaDataFieldTypes/MetadataAttachmentsFieldType/MetadataAttachmentsFieldType.constants.js +48 -0
- package/lib/MetaData/MetaDataFieldTypes/MetadataAttachmentsFieldType/MetadataAttachmentsInfo.js +93 -0
- package/lib/MetaData/MetaDataFieldTypes/MetadataAttachmentsFieldType/index.js +114 -0
- package/lib/MetaData/MetaDataFieldTypes/MetadataFieldUriType.js +71 -0
- package/lib/MetaData/MetaDataFieldTypes/MetadataGeoPointField/MetadataGeoPointField.styled.js +8 -0
- package/lib/MetaData/MetaDataFieldTypes/MetadataGeoPointField/constants.js +10 -0
- package/lib/MetaData/MetaDataFieldTypes/MetadataGeoPointField/index.js +135 -0
- package/lib/MetaData/MetaDataFieldTypes/index.js +9 -0
- package/lib/MetaData/MetaDataFieldTypes.hooks.js +53 -0
- package/lib/OverlayCard/OverlayCard.styled.js +8 -0
- package/lib/OverlayCard/index.js +28 -0
- package/lib/PoweredBy.js +12 -0
- package/lib/Radiobox.js +63 -0
- package/lib/RegionalVariantsFilters/RegionalVariantFilters.styled.js +17 -0
- package/lib/RegionalVariantsFilters/index.js +160 -0
- package/lib/SVGUrlToElement.js +73 -0
- package/lib/SearchGroup/SearchGroup.styled.js +93 -0
- package/lib/SearchGroup/index.js +293 -0
- package/lib/Spinner.js +40 -0
- package/lib/SuggestedSelectInput/SuggestedSelectInput.styled.js +57 -0
- package/lib/SuggestedSelectInput/index.js +238 -0
- package/lib/SuggestedTagsInput/SuggestedTagsInput.js +295 -0
- package/lib/SuggestedTagsInput/SuggestedTagsInput.styled.js +83 -0
- package/lib/SuggestedTagsInput/SuggestedTagsInput.utils.js +15 -0
- package/lib/SuggestedTagsInput/SuggestedTagsInputSkeleton.js +14 -0
- package/lib/Tabs.js +62 -0
- package/lib/ToggleButton/ToggleButton.styled.js +16 -0
- package/lib/ToggleButton/index.js +16 -0
- package/lib/Transitions/SlideTransition.js +24 -0
- package/lib/Transitions/TransitionWrapper.js +83 -0
- package/lib/Transitions/Transitions.styled.js +8 -0
- package/lib/Transitions/index.js +2 -0
- package/lib/Typography/Typography.js +47 -0
- package/lib/Typography/Typography.mixin.js +46 -0
- package/lib/Typography/Typography.styled.js +18 -0
- package/lib/Typography/index.js +3 -0
- package/lib/Typography/types/index.js +1 -0
- package/lib/Typography/types/variant.js +9 -0
- package/lib/UploadFileFloatyLabel/UploadFileFloatyLabel.mixin.js +23 -0
- package/lib/UploadFileFloatyLabel/UploadFileFloatyLabel.styled.js +24 -0
- package/lib/UploadFileFloatyLabel/index.js +12 -0
- package/lib/UsersAutocomplete/Tag.js +25 -0
- package/lib/UsersAutocomplete/Tag.styled.js +35 -0
- package/lib/UsersAutocomplete/UsersAutocomplete.styled.js +94 -0
- package/lib/UsersAutocomplete/index.js +303 -0
- package/lib/VirtualGrid/VirtualGrid.styled.js +33 -0
- package/lib/VirtualGrid/VirtualGrid.utils.js +38 -0
- package/lib/VirtualGrid/VirtualGridItem.js +15 -0
- package/lib/VirtualGrid/index.js +252 -0
- package/lib/VirtualList/VirtualListItem.js +14 -0
- package/lib/VirtualList/index.js +105 -0
- package/lib/hooks/index.js +4 -0
- package/lib/hooks/useDebounce.js +24 -0
- package/lib/hooks/useInputWithLocaleNumber.js +115 -0
- package/lib/hooks/useIsUnMountedRef.js +12 -0
- package/lib/hooks/useKeyboardNavigation.js +60 -0
- package/lib/hooks/useUpdateEffect.js +19 -0
- package/lib/index.js +36 -0
- package/package.json +4 -4
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
2
|
+
var _excluded = ["i18n", "values", "sortedOptions", "onChange", "style", "isBulkEdit", "size", "tagsFieldMaxWidth"];
|
|
3
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
4
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
5
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
6
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
7
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
8
|
+
function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
|
|
9
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
10
|
+
function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
|
|
11
|
+
function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
|
|
12
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
13
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
14
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
15
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
16
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
17
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
18
|
+
function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
|
|
19
|
+
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
|
|
20
|
+
import { useState, useRef, useEffect, useMemo } from 'react';
|
|
21
|
+
import { EllipsedText, Popper, TextWithHighlights } from '@scaleflex/ui/core';
|
|
22
|
+
import { NoResult } from '@scaleflex/icons';
|
|
23
|
+
import { useKeyboardNavigation } from '../hooks';
|
|
24
|
+
import Styled from './SuggestedSelectInput.styled';
|
|
25
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
26
|
+
var SuggestedSelectInput = function SuggestedSelectInput(_ref) {
|
|
27
|
+
var _inputListRef$current;
|
|
28
|
+
var i18n = _ref.i18n,
|
|
29
|
+
_ref$values = _ref.values,
|
|
30
|
+
values = _ref$values === void 0 ? [] : _ref$values,
|
|
31
|
+
sortedOptions = _ref.sortedOptions,
|
|
32
|
+
onChange = _ref.onChange,
|
|
33
|
+
style = _ref.style,
|
|
34
|
+
isBulkEdit = _ref.isBulkEdit,
|
|
35
|
+
_ref$size = _ref.size,
|
|
36
|
+
size = _ref$size === void 0 ? 'md' : _ref$size,
|
|
37
|
+
tagsFieldMaxWidth = _ref.tagsFieldMaxWidth,
|
|
38
|
+
rest = _objectWithoutProperties(_ref, _excluded);
|
|
39
|
+
var inputListRef = useRef(null);
|
|
40
|
+
var _useState = useState(''),
|
|
41
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
42
|
+
searchValue = _useState2[0],
|
|
43
|
+
setSearchValue = _useState2[1];
|
|
44
|
+
var _useState3 = useState(null),
|
|
45
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
46
|
+
anchorEl = _useState4[0],
|
|
47
|
+
setAnchorEl = _useState4[1];
|
|
48
|
+
var _useState5 = useState(sortedOptions !== null && sortedOptions !== void 0 ? sortedOptions : []),
|
|
49
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
50
|
+
selectOptions = _useState6[0],
|
|
51
|
+
setSelectOptions = _useState6[1];
|
|
52
|
+
var _useState7 = useState([]),
|
|
53
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
54
|
+
filteredOptionsList = _useState8[0],
|
|
55
|
+
setFilteredOptionsList = _useState8[1];
|
|
56
|
+
var toLowerCase = function toLowerCase() {
|
|
57
|
+
var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
58
|
+
return value.toLowerCase().trim();
|
|
59
|
+
};
|
|
60
|
+
var tags = sortedOptions.filter(function (_ref2) {
|
|
61
|
+
var id = _ref2.id;
|
|
62
|
+
return values.includes(id);
|
|
63
|
+
});
|
|
64
|
+
var tagsLabels = tags.map(function (_ref3) {
|
|
65
|
+
var label = _ref3.label;
|
|
66
|
+
return label;
|
|
67
|
+
});
|
|
68
|
+
var options = useMemo(function () {
|
|
69
|
+
return searchValue.length ? filteredOptionsList : selectOptions;
|
|
70
|
+
}, [searchValue, filteredOptionsList, selectOptions]);
|
|
71
|
+
var _useKeyboardNavigatio = useKeyboardNavigation({
|
|
72
|
+
items: options,
|
|
73
|
+
onSelectItem: selectOption,
|
|
74
|
+
onEscape: closeMenu
|
|
75
|
+
}),
|
|
76
|
+
itemRefs = _useKeyboardNavigatio.itemRefs,
|
|
77
|
+
setFocusedIndex = _useKeyboardNavigatio.setFocusedIndex,
|
|
78
|
+
handleKeyDown = _useKeyboardNavigatio.handleKeyDown;
|
|
79
|
+
var handleSearch = function handleSearch(event) {
|
|
80
|
+
var searchInputValue = event.target.value;
|
|
81
|
+
var searchResults = selectOptions.filter(function (_ref4) {
|
|
82
|
+
var label = _ref4.label;
|
|
83
|
+
return toLowerCase(label).includes(toLowerCase(searchInputValue));
|
|
84
|
+
});
|
|
85
|
+
setFilteredOptionsList(searchResults);
|
|
86
|
+
setSearchValue(searchInputValue);
|
|
87
|
+
handleFocus();
|
|
88
|
+
};
|
|
89
|
+
var onRemove = function onRemove(id) {
|
|
90
|
+
var nextValues = [];
|
|
91
|
+
tags.forEach(function (tag, index) {
|
|
92
|
+
if (index !== id) {
|
|
93
|
+
nextValues.push(tag.id);
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
var options = sortedOptions.filter(function (_ref5) {
|
|
97
|
+
var optionId = _ref5.id;
|
|
98
|
+
return !nextValues.includes(optionId);
|
|
99
|
+
});
|
|
100
|
+
setSelectOptions(options);
|
|
101
|
+
onChange(nextValues);
|
|
102
|
+
};
|
|
103
|
+
function closeMenu() {
|
|
104
|
+
setAnchorEl(null);
|
|
105
|
+
setFocusedIndex(-1);
|
|
106
|
+
}
|
|
107
|
+
function selectOption() {
|
|
108
|
+
var _ref6 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
109
|
+
optionId = _ref6.id;
|
|
110
|
+
var nextOptions = _toConsumableArray(values);
|
|
111
|
+
var nextOptionIndex = nextOptions.findIndex(function (id) {
|
|
112
|
+
return id === optionId;
|
|
113
|
+
});
|
|
114
|
+
var filteredOption = selectOptions.filter(function (_ref7) {
|
|
115
|
+
var id = _ref7.id;
|
|
116
|
+
return id !== optionId;
|
|
117
|
+
});
|
|
118
|
+
if (nextOptionIndex !== -1) {
|
|
119
|
+
nextOptions.splice(nextOptionIndex, 1);
|
|
120
|
+
} else {
|
|
121
|
+
nextOptions.push(optionId);
|
|
122
|
+
}
|
|
123
|
+
setSelectOptions(filteredOption);
|
|
124
|
+
setSearchValue('');
|
|
125
|
+
onChange(nextOptions);
|
|
126
|
+
closeMenu();
|
|
127
|
+
}
|
|
128
|
+
var selectAllHandler = function selectAllHandler() {
|
|
129
|
+
onChange(sortedOptions.map(function (_ref8) {
|
|
130
|
+
var id = _ref8.id;
|
|
131
|
+
return id;
|
|
132
|
+
}));
|
|
133
|
+
setSelectOptions([]);
|
|
134
|
+
};
|
|
135
|
+
var clearAllHandler = function clearAllHandler() {
|
|
136
|
+
onChange([]);
|
|
137
|
+
setSelectOptions(sortedOptions);
|
|
138
|
+
setSearchValue('');
|
|
139
|
+
};
|
|
140
|
+
var onAdd = function onAdd(optionLabel) {
|
|
141
|
+
if (!searchValue) return;
|
|
142
|
+
var existOption = selectOptions.find(function (_ref9) {
|
|
143
|
+
var label = _ref9.label;
|
|
144
|
+
return toLowerCase(label) === toLowerCase(optionLabel);
|
|
145
|
+
});
|
|
146
|
+
if (existOption) {
|
|
147
|
+
selectOption(existOption.id);
|
|
148
|
+
}
|
|
149
|
+
};
|
|
150
|
+
var handleFocus = function handleFocus() {
|
|
151
|
+
setAnchorEl(inputListRef.current);
|
|
152
|
+
};
|
|
153
|
+
useEffect(function () {
|
|
154
|
+
if (values.length) {
|
|
155
|
+
var filteredOptions = sortedOptions.filter(function (_ref10) {
|
|
156
|
+
var id = _ref10.id;
|
|
157
|
+
return !values.includes(id);
|
|
158
|
+
});
|
|
159
|
+
setSelectOptions(filteredOptions);
|
|
160
|
+
}
|
|
161
|
+
}, [values]);
|
|
162
|
+
var renderOptions = function renderOptions() {
|
|
163
|
+
if (!options.length) {
|
|
164
|
+
return /*#__PURE__*/_jsx(Styled.PlaceholderWrapper, {
|
|
165
|
+
icon: /*#__PURE__*/_jsx(NoResult, {
|
|
166
|
+
size: 120,
|
|
167
|
+
height: "50"
|
|
168
|
+
}),
|
|
169
|
+
desc: i18n('placeholderNoOptions')
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
return options.map(function (_ref11, index) {
|
|
173
|
+
var label = _ref11.label,
|
|
174
|
+
id = _ref11.id;
|
|
175
|
+
return /*#__PURE__*/_jsx(Styled.Option, {
|
|
176
|
+
tabIndex: 0,
|
|
177
|
+
ref: function ref(element) {
|
|
178
|
+
return itemRefs.current[index] = element;
|
|
179
|
+
},
|
|
180
|
+
onClick: function onClick() {
|
|
181
|
+
return selectOption({
|
|
182
|
+
id: id
|
|
183
|
+
});
|
|
184
|
+
},
|
|
185
|
+
onKeyDown: handleKeyDown,
|
|
186
|
+
children: /*#__PURE__*/_jsx(EllipsedText, {
|
|
187
|
+
maxLinesCount: 1,
|
|
188
|
+
children: /*#__PURE__*/_jsx(TextWithHighlights, {
|
|
189
|
+
text: label || '',
|
|
190
|
+
highlightText: searchValue || ''
|
|
191
|
+
})
|
|
192
|
+
})
|
|
193
|
+
}, id);
|
|
194
|
+
});
|
|
195
|
+
};
|
|
196
|
+
return /*#__PURE__*/_jsx(Styled.Tags, {
|
|
197
|
+
tagsFieldMaxWidth: tagsFieldMaxWidth,
|
|
198
|
+
children: /*#__PURE__*/_jsxs(Styled.TagsBody, {
|
|
199
|
+
children: [/*#__PURE__*/_jsx(Styled.TagField, _objectSpread(_objectSpread({}, rest), {}, {
|
|
200
|
+
ref: inputListRef,
|
|
201
|
+
tags: tagsLabels,
|
|
202
|
+
value: searchValue,
|
|
203
|
+
appliedValue: searchValue,
|
|
204
|
+
onChange: handleSearch,
|
|
205
|
+
onAdd: onAdd,
|
|
206
|
+
onClick: handleFocus,
|
|
207
|
+
onRemove: onRemove,
|
|
208
|
+
onFocus: handleFocus,
|
|
209
|
+
onClear: clearAllHandler,
|
|
210
|
+
onGenerate: selectAllHandler,
|
|
211
|
+
placeholder: i18n('placeholderSelectOption'),
|
|
212
|
+
showGenerateTagsButton: !!values.length,
|
|
213
|
+
generateTagsButtonLabel: i18n('mutualizedSelectAllButton'),
|
|
214
|
+
clearTagsButtonLabel: i18n('mutualizedClearAllButton'),
|
|
215
|
+
fullWidth: true,
|
|
216
|
+
onKeyDown: handleKeyDown,
|
|
217
|
+
size: size,
|
|
218
|
+
placeholderAlwaysVisible: true,
|
|
219
|
+
hideCopyIcon: true,
|
|
220
|
+
style: style
|
|
221
|
+
})), /*#__PURE__*/_jsx(Popper, {
|
|
222
|
+
open: !!anchorEl,
|
|
223
|
+
anchorEl: anchorEl,
|
|
224
|
+
overlay: true,
|
|
225
|
+
onClose: closeMenu,
|
|
226
|
+
onClick: closeMenu,
|
|
227
|
+
position: "bottom-start",
|
|
228
|
+
children: /*#__PURE__*/_jsx(Styled.OptionsWrapper, {
|
|
229
|
+
style: {
|
|
230
|
+
width: (_inputListRef$current = inputListRef.current) === null || _inputListRef$current === void 0 ? void 0 : _inputListRef$current.offsetWidth
|
|
231
|
+
},
|
|
232
|
+
children: renderOptions()
|
|
233
|
+
})
|
|
234
|
+
})]
|
|
235
|
+
})
|
|
236
|
+
});
|
|
237
|
+
};
|
|
238
|
+
export default SuggestedSelectInput;
|
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
2
|
+
var _excluded = ["i18n", "values", "handleAdd", "isItemCard", "generateTags", "isLoading", "isFetching", "notSuggestedTagsList", "suggestedTagsList", "filteredTagsList", "setFilteredTagsList", "config", "onChangeSearchQuery", "onRemove", "style", "isMetadataGeneralSection", "isBulkEdit", "isMetadataFilter", "showGenerateTagsButton", "size", "tagsFieldMaxWidth", "disableOnEnter", "field"],
|
|
3
|
+
_excluded2 = ["name"];
|
|
4
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
5
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
6
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
7
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
8
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
9
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
10
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
11
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
12
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
13
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
14
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
15
|
+
function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
|
|
16
|
+
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
|
|
17
|
+
import { useCallback, useState, useRef, useEffect, useMemo } from 'react';
|
|
18
|
+
import { NoTags, Success } from '@scaleflex/icons';
|
|
19
|
+
import { Label, TextWithHighlights } from '@scaleflex/ui/core';
|
|
20
|
+
import { PC } from '@scaleflex/widget-common';
|
|
21
|
+
import { useTheme } from '@scaleflex/ui/theme/hooks';
|
|
22
|
+
import { NoResults2 } from '@scaleflex/widget-icons/lib';
|
|
23
|
+
// TODO: Not allowed to import from explorer while u are in common, we should move this component to common or replace it
|
|
24
|
+
import FilterOptions from '@scaleflex/widget-explorer/lib/components/Filters/Groups/common/FilterOptions';
|
|
25
|
+
import { useDebounce } from '../hooks';
|
|
26
|
+
import { getTagsPlaceholderDesc } from './SuggestedTagsInput.utils';
|
|
27
|
+
import SuggestedTagsInputSkeleton from './SuggestedTagsInputSkeleton';
|
|
28
|
+
import Styled from './SuggestedTagsInput.styled';
|
|
29
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
30
|
+
var SuggestedTagsInput = function SuggestedTagsInput(_ref) {
|
|
31
|
+
var i18n = _ref.i18n,
|
|
32
|
+
_ref$values = _ref.values,
|
|
33
|
+
values = _ref$values === void 0 ? [] : _ref$values,
|
|
34
|
+
_ref$handleAdd = _ref.handleAdd,
|
|
35
|
+
handleAdd = _ref$handleAdd === void 0 ? function () {} : _ref$handleAdd,
|
|
36
|
+
isItemCard = _ref.isItemCard,
|
|
37
|
+
generateTags = _ref.generateTags,
|
|
38
|
+
isLoading = _ref.isLoading,
|
|
39
|
+
isFetching = _ref.isFetching,
|
|
40
|
+
notSuggestedTagsList = _ref.notSuggestedTagsList,
|
|
41
|
+
suggestedTagsList = _ref.suggestedTagsList,
|
|
42
|
+
filteredTagsList = _ref.filteredTagsList,
|
|
43
|
+
setFilteredTagsList = _ref.setFilteredTagsList,
|
|
44
|
+
config = _ref.config,
|
|
45
|
+
onChangeSearchQuery = _ref.onChangeSearchQuery,
|
|
46
|
+
_ref$onRemove = _ref.onRemove,
|
|
47
|
+
onRemove = _ref$onRemove === void 0 ? function () {} : _ref$onRemove,
|
|
48
|
+
style = _ref.style,
|
|
49
|
+
isMetadataGeneralSection = _ref.isMetadataGeneralSection,
|
|
50
|
+
isBulkEdit = _ref.isBulkEdit,
|
|
51
|
+
isMetadataFilter = _ref.isMetadataFilter,
|
|
52
|
+
showGenerateTagsButton = _ref.showGenerateTagsButton,
|
|
53
|
+
_ref$size = _ref.size,
|
|
54
|
+
size = _ref$size === void 0 ? 'md' : _ref$size,
|
|
55
|
+
tagsFieldMaxWidth = _ref.tagsFieldMaxWidth,
|
|
56
|
+
disableOnEnter = _ref.disableOnEnter,
|
|
57
|
+
field = _ref.field,
|
|
58
|
+
rest = _objectWithoutProperties(_ref, _excluded);
|
|
59
|
+
var theme = useTheme();
|
|
60
|
+
var inputListRef = useRef(null);
|
|
61
|
+
var _useState = useState(''),
|
|
62
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
63
|
+
searchValue = _useState2[0],
|
|
64
|
+
setSearchValue = _useState2[1];
|
|
65
|
+
var _useState3 = useState(null),
|
|
66
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
67
|
+
anchorEl = _useState4[0],
|
|
68
|
+
setAnchorEl = _useState4[1];
|
|
69
|
+
var _useState5 = useState(filteredTagsList),
|
|
70
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
71
|
+
results = _useState6[0],
|
|
72
|
+
setResults = _useState6[1];
|
|
73
|
+
var _useState7 = useState(false),
|
|
74
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
75
|
+
isFocused = _useState8[0],
|
|
76
|
+
setIsFocused = _useState8[1];
|
|
77
|
+
var debouncedSearchValue = useDebounce(searchValue, 500);
|
|
78
|
+
var isChanged = (searchValue === null || searchValue === void 0 ? void 0 : searchValue.length) > 0;
|
|
79
|
+
var showTagsList = isFocused && (suggestedTagsList.length > 0 || searchValue.length > 1);
|
|
80
|
+
var showTagsPlaceholder = useMemo(function () {
|
|
81
|
+
return isChanged && isFocused && !(results !== null && results !== void 0 && results.filter(function (_ref2) {
|
|
82
|
+
var hidden = _ref2.hidden;
|
|
83
|
+
return !hidden;
|
|
84
|
+
}).length) > 0;
|
|
85
|
+
}, [isChanged, isFocused, results]);
|
|
86
|
+
var showMenuOptions = useMemo(function () {
|
|
87
|
+
return showTagsPlaceholder || showTagsList;
|
|
88
|
+
}, [showTagsPlaceholder, showTagsList]);
|
|
89
|
+
var _ref3 = config || {},
|
|
90
|
+
_ref3$tagging = _ref3.tagging,
|
|
91
|
+
_ref3$tagging2 = _ref3$tagging === void 0 ? {} : _ref3$tagging,
|
|
92
|
+
isAutoTaggingEnabled = _ref3$tagging2.autoTagging,
|
|
93
|
+
isSuggestedTagsOnlyEnabled = _ref3$tagging2.suggestedTagsOnly;
|
|
94
|
+
var toLowerCase = function toLowerCase() {
|
|
95
|
+
var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
96
|
+
return value.toLowerCase().trim();
|
|
97
|
+
};
|
|
98
|
+
var handleSearch = function handleSearch(event) {
|
|
99
|
+
var searchInputValue = event.target.value;
|
|
100
|
+
var searchResults = filteredTagsList.map(function (_ref4) {
|
|
101
|
+
var name = _ref4.name,
|
|
102
|
+
rest = _objectWithoutProperties(_ref4, _excluded2);
|
|
103
|
+
return _objectSpread(_objectSpread({}, rest), {}, {
|
|
104
|
+
name: name,
|
|
105
|
+
hidden: !toLowerCase(name).includes(toLowerCase(searchInputValue))
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
setResults(searchResults);
|
|
109
|
+
setSearchValue(searchInputValue);
|
|
110
|
+
};
|
|
111
|
+
var handleDeleteFromSuggList = function handleDeleteFromSuggList(newTags) {
|
|
112
|
+
setFilteredTagsList(filteredTagsList === null || filteredTagsList === void 0 ? void 0 : filteredTagsList.filter(function (option) {
|
|
113
|
+
return !newTags.includes(option.name);
|
|
114
|
+
}));
|
|
115
|
+
};
|
|
116
|
+
var handleAddFromSuggestion = function handleAddFromSuggestion(name) {
|
|
117
|
+
var newTags = handleAdd(name);
|
|
118
|
+
handleDeleteFromSuggList(newTags);
|
|
119
|
+
setSearchValue('');
|
|
120
|
+
};
|
|
121
|
+
var handleAddFromSearch = function handleAddFromSearch(value) {
|
|
122
|
+
handleAdd(value);
|
|
123
|
+
setSearchValue('');
|
|
124
|
+
setResults(filteredTagsList);
|
|
125
|
+
};
|
|
126
|
+
var handleFocus = function handleFocus() {
|
|
127
|
+
setAnchorEl(inputListRef.current);
|
|
128
|
+
if (typeof setIsFocused === 'function') {
|
|
129
|
+
setIsFocused(true);
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
var handleKeyDown = function handleKeyDown(event) {
|
|
133
|
+
if (event.key === 'Enter' && isFocused && (searchValue === null || searchValue === void 0 ? void 0 : searchValue.length) > 0) {
|
|
134
|
+
setSearchValue('');
|
|
135
|
+
}
|
|
136
|
+
};
|
|
137
|
+
useEffect(function () {
|
|
138
|
+
if ((debouncedSearchValue === null || debouncedSearchValue === void 0 ? void 0 : debouncedSearchValue.length) >= 3 && typeof onChangeSearchQuery === 'function') {
|
|
139
|
+
var metadataFieldCKey = field === null || field === void 0 ? void 0 : field.ckey;
|
|
140
|
+
onChangeSearchQuery({
|
|
141
|
+
debouncedSearchValue: debouncedSearchValue,
|
|
142
|
+
cb: setResults,
|
|
143
|
+
metadataFieldCKey: metadataFieldCKey
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
}, [debouncedSearchValue]);
|
|
147
|
+
var renderOptions = useCallback(function (options, highlight) {
|
|
148
|
+
return options === null || options === void 0 ? void 0 : options.map(function (_ref5) {
|
|
149
|
+
var name = _ref5.name,
|
|
150
|
+
value = _ref5.value,
|
|
151
|
+
sid = _ref5.sid,
|
|
152
|
+
hidden = _ref5.hidden,
|
|
153
|
+
isSelected = _ref5.isSelected;
|
|
154
|
+
return /*#__PURE__*/_jsx(FilterOptions, {
|
|
155
|
+
onClick: function onClick() {
|
|
156
|
+
return handleAddFromSuggestion(name);
|
|
157
|
+
},
|
|
158
|
+
hidden: hidden,
|
|
159
|
+
isSelected: isSelected,
|
|
160
|
+
label: highlight ? /*#__PURE__*/_jsx(TextWithHighlights, {
|
|
161
|
+
text: name,
|
|
162
|
+
highlightText: searchValue
|
|
163
|
+
}) : name
|
|
164
|
+
}, value || sid || name);
|
|
165
|
+
});
|
|
166
|
+
}, [filteredTagsList, values, searchValue]);
|
|
167
|
+
var renderTags = function renderTags() {
|
|
168
|
+
var filteredNotSuggestedTagsList = notSuggestedTagsList.filter(function (_ref6) {
|
|
169
|
+
var name = _ref6.name;
|
|
170
|
+
return toLowerCase(name).includes(toLowerCase(searchValue));
|
|
171
|
+
});
|
|
172
|
+
var hasNoTags = !filteredNotSuggestedTagsList.length && !suggestedTagsList.length && !results.length;
|
|
173
|
+
if (hasNoTags) {
|
|
174
|
+
return /*#__PURE__*/_jsxs(Styled.NoResult, {
|
|
175
|
+
children: [/*#__PURE__*/_jsx(NoResults2, {
|
|
176
|
+
width: 150,
|
|
177
|
+
height: 60
|
|
178
|
+
}), /*#__PURE__*/_jsx(Label, {
|
|
179
|
+
children: i18n('subTabNoResultPlaceholder')
|
|
180
|
+
})]
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
if (filteredNotSuggestedTagsList.length > 0 && searchValue.length > 1) {
|
|
184
|
+
return /*#__PURE__*/_jsxs(Styled.TagsOptionsWrapper, {
|
|
185
|
+
children: [/*#__PURE__*/_jsx(Styled.TagsLabel, {
|
|
186
|
+
children: i18n('subTabAllTagsLabel')
|
|
187
|
+
}), /*#__PURE__*/_jsx(Styled.SuggestedOptions, {
|
|
188
|
+
children: renderOptions(filteredNotSuggestedTagsList, true)
|
|
189
|
+
})]
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
};
|
|
193
|
+
var renderTagsWrapper = function renderTagsWrapper() {
|
|
194
|
+
if (isFetching) return /*#__PURE__*/_jsx(SuggestedTagsInputSkeleton, {});
|
|
195
|
+
if (showTagsPlaceholder) {
|
|
196
|
+
return /*#__PURE__*/_jsx(Styled.MenuItem, {
|
|
197
|
+
disableHover: true,
|
|
198
|
+
children: /*#__PURE__*/_jsx(Styled.TagsOptionsWrapper, {
|
|
199
|
+
isSuggestedTagsOnlyEnabled: isSuggestedTagsOnlyEnabled,
|
|
200
|
+
isCentered: true,
|
|
201
|
+
children: /*#__PURE__*/_jsx(Styled.PlaceholderWrapper, {
|
|
202
|
+
icon: isSuggestedTagsOnlyEnabled && /*#__PURE__*/_jsx(NoTags, {
|
|
203
|
+
width: 150,
|
|
204
|
+
height: 60
|
|
205
|
+
}),
|
|
206
|
+
desc: getTagsPlaceholderDesc({
|
|
207
|
+
isSuggestedTagsOnlyEnabled: isSuggestedTagsOnlyEnabled,
|
|
208
|
+
isMetadataFilter: isMetadataFilter,
|
|
209
|
+
searchValue: searchValue,
|
|
210
|
+
i18n: i18n
|
|
211
|
+
})
|
|
212
|
+
})
|
|
213
|
+
})
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
if (showTagsList) {
|
|
217
|
+
var filteredSuggestedTagsList = (searchValue ? results : suggestedTagsList).filter(function (_ref7) {
|
|
218
|
+
var hidden = _ref7.hidden;
|
|
219
|
+
return !hidden;
|
|
220
|
+
});
|
|
221
|
+
return /*#__PURE__*/_jsx(_Fragment, {
|
|
222
|
+
children: /*#__PURE__*/_jsxs(Styled.MenuItem, {
|
|
223
|
+
disableHover: true,
|
|
224
|
+
children: [/*#__PURE__*/_jsx(Styled.TagsOptionsWrapper, {
|
|
225
|
+
children: filteredSuggestedTagsList.length > 0 && /*#__PURE__*/_jsxs(_Fragment, {
|
|
226
|
+
children: [isMetadataGeneralSection && /*#__PURE__*/_jsx(Styled.TagsLabel, {
|
|
227
|
+
children: i18n('detailsTabSuggestedTagsLabel')
|
|
228
|
+
}), /*#__PURE__*/_jsx(Styled.SuggestedOptions, {
|
|
229
|
+
isSuggestedTags: true,
|
|
230
|
+
children: renderOptions(filteredSuggestedTagsList, true)
|
|
231
|
+
})]
|
|
232
|
+
})
|
|
233
|
+
}), renderTags()]
|
|
234
|
+
})
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
};
|
|
238
|
+
return /*#__PURE__*/_jsx(Styled.Tags, {
|
|
239
|
+
tagsFieldMaxWidth: tagsFieldMaxWidth,
|
|
240
|
+
children: /*#__PURE__*/_jsxs(Styled.TagsBody, {
|
|
241
|
+
children: [/*#__PURE__*/_jsx(Styled.TagField, _objectSpread(_objectSpread({}, rest), {}, {
|
|
242
|
+
ref: inputListRef,
|
|
243
|
+
tags: Array.isArray(values) ? values : [],
|
|
244
|
+
value: searchValue,
|
|
245
|
+
appliedValue: searchValue,
|
|
246
|
+
onChange: handleSearch,
|
|
247
|
+
getTagLabel: function getTagLabel(tag) {
|
|
248
|
+
var _tag$label;
|
|
249
|
+
return (_tag$label = tag.label) !== null && _tag$label !== void 0 ? _tag$label : tag;
|
|
250
|
+
},
|
|
251
|
+
getTagValue: function getTagValue(tag) {
|
|
252
|
+
var _tag$sid;
|
|
253
|
+
return (_tag$sid = tag === null || tag === void 0 ? void 0 : tag.sid) !== null && _tag$sid !== void 0 ? _tag$sid : tag;
|
|
254
|
+
},
|
|
255
|
+
onAdd: handleAddFromSearch,
|
|
256
|
+
onGenerate: generateTags,
|
|
257
|
+
onRemove: onRemove,
|
|
258
|
+
onKeyDown: handleKeyDown,
|
|
259
|
+
showTooltip: true,
|
|
260
|
+
onFocus: handleFocus,
|
|
261
|
+
getTagIcon: function getTagIcon() {
|
|
262
|
+
return null;
|
|
263
|
+
},
|
|
264
|
+
loading: isLoading,
|
|
265
|
+
showGenerateTagsButton: showGenerateTagsButton && isAutoTaggingEnabled && !isBulkEdit,
|
|
266
|
+
disableOnEnter: isSuggestedTagsOnlyEnabled && disableOnEnter,
|
|
267
|
+
fullWidth: true,
|
|
268
|
+
size: size,
|
|
269
|
+
placeholderAlwaysVisible: true,
|
|
270
|
+
copySuccessIcon: /*#__PURE__*/_jsx(Success, {
|
|
271
|
+
color: theme.palette[PC.Green]
|
|
272
|
+
}),
|
|
273
|
+
copyTextMessage: i18n('tagsCopiedSuccessfullyMsg'),
|
|
274
|
+
style: style
|
|
275
|
+
})), showMenuOptions && /*#__PURE__*/_jsx(Styled.Menu, {
|
|
276
|
+
onClose: function onClose() {
|
|
277
|
+
return setAnchorEl(null);
|
|
278
|
+
},
|
|
279
|
+
open: Boolean(anchorEl),
|
|
280
|
+
anchorEl: anchorEl,
|
|
281
|
+
position: "bottom-start",
|
|
282
|
+
popperOptions: {
|
|
283
|
+
modifiers: [{
|
|
284
|
+
name: 'offset',
|
|
285
|
+
options: {
|
|
286
|
+
offset: [0, 5]
|
|
287
|
+
}
|
|
288
|
+
}]
|
|
289
|
+
},
|
|
290
|
+
children: renderTagsWrapper()
|
|
291
|
+
})]
|
|
292
|
+
})
|
|
293
|
+
});
|
|
294
|
+
};
|
|
295
|
+
export default SuggestedTagsInput;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14;
|
|
2
|
+
function _taggedTemplateLiteral(e, t) { return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, { raw: { value: Object.freeze(t) } })); }
|
|
3
|
+
import { PC, FV } from '@scaleflex/widget-common';
|
|
4
|
+
import { TagField as SfxTagField, Button as SfxButton, MenuItem as SfxMenuItem, Menu as SfxMenu } from '@scaleflex/ui/core';
|
|
5
|
+
import styled, { css } from 'styled-components';
|
|
6
|
+
import Placeholder from '@scaleflex/widget-explorer/lib/components/Filters/Placeholder';
|
|
7
|
+
|
|
8
|
+
// TODO: Not allowed to import from explorer while u are in common, we should move this component to common or replace it
|
|
9
|
+
import StyledFilters from '@scaleflex/widget-explorer/lib/components/Filters/Filters.styled';
|
|
10
|
+
var TagField = styled(SfxTagField)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n padding: 16px;\n\n .SfxTagField-listWrapper {\n overflow: ", ";\n }\n \n .SfxTag-Label {\n display: inline-block;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .SfxButton-Label {\n ", ";\n }\n\n ", "\n"])), function (_ref) {
|
|
11
|
+
var loading = _ref.loading;
|
|
12
|
+
return loading ? 'hidden' : 'hidden auto';
|
|
13
|
+
}, function (_ref2) {
|
|
14
|
+
var typography = _ref2.theme.typography;
|
|
15
|
+
return typography.font[FV.ButtonXs];
|
|
16
|
+
}, function (_ref3) {
|
|
17
|
+
var theme = _ref3.theme,
|
|
18
|
+
loading = _ref3.loading,
|
|
19
|
+
showGenerateTagsButton = _ref3.showGenerateTagsButton;
|
|
20
|
+
return showGenerateTagsButton && loading && "\n .SfxTagField-tagFieldActions .SfxButton-root:first-child .SfxButton-Label {\n color: ".concat(theme.palette[PC.ButtonDisabledText], ";\n }\n ");
|
|
21
|
+
});
|
|
22
|
+
var Tags = styled(StyledFilters.Filter)(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n display: flex;\n padding: 0;\n width: 100%;\n min-height: auto;\n\n .SfxTagField-root {\n display: flex;\n width: 100%;\n }\n\n .SfxTagField-tagInputFieldWrapper {\n display: flex;\n width: 100%;\n }\n\n .SfxTagField-tagFieldWrapper, .SfxTagField-wrapper {\n display: flex;\n width: 100%;\n height: 100%;\n }\n\n ", "\n"])), function (_ref4) {
|
|
23
|
+
var breakpoints = _ref4.theme.breakpoints,
|
|
24
|
+
tagsFieldMaxWidth = _ref4.tagsFieldMaxWidth;
|
|
25
|
+
return css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n ", " {\n max-width: ", ";\n }\n "])), breakpoints.up('lg'), tagsFieldMaxWidth ? "".concat(tagsFieldMaxWidth, "px") : 'unset');
|
|
26
|
+
});
|
|
27
|
+
var TagsBody = styled.div(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n display: flex;\n position: relative;\n flex-direction: column;\n"])));
|
|
28
|
+
var NoResult = styled.div(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n display: flex;\n width: 100%;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n gap: 16px;\n color: ", ";\n\n .SfxLabel-text {\n ", ";\n }\n"])), function (_ref5) {
|
|
29
|
+
var palette = _ref5.theme.palette;
|
|
30
|
+
return palette[PC.LabelPlaceholder];
|
|
31
|
+
}, function (_ref6) {
|
|
32
|
+
var typography = _ref6.theme.typography;
|
|
33
|
+
return typography.font[FV.TextLarge];
|
|
34
|
+
});
|
|
35
|
+
var TagsOptionsWrapper = styled.div(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n display: flex;\n align-items: ", ";\n flex-direction: column;\n width: 100%;\n row-gap: 8px;\n"])), function (_ref7) {
|
|
36
|
+
var isCentered = _ref7.isCentered,
|
|
37
|
+
isSuggestedTagsOnlyEnabled = _ref7.isSuggestedTagsOnlyEnabled;
|
|
38
|
+
return isCentered && isSuggestedTagsOnlyEnabled ? 'center' : 'flex-start';
|
|
39
|
+
});
|
|
40
|
+
var Menu = styled(SfxMenu)(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["\n overflow: visible;\n background-color: ", ";\n max-height: none;\n"])), function (_ref8) {
|
|
41
|
+
var palette = _ref8.theme.palette;
|
|
42
|
+
return palette[PC.BackgroundStateless];
|
|
43
|
+
});
|
|
44
|
+
var MenuItem = styled(SfxMenuItem)(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: column;\n border-radius: 4px;\n align-items: flex-start;\n padding: 0;\n row-gap: 24px;\n"])));
|
|
45
|
+
var SkeletonWrapper = styled.div(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["\n display: grid;\n width: 100%;\n padding: 16px;\n max-height: 113px;\n overflow: hidden;\n gap: 8px;\n grid-template-columns: repeat(auto-fill, minmax(60px, 1fr));\n"])));
|
|
46
|
+
var TagsLabel = styled(StyledFilters.FilterLabel)(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral(["\n margin-bottom: 0;\n padding: 16px;\n padding-bottom: 0;\n color: ", ";\n ", ";\n"])), function (_ref9) {
|
|
47
|
+
var palette = _ref9.theme.palette;
|
|
48
|
+
return palette[PC.TextSecondary];
|
|
49
|
+
}, function (_ref10) {
|
|
50
|
+
var typography = _ref10.theme.typography;
|
|
51
|
+
return typography.font[FV.LabelMedium];
|
|
52
|
+
});
|
|
53
|
+
var SuggestedOptions = styled.div(function (_ref11) {
|
|
54
|
+
var isSuggestedTags = _ref11.isSuggestedTags,
|
|
55
|
+
_ref11$theme = _ref11.theme,
|
|
56
|
+
palette = _ref11$theme.palette,
|
|
57
|
+
typography = _ref11$theme.typography;
|
|
58
|
+
return "\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n width: 100%;\n padding: 16px;\n padding-top: 0;\n max-height: 256px;\n overflow-y: auto;\n\n .filerobot-Provider-Filters-FilterOption {\n width: auto;\n padding: 4px 12px;\n height: auto;\n\n ".concat(typography.font[FV.LabelMedium], ";\n\n ").concat(isSuggestedTags ? "\n // Todo: add background-base-light and border-base-light colors to scaleflex UI Kit\n background-color: rgba(235, 239, 252, 1);\n border: 1px solid rgba(211, 219, 250, 1);\n " : "\n background-color: ".concat(palette[PC.BackgroundActive], ";\n border: 1px solid ").concat(palette[PC.BorderPrimaryStateless], ";\n "), "\n }\n");
|
|
59
|
+
});
|
|
60
|
+
var PlaceholderWrapper = styled(Placeholder)(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral(["\n padding-bottom: 0;\n"])));
|
|
61
|
+
var OptionsList = styled.div(_templateObject12 || (_templateObject12 = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: column;\n flex-wrap: wrap;\n width: 100%;\n max-height: 252px;\n overflow: hidden auto;\n"])));
|
|
62
|
+
var Button = styled(SfxButton)(_templateObject13 || (_templateObject13 = _taggedTemplateLiteral(["\n", "\n"])), function (_ref12) {
|
|
63
|
+
var _ref12$theme = _ref12.theme,
|
|
64
|
+
palette = _ref12$theme.palette,
|
|
65
|
+
typography = _ref12$theme.typography;
|
|
66
|
+
return css(_templateObject14 || (_templateObject14 = _taggedTemplateLiteral(["\n width: 91px;\n height: 32px;\n padding: 8px, 12px;\n border-radius: 4px;\n gap: 4px;\n border: 1px solid ", ";\n margin-bottom: 15px ;\n ", ";\n\n .SfxButton-Label {\n width: 49px;\n }\n"])), palette[PC.AccentStateless], typography.font[FV.ButtonMdEmphasis]);
|
|
67
|
+
});
|
|
68
|
+
var Styled = {
|
|
69
|
+
TagField: TagField,
|
|
70
|
+
Tags: Tags,
|
|
71
|
+
TagsBody: TagsBody,
|
|
72
|
+
TagsOptionsWrapper: TagsOptionsWrapper,
|
|
73
|
+
SuggestedOptions: SuggestedOptions,
|
|
74
|
+
TagsLabel: TagsLabel,
|
|
75
|
+
NoResult: NoResult,
|
|
76
|
+
PlaceholderWrapper: PlaceholderWrapper,
|
|
77
|
+
Button: Button,
|
|
78
|
+
Menu: Menu,
|
|
79
|
+
MenuItem: MenuItem,
|
|
80
|
+
SkeletonWrapper: SkeletonWrapper,
|
|
81
|
+
OptionsList: OptionsList
|
|
82
|
+
};
|
|
83
|
+
export default Styled;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export var getTagsPlaceholderDesc = function getTagsPlaceholderDesc(_ref) {
|
|
2
|
+
var isSuggestedTagsOnlyEnabled = _ref.isSuggestedTagsOnlyEnabled,
|
|
3
|
+
isMetadataFilter = _ref.isMetadataFilter,
|
|
4
|
+
searchValue = _ref.searchValue,
|
|
5
|
+
i18n = _ref.i18n;
|
|
6
|
+
if (isMetadataFilter) {
|
|
7
|
+
return i18n('filtersPlaceholderTagNotFound');
|
|
8
|
+
}
|
|
9
|
+
if (isSuggestedTagsOnlyEnabled) {
|
|
10
|
+
return i18n('tagsSearchSuggestionsPlaceholderNoAvailableTags');
|
|
11
|
+
}
|
|
12
|
+
return i18n('placeholderTagNotFound', {
|
|
13
|
+
searchedTag: searchValue
|
|
14
|
+
});
|
|
15
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Skeleton } from '@scaleflex/ui/core';
|
|
2
|
+
import Styled from './SuggestedTagsInput.styled';
|
|
3
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
4
|
+
var SuggestedTagsInputSkeleton = function SuggestedTagsInputSkeleton() {
|
|
5
|
+
return /*#__PURE__*/_jsx(Styled.SkeletonWrapper, {
|
|
6
|
+
children: Array(30).fill().map(function (_, index) {
|
|
7
|
+
return /*#__PURE__*/_jsx(Skeleton, {
|
|
8
|
+
width: 60,
|
|
9
|
+
height: 16
|
|
10
|
+
}, index);
|
|
11
|
+
})
|
|
12
|
+
});
|
|
13
|
+
};
|
|
14
|
+
export default SuggestedTagsInputSkeleton;
|