@7365admin1/layer-common 3.2.2-staging.151 → 3.2.2-staging.153
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/components/Chat/SkeletonLoader.vue +9 -2
- package/components/ClientMain.vue +4 -6
- package/components/Input/DatePicker.vue +0 -1
- package/components/Input/DateTimePicker.vue +0 -1
- package/components/PlanStatusBadge.vue +7 -8
- package/components/PlateNumberDisplay.vue +9 -6
- package/components/TableV3.vue +0 -4
- package/components/TiptapEditor.vue +33 -40
- package/components/TiptapEditorQr.vue +5 -2
- package/package.json +1 -1
|
@@ -58,12 +58,19 @@ const chatSkeletons = ref([
|
|
|
58
58
|
overflow-y: auto;
|
|
59
59
|
}
|
|
60
60
|
|
|
61
|
+
/*
|
|
62
|
+
* `background-color: white` used to sit here and never applied: the footer
|
|
63
|
+
* carries `color="background"`, and Vuetify's `.bg-background` sets the
|
|
64
|
+
* background with `!important`. It is deleted rather than out-specified - the
|
|
65
|
+
* theme colour is the one that should win, and a literal white would have been
|
|
66
|
+
* wrong in the dark theme anyway. The border was a literal `#ddd` for the same
|
|
67
|
+
* reason and is now the shared rule colour.
|
|
68
|
+
*/
|
|
61
69
|
.chat-footer {
|
|
62
70
|
position: sticky;
|
|
63
71
|
bottom: 0;
|
|
64
72
|
width: 100%;
|
|
65
|
-
|
|
66
|
-
border-top: 1px solid #ddd;
|
|
73
|
+
border-top: 1px solid var(--border);
|
|
67
74
|
display: flex;
|
|
68
75
|
justify-content: center;
|
|
69
76
|
align-items: center;
|
|
@@ -855,20 +855,18 @@ onUnmounted(() => {
|
|
|
855
855
|
/* ===== TABLE ===== */
|
|
856
856
|
.table-scroll { overflow-x: auto; }
|
|
857
857
|
table { width: 100%; border-collapse: collapse; font-size: 13px; }
|
|
858
|
+
/* `.table-card thead th` / `tbody td` in screens.css state the design's table
|
|
859
|
+
header and cell with `!important`; the padding, font, colour and background
|
|
860
|
+
this block used to set never applied. Only what still applies is kept. */
|
|
858
861
|
thead th {
|
|
859
|
-
padding: 10px 16px;
|
|
860
862
|
text-align: left;
|
|
861
|
-
font-weight: 600;
|
|
862
|
-
font-size: 13px;
|
|
863
|
-
color: var(--text2);
|
|
864
863
|
border-bottom: 1px solid var(--border);
|
|
865
864
|
white-space: nowrap;
|
|
866
|
-
background: var(--card);
|
|
867
865
|
}
|
|
868
866
|
tbody tr { border-bottom: 1px solid var(--hover); transition: background 0.1s; }
|
|
869
867
|
tbody tr:last-child { border-bottom: none; }
|
|
870
868
|
tbody tr:hover { background: var(--thead); }
|
|
871
|
-
tbody td {
|
|
869
|
+
tbody td { vertical-align: middle; }
|
|
872
870
|
|
|
873
871
|
.empty { text-align: center; color: var(--muted); padding: 48px 0 !important; }
|
|
874
872
|
.td-name { font-weight: 500; color: var(--text); }
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
</v-chip>
|
|
2
|
+
<!--
|
|
3
|
+
The design's status pill, not Vuetify's tonal chip. The word is passed
|
|
4
|
+
through so `utils/status.ts` picks the tone: "Active" -> ok, and "Deactive"
|
|
5
|
+
is not a word the map names, so it comes out neutral - the same two colours
|
|
6
|
+
the old `success` / `grey` chip drew, now from the shared tokens.
|
|
7
|
+
-->
|
|
8
|
+
<StatusChip :status="isActive ? 'Active' : 'Deactive'" />
|
|
10
9
|
</template>
|
|
11
10
|
|
|
12
11
|
<script setup lang="ts">
|
|
@@ -4,13 +4,16 @@
|
|
|
4
4
|
{{ formatted }}
|
|
5
5
|
</span>
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
<!--
|
|
8
|
+
The overflow count is a tag, not a status, so it takes the design's
|
|
9
|
+
dotless neutral chip rather than Vuetify's default grey one.
|
|
10
|
+
-->
|
|
11
|
+
<StatusChip
|
|
8
12
|
v-if="extraCount > 0 && !showAll"
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
</v-chip>
|
|
13
|
+
tone="neutral"
|
|
14
|
+
:dot="false"
|
|
15
|
+
:label="`+ ${extraCount}`"
|
|
16
|
+
/>
|
|
14
17
|
</div>
|
|
15
18
|
</template>
|
|
16
19
|
|
package/components/TableV3.vue
CHANGED
|
@@ -162,10 +162,6 @@ watch(
|
|
|
162
162
|
* same tokenised header, cell and hover treatment as every other table in the
|
|
163
163
|
* product, which measures 4.77:1 light / 4.71:1 dark.
|
|
164
164
|
*/
|
|
165
|
-
.table-v3 :deep(tbody td) {
|
|
166
|
-
height: 54px;
|
|
167
|
-
}
|
|
168
|
-
|
|
169
165
|
.table-v3__footer {
|
|
170
166
|
border-top: 1px solid var(--border);
|
|
171
167
|
border-bottom: 0;
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div>
|
|
3
|
-
|
|
3
|
+
<!-- AppCard, not VCard: the design's 14px radius and 1px rule, without
|
|
4
|
+
Vuetify's own elevation and 4px corner fighting the class for it. -->
|
|
5
|
+
<AppCard>
|
|
4
6
|
<VuetifyTiptap v-model="content" />
|
|
5
|
-
</
|
|
7
|
+
</AppCard>
|
|
6
8
|
</div>
|
|
7
9
|
</template>
|
|
8
10
|
|
|
@@ -39,35 +41,37 @@ const updateContent = () => {
|
|
|
39
41
|
</script>
|
|
40
42
|
|
|
41
43
|
<style scoped>
|
|
42
|
-
|
|
44
|
+
/*
|
|
45
|
+
* The rich-text tables. Every colour here used to be a literal - #333 borders,
|
|
46
|
+
* #fff and #f8f8f8 cells, #f0f0f0 headers, #000 header text, #e6f3ff hover -
|
|
47
|
+
* so an editor opened in the dark theme drew a white table with black text on
|
|
48
|
+
* a dark page. They are the same tokens every other table in the product uses,
|
|
49
|
+
* so the editor content now follows the theme it is opened in.
|
|
50
|
+
*
|
|
51
|
+
* The selectors were also written twice, once with :deep() and again with the
|
|
52
|
+
* deprecated /deep/, matching the same two roots. One copy is enough.
|
|
53
|
+
*/
|
|
54
|
+
:deep(.vuetify-pro-tiptap-editor__content) {
|
|
43
55
|
padding: 15px;
|
|
44
56
|
}
|
|
45
57
|
|
|
46
|
-
/* Table styles with strong visible borders */
|
|
47
58
|
:deep(.vuetify-pro-tiptap-editor__content table),
|
|
48
|
-
:deep(.ProseMirror table)
|
|
49
|
-
/deep/ .vuetify-pro-tiptap-editor__content table,
|
|
50
|
-
/deep/ .ProseMirror table {
|
|
59
|
+
:deep(.ProseMirror table) {
|
|
51
60
|
border-collapse: collapse;
|
|
52
61
|
border-spacing: 0;
|
|
53
|
-
border: 2px solid
|
|
62
|
+
border: 2px solid var(--border) !important;
|
|
54
63
|
width: 100%;
|
|
55
64
|
margin: 16px 0;
|
|
56
|
-
background-color:
|
|
65
|
+
background-color: var(--card);
|
|
57
66
|
display: table !important;
|
|
58
|
-
font-size:
|
|
67
|
+
font-size: var(--fs-cell);
|
|
59
68
|
}
|
|
60
69
|
|
|
61
|
-
/* Cell borders - very visible */
|
|
62
70
|
:deep(.vuetify-pro-tiptap-editor__content table th),
|
|
63
71
|
:deep(.vuetify-pro-tiptap-editor__content table td),
|
|
64
72
|
:deep(.ProseMirror table th),
|
|
65
|
-
:deep(.ProseMirror table td)
|
|
66
|
-
|
|
67
|
-
/deep/ .vuetify-pro-tiptap-editor__content table td,
|
|
68
|
-
/deep/ .ProseMirror table th,
|
|
69
|
-
/deep/ .ProseMirror table td {
|
|
70
|
-
border: 1px solid #333333 !important;
|
|
73
|
+
:deep(.ProseMirror table td) {
|
|
74
|
+
border: 1px solid var(--border) !important;
|
|
71
75
|
padding: 8px 12px;
|
|
72
76
|
text-align: left;
|
|
73
77
|
vertical-align: top;
|
|
@@ -75,38 +79,27 @@ const updateContent = () => {
|
|
|
75
79
|
box-sizing: border-box;
|
|
76
80
|
}
|
|
77
81
|
|
|
78
|
-
/* Header styling */
|
|
79
82
|
:deep(.vuetify-pro-tiptap-editor__content table th),
|
|
80
|
-
:deep(.ProseMirror table th)
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
color: #000000;
|
|
86
|
-
border-bottom: 2px solid #333333 !important;
|
|
83
|
+
:deep(.ProseMirror table th) {
|
|
84
|
+
font-weight: var(--fw-table-head);
|
|
85
|
+
background-color: var(--thead);
|
|
86
|
+
color: var(--text);
|
|
87
|
+
border-bottom: 2px solid var(--border) !important;
|
|
87
88
|
}
|
|
88
89
|
|
|
89
|
-
/* Regular cells */
|
|
90
90
|
:deep(.vuetify-pro-tiptap-editor__content table td),
|
|
91
|
-
:deep(.ProseMirror table td)
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
background-color: #ffffff;
|
|
91
|
+
:deep(.ProseMirror table td) {
|
|
92
|
+
background-color: var(--card);
|
|
93
|
+
color: var(--text);
|
|
95
94
|
}
|
|
96
95
|
|
|
97
|
-
/* Alternating row colors */
|
|
98
96
|
:deep(.vuetify-pro-tiptap-editor__content table tr:nth-child(2n) td),
|
|
99
|
-
:deep(.ProseMirror table tr:nth-child(2n) td)
|
|
100
|
-
|
|
101
|
-
/deep/ .ProseMirror table tr:nth-child(2n) td {
|
|
102
|
-
background-color: #f8f8f8;
|
|
97
|
+
:deep(.ProseMirror table tr:nth-child(2n) td) {
|
|
98
|
+
background-color: var(--thead);
|
|
103
99
|
}
|
|
104
100
|
|
|
105
|
-
/* Hover effects */
|
|
106
101
|
:deep(.vuetify-pro-tiptap-editor__content table tr:hover td),
|
|
107
|
-
:deep(.ProseMirror table tr:hover td)
|
|
108
|
-
|
|
109
|
-
/deep/ .ProseMirror table tr:hover td {
|
|
110
|
-
background-color: #e6f3ff !important;
|
|
102
|
+
:deep(.ProseMirror table tr:hover td) {
|
|
103
|
+
background-color: var(--hover) !important;
|
|
111
104
|
}
|
|
112
105
|
</style>
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div>
|
|
3
|
-
|
|
3
|
+
<!-- AppCard, not VCard: the design's 14px radius and 1px rule, without
|
|
4
|
+
Vuetify's own elevation and 4px corner fighting the class for it.
|
|
5
|
+
Same swap as TiptapEditor, which wraps the same editor. -->
|
|
6
|
+
<AppCard class="mx-auto">
|
|
4
7
|
<VuetifyTiptap
|
|
5
8
|
v-model="content"
|
|
6
9
|
markdown-theme="github"
|
|
@@ -9,7 +12,7 @@
|
|
|
9
12
|
:maxWidth="maxWidth"
|
|
10
13
|
:disabled="isViewMode"
|
|
11
14
|
/>
|
|
12
|
-
</
|
|
15
|
+
</AppCard>
|
|
13
16
|
</div>
|
|
14
17
|
</template>
|
|
15
18
|
|
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.
|
|
5
|
+
"version": "3.2.2-staging.153",
|
|
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.",
|