@dvrd/dvr-controls 1.0.85 → 1.0.86

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": "@dvrd/dvr-controls",
3
- "version": "1.0.85",
3
+ "version": "1.0.86",
4
4
  "description": "Custom web controls",
5
5
  "main": "index.ts",
6
6
  "files": [
@@ -25,12 +25,12 @@
25
25
  ]
26
26
  },
27
27
  "peerDependencies": {
28
- "react": "^18.2.0",
29
- "react-dom": "^18.2.0",
30
- "react-router-dom": "6.15.0"
28
+ "react": "^19.0.0",
29
+ "react-dom": "^19.0.0",
30
+ "react-router": "^7.1.3"
31
31
  },
32
32
  "dependencies": {
33
- "@dvrd/idate": "^1.8.6",
33
+ "@dvrd/idate": "^1.8.8",
34
34
  "@fortawesome/fontawesome-svg-core": "6.5.2",
35
35
  "@fortawesome/free-brands-svg-icons": "6.5.2",
36
36
  "@fortawesome/free-regular-svg-icons": "6.5.2",
@@ -44,9 +44,9 @@
44
44
  "@types/lodash.merge": "^4.6.7",
45
45
  "@types/lodash.mergewith": "^4.6.7",
46
46
  "@types/node": "18.14.0",
47
- "@types/react": "^18.2.28",
47
+ "@types/react": "^19.0.8",
48
48
  "@types/react-color": "2.13.5",
49
- "@types/react-dom": "^18.0.11",
49
+ "@types/react-dom": "^19.0.3",
50
50
  "@types/uuid": "9.0.0",
51
51
  "classnames": "2.5.1",
52
52
  "dompurify": "3.0.0",
@@ -59,7 +59,7 @@
59
59
  "react-color": "2.19.3",
60
60
  "react-rnd": "10.4.1",
61
61
  "swiper": "^11.1.4",
62
- "typescript": "4.9.5",
62
+ "typescript": "5.6.3",
63
63
  "uuid": "9.0.0"
64
64
  }
65
65
  }
@@ -110,9 +110,9 @@ export default function DvrdCheckbox(props: Props) {
110
110
  }
111
111
 
