webcake-ui-kit 1.1.32 → 1.1.33

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,6 +1,6 @@
1
1
  {
2
2
  "name": "webcake-ui-kit",
3
- "version": "1.1.32",
3
+ "version": "1.1.33",
4
4
  "description": "UI Kit for Vue 2 && 3 - Pure Options API",
5
5
  "main": "src/index.js",
6
6
  "module": "src/index.js",
@@ -4,7 +4,6 @@
4
4
  .ui-btn {
5
5
  display: inline-flex;
6
6
  align-items: center;
7
- justify-content: center;
8
7
  border: 1px solid transparent;
9
8
  margin: 0;
10
9
  cursor: pointer;
@@ -21,6 +20,7 @@
21
20
 
22
21
  .ui-btn__label {
23
22
  display: inline-flex;
23
+ flex: 1;
24
24
  }
25
25
 
26
26
  .ui-btn__icon {
@@ -8,18 +8,19 @@
8
8
  /* Weekday header row — 7 fixed 36px tracks, muted labels. */
9
9
  .ui-cal-view__weekdays {
10
10
  display: grid;
11
- grid-template-columns: repeat(7, 32px);
11
+ grid-template-columns: repeat(7, 36px);
12
12
  }
13
13
 
14
14
  .ui-cal-view__weekday {
15
15
  height: 32px;
16
- width: 32px;
16
+ width: 36px;
17
17
  display: inline-flex;
18
18
  align-items: center;
19
19
  justify-content: center;
20
20
  color: var(--muted-fg);
21
- font-size: var(--paragraph-small-font-size);
22
- line-height: var(--paragraph-small-line-height);
21
+ font-size: var(--paragraph-mini-font-size);
22
+ line-height: var(--paragraph-mini-line-height);
23
+ letter-spacing: var(--paragraph-mini-letter-spacing);
23
24
  }
24
25
 
25
26
  /*
@@ -28,15 +29,15 @@
28
29
  */
29
30
  .ui-cal-view__grid {
30
31
  display: grid;
31
- grid-template-columns: repeat(7, 32px);
32
+ grid-template-columns: repeat(7, 36px);
32
33
  row-gap: 1px;
33
34
  column-gap: 0;
34
35
  }
35
36
 
36
37
  .ui-cal-cell {
37
38
  position: relative;
38
- width: 32px;
39
- height: 32px;
39
+ width: 36px;
40
+ height: 36px;
40
41
  padding: 0;
41
42
  border: 0;
42
43
  background: transparent;
@@ -85,8 +86,8 @@
85
86
  display: inline-flex;
86
87
  align-items: center;
87
88
  justify-content: center;
88
- width: 32px;
89
- height: 32px;
89
+ width: 36px;
90
+ height: 36px;
90
91
  border-radius: var(--rounded-lg);
91
92
  transition:
92
93
  background-color 0.12s ease,
@@ -95,7 +95,7 @@
95
95
 
96
96
  <script>
97
97
  import { acquire, release } from '../../floating/portal-root.js'
98
- import { bumpTo } from '../../floating/layer-manager.js'
98
+ import { bumpTo, nextZIndex } from '../../floating/layer-manager.js'
99
99
  import Button from '../button/Button.vue'
100
100
  import WkiMinus from '../../icons/Minus.vue'
101
101
  import WkiUnfoldVertical from '../../icons/UnfoldVertical.vue'
@@ -143,7 +143,8 @@ export default {
143
143
  hasOpened: false,
144
144
  isVisible: false,
145
145
  minimized: false,
146
- isFullscreen: false
146
+ isFullscreen: false,
147
+ activeZIndex: 0
147
148
  }
148
149
  },
149
150
  computed: {
@@ -151,7 +152,7 @@ export default {
151
152
  return this.modelValue !== undefined ? this.modelValue : this.open
152
153
  },
153
154
  rootStyle() {
154
- return { zIndex: this.zIndex }
155
+ return { zIndex: this.activeZIndex || this.zIndex }
155
156
  },
156
157
  maskStyle() {
157
158
  if (!this.blur) return {}
@@ -225,6 +226,10 @@ export default {
225
226
  beforeUnmount() {
226
227
  this.cleanup()
227
228
  },
229
+ // eslint-disable-next-line vue/no-deprecated-destroyed-lifecycle, vue/no-dupe-keys
230
+ beforeDestroy() {
231
+ this.cleanup()
232
+ },
228
233
  methods: {
229
234
  setOpen(v) {
230
235
  this.$emit('change', v)
@@ -260,6 +265,7 @@ export default {
260
265
  onOpen() {
261
266
  this.hasOpened = true
262
267
  bumpTo(this.zIndex)
268
+ this.activeZIndex = nextZIndex()
263
269
  this.lockBody()
264
270
  if (typeof document !== 'undefined') {
265
271
  this._prevFocus = document.activeElement
@@ -5,6 +5,7 @@
5
5
  :offset="4"
6
6
  :close-on-esc="closeOnEsc"
7
7
  :disabled="disabled"
8
+ :persistent="persistent"
8
9
  @change="onMenuChange"
9
10
  @open="$emit('open')"
10
11
  @close="$emit('close')"
@@ -68,7 +69,7 @@ export default {
68
69
  },
69
70
  closeOnEsc: { type: Boolean, default: true },
70
71
  disabled: { type: Boolean, default: false },
71
- width: { type: [String, Number], default: null },
72
+ width: { type: [String, Number], default: 280 },
72
73
  trigger: {
73
74
  type: Array,
74
75
  default: function () {
@@ -92,7 +93,8 @@ export default {
92
93
  },
93
94
  overlayClassName: { type: [String, Array, Object], default: null },
94
95
  overlayStyle: { type: [Object, Array], default: null },
95
- showChecked: { type: Boolean, default: false }
96
+ showChecked: { type: Boolean, default: false },
97
+ persistent: { type: Boolean, default: false }
96
98
  },
97
99
  emits: ['change', 'update:modelValue', 'open', 'close', 'select'],
98
100
  data() {
@@ -149,6 +151,10 @@ export default {
149
151
  },
150
152
  beforeUnmount() {
151
153
  if (this._hoverTimer) clearTimeout(this._hoverTimer)
154
+ },
155
+ // eslint-disable-next-line vue/no-deprecated-destroyed-lifecycle, vue/no-dupe-keys
156
+ beforeDestroy() {
157
+ if (this._hoverTimer) clearTimeout(this._hoverTimer)
152
158
  }
153
159
  }
154
160
  </script>
@@ -66,6 +66,7 @@ export default {
66
66
  closeOnSelect: { type: Boolean, default: true },
67
67
  closeOnEsc: { type: Boolean, default: true },
68
68
  disabled: { type: Boolean, default: false },
69
+ persistent: { type: Boolean, default: false },
69
70
  anchorWidth: { type: Boolean, default: false },
70
71
  width: { type: [String, Number], default: null },
71
72
  overlayClassName: { type: [String, Array, Object], default: null },
@@ -110,9 +111,9 @@ export default {
110
111
  zIndex: this.zIndex || null
111
112
  }
112
113
  if (this.anchorWidth && this.pmAnchorWidth) {
113
- style.minWidth = this.pmAnchorWidth + 'px'
114
+ style.width = this.pmAnchorWidth + 'px'
114
115
  } else if (this.width) {
115
- style.minWidth = typeof this.width === 'number' ? `${this.width}px` : this.width
116
+ style.width = typeof this.width === 'number' ? `${this.width}px` : this.width
116
117
  }
117
118
  return style
118
119
  }
@@ -146,6 +147,10 @@ export default {
146
147
  beforeUnmount() {
147
148
  this._cleanupAll()
148
149
  },
150
+ // eslint-disable-next-line vue/no-deprecated-destroyed-lifecycle, vue/no-dupe-keys
151
+ beforeDestroy() {
152
+ this._cleanupAll()
153
+ },
149
154
  methods: {
150
155
  setOpenState(v) {
151
156
  this.$emit('change', v)
@@ -210,6 +215,7 @@ export default {
210
215
  this.closeMenu()
211
216
  },
212
217
  _coOnOutside() {
218
+ if (this.persistent) return
213
219
  this.closeMenu()
214
220
  },
215
221
  _cleanupAll() {
@@ -24,8 +24,10 @@
24
24
  'ui-select--loading': loading,
25
25
  'ui-select--multiple': isMultiMode,
26
26
  'ui-select--searchable': isSearchable
27
- }
27
+ },
28
+ externalClass
28
29
  ]"
30
+ :style="externalStyle"
29
31
  :tabindex="isSearchable ? -1 : 0"
30
32
  v-bind="attrs"
31
33
  @click="isSearchable ? openIfClosed() : toggle()"
@@ -118,6 +120,8 @@ export default {
118
120
  return { select: this }
119
121
  },
120
122
 
123
+ inheritAttrs: false,
124
+
121
125
  model: {
122
126
  prop: 'value',
123
127
  event: 'change'
@@ -279,6 +283,31 @@ export default {
279
283
  },
280
284
  listStyle() {
281
285
  return { maxHeight: this.listHeight + 'px' }
286
+ },
287
+ externalClass() {
288
+ // Vue 3: class is in $attrs (inheritAttrs:false keeps it off the root)
289
+ if (this.$attrs && Object.prototype.hasOwnProperty.call(this.$attrs, 'class')) {
290
+ return this.$attrs.class
291
+ }
292
+ // Vue 2: class always lands on root regardless of inheritAttrs; also bind here
293
+ if (this.$vnode && this.$vnode.data) {
294
+ var parts = []
295
+ if (this.$vnode.data.staticClass) parts.push(this.$vnode.data.staticClass)
296
+ if (this.$vnode.data.class) parts.push(this.$vnode.data.class)
297
+ return parts.length ? parts : null
298
+ }
299
+ return null
300
+ },
301
+ externalStyle() {
302
+ // Vue 3: style is in $attrs
303
+ if (this.$attrs && Object.prototype.hasOwnProperty.call(this.$attrs, 'style')) {
304
+ return this.$attrs.style
305
+ }
306
+ // Vue 2: style always lands on root; also bind here for consistency
307
+ if (this.$vnode && this.$vnode.data) {
308
+ return this.$vnode.data.staticStyle || this.$vnode.data.style || null
309
+ }
310
+ return null
282
311
  }
283
312
  },
284
313
 
@@ -191,6 +191,10 @@ export default {
191
191
  beforeUnmount: function () {
192
192
  this.cleanup()
193
193
  },
194
+ // eslint-disable-next-line vue/no-deprecated-destroyed-lifecycle, vue/no-dupe-keys
195
+ beforeDestroy() {
196
+ this.cleanup()
197
+ },
194
198
  methods: {
195
199
  cleanup: function () {
196
200
  document.removeEventListener('mousemove', this.boundMouseMove)
@@ -1,5 +1,8 @@
1
1
  <template>
2
- <span class="ui-tag" :class="[`ui-tag--type-${type}`, `ui-tag--${size}`, { 'ui-tag--with-icon': hasIcon }]">
2
+ <span
3
+ :class="['ui-tag', `ui-tag--type-${type}`, `ui-tag--${size}`, { 'ui-tag--with-icon': hasIcon }]"
4
+ @click="handleClick"
5
+ >
3
6
  <span v-if="hasIcon" class="ui-tag__icon"><slot name="icon" /></span>
4
7
  <span class="ui-tag__label"
5
8
  ><slot>{{ label }}</slot></span
@@ -35,11 +38,16 @@ export default {
35
38
  closable: { type: Boolean, default: false },
36
39
  label: { type: String, default: '' }
37
40
  },
38
- emits: ['close'],
41
+ emits: ['close', 'click'],
39
42
  computed: {
40
43
  hasIcon: function () {
41
44
  return !!((this.$scopedSlots && this.$scopedSlots['icon']) || this.$slots['icon'])
42
45
  }
46
+ },
47
+ methods: {
48
+ handleClick(e) {
49
+ this.$emit('click', e)
50
+ }
43
51
  }
44
52
  }
45
53
  </script>
@@ -105,6 +105,10 @@ export default {
105
105
  beforeUnmount() {
106
106
  this.cleanup()
107
107
  },
108
+ // eslint-disable-next-line vue/no-deprecated-destroyed-lifecycle, vue/no-dupe-keys
109
+ beforeDestroy() {
110
+ this.cleanup()
111
+ },
108
112
  methods: {
109
113
  onShow() {
110
114
  this.hovered = true
@@ -0,0 +1,48 @@
1
+ <template>
2
+ <BaseIcon v-bind="$attrs" v-on="listeners">
3
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
4
+ <path
5
+ d="M5.17284 14C5.40204 14 5.62227 14.0905 5.78434 14.2524C5.9464 14.4142 6.03704 14.6341 6.03704 14.863V16.9589H8.1358C8.365 16.9589 8.58523 17.0494 8.7473 17.2113C8.90937 17.3731 9 17.593 9 17.8219C9 18.0508 8.90937 18.2707 8.7473 18.4326C8.58523 18.5944 8.365 18.6849 8.1358 18.6849H5.17284C4.94364 18.6849 4.72341 18.5944 4.56134 18.4326C4.39927 18.2707 4.30864 18.0508 4.30864 17.8219V14.863C4.30864 14.6341 4.39927 14.4142 4.56134 14.2524C4.72341 14.0905 4.94364 14 5.17284 14Z"
6
+ fill="currentColor"
7
+ />
8
+ <path
9
+ d="M18.8272 5.31507C19.0564 5.31507 19.2766 5.40558 19.4387 5.56742C19.6007 5.72927 19.6914 5.9492 19.6914 6.17808V9.13699C19.6914 9.36587 19.6007 9.5858 19.4387 9.74765C19.2766 9.90949 19.0564 10 18.8272 10C18.598 10 18.3777 9.90949 18.2157 9.74765C18.0536 9.5858 17.963 9.36587 17.963 9.13699V7.0411H15.8642C15.635 7.0411 15.4148 6.95059 15.2527 6.78874C15.0906 6.62689 15 6.40697 15 6.17808C15 5.9492 15.0906 5.72927 15.2527 5.56742C15.4148 5.40558 15.635 5.31507 15.8642 5.31507H18.8272Z"
10
+ fill="currentColor"
11
+ />
12
+ <path
13
+ fill-rule="evenodd"
14
+ clip-rule="evenodd"
15
+ d="M20.3951 3C20.8207 3 21.2293 3.1685 21.5303 3.46907C21.8313 3.76964 22 4.17767 22 4.60274V19.3973C22 19.8223 21.8313 20.2304 21.5303 20.5309C21.2293 20.8315 20.8207 21 20.3951 21H3.60494C3.17928 21 2.7707 20.8315 2.46971 20.5309C2.16873 20.2304 2 19.8223 2 19.3973V4.60274C2 4.17767 2.16873 3.76964 2.46971 3.46907C2.7707 3.1685 3.17928 3 3.60494 3H20.3951ZM3.7284 19.274H20.2716V4.72603H3.7284V19.274Z"
16
+ fill="currentColor"
17
+ />
18
+ <path
19
+ d="M12.1281 12.8517L12.8096 12.3073C13.1389 12.0442 13.1882 11.5689 12.9198 11.2456C12.6513 10.9224 12.1667 10.8736 11.8374 11.1367L11.156 11.6811C10.8267 11.9441 10.7774 12.4195 11.0458 12.7427C11.3143 13.066 11.7988 13.1148 12.1281 12.8517Z"
20
+ fill="currentColor"
21
+ />
22
+ <path
23
+ d="M8.72096 15.5736L9.4024 15.0292C9.7317 14.7662 9.78103 14.2909 9.51258 13.9676C9.24413 13.6443 8.75956 13.5955 8.43025 13.8586L7.74882 14.403C7.41951 14.6661 7.37018 15.1414 7.63863 15.4647C7.90708 15.7879 8.39165 15.8367 8.72096 15.5736Z"
24
+ fill="currentColor"
25
+ />
26
+ <path
27
+ d="M15.5353 10.1297L16.2168 9.58535C16.5461 9.32228 16.5954 8.84696 16.327 8.5237C16.0585 8.20044 15.5739 8.15165 15.2446 8.41472L14.5632 8.95911C14.2339 9.22219 14.1846 9.69751 14.453 10.0208C14.7215 10.344 15.206 10.3928 15.5353 10.1297Z"
28
+ fill="currentColor"
29
+ />
30
+ </svg>
31
+ </BaseIcon>
32
+ </template>
33
+
34
+ <script>
35
+ import BaseIcon from './BaseIcon.vue'
36
+
37
+ export default {
38
+ name: 'FrameCornersDash',
39
+ components: { BaseIcon },
40
+ inheritAttrs: false,
41
+ emits: [],
42
+ computed: {
43
+ listeners() {
44
+ return this.$listeners || {}
45
+ }
46
+ }
47
+ }
48
+ </script>
@@ -0,0 +1,68 @@
1
+ <template>
2
+ <BaseIcon v-bind="$attrs" v-on="listeners">
3
+ <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">
4
+ <path
5
+ d="M4.96582 13.6934C5.56831 13.6934 6.05664 14.1817 6.05664 14.7842C6.05659 15.3866 5.56828 15.875 4.96582 15.875H4.9541C4.35164 15.875 3.86333 15.3866 3.86328 14.7842C3.86328 14.1817 4.35161 13.6934 4.9541 13.6934H4.96582Z"
6
+ fill="currentColor"
7
+ />
8
+ <path
9
+ d="M8.25098 13.6934C8.85339 13.6934 9.3418 14.1817 9.3418 14.7842C9.34175 15.3866 8.85336 15.8749 8.25098 15.875H8.23828C7.63598 15.8748 7.14751 15.3865 7.14746 14.7842C7.14746 14.1818 7.63595 13.6936 8.23828 13.6934H8.25098Z"
10
+ fill="currentColor"
11
+ />
12
+ <path
13
+ d="M11.5117 13.6934C12.1141 13.6935 12.6025 14.1818 12.6025 14.7842C12.6025 15.3865 12.114 15.8748 11.5117 15.875H11.499C10.8966 15.8749 10.4083 15.3866 10.4082 14.7842C10.4082 14.1817 10.8966 13.6935 11.499 13.6934H11.5117Z"
14
+ fill="currentColor"
15
+ />
16
+ <path
17
+ d="M14.7842 13.6934C15.3866 13.6934 15.875 14.1817 15.875 14.7842C15.875 15.3866 15.3866 15.875 14.7842 15.875H14.7715C14.1692 15.8748 13.6807 15.3865 13.6807 14.7842C13.6807 14.1818 14.1692 13.6936 14.7715 13.6934H14.7842Z"
18
+ fill="currentColor"
19
+ />
20
+ <path
21
+ d="M8.25098 10.4209C8.85339 10.421 9.3418 10.9093 9.3418 11.5117C9.34161 12.114 8.85327 12.6024 8.25098 12.6025H8.23828C7.63607 12.6023 7.14765 12.1139 7.14746 11.5117C7.14746 10.9093 7.63595 10.4211 8.23828 10.4209H8.25098Z"
22
+ fill="currentColor"
23
+ />
24
+ <path
25
+ d="M11.5234 10.4209C12.1259 10.4209 12.6143 10.9092 12.6143 11.5117C12.6141 12.114 12.1258 12.6025 11.5234 12.6025H11.5117C10.9093 12.6025 10.4211 12.114 10.4209 11.5117C10.4209 10.9092 10.9092 10.4209 11.5117 10.4209H11.5234Z"
26
+ fill="currentColor"
27
+ />
28
+ <path
29
+ d="M14.7842 10.4209C15.3866 10.4209 15.875 10.9093 15.875 11.5117C15.8748 12.114 15.3865 12.6025 14.7842 12.6025H14.7715C14.1693 12.6023 13.6809 12.1139 13.6807 11.5117C13.6807 10.9094 14.1692 10.4211 14.7715 10.4209H14.7842Z"
30
+ fill="currentColor"
31
+ />
32
+ <path
33
+ d="M11.5117 7.14746C12.1139 7.14765 12.6023 7.63607 12.6025 8.23828C12.6025 8.84065 12.114 9.32891 11.5117 9.3291H11.499C10.8966 9.32901 10.4082 8.84072 10.4082 8.23828C10.4084 7.63601 10.8967 7.14755 11.499 7.14746H11.5117Z"
34
+ fill="currentColor"
35
+ />
36
+ <path
37
+ d="M14.7842 7.14746C15.3865 7.14751 15.8748 7.63598 15.875 8.23828C15.875 8.84074 15.3866 9.32905 14.7842 9.3291H14.7715C14.1692 9.32887 13.6807 8.84063 13.6807 8.23828C13.6809 7.6361 14.1693 7.14769 14.7715 7.14746H14.7842Z"
38
+ fill="currentColor"
39
+ />
40
+ <path
41
+ d="M14.7842 3.875C15.3866 3.87505 15.875 4.3634 15.875 4.96582C15.875 5.56828 15.3866 6.05659 14.7842 6.05664H14.7715C14.1692 6.05641 13.6807 5.56817 13.6807 4.96582C13.6807 4.36351 14.1692 3.87523 14.7715 3.875H14.7842Z"
42
+ fill="currentColor"
43
+ />
44
+ <path
45
+ fill-rule="evenodd"
46
+ clip-rule="evenodd"
47
+ d="M16.875 0C18.4628 0 19.75 1.28718 19.75 2.875V16.875C19.75 18.4628 18.4628 19.75 16.875 19.75H2.875C1.28718 19.75 0 18.4628 0 16.875V2.875C0 1.28718 1.28718 0 2.875 0H16.875ZM2.875 1.75C2.25368 1.75 1.75 2.25368 1.75 2.875V16.875C1.75 17.4963 2.25368 18 2.875 18H16.875C17.4963 18 18 17.4963 18 16.875V2.875C18 2.25368 17.4963 1.75 16.875 1.75H2.875Z"
48
+ fill="currentColor"
49
+ />
50
+ </svg>
51
+ </BaseIcon>
52
+ </template>
53
+
54
+ <script>
55
+ import BaseIcon from './BaseIcon.vue'
56
+
57
+ export default {
58
+ name: 'Opacity',
59
+ components: { BaseIcon },
60
+ inheritAttrs: false,
61
+ emits: [],
62
+ computed: {
63
+ listeners() {
64
+ return this.$listeners || {}
65
+ }
66
+ }
67
+ }
68
+ </script>
@@ -1742,5 +1742,7 @@ export { default as WkiSquareNumber } from './SquareNumber.vue'
1742
1742
  export { default as WkiRows3Add } from './Rows3Add.vue'
1743
1743
  export { default as WkiColumns3Add } from './Columns3Add.vue'
1744
1744
  export { default as WkiFrameCorners } from './FrameCorners.vue'
1745
+ export { default as WkiFrameCornersDash } from './FrameCornersDash.vue'
1746
+ export { default as WkiOpacity } from './Opacity.vue'
1745
1747
 
1746
1748
  // --- AUTO-GENERATED LUCIDE EXPORTS END ---
@@ -15,8 +15,8 @@
15
15
 
16
16
  /* ========================= Heading 2 ========================= */
17
17
  --heading-2-font-family: var(--font-family-heading);
18
- --heading-2-font-size: 30px;
19
- --heading-2-line-height: 30px;
18
+ --heading-2-font-size: 32px;
19
+ --heading-2-line-height: 40px;
20
20
  --heading-2-font-weight: 600;
21
21
  --heading-2-letter-spacing: -1px;
22
22