@gooddata/sdk-ui-ext 11.47.0-alpha.2 → 11.47.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/NOTICE +3 -3
- package/esm/index.d.ts +1 -1
- package/esm/index.d.ts.map +1 -1
- package/esm/internal/components/configurationControls/conditionalFormatting/CfSelect.d.ts +14 -0
- package/esm/internal/components/configurationControls/conditionalFormatting/CfSelect.d.ts.map +1 -0
- package/esm/internal/components/configurationControls/conditionalFormatting/CfSelect.js +25 -0
- package/esm/internal/components/configurationControls/conditionalFormatting/ConditionEditor.d.ts +18 -0
- package/esm/internal/components/configurationControls/conditionalFormatting/ConditionEditor.d.ts.map +1 -0
- package/esm/internal/components/configurationControls/conditionalFormatting/ConditionEditor.js +132 -0
- package/esm/internal/components/configurationControls/conditionalFormatting/ConditionalFormattingDialog.d.ts +4 -1
- package/esm/internal/components/configurationControls/conditionalFormatting/ConditionalFormattingDialog.d.ts.map +1 -1
- package/esm/internal/components/configurationControls/conditionalFormatting/ConditionalFormattingDialog.js +15 -116
- package/esm/internal/components/configurationControls/conditionalFormatting/ConditionalFormattingSection.d.ts +5 -3
- package/esm/internal/components/configurationControls/conditionalFormatting/ConditionalFormattingSection.d.ts.map +1 -1
- package/esm/internal/components/configurationControls/conditionalFormatting/ConditionalFormattingSection.js +10 -10
- package/esm/internal/components/configurationControls/conditionalFormatting/ReorderList.d.ts +25 -0
- package/esm/internal/components/configurationControls/conditionalFormatting/ReorderList.d.ts.map +1 -0
- package/esm/internal/components/configurationControls/conditionalFormatting/ReorderList.js +94 -0
- package/esm/internal/components/configurationControls/conditionalFormatting/conditionalFormattingModel.d.ts +66 -7
- package/esm/internal/components/configurationControls/conditionalFormatting/conditionalFormattingModel.d.ts.map +1 -1
- package/esm/internal/components/configurationControls/conditionalFormatting/conditionalFormattingModel.js +165 -21
- package/esm/internal/components/configurationControls/conditionalFormatting/reorderListModel.d.ts +4 -0
- package/esm/internal/components/configurationControls/conditionalFormatting/reorderListModel.d.ts.map +1 -0
- package/esm/internal/components/configurationControls/conditionalFormatting/reorderListModel.js +16 -0
- package/esm/internal/components/configurationPanels/ConfigurationPanelContent.d.ts +0 -1
- package/esm/internal/components/configurationPanels/ConfigurationPanelContent.d.ts.map +1 -1
- package/esm/internal/components/configurationPanels/PivotTableConfigurationPanel.d.ts +9 -2
- package/esm/internal/components/configurationPanels/PivotTableConfigurationPanel.d.ts.map +1 -1
- package/esm/internal/components/configurationPanels/PivotTableConfigurationPanel.js +4 -4
- package/esm/internal/components/pluggableVisualizations/pivotTableNext/PluggablePivotTableNext.d.ts +1 -1
- package/esm/internal/components/pluggableVisualizations/pivotTableNext/PluggablePivotTableNext.d.ts.map +1 -1
- package/esm/internal/components/pluggableVisualizations/pivotTableNext/PluggablePivotTableNext.js +8 -7
- package/esm/internal/translations/de-DE.localization-bundle.d.ts +12 -0
- package/esm/internal/translations/de-DE.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/de-DE.localization-bundle.js +12 -0
- package/esm/internal/translations/en-AU.localization-bundle.d.ts +12 -0
- package/esm/internal/translations/en-AU.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/en-AU.localization-bundle.js +12 -0
- package/esm/internal/translations/en-GB.localization-bundle.d.ts +12 -0
- package/esm/internal/translations/en-GB.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/en-GB.localization-bundle.js +12 -0
- package/esm/internal/translations/en-US.localization-bundle.d.ts +8 -0
- package/esm/internal/translations/en-US.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/en-US.localization-bundle.js +8 -0
- package/esm/internal/translations/es-419.localization-bundle.d.ts +12 -0
- package/esm/internal/translations/es-419.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/es-419.localization-bundle.js +12 -0
- package/esm/internal/translations/es-ES.localization-bundle.d.ts +12 -0
- package/esm/internal/translations/es-ES.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/es-ES.localization-bundle.js +12 -0
- package/esm/internal/translations/fi-FI.localization-bundle.d.ts +12 -0
- package/esm/internal/translations/fi-FI.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/fi-FI.localization-bundle.js +12 -0
- package/esm/internal/translations/fr-CA.localization-bundle.d.ts +12 -0
- package/esm/internal/translations/fr-CA.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/fr-CA.localization-bundle.js +12 -0
- package/esm/internal/translations/fr-FR.localization-bundle.d.ts +12 -0
- package/esm/internal/translations/fr-FR.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/fr-FR.localization-bundle.js +12 -0
- package/esm/internal/translations/id-ID.localization-bundle.d.ts +12 -0
- package/esm/internal/translations/id-ID.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/id-ID.localization-bundle.js +12 -0
- package/esm/internal/translations/it-IT.localization-bundle.d.ts +12 -0
- package/esm/internal/translations/it-IT.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/it-IT.localization-bundle.js +12 -0
- package/esm/internal/translations/ja-JP.localization-bundle.d.ts +12 -0
- package/esm/internal/translations/ja-JP.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/ja-JP.localization-bundle.js +12 -0
- package/esm/internal/translations/ko-KR.localization-bundle.d.ts +12 -0
- package/esm/internal/translations/ko-KR.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/ko-KR.localization-bundle.js +12 -0
- package/esm/internal/translations/nl-NL.localization-bundle.d.ts +12 -0
- package/esm/internal/translations/nl-NL.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/nl-NL.localization-bundle.js +12 -0
- package/esm/internal/translations/pl-PL.localization-bundle.d.ts +12 -0
- package/esm/internal/translations/pl-PL.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/pl-PL.localization-bundle.js +12 -0
- package/esm/internal/translations/pt-BR.localization-bundle.d.ts +12 -0
- package/esm/internal/translations/pt-BR.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/pt-BR.localization-bundle.js +12 -0
- package/esm/internal/translations/pt-PT.localization-bundle.d.ts +12 -0
- package/esm/internal/translations/pt-PT.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/pt-PT.localization-bundle.js +12 -0
- package/esm/internal/translations/ru-RU.localization-bundle.d.ts +12 -0
- package/esm/internal/translations/ru-RU.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/ru-RU.localization-bundle.js +12 -0
- package/esm/internal/translations/sl-SI.localization-bundle.d.ts +12 -0
- package/esm/internal/translations/sl-SI.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/sl-SI.localization-bundle.js +12 -0
- package/esm/internal/translations/th-TH.localization-bundle.d.ts +12 -0
- package/esm/internal/translations/th-TH.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/th-TH.localization-bundle.js +12 -0
- package/esm/internal/translations/tr-TR.localization-bundle.d.ts +12 -0
- package/esm/internal/translations/tr-TR.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/tr-TR.localization-bundle.js +12 -0
- package/esm/internal/translations/uk-UA.localization-bundle.d.ts +12 -0
- package/esm/internal/translations/uk-UA.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/uk-UA.localization-bundle.js +12 -0
- package/esm/internal/translations/vi-VN.localization-bundle.d.ts +12 -0
- package/esm/internal/translations/vi-VN.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/vi-VN.localization-bundle.js +12 -0
- package/esm/internal/translations/zh-HK.localization-bundle.d.ts +12 -0
- package/esm/internal/translations/zh-HK.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/zh-HK.localization-bundle.js +12 -0
- package/esm/internal/translations/zh-Hans.localization-bundle.d.ts +12 -0
- package/esm/internal/translations/zh-Hans.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/zh-Hans.localization-bundle.js +12 -0
- package/esm/internal/translations/zh-Hant.localization-bundle.d.ts +12 -0
- package/esm/internal/translations/zh-Hant.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/zh-Hant.localization-bundle.js +12 -0
- package/esm/locales.d.ts +6 -0
- package/esm/locales.d.ts.map +1 -1
- package/esm/locales.js +2 -0
- package/esm/sdk-ui-ext.d.ts +19 -5
- package/esm/share/ObjectShareDialog.d.ts.map +1 -1
- package/esm/share/ObjectShareDialog.js +2 -2
- package/esm/share/objectShareController.helpers.d.ts +20 -6
- package/esm/share/objectShareController.helpers.d.ts.map +1 -1
- package/esm/share/objectShareController.helpers.js +40 -9
- package/esm/share/objectShareController.types.d.ts +15 -4
- package/esm/share/objectShareController.types.d.ts.map +1 -1
- package/esm/share/useAccessList.d.ts +0 -1
- package/esm/share/useAccessList.d.ts.map +1 -1
- package/esm/share/useAccessList.js +74 -83
- package/esm/share/useObjectShareController.d.ts +3 -1
- package/esm/share/useObjectShareController.d.ts.map +1 -1
- package/esm/share/useObjectShareController.js +12 -19
- package/package.json +21 -21
- package/styles/css/main.css +102 -13
- package/styles/css/main.css.map +1 -1
- package/styles/internal/css/conditional_formatting.css +102 -13
- package/styles/internal/css/conditional_formatting.css.map +1 -1
- package/styles/internal/scss/conditional_formatting.scss +138 -13
|
@@ -280,6 +280,18 @@ export declare const zh_Hant: {
|
|
|
280
280
|
"properties.colors.reset-colors": string;
|
|
281
281
|
"properties.colors": string;
|
|
282
282
|
"properties.colorsAndFills": string;
|
|
283
|
+
"properties.colorsAndStyles": string;
|
|
284
|
+
"properties.colors.reset-colors-and-styles": string;
|
|
285
|
+
"properties.lineStyle.label": string;
|
|
286
|
+
"properties.lineStyle.triggerAriaLabel": string;
|
|
287
|
+
"properties.lineStyle.solid": string;
|
|
288
|
+
"properties.lineStyle.dashed": string;
|
|
289
|
+
"properties.lineStyle.dotted": string;
|
|
290
|
+
"properties.lineWidth.label": string;
|
|
291
|
+
"properties.lineWidth.1px": string;
|
|
292
|
+
"properties.lineWidth.2px": string;
|
|
293
|
+
"properties.lineWidth.3px": string;
|
|
294
|
+
"properties.lineWidth.4px": string;
|
|
283
295
|
"properties.fill": string;
|
|
284
296
|
"properties.fill.solid": string;
|
|
285
297
|
"properties.fill.pattern": string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zh-Hant.localization-bundle.d.ts","sourceRoot":"","sources":["../../../src/internal/translations/zh-Hant.localization-bundle.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO
|
|
1
|
+
{"version":3,"file":"zh-Hant.localization-bundle.d.ts","sourceRoot":"","sources":["../../../src/internal/translations/zh-Hant.localization-bundle.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgqBnB,CAAC"}
|
|
@@ -282,6 +282,18 @@ export const zh_Hant = {
|
|
|
282
282
|
"properties.colors.reset-colors": "重置顏色",
|
|
283
283
|
"properties.colors": "顏色",
|
|
284
284
|
"properties.colorsAndFills": "顏色和填充",
|
|
285
|
+
"properties.colorsAndStyles": "顏色和樣式",
|
|
286
|
+
"properties.colors.reset-colors-and-styles": "重設顏色和樣式",
|
|
287
|
+
"properties.lineStyle.label": "線條樣式",
|
|
288
|
+
"properties.lineStyle.triggerAriaLabel": "編輯 {name} 的顏色和樣式",
|
|
289
|
+
"properties.lineStyle.solid": "實線",
|
|
290
|
+
"properties.lineStyle.dashed": "虛線",
|
|
291
|
+
"properties.lineStyle.dotted": "點線",
|
|
292
|
+
"properties.lineWidth.label": "線條粗細",
|
|
293
|
+
"properties.lineWidth.1px": "1 px",
|
|
294
|
+
"properties.lineWidth.2px": "2 px",
|
|
295
|
+
"properties.lineWidth.3px": "3 px",
|
|
296
|
+
"properties.lineWidth.4px": "4 px",
|
|
285
297
|
"properties.fill": "填滿",
|
|
286
298
|
"properties.fill.solid": "實心(預設)",
|
|
287
299
|
"properties.fill.pattern": "圖案",
|
package/esm/locales.d.ts
CHANGED
|
@@ -1033,12 +1033,18 @@ export declare const conditionalFormattingMessages: {
|
|
|
1033
1033
|
dialogToPlaceholder: {
|
|
1034
1034
|
id: string;
|
|
1035
1035
|
};
|
|
1036
|
+
dialogUnitPercent: {
|
|
1037
|
+
id: string;
|
|
1038
|
+
};
|
|
1036
1039
|
dialogCancel: {
|
|
1037
1040
|
id: string;
|
|
1038
1041
|
};
|
|
1039
1042
|
dialogSave: {
|
|
1040
1043
|
id: string;
|
|
1041
1044
|
};
|
|
1045
|
+
dialogErrorRangeOrder: {
|
|
1046
|
+
id: string;
|
|
1047
|
+
};
|
|
1042
1048
|
};
|
|
1043
1049
|
export declare const conditionalFormattingOperatorMessages: Record<ConditionalFormattingOperator, MessageDescriptor>;
|
|
1044
1050
|
//# sourceMappingURL=locales.d.ts.map
|
package/esm/locales.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locales.d.ts","sourceRoot":"","sources":["../src/locales.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,iBAAiB,EAAkB,MAAM,YAAY,CAAC;AAEpE,OAAO,EAAE,KAAK,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAGjF,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CA2EnD,CAAC;AAEH,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAsBtD,CAAC;AAEH,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8PnB,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmH7B,CAAC;AAEH,eAAO,MAAM,6BAA6B
|
|
1
|
+
{"version":3,"file":"locales.d.ts","sourceRoot":"","sources":["../src/locales.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,iBAAiB,EAAkB,MAAM,YAAY,CAAC;AAEpE,OAAO,EAAE,KAAK,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAGjF,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CA2EnD,CAAC;AAEH,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAsBtD,CAAC;AAEH,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8PnB,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmH7B,CAAC;AAEH,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BxC,CAAC;AAEH,eAAO,MAAM,qCAAqC,EAAE,MAAM,CAAC,6BAA6B,EAAE,iBAAiB,CAmBrG,CAAC"}
|
package/esm/locales.js
CHANGED
|
@@ -495,8 +495,10 @@ export const conditionalFormattingMessages = defineMessages({
|
|
|
495
495
|
dialogValuePlaceholder: { id: "properties.conditionalFormatting.dialog.value" },
|
|
496
496
|
dialogFromPlaceholder: { id: "properties.conditionalFormatting.dialog.from" },
|
|
497
497
|
dialogToPlaceholder: { id: "properties.conditionalFormatting.dialog.to" },
|
|
498
|
+
dialogUnitPercent: { id: "properties.conditionalFormatting.dialog.unitPercent" },
|
|
498
499
|
dialogCancel: { id: "properties.conditionalFormatting.dialog.cancel" },
|
|
499
500
|
dialogSave: { id: "properties.conditionalFormatting.dialog.save" },
|
|
501
|
+
dialogErrorRangeOrder: { id: "properties.conditionalFormatting.dialog.error.rangeOrder" },
|
|
500
502
|
});
|
|
501
503
|
export const conditionalFormattingOperatorMessages = defineMessages({
|
|
502
504
|
ALL: { id: "properties.conditionalFormatting.operator.all" },
|
package/esm/sdk-ui-ext.d.ts
CHANGED
|
@@ -669,6 +669,19 @@ export declare interface IGrantedDataSource {
|
|
|
669
669
|
accessSource?: DataSourceAccessSource;
|
|
670
670
|
}
|
|
671
671
|
|
|
672
|
+
/**
|
|
673
|
+
* Known identity facts of a grantee: real name/email only, never an id fallback.
|
|
674
|
+
* Undefined fields are unknown and may be backfilled.
|
|
675
|
+
*
|
|
676
|
+
* @internal
|
|
677
|
+
*/
|
|
678
|
+
export declare interface IGranteeIdentityFacts {
|
|
679
|
+
/** Real full name (users) / group name, when known. */
|
|
680
|
+
name?: string;
|
|
681
|
+
/** Real email, when known (users only). */
|
|
682
|
+
email?: string;
|
|
683
|
+
}
|
|
684
|
+
|
|
672
685
|
/**
|
|
673
686
|
* @internal
|
|
674
687
|
*/
|
|
@@ -1644,17 +1657,16 @@ export declare interface IObjectShareDialogProps {
|
|
|
1644
1657
|
}
|
|
1645
1658
|
|
|
1646
1659
|
/**
|
|
1647
|
-
* Dialog row derived from a backend grant.
|
|
1660
|
+
* Dialog row derived from a backend grant. `name`/`email` are real facts only;
|
|
1661
|
+
* display fallbacks are `granteeDisplayPair`'s concern.
|
|
1648
1662
|
*
|
|
1649
1663
|
* @internal
|
|
1650
1664
|
*/
|
|
1651
|
-
export declare interface IObjectShareGrantee {
|
|
1665
|
+
export declare interface IObjectShareGrantee extends IGranteeIdentityFacts {
|
|
1652
1666
|
/** Stable id used as the dialog row's React key. `user:<ref>` / `group:<ref>`. */
|
|
1653
1667
|
id: string;
|
|
1654
1668
|
kind: "user" | "group";
|
|
1655
1669
|
granteeRef: ObjRef;
|
|
1656
|
-
name: string;
|
|
1657
|
-
email?: string;
|
|
1658
1670
|
level: ObjectSharePermissionLevel;
|
|
1659
1671
|
/**
|
|
1660
1672
|
* Effective permission when it is *higher* than the directly-granted `level`
|
|
@@ -2141,7 +2153,9 @@ export declare function useInsightPickerState(author?: string): {
|
|
|
2141
2153
|
* plain props and it owns its controller. Call this (exported as `useObjectShare`)
|
|
2142
2154
|
* only to share a single access-list fetch between the dialog and an inline summary
|
|
2143
2155
|
* row: call it once, read `state.summary` for the row, and pass the controller into
|
|
2144
|
-
* the dialog.
|
|
2156
|
+
* the dialog. Grantee rows carry identity facts only (`name`/`email` are undefined
|
|
2157
|
+
* when unknown); the display fallback order is not exposed, so {@link ObjectShareDialog}
|
|
2158
|
+
* is the only sanctioned row renderer.
|
|
2145
2159
|
*
|
|
2146
2160
|
* @internal
|
|
2147
2161
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObjectShareDialog.d.ts","sourceRoot":"","sources":["../../src/share/ObjectShareDialog.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"ObjectShareDialog.d.ts","sourceRoot":"","sources":["../../src/share/ObjectShareDialog.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAY1E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAQpD;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACpC,gDAAgD;IAChD,MAAM,EAAE,wBAAwB,GAAG,SAAS,CAAC;IAC7C,wEAAwE;IACxE,WAAW,EAAE,MAAM,CAAC;IACpB,0DAA0D;IAC1D,MAAM,EAAE,OAAO,CAAC;IAChB,sFAAsF;IACtF,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,4FAA0F;IAC1F,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB;;;;OAIG;IACH,MAAM,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC7B;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;OAIG;IACH,UAAU,CAAC,EAAE,sBAAsB,CAAC;CACvC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAAC,EAC9B,MAAM,EACN,WAAW,EACX,MAAM,EACN,OAAO,EACP,OAAO,EACP,MAAM,EACN,aAAa,EACb,WAAW,EACX,UAAU,EACb,EAAE,uBAAuB,2CAsPzB"}
|
|
@@ -4,6 +4,7 @@ import { useCallback } from "react";
|
|
|
4
4
|
import { useIntl } from "react-intl";
|
|
5
5
|
import { UiAddGranteeDialog, UiConfirmDialog, UiGranteeRowControls, UiObjectShareDialog, UiRadioRow, UiTransferOwnershipDialog, } from "@gooddata/sdk-ui-kit";
|
|
6
6
|
import { objectShareMessages } from "./messages.js";
|
|
7
|
+
import { granteeDisplayPair } from "./objectShareController.helpers.js";
|
|
7
8
|
import { useObjectShareController } from "./useObjectShareController.js";
|
|
8
9
|
// The workspace row has no labels menu (see workspaceControls below), so its
|
|
9
10
|
// required onLabelsChange never fires; a stable no-op satisfies the prop type
|
|
@@ -94,8 +95,7 @@ export function ObjectShareDialog({ target, objectTitle, isOpen, onClose, onSave
|
|
|
94
95
|
return (_jsxs(_Fragment, { children: [_jsx(UiObjectShareDialog, { isOpen: isShareOpen, objectTitle: objectTitle, onClose: handleClose, grantees: state.grantees.map((g) => ({
|
|
95
96
|
id: g.id,
|
|
96
97
|
kind: g.kind,
|
|
97
|
-
|
|
98
|
-
email: g.email,
|
|
98
|
+
...granteeDisplayPair(g),
|
|
99
99
|
isPending: g.pending !== undefined,
|
|
100
100
|
controls: (_jsx(UiGranteeRowControls, { labels: labelItems, selectedLabelIds: state.selectedLabelIdsByGrantee[g.id] ?? state.labels.map((l) => l.id), permissionLevel: g.level, effectivePermission: g.effectivePermission,
|
|
101
101
|
// Disable row controls while saving, and until per-label
|
|
@@ -1,15 +1,29 @@
|
|
|
1
1
|
import { type IAvailableAccessGrantee, type IGranularAccessGrantee, type IObjectAccessList, type ObjRef } from "@gooddata/sdk-model";
|
|
2
|
-
import type { IObjectShareGrantee, ObjectSharePermissionLevel } from "./objectShareController.types.js";
|
|
2
|
+
import type { IGranteeIdentityFacts, IObjectShareGrantee, ObjectSharePermissionLevel } from "./objectShareController.types.js";
|
|
3
3
|
import type { IObjectShareLabel } from "./types.js";
|
|
4
4
|
/** Stable row id shared by grantee rows and picker options: `user:<ref>` / `group:<ref>`. */
|
|
5
5
|
export declare function granteeId(kind: "user" | "group", ref: ObjRef): string;
|
|
6
6
|
/**
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
7
|
+
* Real identity facts recovered from converter output that collapses missing
|
|
8
|
+
* fields (`name ?? email ?? id`; grant emails also `email ?? id` — assignee
|
|
9
|
+
* emails stay raw): a field equal to the raw id is absent, a "name" equal to
|
|
10
|
+
* the email is the email fallback.
|
|
11
11
|
*/
|
|
12
|
-
export declare function
|
|
12
|
+
export declare function userIdentityFacts(ref: ObjRef, name: string | undefined, email: string | undefined): IGranteeIdentityFacts;
|
|
13
|
+
/** Real group name recovered from the converter's `name ?? id` collapse: a name equal to the raw id is absent. */
|
|
14
|
+
export declare function groupNameFact(ref: ObjRef, name: string | undefined): string | undefined;
|
|
15
|
+
/** Identity facts for a listing/picker assignee — {@link userIdentityFacts} for users, a name fact for groups. */
|
|
16
|
+
export declare function assigneeIdentityFacts(assignee: IAvailableAccessGrantee): IGranteeIdentityFacts;
|
|
17
|
+
/** Display pair per the spec's fallback order: name + email → name + userID → email + userID → userID. */
|
|
18
|
+
export declare function userDisplayPair(facts: IGranteeIdentityFacts, userId: string): {
|
|
19
|
+
name: string;
|
|
20
|
+
email?: string;
|
|
21
|
+
};
|
|
22
|
+
/** Row display pair — {@link userDisplayPair} for users; groups show name (or raw id), no subline. */
|
|
23
|
+
export declare function granteeDisplayPair(grantee: IObjectShareGrantee): {
|
|
24
|
+
name: string;
|
|
25
|
+
email?: string;
|
|
26
|
+
};
|
|
13
27
|
/** Case-insensitive match of an assignee against the picker query (name, or email for users). */
|
|
14
28
|
export declare function assigneeMatchesQuery(assignee: IAvailableAccessGrantee, query: string): boolean;
|
|
15
29
|
/** The row's directly-granted level — the strongest permission present, defaulting to VIEW. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"objectShareController.helpers.d.ts","sourceRoot":"","sources":["../../src/share/objectShareController.helpers.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,MAAM,EAId,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"objectShareController.helpers.d.ts","sourceRoot":"","sources":["../../src/share/objectShareController.helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,13 +5,45 @@ export function granteeId(kind, ref) {
|
|
|
5
5
|
return `${kind}:${objRefToString(ref)}`;
|
|
6
6
|
}
|
|
7
7
|
/**
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
8
|
+
* Real identity facts recovered from converter output that collapses missing
|
|
9
|
+
* fields (`name ?? email ?? id`; grant emails also `email ?? id` — assignee
|
|
10
|
+
* emails stay raw): a field equal to the raw id is absent, a "name" equal to
|
|
11
|
+
* the email is the email fallback.
|
|
12
12
|
*/
|
|
13
|
-
export function
|
|
14
|
-
|
|
13
|
+
export function userIdentityFacts(ref, name, email) {
|
|
14
|
+
const id = objRefToString(ref);
|
|
15
|
+
const realEmail = email && email !== id ? email : undefined;
|
|
16
|
+
const realName = name && name !== id && name !== realEmail ? name : undefined;
|
|
17
|
+
return { name: realName, email: realEmail };
|
|
18
|
+
}
|
|
19
|
+
/** Real group name recovered from the converter's `name ?? id` collapse: a name equal to the raw id is absent. */
|
|
20
|
+
export function groupNameFact(ref, name) {
|
|
21
|
+
const id = objRefToString(ref);
|
|
22
|
+
return name && name !== id ? name : undefined;
|
|
23
|
+
}
|
|
24
|
+
/** Identity facts for a listing/picker assignee — {@link userIdentityFacts} for users, a name fact for groups. */
|
|
25
|
+
export function assigneeIdentityFacts(assignee) {
|
|
26
|
+
return assignee.type === "user"
|
|
27
|
+
? userIdentityFacts(assignee.ref, assignee.name, assignee.email)
|
|
28
|
+
: { name: groupNameFact(assignee.ref, assignee.name) };
|
|
29
|
+
}
|
|
30
|
+
/** Display pair per the spec's fallback order: name + email → name + userID → email + userID → userID. */
|
|
31
|
+
export function userDisplayPair(facts, userId) {
|
|
32
|
+
if (facts.name) {
|
|
33
|
+
return { name: facts.name, email: facts.email ?? userId };
|
|
34
|
+
}
|
|
35
|
+
if (facts.email) {
|
|
36
|
+
return { name: facts.email, email: userId };
|
|
37
|
+
}
|
|
38
|
+
return { name: userId };
|
|
39
|
+
}
|
|
40
|
+
/** Row display pair — {@link userDisplayPair} for users; groups show name (or raw id), no subline. */
|
|
41
|
+
export function granteeDisplayPair(grantee) {
|
|
42
|
+
const id = objRefToString(grantee.granteeRef);
|
|
43
|
+
if (grantee.kind !== "user") {
|
|
44
|
+
return { name: grantee.name ?? id };
|
|
45
|
+
}
|
|
46
|
+
return userDisplayPair(grantee, id);
|
|
15
47
|
}
|
|
16
48
|
/** Case-insensitive match of an assignee against the picker query (name, or email for users). */
|
|
17
49
|
export function assigneeMatchesQuery(assignee, query) {
|
|
@@ -57,8 +89,7 @@ export function granteesFromAccessList(list) {
|
|
|
57
89
|
id: granteeId("user", g.user.ref),
|
|
58
90
|
kind: "user",
|
|
59
91
|
granteeRef: g.user.ref,
|
|
60
|
-
|
|
61
|
-
email: g.user.email,
|
|
92
|
+
...userIdentityFacts(g.user.ref, g.user.fullName, g.user.email),
|
|
62
93
|
...granteeAccess(g.permissions, g.inheritedPermissions),
|
|
63
94
|
});
|
|
64
95
|
}
|
|
@@ -67,7 +98,7 @@ export function granteesFromAccessList(list) {
|
|
|
67
98
|
id: granteeId("group", g.userGroup.ref),
|
|
68
99
|
kind: "group",
|
|
69
100
|
granteeRef: g.userGroup.ref,
|
|
70
|
-
name: g.userGroup.
|
|
101
|
+
name: groupNameFact(g.userGroup.ref, g.userGroup.name),
|
|
71
102
|
...granteeAccess(g.permissions, g.inheritedPermissions),
|
|
72
103
|
});
|
|
73
104
|
}
|
|
@@ -12,17 +12,28 @@ import type { IObjectAccessSummary, IObjectShareLabel } from "./types.js";
|
|
|
12
12
|
*/
|
|
13
13
|
export type ObjectSharePermissionLevel = AccessGranularPermission;
|
|
14
14
|
/**
|
|
15
|
-
*
|
|
15
|
+
* Known identity facts of a grantee: real name/email only, never an id fallback.
|
|
16
|
+
* Undefined fields are unknown and may be backfilled.
|
|
16
17
|
*
|
|
17
18
|
* @internal
|
|
18
19
|
*/
|
|
19
|
-
export interface
|
|
20
|
+
export interface IGranteeIdentityFacts {
|
|
21
|
+
/** Real full name (users) / group name, when known. */
|
|
22
|
+
name?: string;
|
|
23
|
+
/** Real email, when known (users only). */
|
|
24
|
+
email?: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Dialog row derived from a backend grant. `name`/`email` are real facts only;
|
|
28
|
+
* display fallbacks are `granteeDisplayPair`'s concern.
|
|
29
|
+
*
|
|
30
|
+
* @internal
|
|
31
|
+
*/
|
|
32
|
+
export interface IObjectShareGrantee extends IGranteeIdentityFacts {
|
|
20
33
|
/** Stable id used as the dialog row's React key. `user:<ref>` / `group:<ref>`. */
|
|
21
34
|
id: string;
|
|
22
35
|
kind: "user" | "group";
|
|
23
36
|
granteeRef: ObjRef;
|
|
24
|
-
name: string;
|
|
25
|
-
email?: string;
|
|
26
37
|
level: ObjectSharePermissionLevel;
|
|
27
38
|
/**
|
|
28
39
|
* Effective permission when it is *higher* than the directly-granted `level`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"objectShareController.types.d.ts","sourceRoot":"","sources":["../../src/share/objectShareController.types.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,KAAK,EACR,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EACtB,gBAAgB,EACnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE1E;;;;;;;;GAQG;AACH,MAAM,MAAM,0BAA0B,GAAG,wBAAwB,CAAC;AAElE
|
|
1
|
+
{"version":3,"file":"objectShareController.types.d.ts","sourceRoot":"","sources":["../../src/share/objectShareController.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -73,7 +73,6 @@ export interface IAccessList {
|
|
|
73
73
|
* showing a stale SHARE inherited from the initial fetch.
|
|
74
74
|
*/
|
|
75
75
|
setWorkspaceLevel: React.Dispatch<React.SetStateAction<"VIEW" | "SHARE">>;
|
|
76
|
-
setKnownNames: React.Dispatch<React.SetStateAction<Record<string, string>>>;
|
|
77
76
|
}
|
|
78
77
|
/**
|
|
79
78
|
* Owns the backend access list. It is fetched once (per target) then seeded into
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAccessList.d.ts","sourceRoot":"","sources":["../../src/share/useAccessList.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAEH,KAAK,sBAAsB,
|
|
1
|
+
{"version":3,"file":"useAccessList.d.ts","sourceRoot":"","sources":["../../src/share/useAccessList.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAEH,KAAK,sBAAsB,EAE3B,KAAK,MAAM,EAGd,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,sBAAsB,EAAmB,MAAM,sBAAsB,CAAC;AAa7G,OAAO,KAAK,EAER,2BAA2B,EAC3B,mBAAmB,EACtB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD;;;;GAIG;AACH,MAAM,WAAW,WAAW;IACxB,iFAAiF;IACjF,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,wFAAwF;IACxF,OAAO,EAAE,OAAO,CAAC;IACjB,iGAA+F;IAC/F,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,uFAAqF;IACrF,aAAa,EAAE,kBAAkB,CAAC;IAClC,6FAA2F;IAC3F,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC;IACjC,iEAAiE;IACjE,OAAO,EAAE,oBAAoB,GAAG,SAAS,CAAC;IAC1C,+DAA+D;IAC/D,MAAM,EAAE,2BAA2B,CAAC,QAAQ,CAAC,CAAC;IAC9C,iDAAiD;IACjD,SAAS,EAAE,KAAK,GAAG,SAAS,CAAC;IAC7B;;;;;OAKG;IACH,iBAAiB,EAAE,OAAO,CAAC;IAE3B,mFAAmF;IACnF,MAAM,EAAE,CAAC,MAAM,EAAE,sBAAsB,EAAE,EAAE,cAAc,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/F;;;;OAIG;IACH,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAC3F;;;;;;;OAOG;IACH,iBAAiB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC;;;;;;;;OAQG;IACH,oBAAoB,EAAE,OAAO,CAAC;IAC9B,2FAA2F;IAC3F,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;IAEjC,qGAAqG;IACrG,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;IACzE,8EAA8E;IAC9E,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAC3E;;;;OAIG;IACH,iBAAiB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;CAC7E;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CACzB,MAAM,EAAE,wBAAwB,GAAG,SAAS,EAC5C,OAAO,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,EACjC,UAAU,EAAE,OAAO,GACpB,WAAW,CAkTb"}
|
|
@@ -6,7 +6,7 @@ import { useToastMessage } from "@gooddata/sdk-ui-kit";
|
|
|
6
6
|
import { isPermissionsNotAvailable } from "./accessErrors.js";
|
|
7
7
|
import { deriveGeneralAccess, deriveWorkspacePermissionLevel } from "./accessSummary.js";
|
|
8
8
|
import { objectShareMessages } from "./messages.js";
|
|
9
|
-
import { assigneeMatchesQuery, granteeId,
|
|
9
|
+
import { assigneeIdentityFacts, assigneeMatchesQuery, granteeId, granteesFromAccessList, userDisplayPair, userIdentityFacts, } from "./objectShareController.helpers.js";
|
|
10
10
|
/**
|
|
11
11
|
* Owns the backend access list. It is fetched once (per target) then seeded into
|
|
12
12
|
* local state, which is authoritative while the dialog/summary is mounted:
|
|
@@ -35,37 +35,25 @@ export function useAccessList(target, onSaved, dialogOpen) {
|
|
|
35
35
|
// `targetKey` — a target switch makes the old state stale until the re-seed.
|
|
36
36
|
const [seededTarget, setSeededTarget] = useState(undefined);
|
|
37
37
|
const [loadError, setLoadError] = useState(undefined);
|
|
38
|
-
//
|
|
39
|
-
//
|
|
40
|
-
|
|
41
|
-
//
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
// Memoized current-user-ref fetch — the profile doesn't change while mounted,
|
|
38
|
+
// Assignee identities from the listing (picker + on-open resolve), keyed by
|
|
39
|
+
// grantee id: de-collapsed facts + the original ObjRef (the serialized id
|
|
40
|
+
// loses Uri-vs-Id). The signed-in user is absent from the listing; their
|
|
41
|
+
// facts derive from the profile instead.
|
|
42
|
+
const [knownAssignees, setKnownAssignees] = useState({});
|
|
43
|
+
// Memoized current-user fetch — the profile doesn't change while mounted,
|
|
45
44
|
// so resolve it at most once and share the promise across callers.
|
|
46
|
-
const
|
|
45
|
+
const currentUserCache = useRef(undefined);
|
|
47
46
|
const targetKey = target ? objRefToString(target.ref) : undefined;
|
|
48
|
-
//
|
|
49
|
-
//
|
|
50
|
-
// eager resolve below, so a granted row can show a human name even when its
|
|
51
|
-
// access-list grant carried only a raw id. Must not depend on the caches it
|
|
52
|
-
// writes, or it would re-trigger loadOptions' fetch.
|
|
47
|
+
// Written from both the picker (loadOptions) and the on-open resolve. Must not
|
|
48
|
+
// depend on the cache it writes, or it would re-trigger loadOptions' fetch.
|
|
53
49
|
const cacheAssignees = useCallback((assignees) => {
|
|
54
|
-
|
|
55
|
-
assignee: a,
|
|
56
|
-
id: granteeId(a.type === "user" ? "user" : "group", a.ref),
|
|
57
|
-
}));
|
|
58
|
-
setKnownNames((prev) => {
|
|
59
|
-
const next = { ...prev };
|
|
60
|
-
for (const { assignee, id } of withIds) {
|
|
61
|
-
next[id] = assignee.name;
|
|
62
|
-
}
|
|
63
|
-
return next;
|
|
64
|
-
});
|
|
65
|
-
setKnownRefs((prev) => {
|
|
50
|
+
setKnownAssignees((prev) => {
|
|
66
51
|
const next = { ...prev };
|
|
67
|
-
for (const
|
|
68
|
-
next[
|
|
52
|
+
for (const assignee of assignees) {
|
|
53
|
+
next[granteeId(assignee.type === "user" ? "user" : "group", assignee.ref)] = {
|
|
54
|
+
facts: assigneeIdentityFacts(assignee),
|
|
55
|
+
ref: assignee.ref,
|
|
56
|
+
};
|
|
69
57
|
}
|
|
70
58
|
return next;
|
|
71
59
|
});
|
|
@@ -107,35 +95,62 @@ export function useAccessList(target, onSaved, dialogOpen) {
|
|
|
107
95
|
setSeededTarget(undefined);
|
|
108
96
|
}
|
|
109
97
|
}, [fetchStatus, fetchedList, fetchError, targetKey]);
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
//
|
|
125
|
-
//
|
|
126
|
-
//
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
98
|
+
const getCurrentUser = useCallback(() => {
|
|
99
|
+
if (!currentUserCache.current) {
|
|
100
|
+
currentUserCache.current = backend
|
|
101
|
+
.currentUser()
|
|
102
|
+
.getUser()
|
|
103
|
+
.catch((error) => {
|
|
104
|
+
// Don't cache a rejected promise, or a transient profile-read
|
|
105
|
+
// failure would make every later transfer fail immediately.
|
|
106
|
+
currentUserCache.current = undefined;
|
|
107
|
+
throw error;
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
return currentUserCache.current;
|
|
111
|
+
}, [backend]);
|
|
112
|
+
// Resolve the current user only while the dialog is open — keeps the summary-only
|
|
113
|
+
// path free of a profile request (the transfer gate and self-row facts it feeds
|
|
114
|
+
// aren't shown there).
|
|
115
|
+
const { result: currentUser } = useCancelablePromise({
|
|
116
|
+
promise: dialogOpen && targetKey ? () => getCurrentUser() : undefined,
|
|
117
|
+
onError: () => { },
|
|
118
|
+
},
|
|
119
|
+
// Key on target presence, not identity — the resolved user is
|
|
120
|
+
// target-independent, so a target switch must not reset it.
|
|
121
|
+
[getCurrentUser, targetKey !== undefined, dialogOpen]);
|
|
122
|
+
const selfId = currentUser ? granteeId("user", idRef(currentUser.login)) : undefined;
|
|
123
|
+
// Rows with identity facts backfilled from the assignee cache — or, for the
|
|
124
|
+
// signed-in user's own row (absent from the listing by design), from the
|
|
125
|
+
// profile. Empty until the current target's list is seeded; a derivation, so
|
|
126
|
+
// it re-applies as the caches grow.
|
|
127
|
+
const namedGrantees = useMemo(() => {
|
|
128
|
+
if (!hasList) {
|
|
129
|
+
return [];
|
|
130
|
+
}
|
|
131
|
+
// De-collapsed like every listing fact — on tiger the user id is often the email.
|
|
132
|
+
const selfFacts = currentUser
|
|
133
|
+
? userIdentityFacts(idRef(currentUser.login), currentUser.fullName, currentUser.email)
|
|
134
|
+
: undefined;
|
|
135
|
+
return grantees.map((g) => {
|
|
136
|
+
const known = knownAssignees[g.id]?.facts ?? (g.id === selfId ? selfFacts : undefined);
|
|
137
|
+
return known ? { ...g, name: g.name ?? known.name, email: g.email ?? known.email } : g;
|
|
138
|
+
});
|
|
139
|
+
}, [hasList, grantees, knownAssignees, currentUser, selfId]);
|
|
140
|
+
// Resolve identity facts on dialog open — grants often carry only raw ids
|
|
141
|
+
// (the post-reload state). Unconditional: no missing-facts gate to keep in
|
|
142
|
+
// sync with the cache, and summary-only consumers never fetch. Keyed on the
|
|
143
|
+
// serialized targetKey so an inline-ref consumer re-rendering mid-fetch
|
|
144
|
+
// doesn't cancel it.
|
|
130
145
|
useCancelablePromise({
|
|
131
|
-
promise: target &&
|
|
146
|
+
promise: target && dialogOpen
|
|
132
147
|
? () => backend.workspace(workspace).objectPermissions().getAvailableAssignees(target)
|
|
133
148
|
: undefined,
|
|
134
149
|
onSuccess: cacheAssignees,
|
|
135
150
|
// Best-effort backfill: on error the raw id stays (pre-fix behavior, no
|
|
136
151
|
// regression) and the picker can still resolve it on demand. No toast.
|
|
137
152
|
onError: () => { },
|
|
138
|
-
}, [backend, workspace, targetKey,
|
|
153
|
+
}, [backend, workspace, targetKey, dialogOpen]);
|
|
139
154
|
// Stable sorted key of the currently-granted ids — drives the picker's
|
|
140
155
|
// "exclude already-granted" filter. Keyed on ids only (not names), so the
|
|
141
156
|
// picker's own name-cache writes can't change loadOptions' identity and
|
|
@@ -227,8 +242,8 @@ export function useAccessList(target, onSaved, dialogOpen) {
|
|
|
227
242
|
.map(({ assignee, id }) => ({
|
|
228
243
|
id,
|
|
229
244
|
kind: "user",
|
|
230
|
-
|
|
231
|
-
|
|
245
|
+
// Same fallback pairs as the grantee rows.
|
|
246
|
+
...userDisplayPair(assigneeIdentityFacts(assignee), objRefToString(assignee.ref)),
|
|
232
247
|
})),
|
|
233
248
|
groups: selectable
|
|
234
249
|
.filter(({ assignee }) => assignee.type !== "user")
|
|
@@ -237,36 +252,13 @@ export function useAccessList(target, onSaved, dialogOpen) {
|
|
|
237
252
|
}, [backend, workspace, target, excludedIdsKey, cacheAssignees]);
|
|
238
253
|
// Reuse the picker's original ref (preserves UriRef vs IdentifierRef);
|
|
239
254
|
// fall back to the serialized id only if it wasn't cached.
|
|
240
|
-
const refForId = useCallback((id) =>
|
|
241
|
-
const getCurrentUserRef = useCallback(
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
// grantee refs are idRefs keyed by user id (= profile login), and
|
|
248
|
-
// areObjRefsEqual never matches mixed shapes — self-row matching and
|
|
249
|
-
// the self grant write need the permission API's id space.
|
|
250
|
-
.then((user) => idRef(user.login))
|
|
251
|
-
.catch((error) => {
|
|
252
|
-
// Don't cache a rejected promise, or a transient profile-read
|
|
253
|
-
// failure would make every later transfer fail immediately.
|
|
254
|
-
currentUserRefCache.current = undefined;
|
|
255
|
-
throw error;
|
|
256
|
-
});
|
|
257
|
-
}
|
|
258
|
-
return currentUserRefCache.current;
|
|
259
|
-
}, [backend]);
|
|
260
|
-
// Resolve the current user only while the dialog is open — keeps the summary-only
|
|
261
|
-
// path free of a profile request (the transfer gate it feeds isn't shown there).
|
|
262
|
-
const { result: currentUserRef } = useCancelablePromise({
|
|
263
|
-
promise: dialogOpen && targetKey ? () => getCurrentUserRef() : undefined,
|
|
264
|
-
onError: () => { },
|
|
265
|
-
},
|
|
266
|
-
// Key on target presence, not identity — the resolved user is
|
|
267
|
-
// target-independent, so a target switch must not reset it.
|
|
268
|
-
[getCurrentUserRef, targetKey !== undefined, dialogOpen]);
|
|
269
|
-
const selfId = currentUserRef ? granteeId("user", currentUserRef) : undefined;
|
|
255
|
+
const refForId = useCallback((id) => knownAssignees[id]?.ref ?? { identifier: id.split(":", 2)[1] }, [knownAssignees]);
|
|
256
|
+
const getCurrentUserRef = useCallback(
|
|
257
|
+
// Not `user.ref`: the profile resolves it as a uriRef while access-list
|
|
258
|
+
// grantee refs are idRefs keyed by user id (= profile login), and
|
|
259
|
+
// areObjRefsEqual never matches mixed shapes — self-row matching and
|
|
260
|
+
// the self grant write need the permission API's id space.
|
|
261
|
+
() => getCurrentUser().then((user) => idRef(user.login)), [getCurrentUser]);
|
|
270
262
|
const canTransferOwnership = selfId !== undefined && namedGrantees.some((g) => g.id === selfId && g.level === "EDIT");
|
|
271
263
|
return {
|
|
272
264
|
targetKey,
|
|
@@ -286,6 +278,5 @@ export function useAccessList(target, onSaved, dialogOpen) {
|
|
|
286
278
|
setGrantees,
|
|
287
279
|
setGeneralAccess,
|
|
288
280
|
setWorkspaceLevel,
|
|
289
|
-
setKnownNames,
|
|
290
281
|
};
|
|
291
282
|
}
|
|
@@ -19,7 +19,9 @@ import { type IObjectShareController, type IUseObjectShareOptions } from "./obje
|
|
|
19
19
|
* plain props and it owns its controller. Call this (exported as `useObjectShare`)
|
|
20
20
|
* only to share a single access-list fetch between the dialog and an inline summary
|
|
21
21
|
* row: call it once, read `state.summary` for the row, and pass the controller into
|
|
22
|
-
* the dialog.
|
|
22
|
+
* the dialog. Grantee rows carry identity facts only (`name`/`email` are undefined
|
|
23
|
+
* when unknown); the display fallback order is not exposed, so {@link ObjectShareDialog}
|
|
24
|
+
* is the only sanctioned row renderer.
|
|
23
25
|
*
|
|
24
26
|
* @internal
|
|
25
27
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useObjectShareController.d.ts","sourceRoot":"","sources":["../../src/share/useObjectShareController.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAkB1E,OAAO,EACH,KAAK,sBAAsB,EAI3B,KAAK,sBAAsB,EAE9B,MAAM,kCAAkC,CAAC;AAI1C
|
|
1
|
+
{"version":3,"file":"useObjectShareController.d.ts","sourceRoot":"","sources":["../../src/share/useObjectShareController.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAkB1E,OAAO,EACH,KAAK,sBAAsB,EAI3B,KAAK,sBAAsB,EAE9B,MAAM,kCAAkC,CAAC;AAI1C;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,wBAAwB,CACpC,MAAM,EAAE,wBAAwB,GAAG,SAAS,EAC5C,OAAO,CAAC,EAAE,sBAAsB,GACjC,sBAAsB,CAuyBxB"}
|