jb-select 6.4.0 → 6.4.2
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/README.md +32 -11
- package/dist/index.cjs.js +1 -1
- package/dist/index.cjs.js.br +0 -0
- package/dist/index.cjs.js.gz +0 -0
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.br +0 -0
- package/dist/index.js.gz +0 -0
- package/dist/index.js.map +1 -1
- package/dist/index.umd.js +1 -1
- package/dist/index.umd.js.br +0 -0
- package/dist/index.umd.js.gz +0 -0
- package/dist/index.umd.js.map +1 -1
- package/dist/jb-select.d.ts.map +1 -1
- package/dist/render.d.ts +2 -0
- package/dist/render.d.ts.map +1 -0
- package/lib/jb-select.scss +4 -4
- package/lib/jb-select.ts +2 -2
- package/lib/{jb-select.html → render.ts} +6 -2
- package/lib/variables.css +1 -0
- package/package.json +1 -1
- package/react/dist/JBOption.d.ts +2 -2
- package/react/dist/JBOptionList.d.ts +1 -1
- package/react/dist/JBSelect.d.ts +8 -25
- package/react/dist/attributes-hook.d.ts +16 -0
- package/react/dist/index.cjs.js +1 -1
- package/react/dist/index.cjs.js.map +1 -1
- package/react/dist/index.js +1 -1
- package/react/dist/index.js.map +1 -1
- package/react/dist/index.umd.js +1 -1
- package/react/dist/index.umd.js.map +1 -1
- package/react/lib/JBOption.tsx +3 -2
- package/react/lib/JBOptionList.tsx +2 -1
- package/react/lib/JBSelect.tsx +14 -54
- package/react/lib/attributes-hook.ts +82 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.umd.js","names":[],"sources":["../lib/JBOptionList.tsx","../lib/events-hook.ts","../lib/JBSelect.tsx","../lib/JBOption.tsx"],"sourcesContent":[
|
|
1
|
+
{"version":3,"file":"index.umd.js","names":[],"sources":["../lib/JBOptionList.tsx","../lib/events-hook.ts","../lib/attributes-hook.ts","../lib/JBSelect.tsx","../lib/JBOption.tsx"],"sourcesContent":[],"mappings":"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"}
|
package/react/lib/JBOption.tsx
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
'use client'
|
|
1
2
|
/* eslint-disable react/display-name */
|
|
2
3
|
import React, { useEffect, useRef, useImperativeHandle, PropsWithChildren, ComponentProps } from 'react';
|
|
3
4
|
import { JBOptionWebComponent } from 'jb-select';
|
|
4
5
|
//TODO: make it generic when remove forward ref
|
|
5
6
|
type TValue = any;
|
|
6
7
|
|
|
7
|
-
declare
|
|
8
|
+
declare module "react" {
|
|
8
9
|
// eslint-disable-next-line @typescript-eslint/no-namespace
|
|
9
10
|
namespace JSX {
|
|
10
11
|
interface IntrinsicElements {
|
|
@@ -41,5 +42,5 @@ type Props<TValue> = {
|
|
|
41
42
|
value:TValue
|
|
42
43
|
}
|
|
43
44
|
|
|
44
|
-
export type JBOptionProps<TValue> = PropsWithChildren<JSX.JBOptionType & Props<TValue>>
|
|
45
|
+
export type JBOptionProps<TValue> = PropsWithChildren<React.JSX.JBOptionType & Props<TValue>>
|
|
45
46
|
JBOption.displayName = 'JBOption';
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
'use client'
|
|
1
2
|
/* eslint-disable react/display-name */
|
|
2
3
|
import React, { useEffect, useRef, useImperativeHandle } from 'react';
|
|
3
4
|
// eslint-disable-next-line no-duplicate-imports
|
|
@@ -5,7 +6,7 @@ import { JBOptionListWebComponent } from 'jb-select';
|
|
|
5
6
|
type TOption = any;
|
|
6
7
|
type TValue = any;
|
|
7
8
|
|
|
8
|
-
declare
|
|
9
|
+
declare module "react" {
|
|
9
10
|
// eslint-disable-next-line @typescript-eslint/no-namespace
|
|
10
11
|
namespace JSX {
|
|
11
12
|
interface IntrinsicElements {
|
package/react/lib/JBSelect.tsx
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
|
+
'use client'
|
|
1
2
|
/* eslint-disable react/display-name */
|
|
2
|
-
import React, {
|
|
3
|
+
import React, { useRef, useImperativeHandle,CSSProperties } from 'react';
|
|
3
4
|
import 'jb-select';
|
|
4
5
|
// eslint-disable-next-line no-duplicate-imports
|
|
5
6
|
import { JBSelectWebComponent } from 'jb-select';
|
|
6
7
|
import { EventProps, useEvents } from './events-hook.js';
|
|
8
|
+
import { useJBSelectAttribute, type JBSelectAttributes } from './attributes-hook.js';
|
|
7
9
|
export type JBSelectEventType<T> = T & {
|
|
8
10
|
target: JBSelectWebComponent
|
|
9
11
|
}
|
|
10
|
-
declare
|
|
12
|
+
declare module "react" {
|
|
11
13
|
// eslint-disable-next-line @typescript-eslint/no-namespace
|
|
12
14
|
namespace JSX {
|
|
13
15
|
interface IntrinsicElements {
|
|
@@ -24,70 +26,28 @@ declare global {
|
|
|
24
26
|
}
|
|
25
27
|
}
|
|
26
28
|
}
|
|
27
|
-
|
|
28
|
-
export const JBSelect = React.forwardRef((props:Props, ref) => {
|
|
29
|
+
export function JBSelect<TValue>(props:Props<TValue>) {
|
|
29
30
|
const element = useRef<JBSelectWebComponent>(null);
|
|
30
|
-
const [refChangeCount, refChangeCountSetter] = useState(0);
|
|
31
31
|
useImperativeHandle(
|
|
32
|
-
ref,
|
|
33
|
-
() => (element ? element.current :
|
|
32
|
+
props.ref,
|
|
33
|
+
() => (element ? element.current : undefined),
|
|
34
34
|
[element],
|
|
35
35
|
);
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}, [element.current]);
|
|
39
|
-
useEffect(() => {
|
|
40
|
-
if(element.current){
|
|
41
|
-
element.current.value = props.value;
|
|
42
|
-
}
|
|
43
|
-
}, [props.value]);
|
|
44
|
-
useEffect(() => {
|
|
45
|
-
if (typeof props.getSelectedValueDOM == "function" && element.current && element.current) {
|
|
46
|
-
element.current.callbacks.getSelectedValueDOM = props.getSelectedValueDOM;
|
|
47
|
-
}
|
|
48
|
-
}, [props.getSelectedValueDOM]);
|
|
49
|
-
useEffect(() => {
|
|
50
|
-
if (props.message !== null && props.message !== undefined ) {
|
|
51
|
-
element.current?.setAttribute("message", props.message);
|
|
52
|
-
}
|
|
53
|
-
}, [props.message]);
|
|
54
|
-
useEffect(() => {
|
|
55
|
-
if (props.placeholder !== null && props.placeholder !== undefined) {
|
|
56
|
-
element.current?.setAttribute("placeholder", props.placeholder);
|
|
57
|
-
}
|
|
58
|
-
}, [props.placeholder]);
|
|
59
|
-
useEffect(() => {
|
|
60
|
-
if (props.searchPlaceholder !== null && props.searchPlaceholder !== undefined) {
|
|
61
|
-
element.current?.setAttribute("search-placeholder", props.searchPlaceholder);
|
|
62
|
-
}
|
|
63
|
-
}, [props.searchPlaceholder]);
|
|
64
|
-
useEffect(() => {
|
|
65
|
-
if (props.error) {
|
|
66
|
-
element?.current?.setAttribute('error', props.error);
|
|
67
|
-
} else {
|
|
68
|
-
element?.current?.removeAttribute('error');
|
|
69
|
-
}
|
|
70
|
-
}, [props.error]);
|
|
36
|
+
|
|
37
|
+
|
|
71
38
|
useEvents(element,props);
|
|
39
|
+
useJBSelectAttribute(element,props);
|
|
72
40
|
return (
|
|
73
|
-
<jb-select style={props.style?props.style:undefined} class={props.className?props.className:""}
|
|
41
|
+
<jb-select style={props.style?props.style:undefined} class={props.className?props.className:""} ref={element}>
|
|
74
42
|
{props.children}
|
|
75
43
|
</jb-select>
|
|
76
44
|
);
|
|
77
|
-
}
|
|
45
|
+
};
|
|
78
46
|
|
|
79
|
-
export type Props = EventProps & {
|
|
47
|
+
export type Props<TValue> = EventProps & JBSelectAttributes<TValue> & {
|
|
48
|
+
ref?: React.RefObject<JBSelectWebComponent>,
|
|
80
49
|
style?:CSSProperties,
|
|
81
|
-
label?: string,
|
|
82
|
-
getSelectedValueDOM?: (option:any)=>HTMLElement,
|
|
83
|
-
value?: any,
|
|
84
|
-
required?: boolean,
|
|
85
|
-
message?: string,
|
|
86
|
-
placeholder?: string,
|
|
87
|
-
searchPlaceholder?: string,
|
|
88
50
|
className?: string,
|
|
89
51
|
children?:React.ReactNode,
|
|
90
|
-
name?:string,
|
|
91
|
-
error?:string,
|
|
92
52
|
}
|
|
93
53
|
JBSelect.displayName = 'JBSelect';
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { JBSelectWebComponent, type ValidationValue } from "jb-select";
|
|
2
|
+
import { type ValidationItem } from "jb-validation";
|
|
3
|
+
import { RefObject, useEffect } from "react";
|
|
4
|
+
|
|
5
|
+
export type JBSelectAttributes<TValue> = {
|
|
6
|
+
validationList?: ValidationItem<ValidationValue<TValue>>[],
|
|
7
|
+
name?: string,
|
|
8
|
+
label?: string,
|
|
9
|
+
error?: string,
|
|
10
|
+
value?: any,
|
|
11
|
+
message?: string,
|
|
12
|
+
placeholder?: string,
|
|
13
|
+
searchPlaceholder?: string,
|
|
14
|
+
required?: boolean,
|
|
15
|
+
getSelectedValueDOM?: (option: any) => HTMLElement,
|
|
16
|
+
|
|
17
|
+
}
|
|
18
|
+
export function useJBSelectAttribute<TValue>(element: RefObject<JBSelectWebComponent>, props: JBSelectAttributes<TValue>) {
|
|
19
|
+
useEffect(() => {
|
|
20
|
+
if (props.message !== null && props.message !== undefined) {
|
|
21
|
+
element.current?.setAttribute("message", props.message);
|
|
22
|
+
} else {
|
|
23
|
+
element.current?.removeAttribute("message");
|
|
24
|
+
}
|
|
25
|
+
}, [props.message]);
|
|
26
|
+
useEffect(() => {
|
|
27
|
+
if (element && element.current) {
|
|
28
|
+
element.current.validation.list = props.validationList || [];
|
|
29
|
+
}
|
|
30
|
+
}, [props.validationList]);
|
|
31
|
+
useEffect(() => {
|
|
32
|
+
if (props.label !== null && props.label !== undefined) {
|
|
33
|
+
element.current?.setAttribute("label", props.label);
|
|
34
|
+
} else {
|
|
35
|
+
element.current?.removeAttribute("label");
|
|
36
|
+
}
|
|
37
|
+
}, [props.label]);
|
|
38
|
+
|
|
39
|
+
useEffect(() => {
|
|
40
|
+
if (props.required !== null && props.required !== undefined) {
|
|
41
|
+
element.current?.setAttribute("required", "");
|
|
42
|
+
} else {
|
|
43
|
+
element.current?.removeAttribute("required");
|
|
44
|
+
}
|
|
45
|
+
}, [props.required]);
|
|
46
|
+
|
|
47
|
+
useEffect(() => {
|
|
48
|
+
if (props.placeholder !== null && props.placeholder !== undefined) {
|
|
49
|
+
element.current?.setAttribute("placeholder", props.placeholder);
|
|
50
|
+
}
|
|
51
|
+
}, [props.placeholder]);
|
|
52
|
+
useEffect(() => {
|
|
53
|
+
if (props.searchPlaceholder !== null && props.searchPlaceholder !== undefined) {
|
|
54
|
+
element.current?.setAttribute("search-placeholder", props.searchPlaceholder);
|
|
55
|
+
}
|
|
56
|
+
}, [props.searchPlaceholder]);
|
|
57
|
+
useEffect(() => {
|
|
58
|
+
if (props.error) {
|
|
59
|
+
element?.current?.setAttribute('error', props.error);
|
|
60
|
+
} else {
|
|
61
|
+
element?.current?.removeAttribute('error');
|
|
62
|
+
}
|
|
63
|
+
}, [props.error]);
|
|
64
|
+
|
|
65
|
+
useEffect(() => {
|
|
66
|
+
if (props.name) {
|
|
67
|
+
element?.current?.setAttribute('name', props.name || '');
|
|
68
|
+
} else {
|
|
69
|
+
element?.current?.removeAttribute('name');
|
|
70
|
+
}
|
|
71
|
+
}, [props.name]);
|
|
72
|
+
useEffect(() => {
|
|
73
|
+
if (element.current) {
|
|
74
|
+
element.current.value = props.value;
|
|
75
|
+
}
|
|
76
|
+
}, [props.value]);
|
|
77
|
+
useEffect(() => {
|
|
78
|
+
if (typeof props.getSelectedValueDOM == "function" && element.current && element.current) {
|
|
79
|
+
element.current.callbacks.getSelectedValueDOM = props.getSelectedValueDOM;
|
|
80
|
+
}
|
|
81
|
+
}, [props.getSelectedValueDOM]);
|
|
82
|
+
}
|