@gooddata/sdk-ui-filters 11.36.0-alpha.3 → 11.36.0-alpha.7

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.
@@ -4,8 +4,13 @@ import { type ReactNode } from "react";
4
4
  */
5
5
  export interface IAttributeFilterDependencyTooltipProps {
6
6
  tooltipContent: ReactNode;
7
+ /**
8
+ * Accessible label for the dependency icon wrapper. Already-localized string announced
9
+ * by screen readers in place of the visible icon.
10
+ */
11
+ ariaLabel?: string;
7
12
  }
8
13
  /**
9
14
  * @internal
10
15
  */
11
- export declare function AttributeFilterDependencyTooltip({ tooltipContent }: IAttributeFilterDependencyTooltipProps): import("react/jsx-runtime").JSX.Element;
16
+ export declare function AttributeFilterDependencyTooltip({ tooltipContent, ariaLabel }: IAttributeFilterDependencyTooltipProps): import("react/jsx-runtime").JSX.Element;
@@ -3,8 +3,8 @@ import { Bubble, BubbleHoverTrigger, IconBoldHyperlink } from "@gooddata/sdk-ui-
3
3
  /**
4
4
  * @internal
5
5
  */
6
- export function AttributeFilterDependencyTooltip({ tooltipContent }) {
7
- return (_jsx("span", { className: "gd-attribute-filter-dropdown-button-icon-tooltip", children: _jsxs(BubbleHoverTrigger, { children: [
6
+ export function AttributeFilterDependencyTooltip({ tooltipContent, ariaLabel, }) {
7
+ return (_jsx("span", { className: "gd-attribute-filter-dropdown-button-icon-tooltip", "aria-label": ariaLabel, children: _jsxs(BubbleHoverTrigger, { children: [
8
8
  _jsx(IconBoldHyperlink, { width: 12, height: 16 }), _jsx(Bubble, { arrowOffsets: { "bc tl": [-12, 9], "bc tr": [12, 9] }, alignPoints: [{ align: "bc tl" }, { align: "bc tr" }], children: _jsx("div", { className: "gd-attribute-filter-dropdown-button-icon-tooltip__content", children: tooltipContent }) })
9
9
  ] }) }));
10
10
  }
@@ -134,6 +134,13 @@ export interface IAttributeFilterDropdownButtonProps {
134
134
  * @beta
135
135
  */
136
136
  dropdownId?: string;
137
+ /**
138
+ * Overrides the accessible name of the button. When omitted, the name is derived from the
139
+ * rendered title.
140
+ *
141
+ * @beta
142
+ */
143
+ ariaLabel?: string;
137
144
  }
138
145
  /**
139
146
  * Dropdown button for the AttributeFilter.
@@ -147,4 +154,4 @@ export interface IAttributeFilterDropdownButtonProps {
147
154
  *
148
155
  * @beta
149
156
  */
150
- export declare function AttributeFilterDropdownButton({ isOpen, title, selectedItemsCount, totalItemsCount, showSelectionCount, subtitle, disabled, customIcon, isFiltering, isLoading, isLoaded, isError, isDraggable, icon, TooltipContentComponent, titleExtension, onClick, className, buttonRef, buttonId, dropdownId }: IAttributeFilterDropdownButtonProps): import("react/jsx-runtime").JSX.Element;
157
+ export declare function AttributeFilterDropdownButton({ isOpen, title, selectedItemsCount, totalItemsCount, showSelectionCount, subtitle, disabled, customIcon, isFiltering, isLoading, isLoaded, isError, isDraggable, icon, TooltipContentComponent, titleExtension, onClick, className, buttonRef, buttonId, dropdownId, ariaLabel }: IAttributeFilterDropdownButtonProps): import("react/jsx-runtime").JSX.Element;
@@ -19,7 +19,7 @@ import { AttributeFilterButtonTooltip } from "./AttributeFilterButtonTooltip.js"
19
19
  *
20
20
  * @beta
21
21
  */
22
- export function AttributeFilterDropdownButton({ isOpen, title, selectedItemsCount, totalItemsCount, showSelectionCount = true, subtitle, disabled, customIcon, isFiltering, isLoading, isLoaded, isError, isDraggable, icon, TooltipContentComponent, titleExtension, onClick, className, buttonRef, buttonId, dropdownId, }) {
22
+ export function AttributeFilterDropdownButton({ isOpen, title, selectedItemsCount, totalItemsCount, showSelectionCount = true, subtitle, disabled, customIcon, isFiltering, isLoading, isLoaded, isError, isDraggable, icon, TooltipContentComponent, titleExtension, onClick, className, buttonRef, buttonId, dropdownId, ariaLabel, }) {
23
23
  const intl = useIntl();
24
24
  const subtitleSelectedItemsRef = useRef(null);
25
25
  const [displayItemCount, setDisplayItemCount] = useState(false);
@@ -55,7 +55,7 @@ export function AttributeFilterDropdownButton({ isOpen, title, selectedItemsCoun
55
55
  }
56
56
  buttonRef.current = element;
57
57
  }, [buttonRef]);
58
- return (_jsx(UiControlButton, { title: `${buttonTitle ?? ""}`, titleClassName: "s-attribute-filter-button-title", subtitle: subtitleNode, subtitleExtension: subtitleExtension, icon: filterIcon, titleExtension: titleSlotExtension, isOpen: isOpen, isDraggable: isDraggable, isError: isError, disabled: disabled, disabledTooltip: disabled ? intl.formatMessage({ id: "filters.locked.filter.tooltip" }) : undefined, onClick: onClick, buttonRef: handleButtonRef, buttonId: buttonId, dropdownId: dropdownId, className: cx("gd-attribute-filter-dropdown-button__next", "s-attribute-filter", `s-${simplifyText(title ?? "")}`, {
58
+ return (_jsx(UiControlButton, { title: `${buttonTitle ?? ""}`, titleClassName: "s-attribute-filter-button-title", subtitle: subtitleNode, subtitleExtension: subtitleExtension, icon: filterIcon, titleExtension: titleSlotExtension, isOpen: isOpen, isDraggable: isDraggable, isError: isError, disabled: disabled, disabledTooltip: disabled ? intl.formatMessage({ id: "filters.locked.filter.tooltip" }) : undefined, onClick: onClick, buttonRef: handleButtonRef, buttonId: buttonId, dropdownId: dropdownId, ariaLabel: ariaLabel, className: cx("gd-attribute-filter-dropdown-button__next", "s-attribute-filter", `s-${simplifyText(title ?? "")}`, {
59
59
  "gd-message error": isError,
60
60
  "gd-is-filtering": isFiltering,
61
61
  "gd-is-active": isOpen,
@@ -75,7 +75,10 @@ export function ArbitraryValuesInput(props) {
75
75
  "gd-chips-input__container--warning": hasValuesLimitReachedWarning && !hasValuesLimitExceededError,
76
76
  "gd-chips-input__container--with-values": hasValues,
77
77
  "gd-chips-input__container--empty": !hasValues,
78
- }), children: [hasValues ? (_jsx("div", { className: "gd-chips-input__chips-frame", onPaste: handlePaste, ref: chipsContainerRef, children: _jsx("div", { className: "gd-chips-input__chips", role: "group", "aria-labelledby": groupValuesId, ref: valuesGroupRef, onBlur: makeValuesGroupUnfocusable, children: values.map((value, index) => (_jsx(UiTag, { label: getDisplayLabel(value), isDeletable: true, isDisabled: disabled, dataTestId: `s-text-filter-value-tag-${index}`, tabIndex: -1, onDelete: () => handleRemoveValue(value, index), onDeleteKeyDown: (event) => {
78
+ }), children: [hasValues ? (_jsx("div", { className: "gd-chips-input__chips-frame", onPaste: handlePaste, ref: chipsContainerRef, children: _jsx("div", { className: "gd-chips-input__chips", role: "group", "aria-labelledby": groupValuesId, ref: valuesGroupRef, onBlur: makeValuesGroupUnfocusable, children: values.map((value, index) => (_jsx(UiTag, { label: getDisplayLabel(value), isDeletable: true, isDisabled: disabled, dataTestId: `s-text-filter-value-tag-${index}`, tabIndex: -1, onDelete: (e) => {
79
+ e.preventDefault();
80
+ handleRemoveValue(value, index);
81
+ }, onDeleteKeyDown: (event) => {
79
82
  if (event.key === "Enter" || event.key === " ") {
80
83
  event.preventDefault();
81
84
  event.stopPropagation();
@@ -96,6 +99,9 @@ export function ArbitraryValuesInput(props) {
96
99
  "gd-chips-input__autocomplete-item--active": index === activeAutocompleteIndex,
97
100
  }), role: "option", "aria-selected": index === activeAutocompleteIndex,
98
101
  // Prevent the input from blurring when clicking a suggestion.
99
- onMouseDown: (e) => e.preventDefault(), onClick: () => handleSelectSuggestion(suggestion), children: highlightMatch(suggestion, inputValue) }, suggestion))))) : null }), _jsx("div", { className: "sr-only", "aria-live": "polite", "aria-atomic": "true", role: "status", children: valuesAnnouncement })
102
+ onMouseDown: (e) => e.preventDefault(), onClick: (e) => {
103
+ e.preventDefault();
104
+ handleSelectSuggestion(suggestion);
105
+ }, children: highlightMatch(suggestion, inputValue) }, suggestion))))) : null }), _jsx("div", { className: "sr-only", "aria-live": "polite", "aria-atomic": "true", role: "status", children: valuesAnnouncement })
100
106
  ] }));
101
107
  }
@@ -94,8 +94,24 @@ export function FilterGroup(props) {
94
94
  return;
95
95
  }
96
96
  function AttributeFilterComponent(attributeFilterProps) {
97
+ // When the filter swaps between Loading / Error / DropdownButton renderings,
98
+ // the focused DOM node is unmounted. Capture focus on ref-cleanup and
99
+ // re-apply it when the replacement mounts, so the user doesn't visually lose focus.
100
+ const wasFocusedRef = useRef(false);
97
101
  const setFilterItemRef = useCallback((element) => {
102
+ if (element === null) {
103
+ const prev = filterItemRefs.current.get(filterIdentifier);
104
+ wasFocusedRef.current =
105
+ !!prev &&
106
+ (prev === document.activeElement || prev.contains(document.activeElement));
107
+ filterItemRefs.current.set(filterIdentifier, null);
108
+ return;
109
+ }
98
110
  filterItemRefs.current.set(filterIdentifier, element);
111
+ if (wasFocusedRef.current) {
112
+ wasFocusedRef.current = false;
113
+ element.focus();
114
+ }
99
115
  }, []);
100
116
  const onError = useCallback((error) => errorHandler(filterIdentifier)(error), []);
101
117
  const onInitLoadingChanged = useCallback((loading) => {
@@ -109,8 +125,8 @@ export function FilterGroup(props) {
109
125
  return (_jsx(CustomDropdownButtonComponent, { ...props, titleExtension: _jsxs(_Fragment, { children: [props.titleExtension, titleExtension, _jsx(FilterButtonCustomIcon, { customIcon: props.customIcon, disabled: props.disabled })
110
126
  ] }), buttonRef: handleButtonRef }));
111
127
  }, [attributeFilterProps.DropdownButtonComponent, setFilterItemRef]);
112
- const LoadingComponent = useCallback(() => _jsx(FilterGroupItem, { isLoading: true }), []);
113
- const ErrorComponent = useCallback(() => _jsx(FilterGroupItem, { isError: true }), []);
128
+ const LoadingComponent = useCallback(() => _jsx(FilterGroupItem, { isLoading: true, buttonRef: setFilterItemRef }), [setFilterItemRef]);
129
+ const ErrorComponent = useCallback(() => _jsx(FilterGroupItem, { isError: true, buttonRef: setFilterItemRef }), [setFilterItemRef]);
114
130
  const ElementsSearchBarComponent = useCallback((props) => (_jsx(AttributeFilterElementsSearchBar, { ...props, onKeyDown: (e) => {
115
131
  // allow space key to be handled by filter search bar
116
132
  // and not stolen by filter group dropdown keyboard navigation
@@ -124,10 +140,10 @@ export function FilterGroup(props) {
124
140
  });
125
141
  return result;
126
142
  }, [availableFilterIdentifiers, getTitleExtension, errorHandler, initLoadingChangedHandler]);
127
- const renderItem = useCallback(({ item, rowIndex }) => {
143
+ const renderItem = useCallback(({ item }) => {
128
144
  const identifier = getFilterIdentifier(item);
129
145
  const AttributeFilterComponent = attributeFilterComponentsByIdentifier.get(identifier);
130
- return (_jsx("div", { role: "row", "aria-rowindex": rowIndex + 1, children: _jsx("div", { role: "gridcell", children: renderFilter(item, AttributeFilterComponent) }) }));
146
+ return renderFilter(item, AttributeFilterComponent);
131
147
  }, [attributeFilterComponentsByIdentifier, getFilterIdentifier, renderFilter]);
132
148
  const handleKeyDownCapture = useCallback((e) => {
133
149
  if (isSpaceKey(e) && isEditableElement(e.target)) {
@@ -148,12 +164,22 @@ export function FilterGroup(props) {
148
164
  }
149
165
  filterItem.click();
150
166
  }, [getFilterIdentifier]);
151
- const renderBody = useCallback(({ isMobile, closeDropdown }) => (_jsx("div", { onKeyDownCapture: handleKeyDownCapture, onKeyDown: handleKeyDown, children: _jsx(DropdownList, { className: "gd-filter-group-body", items: filters, maxHeight: 450, itemHeight: 53, accessibilityConfig: {
152
- role: "grid",
153
- ariaLabel: title,
154
- }, renderItem: renderItem, onKeyDownSelect: handleItemKeyboardAction, closeDropdown: closeDropdown, isMobile: isMobile }) })), [filters, renderItem, handleKeyDown, handleKeyDownCapture, handleItemKeyboardAction, title]);
167
+ const groupAriaLabel = intl.formatMessage({ id: "filterGroup.aria.label" }, { title });
168
+ const groupAriaLabelWithState = intl.formatMessage({ id: "filterGroup.aria.label.withState" }, { title, state: subtitle });
169
+ const renderBody = useCallback(({ isMobile, closeDropdown }) => (_jsx("div", { role: "dialog", "aria-label": groupAriaLabel, onKeyDownCapture: handleKeyDownCapture, onKeyDown: handleKeyDown, children: _jsx(DropdownList, { className: "gd-filter-group-body", items: filters, maxHeight: 450, itemHeight: 53, accessibilityConfig: {
170
+ role: "list",
171
+ ariaLabel: groupAriaLabel,
172
+ }, renderItem: renderItem, onKeyDownSelect: handleItemKeyboardAction, closeDropdown: closeDropdown, isMobile: isMobile }) })), [filters, renderItem, handleKeyDown, handleKeyDownCapture, handleItemKeyboardAction, groupAriaLabel]);
155
173
  const isMobile = useMediaQuery("mobileDevice");
156
- const renderButton = useCallback(({ toggleDropdown, isOpen, buttonRef, dropdownId }) => (_jsx("div", { className: cx({ "gd-is-mobile": isMobile && isOpen }), children: _jsx(AttributeFilterDropdownButton, { title: title, subtitle: subtitle, isLoaded: !isAnyFilterError, isOpen: isOpen, selectedItemsCount: selectedItemsCount, totalItemsCount: totalItemsCount, showSelectionCount: selectedItemsCount !== undefined || totalItemsCount !== undefined, icon: _jsx(UiIcon, { type: "folder", size: 12, color: "currentColor" }), dropdownId: dropdownId, buttonRef: buttonRef, onClick: toggleDropdown, isError: isAnyFilterError }) })), [title, subtitle, isAnyFilterError, selectedItemsCount, totalItemsCount, isMobile]);
174
+ const renderButton = useCallback(({ toggleDropdown, isOpen, buttonRef, dropdownId }) => (_jsx("div", { className: cx({ "gd-is-mobile": isMobile && isOpen }), children: _jsx(AttributeFilterDropdownButton, { title: title, subtitle: subtitle, isLoaded: !isAnyFilterError, isOpen: isOpen, selectedItemsCount: selectedItemsCount, totalItemsCount: totalItemsCount, showSelectionCount: selectedItemsCount !== undefined || totalItemsCount !== undefined, icon: _jsx(UiIcon, { type: "folder", size: 12, color: "currentColor" }), dropdownId: dropdownId, buttonRef: buttonRef, onClick: toggleDropdown, isError: isAnyFilterError, ariaLabel: groupAriaLabelWithState }) })), [
175
+ title,
176
+ subtitle,
177
+ isAnyFilterError,
178
+ selectedItemsCount,
179
+ totalItemsCount,
180
+ isMobile,
181
+ groupAriaLabelWithState,
182
+ ]);
157
183
  return (_jsx(Dropdown, { isOpen: isOpen, className: "gd-filter-group", closeOnParentScroll: true, closeOnMouseDrag: true, closeOnOutsideClick: true, closeOnEscape: true, ignoreClicksOnByClass: IGNORE_CLICKS_ON_BY_CLASS, enableEventPropagation: true, alignPoints: GROUP_ALIGN_POINTS, fullscreenOnMobile: true, autofocusOnOpen: true, renderButton: renderButton, renderBody: renderBody, onOpenStateChanged: setIsOpen }));
158
184
  }
159
185
  /**
@@ -28,7 +28,7 @@ export function MeasureValueFilterDetailsBubble({ title, requestHandler, }) {
28
28
  return (_jsx("span", { className: "gd-mvf-details-bubble__trigger", children: _jsx(UiTooltip, { anchor: _jsx("span", { className: "s-mvf-details-trigger", children: _jsx(UiIconButton, { icon: "question", size: "xsmall", variant: "tertiary", iconColor: "complementary-7", label: intl.formatMessage(messages["measureValueFilterDetailsInfoButtonLabel"]), accessibilityConfig: {
29
29
  ariaLabel: intl.formatMessage(messages["measureValueFilterDetailsInfoButtonLabel"]),
30
30
  ariaExpanded: isOpen,
31
- }, dataTestId: "mvf-details-trigger" }) }), content: tooltipContent, triggerBy: ["hover", "focus"], onOpen: handleOpen, onClose: handleClose, arrowPlacement: "left", showArrow: false, behaviour: "tooltip", variant: "none", accessibilityConfig: {
31
+ }, dataTestId: "mvf-details-trigger" }) }), content: tooltipContent, triggerBy: ["hover", "focus"], hoverCloseDelay: 0, onOpen: handleOpen, onClose: handleClose, arrowPlacement: "left", showArrow: false, behaviour: "tooltip", variant: "none", accessibilityConfig: {
32
32
  ariaLabel: intl.formatMessage(messages["measureValueFilterDetailsInfoButtonLabel"]),
33
33
  } }) }));
34
34
  }
package/esm/internal.d.ts CHANGED
@@ -7,3 +7,4 @@ export { CalendarTypeTabs } from "./DateFilter/DateFilterBody/CalendarTypeTabs.j
7
7
  export { normalizeSelectedFilterOption } from "./DateFilter/utils/FilterOptionNormalization.js";
8
8
  export { ListItem } from "./DateFilter/ListItem/ListItem.js";
9
9
  export { ListItemTooltip } from "./DateFilter/ListItemTooltip/ListItemTooltip.js";
10
+ export { MeasureValueFilterDetailsBubble } from "./MeasureValueFilter/MeasureValueFilterDetailsBubble.js";
package/esm/internal.js CHANGED
@@ -9,3 +9,4 @@ export { CalendarTypeTabs } from "./DateFilter/DateFilterBody/CalendarTypeTabs.j
9
9
  export { normalizeSelectedFilterOption } from "./DateFilter/utils/FilterOptionNormalization.js";
10
10
  export { ListItem } from "./DateFilter/ListItem/ListItem.js";
11
11
  export { ListItemTooltip } from "./DateFilter/ListItemTooltip/ListItemTooltip.js";
12
+ export { MeasureValueFilterDetailsBubble } from "./MeasureValueFilter/MeasureValueFilterDetailsBubble.js";
@@ -184,7 +184,7 @@ export declare function AttributeFilterDeleteButton({ onDelete }: IAttributeFilt
184
184
  /**
185
185
  * @internal
186
186
  */
187
- export declare function AttributeFilterDependencyTooltip({ tooltipContent }: IAttributeFilterDependencyTooltipProps): JSX.Element;
187
+ export declare function AttributeFilterDependencyTooltip({ tooltipContent, ariaLabel }: IAttributeFilterDependencyTooltipProps): JSX.Element;
188
188
 
189
189
  /**
190
190
  * This component displays two buttons Apply and Cancel.
@@ -218,7 +218,7 @@ export declare function AttributeFilterDropdownBody({ onApplyButtonClick, onCanc
218
218
  *
219
219
  * @beta
220
220
  */
221
- export declare function AttributeFilterDropdownButton({ isOpen, title, selectedItemsCount, totalItemsCount, showSelectionCount, subtitle, disabled, customIcon, isFiltering, isLoading, isLoaded, isError, isDraggable, icon, TooltipContentComponent, titleExtension, onClick, className, buttonRef, buttonId, dropdownId }: IAttributeFilterDropdownButtonProps): JSX.Element;
221
+ export declare function AttributeFilterDropdownButton({ isOpen, title, selectedItemsCount, totalItemsCount, showSelectionCount, subtitle, disabled, customIcon, isFiltering, isLoading, isLoaded, isError, isDraggable, icon, TooltipContentComponent, titleExtension, onClick, className, buttonRef, buttonId, dropdownId, ariaLabel }: IAttributeFilterDropdownButtonProps): JSX.Element;
222
222
 
223
223
  /**
224
224
  * It displays three state a checkbox and allow select all or none elements that respect current search criteria.
@@ -2008,6 +2008,11 @@ export declare interface IAttributeFilterDeleteButtonProps {
2008
2008
  */
2009
2009
  export declare interface IAttributeFilterDependencyTooltipProps {
2010
2010
  tooltipContent: ReactNode;
2011
+ /**
2012
+ * Accessible label for the dependency icon wrapper. Already-localized string announced
2013
+ * by screen readers in place of the visible icon.
2014
+ */
2015
+ ariaLabel?: string;
2011
2016
  }
2012
2017
 
2013
2018
  /**
@@ -2213,6 +2218,13 @@ export declare interface IAttributeFilterDropdownButtonProps {
2213
2218
  * @beta
2214
2219
  */
2215
2220
  dropdownId?: string;
2221
+ /**
2222
+ * Overrides the accessible name of the button. When omitted, the name is derived from the
2223
+ * rendered title.
2224
+ *
2225
+ * @beta
2226
+ */
2227
+ ariaLabel?: string;
2216
2228
  }
2217
2229
 
2218
2230
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gooddata/sdk-ui-filters",
3
- "version": "11.36.0-alpha.3",
3
+ "version": "11.36.0-alpha.7",
4
4
  "description": "GoodData.UI SDK - Filter Components",
5
5
  "license": "MIT",
6
6
  "author": "GoodData Corporation",
@@ -47,11 +47,11 @@
47
47
  "ts-invariant": "0.10.3",
48
48
  "tslib": "2.8.1",
49
49
  "uuid": "11.1.0",
50
- "@gooddata/sdk-backend-spi": "11.36.0-alpha.3",
51
- "@gooddata/sdk-model": "11.36.0-alpha.3",
52
- "@gooddata/sdk-ui-kit": "11.36.0-alpha.3",
53
- "@gooddata/util": "11.36.0-alpha.3",
54
- "@gooddata/sdk-ui": "11.36.0-alpha.3"
50
+ "@gooddata/sdk-backend-spi": "11.36.0-alpha.7",
51
+ "@gooddata/sdk-model": "11.36.0-alpha.7",
52
+ "@gooddata/sdk-ui": "11.36.0-alpha.7",
53
+ "@gooddata/sdk-ui-kit": "11.36.0-alpha.7",
54
+ "@gooddata/util": "11.36.0-alpha.7"
55
55
  },
56
56
  "devDependencies": {
57
57
  "@microsoft/api-documenter": "^7.17.0",
@@ -93,12 +93,12 @@
93
93
  "typescript": "5.9.3",
94
94
  "vitest": "4.1.0",
95
95
  "vitest-dom": "0.1.1",
96
- "@gooddata/eslint-config": "11.36.0-alpha.3",
97
- "@gooddata/oxlint-config": "11.36.0-alpha.3",
98
- "@gooddata/reference-workspace": "11.36.0-alpha.3",
99
- "@gooddata/sdk-ui-theme-provider": "11.36.0-alpha.3",
100
- "@gooddata/sdk-backend-mockingbird": "11.36.0-alpha.3",
101
- "@gooddata/stylelint-config": "11.36.0-alpha.3"
96
+ "@gooddata/eslint-config": "11.36.0-alpha.7",
97
+ "@gooddata/oxlint-config": "11.36.0-alpha.7",
98
+ "@gooddata/reference-workspace": "11.36.0-alpha.7",
99
+ "@gooddata/sdk-ui-theme-provider": "11.36.0-alpha.7",
100
+ "@gooddata/sdk-backend-mockingbird": "11.36.0-alpha.7",
101
+ "@gooddata/stylelint-config": "11.36.0-alpha.7"
102
102
  },
103
103
  "peerDependencies": {
104
104
  "react": "^18.0.0 || ^19.0.0",
@@ -16,12 +16,12 @@
16
16
  overscroll-behavior: contain;
17
17
  margin: 0;
18
18
  }
19
- .dropdown-body .gd-infinite-list.gd-filter-group-body .fixedDataTableRowLayout_rowWrapper .gd-filter-group-item,
20
- .gd-mobile-dropdown-content .gd-infinite-list.gd-filter-group-body .fixedDataTableRowLayout_rowWrapper .gd-filter-group-item {
19
+ .dropdown-body .gd-infinite-list.gd-filter-group-body .gd-ui-kit-paged-virtual-list__item .gd-filter-group-item,
20
+ .gd-mobile-dropdown-content .gd-infinite-list.gd-filter-group-body .gd-ui-kit-paged-virtual-list__item .gd-filter-group-item {
21
21
  border-bottom: 1px solid var(--gd-palette-complementary-3, #dde4eb);
22
22
  }
23
- .dropdown-body .gd-infinite-list.gd-filter-group-body .fixedDataTableRowLayout_rowWrapper:last-child .gd-filter-group-item,
24
- .gd-mobile-dropdown-content .gd-infinite-list.gd-filter-group-body .fixedDataTableRowLayout_rowWrapper:last-child .gd-filter-group-item {
23
+ .dropdown-body .gd-infinite-list.gd-filter-group-body .gd-ui-kit-paged-virtual-list__item:last-child .gd-filter-group-item,
24
+ .gd-mobile-dropdown-content .gd-infinite-list.gd-filter-group-body .gd-ui-kit-paged-virtual-list__item:last-child .gd-filter-group-item {
25
25
  border-bottom: none;
26
26
  }
27
27
  .dropdown-body .gd-infinite-list.gd-filter-group-body .gd-attribute-filter__next,
@@ -9541,12 +9541,12 @@ div.gd-empty-item-bubble {
9541
9541
  overscroll-behavior: contain;
9542
9542
  margin: 0;
9543
9543
  }
9544
- .dropdown-body .gd-infinite-list.gd-filter-group-body .fixedDataTableRowLayout_rowWrapper .gd-filter-group-item,
9545
- .gd-mobile-dropdown-content .gd-infinite-list.gd-filter-group-body .fixedDataTableRowLayout_rowWrapper .gd-filter-group-item {
9544
+ .dropdown-body .gd-infinite-list.gd-filter-group-body .gd-ui-kit-paged-virtual-list__item .gd-filter-group-item,
9545
+ .gd-mobile-dropdown-content .gd-infinite-list.gd-filter-group-body .gd-ui-kit-paged-virtual-list__item .gd-filter-group-item {
9546
9546
  border-bottom: 1px solid var(--gd-palette-complementary-3, #dde4eb);
9547
9547
  }
9548
- .dropdown-body .gd-infinite-list.gd-filter-group-body .fixedDataTableRowLayout_rowWrapper:last-child .gd-filter-group-item,
9549
- .gd-mobile-dropdown-content .gd-infinite-list.gd-filter-group-body .fixedDataTableRowLayout_rowWrapper:last-child .gd-filter-group-item {
9548
+ .dropdown-body .gd-infinite-list.gd-filter-group-body .gd-ui-kit-paged-virtual-list__item:last-child .gd-filter-group-item,
9549
+ .gd-mobile-dropdown-content .gd-infinite-list.gd-filter-group-body .gd-ui-kit-paged-virtual-list__item:last-child .gd-filter-group-item {
9550
9550
  border-bottom: none;
9551
9551
  }
9552
9552
  .dropdown-body .gd-infinite-list.gd-filter-group-body .gd-attribute-filter__next,
@@ -19,7 +19,7 @@
19
19
  overscroll-behavior: contain;
20
20
  margin: 0;
21
21
 
22
- & .fixedDataTableRowLayout_rowWrapper {
22
+ & .gd-ui-kit-paged-virtual-list__item {
23
23
  .gd-filter-group-item {
24
24
  border-bottom: 1px solid variables.$gd-border-color;
25
25
  }