Compare commits

..

No commits in common. "main" and "1.0.0" have entirely different histories.
main ... 1.0.0

12 changed files with 18085 additions and 19382 deletions

Binary file not shown.

View file

@ -1,320 +0,0 @@
import { PureComponent, createRef, createElement } from 'react';
import { View, TouchableOpacity, FlatList, ScrollView, Text } from 'react-native';
import { Big } from 'big.js';
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
var dist = {};
var common$2 = {};
Object.defineProperty(common$2, "__esModule", {
value: true
});
common$2.ensure = void 0;
function ensure(arg) {
if (arg == null) {
throw new Error("Did not expect an argument to be undefined");
}
return arg;
}
common$2.ensure = ensure;
var common$1 = {};
Object.defineProperty(common$1, "__esModule", {
value: true
});
common$1.extractStyles = common$1.mergeNativeStyles = void 0;
function mergeNativeStyles(defaultStyle, overrideStyles) {
const styles = [defaultStyle, ...overrideStyles.filter(object => object !== undefined)];
return Object.keys(defaultStyle).reduce((flattened, currentKey) => {
const styleItems = styles.map(object => object[currentKey]);
return Object.assign(Object.assign({}, flattened), {
[currentKey]: flattenObjects(styleItems)
});
}, {});
}
common$1.mergeNativeStyles = mergeNativeStyles;
function flattenObjects(objects) {
return objects.reduce((merged, object) => Object.assign(Object.assign({}, merged), object), {});
}
function extractStyles(source, extractionKeys) {
if (!source) {
return [{}, {}];
}
return Object.entries(source).reduce(([extracted, rest], [key, value]) => {
if (extractionKeys.includes(key)) {
extracted[key] = value;
} else {
rest[key] = value;
}
return [extracted, rest];
}, [{}, {}]);
}
common$1.extractStyles = extractStyles;
var common = {};
Object.defineProperty(common, "__esModule", {
value: true
});
common.parseInlineStyle = void 0;
function parseInlineStyle(style = "") {
try {
return style.split(";").reduce((styleObject, line) => {
const pair = line.split(":");
if (pair.length === 2) {
const name = pair[0].trim().replace(/(-.)/g, match => match[1].toUpperCase());
styleObject[name] = pair[1].trim();
}
return styleObject;
}, {});
} catch (_) {
return {};
}
}
common.parseInlineStyle = parseInlineStyle;
var typings = {};
var PageEditor = {};
Object.defineProperty(PageEditor, "__esModule", {
value: true
});
(function (exports) {
var __createBinding = commonjsGlobal && commonjsGlobal.__createBinding || (Object.create ? function (o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = {
enumerable: true,
get: function () {
return m[k];
}
};
}
Object.defineProperty(o, k2, desc);
} : function (o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
});
var __exportStar = commonjsGlobal && commonjsGlobal.__exportStar || function (m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
Object.defineProperty(exports, "__esModule", {
value: true
});
__exportStar(PageEditor, exports);
} (typings));
var utils = {};
var PageEditorUtils = {};
Object.defineProperty(PageEditorUtils, "__esModule", {
value: true
});
PageEditorUtils.moveProperty = PageEditorUtils.transformGroupsIntoTabs = PageEditorUtils.changePropertyIn = PageEditorUtils.hideNestedPropertiesIn = PageEditorUtils.hidePropertiesIn = PageEditorUtils.hidePropertyIn = void 0;
function hidePropertyIn(propertyGroups, _value, key, nestedPropIndex, nestedPropKey) {
modifyProperty((_, index, container) => container.splice(index, 1), propertyGroups, key, nestedPropIndex, nestedPropKey);
}
PageEditorUtils.hidePropertyIn = hidePropertyIn;
function hidePropertiesIn(propertyGroups, _value, keys) {
keys.forEach(key => modifyProperty((_, index, container) => container.splice(index, 1), propertyGroups, key, undefined, undefined));
}
PageEditorUtils.hidePropertiesIn = hidePropertiesIn;
function hideNestedPropertiesIn(propertyGroups, _value, key, nestedPropIndex, nestedPropKeys) {
nestedPropKeys.forEach(nestedKey => hidePropertyIn(propertyGroups, _value, key, nestedPropIndex, nestedKey));
}
PageEditorUtils.hideNestedPropertiesIn = hideNestedPropertiesIn;
function changePropertyIn(propertyGroups, _value, modify, key, nestedPropIndex, nestedPropKey) {
modifyProperty(modify, propertyGroups, key, nestedPropIndex, nestedPropKey);
}
PageEditorUtils.changePropertyIn = changePropertyIn;
function transformGroupsIntoTabs(properties) {
const groups = [];
properties.forEach(property => {
if (property.propertyGroups) {
groups.push(...property.propertyGroups);
property.propertyGroups = [];
}
});
properties.push(...groups);
}
PageEditorUtils.transformGroupsIntoTabs = transformGroupsIntoTabs;
function modifyProperty(modify, propertyGroups, key, nestedPropIndex, nestedPropKey) {
propertyGroups.forEach(propGroup => {
var _a;
if (propGroup.propertyGroups) {
modifyProperty(modify, propGroup.propertyGroups, key, nestedPropIndex, nestedPropKey);
}
(_a = propGroup.properties) === null || _a === void 0 ? void 0 : _a.forEach((prop, index, array) => {
if (prop.key === key) {
if (nestedPropIndex === undefined || nestedPropKey === undefined) {
modify(prop, index, array);
} else if (prop.objects) {
modifyProperty(modify, prop.objects[nestedPropIndex].properties, nestedPropKey);
} else if (prop.properties) {
modifyProperty(modify, prop.properties[nestedPropIndex], nestedPropKey);
}
}
});
});
}
function moveProperty(fromIndex, toIndex, properties) {
if (fromIndex >= 0 && toIndex >= 0 && fromIndex < properties.length && toIndex < properties.length && fromIndex !== toIndex) {
properties.splice(toIndex, 0, ...properties.splice(fromIndex, 1));
}
}
PageEditorUtils.moveProperty = moveProperty;
(function (exports) {
var __createBinding = commonjsGlobal && commonjsGlobal.__createBinding || (Object.create ? function (o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = {
enumerable: true,
get: function () {
return m[k];
}
};
}
Object.defineProperty(o, k2, desc);
} : function (o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
});
var __exportStar = commonjsGlobal && commonjsGlobal.__exportStar || function (m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
Object.defineProperty(exports, "__esModule", {
value: true
});
__exportStar(PageEditorUtils, exports);
} (utils));
(function (exports) {
var __createBinding = commonjsGlobal && commonjsGlobal.__createBinding || (Object.create ? function (o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = {
enumerable: true,
get: function () {
return m[k];
}
};
}
Object.defineProperty(o, k2, desc);
} : function (o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
});
var __exportStar = commonjsGlobal && commonjsGlobal.__exportStar || function (m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
Object.defineProperty(exports, "__esModule", {
value: true
});
__exportStar(common$2, exports);
__exportStar(common$1, exports);
__exportStar(common, exports);
__exportStar(typings, exports);
__exportStar(utils, exports);
} (dist));
let clickTimer;
const defaultStyle = {
footer: { marginBottom: 0 }
};
class CustomListView extends PureComponent {
constructor(props) {
var _a;
super(props);
this.styles = dist.mergeNativeStyles(defaultStyle, this.props.style);
this.renderFlatListHandler = this.renderFlatList.bind(this);
this.renderScrollViewHandler = this.renderScrollView.bind(this);
this.onClickHandler = this.onClick.bind(this);
this.renderEmptyHandler = this.renderEmpty.bind(this);
this.renderFooterHandler = this.renderFooter.bind(this);
this.flatListRef = createRef();
this.renderItem = ({ item, index }) => {
const { container, useItemLayout, itemSize } = this.props;
return (createElement(View, null,
createElement(TouchableOpacity, { onPress: () => this.onClickHandler(item, index), disabled: this.state.clickDisabled },
createElement(View, { key: item.id, style: useItemLayout ? { height: Number(itemSize) } : null }, container.get(item)))));
};
this.scrollToOffset = (index) => {
var _a, _b;
const { itemSize } = this.props;
(_a = this.flatListRef.current) === null || _a === void 0 ? void 0 : _a.scrollToOffset({ animated: true, offset: index * Number(itemSize) });
(_b = this.props.scrollToItem) === null || _b === void 0 ? void 0 : _b.setValue(false);
};
this.state = {
clickDisabled: false,
scrollIndex: Number((_a = this.props.scrollItem) === null || _a === void 0 ? void 0 : _a.displayValue),
};
}
render() {
const { scrollView } = this.props;
return (createElement(View, null, scrollView ? createElement(this.renderScrollViewHandler, null) : createElement(this.renderFlatListHandler, null)));
}
renderFlatList() {
const { ds, windowSize, initialNumToRender, removeClippedSubviews, maxNumberToRenderPerBatch, cellBatchingSize, useItemLayout, itemSize } = this.props;
const size = Number(itemSize);
return (createElement(View, null, useItemLayout ? (createElement(FlatList, { getItemLayout: (data, index) => ({
length: size,
offset: size * index,
index,
data
}), ref: this.flatListRef, data: ds === null || ds === void 0 ? void 0 : ds.items, renderItem: this.renderItem, windowSize: windowSize, initialNumToRender: initialNumToRender, removeClippedSubviews: removeClippedSubviews, ListEmptyComponent: this.renderEmptyHandler(), maxToRenderPerBatch: maxNumberToRenderPerBatch, ListFooterComponent: this.renderFooterHandler() })) : (createElement(FlatList, { data: ds === null || ds === void 0 ? void 0 : ds.items, renderItem: this.renderItem, windowSize: windowSize, initialNumToRender: initialNumToRender, removeClippedSubviews: removeClippedSubviews, ListEmptyComponent: this.renderEmptyHandler(), maxToRenderPerBatch: maxNumberToRenderPerBatch, ListFooterComponent: this.renderFooterHandler(), updateCellsBatchingPeriod: cellBatchingSize }))));
}
renderScrollView() {
var _a;
const { ds, container } = this.props;
return (createElement(View, null,
createElement(ScrollView, null, (_a = ds.items) === null || _a === void 0 ? void 0 : _a.map((item) => createElement(View, { key: item.id }, container.get(item))))));
}
renderFooter() {
return createElement(View, { style: this.styles.footer });
}
renderEmpty() {
const { emptyMessage } = this.props;
return createElement(View, null,
createElement(Text, null, emptyMessage));
}
onClick(item, index) {
var _a;
const { onClick, scrollItem } = this.props;
if (!this.state.clickDisabled) {
this.setState({ clickDisabled: true });
(_a = onClick === null || onClick === void 0 ? void 0 : onClick.get(item)) === null || _a === void 0 ? void 0 : _a.execute();
scrollItem === null || scrollItem === void 0 ? void 0 : scrollItem.setValue(new Big(index));
clickTimer = window.setTimeout(() => this.setState({ clickDisabled: false }), 3000);
}
}
componentDidMount() {
const { scrollToItem, useItemLayout } = this.props;
if (useItemLayout) {
setTimeout(() => {
if (useItemLayout) {
(scrollToItem === null || scrollToItem === void 0 ? void 0 : scrollToItem.value) ? this.scrollToOffset(this.state.scrollIndex) : null;
}
}, 100);
}
}
componentWillUnmount() {
const { scrollToItem } = this.props;
clearTimeout(clickTimer);
scrollToItem === null || scrollToItem === void 0 ? void 0 : scrollToItem.setValue(false);
}
}
export { CustomListView };

