@bigbinary/neetoui
Version:
neetoUI drives the experience at all neeto products
968 lines (951 loc) • 40.7 kB
JavaScript
import _ConfigProvider from 'antd/lib/config-provider';
import _defineProperty from '@babel/runtime/helpers/defineProperty';
import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
import React__default, { useRef, forwardRef, useState, useEffect, useCallback } from 'react';
import classnames from 'classnames';
import Clock from '@bigbinary/neeto-icons/Clock';
import { useTranslation } from 'react-i18next';
import './Accordion.js';
import './ActionDropdown.js';
import { u as useId } from './useId-Jj9hXm-g.js';
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
import 'react-router-dom';
import '@bigbinary/neeto-hotkeys';
import './overlayManager.js';
import { A as ANT_DESIGN_GLOBAL_TOKEN_OVERRIDES, a as getLocale, i as getValidDayjsValue, h as hyphenize, n as noop, j as getTimezoneAppliedDateTime } from './index-DzZtLRHp.js';
import 'qs';
import { u as useSyncedRef, T as Textarea } from './Textarea-D-SsRQdG.js';
import Button from './Button.js';
import './Modal.js';
import Typography from './Typography.js';
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
import 'avvvatars-react';
import { equals, prop, move, assocPath, pick, mergeLeft } from 'ramda';
import '@tippyjs/react';
import 'tippy.js';
import './Callout.js';
import './Checkbox.js';
import '@babel/runtime/helpers/toConsumableArray';
import '@babel/runtime/helpers/asyncToGenerator';
import '@babel/runtime/regenerator';
import '@bigbinary/neeto-icons/ColorPicker';
import 'react-colorful';
import './useRecentlyUsedColors-D3yg0Xpp.js';
import Dropdown from './Dropdown.js';
import '@bigbinary/neeto-icons/Down';
import _DatePicker from 'antd/lib/date-picker';
import { isPresent, findBy, isNotPresent, findIndexBy, modifyBy } from '@bigbinary/neeto-cist';
import Left from '@bigbinary/neeto-icons/Left';
import Right from '@bigbinary/neeto-icons/Right';
import Calendar from '@bigbinary/neeto-icons/Calendar';
import Close from '@bigbinary/neeto-icons/Close';
import './Input.js';
import Label from './Label.js';
import './MultiEmailInput.js';
import Pane from './Pane.js';
import './Popover.js';
import 'framer-motion';
import './Radio.js';
import '@babel/runtime/helpers/esm/extends';
import '@babel/runtime/helpers/objectSpread2';
import '@babel/runtime/helpers/classCallCheck';
import '@babel/runtime/helpers/createClass';
import '@babel/runtime/helpers/inherits';
import '@babel/runtime/helpers/createSuper';
import '@babel/runtime/helpers/taggedTemplateLiteral';
import '@babel/runtime/helpers/typeof';
import 'react-dom';
import 'antd/lib/slider';
import 'antd/locale/de_DE';
import 'antd/locale/en_US';
import 'antd/locale/es_ES';
import 'antd/locale/fr_FR';
import 'antd/locale/nl_NL';
import 'antd/locale/pl_PL';
import 'antd/locale/pt_PT';
import './Switch.js';
import './Tab.js';
import 'antd/lib/table';
import MenuHorizontal from '@bigbinary/neeto-icons/MenuHorizontal';
import 'react-drag-listview';
import Check from '@bigbinary/neeto-icons/Check';
import Ascending from '@bigbinary/neeto-icons/Ascending';
import Descending from '@bigbinary/neeto-icons/Descending';
import Pin from '@bigbinary/neeto-icons/Pin';
import InfoRound from '@bigbinary/neeto-icons/InfoRound';
import ColumnToLeft from '@bigbinary/neeto-icons/ColumnToLeft';
import ColumnToRight from '@bigbinary/neeto-icons/ColumnToRight';
import Hide from '@bigbinary/neeto-icons/Hide';
import { create } from 'zustand';
import 'react-resizable';
import '@bigbinary/neeto-icons/DownArrow';
import '@bigbinary/neeto-icons/UpArrow';
import Tag from './Tag.js';
import { ANTD_LOCALE } from './constants.js';
import './Toastr.js';
import 'i18next';
import 'antd/lib/tree';
import './TreeSelect.js';
import Select from './Select.js';
import { d as dayjs } from './index-DyUNP5G9.js';
var useFuncDebounce = function useFuncDebounce(func) {
var delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 350;
var timer = useRef(null);
var debouncedFunc = function debouncedFunc() {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
clearTimeout(timer.current);
timer.current = setTimeout(function () {
return func.apply(void 0, args);
}, delay);
};
debouncedFunc.cancel = function () {
return clearTimeout(timer.current);
};
return debouncedFunc;
};
var IconOverride = function IconOverride(_ref) {
var Icon = _ref.icon;
return /*#__PURE__*/jsx("span", {
className: "neeto-ui-btn neeto-ui-btn--style-text neeto-ui-btn--size-medium neeto-ui-btn--icon-only",
children: /*#__PURE__*/jsx(Icon, {
className: "neeto-ui-btn__icon",
size: 20
})
});
};
function ownKeys$3(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$3(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$3(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$3(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var Provider = function Provider(_ref) {
var children = _ref.children;
var _useTranslation = useTranslation(),
i18n = _useTranslation.i18n;
return /*#__PURE__*/jsx(_ConfigProvider, {
locale: ANTD_LOCALE[i18n.language || "en"],
theme: {
token: _objectSpread$3({}, ANT_DESIGN_GLOBAL_TOKEN_OVERRIDES),
components: {
DatePicker: {
activeBg: "rgb(var(--neeto-ui-white))",
activeBorderColor: "rgb(var(--neeto-ui-primary-500))",
addonBg: "rgb(var(--neeto-ui-gray-100))",
cellActiveWithRangeBg: "rgb(var(--neeto-ui-primary-100))",
cellBgDisabled: "rgb(var(--neeto-ui-gray-100))",
cellHoverBg: "rgb(var(--neeto-ui-gray-200))",
cellHoverWithRangeBg: "rgb(var(--neeto-ui-primary-100))",
cellRangeBorderColor: "rgb(var(--neeto-ui-primary-100))",
hoverBg: "rgb(var(--neeto-ui-white))",
hoverBorderColor: "rgb(var(--neeto-ui-primary-500))",
// Global overrides
colorBgContainer: "rgb(var(--neeto-ui-white))",
colorBgElevated: "rgb(var(--neeto-ui-white))",
colorPrimary: "rgb(var(--neeto-ui-primary-500))",
colorPrimaryBorder: "rgb(var(--neeto-ui-primary-100))",
colorPrimaryHover: "rgb(var(--neeto-ui-primary-600))",
colorBorder: "rgb(var(--neeto-ui-gray-300))",
colorError: "rgb(var(--neeto-ui-error-500))",
colorErrorHover: "rgb(var(--neeto-ui-error-600))",
colorErrorOutline: "rgb(var(--neeto-ui-error-100))",
colorFillAlter: "rgb(var(--neeto-ui-gray-100))",
colorIcon: "rgb(var(--neeto-ui-gray-700))",
colorIconHover: "rgb(var(--neeto-ui-gray-800))",
colorLink: "rgb(var(--neeto-ui-primary-500))",
colorLinkHover: "rgb(var(--neeto-ui-primary-600))",
colorLinkActive: "rgb(var(--neeto-ui-primary-800))",
colorSplit: "rgb(var(--neeto-ui-gray-200))",
colorText: "rgb(var(--neeto-ui-gray-800))",
colorTextDescription: "rgb(var(--neeto-ui-gray-700))",
colorTextDisabled: "rgb(var(--neeto-ui-gray-500))",
colorTextHeading: "rgb(var(--neeto-ui-black))",
colorTextLightSolid: "rgb(var(--neeto-ui-white))",
colorTextPlaceholder: "rgb(var(--neeto-ui-gray-400))",
colorTextQuaternary: "rgb(var(--neeto-ui-gray-400))",
colorWarning: "rgb(var(--neeto-ui-warning-500))",
colorWarningHover: "rgb(var(--neeto-ui-warning-600))",
colorWarningOutline: "rgb(var(--neeto-ui-warning-100))",
controlItemBgActive: "rgb(var(--neeto-ui-pastel-purple))",
controlItemBgHover: "rgb(var(--neeto-ui-gray-100))",
controlOutline: "rgb(var(--neeto-ui-gray-300))",
// Sizes
cellHeight: 32,
padding: 22
}
}
},
children: children
});
};
/* eslint-disable @bigbinary/neeto/no-dumb-components-with-use-translation */
var Today = function Today(_ref) {
var onClick = _ref.onClick;
var _useTranslation = useTranslation(),
t = _useTranslation.t,
i18n = _useTranslation.i18n;
return /*#__PURE__*/jsx("button", {
onClick: onClick,
className: "neeto-ui-rounded-md hover:neeto-ui-bg-gray-200 px-2 py-1 text-xs font-medium transition duration-300 ease-in-out",
"data-testid": "year-month-mode-today",
children: getLocale(i18n, t, "neetoui.datePicker.today")
});
};
var getAllowedDate = function getAllowedDate(date, minDate, maxDate) {
if (isPresent(minDate) && date !== null && date !== void 0 && date.isBefore(minDate)) {
return minDate;
}
if (isPresent(maxDate) && date !== null && date !== void 0 && date.isAfter(maxDate)) {
return maxDate;
}
return date;
};
var getAllowedRange = function getAllowedRange(dates, minDate, maxDate) {
return dates.map(function (item) {
return getAllowedDate(item, minDate, maxDate);
});
};
var getAllowed = function getAllowed(date, minDate, maxDate) {
return (Array.isArray(date) ? getAllowedRange : getAllowedDate)(date, minDate, maxDate);
};
var formattedString = function formattedString(date, dateFormat) {
return Array.isArray(date) ? date.map(function (item) {
return item === null || item === void 0 ? void 0 : item.format(dateFormat);
}) : date === null || date === void 0 ? void 0 : date.format(dateFormat);
};
var TIMEZONE_OPTIONS = [{
label: "Local",
value: undefined
}, {
label: "UTC",
value: "utc"
}];
var TimezoneSelect = function TimezoneSelect(_ref) {
var value = _ref.value,
_onChange = _ref.onChange;
var id = "nui-datepicker-timezone-select";
var containerRef = useRef(null);
var _useTranslation = useTranslation(),
t = _useTranslation.t,
i18n = _useTranslation.i18n;
return /*#__PURE__*/jsxs("div", {
className: "flex items-center gap-2",
ref: containerRef,
children: [/*#__PURE__*/jsx(Typography, {
htmlFor: id,
style: "body3",
weight: "medium",
children: getLocale(i18n, t, "neetoui.common.timezone")
}), /*#__PURE__*/jsx(Select, {
id: id,
className: "w-40 py-1",
"data-testid": "timezone-select",
menuPortalTarget: containerRef.current,
options: TIMEZONE_OPTIONS,
size: "small",
strategy: "fixed",
value: findBy({
value: value
}, TIMEZONE_OPTIONS),
onChange: function onChange(option) {
return _onChange(option.value);
}
})]
});
};
var _excluded$2 = ["className", "label", "size", "dropdownClassName", "popupClassName", "dateFormat", "timeFormat", "placeholder", "onChange", "onOk", "picker", "showTime", "type", "nakedInput", "error", "defaultValue", "value", "labelProps", "required", "allowClear", "maxDate", "minDate", "timePickerProps", "timezone", "onTimezoneChange", "onOpenChange", "onKeyDown"];
function ownKeys$2(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$2(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$2(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var INPUT_SIZES$1 = {
medium: "medium"};
var RangePicker$1 = _DatePicker.RangePicker;
var datePickerTypes = {
range: RangePicker$1,
date: _DatePicker
};
var DatePicker = /*#__PURE__*/forwardRef(function (_ref, ref) {
var _otherProps$open;
var _ref$className = _ref.className,
className = _ref$className === void 0 ? "" : _ref$className,
_ref$label = _ref.label,
label = _ref$label === void 0 ? "" : _ref$label,
_ref$size = _ref.size,
size = _ref$size === void 0 ? INPUT_SIZES$1.medium : _ref$size,
_ref$dropdownClassNam = _ref.dropdownClassName,
dropdownClassName = _ref$dropdownClassNam === void 0 ? "" : _ref$dropdownClassNam,
_ref$popupClassName = _ref.popupClassName,
popupClassName = _ref$popupClassName === void 0 ? "" : _ref$popupClassName,
_ref$dateFormat = _ref.dateFormat,
dateFormat = _ref$dateFormat === void 0 ? "DD/MM/YYYY" : _ref$dateFormat,
_ref$timeFormat = _ref.timeFormat,
timeFormat = _ref$timeFormat === void 0 ? "HH:mm:ss" : _ref$timeFormat,
placeholder = _ref.placeholder,
_ref$onChange = _ref.onChange,
onChange = _ref$onChange === void 0 ? noop : _ref$onChange,
_ref$onOk = _ref.onOk,
onOk = _ref$onOk === void 0 ? noop : _ref$onOk,
_ref$picker = _ref.picker,
picker = _ref$picker === void 0 ? "date" : _ref$picker,
_ref$showTime = _ref.showTime,
showTime = _ref$showTime === void 0 ? false : _ref$showTime,
_ref$type = _ref.type,
type = _ref$type === void 0 ? "date" : _ref$type,
_ref$nakedInput = _ref.nakedInput,
nakedInput = _ref$nakedInput === void 0 ? false : _ref$nakedInput,
_ref$error = _ref.error,
error = _ref$error === void 0 ? "" : _ref$error,
defaultValue = _ref.defaultValue,
inputValue = _ref.value,
labelProps = _ref.labelProps,
_ref$required = _ref.required,
required = _ref$required === void 0 ? false : _ref$required,
_ref$allowClear = _ref.allowClear,
allowClear = _ref$allowClear === void 0 ? true : _ref$allowClear,
maxDate = _ref.maxDate,
minDate = _ref.minDate,
timePickerProps = _ref.timePickerProps,
timezone = _ref.timezone,
onTimezoneChange = _ref.onTimezoneChange,
onOpenChange = _ref.onOpenChange,
onKeyDown = _ref.onKeyDown,
otherProps = _objectWithoutProperties(_ref, _excluded$2);
var _useState = useState(inputValue),
_useState2 = _slicedToArray(_useState, 2),
value = _useState2[0],
setValue = _useState2[1];
var _useState3 = useState(picker),
_useState4 = _slicedToArray(_useState3, 2),
mode = _useState4[0],
setMode = _useState4[1];
var _useState5 = useState(undefined),
_useState6 = _slicedToArray(_useState5, 2),
pickerValue = _useState6[0],
setPickerValue = _useState6[1];
var id = useId(otherProps.id);
var datePickerRef = useSyncedRef(ref);
var isDatePickerOpen = useRef((_otherProps$open = otherProps.open) !== null && _otherProps$open !== void 0 ? _otherProps$open : false);
var Component = datePickerTypes[type === null || type === void 0 ? void 0 : type.toLowerCase()];
var format = showTime ? "".concat(dateFormat, " ").concat(timeFormat) : dateFormat;
var errorId = "error_".concat(id);
useEffect(function () {
setValue(inputValue);
}, [inputValue]);
useEffect(function () {
setMode(picker);
}, [picker]);
var getAllowedValue = useCallback(function (date) {
return getAllowed(date, minDate, maxDate);
}, [minDate, maxDate]);
var handleOnChange = function handleOnChange(date, dateString) {
if (type === "range" && isNotPresent(date)) {
return onChange([], dateString);
}
var allowed = getAllowedValue(getTimezoneAppliedDateTime(date));
setValue(allowed);
return onChange(allowed, formattedString(allowed, dateFormat));
};
var handleOnCalendarChange = function handleOnCalendarChange(date) {
if (type === "range" || !date) return;
var allowed = getAllowedValue(getTimezoneAppliedDateTime(date));
setValue(allowed);
};
var handleOnOpenChange = function handleOnOpenChange(open) {
if (!open && !equals(value, inputValue)) {
onChange(value, formattedString(value, dateFormat));
}
isDatePickerOpen.current = open;
onOpenChange === null || onOpenChange === void 0 ? void 0 : onOpenChange(open);
};
var handleOnKeyDown = function handleOnKeyDown(e) {
if (!isDatePickerOpen.current) return;
e.stopPropagation();
onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown(e);
};
var renderExtraFooter = function renderExtraFooter() {
return /*#__PURE__*/jsxs("div", {
className: "flex items-center justify-between px-3",
children: [type !== "range" && mode !== "date" ? /*#__PURE__*/jsx(Today, {
onClick: function onClick() {
var today = dayjs();
setValue(today);
onChange(today, formattedString(today, dateFormat));
setMode(picker);
}
}) : /*#__PURE__*/jsx("div", {}), onTimezoneChange ? /*#__PURE__*/jsx(TimezoneSelect, {
value: timezone,
onChange: onTimezoneChange
}) : /*#__PURE__*/jsx("div", {})]
});
};
return /*#__PURE__*/jsx(Provider, {
children: /*#__PURE__*/jsxs("div", {
className: "neeto-ui-input__wrapper",
children: [label && /*#__PURE__*/jsx(Label, _objectSpread$2(_objectSpread$2({}, _objectSpread$2({
required: required
}, labelProps)), {}, {
children: label
})), /*#__PURE__*/jsx(Component, _objectSpread$2(_objectSpread$2({
"data-testid": label ? "".concat(hyphenize(label), "-input") : "picker-input",
defaultValue: getValidDayjsValue(defaultValue),
placeholder: placeholder !== null && placeholder !== void 0 ? placeholder : format,
ref: datePickerRef,
showTime: showTime && _objectSpread$2({
format: timeFormat
}, timePickerProps),
value: getValidDayjsValue(value),
className: classnames("neeto-ui-date-input", [className], {
"neeto-ui-date-input--small": size === "small",
"neeto-ui-date-input--medium": size === "medium",
"neeto-ui-date-input--large": size === "large",
"neeto-ui-date-input--disabled": otherProps.disabled,
"neeto-ui-date-input--naked": nakedInput,
"neeto-ui-date-input--error": !!error
}),
popupClassName: classnames("neeto-ui-date-time-dropdown", [dropdownClassName,
// Will be removed in the next major version
popupClassName]),
onCalendarChange: handleOnCalendarChange,
onChange: handleOnChange,
onKeyDown: handleOnKeyDown,
onOpenChange: handleOnOpenChange
}, _objectSpread$2(_objectSpread$2({
format: format,
maxDate: maxDate,
minDate: minDate,
onOk: onOk,
picker: picker,
renderExtraFooter: renderExtraFooter
}, otherProps), type === "date" && {
mode: mode,
pickerValue: pickerValue,
onPanelChange: function onPanelChange(pickerValue, mode) {
setPickerValue(pickerValue);
setMode(mode);
}
})), {}, {
getNow: dayjs,
nextIcon: /*#__PURE__*/jsx(IconOverride, {
icon: Right
}),
prevIcon: /*#__PURE__*/jsx(IconOverride, {
icon: Left
}),
superNextIcon: /*#__PURE__*/jsx(IconOverride, {
icon: Right
}),
superPrevIcon: /*#__PURE__*/jsx(IconOverride, {
icon: Left
}),
allowClear: allowClear && {
clearIcon: /*#__PURE__*/jsx(Close, {
"data-testid": "date-time-clear-icon",
size: 16
})
},
suffixIcon: timezone ? /*#__PURE__*/jsx(Tag, {
className: "uppercase",
label: timezone
}) : /*#__PURE__*/jsx(Calendar, {
size: 16
})
})), !!error && typeof error === "string" && /*#__PURE__*/jsx("p", {
className: "neeto-ui-input__error",
"data-testid": "".concat(hyphenize(label), "-input-error"),
id: errorId,
children: error
})]
})
});
});
DatePicker.displayName = "DatePicker";
var URL_SORT_ORDERS = {
ascend: "asc",
descend: "desc"
};
var TABLE_SORT_ORDERS = {
asc: "ascend",
desc: "descend"
};
var COLUMN_ADD_DIRECTION = {
left: 0,
right: 1
};
var SELECT_ALL_ROWS_CALLOUT_DESKTOP_HEIGHT = 57;
var SELECT_ALL_ROWS_CALLOUT_MOBILE_HEIGHT = 78;
var COLUMN_FIXED_VALUES = {
LEFT: "left"};
var TABLE_PAGINATION_HEIGHT = 64;
var TABLE_DEFAULT_HEADER_HEIGHT = 40;
var TABLE_ROW_HEIGHT = 52;
var useTableStore = create(function (set) {
return {
infoPaneState: {
isOpen: false,
column: null
},
setInfoPaneState: function setInfoPaneState(state) {
return set({
infoPaneState: state
});
}
};
});
var _excluded$1 = ["isActive", "icon", "label"];
function ownKeys$1(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var Menu = Dropdown.Menu,
MenuItem = Dropdown.MenuItem;
var ActionItem = function ActionItem(_ref) {
var _ref$isActive = _ref.isActive,
isActive = _ref$isActive === void 0 ? false : _ref$isActive,
Icon = _ref.icon,
label = _ref.label,
rest = _objectWithoutProperties(_ref, _excluded$1);
return /*#__PURE__*/jsxs(MenuItem.Button, _objectSpread$1(_objectSpread$1({
className: "neeto-ui-flex neeto-ui-items-center neeto-ui-justify-between"
}, rest), {}, {
children: [/*#__PURE__*/jsxs("div", {
className: "neeto-ui-flex neeto-ui-items-center neeto-ui-gap-3",
children: [Icon && /*#__PURE__*/jsx(Icon, {
className: "neeto-ui-text-gray-500",
size: 18
}), /*#__PURE__*/jsx("span", {
children: label
})]
}), isActive && /*#__PURE__*/jsx(Check, {
className: "neeto-ui-text-success-500",
size: 20
})]
}));
};
// eslint-disable-next-line @bigbinary/neeto/no-dumb-components-with-use-translation
var HeaderCellMenu = function HeaderCellMenu(_ref2) {
var onSort = _ref2.onSort,
_ref2$column = _ref2.column,
column = _ref2$column === void 0 ? {} : _ref2$column,
sortedInfo = _ref2.sortedInfo,
isSortable = _ref2.isSortable,
isAddEnabled = _ref2.isAddEnabled,
isFixedColumn = _ref2.isFixedColumn,
isColumnDeletable = _ref2.isColumnDeletable,
isColumnFreezeEnabled = _ref2.isColumnFreezeEnabled,
isHidable = _ref2.isHidable,
onColumnHide = _ref2.onColumnHide,
isMoveToLeftEnabled = _ref2.isMoveToLeftEnabled,
isMoveToRightEnabled = _ref2.isMoveToRightEnabled,
onAddColumn = _ref2.onAddColumn,
onColumnUpdate = _ref2.onColumnUpdate,
onColumnDelete = _ref2.onColumnDelete,
onColumnFreeze = _ref2.onColumnFreeze,
hasMoreActions = _ref2.hasMoreActions,
onMoreActionClick = _ref2.onMoreActionClick,
_ref2$moreActions = _ref2.moreActions,
moreActions = _ref2$moreActions === void 0 ? [] : _ref2$moreActions;
var _useTranslation = useTranslation(),
t = _useTranslation.t,
i18n = _useTranslation.i18n;
var setInfoPaneState = useTableStore(prop("setInfoPaneState"));
var onMoveColumn = function onMoveColumn(offset) {
if (!onColumnUpdate) return;
onColumnUpdate(function (columns) {
var index = findIndexBy({
key: column.key
}, columns);
var isValid = index + offset >= 0 && index + offset < columns.length;
if (!isValid) return columns;
return move(index, index + offset, columns);
});
};
return /*#__PURE__*/jsx("div", {
onClick: function onClick(event) {
return event.stopPropagation();
},
children: /*#__PURE__*/jsx(Dropdown, {
appendTo: function appendTo() {
return document.body;
},
className: "neeto-ui-flex",
icon: MenuHorizontal,
position: "bottom",
strategy: "fixed",
zIndex: 99999,
buttonProps: {
className: "neeto-ui-min-h-0 neeto-ui-flex-shrink-0",
style: "text",
size: "medium",
"data-testid": "column-menu-button",
"data-dropdown-button-style": "more-dropdown"
},
children: /*#__PURE__*/jsxs(Menu, {
className: "neeto-ui-cursor-auto",
onMouseDown: function onMouseDown(event) {
return event.preventDefault();
},
children: [isSortable && /*#__PURE__*/jsxs(Fragment, {
children: [/*#__PURE__*/jsx(ActionItem, {
"data-testid": "ascending-column-menu-button",
icon: Ascending,
label: getLocale(i18n, t, "neetoui.table.ascending"),
isActive: sortedInfo.order === TABLE_SORT_ORDERS.asc && equals(sortedInfo.field, column.dataIndex),
onClick: function onClick() {
return onSort({
column: column,
columnKey: column.key,
field: column.dataIndex || column.key,
order: TABLE_SORT_ORDERS.asc
});
}
}), /*#__PURE__*/jsx(ActionItem, {
"data-testid": "descending-column-menu-button",
icon: Descending,
label: getLocale(i18n, t, "neetoui.table.descending"),
isActive: sortedInfo.order === TABLE_SORT_ORDERS.desc && equals(sortedInfo.field, column.dataIndex),
onClick: function onClick() {
return onSort({
column: column,
columnKey: column.key,
field: column.dataIndex,
order: TABLE_SORT_ORDERS.desc
});
}
})]
}), isAddEnabled && /*#__PURE__*/jsxs(Fragment, {
children: [/*#__PURE__*/jsx(ActionItem, {
"data-testid": "insert-right-column-menu-button",
label: getLocale(i18n, t, "neetoui.table.insertColRight"),
onClick: function onClick() {
return onAddColumn(COLUMN_ADD_DIRECTION.right);
}
}), /*#__PURE__*/jsx(ActionItem, {
"data-testid": "insert-left-column-menu-button",
label: getLocale(i18n, t, "neetoui.table.insertColLeft"),
onClick: function onClick() {
return onAddColumn(COLUMN_ADD_DIRECTION.left);
}
})]
}), isHidable && /*#__PURE__*/jsx(ActionItem, {
icon: Hide,
label: getLocale(i18n, t, "neetoui.table.hideColumn"),
onClick: function onClick() {
return onColumnHide(column);
}
}), isColumnDeletable && /*#__PURE__*/jsx(ActionItem, {
"data-testid": "delete-column-menu-button",
label: getLocale(i18n, t, "neetoui.table.deleteColumn"),
onClick: function onClick() {
return onColumnDelete(column.id);
}
}), isColumnFreezeEnabled && /*#__PURE__*/jsx(ActionItem, {
"data-testid": "freeze-unfreeze-column-menu-button",
icon: Pin,
label: isFixedColumn ? getLocale(i18n, t, "neetoui.table.unFreezeColumn") : getLocale(i18n, t, "neetoui.table.freezeColumn"),
onClick: function onClick() {
return onColumnFreeze(isFixedColumn, column);
}
}), isPresent(onColumnUpdate) && /*#__PURE__*/jsx(ActionItem, {
icon: InfoRound,
label: getLocale(i18n, t, "neetoui.table.editColumnInfo"),
onClick: function onClick() {
setInfoPaneState({
isOpen: true,
column: column
});
}
}), isPresent(onColumnUpdate) && isMoveToLeftEnabled && /*#__PURE__*/jsx(ActionItem, {
icon: ColumnToLeft,
label: getLocale(i18n, t, "neetoui.table.moveColumnLeft"),
onClick: function onClick() {
return onMoveColumn(-1);
}
}), isPresent(onColumnUpdate) && isMoveToRightEnabled && /*#__PURE__*/jsx(ActionItem, {
icon: ColumnToRight,
label: getLocale(i18n, t, "neetoui.table.moveColumnRight"),
onClick: function onClick() {
return onMoveColumn(1);
}
}), hasMoreActions && moreActions.map(function (item, index) {
return /*#__PURE__*/jsx(ActionItem, {
"data-testid": "".concat(hyphenize(item.label), "-column-menu-button"),
icon: item.icon,
label: item.label,
onClick: function onClick() {
return onMoreActionClick(item.type, column);
}
}, index);
})]
})
})
});
};
var HeaderCellMenu$1 = /*#__PURE__*/React__default.memo(HeaderCellMenu);
var useScrollStore = create(function (set) {
return {
scrollPositions: {},
setScrollPosition: function setScrollPosition(key, position) {
return set(assocPath(["scrollPositions", key], position));
}
};
});
var useRestoreScrollPosition = function useRestoreScrollPosition(_ref) {
var tableRef = _ref.tableRef,
scrollRef = _ref.scrollRef,
loading = _ref.loading;
var key = window.location.pathname;
var scrollPositions = useScrollStore(prop("scrollPositions"));
var setScrollPosition = useScrollStore(prop("setScrollPosition"));
useEffect(function () {
if (loading) {
setScrollPosition(key, 0);
return;
}
if (scrollRef.current === null || !scrollPositions[key]) return;
setTimeout(function () {
var _scrollRef$current;
var position = scrollPositions[key];
(_scrollRef$current = scrollRef.current) === null || _scrollRef$current === void 0 ? void 0 : _scrollRef$current.scrollTo({
top: position
});
});
}, [key, tableRef, loading]);
var handleScroll = useFuncDebounce(function (event) {
setScrollPosition(key, parseInt(event.target.scrollTop));
});
return {
handleScroll: handleScroll
};
};
var pickStore = pick(["infoPaneState", "setInfoPaneState"]);
var TableInfoPane = function TableInfoPane(_ref) {
var onColumnUpdate = _ref.onColumnUpdate;
var _useTranslation = useTranslation(),
t = _useTranslation.t,
i18n = _useTranslation.i18n;
var _useState = useState(""),
_useState2 = _slicedToArray(_useState, 2),
description = _useState2[0],
setDescription = _useState2[1];
var _useTableStore = useTableStore(pickStore),
infoPaneState = _useTableStore.infoPaneState,
setInfoPaneState = _useTableStore.setInfoPaneState;
var isOpen = infoPaneState.isOpen,
column = infoPaneState.column;
var onUpdateColumn = function onUpdateColumn(changes) {
if (!column) return;
var modifyColumn = mergeLeft(changes);
var modifyColumns = modifyBy({
key: column.key
}, modifyColumn);
onColumnUpdate(modifyColumns);
};
var onClose = function onClose() {
setInfoPaneState({
isOpen: false,
column: null
});
};
var onSubmit = function onSubmit() {
onUpdateColumn({
description: description
});
onClose();
};
useEffect(function () {
if (!isOpen) return undefined;
setDescription((column === null || column === void 0 ? void 0 : column.description) || "");
return function () {
setDescription("");
};
}, [isOpen]);
return /*#__PURE__*/jsxs(Pane, {
onClose: onClose,
isOpen: infoPaneState.isOpen,
children: [/*#__PURE__*/jsx(Pane.Header, {
children: /*#__PURE__*/jsx(Typography, {
style: "h3",
children: column === null || column === void 0 ? void 0 : column.title
})
}), /*#__PURE__*/jsx(Pane.Body, {
children: /*#__PURE__*/jsx(Textarea, {
className: "neeto-ui-w-full",
label: getLocale(i18n, t, "neetoui.common.description"),
value: description,
onChange: function onChange(e) {
return setDescription(e.target.value);
}
})
}), /*#__PURE__*/jsxs(Pane.Footer, {
className: "neeto-ui-flex neeto-ui-justify-between",
children: [/*#__PURE__*/jsx(Button, {
style: "secondary",
onClick: onClose,
children: getLocale(i18n, t, "neetoui.actionBlock.cancel")
}), /*#__PURE__*/jsx(Button, {
onClick: onSubmit,
children: getLocale(i18n, t, "neetoui.actionBlock.saveChanges")
})]
})]
});
};
var RangePicker = _DatePicker.RangePicker;
var TIME_PICKER_TYPES = {
range: RangePicker,
time: _DatePicker
};
var _excluded = ["className", "label", "size", "dropdownClassName", "popupClassName", "format", "interval", "onChange", "type", "nakedInput", "disabled", "error", "defaultValue", "value", "labelProps", "required", "placeholder", "timezone"];
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var INPUT_SIZES = {
medium: "medium"};
var TIME_PICKER_INTERVAL = {
hourStep: 1,
minuteStep: 1,
secondStep: 1
};
var TimePicker = /*#__PURE__*/forwardRef(function (_ref, ref) {
var _ref$className = _ref.className,
className = _ref$className === void 0 ? "" : _ref$className,
_ref$label = _ref.label,
label = _ref$label === void 0 ? "" : _ref$label,
_ref$size = _ref.size,
size = _ref$size === void 0 ? INPUT_SIZES.medium : _ref$size,
_ref$dropdownClassNam = _ref.dropdownClassName,
dropdownClassName = _ref$dropdownClassNam === void 0 ? "" : _ref$dropdownClassNam,
_ref$popupClassName = _ref.popupClassName,
popupClassName = _ref$popupClassName === void 0 ? "" : _ref$popupClassName,
_ref$format = _ref.format,
format = _ref$format === void 0 ? "HH:mm:ss" : _ref$format,
_ref$interval = _ref.interval,
interval = _ref$interval === void 0 ? TIME_PICKER_INTERVAL : _ref$interval,
_ref$onChange = _ref.onChange,
onChange = _ref$onChange === void 0 ? noop : _ref$onChange,
_ref$type = _ref.type,
type = _ref$type === void 0 ? "time" : _ref$type,
_ref$nakedInput = _ref.nakedInput,
nakedInput = _ref$nakedInput === void 0 ? false : _ref$nakedInput,
_ref$disabled = _ref.disabled,
disabled = _ref$disabled === void 0 ? false : _ref$disabled,
_ref$error = _ref.error,
error = _ref$error === void 0 ? "" : _ref$error,
defaultValue = _ref.defaultValue,
value = _ref.value,
labelProps = _ref.labelProps,
_ref$required = _ref.required,
required = _ref$required === void 0 ? false : _ref$required,
placeholder = _ref.placeholder,
timezone = _ref.timezone,
otherProps = _objectWithoutProperties(_ref, _excluded);
var _useTranslation = useTranslation(),
t = _useTranslation.t,
i18n = _useTranslation.i18n;
var id = useId(otherProps.id);
var timePickerRef = useSyncedRef(ref);
var Component = TIME_PICKER_TYPES[type.toLowerCase()];
var errorId = "error_".concat(id);
var showTimeLabels = {};
if (format.includes("s")) {
showTimeLabels.second = true;
}
if (format.includes("m")) {
showTimeLabels.minute = true;
}
if (format.includes("H") || format.includes("h")) {
showTimeLabels.hour = true;
}
var handleOnChange = function handleOnChange(time, timeString) {
type === "range" && !time ? onChange([], timeString) : onChange(getTimezoneAppliedDateTime(time), timeString);
};
var panelRender = function panelRender(originalPanel) {
return /*#__PURE__*/jsxs("div", {
className: "neeto-ui-date-input-custom-panel",
children: [/*#__PURE__*/jsx("div", {
className: "neeto-ui-date-input-custom-panel__header",
children: /*#__PURE__*/jsxs("ul", {
className: "neeto-ui-date-input-custom-panel__header-cols",
children: [showTimeLabels.hour && /*#__PURE__*/jsx("li", {
className: "neeto-ui-date-input-custom-panel__header-col",
children: getLocale(i18n, t, "neetoui.timePicker.hours")
}), showTimeLabels.minute && /*#__PURE__*/jsx("li", {
className: "neeto-ui-date-input-custom-panel__header-col",
children: getLocale(i18n, t, "neetoui.timePicker.minutes")
}), showTimeLabels.second && /*#__PURE__*/jsx("li", {
className: "neeto-ui-date-input-custom-panel__header-col",
children: getLocale(i18n, t, "neetoui.timePicker.seconds")
})]
})
}), /*#__PURE__*/jsx("div", {
className: "neeto-ui-date-input-custom-panel__body",
children: originalPanel
})]
});
};
return /*#__PURE__*/jsx(_ConfigProvider, {
locale: ANTD_LOCALE[i18n.language || "en"],
theme: {
token: _objectSpread({}, ANT_DESIGN_GLOBAL_TOKEN_OVERRIDES),
components: {
DatePicker: {
// Global overrides
colorBgElevated: "rgb(var(--neeto-ui-white))",
colorPrimary: "rgb(var(--neeto-ui-primary-500))",
colorPrimaryHover: "rgb(var(--neeto-ui-primary-600))",
colorBorder: "rgb(var(--neeto-ui-gray-300))",
colorLink: "rgb(var(--neeto-ui-primary-500))",
colorLinkHover: "rgb(var(--neeto-ui-primary-600))",
colorText: "rgb(var(--neeto-ui-gray-800))",
colorTextDisabled: "rgb(var(--neeto-ui-gray-500))",
colorTextPlaceholder: "rgb(var(--neeto-ui-gray-400))",
controlItemBgActive: "rgb(var(--neeto-ui-primary-800))",
controlItemBgHover: "rgb(var(--neeto-ui-gray-100))",
controlOutline: "rgb(var(--neeto-ui-gray-300))"
}
}
},
children: /*#__PURE__*/jsxs("div", {
className: "neeto-ui-input__wrapper",
children: [label && /*#__PURE__*/jsx(Label, _objectSpread(_objectSpread({}, _objectSpread({
required: required
}, labelProps)), {}, {
children: label
})), /*#__PURE__*/jsx(Component, _objectSpread(_objectSpread({
hourStep: interval.hourStep,
minuteStep: interval.minuteStep,
ref: timePickerRef,
secondStep: interval.secondStep,
className: classnames("neeto-ui-time-input", [className], {
"neeto-ui-time-input--small": size === "small",
"neeto-ui-time-input--medium": size === "medium",
"neeto-ui-time-input--large": size === "large",
"neeto-ui-time-input--disabled": disabled,
"neeto-ui-time-input--naked": nakedInput,
"neeto-ui-time-input--error": error
}),
popupClassName: classnames("neeto-ui-date-time-dropdown", [dropdownClassName,
// Will be removed in the next major version
popupClassName]),
onChange: handleOnChange
}, _objectSpread(_objectSpread({
disabled: disabled,
format: format
}, otherProps), {}, {
panelRender: panelRender
})), {}, {
defaultValue: getValidDayjsValue(defaultValue),
mode: undefined,
picker: "time",
placeholder: placeholder !== null && placeholder !== void 0 ? placeholder : format,
value: getValidDayjsValue(value),
suffixIcon: timezone ? /*#__PURE__*/jsx(Tag, {
label: timezone
}) : /*#__PURE__*/jsx(Clock, {
size: 16
})
})), !!error && /*#__PURE__*/jsx("p", {
className: "neeto-ui-input__error",
"data-testid": "".concat(hyphenize(label), "-input-error"),
id: errorId,
children: error
})]
})
});
});
TimePicker.displayName = "TimePicker";
export { COLUMN_FIXED_VALUES as C, DatePicker as D, HeaderCellMenu$1 as H, SELECT_ALL_ROWS_CALLOUT_MOBILE_HEIGHT as S, TimePicker as T, URL_SORT_ORDERS as U, TABLE_SORT_ORDERS as a, TABLE_PAGINATION_HEIGHT as b, TABLE_ROW_HEIGHT as c, SELECT_ALL_ROWS_CALLOUT_DESKTOP_HEIGHT as d, TABLE_DEFAULT_HEADER_HEIGHT as e, TableInfoPane as f, useRestoreScrollPosition as u };
//# sourceMappingURL=index-CJiULAZF.js.map