@gooddata/sdk-ui-kit 11.42.0 → 11.43.0-alpha.1

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 (73) hide show
  1. package/esm/@ui/UiGranteeAsyncPicker/UiGranteeAsyncPicker.d.ts.map +1 -1
  2. package/esm/@ui/UiGranteeAsyncPicker/UiGranteeAsyncPicker.js +7 -4
  3. package/esm/@ui/UiGranteeRow/UiGranteeRow.d.ts +3 -1
  4. package/esm/@ui/UiGranteeRow/UiGranteeRow.d.ts.map +1 -1
  5. package/esm/@ui/UiGranteeRow/UiGranteeRow.js +2 -2
  6. package/esm/@ui/UiGranteeRowControls/UiGranteeRowControls.d.ts +15 -15
  7. package/esm/@ui/UiGranteeRowControls/UiGranteeRowControls.d.ts.map +1 -1
  8. package/esm/@ui/UiGranteeRowControls/UiGranteeRowControls.js +20 -18
  9. package/esm/@ui/UiLabelsChecklist/UiLabelsChecklist.d.ts +44 -0
  10. package/esm/@ui/UiLabelsChecklist/UiLabelsChecklist.d.ts.map +1 -0
  11. package/esm/@ui/UiLabelsChecklist/UiLabelsChecklist.js +76 -0
  12. package/esm/@ui/UiMoreOptionsMenu/UiMoreOptionsMenu.d.ts +23 -0
  13. package/esm/@ui/UiMoreOptionsMenu/UiMoreOptionsMenu.d.ts.map +1 -0
  14. package/esm/@ui/UiMoreOptionsMenu/UiMoreOptionsMenu.js +83 -0
  15. package/esm/@ui/UiObjectShareDialog/UiObjectShareDialogCard.d.ts +2 -0
  16. package/esm/@ui/UiObjectShareDialog/UiObjectShareDialogCard.d.ts.map +1 -1
  17. package/esm/@ui/UiObjectShareDialog/UiObjectShareDialogCard.js +1 -1
  18. package/esm/@ui/UiPermissionMenu/UiPermissionMenu.d.ts +4 -15
  19. package/esm/@ui/UiPermissionMenu/UiPermissionMenu.d.ts.map +1 -1
  20. package/esm/@ui/UiPermissionMenu/UiPermissionMenu.js +11 -23
  21. package/esm/@ui/UiPopover/UiPopover.d.ts +10 -1
  22. package/esm/@ui/UiPopover/UiPopover.d.ts.map +1 -1
  23. package/esm/@ui/UiPopover/UiPopover.js +2 -2
  24. package/esm/@ui/UiTag/UiTag.d.ts +1 -0
  25. package/esm/@ui/UiTag/UiTag.d.ts.map +1 -1
  26. package/esm/@ui/UiTag/UiTag.js +10 -4
  27. package/esm/@ui/UiTags/UiTag.d.ts +0 -2
  28. package/esm/@ui/UiTags/UiTag.d.ts.map +1 -1
  29. package/esm/@ui/UiTags/UiTag.js +14 -9
  30. package/esm/@ui/UiTags/UiTags.d.ts.map +1 -1
  31. package/esm/@ui/UiTags/UiTags.js +38 -24
  32. package/esm/@ui/UiTags/interactions.d.ts +4 -9
  33. package/esm/@ui/UiTags/interactions.d.ts.map +1 -1
  34. package/esm/@ui/UiTags/interactions.js +58 -228
  35. package/esm/@ui/UiTooltip/UiTooltip.d.ts +1 -1
  36. package/esm/@ui/UiTooltip/UiTooltip.d.ts.map +1 -1
  37. package/esm/@ui/UiTooltip/UiTooltip.js +17 -9
  38. package/esm/@ui/UiTooltip/types.d.ts +10 -1
  39. package/esm/@ui/UiTooltip/types.d.ts.map +1 -1
  40. package/esm/Button/Button.d.ts.map +1 -1
  41. package/esm/Button/Button.js +2 -2
  42. package/esm/Icon/icons/InsightIcons/Radar.d.ts.map +1 -1
  43. package/esm/Icon/icons/InsightIcons/Radar.js +3 -1
  44. package/esm/List/MenuList.d.ts +2 -1
  45. package/esm/List/MenuList.d.ts.map +1 -1
  46. package/esm/List/MenuList.js +2 -2
  47. package/esm/index.d.ts +2 -1
  48. package/esm/index.d.ts.map +1 -1
  49. package/esm/index.js +2 -1
  50. package/esm/locales.d.ts +11 -4
  51. package/esm/locales.d.ts.map +1 -1
  52. package/esm/locales.js +5 -4
  53. package/esm/sdk-ui-kit.d.ts +101 -84
  54. package/esm/tsdoc-metadata.json +1 -1
  55. package/package.json +11 -11
  56. package/src/@ui/UiGranteeAsyncPicker/UiGranteeAsyncPicker.scss +12 -0
  57. package/src/@ui/UiGranteeRow/UiGranteeRow.scss +5 -0
  58. package/src/@ui/UiGranteeRowControls/UiGranteeRowControls.scss +7 -0
  59. package/src/@ui/{UiLabelsPicker/UiLabelsPicker.scss → UiLabelsChecklist/UiLabelsChecklist.scss} +2 -7
  60. package/src/@ui/UiModalDialog/UiModalDialog.scss +11 -1
  61. package/src/@ui/UiMoreOptionsMenu/UiMoreOptionsMenu.scss +10 -0
  62. package/src/@ui/UiPermissionMenu/UiPermissionMenu.scss +0 -7
  63. package/src/@ui/UiTabs/UiTabs.scss +0 -1
  64. package/src/@ui/UiTag/UiTag.scss +4 -0
  65. package/src/@ui/UiTags/UiTags.scss +5 -1
  66. package/src/@ui/index.scss +2 -1
  67. package/styles/css/main.css +53 -21
  68. package/styles/css/main.css.map +1 -1
  69. package/styles/images/visualization-types/radar-active.svg +10 -6
  70. package/styles/images/visualization-types/radar.svg +16 -5
  71. package/esm/@ui/UiLabelsPicker/UiLabelsPicker.d.ts +0 -64
  72. package/esm/@ui/UiLabelsPicker/UiLabelsPicker.d.ts.map +0 -1
  73. package/esm/@ui/UiLabelsPicker/UiLabelsPicker.js +0 -89
