@7365admin1/layer-common 3.2.2-staging.178 → 3.2.2-staging.179

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.
@@ -657,6 +657,18 @@
657
657
  white-space: nowrap;
658
658
  }
659
659
 
660
+ /*
661
+ * `--thead` is intentionally translucent. A fixed header, however, sits above
662
+ * scrolling rows, so using the token by itself lets the first row show through
663
+ * the header. Layer the same tint over the card surface to keep the rendered
664
+ * colour unchanged while making the sticky header fully opaque.
665
+ */
666
+ .table-card .v-table--fixed-header thead th {
667
+ background:
668
+ linear-gradient(var(--thead), var(--thead)),
669
+ var(--card) !important;
670
+ }
671
+
660
672
  /**
661
673
  * ROW HEIGHT IS THE LINE BOX, NOT THE PADDING.
662
674
  *
@@ -71,7 +71,7 @@
71
71
 
72
72
  <div class="brand-drawer__names">
73
73
  <div class="brand-drawer__app">{{ props.title || APP_NAME }}</div>
74
- <div class="brand-drawer__suite">iService 365</div>
74
+ <div class="brand-drawer__suite">iService365</div>
75
75
  </div>
76
76
  </div>
77
77
 
@@ -15,10 +15,14 @@
15
15
  :to="props.route"
16
16
  class="switch-context__activator"
17
17
  >
18
- <!-- The design prints the organisation and site names in full.
19
- Vuetify's list-item title truncates by default, which cut them
20
- to "Property Managem…" / "Seventh Cond…" in the 252px rail. -->
21
- <v-list-item-title class="switch-context__name">
18
+ <!-- The design prints the organisation and site names in full, but
19
+ mid-word line breaks ("Manageme-nt", "Condominiu-m") are not
20
+ acceptable. Wrap at word boundaries onto up to two lines, then
21
+ ellipsis; the title attribute keeps the full name on hover. -->
22
+ <v-list-item-title
23
+ class="switch-context__name"
24
+ :title="name || `Select ${prop.title}`"
25
+ >
22
26
  {{ name || `Select ${prop.title}` }}
23
27
  </v-list-item-title>
24
28
  </v-list-item>
@@ -250,12 +254,18 @@ const selectItem = (value: string) => {
250
254
  background: var(--hover);
251
255
  }
252
256
 
253
- /* Wrap onto a second line instead of truncating - the design shows the full
254
- organisation and site names. */
257
+ /* Wrap the full organisation/site name at word boundaries onto up to two
258
+ lines, then ellipsis - never break mid-word. Full name is on the title
259
+ attribute for hover. */
255
260
  .switch-context__name {
261
+ display: -webkit-box;
262
+ line-clamp: 2;
263
+ -webkit-line-clamp: 2;
264
+ -webkit-box-orient: vertical;
265
+ overflow: hidden;
256
266
  white-space: normal;
257
- overflow: visible;
258
- overflow-wrap: anywhere;
267
+ overflow-wrap: normal;
268
+ word-break: normal;
259
269
  line-height: 1.25;
260
270
  }
261
271
  </style>
@@ -173,7 +173,13 @@
173
173
  :style="`max-height: calc(100vh - (${offset}px))`"
174
174
  >
175
175
  <template v-for="(_, slotName) in $slots" #[slotName]="slotProps">
176
- <slot :name="slotName" v-bind="slotProps" />
176
+ <!--
177
+ Vuetify invokes argument-less slots such as `no-data` with null
178
+ props. Vue's dynamic `renderSlot` expects an object and otherwise
179
+ crashes while reading `props.key`, leaving the previous route on
180
+ screen even though Vue Router has already updated the URL.
181
+ -->
182
+ <slot :name="slotName" v-bind="slotProps ?? {}" />
177
183
  </template>
178
184
 
179
185
  <!--
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@7365admin1/layer-common",
3
3
  "license": "MIT",
4
4
  "type": "module",
5
- "version": "3.2.2-staging.178",
5
+ "version": "3.2.2-staging.179",
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.",