View file

@ -1,320 +0,0 @@
import { PureComponent, createRef, createElement } from 'react';
import { View, TouchableOpacity, FlatList, ScrollView, Text } from 'react-native';
import { Big } from 'big.js';
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
var dist = {};
var common$2 = {};
Object.defineProperty(common$2, "__esModule", {
value: true
});
common$2.ensure = void 0;
function ensure(arg) {
if (arg == null) {
throw new Error("Did not expect an argument to be undefined");
}
return arg;
}
common$2.ensure = ensure;
var common$1 = {};
Object.defineProperty(common$1, "__esModule", {
value: true
});
common$1.extractStyles = common$1.mergeNativeStyles = void 0;
function mergeNativeStyles(defaultStyle, overrideStyles) {
const styles = [defaultStyle, ...overrideStyles.filter(object => object !== undefined)];
return Object.keys(defaultStyle).reduce((flattened, currentKey) => {
const styleItems = styles.map(object => object[currentKey]);
return Object.assign(Object.assign({}, flattened), {
[currentKey]: flattenObjects(styleItems)
});
}, {});
}
common$1.mergeNativeStyles = mergeNativeStyles;
function flattenObjects(objects) {
return objects.reduce((merged, object) => Object.assign(Object.assign({}, merged), object), {});
}
function extractStyles(source, extractionKeys) {
if (!source) {
return [{}, {}];
}
return Object.entries(source).reduce(([extracted, rest], [key, value]) => {
if (extractionKeys.includes(key)) {
extracted[key] = value;
} else {
rest[key] = value;
}
return [extracted, rest];
}, [{}, {}]);
}
common$1.extractStyles = extractStyles;
var common = {};
Object.defineProperty(common, "__esModule", {
value: true
});
common.parseInlineStyle = void 0;
function parseInlineStyle(style = "") {
try {
return style.split(";").reduce((styleObject, line) => {
const pair = line.split(":");
if (pair.length === 2) {
const name = pair[0].trim().replace(/(-.)/g, match => match[1].toUpperCase());
styleObject[name] = pair[1].trim();
}
return styleObject;
}, {});
} catch (_) {
return {};
}
}
common.parseInlineStyle = parseInlineStyle;
var typings = {};
var PageEditor = {};
Object.defineProperty(PageEditor, "__esModule", {
value: true
});
(function (exports) {
var __createBinding = commonjsGlobal && commonjsGlobal.__createBinding || (Object.create ? function (o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = {
enumerable: true,
get: function () {
return m[k];
}
};
}
Object.defineProperty(o, k2, desc);
} : function (o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
});
var __exportStar = commonjsGlobal && commonjsGlobal.__exportStar || function (m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
Object.defineProperty(exports, "__esModule", {
value: true
});
__exportStar(PageEditor, exports);
} (typings));
var utils = {};
var PageEditorUtils = {};
Object.defineProperty(PageEditorUtils, "__esModule", {
value: true
});
PageEditorUtils.moveProperty = PageEditorUtils.transformGroupsIntoTabs = PageEditorUtils.changePropertyIn = PageEditorUtils.hideNestedPropertiesIn = PageEditorUtils.hidePropertiesIn = PageEditorUtils.hidePropertyIn = void 0;
function hidePropertyIn(propertyGroups, _value, key, nestedPropIndex, nestedPropKey) {
modifyProperty((_, index, container) => container.splice(index, 1), propertyGroups, key, nestedPropIndex, nestedPropKey);
}
PageEditorUtils.hidePropertyIn = hidePropertyIn;
function hidePropertiesIn(propertyGroups, _value, keys) {
keys.forEach(key => modifyProperty((_, index, container) => container.splice(index, 1), propertyGroups, key, undefined, undefined));
}
PageEditorUtils.hidePropertiesIn = hidePropertiesIn;
function hideNestedPropertiesIn(propertyGroups, _value, key, nestedPropIndex, nestedPropKeys) {
nestedPropKeys.forEach(nestedKey => hidePropertyIn(propertyGroups, _value, key, nestedPropIndex, nestedKey));
}
PageEditorUtils.hideNestedPropertiesIn = hideNestedPropertiesIn;
function changePropertyIn(propertyGroups, _value, modify, key, nestedPropIndex, nestedPropKey) {
modifyProperty(modify, propertyGroups, key, nestedPropIndex, nestedPropKey);
}
PageEditorUtils.changePropertyIn = changePropertyIn;
function transformGroupsIntoTabs(properties) {
const groups = [];
properties.forEach(property => {
if (property.propertyGroups) {
groups.push(...property.propertyGroups);
property.propertyGroups = [];
}
});
properties.push(...groups);
}
PageEditorUtils.transformGroupsIntoTabs = transformGroupsIntoTabs;
function modifyProperty(modify, propertyGroups, key, nestedPropIndex, nestedPropKey) {
propertyGroups.forEach(propGroup => {
var _a;
if (propGroup.propertyGroups) {
modifyProperty(modify, propGroup.propertyGroups, key, nestedPropIndex, nestedPropKey);
}
(_a = propGroup.properties) === null || _a === void 0 ? void 0 : _a.forEach((prop, index, array) => {
if (prop.key === key) {
if (nestedPropIndex === undefined || nestedPropKey === undefined) {
modify(prop, index, array);
} else if (prop.objects) {
modifyProperty(modify, prop.objects[nestedPropIndex].properties, nestedPropKey);
} else if (prop.properties) {
modifyProperty(modify, prop.properties[nestedPropIndex], nestedPropKey);
}
}
});
});
}
function moveProperty(fromIndex, toIndex, properties) {
if (fromIndex >= 0 && toIndex >= 0 && fromIndex < properties.length && toIndex < properties.length && fromIndex !== toIndex) {
properties.splice(toIndex, 0, ...properties.splice(fromIndex, 1));
}
}
PageEditorUtils.moveProperty = moveProperty;
(function (exports) {
var __createBinding = commonjsGlobal && commonjsGlobal.__createBinding || (Object.create ? function (o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = {
enumerable: true,
get: function () {
return m[k];
}
};
}
Object.defineProperty(o, k2, desc);
} : function (o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
});
var __exportStar = commonjsGlobal && commonjsGlobal.__exportStar || function (m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
Object.defineProperty(exports, "__esModule", {
value: true
});
__exportStar(PageEditorUtils, exports);
} (utils));
(function (exports) {
var __createBinding = commonjsGlobal && commonjsGlobal.__createBinding || (Object.create ? function (o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = {
enumerable: true,
get: function () {
return m[k];
}
};
}
Object.defineProperty(o, k2, desc);
} : function (o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
});
var __exportStar = commonjsGlobal && commonjsGlobal.__exportStar || function (m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
Object.defineProperty(exports, "__esModule", {
value: true
});
__exportStar(common$2, exports);
__exportStar(common$1, exports);
__exportStar(common, exports);
__exportStar(typings, exports);
__exportStar(utils, exports);
} (dist));
let clickTimer;
const defaultStyle = {
footer: { marginBottom: 0 }
};
class CustomListView extends PureComponent {
constructor(props) {
var _a;
super(props);
this.styles = dist.mergeNativeStyles(defaultStyle, this.props.style);
this.renderFlatListHandler = this.renderFlatList.bind(this);
this.renderScrollViewHandler = this.renderScrollView.bind(this);
this.onClickHandler = this.onClick.bind(this);
this.renderEmptyHandler = this.renderEmpty.bind(this);
this.renderFooterHandler = this.renderFooter.bind(this);
this.flatListRef = createRef();
this.renderItem = ({ item, index }) => {
const { container, useItemLayout, itemSize } = this.props;
return (createElement(View, null,
createElement(TouchableOpacity, { onPress: () => this.onClickHandler(item, index), disabled: this.state.clickDisabled },
createElement(View, { key: item.id, style: useItemLayout ? { height: Number(itemSize) } : null }, container.get(item)))));
};
this.scrollToOffset = (index) => {
var _a, _b;
const { itemSize } = this.props;
(_a = this.flatListRef.current) === null || _a === void 0 ? void 0 : _a.scrollToOffset({ animated: true, offset: index * Number(itemSize) });
(_b = this.props.scrollToItem) === null || _b === void 0 ? void 0 : _b.setValue(false);
};
this.state = {
clickDisabled: false,
scrollIndex: Number((_a = this.props.scrollItem) === null || _a === void 0 ? void 0 : _a.displayValue),
};
}
render() {
const { scrollView } = this.props;
return (createElement(View, null, scrollView ? createElement(this.renderScrollViewHandler, null) : createElement(this.renderFlatListHandler, null)));
}
renderFlatList() {
const { ds, windowSize, initialNumToRender, removeClippedSubviews, maxNumberToRenderPerBatch, cellBatchingSize, useItemLayout, itemSize } = this.props;
const size = Number(itemSize);
return (createElement(View, null, useItemLayout ? (createElement(FlatList, { getItemLayout: (data, index) => ({
length: size,
offset: size * index,
index,
data
}), ref: this.flatListRef, data: ds === null || ds === void 0 ? void 0 : ds.items, renderItem: this.renderItem, windowSize: windowSize, initialNumToRender: initialNumToRender, removeClippedSubviews: removeClippedSubviews, ListEmptyComponent: this.renderEmptyHandler(), maxToRenderPerBatch: maxNumberToRenderPerBatch, ListFooterComponent: this.renderFooterHandler() })) : (createElement(FlatList, { data: ds === null || ds === void 0 ? void 0 : ds.items, renderItem: this.renderItem, windowSize: windowSize, initialNumToRender: initialNumToRender, removeClippedSubviews: removeClippedSubviews, ListEmptyComponent: this.renderEmptyHandler(), maxToRenderPerBatch: maxNumberToRenderPerBatch, ListFooterComponent: this.renderFooterHandler(), updateCellsBatchingPeriod: cellBatchingSize }))));
}
renderScrollView() {
var _a;
const { ds, container } = this.props;
return (createElement(View, null,
createElement(ScrollView, null, (_a = ds.items) === null || _a === void 0 ? void 0 : _a.map((item) => createElement(View, { key: item.id }, container.get(item))))));
}
renderFooter() {
return createElement(View, { style: this.styles.footer });
}
renderEmpty() {
const { emptyMessage } = this.props;
return createElement(View, null,
createElement(Text, null, emptyMessage));
}
onClick(item, index) {
var _a;
const { onClick, scrollItem } = this.props;
if (!this.state.clickDisabled) {
this.setState({ clickDisabled: true });
(_a = onClick === null || onClick === void 0 ? void 0 : onClick.get(item)) === null || _a === void 0 ? void 0 : _a.execute();
scrollItem === null || scrollItem === void 0 ? void 0 : scrollItem.setValue(new Big(index));
clickTimer = window.setTimeout(() => this.setState({ clickDisabled: false }), 3000);
}
}
componentDidMount() {
const { scrollToItem, useItemLayout } = this.props;
if (useItemLayout) {
setTimeout(() => {
if (useItemLayout) {
(scrollToItem === null || scrollToItem === void 0 ? void 0 : scrollToItem.value) ? this.scrollToOffset(this.state.scrollIndex) : null;
}
}, 100);
}
}
componentWillUnmount() {
const { scrollToItem } = this.props;
clearTimeout(clickTimer);
scrollToItem === null || scrollToItem === void 0 ? void 0 : scrollToItem.setValue(false);
}
}
export { CustomListView };

