@cwellt_software/cwellt-reactjs-lib 1.0.3 → 1.0.4
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/content/icons/new-cw-icons/NewCwIcons.html +389 -6
- package/dist/content/icons/new-cw-icons/NewCwIcons.json +1 -1
- package/dist/content/icons/new-cw-icons/css/new-cw-icons.css +20 -7
- package/dist/content/icons/new-cw-icons/fonts/NewCwIcons.woff +0 -0
- package/dist/index.cjs.js +307 -158
- package/dist/index.css +2 -2
- package/dist/index.d.ts +141 -56
- package/dist/index.es.js +313 -157
- package/dist/src/common/functions/colorManipulation.d.ts.map +1 -1
- package/dist/src/components/control/action/button/CwButton.d.ts +3 -2
- package/dist/src/components/control/action/button/CwButton.d.ts.map +1 -1
- package/dist/src/components/control/action/buttons/CwButtons.d.ts +0 -7
- package/dist/src/components/control/action/buttons/CwButtons.d.ts.map +1 -1
- package/dist/src/components/control/action/contextmenu/CwContextMenu.d.ts +4 -0
- package/dist/src/components/control/action/contextmenu/CwContextMenu.d.ts.map +1 -1
- package/dist/src/components/control/action/search/CwSearch.d.ts +1 -1
- package/dist/src/components/control/action/search/CwSearch.d.ts.map +1 -1
- package/dist/src/components/control/choice/dropdown/CwDropdown.d.ts +2 -2
- package/dist/src/components/control/choice/dropdown/CwDropdown.d.ts.map +1 -1
- package/dist/src/components/control/choice/multi-filter/CwMultiFilter.d.ts +122 -33
- package/dist/src/components/control/choice/multi-filter/CwMultiFilter.d.ts.map +1 -1
- package/dist/src/components/control/choice/toggle/CwToggle.d.ts +0 -4
- package/dist/src/components/control/choice/toggle/CwToggle.d.ts.map +1 -1
- package/dist/src/components/custom/scheduler/CwSchedulerComp.d.ts.map +1 -1
- package/dist/src/components/custom/scheduler-new/presentation/NewScheduler.d.ts.map +1 -1
- package/dist/src/components/custom/scheduler-new/presentation/components/row/BackgroundEvent.d.ts +0 -1
- package/dist/src/components/custom/scheduler-new/presentation/components/row/BackgroundEvent.d.ts.map +1 -1
- package/dist/src/components/custom/scheduler-new/presentation/components/row/DefaultRowHeader.d.ts.map +1 -1
- package/dist/src/components/custom/super-scheduler/PinRowHeader.d.ts.map +1 -1
- package/dist/src/components/display/data/accordion/CwAccordionContainer.d.ts.map +1 -1
- package/dist/src/components/display/data/generic_tooltip/CwGenericTooltip.d.ts +1 -0
- package/dist/src/components/display/data/generic_tooltip/CwGenericTooltip.d.ts.map +1 -1
- package/dist/src/components/display/data/table/CwTable.d.ts +2 -2
- package/dist/src/components/display/data/table/CwTable.d.ts.map +1 -1
- package/dist/src/components/layout/dialog/CwDialog.d.ts +2 -2
- package/dist/src/components/layout/dialog/CwDialog.d.ts.map +1 -1
- package/dist/src/components/layout/modal/CwModalReportFunctional.d.ts +2 -2
- package/dist/src/components/layout/modal/CwModalReportFunctional.d.ts.map +1 -1
- package/dist/src/components/layout/tabs/CwTabs.d.ts +2 -1
- package/dist/src/components/layout/tabs/CwTabs.d.ts.map +1 -1
- package/dist/src/index.d.ts +2 -2
- package/dist/src/index.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.es.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { jsx, jsxs, Fragment
|
|
1
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import React__default, { useEffect, useState, useRef, useMemo, useCallback, forwardRef, useImperativeHandle, createElement, memo, Fragment, Component } from 'react';
|
|
3
|
+
import React__default, { useEffect, useState, useRef, useMemo, useCallback, forwardRef, useImperativeHandle, createElement, memo, Fragment as Fragment$1, Component } from 'react';
|
|
4
4
|
import { createRoot } from 'react-dom/client';
|
|
5
5
|
import { createPortal } from 'react-dom';
|
|
6
6
|
import { Tooltip, Modal, InputNumber, Select, Tag, Dropdown, Menu } from 'antd';
|
|
@@ -245,7 +245,7 @@ function CwLoadingSmall(CwelltLoadingAppointements) {
|
|
|
245
245
|
jsx("div", { className: "cwellt_d_none" })) }));
|
|
246
246
|
}
|
|
247
247
|
|
|
248
|
-
var styles$
|
|
248
|
+
var styles$b = {"cw-generic-tooltip-content":"cw-generic-tooltip-module_cw-generic-tooltip-content__la-Si"};
|
|
249
249
|
|
|
250
250
|
// Constants moved outside to prevent recreation
|
|
251
251
|
const margin = 16;
|
|
@@ -350,23 +350,25 @@ const useTooltipPosition = (isVisible, containerRef, preferredPosition, tooltipC
|
|
|
350
350
|
return tooltipState;
|
|
351
351
|
};
|
|
352
352
|
// Main component with optimizations
|
|
353
|
-
const CwGenericTooltip = ({ children, content = null, position = defaultPosition, dissapearsWhenHover = false, overlayStyle = {}, showDelay = 0, }) => {
|
|
353
|
+
const CwGenericTooltip = ({ children, content = null, position = defaultPosition, dissapearsWhenHover = false, hide = false, overlayStyle = {}, showDelay = 0, }) => {
|
|
354
354
|
const [isVisible, setIsVisible] = useState(false);
|
|
355
355
|
const containerRef = useRef(null);
|
|
356
|
-
const { setTooltipTimeout, clearTooltipTimeout } = useTooltipDelay(() =>
|
|
357
|
-
|
|
356
|
+
const { setTooltipTimeout, clearTooltipTimeout } = useTooltipDelay(() => {
|
|
357
|
+
setIsVisible(true);
|
|
358
|
+
}, showDelay);
|
|
359
|
+
const { position: tooltipPosition, actualPosition } = useTooltipPosition(isVisible, containerRef, position, styles$b["cw-generic-tooltip-content"]);
|
|
358
360
|
// Memoize tooltip content creation
|
|
359
361
|
const tooltipContent = useMemo(() => {
|
|
360
|
-
if (!isVisible || !content)
|
|
362
|
+
if (hide || !isVisible || !content)
|
|
361
363
|
return null;
|
|
362
|
-
return createPortal(jsx("div", { className: styles$
|
|
364
|
+
return createPortal(jsx("div", { className: styles$b["cw-generic-tooltip-content"], "data-position": actualPosition, "data-visible": isVisible, style: {
|
|
363
365
|
position: 'fixed',
|
|
364
366
|
top: `${tooltipPosition.top}px`,
|
|
365
367
|
left: `${tooltipPosition.left}px`,
|
|
366
368
|
visibility: tooltipPosition.top === 0 && tooltipPosition.left === 0 ? 'hidden' : 'visible',
|
|
367
369
|
...overlayStyle
|
|
368
370
|
}, onMouseEnter: () => dissapearsWhenHover && setIsVisible(false), children: content }), document.body);
|
|
369
|
-
}, [isVisible, content, actualPosition, tooltipPosition, dissapearsWhenHover, overlayStyle]);
|
|
371
|
+
}, [isVisible, content, actualPosition, tooltipPosition, dissapearsWhenHover, overlayStyle, hide]);
|
|
370
372
|
const handleMouseEnter = useCallback(() => {
|
|
371
373
|
setTooltipTimeout();
|
|
372
374
|
}, [setTooltipTimeout]);
|
|
@@ -374,7 +376,7 @@ const CwGenericTooltip = ({ children, content = null, position = defaultPosition
|
|
|
374
376
|
clearTooltipTimeout();
|
|
375
377
|
setIsVisible(false);
|
|
376
378
|
}, [clearTooltipTimeout]);
|
|
377
|
-
return (jsxs("div", { ref: containerRef, className: styles$
|
|
379
|
+
return (jsxs("div", { ref: containerRef, className: styles$b["cw-generic-tooltip"], onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, style: overlayStyle, children: [tooltipContent, children] }));
|
|
378
380
|
};
|
|
379
381
|
|
|
380
382
|
// Reference for draggable modal
|
|
@@ -493,11 +495,52 @@ class CwModalIframe extends React.Component {
|
|
|
493
495
|
}
|
|
494
496
|
}
|
|
495
497
|
|
|
496
|
-
var styles$
|
|
498
|
+
var styles$a = {"cw-dialog-main":"cw-dialog-module_cw-dialog-main__cHxHt","cw-dialog-button-close":"cw-dialog-module_cw-dialog-button-close__9GRd8"};
|
|
497
499
|
|
|
500
|
+
// Helper function to parse size values
|
|
501
|
+
const parseSize = (size) => {
|
|
502
|
+
if (typeof size === 'number')
|
|
503
|
+
return { value: size, unit: 'px' };
|
|
504
|
+
// Match numeric value and unit
|
|
505
|
+
const match = size.match(/^([\d.]+)(\D+)$/);
|
|
506
|
+
if (match) {
|
|
507
|
+
return { value: parseFloat(match[1]), unit: match[2] };
|
|
508
|
+
}
|
|
509
|
+
// Default to pixels if no unit specified
|
|
510
|
+
return { value: parseFloat(size), unit: 'px' };
|
|
511
|
+
};
|
|
512
|
+
// Helper to convert size to px for calculations
|
|
513
|
+
const convertToPx = (size) => {
|
|
514
|
+
if (size.unit === 'px')
|
|
515
|
+
return size.value;
|
|
516
|
+
if (size.unit === 'rem')
|
|
517
|
+
return size.value * 16; // Assuming 1rem = 16px
|
|
518
|
+
if (size.unit === 'vh')
|
|
519
|
+
return (window.innerHeight * size.value) / 100;
|
|
520
|
+
if (size.unit === 'vw')
|
|
521
|
+
return (window.innerWidth * size.value) / 100;
|
|
522
|
+
return size.value; // Default fallback
|
|
523
|
+
};
|
|
498
524
|
const CwDialog = props => {
|
|
499
525
|
const dialogRef = useRef(null);
|
|
500
|
-
|
|
526
|
+
// Default width and height with units
|
|
527
|
+
const defaultWidth = 800;
|
|
528
|
+
const defaultHeight = 600;
|
|
529
|
+
// Parse width and height from props or use defaults
|
|
530
|
+
const initialWidth = props.dialogSize?.width !== undefined ? props.dialogSize.width : defaultWidth;
|
|
531
|
+
const initialHeight = props.dialogSize?.height !== undefined ? props.dialogSize.height : defaultHeight;
|
|
532
|
+
// Parse the sizes to separate value and unit
|
|
533
|
+
const parsedWidth = parseSize(initialWidth);
|
|
534
|
+
const parsedHeight = parseSize(initialHeight);
|
|
535
|
+
// Convert to px for internal calculations
|
|
536
|
+
const initialWidthPx = convertToPx(parsedWidth);
|
|
537
|
+
const initialHeightPx = convertToPx(parsedHeight);
|
|
538
|
+
const initialDialogSize = {
|
|
539
|
+
width: initialWidthPx,
|
|
540
|
+
height: initialHeightPx,
|
|
541
|
+
widthUnit: parsedWidth.unit,
|
|
542
|
+
heightUnit: parsedHeight.unit
|
|
543
|
+
};
|
|
501
544
|
const [isDragging, setIsDragging] = useState(false);
|
|
502
545
|
const [resizeDirection, setResizeDirection] = useState(null);
|
|
503
546
|
const [position, setPosition] = useState({
|
|
@@ -506,6 +549,8 @@ const CwDialog = props => {
|
|
|
506
549
|
});
|
|
507
550
|
const [size, setSize] = useState(initialDialogSize);
|
|
508
551
|
const [dragStart, setDragStart] = useState({ x: 0, y: 0 });
|
|
552
|
+
// scrim is true by default
|
|
553
|
+
const hasScrim = props.scrim !== false;
|
|
509
554
|
useEffect(() => {
|
|
510
555
|
const handleMouseMove = (e) => {
|
|
511
556
|
if (isDragging) {
|
|
@@ -554,7 +599,11 @@ const CwDialog = props => {
|
|
|
554
599
|
// Ensure the modal stays within bounds after resizing
|
|
555
600
|
newX = Math.min(Math.max(newX, minVisiblePx - newWidth), parentRect.width - minVisiblePx);
|
|
556
601
|
newY = Math.min(Math.max(newY, minVisiblePx - newHeight), parentRect.height - minVisiblePx);
|
|
557
|
-
setSize({
|
|
602
|
+
setSize({
|
|
603
|
+
...size,
|
|
604
|
+
width: newWidth,
|
|
605
|
+
height: newHeight
|
|
606
|
+
});
|
|
558
607
|
setPosition({ x: newX, y: newY });
|
|
559
608
|
}
|
|
560
609
|
}
|
|
@@ -579,9 +628,9 @@ const CwDialog = props => {
|
|
|
579
628
|
e.stopPropagation();
|
|
580
629
|
setResizeDirection(direction);
|
|
581
630
|
};
|
|
582
|
-
const header = (jsxs("header", { onMouseDown: handleMouseDown, children: [jsx("span", { children: props.headline }), props.customHeader || (jsx("button", { className: styles$
|
|
631
|
+
const header = (jsxs("header", { onMouseDown: handleMouseDown, children: [jsx("span", { children: props.headline }), props.customHeader || (jsx("button", { className: styles$a["cw-dialog-button-close"], onClick: props.onClose, children: "\u2A2F" }))] }));
|
|
583
632
|
const content = (jsx("section", { style: { flex: 1, overflowX: "auto", overflowY: "auto", width: "100%" }, children: props.children }));
|
|
584
|
-
const footer = (jsx("footer", { style: { width: "100%" }, children: props.customFooter || (jsx("button", { className:
|
|
633
|
+
const footer = (jsx("footer", { style: { width: "100%" }, children: props.customFooter || (jsx("button", { className: "cw-button-icon cwi-save", onClick: props.onSave })) }));
|
|
585
634
|
const resizeHandles = [
|
|
586
635
|
jsx("div", { "data-handle-n": true, onMouseDown: handleResizeMouseDown("n") }, "handle-n"),
|
|
587
636
|
jsx("div", { "data-handle-s": true, onMouseDown: handleResizeMouseDown("s") }, "handle-s"),
|
|
@@ -592,11 +641,14 @@ const CwDialog = props => {
|
|
|
592
641
|
jsx("div", { "data-handle-se": true, onMouseDown: handleResizeMouseDown("se") }, "handle-se"),
|
|
593
642
|
jsx("div", { "data-handle-sw": true, onMouseDown: handleResizeMouseDown("sw") }, "handle-sw")
|
|
594
643
|
];
|
|
595
|
-
|
|
644
|
+
// Prepare width and height with units for display
|
|
645
|
+
const displayWidth = `${size.width}${size.widthUnit === 'px' ? 'px' : size.widthUnit}`;
|
|
646
|
+
const displayHeight = `${size.height}${size.heightUnit === 'px' ? 'px' : size.heightUnit}`;
|
|
647
|
+
return (props.open && (jsx("div", { "data-has-scrim": hasScrim, className: styles$a["cw-dialog-main"], children: jsxs("dialog", { ...props, ref: dialogRef, style: {
|
|
596
648
|
left: `${position.x}px`,
|
|
597
649
|
top: `${position.y}px`,
|
|
598
|
-
width:
|
|
599
|
-
height:
|
|
650
|
+
width: displayWidth,
|
|
651
|
+
height: displayHeight,
|
|
600
652
|
zIndex: props.zIndex,
|
|
601
653
|
minWidth: "200px", // Set an appropriate minimum size
|
|
602
654
|
minHeight: "200px", // Set an appropriate minimum size
|
|
@@ -747,6 +799,8 @@ class CwDialogManager {
|
|
|
747
799
|
}
|
|
748
800
|
}
|
|
749
801
|
|
|
802
|
+
var styles$9 = {"cw-accordion":"cw-accordion-module_cw-accordion__ErvlW","cw-accordion-body":"cw-accordion-module_cw-accordion-body__xlI8b"};
|
|
803
|
+
|
|
750
804
|
/**
|
|
751
805
|
*
|
|
752
806
|
* @param CwelltAccordionContainerProps
|
|
@@ -762,11 +816,7 @@ function CwAccordionContainer(CwelltAccordionContainerProps) {
|
|
|
762
816
|
setVisible_accordionBody(!isVisible_accordionBody);
|
|
763
817
|
};
|
|
764
818
|
// #endregion
|
|
765
|
-
return (jsxs("div", { className: "
|
|
766
|
-
? "cwellt_expandCollapse_active cwellt_flex cwellt_align_items_center cwellt_justify_center"
|
|
767
|
-
: "cwellt_expandCollapse cwellt_flex cwellt_align_items_center cwellt_justify_center" }) })] }), jsx("div", { className: isVisible_accordionBody
|
|
768
|
-
? "cwellt_accordionBody cwellt_flex cwellt_flex_column cwellt_justify_flex_start"
|
|
769
|
-
: "cwellt_accordionBody cwellt_display_none cwellt_flex_column cwellt_justify_flex_start", children: CwelltAccordionContainerProps.children })] }));
|
|
819
|
+
return (jsxs("div", { className: styles$9["cw-accordion"], style: CwelltAccordionContainerProps.style, "data-open": isVisible_accordionBody, children: [jsxs("header", { onClick: () => showAccordionBody(), children: [jsx("div", { children: CwelltAccordionContainerProps.desc_text }), jsx("button", { className: "cw-button-icon" })] }), jsx("div", { className: styles$9["cw-accordion-body"], children: CwelltAccordionContainerProps.children })] }));
|
|
770
820
|
}
|
|
771
821
|
|
|
772
822
|
/**
|
|
@@ -857,7 +907,7 @@ function CwAccordionContainer(CwelltAccordionContainerProps) {
|
|
|
857
907
|
* />
|
|
858
908
|
* @returns React component
|
|
859
909
|
*/
|
|
860
|
-
function CwTable({ columns, data, pagination, itemsPerPage, expandedRowRender, onExpand, className, classNameHeader,
|
|
910
|
+
function CwTable({ columns, data, pagination, itemsPerPage, expandedRowRender, onExpand, className, classNameHeader, classNameRow, style, classNameContainer, id, textNoData }) {
|
|
861
911
|
const [currentPage, setCurrentPage] = useState(1);
|
|
862
912
|
const [expandedRowKey, setExpandedRowKey] = useState(null);
|
|
863
913
|
const [sortConfig, setSortConfig] = useState({
|
|
@@ -924,7 +974,7 @@ function CwTable({ columns, data, pagination, itemsPerPage, expandedRowRender, o
|
|
|
924
974
|
setCurrentPage(newPage);
|
|
925
975
|
}
|
|
926
976
|
};
|
|
927
|
-
return (jsxs("div", { id: id, className: classNameContainer
|
|
977
|
+
return (jsxs("div", { id: id, className: `cw-table-container ${classNameContainer || ""}`, children: [jsxs("table", { className: `cw-table ${className || ""}`, style: style, children: [jsx("thead", { className: `${classNameHeader || ""}`, children: jsxs("tr", { children: [expandedRowRender && jsx("th", {}), columns.map(column => (jsx("th", { onClick: () => handleSort(column.dataIndex), className: `${column.className || ""} ${sortConfig.key === column.dataIndex ? sortConfig.direction : ""}`.trim(), children: column.title }, column.key)))] }) }), jsx("tbody", { children: !paginatedData || paginatedData.length === 0 ? (jsx("tr", { children: jsx("td", { colSpan: columns.length + (expandedRowRender ? 1 : 0), style: { textAlign: "center" }, className: "cw-table-cell-empty", children: textNoData !== undefined && textNoData !== "" ? textNoData : "No data available at the moment" }) })) : (paginatedData.map(item => (jsxs(React__default.Fragment, { children: [jsxs("tr", { className: `${classNameRow || ""}`, children: [expandedRowRender && (jsx("td", { className: "cw-table-col-action cw-table-col-expand", children: jsx("button", { onClick: () => handleRowExpand(item), className: `cw-button-icon ${expandedRowKey === item.key ? "cwi-chevron-down" : "cwi-chevron-right"}` }) })), columns.map(column => (jsx("td", { className: column.className || "", children: column.render ? column.render(item) : item[column.dataIndex] }, `${item.key}_${column.key}`)))] }), expandedRowKey === item.key && expandedRowRender && (jsx("tr", { className: "cw-table-row-expanded", children: jsx("td", { colSpan: columns.length + 1, children: expandedRowRender(item) }) }))] }, item.key)))) })] }), pagination && totalPages > 1 && (jsxs("footer", { className: "cw-table-pagination", children: [jsx("button", { onClick: () => handlePageChange(currentPage - 1), disabled: currentPage === 1, className: "cw-button-icon cwi-chevron-left" }), jsxs("span", { children: ["Page ", currentPage, " of ", totalPages] }), jsx("button", { onClick: () => handlePageChange(currentPage + 1), disabled: currentPage === totalPages, className: "cw-button-icon cwi-chevron-right" })] }))] }));
|
|
928
978
|
}
|
|
929
979
|
|
|
930
980
|
var styles$8 = {"cw-tabs":"cw-tabs-module_cw-tabs__1pmji","cw-tabs-content":"cw-tabs-module_cw-tabs-content__HTp8d"};
|
|
@@ -967,7 +1017,10 @@ function CwTabs(CwTabsProps) {
|
|
|
967
1017
|
}
|
|
968
1018
|
};
|
|
969
1019
|
const position = CwTabsProps.tabsPosition || 'top';
|
|
970
|
-
|
|
1020
|
+
const tabsListStyle = position === 'left' && CwTabsProps.tabsListWidth
|
|
1021
|
+
? { minWidth: CwTabsProps.tabsListWidth }
|
|
1022
|
+
: undefined;
|
|
1023
|
+
return (jsxs("div", { id: CwTabsProps.id, className: styles$8['cw-tabs'], "data-tabs-position": position, children: [jsx("ul", { style: tabsListStyle, children: CwTabsProps.tabs.map(tab => (jsxs("li", { className: `${tab.key === activeTab ? "cw-tab-active" : ""}`, onClick: () => handleTabClick(tab), "data-active": tab.key === activeTab, children: [jsx(TabIcon, { icon: tab.icon }), tab.title] }, tab.key))) }), jsx("div", { className: styles$8['cw-tabs-content'], children: activeTab !== null && CwTabsProps.tabs.find(tab => tab.key === activeTab)?.content })] }));
|
|
971
1024
|
}
|
|
972
1025
|
|
|
973
1026
|
/**
|
|
@@ -1128,9 +1181,15 @@ function CwInput(CwInputProps) {
|
|
|
1128
1181
|
jsx("button", { className: "cw_button_clear cwellt_flex cwellt_justify_center cwellt_align_items_center", onClick: handleClearClick }))] }));
|
|
1129
1182
|
}
|
|
1130
1183
|
|
|
1131
|
-
function CwButton(
|
|
1132
|
-
|
|
1133
|
-
|
|
1184
|
+
function CwButton({ text, variant = 'solid', className = '', children, ...buttonProps }) {
|
|
1185
|
+
let buttonClass = "cw-button";
|
|
1186
|
+
if (variant === 'outline') {
|
|
1187
|
+
buttonClass += " cw-button-outline";
|
|
1188
|
+
}
|
|
1189
|
+
if (className) {
|
|
1190
|
+
buttonClass += ` ${className}`;
|
|
1191
|
+
}
|
|
1192
|
+
return (jsx("button", { type: "button", className: buttonClass, ...buttonProps, children: children ?? text }));
|
|
1134
1193
|
}
|
|
1135
1194
|
|
|
1136
1195
|
/**
|
|
@@ -1678,7 +1737,7 @@ class Weekdays {
|
|
|
1678
1737
|
static WEEKDAYS_TO_USA_SHORT_FORMAT = new Map([
|
|
1679
1738
|
["M", "Mon"],
|
|
1680
1739
|
["T", "Tue"],
|
|
1681
|
-
["W", "
|
|
1740
|
+
["W", "Wed"],
|
|
1682
1741
|
["R", "Thu"],
|
|
1683
1742
|
["F", "Fri"],
|
|
1684
1743
|
["S", "Sat"],
|
|
@@ -1812,8 +1871,8 @@ function CwCheckbox(CwCheckboxProps) {
|
|
|
1812
1871
|
* <CwToggle checked/>
|
|
1813
1872
|
*/
|
|
1814
1873
|
function CwToggle(props) {
|
|
1815
|
-
const {
|
|
1816
|
-
return (
|
|
1874
|
+
const { labelProps, buttonProps, iconProps, ...inputProps } = props;
|
|
1875
|
+
return (jsxs("div", { className: "cw-toggle", children: [labelProps && (jsxs(CwLabel, { ...labelProps, children: [iconProps && jsx(CwIcon, { ...iconProps }), labelProps.text] })), jsx("input", { className: "cw-toggle", type: "checkbox", ...inputProps }), buttonProps && jsx(CwButton, { ...buttonProps })] }));
|
|
1817
1876
|
}
|
|
1818
1877
|
|
|
1819
1878
|
/**
|
|
@@ -1882,9 +1941,9 @@ function CwDropdown(optionsProps) {
|
|
|
1882
1941
|
? "cwellt_flex cwellt_flex_row cwellt_align_items_center cwDropDownComp" + " " + optionsProps.className
|
|
1883
1942
|
: optionsProps.labelPosition === "column"
|
|
1884
1943
|
? "cwellt_flex cwellt_flex_column cwellt_align-items_baseline cwDropDownComp" + " " + optionsProps.className
|
|
1885
|
-
: "cwellt_flex cwellt_flex_row cwellt_align_items_center cwDropDownComp" + " " + optionsProps.className, style: optionsProps.style, children: [jsx("label", { className: optionsProps.disabled === true
|
|
1944
|
+
: "cwellt_flex cwellt_flex_row cwellt_align_items_center cwDropDownComp" + " " + optionsProps.className, style: optionsProps.style, id: optionsProps.id, children: [jsx("label", { className: optionsProps.disabled === true
|
|
1886
1945
|
? "cw_label_text cw_label_text_disabled" + " " + optionsProps.labelClassName
|
|
1887
|
-
: "cw_label_text" + " " + optionsProps.labelClassName, children: optionsProps.labelName }),
|
|
1946
|
+
: "cw_label_text" + " " + optionsProps.labelClassName, children: optionsProps.labelName }), jsx("select", { value: selectedOption, onChange: handleOptionSelect, className: "cw_select", style: optionsProps.styleSelect, disabled: optionsProps.disabled || optionsProps.selectList.length === 0, children: optionsProps.selectList.length === 0 ? (jsx("option", { value: "", className: "cw_option", disabled: true, children: "No data" })) : (jsxs(Fragment, { children: [jsx("option", { value: "", className: "cw_option", children: optionsProps.placeholder }), optionsProps.selectList.map(option => (jsx("option", { value: option.id, className: "cw_option", style: optionsProps.styleOption, children: option.description }, option.id)))] })) })] }));
|
|
1888
1947
|
}
|
|
1889
1948
|
|
|
1890
1949
|
function CwDropdownContainer(dropDownContainerProps) {
|
|
@@ -2774,8 +2833,20 @@ const CwMultiFilterTag = props => {
|
|
|
2774
2833
|
var styles$5 = {"cw-multi-filter-catalog-container":"cw-multi-filter-module_cw-multi-filter-catalog-container__S3nsq","cw-multi-filter":"cw-multi-filter-module_cw-multi-filter__zipBK","cw-multi-filter-search":"cw-multi-filter-module_cw-multi-filter-search__eyHr0"};
|
|
2775
2834
|
|
|
2776
2835
|
/**
|
|
2777
|
-
* A multiple filter selector, a MULTI-SELECT even.
|
|
2836
|
+
* A multiple filter selector, a MULTI-SELECT even. Allows users to select and filter items based on tags.
|
|
2778
2837
|
* @remark
|
|
2838
|
+
* The CwMultiFilter component provides a user interface for selecting multiple filter options
|
|
2839
|
+
* organized by categories. Each filter option is represented as a clickable tag with customizable
|
|
2840
|
+
* colors. The component manages the selection state internally but reports changes via a callback.
|
|
2841
|
+
*
|
|
2842
|
+
* Filter tags should include the following properties:
|
|
2843
|
+
* - `Name`: Display name of the filter
|
|
2844
|
+
* - `Value`: Actual value used for filtering logic
|
|
2845
|
+
* - `Category`: Group the filter belongs to
|
|
2846
|
+
* - `ID`: Unique identifier for the filter
|
|
2847
|
+
* - `PrimaryColor`: Background color of the tag
|
|
2848
|
+
* - `OnPrimaryColor`: Text color of the tag
|
|
2849
|
+
*
|
|
2779
2850
|
* ```
|
|
2780
2851
|
* ╭───────────────────────────────────────────────────────────────╮
|
|
2781
2852
|
* │ ╭──────────╮ ╭──────────╮ ╭──────────╮ │
|
|
@@ -2790,39 +2861,116 @@ var styles$5 = {"cw-multi-filter-catalog-container":"cw-multi-filter-module_cw-m
|
|
|
2790
2861
|
* ╰─────────────────────────────────────────────────────────────╯
|
|
2791
2862
|
* ```
|
|
2792
2863
|
* @example
|
|
2793
|
-
* ```
|
|
2794
|
-
*
|
|
2795
|
-
*
|
|
2796
|
-
*
|
|
2864
|
+
* ```tsx
|
|
2865
|
+
* import { CwMultiFilter, type CwMultiFilterTagProps, type ICwMultiFilterTag } from "cwellt-reactjs-lib";
|
|
2866
|
+
* import { useCallback, useState } from "react";
|
|
2867
|
+
* import { hexToRGB } from "../common/functions/color";
|
|
2868
|
+
*
|
|
2869
|
+
* function FilterExample() {
|
|
2870
|
+
* // State to track selected filter tags
|
|
2871
|
+
* const [selectedTags, setSelectedTags] = useState(new Set<CwMultiFilterTagProps>());
|
|
2872
|
+
*
|
|
2873
|
+
* // Sample data to filter
|
|
2874
|
+
* const [users, setUsers] = useState([
|
|
2875
|
+
* { id: 1, name: "John", role: "admin", department: "IT" },
|
|
2876
|
+
* { id: 2, name: "Sarah", role: "user", department: "HR" },
|
|
2877
|
+
* // More users...
|
|
2878
|
+
* ]);
|
|
2797
2879
|
*
|
|
2798
|
-
*
|
|
2799
|
-
*
|
|
2800
|
-
*
|
|
2801
|
-
*
|
|
2802
|
-
*
|
|
2803
|
-
*
|
|
2804
|
-
*
|
|
2805
|
-
*
|
|
2806
|
-
*
|
|
2807
|
-
*
|
|
2808
|
-
*
|
|
2809
|
-
*
|
|
2810
|
-
*
|
|
2811
|
-
*
|
|
2812
|
-
*
|
|
2813
|
-
*
|
|
2814
|
-
*
|
|
2815
|
-
*
|
|
2816
|
-
*
|
|
2817
|
-
*
|
|
2818
|
-
*
|
|
2819
|
-
*
|
|
2820
|
-
*
|
|
2821
|
-
*
|
|
2822
|
-
*
|
|
2823
|
-
*
|
|
2824
|
-
*
|
|
2825
|
-
*
|
|
2880
|
+
* // Filtered users based on selected tags
|
|
2881
|
+
* const [filteredUsers, setFilteredUsers] = useState(users);
|
|
2882
|
+
*
|
|
2883
|
+
* // Define filter options
|
|
2884
|
+
* const filterOptions = new Set([
|
|
2885
|
+
* {
|
|
2886
|
+
* Name: "Admin",
|
|
2887
|
+
* Value: "admin",
|
|
2888
|
+
* Category: "Roles",
|
|
2889
|
+
* ID: "Roles_admin",
|
|
2890
|
+
* OnPrimaryColor: hexToRGB("#2050a8"),
|
|
2891
|
+
* PrimaryColor: hexToRGB("#cedcff")
|
|
2892
|
+
* },
|
|
2893
|
+
* {
|
|
2894
|
+
* Name: "User",
|
|
2895
|
+
* Value: "user",
|
|
2896
|
+
* Category: "Roles",
|
|
2897
|
+
* ID: "Roles_user",
|
|
2898
|
+
* OnPrimaryColor: hexToRGB("#2050a8"),
|
|
2899
|
+
* PrimaryColor: hexToRGB("#cedcff")
|
|
2900
|
+
* },
|
|
2901
|
+
* {
|
|
2902
|
+
* Name: "IT",
|
|
2903
|
+
* Value: "IT",
|
|
2904
|
+
* Category: "Departments",
|
|
2905
|
+
* ID: "Departments_IT",
|
|
2906
|
+
* OnPrimaryColor: hexToRGB("#a82037"),
|
|
2907
|
+
* PrimaryColor: hexToRGB("#ffceda")
|
|
2908
|
+
* },
|
|
2909
|
+
* {
|
|
2910
|
+
* Name: "HR",
|
|
2911
|
+
* Value: "HR",
|
|
2912
|
+
* Category: "Departments",
|
|
2913
|
+
* ID: "Departments_HR",
|
|
2914
|
+
* OnPrimaryColor: hexToRGB("#a82037"),
|
|
2915
|
+
* PrimaryColor: hexToRGB("#ffceda")
|
|
2916
|
+
* }
|
|
2917
|
+
* ]);
|
|
2918
|
+
*
|
|
2919
|
+
* // Handle filter changes
|
|
2920
|
+
* const onChangeFilters = useCallback((tags: Set<ICwMultiFilterTag>) => {
|
|
2921
|
+
* setSelectedTags(tags);
|
|
2922
|
+
* const tagsArray = Array.from(tags);
|
|
2923
|
+
*
|
|
2924
|
+
* // Get values for each category
|
|
2925
|
+
* const roleValues = tagsArray
|
|
2926
|
+
* .filter(tag => tag.Category === "Roles")
|
|
2927
|
+
* .map(tag => tag.Value);
|
|
2928
|
+
*
|
|
2929
|
+
* const departmentValues = tagsArray
|
|
2930
|
+
* .filter(tag => tag.Category === "Departments")
|
|
2931
|
+
* .map(tag => tag.Value);
|
|
2932
|
+
*
|
|
2933
|
+
* // Apply filters
|
|
2934
|
+
* if (tagsArray.length === 0) {
|
|
2935
|
+
* // No filters applied
|
|
2936
|
+
* setFilteredUsers(users);
|
|
2937
|
+
* } else {
|
|
2938
|
+
* let filtered = users;
|
|
2939
|
+
*
|
|
2940
|
+
* if (roleValues.length > 0) {
|
|
2941
|
+
* filtered = filtered.filter(user => roleValues.includes(user.role));
|
|
2942
|
+
* }
|
|
2943
|
+
*
|
|
2944
|
+
* if (departmentValues.length > 0) {
|
|
2945
|
+
* filtered = filtered.filter(user => departmentValues.includes(user.department));
|
|
2946
|
+
* }
|
|
2947
|
+
*
|
|
2948
|
+
* setFilteredUsers(filtered);
|
|
2949
|
+
* }
|
|
2950
|
+
* }, [users]);
|
|
2951
|
+
*
|
|
2952
|
+
* return (
|
|
2953
|
+
* <div>
|
|
2954
|
+
* <h2>Filter Users</h2>
|
|
2955
|
+
* <div style={{ width: "50%" }}>
|
|
2956
|
+
* <CwMultiFilter
|
|
2957
|
+
* id="user-filter"
|
|
2958
|
+
* allTags={filterOptions}
|
|
2959
|
+
* onChangeSelectedTags={onChangeFilters}
|
|
2960
|
+
* selectedTags={selectedTags}
|
|
2961
|
+
* />
|
|
2962
|
+
* </div>
|
|
2963
|
+
* <div style={{ marginTop: "20px" }}>
|
|
2964
|
+
* <h3>Filtered Results ({filteredUsers.length})</h3>
|
|
2965
|
+
* <ul>
|
|
2966
|
+
* {filteredUsers.map(user => (
|
|
2967
|
+
* <li key={user.id}>{user.name} - {user.role} ({user.department})</li>
|
|
2968
|
+
* ))}
|
|
2969
|
+
* </ul>
|
|
2970
|
+
* </div>
|
|
2971
|
+
* </div>
|
|
2972
|
+
* );
|
|
2973
|
+
* }
|
|
2826
2974
|
* ```
|
|
2827
2975
|
* @param {CwMultiFilterProps} props
|
|
2828
2976
|
* @returns Set the `onChange` callback to a function to check for changes in the selected filters
|
|
@@ -2930,7 +3078,7 @@ const CwMultiFilter = ({ allTags, id, onChangeSelectedTags, selectedTags, style
|
|
|
2930
3078
|
};
|
|
2931
3079
|
return (jsxs("form", { ref: componentRef, id: id, className: styles$5["cw-multi-filter"], style: style, onSubmit: (e) => {
|
|
2932
3080
|
e.preventDefault();
|
|
2933
|
-
}, children: [jsxs("div", { onClick: handleDivClick, className: styles$5["cw-multi-filter-search"], style: isPanelOpen ? { outline: "1px solid var(--cw-color-primary)", outlineOffset: "-2px" } : {}, children: [jsxs("ul", { id: id + "_selected_filters", children: [Array.from(selectedTags).map(tag => (createElement(CwMultiFilterTag, { ...tag, key: tag.ID, Selectable: false, Removable: true, OnRemove: () => removeTag(tag.ID) }))), jsx("input", { type: "text", id: id + "_input", ref: inputRef, value: inputTextValue, spellCheck: false, onFocus: () => setIsPanelOpen(true), onChange: e => handleInputText(e.target.value), autoComplete: "off", onKeyDown: e => {
|
|
3081
|
+
}, children: [jsxs("div", { onClick: handleDivClick, className: styles$5["cw-multi-filter-search"], style: isPanelOpen ? { outline: "1px solid var(--cw-color-primary)", outlineOffset: "-2px" } : {}, children: [jsxs("ul", { id: id + "_selected_filters", children: [Array.from(selectedTags).map(tag => (createElement(CwMultiFilterTag, { ...tag, key: tag.ID, Selectable: false, Removable: true, OnRemove: () => removeTag(tag.ID) }))), jsx("input", { type: "text", id: id + "_input", ref: inputRef, value: inputTextValue, spellCheck: false, onFocus: () => setIsPanelOpen(true), onChange: e => handleInputText(e.target.value), autoComplete: "off", placeholder: "Write to filter", onKeyDown: e => {
|
|
2934
3082
|
switch (e.key) {
|
|
2935
3083
|
case "Enter":
|
|
2936
3084
|
case "Tab":
|
|
@@ -2981,20 +3129,49 @@ const CwMultiFilter = ({ allTags, id, onChangeSelectedTags, selectedTags, style
|
|
|
2981
3129
|
function CwSearchInput(optionsProps) {
|
|
2982
3130
|
const [searchText, setSearchText] = useState("");
|
|
2983
3131
|
const [filteredOptions, setFilteredOptions] = useState([]);
|
|
3132
|
+
const [_selectedOption, setSelectedOption] = useState(null);
|
|
3133
|
+
// Make default value selection when loading the component
|
|
3134
|
+
useEffect(() => {
|
|
3135
|
+
if (optionsProps.defaultValue && optionsProps.selectList && optionsProps.selectList.length > 0) {
|
|
3136
|
+
const defaultOption = optionsProps.selectList.find(option => option.id === optionsProps.defaultValue?.toString());
|
|
3137
|
+
if (defaultOption) {
|
|
3138
|
+
setSearchText(defaultOption.description);
|
|
3139
|
+
setSelectedOption(defaultOption);
|
|
3140
|
+
// Notify the parent component if there is a handleChange
|
|
3141
|
+
if (optionsProps.handleChange) {
|
|
3142
|
+
optionsProps.handleChange(defaultOption.id);
|
|
3143
|
+
}
|
|
3144
|
+
}
|
|
3145
|
+
}
|
|
3146
|
+
}, [optionsProps.defaultValue, optionsProps.selectList]);
|
|
2984
3147
|
const handleInputChange = (event) => {
|
|
2985
3148
|
const text = event.target.value;
|
|
2986
3149
|
setSearchText(text);
|
|
2987
3150
|
if (text === "") {
|
|
2988
3151
|
setFilteredOptions([]);
|
|
3152
|
+
setSelectedOption(null);
|
|
3153
|
+
// Notify that there is no selection
|
|
3154
|
+
if (optionsProps.handleChange) {
|
|
3155
|
+
optionsProps.handleChange("");
|
|
3156
|
+
}
|
|
2989
3157
|
}
|
|
2990
3158
|
else {
|
|
2991
|
-
// Filter options based on search text
|
|
2992
|
-
const filtered = optionsProps.selectList.filter((option) =>
|
|
3159
|
+
// Filter options based on search text in any text property
|
|
3160
|
+
const filtered = optionsProps.selectList.filter((option) => {
|
|
3161
|
+
// Search all properties of the object
|
|
3162
|
+
return Object.keys(option).some(key => {
|
|
3163
|
+
const value = option[key];
|
|
3164
|
+
// Verify that the value is a string or number and contains the search text
|
|
3165
|
+
return (typeof value === 'string' || typeof value === 'number') &&
|
|
3166
|
+
String(value).toLowerCase().includes(text.toLowerCase());
|
|
3167
|
+
});
|
|
3168
|
+
});
|
|
2993
3169
|
setFilteredOptions(filtered);
|
|
2994
3170
|
}
|
|
2995
3171
|
};
|
|
2996
3172
|
const handleOptionSelect = (option) => {
|
|
2997
3173
|
setSearchText(option.description);
|
|
3174
|
+
setSelectedOption(option);
|
|
2998
3175
|
if (optionsProps.handleChange) {
|
|
2999
3176
|
optionsProps.handleChange(option.id);
|
|
3000
3177
|
}
|
|
@@ -3004,14 +3181,15 @@ function CwSearchInput(optionsProps) {
|
|
|
3004
3181
|
const handleClearClick = () => {
|
|
3005
3182
|
setSearchText("");
|
|
3006
3183
|
setFilteredOptions([]);
|
|
3184
|
+
setSelectedOption(null);
|
|
3007
3185
|
};
|
|
3008
|
-
return (jsxs("div", { className: "
|
|
3009
|
-
? "
|
|
3186
|
+
return (jsxs("div", { className: "cwSearchInputComp", style: optionsProps.style, id: optionsProps.id, children: [jsxs("div", { className: optionsProps.labelPosition === "inline"
|
|
3187
|
+
? "cw-flex-row "
|
|
3010
3188
|
: optionsProps.labelPosition === "column"
|
|
3011
|
-
? "
|
|
3012
|
-
: "
|
|
3189
|
+
? "cw-flex-column"
|
|
3190
|
+
: "cw-flex-row ", children: [optionsProps.labelName && (jsx("label", { className: optionsProps.disabled === true
|
|
3013
3191
|
? "cw_label_text cw_label_text_disabled" + " " + optionsProps.labelClassName
|
|
3014
|
-
: "cw_label_text" + " " + optionsProps.labelClassName, children: optionsProps.labelName }), jsx("input", { type: "text", value: searchText, onChange: handleInputChange, placeholder: "Search...", className: "cw_input_search", disabled: optionsProps.disabled }), searchText && (jsx("button", { className: "
|
|
3192
|
+
: "cw_label_text" + " " + optionsProps.labelClassName, children: optionsProps.labelName })), jsx("input", { type: "text", value: searchText, onChange: handleInputChange, placeholder: "Search...", className: "cw_input_search", disabled: optionsProps.disabled }), searchText && (jsx("button", { className: "cw-button-icon cwi-close cw-input-search-clear", onClick: handleClearClick }))] }), filteredOptions.length > 0 && (jsx("div", { className: "cw-input-search-dropdown", children: jsx("ul", { children: filteredOptions.map((option) => (jsx("li", { onClick: () => handleOptionSelect(option), children: option.description }, option.id))) }) }))] }));
|
|
3015
3193
|
}
|
|
3016
3194
|
|
|
3017
3195
|
var styles$4 = {"context-menu":"cw-context-menu-module_context-menu__dbxnO","context-menu-item":"cw-context-menu-module_context-menu-item__B2W-Q"};
|
|
@@ -3027,7 +3205,7 @@ var styles$4 = {"context-menu":"cw-context-menu-module_context-menu__dbxnO","con
|
|
|
3027
3205
|
* <div>Right-click me!</div>
|
|
3028
3206
|
* </ContextMenu>
|
|
3029
3207
|
*/
|
|
3030
|
-
const CwContextMenu = ({ children, options, onSelect }) => {
|
|
3208
|
+
const CwContextMenu = ({ children, options, offset, onSelect }) => {
|
|
3031
3209
|
const [isOpen, setIsOpen] = useState(false);
|
|
3032
3210
|
const [position, setPosition] = useState({ x: 0, y: 0 });
|
|
3033
3211
|
const menuRef = useRef(null);
|
|
@@ -3052,8 +3230,8 @@ const CwContextMenu = ({ children, options, onSelect }) => {
|
|
|
3052
3230
|
};
|
|
3053
3231
|
}, []);
|
|
3054
3232
|
return (jsxs("div", { onContextMenu: handleContextMenu, children: [children, isOpen && (jsx("div", { ref: menuRef, className: styles$4["context-menu"], style: {
|
|
3055
|
-
top: position.y,
|
|
3056
|
-
left: position.x
|
|
3233
|
+
top: position.y + (offset?.y || 0),
|
|
3234
|
+
left: position.x + (offset?.x || 0),
|
|
3057
3235
|
}, children: options.map(option => (jsx("div", { onClick: () => handleOptionClick(option), className: styles$4["context-menu-item"], children: option }, option))) }))] }));
|
|
3058
3236
|
};
|
|
3059
3237
|
|
|
@@ -3133,47 +3311,11 @@ function CwFloatingButton() {
|
|
|
3133
3311
|
};
|
|
3134
3312
|
return jsx("button", { className: "cw_btnFloatingButton", onClick: cwShowElement, id: "cw_btnFloatingButton" });
|
|
3135
3313
|
}
|
|
3136
|
-
// Button for expand and collapase
|
|
3137
|
-
function CwButtonExpandAndCollapse() {
|
|
3138
|
-
const cwExpandCollapseButton = () => {
|
|
3139
|
-
// cwellt_btnExpandCollapse
|
|
3140
|
-
const cw_btnExpandCollapse = document.getElementById("cw_btnExpandCollapse");
|
|
3141
|
-
cw_btnExpandCollapse?.classList.toggle("cw_btnExpandCollapseActive");
|
|
3142
|
-
// text of tooltip
|
|
3143
|
-
// Switches
|
|
3144
|
-
const cwSwitches = document.getElementsByClassName("CwSwitches")[0];
|
|
3145
|
-
cwSwitches.classList.toggle("cwSwitchesActive");
|
|
3146
|
-
// ContentButton
|
|
3147
|
-
};
|
|
3148
|
-
return jsx("button", { className: "cw_btnExpandCollapse", onClick: cwExpandCollapseButton, id: "cw_btnExpandCollapse" });
|
|
3149
|
-
}
|
|
3150
3314
|
// Primary button => CwButtonDef
|
|
3151
3315
|
// CwButtonDef
|
|
3152
3316
|
function CwButtonDef({ cw_btn_desc, cw_btnOnclick, cw_btn_disabled }) {
|
|
3153
3317
|
return (jsx("button", { className: "cw-button cw_btn_primary", onClick: cw_btnOnclick, disabled: cw_btn_disabled, children: cw_btn_desc }));
|
|
3154
3318
|
}
|
|
3155
|
-
// CwButtonDefOutline
|
|
3156
|
-
function CwButtonDefOutline({ cw_btn_desc, cw_btnOnclick, cw_btn_disabled }) {
|
|
3157
|
-
return (jsx("button", { className: "cw-button cw_btn_primaryOutline", onClick: cw_btnOnclick, disabled: cw_btn_disabled, children: cw_btn_desc }));
|
|
3158
|
-
}
|
|
3159
|
-
// Primary button => CwButtonSecondary
|
|
3160
|
-
// CweButtonSec
|
|
3161
|
-
function CwButtonSec({ cw_btn_desc, cw_btnOnclick, cw_btn_disabled }) {
|
|
3162
|
-
return (jsx("button", { className: "cw-button cw_btn_secondary", onClick: cw_btnOnclick, disabled: cw_btn_disabled, children: cw_btn_desc }));
|
|
3163
|
-
}
|
|
3164
|
-
// CwButtonSecOutline
|
|
3165
|
-
function CwButtonSecOutline({ cw_btn_desc, cw_btnOnclick, cw_btn_disabled }) {
|
|
3166
|
-
return (jsx("button", { className: "cw-button cw_btn_secondaryOutline", onClick: cw_btnOnclick, disabled: cw_btn_disabled, children: cw_btn_desc }));
|
|
3167
|
-
}
|
|
3168
|
-
// Primary button => cwelltButton_danger
|
|
3169
|
-
// CwButton_danger
|
|
3170
|
-
function CwButtonDanger({ cw_btn_desc, cw_btnOnclick, cw_btn_disabled }) {
|
|
3171
|
-
return (jsx("button", { className: "cw-button cw_btn_danger", onClick: cw_btnOnclick, disabled: cw_btn_disabled, children: cw_btn_desc }));
|
|
3172
|
-
}
|
|
3173
|
-
// CwButtonDangerOutline
|
|
3174
|
-
function CwButtonDangerOutline({ cw_btn_desc, cw_btnOnclick, cw_btn_disabled }) {
|
|
3175
|
-
return (jsx("button", { className: "cw-button cw_btn_dangerOutline", onClick: cw_btnOnclick, disabled: cw_btn_disabled, children: cw_btn_desc }));
|
|
3176
|
-
}
|
|
3177
3319
|
// Cw add button
|
|
3178
3320
|
function CwBtnAdd({ cw_btnOnclick, cw_btn_disabled }) {
|
|
3179
3321
|
return jsx("button", { onClick: cw_btnOnclick, className: "cw-button-icon cw_btn_add", disabled: cw_btn_disabled });
|
|
@@ -3242,10 +3384,6 @@ function CwBtnFiles({ cw_btnOnclick, cw_btn_disabled }) {
|
|
|
3242
3384
|
function CwBtnAirport({ cw_btnOnclick, cw_btn_disabled }) {
|
|
3243
3385
|
return jsx("button", { onClick: cw_btnOnclick, className: "cw-button-icon cw_btn_airport", disabled: cw_btn_disabled });
|
|
3244
3386
|
}
|
|
3245
|
-
// userFolder
|
|
3246
|
-
function CwBtnUserFolder({ cw_btnOnclick, cw_btn_disabled }) {
|
|
3247
|
-
return jsx("button", { onClick: cw_btnOnclick, className: "cw-button-icon cwi-icons cwi-folder-user", disabled: cw_btn_disabled });
|
|
3248
|
-
}
|
|
3249
3387
|
// DownLoadAllInfo
|
|
3250
3388
|
function CwBtnDownLoadAllInfo({ cw_btnOnclick, cw_btn_disabled }) {
|
|
3251
3389
|
return (jsx("button", { onClick: cw_btnOnclick, className: "cw-button-icon cwi-icons cwi-folder-download", disabled: cw_btn_disabled }));
|
|
@@ -3651,7 +3789,7 @@ const ResourceRender$1 = memo(({ res, schedulerProps, contentArea, state }) => {
|
|
|
3651
3789
|
}, arePropsEqual$1);
|
|
3652
3790
|
|
|
3653
3791
|
const ResourceListRender$1 = ({ resources, schedulerProps, state, contentArea, onClickContextMenu, crewAssignmentSchedulerContextMenu, }) => {
|
|
3654
|
-
return (jsx(Fragment, { children: resources.map((r, _i) => (jsx(Dropdown, { placement: "topLeft", dropdownRender: () => {
|
|
3792
|
+
return (jsx(Fragment$1, { children: resources.map((r, _i) => (jsx(Dropdown, { placement: "topLeft", dropdownRender: () => {
|
|
3655
3793
|
return (jsx(Menu, { style: { pointerEvents: "auto" }, onClick: (e) => {
|
|
3656
3794
|
onClickContextMenu(e, r);
|
|
3657
3795
|
}, children: crewAssignmentSchedulerContextMenu?.map((m) => (jsxs(Menu.Item, { children: [jsx("span", { className: m.icon, style: { color: m.color } }), jsx("span", { className: "cwellt_contextMenu", children: m.text })] }, m.key))) }));
|
|
@@ -4801,7 +4939,7 @@ const ResourceRender = memo(({ res, schedulerProps, contentArea, state }) => {
|
|
|
4801
4939
|
}, arePropsEqual);
|
|
4802
4940
|
|
|
4803
4941
|
const ResourceListRender = ({ resources, schedulerProps, state, contentArea, onClickContextMenu, crewAssignmentSchedulerContextMenu, }) => {
|
|
4804
|
-
return (jsx(Fragment, { children: resources.map((r, _i) => (jsx(Dropdown, { placement: "topLeft", dropdownRender: () => {
|
|
4942
|
+
return (jsx(Fragment$1, { children: resources.map((r, _i) => (jsx(Dropdown, { placement: "topLeft", dropdownRender: () => {
|
|
4805
4943
|
return (jsx(Menu, { style: { pointerEvents: "auto" }, onClick: (e) => {
|
|
4806
4944
|
onClickContextMenu(e, r);
|
|
4807
4945
|
}, children: crewAssignmentSchedulerContextMenu?.map((m) => (jsxs(Menu.Item, { children: [jsx("span", { className: m.icon, style: { color: m.color } }), jsx("span", { className: "cwellt_contextMenu", children: m.text })] }, m.key))) }));
|
|
@@ -5353,8 +5491,9 @@ const getTimeHeaders = (startDate, endDate) => {
|
|
|
5353
5491
|
class CwScheduler extends Component {
|
|
5354
5492
|
contentArea;
|
|
5355
5493
|
calculateMaxPx = () => {
|
|
5356
|
-
const
|
|
5357
|
-
|
|
5494
|
+
const mainElement = document.body;
|
|
5495
|
+
const mainRect = mainElement.getBoundingClientRect();
|
|
5496
|
+
return Math.floor(mainRect.width - 190);
|
|
5358
5497
|
};
|
|
5359
5498
|
constructor(props) {
|
|
5360
5499
|
super(props);
|
|
@@ -5526,9 +5665,7 @@ class CwScheduler extends Component {
|
|
|
5526
5665
|
const isPinnedTable = this.props.id.toLowerCase().includes("pinned");
|
|
5527
5666
|
const schedulerHeight = heightScheduler(this.state.resources, this.props.height, this.props.id === "crewAssignmentsScheduler");
|
|
5528
5667
|
return (jsx("div", { id: this.props.id, style: {
|
|
5529
|
-
overflowY: "scroll",
|
|
5530
5668
|
maxHeight: isPinnedTable ? "auto" : schedulerHeight,
|
|
5531
|
-
minHeight: (this.state.resources.length === 1 || this.state.resources.length === 2) ? schedulerHeight + 10 : 0
|
|
5532
5669
|
}, className: this.state.resources.length > 0 ? "cwellt_tb_con" : "cwellt_tb_con cw_tb_con_emptyValues", children: jsxs("table", { id: "cwelltTableScheduler", children: [this.props.id !== "crewAssignmentsScheduler" && (jsx(SchedulerHeader$1, { timelineProps: {
|
|
5533
5670
|
maxPx: this.state.maxPx,
|
|
5534
5671
|
hoursList: this.state.timeHeaders,
|
|
@@ -5537,8 +5674,8 @@ class CwScheduler extends Component {
|
|
|
5537
5674
|
endDate: this.props.endDate,
|
|
5538
5675
|
headerName: this.props.resourceName,
|
|
5539
5676
|
}, descriptionColumn: this.props.descriptionColumn })), jsx("tbody", { style: {
|
|
5540
|
-
|
|
5541
|
-
|
|
5677
|
+
width: this.state.maxPx + 150,
|
|
5678
|
+
maxHeight: isPinnedTable ? "auto" : schedulerHeight,
|
|
5542
5679
|
}, className: isPinnedTable ? "fc-body cw-fc-body-pinned" : "fc-body", children: jsxs("tr", { className: "fc_body_row", children: [jsx(ResourcesTitleList, { resources: this.state.resources, canBePinned: this.props.canBePinned ?? false, includesPinned: this.props.id.toLowerCase().includes("pinned"), onCrewPinning: this.handleCrewPinning, onClickResourceContextMenu: (_e, resource) => {
|
|
5543
5680
|
if (this.props.scheduler_handleOnClickResourceContextMenu) {
|
|
5544
5681
|
this.props.scheduler_handleOnClickResourceContextMenu(_e, resource);
|
|
@@ -5803,13 +5940,40 @@ function getHSLColor(color, alpha = 1) {
|
|
|
5803
5940
|
return `hsla(${hsl.h}, ${hsl.s}%, ${hsl.l}%, ${alpha})`;
|
|
5804
5941
|
}
|
|
5805
5942
|
function getContrastColor(color) {
|
|
5943
|
+
if (color === null) {
|
|
5944
|
+
return '#000000';
|
|
5945
|
+
}
|
|
5806
5946
|
const hsl = colorToHSL(color);
|
|
5807
|
-
|
|
5808
|
-
|
|
5947
|
+
// Saturated greenyellow and cyan tones need lower luminance threshold (40-35)
|
|
5948
|
+
// Saturated mediumblue and blueviolet tones need higher luminance threshold (55-60)
|
|
5949
|
+
// Saturated orangered tones need lower luminance threshold (45)
|
|
5950
|
+
const isYellowGreen = (hsl.h >= 45 && hsl.h <= 180);
|
|
5951
|
+
const isBlueViolet = (hsl.h >= 210 && hsl.h <= 300);
|
|
5952
|
+
const isRedOrange = (hsl.h >= 0 && hsl.h <= 30) || (hsl.h >= 330 && hsl.h <= 360);
|
|
5953
|
+
let threshold = 50;
|
|
5954
|
+
if (isYellowGreen) {
|
|
5955
|
+
threshold = 40;
|
|
5956
|
+
if (hsl.s >= 70) {
|
|
5957
|
+
threshold = 35;
|
|
5958
|
+
}
|
|
5959
|
+
}
|
|
5960
|
+
else if (isBlueViolet) {
|
|
5961
|
+
threshold = 55;
|
|
5962
|
+
if (hsl.s >= 70) {
|
|
5963
|
+
threshold = 60;
|
|
5964
|
+
}
|
|
5965
|
+
}
|
|
5966
|
+
else if (isRedOrange && hsl.s >= 80) {
|
|
5967
|
+
threshold = 45;
|
|
5968
|
+
}
|
|
5969
|
+
const contrastL = hsl.l >= threshold ? 20 : 90;
|
|
5970
|
+
const contrastS = Math.min(hsl.s, 90);
|
|
5971
|
+
return `hsl(${hsl.h}, ${contrastS}%, ${contrastL}%)`;
|
|
5809
5972
|
}
|
|
5810
5973
|
|
|
5974
|
+
var styles$2 = {"hide-scrollbar":"new-scheduler-module_hide-scrollbar__33GG9","scheduler-event":"new-scheduler-module_scheduler-event__gphwn","scheduler-event-container":"new-scheduler-module_scheduler-event-container__-h1xm","time-marker":"new-scheduler-module_time-marker__2BejU","scheduler-event-text":"new-scheduler-module_scheduler-event-text__zjvd7"};
|
|
5975
|
+
|
|
5811
5976
|
const BackgroundEvent = ({ value, heightRem }) => {
|
|
5812
|
-
const isVerticalText = value.isVerticalText ?? false;
|
|
5813
5977
|
const backColor = getHSLColor(value.color, value.alpha ?? 0.5);
|
|
5814
5978
|
const textColor = getContrastColor(value.color);
|
|
5815
5979
|
return value.isVisible ? (jsx("div", { style: {
|
|
@@ -5817,6 +5981,7 @@ const BackgroundEvent = ({ value, heightRem }) => {
|
|
|
5817
5981
|
width: `${value.width}%`,
|
|
5818
5982
|
position: "absolute",
|
|
5819
5983
|
height: `${heightRem}rem`,
|
|
5984
|
+
pointerEvents: "auto",
|
|
5820
5985
|
}, children: jsx(CwGenericTooltip, { content: value.tooltip, position: "bottom", dissapearsWhenHover: true, showDelay: 200, children: jsx("div", { style: {
|
|
5821
5986
|
overflow: "hidden",
|
|
5822
5987
|
backgroundColor: backColor,
|
|
@@ -5828,28 +5993,21 @@ const BackgroundEvent = ({ value, heightRem }) => {
|
|
|
5828
5993
|
contentVisibility: "auto",
|
|
5829
5994
|
height: `${heightRem}rem`,
|
|
5830
5995
|
}, children: jsxs("div", { style: {
|
|
5831
|
-
flex: 1,
|
|
5832
|
-
display: "flex",
|
|
5833
|
-
flexDirection: "row",
|
|
5834
|
-
alignItems: "center",
|
|
5835
|
-
whiteSpace: "nowrap",
|
|
5836
|
-
overflow: "hidden",
|
|
5837
5996
|
width: value.width + "%",
|
|
5838
|
-
fontSize: "var(--cw-font-size-smallest)"
|
|
5839
|
-
|
|
5997
|
+
fontSize: "var(--cw-font-size-smallest)",
|
|
5998
|
+
padding: "0.25rem",
|
|
5999
|
+
color: textColor,
|
|
6000
|
+
alignItems: "flex-end"
|
|
6001
|
+
}, className: styles$2["scheduler-event-container"], children: [value.icons ? jsx("div", { style: {
|
|
5840
6002
|
display: "flex",
|
|
5841
6003
|
flexDirection: "row",
|
|
5842
6004
|
alignItems: "center",
|
|
5843
6005
|
whiteSpace: "nowrap",
|
|
5844
6006
|
color: textColor,
|
|
5845
|
-
}, children: value.icons }) : null, jsx("span", {
|
|
5846
|
-
color: textColor,
|
|
5847
|
-
writingMode: isVerticalText ? "vertical-lr" : "initial",
|
|
5848
|
-
textOrientation: isVerticalText ? "upright" : "initial"
|
|
5849
|
-
}, children: value.name })] }) }) }) }) })) : null;
|
|
6007
|
+
}, children: value.icons }) : null, jsx("span", { className: styles$2["scheduler-event-text"], children: value.name })] }) }) }) }) })) : null;
|
|
5850
6008
|
};
|
|
5851
6009
|
|
|
5852
|
-
var styles$
|
|
6010
|
+
var styles$1 = {"scheduler-row-header":"scheduler-row-module_scheduler-row-header__S-iv4"};
|
|
5853
6011
|
|
|
5854
6012
|
const DefaultRowHeader = ({ value, width, onEvent }) => {
|
|
5855
6013
|
return (jsxs("div", { style: {
|
|
@@ -5857,7 +6015,7 @@ const DefaultRowHeader = ({ value, width, onEvent }) => {
|
|
|
5857
6015
|
// background: color,
|
|
5858
6016
|
}, onClick: (_) => {
|
|
5859
6017
|
onEvent(new OnClickRowHeader(value.rowId));
|
|
5860
|
-
}, className: styles$
|
|
6018
|
+
}, className: styles$1["scheduler-row-header"], children: [jsxs("div", { children: [jsx("strong", { children: value.title }), value.title2 && jsxs("span", { children: ["-", value.title2] }), " ", jsx("strong", { children: value.subtitle })] }), value.subtitle && jsxs("div", { style: { opacity: 0.5 }, children: [value.title3 && jsxs("span", { className: styles$1["scheduler-crewmember-functions"], children: ["(", value.title3, ")"] }), value.subtitle2 && jsxs("span", { children: ["-", value.subtitle2] })] })] }));
|
|
5861
6019
|
};
|
|
5862
6020
|
|
|
5863
6021
|
function useSingleAndDoubleClicks(onClick, onDoubleClick) {
|
|
@@ -5887,8 +6045,6 @@ function useSingleAndDoubleClicks(onClick, onDoubleClick) {
|
|
|
5887
6045
|
return { handleClick, handleDoubleClick };
|
|
5888
6046
|
}
|
|
5889
6047
|
|
|
5890
|
-
var styles$1 = {"hide-scrollbar":"new-scheduler-module_hide-scrollbar__33GG9","scheduler-event":"new-scheduler-module_scheduler-event__gphwn","scheduler-event-container":"new-scheduler-module_scheduler-event-container__-h1xm","time-marker":"new-scheduler-module_time-marker__2BejU"};
|
|
5891
|
-
|
|
5892
6048
|
const EventSideDrag = ({ left = false, heightRem, onStartEvent }) => {
|
|
5893
6049
|
return (jsx("span", { draggable: true, onDragStart: (e) => {
|
|
5894
6050
|
e.stopPropagation();
|
|
@@ -5966,12 +6122,12 @@ const SchedulerEvent = ({ value, heightRem, onEvent }) => {
|
|
|
5966
6122
|
e.stopPropagation();
|
|
5967
6123
|
e.preventDefault();
|
|
5968
6124
|
onEvent(new OnRightClickEvent(value.id));
|
|
5969
|
-
}, children: jsx(CwGenericTooltip, { content: value.tooltip, position: "bottom", dissapearsWhenHover: true, showDelay: 200, children: jsxs("div", { style: {
|
|
6125
|
+
}, children: jsx(CwGenericTooltip, { content: value.tooltip, position: "bottom", hide: isOnDrag, dissapearsWhenHover: true, showDelay: 200, children: jsxs("div", { style: {
|
|
5970
6126
|
border: value.selected ? "2px solid black" : "none",
|
|
5971
6127
|
backgroundColor: backColor,
|
|
5972
6128
|
height: `calc(${heightRem}rem - 4px)`,
|
|
5973
6129
|
opacity: eventTransparent ? 0.5 : 1,
|
|
5974
|
-
}, className: styles$
|
|
6130
|
+
}, className: styles$2["scheduler-event"], children: [jsxs("div", { style: {
|
|
5975
6131
|
display: "flex",
|
|
5976
6132
|
flexDirection: "row",
|
|
5977
6133
|
alignItems: "stretch",
|
|
@@ -5980,7 +6136,7 @@ const SchedulerEvent = ({ value, heightRem, onEvent }) => {
|
|
|
5980
6136
|
height: `calc(${heightRem}rem - 10px)`,
|
|
5981
6137
|
}, children: [value.isResizable && (jsx(EventSideDrag, { left: true, heightRem: heightRem * 0.7, onStartEvent: () => {
|
|
5982
6138
|
onEvent(new OnLeftDragStart(value.id));
|
|
5983
|
-
} })), jsxs("div", { className: styles$
|
|
6139
|
+
} })), jsxs("div", { className: styles$2["scheduler-event-container"], children: [jsx("div", { style: {
|
|
5984
6140
|
display: "flex",
|
|
5985
6141
|
flexDirection: "row",
|
|
5986
6142
|
alignItems: "center",
|
|
@@ -5991,9 +6147,9 @@ const SchedulerEvent = ({ value, heightRem, onEvent }) => {
|
|
|
5991
6147
|
color: textColor,
|
|
5992
6148
|
}, children: value.name })] }), value.isResizable && (jsx(EventSideDrag, { heightRem: heightRem * 0.7, onStartEvent: () => {
|
|
5993
6149
|
onEvent(new OnRightDragStart(value.id));
|
|
5994
|
-
} }))] }), value.primaryTimeMarkerColor && (jsx("div", { className: styles$
|
|
6150
|
+
} }))] }), value.primaryTimeMarkerColor && (jsx("div", { className: styles$2["time-marker"], style: {
|
|
5995
6151
|
backgroundColor: value.primaryTimeMarkerColor,
|
|
5996
|
-
} })), value.secondaryTimeMarkerColor && (jsx("div", { className: styles$
|
|
6152
|
+
} })), value.secondaryTimeMarkerColor && (jsx("div", { className: styles$2["time-marker"], style: {
|
|
5997
6153
|
backgroundColor: value.secondaryTimeMarkerColor,
|
|
5998
6154
|
} }))] }) }) }, value.id) }, value.id));
|
|
5999
6155
|
};
|
|
@@ -6372,6 +6528,7 @@ const getNow = (isUtc) => {
|
|
|
6372
6528
|
}
|
|
6373
6529
|
return now;
|
|
6374
6530
|
};
|
|
6531
|
+
const rowsHeight = 1.75; // rem
|
|
6375
6532
|
const Scheduler = (props) => {
|
|
6376
6533
|
const { header: headerContent, id, events: eventsState, backgroundEvents, contextMenuItems, EventComp, RowTitleComp, orderCategories = ["title"], useOrderCategory, onEvent, groupRowColors, rowHeaderWidth = 180, } = props;
|
|
6377
6534
|
const BackgroundEventComp = props.BackgroundEventComp ?? BackgroundEvent;
|
|
@@ -6405,7 +6562,6 @@ const Scheduler = (props) => {
|
|
|
6405
6562
|
};
|
|
6406
6563
|
const evenColor = "var(--cw-color-surface-container-low)";
|
|
6407
6564
|
const oddColor = "var(--cw-color-surface-container)";
|
|
6408
|
-
const rowsHeight = 1.75; // rem
|
|
6409
6565
|
const schedulerContentHeight = rowsHeight * visibleRows;
|
|
6410
6566
|
const weekendsLines = getWeekendLinesByDatesVisible(selectedDate, visibleDays);
|
|
6411
6567
|
const divisionLines = getLinesByDivisions(header.divisions);
|
|
@@ -6442,7 +6598,7 @@ const Scheduler = (props) => {
|
|
|
6442
6598
|
const rowsNumber = innerRows.length > 0 ? innerRows.length : 1;
|
|
6443
6599
|
const pixelsInRem = 16;
|
|
6444
6600
|
return rowsNumber * rowsHeight * pixelsInRem;
|
|
6445
|
-
}, [rows, events
|
|
6601
|
+
}, [rows, events]);
|
|
6446
6602
|
// Render
|
|
6447
6603
|
return (jsxs("div", { id: id, style: {
|
|
6448
6604
|
position: "relative",
|
|
@@ -6453,7 +6609,7 @@ const Scheduler = (props) => {
|
|
|
6453
6609
|
position: "sticky",
|
|
6454
6610
|
top: 0,
|
|
6455
6611
|
zIndex: 1,
|
|
6456
|
-
}, children: jsx(SchedulerHeader, { ...header }) })), jsx(VariableSizeList, { height: schedulerContentHeight * 16, itemCount: rows.length, itemSize: getItemSize, width: "100%", style: { overflowX: "hidden" }, ref: instanceRef, className: styles$
|
|
6612
|
+
}, children: jsx(SchedulerHeader, { ...header }) })), jsx(VariableSizeList, { height: schedulerContentHeight * 16, itemCount: rows.length, itemSize: getItemSize, width: "100%", style: { overflowX: "hidden" }, ref: instanceRef, className: styles$2["hide-scrollbar"], children: Row })] }));
|
|
6457
6613
|
};
|
|
6458
6614
|
const height = (events, rows, rowsNumber) => {
|
|
6459
6615
|
const selectedRows = rows.slice(0, rowsNumber);
|
|
@@ -6832,14 +6988,14 @@ const PinRowHeader = ({ value, width, onEvent }) => {
|
|
|
6832
6988
|
flexDirection: "column",
|
|
6833
6989
|
justifyContent: "center",
|
|
6834
6990
|
alignItems: "flex-start",
|
|
6835
|
-
}, children: [jsxs("div", { children: [jsx("strong", { children: value.title }), value.title2 && jsxs("span", { children: ["-", value.title2] }),
|
|
6991
|
+
}, children: [jsxs("div", { children: [jsx("strong", { children: value.title }), value.title2 && jsxs("span", { children: ["-", value.title2] }), " ", jsx("strong", { children: value.subtitle })] }), value.subtitle && jsxs("div", { style: { opacity: 0.5 }, children: [value.title3 && jsxs("span", { className: styles["scheduler-crewmember-functions"], children: ["(", value.title3, ")"] }), value.subtitle2 && jsxs("span", { children: ["-", value.subtitle2] })] })] }) }, value.rowId) }, value.rowId), isLoading ? jsx("span", { className: "cwi-icons cwi-spinner" }) : undefined] }));
|
|
6836
6992
|
};
|
|
6837
6993
|
|
|
6838
6994
|
const SuperScheduler = ({ id, state, header, rows, events, pinnedOrderCategory, unPinnedOrderCategory, backgroundEvents, contextMenuItems, onEvent }) => {
|
|
6839
6995
|
const pinnedRows = rows.filter((it) => it.isPinned);
|
|
6840
6996
|
const notPinnedRows = rows.filter((it) => !it.isPinned);
|
|
6841
6997
|
const isFirstVisible = pinnedRows.length > 0;
|
|
6842
|
-
return (jsxs(Fragment
|
|
6998
|
+
return (jsxs(Fragment, { children: [isFirstVisible && (jsxs(Fragment, { children: [jsx(Scheduler, { id: `${id}-pinned`, state: state, header: header, rows: pinnedRows, events: events, backgroundEvents: backgroundEvents, contextMenuItems: contextMenuItems, orderCategories: pinnedOrderCategory, onEvent: onEvent, EventComp: SchedulerEvent, RowTitleComp: PinRowHeader }), jsx("div", { children: jsx(CwButton, { onClick: () => {
|
|
6843
6999
|
onEvent(new OnClearPinned());
|
|
6844
7000
|
}, children: "Clear pinned" }) })] })), jsx(Scheduler, { id: `${id}-notPinned`, state: { ...state, isHeaderVisible: !isFirstVisible }, header: header, rows: notPinnedRows, events: events, backgroundEvents: backgroundEvents, contextMenuItems: contextMenuItems, orderCategories: unPinnedOrderCategory, onEvent: onEvent, EventComp: SchedulerEvent, RowTitleComp: PinRowHeader })] }));
|
|
6845
7001
|
};
|
|
@@ -7000,4 +7156,4 @@ class CwFindAirport extends React.Component {
|
|
|
7000
7156
|
}
|
|
7001
7157
|
}
|
|
7002
7158
|
|
|
7003
|
-
export { CblDragAndDrop, CwAccordionContainer, CwAlign, CwBtnAdd, CwBtnAddFolder, CwBtnAirport, CwBtnAlert, CwBtnApprove, CwBtnArchive, CwBtnArchiveRestore, CwBtnBookMark, CwBtnBookMarkLinkPage, CwBtnBulkDuty, CwBtnCancel, CwBtnCrewPlanning, CwBtnDelay, CwBtnDelete, CwBtnDownLoadAllInfo, CwBtnDownload, CwBtnDropDownMenu, CwBtnEdit, CwBtnEditFolder, CwBtnFiles, CwBtnGeneratePairing, CwBtnGoBackFolder, CwBtnHide, CwBtnImportRequests, CwBtnInfo, CwBtnMVT, CwBtnNavFirstItemView, CwBtnNavLastItemView, CwBtnNavNextDay, CwBtnNavPreviewItem, CwBtnPairing, CwBtnPrint, CwBtnPropertyFolder, CwBtnPublish, CwBtnRefresh, CwBtnReleasePeriod, CwBtnSave, CwBtnSearch, CwBtnSelect, CwBtnSelectedFolder, CwBtnShare, CwBtnStatistic, CwBtnUploadFiles,
|
|
7159
|
+
export { CblDragAndDrop, CwAccordionContainer, CwAlign, CwBtnAdd, CwBtnAddFolder, CwBtnAirport, CwBtnAlert, CwBtnApprove, CwBtnArchive, CwBtnArchiveRestore, CwBtnBookMark, CwBtnBookMarkLinkPage, CwBtnBulkDuty, CwBtnCancel, CwBtnCrewPlanning, CwBtnDelay, CwBtnDelete, CwBtnDownLoadAllInfo, CwBtnDownload, CwBtnDropDownMenu, CwBtnEdit, CwBtnEditFolder, CwBtnFiles, CwBtnGeneratePairing, CwBtnGoBackFolder, CwBtnHide, CwBtnImportRequests, CwBtnInfo, CwBtnMVT, CwBtnNavFirstItemView, CwBtnNavLastItemView, CwBtnNavNextDay, CwBtnNavPreviewItem, CwBtnPairing, CwBtnPrint, CwBtnPropertyFolder, CwBtnPublish, CwBtnRefresh, CwBtnReleasePeriod, CwBtnSave, CwBtnSearch, CwBtnSelect, CwBtnSelectedFolder, CwBtnShare, CwBtnStatistic, CwBtnUploadFiles, CwBtnVacations, CwBtnView, CwBtnWarning, CwButton, CwButtonDef, CwCheckbox, CwContextMenu, CwContextualMenu, CwDialog, CwDialogManager, CwDigit, CwDisplayMessage, CwDropdown, CwDropdownContainer, CwDropdownFilter, CwDropdownNavigation, CwExpandable, CwFileUpload, CwFindAirport, CwFloatingButton, CwGenericTooltip, CwHeadFilter, CwHeadingMain, CwHeadingSecond, CwIcon, CwImageArea, CwInput, CwInputDate, CwInputDatePicker, CwInputDateText, CwInputDatetime, CwInputImage, CwInputNumber, CwInputPhone, CwInputText, CwLabel, CwLoading, CwLoadingSmall, CwMessage, CwMessageManager, CwMessageType, CwModal, CwModalConfirm, CwModalHover, CwModalIframe, CwModalReportFunctional, CwMultiFilter, CwMultiFilterTag, CwMultiselect, CwOption, CwOptionList, CwReportModal, CwScheduler, CwScheduler2, CwSearchInput, CwSelect, CwSelectList, CwSelectListItems, CwSuperScheduler, CwTable, CwTableGrouped, CwTabs, CwTag, CwTextArea, CwTime, CwToggle, CwTooltip, CwWeekdaySelector, DefaultRowHeader, MultiSelect, OnClearPinned, OnClickContextMenu, OnClickEvent, OnClickRowEvent, OnClickRowHeader, OnClickUtc, OnDoubleClickEvent, OnDoubleClickRowEvent, OnDragEvent, OnDropCtrlEvent, OnDropEvent, OnEndClickHeaderEvent, OnLeftDragStart, OnMultiClickEvent, OnPinRow, OnRangeClickEvent, OnRightClickEvent, OnRightClickRow, OnRightDragStart, OnStartClickHeaderEvent, OnUnpinRow, PinRowHeader, Resource, Scheduler, SchedulerEvent, SuperScheduler, UiEvent, Weekdays, cblEvent, eventIsVisible, getDefaultDivisions, getEventSizes, itemsToMultiFilterTags, useCwMessage };
|