@widergy/energy-ui 3.160.0 → 3.161.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.
Files changed (24) hide show
  1. package/CHANGELOG.md +14 -2
  2. package/dist/components/UTPanel/versions/V1/components/AdditionalContentModule/index.js +7 -2
  3. package/dist/components/UTPanel/versions/V1/components/AdditionalContentModule/styles.module.scss +2 -1
  4. package/dist/components/UTShortcutPanel/components/GroupingPanel/components/ExpandedPanelContent/components/ExpandedPanelContentCategory/components/ExpandedPanelContentCategoryItem/index.js +8 -3
  5. package/dist/components/UTShortcutPanel/components/GroupingPanel/components/ExpandedPanelContent/components/ExpandedPanelContentCategory/components/ExpandedPanelContentCategoryItem/layout.js +33 -3
  6. package/dist/components/UTShortcutPanel/components/GroupingPanel/components/ExpandedPanelContent/components/ExpandedPanelContentHeader/index.js +4 -0
  7. package/dist/components/UTShortcutPanel/index.js +33 -4
  8. package/dist/components/UTShortcutPanel/stories/UTShortcutPanel.stories.js +39 -0
  9. package/dist/components/UTShortcutPanel/stories/constants.json +2 -0
  10. package/dist/components/UTShortcutPanel/stories/props.schema.json +10 -1
  11. package/dist/components/UTShortcutPanel/styles.module.scss +11 -3
  12. package/dist/constants/testIds.js +1 -0
  13. package/dist/esm/components/UTPanel/versions/V1/components/AdditionalContentModule/index.js +7 -2
  14. package/dist/esm/components/UTPanel/versions/V1/components/AdditionalContentModule/styles.module.scss +2 -1
  15. package/dist/esm/components/UTShortcutPanel/components/GroupingPanel/components/ExpandedPanelContent/components/ExpandedPanelContentCategory/components/ExpandedPanelContentCategoryItem/index.js +7 -2
  16. package/dist/esm/components/UTShortcutPanel/components/GroupingPanel/components/ExpandedPanelContent/components/ExpandedPanelContentCategory/components/ExpandedPanelContentCategoryItem/layout.js +34 -4
  17. package/dist/esm/components/UTShortcutPanel/components/GroupingPanel/components/ExpandedPanelContent/components/ExpandedPanelContentHeader/index.js +5 -1
  18. package/dist/esm/components/UTShortcutPanel/index.js +33 -4
  19. package/dist/esm/components/UTShortcutPanel/stories/UTShortcutPanel.stories.js +39 -0
  20. package/dist/esm/components/UTShortcutPanel/stories/constants.json +2 -0
  21. package/dist/esm/components/UTShortcutPanel/stories/props.schema.json +10 -1
  22. package/dist/esm/components/UTShortcutPanel/styles.module.scss +11 -3
  23. package/dist/esm/constants/testIds.js +1 -0
  24. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,9 +1,21 @@
1
- # [3.160.0](https://github.com/widergy/energy-ui/compare/v3.159.0...v3.160.0) (2026-06-02)
1
+ # [3.161.0](https://github.com/widergy/energy-ui/compare/v3.160.1...v3.161.0) (2026-06-05)
2
2
 
3
3
 
4
4
  ### Features
5
5
 