View file

@ -0,0 +1,378 @@
module.exports =
/******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ __webpack_require__.t = function(value, mode) {
/******/ if(mode & 1) value = __webpack_require__(value);
/******/ if(mode & 8) return value;
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ var ns = Object.create(null);
/******/ __webpack_require__.r(ns);
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ return ns;
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = "./src/CustomListView.tsx");
/******/ })
/************************************************************************/
/******/ ({
/***/ "./node_modules/@babel/runtime/helpers/arrayLikeToArray.js":
/*!*****************************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/arrayLikeToArray.js ***!
\*****************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
function _arrayLikeToArray(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++){arr2[i]=arr[i];}return arr2;}module.exports=_arrayLikeToArray;
/***/ }),
/***/ "./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js":
/*!******************************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js ***!
\******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var arrayLikeToArray=__webpack_require__(/*! ./arrayLikeToArray */ "./node_modules/@babel/runtime/helpers/arrayLikeToArray.js");function _arrayWithoutHoles(arr){if(Array.isArray(arr))return arrayLikeToArray(arr);}module.exports=_arrayWithoutHoles;
/***/ }),
/***/ "./node_modules/@babel/runtime/helpers/defineProperty.js":
/*!***************************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/defineProperty.js ***!
\***************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}module.exports=_defineProperty;
/***/ }),
/***/ "./node_modules/@babel/runtime/helpers/extends.js":
/*!********************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/extends.js ***!
\********************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
function _extends(){module.exports=_extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};return _extends.apply(this,arguments);}module.exports=_extends;
/***/ }),
/***/ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js":
/*!**********************************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/interopRequireDefault.js ***!
\**********************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj};}module.exports=_interopRequireDefault;
/***/ }),
/***/ "./node_modules/@babel/runtime/helpers/iterableToArray.js":
/*!****************************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/iterableToArray.js ***!
\****************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
function _iterableToArray(iter){if(typeof Symbol!=="undefined"&&Symbol.iterator in Object(iter))return Array.from(iter);}module.exports=_iterableToArray;
/***/ }),
/***/ "./node_modules/@babel/runtime/helpers/nonIterableSpread.js":
/*!******************************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/nonIterableSpread.js ***!
\******************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");}module.exports=_nonIterableSpread;
/***/ }),
/***/ "./node_modules/@babel/runtime/helpers/toConsumableArray.js":
/*!******************************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/toConsumableArray.js ***!
\******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var arrayWithoutHoles=__webpack_require__(/*! ./arrayWithoutHoles */ "./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js");var iterableToArray=__webpack_require__(/*! ./iterableToArray */ "./node_modules/@babel/runtime/helpers/iterableToArray.js");var unsupportedIterableToArray=__webpack_require__(/*! ./unsupportedIterableToArray */ "./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js");var nonIterableSpread=__webpack_require__(/*! ./nonIterableSpread */ "./node_modules/@babel/runtime/helpers/nonIterableSpread.js");function _toConsumableArray(arr){return arrayWithoutHoles(arr)||iterableToArray(arr)||unsupportedIterableToArray(arr)||nonIterableSpread();}module.exports=_toConsumableArray;
/***/ }),
/***/ "./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js":
/*!***************************************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js ***!
\***************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var arrayLikeToArray=__webpack_require__(/*! ./arrayLikeToArray */ "./node_modules/@babel/runtime/helpers/arrayLikeToArray.js");function _unsupportedIterableToArray(o,minLen){if(!o)return;if(typeof o==="string")return arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(o);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return arrayLikeToArray(o,minLen);}module.exports=_unsupportedIterableToArray;
/***/ }),
/***/ "./node_modules/@mendix/pluggable-widgets-tools/dist/index.js":
/*!********************************************************************!*\
!*** ./node_modules/@mendix/pluggable-widgets-tools/dist/index.js ***!
\********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var __createBinding=this&&this.__createBinding||(Object.create?function(o,m,k,k2){if(k2===undefined)k2=k;Object.defineProperty(o,k2,{enumerable:true,get:function get(){return m[k];}});}:function(o,m,k,k2){if(k2===undefined)k2=k;o[k2]=m[k];});var __exportStar=this&&this.__exportStar||function(m,exports){for(var p in m){if(p!=="default"&&!exports.hasOwnProperty(p))__createBinding(exports,m,p);}};Object.defineProperty(exports,"__esModule",{value:true});__exportStar(__webpack_require__(/*! ./native/common */ "./node_modules/@mendix/pluggable-widgets-tools/dist/native/common.js"),exports);__exportStar(__webpack_require__(/*! ./web/common */ "./node_modules/@mendix/pluggable-widgets-tools/dist/web/common.js"),exports);
/***/ }),
/***/ "./node_modules/@mendix/pluggable-widgets-tools/dist/native/common.js":
/*!****************************************************************************!*\
!*** ./node_modules/@mendix/pluggable-widgets-tools/dist/native/common.js ***!
\****************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var _interopRequireDefault=__webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js");var _defineProperty2=_interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "./node_modules/@babel/runtime/helpers/defineProperty.js"));var _extends3=_interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "./node_modules/@babel/runtime/helpers/extends.js"));var _toConsumableArray2=_interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ "./node_modules/@babel/runtime/helpers/toConsumableArray.js"));Object.defineProperty(exports,"__esModule",{value:true});exports.mergeNativeStyles=void 0;function mergeNativeStyles(defaultStyle,overrideStyles){var styles=[defaultStyle].concat((0,_toConsumableArray2.default)(overrideStyles.filter(function(object){return object!==undefined;})));return Object.keys(defaultStyle).reduce(function(flattened,currentKey){var styleItems=styles.map(function(object){return object[currentKey];});return(0,_extends3.default)((0,_extends3.default)({},flattened),(0,_defineProperty2.default)({},currentKey,flattenObjects(styleItems)));},{});}exports.mergeNativeStyles=mergeNativeStyles;function flattenObjects(objects){return objects.reduce(function(merged,object){return(0,_extends3.default)((0,_extends3.default)({},merged),object);},{});}
/***/ }),
/***/ "./node_modules/@mendix/pluggable-widgets-tools/dist/web/common.js":
/*!*************************************************************************!*\
!*** ./node_modules/@mendix/pluggable-widgets-tools/dist/web/common.js ***!
\*************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports,"__esModule",{value:true});exports.parseInlineStyle=void 0;function parseInlineStyle(){var style=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"";try{return style.split(";").reduce(function(styleObject,line){var pair=line.split(":");if(pair.length===2){var name=pair[0].trim().replace(/(-.)/g,function(match){return match[1].toUpperCase();});styleObject[name]=pair[1].trim();}return styleObject;},{});}catch(_){return{};}}exports.parseInlineStyle=parseInlineStyle;
/***/ }),
/***/ "./src/CustomListView.tsx":
/*!********************************!*\
!*** ./src/CustomListView.tsx ***!
\********************************/
/*! exports provided: CustomListView */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CustomListView", function() { return CustomListView; });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var react_native__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-native */ "react-native");
/* harmony import */ var react_native__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_native__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var big_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! big.js */ "big.js");
/* harmony import */ var big_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(big_js__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _mendix_pluggable_widgets_tools__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mendix/pluggable-widgets-tools */ "./node_modules/@mendix/pluggable-widgets-tools/dist/index.js");
/* harmony import */ var _mendix_pluggable_widgets_tools__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_mendix_pluggable_widgets_tools__WEBPACK_IMPORTED_MODULE_3__);
let clickTimer;
const defaultStyle = {
footer: {
marginBottom: 300,
}
};
class CustomListView extends react__WEBPACK_IMPORTED_MODULE_0__["PureComponent"] {
constructor(props) {
var _a;
super(props);
this.styles = Object(_mendix_pluggable_widgets_tools__WEBPACK_IMPORTED_MODULE_3__["mergeNativeStyles"])(defaultStyle, this.props.style);
this.renderFlatListHandler = this.renderFlatList.bind(this);
this.renderScrollViewHandler = this.renderScrollView.bind(this);
this.onClickHandler = this.onClick.bind(this);
this.renderEmptyHandler = this.renderEmpty.bind(this);
this.renderFooterHandler = this.renderFooter.bind(this);
this.flatListRef = Object(react__WEBPACK_IMPORTED_MODULE_0__["createRef"])();
this.renderItem = ({ item, index }) => {
const { container, useItemLayout, itemSize } = this.props;
return (Object(react__WEBPACK_IMPORTED_MODULE_0__["createElement"])(react_native__WEBPACK_IMPORTED_MODULE_1__["View"], null,
Object(react__WEBPACK_IMPORTED_MODULE_0__["createElement"])(react_native__WEBPACK_IMPORTED_MODULE_1__["TouchableOpacity"], { onPress: () => this.onClickHandler(item, index), disabled: this.state.clickDisabled },
Object(react__WEBPACK_IMPORTED_MODULE_0__["createElement"])(react_native__WEBPACK_IMPORTED_MODULE_1__["View"], { key: item.id, style: useItemLayout ? { height: Number(itemSize) } : null }, container(item)))));
};
this.scrollToOffset = (index) => {
var _a, _b;
const { itemSize } = this.props;
(_a = this.flatListRef.current) === null || _a === void 0 ? void 0 : _a.scrollToOffset({ animated: true, offset: index * Number(itemSize) });
(_b = this.props.scrollToItem) === null || _b === void 0 ? void 0 : _b.setValue(false);
};
this.state = {
clickDisabled: false,
scrollIndex: Number((_a = this.props.scrollItem) === null || _a === void 0 ? void 0 : _a.displayValue),
};
}
render() {
const { scrollView } = this.props;
return (Object(react__WEBPACK_IMPORTED_MODULE_0__["createElement"])(react_native__WEBPACK_IMPORTED_MODULE_1__["View"], null, scrollView ? Object(react__WEBPACK_IMPORTED_MODULE_0__["createElement"])(this.renderScrollViewHandler, null) : Object(react__WEBPACK_IMPORTED_MODULE_0__["createElement"])(this.renderFlatListHandler, null)));
}
renderFlatList() {
const { ds, windowSize, initialNumToRender, removeClippedSubviews, maxNumberToRenderPerBatch, cellBatchingSize, useItemLayout, itemSize } = this.props;
const size = Number(itemSize);
return (Object(react__WEBPACK_IMPORTED_MODULE_0__["createElement"])(react_native__WEBPACK_IMPORTED_MODULE_1__["View"], null, useItemLayout ?
Object(react__WEBPACK_IMPORTED_MODULE_0__["createElement"])(react_native__WEBPACK_IMPORTED_MODULE_1__["FlatList"], { getItemLayout: (data, index) => ({
length: size,
offset: size * index,
index,
data
}), ref: this.flatListRef, data: ds === null || ds === void 0 ? void 0 : ds.items, renderItem: this.renderItem, windowSize: windowSize, initialNumToRender: initialNumToRender, removeClippedSubviews: removeClippedSubviews, ListEmptyComponent: this.renderEmptyHandler(), maxToRenderPerBatch: maxNumberToRenderPerBatch, ListFooterComponent: this.renderFooterHandler() })
:
Object(react__WEBPACK_IMPORTED_MODULE_0__["createElement"])(react_native__WEBPACK_IMPORTED_MODULE_1__["FlatList"], { data: ds === null || ds === void 0 ? void 0 : ds.items, renderItem: this.renderItem, windowSize: windowSize, initialNumToRender: initialNumToRender, removeClippedSubviews: removeClippedSubviews, ListEmptyComponent: this.renderEmptyHandler(), maxToRenderPerBatch: maxNumberToRenderPerBatch, ListFooterComponent: this.renderFooterHandler(), updateCellsBatchingPeriod: cellBatchingSize })));
}
renderScrollView() {
var _a;
const { ds, container } = this.props;
return (Object(react__WEBPACK_IMPORTED_MODULE_0__["createElement"])(react_native__WEBPACK_IMPORTED_MODULE_1__["View"], null,
Object(react__WEBPACK_IMPORTED_MODULE_0__["createElement"])(react_native__WEBPACK_IMPORTED_MODULE_1__["ScrollView"], null, (_a = ds.items) === null || _a === void 0 ? void 0 : _a.map((item) => Object(react__WEBPACK_IMPORTED_MODULE_0__["createElement"])(react_native__WEBPACK_IMPORTED_MODULE_1__["View"], { key: item.id }, container(item))))));
}
renderFooter() {
return Object(react__WEBPACK_IMPORTED_MODULE_0__["createElement"])(react_native__WEBPACK_IMPORTED_MODULE_1__["View"], { style: this.styles.footer });
}
renderEmpty() {
const { emptyMessage } = this.props;
return Object(react__WEBPACK_IMPORTED_MODULE_0__["createElement"])(react_native__WEBPACK_IMPORTED_MODULE_1__["View"], null,
Object(react__WEBPACK_IMPORTED_MODULE_0__["createElement"])(react_native__WEBPACK_IMPORTED_MODULE_1__["Text"], null, emptyMessage));
}
onClick(item, index) {
const { onClick, scrollItem } = this.props;
const actionValue = onClick(item);
if (!this.state.clickDisabled) {
this.setState({ clickDisabled: true });
actionValue.execute();
scrollItem === null || scrollItem === void 0 ? void 0 : scrollItem.setValue(new big_js__WEBPACK_IMPORTED_MODULE_2__["Big"](index));
clickTimer = setTimeout(() => {
this.setState({ clickDisabled: false });
}, 3000);
}
}
componentDidMount() {
const { scrollToItem, useItemLayout } = this.props;
if (useItemLayout) {
setTimeout(() => {
if (useItemLayout) {
(scrollToItem === null || scrollToItem === void 0 ? void 0 : scrollToItem.value) ? this.scrollToOffset(this.state.scrollIndex) : null;
}
}, 100);
}
}
componentWillUnmount() {
const { scrollToItem } = this.props;
clearTimeout(clickTimer);
scrollToItem === null || scrollToItem === void 0 ? void 0 : scrollToItem.setValue(false);
}
}
/***/ }),
/***/ "big.js":
/*!*************************!*\
!*** external "big.js" ***!
\*************************/
/*! no static exports found */
/***/ (function(module, exports) {
module.exports = require("big.js");
/***/ }),
/***/ "react":
/*!************************!*\
!*** external "react" ***!
\************************/
/*! no static exports found */
/***/ (function(module, exports) {
module.exports = require("react");
/***/ }),
/***/ "react-native":
/*!*******************************!*\
!*** external "react-native" ***!
\*******************************/
/*! no static exports found */
/***/ (function(module, exports) {
module.exports = require("react-native");
/***/ })
/******/ });
//# sourceMappingURL=CustomListView.js.map