112
112
  function renderCheck() {
113
- if (React.isValidElement(checkIcon)) return React.cloneElement((checkIcon as React.ReactElement), {
114
- className: classNames(checkIcon.props.className, checkClassName),
115
- style: {...checkIcon.props.style, ...checkStyle}
113
+ if (React.isValidElement(checkIcon)) return React.cloneElement((checkIcon as React.ReactElement<any>), {
114
+ className: classNames((checkIcon as React.ReactElement<any>).props.className, checkClassName),
115
+ style: {...(checkIcon as React.ReactElement<any>).props.style, ...checkStyle}
116
116
  });
117
117
  else if (checked === 'partial') return (
118
118
  <div className={classNames(checkClassName, 'partial-icon')} style={partialCheckStyle}/>
@@ -61,7 +61,7 @@ export default class DialogController extends PureComponent<Props, State> {
61
61
  render = () => {
62
62
  const {className} = this.props;
63
63
  return <WithEvents events={this.getEvents()}>
64
- {Object.values(this.state.dialogs).map((element: ReactElement, key: number) => (
64
+ {Object.values(this.state.dialogs).map((element: ReactElement<any>, key: number) => (
65
65
  <Fragment key={key}>
66
66
  {React.cloneElement(element, {className})}
67
67
  </Fragment>
@@ -2,7 +2,7 @@
2
2
  * Copyright (c) 2024. Dave van Rijn Development
3
3
  */
4
4
 
5
- import React, {PureComponent, ReactElement} from 'react';
5
+ import {PureComponent, ReactElement} from 'react';
6
6
 
7
7
  interface Props {
8
8
  children?: any;
@@ -19,7 +19,7 @@ export default class DVRHead extends PureComponent<Props> {
19
19
  }
20
20
  };
21
21
 
22
- private includeChild = (child: ReactElement) => {
22
+ private includeChild = (child: ReactElement<any>) => {
23
23
  const {type, props} = child,
24
24
  elem = document.createElement(type as keyof HTMLElementTagNameMap);
25
25
  for (const key of Object.keys(props)) {
@@ -15,8 +15,8 @@ import { IconName } from '@fortawesome/fontawesome-svg-core';
15
15
 
16
16
  export interface HeaderItem {
17
17
  label?: string;
18
- component?: React.ReactElement;
19
- icon?: IconName | React.ReactElement;
18
+ component?: React.ReactElement<any>;
19
+ icon?: IconName | React.ReactElement<any>;
20
20
  iconOnly?: boolean;
21
21
  forceBar?: boolean;
22
22
  onClick: MouseEventHandler | null;
@@ -243,7 +243,7 @@ export default class DVRHeader extends PureComponent<Props, State> {
243
243
  if (iconOnly) {
244
244
  if (typeof icon === 'string') renderAble.toRender = <AwesomeIcon name={icon} className={className}/>;
245
245
  // Type cast since props are checked by constructor
246
- else renderAble.toRender = React.cloneElement((icon as React.ReactElement), {className});
246
+ else renderAble.toRender = React.cloneElement((icon as React.ReactElement<any>), {className});
247
247
  } else if (component !== undefined) {
248
248
  renderAble.isComp = true;
249
249
  renderAble.toRender = React.cloneElement(component, {className});
@@ -2,7 +2,7 @@
2
2
  * Copyright (c) 2024. Dave van Rijn Development
3
3
  */
4
4
 
5
- import React, {CSSProperties, MouseEventHandler, useContext, useMemo} from 'react';
5
+ import React, {CSSProperties, MouseEventHandler, ReactElement, useContext, useMemo} from 'react';
6
6
  import {HeaderItem} from "../../util/interfaces";
7
7
  import {ControlContext} from "../../util/controlContext";
8
8
  import classNames from 'classnames';
@@ -32,7 +32,8 @@ export default function DvrdHeader(props: Props) {
32
32
  function renderItem(item: HeaderItem, index: number) {
33
33
  const {label} = item;
34
34
  if (React.isValidElement(label))
35
- return React.cloneElement(label, Object.assign(label.props, {onClick: onClickItem(item), key: index}));
35
+ return React.cloneElement(label,
36
+ Object.assign((label as ReactElement<any>).props, {onClick: onClickItem(item), key: index}));
36
37
  return (
37
38
  <div key={index} className={classNames('dvrd-header-item', itemClassName)} onClick={onClickItem(item)}
38
39
  style={itemStyle}>
@@ -3,7 +3,7 @@
3
3
  */
4
4
 
5
5
  import React, {MouseEventHandler} from 'react';
6
- import {useNavigate} from 'react-router-dom';
6
+ import {useNavigate} from 'react-router';
7
7
  import {HeaderItem} from "../../util/interfaces";
8
8
  import DvrdHeader from "./dvrdHeader";
9
9
 
@@ -13,7 +13,7 @@ interface Props extends DVRInputControllerProps {
13
13
  typingTime: number;
14
14
  randomise: boolean;
15
15
  doBackspace: boolean;
16
- Input?: ReactElement;
16
+ Input?: ReactElement<any>;
17
17
  className?: string;
18
18
  }
19
19
 
@@ -23,7 +23,7 @@ interface Props {
23
23
  onClickItem?: (item: NavigationItem) => MouseEventHandler;
24
24
  navigationItems: Array<NavigationItem>;
25
25
  className?: string;
26
- menuIcon?: ReactElement;
26
+ menuIcon?: ReactElement<any>;
27
27
  id?: string;
28
28
  keepOpen?: true;
29
29
  }
@@ -3,7 +3,7 @@
3
3
  */
4
4
 
5
5
  import React from 'react';
6
- import {useNavigate} from 'react-router-dom';
6
+ import {useNavigate} from 'react-router';
7
7
  import {debug} from '../util/miscUtil';
8
8
 
9
9
  export default function AppNavigator() {
@@ -15,7 +15,7 @@ import {getScreenHeight, getScreenWidth} from '../util/responsiveUtil';
15
15
  interface Props {
16
16
  onClickOption?: (option: React.ReactNode | OptionsMenuItem, evt: React.MouseEvent) => void;
17
17
  onClickOptionIcon?: Function;
18
- optionsComponent?: React.ReactElement;
18
+ optionsComponent?: React.ReactElement<any>;
19
19
  options: OptionsMenuItem[];
20
20
  placement: MenuPlacement;
21
21
  containerClass?: string;
@@ -185,7 +185,7 @@ function DVRDGroupedSelect(props: Props, ref: ForwardedRef<GroupedSelectRef>) {
185
185
  function renderValueCustom() {
186
186
  if (selectedLabel === null || searchable) return null; // Nothing selected, or using a search input
187
187
  if (['string', 'number'].includes(typeof selectedLabel)) return null; // Not a custom element
188
- const element = selectedLabel as React.ReactElement;
188
+ const element = selectedLabel as React.ReactElement<any>;
189
189
  return React.cloneElement(element, {
190
190
  ...element.props,
191
191
  className: classNames(element.props?.className, 'grouped-select-value')
@@ -245,7 +245,7 @@ function DVRDGroupedSelect(props: Props, ref: ForwardedRef<GroupedSelectRef>) {
245
245
  }
246
246
  }
247
247
 
248
- function renderCustomLabel(label: React.ReactElement, padding: string, isGroupHead: boolean, isSelectable: boolean,
248
+ function renderCustomLabel(label: React.ReactElement<any>, padding: string, isGroupHead: boolean, isSelectable: boolean,
249
249
  isSelected: boolean) {
250
250
  const style = label.props?.style ?? {};
251
251
  return React.cloneElement(label, {
@@ -170,7 +170,7 @@ export default function DvrdMultiSelect(props: Props) {
170
170
  onClick={onClickItem(value)}>{isSelected &&
171
171
  <AwesomeIcon name='check' className='check-icon'/>} {label}</label>
172
172
  );
173
- const labelElement: ReactElement = label as ReactElement;
173
+ const labelElement: ReactElement<any> = label as ReactElement;
174
174
  const onClick = (evt: React.MouseEvent) => {
175
175
  onClickItem(value)(evt);
176
176
  labelElement.props.onClick?.(evt);
@@ -152,7 +152,7 @@ export default class DvrdSelect extends PureComponent<Props, State> {
152
152
  <label key={index} className={classNames('dvrd-select-item', itemClassName)}
153
153
  onClick={this.onClickItem(value)}>{label}</label>
154
154
  );
155
- const labelElement: ReactElement = label as ReactElement;
155
+ const labelElement: ReactElement<any> = label as ReactElement;
156
156
  const onClick = (evt: React.MouseEvent) => {
157
157
  this.onClickItem(value)(evt);
158
158
  labelElement.props.onClick?.(evt);
@@ -4,7 +4,7 @@
4
4
  import './style/sidebarMenu.scss';
5
5
 
6
6
  import React, {MouseEventHandler, ReactNode, useContext, useEffect, useRef, useState} from 'react';
7
- import {NavLink, useLocation} from 'react-router-dom';
7
+ import {NavLink, useLocation} from 'react-router';
8
8
  import {SidebarItem, SideMenuMode} from '../util/interfaces';
9
9
  import classNames from 'classnames';
10
10
  import {AwesomeIcon, generateComponentId, isAbsoluteLink} from '../../../index';
@@ -132,8 +132,8 @@ export default function SidebarMenu(props: Props) {
132
132
  if (icon) {
133
133
  if (typeof icon === 'string') return <AwesomeIcon name={icon as IconName} className={className}/>;
134
134
  else if (React.isValidElement(icon))
135
- return React.cloneElement((icon as React.ReactElement),
136
- {className: classNames(className, icon.props.className)});
135
+ return React.cloneElement((icon as React.ReactElement<any>),
136
+ {className: classNames(className, (icon.props as any).className)});
137
137
  }
138
138
  if (label.length) {
139
139
  if (isChild) return <span/>;
@@ -43,9 +43,9 @@ export default function Snackbar(props: Props) {
43
43
  if (typeof text === 'string')
44
44
  element = <label className={classNames('snackbar-text', textClass)} style={textStyle}>{text}</label>;
45
45
  else if (text) {
46
- const className = classNames(text.props?.className, 'snackbar-text', textClass);
47
- const style = {...text.props?.style, ...textStyle};
48
- element = React.cloneElement(text, {className, style});
46
+ const className = classNames((text.props as any)?.className, 'snackbar-text', textClass);
47
+ const style = {...(text.props as any)?.style, ...textStyle};
48
+ element = React.cloneElement(text as any, {className, style});
49
49
  }
50
50
  return element;
51
51
  }
@@ -168,15 +168,15 @@ export default function DvrdInput(props: Props) {
168
168
  return <span className={classNames('dvrd-input-ornament', ornamentClassName)}
169
169
  onClick={onClickElement}>{ornament.element}</span>;
170
170
  else return React.cloneElement(ornament.element, {
171
- className: classNames(ornament.element.props.className, ornamentClassName),
171
+ className: classNames((ornament.element.props as any).className, ornamentClassName),
172
172
  onClick: (evt: React.MouseEvent) => {
173
173
  onClickElement(evt);
174
174
  if (React.isValidElement(ornament.element)) {
175
- const element: React.ReactElement = ornament.element;
175
+ const element: React.ReactElement<any> = ornament.element;
176
176
  element.props.onClick?.(evt);
177
177
  }
178
178
  }
179
- });
179
+ } as any);
180
180
  }
181
181
 
182
182
  useEffect(() => {
@@ -46,7 +46,7 @@ export interface ColorSet {
46
46
 
47
47
  export interface OrnamentShape {
48
48
  placement?: ElementPosition;
49
- element: React.ReactElement | string;
49
+ element: React.ReactElement<any> | string;
50
50
  allowPropagation?: boolean;
51
51
  }
52
52