@coveord/plasma-mantine 56.20.1 → 57.0.0

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 (193) hide show
  1. package/.turbo/turbo-build.log +4 -4
  2. package/.turbo/turbo-test.log +104 -115
  3. package/dist/.tsbuildinfo +1 -1
  4. package/dist/cjs/components/ActionIcon/ActionIcon.js +9 -4
  5. package/dist/cjs/components/ActionIcon/ActionIcon.js.map +1 -1
  6. package/dist/cjs/components/Alert/Alert.js +4 -4
  7. package/dist/cjs/components/Alert/Alert.js.map +1 -1
  8. package/dist/cjs/components/Badge/Badge.js +1 -1
  9. package/dist/cjs/components/Badge/Badge.js.map +1 -1
  10. package/dist/cjs/components/BlankSlate/BlankSlate.js +1 -1
  11. package/dist/cjs/components/BrowserPreview/BrowserPreview.js +2 -2
  12. package/dist/cjs/components/BrowserPreview/BrowserPreview.js.map +1 -1
  13. package/dist/cjs/components/Button/Button.js +10 -5
  14. package/dist/cjs/components/Button/Button.js.map +1 -1
  15. package/dist/cjs/components/Button/ButtonWithDisabledTooltip.js +8 -3
  16. package/dist/cjs/components/Button/ButtonWithDisabledTooltip.js.map +1 -1
  17. package/dist/cjs/components/CheckboxIcon/CheckboxIcon.js +2 -2
  18. package/dist/cjs/components/CheckboxIcon/CheckboxIcon.js.map +1 -1
  19. package/dist/cjs/components/ChildForm/ChildForm.js.map +1 -1
  20. package/dist/cjs/components/Chip/Chip.js +8 -3
  21. package/dist/cjs/components/Chip/Chip.js.map +1 -1
  22. package/dist/cjs/components/CircleLoader/CircleLoader.js +8 -3
  23. package/dist/cjs/components/CircleLoader/CircleLoader.js.map +1 -1
  24. package/dist/cjs/components/CodeEditor/CodeEditor.js +9 -9
  25. package/dist/cjs/components/CodeEditor/CodeEditor.js.map +1 -1
  26. package/dist/cjs/components/CodeEditor/languages/xml.js +3 -3
  27. package/dist/cjs/components/CodeEditor/languages/xml.js.map +1 -1
  28. package/dist/cjs/components/CodeEditor/search/Search.js +3 -3
  29. package/dist/cjs/components/CodeEditor/search/Search.js.map +1 -1
  30. package/dist/cjs/components/Collection/Collection.js +12 -12
  31. package/dist/cjs/components/Collection/Collection.js.map +1 -1
  32. package/dist/cjs/components/Collection/CollectionAddButton.js +1 -1
  33. package/dist/cjs/components/Collection/CollectionItem.js +5 -5
  34. package/dist/cjs/components/Collection/CollectionItem.js.map +1 -1
  35. package/dist/cjs/components/Collection/enhanceWithCollectionProps.js +4 -4
  36. package/dist/cjs/components/Collection/enhanceWithCollectionProps.js.map +1 -1
  37. package/dist/cjs/components/Collection/layouts/horizontal-layout/HorizontalLayout.js +1 -1
  38. package/dist/cjs/components/Collection/layouts/horizontal-layout/HorizontalLayoutBody.js +2 -2
  39. package/dist/cjs/components/Collection/layouts/horizontal-layout/HorizontalLayoutBody.js.map +1 -1
  40. package/dist/cjs/components/Collection/layouts/horizontal-layout/HorizontalLayoutHeader.js +1 -1
  41. package/dist/cjs/components/Collection/layouts/horizontal-layout/HorizontalLayoutHeader.js.map +1 -1
  42. package/dist/cjs/components/Collection/layouts/shared/DragHandle.js +1 -1
  43. package/dist/cjs/components/Collection/layouts/shared/RemoveButton.js +1 -1
  44. package/dist/cjs/components/Collection/layouts/shared/columnUtils.js +2 -2
  45. package/dist/cjs/components/Collection/layouts/shared/columnUtils.js.map +1 -1
  46. package/dist/cjs/components/Collection/layouts/shared/headerUtils.js +1 -1
  47. package/dist/cjs/components/Collection/layouts/shared/headerUtils.js.map +1 -1
  48. package/dist/cjs/components/Collection/layouts/shared/itemRenderer.js +7 -7
  49. package/dist/cjs/components/Collection/layouts/shared/itemRenderer.js.map +1 -1
  50. package/dist/cjs/components/Collection/layouts/vertical-layout/VerticalLayout.js +1 -1
  51. package/dist/cjs/components/Collection/layouts/vertical-layout/VerticalLayoutBody.js +4 -4
  52. package/dist/cjs/components/Collection/layouts/vertical-layout/VerticalLayoutBody.js.map +1 -1
  53. package/dist/cjs/components/Collection/layouts/vertical-layout/VerticalLayoutHeader.js +1 -1
  54. package/dist/cjs/components/Collection/layouts/vertical-layout/VerticalLayoutHeader.js.map +1 -1
  55. package/dist/cjs/components/CopyToClipboard/CopyToClipboard.js +6 -6
  56. package/dist/cjs/components/CopyToClipboard/CopyToClipboard.js.map +1 -1
  57. package/dist/cjs/components/DateRangePicker/DateRangePicker.js +7 -7
  58. package/dist/cjs/components/DateRangePicker/DateRangePicker.js.map +1 -1
  59. package/dist/cjs/components/DateRangePicker/DateRangePickerInlineCalendar.js +5 -5
  60. package/dist/cjs/components/DateRangePicker/DateRangePickerInlineCalendar.js.map +1 -1
  61. package/dist/cjs/components/DateRangePicker/DateRangePickerPopoverCalendar.js +3 -3
  62. package/dist/cjs/components/DateRangePicker/DateRangePickerPopoverCalendar.js.map +1 -1
  63. package/dist/cjs/components/DateRangePicker/DateRangePickerPresetSelect.js +3 -3
  64. package/dist/cjs/components/DateRangePicker/DateRangePickerPresetSelect.js.map +1 -1
  65. package/dist/cjs/components/DateRangePicker/EditableDateRangePicker.js +3 -3
  66. package/dist/cjs/components/DateRangePicker/EditableDateRangePicker.js.map +1 -1
  67. package/dist/cjs/components/DateTimeRangePicker/DateTimeRangePicker.js +1 -1
  68. package/dist/cjs/components/DateTimeRangePicker/EditableDateTimeRangePicker.js +3 -3
  69. package/dist/cjs/components/DateTimeRangePicker/EditableDateTimeRangePicker.js.map +1 -1
  70. package/dist/cjs/components/EllipsisText/EllipsisText.js +3 -3
  71. package/dist/cjs/components/EllipsisText/EllipsisText.js.map +1 -1
  72. package/dist/cjs/components/Facet/DefaultFacetItem.js +3 -3
  73. package/dist/cjs/components/Facet/DefaultFacetItem.js.map +1 -1
  74. package/dist/cjs/components/Facet/Facet.js +5 -5
  75. package/dist/cjs/components/Facet/Facet.js.map +1 -1
  76. package/dist/cjs/components/Facet/FacetScrollArea.js +8 -3
  77. package/dist/cjs/components/Facet/FacetScrollArea.js.map +1 -1
  78. package/dist/cjs/components/Header/Header.js +1 -1
  79. package/dist/cjs/components/Header/Header.js.map +1 -1
  80. package/dist/cjs/components/Header/HeaderBreadcrumbs/HeaderBreadcrumbAnchor.js.map +1 -1
  81. package/dist/cjs/components/Header/HeaderBreadcrumbs/HeaderBreadcrumbText.js.map +1 -1
  82. package/dist/cjs/components/Header/HeaderBreadcrumbs/HeaderBreadcrumbs.js.map +1 -1
  83. package/dist/cjs/components/Header/HeaderDocAnchor/HeaderDocAnchor.js.map +1 -1
  84. package/dist/cjs/components/Header/HeaderRight/HeaderRight.js.map +1 -1
  85. package/dist/cjs/components/InfoToken/InfoToken.js +3 -3
  86. package/dist/cjs/components/InfoToken/InfoToken.js.map +1 -1
  87. package/dist/cjs/components/InlineConfirm/InlineConfirm.js +2 -2
  88. package/dist/cjs/components/InlineConfirm/InlineConfirm.js.map +1 -1
  89. package/dist/cjs/components/InlineConfirm/InlineConfirmPrompt.js +2 -2
  90. package/dist/cjs/components/InlineConfirm/InlineConfirmPrompt.js.map +1 -1
  91. package/dist/cjs/components/InlineConfirm/InlineConfirmTarget.js +9 -4
  92. package/dist/cjs/components/InlineConfirm/InlineConfirmTarget.js.map +1 -1
  93. package/dist/cjs/components/LastUpdated/LastUpdated.js +1 -1
  94. package/dist/cjs/components/LastUpdated/LastUpdated.js.map +1 -1
  95. package/dist/cjs/components/Menu/Menu.js +8 -3
  96. package/dist/cjs/components/Menu/Menu.js.map +1 -1
  97. package/dist/cjs/components/Modal/Modal.js +8 -3
  98. package/dist/cjs/components/Modal/Modal.js.map +1 -1
  99. package/dist/cjs/components/Modal/ModalFooter.js +1 -1
  100. package/dist/cjs/components/Modal/ModalFooter.js.map +1 -1
  101. package/dist/cjs/components/Prompt/Prompt.js.map +1 -1
  102. package/dist/cjs/components/Prompt/PromptCancelButton.js.map +1 -1
  103. package/dist/cjs/components/Prompt/PromptConfirmButton.js.map +1 -1
  104. package/dist/cjs/components/Prompt/icons/CriticalIcon.js +1 -1
  105. package/dist/cjs/components/Prompt/icons/InfoIcon.js +1 -1
  106. package/dist/cjs/components/Prompt/icons/SuccessIcon.js +1 -1
  107. package/dist/cjs/components/Prompt/icons/WarningIcon.js +1 -1
  108. package/dist/cjs/components/RadioCard/RadioCard.d.ts +4 -0
  109. package/dist/cjs/components/RadioCard/RadioCard.d.ts.map +1 -1
  110. package/dist/cjs/components/RadioCard/RadioCard.js +48 -43
  111. package/dist/cjs/components/RadioCard/RadioCard.js.map +1 -1
  112. package/dist/cjs/components/ReadOnly/ReadOnlyInputStyles.js +1 -1
  113. package/dist/cjs/components/ReadOnly/ReadOnlyInputStyles.js.map +1 -1
  114. package/dist/cjs/components/StatusToken/StatusToken.js +3 -3
  115. package/dist/cjs/components/StatusToken/StatusToken.js.map +1 -1
  116. package/dist/cjs/components/StickyFooter/StickyFooter.js.map +1 -1
  117. package/dist/cjs/components/Table/Table.js +6 -6
  118. package/dist/cjs/components/Table/Table.js.map +1 -1
  119. package/dist/cjs/components/Table/layouts/TableLayoutControl.js +1 -1
  120. package/dist/cjs/components/Table/layouts/row-layout/RowLayout.js +1 -1
  121. package/dist/cjs/components/Table/layouts/row-layout/RowLayout.js.map +1 -1
  122. package/dist/cjs/components/Table/layouts/row-layout/RowLayoutBody.js +8 -9
  123. package/dist/cjs/components/Table/layouts/row-layout/RowLayoutBody.js.map +1 -1
  124. package/dist/cjs/components/Table/layouts/row-layout/RowLayoutHeader.js +1 -1
  125. package/dist/cjs/components/Table/layouts/row-layout/RowLayoutHeader.js.map +1 -1
  126. package/dist/cjs/components/Table/table-actions/TableActionItem.js.map +1 -1
  127. package/dist/cjs/components/Table/table-actions/TableActionsList.js +4 -4
  128. package/dist/cjs/components/Table/table-actions/TableActionsList.js.map +1 -1
  129. package/dist/cjs/components/Table/table-actions/TableHeaderActions.js.map +1 -1
  130. package/dist/cjs/components/Table/table-column/TableActionsColumn.js +3 -3
  131. package/dist/cjs/components/Table/table-column/TableActionsColumn.js.map +1 -1
  132. package/dist/cjs/components/Table/table-column/TableCollapsibleColumn.js +4 -4
  133. package/dist/cjs/components/Table/table-column/TableCollapsibleColumn.js.map +1 -1
  134. package/dist/cjs/components/Table/table-column/TableSelectableColumn.js +3 -3
  135. package/dist/cjs/components/Table/table-column/TableSelectableColumn.js.map +1 -1
  136. package/dist/cjs/components/Table/table-columns-selector/TableColumnsSelector.js +3 -3
  137. package/dist/cjs/components/Table/table-columns-selector/TableColumnsSelector.js.map +1 -1
  138. package/dist/cjs/components/Table/table-date-range-picker/TableDateRangePicker.js +1 -1
  139. package/dist/cjs/components/Table/table-date-range-picker/TableDateRangePicker.js.map +1 -1
  140. package/dist/cjs/components/Table/table-filter/TableFilter.js +2 -2
  141. package/dist/cjs/components/Table/table-filter/TableFilter.js.map +1 -1
  142. package/dist/cjs/components/Table/table-footer/TableFooter.js +2 -2
  143. package/dist/cjs/components/Table/table-footer/TableFooter.js.map +1 -1
  144. package/dist/cjs/components/Table/table-header/TableHeader.js +1 -1
  145. package/dist/cjs/components/Table/table-header/TableHeader.js.map +1 -1
  146. package/dist/cjs/components/Table/table-header/Th.js +1 -1
  147. package/dist/cjs/components/Table/table-header/Th.js.map +1 -1
  148. package/dist/cjs/components/Table/table-last-updated/TableLastUpdated.js.map +1 -1
  149. package/dist/cjs/components/Table/table-loading/TableLoading.js +1 -1
  150. package/dist/cjs/components/Table/table-loading/TableLoading.js.map +1 -1
  151. package/dist/cjs/components/Table/table-no-data/TableNoData.js +1 -1
  152. package/dist/cjs/components/Table/table-pagination/TablePagination.js +3 -3
  153. package/dist/cjs/components/Table/table-pagination/TablePagination.js.map +1 -1
  154. package/dist/cjs/components/Table/table-per-page/TablePerPage.js +3 -3
  155. package/dist/cjs/components/Table/table-per-page/TablePerPage.js.map +1 -1
  156. package/dist/cjs/components/Table/table-predicate/TablePredicate.js +1 -1
  157. package/dist/cjs/components/Table/table-predicate/TablePredicate.js.map +1 -1
  158. package/dist/cjs/components/Table/use-table.js +22 -23
  159. package/dist/cjs/components/Table/use-table.js.map +1 -1
  160. package/dist/cjs/hooks/use-url-synced-state.js +6 -6
  161. package/dist/cjs/hooks/use-url-synced-state.js.map +1 -1
  162. package/dist/cjs/hooks/useClickWithLoading.js +2 -2
  163. package/dist/cjs/hooks/useClickWithLoading.js.map +1 -1
  164. package/dist/cjs/hooks/useControlledList.js +4 -4
  165. package/dist/cjs/hooks/useControlledList.js.map +1 -1
  166. package/dist/cjs/hooks/useParentHeight.js +2 -2
  167. package/dist/cjs/hooks/useParentHeight.js.map +1 -1
  168. package/dist/cjs/styles/RadioCard.module.css +1 -1
  169. package/dist/cjs/theme/PlasmaColors.js +1 -1
  170. package/dist/cjs/theme/PlasmaColors.js.map +1 -1
  171. package/dist/cjs/theme/Plasmantine.js +2 -2
  172. package/dist/cjs/theme/Plasmantine.js.map +1 -1
  173. package/dist/cjs/theme/Theme.js +12 -12
  174. package/dist/cjs/theme/Theme.js.map +1 -1
  175. package/dist/cjs/theme/mergeCSSVariablesResolvers.js +1 -1
  176. package/dist/cjs/theme/plasmaCSSVariablesResolver.js +2 -2
  177. package/dist/cjs/theme/plasmaCSSVariablesResolver.js.map +1 -1
  178. package/dist/cjs/theme/plasmaVariantColorResolver.js +1 -1
  179. package/dist/cjs/theme/plasmaVariantColorResolver.js.map +1 -1
  180. package/dist/cjs/utils/createFactoryComponent.js +1 -1
  181. package/dist/cjs/utils/createFactoryComponent.js.map +1 -1
  182. package/dist/cjs/utils/groupOptions.js +1 -1
  183. package/dist/cjs/utils/overrideComponent.js +2 -2
  184. package/dist/cjs/utils/overrideComponent.js.map +1 -1
  185. package/dist/esm/components/RadioCard/RadioCard.d.ts +4 -0
  186. package/dist/esm/components/RadioCard/RadioCard.d.ts.map +1 -1
  187. package/dist/esm/components/RadioCard/RadioCard.js +47 -43
  188. package/dist/esm/components/RadioCard/RadioCard.js.map +1 -1
  189. package/dist/esm/styles/RadioCard.module.css +1 -1
  190. package/package.json +26 -26
  191. package/src/components/RadioCard/RadioCard.tsx +24 -20
  192. package/src/components/RadioCard/__tests__/RadioCard.component.spec.tsx +34 -1
  193. package/src/styles/RadioCard.module.css +1 -1
