vgapp 0.0.1

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.
Files changed (48) hide show
  1. package/.gitattributes +1 -0
  2. package/CHANGELOG.md +0 -0
  3. package/LICENSE +21 -0
  4. package/README.md +1 -0
  5. package/app/modules/base-module.js +97 -0
  6. package/app/modules/module-fn.js +119 -0
  7. package/app/modules/vgcollapse/js/vgcollapse.js +219 -0
  8. package/app/modules/vgdropdown/js/vgdropdown.js +279 -0
  9. package/app/modules/vgdropdown/scss/_variables.scss +9 -0
  10. package/app/modules/vgdropdown/scss/vgdropdown.scss +41 -0
  11. package/app/modules/vgformsender/js/vgformsender.js +400 -0
  12. package/app/modules/vgformsender/scss/vgformsender.scss +19 -0
  13. package/app/modules/vgmodal/js/vgmodal.js +346 -0
  14. package/app/modules/vgmodal/scss/_variables.scss +25 -0
  15. package/app/modules/vgmodal/scss/vgmodal.scss +111 -0
  16. package/app/modules/vgnav/js/vgnav.js +498 -0
  17. package/app/modules/vgnav/scss/_breakpoints.scss +127 -0
  18. package/app/modules/vgnav/scss/_hamburger.scss +62 -0
  19. package/app/modules/vgnav/scss/_placement.scss +70 -0
  20. package/app/modules/vgnav/scss/_toggle.scss +20 -0
  21. package/app/modules/vgnav/scss/_variables.scss +68 -0
  22. package/app/modules/vgnav/scss/vgnav.scss +150 -0
  23. package/app/modules/vgsidebar/js/vgsidebar.js +165 -0
  24. package/app/modules/vgsidebar/scss/_variables.scss +19 -0
  25. package/app/modules/vgsidebar/scss/vgsidebar.scss +90 -0
  26. package/app/utils/js/components/backdrop.js +54 -0
  27. package/app/utils/js/components/overflow.js +28 -0
  28. package/app/utils/js/components/params.js +44 -0
  29. package/app/utils/js/components/placement.js +59 -0
  30. package/app/utils/js/components/responsive.js +83 -0
  31. package/app/utils/js/components/scrollbar.js +114 -0
  32. package/app/utils/js/dom/data.js +51 -0
  33. package/app/utils/js/dom/event.js +331 -0
  34. package/app/utils/js/dom/manipulator.js +62 -0
  35. package/app/utils/js/dom/selectors.js +65 -0
  36. package/app/utils/js/functions.js +272 -0
  37. package/app/utils/scss/animate.scss +4074 -0
  38. package/app/utils/scss/default.scss +277 -0
  39. package/app/utils/scss/functions.scss +3 -0
  40. package/app/utils/scss/mixin.scss +11 -0
  41. package/app/utils/scss/variables.scss +80 -0
  42. package/build/vgapp.css +4538 -0
  43. package/build/vgapp.css.map +1 -0
  44. package/build/vgapp.js +3230 -0
  45. package/build/vgapp.js.map +1 -0
  46. package/index.js +29 -0
  47. package/package.json +43 -0
  48. package/webpack.config.js +63 -0
