diff --git a/app/resources/locales/en_US/menu.po b/app/resources/locales/en_US/menu.po index 4d4dc64f3..5d8995a1f 100644 --- a/app/resources/locales/en_US/menu.po +++ b/app/resources/locales/en_US/menu.po @@ -213,6 +213,9 @@ msgstr "Toggle menu collapse button" msgid "options" msgstr "Options" +msgid "person.canvas" +msgstr "Person Canvas" + msgid "registries" msgstr "Available {0} Registries" diff --git a/app/resources/locales/en_US/operation.po b/app/resources/locales/en_US/operation.po index 41d24fec4..17babc823 100644 --- a/app/resources/locales/en_US/operation.po +++ b/app/resources/locales/en_US/operation.po @@ -57,6 +57,9 @@ msgstr "show more" msgid "autocomplete.people.desc" msgstr "Begin typing to find a person (use at least {0} characters from a name, email address, or identifier)" +msgid "autocomplete.people.field.desc" +msgstr "Begin typing to find a person (use characters from a name, email address, or identifier)" + msgid "autocomplete.people.label" msgstr "Search for a person" diff --git a/app/src/View/Helper/VueHelper.php b/app/src/View/Helper/VueHelper.php index c3b73f4c7..3e5043d3f 100644 --- a/app/src/View/Helper/VueHelper.php +++ b/app/src/View/Helper/VueHelper.php @@ -69,18 +69,25 @@ class VueHelper extends Helper { 'report.for', 'value.copied', ], + 'menu' => [ + 'person.canvas' + ], 'operation' => [ 'add', 'add.member', 'add.owner', 'autocomplete.pager.show.more', 'autocomplete.people.desc', + 'autocomplete.people.field.desc', 'autocomplete.people.label', 'autocomplete.people.placeholder', 'close', 'copy', 'copy.value', + 'edit', 'primary', + 'remove', + 'view', 'visit.link', ], 'result' => [ diff --git a/app/templates/element/peopleAutocomplete.php b/app/templates/element/peopleAutocomplete.php index af361178d..8ef1971ed 100644 --- a/app/templates/element/peopleAutocomplete.php +++ b/app/templates/element/peopleAutocomplete.php @@ -90,7 +90,10 @@ }, formParams: , }, - error: '' + error: '', + core: { + webroot: 'request->getAttribute('webroot') ?>' + } } }, components: { diff --git a/app/webroot/css/co-base.css b/app/webroot/css/co-base.css index 44a9d5782..4763a35f1 100644 --- a/app/webroot/css/co-base.css +++ b/app/webroot/css/co-base.css @@ -1821,9 +1821,15 @@ ul.form-list .cm-time-picker-vals li { text-decoration: underline; background-color: var(--cmg-color-bg-002); } -.cm-ac-change-btn { - padding: 0.25em 0.5em !important; - margin-left: 1em; +.cm-ac-input-group > div { + flex-grow: 1; +} +.cm-ac-link-to-person { + gap: 0.25em; + color: var(--cmg-color-link); +} +#main .cm-ac-link-to-person:hover { + text-decoration: none; } .item-with-type { display: grid; diff --git a/app/webroot/js/comanage/components/autocomplete/cm-autocomplete-people.js b/app/webroot/js/comanage/components/autocomplete/cm-autocomplete-people.js index c1b7f0452..bdc5f90fd 100644 --- a/app/webroot/js/comanage/components/autocomplete/cm-autocomplete-people.js +++ b/app/webroot/js/comanage/components/autocomplete/cm-autocomplete-people.js @@ -44,6 +44,7 @@ export default { people: [], rawData: [], person: '', + personUrl: '', identifierType: {}, emailType: {}, loading: false, @@ -193,7 +194,7 @@ export default { }, setPerson() { if(['default', 'field'].includes(this.options.type)) { - this.options.inputProps.dataPersonid = this.person.value + this.options.inputProps.dataPersonid = this.person.value; } else { // The picker is stand-alone, and should render the configured page in a modal on @item-select const urlForModal = this.options.actionUrl + '&person_id=' + this.person.value; @@ -248,7 +249,8 @@ export default { if(this.options.inputValue != undefined && this.options.inputValue != '' && this.options.inputProps.name.endsWith('person_id')) { - this.person = `${this.options.formParams?.fullName} (ID: ${this.options.inputValue})` + this.person = `${this.options.formParams?.fullName} (ID: ${this.options.inputValue})`; + this.personUrl = `${this.core.webroot}people/edit/${this.options.inputValue}`; } }, computed: { @@ -284,85 +286,85 @@ export default { } }, template: ` -
- {{ this.options.inputProps.name }} - -
-
- - - + + + person_check + {{ this.txt['menu.person.canvas'] }} + +
info - {{ this.txt['operation.autocomplete.people.desc'] }} + {{ this.txt['operation.autocomplete.people.field.desc'] }}
`