@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.
Files changed (43) hide show
  1. package/dist/content/icons/new-cw-icons/NewCwIcons.html +389 -6
  2. package/dist/content/icons/new-cw-icons/NewCwIcons.json +1 -1
  3. package/dist/content/icons/new-cw-icons/css/new-cw-icons.css +20 -7
  4. package/dist/content/icons/new-cw-icons/fonts/NewCwIcons.woff +0 -0
  5. package/dist/index.cjs.js +307 -158
  6. package/dist/index.css +2 -2
  7. package/dist/index.d.ts +141 -56
  8. package/dist/index.es.js +313 -157
  9. package/dist/src/common/functions/colorManipulation.d.ts.map +1 -1
  10. package/dist/src/components/control/action/button/CwButton.d.ts +3 -2
  11. package/dist/src/components/control/action/button/CwButton.d.ts.map +1 -1
  12. package/dist/src/components/control/action/buttons/CwButtons.d.ts +0 -7
  13. package/dist/src/components/control/action/buttons/CwButtons.d.ts.map +1 -1
  14. package/dist/src/components/control/action/contextmenu/CwContextMenu.d.ts +4 -0
  15. package/dist/src/components/control/action/contextmenu/CwContextMenu.d.ts.map +1 -1
  16. package/dist/src/components/control/action/search/CwSearch.d.ts +1 -1
  17. package/dist/src/components/control/action/search/CwSearch.d.ts.map +1 -1
  18. package/dist/src/components/control/choice/dropdown/CwDropdown.d.ts +2 -2
  19. package/dist/src/components/control/choice/dropdown/CwDropdown.d.ts.map +1 -1
  20. package/dist/src/components/control/choice/multi-filter/CwMultiFilter.d.ts +122 -33
  21. package/dist/src/components/control/choice/multi-filter/CwMultiFilter.d.ts.map +1 -1
  22. package/dist/src/components/control/choice/toggle/CwToggle.d.ts +0 -4
  23. package/dist/src/components/control/choice/toggle/CwToggle.d.ts.map +1 -1
  24. package/dist/src/components/custom/scheduler/CwSchedulerComp.d.ts.map +1 -1
  25. package/dist/src/components/custom/scheduler-new/presentation/NewScheduler.d.ts.map +1 -1
  26. package/dist/src/components/custom/scheduler-new/presentation/components/row/BackgroundEvent.d.ts +0 -1
  27. package/dist/src/components/custom/scheduler-new/presentation/components/row/BackgroundEvent.d.ts.map +1 -1
  28. package/dist/src/components/custom/scheduler-new/presentation/components/row/DefaultRowHeader.d.ts.map +1 -1
  29. package/dist/src/components/custom/super-scheduler/PinRowHeader.d.ts.map +1 -1
  30. package/dist/src/components/display/data/accordion/CwAccordionContainer.d.ts.map +1 -1
  31. package/dist/src/components/display/data/generic_tooltip/CwGenericTooltip.d.ts +1 -0
  32. package/dist/src/components/display/data/generic_tooltip/CwGenericTooltip.d.ts.map +1 -1
  33. package/dist/src/components/display/data/table/CwTable.d.ts +2 -2
  34. package/dist/src/components/display/data/table/CwTable.d.ts.map +1 -1
  35. package/dist/src/components/layout/dialog/CwDialog.d.ts +2 -2
  36. package/dist/src/components/layout/dialog/CwDialog.d.ts.map +1 -1
  37. package/dist/src/components/layout/modal/CwModalReportFunctional.d.ts +2 -2
  38. package/dist/src/components/layout/modal/CwModalReportFunctional.d.ts.map +1 -1
  39. package/dist/src/components/layout/tabs/CwTabs.d.ts +2 -1
  40. package/dist/src/components/layout/tabs/CwTabs.d.ts.map +1 -1
  41. package/dist/src/index.d.ts +2 -2
  42. package/dist/src/index.d.ts.map +1 -1
  43. package/package.json +1 -1
