@dynamic-framework/ui-react 1.10.0 → 1.11.1
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/dist/css/dynamic-ui-non-root.css +8 -4
- package/dist/css/dynamic-ui-non-root.min.css +1 -1
- package/dist/css/dynamic-ui.css +8 -4
- package/dist/css/dynamic-ui.min.css +1 -1
- package/dist/index.esm.js +77 -13
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +77 -13
- package/dist/index.js.map +1 -1
- package/dist/types/components/DBoxFile/DBoxFile.d.ts +1 -2
- package/dist/types/components/DInput/DInput.d.ts +3 -2
- package/dist/types/components/DInputCounter/DInputCounter.d.ts +3 -2
- package/dist/types/components/DInputCurrency/DInputCurrency.d.ts +3 -2
- package/dist/types/components/DInputCurrencyBase/DInputCurrencyBase.d.ts +3 -2
- package/dist/types/components/DInputSearch/DInputSearch.d.ts +3 -2
- package/dist/types/components/DInputSelect/DInputSelect.d.ts +5 -4
- package/dist/types/components/interface.d.ts +1 -1
- package/package.json +2 -2
- package/src/style/components/_d-input-pin.scss +2 -6
- package/src/style/components/_d-input-select.scss +8 -1
package/dist/index.esm.js
CHANGED
|
@@ -51,6 +51,8 @@ const ALERT_TYPE_ICON = {
|
|
|
51
51
|
danger: 'exclamation-triangle',
|
|
52
52
|
success: 'check-circle',
|
|
53
53
|
info: 'info-circle',
|
|
54
|
+
dark: 'info-circle',
|
|
55
|
+
light: 'info-circle',
|
|
54
56
|
};
|
|
55
57
|
|
|
56
58
|
function DIcon({ icon, theme, style, className, size = '1.5rem', loading = false, loadingDuration = 1.8, hasCircle = false, circleSize = `calc(var(--${PREFIX_BS}icon-component-size) * 1)`, color, backgroundColor, familyClass = 'bi', familyPrefix = 'bi-', }) {
|
|
@@ -506,7 +508,7 @@ function useProvidedRefOrCreate(providedRef) {
|
|
|
506
508
|
}
|
|
507
509
|
|
|
508
510
|
function DInput(_a, ref) {
|
|
509
|
-
var { id, style, className, label = '', labelIcon, labelIconFamilyClass, labelIconFamilyPrefix, disabled = false, readOnly = false, loading = false, iconFamilyClass, iconFamilyPrefix, iconStart, iconStartFamilyClass, iconStartFamilyPrefix, iconStartAriaLabel, iconStartTabIndex, iconEnd, iconEndFamilyClass, iconEndFamilyPrefix, iconEndAriaLabel, iconEndTabIndex, hint, invalid = false, valid = false, inputStart, value, onChange, onIconStartClick, onIconEndClick } = _a, inputProps = __rest(_a, ["id", "style", "className", "label", "labelIcon", "labelIconFamilyClass", "labelIconFamilyPrefix", "disabled", "readOnly", "loading", "iconFamilyClass", "iconFamilyPrefix", "iconStart", "iconStartFamilyClass", "iconStartFamilyPrefix", "iconStartAriaLabel", "iconStartTabIndex", "iconEnd", "iconEndFamilyClass", "iconEndFamilyPrefix", "iconEndAriaLabel", "iconEndTabIndex", "hint", "invalid", "valid", "inputStart", "value", "onChange", "onIconStartClick", "onIconEndClick"]);
|
|
511
|
+
var { id, style, className, label = '', labelIcon, labelIconFamilyClass, labelIconFamilyPrefix, disabled = false, readOnly = false, loading = false, iconFamilyClass, iconFamilyPrefix, iconStart, iconStartFamilyClass, iconStartFamilyPrefix, iconStartAriaLabel, iconStartTabIndex, iconEnd, iconEndFamilyClass, iconEndFamilyPrefix, iconEndAriaLabel, iconEndTabIndex, hint, invalid = false, valid = false, floatingLabel = false, inputStart, value, placeholder = '', onChange, onIconStartClick, onIconEndClick } = _a, inputProps = __rest(_a, ["id", "style", "className", "label", "labelIcon", "labelIconFamilyClass", "labelIconFamilyPrefix", "disabled", "readOnly", "loading", "iconFamilyClass", "iconFamilyPrefix", "iconStart", "iconStartFamilyClass", "iconStartFamilyPrefix", "iconStartAriaLabel", "iconStartTabIndex", "iconEnd", "iconEndFamilyClass", "iconEndFamilyPrefix", "iconEndAriaLabel", "iconEndTabIndex", "hint", "invalid", "valid", "floatingLabel", "inputStart", "value", "placeholder", "onChange", "onIconStartClick", "onIconEndClick"]);
|
|
510
512
|
const inputRef = useProvidedRefOrCreate(ref);
|
|
511
513
|
const handleOnChange = useCallback((event) => {
|
|
512
514
|
onChange === null || onChange === void 0 ? void 0 : onChange(event.currentTarget.value);
|
|
@@ -524,17 +526,45 @@ function DInput(_a, ref) {
|
|
|
524
526
|
]
|
|
525
527
|
.filter(Boolean)
|
|
526
528
|
.join(' ')), [id, iconStart, iconEnd, hint]);
|
|
529
|
+
const inputComponent = useMemo(() => (jsx("input", Object.assign({ ref: inputRef, id: id, className: classNames('form-control', {
|
|
530
|
+
'is-invalid': invalid,
|
|
531
|
+
'is-valid': valid,
|
|
532
|
+
}), disabled: disabled || loading, readOnly: readOnly, value: value, onChange: handleOnChange }, (floatingLabel || placeholder) && { placeholder: floatingLabel ? '' : placeholder }, ariaDescribedby && { 'aria-describedby': ariaDescribedby }, inputProps))), [
|
|
533
|
+
ariaDescribedby,
|
|
534
|
+
disabled,
|
|
535
|
+
handleOnChange,
|
|
536
|
+
id,
|
|
537
|
+
inputProps,
|
|
538
|
+
inputRef,
|
|
539
|
+
invalid,
|
|
540
|
+
loading,
|
|
541
|
+
placeholder,
|
|
542
|
+
floatingLabel,
|
|
543
|
+
readOnly,
|
|
544
|
+
valid,
|
|
545
|
+
value,
|
|
546
|
+
]);
|
|
547
|
+
const labelComponent = useMemo(() => (jsxs("label", { htmlFor: id, children: [label, labelIcon && (jsx(DIcon, { className: "d-input-icon", icon: labelIcon, size: `var(--${PREFIX_BS}input-label-font-size)`, familyClass: labelIconFamilyClass, familyPrefix: labelIconFamilyPrefix }))] })), [
|
|
548
|
+
id,
|
|
549
|
+
label,
|
|
550
|
+
labelIcon,
|
|
551
|
+
labelIconFamilyClass,
|
|
552
|
+
labelIconFamilyPrefix,
|
|
553
|
+
]);
|
|
554
|
+
const dynamicComponent = useMemo(() => {
|
|
555
|
+
if (floatingLabel) {
|
|
556
|
+
return (jsxs("div", { className: "form-floating", children: [inputComponent, labelComponent] }));
|
|
557
|
+
}
|
|
558
|
+
return inputComponent;
|
|
559
|
+
}, [floatingLabel, inputComponent, labelComponent]);
|
|
527
560
|
return (jsxs("div", { className: classNames({
|
|
528
561
|
'd-input': true,
|
|
529
562
|
className: !!className,
|
|
530
|
-
}), style: style, children: [label &&
|
|
563
|
+
}), style: style, children: [label && !floatingLabel && (labelComponent), jsxs("div", { className: "d-input-control", children: [jsxs("div", { className: classNames({
|
|
531
564
|
'input-group': true,
|
|
532
565
|
'has-validation': invalid,
|
|
533
566
|
disabled: disabled || loading,
|
|
534
|
-
}), children: [!!inputStart && (jsx("div", { className: "input-group-text", children: inputStart })), iconStart && (jsx("button", { type: "button", className: "input-group-text", id: `${id}Start`, onClick: handleOnIconStartClick, disabled: disabled || loading, "aria-label": iconStartAriaLabel, tabIndex: iconStartTabIndex, children: iconStart && (jsx(DIcon, { className: "d-input-icon", icon: iconStart, familyClass: iconStartFamilyClass, familyPrefix: iconStartFamilyPrefix })) })), jsx("input",
|
|
535
|
-
'is-invalid': invalid,
|
|
536
|
-
'is-valid': valid,
|
|
537
|
-
}), disabled: disabled || loading, readOnly: readOnly, value: value, onChange: handleOnChange }, ariaDescribedby && { 'aria-describedby': ariaDescribedby }, inputProps)), ((invalid || valid) && !iconEnd && !loading) && (jsx("span", { className: "input-group-text", id: `${id}State`, children: jsx(DIcon, { className: "d-input-validation-icon", icon: invalid ? 'exclamation-circle' : 'check', familyClass: iconFamilyClass, familyPrefix: iconFamilyPrefix }) })), (iconEnd && !loading) && (jsx("button", { type: "button", className: "input-group-text", id: `${id}End`, onClick: handleOnIconEndClick, disabled: disabled || loading, "aria-label": iconEndAriaLabel, tabIndex: iconEndTabIndex, children: iconEnd && (jsx(DIcon, { className: "d-input-icon", icon: iconEnd, familyClass: iconEndFamilyClass, familyPrefix: iconEndFamilyPrefix })) })), loading && (jsx("div", { className: "input-group-text d-input-icon", children: jsx("span", { className: "spinner-border spinner-border-sm", role: "status", "aria-hidden": "true", children: jsx("span", { className: "visually-hidden", children: "Loading..." }) }) }))] }), hint && (jsx("div", { className: "form-text", id: `${id}Hint`, children: hint }))] })] }));
|
|
567
|
+
}), children: [!!inputStart && (jsx("div", { className: "input-group-text", children: inputStart })), iconStart && (jsx("button", { type: "button", className: "input-group-text", id: `${id}Start`, onClick: handleOnIconStartClick, disabled: disabled || loading, "aria-label": iconStartAriaLabel, tabIndex: iconStartTabIndex, children: iconStart && (jsx(DIcon, { className: "d-input-icon", icon: iconStart, familyClass: iconStartFamilyClass, familyPrefix: iconStartFamilyPrefix })) })), dynamicComponent, ((invalid || valid) && !iconEnd && !loading) && (jsx("span", { className: "input-group-text", id: `${id}State`, children: jsx(DIcon, { className: "d-input-validation-icon", icon: invalid ? 'exclamation-circle' : 'check', familyClass: iconFamilyClass, familyPrefix: iconFamilyPrefix }) })), (iconEnd && !loading) && (jsx("button", { type: "button", className: "input-group-text", id: `${id}End`, onClick: handleOnIconEndClick, disabled: disabled || loading, "aria-label": iconEndAriaLabel, tabIndex: iconEndTabIndex, children: iconEnd && (jsx(DIcon, { className: "d-input-icon", icon: iconEnd, familyClass: iconEndFamilyClass, familyPrefix: iconEndFamilyPrefix })) })), loading && (jsx("div", { className: "input-group-text d-input-icon", children: jsx("span", { className: "spinner-border spinner-border-sm", role: "status", "aria-hidden": "true", children: jsx("span", { className: "visually-hidden", children: "Loading..." }) }) }))] }), hint && (jsx("div", { className: "form-text", id: `${id}Hint`, children: hint }))] })] }));
|
|
538
568
|
}
|
|
539
569
|
const ForwardedDInput = forwardRef(DInput);
|
|
540
570
|
ForwardedDInput.displayName = 'DInput';
|
|
@@ -751,7 +781,7 @@ function DInputCheck({ type, name, label, ariaLabel, checked = false, id, disabl
|
|
|
751
781
|
return (jsxs("div", { className: "form-check", children: [jsx("input", { ref: innerRef, onChange: handleChange, className: classNames('form-check-input', className), style: style, id: id, disabled: disabled, type: type, name: name, value: value }), jsx("label", { className: "form-check-label", htmlFor: id, children: label })] }));
|
|
752
782
|
}
|
|
753
783
|
|
|
754
|
-
function DInputPin({ id, label = '', labelIcon, labelIconFamilyClass, labelIconFamilyPrefix, placeholder
|
|
784
|
+
function DInputPin({ id, label = '', labelIcon, labelIconFamilyClass, labelIconFamilyPrefix, placeholder, type = 'text', disabled = false, loading = false, secret = false, iconFamilyClass, iconFamilyPrefix, characters = 4, innerInputMode = 'text', hint, invalid = false, valid = false, className, style, onChange, }) {
|
|
755
785
|
const [pattern, setPattern] = useState('');
|
|
756
786
|
useEffect(() => {
|
|
757
787
|
setPattern(type === 'number' ? '[0-9]+' : '^[a-zA-Z0-9]+$');
|
|
@@ -807,7 +837,7 @@ function DInputPin({ id, label = '', labelIcon, labelIconFamilyClass, labelIconF
|
|
|
807
837
|
}), type: secret ? 'password' : type, "aria-describedby": `${id}State`, inputMode: innerInputMode, id: `pinIndex${index}`, name: `pin-${index}`, maxLength: 1, onChange: nextInput, onKeyDown: prevInput, onFocus: focusInput, onWheel: wheelInput, onClick: preventDefaultEvent, autoComplete: "off", placeholder: placeholder, disabled: disabled || loading, required: true }, type === 'number' && ({ min: 0, max: 9 })), index))), (invalid || valid) && !loading && (jsx("span", { className: "input-group-text", id: `${id}State`, children: jsx(DIcon, { className: "d-input-pin-validation-icon", icon: invalid ? 'exclamation-circle' : 'check', familyClass: iconFamilyClass, familyPrefix: iconFamilyPrefix }) })), loading && (jsx("div", { className: "input-group-text d-input-pin-icon", children: jsx("span", { className: "spinner-border spinner-border-sm", role: "status", "aria-hidden": "true", children: jsx("span", { className: "visually-hidden", children: "Loading..." }) }) }))] }), hint && (jsx("div", { className: "form-text", id: `${id}Hint`, children: hint }))] }));
|
|
808
838
|
}
|
|
809
839
|
|
|
810
|
-
function DInputSelect({ id, name, label = '', className, style, options, labelIcon, labelIconFamilyClass, labelIconFamilyPrefix, disabled = false, loading = false, iconStart, iconStartFamilyClass, iconStartFamilyPrefix, iconStartAriaLabel, iconEnd, iconEndFamilyClass, iconEndFamilyPrefix, iconEndAriaLabel, hint,
|
|
840
|
+
function DInputSelect({ id, name, label = '', className, style, options, labelIcon, labelIconFamilyClass, labelIconFamilyPrefix, disabled = false, loading = false, iconStart, iconStartFamilyClass, iconStartFamilyPrefix, iconStartAriaLabel, iconEnd, iconEndFamilyClass, iconEndFamilyPrefix, iconEndAriaLabel, hint, value, floatingLabel = false, valueExtractor, labelExtractor, onChange, onBlur, onIconStartClick, onIconEndClick, }) {
|
|
811
841
|
const internalValueExtractor = useCallback((option) => {
|
|
812
842
|
if (valueExtractor) {
|
|
813
843
|
return valueExtractor(option);
|
|
@@ -829,7 +859,9 @@ function DInputSelect({ id, name, label = '', className, style, options, labelIc
|
|
|
829
859
|
const changeHandler = useCallback((event) => {
|
|
830
860
|
const selected = options
|
|
831
861
|
.find((option) => internalValueExtractor(option).toString() === event.currentTarget.value);
|
|
832
|
-
|
|
862
|
+
if (selected) {
|
|
863
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(selected);
|
|
864
|
+
}
|
|
833
865
|
}, [onChange, options, internalValueExtractor]);
|
|
834
866
|
const blurHandler = useCallback((event) => {
|
|
835
867
|
onBlur === null || onBlur === void 0 ? void 0 : onBlur(event);
|
|
@@ -847,10 +879,41 @@ function DInputSelect({ id, name, label = '', className, style, options, labelIc
|
|
|
847
879
|
]
|
|
848
880
|
.filter(Boolean)
|
|
849
881
|
.join(' ')), [id, iconStart, iconEnd, hint]);
|
|
850
|
-
|
|
882
|
+
const selectComponent = useMemo(() => (jsx("select", Object.assign({ id: id, name: name, className: classNames({
|
|
883
|
+
'form-select': true,
|
|
884
|
+
'floating-label': floatingLabel,
|
|
885
|
+
}), "aria-label": label, disabled: disabled || loading, onChange: changeHandler, onBlur: blurHandler }, ariaDescribedby && { 'aria-describedby': ariaDescribedby }, value && { value }, { children: options.map((option) => (jsx("option", { value: internalValueExtractor(option), children: internalLabelExtractor(option) }, internalValueExtractor(option)))) }))), [
|
|
886
|
+
ariaDescribedby,
|
|
887
|
+
blurHandler,
|
|
888
|
+
changeHandler,
|
|
889
|
+
disabled,
|
|
890
|
+
id,
|
|
891
|
+
internalLabelExtractor,
|
|
892
|
+
internalValueExtractor,
|
|
893
|
+
label,
|
|
894
|
+
loading,
|
|
895
|
+
name,
|
|
896
|
+
options,
|
|
897
|
+
value,
|
|
898
|
+
floatingLabel,
|
|
899
|
+
]);
|
|
900
|
+
const labelComponent = useMemo(() => (jsxs("label", { htmlFor: id, children: [label, labelIcon && (jsx(DIcon, { className: "mdinput-icon", icon: labelIcon, size: `var(--${PREFIX_BS}input-label-font-size)`, familyClass: labelIconFamilyClass, familyPrefix: labelIconFamilyPrefix }))] })), [
|
|
901
|
+
id,
|
|
902
|
+
label,
|
|
903
|
+
labelIcon,
|
|
904
|
+
labelIconFamilyClass,
|
|
905
|
+
labelIconFamilyPrefix,
|
|
906
|
+
]);
|
|
907
|
+
const dynamicComponent = useMemo(() => {
|
|
908
|
+
if (floatingLabel) {
|
|
909
|
+
return (jsxs("div", { className: "form-floating", children: [selectComponent, labelComponent] }));
|
|
910
|
+
}
|
|
911
|
+
return selectComponent;
|
|
912
|
+
}, [floatingLabel, labelComponent, selectComponent]);
|
|
913
|
+
return (jsxs("div", { className: classNames('d-input', className), style: style, children: [label && !floatingLabel && (labelComponent), jsxs("div", { className: "d-input-control", children: [jsxs("div", { className: classNames({
|
|
851
914
|
'input-group': true,
|
|
852
915
|
disabled: disabled || loading,
|
|
853
|
-
}), children: [iconStart && (jsx("button", { type: "button", className: "input-group-text", id: `${id}Start`, onClick: iconStartClickHandler, disabled: disabled || loading, "aria-label": iconStartAriaLabel, children: iconStart && (jsx(DIcon, { className: "d-input-icon", icon: iconStart, familyClass: iconStartFamilyClass, familyPrefix: iconStartFamilyPrefix })) })),
|
|
916
|
+
}), children: [iconStart && (jsx("button", { type: "button", className: "input-group-text", id: `${id}Start`, onClick: iconStartClickHandler, disabled: disabled || loading, "aria-label": iconStartAriaLabel, children: iconStart && (jsx(DIcon, { className: "d-input-icon", icon: iconStart, familyClass: iconStartFamilyClass, familyPrefix: iconStartFamilyPrefix })) })), dynamicComponent, iconEnd && !loading && (jsx("button", { type: "button", className: "input-group-text", id: `${id}End`, onClick: iconEndClickHandler, disabled: disabled || loading, "aria-label": iconEndAriaLabel, children: iconEnd && (jsx(DIcon, { className: "d-input-icon", icon: iconEnd, familyClass: iconEndFamilyClass, familyPrefix: iconEndFamilyPrefix })) })), loading && (jsx("div", { className: "input-group-text form-control-icon loading", children: jsx("span", { className: "spinner-border spinner-border-sm", role: "status", "aria-hidden": "true", children: jsx("span", { className: "visually-hidden", children: "Loading..." }) }) }))] }), hint && (jsx("div", { className: "form-text", id: `${id}Hint`, children: hint }))] })] }));
|
|
854
917
|
}
|
|
855
918
|
|
|
856
919
|
function DListItem({ children, className, style, active = false, disabled = false, theme, onClick, }) {
|
|
@@ -1005,12 +1068,13 @@ function DPopover({ children, renderComponent, open, setOpen, adjustContentToRen
|
|
|
1005
1068
|
}
|
|
1006
1069
|
|
|
1007
1070
|
function DProgress({ className, style, currentValue, minValue = 0, maxValue = 100, hideCurrentValue = false, enableStripedAnimation = false, }) {
|
|
1008
|
-
const
|
|
1071
|
+
const percentage = useMemo(() => (Math.round((currentValue * 100) / maxValue)), [currentValue, maxValue]);
|
|
1072
|
+
const formatProgress = useMemo(() => `${percentage}%`, [percentage]);
|
|
1009
1073
|
const generateClasses = useMemo(() => ({
|
|
1010
1074
|
'progress-bar': true,
|
|
1011
1075
|
'progress-bar-striped progress-bar-animated': enableStripedAnimation,
|
|
1012
1076
|
}), [enableStripedAnimation]);
|
|
1013
|
-
return (jsx("div", { className:
|
|
1077
|
+
return (jsx("div", { className: classNames('progress', className), children: jsx("div", { className: classNames(generateClasses), role: "progressbar", "aria-label": "Progress bar", style: Object.assign({ width: formatProgress }, style), "aria-valuenow": currentValue, "aria-valuemin": minValue, "aria-valuemax": maxValue, children: !hideCurrentValue && formatProgress }) }));
|
|
1014
1078
|
}
|
|
1015
1079
|
|
|
1016
1080
|
function DQuickActionButton({ line1, line2, className, actionLinkText, actionLinkTheme = 'secondary', actionIcon, secondaryActionIcon, secondaryActionAriaLabel, actionIconFamilyClass, actionIconFamilyPrefix, representativeImage, representativeIcon, representativeIconTheme = 'secondary', representativeIconHasCircle = false, representativeIconFamilyClass, representativeIconFamilyPrefix, onClick, onClickSecondary, style, }) {
|