uikit 3.25.28-dev.779d915 → 3.25.28
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 +5 -0
- package/build/ci-publish-dev.js +19 -0
- package/build/ci-release.js +128 -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 +3 -3
- package/dist/js/components/countdown.min.js +1 -1
- package/dist/js/components/filter.js +1 -1
- package/dist/js/components/filter.min.js +1 -1
- package/dist/js/components/lightbox-panel.js +1 -1
- package/dist/js/components/lightbox-panel.min.js +1 -1
- package/dist/js/components/lightbox.js +1 -1
- 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 +2 -2
- 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 +1 -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 +2 -2
- package/dist/js/components/slideshow.min.js +1 -1
- package/dist/js/components/sortable.js +1 -1
- package/dist/js/components/sortable.min.js +1 -1
- package/dist/js/components/tooltip.js +1 -1
- package/dist/js/components/tooltip.min.js +1 -1
- package/dist/js/components/upload.js +41 -49
- package/dist/js/components/upload.min.js +1 -1
- package/dist/js/uikit-core.js +9 -11
- 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 -63
- package/dist/js/uikit.min.js +1 -1
- package/package.json +1 -2
- package/src/js/components/countdown.js +2 -2
- package/src/js/components/parallax.js +1 -1
- package/src/js/components/slideshow.js +1 -1
- package/src/js/components/upload.js +41 -56
- package/src/js/core/drop.js +5 -7
- package/src/js/core/scrollspy-nav.js +0 -1
- package/src/js/core/svg.js +1 -1
- package/src/js/util/style.js +1 -0
- package/build/publishDev.js +0 -32
- package/build/release.js +0 -132
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "uikit",
|
|
3
3
|
"title": "UIkit",
|
|
4
4
|
"description": "UIkit is a lightweight and modular front-end framework for developing fast and powerful web interfaces.",
|
|
5
|
-
"version": "3.25.28
|
|
5
|
+
"version": "3.25.28",
|
|
6
6
|
"main": "dist/js/uikit.js",
|
|
7
7
|
"style": "dist/css/uikit.css",
|
|
8
8
|
"sideEffects": [
|
|
@@ -19,7 +19,6 @@
|
|
|
19
19
|
"icons": "node build/icons",
|
|
20
20
|
"prefix": "node build/prefix",
|
|
21
21
|
"scope": "node build/scope",
|
|
22
|
-
"release": "node build/release",
|
|
23
22
|
"watch": "node build/watch.js"
|
|
24
23
|
},
|
|
25
24
|
"repository": {
|
|
@@ -54,8 +54,8 @@ export default {
|
|
|
54
54
|
stop() {
|
|
55
55
|
if (this.timer) {
|
|
56
56
|
clearInterval(this.timer);
|
|
57
|
-
trigger(this.$el, 'countdownstop');
|
|
58
57
|
this.timer = null;
|
|
58
|
+
trigger(this.$el, 'countdownstop');
|
|
59
59
|
}
|
|
60
60
|
},
|
|
61
61
|
|
|
@@ -65,8 +65,8 @@ export default {
|
|
|
65
65
|
if (!timespan.total) {
|
|
66
66
|
this.stop();
|
|
67
67
|
if (!this.end) {
|
|
68
|
-
trigger(this.$el, 'countdownend');
|
|
69
68
|
this.end = true;
|
|
69
|
+
trigger(this.$el, 'countdownend');
|
|
70
70
|
if (this.reload && this.started) {
|
|
71
71
|
window.location.reload();
|
|
72
72
|
}
|
|
@@ -28,7 +28,7 @@ export default {
|
|
|
28
28
|
watch: {
|
|
29
29
|
list(list) {
|
|
30
30
|
css(list, {
|
|
31
|
-
aspectRatio: this.ratio ? this.ratio.replace(':', '/') :
|
|
31
|
+
aspectRatio: this.ratio && this.ratio !== 'false' ? this.ratio.replace(':', '/') : '',
|
|
32
32
|
minHeight: this.minHeight,
|
|
33
33
|
maxHeight: this.maxHeight,
|
|
34
34
|
width: '100%',
|
|
@@ -95,48 +95,49 @@ export default {
|
|
|
95
95
|
|
|
96
96
|
methods: {
|
|
97
97
|
async upload(files) {
|
|
98
|
-
|
|
98
|
+
try {
|
|
99
|
+
files = toArray(files);
|
|
99
100
|
|
|
100
|
-
|
|
101
|
-
return;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
if (!this.multiple) {
|
|
105
|
-
files = files.slice(0, 1);
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
trigger(this.$el, 'upload', [files]);
|
|
109
|
-
|
|
110
|
-
for (const file of files) {
|
|
111
|
-
if (this.maxSize && this.maxSize * 1000 < file.size) {
|
|
112
|
-
this.fail(this.t('invalidSize', this.maxSize));
|
|
101
|
+
if (!files.length) {
|
|
113
102
|
return;
|
|
114
103
|
}
|
|
115
104
|
|
|
116
|
-
if (
|
|
117
|
-
|
|
118
|
-
return;
|
|
105
|
+
if (!this.multiple) {
|
|
106
|
+
files = files.slice(0, 1);
|
|
119
107
|
}
|
|
120
108
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
109
|
+
trigger(this.$el, 'upload', [files]);
|
|
110
|
+
|
|
111
|
+
for (const file of files) {
|
|
112
|
+
if (this.maxSize && this.maxSize * 1000 < file.size) {
|
|
113
|
+
this.fail(this.t('invalidSize', this.maxSize));
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
if (this.allow && !match(this.allow, file.name)) {
|
|
118
|
+
this.fail(this.t('invalidName', this.allow));
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
if (this.mime && !match(this.mime, file.type)) {
|
|
123
|
+
this.fail(this.t('invalidMime', this.mime));
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
124
126
|
}
|
|
125
|
-
}
|
|
126
127
|
|
|
127
|
-
|
|
128
|
+
await this.beforeAll(this, files);
|
|
128
129
|
|
|
129
|
-
|
|
130
|
-
const upload = async (files) => {
|
|
131
|
-
const data = new FormData();
|
|
130
|
+
const size = this.concurrent;
|
|
132
131
|
|
|
133
|
-
|
|
132
|
+
for (let i = 0; i < files.length; i += size) {
|
|
133
|
+
const data = new FormData();
|
|
134
134
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
135
|
+
files.slice(i, i + size).forEach((file) => data.append(this.name, file));
|
|
136
|
+
|
|
137
|
+
for (const key in this.params) {
|
|
138
|
+
data.append(key, this.params[key]);
|
|
139
|
+
}
|
|
138
140
|
|
|
139
|
-
try {
|
|
140
141
|
const xhr = await ajax(this.url, {
|
|
141
142
|
data,
|
|
142
143
|
method: this.method,
|
|
@@ -154,42 +155,26 @@ export default {
|
|
|
154
155
|
|
|
155
156
|
this.complete(xhr);
|
|
156
157
|
|
|
157
|
-
if (
|
|
158
|
-
await upload(chunks.shift());
|
|
159
|
-
} else {
|
|
158
|
+
if (i + size >= files.length) {
|
|
160
159
|
this.completeAll(xhr);
|
|
161
160
|
}
|
|
162
|
-
} catch (e) {
|
|
163
|
-
if (e.name !== 'AbortError') {
|
|
164
|
-
this.error(e);
|
|
165
|
-
}
|
|
166
161
|
}
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
|
|
162
|
+
} catch (e) {
|
|
163
|
+
if (e?.name !== 'AbortError') {
|
|
164
|
+
this.error(e);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
170
167
|
},
|
|
171
168
|
},
|
|
172
169
|
};
|
|
173
170
|
|
|
174
171
|
function match(pattern, path) {
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
.replace(/\//g, '\\/')
|
|
179
|
-
.replace(/\*\*/g, '(\\/[^\\/]+)*')
|
|
180
|
-
.replace(/\*/g, '[^\\/]+')
|
|
181
|
-
.replace(/((?!\\))\?/g, '$1.')}$`,
|
|
182
|
-
'i',
|
|
183
|
-
),
|
|
172
|
+
const expression = pattern.replace(
|
|
173
|
+
/\*\*|[.*+?^${}()|[\]\\]/g,
|
|
174
|
+
(s) => ({ '**': '.*', '*': '[^/]+', '?': '[^/]', '|': '|' })[s] ?? `\\${s}`,
|
|
184
175
|
);
|
|
185
|
-
}
|
|
186
176
|
|
|
187
|
-
|
|
188
|
-
const chunks = [];
|
|
189
|
-
for (let i = 0; i < files.length; i += size) {
|
|
190
|
-
chunks.push(files.slice(i, i + size));
|
|
191
|
-
}
|
|
192
|
-
return chunks;
|
|
177
|
+
return new RegExp(`^(?:${expression})$`, 'i').test(path);
|
|
193
178
|
}
|
|
194
179
|
|
|
195
180
|
function stop(e) {
|
package/src/js/core/drop.js
CHANGED
|
@@ -458,16 +458,14 @@ function getViewport(el, target) {
|
|
|
458
458
|
}
|
|
459
459
|
|
|
460
460
|
function createToggleComponent(drop) {
|
|
461
|
-
const
|
|
461
|
+
const target = drop.$el;
|
|
462
|
+
const el = query(drop.toggle, target);
|
|
462
463
|
|
|
463
464
|
if (el) {
|
|
464
|
-
drop.$create('toggle', el, { target
|
|
465
|
+
drop.$create('toggle', el, { target, mode: drop.mode });
|
|
465
466
|
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
dropEl.id = generateId(drop, dropEl);
|
|
469
|
-
}
|
|
470
|
-
attr(el, 'aria-controls', dropEl.id);
|
|
467
|
+
target.id = generateId(drop, target);
|
|
468
|
+
attr(el, 'aria-controls', target.id);
|
|
471
469
|
}
|
|
472
470
|
|
|
473
471
|
return el;
|
|
@@ -96,7 +96,6 @@ export default {
|
|
|
96
96
|
const { elements } = this;
|
|
97
97
|
const changed = active !== false && !hasClass(elements[active], this.cls);
|
|
98
98
|
|
|
99
|
-
this.links.forEach((el) => el.blur());
|
|
100
99
|
for (let i = 0; i < elements.length; i++) {
|
|
101
100
|
toggleClass(elements[i], this.cls, +i === active);
|
|
102
101
|
}
|
package/src/js/core/svg.js
CHANGED
|
@@ -84,7 +84,7 @@ function applyAttributes(el) {
|
|
|
84
84
|
const loadSVG = memoize(async (src) => {
|
|
85
85
|
if (src) {
|
|
86
86
|
const response = await fetch(src);
|
|
87
|
-
if (response.headers.get('Content-Type')
|
|
87
|
+
if (/^image\/svg\+xml\s*(;|$)/i.test(response.headers.get('Content-Type'))) {
|
|
88
88
|
return response.text();
|
|
89
89
|
}
|
|
90
90
|
}
|
package/src/js/util/style.js
CHANGED
package/build/publishDev.js
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { $ } from 'execa';
|
|
2
|
-
import semver from 'semver';
|
|
3
|
-
import { args, getVersion } from './util.js';
|
|
4
|
-
|
|
5
|
-
const $$ = $({ stdio: 'inherit' });
|
|
6
|
-
|
|
7
|
-
// default exec options
|
|
8
|
-
if (args.f || args.force || (await isDevCommit())) {
|
|
9
|
-
// increase version patch number
|
|
10
|
-
const version = semver.inc(await getVersion(), 'patch');
|
|
11
|
-
|
|
12
|
-
// get current git hash
|
|
13
|
-
const hash = (await $`git rev-parse --short HEAD`).stdout.trim();
|
|
14
|
-
|
|
15
|
-
// set version of package.json
|
|
16
|
-
await $$`pnpm version ${version}-dev.${hash} --no-git-tag-version`;
|
|
17
|
-
|
|
18
|
-
// create dist files
|
|
19
|
-
await $$`pnpm compile`;
|
|
20
|
-
await $$`pnpm compile-rtl`;
|
|
21
|
-
await $$`pnpm build-scss`;
|
|
22
|
-
} else {
|
|
23
|
-
process.exit(1);
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
async function isDevCommit() {
|
|
27
|
-
// check for changes to publish (%B: raw body (unwrapped subject and body)
|
|
28
|
-
const message = (await $`git log -1 --pretty=%B`).stdout.trim();
|
|
29
|
-
|
|
30
|
-
// https://www.conventionalcommits.org/en/v1.0.0/
|
|
31
|
-
return Boolean(message.match(/^(revert: )?(feat|fix|refactor|perf)(\(.+\))?: .{1,50}/));
|
|
32
|
-
}
|
package/build/release.js
DELETED
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
import { ZipArchive } from 'archiver';
|
|
2
|
-
import { $ } from 'execa';
|
|
3
|
-
import inquirer from 'inquirer';
|
|
4
|
-
import fs from 'node:fs';
|
|
5
|
-
import { glob } from 'node:fs/promises';
|
|
6
|
-
import semver from 'semver';
|
|
7
|
-
import { args, getVersion, logFile, read, replaceInFile } from './util.js';
|
|
8
|
-
|
|
9
|
-
const $$ = $({ stdio: 'inherit' });
|
|
10
|
-
const prompt = inquirer.createPromptModule();
|
|
11
|
-
|
|
12
|
-
if ((await $`git status --porcelain`).stdout.trim()) {
|
|
13
|
-
throw 'Repository contains uncommitted changes.';
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
const prevVersion = await getVersion();
|
|
17
|
-
const version = await inquireVersion(args.v || args.version);
|
|
18
|
-
|
|
19
|
-
await raiseVersion(version);
|
|
20
|
-
|
|
21
|
-
await $$`pnpm compile`;
|
|
22
|
-
await $$`pnpm compile-rtl`;
|
|
23
|
-
await $$`pnpm build-scss`;
|
|
24
|
-
|
|
25
|
-
await createPackage(version);
|
|
26
|
-
|
|
27
|
-
if (args.d || args.deploy || (await inquireDeploy())) {
|
|
28
|
-
await deploy(version);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
function isValidVersion(version) {
|
|
32
|
-
return semver.valid(version) && semver.gt(version, prevVersion);
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
async function inquireVersion(version) {
|
|
36
|
-
if (isValidVersion(version)) {
|
|
37
|
-
return version;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
return (
|
|
41
|
-
await prompt({
|
|
42
|
-
name: 'version',
|
|
43
|
-
message: 'Enter a version',
|
|
44
|
-
default: () =>
|
|
45
|
-
semver.inc(prevVersion, semver.prerelease(prevVersion) ? 'prerelease' : 'patch'),
|
|
46
|
-
validate: (val) => isValidVersion(val) || 'Invalid version',
|
|
47
|
-
})
|
|
48
|
-
).version;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
function raiseVersion(version) {
|
|
52
|
-
return Promise.all([
|
|
53
|
-
$$`npm version ${version} --git-tag-version false`,
|
|
54
|
-
replaceInFile('CHANGELOG.md', (data) =>
|
|
55
|
-
data.replace(/^##\s*WIP.*$/m, `## ${versionFormat(version)} (${dateFormat()})`),
|
|
56
|
-
),
|
|
57
|
-
replaceInFile('.github/ISSUE_TEMPLATE/bug-report.md', (data) =>
|
|
58
|
-
data.replace(prevVersion, version),
|
|
59
|
-
),
|
|
60
|
-
]);
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
async function createPackage(version) {
|
|
64
|
-
const dest = `dist/uikit-${version}.zip`;
|
|
65
|
-
const archive = new ZipArchive({ zlib: { level: 9 } });
|
|
66
|
-
|
|
67
|
-
const output = fs.createWriteStream(dest);
|
|
68
|
-
const closed = new Promise((resolve, reject) => {
|
|
69
|
-
output.on('close', resolve);
|
|
70
|
-
output.on('error', reject);
|
|
71
|
-
});
|
|
72
|
-
|
|
73
|
-
archive.pipe(output);
|
|
74
|
-
|
|
75
|
-
for await (const file of glob('dist/{js,css}/uikit?(-icons|-rtl)?(.min).{js,css}')) {
|
|
76
|
-
archive.file(file, { name: file.slice(5) });
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
await archive.finalize();
|
|
80
|
-
await closed;
|
|
81
|
-
await logFile(dest);
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
function versionFormat(version) {
|
|
85
|
-
return [semver.coerce(version).version].concat(semver.prerelease(version) || []).join(' ');
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
async function inquireDeploy() {
|
|
89
|
-
return (
|
|
90
|
-
await prompt({
|
|
91
|
-
name: 'deploy',
|
|
92
|
-
type: 'confirm',
|
|
93
|
-
message: 'Do you want to deploy the release?',
|
|
94
|
-
default: true,
|
|
95
|
-
})
|
|
96
|
-
).deploy;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
async function deploy(version) {
|
|
100
|
-
const tag = `v${version}`;
|
|
101
|
-
const branch = `release/v${version}`;
|
|
102
|
-
|
|
103
|
-
await $$`git checkout -b ${branch}`;
|
|
104
|
-
await $$`git add --all`;
|
|
105
|
-
await $$`git commit -am v${version}`;
|
|
106
|
-
|
|
107
|
-
await $$`git checkout main`;
|
|
108
|
-
await $$`git merge ${branch} --commit --no-ff -m ${`Merge branch '${branch}'`}`;
|
|
109
|
-
await $$`git tag ${tag}`;
|
|
110
|
-
|
|
111
|
-
await $$`git push origin main --tags`;
|
|
112
|
-
|
|
113
|
-
const notes = (await read('./CHANGELOG.md'))
|
|
114
|
-
.match(/## \d.*?$\s*(.*?)\s*(?=## \d)/ms)[1]
|
|
115
|
-
.replace(/(["`])/g, '\\$1');
|
|
116
|
-
await $$`gh release create v${version} --repo uikit/uikit --notes ${notes} ./dist/uikit-${version}.zip`;
|
|
117
|
-
|
|
118
|
-
await $$`git checkout develop`;
|
|
119
|
-
await $$`git merge ${tag} --commit --no-ff -m ${`Merge tag '${tag}' into develop`}`;
|
|
120
|
-
|
|
121
|
-
await $$`git branch --delete ${branch}`;
|
|
122
|
-
|
|
123
|
-
await $$`git push origin develop`;
|
|
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
|
-
}
|