react-ui-basics 0.0.219 → 0.0.221

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.
Files changed (87) hide show
  1. package/Animated.js +1 -0
  2. package/Animated.js.map +1 -1
  3. package/Button.d.ts +24 -0
  4. package/Button.js +45 -75
  5. package/Button.js.map +1 -1
  6. package/DNDContainer.js +10 -5
  7. package/DNDContainer.js.map +1 -1
  8. package/DNDDraggable.d.ts +29 -0
  9. package/DNDDraggable.js +27 -44
  10. package/DNDDraggable.js.map +1 -1
  11. package/DNDDroppable.d.ts +28 -0
  12. package/DNDDroppable.js +32 -46
  13. package/DNDDroppable.js.map +1 -1
  14. package/Dialog.d.ts +29 -0
  15. package/Dialog.js +84 -143
  16. package/Dialog.js.map +1 -1
  17. package/DroppableHorizontalList.js +28 -27
  18. package/DroppableHorizontalList.js.map +1 -1
  19. package/DroppableList.js +29 -34
  20. package/DroppableList.js.map +1 -1
  21. package/Dropzone.js.map +1 -1
  22. package/FilteredList.d.ts +62 -0
  23. package/FilteredList.js +128 -232
  24. package/FilteredList.js.map +1 -1
  25. package/FormUploadProgress.d.ts +19 -0
  26. package/FormUploadProgress.js +14 -39
  27. package/FormUploadProgress.js.map +1 -1
  28. package/Modal.d.ts +31 -0
  29. package/Modal.js +102 -134
  30. package/Modal.js.map +1 -1
  31. package/ReactConstants.d.ts +6 -2
  32. package/ReactConstants.js +1 -1
  33. package/ReactConstants.js.map +1 -1
  34. package/ReactCreateElement.d.ts +3 -0
  35. package/ReactCreateElement.js.map +1 -1
  36. package/ReadyListener.d.ts +34 -0
  37. package/ReadyListener.js +34 -56
  38. package/ReadyListener.js.map +1 -1
  39. package/Scrollable.css +0 -1
  40. package/Scrollable.d.ts +33 -0
  41. package/Scrollable.js +308 -325
  42. package/Scrollable.js.map +1 -1
  43. package/ScrollableTable.d.ts +4 -2
  44. package/ScrollableTable.js +5 -6
  45. package/ScrollableTable.js.map +1 -1
  46. package/Table.js +1 -1
  47. package/Table.js.map +1 -1
  48. package/TextField.d.ts +36 -0
  49. package/TextField.js +73 -134
  50. package/TextField.js.map +1 -1
  51. package/Tools.d.ts +1 -1
  52. package/Tools.js +1 -1
  53. package/Tools.js.map +1 -1
  54. package/_virtual/_rollupPluginBabelHelpers.js +0 -15
  55. package/_virtual/_rollupPluginBabelHelpers.js.map +1 -1
  56. package/bundle.css +903 -904
  57. package/package.json +1 -1
  58. package/router/Route.js +1 -0
  59. package/router/Route.js.map +1 -1
  60. package/src/Button.tsx +96 -0
  61. package/src/DNDContainer.tsx +19 -10
  62. package/src/{DNDDraggable.js → DNDDraggable.tsx} +35 -9
  63. package/src/{DNDDroppable.js → DNDDroppable.tsx} +35 -8
  64. package/src/{Dialog.js → Dialog.tsx} +63 -44
  65. package/src/DroppableHorizontalList.js +33 -32
  66. package/src/DroppableList.js +34 -41
  67. package/src/Dropzone.tsx +1 -1
  68. package/src/{FilteredList.js → FilteredList.tsx} +95 -45
  69. package/src/{FormUploadProgress.js → FormUploadProgress.tsx} +13 -22
  70. package/src/{Modal.js → Modal.tsx} +48 -33
  71. package/src/ReactConstants.ts +14 -6
  72. package/src/ReactCreateElement.tsx +3 -0
  73. package/src/ReadyListener.tsx +58 -0
  74. package/src/Scrollable.css +0 -1
  75. package/src/Scrollable.scss +0 -1
  76. package/src/{Scrollable.js → Scrollable.tsx} +72 -60
  77. package/src/ScrollableTable.tsx +7 -7
  78. package/src/Table.tsx +3 -3
  79. package/src/{TextField.js → TextField.tsx} +42 -44
  80. package/src/Tools.ts +2 -2
  81. package/src/store/Store.test.js +1 -1
  82. package/src/store/Store.ts +3 -1
  83. package/store/Store.js +1 -0
  84. package/store/Store.js.map +1 -1
  85. package/src/Button.js +0 -98
  86. package/src/ReactCreateElement.js +0 -3
  87. package/src/ReadyListener.js +0 -48
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-ui-basics",
3
- "version": "0.0.219",
3
+ "version": "0.0.221",
4
4
  "description": "",
5
5
  "module": "index.js",
6
6
  "_main": "index.cjs.js",
