@mixd-id/web-scaffold 0.2.250801014 → 0.2.260801002

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 (113) hide show
  1. package/README.md +25 -1
  2. package/docs/components/AIDashboard.md +117 -32
  3. package/docs/components/Alert.md +3 -1
  4. package/docs/components/Card.md +5 -0
  5. package/docs/components/PivotList.md +207 -0
  6. package/docs/components/Textbox.md +20 -1
  7. package/docs/components/Tooltip.md +148 -0
  8. package/package.json +17 -61
  9. package/src/components/AIChat.vue +14 -5
  10. package/src/components/AIChatItem.vue +34 -3
  11. package/src/components/AIDashboard.vue +144 -98
  12. package/src/components/Alert.vue +58 -35
  13. package/src/components/Card.vue +55 -6
  14. package/src/components/Carousel.vue +1 -1
  15. package/src/{widgets → components}/CartSetting.vue +1 -0
  16. package/src/components/Chart.vue +2 -2
  17. package/src/components/Checkbox.vue +22 -24
  18. package/src/components/CodeEditor.vue +2 -0
  19. package/src/{widgets → components}/CollapsiblePanelSetting.vue +1 -0
  20. package/src/components/ColorPicker.vue +2 -2
  21. package/src/{widgets → components}/ComponentSetting2.vue +1 -1
  22. package/src/components/Confirm.vue +2 -0
  23. package/src/{widgets → components}/ContactForm.vue +1 -1
  24. package/src/components/CopyToClipboard.vue +0 -1
  25. package/src/components/Datepicker.vue +2 -0
  26. package/src/components/Datetimepicker.vue +1 -1
  27. package/src/components/Dropdown.vue +1 -1
  28. package/src/{widgets → components}/FeatureList.vue +1 -1
  29. package/src/components/Gmaps.vue +1 -1
  30. package/src/{widgets → components}/IconList.vue +1 -1
  31. package/src/components/Image.vue +1 -1
  32. package/src/components/ImagePreview.vue +32 -51
  33. package/src/components/List.vue +45 -8
  34. package/src/components/MarkdownEdit.vue +1 -1
  35. package/src/components/MarkdownPreview.vue +4 -1
  36. package/src/{widgets → components}/MenuItem1Setting.vue +1 -0
  37. package/src/components/Metric.vue +30 -7
  38. package/src/components/MultiDropdown.vue +3 -1
  39. package/src/{widgets → components}/MultiValueSetting.vue +2 -2
  40. package/src/{widgets → components}/MultiValueSetting2.vue +2 -2
  41. package/src/components/OTPField.vue +3 -1
  42. package/src/components/PivotList.vue +1239 -0
  43. package/src/{widgets → components}/PresetBar.vue +1 -1
  44. package/src/components/PresetSelectorFilterItem.vue +1 -1
  45. package/src/components/Radio.vue +1 -1
  46. package/src/{widgets → components}/Share.vue +1 -1
  47. package/src/components/SvgEditor.vue +1 -1
  48. package/src/components/Switch.vue +1 -1
  49. package/src/components/TextWithTag.vue +2 -2
  50. package/src/components/Textbox.vue +63 -5
  51. package/src/components/Toast.vue +2 -1
  52. package/src/components/Tooltip.vue +626 -0
  53. package/src/components/VirtualGrid.vue +2 -2
  54. package/src/components/VirtualTable.vue +4 -3
  55. package/src/{widgets → components}/WebDatasourceSelector.vue +2 -0
  56. package/src/{widgets → components}/WebLayoutSelector.vue +1 -1
  57. package/src/directives/tooltip.js +131 -0
  58. package/src/index.js +11 -235
  59. package/src/themes/default/index.js +16 -0
  60. package/src/utils/ai-dashboard.js +163 -38
  61. package/src/utils/helpers.mjs +52 -5
  62. package/src/utils/list.mjs +4 -1
  63. package/src/utils/pivot-formula.mjs +358 -0
  64. package/src/utils/pivot-list.mjs +557 -0
  65. package/src/utils/tooltip.mjs +243 -0
  66. package/src/utils/wss.js +26 -6
  67. package/src/utils/wss.mjs +29 -2
  68. /package/src/{widgets → components}/AhrefSetting.vue +0 -0
  69. /package/src/{widgets → components}/ArticleSetting.vue +0 -0
  70. /package/src/{widgets → components}/BackgroundColorSetting.vue +0 -0
  71. /package/src/{widgets → components}/BlockSetting.vue +0 -0
  72. /package/src/{widgets → components}/BorderColorSetting.vue +0 -0
  73. /package/src/{widgets → components}/ButtonSetting.vue +0 -0
  74. /package/src/{widgets → components}/CarouselSetting.vue +0 -0
  75. /package/src/{widgets → components}/ColumnSelector.vue +0 -0
  76. /package/src/{widgets → components}/ComponentSetting.vue +0 -0
  77. /package/src/{widgets → components}/ContactFormSetting.vue +0 -0
  78. /package/src/{widgets → components}/CountdownSetting.vue +0 -0
  79. /package/src/{widgets → components}/DataListSetting.vue +0 -0
  80. /package/src/{widgets → components}/EmbeddedVideo.vue +0 -0
  81. /package/src/{widgets → components}/EmbeddedVideoSetting.vue +0 -0
  82. /package/src/{widgets → components}/FAQ.vue +0 -0
  83. /package/src/{widgets → components}/FAQSetting.vue +0 -0
  84. /package/src/{widgets → components}/FeatureListSetting.vue +0 -0
  85. /package/src/{widgets → components}/FlexSetting.vue +0 -0
  86. /package/src/{widgets → components}/GridSetting.vue +0 -0
  87. /package/src/{widgets → components}/Header2.vue +0 -0
  88. /package/src/{widgets → components}/Header2Setting.vue +0 -0
  89. /package/src/{widgets → components}/IconListSetting.vue +0 -0
  90. /package/src/{widgets → components}/ImageSetting.vue +0 -0
  91. /package/src/{widgets → components}/LLMChat.vue +0 -0
  92. /package/src/{widgets → components}/LinkSetting.vue +0 -0
  93. /package/src/{widgets → components}/LinkSettingModal.vue +0 -0
  94. /package/src/{widgets → components}/ModalSetting.vue +0 -0
  95. /package/src/{widgets → components}/OGSettingModal.vue +0 -0
  96. /package/src/{widgets → components}/ParagraphSetting.vue +0 -0
  97. /package/src/{widgets → components}/PositionSetting.vue +0 -0
  98. /package/src/{widgets → components}/PresetBarPivot.vue +0 -0
  99. /package/src/{widgets → components}/PresetBarPivotColumnEdit.vue +0 -0
  100. /package/src/{widgets → components}/PresetBarPivotValueEdit.vue +0 -0
  101. /package/src/{widgets → components}/PresetSelector.vue +0 -0
  102. /package/src/{widgets → components}/Review.vue +0 -0
  103. /package/src/{widgets → components}/ReviewSetting.vue +0 -0
  104. /package/src/{widgets → components}/SearchModalSetting.vue +0 -0
  105. /package/src/{widgets → components}/ShareSetting.vue +0 -0
  106. /package/src/{widgets → components}/SvgSetting.vue +0 -0
  107. /package/src/{widgets → components}/TableSetting.vue +0 -0
  108. /package/src/{widgets → components}/TestimonialSetting.vue +0 -0
  109. /package/src/{widgets → components}/TextBlockSetting.vue +0 -0
  110. /package/src/{widgets → components}/ThumbnailSetting.vue +0 -0
  111. /package/src/{widgets → components}/WebComponentSelector.vue +0 -0
  112. /package/src/{widgets → components}/WebPageBuilder.vue +0 -0
  113. /package/src/{widgets → components}/YoutubeVideoSetting.vue +0 -0