File diff suppressed because one or more lines are too long

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<package xmlns="http://www.mendix.com/package/1.0/">
<clientModule name="CustomListView" version="1.0.1" xmlns="http://www.mendix.com/clientModule/1.0/">
<clientModule name="CustomListView" version="1.0.0" xmlns="http://www.mendix.com/clientModule/1.0/">
<widgetFiles>
<widgetFile path="CustomListView.xml"/>
</widgetFiles>

36368
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -1,7 +1,7 @@
{
"name": "customlistview",
"widgetName": "CustomListView",
"version": "1.0.1",
"version": "1.0.0",
"description": "Custom Listview",
"copyright": "2020 Incentro Business Acceleration B.V.",
"author": "Bart Onstee",
@ -23,23 +23,10 @@
"url": "https://github.com/Bart Onstee/customlistview/issues"
},
"devDependencies": {
"@mendix/pluggable-widgets-tools": "^9.24.0",
"@types/big.js": "^6.1.6"
"@mendix/pluggable-widgets-tools": "^8.12.0",
"@types/big.js": "^4.0.5",
"@types/react": "~16.9.0",
"@types/react-native": "~0.61.23"
},
"overrides": {
"react": "18.2.0",
"react-dom": "18.2.0",
"react-native": "0.70.7",
"@types/react": "18.0.0",
"@types/react-dom": "18.0.0",
"@types/react-native": "0.70.0"
},
"resolutions": {
"react": "18.2.0",
"react-dom": "18.2.0",
"react-native": "0.70.7",
"@types/react": "18.0.0",
"@types/react-dom": "18.0.0",
"@types/react-native": "0.70.0"
}
"dependencies": {}
}

