uikit 3.25.15 → 3.25.16-dev.03f5a77
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 +8 -0
- package/build/build.js +1 -1
- package/build/less.js +7 -7
- package/build/prefix.js +3 -3
- package/build/release.js +13 -9
- package/build/scss.js +13 -7
- package/build/util.js +17 -19
- package/build/watch.js +21 -0
- package/dist/css/uikit-core-rtl.css +1 -1
- package/dist/css/uikit-core-rtl.min.css +1 -1
- package/dist/css/uikit-core.css +1 -1
- package/dist/css/uikit-core.min.css +1 -1
- package/dist/css/uikit-rtl.css +1 -1
- package/dist/css/uikit-rtl.min.css +1 -1
- package/dist/css/uikit.css +1 -1
- package/dist/css/uikit.min.css +1 -1
- package/dist/js/components/countdown.js +7 -1
- package/dist/js/components/countdown.min.js +1 -1
- package/dist/js/components/filter.js +7 -4
- package/dist/js/components/filter.min.js +1 -1
- package/dist/js/components/lightbox-panel.js +39 -31
- package/dist/js/components/lightbox-panel.min.js +1 -1
- package/dist/js/components/lightbox.js +39 -31
- package/dist/js/components/lightbox.min.js +1 -1
- package/dist/js/components/notification.js +1 -1
- package/dist/js/components/notification.min.js +1 -1
- package/dist/js/components/parallax.js +1 -1
- package/dist/js/components/parallax.min.js +1 -1
- package/dist/js/components/slider-parallax.js +1 -1
- package/dist/js/components/slider-parallax.min.js +1 -1
- package/dist/js/components/slider.js +7 -1
- package/dist/js/components/slider.min.js +1 -1
- package/dist/js/components/slideshow-parallax.js +1 -1
- package/dist/js/components/slideshow-parallax.min.js +1 -1
- package/dist/js/components/slideshow.js +7 -1
- package/dist/js/components/slideshow.min.js +1 -1
- package/dist/js/components/sortable.js +7 -1
- package/dist/js/components/sortable.min.js +1 -1
- package/dist/js/components/tooltip.js +25 -29
- package/dist/js/components/tooltip.min.js +1 -1
- package/dist/js/components/upload.js +1 -1
- package/dist/js/components/upload.min.js +1 -1
- package/dist/js/uikit-core.js +47 -39
- package/dist/js/uikit-core.min.js +1 -1
- package/dist/js/uikit-icons.js +1 -1
- package/dist/js/uikit-icons.min.js +1 -1
- package/dist/js/uikit.js +53 -42
- package/dist/js/uikit.min.js +1 -1
- package/package.json +3 -8
- package/src/js/components/filter.js +10 -5
- package/src/js/core/drop.js +7 -6
- package/src/js/mixin/class.js +8 -1
- package/src/js/mixin/modal.js +12 -2
- package/src/js/mixin/togglable.js +7 -8
- package/src/js/util/viewport.js +1 -1
- package/tests/upload.html +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## WIP
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
|
|
7
|
+
- Fix negative numbers sorted incorrectly in Filter component
|
|
8
|
+
- Fix Modal component stealing focus from overlays rendered outside the modal
|
|
9
|
+
- Fix component root class not removed after disconnect
|
|
10
|
+
|
|
3
11
|
## 3.25.15 (April 9, 2026)
|
|
4
12
|
|
|
5
13
|
### Fixed
|
package/build/build.js
CHANGED
package/build/less.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import fs from 'fs
|
|
2
|
-
import { glob } from '
|
|
3
|
-
import path from 'path';
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import { glob } from 'node:fs/promises';
|
|
3
|
+
import path from 'node:path';
|
|
4
4
|
import rtlcss from 'rtlcss';
|
|
5
5
|
import { args, banner, minify, read, renderLess, write } from './util.js';
|
|
6
6
|
|
|
@@ -11,15 +11,15 @@ const sources = [
|
|
|
11
11
|
{ src: 'src/less/uikit.theme.less', dist: `dist/css/uikit${rtl ? '-rtl' : ''}.css` },
|
|
12
12
|
];
|
|
13
13
|
|
|
14
|
-
const themes =
|
|
14
|
+
const themes = fs.existsSync('themes.json') ? JSON.parse(await read('themes.json')) : {};
|
|
15
15
|
|
|
16
|
-
for (const src of
|
|
16
|
+
for await (const src of glob('custom/*.less')) {
|
|
17
17
|
const theme = path.basename(src, '.less');
|
|
18
18
|
const dist = `dist/css/uikit.${theme}${rtl ? '-rtl' : ''}.css`;
|
|
19
19
|
|
|
20
20
|
themes[theme] = { css: `../${dist}` };
|
|
21
21
|
|
|
22
|
-
if (
|
|
22
|
+
if (fs.existsSync(`dist/js/uikit-icons-${theme}.js`)) {
|
|
23
23
|
themes[theme].icons = `../dist/js/uikit-icons-${theme}.js`;
|
|
24
24
|
}
|
|
25
25
|
|
|
@@ -28,7 +28,7 @@ for (const src of await glob('custom/*.less')) {
|
|
|
28
28
|
|
|
29
29
|
await Promise.all(sources.map(({ src, dist }) => compile(src, dist, develop, rtl)));
|
|
30
30
|
|
|
31
|
-
if (!rtl && (Object.keys(themes).length || !
|
|
31
|
+
if (!rtl && (Object.keys(themes).length || !fs.existsSync('themes.json'))) {
|
|
32
32
|
await write('themes.json', JSON.stringify(themes));
|
|
33
33
|
}
|
|
34
34
|
|
package/build/prefix.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { glob } from 'glob';
|
|
2
1
|
import inquirer from 'inquirer';
|
|
2
|
+
import { glob } from 'node:fs/promises';
|
|
3
3
|
import { args, read, replaceInFile } from './util.js';
|
|
4
4
|
|
|
5
5
|
if (args.h || args.help) {
|
|
@@ -60,13 +60,13 @@ function isValidPrefix(prefix) {
|
|
|
60
60
|
}
|
|
61
61
|
|
|
62
62
|
async function replacePrefix(from, to) {
|
|
63
|
-
for (const file of
|
|
63
|
+
for await (const file of glob(`${path}/**/*.css`)) {
|
|
64
64
|
await replaceInFile(file, (data) =>
|
|
65
65
|
data.replace(new RegExp(`${from}-([a-z\\d-]+)`, 'g'), `${to}-$1`),
|
|
66
66
|
);
|
|
67
67
|
}
|
|
68
68
|
|
|
69
|
-
for (const file of
|
|
69
|
+
for await (const file of glob(`${path}/**/*.js`)) {
|
|
70
70
|
await replaceInFile(file, (data) =>
|
|
71
71
|
data
|
|
72
72
|
.replace(new RegExp(`${from}-`, 'g'), `${to}-`)
|
package/build/release.js
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import archiver from 'archiver';
|
|
2
|
-
import * as date from 'date-fns';
|
|
3
2
|
import { $ } from 'execa';
|
|
4
|
-
import fs from 'fs';
|
|
5
|
-
import { glob } from 'glob';
|
|
6
3
|
import inquirer from 'inquirer';
|
|
4
|
+
import fs from 'node:fs';
|
|
5
|
+
import { glob } from 'node:fs/promises';
|
|
7
6
|
import semver from 'semver';
|
|
8
7
|
import { args, getVersion, logFile, read, replaceInFile } from './util.js';
|
|
9
8
|
|
|
@@ -53,10 +52,7 @@ function raiseVersion(version) {
|
|
|
53
52
|
return Promise.all([
|
|
54
53
|
$$`npm version ${version} --git-tag-version false`,
|
|
55
54
|
replaceInFile('CHANGELOG.md', (data) =>
|
|
56
|
-
data.replace(
|
|
57
|
-
/^##\s*WIP.*$/m,
|
|
58
|
-
`## ${versionFormat(version)} (${date.format(new Date(), 'MMMM d, yyyy')})`,
|
|
59
|
-
),
|
|
55
|
+
data.replace(/^##\s*WIP.*$/m, `## ${versionFormat(version)} (${dateFormat()})`),
|
|
60
56
|
),
|
|
61
57
|
replaceInFile('.github/ISSUE_TEMPLATE/bug-report.md', (data) =>
|
|
62
58
|
data.replace(prevVersion, version),
|
|
@@ -76,7 +72,7 @@ async function createPackage(version) {
|
|
|
76
72
|
|
|
77
73
|
archive.pipe(output);
|
|
78
74
|
|
|
79
|
-
for (const file of
|
|
75
|
+
for await (const file of glob('dist/{js,css}/uikit?(-icons|-rtl)?(.min).{js,css}')) {
|
|
80
76
|
archive.file(file, { name: file.slice(5) });
|
|
81
77
|
}
|
|
82
78
|
|
|
@@ -105,7 +101,7 @@ async function deploy(version) {
|
|
|
105
101
|
const branch = `release/v${version}`;
|
|
106
102
|
|
|
107
103
|
await $$`git checkout -b ${branch}`;
|
|
108
|
-
await $$`git
|
|
104
|
+
await $$`git add --all`;
|
|
109
105
|
await $$`git commit -am v${version}`;
|
|
110
106
|
|
|
111
107
|
await $$`git checkout main`;
|
|
@@ -126,3 +122,11 @@ async function deploy(version) {
|
|
|
126
122
|
|
|
127
123
|
await $$`git push origin develop`;
|
|
128
124
|
}
|
|
125
|
+
|
|
126
|
+
function dateFormat() {
|
|
127
|
+
return new Intl.DateTimeFormat('en-US', {
|
|
128
|
+
month: 'long',
|
|
129
|
+
day: 'numeric',
|
|
130
|
+
year: 'numeric',
|
|
131
|
+
}).format(new Date());
|
|
132
|
+
}
|
package/build/scss.js
CHANGED
|
@@ -1,18 +1,15 @@
|
|
|
1
|
-
import { emptyDir } from 'fs-extra';
|
|
2
1
|
import { glob } from 'glob';
|
|
3
|
-
import
|
|
4
|
-
import path from 'path';
|
|
2
|
+
import fs from 'node:fs/promises';
|
|
3
|
+
import path from 'node:path';
|
|
5
4
|
import { read, write } from './util.js';
|
|
6
5
|
|
|
7
|
-
NP.enableBoundaryChecking(false);
|
|
8
|
-
|
|
9
6
|
const coreMixins = {};
|
|
10
7
|
const themeMixins = {};
|
|
11
8
|
const coreVariables = {};
|
|
12
9
|
const themeVariables = {};
|
|
13
10
|
const inverseComponentMixins = [];
|
|
14
11
|
|
|
15
|
-
await emptyDir('src/scss
|
|
12
|
+
await emptyDir('src/scss');
|
|
16
13
|
|
|
17
14
|
for (const file of (await glob('src/less/**/*.less'))
|
|
18
15
|
.sort()
|
|
@@ -24,7 +21,7 @@ for (const file of (await glob('src/less/**/*.less'))
|
|
|
24
21
|
.replace(/@(?!property)/g, '$') // convert variables
|
|
25
22
|
.replace(
|
|
26
23
|
/(:[^'"]*?\([^'"]+?)\s*\/\s*([0-9.-]+)\)/g,
|
|
27
|
-
(exp, m1, m2) => `${m1} * ${
|
|
24
|
+
(exp, m1, m2) => `${m1} * ${round(1 / parseFloat(m2), 5)})`,
|
|
28
25
|
)
|
|
29
26
|
.replace(/--uk-\S+: (\$\S+);/g, (exp, name) => exp.replace(name, `#{${name}}`))
|
|
30
27
|
.replace(/\\\$/g, '\\@') // revert classes using the @ symbol
|
|
@@ -248,3 +245,12 @@ async function getVariablesFromFile(file, source) {
|
|
|
248
245
|
// Remove variables from source
|
|
249
246
|
return source.replace(/(\$[\w-]*)\s*:(.*);\r?\n/g, '');
|
|
250
247
|
}
|
|
248
|
+
|
|
249
|
+
async function emptyDir(dir) {
|
|
250
|
+
await fs.rm(dir, { recursive: true, force: true });
|
|
251
|
+
await fs.mkdir(dir, { recursive: true });
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
function round(num, precision) {
|
|
255
|
+
return Math.round(num * 10 ** precision) / 10 ** precision;
|
|
256
|
+
}
|
package/build/util.js
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import alias from '@rollup/plugin-alias';
|
|
2
2
|
import CleanCSS from 'clean-css';
|
|
3
|
-
import fs from 'fs-extra';
|
|
4
|
-
import { glob } from 'glob';
|
|
5
3
|
import less from 'less';
|
|
6
|
-
import
|
|
4
|
+
import fs from 'node:fs/promises';
|
|
5
|
+
import path from 'node:path';
|
|
6
|
+
import { parseArgs, styleText } from 'node:util';
|
|
7
7
|
import pLimit from 'p-limit';
|
|
8
|
-
import path from 'path';
|
|
9
8
|
import { rollup, watch as rollupWatch } from 'rollup';
|
|
10
9
|
import { default as esbuild, minify as esbuildMinify } from 'rollup-plugin-esbuild';
|
|
11
10
|
import { optimize } from 'svgo';
|
|
@@ -14,21 +13,24 @@ const limit = pLimit(Number(process.env.cpus || 2));
|
|
|
14
13
|
|
|
15
14
|
export const banner = `/*! UIkit ${await getVersion()} | https://www.getuikit.com | (c) 2014 - ${new Date().getFullYear()} YOOtheme | MIT License */\n`;
|
|
16
15
|
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
argv[tokens[0]] = tokens[1] || true;
|
|
16
|
+
const { positionals, values } = parseArgs({
|
|
17
|
+
args: process.argv.slice(2),
|
|
18
|
+
allowPositionals: true,
|
|
19
|
+
strict: false,
|
|
22
20
|
});
|
|
23
21
|
|
|
24
|
-
export const args =
|
|
22
|
+
export const args = positionals.reduce((args, arg) => {
|
|
23
|
+
const tokens = arg.split('=');
|
|
24
|
+
args[tokens[0]] = tokens[1] || true;
|
|
25
|
+
return args;
|
|
26
|
+
}, values);
|
|
25
27
|
|
|
26
28
|
export function read(file) {
|
|
27
29
|
return fs.readFile(file, 'utf8');
|
|
28
30
|
}
|
|
29
31
|
|
|
30
32
|
export async function write(dest, data) {
|
|
31
|
-
fs.
|
|
33
|
+
await fs.mkdir(path.dirname(dest), { recursive: true });
|
|
32
34
|
|
|
33
35
|
await fs.writeFile(dest, data);
|
|
34
36
|
await logFile(dest);
|
|
@@ -38,7 +40,7 @@ export async function write(dest, data) {
|
|
|
38
40
|
|
|
39
41
|
export async function logFile(file) {
|
|
40
42
|
const { size } = await fs.stat(file);
|
|
41
|
-
console.log(`${cyan
|
|
43
|
+
console.log(`${styleText(['cyan', 'bold'], file)} ${formatSize(size)}`);
|
|
42
44
|
}
|
|
43
45
|
|
|
44
46
|
export async function minify(file) {
|
|
@@ -174,7 +176,7 @@ export async function compile(
|
|
|
174
176
|
export async function icons(...src) {
|
|
175
177
|
let files = {};
|
|
176
178
|
for (const pattern of src) {
|
|
177
|
-
for (const file of
|
|
179
|
+
for await (const file of fs.glob(pattern)) {
|
|
178
180
|
files[path.basename(file, '.svg')] ??= limit(
|
|
179
181
|
async () => await optimizeSvg(await read(file)),
|
|
180
182
|
);
|
|
@@ -189,22 +191,18 @@ export async function icons(...src) {
|
|
|
189
191
|
return JSON.stringify(sorted, null, ' ');
|
|
190
192
|
}
|
|
191
193
|
|
|
192
|
-
|
|
194
|
+
function ucfirst(str) {
|
|
193
195
|
return str.length ? str.charAt(0).toUpperCase() + str.slice(1) : '';
|
|
194
196
|
}
|
|
195
197
|
|
|
196
198
|
export async function getVersion() {
|
|
197
|
-
return (await fs.
|
|
199
|
+
return JSON.parse(await fs.readFile('package.json', 'utf8')).version;
|
|
198
200
|
}
|
|
199
201
|
|
|
200
202
|
export async function replaceInFile(file, fn) {
|
|
201
203
|
await write(file, await fn(await read(file)));
|
|
202
204
|
}
|
|
203
205
|
|
|
204
|
-
function cyan(str) {
|
|
205
|
-
return `\x1b[1m\x1b[36m${str}\x1b[39m\x1b[22m`;
|
|
206
|
-
}
|
|
207
|
-
|
|
208
206
|
function formatSize(bytes) {
|
|
209
207
|
return `${(bytes / 1024).toFixed(2)}kb`;
|
|
210
208
|
}
|
package/build/watch.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { execSync } from 'node:child_process';
|
|
2
|
+
import fs from 'node:fs';
|
|
3
|
+
|
|
4
|
+
watch('src/less', '.less', 'node build/less');
|
|
5
|
+
|
|
6
|
+
function watch(path, pattern, cmd) {
|
|
7
|
+
let debounceTimer;
|
|
8
|
+
|
|
9
|
+
execute();
|
|
10
|
+
|
|
11
|
+
fs.watch(path, { recursive: true }, (event, filename) => {
|
|
12
|
+
if (filename?.endsWith(pattern)) {
|
|
13
|
+
clearTimeout(debounceTimer);
|
|
14
|
+
debounceTimer = setTimeout(execute, 100);
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
function execute() {
|
|
19
|
+
execSync(cmd, { stdio: 'inherit' });
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! UIkit 3.25.
|
|
1
|
+
/*! UIkit 3.25.16-dev.03f5a77 | https://www.getuikit.com | (c) 2014 - 2026 YOOtheme | MIT License */
|
|
2
2
|
/* ========================================================================
|
|
3
3
|
Component: Base
|
|
4
4
|
========================================================================== */
|