Evergreen-commits
April 2025
- 1 participants
- 186 discussions

[GIT] Evergreen ILS branch main updated. 6c5adbd019f031576a4f584ea0ef6a26a6870375
by Git User 04 Apr '25
by Git User 04 Apr '25
04 Apr '25
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Evergreen ILS".
The branch, main has been updated
via 6c5adbd019f031576a4f584ea0ef6a26a6870375 (commit)
from 38b073a3464b5cdee430dfb85d4eb80092c77ff2 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 6c5adbd019f031576a4f584ea0ef6a26a6870375
Author: spmorrison <101879901+spmorrison(a)users.noreply.github.com>
Date: Mon Mar 31 13:52:54 2025 -0400
Docs Resolves part of LP#2063846: Screenshots for Closed Date Editor updates
Related to: https://github.com/evergreen-library-system/Evergreen/pull/295
Signed-off-by: Gina Monti <gmonti(a)biblio.org>
diff --git a/docs/modules/local_admin/assets/images/emergency_closing_handler/delete closing.png b/docs/modules/local_admin/assets/images/emergency_closing_handler/delete closing.png
new file mode 100644
index 0000000000..c75983665d
Binary files /dev/null and b/docs/modules/local_admin/assets/images/emergency_closing_handler/delete closing.png differ
diff --git a/docs/modules/local_admin/assets/images/emergency_closing_handler/example closing.png b/docs/modules/local_admin/assets/images/emergency_closing_handler/example closing.png
new file mode 100644
index 0000000000..c6f1f9385a
Binary files /dev/null and b/docs/modules/local_admin/assets/images/emergency_closing_handler/example closing.png differ
diff --git a/docs/modules/local_admin/assets/images/emergency_closing_handler/possibly emergency closure_section.png b/docs/modules/local_admin/assets/images/emergency_closing_handler/possibly emergency closure_section.png
new file mode 100644
index 0000000000..fb14e00961
Binary files /dev/null and b/docs/modules/local_admin/assets/images/emergency_closing_handler/possibly emergency closure_section.png differ
diff --git a/docs/modules/local_admin/assets/images/emergency_closing_handler/possibly emergency closure_toast.png b/docs/modules/local_admin/assets/images/emergency_closing_handler/possibly emergency closure_toast.png
new file mode 100644
index 0000000000..4d598da279
Binary files /dev/null and b/docs/modules/local_admin/assets/images/emergency_closing_handler/possibly emergency closure_toast.png differ
diff --git a/docs/modules/local_admin/assets/images/emergency_closing_handler/upcoming closure listing.png b/docs/modules/local_admin/assets/images/emergency_closing_handler/upcoming closure listing.png
new file mode 100644
index 0000000000..cc7852ce85
Binary files /dev/null and b/docs/modules/local_admin/assets/images/emergency_closing_handler/upcoming closure listing.png differ
-----------------------------------------------------------------------
Summary of changes:
.../emergency_closing_handler/delete closing.png | Bin 0 -> 25476 bytes
.../emergency_closing_handler/example closing.png | Bin 0 -> 102446 bytes
.../possibly emergency closure_section.png | Bin 0 -> 99042 bytes
.../possibly emergency closure_toast.png | Bin 0 -> 11760 bytes
.../upcoming closure listing.png | Bin 0 -> 33499 bytes
5 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 docs/modules/local_admin/assets/images/emergency_closing_handler/delete closing.png
create mode 100644 docs/modules/local_admin/assets/images/emergency_closing_handler/example closing.png
create mode 100644 docs/modules/local_admin/assets/images/emergency_closing_handler/possibly emergency closure_section.png
create mode 100644 docs/modules/local_admin/assets/images/emergency_closing_handler/possibly emergency closure_toast.png
create mode 100644 docs/modules/local_admin/assets/images/emergency_closing_handler/upcoming closure listing.png
hooks/post-receive
--
Evergreen ILS
1
0

[GIT] Evergreen ILS branch rel_3_15 updated. 0e25f6ea66eacba8cdfd8425e77dc89ce8b73c1f
by Git User 04 Apr '25
by Git User 04 Apr '25
04 Apr '25
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Evergreen ILS".
The branch, rel_3_15 has been updated
via 0e25f6ea66eacba8cdfd8425e77dc89ce8b73c1f (commit)
from 4157a8054843dd1660c023499c4239c5449f2407 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 0e25f6ea66eacba8cdfd8425e77dc89ce8b73c1f
Author: blake <blake(a)mobiusconsortium.org>
Date: Fri Apr 4 08:56:24 2025 -0500
Fixing version for 3.15 branch
Docs won't compile when two branches claim to be the same version
Signed-off-by: blake <blake(a)mobiusconsortium.org>
diff --git a/docs/antora.yml b/docs/antora.yml
index a050c6d9a5..e82696a676 100644
--- a/docs/antora.yml
+++ b/docs/antora.yml
@@ -1,6 +1,6 @@
name: docs
title: Evergreen docs
-version: 'latest'
+version: '3.15'
nav:
- modules/ROOT/nav.adoc
- modules/installation/nav.adoc
diff --git a/docs/modules - Shortcut.lnk b/docs/modules - Shortcut.lnk
deleted file mode 100644
index 4339d9a4c7..0000000000
Binary files a/docs/modules - Shortcut.lnk and /dev/null differ
-----------------------------------------------------------------------
Summary of changes:
docs/antora.yml | 2 +-
docs/modules - Shortcut.lnk | Bin 1274 -> 0 bytes
2 files changed, 1 insertion(+), 1 deletion(-)
delete mode 100644 docs/modules - Shortcut.lnk
hooks/post-receive
--
Evergreen ILS
1
0

