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 1f4b94e41..3e5043d3f 100644
--- a/app/src/View/Helper/VueHelper.php
+++ b/app/src/View/Helper/VueHelper.php
@@ -69,17 +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/form/infoDiv/autocomplete.php b/app/templates/element/form/infoDiv/autocomplete.php
index 31b74143a..a9a41736c 100644
--- a/app/templates/element/form/infoDiv/autocomplete.php
+++ b/app/templates/element/form/infoDiv/autocomplete.php
@@ -41,7 +41,4 @@
formParams: $formParams ?? []
);
?>
-
- info
- = __d('operation','autocomplete.people.desc',['2']) ?>
-
+
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: = json_encode($formParams ?? []) ?>,
},
- error: ''
+ error: '',
+ core: {
+ webroot: '= $this->request->getAttribute('webroot') ?>'
+ }
}
},
components: {
diff --git a/app/webroot/css/co-base.css b/app/webroot/css/co-base.css
index da5956d45..4763a35f1 100644
--- a/app/webroot/css/co-base.css
+++ b/app/webroot/css/co-base.css
@@ -1821,6 +1821,16 @@ ul.form-list .cm-time-picker-vals li {
text-decoration: underline;
background-color: var(--cmg-color-bg-002);
}
+.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;
grid-template-columns: 1fr 1fr;
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 c91d2023f..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,75 +286,86 @@ export default {
}
},
template: `
-
-
-
-
-
-
-
+
+ info
+ {{ this.txt['operation.autocomplete.people.field.desc'] }}
+
+
`
}
\ No newline at end of file