@@ -1,80 +1,61 @@
1
1
  <template>
2
- <Card :float="true" :state="isOpen" width="400" height="400" :class="$style.previewModal">
2
+ <Card ref="card" :float="true" width="400" height="400" :class="$style.previewModal">
3
3
  <div class="flex-1 flex flex-col gap-3">
4
4
  <div class="flex flex-row gap-4 justify-end items-center p-3 pr-6">
5
5
  <slot name="moreButtons"></slot>
6
6
  <a v-if="canDownload" :href="imageUrl" target="_blank" download>
7
7
  <svg xmlns="http://www.w3.org/2000/svg" width="19" height="19" class="fill-text" viewBox="0 0 512 512"><!--! Font Awesome Pro 6.0.0-alpha3 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) --><path d="M480 352h-133.5l-45.25 45.25C289.2 409.3 273.1 416 256 416s-33.16-6.656-45.25-18.75L165.5 352H32c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32v-96C512 366.3 497.7 352 480 352zM432 456c-13.2 0-24-10.8-24-24c0-13.2 10.8-24 24-24s24 10.8 24 24C456 445.2 445.2 456 432 456zM233.4 374.6C239.6 380.9 247.8 384 256 384s16.38-3.125 22.62-9.375l128-128c12.49-12.5 12.49-32.75 0-45.25c-12.5-12.5-32.76-12.5-45.25 0L288 274.8V32c0-17.67-14.33-32-32-32C238.3 0 224 14.33 224 32v242.8L150.6 201.4c-12.49-12.5-32.75-12.5-45.25 0c-12.49 12.5-12.49 32.75 0 45.25L233.4 374.6z"/></svg>
