@indielayer/ui 1.14.1 → 1.14.3

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/lib/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- declare const _default: "1.14.1";
1
+ declare const _default: "1.14.3";
2
2
  export default _default;
package/lib/version.js CHANGED
@@ -1,4 +1,4 @@
1
- const e = "1.14.1";
1
+ const e = "1.14.3";
2
2
  export {
3
3
  e as default
4
4
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@indielayer/ui",
3
- "version": "1.14.1",
3
+ "version": "1.14.3",
4
4
  "description": "Indielayer UI Components with Tailwind CSS build for Vue 3",
5
5
  "author": {
6
6
  "name": "João Teixeira",
@@ -96,7 +96,7 @@ const { styles, classes, className } = useTheme('Badge', {}, props)
96
96
  <slot></slot>
97
97
  <div
98
98
  v-if="show"
99
- class="absolute rounded-full z-10 bg-[color:var(--x-badge-bg)]"
99
+ class="absolute rounded-full z-10 bg-[color:var(--x-badge-bg)] pointer-events-none"
100
100
  :style="offsetStyle"
101
101
  :class="[
102
102
  positionClasses,
@@ -42,6 +42,7 @@ const elRef = ref<HTMLElement | null>(null)
42
42
  const checked = ref(false)
43
43
 
44
44
  function toggle() {
45
+ if (props.disabled || props.loading || props.readonly) return
45
46
  checked.value = !checked.value
46
47
  }
47
48
 
@@ -138,7 +139,7 @@ defineExpose({ focus, blur, toggle, reset, validate, setError })
138
139
  :aria-disabled="disabled ? 'true' : undefined"
139
140
  type="checkbox"
140
141
  class="invisible absolute"
141
- :disabled="disabled || loading"
142
+ :disabled="disabled || loading || readonly"
142
143
  :required="required"
143
144
  v-on="listeners"
144
145
  />
@@ -149,7 +150,12 @@ defineExpose({ focus, blur, toggle, reset, validate, setError })
149
150
  ]"
150
151
  >
151
152
  <x-spinner v-if="loading" :size="size" class="absolute" />
152
- <span v-else-if="indeterminate" name="check-icon" class="w-2/3 h-[2px] bg-white dark:bg-secondary-900"></span>
153
+ <span
154
+ v-else-if="indeterminate"
155
+ name="check-icon"
156
+ class="w-2/3 h-[1.5px]"
157
+ :class="[disabled ? 'bg-secondary-400 dark:bg-secondary-500' : 'bg-white']"
158
+ ></span>
153
159
  <slot v-else name="icon">
154
160
  <svg
155
161
  viewBox="0 0 20 20"
@@ -29,7 +29,10 @@ const theme: CheckboxTheme = {
29
29
  },
30
30
 
31
31
  icon: ({ props }) => {
32
- const classes = ['fill-current text-white']
32
+ const classes = ['fill-current']
33
+
34
+ if (props.disabled) classes.push('text-secondary-400 dark:text-secondary-500')
35
+ else classes.push('text-white')
33
36
 
34
37
  if (props.size === 'lg') classes.push('h-3 w-3')
35
38
  else if (props.size === 'xl') classes.push('h-4 w-4')
@@ -27,6 +27,10 @@ const notificationsProps = {
27
27
  type: [Symbol, String],
28
28
  default: injectNotificationKey,
29
29
  },
30
+ offset: {
31
+ type: [String, Number],
32
+ default: 0,
33
+ },
30
34
  }
31
35
 
32
36
  const validators = {
@@ -78,7 +82,7 @@ export default {
78
82
  </script>
79
83
 
80
84
  <script setup lang="ts">
81
- import { ref, provide, watch, type PropType, type ExtractPublicPropTypes } from 'vue'
85
+ import { ref, provide, watch, type PropType, type ExtractPublicPropTypes, computed } from 'vue'
82
86
  import { injectNotificationKey } from '../../composables/keys'
83
87
  import { useColors } from '../../composables/useColors'
84
88
  import { useCSS } from '../../composables/useCSS'
@@ -254,6 +258,8 @@ function resume(notification: NotificationEvent) {
254
258
  }
255
259
  }
256
260
 
261
+ const offsetStyle = computed(() => `${props.offset}px`)
262
+
257
263
  const { styles, classes, className } = useTheme('Notifications', {}, props)
258
264
 
259
265
  defineExpose({ log, info, success, warn, warning: warn, error })
@@ -279,6 +285,9 @@ defineExpose({ log, info, success, warn, warning: warn, error })
279
285
  >
280
286
  <transition-group
281
287
  tag="ul"
288
+ :style="[
289
+ internalPosition === 'bottom' ? `padding-bottom: ${offsetStyle};` : `padding-top: ${offsetStyle};`
290
+ ]"
282
291
  :class="[
283
292
  classes.list,
284
293
  { 'flex-col-reverse': internalPosition }
@@ -31,11 +31,11 @@ const theme: TagTheme = {
31
31
 
32
32
  return css.variables({
33
33
  bg: color[100],
34
- text: color[600],
35
- border: color[600],
34
+ text: color[800],
35
+ border: color[700],
36
36
  dark: {
37
37
  bg: color[600],
38
- border: color[400],
38
+ border: color[500],
39
39
  text: color[100],
40
40
  },
41
41
  })
@@ -20,7 +20,7 @@ import XPopover from '../../components/popover/Popover.vue'
20
20
  import XPopoverContainer from '../../components/popover/PopoverContainer.vue'
21
21
  import { type Placement } from 'floating-vue'
22
22
 
23
- const props = defineProps(tooltipProps)
23
+ defineProps(tooltipProps)
24
24
  </script>
25
25
 
26
26
  <template>
@@ -1,4 +1,4 @@
1
- import { onUnmounted, unref, nextTick, watch, ref, type Ref, type ComponentPublicInstance } from 'vue'
1
+ import { onUnmounted, unref, nextTick, ref, type Ref, type ComponentPublicInstance } from 'vue'
2
2
 
3
3
  const focusableQuery = 'button:not([tabindex="-1"]), [href], input, select, textarea, li, a, [tabindex]:not([tabindex="-1"])'
4
4
 
@@ -77,18 +77,16 @@ export function useFocusTrap() {
77
77
 
78
78
  focusable.value[idx]?.focus()
79
79
 
80
+ document.removeEventListener('keydown', handleKeydown)
81
+ observer?.disconnect()
82
+
80
83
  document.addEventListener('keydown', handleKeydown)
81
- observer = new MutationObserver(() => getFocusableElements(currentTarget))
82
- const el = getEl(currentTarget)
83
84
 
84
- if (el) observer.observe(el, { childList: true, subtree: true })
85
+ const el = getEl(currentTarget)
85
86
 
86
- // If targetRef is a Ref, watch for changes
87
- if (typeof targetRef === 'object' && targetRef !== null && 'value' in targetRef) {
88
- watch(targetRef, (newVal) => {
89
- clearFocusTrap()
90
- if (newVal !== null) initFocusTrap(targetRef, options)
91
- })
87
+ if (el) {
88
+ observer = new MutationObserver(() => getFocusableElements(currentTarget))
89
+ observer.observe(el, { childList: true, subtree: true })
92
90
  }
93
91
  }
94
92
 
@@ -100,6 +98,10 @@ export function useFocusTrap() {
100
98
  prevActiveElement.focus()
101
99
  }
102
100
  currentTarget = null
101
+ focusable.value = []
102
+ firstFocusableEl = null
103
+ lastFocusableEl = null
104
+ prevActiveElement = null
103
105
  }
104
106
 
105
107
  onUnmounted(() => {
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export default '1.14.1'
1
+ export default '1.14.3'