@mixd-id/web-scaffold 0.1.230406167 → 0.1.230406169

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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@mixd-id/web-scaffold",
3
3
  "private": false,
4
- "version": "0.1.230406167",
4
+ "version": "0.1.230406169",
5
5
  "scripts": {
6
6
  "dev": "vite serve",
7
7
  "build": "vite build",
@@ -12,7 +12,6 @@
12
12
  ".": "./src/index.js",
13
13
  "./themes/default": "./src/themes/default/index.js",
14
14
  "./components/Modal.vue": "./src/components/Modal.vue",
15
- "./components/Modal2.vue": "./src/components/Modal2.vue",
16
15
  "./components/Textbox.vue": "./src/components/Textbox.vue",
17
16
  "./mixin/component": "./src/mixin/component.js",
18
17
  "./mixin/edit-mode": "./src/mixin/edit-mode.js",
@@ -5,7 +5,10 @@
5
5
  appear
6
6
  @after-leave="onAfterLeave"
7
7
  @after-enter="$emit('show')">
8
- <div v-if="computedState" :class="computedClass" ref="modal" :style="computedStyle"
8
+ <div v-if="currentState"
9
+ ref="modal"
10
+ :class="computedClass"
11
+ :style="computedStyle"
9
12
  :data-state="computedState ? 1 : 0">
10
13
  <form v-if="useForm" @submit.prevent="$emit('submit')">
11
14
  <div class="modal-head">
@@ -44,9 +47,9 @@ let modals = []
44
47
  const registerModal = (modal) => {
45
48
  if(modals.includes(modal)) return
46
49
 
47
- /*modals.forEach((_) => {
50
+ modals.forEach((_) => {
48
51
  _.isDisabled = 1
49
- })*/
52
+ })
50
53
 
51
54
  modals.push(modal)
52
55
  }
@@ -54,8 +57,8 @@ const registerModal = (modal) => {
54
57
  const unRegisterModal = (modal) => {
55
58
  modals = modals.filter((_) => _ !== modal)
56
59
 
57
- /*if(modals.length > 0)
58
- modals[modals.length - 1].isDisabled = 0*/
60
+ if(modals.length > 0)
61
+ modals[modals.length - 1].isDisabled = 0
59
62
  }
60
63
 
61
64
  export default{
@@ -77,7 +80,8 @@ export default{
77
80
  useForm: {
78
81
  type: Boolean,
79
82
  default: false
80
- }
83
+ },
84
+ mode: 'v-if', // v-if or v-show
81
85
  },
82
86
 
83
87
  methods: {
@@ -130,9 +134,16 @@ export default{
130
134
  overlay.classList.add('bW9l')
131
135
  }
132
136
 
137
+ this.$emit('show')
138
+
133
139
  registerModal(this)
134
140
  }
135
141
  else{
142
+ this.$emit('hide')
143
+
144
+ if(this.mode === 'v-show')
145
+ this.$nextTick(() => this.onAfterLeave())
146
+
136
147
  unRegisterModal(this)
137
148
  }
138
149
  }
@@ -153,7 +164,9 @@ export default{
153
164
  return [
154
165
  this.$style.modal,
155
166
  this.$style['modal-' + this.position],
156
- this.class
167
+ this.class,
168
+ this.mode === 'v-show' ? this.$style['v-show'] : '',
169
+ this.computedState ? this.$style.open : ''
157
170
  ]
158
171
  .join(' ')
159
172
  .trim()
@@ -167,8 +180,13 @@ export default{
167
180
  },
168
181
 
169
182
  computedState(){
170
- return this.state ? Boolean(this.state) : this._state
171
- }
183
+ return this.state ? Boolean(this.state) : this._state
184
+ },
185
+
186
+ currentState(){
187
+ return this.mode === 'v-show' ? true :
188
+ this.computedState
189
+ },
172
190
 
173
191
  },
174
192
 
@@ -186,14 +204,6 @@ export default{
186
204
  this.setState(to)
187
205
  },
188
206
 
189
- $route(to, from){
190
- if(from.path !== to.path && !to.hash){
191
- let overlay = document.querySelector('.bW9k')
192
- if(overlay && overlay.classList.contains('bW9l'))
193
- overlay.classList.remove('bW9l')
194
- }
195
- },
196
-
197
207
  },
198
208
 