8
8
  </a>
9
- <button @click="close">
10
- <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" class="fill-text" viewBox="0 0 320 512"><!--! Font Awesome Pro 6.0.0-alpha3 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) --><path d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg>
11
- </button>
12
9
  </div>
13
10
  <div class="flex items-center justify-center">
14
- <img :src="imageUrl" class="max-h-[75vh]"/>
11
+ <img v-if="imageUrl" :src="imageUrl" class="max-h-[75vh]"/>
15
12
  </div>
16
13
  </div>
17
14
  </Card>
18
15
  </template>
19
16
 
20
- <script>
17
+ <script setup>
21
18
 
22
- export default{
19
+ import {computed, ref, useTemplateRef} from "vue";
23
20
 
24
- props: {
21
+ const props = defineProps({
25
22
 
26
- download: {
27
- type: [ Boolean, String ],
28
- default: false
29
- },
30
-
31
-
32
-
33
- },
34
-
35
- computed: {
36
-
37
- canDownload(){
38
- return this.download || this.downloadable
39
- }
40
-
41
- },
23
+ download: {
24
+ type: [ Boolean, String ],
25
+ default: false
26
+ }
42
27
 
43
- data(){
44
- return {
45
- downloadable: false,
46
- isOpen: false,
47
- imageUrl: null
48
- }
49
- },
28
+ })
50
29
 
51
- methods: {
30
+ const card = useTemplateRef('card')
31
+ const imageUrl = ref(null)
32
+ const downloadable = ref(false)
52
33
 
53
- open(imageUrl, opt = {}){
54
- this.imageUrl = imageUrl
55
- this.isOpen = true
56
- this.downloadable = opt.download || this.downloadable
57
- window.addEventListener('keyup', this.onKeyUp)
58
- },
34
+ const canDownload = computed(() => props.download || downloadable.value)
59
35
 
60
- close(){
61
- this.isOpen = false
62
- this.imageUrl = null
63
- window.removeEventListener('keyup', this.onKeyUp)
64
- },
36
+ function onKeyUp(e){
37
+ if(e.key !== 'Escape') return
65
38
 
66
- onKeyUp(e){
67
- if(e.keyCode === 27){
68
- e.preventDefault()
69
- e.stopPropagation()
70
- this.close()
71
- }
72
- }
39
+ e.preventDefault()
40
+ e.stopPropagation()
41
+ close()
42
+ }
73
43
 
74
- }
44
+ function open(url, opt = {}){
45
+ imageUrl.value = url
46
+ downloadable.value = opt.download || downloadable.value
47
+ card.value.open()
48
+ window.addEventListener('keyup', onKeyUp)
49
+ }
75
50
 
51
+ function close(){
52
+ card.value.close()
53
+ imageUrl.value = null
54
+ window.removeEventListener('keyup', onKeyUp)
76
55
  }
77
56
 
57
+ defineExpose({ open, close })
58
+
78
59
  </script>
79
60
 
80
61
  <style module>
@@ -95,7 +95,7 @@
95
95
  <slot name="right-toolbar">
96
96
  <div class="hidden md:flex flex-row gap-2" v-if="Boolean(toolbar)">
97
97
  <Textbox v-if="canSearch"
98
- class="flex-1 md:w-[240px]"
98
+ class="flex-1 md:w-[240px] bg-base-500"
99
99
  placeholder="Search..."
100
100
  clearable="1"
101
101
  maxlength="100"
@@ -108,6 +108,22 @@
108
108
  </div>
109
109
  </template>
110
110
  </Textbox>
111
+
112
+ <div v-if="canToggleView" :class="$style.viewToggle">
113
+ <button type="button"
114
+ title="Grid view"
115
+ :class="presetView === 'grid' ? $style.viewOn : $style.viewOff"
116
+ @click="setView('grid')">
117
+ <svg width="14" height="14" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Pro 6.0.0-alpha3 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) --><path d="M96 0H32C14.33 0 0 14.33 0 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V32C128 14.33 113.7 0 96 0zM288 0H224C206.3 0 192 14.33 192 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V32C320 14.33 305.7 0 288 0zM480 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V32C512 14.33 497.7 0 480 0zM96 384H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64C128 398.3 113.7 384 96 384zM288 384H224c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64C320 398.3 305.7 384 288 384zM480 384h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64C512 398.3 497.7 384 480 384zM96 192H32C14.33 192 0 206.3 0 224v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V224C128 206.3 113.7 192 96 192zM288 192H224C206.3 192 192 206.3 192 224v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V224C320 206.3 305.7 192 288 192zM480 192h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V224C512 206.3 497.7 192 480 192z"/></svg>
118
+ </button>
119
+ <button type="button"
120
+ title="Table view"
121
+ :class="presetView === 'table' ? $style.viewOn : $style.viewOff"
122
+ @click="setView('table')">
123
+ <svg width="14" height="14" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Pro 6.0.0-alpha3 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) --><path d="M448 32H64.05C28.7 32 .0492 60.65 .0492 96v320c0 35.35 28.65 64 64 64h383.1c35.35 0 64-28.65 64-64V96C512 60.65 483.4 32 448 32zM224 416H64v-96h160V416zM224 256H64V160h160V256zM448 416h-160v-96h160V416zM448 256h-160V160h160V256z"/></svg>
124
+ </button>
125
+ </div>
126
+
111
127
  <button v-if="presetView === 'table' && canAssist"
