@gooddata/sdk-ui-kit 11.42.0-alpha.2 → 11.42.0-alpha.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/@ui/@types/icon.d.ts +1 -1
- package/esm/@ui/@types/icon.d.ts.map +1 -1
- package/esm/@ui/UiAddGranteeDialog/UiAddGranteeDialog.d.ts +6 -31
- package/esm/@ui/UiAddGranteeDialog/UiAddGranteeDialog.d.ts.map +1 -1
- package/esm/@ui/UiAddGranteeDialog/UiAddGranteeDialog.js +8 -24
- package/esm/@ui/UiAddGranteeDialog/UiAddGranteeDialogCard.d.ts +56 -0
- package/esm/@ui/UiAddGranteeDialog/UiAddGranteeDialogCard.d.ts.map +1 -0
- package/esm/@ui/UiAddGranteeDialog/UiAddGranteeDialogCard.js +40 -0
- package/esm/@ui/UiAddGranteeDialog/useGranteeSelection.d.ts +35 -0
- package/esm/@ui/UiAddGranteeDialog/useGranteeSelection.d.ts.map +1 -0
- package/esm/@ui/UiAddGranteeDialog/useGranteeSelection.js +29 -0
- package/esm/@ui/UiAutocomplete/UiAutocomplete.d.ts +9 -0
- package/esm/@ui/UiAutocomplete/UiAutocomplete.d.ts.map +1 -0
- package/esm/@ui/UiAutocomplete/UiAutocomplete.js +230 -0
- package/esm/@ui/UiAutocomplete/types.d.ts +61 -0
- package/esm/@ui/UiAutocomplete/types.d.ts.map +1 -0
- package/esm/@ui/UiAutocomplete/types.js +2 -0
- package/esm/@ui/UiAutocomplete/useAsyncListSource.d.ts +42 -0
- package/esm/@ui/UiAutocomplete/useAsyncListSource.d.ts.map +1 -0
- package/esm/@ui/UiAutocomplete/useAsyncListSource.js +112 -0
- package/esm/@ui/UiCombobox/UiComboboxInput.d.ts +7 -2
- package/esm/@ui/UiCombobox/UiComboboxInput.d.ts.map +1 -1
- package/esm/@ui/UiCombobox/UiComboboxInput.js +2 -2
- package/esm/@ui/UiCombobox/useCombobox.d.ts.map +1 -1
- package/esm/@ui/UiCombobox/useCombobox.js +8 -15
- package/esm/@ui/UiCombobox/useComboboxChrome.d.ts +16 -5
- package/esm/@ui/UiCombobox/useComboboxChrome.d.ts.map +1 -1
- package/esm/@ui/UiCombobox/useComboboxChrome.js +53 -25
- package/esm/@ui/UiCombobox/useComboboxSelection.d.ts +2 -3
- package/esm/@ui/UiCombobox/useComboboxSelection.d.ts.map +1 -1
- package/esm/@ui/UiCombobox/useComboboxSelection.js +5 -9
- package/esm/@ui/UiGranteeAsyncPicker/UiGranteeAsyncPicker.d.ts +73 -0
- package/esm/@ui/UiGranteeAsyncPicker/UiGranteeAsyncPicker.d.ts.map +1 -0
- package/esm/@ui/UiGranteeAsyncPicker/UiGranteeAsyncPicker.js +69 -0
- package/esm/@ui/UiIcon/icons.d.ts.map +1 -1
- package/esm/@ui/UiIcon/icons.js +2 -0
- package/esm/@ui/UiTags/UiTags.js +1 -1
- package/esm/Dialog/StylingEditorDialog/StylingEditorDialog.d.ts +8 -0
- package/esm/Dialog/StylingEditorDialog/StylingEditorDialog.d.ts.map +1 -1
- package/esm/Dialog/StylingEditorDialog/StylingEditorDialog.js +28 -3
- package/esm/Dropdown/Dropdown.d.ts +4 -2
- package/esm/Dropdown/Dropdown.d.ts.map +1 -1
- package/esm/Dropdown/Dropdown.js +2 -2
- package/esm/WidgetNotice/WidgetNotice.d.ts.map +1 -1
- package/esm/WidgetNotice/WidgetNotice.js +1 -1
- package/esm/index.d.ts +4 -0
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +3 -0
- package/esm/locales.d.ts +34 -0
- package/esm/locales.d.ts.map +1 -1
- package/esm/locales.js +14 -0
- package/esm/sdk-ui-kit.d.ts +217 -26
- package/package.json +11 -11
- package/src/@ui/UiAddGranteeDialog/UiAddGranteeDialog.scss +0 -14
- package/src/@ui/UiAutocomplete/UiAutocomplete.scss +53 -0
- package/src/@ui/UiGranteeAsyncPicker/UiGranteeAsyncPicker.scss +28 -0
- package/src/@ui/index.scss +2 -0
- package/styles/css/main.css +65 -5
- package/styles/css/main.css.map +1 -1
package/esm/sdk-ui-kit.d.ts
CHANGED
|
@@ -884,7 +884,7 @@ export declare function DomainHomepageLink({ onClick }: IDomainHomepageLinkProps
|
|
|
884
884
|
/**
|
|
885
885
|
* @internal
|
|
886
886
|
*/
|
|
887
|
-
export declare function Dropdown({ isOpen: isOpenProp, onToggle, className, openOnInit, closeOnParentScroll, closeOnMouseDrag, closeOnOutsideClick, overlayPositionType, alignPoints, overlayZIndex, ignoreClicksOnByClass, renderBody, renderButton, onOpenStateChanged, fullscreenOnMobile, enableEventPropagation, enableAutoToggle, closeOnEscape, autofocusOnOpen, initialFocus, returnFocusTo, accessibilityConfig, shouldTrapFocus }: IDropdownProps): JSX.Element;
|
|
887
|
+
export declare function Dropdown({ isOpen: isOpenProp, onToggle, className, openOnInit, closeOnParentScroll, closeOnMouseDrag, closeOnOutsideClick, overlayPositionType, alignPoints, overlayZIndex, ignoreClicksOnByClass, renderBody, renderButton, onOpenStateChanged, onAlign, fullscreenOnMobile, enableEventPropagation, enableAutoToggle, closeOnEscape, autofocusOnOpen, initialFocus, returnFocusTo, accessibilityConfig, shouldTrapFocus }: IDropdownProps): JSX.Element;
|
|
888
888
|
|
|
889
889
|
/**
|
|
890
890
|
* @internal
|
|
@@ -2599,7 +2599,7 @@ export declare function IconTreeMap({ className, width, height, color, ariaHidde
|
|
|
2599
2599
|
/**
|
|
2600
2600
|
* @internal
|
|
2601
2601
|
*/
|
|
2602
|
-
export declare type IconType = "aiAgent" | "aiAgentDisabled" | "brain" | "brainDisabled" | "check" | "checkCircle" | "certification" | "plus" | "plusCircle" | "sync" | "alert" | "alertPaused" | "close" | "cross" | "edit" | "crossCircle" | "question" | "chevronUp" | "chevronRight" | "chevronDown" | "chevronLeft" | "date" | "navigateUp" | "navigateDown" | "navigateRight" | "navigateLeft" | "download" | "slack" | "expand" | "exclamationCircle" | "infoCircle" | "book" | "visible" | "invisible" | "lock" | "unlock" | "ai" | "aiFill" | "drawer" | "drawerEmpty" | "prohibited" | "dropDown" | "dropRight" | "clock" | "clockPaused" | "questionMark" | "upload" | "expandRectangle" | "file" | "number" | "code" | "user" | "userPlus" | "users" | "magic" | "tab" | "pauseCircle" | "filter" | "timer" | "mail" | "envelope" | "copy" | "rain" | "earth" | "geoCollection" | "geoCollectionUpload" | "minimize" | "shrink" | "copyright" | "ellipsis" | "pencil" | "folder" | "folderSmall" | "folderPlus" | "trash" | "arrowUp" | "arrowRight" | "arrowDown" | "arrowLeft" | "undo" | "redo" | "trendDown" | "trendUp" | "save" | "minus" | "minusCircle" | "percent" | "enter" | "enterRight" | "money" | "ghost" | "warning" | "home" | "settings" | "search" | "university" | "printer" | "picture" | "visualization" | "dashboard" | "metric" | "fact" | "ldmAttribute" | "ldmKey" | "ldmLabel" | "sharp" | "attribute" | "horn" | "cw" | "ccw" | "table" | "directionColumn" | "directionRow" | "header" | "genai" | "genai2" | "explainai" | "hiddenForAi" | "box" | "ellipsisVertical" | "list" | "drillTo" | "hierarchy" | "history" | "history2" | "thumbsUp" | "thumbsDown" | "send" | "visualizationArea" | "visualizationTable" | "visualizationTreemap" | "visualizationScatter" | "visualizationDonut" | "visualizationHeadline" | "visualizationColumn" | "visualizationLine" | "visualizationPyramid" | "visualizationFunnel" | "visualizationHeatmap" | "visualizationBubble" | "visualizationPie" | "visualizationBar" | "visualizationCombo" | "visualizationBullet" | "visualizationWaterfall" | "visualizationDependencywheel" | "visualizationSankey" | "visualizationPushpin" | "visualizationRepeater" | "visualizationXirr" | "link" | "externalLink" | "click" | "fileXlsx" | "filePptx" | "filePdf" | "fileImage" | "fileCsvFormatted" | "fileCsvRaw" | "aiDocument" | "recommendation" | "streamUp" | "streamDown" | "stream" | "density" | "parameter" | "pin" | "unpin";
|
|
2602
|
+
export declare type IconType = "aiAgent" | "aiAgentDisabled" | "brain" | "brainDisabled" | "check" | "checkCircle" | "certification" | "plus" | "plusCircle" | "sync" | "alert" | "alertPaused" | "close" | "cross" | "edit" | "crossCircle" | "question" | "chevronUp" | "chevronRight" | "chevronDown" | "chevronLeft" | "date" | "navigateUp" | "navigateDown" | "navigateRight" | "navigateLeft" | "download" | "slack" | "expand" | "exclamationCircle" | "infoCircle" | "book" | "visible" | "invisible" | "lock" | "unlock" | "ai" | "aiFill" | "drawer" | "drawerEmpty" | "prohibited" | "dropDown" | "dropRight" | "clock" | "clockPaused" | "questionMark" | "upload" | "expandRectangle" | "file" | "number" | "code" | "user" | "userPlus" | "users" | "magic" | "tab" | "pauseCircle" | "filter" | "timer" | "mail" | "envelope" | "copy" | "rain" | "earth" | "geoCollection" | "geoCollectionUpload" | "minimize" | "shrink" | "copyright" | "ellipsis" | "pencil" | "folder" | "folderSmall" | "folderPlus" | "trash" | "arrowUp" | "arrowRight" | "arrowDown" | "arrowLeft" | "undo" | "redo" | "trendDown" | "trendUp" | "save" | "minus" | "minusCircle" | "percent" | "enter" | "enterRight" | "money" | "ghost" | "warning" | "home" | "settings" | "search" | "university" | "printer" | "picture" | "visualization" | "dashboard" | "metric" | "fact" | "ldmAttribute" | "ldmKey" | "ldmLabel" | "sharp" | "attribute" | "horn" | "cw" | "ccw" | "table" | "directionColumn" | "directionRow" | "header" | "genai" | "genai2" | "explainai" | "hiddenForAi" | "box" | "ellipsisVertical" | "list" | "drillTo" | "hierarchy" | "history" | "history2" | "thumbsUp" | "thumbsDown" | "send" | "visualizationArea" | "visualizationTable" | "visualizationTreemap" | "visualizationScatter" | "visualizationDonut" | "visualizationHeadline" | "visualizationColumn" | "visualizationLine" | "visualizationPyramid" | "visualizationFunnel" | "visualizationHeatmap" | "visualizationBubble" | "visualizationPie" | "visualizationBar" | "visualizationCombo" | "visualizationBullet" | "visualizationWaterfall" | "visualizationDependencywheel" | "visualizationSankey" | "visualizationPushpin" | "visualizationRepeater" | "visualizationXirr" | "link" | "externalLink" | "click" | "fileXlsx" | "filePptx" | "filePdf" | "fileImage" | "fileCsvFormatted" | "fileCsvRaw" | "aiDocument" | "recommendation" | "streamUp" | "streamDown" | "stream" | "density" | "parameter" | "pin" | "unpin" | "speechBubble" | "pieChart";
|
|
2603
2603
|
|
|
2604
2604
|
/**
|
|
2605
2605
|
* @internal
|
|
@@ -3265,6 +3265,8 @@ export declare interface IDropdownProps {
|
|
|
3265
3265
|
closeOnParentScroll?: boolean;
|
|
3266
3266
|
ignoreClicksOnByClass?: string[];
|
|
3267
3267
|
onOpenStateChanged?: (isOpen: boolean) => void;
|
|
3268
|
+
/** Reports the align point the Overlay chose whenever it (re)positions the body. */
|
|
3269
|
+
onAlign?: (alignment: Alignment) => void;
|
|
3268
3270
|
overlayPositionType?: OverlayPositionType;
|
|
3269
3271
|
overlayZIndex?: number;
|
|
3270
3272
|
/**
|
|
@@ -6048,6 +6050,14 @@ export declare interface IStylingEditorDialogProps<T extends StylingPickerItemCo
|
|
|
6048
6050
|
onExit?: (name: string, definition: string) => void;
|
|
6049
6051
|
onInvalidDefinition?: (ref: ObjRef) => void;
|
|
6050
6052
|
showBackButton?: boolean;
|
|
6053
|
+
/**
|
|
6054
|
+
* Optional validation of the parsed definition content (e.g. checking theme color values).
|
|
6055
|
+
*
|
|
6056
|
+
* @remarks
|
|
6057
|
+
* Called only when the definition is valid JSON. Return a localized error message to block
|
|
6058
|
+
* submission and display it, or undefined when the content is valid.
|
|
6059
|
+
*/
|
|
6060
|
+
validateDefinition?: (content: T) => string | undefined;
|
|
6051
6061
|
}
|
|
6052
6062
|
|
|
6053
6063
|
/**
|
|
@@ -6301,36 +6311,51 @@ export declare interface ITypographyProps {
|
|
|
6301
6311
|
/**
|
|
6302
6312
|
* @internal
|
|
6303
6313
|
*/
|
|
6304
|
-
export declare interface
|
|
6305
|
-
/** Whether the dialog is shown. */
|
|
6306
|
-
isOpen: boolean;
|
|
6314
|
+
export declare interface IUiAddGranteeDialogCardProps {
|
|
6307
6315
|
/** Object title shown in the header — wrapped into `Share "\{title\}"`. */
|
|
6308
6316
|
objectTitle: string;
|
|
6309
|
-
/**
|
|
6310
|
-
|
|
6311
|
-
/**
|
|
6312
|
-
|
|
6317
|
+
/** Loader passed straight through to the embedded `UiGranteeAsyncPicker`. */
|
|
6318
|
+
loadOptions: (search: string) => Promise<IUiGranteeAsyncOptions>;
|
|
6319
|
+
/**
|
|
6320
|
+
* Grantees currently picked. Single source of truth — the card derives all
|
|
6321
|
+
* row state from it and emits the next list via `onSelectedGranteesChange`.
|
|
6322
|
+
*/
|
|
6323
|
+
selectedGrantees: ReadonlyArray<IUiPickedGrantee>;
|
|
6324
|
+
/**
|
|
6325
|
+
* Fires with the next list when the user picks a grantee, changes a row's
|
|
6326
|
+
* permission level, or removes a row. Consumers store the result in their
|
|
6327
|
+
* own state.
|
|
6328
|
+
*/
|
|
6329
|
+
onSelectedGranteesChange: (next: IUiPickedGrantee[]) => void;
|
|
6313
6330
|
/**
|
|
6314
|
-
*
|
|
6315
|
-
*
|
|
6316
|
-
*
|
|
6317
|
-
* here to preview the grantee they've picked from the search dropdown.
|
|
6331
|
+
* Permission level used when a grantee is added from the dropdown.
|
|
6332
|
+
* Defaults to `"VIEW"`. Consumers that need a different default (e.g.
|
|
6333
|
+
* "SHARE" for owners) override here.
|
|
6318
6334
|
*/
|
|
6319
|
-
|
|
6335
|
+
initialPermissionLevel?: PermissionMenuLevel;
|
|
6320
6336
|
/** Fires when the user clicks the header back-arrow button. */
|
|
6321
6337
|
onBack: () => void;
|
|
6322
|
-
/** Fires when the user clicks the header X close button
|
|
6338
|
+
/** Fires when the user clicks the header X close button. */
|
|
6323
6339
|
onClose: () => void;
|
|
6324
6340
|
/** Fires when the user clicks Cancel in the footer. */
|
|
6325
6341
|
onCancel: () => void;
|
|
6326
|
-
/**
|
|
6327
|
-
|
|
6328
|
-
|
|
6329
|
-
|
|
6330
|
-
|
|
6342
|
+
/**
|
|
6343
|
+
* Fires when the user clicks the primary Share button in the footer. The
|
|
6344
|
+
* button is disabled while no grantee has been picked.
|
|
6345
|
+
*/
|
|
6346
|
+
onShare: () => void;
|
|
6347
|
+
/** Test id forwarded to the root element. */
|
|
6331
6348
|
dataTestId?: string;
|
|
6332
6349
|
}
|
|
6333
6350
|
|
|
6351
|
+
/**
|
|
6352
|
+
* @internal
|
|
6353
|
+
*/
|
|
6354
|
+
export declare interface IUiAddGranteeDialogProps extends IUiAddGranteeDialogCardProps {
|
|
6355
|
+
/** Whether the dialog is shown. */
|
|
6356
|
+
isOpen: boolean;
|
|
6357
|
+
}
|
|
6358
|
+
|
|
6334
6359
|
/**
|
|
6335
6360
|
* @internal
|
|
6336
6361
|
*/
|
|
@@ -6490,6 +6515,70 @@ export declare interface IUiAsyncTableTitleProps {
|
|
|
6490
6515
|
scrollToStart: () => void;
|
|
6491
6516
|
}
|
|
6492
6517
|
|
|
6518
|
+
/** @internal */
|
|
6519
|
+
export declare interface IUiAutocompleteLoadResult<T extends IUiAutocompleteOption = IUiAutocompleteOption> {
|
|
6520
|
+
sections: IUiAutocompleteSection<T>[];
|
|
6521
|
+
/** Show a "Load more" row whose activation calls the loader with the next page. */
|
|
6522
|
+
hasNextPage?: boolean;
|
|
6523
|
+
}
|
|
6524
|
+
|
|
6525
|
+
/**
|
|
6526
|
+
* User-facing copy overrides. Omitted fields fall back to the kit default.
|
|
6527
|
+
*
|
|
6528
|
+
* @internal
|
|
6529
|
+
*/
|
|
6530
|
+
export declare interface IUiAutocompleteMessages {
|
|
6531
|
+
searchPlaceholder?: string;
|
|
6532
|
+
stateLoading?: string;
|
|
6533
|
+
stateError?: string;
|
|
6534
|
+
stateNoMatch?: string;
|
|
6535
|
+
loadMore?: string;
|
|
6536
|
+
}
|
|
6537
|
+
|
|
6538
|
+
/**
|
|
6539
|
+
* Minimal option shape; specialized pickers map their domain objects onto it.
|
|
6540
|
+
*
|
|
6541
|
+
* @internal
|
|
6542
|
+
*/
|
|
6543
|
+
export declare interface IUiAutocompleteOption {
|
|
6544
|
+
id: string;
|
|
6545
|
+
label: string;
|
|
6546
|
+
/** Secondary label rendered muted next to the primary label. */
|
|
6547
|
+
secondaryText?: string;
|
|
6548
|
+
}
|
|
6549
|
+
|
|
6550
|
+
/** @internal */
|
|
6551
|
+
export declare interface IUiAutocompleteProps<T extends IUiAutocompleteOption = IUiAutocompleteOption> {
|
|
6552
|
+
/**
|
|
6553
|
+
* Called with the debounced search and zero-based `page` index. Page 0
|
|
6554
|
+
* fires on every query change; subsequent pages fire on Load-more.
|
|
6555
|
+
*
|
|
6556
|
+
* Must be referentially stable (memoize with `useCallback`) — it is a
|
|
6557
|
+
* fetch dependency, so a new identity each render re-runs the page-0 query.
|
|
6558
|
+
*/
|
|
6559
|
+
loadOptions: (search: string, page: number) => Promise<IUiAutocompleteLoadResult<T>>;
|
|
6560
|
+
/** Filtered out of the dropdown so the user cannot pick the same option twice. */
|
|
6561
|
+
selectedIds?: ReadonlyArray<string>;
|
|
6562
|
+
onSelect: (option: T) => void;
|
|
6563
|
+
/** Debounce delay for the input → loader path. Defaults to 400 ms. */
|
|
6564
|
+
debounceMs?: number;
|
|
6565
|
+
messages?: IUiAutocompleteMessages;
|
|
6566
|
+
/**
|
|
6567
|
+
* Forwarded to the search input for the accessible name / description.
|
|
6568
|
+
* The combobox-internal attributes (`role`, `ariaExpanded`, `ariaControls`,
|
|
6569
|
+
* `ariaAutocomplete`) are owned by the component and cannot be overridden.
|
|
6570
|
+
*/
|
|
6571
|
+
accessibilityConfig?: IAccessibilityConfigBase;
|
|
6572
|
+
dataTestId?: string;
|
|
6573
|
+
}
|
|
6574
|
+
|
|
6575
|
+
/** @internal */
|
|
6576
|
+
export declare interface IUiAutocompleteSection<T extends IUiAutocompleteOption = IUiAutocompleteOption> {
|
|
6577
|
+
id: string;
|
|
6578
|
+
label: string;
|
|
6579
|
+
options: T[];
|
|
6580
|
+
}
|
|
6581
|
+
|
|
6493
6582
|
/**
|
|
6494
6583
|
* @internal
|
|
6495
6584
|
*/
|
|
@@ -6669,8 +6758,12 @@ export declare interface IUiChipProps {
|
|
|
6669
6758
|
|
|
6670
6759
|
/** @internal */
|
|
6671
6760
|
export declare interface IUiComboboxInputProps {
|
|
6672
|
-
/**
|
|
6673
|
-
|
|
6761
|
+
/**
|
|
6762
|
+
* Accessible name/description for the input (e.g. `ariaLabel`,
|
|
6763
|
+
* `ariaDescribedBy`). The combobox role and listbox-wiring attributes are
|
|
6764
|
+
* owned by the component and override anything passed here.
|
|
6765
|
+
*/
|
|
6766
|
+
accessibilityConfig?: IAccessibilityConfigBase;
|
|
6674
6767
|
/** Visible placeholder. */
|
|
6675
6768
|
placeholder?: string;
|
|
6676
6769
|
/** Form field name forwarded to the underlying input. */
|
|
@@ -7200,6 +7293,60 @@ export declare interface IUiGeneralAccessRadioProps {
|
|
|
7200
7293
|
dataTestId?: string;
|
|
7201
7294
|
}
|
|
7202
7295
|
|
|
7296
|
+
/**
|
|
7297
|
+
* One pickable user or group entry.
|
|
7298
|
+
*
|
|
7299
|
+
* @internal
|
|
7300
|
+
*/
|
|
7301
|
+
export declare interface IUiGranteeAsyncOption {
|
|
7302
|
+
/** Stable identifier — used as the React key and as the value passed to `onSelect`. */
|
|
7303
|
+
id: string;
|
|
7304
|
+
/** Avatar variant. */
|
|
7305
|
+
kind: GranteeAvatarKind;
|
|
7306
|
+
/** Display name shown on the row. */
|
|
7307
|
+
name: string;
|
|
7308
|
+
/** Optional email subline (users only). */
|
|
7309
|
+
email?: string;
|
|
7310
|
+
}
|
|
7311
|
+
|
|
7312
|
+
/**
|
|
7313
|
+
* Result returned by the consumer's loader: separate `groups` and `users` arrays
|
|
7314
|
+
* so the dropdown can render the two sections independently. Either may be empty.
|
|
7315
|
+
*
|
|
7316
|
+
* @internal
|
|
7317
|
+
*/
|
|
7318
|
+
export declare interface IUiGranteeAsyncOptions {
|
|
7319
|
+
groups: IUiGranteeAsyncOption[];
|
|
7320
|
+
users: IUiGranteeAsyncOption[];
|
|
7321
|
+
}
|
|
7322
|
+
|
|
7323
|
+
/**
|
|
7324
|
+
* @internal
|
|
7325
|
+
*/
|
|
7326
|
+
export declare interface IUiGranteeAsyncPickerProps {
|
|
7327
|
+
/**
|
|
7328
|
+
* Loader called whenever the (debounced) search query changes. The empty
|
|
7329
|
+
* string is passed on mount to populate the initial dropdown. Pagination
|
|
7330
|
+
* is intentionally not exposed at this layer — the loader returns the
|
|
7331
|
+
* full search result and the consumer caps backend results elsewhere.
|
|
7332
|
+
*/
|
|
7333
|
+
loadOptions: (search: string) => Promise<IUiGranteeAsyncOptions>;
|
|
7334
|
+
/**
|
|
7335
|
+
* Grantees already picked. Rendered below the search input as `UiGranteeRow`s
|
|
7336
|
+
* with a `UiPermissionMenu` trigger and a Remove action. Also filtered out
|
|
7337
|
+
* of the dropdown so the user cannot pick the same grantee twice.
|
|
7338
|
+
*/
|
|
7339
|
+
selectedGrantees?: ReadonlyArray<IUiPickedGrantee>;
|
|
7340
|
+
/** Fires when the user picks an option from the dropdown. */
|
|
7341
|
+
onSelect: (option: IUiGranteeAsyncOption) => void;
|
|
7342
|
+
/** Fires when the user changes the permission level on a picked row. */
|
|
7343
|
+
onPermissionChange?: (grantee: IUiPickedGrantee, next: PermissionMenuLevel) => void;
|
|
7344
|
+
/** Fires when the user picks Remove access in the row's permission menu. */
|
|
7345
|
+
onRemove?: (grantee: IUiPickedGrantee) => void;
|
|
7346
|
+
/** Test id forwarded to the root element. */
|
|
7347
|
+
dataTestId?: string;
|
|
7348
|
+
}
|
|
7349
|
+
|
|
7203
7350
|
/**
|
|
7204
7351
|
* @internal
|
|
7205
7352
|
*/
|
|
@@ -8051,6 +8198,16 @@ export declare interface IUiPermissionMenuProps {
|
|
|
8051
8198
|
dataTestId?: string;
|
|
8052
8199
|
}
|
|
8053
8200
|
|
|
8201
|
+
/**
|
|
8202
|
+
* A previously-picked grantee with its current permission level.
|
|
8203
|
+
*
|
|
8204
|
+
* @internal
|
|
8205
|
+
*/
|
|
8206
|
+
export declare interface IUiPickedGrantee extends IUiGranteeAsyncOption {
|
|
8207
|
+
/** Permission level chosen for this grantee. Drives the row's permission menu trigger label. */
|
|
8208
|
+
permissionLevel: PermissionMenuLevel;
|
|
8209
|
+
}
|
|
8210
|
+
|
|
8054
8211
|
/**
|
|
8055
8212
|
* @internal
|
|
8056
8213
|
*/
|
|
@@ -10023,13 +10180,28 @@ export declare function Typography({ tagName: Tag, children, className, title, i
|
|
|
10023
10180
|
export declare type TypographyTagName = "h1" | "h2" | "h3" | "p";
|
|
10024
10181
|
|
|
10025
10182
|
/**
|
|
10026
|
-
*
|
|
10027
|
-
*
|
|
10028
|
-
*
|
|
10183
|
+
* Add-grantee dialog — wraps `UiAddGranteeDialogCard` in `UiModalDialog`
|
|
10184
|
+
* for the full modal contract (portal, dimmed backdrop, focus trap, Esc
|
|
10185
|
+
* and backdrop dismiss).
|
|
10186
|
+
*
|
|
10187
|
+
* @internal
|
|
10188
|
+
*/
|
|
10189
|
+
export declare function UiAddGranteeDialog({ isOpen, ...cardProps }: IUiAddGranteeDialogProps): JSX.Element;
|
|
10190
|
+
|
|
10191
|
+
/**
|
|
10192
|
+
* Add-grantee dialog card — header + grantee picker (search input with
|
|
10193
|
+
* sectioned Groups/Users dropdown and picked-rows list) + footer with Cancel
|
|
10194
|
+
* and Share. Renders inline as a plain card. For modal behavior (portal,
|
|
10195
|
+
* backdrop, focus trap, dismiss), use `UiAddGranteeDialog` which wraps this
|
|
10196
|
+
* in `UiModalDialog`.
|
|
10197
|
+
*
|
|
10198
|
+
* The card owns the visual composition (picker layout) but no policy. The
|
|
10199
|
+
* caller controls the picked list via `selectedGrantees` / `onSelectedGranteesChange`,
|
|
10200
|
+
* and may override the initial permission level via `initialPermissionLevel`.
|
|
10029
10201
|
*
|
|
10030
10202
|
* @internal
|
|
10031
10203
|
*/
|
|
10032
|
-
export declare function
|
|
10204
|
+
export declare function UiAddGranteeDialogCard({ objectTitle, loadOptions, selectedGrantees, onSelectedGranteesChange, initialPermissionLevel, onBack, onClose, onCancel, onShare, dataTestId }: IUiAddGranteeDialogCardProps): JSX.Element;
|
|
10033
10205
|
|
|
10034
10206
|
/**
|
|
10035
10207
|
* @internal
|
|
@@ -10099,6 +10271,14 @@ export declare function UiAsyncTableTitle({ title, onSearch, renderIcon, actions
|
|
|
10099
10271
|
*/
|
|
10100
10272
|
export declare type UiAsyncTableVariant = "regular" | "small";
|
|
10101
10273
|
|
|
10274
|
+
/**
|
|
10275
|
+
* Async autocomplete: text input + sectioned listbox driven by a `loadOptions`
|
|
10276
|
+
* loader. Implements the ARIA combobox+listbox APG pattern.
|
|
10277
|
+
*
|
|
10278
|
+
* @internal
|
|
10279
|
+
*/
|
|
10280
|
+
export declare function UiAutocomplete<T extends IUiAutocompleteOption = IUiAutocompleteOption>({ loadOptions, selectedIds, onSelect, debounceMs, messages, accessibilityConfig, dataTestId }: IUiAutocompleteProps<T>): JSX.Element;
|
|
10281
|
+
|
|
10102
10282
|
/**
|
|
10103
10283
|
* Wrapper that focuses the first focusable child when it mounts, or when `refocusKey` changes.
|
|
10104
10284
|
*
|
|
@@ -10408,6 +10588,17 @@ export declare function UiFocusTrap({ root, children, focusCheckFn }: {
|
|
|
10408
10588
|
*/
|
|
10409
10589
|
export declare function UiGeneralAccessRadio({ value, onChange, workspaceControls, dataTestId }: IUiGeneralAccessRadioProps): JSX.Element;
|
|
10410
10590
|
|
|
10591
|
+
/**
|
|
10592
|
+
* Sectioned async grantee picker — specialization of `UiAutocomplete` for the
|
|
10593
|
+
* share/access-control domain. Renders a search input with a dropdown split
|
|
10594
|
+
* into `Groups` and `Users` sections, and a list of picked grantees below
|
|
10595
|
+
* (each as a `UiGranteeRow` with a `UiPermissionMenu` trigger). The
|
|
10596
|
+
* permission menu carries the Remove action; consumers wire it via `onRemove`.
|
|
10597
|
+
*
|
|
10598
|
+
* @internal
|
|
10599
|
+
*/
|
|
10600
|
+
export declare function UiGranteeAsyncPicker({ loadOptions, selectedGrantees, onSelect, onPermissionChange, onRemove, dataTestId }: IUiGranteeAsyncPickerProps): JSX.Element;
|
|
10601
|
+
|
|
10411
10602
|
/**
|
|
10412
10603
|
* 32×32 circle avatar used by the OLP share-dialog grantee list. Thin wrapper
|
|
10413
10604
|
* over `UiAvatar` that picks the right silhouette and i18n
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gooddata/sdk-ui-kit",
|
|
3
|
-
"version": "11.42.0-alpha.
|
|
3
|
+
"version": "11.42.0-alpha.4",
|
|
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-alpha.
|
|
79
|
-
"@gooddata/sdk-model": "11.42.0-alpha.
|
|
80
|
-
"@gooddata/sdk-ui
|
|
81
|
-
"@gooddata/sdk-ui": "11.42.0-alpha.
|
|
82
|
-
"@gooddata/util": "11.42.0-alpha.
|
|
78
|
+
"@gooddata/sdk-backend-spi": "11.42.0-alpha.4",
|
|
79
|
+
"@gooddata/sdk-model": "11.42.0-alpha.4",
|
|
80
|
+
"@gooddata/sdk-ui": "11.42.0-alpha.4",
|
|
81
|
+
"@gooddata/sdk-ui-theme-provider": "11.42.0-alpha.4",
|
|
82
|
+
"@gooddata/util": "11.42.0-alpha.4"
|
|
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-alpha.
|
|
132
|
-
"@gooddata/oxlint-config": "11.42.0-alpha.
|
|
133
|
-
"@gooddata/reference-workspace": "11.42.0-alpha.
|
|
134
|
-
"@gooddata/sdk-backend-mockingbird": "11.42.0-alpha.
|
|
135
|
-
"@gooddata/stylelint-config": "11.42.0-alpha.
|
|
131
|
+
"@gooddata/eslint-config": "11.42.0-alpha.4",
|
|
132
|
+
"@gooddata/oxlint-config": "11.42.0-alpha.4",
|
|
133
|
+
"@gooddata/reference-workspace": "11.42.0-alpha.4",
|
|
134
|
+
"@gooddata/sdk-backend-mockingbird": "11.42.0-alpha.4",
|
|
135
|
+
"@gooddata/stylelint-config": "11.42.0-alpha.4"
|
|
136
136
|
},
|
|
137
137
|
"peerDependencies": {
|
|
138
138
|
"react": "^18.0.0 || ^19.0.0",
|
|
@@ -5,18 +5,4 @@
|
|
|
5
5
|
flex-direction: column;
|
|
6
6
|
gap: var(--gd-spacing-10px);
|
|
7
7
|
padding-bottom: var(--gd-spacing-5px);
|
|
8
|
-
|
|
9
|
-
&__preview {
|
|
10
|
-
display: flex;
|
|
11
|
-
align-items: center;
|
|
12
|
-
min-height: 50px;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
&__empty-state {
|
|
16
|
-
flex: 1 1 auto;
|
|
17
|
-
text-align: center;
|
|
18
|
-
font-size: 14px;
|
|
19
|
-
line-height: 20px;
|
|
20
|
-
color: var(--gd-palette-complementary-6);
|
|
21
|
-
}
|
|
22
8
|
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
.gd-ui-kit-autocomplete {
|
|
2
|
+
position: relative;
|
|
3
|
+
|
|
4
|
+
&__list {
|
|
5
|
+
margin: 0;
|
|
6
|
+
padding: 0;
|
|
7
|
+
list-style: none;
|
|
8
|
+
max-height: 320px;
|
|
9
|
+
overflow-y: auto;
|
|
10
|
+
overscroll-behavior: contain;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
&__section-header {
|
|
14
|
+
padding: 4px 12px;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
&__option {
|
|
18
|
+
display: flex;
|
|
19
|
+
align-items: baseline;
|
|
20
|
+
gap: 6px;
|
|
21
|
+
padding: 6px 12px;
|
|
22
|
+
line-height: 20px;
|
|
23
|
+
cursor: pointer;
|
|
24
|
+
|
|
25
|
+
&--isActive {
|
|
26
|
+
background: var(--gd-palette-complementary-2);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
&:hover {
|
|
30
|
+
background: var(--gd-palette-complementary-2);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
&__option-label {
|
|
35
|
+
color: var(--gd-palette-complementary-9);
|
|
36
|
+
font-size: 14px;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
&__option-secondary {
|
|
40
|
+
color: var(--gd-palette-complementary-6);
|
|
41
|
+
font-size: 12px;
|
|
42
|
+
overflow: hidden;
|
|
43
|
+
text-overflow: ellipsis;
|
|
44
|
+
white-space: nowrap;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
&__state {
|
|
48
|
+
padding: 12px;
|
|
49
|
+
color: var(--gd-palette-complementary-6);
|
|
50
|
+
font-size: 14px;
|
|
51
|
+
text-align: center;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
.gd-ui-kit-grantee-async-picker {
|
|
2
|
+
display: flex;
|
|
3
|
+
flex-direction: column;
|
|
4
|
+
gap: 12px;
|
|
5
|
+
|
|
6
|
+
&__empty-state {
|
|
7
|
+
min-height: 50px;
|
|
8
|
+
display: flex;
|
|
9
|
+
align-items: center;
|
|
10
|
+
justify-content: center;
|
|
11
|
+
text-align: center;
|
|
12
|
+
font-size: 14px;
|
|
13
|
+
line-height: 20px;
|
|
14
|
+
color: var(--gd-palette-complementary-6);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
&__picked-list {
|
|
18
|
+
margin: 0;
|
|
19
|
+
padding: 0;
|
|
20
|
+
list-style: none;
|
|
21
|
+
display: flex;
|
|
22
|
+
flex-direction: column;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
&__picked-item {
|
|
26
|
+
display: block;
|
|
27
|
+
}
|
|
28
|
+
}
|
package/src/@ui/index.scss
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
@use "./UiChip/UiChip.scss";
|
|
11
11
|
@use "./UiControlButton/UiControlButton.scss";
|
|
12
12
|
@use "./UiCombobox/UiCombobox.scss";
|
|
13
|
+
@use "./UiAutocomplete/UiAutocomplete.scss";
|
|
13
14
|
@use "./UiListbox/UiListbox.scss";
|
|
14
15
|
@use "./UiTreeview/UiTreeview.scss";
|
|
15
16
|
@use "./UiMenu/UiMenu.scss";
|
|
@@ -41,6 +42,7 @@
|
|
|
41
42
|
@use "./UiModalDialog/UiModalDialog.scss";
|
|
42
43
|
@use "./UiObjectShareDialog/UiObjectShareDialog.scss";
|
|
43
44
|
@use "./UiAddGranteeDialog/UiAddGranteeDialog.scss";
|
|
45
|
+
@use "./UiGranteeAsyncPicker/UiGranteeAsyncPicker.scss";
|
|
44
46
|
@use "./UiGeneralAccessRadio/UiGeneralAccessRadio.scss";
|
|
45
47
|
@use "./UiLabelRow/UiLabelRow.scss";
|
|
46
48
|
@use "./UiLabelsList/UiLabelsList.scss";
|
package/styles/css/main.css
CHANGED
|
@@ -1592,6 +1592,52 @@
|
|
|
1592
1592
|
color: var(--gd-palette-complementary-6, #94a1ad);
|
|
1593
1593
|
}
|
|
1594
1594
|
|
|
1595
|
+
.gd-ui-kit-autocomplete {
|
|
1596
|
+
position: relative;
|
|
1597
|
+
}
|
|
1598
|
+
.gd-ui-kit-autocomplete__list {
|
|
1599
|
+
margin: 0;
|
|
1600
|
+
padding: 0;
|
|
1601
|
+
list-style: none;
|
|
1602
|
+
max-height: 320px;
|
|
1603
|
+
overflow-y: auto;
|
|
1604
|
+
overscroll-behavior: contain;
|
|
1605
|
+
}
|
|
1606
|
+
.gd-ui-kit-autocomplete__section-header {
|
|
1607
|
+
padding: 4px 12px;
|
|
1608
|
+
}
|
|
1609
|
+
.gd-ui-kit-autocomplete__option {
|
|
1610
|
+
display: flex;
|
|
1611
|
+
align-items: baseline;
|
|
1612
|
+
gap: 6px;
|
|
1613
|
+
padding: 6px 12px;
|
|
1614
|
+
line-height: 20px;
|
|
1615
|
+
cursor: pointer;
|
|
1616
|
+
}
|
|
1617
|
+
.gd-ui-kit-autocomplete__option--isActive {
|
|
1618
|
+
background: var(--gd-palette-complementary-2);
|
|
1619
|
+
}
|
|
1620
|
+
.gd-ui-kit-autocomplete__option:hover {
|
|
1621
|
+
background: var(--gd-palette-complementary-2);
|
|
1622
|
+
}
|
|
1623
|
+
.gd-ui-kit-autocomplete__option-label {
|
|
1624
|
+
color: var(--gd-palette-complementary-9);
|
|
1625
|
+
font-size: 14px;
|
|
1626
|
+
}
|
|
1627
|
+
.gd-ui-kit-autocomplete__option-secondary {
|
|
1628
|
+
color: var(--gd-palette-complementary-6);
|
|
1629
|
+
font-size: 12px;
|
|
1630
|
+
overflow: hidden;
|
|
1631
|
+
text-overflow: ellipsis;
|
|
1632
|
+
white-space: nowrap;
|
|
1633
|
+
}
|
|
1634
|
+
.gd-ui-kit-autocomplete__state {
|
|
1635
|
+
padding: 12px;
|
|
1636
|
+
color: var(--gd-palette-complementary-6);
|
|
1637
|
+
font-size: 14px;
|
|
1638
|
+
text-align: center;
|
|
1639
|
+
}
|
|
1640
|
+
|
|
1595
1641
|
.gd-ui-kit-listbox {
|
|
1596
1642
|
max-height: 300px;
|
|
1597
1643
|
overflow-y: auto;
|
|
@@ -3730,18 +3776,32 @@
|
|
|
3730
3776
|
gap: var(--gd-spacing-10px);
|
|
3731
3777
|
padding-bottom: var(--gd-spacing-5px);
|
|
3732
3778
|
}
|
|
3733
|
-
|
|
3779
|
+
|
|
3780
|
+
.gd-ui-kit-grantee-async-picker {
|
|
3734
3781
|
display: flex;
|
|
3735
|
-
|
|
3736
|
-
|
|
3782
|
+
flex-direction: column;
|
|
3783
|
+
gap: 12px;
|
|
3737
3784
|
}
|
|
3738
|
-
.gd-ui-kit-
|
|
3739
|
-
|
|
3785
|
+
.gd-ui-kit-grantee-async-picker__empty-state {
|
|
3786
|
+
min-height: 50px;
|
|
3787
|
+
display: flex;
|
|
3788
|
+
align-items: center;
|
|
3789
|
+
justify-content: center;
|
|
3740
3790
|
text-align: center;
|
|
3741
3791
|
font-size: 14px;
|
|
3742
3792
|
line-height: 20px;
|
|
3743
3793
|
color: var(--gd-palette-complementary-6);
|
|
3744
3794
|
}
|
|
3795
|
+
.gd-ui-kit-grantee-async-picker__picked-list {
|
|
3796
|
+
margin: 0;
|
|
3797
|
+
padding: 0;
|
|
3798
|
+
list-style: none;
|
|
3799
|
+
display: flex;
|
|
3800
|
+
flex-direction: column;
|
|
3801
|
+
}
|
|
3802
|
+
.gd-ui-kit-grantee-async-picker__picked-item {
|
|
3803
|
+
display: block;
|
|
3804
|
+
}
|
|
3745
3805
|
|
|
3746
3806
|
.gd-ui-kit-general-access-radio {
|
|
3747
3807
|
display: flex;
|