package/dist/index.es.js CHANGED
@@ -1,6 +1,6 @@
1
- import { jsx, jsxs, Fragment as Fragment$1 } from 'react/jsx-runtime';
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$a = {"cw-generic-tooltip":"cw-generic-tooltip-module_cw-generic-tooltip__Ij76M","cw-generic-tooltip-content":"cw-generic-tooltip-module_cw-generic-tooltip-content__la-Si"};
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(() => setIsVisible(true), showDelay);
357
- const { position: tooltipPosition, actualPosition } = useTooltipPosition(isVisible, containerRef, position, styles$a["cw-generic-tooltip-content"]);
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$a["cw-generic-tooltip-content"], "data-position": actualPosition, "data-visible": isVisible, style: {
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$a["cw-generic-tooltip"], onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, style: overlayStyle, children: [tooltipContent, children] }));
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$9 = {"cw-dialog-main":"cw-dialog-module_cw-dialog-main__cHxHt","cw-dialog-button-close":"cw-dialog-module_cw-dialog-button-close__9GRd8","cw-dialog-button-save":"cw-dialog-module_cw-dialog-button-save__eZ9SI"};
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
- const initialDialogSize = { width: props.dialogSize?.width ?? 800, height: props.dialogSize?.height ?? 600 };
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({ width: newWidth, height: newHeight });
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$9["cw-dialog-button-close"], onClick: props.onClose, children: "\u2A2F" }))] }));
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: styles$9["cw-dialog-button-save"], onClick: props.onSave, children: "\uD83D\uDDAB" })) }));
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
- return (props.open && (jsx("div", { "data-has-scrim": props.scrim, className: styles$9["cw-dialog-main"], children: jsxs("dialog", { ...props, ref: dialogRef, style: {
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: `${size.width}px`,
599
- height: `${size.height}px`,
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: "cwellt_accordionContainer cwellt_flex cwellt_flex_column cwellt_justify_center cwellt_align_items_center", style: CwelltAccordionContainerProps.style, children: [jsxs("div", { className: "cwellt_flex cwelt_accordionHeader cwellt_align_items_center", onClick: () => showAccordionBody(), children: [jsx("div", { className: "cwellt_descAccordion cwellt_flex cwellt_align_items_center cwellt_justify_flex_start cwellt_flex_11", children: jsx("div", { className: "cwellt_desc_tex", children: CwelltAccordionContainerProps.desc_text }) }), jsx("div", { className: "cwellt_btnContent_expandCollapse cwellt_flex cwellt_align_items_center cwellt_justify_center cwellt_flex_1", children: jsx("button", { className: isVisible_accordionBody
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, classNameTr_row, style, classNameContainer, id, textNoData }) {
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 + " " + "cwTableComp", children: [jsxs("table", { className: className + " " + "cw_table", style: style, children: [jsx("thead", { className: `${classNameHeader} cw_thead`, children: jsxs("tr", { className: "cw_thead_tr", children: [expandedRowRender && jsx("th", { className: "cw_thead_th cw_thead_th_expand" }), columns.map(column => (jsx("th", { onClick: () => handleSort(column.dataIndex), className: `cw_thead_th ${column.className} ${sortConfig.key === column.dataIndex ? sortConfig.direction : ""}`, children: column.title }, column.key)))] }) }), jsx("tbody", { className: "cw_tbody", children: !paginatedData || paginatedData.length === 0 ? (jsx("tr", { children: jsx("td", { colSpan: columns.length + (expandedRowRender ? 1 : 0), style: { textAlign: "center" }, children: textNoData !== undefined && textNoData !== "" ? textNoData : "No data" }) })) : (paginatedData.map(item => (jsxs(React__default.Fragment, { children: [jsxs("tr", { className: `${classNameTr_row} cw_tbody_tr`, children: [expandedRowRender && (jsx("td", { className: "cw_tbody_td", children: jsx("button", { onClick: () => handleRowExpand(item), className: `cwellt_flex cwellt_justify_center cwellt_align_items_center cw_button_expanded_collapse ${expandedRowKey === item.key ? "cw_button_expanded" : "cw_button_collapse"}` }) })), columns.map(column => (jsx("td", { className: "cw_tbody_td", children: column.render ? column.render(item) : item[column.dataIndex] }, `${item.key}_${column.key}`)))] }), expandedRowKey === item.key && expandedRowRender && (jsx("tr", { children: jsx("td", { colSpan: columns.length + 1, children: expandedRowRender(item) }) }))] }, item.key)))) })] }), pagination && totalPages > 1 && (jsxs("div", { className: "cw_table_pagination cwellt_flex cwellt_align-items-start cwellt_align_items_center", children: [jsx("button", { onClick: () => handlePageChange(currentPage - 1), disabled: currentPage === 1, className: "cw_tb_button_pag cw_tb_button_prev cwellt_flex cwellt_justify_center cwellt_align_items_center" }), jsxs("span", { className: "cw_table_pag_desc", children: ["Page ", currentPage, " of ", totalPages] }), jsx("button", { onClick: () => handlePageChange(currentPage + 1), disabled: currentPage === totalPages, className: "cw_tb_button_pag cw_tb_button_next cwellt_flex cwellt_justify_center cwellt_align_items_center" })] }))] }));
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
- return (jsxs("div", { id: CwTabsProps.id, className: styles$8['cw-tabs'], "data-tabs-position": position, children: [jsx("ul", { 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 })] }));
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(props) {
1132
- const { text, ...buttonProps } = props;
1133
- return (jsx("button", { type: "button", className: "cw-button", ...buttonProps, children: buttonProps.children ?? text }));
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", "Wen"],
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 { alignProps, labelProps, buttonProps, iconProps, ...inputProps } = props;
1816
- return (jsx("div", { className: "cw-toggle", children: jsxs(CwAlign, { ...alignProps, children: [labelProps && (jsxs(CwLabel, { ...labelProps, children: [iconProps && jsx(CwIcon, { ...iconProps }), labelProps.text] })), jsx("input", { className: "cw-toggle", type: "checkbox", ...inputProps }), buttonProps && jsx(CwButton, { ...buttonProps })] }) }));
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 }), jsxs("select", { value: selectedOption, onChange: handleOptionSelect, className: "cw_select", style: optionsProps.styleSelect, disabled: optionsProps.disabled, 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)))] })] }));
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
- * /// Use setSelectedTags to set the initial selected tags or to add/remove them after an action.
2795
- * const [selectedTags, setSelectedTags] = useState(new Set<CwMultiFilterTagProps>());
2796
- * const [selectedCategory, setSelectedCategory] = useState("");
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
- * <CwMultiFilter
2799
- * id="multifilter"
2800
- * onChange={tags => { // Collection of currently active tags
2801
- * console.log("This will get called every time the selected filters change");
2802
- * }}
2803
- * selectedTags={selectedTags} // Selected filters, in case you want to modify them manually
2804
- * selectedCategory={selectedCategory}
2805
- * onChangeCategory={setSelectedCategory}
2806
- * allTags={
2807
- * new Set([
2808
- * {
2809
- * Name: "DEF", // The text displayed on the tag/filter/chip
2810
- * Value: "DEF", // Working value, used for whatever you need, it might be the CrewmemberID or the same as Name
2811
- * Category: "Crewmembers", // Category it belongs to (you don't need to define categories elsewhere)
2812
- * ID: "Crewmembers_DEF", // make sure each ID is unique
2813
- * OnPrimaryColor: hexToRGB("#2050a8"), // color for text and outline of the tag/filter/chip
2814
- * PrimaryColor: hexToRGB("#cedcff"), // background color for the tag/filter/chip
2815
- * },
2816
- * {
2817
- * Name: "ABC",
2818
- * Value: "ABC",
2819
- * Category: "Crewmembers",
2820
- * ID: "Crewmembers_ABC",
2821
- * OnPrimaryColor: hexToRGB("#2050a8"), // you can also do { r: 255, g: 128, b: 64 }
2822
- * PrimaryColor: hexToRGB("#cedcff")
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) => option.description.toLowerCase().includes(text.toLowerCase()));
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: "cwellt_flex cwellt_flex_row cwellt_flex_wrap cwellt_p_rel cwSearchInputComp", style: optionsProps.style, id: optionsProps.id, children: [jsxs("div", { className: optionsProps.labelPosition === "inline"
3009
- ? "cwellt_flex cwellt_flex_row "
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
- ? "cwellt_flex cwellt_flex_column"
3012
- : "cwellt_flex cwellt_flex_row ", children: [jsx("label", { className: optionsProps.disabled === true
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: "cw_button_search_clear cwelt_flex cwellt_justify_center cwellt_align_items_center cwellt_p_abs", onClick: handleClearClick }))] }), filteredOptions.length > 0 && (jsx("div", { className: "cw_searchInput_dropDown cwellt_p_abs", children: jsx("ul", { className: "cw_searchInput_listContainer", children: filteredOptions.map((option) => (jsx("li", { onClick: () => handleOptionSelect(option), className: "cw_searchInput_list cwellt_flex cwellt_align_items_center", children: option.description }, option.id))) }) }))] }));
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 mainRect = document.body.getBoundingClientRect();
5357
- return Math.floor(mainRect.width - 200);
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
- overflow: "visible",
5541
- width: this.state.maxPx + 150
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
- const contrastL = hsl.l > 50 ? 20 : 90;
5808
- return `hsl(${hsl.h}, ${hsl.s}%, ${contrastL}%)`;
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
- }, children: [value.icons ? jsx("div", { style: {
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", { style: {
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$2 = {"scheduler-row-header":"scheduler-row-module_scheduler-row-header__S-iv4"};
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$2["scheduler-row-header"], children: [jsxs("div", { children: [jsx("strong", { children: value.title }), value.title2 && jsxs("span", { children: ["-", value.title2] }), value.title3 && jsxs("span", { className: styles$2["scheduler-crewmember-functions"], children: ["(", value.title3, ")"] })] }), value.subtitle && jsxs("div", { style: { opacity: 0.5 }, children: [jsx("strong", { children: value.subtitle }), value.subtitle2 && jsxs("span", { children: ["-", value.subtitle2] })] })] }));
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$1["scheduler-event"], children: [jsxs("div", { style: {
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$1["scheduler-event-container"], children: [jsx("div", { style: {
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$1["time-marker"], style: {
6150
+ } }))] }), value.primaryTimeMarkerColor && (jsx("div", { className: styles$2["time-marker"], style: {
5995
6151
  backgroundColor: value.primaryTimeMarkerColor,
5996
- } })), value.secondaryTimeMarkerColor && (jsx("div", { className: styles$1["time-marker"], style: {
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, selectedDate, visibleDays, rowsHeight]);
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$1["hide-scrollbar"], children: Row })] }));
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] }), value.title3 && jsxs("span", { className: styles["scheduler-crewmember-functions"], children: [" (", value.title3, ")"] })] }), value.subtitle && jsxs("div", { style: { opacity: 0.5 }, children: [jsx("strong", { children: value.subtitle }), value.subtitle2 && jsxs("span", { children: ["-", value.subtitle2] })] })] }) }, value.rowId) }, value.rowId), isLoading ? jsx(CwIcon, { iconId: "spinner fa-spin" }) : undefined] }));
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$1, { children: [isFirstVisible && (jsxs(Fragment$1, { 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: () => {
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, CwBtnUserFolder, CwBtnVacations, CwBtnView, CwBtnWarning, CwButton, CwButtonDanger, CwButtonDangerOutline, CwButtonDef, CwButtonDefOutline, CwButtonExpandAndCollapse, CwButtonSec, CwButtonSecOutline, 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 };
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 };