package/router/Route.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import ReactConstants from "./../ReactConstants"; import {clientHeight as __clientHeight, clientWidth as __clientWidth, createAccessor as __createAccessor, data as __data, height as __height, left as __left, length as __length, pageX as __pageX, pageY as __pageY, props as __props, scrollLeft as __scrollLeft, scrollTop as __scrollTop, state as __state, style as __style, target as __target, top as __top, value as __value, width as __width} from "./../CommonFields"; import {toConsumableArray as __toConsumableArray} from "./../_virtual/_rollupPluginBabelHelpers"; import {extends as __extends} from "./../_virtual/_rollupPluginBabelHelpers"; import {inherits as __inherits} from "./../_virtual/_rollupPluginBabelHelpers"; import { inherits as _inherits, createSuper as _createSuper, createClass as _createClass, classCallCheck as _classCallCheck, assertThisInitialized as _assertThisInitialized, slicedToArray as _slicedToArray } from '../_virtual/_rollupPluginBabelHelpers.js';
2
2
  import React from 'react';
3
+ import '../ReactCreateElement.js';
3
4
  import 'prop-types';
4
5
  import { setOf, allPropsExcept, isDifferent, addEventListener, WINDOW, removeEventListener, orNoop } from '../Tools.js';
5
6
  import { stateGSs, componentDidUpdate, render, componentDidMount, componentWillUnmount, PureComponent, propsGetter, setState } from '../ReactConstants.js';
