@7365admin1/layer-common 4.89.0 → 4.90.0

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,11 @@
1
1
  # @iservice365/layer-common
2
2
 
3
+ ## 4.90.0
4
+
5
+ ### Minor Changes
6
+
7
+ - eb4bce2: Phones: below 600px every data table (`VDataTable`, `VDataTableServer`, `VDataTableVirtual`) shows each row as a stacked card (label: value) instead of a wide grid scrolled sideways, and the 720px `.app-table-scroll` floor no longer applies on phones. Tablets and desktop are unchanged.
8
+
3
9
  ## 4.89.0
4
10
 
5
11
  ### Minor Changes
@@ -2004,11 +2010,11 @@
2004
2010
  `utils/console-tier.ts` + `composables/useConsoleTier.ts` mirror the server's
2005
2011
  own rule from two endpoints the console already calls, unprojected:
2006
2012
 
2007
- GET /api/members/user/:user/app/admin the Seven365 staff membership
2008
- GET /api/roles/id/:role that membership's role document
2013
+ GET /api/members/user/:user/app/admin the Seven365 staff membership
2014
+ GET /api/roles/id/:role that membership's role document
2009
2015
 
2010
- owner = member.type === "admin" && role.type === "admin" && role.default === true
2011
- staff = member.type === "admin" && role.type === "admin"
2016
+ owner = member.type === "admin" && role.type === "admin" && role.default === true
2017
+ staff = member.type === "admin" && role.type === "admin"
2012
2018
 
2013
2019
  `role.default` is the marker because it is the only property of a platform
2014
2020
  staff role no API caller can set - `role.controller.ts` validates create and
@@ -1119,6 +1119,33 @@ select option {
1119
1119
  }
1120
1120
  }
1121
1121
 
1122
+ /* Phones: tables restack into one card per row (Vuetify mobile mode, set in
1123
+ plugins/vuetify.ts), so the 720px grid floor above must not apply. */
1124
+ @media (max-width: 599.98px) {
1125
+ .app-table-scroll > * {
1126
+ min-width: 0;
1127
+ }
1128
+
1129
+ .v-data-table__tr--mobile {
1130
+ border-bottom: 1px solid var(--border);
1131
+ }
1132
+
1133
+ .v-data-table__tr--mobile > td {
1134
+ grid-template-columns: minmax(0, 2fr) minmax(0, 3fr);
1135
+ column-gap: 12px;
1136
+ }
1137
+
1138
+ .v-data-table__td-title {
1139
+ color: var(--muted);
1140
+ font-size: 12px;
1141
+ }
1142
+
1143
+ .v-data-table__td-value {
1144
+ min-width: 0;
1145
+ overflow-wrap: anywhere;
1146
+ }
1147
+ }
1148
+
1122
1149
  /* ------------------------------------------------------------------ */
1123
1150
  /* Field label (`components/InputLabel.vue`, 125 caller files). */
1124
1151
  /* */
@@ -77,10 +77,11 @@
77
77
  </v-tab>
78
78
  </v-tabs>
79
79
 
80
+ <!-- Wraps on narrow screens (was a fixed 60px row: on a phone the
81
+ "Not Checked Out" label stacked one letter per line). -->
80
82
  <v-card
81
- class="w-100 px-3 d-flex align-center ga-5 py-2"
83
+ class="w-100 px-3 d-flex flex-wrap align-center ga-3 py-2 visitor-filters"
82
84
  flat
83
- :height="60"
84
85
  >
85
86
  <v-text-field
86
87
  v-model="searchInput"
@@ -3159,4 +3160,13 @@ watchEffect(async () => {
3159
3160
  opacity: 0.55;
3160
3161
  cursor: not-allowed;
3161
3162
  }
3163
+
3164
+ .visitor-filters > *:not(.v-checkbox) {
3165
+ flex: 1 1 160px;
3166
+ min-width: 150px;
3167
+ }
3168
+
3169
+ .visitor-filters > .v-checkbox {
3170
+ flex: 0 0 auto;
3171
+ }
3162
3172
  </style>
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.89.0",
5
+ "version": "4.90.0",
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.",
@@ -114,6 +114,12 @@ export default defineNuxtPlugin((app) => {
114
114
 
115
115
  const vuetify = createVuetify({
116
116
  defaults: {
117
+ // Phones (owner 2026-10-02, "most pages are not mobile responsive"): below
118
+ // 600px every data table shows each row as a stacked card (label: value)
119
+ // instead of a wide grid scrolled sideways. Tablets and desktop unchanged.
120
+ VDataTable: { mobileBreakpoint: "sm" },
121
+ VDataTableServer: { mobileBreakpoint: "sm" },
122
+ VDataTableVirtual: { mobileBreakpoint: "sm" },
117
123
  VTextField: {
118
124
  variant: "outlined",
119
125
  density: "comfortable",