react-ui-basics 0.0.186 → 0.0.188

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 (83) hide show
  1. package/Animated.js +20 -20
  2. package/Animated.js.map +1 -1
  3. package/AutocompleteSelect.js +56 -63
  4. package/AutocompleteSelect.js.map +1 -1
  5. package/Button.js +11 -11
  6. package/Button.js.map +1 -1
  7. package/Checkbox.js +7 -7
  8. package/Checkbox.js.map +1 -1
  9. package/CircleProgress.js.map +1 -1
  10. package/CommonFields.js.map +1 -1
  11. package/DNDContainer.js +1 -1
  12. package/DNDDraggable.js +6 -6
  13. package/DNDDraggable.js.map +1 -1
  14. package/DNDDroppable.js +4 -4
  15. package/DNDDroppable.js.map +1 -1
  16. package/DatePicker.css +1 -1
  17. package/Dialog.js +19 -19
  18. package/Dialog.js.map +1 -1
  19. package/DropFileInput.js +5 -5
  20. package/DropFileInput.js.map +1 -1
  21. package/DroppableHorizontalList.js +2 -2
  22. package/DroppableHorizontalList.js.map +1 -1
  23. package/DroppableList.js +2 -2
  24. package/DroppableList.js.map +1 -1
  25. package/Dropzone.js +10 -10
  26. package/Dropzone.js.map +1 -1
  27. package/FilteredList.css +2 -2
  28. package/FilteredList.js +22 -22
  29. package/FilteredList.js.map +1 -1
  30. package/FloatingActionButton.js +4 -4
  31. package/FloatingActionButton.js.map +1 -1
  32. package/FormUploadProgress.js +6 -6
  33. package/FormUploadProgress.js.map +1 -1
  34. package/ImageGallery.js +24 -28
  35. package/ImageGallery.js.map +1 -1
  36. package/MaterialIcon.js +1 -1
  37. package/MaterialIcon.js.map +1 -1
  38. package/Modal.js +14 -15
  39. package/Modal.js.map +1 -1
  40. package/ModalMenu.js +1 -1
  41. package/ModalMenu.js.map +1 -1
  42. package/ReactConstants.d.ts +3 -3
  43. package/ReactConstants.js.map +1 -1
  44. package/ReactCreateElement.js.map +1 -1
  45. package/ReadyListener.js +5 -5
  46. package/ReadyListener.js.map +1 -1
  47. package/Scrollable.js +3 -3
  48. package/Scrollable.js.map +1 -1
  49. package/Size.js.map +1 -1
  50. package/Snackbar.js +5 -5
  51. package/Snackbar.js.map +1 -1
  52. package/SpinningProgress.js.map +1 -1
  53. package/Switch.js +8 -8
  54. package/Switch.js.map +1 -1
  55. package/Table.css +1 -1
  56. package/Table.d.ts +28 -14
  57. package/Table.js +11 -9
  58. package/Table.js.map +1 -1
  59. package/TextField.css +7 -7
  60. package/TextField.js +28 -28
  61. package/TextField.js.map +1 -1
  62. package/Tools.d.ts +14 -5
  63. package/Tools.js +9 -13
  64. package/Tools.js.map +1 -1
  65. package/_virtual/_rollupPluginBabelHelpers.js.map +1 -1
  66. package/bundle.css +778 -778
  67. package/package.json +34 -32
  68. package/router/HistoryTools.js.map +1 -1
  69. package/router/Link.js +2 -2
  70. package/router/Link.js.map +1 -1
  71. package/router/NavLink.js +4 -4
  72. package/router/NavLink.js.map +1 -1
  73. package/router/Route.js +8 -8
  74. package/router/Route.js.map +1 -1
  75. package/router/index.js.map +1 -1
  76. package/src/DatePicker.css +1 -1
  77. package/src/FilteredList.css +2 -2
  78. package/src/ReactConstants.ts +3 -3
  79. package/src/Table.css +1 -1
  80. package/src/Table.tsx +61 -34
  81. package/src/TextField.css +7 -7
  82. package/src/Tools.ts +24 -11
  83. package/store/ProxyTools.js.map +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-ui-basics",
3
- "version": "0.0.186",
3
+ "version": "0.0.188",
4
4
  "description": "",
5
5
  "module": "index.js",
6
6
  "_main": "index.cjs.js",
@@ -41,52 +41,54 @@
41
41
  "homepage": "https://github.com/wizzardo/react-ui-basics",
42
42
  "license": "MIT",