112
128
  type="button" class="p-1"
113
129
  :title="assistant.open ? 'Hide AI Assistant' : 'Show AI Assistant'"
@@ -151,7 +167,7 @@
151
167
  <VirtualTable
152
168
  ref="table"
153
169
  :columns="columns"
154
- class="flex-1 bg-base-300"
170
+ class="flex-1"
155
171
  :items="dataItems"
156
172
  :enumCache="enumCache"
157
173
  :freeze-left="freezeLeft"
@@ -309,11 +325,11 @@
309
325
 
310
326
  import VirtualTable from "./VirtualTable.vue";
311
327
  import VirtualGrid from "./VirtualGrid.vue";
312
- import PresetSelector from "../widgets/PresetSelector.vue";
328
+ import PresetSelector from "./PresetSelector.vue";
313
329
  import {generatePivotColumns, generateTotalColumns, getPresetUid, parsePivotKey, pickColumns, setupConfig, sortsFn} from "../utils/preset-selector.mjs";
314
- import PresetBar from "../widgets/PresetBar.vue";
330
+ import PresetBar from "./PresetBar.vue";
315
331
  import {invokeAfterIdle, queueForLater} from "../utils/helpers.mjs";
316
- import LLMChat from "../widgets/LLMChat.vue";
332
+ import LLMChat from "./LLMChat.vue";
317
333
 
318
334
  export default{
319
335
 
@@ -367,11 +383,11 @@ export default{
367
383
  itemsFn: Function,
368
384
  onSignalFn: Function,
369
385
  searchable: {
370
- type: undefined,
386
+ type: [ Boolean, String ],
371
387
  default: true
372
388
  },
373
389
  useAssistant: {
374
- type: undefined,
390
+ type: [ Boolean, String ],
375
391
  default: false
376
392
  }
377
393
  },
@@ -711,6 +727,11 @@ export default{
711
727
  }
712
728
  },
713
729
 