@@ -1 +1 @@
1
- {"version":3,"file":"Route.js","sources":["../src/router/Route.js"],"sourcesContent":["import React from 'react';\nimport ReactCreateElement from '../ReactCreateElement';\nimport PropTypes from 'prop-types';\nimport './HistoryTools'\nimport {allPropsExcept, isDifferent, orNoop, setOf, WINDOW, addEventListener, removeEventListener} from \"../Tools\";\nimport {componentDidUpdate, render, PureComponent, componentDidMount, componentWillUnmount, propsGetter, stateGSs, setState} from \"../ReactConstants\";\n\nconst historyEvents = ['popstate', 'pushState', 'replaceState'];\n\nconst cleanPath = (path) => {\n if (path.length > 1 && path.lastIndexOf('/') === path.length - 1)\n return path.substring(0, path.length - 1);\n\n return path;\n};\n\nconst createUrlMatcher = path => {\n let matcher;\n const segments = path.split('/');\n const optionals = segments.map(it => it === '*' || it.indexOf('?') === it.length - 1);\n const containsVariables = path.indexOf(':') !== -1;\n const containsAnySegment = path.indexOf('*') !== -1;\n const containsNot = path.indexOf('!') !== -1;\n\n if (!containsAnySegment && !containsVariables && !containsNot) {\n matcher = (p) => p === path\n } else {\n const endsWithAny = path.lastIndexOf('*') === path.length - 1;\n const matchers = segments.map((segment, i) => {\n let matcher;\n const variableNameIndex = segment.indexOf(':');\n if (segment === '*')\n matcher = () => true;\n else if (variableNameIndex !== -1) {\n let variable = segment.substring(variableNameIndex + 1);\n let regex = null\n if (variable.indexOf('?') !== -1)\n variable = variable.substring(0, variable.indexOf('?'));\n if (variable.indexOf('(') !== -1) {\n let regexStart = variable.indexOf('(');\n regex = new RegExp(variable.substring(regexStart))\n variable = variable.substring(0, regexStart);\n }\n\n const prefix = variableNameIndex && segment.substring(0, variableNameIndex);\n matcher = (p, params) => {\n if (regex && !!p && !p.match(regex))\n return false\n\n if (!p && !optionals[i])\n return false;\n if (prefix) {\n if (p.indexOf(prefix) === 0)\n p = p.substring(variableNameIndex);\n else\n return false;\n }\n\n params[variable] = p;\n return true;\n }\n } else if (segment.indexOf('!') === 0) {\n const not = segment.substring(1);\n matcher = (p) => p !== not;\n } else\n matcher = (p) => p === segment;\n return matcher;\n });\n\n matcher = (path, params) => {\n const segments = path.split('/');\n const length = Math.min(matchers.length, segments.length);\n\n // only exact match if mapping not ends with *\n if (!endsWithAny && matchers.length < segments.length)\n return false;\n\n // check that each segment matches\n for (let i = 0; i < length; i++) {\n if (!matchers[i](segments[i], params))\n return false;\n }\n\n // check that all other segments are optional\n for (let i = length; i < optionals.length; i++) {\n if (!optionals[i])\n return false;\n }\n\n return true;\n };\n }\n return matcher\n};\n\nconst createUrlMatchers = path => {\n if (Array.isArray(path)) {\n const matchers = path.map(it => createUrlMatcher(it));\n return (path, params) => {\n for (let i = 0; i < matchers.length; i++) {\n let props = {};\n if (matchers[i](path, props)) {\n Object.assign(params, props);\n return true;\n }\n }\n return false;\n }\n } else {\n return createUrlMatcher(path);\n }\n};\n\nconst selfProps = setOf([\n 'children',\n 'path',\n 'controller',\n 'onToggle',\n]);\n\nclass Route extends PureComponent {\n\n constructor(properties) {\n super(properties);\n const that = this;\n that.state = {};\n let matcher;\n\n const props = propsGetter(that);\n const [\n isRendering,\n paramsState,\n mergedPropsState,\n ] = stateGSs(that, 3);\n\n const process = () => {\n let params = {};\n let nextState = {};\n let isMatching = matcher(cleanPath(WINDOW.location.pathname), params);\n\n const toggle = isMatching !== isRendering();\n toggle && (nextState[isRendering] = isMatching);\n\n if (isDifferent(paramsState(), params)) {\n nextState[mergedPropsState] = Object.assign(allPropsExcept(props(), selfProps), params);\n nextState[paramsState] = params;\n }\n\n //set new state just once to avoid several renders\n setState(that, nextState, () => {\n toggle && orNoop(props().onToggle)(isMatching);\n })\n };\n\n that[componentDidUpdate] = (prevProps, prevState) => {\n if (props() !== prevProps) {\n let mergedProps = Object.assign(allPropsExcept(props(), selfProps), paramsState());\n if (isDifferent(mergedProps, mergedPropsState()))\n mergedPropsState(mergedProps);\n }\n };\n\n that[render] = () => {\n const {children, controller} = props();\n return (controller || DefaultController)(isRendering(), children, mergedPropsState());\n };\n\n that[componentDidMount] = () => {\n matcher = createUrlMatchers(props().path);\n\n historyEvents.forEach(it => {\n addEventListener(WINDOW, it, process);\n });\n process();\n };\n\n that[componentWillUnmount] = () => {\n historyEvents.forEach(it => {\n removeEventListener(WINDOW, it, process);\n });\n };\n }\n}\n\nif (window.isNotProductionEnvironment) {\n Route.propTypes = {\n path: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string)\n ]).isRequired,\n controller: PropTypes.func,\n onToggle: PropTypes.func,\n };\n}\n\nconst DefaultController = (matches, children, props) => {\n if (!matches || !children) return null;\n if (Object.keys(props).length > 0) {\n return React.Children.map(children, child => React.cloneElement(child, props));\n }\n return children;\n};\n\nexport default Route;"],"names":["historyEvents","cleanPath","path","length","lastIndexOf","substring","createUrlMatcher","matcher","segments","split","optionals","map","it","indexOf","containsVariables","containsAnySegment","containsNot","p","endsWithAny","matchers","segment","i","variableNameIndex","variable","regex","regexStart","RegExp","prefix","params","match","not","Math","min","createUrlMatchers","Array","isArray","props","Object","assign","selfProps","setOf","Route","_PureComponent","_inherits","_super","_createSuper","properties","_this","_classCallCheck","call","that","_assertThisInitialized","state","propsGetter","_stateGSs","stateGSs","_stateGSs2","_slicedToArray","isRendering","paramsState","mergedPropsState","process","nextState","isMatching","WINDOW","location","pathname","toggle","isDifferent","allPropsExcept","setState","orNoop","onToggle","componentDidUpdate","prevProps","prevState","mergedProps","render","_props","children","controller","DefaultController","componentDidMount","forEach","addEventListener","componentWillUnmount","removeEventListener","_createClass","PureComponent","matches","keys","React","Children","child","cloneElement"],"mappings":"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"}
1
+ {"version":3,"file":"Route.js","sources":["../src/router/Route.js"],"sourcesContent":["import React from 'react';\nimport ReactCreateElement from '../ReactCreateElement';\nimport PropTypes from 'prop-types';\nimport './HistoryTools'\nimport {allPropsExcept, isDifferent, orNoop, setOf, WINDOW, addEventListener, removeEventListener} from \"../Tools\";\nimport {componentDidUpdate, render, PureComponent, componentDidMount, componentWillUnmount, propsGetter, stateGSs, setState} from \"../ReactConstants\";\n\nconst historyEvents = ['popstate', 'pushState', 'replaceState'];\n\nconst cleanPath = (path) => {\n if (path.length > 1 && path.lastIndexOf('/') === path.length - 1)\n return path.substring(0, path.length - 1);\n\n return path;\n};\n\nconst createUrlMatcher = path => {\n let matcher;\n const segments = path.split('/');\n const optionals = segments.map(it => it === '*' || it.indexOf('?') === it.length - 1);\n const containsVariables = path.indexOf(':') !== -1;\n const containsAnySegment = path.indexOf('*') !== -1;\n const containsNot = path.indexOf('!') !== -1;\n\n if (!containsAnySegment && !containsVariables && !containsNot) {\n matcher = (p) => p === path\n } else {\n const endsWithAny = path.lastIndexOf('*') === path.length - 1;\n const matchers = segments.map((segment, i) => {\n let matcher;\n const variableNameIndex = segment.indexOf(':');\n if (segment === '*')\n matcher = () => true;\n else if (variableNameIndex !== -1) {\n let variable = segment.substring(variableNameIndex + 1);\n let regex = null\n if (variable.indexOf('?') !== -1)\n variable = variable.substring(0, variable.indexOf('?'));\n if (variable.indexOf('(') !== -1) {\n let regexStart = variable.indexOf('(');\n regex = new RegExp(variable.substring(regexStart))\n variable = variable.substring(0, regexStart);\n }\n\n const prefix = variableNameIndex && segment.substring(0, variableNameIndex);\n matcher = (p, params) => {\n if (regex && !!p && !p.match(regex))\n return false\n\n if (!p && !optionals[i])\n return false;\n if (prefix) {\n if (p.indexOf(prefix) === 0)\n p = p.substring(variableNameIndex);\n else\n return false;\n }\n\n params[variable] = p;\n return true;\n }\n } else if (segment.indexOf('!') === 0) {\n const not = segment.substring(1);\n matcher = (p) => p !== not;\n } else\n matcher = (p) => p === segment;\n return matcher;\n });\n\n matcher = (path, params) => {\n const segments = path.split('/');\n const length = Math.min(matchers.length, segments.length);\n\n // only exact match if mapping not ends with *\n if (!endsWithAny && matchers.length < segments.length)\n return false;\n\n // check that each segment matches\n for (let i = 0; i < length; i++) {\n if (!matchers[i](segments[i], params))\n return false;\n }\n\n // check that all other segments are optional\n for (let i = length; i < optionals.length; i++) {\n if (!optionals[i])\n return false;\n }\n\n return true;\n };\n }\n return matcher\n};\n\nconst createUrlMatchers = path => {\n if (Array.isArray(path)) {\n const matchers = path.map(it => createUrlMatcher(it));\n return (path, params) => {\n for (let i = 0; i < matchers.length; i++) {\n let props = {};\n if (matchers[i](path, props)) {\n Object.assign(params, props);\n return true;\n }\n }\n return false;\n }\n } else {\n return createUrlMatcher(path);\n }\n};\n\nconst selfProps = setOf([\n 'children',\n 'path',\n 'controller',\n 'onToggle',\n]);\n\nclass Route extends PureComponent {\n\n constructor(properties) {\n super(properties);\n const that = this;\n that.state = {};\n let matcher;\n\n const props = propsGetter(that);\n const [\n isRendering,\n paramsState,\n mergedPropsState,\n ] = stateGSs(that, 3);\n\n const process = () => {\n let params = {};\n let nextState = {};\n let isMatching = matcher(cleanPath(WINDOW.location.pathname), params);\n\n const toggle = isMatching !== isRendering();\n toggle && (nextState[isRendering] = isMatching);\n\n if (isDifferent(paramsState(), params)) {\n nextState[mergedPropsState] = Object.assign(allPropsExcept(props(), selfProps), params);\n nextState[paramsState] = params;\n }\n\n //set new state just once to avoid several renders\n setState(that, nextState, () => {\n toggle && orNoop(props().onToggle)(isMatching);\n })\n };\n\n that[componentDidUpdate] = (prevProps, prevState) => {\n if (props() !== prevProps) {\n let mergedProps = Object.assign(allPropsExcept(props(), selfProps), paramsState());\n if (isDifferent(mergedProps, mergedPropsState()))\n mergedPropsState(mergedProps);\n }\n };\n\n that[render] = () => {\n const {children, controller} = props();\n return (controller || DefaultController)(isRendering(), children, mergedPropsState());\n };\n\n that[componentDidMount] = () => {\n matcher = createUrlMatchers(props().path);\n\n historyEvents.forEach(it => {\n addEventListener(WINDOW, it, process);\n });\n process();\n };\n\n that[componentWillUnmount] = () => {\n historyEvents.forEach(it => {\n removeEventListener(WINDOW, it, process);\n });\n };\n }\n}\n\nif (window.isNotProductionEnvironment) {\n Route.propTypes = {\n path: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string)\n ]).isRequired,\n controller: PropTypes.func,\n onToggle: PropTypes.func,\n };\n}\n\nconst DefaultController = (matches, children, props) => {\n if (!matches || !children) return null;\n if (Object.keys(props).length > 0) {\n return React.Children.map(children, child => React.cloneElement(child, props));\n }\n return children;\n};\n\nexport default Route;"],"names":["historyEvents","cleanPath","path","length","lastIndexOf","substring","createUrlMatcher","matcher","segments","split","optionals","map","it","indexOf","containsVariables","containsAnySegment","containsNot","p","endsWithAny","matchers","segment","i","variableNameIndex","variable","regex","regexStart","RegExp","prefix","params","match","not","Math","min","createUrlMatchers","Array","isArray","props","Object","assign","selfProps","setOf","Route","_PureComponent","_inherits","_super","_createSuper","properties","_this","_classCallCheck","call","that","_assertThisInitialized","state","propsGetter","_stateGSs","stateGSs","_stateGSs2","_slicedToArray","isRendering","paramsState","mergedPropsState","process","nextState","isMatching","WINDOW","location","pathname","toggle","isDifferent","allPropsExcept","setState","orNoop","onToggle","componentDidUpdate","prevProps","prevState","mergedProps","render","_props","children","controller","DefaultController","componentDidMount","forEach","addEventListener","componentWillUnmount","removeEventListener","_createClass","PureComponent","matches","keys","React","Children","child","cloneElement"],"mappings":"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"}
package/src/Button.tsx ADDED
@@ -0,0 +1,96 @@
1
+ import React, {FocusEventHandler, MouseEventHandler, ReactElement, ReactNode} from 'react';
2
+ import ReactCreateElement from './ReactCreateElement';
3
+ import './Button.css'
4
+ import {classNames, DOCUMENT, addEventListener, createRef, orNoop} from "./Tools";
5
+ import {PureComponent, render, stateGS, props} from "./ReactConstants";
6
+
7
+ export interface ButtonProps {
8
+ flat?: boolean,
9
+ raised?: boolean,
10
+ round?: boolean,
11
+ disabled?: boolean,
12
+ withRipple?: boolean,
13
+ type?: 'button' | 'submit' | 'reset',
14
+ className?: string,
15
+ onClick?: MouseEventHandler,
16
+ onFocus?: FocusEventHandler,
17
+ style?: any,
18
+ children?: ReactNode,
19
+ }
20
+
21
+ class Button extends PureComponent<ButtonProps> {
22
+ static defaultProps = {
23
+ type: 'button',
24
+ withRipple: true,
25
+ }
26
+
27
+ constructor(properties) {
28
+ super(properties);
29
+
30
+ const that = this;
31
+ const el = createRef<HTMLButtonElement>();
32
+ const ripple = createRef<HTMLSpanElement>();
33
+
34
+ const rippleClassName = stateGS<string>(that);
35
+
36
+ const onMouseDown = (e) => {
37
+ if (!props(that).withRipple) return;
38
+
39
+ const rect = el().getBoundingClientRect();
40
+ const rippleElement = ripple();
41
+ const style = rippleElement.style;
42
+ const body = DOCUMENT.body;
43
+
44
+ style.height = style.width = Math.max(rect.width, rect.height) + 'px';
45
+ style.top = (e.pageY - rect.top - rippleElement.offsetHeight / 2 - body.scrollTop) + 'px';
46
+ style.left = (e.pageX - rect.left - rippleElement.offsetWidth / 2 - body.scrollLeft) + 'px';
47
+
48
+ rippleClassName('show');
49
+
50
+ addEventListener(rippleElement, 'animationend', () => {
51
+ rippleClassName('showed');
52
+ });
53
+ };
54
+
55
+ const onFocus = e => {
56
+ orNoop(props(that).onFocus)(e)
57
+ if (rippleClassName() === 'show')
58
+ return
59
+
60
+ const rect = el().getBoundingClientRect();
61
+ const style = ripple().style;
62
+
63
+ let size = Math.max(rect.width, rect.height) * 0.8
64
+ style.height = style.width = size + 'px';
65
+ style.top = (rect.height / 2 - size / 2) + 'px';
66
+ style.left = (rect.width / 2 - size / 2) + 'px';
67
+
68
+ rippleClassName('focused');
69
+ }
70
+
71
+ that[render] = () => {
72
+ const {children, type, className, onClick, flat, raised = !flat, round, style, disabled} = props(that);
73
+ return (
74
+ <button className={classNames('Button',
75
+ className,
76
+ disabled && 'disabled',
77
+ raised && 'raised',
78
+ flat && 'flat',
79
+ round && 'round')
80
+ }
81
+ onFocus={onFocus}
82
+ disabled={disabled}
83
+ style={style}
84
+ type={type}
85
+ onClick={onClick}
86
+ onMouseDown={onMouseDown}
87
+ ref={el}>
88
+ {children}
89
+ <span className={classNames(`ripple`, rippleClassName())} ref={ripple}/>
90
+ </button>
91
+ );
92
+ }
93
+ }
94
+ }
95
+
96
+ export default Button;
@@ -18,6 +18,8 @@ import {
18
18
  UNDEFINED
19
19
  } from "./Tools";