View file

@ -13,7 +13,9 @@ export interface CustomStyle extends Style {
}
const defaultStyle: CustomStyle = {
footer: { marginBottom: 0 }
footer: {
marginBottom: 300,
}
};
interface State {
@ -49,14 +51,14 @@ export class CustomListView extends PureComponent<CustomListViewProps<CustomStyl
const size = Number(itemSize)
return (
<View>
{useItemLayout ? (
{useItemLayout ?
<FlatList
getItemLayout={(data: any, index: number) => ({
getItemLayout={(data, index) => ({
length: size,
offset: size * index,
index,
data
})}
})}
ref={this.flatListRef}
data={ds?.items}
renderItem={this.renderItem}
@ -67,7 +69,7 @@ export class CustomListView extends PureComponent<CustomListViewProps<CustomStyl
maxToRenderPerBatch={maxNumberToRenderPerBatch}
ListFooterComponent={this.renderFooterHandler()}
/>
) : (
:
<FlatList
data={ds?.items}
renderItem={this.renderItem}
@ -79,7 +81,7 @@ export class CustomListView extends PureComponent<CustomListViewProps<CustomStyl
ListFooterComponent={this.renderFooterHandler()}
updateCellsBatchingPeriod={cellBatchingSize}
/>
)}
}
</View>
);
}
@ -89,7 +91,7 @@ export class CustomListView extends PureComponent<CustomListViewProps<CustomStyl
return (
<View>
<ScrollView>
{ds.items?.map((item: { id: any; }) => <View key={item.id}>{container.get(item)}</View>)}
{ds.items?.map((item) => <View key={item.id}>{container(item)}</View>)}
</ScrollView>
</View>
);
@ -100,7 +102,7 @@ export class CustomListView extends PureComponent<CustomListViewProps<CustomStyl
return (
<View>
<TouchableOpacity onPress={() => this.onClickHandler(item, index)} disabled={this.state.clickDisabled}>
<View key={item.id} style={useItemLayout ? { height: Number(itemSize) } : null}>{container.get(item)}</View>
<View key={item.id} style={useItemLayout ? { height: Number(itemSize) } : null}>{container(item)}</View>
</TouchableOpacity>
</View>
)
@ -123,11 +125,14 @@ export class CustomListView extends PureComponent<CustomListViewProps<CustomStyl
onClick(item: ObjectItem, index: number) {
const { onClick, scrollItem } = this.props;
const actionValue = onClick!(item);
if (!this.state.clickDisabled) {
this.setState({ clickDisabled: true });
onClick?.get(item)?.execute();
actionValue.execute();
scrollItem?.setValue(new Big(index));
clickTimer = window.setTimeout(() => this.setState({ clickDisabled: false }), 3000);
clickTimer = setTimeout(() => {
this.setState({ clickDisabled: false });
}, 3000);
}
}

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<package xmlns="http://www.mendix.com/package/1.0/">
<clientModule name="CustomListView" version="1.0.1" xmlns="http://www.mendix.com/clientModule/1.0/">
<clientModule name="CustomListView" version="1.0.0" xmlns="http://www.mendix.com/clientModule/1.0/">
<widgetFiles>
<widgetFile path="CustomListView.xml"/>
</widgetFiles>