@@ -4444,6 +4444,7 @@ export declare interface IItemProps {
4444
4444
  children: ReactNode;
4445
4445
  className?: string;
4446
4446
  style?: CSSProperties;
4447
+ testId?: string;
4447
4448
  onClick?: (e: MouseEvent_2<HTMLDivElement>) => void;
4448
4449
  }
4449
4450
 
@@ -5961,14 +5962,12 @@ export declare interface ISingleSelectListItemProps {
5961
5962
  }
5962
5963
 
5963
5964
  /**
5964
- * Predicate the picker uses to decide whether an item is effectively selected:
5965
- * locked items always count as selected, otherwise membership in the staged
5966
- * `selected` set. Exported so consumers (e.g. the grantee row counter) can
5967
- * apply the same rule without re-encoding it.
5965
+ * Whether an item counts as selected: locked items always do, otherwise
5966
+ * membership in `selectedIds`. Exported so callers apply the same rule.
5968
5967
  *
5969
5968
  * @internal
5970
5969
  */
5971
- export declare const isLabelsPickerItemChecked: (item: IUiLabelsPickerItem, selectedIds: readonly string[]) => boolean;
5970
+ export declare const isLabelsChecklistItemChecked: (item: IUiLabelsChecklistItem, selectedIds: readonly string[]) => boolean;
5972
5971
 
5973
5972
  /**
5974
5973
  * @internal
@@ -6185,7 +6184,7 @@ export declare interface ITabsState {
6185
6184
  /**
6186
6185
  * @internal
6187
6186
  */
6188
- export declare function Item({ checked, subMenu, disabled, className, children, style, onClick }: IItemProps): JSX.Element;
6187
+ export declare function Item({ checked, subMenu, disabled, className, children, style, testId, onClick }: IItemProps): JSX.Element;
6189
6188
 
6190
6189
  /**
6191
6190
  * Base template definition without localized name.
@@ -7367,21 +7366,21 @@ export declare interface IUiGranteeAvatarProps {
7367
7366
  * @internal
7368
7367
  */
