@7365admin1/layer-common 3.2.2-staging.122 → 3.2.2-staging.123
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/assets/css/primitives.css +39 -0
- package/nuxt.config.ts +6 -1
- package/package.json +22 -1
- package/plugins/vuetify.ts +37 -1
- package/utils/materialSymbols.ts +363 -0
- package/.changeset/README.md +0 -8
- package/.changeset/camera-wall-gated-endpoint.md +0 -47
- package/.changeset/camera-wall-plain-english.md +0 -60
- package/.changeset/camera-wall-selection-and-guidance.md +0 -65
- package/.changeset/config.json +0 -11
- package/.changeset/dark-primary-contrast.md +0 -39
- package/.changeset/dashboard-dark-theme-contrast.md +0 -15
- package/.changeset/notification-preferences.md +0 -17
- package/.changeset/pm-sidebar-grouping-and-list-scaffold.md +0 -27
- package/.changeset/service-provider-invitation-actions.md +0 -28
- package/.editorconfig +0 -12
- package/.github/workflows/main.yml +0 -17
- package/.github/workflows/publish-staging.yml +0 -47
- package/.github/workflows/publish.yml +0 -39
- package/PUBLISHING.md +0 -269
- package/components/ScheduleTaskAreaFormDialog.vue +0 -141
- package/components/ScheduleTaskAreaUpdateMoreAction.vue +0 -104
- package/components/TableWithButton.vue +0 -94
- package/test/visitor-socket.test.mjs +0 -36
- package/tools/render-harness/README.md +0 -87
- package/tools/render-harness/baselines.json +0 -117
- package/tools/render-harness/harness-init.ps1 +0 -127
- package/tools/render-harness/probe.mjs +0 -229
- package/tools/render-harness/render-check.mjs +0 -306
- package/tools/render-harness/render-check.selftest.mjs +0 -129
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
// Proves each detector in probe.mjs FAILS the scenario it was written for, and
|
|
2
|
-
// passes the corrected version of that same scenario.
|
|
3
|
-
//
|
|
4
|
-
// Against a hand-built page rather than a product screen, on purpose: which
|
|
5
|
-
// screen happens to contain a disabled control or an undefined token changes
|
|
6
|
-
// week to week, and a guard nobody can demonstrate failing is not a guard.
|
|
7
|
-
//
|
|
8
|
-
// node render-check.selftest.mjs
|
|
9
|
-
import { chromium } from "playwright";
|
|
10
|
-
import probe from "./probe.mjs";
|
|
11
|
-
|
|
12
|
-
let failed = 0;
|
|
13
|
-
const check = (name, cond, got) => {
|
|
14
|
-
console.log(`${cond ? " ok " : "FAIL "}${name}${cond ? "" : ` got: ${JSON.stringify(got)}`}`);
|
|
15
|
-
if (!cond) failed++;
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
const page = await (await chromium.launch()).newPage({ viewport: { width: 1200, height: 900 } });
|
|
19
|
-
const run = async (html, opts = { probeEnabled: true }) => {
|
|
20
|
-
await page.setContent(`<div class="app-content">${html}</div>`, { waitUntil: "load" });
|
|
21
|
-
return page.evaluate(probe, opts);
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
// --- empty state -----------------------------------------------------------
|
|
25
|
-
// The HID access-logs panel scored 8/8 dark-clean while drawing this string.
|
|
26
|
-
check(
|
|
27
|
-
"empty state: 'No access logs found' is detected",
|
|
28
|
-
(await run(`<p>No access logs found</p>`)).emptyText.length === 1,
|
|
29
|
-
);
|
|
30
|
-
check(
|
|
31
|
-
"empty state: real content is not",
|
|
32
|
-
(await run(`<p>Lobby ANPR</p><p>Carpark Exit</p>`)).emptyText.length === 0,
|
|
33
|
-
);
|
|
34
|
-
|
|
35
|
-
// --- table shape -----------------------------------------------------------
|
|
36
|
-
// CameraMain: computedHeaders returned undefined, so the table drew no columns
|
|
37
|
-
// at all and the header/cell rules under review were never on the glass.
|
|
38
|
-
const noCols = await run(`<table><thead><tr></tr></thead><tbody><tr><td>x</td></tr></tbody></table>`);
|
|
39
|
-
check("table: zero header columns is detected", noCols.tables[0].cols === 0, noCols.tables);
|
|
40
|
-
const ok = await run(
|
|
41
|
-
`<table><thead><tr><th>URL</th><th>Type</th></tr></thead><tbody><tr><td>a</td><td>b</td></tr></tbody></table>`,
|
|
42
|
-
);
|
|
43
|
-
check("table: a drawn table reports its columns and rows", ok.tables[0].cols === 2 && ok.tables[0].rows === 1, ok.tables);
|
|
44
|
-
const noRows = await run(
|
|
45
|
-
`<table><thead><tr><th>URL</th></tr></thead><tbody><tr><td>No data available</td></tr></tbody></table>`,
|
|
46
|
-
);
|
|
47
|
-
check("table: the no-data row is not counted as a row", noRows.tables[0].rows === 0, noRows.tables);
|
|
48
|
-
|
|
49
|
-
// --- blank screen ----------------------------------------------------------
|
|
50
|
-
// OvernightParkingAvailability once rendered blank with zero page errors and
|
|
51
|
-
// six elements, and a counter read that as a pass.
|
|
52
|
-
check("blank: no painted text reports textChars 0", (await run(`<div><span></span><span></span></div>`)).textChars === 0);
|
|
53
|
-
const painted = await run(`<p>Seventh Condominium</p>`);
|
|
54
|
-
check("blank: painted text is counted", painted.textChars === 19, painted.textChars);
|
|
55
|
-
|
|
56
|
-
// --- empty form ------------------------------------------------------------
|
|
57
|
-
// The other shape of the same fixture bug: 1112 elements, nothing blank, and
|
|
58
|
-
// not one control holding a value - which is what left Save disabled and put
|
|
59
|
-
// its disabled ink into an AA ledger as a real defect.
|
|
60
|
-
const blankForm = await run(
|
|
61
|
-
`<form>${'<input type="text" value="">'.repeat(3)}<input type="checkbox"><input type="checkbox"></form>`,
|
|
62
|
-
);
|
|
63
|
-
check("empty form: no control holds a value is detected", blankForm.emptyForm === true, blankForm);
|
|
64
|
-
const oneValue = await run(
|
|
65
|
-
`<form><input type="text" value="22:00">${'<input type="text" value="">'.repeat(2)}<input type="checkbox" checked><input type="checkbox"></form>`,
|
|
66
|
-
);
|
|
67
|
-
check("empty form: one saved value clears it", oneValue.emptyForm === false, oneValue);
|
|
68
|
-
|
|
69
|
-
// --- undefined custom property ---------------------------------------------
|
|
70
|
-
// `var(--success)` where the token is `--ok`. The declaration is invalid, the
|
|
71
|
-
// element inherits, and nothing anywhere reports a problem.
|
|
72
|
-
const badVar = await run(
|
|
73
|
-
`<style>:root{--ok:#0e7c58}.day-tick--on{color:var(--success)}</style><p class="day-tick--on">on</p>`,
|
|
74
|
-
);
|
|
75
|
-
check(
|
|
76
|
-
"undefined var: var(--success) with no such token is detected",
|
|
77
|
-
badVar.undefinedVars.length === 1 && badVar.undefinedVars[0].name === "--success",
|
|
78
|
-
badVar.undefinedVars,
|
|
79
|
-
);
|
|
80
|
-
const goodVar = await run(
|
|
81
|
-
`<style>:root{--ok:#0e7c58}.day-tick--on{color:var(--ok)}</style><p class="day-tick--on">on</p>`,
|
|
82
|
-
);
|
|
83
|
-
check("undefined var: the correct token is not flagged", goodVar.undefinedVars.length === 0, goodVar.undefinedVars);
|
|
84
|
-
// The 2026-08-14 bug survived a full 8-shot render because the element never
|
|
85
|
-
// drew. Catching it only when it draws would not have caught it.
|
|
86
|
-
const unrendered = await run(
|
|
87
|
-
`<style>:root{--ok:#0e7c58}.day-tick--on{color:var(--success)}</style><p>no tick on this screen</p>`,
|
|
88
|
-
);
|
|
89
|
-
check(
|
|
90
|
-
"undefined var: caught even when nothing on the screen uses the rule",
|
|
91
|
-
unrendered.undefinedVars.length === 1,
|
|
92
|
-
unrendered.undefinedVars,
|
|
93
|
-
);
|
|
94
|
-
// A name that IS declared elsewhere must not be flagged, or every scoped
|
|
95
|
-
// component variable becomes an invented defect.
|
|
96
|
-
const scoped = await run(
|
|
97
|
-
`<style>.card{--pad:8px}.other{padding:var(--pad)}</style><p class="other">x</p>`,
|
|
98
|
-
);
|
|
99
|
-
check("undefined var: a property declared elsewhere is left alone", scoped.undefinedVars.length === 0, scoped.undefinedVars);
|
|
100
|
-
|
|
101
|
-
// --- disabled classification + enabled re-probe ------------------------------
|
|
102
|
-
// Disabled controls are WCAG-1.4.3-exempt. Logging them as failures put
|
|
103
|
-
// fictional entries in an AA ledger; hiding them entirely would let a real
|
|
104
|
-
// failure escape behind the exemption. Both, separately.
|
|
105
|
-
const dis = await run(
|
|
106
|
-
`<style>button{background:#ffffff;color:#c9c9c9;font-size:14px}</style><button disabled>Save</button>`,
|
|
107
|
-
);
|
|
108
|
-
check("disabled: the reading is captured", dis.fails.length === 1, dis.fails);
|
|
109
|
-
check("disabled: and classified exempt, not counted as AA", dis.fails[0]?.disabled === true, dis.fails[0]);
|
|
110
|
-
check(
|
|
111
|
-
"disabled: the ENABLED state is probed separately and still fails",
|
|
112
|
-
dis.enabledFails.length === 1,
|
|
113
|
-
dis.enabledFails,
|
|
114
|
-
);
|
|
115
|
-
const enabled = await run(
|
|
116
|
-
`<style>button{background:#ffffff;color:#c9c9c9;font-size:14px}</style><button>Save</button>`,
|
|
117
|
-
);
|
|
118
|
-
check("disabled: an enabled control is not marked exempt", enabled.fails[0]?.disabled === false, enabled.fails[0]);
|
|
119
|
-
const contrasty = await run(
|
|
120
|
-
`<style>button{background:#ffffff;color:#1b1d21;font-size:14px}</style><button disabled>Save</button>`,
|
|
121
|
-
);
|
|
122
|
-
check(
|
|
123
|
-
"disabled: a disabled control that also passes enabled reports nothing",
|
|
124
|
-
contrasty.fails.length === 0 && contrasty.enabledFails.length === 0,
|
|
125
|
-
contrasty.fails,
|
|
126
|
-
);
|
|
127
|
-
|
|
128
|
-
console.log(failed ? `\n${failed} FAILED` : "\nall detectors fire");
|
|
129
|
-
process.exit(failed ? 1 : 0);
|