@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.
Files changed (87) hide show
  1. package/NOTICE +641 -841
  2. package/esm/internal/translations/de-DE.localization-bundle.d.ts +42 -0
  3. package/esm/internal/translations/de-DE.localization-bundle.d.ts.map +1 -1
  4. package/esm/internal/translations/de-DE.localization-bundle.js +43 -1
  5. package/esm/internal/translations/en-AU.localization-bundle.d.ts +42 -0
  6. package/esm/internal/translations/en-AU.localization-bundle.d.ts.map +1 -1
  7. package/esm/internal/translations/en-AU.localization-bundle.js +44 -2
  8. package/esm/internal/translations/en-GB.localization-bundle.d.ts +42 -0
  9. package/esm/internal/translations/en-GB.localization-bundle.d.ts.map +1 -1
  10. package/esm/internal/translations/en-GB.localization-bundle.js +44 -2
  11. package/esm/internal/translations/es-419.localization-bundle.d.ts +42 -0
  12. package/esm/internal/translations/es-419.localization-bundle.d.ts.map +1 -1
  13. package/esm/internal/translations/es-419.localization-bundle.js +44 -2
  14. package/esm/internal/translations/es-ES.localization-bundle.d.ts +42 -0
  15. package/esm/internal/translations/es-ES.localization-bundle.d.ts.map +1 -1
  16. package/esm/internal/translations/es-ES.localization-bundle.js +44 -2
  17. package/esm/internal/translations/fi-FI.localization-bundle.d.ts +42 -0
  18. package/esm/internal/translations/fi-FI.localization-bundle.d.ts.map +1 -1
  19. package/esm/internal/translations/fi-FI.localization-bundle.js +43 -1
  20. package/esm/internal/translations/fr-CA.localization-bundle.d.ts +42 -0
  21. package/esm/internal/translations/fr-CA.localization-bundle.d.ts.map +1 -1
  22. package/esm/internal/translations/fr-CA.localization-bundle.js +43 -1
  23. package/esm/internal/translations/fr-FR.localization-bundle.d.ts +42 -0
  24. package/esm/internal/translations/fr-FR.localization-bundle.d.ts.map +1 -1
  25. package/esm/internal/translations/fr-FR.localization-bundle.js +43 -1
  26. package/esm/internal/translations/id-ID.localization-bundle.d.ts +42 -0
  27. package/esm/internal/translations/id-ID.localization-bundle.d.ts.map +1 -1
  28. package/esm/internal/translations/id-ID.localization-bundle.js +43 -1
  29. package/esm/internal/translations/it-IT.localization-bundle.d.ts +42 -0
  30. package/esm/internal/translations/it-IT.localization-bundle.d.ts.map +1 -1
  31. package/esm/internal/translations/it-IT.localization-bundle.js +43 -1
  32. package/esm/internal/translations/ja-JP.localization-bundle.d.ts +42 -0
  33. package/esm/internal/translations/ja-JP.localization-bundle.d.ts.map +1 -1
  34. package/esm/internal/translations/ja-JP.localization-bundle.js +43 -1
  35. package/esm/internal/translations/ko-KR.localization-bundle.d.ts +42 -0
  36. package/esm/internal/translations/ko-KR.localization-bundle.d.ts.map +1 -1
  37. package/esm/internal/translations/ko-KR.localization-bundle.js +43 -1
  38. package/esm/internal/translations/nl-NL.localization-bundle.d.ts +42 -0
  39. package/esm/internal/translations/nl-NL.localization-bundle.d.ts.map +1 -1
  40. package/esm/internal/translations/nl-NL.localization-bundle.js +43 -1
  41. package/esm/internal/translations/pl-PL.localization-bundle.d.ts +42 -0
  42. package/esm/internal/translations/pl-PL.localization-bundle.d.ts.map +1 -1
  43. package/esm/internal/translations/pl-PL.localization-bundle.js +43 -1
  44. package/esm/internal/translations/pt-BR.localization-bundle.d.ts +42 -0
  45. package/esm/internal/translations/pt-BR.localization-bundle.d.ts.map +1 -1
  46. package/esm/internal/translations/pt-BR.localization-bundle.js +43 -1
  47. package/esm/internal/translations/pt-PT.localization-bundle.d.ts +42 -0
  48. package/esm/internal/translations/pt-PT.localization-bundle.d.ts.map +1 -1
  49. package/esm/internal/translations/pt-PT.localization-bundle.js +43 -1
  50. package/esm/internal/translations/ru-RU.localization-bundle.d.ts +42 -0
  51. package/esm/internal/translations/ru-RU.localization-bundle.d.ts.map +1 -1
  52. package/esm/internal/translations/ru-RU.localization-bundle.js +43 -1
  53. package/esm/internal/translations/sl-SI.localization-bundle.d.ts +42 -0
  54. package/esm/internal/translations/sl-SI.localization-bundle.d.ts.map +1 -1
  55. package/esm/internal/translations/sl-SI.localization-bundle.js +43 -1
  56. package/esm/internal/translations/th-TH.localization-bundle.d.ts +42 -0
  57. package/esm/internal/translations/th-TH.localization-bundle.d.ts.map +1 -1
  58. package/esm/internal/translations/th-TH.localization-bundle.js +43 -1
  59. package/esm/internal/translations/tr-TR.localization-bundle.d.ts +42 -0
  60. package/esm/internal/translations/tr-TR.localization-bundle.d.ts.map +1 -1
  61. package/esm/internal/translations/tr-TR.localization-bundle.js +43 -1
  62. package/esm/internal/translations/uk-UA.localization-bundle.d.ts +42 -0
  63. package/esm/internal/translations/uk-UA.localization-bundle.d.ts.map +1 -1
  64. package/esm/internal/translations/uk-UA.localization-bundle.js +43 -1
  65. package/esm/internal/translations/vi-VN.localization-bundle.d.ts +42 -0
  66. package/esm/internal/translations/vi-VN.localization-bundle.d.ts.map +1 -1
  67. package/esm/internal/translations/vi-VN.localization-bundle.js +43 -1
  68. package/esm/internal/translations/zh-HK.localization-bundle.d.ts +42 -0
  69. package/esm/internal/translations/zh-HK.localization-bundle.d.ts.map +1 -1
  70. package/esm/internal/translations/zh-HK.localization-bundle.js +44 -2
  71. package/esm/internal/translations/zh-Hans.localization-bundle.d.ts +42 -0
  72. package/esm/internal/translations/zh-Hans.localization-bundle.d.ts.map +1 -1
  73. package/esm/internal/translations/zh-Hans.localization-bundle.js +43 -1
  74. package/esm/internal/translations/zh-Hant.localization-bundle.d.ts +42 -0
  75. package/esm/internal/translations/zh-Hant.localization-bundle.d.ts.map +1 -1
  76. package/esm/internal/translations/zh-Hant.localization-bundle.js +45 -3
  77. package/esm/sdk-ui-ext.d.ts +27 -3
  78. package/esm/share/ObjectShareDialog.d.ts.map +1 -1
  79. package/esm/share/ObjectShareDialog.js +23 -2
  80. package/esm/share/objectShareController.helpers.d.ts +1 -1
  81. package/esm/share/objectShareController.helpers.d.ts.map +1 -1
  82. package/esm/share/objectShareController.helpers.js +26 -13
  83. package/esm/share/objectShareController.types.d.ts +27 -4
  84. package/esm/share/objectShareController.types.d.ts.map +1 -1
  85. package/esm/share/useObjectShareController.d.ts.map +1 -1
  86. package/esm/share/useObjectShareController.js +50 -0
  87. 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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8lBjB,CAAC"}
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8lBnB,CAAC"}
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8lBnB,CAAC"}
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
  };