7369
7368
  export declare interface IUiGranteeRowControlsProps {
7370
- /** All labels available on the parent attribute. */
7371
- labels: ReadonlyArray<IUiLabelsPickerItem>;
7372
- /** Currently selected label ids. Locked items are always treated as selected. */
7369
+ /** Locked items are always treated as selected. */
7370
+ labels: ReadonlyArray<IUiLabelsChecklistItem>;
7373
7371
  selectedLabelIds: ReadonlyArray<string>;
7374
- /** Current permission level for the grantee. */
7375
7372
  permissionLevel: PermissionMenuLevel;
7376
- /** Fires when the labels picker commits a new selection. */
7373
+ /**
7374
+ * Set only when the grantee inherits a higher permission than `permissionLevel`
7375
+ * (e.g. from a group); drives the warning badge. Undefined when not elevated.
7376
+ */
7377
+ effectivePermission?: PermissionMenuLevel;
7377
7378
  onLabelsChange: (selectedIds: string[]) => void;
7378
- /** Fires when the user picks a new permission level. */
7379
7379
  onPermissionChange: (level: PermissionMenuLevel) => void;
7380
- /** Fires when the user picks Transfer ownership in the permission menu. */
7381
7380
  onTransferOwnership?: () => void;
7382
- /** Fires when the user picks Remove access in the permission menu. */
7383
7381
  onRemoveAccess?: () => void;
7384
- /** Test id forwarded to the root element. */
7382
+ /** Disables both triggers, e.g. while the row's change is saving. */
7383
+ isDisabled?: boolean;
7385
7384
  dataTestId?: string;
7386
7385
  }
7387
7386
 