43
43
  "devDependencies": {
44
- "@babel/core": "^7.17.7",
45
- "@babel/plugin-external-helpers": "^7.16.7",
46
- "@babel/plugin-proposal-class-properties": "^7.16.7",
47
- "@babel/plugin-proposal-decorators": "^7.17.2",
48
- "@babel/plugin-proposal-do-expressions": "^7.16.7",
49
- "@babel/plugin-proposal-export-default-from": "^7.16.7",
50
- "@babel/plugin-proposal-function-bind": "^7.16.7",
51
- "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7",
52
- "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7",
53
- "@babel/plugin-proposal-optional-chaining": "^7.16.7",
54
- "@babel/plugin-proposal-pipeline-operator": "^7.17.6",
55
- "@babel/plugin-proposal-private-property-in-object": "^7.16.7",
44
+ "@babel/core": "^7.19.6",
45
+ "@babel/plugin-external-helpers": "^7.18.6",
46
+ "@babel/plugin-proposal-class-properties": "^7.18.6",
47
+ "@babel/plugin-proposal-decorators": "^7.19.6",
48
+ "@babel/plugin-proposal-do-expressions": "^7.18.6",
49
+ "@babel/plugin-proposal-export-default-from": "^7.18.10",
50
+ "@babel/plugin-proposal-function-bind": "^7.18.9",
51
+ "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9",
52
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6",
53
+ "@babel/plugin-proposal-optional-chaining": "^7.18.9",
54
+ "@babel/plugin-proposal-pipeline-operator": "^7.18.9",
55
+ "@babel/plugin-proposal-private-property-in-object": "^7.18.6",
56
56
  "@babel/plugin-syntax-dynamic-import": "^7.8.3",
57
- "@babel/plugin-transform-runtime": "^7.17.0",
58
- "@babel/preset-env": "^7.16.11",
59
- "@babel/preset-react": "^7.16.7",
60
- "@rollup/plugin-typescript": "^8.3.1",
61
- "@storybook/addon-actions": "^6.4.19",
62
- "@storybook/addon-controls": "^6.4.19",
63
- "@storybook/addon-links": "^6.4.19",
64
- "@storybook/addon-storysource": "^6.4.19",
65
- "@storybook/addons": "^6.4.19",
66
- "@storybook/react": "^6.4.19",
67
- "@storybook/source-loader": "^6.4.19",
68
- "babel-loader": "^8.2.3",
57
+ "@babel/plugin-transform-runtime": "^7.19.6",
58
+ "@babel/preset-env": "^7.19.4",
59
+ "@babel/preset-react": "^7.18.6",
60
+ "@rollup/plugin-typescript": "^9.0.1",
61
+ "@storybook/addon-actions": "6.4.19",
62
+ "@storybook/addon-controls": "6.4.19",
63
+ "@storybook/addon-links": "6.4.19",
64
+ "@storybook/addon-storysource": "6.4.19",
65
+ "@storybook/addons": "6.4.19",
66
+ "@storybook/react": "6.4.19",
67
+ "@storybook/source-loader": "6.4.19",
68
+ "@types/react": "^17.0.50",
69
+ "@types/react-dom": "^17.0.17",
70
+ "babel-loader": "^8.2.5",
69
71
  "babel-plugin-transform-react-remove-prop-types": "^0.4.24",
70
- "core-js": "^3.21.1",
72
+ "core-js": "^3.25.5",
71
73
  "enzyme": "^3.11.0",
72
74
  "enzyme-adapter-react-16": "^1.15.6",
73
75
  "jest-enzyme": "^7.1.2",
74
76
  "npm-run-all": "^4.1.5",
75
77
  "react": "^16.11.0",
76
78
  "react-dom": "^16.11.0",
77
- "react-scripts": "^4.0.3",
78
- "react-test-renderer": "^16.8.6",
79
- "rollup": "^2.70.1",
79
+ "react-scripts": "4.0.3",
80
+ "react-test-renderer": "^16.11.0",
81
+ "rollup": "^2.79.1",
80
82
  "rollup-plugin-babel": "^4.4.0",
81
83
  "rollup-plugin-cleanup": "^3.2.1",
82
84
  "rollup-plugin-commonjs": "^10.1.0",
83
- "rollup-plugin-dts": "^4.2.0",
85
+ "rollup-plugin-dts": "^4.2.3",
84
86
  "rollup-plugin-json": "^4.0.0",
85
87
  "rollup-plugin-node-resolve": "^5.2.0",
86
88
  "rollup-plugin-replace": "^2.2.0",
87
89
  "rollup-plugin-scss": "^3.0.0",
88
- "sass": "^1.49.9",
89
- "typescript": "^4.6.2"
90
+ "sass": "^1.55.0",
91
+ "typescript": "^4.8.4"
90
92
  },
