@windwalker-io/unicorn-next 0.1.2 → 0.1.4
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/.editorconfig +18 -18
- package/.gulp.json +7 -7
- package/bin/release.mjs +47 -47
- package/dist/chunks/button-radio.js.map +1 -1
- package/dist/chunks/checkboxes-multi-select.js.map +1 -1
- package/dist/chunks/field-cascade-select.js.map +1 -1
- package/dist/chunks/field-file-drag.js +34 -31
- package/dist/chunks/field-file-drag.js.map +1 -1
- package/dist/chunks/field-flatpickr.js +10 -3
- package/dist/chunks/field-flatpickr.js.map +1 -1
- package/dist/chunks/field-modal-select.js +6 -2
- package/dist/chunks/field-modal-select.js.map +1 -1
- package/dist/chunks/field-modal-tree.js +10 -4
- package/dist/chunks/field-modal-tree.js.map +1 -1
- package/dist/chunks/field-multi-uploader.js +10 -3
- package/dist/chunks/field-multi-uploader.js.map +1 -1
- package/dist/chunks/field-repeatable.js.map +1 -1
- package/dist/chunks/field-single-image-drag.js +12 -7
- package/dist/chunks/field-single-image-drag.js.map +1 -1
- package/dist/chunks/form.js.map +1 -1
- package/dist/chunks/grid.js.map +1 -1
- package/dist/chunks/http-client.js.map +1 -1
- package/dist/chunks/iframe-modal.js +27 -24
- package/dist/chunks/iframe-modal.js.map +1 -1
- package/dist/chunks/keep-tab.js.map +1 -1
- package/dist/chunks/legacy.js.map +1 -1
- package/dist/chunks/list-dependent.js.map +1 -1
- package/dist/chunks/s3-multipart-uploader.js.map +1 -1
- package/dist/chunks/s3-uploader.js.map +1 -1
- package/dist/chunks/show-on.js.map +1 -1
- package/dist/chunks/tinymce.js.map +1 -1
- package/dist/chunks/ui-bootstrap5.js.map +1 -1
- package/dist/chunks/unicorn.js +10 -6
- package/dist/chunks/unicorn.js.map +1 -1
- package/dist/chunks/validation.js.map +1 -1
- package/dist/index.d.ts +47 -26
- package/dist/unicorn.js +3 -3
- package/fusionfile.mjs +155 -155
- package/package.json +103 -103
- package/scss/bootstrap/multi-level-menu.scss +121 -121
- package/scss/editor.scss +116 -116
- package/scss/field/file-drag.scss +102 -102
- package/scss/field/single-image-drag.scss +88 -88
- package/scss/field/vue-drag-uploader.scss +160 -160
- package/scss/switcher.scss +156 -156
- package/src/app.ts +128 -128
- package/src/bootstrap/button-radio.ts +208 -208
- package/src/bootstrap/keep-tab.ts +155 -155
- package/src/composable/index.ts +21 -21
- package/src/composable/useCheckboxesMultiSelect.ts +22 -22
- package/src/composable/useFieldCascadeSelect.ts +9 -9
- package/src/composable/useFieldFileDrag.ts +9 -9
- package/src/composable/useFieldFlatpickr.ts +3 -3
- package/src/composable/useFieldModalSelect.ts +6 -6
- package/src/composable/useFieldModalTree.ts +3 -3
- package/src/composable/useFieldMultiUploader.ts +9 -3
- package/src/composable/useFieldRepeatable.ts +9 -9
- package/src/composable/useFieldSingleImageDrag.ts +9 -5
- package/src/composable/useForm.ts +43 -43
- package/src/composable/useGrid.ts +57 -57
- package/src/composable/useHttp.ts +9 -9
- package/src/composable/useIframeModal.ts +10 -10
- package/src/composable/useListDependent.ts +26 -26
- package/src/composable/useQueue.ts +13 -13
- package/src/composable/useS3Uploader.ts +32 -32
- package/src/composable/useShowOn.ts +9 -9
- package/src/composable/useStack.ts +13 -13
- package/src/composable/useTinymce.ts +29 -29
- package/src/composable/useTomSelect.ts +72 -72
- package/src/composable/useUIBootstrap5.ts +48 -48
- package/src/composable/useUniDirective.ts +32 -32
- package/src/composable/useValidation.ts +39 -39
- package/src/data.ts +34 -34
- package/src/events.ts +82 -82
- package/src/legacy/legacy.ts +190 -190
- package/src/legacy/loader.ts +125 -125
- package/src/module/checkboxes-multi-select.ts +54 -54
- package/src/module/field-cascade-select.ts +292 -292
- package/src/module/field-file-drag.ts +295 -292
- package/src/module/field-flatpickr.ts +130 -127
- package/src/module/field-modal-select.ts +179 -174
- package/src/module/field-modal-tree.ts +31 -27
- package/src/module/field-multi-uploader.ts +368 -361
- package/src/module/field-repeatable.ts +202 -202
- package/src/module/field-single-image-drag.ts +475 -468
- package/src/module/form.ts +223 -223
- package/src/module/grid.ts +465 -465
- package/src/module/http-client.ts +248 -248
- package/src/module/iframe-modal.ts +170 -167
- package/src/module/list-dependent.ts +321 -321
- package/src/module/s3-multipart-uploader.ts +300 -300
- package/src/module/s3-uploader.ts +234 -234
- package/src/module/show-on.ts +175 -175
- package/src/module/tinymce.ts +276 -276
- package/src/module/ui-bootstrap5.ts +116 -116
- package/src/module/validation.ts +1026 -1026
- package/src/plugin/index.ts +1 -1
- package/src/plugin/php-adapter.ts +72 -72
- package/src/polyfill/form-request-submit.ts +31 -31
- package/src/polyfill/index.ts +9 -9
- package/src/service/animate.ts +58 -58
- package/src/service/crypto.ts +27 -27
- package/src/service/dom-watcher.ts +62 -62
- package/src/service/dom.ts +265 -265
- package/src/service/helper.ts +48 -48
- package/src/service/index.ts +10 -10
- package/src/service/lang.ts +122 -122
- package/src/service/loader.ts +152 -152
- package/src/service/router.ts +118 -118
- package/src/service/ui.ts +525 -525
- package/src/service/uri.ts +106 -106
- package/src/types/base.ts +9 -9
- package/src/types/index.ts +4 -4
- package/src/types/modal-tree.ts +12 -12
- package/src/types/plugin.ts +6 -6
- package/src/types/shims.d.ts +18 -18
- package/src/types/ui.ts +6 -6
- package/src/unicorn.ts +79 -79
- package/src/utilities/arr.ts +25 -25
- package/src/utilities/base.ts +9 -9
- package/src/utilities/data.ts +48 -48
- package/src/utilities/index.ts +5 -5
- package/src/utilities/tree.ts +20 -20
- package/src/vue/components/ModalTree/ModalTreeApp.vue +175 -175
- package/src/vue/components/ModalTree/TreeItem.vue +262 -262
- package/src/vue/components/ModalTree/TreeModal.vue +225 -225
- package/tests/test.js +4 -4
- package/tsconfig.js.json +25 -25
- package/tsconfig.json +17 -17
- package/vite.assets.config.ts +61 -61
- package/vite.config.test.ts +36 -36
- package/vite.config.ts +112 -112
package/src/service/router.ts
CHANGED
|
@@ -1,118 +1,118 @@
|
|
|
1
|
-
|
|
2
|
-
import { data } from '../data';
|
|
3
|
-
import { decode, encode } from 'qss';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Add a route.
|
|
7
|
-
*/
|
|
8
|
-
export function addRoute(route: string, url: string) {
|
|
9
|
-
const routes = data('unicorn.routes') || {};
|
|
10
|
-
routes[route] = url;
|
|
11
|
-
|
|
12
|
-
data('unicorn.routes', routes);
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Get route.
|
|
17
|
-
*/
|
|
18
|
-
export function route(route: string, query?: Record<string, any>): string {
|
|
19
|
-
const source = route;
|
|
20
|
-
const extract = extractRoute(source);
|
|
21
|
-
route = extract.route;
|
|
22
|
-
let path = extract.path;
|
|
23
|
-
const routes = data('unicorn.routes') || {};
|
|
24
|
-
|
|
25
|
-
let url = routes[route];
|
|
26
|
-
|
|
27
|
-
if (url == null) {
|
|
28
|
-
if (!route.startsWith('@')) {
|
|
29
|
-
route = '@' + route;
|
|
30
|
-
} else {
|
|
31
|
-
route = route.substring(1);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
url = routes[route];
|
|
36
|
-
|
|
37
|
-
if (url == null) {
|
|
38
|
-
throw new Error(`Route: "${source}" not found`);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
// Merge query
|
|
42
|
-
if (path) {
|
|
43
|
-
const { route: u1, path: u1q } = extractRoute(url, '?');
|
|
44
|
-
const { route: u2, path: u2q } = extractRoute(path, '?');
|
|
45
|
-
|
|
46
|
-
url = u1 + '/' + u2;
|
|
47
|
-
|
|
48
|
-
if (u1q || u2q) {
|
|
49
|
-
const q = [ u1q, u2q ].filter(u => u).join('&');
|
|
50
|
-
url += '?' + q;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
return addQuery(url, query);
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
function extractRoute(route: string, sep: string = '/'): { path: string; route: string } {
|
|
58
|
-
if (route.indexOf(sep) === -1) {
|
|
59
|
-
return { route, path: '' }
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
const segments = route.split(sep);
|
|
63
|
-
|
|
64
|
-
route = segments.shift() || '';
|
|
65
|
-
const path = segments.join(sep);
|
|
66
|
-
|
|
67
|
-
return { route, path };
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
export function hasRoute(route: string): boolean {
|
|
71
|
-
return undefined !== data('unicorn.routes')[route];
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
export function addQuery(url: string, query?: Record<string, any>): string {
|
|
75
|
-
if (query == null) {
|
|
76
|
-
return url;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
for (let k in query) {
|
|
80
|
-
const v = query[k];
|
|
81
|
-
|
|
82
|
-
const placeholder = `{${k}}`;
|
|
83
|
-
|
|
84
|
-
if (url.indexOf(placeholder) !== -1) {
|
|
85
|
-
url = url.replace(
|
|
86
|
-
new RegExp(`${placeholder}`, 'g'),
|
|
87
|
-
v
|
|
88
|
-
);
|
|
89
|
-
delete query[k];
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
const encodedPlaceholder = encodeURIComponent(`{${k}}`);
|
|
93
|
-
|
|
94
|
-
if (url.indexOf(encodedPlaceholder) !== -1) {
|
|
95
|
-
url = url.replace(
|
|
96
|
-
new RegExp(`${encodedPlaceholder}`, 'g'),
|
|
97
|
-
v
|
|
98
|
-
);
|
|
99
|
-
delete query[k];
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
if (Object.keys(query).length === 0) {
|
|
104
|
-
return url;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
const queryString = encode(query);
|
|
108
|
-
|
|
109
|
-
return url + (/\?/.test(url) ? `&${queryString}` : `?${queryString}`);
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
export function parseQuery<T = Record<string, any>>(queryString: string): T {
|
|
113
|
-
return decode(queryString) as T;
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
export function buildQuery(query: Record<string, any>): string {
|
|
117
|
-
return encode(query);
|
|
118
|
-
}
|
|
1
|
+
|
|
2
|
+
import { data } from '../data';
|
|
3
|
+
import { decode, encode } from 'qss';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Add a route.
|
|
7
|
+
*/
|
|
8
|
+
export function addRoute(route: string, url: string) {
|
|
9
|
+
const routes = data('unicorn.routes') || {};
|
|
10
|
+
routes[route] = url;
|
|
11
|
+
|
|
12
|
+
data('unicorn.routes', routes);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Get route.
|
|
17
|
+
*/
|
|
18
|
+
export function route(route: string, query?: Record<string, any>): string {
|
|
19
|
+
const source = route;
|
|
20
|
+
const extract = extractRoute(source);
|
|
21
|
+
route = extract.route;
|
|
22
|
+
let path = extract.path;
|
|
23
|
+
const routes = data('unicorn.routes') || {};
|
|
24
|
+
|
|
25
|
+
let url = routes[route];
|
|
26
|
+
|
|
27
|
+
if (url == null) {
|
|
28
|
+
if (!route.startsWith('@')) {
|
|
29
|
+
route = '@' + route;
|
|
30
|
+
} else {
|
|
31
|
+
route = route.substring(1);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
url = routes[route];
|
|
36
|
+
|
|
37
|
+
if (url == null) {
|
|
38
|
+
throw new Error(`Route: "${source}" not found`);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// Merge query
|
|
42
|
+
if (path) {
|
|
43
|
+
const { route: u1, path: u1q } = extractRoute(url, '?');
|
|
44
|
+
const { route: u2, path: u2q } = extractRoute(path, '?');
|
|
45
|
+
|
|
46
|
+
url = u1 + '/' + u2;
|
|
47
|
+
|
|
48
|
+
if (u1q || u2q) {
|
|
49
|
+
const q = [ u1q, u2q ].filter(u => u).join('&');
|
|
50
|
+
url += '?' + q;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
return addQuery(url, query);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
function extractRoute(route: string, sep: string = '/'): { path: string; route: string } {
|
|
58
|
+
if (route.indexOf(sep) === -1) {
|
|
59
|
+
return { route, path: '' }
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
const segments = route.split(sep);
|
|
63
|
+
|
|
64
|
+
route = segments.shift() || '';
|
|
65
|
+
const path = segments.join(sep);
|
|
66
|
+
|
|
67
|
+
return { route, path };
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export function hasRoute(route: string): boolean {
|
|
71
|
+
return undefined !== data('unicorn.routes')[route];
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export function addQuery(url: string, query?: Record<string, any>): string {
|
|
75
|
+
if (query == null) {
|
|
76
|
+
return url;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
for (let k in query) {
|
|
80
|
+
const v = query[k];
|
|
81
|
+
|
|
82
|
+
const placeholder = `{${k}}`;
|
|
83
|
+
|
|
84
|
+
if (url.indexOf(placeholder) !== -1) {
|
|
85
|
+
url = url.replace(
|
|
86
|
+
new RegExp(`${placeholder}`, 'g'),
|
|
87
|
+
v
|
|
88
|
+
);
|
|
89
|
+
delete query[k];
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
const encodedPlaceholder = encodeURIComponent(`{${k}}`);
|
|
93
|
+
|
|
94
|
+
if (url.indexOf(encodedPlaceholder) !== -1) {
|
|
95
|
+
url = url.replace(
|
|
96
|
+
new RegExp(`${encodedPlaceholder}`, 'g'),
|
|
97
|
+
v
|
|
98
|
+
);
|
|
99
|
+
delete query[k];
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
if (Object.keys(query).length === 0) {
|
|
104
|
+
return url;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
const queryString = encode(query);
|
|
108
|
+
|
|
109
|
+
return url + (/\?/.test(url) ? `&${queryString}` : `?${queryString}`);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
export function parseQuery<T = Record<string, any>>(queryString: string): T {
|
|
113
|
+
return decode(queryString) as T;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
export function buildQuery(query: Record<string, any>): string {
|
|
117
|
+
return encode(query);
|
|
118
|
+
}
|