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.
@@ -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":["","","",""],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MACY,6BAAuB,cAAA,WAAqB,CAAA,OAAM,QAAO;CAkBrE,MAAO,UAAM,kBAAY,KAAG;AAC1B,gCAAgB,KAAkD,MAAK,UAAA,QAAA,UAAA,WAAA,CACvE,OAKA,EAAA;sBACM,MAAA;MACF,QAAQ,WAAQ,MAAA,QAAa,MAAM,WAAU,CAC/C,SAAA,QAAA,aAAA,MAAA;CAEF,GAAA,CACE,MAAI;AAGN,sBAAU,MAAA;AACV,MAAA,QAAe,kBAAA,MAAA,YAAA,WACT,SAAQ,QAAO,YAAW,YAAc,MAAI,SAAU;KAGxD,MAAM,UACV;sBAEI,MAAA;AACF,MAAA,QAAA,kBAAA,MAAA,YAAA,WACE,SAAM,QAAa,YAAW,YAAA,MAAA,SAAA;CAKlC,GAAA,CAQF,MAAa;;;;;;;;;;ACzCP,SAAU,UAAU,SAA0C,OAAiB;AACnF,6BAAS,SAAS,QAAQ,MAAM,QAAQ,KAAK;AAC7C,6BAAS,SAAS,QAAQ,MAAM,QAAQ,KAAK;AAC7C,6BAAS,SAAS,SAAS,MAAM,QAAQ;AACzC,6BAAS,SAAS,UAAU,MAAM,SAAS;AAC3C,6BAAS,SAAS,SAAS,MAAM,QAAQ;AAC3C;;;;MClBqB,yBAAiB,cAAkB,WAAA,CAAA,OAAA,QAAA;CAsBxD,MAAO,UAAM,kBAAW,KAAM;CAC5B,MAAM,CAAA,gBAAuC,qBAAK,GAAA,oBAAA,EAAA;AAClD,gCAAO,KAAgB,MAAA,UAAA,QAAwB,UAAU,CAAC,GAAA,CAC1D,OAKA,EAAA;sBACE,MAAA;AACE,uBAAiB,iBAAA,EAAA;CACrB,GAAA,CACE,QAAG;sBAEH,MAAA;AACE,MAAA,QAAY,QAChB,SAAe,QAAA,QAAA,MAAA;KAGb,MAAA,KACD,EAAA;AACD,sBAAU,MAAG;AACX,aAAU,MAAO,uBAAmB,cAAY,QAAY,WAAA,QAAA,QAC1D,SAAQ,QAAO,UAAE,sBAA8B,MAAO;CAEzD,GAAE,CACH,MAAU;sBAEN,MAAA;AACF,MAAA,MAAA,YAAA,QAAA,MAAA,YAAA,UACE,SAAM,SAAa,aAAA,WAAA,MAAA,QAAA;WAGnB;AAEJ,sBAAU,MAAA;AACV,MAAA,MAAa,gBAAE,QAAA,MAAA,gBAAA,UACT,SAAM,SAAO,aAAA,eAAA,MAAA,YAAA;WAEV;sBAEP,MAAA;AACE,MAAA,MAAM,sBAAO,QAAA,MAAA,sBAAA,UACjB,SAAU,SAAc,aAAA,sBAAA,MAAA,kBAAA;CAMxB,GAAA,CAgBM,MAAC;;;;;;;;;;;;;;;;;;;MC3FG,yBAAuB,cAAA,WAAmB,CAAqC,OAAM,QAAO;CAgBxG,MAAO,UAAM,kBAAW,KAAM;CAC5B,MAAM,EAAA,OAAO,UAAwC,UAAK,GAAA,MAAA,GAAA;AAC1D,gCAAa,KAAS,MAAA,UAAc,QAAK,UAAQ,WAAA,CACjD,OAMA,EAAA;sBACM,MAAA;MACF,QAAQ,WAAQ,UAAa,UAC/B,SAAA,QAAA,QAAA;CAGF,GAAA,CAKA,OAOM"}
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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"}
@@ -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 global {
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 global {
9
+ declare module "react" {
9
10
  // eslint-disable-next-line @typescript-eslint/no-namespace
10
11
  namespace JSX {
11
12
  interface IntrinsicElements {
@@ -1,13 +1,15 @@
1
+ 'use client'
1
2
  /* eslint-disable react/display-name */
2
- import React, { useEffect, useRef, useState, useImperativeHandle,CSSProperties } from '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 global {
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
- useEffect(() => {
37
- refChangeCountSetter(refChangeCount + 1);
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:""} label={props.label} ref={element} required={props.required || 'false'} name={props.name??undefined}>
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
+ }