react-ui-basics 0.0.126 → 0.0.130
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/AutocompleteSelect.css +1 -0
- package/AutocompleteSelect.js +16 -10
- package/AutocompleteSelect.js.map +1 -1
- package/FilteredList.js +4 -0
- package/FilteredList.js.map +1 -1
- package/Modal.js +4 -2
- package/Modal.js.map +1 -1
- package/TextField.js +4 -0
- package/TextField.js.map +1 -1
- package/Tools.js +2 -2
- package/Tools.js.map +1 -1
- package/bundle.css +752 -751
- package/index.js +2 -0
- package/index.js.map +1 -1
- package/package.json +1 -1
- package/store/ProxyTools.js +64 -0
- package/store/ProxyTools.js.map +1 -0
- package/store/Store.js +71 -0
- package/store/Store.js.map +1 -0
package/AutocompleteSelect.css
CHANGED
package/AutocompleteSelect.js
CHANGED
|
@@ -98,7 +98,7 @@ var AutocompleteSelect = function (_React$Component) {
|
|
|
98
98
|
var _this$state = _this.state,
|
|
99
99
|
filterValue = _this$state.filterValue,
|
|
100
100
|
currentSelection = _this$state.selected;
|
|
101
|
-
if (selectedId == null && (!!filterValue || !required) && allowCustom && (!_this.input || !_this.input.check())) selectedId = filterValue;
|
|
101
|
+
if (selectedId == null && (!!filterValue || !required) && allowCustom && (!_this.input || !_this.input.check())) selectedId = filterValue.trim();
|
|
102
102
|
var isMultiSelect = isMultipleSelect(mode);
|
|
103
103
|
if (!selectedId && isMultiSelect) {
|
|
104
104
|
selectedId = null;
|
|
@@ -224,7 +224,8 @@ var AutocompleteSelect = function (_React$Component) {
|
|
|
224
224
|
scroll = _this$props3.scroll,
|
|
225
225
|
required = _this$props3.required,
|
|
226
226
|
allowCustom = _this$props3.allowCustom,
|
|
227
|
-
inlineSelected = _this$props3.inlineSelected
|
|
227
|
+
inlineSelected = _this$props3.inlineSelected,
|
|
228
|
+
removeIcon = _this$props3.removeIcon;
|
|
228
229
|
var id = this.props.id || this.randomId;
|
|
229
230
|
var selectedComponent = this.props.selectedComponent || childComponent;
|
|
230
231
|
var _this$state2 = this.state,
|
|
@@ -265,6 +266,10 @@ var AutocompleteSelect = function (_React$Component) {
|
|
|
265
266
|
}
|
|
266
267
|
};
|
|
267
268
|
var isInline = mode === MODE_INLINE || mode === MODE_INLINE_MULTIPLE || mode === MODE_MULTIPLE_MINI_INLINE;
|
|
269
|
+
var filterValueTrimmed = filterValue.trim();
|
|
270
|
+
var dataFiltered = allowCustom ? [filterValueTrimmed].concat(_toConsumableArray(data.filter(function (suggestion) {
|
|
271
|
+
return suggestion !== filterValueTrimmed;
|
|
272
|
+
}))) : data;
|
|
268
273
|
var list = ReactCreateElement(FilteredList, {
|
|
269
274
|
className: classNames(isActive && 'visible'),
|
|
270
275
|
ref: ref('list', this),
|
|
@@ -272,9 +277,9 @@ var AutocompleteSelect = function (_React$Component) {
|
|
|
272
277
|
if (!it) return false;
|
|
273
278
|
if (prefilter && !prefilter(it)) return false;
|
|
274
279
|
if (!filterValue) return true;
|
|
275
|
-
var f =
|
|
280
|
+
var f = filterValueTrimmed.toLowerCase();
|
|
276
281
|
if (_filter) return _filter(it, f);
|
|
277
|
-
var value = (isString(it) ? it : it.name || it.label || '').toLowerCase();
|
|
282
|
+
var value = (isString(it) ? it : it.name || it.label || '').toLowerCase().trim();
|
|
278
283
|
return continuousIncludes(value, f);
|
|
279
284
|
},
|
|
280
285
|
selectSingle: !allowCustom,
|
|
@@ -288,7 +293,7 @@ var AutocompleteSelect = function (_React$Component) {
|
|
|
288
293
|
selected: selected,
|
|
289
294
|
childComponent: childComponent,
|
|
290
295
|
childProps: childProps,
|
|
291
|
-
data:
|
|
296
|
+
data: dataFiltered,
|
|
292
297
|
labels: labels
|
|
293
298
|
});
|
|
294
299
|
return ReactCreateElement("div", {
|
|
@@ -323,7 +328,7 @@ var AutocompleteSelect = function (_React$Component) {
|
|
|
323
328
|
_this3.remove(id);
|
|
324
329
|
}
|
|
325
330
|
}, ReactCreateElement(MaterialIcon, {
|
|
326
|
-
icon:
|
|
331
|
+
icon: removeIcon
|
|
327
332
|
})));
|
|
328
333
|
}), selectedMode === 'inline' && selectedIds.map(function (id) {
|
|
329
334
|
return ReactCreateElement(React.Fragment, {
|
|
@@ -340,7 +345,7 @@ var AutocompleteSelect = function (_React$Component) {
|
|
|
340
345
|
raised: false,
|
|
341
346
|
onClick: this.clean
|
|
342
347
|
}, ReactCreateElement(MaterialIcon, {
|
|
343
|
-
icon:
|
|
348
|
+
icon: removeIcon
|
|
344
349
|
}))), inlineSelected && hasSelected && ReactCreateElement(React.Fragment, null, selectedMode === 'full' && selectedIds.map(function (id) {
|
|
345
350
|
return ReactCreateElement("div", {
|
|
346
351
|
className: "value",
|
|
@@ -356,7 +361,7 @@ var AutocompleteSelect = function (_React$Component) {
|
|
|
356
361
|
_this3.remove(id);
|
|
357
362
|
}
|
|
358
363
|
}, ReactCreateElement(MaterialIcon, {
|
|
359
|
-
icon:
|
|
364
|
+
icon: removeIcon
|
|
360
365
|
})));
|
|
361
366
|
}), selectedMode === 'inline' && selectedIds.map(function (id) {
|
|
362
367
|
return ReactCreateElement(React.Fragment, {
|
|
@@ -370,7 +375,7 @@ var AutocompleteSelect = function (_React$Component) {
|
|
|
370
375
|
className: "input",
|
|
371
376
|
"data-value": filterValue
|
|
372
377
|
}, withFilter && ReactCreateElement(TextField, {
|
|
373
|
-
autoComplete: "
|
|
378
|
+
autoComplete: "new-password",
|
|
374
379
|
id: 'f-' + id,
|
|
375
380
|
ref: ref('input', this),
|
|
376
381
|
focused: isActive,
|
|
@@ -434,7 +439,8 @@ AutocompleteSelect.defaultProps = {
|
|
|
434
439
|
withReset: false,
|
|
435
440
|
scrollToValue: false,
|
|
436
441
|
mode: MODE_DEFAULT,
|
|
437
|
-
selectedMode: 'full'
|
|
442
|
+
selectedMode: 'full',
|
|
443
|
+
removeIcon: 'close'
|
|
438
444
|
};
|
|
439
445
|
var AutocompleteSelect$1 = AutocompleteSelect;
|
|
440
446
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutocompleteSelect.js","sources":["../src/react-ui-basics/AutocompleteSelect.js"],"sourcesContent":["import React from 'react';\nimport ReactCreateElement from './ReactCreateElement';\nimport PropTypes from 'prop-types';\nimport './AutocompleteSelect.css'\nimport TextField from \"./TextField\";\nimport FilteredList, {getLabel} from \"./FilteredList\";\nimport {\n classNames,\n continuousIncludes,\n getRandomId,\n ref,\n orNoop,\n preventDefault,\n stopPropagation,\n DOCUMENT,\n addEventListener,\n removeEventListener,\n isObject,\n isFunction,\n isString, UNDEFINED\n} from \"./Tools\";\nimport Button from \"./Button\";\nimport MaterialIcon from \"./MaterialIcon\";\n\nexport const MODE_DEFAULT = 'default';\nexport const MODE_INLINE = 'inline';\nexport const MODE_INLINE_MULTIPLE = 'inline-multiple';\nexport const MODE_MULTIPLE_AUTO = 'multiple-auto';\nexport const MODE_MULTIPLE = 'multiple';\nexport const MODE_MULTIPLE_MINI = 'multiple-mini';\nexport const MODE_MINI = 'mini';\nexport const MODE_MULTIPLE_MINI_INLINE = 'multiple-mini-inline';\n\n\nconst DummyChild = ({id, label, dataConsumer, onClick}) => {\n orNoop(dataConsumer)(label || id);\n return <div className={`DummyChild`} onClick={onClick}>{label || id}</div>\n};\n\nconst prepareSelected = (value) => {\n let result;\n if (value != null) {\n if (Array.isArray(value))\n result = value.reduce((map, obj) => {\n map[obj] = obj;\n return map;\n }, {});\n else if (isObject(value))\n result = value;\n else if (value)\n result = {[value]: value};\n else\n result = {}\n } else {\n result = {};\n }\n return result;\n};\n\nconst findParent = (el, tag) => {\n if (el != null) {\n const tagName = el.tagName;\n if (tagName && tagName.toUpperCase() === tag.toUpperCase()) {\n return el;\n } else {\n return findParent(el.parentNode, tag)\n }\n }\n return null;\n}\n\nfunction isMultipleSelect(mode) {\n return mode === MODE_MULTIPLE || mode === MODE_MULTIPLE_AUTO || mode === MODE_INLINE_MULTIPLE || mode === MODE_MULTIPLE_MINI || mode === MODE_MULTIPLE_MINI_INLINE;\n}\n\nclass AutocompleteSelect extends React.Component {\n\n static propTypes = {\n mode: PropTypes.oneOf([MODE_DEFAULT, MODE_INLINE, MODE_MULTIPLE, MODE_MULTIPLE_AUTO, MODE_MULTIPLE_MINI, MODE_MULTIPLE_MINI_INLINE, MODE_INLINE_MULTIPLE, MODE_MINI])\n };\n\n constructor(props) {\n super(props);\n const that = this;\n that.state = {\n selected: prepareSelected(props.value),\n isActive: !!props.focused,\n\n };\n that.randomId = getRandomId('acs-');\n\n const {data, getSelected} = props;\n isFunction(data) && data(data => that.setState({data}));\n\n getSelected && getSelected(() => Object.values(that.state.selected));\n }\n\n componentDidMount() {\n addEventListener(DOCUMENT, 'mousedown', this.listener = (e) => {\n if (this.state.isActive && this.el && !this.el.contains(e.target)) {\n this.onClickOutside()\n }\n })\n if (this.props.required) {\n const form = findParent(this.el.parentNode, 'form')\n if (form) {\n addEventListener(this.submitButton = form.querySelector('button[type=submit]'), 'click', this.formSubmitListener = (e) => {\n const errored = Object.keys(this.state.selected).length === 0;\n this.setState({errored: errored})\n })\n }\n }\n this.initSelected(this.props, this.state)\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n if (this.props.value !== prevProps.value)\n this.initSelected(this.props, this.state)\n }\n\n initSelected = ({value, mode, allowCustom}, {filterValue = ''}) => {\n this.setState({\n selected: prepareSelected(value),\n filterValue: allowCustom && isString(value) && !isMultipleSelect(mode) ? value : filterValue,\n });\n };\n\n componentWillUnmount() {\n removeEventListener(DOCUMENT, 'mousedown', this.listener)\n removeEventListener(this.submitButton, 'click', this.formSubmitListener)\n }\n\n static defaultProps = {\n childComponent: DummyChild,\n withArrow: true,\n withFilter: true,\n withReset: false,\n scrollToValue: false,\n mode: MODE_DEFAULT,\n selectedMode: 'full',\n };\n\n render() {\n const {\n childComponent,\n childProps,\n withArrow,\n withFilter,\n withReset,\n filter,\n label,\n inputLabel,\n mode,\n selectedMode,\n prefilter,\n className,\n scrollToValue,\n scroll,\n required,\n allowCustom,\n inlineSelected,\n } = this.props;\n const id = this.props.id || this.randomId;\n const selectedComponent = this.props.selectedComponent || childComponent;\n const {selected = {}, filterValue = '', errored} = this.state;\n let {isActive} = this.state;\n if (this.props.isActive !== UNDEFINED) {\n isActive = this.props.isActive\n }\n let {data = [], labels = {}} = this.props;\n if (this.state.data)\n data = this.state.data;\n\n if (!Array.isArray(data))\n data = [];\n\n const selectedIds = Object.values(selected);\n const hasSelected = selectedIds.length !== 0;\n const setActive = (e) => {\n stopPropagation(e);\n this.setState({isActive: true}, () => (scrollToValue && selectedIds.length > 0) && this.list.scrollTo(selectedIds[0]));\n };\n const toggle = (e) => {\n if (!this.state.isActive) {\n setActive(e);\n } else {\n stopPropagation(e);\n this.setState({isActive: false});\n }\n };\n\n const isInline = mode === MODE_INLINE || mode === MODE_INLINE_MULTIPLE || mode === MODE_MULTIPLE_MINI_INLINE;\n\n const list = <FilteredList className={classNames(isActive && 'visible')}\n ref={ref('list', this)}\n filter={it => {\n if (!it) return false;\n if (prefilter && !prefilter(it)) return false;\n if (!filterValue) return true;\n\n const f = filterValue.toLowerCase();\n if (filter) return filter(it, f);\n\n let value = (isString(it) ? it : (it.name || it.label || '')).toLowerCase();\n return continuousIncludes(value, f);\n }}\n selectSingle={!allowCustom}\n scroll={scroll}\n inline={isInline}\n nextProvider={ref('next', this)}\n prevProvider={ref('prev', this)}\n selectedProvider={ref('getSelected', this)}\n resetProvider={ref('reset', this)}\n onSelect={this.onSelect}\n selected={selected}\n childComponent={childComponent}\n childProps={childProps}\n data={(allowCustom && !data.includes(filterValue)) ? [filterValue, ...data] : data}\n labels={labels}\n />;\n\n return (\n <div id={id}\n className={classNames(\n 'AutocompleteSelect',\n mode,\n isMultipleSelect(mode) && 'multi',\n className,\n withFilter ? 'withFilter' : 'withoutFilter',\n isActive && 'active',\n errored && 'errored',\n inlineSelected && 'inlineSelected',\n hasSelected && 'hasSelected',\n )}\n ref={ref('el', this)}>\n {label && <label className={classNames(`label`, (hasSelected || filterValue) && 'active', hasSelected && 'hasSelected')}\n htmlFor={'f-' + id}\n onClick={() => {\n if (mode === MODE_MULTIPLE_MINI_INLINE || !isActive) {\n toggle();\n }\n }}\n >\n {label}\n {required && ' *'}\n {withArrow && <span className=\"arrow\"/>}\n </label>}\n\n {(!isActive || mode === MODE_MULTIPLE || mode === MODE_INLINE_MULTIPLE || mode === MODE_MULTIPLE_MINI_INLINE || mode === MODE_MULTIPLE_AUTO || !withFilter) && !inlineSelected && hasSelected && (\n <div\n className={classNames('selected',\n !label && 'nolabel',\n (mode === MODE_MULTIPLE_MINI || mode === MODE_MINI || mode === MODE_MULTIPLE_MINI_INLINE) && 'clickable',\n selectedMode)}\n onClick={toggle}>\n\n {selectedMode === 'full' && selectedIds.map(id =>\n <div className=\"value\" key={id}>\n {React.createElement(selectedComponent, {...childProps, id, label: getLabel(labels, id), onClick: setActive})}\n <div className=\"button remove\" onClick={e => {\n stopPropagation(e);\n this.remove(id);\n }}>\n <MaterialIcon icon=\"close\"/>\n </div>\n </div>\n )}\n {selectedMode === 'inline' && selectedIds.map(id =>\n <React.Fragment key={id}>\n {React.createElement(selectedComponent, {...childProps, id, label: getLabel(labels, id), onClick: setActive})}\n {id !== selectedIds[selectedIds.length - 1] && ', '}\n </React.Fragment>\n )}\n {!label && withArrow && <span className=\"arrow\"/>}\n {withReset && <Button className=\"reset\" raised={false} onClick={this.clean}>\n <MaterialIcon icon=\"close\"/>\n </Button>}\n </div>\n )}\n\n {inlineSelected && hasSelected && <>\n {selectedMode === 'full' && selectedIds.map(id =>\n <div className=\"value\" key={id}>\n {React.createElement(selectedComponent, {...childProps, id, label: getLabel(labels, id), onClick: setActive})}\n <div className=\"button remove\" onClick={e => {\n stopPropagation(e);\n this.remove(id);\n }}>\n <MaterialIcon icon=\"close\"/>\n </div>\n </div>\n )}\n {selectedMode === 'inline' && selectedIds.map(id =>\n <React.Fragment key={id}>\n {React.createElement(selectedComponent, {...childProps, id, label: getLabel(labels, id), onClick: setActive})}\n {id !== selectedIds[selectedIds.length - 1] && ', '}\n </React.Fragment>\n )}\n </>}\n\n {(isActive || (!hasSelected && mode !== MODE_MULTIPLE_MINI_INLINE) || mode === MODE_MULTIPLE || (mode === MODE_MULTIPLE_AUTO && selectedIds.length > 1) || mode === MODE_INLINE_MULTIPLE) && (\n <div className={`input`} data-value={filterValue}>\n {withFilter && <TextField autoComplete=\"off\" id={'f-' + id}\n ref={ref('input', this)}\n focused={isActive}\n value={filterValue}\n label={inputLabel}\n onChange={this.onChange}\n onFocus={e => this.setState({isActive: true})}\n check={this.props.filterCheck}\n onKeyDown={e => {\n const keyCode = e.keyCode;\n if (keyCode === 38/*up*/) {\n preventDefault(e);\n this.prev();\n } else if (keyCode === 40/*down*/) {\n preventDefault(e);\n this.next();\n } else if (keyCode === 13/*enter*/) {\n preventDefault(e);\n this.onSelect(this.getSelected())\n } else if (keyCode === 9/*tab*/) {\n this.onSelect(this.getSelected())\n } else if (keyCode === 8/*backspace*/) {\n if (!filterValue && (selectedIds.length !== 0) && isMultipleSelect(mode)) {\n this.remove(selectedIds[selectedIds.length - 1]);\n }\n this.reset()\n } else if (keyCode === 46/*delete*/) {\n this.reset()\n } else if (keyCode === 27/*esc*/) {\n this.setState({\n isActive: false,\n filterValue: isMultipleSelect(mode) ? '' : (allowCustom ? filterValue : ''),\n });\n this.input.getInput().blur()\n this.onCancel();\n }\n // console.log('key pressed:', e.keyCode)\n }}\n />}\n {!withFilter && inputLabel && <label>{inputLabel}</label>}\n </div>\n )}\n {list}\n </div>\n )\n }\n\n onClickOutside = () => {\n const {allowCustom, required} = this.props;\n const {filterValue} = this.state;\n if (allowCustom && (!!filterValue || !required)) {\n this.onSelect()\n }\n\n this.setState({isActive: false});\n\n this.onCancel();\n };\n\n onCancel = () => {\n orNoop(this.props.onCancel)()\n };\n\n onSelect = (selectedId) => {\n const {mode, required, allowCustom, onSelect, onChange, default: defaultValue} = this.props;\n const {filterValue, selected: currentSelection} = this.state;\n\n if (selectedId == null && (!!filterValue || !required) && allowCustom && (!this.input || !this.input.check()))\n selectedId = filterValue;\n\n const isMultiSelect = isMultipleSelect(mode);\n\n if (!selectedId && isMultiSelect) {\n selectedId = null;\n }\n\n // debugger\n\n const isSelected = selectedId != null;\n\n let selected = {...currentSelection};\n if (selected[selectedId] && (defaultValue || isMultiSelect)) {\n delete selected[selectedId];\n if (defaultValue && Object.keys(selected).length === 0)\n selected[defaultValue] = defaultValue;\n } else if (isSelected && (isMultiSelect)) {\n selected[selectedId] = selectedId;\n } else if (isSelected) {\n selected = {[selectedId]: selectedId};\n }\n\n const errored = required && Object.keys(selected) === 0;\n\n const isActive = mode === MODE_MULTIPLE_MINI_INLINE || (isMultiSelect && isSelected)\n\n this.setState({\n isActive: isActive,\n selected: selected,\n filterValue: isMultiSelect ? '' : (allowCustom ? selectedId || '' : ''),\n errored,\n });\n\n if (isActive && this.input)\n this.input.getInput().focus()\n\n orNoop(onSelect)(selectedId);\n orNoop(onChange)(Object.values(selected));\n };\n\n clean = (e) => {\n preventDefault(e);\n stopPropagation(e);\n\n this.setState({\n isActive: false,\n selected: {},\n filterValue: '',\n });\n\n orNoop(this.props.onSelect)(null);\n orNoop(this.props.onChange)([]);\n\n this.initSelected(this.props, this.state);\n };\n\n remove = (id) => {\n let result = {\n ...this.state,\n selected: {...this.state.selected},\n filterValue: '',\n };\n delete result.selected[id];\n this.setState(result);\n orNoop(this.props.onChange)(Object.values(result.selected));\n };\n\n onChange = (event) => {\n const value = event.target.value;\n this.setState({filterValue: value});\n }\n}\n\nexport default AutocompleteSelect;\n"],"names":["MODE_DEFAULT","MODE_INLINE","MODE_INLINE_MULTIPLE","MODE_MULTIPLE_AUTO","MODE_MULTIPLE","MODE_MULTIPLE_MINI","MODE_MINI","MODE_MULTIPLE_MINI_INLINE","DummyChild","id","label","dataConsumer","onClick","orNoop","prepareSelected","value","result","Array","isArray","reduce","map","obj","isObject","findParent","el","tag","tagName","toUpperCase","parentNode","isMultipleSelect","mode","AutocompleteSelect","props","initSelected","allowCustom","filterValue","setState","selected","isString","onClickOutside","required","state","onSelect","isActive","onCancel","selectedId","onChange","defaultValue","currentSelection","input","check","isMultiSelect","isSelected","Object","keys","length","errored","getInput","focus","values","clean","e","preventDefault","stopPropagation","remove","event","target","that","focused","randomId","getRandomId","data","getSelected","isFunction","addEventListener","DOCUMENT","listener","contains","form","submitButton","querySelector","formSubmitListener","prevProps","prevState","snapshot","removeEventListener","childComponent","childProps","withArrow","withFilter","withReset","filter","inputLabel","selectedMode","prefilter","className","scrollToValue","scroll","inlineSelected","selectedComponent","UNDEFINED","labels","selectedIds","hasSelected","setActive","list","scrollTo","toggle","isInline","classNames","ref","it","f","toLowerCase","name","continuousIncludes","includes","React","createElement","getLabel","filterCheck","keyCode","prev","next","reset","blur","Component","propTypes","PropTypes","oneOf","defaultProps"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AutocompleteSelect.js","sources":["../src/react-ui-basics/AutocompleteSelect.js"],"sourcesContent":["import React from 'react';\nimport ReactCreateElement from './ReactCreateElement';\nimport PropTypes from 'prop-types';\nimport './AutocompleteSelect.css'\nimport TextField from \"./TextField\";\nimport FilteredList, {getLabel} from \"./FilteredList\";\nimport {\n classNames,\n continuousIncludes,\n getRandomId,\n ref,\n orNoop,\n preventDefault,\n stopPropagation,\n DOCUMENT,\n addEventListener,\n removeEventListener,\n isObject,\n isFunction,\n isString, UNDEFINED\n} from \"./Tools\";\nimport Button from \"./Button\";\nimport MaterialIcon from \"./MaterialIcon\";\n\nexport const MODE_DEFAULT = 'default';\nexport const MODE_INLINE = 'inline';\nexport const MODE_INLINE_MULTIPLE = 'inline-multiple';\nexport const MODE_MULTIPLE_AUTO = 'multiple-auto';\nexport const MODE_MULTIPLE = 'multiple';\nexport const MODE_MULTIPLE_MINI = 'multiple-mini';\nexport const MODE_MINI = 'mini';\nexport const MODE_MULTIPLE_MINI_INLINE = 'multiple-mini-inline';\n\n\nconst DummyChild = ({id, label, dataConsumer, onClick}) => {\n orNoop(dataConsumer)(label || id);\n return <div className={`DummyChild`} onClick={onClick}>{label || id}</div>\n};\n\nconst prepareSelected = (value) => {\n let result;\n if (value != null) {\n if (Array.isArray(value))\n result = value.reduce((map, obj) => {\n map[obj] = obj;\n return map;\n }, {});\n else if (isObject(value))\n result = value;\n else if (value)\n result = {[value]: value};\n else\n result = {}\n } else {\n result = {};\n }\n return result;\n};\n\nconst findParent = (el, tag) => {\n if (el != null) {\n const tagName = el.tagName;\n if (tagName && tagName.toUpperCase() === tag.toUpperCase()) {\n return el;\n } else {\n return findParent(el.parentNode, tag)\n }\n }\n return null;\n}\n\nfunction isMultipleSelect(mode) {\n return mode === MODE_MULTIPLE || mode === MODE_MULTIPLE_AUTO || mode === MODE_INLINE_MULTIPLE || mode === MODE_MULTIPLE_MINI || mode === MODE_MULTIPLE_MINI_INLINE;\n}\n\nclass AutocompleteSelect extends React.Component {\n\n static propTypes = {\n mode: PropTypes.oneOf([MODE_DEFAULT, MODE_INLINE, MODE_MULTIPLE, MODE_MULTIPLE_AUTO, MODE_MULTIPLE_MINI, MODE_MULTIPLE_MINI_INLINE, MODE_INLINE_MULTIPLE, MODE_MINI])\n };\n\n constructor(props) {\n super(props);\n const that = this;\n that.state = {\n selected: prepareSelected(props.value),\n isActive: !!props.focused,\n\n };\n that.randomId = getRandomId('acs-');\n\n const {data, getSelected} = props;\n isFunction(data) && data(data => that.setState({data}));\n\n getSelected && getSelected(() => Object.values(that.state.selected));\n }\n\n componentDidMount() {\n addEventListener(DOCUMENT, 'mousedown', this.listener = (e) => {\n if (this.state.isActive && this.el && !this.el.contains(e.target)) {\n this.onClickOutside()\n }\n })\n if (this.props.required) {\n const form = findParent(this.el.parentNode, 'form')\n if (form) {\n addEventListener(this.submitButton = form.querySelector('button[type=submit]'), 'click', this.formSubmitListener = (e) => {\n const errored = Object.keys(this.state.selected).length === 0;\n this.setState({errored: errored})\n })\n }\n }\n this.initSelected(this.props, this.state)\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n if (this.props.value !== prevProps.value)\n this.initSelected(this.props, this.state)\n }\n\n initSelected = ({value, mode, allowCustom}, {filterValue = ''}) => {\n this.setState({\n selected: prepareSelected(value),\n filterValue: allowCustom && isString(value) && !isMultipleSelect(mode) ? value : filterValue,\n });\n };\n\n componentWillUnmount() {\n removeEventListener(DOCUMENT, 'mousedown', this.listener)\n removeEventListener(this.submitButton, 'click', this.formSubmitListener)\n }\n\n static defaultProps = {\n childComponent: DummyChild,\n withArrow: true,\n withFilter: true,\n withReset: false,\n scrollToValue: false,\n mode: MODE_DEFAULT,\n selectedMode: 'full',\n removeIcon: 'close',\n };\n\n render() {\n const {\n childComponent,\n childProps,\n withArrow,\n withFilter,\n withReset,\n filter,\n label,\n inputLabel,\n mode,\n selectedMode,\n prefilter,\n className,\n scrollToValue,\n scroll,\n required,\n allowCustom,\n inlineSelected,\n removeIcon,\n } = this.props;\n const id = this.props.id || this.randomId;\n const selectedComponent = this.props.selectedComponent || childComponent;\n const {selected = {}, filterValue = '', errored} = this.state;\n let {isActive} = this.state;\n if (this.props.isActive !== UNDEFINED) {\n isActive = this.props.isActive\n }\n let {data = [], labels = {}} = this.props;\n if (this.state.data)\n data = this.state.data;\n\n if (!Array.isArray(data))\n data = [];\n\n const selectedIds = Object.values(selected);\n const hasSelected = selectedIds.length !== 0;\n const setActive = (e) => {\n stopPropagation(e);\n this.setState({isActive: true}, () => (scrollToValue && selectedIds.length > 0) && this.list.scrollTo(selectedIds[0]));\n };\n const toggle = (e) => {\n if (!this.state.isActive) {\n setActive(e);\n } else {\n stopPropagation(e);\n this.setState({isActive: false});\n }\n };\n\n const isInline = mode === MODE_INLINE || mode === MODE_INLINE_MULTIPLE || mode === MODE_MULTIPLE_MINI_INLINE;\n const filterValueTrimmed = filterValue.trim();\n const dataFiltered = allowCustom ? [filterValueTrimmed, ...data.filter(suggestion => suggestion !== filterValueTrimmed)] : data;\n\n const list = <FilteredList className={classNames(isActive && 'visible')}\n ref={ref('list', this)}\n filter={it => {\n if (!it) return false;\n if (prefilter && !prefilter(it)) return false;\n if (!filterValue) return true;\n\n const f = filterValueTrimmed.toLowerCase();\n if (filter) return filter(it, f);\n\n let value = (isString(it) ? it : (it.name || it.label || '')).toLowerCase().trim();\n return continuousIncludes(value, f);\n }}\n selectSingle={!allowCustom}\n scroll={scroll}\n inline={isInline}\n nextProvider={ref('next', this)}\n prevProvider={ref('prev', this)}\n selectedProvider={ref('getSelected', this)}\n resetProvider={ref('reset', this)}\n onSelect={this.onSelect}\n selected={selected}\n childComponent={childComponent}\n childProps={childProps}\n data={dataFiltered}\n labels={labels}\n />;\n\n return (\n <div id={id}\n className={classNames(\n 'AutocompleteSelect',\n mode,\n isMultipleSelect(mode) && 'multi',\n className,\n withFilter ? 'withFilter' : 'withoutFilter',\n isActive && 'active',\n errored && 'errored',\n inlineSelected && 'inlineSelected',\n hasSelected && 'hasSelected',\n )}\n ref={ref('el', this)}>\n {label && <label className={classNames(`label`, (hasSelected || filterValue) && 'active', hasSelected && 'hasSelected')}\n htmlFor={'f-' + id}\n onClick={() => {\n if (mode === MODE_MULTIPLE_MINI_INLINE || !isActive) {\n toggle();\n }\n }}\n >\n {label}\n {required && ' *'}\n {withArrow && <span className=\"arrow\"/>}\n </label>}\n\n {(!isActive || mode === MODE_MULTIPLE || mode === MODE_INLINE_MULTIPLE || mode === MODE_MULTIPLE_MINI_INLINE || mode === MODE_MULTIPLE_AUTO || !withFilter) && !inlineSelected && hasSelected && (\n <div\n className={classNames('selected',\n !label && 'nolabel',\n (mode === MODE_MULTIPLE_MINI || mode === MODE_MINI || mode === MODE_MULTIPLE_MINI_INLINE) && 'clickable',\n selectedMode)}\n onClick={toggle}>\n\n {selectedMode === 'full' && selectedIds.map(id =>\n <div className=\"value\" key={id}>\n {React.createElement(selectedComponent, {...childProps, id, label: getLabel(labels, id), onClick: setActive})}\n <div className=\"button remove\" onClick={e => {\n stopPropagation(e);\n this.remove(id);\n }}>\n <MaterialIcon icon={removeIcon}/>\n </div>\n </div>\n )}\n {selectedMode === 'inline' && selectedIds.map(id =>\n <React.Fragment key={id}>\n {React.createElement(selectedComponent, {...childProps, id, label: getLabel(labels, id), onClick: setActive})}\n {id !== selectedIds[selectedIds.length - 1] && ', '}\n </React.Fragment>\n )}\n {!label && withArrow && <span className=\"arrow\"/>}\n {withReset && <Button className=\"reset\" raised={false} onClick={this.clean}>\n <MaterialIcon icon={removeIcon}/>\n </Button>}\n </div>\n )}\n\n {inlineSelected && hasSelected && <>\n {selectedMode === 'full' && selectedIds.map(id =>\n <div className=\"value\" key={id}>\n {React.createElement(selectedComponent, {...childProps, id, label: getLabel(labels, id), onClick: setActive})}\n <div className=\"button remove\" onClick={e => {\n stopPropagation(e);\n this.remove(id);\n }}>\n <MaterialIcon icon={removeIcon}/>\n </div>\n </div>\n )}\n {selectedMode === 'inline' && selectedIds.map(id =>\n <React.Fragment key={id}>\n {React.createElement(selectedComponent, {...childProps, id, label: getLabel(labels, id), onClick: setActive})}\n {id !== selectedIds[selectedIds.length - 1] && ', '}\n </React.Fragment>\n )}\n </>}\n\n {(isActive || (!hasSelected && mode !== MODE_MULTIPLE_MINI_INLINE) || mode === MODE_MULTIPLE || (mode === MODE_MULTIPLE_AUTO && selectedIds.length > 1) || mode === MODE_INLINE_MULTIPLE) && (\n <div className={`input`} data-value={filterValue}>\n {withFilter && <TextField autoComplete=\"new-password\" id={'f-' + id}\n ref={ref('input', this)}\n focused={isActive}\n value={filterValue}\n label={inputLabel}\n onChange={this.onChange}\n onFocus={e => this.setState({isActive: true})}\n check={this.props.filterCheck}\n onKeyDown={e => {\n const keyCode = e.keyCode;\n if (keyCode === 38/*up*/) {\n preventDefault(e);\n this.prev();\n } else if (keyCode === 40/*down*/) {\n preventDefault(e);\n this.next();\n } else if (keyCode === 13/*enter*/) {\n preventDefault(e);\n this.onSelect(this.getSelected())\n } else if (keyCode === 9/*tab*/) {\n this.onSelect(this.getSelected())\n } else if (keyCode === 8/*backspace*/) {\n if (!filterValue && (selectedIds.length !== 0) && isMultipleSelect(mode)) {\n this.remove(selectedIds[selectedIds.length - 1]);\n }\n this.reset()\n } else if (keyCode === 46/*delete*/) {\n this.reset()\n } else if (keyCode === 27/*esc*/) {\n this.setState({\n isActive: false,\n filterValue: isMultipleSelect(mode) ? '' : (allowCustom ? filterValue : ''),\n });\n this.input.getInput().blur()\n this.onCancel();\n }\n // console.log('key pressed:', e.keyCode)\n }}\n />}\n {!withFilter && inputLabel && <label>{inputLabel}</label>}\n </div>\n )}\n {list}\n </div>\n )\n }\n\n onClickOutside = () => {\n const {allowCustom, required} = this.props;\n const {filterValue} = this.state;\n if (allowCustom && (!!filterValue || !required)) {\n this.onSelect()\n }\n\n this.setState({isActive: false});\n\n this.onCancel();\n };\n\n onCancel = () => {\n orNoop(this.props.onCancel)()\n };\n\n onSelect = (selectedId) => {\n const {mode, required, allowCustom, onSelect, onChange, default: defaultValue} = this.props;\n const {filterValue, selected: currentSelection} = this.state;\n\n if (selectedId == null && (!!filterValue || !required) && allowCustom && (!this.input || !this.input.check()))\n selectedId = filterValue.trim();\n\n const isMultiSelect = isMultipleSelect(mode);\n\n if (!selectedId && isMultiSelect) {\n selectedId = null;\n }\n\n // debugger\n\n const isSelected = selectedId != null;\n\n let selected = {...currentSelection};\n if (selected[selectedId] && (defaultValue || isMultiSelect)) {\n delete selected[selectedId];\n if (defaultValue && Object.keys(selected).length === 0)\n selected[defaultValue] = defaultValue;\n } else if (isSelected && (isMultiSelect)) {\n selected[selectedId] = selectedId;\n } else if (isSelected) {\n selected = {[selectedId]: selectedId};\n }\n\n const errored = required && Object.keys(selected) === 0;\n\n const isActive = mode === MODE_MULTIPLE_MINI_INLINE || (isMultiSelect && isSelected)\n\n this.setState({\n isActive: isActive,\n selected: selected,\n filterValue: isMultiSelect ? '' : (allowCustom ? selectedId || '' : ''),\n errored,\n });\n\n if (isActive && this.input)\n this.input.getInput().focus()\n\n orNoop(onSelect)(selectedId);\n orNoop(onChange)(Object.values(selected));\n };\n\n clean = (e) => {\n preventDefault(e);\n stopPropagation(e);\n\n this.setState({\n isActive: false,\n selected: {},\n filterValue: '',\n });\n\n orNoop(this.props.onSelect)(null);\n orNoop(this.props.onChange)([]);\n\n this.initSelected(this.props, this.state);\n };\n\n remove = (id) => {\n let result = {\n ...this.state,\n selected: {...this.state.selected},\n filterValue: '',\n };\n delete result.selected[id];\n this.setState(result);\n orNoop(this.props.onChange)(Object.values(result.selected));\n };\n\n onChange = (event) => {\n const value = event.target.value;\n this.setState({filterValue: value});\n }\n}\n\nexport default AutocompleteSelect;\n"],"names":["MODE_DEFAULT","MODE_INLINE","MODE_INLINE_MULTIPLE","MODE_MULTIPLE_AUTO","MODE_MULTIPLE","MODE_MULTIPLE_MINI","MODE_MINI","MODE_MULTIPLE_MINI_INLINE","DummyChild","id","label","dataConsumer","onClick","orNoop","prepareSelected","value","result","Array","isArray","reduce","map","obj","isObject","findParent","el","tag","tagName","toUpperCase","parentNode","isMultipleSelect","mode","AutocompleteSelect","props","initSelected","allowCustom","filterValue","setState","selected","isString","onClickOutside","required","state","onSelect","isActive","onCancel","selectedId","onChange","defaultValue","currentSelection","input","check","trim","isMultiSelect","isSelected","Object","keys","length","errored","getInput","focus","values","clean","e","preventDefault","stopPropagation","remove","event","target","that","focused","randomId","getRandomId","data","getSelected","isFunction","addEventListener","DOCUMENT","listener","contains","form","submitButton","querySelector","formSubmitListener","prevProps","prevState","snapshot","removeEventListener","childComponent","childProps","withArrow","withFilter","withReset","filter","inputLabel","selectedMode","prefilter","className","scrollToValue","scroll","inlineSelected","removeIcon","selectedComponent","UNDEFINED","labels","selectedIds","hasSelected","setActive","list","scrollTo","toggle","isInline","filterValueTrimmed","dataFiltered","suggestion","classNames","ref","it","f","toLowerCase","name","continuousIncludes","React","createElement","getLabel","filterCheck","keyCode","prev","next","reset","blur","Component","propTypes","PropTypes","oneOf","defaultProps"],"mappings":"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"}
|
package/FilteredList.js
CHANGED
|
@@ -16,7 +16,11 @@ var FilteredList = function (_React$Component) {
|
|
|
16
16
|
_this = _super.call(this, _props);
|
|
17
17
|
_this.updateList = function (props) {
|
|
18
18
|
var data = props.data;
|
|
19
|
+
var selected = _this.state.selected;
|
|
19
20
|
_this.list = data || [];
|
|
21
|
+
if (!_this.list.includes(selected)) _this.setState({
|
|
22
|
+
selected: -1
|
|
23
|
+
});
|
|
20
24
|
};
|
|
21
25
|
_this.onSelect = function (id) {
|
|
22
26
|
_this.setState({
|
package/FilteredList.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilteredList.js","sources":["../src/react-ui-basics/FilteredList.js"],"sourcesContent":["import React from 'react';\nimport ReactCreateElement from './ReactCreateElement';\nimport './FilteredList.css'\nimport Scrollable from \"./Scrollable\";\nimport {classNames, orNoop, ref, stopPropagation, isFunction, isObject} from \"./Tools\";\n\nexport const getLabel = (labels, id)=> isFunction(labels) ? labels(id) : labels[id]\n\nclass FilteredList extends React.Component {\n\n static defaultProps = {\n data: [],\n labels: {},\n selected: {},\n inline: false,\n selectSingle: true,\n filter: () => true,\n };\n\n constructor(props) {\n super(props);\n this.state = {selected: -1};\n this.hidden = {};\n this.elements = {};\n }\n\n componentDidMount() {\n orNoop(this.props.nextProvider)(this.next);\n orNoop(this.props.prevProvider)(this.prev);\n orNoop(this.props.selectedProvider)(this.selected);\n orNoop(this.props.resetProvider)(this.reset);\n\n this.updateList(this.props)\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n if (this.props.data === prevProps.data)\n return;\n\n this.updateList(this.props)\n }\n\n updateList = (props) => {\n const {data} = props;\n this.list = data || [];\n };\n\n render() {\n const {data, labels, filter, className, selected, inline, childComponent, childProps, style, scroll} = this.props;\n return (\n <Scrollable className={classNames('FilteredList', className, inline ? 'inline' : 'popup')}\n ref={ref('el', this)} style={style} scrollBarMode={scroll}>\n {(data || []).filter(id => id !== false && id != null).map(id => <ItemWrapper\n id={id}\n key={id}\n label={getLabel(labels, id)}\n childComponent={childComponent}\n childProps={childProps}\n element={el => this.elements[id] = el}\n onClick={e => {\n stopPropagation(e);\n this.onSelect(id);\n }}\n onMouseEnter={e => this.setState({selected: id})}\n onMouseLeave={e => id === this.state.selected && this.setState({selected: -1})}\n className={classNames('child', this.state.selected === id && 'active', selected === id || (isObject(selected) && selected[id]) && 'selected')}\n classProvider={it => (this.hidden[id] = !filter(it)) && 'hidden'}\n />)}\n </Scrollable>\n )\n }\n\n onSelect = (id) => {\n this.setState({selected: id});\n this.props.onSelect(id);\n };\n\n selected = () => {\n const {selected: value} = this.state;\n const {selectSingle} = this.props;\n\n\n if (value === -1 || this.hidden[value]) {\n let filtered = this.list.filter(id => !this.hidden[id]);\n if (selectSingle && filtered.length === 1)\n return filtered[0];\n\n return null;\n } else {\n return value;\n }\n };\n\n next = () => {\n const list = this.list;\n const selected = this.state.selected;\n let position = list.findIndex(id => selected === id);\n if (this.hidden[list[position]])\n position = -1;\n\n while (++position < list.length) {\n if (!this.hidden[list[position]])\n break\n }\n if (position < list.length) {\n let id = list[position];\n this.setState({selected: id});\n this.updateScroll(id)\n }\n };\n\n prev = () => {\n const list = this.list;\n const selected = this.state.selected;\n let position = list.findIndex(id => selected === id);\n if (this.hidden[list[position]])\n position = list.length;\n\n while (--position >= 0) {\n if (!this.hidden[list[position]])\n break\n }\n if (position >= 0) {\n let id = list[position];\n this.setState({selected: id});\n this.updateScroll(id)\n }\n };\n\n updateScroll = (id) => {\n let child = this.elements[id];\n let container = this.el;\n const scrollTop = container.getScroll();\n const height = container.getHeight();\n let isVisible = scrollTop <= child.offsetTop && scrollTop + height >= child.offsetTop + child.clientHeight;\n if (!isVisible) {\n let scrollToBottom = child.offsetTop + child.clientHeight - height;\n let scrollToTop = child.offsetTop;\n if (Math.abs(scrollTop - scrollToTop) < Math.abs(scrollTop - scrollToBottom)) {\n container.setScroll(scrollToTop)\n } else {\n container.setScroll(scrollToBottom)\n }\n }\n };\n\n reset = () => {\n this.setState({selected: -1});\n this.el.scrollTop = 0;\n };\n\n scrollTo = (id) => this.el.setScroll(this.elements[id] && this.elements[id].offsetTop);\n}\n\nexport default FilteredList;\n\nclass ItemWrapper extends React.Component {\n render() {\n const {id, label, onClick, onMouseDown, onMouseEnter, onMouseLeave, classProvider, className, childComponent, childProps} = this.props;\n const child = React.createElement(childComponent, {\n ...childProps,\n id,\n label,\n dataConsumer: (data) => this.data = data,\n });\n\n const cssClass = orNoop(classProvider)(this.data);\n return (\n <div className={classNames('ItemWrapper', cssClass, className)}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n onMouseDown={onMouseDown}\n onClick={onClick}\n ref={ref('el', this)}\n >\n {child}\n </div>\n )\n }\n\n componentDidMount() {\n orNoop(this.props.element)(this.el);\n this.forceUpdate();\n }\n}\n"],"names":["getLabel","labels","id","isFunction","FilteredList","props","updateList","data","list","onSelect","setState","selected","value","state","selectSingle","hidden","filtered","filter","length","next","position","findIndex","updateScroll","prev","child","elements","container","el","scrollTop","getScroll","height","getHeight","isVisible","offsetTop","clientHeight","scrollToBottom","scrollToTop","Math","abs","setScroll","reset","scrollTo","orNoop","nextProvider","prevProvider","selectedProvider","resetProvider","prevProps","prevState","snapshot","className","inline","childComponent","childProps","style","scroll","classNames","ref","map","e","stopPropagation","isObject","it","React","Component","defaultProps","ItemWrapper","label","onClick","onMouseDown","onMouseEnter","onMouseLeave","classProvider","createElement","dataConsumer","cssClass","element","forceUpdate"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FilteredList.js","sources":["../src/react-ui-basics/FilteredList.js"],"sourcesContent":["import React from 'react';\nimport ReactCreateElement from './ReactCreateElement';\nimport './FilteredList.css'\nimport Scrollable from \"./Scrollable\";\nimport {classNames, orNoop, ref, stopPropagation, isFunction, isObject} from \"./Tools\";\n\nexport const getLabel = (labels, id) => isFunction(labels) ? labels(id) : labels[id]\n\nclass FilteredList extends React.Component {\n\n static defaultProps = {\n data: [],\n labels: {},\n selected: {},\n inline: false,\n selectSingle: true,\n filter: () => true,\n };\n\n constructor(props) {\n super(props);\n this.state = {selected: -1};\n this.hidden = {};\n this.elements = {};\n }\n\n componentDidMount() {\n orNoop(this.props.nextProvider)(this.next);\n orNoop(this.props.prevProvider)(this.prev);\n orNoop(this.props.selectedProvider)(this.selected);\n orNoop(this.props.resetProvider)(this.reset);\n\n this.updateList(this.props)\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n if (this.props.data === prevProps.data)\n return;\n\n this.updateList(this.props)\n }\n\n updateList = (props) => {\n const {data} = props;\n const {selected} = this.state;\n this.list = data || [];\n\n if (!this.list.includes(selected))\n this.setState({selected: -1})\n };\n\n render() {\n const {data, labels, filter, className, selected, inline, childComponent, childProps, style, scroll} = this.props;\n return (\n <Scrollable className={classNames('FilteredList', className, inline ? 'inline' : 'popup')}\n ref={ref('el', this)} style={style} scrollBarMode={scroll}>\n {(data || []).filter(id => id !== false && id != null).map(id => <ItemWrapper\n id={id}\n key={id}\n label={getLabel(labels, id)}\n childComponent={childComponent}\n childProps={childProps}\n element={el => this.elements[id] = el}\n onClick={e => {\n stopPropagation(e);\n this.onSelect(id);\n }}\n onMouseEnter={e => this.setState({selected: id})}\n onMouseLeave={e => id === this.state.selected && this.setState({selected: -1})}\n className={classNames('child', this.state.selected === id && 'active', selected === id || (isObject(selected) && selected[id]) && 'selected')}\n classProvider={it => (this.hidden[id] = !filter(it)) && 'hidden'}\n />)}\n </Scrollable>\n )\n }\n\n onSelect = (id) => {\n this.setState({selected: id});\n this.props.onSelect(id);\n };\n\n selected = () => {\n const {selected: value} = this.state;\n const {selectSingle} = this.props;\n\n\n if (value === -1 || this.hidden[value]) {\n let filtered = this.list.filter(id => !this.hidden[id]);\n if (selectSingle && filtered.length === 1)\n return filtered[0];\n\n return null;\n } else {\n return value;\n }\n };\n\n next = () => {\n const list = this.list;\n const selected = this.state.selected;\n let position = list.findIndex(id => selected === id);\n if (this.hidden[list[position]])\n position = -1;\n\n while (++position < list.length) {\n if (!this.hidden[list[position]])\n break\n }\n if (position < list.length) {\n let id = list[position];\n this.setState({selected: id});\n this.updateScroll(id)\n }\n };\n\n prev = () => {\n const list = this.list;\n const selected = this.state.selected;\n let position = list.findIndex(id => selected === id);\n if (this.hidden[list[position]])\n position = list.length;\n\n while (--position >= 0) {\n if (!this.hidden[list[position]])\n break\n }\n if (position >= 0) {\n let id = list[position];\n this.setState({selected: id});\n this.updateScroll(id)\n }\n };\n\n updateScroll = (id) => {\n let child = this.elements[id];\n let container = this.el;\n const scrollTop = container.getScroll();\n const height = container.getHeight();\n let isVisible = scrollTop <= child.offsetTop && scrollTop + height >= child.offsetTop + child.clientHeight;\n if (!isVisible) {\n let scrollToBottom = child.offsetTop + child.clientHeight - height;\n let scrollToTop = child.offsetTop;\n if (Math.abs(scrollTop - scrollToTop) < Math.abs(scrollTop - scrollToBottom)) {\n container.setScroll(scrollToTop)\n } else {\n container.setScroll(scrollToBottom)\n }\n }\n };\n\n reset = () => {\n this.setState({selected: -1});\n this.el.scrollTop = 0;\n };\n\n scrollTo = (id) => this.el.setScroll(this.elements[id] && this.elements[id].offsetTop);\n}\n\nexport default FilteredList;\n\nclass ItemWrapper extends React.Component {\n render() {\n const {id, label, onClick, onMouseDown, onMouseEnter, onMouseLeave, classProvider, className, childComponent, childProps} = this.props;\n const child = React.createElement(childComponent, {\n ...childProps,\n id,\n label,\n dataConsumer: (data) => this.data = data,\n });\n\n const cssClass = orNoop(classProvider)(this.data);\n return (\n <div className={classNames('ItemWrapper', cssClass, className)}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n onMouseDown={onMouseDown}\n onClick={onClick}\n ref={ref('el', this)}\n >\n {child}\n </div>\n )\n }\n\n componentDidMount() {\n orNoop(this.props.element)(this.el);\n this.forceUpdate();\n }\n}\n"],"names":["getLabel","labels","id","isFunction","FilteredList","props","updateList","data","selected","state","list","includes","setState","onSelect","value","selectSingle","hidden","filtered","filter","length","next","position","findIndex","updateScroll","prev","child","elements","container","el","scrollTop","getScroll","height","getHeight","isVisible","offsetTop","clientHeight","scrollToBottom","scrollToTop","Math","abs","setScroll","reset","scrollTo","orNoop","nextProvider","prevProvider","selectedProvider","resetProvider","prevProps","prevState","snapshot","className","inline","childComponent","childProps","style","scroll","classNames","ref","map","e","stopPropagation","isObject","it","React","Component","defaultProps","ItemWrapper","label","onClick","onMouseDown","onMouseEnter","onMouseLeave","classProvider","createElement","dataConsumer","cssClass","element","forceUpdate"],"mappings":"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"}
|
package/Modal.js
CHANGED
|
@@ -65,7 +65,9 @@ var Modal = function (_PureComponent) {
|
|
|
65
65
|
top = _props2.top,
|
|
66
66
|
_props2$container = _props2.container,
|
|
67
67
|
container = _props2$container === void 0 ? Modal.defaultContainer : _props2$container,
|
|
68
|
-
children = _props2.children
|
|
68
|
+
children = _props2.children,
|
|
69
|
+
_props2$closeIcon = _props2.closeIcon,
|
|
70
|
+
closeIcon = _props2$closeIcon === void 0 ? 'close' : _props2$closeIcon;
|
|
69
71
|
var menu = getMenu();
|
|
70
72
|
var show = isShow();
|
|
71
73
|
var modal = ReactCreateElement("div", {
|
|
@@ -92,7 +94,7 @@ var Modal = function (_PureComponent) {
|
|
|
92
94
|
round: true,
|
|
93
95
|
onClick: beforeClose
|
|
94
96
|
}, ReactCreateElement(MaterialIcon, {
|
|
95
|
-
icon:
|
|
97
|
+
icon: closeIcon
|
|
96
98
|
}))));
|
|
97
99
|
return container ? ReactDOM.createPortal(modal, container) : modal;
|
|
98
100
|
};
|
package/Modal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Modal.js","sources":["../src/react-ui-basics/Modal.js"],"sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport ReactCreateElement from './ReactCreateElement';\nimport './Modal.css'\nimport Button from \"./Button\";\nimport {classNames, orNoop, setTimeout, DOCUMENT, addEventListener, removeEventListener, createRef, UNDEFINED, stopPropagation} from \"./Tools\";\nimport {PureComponent, componentDidMount, render, propsGetter, stateGSs, componentDidUpdate} from \"./ReactConstants\";\nimport MaterialIcon from \"./MaterialIcon\";\nimport PropTypes from \"prop-types\";\n\nlet listenerRef;\nlet zIndex = 100;\n\nconst EVENT_TYPE = 'keydown';\nconst pollListener = (modal) => {\n removeEventListener(DOCUMENT, EVENT_TYPE, listenerRef);\n const listener = modal._pl;\n listener && addEventListener(DOCUMENT, EVENT_TYPE, listener);\n listenerRef = listener;\n};\n\nconst addListener = (modal, listener) => {\n const prev = listenerRef;\n prev && removeEventListener(DOCUMENT, EVENT_TYPE, prev);\n modal._pl = prev;\n addEventListener(DOCUMENT, EVENT_TYPE, listenerRef = listener);\n};\n\nclass Modal extends PureComponent {\n\n constructor(properties) {\n super(properties);\n const that = this;\n that.state = {};\n\n const [\n isShow,\n getMenu,\n getBeforeClose,\n ] = stateGSs(that, 3);\n const overlay = createRef();\n const el = createRef();\n const content = createRef();\n const props = propsGetter(that);\n\n const beforeClose = (e) => {\n stopPropagation(e);\n const bc = getBeforeClose() || props().beforeClose;\n if (!bc || bc(that.close))\n that.close(e);\n };\n\n const shouldClose = (e) => {\n const isSameModal = el().style.zIndex == zIndex - 1;\n !(e && content().contains(e.target)) && isSameModal && beforeClose(e);\n };\n\n const addTransitionListener = () => {\n const transitionend = \"transitionend\";\n let listener = () => {\n removeEventListener(overlay(), transitionend, listener);\n orNoop(isShow() ? props().onOpen : orNoop(props().onClose))();\n el() && (el().style.paddingBottom = isShow() ? '1px' : '0px'); // force invalidate scroll\n };\n addEventListener(overlay(), transitionend, listener);\n };\n that[render] = () => {\n const {className, top, container = Modal.defaultContainer, children} = props();\n const menu = getMenu();\n const show = isShow();\n const modal = <div className={classNames(`Modal`, className, show && 'show')} ref={el} onClick={shouldClose}>\n <div ref={overlay} className={classNames(`overlay`, show && 'show')}>\n </div>\n <div className={classNames(`content`, show && 'show', top && 'top')}\n style={top && {top: top + 'px'}}\n ref={content}\n >\n {React.Children.map(children, child => React.cloneElement(child, {\n modalMenuConsumer: getMenu,\n modalBeforeCloseConsumer: getBeforeClose\n }))}\n {menu}\n <Button className=\"close\" flat={true} round={true} onClick={beforeClose}>\n <MaterialIcon icon={'close'}/>\n </Button>\n </div>\n </div>;\n\n return container ? ReactDOM.createPortal(modal, container) : modal;\n };\n\n const close = that.close = () => {\n if (!isShow())\n return;\n\n zIndex--;\n addTransitionListener();\n isShow(false);\n\n pollListener(that);\n };\n const open = that.open = () => {\n if (isShow())\n return;\n\n el() && (el().style.zIndex = zIndex++);\n addTransitionListener();\n isShow(true);\n\n let listener = event => {\n if (!event.defaultPrevented && event.keyCode === 27/*escape*/)\n beforeClose();\n return true;\n };\n\n addListener(that, listener)\n };\n\n that[componentDidMount] = () => {\n const _props = props();\n orNoop(_props.open)(() => {\n setTimeout(open, 0);\n });\n orNoop(_props.close)(() => {\n setTimeout(close, 0);\n });\n _props.show && setTimeout(open, 0)\n };\n that[componentDidUpdate] = (prevProps) => {\n const show = props().show;\n if (show !== prevProps.show) {\n show ? open() : close();\n }\n };\n }\n}\n\nModal.defaultContainer = UNDEFINED;\nModal.pollListener = pollListener;\nModal.addListener = addListener;\n\nexport default Modal;\n\nif (window.isNotProductionEnvironment) {\n Modal.propTypes = {\n className: PropTypes.string,\n top: PropTypes.number,\n container: PropTypes.node,\n };\n}"],"names":["listenerRef","zIndex","EVENT_TYPE","pollListener","modal","removeEventListener","DOCUMENT","listener","_pl","addEventListener","addListener","prev","Modal","properties","that","state","stateGSs","isShow","getMenu","getBeforeClose","overlay","createRef","el","content","props","propsGetter","beforeClose","e","stopPropagation","bc","close","shouldClose","isSameModal","style","contains","target","addTransitionListener","transitionend","orNoop","onOpen","onClose","paddingBottom","render","className","top","container","defaultContainer","children","menu","show","classNames","React","Children","map","child","cloneElement","modalMenuConsumer","modalBeforeCloseConsumer","ReactDOM","createPortal","open","event","defaultPrevented","keyCode","componentDidMount","_props","setTimeout","componentDidUpdate","prevProps","PureComponent","UNDEFINED","window","isNotProductionEnvironment","propTypes","PropTypes","string","number","node"],"mappings":";;;;;;;;;;AAUA,IAAIA,WAAJ;AACA,IAAIC,MAAM,GAAG,GAAb;AAEA,IAAMC,UAAU,GAAG,SAAnB;AACA,IAAMC,YAAY,GAAG,SAAfA,YAAe,CAACC,KAAD,EAAW;AAC5BC,EAAAA,mBAAmB,CAACC,QAAD,EAAWJ,UAAX,EAAuBF,WAAvB,CAAnB;AACA,MAAMO,QAAQ,GAAGH,KAAK,CAACI,GAAvB;AACAD,EAAAA,QAAQ,IAAIE,gBAAgB,CAACH,QAAD,EAAWJ,UAAX,EAAuBK,QAAvB,CAA5B;AACAP,EAAAA,WAAW,GAAGO,QAAd;AACH,CALD;AAOA,IAAMG,WAAW,GAAG,SAAdA,WAAc,CAACN,KAAD,EAAQG,QAAR,EAAqB;AACrC,MAAMI,IAAI,GAAGX,WAAb;AACAW,EAAAA,IAAI,IAAIN,mBAAmB,CAACC,QAAD,EAAWJ,UAAX,EAAuBS,IAAvB,CAA3B;AACAP,EAAAA,KAAK,CAACI,GAAN,GAAYG,IAAZ;AACAF,EAAAA,gBAAgB,CAACH,QAAD,EAAWJ,UAAX,EAAuBF,WAAW,GAAGO,QAArC,CAAhB;AACH,CALD;IAOMK;;;AAEF,iBAAYC,UAAZ,EAAwB;AAAA;AAAA;AACpB,8BAAMA,UAAN;AACA,QAAMC,IAAI,gCAAV;AACAA,IAAAA,IAAI,CAACC,KAAL,GAAa,EAAb;AAEA,oBAIIC,QAAQ,CAACF,IAAD,EAAO,CAAP,CAJZ;AAAA;AAAA,QACIG,MADJ;AAAA,QAEIC,OAFJ;AAAA,QAGIC,cAHJ;AAKA,QAAMC,OAAO,GAAGC,SAAS,EAAzB;AACA,QAAMC,EAAE,GAAGD,SAAS,EAApB;AACA,QAAME,OAAO,GAAGF,SAAS,EAAzB;AACA,QAAMG,KAAK,GAAGC,WAAW,CAACX,IAAD,CAAzB;AAEA,QAAMY,WAAW,GAAG,SAAdA,WAAc,CAACC,CAAD,EAAO;AACvBC,MAAAA,eAAe,CAACD,CAAD,CAAf;AACA,UAAME,EAAE,GAAGV,cAAc,MAAMK,KAAK,GAAGE,WAAvC;AACA,UAAI,CAACG,EAAD,IAAOA,EAAE,CAACf,IAAI,CAACgB,KAAN,CAAb,EACIhB,IAAI,CAACgB,KAAL,CAAWH,CAAX;AACP,KALD;AAOA,QAAMI,WAAW,GAAG,SAAdA,WAAc,CAACJ,CAAD,EAAO;AACvB,UAAMK,WAAW,GAAGV,EAAE,GAAGW,KAAL,CAAWhC,MAAX,IAAqBA,MAAM,GAAG,CAAlD;AACA,QAAE0B,CAAC,IAAIJ,OAAO,GAAGW,QAAV,CAAmBP,CAAC,CAACQ,MAArB,CAAP,KAAwCH,WAAxC,IAAuDN,WAAW,CAACC,CAAD,CAAlE;AACH,KAHD;AAKA,QAAMS,qBAAqB,GAAG,SAAxBA,qBAAwB,GAAM;AAChC,UAAMC,aAAa,GAAG,eAAtB;AACA,UAAI9B,QAAQ,GAAG,SAAXA,QAAW,GAAM;AACjBF,QAAAA,mBAAmB,CAACe,OAAO,EAAR,EAAYiB,aAAZ,EAA2B9B,QAA3B,CAAnB;AACA+B,QAAAA,MAAM,CAACrB,MAAM,KAAKO,KAAK,GAAGe,MAAb,GAAsBD,MAAM,CAACd,KAAK,GAAGgB,OAAT,CAAnC,CAAN;AACAlB,QAAAA,EAAE,OAAOA,EAAE,GAAGW,KAAL,CAAWQ,aAAX,GAA2BxB,MAAM,KAAK,KAAL,GAAa,KAArD,CAAF,CAHiB;AAIpB,OAJD;AAKAR,MAAAA,gBAAgB,CAACW,OAAO,EAAR,EAAYiB,aAAZ,EAA2B9B,QAA3B,CAAhB;AACH,KARD;AASAO,IAAAA,IAAI,CAAC4B,MAAD,CAAJ,GAAe,YAAM;AACjB,oBAAuElB,KAAK,EAA5E;AAAA,UAAOmB,SAAP,WAAOA,SAAP;AAAA,UAAkBC,GAAlB,WAAkBA,GAAlB;AAAA,sCAAuBC,SAAvB;AAAA,UAAuBA,SAAvB,kCAAmCjC,KAAK,CAACkC,gBAAzC;AAAA,UAA2DC,QAA3D,WAA2DA,QAA3D;AACA,UAAMC,IAAI,GAAG9B,OAAO,EAApB;AACA,UAAM+B,IAAI,GAAGhC,MAAM,EAAnB;AACA,UAAMb,KAAK,GAAG;AAAK,QAAA,SAAS,EAAE8C,UAAU,UAAUP,SAAV,EAAqBM,IAAI,IAAI,MAA7B,CAA1B;AAAgE,QAAA,GAAG,EAAE3B,EAArE;AAAyE,QAAA,OAAO,EAAES;AAAlF,SACV;AAAK,QAAA,GAAG,EAAEX,OAAV;AAAmB,QAAA,SAAS,EAAE8B,UAAU,YAAYD,IAAI,IAAI,MAApB;AAAxC,QADU,EAGV;AAAK,QAAA,SAAS,EAAEC,UAAU,YAAYD,IAAI,IAAI,MAApB,EAA4BL,GAAG,IAAI,KAAnC,CAA1B;AACK,QAAA,KAAK,EAAEA,GAAG,IAAI;AAACA,UAAAA,GAAG,EAAEA,GAAG,GAAG;AAAZ,SADnB;AAEK,QAAA,GAAG,EAAErB;AAFV,SAIK4B,KAAK,CAACC,QAAN,CAAeC,GAAf,CAAmBN,QAAnB,EAA6B,UAAAO,KAAK;AAAA,eAAIH,KAAK,CAACI,YAAN,CAAmBD,KAAnB,EAA0B;AAC7DE,UAAAA,iBAAiB,EAAEtC,OAD0C;AAE7DuC,UAAAA,wBAAwB,EAAEtC;AAFmC,SAA1B,CAAJ;AAAA,OAAlC,CAJL,EAQK6B,IARL,EASI,mBAAC,MAAD;AAAQ,QAAA,SAAS,EAAC,OAAlB;AAA0B,QAAA,IAAI,EAAE,IAAhC;AAAsC,QAAA,KAAK,EAAE,IAA7C;AAAmD,QAAA,OAAO,EAAEtB;AAA5D,SACI,mBAAC,YAAD;AAAc,QAAA,IAAI,EAAE;AAApB,QADJ,CATJ,CAHU,CAAd;AAkBA,aAAOmB,SAAS,GAAGa,QAAQ,CAACC,YAAT,CAAsBvD,KAAtB,EAA6ByC,SAA7B,CAAH,GAA6CzC,KAA7D;AACH,KAvBD;AAyBA,QAAM0B,KAAK,GAAGhB,IAAI,CAACgB,KAAL,GAAa,YAAM;AAC7B,UAAI,CAACb,MAAM,EAAX,EACI;AAEJhB,MAAAA,MAAM;AACNmC,MAAAA,qBAAqB;AACrBnB,MAAAA,MAAM,CAAC,KAAD,CAAN;AAEAd,MAAAA,YAAY,CAACW,IAAD,CAAZ;AACH,KATD;AAUA,QAAM8C,IAAI,GAAG9C,IAAI,CAAC8C,IAAL,GAAY,YAAM;AAC3B,UAAI3C,MAAM,EAAV,EACI;AAEJK,MAAAA,EAAE,OAAOA,EAAE,GAAGW,KAAL,CAAWhC,MAAX,GAAoBA,MAAM,EAAjC,CAAF;AACAmC,MAAAA,qBAAqB;AACrBnB,MAAAA,MAAM,CAAC,IAAD,CAAN;AAEA,UAAIV,QAAQ,GAAG,SAAXA,QAAW,CAAAsD,KAAK,EAAI;AACpB,YAAI,CAACA,KAAK,CAACC,gBAAP,IAA2BD,KAAK,CAACE,OAAN,KAAkB;AAAjD,UACIrC,WAAW;AACf,eAAO,IAAP;AACH,OAJD;AAMAhB,MAAAA,WAAW,CAACI,IAAD,EAAOP,QAAP,CAAX;AACH,KAfD;AAiBAO,IAAAA,IAAI,CAACkD,iBAAD,CAAJ,GAA0B,YAAM;AAC5B,UAAMC,MAAM,GAAGzC,KAAK,EAApB;AACAc,MAAAA,MAAM,CAAC2B,MAAM,CAACL,IAAR,CAAN,CAAoB,YAAM;AACtBM,QAAAA,UAAU,CAACN,IAAD,EAAO,CAAP,CAAV;AACH,OAFD;AAGAtB,MAAAA,MAAM,CAAC2B,MAAM,CAACnC,KAAR,CAAN,CAAqB,YAAM;AACvBoC,QAAAA,UAAU,CAACpC,KAAD,EAAQ,CAAR,CAAV;AACH,OAFD;AAGAmC,MAAAA,MAAM,CAAChB,IAAP,IAAeiB,UAAU,CAACN,IAAD,EAAO,CAAP,CAAzB;AACH,KATD;AAUA9C,IAAAA,IAAI,CAACqD,kBAAD,CAAJ,GAA2B,UAACC,SAAD,EAAe;AACtC,UAAMnB,IAAI,GAAGzB,KAAK,GAAGyB,IAArB;AACA,UAAIA,IAAI,KAAKmB,SAAS,CAACnB,IAAvB,EAA6B;AACzBA,QAAAA,IAAI,GAAGW,IAAI,EAAP,GAAY9B,KAAK,EAArB;AACH;AACJ,KALD;AAlGoB;AAwGvB;;EA1GeuC;AA6GpBzD,KAAK,CAACkC,gBAAN,GAAyBwB,SAAzB;AACA1D,KAAK,CAACT,YAAN,GAAqBA,YAArB;AACAS,KAAK,CAACF,WAAN,GAAoBA,WAApB;AAEA,cAAeE,KAAf;AAEA,IAAI2D,MAAM,CAACC,0BAAX,EAAuC;AACnC5D,EAAAA,KAAK,CAAC6D,SAAN,GAAkB;AACd9B,IAAAA,SAAS,EAAE+B,SAAS,CAACC,MADP;AAEd/B,IAAAA,GAAG,EAAE8B,SAAS,CAACE,MAFD;AAGd/B,IAAAA,SAAS,EAAE6B,SAAS,CAACG;AAHP,GAAlB;AAKH;;;;"}
|
|
1
|
+
{"version":3,"file":"Modal.js","sources":["../src/react-ui-basics/Modal.js"],"sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport ReactCreateElement from './ReactCreateElement';\nimport './Modal.css'\nimport Button from \"./Button\";\nimport {classNames, orNoop, setTimeout, DOCUMENT, addEventListener, removeEventListener, createRef, UNDEFINED, stopPropagation} from \"./Tools\";\nimport {PureComponent, componentDidMount, render, propsGetter, stateGSs, componentDidUpdate} from \"./ReactConstants\";\nimport MaterialIcon from \"./MaterialIcon\";\nimport PropTypes from \"prop-types\";\n\nlet listenerRef;\nlet zIndex = 100;\n\nconst EVENT_TYPE = 'keydown';\nconst pollListener = (modal) => {\n removeEventListener(DOCUMENT, EVENT_TYPE, listenerRef);\n const listener = modal._pl;\n listener && addEventListener(DOCUMENT, EVENT_TYPE, listener);\n listenerRef = listener;\n};\n\nconst addListener = (modal, listener) => {\n const prev = listenerRef;\n prev && removeEventListener(DOCUMENT, EVENT_TYPE, prev);\n modal._pl = prev;\n addEventListener(DOCUMENT, EVENT_TYPE, listenerRef = listener);\n};\n\nclass Modal extends PureComponent {\n\n constructor(properties) {\n super(properties);\n const that = this;\n that.state = {};\n\n const [\n isShow,\n getMenu,\n getBeforeClose,\n ] = stateGSs(that, 3);\n const overlay = createRef();\n const el = createRef();\n const content = createRef();\n const props = propsGetter(that);\n\n const beforeClose = (e) => {\n stopPropagation(e);\n const bc = getBeforeClose() || props().beforeClose;\n if (!bc || bc(that.close))\n that.close(e);\n };\n\n const shouldClose = (e) => {\n const isSameModal = el().style.zIndex == zIndex - 1;\n !(e && content().contains(e.target)) && isSameModal && beforeClose(e);\n };\n\n const addTransitionListener = () => {\n const transitionend = \"transitionend\";\n let listener = () => {\n removeEventListener(overlay(), transitionend, listener);\n orNoop(isShow() ? props().onOpen : orNoop(props().onClose))();\n el() && (el().style.paddingBottom = isShow() ? '1px' : '0px'); // force invalidate scroll\n };\n addEventListener(overlay(), transitionend, listener);\n };\n that[render] = () => {\n const {className, top, container = Modal.defaultContainer, children, closeIcon = 'close'} = props();\n const menu = getMenu();\n const show = isShow();\n const modal = <div className={classNames(`Modal`, className, show && 'show')} ref={el} onClick={shouldClose}>\n <div ref={overlay} className={classNames(`overlay`, show && 'show')}>\n </div>\n <div className={classNames(`content`, show && 'show', top && 'top')}\n style={top && {top: top + 'px'}}\n ref={content}\n >\n {React.Children.map(children, child => React.cloneElement(child, {\n modalMenuConsumer: getMenu,\n modalBeforeCloseConsumer: getBeforeClose\n }))}\n {menu}\n <Button className=\"close\" flat={true} round={true} onClick={beforeClose}>\n <MaterialIcon icon={closeIcon}/>\n </Button>\n </div>\n </div>;\n\n return container ? ReactDOM.createPortal(modal, container) : modal;\n };\n\n const close = that.close = () => {\n if (!isShow())\n return;\n\n zIndex--;\n addTransitionListener();\n isShow(false);\n\n pollListener(that);\n };\n const open = that.open = () => {\n if (isShow())\n return;\n\n el() && (el().style.zIndex = zIndex++);\n addTransitionListener();\n isShow(true);\n\n let listener = event => {\n if (!event.defaultPrevented && event.keyCode === 27/*escape*/)\n beforeClose();\n return true;\n };\n\n addListener(that, listener)\n };\n\n that[componentDidMount] = () => {\n const _props = props();\n orNoop(_props.open)(() => {\n setTimeout(open, 0);\n });\n orNoop(_props.close)(() => {\n setTimeout(close, 0);\n });\n _props.show && setTimeout(open, 0)\n };\n that[componentDidUpdate] = (prevProps) => {\n const show = props().show;\n if (show !== prevProps.show) {\n show ? open() : close();\n }\n };\n }\n}\n\nModal.defaultContainer = UNDEFINED;\nModal.pollListener = pollListener;\nModal.addListener = addListener;\n\nexport default Modal;\n\nif (window.isNotProductionEnvironment) {\n Modal.propTypes = {\n className: PropTypes.string,\n top: PropTypes.number,\n container: PropTypes.node,\n };\n}"],"names":["listenerRef","zIndex","EVENT_TYPE","pollListener","modal","removeEventListener","DOCUMENT","listener","_pl","addEventListener","addListener","prev","Modal","properties","that","state","stateGSs","isShow","getMenu","getBeforeClose","overlay","createRef","el","content","props","propsGetter","beforeClose","e","stopPropagation","bc","close","shouldClose","isSameModal","style","contains","target","addTransitionListener","transitionend","orNoop","onOpen","onClose","paddingBottom","render","className","top","container","defaultContainer","children","closeIcon","menu","show","classNames","React","Children","map","child","cloneElement","modalMenuConsumer","modalBeforeCloseConsumer","ReactDOM","createPortal","open","event","defaultPrevented","keyCode","componentDidMount","_props","setTimeout","componentDidUpdate","prevProps","PureComponent","UNDEFINED","window","isNotProductionEnvironment","propTypes","PropTypes","string","number","node"],"mappings":"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"}
|
package/TextField.js
CHANGED
|
@@ -110,6 +110,10 @@ var TextField = function (_PureComponent) {
|
|
|
110
110
|
};
|
|
111
111
|
that[componentDidUpdate] = function () {
|
|
112
112
|
if (props().value !== inputRef().value) check();
|
|
113
|
+
var _props4 = props(),
|
|
114
|
+
focused = _props4.focused,
|
|
115
|
+
i = inputRef();
|
|
116
|
+
focused && i.focus();
|
|
113
117
|
};
|
|
114
118
|
that.check = check;
|
|
115
119
|
that.getInput = inputRef;
|
package/TextField.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextField.js","sources":["../src/react-ui-basics/TextField.js"],"sourcesContent":["import React from 'react';\nimport ReactCreateElement from './ReactCreateElement';\nimport './TextField.css'\nimport {classNames, getRandomId, isUndefined, orNoop, addEventListener, createRef, setTimeout} from \"./Tools\";\nimport {PureComponent, render, componentDidMount, propsGetter, stateGSs, componentDidUpdate} from \"./ReactConstants\";\nimport PropTypes from \"prop-types\";\n\nclass TextField extends PureComponent {\n\n constructor(properties) {\n super(properties);\n const that = this;\n that.state = {};\n\n const randomId = getRandomId('tf-');\n const [\n isFocused,\n errorState,\n isWithValue,\n ] = stateGSs(that, 3);\n const props = propsGetter(that);\n\n const inputRef = createRef();\n const check = () => {\n const {required, check} = props();\n const value = inputRef().value;\n const error = (required && value === '') || (check && check(value));\n errorState() !== error && setTimeout(errorState, 0, error);\n return error;\n };\n\n const onChange = (e) => {\n orNoop(props().onChange)(e);\n isWithValue(!!inputRef().value);\n check()\n };\n\n const onFocus = () => {\n isFocused(true);\n orNoop(props().onFocus)();\n };\n const onBlur = () => {\n isFocused(false);\n check();\n orNoop(props().onBlur)();\n };\n\n that[render] = () => {\n const _props = props();\n const {value, name, type, label, check, disabled, required, min, max, onClick, onKeyDown, onKeyUp, onMouseUp, autoComplete, placeholder, className} = _props;\n const id = _props.id || randomId;\n const error = errorState();\n return (\n <div\n className={classNames('TextField',\n isFocused() && 'focused',\n (value || placeholder || (isWithValue() && isUndefined(value))) && 'withValue',\n error && (required || check) && 'errored',\n disabled && 'disabled',\n label && 'withLabel',\n className)}\n onClick={() => {\n inputRef().focus();\n }}\n >\n {label && (<label className={classNames(error && !isFocused() && 'shake')} htmlFor={id}>{label}{required && ' *'}</label>)}\n <input type={type || 'text'} id={id} name={name} value={value} disabled={disabled}\n min={min}\n max={max}\n ref={inputRef}\n onChange={onChange}\n onFocus={onFocus}\n onBlur={onBlur}\n onClick={onClick}\n onKeyDown={onKeyDown}\n onKeyUp={onKeyUp}\n onMouseUp={onMouseUp}\n autoComplete={autoComplete || 'on'}\n placeholder={placeholder}\n />\n <div className=\"border\">\n <div className=\"line\"/>\n </div>\n {error && <div className=\"error\">{error}</div>}\n </div>\n )\n };\n\n that[componentDidMount] = () => {\n const {focused, input} = props(),\n i = inputRef();\n isWithValue(!!i.value);\n focused && i.focus();\n orNoop(input)(i);\n };\n that[componentDidUpdate] = () => {\n if (props().value !== inputRef().value)\n check();\n };\n that.check = check;\n that.getInput = inputRef;\n\n that.withAutofillAnimationCallback = () => {\n addEventListener(inputRef(), 'animationstart', () => {\n isWithValue(true);\n }, false);\n };\n }\n}\n\nif (window.isNotProductionEnvironment) {\n TextField.propTypes = {\n id: PropTypes.string,\n className: PropTypes.string,\n value: PropTypes.string,\n name: PropTypes.string,\n type: PropTypes.string,\n autoComplete: PropTypes.string,\n placeholder: PropTypes.string,\n label: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element\n ]),\n check: PropTypes.func,\n onClick: PropTypes.func,\n onKeyDown: PropTypes.func,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n required: PropTypes.bool,\n disabled: PropTypes.bool,\n min: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number\n ]),\n max: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number\n ]),\n };\n}\n\nexport default TextField\n"],"names":["TextField","properties","that","state","randomId","getRandomId","stateGSs","isFocused","errorState","isWithValue","props","propsGetter","inputRef","createRef","check","required","value","error","setTimeout","onChange","e","orNoop","onFocus","onBlur","render","_props","name","type","label","disabled","min","max","onClick","onKeyDown","onKeyUp","onMouseUp","autoComplete","placeholder","className","id","classNames","isUndefined","focus","componentDidMount","focused","input","i","componentDidUpdate","getInput","withAutofillAnimationCallback","addEventListener","PureComponent","window","isNotProductionEnvironment","propTypes","PropTypes","string","oneOfType","element","func","bool","number"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TextField.js","sources":["../src/react-ui-basics/TextField.js"],"sourcesContent":["import React from 'react';\nimport ReactCreateElement from './ReactCreateElement';\nimport './TextField.css'\nimport {classNames, getRandomId, isUndefined, orNoop, addEventListener, createRef, setTimeout} from \"./Tools\";\nimport {PureComponent, render, componentDidMount, propsGetter, stateGSs, componentDidUpdate} from \"./ReactConstants\";\nimport PropTypes from \"prop-types\";\n\nclass TextField extends PureComponent {\n\n constructor(properties) {\n super(properties);\n const that = this;\n that.state = {};\n\n const randomId = getRandomId('tf-');\n const [\n isFocused,\n errorState,\n isWithValue,\n ] = stateGSs(that, 3);\n const props = propsGetter(that);\n\n const inputRef = createRef();\n const check = () => {\n const {required, check} = props();\n const value = inputRef().value;\n const error = (required && value === '') || (check && check(value));\n errorState() !== error && setTimeout(errorState, 0, error);\n return error;\n };\n\n const onChange = (e) => {\n orNoop(props().onChange)(e);\n isWithValue(!!inputRef().value);\n check()\n };\n\n const onFocus = () => {\n isFocused(true);\n orNoop(props().onFocus)();\n };\n const onBlur = () => {\n isFocused(false);\n check();\n orNoop(props().onBlur)();\n };\n\n that[render] = () => {\n const _props = props();\n const {value, name, type, label, check, disabled, required, min, max, onClick, onKeyDown, onKeyUp, onMouseUp, autoComplete, placeholder, className} = _props;\n const id = _props.id || randomId;\n const error = errorState();\n return (\n <div\n className={classNames('TextField',\n isFocused() && 'focused',\n (value || placeholder || (isWithValue() && isUndefined(value))) && 'withValue',\n error && (required || check) && 'errored',\n disabled && 'disabled',\n label && 'withLabel',\n className)}\n onClick={() => {\n inputRef().focus();\n }}\n >\n {label && (<label className={classNames(error && !isFocused() && 'shake')} htmlFor={id}>{label}{required && ' *'}</label>)}\n <input type={type || 'text'} id={id} name={name} value={value} disabled={disabled}\n min={min}\n max={max}\n ref={inputRef}\n onChange={onChange}\n onFocus={onFocus}\n onBlur={onBlur}\n onClick={onClick}\n onKeyDown={onKeyDown}\n onKeyUp={onKeyUp}\n onMouseUp={onMouseUp}\n autoComplete={autoComplete || 'on'}\n placeholder={placeholder}\n />\n <div className=\"border\">\n <div className=\"line\"/>\n </div>\n {error && <div className=\"error\">{error}</div>}\n </div>\n )\n };\n\n that[componentDidMount] = () => {\n const {focused, input} = props(),\n i = inputRef();\n isWithValue(!!i.value);\n focused && i.focus();\n orNoop(input)(i);\n };\n that[componentDidUpdate] = () => {\n if (props().value !== inputRef().value)\n check();\n const { focused } = props(),\n i = inputRef();\n focused && i.focus();\n };\n that.check = check;\n that.getInput = inputRef;\n\n that.withAutofillAnimationCallback = () => {\n addEventListener(inputRef(), 'animationstart', () => {\n isWithValue(true);\n }, false);\n };\n }\n}\n\nif (window.isNotProductionEnvironment) {\n TextField.propTypes = {\n id: PropTypes.string,\n className: PropTypes.string,\n value: PropTypes.string,\n name: PropTypes.string,\n type: PropTypes.string,\n autoComplete: PropTypes.string,\n placeholder: PropTypes.string,\n label: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element\n ]),\n check: PropTypes.func,\n onClick: PropTypes.func,\n onKeyDown: PropTypes.func,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n required: PropTypes.bool,\n disabled: PropTypes.bool,\n min: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number\n ]),\n max: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number\n ]),\n };\n}\n\nexport default TextField\n"],"names":["TextField","properties","that","state","randomId","getRandomId","stateGSs","isFocused","errorState","isWithValue","props","propsGetter","inputRef","createRef","check","required","value","error","setTimeout","onChange","e","orNoop","onFocus","onBlur","render","_props","name","type","label","disabled","min","max","onClick","onKeyDown","onKeyUp","onMouseUp","autoComplete","placeholder","className","id","classNames","isUndefined","focus","componentDidMount","focused","input","i","componentDidUpdate","getInput","withAutofillAnimationCallback","addEventListener","PureComponent","window","isNotProductionEnvironment","propTypes","PropTypes","string","oneOfType","element","func","bool","number"],"mappings":"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"}
|
package/Tools.js
CHANGED
|
@@ -46,9 +46,9 @@ var allPropsExcept = function allPropsExcept(obj, except) {
|
|
|
46
46
|
};
|
|
47
47
|
var continuousIncludes = function continuousIncludes(value, inc) {
|
|
48
48
|
var length = inc.length;
|
|
49
|
-
var from =
|
|
49
|
+
var from = -1;
|
|
50
50
|
for (var i = 0; i < length; i++) {
|
|
51
|
-
from = value.indexOf(inc[i], from);
|
|
51
|
+
from = value.indexOf(inc[i], from + 1);
|
|
52
52
|
if (from === -1) return false;
|
|
53
53
|
}
|
|
54
54
|
return true;
|