@@ -7397,6 +7396,8 @@ export declare interface IUiGranteeRowProps {
7397
7396
  email?: string;
7398
7397
  /** When true, an "Owner" tag is rendered between the text block and the controls slot. */
7399
7398
  isOwner?: boolean;
7399
+ /** When true, the row is visually muted to signal an in-flight save. */
7400
+ isPending?: boolean;
7400
7401
  /** Trailing controls slot — typically the `UiGranteeRowControls` trigger pair. */
7401
7402
  controls?: ReactNode;
7402
7403
  /** Test id forwarded to the root element. */
@@ -7539,71 +7540,55 @@ export declare interface IUiLabelRowProps {
7539
7540
  }
7540
7541
 
7541
7542
  /**
7542
- * One label entry in the list.
7543
+ * One label entry in the checklist.
7543
7544
  *
7544
7545
  * @internal
7545
7546
  */
7546
- export declare interface IUiLabelsListItem {
7547
- /** Stable identifier for React keys. */
7547
+ export declare interface IUiLabelsChecklistItem {
7548
7548
  id: string;
7549
- /** Label text. */
7550
7549
  label: string;
7551
- /** Drives the icon + suffix. Omit for a regular label. */
7552
7550
  kind?: LabelRowKind;
7551
+ /** Locked rows render checked + disabled and are always included (the primary key). */
7552
+ locked?: boolean;
7553
7553
  }
7554
7554
 
7555
7555
  /**
7556
7556
  * @internal
7557
7557
  */
7558
- export declare interface IUiLabelsListProps {
7559
- /** Label items to render in source order. */
7560
- items: ReadonlyArray<IUiLabelsListItem>;
7561
- /** Test id forwarded to the root element. */
7558
+ export declare interface IUiLabelsChecklistProps {
7559
+ items: ReadonlyArray<IUiLabelsChecklistItem>;
7560
+ /** Locked items are always selected regardless of this. */
7561
+ defaultSelectedIds: ReadonlyArray<string>;
7562
+ /** Fires on Apply with the locked-augmented selection (staged internally until then). */
7563
+ onApply: (selectedIds: string[]) => void;
7564
+ /** Back arrow — returns to the parent view. */
7565
+ onBack: () => void;
7566
+ /** Dismisses the menu; Cancel and (post-commit) Apply both call it. */
7567
+ onClose: () => void;
7562
7568
  dataTestId?: string;
7563
7569
  }
7564
7570
 
7565
7571
  /**
7566
- * One label entry in the picker.
7572
+ * One label entry in the list.
7567
7573
  *
7568
7574
  * @internal
7569
7575
  */
7570
- export declare interface IUiLabelsPickerItem {
7571
- /** Stable identifier used as the React key and in selection state. */
7576
+ export declare interface IUiLabelsListItem {
7577
+ /** Stable identifier for React keys. */
7572
7578
  id: string;
7573
7579
  /** Label text. */
7574
7580
  label: string;
7575
7581
  /** Drives the icon + suffix. Omit for a regular label. */
7576
7582
  kind?: LabelRowKind;
7577
- /**
7578
- * When true the item is rendered locked (checked + disabled). Used for
7579
- * the primary-key row, which is always included.
7580
- */
7581
- locked?: boolean;
7582
7583
  }
7583
7584
 
7584
7585
  /**
7585
7586
  * @internal
7586
7587
  */
7587
- export declare interface IUiLabelsPickerProps {
7588
- /** Element that opens the picker on click. */
7589
- anchor: ReactElement<any>;
7590
- /** All available label items, in source order. */
7591
- items: ReadonlyArray<IUiLabelsPickerItem>;
7592
- /**
7593
- * Initial set of selected item ids. Locked items are always treated as
7594
- * selected regardless of what's passed here. Consumers that need to
7595
- * reset the staged state when switching contexts (e.g. picking labels
7596
- * for a different grantee) should pass `key={contextId}` so React
7597
- * remounts the picker body.
7598
- */
7599
- defaultSelectedIds: ReadonlyArray<string>;
7600
- /**
7601
- * Fires when the user clicks Apply with the (locked-augmented) set of
7602
- * selected ids. The picker keeps its own staged state — the caller is
7603
- * notified only on commit.
7604
- */
7605
- onApply: (selectedIds: string[]) => void;
7606
- /** Test id forwarded to the picker body. */
7588
+ export declare interface IUiLabelsListProps {
7589
+ /** Label items to render in source order. */
7590
+ items: ReadonlyArray<IUiLabelsListItem>;
7591
+ /** Test id forwarded to the root element. */
7607
7592
  dataTestId?: string;
7608
7593
  }
7609
7594
 
@@ -7972,6 +7957,21 @@ export declare interface IUiModalDialogProps {
7972
7957
  dataTestId?: string;
7973
7958
  }
7974
7959
 
7960
+ /**
7961
+ * @internal
7962
+ */
7963
+ export declare interface IUiMoreOptionsMenuProps {
7964
+ /** Empty/omitted hides the "Manage labels access" row (e.g. facts have no labels). */
7965
+ labels?: ReadonlyArray<IUiLabelsChecklistItem>;
7966
+ /** Locked items are always treated as selected. */
7967
+ selectedLabelIds?: ReadonlyArray<string>;
7968
+ onLabelsChange?: (selectedIds: string[]) => void;
7969
+ /** Omit to hide the row (Transfer ownership is gated until wired). */
7970
+ onTransferOwnership?: () => void;
7971
+ isDisabled?: boolean;
7972
+ dataTestId?: string;
7973
+ }
7974
+
7975
7975
  /**
7976
7976
  * @internal
7977
7977
  */
@@ -8036,6 +8036,8 @@ export declare interface IUiObjectShareDialogGrantee {
8036
8036
  email?: string;
8037
8037
  /** When true, the row is rendered with the "Owner" tag instead of controls. */
8038
8038
  isOwner?: boolean;
8039
+ /** When true, the row is visually muted to signal an in-flight save. */
8040
+ isPending?: boolean;
8039
8041
  /** Per-row controls — usually `UiGranteeRowControls`. Owner rows leave this empty. */
8040
8042
  controls?: ReactNode;
8041
8043
  }
@@ -8180,18 +8182,6 @@ export declare interface IUiPermissionMenuProps {
8180
8182
  selectedLevel?: PermissionMenuLevel;
8181
8183
  /** Fires when the user picks a permission level. */
8182
8184
  onPermissionChange: (level: PermissionMenuLevel) => void;
8183
- /** Fires when the user picks Transfer ownership. */
8184
- onTransferOwnership?: () => void;
8185
- /**
8186
- * Fires when the user picks the Labels entry. Display the count via
8187
- * `labelsCounter`.
8188
- */
8189
- onLabelsClick?: () => void;
8190
- /**
8191
- * Counter shown next to the Labels row (e.g. `"4/4"`). Hidden
8192
- * if omitted.
8193
- */
8194
- labelsCounter?: string;
8195
8185
  /** Fires when the user picks Remove access. */
8196
8186
  onRemoveAccess?: () => void;
8197
8187
  /** Test id forwarded to the menu body. */
@@ -8253,6 +8243,15 @@ export declare interface IUiPopoverProps {
8253
8243
  * When true, uses UiFocusManager's focus trap instead of tabOutHandler
8254
8244
  */
8255
8245
  enableFocusTrap?: boolean;
8246
+ /**
8247
+ * Controls the open state. When set, the popover ignores anchor clicks and
8248
+ * opens/closes purely from this prop; pair with `onOpenChange` to
8249
+ * react to outside-click / Escape. When omitted the popover stays
8250
+ * uncontrolled and opens on anchor click as before.
8251
+ */
8252
+ isOpen?: boolean;
8253
+ /** Fires when an interaction (outside-click, Escape) requests an open-state change. */
8254
+ onOpenChange?: (open: boolean) => void;
8256
8255
  onOpen?: () => void;
8257
8256
  onClose?: () => void;
8258
8257
  }
@@ -8823,9 +8822,18 @@ export declare interface IUiTooltipProps {
8823
8822
  */
8824
8823
  onClose?: () => void;
8825
8824
  /**
8826
- * Controls the open state of the tooltip, overrides the triggerBy prop if set
8825
+ * Controls the open state of the tooltip, overrides the triggerBy prop if set.
8826
+ * In controlled mode the anchor's own hover/focus/click triggers are
8827
+ * suppressed — open state is driven solely by this prop — but outside-click
8828
+ * and Escape still request a close via `onOpenChange`.
8827
8829
  */
8828
8830
  isOpen?: boolean;
8831
+ /**
8832
+ * Fires whenever an interaction requests an open-state change (anchor
8833
+ * triggers when uncontrolled, outside-click / Escape always). Pair with
8834
+ * `isOpen` to drive the tooltip from the parent.
8835
+ */
8836
+ onOpenChange?: (open: boolean) => void;
8829
8837
  /**
8830
8838
  * Custom styles for the anchor wrapper element
8831
8839
  */
@@ -10615,17 +10623,17 @@ export declare function UiGranteeAvatar({ kind, decorative, dataTestId }: IUiGra
10615
10623
  *
10616
10624
  * @internal
10617
10625
  */
10618
- export declare function UiGranteeRow({ kind, name, email, isOwner, controls, dataTestId }: IUiGranteeRowProps): JSX.Element;
10626
+ export declare function UiGranteeRow({ kind, name, email, isOwner, isPending, controls, dataTestId }: IUiGranteeRowProps): JSX.Element;
10619
10627
 
10620
10628
  /**
10621
- * Pair of controls shown on every grantee row in the OLP share dialog:
10622
- * a labels-picker trigger and a permission-menu trigger. Both triggers are
10623
- * Tertiary `small` `UiButton`s with `chevronDown`
10624
- * and open their respective popovers on click.
10629
+ * Per-row controls in the OLP share dialog: a permission trigger
10630
+ * ({@link UiPermissionMenu}) plus a "⋯" menu ({@link UiMoreOptionsMenu}) for
10631
+ * labels access and Transfer ownership, with an optional inherited-permission
10632
+ * warning badge.
10625
10633
  *
10626
10634
  * @internal
10627
10635
  */
10628
- export declare function UiGranteeRowControls({ labels, selectedLabelIds, permissionLevel, onLabelsChange, onPermissionChange, onTransferOwnership, onRemoveAccess, dataTestId }: IUiGranteeRowControlsProps): JSX.Element;
10636
+ export declare function UiGranteeRowControls({ labels, selectedLabelIds, permissionLevel, effectivePermission, onLabelsChange, onPermissionChange, onTransferOwnership, onRemoveAccess, isDisabled, dataTestId }: IUiGranteeRowControlsProps): JSX.Element;
10629
10637
 
10630
10638
  /**
10631
10639
  * @internal
@@ -10668,22 +10676,21 @@ export declare function UiLabelChecklistRow({ label, kind, suffix, checked, disa
10668
10676
  export declare function UiLabelRow({ label, kind, suffix, leading, labelId, onClick, dataTestId }: IUiLabelRowProps): JSX.Element;
10669
10677
 
10670
10678
  /**
10671
- * Read-only list of labels uppercase heading + N `UiLabelRow`s.
10672
- * Renders only the panel content; whoever needs a popover wraps it.
10679
+ * Per-label checklist drill-in for the grantee "⋯" menu. Stages selection
10680
+ * internally, commits via `onApply`, and renders its own back-only header so it
10681
+ * slots into {@link UiMenu} as a `showComponentOnly` content item.
10673
10682
  *
10674
10683
  * @internal
10675
10684
  */
10676
- export declare function UiLabelsList({ items, dataTestId }: IUiLabelsListProps): JSX.Element;
10685
+ export declare function UiLabelsChecklist({ items, defaultSelectedIds, onApply, onBack, onClose, dataTestId }: IUiLabelsChecklistProps): JSX.Element;
10677
10686
 
10678
10687
  /**
10679
- * Per-label picker popover. Anchored on a click target; stages selection
10680
- * internally and commits via `onApply`. Locked items are always included
10681
- * — at render time via {@link isLabelsPickerItemChecked} and again at
10682
- * commit via the locked-aware filter.
10688
+ * Read-only list of labels uppercase heading + N `UiLabelRow`s.
10689
+ * Renders only the panel content; whoever needs a popover wraps it.
10683
10690
  *
10684
10691
  * @internal
10685
10692
  */
10686
- export declare function UiLabelsPicker({ anchor, items, defaultSelectedIds, onApply, dataTestId }: IUiLabelsPickerProps): JSX.Element;
10693
+ export declare function UiLabelsList({ items, dataTestId }: IUiLabelsListProps): JSX.Element;
10687
10694
 
10688
10695
  /**
10689
10696
  * @internal
@@ -10740,6 +10747,14 @@ export declare function UiMenu<T extends IUiMenuItemData = object, M extends obj
10740
10747
  */
10741
10748
  export declare function UiModalDialog({ children, isOpen, onClose, width, accessibilityConfig, dataTestId }: IUiModalDialogProps): JSX.Element | null;
10742
10749
 
10750
+ /**
10751
+ * Per-grantee "⋯" menu: "Manage labels access" (drills into {@link UiLabelsChecklist})
10752
+ * and "Transfer ownership". Each row shows only when its data/handler is given.
10753
+ *
10754
+ * @internal
10755
+ */
10756
+ export declare function UiMoreOptionsMenu({ labels, selectedLabelIds, onLabelsChange, onTransferOwnership, isDisabled, dataTestId }: IUiMoreOptionsMenuProps): JSX.Element;
10757
+
10743
10758
  /**
10744
10759
  * @internal
10745
10760
  */
@@ -10797,17 +10812,18 @@ export declare type UiPaginationButtonSize = "small" | "large";
10797
10812
  /**
10798
10813
  * Per-grantee permission popover. Renders a fixed set of rows — two
10799
10814
  * permission levels (Can view & share / Can view), an optional divider,
10800
- * and optional Transfer ownership / Labels / Remove access action rows.
10801
- * Each level row carries an `infoCircle` tooltip.
10815
+ * and an optional Remove access action row. Each level row carries an
10816
+ * `infoCircle` tooltip. Labels and Transfer ownership live in the separate
10817
+ * {@link UiMoreOptionsMenu}.
10802
10818
  *
10803
10819
  * @internal
10804
10820
  */
10805
- export declare function UiPermissionMenu({ anchor, selectedLevel, onPermissionChange, onTransferOwnership, onLabelsClick, labelsCounter, onRemoveAccess, dataTestId }: IUiPermissionMenuProps): JSX.Element;
10821
+ export declare function UiPermissionMenu({ anchor, selectedLevel, onPermissionChange, onRemoveAccess, dataTestId }: IUiPermissionMenuProps): JSX.Element;
10806
10822
 
10807
10823
  /**
10808
10824
  * @internal
10809
10825
  */
10810
- export declare function UiPopover({ id, accessibilityConfig, anchor, anchorAccessibilityConfig, width, title, tabIndex, disabled, content, footer, closeText, closeVisible, initialFocus, returnFocusTo, triggerBy, returnFocusAfterClose, focusCheckFn, enableFocusTrap, onOpen, onClose }: IUiPopoverProps): JSX.Element;
10826
+ export declare function UiPopover({ id, accessibilityConfig, anchor, anchorAccessibilityConfig, width, title, tabIndex, disabled, content, footer, closeText, closeVisible, initialFocus, returnFocusTo, triggerBy, returnFocusAfterClose, focusCheckFn, enableFocusTrap, isOpen, onOpenChange, onOpen, onClose }: IUiPopoverProps): JSX.Element;
10811
10827
 
10812
10828
  /**
10813
10829
  * Standalone radio control — renders a native `<input type="radio">` for
@@ -10927,6 +10943,7 @@ export declare type UiTagProps = {
10927
10943
  onDeleteKeyDown?: (event: KeyboardEvent_2<HTMLButtonElement>) => void;
10928
10944
  tabIndex?: number;
10929
10945
  deleteTabIndex?: number;
10946
+ labelAs?: "button" | "span";
10930
10947
  };
10931
10948
 
10932
10949
  /**
@@ -11010,7 +11027,7 @@ export declare function UiToastsContainer({ dataTestId }: IUiToastsContainerProp
11010
11027
  /**
11011
11028
  * @internal
11012
11029
  */
11013
- export declare function UiTooltip({ id, anchor, content, behaviour, arrowPlacement, triggerBy, hoverOpenDelay, hoverCloseDelay, showArrow, width, offset: offsetProp, optimalPlacement, accessibilityConfig, variant, disabled, isOpen: isOpenProp, onOpen, onClose, anchorWrapperStyles }: IUiTooltipProps): JSX.Element;
11030
+ export declare function UiTooltip({ id, anchor, content, behaviour, arrowPlacement, triggerBy, hoverOpenDelay, hoverCloseDelay, showArrow, width, offset: offsetProp, optimalPlacement, accessibilityConfig, variant, disabled, isOpen: isOpenProp, onOpen, onClose, onOpenChange, anchorWrapperStyles }: IUiTooltipProps): JSX.Element;
11014
11031
 
11015
11032
  /**
11016
11033
  * @internal
@@ -5,7 +5,7 @@
5
5
  "toolPackages": [
6
6
  {
7
7
  "packageName": "@microsoft/api-extractor",
8
- "packageVersion": "7.58.7"
8
+ "packageVersion": "7.58.9"
9
9
  }
10
10
  ]
11
11
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gooddata/sdk-ui-kit",
3
- "version": "11.42.0",
3
+ "version": "11.43.0-alpha.1",
4
4
  "description": "GoodData SDK - UI Building Components",
5
5
  "license": "MIT",
6
6
  "author": "GoodData Corporation",
@@ -75,11 +75,11 @@
75
75
  "tslib": "2.8.1",
76
76
  "unified": "^11.0.5",
77
77
  "uuid": "11.1.1",
78
- "@gooddata/sdk-backend-spi": "11.42.0",
79
- "@gooddata/sdk-model": "11.42.0",
80
- "@gooddata/sdk-ui": "11.42.0",
81
- "@gooddata/util": "11.42.0",
82
- "@gooddata/sdk-ui-theme-provider": "11.42.0"
78
+ "@gooddata/sdk-backend-spi": "11.43.0-alpha.1",
79
+ "@gooddata/sdk-model": "11.43.0-alpha.1",
80
+ "@gooddata/sdk-ui": "11.43.0-alpha.1",
81
+ "@gooddata/util": "11.43.0-alpha.1",
82
+ "@gooddata/sdk-ui-theme-provider": "11.43.0-alpha.1"
83
83
  },
84
84
  "devDependencies": {
85
85
  "@microsoft/api-documenter": "^7.17.0",
@@ -128,11 +128,11 @@
128
128
  "typescript": "5.9.3",
129
129
  "vitest": "4.1.8",
130
130
  "vitest-dom": "0.1.1",
131
- "@gooddata/eslint-config": "11.42.0",
132
- "@gooddata/reference-workspace": "11.42.0",
133
- "@gooddata/sdk-backend-mockingbird": "11.42.0",
134
- "@gooddata/oxlint-config": "11.42.0",
135
- "@gooddata/stylelint-config": "11.42.0"
131
+ "@gooddata/oxlint-config": "11.43.0-alpha.1",
132
+ "@gooddata/reference-workspace": "11.43.0-alpha.1",
133
+ "@gooddata/eslint-config": "11.43.0-alpha.1",
134
+ "@gooddata/sdk-backend-mockingbird": "11.43.0-alpha.1",
135
+ "@gooddata/stylelint-config": "11.43.0-alpha.1"
136
136
  },
137
137
  "peerDependencies": {
138
138
  "react": "^18.0.0 || ^19.0.0",
@@ -3,6 +3,18 @@
3
3
  flex-direction: column;
4
4
  gap: 12px;
5
5
 
6
+ &__field {
7
+ display: flex;
8
+ flex-direction: column;
9
+ gap: var(--gd-spacing-5px);
10
+ }
11
+
12
+ &__field-label {
13
+ font-size: 14px;
14
+ line-height: 21px;
15
+ color: var(--gd-palette-complementary-7);
16
+ }
17
+
6
18
  &__empty-state {
7
19
  min-height: 50px;
8
20
  display: flex;
@@ -9,6 +9,11 @@
9
9
  padding: var(--gd-spacing-5px) 0;
10
10
  box-sizing: border-box;
11
11
 
12
+ // Muted while a change for this row is being saved (its controls are disabled too).
13
+ &--pending {
14
+ opacity: 0.6;
15
+ }
16
+
12
17
  &__text {
13
18
  flex: 1 1 auto;
14
19
  min-width: 0;
@@ -5,4 +5,11 @@
5
5
  align-items: center;
6
6
  gap: var(--gd-spacing-10px);
7
7
  flex-shrink: 0;
8
+
9
+ // Warning badge shown when the effective permission exceeds the assigned one.
10
+ &__effective-warning {
11
+ display: inline-flex;
12
+ align-items: center;
13
+ cursor: default;
14
+ }
8
15
  }
@@ -1,16 +1,11 @@
1
1
  // (C) 2026 GoodData Corporation
2
2
 
3
- // Rendered inside UiPopover.__content (which adds 10px padding + 20px gap).
4
- // Pull the padding back so the rows stretch edge-to-edge of the popover and
5
- // disable the gap. The actions strip sits flush at the bottom with its own
6
- // top border.
3
+ // Cancel UiPopover.__content's 10px padding so rows reach edge-to-edge.
7
4
 
8
- .gd-ui-kit-labels-picker {
5
+ .gd-ui-kit-labels-checklist {
9
6
  align-self: stretch;
10
7
  display: flex;
11
8
  flex-direction: column;
12
- // UiPopover's __content adds 10px padding all around. Pull it back so rows
13
- // reach edge-to-edge of the popover; the popover sets its own width.
14
9
  margin: calc(-1 * var(--gd-spacing-10px));
15
10
 
16
11
  &__items {
@@ -4,9 +4,19 @@
4
4
  display: flex;
5
5
  align-items: center;
6
6
  justify-content: center;
7
- background: var(--gd-modal-outsideBackgroundColor);
7
+
8
+ // Dimmed backdrop on a pseudo-element so the overlay tint never bleeds onto
9
+ // the card. Matches the legacy `.modalityPlugin-mask` (outside colour at 0.9).
10
+ &::before {
11
+ content: "";
12
+ position: absolute;
13
+ inset: 0;
14
+ background: var(--gd-modal-outsideBackgroundColor);
15
+ opacity: 0.9;
16
+ }
8
17
 
9
18
  &__card {
19
+ position: relative;
10
20
  display: flex;
11
21
  flex-direction: column;
12
22
  max-height: calc(100vh - 80px);
@@ -0,0 +1,10 @@
1
+ // (C) 2026 GoodData Corporation
2
+
3
+ // Cancel UiPopover.__content's 10px padding so the menu spans edge-to-edge.
4
+
5
+ .gd-ui-kit-more-options-menu {
6
+ align-self: stretch;
7
+ display: flex;
8
+ flex-direction: column;
9
+ margin: calc(-1 * var(--gd-spacing-10px));
10
+ }
@@ -69,11 +69,4 @@
69
69
  text-overflow: ellipsis;
70
70
  white-space: nowrap;
71
71
  }
72
-
73
- &__item-counter {
74
- flex-shrink: 0;
75
- font-size: 12px;
76
- line-height: 18px;
77
- color: var(--gd-palette-complementary-6);
78
- }
79
72
  }
@@ -3,7 +3,6 @@
3
3
  .gd-ui-kit-tabs {
4
4
  $root: &;
5
5
 
6
- background: var(--gd-palette-complementary-0);
7
6
  font-family: var(--gd-font-family);
8
7
  display: flex;
9
8
  align-items: flex-end;
@@ -32,6 +32,10 @@ $tag_large_gap: 5px;
32
32
  overflow: hidden;
33
33
  text-overflow: ellipsis;
34
34
 
35
+ &:focus {
36
+ outline: 2px solid variables.$gd-input-text-border-outline;
37
+ }
38
+
35
39
  .gd-ui-kit-tooltip__anchor {
36
40
  display: inline-flex;
37
41
  overflow: hidden;
@@ -137,12 +137,12 @@ $tags_tooltip_viewport_margin: 160px;
137
137
  max-width: $tags_tooltip_max_width;
138
138
  width: $tags_tooltip_max_width;
139
139
  max-height: calc(100vh - #{$tags_tooltip_viewport_margin});
140
- overflow-x: hidden;
141
140
  overflow-y: auto;
142
141
  overscroll-behavior: contain;
143
142
  flex-direction: row;
144
143
  flex-wrap: wrap;
145
144
  gap: 5px;
145
+ padding: 2px;
146
146
 
147
147
  @include tag(0);
148
148
 
@@ -152,3 +152,7 @@ $tags_tooltip_viewport_margin: 160px;
152
152
  @include tagFocused();
153
153
  }
154
154
  }
155
+
156
+ .gd-ui-kit-tags__hidden-tags button:focus-visible {
157
+ outline: 2px solid variables.$gd-input-text-border-outline;
158
+ }
@@ -44,9 +44,10 @@
44
44
  @use "./UiAddGranteeDialog/UiAddGranteeDialog.scss";
45
45
  @use "./UiGranteeAsyncPicker/UiGranteeAsyncPicker.scss";
46
46
  @use "./UiGeneralAccessRadio/UiGeneralAccessRadio.scss";
47
+ @use "./UiLabelsChecklist/UiLabelsChecklist.scss";
47
48
  @use "./UiLabelRow/UiLabelRow.scss";
48
49
  @use "./UiLabelsList/UiLabelsList.scss";
49
- @use "./UiLabelsPicker/UiLabelsPicker.scss";
50
+ @use "./UiMoreOptionsMenu/UiMoreOptionsMenu.scss";
50
51
  @use "./UiPermissionMenu/UiPermissionMenu.scss";
51
52
  @use "./UiGranteeRowControls/UiGranteeRowControls.scss";
52
53
  @use "./UiToast/UiToast.scss";