noph-ui 0.10.12 → 0.10.13

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.
@@ -1,7 +1,6 @@
1
1
  <script lang="ts">
2
2
  import Ripple from '../ripple/Ripple.svelte'
3
3
  import Tooltip from '../tooltip/Tooltip.svelte'
4
- import { generateUUIDv4 } from '../utils.js'
5
4
  import type { HTMLAnchorAttributes, HTMLButtonAttributes } from 'svelte/elements'
6
5
  import type { ButtonProps } from './types.ts'
7
6
 
@@ -17,7 +16,7 @@
17
16
  ...attributes
18
17
  }: ButtonProps = $props()
19
18
 
20
- let tooltipId = $state(title ? generateUUIDv4() : '')
19
+ let tooltipId = $state(title ? crypto.randomUUID() : '')
21
20
 
22
21
  const isButton = (obj: unknown): obj is HTMLButtonAttributes => {
23
22
  return (obj as HTMLAnchorAttributes).href === undefined
@@ -1,9 +1,12 @@
1
1
  <script lang="ts">
2
2
  import Ripple from '../ripple/Ripple.svelte'
3
3
  import Tooltip from '../tooltip/Tooltip.svelte'
4
- import { generateUUIDv4 } from '../utils.js'
5
4
  import type { IconButtonProps } from './types.ts'
6
- import type { HTMLAnchorAttributes, HTMLButtonAttributes } from 'svelte/elements'
5
+ import type {
6
+ HTMLAnchorAttributes,
7
+ HTMLButtonAttributes,
8
+ MouseEventHandler,
9
+ } from 'svelte/elements'
7
10
 
8
11
  let {
9
12
  variant = 'text',
@@ -15,10 +18,11 @@
15
18
  selected = false,
16
19
  selectedIcon,
17
20
  keepTooltipOnClick,
21
+ onclick,
18
22
  ...attributes
19
23
  }: IconButtonProps = $props()
20
24
 
21
- let tooltipId = $state(title ? generateUUIDv4() : '')
25
+ let tooltipId = $state(title ? crypto.randomUUID() : '')
22
26
  let selectedState = $state(!toggle || selected)
23
27
  let touchEl: HTMLSpanElement | undefined = $state()
24
28
 
@@ -28,14 +32,6 @@
28
32
  const isLink = (obj: unknown): obj is HTMLAnchorAttributes => {
29
33
  return (obj as HTMLAnchorAttributes).href !== undefined
30
34
  }
31
-
32
- $effect(() => {
33
- if (toggle) {
34
- element?.addEventListener('click', () => {
35
- selectedState = !selectedState
36
- })
37
- }
38
- })
39
35
  </script>
40
36
 
41
37
  {#snippet content()}
@@ -58,6 +54,12 @@
58
54
  {...attributes as HTMLButtonAttributes}
59
55
  {disabled}
60
56
  bind:this={element}
57
+ onclick={(event) => {
58
+ if (toggle) {
59
+ selectedState = !selectedState
60
+ }
61
+ ;(onclick as MouseEventHandler<HTMLButtonElement>)?.(event)
62
+ }}
61
63
  class={[
62
64
  'np-icon-button',
63
65
  disabled ? `${variant}-disabled disabled` : `${variant} enabled`,
@@ -1,5 +1,6 @@
1
1
  <script lang="ts">
2
2
  import Ripple from '../ripple/Ripple.svelte'
3
+ import type { FocusEventHandler } from 'svelte/elements'
3
4
  import type { CardProps } from './types.ts'
4
5
 
5
6
  let {
@@ -12,6 +13,8 @@
12
13
  supportingText,
13
14
  action,
14
15
  children,
16
+ onblur,
17
+ onfocus,
15
18
  ...attributes
16
19
  }: CardProps = $props()
17
20
 
@@ -28,16 +31,6 @@
28
31
  })
29
32
  }
30
33
  })
31
- $effect(() => {
32
- if (element) {
33
- element.addEventListener('focus', () => {
34
- focused = true
35
- })
36
- element.addEventListener('blur', () => {
37
- focused = false
38
- })
39
- }
40
- })
41
34
  </script>
42
35
 
