@kizmann/nano-ui 1.0.15 → 1.1.0
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/dist/nano-ui.css +1 -1
- package/dist/nano-ui.js +1 -1
- package/dist/nano-ui.js.map +1 -1
- package/dist/themes/dark.css +1 -1
- package/dist/themes/glossy.dark.css +1 -0
- package/dist/themes/glossy.light.css +1 -0
- package/dist/themes/light.css +1 -1
- package/package.json +1 -1
- package/src/button/src/button/button.scss +4 -1
- package/src/collapse/src/collapse-item/collapse-item.jsx +1 -1
- package/src/draggable/src/draglist/draglist.jsx +1 -1
- package/src/draggable/src/draglist-item/draglist-item.jsx +5 -2
- package/src/info/src/info/info.jsx +1 -1
- package/src/modal/src/modal/modal.jsx +1 -1
- package/src/modal/src/modal/modal.scss +2 -2
- package/src/paginator/src/paginator/paginator.jsx +24 -29
- package/src/preview/index.js +2 -0
- package/src/preview/index.scss +1 -0
- package/src/preview/src/_tools/preview-handler.js +193 -0
- package/src/preview/src/_tools/preview-helper.js +142 -0
- package/src/preview/src/preview/preview.jsx +48 -115
- package/src/preview/src/preview/preview.scss +2 -1
- package/src/preview/src/preview-modal/preview-modal.jsx +156 -0
- package/src/preview/src/preview-modal/preview-modal.scss +56 -0
- package/src/preview/src/preview-video/preview-video.jsx +4 -60
- package/src/resizer/index.js +3 -1
- package/src/resizer/src/resizer/resizer-next.jsx +536 -0
- package/src/scrollbar/index.js +3 -1
- package/src/scrollbar/index.scss +1 -0
- package/src/scrollbar/src/scrollbar/scrollbar.scss +14 -8
- package/src/scrollbar/src/scrollbar-next/scrollbar-next.jsx +640 -0
- package/src/scrollbar/src/scrollbar-next/scrollbar-next.scss +148 -0
- package/src/select/src/select/select.jsx +12 -16
- package/src/select/src/select/select.scss +1 -1
- package/src/table/src/table/table.jsx +4 -7
- package/src/table/src/table/table.scss +15 -14
- package/src/table/src/table-cell/types/table-cell-image.jsx +9 -3
- package/src/table/src/table-column/table-column.jsx +10 -26
- package/src/tabs/src/tabs-item/tabs-item.jsx +1 -1
- package/src/tags/src/tags-item/tags-item.jsx +1 -2
- package/src/timepicker/src/timepicker-panel/timepicker-panel.jsx +15 -3
- package/src/timepicker/src/timepicker-panel/timepicker-panel.scss +2 -1
- package/src/virtualscroller/src/virtualscroller/virtualscroller.jsx +63 -30
- package/src/virtualscroller/src/virtualscroller/virtualscroller.scss +1 -0
- package/themes/glossy/button/index.scss +2 -0
- package/themes/glossy/button/src/button/button.scss +116 -0
- package/themes/glossy/button/src/button-group/button-group.scss +1 -0
- package/themes/glossy/index-dark.scss +3 -0
- package/themes/glossy/index-light.scss +3 -0
- package/themes/glossy/index.scss +43 -0
- package/themes/glossy/root/image/empty-default.svg +30 -0
- package/themes/glossy/root/image/empty-space.svg +34 -0
- package/themes/glossy/root/image/star-default.svg +10 -0
- package/themes/glossy/root/image/test.svg +1 -0
- package/themes/glossy/root/vars-dark.scss +234 -0
- package/themes/glossy/root/vars-light.scss +234 -0
- package/themes/glossy/root/vars.scss +233 -0
- package/themes/macos/index.scss +1 -0
- package/themes/macos/preview/index.scss +1 -0
- package/themes/macos/preview/src/preview-modal/preview-modal.scss +28 -0
- package/themes/macos/scrollbar/src/scrollbar/scrollbar.scss +1 -0
- package/themes/macos/table/src/table/table.scss +5 -0
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import { Any, Event, UUID } from "@kizmann/pico-js";
|
|
2
|
+
import { NPreviewHandler } from "../_tools/preview-handler.js";
|
|
3
|
+
import { NPreviewHelper } from "../_tools/preview-helper.js";
|
|
4
|
+
|
|
5
|
+
export default {
|
|
6
|
+
|
|
7
|
+
name: 'NPreviewModal',
|
|
8
|
+
|
|
9
|
+
inject: {
|
|
10
|
+
|
|
11
|
+
NPreview: {
|
|
12
|
+
default: undefined
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
},
|
|
16
|
+
|
|
17
|
+
props: {
|
|
18
|
+
|
|
19
|
+
file: {
|
|
20
|
+
default()
|
|
21
|
+
{
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
|
|
26
|
+
index: {
|
|
27
|
+
default()
|
|
28
|
+
{
|
|
29
|
+
return 0;
|
|
30
|
+
},
|
|
31
|
+
type: [Number, String]
|
|
32
|
+
},
|
|
33
|
+
|
|
34
|
+
group: {
|
|
35
|
+
default()
|
|
36
|
+
{
|
|
37
|
+
return UUID();
|
|
38
|
+
},
|
|
39
|
+
type: [String]
|
|
40
|
+
},
|
|
41
|
+
|
|
42
|
+
},
|
|
43
|
+
|
|
44
|
+
data()
|
|
45
|
+
{
|
|
46
|
+
return { uid: UUID(), visible: false };
|
|
47
|
+
},
|
|
48
|
+
|
|
49
|
+
watch: {
|
|
50
|
+
|
|
51
|
+
visible: function (value) {
|
|
52
|
+
if ( value ) {
|
|
53
|
+
this.NPreview.$emit('slide');
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
},
|
|
58
|
+
|
|
59
|
+
mounted()
|
|
60
|
+
{
|
|
61
|
+
NPreviewHandler.create()
|
|
62
|
+
.append(this.$el);
|
|
63
|
+
|
|
64
|
+
NPreviewHandler.append(this);
|
|
65
|
+
},
|
|
66
|
+
|
|
67
|
+
beforeUnmount()
|
|
68
|
+
{
|
|
69
|
+
this.$el.remove();
|
|
70
|
+
|
|
71
|
+
NPreviewHandler.remove(this);
|
|
72
|
+
},
|
|
73
|
+
|
|
74
|
+
methods: {
|
|
75
|
+
|
|
76
|
+
openBox()
|
|
77
|
+
{
|
|
78
|
+
NPreviewHandler.open(this);
|
|
79
|
+
},
|
|
80
|
+
|
|
81
|
+
closeBox()
|
|
82
|
+
{
|
|
83
|
+
NPreviewHandler.close();
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
},
|
|
87
|
+
|
|
88
|
+
renderPrev()
|
|
89
|
+
{
|
|
90
|
+
let prevProps = {
|
|
91
|
+
size: 'lg', square: true, icon: 'fa fa-angle-left'
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
prevProps['onClick'] = () => {
|
|
95
|
+
this.gotoPrev();
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
return (
|
|
99
|
+
<div class="n-preview__prev">
|
|
100
|
+
<NButton {...prevProps} />
|
|
101
|
+
</div>
|
|
102
|
+
);
|
|
103
|
+
},
|
|
104
|
+
|
|
105
|
+
renderNext()
|
|
106
|
+
{
|
|
107
|
+
let nextProps = {
|
|
108
|
+
size: 'lg', square: true, icon: 'fa fa-angle-right'
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
nextProps['onClick'] = () => {
|
|
112
|
+
this.gotoNext();
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
return (
|
|
116
|
+
<div class="n-preview__next">
|
|
117
|
+
<NButton {...nextProps} />
|
|
118
|
+
</div>
|
|
119
|
+
);
|
|
120
|
+
},
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
renderImage()
|
|
125
|
+
{
|
|
126
|
+
let classList = [
|
|
127
|
+
'n-preview-frame'
|
|
128
|
+
];
|
|
129
|
+
|
|
130
|
+
let mime = NPreviewHelper.getMime(this.file);
|
|
131
|
+
|
|
132
|
+
if ( mime === 'image' ) {
|
|
133
|
+
return (<NPreviewImage class={classList} src={this.file} />);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
if ( mime === 'video' ) {
|
|
137
|
+
return (<NPreviewVideo class={classList} src={this.file} />);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
let props = {
|
|
141
|
+
type: mime, showSrc: this.showSrc,
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
return (<NPreviewPlain class={classList} src={this.file} {...props} />);
|
|
145
|
+
},
|
|
146
|
+
|
|
147
|
+
render()
|
|
148
|
+
{
|
|
149
|
+
if ( ! this.visible ) {
|
|
150
|
+
return null;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
return this.ctor('renderImage')();
|
|
154
|
+
},
|
|
155
|
+
|
|
156
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
@import "../../../root/vars";
|
|
2
|
+
|
|
3
|
+
.n-preview-modal {
|
|
4
|
+
overflow: hidden;
|
|
5
|
+
position: fixed;
|
|
6
|
+
top: 0;
|
|
7
|
+
right: 0;
|
|
8
|
+
bottom: 0;
|
|
9
|
+
left: 0;
|
|
10
|
+
display: flex;
|
|
11
|
+
padding: 40px 80px;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.n-preview-modal:not(.n-ready) {
|
|
15
|
+
pointer-events: none;
|
|
16
|
+
opacity: 0;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.n-preview-modal__close {
|
|
20
|
+
cursor: pointer;
|
|
21
|
+
z-index: 100;
|
|
22
|
+
position: absolute;
|
|
23
|
+
top: 20px;
|
|
24
|
+
right: 20px;
|
|
25
|
+
display: flex;
|
|
26
|
+
align-items: center;
|
|
27
|
+
justify-content: center;
|
|
28
|
+
width: 40px;
|
|
29
|
+
height: 40px;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.n-preview-modal .n-preview-frame {
|
|
33
|
+
background: transparent !important;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.n-preview-modal__prev,
|
|
37
|
+
.n-preview-modal__next {
|
|
38
|
+
cursor: pointer;
|
|
39
|
+
z-index: 500;
|
|
40
|
+
position: absolute;
|
|
41
|
+
top: 50%;
|
|
42
|
+
display: flex;
|
|
43
|
+
align-items: center;
|
|
44
|
+
justify-content: center;
|
|
45
|
+
width: 40px;
|
|
46
|
+
height: 40px;
|
|
47
|
+
transform: translateY(-50%);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.n-preview-modal__prev {
|
|
51
|
+
left: 20px;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.n-preview-modal__next {
|
|
55
|
+
right: 20px;
|
|
56
|
+
}
|
|
@@ -1,58 +1,5 @@
|
|
|
1
1
|
import { Obj, Arr, Str, Any, Dom } from "@kizmann/pico-js";
|
|
2
|
-
|
|
3
|
-
window.resolveYoutube = function(url, fallback = null) {
|
|
4
|
-
|
|
5
|
-
if ( ! Any.isString(url) ) {
|
|
6
|
-
return fallback;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
let host = url.match(/^https?:\/\/(www\.)?(youtube\.com|youtu\.be)/);
|
|
10
|
-
|
|
11
|
-
if ( ! host ) {
|
|
12
|
-
return fallback;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
let id = url.match(/(\?v=.*?)(?=&|$)/);
|
|
16
|
-
|
|
17
|
-
if ( id && id.length === 2 ) {
|
|
18
|
-
return id[0].replace(/^\?v=/, '');
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
let path = url.match(/(\.be\/.*?)(?=\?|$)/);
|
|
22
|
-
|
|
23
|
-
if ( path && path.length === 2 ) {
|
|
24
|
-
return path[0].replace(/^\.be\//, '');
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
let frame = url.match(/(\/embed\/)(.*?$)/);
|
|
28
|
-
|
|
29
|
-
if ( frame && frame.length === 3 ) {
|
|
30
|
-
return frame[0].replace(/^\/embed\//, '');
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
return fallback;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
window.resolveVimeo = function(url, fallback = null) {
|
|
37
|
-
|
|
38
|
-
if ( ! Any.isString(url) ) {
|
|
39
|
-
return fallback;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
let host = url.match(/^https?:\/\/(www\.|player\.)?vimeo\.com/);
|
|
43
|
-
|
|
44
|
-
if ( ! host ) {
|
|
45
|
-
return fallback;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
let path = url.match(/(\/[0-9]+)(&|$)/);
|
|
49
|
-
|
|
50
|
-
if ( path && path.length === 3 ) {
|
|
51
|
-
return path[0].replace(/(^\/|&$)/, '');
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
return fallback;
|
|
55
|
-
}
|
|
2
|
+
import { NPreviewHelper } from "../_tools/preview-helper.js"
|
|
56
3
|
|
|
57
4
|
export default {
|
|
58
5
|
|
|
@@ -117,7 +64,7 @@ export default {
|
|
|
117
64
|
|
|
118
65
|
resolveYoutube()
|
|
119
66
|
{
|
|
120
|
-
let youtube =
|
|
67
|
+
let youtube = NPreviewHelper.getYoutubeKey(this.src);
|
|
121
68
|
|
|
122
69
|
if ( ! youtube ) {
|
|
123
70
|
return false;
|
|
@@ -132,7 +79,7 @@ export default {
|
|
|
132
79
|
|
|
133
80
|
resolveVimeo()
|
|
134
81
|
{
|
|
135
|
-
let vimeo =
|
|
82
|
+
let vimeo = NPreviewHelper.getVimeoKey(this.src);
|
|
136
83
|
|
|
137
84
|
if ( ! vimeo ) {
|
|
138
85
|
return false;
|
|
@@ -173,12 +120,9 @@ export default {
|
|
|
173
120
|
{
|
|
174
121
|
let src = Obj.get(this.src, 'name', this.src);
|
|
175
122
|
|
|
176
|
-
let extension = src.replace(/^.*?\.([^.?]+)(\?.*?)?$/,
|
|
177
|
-
'$1');
|
|
178
|
-
|
|
179
123
|
return (
|
|
180
124
|
<video width="320" height="240" controls>
|
|
181
|
-
<source src={this.tempSrc || this.src} type={
|
|
125
|
+
<source src={this.tempSrc || this.src} type={NPreviewHelper.getFullMime(src)} />
|
|
182
126
|
</video>
|
|
183
127
|
);
|
|
184
128
|
},
|
package/src/resizer/index.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import Resizer from "./src/resizer/resizer.jsx";
|
|
2
|
+
import ResizerNext from "./src/resizer/resizer-next.jsx";
|
|
2
3
|
|
|
3
4
|
export default function (App) {
|
|
4
|
-
App.component(Resizer.name, Resizer);
|
|
5
|
+
// App.component(Resizer.name, Resizer);
|
|
6
|
+
App.component(ResizerNext.name, ResizerNext);
|
|
5
7
|
}
|