refactor: 💡 update pinned IDs logic for actions table (#3269)
* chore: 🤖 Add initial page layout for code editor + sidebar (#3180) * chore: 🤖 Add initial page layout for code editor + sidebar * test: 💍 add missing a11y ignores for exisitng color issue ✅ Closes: https://hashicorp.atlassian.net/browse/ICU-18460 * Replace `Rose::CodeEditor` with `Hds::CodeEditor` (#2679) * chore: 🤖 replace Rose::CodeEditor with Hds::CodeEditor - Remove CodeEditor 5 dependency * chore: 🤖 Replace CodeMirror5 dep remove CodeMirror5 and replace existing editors with HDS::CodeEditor * chore: 🤖 deleting old codeeditor styles * feat: 🎸 changing code editor changing code editor ✅ Closes: 0 * removed unused export * pr cleanup * updating tests for new code editor * responding to PR feedback * added whitespace * fixing linting violations * chore: 🤖 self-review PR self-review PR in the course of switching to new HDS code editor * fix: 🐛 fix linting bug * fix: 🐛 unneeded dependency remove jslint dependency as this is handled in the new code editor from HDS * fix: 🐛 Fixing import bug Fix import bug caused by importing scss modules that no longer exist * Fix and refactor code editor acceptance test * Fix and refactor code editor acceptance test * chore: 🤖 remove codemirror dependency * refactor: 💡 fix merge conflict issues * test: 💍 update e2e test selectors * test: 💍 fix target spec click event * refactor: 💡 clean up test selectors for code editor * refactor: 💡 clean up storage bucket test selectors * chore: 🤖 remove code mirror modifiers --------- Co-authored-by: calcaide <ccorvo@hashicorp.com> Co-authored-by: cameronperera <cameron.perera@hashicorp.com> * feat: 🎸 Create string formats component (#3191) * feat: 🎸 Create string formats component * Add missing copyright headers * fix: 🐛 change to readonly ✅ Closes: https://hashicorp.atlassian.net/browse/ICU-18458 * feat: 🎸 add grant schema to mirage (#3196) * feat: 🎸 add grant schema to mirage * refactor: 💡 update grant schema mirage data * refactor: 💡 fix route name in mirage * feat: 🎸 add export options flyout (#3198) * feat: 🎸 add export options flyout * fix: 🐛 update id to be ids * test: 💍 add a11y ignores * test: 💍 fix tests for grant string format ✅ Closes: https://hashicorp.atlassian.net/browse/ICU-18524 * feat: 🎸 Add autocompletion to code editor (#3207) * feat: 🎸 Add CSP nonce to code editors (#3230) Co-authored-by: Zhihe Li <zhihe.li@hashicorp.com> * feat: 🎸 Add linting to code editor (#3211) * feat: 🎸 Add linting to code editor * refactor: 💡 add missing case for wildcard type & ids field * refactor: 💡 simplify condition + add more tests * refactor: 💡 cleanup ids validation logic and add more lint erro * refactor: 💡 simplify logic and add actions linting cases * feat: 🎸 Add autocompletion to code editor (#3207) * refactor: 💡 apply PR feedback * refactor: 💡 PR feedback * refactor: 💡 add noop action * fix: 🐛 noop should not be suggested with resource type format ✅ Closes: https://hashicorp.atlassian.net/browse/ICU-18462 --------- Co-authored-by: Zhihe Li <zhihe.li@hashicorp.com> * Icu 18506 load resource IDs for autocomplete (#3247) * feat: 🎸 Add id auto completion * style: 💄 Fix code editor styling for dark mode * feat: 🎸 Add optimization for caching sqlite data ✅ Closes: https://hashicorp.atlassian.net/browse/ICU-18506 * refactor: 💡 Update string formats to use select + add options (#3256) * refactor: 💡 Update string formats to use select + add options * refactor: 💡 PR feedback * test: 💍 fix tests ✅ Closes: https://hashicorp.atlassian.net/browse/ICU-18983 * refactor: 💡 role grants tab to use code block (#3261) * refactor: 💡 grants tab to use code block * refactor: 💡 update getter comment * test: 💍 fix tests * refactor: 💡 remove language arg for codeblock ✅ Closes: https://hashicorp.atlassian.net/browse/ICU-18757 * Grant actions card (#3246) * chore: 🤖 Add initial page layout for code editor + sidebar (#3180) * chore: 🤖 Add initial page layout for code editor + sidebar * test: 💍 add missing a11y ignores for exisitng color issue ✅ Closes: https://hashicorp.atlassian.net/browse/ICU-18460 * Replace `Rose::CodeEditor` with `Hds::CodeEditor` (#2679) * chore: 🤖 replace Rose::CodeEditor with Hds::CodeEditor - Remove CodeEditor 5 dependency * chore: 🤖 Replace CodeMirror5 dep remove CodeMirror5 and replace existing editors with HDS::CodeEditor * chore: 🤖 deleting old codeeditor styles * feat: 🎸 changing code editor changing code editor ✅ Closes: 0 * removed unused export * pr cleanup * updating tests for new code editor * responding to PR feedback * added whitespace * fixing linting violations * chore: 🤖 self-review PR self-review PR in the course of switching to new HDS code editor * fix: 🐛 fix linting bug * fix: 🐛 unneeded dependency remove jslint dependency as this is handled in the new code editor from HDS * fix: 🐛 Fixing import bug Fix import bug caused by importing scss modules that no longer exist * Fix and refactor code editor acceptance test * Fix and refactor code editor acceptance test * chore: 🤖 remove codemirror dependency * refactor: 💡 fix merge conflict issues * test: 💍 update e2e test selectors * test: 💍 fix target spec click event * refactor: 💡 clean up test selectors for code editor * refactor: 💡 clean up storage bucket test selectors * chore: 🤖 remove code mirror modifiers --------- Co-authored-by: calcaide <ccorvo@hashicorp.com> Co-authored-by: cameronperera <cameron.perera@hashicorp.com> * feat: 🎸 Create string formats component (#3191) * feat: 🎸 Create string formats component * Add missing copyright headers * fix: 🐛 change to readonly ✅ Closes: https://hashicorp.atlassian.net/browse/ICU-18458 * feat: 🎸 add grant schema to mirage (#3196) * feat: 🎸 add grant schema to mirage * refactor: 💡 update grant schema mirage data * refactor: 💡 fix route name in mirage * feat: 🎸 add export options flyout (#3198) * feat: 🎸 add export options flyout * fix: 🐛 update id to be ids * test: 💍 add a11y ignores * test: 💍 fix tests for grant string format ✅ Closes: https://hashicorp.atlassian.net/browse/ICU-18524 * feat: 🎸 Add autocompletion to code editor (#3207) * feat: 🎸 create grant actions component * feat: 🎸 add description to actions * feat: 🎸 update default logic to not show all actions * feat: 🎸 show invalid id and type message * test: 💍 create const for test selectors * feat: 🎸 trigger action suggestion when cursor moves * refactor: 💡 add createGrantLineHelpers func * refactor: 💡 small refactors * feat: 🎸 Add CSP nonce to code editors (#3230) Co-authored-by: Zhihe Li <zhihe.li@hashicorp.com> * refactor: 💡 small refactor * test: 💍 add more tests * refactor: 💡 fix merge conflicts issues * refactor: 💡 updates from PR feedback * refactor: 💡 updates for completions and linting * test: 💍 fix test issue with translations * test: 💍 fix test issue that was already fixed once * refactor: 💡 address PR feedback --------- Co-authored-by: Lisbet Alvarez <107949262+lisbet-alvarez@users.noreply.github.com> Co-authored-by: Zack Moore <zack.moore@hashicorp.com> Co-authored-by: calcaide <ccorvo@hashicorp.com> Co-authored-by: Zhihe Li <zhihe.li@hashicorp.com> Co-authored-by: Bharath Gajjala <120367134+bgajjala8@users.noreply.github.com> * refactor: 💡 update pinned IDs logic for actions table * refactor: 💡 use if/else in place of complex ternary * refactor: 💡 user intl.formatList --------- Co-authored-by: Lisbet Alvarez <107949262+lisbet-alvarez@users.noreply.github.com> Co-authored-by: Zack Moore <zack.moore@hashicorp.com> Co-authored-by: calcaide <ccorvo@hashicorp.com> Co-authored-by: Zhihe Li <zhihe.li@hashicorp.com> Co-authored-by: Bharath Gajjala <120367134+bgajjala8@users.noreply.github.com>
This commit is contained in:
1 parent
0479c3c8fc
commit
e0b80b1176
3 files changed
+32
-15
No files matched your search
@@ -758,13 +758,13 @@ role:
|
||||
id-actions: ID Actions
|
||||
create: Create a new {resourceType}
|
||||
list: List all {resourceType} resources
|
||||
read: Read a {resourceType}
|
||||
update: Update a {resourceType}
|
||||
delete: Delete a {resourceType}
|
||||
read: Read {article} {resourceType}
|
||||
update: Update {article} {resourceType}
|
||||
delete: Delete {article} {resourceType}
|
||||
read:self: Read the {resourceType} associated with the current user
|
||||
delete:self: Delete a {resourceType} associated with the current user
|
||||
cancel: Cancel a {resourceType}
|
||||
cancel:self: Cancel a {resourceType} associated with the current user
|
||||
delete:self: Delete {article} {resourceType} associated with the current user
|
||||
cancel: Cancel {article} {resourceType}
|
||||
cancel:self: Cancel {article} {resourceType} associated with the current user
|
||||
generic:
|
||||
create: Creates resources
|
||||
list: Lists resources
|
||||
@@ -773,6 +773,8 @@ role:
|
||||
delete: Deletes resources
|
||||
read:self: Read the resource associated with the current user
|
||||
delete:self: Delete a resource associated with the current user
|
||||
cancel: Cancels resources
|
||||
cancel:self: Cancel a resource associated with the current user
|
||||
add-members: Add members to a group
|
||||
set-members: Set the full list of members on a group
|
||||
remove-members: Remove members from a group
|
||||
|
||||
@@ -53,7 +53,14 @@ export default class GrantActionsIndex extends Component {
|
||||
const genericKey = `resources.role.edit-grants.actions.generic.${action}`;
|
||||
|
||||
if (detectedResourceType && this.intl.exists(specificKey)) {
|
||||
return this.intl.t(specificKey, { resourceType: detectedResourceType });
|
||||
const resourceType = Array.isArray(detectedResourceType)
|
||||
? this.intl.formatList(detectedResourceType, { type: 'disjunction' })
|
||||
: detectedResourceType;
|
||||
// Determine the appropriate article ("a" or "an") to use based on the
|
||||
// detected resource type. "user" is a special case that uses "a" instead
|
||||
// of "an" because it's pronounced "you" so I don't include it below.
|
||||
const article = /^[aeio]/i.test(resourceType) ? 'an' : 'a';
|
||||
return this.intl.t(specificKey, { resourceType, article });
|
||||
}
|
||||
|
||||
if (this.intl.exists(genericKey)) {
|
||||
|
||||
@@ -290,21 +290,29 @@ export const analyzeGrantString = (grantsSchema, grantString = '') => {
|
||||
schema.childResourceTypesByParentType[compatibleIdsResourceType] ?? []
|
||||
).includes(typeValue);
|
||||
|
||||
const detectedResourceType =
|
||||
typeValue && typeValue !== '*'
|
||||
? typeValue
|
||||
: idsValue
|
||||
? getCompatibleResourceTypeForIds(schema, idsValue)
|
||||
: null;
|
||||
let detectedResourceType = null;
|
||||
if (typeValue && typeValue !== '*') {
|
||||
// Explicit type specified, use it directly
|
||||
detectedResourceType = typeValue;
|
||||
} else if (compatibleIdsResourceType && typeValue === '*') {
|
||||
// Pinned IDs with wildcard type, return the child resource types
|
||||
const childTypes =
|
||||
schema.childResourceTypesByParentType[compatibleIdsResourceType] ?? [];
|
||||
detectedResourceType = childTypes.length ? childTypes : null;
|
||||
} else if (typeValue !== '*' && idsValue) {
|
||||
// No type field, infer resource type from the ID prefix
|
||||
detectedResourceType = getCompatibleResourceTypeForIds(schema, idsValue);
|
||||
}
|
||||
|
||||
const isBothWildcard = idsValue === '*' && typeValue === '*';
|
||||
const hasWildcardIds = idsValue === '*';
|
||||
const crudlOnly = hasWildcardIds && !hasExplicitType;
|
||||
|
||||
const actions =
|
||||
idsValue || typeValue
|
||||
? getActionOptions(schema, typeValue, idsValue)
|
||||
.filter(
|
||||
(action) =>
|
||||
action !== '*' && (!isBothWildcard || CRUDL_ACTIONS.has(action)),
|
||||
action !== '*' && (!crudlOnly || CRUDL_ACTIONS.has(action)),
|
||||
)
|
||||
.sort((left, right) => left.localeCompare(right))
|
||||
: [];
|
||||
|
||||
Reference in new issue
Block a user