199
209
  mounted() {
@@ -234,6 +244,13 @@ export default{
234
244
  @apply rounded-xl overflow-hidden;
235
245
  }
236
246
 
247
+ .modal.v-show{
248
+ transform: scale(0);
249
+ }
250
+ .modal.v-show.open{
251
+ transform: scale(1);
252
+ }
253
+
237
254
  .modal form{
238
255
  @apply flex-1 min-h-0 flex flex-col relative;
239
256
  }
package/src/index.js CHANGED
@@ -388,8 +388,6 @@ export default{
388
388
  app.component('Flex', defineAsyncComponent(() => import("./components/Flex.vue")))
389
389
  app.component('Grid', defineAsyncComponent(() => import("./components/Grid.vue")))
390
390
  app.component('Modal', defineAsyncComponent(() => import("./components/Modal.vue")))
391
- app.component('Modal2', defineAsyncComponent(() => import("./components/Modal2.vue")))
392
- //app.component('MonacoEditor', defineAsyncComponent(() => import("./components/MonacoEditor.vue")))
393
391
  app.component('OTPField', defineAsyncComponent(() => import("./components/OTPField.vue")))
394
392
  app.component('PageBuilder', defineAsyncComponent(() => import("./components/PageBuilder.vue")))
395
393
  app.component('Radio', defineAsyncComponent(() => import("./components/Radio.vue")))
@@ -273,6 +273,8 @@ const unPascalCase = function(str){
273
273
  return str.replace(/([A-Z])/g, ' $1').trim()
274
274
  }
275
275
 
276
+ const sleep = ms => new Promise(r => setTimeout(r, ms))
277
+
276
278
  export {
277
279
  downsizeImage,
278
280
  uid,
@@ -288,6 +290,7 @@ export {
288
290
  getClipboardData,
289
291
  getComponentUids,
290
292
  unPascalCase,
293
+ sleep,
291
294
  }
292
295
 
293
296
  function observeInit(){
@@ -1,300 +0,0 @@
1
- <template>
2
- <div>
3
- <Teleport to=".bW9k">
4
- <div :class="computedClass" ref="modal" :style="computedStyle"
5
- :data-state="!!computedState ? 1 : 0">
6
- <form v-if="useForm" @submit.prevent="$emit('submit')">
7
- <div class="modal-head">
8
- <slot name="head" :context="context"></slot>
9
- </div>
10
- <div :class="modalBodyClass">
11
- <slot :context="context"></slot>
12
- </div>
13
- <div class="modal-foot">
14
- <slot name="foot" :context="context"></slot>
15
- </div>
16
- <div v-if="isDisabled" :class="$style.overlay"></div>
17
- </form>
18
- <div v-else class="flex-1 min-h-0 flex flex-col relative">
19
- <div class="modal-head">
20
- <slot name="head" :context="context"></slot>
21
- </div>
22
- <div :class="modalBodyClass">
23
- <slot :context="context"></slot>
24
- </div>
25
- <div class="modal-foot">
26
- <slot name="foot" :context="context"></slot>
27
- </div>
28
- <div v-if="isDisabled" :class="$style.overlay"></div>
29
- </div>
30
- </div>
31
- </Teleport>
32
- </div>
33
- </template>
34
-
35
- <script>
36
-
37
- let modals = []
38
-
39
- const registerModal = (modal) => {
40
- if(modals.includes(modal)) return
41
-
42
- modals.forEach((_) => {
43
- _.isDisabled = 1
44
- })
45
-
46
- modals.push(modal)
47
- }
48
-
49
- const unRegisterModal = (modal) => {
50
-
51
- modals = modals.filter((_) => _ !== modal)
52
-
53
- if(modals.length > 0)
54
- modals[modals.length - 1].isDisabled = 0
55
- }
56
-
57
- export default{
58
-
59
- emits: [ 'submit', 'dismiss', 'show', 'hide' ],
60
-
61
- props:{
62
- bodyClass:{ type: String, default: '' },
63
- class:{ type: String, default: '' },
64
- dismissable: undefined,
65
- height: String,
66
- position: {
67
- type: String,
68
- default: 'bottom'
69
- },
70
- state: {
71
- type: [ Number, Boolean, String ],
72
- default: true
73
- },
74
- transition: { type: String, default: 'slideup' },
75
- width: String,
76
- useForm: {
77
- type: Boolean,
78
- default: false
79
- }
80
- },
81
-
82
- computed:{
83
-
84
- modalBodyClass(){
85
- return [
86
- this.$style.modalBody,
87
- this.bodyClass
88
- ]
89
- .join(' ')
90
- .trim()
91
- },
92
-
93
- computedClass(){
94
- return [
95
- this.$style.modal,
96
- this.$style['modal-' + this.position],
97
- this.class,
98
- this.computedState ? this.$style.open : ''
99
- ]
100
- .join(' ')
101
- .trim()
102
- },
103
-
104
- computedStyle(){
105
- return {
106
- width: parseInt(this.width) + 'px',
107
- height: parseInt(this.height) + 'px',
108
- }
109
- },
110
-
111
- computedState(){
112
- return this.state ? Boolean(this.state) : this._state
113
- }
114
-
115
- },
116
-
117
- data(){
118
- return {
119
- isDisabled: 0,
120
- _state: false,
121
- context: null
122
- }
123
- },
124
-
125
- watch:{
126
-
127
- computedState(to, from){
128
- this.setState(to)
129
- },
130
-
131
- $route(to, from){
132
- if(from.path !== to.path && !to.hash){
133
- let overlay = document.querySelector('.bW9k')
134
- if(overlay && overlay.classList.contains('bW9l'))
135
- overlay.classList.remove('bW9l')
136
- }
137
- },
138
-
139
- },
140
-
141
- mounted() {
142
- document.querySelector('.bW9k').addEventListener('click', this.onDismiss)
143
- window.addEventListener('keydown', this.onKeyDown)
144
-
145
- if(this.computedState){
146
- this.setState(this.computedState)
147
- }
148
- },
149
-
150
- methods: {
151
-
152
- open(context = {}){
153
- this.context = context
154
- this._state = true
155
- },
156
-
157
- close(){
158
- this._state = false
159
- },
160
-
161
- onAfterLeave(){
162
- let overlay = document.querySelector('.bW9k')
163
- if(overlay){
164
-
165
- let hasTrueState = false
166
-
167
- for(let i = 0 ; i < overlay.children.length ; i++){
168
- if(overlay.children[i].getAttribute('data-state') === '1'){
169
- hasTrueState = true
170
- }
171
- }
172
-
173
- if(!hasTrueState){
174
- overlay.classList.remove('bW9l')
175
- }
176
-
177
- this.$emit('hide')
178
- }
179
- },
180
-
181
- onDismiss(e){
182
- if(this.computedState && this.dismissable && this.$refs.modal && e.target.classList.contains('bW9k')){
183
- this.$emit('dismiss')
184
- }
185
- },
186
-
187
- onKeyDown(e){
188
- if(this.dismissable && this.$refs.modal && e.keyCode === 27){
189
- this.$emit('dismiss')
190
- }
191
- },
192
-
193
- setState(to){
194
- if(to){
195
- let overlay = document.querySelector('.bW9k')
196
- if(overlay){
197
- overlay.classList.add('bW9l')
198
- }
199
-
200
- this.$emit('show')
201
- registerModal(this)
202
- }
203
- else{
204
- this.$nextTick(() => {
205
- this.onAfterLeave()
206
- unRegisterModal(this)
207
- })
208
- }
209
- }
210
- }
211
-
212
- }
213
-
214
- </script>
215
-
216
- <style>
217
-
218
- .bW9k{
219
- @apply fixed z-20 top-0 left-0 bottom-0 right-0 hidden items-center justify-center;
220
- @apply bg-black/50 backdrop-blur-md;
221
- }
222
- .bW9l{
223
- @apply flex;
224
- }
225
-
226
- </style>
227
-
228
- <style module>
229
-
230
- .modal{
231
- @apply fixed;
232
- @apply bg-base-400;
233
- @apply border-[1px] border-text-50 z-20 flex max-h-[90vh];
234
- @apply rounded-xl overflow-hidden;
235
- transform: scale(0);
236
- }
237
- .modal.open{
238
- transform: scale(1);
239
- }
240
-
241
- .modal form{
242
- @apply flex-1 min-h-0 flex flex-col relative;
243
- }
244
-
245
- .modalBody{
246
- @apply flex-1 min-h-0 overflow-y-auto flex bg-base-400 dark:bg-base-300;
247
- }
248
-
249
- .overlay{
250
- @apply absolute z-20 left-0 bottom-0 top-0 right-0 bg-white/50 backdrop-blur-sm;
251
- }
252
- html[data-theme='dark'] .overlay{
253
- @apply bg-black/50;
254
- }
255
-
256
- @media screen and (max-width: 640px) {
257
-
258
- .modal {
259
- max-height: 90vh;
260
- width: 100vw !important;
261
- }
262
-
263
- .modal-center{
264
- align-self: center;
265
- }
266
-
267
- .modal-bottom{
268
- align-self: end;
269
- }
270
-
271
- }
272
-
273
- @media screen and (min-width: 640px) {
274
-
275
- .modal {
276
- max-width: 90vw;
277
- width: 480px;
278
- }
279
-
280
- }
281
-
282
- </style>
283
-
284
- <style>
285
-
286
- .slideup-enter-active,
287
- .slideup-leave-active {
288
- transition: all 300ms cubic-bezier(0.25, 1, 0.5, 1);
289
- }
290
- .slideup-enter-active,
291
- .slideup-leave-active {
292
- transform: translate3d(0, 0, 0);
293
- }
294
- .slideup-enter-from,
295
- .slideup-leave-to {
296
- opacity: 0;
297
- transform: translate3d(0, 10px, 0);
298
- }
299
-
300
- </style>
@@ -1,136 +0,0 @@
1
- <template>
2
- <div :class="$style.comp">
3
- <div class="flex flex-row p-2">
4
- <code>{{ language }}</code>
5
- <div class="flex-1"></div>
6
- <button type="button" class="text-primary" @click="reformat">Beautify</button>
7
- </div>
8
- <div ref="editorContainer" :class="$style['monaco-editor-container']"></div>
9
- </div>
10
- </template>
11
-
12
- <script>
13
- import * as monaco from 'monaco-editor'
14
- import editorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker'
15
- import jsonWorker from 'monaco-editor/esm/vs/language/json/json.worker?worker'
16
- import cssWorker from 'monaco-editor/esm/vs/language/css/css.worker?worker'
17
- import htmlWorker from 'monaco-editor/esm/vs/language/html/html.worker?worker'
18
- import tsWorker from 'monaco-editor/esm/vs/language/typescript/ts.worker?worker'
19
-
20
- self.MonacoEnvironment = {
21
- getWorker(_, label) {
22
- if (label === 'json') {
23
- return new jsonWorker()
24
- }
25
- if (label === 'css' || label === 'scss' || label === 'less') {
26
- return new cssWorker()
27
- }
28
- if (label === 'html' || label === 'handlebars' || label === 'razor') {
29
- return new htmlWorker()
30
- }
31
- if (label === 'typescript' || label === 'javascript') {
32
- return new tsWorker()
33
- }
34
- return new editorWorker()
35
- }
36
- }
37
-
38
- export default {
39
-
40
- props: {
41
-
42
- language: {
43
- type: String,
44
- default: 'json'
45
- },
46
-
47
- theme: {
48
- type: String,
49
- default: 'vs-dark'
50
- },
51
-
52
- lineNumbers: {
53
- type: String,
54
- default: "off"
55
- },
56
-
57
- modelValue: String
58
-
59
- },
60
-
61
- methods: {
62
-
63
- createEditor() {
64
- this.editor = monaco.editor.create(this.$refs.editorContainer, {
65
- value: this.modelValue,
66
- language: this.language,
67
- lineNumbers: this.lineNumbers,
68
- minimap: {
69
- enabled: false
70
- },
71
- theme: this.theme
72
- });
73
-
74
- this.editor.onDidChangeModelContent(event => {
75
- const updatedCode = this.editor.getValue();
76
- this.$emit('update:modelValue', updatedCode)
77
- });
78
- },
79
-
80
- getErrors(){
81
- const markers = monaco.editor.getModelMarkers({ owner: this.editor.getModel() });
82
-
83
- let errors = []
84
- if (markers.length >= 0) {
85
- markers.forEach(marker => {
86
- errors.push({
87
- message: marker.message,
88
- line: marker.startLineNumber,
89
- column: marker.startColumn
90
- })
91
- });
92
- }
93
-
94
- return errors.length > 0 ? errors : null
95
- },
96
-
97
- reformat(){
98
- const formatAction = this.editor.getAction('editor.action.formatDocument');
99
- formatAction.run();
100
- }
101
-
102
- },
103
-
104
- beforeDestroy() {
105
- this.editor.dispose();
106
- },
107
-
108
- mounted() {
109
- this.createEditor();
110
- }
111
-
112
- };
113
- </script>
114
-
115
- <style module>
116
-
117
- .comp{
118
- @apply flex-1 flex flex-col;
119
- }
120
-
121
- .monaco-editor-container {
122
- width: 100%;
123
- height: 300px;
124
- }
125
-
126
- .monaco-editor-container *{
127
- font-family: Menlo, Monaco, "Courier New", monospace;
128
- --vscode-editor-background: rgb(var(--base-300));
129
- --vscode-editorGutter-background: rgb(var(--base-400));
130
- }
131
-
132
- .monaco-editor-container .margin-view-overlays .line-numbers {
133
- font-family: 'Menlo', monospace;
134
- }
135
-
136
- </style>