@spokane-folio/security-incident 1.0.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (188) hide show
  1. package/.eslintrc +32 -0
  2. package/.github/workflows/CODEOWNERS +8 -0
  3. package/.github/workflows/pr-validation.yml +44 -0
  4. package/.github/workflows/release.yml +64 -0
  5. package/.prettierrc +6 -0
  6. package/.stripesclirc +4 -0
  7. package/CHANGELOG.md +8 -0
  8. package/CONTRIBUTING.md +4 -0
  9. package/LICENSE +201 -0
  10. package/README.md +16 -0
  11. package/administrator-documentation/roles-and-permissions.md +65 -0
  12. package/administrator-documentation/track-settings-admin-guide-sketch.md +192 -0
  13. package/administrator-documentation/using-the-application.md +192 -0
  14. package/icons/app.png +0 -0
  15. package/icons/app.svg +1 -0
  16. package/icons/playButton.png +0 -0
  17. package/icons/profilePicThumbnail.png +0 -0
  18. package/jest.config.js +10 -0
  19. package/module-descriptor.json +75 -0
  20. package/output/service-worker.js +0 -0
  21. package/package.json +146 -0
  22. package/src/components/incidents/ColumnChooser.js +37 -0
  23. package/src/components/incidents/CreateMedia.js +132 -0
  24. package/src/components/incidents/CreatePane.js +1215 -0
  25. package/src/components/incidents/CreatePane.test.js +138 -0
  26. package/src/components/incidents/CreateReport.js +102 -0
  27. package/src/components/incidents/DetailsPane.js +1267 -0
  28. package/src/components/incidents/DetailsPane.test.js +150 -0
  29. package/src/components/incidents/EditPane.js +2334 -0
  30. package/src/components/incidents/EditPane.test.js +187 -0
  31. package/src/components/incidents/GetDetails.js +55 -0
  32. package/src/components/incidents/GetListDQLinkIncident.js +81 -0
  33. package/src/components/incidents/GetListDynamicQuery.js +66 -0
  34. package/src/components/incidents/GetLocations.js +57 -0
  35. package/src/components/incidents/GetMedia.js +98 -0
  36. package/src/components/incidents/GetName.js +111 -0
  37. package/src/components/incidents/GetNameCreatedBy.js +94 -0
  38. package/src/components/incidents/GetOrgLocaleSettings.js +61 -0
  39. package/src/components/incidents/GetPatronGroups.js +52 -0
  40. package/src/components/incidents/GetSelf.js +65 -0
  41. package/src/components/incidents/GetSummary.js +110 -0
  42. package/src/components/incidents/IncidentTypeCard.js +53 -0
  43. package/src/components/incidents/IncidentTypeCard.test.js +133 -0
  44. package/src/components/incidents/IncidentsPaneset.js +810 -0
  45. package/src/components/incidents/IncidentsPaneset.test.js +128 -0
  46. package/src/components/incidents/LinkedIncident.js +86 -0
  47. package/src/components/incidents/ModalAddMedia.js +262 -0
  48. package/src/components/incidents/ModalAddMedia.test.js +97 -0
  49. package/src/components/incidents/ModalAttentionDecOfService.js +111 -0
  50. package/src/components/incidents/ModalCustomWitness.js +469 -0
  51. package/src/components/incidents/ModalCustomWitness.test.js +147 -0
  52. package/src/components/incidents/ModalCustomerDetails.js +480 -0
  53. package/src/components/incidents/ModalCustomerDetails.test.js +116 -0
  54. package/src/components/incidents/ModalDescribeCustomer.js +361 -0
  55. package/src/components/incidents/ModalDescribeCustomer.test.js +156 -0
  56. package/src/components/incidents/ModalDirtyFormWarn.js +62 -0
  57. package/src/components/incidents/ModalLinkIncident.js +1213 -0
  58. package/src/components/incidents/ModalLinkIncidentStyle.css +32 -0
  59. package/src/components/incidents/ModalSelectIncidentTypes.js +178 -0
  60. package/src/components/incidents/ModalSelectIncidentTypes.test.js +273 -0
  61. package/src/components/incidents/ModalSelectKnownCustomer.js +395 -0
  62. package/src/components/incidents/ModalSelectWitness.js +406 -0
  63. package/src/components/incidents/ModalSelectWitness.test.js +308 -0
  64. package/src/components/incidents/ModalStyle.css +44 -0
  65. package/src/components/incidents/ModalTrespass.js +741 -0
  66. package/src/components/incidents/ModalViewCustomerDetails.js +241 -0
  67. package/src/components/incidents/ModalViewMedia.js +86 -0
  68. package/src/components/incidents/ModalViewTrespass.js +210 -0
  69. package/src/components/incidents/ResultsPane.js +437 -0
  70. package/src/components/incidents/ResultsPane.test.js +120 -0
  71. package/src/components/incidents/SearchCustomerOrWitness.js +108 -0
  72. package/src/components/incidents/Thumbnail.js +72 -0
  73. package/src/components/incidents/ThumbnailMarkRemoval.js +38 -0
  74. package/src/components/incidents/ThumbnailSkeleton.js +30 -0
  75. package/src/components/incidents/ThumbnailStyles.js +49 -0
  76. package/src/components/incidents/ThumbnailTempPreSave.js +71 -0
  77. package/src/components/incidents/UpdateReport.js +84 -0
  78. package/src/components/incidents/__snapshots__/CreatePane.test.js.snap +3 -0
  79. package/src/components/incidents/__snapshots__/DetailsPane.test.js.snap +3 -0
  80. package/src/components/incidents/__snapshots__/EditPane.test.js.snap +3 -0
  81. package/src/components/incidents/__snapshots__/IncidentTypeCard.test.js.snap +3 -0
  82. package/src/components/incidents/__snapshots__/IncidentsPaneset.test.js.snap +3 -0
  83. package/src/components/incidents/__snapshots__/ModalAddMedia.test.js.snap +3 -0
  84. package/src/components/incidents/__snapshots__/ModalCustomerDetails.test.js.snap +3 -0
  85. package/src/components/incidents/__snapshots__/ModalSelectWitness.test.js.snap +3 -0
  86. package/src/components/incidents/__snapshots__/ResultsPane.test.js.snap +3 -0
  87. package/src/components/incidents/helpers/ProfilePicture/ProfilePicture.css +5 -0
  88. package/src/components/incidents/helpers/ProfilePicture/ProfilePicture.js +51 -0
  89. package/src/components/incidents/helpers/ProfilePicture/isAValidURL.js +3 -0
  90. package/src/components/incidents/helpers/ProfilePicture/useProfilePicture.js +127 -0
  91. package/src/components/incidents/helpers/buildQueryString.js +28 -0
  92. package/src/components/incidents/helpers/cleanFormValues.js +53 -0
  93. package/src/components/incidents/helpers/computeEditedCustomers.js +124 -0
  94. package/src/components/incidents/helpers/convertDateIgnoringTZ.js +8 -0
  95. package/src/components/incidents/helpers/convertUTCISOToLocalePrettyTime.js +15 -0
  96. package/src/components/incidents/helpers/convertUTCISOToPrettyDate.js +19 -0
  97. package/src/components/incidents/helpers/decodeParamsToForm.js +20 -0
  98. package/src/components/incidents/helpers/deepNormalizeForComparison.js +39 -0
  99. package/src/components/incidents/helpers/extractFilterString.js +12 -0
  100. package/src/components/incidents/helpers/formatDateAndTimeToUTCISO.js +14 -0
  101. package/src/components/incidents/helpers/formatDateToUTCISO.js +14 -0
  102. package/src/components/incidents/helpers/formatTimeToUTCISO.js +28 -0
  103. package/src/components/incidents/helpers/getCurrentTime.js +20 -0
  104. package/src/components/incidents/helpers/getTodayDate.js +12 -0
  105. package/src/components/incidents/helpers/handlebarsHelpers.js +148 -0
  106. package/src/components/incidents/helpers/hasFormChangedAtCreate.js +50 -0
  107. package/src/components/incidents/helpers/hasTopLevelChangeAffectedDeclaration.js +90 -0
  108. package/src/components/incidents/helpers/hasTopLevelFormChanged.js +111 -0
  109. package/src/components/incidents/helpers/identifyCurrentTrespassDocs.js +109 -0
  110. package/src/components/incidents/helpers/isSameHtml.js +13 -0
  111. package/src/components/incidents/helpers/isValidDateFormat.js +14 -0
  112. package/src/components/incidents/helpers/isValidTimeInput.js +11 -0
  113. package/src/components/incidents/helpers/isValidUTCTimeFormat.js +14 -0
  114. package/src/components/incidents/helpers/parseMMDDYYYY.js +7 -0
  115. package/src/components/incidents/helpers/parseQueryString.js +16 -0
  116. package/src/components/incidents/helpers/sortTrespassDocuments.js +44 -0
  117. package/src/components/incidents/helpers/stripHTML.js +11 -0
  118. package/src/components/incidents/helpers/trespassDocUtils.js +197 -0
  119. package/src/components/incidents/helpers/validateTrespassDetails.js +37 -0
  120. package/src/components/incidents/usePersistedColModalLink.js +70 -0
  121. package/src/components/incidents/usePersistedColumns.js +70 -0
  122. package/src/components/incidents/usePersistedSort.js +23 -0
  123. package/src/components/incidents/usePersistedSortModalLink.js +23 -0
  124. package/src/contexts/IncidentContext.js +433 -0
  125. package/src/index.js +61 -0
  126. package/src/routes/Application.js +13 -0
  127. package/src/settings/GetIncidentCategories.js +56 -0
  128. package/src/settings/GetIncidentTypesDetails.js +88 -0
  129. package/src/settings/GetIncidentTypesIds.js +74 -0
  130. package/src/settings/GetLocationsInService.js +54 -0
  131. package/src/settings/GetSingleCustomLocationDetails.js +60 -0
  132. package/src/settings/GetSingleIncidentTypeDetails.js +60 -0
  133. package/src/settings/GetTrespassReasons.js +67 -0
  134. package/src/settings/GetTrespassTemplates.js +51 -0
  135. package/src/settings/IncidentCategoriesPane.js +285 -0
  136. package/src/settings/IncidentCategoriesPane.test.js +229 -0
  137. package/src/settings/IncidentTypeDetailsPane.js +215 -0
  138. package/src/settings/IncidentTypeDetailsPane.test.js +220 -0
  139. package/src/settings/IncidentTypeEditPane.js +211 -0
  140. package/src/settings/IncidentTypeEditPane.test.js +170 -0
  141. package/src/settings/IncidentTypesPaneset.js +167 -0
  142. package/src/settings/IncidentTypesPaneset.test.js +124 -0
  143. package/src/settings/LocationInServiceEditPane.js +320 -0
  144. package/src/settings/LocationsPaneset.js +415 -0
  145. package/src/settings/LocationsPaneset.test.js +106 -0
  146. package/src/settings/ModalDeleteCategory.js +47 -0
  147. package/src/settings/ModalDeleteIncidentType.js +49 -0
  148. package/src/settings/ModalDeleteLocationInService.js +49 -0
  149. package/src/settings/ModalDeleteTrespassReason.js +49 -0
  150. package/src/settings/ModalPreviewTrespassDoc.js +65 -0
  151. package/src/settings/ModalTrespassDocTokens.js +83 -0
  152. package/src/settings/NewIncidentTypePane.js +182 -0
  153. package/src/settings/PutIncidentType.js +60 -0
  154. package/src/settings/PutLocationsInService.js +52 -0
  155. package/src/settings/PutTrespassReasons.js +61 -0
  156. package/src/settings/PutTrespassTemplate.js +50 -0
  157. package/src/settings/TrespassDoc.css +17 -0
  158. package/src/settings/TrespassDocDetailsPane.js +215 -0
  159. package/src/settings/TrespassDocEditPane.js +538 -0
  160. package/src/settings/TrespassDocPaneset.js +581 -0
  161. package/src/settings/TrespassReasonDetailsPane.js +171 -0
  162. package/src/settings/TrespassReasonEditPane.js +221 -0
  163. package/src/settings/TrespassReasonsPaneset.js +282 -0
  164. package/src/settings/__snapshots__/IncidentCategoriesPane.test.js.snap +3 -0
  165. package/src/settings/__snapshots__/IncidentTypeDetailsPane.test.js.snap +3 -0
  166. package/src/settings/__snapshots__/IncidentTypeEditPane.test.js.snap +3 -0
  167. package/src/settings/__snapshots__/IncidentTypesPaneset.test.js.snap +3 -0
  168. package/src/settings/__snapshots__/LocationsPaneset.test.js.snap +3 -0
  169. package/src/settings/data/exampleJSON.json +92 -0
  170. package/src/settings/data/templateTokens.js +396 -0
  171. package/src/settings/helpers/alphabetize.js +18 -0
  172. package/src/settings/helpers/getCategoryTitleById.js +13 -0
  173. package/src/settings/helpers/makeId.js +15 -0
  174. package/src/settings/index.js +48 -0
  175. package/stripes.config.js +10 -0
  176. package/test/jest/__mock__/index.js +8 -0
  177. package/test/jest/__mock__/intl.mock.js +27 -0
  178. package/test/jest/__mock__/stripes.mock.js +26 -0
  179. package/test/jest/__mock__/stripesComponents.mock.js +151 -0
  180. package/test/jest/__mock__/stripesConfig.mock.js +1 -0
  181. package/test/jest/__mock__/stripesCore.mock.js +9 -0
  182. package/test/jest/__mock__/stripesIcon.mock.js +5 -0
  183. package/test/jest/__mock__/stripesSmartComponents.mock.js +7 -0
  184. package/test/jest/__mock__/stripesUtils.mock.js +3 -0
  185. package/test/jest/eslintrc.js +12 -0
  186. package/test/jest/setupFiles.js +5 -0
  187. package/translations/ui-security-incident/en_US.json +542 -0
  188. package/ui-module-acceptance-criteria.md +34 -0