@@ -0,0 +1,277 @@
1
+ @import "../../utils/scss/functions";
2
+ @import "../../utils/scss/mixin";
3
+ @import "../../utils/scss/variables";
4
+
5
+ .vg-backdrop {
6
+ @include mix-vars('backdrop', $backdrop-map);
7
+ position: fixed;
8
+ top: 0;
9
+ left: 0;
10
+ width: 100vw;
11
+ height: 100vh;
12
+ background: var(--vg-backdrop-bg);
13
+ transition: var(--vg-backdrop-transition);
14
+ opacity: 0;
15
+ z-index: var(--vg-backdrop-z-index);
16
+
17
+ &.fade {
18
+ opacity: var(--vg-backdrop-opacity);
19
+ }
20
+ }
21
+
22
+ .vg-btn-close {
23
+ position: absolute;
24
+ right: 1rem;
25
+ top: 1rem;
26
+ border: none;
27
+ background: transparent;
28
+
29
+ svg {
30
+ width: 24px;
31
+ height: 24px;
32
+ }
33
+ }
34
+
35
+ .vg-collapse {
36
+ &:not(.show) {
37
+ display: none;
38
+ }
39
+ }
40
+
41
+ .vg-collapsing {
42
+ height: 0;
43
+ overflow: hidden;
44
+ transition: $transition-base;
45
+ }
46
+
47
+ /**
48
+ * Loader
49
+ */
50
+ .vg-loader, .vg.loader:after {
51
+ border-radius: 50%;
52
+ width: 7em;
53
+ height: 7em;
54
+ }
55
+ .vg-loader {
56
+ @include mix-vars('loader', $loader-map);
57
+ margin: var(--vg-loader-margin);
58
+ font-size: var(--vg-loader-font-size);
59
+ position: relative;
60
+ text-indent: -9999em;
61
+ border-top: var(--vg-loader-border-width) var(--vg-loader-border-style) var(--vg-loader-border-color);
62
+ border-right: var(--vg-loader-border-width) var(--vg-loader-border-style) var(--vg-loader-border-color);
63
+ border-bottom: var(--vg-loader-border-width) var(--vg-loader-border-style) var(--vg-loader-border-color);
64
+ border-left: var(--vg-loader-border-width) var(--vg-loader-border-style) var(--vg-loader-color);
65
+ transform: var(--vg-loader-transform);
66
+ animation: var(--vg-loader-animation);
67
+ }
68
+
69
+ /**
70
+ * Alert
71
+ */
72
+ .vg-alert {
73
+ @include mix-vars('alert', $alert-map);
74
+ @include mix-vars('alert-success', $alert-success-map);
75
+ @include mix-vars('alert-error', $alert-error-map);
76
+ @include mix-vars('alert-waiting', $alert-waiting-map);
77
+ padding: var(--vg-alert-padding);
78
+ margin: var(--vg-alert-margin);
79
+ border: var(--vg-alert-border-width) var(--vg-alert-border-style) var(--vg-alert-border-color);
80
+ border-radius: var(--vg-alert-border-radius);
81
+ display: flex;
82
+ align-items: center;
83
+ justify-content: center;
84
+
85
+ &-success {
86
+ color: var(--vg-alert-success-color);
87
+ border-color: var(--vg-alert-success-border-color);
88
+ background-color: var(--vg-alert-success-background-color);
89
+ }
90
+
91
+ &-error {
92
+ color: var(--vg-alert-error-color);
93
+ border-color: var(--vg-alert-error-border-color);
94
+ background-color: var(--vg-alert-error-background-color);
95
+ }
96
+
97
+ &-content {
98
+ display: flex;
99
+ align-items: var(--vg-alert-content-align);
100
+ justify-content: var(--vg-alert-content-justify);
101
+ gap: var(--vg-alert-gap);
102
+ width: var(--vg-alert-content-width);
103
+
104
+ &--icon {
105
+ width: var(--vg-alert-icon-width);
106
+ height: var(--vg-alert-icon-height);
107
+
108
+ svg {
109
+ width: 100%;
110
+ height: 100%;
111
+ }
112
+
113
+ .ui-success {
114
+ &-circle {
115
+ stroke: var(--vg-alert-success-stroke);
116
+ }
117
+
118
+ &-path {
119
+ stroke: var(--vg-alert-success-color);
120
+ }
121
+ }
122
+ }
123
+ }
124
+
125
+ &-modal {
126
+ --vg-alert-icon-width: 150px;
127
+ --vg-alert-icon-height: 150px;
128
+ --vg-alert-padding: 5rem 2rem;
129
+ --vg-alert-border-width: 0;
130
+ margin: 0;
131
+
132
+ .vg-alert-content {
133
+ flex-direction: column;
134
+ text-align: center;
135
+ }
136
+ }
137
+ }
138
+
139
+ /**
140
+ * UI before Animation
141
+ */
142
+ .ui-success {
143
+ &-circle {
144
+ stroke-dasharray: 260.75219024795285px, 260.75219024795285px;
145
+ stroke-dashoffset: 270.75219024795285px;
146
+ transform: rotate(0);
147
+ transform-origin: center center;
148
+ stroke-linecap: round;
149
+ animation: ani-success-circle 1s ease-in both;
150
+ }
151
+ &-path {
152
+ stroke-dasharray: 60px 64px;
153
+ stroke-dashoffset: 62px;
154
+ stroke-linecap: round;
155
+ animation: ani-success-path 0.4s 1s ease-in both;
156
+ }
157
+ }
158
+
159
+ .ui-error {
160
+ &-circle {
161
+ stroke-dasharray: 260.75219024795285px, 260.75219024795285px;
162
+ stroke-dashoffset: 260.75219024795285px;
163
+ animation: ani-error-circle 1.2s linear;
164
+ }
165
+ &-line1 {
166
+ stroke-dasharray: 54px 55px;
167
+ stroke-dashoffset: 55px;
168
+ stroke-linecap: round;
169
+ animation: ani-error-line 0.15s 1.2s linear both;
170
+ }
171
+ &-line2 {
172
+ stroke-dasharray: 54px 55px;
173
+ stroke-dashoffset: 55px;
174
+ stroke-linecap: round;
175
+ animation: ani-error-line 0.2s 0.9s linear both;
176
+ }
177
+ }
178
+
179
+ .ui-waiting {
180
+ &-circle {
181
+ stroke-dasharray: 260.75219024795285px, 260.75219024795285px;
182
+ stroke-dashoffset: 260.75219024795285px;
183
+ animation: ani-waiting-circle 1.2s linear;
184
+ }
185
+ &-line1 {
186
+ stroke-dasharray: 280.75219024795285px, 200.75219024795285px;
187
+ stroke-dashoffset: 280.75219024795285px;
188
+ animation: ani-waiting-line 0.8s 0.3s linear both;
189
+ transform: rotate(0);
190
+ transform-origin: center center;
191
+ }
192
+ &-line2 {
193
+ stroke-dasharray: 54px 55px;
194
+ stroke-dashoffset: 55px;
195
+ animation: ani-waiting-line2 0.85s .6s ease-in both;
196
+ transform: rotate(0) scale(0.9);
197
+ transform-origin: center center;
198
+ }
199
+ }
200
+
201
+ /**
202
+ * Animation Loader
203
+ */
204
+ @keyframes vgLoader {
205
+ 0% {
206
+ transform: rotate(0deg);
207
+ }
208
+ 100% {
209
+ transform: rotate(360deg);
210
+ }
211
+ }
212
+
213
+ // success animation
214
+ @keyframes ani-success-circle {
215
+ to {
216
+ stroke-dashoffset: 782.2565707438586px;
217
+ }
218
+ }
219
+
220
+ @keyframes ani-success-path {
221
+ 0% {
222
+ stroke-dashoffset: 62px;
223
+ }
224
+ 65% {
225
+ stroke-dashoffset: -5px;
226
+ }
227
+ 84% {
228
+ stroke-dashoffset: 4px;
229
+ }
230
+ 100% {
231
+ stroke-dashoffset: -2px;
232
+ }
233
+ }
234
+
235
+ // error animation
236
+ @keyframes ani-error-line {
237
+ to {
238
+ stroke-dashoffset: 0;
239
+ }
240
+ }
241
+
242
+ @keyframes ani-error-circle {
243
+ 0% {
244
+ stroke-dasharray: 0, 260.75219024795285px;
245
+ stroke-dashoffset: 0;
246
+ }
247
+ 35% {
248
+ stroke-dasharray: 120px, 120px;
249
+ stroke-dashoffset: -120px;
250
+ }
251
+ 70% {
252
+ stroke-dasharray: 0, 260.75219024795285px;
253
+ stroke-dashoffset: -260.75219024795285px;
254
+ }
255
+ 100% {
256
+ stroke-dasharray: 260.75219024795285px, 0;
257
+ stroke-dashoffset: -260.75219024795285px;
258
+ }
259
+ }
260
+
261
+ // waiting animation
262
+ @keyframes ani-waiting-circle {
263
+ to {
264
+ stroke-dashoffset: 782.2565707438586px;
265
+ }
266
+ }
267
+ @keyframes ani-waiting-line {
268
+ to {
269
+ stroke-dashoffset: 0;
270
+ }
271
+ }
272
+ @keyframes ani-waiting-line2 {
273
+ to {
274
+ stroke-dashoffset: 0;
275
+ transform: rotate(360deg) scale(1);
276
+ }
277
+ }
@@ -0,0 +1,3 @@
1
+ @function is-map($var){
2
+ @return type-of($var) == 'map';
3
+ }
@@ -0,0 +1,11 @@
1
+ @mixin mix-vars($module, $properties) {
2
+ @each $key, $value in $properties {
3
+ @if (is-map($value)) {
4
+ @each $k, $v in $value {
5
+ --vg-#{$module}-#{$key}-#{$k}: #{$v}
6
+ }
7
+ } @else {
8
+ --vg-#{$module}-#{$key}: #{$value}
9
+ }
10
+ }
11
+ }
@@ -0,0 +1,80 @@
1
+ // -- Backgrounds
2
+ $bg-color: #fff !default;
3
+
4
+ // -- Colors
5
+ $color: #000000 !default;
6
+
7
+ // -- Shadows
8
+ $box-shadow: 0 8px 14px 5px rgba(0, 0, 0, 0.2) !default;
9
+
10
+ // -- Borders
11
+ $border-color: rgba(0, 0, 0, .2) !default;
12
+ $border-radius: .375rem !default;
13
+ $border-width: 1px !default;
14
+ $border-style: solid;
15
+
16
+ // -- Transitions
17
+ $transition-base: all .5s ease-in-out !default;
18
+
19
+ // -- Backdrop
20
+ $backdrop-bg: rgba(0, 0, 0, 1) !default;
21
+ $backdrop-opacity: .4 !default;
22
+
23
+ // -- alert
24
+ $alert-map: (
25
+ padding: 2rem,
26
+ margin: 0 0 2rem,
27
+ border-width: $border-width,
28
+ border-style: $border-style,
29
+ border-color: transparent,
30
+ border-radius: $border-radius,
31
+ gap: 1.5rem,
32
+ icon-width: 80px,
33
+ icon-height: 80px,
34
+ content-width: 100%,
35
+ content-align: center,
36
+ content-justify: flex-start
37
+ );
38
+ $alert-success-map: (
39
+ color: darken(#A5DC86, 10%),
40
+ border-color: #A5DC86,
41
+ background-color: rgba(lighten(#A5DC86, 10%), .15),
42
+ stroke: rgba(117, 183, 152, 0.4)
43
+ );
44
+
45
+ $alert-error-map: (
46
+ color: darken(#F74444, 10%),
47
+ border-color: #F74444,
48
+ background-color: rgba(lighten(#F74444, 25%), .075)
49
+ );
50
+
51
+ $alert-waiting-map: (
52
+ color: darken(#ffda6a, 10%),
53
+ border-color: #ffda6a,
54
+ background-color: rgba(lighten(#ffda6a, 15%), .1)
55
+ );
56
+
57
+ // Z-indexes
58
+ $sidebar-index: 1040;
59
+ $dropdown-index: 1010;
60
+ $modal-index: 1040;
61
+ $backdrop-index: 999;
62
+
63
+ // Backdrop map
64
+ $backdrop-map: (
65
+ bg: $backdrop-bg,
66
+ opacity: $backdrop-opacity,
67
+ z-index: $backdrop-index,
68
+ transition: $transition-base,
69
+ );
70
+
71
+ $loader-map: (
72
+ border-width: .75em,
73
+ border-style: solid,
74
+ border-color: rgba(0, 0, 0, 0.2),
75
+ color: rgb(33, 37, 41),
76
+ font-size: 10px,
77
+ margin: 30px auto,
78
+ animation: vgLoader 1.1s infinite linear,
79
+ transform: translateZ(0)
80
+ )