6
- * [AXCH-1489] second icon in ut button ([#805](https://github.com/widergy/energy-ui/issues/805)) ([a66bfc8](https://github.com/widergy/energy-ui/commit/a66bfc86748b07e516e5e5b53c2a08dcf3268d74))
6
+ * [AXCH-1712, AXCH-1713, AXCH-1716 y AXCH-1717] quick filters ([#808](https://github.com/widergy/energy-ui/issues/808)) ([080d7b7](https://github.com/widergy/energy-ui/commit/080d7b7310549263783fc15d748fb597b51bf209))
7
+
8
+ ## [3.160.1](https://github.com/widergy/energy-ui/compare/v3.160.0...v3.160.1) (2026-06-04)
9
+
10
+ ### Correcciones
11
+
12
+ * Se corrigió un problema que impedía desplazarse correctamente por el contenido adicional del panel de unidades de trabajo. [#810](https://github.com/widergy/Energy-UI/pull/810) [AXCH-1748](https://widergy.atlassian.net/browse/AXCH-1748) [AXCH-1742](https://widergy.atlassian.net/browse/AXCH-1742)
13
+
14
+ # [3.160.0](https://github.com/widergy/energy-ui/compare/v3.159.0...v3.160.0) (2026-06-02)
15
+
16
+ ### Novedades y Mejoras
17
+
18
+ * Los botones de acción ahora admiten un segundo ícono en el extremo derecho, lo que permite mayor flexibilidad visual sin afectar el comportamiento existente. [#805](https://github.com/widergy/Energy-UI/pull/805) [AXCH-1489](https://widergy.atlassian.net/browse/AXCH-1489)
7
19
 
8
20
  # [3.159.0](https://github.com/widergy/energy-ui/compare/v3.158.1...v3.159.0) (2026-06-01)
9
21
 
@@ -34,10 +34,15 @@ const AdditionalContentModule = _ref => {
34
34
  const defaultTooltipContainer = tooltipContainer || (() => document.body);
35
35
  return /*#__PURE__*/_react.default.createElement("div", {
36
36
  className: _stylesModule.default.additionalContentWrapper
37
- }, activeContent && /*#__PURE__*/_react.default.createElement("div", {
37
+ }, activeContent && /*#__PURE__*/_react.default.createElement(_reactPerfectScrollbar.default, {
38
+ options: {
39
+ suppressScrollX: true
40
+ },
41
+ className: _stylesModule.default.sidebarScroll
42
+ }, /*#__PURE__*/_react.default.createElement("div", {
38
43
  className: _stylesModule.default.bodyComponent,
39
44
  "data-testid": panel.additionalContent.body
40
- }, ActiveBodyComponent && /*#__PURE__*/_react.default.createElement(ActiveBodyComponent, null)), /*#__PURE__*/_react.default.createElement("div", {
45
+ }, ActiveBodyComponent && /*#__PURE__*/_react.default.createElement(ActiveBodyComponent, null))), /*#__PURE__*/_react.default.createElement("div", {
41
46
  className: "".concat(_stylesModule.default.sidebar, " ").concat(!activeContent ? _stylesModule.default.sidebarCollapsed : ''),
42
47
  "data-testid": panel.additionalContent.sidebar
43
48
  }, /*#__PURE__*/_react.default.createElement(_reactPerfectScrollbar.default, {
@@ -23,9 +23,10 @@ $sidebar-width: 56px;
23
23
  display: flex;
24
24
  flex-direction: column;
25
25
  flex-shrink: 0;
26
+ height: 100%;
26
27
  min-width: $body-component-width;
27
28
  opacity: 1;
28
- overflow: hidden;
29
+ overflow-y: auto;
29
30
  padding: 24px 24px 16px 24px;
30
31
  width: $body-component-width;
31
32
  }
@@ -4,14 +4,13 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
- var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
8
7
  var _react = _interopRequireWildcard(require("react"));
9
8
  var _propTypes = require("prop-types");
10
9
  var _context = _interopRequireDefault(require("../../../../../../../../context"));
11
10
  var _utils = require("../../../../../../../../utils");
12
11
  var _layout = _interopRequireDefault(require("./layout"));
13
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
14
12
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
15
14
  const ExpandedPanelContentCategoryItemContainer = _ref => {
16
15
  var _name$toLowerCase, _name$toLowerCase$spl, _name$toLowerCase$spl2;
17
16
  let {
@@ -22,11 +21,13 @@ const ExpandedPanelContentCategoryItemContainer = _ref => {
22
21
  classes,
23
22
  closePopper,
24
23
  handleSelectFilter,
24
+ invalidParamsConfig,
25
25
  onDeleteFilterGrouping,
26
26
  onEditFilterGrouping,
27
27
  openPopper,
28
28
  position,
29
29
  selectedFilter,
30
+ showActionsOnPinned,
30
31
  tooltipsContentMap: {
31
32
  editButton,
32
33
  deleteButton
@@ -34,10 +35,12 @@ const ExpandedPanelContentCategoryItemContainer = _ref => {
34
35
  } = (0, _react.useContext)(_context.default);
35
36
  const {
36
37
  description,
38
+ hasInvalidParams,
37
39
  name,
38
40
  pinned,
39
41
  category
40
42
  } = filter;
43
+ const resolvedHasInvalidParams = hasInvalidParams ? invalidParamsConfig !== null && invalidParamsConfig !== void 0 ? invalidParamsConfig : true : false;
41
44
  const id = "".concat(name === null || name === void 0 || (_name$toLowerCase = name.toLowerCase) === null || _name$toLowerCase === void 0 || (_name$toLowerCase = _name$toLowerCase.call(name)) === null || _name$toLowerCase === void 0 || (_name$toLowerCase$spl = _name$toLowerCase.split) === null || _name$toLowerCase$spl === void 0 || (_name$toLowerCase$spl = _name$toLowerCase$spl.call(_name$toLowerCase, ' ')) === null || _name$toLowerCase$spl === void 0 || (_name$toLowerCase$spl2 = _name$toLowerCase$spl.join) === null || _name$toLowerCase$spl2 === void 0 ? void 0 : _name$toLowerCase$spl2.call(_name$toLowerCase$spl, '_'), "_").concat(category);
42
45
  const deleteButtonTippyRef = (0, _react.useRef)(null);
43
46
  const editButtonTippyRef = (0, _react.useRef)(null);
@@ -65,12 +68,14 @@ const ExpandedPanelContentCategoryItemContainer = _ref => {
65
68
  handleDeleteFilterGrouping: onDeleteFilterGrouping ? () => onDeleteFilterGrouping(filter) : undefined,
66
69
  handleEditFilterGrouping: onEditFilterGrouping ? () => onEditFilterGrouping(filter) : undefined,
67
70
  handleSelectFilter: handleSelectFilters,
71
+ hasInvalidParams: resolvedHasInvalidParams,
68
72
  id: id,
69
73
  name: name,
70
74
  openItemDescription: handleOpenItemDescription,
71
75
  pinned: pinned,
72
76
  position: position,
73
- selected: (0, _isEqual.default)(selectedFilter, filter)
77
+ showActionsOnPinned: showActionsOnPinned,
78
+ selected: (selectedFilter === null || selectedFilter === void 0 ? void 0 : selectedFilter.id) != null && selectedFilter.id === (filter === null || filter === void 0 ? void 0 : filter.id) && selectedFilter.category === (filter === null || filter === void 0 ? void 0 : filter.category)
74
79
  });
75
80
  };
76
81
  ExpandedPanelContentCategoryItemContainer.propTypes = {
@@ -34,13 +34,19 @@ const ExpandedPanelContentCategoryItem = _ref => {
34
34
  handleDeleteFilterGrouping,
35
35
  handleEditFilterGrouping,
36
36
  handleSelectFilter,
37
+ hasInvalidParams,
37
38
  id,
38
39
  name,
39
40
  openItemDescription,
40
41
  pinned,
41
42
  position,
42
- selected
43
+ selected,
44
+ showActionsOnPinned
43
45
  } = _ref;
46
+ const isInvalidParamsObject = typeof hasInvalidParams === 'object';
47
+ const invalidIconName = (isInvalidParamsObject ? hasInvalidParams === null || hasInvalidParams === void 0 ? void 0 : hasInvalidParams.iconName : null) || 'IconAlertTriangle';
48
+ const invalidIconSize = (isInvalidParamsObject ? hasInvalidParams === null || hasInvalidParams === void 0 ? void 0 : hasInvalidParams.size : null) || '16';
49
+ const invalidTooltipText = isInvalidParamsObject ? hasInvalidParams === null || hasInvalidParams === void 0 ? void 0 : hasInvalidParams.tooltipText : undefined;
44
50
  return /*#__PURE__*/_react.default.createElement("article", {
45
51
  className: "".concat(classes.expandedPanelContentCategoryItem, " ").concat(selected ? classes.expandedPanelContentCategoryItemSelected : ''),
46
52
  id: id
@@ -63,7 +69,25 @@ const ExpandedPanelContentCategoryItem = _ref => {
63
69
  className: classes.expandedPanelContentCategoryItemTitleLabel,
64
70
  colorTheme: selected ? 'accent' : undefined,
65
71
  shade: selected ? '05' : undefined
66
- }, name))), !pinned && (handleEditFilterGrouping || handleDeleteFilterGrouping) && /*#__PURE__*/_react.default.createElement("section", {
72
+ }, name)), hasInvalidParams && (invalidTooltipText ? /*#__PURE__*/_react.default.createElement(_UTTooltip.default, {
73
+ content: invalidTooltipText,
74
+ tippyProps: {
75
+ appendTo: () => document.body,
76
+ placement: 'top'
77
+ }
78
+ }, /*#__PURE__*/_react.default.createElement("span", {
79
+ className: classes.hasInvalidParamsTooltipContainer
80
+ }, /*#__PURE__*/_react.default.createElement(_UTIcon.default, {
81
+ colorTheme: "warning",
82
+ dataTestId: "".concat(dataTestId, ".").concat(_testIds.ID_CONSTANTS.INVALID_PARAMS),
83
+ name: invalidIconName,
84
+ size: invalidIconSize
85
+ }))) : /*#__PURE__*/_react.default.createElement(_UTIcon.default, {
86
+ colorTheme: "warning",
87
+ dataTestId: "".concat(dataTestId, ".").concat(_testIds.ID_CONSTANTS.INVALID_PARAMS),
88
+ name: invalidIconName,
89
+ size: invalidIconSize
90
+ }))), (!pinned || showActionsOnPinned) && (handleEditFilterGrouping || handleDeleteFilterGrouping) && /*#__PURE__*/_react.default.createElement("section", {
67
91
  className: classes.expandedPanelContentCategoryItemActionsContainer,
68
92
  onAnimationEnd: animationEnd
69
93
  }, handleEditFilterGrouping && /*#__PURE__*/_react.default.createElement(_UTTooltip.default, {
@@ -118,11 +142,17 @@ ExpandedPanelContentCategoryItem.propTypes = {
118
142
  handleDeleteFilterGrouping: _propTypes.func,
119
143
  handleEditFilterGrouping: _propTypes.func,
120
144
  handleSelectFilter: _propTypes.func,
145
+ hasInvalidParams: (0, _propTypes.oneOfType)([_propTypes.bool, (0, _propTypes.shape)({
146
+ iconName: _propTypes.string,
147
+ size: _propTypes.string,
148
+ tooltipText: _propTypes.string
149
+ })]),
121
150
  id: _propTypes.string,
122
151
  name: _propTypes.string,
123
152
  openItemDescription: _propTypes.func,
124
153
  pinned: _propTypes.bool,
125
154
  position: _propTypes.string,
126
- selected: _propTypes.bool
155
+ selected: _propTypes.bool,
156
+ showActionsOnPinned: _propTypes.bool
127
157
  };
128
158
  var _default = exports.default = ExpandedPanelContentCategoryItem;
@@ -32,6 +32,7 @@ const ExpandedPanelContentHeaderContainer = _ref => {
32
32
  hideAddFilterButton,
33
33
  panelTitle,
34
34
  position,
35
+ searchResetTrigger,
35
36
  searchValue,
36
37
  tooltipsContentMap: {
37
38
  collapseButton,
@@ -39,6 +40,9 @@ const ExpandedPanelContentHeaderContainer = _ref => {
39
40
  }
40
41
  } = (0, _react.useContext)(_context.default);
41
42
  const [searchOpen, setSearchOpen] = (0, _react.useState)(false);
43
+ (0, _react.useEffect)(() => {
44
+ if (searchResetTrigger > 0) setSearchOpen(false);
45
+ }, [searchResetTrigger]);
42
46
  const handleSearchToggle = () => {
43
47
  handleFilterGroupSearch('');
44
48
  setSearchOpen(!searchOpen);
@@ -28,6 +28,7 @@ const UTShortcutPanelContainer = _ref => {
28
28
  handleSelectFilter,
29
29
  hideAddFilterButton = false,
30
30
  iconProps,
31
+ invalidParamsConfig,
31
32
  noFiltersText,
32
33
  noFiltersTitle,
33
34
  onDeleteFilterGrouping,
@@ -36,6 +37,8 @@ const UTShortcutPanelContainer = _ref => {
36
37
  panelTitle,
37
38
  position = _constants.PANEL_POSITIONS.LEFT,
38
39
  scrollProps,
40
+ searchResetKey,
41
+ showActionsOnPinned = false,
39
42
  selectedFilter,
40
43
  startOpen = false,
41
44
  tooltipsContentMap = {}
@@ -44,6 +47,7 @@ const UTShortcutPanelContainer = _ref => {
44
47
  const containerRef = (0, _react.useRef)(null);
45
48
  const [open, setOpen] = (0, _react.useState)(startOpen);
46
49
  const [filteredValues, setFilteredValues] = (0, _react.useState)(false);
50
+ const [searchTerm, setSearchTerm] = (0, _react.useState)('');
47
51
  const handleTogglePanel = () => {
48
52
  setOpen(!open);
49
53
  onTogglePanel === null || onTogglePanel === void 0 || onTogglePanel(!open);
@@ -52,8 +56,8 @@ const UTShortcutPanelContainer = _ref => {
52
56
 
53
57
  // TODO: desarrollo en otro PR
54
58
  const handleAddFilterGroup = () => {};
55
- const handleFilterGroupSearch = value => {
56
- const filteredResults = categories.map(category => {
59
+ const applySearch = (value, source) => {
60
+ const filteredResults = source.map(category => {
57
61
  const filters = category.filters.filter(filter => filter.name.toLowerCase().includes(value.toLowerCase()));
58
62
  return {
59
63
  ...category,
@@ -63,6 +67,10 @@ const UTShortcutPanelContainer = _ref => {
63
67
  setFilteredCategories(filteredResults);
64
68
  setFilteredValues(Boolean(value));
65
69
  };
70
+ const handleFilterGroupSearch = value => {
71
+ setSearchTerm(value);
72
+ applySearch(value, categories);
73
+ };
66
74
  const [popperState, setPopperState] = (0, _react.useState)({});
67
75
  const openPopper = _ref2 => {
68
76
  let {
@@ -82,8 +90,19 @@ const UTShortcutPanelContainer = _ref => {
82
90
  setPopperState({});
83
91
  };
84
92
  (0, _react.useEffect)(() => {
85
- setFilteredCategories(categories);
93
+ if (searchTerm) {
94
+ applySearch(searchTerm, categories);
95
+ } else {
96
+ setFilteredCategories(categories);
97
+ }
86
98
  }, [categories]);
99
+ const [searchResetTrigger, setSearchResetTrigger] = (0, _react.useState)(0);
100
+ (0, _react.useEffect)(() => {
101
+ setSearchTerm('');
102
+ setFilteredValues(false);
103
+ setFilteredCategories(categories);
104
+ setSearchResetTrigger(prev => prev + 1);
105
+ }, [searchResetKey]);
87
106
  const contextValue = (0, _react.useMemo)(() => ({
88
107
  categories: filteredCategories,
89
108
  categoriesConfig,
@@ -98,6 +117,7 @@ const UTShortcutPanelContainer = _ref => {
98
117
  handleTogglePanel,
99
118
  hideAddFilterButton,
100
119
  iconProps,
120
+ invalidParamsConfig,
101
121
  noFiltersText,
102
122
  noFiltersTitle,
103
123
  onDeleteFilterGrouping,
@@ -108,10 +128,12 @@ const UTShortcutPanelContainer = _ref => {
108
128
  popperState,
109
129
  position,
110
130
  scrollProps,
131
+ searchResetTrigger,
111
132
  selectedFilter,
133
+ showActionsOnPinned,
112
134
  theme,
113
135
  tooltipsContentMap
114
- }), [categories, categoriesConfig, classes, disableCollapsibleCategories, filteredCategories, filteredValues, hideAddFilterButton, iconProps, noFiltersText, noFiltersTitle, onDeleteFilterGrouping, onEditFilterGrouping, open, popperState, position, scrollProps, selectedFilter, theme, tooltipsContentMap]);
136
+ }), [categories, categoriesConfig, classes, disableCollapsibleCategories, filteredCategories, filteredValues, hideAddFilterButton, iconProps, invalidParamsConfig, noFiltersText, noFiltersTitle, onDeleteFilterGrouping, onEditFilterGrouping, showActionsOnPinned, open, popperState, position, scrollProps, searchResetTrigger, selectedFilter, theme, tooltipsContentMap]);
115
137
  return /*#__PURE__*/_react.default.createElement(_context.default.Provider, {
116
138
  value: contextValue
117
139
  }, /*#__PURE__*/_react.default.createElement("section", {
@@ -161,14 +183,21 @@ UTShortcutPanelContainer.propTypes = {
161
183
  handleSelectFilter: _propTypes.func,
162
184
  hideAddFilterButton: _propTypes.bool,
163
185
  iconProps: _iconTypes.iconPropTypes,
186
+ invalidParamsConfig: (0, _propTypes.shape)({
187
+ iconName: _propTypes.string,
188
+ size: _propTypes.string,
189
+ tooltipText: _propTypes.string
190
+ }),
164
191
  noFiltersText: _propTypes.string,
165
192
  noFiltersTitle: _propTypes.string,
166
193
  onDeleteFilterGrouping: _propTypes.func,
167
194
  onEditFilterGrouping: _propTypes.func,
168
195
  onTogglePanel: _propTypes.func,
196
+ showActionsOnPinned: _propTypes.bool,
169
197
  panelTitle: _propTypes.string,
170
198
  position: _propTypes.string,
171
199
  scrollProps: _propTypes.object,
200
+ searchResetKey: _propTypes.string,
172
201
  selectedFilter: (0, _propTypes.shape)({
173
202
  id: _propTypes.number,
174
203
  name: _propTypes.string,
@@ -32,6 +32,7 @@ var _default = exports.default = {
32
32
  handleSelectFilter: (0, _test.fn)(),
33
33
  hideAddFilterButton: false,
34
34
  iconProps: undefined,
35
+ invalidParamsConfig: undefined,
35
36
  noFiltersTitle: _constants2.default.NO_FILTERS_TITLE,
36
37
  noFiltersText: _constants2.default.NO_FILTERS_TEXT,
37
38
  onDeleteFilterGrouping: (0, _test.fn)(),
@@ -39,8 +40,10 @@ var _default = exports.default = {
39
40
  onTogglePanel: (0, _test.fn)(),
40
41
  panelTitle: _constants2.default.PANEL_TITLE,
41
42
  position: _constants2.default.POSITION,
43
+ searchResetKey: undefined,
42
44
  selectedFilter: undefined,
43
45
  scrollProps: undefined,
46
+ showActionsOnPinned: false,
44
47
  startOpen: true,
45
48
  tooltipsContentMap: _constants2.default.TOOLTIPS_CONTENT_MAP
46
49
  },
@@ -182,6 +185,18 @@ var _default = exports.default = {
182
185
  }
183
186
  }
184
187
  },
188
+ invalidParamsConfig: {
189
+ control: 'object',
190
+ description: 'Configuración del ícono de advertencia que se muestra en ítems con `hasInvalidParams: true`. Si se pasa `tooltipText`, el ícono muestra un tooltip al hacer hover. `iconName` e `size` son opcionales (defaults: `IconAlertTriangle`, `16`).',
191
+ table: {
192
+ defaultValue: {
193
+ summary: 'undefined'
194
+ },
195
+ type: {
196
+ summary: '{ iconName?: string; size?: string; tooltipText?: string }'
197
+ }
198
+ }
199
+ },
185
200
  noFiltersTitle: {
186
201
  control: 'text',
187
202
  description: 'Título para el componente de filtros vacíos.',
@@ -279,6 +294,18 @@ var _default = exports.default = {
279
294
  }
280
295
  }
281
296
  },
297
+ searchResetKey: {
298
+ control: 'text',
299
+ description: 'Cuando cambia de valor, resetea el estado de búsqueda interna del panel. Útil para limpiar el input al cambiar de tab o categoría.',
300
+ table: {
301
+ defaultValue: {
302
+ summary: 'undefined'
303
+ },
304
+ type: {
305
+ summary: 'string | number'
306
+ }
307
+ }
308
+ },
282
309
  selectedFilter: {
283
310
  control: 'none',
284
311
  description: 'Filtro seleccionado.',
@@ -291,6 +318,18 @@ var _default = exports.default = {
291
318
  }
292
319
  }
293
320
  },
321
+ showActionsOnPinned: {
322
+ control: 'boolean',
323
+ description: 'Si es `true`, los botones de editar y eliminar se muestran también en ítems con `pinned: true`. Por defecto son ocultados en filtros pinned.',
324
+ table: {
325
+ defaultValue: {
326
+ summary: 'false'
327
+ },
328
+ type: {
329
+ summary: 'boolean'
330
+ }
331
+ }
332
+ },
294
333
  startOpen: {
295
334
  control: 'boolean',
296
335
  description: 'Indica si el panel se renderiza abierto.',
@@ -107,6 +107,8 @@
107
107
  "name": "Filtro Custom 3",
108
108
  "order": 4,
109
109
  "pinned": false,
110
+ "filter_type": "private",
111
+ "hasInvalidParams": true,
110
112
  "visible": true
111
113
  }
112
114
  ],
@@ -65,7 +65,16 @@
65
65
  },
66
66
  "backoffice_user_id": {
67
67
  "type": ["string", "null"],
68
- "description": "ID of the backoffice user who created this filter, or null for system filters"
68
+ "description": "ID del agente propietario del filtro."
69
+ },
70
+ "filter_type": {
71
+ "type": "string",
72
+ "enum": ["private", "supervisor"],
73
+ "description": "Tipo de filtro: 'private' (solo visible para el creador) o 'supervisor' (visible para todos, implica pinned: true)."
74
+ },
75
+ "hasInvalidParams": {
76
+ "type": "boolean",
77
+ "description": "Cuando es true, el ítem muestra el ícono de advertencia. El ícono, su tamaño y el tooltip se configuran desde la prop invalidParamsConfig del panel (defaults: IconAlertTriangle, size 16, sin tooltip). Se computa en el selector makeSelectFilterCategoriesWithValidation."
69
78
  },
70
79
  "filter_params": {
71
80
  "type": "array",
@@ -11,7 +11,6 @@
11
11
  }
12
12
 
13
13
  %actionsContainer {
14
- animation-fill-mode: forwards;
15
14
  display: none;
16
15
  }
17
16
 
@@ -190,8 +189,12 @@
190
189
  overflow: hidden;
191
190
 
192
191
  .hoverableContainer {
193
- flex-grow: 1;
194
- overflow: hidden;
192
+ flex-grow: 1;
193
+ overflow: hidden;
194
+
195
+ &:first-child {
196
+ padding-left: var(--UT-shortcutPanel-item-no-icon-padding-left, 4px);
197
+ }
195
198
  }
196
199
  }
197
200
 
@@ -203,6 +206,11 @@
203
206
  @extend %actionsContainer;
204
207
  }
205
208
 
209
+ .hasInvalidParamsTooltipContainer {
210
+ align-items: center;
211
+ display: flex;
212
+ }
213
+
206
214
  .expandedPanelContentCategoryItemTitleContainerSelected {
207
215
  cursor: default;
208
216
  }
@@ -40,6 +40,7 @@ const ID_CONSTANTS = exports.ID_CONSTANTS = {
40
40
  HEADER: 'header',
41
41
  HELP_TEXT: 'helpText',
42
42
  ICON: 'icon',
43
+ INVALID_PARAMS: 'invalidParams',
43
44
  LABEL: 'label',
44
45
  MAIN_BUTTON: 'mainButton',
45
46
  NAME: 'name',
@@ -26,10 +26,15 @@ const AdditionalContentModule = _ref => {
26
26
  const defaultTooltipContainer = tooltipContainer || (() => document.body);
27
27
  return /*#__PURE__*/React.createElement("div", {
28
28
  className: styles.additionalContentWrapper
29
- }, activeContent && /*#__PURE__*/React.createElement("div", {
29
+ }, activeContent && /*#__PURE__*/React.createElement(PerfectScrollbar, {
30
+ options: {
31
+ suppressScrollX: true
32
+ },
33
+ className: styles.sidebarScroll
34
+ }, /*#__PURE__*/React.createElement("div", {
30
35
  className: styles.bodyComponent,
31
36
  "data-testid": panel.additionalContent.body
32
- }, ActiveBodyComponent && /*#__PURE__*/React.createElement(ActiveBodyComponent, null)), /*#__PURE__*/React.createElement("div", {
37
+ }, ActiveBodyComponent && /*#__PURE__*/React.createElement(ActiveBodyComponent, null))), /*#__PURE__*/React.createElement("div", {
33
38
  className: "".concat(styles.sidebar, " ").concat(!activeContent ? styles.sidebarCollapsed : ''),
34
39
  "data-testid": panel.additionalContent.sidebar
35
40
  }, /*#__PURE__*/React.createElement(PerfectScrollbar, {
@@ -23,9 +23,10 @@ $sidebar-width: 56px;
23
23
  display: flex;
24
24
  flex-direction: column;
25
25
  flex-shrink: 0;
26
+ height: 100%;
26
27
  min-width: $body-component-width;
27
28
  opacity: 1;
28
- overflow: hidden;
29
+ overflow-y: auto;
29
30
  padding: 24px 24px 16px 24px;
30
31
  width: $body-component-width;
31
32
  }
@@ -1,4 +1,3 @@
1
- import isEqual from 'lodash/isEqual';
2
1
  import React, { useContext, useRef } from 'react';
3
2
  import { object, string } from 'prop-types';
4
3
  import UTShortcutPanelContext from '../../../../../../../../context';
@@ -14,11 +13,13 @@ const ExpandedPanelContentCategoryItemContainer = _ref => {
14
13
  classes,
15
14
  closePopper,
16
15
  handleSelectFilter,
16
+ invalidParamsConfig,
17
17
  onDeleteFilterGrouping,
18
18
  onEditFilterGrouping,
19
19
  openPopper,
20
20
  position,
21
21
  selectedFilter,
22
+ showActionsOnPinned,
22
23
  tooltipsContentMap: {
23
24
  editButton,
24
25
  deleteButton
@@ -26,10 +27,12 @@ const ExpandedPanelContentCategoryItemContainer = _ref => {
26
27
  } = useContext(UTShortcutPanelContext);
27
28
  const {
28
29
  description,
30
+ hasInvalidParams,
29
31
  name,
30
32
  pinned,
31
33
  category
32
34
  } = filter;
35
+ const resolvedHasInvalidParams = hasInvalidParams ? invalidParamsConfig !== null && invalidParamsConfig !== void 0 ? invalidParamsConfig : true : false;
33
36
  const id = "".concat(name === null || name === void 0 || (_name$toLowerCase = name.toLowerCase) === null || _name$toLowerCase === void 0 || (_name$toLowerCase = _name$toLowerCase.call(name)) === null || _name$toLowerCase === void 0 || (_name$toLowerCase$spl = _name$toLowerCase.split) === null || _name$toLowerCase$spl === void 0 || (_name$toLowerCase$spl = _name$toLowerCase$spl.call(_name$toLowerCase, ' ')) === null || _name$toLowerCase$spl === void 0 || (_name$toLowerCase$spl2 = _name$toLowerCase$spl.join) === null || _name$toLowerCase$spl2 === void 0 ? void 0 : _name$toLowerCase$spl2.call(_name$toLowerCase$spl, '_'), "_").concat(category);
34
37
  const deleteButtonTippyRef = useRef(null);
35
38
  const editButtonTippyRef = useRef(null);
@@ -57,12 +60,14 @@ const ExpandedPanelContentCategoryItemContainer = _ref => {
57
60
  handleDeleteFilterGrouping: onDeleteFilterGrouping ? () => onDeleteFilterGrouping(filter) : undefined,
58
61
  handleEditFilterGrouping: onEditFilterGrouping ? () => onEditFilterGrouping(filter) : undefined,
59
62
  handleSelectFilter: handleSelectFilters,
63
+ hasInvalidParams: resolvedHasInvalidParams,
60
64
  id: id,
61
65
  name: name,
62
66
  openItemDescription: handleOpenItemDescription,
63
67
  pinned: pinned,
64
68
  position: position,
65
- selected: isEqual(selectedFilter, filter)
69
+ showActionsOnPinned: showActionsOnPinned,
70
+ selected: (selectedFilter === null || selectedFilter === void 0 ? void 0 : selectedFilter.id) != null && selectedFilter.id === (filter === null || filter === void 0 ? void 0 : filter.id) && selectedFilter.category === (filter === null || filter === void 0 ? void 0 : filter.category)
66
71
  });
67
72
  };
68
73
  ExpandedPanelContentCategoryItemContainer.propTypes = {
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { bool, func, object, string } from 'prop-types';
2
+ import { bool, func, object, oneOfType, shape, string } from 'prop-types';
3
3
  import UTButton from '../../../../../../../../../UTButton';
4
4
  import UTIcon from '../../../../../../../../../UTIcon';
5
5
  import UTLabel from '../../../../../../../../../UTLabel';
@@ -27,13 +27,19 @@ const ExpandedPanelContentCategoryItem = _ref => {
27
27
  handleDeleteFilterGrouping,
28
28
  handleEditFilterGrouping,
29
29
  handleSelectFilter,
30
+ hasInvalidParams,
30
31
  id,
31
32
  name,
32
33
  openItemDescription,
33
34
  pinned,
34
35
  position,
35
- selected
36
+ selected,
37
+ showActionsOnPinned
36
38
  } = _ref;
39
+ const isInvalidParamsObject = typeof hasInvalidParams === 'object';
40
+ const invalidIconName = (isInvalidParamsObject ? hasInvalidParams === null || hasInvalidParams === void 0 ? void 0 : hasInvalidParams.iconName : null) || 'IconAlertTriangle';
41
+ const invalidIconSize = (isInvalidParamsObject ? hasInvalidParams === null || hasInvalidParams === void 0 ? void 0 : hasInvalidParams.size : null) || '16';
42
+ const invalidTooltipText = isInvalidParamsObject ? hasInvalidParams === null || hasInvalidParams === void 0 ? void 0 : hasInvalidParams.tooltipText : undefined;
37
43
  return /*#__PURE__*/React.createElement("article", {
38
44
  className: "".concat(classes.expandedPanelContentCategoryItem, " ").concat(selected ? classes.expandedPanelContentCategoryItemSelected : ''),
39
45
  id: id
@@ -56,7 +62,25 @@ const ExpandedPanelContentCategoryItem = _ref => {
56
62
  className: classes.expandedPanelContentCategoryItemTitleLabel,
57
63
  colorTheme: selected ? 'accent' : undefined,
58
64
  shade: selected ? '05' : undefined
59
- }, name))), !pinned && (handleEditFilterGrouping || handleDeleteFilterGrouping) && /*#__PURE__*/React.createElement("section", {
65
+ }, name)), hasInvalidParams && (invalidTooltipText ? /*#__PURE__*/React.createElement(UTTooltip, {
66
+ content: invalidTooltipText,
67
+ tippyProps: {
68
+ appendTo: () => document.body,
69
+ placement: 'top'
70
+ }
71
+ }, /*#__PURE__*/React.createElement("span", {
72
+ className: classes.hasInvalidParamsTooltipContainer
73
+ }, /*#__PURE__*/React.createElement(UTIcon, {
74
+ colorTheme: "warning",
75
+ dataTestId: "".concat(dataTestId, ".").concat(ID_CONSTANTS.INVALID_PARAMS),
76
+ name: invalidIconName,
77
+ size: invalidIconSize
78
+ }))) : /*#__PURE__*/React.createElement(UTIcon, {
79
+ colorTheme: "warning",
80
+ dataTestId: "".concat(dataTestId, ".").concat(ID_CONSTANTS.INVALID_PARAMS),
81
+ name: invalidIconName,
82
+ size: invalidIconSize
83
+ }))), (!pinned || showActionsOnPinned) && (handleEditFilterGrouping || handleDeleteFilterGrouping) && /*#__PURE__*/React.createElement("section", {
60
84
  className: classes.expandedPanelContentCategoryItemActionsContainer,
61
85
  onAnimationEnd: animationEnd
62
86
  }, handleEditFilterGrouping && /*#__PURE__*/React.createElement(UTTooltip, {
@@ -111,11 +135,17 @@ ExpandedPanelContentCategoryItem.propTypes = {
111
135
  handleDeleteFilterGrouping: func,
112
136
  handleEditFilterGrouping: func,
113
137
  handleSelectFilter: func,
138
+ hasInvalidParams: oneOfType([bool, shape({
139
+ iconName: string,
140
+ size: string,
141
+ tooltipText: string
142
+ })]),
114
143
  id: string,
115
144
  name: string,
116
145
  openItemDescription: func,
117
146
  pinned: bool,
118
147
  position: string,
119
- selected: bool
148
+ selected: bool,
149
+ showActionsOnPinned: bool
120
150
  };
121
151
  export default ExpandedPanelContentCategoryItem;
@@ -1,4 +1,4 @@
1
- import React, { useContext, useRef, useState } from 'react';
1
+ import React, { useContext, useEffect, useRef, useState } from 'react';
2
2
  import { string } from 'prop-types';
3
3
  import UTShortcutPanelContext from '../../../../../../context';
4
4
  import { handleAnimationEnd } from '../../../../../../utils';
@@ -24,6 +24,7 @@ const ExpandedPanelContentHeaderContainer = _ref => {
24
24
  hideAddFilterButton,
25
25
  panelTitle,
26
26
  position,
27
+ searchResetTrigger,
27
28
  searchValue,
28
29
  tooltipsContentMap: {
29
30
  collapseButton,
@@ -31,6 +32,9 @@ const ExpandedPanelContentHeaderContainer = _ref => {
31
32
  }
32
33
  } = useContext(UTShortcutPanelContext);
33
34
  const [searchOpen, setSearchOpen] = useState(false);
35
+ useEffect(() => {
36
+ if (searchResetTrigger > 0) setSearchOpen(false);
37
+ }, [searchResetTrigger]);
34
38
  const handleSearchToggle = () => {
35
39
  handleFilterGroupSearch('');
36
40
  setSearchOpen(!searchOpen);
@@ -20,6 +20,7 @@ const UTShortcutPanelContainer = _ref => {
20
20
  handleSelectFilter,
21
21
  hideAddFilterButton = false,
22
22
  iconProps,
23
+ invalidParamsConfig,
23
24
  noFiltersText,
24
25
  noFiltersTitle,
25
26
  onDeleteFilterGrouping,
@@ -28,6 +29,8 @@ const UTShortcutPanelContainer = _ref => {
28
29
  panelTitle,
29
30
  position = PANEL_POSITIONS.LEFT,
30
31
  scrollProps,
32
+ searchResetKey,
33
+ showActionsOnPinned = false,
31
34
  selectedFilter,
32
35
  startOpen = false,
33
36
  tooltipsContentMap = {}
@@ -36,6 +39,7 @@ const UTShortcutPanelContainer = _ref => {
36
39
  const containerRef = useRef(null);
37
40
  const [open, setOpen] = useState(startOpen);
38
41
  const [filteredValues, setFilteredValues] = useState(false);
42
+ const [searchTerm, setSearchTerm] = useState('');
39
43
  const handleTogglePanel = () => {
40
44
  setOpen(!open);
41
45
  onTogglePanel === null || onTogglePanel === void 0 || onTogglePanel(!open);
@@ -44,8 +48,8 @@ const UTShortcutPanelContainer = _ref => {
44
48
 
45
49
  // TODO: desarrollo en otro PR
46
50
  const handleAddFilterGroup = () => {};
47
- const handleFilterGroupSearch = value => {
48
- const filteredResults = categories.map(category => {
51
+ const applySearch = (value, source) => {
52
+ const filteredResults = source.map(category => {
49
53
  const filters = category.filters.filter(filter => filter.name.toLowerCase().includes(value.toLowerCase()));
50
54
  return {
51
55
  ...category,
@@ -55,6 +59,10 @@ const UTShortcutPanelContainer = _ref => {
55
59
  setFilteredCategories(filteredResults);
56
60
  setFilteredValues(Boolean(value));
57
61
  };
62
+ const handleFilterGroupSearch = value => {
63
+ setSearchTerm(value);
64
+ applySearch(value, categories);
65
+ };
58
66
  const [popperState, setPopperState] = useState({});
59
67
  const openPopper = _ref2 => {
60
68
  let {
@@ -74,8 +82,19 @@ const UTShortcutPanelContainer = _ref => {
74
82
  setPopperState({});
75
83
  };
76
84
  useEffect(() => {
77
- setFilteredCategories(categories);
85
+ if (searchTerm) {
86
+ applySearch(searchTerm, categories);
87
+ } else {
88
+ setFilteredCategories(categories);
89
+ }
78
90
  }, [categories]);
91
+ const [searchResetTrigger, setSearchResetTrigger] = useState(0);
92
+ useEffect(() => {
93
+ setSearchTerm('');
94
+ setFilteredValues(false);
95
+ setFilteredCategories(categories);
96
+ setSearchResetTrigger(prev => prev + 1);
97
+ }, [searchResetKey]);
79
98
  const contextValue = useMemo(() => ({
80
99
  categories: filteredCategories,
81
100
  categoriesConfig,
@@ -90,6 +109,7 @@ const UTShortcutPanelContainer = _ref => {
90
109
  handleTogglePanel,
91
110
  hideAddFilterButton,
92
111
  iconProps,
112
+ invalidParamsConfig,
93
113
  noFiltersText,
94
114
  noFiltersTitle,
95
115
  onDeleteFilterGrouping,
@@ -100,10 +120,12 @@ const UTShortcutPanelContainer = _ref => {
100
120
  popperState,
101
121
  position,
102
122
  scrollProps,
123
+ searchResetTrigger,
103
124
  selectedFilter,
125
+ showActionsOnPinned,
104
126
  theme,
105
127
  tooltipsContentMap
106
- }), [categories, categoriesConfig, classes, disableCollapsibleCategories, filteredCategories, filteredValues, hideAddFilterButton, iconProps, noFiltersText, noFiltersTitle, onDeleteFilterGrouping, onEditFilterGrouping, open, popperState, position, scrollProps, selectedFilter, theme, tooltipsContentMap]);
128
+ }), [categories, categoriesConfig, classes, disableCollapsibleCategories, filteredCategories, filteredValues, hideAddFilterButton, iconProps, invalidParamsConfig, noFiltersText, noFiltersTitle, onDeleteFilterGrouping, onEditFilterGrouping, showActionsOnPinned, open, popperState, position, scrollProps, searchResetTrigger, selectedFilter, theme, tooltipsContentMap]);
107
129
  return /*#__PURE__*/React.createElement(UTShortcutPanelContext.Provider, {
108
130
  value: contextValue
109
131
  }, /*#__PURE__*/React.createElement("section", {
@@ -153,14 +175,21 @@ UTShortcutPanelContainer.propTypes = {
153
175
  handleSelectFilter: func,
154
176
  hideAddFilterButton: bool,
155
177
  iconProps: iconPropTypes,
178
+ invalidParamsConfig: shape({
179
+ iconName: string,
180
+ size: string,
181
+ tooltipText: string
182
+ }),
156
183
  noFiltersText: string,
157
184
  noFiltersTitle: string,
158
185
  onDeleteFilterGrouping: func,
159
186
  onEditFilterGrouping: func,
160
187
  onTogglePanel: func,
188
+ showActionsOnPinned: bool,
161
189
  panelTitle: string,
162
190
  position: string,
163
191
  scrollProps: object,
192
+ searchResetKey: string,
164
193
  selectedFilter: shape({
165
194
  id: number,
166
195
  name: string,
@@ -24,6 +24,7 @@ export default {
24
24
  handleSelectFilter: fn(),
25
25
  hideAddFilterButton: false,
26
26
  iconProps: undefined,
27
+ invalidParamsConfig: undefined,
27
28
  noFiltersTitle: data.NO_FILTERS_TITLE,
28
29
  noFiltersText: data.NO_FILTERS_TEXT,
29
30
  onDeleteFilterGrouping: fn(),
@@ -31,8 +32,10 @@ export default {
31
32
  onTogglePanel: fn(),
32
33
  panelTitle: data.PANEL_TITLE,
33
34
  position: data.POSITION,
35
+ searchResetKey: undefined,
34
36
  selectedFilter: undefined,
35
37
  scrollProps: undefined,
38
+ showActionsOnPinned: false,
36
39
  startOpen: true,
37
40
  tooltipsContentMap: data.TOOLTIPS_CONTENT_MAP
38
41
  },
@@ -174,6 +177,18 @@ export default {
174
177
  }
175
178
  }
176
179
  },
180
+ invalidParamsConfig: {
181
+ control: 'object',
182
+ description: 'Configuración del ícono de advertencia que se muestra en ítems con `hasInvalidParams: true`. Si se pasa `tooltipText`, el ícono muestra un tooltip al hacer hover. `iconName` e `size` son opcionales (defaults: `IconAlertTriangle`, `16`).',
183
+ table: {
184
+ defaultValue: {
185
+ summary: 'undefined'
186
+ },
187
+ type: {
188
+ summary: '{ iconName?: string; size?: string; tooltipText?: string }'
189
+ }
190
+ }
191
+ },
177
192
  noFiltersTitle: {
178
193
  control: 'text',
179
194
  description: 'Título para el componente de filtros vacíos.',
@@ -271,6 +286,18 @@ export default {
271
286
  }
272
287
  }
273
288
  },
289
+ searchResetKey: {
290
+ control: 'text',
291
+ description: 'Cuando cambia de valor, resetea el estado de búsqueda interna del panel. Útil para limpiar el input al cambiar de tab o categoría.',
292
+ table: {
293
+ defaultValue: {
294
+ summary: 'undefined'
295
+ },
296
+ type: {
297
+ summary: 'string | number'
298
+ }
299
+ }
300
+ },
274
301
  selectedFilter: {
275
302
  control: 'none',
276
303
  description: 'Filtro seleccionado.',
@@ -283,6 +310,18 @@ export default {
283
310
  }
284
311
  }
285
312
  },
313
+ showActionsOnPinned: {
314
+ control: 'boolean',
315
+ description: 'Si es `true`, los botones de editar y eliminar se muestran también en ítems con `pinned: true`. Por defecto son ocultados en filtros pinned.',
316
+ table: {
317
+ defaultValue: {
318
+ summary: 'false'
319
+ },
320
+ type: {
321
+ summary: 'boolean'
322
+ }
323
+ }
324
+ },
286
325
  startOpen: {
287
326
  control: 'boolean',
288
327
  description: 'Indica si el panel se renderiza abierto.',
@@ -107,6 +107,8 @@
107
107
  "name": "Filtro Custom 3",
108
108
  "order": 4,
109
109
  "pinned": false,
110
+ "filter_type": "private",
111
+ "hasInvalidParams": true,
110
112
  "visible": true
111
113
  }
112
114
  ],
@@ -65,7 +65,16 @@
65
65
  },
66
66
  "backoffice_user_id": {
67
67
  "type": ["string", "null"],
68
- "description": "ID of the backoffice user who created this filter, or null for system filters"
68
+ "description": "ID del agente propietario del filtro."
69
+ },
70
+ "filter_type": {
71
+ "type": "string",
72
+ "enum": ["private", "supervisor"],
73
+ "description": "Tipo de filtro: 'private' (solo visible para el creador) o 'supervisor' (visible para todos, implica pinned: true)."
74
+ },
75
+ "hasInvalidParams": {
76
+ "type": "boolean",
77
+ "description": "Cuando es true, el ítem muestra el ícono de advertencia. El ícono, su tamaño y el tooltip se configuran desde la prop invalidParamsConfig del panel (defaults: IconAlertTriangle, size 16, sin tooltip). Se computa en el selector makeSelectFilterCategoriesWithValidation."
69
78
  },
70
79
  "filter_params": {
71
80
  "type": "array",
@@ -11,7 +11,6 @@
11
11
  }
12
12
 
13
13
  %actionsContainer {
14
- animation-fill-mode: forwards;
15
14
  display: none;
16
15
  }
17
16
 
@@ -190,8 +189,12 @@
190
189
  overflow: hidden;
191
190
 
192
191
  .hoverableContainer {
193
- flex-grow: 1;
194
- overflow: hidden;
192
+ flex-grow: 1;
193
+ overflow: hidden;
194
+
195
+ &:first-child {
196
+ padding-left: var(--UT-shortcutPanel-item-no-icon-padding-left, 4px);
197
+ }
195
198
  }
196
199
  }
197
200
 
@@ -203,6 +206,11 @@
203
206
  @extend %actionsContainer;
204
207
  }
205
208
 
209
+ .hasInvalidParamsTooltipContainer {
210
+ align-items: center;
211
+ display: flex;
212
+ }
213
+
206
214
  .expandedPanelContentCategoryItemTitleContainerSelected {
207
215
  cursor: default;
208
216
  }
@@ -34,6 +34,7 @@ export const ID_CONSTANTS = {
34
34
  HEADER: 'header',
35
35
  HELP_TEXT: 'helpText',
36
36
  ICON: 'icon',
37
+ INVALID_PARAMS: 'invalidParams',
37
38
  LABEL: 'label',
38
39
  MAIN_BUTTON: 'mainButton',
39
40
  NAME: 'name',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@widergy/energy-ui",
3
- "version": "3.160.0",
3
+ "version": "3.161.0",
4
4
  "description": "Widergy Web Components",
5
5
  "author": "widergy",
6
6
  "license": "MIT",