@@ -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. `EDIT` is intentionally
1922
- * not represented the underlying permission menu caps at VIEW/SHARE.
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 = "VIEW" | "SHARE";
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;AAGpD;;;;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,2CAwIzB"}
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
- isGeneralAccessDisabled: !isMutable,
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. SHARE outranks VIEW. */
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;AAED,6DAA6D;AAC7D,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,CAExC;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,iBAAiB,GAAG,SAAS,GAAG,mBAAmB,EAAE,CAgCjG;AAED,wBAAgB,iBAAiB,CAC7B,IAAI,EAAE,MAAM,GAAG,OAAO,EACtB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,0BAA0B,GAAG,MAAM,GAC3C,sBAAsB,CAMxB;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"}
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
- /** The row's directly-granted level. SHARE outranks VIEW. */
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("SHARE") ? "SHARE" : "VIEW";
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
- return direct !== "SHARE" && inheritedPermissions.includes("SHARE") ? "SHARE" : undefined;
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
- level,
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
- level,
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 = level === "none" ? [] : level === "SHARE" ? ["SHARE", "VIEW"] : ["VIEW"];
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 === "none" ? [] : ["VIEW"];
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. `EDIT` is intentionally
6
- * not represented the underlying permission menu caps at VIEW/SHARE.
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 = "VIEW" | "SHARE";
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