43
36
  {#snippet content()}
@@ -77,6 +70,12 @@
77
70
  {...attributes}
78
71
  bind:this={element}
79
72
  aria-disabled={disabled}
73
+ onfocus={(event) => {
74
+ ;(onfocus as FocusEventHandler<HTMLDivElement>)?.(event)
75
+ }}
76
+ onblur={(event) => {
77
+ ;(onblur as FocusEventHandler<HTMLDivElement>)?.(event)
78
+ }}
80
79
  class={[
81
80
  'np-card-container',
82
81
  `np-card-${variant}`,
@@ -91,6 +90,14 @@
91
90
  aria-disabled={disabled}
92
91
  {...attributes}
93
92
  bind:this={element}
93
+ onfocus={(event) => {
94
+ focused = true
95
+ ;(onfocus as FocusEventHandler<HTMLButtonElement>)?.(event)
96
+ }}
97
+ onblur={(event) => {
98
+ focused = false
99
+ ;(onblur as FocusEventHandler<HTMLButtonElement>)?.(event)
100
+ }}
94
101
  {disabled}
95
102
  class={[
96
103
  'np-card-container',
@@ -108,11 +115,13 @@
108
115
  aria-disabled={disabled}
109
116
  tabindex={disabled ? -1 : undefined}
110
117
  role="link"
111
- onfocusin={() => {
118
+ onfocus={(event) => {
112
119
  focused = true
120
+ ;(onfocus as FocusEventHandler<HTMLAnchorElement>)?.(event)
113
121
  }}
114
- onfocusout={() => {
122
+ onblur={(event) => {
115
123
  focused = false
124
+ ;(onblur as FocusEventHandler<HTMLAnchorElement>)?.(event)
116
125
  }}
117
126
  class={[
118
127
  'np-card-container',
@@ -1,5 +1,4 @@
1
1
  <script lang="ts">
2
- import { generateUUIDv4 } from '../utils.js'
3
2
  import type { MenuProps } from './types.ts'
4
3
 
5
4
  let {
@@ -75,7 +74,7 @@
75
74
  { passive: true },
76
75
  )
77
76
  } else if (!anchor.style.getPropertyValue('anchor-name')) {
78
- const generatedId = `--${generateUUIDv4()}`
77
+ const generatedId = `--${crypto.randomUUID()}`
79
78
  element.style.setProperty('position-anchor', generatedId)
80
79
  anchor.style.setProperty('anchor-name', generatedId)
81
80
  }
@@ -1,7 +1,6 @@
1
1
  <script lang="ts">
2
2
  import Menu from '../menu/Menu.svelte'
3
3
  import { isFirstInvalidControlInForm } from '../text-field/report-validity.js'
4
- import { generateUUIDv4 } from '../utils.js'
5
4
  import type { SelectProps } from './types.ts'
6
5
  import Item from '../list/Item.svelte'
7
6
  import { tick } from 'svelte'
@@ -35,7 +34,7 @@
35
34
  let selectElement: HTMLSelectElement | undefined = $state()
36
35
  let menuElement: HTMLDivElement | undefined = $state()
37
36
  let field: HTMLDivElement | undefined = $state()
38
- let menuId = $state(`--select-${generateUUIDv4()}`)
37
+ let menuId = $state(`--select-${crypto.randomUUID()}`)
39
38
  let menuOpen = $state(false)
40
39
  let selectedLabel = $derived.by<string>(() => {
41
40
  return options.find((option) => option.value === value)?.label || ''
@@ -1,5 +1,4 @@
1
1
  <script lang="ts">
2
- import { generateUUIDv4 } from '../utils.js'
3
2
  import type { TooltipProps } from './types.ts'
4
3
 
5
4
  let {
@@ -46,7 +45,7 @@
46
45
  if (anchor && element) {
47
46
  if ('anchorName' in document.documentElement.style) {
48
47
  const anchorName = anchor.style.getPropertyValue('anchor-name')
49
- const generatedId = anchorName || `--${generateUUIDv4()}`
48
+ const generatedId = anchorName || `--${crypto.randomUUID()}`
50
49
  element.style.setProperty('position-anchor', generatedId)
51
50
  if (!anchorName) {
52
51
  anchor.style.setProperty('anchor-name', generatedId)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "noph-ui",
3
- "version": "0.10.12",
3
+ "version": "0.10.13",
4
4
  "license": "MIT",
5
5
  "homepage": "https://noph.dev",
6
6
  "repository": {
package/dist/utils.d.ts DELETED
@@ -1,2 +0,0 @@
1
- declare const generateUUIDv4: () => string;
2
- export { generateUUIDv4 };
package/dist/utils.js DELETED
@@ -1,7 +0,0 @@
1
- const generateUUIDv4 = () => {
2
- return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
3
- const r = (Math.random() * 16) | 0, v = c === 'x' ? r : (r & 0x3) | 0x8;
4
- return v.toString(16);
5
- });
6
- };
7
- export { generateUUIDv4 };