20
20
  import {propsGetter, render, componentDidMount} from "./ReactConstants";
21
+ import Droppable from "./DNDDroppable";
22
+ import Draggable from "./DNDDraggable";
21
23
 
22
24
  const clearSelection = () => {
23
25
  const getSelection = WINDOW.getSelection;
@@ -113,9 +115,9 @@ class DNDContainer extends Component<DNDContainerProps, DNDContainerState> {
113
115
  draggable = null;
114
116
  };
115
117
 
116
- const draggableInitializer = (item) => {
118
+ const draggableInitializer = (item: Draggable) => {
117
119
  const handle = item.props.handle;
118
- const draggableElement = (handle && item.element.childNodes[0]) || item.element;
120
+ const draggableElement: HTMLElement = ((handle && item.element.firstElementChild as HTMLElement) || item.element);
119
121
  draggableElement.draggable = true;
120
122
 
121
123
  const dragStartListener = (e) => {
@@ -131,7 +133,7 @@ class DNDContainer extends Component<DNDContainerProps, DNDContainerState> {
131
133
  item.width = itemOffset.width;
132
134
  item.height = itemOffset.height;
133
135
 
134
- let clone = orNoop(item.props.copy)((it) => {
136
+ let clone = orNoop(item.props.copy)((it: Draggable) => {
135
137
  let style = it.element.style;
136
138
 
137
139
  const offsetLeft = totalOffsetLeft(container) + (e.clientX - itemOffset.left);
@@ -177,7 +179,7 @@ class DNDContainer extends Component<DNDContainerProps, DNDContainerState> {
177
179
  }
178
180
  }
179
181
  onDragStart(e);
180
- setTimeout(() => item.setState({placeholder: true}), 1)
182
+ return setTimeout(() => item.setState({placeholder: true}), 1)
181
183
  };
182
184
  addListener(draggableElement, item, 'dragend', (e) => {
183
185
  if (item.state.placeholder)
@@ -232,7 +234,7 @@ class DNDContainer extends Component<DNDContainerProps, DNDContainerState> {
232
234
  });
233
235
  }
234
236
 
235
- const droppableInitializer = (item) => {
237
+ const droppableInitializer = (item: Droppable) => {
236
238
  droppables.push(item);
237
239
 
238
240
  addEventListener(item.element, 'drop', (e) => {
@@ -242,27 +244,34 @@ class DNDContainer extends Component<DNDContainerProps, DNDContainerState> {
242
244
  data && orNoop(item.props.onDrop)(data);
243
245
  }
244
246
  }, false);
245
- addEventListener(item.element, 'dragenter', (e) => {
247
+ addEventListener(item.element, 'mouseenter', (e) => {
248
+ if(!draggable)
249
+ return
250
+
246
251
  if (item.state.allow) {
247
252
  preventDefault(e);
248
253
  item.isHover(e, draggable, true)
249
254
  }
250
255
  });
251
- addEventListener(item.element, 'dragleave', (e) => {
256
+ addEventListener(item.element, 'mouseleave', (e) => {
257
+ if(!draggable)
258
+ return
259
+
252
260
  if (item.state.allow) {
253
261
  preventDefault(e);
254
262
  item.isHover(e, draggable, false)
255
263
  }
256
264
  });
257
265
 
258
- item.onDragStart = (e, draggable) => {
266
+ item.onDragStart = (e, draggable: Draggable) => {
259
267
  item.bounds = item.element.getBoundingClientRect();
260
268
  let allow = (orNoop(item.props.onDragStart)(e, data));
261
269
  if (allow === UNDEFINED)
262
270
  allow = true
263
- item.setState({allow});
271
+ item.setState({allow: allow as boolean});
272
+ item.isHover(e, draggable)
264
273
  };
265
- item.isHover = (e, draggable, hover) => {
274
+ item.isHover = (e, draggable, hover?: boolean) => {
266
275
  const bounds = item.bounds;
267
276
  if (!bounds)
268
277
  return;
@@ -1,4 +1,4 @@
1
- import ReactConstants from "./../ReactConstants"; import {clientHeight as __clientHeight, clientWidth as __clientWidth, createAccessor as __createAccessor, data as __data, height as __height, left as __left, length as __length, pageX as __pageX, pageY as __pageY, props as __props, scrollLeft as __scrollLeft, scrollTop as __scrollTop, state as __state, style as __style, target as __target, top as __top, value as __value, width as __width} from "./../CommonFields"; import {toConsumableArray as __toConsumableArray} from "./../_virtual/_rollupPluginBabelHelpers"; import {extends as __extends} from "./../_virtual/_rollupPluginBabelHelpers"; import {inherits as __inherits} from "./../_virtual/_rollupPluginBabelHelpers"; import React from 'react';
1
+ import React, {MouseEventHandler} from 'react';
2
2
  import ReactCreateElement from './ReactCreateElement';
3
3
  import {classNames, orNoop, ref} from "./Tools";
4
4
  import {componentDidUpdate, props, state, render, children, className, componentDidMount, componentWillUnmount, PureComponent} from "./ReactConstants";
@@ -12,35 +12,61 @@ const hover = 'hover',
12
12
 
13
13
  const init = that => orNoop(props(that)[initializer])(that);
14
14
 
15
- class Draggable extends PureComponent {
15
+ interface DraggableProps {
16
+ id: string | number
17
+ data: any
18
+ copy?: (initializer: (it: Draggable) => Draggable, classname: string, item: Draggable) => Draggable
19
+ onClick?: MouseEventHandler<HTMLDivElement>
20
+ children?: React.ReactNode
21
+ className?: string,
22
+ handle?: React.ReactNode
23
+ initializer?: (draggable: Draggable) => void
24
+ }
25
+
26
+ interface DraggableState {
27
+ dragged?: boolean,
28
+ placeholder?: boolean,
29
+ hover?: boolean,
30
+ }
31
+
32
+ abstract class AbstractDraggable extends PureComponent<DraggableProps, DraggableState> {
33
+ onUnmount?: () => void
34
+ element: HTMLDivElement
35
+ width: number;
36
+ height: number;
37
+ createPositionListener: (e, style, itemOffset, container) => any;
38
+ initDraggedStyles: (style, itemOffset) => void;
39
+ }
40
+
41
+ class Draggable extends AbstractDraggable {
16
42
 
17
43
  constructor(properties) {
18
44
  super(properties);
19
45
  const that = this;
20
46
  that.state = {};
21
- that[ReactConstants[2]] = (prevProps) => {
47
+ that[componentDidUpdate] = (prevProps) => {
22
48
  if (prevProps[handle] !== props(that)[handle] || prevProps[initializer] !== props(that)[initializer])
23
49
  init(that)
24
50
  };
25
- that[ReactConstants[0]] = () => {
51
+ that[componentDidMount] = () => {
26
52
  init(that)
27
53
  };
28
- that[ReactConstants[1]] = () => {
54
+ that[componentWillUnmount] = () => {
29
55
  orNoop(that.onUnmount)();
30
56
  };
31
- that[ReactConstants[3]] = () => {
57
+ that[render] = () => {
32
58
  const _state = state(that),
33
59
  _props = props(that);
34
- return <div className={classNames('Draggable', _props[ReactConstants[5]],
60
+ return <div className={classNames('Draggable', _props[className],
35
61
  _state[dragged] && dragged,
36
62
  _state[placeholder] && placeholder,
37
63
  _state[hover] && hover,
38
64
  )}
39
- onClick={_props[ReactConstants[6]]}
65
+ onClick={_props.onClick}
40
66
  ref={ref('element', that)}
41
67
  >
42
68
  {_props[handle]}
43
- {_props[ReactConstants[4]]}
69
+ {_props[children]}
44
70
  </div>;
45
71
  }
46
72
  }
@@ -1,7 +1,8 @@
1
- import ReactConstants from "./../ReactConstants"; import {clientHeight as __clientHeight, clientWidth as __clientWidth, createAccessor as __createAccessor, data as __data, height as __height, left as __left, length as __length, pageX as __pageX, pageY as __pageY, props as __props, scrollLeft as __scrollLeft, scrollTop as __scrollTop, state as __state, style as __style, target as __target, top as __top, value as __value, width as __width} from "./../CommonFields"; import {toConsumableArray as __toConsumableArray} from "./../_virtual/_rollupPluginBabelHelpers"; import {extends as __extends} from "./../_virtual/_rollupPluginBabelHelpers"; import {inherits as __inherits} from "./../_virtual/_rollupPluginBabelHelpers"; import React from 'react';
1
+ import React from 'react';
2
2
  import ReactCreateElement from './ReactCreateElement';
3
3
  import {classNames, orNoop, ref, preventDefault, stopPropagation} from "./Tools";
4
4
  import {componentDidMount, componentDidUpdate, render, props, state, componentWillUnmount, children, className, PureComponent} from "./ReactConstants";
5
+ import Draggable from "./DNDDraggable";
5
6
 
6
7
  const hover = 'hover',
7
8
  allow = 'allow',
@@ -10,32 +11,58 @@ const hover = 'hover',
10
11
 
11
12
  const init = that => orNoop(props(that)[initializer])(that);
12
13
 
13
- class Droppable extends PureComponent {
14
+ interface DroppableProps {
15
+ children?: React.ReactNode
16
+ className?: string,
17
+ initializer?: (draggable: Droppable) => void
18
+ onDrop?: (data: any) => void
19
+ onHover?: (e, draggable: Draggable) => void
20
+ onDragStart?: (e, data: any) => boolean
21
+ }
22
+
23
+ interface DroppableState {
24
+ allow?: boolean,
25
+ hover?: boolean,
26
+ }
27
+
28
+ abstract class AbstractDroppable extends PureComponent<DroppableProps, DroppableState> {
29
+ onUnmount?: () => void
30
+ element: HTMLDivElement
31
+ onDragStart: (e, draggable: Draggable) => void
32
+ bounds: DOMRect
33
+ isHover: (e, draggable: Draggable, hover?: boolean) => void;
34
+ onDragEnd: () => void;
35
+ dropIfHover: () => void;
36
+ }
37
+
38
+ class Droppable extends AbstractDroppable {
39
+
14
40
 
15
41
  constructor(properties) {
16
42
  super(properties);
17
43
  const that = this;
44
+ that.state = {}
18
45
 
19
- that[ReactConstants[2]] = (prevProps) => {
46
+ that[componentDidUpdate] = (prevProps) => {
20
47
  if (prevProps[initializer] !== props(that)[initializer])
21
48
  init(that)
22
49
  };
23
50
 
24
- that[ReactConstants[0]] = () => {
51
+ that[componentDidMount] = () => {
25
52
  init(that)
26
53
  };
27
54
 
28
- that[ReactConstants[1]] = () => {
55
+ that[componentWillUnmount] = () => {
29
56
  orNoop(that.onUnmount)();
30
57
  };
31
58
 
32
- that[ReactConstants[3]] = () => {
59
+ that[render] = () => {
33
60
  const _props = props(that),
34
61
  _state = state(that);
35
62
  return <div className={
36
63
  classNames(
37
64
  'Droppable',
38
- _props[ReactConstants[5]],
65
+ _props[className],
39
66
  _state[hover] && hover,
40
67
  _state[allow] && allow,
41
68
  )}
@@ -46,7 +73,7 @@ class Droppable extends PureComponent {
46
73
  }
47
74
  }}
48
75
  ref={ref('element', that)}>
49
- {_props[ReactConstants[4]]}
76
+ {_props[children]}
50
77
  </div>;
51
78
  };
52
79
  }
@@ -1,18 +1,36 @@
1
- import ReactConstants from "./../ReactConstants"; import {clientHeight as __clientHeight, clientWidth as __clientWidth, createAccessor as __createAccessor, data as __data, height as __height, left as __left, length as __length, pageX as __pageX, pageY as __pageY, props as __props, scrollLeft as __scrollLeft, scrollTop as __scrollTop, state as __state, style as __style, target as __target, top as __top, value as __value, width as __width} from "./../CommonFields"; import {toConsumableArray as __toConsumableArray} from "./../_virtual/_rollupPluginBabelHelpers"; import {extends as __extends} from "./../_virtual/_rollupPluginBabelHelpers"; import {inherits as __inherits} from "./../_virtual/_rollupPluginBabelHelpers"; import './Dialog.css'; import React, {Component} from 'react';
1
+ import React, {MouseEventHandler, ReactElement} from 'react';
2
2
  import ReactCreateElement from './ReactCreateElement';
3
3
  import './Dialog.css'
4
4
  import Button from "./Button";
5
5
  import Modal from "./Modal";
6
6
  import {isUndefined, orNoop, preventDefault, ref, UNDEFINED, classNames, createRef} from "./Tools";
7
7
  import {PureComponent, render, componentDidMount, propsGetter, stateGSs} from "./ReactConstants";
8
- import PropTypes from "prop-types";
9
8
 
10
- class Dialog extends PureComponent {
9
+
10
+ type StringOrReactElement = string | ReactElement;
11
+
12
+ export interface DialogProps {
13
+ title?: StringOrReactElement,
14
+ description?: StringOrReactElement,
15
+ accept?: StringOrReactElement,
16
+ cancel?: StringOrReactElement,
17
+ className?: string,
18
+ top?: number,
19
+ onAccept?: MouseEventHandler,
20
+ onCancel?: MouseEventHandler,
21
+ }
22
+
23
+ class Dialog extends PureComponent<DialogProps> {
24
+ static defaultProps = {
25
+ accept: 'Accept',
26
+ cancel: 'Decline',
27
+ }
28
+
11
29
  constructor(properties) {
12
30
  super(properties);
13
31
 
14
- this[ReactConstants[3]] = () => {
15
- const {title, description, accept, cancel, onAccept, onCancel, children} = __props(this);
32
+ this[render] = () => {
33
+ const {title, description, accept, cancel, onAccept, onCancel, children} = this.props;
16
34
  return <div className="Dialog">
17
35
  {title && <div className="title">{title}</div>}
18
36
  {description && <div className="description">{description}</div>}
@@ -26,16 +44,34 @@ class Dialog extends PureComponent {
26
44
  }
27
45
  }
28
46
 
29
- Dialog.defaultProps = {
30
- accept: 'Accept',
31
- cancel: 'Decline',
32
- };
33
47
 
34
48
  const throwIfPropExists = (key, props) => {
35
49
  if (props[key]) throw Error(key + " was already set by props")
36
50
  };
37
51
 
38
- class DialogWrapper extends Component {
52
+ export type OpenDialogFn = (
53
+ onAccept?: MouseEventHandler,
54
+ onCancel?: MouseEventHandler,
55
+ title?: StringOrReactElement,
56
+ description?: StringOrReactElement,
57
+ accept?: StringOrReactElement,
58
+ cancel?: StringOrReactElement
59
+ ) => void;
60
+
61
+ export type CloseDialogFn = () => void;
62
+
63
+ abstract class AbstractDialogWrapper extends PureComponent<DialogWrapperProps> {
64
+ open: OpenDialogFn
65
+ close: CloseDialogFn
66
+ }
67
+
68
+ export interface DialogWrapperProps extends DialogProps {
69
+ show?: boolean,
70
+ open?: (open: OpenDialogFn) => void,
71
+ close?: (close: CloseDialogFn) => void,
72
+ }
73
+
74
+ class DialogWrapper extends AbstractDialogWrapper {
39
75
 
40
76
  constructor(properties) {
41
77
  super(properties);
@@ -43,8 +79,8 @@ class DialogWrapper extends Component {
43
79
  that.state = {};
44
80
 
45
81
  const props = propsGetter(that);
46
- const openRef = createRef();
47
- const closeRef = createRef();
82
+ const openRef = createRef<() => void>();
83
+ const closeRef = createRef<() => void>();
48
84
 
49
85
  const [titleState,
50
86
  descriptionState,
@@ -52,9 +88,9 @@ class DialogWrapper extends Component {
52
88
  onCancelState,
53
89
  acceptState,
54
90
  cancelState
55
- ] = stateGSs(that, 6);
91
+ ] = stateGSs<[StringOrReactElement, StringOrReactElement, MouseEventHandler, MouseEventHandler, StringOrReactElement, StringOrReactElement]>(that, 6);
56
92
 
57
- const onCancel = (e) => {
93
+ const onCancel = (e?) => {
58
94
  preventDefault(e);
59
95
  orNoop(props().onCancel || onCancelState())();
60
96
  closeRef()();
@@ -66,8 +102,8 @@ class DialogWrapper extends Component {
66
102
  closeRef()();
67
103
  };
68
104
 
69
- that[ReactConstants[3]] = () => {
70
- const {top, className, ...other} = props();
105
+ that[render] = () => {
106
+ const {top, className} = props();
71
107
  return (
72
108
  <Modal
73
109
  top={top}
@@ -76,7 +112,15 @@ class DialogWrapper extends Component {
76
112
  close={closeRef}
77
113
  onClose={onCancel}
78
114
  >
79
- <Dialog title={titleState()} description={descriptionState()} accept={acceptState()} cancel={cancelState()} {...other} onAccept={onAccept} onCancel={onCancel}/>
115
+ <Dialog
116
+ title={titleState()}
117
+ description={descriptionState()}
118
+ accept={acceptState()}
119
+ cancel={cancelState()}
120
+ {...props()}
121
+ onAccept={onAccept}
122
+ onCancel={onCancel}
123
+ />
80
124
  </Modal>
81
125
  );
82
126
  };
@@ -117,7 +161,7 @@ class DialogWrapper extends Component {
117
161
  openRef()();
118
162
  };
119
163
 
120
- that[ReactConstants[0]] = () => {
164
+ that[componentDidMount] = () => {
121
165
  const _props = props();
122
166
  orNoop(_props.open)(that.open);
123
167
  orNoop(_props.close)(closeRef());
@@ -126,29 +170,4 @@ class DialogWrapper extends Component {
126
170
  }
127
171
  }
128
172
 
129
- export default DialogWrapper;
130
-
131
- if (process.env.NODE_ENV !== 'production') {
132
- DialogWrapper.propTypes = {
133
- title: PropTypes.oneOfType([
134
- PropTypes.string,
135
- PropTypes.element
136
- ]),
137
- description: PropTypes.oneOfType([
138
- PropTypes.string,
139
- PropTypes.element
140
- ]),
141
- accept: PropTypes.oneOfType([
142
- PropTypes.string,
143
- PropTypes.element
144
- ]),
145
- cancel: PropTypes.oneOfType([
146
- PropTypes.string,
147
- PropTypes.element
148
- ]),
149
- onAccept: PropTypes.func,
150
- onCancel: PropTypes.func,
151
- [ReactConstants[5]]: PropTypes.string,
152
- top: PropTypes.number,
153
- };
154
- }
173
+ export default DialogWrapper;