@gooddata/sdk-ui-ext 11.43.0-alpha.4 → 11.43.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/NOTICE +641 -841
- package/esm/internal/translations/de-DE.localization-bundle.d.ts +42 -0
- package/esm/internal/translations/de-DE.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/de-DE.localization-bundle.js +43 -1
- package/esm/internal/translations/en-AU.localization-bundle.d.ts +42 -0
- package/esm/internal/translations/en-AU.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/en-AU.localization-bundle.js +44 -2
- package/esm/internal/translations/en-GB.localization-bundle.d.ts +42 -0
- package/esm/internal/translations/en-GB.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/en-GB.localization-bundle.js +44 -2
- package/esm/internal/translations/es-419.localization-bundle.d.ts +42 -0
- package/esm/internal/translations/es-419.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/es-419.localization-bundle.js +44 -2
- package/esm/internal/translations/es-ES.localization-bundle.d.ts +42 -0
- package/esm/internal/translations/es-ES.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/es-ES.localization-bundle.js +44 -2
- package/esm/internal/translations/fi-FI.localization-bundle.d.ts +42 -0
- package/esm/internal/translations/fi-FI.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/fi-FI.localization-bundle.js +43 -1
- package/esm/internal/translations/fr-CA.localization-bundle.d.ts +42 -0
- package/esm/internal/translations/fr-CA.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/fr-CA.localization-bundle.js +43 -1
- package/esm/internal/translations/fr-FR.localization-bundle.d.ts +42 -0
- package/esm/internal/translations/fr-FR.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/fr-FR.localization-bundle.js +43 -1
- package/esm/internal/translations/id-ID.localization-bundle.d.ts +42 -0
- package/esm/internal/translations/id-ID.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/id-ID.localization-bundle.js +43 -1
- package/esm/internal/translations/it-IT.localization-bundle.d.ts +42 -0
- package/esm/internal/translations/it-IT.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/it-IT.localization-bundle.js +43 -1
- package/esm/internal/translations/ja-JP.localization-bundle.d.ts +42 -0
- package/esm/internal/translations/ja-JP.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/ja-JP.localization-bundle.js +43 -1
- package/esm/internal/translations/ko-KR.localization-bundle.d.ts +42 -0
- package/esm/internal/translations/ko-KR.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/ko-KR.localization-bundle.js +43 -1
- package/esm/internal/translations/nl-NL.localization-bundle.d.ts +42 -0
- package/esm/internal/translations/nl-NL.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/nl-NL.localization-bundle.js +43 -1
- package/esm/internal/translations/pl-PL.localization-bundle.d.ts +42 -0
- package/esm/internal/translations/pl-PL.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/pl-PL.localization-bundle.js +43 -1
- package/esm/internal/translations/pt-BR.localization-bundle.d.ts +42 -0
- package/esm/internal/translations/pt-BR.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/pt-BR.localization-bundle.js +43 -1
- package/esm/internal/translations/pt-PT.localization-bundle.d.ts +42 -0
- package/esm/internal/translations/pt-PT.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/pt-PT.localization-bundle.js +43 -1
- package/esm/internal/translations/ru-RU.localization-bundle.d.ts +42 -0
- package/esm/internal/translations/ru-RU.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/ru-RU.localization-bundle.js +43 -1
- package/esm/internal/translations/sl-SI.localization-bundle.d.ts +42 -0
- package/esm/internal/translations/sl-SI.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/sl-SI.localization-bundle.js +43 -1
- package/esm/internal/translations/th-TH.localization-bundle.d.ts +42 -0
- package/esm/internal/translations/th-TH.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/th-TH.localization-bundle.js +43 -1
- package/esm/internal/translations/tr-TR.localization-bundle.d.ts +42 -0
- package/esm/internal/translations/tr-TR.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/tr-TR.localization-bundle.js +43 -1
- package/esm/internal/translations/uk-UA.localization-bundle.d.ts +42 -0
- package/esm/internal/translations/uk-UA.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/uk-UA.localization-bundle.js +43 -1
- package/esm/internal/translations/vi-VN.localization-bundle.d.ts +42 -0
- package/esm/internal/translations/vi-VN.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/vi-VN.localization-bundle.js +43 -1
- package/esm/internal/translations/zh-HK.localization-bundle.d.ts +42 -0
- package/esm/internal/translations/zh-HK.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/zh-HK.localization-bundle.js +44 -2
- package/esm/internal/translations/zh-Hans.localization-bundle.d.ts +42 -0
- package/esm/internal/translations/zh-Hans.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/zh-Hans.localization-bundle.js +43 -1
- package/esm/internal/translations/zh-Hant.localization-bundle.d.ts +42 -0
- package/esm/internal/translations/zh-Hant.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/zh-Hant.localization-bundle.js +45 -3
- package/esm/sdk-ui-ext.d.ts +27 -3
- package/esm/share/ObjectShareDialog.d.ts.map +1 -1
- package/esm/share/ObjectShareDialog.js +23 -2
- package/esm/share/objectShareController.helpers.d.ts +1 -1
- package/esm/share/objectShareController.helpers.d.ts.map +1 -1
- package/esm/share/objectShareController.helpers.js +26 -13
- package/esm/share/objectShareController.types.d.ts +27 -4
- package/esm/share/objectShareController.types.d.ts.map +1 -1
- package/esm/share/useObjectShareController.d.ts.map +1 -1
- package/esm/share/useObjectShareController.js +50 -0
- package/package.json +21 -22
|
@@ -604,5 +604,47 @@ export declare const zh_HK: {
|
|
|
604
604
|
"objectShare.toast.error": string;
|
|
605
605
|
"objectShare.toast.labelScopePartial": string;
|
|
606
606
|
"objectShare.loadError": string;
|
|
607
|
+
"properties.conditionalFormatting.title": string;
|
|
608
|
+
"properties.conditionalFormatting.empty": string;
|
|
609
|
+
"properties.conditionalFormatting.rulesLabel": string;
|
|
610
|
+
"properties.conditionalFormatting.addRule": string;
|
|
611
|
+
"properties.conditionalFormatting.rule.invalid": string;
|
|
612
|
+
"properties.conditionalFormatting.rule.edit": string;
|
|
613
|
+
"properties.conditionalFormatting.rule.delete": string;
|
|
614
|
+
"properties.conditionalFormatting.dialog.addTitle": string;
|
|
615
|
+
"properties.conditionalFormatting.dialog.editTitle": string;
|
|
616
|
+
"properties.conditionalFormatting.dialog.target": string;
|
|
617
|
+
"properties.conditionalFormatting.dialog.selectTarget": string;
|
|
618
|
+
"properties.conditionalFormatting.dialog.condition": string;
|
|
619
|
+
"properties.conditionalFormatting.dialog.format": string;
|
|
620
|
+
"properties.conditionalFormatting.dialog.addCondition": string;
|
|
621
|
+
"properties.conditionalFormatting.dialog.removeCondition": string;
|
|
622
|
+
"properties.conditionalFormatting.dialog.textColor": string;
|
|
623
|
+
"properties.conditionalFormatting.dialog.fillColor": string;
|
|
624
|
+
"properties.conditionalFormatting.dialog.noColor": string;
|
|
625
|
+
"properties.conditionalFormatting.dialog.scope.cell": string;
|
|
626
|
+
"properties.conditionalFormatting.dialog.scope.row": string;
|
|
627
|
+
"properties.conditionalFormatting.dialog.value": string;
|
|
628
|
+
"properties.conditionalFormatting.dialog.from": string;
|
|
629
|
+
"properties.conditionalFormatting.dialog.to": string;
|
|
630
|
+
"properties.conditionalFormatting.dialog.cancel": string;
|
|
631
|
+
"properties.conditionalFormatting.dialog.save": string;
|
|
632
|
+
"properties.conditionalFormatting.operator.all": string;
|
|
633
|
+
"properties.conditionalFormatting.operator.equalTo": string;
|
|
634
|
+
"properties.conditionalFormatting.operator.notEqualTo": string;
|
|
635
|
+
"properties.conditionalFormatting.operator.greaterThan": string;
|
|
636
|
+
"properties.conditionalFormatting.operator.greaterThanOrEqualTo": string;
|
|
637
|
+
"properties.conditionalFormatting.operator.lessThan": string;
|
|
638
|
+
"properties.conditionalFormatting.operator.lessThanOrEqualTo": string;
|
|
639
|
+
"properties.conditionalFormatting.operator.between": string;
|
|
640
|
+
"properties.conditionalFormatting.operator.notBetween": string;
|
|
641
|
+
"properties.conditionalFormatting.operator.contains": string;
|
|
642
|
+
"properties.conditionalFormatting.operator.notContains": string;
|
|
643
|
+
"properties.conditionalFormatting.operator.startsWith": string;
|
|
644
|
+
"properties.conditionalFormatting.operator.notStartsWith": string;
|
|
645
|
+
"properties.conditionalFormatting.operator.endsWith": string;
|
|
646
|
+
"properties.conditionalFormatting.operator.notEndsWith": string;
|
|
647
|
+
"properties.conditionalFormatting.operator.isEmpty": string;
|
|
648
|
+
"properties.conditionalFormatting.operator.isNotEmpty": string;
|
|
607
649
|
};
|
|
608
650
|
//# sourceMappingURL=zh-HK.localization-bundle.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zh-HK.localization-bundle.d.ts","sourceRoot":"","sources":["../../../src/internal/translations/zh-HK.localization-bundle.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,KAAK
|
|
1
|
+
{"version":3,"file":"zh-HK.localization-bundle.d.ts","sourceRoot":"","sources":["../../../src/internal/translations/zh-HK.localization-bundle.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwoBjB,CAAC"}
|
|
@@ -382,7 +382,7 @@ export const zh_HK = {
|
|
|
382
382
|
"properties.comparison.measureNumber.format.template.trendSymbols": "趨勢符號",
|
|
383
383
|
"properties.comparison.measureNumber.format.template.timeFromSeconds": "時間(以秒為單位)",
|
|
384
384
|
"properties.comparison.measureNumber.format.template.zeroInsteadOfNull": "零值而唔係空白值",
|
|
385
|
-
"properties.comparison.valueSubSection.title": "
|
|
385
|
+
"properties.comparison.valueSubSection.title": "值",
|
|
386
386
|
"properties.comparison.format.title": "格式",
|
|
387
387
|
"properties.comparison.subFormat.title": "(格式)",
|
|
388
388
|
"properties.comparison.indicator.title": "指示器",
|
|
@@ -605,5 +605,47 @@ export const zh_HK = {
|
|
|
605
605
|
"objectShare.toast.generalAccessUpdated": "已更新一般存取權。",
|
|
606
606
|
"objectShare.toast.error": "無法更新存取權。",
|
|
607
607
|
"objectShare.toast.labelScopePartial": "無法儲存部分標籤存取權。",
|
|
608
|
-
"objectShare.loadError": "無法載入共享設定。請關閉並重試。"
|
|
608
|
+
"objectShare.loadError": "無法載入共享設定。請關閉並重試。",
|
|
609
|
+
"properties.conditionalFormatting.title": "條件式格式設定",
|
|
610
|
+
"properties.conditionalFormatting.empty": "醒目標示符合規則的儲存格或列。",
|
|
611
|
+
"properties.conditionalFormatting.rulesLabel": "規則",
|
|
612
|
+
"properties.conditionalFormatting.addRule": "增加",
|
|
613
|
+
"properties.conditionalFormatting.rule.invalid": "找不到欄",
|
|
614
|
+
"properties.conditionalFormatting.rule.edit": "編輯規則",
|
|
615
|
+
"properties.conditionalFormatting.rule.delete": "刪除規則",
|
|
616
|
+
"properties.conditionalFormatting.dialog.addTitle": "新增規則",
|
|
617
|
+
"properties.conditionalFormatting.dialog.editTitle": "編輯規則",
|
|
618
|
+
"properties.conditionalFormatting.dialog.target": "幾時",
|
|
619
|
+
"properties.conditionalFormatting.dialog.selectTarget": "選擇測量或屬性",
|
|
620
|
+
"properties.conditionalFormatting.dialog.condition": "條件",
|
|
621
|
+
"properties.conditionalFormatting.dialog.format": "格式",
|
|
622
|
+
"properties.conditionalFormatting.dialog.addCondition": "新增條件",
|
|
623
|
+
"properties.conditionalFormatting.dialog.removeCondition": "移除條件",
|
|
624
|
+
"properties.conditionalFormatting.dialog.textColor": "文字",
|
|
625
|
+
"properties.conditionalFormatting.dialog.fillColor": "填補",
|
|
626
|
+
"properties.conditionalFormatting.dialog.noColor": "無顏色",
|
|
627
|
+
"properties.conditionalFormatting.dialog.scope.cell": "儲存格",
|
|
628
|
+
"properties.conditionalFormatting.dialog.scope.row": "列",
|
|
629
|
+
"properties.conditionalFormatting.dialog.value": "值",
|
|
630
|
+
"properties.conditionalFormatting.dialog.from": "從",
|
|
631
|
+
"properties.conditionalFormatting.dialog.to": "到",
|
|
632
|
+
"properties.conditionalFormatting.dialog.cancel": "取消",
|
|
633
|
+
"properties.conditionalFormatting.dialog.save": "儲存",
|
|
634
|
+
"properties.conditionalFormatting.operator.all": "所有值",
|
|
635
|
+
"properties.conditionalFormatting.operator.equalTo": "等於",
|
|
636
|
+
"properties.conditionalFormatting.operator.notEqualTo": "不等於",
|
|
637
|
+
"properties.conditionalFormatting.operator.greaterThan": "大於",
|
|
638
|
+
"properties.conditionalFormatting.operator.greaterThanOrEqualTo": "大於或等於",
|
|
639
|
+
"properties.conditionalFormatting.operator.lessThan": "小於",
|
|
640
|
+
"properties.conditionalFormatting.operator.lessThanOrEqualTo": "小於或等於",
|
|
641
|
+
"properties.conditionalFormatting.operator.between": "之間",
|
|
642
|
+
"properties.conditionalFormatting.operator.notBetween": "不在之間",
|
|
643
|
+
"properties.conditionalFormatting.operator.contains": "包含",
|
|
644
|
+
"properties.conditionalFormatting.operator.notContains": "不包含",
|
|
645
|
+
"properties.conditionalFormatting.operator.startsWith": "以…開始",
|
|
646
|
+
"properties.conditionalFormatting.operator.notStartsWith": "不以…開始",
|
|
647
|
+
"properties.conditionalFormatting.operator.endsWith": "以…結束",
|
|
648
|
+
"properties.conditionalFormatting.operator.notEndsWith": "不以…結束",
|
|
649
|
+
"properties.conditionalFormatting.operator.isEmpty": "為空白",
|
|
650
|
+
"properties.conditionalFormatting.operator.isNotEmpty": "不是空白"
|
|
609
651
|
};
|
|
@@ -604,5 +604,47 @@ export declare const zh_Hans: {
|
|
|
604
604
|
"objectShare.toast.error": string;
|
|
605
605
|
"objectShare.toast.labelScopePartial": string;
|
|
606
606
|
"objectShare.loadError": string;
|
|
607
|
+
"properties.conditionalFormatting.title": string;
|
|
608
|
+
"properties.conditionalFormatting.empty": string;
|
|
609
|
+
"properties.conditionalFormatting.rulesLabel": string;
|
|
610
|
+
"properties.conditionalFormatting.addRule": string;
|
|
611
|
+
"properties.conditionalFormatting.rule.invalid": string;
|
|
612
|
+
"properties.conditionalFormatting.rule.edit": string;
|
|
613
|
+
"properties.conditionalFormatting.rule.delete": string;
|
|
614
|
+
"properties.conditionalFormatting.dialog.addTitle": string;
|
|
615
|
+
"properties.conditionalFormatting.dialog.editTitle": string;
|
|
616
|
+
"properties.conditionalFormatting.dialog.target": string;
|
|
617
|
+
"properties.conditionalFormatting.dialog.selectTarget": string;
|
|
618
|
+
"properties.conditionalFormatting.dialog.condition": string;
|
|
619
|
+
"properties.conditionalFormatting.dialog.format": string;
|
|
620
|
+
"properties.conditionalFormatting.dialog.addCondition": string;
|
|
621
|
+
"properties.conditionalFormatting.dialog.removeCondition": string;
|
|
622
|
+
"properties.conditionalFormatting.dialog.textColor": string;
|
|
623
|
+
"properties.conditionalFormatting.dialog.fillColor": string;
|
|
624
|
+
"properties.conditionalFormatting.dialog.noColor": string;
|
|
625
|
+
"properties.conditionalFormatting.dialog.scope.cell": string;
|
|
626
|
+
"properties.conditionalFormatting.dialog.scope.row": string;
|
|
627
|
+
"properties.conditionalFormatting.dialog.value": string;
|
|
628
|
+
"properties.conditionalFormatting.dialog.from": string;
|
|
629
|
+
"properties.conditionalFormatting.dialog.to": string;
|
|
630
|
+
"properties.conditionalFormatting.dialog.cancel": string;
|
|
631
|
+
"properties.conditionalFormatting.dialog.save": string;
|
|
632
|
+
"properties.conditionalFormatting.operator.all": string;
|
|
633
|
+
"properties.conditionalFormatting.operator.equalTo": string;
|
|
634
|
+
"properties.conditionalFormatting.operator.notEqualTo": string;
|
|
635
|
+
"properties.conditionalFormatting.operator.greaterThan": string;
|
|
636
|
+
"properties.conditionalFormatting.operator.greaterThanOrEqualTo": string;
|
|
637
|
+
"properties.conditionalFormatting.operator.lessThan": string;
|
|
638
|
+
"properties.conditionalFormatting.operator.lessThanOrEqualTo": string;
|
|
639
|
+
"properties.conditionalFormatting.operator.between": string;
|
|
640
|
+
"properties.conditionalFormatting.operator.notBetween": string;
|
|
641
|
+
"properties.conditionalFormatting.operator.contains": string;
|
|
642
|
+
"properties.conditionalFormatting.operator.notContains": string;
|
|
643
|
+
"properties.conditionalFormatting.operator.startsWith": string;
|
|
644
|
+
"properties.conditionalFormatting.operator.notStartsWith": string;
|
|
645
|
+
"properties.conditionalFormatting.operator.endsWith": string;
|
|
646
|
+
"properties.conditionalFormatting.operator.notEndsWith": string;
|
|
647
|
+
"properties.conditionalFormatting.operator.isEmpty": string;
|
|
648
|
+
"properties.conditionalFormatting.operator.isNotEmpty": string;
|
|
607
649
|
};
|
|
608
650
|
//# sourceMappingURL=zh-Hans.localization-bundle.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zh-Hans.localization-bundle.d.ts","sourceRoot":"","sources":["../../../src/internal/translations/zh-Hans.localization-bundle.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO
|
|
1
|
+
{"version":3,"file":"zh-Hans.localization-bundle.d.ts","sourceRoot":"","sources":["../../../src/internal/translations/zh-Hans.localization-bundle.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwoBnB,CAAC"}
|
|
@@ -605,5 +605,47 @@ export const zh_Hans = {
|
|
|
605
605
|
"objectShare.toast.generalAccessUpdated": "已更新常规访问权限。",
|
|
606
606
|
"objectShare.toast.error": "无法更新访问权限。",
|
|
607
607
|
"objectShare.toast.labelScopePartial": "无法保存某些标签访问权限。",
|
|
608
|
-
"objectShare.loadError": "无法加载共享设置。请关闭并重试。"
|
|
608
|
+
"objectShare.loadError": "无法加载共享设置。请关闭并重试。",
|
|
609
|
+
"properties.conditionalFormatting.title": "条件格式设置",
|
|
610
|
+
"properties.conditionalFormatting.empty": "突出显示与规则匹配的单元格或行。",
|
|
611
|
+
"properties.conditionalFormatting.rulesLabel": "规则",
|
|
612
|
+
"properties.conditionalFormatting.addRule": "添加",
|
|
613
|
+
"properties.conditionalFormatting.rule.invalid": "未找到列",
|
|
614
|
+
"properties.conditionalFormatting.rule.edit": "编辑规则",
|
|
615
|
+
"properties.conditionalFormatting.rule.delete": "删除规则",
|
|
616
|
+
"properties.conditionalFormatting.dialog.addTitle": "添加规则",
|
|
617
|
+
"properties.conditionalFormatting.dialog.editTitle": "编辑规则",
|
|
618
|
+
"properties.conditionalFormatting.dialog.target": "何时",
|
|
619
|
+
"properties.conditionalFormatting.dialog.selectTarget": "选择度量或属性",
|
|
620
|
+
"properties.conditionalFormatting.dialog.condition": "条件",
|
|
621
|
+
"properties.conditionalFormatting.dialog.format": "格式",
|
|
622
|
+
"properties.conditionalFormatting.dialog.addCondition": "添加条件",
|
|
623
|
+
"properties.conditionalFormatting.dialog.removeCondition": "移除条件",
|
|
624
|
+
"properties.conditionalFormatting.dialog.textColor": "文本",
|
|
625
|
+
"properties.conditionalFormatting.dialog.fillColor": "填充",
|
|
626
|
+
"properties.conditionalFormatting.dialog.noColor": "无颜色",
|
|
627
|
+
"properties.conditionalFormatting.dialog.scope.cell": "单元格",
|
|
628
|
+
"properties.conditionalFormatting.dialog.scope.row": "行",
|
|
629
|
+
"properties.conditionalFormatting.dialog.value": "数值",
|
|
630
|
+
"properties.conditionalFormatting.dialog.from": "从",
|
|
631
|
+
"properties.conditionalFormatting.dialog.to": "到",
|
|
632
|
+
"properties.conditionalFormatting.dialog.cancel": "取消",
|
|
633
|
+
"properties.conditionalFormatting.dialog.save": "保存",
|
|
634
|
+
"properties.conditionalFormatting.operator.all": "所有值",
|
|
635
|
+
"properties.conditionalFormatting.operator.equalTo": "等于",
|
|
636
|
+
"properties.conditionalFormatting.operator.notEqualTo": "不等于",
|
|
637
|
+
"properties.conditionalFormatting.operator.greaterThan": "大于",
|
|
638
|
+
"properties.conditionalFormatting.operator.greaterThanOrEqualTo": "大于或等于",
|
|
639
|
+
"properties.conditionalFormatting.operator.lessThan": "小于",
|
|
640
|
+
"properties.conditionalFormatting.operator.lessThanOrEqualTo": "小于或等于",
|
|
641
|
+
"properties.conditionalFormatting.operator.between": "介于",
|
|
642
|
+
"properties.conditionalFormatting.operator.notBetween": "不介于",
|
|
643
|
+
"properties.conditionalFormatting.operator.contains": "包含",
|
|
644
|
+
"properties.conditionalFormatting.operator.notContains": "不包含",
|
|
645
|
+
"properties.conditionalFormatting.operator.startsWith": "开头为",
|
|
646
|
+
"properties.conditionalFormatting.operator.notStartsWith": "开头不为",
|
|
647
|
+
"properties.conditionalFormatting.operator.endsWith": "结尾为",
|
|
648
|
+
"properties.conditionalFormatting.operator.notEndsWith": "结尾不为",
|
|
649
|
+
"properties.conditionalFormatting.operator.isEmpty": "为空",
|
|
650
|
+
"properties.conditionalFormatting.operator.isNotEmpty": "不为空"
|
|
609
651
|
};
|
|
@@ -604,5 +604,47 @@ export declare const zh_Hant: {
|
|
|
604
604
|
"objectShare.toast.error": string;
|
|
605
605
|
"objectShare.toast.labelScopePartial": string;
|
|
606
606
|
"objectShare.loadError": string;
|
|
607
|
+
"properties.conditionalFormatting.title": string;
|
|
608
|
+
"properties.conditionalFormatting.empty": string;
|
|
609
|
+
"properties.conditionalFormatting.rulesLabel": string;
|
|
610
|
+
"properties.conditionalFormatting.addRule": string;
|
|
611
|
+
"properties.conditionalFormatting.rule.invalid": string;
|
|
612
|
+
"properties.conditionalFormatting.rule.edit": string;
|
|
613
|
+
"properties.conditionalFormatting.rule.delete": string;
|
|
614
|
+
"properties.conditionalFormatting.dialog.addTitle": string;
|
|
615
|
+
"properties.conditionalFormatting.dialog.editTitle": string;
|
|
616
|
+
"properties.conditionalFormatting.dialog.target": string;
|
|
617
|
+
"properties.conditionalFormatting.dialog.selectTarget": string;
|
|
618
|
+
"properties.conditionalFormatting.dialog.condition": string;
|
|
619
|
+
"properties.conditionalFormatting.dialog.format": string;
|
|
620
|
+
"properties.conditionalFormatting.dialog.addCondition": string;
|
|
621
|
+
"properties.conditionalFormatting.dialog.removeCondition": string;
|
|
622
|
+
"properties.conditionalFormatting.dialog.textColor": string;
|
|
623
|
+
"properties.conditionalFormatting.dialog.fillColor": string;
|
|
624
|
+
"properties.conditionalFormatting.dialog.noColor": string;
|
|
625
|
+
"properties.conditionalFormatting.dialog.scope.cell": string;
|
|
626
|
+
"properties.conditionalFormatting.dialog.scope.row": string;
|
|
627
|
+
"properties.conditionalFormatting.dialog.value": string;
|
|
628
|
+
"properties.conditionalFormatting.dialog.from": string;
|
|
629
|
+
"properties.conditionalFormatting.dialog.to": string;
|
|
630
|
+
"properties.conditionalFormatting.dialog.cancel": string;
|
|
631
|
+
"properties.conditionalFormatting.dialog.save": string;
|
|
632
|
+
"properties.conditionalFormatting.operator.all": string;
|
|
633
|
+
"properties.conditionalFormatting.operator.equalTo": string;
|
|
634
|
+
"properties.conditionalFormatting.operator.notEqualTo": string;
|
|
635
|
+
"properties.conditionalFormatting.operator.greaterThan": string;
|
|
636
|
+
"properties.conditionalFormatting.operator.greaterThanOrEqualTo": string;
|
|
637
|
+
"properties.conditionalFormatting.operator.lessThan": string;
|
|
638
|
+
"properties.conditionalFormatting.operator.lessThanOrEqualTo": string;
|
|
639
|
+
"properties.conditionalFormatting.operator.between": string;
|
|
640
|
+
"properties.conditionalFormatting.operator.notBetween": string;
|
|
641
|
+
"properties.conditionalFormatting.operator.contains": string;
|
|
642
|
+
"properties.conditionalFormatting.operator.notContains": string;
|
|
643
|
+
"properties.conditionalFormatting.operator.startsWith": string;
|
|
644
|
+
"properties.conditionalFormatting.operator.notStartsWith": string;
|
|
645
|
+
"properties.conditionalFormatting.operator.endsWith": string;
|
|
646
|
+
"properties.conditionalFormatting.operator.notEndsWith": string;
|
|
647
|
+
"properties.conditionalFormatting.operator.isEmpty": string;
|
|
648
|
+
"properties.conditionalFormatting.operator.isNotEmpty": string;
|
|
607
649
|
};
|
|
608
650
|
//# sourceMappingURL=zh-Hant.localization-bundle.d.ts.map
|
|
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwoBnB,CAAC"}
|
|
@@ -276,7 +276,7 @@ export const zh_Hant = {
|
|
|
276
276
|
"properties.colors.reset-colors": "重置顏色",
|
|
277
277
|
"properties.colors": "顏色",
|
|
278
278
|
"properties.colorsAndFills": "顏色和填充",
|
|
279
|
-
"properties.fill": "
|
|
279
|
+
"properties.fill": "填滿",
|
|
280
280
|
"properties.fill.solid": "實心(預設)",
|
|
281
281
|
"properties.fill.pattern": "圖案",
|
|
282
282
|
"properties.fill.outline": "外框",
|
|
@@ -382,7 +382,7 @@ export const zh_Hant = {
|
|
|
382
382
|
"properties.comparison.measureNumber.format.template.trendSymbols": "趨勢符號",
|
|
383
383
|
"properties.comparison.measureNumber.format.template.timeFromSeconds": "時間(從秒開始)",
|
|
384
384
|
"properties.comparison.measureNumber.format.template.zeroInsteadOfNull": "零代替空白值",
|
|
385
|
-
"properties.comparison.valueSubSection.title": "
|
|
385
|
+
"properties.comparison.valueSubSection.title": "值",
|
|
386
386
|
"properties.comparison.format.title": "格式",
|
|
387
387
|
"properties.comparison.subFormat.title": "(格式)",
|
|
388
388
|
"properties.comparison.indicator.title": "指標",
|
|
@@ -605,5 +605,47 @@ export const zh_Hant = {
|
|
|
605
605
|
"objectShare.toast.generalAccessUpdated": "已更新一般存取權。",
|
|
606
606
|
"objectShare.toast.error": "無法更新存取權。",
|
|
607
607
|
"objectShare.toast.labelScopePartial": "無法儲存某些標籤存取權。",
|
|
608
|
-
"objectShare.loadError": "無法載入共用設定。請關閉並再試一次。"
|
|
608
|
+
"objectShare.loadError": "無法載入共用設定。請關閉並再試一次。",
|
|
609
|
+
"properties.conditionalFormatting.title": "條件式格式設定",
|
|
610
|
+
"properties.conditionalFormatting.empty": "醒目標示符合規則的儲存格或列。",
|
|
611
|
+
"properties.conditionalFormatting.rulesLabel": "規則",
|
|
612
|
+
"properties.conditionalFormatting.addRule": "添加",
|
|
613
|
+
"properties.conditionalFormatting.rule.invalid": "找不到欄",
|
|
614
|
+
"properties.conditionalFormatting.rule.edit": "編輯規則",
|
|
615
|
+
"properties.conditionalFormatting.rule.delete": "刪除規則",
|
|
616
|
+
"properties.conditionalFormatting.dialog.addTitle": "新增規則",
|
|
617
|
+
"properties.conditionalFormatting.dialog.editTitle": "編輯規則",
|
|
618
|
+
"properties.conditionalFormatting.dialog.target": "什麼時候",
|
|
619
|
+
"properties.conditionalFormatting.dialog.selectTarget": "選擇量值或屬性",
|
|
620
|
+
"properties.conditionalFormatting.dialog.condition": "條件",
|
|
621
|
+
"properties.conditionalFormatting.dialog.format": "格式",
|
|
622
|
+
"properties.conditionalFormatting.dialog.addCondition": "新增條件",
|
|
623
|
+
"properties.conditionalFormatting.dialog.removeCondition": "移除條件",
|
|
624
|
+
"properties.conditionalFormatting.dialog.textColor": "文字",
|
|
625
|
+
"properties.conditionalFormatting.dialog.fillColor": "填滿",
|
|
626
|
+
"properties.conditionalFormatting.dialog.noColor": "無顏色",
|
|
627
|
+
"properties.conditionalFormatting.dialog.scope.cell": "儲存格",
|
|
628
|
+
"properties.conditionalFormatting.dialog.scope.row": "列",
|
|
629
|
+
"properties.conditionalFormatting.dialog.value": "值",
|
|
630
|
+
"properties.conditionalFormatting.dialog.from": "從",
|
|
631
|
+
"properties.conditionalFormatting.dialog.to": "到",
|
|
632
|
+
"properties.conditionalFormatting.dialog.cancel": "取消",
|
|
633
|
+
"properties.conditionalFormatting.dialog.save": "儲存",
|
|
634
|
+
"properties.conditionalFormatting.operator.all": "所有值",
|
|
635
|
+
"properties.conditionalFormatting.operator.equalTo": "等於",
|
|
636
|
+
"properties.conditionalFormatting.operator.notEqualTo": "不等於",
|
|
637
|
+
"properties.conditionalFormatting.operator.greaterThan": "大於",
|
|
638
|
+
"properties.conditionalFormatting.operator.greaterThanOrEqualTo": "大於或等於",
|
|
639
|
+
"properties.conditionalFormatting.operator.lessThan": "小於",
|
|
640
|
+
"properties.conditionalFormatting.operator.lessThanOrEqualTo": "小於或等於",
|
|
641
|
+
"properties.conditionalFormatting.operator.between": "介於",
|
|
642
|
+
"properties.conditionalFormatting.operator.notBetween": "不介於",
|
|
643
|
+
"properties.conditionalFormatting.operator.contains": "包含",
|
|
644
|
+
"properties.conditionalFormatting.operator.notContains": "不包含",
|
|
645
|
+
"properties.conditionalFormatting.operator.startsWith": "開頭為",
|
|
646
|
+
"properties.conditionalFormatting.operator.notStartsWith": "開頭不為",
|
|
647
|
+
"properties.conditionalFormatting.operator.endsWith": "結尾為",
|
|
648
|
+
"properties.conditionalFormatting.operator.notEndsWith": "結尾不為",
|
|
649
|
+
"properties.conditionalFormatting.operator.isEmpty": "為空",
|
|
650
|
+
"properties.conditionalFormatting.operator.isNotEmpty": "不為空"
|
|
609
651
|
};
|
package/esm/sdk-ui-ext.d.ts
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
* @packageDocumentation
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
|
+
import type { AccessGranularPermission } from '@gooddata/sdk-model';
|
|
13
14
|
import { AutomationType } from '@gooddata/sdk-backend-spi';
|
|
14
15
|
import { ChartInlineVisualizationType } from '@gooddata/sdk-ui-charts';
|
|
15
16
|
import { ComponentType } from 'react';
|
|
@@ -1474,6 +1475,13 @@ export declare interface IObjectShareControllerActions {
|
|
|
1474
1475
|
cancelGeneralAccessChange: () => void;
|
|
1475
1476
|
/** Commit the pending general access change. Auto-saves. */
|
|
1476
1477
|
confirmGeneralAccessChange: () => Promise<void>;
|
|
1478
|
+
/**
|
|
1479
|
+
* Change the all-workspace-members rule's permission level (VIEW/SHARE).
|
|
1480
|
+
* Only meaningful while general access is WORKSPACE. Auto-saves, no confirm —
|
|
1481
|
+
* unlike the high-impact RESTRICTED↔WORKSPACE toggle, this only re-grades an
|
|
1482
|
+
* already-granted rule.
|
|
1483
|
+
*/
|
|
1484
|
+
changeWorkspaceLevel: (level: "VIEW" | "SHARE") => Promise<void>;
|
|
1477
1485
|
}
|
|
1478
1486
|
|
|
1479
1487
|
/**
|
|
@@ -1486,6 +1494,19 @@ export declare interface IObjectShareControllerState {
|
|
|
1486
1494
|
summary: IObjectAccessSummary | undefined;
|
|
1487
1495
|
grantees: IObjectShareGrantee[];
|
|
1488
1496
|
generalAccess: GeneralAccessValue;
|
|
1497
|
+
/**
|
|
1498
|
+
* Permission level of the all-workspace-members rule when general access is
|
|
1499
|
+
* WORKSPACE. Drives the workspace row's permission dropdown. Meaningless (and
|
|
1500
|
+
* not shown) while general access is RESTRICTED. Capped at VIEW/SHARE — EDIT is
|
|
1501
|
+
* never offered for the workspace rule.
|
|
1502
|
+
*/
|
|
1503
|
+
workspaceLevel: "VIEW" | "SHARE";
|
|
1504
|
+
/**
|
|
1505
|
+
* Whether a workspace-level re-grade is in flight. Consumers disable the
|
|
1506
|
+
* workspace permission dropdown while true so rapid toggles can't issue
|
|
1507
|
+
* overlapping writes that settle out of order.
|
|
1508
|
+
*/
|
|
1509
|
+
workspaceLevelSaving: boolean;
|
|
1489
1510
|
/**
|
|
1490
1511
|
* Labels (display forms) of the shared attribute, in source order. Empty for
|
|
1491
1512
|
* objects without labels (e.g. facts) — the labels picker is then hidden.
|
|
@@ -1918,12 +1939,15 @@ export declare function NotificationsPanel(props: INotificationsPanelProps): JSX
|
|
|
1918
1939
|
export declare function ObjectShareDialog({ target, objectTitle, isOpen, onClose, onSaved, labels, labelsLoading, labelsError, controller }: IObjectShareDialogProps): JSX.Element;
|
|
1919
1940
|
|
|
1920
1941
|
/**
|
|
1921
|
-
* Permission level surfaced in the share dialog
|
|
1922
|
-
*
|
|
1942
|
+
* Permission level surfaced in the share dialog — the model's granular access
|
|
1943
|
+
* permission (VIEW / EDIT / SHARE). `EDIT` is display-only: the dialog reflects
|
|
1944
|
+
* an EDIT grant as a read-only "Can edit" row but cannot assign or change it
|
|
1945
|
+
* (granting EDIT is not part of the share UI), so only VIEW and SHARE are
|
|
1946
|
+
* selectable in the permission menu.
|
|
1923
1947
|
*
|
|
1924
1948
|
* @internal
|
|
1925
1949
|
*/
|
|
1926
|
-
export declare type ObjectSharePermissionLevel =
|
|
1950
|
+
export declare type ObjectSharePermissionLevel = AccessGranularPermission;
|
|
1927
1951
|
|
|
1928
1952
|
/**
|
|
1929
1953
|
* @alpha
|
|
@@ -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;AAS1E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,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;AAS1E,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,2CAmKzB"}
|
|
@@ -5,6 +5,10 @@ import { useIntl } from "react-intl";
|
|
|
5
5
|
import { UiAddGranteeDialog, UiConfirmDialog, UiGranteeRowControls, UiObjectShareDialog, } from "@gooddata/sdk-ui-kit";
|
|
6
6
|
import { objectShareMessages } from "./messages.js";
|
|
7
7
|
import { useObjectShareController } from "./useObjectShareController.js";
|
|
8
|
+
// The workspace row has no labels menu (see workspaceControls below), so its
|
|
9
|
+
// required onLabelsChange never fires; a stable no-op satisfies the prop type
|
|
10
|
+
// without churning the controls' identity each render.
|
|
11
|
+
const noop = () => { };
|
|
8
12
|
/**
|
|
9
13
|
* Connected share dialog. Renders the main share modal, the add-grantee
|
|
10
14
|
* sub-dialog and the general-access confirm dialog, all driven by one
|
|
@@ -82,10 +86,27 @@ export function ObjectShareDialog({ target, objectTitle, isOpen, onClose, onSave
|
|
|
82
86
|
void actions.removeGrantee(g.id);
|
|
83
87
|
} })),
|
|
84
88
|
})), onAddClick: actions.openAddGrantee, isAddDisabled: isAddDisabled, generalAccess: state.generalAccess, onGeneralAccessChange: actions.requestGeneralAccessChange,
|
|
89
|
+
// Permission dropdown on the "All workspace members" row — only while
|
|
90
|
+
// workspace access is on (the rule must exist to be re-graded). No
|
|
91
|
+
// labels (⋯) menu and no remove: per the Figma spec the workspace row
|
|
92
|
+
// carries the permission picker alone; the workspace rule's label
|
|
93
|
+
// scope is managed implicitly with the RESTRICTED↔WORKSPACE toggle.
|
|
94
|
+
workspaceControls: state.generalAccess === "WORKSPACE" ? (_jsx(UiGranteeRowControls, { labels: [], selectedLabelIds: [], permissionLevel: state.workspaceLevel,
|
|
95
|
+
// Also disabled while its own re-grade is committing, so
|
|
96
|
+
// rapid toggles can't queue overlapping writes.
|
|
97
|
+
isDisabled: !isMutable || state.workspaceLevelSaving, onLabelsChange: noop, onPermissionChange: (level) => {
|
|
98
|
+
void actions.changeWorkspaceLevel(level);
|
|
99
|
+
} })) : undefined,
|
|
100
|
+
// Keep the "All workspace members" description in sync with the picked
|
|
101
|
+
// level ("can view" vs "can view and share").
|
|
102
|
+
workspaceLevel: state.workspaceLevel,
|
|
85
103
|
// Gated on the same condition as Add: changing general access also
|
|
86
104
|
// mirrors the label scope, so it must wait for resolution and stay
|
|
87
|
-
// disabled when label metadata failed to load.
|
|
88
|
-
|
|
105
|
+
// disabled when label metadata failed to load. Also gated while a
|
|
106
|
+
// workspace-level re-grade is in flight: switching to Restricted then
|
|
107
|
+
// would issue an allWorkspaceUsers:none write that could race the
|
|
108
|
+
// pending re-grade and leave the backend on the wrong rule.
|
|
109
|
+
isGeneralAccessDisabled: !isMutable || state.workspaceLevelSaving,
|
|
89
110
|
// On a failed load the empty grantee list + RESTRICTED radio are a
|
|
90
111
|
// placeholder, not the real policy — show why instead of letting it
|
|
91
112
|
// read as "no one has access".
|
|
@@ -5,7 +5,7 @@ import type { IObjectShareLabel } from "./types.js";
|
|
|
5
5
|
export declare function granteeId(kind: "user" | "group", ref: ObjRef): string;
|
|
6
6
|
/** Case-insensitive match of an assignee against the picker query (name, or email for users). */
|
|
7
7
|
export declare function assigneeMatchesQuery(assignee: IAvailableAccessGrantee, query: string): boolean;
|
|
8
|
-
/** The row's directly-granted level
|
|
8
|
+
/** The row's directly-granted level — the strongest permission present, defaulting to VIEW. */
|
|
9
9
|
export declare function directLevel(permissions: readonly string[]): ObjectSharePermissionLevel;
|
|
10
10
|
/**
|
|
11
11
|
* The effective permission to surface as a warning, or undefined when the direct
|
|
@@ -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,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AACxG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,6FAA6F;AAC7F,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAErE;AAED,iGAAiG;AACjG,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,uBAAuB,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAM9F;
|
|
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,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AACxG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,6FAA6F;AAC7F,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAErE;AAED,iGAAiG;AACjG,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,uBAAuB,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAM9F;AAKD,iGAA+F;AAC/F,wBAAgB,WAAW,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,GAAG,0BAA0B,CAEtF;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACpC,MAAM,EAAE,0BAA0B,EAClC,oBAAoB,EAAE,SAAS,MAAM,EAAE,GACxC,0BAA0B,GAAG,SAAS,CAGxC;AAYD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,iBAAiB,GAAG,SAAS,GAAG,mBAAmB,EAAE,CA0BjG;AAUD,wBAAgB,iBAAiB,CAC7B,IAAI,EAAE,MAAM,GAAG,OAAO,EACtB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,0BAA0B,GAAG,MAAM,GAC3C,sBAAsB,CAKxB;AAED;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GACzB;IAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAC9C;IAAE,iBAAiB,EAAE,IAAI,CAAA;CAAE,CAAC;AAElC,wBAAgB,kBAAkB,CAC9B,SAAS,EAAE,mBAAmB,EAC9B,KAAK,EAAE,0BAA0B,GAAG,MAAM,0BAO7C;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAC/B,SAAS,EAAE,mBAAmB,EAC9B,eAAe,EAAE,WAAW,CAAC,MAAM,CAAC,EACpC,eAAe,EAAE,WAAW,CAAC,MAAM,CAAC,EACpC,MAAM,EAAE,iBAAiB,EAAE,GAC5B,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,sBAAsB,CAAA;CAAE,CAAC,CAWzD;AAED,sFAAsF;AACtF,eAAO,MAAM,SAAS,EAAE,iBAAiB,EAAO,CAAC;AAEjD,0DAA0D;AAC1D,eAAO,MAAM,SAAS,EAAE,WAAW,CAAC,MAAM,CAAqB,CAAC;AAEhE;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,iBAAiB,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAU/E"}
|
|
@@ -12,9 +12,11 @@ export function assigneeMatchesQuery(assignee, query) {
|
|
|
12
12
|
const email = assignee.type === "user" ? (assignee.email ?? "") : "";
|
|
13
13
|
return `${assignee.name} ${email}`.toLowerCase().includes(query);
|
|
14
14
|
}
|
|
15
|
-
/**
|
|
15
|
+
/** Permission levels from strongest to weakest; the row shows the strongest it holds. */
|
|
16
|
+
const LEVELS_STRONGEST_FIRST = ["EDIT", "SHARE", "VIEW"];
|
|
17
|
+
/** The row's directly-granted level — the strongest permission present, defaulting to VIEW. */
|
|
16
18
|
export function directLevel(permissions) {
|
|
17
|
-
return permissions.includes(
|
|
19
|
+
return LEVELS_STRONGEST_FIRST.find((level) => permissions.includes(level)) ?? "VIEW";
|
|
18
20
|
}
|
|
19
21
|
/**
|
|
20
22
|
* The effective permission to surface as a warning, or undefined when the direct
|
|
@@ -23,7 +25,17 @@ export function directLevel(permissions) {
|
|
|
23
25
|
* than what the row's permission control shows.
|
|
24
26
|
*/
|
|
25
27
|
export function effectivePermissionAbove(direct, inheritedPermissions) {
|
|
26
|
-
|
|
28
|
+
// A direct EDIT already outranks any inherited SHARE — never warn in that case.
|
|
29
|
+
return direct === "VIEW" && inheritedPermissions.includes("SHARE") ? "SHARE" : undefined;
|
|
30
|
+
}
|
|
31
|
+
/** The permission-derived fields shared by every grantee row, regardless of kind. */
|
|
32
|
+
function granteeAccess(permissions, inheritedPermissions) {
|
|
33
|
+
const level = directLevel(permissions);
|
|
34
|
+
return {
|
|
35
|
+
level,
|
|
36
|
+
effectivePermission: effectivePermissionAbove(level, inheritedPermissions),
|
|
37
|
+
inheritsShare: inheritedPermissions.includes("SHARE"),
|
|
38
|
+
};
|
|
27
39
|
}
|
|
28
40
|
export function granteesFromAccessList(list) {
|
|
29
41
|
if (!list) {
|
|
@@ -32,42 +44,43 @@ export function granteesFromAccessList(list) {
|
|
|
32
44
|
const out = [];
|
|
33
45
|
for (const g of list.grants) {
|
|
34
46
|
if (isGranularUserAccess(g)) {
|
|
35
|
-
const level = directLevel(g.permissions);
|
|
36
47
|
out.push({
|
|
37
48
|
id: granteeId("user", g.user.ref),
|
|
38
49
|
kind: "user",
|
|
39
50
|
granteeRef: g.user.ref,
|
|
40
51
|
name: g.user.fullName ?? g.user.email ?? g.user.login,
|
|
41
52
|
email: g.user.email,
|
|
42
|
-
|
|
43
|
-
effectivePermission: effectivePermissionAbove(level, g.inheritedPermissions),
|
|
44
|
-
inheritsShare: g.inheritedPermissions.includes("SHARE"),
|
|
53
|
+
...granteeAccess(g.permissions, g.inheritedPermissions),
|
|
45
54
|
});
|
|
46
55
|
}
|
|
47
56
|
else if (isGranularUserGroupAccess(g)) {
|
|
48
|
-
const level = directLevel(g.permissions);
|
|
49
57
|
out.push({
|
|
50
58
|
id: granteeId("group", g.userGroup.ref),
|
|
51
59
|
kind: "group",
|
|
52
60
|
granteeRef: g.userGroup.ref,
|
|
53
61
|
name: g.userGroup.name ?? objRefToString(g.userGroup.ref),
|
|
54
|
-
|
|
55
|
-
effectivePermission: effectivePermissionAbove(level, g.inheritedPermissions),
|
|
56
|
-
inheritsShare: g.inheritedPermissions.includes("SHARE"),
|
|
62
|
+
...granteeAccess(g.permissions, g.inheritedPermissions),
|
|
57
63
|
});
|
|
58
64
|
}
|
|
59
65
|
}
|
|
60
66
|
return out;
|
|
61
67
|
}
|
|
68
|
+
/** The permission set a grant carries at each level; a higher level always implies VIEW. */
|
|
69
|
+
const PERMISSIONS_BY_LEVEL = {
|
|
70
|
+
none: [],
|
|
71
|
+
VIEW: ["VIEW"],
|
|
72
|
+
SHARE: ["SHARE", "VIEW"],
|
|
73
|
+
EDIT: ["EDIT", "VIEW"],
|
|
74
|
+
};
|
|
62
75
|
export function toGranularGrantee(kind, granteeRef, level) {
|
|
63
|
-
const permissions =
|
|
76
|
+
const permissions = PERMISSIONS_BY_LEVEL[level];
|
|
64
77
|
return kind === "user"
|
|
65
78
|
? { type: "granularUser", granteeRef, permissions, inheritedPermissions: [] }
|
|
66
79
|
: { type: "granularGroup", granteeRef, permissions, inheritedPermissions: [] };
|
|
67
80
|
}
|
|
68
81
|
export function granularGranteeFor(principal, level) {
|
|
69
82
|
if ("allWorkspaceUsers" in principal) {
|
|
70
|
-
const permissions = level
|
|
83
|
+
const permissions = PERMISSIONS_BY_LEVEL[level];
|
|
71
84
|
return { type: "allWorkspaceUsers", permissions, inheritedPermissions: [] };
|
|
72
85
|
}
|
|
73
86
|
return toGranularGrantee(principal.kind, principal.granteeRef, level);
|
|
@@ -1,13 +1,16 @@
|
|
|
1
|
-
import type { ObjRef } from "@gooddata/sdk-model";
|
|
1
|
+
import type { AccessGranularPermission, ObjRef } from "@gooddata/sdk-model";
|
|
2
2
|
import type { GeneralAccessValue, IUiGranteeAsyncOptions, IUiPickedGrantee } from "@gooddata/sdk-ui-kit";
|
|
3
3
|
import type { IObjectAccessSummary, IObjectShareLabel } from "./types.js";
|
|
4
4
|
/**
|
|
5
|
-
* Permission level surfaced in the share dialog
|
|
6
|
-
*
|
|
5
|
+
* Permission level surfaced in the share dialog — the model's granular access
|
|
6
|
+
* permission (VIEW / EDIT / SHARE). `EDIT` is display-only: the dialog reflects
|
|
7
|
+
* an EDIT grant as a read-only "Can edit" row but cannot assign or change it
|
|
8
|
+
* (granting EDIT is not part of the share UI), so only VIEW and SHARE are
|
|
9
|
+
* selectable in the permission menu.
|
|
7
10
|
*
|
|
8
11
|
* @internal
|
|
9
12
|
*/
|
|
10
|
-
export type ObjectSharePermissionLevel =
|
|
13
|
+
export type ObjectSharePermissionLevel = AccessGranularPermission;
|
|
11
14
|
/**
|
|
12
15
|
* Dialog row derived from a backend grant.
|
|
13
16
|
*
|
|
@@ -51,6 +54,19 @@ export interface IObjectShareControllerState {
|
|
|
51
54
|
summary: IObjectAccessSummary | undefined;
|
|
52
55
|
grantees: IObjectShareGrantee[];
|
|
53
56
|
generalAccess: GeneralAccessValue;
|
|
57
|
+
/**
|
|
58
|
+
* Permission level of the all-workspace-members rule when general access is
|
|
59
|
+
* WORKSPACE. Drives the workspace row's permission dropdown. Meaningless (and
|
|
60
|
+
* not shown) while general access is RESTRICTED. Capped at VIEW/SHARE — EDIT is
|
|
61
|
+
* never offered for the workspace rule.
|
|
62
|
+
*/
|
|
63
|
+
workspaceLevel: "VIEW" | "SHARE";
|
|
64
|
+
/**
|
|
65
|
+
* Whether a workspace-level re-grade is in flight. Consumers disable the
|
|
66
|
+
* workspace permission dropdown while true so rapid toggles can't issue
|
|
67
|
+
* overlapping writes that settle out of order.
|
|
68
|
+
*/
|
|
69
|
+
workspaceLevelSaving: boolean;
|
|
54
70
|
/**
|
|
55
71
|
* Labels (display forms) of the shared attribute, in source order. Empty for
|
|
56
72
|
* objects without labels (e.g. facts) — the labels picker is then hidden.
|
|
@@ -105,6 +121,13 @@ export interface IObjectShareControllerActions {
|
|
|
105
121
|
cancelGeneralAccessChange: () => void;
|
|
106
122
|
/** Commit the pending general access change. Auto-saves. */
|
|
107
123
|
confirmGeneralAccessChange: () => Promise<void>;
|
|
124
|
+
/**
|
|
125
|
+
* Change the all-workspace-members rule's permission level (VIEW/SHARE).
|
|
126
|
+
* Only meaningful while general access is WORKSPACE. Auto-saves, no confirm —
|
|
127
|
+
* unlike the high-impact RESTRICTED↔WORKSPACE toggle, this only re-grades an
|
|
128
|
+
* already-granted rule.
|
|
129
|
+
*/
|
|
130
|
+
changeWorkspaceLevel: (level: "VIEW" | "SHARE") => Promise<void>;
|
|
108
131
|
}
|
|
109
132
|
/**
|
|
110
133
|
* @internal
|