@appbuckets/react-ui
Version:
Just Another React UI Framework
182 lines (175 loc) • 4.53 kB
JavaScript
;
var tslib = require('tslib');
var React = require('react');
var clsx = require('clsx');
var reactUiCore = require('@appbuckets/react-ui-core');
require('../BucketTheme/BucketTheme.js');
var BucketContext = require('../BucketTheme/BucketContext.js');
var useProgressProps = require('./lib/useProgressProps.js');
var useProgressIndicator = require('./lib/useProgressIndicator.js');
function _interopDefaultLegacy(e) {
return e && typeof e === 'object' && 'default' in e ? e : { default: e };
}
function _interopNamespace(e) {
if (e && e.__esModule) return e;
var n = Object.create(null);
if (e) {
Object.keys(e).forEach(function (k) {
if (k !== 'default') {
var d = Object.getOwnPropertyDescriptor(e, k);
Object.defineProperty(
n,
k,
d.get
? d
: {
enumerable: true,
get: function () {
return e[k];
},
}
);
}
});
}
n['default'] = e;
return Object.freeze(n);
}
var React__namespace = /*#__PURE__*/ _interopNamespace(React);
var clsx__default = /*#__PURE__*/ _interopDefaultLegacy(clsx);
/* --------
* Component Render
* -------- */
var LinearProgress = function (receivedProps) {
var props = BucketContext.useWithDefaultProps(
'linearProgress',
receivedProps
);
var _a = useProgressProps(props),
className = _a.className,
progress = _a.progress,
_b = _a.rest;
_b.as;
var children = _b.children,
content = _b.content,
indicator = _b.indicator,
limits = _b.limits,
reverse = _b.reverse,
rest = tslib.__rest(_b, [
'as',
'children',
'content',
'indicator',
'limits',
'reverse',
]);
var ElementType = reactUiCore.useElementType(
LinearProgress,
receivedProps,
props
);
// ----
// Build Indicator Element
// ----
var indicatorElement = useProgressIndicator(indicator, progress);
// ----
// Build Limits Element
// ----
var downLimit =
limits &&
(typeof limits === 'function' ? limits(progress.min) : progress.min);
var upLimit =
limits &&
(typeof limits === 'function'
? limits(progress.overvalued ? progress.value : progress.max)
: progress.overvalued
? progress.value
: progress.max);
var overValueLimit =
progress.overvalued &&
limits &&
(typeof limits === 'function' ? limits(progress.max) : progress.max);
var limitsElement = React__namespace.useMemo(
function () {
if (!limits) {
return null;
}
return React__namespace.createElement(
'div',
{ className: 'limits' },
React__namespace.createElement(
'div',
{
className: 'value',
style: {
width: ''.concat(progress.overvalued ? progress.width : 100, '%'),
},
},
React__namespace.createElement(
'div',
{ className: 'down' },
downLimit
),
React__namespace.createElement('div', { className: 'up' }, upLimit)
),
overValueLimit &&
React__namespace.createElement(
'div',
{ className: 'overvalue' },
overValueLimit
)
);
},
[
limits,
progress.overvalued,
progress.width,
downLimit,
upLimit,
overValueLimit,
]
);
var classes = clsx__default['default'](
className,
{
reverse: reverse,
'with-limits': limitsElement,
'with-indicator': indicatorElement,
},
'linear'
);
var contentElement = reactUiCore.childrenUtils.isNil(children)
? content
: children;
return React__namespace.createElement(
ElementType,
tslib.__assign({}, rest, { className: classes }),
limitsElement,
React__namespace.createElement(
'div',
{ className: 'bar' },
React__namespace.createElement(
'div',
{
className: 'value',
style: { width: ''.concat(progress.width, '%') },
},
indicatorElement
)
),
contentElement &&
React__namespace.createElement(
'div',
{ className: 'content' },
contentElement
)
);
};
LinearProgress.displayName = 'LinearProgress';
LinearProgress.create = reactUiCore.createShorthandFactory(
LinearProgress,
function (value) {
return { value: value };
}
);
module.exports = LinearProgress;