91
93
  "browserslist": {
92
94
  "production": [
@@ -1 +1 @@
1
- {"version":3,"file":"HistoryTools.js","sources":["../src/router/HistoryTools.js"],"sourcesContent":["import {DOCUMENT, WINDOW} from \"../Tools\";\n\nconst history = WINDOW.history;\n\nconst events = ['pushState', 'replaceState'];\nevents.forEach(e => {\n var original = history[e];\n history[e] = function () {\n original.apply(history, arguments);\n fireEvent(e);\n }\n});\n\nconst fireEvent = (name) => {\n const event = DOCUMENT.createEvent('Event');\n event.initEvent(name, true, true);\n WINDOW.dispatchEvent(event);\n};\n\nexport const pushLocation = (path) => path !== WINDOW.location.pathname && history[events[0]](null, null, path);\n\nexport const replaceLocation = (path) => history[events[1]](null, null, path);\n\nif (window['isNotProductionEnvironment']) {\n // will be removed in production build\n // needed only to prevent bundler to remove 'unused' functions\n window['history-tools'] = {\n replaceLocation\n }\n}"],"names":["history","WINDOW","events","forEach","e","original","apply","arguments","fireEvent","name","event","DOCUMENT","createEvent","initEvent","dispatchEvent","pushLocation","path","location","pathname","replaceLocation","window"],"mappings":";;AAEA,IAAMA,OAAO,GAAGC,MAAM,CAACD,OAAvB,CAAA;AAEA,IAAME,MAAM,GAAG,CAAC,WAAD,EAAc,cAAd,CAAf,CAAA;AACAA,MAAM,CAACC,OAAP,CAAe,UAAAC,CAAC,EAAI;AAChB,EAAA,IAAIC,QAAQ,GAAGL,OAAO,CAACI,CAAD,CAAtB,CAAA;AACAJ,EAAAA,OAAO,CAACI,CAAD,CAAP,GAAa,YAAY;AACrBC,IAAAA,QAAQ,CAACC,KAAT,CAAeN,OAAf,EAAwBO,SAAxB,CAAA,CAAA;AACAC,IAAAA,SAAS,CAACJ,CAAD,CAAT,CAAA;AACH,GAHD,CAAA;AAIH,CAND,CAAA,CAAA;AAQA,IAAMI,SAAS,GAAG,SAAZA,SAAY,CAACC,IAAD,EAAU;AACxB,EAAA,IAAMC,KAAK,GAAGC,QAAQ,CAACC,WAAT,CAAqB,OAArB,CAAd,CAAA;AACAF,EAAAA,KAAK,CAACG,SAAN,CAAgBJ,IAAhB,EAAsB,IAAtB,EAA4B,IAA5B,CAAA,CAAA;AACAR,EAAAA,MAAM,CAACa,aAAP,CAAqBJ,KAArB,CAAA,CAAA;AACH,CAJD,CAAA;IAMaK,YAAY,GAAG,SAAfA,YAAe,CAACC,IAAD,EAAA;AAAA,EAAUA,OAAAA,IAAI,KAAKf,MAAM,CAACgB,QAAP,CAAgBC,QAAzB,IAAqClB,OAAO,CAACE,MAAM,CAAC,CAAD,CAAP,CAAP,CAAmB,IAAnB,EAAyB,IAAzB,EAA+Bc,IAA/B,CAA/C,CAAA;AAAA,EAArB;IAEMG,eAAe,GAAG,SAAlBA,eAAkB,CAACH,IAAD,EAAA;AAAA,EAAA,OAAUhB,OAAO,CAACE,MAAM,CAAC,CAAD,CAAP,CAAP,CAAmB,IAAnB,EAAyB,IAAzB,EAA+Bc,IAA/B,CAAV,CAAA;AAAA,EAAxB;AAEP,IAAII,MAAM,CAAC,4BAAD,CAAV,EAA0C;AAGtCA,EAAAA,MAAM,CAAC,eAAD,CAAN,GAA0B;AACtBD,IAAAA,eAAe,EAAfA,eAAAA;AADsB,GAA1B,CAAA;AAGH;;;;"}
1
+ {"version":3,"file":"HistoryTools.js","sources":["../src/router/HistoryTools.js"],"sourcesContent":["import {DOCUMENT, WINDOW} from \"../Tools\";\n\nconst history = WINDOW.history;\n\nconst events = ['pushState', 'replaceState'];\nevents.forEach(e => {\n var original = history[e];\n history[e] = function () {\n original.apply(history, arguments);\n fireEvent(e);\n }\n});\n\nconst fireEvent = (name) => {\n const event = DOCUMENT.createEvent('Event');\n event.initEvent(name, true, true);\n WINDOW.dispatchEvent(event);\n};\n\nexport const pushLocation = (path) => path !== WINDOW.location.pathname && history[events[0]](null, null, path);\n\nexport const replaceLocation = (path) => history[events[1]](null, null, path);\n\nif (window['isNotProductionEnvironment']) {\n // will be removed in production build\n // needed only to prevent bundler to remove 'unused' functions\n window['history-tools'] = {\n replaceLocation\n }\n}"],"names":["history","WINDOW","events","forEach","e","original","apply","arguments","fireEvent","name","event","DOCUMENT","createEvent","initEvent","dispatchEvent","pushLocation","path","location","pathname","replaceLocation","window"],"mappings":";;AAEA,IAAMA,OAAO,GAAGC,MAAM,CAACD,OAAO,CAAA;AAE9B,IAAME,MAAM,GAAG,CAAC,WAAW,EAAE,cAAc,CAAC,CAAA;AAC5CA,MAAM,CAACC,OAAO,CAAC,UAAAC,CAAC,EAAI;AAChB,EAAA,IAAIC,QAAQ,GAAGL,OAAO,CAACI,CAAC,CAAC,CAAA;AACzBJ,EAAAA,OAAO,CAACI,CAAC,CAAC,GAAG,YAAY;AACrBC,IAAAA,QAAQ,CAACC,KAAK,CAACN,OAAO,EAAEO,SAAS,CAAC,CAAA;IAClCC,SAAS,CAACJ,CAAC,CAAC,CAAA;GACf,CAAA;AACL,CAAC,CAAC,CAAA;AAEF,IAAMI,SAAS,GAAG,SAAZA,SAAS,CAAIC,IAAI,EAAK;AACxB,EAAA,IAAMC,KAAK,GAAGC,QAAQ,CAACC,WAAW,CAAC,OAAO,CAAC,CAAA;EAC3CF,KAAK,CAACG,SAAS,CAACJ,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AACjCR,EAAAA,MAAM,CAACa,aAAa,CAACJ,KAAK,CAAC,CAAA;AAC/B,CAAC,CAAA;IAEYK,YAAY,GAAG,SAAfA,YAAY,CAAIC,IAAI,EAAA;EAAA,OAAKA,IAAI,KAAKf,MAAM,CAACgB,QAAQ,CAACC,QAAQ,IAAIlB,OAAO,CAACE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAEc,IAAI,CAAC,CAAA;AAAA,EAAA;IAElGG,eAAe,GAAG,SAAlBA,eAAe,CAAIH,IAAI,EAAA;AAAA,EAAA,OAAKhB,OAAO,CAACE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAEc,IAAI,CAAC,CAAA;AAAA,EAAA;AAE7E,IAAII,MAAM,CAAC,4BAA4B,CAAC,EAAE;EAGtCA,MAAM,CAAC,eAAe,CAAC,GAAG;AACtBD,IAAAA,eAAe,EAAfA,eAAAA;GACH,CAAA;AACL;;;;"}
package/router/Link.js CHANGED
@@ -6,8 +6,8 @@ import { preventDefault } from '../Tools.js';
6
6
 
7
7
  var Link = function Link(_ref) {
8
8
  var children = _ref[ReactConstants[4]],
9
- href = _ref.href,
10
- className = _ref[ReactConstants[5]];
9
+ href = _ref.href,
10
+ className = _ref[ReactConstants[5]];
11
11
  return ReactCreateElement("a", {
12
12
  href: href,
13
13
  [ReactConstants[5]]: className,
@@ -1 +1 @@
1
- {"version":3,"file":"Link.js","sources":["../src/router/Link.js"],"sourcesContent":["import React from 'react';\nimport ReactCreateElement from '../ReactCreateElement';\nimport PropTypes from 'prop-types';\nimport './HistoryTools'\nimport {pushLocation} from \"./HistoryTools\";\nimport {preventDefault} from \"../Tools\";\n\nconst Link = ({children, href, className}) =>\n <a href={href} className={className} onClick={(e) => {\n if (!e.ctrlKey) {\n preventDefault(e);\n pushLocation(href);\n }\n }}>{children}</a>;\n\nif (window.isNotProductionEnvironment) {\n Link.propTypes = {\n href: PropTypes.string.isRequired,\n };\n}\n\nexport default Link;"],"names":["Link","children","href","className","e","ctrlKey","preventDefault","pushLocation","window","isNotProductionEnvironment","propTypes","PropTypes","string","isRequired"],"mappings":";;;;;;AAOA,IAAMA,IAAI,GAAG,SAAPA,IAAO,CAAA,IAAA,EAAA;AAAA,EAAEC,IAAAA,QAAF,QAAEA,QAAF;AAAA,MAAYC,IAAZ,QAAYA,IAAZ;AAAA,MAAkBC,SAAlB,QAAkBA,SAAlB,CAAA;AAAA,EACT,OAAA,kBAAA,CAAA,GAAA,EAAA;AAAG,IAAA,IAAI,EAAED,IAAT;AAAe,IAAA,SAAS,EAAEC,SAA1B;AAAqC,IAAA,OAAO,EAAE,SAACC,OAAAA,CAAAA,CAAD,EAAO;AACjD,MAAA,IAAI,CAACA,CAAC,CAACC,OAAP,EAAgB;AACZC,QAAAA,cAAc,CAACF,CAAD,CAAd,CAAA;AACAG,QAAAA,YAAY,CAACL,IAAD,CAAZ,CAAA;AACH,OAAA;AACJ,KAAA;AALD,GAAA,EAKID,QALJ,CADS,CAAA;AAAA,CAAb,CAAA;AAQA,IAAIO,MAAM,CAACC,0BAAX,EAAuC;AACnCT,EAAAA,IAAI,CAACU,SAAL,GAAiB;AACbR,IAAAA,IAAI,EAAES,SAAS,CAACC,MAAV,CAAiBC,UAAAA;AADV,GAAjB,CAAA;AAGH,CAAA;AAED,aAAeb,IAAf;;;;"}
1
+ {"version":3,"file":"Link.js","sources":["../src/router/Link.js"],"sourcesContent":["import React from 'react';\nimport ReactCreateElement from '../ReactCreateElement';\nimport PropTypes from 'prop-types';\nimport './HistoryTools'\nimport {pushLocation} from \"./HistoryTools\";\nimport {preventDefault} from \"../Tools\";\n\nconst Link = ({children, href, className}) =>\n <a href={href} className={className} onClick={(e) => {\n if (!e.ctrlKey) {\n preventDefault(e);\n pushLocation(href);\n }\n }}>{children}</a>;\n\nif (window.isNotProductionEnvironment) {\n Link.propTypes = {\n href: PropTypes.string.isRequired,\n };\n}\n\nexport default Link;"],"names":["Link","children","href","className","e","ctrlKey","preventDefault","pushLocation","window","isNotProductionEnvironment","propTypes","PropTypes","string","isRequired"],"mappings":";;;;;;AAOA,IAAMA,IAAI,GAAG,SAAPA,IAAI,CAAA,IAAA,EAAA;EAAA,IAAKC,QAAQ,QAARA,QAAQ;AAAEC,IAAAA,IAAI,QAAJA,IAAI;AAAEC,IAAAA,SAAS,QAATA,SAAS,CAAA;EAAA,OACpC,kBAAA,CAAA,GAAA,EAAA;AAAG,IAAA,IAAI,EAAED,IAAK;AAAC,IAAA,SAAS,EAAEC,SAAU;IAAC,OAAO,EAAE,SAACC,OAAAA,CAAAA,CAAC,EAAK;AACjD,MAAA,IAAI,CAACA,CAAC,CAACC,OAAO,EAAE;QACZC,cAAc,CAACF,CAAC,CAAC,CAAA;QACjBG,YAAY,CAACL,IAAI,CAAC,CAAA;AACtB,OAAA;AACJ,KAAA;AAAE,GAAA,EAAED,QAAQ,CAAK,CAAA;AAAA,CAAA,CAAA;AAErB,IAAIO,MAAM,CAACC,0BAA0B,EAAE;EACnCT,IAAI,CAACU,SAAS,GAAG;AACbR,IAAAA,IAAI,EAAES,SAAS,CAACC,MAAM,CAACC,UAAAA;GAC1B,CAAA;AACL,CAAA;AAEA,aAAeb,IAAI;;;;"}
package/router/NavLink.js CHANGED
@@ -7,10 +7,10 @@ import { classNames } from '../Tools.js';
7
7
 
8
8
  var NavLink = function NavLink(_ref) {
9
9
  var children = _ref[ReactConstants[4]],
10
- href = _ref.href,
11
- highlightPath = _ref.highlightPath,
12
- className = _ref[ReactConstants[5]],
13
- activeClassName = _ref.activeClassName;
10
+ href = _ref.href,
11
+ highlightPath = _ref.highlightPath,
12
+ className = _ref[ReactConstants[5]],
13
+ activeClassName = _ref.activeClassName;
14
14
  return ReactCreateElement(Route, {
15
15
  path: highlightPath || href,
16
16
  controller: function controller(matches) {
@@ -1 +1 @@
1
- {"version":3,"file":"NavLink.js","sources":["../src/router/NavLink.js"],"sourcesContent":["import React from 'react';\nimport ReactCreateElement from '../ReactCreateElement';\nimport PropTypes from 'prop-types';\nimport './HistoryTools'\nimport Route from \"./Route\";\nimport Link from \"./Link\";\nimport {classNames} from \"../Tools\";\n\nconst NavLink = ({children, href, highlightPath, className, activeClassName}) =>\n <Route path={highlightPath || href}\n controller={matches => <Link href={href} className={classNames(className, matches && activeClassName)}>\n {children}\n </Link>}\n />;\n\nif(window.isNotProductionEnvironment) {\n NavLink.propTypes = Link.propTypes;\n}\n\nexport default NavLink;"],"names":["NavLink","children","href","highlightPath","className","activeClassName","matches","classNames","window","isNotProductionEnvironment","propTypes","Link"],"mappings":";;;;;;;AAQA,IAAMA,OAAO,GAAG,SAAVA,OAAU,CAAA,IAAA,EAAA;AAAA,EAAEC,IAAAA,QAAF,QAAEA,QAAF;AAAA,MAAYC,IAAZ,QAAYA,IAAZ;AAAA,MAAkBC,aAAlB,QAAkBA,aAAlB;AAAA,MAAiCC,SAAjC,QAAiCA,SAAjC;AAAA,MAA4CC,eAA5C,QAA4CA,eAA5C,CAAA;AAAA,EAAA,OACZ,mBAAC,KAAD,EAAA;AAAO,IAAA,IAAI,EAAEF,aAAa,IAAID,IAA9B;AACO,IAAA,UAAU,EAAE,SAAA,UAAA,CAAAI,OAAO,EAAA;AAAA,MAAA,OAAI,mBAAC,IAAD,EAAA;AAAM,QAAA,IAAI,EAAEJ,IAAZ;AAAkB,QAAA,SAAS,EAAEK,UAAU,CAACH,SAAD,EAAYE,OAAO,IAAID,eAAvB,CAAA;AAAvC,OAAA,EAClBJ,QADkB,CAAJ,CAAA;AAAA,KAAA;AAD1B,GADY,CAAA,CAAA;AAAA,CAAhB,CAAA;AAOA,IAAGO,MAAM,CAACC,0BAAV,EAAsC;AAClCT,EAAAA,OAAO,CAACU,SAAR,GAAoBC,IAAI,CAACD,SAAzB,CAAA;AACH,CAAA;AAED,gBAAeV,OAAf;;;;"}
1
+ {"version":3,"file":"NavLink.js","sources":["../src/router/NavLink.js"],"sourcesContent":["import React from 'react';\nimport ReactCreateElement from '../ReactCreateElement';\nimport PropTypes from 'prop-types';\nimport './HistoryTools'\nimport Route from \"./Route\";\nimport Link from \"./Link\";\nimport {classNames} from \"../Tools\";\n\nconst NavLink = ({children, href, highlightPath, className, activeClassName}) =>\n <Route path={highlightPath || href}\n controller={matches => <Link href={href} className={classNames(className, matches && activeClassName)}>\n {children}\n </Link>}\n />;\n\nif(window.isNotProductionEnvironment) {\n NavLink.propTypes = Link.propTypes;\n}\n\nexport default NavLink;"],"names":["NavLink","children","href","highlightPath","className","activeClassName","matches","classNames","window","isNotProductionEnvironment","propTypes","Link"],"mappings":";;;;;;;AAQA,IAAMA,OAAO,GAAG,SAAVA,OAAO,CAAA,IAAA,EAAA;EAAA,IAAKC,QAAQ,QAARA,QAAQ;AAAEC,IAAAA,IAAI,QAAJA,IAAI;AAAEC,IAAAA,aAAa,QAAbA,aAAa;AAAEC,IAAAA,SAAS,QAATA,SAAS;AAAEC,IAAAA,eAAe,QAAfA,eAAe,CAAA;AAAA,EAAA,OACvE,mBAAC,KAAK,EAAA;IAAC,IAAI,EAAEF,aAAa,IAAID,IAAK;IAC5B,UAAU,EAAE,oBAAAI,OAAO,EAAA;AAAA,MAAA,OAAI,mBAAC,IAAI,EAAA;AAAC,QAAA,IAAI,EAAEJ,IAAK;AAAC,QAAA,SAAS,EAAEK,UAAU,CAACH,SAAS,EAAEE,OAAO,IAAID,eAAe,CAAA;AAAE,OAAA,EACjGJ,QAAQ,CACN,CAAA;AAAA,KAAA;GACZ,CAAA,CAAA;AAAA,CAAA,CAAA;AAEN,IAAGO,MAAM,CAACC,0BAA0B,EAAE;AAClCT,EAAAA,OAAO,CAACU,SAAS,GAAGC,IAAI,CAACD,SAAS,CAAA;AACtC,CAAA;AAEA,gBAAeV,OAAO;;;;"}
package/router/Route.js CHANGED
@@ -1,8 +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 { inherits as _inherits, createSuper as _createSuper, classCallCheck as _classCallCheck, assertThisInitialized as _assertThisInitialized, slicedToArray as _slicedToArray, createClass as _createClass } from '../_virtual/_rollupPluginBabelHelpers.js';
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 { 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 {toConsumableArray as __toConsumableArray} from "./../_virtual/_rollupPluginBabelHelpers"; import {extends as __extends} from "./../_virtual/_rollupPluginBabelHelpers"; import {inherits as __inherits} from "./../_virtual/_rollupPluginBabelHelpers"; import React from 'react';
3
3
  import PropTypes from 'prop-types';
4
4
  import { setOf, allPropsExcept, isDifferent, addEventListener, WINDOW, removeEventListener, orNoop } from '../Tools.js';
5
- import { stateGSs, componentDidUpdate, render, componentDidMount, componentWillUnmount, propsGetter, setState, PureComponent } from '../ReactConstants.js';
5
+ import { stateGSs, componentDidUpdate, render, componentDidMount, componentWillUnmount, PureComponent, propsGetter, setState } from '../ReactConstants.js';
6
6
 
7
7
  var historyEvents = ['popstate', 'pushState', 'replaceState'];
8
8
  var cleanPath = function cleanPath(path) {
@@ -105,10 +105,10 @@ var Route = function (_PureComponent) {
105
105
  var matcher;
106
106
  var props = propsGetter(that);
107
107
  var _stateGSs = stateGSs(that, 3),
108
- _stateGSs2 = _slicedToArray(_stateGSs, 3),
109
- isRendering = _stateGSs2[0],
110
- paramsState = _stateGSs2[1],
111
- mergedPropsState = _stateGSs2[2];
108
+ _stateGSs2 = _slicedToArray(_stateGSs, 3),
109
+ isRendering = _stateGSs2[0],
110
+ paramsState = _stateGSs2[1],
111
+ mergedPropsState = _stateGSs2[2];
112
112
  var process = function process() {
113
113
  var params = {};
114
114
  var nextState = {};
@@ -131,8 +131,8 @@ var Route = function (_PureComponent) {
131
131
  };
132
132
  that[ReactConstants[3]] = function () {
133
133
  var _props = props(),
134
- children = _props[ReactConstants[4]],
135
- controller = _props.controller;
134
+ children = _props[ReactConstants[4]],
135
+ controller = _props.controller;
136
136
  return (controller || DefaultController)(isRendering(), children, mergedPropsState());
137
137
  };
138
138
  that[ReactConstants[0]] = function () {
@@ -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","properties","that","state","propsGetter","stateGSs","isRendering","paramsState","mergedPropsState","process","nextState","isMatching","WINDOW","location","pathname","toggle","isDifferent","allPropsExcept","setState","orNoop","onToggle","componentDidUpdate","prevProps","prevState","mergedProps","render","children","controller","DefaultController","componentDidMount","forEach","addEventListener","componentWillUnmount","removeEventListener","PureComponent","window","isNotProductionEnvironment","propTypes","PropTypes","oneOfType","string","arrayOf","isRequired","func","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","properties","that","state","propsGetter","stateGSs","isRendering","paramsState","mergedPropsState","process","nextState","isMatching","WINDOW","location","pathname","toggle","isDifferent","allPropsExcept","setState","orNoop","onToggle","componentDidUpdate","prevProps","prevState","mergedProps","render","children","controller","DefaultController","componentDidMount","forEach","addEventListener","componentWillUnmount","removeEventListener","PureComponent","window","isNotProductionEnvironment","propTypes","PropTypes","oneOfType","string","arrayOf","isRequired","func","matches","keys","React","Children","child","cloneElement"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/router/index.js"],"sourcesContent":["import Link from \"./Link\";\nimport NavLink from \"./NavLink\";\nimport Route from \"./Route\";\n\nexport default {\n Link,\n NavLink,\n Route\n};\n"],"names":["Link","NavLink","Route"],"mappings":";;;;AAIA,YAAe;AACXA,EAAAA,IAAI,EAAJA,IADW;AAEXC,EAAAA,OAAO,EAAPA,OAFW;AAGXC,EAAAA,KAAK,EAALA,KAAAA;AAHW,CAAf;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../src/router/index.js"],"sourcesContent":["import Link from \"./Link\";\nimport NavLink from \"./NavLink\";\nimport Route from \"./Route\";\n\nexport default {\n Link,\n NavLink,\n Route\n};\n"],"names":["Link","NavLink","Route"],"mappings":";;;;AAIA,YAAe;AACXA,EAAAA,IAAI,EAAJA,IAAI;AACJC,EAAAA,OAAO,EAAPA,OAAO;AACPC,EAAAA,KAAK,EAALA,KAAAA;AACJ,CAAC;;;;"}
@@ -26,7 +26,7 @@
26
26
  margin-bottom: 0;
27
27
  background: white;
28
28
  font-size: 12px;
29
- color: #aaaaaa;
29
+ color: rgb(170, 170, 170);
30
30
  padding-right: 16px;
31
31
  padding-left: 16px;
32
32
  height: 40px;
@@ -28,7 +28,7 @@
28
28
  align-items: center;
29
29
  white-space: nowrap;
30
30
  font-size: 14px;
31
- color: #222222;
31
+ color: rgb(34, 34, 34);
32
32
  height: 30px;
33
33
  padding: 5px 10px;
34
34
  padding-right: 15px;
@@ -49,7 +49,7 @@
49
49
  margin-left: 0px;
50
50
  }
51
51
  .FilteredList .child.active {
52
- background-color: #eeeeee;
52
+ background-color: rgb(238, 238, 238);
53
53
  }
54
54
  .FilteredList .child {
55
55
  margin-top: 8px;
@@ -5,13 +5,13 @@ export const props: <P>(that: React.Component<P>) => P = that => that.props;
5
5
  export const propsGetter: <P>(that: React.Component<P>) => (() => P) = that => () => props(that);
6
6
  // @ts-ignore //ignore incompatible casting EMPTY to S
7
7
  export const state: <P, S>(that: React.Component<P, S>) => S = that => that.state || EMPTY;
8
- export const setState = (that, data, cb?) => {
8
+ export const setState = (that: React.Component, data, cb?) => {
9
9
  that.setState(data, cb);
10
10
  };
11
- export const stateFieldSetter = (that, key, cb?) => (value, cb2?) => {
11
+ export const stateFieldSetter = (that, key, cb?: () => void) => (value, cb2?) => {
12
12
  setState(that, {[key]: value}, cb2 || cb);
13
13
  };
14
- export const stateGS: ((that: React.Component) => (v?, cb?) => any) = (that) => {
14
+ export const stateGS: (<T>(that: React.Component) => (v?: T, cb?: () => void) => T) = (that) => {
15
15
  !that['sfc'] && (that['sfc'] = 0);
16
16
  const key = '_' + (that['sfc']++);
17
17
  const setter = stateFieldSetter(that, key);
package/src/Table.css CHANGED
@@ -90,5 +90,5 @@
90
90
  width: 100%;
91
91
  height: 20px;
92
92
  padding: 0px;
93
- background-color: #f0f0f0;
93
+ background-color: rgb(240, 240, 240);
94
94
  }
package/src/Table.tsx CHANGED
@@ -3,9 +3,22 @@ import './Table.css'
3
3
  import TextField from "./TextField";
4
4
  import AutocompleteSelect, {MODE_DEFAULT, MODE_MULTIPLE_MINI} from "./AutocompleteSelect";
5
5
  import Switch from "./Switch";
6
- import {Comparators, NOOP, classNames, preventDefault, stopPropagation, isFunction, isString, orNoop, createRef, setInterval, createAccessor, UNDEFINED} from "./Tools";
6
+ import {
7
+ Comparators,
8
+ NOOP,
9
+ classNames,
10
+ preventDefault,
11
+ stopPropagation,
12
+ isFunction,
13
+ isString,
14
+ orNoop,
15
+ createRef,
16
+ setInterval,
17
+ createAccessor,
18
+ UNDEFINED
19
+ } from "./Tools";
7
20
  import MaterialIcon from "./MaterialIcon";
8
- import {componentDidUpdate, componentWillUnmount, render, PureComponent, propsGetter, componentDidMount, stateGSs} from "./ReactConstants";
21
+ import {componentDidUpdate, componentWillUnmount, render, PureComponent, propsGetter, componentDidMount, stateGSs, stateGS} from "./ReactConstants";
9
22
 
10
23
  export const SORT_ASC = Comparators.SORT_ASC;
11
24
  export const SORT_DESC = Comparators.SORT_DESC;
@@ -29,35 +42,39 @@ export interface RowProps<T> {
29
42
  cancelEditing: () => void,
30
43
  onFinishEditing: () => void,
31
44
  handleInputChange: (e: ChangeEvent) => void,
32
- setValue: (v: any, t: T, field: String) => void,
33
- setEditing: (t: T, i: number, value?: any) => void,
45
+ setValue: (v: any, t: T, field: keyof T) => void,
46
+ setEditing: (t: T, i: number, value?: any, focused?: boolean) => void,
34
47
  onMouseDown?: (e: SyntheticEvent, row: number, column: number) => void,
35
48
  onMouseUp?: (e: SyntheticEvent, row: number, column: number) => void,
36
49
  onMouseEnter?: (e: SyntheticEvent, row: number, column: number) => void,
37
50
  onMouseLeave?: (e: SyntheticEvent, row: number, column: number) => void,
38
51
  }
39
52
 
40
- export type Formatter<T, V> =
41
- ((value?: V, item?: T, format?: string) => ReactElement | string)
42
- | ((value: V, item: T) => ReactElement | string)
43
- | ((value: V) => ReactElement | string);
53
+ export type Formatter<T, V> = ((value: V, item?: T, format?: string) => ReactElement | string);
44
54
 
45
- export type CellClassName<T> = (item: T, field: string, row: number, column: number) => string;
55
+ export type CellClassName<T> = (item: T, field: keyof T, row: number, column: number) => string;
46
56
  export type ColumnClassName<T> = string | CellClassName<T>
47
57
 
48
58
  export interface TableColumn<T> {
49
- field?: string,
59
+ field?: keyof T,
50
60
  className?: ColumnClassName<T>,
51
- onClick?: (e: SyntheticEvent, startEditing: () => void, item: T, field: string, row: number, column: number) => void,
61
+ onClick?: (e: SyntheticEvent, startEditing: () => void, item: T, field: keyof T, row: number, column: number) => void,
52
62
  comparator?: Comparator,
53
63
  header?: string | ReactElement,
54
64
  sortable?: boolean,
55
65
  displayEditor?: boolean,
56
- formatter?: Formatter<T, any>,
66
+ formatter?: Formatter<T, T[keyof T]>,
57
67
  format?: string,
58
68
  editable?: boolean | ((t: T) => boolean),
59
69
  editor?: typeof editorSelect | typeof editorSwitch | ((t: T, cancel: () => void, isEditing: boolean) => ReactElement),
60
- preEditor?: (a: any) => any,
70
+ preEditor?: (a: T[keyof T]) => any,
71
+ }
72
+
73
+ export interface TableColumnTyped<T, F extends keyof T> extends TableColumn<T>{
74
+ field?: F,
75
+ onClick?: (e: SyntheticEvent, startEditing: () => void, item: T, field: F, row: number, column: number) => void,
76
+ formatter?: Formatter<T, T[F]>,
77
+ preEditor?: (a: T[F]) => any,
61
78
  }
62
79
 
63
80
  export interface TableProps<T> {
@@ -86,10 +103,19 @@ export interface TableState<T> {
86
103
  data?: T[],
87
104
  }
88
105
 
106
+ export interface EditingState<T> {
107
+ id: number | string
108
+ value: any
109
+ columnIndex: number
110
+ item: T
111
+ field: keyof T
112
+ focused: boolean
113
+ }
114
+
89
115
  class Table<T> extends Component<TableProps<T>, TableState<T>> {
90
- startEditing: (item, columnIndex, value?) => void;
116
+ startEditing: (item: T, columnIndex: number, value?, focused?: boolean) => void;
91
117
  finishEditing: () => void;
92
- isEditing: () => boolean;
118
+ getEditingState: () => EditingState<T>;
93
119
 
94
120
  constructor(properties) {
95
121
  super(properties);
@@ -106,20 +132,21 @@ class Table<T> extends Component<TableProps<T>, TableState<T>> {
106
132
  }
107
133
  };
108
134
 
109
- const [editingState, dataState, sortByState, sortOrderState, comparatorState] = stateGSs(this, 5);
135
+ const editingState = stateGS<EditingState<T>>(this)
136
+ const [dataState, sortByState, sortOrderState, comparatorState] = stateGSs(this, 4);
110
137
  const comparatorGetter = createAccessor('comparator');
111
138
 
112
139
  const cancelEditing = () => {
113
- editingState(false)
140
+ editingState(null)
114
141
  };
115
142
 
116
- const setEditing = (item, columnIndex, value) => {
143
+ const setEditing = (item, columnIndex, value, focused = true) => {
117
144
  const {columns} = props()
118
145
  const field = columns[columnIndex].field
119
- editingState({id: item.id, value: (value != null ? value : item[field]), columnIndex, item, field})
146
+ editingState({id: item.id, value: (value != null ? value : item[field]), columnIndex, item, field, focused: !!focused})
120
147
  };
121
148
  this.startEditing = setEditing
122
- this.isEditing = () => !!editingState()
149
+ this.getEditingState = () => editingState()
123
150
 
124
151
  const handleInputChange = (event) => {
125
152
  const target = event.target;
@@ -148,7 +175,7 @@ class Table<T> extends Component<TableProps<T>, TableState<T>> {
148
175
  this.finishEditing = onFinishEditing
149
176
 
150
177
  const setValue = (value, item, field) => {
151
- editingState({item, field, value}, onFinishEditing)
178
+ editingState({...editingState(), item, field, value}, onFinishEditing)
152
179
  };
153
180
 
154
181
 
@@ -262,12 +289,12 @@ const formatValue: (<T>(item: T, column: TableColumn<T>) => string | ReactElemen
262
289
  return formatter ? (formatter as ((value?: any, item?: any, format?: string) => ReactElement))(value, item, column.format) : '' + value;
263
290
  };
264
291
 
265
- export interface TableColumnSelect extends TableColumn<any> {
292
+ export interface TableColumnSelect<T> extends TableColumn<T> {
266
293
  editorData?: any,
267
294
  multiSelect?: any,
268
295
  onSelect?: any,
269
296
  editorSelectedComponent?: any,
270
- editorChildCompononent?: any,
297
+ editorChildComponent?: any,
271
298
  prefilter?: any,
272
299
  }
273
300
 
@@ -307,10 +334,10 @@ class Row<T> extends PureComponent<RowProps<T>> {
307
334
  {displayEditor && !column.editor && (
308
335
  <TextField
309
336
  value={value}
310
- focused={true}
337
+ focused={editing.focused}
311
338
  onBlur={cancelEditing}
312
339
  onChange={handleInputChange}
313
- onKeyDown={e => {
340
+ onKeyUp={e => {
314
341
  if (e.keyCode === 27/*escape*/) {
315
342
  preventDefault(e);
316
343
  cancelEditing();
@@ -325,22 +352,22 @@ class Row<T> extends PureComponent<RowProps<T>> {
325
352
  {displayEditor && column.editor === editorSelect && (
326
353
  <AutocompleteSelect
327
354
  value={value}
328
- data={(column as TableColumnSelect).editorData}
355
+ data={(column as TableColumnSelect<T>).editorData}
329
356
  focused={true}
330
357
  withArrow={false}
331
358
  withFilter={false}
332
359
  selectedMode={'inline'}
333
- selectedComponent={(column as TableColumnSelect).editorSelectedComponent}
334
- mode={(column as TableColumnSelect).multiSelect ? MODE_MULTIPLE_MINI : MODE_DEFAULT}
335
- onChange={(column as TableColumnSelect).multiSelect && ((column as TableColumnSelect).onSelect ? (value => {
336
- setValue((column as TableColumnSelect).onSelect(value), item, column.field);
360
+ selectedComponent={(column as TableColumnSelect<T>).editorSelectedComponent}
361
+ mode={(column as TableColumnSelect<T>).multiSelect ? MODE_MULTIPLE_MINI : MODE_DEFAULT}
362
+ onChange={(column as TableColumnSelect<T>).multiSelect && ((column as TableColumnSelect<T>).onSelect ? (value => {
363
+ setValue((column as TableColumnSelect<T>).onSelect(value), item, column.field);
337
364
  }) : value => setValue(value, item, column.field))}
338
- onSelect={!(column as TableColumnSelect).multiSelect && ((column as TableColumnSelect).onSelect ? (value => {
339
- setValue((column as TableColumnSelect).onSelect(value), item, column.field);
365
+ onSelect={!(column as TableColumnSelect<T>).multiSelect && ((column as TableColumnSelect<T>).onSelect ? (value => {
366
+ setValue((column as TableColumnSelect<T>).onSelect(value), item, column.field);
340
367
  }) : value => setValue(value, item, column.field))}
341
- childComponent={(column as TableColumnSelect).editorChildCompononent}
368
+ childComponent={(column as TableColumnSelect<T>).editorChildComponent}
342
369
  onCancel={cancelEditing}
343
- prefilter={(column as TableColumnSelect).prefilter}
370
+ prefilter={(column as TableColumnSelect<T>).prefilter}
344
371
  />
345
372
  )}
346
373
  {displayEditor && column.editor === editorSwitch && (
package/src/TextField.css CHANGED
@@ -34,7 +34,7 @@
34
34
  }
35
35
  .TextField > input:disabled + .border {
36
36
  height: 0px;
37
- border-bottom: 2px dotted #e0e0e0;
37
+ border-bottom: 2px dotted rgb(224, 224, 224);
38
38
  }
39
39
  .TextField > input::placeholder {
40
40
  font-family: Roboto, sans-serif;
@@ -42,7 +42,7 @@
42
42
  opacity: 1;
43
43
  }
44
44
  .TextField > .border {
45
- border-bottom: 1px solid #e0e0e0;
45
+ border-bottom: 1px solid rgb(224, 224, 224);
46
46
  height: 1px;
47
47
  position: relative;
48
48
  }
@@ -51,7 +51,7 @@
51
51
  width: 0;
52
52
  height: 2px;
53
53
  min-height: 2px;
54
- background-color: #00bcd4;
54
+ background-color: rgb(0, 188, 212);
55
55
  transition: all 0.2s ease;
56
56
  position: absolute;
57
57
  }
@@ -60,7 +60,7 @@
60
60
  font-size: 10px;
61
61
  min-height: 0;
62
62
  line-height: 14px;
63
- color: #f44336;
63
+ color: rgb(244, 67, 54);
64
64
  visibility: hidden;
65
65
  opacity: 0;
66
66
  transition: all 0.2s ease;
@@ -75,13 +75,13 @@
75
75
  opacity: 1;
76
76
  }
77
77
  .TextField.errored > .border {
78
- border-bottom-color: #f44336;
78
+ border-bottom-color: rgb(244, 67, 54);
79
79
  }
80
80
  .TextField.errored > label {
81
- color: #f44336;
81
+ color: rgb(244, 67, 54);
82
82
  }
83
83
  .TextField.focused > label {
84
- color: #00bcd4;
84
+ color: rgb(0, 188, 212);
85
85
  }
86
86
  .TextField.focused > .border .line {
87
87
  left: 0;