@elliemae/ds-shuttle-v2 3.70.0-next.35 → 3.70.0-next.37

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 (90) hide show
  1. package/dist/cjs/constants/index.js +1 -2
  2. package/dist/cjs/constants/index.js.map +2 -2
  3. package/dist/cjs/parts/Dnd/DndHandle.js +7 -6
  4. package/dist/cjs/parts/Dnd/DndHandle.js.map +2 -2
  5. package/dist/cjs/parts/Dnd/DragOverlay.js +1 -1
  6. package/dist/cjs/parts/Dnd/DragOverlay.js.map +2 -2
  7. package/dist/cjs/parts/HoC/withConditionalDnDRowContext.js +16 -14
  8. package/dist/cjs/parts/HoC/withConditionalDnDRowContext.js.map +2 -2
  9. package/dist/cjs/parts/Item/Item.js +29 -68
  10. package/dist/cjs/parts/Item/Item.js.map +3 -3
  11. package/dist/cjs/parts/Item/ItemActions/ItemActions.js +2 -2
  12. package/dist/cjs/parts/Item/ItemActions/ItemActions.js.map +2 -2
  13. package/dist/cjs/parts/Item/ItemActions/{useInnerRefHandlers.js → useInnerRefActionHandlers.js} +6 -6
  14. package/dist/cjs/parts/Item/ItemActions/useInnerRefActionHandlers.js.map +7 -0
  15. package/dist/cjs/parts/Item/ItemSelectionUi/CheckboxSelectionUI.js +72 -0
  16. package/dist/cjs/parts/Item/ItemSelectionUi/CheckboxSelectionUI.js.map +7 -0
  17. package/dist/cjs/parts/Item/ItemSelectionUi/ItemSelectionUI.js +83 -0
  18. package/dist/cjs/parts/Item/ItemSelectionUi/ItemSelectionUI.js.map +7 -0
  19. package/dist/cjs/parts/{HoC/withConditionalUseSortable.js → Item/ItemSelectionUi/ItemSelectionUI.types.js} +3 -18
  20. package/dist/cjs/parts/Item/ItemSelectionUi/ItemSelectionUI.types.js.map +7 -0
  21. package/dist/cjs/parts/Item/{ItemSelection.js → ItemSelectionUi/VerticalBarSelectionUI.js} +14 -13
  22. package/dist/cjs/parts/Item/ItemSelectionUi/VerticalBarSelectionUI.js.map +7 -0
  23. package/dist/cjs/parts/Item/useItemInnerRefHandlers.js +73 -0
  24. package/dist/cjs/parts/Item/useItemInnerRefHandlers.js.map +7 -0
  25. package/dist/cjs/parts/Panel/bottom/LoadMoreBtn.js +2 -2
  26. package/dist/cjs/parts/Panel/bottom/LoadMoreBtn.js.map +2 -2
  27. package/dist/cjs/parts/Panel/bottom/{useInnerRefHandlers.js → useLoadMoreBtnInnerRefHandlers.js} +6 -6
  28. package/dist/cjs/parts/Panel/bottom/useLoadMoreBtnInnerRefHandlers.js.map +7 -0
  29. package/dist/cjs/parts/Panel/middle/PanelContentMiddleSection.js +2 -2
  30. package/dist/cjs/parts/Panel/middle/PanelContentMiddleSection.js.map +2 -2
  31. package/dist/cjs/react-desc-prop-types.js +7 -2
  32. package/dist/cjs/react-desc-prop-types.js.map +2 -2
  33. package/dist/cjs/typescript-testing/slot-props.js +1 -0
  34. package/dist/cjs/typescript-testing/slot-props.js.map +2 -2
  35. package/dist/esm/constants/index.js +1 -2
  36. package/dist/esm/constants/index.js.map +2 -2
  37. package/dist/esm/parts/Dnd/DndHandle.js +8 -7
  38. package/dist/esm/parts/Dnd/DndHandle.js.map +2 -2
  39. package/dist/esm/parts/Dnd/DragOverlay.js +1 -1
  40. package/dist/esm/parts/Dnd/DragOverlay.js.map +2 -2
  41. package/dist/esm/parts/HoC/withConditionalDnDRowContext.js +16 -14
  42. package/dist/esm/parts/HoC/withConditionalDnDRowContext.js.map +2 -2
  43. package/dist/esm/parts/Item/Item.js +30 -69
  44. package/dist/esm/parts/Item/Item.js.map +2 -2
  45. package/dist/esm/parts/Item/ItemActions/ItemActions.js +2 -2
  46. package/dist/esm/parts/Item/ItemActions/ItemActions.js.map +2 -2
  47. package/dist/esm/parts/Item/ItemActions/{useInnerRefHandlers.js → useInnerRefActionHandlers.js} +3 -3
  48. package/dist/esm/parts/Item/ItemActions/useInnerRefActionHandlers.js.map +7 -0
  49. package/dist/esm/parts/Item/ItemSelectionUi/CheckboxSelectionUI.js +42 -0
  50. package/dist/esm/parts/Item/ItemSelectionUi/CheckboxSelectionUI.js.map +7 -0
  51. package/dist/esm/parts/Item/ItemSelectionUi/ItemSelectionUI.js +53 -0
  52. package/dist/esm/parts/Item/ItemSelectionUi/ItemSelectionUI.js.map +7 -0
  53. package/dist/esm/parts/Item/ItemSelectionUi/ItemSelectionUI.types.js +2 -0
  54. package/dist/esm/parts/Item/ItemSelectionUi/ItemSelectionUI.types.js.map +7 -0
  55. package/dist/esm/parts/Item/{ItemSelection.js → ItemSelectionUi/VerticalBarSelectionUI.js} +11 -10
  56. package/dist/esm/parts/Item/ItemSelectionUi/VerticalBarSelectionUI.js.map +7 -0
  57. package/dist/esm/parts/Item/useItemInnerRefHandlers.js +43 -0
  58. package/dist/esm/parts/Item/useItemInnerRefHandlers.js.map +7 -0
  59. package/dist/esm/parts/Panel/bottom/LoadMoreBtn.js +2 -2
  60. package/dist/esm/parts/Panel/bottom/LoadMoreBtn.js.map +2 -2
  61. package/dist/esm/parts/Panel/bottom/{useInnerRefHandlers.js → useLoadMoreBtnInnerRefHandlers.js} +3 -3
  62. package/dist/esm/parts/Panel/bottom/useLoadMoreBtnInnerRefHandlers.js.map +7 -0
  63. package/dist/esm/parts/Panel/middle/PanelContentMiddleSection.js +2 -2
  64. package/dist/esm/parts/Panel/middle/PanelContentMiddleSection.js.map +2 -2
  65. package/dist/esm/react-desc-prop-types.js +7 -2
  66. package/dist/esm/react-desc-prop-types.js.map +2 -2
  67. package/dist/esm/typescript-testing/slot-props.js +1 -0
  68. package/dist/esm/typescript-testing/slot-props.js.map +2 -2
  69. package/dist/types/constants/index.d.ts +2 -1
  70. package/dist/types/parts/Item/Item.d.ts +1 -5
  71. package/dist/types/parts/Item/ItemActions/{useInnerRefHandlers.d.ts → useInnerRefActionHandlers.d.ts} +1 -1
  72. package/dist/types/parts/Item/ItemSelectionUi/CheckboxSelectionUI.d.ts +2 -0
  73. package/dist/types/parts/Item/ItemSelectionUi/ItemSelectionUI.d.ts +2 -0
  74. package/dist/types/parts/Item/ItemSelectionUi/ItemSelectionUI.types.d.ts +11 -0
  75. package/dist/types/parts/Item/ItemSelectionUi/VerticalBarSelectionUI.d.ts +2 -0
  76. package/dist/types/parts/Item/useItemInnerRefHandlers.d.ts +5 -0
  77. package/dist/types/parts/Panel/bottom/{useInnerRefHandlers.d.ts → useLoadMoreBtnInnerRefHandlers.d.ts} +1 -1
  78. package/dist/types/react-desc-prop-types.d.ts +2 -0
  79. package/package.json +23 -23
  80. package/dist/cjs/parts/HoC/withConditionalUseSortable.js.map +0 -7
  81. package/dist/cjs/parts/Item/ItemActions/useInnerRefHandlers.js.map +0 -7
  82. package/dist/cjs/parts/Item/ItemSelection.js.map +0 -7
  83. package/dist/cjs/parts/Panel/bottom/useInnerRefHandlers.js.map +0 -7
  84. package/dist/esm/parts/HoC/withConditionalUseSortable.js +0 -13
  85. package/dist/esm/parts/HoC/withConditionalUseSortable.js.map +0 -7
  86. package/dist/esm/parts/Item/ItemActions/useInnerRefHandlers.js.map +0 -7
  87. package/dist/esm/parts/Item/ItemSelection.js.map +0 -7
  88. package/dist/esm/parts/Panel/bottom/useInnerRefHandlers.js.map +0 -7
  89. package/dist/types/parts/HoC/withConditionalUseSortable.d.ts +0 -9
  90. package/dist/types/parts/Item/ItemSelection.d.ts +0 -3
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../../scripts/build/transpile/react-shim.js", "../../../../../src/parts/Panel/bottom/LoadMoreBtn.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React from 'react';\nimport { styled } from '@elliemae/ds-system';\nimport { DSButtonV2, BUTTON_SIZES, type DSButtonT } from '@elliemae/ds-button-v2';\nimport { usePropsStore } from '../../../config/useStore/index.js';\nimport { type DSShuttleV2T } from '../../../react-desc-prop-types.js';\nimport { useInnerRefHandlers } from './useInnerRefHandlers.js';\nimport { useFocusTracker } from '../../../config/useFocusTracker/index.js';\nimport { DSShuttleV2Name, DSShuttleV2Slots } from '../../../constants/index.js';\n\nconst StyledLoadMoreBtn = styled(DSButtonV2, {\n name: DSShuttleV2Name,\n slot: DSShuttleV2Slots.LIST_BOTTOM_LOAD_MORE_BTN,\n})`\n width: 100%;\n height: 100%;\n`;\n\nexport const LoadMoreBtn = (panelMetaInfo: DSShuttleV2T.PanelMetaInfo) => {\n const { isDestinationPanel = false } = panelMetaInfo;\n const {\n getCanFocusLastItem,\n trackFocusItemLast,\n trackFocusActionParent,\n trackFocusRegionPanelItem,\n trackFocusRegionPanel,\n trackFocusItemReset,\n trackFocusActionReset,\n } = useFocusTracker();\n const onLoadMore = usePropsStore((state) =>\n isDestinationPanel ? state.onDestinationLoadMore : state.onSourceLoadMore,\n );\n const handleOnClick = React.useCallback(\n (e: Parameters<Required<DSButtonT.Props>['onClick']>[0]) => {\n onLoadMore(e);\n if (getCanFocusLastItem(panelMetaInfo)) {\n trackFocusItemLast(panelMetaInfo);\n trackFocusRegionPanelItem(panelMetaInfo.isDestinationPanel);\n trackFocusActionParent();\n } else {\n trackFocusItemReset();\n trackFocusActionReset();\n trackFocusRegionPanel(panelMetaInfo.isDestinationPanel);\n }\n },\n [\n getCanFocusLastItem,\n onLoadMore,\n panelMetaInfo,\n trackFocusActionParent,\n trackFocusActionReset,\n trackFocusItemLast,\n trackFocusItemReset,\n trackFocusRegionPanel,\n trackFocusRegionPanelItem,\n ],\n );\n const { innerRefHandlerLoadMoreBtn } = useInnerRefHandlers(panelMetaInfo);\n const getOwnerProps = usePropsStore((store) => store.get);\n const getOwnerPropsArguments = React.useCallback(() => panelMetaInfo, [panelMetaInfo]);\n\n return (\n <StyledLoadMoreBtn\n buttonType=\"text\"\n onClick={handleOnClick}\n size={BUTTON_SIZES.S}\n innerRef={innerRefHandlerLoadMoreBtn}\n // aria-label set for default, can be overridden via getOwnerProps\n aria-label={isDestinationPanel ? 'Load more items in destination panel' : 'Load more items in source panel'}\n getOwnerProps={getOwnerProps}\n getOwnerPropsArguments={getOwnerPropsArguments}\n >\n Load More...\n </StyledLoadMoreBtn>\n );\n};\n"],
5
- "mappings": "AAAA,YAAY,WAAW;AC6DnB;AA7DJ,OAAOA,YAAW;AAClB,SAAS,cAAc;AACvB,SAAS,YAAY,oBAAoC;AACzD,SAAS,qBAAqB;AAE9B,SAAS,2BAA2B;AACpC,SAAS,uBAAuB;AAChC,SAAS,iBAAiB,wBAAwB;AAElD,MAAM,oBAAoB,OAAO,YAAY;AAAA,EAC3C,MAAM;AAAA,EACN,MAAM,iBAAiB;AACzB,CAAC;AAAA;AAAA;AAAA;AAKM,MAAM,cAAc,CAAC,kBAA8C;AACxE,QAAM,EAAE,qBAAqB,MAAM,IAAI;AACvC,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,gBAAgB;AACpB,QAAM,aAAa;AAAA,IAAc,CAAC,UAChC,qBAAqB,MAAM,wBAAwB,MAAM;AAAA,EAC3D;AACA,QAAM,gBAAgBA,OAAM;AAAA,IAC1B,CAAC,MAA2D;AAC1D,iBAAW,CAAC;AACZ,UAAI,oBAAoB,aAAa,GAAG;AACtC,2BAAmB,aAAa;AAChC,kCAA0B,cAAc,kBAAkB;AAC1D,+BAAuB;AAAA,MACzB,OAAO;AACL,4BAAoB;AACpB,8BAAsB;AACtB,8BAAsB,cAAc,kBAAkB;AAAA,MACxD;AAAA,IACF;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACA,QAAM,EAAE,2BAA2B,IAAI,oBAAoB,aAAa;AACxE,QAAM,gBAAgB,cAAc,CAAC,UAAU,MAAM,GAAG;AACxD,QAAM,yBAAyBA,OAAM,YAAY,MAAM,eAAe,CAAC,aAAa,CAAC;AAErF,SACE;AAAA,IAAC;AAAA;AAAA,MACC,YAAW;AAAA,MACX,SAAS;AAAA,MACT,MAAM,aAAa;AAAA,MACnB,UAAU;AAAA,MAEV,cAAY,qBAAqB,yCAAyC;AAAA,MAC1E;AAAA,MACA;AAAA,MACD;AAAA;AAAA,EAED;AAEJ;",
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React from 'react';\nimport { styled } from '@elliemae/ds-system';\nimport { DSButtonV2, BUTTON_SIZES, type DSButtonT } from '@elliemae/ds-button-v2';\nimport { usePropsStore } from '../../../config/useStore/index.js';\nimport { type DSShuttleV2T } from '../../../react-desc-prop-types.js';\nimport { useLoadMoreBtnInnerRefHandlers } from './useLoadMoreBtnInnerRefHandlers.js';\nimport { useFocusTracker } from '../../../config/useFocusTracker/index.js';\nimport { DSShuttleV2Name, DSShuttleV2Slots } from '../../../constants/index.js';\n\nconst StyledLoadMoreBtn = styled(DSButtonV2, {\n name: DSShuttleV2Name,\n slot: DSShuttleV2Slots.LIST_BOTTOM_LOAD_MORE_BTN,\n})`\n width: 100%;\n height: 100%;\n`;\n\nexport const LoadMoreBtn = (panelMetaInfo: DSShuttleV2T.PanelMetaInfo) => {\n const { isDestinationPanel = false } = panelMetaInfo;\n const {\n getCanFocusLastItem,\n trackFocusItemLast,\n trackFocusActionParent,\n trackFocusRegionPanelItem,\n trackFocusRegionPanel,\n trackFocusItemReset,\n trackFocusActionReset,\n } = useFocusTracker();\n const onLoadMore = usePropsStore((state) =>\n isDestinationPanel ? state.onDestinationLoadMore : state.onSourceLoadMore,\n );\n const handleOnClick = React.useCallback(\n (e: Parameters<Required<DSButtonT.Props>['onClick']>[0]) => {\n onLoadMore(e);\n if (getCanFocusLastItem(panelMetaInfo)) {\n trackFocusItemLast(panelMetaInfo);\n trackFocusRegionPanelItem(panelMetaInfo.isDestinationPanel);\n trackFocusActionParent();\n } else {\n trackFocusItemReset();\n trackFocusActionReset();\n trackFocusRegionPanel(panelMetaInfo.isDestinationPanel);\n }\n },\n [\n getCanFocusLastItem,\n onLoadMore,\n panelMetaInfo,\n trackFocusActionParent,\n trackFocusActionReset,\n trackFocusItemLast,\n trackFocusItemReset,\n trackFocusRegionPanel,\n trackFocusRegionPanelItem,\n ],\n );\n const { innerRefHandlerLoadMoreBtn } = useLoadMoreBtnInnerRefHandlers(panelMetaInfo);\n const getOwnerProps = usePropsStore((store) => store.get);\n const getOwnerPropsArguments = React.useCallback(() => panelMetaInfo, [panelMetaInfo]);\n\n return (\n <StyledLoadMoreBtn\n buttonType=\"text\"\n onClick={handleOnClick}\n size={BUTTON_SIZES.S}\n innerRef={innerRefHandlerLoadMoreBtn}\n // aria-label set for default, can be overridden via getOwnerProps\n aria-label={isDestinationPanel ? 'Load more items in destination panel' : 'Load more items in source panel'}\n getOwnerProps={getOwnerProps}\n getOwnerPropsArguments={getOwnerPropsArguments}\n >\n Load More...\n </StyledLoadMoreBtn>\n );\n};\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;AC6DnB;AA7DJ,OAAOA,YAAW;AAClB,SAAS,cAAc;AACvB,SAAS,YAAY,oBAAoC;AACzD,SAAS,qBAAqB;AAE9B,SAAS,sCAAsC;AAC/C,SAAS,uBAAuB;AAChC,SAAS,iBAAiB,wBAAwB;AAElD,MAAM,oBAAoB,OAAO,YAAY;AAAA,EAC3C,MAAM;AAAA,EACN,MAAM,iBAAiB;AACzB,CAAC;AAAA;AAAA;AAAA;AAKM,MAAM,cAAc,CAAC,kBAA8C;AACxE,QAAM,EAAE,qBAAqB,MAAM,IAAI;AACvC,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,gBAAgB;AACpB,QAAM,aAAa;AAAA,IAAc,CAAC,UAChC,qBAAqB,MAAM,wBAAwB,MAAM;AAAA,EAC3D;AACA,QAAM,gBAAgBA,OAAM;AAAA,IAC1B,CAAC,MAA2D;AAC1D,iBAAW,CAAC;AACZ,UAAI,oBAAoB,aAAa,GAAG;AACtC,2BAAmB,aAAa;AAChC,kCAA0B,cAAc,kBAAkB;AAC1D,+BAAuB;AAAA,MACzB,OAAO;AACL,4BAAoB;AACpB,8BAAsB;AACtB,8BAAsB,cAAc,kBAAkB;AAAA,MACxD;AAAA,IACF;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACA,QAAM,EAAE,2BAA2B,IAAI,+BAA+B,aAAa;AACnF,QAAM,gBAAgB,cAAc,CAAC,UAAU,MAAM,GAAG;AACxD,QAAM,yBAAyBA,OAAM,YAAY,MAAM,eAAe,CAAC,aAAa,CAAC;AAErF,SACE;AAAA,IAAC;AAAA;AAAA,MACC,YAAW;AAAA,MACX,SAAS;AAAA,MACT,MAAM,aAAa;AAAA,MACnB,UAAU;AAAA,MAEV,cAAY,qBAAqB,yCAAyC;AAAA,MAC1E;AAAA,MACA;AAAA,MACD;AAAA;AAAA,EAED;AAEJ;",
6
6
  "names": ["React"]
7
7
  }
@@ -2,7 +2,7 @@ import * as React from "react";
2
2
  import React2 from "react";
3
3
  import { useInternalStore } from "../../../config/useStore/index.js";
4
4
  import { ITEMS_FOCUSES } from "../../../constants/index.js";
5
- const useInnerRefHandlers = ({ isDestinationPanel }) => {
5
+ const useLoadMoreBtnInnerRefHandlers = ({ isDestinationPanel }) => {
6
6
  const setZustandRef = useInternalStore((state) => state.setZustandRef);
7
7
  const innerRefHandlerLoadMoreBtn = React2.useCallback(
8
8
  (node) => {
@@ -16,6 +16,6 @@ const useInnerRefHandlers = ({ isDestinationPanel }) => {
16
16
  return React2.useMemo(() => ({ innerRefHandlerLoadMoreBtn }), [innerRefHandlerLoadMoreBtn]);
17
17
  };
18
18
  export {
19
- useInnerRefHandlers
19
+ useLoadMoreBtnInnerRefHandlers
20
20
  };
21
- //# sourceMappingURL=useInnerRefHandlers.js.map
21
+ //# sourceMappingURL=useLoadMoreBtnInnerRefHandlers.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../../scripts/build/transpile/react-shim.js", "../../../../../src/parts/Panel/bottom/useLoadMoreBtnInnerRefHandlers.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable no-unused-vars */\nimport React from 'react';\nimport { useInternalStore } from '../../../config/useStore/index.js';\nimport { type DSShuttleV2T } from '../../../react-desc-prop-types.js';\nimport { ITEMS_FOCUSES } from '../../../constants/index.js';\n\nexport const useLoadMoreBtnInnerRefHandlers = ({ isDestinationPanel }: DSShuttleV2T.PanelMetaInfo) => {\n const setZustandRef = useInternalStore((state) => state.setZustandRef);\n\n const innerRefHandlerLoadMoreBtn = React.useCallback(\n (node: HTMLButtonElement) => {\n setZustandRef(\n [isDestinationPanel ? ITEMS_FOCUSES.LOAD_MORE_BTN_DESTINATION : ITEMS_FOCUSES.LOAD_MORE_BTN_SOURCE],\n node,\n );\n },\n [isDestinationPanel, setZustandRef],\n );\n return React.useMemo(() => ({ innerRefHandlerLoadMoreBtn }), [innerRefHandlerLoadMoreBtn]);\n};\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACEvB,OAAOA,YAAW;AAClB,SAAS,wBAAwB;AAEjC,SAAS,qBAAqB;AAEvB,MAAM,iCAAiC,CAAC,EAAE,mBAAmB,MAAkC;AACpG,QAAM,gBAAgB,iBAAiB,CAAC,UAAU,MAAM,aAAa;AAErE,QAAM,6BAA6BA,OAAM;AAAA,IACvC,CAAC,SAA4B;AAC3B;AAAA,QACE,CAAC,qBAAqB,cAAc,4BAA4B,cAAc,oBAAoB;AAAA,QAClG;AAAA,MACF;AAAA,IACF;AAAA,IACA,CAAC,oBAAoB,aAAa;AAAA,EACpC;AACA,SAAOA,OAAM,QAAQ,OAAO,EAAE,2BAA2B,IAAI,CAAC,0BAA0B,CAAC;AAC3F;",
6
+ "names": ["React"]
7
+ }
@@ -13,7 +13,7 @@ import { MultipleSelectionAction } from "./MultipleSelectionAction.js";
13
13
  import { DSShuttleV2Name, REGIONS_FOCUSES, DSShuttleV2Slots } from "../../../constants/index.js";
14
14
  import { StyledA11yNoVisible } from "../../../styles.js";
15
15
  import { ShuttleLoadingAnnouncement } from "./ShuttleLoadingAnnouncement.js";
16
- const useInnerRefHandlers = (isDestinationPanel) => {
16
+ const useMiddleSectionInnerRefHandlers = (isDestinationPanel) => {
17
17
  const setZustandRef = useInternalStore((state) => state.setZustandRef);
18
18
  const currRegion = isDestinationPanel ? REGIONS_FOCUSES.DESTINATION_PANEL : REGIONS_FOCUSES.SOURCE_PANEL;
19
19
  const innerRefHandlerParentItem = React2.useCallback(
@@ -54,7 +54,7 @@ const PanelContentMiddleSection = React2.memo((panelMetaInfo) => {
54
54
  const withLoadMore = usePropsStore(
55
55
  (state) => isDestinationPanel ? state.destinationWithLoadMore : state.sourceWithLoadMore
56
56
  );
57
- const { innerRefHandlerParentItem } = useInnerRefHandlers(isDestinationPanel);
57
+ const { innerRefHandlerParentItem } = useMiddleSectionInnerRefHandlers(isDestinationPanel);
58
58
  const {
59
59
  trackFocusRegionPanel,
60
60
  trackFocusItemFirst,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../../scripts/build/transpile/react-shim.js", "../../../../../src/parts/Panel/middle/PanelContentMiddleSection.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable max-statements */\n/* eslint-disable complexity */\nimport React, { useCallback } from 'react';\nimport { styled } from '@elliemae/ds-system';\nimport { Grid } from '@elliemae/ds-grid';\nimport { useOnSpecificFocus } from './useOnSpecificFocus.js';\nimport { usePropsStore, useInternalStore } from '../../../config/useStore/index.js';\nimport { type DSShuttleV2T } from '../../../react-desc-prop-types.js';\nimport { ItemListWrapperWithContext } from './ItemListWrapper/Index.js';\nimport { EmptyItems } from './EmptyItems.js';\nimport { useFocusTracker } from '../../../config/useFocusTracker/index.js';\nimport { LoadingItems } from './LoadingItems.js';\nimport { MultipleSelectionAction } from './MultipleSelectionAction.js';\nimport { DSShuttleV2Name, REGIONS_FOCUSES, DSShuttleV2Slots } from '../../../constants/index.js';\nimport { StyledA11yNoVisible } from '../../../styles.js';\nimport { ShuttleLoadingAnnouncement } from './ShuttleLoadingAnnouncement.js';\n\nconst useInnerRefHandlers = (isDestinationPanel: boolean) => {\n const setZustandRef = useInternalStore((state) => state.setZustandRef);\n const currRegion = isDestinationPanel ? REGIONS_FOCUSES.DESTINATION_PANEL : REGIONS_FOCUSES.SOURCE_PANEL;\n\n const innerRefHandlerParentItem = React.useCallback(\n (node: HTMLDivElement | null) => {\n setZustandRef([currRegion, '', ''], node);\n },\n [currRegion, setZustandRef],\n );\n return React.useMemo(() => ({ innerRefHandlerParentItem }), [innerRefHandlerParentItem]);\n};\n\nconst rows = [1];\n\nconst StyledListWrapperMid = styled(Grid, { name: DSShuttleV2Name, slot: DSShuttleV2Slots.LIST_WRAPPER_MID })`\n overflow: hidden;\n position: relative;\n :focus,\n :focus-visible {\n outline: 2px solid brand-700;\n }\n`;\n\nexport const PanelContentMiddleSection = React.memo((panelMetaInfo: DSShuttleV2T.PanelMetaInfo) => {\n const { isDestinationPanel = false, hasMultipleSelection } = panelMetaInfo;\n const itemsLength = usePropsStore((state) =>\n isDestinationPanel ? state.destinationData.length : state.sourceData.length,\n );\n\n const headerProps = usePropsStore((state) =>\n isDestinationPanel ? state.destinationHeaderProps : state.sourceHeaderProps,\n );\n\n const itemList = usePropsStore((state) =>\n isDestinationPanel ? state.destinationConfiguredData : state.sourceConfiguredData,\n );\n const isLoading = usePropsStore((state) => (isDestinationPanel ? state.destinationIsLoading : state.sourceIsLoading));\n const showEmptyMessage = !isLoading && itemsLength === 0;\n const showItems = !isLoading && !showEmptyMessage;\n\n const actionRef = usePropsStore((state) =>\n isDestinationPanel ? state.destinationVirtualRef : state.sourceVirtualRef,\n );\n\n const getIsDragAndDropHappening = useInternalStore((state) => state.getIsDragAndDropHappening);\n const withLoadMore = usePropsStore((state) =>\n isDestinationPanel ? state.destinationWithLoadMore : state.sourceWithLoadMore,\n );\n const { innerRefHandlerParentItem } = useInnerRefHandlers(isDestinationPanel);\n const {\n trackFocusRegionPanel,\n trackFocusItemFirst,\n trackFocusItemLast,\n trackFocusActionParent,\n trackFocusRegionPanelItem,\n trackFocusLoadMoreBtnDestination,\n trackFocusLoadMoreBtn,\n } = useFocusTracker();\n const config = React.useMemo(\n () => ({\n onFocus: () => {\n trackFocusRegionPanel(isDestinationPanel);\n },\n }),\n [trackFocusRegionPanel, isDestinationPanel],\n );\n const onPanelFocus = useOnSpecificFocus(config);\n\n const onPanelKeyDown = React.useCallback<React.KeyboardEventHandler<HTMLDivElement>>(\n (e) => {\n const { key } = e;\n // we need to invoke \"getIsDragAndDropHappening\" here to ensure we have the latest info at the moment of the event\n const isDragAndDropHappening = getIsDragAndDropHappening();\n if (isDragAndDropHappening) {\n e.preventDefault();\n return;\n }\n if (['Home', 'End', 'ArrowUp', 'ArrowDown'].includes(key)) {\n e.preventDefault();\n e.stopPropagation();\n trackFocusRegionPanelItem(isDestinationPanel);\n trackFocusActionParent();\n // we won't receive ArrowUp/ArrowDown if this happens in a child because children are stopping propagation\n if ((key === 'ArrowDown' || key === 'Home') && itemList.length > 0) {\n actionRef.current.scrollTo(0);\n trackFocusItemFirst(panelMetaInfo);\n }\n if ((key === 'ArrowUp' || key === 'End') && itemList.length > 0) {\n if (withLoadMore) {\n if (isDestinationPanel) trackFocusLoadMoreBtnDestination();\n else trackFocusLoadMoreBtn();\n } else {\n trackFocusItemLast(panelMetaInfo);\n actionRef.current.scrollTo(itemsLength - 1);\n }\n }\n }\n },\n [\n getIsDragAndDropHappening,\n trackFocusRegionPanelItem,\n isDestinationPanel,\n trackFocusActionParent,\n itemList.length,\n actionRef,\n trackFocusItemFirst,\n panelMetaInfo,\n withLoadMore,\n trackFocusLoadMoreBtnDestination,\n trackFocusLoadMoreBtn,\n trackFocusItemLast,\n itemsLength,\n ],\n );\n\n const cols = React.useMemo(() => {\n if (hasMultipleSelection) return ['1fr', '5rem'];\n return ['auto'];\n }, [hasMultipleSelection]);\n\n const getOwnerProps = usePropsStore((store) => store.get);\n const getOwnerPropsArguments = useCallback(() => panelMetaInfo, [panelMetaInfo]);\n\n const defaultAriaDescribedBy =\n itemList.length > 0\n ? 'Press Up and Down arrow to navigate the options list and Press Right and Left arrow to access items actions'\n : 'No items available in the panel';\n\n const uidDescribedBy = useInternalStore((state) => state.shuttleInternalId);\n\n const defaultAriaLabel = React.useMemo(\n () => `Entering ${isDestinationPanel ? 'destination' : 'source'} panel.`,\n [isDestinationPanel],\n );\n\n return (\n <StyledListWrapperMid\n onFocus={onPanelFocus}\n onKeyDown={onPanelKeyDown}\n role=\"group\"\n tabIndex={0}\n rows={rows}\n aria-label={defaultAriaLabel}\n aria-describedby={uidDescribedBy}\n aria-roledescription={isDestinationPanel ? 'shuttle destination panel' : 'shuttle source panel'}\n getOwnerProps={getOwnerProps}\n getOwnerPropsArguments={getOwnerPropsArguments}\n innerRef={innerRefHandlerParentItem}\n >\n <Grid cols={cols} rows={rows}>\n <StyledA11yNoVisible id={uidDescribedBy}>{defaultAriaDescribedBy}</StyledA11yNoVisible>\n <ShuttleLoadingAnnouncement isLoading={isLoading} headerProps={headerProps} />\n {isLoading ? <LoadingItems {...panelMetaInfo} /> : null}\n {showEmptyMessage ? <EmptyItems {...panelMetaInfo} /> : null}\n {showItems ? <ItemListWrapperWithContext {...panelMetaInfo} /> : null}\n {hasMultipleSelection ? <MultipleSelectionAction {...panelMetaInfo} /> : null}\n </Grid>\n </StyledListWrapperMid>\n );\n});\n"],
5
- "mappings": "AAAA,YAAY,WAAW;ACuKjB,SACE,KADF;AArKN,OAAOA,UAAS,mBAAmB;AACnC,SAAS,cAAc;AACvB,SAAS,YAAY;AACrB,SAAS,0BAA0B;AACnC,SAAS,eAAe,wBAAwB;AAEhD,SAAS,kCAAkC;AAC3C,SAAS,kBAAkB;AAC3B,SAAS,uBAAuB;AAChC,SAAS,oBAAoB;AAC7B,SAAS,+BAA+B;AACxC,SAAS,iBAAiB,iBAAiB,wBAAwB;AACnE,SAAS,2BAA2B;AACpC,SAAS,kCAAkC;AAE3C,MAAM,sBAAsB,CAAC,uBAAgC;AAC3D,QAAM,gBAAgB,iBAAiB,CAAC,UAAU,MAAM,aAAa;AACrE,QAAM,aAAa,qBAAqB,gBAAgB,oBAAoB,gBAAgB;AAE5F,QAAM,4BAA4BA,OAAM;AAAA,IACtC,CAAC,SAAgC;AAC/B,oBAAc,CAAC,YAAY,IAAI,EAAE,GAAG,IAAI;AAAA,IAC1C;AAAA,IACA,CAAC,YAAY,aAAa;AAAA,EAC5B;AACA,SAAOA,OAAM,QAAQ,OAAO,EAAE,0BAA0B,IAAI,CAAC,yBAAyB,CAAC;AACzF;AAEA,MAAM,OAAO,CAAC,CAAC;AAEf,MAAM,uBAAuB,OAAO,MAAM,EAAE,MAAM,iBAAiB,MAAM,iBAAiB,iBAAiB,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASrG,MAAM,4BAA4BA,OAAM,KAAK,CAAC,kBAA8C;AACjG,QAAM,EAAE,qBAAqB,OAAO,qBAAqB,IAAI;AAC7D,QAAM,cAAc;AAAA,IAAc,CAAC,UACjC,qBAAqB,MAAM,gBAAgB,SAAS,MAAM,WAAW;AAAA,EACvE;AAEA,QAAM,cAAc;AAAA,IAAc,CAAC,UACjC,qBAAqB,MAAM,yBAAyB,MAAM;AAAA,EAC5D;AAEA,QAAM,WAAW;AAAA,IAAc,CAAC,UAC9B,qBAAqB,MAAM,4BAA4B,MAAM;AAAA,EAC/D;AACA,QAAM,YAAY,cAAc,CAAC,UAAW,qBAAqB,MAAM,uBAAuB,MAAM,eAAgB;AACpH,QAAM,mBAAmB,CAAC,aAAa,gBAAgB;AACvD,QAAM,YAAY,CAAC,aAAa,CAAC;AAEjC,QAAM,YAAY;AAAA,IAAc,CAAC,UAC/B,qBAAqB,MAAM,wBAAwB,MAAM;AAAA,EAC3D;AAEA,QAAM,4BAA4B,iBAAiB,CAAC,UAAU,MAAM,yBAAyB;AAC7F,QAAM,eAAe;AAAA,IAAc,CAAC,UAClC,qBAAqB,MAAM,0BAA0B,MAAM;AAAA,EAC7D;AACA,QAAM,EAAE,0BAA0B,IAAI,oBAAoB,kBAAkB;AAC5E,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,gBAAgB;AACpB,QAAM,SAASA,OAAM;AAAA,IACnB,OAAO;AAAA,MACL,SAAS,MAAM;AACb,8BAAsB,kBAAkB;AAAA,MAC1C;AAAA,IACF;AAAA,IACA,CAAC,uBAAuB,kBAAkB;AAAA,EAC5C;AACA,QAAM,eAAe,mBAAmB,MAAM;AAE9C,QAAM,iBAAiBA,OAAM;AAAA,IAC3B,CAAC,MAAM;AACL,YAAM,EAAE,IAAI,IAAI;AAEhB,YAAM,yBAAyB,0BAA0B;AACzD,UAAI,wBAAwB;AAC1B,UAAE,eAAe;AACjB;AAAA,MACF;AACA,UAAI,CAAC,QAAQ,OAAO,WAAW,WAAW,EAAE,SAAS,GAAG,GAAG;AACzD,UAAE,eAAe;AACjB,UAAE,gBAAgB;AAClB,kCAA0B,kBAAkB;AAC5C,+BAAuB;AAEvB,aAAK,QAAQ,eAAe,QAAQ,WAAW,SAAS,SAAS,GAAG;AAClE,oBAAU,QAAQ,SAAS,CAAC;AAC5B,8BAAoB,aAAa;AAAA,QACnC;AACA,aAAK,QAAQ,aAAa,QAAQ,UAAU,SAAS,SAAS,GAAG;AAC/D,cAAI,cAAc;AAChB,gBAAI,mBAAoB,kCAAiC;AAAA,gBACpD,uBAAsB;AAAA,UAC7B,OAAO;AACL,+BAAmB,aAAa;AAChC,sBAAU,QAAQ,SAAS,cAAc,CAAC;AAAA,UAC5C;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,SAAS;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,QAAM,OAAOA,OAAM,QAAQ,MAAM;AAC/B,QAAI,qBAAsB,QAAO,CAAC,OAAO,MAAM;AAC/C,WAAO,CAAC,MAAM;AAAA,EAChB,GAAG,CAAC,oBAAoB,CAAC;AAEzB,QAAM,gBAAgB,cAAc,CAAC,UAAU,MAAM,GAAG;AACxD,QAAM,yBAAyB,YAAY,MAAM,eAAe,CAAC,aAAa,CAAC;AAE/E,QAAM,yBACJ,SAAS,SAAS,IACd,gHACA;AAEN,QAAM,iBAAiB,iBAAiB,CAAC,UAAU,MAAM,iBAAiB;AAE1E,QAAM,mBAAmBA,OAAM;AAAA,IAC7B,MAAM,YAAY,qBAAqB,gBAAgB,QAAQ;AAAA,IAC/D,CAAC,kBAAkB;AAAA,EACrB;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,SAAS;AAAA,MACT,WAAW;AAAA,MACX,MAAK;AAAA,MACL,UAAU;AAAA,MACV;AAAA,MACA,cAAY;AAAA,MACZ,oBAAkB;AAAA,MAClB,wBAAsB,qBAAqB,8BAA8B;AAAA,MACzE;AAAA,MACA;AAAA,MACA,UAAU;AAAA,MAEV,+BAAC,QAAK,MAAY,MAChB;AAAA,4BAAC,uBAAoB,IAAI,gBAAiB,kCAAuB;AAAA,QACjE,oBAAC,8BAA2B,WAAsB,aAA0B;AAAA,QAC3E,YAAY,oBAAC,gBAAc,GAAG,eAAe,IAAK;AAAA,QAClD,mBAAmB,oBAAC,cAAY,GAAG,eAAe,IAAK;AAAA,QACvD,YAAY,oBAAC,8BAA4B,GAAG,eAAe,IAAK;AAAA,QAChE,uBAAuB,oBAAC,2BAAyB,GAAG,eAAe,IAAK;AAAA,SAC3E;AAAA;AAAA,EACF;AAEJ,CAAC;",
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable max-statements */\n/* eslint-disable complexity */\nimport React, { useCallback } from 'react';\nimport { styled } from '@elliemae/ds-system';\nimport { Grid } from '@elliemae/ds-grid';\nimport { useOnSpecificFocus } from './useOnSpecificFocus.js';\nimport { usePropsStore, useInternalStore } from '../../../config/useStore/index.js';\nimport { type DSShuttleV2T } from '../../../react-desc-prop-types.js';\nimport { ItemListWrapperWithContext } from './ItemListWrapper/Index.js';\nimport { EmptyItems } from './EmptyItems.js';\nimport { useFocusTracker } from '../../../config/useFocusTracker/index.js';\nimport { LoadingItems } from './LoadingItems.js';\nimport { MultipleSelectionAction } from './MultipleSelectionAction.js';\nimport { DSShuttleV2Name, REGIONS_FOCUSES, DSShuttleV2Slots } from '../../../constants/index.js';\nimport { StyledA11yNoVisible } from '../../../styles.js';\nimport { ShuttleLoadingAnnouncement } from './ShuttleLoadingAnnouncement.js';\n\nconst useMiddleSectionInnerRefHandlers = (isDestinationPanel: boolean) => {\n const setZustandRef = useInternalStore((state) => state.setZustandRef);\n const currRegion = isDestinationPanel ? REGIONS_FOCUSES.DESTINATION_PANEL : REGIONS_FOCUSES.SOURCE_PANEL;\n\n const innerRefHandlerParentItem = React.useCallback(\n (node: HTMLDivElement | null) => {\n setZustandRef([currRegion, '', ''], node);\n },\n [currRegion, setZustandRef],\n );\n return React.useMemo(() => ({ innerRefHandlerParentItem }), [innerRefHandlerParentItem]);\n};\n\nconst rows = [1];\n\nconst StyledListWrapperMid = styled(Grid, { name: DSShuttleV2Name, slot: DSShuttleV2Slots.LIST_WRAPPER_MID })`\n overflow: hidden;\n position: relative;\n :focus,\n :focus-visible {\n outline: 2px solid brand-700;\n }\n`;\n\nexport const PanelContentMiddleSection = React.memo((panelMetaInfo: DSShuttleV2T.PanelMetaInfo) => {\n const { isDestinationPanel = false, hasMultipleSelection } = panelMetaInfo;\n const itemsLength = usePropsStore((state) =>\n isDestinationPanel ? state.destinationData.length : state.sourceData.length,\n );\n\n const headerProps = usePropsStore((state) =>\n isDestinationPanel ? state.destinationHeaderProps : state.sourceHeaderProps,\n );\n\n const itemList = usePropsStore((state) =>\n isDestinationPanel ? state.destinationConfiguredData : state.sourceConfiguredData,\n );\n const isLoading = usePropsStore((state) => (isDestinationPanel ? state.destinationIsLoading : state.sourceIsLoading));\n const showEmptyMessage = !isLoading && itemsLength === 0;\n const showItems = !isLoading && !showEmptyMessage;\n\n const actionRef = usePropsStore((state) =>\n isDestinationPanel ? state.destinationVirtualRef : state.sourceVirtualRef,\n );\n\n const getIsDragAndDropHappening = useInternalStore((state) => state.getIsDragAndDropHappening);\n const withLoadMore = usePropsStore((state) =>\n isDestinationPanel ? state.destinationWithLoadMore : state.sourceWithLoadMore,\n );\n const { innerRefHandlerParentItem } = useMiddleSectionInnerRefHandlers(isDestinationPanel);\n const {\n trackFocusRegionPanel,\n trackFocusItemFirst,\n trackFocusItemLast,\n trackFocusActionParent,\n trackFocusRegionPanelItem,\n trackFocusLoadMoreBtnDestination,\n trackFocusLoadMoreBtn,\n } = useFocusTracker();\n const config = React.useMemo(\n () => ({\n onFocus: () => {\n trackFocusRegionPanel(isDestinationPanel);\n },\n }),\n [trackFocusRegionPanel, isDestinationPanel],\n );\n const onPanelFocus = useOnSpecificFocus(config);\n\n const onPanelKeyDown = React.useCallback<React.KeyboardEventHandler<HTMLDivElement>>(\n (e) => {\n const { key } = e;\n // we need to invoke \"getIsDragAndDropHappening\" here to ensure we have the latest info at the moment of the event\n const isDragAndDropHappening = getIsDragAndDropHappening();\n if (isDragAndDropHappening) {\n e.preventDefault();\n return;\n }\n if (['Home', 'End', 'ArrowUp', 'ArrowDown'].includes(key)) {\n e.preventDefault();\n e.stopPropagation();\n trackFocusRegionPanelItem(isDestinationPanel);\n trackFocusActionParent();\n // we won't receive ArrowUp/ArrowDown if this happens in a child because children are stopping propagation\n if ((key === 'ArrowDown' || key === 'Home') && itemList.length > 0) {\n actionRef.current.scrollTo(0);\n trackFocusItemFirst(panelMetaInfo);\n }\n if ((key === 'ArrowUp' || key === 'End') && itemList.length > 0) {\n if (withLoadMore) {\n if (isDestinationPanel) trackFocusLoadMoreBtnDestination();\n else trackFocusLoadMoreBtn();\n } else {\n trackFocusItemLast(panelMetaInfo);\n actionRef.current.scrollTo(itemsLength - 1);\n }\n }\n }\n },\n [\n getIsDragAndDropHappening,\n trackFocusRegionPanelItem,\n isDestinationPanel,\n trackFocusActionParent,\n itemList.length,\n actionRef,\n trackFocusItemFirst,\n panelMetaInfo,\n withLoadMore,\n trackFocusLoadMoreBtnDestination,\n trackFocusLoadMoreBtn,\n trackFocusItemLast,\n itemsLength,\n ],\n );\n\n const cols = React.useMemo(() => {\n if (hasMultipleSelection) return ['1fr', '5rem'];\n return ['auto'];\n }, [hasMultipleSelection]);\n\n const getOwnerProps = usePropsStore((store) => store.get);\n const getOwnerPropsArguments = useCallback(() => panelMetaInfo, [panelMetaInfo]);\n\n const defaultAriaDescribedBy =\n itemList.length > 0\n ? 'Press Up and Down arrow to navigate the options list and Press Right and Left arrow to access items actions'\n : 'No items available in the panel';\n\n const uidDescribedBy = useInternalStore((state) => state.shuttleInternalId);\n\n const defaultAriaLabel = React.useMemo(\n () => `Entering ${isDestinationPanel ? 'destination' : 'source'} panel.`,\n [isDestinationPanel],\n );\n\n return (\n <StyledListWrapperMid\n onFocus={onPanelFocus}\n onKeyDown={onPanelKeyDown}\n role=\"group\"\n tabIndex={0}\n rows={rows}\n aria-label={defaultAriaLabel}\n aria-describedby={uidDescribedBy}\n aria-roledescription={isDestinationPanel ? 'shuttle destination panel' : 'shuttle source panel'}\n getOwnerProps={getOwnerProps}\n getOwnerPropsArguments={getOwnerPropsArguments}\n innerRef={innerRefHandlerParentItem}\n >\n <Grid cols={cols} rows={rows}>\n <StyledA11yNoVisible id={uidDescribedBy}>{defaultAriaDescribedBy}</StyledA11yNoVisible>\n <ShuttleLoadingAnnouncement isLoading={isLoading} headerProps={headerProps} />\n {isLoading ? <LoadingItems {...panelMetaInfo} /> : null}\n {showEmptyMessage ? <EmptyItems {...panelMetaInfo} /> : null}\n {showItems ? <ItemListWrapperWithContext {...panelMetaInfo} /> : null}\n {hasMultipleSelection ? <MultipleSelectionAction {...panelMetaInfo} /> : null}\n </Grid>\n </StyledListWrapperMid>\n );\n});\n"],
5
+ "mappings": "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",
6
6
  "names": ["React"]
7
7
  }
@@ -8,6 +8,8 @@ import {
8
8
  } from "@elliemae/ds-props-helpers";
9
9
  import { DSShuttleV2DataTestIds, DSShuttleV2Name, DSShuttleV2Slots } from "./constants/index.js";
10
10
  const defaultProps = {
11
+ // we start as false to avoid breaking changes, eventually converge to true for better accessibility
12
+ explicitSelectionUI: false,
11
13
  addDragAndDropFromSource: false,
12
14
  removeDragAndDropFromDestination: false,
13
15
  destinationNoOptionsMessage: "There are no items to display",
@@ -46,12 +48,15 @@ const DSShuttleV2PropTypes = {
46
48
  ...getPropsPerSlotPropTypes(DSShuttleV2Name, DSShuttleV2Slots),
47
49
  ...globalAttributesPropTypes,
48
50
  ...xstyledPropTypes,
51
+ explicitSelectionUI: PropTypes.bool.description(
52
+ "A boolean indicating whether to use WCAG-compliant selection indicators (checkboxes) instead of color-only indicators for selected items, must be true for the component to meet WCAG 1.4.1 Use of Color guidelines"
53
+ ).defaultValue(false),
49
54
  sourceData: PropTypes.arrayOf(PropTypes.object).description(
50
55
  "An array of objects representing the items in the source list"
51
56
  ).isRequired,
52
57
  sourceSelectedItems: PropTypes.object.description("An object representing the selected items in the source list").isRequired,
53
58
  onSourceSelectionChange: PropTypes.func.description("A function called when the selection in the source list changes").isRequired,
54
- SourceHeader: PropTypes.func.description("The header component for the source list").isRequired,
59
+ SourceHeader: PropTypes.elementType.description("The header component for the source list").isRequired,
55
60
  sourceHeaderProps: PropTypes.object.description("Props to be passed to the source header").defaultValue({}),
56
61
  onSourceDrilldown: PropTypes.func.description("A function called when an item in the source list is clicked").isRequired,
57
62
  destinationData: PropTypes.arrayOf(PropTypes.object).description(
@@ -63,7 +68,7 @@ const DSShuttleV2PropTypes = {
63
68
  onDestinationSelectionChange: PropTypes.func.description(
64
69
  "A function called when the selection in the destination list changes"
65
70
  ).isRequired,
66
- DestinationHeader: PropTypes.func.description("The header component for the destination list").isRequired,
71
+ DestinationHeader: PropTypes.elementType.description("The header component for the destination list").isRequired,
67
72
  destinationHeaderProps: PropTypes.object.description("Props to be passed to the destination header").defaultValue({}),
68
73
  onDestinationDrilldown: PropTypes.func.description(
69
74
  "A function called when an item in the destination list is clicked"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../scripts/build/transpile/react-shim.js", "../../src/react-desc-prop-types.ts"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable max-lines */\nimport { type DSButtonT, type DSButtonV3T } from '@elliemae/ds-button-v2';\nimport { type DnDKitTree, type useSortable } from '@elliemae/ds-drag-and-drop';\nimport { type DSControlledCheckboxT } from '@elliemae/ds-form-checkbox';\nimport { type DSInputTextT } from '@elliemae/ds-form-input-text';\nimport { type useHeadlessTooltip } from '@elliemae/ds-hooks-headless-tooltip';\nimport type { DSPropTypesSchema, GlobalAttributesT, ValidationMap, XstyledProps } from '@elliemae/ds-props-helpers';\nimport {\n PropTypes,\n getPropsPerDatatestIdPropTypes,\n getPropsPerSlotPropTypes,\n globalAttributesPropTypes,\n xstyledPropTypes,\n} from '@elliemae/ds-props-helpers';\nimport { type TypescriptHelpersT } from '@elliemae/ds-typescript-helpers';\nimport type { ZustandT } from '@elliemae/ds-zustand-helpers';\nimport type React from 'react';\nimport type { useAutoCalculated } from './config/useAutoCalculated/index.js';\nimport type { ACTIONS_FOCUSES, DropIndicatorPosition, ITEMS_FOCUSES, REGIONS_FOCUSES } from './constants/index.js';\nimport { DSShuttleV2DataTestIds, DSShuttleV2Name, DSShuttleV2Slots } from './constants/index.js';\n\nexport declare namespace DSShuttleV2T {\n export type Datum<D extends Record<string, unknown> = Record<string, unknown>> = D;\n export type PanelMetaInfo = { isDestinationPanel: boolean; hasMultipleSelection?: boolean; height?: number };\n type HydratedId = string;\n\n export type DatumInternalMeta = {\n isFirst: boolean;\n isLast: boolean;\n isSelected: boolean;\n softDeleted: boolean;\n localIndex: number;\n hydratedId: HydratedId;\n hydratedPreventMove: boolean;\n };\n export type DatumRenderFlags = {\n selectionPrevented: boolean;\n withActions: boolean;\n withMoveBtn: boolean;\n withDrilldownBtn: boolean;\n internallyDisabledMove: boolean;\n internallyDisabledDrilldown: boolean;\n };\n\n export type DropIndicatorPositionValues = TypescriptHelpersT.ObjectValues<typeof DropIndicatorPosition>;\n\n // =============================================================================\n // Hydratables section - panel level hydratables\n // =============================================================================\n type RequiredPanelHydratables = Record<string, never>;\n type OptionalPanelHydratables = {\n batchActionableButtonProps: Record<string, unknown>;\n };\n export type PanelHydratables = RequiredPanelHydratables & OptionalPanelHydratables;\n\n // =============================================================================\n // Hydratables section - datum level hydratables\n // shared usage between internal and custom component\n // =============================================================================\n export type PrimaryKeyHydratables = {\n id: HydratedId;\n };\n type FunctionalHydratables = {\n preventMove?: boolean;\n };\n type RequiredDatumHydratablesWithoutComponents = {\n label: string;\n };\n type OptionalDatumHydratablesWithoutComponents = {\n subtitle?: string;\n preventDrilldown?: boolean;\n };\n type DatumHydratablesWithoutComponents = PrimaryKeyHydratables &\n FunctionalHydratables &\n RequiredDatumHydratablesWithoutComponents &\n OptionalDatumHydratablesWithoutComponents;\n // =============================================================================\n // Hydratables section - datum level hydratables\n // Custom component-only\n // =============================================================================\n export type ComponentProps<D extends Record<string, unknown> = Record<string, unknown>> = {\n datum: Datum<D>;\n thisItemIsFocused: boolean;\n panelMetaInfo: PanelMetaInfo;\n datumInternalMeta: DatumInternalMeta;\n datumHydratables: DatumHydratablesWithoutComponents;\n tooltipHelpers?: ReturnType<typeof useHeadlessTooltip>;\n };\n // eslint-disable-next-line @typescript-eslint/ban-types\n type RequiredDatumHydratablesComponents = {};\n type OptionalDatumHydratablesComponents<D extends Record<string, unknown> = Record<string, unknown>> = {\n Icon?: React.ComponentType<ComponentProps<D>>;\n CustomRenderer?: React.ComponentType<ComponentProps<D>> | null;\n };\n // =============================================================================\n // Hydratables section - datum level hydratables\n // Finals\n // =============================================================================\n type RequiredDatumHydratables = RequiredDatumHydratablesWithoutComponents & RequiredDatumHydratablesComponents;\n type OptionalDatumHydratables<D extends Record<string, unknown> = Record<string, unknown>> =\n OptionalDatumHydratablesWithoutComponents & OptionalDatumHydratablesComponents<D>;\n export type DatumHydratables<D extends Record<string, unknown> = Record<string, unknown>> = PrimaryKeyHydratables &\n RequiredDatumHydratables &\n OptionalDatumHydratables<D>;\n\n // =============================================================================\n // Hydraters\n // =============================================================================\n export type PrimaryKeyHydraters<D extends Record<string, unknown> = Record<string, unknown>> =\n TypescriptHelpersT.Hydraters<PrimaryKeyHydratables, [Datum<D>]>;\n export type FunctionalHydraters<D extends Record<string, unknown> = Record<string, unknown>> =\n TypescriptHelpersT.Hydraters<FunctionalHydratables, [Datum<D>, Partial<PanelMetaInfo>]>;\n type HydratersMeta = { datumMeta: DatumInternalMeta; panelMetaInfo: PanelMetaInfo };\n type RequiredDatumHydraters<D extends Record<string, unknown> = Record<string, unknown>> =\n TypescriptHelpersT.Hydraters<RequiredDatumHydratables, [Datum<D>, HydratersMeta]>;\n type OptionalDatumHydraters<D extends Record<string, unknown> = Record<string, unknown>> =\n TypescriptHelpersT.Hydraters<OptionalDatumHydratables<D>, [Datum<D>, HydratersMeta]>;\n\n type DatumHydraters<D extends Record<string, unknown> = Record<string, unknown>> = PrimaryKeyHydraters<D> &\n FunctionalHydraters<D> &\n RequiredDatumHydraters<D> &\n OptionalDatumHydraters<D>;\n\n type RequiredPanelHydraters = TypescriptHelpersT.Hydraters<RequiredPanelHydratables, [PanelMetaInfo]>;\n type OptionalPanelHydraters = Partial<TypescriptHelpersT.Hydraters<OptionalPanelHydratables, [PanelMetaInfo]>>;\n type PanelHydraters = RequiredPanelHydraters & OptionalPanelHydraters;\n\n // =============================================================================\n // Datum & Internals structures\n // =============================================================================\n export type ConfiguredDatum<D extends Record<string, unknown> = Record<string, unknown>> = DatumInternalMeta & {\n original: Datum<D>;\n };\n export interface ItemMeta<D extends Record<string, unknown> = Record<string, unknown>> extends PanelMetaInfo {\n datum: Datum<D>;\n datumHydratables: DatumHydratables<D>;\n datumInternalMeta: DatumInternalMeta;\n datumRenderFlags: DatumRenderFlags;\n withDragNDrop: boolean;\n useSortableHelpers?: ReturnType<typeof useSortable>;\n }\n\n // =============================================================================\n // Slot argument types \u2014 per-slot getOwnerPropsArguments shapes\n // =============================================================================\n export type DragHandleArguments = {\n id: string;\n innerRef: React.RefObject<HTMLDivElement> | React.RefCallback<HTMLDivElement>;\n useSortableHelpers: ReturnType<typeof useSortable>;\n isDndActive: boolean;\n isDragging: boolean;\n disabled?: boolean;\n ariaLabelledby?: string;\n };\n\n export type ItemMidSectionArguments<D extends Record<string, unknown> = Record<string, unknown>> = ItemMeta<D> & {\n tooltipHelpers?: ComponentProps<D>['tooltipHelpers'];\n };\n\n // The to-source / to-destination icon slots render in two contexts (per-item action row and\n // bulk-action button). Both receive this single unified shape: the panel info is always present,\n // and the per-item extras (only available in the item-row context) are optional under extraMetaInfo.\n export type ItemActionIconArguments<D extends Record<string, unknown> = Record<string, unknown>> = {\n panelMetaInfo: PanelMetaInfo;\n extraMetaInfo?: { itemMeta?: ItemMeta<D> };\n };\n\n export type SlotFunctionArguments<D extends Record<string, unknown> = Record<string, unknown>> = {\n // Panel-level slots \u2014 receive PanelMetaInfo\n dsShuttlev2PanelWrapper: (args: PanelMetaInfo) => object;\n dsShuttlev2ListWrapper: (args: PanelMetaInfo) => object;\n dsShuttlev2HeaderSearchIcon: (args: PanelMetaInfo) => object;\n dsShuttlev2ListWrapperTop: (args: PanelMetaInfo) => object;\n dsShuttlev2AreaSearchWrapper: (args: PanelMetaInfo) => object;\n dsShuttlev2AreaSearchBar: (args: PanelMetaInfo) => object;\n dsShuttlev2AreaSelectionHeader: (args: PanelMetaInfo) => object;\n dsShuttlev2AreaSelectionHeaderCountLabel: (args: PanelMetaInfo) => object;\n dsShuttlev2AriaLivePanelCenter: (args: PanelMetaInfo) => object;\n dsShuttlev2ListWrapperMid: (args: PanelMetaInfo) => object;\n dsShuttlev2ItemsWrapper: (args: PanelMetaInfo) => object;\n dsShuttlev2MoveMultipleWrapper: (args: PanelMetaInfo) => object;\n dsShuttlev2MoveMultipleBtn: (args: PanelMetaInfo) => object;\n dsShuttlev2MoveMultipleLiveRegion: (args: PanelMetaInfo) => object;\n dsShuttlev2EmptyListWrapper: (args: PanelMetaInfo) => object;\n dsShuttlev2LoadingListWrapper: (args: PanelMetaInfo) => object;\n dsShuttlev2ListBottomLoadingMore: (args: PanelMetaInfo) => object;\n dsShuttlev2ListBottomLoadMoreBtn: (args: PanelMetaInfo) => object;\n dsShuttlev2ListWrapperBottom: (args: PanelMetaInfo) => object;\n // Item-level slots \u2014 receive ItemMeta\n dsShuttlev2ItemWrapper: (args: ItemMeta<D>) => object;\n dsShuttlev2ItemCheckbox: (args: ItemMeta<D>) => object;\n dsShuttlev2ItemSelection: (args: ItemMeta<D>) => object;\n dsShuttlev2ItemLabelWrapper: (args: ItemMeta<D>) => object;\n dsShuttlev2ItemActionsWrapper: (args: ItemMeta<D>) => object;\n dsShuttlev2ItemActionWrapper: (args: ItemMeta<D>) => object;\n dsShuttlev2ItemActionBtn: (args: ItemMeta<D>) => object;\n dsShuttlev2ItemActionBtnDrilldownIcon: (args: ItemMeta<D>) => object;\n // Item-level slots \u2014 receive ItemMeta & { tooltipHelpers? }\n dsShuttlev2ItemMidsectionWrapper: (args: ItemMidSectionArguments<D>) => object;\n dsShuttlev2ItemIconWrapper: (args: ItemMidSectionArguments<D>) => object;\n // Dual-context slots \u2014 rendered in both the item-action row and the bulk-action button;\n // both pass the same unified ItemActionIconArguments shape\n dsShuttlev2ItemActionBtnToSourceIcon: (args: ItemActionIconArguments<D>) => object;\n dsShuttlev2ItemActionBtnToDestinationIcon: (args: ItemActionIconArguments<D>) => object;\n // Drag-and-drop slots \u2014 receive DragHandleArguments\n dsShuttlev2DragAndDropHandleWrapper: (args: DragHandleArguments) => object;\n dsShuttlev2DragAndDropHandle: (args: DragHandleArguments) => object;\n // Root wrapper \u2014 no getOwnerPropsArguments passed\n dsShuttlev2Wrapper: () => object;\n };\n\n export type SlotProps<D extends Record<string, unknown> = Record<string, unknown>> = {\n [K in keyof SlotFunctionArguments<D>]?: object | SlotFunctionArguments<D>[K];\n };\n\n // =============================================================================\n // Callbacks\n // =============================================================================\n type OnDataChange<D extends Record<string, unknown> = Record<string, unknown>> = (\n newData: Datum<D>[],\n metainfo: {\n event: React.MouseEvent<HTMLButtonElement> | React.KeyboardEvent<HTMLButtonElement>;\n item?: Datum<D>;\n selectedItems?: Datum<D>[];\n },\n ) => void;\n\n type OnChangeEvent<T> = (\n items: T,\n metainfo: {\n event: React.MouseEvent<HTMLButtonElement> | React.KeyboardEvent<HTMLButtonElement>;\n },\n ) => void;\n\n type OnReorderEventMetadata<D extends Record<string, unknown> = Record<string, unknown>> = Omit<\n DnDKitTree.OnReorder<Datum<D>>,\n 'considerExpanding'\n >;\n type OnReorderEvent<D extends Record<string, unknown> = Record<string, unknown>> = (\n movedItem: Datum<D>,\n metadata: OnReorderEventMetadata<D>,\n ) => void;\n\n export type SelectionMap = Record<string, boolean>;\n type OnSelectionChange<D extends Record<string, unknown> = Record<string, unknown>> = (\n newSelection: SelectionMap,\n metainfo: {\n event:\n | Parameters<Required<DSButtonT.Props>['onClick']>[0]\n | Parameters<DSControlledCheckboxT.InternalProps['onChange']>[1]\n | React.MouseEvent<HTMLButtonElement | HTMLDivElement>\n | React.KeyboardEvent<HTMLDivElement>\n | React.ChangeEvent<HTMLInputElement>;\n item?: Datum<D>;\n },\n ) => void;\n\n type OnSelectionDrilldown<T> = (\n item: T,\n metainfo: { event: React.MouseEvent<HTMLButtonElement> | React.KeyboardEvent<HTMLButtonElement> },\n ) => void;\n\n type OnLoadMore = (e: Parameters<Required<DSButtonT.Props>['onClick']>[0]) => void;\n type OnFilterChange = (\n newfilter: string,\n metainfo: { event: React.ChangeEvent<HTMLInputElement> | React.MouseEvent<HTMLButtonElement> },\n ) => void;\n type OnSearchbarOpen = (\n newfilter: boolean,\n metainfo: { event: Parameters<Required<DSButtonT.Props>['onClick']>[0] },\n ) => void;\n\n export type SoftDeletedMap = Record<string, boolean>;\n type OnSoftDeletedChange<D extends Record<string, unknown> = Record<string, unknown>> = (\n newSoftDeleted: SoftDeletedMap,\n metainfo: {\n event:\n | Parameters<Required<DSButtonT.Props>['onClick']>[0]\n | Parameters<DSControlledCheckboxT.InternalProps['onChange']>[1]\n | React.MouseEvent<HTMLButtonElement | HTMLDivElement>\n | React.KeyboardEvent<HTMLDivElement>\n | React.ChangeEvent<HTMLInputElement>;\n item?: Datum<D>;\n },\n ) => void;\n // =============================================================================\n // Zustand Store\n // =============================================================================\n export type FocusRegion = (typeof REGIONS_FOCUSES)[keyof typeof REGIONS_FOCUSES];\n export type FocusItem = Omit<(typeof ITEMS_FOCUSES)[keyof typeof ITEMS_FOCUSES], 'GET_SPECIFIC_ITEM'> & string;\n export type FocusItemAction = (typeof ACTIONS_FOCUSES)[keyof typeof ACTIONS_FOCUSES];\n export type InternalAtoms = {\n focusRegion: FocusRegion;\n focusItem: FocusItem;\n focusItemAction: FocusItemAction;\n deferFocusUntilFirstRender: boolean;\n dropIndicatorPosition: DropIndicatorPositionValues;\n overId: string;\n dndDraggingItem: ConfiguredDatum | null;\n dndDraggingItemMeta: ItemMeta | null;\n lastActiveId: string;\n isDropValid: boolean;\n sourcePanelLastSelectedItem: string | null | undefined;\n destinationPanelLastSelectedItem: string | null | undefined;\n shuttleInternalId: string;\n };\n export type UseAutoCalculatedT = ReturnType<typeof useAutoCalculated>;\n export type Selectors = {\n getIsDragAndDropHappening: () => boolean;\n getPanelLastSelectedItem: (isDestinationPanel: boolean) => string | null | undefined;\n };\n export type Reducers = Record<string, never>;\n export type ShuttleInternalStore = ZustandT.InternalStore<InternalAtoms, Selectors, Reducers>;\n // =============================================================================\n // Final Props\n // =============================================================================\n export interface RequiredProps<D extends Record<string, unknown> = Record<string, unknown>>\n extends RequiredDatumHydraters<D>,\n PrimaryKeyHydraters<D> {\n sourceData: Datum<D>[];\n sourceSelectedItems: SelectionMap;\n onSourceSelectionChange: OnSelectionChange<D>;\n // The header component and its props are owned and typed by the consumer; we only render\n // whatever component they pass with whatever props they pass. We deliberately use `any` (not\n // Record<string, unknown>) so a consumer component with its own required prop shape is accepted \u2014\n // ComponentType<Record<string, unknown>> would reject it via parameter contravariance.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n SourceHeader: React.ComponentType<any>;\n onSourceDrilldown: OnSelectionDrilldown<Datum<D>>;\n\n destinationData: Datum<D>[];\n destinationSelectedItems: SelectionMap;\n onDestinationSelectionChange: OnSelectionChange<D>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n DestinationHeader: React.ComponentType<any>;\n onDestinationDrilldown: OnSelectionDrilldown<Datum<D>>;\n }\n\n export interface DefaultProps<D extends Record<string, unknown> = Record<string, unknown>>\n extends Required<FunctionalHydraters<D>> {\n // load-more and loaders\n sourceIsLoading: boolean;\n sourceWithLoadMore: boolean;\n sourceIsLoadingMore: boolean;\n onSourceLoadMore: OnLoadMore;\n destinationIsLoading: boolean;\n destinationWithLoadMore: boolean;\n destinationIsLoadingMore: boolean;\n onDestinationLoadMore: OnLoadMore;\n destinationNoOptionsMessage: string;\n sourceNoOptionsMessage: string;\n // switch side\n onSourceAdd: OnChangeEvent<Datum<D>[]>;\n onSourceRemove: OnChangeEvent<Datum<D>[]>;\n onDestinationAdd: OnChangeEvent<Datum<D>[]>;\n onDestinationRemove: OnChangeEvent<Datum<D>[]>;\n\n // dnd\n addDragAndDropFromSource: boolean;\n removeDragAndDropFromDestination: boolean;\n onSourceReorder: OnReorderEvent<D>;\n onDestinationReorder: OnReorderEvent<D>;\n\n // soft delete\n sourceSoftDeletedItems: SoftDeletedMap;\n onSourceSoftDelete: OnSoftDeletedChange<D>;\n destinationSoftDeletedItems: SoftDeletedMap;\n onDestinationSoftDelete: OnSoftDeletedChange<D>;\n }\n export interface OptionalProps<D extends Record<string, unknown> = Record<string, unknown>>\n extends OptionalDatumHydraters<D>,\n OptionalPanelHydraters,\n SlotProps<D> {\n sourceItemProps?: Record<string, unknown>;\n destinationItemProps?: Record<string, unknown>;\n sourceHeaderProps?: Record<string, unknown>;\n destinationHeaderProps?: Record<string, unknown>;\n // filtering\n sourceShowSearchbar?: boolean;\n destinationShowSearchbar?: boolean;\n onSourceOpenSearchbar?: OnSearchbarOpen;\n onDesinationOpenSearchbar?: OnSearchbarOpen;\n sourceFilterValue?: string;\n destinationFilterValue?: string;\n onSourceFilterChange?: OnFilterChange;\n onDestinationFilterChange?: OnFilterChange;\n\n moveButtonProps?: ({\n itemMeta,\n isDestinationPanel,\n }: {\n itemMeta: ItemMeta<D>;\n isDestinationPanel: boolean;\n }) => Omit<DSButtonV3T.Props, 'children'>;\n drillDownButtonProps?: ({\n itemMeta,\n isDestinationPanel,\n }: {\n itemMeta: ItemMeta<D>;\n isDestinationPanel: boolean;\n }) => Omit<DSButtonV3T.Props, 'children'>;\n\n checkboxSelectAllProps?: (metainfo: PanelMetaInfo) => DSControlledCheckboxT.Props;\n areaSearchBarProps?: (metaInfo: PanelMetaInfo) => DSInputTextT.Props;\n }\n\n export interface Props<D extends Record<string, unknown> = Record<string, unknown>>\n extends Partial<DefaultProps<D>>,\n OptionalProps<D>,\n Omit<\n GlobalAttributesT<HTMLButtonElement>,\n keyof DefaultProps<D> | keyof OptionalProps<D> | keyof RequiredProps<D>\n >,\n XstyledProps,\n RequiredProps<D> {}\n\n export interface InternalProps<D extends Record<string, unknown> = Record<string, unknown>>\n extends DefaultProps<D>,\n OptionalProps<D>,\n Omit<\n GlobalAttributesT<HTMLButtonElement>,\n keyof DefaultProps<D> | keyof OptionalProps<D> | keyof RequiredProps<D>\n >,\n XstyledProps,\n RequiredProps<D> {}\n}\n\nexport const defaultProps: DSShuttleV2T.DefaultProps = {\n addDragAndDropFromSource: false,\n removeDragAndDropFromDestination: false,\n destinationNoOptionsMessage: 'There are no items to display',\n sourceNoOptionsMessage: 'There are no items to display',\n sourceIsLoading: false,\n destinationIsLoading: false,\n sourceWithLoadMore: false,\n destinationWithLoadMore: false,\n sourceIsLoadingMore: false,\n destinationIsLoadingMore: false,\n onSourceLoadMore: () => {},\n onDestinationLoadMore: () => {},\n\n onSourceAdd: () => {},\n onDestinationAdd: () => {},\n onSourceRemove: () => {},\n onDestinationRemove: () => {},\n onSourceReorder: () => {},\n onDestinationReorder: () => {},\n\n sourceSoftDeletedItems: {},\n onSourceSoftDelete: () => {},\n destinationSoftDeletedItems: {},\n onDestinationSoftDelete: () => {},\n\n getPreventMove: () => false,\n};\n\nconst DSShuttleV2PropTypes: DSPropTypesSchema<DSShuttleV2T.Props> = {\n ...getPropsPerSlotPropTypes(DSShuttleV2Name, DSShuttleV2Slots),\n ...globalAttributesPropTypes,\n ...xstyledPropTypes,\n\n sourceData: PropTypes.arrayOf(PropTypes.object).description(\n 'An array of objects representing the items in the source list',\n ).isRequired,\n sourceSelectedItems: PropTypes.object.description('An object representing the selected items in the source list')\n .isRequired,\n onSourceSelectionChange: PropTypes.func.description('A function called when the selection in the source list changes')\n .isRequired,\n SourceHeader: PropTypes.func.description('The header component for the source list').isRequired,\n sourceHeaderProps: PropTypes.object.description('Props to be passed to the source header').defaultValue({}),\n onSourceDrilldown: PropTypes.func.description('A function called when an item in the source list is clicked')\n .isRequired,\n destinationData: PropTypes.arrayOf(PropTypes.object).description(\n 'An array of objects representing the items in the destination list',\n ).isRequired,\n destinationSelectedItems: PropTypes.object.description(\n 'An object representing the selected items in the destination list',\n ).isRequired,\n onDestinationSelectionChange: PropTypes.func.description(\n 'A function called when the selection in the destination list changes',\n ).isRequired,\n DestinationHeader: PropTypes.func.description('The header component for the destination list').isRequired,\n destinationHeaderProps: PropTypes.object.description('Props to be passed to the destination header').defaultValue({}),\n onDestinationDrilldown: PropTypes.func.description(\n 'A function called when an item in the destination list is clicked',\n ).isRequired,\n getId: PropTypes.func.description(\n 'A function that takes an item from the source/destination list and returns its unique identifier',\n ).isRequired,\n getLabel: PropTypes.func.description(\n 'A function that takes an item from the source/destination list and returns its display label',\n ).isRequired,\n sourceIsLoading: PropTypes.bool\n .description('A boolean indicating whether the source list is currently loading data')\n .defaultValue(false),\n destinationIsLoading: PropTypes.bool\n .description('A boolean indicating whether the destination list is currently loading data')\n .defaultValue(false),\n sourceWithLoadMore: PropTypes.bool\n .description('A boolean indicating whether the source list supports \"load more\" functionality')\n .defaultValue(false),\n destinationWithLoadMore: PropTypes.bool\n .description('A boolean indicating whether the destination list supports \"load more\" functionality')\n .defaultValue(false),\n sourceIsLoadingMore: PropTypes.bool\n .description('A boolean indicating whether the source list is currently loading more data')\n .defaultValue(false),\n destinationIsLoadingMore: PropTypes.bool\n .description('A boolean indicating whether the destination list is currently loading more data')\n .defaultValue(false),\n onSourceLoadMore: PropTypes.func\n .description('A function called when the \"load more\" button in the source list is clicked')\n .defaultValue(() => {}),\n onDestinationLoadMore: PropTypes.func\n .description('A function called when the \"load more\" button in the destination list is clicked')\n .defaultValue(() => {}),\n onSourceAdd: PropTypes.func\n .description('A function called when an item is added from the source list to the destination list')\n .defaultValue(() => {}),\n onDestinationAdd: PropTypes.func\n .description('A function called when an item is added from the destination list to the source list')\n .defaultValue(() => {}),\n onSourceRemove: PropTypes.func\n .description('A function called when an item is removed from the destination list')\n .defaultValue(() => {}),\n onDestinationRemove: PropTypes.func\n .description('Callback function to handle when an item is removed from the destination shuttle list. ')\n .defaultValue(() => {}),\n onSourceReorder: PropTypes.func\n .description('Callback function to handle when items are reordered in the source shuttle list.')\n .defaultValue(() => {}),\n onDestinationReorder: PropTypes.func\n .description('Callback function to handle when items are reordered in the destination shuttle list. ')\n .defaultValue(() => {}),\n sourceSoftDeletedItems: PropTypes.object\n .description(\n 'Object containing the soft deleted items in the source shuttle list, where the key is the item ID and the value is the deleted item.',\n )\n .defaultValue({}),\n onSourceSoftDelete: PropTypes.func\n .description('Callback function to handle when an item is soft deleted in the source shuttle list. ')\n .defaultValue(() => {}),\n destinationSoftDeletedItems: PropTypes.object\n .description(\n 'Object containing the soft deleted items in the destination shuttle list, where the key is the item ID and the value is the deleted item.',\n )\n .defaultValue({}),\n onDestinationSoftDelete: PropTypes.func\n .description('Callback function to handle when an item is soft deleted in the destination shuttle list.')\n .defaultValue(() => {}),\n getPreventMove: PropTypes.func\n .description('Function that determines whether a specific item can be moved to the destination shuttle list. ')\n .defaultValue(() => false),\n addDragAndDropFromSource: PropTypes.bool\n .description('Specifies whether items can be dragged from the source list and dropped into the destination list.')\n .defaultValue(false),\n removeDragAndDropFromDestination: PropTypes.bool\n .description('Specifies whether items can be removed from the destination list by dragging them out of the list.')\n .defaultValue(false),\n sourceItemProps: PropTypes.object\n .description('Specifies additional props to be applied to each item in the source list.')\n .defaultValue({}),\n destinationItemProps: PropTypes.object\n .description('Specifies additional props to be applied to each item in the destination list.')\n .defaultValue({}),\n sourceShowSearchbar: PropTypes.bool\n .description('Specifies whether the search bar should be shown in the source list.')\n .defaultValue(false),\n destinationShowSearchbar: PropTypes.bool\n .description('Specifies whether the search bar should be shown in the destination list.')\n .defaultValue(false),\n onSourceOpenSearchbar: PropTypes.func\n .description('Callback function that is called when the search bar in the source list is opened.')\n .defaultValue(() => {}),\n onDesinationOpenSearchbar: PropTypes.func\n .description('Callback function that is called when the search bar in the destination list is opened.')\n .defaultValue(() => {}),\n sourceFilterValue: PropTypes.string\n .description('Specifies the current value of the search filter in the source list.')\n .defaultValue(''),\n destinationFilterValue: PropTypes.string\n .description('Specifies the current value of the search filter in the destination list.')\n .defaultValue(''),\n onSourceFilterChange: PropTypes.func\n .description('Callback function that is called when the search filter in the source list is changed.')\n .defaultValue(() => {}),\n onDestinationFilterChange: PropTypes.func\n .description('Callback function that is called when the search filter in the destination list is changed.')\n .defaultValue(() => {}),\n getSubtitle: PropTypes.func\n .description('Callback function that returns the subtitle to be displayed for each item in the list.')\n .defaultValue(() => ''),\n getIcon: PropTypes.func\n .description('Callback function that returns the icon to be displayed for each item in the list.')\n .defaultValue(() => ''),\n getPreventDrilldown: PropTypes.func\n .description('Callback function that determines whether drilldown should be prevented for a particular item.')\n .defaultValue(() => false),\n getCustomRenderer: PropTypes.func\n .description('Callback function that returns a custom renderer for each item in the list.')\n .defaultValue(() => undefined),\n getBatchActionableButtonProps: PropTypes.func\n .description('Callback function that returns the props for the batch actionable button in the destination list.')\n .defaultValue(() => ({}))\n .signature(`(({ isDestionationPanel: boolean }) => ({ \"aria-label\": string }))`),\n ...getPropsPerDatatestIdPropTypes(DSShuttleV2DataTestIds),\n destinationNoOptionsMessage: PropTypes.string\n .description('Custome message to be display when no matches found after filtering in destination panel')\n .defaultValue('There are no items to display'),\n sourceNoOptionsMessage: PropTypes.string\n .description('Custome message to be display when no matches found after filtering in source panel')\n .defaultValue('There are no items to display'),\n checkboxSelectAllProps: PropTypes.func\n .description('Function that returns props for the select all checkbox in the source panel.')\n .defaultValue({}),\n moveButtonProps: PropTypes.func\n .description('Function that returns props for the move button.')\n .defaultValue(() => ({}))\n .signature(`(({ isDestionationPanel: boolean }) => ({ \"aria-label\": string }))`),\n drillDownButtonProps: PropTypes.func\n .description('Function that returns props for the drilldown button.')\n .defaultValue(() => ({}))\n .signature(`(({ isDestionationPanel: boolean }) => ({ \"aria-label\": string }))`),\n areaSearchBarProps: PropTypes.func\n .description('Function that returns props for the area search bar.')\n .defaultValue(() => ({})),\n};\n\nexport const DSShuttleV2PropTypesSchema = DSShuttleV2PropTypes as unknown as ValidationMap<DSShuttleV2T.Props>;\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable max-lines */\nimport { type DSButtonT, type DSButtonV3T } from '@elliemae/ds-button-v2';\nimport { type DnDKitTree, type useSortable } from '@elliemae/ds-drag-and-drop';\nimport { type DSControlledCheckboxT } from '@elliemae/ds-form-checkbox';\nimport { type DSInputTextT } from '@elliemae/ds-form-input-text';\nimport { type useHeadlessTooltip } from '@elliemae/ds-hooks-headless-tooltip';\nimport type { DSPropTypesSchema, GlobalAttributesT, ValidationMap, XstyledProps } from '@elliemae/ds-props-helpers';\nimport {\n PropTypes,\n getPropsPerDatatestIdPropTypes,\n getPropsPerSlotPropTypes,\n globalAttributesPropTypes,\n xstyledPropTypes,\n} from '@elliemae/ds-props-helpers';\nimport { type TypescriptHelpersT } from '@elliemae/ds-typescript-helpers';\nimport type { ZustandT } from '@elliemae/ds-zustand-helpers';\nimport type React from 'react';\nimport type { useAutoCalculated } from './config/useAutoCalculated/index.js';\nimport type { ACTIONS_FOCUSES, DropIndicatorPosition, ITEMS_FOCUSES, REGIONS_FOCUSES } from './constants/index.js';\nimport { DSShuttleV2DataTestIds, DSShuttleV2Name, DSShuttleV2Slots } from './constants/index.js';\n\nexport declare namespace DSShuttleV2T {\n export type Datum<D extends Record<string, unknown> = Record<string, unknown>> = D;\n export type PanelMetaInfo = { isDestinationPanel: boolean; hasMultipleSelection?: boolean; height?: number };\n type HydratedId = string;\n\n export type DatumInternalMeta = {\n isFirst: boolean;\n isLast: boolean;\n isSelected: boolean;\n softDeleted: boolean;\n localIndex: number;\n hydratedId: HydratedId;\n hydratedPreventMove: boolean;\n };\n export type DatumRenderFlags = {\n selectionPrevented: boolean;\n withActions: boolean;\n withMoveBtn: boolean;\n withDrilldownBtn: boolean;\n internallyDisabledMove: boolean;\n internallyDisabledDrilldown: boolean;\n };\n\n export type DropIndicatorPositionValues = TypescriptHelpersT.ObjectValues<typeof DropIndicatorPosition>;\n\n // =============================================================================\n // Hydratables section - panel level hydratables\n // =============================================================================\n type RequiredPanelHydratables = Record<string, never>;\n type OptionalPanelHydratables = {\n batchActionableButtonProps: Record<string, unknown>;\n };\n export type PanelHydratables = RequiredPanelHydratables & OptionalPanelHydratables;\n\n // =============================================================================\n // Hydratables section - datum level hydratables\n // shared usage between internal and custom component\n // =============================================================================\n export type PrimaryKeyHydratables = {\n id: HydratedId;\n };\n type FunctionalHydratables = {\n preventMove?: boolean;\n };\n type RequiredDatumHydratablesWithoutComponents = {\n label: string;\n };\n type OptionalDatumHydratablesWithoutComponents = {\n subtitle?: string;\n preventDrilldown?: boolean;\n };\n type DatumHydratablesWithoutComponents = PrimaryKeyHydratables &\n FunctionalHydratables &\n RequiredDatumHydratablesWithoutComponents &\n OptionalDatumHydratablesWithoutComponents;\n // =============================================================================\n // Hydratables section - datum level hydratables\n // Custom component-only\n // =============================================================================\n export type ComponentProps<D extends Record<string, unknown> = Record<string, unknown>> = {\n datum: Datum<D>;\n thisItemIsFocused: boolean;\n panelMetaInfo: PanelMetaInfo;\n datumInternalMeta: DatumInternalMeta;\n datumHydratables: DatumHydratablesWithoutComponents;\n tooltipHelpers?: ReturnType<typeof useHeadlessTooltip>;\n };\n // eslint-disable-next-line @typescript-eslint/ban-types\n type RequiredDatumHydratablesComponents = {};\n type OptionalDatumHydratablesComponents<D extends Record<string, unknown> = Record<string, unknown>> = {\n Icon?: React.ComponentType<ComponentProps<D>>;\n CustomRenderer?: React.ComponentType<ComponentProps<D>> | null;\n };\n // =============================================================================\n // Hydratables section - datum level hydratables\n // Finals\n // =============================================================================\n type RequiredDatumHydratables = RequiredDatumHydratablesWithoutComponents & RequiredDatumHydratablesComponents;\n type OptionalDatumHydratables<D extends Record<string, unknown> = Record<string, unknown>> =\n OptionalDatumHydratablesWithoutComponents & OptionalDatumHydratablesComponents<D>;\n export type DatumHydratables<D extends Record<string, unknown> = Record<string, unknown>> = PrimaryKeyHydratables &\n RequiredDatumHydratables &\n OptionalDatumHydratables<D>;\n\n // =============================================================================\n // Hydraters\n // =============================================================================\n export type PrimaryKeyHydraters<D extends Record<string, unknown> = Record<string, unknown>> =\n TypescriptHelpersT.Hydraters<PrimaryKeyHydratables, [Datum<D>]>;\n export type FunctionalHydraters<D extends Record<string, unknown> = Record<string, unknown>> =\n TypescriptHelpersT.Hydraters<FunctionalHydratables, [Datum<D>, Partial<PanelMetaInfo>]>;\n type HydratersMeta = { datumMeta: DatumInternalMeta; panelMetaInfo: PanelMetaInfo };\n type RequiredDatumHydraters<D extends Record<string, unknown> = Record<string, unknown>> =\n TypescriptHelpersT.Hydraters<RequiredDatumHydratables, [Datum<D>, HydratersMeta]>;\n type OptionalDatumHydraters<D extends Record<string, unknown> = Record<string, unknown>> =\n TypescriptHelpersT.Hydraters<OptionalDatumHydratables<D>, [Datum<D>, HydratersMeta]>;\n\n type DatumHydraters<D extends Record<string, unknown> = Record<string, unknown>> = PrimaryKeyHydraters<D> &\n FunctionalHydraters<D> &\n RequiredDatumHydraters<D> &\n OptionalDatumHydraters<D>;\n\n type RequiredPanelHydraters = TypescriptHelpersT.Hydraters<RequiredPanelHydratables, [PanelMetaInfo]>;\n type OptionalPanelHydraters = Partial<TypescriptHelpersT.Hydraters<OptionalPanelHydratables, [PanelMetaInfo]>>;\n type PanelHydraters = RequiredPanelHydraters & OptionalPanelHydraters;\n\n // =============================================================================\n // Datum & Internals structures\n // =============================================================================\n export type ConfiguredDatum<D extends Record<string, unknown> = Record<string, unknown>> = DatumInternalMeta & {\n original: Datum<D>;\n };\n export interface ItemMeta<D extends Record<string, unknown> = Record<string, unknown>> extends PanelMetaInfo {\n datum: Datum<D>;\n datumHydratables: DatumHydratables<D>;\n datumInternalMeta: DatumInternalMeta;\n datumRenderFlags: DatumRenderFlags;\n withDragNDrop: boolean;\n useSortableHelpers?: ReturnType<typeof useSortable>;\n }\n\n // =============================================================================\n // Slot argument types \u2014 per-slot getOwnerPropsArguments shapes\n // =============================================================================\n export type DragHandleArguments = {\n id: string;\n innerRef: React.RefObject<HTMLDivElement> | React.RefCallback<HTMLDivElement>;\n useSortableHelpers: ReturnType<typeof useSortable>;\n isDndActive: boolean;\n isDragging: boolean;\n disabled?: boolean;\n ariaLabelledby?: string;\n };\n\n export type ItemMidSectionArguments<D extends Record<string, unknown> = Record<string, unknown>> = ItemMeta<D> & {\n tooltipHelpers?: ComponentProps<D>['tooltipHelpers'];\n };\n\n // The to-source / to-destination icon slots render in two contexts (per-item action row and\n // bulk-action button). Both receive this single unified shape: the panel info is always present,\n // and the per-item extras (only available in the item-row context) are optional under extraMetaInfo.\n export type ItemActionIconArguments<D extends Record<string, unknown> = Record<string, unknown>> = {\n panelMetaInfo: PanelMetaInfo;\n extraMetaInfo?: { itemMeta?: ItemMeta<D> };\n };\n\n export type SlotFunctionArguments<D extends Record<string, unknown> = Record<string, unknown>> = {\n // Panel-level slots \u2014 receive PanelMetaInfo\n dsShuttlev2PanelWrapper: (args: PanelMetaInfo) => object;\n dsShuttlev2ListWrapper: (args: PanelMetaInfo) => object;\n dsShuttlev2HeaderSearchIcon: (args: PanelMetaInfo) => object;\n dsShuttlev2ListWrapperTop: (args: PanelMetaInfo) => object;\n dsShuttlev2AreaSearchWrapper: (args: PanelMetaInfo) => object;\n dsShuttlev2AreaSearchBar: (args: PanelMetaInfo) => object;\n dsShuttlev2AreaSelectionHeader: (args: PanelMetaInfo) => object;\n dsShuttlev2AreaSelectionHeaderCountLabel: (args: PanelMetaInfo) => object;\n dsShuttlev2AriaLivePanelCenter: (args: PanelMetaInfo) => object;\n dsShuttlev2ListWrapperMid: (args: PanelMetaInfo) => object;\n dsShuttlev2ItemsWrapper: (args: PanelMetaInfo) => object;\n dsShuttlev2MoveMultipleWrapper: (args: PanelMetaInfo) => object;\n dsShuttlev2MoveMultipleBtn: (args: PanelMetaInfo) => object;\n dsShuttlev2MoveMultipleLiveRegion: (args: PanelMetaInfo) => object;\n dsShuttlev2EmptyListWrapper: (args: PanelMetaInfo) => object;\n dsShuttlev2LoadingListWrapper: (args: PanelMetaInfo) => object;\n dsShuttlev2ListBottomLoadingMore: (args: PanelMetaInfo) => object;\n dsShuttlev2ListBottomLoadMoreBtn: (args: PanelMetaInfo) => object;\n dsShuttlev2ListWrapperBottom: (args: PanelMetaInfo) => object;\n // Item-level slots \u2014 receive ItemMeta\n dsShuttlev2ItemWrapper: (args: ItemMeta<D>) => object;\n dsShuttlev2ItemCheckbox: (args: ItemMeta<D>) => object;\n dsShuttlev2ItemSelection: (args: ItemMeta<D>) => object;\n dsShuttlev2ItemSelectionCheckboxUi: (args: ItemMeta<D>) => object;\n dsShuttlev2ItemLabelWrapper: (args: ItemMeta<D>) => object;\n dsShuttlev2ItemActionsWrapper: (args: ItemMeta<D>) => object;\n dsShuttlev2ItemActionWrapper: (args: ItemMeta<D>) => object;\n dsShuttlev2ItemActionBtn: (args: ItemMeta<D>) => object;\n dsShuttlev2ItemActionBtnDrilldownIcon: (args: ItemMeta<D>) => object;\n // Item-level slots \u2014 receive ItemMeta & { tooltipHelpers? }\n dsShuttlev2ItemMidsectionWrapper: (args: ItemMidSectionArguments<D>) => object;\n dsShuttlev2ItemIconWrapper: (args: ItemMidSectionArguments<D>) => object;\n // Dual-context slots \u2014 rendered in both the item-action row and the bulk-action button;\n // both pass the same unified ItemActionIconArguments shape\n dsShuttlev2ItemActionBtnToSourceIcon: (args: ItemActionIconArguments<D>) => object;\n dsShuttlev2ItemActionBtnToDestinationIcon: (args: ItemActionIconArguments<D>) => object;\n // Drag-and-drop slots \u2014 receive DragHandleArguments\n dsShuttlev2DragAndDropHandleWrapper: (args: DragHandleArguments) => object;\n dsShuttlev2DragAndDropHandle: (args: DragHandleArguments) => object;\n // Root wrapper \u2014 no getOwnerPropsArguments passed\n dsShuttlev2Wrapper: () => object;\n };\n\n export type SlotProps<D extends Record<string, unknown> = Record<string, unknown>> = {\n [K in keyof SlotFunctionArguments<D>]?: object | SlotFunctionArguments<D>[K];\n };\n\n // =============================================================================\n // Callbacks\n // =============================================================================\n type OnDataChange<D extends Record<string, unknown> = Record<string, unknown>> = (\n newData: Datum<D>[],\n metainfo: {\n event: React.MouseEvent<HTMLButtonElement> | React.KeyboardEvent<HTMLButtonElement>;\n item?: Datum<D>;\n selectedItems?: Datum<D>[];\n },\n ) => void;\n\n type OnChangeEvent<T> = (\n items: T,\n metainfo: {\n event: React.MouseEvent<HTMLButtonElement> | React.KeyboardEvent<HTMLButtonElement>;\n },\n ) => void;\n\n type OnReorderEventMetadata<D extends Record<string, unknown> = Record<string, unknown>> = Omit<\n DnDKitTree.OnReorder<Datum<D>>,\n 'considerExpanding'\n >;\n type OnReorderEvent<D extends Record<string, unknown> = Record<string, unknown>> = (\n movedItem: Datum<D>,\n metadata: OnReorderEventMetadata<D>,\n ) => void;\n\n export type SelectionMap = Record<string, boolean>;\n type OnSelectionChange<D extends Record<string, unknown> = Record<string, unknown>> = (\n newSelection: SelectionMap,\n metainfo: {\n event:\n | Parameters<Required<DSButtonT.Props>['onClick']>[0]\n | Parameters<DSControlledCheckboxT.InternalProps['onChange']>[1]\n | React.MouseEvent<HTMLButtonElement | HTMLDivElement>\n | React.KeyboardEvent<HTMLDivElement>\n | React.ChangeEvent<HTMLInputElement>;\n item?: Datum<D>;\n },\n ) => void;\n\n type OnSelectionDrilldown<T> = (\n item: T,\n metainfo: { event: React.MouseEvent<HTMLButtonElement> | React.KeyboardEvent<HTMLButtonElement> },\n ) => void;\n\n type OnLoadMore = (e: Parameters<Required<DSButtonT.Props>['onClick']>[0]) => void;\n type OnFilterChange = (\n newfilter: string,\n metainfo: { event: React.ChangeEvent<HTMLInputElement> | React.MouseEvent<HTMLButtonElement> },\n ) => void;\n type OnSearchbarOpen = (\n newfilter: boolean,\n metainfo: { event: Parameters<Required<DSButtonT.Props>['onClick']>[0] },\n ) => void;\n\n export type SoftDeletedMap = Record<string, boolean>;\n type OnSoftDeletedChange<D extends Record<string, unknown> = Record<string, unknown>> = (\n newSoftDeleted: SoftDeletedMap,\n metainfo: {\n event:\n | Parameters<Required<DSButtonT.Props>['onClick']>[0]\n | Parameters<DSControlledCheckboxT.InternalProps['onChange']>[1]\n | React.MouseEvent<HTMLButtonElement | HTMLDivElement>\n | React.KeyboardEvent<HTMLDivElement>\n | React.ChangeEvent<HTMLInputElement>;\n item?: Datum<D>;\n },\n ) => void;\n // =============================================================================\n // Zustand Store\n // =============================================================================\n export type FocusRegion = (typeof REGIONS_FOCUSES)[keyof typeof REGIONS_FOCUSES];\n export type FocusItem = Omit<(typeof ITEMS_FOCUSES)[keyof typeof ITEMS_FOCUSES], 'GET_SPECIFIC_ITEM'> & string;\n export type FocusItemAction = (typeof ACTIONS_FOCUSES)[keyof typeof ACTIONS_FOCUSES];\n export type InternalAtoms = {\n focusRegion: FocusRegion;\n focusItem: FocusItem;\n focusItemAction: FocusItemAction;\n deferFocusUntilFirstRender: boolean;\n dropIndicatorPosition: DropIndicatorPositionValues;\n overId: string;\n dndDraggingItem: ConfiguredDatum | null;\n dndDraggingItemMeta: ItemMeta | null;\n lastActiveId: string;\n isDropValid: boolean;\n sourcePanelLastSelectedItem: string | null | undefined;\n destinationPanelLastSelectedItem: string | null | undefined;\n shuttleInternalId: string;\n };\n export type UseAutoCalculatedT = ReturnType<typeof useAutoCalculated>;\n export type Selectors = {\n getIsDragAndDropHappening: () => boolean;\n getPanelLastSelectedItem: (isDestinationPanel: boolean) => string | null | undefined;\n };\n export type Reducers = Record<string, never>;\n export type ShuttleInternalStore = ZustandT.InternalStore<InternalAtoms, Selectors, Reducers>;\n // =============================================================================\n // Final Props\n // =============================================================================\n export interface RequiredProps<D extends Record<string, unknown> = Record<string, unknown>>\n extends RequiredDatumHydraters<D>,\n PrimaryKeyHydraters<D> {\n sourceData: Datum<D>[];\n sourceSelectedItems: SelectionMap;\n onSourceSelectionChange: OnSelectionChange<D>;\n // The header component and its props are owned and typed by the consumer; we only render\n // whatever component they pass with whatever props they pass. We deliberately use `any` (not\n // Record<string, unknown>) so a consumer component with its own required prop shape is accepted \u2014\n // ComponentType<Record<string, unknown>> would reject it via parameter contravariance.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n SourceHeader: React.ComponentType<any>;\n onSourceDrilldown: OnSelectionDrilldown<Datum<D>>;\n\n destinationData: Datum<D>[];\n destinationSelectedItems: SelectionMap;\n onDestinationSelectionChange: OnSelectionChange<D>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n DestinationHeader: React.ComponentType<any>;\n onDestinationDrilldown: OnSelectionDrilldown<Datum<D>>;\n }\n\n export interface DefaultProps<D extends Record<string, unknown> = Record<string, unknown>>\n extends Required<FunctionalHydraters<D>> {\n // additional flag to condition how the selection UI renders (checkbox vs highlight only)\n // \u2014 can be used by the consumer to decide whether to use the ItemSelectionUI or not\n // incremental change for\n // PUI-18536 - [Dev][ShuttleV2] Non-color indicators needed for item states \u2014 WCAG 1.4.1 Use of Color\n explicitSelectionUI: boolean;\n // load-more and loaders\n sourceIsLoading: boolean;\n sourceWithLoadMore: boolean;\n sourceIsLoadingMore: boolean;\n onSourceLoadMore: OnLoadMore;\n destinationIsLoading: boolean;\n destinationWithLoadMore: boolean;\n destinationIsLoadingMore: boolean;\n onDestinationLoadMore: OnLoadMore;\n destinationNoOptionsMessage: string;\n sourceNoOptionsMessage: string;\n // switch side\n onSourceAdd: OnChangeEvent<Datum<D>[]>;\n onSourceRemove: OnChangeEvent<Datum<D>[]>;\n onDestinationAdd: OnChangeEvent<Datum<D>[]>;\n onDestinationRemove: OnChangeEvent<Datum<D>[]>;\n\n // dnd\n addDragAndDropFromSource: boolean;\n removeDragAndDropFromDestination: boolean;\n onSourceReorder: OnReorderEvent<D>;\n onDestinationReorder: OnReorderEvent<D>;\n\n // soft delete\n sourceSoftDeletedItems: SoftDeletedMap;\n onSourceSoftDelete: OnSoftDeletedChange<D>;\n destinationSoftDeletedItems: SoftDeletedMap;\n onDestinationSoftDelete: OnSoftDeletedChange<D>;\n }\n export interface OptionalProps<D extends Record<string, unknown> = Record<string, unknown>>\n extends OptionalDatumHydraters<D>,\n OptionalPanelHydraters,\n SlotProps<D> {\n sourceItemProps?: Record<string, unknown>;\n destinationItemProps?: Record<string, unknown>;\n sourceHeaderProps?: Record<string, unknown>;\n destinationHeaderProps?: Record<string, unknown>;\n // filtering\n sourceShowSearchbar?: boolean;\n destinationShowSearchbar?: boolean;\n onSourceOpenSearchbar?: OnSearchbarOpen;\n onDesinationOpenSearchbar?: OnSearchbarOpen;\n sourceFilterValue?: string;\n destinationFilterValue?: string;\n onSourceFilterChange?: OnFilterChange;\n onDestinationFilterChange?: OnFilterChange;\n\n moveButtonProps?: ({\n itemMeta,\n isDestinationPanel,\n }: {\n itemMeta: ItemMeta<D>;\n isDestinationPanel: boolean;\n }) => Omit<DSButtonV3T.Props, 'children'>;\n drillDownButtonProps?: ({\n itemMeta,\n isDestinationPanel,\n }: {\n itemMeta: ItemMeta<D>;\n isDestinationPanel: boolean;\n }) => Omit<DSButtonV3T.Props, 'children'>;\n\n checkboxSelectAllProps?: (metainfo: PanelMetaInfo) => DSControlledCheckboxT.Props;\n areaSearchBarProps?: (metaInfo: PanelMetaInfo) => DSInputTextT.Props;\n }\n\n export interface Props<D extends Record<string, unknown> = Record<string, unknown>>\n extends Partial<DefaultProps<D>>,\n OptionalProps<D>,\n Omit<\n GlobalAttributesT<HTMLButtonElement>,\n keyof DefaultProps<D> | keyof OptionalProps<D> | keyof RequiredProps<D>\n >,\n XstyledProps,\n RequiredProps<D> {}\n\n export interface InternalProps<D extends Record<string, unknown> = Record<string, unknown>>\n extends DefaultProps<D>,\n OptionalProps<D>,\n Omit<\n GlobalAttributesT<HTMLButtonElement>,\n keyof DefaultProps<D> | keyof OptionalProps<D> | keyof RequiredProps<D>\n >,\n XstyledProps,\n RequiredProps<D> {}\n}\n\nexport const defaultProps: DSShuttleV2T.DefaultProps = {\n // we start as false to avoid breaking changes, eventually converge to true for better accessibility\n explicitSelectionUI: false,\n\n addDragAndDropFromSource: false,\n removeDragAndDropFromDestination: false,\n destinationNoOptionsMessage: 'There are no items to display',\n sourceNoOptionsMessage: 'There are no items to display',\n sourceIsLoading: false,\n destinationIsLoading: false,\n sourceWithLoadMore: false,\n destinationWithLoadMore: false,\n sourceIsLoadingMore: false,\n destinationIsLoadingMore: false,\n onSourceLoadMore: () => {},\n onDestinationLoadMore: () => {},\n\n onSourceAdd: () => {},\n onDestinationAdd: () => {},\n onSourceRemove: () => {},\n onDestinationRemove: () => {},\n onSourceReorder: () => {},\n onDestinationReorder: () => {},\n\n sourceSoftDeletedItems: {},\n onSourceSoftDelete: () => {},\n destinationSoftDeletedItems: {},\n onDestinationSoftDelete: () => {},\n getPreventMove: () => false,\n};\n\nconst DSShuttleV2PropTypes: DSPropTypesSchema<DSShuttleV2T.Props> = {\n ...getPropsPerSlotPropTypes(DSShuttleV2Name, DSShuttleV2Slots),\n ...globalAttributesPropTypes,\n ...xstyledPropTypes,\n\n explicitSelectionUI: PropTypes.bool\n .description(\n 'A boolean indicating whether to use WCAG-compliant selection indicators (checkboxes) instead of color-only indicators for selected items, must be true for the component to meet WCAG 1.4.1 Use of Color guidelines',\n )\n .defaultValue(false),\n\n sourceData: PropTypes.arrayOf(PropTypes.object).description(\n 'An array of objects representing the items in the source list',\n ).isRequired,\n sourceSelectedItems: PropTypes.object.description('An object representing the selected items in the source list')\n .isRequired,\n onSourceSelectionChange: PropTypes.func.description('A function called when the selection in the source list changes')\n .isRequired,\n SourceHeader: PropTypes.elementType.description('The header component for the source list').isRequired,\n sourceHeaderProps: PropTypes.object.description('Props to be passed to the source header').defaultValue({}),\n onSourceDrilldown: PropTypes.func.description('A function called when an item in the source list is clicked')\n .isRequired,\n destinationData: PropTypes.arrayOf(PropTypes.object).description(\n 'An array of objects representing the items in the destination list',\n ).isRequired,\n destinationSelectedItems: PropTypes.object.description(\n 'An object representing the selected items in the destination list',\n ).isRequired,\n onDestinationSelectionChange: PropTypes.func.description(\n 'A function called when the selection in the destination list changes',\n ).isRequired,\n DestinationHeader: PropTypes.elementType.description('The header component for the destination list').isRequired,\n destinationHeaderProps: PropTypes.object.description('Props to be passed to the destination header').defaultValue({}),\n onDestinationDrilldown: PropTypes.func.description(\n 'A function called when an item in the destination list is clicked',\n ).isRequired,\n getId: PropTypes.func.description(\n 'A function that takes an item from the source/destination list and returns its unique identifier',\n ).isRequired,\n getLabel: PropTypes.func.description(\n 'A function that takes an item from the source/destination list and returns its display label',\n ).isRequired,\n sourceIsLoading: PropTypes.bool\n .description('A boolean indicating whether the source list is currently loading data')\n .defaultValue(false),\n destinationIsLoading: PropTypes.bool\n .description('A boolean indicating whether the destination list is currently loading data')\n .defaultValue(false),\n sourceWithLoadMore: PropTypes.bool\n .description('A boolean indicating whether the source list supports \"load more\" functionality')\n .defaultValue(false),\n destinationWithLoadMore: PropTypes.bool\n .description('A boolean indicating whether the destination list supports \"load more\" functionality')\n .defaultValue(false),\n sourceIsLoadingMore: PropTypes.bool\n .description('A boolean indicating whether the source list is currently loading more data')\n .defaultValue(false),\n destinationIsLoadingMore: PropTypes.bool\n .description('A boolean indicating whether the destination list is currently loading more data')\n .defaultValue(false),\n onSourceLoadMore: PropTypes.func\n .description('A function called when the \"load more\" button in the source list is clicked')\n .defaultValue(() => {}),\n onDestinationLoadMore: PropTypes.func\n .description('A function called when the \"load more\" button in the destination list is clicked')\n .defaultValue(() => {}),\n onSourceAdd: PropTypes.func\n .description('A function called when an item is added from the source list to the destination list')\n .defaultValue(() => {}),\n onDestinationAdd: PropTypes.func\n .description('A function called when an item is added from the destination list to the source list')\n .defaultValue(() => {}),\n onSourceRemove: PropTypes.func\n .description('A function called when an item is removed from the destination list')\n .defaultValue(() => {}),\n onDestinationRemove: PropTypes.func\n .description('Callback function to handle when an item is removed from the destination shuttle list. ')\n .defaultValue(() => {}),\n onSourceReorder: PropTypes.func\n .description('Callback function to handle when items are reordered in the source shuttle list.')\n .defaultValue(() => {}),\n onDestinationReorder: PropTypes.func\n .description('Callback function to handle when items are reordered in the destination shuttle list. ')\n .defaultValue(() => {}),\n sourceSoftDeletedItems: PropTypes.object\n .description(\n 'Object containing the soft deleted items in the source shuttle list, where the key is the item ID and the value is the deleted item.',\n )\n .defaultValue({}),\n onSourceSoftDelete: PropTypes.func\n .description('Callback function to handle when an item is soft deleted in the source shuttle list. ')\n .defaultValue(() => {}),\n destinationSoftDeletedItems: PropTypes.object\n .description(\n 'Object containing the soft deleted items in the destination shuttle list, where the key is the item ID and the value is the deleted item.',\n )\n .defaultValue({}),\n onDestinationSoftDelete: PropTypes.func\n .description('Callback function to handle when an item is soft deleted in the destination shuttle list.')\n .defaultValue(() => {}),\n getPreventMove: PropTypes.func\n .description('Function that determines whether a specific item can be moved to the destination shuttle list. ')\n .defaultValue(() => false),\n addDragAndDropFromSource: PropTypes.bool\n .description('Specifies whether items can be dragged from the source list and dropped into the destination list.')\n .defaultValue(false),\n removeDragAndDropFromDestination: PropTypes.bool\n .description('Specifies whether items can be removed from the destination list by dragging them out of the list.')\n .defaultValue(false),\n sourceItemProps: PropTypes.object\n .description('Specifies additional props to be applied to each item in the source list.')\n .defaultValue({}),\n destinationItemProps: PropTypes.object\n .description('Specifies additional props to be applied to each item in the destination list.')\n .defaultValue({}),\n sourceShowSearchbar: PropTypes.bool\n .description('Specifies whether the search bar should be shown in the source list.')\n .defaultValue(false),\n destinationShowSearchbar: PropTypes.bool\n .description('Specifies whether the search bar should be shown in the destination list.')\n .defaultValue(false),\n onSourceOpenSearchbar: PropTypes.func\n .description('Callback function that is called when the search bar in the source list is opened.')\n .defaultValue(() => {}),\n onDesinationOpenSearchbar: PropTypes.func\n .description('Callback function that is called when the search bar in the destination list is opened.')\n .defaultValue(() => {}),\n sourceFilterValue: PropTypes.string\n .description('Specifies the current value of the search filter in the source list.')\n .defaultValue(''),\n destinationFilterValue: PropTypes.string\n .description('Specifies the current value of the search filter in the destination list.')\n .defaultValue(''),\n onSourceFilterChange: PropTypes.func\n .description('Callback function that is called when the search filter in the source list is changed.')\n .defaultValue(() => {}),\n onDestinationFilterChange: PropTypes.func\n .description('Callback function that is called when the search filter in the destination list is changed.')\n .defaultValue(() => {}),\n getSubtitle: PropTypes.func\n .description('Callback function that returns the subtitle to be displayed for each item in the list.')\n .defaultValue(() => ''),\n getIcon: PropTypes.func\n .description('Callback function that returns the icon to be displayed for each item in the list.')\n .defaultValue(() => ''),\n getPreventDrilldown: PropTypes.func\n .description('Callback function that determines whether drilldown should be prevented for a particular item.')\n .defaultValue(() => false),\n getCustomRenderer: PropTypes.func\n .description('Callback function that returns a custom renderer for each item in the list.')\n .defaultValue(() => undefined),\n getBatchActionableButtonProps: PropTypes.func\n .description('Callback function that returns the props for the batch actionable button in the destination list.')\n .defaultValue(() => ({}))\n .signature(`(({ isDestionationPanel: boolean }) => ({ \"aria-label\": string }))`),\n ...getPropsPerDatatestIdPropTypes(DSShuttleV2DataTestIds),\n destinationNoOptionsMessage: PropTypes.string\n .description('Custome message to be display when no matches found after filtering in destination panel')\n .defaultValue('There are no items to display'),\n sourceNoOptionsMessage: PropTypes.string\n .description('Custome message to be display when no matches found after filtering in source panel')\n .defaultValue('There are no items to display'),\n checkboxSelectAllProps: PropTypes.func\n .description('Function that returns props for the select all checkbox in the source panel.')\n .defaultValue({}),\n moveButtonProps: PropTypes.func\n .description('Function that returns props for the move button.')\n .defaultValue(() => ({}))\n .signature(`(({ isDestionationPanel: boolean }) => ({ \"aria-label\": string }))`),\n drillDownButtonProps: PropTypes.func\n .description('Function that returns props for the drilldown button.')\n .defaultValue(() => ({}))\n .signature(`(({ isDestionationPanel: boolean }) => ({ \"aria-label\": string }))`),\n areaSearchBarProps: PropTypes.func\n .description('Function that returns props for the area search bar.')\n .defaultValue(() => ({})),\n};\n\nexport const DSShuttleV2PropTypesSchema = DSShuttleV2PropTypes as unknown as ValidationMap<DSShuttleV2T.Props>;\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -136,6 +136,7 @@ const SlotPropsAsFunctions = {
136
136
  dsShuttlev2ItemWrapper: itemMetaProbe,
137
137
  dsShuttlev2ItemCheckbox: itemMetaProbe,
138
138
  dsShuttlev2ItemSelection: itemMetaProbe,
139
+ dsShuttlev2ItemSelectionCheckboxUi: itemMetaProbe,
139
140
  dsShuttlev2ItemLabelWrapper: itemMetaProbe,
140
141
  dsShuttlev2ItemActionsWrapper: itemMetaProbe,
141
142
  dsShuttlev2ItemActionWrapper: itemMetaProbe,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../src/typescript-testing/slot-props.ts"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable @typescript-eslint/naming-convention */\n/* eslint-disable no-underscore-dangle */\n/* eslint-disable @typescript-eslint/no-unused-vars, no-unused-vars */\n\nimport type { TypescriptHelpersT } from '@elliemae/ds-typescript-helpers';\nimport type { DSShuttleV2Name, DSShuttleV2Slots } from '../constants/index.js';\nimport type { DSShuttleV2T } from '../react-desc-prop-types.js';\n\nconst SlotPropsAsObj: Partial<DSShuttleV2T.Props> = {\n // Panel-level\n dsShuttlev2PanelWrapper: { 'aria-label': 'just a typescript test' },\n dsShuttlev2ListWrapper: { 'aria-label': 'just a typescript test' },\n dsShuttlev2HeaderSearchIcon: { 'aria-label': 'just a typescript test' },\n dsShuttlev2ListWrapperTop: { 'aria-label': 'just a typescript test' },\n dsShuttlev2AreaSearchWrapper: { 'aria-label': 'just a typescript test' },\n dsShuttlev2AreaSearchBar: { 'aria-label': 'just a typescript test' },\n dsShuttlev2AreaSelectionHeader: { 'aria-label': 'just a typescript test' },\n dsShuttlev2AreaSelectionHeaderCountLabel: { 'aria-label': 'just a typescript test' },\n dsShuttlev2AriaLivePanelCenter: { 'aria-label': 'just a typescript test' },\n dsShuttlev2ListWrapperMid: { 'aria-label': 'just a typescript test' },\n dsShuttlev2ItemsWrapper: { 'aria-label': 'just a typescript test' },\n dsShuttlev2MoveMultipleWrapper: { 'aria-label': 'just a typescript test' },\n dsShuttlev2MoveMultipleBtn: { 'aria-label': 'just a typescript test' },\n dsShuttlev2MoveMultipleLiveRegion: { 'aria-label': 'just a typescript test' },\n dsShuttlev2EmptyListWrapper: { 'aria-label': 'just a typescript test' },\n dsShuttlev2LoadingListWrapper: { 'aria-label': 'just a typescript test' },\n dsShuttlev2ListBottomLoadingMore: { 'aria-label': 'just a typescript test' },\n dsShuttlev2ListBottomLoadMoreBtn: { 'aria-label': 'just a typescript test' },\n dsShuttlev2ListWrapperBottom: { 'aria-label': 'just a typescript test' },\n // Item-level\n dsShuttlev2ItemWrapper: { 'aria-label': 'just a typescript test' },\n dsShuttlev2ItemCheckbox: { 'aria-label': 'just a typescript test' },\n dsShuttlev2ItemSelection: { 'aria-label': 'just a typescript test' },\n dsShuttlev2ItemLabelWrapper: { 'aria-label': 'just a typescript test' },\n dsShuttlev2ItemActionsWrapper: { 'aria-label': 'just a typescript test' },\n dsShuttlev2ItemActionWrapper: { 'aria-label': 'just a typescript test' },\n dsShuttlev2ItemActionBtn: { 'aria-label': 'just a typescript test' },\n dsShuttlev2ItemActionBtnDrilldownIcon: { 'aria-label': 'just a typescript test' },\n // Item-level with tooltipHelpers\n dsShuttlev2ItemMidsectionWrapper: { 'aria-label': 'just a typescript test' },\n dsShuttlev2ItemIconWrapper: { 'aria-label': 'just a typescript test' },\n // Dual-context\n dsShuttlev2ItemActionBtnToSourceIcon: { 'aria-label': 'just a typescript test' },\n dsShuttlev2ItemActionBtnToDestinationIcon: { 'aria-label': 'just a typescript test' },\n // Drag-and-drop\n dsShuttlev2DragAndDropHandleWrapper: { 'aria-label': 'just a typescript test' },\n dsShuttlev2DragAndDropHandle: { 'aria-label': 'just a typescript test' },\n // Root wrapper\n dsShuttlev2Wrapper: { 'aria-label': 'just a typescript test' },\n};\n\n// Probes: each fully deconstructs its argument interface and assigns every field to a const of the\n// exact expected type. This makes the test shield against ANY change to the argument shape \u2014 a\n// removed/renamed field breaks the destructure; a retyped field breaks the typed assignment.\nconst testReturn = { 'aria-label': 'just a typescript test' };\n\nconst panelMetaProbe = (args: DSShuttleV2T.PanelMetaInfo): object => {\n const { isDestinationPanel, hasMultipleSelection, height } = args;\n const _isDestinationPanel: boolean = isDestinationPanel;\n const _hasMultipleSelection: boolean | undefined = hasMultipleSelection;\n const _height: number | undefined = height;\n return testReturn;\n};\n\nconst itemMetaProbe = (args: DSShuttleV2T.ItemMeta): object => {\n const {\n isDestinationPanel,\n hasMultipleSelection,\n height,\n datum,\n datumHydratables,\n datumInternalMeta,\n datumRenderFlags,\n withDragNDrop,\n useSortableHelpers,\n } = args;\n const _isDestinationPanel: boolean = isDestinationPanel;\n const _hasMultipleSelection: boolean | undefined = hasMultipleSelection;\n const _height: number | undefined = height;\n const _datum: DSShuttleV2T.Datum = datum;\n const _datumHydratables: DSShuttleV2T.DatumHydratables = datumHydratables;\n const _datumInternalMeta: DSShuttleV2T.DatumInternalMeta = datumInternalMeta;\n const _datumRenderFlags: DSShuttleV2T.DatumRenderFlags = datumRenderFlags;\n const _withDragNDrop: boolean = withDragNDrop;\n const _useSortableHelpers: DSShuttleV2T.ItemMeta['useSortableHelpers'] = useSortableHelpers;\n return testReturn;\n};\n\nconst itemMidSectionProbe = (args: DSShuttleV2T.ItemMidSectionArguments): object => {\n const {\n datum,\n datumHydratables,\n datumInternalMeta,\n datumRenderFlags,\n withDragNDrop,\n useSortableHelpers,\n isDestinationPanel,\n tooltipHelpers,\n } = args;\n const _datum: DSShuttleV2T.Datum = datum;\n const _datumHydratables: DSShuttleV2T.DatumHydratables = datumHydratables;\n const _datumInternalMeta: DSShuttleV2T.DatumInternalMeta = datumInternalMeta;\n const _datumRenderFlags: DSShuttleV2T.DatumRenderFlags = datumRenderFlags;\n const _withDragNDrop: boolean = withDragNDrop;\n const _useSortableHelpers: DSShuttleV2T.ItemMeta['useSortableHelpers'] = useSortableHelpers;\n const _isDestinationPanel: boolean = isDestinationPanel;\n const _tooltipHelpers: DSShuttleV2T.ComponentProps['tooltipHelpers'] = tooltipHelpers;\n return testReturn;\n};\n\nconst itemActionIconProbe = (args: DSShuttleV2T.ItemActionIconArguments): object => {\n const { panelMetaInfo, extraMetaInfo } = args;\n const _panelMetaInfo: DSShuttleV2T.PanelMetaInfo = panelMetaInfo;\n const _extraMetaInfo: { itemMeta?: DSShuttleV2T.ItemMeta } | undefined = extraMetaInfo;\n const _itemMeta: DSShuttleV2T.ItemMeta | undefined = extraMetaInfo?.itemMeta;\n return testReturn;\n};\n\nconst dragHandleProbe = (args: DSShuttleV2T.DragHandleArguments): object => {\n const { id, innerRef, useSortableHelpers, isDndActive, isDragging, disabled, ariaLabelledby } = args;\n const _id: string = id;\n const _innerRef: DSShuttleV2T.DragHandleArguments['innerRef'] = innerRef;\n const _useSortableHelpers: DSShuttleV2T.DragHandleArguments['useSortableHelpers'] = useSortableHelpers;\n const _isDndActive: boolean = isDndActive;\n const _isDragging: boolean = isDragging;\n const _disabled: boolean | undefined = disabled;\n const _ariaLabelledby: string | undefined = ariaLabelledby;\n return testReturn;\n};\n\nconst SlotPropsAsFunctions: DSShuttleV2T.SlotFunctionArguments = {\n // Panel-level \u2014 receive PanelMetaInfo\n dsShuttlev2PanelWrapper: panelMetaProbe,\n dsShuttlev2ListWrapper: panelMetaProbe,\n dsShuttlev2HeaderSearchIcon: panelMetaProbe,\n dsShuttlev2ListWrapperTop: panelMetaProbe,\n dsShuttlev2AreaSearchWrapper: panelMetaProbe,\n dsShuttlev2AreaSearchBar: panelMetaProbe,\n dsShuttlev2AreaSelectionHeader: panelMetaProbe,\n dsShuttlev2AreaSelectionHeaderCountLabel: panelMetaProbe,\n dsShuttlev2AriaLivePanelCenter: panelMetaProbe,\n dsShuttlev2ListWrapperMid: panelMetaProbe,\n dsShuttlev2ItemsWrapper: panelMetaProbe,\n dsShuttlev2MoveMultipleWrapper: panelMetaProbe,\n dsShuttlev2MoveMultipleBtn: panelMetaProbe,\n dsShuttlev2MoveMultipleLiveRegion: panelMetaProbe,\n dsShuttlev2EmptyListWrapper: panelMetaProbe,\n dsShuttlev2LoadingListWrapper: panelMetaProbe,\n dsShuttlev2ListBottomLoadingMore: panelMetaProbe,\n dsShuttlev2ListBottomLoadMoreBtn: panelMetaProbe,\n dsShuttlev2ListWrapperBottom: panelMetaProbe,\n // Item-level \u2014 receive ItemMeta\n dsShuttlev2ItemWrapper: itemMetaProbe,\n dsShuttlev2ItemCheckbox: itemMetaProbe,\n dsShuttlev2ItemSelection: itemMetaProbe,\n dsShuttlev2ItemLabelWrapper: itemMetaProbe,\n dsShuttlev2ItemActionsWrapper: itemMetaProbe,\n dsShuttlev2ItemActionWrapper: itemMetaProbe,\n dsShuttlev2ItemActionBtn: itemMetaProbe,\n dsShuttlev2ItemActionBtnDrilldownIcon: itemMetaProbe,\n // Item-level with tooltipHelpers \u2014 receive ItemMidSectionArguments\n dsShuttlev2ItemMidsectionWrapper: itemMidSectionProbe,\n dsShuttlev2ItemIconWrapper: itemMidSectionProbe,\n // Dual-context \u2014 receive ItemActionIconArguments\n dsShuttlev2ItemActionBtnToSourceIcon: itemActionIconProbe,\n dsShuttlev2ItemActionBtnToDestinationIcon: itemActionIconProbe,\n // Drag-and-drop \u2014 receive DragHandleArguments\n dsShuttlev2DragAndDropHandleWrapper: dragHandleProbe,\n dsShuttlev2DragAndDropHandle: dragHandleProbe,\n // Root wrapper \u2014 no arguments\n dsShuttlev2Wrapper: () => testReturn,\n};\n\n// Exhaustiveness check \u2014 fails compilation if a slot defined in DSShuttleV2Slots\n// is missing from SlotFunctionArguments (or vice versa).\nconst EnsureAllSlotsExistInSlotFunctionArguments: Required<\n TypescriptHelpersT.PropsForSlots<typeof DSShuttleV2Name, typeof DSShuttleV2Slots>\n> = SlotPropsAsFunctions;\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable @typescript-eslint/naming-convention */\n/* eslint-disable no-underscore-dangle */\n/* eslint-disable @typescript-eslint/no-unused-vars, no-unused-vars */\n\nimport type { TypescriptHelpersT } from '@elliemae/ds-typescript-helpers';\nimport type { DSShuttleV2Name, DSShuttleV2Slots } from '../constants/index.js';\nimport type { DSShuttleV2T } from '../react-desc-prop-types.js';\n\nconst SlotPropsAsObj: Partial<DSShuttleV2T.Props> = {\n // Panel-level\n dsShuttlev2PanelWrapper: { 'aria-label': 'just a typescript test' },\n dsShuttlev2ListWrapper: { 'aria-label': 'just a typescript test' },\n dsShuttlev2HeaderSearchIcon: { 'aria-label': 'just a typescript test' },\n dsShuttlev2ListWrapperTop: { 'aria-label': 'just a typescript test' },\n dsShuttlev2AreaSearchWrapper: { 'aria-label': 'just a typescript test' },\n dsShuttlev2AreaSearchBar: { 'aria-label': 'just a typescript test' },\n dsShuttlev2AreaSelectionHeader: { 'aria-label': 'just a typescript test' },\n dsShuttlev2AreaSelectionHeaderCountLabel: { 'aria-label': 'just a typescript test' },\n dsShuttlev2AriaLivePanelCenter: { 'aria-label': 'just a typescript test' },\n dsShuttlev2ListWrapperMid: { 'aria-label': 'just a typescript test' },\n dsShuttlev2ItemsWrapper: { 'aria-label': 'just a typescript test' },\n dsShuttlev2MoveMultipleWrapper: { 'aria-label': 'just a typescript test' },\n dsShuttlev2MoveMultipleBtn: { 'aria-label': 'just a typescript test' },\n dsShuttlev2MoveMultipleLiveRegion: { 'aria-label': 'just a typescript test' },\n dsShuttlev2EmptyListWrapper: { 'aria-label': 'just a typescript test' },\n dsShuttlev2LoadingListWrapper: { 'aria-label': 'just a typescript test' },\n dsShuttlev2ListBottomLoadingMore: { 'aria-label': 'just a typescript test' },\n dsShuttlev2ListBottomLoadMoreBtn: { 'aria-label': 'just a typescript test' },\n dsShuttlev2ListWrapperBottom: { 'aria-label': 'just a typescript test' },\n // Item-level\n dsShuttlev2ItemWrapper: { 'aria-label': 'just a typescript test' },\n dsShuttlev2ItemCheckbox: { 'aria-label': 'just a typescript test' },\n dsShuttlev2ItemSelection: { 'aria-label': 'just a typescript test' },\n dsShuttlev2ItemLabelWrapper: { 'aria-label': 'just a typescript test' },\n dsShuttlev2ItemActionsWrapper: { 'aria-label': 'just a typescript test' },\n dsShuttlev2ItemActionWrapper: { 'aria-label': 'just a typescript test' },\n dsShuttlev2ItemActionBtn: { 'aria-label': 'just a typescript test' },\n dsShuttlev2ItemActionBtnDrilldownIcon: { 'aria-label': 'just a typescript test' },\n // Item-level with tooltipHelpers\n dsShuttlev2ItemMidsectionWrapper: { 'aria-label': 'just a typescript test' },\n dsShuttlev2ItemIconWrapper: { 'aria-label': 'just a typescript test' },\n // Dual-context\n dsShuttlev2ItemActionBtnToSourceIcon: { 'aria-label': 'just a typescript test' },\n dsShuttlev2ItemActionBtnToDestinationIcon: { 'aria-label': 'just a typescript test' },\n // Drag-and-drop\n dsShuttlev2DragAndDropHandleWrapper: { 'aria-label': 'just a typescript test' },\n dsShuttlev2DragAndDropHandle: { 'aria-label': 'just a typescript test' },\n // Root wrapper\n dsShuttlev2Wrapper: { 'aria-label': 'just a typescript test' },\n};\n\n// Probes: each fully deconstructs its argument interface and assigns every field to a const of the\n// exact expected type. This makes the test shield against ANY change to the argument shape \u2014 a\n// removed/renamed field breaks the destructure; a retyped field breaks the typed assignment.\nconst testReturn = { 'aria-label': 'just a typescript test' };\n\nconst panelMetaProbe = (args: DSShuttleV2T.PanelMetaInfo): object => {\n const { isDestinationPanel, hasMultipleSelection, height } = args;\n const _isDestinationPanel: boolean = isDestinationPanel;\n const _hasMultipleSelection: boolean | undefined = hasMultipleSelection;\n const _height: number | undefined = height;\n return testReturn;\n};\n\nconst itemMetaProbe = (args: DSShuttleV2T.ItemMeta): object => {\n const {\n isDestinationPanel,\n hasMultipleSelection,\n height,\n datum,\n datumHydratables,\n datumInternalMeta,\n datumRenderFlags,\n withDragNDrop,\n useSortableHelpers,\n } = args;\n const _isDestinationPanel: boolean = isDestinationPanel;\n const _hasMultipleSelection: boolean | undefined = hasMultipleSelection;\n const _height: number | undefined = height;\n const _datum: DSShuttleV2T.Datum = datum;\n const _datumHydratables: DSShuttleV2T.DatumHydratables = datumHydratables;\n const _datumInternalMeta: DSShuttleV2T.DatumInternalMeta = datumInternalMeta;\n const _datumRenderFlags: DSShuttleV2T.DatumRenderFlags = datumRenderFlags;\n const _withDragNDrop: boolean = withDragNDrop;\n const _useSortableHelpers: DSShuttleV2T.ItemMeta['useSortableHelpers'] = useSortableHelpers;\n return testReturn;\n};\n\nconst itemMidSectionProbe = (args: DSShuttleV2T.ItemMidSectionArguments): object => {\n const {\n datum,\n datumHydratables,\n datumInternalMeta,\n datumRenderFlags,\n withDragNDrop,\n useSortableHelpers,\n isDestinationPanel,\n tooltipHelpers,\n } = args;\n const _datum: DSShuttleV2T.Datum = datum;\n const _datumHydratables: DSShuttleV2T.DatumHydratables = datumHydratables;\n const _datumInternalMeta: DSShuttleV2T.DatumInternalMeta = datumInternalMeta;\n const _datumRenderFlags: DSShuttleV2T.DatumRenderFlags = datumRenderFlags;\n const _withDragNDrop: boolean = withDragNDrop;\n const _useSortableHelpers: DSShuttleV2T.ItemMeta['useSortableHelpers'] = useSortableHelpers;\n const _isDestinationPanel: boolean = isDestinationPanel;\n const _tooltipHelpers: DSShuttleV2T.ComponentProps['tooltipHelpers'] = tooltipHelpers;\n return testReturn;\n};\n\nconst itemActionIconProbe = (args: DSShuttleV2T.ItemActionIconArguments): object => {\n const { panelMetaInfo, extraMetaInfo } = args;\n const _panelMetaInfo: DSShuttleV2T.PanelMetaInfo = panelMetaInfo;\n const _extraMetaInfo: { itemMeta?: DSShuttleV2T.ItemMeta } | undefined = extraMetaInfo;\n const _itemMeta: DSShuttleV2T.ItemMeta | undefined = extraMetaInfo?.itemMeta;\n return testReturn;\n};\n\nconst dragHandleProbe = (args: DSShuttleV2T.DragHandleArguments): object => {\n const { id, innerRef, useSortableHelpers, isDndActive, isDragging, disabled, ariaLabelledby } = args;\n const _id: string = id;\n const _innerRef: DSShuttleV2T.DragHandleArguments['innerRef'] = innerRef;\n const _useSortableHelpers: DSShuttleV2T.DragHandleArguments['useSortableHelpers'] = useSortableHelpers;\n const _isDndActive: boolean = isDndActive;\n const _isDragging: boolean = isDragging;\n const _disabled: boolean | undefined = disabled;\n const _ariaLabelledby: string | undefined = ariaLabelledby;\n return testReturn;\n};\n\nconst SlotPropsAsFunctions: DSShuttleV2T.SlotFunctionArguments = {\n // Panel-level \u2014 receive PanelMetaInfo\n dsShuttlev2PanelWrapper: panelMetaProbe,\n dsShuttlev2ListWrapper: panelMetaProbe,\n dsShuttlev2HeaderSearchIcon: panelMetaProbe,\n dsShuttlev2ListWrapperTop: panelMetaProbe,\n dsShuttlev2AreaSearchWrapper: panelMetaProbe,\n dsShuttlev2AreaSearchBar: panelMetaProbe,\n dsShuttlev2AreaSelectionHeader: panelMetaProbe,\n dsShuttlev2AreaSelectionHeaderCountLabel: panelMetaProbe,\n dsShuttlev2AriaLivePanelCenter: panelMetaProbe,\n dsShuttlev2ListWrapperMid: panelMetaProbe,\n dsShuttlev2ItemsWrapper: panelMetaProbe,\n dsShuttlev2MoveMultipleWrapper: panelMetaProbe,\n dsShuttlev2MoveMultipleBtn: panelMetaProbe,\n dsShuttlev2MoveMultipleLiveRegion: panelMetaProbe,\n dsShuttlev2EmptyListWrapper: panelMetaProbe,\n dsShuttlev2LoadingListWrapper: panelMetaProbe,\n dsShuttlev2ListBottomLoadingMore: panelMetaProbe,\n dsShuttlev2ListBottomLoadMoreBtn: panelMetaProbe,\n dsShuttlev2ListWrapperBottom: panelMetaProbe,\n // Item-level \u2014 receive ItemMeta\n dsShuttlev2ItemWrapper: itemMetaProbe,\n dsShuttlev2ItemCheckbox: itemMetaProbe,\n dsShuttlev2ItemSelection: itemMetaProbe,\n dsShuttlev2ItemSelectionCheckboxUi: itemMetaProbe,\n dsShuttlev2ItemLabelWrapper: itemMetaProbe,\n dsShuttlev2ItemActionsWrapper: itemMetaProbe,\n dsShuttlev2ItemActionWrapper: itemMetaProbe,\n dsShuttlev2ItemActionBtn: itemMetaProbe,\n dsShuttlev2ItemActionBtnDrilldownIcon: itemMetaProbe,\n // Item-level with tooltipHelpers \u2014 receive ItemMidSectionArguments\n dsShuttlev2ItemMidsectionWrapper: itemMidSectionProbe,\n dsShuttlev2ItemIconWrapper: itemMidSectionProbe,\n // Dual-context \u2014 receive ItemActionIconArguments\n dsShuttlev2ItemActionBtnToSourceIcon: itemActionIconProbe,\n dsShuttlev2ItemActionBtnToDestinationIcon: itemActionIconProbe,\n // Drag-and-drop \u2014 receive DragHandleArguments\n dsShuttlev2DragAndDropHandleWrapper: dragHandleProbe,\n dsShuttlev2DragAndDropHandle: dragHandleProbe,\n // Root wrapper \u2014 no arguments\n dsShuttlev2Wrapper: () => testReturn,\n};\n\n// Exhaustiveness check \u2014 fails compilation if a slot defined in DSShuttleV2Slots\n// is missing from SlotFunctionArguments (or vice versa).\nconst EnsureAllSlotsExistInSlotFunctionArguments: Required<\n TypescriptHelpersT.PropsForSlots<typeof DSShuttleV2Name, typeof DSShuttleV2Slots>\n> = SlotPropsAsFunctions;\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -10,6 +10,7 @@ export declare const DSShuttleV2Slots: {
10
10
  readonly ITEM_LABEL_WRAPPER: "item-label-wrapper";
11
11
  readonly ITEM_MIDSECTION_WRAPPER: "item-midsection-wrapper";
12
12
  readonly ITEM_SELECTION: "item-selection";
13
+ readonly ITEM_SELECTION_CHECKBOX_UI: "item-selection-checkbox-ui";
13
14
  readonly ITEM_ACTIONS_WRAPPER: "item-actions-wrapper";
14
15
  readonly ITEM_ACTION_WRAPPER: "item-action-wrapper";
15
16
  readonly ITEM_ACTION_BTN: "item-action-btn";
@@ -50,6 +51,7 @@ export declare const DSShuttleV2DataTestIds: {
50
51
  readonly ITEM_LABEL_WRAPPER: "ds-shuttlev2-item-label-wrapper";
51
52
  readonly ITEM_MIDSECTION_WRAPPER: "ds-shuttlev2-item-midsection-wrapper";
52
53
  readonly ITEM_SELECTION: "ds-shuttlev2-item-selection";
54
+ readonly ITEM_SELECTION_CHECKBOX_UI: "ds-shuttlev2-item-selection-checkbox-ui";
53
55
  readonly ITEM_ACTIONS_WRAPPER: "ds-shuttlev2-item-actions-wrapper";
54
56
  readonly ITEM_ACTION_WRAPPER: "ds-shuttlev2-item-action-wrapper";
55
57
  readonly ITEM_ACTION_BTN: "ds-shuttlev2-item-action-btn";
@@ -112,4 +114,3 @@ export declare const DropIndicatorPosition: {
112
114
  readonly After: "after";
113
115
  readonly Inside: "inside";
114
116
  };
115
- export declare const ITEM_SELECTION_WIDTH = 5;
@@ -1,6 +1,2 @@
1
- import React from 'react';
2
1
  import { type DSShuttleV2T } from '../../react-desc-prop-types.js';
3
- export declare const Item: React.MemoExoticComponent<(itemMeta: DSShuttleV2T.ItemMeta) => import("react/jsx-runtime.js").JSX.Element>;
4
- declare const ItemSortable: React.ComponentType<DSShuttleV2T.ItemMeta<Record<string, unknown>>>;
5
- export { ItemSortable };
6
- export default ItemSortable;
2
+ export declare const ItemSortable: (props: DSShuttleV2T.ItemMeta) => import("react/jsx-runtime.js").JSX.Element;
@@ -1,5 +1,5 @@
1
1
  import { type DSShuttleV2T } from '../../../react-desc-prop-types.js';
2
- export declare const useInnerRefHandlers: ({ datumInternalMeta, isDestinationPanel }: DSShuttleV2T.ItemMeta) => {
2
+ export declare const useInnerRefActionHandlers: ({ datumInternalMeta, isDestinationPanel }: DSShuttleV2T.ItemMeta) => {
3
3
  innerRefHandlerDnd: (node: HTMLDivElement | null) => void;
4
4
  innerRefHandlerDrilldown: (node: HTMLButtonElement) => void;
5
5
  innerRefHandlerMove: (node: HTMLButtonElement) => void;
@@ -0,0 +1,2 @@
1
+ import type { SelectionUIProps } from './ItemSelectionUI.types.js';
2
+ export declare const CheckboxSelectionUI: (props: SelectionUIProps) => import("react/jsx-runtime.js").JSX.Element;
@@ -0,0 +1,2 @@
1
+ import type { SelectionUIProps } from './ItemSelectionUI.types.js';
2
+ export declare const ItemSelectionUI: (props: SelectionUIProps) => import("react/jsx-runtime.js").JSX.Element;
@@ -0,0 +1,11 @@
1
+ import type { useHeadlessTooltip } from '@elliemae/ds-hooks-headless-tooltip';
2
+ import type { DSShuttleV2T } from '../../../react-desc-prop-types.js';
3
+ import type { useItemInnerRefHandlers } from '../useItemInnerRefHandlers.js';
4
+ type TooltipHelpers = ReturnType<typeof useHeadlessTooltip>;
5
+ type ItemInnerRefHandlers = ReturnType<typeof useItemInnerRefHandlers>;
6
+ export interface SelectionUIProps {
7
+ tooltipHelpers: TooltipHelpers;
8
+ itemInnerRefHandlers: ItemInnerRefHandlers;
9
+ itemMeta: DSShuttleV2T.ItemMeta;
10
+ }
11
+ export {};
@@ -0,0 +1,2 @@
1
+ import type { SelectionUIProps } from './ItemSelectionUI.types.js';
2
+ export declare const VerticalBarSelectionUI: (props: SelectionUIProps) => import("react/jsx-runtime.js").JSX.Element;
@@ -0,0 +1,5 @@
1
+ import type { DSShuttleV2T } from '../../react-desc-prop-types.js';
2
+ export declare const useItemInnerRefHandlers: (itemMeta: DSShuttleV2T.ItemMeta) => {
3
+ innerRefHandlerParentItem: (node: HTMLDivElement | null) => void;
4
+ thisItemIsFocused: boolean;
5
+ };
@@ -1,4 +1,4 @@
1
1
  import { type DSShuttleV2T } from '../../../react-desc-prop-types.js';
2
- export declare const useInnerRefHandlers: ({ isDestinationPanel }: DSShuttleV2T.PanelMetaInfo) => {
2
+ export declare const useLoadMoreBtnInnerRefHandlers: ({ isDestinationPanel }: DSShuttleV2T.PanelMetaInfo) => {
3
3
  innerRefHandlerLoadMoreBtn: (node: HTMLButtonElement) => void;
4
4
  };
@@ -134,6 +134,7 @@ export declare namespace DSShuttleV2T {
134
134
  dsShuttlev2ItemWrapper: (args: ItemMeta<D>) => object;
135
135
  dsShuttlev2ItemCheckbox: (args: ItemMeta<D>) => object;
136
136
  dsShuttlev2ItemSelection: (args: ItemMeta<D>) => object;
137
+ dsShuttlev2ItemSelectionCheckboxUi: (args: ItemMeta<D>) => object;
137
138
  dsShuttlev2ItemLabelWrapper: (args: ItemMeta<D>) => object;
138
139
  dsShuttlev2ItemActionsWrapper: (args: ItemMeta<D>) => object;
139
140
  dsShuttlev2ItemActionWrapper: (args: ItemMeta<D>) => object;
@@ -218,6 +219,7 @@ export declare namespace DSShuttleV2T {
218
219
  onDestinationDrilldown: OnSelectionDrilldown<Datum<D>>;
219
220
  }
220
221
  interface DefaultProps<D extends Record<string, unknown> = Record<string, unknown>> extends Required<FunctionalHydraters<D>> {
222
+ explicitSelectionUI: boolean;
221
223
  sourceIsLoading: boolean;
222
224
  sourceWithLoadMore: boolean;
223
225
  sourceIsLoadingMore: boolean;