View file

@ -1,6 +1,3 @@
{
"extends": "./node_modules/@mendix/pluggable-widgets-tools/configs/tsconfig.base.json",
"compilerOptions": {
"jsx": "react"
}
"extends": "./node_modules/@mendix/pluggable-widgets-tools/configs/tsconfig.base.json"
}

View file

@ -1,11 +1,10 @@
/**
* This file was generated from CustomListView.xml
* WARNING: All changes made to this file will be overwritten
* @author Mendix Widgets Framework Team
* @author Mendix UI Content Team
*/
import { ComponentType, CSSProperties, ReactNode } from "react";
import { ComponentType } from "react";
import { EditableValue, ListValue, ListActionValue, ListWidgetValue } from "mendix";
import { Big } from "big.js";
export interface CustomListViewProps<Style> {
name: string;
@ -16,27 +15,21 @@ export interface CustomListViewProps<Style> {
onClick?: ListActionValue;
emptyMessage: string;
scrollToItem?: EditableValue<boolean>;
scrollItem?: EditableValue<Big>;
scrollItem?: EditableValue<BigJs.Big>;
windowSize: number;
initialNumToRender: number;
maxNumberToRenderPerBatch: number;
cellBatchingSize: number;
removeClippedSubviews: boolean;
useItemLayout: boolean;
itemSize: Big;
itemSize: BigJs.Big;
}
export interface CustomListViewPreviewProps {
/**
* @deprecated Deprecated since version 9.18.0. Please use class property instead.
*/
className: string;
class: string;
style: string;
styleObject?: CSSProperties;
readOnly: boolean;
ds: {} | { caption: string } | { type: string } | null;
container: { widgetCount: number; renderer: ComponentType<{ children: ReactNode; caption?: string }> };
ds: {} | null;
container: { widgetCount: number; renderer: ComponentType };
scrollView: boolean;
onClick: {} | null;
emptyMessage: string;