@@ -23,10 +23,10 @@ var _utilities = require("@dnd-kit/utilities");
23
23
  var _core = require("@mantine/core");
24
24
  var _DragHandle = require("./DragHandle.js");
25
25
  var _RemoveButton = require("./RemoveButton.js");
26
- var createItemRenderers = function() {
26
+ var createItemRenderers = function createItemRenderers() {
27
27
  /**
28
28
  * Draggable item/row renderer with drag and drop functionality
29
- */ var DraggableItem = function(props) {
29
+ */ var DraggableItem = function DraggableItem(props) {
30
30
  var item = props.item, index = props.index, id = props.id, columns = props.columns, onRemove = props.onRemove, removable = props.removable, disabled = props.disabled, readOnly = props.readOnly, classes = props.classes, config = props.config;
31
31
  var _useSortable = (0, _sortable.useSortable)({
32
32
  id: id
@@ -83,7 +83,7 @@ var createItemRenderers = function() {
83
83
  };
84
84
  /**
85
85
  * Static (non-draggable) item/row renderer
86
- */ var StaticItem = function(props) {
86
+ */ var StaticItem = function StaticItem(props) {
87
87
  var item = props.item, index = props.index, id = props.id, columns = props.columns, onRemove = props.onRemove, removable = props.removable, disabled = props.disabled, readOnly = props.readOnly, classes = props.classes, config = props.config;
88
88
  var cellContext = {
89
89
  removable: removable,
@@ -106,7 +106,7 @@ var createItemRenderers = function() {
106
106
  };
107
107
  /**
108
108
  * Disabled item/row renderer (no drag, no remove)
109
- */ var DisabledItem = function(props) {
109
+ */ var DisabledItem = function DisabledItem(props) {
110
110
  var item = props.item, index = props.index, id = props.id, columns = props.columns, disabled = props.disabled, readOnly = props.readOnly, classes = props.classes, config = props.config;
111
111
  var cellContext = {
112
112
  removable: false,
@@ -126,12 +126,12 @@ var createItemRenderers = function() {
126
126
  DisabledItem: DisabledItem
127
127
  };
128
128
  };
129
- var mapItemsToComponents = function(items, renderers, config, classes, options) {
129
+ var mapItemsToComponents = function mapItemsToComponents(items, renderers, config, classes, options) {
130
130
  var getItemId = options.getItemId, onRemove = options.onRemove, removable = options.removable, draggable = options.draggable, disabled = options.disabled, readOnly = options.readOnly, columns = options.columns;
131
131
  var DraggableItem = renderers.DraggableItem, StaticItem = renderers.StaticItem, DisabledItem = renderers.DisabledItem;
132
132
  return items.map(function(item, index) {
133
- var _getItemId;
134
- var id = (_getItemId = getItemId === null || getItemId === void 0 ? void 0 : getItemId(item, index)) !== null && _getItemId !== void 0 ? _getItemId : String(index);
133
+ var _ref;
134
+ var id = (_ref = getItemId === null || getItemId === void 0 ? void 0 : getItemId(item, index)) !== null && _ref !== void 0 ? _ref : String(index);
135
135
  var itemProps = {
136
136
  item: item,
137
137
  index: index,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/components/Collection/layouts/shared/itemRenderer.tsx"],"sourcesContent":["import {useSortable} from '@dnd-kit/sortable';\nimport {CSS} from '@dnd-kit/utilities';\nimport {Box} from '@mantine/core';\nimport {ReactNode} from 'react';\nimport {CollectionCellContext, CollectionColumnDef} from '../../CollectionColumn.types.js';\nimport {DragHandle} from './DragHandle.js';\nimport {RemoveButton} from './RemoveButton.js';\n\n/**\n * CSS classes object for layout styling.\n */\nexport interface LayoutClasses {\n [key: string]: string;\n}\n\n/**\n * Common props for rendering an item/row in either layout.\n */\nexport interface ItemProps<T> {\n item: T;\n index: number;\n id: string;\n columns: Array<CollectionColumnDef<T>>;\n onRemove?: () => void;\n removable?: boolean;\n draggable?: boolean;\n disabled?: boolean;\n readOnly?: boolean;\n classes: LayoutClasses;\n config: ItemRendererConfig<T>;\n}\n\n/**\n * Function type that renders the content specific to each layout.\n * Horizontal layout renders cells in a row, vertical layout renders stacked fields.\n */\nexport type ItemContentRenderer<T> = (\n item: T,\n index: number,\n columns: Array<CollectionColumnDef<T>>,\n cellContext: CollectionCellContext<T>,\n classes: LayoutClasses,\n) => ReactNode;\n\n/**\n * Function type that renders content with inline drag handle for draggable items.\n * Used by layouts that want the drag handle integrated into the content (e.g., vertical layout).\n */\nexport type DraggableContentRenderer<T> = (\n item: T,\n index: number,\n columns: Array<CollectionColumnDef<T>>,\n cellContext: CollectionCellContext<T>,\n classes: LayoutClasses,\n dragHandleProps: {\n setActivatorNodeRef: (element: HTMLElement | null) => void;\n listeners: any;\n attributes: any;\n },\n) => ReactNode;\n\n/**\n * Configuration for creating layout-specific item renderers.\n */\nexport interface ItemRendererConfig<T> {\n /** The content rendering function specific to the layout */\n renderContent: ItemContentRenderer<T>;\n /** The container style selector ('row' for horizontal, 'item' for vertical) */\n containerSelector: string;\n /** Optional: whether to render drag handle and remove button inline with content (used by horizontal layout) */\n inlineControls?: boolean;\n /**\n * Optional: custom content renderer for draggable items that integrates the drag handle.\n * If provided, this is used instead of the default drag handle + renderContent pattern.\n * Used by vertical layout to place drag handle alongside the field stack.\n */\n renderDraggableContent?: DraggableContentRenderer<T>;\n}\n\n/**\n * Creates a set of item renderers (draggable, static, disabled) for a layout.\n * This eliminates the duplication of three nearly identical component variants.\n * The renderers are stable function references that don't capture variables in closures.\n */\nexport const createItemRenderers = <T,>() => {\n /**\n * Draggable item/row renderer with drag and drop functionality\n */\n const DraggableItem = (props: ItemProps<T>) => {\n const {item, index, id, columns, onRemove, removable, disabled, readOnly, classes, config} = props;\n const {attributes, listeners, setNodeRef, transform, transition, isDragging, setActivatorNodeRef} = useSortable(\n {id},\n );\n\n const cellContext: CollectionCellContext<T> = {\n removable,\n draggable: true,\n disabled,\n readOnly,\n onRemove,\n };\n\n const dragHandleProps = {setActivatorNodeRef, listeners, attributes};\n\n // Use renderDraggableContent if provided (integrates drag handle into content)\n if (config.renderDraggableContent) {\n return (\n <Box\n ref={setNodeRef}\n data-testid={`item-${id}`}\n className={classes[config.containerSelector]}\n style={\n transform\n ? {\n transform: CSS.Transform.toString(transform),\n transition,\n }\n : undefined\n }\n data-isdragging={isDragging}\n >\n {config.renderDraggableContent(item, index, columns, cellContext, classes, dragHandleProps)}\n </Box>\n );\n }\n\n // Default behavior: inline drag handle + content + remove button (used by horizontal layout)\n return (\n <Box\n ref={setNodeRef}\n data-testid={`item-${id}`}\n className={classes[config.containerSelector]}\n style={\n transform\n ? {\n transform: CSS.Transform.toString(transform),\n transition,\n }\n : undefined\n }\n data-isdragging={isDragging}\n >\n <DragHandle setActivatorNodeRef={setActivatorNodeRef} listeners={listeners} attributes={attributes} />\n {config.renderContent(item, index, columns, cellContext, classes)}\n {config.inlineControls && <RemoveButton removable={removable} onRemove={onRemove} />}\n </Box>\n );\n };\n\n /**\n * Static (non-draggable) item/row renderer\n */\n const StaticItem = (props: ItemProps<T>) => {\n const {item, index, id, columns, onRemove, removable, disabled, readOnly, classes, config} = props;\n\n const cellContext: CollectionCellContext<T> = {\n removable,\n draggable: false,\n disabled,\n readOnly,\n onRemove,\n };\n\n return (\n <Box data-testid={`item-${id}`} className={classes[config.containerSelector]}>\n {config.renderContent(item, index, columns, cellContext, classes)}\n {config.inlineControls && <RemoveButton removable={removable} onRemove={onRemove} />}\n </Box>\n );\n };\n\n /**\n * Disabled item/row renderer (no drag, no remove)\n */\n const DisabledItem = (props: ItemProps<T>) => {\n const {item, index, id, columns, disabled, readOnly, classes, config} = props;\n\n const cellContext: CollectionCellContext<T> = {\n removable: false,\n draggable: false,\n disabled,\n readOnly,\n };\n\n return (\n <Box data-testid={`item-${id}`} className={classes[config.containerSelector]}>\n {config.renderContent(item, index, columns, cellContext, classes)}\n </Box>\n );\n };\n\n return {DraggableItem, StaticItem, DisabledItem};\n};\n\n/**\n * Maps items to their appropriate renderer components based on state.\n */\nexport const mapItemsToComponents = <T,>(\n items: T[],\n renderers: ReturnType<typeof createItemRenderers<T>>,\n config: ItemRendererConfig<T>,\n classes: LayoutClasses,\n options: {\n getItemId?: (item: T, index: number) => string;\n onRemove?: (index: number) => void;\n removable?: boolean;\n draggable?: boolean;\n disabled?: boolean;\n readOnly?: boolean;\n columns: Array<CollectionColumnDef<T>>;\n },\n): ReactNode[] => {\n const {getItemId, onRemove, removable, draggable, disabled, readOnly, columns} = options;\n const {DraggableItem, StaticItem, DisabledItem} = renderers;\n\n return items.map((item, index) => {\n const id = getItemId?.(item, index) ?? String(index);\n const itemProps: ItemProps<T> = {\n item,\n index,\n id,\n columns,\n onRemove: onRemove ? () => onRemove(index) : undefined,\n removable,\n draggable,\n disabled,\n readOnly,\n classes,\n config,\n };\n\n if (disabled) {\n return <DisabledItem key={id} {...itemProps} />;\n }\n\n if (draggable) {\n return <DraggableItem key={id} {...itemProps} />;\n }\n\n return <StaticItem key={id} {...itemProps} />;\n });\n};\n"],"names":["createItemRenderers","mapItemsToComponents","DraggableItem","props","item","index","id","columns","onRemove","removable","disabled","readOnly","classes","config","useSortable","attributes","listeners","setNodeRef","transform","transition","isDragging","setActivatorNodeRef","cellContext","draggable","dragHandleProps","renderDraggableContent","Box","ref","data-testid","className","containerSelector","style","CSS","Transform","toString","undefined","data-isdragging","DragHandle","renderContent","inlineControls","RemoveButton","StaticItem","DisabledItem","items","renderers","options","getItemId","map","String","itemProps"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../src/components/Collection/layouts/shared/itemRenderer.tsx"],"sourcesContent":["import {useSortable} from '@dnd-kit/sortable';\nimport {CSS} from '@dnd-kit/utilities';\nimport {Box} from '@mantine/core';\nimport {ReactNode} from 'react';\nimport {CollectionCellContext, CollectionColumnDef} from '../../CollectionColumn.types.js';\nimport {DragHandle} from './DragHandle.js';\nimport {RemoveButton} from './RemoveButton.js';\n\n/**\n * CSS classes object for layout styling.\n */\nexport interface LayoutClasses {\n [key: string]: string;\n}\n\n/**\n * Common props for rendering an item/row in either layout.\n */\nexport interface ItemProps<T> {\n item: T;\n index: number;\n id: string;\n columns: Array<CollectionColumnDef<T>>;\n onRemove?: () => void;\n removable?: boolean;\n draggable?: boolean;\n disabled?: boolean;\n readOnly?: boolean;\n classes: LayoutClasses;\n config: ItemRendererConfig<T>;\n}\n\n/**\n * Function type that renders the content specific to each layout.\n * Horizontal layout renders cells in a row, vertical layout renders stacked fields.\n */\nexport type ItemContentRenderer<T> = (\n item: T,\n index: number,\n columns: Array<CollectionColumnDef<T>>,\n cellContext: CollectionCellContext<T>,\n classes: LayoutClasses,\n) => ReactNode;\n\n/**\n * Function type that renders content with inline drag handle for draggable items.\n * Used by layouts that want the drag handle integrated into the content (e.g., vertical layout).\n */\nexport type DraggableContentRenderer<T> = (\n item: T,\n index: number,\n columns: Array<CollectionColumnDef<T>>,\n cellContext: CollectionCellContext<T>,\n classes: LayoutClasses,\n dragHandleProps: {\n setActivatorNodeRef: (element: HTMLElement | null) => void;\n listeners: any;\n attributes: any;\n },\n) => ReactNode;\n\n/**\n * Configuration for creating layout-specific item renderers.\n */\nexport interface ItemRendererConfig<T> {\n /** The content rendering function specific to the layout */\n renderContent: ItemContentRenderer<T>;\n /** The container style selector ('row' for horizontal, 'item' for vertical) */\n containerSelector: string;\n /** Optional: whether to render drag handle and remove button inline with content (used by horizontal layout) */\n inlineControls?: boolean;\n /**\n * Optional: custom content renderer for draggable items that integrates the drag handle.\n * If provided, this is used instead of the default drag handle + renderContent pattern.\n * Used by vertical layout to place drag handle alongside the field stack.\n */\n renderDraggableContent?: DraggableContentRenderer<T>;\n}\n\n/**\n * Creates a set of item renderers (draggable, static, disabled) for a layout.\n * This eliminates the duplication of three nearly identical component variants.\n * The renderers are stable function references that don't capture variables in closures.\n */\nexport const createItemRenderers = <T,>() => {\n /**\n * Draggable item/row renderer with drag and drop functionality\n */\n const DraggableItem = (props: ItemProps<T>) => {\n const {item, index, id, columns, onRemove, removable, disabled, readOnly, classes, config} = props;\n const {attributes, listeners, setNodeRef, transform, transition, isDragging, setActivatorNodeRef} = useSortable(\n {id},\n );\n\n const cellContext: CollectionCellContext<T> = {\n removable,\n draggable: true,\n disabled,\n readOnly,\n onRemove,\n };\n\n const dragHandleProps = {setActivatorNodeRef, listeners, attributes};\n\n // Use renderDraggableContent if provided (integrates drag handle into content)\n if (config.renderDraggableContent) {\n return (\n <Box\n ref={setNodeRef}\n data-testid={`item-${id}`}\n className={classes[config.containerSelector]}\n style={\n transform\n ? {\n transform: CSS.Transform.toString(transform),\n transition,\n }\n : undefined\n }\n data-isdragging={isDragging}\n >\n {config.renderDraggableContent(item, index, columns, cellContext, classes, dragHandleProps)}\n </Box>\n );\n }\n\n // Default behavior: inline drag handle + content + remove button (used by horizontal layout)\n return (\n <Box\n ref={setNodeRef}\n data-testid={`item-${id}`}\n className={classes[config.containerSelector]}\n style={\n transform\n ? {\n transform: CSS.Transform.toString(transform),\n transition,\n }\n : undefined\n }\n data-isdragging={isDragging}\n >\n <DragHandle setActivatorNodeRef={setActivatorNodeRef} listeners={listeners} attributes={attributes} />\n {config.renderContent(item, index, columns, cellContext, classes)}\n {config.inlineControls && <RemoveButton removable={removable} onRemove={onRemove} />}\n </Box>\n );\n };\n\n /**\n * Static (non-draggable) item/row renderer\n */\n const StaticItem = (props: ItemProps<T>) => {\n const {item, index, id, columns, onRemove, removable, disabled, readOnly, classes, config} = props;\n\n const cellContext: CollectionCellContext<T> = {\n removable,\n draggable: false,\n disabled,\n readOnly,\n onRemove,\n };\n\n return (\n <Box data-testid={`item-${id}`} className={classes[config.containerSelector]}>\n {config.renderContent(item, index, columns, cellContext, classes)}\n {config.inlineControls && <RemoveButton removable={removable} onRemove={onRemove} />}\n </Box>\n );\n };\n\n /**\n * Disabled item/row renderer (no drag, no remove)\n */\n const DisabledItem = (props: ItemProps<T>) => {\n const {item, index, id, columns, disabled, readOnly, classes, config} = props;\n\n const cellContext: CollectionCellContext<T> = {\n removable: false,\n draggable: false,\n disabled,\n readOnly,\n };\n\n return (\n <Box data-testid={`item-${id}`} className={classes[config.containerSelector]}>\n {config.renderContent(item, index, columns, cellContext, classes)}\n </Box>\n );\n };\n\n return {DraggableItem, StaticItem, DisabledItem};\n};\n\n/**\n * Maps items to their appropriate renderer components based on state.\n */\nexport const mapItemsToComponents = <T,>(\n items: T[],\n renderers: ReturnType<typeof createItemRenderers<T>>,\n config: ItemRendererConfig<T>,\n classes: LayoutClasses,\n options: {\n getItemId?: (item: T, index: number) => string;\n onRemove?: (index: number) => void;\n removable?: boolean;\n draggable?: boolean;\n disabled?: boolean;\n readOnly?: boolean;\n columns: Array<CollectionColumnDef<T>>;\n },\n): ReactNode[] => {\n const {getItemId, onRemove, removable, draggable, disabled, readOnly, columns} = options;\n const {DraggableItem, StaticItem, DisabledItem} = renderers;\n\n return items.map((item, index) => {\n const id = getItemId?.(item, index) ?? String(index);\n const itemProps: ItemProps<T> = {\n item,\n index,\n id,\n columns,\n onRemove: onRemove ? () => onRemove(index) : undefined,\n removable,\n draggable,\n disabled,\n readOnly,\n classes,\n config,\n };\n\n if (disabled) {\n return <DisabledItem key={id} {...itemProps} />;\n }\n\n if (draggable) {\n return <DraggableItem key={id} {...itemProps} />;\n }\n\n return <StaticItem key={id} {...itemProps} />;\n });\n};\n"],"names":["createItemRenderers","mapItemsToComponents","DraggableItem","props","item","index","id","columns","onRemove","removable","disabled","readOnly","classes","config","useSortable","attributes","listeners","setNodeRef","transform","transition","isDragging","setActivatorNodeRef","cellContext","draggable","dragHandleProps","renderDraggableContent","Box","ref","data-testid","className","containerSelector","style","CSS","Transform","toString","undefined","data-isdragging","DragHandle","renderContent","inlineControls","RemoveButton","StaticItem","DisabledItem","items","renderers","options","getItemId","map","String","itemProps"],"mappings":"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"}
@@ -11,7 +11,7 @@ Object.defineProperty(exports, "VerticalLayout", {
11
11
  var _jsxruntime = require("react/jsx-runtime");
12
12
  var _VerticalLayoutBody = require("./VerticalLayoutBody.js");
13
13
  var _VerticalLayoutHeader = require("./VerticalLayoutHeader.js");
14
- var VerticalLayout = function(param) {
14
+ var VerticalLayout = function VerticalLayout(param) {
15
15
  var children = param.children;
16
16
  return /*#__PURE__*/ (0, _jsxruntime.jsx)(_jsxruntime.Fragment, {
17
17
  children: children
@@ -25,7 +25,7 @@ var _VerticalLayoutmodulecss = /*#__PURE__*/ _interop_require_default._(require(
25
25
  var defaultProps = _layoutConstants.LAYOUT_BODY_DEFAULT_PROPS;
26
26
  /**
27
27
  * Renders the stack of fields (columns) for a vertical layout item
28
- */ var renderFieldStack = function(item, index, columns, cellContext, layoutClasses) {
28
+ */ var renderFieldStack = function renderFieldStack(item, index, columns, cellContext, layoutClasses) {
29
29
  return /*#__PURE__*/ (0, _jsxruntime.jsx)(_core.Stack, {
30
30
  gap: "xs",
31
31
  className: layoutClasses.fieldGroup,
@@ -52,7 +52,7 @@ var defaultProps = _layoutConstants.LAYOUT_BODY_DEFAULT_PROPS;
52
52
  /**
53
53
  * Vertical layout content renderer - renders: [DragHandle?] [Stack of fields] [RemoveButton?]
54
54
  * For non-draggable items with remove button
55
- */ var renderVerticalContent = function(item, index, columns, cellContext, layoutClasses) {
55
+ */ var renderVerticalContent = function renderVerticalContent(item, index, columns, cellContext, layoutClasses) {
56
56
  var showRemove = cellContext.removable && cellContext.onRemove && !cellContext.draggable;
57
57
  return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_core.Group, {
58
58
  wrap: "nowrap",
@@ -71,7 +71,7 @@ var defaultProps = _layoutConstants.LAYOUT_BODY_DEFAULT_PROPS;
71
71
  /**
72
72
  * Vertical layout content renderer for draggable items
73
73
  * Renders: [DragHandle] [Stack of fields] [RemoveButton?]
74
- */ var renderVerticalDraggableContent = function(item, index, columns, cellContext, layoutClasses, dragHandleProps) {
74
+ */ var renderVerticalDraggableContent = function renderVerticalDraggableContent(item, index, columns, cellContext, layoutClasses, dragHandleProps) {
75
75
  return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_core.Group, {
76
76
  wrap: "nowrap",
77
77
  align: "flex-start",
@@ -93,7 +93,7 @@ var defaultProps = _layoutConstants.LAYOUT_BODY_DEFAULT_PROPS;
93
93
  };
94
94
  // Create renderers once - they are stable component references
95
95
  var verticalRenderers = (0, _itemRenderer.createItemRenderers)();
96
- var VerticalLayoutBody = function(props) {
96
+ var VerticalLayoutBody = function VerticalLayoutBody(props) {
97
97
  var collectionCtx = (0, _CollectionContext.useCollectionContext)();
98
98
  var _useProps = (0, _core.useProps)('VerticalLayoutBody', defaultProps, props), items = _useProps.items, onRemove = _useProps.onRemove, removable = _useProps.removable, draggable = _useProps.draggable, disabled = _useProps.disabled, readOnly = _useProps.readOnly, getItemId = _useProps.getItemId, gap = _useProps.gap, ref = _useProps.ref, others = _object_without_properties._(_useProps, [
99
99
  "items",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/components/Collection/layouts/vertical-layout/VerticalLayoutBody.tsx"],"sourcesContent":["import {Box, Group, Stack, useProps} from '@mantine/core';\nimport {ForwardedRef, useMemo} from 'react';\nimport {CollectionCellContext, CollectionColumnDef} from '../../CollectionColumn.types.js';\nimport {useCollectionContext} from '../../CollectionContext.js';\nimport {DragHandle} from '../shared/DragHandle.js';\nimport {renderColumnHeader} from '../shared/headerUtils.js';\nimport {\n createItemRenderers,\n DraggableContentRenderer,\n ItemContentRenderer,\n LayoutClasses,\n mapItemsToComponents,\n} from '../shared/itemRenderer.js';\nimport {LAYOUT_BODY_DEFAULT_PROPS, LayoutBodyProps} from '../shared/layoutConstants.js';\nimport {RemoveButton} from '../shared/RemoveButton.js';\nimport classes from './VerticalLayout.module.css';\n\nconst defaultProps: Partial<LayoutBodyProps<unknown>> = LAYOUT_BODY_DEFAULT_PROPS;\n\n/**\n * Renders the stack of fields (columns) for a vertical layout item\n */\nconst renderFieldStack = (\n item: any,\n index: number,\n columns: Array<CollectionColumnDef<any>>,\n cellContext: CollectionCellContext<any>,\n layoutClasses: LayoutClasses,\n) => (\n <Stack gap=\"xs\" className={layoutClasses.fieldGroup}>\n {columns.map((column, colIndex) => {\n const columnId = column.id ?? `column-${colIndex}`;\n const header = renderColumnHeader(column.header, colIndex);\n return (\n <Box key={columnId} className={layoutClasses.field}>\n {header && <Box className={layoutClasses.fieldLabel}>{header}</Box>}\n <Box className={layoutClasses.fieldContent}>{column.cell(item, index, cellContext)}</Box>\n </Box>\n );\n })}\n </Stack>\n);\n\n/**\n * Vertical layout content renderer - renders: [DragHandle?] [Stack of fields] [RemoveButton?]\n * For non-draggable items with remove button\n */\nconst renderVerticalContent: ItemContentRenderer<any> = (item, index, columns, cellContext, layoutClasses) => {\n const showRemove = cellContext.removable && cellContext.onRemove && !cellContext.draggable;\n\n return (\n <Group wrap=\"nowrap\" align=\"flex-start\" gap=\"sm\" className={layoutClasses.itemContent}>\n {renderFieldStack(item, index, columns, cellContext, layoutClasses)}\n {showRemove && <RemoveButton removable={cellContext.removable} onRemove={cellContext.onRemove} />}\n </Group>\n );\n};\n\n/**\n * Vertical layout content renderer for draggable items\n * Renders: [DragHandle] [Stack of fields] [RemoveButton?]\n */\nconst renderVerticalDraggableContent: DraggableContentRenderer<any> = (\n item,\n index,\n columns,\n cellContext,\n layoutClasses,\n dragHandleProps,\n) => (\n <Group wrap=\"nowrap\" align=\"flex-start\" gap=\"sm\" className={layoutClasses.itemContent}>\n <DragHandle\n setActivatorNodeRef={dragHandleProps.setActivatorNodeRef}\n listeners={dragHandleProps.listeners}\n attributes={dragHandleProps.attributes}\n />\n {renderFieldStack(item, index, columns, cellContext, layoutClasses)}\n {cellContext.removable && cellContext.onRemove && (\n <RemoveButton removable={cellContext.removable} onRemove={cellContext.onRemove} />\n )}\n </Group>\n);\n\n// Create renderers once - they are stable component references\nconst verticalRenderers = createItemRenderers<any>();\n\nexport const VerticalLayoutBody = <T,>(props: LayoutBodyProps<T> & {ref?: ForwardedRef<HTMLDivElement>}) => {\n const collectionCtx = useCollectionContext();\n const {items, onRemove, removable, draggable, disabled, readOnly, getItemId, gap, ref, ...others} = useProps(\n 'VerticalLayoutBody',\n defaultProps as LayoutBodyProps<T>,\n props,\n );\n\n const config = useMemo(\n () => ({\n renderContent: renderVerticalContent,\n containerSelector: 'item',\n inlineControls: false,\n renderDraggableContent: renderVerticalDraggableContent,\n }),\n [],\n );\n\n const itemComponents = mapItemsToComponents(items, verticalRenderers, config, classes as LayoutClasses, {\n getItemId,\n onRemove,\n removable,\n draggable,\n disabled,\n readOnly,\n columns: collectionCtx.columns,\n });\n\n return (\n <Stack ref={ref} gap={gap} {...others}>\n {itemComponents}\n </Stack>\n );\n};\n"],"names":["VerticalLayoutBody","defaultProps","LAYOUT_BODY_DEFAULT_PROPS","renderFieldStack","item","index","columns","cellContext","layoutClasses","Stack","gap","className","fieldGroup","map","column","colIndex","columnId","id","header","renderColumnHeader","Box","field","fieldLabel","fieldContent","cell","renderVerticalContent","showRemove","removable","onRemove","draggable","Group","wrap","align","itemContent","RemoveButton","renderVerticalDraggableContent","dragHandleProps","DragHandle","setActivatorNodeRef","listeners","attributes","verticalRenderers","createItemRenderers","props","collectionCtx","useCollectionContext","useProps","items","disabled","readOnly","getItemId","ref","others","config","useMemo","renderContent","containerSelector","inlineControls","renderDraggableContent","itemComponents","mapItemsToComponents","classes"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../src/components/Collection/layouts/vertical-layout/VerticalLayoutBody.tsx"],"sourcesContent":["import {Box, Group, Stack, useProps} from '@mantine/core';\nimport {ForwardedRef, useMemo} from 'react';\nimport {CollectionCellContext, CollectionColumnDef} from '../../CollectionColumn.types.js';\nimport {useCollectionContext} from '../../CollectionContext.js';\nimport {DragHandle} from '../shared/DragHandle.js';\nimport {renderColumnHeader} from '../shared/headerUtils.js';\nimport {\n createItemRenderers,\n DraggableContentRenderer,\n ItemContentRenderer,\n LayoutClasses,\n mapItemsToComponents,\n} from '../shared/itemRenderer.js';\nimport {LAYOUT_BODY_DEFAULT_PROPS, LayoutBodyProps} from '../shared/layoutConstants.js';\nimport {RemoveButton} from '../shared/RemoveButton.js';\nimport classes from './VerticalLayout.module.css';\n\nconst defaultProps: Partial<LayoutBodyProps<unknown>> = LAYOUT_BODY_DEFAULT_PROPS;\n\n/**\n * Renders the stack of fields (columns) for a vertical layout item\n */\nconst renderFieldStack = (\n item: any,\n index: number,\n columns: Array<CollectionColumnDef<any>>,\n cellContext: CollectionCellContext<any>,\n layoutClasses: LayoutClasses,\n) => (\n <Stack gap=\"xs\" className={layoutClasses.fieldGroup}>\n {columns.map((column, colIndex) => {\n const columnId = column.id ?? `column-${colIndex}`;\n const header = renderColumnHeader(column.header, colIndex);\n return (\n <Box key={columnId} className={layoutClasses.field}>\n {header && <Box className={layoutClasses.fieldLabel}>{header}</Box>}\n <Box className={layoutClasses.fieldContent}>{column.cell(item, index, cellContext)}</Box>\n </Box>\n );\n })}\n </Stack>\n);\n\n/**\n * Vertical layout content renderer - renders: [DragHandle?] [Stack of fields] [RemoveButton?]\n * For non-draggable items with remove button\n */\nconst renderVerticalContent: ItemContentRenderer<any> = (item, index, columns, cellContext, layoutClasses) => {\n const showRemove = cellContext.removable && cellContext.onRemove && !cellContext.draggable;\n\n return (\n <Group wrap=\"nowrap\" align=\"flex-start\" gap=\"sm\" className={layoutClasses.itemContent}>\n {renderFieldStack(item, index, columns, cellContext, layoutClasses)}\n {showRemove && <RemoveButton removable={cellContext.removable} onRemove={cellContext.onRemove} />}\n </Group>\n );\n};\n\n/**\n * Vertical layout content renderer for draggable items\n * Renders: [DragHandle] [Stack of fields] [RemoveButton?]\n */\nconst renderVerticalDraggableContent: DraggableContentRenderer<any> = (\n item,\n index,\n columns,\n cellContext,\n layoutClasses,\n dragHandleProps,\n) => (\n <Group wrap=\"nowrap\" align=\"flex-start\" gap=\"sm\" className={layoutClasses.itemContent}>\n <DragHandle\n setActivatorNodeRef={dragHandleProps.setActivatorNodeRef}\n listeners={dragHandleProps.listeners}\n attributes={dragHandleProps.attributes}\n />\n {renderFieldStack(item, index, columns, cellContext, layoutClasses)}\n {cellContext.removable && cellContext.onRemove && (\n <RemoveButton removable={cellContext.removable} onRemove={cellContext.onRemove} />\n )}\n </Group>\n);\n\n// Create renderers once - they are stable component references\nconst verticalRenderers = createItemRenderers<any>();\n\nexport const VerticalLayoutBody = <T,>(props: LayoutBodyProps<T> & {ref?: ForwardedRef<HTMLDivElement>}) => {\n const collectionCtx = useCollectionContext();\n const {items, onRemove, removable, draggable, disabled, readOnly, getItemId, gap, ref, ...others} = useProps(\n 'VerticalLayoutBody',\n defaultProps as LayoutBodyProps<T>,\n props,\n );\n\n const config = useMemo(\n () => ({\n renderContent: renderVerticalContent,\n containerSelector: 'item',\n inlineControls: false,\n renderDraggableContent: renderVerticalDraggableContent,\n }),\n [],\n );\n\n const itemComponents = mapItemsToComponents(items, verticalRenderers, config, classes as LayoutClasses, {\n getItemId,\n onRemove,\n removable,\n draggable,\n disabled,\n readOnly,\n columns: collectionCtx.columns,\n });\n\n return (\n <Stack ref={ref} gap={gap} {...others}>\n {itemComponents}\n </Stack>\n );\n};\n"],"names":["VerticalLayoutBody","defaultProps","LAYOUT_BODY_DEFAULT_PROPS","renderFieldStack","item","index","columns","cellContext","layoutClasses","Stack","gap","className","fieldGroup","map","column","colIndex","columnId","id","header","renderColumnHeader","Box","field","fieldLabel","fieldContent","cell","renderVerticalContent","showRemove","removable","onRemove","draggable","Group","wrap","align","itemContent","RemoveButton","renderVerticalDraggableContent","dragHandleProps","DragHandle","setActivatorNodeRef","listeners","attributes","verticalRenderers","createItemRenderers","props","collectionCtx","useCollectionContext","useProps","items","disabled","readOnly","getItemId","ref","others","config","useMemo","renderContent","containerSelector","inlineControls","renderDraggableContent","itemComponents","mapItemsToComponents","classes"],"mappings":"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"}
@@ -8,7 +8,7 @@ Object.defineProperty(exports, "VerticalLayoutHeader", {
8
8
  return VerticalLayoutHeader;
9
9
  }
10
10
  });
11
- var VerticalLayoutHeader = function(_props) {
11
+ var VerticalLayoutHeader = function VerticalLayoutHeader(_props) {
12
12
  return null;
13
13
  };
14
14
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/components/Collection/layouts/vertical-layout/VerticalLayoutHeader.tsx"],"sourcesContent":["import {ForwardedRef} from 'react';\nimport {LayoutHeaderProps} from '../shared/layoutConstants.js';\n\n/**\n * VerticalLayout doesn't have a global header - headers are shown per item\n * This component returns null but exists to maintain the layout interface\n */\nexport const VerticalLayoutHeader = (_props: LayoutHeaderProps & {ref?: ForwardedRef<HTMLDivElement>}): null => null;\n"],"names":["VerticalLayoutHeader","_props"],"mappings":";;;;+BAOaA;;;eAAAA;;;AAAN,IAAMA,uBAAuB,SAACC;WAA2E"}
1
+ {"version":3,"sources":["../../../../../../src/components/Collection/layouts/vertical-layout/VerticalLayoutHeader.tsx"],"sourcesContent":["import {ForwardedRef} from 'react';\nimport {LayoutHeaderProps} from '../shared/layoutConstants.js';\n\n/**\n * VerticalLayout doesn't have a global header - headers are shown per item\n * This component returns null but exists to maintain the layout interface\n */\nexport const VerticalLayoutHeader = (_props: LayoutHeaderProps & {ref?: ForwardedRef<HTMLDivElement>}): null => null;\n"],"names":["VerticalLayoutHeader","_props"],"mappings":";;;;+BAOaA;;;eAAAA;;;AAAN,IAAMA,uBAAuB,8BAACC;WAA2E"}
@@ -15,8 +15,8 @@ var _jsxruntime = require("react/jsx-runtime");
15
15
  var _plasmareacticons = require("@coveord/plasma-react-icons");
16
16
  var _core = require("@mantine/core");
17
17
  var _ActionIcon = require("../ActionIcon/ActionIcon.js");
18
- var CopyToClipboardButton = function(_param) {
19
- var value = _param.value, onCopy = _param.onCopy, color = _param.color, _param_tooltipLabelCopy = _param.tooltipLabelCopy, tooltipLabelCopy = _param_tooltipLabelCopy === void 0 ? 'Copy to clipboard' : _param_tooltipLabelCopy, _param_tooltipLabelCopied = _param.tooltipLabelCopied, tooltipLabelCopied = _param_tooltipLabelCopied === void 0 ? 'Copied' : _param_tooltipLabelCopied, others = _object_without_properties._(_param, [
18
+ var CopyToClipboardButton = function CopyToClipboardButton(_0) {
19
+ var value = _0.value, onCopy = _0.onCopy, color = _0.color, _0_tooltipLabelCopy = _0.tooltipLabelCopy, tooltipLabelCopy = _0_tooltipLabelCopy === void 0 ? 'Copy to clipboard' : _0_tooltipLabelCopy, _0_tooltipLabelCopied = _0.tooltipLabelCopied, tooltipLabelCopied = _0_tooltipLabelCopied === void 0 ? 'Copied' : _0_tooltipLabelCopied, others = _object_without_properties._(_0, [
20
20
  "value",
21
21
  "onCopy",
22
22
  "color",
@@ -26,14 +26,14 @@ var CopyToClipboardButton = function(_param) {
26
26
  return /*#__PURE__*/ (0, _jsxruntime.jsx)(_core.CopyButton, {
27
27
  value: value,
28
28
  timeout: 2000,
29
- children: function(param) {
29
+ children: function children(param) {
30
30
  var copied = param.copied, copy = param.copy;
31
31
  return /*#__PURE__*/ (0, _jsxruntime.jsx)(_core.Tooltip, {
32
32
  label: copied ? tooltipLabelCopied : tooltipLabelCopy,
33
33
  children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_ActionIcon.ActionIcon.Quaternary, _object_spread_props._(_object_spread._({
34
34
  "aria-label": tooltipLabelCopy,
35
35
  color: copied ? 'success' : color,
36
- onClick: function(clickEvent) {
36
+ onClick: function onClick(clickEvent) {
37
37
  copy();
38
38
  onCopy === null || onCopy === void 0 ? void 0 : onCopy(clickEvent);
39
39
  }
@@ -48,8 +48,8 @@ var CopyToClipboardButton = function(_param) {
48
48
  }
49
49
  });
50
50
  };
51
- var CopyToClipboard = function(_param) {
52
- var withLabel = _param.withLabel, others = _object_without_properties._(_param, [
51
+ var CopyToClipboard = function CopyToClipboard(_0) {
52
+ var withLabel = _0.withLabel, others = _object_without_properties._(_0, [
53
53
  "withLabel"
54
54
  ]);
55
55
  return withLabel ? /*#__PURE__*/ (0, _jsxruntime.jsx)(_core.TextInput, {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/CopyToClipboard/CopyToClipboard.tsx"],"sourcesContent":["import {IconClipboardCheck, IconClipboardText} from '@coveord/plasma-react-icons';\nimport {ActionIconProps, CopyButton, MantineColor, TextInput, Tooltip} from '@mantine/core';\nimport {FunctionComponent, MouseEventHandler} from 'react';\nimport {ActionIcon} from '../ActionIcon/ActionIcon.js';\n\nexport interface CopyToClipboardProps extends ActionIconProps {\n /**\n * The value to be copied to the clipboard.\n */\n value: string;\n /**\n * Whether to display the string to be copied alongside the button.\n *\n * @default false\n */\n withLabel?: boolean;\n /**\n * Called each time the value is copied to the clipboard\n */\n onCopy?: MouseEventHandler<HTMLButtonElement>;\n /**\n * The color of the icon when idle\n *\n * @default 'gray'\n */\n color?: MantineColor | (string & {});\n /**\n * The text displayed when hovering over the button\n *\n * @default 'Copy to clipboard'\n */\n tooltipLabelCopy?: string;\n /**\n * The text displayed when the value is copied to the clipboard\n *\n * @default 'Copied'\n */\n tooltipLabelCopied?: string;\n}\n\nconst CopyToClipboardButton: FunctionComponent<Omit<CopyToClipboardProps, 'withLabel'>> = ({\n value,\n onCopy,\n color,\n tooltipLabelCopy = 'Copy to clipboard',\n tooltipLabelCopied = 'Copied',\n ...others\n}) => (\n <CopyButton value={value} timeout={2000}>\n {({copied, copy}) => (\n <Tooltip label={copied ? tooltipLabelCopied : tooltipLabelCopy}>\n <ActionIcon.Quaternary\n aria-label={tooltipLabelCopy}\n color={copied ? 'success' : color}\n onClick={(clickEvent) => {\n copy();\n onCopy?.(clickEvent);\n }}\n {...others}\n >\n {copied ? <IconClipboardCheck size={16} /> : <IconClipboardText size={16} />}\n </ActionIcon.Quaternary>\n </Tooltip>\n )}\n </CopyButton>\n);\n\nexport const CopyToClipboard: FunctionComponent<CopyToClipboardProps> = ({withLabel, ...others}) =>\n withLabel ? (\n <TextInput\n value={others.value}\n readOnly\n autoComplete=\"off\"\n rightSection={<CopyToClipboardButton {...others} />}\n />\n ) : (\n <CopyToClipboardButton {...others} />\n );\n\nCopyToClipboard.displayName = 'CopyToClipboard';\n"],"names":["CopyToClipboard","CopyToClipboardButton","value","onCopy","color","tooltipLabelCopy","tooltipLabelCopied","others","CopyButton","timeout","copied","copy","Tooltip","label","ActionIcon","Quaternary","aria-label","onClick","clickEvent","IconClipboardCheck","size","IconClipboardText","withLabel","TextInput","readOnly","autoComplete","rightSection","displayName"],"mappings":";;;;+BAmEaA;;;eAAAA;;;;;;;gCAnEuC;oBACwB;0BAEnD;AAqCzB,IAAMC,wBAAoF;QACtFC,eAAAA,OACAC,gBAAAA,QACAC,eAAAA,wCACAC,kBAAAA,wDAAmB,kFACnBC,oBAAAA,4DAAqB,sCAClBC;QALHL;QACAC;QACAC;QACAC;QACAC;;yBAGA,qBAACE,gBAAU;QAACN,OAAOA;QAAOO,SAAS;kBAC9B;gBAAEC,eAAAA,QAAQC,aAAAA;iCACP,qBAACC,aAAO;gBAACC,OAAOH,SAASJ,qBAAqBD;0BAC1C,cAAA,qBAACS,sBAAU,CAACC,UAAU;oBAClBC,cAAYX;oBACZD,OAAOM,SAAS,YAAYN;oBAC5Ba,SAAS,SAACC;wBACNP;wBACAR,mBAAAA,6BAAAA,OAASe;oBACb;mBACIX;8BAEHG,uBAAS,qBAACS,oCAAkB;wBAACC,MAAM;uCAAS,qBAACC,mCAAiB;wBAACD,MAAM;;;;;;;AAOnF,IAAMpB,kBAA2D;QAAEsB,mBAAAA,WAAcf;QAAde;;WACtEA,0BACI,qBAACC,eAAS;QACNrB,OAAOK,OAAOL,KAAK;QACnBsB,QAAQ;QACRC,cAAa;QACbC,4BAAc,qBAACzB,4CAA0BM;uBAG7C,qBAACN,4CAA0BM;;AAGnCP,gBAAgB2B,WAAW,GAAG"}
1
+ {"version":3,"sources":["../../../../src/components/CopyToClipboard/CopyToClipboard.tsx"],"sourcesContent":["import {IconClipboardCheck, IconClipboardText} from '@coveord/plasma-react-icons';\nimport {ActionIconProps, CopyButton, MantineColor, TextInput, Tooltip} from '@mantine/core';\nimport {FunctionComponent, MouseEventHandler} from 'react';\nimport {ActionIcon} from '../ActionIcon/ActionIcon.js';\n\nexport interface CopyToClipboardProps extends ActionIconProps {\n /**\n * The value to be copied to the clipboard.\n */\n value: string;\n /**\n * Whether to display the string to be copied alongside the button.\n *\n * @default false\n */\n withLabel?: boolean;\n /**\n * Called each time the value is copied to the clipboard\n */\n onCopy?: MouseEventHandler<HTMLButtonElement>;\n /**\n * The color of the icon when idle\n *\n * @default 'gray'\n */\n color?: MantineColor | (string & {});\n /**\n * The text displayed when hovering over the button\n *\n * @default 'Copy to clipboard'\n */\n tooltipLabelCopy?: string;\n /**\n * The text displayed when the value is copied to the clipboard\n *\n * @default 'Copied'\n */\n tooltipLabelCopied?: string;\n}\n\nconst CopyToClipboardButton: FunctionComponent<Omit<CopyToClipboardProps, 'withLabel'>> = ({\n value,\n onCopy,\n color,\n tooltipLabelCopy = 'Copy to clipboard',\n tooltipLabelCopied = 'Copied',\n ...others\n}) => (\n <CopyButton value={value} timeout={2000}>\n {({copied, copy}) => (\n <Tooltip label={copied ? tooltipLabelCopied : tooltipLabelCopy}>\n <ActionIcon.Quaternary\n aria-label={tooltipLabelCopy}\n color={copied ? 'success' : color}\n onClick={(clickEvent) => {\n copy();\n onCopy?.(clickEvent);\n }}\n {...others}\n >\n {copied ? <IconClipboardCheck size={16} /> : <IconClipboardText size={16} />}\n </ActionIcon.Quaternary>\n </Tooltip>\n )}\n </CopyButton>\n);\n\nexport const CopyToClipboard: FunctionComponent<CopyToClipboardProps> = ({withLabel, ...others}) =>\n withLabel ? (\n <TextInput\n value={others.value}\n readOnly\n autoComplete=\"off\"\n rightSection={<CopyToClipboardButton {...others} />}\n />\n ) : (\n <CopyToClipboardButton {...others} />\n );\n\nCopyToClipboard.displayName = 'CopyToClipboard';\n"],"names":["CopyToClipboard","CopyToClipboardButton","value","onCopy","color","tooltipLabelCopy","tooltipLabelCopied","others","CopyButton","timeout","copied","copy","Tooltip","label","ActionIcon","Quaternary","aria-label","onClick","clickEvent","IconClipboardCheck","size","IconClipboardText","withLabel","TextInput","readOnly","autoComplete","rightSection","displayName"],"mappings":";;;;+BAmEaA;;;eAAAA;;;;;;;gCAnEuC;oBACwB;0BAEnD;AAqCzB,IAAMC,wBAAoF;QACtFC,WAAAA,OACAC,YAAAA,QACAC,WAAAA,gCACAC,kBAAAA,oDAAmB,sEACnBC,oBAAAA,wDAAqB,kCAClBC;;;;;;;yBAEH,qBAACC,gBAAU;QAACN,OAAOA;QAAOO,SAAS;kBAC9B;gBAAEC,eAAAA,QAAQC,aAAAA;iCACP,qBAACC,aAAO;gBAACC,OAAOH,SAASJ,qBAAqBD;0BAC1C,cAAA,qBAACS,sBAAU,CAACC,UAAU;oBAClBC,cAAYX;oBACZD,OAAOM,SAAS,YAAYN;oBAC5Ba,SAAS,SAATA,QAAUC;wBACNP;wBACAR,mBAAAA,6BAAAA,OAASe;oBACb;mBACIX;8BAEHG,uBAAS,qBAACS,oCAAkB;wBAACC,MAAM;uCAAS,qBAACC,mCAAiB;wBAACD,MAAM;;;;;;;AAOnF,IAAMpB,kBAA2D;QAAEsB,eAAAA,WAAcf;;;WACpFe,0BACI,qBAACC,eAAS;QACNrB,OAAOK,OAAOL,KAAK;QACnBsB,QAAQ;QACRC,cAAa;QACbC,4BAAc,qBAACzB,4CAA0BM;uBAG7C,qBAACN,4CAA0BM;;AAGnCP,gBAAgB2B,WAAW,GAAG"}
@@ -21,11 +21,11 @@ var _dayjs = /*#__PURE__*/ _interop_require_default._(require("dayjs"));
21
21
  var _useurlsyncedstate = require("../../hooks/use-url-synced-state");
22
22
  var _DateRangemodulecss = /*#__PURE__*/ _interop_require_default._(require("./DateRange.module.css"));
23
23
  var _DateRangePickerInlineCalendar = require("./DateRangePickerInlineCalendar");
24
- var serialization = function(input) {
24
+ var serialization = function serialization(input) {
25
25
  return Object.freeze(input);
26
26
  };
27
27
  var DATE_RANGE_SERIALIZATION = serialization({
28
- serializer: function(param) {
28
+ serializer: function serializer(param) {
29
29
  var _param = _sliced_to_array._(param, 2), from = _param[0], to = _param[1];
30
30
  return [
31
31
  [
@@ -40,7 +40,7 @@ var DATE_RANGE_SERIALIZATION = serialization({
40
40
  ]
41
41
  ];
42
42
  },
43
- deserializer: function(params, initial) {
43
+ deserializer: function deserializer(params, initial) {
44
44
  return [
45
45
  params.get('from') ? params.get('from') : initial[0],
46
46
  params.get('to') ? params.get('to') : initial[1]
@@ -49,7 +49,7 @@ var DATE_RANGE_SERIALIZATION = serialization({
49
49
  });
50
50
  var defaultProps = {
51
51
  placeholder: 'Select date range',
52
- formatter: function(time) {
52
+ formatter: function formatter(time) {
53
53
  return (0, _dayjs.default)(time).format('MMM D, YYYY');
54
54
  }
55
55
  };
@@ -106,18 +106,18 @@ var DateRangePicker = (0, _core.factory)(function(props, ref) {
106
106
  ],
107
107
  sync: !!syncWithUrl
108
108
  })), 2), dateRange = _useUrlSyncedState[0], setDateRange = _useUrlSyncedState[1];
109
- var handleApply = function(dates) {
109
+ var handleApply = function handleApply(dates) {
110
110
  if (value === undefined) {
111
111
  setDateRange(dates);
112
112
  }
113
113
  onChange === null || onChange === void 0 ? void 0 : onChange(dates);
114
114
  setOpened(false);
115
115
  };
116
- var handleClick = function() {
116
+ var handleClick = function handleClick() {
117
117
  setOpened(true);
118
118
  onClick === null || onClick === void 0 ? void 0 : onClick();
119
119
  };
120
- var handleCancel = function() {
120
+ var handleCancel = function handleCancel() {
121
121
  setOpened(false);
122
122
  onCancel === null || onCancel === void 0 ? void 0 : onCancel();
123
123
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/DateRangePicker/DateRangePicker.tsx"],"sourcesContent":["import {IconCalendar} from '@coveord/plasma-react-icons';\nimport {\n BoxProps,\n factory,\n Factory,\n InputBase,\n Popover,\n PopoverProps,\n StylesApiProps,\n useProps,\n useStyles,\n} from '@mantine/core';\nimport {DatesRangeValue, DateStringValue} from '@mantine/dates';\nimport {useUncontrolled} from '@mantine/hooks';\nimport dayjs from 'dayjs';\nimport {useUrlSyncedState, UseUrlSyncedStateOptions} from '../../hooks/use-url-synced-state';\nimport classes from './DateRange.module.css';\nimport {DateRangePickerInlineCalendar, DateRangePickerInlineCalendarProps} from './DateRangePickerInlineCalendar';\n\nconst serialization = (input: Pick<UseUrlSyncedStateOptions<DatesRangeValue<string>>, 'serializer' | 'deserializer'>) =>\n Object.freeze(input);\n\nconst DATE_RANGE_SERIALIZATION = serialization({\n serializer: ([from, to]) => [\n ['from', from ? new Date(from).toISOString() : '', true],\n ['to', to ? new Date(to).toISOString() : '', true],\n ],\n deserializer: (params, initial) => [\n params.get('from') ? params.get('from') : initial[0],\n params.get('to') ? params.get('to') : initial[1],\n ],\n});\n\nexport type DateRangePickerStylesNames = 'input';\n\nexport interface DateRangePickerProps\n extends\n BoxProps,\n Pick<DateRangePickerInlineCalendarProps, 'presets' | 'rangeCalendarProps' | 'startProps' | 'endProps'>,\n Pick<PopoverProps, 'opened' | 'defaultOpened'>,\n StylesApiProps<DateRangePickerFactory> {\n /**\n * Called when the target input is clicked\n */\n onClick?(): void;\n /**\n * Function called when the cancel button is clicked.\n */\n onCancel?(): void;\n /**\n * Function called when the date range value changes.\n */\n onChange?(dates: DatesRangeValue<string>): void;\n /**\n * Called when the popover opened state changes.\n */\n onOpenedChange?(opened: boolean): void;\n /**\n * Optional formatter function to format the date value.\n * Receives the date prop and should return a string.\n * @default (time) => dayjs(time).format('MMM D, YYYY')\n */\n formatter?: (time: dayjs.ConfigType) => string;\n /**\n * The placeholder label to display when no date range is selected.\n *\n * @default \"Select date range\"\n */\n placeholder?: string;\n /**\n * Default value for uncontrolled input\n */\n defaultValue?: DatesRangeValue<string>;\n /**\n * Value for controlled input\n */\n value?: DatesRangeValue<string>;\n /**\n * Sync the selected dates to URL query parameters\n */\n syncWithUrl?: boolean;\n /**\n * Error message to display.\n */\n error?: string;\n}\n\nexport type DateRangePickerFactory = Factory<{\n props: DateRangePickerProps;\n ref: HTMLButtonElement;\n stylesNames: DateRangePickerStylesNames;\n}>;\n\nconst defaultProps: Partial<DateRangePickerProps> = {\n placeholder: 'Select date range',\n formatter: (time) => dayjs(time).format('MMM D, YYYY'),\n};\n\nexport const DateRangePicker = factory<DateRangePickerFactory>((props: DateRangePickerProps, ref) => {\n const {\n defaultValue,\n value,\n opened,\n defaultOpened,\n onOpenedChange,\n onClick,\n onCancel,\n onChange,\n presets,\n startProps,\n endProps,\n rangeCalendarProps,\n formatter,\n placeholder,\n syncWithUrl,\n error,\n className,\n classNames,\n style,\n styles,\n vars,\n unstyled,\n ...others\n } = useProps('PlasmaDateRangePicker', defaultProps as Partial<DateRangePickerProps>, props);\n\n const getStyles = useStyles<DateRangePickerFactory>({\n name: 'DateRangePicker',\n classes,\n props,\n className,\n classNames,\n style,\n styles,\n unstyled,\n vars,\n });\n const stylesApiProps = {classNames, styles};\n\n const [_opened, setOpened] = useUncontrolled({\n value: opened,\n defaultValue: defaultOpened,\n finalValue: false,\n onChange: onOpenedChange,\n });\n\n const [dateRange, setDateRange] = useUrlSyncedState<DatesRangeValue<string>>({\n ...DATE_RANGE_SERIALIZATION,\n initialState: defaultValue !== undefined ? defaultValue : [null, null],\n sync: !!syncWithUrl,\n });\n\n const handleApply = (dates: DatesRangeValue<string>) => {\n if (value === undefined) {\n setDateRange(dates);\n }\n onChange?.(dates);\n setOpened(false);\n };\n\n const handleClick = () => {\n setOpened(true);\n onClick?.();\n };\n\n const handleCancel = () => {\n setOpened(false);\n onCancel?.();\n };\n\n const _value = value ?? dateRange;\n const formattedRange = `${formatter(_value[0])} - ${formatter(_value[1])}`;\n const dateRangeInitialized = _value.every((date: DateStringValue) => typeof date === 'string' && date !== '');\n\n return (\n <Popover opened={_opened} onChange={setOpened}>\n <Popover.Target>\n <InputBase\n ref={ref}\n component=\"button\"\n leftSection={<IconCalendar height={16} />}\n onClick={handleClick}\n error={error}\n {...getStyles('input', {className, style, ...stylesApiProps})}\n {...others}\n >\n {dateRangeInitialized ? formattedRange : placeholder}\n </InputBase>\n </Popover.Target>\n <Popover.Dropdown p={0}>\n <DateRangePickerInlineCalendar\n initialRange={_value}\n onApply={handleApply}\n onCancel={handleCancel}\n presets={presets}\n rangeCalendarProps={rangeCalendarProps}\n startProps={startProps}\n endProps={endProps}\n />\n </Popover.Dropdown>\n </Popover>\n );\n});\n"],"names":["DateRangePicker","serialization","input","Object","freeze","DATE_RANGE_SERIALIZATION","serializer","from","to","Date","toISOString","deserializer","params","initial","get","defaultProps","placeholder","formatter","time","dayjs","format","factory","props","ref","useProps","defaultValue","value","opened","defaultOpened","onOpenedChange","onClick","onCancel","onChange","presets","startProps","endProps","rangeCalendarProps","syncWithUrl","error","className","classNames","style","styles","vars","unstyled","others","getStyles","useStyles","name","classes","stylesApiProps","useUncontrolled","finalValue","_opened","setOpened","useUrlSyncedState","initialState","undefined","sync","dateRange","setDateRange","handleApply","dates","handleClick","handleCancel","_value","formattedRange","dateRangeInitialized","every","date","Popover","Target","InputBase","component","leftSection","IconCalendar","height","Dropdown","p","DateRangePickerInlineCalendar","initialRange","onApply"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/components/DateRangePicker/DateRangePicker.tsx"],"sourcesContent":["import {IconCalendar} from '@coveord/plasma-react-icons';\nimport {\n BoxProps,\n factory,\n Factory,\n InputBase,\n Popover,\n PopoverProps,\n StylesApiProps,\n useProps,\n useStyles,\n} from '@mantine/core';\nimport {DatesRangeValue, DateStringValue} from '@mantine/dates';\nimport {useUncontrolled} from '@mantine/hooks';\nimport dayjs from 'dayjs';\nimport {useUrlSyncedState, UseUrlSyncedStateOptions} from '../../hooks/use-url-synced-state';\nimport classes from './DateRange.module.css';\nimport {DateRangePickerInlineCalendar, DateRangePickerInlineCalendarProps} from './DateRangePickerInlineCalendar';\n\nconst serialization = (input: Pick<UseUrlSyncedStateOptions<DatesRangeValue<string>>, 'serializer' | 'deserializer'>) =>\n Object.freeze(input);\n\nconst DATE_RANGE_SERIALIZATION = serialization({\n serializer: ([from, to]) => [\n ['from', from ? new Date(from).toISOString() : '', true],\n ['to', to ? new Date(to).toISOString() : '', true],\n ],\n deserializer: (params, initial) => [\n params.get('from') ? params.get('from') : initial[0],\n params.get('to') ? params.get('to') : initial[1],\n ],\n});\n\nexport type DateRangePickerStylesNames = 'input';\n\nexport interface DateRangePickerProps\n extends\n BoxProps,\n Pick<DateRangePickerInlineCalendarProps, 'presets' | 'rangeCalendarProps' | 'startProps' | 'endProps'>,\n Pick<PopoverProps, 'opened' | 'defaultOpened'>,\n StylesApiProps<DateRangePickerFactory> {\n /**\n * Called when the target input is clicked\n */\n onClick?(): void;\n /**\n * Function called when the cancel button is clicked.\n */\n onCancel?(): void;\n /**\n * Function called when the date range value changes.\n */\n onChange?(dates: DatesRangeValue<string>): void;\n /**\n * Called when the popover opened state changes.\n */\n onOpenedChange?(opened: boolean): void;\n /**\n * Optional formatter function to format the date value.\n * Receives the date prop and should return a string.\n * @default (time) => dayjs(time).format('MMM D, YYYY')\n */\n formatter?: (time: dayjs.ConfigType) => string;\n /**\n * The placeholder label to display when no date range is selected.\n *\n * @default \"Select date range\"\n */\n placeholder?: string;\n /**\n * Default value for uncontrolled input\n */\n defaultValue?: DatesRangeValue<string>;\n /**\n * Value for controlled input\n */\n value?: DatesRangeValue<string>;\n /**\n * Sync the selected dates to URL query parameters\n */\n syncWithUrl?: boolean;\n /**\n * Error message to display.\n */\n error?: string;\n}\n\nexport type DateRangePickerFactory = Factory<{\n props: DateRangePickerProps;\n ref: HTMLButtonElement;\n stylesNames: DateRangePickerStylesNames;\n}>;\n\nconst defaultProps: Partial<DateRangePickerProps> = {\n placeholder: 'Select date range',\n formatter: (time) => dayjs(time).format('MMM D, YYYY'),\n};\n\nexport const DateRangePicker = factory<DateRangePickerFactory>((props: DateRangePickerProps, ref) => {\n const {\n defaultValue,\n value,\n opened,\n defaultOpened,\n onOpenedChange,\n onClick,\n onCancel,\n onChange,\n presets,\n startProps,\n endProps,\n rangeCalendarProps,\n formatter,\n placeholder,\n syncWithUrl,\n error,\n className,\n classNames,\n style,\n styles,\n vars,\n unstyled,\n ...others\n } = useProps('PlasmaDateRangePicker', defaultProps as Partial<DateRangePickerProps>, props);\n\n const getStyles = useStyles<DateRangePickerFactory>({\n name: 'DateRangePicker',\n classes,\n props,\n className,\n classNames,\n style,\n styles,\n unstyled,\n vars,\n });\n const stylesApiProps = {classNames, styles};\n\n const [_opened, setOpened] = useUncontrolled({\n value: opened,\n defaultValue: defaultOpened,\n finalValue: false,\n onChange: onOpenedChange,\n });\n\n const [dateRange, setDateRange] = useUrlSyncedState<DatesRangeValue<string>>({\n ...DATE_RANGE_SERIALIZATION,\n initialState: defaultValue !== undefined ? defaultValue : [null, null],\n sync: !!syncWithUrl,\n });\n\n const handleApply = (dates: DatesRangeValue<string>) => {\n if (value === undefined) {\n setDateRange(dates);\n }\n onChange?.(dates);\n setOpened(false);\n };\n\n const handleClick = () => {\n setOpened(true);\n onClick?.();\n };\n\n const handleCancel = () => {\n setOpened(false);\n onCancel?.();\n };\n\n const _value = value ?? dateRange;\n const formattedRange = `${formatter(_value[0])} - ${formatter(_value[1])}`;\n const dateRangeInitialized = _value.every((date: DateStringValue) => typeof date === 'string' && date !== '');\n\n return (\n <Popover opened={_opened} onChange={setOpened}>\n <Popover.Target>\n <InputBase\n ref={ref}\n component=\"button\"\n leftSection={<IconCalendar height={16} />}\n onClick={handleClick}\n error={error}\n {...getStyles('input', {className, style, ...stylesApiProps})}\n {...others}\n >\n {dateRangeInitialized ? formattedRange : placeholder}\n </InputBase>\n </Popover.Target>\n <Popover.Dropdown p={0}>\n <DateRangePickerInlineCalendar\n initialRange={_value}\n onApply={handleApply}\n onCancel={handleCancel}\n presets={presets}\n rangeCalendarProps={rangeCalendarProps}\n startProps={startProps}\n endProps={endProps}\n />\n </Popover.Dropdown>\n </Popover>\n );\n});\n"],"names":["DateRangePicker","serialization","input","Object","freeze","DATE_RANGE_SERIALIZATION","serializer","from","to","Date","toISOString","deserializer","params","initial","get","defaultProps","placeholder","formatter","time","dayjs","format","factory","props","ref","useProps","defaultValue","value","opened","defaultOpened","onOpenedChange","onClick","onCancel","onChange","presets","startProps","endProps","rangeCalendarProps","syncWithUrl","error","className","classNames","style","styles","vars","unstyled","others","getStyles","useStyles","name","classes","stylesApiProps","useUncontrolled","finalValue","_opened","setOpened","useUrlSyncedState","initialState","undefined","sync","dateRange","setDateRange","handleApply","dates","handleClick","handleCancel","_value","formattedRange","dateRangeInitialized","every","date","Popover","Target","InputBase","component","leftSection","IconCalendar","height","Dropdown","p","DateRangePickerInlineCalendar","initialRange","onApply"],"mappings":"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"}
@@ -20,13 +20,13 @@ var _Button = require("../Button/Button.js");
20
20
  var _DateRangemodulecss = /*#__PURE__*/ _interop_require_default._(require("./DateRange.module.css"));
21
21
  var _DateRangePickerPresetSelect = require("./DateRangePickerPresetSelect.js");
22
22
  var _EditableDateRangePicker = require("./EditableDateRangePicker.js");
23
- var isDateRangePickerValue = function(value) {
23
+ var isDateRangePickerValue = function isDateRangePickerValue(value) {
24
24
  return Array.isArray(value) && value.length === 2;
25
25
  };
26
- var endOfDay = function(value) {
26
+ var endOfDay = function endOfDay(value) {
27
27
  return value ? (0, _dayjs.default)(value).endOf('day').toISOString() : value;
28
28
  };
29
- var DateRangePickerInlineCalendar = function(param) {
29
+ var DateRangePickerInlineCalendar = function DateRangePickerInlineCalendar(param) {
30
30
  var initialRange = param.initialRange, onApply = param.onApply, onCancel = param.onCancel, presets = param.presets, startProps = param.startProps, endProps = param.endProps, rangeCalendarProps = param.rangeCalendarProps;
31
31
  var form = (0, _form.useForm)({
32
32
  initialValues: {
@@ -34,7 +34,7 @@ var DateRangePickerInlineCalendar = function(param) {
34
34
  }
35
35
  });
36
36
  var calendarInputProps = form.getInputProps('dates');
37
- var onCalendarChange = function(range) {
37
+ var onCalendarChange = function onCalendarChange(range) {
38
38
  // If the current value is [null, null] and a date is selected, set [selectedValue, null]
39
39
  if (isDateRangePickerValue(range) && range[0] && range[1] === null) {
40
40
  calendarInputProps.onChange([
@@ -49,7 +49,7 @@ var DateRangePickerInlineCalendar = function(param) {
49
49
  ] : range;
50
50
  calendarInputProps.onChange(normalized);
51
51
  };
52
- var onCalendarApply = function() {
52
+ var onCalendarApply = function onCalendarApply() {
53
53
  // In case the user only clicked the start date, but not the end date,
54
54
  // assume a single day was meant to be selected.
55
55
  if (!form.values.dates[1]) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/DateRangePicker/DateRangePickerInlineCalendar.tsx"],"sourcesContent":["import {Center, Group, Space} from '@mantine/core';\nimport {DatePicker, DatePickerBaseProps, type DateStringValue, type DatesRangeValue} from '@mantine/dates';\nimport {useForm} from '@mantine/form';\n\nimport dayjs from 'dayjs';\nimport {Button} from '../Button/Button.js';\nimport DateRangeClasses from './DateRange.module.css';\nimport {DateRangePickerPreset, DateRangePickerPresetSelect} from './DateRangePickerPresetSelect.js';\nimport {EditableDateRangePicker, EditableDateRangePickerProps} from './EditableDateRangePicker.js';\nexport interface DateRangePickerInlineCalendarProps\n extends Pick<EditableDateRangePickerProps, 'startProps' | 'endProps'> {\n /**\n * Initial selected range\n */\n initialRange: DatesRangeValue<DateStringValue | null>;\n /**\n * Function called when the user applies the new date range\n *\n * @param range the newly selected dates\n */\n onApply: (range: DatesRangeValue<DateStringValue | null>) => void;\n /**\n * Function called when the user click on the cancel button\n */\n onCancel: () => void;\n /**\n * The presets to display\n *\n * @default {}\n * @example\n * {\n * january: {label: 'January', range: [new Date(2022, 0, 1), new Date(2022, 0, 31)]},\n * february: {label: 'February', range: [new Date(2022, 1, 1), new Date(2022, 1, 28)]}\n * }\n */\n presets?: Record<string, DateRangePickerPreset>;\n /**\n * Props for RangeCalendar displayed in the popover\n */\n rangeCalendarProps?: Omit<\n DatePickerBaseProps,\n | 'value'\n | 'onChange'\n | 'isDateInRange'\n | 'isDateFirstInRange'\n | 'isDateLastInRange'\n | 'presets'\n | '__onPresetSelect'\n | 'allowDeselect'\n >;\n}\n\nconst isDateRangePickerValue = (value: unknown): value is DatesRangeValue => Array.isArray(value) && value.length === 2;\n\nconst endOfDay = (value: DateStringValue): DateStringValue => (value ? dayjs(value).endOf('day').toISOString() : value);\n\nexport const DateRangePickerInlineCalendar = ({\n initialRange,\n onApply,\n onCancel,\n presets,\n startProps,\n endProps,\n rangeCalendarProps,\n}: DateRangePickerInlineCalendarProps) => {\n const form = useForm({\n initialValues: {\n dates: initialRange,\n },\n });\n const calendarInputProps = form.getInputProps('dates');\n\n const onCalendarChange = (range: DateStringValue | DatesRangeValue<DateStringValue | null>): void => {\n // If the current value is [null, null] and a date is selected, set [selectedValue, null]\n if (isDateRangePickerValue(range) && range[0] && range[1] === null) {\n calendarInputProps.onChange([dayjs(range[0]).toISOString(), null]);\n return;\n }\n const normalized =\n isDateRangePickerValue(range) && range[1] ? [dayjs(range[0]).toISOString(), endOfDay(range[1])] : range;\n calendarInputProps.onChange(normalized);\n };\n\n const onCalendarApply = () => {\n // In case the user only clicked the start date, but not the end date,\n // assume a single day was meant to be selected.\n if (!form.values.dates[1]) {\n form.values.dates[1] = endOfDay(form.values.dates[0]);\n }\n onApply(form.values.dates);\n };\n return (\n <>\n <Group align=\"center\" gap=\"xs\" grow px=\"md\" py=\"sm\" className={DateRangeClasses.picker}>\n <EditableDateRangePicker\n value={calendarInputProps.value}\n {...calendarInputProps}\n startProps={startProps}\n endProps={endProps}\n />\n {presets ? (\n <>\n <Space w=\"sm\" />\n <DateRangePickerPresetSelect\n value={calendarInputProps.value}\n presets={presets}\n {...calendarInputProps}\n selectProps={{comboboxProps: {withinPortal: false}}}\n />\n </>\n ) : null}\n </Group>\n <Center py=\"sm\" px=\"md\">\n <DatePicker<'range'>\n numberOfColumns={2}\n columnsToScroll={1}\n type=\"range\"\n styles={{day: {textAlign: 'center'}}}\n firstDayOfWeek={0}\n allowSingleDateInRange\n {...rangeCalendarProps}\n {...calendarInputProps}\n onChange={onCalendarChange}\n />\n </Center>\n <Group justify=\"right\" gap=\"xs\" px=\"md\" py=\"sm\" className={DateRangeClasses.save}>\n <Button.Tertiary onClick={onCancel}>Cancel</Button.Tertiary>\n <Button.Primary onClick={onCalendarApply}>Apply</Button.Primary>\n </Group>\n </>\n );\n};\n"],"names":["DateRangePickerInlineCalendar","isDateRangePickerValue","value","Array","isArray","length","endOfDay","dayjs","endOf","toISOString","initialRange","onApply","onCancel","presets","startProps","endProps","rangeCalendarProps","form","useForm","initialValues","dates","calendarInputProps","getInputProps","onCalendarChange","range","onChange","normalized","onCalendarApply","values","Group","align","gap","grow","px","py","className","DateRangeClasses","picker","EditableDateRangePicker","Space","w","DateRangePickerPresetSelect","selectProps","comboboxProps","withinPortal","Center","DatePicker","numberOfColumns","columnsToScroll","type","styles","day","textAlign","firstDayOfWeek","allowSingleDateInRange","justify","save","Button","Tertiary","onClick","Primary"],"mappings":";;;;+BAwDaA;;;eAAAA;;;;;;;oBAxDsB;qBACuD;oBACpE;8DAEJ;sBACG;2EACQ;2CACoC;uCACG;AA4CpE,IAAMC,yBAAyB,SAACC;WAA6CC,MAAMC,OAAO,CAACF,UAAUA,MAAMG,MAAM,KAAK;;AAEtH,IAAMC,WAAW,SAACJ;WAA6CA,QAAQK,IAAAA,cAAK,EAACL,OAAOM,KAAK,CAAC,OAAOC,WAAW,KAAKP;;AAE1G,IAAMF,gCAAgC;QACzCU,qBAAAA,cACAC,gBAAAA,SACAC,iBAAAA,UACAC,gBAAAA,SACAC,mBAAAA,YACAC,iBAAAA,UACAC,2BAAAA;IAEA,IAAMC,OAAOC,IAAAA,aAAO,EAAC;QACjBC,eAAe;YACXC,OAAOV;QACX;IACJ;IACA,IAAMW,qBAAqBJ,KAAKK,aAAa,CAAC;IAE9C,IAAMC,mBAAmB,SAACC;QACtB,yFAAyF;QACzF,IAAIvB,uBAAuBuB,UAAUA,KAAK,CAAC,EAAE,IAAIA,KAAK,CAAC,EAAE,KAAK,MAAM;YAChEH,mBAAmBI,QAAQ,CAAC;gBAAClB,IAAAA,cAAK,EAACiB,KAAK,CAAC,EAAE,EAAEf,WAAW;gBAAI;aAAK;YACjE;QACJ;QACA,IAAMiB,aACFzB,uBAAuBuB,UAAUA,KAAK,CAAC,EAAE,GAAG;YAACjB,IAAAA,cAAK,EAACiB,KAAK,CAAC,EAAE,EAAEf,WAAW;YAAIH,SAASkB,KAAK,CAAC,EAAE;SAAE,GAAGA;QACtGH,mBAAmBI,QAAQ,CAACC;IAChC;IAEA,IAAMC,kBAAkB;QACpB,sEAAsE;QACtE,gDAAgD;QAChD,IAAI,CAACV,KAAKW,MAAM,CAACR,KAAK,CAAC,EAAE,EAAE;YACvBH,KAAKW,MAAM,CAACR,KAAK,CAAC,EAAE,GAAGd,SAASW,KAAKW,MAAM,CAACR,KAAK,CAAC,EAAE;QACxD;QACAT,QAAQM,KAAKW,MAAM,CAACR,KAAK;IAC7B;IACA,qBACI;;0BACI,sBAACS,WAAK;gBAACC,OAAM;gBAASC,KAAI;gBAAKC,IAAI;gBAACC,IAAG;gBAAKC,IAAG;gBAAKC,WAAWC,2BAAgB,CAACC,MAAM;;kCAClF,qBAACC,gDAAuB;wBACpBpC,OAAOmB,mBAAmBnB,KAAK;uBAC3BmB;wBACJP,YAAYA;wBACZC,UAAUA;;oBAEbF,wBACG;;0CACI,qBAAC0B,WAAK;gCAACC,GAAE;;0CACT,qBAACC,wDAA2B;gCACxBvC,OAAOmB,mBAAmBnB,KAAK;gCAC/BW,SAASA;+BACLQ;gCACJqB,aAAa;oCAACC,eAAe;wCAACC,cAAc;oCAAK;gCAAC;;;yBAG1D;;;0BAER,qBAACC,YAAM;gBAACX,IAAG;gBAAKD,IAAG;0BACf,cAAA,qBAACa,iBAAU;oBACPC,iBAAiB;oBACjBC,iBAAiB;oBACjBC,MAAK;oBACLC,QAAQ;wBAACC,KAAK;4BAACC,WAAW;wBAAQ;oBAAC;oBACnCC,gBAAgB;oBAChBC,sBAAsB;mBAClBtC,oBACAK;oBACJI,UAAUF;;;0BAGlB,sBAACM,WAAK;gBAAC0B,SAAQ;gBAAQxB,KAAI;gBAAKE,IAAG;gBAAKC,IAAG;gBAAKC,WAAWC,2BAAgB,CAACoB,IAAI;;kCAC5E,qBAACC,cAAM,CAACC,QAAQ;wBAACC,SAAS/C;kCAAU;;kCACpC,qBAAC6C,cAAM,CAACG,OAAO;wBAACD,SAAShC;kCAAiB;;;;;;AAI1D"}
1
+ {"version":3,"sources":["../../../../src/components/DateRangePicker/DateRangePickerInlineCalendar.tsx"],"sourcesContent":["import {Center, Group, Space} from '@mantine/core';\nimport {DatePicker, DatePickerBaseProps, type DateStringValue, type DatesRangeValue} from '@mantine/dates';\nimport {useForm} from '@mantine/form';\n\nimport dayjs from 'dayjs';\nimport {Button} from '../Button/Button.js';\nimport DateRangeClasses from './DateRange.module.css';\nimport {DateRangePickerPreset, DateRangePickerPresetSelect} from './DateRangePickerPresetSelect.js';\nimport {EditableDateRangePicker, EditableDateRangePickerProps} from './EditableDateRangePicker.js';\nexport interface DateRangePickerInlineCalendarProps\n extends Pick<EditableDateRangePickerProps, 'startProps' | 'endProps'> {\n /**\n * Initial selected range\n */\n initialRange: DatesRangeValue<DateStringValue | null>;\n /**\n * Function called when the user applies the new date range\n *\n * @param range the newly selected dates\n */\n onApply: (range: DatesRangeValue<DateStringValue | null>) => void;\n /**\n * Function called when the user click on the cancel button\n */\n onCancel: () => void;\n /**\n * The presets to display\n *\n * @default {}\n * @example\n * {\n * january: {label: 'January', range: [new Date(2022, 0, 1), new Date(2022, 0, 31)]},\n * february: {label: 'February', range: [new Date(2022, 1, 1), new Date(2022, 1, 28)]}\n * }\n */\n presets?: Record<string, DateRangePickerPreset>;\n /**\n * Props for RangeCalendar displayed in the popover\n */\n rangeCalendarProps?: Omit<\n DatePickerBaseProps,\n | 'value'\n | 'onChange'\n | 'isDateInRange'\n | 'isDateFirstInRange'\n | 'isDateLastInRange'\n | 'presets'\n | '__onPresetSelect'\n | 'allowDeselect'\n >;\n}\n\nconst isDateRangePickerValue = (value: unknown): value is DatesRangeValue => Array.isArray(value) && value.length === 2;\n\nconst endOfDay = (value: DateStringValue): DateStringValue => (value ? dayjs(value).endOf('day').toISOString() : value);\n\nexport const DateRangePickerInlineCalendar = ({\n initialRange,\n onApply,\n onCancel,\n presets,\n startProps,\n endProps,\n rangeCalendarProps,\n}: DateRangePickerInlineCalendarProps) => {\n const form = useForm({\n initialValues: {\n dates: initialRange,\n },\n });\n const calendarInputProps = form.getInputProps('dates');\n\n const onCalendarChange = (range: DateStringValue | DatesRangeValue<DateStringValue | null>): void => {\n // If the current value is [null, null] and a date is selected, set [selectedValue, null]\n if (isDateRangePickerValue(range) && range[0] && range[1] === null) {\n calendarInputProps.onChange([dayjs(range[0]).toISOString(), null]);\n return;\n }\n const normalized =\n isDateRangePickerValue(range) && range[1] ? [dayjs(range[0]).toISOString(), endOfDay(range[1])] : range;\n calendarInputProps.onChange(normalized);\n };\n\n const onCalendarApply = () => {\n // In case the user only clicked the start date, but not the end date,\n // assume a single day was meant to be selected.\n if (!form.values.dates[1]) {\n form.values.dates[1] = endOfDay(form.values.dates[0]);\n }\n onApply(form.values.dates);\n };\n return (\n <>\n <Group align=\"center\" gap=\"xs\" grow px=\"md\" py=\"sm\" className={DateRangeClasses.picker}>\n <EditableDateRangePicker\n value={calendarInputProps.value}\n {...calendarInputProps}\n startProps={startProps}\n endProps={endProps}\n />\n {presets ? (\n <>\n <Space w=\"sm\" />\n <DateRangePickerPresetSelect\n value={calendarInputProps.value}\n presets={presets}\n {...calendarInputProps}\n selectProps={{comboboxProps: {withinPortal: false}}}\n />\n </>\n ) : null}\n </Group>\n <Center py=\"sm\" px=\"md\">\n <DatePicker<'range'>\n numberOfColumns={2}\n columnsToScroll={1}\n type=\"range\"\n styles={{day: {textAlign: 'center'}}}\n firstDayOfWeek={0}\n allowSingleDateInRange\n {...rangeCalendarProps}\n {...calendarInputProps}\n onChange={onCalendarChange}\n />\n </Center>\n <Group justify=\"right\" gap=\"xs\" px=\"md\" py=\"sm\" className={DateRangeClasses.save}>\n <Button.Tertiary onClick={onCancel}>Cancel</Button.Tertiary>\n <Button.Primary onClick={onCalendarApply}>Apply</Button.Primary>\n </Group>\n </>\n );\n};\n"],"names":["DateRangePickerInlineCalendar","isDateRangePickerValue","value","Array","isArray","length","endOfDay","dayjs","endOf","toISOString","initialRange","onApply","onCancel","presets","startProps","endProps","rangeCalendarProps","form","useForm","initialValues","dates","calendarInputProps","getInputProps","onCalendarChange","range","onChange","normalized","onCalendarApply","values","Group","align","gap","grow","px","py","className","DateRangeClasses","picker","EditableDateRangePicker","Space","w","DateRangePickerPresetSelect","selectProps","comboboxProps","withinPortal","Center","DatePicker","numberOfColumns","columnsToScroll","type","styles","day","textAlign","firstDayOfWeek","allowSingleDateInRange","justify","save","Button","Tertiary","onClick","Primary"],"mappings":";;;;+BAwDaA;;;eAAAA;;;;;;;oBAxDsB;qBACuD;oBACpE;8DAEJ;sBACG;2EACQ;2CACoC;uCACG;AA4CpE,IAAMC,yBAAyB,gCAACC;WAA6CC,MAAMC,OAAO,CAACF,UAAUA,MAAMG,MAAM,KAAK;;AAEtH,IAAMC,WAAW,kBAACJ;WAA6CA,QAAQK,IAAAA,cAAK,EAACL,OAAOM,KAAK,CAAC,OAAOC,WAAW,KAAKP;;AAE1G,IAAMF,gCAAgC;QACzCU,qBAAAA,cACAC,gBAAAA,SACAC,iBAAAA,UACAC,gBAAAA,SACAC,mBAAAA,YACAC,iBAAAA,UACAC,2BAAAA;IAEA,IAAMC,OAAOC,IAAAA,aAAO,EAAC;QACjBC,eAAe;YACXC,OAAOV;QACX;IACJ;IACA,IAAMW,qBAAqBJ,KAAKK,aAAa,CAAC;IAE9C,IAAMC,mBAAmB,0BAACC;QACtB,yFAAyF;QACzF,IAAIvB,uBAAuBuB,UAAUA,KAAK,CAAC,EAAE,IAAIA,KAAK,CAAC,EAAE,KAAK,MAAM;YAChEH,mBAAmBI,QAAQ,CAAC;gBAAClB,IAAAA,cAAK,EAACiB,KAAK,CAAC,EAAE,EAAEf,WAAW;gBAAI;aAAK;YACjE;QACJ;QACA,IAAMiB,aACFzB,uBAAuBuB,UAAUA,KAAK,CAAC,EAAE,GAAG;YAACjB,IAAAA,cAAK,EAACiB,KAAK,CAAC,EAAE,EAAEf,WAAW;YAAIH,SAASkB,KAAK,CAAC,EAAE;SAAE,GAAGA;QACtGH,mBAAmBI,QAAQ,CAACC;IAChC;IAEA,IAAMC,kBAAkB;QACpB,sEAAsE;QACtE,gDAAgD;QAChD,IAAI,CAACV,KAAKW,MAAM,CAACR,KAAK,CAAC,EAAE,EAAE;YACvBH,KAAKW,MAAM,CAACR,KAAK,CAAC,EAAE,GAAGd,SAASW,KAAKW,MAAM,CAACR,KAAK,CAAC,EAAE;QACxD;QACAT,QAAQM,KAAKW,MAAM,CAACR,KAAK;IAC7B;IACA,qBACI;;0BACI,sBAACS,WAAK;gBAACC,OAAM;gBAASC,KAAI;gBAAKC,IAAI;gBAACC,IAAG;gBAAKC,IAAG;gBAAKC,WAAWC,2BAAgB,CAACC,MAAM;;kCAClF,qBAACC,gDAAuB;wBACpBpC,OAAOmB,mBAAmBnB,KAAK;uBAC3BmB;wBACJP,YAAYA;wBACZC,UAAUA;;oBAEbF,wBACG;;0CACI,qBAAC0B,WAAK;gCAACC,GAAE;;0CACT,qBAACC,wDAA2B;gCACxBvC,OAAOmB,mBAAmBnB,KAAK;gCAC/BW,SAASA;+BACLQ;gCACJqB,aAAa;oCAACC,eAAe;wCAACC,cAAc;oCAAK;gCAAC;;;yBAG1D;;;0BAER,qBAACC,YAAM;gBAACX,IAAG;gBAAKD,IAAG;0BACf,cAAA,qBAACa,iBAAU;oBACPC,iBAAiB;oBACjBC,iBAAiB;oBACjBC,MAAK;oBACLC,QAAQ;wBAACC,KAAK;4BAACC,WAAW;wBAAQ;oBAAC;oBACnCC,gBAAgB;oBAChBC,sBAAsB;mBAClBtC,oBACAK;oBACJI,UAAUF;;;0BAGlB,sBAACM,WAAK;gBAAC0B,SAAQ;gBAAQxB,KAAI;gBAAKE,IAAG;gBAAKC,IAAG;gBAAKC,WAAWC,2BAAgB,CAACoB,IAAI;;kCAC5E,qBAACC,cAAM,CAACC,QAAQ;wBAACC,SAAS/C;kCAAU;;kCACpC,qBAAC6C,cAAM,CAACG,OAAO;wBAACD,SAAShC;kCAAiB;;;;;;AAI1D"}
@@ -19,7 +19,7 @@ var _react = require("react");
19
19
  var _dayjs = /*#__PURE__*/ _interop_require_default._(require("dayjs"));
20
20
  var _DateRangePickerPresetSelect = require("./DateRangePickerPresetSelect.js");
21
21
  var _EditableDateRangePicker = require("./EditableDateRangePicker.js");
22
- var DateRangePickerPopoverCalendar = function(param) {
22
+ var DateRangePickerPopoverCalendar = function DateRangePickerPopoverCalendar(param) {
23
23
  var presets = param.presets, value = param.value, defaultValue = param.defaultValue, onChange = param.onChange, startProps = param.startProps, endProps = param.endProps, rangeCalendarProps = param.rangeCalendarProps;
24
24
  var _useState = _sliced_to_array._((0, _react.useState)(false), 2), opened = _useState[0], setOpened = _useState[1];
25
25
  var ref = (0, _hooks.useClickOutside)(function() {
@@ -34,7 +34,7 @@ var DateRangePickerPopoverCalendar = function(param) {
34
34
  null
35
35
  ]
36
36
  }), 2), _value = _useUncontrolled[0], handleChange = _useUncontrolled[1];
37
- var onCalendarChange = function(dates) {
37
+ var onCalendarChange = function onCalendarChange(dates) {
38
38
  if (dates[0] !== null) {
39
39
  dates[0] = (0, _dayjs.default)(dates[0]).toISOString();
40
40
  }
@@ -59,7 +59,7 @@ var DateRangePickerPopoverCalendar = function(param) {
59
59
  /*#__PURE__*/ (0, _jsxruntime.jsx)(_EditableDateRangePicker.EditableDateRangePicker, {
60
60
  value: _value,
61
61
  onChange: handleChange,
62
- onFocus: function() {
62
+ onFocus: function onFocus() {
63
63
  return setOpened(true);
64
64
  },
65
65
  startProps: startProps,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/DateRangePicker/DateRangePickerPopoverCalendar.tsx"],"sourcesContent":["import {Group, Popover, Space} from '@mantine/core';\nimport {CalendarBaseProps, DatePicker, type DateStringValue, type DatesRangeValue} from '@mantine/dates';\nimport {useClickOutside, useUncontrolled} from '@mantine/hooks';\nimport {useState} from 'react';\n\nimport dayjs from 'dayjs';\nimport {DateRangePickerPreset, DateRangePickerPresetSelect} from './DateRangePickerPresetSelect.js';\nimport {EditableDateRangePicker, EditableDateRangePickerProps} from './EditableDateRangePicker.js';\n\ninterface DateRangePickerPopoverCalendarProps extends Pick<EditableDateRangePickerProps, 'startProps' | 'endProps'> {\n /** Default value for uncontrolled input */\n defaultValue?: DatesRangeValue<DateStringValue | null>;\n /** Value for controlled input */\n value?: DatesRangeValue<DateStringValue | null>;\n /** onChange value for controlled input */\n onChange?(value: DatesRangeValue<DateStringValue | null>): void;\n /**\n * The presets to display\n *\n * @default {}\n * @example\n * {\n * january: {label: 'January', range: [new Date(2022, 0, 1), new Date(2022, 0, 31)]},\n * february: {label: 'February', range: [new Date(2022, 1, 1), new Date(2022, 1, 28)]}\n * }\n */\n presets?: Record<string, DateRangePickerPreset>;\n /**\n * Props for RangeCalendar\n */\n rangeCalendarProps?: Omit<\n CalendarBaseProps,\n 'value' | 'onChange' | 'isDateInRange' | 'isDateFirstInRange' | 'isDateLastInRange'\n >;\n}\n\nexport const DateRangePickerPopoverCalendar = ({\n presets,\n value,\n defaultValue,\n onChange,\n startProps,\n endProps,\n rangeCalendarProps,\n}: DateRangePickerPopoverCalendarProps) => {\n const [opened, setOpened] = useState(false);\n const ref = useClickOutside(() => setOpened(false));\n\n const [_value, handleChange] = useUncontrolled<DatesRangeValue<DateStringValue> | null>({\n value,\n defaultValue,\n onChange,\n finalValue: [null, null],\n });\n\n const onCalendarChange = (dates: DatesRangeValue<DateStringValue | null>) => {\n if (dates[0] !== null) {\n dates[0] = dayjs(dates[0]).toISOString();\n }\n if (dates[1] !== null) {\n dates[1] = dayjs(dates[1]).toISOString();\n }\n handleChange?.(dates);\n if (dates[1] !== null) {\n setOpened(false);\n }\n };\n\n return (\n <>\n <Popover opened={opened} onChange={setOpened} trapFocus>\n <Popover.Target>\n <Group align=\"center\">\n <EditableDateRangePicker\n value={_value}\n onChange={handleChange}\n onFocus={() => setOpened(true)}\n startProps={startProps}\n endProps={endProps}\n />\n {presets ? (\n <>\n <Space w=\"sm\" />\n <DateRangePickerPresetSelect presets={presets} value={_value} onChange={handleChange} />\n </>\n ) : null}\n </Group>\n </Popover.Target>\n <Popover.Dropdown>\n <DatePicker\n ref={ref}\n type=\"range\"\n styles={{day: {textAlign: 'center'}}}\n numberOfColumns={2}\n columnsToScroll={1}\n firstDayOfWeek={0}\n allowSingleDateInRange\n value={_value}\n onChange={onCalendarChange}\n {...rangeCalendarProps}\n />\n </Popover.Dropdown>\n </Popover>\n </>\n );\n};\n"],"names":["DateRangePickerPopoverCalendar","presets","value","defaultValue","onChange","startProps","endProps","rangeCalendarProps","useState","opened","setOpened","ref","useClickOutside","useUncontrolled","finalValue","_value","handleChange","onCalendarChange","dates","dayjs","toISOString","Popover","trapFocus","Target","Group","align","EditableDateRangePicker","onFocus","Space","w","DateRangePickerPresetSelect","Dropdown","DatePicker","type","styles","day","textAlign","numberOfColumns","columnsToScroll","firstDayOfWeek","allowSingleDateInRange"],"mappings":";;;;+BAoCaA;;;eAAAA;;;;;;;oBApCuB;qBACoD;qBACzC;qBACxB;8DAEL;2CAC+C;uCACG;AA6B7D,IAAMA,iCAAiC;QAC1CC,gBAAAA,SACAC,cAAAA,OACAC,qBAAAA,cACAC,iBAAAA,UACAC,mBAAAA,YACAC,iBAAAA,UACAC,2BAAAA;IAEA,IAA4BC,+BAAAA,IAAAA,eAAQ,EAAC,YAA9BC,SAAqBD,cAAbE,YAAaF;IAC5B,IAAMG,MAAMC,IAAAA,sBAAe,EAAC;eAAMF,UAAU;;IAE5C,IAA+BG,sCAAAA,IAAAA,sBAAe,EAA0C;QACpFX,OAAAA;QACAC,cAAAA;QACAC,UAAAA;QACAU,YAAY;YAAC;YAAM;SAAK;IAC5B,QALOC,SAAwBF,qBAAhBG,eAAgBH;IAO/B,IAAMI,mBAAmB,SAACC;QACtB,IAAIA,KAAK,CAAC,EAAE,KAAK,MAAM;YACnBA,KAAK,CAAC,EAAE,GAAGC,IAAAA,cAAK,EAACD,KAAK,CAAC,EAAE,EAAEE,WAAW;QAC1C;QACA,IAAIF,KAAK,CAAC,EAAE,KAAK,MAAM;YACnBA,KAAK,CAAC,EAAE,GAAGC,IAAAA,cAAK,EAACD,KAAK,CAAC,EAAE,EAAEE,WAAW;QAC1C;QACAJ,yBAAAA,mCAAAA,aAAeE;QACf,IAAIA,KAAK,CAAC,EAAE,KAAK,MAAM;YACnBR,UAAU;QACd;IACJ;IAEA,qBACI;kBACI,cAAA,sBAACW,aAAO;YAACZ,QAAQA;YAAQL,UAAUM;YAAWY,SAAS;;8BACnD,qBAACD,aAAO,CAACE,MAAM;8BACX,cAAA,sBAACC,WAAK;wBAACC,OAAM;;0CACT,qBAACC,gDAAuB;gCACpBxB,OAAOa;gCACPX,UAAUY;gCACVW,SAAS;2CAAMjB,UAAU;;gCACzBL,YAAYA;gCACZC,UAAUA;;4BAEbL,wBACG;;kDACI,qBAAC2B,WAAK;wCAACC,GAAE;;kDACT,qBAACC,wDAA2B;wCAAC7B,SAASA;wCAASC,OAAOa;wCAAQX,UAAUY;;;iCAE5E;;;;8BAGZ,qBAACK,aAAO,CAACU,QAAQ;8BACb,cAAA,qBAACC,iBAAU;wBACPrB,KAAKA;wBACLsB,MAAK;wBACLC,QAAQ;4BAACC,KAAK;gCAACC,WAAW;4BAAQ;wBAAC;wBACnCC,iBAAiB;wBACjBC,iBAAiB;wBACjBC,gBAAgB;wBAChBC,sBAAsB;wBACtBtC,OAAOa;wBACPX,UAAUa;uBACNV;;;;;AAM5B"}
1
+ {"version":3,"sources":["../../../../src/components/DateRangePicker/DateRangePickerPopoverCalendar.tsx"],"sourcesContent":["import {Group, Popover, Space} from '@mantine/core';\nimport {CalendarBaseProps, DatePicker, type DateStringValue, type DatesRangeValue} from '@mantine/dates';\nimport {useClickOutside, useUncontrolled} from '@mantine/hooks';\nimport {useState} from 'react';\n\nimport dayjs from 'dayjs';\nimport {DateRangePickerPreset, DateRangePickerPresetSelect} from './DateRangePickerPresetSelect.js';\nimport {EditableDateRangePicker, EditableDateRangePickerProps} from './EditableDateRangePicker.js';\n\ninterface DateRangePickerPopoverCalendarProps extends Pick<EditableDateRangePickerProps, 'startProps' | 'endProps'> {\n /** Default value for uncontrolled input */\n defaultValue?: DatesRangeValue<DateStringValue | null>;\n /** Value for controlled input */\n value?: DatesRangeValue<DateStringValue | null>;\n /** onChange value for controlled input */\n onChange?(value: DatesRangeValue<DateStringValue | null>): void;\n /**\n * The presets to display\n *\n * @default {}\n * @example\n * {\n * january: {label: 'January', range: [new Date(2022, 0, 1), new Date(2022, 0, 31)]},\n * february: {label: 'February', range: [new Date(2022, 1, 1), new Date(2022, 1, 28)]}\n * }\n */\n presets?: Record<string, DateRangePickerPreset>;\n /**\n * Props for RangeCalendar\n */\n rangeCalendarProps?: Omit<\n CalendarBaseProps,\n 'value' | 'onChange' | 'isDateInRange' | 'isDateFirstInRange' | 'isDateLastInRange'\n >;\n}\n\nexport const DateRangePickerPopoverCalendar = ({\n presets,\n value,\n defaultValue,\n onChange,\n startProps,\n endProps,\n rangeCalendarProps,\n}: DateRangePickerPopoverCalendarProps) => {\n const [opened, setOpened] = useState(false);\n const ref = useClickOutside(() => setOpened(false));\n\n const [_value, handleChange] = useUncontrolled<DatesRangeValue<DateStringValue> | null>({\n value,\n defaultValue,\n onChange,\n finalValue: [null, null],\n });\n\n const onCalendarChange = (dates: DatesRangeValue<DateStringValue | null>) => {\n if (dates[0] !== null) {\n dates[0] = dayjs(dates[0]).toISOString();\n }\n if (dates[1] !== null) {\n dates[1] = dayjs(dates[1]).toISOString();\n }\n handleChange?.(dates);\n if (dates[1] !== null) {\n setOpened(false);\n }\n };\n\n return (\n <>\n <Popover opened={opened} onChange={setOpened} trapFocus>\n <Popover.Target>\n <Group align=\"center\">\n <EditableDateRangePicker\n value={_value}\n onChange={handleChange}\n onFocus={() => setOpened(true)}\n startProps={startProps}\n endProps={endProps}\n />\n {presets ? (\n <>\n <Space w=\"sm\" />\n <DateRangePickerPresetSelect presets={presets} value={_value} onChange={handleChange} />\n </>\n ) : null}\n </Group>\n </Popover.Target>\n <Popover.Dropdown>\n <DatePicker\n ref={ref}\n type=\"range\"\n styles={{day: {textAlign: 'center'}}}\n numberOfColumns={2}\n columnsToScroll={1}\n firstDayOfWeek={0}\n allowSingleDateInRange\n value={_value}\n onChange={onCalendarChange}\n {...rangeCalendarProps}\n />\n </Popover.Dropdown>\n </Popover>\n </>\n );\n};\n"],"names":["DateRangePickerPopoverCalendar","presets","value","defaultValue","onChange","startProps","endProps","rangeCalendarProps","useState","opened","setOpened","ref","useClickOutside","useUncontrolled","finalValue","_value","handleChange","onCalendarChange","dates","dayjs","toISOString","Popover","trapFocus","Target","Group","align","EditableDateRangePicker","onFocus","Space","w","DateRangePickerPresetSelect","Dropdown","DatePicker","type","styles","day","textAlign","numberOfColumns","columnsToScroll","firstDayOfWeek","allowSingleDateInRange"],"mappings":";;;;+BAoCaA;;;eAAAA;;;;;;;oBApCuB;qBACoD;qBACzC;qBACxB;8DAEL;2CAC+C;uCACG;AA6B7D,IAAMA,iCAAiC;QAC1CC,gBAAAA,SACAC,cAAAA,OACAC,qBAAAA,cACAC,iBAAAA,UACAC,mBAAAA,YACAC,iBAAAA,UACAC,2BAAAA;IAEA,IAA4BC,+BAAAA,IAAAA,eAAQ,EAAC,YAA9BC,SAAqBD,cAAbE,YAAaF;IAC5B,IAAMG,MAAMC,IAAAA,sBAAe,EAAC;eAAMF,UAAU;;IAE5C,IAA+BG,sCAAAA,IAAAA,sBAAe,EAA0C;QACpFX,OAAAA;QACAC,cAAAA;QACAC,UAAAA;QACAU,YAAY;YAAC;YAAM;SAAK;IAC5B,QALOC,SAAwBF,qBAAhBG,eAAgBH;IAO/B,IAAMI,mBAAmB,0BAACC;QACtB,IAAIA,KAAK,CAAC,EAAE,KAAK,MAAM;YACnBA,KAAK,CAAC,EAAE,GAAGC,IAAAA,cAAK,EAACD,KAAK,CAAC,EAAE,EAAEE,WAAW;QAC1C;QACA,IAAIF,KAAK,CAAC,EAAE,KAAK,MAAM;YACnBA,KAAK,CAAC,EAAE,GAAGC,IAAAA,cAAK,EAACD,KAAK,CAAC,EAAE,EAAEE,WAAW;QAC1C;QACAJ,yBAAAA,mCAAAA,aAAeE;QACf,IAAIA,KAAK,CAAC,EAAE,KAAK,MAAM;YACnBR,UAAU;QACd;IACJ;IAEA,qBACI;kBACI,cAAA,sBAACW,aAAO;YAACZ,QAAQA;YAAQL,UAAUM;YAAWY,SAAS;;8BACnD,qBAACD,aAAO,CAACE,MAAM;8BACX,cAAA,sBAACC,WAAK;wBAACC,OAAM;;0CACT,qBAACC,gDAAuB;gCACpBxB,OAAOa;gCACPX,UAAUY;gCACVW,SAAS,SAATA;2CAAejB,UAAU;;gCACzBL,YAAYA;gCACZC,UAAUA;;4BAEbL,wBACG;;kDACI,qBAAC2B,WAAK;wCAACC,GAAE;;kDACT,qBAACC,wDAA2B;wCAAC7B,SAASA;wCAASC,OAAOa;wCAAQX,UAAUY;;;iCAE5E;;;;8BAGZ,qBAACK,aAAO,CAACU,QAAQ;8BACb,cAAA,qBAACC,iBAAU;wBACPrB,KAAKA;wBACLsB,MAAK;wBACLC,QAAQ;4BAACC,KAAK;gCAACC,WAAW;4BAAQ;wBAAC;wBACnCC,iBAAiB;wBACjBC,iBAAiB;wBACjBC,gBAAgB;wBAChBC,sBAAsB;wBACtBtC,OAAOa;wBACPX,UAAUa;uBACNV;;;;;AAM5B"}
@@ -16,7 +16,7 @@ var _jsxruntime = require("react/jsx-runtime");
16
16
  var _core = require("@mantine/core");
17
17
  var _dayjs = /*#__PURE__*/ _interop_require_default._(require("dayjs"));
18
18
  var _react = require("react");
19
- var DateRangePickerPresetSelect = function(param) {
19
+ var DateRangePickerPresetSelect = function DateRangePickerPresetSelect(param) {
20
20
  var presets = param.presets, value = param.value, onChange = param.onChange, _param_selectProps = param.selectProps, selectProps = _param_selectProps === void 0 ? {} : _param_selectProps;
21
21
  var selectData = Object.entries(presets).map(function(param) {
22
22
  var _param = _sliced_to_array._(param, 2), val = _param[0], label = _param[1].label;
@@ -25,7 +25,7 @@ var DateRangePickerPresetSelect = function(param) {
25
25
  label: label
26
26
  };
27
27
  });
28
- var getSelectedPreset = function() {
28
+ var getSelectedPreset = function getSelectedPreset() {
29
29
  if (value[0] !== null && value[1] !== null && (0, _dayjs.default)(value[0]).unix() !== (0, _dayjs.default)(value[1]).unix()) {
30
30
  var selected = Object.entries(presets).find(function(param) {
31
31
  var _param = _sliced_to_array._(param, 2), range = _param[1].range;
@@ -46,7 +46,7 @@ var DateRangePickerPresetSelect = function(param) {
46
46
  }, [
47
47
  value
48
48
  ]);
49
- var onChangePreset = function(presetId) {
49
+ var onChangePreset = function onChangePreset(presetId) {
50
50
  var range = presets[presetId].range;
51
51
  onChange === null || onChange === void 0 ? void 0 : onChange(range);
52
52
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/DateRangePicker/DateRangePickerPresetSelect.tsx"],"sourcesContent":["import {ComboboxItem, Select, SelectProps} from '@mantine/core';\nimport type {DatesRangeValue, DateStringValue} from '@mantine/dates';\nimport dayjs from 'dayjs';\nimport {useEffect, useState} from 'react';\n\nexport interface DateRangePickerPreset {\n label: string;\n range: DatesRangeValue<DateStringValue>;\n}\n\ninterface DateRangePickerPresetsSelectProps {\n presets: Record<string, DateRangePickerPreset>;\n value: DatesRangeValue<DateStringValue>;\n onChange?(value: DatesRangeValue): void;\n selectProps?: Partial<Omit<SelectProps, 'data' | 'value' | 'onChange'>>;\n}\n\nexport const DateRangePickerPresetSelect = ({\n presets,\n value,\n onChange,\n selectProps = {},\n}: DateRangePickerPresetsSelectProps) => {\n const selectData: ComboboxItem[] = Object.entries(presets).map(([val, {label}]) => ({value: val, label}));\n const getSelectedPreset = () => {\n if (value[0] !== null && value[1] !== null && dayjs(value[0]).unix() !== dayjs(value[1]).unix()) {\n const selected = Object.entries(presets).find(\n ([, {range}]) =>\n dayjs(range[0]).isSame(dayjs(value[0]).toISOString()) &&\n dayjs(range[1]).isSame(dayjs(value[1]).toISOString()),\n );\n if (selected) {\n return selected[0];\n }\n }\n return null;\n };\n\n const [selectedPreset, setSelectedPreset] = useState<string | null>(getSelectedPreset());\n\n useEffect(() => {\n const newPreset = getSelectedPreset();\n if (newPreset !== selectedPreset) {\n setSelectedPreset(newPreset);\n }\n }, [value]);\n\n const onChangePreset = (presetId: keyof typeof presets) => {\n const range = presets[presetId].range as any;\n onChange?.(range);\n };\n\n return (\n <Select\n label=\"Date range\"\n placeholder=\"Select a date range\"\n {...selectProps}\n value={selectedPreset}\n onChange={onChangePreset}\n data={selectData}\n maxDropdownHeight={240}\n />\n );\n};\n"],"names":["DateRangePickerPresetSelect","presets","value","onChange","selectProps","selectData","Object","entries","map","val","label","getSelectedPreset","dayjs","unix","selected","find","range","isSame","toISOString","useState","selectedPreset","setSelectedPreset","useEffect","newPreset","onChangePreset","presetId","Select","placeholder","data","maxDropdownHeight"],"mappings":";;;;+BAiBaA;;;eAAAA;;;;;;;;oBAjBmC;8DAE9B;qBACgB;AAc3B,IAAMA,8BAA8B;QACvCC,gBAAAA,SACAC,cAAAA,OACAC,iBAAAA,qCACAC,aAAAA,8CAAc,CAAC;IAEf,IAAMC,aAA6BC,OAAOC,OAAO,CAACN,SAASO,GAAG,CAAC;mDAAEC,iBAAK,AAACC,kBAAAA;eAAa;YAACR,OAAOO;YAAKC,OAAAA;QAAK;;IACtG,IAAMC,oBAAoB;QACtB,IAAIT,KAAK,CAAC,EAAE,KAAK,QAAQA,KAAK,CAAC,EAAE,KAAK,QAAQU,IAAAA,cAAK,EAACV,KAAK,CAAC,EAAE,EAAEW,IAAI,OAAOD,IAAAA,cAAK,EAACV,KAAK,CAAC,EAAE,EAAEW,IAAI,IAAI;YAC7F,IAAMC,WAAWR,OAAOC,OAAO,CAACN,SAASc,IAAI,CACzC;2DAAI,AAACC,kBAAAA;uBACDJ,IAAAA,cAAK,EAACI,KAAK,CAAC,EAAE,EAAEC,MAAM,CAACL,IAAAA,cAAK,EAACV,KAAK,CAAC,EAAE,EAAEgB,WAAW,OAClDN,IAAAA,cAAK,EAACI,KAAK,CAAC,EAAE,EAAEC,MAAM,CAACL,IAAAA,cAAK,EAACV,KAAK,CAAC,EAAE,EAAEgB,WAAW;;YAE1D,IAAIJ,UAAU;gBACV,OAAOA,QAAQ,CAAC,EAAE;YACtB;QACJ;QACA,OAAO;IACX;IAEA,IAA4CK,+BAAAA,IAAAA,eAAQ,EAAgBR,0BAA7DS,iBAAqCD,cAArBE,oBAAqBF;IAE5CG,IAAAA,gBAAS,EAAC;QACN,IAAMC,YAAYZ;QAClB,IAAIY,cAAcH,gBAAgB;YAC9BC,kBAAkBE;QACtB;IACJ,GAAG;QAACrB;KAAM;IAEV,IAAMsB,iBAAiB,SAACC;QACpB,IAAMT,QAAQf,OAAO,CAACwB,SAAS,CAACT,KAAK;QACrCb,qBAAAA,+BAAAA,SAAWa;IACf;IAEA,qBACI,qBAACU,YAAM;QACHhB,OAAM;QACNiB,aAAY;OACRvB;QACJF,OAAOkB;QACPjB,UAAUqB;QACVI,MAAMvB;QACNwB,mBAAmB;;AAG/B"}
1
+ {"version":3,"sources":["../../../../src/components/DateRangePicker/DateRangePickerPresetSelect.tsx"],"sourcesContent":["import {ComboboxItem, Select, SelectProps} from '@mantine/core';\nimport type {DatesRangeValue, DateStringValue} from '@mantine/dates';\nimport dayjs from 'dayjs';\nimport {useEffect, useState} from 'react';\n\nexport interface DateRangePickerPreset {\n label: string;\n range: DatesRangeValue<DateStringValue>;\n}\n\ninterface DateRangePickerPresetsSelectProps {\n presets: Record<string, DateRangePickerPreset>;\n value: DatesRangeValue<DateStringValue>;\n onChange?(value: DatesRangeValue): void;\n selectProps?: Partial<Omit<SelectProps, 'data' | 'value' | 'onChange'>>;\n}\n\nexport const DateRangePickerPresetSelect = ({\n presets,\n value,\n onChange,\n selectProps = {},\n}: DateRangePickerPresetsSelectProps) => {\n const selectData: ComboboxItem[] = Object.entries(presets).map(([val, {label}]) => ({value: val, label}));\n const getSelectedPreset = () => {\n if (value[0] !== null && value[1] !== null && dayjs(value[0]).unix() !== dayjs(value[1]).unix()) {\n const selected = Object.entries(presets).find(\n ([, {range}]) =>\n dayjs(range[0]).isSame(dayjs(value[0]).toISOString()) &&\n dayjs(range[1]).isSame(dayjs(value[1]).toISOString()),\n );\n if (selected) {\n return selected[0];\n }\n }\n return null;\n };\n\n const [selectedPreset, setSelectedPreset] = useState<string | null>(getSelectedPreset());\n\n useEffect(() => {\n const newPreset = getSelectedPreset();\n if (newPreset !== selectedPreset) {\n setSelectedPreset(newPreset);\n }\n }, [value]);\n\n const onChangePreset = (presetId: keyof typeof presets) => {\n const range = presets[presetId].range as any;\n onChange?.(range);\n };\n\n return (\n <Select\n label=\"Date range\"\n placeholder=\"Select a date range\"\n {...selectProps}\n value={selectedPreset}\n onChange={onChangePreset}\n data={selectData}\n maxDropdownHeight={240}\n />\n );\n};\n"],"names":["DateRangePickerPresetSelect","presets","value","onChange","selectProps","selectData","Object","entries","map","val","label","getSelectedPreset","dayjs","unix","selected","find","range","isSame","toISOString","useState","selectedPreset","setSelectedPreset","useEffect","newPreset","onChangePreset","presetId","Select","placeholder","data","maxDropdownHeight"],"mappings":";;;;+BAiBaA;;;eAAAA;;;;;;;;oBAjBmC;8DAE9B;qBACgB;AAc3B,IAAMA,8BAA8B;QACvCC,gBAAAA,SACAC,cAAAA,OACAC,iBAAAA,qCACAC,aAAAA,8CAAc,CAAC;IAEf,IAAMC,aAA6BC,OAAOC,OAAO,CAACN,SAASO,GAAG,CAAC;mDAAEC,iBAAK,AAACC,kBAAAA;eAAa;YAACR,OAAOO;YAAKC,OAAAA;QAAK;;IACtG,IAAMC,oBAAoB;QACtB,IAAIT,KAAK,CAAC,EAAE,KAAK,QAAQA,KAAK,CAAC,EAAE,KAAK,QAAQU,IAAAA,cAAK,EAACV,KAAK,CAAC,EAAE,EAAEW,IAAI,OAAOD,IAAAA,cAAK,EAACV,KAAK,CAAC,EAAE,EAAEW,IAAI,IAAI;YAC7F,IAAMC,WAAWR,OAAOC,OAAO,CAACN,SAASc,IAAI,CACzC;2DAAI,AAACC,kBAAAA;uBACDJ,IAAAA,cAAK,EAACI,KAAK,CAAC,EAAE,EAAEC,MAAM,CAACL,IAAAA,cAAK,EAACV,KAAK,CAAC,EAAE,EAAEgB,WAAW,OAClDN,IAAAA,cAAK,EAACI,KAAK,CAAC,EAAE,EAAEC,MAAM,CAACL,IAAAA,cAAK,EAACV,KAAK,CAAC,EAAE,EAAEgB,WAAW;;YAE1D,IAAIJ,UAAU;gBACV,OAAOA,QAAQ,CAAC,EAAE;YACtB;QACJ;QACA,OAAO;IACX;IAEA,IAA4CK,+BAAAA,IAAAA,eAAQ,EAAgBR,0BAA7DS,iBAAqCD,cAArBE,oBAAqBF;IAE5CG,IAAAA,gBAAS,EAAC;QACN,IAAMC,YAAYZ;QAClB,IAAIY,cAAcH,gBAAgB;YAC9BC,kBAAkBE;QACtB;IACJ,GAAG;QAACrB;KAAM;IAEV,IAAMsB,iBAAiB,wBAACC;QACpB,IAAMT,QAAQf,OAAO,CAACwB,SAAS,CAACT,KAAK;QACrCb,qBAAAA,+BAAAA,SAAWa;IACf;IAEA,qBACI,qBAACU,YAAM;QACHhB,OAAM;QACNiB,aAAY;OACRvB;QACJF,OAAOkB;QACPjB,UAAUqB;QACVI,MAAMvB;QACNwB,mBAAmB;;AAG/B"}