@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.
- package/.turbo/turbo-build.log +4 -4
- package/.turbo/turbo-test.log +104 -115
- package/dist/.tsbuildinfo +1 -1
- package/dist/cjs/components/ActionIcon/ActionIcon.js +9 -4
- package/dist/cjs/components/ActionIcon/ActionIcon.js.map +1 -1
- package/dist/cjs/components/Alert/Alert.js +4 -4
- package/dist/cjs/components/Alert/Alert.js.map +1 -1
- package/dist/cjs/components/Badge/Badge.js +1 -1
- package/dist/cjs/components/Badge/Badge.js.map +1 -1
- package/dist/cjs/components/BlankSlate/BlankSlate.js +1 -1
- package/dist/cjs/components/BrowserPreview/BrowserPreview.js +2 -2
- package/dist/cjs/components/BrowserPreview/BrowserPreview.js.map +1 -1
- package/dist/cjs/components/Button/Button.js +10 -5
- package/dist/cjs/components/Button/Button.js.map +1 -1
- package/dist/cjs/components/Button/ButtonWithDisabledTooltip.js +8 -3
- package/dist/cjs/components/Button/ButtonWithDisabledTooltip.js.map +1 -1
- package/dist/cjs/components/CheckboxIcon/CheckboxIcon.js +2 -2
- package/dist/cjs/components/CheckboxIcon/CheckboxIcon.js.map +1 -1
- package/dist/cjs/components/ChildForm/ChildForm.js.map +1 -1
- package/dist/cjs/components/Chip/Chip.js +8 -3
- package/dist/cjs/components/Chip/Chip.js.map +1 -1
- package/dist/cjs/components/CircleLoader/CircleLoader.js +8 -3
- package/dist/cjs/components/CircleLoader/CircleLoader.js.map +1 -1
- package/dist/cjs/components/CodeEditor/CodeEditor.js +9 -9
- package/dist/cjs/components/CodeEditor/CodeEditor.js.map +1 -1
- package/dist/cjs/components/CodeEditor/languages/xml.js +3 -3
- package/dist/cjs/components/CodeEditor/languages/xml.js.map +1 -1
- package/dist/cjs/components/CodeEditor/search/Search.js +3 -3
- package/dist/cjs/components/CodeEditor/search/Search.js.map +1 -1
- package/dist/cjs/components/Collection/Collection.js +12 -12
- package/dist/cjs/components/Collection/Collection.js.map +1 -1
- package/dist/cjs/components/Collection/CollectionAddButton.js +1 -1
- package/dist/cjs/components/Collection/CollectionItem.js +5 -5
- package/dist/cjs/components/Collection/CollectionItem.js.map +1 -1
- package/dist/cjs/components/Collection/enhanceWithCollectionProps.js +4 -4
- package/dist/cjs/components/Collection/enhanceWithCollectionProps.js.map +1 -1
- package/dist/cjs/components/Collection/layouts/horizontal-layout/HorizontalLayout.js +1 -1
- package/dist/cjs/components/Collection/layouts/horizontal-layout/HorizontalLayoutBody.js +2 -2
- package/dist/cjs/components/Collection/layouts/horizontal-layout/HorizontalLayoutBody.js.map +1 -1
- package/dist/cjs/components/Collection/layouts/horizontal-layout/HorizontalLayoutHeader.js +1 -1
- package/dist/cjs/components/Collection/layouts/horizontal-layout/HorizontalLayoutHeader.js.map +1 -1
- package/dist/cjs/components/Collection/layouts/shared/DragHandle.js +1 -1
- package/dist/cjs/components/Collection/layouts/shared/RemoveButton.js +1 -1
- package/dist/cjs/components/Collection/layouts/shared/columnUtils.js +2 -2
- package/dist/cjs/components/Collection/layouts/shared/columnUtils.js.map +1 -1
- package/dist/cjs/components/Collection/layouts/shared/headerUtils.js +1 -1
- package/dist/cjs/components/Collection/layouts/shared/headerUtils.js.map +1 -1
- package/dist/cjs/components/Collection/layouts/shared/itemRenderer.js +7 -7
- package/dist/cjs/components/Collection/layouts/shared/itemRenderer.js.map +1 -1
- package/dist/cjs/components/Collection/layouts/vertical-layout/VerticalLayout.js +1 -1
- package/dist/cjs/components/Collection/layouts/vertical-layout/VerticalLayoutBody.js +4 -4
- package/dist/cjs/components/Collection/layouts/vertical-layout/VerticalLayoutBody.js.map +1 -1
- package/dist/cjs/components/Collection/layouts/vertical-layout/VerticalLayoutHeader.js +1 -1
- package/dist/cjs/components/Collection/layouts/vertical-layout/VerticalLayoutHeader.js.map +1 -1
- package/dist/cjs/components/CopyToClipboard/CopyToClipboard.js +6 -6
- package/dist/cjs/components/CopyToClipboard/CopyToClipboard.js.map +1 -1
- package/dist/cjs/components/DateRangePicker/DateRangePicker.js +7 -7
- package/dist/cjs/components/DateRangePicker/DateRangePicker.js.map +1 -1
- package/dist/cjs/components/DateRangePicker/DateRangePickerInlineCalendar.js +5 -5
- package/dist/cjs/components/DateRangePicker/DateRangePickerInlineCalendar.js.map +1 -1
- package/dist/cjs/components/DateRangePicker/DateRangePickerPopoverCalendar.js +3 -3
- package/dist/cjs/components/DateRangePicker/DateRangePickerPopoverCalendar.js.map +1 -1
- package/dist/cjs/components/DateRangePicker/DateRangePickerPresetSelect.js +3 -3
- package/dist/cjs/components/DateRangePicker/DateRangePickerPresetSelect.js.map +1 -1
- package/dist/cjs/components/DateRangePicker/EditableDateRangePicker.js +3 -3
- package/dist/cjs/components/DateRangePicker/EditableDateRangePicker.js.map +1 -1
- package/dist/cjs/components/DateTimeRangePicker/DateTimeRangePicker.js +1 -1
- package/dist/cjs/components/DateTimeRangePicker/EditableDateTimeRangePicker.js +3 -3
- package/dist/cjs/components/DateTimeRangePicker/EditableDateTimeRangePicker.js.map +1 -1
- package/dist/cjs/components/EllipsisText/EllipsisText.js +3 -3
- package/dist/cjs/components/EllipsisText/EllipsisText.js.map +1 -1
- package/dist/cjs/components/Facet/DefaultFacetItem.js +3 -3
- package/dist/cjs/components/Facet/DefaultFacetItem.js.map +1 -1
- package/dist/cjs/components/Facet/Facet.js +5 -5
- package/dist/cjs/components/Facet/Facet.js.map +1 -1
- package/dist/cjs/components/Facet/FacetScrollArea.js +8 -3
- package/dist/cjs/components/Facet/FacetScrollArea.js.map +1 -1
- package/dist/cjs/components/Header/Header.js +1 -1
- package/dist/cjs/components/Header/Header.js.map +1 -1
- package/dist/cjs/components/Header/HeaderBreadcrumbs/HeaderBreadcrumbAnchor.js.map +1 -1
- package/dist/cjs/components/Header/HeaderBreadcrumbs/HeaderBreadcrumbText.js.map +1 -1
- package/dist/cjs/components/Header/HeaderBreadcrumbs/HeaderBreadcrumbs.js.map +1 -1
- package/dist/cjs/components/Header/HeaderDocAnchor/HeaderDocAnchor.js.map +1 -1
- package/dist/cjs/components/Header/HeaderRight/HeaderRight.js.map +1 -1
- package/dist/cjs/components/InfoToken/InfoToken.js +3 -3
- package/dist/cjs/components/InfoToken/InfoToken.js.map +1 -1
- package/dist/cjs/components/InlineConfirm/InlineConfirm.js +2 -2
- package/dist/cjs/components/InlineConfirm/InlineConfirm.js.map +1 -1
- package/dist/cjs/components/InlineConfirm/InlineConfirmPrompt.js +2 -2
- package/dist/cjs/components/InlineConfirm/InlineConfirmPrompt.js.map +1 -1
- package/dist/cjs/components/InlineConfirm/InlineConfirmTarget.js +9 -4
- package/dist/cjs/components/InlineConfirm/InlineConfirmTarget.js.map +1 -1
- package/dist/cjs/components/LastUpdated/LastUpdated.js +1 -1
- package/dist/cjs/components/LastUpdated/LastUpdated.js.map +1 -1
- package/dist/cjs/components/Menu/Menu.js +8 -3
- package/dist/cjs/components/Menu/Menu.js.map +1 -1
- package/dist/cjs/components/Modal/Modal.js +8 -3
- package/dist/cjs/components/Modal/Modal.js.map +1 -1
- package/dist/cjs/components/Modal/ModalFooter.js +1 -1
- package/dist/cjs/components/Modal/ModalFooter.js.map +1 -1
- package/dist/cjs/components/Prompt/Prompt.js.map +1 -1
- package/dist/cjs/components/Prompt/PromptCancelButton.js.map +1 -1
- package/dist/cjs/components/Prompt/PromptConfirmButton.js.map +1 -1
- package/dist/cjs/components/Prompt/icons/CriticalIcon.js +1 -1
- package/dist/cjs/components/Prompt/icons/InfoIcon.js +1 -1
- package/dist/cjs/components/Prompt/icons/SuccessIcon.js +1 -1
- package/dist/cjs/components/Prompt/icons/WarningIcon.js +1 -1
- package/dist/cjs/components/RadioCard/RadioCard.d.ts +4 -0
- package/dist/cjs/components/RadioCard/RadioCard.d.ts.map +1 -1
- package/dist/cjs/components/RadioCard/RadioCard.js +48 -43
- package/dist/cjs/components/RadioCard/RadioCard.js.map +1 -1
- package/dist/cjs/components/ReadOnly/ReadOnlyInputStyles.js +1 -1
- package/dist/cjs/components/ReadOnly/ReadOnlyInputStyles.js.map +1 -1
- package/dist/cjs/components/StatusToken/StatusToken.js +3 -3
- package/dist/cjs/components/StatusToken/StatusToken.js.map +1 -1
- package/dist/cjs/components/StickyFooter/StickyFooter.js.map +1 -1
- package/dist/cjs/components/Table/Table.js +6 -6
- package/dist/cjs/components/Table/Table.js.map +1 -1
- package/dist/cjs/components/Table/layouts/TableLayoutControl.js +1 -1
- package/dist/cjs/components/Table/layouts/row-layout/RowLayout.js +1 -1
- package/dist/cjs/components/Table/layouts/row-layout/RowLayout.js.map +1 -1
- package/dist/cjs/components/Table/layouts/row-layout/RowLayoutBody.js +8 -9
- package/dist/cjs/components/Table/layouts/row-layout/RowLayoutBody.js.map +1 -1
- package/dist/cjs/components/Table/layouts/row-layout/RowLayoutHeader.js +1 -1
- package/dist/cjs/components/Table/layouts/row-layout/RowLayoutHeader.js.map +1 -1
- package/dist/cjs/components/Table/table-actions/TableActionItem.js.map +1 -1
- package/dist/cjs/components/Table/table-actions/TableActionsList.js +4 -4
- package/dist/cjs/components/Table/table-actions/TableActionsList.js.map +1 -1
- package/dist/cjs/components/Table/table-actions/TableHeaderActions.js.map +1 -1
- package/dist/cjs/components/Table/table-column/TableActionsColumn.js +3 -3
- package/dist/cjs/components/Table/table-column/TableActionsColumn.js.map +1 -1
- package/dist/cjs/components/Table/table-column/TableCollapsibleColumn.js +4 -4
- package/dist/cjs/components/Table/table-column/TableCollapsibleColumn.js.map +1 -1
- package/dist/cjs/components/Table/table-column/TableSelectableColumn.js +3 -3
- package/dist/cjs/components/Table/table-column/TableSelectableColumn.js.map +1 -1
- package/dist/cjs/components/Table/table-columns-selector/TableColumnsSelector.js +3 -3
- package/dist/cjs/components/Table/table-columns-selector/TableColumnsSelector.js.map +1 -1
- package/dist/cjs/components/Table/table-date-range-picker/TableDateRangePicker.js +1 -1
- package/dist/cjs/components/Table/table-date-range-picker/TableDateRangePicker.js.map +1 -1
- package/dist/cjs/components/Table/table-filter/TableFilter.js +2 -2
- package/dist/cjs/components/Table/table-filter/TableFilter.js.map +1 -1
- package/dist/cjs/components/Table/table-footer/TableFooter.js +2 -2
- package/dist/cjs/components/Table/table-footer/TableFooter.js.map +1 -1
- package/dist/cjs/components/Table/table-header/TableHeader.js +1 -1
- package/dist/cjs/components/Table/table-header/TableHeader.js.map +1 -1
- package/dist/cjs/components/Table/table-header/Th.js +1 -1
- package/dist/cjs/components/Table/table-header/Th.js.map +1 -1
- package/dist/cjs/components/Table/table-last-updated/TableLastUpdated.js.map +1 -1
- package/dist/cjs/components/Table/table-loading/TableLoading.js +1 -1
- package/dist/cjs/components/Table/table-loading/TableLoading.js.map +1 -1
- package/dist/cjs/components/Table/table-no-data/TableNoData.js +1 -1
- package/dist/cjs/components/Table/table-pagination/TablePagination.js +3 -3
- package/dist/cjs/components/Table/table-pagination/TablePagination.js.map +1 -1
- package/dist/cjs/components/Table/table-per-page/TablePerPage.js +3 -3
- package/dist/cjs/components/Table/table-per-page/TablePerPage.js.map +1 -1
- package/dist/cjs/components/Table/table-predicate/TablePredicate.js +1 -1
- package/dist/cjs/components/Table/table-predicate/TablePredicate.js.map +1 -1
- package/dist/cjs/components/Table/use-table.js +22 -23
- package/dist/cjs/components/Table/use-table.js.map +1 -1
- package/dist/cjs/hooks/use-url-synced-state.js +6 -6
- package/dist/cjs/hooks/use-url-synced-state.js.map +1 -1
- package/dist/cjs/hooks/useClickWithLoading.js +2 -2
- package/dist/cjs/hooks/useClickWithLoading.js.map +1 -1
- package/dist/cjs/hooks/useControlledList.js +4 -4
- package/dist/cjs/hooks/useControlledList.js.map +1 -1
- package/dist/cjs/hooks/useParentHeight.js +2 -2
- package/dist/cjs/hooks/useParentHeight.js.map +1 -1
- package/dist/cjs/styles/RadioCard.module.css +1 -1
- package/dist/cjs/theme/PlasmaColors.js +1 -1
- package/dist/cjs/theme/PlasmaColors.js.map +1 -1
- package/dist/cjs/theme/Plasmantine.js +2 -2
- package/dist/cjs/theme/Plasmantine.js.map +1 -1
- package/dist/cjs/theme/Theme.js +12 -12
- package/dist/cjs/theme/Theme.js.map +1 -1
- package/dist/cjs/theme/mergeCSSVariablesResolvers.js +1 -1
- package/dist/cjs/theme/plasmaCSSVariablesResolver.js +2 -2
- package/dist/cjs/theme/plasmaCSSVariablesResolver.js.map +1 -1
- package/dist/cjs/theme/plasmaVariantColorResolver.js +1 -1
- package/dist/cjs/theme/plasmaVariantColorResolver.js.map +1 -1
- package/dist/cjs/utils/createFactoryComponent.js +1 -1
- package/dist/cjs/utils/createFactoryComponent.js.map +1 -1
- package/dist/cjs/utils/groupOptions.js +1 -1
- package/dist/cjs/utils/overrideComponent.js +2 -2
- package/dist/cjs/utils/overrideComponent.js.map +1 -1
- package/dist/esm/components/RadioCard/RadioCard.d.ts +4 -0
- package/dist/esm/components/RadioCard/RadioCard.d.ts.map +1 -1
- package/dist/esm/components/RadioCard/RadioCard.js +47 -43
- package/dist/esm/components/RadioCard/RadioCard.js.map +1 -1
- package/dist/esm/styles/RadioCard.module.css +1 -1
- package/package.json +26 -26
- package/src/components/RadioCard/RadioCard.tsx +24 -20
- package/src/components/RadioCard/__tests__/RadioCard.component.spec.tsx +34 -1
- 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
|
|
134
|
-
var id = (
|
|
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":";;;;+BAsFaA;;;eAAAA;;;;;;;;oBAtF6B;qBACN;iCAED;0BACV;2BACQ;4BAO1B;+BACkD;4BAC9B;gFACP;AAEpB,IAAMC,eAAkDC,0CAAyB;AAEjF;;CAEC,GACD,IAAMC,mBAAmB,
|
|
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 +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,
|
|
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(
|
|
19
|
-
var value =
|
|
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(
|
|
52
|
-
var withLabel =
|
|
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,
|
|
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":";;;;+BAkGaA;;;eAAAA;;;;;;;;;gCAlGc;oBAWpB;qBAEuB;8DACZ;iCACwC;2EACtC;6CAC4D;AAEhF,IAAMC,gBAAgB,
|
|
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,
|
|
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,
|
|
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,
|
|
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"}
|