@7365admin1/layer-common 4.118.6 → 4.118.7

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # @iservice365/layer-common
2
2
 
3
+ ## 4.118.7
4
+
5
+ ### Patch Changes
6
+
7
+ - 5a726e3: Incident report PDF: attachment tiles sit inside the printable area so every tile border is fully drawn (the right tile's edge was cut off).
8
+ - 1dbc8a6: Incident report PDF: Incident Information cells paint their own borders (no collapsed borders), removing a ghost of the repeated heading at the foot of a page.
9
+
3
10
  ## 4.118.6
4
11
 
5
12
  ### Patch Changes
@@ -3163,11 +3170,11 @@ Monthly report: a month that had patrols opens the list of that month's patrol r
3163
3170
  `utils/console-tier.ts` + `composables/useConsoleTier.ts` mirror the server's
3164
3171
  own rule from two endpoints the console already calls, unprojected:
3165
3172
 
3166
- GET /api/members/user/:user/app/admin the Seven365 staff membership
3167
- GET /api/roles/id/:role that membership's role document
3173
+ GET /api/members/user/:user/app/admin the Seven365 staff membership
3174
+ GET /api/roles/id/:role that membership's role document
3168
3175
 
3169
- owner = member.type === "admin" && role.type === "admin" && role.default === true
3170
- staff = member.type === "admin" && role.type === "admin"
3176
+ owner = member.type === "admin" && role.type === "admin" && role.default === true
3177
+ staff = member.type === "admin" && role.type === "admin"
3171
3178
 
3172
3179
  `role.default` is the marker because it is the only property of a platform
3173
3180
  staff role no API caller can set - `role.controller.ts` validates create and
@@ -77,8 +77,12 @@ watch(
77
77
  display: grid;
78
78
  grid-template-columns: 1fr 1fr;
79
79
  gap: 16px;
80
+ /* Keep every tile border fully inside the printable area: a border drawn on
81
+ the very edge of the page content is half cut off. */
82
+ padding: 0 2px 2px;
80
83
  }
81
84
  .ir-att-card {
85
+ box-sizing: border-box;
82
86
  break-inside: avoid;
83
87
  page-break-inside: avoid;
84
88
  border: 1px solid #8a8a8a;
@@ -302,13 +302,16 @@ const maskNRIC = (value: any) => {
302
302
  }
303
303
  .ir-status--approved { color: #2e7d32; }
304
304
  .ir-status--rejected { color: #c62828; }
305
- /* One table: borders collapse into single 1px rules. The heading row is the table
306
- header, so it repeats at the top of every page and every page starts with a
307
- closed top edge; rows never split. */
305
+ /* One table. Each cell paints its own right/bottom rule (the first cell also the
306
+ left one) and the heading cell all four, so borders are never painted outside
307
+ the cell that owns them: collapsed borders left a ghost of the repeated
308
+ heading in the page margin. The heading row is the table header, so it repeats
309
+ at the top of every page; rows never split. */
308
310
  .ir-table {
309
311
  width: 100%;
310
312
  table-layout: fixed;
311
- border-collapse: collapse;
313
+ border-collapse: separate;
314
+ border-spacing: 0;
312
315
  }
313
316
  .ir-table thead {
314
317
  display: table-header-group;
@@ -318,9 +321,13 @@ const maskNRIC = (value: any) => {
318
321
  page-break-inside: avoid;
319
322
  }
320
323
  .ir-cell {
321
- border: 1px solid #8a8a8a;
324
+ border-right: 1px solid #8a8a8a;
325
+ border-bottom: 1px solid #8a8a8a;
322
326
  vertical-align: top;
323
327
  }
328
+ .ir-cell:first-child {
329
+ border-left: 1px solid #8a8a8a;
330
+ }
324
331
  /* A label always travels with its value. */
325
332
  .ir-cell p:first-child {
326
333
  break-after: avoid;
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@7365admin1/layer-common",
3
3
  "license": "MIT",
4
4
  "type": "module",
5
- "version": "4.118.6",
5
+ "version": "4.118.7",
6
6
  "author": "7365admin1",
7
7
  "main": "./nuxt.config.ts",
8
8
  "//files": "What a consumer extending this layer actually loads. Without this npm ships the whole working tree - the changesets, the CI workflows, the render harness in tools/ and any scratch directory that happened to exist at publish time. Nuxt resolves a layer by directory, so every runtime directory below has to stay listed; adding a new top-level runtime directory means adding it here too.",