730
+ setView(value){
731
+ if(this.preset)
732
+ this.preset.view = value
733
+ },
734
+
714
735
  savePreset: invokeAfterIdle(function() {
715
736
  if(this.presetKey) {
716
737
  this.useSocket().send(this.presetSrc,
@@ -812,7 +833,7 @@ export default{
812
833
  if(!this._pivotReload){
813
834
  this._pivotReload = invokeAfterIdle(() => {
814
835
  if(this.pivotEnabled) this.load()
815
- }, { delay: 800 })
836
+ }, { delay: 800, flushOnExit: false })
816
837
  }
817
838
  this._pivotReload()
818
839
  this.$emit('signal', event, items)
@@ -1165,6 +1186,10 @@ export default{
1165
1186
  (this.view ?? this.preset.view)
1166
1187
  },
1167
1188
 
1189
+ canToggleView(){
1190
+ return !this.view && !this.pivotEnabled
1191
+ },
1192
+
1168
1193
  configParams(){
1169
1194
  if(!this.cConfig.params)
1170
1195
  this.cConfig.params = {}
@@ -1313,6 +1338,18 @@ export default{
1313
1338
 
1314
1339
  <style module>
1315
1340
 
1341
+ .viewToggle{
1342
+ @apply flex flex-row items-center rounded-md overflow-hidden border-[1px] border-border-50 px-1;
1343
+ }
1344
+
1345
+ .viewOn{
1346
+ @apply p-2 px-3 bg-primary fill-white rounded-md;
1347
+ }
1348
+
1349
+ .viewOff{
1350
+ @apply p-2 px-3 bg-base-400 fill-text-300 hover:fill-primary;
1351
+ }
1352
+
1316
1353
  .resize1{
1317
1354
  @apply w-[3px] cursor-ew-resize absolute top-0 right-0 bottom-0;
1318
1355
  }
@@ -314,7 +314,7 @@ export default{
314
314
 
315
315
  .comp{
316
316
  @apply flex flex-col divide-y divide-border-50 relative;
317
- @apply border-[1px] border-border-200 bg-base-300 hover:border-border-300 rounded-lg;
317
+ @apply border-[1px] border-border-200 bg-base-200 hover:border-border-300 rounded-lg;
318
318
  }
319
319
 
320
320
  .toolbar{
@@ -93,7 +93,10 @@ const markedText = computed(() => {
93
93
  @apply rounded-2xl overflow-hidden;
94
94
  }
95
95
  .comp code{
96
- @apply !bg-primary-100 p-1 text-sm;
96
+ @apply p-1 text-sm;
97
+ white-space: pre-wrap;
98
+ overflow-wrap: anywhere;
99
+ word-break: break-word;
97
100
  }
98
101
  .comp code *{
99
102
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !important;
@@ -41,6 +41,7 @@
41
41
  </template>
42
42
 
43
43
  <script setup>
44
+ defineEmits([ 'change' ])
44
45
 
45
46
  import {computed, inject} from "vue";
46
47
  import LinkSettingModal from "./LinkSettingModal.vue";
@@ -1,15 +1,15 @@
1
1
  <template>
2
- <div :class="$style.comp">
2
+ <div :class="[ $style.comp, compact ? $style.compact : '' ]">
3
3
 
4
4
  <div :class="$style.header">
5
- <span :class="$style.label">{{ label || 'Metric' }}</span>
5
+ <span :class="$style.label" :title="label || 'Metric'">{{ label || 'Metric' }}</span>
6
6
  <div v-if="icon" :class="$style.iconWrap" v-html="icon"></div>
7
7
  </div>
8
8
 
9
9
  <div :class="$style.valueWrap">
10
- <span :class="$style.prefix">{{ prefix }}</span>
10
+ <span v-if="prefix" :class="$style.prefix">{{ prefix }}</span>
11
11
  <span :class="$style.value">{{ formattedValue }}</span>
12
- <span :class="$style.suffix">{{ suffix }}</span>
12
+ <span v-if="suffix" :class="$style.suffix">{{ suffix }}</span>
13
13
  </div>
14
14
 
15
15
  </div>
@@ -31,6 +31,9 @@ export default {
31
31
  suffix: { type: String, default: '' },
32
32
  decimals: { type: Number, default: 0 },
33
33
  icon: { type: String, default: '' },
34
+ // tighter padding and type, for dense rows where the tile is a detail
35
+ // rather than the headline
36
+ compact: { type: Boolean, default: false },
34
37
  },
35
38
 
36
39
  computed: {
@@ -78,7 +81,9 @@ export default {
78
81
  }
79
82
 
80
83
  .label {
81
- @apply text-sm text-text-400 leading-tight;
84
+ @apply text-xs text-text-400 leading-tight;
85
+ /* tiles sit in a grid — a wrapping label would make one row taller than the rest */
86
+ @apply min-w-0 text-ellipsis-nowrap;
82
87
  }
83
88
 
84
89
  .iconWrap {
@@ -86,7 +91,7 @@ export default {
86
91
  }
87
92
 
88
93
  .valueWrap {
89
- @apply flex items-baseline gap-1 flex-1;
94
+ @apply flex items-baseline gap-1 flex-wrap;
90
95
  }
91
96
 
92
97
  .prefix {
@@ -98,8 +103,26 @@ export default {
98
103
  }
99
104
 
100
105
  .suffix {
101
- @apply text-lg text-text-400;
106
+ @apply text-xs text-text-400 relative top-[-1px] ml-[1px];
107
+ }
108
+
109
+ .compact {
110
+ @apply p-2 px-3 gap-0.5 min-h-0;
111
+ }
112
+
113
+ .compact .label {
114
+ @apply text-xs;
115
+ }
116
+
117
+ /* not `text-base` — this theme has a `base` colour family, so that utility also
118
+ sets color: var(--base-500) and paints the value in the surface colour */
119
+ .compact .value {
120
+ @apply text-lg;
102
121
  }
103
122
 
123
+ .compact .prefix,
124
+ .compact .suffix {
125
+ @apply text-xs;
126
+ }
104
127
 
105
128
  </style>
@@ -37,6 +37,8 @@
37
37
 
38
38
  export default{
39
39
 
40
+ emits: [ 'update:modelValue' ],
41
+
40
42
  props: {
41
43
  containerClass: String,
42
44
 
@@ -112,7 +114,7 @@ export default{
112
114
 
113
115
  .dropdown{
114
116
  @apply flex items-center rounded-lg overflow-hidden cursor-pointer relative;
115
- @apply border-[1px] border-border-200 bg-base-300;
117
+ @apply border-[1px] border-border-200 bg-base-200;
116
118
  }
117
119
  .dropdown:not(.readonly){
118
120
  @apply hover:border-border-300;
@@ -40,7 +40,7 @@ export default{
40
40
 
41
41
  keys: {
42
42
  type: Array,
43
- default: [
43
+ default: () => [
44
44
  [ 'p-' ],
45
45
  [ 'px-', 'py-' ],
46
46
  [ 'pl-', 'pt-', 'pr-', 'pb-' ]
@@ -49,7 +49,7 @@ export default{
49
49
 
50
50
  values: {
51
51
  type: Array,
52
- default: [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ]
52
+ default: () => [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ]
53
53
  },
54
54
 
55
55
  viewType: String,
@@ -53,7 +53,7 @@ export default{
53
53
 
54
54
  keys: {
55
55
  type: Array,
56
- default: [
56
+ default: () => [
57
57
  [ 'p-' ],
58
58
  [ 'px-', 'py-' ],
59
59
  [ 'pl-', 'pt-', 'pr-', 'pb-' ]
@@ -62,7 +62,7 @@ export default{
62
62
 
63
63
  values: {
64
64
  type: Array,
65
- default: [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 'auto' ]
65
+ default: () => [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 'auto' ]
66
66
  },
67
67
 
68
68
  viewType: String,
@@ -19,6 +19,8 @@
19
19
 
20
20
  export default{
21
21
 
22
+ emits: [ 'update:modelValue' ],
23
+
22
24
  props: {
23
25
 
24
26
  modelValue: String,
@@ -115,7 +117,7 @@ export default{
115
117
  }
116
118
 
117
119
  .input{
118
- @apply outline-none text-center bg-base-300 text-lg;
120
+ @apply outline-none text-center bg-base-200 text-lg;
119
121
  @apply border-[1px] border-border-200 rounded-lg p-3;
120
122
  }
121
123
  .input:focus{