@dialpad/dialtone-css 8.80.0-next.3 → 8.80.0-next.5
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/lib/build/js/dialtone_migrate_chip_interactive/index.mjs +367 -0
- package/lib/build/js/dialtone_migrate_chip_interactive/test.mjs +244 -0
- package/lib/build/js/dialtone_migrate_scrollbar_always/index.mjs +225 -0
- package/lib/build/less/components/box.less +2 -0
- package/lib/build/less/components/link.less +14 -19
- package/lib/build/less/components/notice.less +1 -1
- package/lib/build/less/components/rich-text-editor.less +24 -0
- package/lib/build/less/components/scrollbar.less +22 -0
- package/lib/build/less/dialtone.less +7 -0
- package/lib/dist/dialtone-default-theme.css +334 -293
- package/lib/dist/dialtone-default-theme.min.css +1 -1
- package/lib/dist/dialtone-docs.json +1 -1
- package/lib/dist/dialtone.css +50 -15
- package/lib/dist/dialtone.min.css +1 -1
- package/lib/dist/js/dialtone_migrate_chip_interactive/index.mjs +367 -0
- package/lib/dist/js/dialtone_migrate_chip_interactive/test.mjs +244 -0
- package/lib/dist/js/dialtone_migrate_scrollbar_always/index.mjs +225 -0
- package/lib/dist/tokens/tokens-101-dark.css +141 -135
- package/lib/dist/tokens/tokens-101-light.css +164 -158
- package/lib/dist/tokens/tokens-102-dark.css +141 -135
- package/lib/dist/tokens/tokens-102-light.css +164 -158
- package/lib/dist/tokens/tokens-103-dark.css +141 -135
- package/lib/dist/tokens/tokens-103-light.css +164 -158
- package/lib/dist/tokens/tokens-104-dark.css +141 -135
- package/lib/dist/tokens/tokens-104-light.css +164 -158
- package/lib/dist/tokens/tokens-105-dark.css +141 -135
- package/lib/dist/tokens/tokens-105-light.css +164 -158
- package/lib/dist/tokens/tokens-106-dark.css +141 -135
- package/lib/dist/tokens/tokens-106-light.css +164 -158
- package/lib/dist/tokens/tokens-107-dark.css +141 -135
- package/lib/dist/tokens/tokens-107-light.css +164 -158
- package/lib/dist/tokens/tokens-108-dark.css +141 -135
- package/lib/dist/tokens/tokens-108-light.css +164 -158
- package/lib/dist/tokens/tokens-109-dark.css +141 -135
- package/lib/dist/tokens/tokens-109-light.css +164 -158
- package/lib/dist/tokens/tokens-110-dark.css +141 -135
- package/lib/dist/tokens/tokens-110-light.css +164 -158
- package/lib/dist/tokens/tokens-111-dark.css +141 -135
- package/lib/dist/tokens/tokens-111-light.css +164 -158
- package/lib/dist/tokens/tokens-112-dark.css +141 -135
- package/lib/dist/tokens/tokens-112-light.css +164 -158
- package/lib/dist/tokens/tokens-113-dark.css +141 -135
- package/lib/dist/tokens/tokens-113-light.css +164 -158
- package/lib/dist/tokens/tokens-114-dark.css +141 -135
- package/lib/dist/tokens/tokens-114-light.css +164 -158
- package/lib/dist/tokens/tokens-115-dark.css +141 -135
- package/lib/dist/tokens/tokens-115-light.css +164 -158
- package/lib/dist/tokens/tokens-116-dark.css +141 -135
- package/lib/dist/tokens/tokens-116-light.css +164 -158
- package/lib/dist/tokens/tokens-117-dark.css +141 -135
- package/lib/dist/tokens/tokens-117-light.css +164 -158
- package/lib/dist/tokens/tokens-118-dark.css +141 -135
- package/lib/dist/tokens/tokens-118-light.css +164 -158
- package/lib/dist/tokens/tokens-119-dark.css +141 -135
- package/lib/dist/tokens/tokens-119-light.css +164 -158
- package/lib/dist/tokens/tokens-120-dark.css +141 -135
- package/lib/dist/tokens/tokens-120-light.css +164 -158
- package/lib/dist/tokens/tokens-121-dark.css +141 -135
- package/lib/dist/tokens/tokens-121-light.css +164 -158
- package/lib/dist/tokens/tokens-122-dark.css +141 -135
- package/lib/dist/tokens/tokens-122-light.css +164 -158
- package/lib/dist/tokens/tokens-123-dark.css +141 -135
- package/lib/dist/tokens/tokens-123-light.css +164 -158
- package/lib/dist/tokens/tokens-124-dark.css +141 -135
- package/lib/dist/tokens/tokens-124-light.css +164 -158
- package/lib/dist/tokens/tokens-125-dark.css +141 -135
- package/lib/dist/tokens/tokens-125-light.css +164 -158
- package/lib/dist/tokens/tokens-126-dark.css +141 -135
- package/lib/dist/tokens/tokens-126-light.css +164 -158
- package/lib/dist/tokens/tokens-127-dark.css +141 -135
- package/lib/dist/tokens/tokens-127-light.css +164 -158
- package/lib/dist/tokens/tokens-128-dark.css +141 -135
- package/lib/dist/tokens/tokens-128-light.css +164 -158
- package/lib/dist/tokens/tokens-129-dark.css +141 -135
- package/lib/dist/tokens/tokens-129-light.css +164 -158
- package/lib/dist/tokens/tokens-130-dark.css +141 -135
- package/lib/dist/tokens/tokens-130-light.css +164 -158
- package/lib/dist/tokens/tokens-131-dark.css +141 -135
- package/lib/dist/tokens/tokens-131-light.css +164 -158
- package/lib/dist/tokens/tokens-132-dark.css +141 -135
- package/lib/dist/tokens/tokens-132-light.css +164 -158
- package/lib/dist/tokens/tokens-133-dark.css +141 -135
- package/lib/dist/tokens/tokens-133-light.css +164 -158
- package/lib/dist/tokens/tokens-134-dark.css +141 -135
- package/lib/dist/tokens/tokens-134-light.css +164 -158
- package/lib/dist/tokens/tokens-135-dark.css +141 -135
- package/lib/dist/tokens/tokens-135-light.css +164 -158
- package/lib/dist/tokens/tokens-136-dark.css +141 -135
- package/lib/dist/tokens/tokens-136-light.css +164 -158
- package/lib/dist/tokens/tokens-137-dark.css +141 -135
- package/lib/dist/tokens/tokens-137-light.css +164 -158
- package/lib/dist/tokens/tokens-aegean-dark.css +164 -158
- package/lib/dist/tokens/tokens-aegean-light.css +184 -178
- package/lib/dist/tokens/tokens-base-dark.css +98 -98
- package/lib/dist/tokens/tokens-base-light.css +98 -98
- package/lib/dist/tokens/tokens-botany-dark.css +149 -143
- package/lib/dist/tokens/tokens-botany-light.css +171 -165
- package/lib/dist/tokens/tokens-buttercream-dark.css +148 -142
- package/lib/dist/tokens/tokens-buttercream-light.css +171 -165
- package/lib/dist/tokens/tokens-ceruleo-dark.css +164 -158
- package/lib/dist/tokens/tokens-ceruleo-light.css +184 -178
- package/lib/dist/tokens/tokens-contrast-high-dark.css +3 -3
- package/lib/dist/tokens/tokens-contrast-high-light.css +10 -10
- package/lib/dist/tokens/tokens-debug-dp.css +28 -22
- package/lib/dist/tokens/tokens-dp-dark.css +166 -160
- package/lib/dist/tokens/tokens-dp-light.css +186 -180
- package/lib/dist/tokens/tokens-expressive-dark.css +163 -157
- package/lib/dist/tokens/tokens-expressive-light.css +186 -180
- package/lib/dist/tokens/tokens-expressive-sm-dark.css +163 -157
- package/lib/dist/tokens/tokens-expressive-sm-light.css +186 -180
- package/lib/dist/tokens/tokens-high-desert-dark.css +144 -138
- package/lib/dist/tokens/tokens-high-desert-light.css +164 -158
- package/lib/dist/tokens/tokens-melon-dark.css +145 -139
- package/lib/dist/tokens/tokens-melon-light.css +165 -159
- package/lib/dist/tokens/tokens-plum-dark.css +153 -147
- package/lib/dist/tokens/tokens-plum-light.css +164 -158
- package/lib/dist/tokens/tokens-prota-deuter-dark.css +292 -262
- package/lib/dist/tokens/tokens-prota-deuter-light.css +315 -285
- package/lib/dist/tokens/tokens-sunflower-dark.css +154 -148
- package/lib/dist/tokens/tokens-sunflower-light.css +174 -168
- package/lib/dist/tokens/tokens-tmo-dark.css +165 -159
- package/lib/dist/tokens/tokens-tmo-light.css +185 -179
- package/lib/dist/tokens/tokens-trita-dark.css +239 -197
- package/lib/dist/tokens/tokens-trita-light.css +263 -221
- package/lib/dist/tokens/tokens-verdant-haze-dark.css +144 -138
- package/lib/dist/tokens/tokens-verdant-haze-light.css +164 -158
- package/lib/dist/tokens-docs.json +1 -1
- package/package.json +11 -4
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @fileoverview Migration script for v-dt-scrollbar :never → :always rename.
|
|
5
|
+
*
|
|
6
|
+
* DLT-3158 The `:never` directive argument was renamed to `:always` to reflect
|
|
7
|
+
* its actual meaning (always show the scrollbar, never auto-hide it).
|
|
8
|
+
* The `DtBox` `scrollbar="never"` prop value is similarly renamed to
|
|
9
|
+
* `scrollbar="always"`.
|
|
10
|
+
*
|
|
11
|
+
* This script:
|
|
12
|
+
* - Replaces `v-dt-scrollbar:never` with `v-dt-scrollbar:always` in .vue and .html files.
|
|
13
|
+
* - Replaces `scrollbar="never"` with `scrollbar="always"` (DtBox prop) in .vue files.
|
|
14
|
+
* - Replaces `:scrollbar="'never'"` and `scrollbar='never'` variants in .vue files.
|
|
15
|
+
*
|
|
16
|
+
* Usage:
|
|
17
|
+
* npx dialtone-migrate-scrollbar-always [options]
|
|
18
|
+
*
|
|
19
|
+
* Options:
|
|
20
|
+
* --cwd <path> Working directory (default: cwd)
|
|
21
|
+
* --dry-run Show changes without applying them
|
|
22
|
+
* --yes Apply all changes without prompting
|
|
23
|
+
* --help Show help
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
import fs from 'fs/promises';
|
|
27
|
+
import { realpathSync } from 'node:fs';
|
|
28
|
+
import path from 'path';
|
|
29
|
+
import readline from 'readline';
|
|
30
|
+
import { fileURLToPath } from 'node:url';
|
|
31
|
+
|
|
32
|
+
// ---------------------------------------------------------------------------
|
|
33
|
+
// Transform
|
|
34
|
+
// ---------------------------------------------------------------------------
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Apply all renames to a single file's content.
|
|
38
|
+
* Returns the transformed string (may be identical to input if no matches).
|
|
39
|
+
*/
|
|
40
|
+
export function transformContent (content) {
|
|
41
|
+
return content
|
|
42
|
+
// v-dt-scrollbar:never → v-dt-scrollbar:always
|
|
43
|
+
.replace(/v-dt-scrollbar:never\b/g, 'v-dt-scrollbar:always')
|
|
44
|
+
// DtBox scrollbar prop: match the entire opening <dt-box>/<DtBox> tag, rewrite only within it
|
|
45
|
+
.replace(/<(dt-box|DtBox)\b[\s\S]*?>/g, tag =>
|
|
46
|
+
tag
|
|
47
|
+
// scrollbar="never" → scrollbar="always" (unbound prop only; negative lookbehind excludes :scrollbar="never")
|
|
48
|
+
.replace(/(?<!:)\bscrollbar="never"/g, 'scrollbar="always"')
|
|
49
|
+
// scrollbar='never' → scrollbar='always' (unbound prop only)
|
|
50
|
+
.replace(/(?<!:)\bscrollbar='never'/g, 'scrollbar=\'always\'')
|
|
51
|
+
// :scrollbar="'never'" → :scrollbar="'always'"
|
|
52
|
+
.replace(/:scrollbar="'never'"/g, ':scrollbar="\'always\'"')
|
|
53
|
+
// :scrollbar="\"never\"" → :scrollbar="\"always\""
|
|
54
|
+
.replace(/:scrollbar='"never"'/g, ':scrollbar=\'"always"\''),
|
|
55
|
+
);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// ---------------------------------------------------------------------------
|
|
59
|
+
// File walker
|
|
60
|
+
// ---------------------------------------------------------------------------
|
|
61
|
+
|
|
62
|
+
function isIgnoredPath (fullPath, ignore) {
|
|
63
|
+
const segments = fullPath.split(path.sep);
|
|
64
|
+
return ignore.some(ig => {
|
|
65
|
+
if (ig.includes('/')) {
|
|
66
|
+
const parts = ig.split('/');
|
|
67
|
+
for (let i = 0; i + parts.length <= segments.length; i++) {
|
|
68
|
+
if (parts.every((p, j) => segments[i + j] === p)) return true;
|
|
69
|
+
}
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
return segments.includes(ig);
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
async function findFiles (dir, extensions, ignore = []) {
|
|
77
|
+
const results = [];
|
|
78
|
+
async function walk (currentDir) {
|
|
79
|
+
let entries;
|
|
80
|
+
try {
|
|
81
|
+
entries = await fs.readdir(currentDir, { withFileTypes: true });
|
|
82
|
+
} catch {
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
for (const entry of entries) {
|
|
86
|
+
const fullPath = path.join(currentDir, entry.name);
|
|
87
|
+
if (isIgnoredPath(fullPath, ignore)) continue;
|
|
88
|
+
if (entry.isDirectory()) {
|
|
89
|
+
await walk(fullPath);
|
|
90
|
+
} else if (entry.isFile() && extensions.some(ext => entry.name.endsWith(ext))) {
|
|
91
|
+
results.push(fullPath);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
await walk(dir);
|
|
96
|
+
return results;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// ---------------------------------------------------------------------------
|
|
100
|
+
// CLI plumbing
|
|
101
|
+
// ---------------------------------------------------------------------------
|
|
102
|
+
|
|
103
|
+
function printHelp () {
|
|
104
|
+
console.log(`
|
|
105
|
+
Usage: npx dialtone-migrate-scrollbar-always [options]
|
|
106
|
+
|
|
107
|
+
Renames the v-dt-scrollbar ":never" directive argument to ":always" (DLT-3158).
|
|
108
|
+
Also renames the DtBox scrollbar="never" prop value to scrollbar="always".
|
|
109
|
+
|
|
110
|
+
Options:
|
|
111
|
+
--cwd <path> Working directory (default: cwd)
|
|
112
|
+
--dry-run Show changes without applying them
|
|
113
|
+
--yes Apply all changes without prompting
|
|
114
|
+
--help Show help
|
|
115
|
+
|
|
116
|
+
Examples:
|
|
117
|
+
npx dialtone-migrate-scrollbar-always
|
|
118
|
+
npx dialtone-migrate-scrollbar-always --dry-run
|
|
119
|
+
npx dialtone-migrate-scrollbar-always --cwd ./src
|
|
120
|
+
npx dialtone-migrate-scrollbar-always --yes
|
|
121
|
+
`);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
function parseArgs (args) {
|
|
125
|
+
const cwdIndex = args.indexOf('--cwd');
|
|
126
|
+
return {
|
|
127
|
+
help: args.includes('--help'),
|
|
128
|
+
dryRun: args.includes('--dry-run'),
|
|
129
|
+
autoYes: args.includes('--yes'),
|
|
130
|
+
cwd: cwdIndex !== -1 && args[cwdIndex + 1]
|
|
131
|
+
? path.resolve(args[cwdIndex + 1])
|
|
132
|
+
: process.cwd(),
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
async function prompt (question) {
|
|
137
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
138
|
+
return new Promise(resolve => {
|
|
139
|
+
rl.question(question, answer => {
|
|
140
|
+
rl.close();
|
|
141
|
+
resolve(answer.trim().toLowerCase());
|
|
142
|
+
});
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
async function scanFiles (cwd) {
|
|
147
|
+
const extensions = ['.vue', '.html'];
|
|
148
|
+
const ignore = ['node_modules', 'dist', '.git', '.vuepress/public', '.vuepress/.temp', '.vuepress/.cache', 'storybook-static'];
|
|
149
|
+
const files = await findFiles(cwd, extensions, ignore);
|
|
150
|
+
|
|
151
|
+
const changes = [];
|
|
152
|
+
|
|
153
|
+
for (const file of files) {
|
|
154
|
+
const content = await fs.readFile(file, 'utf8');
|
|
155
|
+
const transformed = transformContent(content);
|
|
156
|
+
if (transformed !== content) {
|
|
157
|
+
changes.push({ file, content, transformed });
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
return changes;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
async function applyChanges (changes, autoYes) {
|
|
165
|
+
if (!autoYes) {
|
|
166
|
+
const answer = await prompt('\nApply changes? (y/N) ');
|
|
167
|
+
if (answer !== 'y' && answer !== 'yes') {
|
|
168
|
+
console.log('Cancelled.');
|
|
169
|
+
return false;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
for (const { file, transformed } of changes) {
|
|
173
|
+
await fs.writeFile(file, transformed, 'utf8');
|
|
174
|
+
}
|
|
175
|
+
return true;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
function printChangeSummary (changes, cwd) {
|
|
179
|
+
console.log(`\nFound changes in ${changes.length} file(s):\n`);
|
|
180
|
+
for (const { file } of changes) {
|
|
181
|
+
console.log(` ${path.relative(cwd, file)}`);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
async function main () {
|
|
186
|
+
const opts = parseArgs(process.argv.slice(2));
|
|
187
|
+
if (opts.help) {
|
|
188
|
+
printHelp();
|
|
189
|
+
process.exit(0);
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
console.log(`\nScanning ${opts.cwd} for v-dt-scrollbar:never and scrollbar="never" usages...`);
|
|
193
|
+
|
|
194
|
+
const changes = await scanFiles(opts.cwd);
|
|
195
|
+
|
|
196
|
+
if (changes.length === 0) {
|
|
197
|
+
console.log('No usages found. Nothing to migrate.');
|
|
198
|
+
process.exit(0);
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
printChangeSummary(changes, opts.cwd);
|
|
202
|
+
|
|
203
|
+
if (opts.dryRun) {
|
|
204
|
+
console.log('\n--dry-run: No files were modified.');
|
|
205
|
+
process.exit(0);
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
const applied = await applyChanges(changes, opts.autoYes);
|
|
209
|
+
if (applied) console.log(`\nMigrated ${changes.length} file(s).\n`);
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
const isDirectRun = (() => {
|
|
213
|
+
try {
|
|
214
|
+
return realpathSync(process.argv[1]) === fileURLToPath(import.meta.url);
|
|
215
|
+
} catch {
|
|
216
|
+
return false;
|
|
217
|
+
}
|
|
218
|
+
})();
|
|
219
|
+
|
|
220
|
+
if (isDirectRun) {
|
|
221
|
+
main().catch(err => {
|
|
222
|
+
console.error(err);
|
|
223
|
+
process.exit(1);
|
|
224
|
+
});
|
|
225
|
+
}
|