[GIT] Evergreen ILS branch main updated. 38b073a3464b5cdee430dfb85d4eb80092c77ff2
by Git User 03 Apr '25
by Git User 03 Apr '25
03 Apr '25
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Evergreen ILS".
The branch, main has been updated
via 38b073a3464b5cdee430dfb85d4eb80092c77ff2 (commit)
from 6c2ff5aa4f23388700e7130e6b472d5387313b79 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 38b073a3464b5cdee430dfb85d4eb80092c77ff2
Author: Jane Sandberg <js7389(a)princeton.edu>
Date: Thu Apr 3 15:34:42 2025 -0700
LP2074112 follow-up: fix two unit tests
Previously, the StoreService's setLocalItem method was mocked in these
tests. However, the production code now also uses getLocalItem, so
mocking that method gets two failing tests passing.
Signed-off-by: Jane Sandberg <js7389(a)princeton.edu>
diff --git a/Open-ILS/src/eg2/src/app/staff/cat/volcopy/copy-attrs.component.spec.ts b/Open-ILS/src/eg2/src/app/staff/cat/volcopy/copy-attrs.component.spec.ts
index 5b4212046a..930faa5a11 100644
--- a/Open-ILS/src/eg2/src/app/staff/cat/volcopy/copy-attrs.component.spec.ts
+++ b/Open-ILS/src/eg2/src/app/staff/cat/volcopy/copy-attrs.component.spec.ts
@@ -18,7 +18,7 @@ describe('CopyAttrsComponent', () => {
const orgMock = jasmine.createSpyObj<OrgService>(['get']);
const authServiceMock = jasmine.createSpyObj<AuthService>(['user']);
const formatServiceMock = jasmine.createSpyObj<FormatService>(['transform']);
- const storeServiceMock = jasmine.createSpyObj<StoreService>(['setLocalItem']);
+ const storeServiceMock = jasmine.createSpyObj<StoreService>(['setLocalItem', 'getLocalItem']);
const toastServiceMock = jasmine.createSpyObj<ToastService>(['success']);
const volCopyServiceMock = jasmine.createSpyObj<VolCopyService>(['copyStatIsMagic', 'saveTemplates']);
-----------------------------------------------------------------------
Summary of changes:
Open-ILS/src/eg2/src/app/staff/cat/volcopy/copy-attrs.component.spec.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
hooks/post-receive
--
Evergreen ILS
1
0

[GIT] Evergreen ILS branch rel_3_14 updated. d4626f56d8e1f0161b006ad150c1bf03f840acc8
by Git User 03 Apr '25
by Git User 03 Apr '25
03 Apr '25
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Evergreen ILS".
The branch, rel_3_14 has been updated
via d4626f56d8e1f0161b006ad150c1bf03f840acc8 (commit)
from 4130ba116b9f0f5c85890d59c994e8d29149dbe6 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit d4626f56d8e1f0161b006ad150c1bf03f840acc8
Author: Stephanie Leary <stephanie.leary(a)equinoxoli.org>
Date: Tue Mar 18 15:24:11 2025 +0000
LP2103567 modal form label and status cleanup
Adds labels to several forms contained in modal dialogs. Also adds
role="status" to obvious status messages to turn them into ARIA live
regions.
Release-note: Adds form labels and ARIA status roles to forms in dialogs
Signed-off-by: Stephanie Leary <stephanie.leary(a)equinoxoli.org>
Signed-off-by: Terran McCanna <tmccanna(a)georgialibraries.org>
diff --git a/Open-ILS/src/eg2/src/app/staff/acq/invoice/disencumber-charge-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/acq/invoice/disencumber-charge-dialog.component.html
index 79f540bb28..8e11bf067d 100644
--- a/Open-ILS/src/eg2/src/app/staff/acq/invoice/disencumber-charge-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/acq/invoice/disencumber-charge-dialog.component.html
@@ -7,39 +7,53 @@
</div>
<div class="modal-body">
<div class="d-flex">
- <div class="flex-2" i18n>Charge:</div>
+ <div class="flex-2">
+ <label for="inv_item_type" class="form-label" i18n>Charge:</label>
+ </div>
<div class="flex-3">
<eg-combobox idlClass="aiit" [selectedId]="charge.inv_item_type()"
- [readOnly]="true"></eg-combobox>
+ [readOnly]="true" domId="inv_item_type"></eg-combobox>
</div>
</div>
<div class="d-flex">
- <div class="flex-2" i18n>Amount:</div>
- <div class="flex-3">{{charge.cost_billed()}}</div>
+ <div class="flex-2">
+ <label for="cost_billed" class="form-label" i18n>Amount:</label>
+ </div>
+ <div class="flex-3">
+ <output id="cost_billed">{{charge.cost_billed()}}</output>
+ </div>
</div>
<div class="d-flex">
- <div class="flex-2" i18n>Original Fund:</div>
+ <div class="flex-2">
+ <label for="charge_fund" class="form-label" i18n>Original Fund:</label>
+ </div>
<div class="flex-3">
<eg-combobox idlClass="acqf" [selectedId]="charge.fund()"
- [readOnly]="true"></eg-combobox>
+ [readOnly]="true" domId="charge_fund"></eg-combobox>
</div>
</div>
<div class="d-flex">
- <div class="flex-2" i18n>Fund Debited:</div>
+ <div class="flex-2">
+ <label for="debit_fund" class="form-label" i18n>Fund Debited:</label>
+ </div>
<div class="flex-3">
<eg-combobox idlClass="acqf" [selectedId]="charge.fund_debit().fund()"
- [readOnly]="true"></eg-combobox>
+ [readOnly]="true" domId="debit_fund"></eg-combobox>
</div>
</div>
<div class="d-flex">
- <div class="flex-2" i18n>Amount Encumbered:</div>
- <div class="flex-3">{{charge.fund_debit().amount()}}</div>
+ <div class="flex-2">
+ <label for="amount_encumbered" class="form-label" i18n>Amount Encumbered:</label>
+ </div>
+ <div class="flex-3">
+ <output id="amount_encumbered">{{charge.fund_debit().amount()}}</output>
+ </div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-success"
(click)="close(true)" i18n>Disencumber</button>
- <button type="button" class="btn btn-warning"
+ <button type="button" class="btn btn-normal"
(click)="close()" i18n>Cancel</button>
</div>
</form>
diff --git a/Open-ILS/src/eg2/src/app/staff/acq/lineitem/add-extra-items-for-order-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/acq/lineitem/add-extra-items-for-order-dialog.component.html
index 7bd66705ef..86b889616a 100644
--- a/Open-ILS/src/eg2/src/app/staff/acq/lineitem/add-extra-items-for-order-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/acq/lineitem/add-extra-items-for-order-dialog.component.html
@@ -1,4 +1,4 @@
-<ng-template #dialogContent>
+<ng-template #dialogContent>
<form class="form-validated">
<div class="modal-header">
<h3 class="modal-title" i18n>Add Extra Items To Order</h3>
@@ -7,7 +7,8 @@
</div>
<div class="modal-body">
<h4 i18n>You are attempting to invoice {{extra_count}} more copy or copies than originally ordered. To add these items to the original purchase order, select a fund and choose 'Add New Items' below. If you do this, it will happen immediately, whether you save changes to the invoice or not.</h4>
- <eg-combobox idlClass="acqf" name="fund"
+ <label for="fund" class="form-label" i18n>Fund:</label>
+ <eg-combobox idlClass="acqf" name="fund" domId="fund"
i18n-placeholder placeholder="Fund..."
[asyncSupportsEmptyTermClick]="true"
[required]="true"
@@ -16,24 +17,24 @@
[(ngModel)]="fund" (ngModelChange)="fundSelected($event)"></eg-combobox>
</div>
<div class="row" style="margin-left: 1.33em">
- <div class="col"><label i18n>Allocation Total</label></div>
- <div class="col">{{fundSummary?.allocation_total | currency}}</div>
+ <label class="col-form-label" for="allocation_total" i18n>Allocation Total</label>
+ <div class="col"><output id="allocation_total">{{fundSummary?.allocation_total | currency}}</output></div>
</div>
<div class="row" style="margin-left: 1.33em">
- <div class="col"><label i18n>Combined Balance</label></div>
- <div class="col">{{fundSummary?.combined_balance | currency}}</div>
+ <label class="col-form-label" for="combined_balance" i18n>Combined Balance</label>
+ <div class="col"><output id="combined_balance">{{fundSummary?.combined_balance | currency}}</output></div>
</div>
<div class="row" style="margin-left: 1.33em">
- <div class="col"><label i18n>Encumbrance Total</label></div>
- <div class="col">{{fundSummary?.encumbrance_total | currency}}</div>
+ <label class="col-form-label" for="encumbrance_total" i18n>Encumbrance Total</label>
+ <div class="col"><output id="encumbrance_total">{{fundSummary?.encumbrance_total | currency}}</output></div>
</div>
<div class="row" style="margin-left: 1.33em">
- <div class="col"><label i18n>Debit Total</label></div>
- <div class="col">{{fundSummary?.debit_total | currency}}</div>
+ <label class="col-form-label" for="debit_total" i18n>Debit Total</label>
+ <div class="col"><output id="debit_total">{{fundSummary?.debit_total | currency}}</output></div>
</div>
<div class="row" style="margin-left: 1.33em">
- <div class="col"><label i18n>Spent Total</label></div>
- <div class="col">{{fundSummary?.spent_total | currency}}</div>
+ <label class="col-form-label" for="spent_total" i18n>Spent Total</label>
+ <div class="col"><output id="spent_total">{{fundSummary?.spent_total | currency}}</output></div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-success" [disabled]="!fund"
diff --git a/Open-ILS/src/eg2/src/app/staff/acq/lineitem/add-to-po-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/acq/lineitem/add-to-po-dialog.component.html
index 45924f9f46..3876b34924 100644
--- a/Open-ILS/src/eg2/src/app/staff/acq/lineitem/add-to-po-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/acq/lineitem/add-to-po-dialog.component.html
@@ -13,8 +13,9 @@
</h4>
<h4 i18n>Please select a PO and click "Add to Purchase Order" to add the line items,
or "Exit Dialog" to exit without adding the line items to a PO.</h4>
+ <label class="form-label" i18n>PO:</label>
<eg-combobox domId="acq-add-to-po-dialog" name="acq-add-to-po-dialog"
- [asyncSupportsEmptyTermClick]="true"
+ [asyncSupportsEmptyTermClick]="true" domId="po_to_add"
idlClass="acqpo" [idlQueryAnd]="{state: ['new', 'pending']}"
idlIncludeLibraryInLabel="ordering_agency"
[(ngModel)]="po"></eg-combobox>
diff --git a/Open-ILS/src/eg2/src/app/staff/acq/lineitem/claim-policy-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/acq/lineitem/claim-policy-dialog.component.html
index 54484da0fc..5934f957e4 100644
--- a/Open-ILS/src/eg2/src/app/staff/acq/lineitem/claim-policy-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/acq/lineitem/claim-policy-dialog.component.html
@@ -11,7 +11,7 @@
{{id}}<span *ngIf="!isLast">,</span>
</span>
</h4>
- <h4 i18n>Select a claim policy:</h4>
+ <label for="acq-claim-policy-dialog" i18n>Select a claim policy:</label>
<eg-combobox domId="acq-claim-policy-dialog" name="acq-claim-policy-dialog"
[asyncSupportsEmptyTermClick]="true"
idlClass="acqclp" [(ngModel)]="claimPolicy"></eg-combobox>
diff --git a/Open-ILS/src/eg2/src/app/staff/acq/po/disencumber-charge-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/acq/po/disencumber-charge-dialog.component.html
index c52ad3bb4d..b2d71a37c5 100644
--- a/Open-ILS/src/eg2/src/app/staff/acq/po/disencumber-charge-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/acq/po/disencumber-charge-dialog.component.html
@@ -7,33 +7,35 @@
</div>
<div class="modal-body">
<div class="d-flex">
- <div class="flex-2" i18n>Charge:</div>
+ <div class="flex-2">
+ <label class="form-label" for="inv_item_type" i18n>Charge:</label>
+ </div>
<div class="flex-3">
- <eg-combobox idlClass="aiit" [selectedId]="charge.inv_item_type()"
+ <eg-combobox domId="inv_item_type" idlClass="aiit" [selectedId]="charge.inv_item_type()"
[readOnly]="true"></eg-combobox>
</div>
</div>
<div class="d-flex">
- <div class="flex-2" i18n>Amount:</div>
- <div class="flex-3">{{charge.estimated_cost()}}</div>
+ <div class="flex-2"><label for="estimated_cost" class="form-label" i18n>Amount:</label></div>
+ <div class="flex-3"><output id="estimated_cost">{{charge.estimated_cost()}}</output></div>
</div>
<div class="d-flex">
- <div class="flex-2" i18n>Original Fund:</div>
+ <div class="flex-2"><label for="charge_fund" class="form-label" i18n>Original Fund:</label></div>
<div class="flex-3">
- <eg-combobox idlClass="acqf" [selectedId]="charge.fund()"
+ <eg-combobox domId="charge_fund" idlClass="acqf" [selectedId]="charge.fund()"
[readOnly]="true"></eg-combobox>
</div>
</div>
<div class="d-flex">
- <div class="flex-2" i18n>Fund Debited:</div>
+ <div class="flex-2"><label for="fund_debit" class="form-label" i18n>Fund Debited:</label></div>
<div class="flex-3">
- <eg-combobox idlClass="acqf" [selectedId]="charge.fund_debit().fund()"
+ <eg-combobox id="fund_debit" idlClass="acqf" [selectedId]="charge.fund_debit().fund()"
[readOnly]="true"></eg-combobox>
</div>
</div>
<div class="d-flex">
- <div class="flex-2" i18n>Amount Encumbered:</div>
- <div class="flex-3">{{charge.fund_debit().amount()}}</div>
+ <div class="flex-2"><label for="fund_debit_amount" class="form-label" i18n>Amount Encumbered:</label></div>
+ <div class="flex-3"><output id="fund_debit_amount">{{charge.fund_debit().amount()}}</output></div>
</div>
</div>
<div class="modal-footer">
diff --git a/Open-ILS/src/eg2/src/app/staff/acq/search/picklist-clone-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/acq/search/picklist-clone-dialog.component.html
index c51f68377f..1721a319b3 100644
--- a/Open-ILS/src/eg2/src/app/staff/acq/search/picklist-clone-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/acq/search/picklist-clone-dialog.component.html
@@ -6,7 +6,7 @@
i18n-aria-label aria-label="Close dialog" (click)="close()"></button>
</div>
<div class="modal-body">
- <h4 i18n>Selection list name:</h4>
+ <label for="create-picklist-name" class="form-label" i18n>Selection list name:</label>
<input type="text" id="create-picklist-name" required
[ngModelOptions]="{standalone: true}"
class="form-control" [(ngModel)]="selectionListName">
diff --git a/Open-ILS/src/eg2/src/app/staff/acq/search/picklist-create-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/acq/search/picklist-create-dialog.component.html
index 1b5bc0bdd3..d4256ce232 100644
--- a/Open-ILS/src/eg2/src/app/staff/acq/search/picklist-create-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/acq/search/picklist-create-dialog.component.html
@@ -6,7 +6,7 @@
i18n-aria-label aria-label="Close dialog" (click)="close()"></button>
</div>
<div class="modal-body">
- <h4 i18n>Selection list name:</h4>
+ <label class="form-label" for="create-picklist-name" i18n>Selection list name:</label>
<input type="text" id="create-picklist-name" required
[ngModelOptions]="{standalone: true}" required
class="form-control col-lg-7" [(ngModel)]="selectionListName">
diff --git a/Open-ILS/src/eg2/src/app/staff/acq/search/picklist-merge-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/acq/search/picklist-merge-dialog.component.html
index 46574d8184..892c613452 100644
--- a/Open-ILS/src/eg2/src/app/staff/acq/search/picklist-merge-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/acq/search/picklist-merge-dialog.component.html
@@ -6,8 +6,8 @@
i18n-aria-label aria-label="Close dialog" (click)="close()"></button>
</div>
<div class="modal-body">
- <h4 i18n>Lead Selection List:</h4>
- <select [(ngModel)]="leadList" [ngModelOptions]="{standalone: true}" required>
+ <label class="form-label" for="leadList" i18n>Lead Selection List:</label>
+ <select id="leadList" [(ngModel)]="leadList" [ngModelOptions]="{standalone: true}" required>
<option *ngFor="let list of selectedLists"
value="{{list.id()}}">{{list.name()}}</option>
</select>
diff --git a/Open-ILS/src/eg2/src/app/staff/admin/local/search-filter/query-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/admin/local/search-filter/query-dialog.component.html
index 9d938a118b..787059de97 100644
--- a/Open-ILS/src/eg2/src/app/staff/admin/local/search-filter/query-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/admin/local/search-filter/query-dialog.component.html
@@ -8,27 +8,27 @@
</div>
<div class="modal-body">
<div class="row">
- <div class="col-lg-3 fw-bold" i18n>Query Label</div>
+ <label class="col-lg-3 col-form-label" for="query_label" i18n>Query Label</label>
<div class="col-lg-9">
- <input type="text" class="form-control" name="query_label"
+ <input type="text" class="form-control" id="query_label" name="query_label"
placeholder="Query Label"
i18n-placeholder required
[(ngModel)]="newQueryLabel"/>
</div>
</div>
<div class="row mt-3">
- <div class="col-lg-3 fw-bold" i18n>Query Text</div>
+ <label class="col-lg-3 col-form-label" for="query_text" i18n>Query Text</label>
<div class="col-lg-9">
- <input type="text" class="form-control" name="query_text"
+ <input type="text" class="form-control" id="query_text" name="query_text"
placeholder="Query Text"
i18n-placeholder required
[(ngModel)]="newQueryText"/>
</div>
</div>
<div class="row mt-3">
- <div class="col-lg-3 fw-bold" i18n>Position</div>
+ <label class="col-lg-3 col-form-label" for="pos" i18n>Position</label>
<div class="col-lg-9">
- <input type="number" class="form-control" name="pos"
+ <input type="number" class="form-control" id="pos" name="pos"
placeholder="Position"
i18n-placeholder required
[(ngModel)]="newQueryPosition"/>
diff --git a/Open-ILS/src/eg2/src/app/staff/admin/server/perm-group-map-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/admin/server/perm-group-map-dialog.component.html
index edbe25c7ab..399077c50a 100644
--- a/Open-ILS/src/eg2/src/app/staff/admin/server/perm-group-map-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/admin/server/perm-group-map-dialog.component.html
@@ -11,9 +11,7 @@
<div class="col-lg-7">{{permGroup.name()}}</div>
</div>
<div class="row mt-1 pt-1">
- <div class="col-lg-5">
- <label for="select-perms" i18n>New Permission</label>
- </div>
+ <label class="col-lg-5 col-form-label" for="select-perms" i18n>New Permission</label>
<div class="col-lg-7">
<input type="text" id="select-perms" #selectPerms
[ngbTypeahead]="permEntries"
@@ -32,22 +30,14 @@
</div>
</div>
<div class="row row-cols-5 mt-1 pt-1">
- <div class="col">
- <label [attr.for]="'depth-'+map.controls.id.value"
- i18n>Depth
- </label>
- </div>
+ <label class="col-form-label" for="depth-{{map.controls.id.value}}" i18n>Depth</label>
<div class="col">
<select formControlName="depth" class="p-1"
id="depth-{{map.controls.id.value}}">
<option *ngFor="let d of orgDepths" value="{{d}}">{{d}}</option>
</select>
</div>
- <div class="col">
- <label [attr.for]="'grantable-'+map.controls.id.value"
- i18n>Grantable
- </label>
- </div>
+ <label class="col-form-lalel" for="grantable-{{map.controls.id.value}}" i18n>Grantable</label>
<div class="col">
<input type="checkbox" formControlName="grantable"
id="grantable-{{map.controls.id.value}}">
diff --git a/Open-ILS/src/eg2/src/app/staff/cat/authority/merge-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/cat/authority/merge-dialog.component.html
index 849504049c..7e132cd4dd 100644
--- a/Open-ILS/src/eg2/src/app/staff/cat/authority/merge-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/cat/authority/merge-dialog.component.html
@@ -20,12 +20,11 @@
<div class="col-lg-2" i18n>Lead Record</div>
</div>
<div class="row" *ngFor="let data of authData">
- <div class="col-lg-2">
- <input type="radio" name="leadRecord"
+ <div class="col-lg-12 form-check">
+ <input type="radio" class="form-check-input" name="leadRecord" id="leadRecord-{{data.authority.id()}}"
[value]="data.authority.id()" [(ngModel)]="leadRecord"/>
+ <label class="form-check-label" for="leadRecord-{{data.authority.id()}}">#{{data.authority.id()}} {{data.heading}}</label>
</div>
- <div class="col-lg-1">#{{data.authority.id()}}</div>
- <div class="col-lg-6">{{data.heading}}</div>
</div>
</div>
<div class="modal-footer">
diff --git a/Open-ILS/src/eg2/src/app/staff/catalog/record/add-to-carousel-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/catalog/record/add-to-carousel-dialog.component.html
index fb86db026e..a9bbe64103 100644
--- a/Open-ILS/src/eg2/src/app/staff/catalog/record/add-to-carousel-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/catalog/record/add-to-carousel-dialog.component.html
@@ -15,9 +15,9 @@
<p> <a routerLink="/staff/admin/local/container/carousel" i18n>Would you like to add one?</a></p>
</div>
<div class="row" *ngIf="carousels.length">
- <div class="col-lg-3 fw-bold" i18n>Carousel</div>
+ <label class="col-lg-3 col-form-label" for="selectedCarousel" i18n>Carousel</label>
<div class="col-lg-5">
- <eg-combobox [entries]="formatCarouselEntries()" [formControl]="selectedCarousel">
+ <eg-combobox [entries]="formatCarouselEntries()" [formControl]="selectedCarousel" domId="selectedCarousel">
</eg-combobox>
</div>
</div>
diff --git a/Open-ILS/src/eg2/src/app/staff/catalog/record/upload-jacket-image-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/catalog/record/upload-jacket-image-dialog.component.html
index 4465cc7ca7..86f2569d00 100644
--- a/Open-ILS/src/eg2/src/app/staff/catalog/record/upload-jacket-image-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/catalog/record/upload-jacket-image-dialog.component.html
@@ -7,21 +7,16 @@
i18n-aria-label aria-label="Close dialog" (click)="clearErrors(); close(false)"></button>
</div>
<div class="modal-body">
- <!--<form method="POST" enctype="multipart/form-data" action="/jacket-upload">
- <input type="file" name="jacket_upload">
- <input type="text" name="ses">
- <input type="text" name="bib_record">
- <input type="submit">
- </form>-->
- <input type="file" class="file-input" (change)="onFileSelected($event)" #fileUpload>
- <div class="progress" *ngIf="uploading">
+ <label for="file" class="form-label" i18n>Choose file:</label>
+ <input type="file" id="file" class="file-input" (change)="onFileSelected($event)" #fileUpload>
+ <div class="progress" role="status" *ngIf="uploading">
<div class="progress-bar progress-bar-striped active w-100"
role="progressbar" aria-valuenow="100"
aria-valuemin="0" aria-valuemax="100">
<span i18n>Uploading..</span>
</div>
</div>
- <div style="margin-top: 20px" *ngIf="errorUploading">
+ <div class="alert alert-danger mt-3" role="status" *ngIf="errorUploading">
<span *ngIf="errorAuthentication" class="alert alert-danger" i18n>Not authenticated. Expired login?</span>
<span *ngIf="errorAuthorization" class="alert alert-danger" i18n>Not authorized. Check your permissions.</span>
<span *ngIf="errorNotFound" class="alert alert-danger" i18n>Not found. Bib record deleted?</span>
diff --git a/Open-ILS/src/eg2/src/app/staff/catalog/search-templates.component.html b/Open-ILS/src/eg2/src/app/staff/catalog/search-templates.component.html
index 348941fa14..56ab76b348 100644
--- a/Open-ILS/src/eg2/src/app/staff/catalog/search-templates.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/catalog/search-templates.component.html
@@ -80,10 +80,9 @@
</div>
<div class="modal-body">
<div class="row">
- <div class="col-lg-4" i18n id="templateNameLabel">Template Name:</div>
+ <label class="col-lg-4 col-form-label" i18n for="templateName">Template Name:</label>
<div class="col-lg-6">
- <input class="form-control" [(ngModel)]="templateName"
- aria-labelledby="templateNameLabel"/>
+ <input class="form-control" [(ngModel)]="templateName" id="templateName" />
</div>
</div>
</div>
diff --git a/Open-ILS/src/eg2/src/app/staff/circ/patron/barcodes.component.html b/Open-ILS/src/eg2/src/app/staff/circ/patron/barcodes.component.html
index b08faedaba..db79398ebc 100644
--- a/Open-ILS/src/eg2/src/app/staff/circ/patron/barcodes.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/circ/patron/barcodes.component.html
@@ -14,17 +14,18 @@
<div class="col-lg-4 fw-bold" i18n>Primary</div>
</div>
<div class="row mt-2 pt-2" *ngFor="let card of patron.cards()">
- <div class="col-lg-4" i18n>
+ <label class="col-lg-4 col-form-label" for="card-{{card.id()}}" i18n>
{{card.barcode()}}
- </div>
+ </label>
<div class="col-lg-4" i18n>
<input type="checkbox" [disabled]="!myPerms.UPDATE_PATRON_ACTIVE_CARD"
- (ngModelChange)="activeChange(card, $event)"
+ (ngModelChange)="activeChange(card, $event)" id="card-{{card.id()}}"
class="form-check-input ms-0" [ngModel]="card.active() === 't'">
</div>
<div class="col-lg-4" i18n>
<input type="radio" name="primary-card" [value]="card.id()"
[disabled]="!myPerms.UPDATE_PATRON_PRIMARY_CARD"
+ aria-label="Use {{card.barcode()}} as primary card" i18n-aria-label
class="form-check-input ms-0" [(ngModel)]="primaryCard">
</div>
</div>
diff --git a/Open-ILS/src/eg2/src/app/staff/circ/patron/hold-notify-update.component.html b/Open-ILS/src/eg2/src/app/staff/circ/patron/hold-notify-update.component.html
index ab5eca017d..e9a0eda74c 100644
--- a/Open-ILS/src/eg2/src/app/staff/circ/patron/hold-notify-update.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/circ/patron/hold-notify-update.component.html
@@ -8,7 +8,7 @@
<div class="row mt-2" *ngFor="let mod of mods">
<div class="col-lg-12">
- <div [ngSwitch]="mod.field" class="mt-2 mb-2">
+ <div [ngSwitch]="mod.field" role="status" class="mt-2 mb-2">
<span *ngSwitchCase="'phone_notify'">
<span class="me-2">You have set Notify by Phone to</span>
<eg-bool [value]="mod.newValue"></eg-bool>
diff --git a/Open-ILS/src/eg2/src/app/staff/circ/patron/secondary-groups.component.html b/Open-ILS/src/eg2/src/app/staff/circ/patron/secondary-groups.component.html
index f46ce2dc4b..ada5194b4f 100644
--- a/Open-ILS/src/eg2/src/app/staff/circ/patron/secondary-groups.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/circ/patron/secondary-groups.component.html
@@ -21,9 +21,9 @@
<div class="row mt-2" *ngFor="let grp of secondaryGroups">
<div class="col-lg-6">{{grp.name()}}</div>
<div class="col-lg-6">
- <button type="button" class="btn btn-danger" *ngIf="!grp.isdeleted()"
+ <button type="button" class="btn btn-destroy" *ngIf="!grp.isdeleted()"
(click)="grp.isdeleted(true)" i18n>Remove</button>
- <button type="button" class="btn btn-info" *ngIf="grp.isdeleted()"
+ <button type="button" class="btn btn-normal" *ngIf="grp.isdeleted()"
(click)="grp.isdeleted(false)" i18n>Un-Delete</button>
</div>
</div>
diff --git a/Open-ILS/src/eg2/src/app/staff/reporter/full/folder-share-org-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/reporter/full/folder-share-org-dialog.component.html
index c09e361b8b..a57007a9b9 100644
--- a/Open-ILS/src/eg2/src/app/staff/reporter/full/folder-share-org-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/reporter/full/folder-share-org-dialog.component.html
@@ -12,10 +12,8 @@
</div>
<div class="row mt-3">
<div class="col-md-12">
- <div class="input-group">
- <div class="input-group-text" i18n>Share with:</div>
- <eg-org-select [hideOrgs]="notMyOrgs()" [applyDefault]=true (onChange)="contextOrg = $event"/>
- </div>
+ <label class="form-label" for="shareOrgs" i18n>Share with:</label>
+ <eg-org-select domId="shareOrgs" [hideOrgs]="notMyOrgs()" [applyDefault]=true (onChange)="contextOrg = $event"/>
</div>
</div>
</div>
diff --git a/Open-ILS/src/eg2/src/app/staff/share/billing/billing-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/share/billing/billing-dialog.component.html
index e4b1a1fffa..63d21a5965 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/billing/billing-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/share/billing/billing-dialog.component.html
@@ -3,7 +3,7 @@
<!-- putting this here guarantees it's available to ViewChild before open -->
<ng-template #bTypes>
- <eg-combobox #bTypeCbox [entries]="billingTypes"
+ <eg-combobox #bTypeCbox domId="billing_type" [entries]="billingTypes"
[required]="true" (onChange)="btChanged($event)"></eg-combobox>
</ng-template>
@@ -55,22 +55,22 @@
<div class="col-lg-8" i18n>{{hereOrg}}</div>
</div>
<div class="row mt-2">
- <div class="col-lg-4" i18n>Billing Type</div>
+ <label class="col-lg-4 col-form-label" for="billing_type" i18n>Billing Type</label>
<div class="col-lg-8">
<ng-container *ngTemplateOutlet="bTypes"></ng-container>
</div>
</div>
<div class="row mt-2">
- <div class="col-lg-4" i18n>Amount</div>
+ <label class="col-lg-4 col-form-label" for="amount-input" i18n>Amount</label>
<div class="col-lg-8" i18n>
<input type="number" class="form-control" id="amount-input"
required [(ngModel)]="amount" [min]="0"/>
</div>
</div>
<div class="row mt-2">
- <div class="col-lg-4" i18n>Note</div>
+ <label class="col-lg-4 col-form-label" for="note" i18n>Note</label>
<div class="col-lg-8" i18n>
- <textarea class="form-control" [rows]="3" [(ngModel)]="note"></textarea>
+ <textarea class="form-control" id="note" [rows]="3" [(ngModel)]="note"></textarea>
</div>
</div>
</div>
diff --git a/Open-ILS/src/eg2/src/app/staff/share/booking/make-bookable-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/share/booking/make-bookable-dialog.component.html
index 4474a5835c..711c4abc24 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/booking/make-bookable-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/share/booking/make-bookable-dialog.component.html
@@ -19,7 +19,7 @@
<span i18n>Make {{copyIds.length}} Item(s) Bookable?</span>
</div>
</div>
- <div class="row" *ngIf="updateComplete">
+ <div class="row" *ngIf="updateComplete" role="status">
<div class="col-lg-12 d-flex flex-column">
<div i18n>{{numSucceeded}} Item(s) Made Bookable.</div>
<div class="mt-2">
diff --git a/Open-ILS/src/eg2/src/app/staff/share/circ/backdate-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/share/circ/backdate-dialog.component.html
index 74495f358b..7eda9d2fae 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/circ/backdate-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/share/circ/backdate-dialog.component.html
@@ -14,10 +14,10 @@
<div class="modal-body">
<h5 i18n>Backdating {{circIds.length}} circulaion(s)</h5>
<div class="row mt-3">
- <div class="col-lg-5" i18n>Effective Date:</div>
+ <label class="col-lg-5 col-form-label" for="effectiveDate" i18n>Effective Date:</label>
<div class="col-lg-7">
<eg-date-select [required]="true" [initialIso]="backdate"
- (onChangeAsIso)="backdate = $event">
+ (onChangeAsIso)="backdate = $event" domId="effectiveDate">
</eg-date-select>
</div>
</div>
diff --git a/Open-ILS/src/eg2/src/app/staff/share/circ/claims-returned-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/share/circ/claims-returned-dialog.component.html
index 8b140fefa4..94cbfb21e4 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/circ/claims-returned-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/share/circ/claims-returned-dialog.component.html
@@ -13,14 +13,14 @@
<div class="modal-body">
<h5 i18n>Marking Claims Returned for {{barcodes.length}} Item(s)</h5>
<div class="row mt-3">
- <div class="col-lg-6" i18n>Enter Claims Returned Date</div>
+ <label class="col-lg-6 col-form-label" for="returnDate" i18n>Enter Claims Returned Date</label>
<div class="col-lg-6">
- <eg-datetime-select [required]="true" [initialIso]="returnDate"
+ <eg-datetime-select domId="returnDate" [required]="true" [initialIso]="returnDate"
(onChangeAsIso)="returnDate = $event">
</eg-datetime-select>
</div>
</div>
- <div *ngIf="patronExceeds" class="row mt-3 mb-3 d-flex">
+ <div *ngIf="patronExceeds" class="row mt-3 mb-3 d-flex" role="status">
<div class="flex-1 p-2 me-2 alert alert-danger" i18n>
Patron exceeds claims returned count. Force this action?
</div>
diff --git a/Open-ILS/src/eg2/src/app/staff/share/circ/due-date-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/share/circ/due-date-dialog.component.html
index 30993d5bc5..6d40b0cda8 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/circ/due-date-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/share/circ/due-date-dialog.component.html
@@ -13,13 +13,13 @@
<h5 i18n>Modifying Due Date For {{circs.length}} Circulation(s)</h5>
<div class="row mt-3">
- <div class="col-lg-3" i18n>New Date</div>
+ <label class="col-lg-3 col-form-label" for="newDate" i18n>New Date</label>
<div class="col-lg-9">
- <eg-datetime-select [required]="true" (onChangeAsIso)="dueDateChange($event)">
+ <eg-datetime-select domId="newDate" [required]="true" (onChangeAsIso)="dueDateChange($event)">
</eg-datetime-select>
</div>
</div>
- <div class="row mt-3" *ngIf="!dueDateIso">
+ <div class="row mt-3" *ngIf="!dueDateIso" role="status">
<div class="col-lg-12 alert-danger" i18n>
Selected due date is not valid.
</div>
diff --git a/Open-ILS/src/eg2/src/app/staff/share/circ/precat-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/share/circ/precat-dialog.component.html
index be25f7acf2..4a20556c9f 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/circ/precat-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/share/circ/precat-dialog.component.html
@@ -7,7 +7,7 @@
<div class="modal-body">
<div class="row">
- <div class="col-lg-4" i18n>Title</div>
+ <label class="col-lg-4 col-form-label" for="precat-title-input" i18n>Title</label>
<div class="col-lg-8">
<input class="form-control" [(ngModel)]="values.dummy_title"
id='precat-title-input' i18n-placeholder placeholder="Title..."/>
@@ -15,25 +15,25 @@
</div>
<div class="row mt-2">
- <div class="col-lg-4" i18n>Author</div>
+ <label class="col-lg-4 col-form-label" for="dummy_author" i18n>Author</label>
<div class="col-lg-8">
- <input class="form-control" [(ngModel)]="values.dummy_author"
+ <input class="form-control" [(ngModel)]="values.dummy_author" id="dummy_author"
i18n-placeholder placeholder="Author..."/>
</div>
</div>
<div class="row mt-2">
- <div class="col-lg-4" i18n>ISBN</div>
+ <label class="col-lg-4 col-form-label" for="dummy_isbn" i18n>ISBN</label>
<div class="col-lg-8">
- <input class="form-control" [(ngModel)]="values.dummy_isbn"
+ <input class="form-control" [(ngModel)]="values.dummy_isbn" id="dummy_isbn"
i18n-placeholder placeholder="ISBN..."/>
</div>
</div>
<div class="row mt-2">
- <div class="col-lg-4" i18n>Circulation Modifier</div>
+ <label class="col-lg-4 col-form-label" for="circ_modifier" i18n>Circulation Modifier</label>
<div class="col-lg-8">
- <eg-combobox idlClass="ccm"
+ <eg-combobox idlClass="ccm" domId="circ_modifier"
i18n-placeholder placeholder="Circulation Modifier..."
(onChange)="values.circ_modifier = $event ? $event.id : null">
</eg-combobox>
diff --git a/Open-ILS/src/eg2/src/app/staff/share/circ/route-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/share/circ/route-dialog.component.html
index f906cfe478..bf076ee2d7 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/circ/route-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/share/circ/route-dialog.component.html
@@ -132,11 +132,11 @@
<h4>
<ng-container *ngIf="slip === 'hold_shelf_slip'">
<strong i18n>Hold Slip</strong><br/>
- <img class="p-2" src="/images/portal/holds.png" i18n-alt alt="holds icon"/>
+ <img class="p-2" src="/images/portal/holds.png" i18n-alt alt=""/>
</ng-container>
<ng-container *ngIf="slip !== 'hold_shelf_slip'">
<strong i18n>Transit Slip</strong><br/>
- <img class="p-2" src="/images/transit.png" i18n-alt alt="transit van icon"/>
+ <img class="p-2" src="/images/transit.png" i18n-alt alt=""/>
</ng-container>
</h4>
<button type="button" class="btn-close btn-close-white"
diff --git a/Open-ILS/src/eg2/src/app/staff/share/holdings/mark-damaged-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/share/holdings/mark-damaged-dialog.component.html
index fe92947972..6f15c5a5d7 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/holdings/mark-damaged-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/share/holdings/mark-damaged-dialog.component.html
@@ -45,7 +45,7 @@
<li class="list-group-item">
<span i18n>
Calucated fine amount is
- <span class="fw-bold text-danger">
+ <span class="badge badge-danger fs-6">
{{chargeResponse.charge | currency}}
</span>
</span>
@@ -53,18 +53,18 @@
<ng-container *ngIf="amountChangeRequested">
<li class="list-group-item">
<div class="row">
- <div class="col-lg-3" i18n>Billing Type</div>
+ <label class="col-lg-3 col-form-label" for="billingType" i18n>Billing Type</label>
<div class="col-lg-6">
<eg-combobox
placeholder="Billing Type..." i18n-placeholder
- (onChange)="newBtype = $event.id"
+ (onChange)="newBtype = $event.id" domId="billingType"
[entries]="billingTypes"></eg-combobox>
</div>
</div>
</li>
<li class="list-group-item">
<div class="row">
- <div class="col-lg-3" i18n>Charge Amount</div>
+ <label class="col-lg-3 col-form-label" for="newCharge" i18n>Charge Amount</label>
<div class="col-lg-6">
<input class="form-control" type="number" step="0.01" min="0"
[(ngModel)]="newCharge"/>
@@ -73,10 +73,10 @@
</li>
<li class="list-group-item">
<div class="row">
- <div class="col-lg-3" i18n>Note</div>
+ <label class="col-lg-3 col-form-label" for="newNote" i18n>Note</label>
<div class="col-lg-6">
<textarea class="form-control" rows="3"
- [(ngModel)]="newNote"></textarea>
+ [(ngModel)]="newNote" id="newNote"></textarea>
</div>
</div>
</li>
diff --git a/Open-ILS/src/eg2/src/app/staff/share/holdings/mark-discard-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/share/holdings/mark-discard-dialog.component.html
index a5c86c4ba8..58f9025efe 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/holdings/mark-discard-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/share/holdings/mark-discard-dialog.component.html
@@ -17,12 +17,12 @@
<div class="row d-flex justify-content-center">
<h5>Mark {{copyIds.length}} Item(s) Discard?</h5>
</div>
- <div class="row" *ngIf="numSucceeded > 0">
+ <div class="row" *ngIf="numSucceeded > 0" role="status">
<div class="col-lg-12" i18n>
{{numSucceeded}} Items(s) Successfully Marked Discard
</div>
</div>
- <div class="row" *ngIf="numFailed > 0">
+ <div class="row" *ngIf="numFailed > 0" role="status">
<div class="col-lg-12">
<div class="alert alert-warning">
{{numFailed}} Items(s) Failed to be Marked Discard
diff --git a/Open-ILS/src/eg2/src/app/staff/share/holdings/mark-missing-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/share/holdings/mark-missing-dialog.component.html
index 91d0a0698e..7985e30be9 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/holdings/mark-missing-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/share/holdings/mark-missing-dialog.component.html
@@ -17,12 +17,12 @@
<div class="row d-flex justify-content-center">
<h5 i18n>Mark {{copyIds.length}} Item(s) Missing?</h5>
</div>
- <div class="row" *ngIf="numSucceeded > 0">
+ <div class="row" *ngIf="numSucceeded > 0" role="status">
<div class="col-lg-12" i18n>
{{numSucceeded}} Items(s) Successfully Marked Missing
</div>
</div>
- <div class="row" *ngIf="numFailed > 0">
+ <div class="row" *ngIf="numFailed > 0" role="status">
<div class="col-lg-12">
<div class="alert alert-warning" i18n>
{{numFailed}} Items(s) Failed to be Marked Missing
diff --git a/Open-ILS/src/eg2/src/app/staff/share/holdings/replace-barcode-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/share/holdings/replace-barcode-dialog.component.html
index cf49f66a37..08cb026e75 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/holdings/replace-barcode-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/share/holdings/replace-barcode-dialog.component.html
@@ -25,10 +25,10 @@
<div class="col-log-8">
<input type="text" class="form-control" [required]="true"
[(ngModel)]="newBarcode" (keyup)="barcodeExists=false"
- id="new-barcode-input"/>
+ id="new-barcode-input" aria-describedby="barcodeExists-error" />
</div>
</div>
- <div class="row d-flex pt-2 justify-content-center" *ngIf="barcodeExists">
+ <div class="row d-flex pt-2 justify-content-center" *ngIf="barcodeExists" id="barcodeExists-error">
<div class="alert alert-danger" i18n>
Barcode <span class="fw-bold">{{newBarcode}}</span> is already in use.
</div>
diff --git a/Open-ILS/src/eg2/src/app/staff/share/holds/cancel-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/share/holds/cancel-dialog.component.html
index 472897a46f..11ebb54413 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/holds/cancel-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/share/holds/cancel-dialog.component.html
@@ -36,11 +36,11 @@
[(ngModel)]="cancelNote"></textarea>
</div>
</div>
- <div class="row mt-2" *ngIf="numSucceeded > 0">
+ <div class="row mt-2" *ngIf="numSucceeded > 0" role="status">
<div class="col-lg-12" i18n>
{{numSucceeded}} Hold(s) Successfully Canceled
</div>
- <div class="row" *ngIf="numFailed > 0">
+ <div class="row" *ngIf="numFailed > 0" role="status">
<div class="col-lg-12">
<div class="alert alert-warning">
{{numFailed}} Hold(s) Failed to Cancel.
diff --git a/Open-ILS/src/eg2/src/app/staff/share/holds/retarget-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/share/holds/retarget-dialog.component.html
index 734362f066..71c3603521 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/holds/retarget-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/share/holds/retarget-dialog.component.html
@@ -15,12 +15,12 @@
<div class="row d-flex justify-content-center">
<h5>Retarget {{holdIds.length}} Holds?</h5>
</div>
- <div class="row" *ngIf="numSucceeded > 0">
+ <div class="row" *ngIf="numSucceeded > 0" role="status">
<div class="col-lg-12" i18n>
{{numSucceeded}} Hold(s) Successfully Retargeted
</div>
</div>
- <div class="row" *ngIf="numFailed > 0">
+ <div class="row" *ngIf="numFailed > 0" role="status">
<div class="col-lg-12">
<div class="alert alert-warning">
{{numFailed}} Hold(s) Failed to Retarget.
diff --git a/Open-ILS/src/eg2/src/app/staff/share/holds/transfer-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/share/holds/transfer-dialog.component.html
index 0e15fc4d72..779897b9c9 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/holds/transfer-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/share/holds/transfer-dialog.component.html
@@ -17,11 +17,11 @@
<div class="row d-flex justify-content-center">
<h5>Transfer {{holdIds.length}} Holds To Record {{transferTarget}}?</h5>
</div>
- <div class="row" *ngIf="numSucceeded > 0">
+ <div class="row" *ngIf="numSucceeded > 0" role="status">
<div class="col-lg-12" i18n>
{{numSucceeded}} Hold(s) Successfully Transferred.
</div>
- <div class="row" *ngIf="numFailed > 0">
+ <div class="row" *ngIf="numFailed > 0" role="status">
<div class="col-lg-12">
<div class="alert alert-warning">
{{numFailed}} Hold(s) Failed to Transfer.
diff --git a/Open-ILS/src/eg2/src/app/staff/share/holds/transfer-via-bibs-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/share/holds/transfer-via-bibs-dialog.component.html
index e838f67f10..207e37b394 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/holds/transfer-via-bibs-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/share/holds/transfer-via-bibs-dialog.component.html
@@ -17,11 +17,11 @@
<div class="row d-flex justify-content-center">
<h5>Transfer Holds For {{bibIds.length}} Bib(s) To Record {{transferTarget}}?</h5>
</div>
- <div class="row" *ngIf="numSucceeded > 0">
+ <div class="row" *ngIf="numSucceeded > 0" role="status">
<div class="col-lg-12" i18n>
Holds for {{numSucceeded}} Bib(s) Successfully Transferred.
</div>
- <div class="row" *ngIf="numFailed > 0">
+ <div class="row" *ngIf="numFailed > 0" role="status">
<div class="col-lg-12">
<div class="alert alert-warning">
Holds for {{numFailed}} Bibs(s) Failed to Transfer.
diff --git a/Open-ILS/src/eg2/src/app/staff/share/patron/note-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/share/patron/note-dialog.component.html
index 182801caad..112f76912b 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/patron/note-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/share/patron/note-dialog.component.html
@@ -31,7 +31,7 @@
</div>
<div class="row d-flex p-3">
<div class="col-md-6">
- <label for="penalty_type" i18n>Penalty Type</label>
+ <label class="form-label" for="penalty_type" i18n>Penalty Type</label>
<eg-combobox name="penaltyTypeId" [selectedId]="penaltyTypeId"
[disabled]="readOnly || (note?.pub() && note.read_date()) || note?.isdeleted() || note?.stop_date()"
[(ngModel)]="penaltyTypeFromSelect" (onChange)="set_penalty($event?.id)"
@@ -43,7 +43,7 @@
</div>
<div class="col-md-6">
<div>
- <label for="org_depth" i18n>Org Depth</label>
+ <label class="form-label" for="org_depth" i18n>Org Depth</label>
<eg-org-depth-selector domId="org_depth" [contextOrgId]="auth.user().ws_ou()" (depthChange)="onDepthChange($event)"
[disabled]="readOnly || (note?.pub() && note.read_date()) || note?.isdeleted() || note?.stop_date()">
</eg-org-depth-selector>
@@ -87,7 +87,7 @@
</div>
<div class="form-group row pad-vert">
<div class="col-md-12">
- <label for="note_title" i18n>Note Title</label>
+ <label class="form-label" for="note_title" i18n>Note Title</label>
<textarea class="form-control" id="note_title" name="title" [(ngModel)]="title"
[disabled]="readOnly || (note?.pub() && note.read_date()) || note?.isdeleted() || note?.stop_date()">
</textarea>
@@ -95,7 +95,7 @@
</div>
<div class="form-group row pad-vert">
<div class="col-md-12">
- <label for="note_text" i18n>Note Text</label>
+ <label class="form-label" for="note_text" i18n>Note Text</label>
<textarea class="form-control" id="note_text" name="note" [(ngModel)]="message"
[disabled]="readOnly || (note?.pub() && note.read_date()) || note?.isdeleted() || note?.stop_date()">
</textarea>
-----------------------------------------------------------------------
Summary of changes:
.../disencumber-charge-dialog.component.html | 36 +++++++++++++++-------
...add-extra-items-for-order-dialog.component.html | 25 +++++++--------
.../acq/lineitem/add-to-po-dialog.component.html | 3 +-
.../lineitem/claim-policy-dialog.component.html | 2 +-
.../po/disencumber-charge-dialog.component.html | 22 +++++++------
.../search/picklist-clone-dialog.component.html | 2 +-
.../search/picklist-create-dialog.component.html | 2 +-
.../search/picklist-merge-dialog.component.html | 4 +--
.../search-filter/query-dialog.component.html | 12 ++++----
.../server/perm-group-map-dialog.component.html | 16 ++--------
.../cat/authority/merge-dialog.component.html | 7 ++---
.../record/add-to-carousel-dialog.component.html | 4 +--
.../upload-jacket-image-dialog.component.html | 13 +++-----
.../staff/catalog/search-templates.component.html | 5 ++-
.../app/staff/circ/patron/barcodes.component.html | 7 +++--
.../circ/patron/hold-notify-update.component.html | 2 +-
.../circ/patron/secondary-groups.component.html | 4 +--
.../full/folder-share-org-dialog.component.html | 6 ++--
.../share/billing/billing-dialog.component.html | 10 +++---
.../booking/make-bookable-dialog.component.html | 2 +-
.../share/circ/backdate-dialog.component.html | 4 +--
.../circ/claims-returned-dialog.component.html | 6 ++--
.../share/circ/due-date-dialog.component.html | 6 ++--
.../staff/share/circ/precat-dialog.component.html | 14 ++++-----
.../staff/share/circ/route-dialog.component.html | 4 +--
.../holdings/mark-damaged-dialog.component.html | 12 ++++----
.../holdings/mark-discard-dialog.component.html | 4 +--
.../holdings/mark-missing-dialog.component.html | 4 +--
.../holdings/replace-barcode-dialog.component.html | 4 +--
.../staff/share/holds/cancel-dialog.component.html | 4 +--
.../share/holds/retarget-dialog.component.html | 4 +--
.../share/holds/transfer-dialog.component.html | 4 +--
.../holds/transfer-via-bibs-dialog.component.html | 4 +--
.../staff/share/patron/note-dialog.component.html | 8 ++---
34 files changed, 133 insertions(+), 133 deletions(-)
hooks/post-receive
--
Evergreen ILS
1
0

[GIT] Evergreen ILS branch rel_3_15 updated. 4157a8054843dd1660c023499c4239c5449f2407
by Git User 03 Apr '25
by Git User 03 Apr '25
03 Apr '25
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Evergreen ILS".
The branch, rel_3_15 has been updated
via 4157a8054843dd1660c023499c4239c5449f2407 (commit)
from a74eee956bea793f9f7f769a48de3303b1fd109d (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 4157a8054843dd1660c023499c4239c5449f2407
Author: Stephanie Leary <stephanie.leary(a)equinoxoli.org>
Date: Tue Mar 18 15:24:11 2025 +0000
LP2103567 modal form label and status cleanup
Adds labels to several forms contained in modal dialogs. Also adds
role="status" to obvious status messages to turn them into ARIA live
regions.
Release-note: Adds form labels and ARIA status roles to forms in dialogs
Signed-off-by: Stephanie Leary <stephanie.leary(a)equinoxoli.org>
Signed-off-by: Terran McCanna <tmccanna(a)georgialibraries.org>
diff --git a/Open-ILS/src/eg2/src/app/staff/acq/invoice/disencumber-charge-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/acq/invoice/disencumber-charge-dialog.component.html
index 79f540bb28..8e11bf067d 100644
--- a/Open-ILS/src/eg2/src/app/staff/acq/invoice/disencumber-charge-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/acq/invoice/disencumber-charge-dialog.component.html
@@ -7,39 +7,53 @@
</div>
<div class="modal-body">
<div class="d-flex">
- <div class="flex-2" i18n>Charge:</div>
+ <div class="flex-2">
+ <label for="inv_item_type" class="form-label" i18n>Charge:</label>
+ </div>
<div class="flex-3">
<eg-combobox idlClass="aiit" [selectedId]="charge.inv_item_type()"
- [readOnly]="true"></eg-combobox>
+ [readOnly]="true" domId="inv_item_type"></eg-combobox>
</div>
</div>
<div class="d-flex">
- <div class="flex-2" i18n>Amount:</div>
- <div class="flex-3">{{charge.cost_billed()}}</div>
+ <div class="flex-2">
+ <label for="cost_billed" class="form-label" i18n>Amount:</label>
+ </div>
+ <div class="flex-3">
+ <output id="cost_billed">{{charge.cost_billed()}}</output>
+ </div>
</div>
<div class="d-flex">
- <div class="flex-2" i18n>Original Fund:</div>
+ <div class="flex-2">
+ <label for="charge_fund" class="form-label" i18n>Original Fund:</label>
+ </div>
<div class="flex-3">
<eg-combobox idlClass="acqf" [selectedId]="charge.fund()"
- [readOnly]="true"></eg-combobox>
+ [readOnly]="true" domId="charge_fund"></eg-combobox>
</div>
</div>
<div class="d-flex">
- <div class="flex-2" i18n>Fund Debited:</div>
+ <div class="flex-2">
+ <label for="debit_fund" class="form-label" i18n>Fund Debited:</label>
+ </div>
<div class="flex-3">
<eg-combobox idlClass="acqf" [selectedId]="charge.fund_debit().fund()"
- [readOnly]="true"></eg-combobox>
+ [readOnly]="true" domId="debit_fund"></eg-combobox>
</div>
</div>
<div class="d-flex">
- <div class="flex-2" i18n>Amount Encumbered:</div>
- <div class="flex-3">{{charge.fund_debit().amount()}}</div>
+ <div class="flex-2">
+ <label for="amount_encumbered" class="form-label" i18n>Amount Encumbered:</label>
+ </div>
+ <div class="flex-3">
+ <output id="amount_encumbered">{{charge.fund_debit().amount()}}</output>
+ </div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-success"
(click)="close(true)" i18n>Disencumber</button>
- <button type="button" class="btn btn-warning"
+ <button type="button" class="btn btn-normal"
(click)="close()" i18n>Cancel</button>
</div>
</form>
diff --git a/Open-ILS/src/eg2/src/app/staff/acq/lineitem/add-extra-items-for-order-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/acq/lineitem/add-extra-items-for-order-dialog.component.html
index 7bd66705ef..86b889616a 100644
--- a/Open-ILS/src/eg2/src/app/staff/acq/lineitem/add-extra-items-for-order-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/acq/lineitem/add-extra-items-for-order-dialog.component.html
@@ -1,4 +1,4 @@
-<ng-template #dialogContent>
+<ng-template #dialogContent>
<form class="form-validated">
<div class="modal-header">
<h3 class="modal-title" i18n>Add Extra Items To Order</h3>
@@ -7,7 +7,8 @@
</div>
<div class="modal-body">
<h4 i18n>You are attempting to invoice {{extra_count}} more copy or copies than originally ordered. To add these items to the original purchase order, select a fund and choose 'Add New Items' below. If you do this, it will happen immediately, whether you save changes to the invoice or not.</h4>
- <eg-combobox idlClass="acqf" name="fund"
+ <label for="fund" class="form-label" i18n>Fund:</label>
+ <eg-combobox idlClass="acqf" name="fund" domId="fund"
i18n-placeholder placeholder="Fund..."
[asyncSupportsEmptyTermClick]="true"
[required]="true"
@@ -16,24 +17,24 @@
[(ngModel)]="fund" (ngModelChange)="fundSelected($event)"></eg-combobox>
</div>
<div class="row" style="margin-left: 1.33em">
- <div class="col"><label i18n>Allocation Total</label></div>
- <div class="col">{{fundSummary?.allocation_total | currency}}</div>
+ <label class="col-form-label" for="allocation_total" i18n>Allocation Total</label>
+ <div class="col"><output id="allocation_total">{{fundSummary?.allocation_total | currency}}</output></div>
</div>
<div class="row" style="margin-left: 1.33em">
- <div class="col"><label i18n>Combined Balance</label></div>
- <div class="col">{{fundSummary?.combined_balance | currency}}</div>
+ <label class="col-form-label" for="combined_balance" i18n>Combined Balance</label>
+ <div class="col"><output id="combined_balance">{{fundSummary?.combined_balance | currency}}</output></div>
</div>
<div class="row" style="margin-left: 1.33em">
- <div class="col"><label i18n>Encumbrance Total</label></div>
- <div class="col">{{fundSummary?.encumbrance_total | currency}}</div>
+ <label class="col-form-label" for="encumbrance_total" i18n>Encumbrance Total</label>
+ <div class="col"><output id="encumbrance_total">{{fundSummary?.encumbrance_total | currency}}</output></div>
</div>
<div class="row" style="margin-left: 1.33em">
- <div class="col"><label i18n>Debit Total</label></div>
- <div class="col">{{fundSummary?.debit_total | currency}}</div>
+ <label class="col-form-label" for="debit_total" i18n>Debit Total</label>
+ <div class="col"><output id="debit_total">{{fundSummary?.debit_total | currency}}</output></div>
</div>
<div class="row" style="margin-left: 1.33em">
- <div class="col"><label i18n>Spent Total</label></div>
- <div class="col">{{fundSummary?.spent_total | currency}}</div>
+ <label class="col-form-label" for="spent_total" i18n>Spent Total</label>
+ <div class="col"><output id="spent_total">{{fundSummary?.spent_total | currency}}</output></div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-success" [disabled]="!fund"
diff --git a/Open-ILS/src/eg2/src/app/staff/acq/lineitem/add-to-po-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/acq/lineitem/add-to-po-dialog.component.html
index 45924f9f46..3876b34924 100644
--- a/Open-ILS/src/eg2/src/app/staff/acq/lineitem/add-to-po-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/acq/lineitem/add-to-po-dialog.component.html
@@ -13,8 +13,9 @@
</h4>
<h4 i18n>Please select a PO and click "Add to Purchase Order" to add the line items,
or "Exit Dialog" to exit without adding the line items to a PO.</h4>
+ <label class="form-label" i18n>PO:</label>
<eg-combobox domId="acq-add-to-po-dialog" name="acq-add-to-po-dialog"
- [asyncSupportsEmptyTermClick]="true"
+ [asyncSupportsEmptyTermClick]="true" domId="po_to_add"
idlClass="acqpo" [idlQueryAnd]="{state: ['new', 'pending']}"
idlIncludeLibraryInLabel="ordering_agency"
[(ngModel)]="po"></eg-combobox>
diff --git a/Open-ILS/src/eg2/src/app/staff/acq/lineitem/claim-policy-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/acq/lineitem/claim-policy-dialog.component.html
index 54484da0fc..5934f957e4 100644
--- a/Open-ILS/src/eg2/src/app/staff/acq/lineitem/claim-policy-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/acq/lineitem/claim-policy-dialog.component.html
@@ -11,7 +11,7 @@
{{id}}<span *ngIf="!isLast">,</span>
</span>
</h4>
- <h4 i18n>Select a claim policy:</h4>
+ <label for="acq-claim-policy-dialog" i18n>Select a claim policy:</label>
<eg-combobox domId="acq-claim-policy-dialog" name="acq-claim-policy-dialog"
[asyncSupportsEmptyTermClick]="true"
idlClass="acqclp" [(ngModel)]="claimPolicy"></eg-combobox>
diff --git a/Open-ILS/src/eg2/src/app/staff/acq/po/disencumber-charge-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/acq/po/disencumber-charge-dialog.component.html
index c52ad3bb4d..b2d71a37c5 100644
--- a/Open-ILS/src/eg2/src/app/staff/acq/po/disencumber-charge-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/acq/po/disencumber-charge-dialog.component.html
@@ -7,33 +7,35 @@
</div>
<div class="modal-body">
<div class="d-flex">
- <div class="flex-2" i18n>Charge:</div>
+ <div class="flex-2">
+ <label class="form-label" for="inv_item_type" i18n>Charge:</label>
+ </div>
<div class="flex-3">
- <eg-combobox idlClass="aiit" [selectedId]="charge.inv_item_type()"
+ <eg-combobox domId="inv_item_type" idlClass="aiit" [selectedId]="charge.inv_item_type()"
[readOnly]="true"></eg-combobox>
</div>
</div>
<div class="d-flex">
- <div class="flex-2" i18n>Amount:</div>
- <div class="flex-3">{{charge.estimated_cost()}}</div>
+ <div class="flex-2"><label for="estimated_cost" class="form-label" i18n>Amount:</label></div>
+ <div class="flex-3"><output id="estimated_cost">{{charge.estimated_cost()}}</output></div>
</div>
<div class="d-flex">
- <div class="flex-2" i18n>Original Fund:</div>
+ <div class="flex-2"><label for="charge_fund" class="form-label" i18n>Original Fund:</label></div>
<div class="flex-3">
- <eg-combobox idlClass="acqf" [selectedId]="charge.fund()"
+ <eg-combobox domId="charge_fund" idlClass="acqf" [selectedId]="charge.fund()"
[readOnly]="true"></eg-combobox>
</div>
</div>
<div class="d-flex">
- <div class="flex-2" i18n>Fund Debited:</div>
+ <div class="flex-2"><label for="fund_debit" class="form-label" i18n>Fund Debited:</label></div>
<div class="flex-3">
- <eg-combobox idlClass="acqf" [selectedId]="charge.fund_debit().fund()"
+ <eg-combobox id="fund_debit" idlClass="acqf" [selectedId]="charge.fund_debit().fund()"
[readOnly]="true"></eg-combobox>
</div>
</div>
<div class="d-flex">
- <div class="flex-2" i18n>Amount Encumbered:</div>
- <div class="flex-3">{{charge.fund_debit().amount()}}</div>
+ <div class="flex-2"><label for="fund_debit_amount" class="form-label" i18n>Amount Encumbered:</label></div>
+ <div class="flex-3"><output id="fund_debit_amount">{{charge.fund_debit().amount()}}</output></div>
</div>
</div>
<div class="modal-footer">
diff --git a/Open-ILS/src/eg2/src/app/staff/acq/search/picklist-clone-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/acq/search/picklist-clone-dialog.component.html
index c51f68377f..1721a319b3 100644
--- a/Open-ILS/src/eg2/src/app/staff/acq/search/picklist-clone-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/acq/search/picklist-clone-dialog.component.html
@@ -6,7 +6,7 @@
i18n-aria-label aria-label="Close dialog" (click)="close()"></button>
</div>
<div class="modal-body">
- <h4 i18n>Selection list name:</h4>
+ <label for="create-picklist-name" class="form-label" i18n>Selection list name:</label>
<input type="text" id="create-picklist-name" required
[ngModelOptions]="{standalone: true}"
class="form-control" [(ngModel)]="selectionListName">
diff --git a/Open-ILS/src/eg2/src/app/staff/acq/search/picklist-create-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/acq/search/picklist-create-dialog.component.html
index 1b5bc0bdd3..d4256ce232 100644
--- a/Open-ILS/src/eg2/src/app/staff/acq/search/picklist-create-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/acq/search/picklist-create-dialog.component.html
@@ -6,7 +6,7 @@
i18n-aria-label aria-label="Close dialog" (click)="close()"></button>
</div>
<div class="modal-body">
- <h4 i18n>Selection list name:</h4>
+ <label class="form-label" for="create-picklist-name" i18n>Selection list name:</label>
<input type="text" id="create-picklist-name" required
[ngModelOptions]="{standalone: true}" required
class="form-control col-lg-7" [(ngModel)]="selectionListName">
diff --git a/Open-ILS/src/eg2/src/app/staff/acq/search/picklist-merge-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/acq/search/picklist-merge-dialog.component.html
index 46574d8184..892c613452 100644
--- a/Open-ILS/src/eg2/src/app/staff/acq/search/picklist-merge-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/acq/search/picklist-merge-dialog.component.html
@@ -6,8 +6,8 @@
i18n-aria-label aria-label="Close dialog" (click)="close()"></button>
</div>
<div class="modal-body">
- <h4 i18n>Lead Selection List:</h4>
- <select [(ngModel)]="leadList" [ngModelOptions]="{standalone: true}" required>
+ <label class="form-label" for="leadList" i18n>Lead Selection List:</label>
+ <select id="leadList" [(ngModel)]="leadList" [ngModelOptions]="{standalone: true}" required>
<option *ngFor="let list of selectedLists"
value="{{list.id()}}">{{list.name()}}</option>
</select>
diff --git a/Open-ILS/src/eg2/src/app/staff/admin/local/search-filter/query-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/admin/local/search-filter/query-dialog.component.html
index 9d938a118b..787059de97 100644
--- a/Open-ILS/src/eg2/src/app/staff/admin/local/search-filter/query-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/admin/local/search-filter/query-dialog.component.html
@@ -8,27 +8,27 @@
</div>
<div class="modal-body">
<div class="row">
- <div class="col-lg-3 fw-bold" i18n>Query Label</div>
+ <label class="col-lg-3 col-form-label" for="query_label" i18n>Query Label</label>
<div class="col-lg-9">
- <input type="text" class="form-control" name="query_label"
+ <input type="text" class="form-control" id="query_label" name="query_label"
placeholder="Query Label"
i18n-placeholder required
[(ngModel)]="newQueryLabel"/>
</div>
</div>
<div class="row mt-3">
- <div class="col-lg-3 fw-bold" i18n>Query Text</div>
+ <label class="col-lg-3 col-form-label" for="query_text" i18n>Query Text</label>
<div class="col-lg-9">
- <input type="text" class="form-control" name="query_text"
+ <input type="text" class="form-control" id="query_text" name="query_text"
placeholder="Query Text"
i18n-placeholder required
[(ngModel)]="newQueryText"/>
</div>
</div>
<div class="row mt-3">
- <div class="col-lg-3 fw-bold" i18n>Position</div>
+ <label class="col-lg-3 col-form-label" for="pos" i18n>Position</label>
<div class="col-lg-9">
- <input type="number" class="form-control" name="pos"
+ <input type="number" class="form-control" id="pos" name="pos"
placeholder="Position"
i18n-placeholder required
[(ngModel)]="newQueryPosition"/>
diff --git a/Open-ILS/src/eg2/src/app/staff/admin/server/perm-group-map-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/admin/server/perm-group-map-dialog.component.html
index edbe25c7ab..399077c50a 100644
--- a/Open-ILS/src/eg2/src/app/staff/admin/server/perm-group-map-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/admin/server/perm-group-map-dialog.component.html
@@ -11,9 +11,7 @@
<div class="col-lg-7">{{permGroup.name()}}</div>
</div>
<div class="row mt-1 pt-1">
- <div class="col-lg-5">
- <label for="select-perms" i18n>New Permission</label>
- </div>
+ <label class="col-lg-5 col-form-label" for="select-perms" i18n>New Permission</label>
<div class="col-lg-7">
<input type="text" id="select-perms" #selectPerms
[ngbTypeahead]="permEntries"
@@ -32,22 +30,14 @@
</div>
</div>
<div class="row row-cols-5 mt-1 pt-1">
- <div class="col">
- <label [attr.for]="'depth-'+map.controls.id.value"
- i18n>Depth
- </label>
- </div>
+ <label class="col-form-label" for="depth-{{map.controls.id.value}}" i18n>Depth</label>
<div class="col">
<select formControlName="depth" class="p-1"
id="depth-{{map.controls.id.value}}">
<option *ngFor="let d of orgDepths" value="{{d}}">{{d}}</option>
</select>
</div>
- <div class="col">
- <label [attr.for]="'grantable-'+map.controls.id.value"
- i18n>Grantable
- </label>
- </div>
+ <label class="col-form-lalel" for="grantable-{{map.controls.id.value}}" i18n>Grantable</label>
<div class="col">
<input type="checkbox" formControlName="grantable"
id="grantable-{{map.controls.id.value}}">
diff --git a/Open-ILS/src/eg2/src/app/staff/cat/authority/merge-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/cat/authority/merge-dialog.component.html
index 849504049c..7e132cd4dd 100644
--- a/Open-ILS/src/eg2/src/app/staff/cat/authority/merge-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/cat/authority/merge-dialog.component.html
@@ -20,12 +20,11 @@
<div class="col-lg-2" i18n>Lead Record</div>
</div>
<div class="row" *ngFor="let data of authData">
- <div class="col-lg-2">
- <input type="radio" name="leadRecord"
+ <div class="col-lg-12 form-check">
+ <input type="radio" class="form-check-input" name="leadRecord" id="leadRecord-{{data.authority.id()}}"
[value]="data.authority.id()" [(ngModel)]="leadRecord"/>
+ <label class="form-check-label" for="leadRecord-{{data.authority.id()}}">#{{data.authority.id()}} {{data.heading}}</label>
</div>
- <div class="col-lg-1">#{{data.authority.id()}}</div>
- <div class="col-lg-6">{{data.heading}}</div>
</div>
</div>
<div class="modal-footer">
diff --git a/Open-ILS/src/eg2/src/app/staff/catalog/record/add-to-carousel-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/catalog/record/add-to-carousel-dialog.component.html
index fb86db026e..a9bbe64103 100644
--- a/Open-ILS/src/eg2/src/app/staff/catalog/record/add-to-carousel-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/catalog/record/add-to-carousel-dialog.component.html
@@ -15,9 +15,9 @@
<p> <a routerLink="/staff/admin/local/container/carousel" i18n>Would you like to add one?</a></p>
</div>
<div class="row" *ngIf="carousels.length">
- <div class="col-lg-3 fw-bold" i18n>Carousel</div>
+ <label class="col-lg-3 col-form-label" for="selectedCarousel" i18n>Carousel</label>
<div class="col-lg-5">
- <eg-combobox [entries]="formatCarouselEntries()" [formControl]="selectedCarousel">
+ <eg-combobox [entries]="formatCarouselEntries()" [formControl]="selectedCarousel" domId="selectedCarousel">
</eg-combobox>
</div>
</div>
diff --git a/Open-ILS/src/eg2/src/app/staff/catalog/record/upload-jacket-image-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/catalog/record/upload-jacket-image-dialog.component.html
index 4465cc7ca7..86f2569d00 100644
--- a/Open-ILS/src/eg2/src/app/staff/catalog/record/upload-jacket-image-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/catalog/record/upload-jacket-image-dialog.component.html
@@ -7,21 +7,16 @@
i18n-aria-label aria-label="Close dialog" (click)="clearErrors(); close(false)"></button>
</div>
<div class="modal-body">
- <!--<form method="POST" enctype="multipart/form-data" action="/jacket-upload">
- <input type="file" name="jacket_upload">
- <input type="text" name="ses">
- <input type="text" name="bib_record">
- <input type="submit">
- </form>-->
- <input type="file" class="file-input" (change)="onFileSelected($event)" #fileUpload>
- <div class="progress" *ngIf="uploading">
+ <label for="file" class="form-label" i18n>Choose file:</label>
+ <input type="file" id="file" class="file-input" (change)="onFileSelected($event)" #fileUpload>
+ <div class="progress" role="status" *ngIf="uploading">
<div class="progress-bar progress-bar-striped active w-100"
role="progressbar" aria-valuenow="100"
aria-valuemin="0" aria-valuemax="100">
<span i18n>Uploading..</span>
</div>
</div>
- <div style="margin-top: 20px" *ngIf="errorUploading">
+ <div class="alert alert-danger mt-3" role="status" *ngIf="errorUploading">
<span *ngIf="errorAuthentication" class="alert alert-danger" i18n>Not authenticated. Expired login?</span>
<span *ngIf="errorAuthorization" class="alert alert-danger" i18n>Not authorized. Check your permissions.</span>
<span *ngIf="errorNotFound" class="alert alert-danger" i18n>Not found. Bib record deleted?</span>
diff --git a/Open-ILS/src/eg2/src/app/staff/catalog/search-templates.component.html b/Open-ILS/src/eg2/src/app/staff/catalog/search-templates.component.html
index 348941fa14..56ab76b348 100644
--- a/Open-ILS/src/eg2/src/app/staff/catalog/search-templates.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/catalog/search-templates.component.html
@@ -80,10 +80,9 @@
</div>
<div class="modal-body">
<div class="row">
- <div class="col-lg-4" i18n id="templateNameLabel">Template Name:</div>
+ <label class="col-lg-4 col-form-label" i18n for="templateName">Template Name:</label>
<div class="col-lg-6">
- <input class="form-control" [(ngModel)]="templateName"
- aria-labelledby="templateNameLabel"/>
+ <input class="form-control" [(ngModel)]="templateName" id="templateName" />
</div>
</div>
</div>
diff --git a/Open-ILS/src/eg2/src/app/staff/circ/patron/barcodes.component.html b/Open-ILS/src/eg2/src/app/staff/circ/patron/barcodes.component.html
index b08faedaba..db79398ebc 100644
--- a/Open-ILS/src/eg2/src/app/staff/circ/patron/barcodes.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/circ/patron/barcodes.component.html
@@ -14,17 +14,18 @@
<div class="col-lg-4 fw-bold" i18n>Primary</div>
</div>
<div class="row mt-2 pt-2" *ngFor="let card of patron.cards()">
- <div class="col-lg-4" i18n>
+ <label class="col-lg-4 col-form-label" for="card-{{card.id()}}" i18n>
{{card.barcode()}}
- </div>
+ </label>
<div class="col-lg-4" i18n>
<input type="checkbox" [disabled]="!myPerms.UPDATE_PATRON_ACTIVE_CARD"
- (ngModelChange)="activeChange(card, $event)"
+ (ngModelChange)="activeChange(card, $event)" id="card-{{card.id()}}"
class="form-check-input ms-0" [ngModel]="card.active() === 't'">
</div>
<div class="col-lg-4" i18n>
<input type="radio" name="primary-card" [value]="card.id()"
[disabled]="!myPerms.UPDATE_PATRON_PRIMARY_CARD"
+ aria-label="Use {{card.barcode()}} as primary card" i18n-aria-label
class="form-check-input ms-0" [(ngModel)]="primaryCard">
</div>
</div>
diff --git a/Open-ILS/src/eg2/src/app/staff/circ/patron/hold-notify-update.component.html b/Open-ILS/src/eg2/src/app/staff/circ/patron/hold-notify-update.component.html
index ab5eca017d..e9a0eda74c 100644
--- a/Open-ILS/src/eg2/src/app/staff/circ/patron/hold-notify-update.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/circ/patron/hold-notify-update.component.html
@@ -8,7 +8,7 @@
<div class="row mt-2" *ngFor="let mod of mods">
<div class="col-lg-12">
- <div [ngSwitch]="mod.field" class="mt-2 mb-2">
+ <div [ngSwitch]="mod.field" role="status" class="mt-2 mb-2">
<span *ngSwitchCase="'phone_notify'">
<span class="me-2">You have set Notify by Phone to</span>
<eg-bool [value]="mod.newValue"></eg-bool>
diff --git a/Open-ILS/src/eg2/src/app/staff/circ/patron/secondary-groups.component.html b/Open-ILS/src/eg2/src/app/staff/circ/patron/secondary-groups.component.html
index f46ce2dc4b..ada5194b4f 100644
--- a/Open-ILS/src/eg2/src/app/staff/circ/patron/secondary-groups.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/circ/patron/secondary-groups.component.html
@@ -21,9 +21,9 @@
<div class="row mt-2" *ngFor="let grp of secondaryGroups">
<div class="col-lg-6">{{grp.name()}}</div>
<div class="col-lg-6">
- <button type="button" class="btn btn-danger" *ngIf="!grp.isdeleted()"
+ <button type="button" class="btn btn-destroy" *ngIf="!grp.isdeleted()"
(click)="grp.isdeleted(true)" i18n>Remove</button>
- <button type="button" class="btn btn-info" *ngIf="grp.isdeleted()"
+ <button type="button" class="btn btn-normal" *ngIf="grp.isdeleted()"
(click)="grp.isdeleted(false)" i18n>Un-Delete</button>
</div>
</div>
diff --git a/Open-ILS/src/eg2/src/app/staff/reporter/full/folder-share-org-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/reporter/full/folder-share-org-dialog.component.html
index c09e361b8b..a57007a9b9 100644
--- a/Open-ILS/src/eg2/src/app/staff/reporter/full/folder-share-org-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/reporter/full/folder-share-org-dialog.component.html
@@ -12,10 +12,8 @@
</div>
<div class="row mt-3">
<div class="col-md-12">
- <div class="input-group">
- <div class="input-group-text" i18n>Share with:</div>
- <eg-org-select [hideOrgs]="notMyOrgs()" [applyDefault]=true (onChange)="contextOrg = $event"/>
- </div>
+ <label class="form-label" for="shareOrgs" i18n>Share with:</label>
+ <eg-org-select domId="shareOrgs" [hideOrgs]="notMyOrgs()" [applyDefault]=true (onChange)="contextOrg = $event"/>
</div>
</div>
</div>
diff --git a/Open-ILS/src/eg2/src/app/staff/share/billing/billing-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/share/billing/billing-dialog.component.html
index e4b1a1fffa..63d21a5965 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/billing/billing-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/share/billing/billing-dialog.component.html
@@ -3,7 +3,7 @@
<!-- putting this here guarantees it's available to ViewChild before open -->
<ng-template #bTypes>
- <eg-combobox #bTypeCbox [entries]="billingTypes"
+ <eg-combobox #bTypeCbox domId="billing_type" [entries]="billingTypes"
[required]="true" (onChange)="btChanged($event)"></eg-combobox>
</ng-template>
@@ -55,22 +55,22 @@
<div class="col-lg-8" i18n>{{hereOrg}}</div>
</div>
<div class="row mt-2">
- <div class="col-lg-4" i18n>Billing Type</div>
+ <label class="col-lg-4 col-form-label" for="billing_type" i18n>Billing Type</label>
<div class="col-lg-8">
<ng-container *ngTemplateOutlet="bTypes"></ng-container>
</div>
</div>
<div class="row mt-2">
- <div class="col-lg-4" i18n>Amount</div>
+ <label class="col-lg-4 col-form-label" for="amount-input" i18n>Amount</label>
<div class="col-lg-8" i18n>
<input type="number" class="form-control" id="amount-input"
required [(ngModel)]="amount" [min]="0"/>
</div>
</div>
<div class="row mt-2">
- <div class="col-lg-4" i18n>Note</div>
+ <label class="col-lg-4 col-form-label" for="note" i18n>Note</label>
<div class="col-lg-8" i18n>
- <textarea class="form-control" [rows]="3" [(ngModel)]="note"></textarea>
+ <textarea class="form-control" id="note" [rows]="3" [(ngModel)]="note"></textarea>
</div>
</div>
</div>
diff --git a/Open-ILS/src/eg2/src/app/staff/share/booking/make-bookable-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/share/booking/make-bookable-dialog.component.html
index 4474a5835c..711c4abc24 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/booking/make-bookable-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/share/booking/make-bookable-dialog.component.html
@@ -19,7 +19,7 @@
<span i18n>Make {{copyIds.length}} Item(s) Bookable?</span>
</div>
</div>
- <div class="row" *ngIf="updateComplete">
+ <div class="row" *ngIf="updateComplete" role="status">
<div class="col-lg-12 d-flex flex-column">
<div i18n>{{numSucceeded}} Item(s) Made Bookable.</div>
<div class="mt-2">
diff --git a/Open-ILS/src/eg2/src/app/staff/share/circ/backdate-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/share/circ/backdate-dialog.component.html
index 74495f358b..7eda9d2fae 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/circ/backdate-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/share/circ/backdate-dialog.component.html
@@ -14,10 +14,10 @@
<div class="modal-body">
<h5 i18n>Backdating {{circIds.length}} circulaion(s)</h5>
<div class="row mt-3">
- <div class="col-lg-5" i18n>Effective Date:</div>
+ <label class="col-lg-5 col-form-label" for="effectiveDate" i18n>Effective Date:</label>
<div class="col-lg-7">
<eg-date-select [required]="true" [initialIso]="backdate"
- (onChangeAsIso)="backdate = $event">
+ (onChangeAsIso)="backdate = $event" domId="effectiveDate">
</eg-date-select>
</div>
</div>
diff --git a/Open-ILS/src/eg2/src/app/staff/share/circ/claims-returned-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/share/circ/claims-returned-dialog.component.html
index 8b140fefa4..94cbfb21e4 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/circ/claims-returned-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/share/circ/claims-returned-dialog.component.html
@@ -13,14 +13,14 @@
<div class="modal-body">
<h5 i18n>Marking Claims Returned for {{barcodes.length}} Item(s)</h5>
<div class="row mt-3">
- <div class="col-lg-6" i18n>Enter Claims Returned Date</div>
+ <label class="col-lg-6 col-form-label" for="returnDate" i18n>Enter Claims Returned Date</label>
<div class="col-lg-6">
- <eg-datetime-select [required]="true" [initialIso]="returnDate"
+ <eg-datetime-select domId="returnDate" [required]="true" [initialIso]="returnDate"
(onChangeAsIso)="returnDate = $event">
</eg-datetime-select>
</div>
</div>
- <div *ngIf="patronExceeds" class="row mt-3 mb-3 d-flex">
+ <div *ngIf="patronExceeds" class="row mt-3 mb-3 d-flex" role="status">
<div class="flex-1 p-2 me-2 alert alert-danger" i18n>
Patron exceeds claims returned count. Force this action?
</div>
diff --git a/Open-ILS/src/eg2/src/app/staff/share/circ/due-date-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/share/circ/due-date-dialog.component.html
index 30993d5bc5..6d40b0cda8 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/circ/due-date-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/share/circ/due-date-dialog.component.html
@@ -13,13 +13,13 @@
<h5 i18n>Modifying Due Date For {{circs.length}} Circulation(s)</h5>
<div class="row mt-3">
- <div class="col-lg-3" i18n>New Date</div>
+ <label class="col-lg-3 col-form-label" for="newDate" i18n>New Date</label>
<div class="col-lg-9">
- <eg-datetime-select [required]="true" (onChangeAsIso)="dueDateChange($event)">
+ <eg-datetime-select domId="newDate" [required]="true" (onChangeAsIso)="dueDateChange($event)">
</eg-datetime-select>
</div>
</div>
- <div class="row mt-3" *ngIf="!dueDateIso">
+ <div class="row mt-3" *ngIf="!dueDateIso" role="status">
<div class="col-lg-12 alert-danger" i18n>
Selected due date is not valid.
</div>
diff --git a/Open-ILS/src/eg2/src/app/staff/share/circ/precat-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/share/circ/precat-dialog.component.html
index be25f7acf2..4a20556c9f 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/circ/precat-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/share/circ/precat-dialog.component.html
@@ -7,7 +7,7 @@
<div class="modal-body">
<div class="row">
- <div class="col-lg-4" i18n>Title</div>
+ <label class="col-lg-4 col-form-label" for="precat-title-input" i18n>Title</label>
<div class="col-lg-8">
<input class="form-control" [(ngModel)]="values.dummy_title"
id='precat-title-input' i18n-placeholder placeholder="Title..."/>
@@ -15,25 +15,25 @@
</div>
<div class="row mt-2">
- <div class="col-lg-4" i18n>Author</div>
+ <label class="col-lg-4 col-form-label" for="dummy_author" i18n>Author</label>
<div class="col-lg-8">
- <input class="form-control" [(ngModel)]="values.dummy_author"
+ <input class="form-control" [(ngModel)]="values.dummy_author" id="dummy_author"
i18n-placeholder placeholder="Author..."/>
</div>
</div>
<div class="row mt-2">
- <div class="col-lg-4" i18n>ISBN</div>
+ <label class="col-lg-4 col-form-label" for="dummy_isbn" i18n>ISBN</label>
<div class="col-lg-8">
- <input class="form-control" [(ngModel)]="values.dummy_isbn"
+ <input class="form-control" [(ngModel)]="values.dummy_isbn" id="dummy_isbn"
i18n-placeholder placeholder="ISBN..."/>
</div>
</div>
<div class="row mt-2">
- <div class="col-lg-4" i18n>Circulation Modifier</div>
+ <label class="col-lg-4 col-form-label" for="circ_modifier" i18n>Circulation Modifier</label>
<div class="col-lg-8">
- <eg-combobox idlClass="ccm"
+ <eg-combobox idlClass="ccm" domId="circ_modifier"
i18n-placeholder placeholder="Circulation Modifier..."
(onChange)="values.circ_modifier = $event ? $event.id : null">
</eg-combobox>
diff --git a/Open-ILS/src/eg2/src/app/staff/share/circ/route-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/share/circ/route-dialog.component.html
index f906cfe478..bf076ee2d7 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/circ/route-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/share/circ/route-dialog.component.html
@@ -132,11 +132,11 @@
<h4>
<ng-container *ngIf="slip === 'hold_shelf_slip'">
<strong i18n>Hold Slip</strong><br/>
- <img class="p-2" src="/images/portal/holds.png" i18n-alt alt="holds icon"/>
+ <img class="p-2" src="/images/portal/holds.png" i18n-alt alt=""/>
</ng-container>
<ng-container *ngIf="slip !== 'hold_shelf_slip'">
<strong i18n>Transit Slip</strong><br/>
- <img class="p-2" src="/images/transit.png" i18n-alt alt="transit van icon"/>
+ <img class="p-2" src="/images/transit.png" i18n-alt alt=""/>
</ng-container>
</h4>
<button type="button" class="btn-close btn-close-white"
diff --git a/Open-ILS/src/eg2/src/app/staff/share/holdings/mark-damaged-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/share/holdings/mark-damaged-dialog.component.html
index fe92947972..6f15c5a5d7 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/holdings/mark-damaged-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/share/holdings/mark-damaged-dialog.component.html
@@ -45,7 +45,7 @@
<li class="list-group-item">
<span i18n>
Calucated fine amount is
- <span class="fw-bold text-danger">
+ <span class="badge badge-danger fs-6">
{{chargeResponse.charge | currency}}
</span>
</span>
@@ -53,18 +53,18 @@
<ng-container *ngIf="amountChangeRequested">
<li class="list-group-item">
<div class="row">
- <div class="col-lg-3" i18n>Billing Type</div>
+ <label class="col-lg-3 col-form-label" for="billingType" i18n>Billing Type</label>
<div class="col-lg-6">
<eg-combobox
placeholder="Billing Type..." i18n-placeholder
- (onChange)="newBtype = $event.id"
+ (onChange)="newBtype = $event.id" domId="billingType"
[entries]="billingTypes"></eg-combobox>
</div>
</div>
</li>
<li class="list-group-item">
<div class="row">
- <div class="col-lg-3" i18n>Charge Amount</div>
+ <label class="col-lg-3 col-form-label" for="newCharge" i18n>Charge Amount</label>
<div class="col-lg-6">
<input class="form-control" type="number" step="0.01" min="0"
[(ngModel)]="newCharge"/>
@@ -73,10 +73,10 @@
</li>
<li class="list-group-item">
<div class="row">
- <div class="col-lg-3" i18n>Note</div>
+ <label class="col-lg-3 col-form-label" for="newNote" i18n>Note</label>
<div class="col-lg-6">
<textarea class="form-control" rows="3"
- [(ngModel)]="newNote"></textarea>
+ [(ngModel)]="newNote" id="newNote"></textarea>
</div>
</div>
</li>
diff --git a/Open-ILS/src/eg2/src/app/staff/share/holdings/mark-discard-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/share/holdings/mark-discard-dialog.component.html
index a5c86c4ba8..58f9025efe 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/holdings/mark-discard-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/share/holdings/mark-discard-dialog.component.html
@@ -17,12 +17,12 @@
<div class="row d-flex justify-content-center">
<h5>Mark {{copyIds.length}} Item(s) Discard?</h5>
</div>
- <div class="row" *ngIf="numSucceeded > 0">
+ <div class="row" *ngIf="numSucceeded > 0" role="status">
<div class="col-lg-12" i18n>
{{numSucceeded}} Items(s) Successfully Marked Discard
</div>
</div>
- <div class="row" *ngIf="numFailed > 0">
+ <div class="row" *ngIf="numFailed > 0" role="status">
<div class="col-lg-12">
<div class="alert alert-warning">
{{numFailed}} Items(s) Failed to be Marked Discard
diff --git a/Open-ILS/src/eg2/src/app/staff/share/holdings/mark-missing-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/share/holdings/mark-missing-dialog.component.html
index 91d0a0698e..7985e30be9 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/holdings/mark-missing-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/share/holdings/mark-missing-dialog.component.html
@@ -17,12 +17,12 @@
<div class="row d-flex justify-content-center">
<h5 i18n>Mark {{copyIds.length}} Item(s) Missing?</h5>
</div>
- <div class="row" *ngIf="numSucceeded > 0">
+ <div class="row" *ngIf="numSucceeded > 0" role="status">
<div class="col-lg-12" i18n>
{{numSucceeded}} Items(s) Successfully Marked Missing
</div>
</div>
- <div class="row" *ngIf="numFailed > 0">
+ <div class="row" *ngIf="numFailed > 0" role="status">
<div class="col-lg-12">
<div class="alert alert-warning" i18n>
{{numFailed}} Items(s) Failed to be Marked Missing
diff --git a/Open-ILS/src/eg2/src/app/staff/share/holdings/replace-barcode-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/share/holdings/replace-barcode-dialog.component.html
index cf49f66a37..08cb026e75 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/holdings/replace-barcode-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/share/holdings/replace-barcode-dialog.component.html
@@ -25,10 +25,10 @@
<div class="col-log-8">
<input type="text" class="form-control" [required]="true"
[(ngModel)]="newBarcode" (keyup)="barcodeExists=false"
- id="new-barcode-input"/>
+ id="new-barcode-input" aria-describedby="barcodeExists-error" />
</div>
</div>
- <div class="row d-flex pt-2 justify-content-center" *ngIf="barcodeExists">
+ <div class="row d-flex pt-2 justify-content-center" *ngIf="barcodeExists" id="barcodeExists-error">
<div class="alert alert-danger" i18n>
Barcode <span class="fw-bold">{{newBarcode}}</span> is already in use.
</div>
diff --git a/Open-ILS/src/eg2/src/app/staff/share/holds/cancel-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/share/holds/cancel-dialog.component.html
index 472897a46f..11ebb54413 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/holds/cancel-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/share/holds/cancel-dialog.component.html
@@ -36,11 +36,11 @@
[(ngModel)]="cancelNote"></textarea>
</div>
</div>
- <div class="row mt-2" *ngIf="numSucceeded > 0">
+ <div class="row mt-2" *ngIf="numSucceeded > 0" role="status">
<div class="col-lg-12" i18n>
{{numSucceeded}} Hold(s) Successfully Canceled
</div>
- <div class="row" *ngIf="numFailed > 0">
+ <div class="row" *ngIf="numFailed > 0" role="status">
<div class="col-lg-12">
<div class="alert alert-warning">
{{numFailed}} Hold(s) Failed to Cancel.
diff --git a/Open-ILS/src/eg2/src/app/staff/share/holds/retarget-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/share/holds/retarget-dialog.component.html
index 734362f066..71c3603521 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/holds/retarget-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/share/holds/retarget-dialog.component.html
@@ -15,12 +15,12 @@
<div class="row d-flex justify-content-center">
<h5>Retarget {{holdIds.length}} Holds?</h5>
</div>
- <div class="row" *ngIf="numSucceeded > 0">
+ <div class="row" *ngIf="numSucceeded > 0" role="status">
<div class="col-lg-12" i18n>
{{numSucceeded}} Hold(s) Successfully Retargeted
</div>
</div>
- <div class="row" *ngIf="numFailed > 0">
+ <div class="row" *ngIf="numFailed > 0" role="status">
<div class="col-lg-12">
<div class="alert alert-warning">
{{numFailed}} Hold(s) Failed to Retarget.
diff --git a/Open-ILS/src/eg2/src/app/staff/share/holds/transfer-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/share/holds/transfer-dialog.component.html
index 0e15fc4d72..779897b9c9 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/holds/transfer-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/share/holds/transfer-dialog.component.html
@@ -17,11 +17,11 @@
<div class="row d-flex justify-content-center">
<h5>Transfer {{holdIds.length}} Holds To Record {{transferTarget}}?</h5>
</div>
- <div class="row" *ngIf="numSucceeded > 0">
+ <div class="row" *ngIf="numSucceeded > 0" role="status">
<div class="col-lg-12" i18n>
{{numSucceeded}} Hold(s) Successfully Transferred.
</div>
- <div class="row" *ngIf="numFailed > 0">
+ <div class="row" *ngIf="numFailed > 0" role="status">
<div class="col-lg-12">
<div class="alert alert-warning">
{{numFailed}} Hold(s) Failed to Transfer.
diff --git a/Open-ILS/src/eg2/src/app/staff/share/holds/transfer-via-bibs-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/share/holds/transfer-via-bibs-dialog.component.html
index e838f67f10..207e37b394 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/holds/transfer-via-bibs-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/share/holds/transfer-via-bibs-dialog.component.html
@@ -17,11 +17,11 @@
<div class="row d-flex justify-content-center">
<h5>Transfer Holds For {{bibIds.length}} Bib(s) To Record {{transferTarget}}?</h5>
</div>
- <div class="row" *ngIf="numSucceeded > 0">
+ <div class="row" *ngIf="numSucceeded > 0" role="status">
<div class="col-lg-12" i18n>
Holds for {{numSucceeded}} Bib(s) Successfully Transferred.
</div>
- <div class="row" *ngIf="numFailed > 0">
+ <div class="row" *ngIf="numFailed > 0" role="status">
<div class="col-lg-12">
<div class="alert alert-warning">
Holds for {{numFailed}} Bibs(s) Failed to Transfer.
diff --git a/Open-ILS/src/eg2/src/app/staff/share/patron/note-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/share/patron/note-dialog.component.html
index 182801caad..112f76912b 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/patron/note-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/share/patron/note-dialog.component.html
@@ -31,7 +31,7 @@
</div>
<div class="row d-flex p-3">
<div class="col-md-6">
- <label for="penalty_type" i18n>Penalty Type</label>
+ <label class="form-label" for="penalty_type" i18n>Penalty Type</label>
<eg-combobox name="penaltyTypeId" [selectedId]="penaltyTypeId"
[disabled]="readOnly || (note?.pub() && note.read_date()) || note?.isdeleted() || note?.stop_date()"
[(ngModel)]="penaltyTypeFromSelect" (onChange)="set_penalty($event?.id)"
@@ -43,7 +43,7 @@
</div>
<div class="col-md-6">
<div>
- <label for="org_depth" i18n>Org Depth</label>
+ <label class="form-label" for="org_depth" i18n>Org Depth</label>
<eg-org-depth-selector domId="org_depth" [contextOrgId]="auth.user().ws_ou()" (depthChange)="onDepthChange($event)"
[disabled]="readOnly || (note?.pub() && note.read_date()) || note?.isdeleted() || note?.stop_date()">
</eg-org-depth-selector>
@@ -87,7 +87,7 @@
</div>
<div class="form-group row pad-vert">
<div class="col-md-12">
- <label for="note_title" i18n>Note Title</label>
+ <label class="form-label" for="note_title" i18n>Note Title</label>
<textarea class="form-control" id="note_title" name="title" [(ngModel)]="title"
[disabled]="readOnly || (note?.pub() && note.read_date()) || note?.isdeleted() || note?.stop_date()">
</textarea>
@@ -95,7 +95,7 @@
</div>
<div class="form-group row pad-vert">
<div class="col-md-12">
- <label for="note_text" i18n>Note Text</label>
+ <label class="form-label" for="note_text" i18n>Note Text</label>
<textarea class="form-control" id="note_text" name="note" [(ngModel)]="message"
[disabled]="readOnly || (note?.pub() && note.read_date()) || note?.isdeleted() || note?.stop_date()">
</textarea>
-----------------------------------------------------------------------
Summary of changes:
.../disencumber-charge-dialog.component.html | 36 +++++++++++++++-------
...add-extra-items-for-order-dialog.component.html | 25 +++++++--------
.../acq/lineitem/add-to-po-dialog.component.html | 3 +-
.../lineitem/claim-policy-dialog.component.html | 2 +-
.../po/disencumber-charge-dialog.component.html | 22 +++++++------
.../search/picklist-clone-dialog.component.html | 2 +-
.../search/picklist-create-dialog.component.html | 2 +-
.../search/picklist-merge-dialog.component.html | 4 +--
.../search-filter/query-dialog.component.html | 12 ++++----
.../server/perm-group-map-dialog.component.html | 16 ++--------
.../cat/authority/merge-dialog.component.html | 7 ++---
.../record/add-to-carousel-dialog.component.html | 4 +--
.../upload-jacket-image-dialog.component.html | 13 +++-----
.../staff/catalog/search-templates.component.html | 5 ++-
.../app/staff/circ/patron/barcodes.component.html | 7 +++--
.../circ/patron/hold-notify-update.component.html | 2 +-
.../circ/patron/secondary-groups.component.html | 4 +--
.../full/folder-share-org-dialog.component.html | 6 ++--
.../share/billing/billing-dialog.component.html | 10 +++---
.../booking/make-bookable-dialog.component.html | 2 +-
.../share/circ/backdate-dialog.component.html | 4 +--
.../circ/claims-returned-dialog.component.html | 6 ++--
.../share/circ/due-date-dialog.component.html | 6 ++--
.../staff/share/circ/precat-dialog.component.html | 14 ++++-----
.../staff/share/circ/route-dialog.component.html | 4 +--
.../holdings/mark-damaged-dialog.component.html | 12 ++++----
.../holdings/mark-discard-dialog.component.html | 4 +--
.../holdings/mark-missing-dialog.component.html | 4 +--
.../holdings/replace-barcode-dialog.component.html | 4 +--
.../staff/share/holds/cancel-dialog.component.html | 4 +--
.../share/holds/retarget-dialog.component.html | 4 +--
.../share/holds/transfer-dialog.component.html | 4 +--
.../holds/transfer-via-bibs-dialog.component.html | 4 +--
.../staff/share/patron/note-dialog.component.html | 8 ++---
34 files changed, 133 insertions(+), 133 deletions(-)
hooks/post-receive
--
Evergreen ILS
1
0

[GIT] Evergreen ILS branch main updated. 6c2ff5aa4f23388700e7130e6b472d5387313b79
by Git User 03 Apr '25
by Git User 03 Apr '25
03 Apr '25
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Evergreen ILS".
The branch, main has been updated
via 6c2ff5aa4f23388700e7130e6b472d5387313b79 (commit)
from 62002e41e6c13144cfedf2e233f6025abba2303d (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 6c2ff5aa4f23388700e7130e6b472d5387313b79
Author: Stephanie Leary <stephanie.leary(a)equinoxoli.org>
Date: Tue Mar 18 15:24:11 2025 +0000
LP2103567 modal form label and status cleanup
Adds labels to several forms contained in modal dialogs. Also adds
role="status" to obvious status messages to turn them into ARIA live
regions.
Release-note: Adds form labels and ARIA status roles to forms in dialogs
Signed-off-by: Stephanie Leary <stephanie.leary(a)equinoxoli.org>
Signed-off-by: Terran McCanna <tmccanna(a)georgialibraries.org>
diff --git a/Open-ILS/src/eg2/src/app/staff/acq/invoice/disencumber-charge-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/acq/invoice/disencumber-charge-dialog.component.html
index 79f540bb28..8e11bf067d 100644
--- a/Open-ILS/src/eg2/src/app/staff/acq/invoice/disencumber-charge-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/acq/invoice/disencumber-charge-dialog.component.html
@@ -7,39 +7,53 @@
</div>
<div class="modal-body">
<div class="d-flex">
- <div class="flex-2" i18n>Charge:</div>
+ <div class="flex-2">
+ <label for="inv_item_type" class="form-label" i18n>Charge:</label>
+ </div>
<div class="flex-3">
<eg-combobox idlClass="aiit" [selectedId]="charge.inv_item_type()"
- [readOnly]="true"></eg-combobox>
+ [readOnly]="true" domId="inv_item_type"></eg-combobox>
</div>
</div>
<div class="d-flex">
- <div class="flex-2" i18n>Amount:</div>
- <div class="flex-3">{{charge.cost_billed()}}</div>
+ <div class="flex-2">
+ <label for="cost_billed" class="form-label" i18n>Amount:</label>
+ </div>
+ <div class="flex-3">
+ <output id="cost_billed">{{charge.cost_billed()}}</output>
+ </div>
</div>
<div class="d-flex">
- <div class="flex-2" i18n>Original Fund:</div>
+ <div class="flex-2">
+ <label for="charge_fund" class="form-label" i18n>Original Fund:</label>
+ </div>
<div class="flex-3">
<eg-combobox idlClass="acqf" [selectedId]="charge.fund()"
- [readOnly]="true"></eg-combobox>
+ [readOnly]="true" domId="charge_fund"></eg-combobox>
</div>
</div>
<div class="d-flex">
- <div class="flex-2" i18n>Fund Debited:</div>
+ <div class="flex-2">
+ <label for="debit_fund" class="form-label" i18n>Fund Debited:</label>
+ </div>
<div class="flex-3">
<eg-combobox idlClass="acqf" [selectedId]="charge.fund_debit().fund()"
- [readOnly]="true"></eg-combobox>
+ [readOnly]="true" domId="debit_fund"></eg-combobox>
</div>
</div>
<div class="d-flex">
- <div class="flex-2" i18n>Amount Encumbered:</div>
- <div class="flex-3">{{charge.fund_debit().amount()}}</div>
+ <div class="flex-2">
+ <label for="amount_encumbered" class="form-label" i18n>Amount Encumbered:</label>
+ </div>
+ <div class="flex-3">
+ <output id="amount_encumbered">{{charge.fund_debit().amount()}}</output>
+ </div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-success"
(click)="close(true)" i18n>Disencumber</button>
- <button type="button" class="btn btn-warning"
+ <button type="button" class="btn btn-normal"
(click)="close()" i18n>Cancel</button>
</div>
</form>
diff --git a/Open-ILS/src/eg2/src/app/staff/acq/lineitem/add-extra-items-for-order-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/acq/lineitem/add-extra-items-for-order-dialog.component.html
index 7bd66705ef..86b889616a 100644
--- a/Open-ILS/src/eg2/src/app/staff/acq/lineitem/add-extra-items-for-order-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/acq/lineitem/add-extra-items-for-order-dialog.component.html
@@ -1,4 +1,4 @@
-<ng-template #dialogContent>
+<ng-template #dialogContent>
<form class="form-validated">
<div class="modal-header">
<h3 class="modal-title" i18n>Add Extra Items To Order</h3>
@@ -7,7 +7,8 @@
</div>
<div class="modal-body">
<h4 i18n>You are attempting to invoice {{extra_count}} more copy or copies than originally ordered. To add these items to the original purchase order, select a fund and choose 'Add New Items' below. If you do this, it will happen immediately, whether you save changes to the invoice or not.</h4>
- <eg-combobox idlClass="acqf" name="fund"
+ <label for="fund" class="form-label" i18n>Fund:</label>
+ <eg-combobox idlClass="acqf" name="fund" domId="fund"
i18n-placeholder placeholder="Fund..."
[asyncSupportsEmptyTermClick]="true"
[required]="true"
@@ -16,24 +17,24 @@
[(ngModel)]="fund" (ngModelChange)="fundSelected($event)"></eg-combobox>
</div>
<div class="row" style="margin-left: 1.33em">
- <div class="col"><label i18n>Allocation Total</label></div>
- <div class="col">{{fundSummary?.allocation_total | currency}}</div>
+ <label class="col-form-label" for="allocation_total" i18n>Allocation Total</label>
+ <div class="col"><output id="allocation_total">{{fundSummary?.allocation_total | currency}}</output></div>
</div>
<div class="row" style="margin-left: 1.33em">
- <div class="col"><label i18n>Combined Balance</label></div>
- <div class="col">{{fundSummary?.combined_balance | currency}}</div>
+ <label class="col-form-label" for="combined_balance" i18n>Combined Balance</label>
+ <div class="col"><output id="combined_balance">{{fundSummary?.combined_balance | currency}}</output></div>
</div>
<div class="row" style="margin-left: 1.33em">
- <div class="col"><label i18n>Encumbrance Total</label></div>
- <div class="col">{{fundSummary?.encumbrance_total | currency}}</div>
+ <label class="col-form-label" for="encumbrance_total" i18n>Encumbrance Total</label>
+ <div class="col"><output id="encumbrance_total">{{fundSummary?.encumbrance_total | currency}}</output></div>
</div>
<div class="row" style="margin-left: 1.33em">
- <div class="col"><label i18n>Debit Total</label></div>
- <div class="col">{{fundSummary?.debit_total | currency}}</div>
+ <label class="col-form-label" for="debit_total" i18n>Debit Total</label>
+ <div class="col"><output id="debit_total">{{fundSummary?.debit_total | currency}}</output></div>
</div>
<div class="row" style="margin-left: 1.33em">
- <div class="col"><label i18n>Spent Total</label></div>
- <div class="col">{{fundSummary?.spent_total | currency}}</div>
+ <label class="col-form-label" for="spent_total" i18n>Spent Total</label>
+ <div class="col"><output id="spent_total">{{fundSummary?.spent_total | currency}}</output></div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-success" [disabled]="!fund"
diff --git a/Open-ILS/src/eg2/src/app/staff/acq/lineitem/add-to-po-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/acq/lineitem/add-to-po-dialog.component.html
index 45924f9f46..3876b34924 100644
--- a/Open-ILS/src/eg2/src/app/staff/acq/lineitem/add-to-po-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/acq/lineitem/add-to-po-dialog.component.html
@@ -13,8 +13,9 @@
</h4>
<h4 i18n>Please select a PO and click "Add to Purchase Order" to add the line items,
or "Exit Dialog" to exit without adding the line items to a PO.</h4>
+ <label class="form-label" i18n>PO:</label>
<eg-combobox domId="acq-add-to-po-dialog" name="acq-add-to-po-dialog"
- [asyncSupportsEmptyTermClick]="true"
+ [asyncSupportsEmptyTermClick]="true" domId="po_to_add"
idlClass="acqpo" [idlQueryAnd]="{state: ['new', 'pending']}"
idlIncludeLibraryInLabel="ordering_agency"
[(ngModel)]="po"></eg-combobox>
diff --git a/Open-ILS/src/eg2/src/app/staff/acq/lineitem/claim-policy-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/acq/lineitem/claim-policy-dialog.component.html
index 54484da0fc..5934f957e4 100644
--- a/Open-ILS/src/eg2/src/app/staff/acq/lineitem/claim-policy-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/acq/lineitem/claim-policy-dialog.component.html
@@ -11,7 +11,7 @@
{{id}}<span *ngIf="!isLast">,</span>
</span>
</h4>
- <h4 i18n>Select a claim policy:</h4>
+ <label for="acq-claim-policy-dialog" i18n>Select a claim policy:</label>
<eg-combobox domId="acq-claim-policy-dialog" name="acq-claim-policy-dialog"
[asyncSupportsEmptyTermClick]="true"
idlClass="acqclp" [(ngModel)]="claimPolicy"></eg-combobox>
diff --git a/Open-ILS/src/eg2/src/app/staff/acq/po/disencumber-charge-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/acq/po/disencumber-charge-dialog.component.html
index c52ad3bb4d..b2d71a37c5 100644
--- a/Open-ILS/src/eg2/src/app/staff/acq/po/disencumber-charge-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/acq/po/disencumber-charge-dialog.component.html
@@ -7,33 +7,35 @@
</div>
<div class="modal-body">
<div class="d-flex">
- <div class="flex-2" i18n>Charge:</div>
+ <div class="flex-2">
+ <label class="form-label" for="inv_item_type" i18n>Charge:</label>
+ </div>
<div class="flex-3">
- <eg-combobox idlClass="aiit" [selectedId]="charge.inv_item_type()"
+ <eg-combobox domId="inv_item_type" idlClass="aiit" [selectedId]="charge.inv_item_type()"
[readOnly]="true"></eg-combobox>
</div>
</div>
<div class="d-flex">
- <div class="flex-2" i18n>Amount:</div>
- <div class="flex-3">{{charge.estimated_cost()}}</div>
+ <div class="flex-2"><label for="estimated_cost" class="form-label" i18n>Amount:</label></div>
+ <div class="flex-3"><output id="estimated_cost">{{charge.estimated_cost()}}</output></div>
</div>
<div class="d-flex">
- <div class="flex-2" i18n>Original Fund:</div>
+ <div class="flex-2"><label for="charge_fund" class="form-label" i18n>Original Fund:</label></div>
<div class="flex-3">
- <eg-combobox idlClass="acqf" [selectedId]="charge.fund()"
+ <eg-combobox domId="charge_fund" idlClass="acqf" [selectedId]="charge.fund()"
[readOnly]="true"></eg-combobox>
</div>
</div>
<div class="d-flex">
- <div class="flex-2" i18n>Fund Debited:</div>
+ <div class="flex-2"><label for="fund_debit" class="form-label" i18n>Fund Debited:</label></div>
<div class="flex-3">
- <eg-combobox idlClass="acqf" [selectedId]="charge.fund_debit().fund()"
+ <eg-combobox id="fund_debit" idlClass="acqf" [selectedId]="charge.fund_debit().fund()"
[readOnly]="true"></eg-combobox>
</div>
</div>
<div class="d-flex">
- <div class="flex-2" i18n>Amount Encumbered:</div>
- <div class="flex-3">{{charge.fund_debit().amount()}}</div>
+ <div class="flex-2"><label for="fund_debit_amount" class="form-label" i18n>Amount Encumbered:</label></div>
+ <div class="flex-3"><output id="fund_debit_amount">{{charge.fund_debit().amount()}}</output></div>
</div>
</div>
<div class="modal-footer">
diff --git a/Open-ILS/src/eg2/src/app/staff/acq/search/picklist-clone-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/acq/search/picklist-clone-dialog.component.html
index c51f68377f..1721a319b3 100644
--- a/Open-ILS/src/eg2/src/app/staff/acq/search/picklist-clone-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/acq/search/picklist-clone-dialog.component.html
@@ -6,7 +6,7 @@
i18n-aria-label aria-label="Close dialog" (click)="close()"></button>
</div>
<div class="modal-body">
- <h4 i18n>Selection list name:</h4>
+ <label for="create-picklist-name" class="form-label" i18n>Selection list name:</label>
<input type="text" id="create-picklist-name" required
[ngModelOptions]="{standalone: true}"
class="form-control" [(ngModel)]="selectionListName">
diff --git a/Open-ILS/src/eg2/src/app/staff/acq/search/picklist-create-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/acq/search/picklist-create-dialog.component.html
index 1b5bc0bdd3..d4256ce232 100644
--- a/Open-ILS/src/eg2/src/app/staff/acq/search/picklist-create-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/acq/search/picklist-create-dialog.component.html
@@ -6,7 +6,7 @@
i18n-aria-label aria-label="Close dialog" (click)="close()"></button>
</div>
<div class="modal-body">
- <h4 i18n>Selection list name:</h4>
+ <label class="form-label" for="create-picklist-name" i18n>Selection list name:</label>
<input type="text" id="create-picklist-name" required
[ngModelOptions]="{standalone: true}" required
class="form-control col-lg-7" [(ngModel)]="selectionListName">
diff --git a/Open-ILS/src/eg2/src/app/staff/acq/search/picklist-merge-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/acq/search/picklist-merge-dialog.component.html
index 46574d8184..892c613452 100644
--- a/Open-ILS/src/eg2/src/app/staff/acq/search/picklist-merge-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/acq/search/picklist-merge-dialog.component.html
@@ -6,8 +6,8 @@
i18n-aria-label aria-label="Close dialog" (click)="close()"></button>
</div>
<div class="modal-body">
- <h4 i18n>Lead Selection List:</h4>
- <select [(ngModel)]="leadList" [ngModelOptions]="{standalone: true}" required>
+ <label class="form-label" for="leadList" i18n>Lead Selection List:</label>
+ <select id="leadList" [(ngModel)]="leadList" [ngModelOptions]="{standalone: true}" required>
<option *ngFor="let list of selectedLists"
value="{{list.id()}}">{{list.name()}}</option>
</select>
diff --git a/Open-ILS/src/eg2/src/app/staff/admin/local/search-filter/query-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/admin/local/search-filter/query-dialog.component.html
index 9d938a118b..787059de97 100644
--- a/Open-ILS/src/eg2/src/app/staff/admin/local/search-filter/query-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/admin/local/search-filter/query-dialog.component.html
@@ -8,27 +8,27 @@
</div>
<div class="modal-body">
<div class="row">
- <div class="col-lg-3 fw-bold" i18n>Query Label</div>
+ <label class="col-lg-3 col-form-label" for="query_label" i18n>Query Label</label>
<div class="col-lg-9">
- <input type="text" class="form-control" name="query_label"
+ <input type="text" class="form-control" id="query_label" name="query_label"
placeholder="Query Label"
i18n-placeholder required
[(ngModel)]="newQueryLabel"/>
</div>
</div>
<div class="row mt-3">
- <div class="col-lg-3 fw-bold" i18n>Query Text</div>
+ <label class="col-lg-3 col-form-label" for="query_text" i18n>Query Text</label>
<div class="col-lg-9">
- <input type="text" class="form-control" name="query_text"
+ <input type="text" class="form-control" id="query_text" name="query_text"
placeholder="Query Text"
i18n-placeholder required
[(ngModel)]="newQueryText"/>
</div>
</div>
<div class="row mt-3">
- <div class="col-lg-3 fw-bold" i18n>Position</div>
+ <label class="col-lg-3 col-form-label" for="pos" i18n>Position</label>
<div class="col-lg-9">
- <input type="number" class="form-control" name="pos"
+ <input type="number" class="form-control" id="pos" name="pos"
placeholder="Position"
i18n-placeholder required
[(ngModel)]="newQueryPosition"/>
diff --git a/Open-ILS/src/eg2/src/app/staff/admin/server/perm-group-map-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/admin/server/perm-group-map-dialog.component.html
index edbe25c7ab..399077c50a 100644
--- a/Open-ILS/src/eg2/src/app/staff/admin/server/perm-group-map-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/admin/server/perm-group-map-dialog.component.html
@@ -11,9 +11,7 @@
<div class="col-lg-7">{{permGroup.name()}}</div>
</div>
<div class="row mt-1 pt-1">
- <div class="col-lg-5">
- <label for="select-perms" i18n>New Permission</label>
- </div>
+ <label class="col-lg-5 col-form-label" for="select-perms" i18n>New Permission</label>
<div class="col-lg-7">
<input type="text" id="select-perms" #selectPerms
[ngbTypeahead]="permEntries"
@@ -32,22 +30,14 @@
</div>
</div>
<div class="row row-cols-5 mt-1 pt-1">
- <div class="col">
- <label [attr.for]="'depth-'+map.controls.id.value"
- i18n>Depth
- </label>
- </div>
+ <label class="col-form-label" for="depth-{{map.controls.id.value}}" i18n>Depth</label>
<div class="col">
<select formControlName="depth" class="p-1"
id="depth-{{map.controls.id.value}}">
<option *ngFor="let d of orgDepths" value="{{d}}">{{d}}</option>
</select>
</div>
- <div class="col">
- <label [attr.for]="'grantable-'+map.controls.id.value"
- i18n>Grantable
- </label>
- </div>
+ <label class="col-form-lalel" for="grantable-{{map.controls.id.value}}" i18n>Grantable</label>
<div class="col">
<input type="checkbox" formControlName="grantable"
id="grantable-{{map.controls.id.value}}">
diff --git a/Open-ILS/src/eg2/src/app/staff/cat/authority/merge-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/cat/authority/merge-dialog.component.html
index 849504049c..7e132cd4dd 100644
--- a/Open-ILS/src/eg2/src/app/staff/cat/authority/merge-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/cat/authority/merge-dialog.component.html
@@ -20,12 +20,11 @@
<div class="col-lg-2" i18n>Lead Record</div>
</div>
<div class="row" *ngFor="let data of authData">
- <div class="col-lg-2">
- <input type="radio" name="leadRecord"
+ <div class="col-lg-12 form-check">
+ <input type="radio" class="form-check-input" name="leadRecord" id="leadRecord-{{data.authority.id()}}"
[value]="data.authority.id()" [(ngModel)]="leadRecord"/>
+ <label class="form-check-label" for="leadRecord-{{data.authority.id()}}">#{{data.authority.id()}} {{data.heading}}</label>
</div>
- <div class="col-lg-1">#{{data.authority.id()}}</div>
- <div class="col-lg-6">{{data.heading}}</div>
</div>
</div>
<div class="modal-footer">
diff --git a/Open-ILS/src/eg2/src/app/staff/catalog/record/add-to-carousel-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/catalog/record/add-to-carousel-dialog.component.html
index fb86db026e..a9bbe64103 100644
--- a/Open-ILS/src/eg2/src/app/staff/catalog/record/add-to-carousel-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/catalog/record/add-to-carousel-dialog.component.html
@@ -15,9 +15,9 @@
<p> <a routerLink="/staff/admin/local/container/carousel" i18n>Would you like to add one?</a></p>
</div>
<div class="row" *ngIf="carousels.length">
- <div class="col-lg-3 fw-bold" i18n>Carousel</div>
+ <label class="col-lg-3 col-form-label" for="selectedCarousel" i18n>Carousel</label>
<div class="col-lg-5">
- <eg-combobox [entries]="formatCarouselEntries()" [formControl]="selectedCarousel">
+ <eg-combobox [entries]="formatCarouselEntries()" [formControl]="selectedCarousel" domId="selectedCarousel">
</eg-combobox>
</div>
</div>
diff --git a/Open-ILS/src/eg2/src/app/staff/catalog/record/upload-jacket-image-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/catalog/record/upload-jacket-image-dialog.component.html
index 4465cc7ca7..86f2569d00 100644
--- a/Open-ILS/src/eg2/src/app/staff/catalog/record/upload-jacket-image-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/catalog/record/upload-jacket-image-dialog.component.html
@@ -7,21 +7,16 @@
i18n-aria-label aria-label="Close dialog" (click)="clearErrors(); close(false)"></button>
</div>
<div class="modal-body">
- <!--<form method="POST" enctype="multipart/form-data" action="/jacket-upload">
- <input type="file" name="jacket_upload">
- <input type="text" name="ses">
- <input type="text" name="bib_record">
- <input type="submit">
- </form>-->
- <input type="file" class="file-input" (change)="onFileSelected($event)" #fileUpload>
- <div class="progress" *ngIf="uploading">
+ <label for="file" class="form-label" i18n>Choose file:</label>
+ <input type="file" id="file" class="file-input" (change)="onFileSelected($event)" #fileUpload>
+ <div class="progress" role="status" *ngIf="uploading">
<div class="progress-bar progress-bar-striped active w-100"
role="progressbar" aria-valuenow="100"
aria-valuemin="0" aria-valuemax="100">
<span i18n>Uploading..</span>
</div>
</div>
- <div style="margin-top: 20px" *ngIf="errorUploading">
+ <div class="alert alert-danger mt-3" role="status" *ngIf="errorUploading">
<span *ngIf="errorAuthentication" class="alert alert-danger" i18n>Not authenticated. Expired login?</span>
<span *ngIf="errorAuthorization" class="alert alert-danger" i18n>Not authorized. Check your permissions.</span>
<span *ngIf="errorNotFound" class="alert alert-danger" i18n>Not found. Bib record deleted?</span>
diff --git a/Open-ILS/src/eg2/src/app/staff/catalog/search-templates.component.html b/Open-ILS/src/eg2/src/app/staff/catalog/search-templates.component.html
index 348941fa14..56ab76b348 100644
--- a/Open-ILS/src/eg2/src/app/staff/catalog/search-templates.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/catalog/search-templates.component.html
@@ -80,10 +80,9 @@
</div>
<div class="modal-body">
<div class="row">
- <div class="col-lg-4" i18n id="templateNameLabel">Template Name:</div>
+ <label class="col-lg-4 col-form-label" i18n for="templateName">Template Name:</label>
<div class="col-lg-6">
- <input class="form-control" [(ngModel)]="templateName"
- aria-labelledby="templateNameLabel"/>
+ <input class="form-control" [(ngModel)]="templateName" id="templateName" />
</div>
</div>
</div>
diff --git a/Open-ILS/src/eg2/src/app/staff/circ/patron/barcodes.component.html b/Open-ILS/src/eg2/src/app/staff/circ/patron/barcodes.component.html
index b08faedaba..db79398ebc 100644
--- a/Open-ILS/src/eg2/src/app/staff/circ/patron/barcodes.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/circ/patron/barcodes.component.html
@@ -14,17 +14,18 @@
<div class="col-lg-4 fw-bold" i18n>Primary</div>
</div>
<div class="row mt-2 pt-2" *ngFor="let card of patron.cards()">
- <div class="col-lg-4" i18n>
+ <label class="col-lg-4 col-form-label" for="card-{{card.id()}}" i18n>
{{card.barcode()}}
- </div>
+ </label>
<div class="col-lg-4" i18n>
<input type="checkbox" [disabled]="!myPerms.UPDATE_PATRON_ACTIVE_CARD"
- (ngModelChange)="activeChange(card, $event)"
+ (ngModelChange)="activeChange(card, $event)" id="card-{{card.id()}}"
class="form-check-input ms-0" [ngModel]="card.active() === 't'">
</div>
<div class="col-lg-4" i18n>
<input type="radio" name="primary-card" [value]="card.id()"
[disabled]="!myPerms.UPDATE_PATRON_PRIMARY_CARD"
+ aria-label="Use {{card.barcode()}} as primary card" i18n-aria-label
class="form-check-input ms-0" [(ngModel)]="primaryCard">
</div>
</div>
diff --git a/Open-ILS/src/eg2/src/app/staff/circ/patron/hold-notify-update.component.html b/Open-ILS/src/eg2/src/app/staff/circ/patron/hold-notify-update.component.html
index ab5eca017d..e9a0eda74c 100644
--- a/Open-ILS/src/eg2/src/app/staff/circ/patron/hold-notify-update.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/circ/patron/hold-notify-update.component.html
@@ -8,7 +8,7 @@
<div class="row mt-2" *ngFor="let mod of mods">
<div class="col-lg-12">
- <div [ngSwitch]="mod.field" class="mt-2 mb-2">
+ <div [ngSwitch]="mod.field" role="status" class="mt-2 mb-2">
<span *ngSwitchCase="'phone_notify'">
<span class="me-2">You have set Notify by Phone to</span>
<eg-bool [value]="mod.newValue"></eg-bool>
diff --git a/Open-ILS/src/eg2/src/app/staff/circ/patron/secondary-groups.component.html b/Open-ILS/src/eg2/src/app/staff/circ/patron/secondary-groups.component.html
index f46ce2dc4b..ada5194b4f 100644
--- a/Open-ILS/src/eg2/src/app/staff/circ/patron/secondary-groups.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/circ/patron/secondary-groups.component.html
@@ -21,9 +21,9 @@
<div class="row mt-2" *ngFor="let grp of secondaryGroups">
<div class="col-lg-6">{{grp.name()}}</div>
<div class="col-lg-6">
- <button type="button" class="btn btn-danger" *ngIf="!grp.isdeleted()"
+ <button type="button" class="btn btn-destroy" *ngIf="!grp.isdeleted()"
(click)="grp.isdeleted(true)" i18n>Remove</button>
- <button type="button" class="btn btn-info" *ngIf="grp.isdeleted()"
+ <button type="button" class="btn btn-normal" *ngIf="grp.isdeleted()"
(click)="grp.isdeleted(false)" i18n>Un-Delete</button>
</div>
</div>
diff --git a/Open-ILS/src/eg2/src/app/staff/reporter/full/folder-share-org-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/reporter/full/folder-share-org-dialog.component.html
index c09e361b8b..a57007a9b9 100644
--- a/Open-ILS/src/eg2/src/app/staff/reporter/full/folder-share-org-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/reporter/full/folder-share-org-dialog.component.html
@@ -12,10 +12,8 @@
</div>
<div class="row mt-3">
<div class="col-md-12">
- <div class="input-group">
- <div class="input-group-text" i18n>Share with:</div>
- <eg-org-select [hideOrgs]="notMyOrgs()" [applyDefault]=true (onChange)="contextOrg = $event"/>
- </div>
+ <label class="form-label" for="shareOrgs" i18n>Share with:</label>
+ <eg-org-select domId="shareOrgs" [hideOrgs]="notMyOrgs()" [applyDefault]=true (onChange)="contextOrg = $event"/>
</div>
</div>
</div>
diff --git a/Open-ILS/src/eg2/src/app/staff/share/billing/billing-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/share/billing/billing-dialog.component.html
index e4b1a1fffa..63d21a5965 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/billing/billing-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/share/billing/billing-dialog.component.html
@@ -3,7 +3,7 @@
<!-- putting this here guarantees it's available to ViewChild before open -->
<ng-template #bTypes>
- <eg-combobox #bTypeCbox [entries]="billingTypes"
+ <eg-combobox #bTypeCbox domId="billing_type" [entries]="billingTypes"
[required]="true" (onChange)="btChanged($event)"></eg-combobox>
</ng-template>
@@ -55,22 +55,22 @@
<div class="col-lg-8" i18n>{{hereOrg}}</div>
</div>
<div class="row mt-2">
- <div class="col-lg-4" i18n>Billing Type</div>
+ <label class="col-lg-4 col-form-label" for="billing_type" i18n>Billing Type</label>
<div class="col-lg-8">
<ng-container *ngTemplateOutlet="bTypes"></ng-container>
</div>
</div>
<div class="row mt-2">
- <div class="col-lg-4" i18n>Amount</div>
+ <label class="col-lg-4 col-form-label" for="amount-input" i18n>Amount</label>
<div class="col-lg-8" i18n>
<input type="number" class="form-control" id="amount-input"
required [(ngModel)]="amount" [min]="0"/>
</div>
</div>
<div class="row mt-2">
- <div class="col-lg-4" i18n>Note</div>
+ <label class="col-lg-4 col-form-label" for="note" i18n>Note</label>
<div class="col-lg-8" i18n>
- <textarea class="form-control" [rows]="3" [(ngModel)]="note"></textarea>
+ <textarea class="form-control" id="note" [rows]="3" [(ngModel)]="note"></textarea>
</div>
</div>
</div>
diff --git a/Open-ILS/src/eg2/src/app/staff/share/booking/make-bookable-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/share/booking/make-bookable-dialog.component.html
index 4474a5835c..711c4abc24 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/booking/make-bookable-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/share/booking/make-bookable-dialog.component.html
@@ -19,7 +19,7 @@
<span i18n>Make {{copyIds.length}} Item(s) Bookable?</span>
</div>
</div>
- <div class="row" *ngIf="updateComplete">
+ <div class="row" *ngIf="updateComplete" role="status">
<div class="col-lg-12 d-flex flex-column">
<div i18n>{{numSucceeded}} Item(s) Made Bookable.</div>
<div class="mt-2">
diff --git a/Open-ILS/src/eg2/src/app/staff/share/circ/backdate-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/share/circ/backdate-dialog.component.html
index 74495f358b..7eda9d2fae 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/circ/backdate-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/share/circ/backdate-dialog.component.html
@@ -14,10 +14,10 @@
<div class="modal-body">
<h5 i18n>Backdating {{circIds.length}} circulaion(s)</h5>
<div class="row mt-3">
- <div class="col-lg-5" i18n>Effective Date:</div>
+ <label class="col-lg-5 col-form-label" for="effectiveDate" i18n>Effective Date:</label>
<div class="col-lg-7">
<eg-date-select [required]="true" [initialIso]="backdate"
- (onChangeAsIso)="backdate = $event">
+ (onChangeAsIso)="backdate = $event" domId="effectiveDate">
</eg-date-select>
</div>
</div>
diff --git a/Open-ILS/src/eg2/src/app/staff/share/circ/claims-returned-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/share/circ/claims-returned-dialog.component.html
index 8b140fefa4..94cbfb21e4 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/circ/claims-returned-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/share/circ/claims-returned-dialog.component.html
@@ -13,14 +13,14 @@
<div class="modal-body">
<h5 i18n>Marking Claims Returned for {{barcodes.length}} Item(s)</h5>
<div class="row mt-3">
- <div class="col-lg-6" i18n>Enter Claims Returned Date</div>
+ <label class="col-lg-6 col-form-label" for="returnDate" i18n>Enter Claims Returned Date</label>
<div class="col-lg-6">
- <eg-datetime-select [required]="true" [initialIso]="returnDate"
+ <eg-datetime-select domId="returnDate" [required]="true" [initialIso]="returnDate"
(onChangeAsIso)="returnDate = $event">
</eg-datetime-select>
</div>
</div>
- <div *ngIf="patronExceeds" class="row mt-3 mb-3 d-flex">
+ <div *ngIf="patronExceeds" class="row mt-3 mb-3 d-flex" role="status">
<div class="flex-1 p-2 me-2 alert alert-danger" i18n>
Patron exceeds claims returned count. Force this action?
</div>
diff --git a/Open-ILS/src/eg2/src/app/staff/share/circ/due-date-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/share/circ/due-date-dialog.component.html
index 30993d5bc5..6d40b0cda8 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/circ/due-date-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/share/circ/due-date-dialog.component.html
@@ -13,13 +13,13 @@
<h5 i18n>Modifying Due Date For {{circs.length}} Circulation(s)</h5>
<div class="row mt-3">
- <div class="col-lg-3" i18n>New Date</div>
+ <label class="col-lg-3 col-form-label" for="newDate" i18n>New Date</label>
<div class="col-lg-9">
- <eg-datetime-select [required]="true" (onChangeAsIso)="dueDateChange($event)">
+ <eg-datetime-select domId="newDate" [required]="true" (onChangeAsIso)="dueDateChange($event)">
</eg-datetime-select>
</div>
</div>
- <div class="row mt-3" *ngIf="!dueDateIso">
+ <div class="row mt-3" *ngIf="!dueDateIso" role="status">
<div class="col-lg-12 alert-danger" i18n>
Selected due date is not valid.
</div>
diff --git a/Open-ILS/src/eg2/src/app/staff/share/circ/precat-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/share/circ/precat-dialog.component.html
index be25f7acf2..4a20556c9f 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/circ/precat-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/share/circ/precat-dialog.component.html
@@ -7,7 +7,7 @@
<div class="modal-body">
<div class="row">
- <div class="col-lg-4" i18n>Title</div>
+ <label class="col-lg-4 col-form-label" for="precat-title-input" i18n>Title</label>
<div class="col-lg-8">
<input class="form-control" [(ngModel)]="values.dummy_title"
id='precat-title-input' i18n-placeholder placeholder="Title..."/>
@@ -15,25 +15,25 @@
</div>
<div class="row mt-2">
- <div class="col-lg-4" i18n>Author</div>
+ <label class="col-lg-4 col-form-label" for="dummy_author" i18n>Author</label>
<div class="col-lg-8">
- <input class="form-control" [(ngModel)]="values.dummy_author"
+ <input class="form-control" [(ngModel)]="values.dummy_author" id="dummy_author"
i18n-placeholder placeholder="Author..."/>
</div>
</div>
<div class="row mt-2">
- <div class="col-lg-4" i18n>ISBN</div>
+ <label class="col-lg-4 col-form-label" for="dummy_isbn" i18n>ISBN</label>
<div class="col-lg-8">
- <input class="form-control" [(ngModel)]="values.dummy_isbn"
+ <input class="form-control" [(ngModel)]="values.dummy_isbn" id="dummy_isbn"
i18n-placeholder placeholder="ISBN..."/>
</div>
</div>
<div class="row mt-2">
- <div class="col-lg-4" i18n>Circulation Modifier</div>
+ <label class="col-lg-4 col-form-label" for="circ_modifier" i18n>Circulation Modifier</label>
<div class="col-lg-8">
- <eg-combobox idlClass="ccm"
+ <eg-combobox idlClass="ccm" domId="circ_modifier"
i18n-placeholder placeholder="Circulation Modifier..."
(onChange)="values.circ_modifier = $event ? $event.id : null">
</eg-combobox>
diff --git a/Open-ILS/src/eg2/src/app/staff/share/circ/route-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/share/circ/route-dialog.component.html
index f906cfe478..bf076ee2d7 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/circ/route-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/share/circ/route-dialog.component.html
@@ -132,11 +132,11 @@
<h4>
<ng-container *ngIf="slip === 'hold_shelf_slip'">
<strong i18n>Hold Slip</strong><br/>
- <img class="p-2" src="/images/portal/holds.png" i18n-alt alt="holds icon"/>
+ <img class="p-2" src="/images/portal/holds.png" i18n-alt alt=""/>
</ng-container>
<ng-container *ngIf="slip !== 'hold_shelf_slip'">
<strong i18n>Transit Slip</strong><br/>
- <img class="p-2" src="/images/transit.png" i18n-alt alt="transit van icon"/>
+ <img class="p-2" src="/images/transit.png" i18n-alt alt=""/>
</ng-container>
</h4>
<button type="button" class="btn-close btn-close-white"
diff --git a/Open-ILS/src/eg2/src/app/staff/share/holdings/mark-damaged-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/share/holdings/mark-damaged-dialog.component.html
index fe92947972..6f15c5a5d7 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/holdings/mark-damaged-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/share/holdings/mark-damaged-dialog.component.html
@@ -45,7 +45,7 @@
<li class="list-group-item">
<span i18n>
Calucated fine amount is
- <span class="fw-bold text-danger">
+ <span class="badge badge-danger fs-6">
{{chargeResponse.charge | currency}}
</span>
</span>
@@ -53,18 +53,18 @@
<ng-container *ngIf="amountChangeRequested">
<li class="list-group-item">
<div class="row">
- <div class="col-lg-3" i18n>Billing Type</div>
+ <label class="col-lg-3 col-form-label" for="billingType" i18n>Billing Type</label>
<div class="col-lg-6">
<eg-combobox
placeholder="Billing Type..." i18n-placeholder
- (onChange)="newBtype = $event.id"
+ (onChange)="newBtype = $event.id" domId="billingType"
[entries]="billingTypes"></eg-combobox>
</div>
</div>
</li>
<li class="list-group-item">
<div class="row">
- <div class="col-lg-3" i18n>Charge Amount</div>
+ <label class="col-lg-3 col-form-label" for="newCharge" i18n>Charge Amount</label>
<div class="col-lg-6">
<input class="form-control" type="number" step="0.01" min="0"
[(ngModel)]="newCharge"/>
@@ -73,10 +73,10 @@
</li>
<li class="list-group-item">
<div class="row">
- <div class="col-lg-3" i18n>Note</div>
+ <label class="col-lg-3 col-form-label" for="newNote" i18n>Note</label>
<div class="col-lg-6">
<textarea class="form-control" rows="3"
- [(ngModel)]="newNote"></textarea>
+ [(ngModel)]="newNote" id="newNote"></textarea>
</div>
</div>
</li>
diff --git a/Open-ILS/src/eg2/src/app/staff/share/holdings/mark-discard-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/share/holdings/mark-discard-dialog.component.html
index a5c86c4ba8..58f9025efe 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/holdings/mark-discard-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/share/holdings/mark-discard-dialog.component.html
@@ -17,12 +17,12 @@
<div class="row d-flex justify-content-center">
<h5>Mark {{copyIds.length}} Item(s) Discard?</h5>
</div>
- <div class="row" *ngIf="numSucceeded > 0">
+ <div class="row" *ngIf="numSucceeded > 0" role="status">
<div class="col-lg-12" i18n>
{{numSucceeded}} Items(s) Successfully Marked Discard
</div>
</div>
- <div class="row" *ngIf="numFailed > 0">
+ <div class="row" *ngIf="numFailed > 0" role="status">
<div class="col-lg-12">
<div class="alert alert-warning">
{{numFailed}} Items(s) Failed to be Marked Discard
diff --git a/Open-ILS/src/eg2/src/app/staff/share/holdings/mark-missing-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/share/holdings/mark-missing-dialog.component.html
index 91d0a0698e..7985e30be9 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/holdings/mark-missing-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/share/holdings/mark-missing-dialog.component.html
@@ -17,12 +17,12 @@
<div class="row d-flex justify-content-center">
<h5 i18n>Mark {{copyIds.length}} Item(s) Missing?</h5>
</div>
- <div class="row" *ngIf="numSucceeded > 0">
+ <div class="row" *ngIf="numSucceeded > 0" role="status">
<div class="col-lg-12" i18n>
{{numSucceeded}} Items(s) Successfully Marked Missing
</div>
</div>
- <div class="row" *ngIf="numFailed > 0">
+ <div class="row" *ngIf="numFailed > 0" role="status">
<div class="col-lg-12">
<div class="alert alert-warning" i18n>
{{numFailed}} Items(s) Failed to be Marked Missing
diff --git a/Open-ILS/src/eg2/src/app/staff/share/holdings/replace-barcode-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/share/holdings/replace-barcode-dialog.component.html
index cf49f66a37..08cb026e75 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/holdings/replace-barcode-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/share/holdings/replace-barcode-dialog.component.html
@@ -25,10 +25,10 @@
<div class="col-log-8">
<input type="text" class="form-control" [required]="true"
[(ngModel)]="newBarcode" (keyup)="barcodeExists=false"
- id="new-barcode-input"/>
+ id="new-barcode-input" aria-describedby="barcodeExists-error" />
</div>
</div>
- <div class="row d-flex pt-2 justify-content-center" *ngIf="barcodeExists">
+ <div class="row d-flex pt-2 justify-content-center" *ngIf="barcodeExists" id="barcodeExists-error">
<div class="alert alert-danger" i18n>
Barcode <span class="fw-bold">{{newBarcode}}</span> is already in use.
</div>
diff --git a/Open-ILS/src/eg2/src/app/staff/share/holds/cancel-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/share/holds/cancel-dialog.component.html
index 472897a46f..11ebb54413 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/holds/cancel-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/share/holds/cancel-dialog.component.html
@@ -36,11 +36,11 @@
[(ngModel)]="cancelNote"></textarea>
</div>
</div>
- <div class="row mt-2" *ngIf="numSucceeded > 0">
+ <div class="row mt-2" *ngIf="numSucceeded > 0" role="status">
<div class="col-lg-12" i18n>
{{numSucceeded}} Hold(s) Successfully Canceled
</div>
- <div class="row" *ngIf="numFailed > 0">
+ <div class="row" *ngIf="numFailed > 0" role="status">
<div class="col-lg-12">
<div class="alert alert-warning">
{{numFailed}} Hold(s) Failed to Cancel.
diff --git a/Open-ILS/src/eg2/src/app/staff/share/holds/retarget-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/share/holds/retarget-dialog.component.html
index 734362f066..71c3603521 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/holds/retarget-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/share/holds/retarget-dialog.component.html
@@ -15,12 +15,12 @@
<div class="row d-flex justify-content-center">
<h5>Retarget {{holdIds.length}} Holds?</h5>
</div>
- <div class="row" *ngIf="numSucceeded > 0">
+ <div class="row" *ngIf="numSucceeded > 0" role="status">
<div class="col-lg-12" i18n>
{{numSucceeded}} Hold(s) Successfully Retargeted
</div>
</div>
- <div class="row" *ngIf="numFailed > 0">
+ <div class="row" *ngIf="numFailed > 0" role="status">
<div class="col-lg-12">
<div class="alert alert-warning">
{{numFailed}} Hold(s) Failed to Retarget.
diff --git a/Open-ILS/src/eg2/src/app/staff/share/holds/transfer-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/share/holds/transfer-dialog.component.html
index 0e15fc4d72..779897b9c9 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/holds/transfer-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/share/holds/transfer-dialog.component.html
@@ -17,11 +17,11 @@
<div class="row d-flex justify-content-center">
<h5>Transfer {{holdIds.length}} Holds To Record {{transferTarget}}?</h5>
</div>
- <div class="row" *ngIf="numSucceeded > 0">
+ <div class="row" *ngIf="numSucceeded > 0" role="status">
<div class="col-lg-12" i18n>
{{numSucceeded}} Hold(s) Successfully Transferred.
</div>
- <div class="row" *ngIf="numFailed > 0">
+ <div class="row" *ngIf="numFailed > 0" role="status">
<div class="col-lg-12">
<div class="alert alert-warning">
{{numFailed}} Hold(s) Failed to Transfer.
diff --git a/Open-ILS/src/eg2/src/app/staff/share/holds/transfer-via-bibs-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/share/holds/transfer-via-bibs-dialog.component.html
index e838f67f10..207e37b394 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/holds/transfer-via-bibs-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/share/holds/transfer-via-bibs-dialog.component.html
@@ -17,11 +17,11 @@
<div class="row d-flex justify-content-center">
<h5>Transfer Holds For {{bibIds.length}} Bib(s) To Record {{transferTarget}}?</h5>
</div>
- <div class="row" *ngIf="numSucceeded > 0">
+ <div class="row" *ngIf="numSucceeded > 0" role="status">
<div class="col-lg-12" i18n>
Holds for {{numSucceeded}} Bib(s) Successfully Transferred.
</div>
- <div class="row" *ngIf="numFailed > 0">
+ <div class="row" *ngIf="numFailed > 0" role="status">
<div class="col-lg-12">
<div class="alert alert-warning">
Holds for {{numFailed}} Bibs(s) Failed to Transfer.
diff --git a/Open-ILS/src/eg2/src/app/staff/share/patron/note-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/share/patron/note-dialog.component.html
index 182801caad..112f76912b 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/patron/note-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/share/patron/note-dialog.component.html
@@ -31,7 +31,7 @@
</div>
<div class="row d-flex p-3">
<div class="col-md-6">
- <label for="penalty_type" i18n>Penalty Type</label>
+ <label class="form-label" for="penalty_type" i18n>Penalty Type</label>
<eg-combobox name="penaltyTypeId" [selectedId]="penaltyTypeId"
[disabled]="readOnly || (note?.pub() && note.read_date()) || note?.isdeleted() || note?.stop_date()"
[(ngModel)]="penaltyTypeFromSelect" (onChange)="set_penalty($event?.id)"
@@ -43,7 +43,7 @@
</div>
<div class="col-md-6">
<div>
- <label for="org_depth" i18n>Org Depth</label>
+ <label class="form-label" for="org_depth" i18n>Org Depth</label>
<eg-org-depth-selector domId="org_depth" [contextOrgId]="auth.user().ws_ou()" (depthChange)="onDepthChange($event)"
[disabled]="readOnly || (note?.pub() && note.read_date()) || note?.isdeleted() || note?.stop_date()">
</eg-org-depth-selector>
@@ -87,7 +87,7 @@
</div>
<div class="form-group row pad-vert">
<div class="col-md-12">
- <label for="note_title" i18n>Note Title</label>
+ <label class="form-label" for="note_title" i18n>Note Title</label>
<textarea class="form-control" id="note_title" name="title" [(ngModel)]="title"
[disabled]="readOnly || (note?.pub() && note.read_date()) || note?.isdeleted() || note?.stop_date()">
</textarea>
@@ -95,7 +95,7 @@
</div>
<div class="form-group row pad-vert">
<div class="col-md-12">
- <label for="note_text" i18n>Note Text</label>
+ <label class="form-label" for="note_text" i18n>Note Text</label>
<textarea class="form-control" id="note_text" name="note" [(ngModel)]="message"
[disabled]="readOnly || (note?.pub() && note.read_date()) || note?.isdeleted() || note?.stop_date()">
</textarea>
-----------------------------------------------------------------------
Summary of changes:
.../disencumber-charge-dialog.component.html | 36 +++++++++++++++-------
...add-extra-items-for-order-dialog.component.html | 25 +++++++--------
.../acq/lineitem/add-to-po-dialog.component.html | 3 +-
.../lineitem/claim-policy-dialog.component.html | 2 +-
.../po/disencumber-charge-dialog.component.html | 22 +++++++------
.../search/picklist-clone-dialog.component.html | 2 +-
.../search/picklist-create-dialog.component.html | 2 +-
.../search/picklist-merge-dialog.component.html | 4 +--
.../search-filter/query-dialog.component.html | 12 ++++----
.../server/perm-group-map-dialog.component.html | 16 ++--------
.../cat/authority/merge-dialog.component.html | 7 ++---
.../record/add-to-carousel-dialog.component.html | 4 +--
.../upload-jacket-image-dialog.component.html | 13 +++-----
.../staff/catalog/search-templates.component.html | 5 ++-
.../app/staff/circ/patron/barcodes.component.html | 7 +++--
.../circ/patron/hold-notify-update.component.html | 2 +-
.../circ/patron/secondary-groups.component.html | 4 +--
.../full/folder-share-org-dialog.component.html | 6 ++--
.../share/billing/billing-dialog.component.html | 10 +++---
.../booking/make-bookable-dialog.component.html | 2 +-
.../share/circ/backdate-dialog.component.html | 4 +--
.../circ/claims-returned-dialog.component.html | 6 ++--
.../share/circ/due-date-dialog.component.html | 6 ++--
.../staff/share/circ/precat-dialog.component.html | 14 ++++-----
.../staff/share/circ/route-dialog.component.html | 4 +--
.../holdings/mark-damaged-dialog.component.html | 12 ++++----
.../holdings/mark-discard-dialog.component.html | 4 +--
.../holdings/mark-missing-dialog.component.html | 4 +--
.../holdings/replace-barcode-dialog.component.html | 4 +--
.../staff/share/holds/cancel-dialog.component.html | 4 +--
.../share/holds/retarget-dialog.component.html | 4 +--
.../share/holds/transfer-dialog.component.html | 4 +--
.../holds/transfer-via-bibs-dialog.component.html | 4 +--
.../staff/share/patron/note-dialog.component.html | 8 ++---
34 files changed, 133 insertions(+), 133 deletions(-)
hooks/post-receive
--
Evergreen ILS
1
0

[GIT] Evergreen ILS branch rel_3_15 updated. a74eee956bea793f9f7f769a48de3303b1fd109d
by Git User 03 Apr '25
by Git User 03 Apr '25
03 Apr '25
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Evergreen ILS".
The branch, rel_3_15 has been updated
via a74eee956bea793f9f7f769a48de3303b1fd109d (commit)
via 8028098a2b737824e42e13a846d0780e22494f45 (commit)
from 9e153c29bda5658390ea6a6f5aacb680f91021dc (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit a74eee956bea793f9f7f769a48de3303b1fd109d
Author: Stephanie Leary <stephanie.leary(a)equinoxoli.org>
Date: Tue Mar 11 14:24:41 2025 +0000
LP2085844 Org-select keyboard, focus, & scrolling
Adds the scroll-into-view capability to the org-select component, as
well as other keyboard- and focus-related features that have been
implemented in combobox but were never copied into org-select.
Release-note: Replicate combobox keyboard, focus features in org-select
Signed-off-by: Stephanie Leary <stephanie.leary(a)equinoxoli.org>
Signed-off-by: Llewellyn Marshall <llewellyn.marshall(a)dncr.nc.gov>
Signed-off-by: Terran McCanna <tmccanna(a)georgialibraries.org>
diff --git a/Open-ILS/src/eg2/src/app/share/org-select/org-select.component.ts b/Open-ILS/src/eg2/src/app/share/org-select/org-select.component.ts
index 1f033be1ad..fd4c23b747 100644
--- a/Open-ILS/src/eg2/src/app/share/org-select/org-select.component.ts
+++ b/Open-ILS/src/eg2/src/app/share/org-select/org-select.component.ts
@@ -66,6 +66,7 @@ export class OrgSelectComponent implements OnInit, AfterViewInit {
valueFromSetting: number = null;
sortedOrgs: IdlObject[] = [];
orgSelectGroup: FormGroup;
+ controller: HTMLInputElement;
// Disable the entire input
@Input() disabled: boolean;
@@ -78,6 +79,10 @@ export class OrgSelectComponent implements OnInit, AfterViewInit {
// ARIA label for selector. Required if there is no <label> in the markup.
@Input() ariaLabel?: string;
+ // Optionally provide an aria-labelledby for the input. This should be one or more
+ // space-delimited ids of elements that describe this combobox.
+ @Input() ariaLabelledby: string;
+
// ARIA describedby, for attaching error messages
@Input() ariaDescribedby?: string = null;
@@ -271,7 +276,9 @@ export class OrgSelectComponent implements OnInit, AfterViewInit {
}
ngAfterViewInit(): void {
- this.elm.nativeElement.querySelector('input').addEventListener('keydown', this.onKeydown.bind(this));
+ document.querySelectorAll('ngb-typeahead-window button[disabled]').forEach(b => b.setAttribute('tabindex', '-1'));
+ this.controller = this.instance['_elementRef'].nativeElement as HTMLInputElement;
+ this.controller.addEventListener('keydown', this.onKeydown.bind(this));
}
getDisplayLabel(org: IdlObject): string {
@@ -381,6 +388,9 @@ export class OrgSelectComponent implements OnInit, AfterViewInit {
// console.debug('Key: ', $event);
if (this.instance.isPopupOpen()) {
+ if ($event.key === 'ArrowUp' || $event.key === 'ArrowDown') {
+ this.scrollEntries();
+ }
return;
}
@@ -409,6 +419,27 @@ export class OrgSelectComponent implements OnInit, AfterViewInit {
setTimeout(() => this.click$.next(''));
}
+ closeMe($event) {
+ this.instance.dismissPopup();
+ }
+
+ scrollEntries() {
+ // adapted from https://github.com/ng-bootstrap/ng-bootstrap/issues/4789
+ if (!this.controller) {return;}
+
+ const listbox = document.getElementById(this.controller.getAttribute('aria-owns'));
+ // console.debug("Listbox: ", listbox);
+
+ const activeItem = document.getElementById(this.controller.getAttribute('aria-activedescendant'));
+ if (activeItem) {
+ if (activeItem.offsetTop < listbox.scrollTop) {
+ listbox.scrollTo({ top: activeItem.offsetTop });
+ } else if (activeItem.offsetTop + activeItem.offsetHeight > listbox.scrollTop + listbox.clientHeight) {
+ listbox.scrollTo({ top: activeItem.offsetTop + activeItem.offsetHeight - listbox.clientHeight });
+ }
+ }
+ }
+
// NgbTypeahead doesn't offer a way to style the dropdown
// button directly, so we have to reach up and style it ourselves.
applyDisableStyle() {
commit 8028098a2b737824e42e13a846d0780e22494f45
Author: Stephanie Leary <stephanie.leary(a)equinoxoli.org>
Date: Mon Mar 10 21:27:25 2025 +0000
LP2085844 Scroll focused combobox option into view
When using the arrow up/down keys to scroll through the list of combobox
suggestions, the listbox now scrolls to keep the focused option in
view.
Based on commenters' solutions from:
https://github.com/ng-bootstrap/ng-bootstrap/issues/4789
Release-note: Scroll focused combobox option into view on arrow up/down
Signed-off-by: Stephanie Leary <stephanie.leary(a)equinoxoli.org>
Signed-off-by: Llewellyn Marshall <llewellyn.marshall(a)dncr.nc.gov>
Signed-off-by: Terran McCanna <tmccanna(a)georgialibraries.org>
diff --git a/Open-ILS/src/eg2/src/app/share/combobox/combobox.component.ts b/Open-ILS/src/eg2/src/app/share/combobox/combobox.component.ts
index 201a7ef6cf..5805ccfe5a 100644
--- a/Open-ILS/src/eg2/src/app/share/combobox/combobox.component.ts
+++ b/Open-ILS/src/eg2/src/app/share/combobox/combobox.component.ts
@@ -57,6 +57,7 @@ implements ControlValueAccessor, OnInit, AfterViewInit, OnChanges {
selected: ComboboxEntry;
click$: Subject<string>;
entrylist: ComboboxEntry[];
+ controller: HTMLInputElement;
@ViewChild('instance', {static: false}) instance: NgbTypeahead;
@ViewChild('defaultDisplayTemplate', {static: true}) defaultDisplayTemplate: TemplateRef<any>;
@@ -401,9 +402,10 @@ implements ControlValueAccessor, OnInit, AfterViewInit, OnChanges {
if (!this.selectedId && !this.selected){
this.selected = this.entrylist.find(e => e.id == null);
}
-
+
document.querySelectorAll('ngb-typeahead-window button[disabled]').forEach(b => b.setAttribute('tabindex', '-1'));
- this.elm.nativeElement.querySelector('input').addEventListener('keydown', this.onKeydown.bind(this));
+ this.controller = this.instance['_elementRef'].nativeElement as HTMLInputElement;
+ this.controller.addEventListener('keydown', this.onKeydown.bind(this));
}
ngOnChanges(changes: SimpleChanges) {
@@ -474,6 +476,9 @@ implements ControlValueAccessor, OnInit, AfterViewInit, OnChanges {
//console.debug('Key: ', $event);
if (this.instance.isPopupOpen()) {
+ if ($event.key === 'ArrowUp' || $event.key === 'ArrowDown') {
+ this.scrollEntries();
+ }
return;
}
@@ -495,6 +500,24 @@ implements ControlValueAccessor, OnInit, AfterViewInit, OnChanges {
this.comboboxEnter.emit(this.selected.id);
}
+ scrollEntries() {
+ // adapted from https://github.com/ng-bootstrap/ng-bootstrap/issues/4789
+ if (!this.controller)
+ return;
+
+ const listbox = document.getElementById(this.controller.getAttribute('aria-owns'));
+ // console.debug("Listbox: ", listbox);
+
+ const activeItem = document.getElementById(this.controller.getAttribute('aria-activedescendant'));
+ if (activeItem) {
+ if (activeItem.offsetTop < listbox.scrollTop) {
+ listbox.scrollTo({ top: activeItem.offsetTop });
+ } else if (activeItem.offsetTop + activeItem.offsetHeight > listbox.scrollTop + listbox.clientHeight) {
+ listbox.scrollTo({ top: activeItem.offsetTop + activeItem.offsetHeight - listbox.clientHeight });
+ }
+ }
+ }
+
openMe($event) {
// Give the input a chance to focus then fire the click
// handler to force open the typeahead
-----------------------------------------------------------------------
Summary of changes:
.../src/app/share/combobox/combobox.component.ts | 27 ++++++++++++++++--
.../app/share/org-select/org-select.component.ts | 33 +++++++++++++++++++++-
2 files changed, 57 insertions(+), 3 deletions(-)
hooks/post-receive
--
Evergreen ILS
1
0

[GIT] Evergreen ILS branch main updated. 62002e41e6c13144cfedf2e233f6025abba2303d
by Git User 03 Apr '25
by Git User 03 Apr '25
03 Apr '25
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Evergreen ILS".
The branch, main has been updated
via 62002e41e6c13144cfedf2e233f6025abba2303d (commit)
via 4592b8d034178759a81fcf26f5d2fabd513a4bfc (commit)
from 0d1fec8082165b2210551386db0dc1d5007bb92f (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 62002e41e6c13144cfedf2e233f6025abba2303d
Author: Stephanie Leary <stephanie.leary(a)equinoxoli.org>
Date: Tue Mar 11 14:24:41 2025 +0000
LP2085844 Org-select keyboard, focus, & scrolling
Adds the scroll-into-view capability to the org-select component, as
well as other keyboard- and focus-related features that have been
implemented in combobox but were never copied into org-select.
Release-note: Replicate combobox keyboard, focus features in org-select
Signed-off-by: Stephanie Leary <stephanie.leary(a)equinoxoli.org>
Signed-off-by: Llewellyn Marshall <llewellyn.marshall(a)dncr.nc.gov>
Signed-off-by: Terran McCanna <tmccanna(a)georgialibraries.org>
diff --git a/Open-ILS/src/eg2/src/app/share/org-select/org-select.component.ts b/Open-ILS/src/eg2/src/app/share/org-select/org-select.component.ts
index 1f033be1ad..fd4c23b747 100644
--- a/Open-ILS/src/eg2/src/app/share/org-select/org-select.component.ts
+++ b/Open-ILS/src/eg2/src/app/share/org-select/org-select.component.ts
@@ -66,6 +66,7 @@ export class OrgSelectComponent implements OnInit, AfterViewInit {
valueFromSetting: number = null;
sortedOrgs: IdlObject[] = [];
orgSelectGroup: FormGroup;
+ controller: HTMLInputElement;
// Disable the entire input
@Input() disabled: boolean;
@@ -78,6 +79,10 @@ export class OrgSelectComponent implements OnInit, AfterViewInit {
// ARIA label for selector. Required if there is no <label> in the markup.
@Input() ariaLabel?: string;
+ // Optionally provide an aria-labelledby for the input. This should be one or more
+ // space-delimited ids of elements that describe this combobox.
+ @Input() ariaLabelledby: string;
+
// ARIA describedby, for attaching error messages
@Input() ariaDescribedby?: string = null;
@@ -271,7 +276,9 @@ export class OrgSelectComponent implements OnInit, AfterViewInit {
}
ngAfterViewInit(): void {
- this.elm.nativeElement.querySelector('input').addEventListener('keydown', this.onKeydown.bind(this));
+ document.querySelectorAll('ngb-typeahead-window button[disabled]').forEach(b => b.setAttribute('tabindex', '-1'));
+ this.controller = this.instance['_elementRef'].nativeElement as HTMLInputElement;
+ this.controller.addEventListener('keydown', this.onKeydown.bind(this));
}
getDisplayLabel(org: IdlObject): string {
@@ -381,6 +388,9 @@ export class OrgSelectComponent implements OnInit, AfterViewInit {
// console.debug('Key: ', $event);
if (this.instance.isPopupOpen()) {
+ if ($event.key === 'ArrowUp' || $event.key === 'ArrowDown') {
+ this.scrollEntries();
+ }
return;
}
@@ -409,6 +419,27 @@ export class OrgSelectComponent implements OnInit, AfterViewInit {
setTimeout(() => this.click$.next(''));
}
+ closeMe($event) {
+ this.instance.dismissPopup();
+ }
+
+ scrollEntries() {
+ // adapted from https://github.com/ng-bootstrap/ng-bootstrap/issues/4789
+ if (!this.controller) {return;}
+
+ const listbox = document.getElementById(this.controller.getAttribute('aria-owns'));
+ // console.debug("Listbox: ", listbox);
+
+ const activeItem = document.getElementById(this.controller.getAttribute('aria-activedescendant'));
+ if (activeItem) {
+ if (activeItem.offsetTop < listbox.scrollTop) {
+ listbox.scrollTo({ top: activeItem.offsetTop });
+ } else if (activeItem.offsetTop + activeItem.offsetHeight > listbox.scrollTop + listbox.clientHeight) {
+ listbox.scrollTo({ top: activeItem.offsetTop + activeItem.offsetHeight - listbox.clientHeight });
+ }
+ }
+ }
+
// NgbTypeahead doesn't offer a way to style the dropdown
// button directly, so we have to reach up and style it ourselves.
applyDisableStyle() {
commit 4592b8d034178759a81fcf26f5d2fabd513a4bfc
Author: Stephanie Leary <stephanie.leary(a)equinoxoli.org>
Date: Mon Mar 10 21:27:25 2025 +0000
LP2085844 Scroll focused combobox option into view
When using the arrow up/down keys to scroll through the list of combobox
suggestions, the listbox now scrolls to keep the focused option in
view.
Based on commenters' solutions from:
https://github.com/ng-bootstrap/ng-bootstrap/issues/4789
Release-note: Scroll focused combobox option into view on arrow up/down
Signed-off-by: Stephanie Leary <stephanie.leary(a)equinoxoli.org>
Signed-off-by: Llewellyn Marshall <llewellyn.marshall(a)dncr.nc.gov>
Signed-off-by: Terran McCanna <tmccanna(a)georgialibraries.org>
diff --git a/Open-ILS/src/eg2/src/app/share/combobox/combobox.component.ts b/Open-ILS/src/eg2/src/app/share/combobox/combobox.component.ts
index 201a7ef6cf..5805ccfe5a 100644
--- a/Open-ILS/src/eg2/src/app/share/combobox/combobox.component.ts
+++ b/Open-ILS/src/eg2/src/app/share/combobox/combobox.component.ts
@@ -57,6 +57,7 @@ implements ControlValueAccessor, OnInit, AfterViewInit, OnChanges {
selected: ComboboxEntry;
click$: Subject<string>;
entrylist: ComboboxEntry[];
+ controller: HTMLInputElement;
@ViewChild('instance', {static: false}) instance: NgbTypeahead;
@ViewChild('defaultDisplayTemplate', {static: true}) defaultDisplayTemplate: TemplateRef<any>;
@@ -401,9 +402,10 @@ implements ControlValueAccessor, OnInit, AfterViewInit, OnChanges {
if (!this.selectedId && !this.selected){
this.selected = this.entrylist.find(e => e.id == null);
}
-
+
document.querySelectorAll('ngb-typeahead-window button[disabled]').forEach(b => b.setAttribute('tabindex', '-1'));
- this.elm.nativeElement.querySelector('input').addEventListener('keydown', this.onKeydown.bind(this));
+ this.controller = this.instance['_elementRef'].nativeElement as HTMLInputElement;
+ this.controller.addEventListener('keydown', this.onKeydown.bind(this));
}
ngOnChanges(changes: SimpleChanges) {
@@ -474,6 +476,9 @@ implements ControlValueAccessor, OnInit, AfterViewInit, OnChanges {
//console.debug('Key: ', $event);
if (this.instance.isPopupOpen()) {
+ if ($event.key === 'ArrowUp' || $event.key === 'ArrowDown') {
+ this.scrollEntries();
+ }
return;
}
@@ -495,6 +500,24 @@ implements ControlValueAccessor, OnInit, AfterViewInit, OnChanges {
this.comboboxEnter.emit(this.selected.id);
}
+ scrollEntries() {
+ // adapted from https://github.com/ng-bootstrap/ng-bootstrap/issues/4789
+ if (!this.controller)
+ return;
+
+ const listbox = document.getElementById(this.controller.getAttribute('aria-owns'));
+ // console.debug("Listbox: ", listbox);
+
+ const activeItem = document.getElementById(this.controller.getAttribute('aria-activedescendant'));
+ if (activeItem) {
+ if (activeItem.offsetTop < listbox.scrollTop) {
+ listbox.scrollTo({ top: activeItem.offsetTop });
+ } else if (activeItem.offsetTop + activeItem.offsetHeight > listbox.scrollTop + listbox.clientHeight) {
+ listbox.scrollTo({ top: activeItem.offsetTop + activeItem.offsetHeight - listbox.clientHeight });
+ }
+ }
+ }
+
openMe($event) {
// Give the input a chance to focus then fire the click
// handler to force open the typeahead
-----------------------------------------------------------------------
Summary of changes:
.../src/app/share/combobox/combobox.component.ts | 27 ++++++++++++++++--
.../app/share/org-select/org-select.component.ts | 33 +++++++++++++++++++++-
2 files changed, 57 insertions(+), 3 deletions(-)
hooks/post-receive
--
Evergreen ILS
1
0

[GIT] Evergreen ILS branch rel_3_13 updated. cd6f36548152cab1203bbb9dcd64aab9bded6fc2
by Git User 03 Apr '25
by Git User 03 Apr '25
03 Apr '25
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Evergreen ILS".
The branch, rel_3_13 has been updated
via cd6f36548152cab1203bbb9dcd64aab9bded6fc2 (commit)
from 7d2ab9256f91c260b7d9bd83a7c33cb934424533 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit cd6f36548152cab1203bbb9dcd64aab9bded6fc2
Author: Stephanie Leary <stephanie.leary(a)equinoxoli.org>
Date: Sun Mar 30 04:26:02 2025 +0000
LP2040183 Form labels for patron survey answers
Changes the patron survey answers (in the AngularJS staff patron
registration form) from button dropdowns to form select elements with
proper labels. Allows the survey answers to be set using the keyboard.
Release-note: Form labels and keyboard support for patron survey answers
Signed-off-by: Stephanie Leary <stephanie.leary(a)equinoxoli.org>
Signed-off-by: Terran McCanna <tmccanna(a)georgialibraries.org>
diff --git a/Open-ILS/src/templates/staff/circ/patron/t_edit.tt2 b/Open-ILS/src/templates/staff/circ/patron/t_edit.tt2
index cfad267557..b7bfa1fadc 100644
--- a/Open-ILS/src/templates/staff/circ/patron/t_edit.tt2
+++ b/Open-ILS/src/templates/staff/circ/patron/t_edit.tt2
@@ -1226,24 +1226,14 @@ within the "form" by name for validation.
<div class="col-md-6 reg-field-input">
<div class="row" ng-repeat="question in survey.questions()"
style="margin-bottom: 10px;">
- <div class="col-md-6">{{question.question()}}</div>
+ <label class="col-form-label col-md-6" for="survey_responses-{{question.id()}}">
+ {{question.question()}}
+ </label>
<div class="col-md-6">
- <div class="btn-group" uib-dropdown>
- <button type="button" class="btn btn-default" uib-dropdown-toggle>
- <span style="padding-right: 5px;">
- {{survey_responses[question.id()].answer()}}
- </span>
- <span class="caret"></span>
- </button>
- <ul uib-dropdown-menu>
- <li ng-repeat="answer in question.answers()">
- <a href
- ng-click="field_modified();survey_responses[question.id()] = answer">
- {{answer.answer()}}
- </a>
- </li>
- </ul>
- </div>
+ <select id="survey_responses-{{question.id()}}" class="form-control form-select"
+ ng-model="survey_responses[question.id()]"
+ ng-options="answer.answer() for answer in question.answers() track by answer.id()"
+ ng-change="field_modified();survey_responses[question.id()] = answer"></select>
</div>
</div>
</div>
-----------------------------------------------------------------------
Summary of changes:
.../src/templates/staff/circ/patron/t_edit.tt2 | 24 +++++++---------------
1 file changed, 7 insertions(+), 17 deletions(-)
hooks/post-receive
--
Evergreen ILS
1
0

[GIT] Evergreen ILS branch rel_3_14 updated. 4130ba116b9f0f5c85890d59c994e8d29149dbe6
by Git User 03 Apr '25
by Git User 03 Apr '25
03 Apr '25
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Evergreen ILS".
The branch, rel_3_14 has been updated
via 4130ba116b9f0f5c85890d59c994e8d29149dbe6 (commit)
from 680349c08459576477c8d328cb0d94ad0bd30642 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 4130ba116b9f0f5c85890d59c994e8d29149dbe6
Author: Stephanie Leary <stephanie.leary(a)equinoxoli.org>
Date: Sun Mar 30 04:26:02 2025 +0000
LP2040183 Form labels for patron survey answers
Changes the patron survey answers (in the AngularJS staff patron
registration form) from button dropdowns to form select elements with
proper labels. Allows the survey answers to be set using the keyboard.
Release-note: Form labels and keyboard support for patron survey answers
Signed-off-by: Stephanie Leary <stephanie.leary(a)equinoxoli.org>
Signed-off-by: Terran McCanna <tmccanna(a)georgialibraries.org>
diff --git a/Open-ILS/src/templates/staff/circ/patron/t_edit.tt2 b/Open-ILS/src/templates/staff/circ/patron/t_edit.tt2
index cfad267557..b7bfa1fadc 100644
--- a/Open-ILS/src/templates/staff/circ/patron/t_edit.tt2
+++ b/Open-ILS/src/templates/staff/circ/patron/t_edit.tt2
@@ -1226,24 +1226,14 @@ within the "form" by name for validation.
<div class="col-md-6 reg-field-input">
<div class="row" ng-repeat="question in survey.questions()"
style="margin-bottom: 10px;">
- <div class="col-md-6">{{question.question()}}</div>
+ <label class="col-form-label col-md-6" for="survey_responses-{{question.id()}}">
+ {{question.question()}}
+ </label>
<div class="col-md-6">
- <div class="btn-group" uib-dropdown>
- <button type="button" class="btn btn-default" uib-dropdown-toggle>
- <span style="padding-right: 5px;">
- {{survey_responses[question.id()].answer()}}
- </span>
- <span class="caret"></span>
- </button>
- <ul uib-dropdown-menu>
- <li ng-repeat="answer in question.answers()">
- <a href
- ng-click="field_modified();survey_responses[question.id()] = answer">
- {{answer.answer()}}
- </a>
- </li>
- </ul>
- </div>
+ <select id="survey_responses-{{question.id()}}" class="form-control form-select"
+ ng-model="survey_responses[question.id()]"
+ ng-options="answer.answer() for answer in question.answers() track by answer.id()"
+ ng-change="field_modified();survey_responses[question.id()] = answer"></select>
</div>
</div>
</div>
-----------------------------------------------------------------------
Summary of changes:
.../src/templates/staff/circ/patron/t_edit.tt2 | 24 +++++++---------------
1 file changed, 7 insertions(+), 17 deletions(-)
hooks/post-receive
--
Evergreen ILS
1
0