funda-ui 4.5.635 → 4.5.666
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/Date/index.d.ts +1 -0
- package/Date/index.js +3 -1
- package/MasonryLayout/index.d.ts +2 -0
- package/MasonryLayout/index.js +115 -5
- package/Select/index.js +8 -4
- package/lib/cjs/Date/index.d.ts +1 -0
- package/lib/cjs/Date/index.js +3 -1
- package/lib/cjs/MasonryLayout/index.d.ts +2 -0
- package/lib/cjs/MasonryLayout/index.js +115 -5
- package/lib/cjs/Select/index.js +8 -4
- package/lib/esm/Date/index.tsx +3 -0
- package/lib/esm/MasonryLayout/index.tsx +125 -7
- package/lib/esm/Select/index.tsx +11 -6
- package/package.json +1 -1
package/Date/index.d.ts
CHANGED
package/Date/index.js
CHANGED
|
@@ -4893,7 +4893,7 @@ var zh_CN = __webpack_require__(357);
|
|
|
4893
4893
|
var zh_CN_default = /*#__PURE__*/__webpack_require__.n(zh_CN);
|
|
4894
4894
|
;// CONCATENATED MODULE: ./src/index.tsx
|
|
4895
4895
|
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
4896
|
-
var _excluded = ["contentRef", "popupRef", "depth", "triggerClassName", "popupClassName", "wrapperClassName", "controlClassName", "controlGroupWrapperClassName", "controlGroupTextClassName", "enableEntireAreaPopup", "delimiter", "hideClearButton", "showToolsWhenHover", "offset", "exceededSidePosOffset", "localization", "type", "onlyTime", "truncateSeconds", "valueUseSlash", "disabled", "required", "readOnly", "defaultValue", "value", "clickInitValue", "min", "max", "placeholder", "label", "units", "name", "alt", "id", "iconLeft", "iconRight", "autoComplete", "style", "tabIndex", "onLoad", "onChange", "onBlur", "onFocus", "onPressEnter", "onOpenPopup", "onClosePopup", "onChangeDate", "onChangeMonth", "onChangeYear", "onChangeToday", "onChangeHours", "onChangeMinutes", "onChangeSeconds", "onClear", "langHoursTitle", "langMinutesTitle", "langSecondsTitle", "langWeek", "langWeekFull", "langMonths", "langMonthsFull", "langToday"];
|
|
4896
|
+
var _excluded = ["contentRef", "popupRef", "depth", "triggerClassName", "popupClassName", "wrapperClassName", "controlClassName", "controlGroupWrapperClassName", "controlGroupTextClassName", "enableEntireAreaPopup", "delimiter", "hideClearButton", "showToolsWhenHover", "offset", "exceededSidePosOffset", "localization", "type", "onlyTime", "truncateSeconds", "valueUseSlash", "disabled", "requiredLabel", "required", "readOnly", "defaultValue", "value", "clickInitValue", "min", "max", "placeholder", "label", "units", "name", "alt", "id", "iconLeft", "iconRight", "autoComplete", "style", "tabIndex", "onLoad", "onChange", "onBlur", "onFocus", "onPressEnter", "onOpenPopup", "onClosePopup", "onChangeDate", "onChangeMonth", "onChangeYear", "onChangeToday", "onChangeHours", "onChangeMinutes", "onChangeSeconds", "onClear", "langHoursTitle", "langMinutesTitle", "langSecondsTitle", "langWeek", "langWeekFull", "langMonths", "langMonthsFull", "langToday"];
|
|
4897
4897
|
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) keys.push(key); return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
|
|
4898
4898
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }
|
|
4899
4899
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
@@ -4942,6 +4942,7 @@ var src_Date = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_reac
|
|
|
4942
4942
|
truncateSeconds = props.truncateSeconds,
|
|
4943
4943
|
valueUseSlash = props.valueUseSlash,
|
|
4944
4944
|
disabled = props.disabled,
|
|
4945
|
+
requiredLabel = props.requiredLabel,
|
|
4945
4946
|
required = props.required,
|
|
4946
4947
|
readOnly = props.readOnly,
|
|
4947
4948
|
defaultValue = props.defaultValue,
|
|
@@ -5686,6 +5687,7 @@ var src_Date = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_reac
|
|
|
5686
5687
|
units: units,
|
|
5687
5688
|
iconLeft: iconLeft,
|
|
5688
5689
|
iconRight: iconRight,
|
|
5690
|
+
requiredLabel: requiredLabel,
|
|
5689
5691
|
required: required,
|
|
5690
5692
|
appendControl: /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement((external_root_React_commonjs2_react_commonjs_react_amd_react_default()).Fragment, null, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", {
|
|
5691
5693
|
className: "date2d__control__inputplaceholder"
|
package/MasonryLayout/index.d.ts
CHANGED
|
@@ -3,10 +3,12 @@ export declare type MasonryLayoutProps = {
|
|
|
3
3
|
columns?: number;
|
|
4
4
|
gap?: number;
|
|
5
5
|
breakPoints?: Record<number, number>;
|
|
6
|
+
balanceColumnHeights?: boolean;
|
|
6
7
|
/** -- */
|
|
7
8
|
id?: string;
|
|
8
9
|
tabIndex?: number;
|
|
9
10
|
children: React.ReactNode;
|
|
11
|
+
onResize?: (wrapperWidth: number) => void;
|
|
10
12
|
};
|
|
11
13
|
declare const MasonryLayout: (props: MasonryLayoutProps) => JSX.Element;
|
|
12
14
|
export default MasonryLayout;
|
package/MasonryLayout/index.js
CHANGED
|
@@ -414,6 +414,10 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
414
414
|
/* harmony import */ var funda_utils_dist_cjs_useComId__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(funda_utils_dist_cjs_useComId__WEBPACK_IMPORTED_MODULE_1__);
|
|
415
415
|
/* harmony import */ var funda_utils_dist_cjs_performance__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(840);
|
|
416
416
|
/* harmony import */ var funda_utils_dist_cjs_performance__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(funda_utils_dist_cjs_performance__WEBPACK_IMPORTED_MODULE_2__);
|
|
417
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
418
|
+
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."); }
|
|
419
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
420
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
417
421
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
418
422
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
419
423
|
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); }
|
|
@@ -427,8 +431,11 @@ var MasonryLayout = function MasonryLayout(props) {
|
|
|
427
431
|
var columns = props.columns,
|
|
428
432
|
gap = props.gap,
|
|
429
433
|
breakPoints = props.breakPoints,
|
|
434
|
+
_props$balanceColumnH = props.balanceColumnHeights,
|
|
435
|
+
balanceColumnHeights = _props$balanceColumnH === void 0 ? true : _props$balanceColumnH,
|
|
430
436
|
id = props.id,
|
|
431
|
-
children = props.children
|
|
437
|
+
children = props.children,
|
|
438
|
+
onResize = props.onResize;
|
|
432
439
|
var uniqueID = funda_utils_dist_cjs_useComId__WEBPACK_IMPORTED_MODULE_1___default()();
|
|
433
440
|
var idRes = id || uniqueID;
|
|
434
441
|
var rootRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);
|
|
@@ -437,12 +444,19 @@ var MasonryLayout = function MasonryLayout(props) {
|
|
|
437
444
|
_useState2 = _slicedToArray(_useState, 2),
|
|
438
445
|
items = _useState2[0],
|
|
439
446
|
setItems = _useState2[1];
|
|
447
|
+
var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]),
|
|
448
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
449
|
+
orginalItems = _useState4[0],
|
|
450
|
+
setOrginalItems = _useState4[1];
|
|
440
451
|
var COLS = typeof columns !== 'undefined' ? parseFloat(columns) : 2;
|
|
441
452
|
var GAP = typeof gap !== 'undefined' ? parseFloat(gap) : 15;
|
|
453
|
+
var colsRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(new Map());
|
|
442
454
|
var windowResizeUpdate = (0,funda_utils_dist_cjs_performance__WEBPACK_IMPORTED_MODULE_2__.debounce)(handleWindowUpdate, 50);
|
|
443
455
|
var windowWidth = typeof window !== 'undefined' ? window.innerWidth : 0;
|
|
444
456
|
var calcInit = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function (w) {
|
|
445
457
|
var _rootRef$current;
|
|
458
|
+
var minColIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;
|
|
459
|
+
var maxColIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
|
|
446
460
|
var colCount = COLS;
|
|
447
461
|
var columnWrapper = {};
|
|
448
462
|
var result = [];
|
|
@@ -500,10 +514,22 @@ var MasonryLayout = function MasonryLayout(props) {
|
|
|
500
514
|
var wrapperWidth = ((_rootRef$current = rootRef.current) === null || _rootRef$current === void 0 ? void 0 : _rootRef$current.offsetWidth) || 0;
|
|
501
515
|
var perBrickWidth = wrapperWidth / colCount; // Prevent the width of the internal elements from overflowing
|
|
502
516
|
|
|
503
|
-
|
|
517
|
+
// return wrapper width
|
|
518
|
+
onResize === null || onResize === void 0 ? void 0 : onResize(wrapperWidth);
|
|
519
|
+
|
|
520
|
+
//
|
|
521
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().Children.forEach(children, function (child, i) {
|
|
522
|
+
if (!child) return;
|
|
504
523
|
var columnIndex = i % colCount;
|
|
524
|
+
var itemRow = Math.floor(i / colCount);
|
|
525
|
+
var itemIndex = itemRow * colCount + columnIndex;
|
|
526
|
+
|
|
527
|
+
//
|
|
505
528
|
columnWrapper["".concat(itemWrapperKey).concat(columnIndex)].push( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
506
529
|
key: i,
|
|
530
|
+
"data-row": itemRow,
|
|
531
|
+
"data-col": columnIndex,
|
|
532
|
+
"data-index": itemIndex,
|
|
507
533
|
style: {
|
|
508
534
|
marginBottom: "".concat(GAP, "px")
|
|
509
535
|
}
|
|
@@ -511,13 +537,19 @@ var MasonryLayout = function MasonryLayout(props) {
|
|
|
511
537
|
style: perBrickWidth > 0 ? {
|
|
512
538
|
width: perBrickWidth + 'px'
|
|
513
539
|
} : undefined
|
|
514
|
-
},
|
|
540
|
+
}, child)));
|
|
515
541
|
});
|
|
516
542
|
|
|
543
|
+
// Add the item to the shortest column
|
|
544
|
+
if (balanceColumnHeights && typeof minColIndex !== 'undefined' && typeof maxColIndex !== 'undefined' && items.length > COLS) {
|
|
545
|
+
var maxColLastElement = columnWrapper["".concat(itemWrapperKey).concat(maxColIndex)].pop();
|
|
546
|
+
columnWrapper["".concat(itemWrapperKey).concat(minColIndex)].push(maxColLastElement);
|
|
547
|
+
}
|
|
548
|
+
|
|
517
549
|
// STEP 5:
|
|
518
550
|
//=================
|
|
519
551
|
// Wrapping the items in each column with a div and pushing it into the result array
|
|
520
|
-
|
|
552
|
+
var _loop = function _loop(_i3) {
|
|
521
553
|
result.push( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
522
554
|
key: _i3,
|
|
523
555
|
className: "masonry-item",
|
|
@@ -525,12 +557,31 @@ var MasonryLayout = function MasonryLayout(props) {
|
|
|
525
557
|
marginLeft: "".concat(_i3 > 0 ? GAP : 0, "px"),
|
|
526
558
|
flex: '0 1 auto'
|
|
527
559
|
}
|
|
528
|
-
},
|
|
560
|
+
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
561
|
+
className: "masonry-item-inner",
|
|
562
|
+
"data-inner-col": _i3,
|
|
563
|
+
ref: function ref(el) {
|
|
564
|
+
if (el) {
|
|
565
|
+
colsRef.current.set("col-".concat(_i3), el);
|
|
566
|
+
} else {
|
|
567
|
+
colsRef.current["delete"]("col-".concat(_i3));
|
|
568
|
+
}
|
|
569
|
+
}
|
|
570
|
+
}, columnWrapper["".concat(itemWrapperKey).concat(_i3)])));
|
|
571
|
+
};
|
|
572
|
+
for (var _i3 = 0; _i3 < colCount; _i3++) {
|
|
573
|
+
_loop(_i3);
|
|
529
574
|
}
|
|
530
575
|
|
|
531
576
|
// STEP 6:
|
|
532
577
|
//=================
|
|
578
|
+
// update items
|
|
533
579
|
setItems(result);
|
|
580
|
+
|
|
581
|
+
// update orginal items
|
|
582
|
+
if (typeof minColIndex === 'undefined' && typeof maxColIndex === 'undefined') {
|
|
583
|
+
setOrginalItems(result);
|
|
584
|
+
}
|
|
534
585
|
}, [children]);
|
|
535
586
|
function handleWindowUpdate() {
|
|
536
587
|
// Check window width has actually changed and it's not just iOS triggering a resize event on scroll
|
|
@@ -542,6 +593,65 @@ var MasonryLayout = function MasonryLayout(props) {
|
|
|
542
593
|
calcInit(windowWidth);
|
|
543
594
|
}
|
|
544
595
|
}
|
|
596
|
+
function adjustPosition() {
|
|
597
|
+
if (rootRef.current === null) return;
|
|
598
|
+
|
|
599
|
+
// Adjust the position of the element
|
|
600
|
+
var initCols = function initCols() {
|
|
601
|
+
var columnHeights = new Array(COLS).fill(0);
|
|
602
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().Children.forEach(items, function (child, i) {
|
|
603
|
+
if (!child) return;
|
|
604
|
+
var columnIndex = i % COLS;
|
|
605
|
+
|
|
606
|
+
// update column height
|
|
607
|
+
var columnInner = colsRef.current.get("col-".concat(columnIndex));
|
|
608
|
+
if (columnInner) {
|
|
609
|
+
var height = columnInner.offsetHeight;
|
|
610
|
+
columnHeights[columnIndex] = height;
|
|
611
|
+
}
|
|
612
|
+
});
|
|
613
|
+
|
|
614
|
+
// Find the shortest height column
|
|
615
|
+
var minHeight = Math.min.apply(Math, _toConsumableArray(columnHeights));
|
|
616
|
+
var maxHeight = Math.max.apply(Math, _toConsumableArray(columnHeights));
|
|
617
|
+
if (minHeight > 0 && maxHeight > 0 && maxHeight / 2 > minHeight) {
|
|
618
|
+
var columnMinHeightIndex = columnHeights.indexOf(minHeight);
|
|
619
|
+
var columnMaxHeightIndex = columnHeights.indexOf(maxHeight);
|
|
620
|
+
calcInit(windowWidth, columnMinHeightIndex, columnMaxHeightIndex);
|
|
621
|
+
}
|
|
622
|
+
};
|
|
623
|
+
var images = rootRef.current.querySelectorAll('img');
|
|
624
|
+
var imagePromises = [];
|
|
625
|
+
images.forEach(function (img) {
|
|
626
|
+
var imgPromise = new Promise(function (resolve, reject) {
|
|
627
|
+
if (img.complete) {
|
|
628
|
+
resolve();
|
|
629
|
+
} else {
|
|
630
|
+
img.onload = function () {
|
|
631
|
+
return resolve();
|
|
632
|
+
};
|
|
633
|
+
img.onerror = function () {
|
|
634
|
+
return resolve();
|
|
635
|
+
};
|
|
636
|
+
}
|
|
637
|
+
});
|
|
638
|
+
imagePromises.push(imgPromise);
|
|
639
|
+
});
|
|
640
|
+
|
|
641
|
+
// Wait for all images to load
|
|
642
|
+
if (images.length > 0) {
|
|
643
|
+
Promise.all(imagePromises).then(function () {
|
|
644
|
+
initCols();
|
|
645
|
+
})["catch"](function (error) {
|
|
646
|
+
console.error(error);
|
|
647
|
+
});
|
|
648
|
+
} else {
|
|
649
|
+
initCols();
|
|
650
|
+
}
|
|
651
|
+
}
|
|
652
|
+
(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {
|
|
653
|
+
adjustPosition();
|
|
654
|
+
}, [orginalItems]);
|
|
545
655
|
(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {
|
|
546
656
|
// Initialize items
|
|
547
657
|
//--------------
|
package/Select/index.js
CHANGED
|
@@ -4155,6 +4155,7 @@ var Select = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_
|
|
|
4155
4155
|
return _fetchData.apply(this, arguments);
|
|
4156
4156
|
}
|
|
4157
4157
|
function adjustMultiControlContainerHeight() {
|
|
4158
|
+
var scrollbarInit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
|
|
4158
4159
|
setTimeout(function () {
|
|
4159
4160
|
// Sometimes you may get 0, you need to judge
|
|
4160
4161
|
if (MULTI_SEL_VALID && rootMultiRef.current.clientHeight > 0) {
|
|
@@ -4164,7 +4165,7 @@ var Select = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_
|
|
|
4164
4165
|
// popwin position update
|
|
4165
4166
|
var _modalRef = document.querySelector("#custom-select__options-wrapper-".concat(idRes));
|
|
4166
4167
|
if (MULTI_SEL_VALID && _modalRef !== null && _modalRef.classList.contains('active')) {
|
|
4167
|
-
popwinPosInit();
|
|
4168
|
+
popwinPosInit(scrollbarInit);
|
|
4168
4169
|
}
|
|
4169
4170
|
}, 0);
|
|
4170
4171
|
}
|
|
@@ -4180,6 +4181,7 @@ var Select = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_
|
|
|
4180
4181
|
}
|
|
4181
4182
|
}
|
|
4182
4183
|
function popwinPosInit() {
|
|
4184
|
+
var scrollbarInit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
|
|
4183
4185
|
if (listContentRef.current === null || rootRef.current === null || selectInputRef.current === null) return;
|
|
4184
4186
|
var contentHeightOffset = 80;
|
|
4185
4187
|
var contentMaxHeight = 0;
|
|
@@ -4319,7 +4321,7 @@ var Select = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_
|
|
|
4319
4321
|
// STEP 7:
|
|
4320
4322
|
//-----------
|
|
4321
4323
|
// Scrollbar position synchronization
|
|
4322
|
-
syncListContentScrollBody();
|
|
4324
|
+
if (scrollbarInit) syncListContentScrollBody();
|
|
4323
4325
|
}
|
|
4324
4326
|
function popwinPosHide() {
|
|
4325
4327
|
var _modalRef = document.querySelector("#custom-select__options-wrapper-".concat(idRes));
|
|
@@ -4655,7 +4657,8 @@ var Select = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_
|
|
|
4655
4657
|
}
|
|
4656
4658
|
|
|
4657
4659
|
// Appropriate multi-item container height
|
|
4658
|
-
|
|
4660
|
+
// !!!set `false` to prevents the scrollbar position from changing when multi-selecting the option is clicked
|
|
4661
|
+
adjustMultiControlContainerHeight(false);
|
|
4659
4662
|
|
|
4660
4663
|
// active current option
|
|
4661
4664
|
if (noCallback) {
|
|
@@ -4761,7 +4764,8 @@ var Select = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_
|
|
|
4761
4764
|
}
|
|
4762
4765
|
|
|
4763
4766
|
// Appropriate multi-item container height
|
|
4764
|
-
|
|
4767
|
+
// !!!set `false` to prevents the scrollbar position from changing when multi-selecting the option is clicked
|
|
4768
|
+
adjustMultiControlContainerHeight(false);
|
|
4765
4769
|
|
|
4766
4770
|
// active current option
|
|
4767
4771
|
if (noCallback) {
|
package/lib/cjs/Date/index.d.ts
CHANGED
package/lib/cjs/Date/index.js
CHANGED
|
@@ -4893,7 +4893,7 @@ var zh_CN = __webpack_require__(357);
|
|
|
4893
4893
|
var zh_CN_default = /*#__PURE__*/__webpack_require__.n(zh_CN);
|
|
4894
4894
|
;// CONCATENATED MODULE: ./src/index.tsx
|
|
4895
4895
|
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
4896
|
-
var _excluded = ["contentRef", "popupRef", "depth", "triggerClassName", "popupClassName", "wrapperClassName", "controlClassName", "controlGroupWrapperClassName", "controlGroupTextClassName", "enableEntireAreaPopup", "delimiter", "hideClearButton", "showToolsWhenHover", "offset", "exceededSidePosOffset", "localization", "type", "onlyTime", "truncateSeconds", "valueUseSlash", "disabled", "required", "readOnly", "defaultValue", "value", "clickInitValue", "min", "max", "placeholder", "label", "units", "name", "alt", "id", "iconLeft", "iconRight", "autoComplete", "style", "tabIndex", "onLoad", "onChange", "onBlur", "onFocus", "onPressEnter", "onOpenPopup", "onClosePopup", "onChangeDate", "onChangeMonth", "onChangeYear", "onChangeToday", "onChangeHours", "onChangeMinutes", "onChangeSeconds", "onClear", "langHoursTitle", "langMinutesTitle", "langSecondsTitle", "langWeek", "langWeekFull", "langMonths", "langMonthsFull", "langToday"];
|
|
4896
|
+
var _excluded = ["contentRef", "popupRef", "depth", "triggerClassName", "popupClassName", "wrapperClassName", "controlClassName", "controlGroupWrapperClassName", "controlGroupTextClassName", "enableEntireAreaPopup", "delimiter", "hideClearButton", "showToolsWhenHover", "offset", "exceededSidePosOffset", "localization", "type", "onlyTime", "truncateSeconds", "valueUseSlash", "disabled", "requiredLabel", "required", "readOnly", "defaultValue", "value", "clickInitValue", "min", "max", "placeholder", "label", "units", "name", "alt", "id", "iconLeft", "iconRight", "autoComplete", "style", "tabIndex", "onLoad", "onChange", "onBlur", "onFocus", "onPressEnter", "onOpenPopup", "onClosePopup", "onChangeDate", "onChangeMonth", "onChangeYear", "onChangeToday", "onChangeHours", "onChangeMinutes", "onChangeSeconds", "onClear", "langHoursTitle", "langMinutesTitle", "langSecondsTitle", "langWeek", "langWeekFull", "langMonths", "langMonthsFull", "langToday"];
|
|
4897
4897
|
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) keys.push(key); return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
|
|
4898
4898
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }
|
|
4899
4899
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
@@ -4942,6 +4942,7 @@ var src_Date = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_reac
|
|
|
4942
4942
|
truncateSeconds = props.truncateSeconds,
|
|
4943
4943
|
valueUseSlash = props.valueUseSlash,
|
|
4944
4944
|
disabled = props.disabled,
|
|
4945
|
+
requiredLabel = props.requiredLabel,
|
|
4945
4946
|
required = props.required,
|
|
4946
4947
|
readOnly = props.readOnly,
|
|
4947
4948
|
defaultValue = props.defaultValue,
|
|
@@ -5686,6 +5687,7 @@ var src_Date = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_reac
|
|
|
5686
5687
|
units: units,
|
|
5687
5688
|
iconLeft: iconLeft,
|
|
5688
5689
|
iconRight: iconRight,
|
|
5690
|
+
requiredLabel: requiredLabel,
|
|
5689
5691
|
required: required,
|
|
5690
5692
|
appendControl: /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement((external_root_React_commonjs2_react_commonjs_react_amd_react_default()).Fragment, null, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", {
|
|
5691
5693
|
className: "date2d__control__inputplaceholder"
|
|
@@ -3,10 +3,12 @@ export declare type MasonryLayoutProps = {
|
|
|
3
3
|
columns?: number;
|
|
4
4
|
gap?: number;
|
|
5
5
|
breakPoints?: Record<number, number>;
|
|
6
|
+
balanceColumnHeights?: boolean;
|
|
6
7
|
/** -- */
|
|
7
8
|
id?: string;
|
|
8
9
|
tabIndex?: number;
|
|
9
10
|
children: React.ReactNode;
|
|
11
|
+
onResize?: (wrapperWidth: number) => void;
|
|
10
12
|
};
|
|
11
13
|
declare const MasonryLayout: (props: MasonryLayoutProps) => JSX.Element;
|
|
12
14
|
export default MasonryLayout;
|
|
@@ -414,6 +414,10 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
414
414
|
/* harmony import */ var funda_utils_dist_cjs_useComId__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(funda_utils_dist_cjs_useComId__WEBPACK_IMPORTED_MODULE_1__);
|
|
415
415
|
/* harmony import */ var funda_utils_dist_cjs_performance__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(840);
|
|
416
416
|
/* harmony import */ var funda_utils_dist_cjs_performance__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(funda_utils_dist_cjs_performance__WEBPACK_IMPORTED_MODULE_2__);
|
|
417
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
418
|
+
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."); }
|
|
419
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
420
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
417
421
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
418
422
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
419
423
|
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); }
|
|
@@ -427,8 +431,11 @@ var MasonryLayout = function MasonryLayout(props) {
|
|
|
427
431
|
var columns = props.columns,
|
|
428
432
|
gap = props.gap,
|
|
429
433
|
breakPoints = props.breakPoints,
|
|
434
|
+
_props$balanceColumnH = props.balanceColumnHeights,
|
|
435
|
+
balanceColumnHeights = _props$balanceColumnH === void 0 ? true : _props$balanceColumnH,
|
|
430
436
|
id = props.id,
|
|
431
|
-
children = props.children
|
|
437
|
+
children = props.children,
|
|
438
|
+
onResize = props.onResize;
|
|
432
439
|
var uniqueID = funda_utils_dist_cjs_useComId__WEBPACK_IMPORTED_MODULE_1___default()();
|
|
433
440
|
var idRes = id || uniqueID;
|
|
434
441
|
var rootRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);
|
|
@@ -437,12 +444,19 @@ var MasonryLayout = function MasonryLayout(props) {
|
|
|
437
444
|
_useState2 = _slicedToArray(_useState, 2),
|
|
438
445
|
items = _useState2[0],
|
|
439
446
|
setItems = _useState2[1];
|
|
447
|
+
var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]),
|
|
448
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
449
|
+
orginalItems = _useState4[0],
|
|
450
|
+
setOrginalItems = _useState4[1];
|
|
440
451
|
var COLS = typeof columns !== 'undefined' ? parseFloat(columns) : 2;
|
|
441
452
|
var GAP = typeof gap !== 'undefined' ? parseFloat(gap) : 15;
|
|
453
|
+
var colsRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(new Map());
|
|
442
454
|
var windowResizeUpdate = (0,funda_utils_dist_cjs_performance__WEBPACK_IMPORTED_MODULE_2__.debounce)(handleWindowUpdate, 50);
|
|
443
455
|
var windowWidth = typeof window !== 'undefined' ? window.innerWidth : 0;
|
|
444
456
|
var calcInit = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function (w) {
|
|
445
457
|
var _rootRef$current;
|
|
458
|
+
var minColIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;
|
|
459
|
+
var maxColIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
|
|
446
460
|
var colCount = COLS;
|
|
447
461
|
var columnWrapper = {};
|
|
448
462
|
var result = [];
|
|
@@ -500,10 +514,22 @@ var MasonryLayout = function MasonryLayout(props) {
|
|
|
500
514
|
var wrapperWidth = ((_rootRef$current = rootRef.current) === null || _rootRef$current === void 0 ? void 0 : _rootRef$current.offsetWidth) || 0;
|
|
501
515
|
var perBrickWidth = wrapperWidth / colCount; // Prevent the width of the internal elements from overflowing
|
|
502
516
|
|
|
503
|
-
|
|
517
|
+
// return wrapper width
|
|
518
|
+
onResize === null || onResize === void 0 ? void 0 : onResize(wrapperWidth);
|
|
519
|
+
|
|
520
|
+
//
|
|
521
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().Children.forEach(children, function (child, i) {
|
|
522
|
+
if (!child) return;
|
|
504
523
|
var columnIndex = i % colCount;
|
|
524
|
+
var itemRow = Math.floor(i / colCount);
|
|
525
|
+
var itemIndex = itemRow * colCount + columnIndex;
|
|
526
|
+
|
|
527
|
+
//
|
|
505
528
|
columnWrapper["".concat(itemWrapperKey).concat(columnIndex)].push( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
506
529
|
key: i,
|
|
530
|
+
"data-row": itemRow,
|
|
531
|
+
"data-col": columnIndex,
|
|
532
|
+
"data-index": itemIndex,
|
|
507
533
|
style: {
|
|
508
534
|
marginBottom: "".concat(GAP, "px")
|
|
509
535
|
}
|
|
@@ -511,13 +537,19 @@ var MasonryLayout = function MasonryLayout(props) {
|
|
|
511
537
|
style: perBrickWidth > 0 ? {
|
|
512
538
|
width: perBrickWidth + 'px'
|
|
513
539
|
} : undefined
|
|
514
|
-
},
|
|
540
|
+
}, child)));
|
|
515
541
|
});
|
|
516
542
|
|
|
543
|
+
// Add the item to the shortest column
|
|
544
|
+
if (balanceColumnHeights && typeof minColIndex !== 'undefined' && typeof maxColIndex !== 'undefined' && items.length > COLS) {
|
|
545
|
+
var maxColLastElement = columnWrapper["".concat(itemWrapperKey).concat(maxColIndex)].pop();
|
|
546
|
+
columnWrapper["".concat(itemWrapperKey).concat(minColIndex)].push(maxColLastElement);
|
|
547
|
+
}
|
|
548
|
+
|
|
517
549
|
// STEP 5:
|
|
518
550
|
//=================
|
|
519
551
|
// Wrapping the items in each column with a div and pushing it into the result array
|
|
520
|
-
|
|
552
|
+
var _loop = function _loop(_i3) {
|
|
521
553
|
result.push( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
522
554
|
key: _i3,
|
|
523
555
|
className: "masonry-item",
|
|
@@ -525,12 +557,31 @@ var MasonryLayout = function MasonryLayout(props) {
|
|
|
525
557
|
marginLeft: "".concat(_i3 > 0 ? GAP : 0, "px"),
|
|
526
558
|
flex: '0 1 auto'
|
|
527
559
|
}
|
|
528
|
-
},
|
|
560
|
+
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
561
|
+
className: "masonry-item-inner",
|
|
562
|
+
"data-inner-col": _i3,
|
|
563
|
+
ref: function ref(el) {
|
|
564
|
+
if (el) {
|
|
565
|
+
colsRef.current.set("col-".concat(_i3), el);
|
|
566
|
+
} else {
|
|
567
|
+
colsRef.current["delete"]("col-".concat(_i3));
|
|
568
|
+
}
|
|
569
|
+
}
|
|
570
|
+
}, columnWrapper["".concat(itemWrapperKey).concat(_i3)])));
|
|
571
|
+
};
|
|
572
|
+
for (var _i3 = 0; _i3 < colCount; _i3++) {
|
|
573
|
+
_loop(_i3);
|
|
529
574
|
}
|
|
530
575
|
|
|
531
576
|
// STEP 6:
|
|
532
577
|
//=================
|
|
578
|
+
// update items
|
|
533
579
|
setItems(result);
|
|
580
|
+
|
|
581
|
+
// update orginal items
|
|
582
|
+
if (typeof minColIndex === 'undefined' && typeof maxColIndex === 'undefined') {
|
|
583
|
+
setOrginalItems(result);
|
|
584
|
+
}
|
|
534
585
|
}, [children]);
|
|
535
586
|
function handleWindowUpdate() {
|
|
536
587
|
// Check window width has actually changed and it's not just iOS triggering a resize event on scroll
|
|
@@ -542,6 +593,65 @@ var MasonryLayout = function MasonryLayout(props) {
|
|
|
542
593
|
calcInit(windowWidth);
|
|
543
594
|
}
|
|
544
595
|
}
|
|
596
|
+
function adjustPosition() {
|
|
597
|
+
if (rootRef.current === null) return;
|
|
598
|
+
|
|
599
|
+
// Adjust the position of the element
|
|
600
|
+
var initCols = function initCols() {
|
|
601
|
+
var columnHeights = new Array(COLS).fill(0);
|
|
602
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().Children.forEach(items, function (child, i) {
|
|
603
|
+
if (!child) return;
|
|
604
|
+
var columnIndex = i % COLS;
|
|
605
|
+
|
|
606
|
+
// update column height
|
|
607
|
+
var columnInner = colsRef.current.get("col-".concat(columnIndex));
|
|
608
|
+
if (columnInner) {
|
|
609
|
+
var height = columnInner.offsetHeight;
|
|
610
|
+
columnHeights[columnIndex] = height;
|
|
611
|
+
}
|
|
612
|
+
});
|
|
613
|
+
|
|
614
|
+
// Find the shortest height column
|
|
615
|
+
var minHeight = Math.min.apply(Math, _toConsumableArray(columnHeights));
|
|
616
|
+
var maxHeight = Math.max.apply(Math, _toConsumableArray(columnHeights));
|
|
617
|
+
if (minHeight > 0 && maxHeight > 0 && maxHeight / 2 > minHeight) {
|
|
618
|
+
var columnMinHeightIndex = columnHeights.indexOf(minHeight);
|
|
619
|
+
var columnMaxHeightIndex = columnHeights.indexOf(maxHeight);
|
|
620
|
+
calcInit(windowWidth, columnMinHeightIndex, columnMaxHeightIndex);
|
|
621
|
+
}
|
|
622
|
+
};
|
|
623
|
+
var images = rootRef.current.querySelectorAll('img');
|
|
624
|
+
var imagePromises = [];
|
|
625
|
+
images.forEach(function (img) {
|
|
626
|
+
var imgPromise = new Promise(function (resolve, reject) {
|
|
627
|
+
if (img.complete) {
|
|
628
|
+
resolve();
|
|
629
|
+
} else {
|
|
630
|
+
img.onload = function () {
|
|
631
|
+
return resolve();
|
|
632
|
+
};
|
|
633
|
+
img.onerror = function () {
|
|
634
|
+
return resolve();
|
|
635
|
+
};
|
|
636
|
+
}
|
|
637
|
+
});
|
|
638
|
+
imagePromises.push(imgPromise);
|
|
639
|
+
});
|
|
640
|
+
|
|
641
|
+
// Wait for all images to load
|
|
642
|
+
if (images.length > 0) {
|
|
643
|
+
Promise.all(imagePromises).then(function () {
|
|
644
|
+
initCols();
|
|
645
|
+
})["catch"](function (error) {
|
|
646
|
+
console.error(error);
|
|
647
|
+
});
|
|
648
|
+
} else {
|
|
649
|
+
initCols();
|
|
650
|
+
}
|
|
651
|
+
}
|
|
652
|
+
(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {
|
|
653
|
+
adjustPosition();
|
|
654
|
+
}, [orginalItems]);
|
|
545
655
|
(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {
|
|
546
656
|
// Initialize items
|
|
547
657
|
//--------------
|
package/lib/cjs/Select/index.js
CHANGED
|
@@ -4155,6 +4155,7 @@ var Select = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_
|
|
|
4155
4155
|
return _fetchData.apply(this, arguments);
|
|
4156
4156
|
}
|
|
4157
4157
|
function adjustMultiControlContainerHeight() {
|
|
4158
|
+
var scrollbarInit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
|
|
4158
4159
|
setTimeout(function () {
|
|
4159
4160
|
// Sometimes you may get 0, you need to judge
|
|
4160
4161
|
if (MULTI_SEL_VALID && rootMultiRef.current.clientHeight > 0) {
|
|
@@ -4164,7 +4165,7 @@ var Select = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_
|
|
|
4164
4165
|
// popwin position update
|
|
4165
4166
|
var _modalRef = document.querySelector("#custom-select__options-wrapper-".concat(idRes));
|
|
4166
4167
|
if (MULTI_SEL_VALID && _modalRef !== null && _modalRef.classList.contains('active')) {
|
|
4167
|
-
popwinPosInit();
|
|
4168
|
+
popwinPosInit(scrollbarInit);
|
|
4168
4169
|
}
|
|
4169
4170
|
}, 0);
|
|
4170
4171
|
}
|
|
@@ -4180,6 +4181,7 @@ var Select = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_
|
|
|
4180
4181
|
}
|
|
4181
4182
|
}
|
|
4182
4183
|
function popwinPosInit() {
|
|
4184
|
+
var scrollbarInit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
|
|
4183
4185
|
if (listContentRef.current === null || rootRef.current === null || selectInputRef.current === null) return;
|
|
4184
4186
|
var contentHeightOffset = 80;
|
|
4185
4187
|
var contentMaxHeight = 0;
|
|
@@ -4319,7 +4321,7 @@ var Select = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_
|
|
|
4319
4321
|
// STEP 7:
|
|
4320
4322
|
//-----------
|
|
4321
4323
|
// Scrollbar position synchronization
|
|
4322
|
-
syncListContentScrollBody();
|
|
4324
|
+
if (scrollbarInit) syncListContentScrollBody();
|
|
4323
4325
|
}
|
|
4324
4326
|
function popwinPosHide() {
|
|
4325
4327
|
var _modalRef = document.querySelector("#custom-select__options-wrapper-".concat(idRes));
|
|
@@ -4655,7 +4657,8 @@ var Select = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_
|
|
|
4655
4657
|
}
|
|
4656
4658
|
|
|
4657
4659
|
// Appropriate multi-item container height
|
|
4658
|
-
|
|
4660
|
+
// !!!set `false` to prevents the scrollbar position from changing when multi-selecting the option is clicked
|
|
4661
|
+
adjustMultiControlContainerHeight(false);
|
|
4659
4662
|
|
|
4660
4663
|
// active current option
|
|
4661
4664
|
if (noCallback) {
|
|
@@ -4761,7 +4764,8 @@ var Select = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_
|
|
|
4761
4764
|
}
|
|
4762
4765
|
|
|
4763
4766
|
// Appropriate multi-item container height
|
|
4764
|
-
|
|
4767
|
+
// !!!set `false` to prevents the scrollbar position from changing when multi-selecting the option is clicked
|
|
4768
|
+
adjustMultiControlContainerHeight(false);
|
|
4765
4769
|
|
|
4766
4770
|
// active current option
|
|
4767
4771
|
if (noCallback) {
|
package/lib/esm/Date/index.tsx
CHANGED
|
@@ -72,6 +72,7 @@ export type DateProps = {
|
|
|
72
72
|
name?: string;
|
|
73
73
|
alt?: any;
|
|
74
74
|
disabled?: any;
|
|
75
|
+
requiredLabel?: React.ReactNode | string;
|
|
75
76
|
required?: any;
|
|
76
77
|
readOnly?: any;
|
|
77
78
|
iconLeft?: React.ReactNode | string;
|
|
@@ -137,6 +138,7 @@ const Date = forwardRef((props: DateProps, externalRef: any) => {
|
|
|
137
138
|
truncateSeconds,
|
|
138
139
|
valueUseSlash,
|
|
139
140
|
disabled,
|
|
141
|
+
requiredLabel,
|
|
140
142
|
required,
|
|
141
143
|
readOnly,
|
|
142
144
|
defaultValue,
|
|
@@ -983,6 +985,7 @@ const Date = forwardRef((props: DateProps, externalRef: any) => {
|
|
|
983
985
|
units={units}
|
|
984
986
|
iconLeft={iconLeft}
|
|
985
987
|
iconRight={iconRight}
|
|
988
|
+
requiredLabel={requiredLabel}
|
|
986
989
|
required={required}
|
|
987
990
|
appendControl={<>
|
|
988
991
|
<div className="date2d__control__inputplaceholder">
|
|
@@ -11,10 +11,12 @@ export type MasonryLayoutProps = {
|
|
|
11
11
|
columns?: number;
|
|
12
12
|
gap?: number;
|
|
13
13
|
breakPoints?: Record<number, number>;
|
|
14
|
+
balanceColumnHeights?: boolean;
|
|
14
15
|
/** -- */
|
|
15
16
|
id?: string;
|
|
16
17
|
tabIndex?: number;
|
|
17
18
|
children: React.ReactNode;
|
|
19
|
+
onResize?: (wrapperWidth: number) => void;
|
|
18
20
|
};
|
|
19
21
|
|
|
20
22
|
|
|
@@ -23,8 +25,10 @@ const MasonryLayout = (props: MasonryLayoutProps) => {
|
|
|
23
25
|
columns,
|
|
24
26
|
gap,
|
|
25
27
|
breakPoints,
|
|
28
|
+
balanceColumnHeights = true,
|
|
26
29
|
id,
|
|
27
|
-
children
|
|
30
|
+
children,
|
|
31
|
+
onResize
|
|
28
32
|
} = props;
|
|
29
33
|
|
|
30
34
|
|
|
@@ -33,13 +37,15 @@ const MasonryLayout = (props: MasonryLayoutProps) => {
|
|
|
33
37
|
const rootRef = useRef<any>(null);
|
|
34
38
|
const itemWrapperKey = 'column-';
|
|
35
39
|
const [items, setItems] = useState<React.ReactNode[]>([]);
|
|
40
|
+
const [orginalItems, setOrginalItems] = useState<React.ReactNode[]>([]);
|
|
36
41
|
const COLS = typeof columns !== 'undefined' ? parseFloat(columns as any) : 2;
|
|
37
42
|
const GAP = typeof gap !== 'undefined' ? parseFloat(gap as any) : 15;
|
|
43
|
+
const colsRef = useRef<Record<string, any>>(new Map());
|
|
38
44
|
|
|
39
45
|
const windowResizeUpdate = debounce(handleWindowUpdate, 50);
|
|
40
46
|
let windowWidth = typeof window !== 'undefined' ? window.innerWidth : 0;
|
|
41
47
|
|
|
42
|
-
const calcInit = useCallback((w: number) => {
|
|
48
|
+
const calcInit = useCallback((w: number, minColIndex: number | undefined = undefined, maxColIndex: number | undefined = undefined) => {
|
|
43
49
|
|
|
44
50
|
let colCount = COLS;
|
|
45
51
|
const columnWrapper: any = {};
|
|
@@ -100,27 +106,52 @@ const MasonryLayout = (props: MasonryLayoutProps) => {
|
|
|
100
106
|
items = children;
|
|
101
107
|
}
|
|
102
108
|
|
|
109
|
+
|
|
103
110
|
// get wrapper width
|
|
104
111
|
const wrapperWidth = rootRef.current?.offsetWidth || 0;
|
|
105
|
-
|
|
112
|
+
let perBrickWidth = wrapperWidth/colCount; // Prevent the width of the internal elements from overflowing
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
// return wrapper width
|
|
116
|
+
onResize?.(wrapperWidth);
|
|
106
117
|
|
|
107
118
|
|
|
108
|
-
|
|
119
|
+
//
|
|
120
|
+
React.Children.forEach(children, (child: any, i: number) => {
|
|
121
|
+
if (!child) return;
|
|
122
|
+
|
|
109
123
|
const columnIndex = i % colCount;
|
|
110
|
-
|
|
124
|
+
const itemRow = Math.floor(i / colCount);
|
|
125
|
+
const itemIndex = itemRow * colCount + columnIndex;
|
|
126
|
+
|
|
127
|
+
//
|
|
111
128
|
columnWrapper[`${itemWrapperKey}${columnIndex}`].push(
|
|
112
129
|
<div
|
|
113
130
|
key={i}
|
|
131
|
+
data-row={itemRow}
|
|
132
|
+
data-col={columnIndex}
|
|
133
|
+
data-index={itemIndex}
|
|
114
134
|
style={{
|
|
115
135
|
marginBottom: `${GAP}px`
|
|
116
136
|
}}
|
|
117
137
|
>
|
|
118
|
-
<div style={perBrickWidth > 0 ? {width: perBrickWidth + 'px'} : undefined}>{
|
|
138
|
+
<div style={perBrickWidth > 0 ? {width: perBrickWidth + 'px'} : undefined}>{child}</div>
|
|
119
139
|
</div>
|
|
120
140
|
);
|
|
121
141
|
});
|
|
122
142
|
|
|
123
143
|
|
|
144
|
+
// Add the item to the shortest column
|
|
145
|
+
if (
|
|
146
|
+
balanceColumnHeights &&
|
|
147
|
+
(typeof minColIndex !== 'undefined' && typeof maxColIndex !== 'undefined') &&
|
|
148
|
+
items.length > COLS
|
|
149
|
+
) {
|
|
150
|
+
const maxColLastElement = columnWrapper[`${itemWrapperKey}${maxColIndex}`].pop();
|
|
151
|
+
columnWrapper[`${itemWrapperKey}${minColIndex}`].push(maxColLastElement);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
|
|
124
155
|
// STEP 5:
|
|
125
156
|
//=================
|
|
126
157
|
// Wrapping the items in each column with a div and pushing it into the result array
|
|
@@ -133,15 +164,35 @@ const MasonryLayout = (props: MasonryLayoutProps) => {
|
|
|
133
164
|
marginLeft: `${i > 0 ? GAP : 0}px`,
|
|
134
165
|
flex: '0 1 auto'
|
|
135
166
|
}}>
|
|
136
|
-
|
|
167
|
+
<div
|
|
168
|
+
className="masonry-item-inner"
|
|
169
|
+
data-inner-col={i}
|
|
170
|
+
ref={el => {
|
|
171
|
+
if (el) {
|
|
172
|
+
colsRef.current.set(`col-${i}`, el);
|
|
173
|
+
} else {
|
|
174
|
+
colsRef.current.delete(`col-${i}`);
|
|
175
|
+
}
|
|
176
|
+
}}
|
|
177
|
+
>
|
|
178
|
+
{columnWrapper[`${itemWrapperKey}${i}`]}
|
|
179
|
+
</div>
|
|
137
180
|
</div>
|
|
138
181
|
);
|
|
139
182
|
}
|
|
140
183
|
|
|
141
184
|
// STEP 6:
|
|
142
185
|
//=================
|
|
186
|
+
// update items
|
|
143
187
|
setItems(result);
|
|
188
|
+
|
|
189
|
+
// update orginal items
|
|
190
|
+
if (typeof minColIndex === 'undefined' && typeof maxColIndex === 'undefined') {
|
|
191
|
+
setOrginalItems(result);
|
|
192
|
+
}
|
|
193
|
+
|
|
144
194
|
|
|
195
|
+
|
|
145
196
|
}, [children]);
|
|
146
197
|
|
|
147
198
|
|
|
@@ -160,6 +211,73 @@ const MasonryLayout = (props: MasonryLayoutProps) => {
|
|
|
160
211
|
}
|
|
161
212
|
}
|
|
162
213
|
|
|
214
|
+
function adjustPosition() {
|
|
215
|
+
if (rootRef.current === null) return;
|
|
216
|
+
|
|
217
|
+
// Adjust the position of the element
|
|
218
|
+
const initCols = () => {
|
|
219
|
+
|
|
220
|
+
const columnHeights = new Array(COLS).fill(0);
|
|
221
|
+
React.Children.forEach(items, (child: any, i: number) => {
|
|
222
|
+
if (!child) return;
|
|
223
|
+
|
|
224
|
+
const columnIndex = i % COLS;
|
|
225
|
+
|
|
226
|
+
// update column height
|
|
227
|
+
const columnInner = colsRef.current.get(`col-${columnIndex}`);
|
|
228
|
+
if (columnInner) {
|
|
229
|
+
const height = columnInner.offsetHeight;
|
|
230
|
+
columnHeights[columnIndex] = height;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
});
|
|
234
|
+
|
|
235
|
+
// Find the shortest height column
|
|
236
|
+
const minHeight = Math.min(...columnHeights);
|
|
237
|
+
const maxHeight = Math.max(...columnHeights);
|
|
238
|
+
if (minHeight > 0 && maxHeight > 0 && maxHeight/2 > minHeight) {
|
|
239
|
+
const columnMinHeightIndex = columnHeights.indexOf(minHeight);
|
|
240
|
+
const columnMaxHeightIndex = columnHeights.indexOf(maxHeight);
|
|
241
|
+
calcInit(windowWidth, columnMinHeightIndex, columnMaxHeightIndex);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
|
|
245
|
+
};
|
|
246
|
+
|
|
247
|
+
const images: NodeListOf<HTMLImageElement> = rootRef.current.querySelectorAll('img');
|
|
248
|
+
const imagePromises: Promise<void>[] = [];
|
|
249
|
+
images.forEach((img: HTMLImageElement) => {
|
|
250
|
+
const imgPromise: Promise<void> = new Promise((resolve, reject) => {
|
|
251
|
+
if (img.complete) {
|
|
252
|
+
resolve();
|
|
253
|
+
} else {
|
|
254
|
+
img.onload = () => resolve();
|
|
255
|
+
img.onerror = () => resolve();
|
|
256
|
+
}
|
|
257
|
+
});
|
|
258
|
+
imagePromises.push(imgPromise);
|
|
259
|
+
});
|
|
260
|
+
|
|
261
|
+
// Wait for all images to load
|
|
262
|
+
if (images.length > 0) {
|
|
263
|
+
Promise.all(imagePromises)
|
|
264
|
+
.then(() => {
|
|
265
|
+
initCols();
|
|
266
|
+
})
|
|
267
|
+
.catch((error: Error) => {
|
|
268
|
+
console.error(error);
|
|
269
|
+
});
|
|
270
|
+
} else {
|
|
271
|
+
initCols();
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
|
|
276
|
+
useEffect(() => {
|
|
277
|
+
adjustPosition();
|
|
278
|
+
}, [orginalItems]);
|
|
279
|
+
|
|
280
|
+
|
|
163
281
|
useEffect(() => {
|
|
164
282
|
|
|
165
283
|
// Initialize items
|
package/lib/esm/Select/index.tsx
CHANGED
|
@@ -49,6 +49,8 @@ import {
|
|
|
49
49
|
import { clsWrite, combinedCls } from 'funda-utils/dist/cjs/cls';
|
|
50
50
|
|
|
51
51
|
|
|
52
|
+
|
|
53
|
+
|
|
52
54
|
export type SelectOptionChangeFnType = (arg1: any, arg2: any, arg3: any) => void;
|
|
53
55
|
|
|
54
56
|
export interface MultiSelectDataConfig {
|
|
@@ -825,7 +827,7 @@ const Select = forwardRef((props: SelectProps, externalRef: any) => {
|
|
|
825
827
|
}
|
|
826
828
|
|
|
827
829
|
|
|
828
|
-
function adjustMultiControlContainerHeight() {
|
|
830
|
+
function adjustMultiControlContainerHeight(scrollbarInit: boolean = true) {
|
|
829
831
|
setTimeout(() => {
|
|
830
832
|
|
|
831
833
|
|
|
@@ -837,7 +839,7 @@ const Select = forwardRef((props: SelectProps, externalRef: any) => {
|
|
|
837
839
|
// popwin position update
|
|
838
840
|
const _modalRef: any = document.querySelector(`#custom-select__options-wrapper-${idRes}`);
|
|
839
841
|
if (MULTI_SEL_VALID && _modalRef !== null && _modalRef.classList.contains('active')) {
|
|
840
|
-
popwinPosInit();
|
|
842
|
+
popwinPosInit(scrollbarInit);
|
|
841
843
|
}
|
|
842
844
|
|
|
843
845
|
|
|
@@ -862,7 +864,7 @@ const Select = forwardRef((props: SelectProps, externalRef: any) => {
|
|
|
862
864
|
}
|
|
863
865
|
|
|
864
866
|
|
|
865
|
-
function popwinPosInit() {
|
|
867
|
+
function popwinPosInit(scrollbarInit: boolean = true) {
|
|
866
868
|
if (listContentRef.current === null || rootRef.current === null || selectInputRef.current === null) return;
|
|
867
869
|
|
|
868
870
|
const contentHeightOffset = 80;
|
|
@@ -1036,7 +1038,8 @@ const Select = forwardRef((props: SelectProps, externalRef: any) => {
|
|
|
1036
1038
|
// STEP 7:
|
|
1037
1039
|
//-----------
|
|
1038
1040
|
// Scrollbar position synchronization
|
|
1039
|
-
syncListContentScrollBody();
|
|
1041
|
+
if (scrollbarInit) syncListContentScrollBody();
|
|
1042
|
+
|
|
1040
1043
|
|
|
1041
1044
|
|
|
1042
1045
|
}
|
|
@@ -1435,7 +1438,8 @@ const Select = forwardRef((props: SelectProps, externalRef: any) => {
|
|
|
1435
1438
|
}
|
|
1436
1439
|
|
|
1437
1440
|
// Appropriate multi-item container height
|
|
1438
|
-
|
|
1441
|
+
// !!!set `false` to prevents the scrollbar position from changing when multi-selecting the option is clicked
|
|
1442
|
+
adjustMultiControlContainerHeight(false);
|
|
1439
1443
|
|
|
1440
1444
|
|
|
1441
1445
|
// active current option
|
|
@@ -1586,7 +1590,8 @@ const Select = forwardRef((props: SelectProps, externalRef: any) => {
|
|
|
1586
1590
|
|
|
1587
1591
|
|
|
1588
1592
|
// Appropriate multi-item container height
|
|
1589
|
-
|
|
1593
|
+
// !!!set `false` to prevents the scrollbar position from changing when multi-selecting the option is clicked
|
|
1594
|
+
adjustMultiControlContainerHeight(false);
|
|
1590
1595
|
|
|
1591
1596
|
// active current option
|
|
1592
1597
|
if (noCallback) {
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"author": "UIUX Lab",
|
|
3
3
|
"email": "uiuxlab@gmail.com",
|
|
4
4
|
"name": "funda-ui",
|
|
5
|
-
"version": "4.5.
|
|
5
|
+
"version": "4.5.666",
|
|
6
6
|
"description": "React components using pure Bootstrap 5+ which does not contain any external style and script libraries.",
|
|
7
7
|
"repository": {
|
|
8
8
|
"type": "git",
|