@@ -0,0 +1,542 @@
1
+ {
2
+ "meta.title": "Track",
3
+ "settings.label": "Track",
4
+
5
+ "stripes-components.closeItem": "Close",
6
+ "stripes-components.metaSection.screenReaderLabel": "Meta Section",
7
+ "stripes-components.metaSection.recordCreated": "Record created: {date} at {time}",
8
+ "stripes-components.metaSection.recordCreatedNoData": "Record creation date not available.",
9
+ "stripes-components.metaSection.recordLastUpdated": "Last updated: {date} at {time}",
10
+ "stripes-components.metaSection.recordLastUpdatedNoData": "Record has not been updated.",
11
+ "stripes-components.metaSection.source": "{source}",
12
+ "stripes-components.metaSection.sourceNoData": "No Data Available",
13
+ "stripes-components.mcl.loadMore": "Load more",
14
+ "stripes-components.Datepicker.calendar": "Datepicker calendar",
15
+ "stripes-components.goToPreviousYear": "Go to previous year",
16
+ "stripes-components.goToPreviousMonth": "Go to previous month",
17
+ "stripes-components.Datepicker.monthControl": "Datepicker month control",
18
+ "stripes-components.Datepicker.yearControl": "Datepicker year control",
19
+ "stripes-components.goToNextMonth": "Go to next month",
20
+ "stripes-components.goToNextYear": "Go to next year",
21
+ "stripes-components.Datepicker.calendarDaysListDescription": "Datepicker calendar days list description",
22
+ "stripes-components.selectDay": "Select day",
23
+ "stripes-components.Datepicker.calenderRole": "Datepicker calendar role",
24
+ "ui-users.information.profilePicture": "Profile picture",
25
+ "stripes-components.noValue.noValueSet": "No value set",
26
+
27
+
28
+
29
+
30
+
31
+
32
+
33
+ "stripes-components.clearThisField": "Clear this field",
34
+ "stripes-components.clearFieldValue": "Clear field value",
35
+ "stripes-components.showOrHideDatepicker": "Show or hide date picker",
36
+ "stripes-components.showOrHideTimepicker": "Show or hide time picker",
37
+ "stripes-components.searchFieldIndex": "Search field index",
38
+ "stripes-components.Timepicker.SetTimeLabel": "Time of incident",
39
+ "stripes-components.Timepicker.ScreenReaderLabel": "Time of incident",
40
+ "stripes-components.paneMenuActionsToggleLabel": "Action",
41
+ "stripes-components.previous": "Previous",
42
+ "stripes-components.next": "Next",
43
+ "stripes-components.tableEmpty": "The list contains no items",
44
+ "stripes-components.collapseAll": "Collapse all",
45
+ "stripes-components.expandAll": "Expand all",
46
+ "stripes-components.endOfList": "End of list",
47
+ "stripes-components.dismissModal": "Dismiss modal",
48
+ "stripes-components.mcl.itemsRequestedMessage": "Items requested message",
49
+ "stripes-components.mcl.additionalResultsLoaded": "Additional results loaded",
50
+ "settings.additional-accordion-label": "Additional",
51
+ "settings.categories": "Incident categories",
52
+ "settings.categories-new-button": "+ New",
53
+ "settings.categories-save-button": "Save",
54
+ "settings.categories-cancel-button": "Cancel",
55
+ "settings.categories-delete-button": "Delete",
56
+ "settings.categories-delete-warn": "The incident category will be deleted.",
57
+ "settings.categories.modal-delete-label": "Delete incident category",
58
+ "settings.categories.column-mapping-title": "Title",
59
+ "settings.categories.column-mapping-actions": "Actions",
60
+ "settings.categories.mcl-isEmptyMsg": "Please use the new button to add a category.",
61
+ "settings.incident-types": "Incident types",
62
+ "settings.incident-types.paneTitle": "Incident types",
63
+ "settings.incident-types-new-button": "+ New",
64
+ "settings.incident-types.new.paneTitle": "New",
65
+ "settings.incident-types.new.type-info-accordion-label": "Type information",
66
+ "settings.incident-types.new.title-text-field-label": "Title",
67
+ "settings.incident-types.new.category-select-label": "Category",
68
+ "settings.incident-types.new.description-text-area-label": "Description",
69
+ "settings.incident-types.additional-accordion-label": "Additional",
70
+ "settings.incident-types.details-delete-button": "Delete",
71
+ "settings.incident-types.details.paneTitle": "Details",
72
+ "settings.incident-types-modal-delete-label": "Delete incident type",
73
+ "settings.incident-types-delete-warn": "The incident type will be deleted.",
74
+
75
+ "settings.incident-types.details.accordion-general-info-label": "Type information",
76
+ "settings.incident-types.details.title-label": "Title",
77
+ "settings.incident-types.details.category-label": "Category",
78
+ "settings.incident-types.details.description-label": "Description",
79
+ "settings.incident-types-edit.paneTitle": "Edit",
80
+ "settings.incident-types-edit.type-info-accordion-label": "Type information",
81
+ "settings.incident-types-edit.additional-accordion-label": "Additional",
82
+ "settings.incident-types-edit.title-text-field-label": "Title",
83
+ "settings.incident-types-edit.category-select-label": "Category",
84
+ "settings.incident-types-edit.description-text-area-label": "Description",
85
+ "settings.incident-types-default-if-no-list": "Please use the new button to add an incident type.",
86
+
87
+ "settings.locations.paneTitle": "Locations",
88
+ "settings.accordion.service-locations": "Service locations",
89
+ "settings.selectComponent.placeholder.select-location": "Select location",
90
+ "settings.button.save-loc-to-service": "Save location to service",
91
+ "settings.locations.column-mapping.location": "Locations in service",
92
+ "settings.locations.column-mapping.subLocations": "Zones",
93
+ "settings.locations.MCL.is-empty-message": "Use the select tool and save button to save a location to service.",
94
+ "settings.locations.message-banner.success": "Success! Location added to service.",
95
+ "settings.locations.accordion.custom-locations": "Custom locations",
96
+ "settings.label.name": "Name",
97
+ "settings.label.zones": "Zones",
98
+ "settings.button.add-zone": "Add zone",
99
+ "settings.button.save-new-custom-loc": "Save new custom location",
100
+ "settings.button.delete-warn": "This location will be deleted from service.",
101
+
102
+ "settings.trespass-document-template": "Trespass document",
103
+ "settings.trespass-document-paneTitle": "Trespass document template",
104
+ "settings.trespass-document-columnmapping-name": "Name",
105
+ "settings.trespass-document-columnmapping-default": "Default",
106
+ "settings.trespass-document-columnmapping-active": "Active",
107
+ "settings.trespass-document-columnmapping-description": "Description",
108
+ "settings.trespass-document-textfield-name": "Name",
109
+ "settings.trespass-document-textfield-description": "Description",
110
+ "settings.trespass-document-checkbox-active": "Active",
111
+ "settings.trespass-document-checkbox-isDefault": "Set as default",
112
+
113
+
114
+
115
+
116
+
117
+
118
+
119
+
120
+
121
+
122
+ "settings.trespass-document-template.message-banner.name-must-be-unique": "Name must be unique",
123
+ "settings.trespass-document-template.insert-selected-tokens": "Insert selected tokens",
124
+
125
+ "settings.custom-locations": "Custom locations",
126
+ "settings.accordion-custom-location-label": "Custom location",
127
+ "settings.custom-locations.paneTitle": "Custom locations",
128
+ "settings.custom-locations-new-button": "+ New custom location",
129
+ "settings.custom-locations.details-paneTitle": "Details",
130
+ "settings.custom-location-modal-delete-label": "Delete custom location",
131
+ "settings.custom-location-delete-warn": "The custom location will be deleted.",
132
+ "settings.custom-locations.name": "Name",
133
+ "settings.custom-locations.zones": "Zones",
134
+ "settings.custom-locations.edit.paneTitle": "Edit",
135
+ "settings.custom-locations.edit.name-text-field": "Name",
136
+
137
+ "settings.zones": "Zones",
138
+ "settings.zones.paneTitle": "Zones",
139
+ "settings.zones.add-zones-button": "+ Add zones to a location",
140
+ "settings.zones.new-zones.paneTitle": "New zones",
141
+ "settings.zones.new-zones.locations-auto-suggest-label": "Locations",
142
+ "settings.zones.zones-list-label": "Zones",
143
+ "settings.zones.new-zones.zones-text-field-label": "Zones",
144
+ "settings.zones.details.paneTitle": "Details",
145
+ "settings.zones.details.location-headline": "Location",
146
+ "settings.zones.edit.paneTitle": "Edit",
147
+ "settings.zones.edit.location-zones-accordion": "Location zones",
148
+ "settings.zones.edit.location-text-field": "Location",
149
+ "settings.zones.edit.zones-text-field-label": "Zones",
150
+ "settings.zones.delete-location-zones-modal-label": "Delete location zones",
151
+ "modal-delete-location-zone-confirm": "The related zones for this location will be deleted.",
152
+
153
+ "settings.locations": "Locations",
154
+ "settings.locations-visibleColumns-name": "Name",
155
+ "settings.locations-visibleColumns-description": "Zone description",
156
+ "settings.locations-MCL-isEmpty-msg": "Input location zones with the zone name, zone description field, and add button below.",
157
+ "settings.locations-edit-remove-sub-location-label": "Remove sub-location {name}",
158
+ "settings.locations-edit-label": "Edit location",
159
+ "settings.locations-edit-textfield-label": "Location",
160
+ "settings.locations-zones-is-empty-msg": "No zones",
161
+ "settings.locations-zones-label": "Zones",
162
+ "settings.locations-zones-textfield-placeholder-name": "Zone name",
163
+ "settings.locations-zones-textfield-placeholder-description": "Zone description",
164
+ "settings.locations-zones-messageBanner-error-msg": "Custom location name must be unique to institution.",
165
+
166
+ "settings.locations-itemFormatter-aria-label": "Remove {item} as sub-location",
167
+
168
+ "settings.trespass-document-name-label": "Name",
169
+ "settings.trespass-document-active-label": "Active",
170
+ "settings.trespass-document-default-label": "Default",
171
+ "settings.trespass-document-description-label": "Description",
172
+ "settings.trespass-document-preview-button": "Preview",
173
+ "settings.trespass-document-default-no-description": "No description",
174
+ "settings.trespass-document-isDefault-no": "No",
175
+ "settings.trespass-document-isDefault-yes": "Yes",
176
+ "settings.trespass-document-edit-paneTitle": "Edit - {templateName}",
177
+
178
+ "settings.trespass-document-edit-textfield-name-label": "Name",
179
+ "settings.trespass-document-edit-textfield-description-label": "Description",
180
+ "settings.trespass-document-edit-checkbox-active-label": "Active",
181
+ "settings.trespass-document-edit-checkbox-default-label": "Default",
182
+ "settings.trespass-document-edit-insert-button": "Insert",
183
+ "settings.trespass-document-edit-preview-button": "Preview",
184
+
185
+
186
+ "settings.trespass-reasons": "Trespass reasons",
187
+ "settings.trespass-reasons-paneTitle": "Trespass reasons",
188
+ "settings.trespass-reason-paneTitle": "Reason",
189
+ "settings.trespass-reasons-new-button": "+ New",
190
+ "settings.trespass-reasons.mcl-isEmptyMsg": "Input trespass reasons with the add button above.",
191
+ "settings.trespass-reasons.column-mapping-reason": "Reason",
192
+ "settings.trespass-reasons.column-mapping-default": "Default",
193
+ "settings.trespass-reasons.column-mapping-isSuppressed": "Suppressed",
194
+ "settings.trespass-reason-textarea-reason": "Reason",
195
+ "settings.trespass-reason-checkbox-isDefault": "Default",
196
+ "settings.trespass-reason-details-reason-label": "Reason",
197
+ "settings.trespass-document-edit-textfield-reason-label": "Reason",
198
+ "settings.trespass-reason-details-default-label": "Default",
199
+ "settings.trespass-reason-details-isSuppressed-label": "Suppressed",
200
+ "settings.trespass-reason-details-yes": "Yes",
201
+ "settings.trespass-reason-details-no": "No",
202
+ "settings.trespass-reason-modal-delete-label": "Delete trespass reason",
203
+ "settings.trespass-reason-delete-warn": "This trespass reason will be deleted.",
204
+ "settings.trespass-document-edit-checkbox-suppress-label": "Suppress from create",
205
+ "edit-pane.update-declaration-requires-valid-reason": "Select at least one current trespass reason to enable Update declaration. ",
206
+
207
+
208
+
209
+
210
+
211
+
212
+
213
+
214
+
215
+
216
+
217
+ "search-pane.paneTitle": "Search",
218
+ "search-pane.searchField-h2-label": "Search",
219
+ "search-pane.searchableIndex-label-keyword": "Keyword",
220
+ "search-pane.searchableIndex-label-name-or-barcode": "Name or barcode",
221
+ "search-pane.searchableIndex-label-customer-desc": "Customer description",
222
+ "search-pane.searchableIndex-label-witnessed-by": "Witnessed by",
223
+ "search-pane.searchableIndex-label-created-by": "Created by",
224
+ "search-pane.filters-h2-label": "Filters",
225
+ "search-pane.location-auto-suggest-label": "Location",
226
+ "search-pane.created-by-text-field-label": "Created by",
227
+ "search-pane.witnessed-by-text-field-label": "Witnessed by",
228
+ "search-pane.date-picker-from-label": "From",
229
+ "search-pane.date-picker-to-label": "To",
230
+ "search-pane.trespass-checkbox-label": "Trespassed",
231
+ "search-pane.filter-with-incident-type-auto-suggest-label": "Filter with incident type",
232
+ "search-pane.reset-all-button": "Reset all",
233
+ "search-pane.incTypesItems-label-no-loaded": "No incident types loaded",
234
+ "search-pane.locationItems-label-no-loaded": "No locations loaded",
235
+
236
+ "search-pane.accordion-label-location": "Location",
237
+ "search-pane.accordion-label-incident-types": "Incident type",
238
+ "search-pane.trespass-status-label": "Trespass status",
239
+ "search-pane.radio-button-all-statuses-label": "All statuses",
240
+ "search-pane.radio-button-current-trespass-label": "Current trespass",
241
+ "search-pane.radio-button-expired-trespass-label": "Expired trespass",
242
+ "search-pane.accordion-label-staff-suppressed": "Staff suppressed",
243
+ "search-pane.radio-button-suppressed-non-label": "No",
244
+ "search-pane.radio-button-suppressed-suppressed-label": "Yes",
245
+ "search-pane.radio-button-suppressed-all-label": "Both",
246
+
247
+
248
+
249
+
250
+
251
+
252
+ "results-pane.paneTitle": "Results",
253
+ "results-pane.paneSubTitle": "{count, number} {count, plural, one {record found} other {records found}}",
254
+ "results-pane.create-report-button": "Create report",
255
+ "results-pane.customers-formatter-trespass-expired": "Trespass expired",
256
+ "results-pane.customers-formatter-no-associated-customers": "No associated customers",
257
+ "results-pane.customers-formatter-trespass-no-end-date": "No trespass end date provided",
258
+
259
+
260
+
261
+
262
+
263
+ "create-pane.paneTitle": "Create report",
264
+ "create-pane.loading-pane-submit-paneTitle": "Creating report...",
265
+ "create-pane.location-select-label": "Location",
266
+ "create-pane.sub-location-select-label": "Sub location",
267
+ "create-pane.date-of-incident-date-picker-label": "Date of incident",
268
+ "create-pane.time-of-incident-date-picker-label": "Time of incident",
269
+ "create-pane.select-add-incident-type-button": "Select & add incident type",
270
+ "create-pane.incident-description-text-area": "Incident description",
271
+ "create-pane-detailedDescriptionIncident-editor-label": "Incident description",
272
+ "create-pane.locationDataOptions-label-select-location": "Select a location",
273
+ "create-pane.locationDataOptions-label-no-loaded": "No service locations loaded",
274
+
275
+ "create-pane.subLocations-label-default-no-sub-location": "No sub-location",
276
+ "create-pane.subLocations-label-no-sub-location-available": "No sub locations available",
277
+
278
+ "details-pane.pane-header-paneTitle": "Details",
279
+ "details-pane.loading-pane-paneTitle": "Loading details...",
280
+ "details-pane.paneTitle": "Details",
281
+ "details-pane.accordion-label.details": "Details",
282
+ "details-pane.accordion-label.incident-details": "Incident details",
283
+ "details-pane.incident-location": "Incident location",
284
+ "details-pane.sub-location": "Sub location",
285
+ "details-pane.date-of-incident": "Date of incident",
286
+ "details-pane.time-of-incident": "Time of incident",
287
+ "details-pane.incident-description": "Incident description",
288
+ "details-pane.created-by": "Created by",
289
+ "details-pane.trespass-active-until": "Trespass active until {date}",
290
+ "details-pane.trespass-expired": "Trespass expired {date}",
291
+ "details-pane.customersForRender-cust-description": "Customer description",
292
+ "details-pane.customersForRender-no-cust-description": "No customer description",
293
+ "details-pane.customersForRender-identity-details": "Identity details",
294
+ "details-pane.customersForRender-no-identity-details": "No identity details",
295
+ "details-pane.customersForRender-trespass-details": "Trespass details",
296
+ "details-pane.customersForRender-no-trespass-details": "No trespass details",
297
+ "details-pane.customersForRender-declaration-of-service": "Declaration of service",
298
+ "details-pane.customersForRender-no-declaration-of-service": "No declaration of service",
299
+ "details-pane.customersForRender-declaration-of-service-signature-yes": "Yes",
300
+ "details-pane.staff-suppressed": "Staff suppressed",
301
+ "message-banner.error-missing-users-404": "Some users not found in the Users application for get current name value by associated key. ids that could not be found: {ids}",
302
+
303
+
304
+
305
+
306
+
307
+
308
+ "details-pane.error-generate-trespass-doc": "Error generating trespass documents: {documentErrorMessage}",
309
+ "generate-trespass.error-doc-incTypes": "Error resolving incident types - error: {error}",
310
+ "generate-trespass.error-doc-locationIdString": "No match found for locationIdString to make location value pretty (Ex: 'south-hill' to 'South Hill') - error: {error}",
311
+ "generate-trespass.error-doc-formatDate": "formatDate token handler could not format provided dateString of: {dateString} - error: {error}",
312
+ "generate-trespass.error-doc-resolve": "Error resolving template path: {path} - error: {error}",
313
+ "generate-trespass.error-doc-createTrespassDocument": "Error at createTrespassDocument: {error}",
314
+ "generate-trespass.error-doc-readyTrespassDocuments": "Error at readyTrespassDocuments: {error}",
315
+ "generate-trespass.error-doc-declarationOfServiceIssuedBy": "Logged in FOLIO user not placed in trespass document at token. Empty value printed. Error: {error}",
316
+ "generate-trespass.error-doc-descriptionPlainFallback": "Trespass description not placed in trespass document at token. Empty value printed. Error: {error}",
317
+ "generate-trespass.error-doc-generatePDFAttachments": "Error generating PDFs: {error}",
318
+ "generate-trespass.error-doc-unexpected-error": "Unexpected error in PDF generation: {error}",
319
+
320
+ "edit-pane.loading-pane-paneTitle": "Loading edit...",
321
+ "edit-pane.loading-pane-submit-paneTitle": "Updating report...",
322
+ "edit-pane.paneTitle": "Edit",
323
+ "edit-pane.incident-location-select-label": "Incident location",
324
+ "edit-pane.sub-location-select-label": "Sub location",
325
+ "edit-pane.date-of-incident-date-picker-label": "Date of incident",
326
+ "edit-pane.time-of-incident-date-picker-label": "Time of incident",
327
+ "edit-pane.select-add-incident-type-button": "Select & add incident type",
328
+ "edit-pane.incident-description": "Incident description",
329
+ "edit-pane.accordion-administrative-data-label": "Administrative data",
330
+ "edit-pane.checkbox-staff-suppress": "Staff suppress",
331
+
332
+ "incident-type-not-found-fallback": "Not found: incident type id {id}",
333
+
334
+
335
+ "modal-add-media-error-msg-unrecognized": "Unrecognized file signature",
336
+ "modal-add-media-error-msg-ext-not-allowed": "Not an allowed extension {ext}",
337
+ "modal-add-media-error-msg-file-too-large": "File too large for type {mime}, size: {fileSize} MB",
338
+ "modal-add-media-error-msg-while-reading-file": "Error while reading file - error: {errorMsg}",
339
+ "modal-add-media-error-msg-default": "Error accepting file",
340
+ "modal-add-media-label-add-media-file": "Add media file",
341
+ "modal-add-media-textField-description-media-file": "Description of media file",
342
+
343
+ "modal-select-customer.paneTitle": "Customer results",
344
+ "modal-select-customer.search-pane.paneTitle": "Search",
345
+ "modal-select-customer.loading-pane-paneTitle": "Loading results...",
346
+ "modal-select-customer.results-pane-paneTitle": "Results",
347
+ "modal-select-customer.results-pane.paneSubTitle": "{count, number} {count, plural, one {record found} other {records found}}",
348
+ "modal-select-customer.resultsFormatter-active": "Active",
349
+ "modal-select-customer.resultsFormatter-inactive": "Inactive",
350
+ "modal-dirty-form-warn-label": "Are you sure?",
351
+ "modal-dirty-form-warn-message": "There are unsaved changes.",
352
+
353
+
354
+
355
+
356
+ "modal-select-witness.paneTitle": "Select witness",
357
+ "modal-select-witness.search-pane.paneTitle": "Search",
358
+ "modal-select-witness.loading-pane-paneTitle": "Loading results...",
359
+ "modal-select-witness.results-pane-paneTitle": "Results",
360
+ "modal-select-witness.results-pane.paneSubTitle": "{count, number} {count, plural, one {record found} other {records found}}",
361
+
362
+ "modal-custom-witness-details-paneTitle": "Custom witness",
363
+
364
+ "modal-custom-witness-firstName-details": "First name: ",
365
+ "modal-custom-witness-lastName-details": "Last name: ",
366
+ "modal-custom-witness-role-organization-details": "Role / Organization: ",
367
+ "modal-custom-witness-phone-details": "Phone: ",
368
+ "modal-custom-witness-email-details": "Email: ",
369
+ "modal-custom-witness-firstName-label": "First name",
370
+ "modal-custom-witness-lastName-label": "Last name",
371
+ "modal-custom-witness-role-organization-label": "Role / Organization",
372
+ "modal-custom-witness-phone-label": "Phone",
373
+ "modal-custom-witness-email-label": "Email",
374
+ "modal-custom-witness-error-phone": "Phone invalid",
375
+ "modal-custom-witness-error-email": "Email invalid",
376
+
377
+
378
+ "modal-describe-unknown-customer-label": "Describe customer",
379
+ "modal-describe-unknown-customer-accordion-desc-cust-label": "Describe customer",
380
+ "modal-describe-unknown-customer-accordion-identity-details-label": "Identity details",
381
+ "modal-describe-unknown-customer.textField-first-name-label": "First name",
382
+ "modal-describe-unknown-customer.textField-last-name-label": "Last name",
383
+ "modal-describe-unknown-customer.textArea-description-label": "Description",
384
+
385
+ "modal-incident-type-label": "Select incident type",
386
+ "modal-incident-type.filter-pane.paneTitle": "Filter",
387
+ "modal-incident-type.incident-types-pane.paneTitle": "Incident types",
388
+
389
+ "modal-customer-details-label": "Customer details",
390
+ "modal-customer-details.textField-first-name-label": "First name",
391
+ "modal-customer-details.textField-last-name-label": "Last name",
392
+ "modal-customer-details.accordion-label-customer-description": "Customer description",
393
+ "modal-customer-details.textArea-description-of-customer-label": "Description of customer",
394
+ "modal-customer-details.accordion-identity-details": "Identity details",
395
+ "modal-customer-details-sex": "Sex",
396
+ "modal-customer-details-race": "Race",
397
+ "modal-customer-details-height": "Height",
398
+ "modal-customer-details-weight": "Weight",
399
+ "modal-customer-details-hair": "Hair",
400
+ "modal-customer-details-eyes": "Eyes",
401
+ "modal-customer-details-date-of-birth": "Date of birth",
402
+ "modal-customer-details-street-address": "Street address",
403
+ "modal-customer-details-city": "City",
404
+ "modal-customer-details-state": "State",
405
+ "modal-customer-details-zipcode": "Zipcode",
406
+
407
+ "modal-view-customer-details-label": "Customer details",
408
+ "modal-view-customer-details.accordion-label-customer-description": "Customer description",
409
+ "modal-view-customer-details.accordion-label-identity-details": "Identity details",
410
+ "modal-view-customer-details.headline-sex": "Sex",
411
+ "modal-view-customer-details.headline-race": "Race",
412
+ "modal-view-customer-details.headline-height": "Height",
413
+ "modal-view-customer-details.headline-weight": "Weight",
414
+ "modal-view-customer-details.headline-hair": "Hair",
415
+ "modal-view-customer-details.headline-eyes": "Eyes",
416
+ "modal-view-customer-details.headline-date-of-birth": "Date of birth",
417
+ "modal-view-customer-details.headline-street-address": "Street address",
418
+ "modal-view-customer-details.headline-city": "City",
419
+ "modal-view-customer-details.headline-state": "State",
420
+ "modal-view-customer-details.headline-zipcode": "Zipcode",
421
+
422
+ "modal-view-trespass-label": "Trespass",
423
+ "modal-view-trespass.accordion-trespass-details-label": "Trespass details",
424
+ "modal-view-trespass.headline-exclusion-based-on": "Exclusion or trespass based on",
425
+ "modal-view-trespass.headline-end-date-trespass": "End date of trespass",
426
+ "modal-view-trespass.accordion-declaration-of-service-label": "Declaration of service",
427
+ "modal-view-trespass.headline-date-served": "Date served",
428
+ "modal-view-trespass.headline-place-signed": "Place signed",
429
+ "modal-view-trespass.headline-title": "Title",
430
+ "modal-view-trespass.headline-signed": "Signed",
431
+
432
+ "modal-trespass-label": "Trespass",
433
+ "modal-trespass.accordion-trespass-details-label": "Trespass details",
434
+ "modal-trespass-headline-exclusion-based-on": "Exclusion or trespass based on",
435
+ "modal-trespass-checkbox-exclusion-city-state-fed": "Violation of City/State/Federal",
436
+ "modal-trespass-checkbox-exclusion-customer-behavior": "Customer behavior",
437
+ "modal-trespass-checkbox-exclusion-inst-code-conduct": "Violation of institutional code of conduct",
438
+ "modal-trespass-checkbox-exclusion-previous-warning": "Previous warning",
439
+ "modal-trespass-checkbox-use-incident-description": "Use incident description",
440
+ "modal-trespass.datepicker-end-date-trespass": "End date of trespass",
441
+ "modal-trespass.accordion-declaration-of-service-label": "Declaration of service",
442
+ "modal-trespass.datepicker-date-served": "Date served",
443
+ "modal-trespass.select-place-signed": "Place signed",
444
+ "modal-trespass.textField-title": "Title",
445
+ "modal-trespass.checkbox-signed": "Signed",
446
+ "modal-trespass.checkbox-update-declaration": "Update declaration",
447
+
448
+ "modal-view-document-download-document-button": "Download document",
449
+ "modal-view-document-label": "Document",
450
+ "modal-view-image-image-description": "Image description",
451
+
452
+ "modal-attention-declaration-of-service": "Declaration of service",
453
+ "modal-attention-declaration-of-service-message": "Attention - updating this incident will require re-declaration for the trespass document generation:",
454
+ "modal-attention-declaration-of-service-question": "Would you like to update the declaration date and signature?",
455
+
456
+
457
+
458
+
459
+
460
+
461
+
462
+
463
+
464
+ "accordion-label-customer-information": "Customer information",
465
+ "accordion-label-customers": "Customers",
466
+ "accordion-label-no-associated-customers": "No associated customers",
467
+ "accordion-label-incident": "Incident",
468
+ "accordion-label-media": "Media",
469
+ "accordion-label-images": "Images",
470
+ "accordion-label-videos": "Videos",
471
+ "accordion-label-documents": "Documents",
472
+
473
+ "customers-list-label": "{count, plural, one {Customer} other {Customers}}",
474
+ "customers-list-is-empty-message": "Customer is required <bold>*</bold>",
475
+ "incident-types-list-label": "{count, plural, one {Incident type} other {Incident types}}",
476
+ "incident-types-list-is-empty-message": "Incident type is required <bold>*</bold>",
477
+
478
+
479
+ "witnesses-list-label": "{count, plural, one {<bold>Witness</bold>} other {<bold>Witnesses</bold>} }",
480
+ "witnesses-list-is-empty-message": "Witness is required <bold>*</bold>",
481
+
482
+ "media-list-label": "Media",
483
+ "media-list-is-empty-message": "No media files to view",
484
+
485
+ "select-add-known-customer-button": "Select and add known customer",
486
+ "describe-add-unknown-customer-button": "Describe and add unknown customer",
487
+ "select-add-witness-button": "Select and add witness",
488
+ "add-self-witness-button": "Add self as witness",
489
+ "search-button": "Search",
490
+ "close-continue-button": "Close and continue",
491
+ "save-and-close-button": "Save & close",
492
+ "close-button": "Close",
493
+ "cancel-button": "Cancel",
494
+ "add-media-button": "Add media",
495
+ "dropdown-actions-button": "Actions",
496
+ "delete-button": "Delete",
497
+ "add-button": "Add",
498
+ "edit-button": "Edit",
499
+ "remove-button": "Remove",
500
+ "more-button": "+ more",
501
+ "edit-details-button": "Edit details",
502
+ "add-details-button": "Add details",
503
+ "edit-trespass-button": "Edit trespass",
504
+ "add-trespass-button": "Add trespass",
505
+ "add-custom-witness-button": "Add custom witness",
506
+ "undo-button": "Undo",
507
+ "view-details-custom-witness": "View details",
508
+ "keep-editing-button": "Keep editing",
509
+ "close-without-saving-button": "Close without saving",
510
+ "yes-button": "Yes",
511
+ "no-button": "No",
512
+ "link-to-button": "Link to existing report",
513
+
514
+
515
+
516
+ "media-marked-for-removal": "Marked for removal",
517
+
518
+ "customer-not-available": "Customer n/a",
519
+ "not-available": "N/A",
520
+ "unknown-name-placeholder": "Unknown",
521
+ "isApproximateTime": "Approximately",
522
+ "video-player-default-text": "Your browser does not support the video tag.",
523
+
524
+ "column-mapping.name": "Name",
525
+ "column-mapping.incidentLocation": "Location",
526
+ "column-mapping.dateOfIncident": "Date of incident",
527
+ "column-mapping.incidentTypes": "Incident type",
528
+ "column-mapping.witnessedBy": "Witnessed by",
529
+ "column-mapping.createdBy": "Created by",
530
+ "column-mapping.trespassExpirationDates": "Trespass expiration",
531
+ "column-mapping.active": "Active",
532
+ "column-mapping.barcode": "Barcode",
533
+ "column-mapping.patronGroup": "Patron group",
534
+ "column-mapping.profilePicture": "Profile picture",
535
+ "no-trespass": "No trespass",
536
+ "no-customers": "No customers",
537
+
538
+ "linked-incident.aria-label-report-details-view": "To linked report details view",
539
+ "linked-incidents-label": "Linked reports",
540
+ "linked-incidents-empty-label": "No linked reports"
541
+
542
+ }
@@ -0,0 +1,34 @@
1
+
2
+ Note: This is a selected list of criteria for local UI dev use. Certain sections and values have been removed as they are not directly applicable to UI development process and will be handled at a later stage.
3
+
4
+ # FOLIO Module Acceptance Values and Criteria (UI Modules)
5
+
6
+ ## Values
7
+ Module is secure
8
+ Module is multi-tenant
9
+ Module is internationalized
10
+ Module meets current accessibility requirements
11
+ Module offers a cohesive user experience consistent with the rest of FOLIO
12
+ Module is scalable
13
+
14
+ ---
15
+
16
+ ## Criteria
17
+ Note: Frontend criteria apply to both modules and shared libraries.
18
+
19
+ For each consumed API package.json MUST include the interface requirement in the "okapiInterfaces" or "optionalOkapiInterfaces" section (3, 5)
20
+ note: read more at https://github.com/folio-org/stripes/blob/master/doc/dev-guide.md#the-package-file-stripes-entry
21
+
22
+ If provided, End-to-end tests must be written in an officially supported technology¹ (3, 4)
23
+ note: while it's strongly recommended that modules implement integration tests, it's not a requirement
24
+ note: these tests are defined in https://github.com/folio-org/stripes-testing
25
+
26
+ Have i18n support via react-intl and an en.json file with English texts (8)
27
+ Have WCAG 2.1 AA compliance as measured by a current major version of axe DevTools Chrome Extension (9)
28
+ Use the Stripes version of referred on the Officially Supported Technologies page¹ (10, 16)
29
+ Follow relevant existing UI layouts, patterns and norms (10)
30
+ note: read more about current practices at https://ux.folio.org/docs/all-guidelines/
31
+
32
+ E.g. Saving state when navigating between apps (or confirming that you’ll lose the state)
33
+ For UI links to documentation, there is no rule on where that documentation should be hosted, i.e. docs.folio.org, or wiki.folio.org, or module-specific destinations, as long as it is publicly accessible.
34
+ Must work in the latest version of Chrome (the supported runtime environment) at the time of evaluation (10)