schummar-table 1.0.1 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_tableTheme = require("./tableTheme-CSqMIpLB.cjs");
3
- const require_useTheme = require("./useTheme-BxEsZbTm.cjs");
2
+ const require_tableTheme = require("./tableTheme-CsTWp3yn.cjs");
3
+ const require_useTheme = require("./useTheme-BrKiZfIC.cjs");
4
4
  let react = require("react");
5
5
  let _emotion_react_jsx_runtime = require("@emotion/react/jsx-runtime");
6
6
  let _emotion_react = require("@emotion/react");
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
- import { a as TableSettingsProvider, i as TableSettingsContext, r as defaultClasses, t as mergeThemes } from "./tableTheme-BTWZIwYS.js";
2
- import { A as today, C as endOfDay, D as thisMonth, E as startOfDay, M as useCssVariables, O as thisWeek, S as dateIntersect, T as lastDays, _ as DatePickerProvider, a as useLibraryClassName, b as commonQuickOptions, c as castArray, d as getDescendants, f as helpers_exports, g as DatePicker, h as uniq, i as useTheme, j as debounce, k as thisYear, l as cx, m as toSingles, n as columnTheme, o as useUserClassName, p as orderBy, r as useTableTheme, s as asString, t as ThemeContext, u as getAncestors, v as DatePickerQuickOptions, w as getCalendarWeek, x as dateClamp, y as DefaultDatePicker } from "./useTheme-C2MxW5qw.js";
1
+ import { a as TableSettingsProvider, i as TableSettingsContext, r as defaultClasses, t as mergeThemes } from "./tableTheme-BgaqIBux.js";
2
+ import { A as today, C as endOfDay, D as thisMonth, E as startOfDay, M as useCssVariables, O as thisWeek, S as dateIntersect, T as lastDays, _ as DatePickerProvider, a as useLibraryClassName, b as commonQuickOptions, c as castArray, d as getDescendants, f as helpers_exports, g as DatePicker, h as uniq, i as useTheme, j as debounce, k as thisYear, l as cx, m as toSingles, n as columnTheme, o as useUserClassName, p as orderBy, r as useTableTheme, s as asString, t as ThemeContext, u as getAncestors, v as DatePickerQuickOptions, w as getCalendarWeek, x as dateClamp, y as DefaultDatePicker } from "./useTheme-B2ejsCOL.js";
3
3
  import { createContext, isValidElement, memo, useCallback, useContext, useEffect, useImperativeHandle, useLayoutEffect, useMemo, useRef, useState, useSyncExternalStore } from "react";
4
4
  import { Fragment as Fragment$1, jsx, jsxs } from "@emotion/react/jsx-runtime";
5
5
  import { ClassNames, css } from "@emotion/react";
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_tableTheme = require("./tableTheme-CSqMIpLB.cjs");
3
- const require_useTheme = require("./useTheme-BxEsZbTm.cjs");
2
+ const require_tableTheme = require("./tableTheme-CsTWp3yn.cjs");
3
+ const require_useTheme = require("./useTheme-BrKiZfIC.cjs");
4
4
  let react = require("react");
5
5
  let _emotion_react_jsx_runtime = require("@emotion/react/jsx-runtime");
6
6
  let _mantine_core = require("@mantine/core");
@@ -72,7 +72,7 @@ function MantineDatePicker(props) {
72
72
  value: min ? toDateString(min) : null,
73
73
  onChange: (date) => onChange(date ? fromDateString(date) : null, "calendar")
74
74
  }),
75
- showTime && /* @__PURE__ */ (0, _emotion_react_jsx_runtime.jsxs)("div", {
75
+ showTime && min && /* @__PURE__ */ (0, _emotion_react_jsx_runtime.jsxs)("div", {
76
76
  css: {
77
77
  display: "flex",
78
78
  alignItems: "center",
@@ -152,12 +152,16 @@ const mantineTheme = {
152
152
  size: "xs",
153
153
  css: { padding: "calc(var(--spacing) * 1.8)" }
154
154
  }),
155
- Popover: require_tableTheme.Popover,
155
+ Popover: (props) => /* @__PURE__ */ (0, _emotion_react_jsx_runtime.jsx)(require_tableTheme.Popover, {
156
+ ...props,
157
+ zIndex: "var(--mantine-z-index-popover)"
158
+ }),
156
159
  Badge: ({ badgeContent, children }) => /* @__PURE__ */ (0, _emotion_react_jsx_runtime.jsx)(_mantine_core.Indicator, {
157
160
  label: badgeContent,
158
161
  disabled: !badgeContent,
159
162
  size: 16,
160
163
  inline: true,
164
+ css: { display: "inline-flex" },
161
165
  children
162
166
  }),
163
167
  TextField: ({ startIcon, endIcon, inputRef, value, ...props }) => /* @__PURE__ */ (0, _emotion_react_jsx_runtime.jsx)(_mantine_core.TextInput, {
@@ -1 +1 @@
1
- {"version":3,"file":"mantineTheme.cjs","names":["useCssVariables","useState","dateIntersect","DatePicker","endOfDay","DatePickerQuickOptions","TimeInput","Button","ActionIcon","Checkbox","Indicator","TextInput","Loader","useMemo","mergeThemes","TableSettingsProvider"],"sources":["../src/theme/mantineTheme/datePicker.tsx","../src/theme/mantineTheme/index.tsx"],"sourcesContent":["import { DatePicker, TimeInput } from '@mantine/dates';\nimport { useEffect, useState } from 'react';\nimport type { DatePickerProps } from '../../components/datePicker';\nimport { dateIntersect, DatePickerQuickOptions, endOfDay } from '../../components/datePicker';\nimport { useCssVariables } from '../useCssVariables';\n\nconst pad = (n: number) => String(n).padStart(2, '0');\n\n// Mantine works with local `YYYY-MM-DD` strings; `new Date(string)` would parse them as UTC.\nconst toDateString = (date: Date) =>\n `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())}`;\n\nconst fromDateString = (value: string) => {\n const [year = 0, month = 1, day = 1] = value.split('-').map(Number);\n return new Date(year, month - 1, day);\n};\n\nexport function MantineDatePicker(props: DatePickerProps) {\n const {\n value,\n onChange,\n rangeSelect,\n locale,\n firstDayOfWeek,\n defaultDateInView,\n minDate,\n maxDate,\n showCalendarWeek,\n blockedRanges = [],\n showTime,\n } = props;\n const cssVariables = useCssVariables();\n\n const min = value instanceof Date ? value : value?.min;\n const max = value instanceof Date ? value : value?.max;\n const [pendingMin, setPendingMin] = useState<string>();\n\n const [dateInViewLocal, setDateInViewLocal] = useState(\n () => max ?? defaultDateInView ?? new Date(),\n );\n const dateInView = props.dateInView ?? dateInViewLocal;\n\n function setDateInView(date: Date) {\n setDateInViewLocal(date);\n props.onDateInViewChange?.(date);\n }\n\n useEffect(() => {\n setDateInViewLocal(max ?? defaultDateInView ?? new Date());\n }, [max?.getTime(), defaultDateInView?.getTime()]);\n\n useEffect(() => {\n if (!rangeSelect) {\n setPendingMin(undefined);\n }\n }, [rangeSelect]);\n\n const calendarProps = {\n locale,\n firstDayOfWeek,\n minDate,\n maxDate,\n withWeekNumbers: showCalendarWeek,\n date: toDateString(dateInView),\n onDateChange: (date: string) => setDateInView(fromDateString(date)),\n getDayProps: (date: string) =>\n blockedRanges.some((range) => dateIntersect(fromDateString(date), range))\n ? { 'data-blocked': true }\n : {},\n };\n\n const showSeconds = typeof showTime === 'object' ? showTime.showSeconds !== false : true;\n\n return (\n <div\n css={[\n cssVariables,\n {\n display: 'grid',\n justifyItems: 'center',\n gap: 'var(--spacing)',\n\n '& [data-blocked]:not([data-selected]):not([data-in-range])': {\n backgroundColor: 'var(--mantine-color-red-light)',\n color: 'var(--mantine-color-red-light-color)',\n },\n\n '& [data-blocked][data-selected], & [data-blocked][data-in-range]': {\n boxShadow: 'inset 0 0 0 2px var(--mantine-color-red-filled)',\n },\n },\n ]}\n >\n {rangeSelect ? (\n <DatePicker\n {...calendarProps}\n type=\"range\"\n allowSingleDateInRange\n value={\n pendingMin\n ? [pendingMin, null]\n : [min ? toDateString(min) : null, max ? toDateString(max) : null]\n }\n onChange={([start, end]) => {\n if (start && end) {\n setPendingMin(undefined);\n onChange(\n { min: fromDateString(start), max: endOfDay(fromDateString(end)) },\n 'calendar',\n );\n } else {\n setPendingMin(start ?? undefined);\n }\n }}\n />\n ) : (\n <DatePicker\n {...calendarProps}\n value={min ? toDateString(min) : null}\n onChange={(date) => onChange(date ? fromDateString(date) : null, 'calendar')}\n />\n )}\n\n {showTime && (\n <div css={{ display: 'flex', alignItems: 'center', gap: 'var(--spacing)' }}>\n <TimeField\n date={min}\n withSeconds={showSeconds}\n onChange={(newMin) =>\n onChange(\n rangeSelect && max ? { min: newMin, max: newMin > max ? newMin : max } : newMin,\n 'input',\n )\n }\n />\n\n {rangeSelect && (\n <>\n {' - '}\n <TimeField\n date={max}\n withSeconds={showSeconds}\n onChange={(newMax) =>\n min && onChange({ min: newMax < min ? newMax : min, max: newMax }, 'input')\n }\n />\n </>\n )}\n </div>\n )}\n\n <DatePickerQuickOptions {...props} onSelect={() => setPendingMin(undefined)} />\n </div>\n );\n}\n\nfunction TimeField({\n date,\n withSeconds,\n onChange,\n}: {\n date?: Date;\n withSeconds: boolean;\n onChange: (date: Date) => void;\n}) {\n const value = date\n ? [date.getHours(), date.getMinutes(), ...(withSeconds ? [date.getSeconds()] : [])]\n .map(pad)\n .join(':')\n : '';\n\n return (\n <TimeInput\n size=\"xs\"\n withSeconds={withSeconds}\n disabled={!date}\n value={value}\n onChange={(event) => {\n const [hours, minutes, seconds = 0] = event.currentTarget.value.split(':').map(Number);\n if (!date || hours === undefined || minutes === undefined || Number.isNaN(hours)) {\n return;\n }\n\n const next = new Date(date);\n next.setHours(hours, minutes, seconds, 0);\n onChange(next);\n }}\n />\n );\n}\n","import { ActionIcon, Button, Checkbox, Indicator, Loader, TextInput } from '@mantine/core';\nimport type { ReactNode } from 'react';\nimport { useMemo } from 'react';\nimport { TableSettingsProvider } from '../../misc/tableSettings';\nimport type { PartialTableTheme } from '../../types';\nimport { Popover } from '../defaultTheme/popover';\nimport { mergeThemes } from '../tableTheme';\nimport { MantineDatePicker } from './datePicker';\n\nconst buttonVariants = {\n text: 'subtle',\n outlined: 'default',\n contained: 'filled',\n} as const;\n\nexport const mantineTheme: PartialTableTheme = {\n components: {\n Button: ({ startIcon, variant = 'text', ...props }) => (\n <Button\n {...props}\n variant={buttonVariants[variant]}\n color={variant === 'contained' ? undefined : 'gray'}\n c={variant === 'contained' ? undefined : 'inherit'}\n leftSection={startIcon}\n size=\"sm\"\n justify=\"flex-start\"\n />\n ),\n IconButton: (props) => (\n <ActionIcon\n {...props}\n variant=\"subtle\"\n color=\"gray\"\n c=\"inherit\"\n radius=\"xl\"\n css={{ fontSize: 'var(--mantine-font-size-sm)' }}\n />\n ),\n Checkbox: (props) => (\n <Checkbox {...props} size=\"xs\" css={{ padding: 'calc(var(--spacing) * 1.8)' }} />\n ),\n Popover,\n Badge: ({ badgeContent, children }) => (\n <Indicator label={badgeContent} disabled={!badgeContent} size={16} inline>\n {children}\n </Indicator>\n ),\n TextField: ({ startIcon, endIcon, inputRef, value, ...props }) => (\n <TextInput\n {...props}\n ref={inputRef}\n value={value ?? ''}\n leftSection={startIcon}\n rightSection={endIcon}\n leftSectionPointerEvents=\"all\"\n rightSectionPointerEvents=\"all\"\n size=\"sm\"\n />\n ),\n Spinner: (props) => <Loader {...props} size=\"sm\" />,\n DatePicker: MantineDatePicker,\n },\n // Mantine sets `color-scheme` on :root, so light-dark() follows its color scheme.\n colors: {\n primary: {\n main: 'var(--mantine-primary-color-filled)',\n light: 'var(--mantine-primary-color-4)',\n contrastText: 'var(--mantine-primary-color-contrast)',\n },\n secondary: {\n main: 'var(--mantine-color-gray-filled)',\n light: 'var(--mantine-color-gray-4)',\n contrastText: 'var(--mantine-color-white)',\n },\n blocked: {\n main: 'var(--mantine-color-red-filled)',\n light: 'var(--mantine-color-red-4)',\n contrastText: 'var(--mantine-color-white)',\n },\n background: 'var(--mantine-color-body)',\n text: 'var(--mantine-color-text)',\n border: 'var(--mantine-color-default-border)',\n borderLight: 'light-dark(var(--mantine-color-gray-2), var(--mantine-color-dark-5))',\n },\n};\n\nexport function MantineTableThemeProvider({\n theme,\n children,\n}: {\n theme?: PartialTableTheme;\n children?: ReactNode;\n}) {\n const _theme = useMemo(() => mergeThemes(mantineTheme, theme ?? {}), [theme]);\n\n return <TableSettingsProvider theme={_theme}>{children}</TableSettingsProvider>;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"mantineTheme.cjs","names":["useCssVariables","useState","dateIntersect","DatePicker","endOfDay","DatePickerQuickOptions","TimeInput","Button","ActionIcon","Checkbox","Popover","Indicator","TextInput","Loader","useMemo","mergeThemes","TableSettingsProvider"],"sources":["../src/theme/mantineTheme/datePicker.tsx","../src/theme/mantineTheme/index.tsx"],"sourcesContent":["import { DatePicker, TimeInput } from '@mantine/dates';\nimport { useEffect, useState } from 'react';\nimport type { DatePickerProps } from '../../components/datePicker';\nimport { dateIntersect, DatePickerQuickOptions, endOfDay } from '../../components/datePicker';\nimport { useCssVariables } from '../useCssVariables';\n\nconst pad = (n: number) => String(n).padStart(2, '0');\n\n// Mantine works with local `YYYY-MM-DD` strings; `new Date(string)` would parse them as UTC.\nconst toDateString = (date: Date) =>\n `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())}`;\n\nconst fromDateString = (value: string) => {\n const [year = 0, month = 1, day = 1] = value.split('-').map(Number);\n return new Date(year, month - 1, day);\n};\n\nexport function MantineDatePicker(props: DatePickerProps) {\n const {\n value,\n onChange,\n rangeSelect,\n locale,\n firstDayOfWeek,\n defaultDateInView,\n minDate,\n maxDate,\n showCalendarWeek,\n blockedRanges = [],\n showTime,\n } = props;\n const cssVariables = useCssVariables();\n\n const min = value instanceof Date ? value : value?.min;\n const max = value instanceof Date ? value : value?.max;\n const [pendingMin, setPendingMin] = useState<string>();\n\n const [dateInViewLocal, setDateInViewLocal] = useState(\n () => max ?? defaultDateInView ?? new Date(),\n );\n const dateInView = props.dateInView ?? dateInViewLocal;\n\n function setDateInView(date: Date) {\n setDateInViewLocal(date);\n props.onDateInViewChange?.(date);\n }\n\n useEffect(() => {\n setDateInViewLocal(max ?? defaultDateInView ?? new Date());\n }, [max?.getTime(), defaultDateInView?.getTime()]);\n\n useEffect(() => {\n if (!rangeSelect) {\n setPendingMin(undefined);\n }\n }, [rangeSelect]);\n\n const calendarProps = {\n locale,\n firstDayOfWeek,\n minDate,\n maxDate,\n withWeekNumbers: showCalendarWeek,\n date: toDateString(dateInView),\n onDateChange: (date: string) => setDateInView(fromDateString(date)),\n getDayProps: (date: string) =>\n blockedRanges.some((range) => dateIntersect(fromDateString(date), range))\n ? { 'data-blocked': true }\n : {},\n };\n\n const showSeconds = typeof showTime === 'object' ? showTime.showSeconds !== false : true;\n\n return (\n <div\n css={[\n cssVariables,\n {\n display: 'grid',\n justifyItems: 'center',\n gap: 'var(--spacing)',\n\n '& [data-blocked]:not([data-selected]):not([data-in-range])': {\n backgroundColor: 'var(--mantine-color-red-light)',\n color: 'var(--mantine-color-red-light-color)',\n },\n\n '& [data-blocked][data-selected], & [data-blocked][data-in-range]': {\n boxShadow: 'inset 0 0 0 2px var(--mantine-color-red-filled)',\n },\n },\n ]}\n >\n {rangeSelect ? (\n <DatePicker\n {...calendarProps}\n type=\"range\"\n allowSingleDateInRange\n value={\n pendingMin\n ? [pendingMin, null]\n : [min ? toDateString(min) : null, max ? toDateString(max) : null]\n }\n onChange={([start, end]) => {\n if (start && end) {\n setPendingMin(undefined);\n onChange(\n { min: fromDateString(start), max: endOfDay(fromDateString(end)) },\n 'calendar',\n );\n } else {\n setPendingMin(start ?? undefined);\n }\n }}\n />\n ) : (\n <DatePicker\n {...calendarProps}\n value={min ? toDateString(min) : null}\n onChange={(date) => onChange(date ? fromDateString(date) : null, 'calendar')}\n />\n )}\n\n {showTime && min && (\n <div css={{ display: 'flex', alignItems: 'center', gap: 'var(--spacing)' }}>\n <TimeField\n date={min}\n withSeconds={showSeconds}\n onChange={(newMin) =>\n onChange(\n rangeSelect && max ? { min: newMin, max: newMin > max ? newMin : max } : newMin,\n 'input',\n )\n }\n />\n\n {rangeSelect && (\n <>\n {' - '}\n <TimeField\n date={max}\n withSeconds={showSeconds}\n onChange={(newMax) =>\n min && onChange({ min: newMax < min ? newMax : min, max: newMax }, 'input')\n }\n />\n </>\n )}\n </div>\n )}\n\n <DatePickerQuickOptions {...props} onSelect={() => setPendingMin(undefined)} />\n </div>\n );\n}\n\nfunction TimeField({\n date,\n withSeconds,\n onChange,\n}: {\n date?: Date;\n withSeconds: boolean;\n onChange: (date: Date) => void;\n}) {\n const value = date\n ? [date.getHours(), date.getMinutes(), ...(withSeconds ? [date.getSeconds()] : [])]\n .map(pad)\n .join(':')\n : '';\n\n return (\n <TimeInput\n size=\"xs\"\n withSeconds={withSeconds}\n disabled={!date}\n value={value}\n onChange={(event) => {\n const [hours, minutes, seconds = 0] = event.currentTarget.value.split(':').map(Number);\n if (!date || hours === undefined || minutes === undefined || Number.isNaN(hours)) {\n return;\n }\n\n const next = new Date(date);\n next.setHours(hours, minutes, seconds, 0);\n onChange(next);\n }}\n />\n );\n}\n","import { ActionIcon, Button, Checkbox, Indicator, Loader, TextInput } from '@mantine/core';\nimport type { ReactNode } from 'react';\nimport { useMemo } from 'react';\nimport { TableSettingsProvider } from '../../misc/tableSettings';\nimport type { PartialTableTheme } from '../../types';\nimport { Popover } from '../defaultTheme/popover';\nimport { mergeThemes } from '../tableTheme';\nimport { MantineDatePicker } from './datePicker';\n\nconst buttonVariants = {\n text: 'subtle',\n outlined: 'default',\n contained: 'filled',\n} as const;\n\nexport const mantineTheme: PartialTableTheme = {\n components: {\n Button: ({ startIcon, variant = 'text', ...props }) => (\n <Button\n {...props}\n variant={buttonVariants[variant]}\n color={variant === 'contained' ? undefined : 'gray'}\n c={variant === 'contained' ? undefined : 'inherit'}\n leftSection={startIcon}\n size=\"sm\"\n justify=\"flex-start\"\n />\n ),\n IconButton: (props) => (\n <ActionIcon\n {...props}\n variant=\"subtle\"\n color=\"gray\"\n c=\"inherit\"\n radius=\"xl\"\n css={{ fontSize: 'var(--mantine-font-size-sm)' }}\n />\n ),\n Checkbox: (props) => (\n <Checkbox {...props} size=\"xs\" css={{ padding: 'calc(var(--spacing) * 1.8)' }} />\n ),\n Popover: (props) => <Popover {...props} zIndex=\"var(--mantine-z-index-popover)\" />,\n Badge: ({ badgeContent, children }) => (\n // Flex, so the root is as tall as the arrow instead of a whole line box, which pushed the badge out of the cell\n <Indicator\n label={badgeContent}\n disabled={!badgeContent}\n size={16}\n inline\n css={{ display: 'inline-flex' }}\n >\n {children}\n </Indicator>\n ),\n TextField: ({ startIcon, endIcon, inputRef, value, ...props }) => (\n <TextInput\n {...props}\n ref={inputRef}\n value={value ?? ''}\n leftSection={startIcon}\n rightSection={endIcon}\n leftSectionPointerEvents=\"all\"\n rightSectionPointerEvents=\"all\"\n size=\"sm\"\n />\n ),\n Spinner: (props) => <Loader {...props} size=\"sm\" />,\n DatePicker: MantineDatePicker,\n },\n // Mantine sets `color-scheme` on :root, so light-dark() follows its color scheme.\n colors: {\n primary: {\n main: 'var(--mantine-primary-color-filled)',\n light: 'var(--mantine-primary-color-4)',\n contrastText: 'var(--mantine-primary-color-contrast)',\n },\n secondary: {\n main: 'var(--mantine-color-gray-filled)',\n light: 'var(--mantine-color-gray-4)',\n contrastText: 'var(--mantine-color-white)',\n },\n blocked: {\n main: 'var(--mantine-color-red-filled)',\n light: 'var(--mantine-color-red-4)',\n contrastText: 'var(--mantine-color-white)',\n },\n background: 'var(--mantine-color-body)',\n text: 'var(--mantine-color-text)',\n border: 'var(--mantine-color-default-border)',\n borderLight: 'light-dark(var(--mantine-color-gray-2), var(--mantine-color-dark-5))',\n },\n};\n\nexport function MantineTableThemeProvider({\n theme,\n children,\n}: {\n theme?: PartialTableTheme;\n children?: ReactNode;\n}) {\n const _theme = useMemo(() => mergeThemes(mantineTheme, theme ?? {}), [theme]);\n\n return <TableSettingsProvider theme={_theme}>{children}</TableSettingsProvider>;\n}\n"],"mappings":";;;;;;;;AAMA,MAAM,OAAO,MAAc,OAAO,CAAC,CAAC,CAAC,SAAS,GAAG,GAAG;AAGpD,MAAM,gBAAgB,SACpB,GAAG,KAAK,YAAY,EAAE,GAAG,IAAI,KAAK,SAAS,IAAI,CAAC,EAAE,GAAG,IAAI,KAAK,QAAQ,CAAC;AAEzE,MAAM,kBAAkB,UAAkB;CACxC,MAAM,CAAC,OAAO,GAAG,QAAQ,GAAG,MAAM,KAAK,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,MAAM;CAClE,OAAO,IAAI,KAAK,MAAM,QAAQ,GAAG,GAAG;AACtC;AAEA,SAAgB,kBAAkB,OAAwB;CACxD,MAAM,EACJ,OACA,UACA,aACA,QACA,gBACA,mBACA,SACA,SACA,kBACA,gBAAgB,CAAC,GACjB,aACE;CACJ,MAAM,eAAeA,iBAAAA,gBAAgB;CAErC,MAAM,MAAM,iBAAiB,OAAO,QAAQ,OAAO;CACnD,MAAM,MAAM,iBAAiB,OAAO,QAAQ,OAAO;CACnD,MAAM,CAAC,YAAY,kBAAA,GAAiBC,MAAAA,SAAAA,CAAiB;CAErD,MAAM,CAAC,iBAAiB,uBAAA,GAAsBA,MAAAA,SAAAA,OACtC,OAAO,qCAAqB,IAAI,KAAK,CAC7C;CACA,MAAM,aAAa,MAAM,cAAc;CAEvC,SAAS,cAAc,MAAY;EACjC,mBAAmB,IAAI;EACvB,MAAM,qBAAqB,IAAI;CACjC;CAEA,CAAA,GAAA,MAAA,UAAA,OAAgB;EACd,mBAAmB,OAAO,qCAAqB,IAAI,KAAK,CAAC;CAC3D,GAAG,CAAC,KAAK,QAAQ,GAAG,mBAAmB,QAAQ,CAAC,CAAC;CAEjD,CAAA,GAAA,MAAA,UAAA,OAAgB;EACd,IAAI,CAAC,aACH,cAAc,KAAA,CAAS;CAE3B,GAAG,CAAC,WAAW,CAAC;CAEhB,MAAM,gBAAgB;EACpB;EACA;EACA;EACA;EACA,iBAAiB;EACjB,MAAM,aAAa,UAAU;EAC7B,eAAe,SAAiB,cAAc,eAAe,IAAI,CAAC;EAClE,cAAc,SACZ,cAAc,MAAM,UAAUC,iBAAAA,cAAc,eAAe,IAAI,GAAG,KAAK,CAAC,IACpE,EAAE,gBAAgB,KAAK,IACvB,CAAC;CACT;CAEA,MAAM,cAAc,OAAO,aAAa,WAAW,SAAS,gBAAgB,QAAQ;CAEpF,OACE,iBAAA,GAAA,2BAAA,KAAA,CAAC,OAAD;EACE,KAAK,CACH,cACA;GACE,SAAS;GACT,cAAc;GACd,KAAK;GAEL,8DAA8D;IAC5D,iBAAiB;IACjB,OAAO;GACT;GAEA,oEAAoE,EAClE,WAAW,kDACb;EACF,CACF;EAjBF,UAAA;GAmBG,cACC,iBAAA,GAAA,2BAAA,IAAA,CAACC,eAAAA,YAAD;IACE,GAAI;IACJ,MAAK;IACL,wBAAA;IACA,OACE,aACI,CAAC,YAAY,IAAI,IACjB,CAAC,MAAM,aAAa,GAAG,IAAI,MAAM,MAAM,aAAa,GAAG,IAAI,IAAI;IAErE,WAAW,CAAC,OAAO,SAAS;KAC1B,IAAI,SAAS,KAAK;MAChB,cAAc,KAAA,CAAS;MACvB,SACE;OAAE,KAAK,eAAe,KAAK;OAAG,KAAKC,iBAAAA,SAAS,eAAe,GAAG,CAAC;MAAE,GACjE,UACF;KACF,OACE,cAAc,SAAS,KAAA,CAAS;IAEpC;GACD,CAAA,IAED,iBAAA,GAAA,2BAAA,IAAA,CAACD,eAAAA,YAAD;IACE,GAAI;IACJ,OAAO,MAAM,aAAa,GAAG,IAAI;IACjC,WAAW,SAAS,SAAS,OAAO,eAAe,IAAI,IAAI,MAAM,UAAU;GAC5E,CAAA;GAGF,YAAY,OACX,iBAAA,GAAA,2BAAA,KAAA,CAAC,OAAD;IAAK,KAAK;KAAE,SAAS;KAAQ,YAAY;KAAU,KAAK;IAAiB;IAAzE,UAAA,CACE,iBAAA,GAAA,2BAAA,IAAA,CAAC,WAAD;KACE,MAAM;KACN,aAAa;KACb,WAAW,WACT,SACE,eAAe,MAAM;MAAE,KAAK;MAAQ,KAAK,SAAS,MAAM,SAAS;KAAI,IAAI,QACzE,OACF;IAEH,CAAA,GAEA,eACC,iBAAA,GAAA,2BAAA,KAAA,CAAA,2BAAA,UAAA,EAAA,UAAA,CACG,OACD,iBAAA,GAAA,2BAAA,IAAA,CAAC,WAAD;KACE,MAAM;KACN,aAAa;KACb,WAAW,WACT,OAAO,SAAS;MAAE,KAAK,SAAS,MAAM,SAAS;MAAK,KAAK;KAAO,GAAG,OAAO;IAE7E,CAAA,CACD,EAAA,CAAA,CAED;;GAGP,iBAAA,GAAA,2BAAA,IAAA,CAACE,iBAAAA,wBAAD;IAAwB,GAAI;IAAO,gBAAgB,cAAc,KAAA,CAAS;GAAI,CAAA;EAC3E;;AAET;AAEA,SAAS,UAAU,EACjB,MACA,aACA,YAKC;CACD,MAAM,QAAQ,OACV;EAAC,KAAK,SAAS;EAAG,KAAK,WAAW;EAAG,GAAI,cAAc,CAAC,KAAK,WAAW,CAAC,IAAI,CAAC;CAAE,CAAC,CAC9E,IAAI,GAAG,CAAC,CACR,KAAK,GAAG,IACX;CAEJ,OACE,iBAAA,GAAA,2BAAA,IAAA,CAACC,eAAAA,WAAD;EACE,MAAK;EACQ;EACb,UAAU,CAAC;EACJ;EACP,WAAW,UAAU;GACnB,MAAM,CAAC,OAAO,SAAS,UAAU,KAAK,MAAM,cAAc,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,MAAM;GACrF,IAAI,CAAC,QAAQ,UAAU,KAAA,KAAa,YAAY,KAAA,KAAa,OAAO,MAAM,KAAK,GAC7E;GAGF,MAAM,OAAO,IAAI,KAAK,IAAI;GAC1B,KAAK,SAAS,OAAO,SAAS,SAAS,CAAC;GACxC,SAAS,IAAI;EACf;CACD,CAAA;AAEL;;;ACpLA,MAAM,iBAAiB;CACrB,MAAM;CACN,UAAU;CACV,WAAW;AACb;AAEA,MAAa,eAAkC;CAC7C,YAAY;EACV,SAAS,EAAE,WAAW,UAAU,QAAQ,GAAG,YACzC,iBAAA,GAAA,2BAAA,IAAA,CAACC,cAAAA,QAAD;GACE,GAAI;GACJ,SAAS,eAAe;GACxB,OAAO,YAAY,cAAc,KAAA,IAAY;GAC7C,GAAG,YAAY,cAAc,KAAA,IAAY;GACzC,aAAa;GACb,MAAK;GACL,SAAQ;EACT,CAAA;EAEH,aAAa,UACX,iBAAA,GAAA,2BAAA,IAAA,CAACC,cAAAA,YAAD;GACE,GAAI;GACJ,SAAQ;GACR,OAAM;GACN,GAAE;GACF,QAAO;GACP,KAAK,EAAE,UAAU,8BAA8B;EAChD,CAAA;EAEH,WAAW,UACT,iBAAA,GAAA,2BAAA,IAAA,CAACC,cAAAA,UAAD;GAAU,GAAI;GAAO,MAAK;GAAK,KAAK,EAAE,SAAS,6BAA6B;EAAI,CAAA;EAElF,UAAU,UAAU,iBAAA,GAAA,2BAAA,IAAA,CAACC,mBAAAA,SAAD;GAAS,GAAI;GAAO,QAAO;EAAkC,CAAA;EACjF,QAAQ,EAAE,cAAc,eAEtB,iBAAA,GAAA,2BAAA,IAAA,CAACC,cAAAA,WAAD;GACE,OAAO;GACP,UAAU,CAAC;GACX,MAAM;GACN,QAAA;GACA,KAAK,EAAE,SAAS,cAAc;GAE7B;EACQ,CAAA;EAEb,YAAY,EAAE,WAAW,SAAS,UAAU,OAAO,GAAG,YACpD,iBAAA,GAAA,2BAAA,IAAA,CAACC,cAAAA,WAAD;GACE,GAAI;GACJ,KAAK;GACL,OAAO,SAAS;GAChB,aAAa;GACb,cAAc;GACd,0BAAyB;GACzB,2BAA0B;GAC1B,MAAK;EACN,CAAA;EAEH,UAAU,UAAU,iBAAA,GAAA,2BAAA,IAAA,CAACC,cAAAA,QAAD;GAAQ,GAAI;GAAO,MAAK;EAAM,CAAA;EAClD,YAAY;CACd;CAEA,QAAQ;EACN,SAAS;GACP,MAAM;GACN,OAAO;GACP,cAAc;EAChB;EACA,WAAW;GACT,MAAM;GACN,OAAO;GACP,cAAc;EAChB;EACA,SAAS;GACP,MAAM;GACN,OAAO;GACP,cAAc;EAChB;EACA,YAAY;EACZ,MAAM;EACN,QAAQ;EACR,aAAa;CACf;AACF;AAEA,SAAgB,0BAA0B,EACxC,OACA,YAIC;CACD,MAAM,UAAA,GAASC,MAAAA,QAAAA,OAAcC,mBAAAA,YAAY,cAAc,SAAS,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;CAE5E,OAAO,iBAAA,GAAA,2BAAA,IAAA,CAACC,mBAAAA,uBAAD;EAAuB,OAAO;EAAS;CAAgC,CAAA;AAChF"}
@@ -1,5 +1,5 @@
1
- import { a as TableSettingsProvider, n as Popover, t as mergeThemes } from "./tableTheme-BTWZIwYS.js";
2
- import { C as endOfDay, M as useCssVariables, S as dateIntersect, v as DatePickerQuickOptions } from "./useTheme-C2MxW5qw.js";
1
+ import { a as TableSettingsProvider, n as Popover, t as mergeThemes } from "./tableTheme-BgaqIBux.js";
2
+ import { C as endOfDay, M as useCssVariables, S as dateIntersect, v as DatePickerQuickOptions } from "./useTheme-B2ejsCOL.js";
3
3
  import { useEffect, useMemo, useState } from "react";
4
4
  import { Fragment as Fragment$1, jsx, jsxs } from "@emotion/react/jsx-runtime";
5
5
  import { ActionIcon, Button, Checkbox, Indicator, Loader, TextInput } from "@mantine/core";
@@ -71,7 +71,7 @@ function MantineDatePicker(props) {
71
71
  value: min ? toDateString(min) : null,
72
72
  onChange: (date) => onChange(date ? fromDateString(date) : null, "calendar")
73
73
  }),
74
- showTime && /* @__PURE__ */ jsxs("div", {
74
+ showTime && min && /* @__PURE__ */ jsxs("div", {
75
75
  css: {
76
76
  display: "flex",
77
77
  alignItems: "center",
@@ -151,12 +151,16 @@ const mantineTheme = {
151
151
  size: "xs",
152
152
  css: { padding: "calc(var(--spacing) * 1.8)" }
153
153
  }),
154
- Popover,
154
+ Popover: (props) => /* @__PURE__ */ jsx(Popover, {
155
+ ...props,
156
+ zIndex: "var(--mantine-z-index-popover)"
157
+ }),
155
158
  Badge: ({ badgeContent, children }) => /* @__PURE__ */ jsx(Indicator, {
156
159
  label: badgeContent,
157
160
  disabled: !badgeContent,
158
161
  size: 16,
159
162
  inline: true,
163
+ css: { display: "inline-flex" },
160
164
  children
161
165
  }),
162
166
  TextField: ({ startIcon, endIcon, inputRef, value, ...props }) => /* @__PURE__ */ jsx(TextInput, {
@@ -1 +1 @@
1
- {"version":3,"file":"mantineTheme.js","names":[],"sources":["../src/theme/mantineTheme/datePicker.tsx","../src/theme/mantineTheme/index.tsx"],"sourcesContent":["import { DatePicker, TimeInput } from '@mantine/dates';\nimport { useEffect, useState } from 'react';\nimport type { DatePickerProps } from '../../components/datePicker';\nimport { dateIntersect, DatePickerQuickOptions, endOfDay } from '../../components/datePicker';\nimport { useCssVariables } from '../useCssVariables';\n\nconst pad = (n: number) => String(n).padStart(2, '0');\n\n// Mantine works with local `YYYY-MM-DD` strings; `new Date(string)` would parse them as UTC.\nconst toDateString = (date: Date) =>\n `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())}`;\n\nconst fromDateString = (value: string) => {\n const [year = 0, month = 1, day = 1] = value.split('-').map(Number);\n return new Date(year, month - 1, day);\n};\n\nexport function MantineDatePicker(props: DatePickerProps) {\n const {\n value,\n onChange,\n rangeSelect,\n locale,\n firstDayOfWeek,\n defaultDateInView,\n minDate,\n maxDate,\n showCalendarWeek,\n blockedRanges = [],\n showTime,\n } = props;\n const cssVariables = useCssVariables();\n\n const min = value instanceof Date ? value : value?.min;\n const max = value instanceof Date ? value : value?.max;\n const [pendingMin, setPendingMin] = useState<string>();\n\n const [dateInViewLocal, setDateInViewLocal] = useState(\n () => max ?? defaultDateInView ?? new Date(),\n );\n const dateInView = props.dateInView ?? dateInViewLocal;\n\n function setDateInView(date: Date) {\n setDateInViewLocal(date);\n props.onDateInViewChange?.(date);\n }\n\n useEffect(() => {\n setDateInViewLocal(max ?? defaultDateInView ?? new Date());\n }, [max?.getTime(), defaultDateInView?.getTime()]);\n\n useEffect(() => {\n if (!rangeSelect) {\n setPendingMin(undefined);\n }\n }, [rangeSelect]);\n\n const calendarProps = {\n locale,\n firstDayOfWeek,\n minDate,\n maxDate,\n withWeekNumbers: showCalendarWeek,\n date: toDateString(dateInView),\n onDateChange: (date: string) => setDateInView(fromDateString(date)),\n getDayProps: (date: string) =>\n blockedRanges.some((range) => dateIntersect(fromDateString(date), range))\n ? { 'data-blocked': true }\n : {},\n };\n\n const showSeconds = typeof showTime === 'object' ? showTime.showSeconds !== false : true;\n\n return (\n <div\n css={[\n cssVariables,\n {\n display: 'grid',\n justifyItems: 'center',\n gap: 'var(--spacing)',\n\n '& [data-blocked]:not([data-selected]):not([data-in-range])': {\n backgroundColor: 'var(--mantine-color-red-light)',\n color: 'var(--mantine-color-red-light-color)',\n },\n\n '& [data-blocked][data-selected], & [data-blocked][data-in-range]': {\n boxShadow: 'inset 0 0 0 2px var(--mantine-color-red-filled)',\n },\n },\n ]}\n >\n {rangeSelect ? (\n <DatePicker\n {...calendarProps}\n type=\"range\"\n allowSingleDateInRange\n value={\n pendingMin\n ? [pendingMin, null]\n : [min ? toDateString(min) : null, max ? toDateString(max) : null]\n }\n onChange={([start, end]) => {\n if (start && end) {\n setPendingMin(undefined);\n onChange(\n { min: fromDateString(start), max: endOfDay(fromDateString(end)) },\n 'calendar',\n );\n } else {\n setPendingMin(start ?? undefined);\n }\n }}\n />\n ) : (\n <DatePicker\n {...calendarProps}\n value={min ? toDateString(min) : null}\n onChange={(date) => onChange(date ? fromDateString(date) : null, 'calendar')}\n />\n )}\n\n {showTime && (\n <div css={{ display: 'flex', alignItems: 'center', gap: 'var(--spacing)' }}>\n <TimeField\n date={min}\n withSeconds={showSeconds}\n onChange={(newMin) =>\n onChange(\n rangeSelect && max ? { min: newMin, max: newMin > max ? newMin : max } : newMin,\n 'input',\n )\n }\n />\n\n {rangeSelect && (\n <>\n {' - '}\n <TimeField\n date={max}\n withSeconds={showSeconds}\n onChange={(newMax) =>\n min && onChange({ min: newMax < min ? newMax : min, max: newMax }, 'input')\n }\n />\n </>\n )}\n </div>\n )}\n\n <DatePickerQuickOptions {...props} onSelect={() => setPendingMin(undefined)} />\n </div>\n );\n}\n\nfunction TimeField({\n date,\n withSeconds,\n onChange,\n}: {\n date?: Date;\n withSeconds: boolean;\n onChange: (date: Date) => void;\n}) {\n const value = date\n ? [date.getHours(), date.getMinutes(), ...(withSeconds ? [date.getSeconds()] : [])]\n .map(pad)\n .join(':')\n : '';\n\n return (\n <TimeInput\n size=\"xs\"\n withSeconds={withSeconds}\n disabled={!date}\n value={value}\n onChange={(event) => {\n const [hours, minutes, seconds = 0] = event.currentTarget.value.split(':').map(Number);\n if (!date || hours === undefined || minutes === undefined || Number.isNaN(hours)) {\n return;\n }\n\n const next = new Date(date);\n next.setHours(hours, minutes, seconds, 0);\n onChange(next);\n }}\n />\n );\n}\n","import { ActionIcon, Button, Checkbox, Indicator, Loader, TextInput } from '@mantine/core';\nimport type { ReactNode } from 'react';\nimport { useMemo } from 'react';\nimport { TableSettingsProvider } from '../../misc/tableSettings';\nimport type { PartialTableTheme } from '../../types';\nimport { Popover } from '../defaultTheme/popover';\nimport { mergeThemes } from '../tableTheme';\nimport { MantineDatePicker } from './datePicker';\n\nconst buttonVariants = {\n text: 'subtle',\n outlined: 'default',\n contained: 'filled',\n} as const;\n\nexport const mantineTheme: PartialTableTheme = {\n components: {\n Button: ({ startIcon, variant = 'text', ...props }) => (\n <Button\n {...props}\n variant={buttonVariants[variant]}\n color={variant === 'contained' ? undefined : 'gray'}\n c={variant === 'contained' ? undefined : 'inherit'}\n leftSection={startIcon}\n size=\"sm\"\n justify=\"flex-start\"\n />\n ),\n IconButton: (props) => (\n <ActionIcon\n {...props}\n variant=\"subtle\"\n color=\"gray\"\n c=\"inherit\"\n radius=\"xl\"\n css={{ fontSize: 'var(--mantine-font-size-sm)' }}\n />\n ),\n Checkbox: (props) => (\n <Checkbox {...props} size=\"xs\" css={{ padding: 'calc(var(--spacing) * 1.8)' }} />\n ),\n Popover,\n Badge: ({ badgeContent, children }) => (\n <Indicator label={badgeContent} disabled={!badgeContent} size={16} inline>\n {children}\n </Indicator>\n ),\n TextField: ({ startIcon, endIcon, inputRef, value, ...props }) => (\n <TextInput\n {...props}\n ref={inputRef}\n value={value ?? ''}\n leftSection={startIcon}\n rightSection={endIcon}\n leftSectionPointerEvents=\"all\"\n rightSectionPointerEvents=\"all\"\n size=\"sm\"\n />\n ),\n Spinner: (props) => <Loader {...props} size=\"sm\" />,\n DatePicker: MantineDatePicker,\n },\n // Mantine sets `color-scheme` on :root, so light-dark() follows its color scheme.\n colors: {\n primary: {\n main: 'var(--mantine-primary-color-filled)',\n light: 'var(--mantine-primary-color-4)',\n contrastText: 'var(--mantine-primary-color-contrast)',\n },\n secondary: {\n main: 'var(--mantine-color-gray-filled)',\n light: 'var(--mantine-color-gray-4)',\n contrastText: 'var(--mantine-color-white)',\n },\n blocked: {\n main: 'var(--mantine-color-red-filled)',\n light: 'var(--mantine-color-red-4)',\n contrastText: 'var(--mantine-color-white)',\n },\n background: 'var(--mantine-color-body)',\n text: 'var(--mantine-color-text)',\n border: 'var(--mantine-color-default-border)',\n borderLight: 'light-dark(var(--mantine-color-gray-2), var(--mantine-color-dark-5))',\n },\n};\n\nexport function MantineTableThemeProvider({\n theme,\n children,\n}: {\n theme?: PartialTableTheme;\n children?: ReactNode;\n}) {\n const _theme = useMemo(() => mergeThemes(mantineTheme, theme ?? {}), [theme]);\n\n return <TableSettingsProvider theme={_theme}>{children}</TableSettingsProvider>;\n}\n"],"mappings":";;;;;;;AAMA,MAAM,OAAO,MAAc,OAAO,CAAC,CAAC,CAAC,SAAS,GAAG,GAAG;AAGpD,MAAM,gBAAgB,SACpB,GAAG,KAAK,YAAY,EAAE,GAAG,IAAI,KAAK,SAAS,IAAI,CAAC,EAAE,GAAG,IAAI,KAAK,QAAQ,CAAC;AAEzE,MAAM,kBAAkB,UAAkB;CACxC,MAAM,CAAC,OAAO,GAAG,QAAQ,GAAG,MAAM,KAAK,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,MAAM;CAClE,OAAO,IAAI,KAAK,MAAM,QAAQ,GAAG,GAAG;AACtC;AAEA,SAAgB,kBAAkB,OAAwB;CACxD,MAAM,EACJ,OACA,UACA,aACA,QACA,gBACA,mBACA,SACA,SACA,kBACA,gBAAgB,CAAC,GACjB,aACE;CACJ,MAAM,eAAe,gBAAgB;CAErC,MAAM,MAAM,iBAAiB,OAAO,QAAQ,OAAO;CACnD,MAAM,MAAM,iBAAiB,OAAO,QAAQ,OAAO;CACnD,MAAM,CAAC,YAAY,iBAAiB,SAAiB;CAErD,MAAM,CAAC,iBAAiB,sBAAsB,eACtC,OAAO,qCAAqB,IAAI,KAAK,CAC7C;CACA,MAAM,aAAa,MAAM,cAAc;CAEvC,SAAS,cAAc,MAAY;EACjC,mBAAmB,IAAI;EACvB,MAAM,qBAAqB,IAAI;CACjC;CAEA,gBAAgB;EACd,mBAAmB,OAAO,qCAAqB,IAAI,KAAK,CAAC;CAC3D,GAAG,CAAC,KAAK,QAAQ,GAAG,mBAAmB,QAAQ,CAAC,CAAC;CAEjD,gBAAgB;EACd,IAAI,CAAC,aACH,cAAc,KAAA,CAAS;CAE3B,GAAG,CAAC,WAAW,CAAC;CAEhB,MAAM,gBAAgB;EACpB;EACA;EACA;EACA;EACA,iBAAiB;EACjB,MAAM,aAAa,UAAU;EAC7B,eAAe,SAAiB,cAAc,eAAe,IAAI,CAAC;EAClE,cAAc,SACZ,cAAc,MAAM,UAAU,cAAc,eAAe,IAAI,GAAG,KAAK,CAAC,IACpE,EAAE,gBAAgB,KAAK,IACvB,CAAC;CACT;CAEA,MAAM,cAAc,OAAO,aAAa,WAAW,SAAS,gBAAgB,QAAQ;CAEpF,OACE,qBAAC,OAAD;EACE,KAAK,CACH,cACA;GACE,SAAS;GACT,cAAc;GACd,KAAK;GAEL,8DAA8D;IAC5D,iBAAiB;IACjB,OAAO;GACT;GAEA,oEAAoE,EAClE,WAAW,kDACb;EACF,CACF;EAjBF,UAAA;GAmBG,cACC,oBAAC,YAAD;IACE,GAAI;IACJ,MAAK;IACL,wBAAA;IACA,OACE,aACI,CAAC,YAAY,IAAI,IACjB,CAAC,MAAM,aAAa,GAAG,IAAI,MAAM,MAAM,aAAa,GAAG,IAAI,IAAI;IAErE,WAAW,CAAC,OAAO,SAAS;KAC1B,IAAI,SAAS,KAAK;MAChB,cAAc,KAAA,CAAS;MACvB,SACE;OAAE,KAAK,eAAe,KAAK;OAAG,KAAK,SAAS,eAAe,GAAG,CAAC;MAAE,GACjE,UACF;KACF,OACE,cAAc,SAAS,KAAA,CAAS;IAEpC;GACD,CAAA,IAED,oBAAC,YAAD;IACE,GAAI;IACJ,OAAO,MAAM,aAAa,GAAG,IAAI;IACjC,WAAW,SAAS,SAAS,OAAO,eAAe,IAAI,IAAI,MAAM,UAAU;GAC5E,CAAA;GAGF,YACC,qBAAC,OAAD;IAAK,KAAK;KAAE,SAAS;KAAQ,YAAY;KAAU,KAAK;IAAiB;IAAzE,UAAA,CACE,oBAAC,WAAD;KACE,MAAM;KACN,aAAa;KACb,WAAW,WACT,SACE,eAAe,MAAM;MAAE,KAAK;MAAQ,KAAK,SAAS,MAAM,SAAS;KAAI,IAAI,QACzE,OACF;IAEH,CAAA,GAEA,eACC,qBAAA,YAAA,EAAA,UAAA,CACG,OACD,oBAAC,WAAD;KACE,MAAM;KACN,aAAa;KACb,WAAW,WACT,OAAO,SAAS;MAAE,KAAK,SAAS,MAAM,SAAS;MAAK,KAAK;KAAO,GAAG,OAAO;IAE7E,CAAA,CACD,EAAA,CAAA,CAED;;GAGP,oBAAC,wBAAD;IAAwB,GAAI;IAAO,gBAAgB,cAAc,KAAA,CAAS;GAAI,CAAA;EAC3E;;AAET;AAEA,SAAS,UAAU,EACjB,MACA,aACA,YAKC;CACD,MAAM,QAAQ,OACV;EAAC,KAAK,SAAS;EAAG,KAAK,WAAW;EAAG,GAAI,cAAc,CAAC,KAAK,WAAW,CAAC,IAAI,CAAC;CAAE,CAAC,CAC9E,IAAI,GAAG,CAAC,CACR,KAAK,GAAG,IACX;CAEJ,OACE,oBAAC,WAAD;EACE,MAAK;EACQ;EACb,UAAU,CAAC;EACJ;EACP,WAAW,UAAU;GACnB,MAAM,CAAC,OAAO,SAAS,UAAU,KAAK,MAAM,cAAc,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,MAAM;GACrF,IAAI,CAAC,QAAQ,UAAU,KAAA,KAAa,YAAY,KAAA,KAAa,OAAO,MAAM,KAAK,GAC7E;GAGF,MAAM,OAAO,IAAI,KAAK,IAAI;GAC1B,KAAK,SAAS,OAAO,SAAS,SAAS,CAAC;GACxC,SAAS,IAAI;EACf;CACD,CAAA;AAEL;;;ACpLA,MAAM,iBAAiB;CACrB,MAAM;CACN,UAAU;CACV,WAAW;AACb;AAEA,MAAa,eAAkC;CAC7C,YAAY;EACV,SAAS,EAAE,WAAW,UAAU,QAAQ,GAAG,YACzC,oBAAC,QAAD;GACE,GAAI;GACJ,SAAS,eAAe;GACxB,OAAO,YAAY,cAAc,KAAA,IAAY;GAC7C,GAAG,YAAY,cAAc,KAAA,IAAY;GACzC,aAAa;GACb,MAAK;GACL,SAAQ;EACT,CAAA;EAEH,aAAa,UACX,oBAAC,YAAD;GACE,GAAI;GACJ,SAAQ;GACR,OAAM;GACN,GAAE;GACF,QAAO;GACP,KAAK,EAAE,UAAU,8BAA8B;EAChD,CAAA;EAEH,WAAW,UACT,oBAAC,UAAD;GAAU,GAAI;GAAO,MAAK;GAAK,KAAK,EAAE,SAAS,6BAA6B;EAAI,CAAA;EAElF;EACA,QAAQ,EAAE,cAAc,eACtB,oBAAC,WAAD;GAAW,OAAO;GAAc,UAAU,CAAC;GAAc,MAAM;GAAI,QAAA;GAChE;EACQ,CAAA;EAEb,YAAY,EAAE,WAAW,SAAS,UAAU,OAAO,GAAG,YACpD,oBAAC,WAAD;GACE,GAAI;GACJ,KAAK;GACL,OAAO,SAAS;GAChB,aAAa;GACb,cAAc;GACd,0BAAyB;GACzB,2BAA0B;GAC1B,MAAK;EACN,CAAA;EAEH,UAAU,UAAU,oBAAC,QAAD;GAAQ,GAAI;GAAO,MAAK;EAAM,CAAA;EAClD,YAAY;CACd;CAEA,QAAQ;EACN,SAAS;GACP,MAAM;GACN,OAAO;GACP,cAAc;EAChB;EACA,WAAW;GACT,MAAM;GACN,OAAO;GACP,cAAc;EAChB;EACA,SAAS;GACP,MAAM;GACN,OAAO;GACP,cAAc;EAChB;EACA,YAAY;EACZ,MAAM;EACN,QAAQ;EACR,aAAa;CACf;AACF;AAEA,SAAgB,0BAA0B,EACxC,OACA,YAIC;CACD,MAAM,SAAS,cAAc,YAAY,cAAc,SAAS,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;CAE5E,OAAO,oBAAC,uBAAD;EAAuB,OAAO;EAAS;CAAgC,CAAA;AAChF"}
1
+ {"version":3,"file":"mantineTheme.js","names":[],"sources":["../src/theme/mantineTheme/datePicker.tsx","../src/theme/mantineTheme/index.tsx"],"sourcesContent":["import { DatePicker, TimeInput } from '@mantine/dates';\nimport { useEffect, useState } from 'react';\nimport type { DatePickerProps } from '../../components/datePicker';\nimport { dateIntersect, DatePickerQuickOptions, endOfDay } from '../../components/datePicker';\nimport { useCssVariables } from '../useCssVariables';\n\nconst pad = (n: number) => String(n).padStart(2, '0');\n\n// Mantine works with local `YYYY-MM-DD` strings; `new Date(string)` would parse them as UTC.\nconst toDateString = (date: Date) =>\n `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())}`;\n\nconst fromDateString = (value: string) => {\n const [year = 0, month = 1, day = 1] = value.split('-').map(Number);\n return new Date(year, month - 1, day);\n};\n\nexport function MantineDatePicker(props: DatePickerProps) {\n const {\n value,\n onChange,\n rangeSelect,\n locale,\n firstDayOfWeek,\n defaultDateInView,\n minDate,\n maxDate,\n showCalendarWeek,\n blockedRanges = [],\n showTime,\n } = props;\n const cssVariables = useCssVariables();\n\n const min = value instanceof Date ? value : value?.min;\n const max = value instanceof Date ? value : value?.max;\n const [pendingMin, setPendingMin] = useState<string>();\n\n const [dateInViewLocal, setDateInViewLocal] = useState(\n () => max ?? defaultDateInView ?? new Date(),\n );\n const dateInView = props.dateInView ?? dateInViewLocal;\n\n function setDateInView(date: Date) {\n setDateInViewLocal(date);\n props.onDateInViewChange?.(date);\n }\n\n useEffect(() => {\n setDateInViewLocal(max ?? defaultDateInView ?? new Date());\n }, [max?.getTime(), defaultDateInView?.getTime()]);\n\n useEffect(() => {\n if (!rangeSelect) {\n setPendingMin(undefined);\n }\n }, [rangeSelect]);\n\n const calendarProps = {\n locale,\n firstDayOfWeek,\n minDate,\n maxDate,\n withWeekNumbers: showCalendarWeek,\n date: toDateString(dateInView),\n onDateChange: (date: string) => setDateInView(fromDateString(date)),\n getDayProps: (date: string) =>\n blockedRanges.some((range) => dateIntersect(fromDateString(date), range))\n ? { 'data-blocked': true }\n : {},\n };\n\n const showSeconds = typeof showTime === 'object' ? showTime.showSeconds !== false : true;\n\n return (\n <div\n css={[\n cssVariables,\n {\n display: 'grid',\n justifyItems: 'center',\n gap: 'var(--spacing)',\n\n '& [data-blocked]:not([data-selected]):not([data-in-range])': {\n backgroundColor: 'var(--mantine-color-red-light)',\n color: 'var(--mantine-color-red-light-color)',\n },\n\n '& [data-blocked][data-selected], & [data-blocked][data-in-range]': {\n boxShadow: 'inset 0 0 0 2px var(--mantine-color-red-filled)',\n },\n },\n ]}\n >\n {rangeSelect ? (\n <DatePicker\n {...calendarProps}\n type=\"range\"\n allowSingleDateInRange\n value={\n pendingMin\n ? [pendingMin, null]\n : [min ? toDateString(min) : null, max ? toDateString(max) : null]\n }\n onChange={([start, end]) => {\n if (start && end) {\n setPendingMin(undefined);\n onChange(\n { min: fromDateString(start), max: endOfDay(fromDateString(end)) },\n 'calendar',\n );\n } else {\n setPendingMin(start ?? undefined);\n }\n }}\n />\n ) : (\n <DatePicker\n {...calendarProps}\n value={min ? toDateString(min) : null}\n onChange={(date) => onChange(date ? fromDateString(date) : null, 'calendar')}\n />\n )}\n\n {showTime && min && (\n <div css={{ display: 'flex', alignItems: 'center', gap: 'var(--spacing)' }}>\n <TimeField\n date={min}\n withSeconds={showSeconds}\n onChange={(newMin) =>\n onChange(\n rangeSelect && max ? { min: newMin, max: newMin > max ? newMin : max } : newMin,\n 'input',\n )\n }\n />\n\n {rangeSelect && (\n <>\n {' - '}\n <TimeField\n date={max}\n withSeconds={showSeconds}\n onChange={(newMax) =>\n min && onChange({ min: newMax < min ? newMax : min, max: newMax }, 'input')\n }\n />\n </>\n )}\n </div>\n )}\n\n <DatePickerQuickOptions {...props} onSelect={() => setPendingMin(undefined)} />\n </div>\n );\n}\n\nfunction TimeField({\n date,\n withSeconds,\n onChange,\n}: {\n date?: Date;\n withSeconds: boolean;\n onChange: (date: Date) => void;\n}) {\n const value = date\n ? [date.getHours(), date.getMinutes(), ...(withSeconds ? [date.getSeconds()] : [])]\n .map(pad)\n .join(':')\n : '';\n\n return (\n <TimeInput\n size=\"xs\"\n withSeconds={withSeconds}\n disabled={!date}\n value={value}\n onChange={(event) => {\n const [hours, minutes, seconds = 0] = event.currentTarget.value.split(':').map(Number);\n if (!date || hours === undefined || minutes === undefined || Number.isNaN(hours)) {\n return;\n }\n\n const next = new Date(date);\n next.setHours(hours, minutes, seconds, 0);\n onChange(next);\n }}\n />\n );\n}\n","import { ActionIcon, Button, Checkbox, Indicator, Loader, TextInput } from '@mantine/core';\nimport type { ReactNode } from 'react';\nimport { useMemo } from 'react';\nimport { TableSettingsProvider } from '../../misc/tableSettings';\nimport type { PartialTableTheme } from '../../types';\nimport { Popover } from '../defaultTheme/popover';\nimport { mergeThemes } from '../tableTheme';\nimport { MantineDatePicker } from './datePicker';\n\nconst buttonVariants = {\n text: 'subtle',\n outlined: 'default',\n contained: 'filled',\n} as const;\n\nexport const mantineTheme: PartialTableTheme = {\n components: {\n Button: ({ startIcon, variant = 'text', ...props }) => (\n <Button\n {...props}\n variant={buttonVariants[variant]}\n color={variant === 'contained' ? undefined : 'gray'}\n c={variant === 'contained' ? undefined : 'inherit'}\n leftSection={startIcon}\n size=\"sm\"\n justify=\"flex-start\"\n />\n ),\n IconButton: (props) => (\n <ActionIcon\n {...props}\n variant=\"subtle\"\n color=\"gray\"\n c=\"inherit\"\n radius=\"xl\"\n css={{ fontSize: 'var(--mantine-font-size-sm)' }}\n />\n ),\n Checkbox: (props) => (\n <Checkbox {...props} size=\"xs\" css={{ padding: 'calc(var(--spacing) * 1.8)' }} />\n ),\n Popover: (props) => <Popover {...props} zIndex=\"var(--mantine-z-index-popover)\" />,\n Badge: ({ badgeContent, children }) => (\n // Flex, so the root is as tall as the arrow instead of a whole line box, which pushed the badge out of the cell\n <Indicator\n label={badgeContent}\n disabled={!badgeContent}\n size={16}\n inline\n css={{ display: 'inline-flex' }}\n >\n {children}\n </Indicator>\n ),\n TextField: ({ startIcon, endIcon, inputRef, value, ...props }) => (\n <TextInput\n {...props}\n ref={inputRef}\n value={value ?? ''}\n leftSection={startIcon}\n rightSection={endIcon}\n leftSectionPointerEvents=\"all\"\n rightSectionPointerEvents=\"all\"\n size=\"sm\"\n />\n ),\n Spinner: (props) => <Loader {...props} size=\"sm\" />,\n DatePicker: MantineDatePicker,\n },\n // Mantine sets `color-scheme` on :root, so light-dark() follows its color scheme.\n colors: {\n primary: {\n main: 'var(--mantine-primary-color-filled)',\n light: 'var(--mantine-primary-color-4)',\n contrastText: 'var(--mantine-primary-color-contrast)',\n },\n secondary: {\n main: 'var(--mantine-color-gray-filled)',\n light: 'var(--mantine-color-gray-4)',\n contrastText: 'var(--mantine-color-white)',\n },\n blocked: {\n main: 'var(--mantine-color-red-filled)',\n light: 'var(--mantine-color-red-4)',\n contrastText: 'var(--mantine-color-white)',\n },\n background: 'var(--mantine-color-body)',\n text: 'var(--mantine-color-text)',\n border: 'var(--mantine-color-default-border)',\n borderLight: 'light-dark(var(--mantine-color-gray-2), var(--mantine-color-dark-5))',\n },\n};\n\nexport function MantineTableThemeProvider({\n theme,\n children,\n}: {\n theme?: PartialTableTheme;\n children?: ReactNode;\n}) {\n const _theme = useMemo(() => mergeThemes(mantineTheme, theme ?? {}), [theme]);\n\n return <TableSettingsProvider theme={_theme}>{children}</TableSettingsProvider>;\n}\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_tableTheme = require("./tableTheme-CSqMIpLB.cjs");
2
+ const require_tableTheme = require("./tableTheme-CsTWp3yn.cjs");
3
3
  let react = require("react");
4
4
  let _emotion_react_jsx_runtime = require("@emotion/react/jsx-runtime");
5
5
  let _material_ui_core = require("@material-ui/core");
package/dist/mui4Theme.js CHANGED
@@ -1,4 +1,4 @@
1
- import { a as TableSettingsProvider, n as Popover, t as mergeThemes } from "./tableTheme-BTWZIwYS.js";
1
+ import { a as TableSettingsProvider, n as Popover, t as mergeThemes } from "./tableTheme-BgaqIBux.js";
2
2
  import { useMemo } from "react";
3
3
  import { jsx } from "@emotion/react/jsx-runtime";
4
4
  import { Badge, Button, Checkbox, CircularProgress, IconButton, TextField, useTheme } from "@material-ui/core";
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_tableTheme = require("./tableTheme-CSqMIpLB.cjs");
2
+ const require_tableTheme = require("./tableTheme-CsTWp3yn.cjs");
3
3
  let react = require("react");
4
4
  let _emotion_react_jsx_runtime = require("@emotion/react/jsx-runtime");
5
5
  let _mui_material = require("@mui/material");
package/dist/mui5Theme.js CHANGED
@@ -1,4 +1,4 @@
1
- import { a as TableSettingsProvider, n as Popover, t as mergeThemes } from "./tableTheme-BTWZIwYS.js";
1
+ import { a as TableSettingsProvider, n as Popover, t as mergeThemes } from "./tableTheme-BgaqIBux.js";
2
2
  import { useMemo } from "react";
3
3
  import { jsx } from "@emotion/react/jsx-runtime";
4
4
  import { Badge, Button, Checkbox, CircularProgress, IconButton, TextField, useTheme } from "@mui/material";
@@ -136,7 +136,7 @@ const defaultClasses = {
136
136
  //#endregion
137
137
  //#region src/theme/defaultTheme/popover.tsx
138
138
  const MAX_OFFSET = 20;
139
- const Popover = ({ anchorEl, open, hidden, onClose, children, className, backdropClassName, align }) => {
139
+ const Popover = ({ anchorEl, open, hidden, onClose, children, className, backdropClassName, align, zIndex = 1e3 }) => {
140
140
  const probe = useRef(null);
141
141
  const backdrop = useRef(null);
142
142
  const popper = useRef(null);
@@ -219,7 +219,8 @@ const Popover = ({ anchorEl, open, hidden, onClose, children, className, backdro
219
219
  left: 0,
220
220
  right: 0,
221
221
  top: 0,
222
- bottom: 0
222
+ bottom: 0,
223
+ zIndex: `calc(${zIndex} - 1)`
223
224
  }, hidden && { display: "none" }],
224
225
  onClick: () => onClose()
225
226
  }), /* @__PURE__ */ jsx("div", {
@@ -233,7 +234,7 @@ const Popover = ({ anchorEl, open, hidden, onClose, children, className, backdro
233
234
  maxWidth: [`calc(100vw - (100vw - 100%) - var(--margin-x))`, `calc(100dvw - (100dvw - 100%) - var(--margin-x))`],
234
235
  maxHeight: [`calc(100vh - (100vh - 100%) - var(--margin-x))`, `calc(100dvh - (100dvh - 100%) - var(--margin-x))`],
235
236
  margin: 10,
236
- zIndex: 1,
237
+ zIndex,
237
238
  overflowY: "auto",
238
239
  color: "var(--table-text-color)",
239
240
  visibility: "hidden"
@@ -267,4 +268,4 @@ function mergeThemes(...themes) {
267
268
  //#endregion
268
269
  export { TableSettingsProvider as a, TableSettingsContext as i, Popover as n, defaultClasses as r, mergeThemes as t };
269
270
 
270
- //# sourceMappingURL=tableTheme-BTWZIwYS.js.map
271
+ //# sourceMappingURL=tableTheme-BgaqIBux.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tableTheme-BgaqIBux.js","names":[],"sources":["../src/misc/tableSettings.tsx","../src/misc/throttle.ts","../src/theme/defaultTheme/defaultClasses.ts","../src/theme/defaultTheme/popover.tsx","../src/theme/tableTheme.tsx"],"sourcesContent":["import { ReactNode, createContext, useContext } from 'react';\nimport CsvExporter from '../exporters/csvExporter';\nimport { ExporterEntry } from '../exporters/exporter';\nimport { PartialTableTheme } from '../types';\n\nexport interface TableSettingsContextType {\n theme: PartialTableTheme;\n exporters: ExporterEntry[];\n}\n\nexport const TableSettingsContext = createContext<TableSettingsContextType>({\n theme: {},\n exporters: [\n { action: 'copy', exporter: new CsvExporter() },\n { action: 'download', exporter: new CsvExporter() },\n ],\n});\n\nexport function TableSettingsProvider({\n theme,\n exporters,\n additionalExporters,\n children,\n}: Partial<TableSettingsContextType> & {\n additionalExporters?: ExporterEntry[];\n children?: ReactNode;\n}) {\n const inherited = useContext(TableSettingsContext);\n theme ??= inherited.theme;\n exporters ??= inherited.exporters;\n\n if (additionalExporters) {\n exporters = [...exporters, ...additionalExporters];\n }\n\n return (\n <TableSettingsContext.Provider\n value={{\n theme,\n exporters,\n }}\n >\n {children}\n </TableSettingsContext.Provider>\n );\n}\n","export function throttle<Args extends any[]>(\n function_: (...args: Args) => void,\n ms: number,\n): { (...args: Args): void; flush(): void; cancel(): void } {\n let last = 0;\n let lastArgs: Args | undefined;\n let timeout: ReturnType<typeof setTimeout> | undefined;\n\n function run() {\n const args = lastArgs;\n\n last = Date.now();\n lastArgs = undefined;\n timeout = undefined;\n\n function_(...args!);\n }\n\n return Object.assign(\n function (...args: Args) {\n const now = Date.now();\n lastArgs = args;\n\n if (timeout) {\n // do nothing\n } else if (now < last + ms) {\n timeout = setTimeout(run, last + ms - now);\n } else {\n run();\n }\n },\n {\n flush() {\n if (lastArgs) {\n run();\n }\n },\n\n cancel() {\n if (timeout) {\n clearTimeout(timeout);\n }\n },\n },\n );\n}\n","import { css } from '@emotion/react';\n\nconst cell = css({\n padding: `calc(var(--spacing) * 0.1) calc(2 * var(--spacing))`,\n display: 'flex',\n alignItems: 'center',\n borderBottom: '1px solid var(--table-border-light-color)',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n minHeight: 5,\n\n '&:empty': {\n padding: 0,\n },\n});\n\nexport const defaultClasses = {\n table: css({\n position: 'relative',\n display: 'grid',\n color: 'var(--table-text-color)',\n }),\n\n cell,\n\n cellFill: css({\n borderBottom: '1px solid var(--table-border-light-color)',\n }),\n\n headerCell: css(cell, {\n borderBottom: '1px solid var(--table-border-color)',\n background: 'var(--table-background-color)',\n\n '&:not(:empty)': {\n padding: `var(--spacing) 0 var(--spacing) calc(2 * var(--spacing))`,\n },\n }),\n\n footerCell: css(cell, {\n padding: `var(--spacing) calc(2 * var(--spacing))`,\n borderTop: '1px solid var(--table-border-color)',\n borderBottom: 'none',\n background: 'var(--table-background-color)',\n }),\n\n firstCell: css({\n justifyContent: 'start',\n }),\n\n sticky: css({\n position: 'sticky',\n top: 0,\n zIndex: 2,\n }),\n\n stickyBottom: css({\n position: 'sticky',\n bottom: 0,\n zIndex: 2,\n }),\n\n headerFill: css({\n borderBottom: '1px solid var(--table-border-color)',\n background: 'var(--table-background-color)',\n }),\n\n footerFill: css({\n borderTop: '1px solid var(--table-border-color)',\n background: 'var(--table-background-color)',\n }),\n\n text: css({\n minWidth: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n }),\n\n card: css({\n borderRadius: 4,\n boxShadow: '0px 3px 14px 2px rgb(0 0 0 / 12%)',\n background: 'var(--table-background-color)',\n }),\n\n clearFiltersButton: css({\n padding: `0 calc(2 * var(--spacing))`,\n fontWeight: 'bold',\n position: 'sticky',\n left: 0,\n maxWidth: 'fit-content',\n gridColumn: '2/-1',\n button: {\n color: 'var(--primaryMain) !important',\n border: 'solid 1px',\n borderColor: 'var(--primaryMain) !important',\n margin: 'var(--spacing)',\n },\n }),\n\n details: css(cell, {\n gridColumn: '1 / -1',\n whiteSpace: 'normal',\n }),\n};\n","import { useLayoutEffect, useRef, type ComponentProps } from 'react';\nimport { createPortal } from 'react-dom';\nimport { throttle } from '../../misc/throttle';\nimport type { TableTheme } from '../../types';\nimport { defaultClasses } from './defaultClasses';\n\nconst MAX_OFFSET = 20;\n\nexport const Popover = ({\n anchorEl,\n open,\n hidden,\n onClose,\n children,\n className,\n backdropClassName,\n align,\n // Above typical app chrome (fixed headers, bottom navigation), which a portal to body competes with\n zIndex = 1000,\n}: ComponentProps<TableTheme['components']['Popover']> & { zIndex?: number | string }) => {\n const probe = useRef<HTMLDivElement>(null);\n const backdrop = useRef<HTMLDivElement>(null);\n const popper = useRef<HTMLDivElement>(null);\n\n useLayoutEffect(() => {\n if (!open) {\n return;\n }\n\n function check() {\n const marginLeft = parseFloat(getComputedStyle(popper.current ?? document.body).marginLeft);\n const marginRight = parseFloat(getComputedStyle(popper.current ?? document.body).marginRight);\n const marginTop = parseFloat(getComputedStyle(popper.current ?? document.body).marginTop);\n const marginBottom = parseFloat(\n getComputedStyle(popper.current ?? document.body).marginBottom,\n );\n popper.current?.style.setProperty('--margin-x', `${marginLeft + marginRight}px`);\n popper.current?.style.setProperty('--margin-y', `${marginTop + marginBottom}px`);\n\n if (hidden) {\n popper.current?.style.setProperty('visibility', 'hidden');\n return;\n }\n\n const viewportWidth = window.visualViewport?.width ?? window.innerWidth;\n const viewportHeight = window.visualViewport?.height ?? window.innerHeight;\n const { width: popperWidth = 0, height: popperHeight = 0 } =\n popper.current?.getBoundingClientRect() ?? {};\n\n const next = {\n left: 0,\n top: 0,\n };\n\n if (anchorEl) {\n const bb = anchorEl.getBoundingClientRect();\n\n if (align === 'center') {\n next.left = bb.left + bb.width / 2 - popperWidth / 2;\n } else {\n next.left =\n bb.left -\n Math.min(popperWidth ? popperWidth / 2 : Number.POSITIVE_INFINITY, MAX_OFFSET);\n }\n\n next.top = bb.bottom;\n } else {\n next.left = (viewportWidth - popperWidth) / 2;\n next.top = (viewportHeight - popperHeight) / 2;\n }\n\n if (next.left > viewportWidth - popperWidth - marginLeft - marginRight) {\n next.left = viewportWidth - popperWidth - marginLeft - marginRight;\n }\n if (next.left < marginLeft) {\n next.left = marginLeft;\n }\n if (next.top > viewportHeight - popperHeight - marginTop - marginBottom) {\n next.top = viewportHeight - popperHeight - marginTop - marginBottom;\n }\n if (next.top < marginTop) {\n next.top = marginTop;\n }\n\n popper.current?.style.setProperty('left', `${next.left}px`);\n popper.current?.style.setProperty('top', `${next.top}px`);\n popper.current?.style.setProperty('visibility', 'visible');\n }\n const checkThrottled = throttle(check, 16);\n check();\n\n const handle = setInterval(checkThrottled, 1000);\n window.addEventListener('resize', checkThrottled);\n window.addEventListener('scroll', checkThrottled, true);\n\n return () => {\n clearInterval(handle);\n window.removeEventListener('resize', checkThrottled);\n window.removeEventListener('scroll', checkThrottled, true);\n };\n }, [anchorEl, open, hidden, align]);\n\n useLayoutEffect(() => {\n if (!open) return;\n\n const ancestors = [];\n for (let node = probe.current?.parentElement; node; node = node.parentElement) {\n ancestors.push(node);\n }\n\n for (const node of ancestors.reverse()) {\n const value = document.defaultView?.getComputedStyle(node).getPropertyValue('z-index');\n\n if (value && !Number.isNaN(Number(value))) {\n const newZIndex = Number(value) + 1;\n\n if (\n backdrop.current &&\n !(\n Number(\n document.defaultView?.getComputedStyle(backdrop.current).getPropertyValue('z-index'),\n ) > newZIndex\n )\n ) {\n backdrop.current?.style.setProperty('z-index', newZIndex.toString());\n }\n\n if (\n popper.current &&\n !(\n Number(\n document.defaultView?.getComputedStyle(popper.current).getPropertyValue('z-index'),\n ) >\n newZIndex + 1\n )\n ) {\n popper.current?.style.setProperty('z-index', (newZIndex + 1).toString());\n }\n return;\n }\n }\n }, [anchorEl, open]);\n\n if (!open) return null;\n\n return (\n <>\n <div\n ref={probe}\n css={{\n display: 'none',\n }}\n />\n\n {createPortal(\n <>\n <div\n ref={backdrop}\n className={backdropClassName}\n css={[\n {\n position: 'fixed',\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n zIndex: `calc(${zIndex} - 1)`,\n },\n hidden && { display: 'none' },\n ]}\n onClick={() => onClose()}\n />\n\n <div\n ref={popper}\n className={className}\n css={[\n defaultClasses.card,\n {\n position: 'fixed',\n width: 'max-content',\n maxWidth: [\n `calc(100vw - (100vw - 100%) - var(--margin-x))`,\n `calc(100dvw - (100dvw - 100%) - var(--margin-x))`,\n ],\n maxHeight: [\n `calc(100vh - (100vh - 100%) - var(--margin-x))`,\n `calc(100dvh - (100dvh - 100%) - var(--margin-x))`,\n ],\n margin: 10,\n zIndex,\n overflowY: 'auto',\n color: 'var(--table-text-color)',\n visibility: 'hidden',\n },\n hidden && { display: 'none' },\n ]}\n >\n {children}\n </div>\n </>,\n document.body,\n )}\n </>\n );\n};\n","import type { PartialTableTheme } from '../types';\n\nexport function mergeThemes<T>(...themes: PartialTableTheme<T>[]): PartialTableTheme<T> {\n return {\n text: Object.assign({}, ...themes.map((theme) => theme.text)),\n classes: Object.assign({}, ...themes.map((theme) => theme.classes)),\n styles: Object.assign({}, ...themes.map((theme) => theme.styles)),\n components: Object.assign({}, ...themes.map((theme) => theme.components)),\n icons: Object.assign({}, ...themes.map((theme) => theme.icons)),\n colors: {\n primary: Object.assign({}, ...themes.map((theme) => theme.colors?.primary)),\n secondary: Object.assign({}, ...themes.map((theme) => theme.colors?.secondary)),\n blocked: Object.assign({}, ...themes.map((theme) => theme.colors?.blocked)),\n background: themes\n .map((theme) => theme.colors?.background)\n .reverse()\n .find((x) => x !== undefined),\n text: themes\n .map((theme) => theme.colors?.text)\n .reverse()\n .find((x) => x !== undefined),\n border: themes\n .map((theme) => theme.colors?.border)\n .reverse()\n .find((x) => x !== undefined),\n borderLight: themes\n .map((theme) => theme.colors?.borderLight)\n .reverse()\n .find((x) => x !== undefined),\n },\n spacing: themes\n .map((theme) => theme.spacing)\n .reverse()\n .find((x) => x !== undefined),\n };\n}\n"],"mappings":"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"}
@@ -136,7 +136,7 @@ const defaultClasses = {
136
136
  //#endregion
137
137
  //#region src/theme/defaultTheme/popover.tsx
138
138
  const MAX_OFFSET = 20;
139
- const Popover = ({ anchorEl, open, hidden, onClose, children, className, backdropClassName, align }) => {
139
+ const Popover = ({ anchorEl, open, hidden, onClose, children, className, backdropClassName, align, zIndex = 1e3 }) => {
140
140
  const probe = (0, react.useRef)(null);
141
141
  const backdrop = (0, react.useRef)(null);
142
142
  const popper = (0, react.useRef)(null);
@@ -219,7 +219,8 @@ const Popover = ({ anchorEl, open, hidden, onClose, children, className, backdro
219
219
  left: 0,
220
220
  right: 0,
221
221
  top: 0,
222
- bottom: 0
222
+ bottom: 0,
223
+ zIndex: `calc(${zIndex} - 1)`
223
224
  }, hidden && { display: "none" }],
224
225
  onClick: () => onClose()
225
226
  }), /* @__PURE__ */ (0, _emotion_react_jsx_runtime.jsx)("div", {
@@ -233,7 +234,7 @@ const Popover = ({ anchorEl, open, hidden, onClose, children, className, backdro
233
234
  maxWidth: [`calc(100vw - (100vw - 100%) - var(--margin-x))`, `calc(100dvw - (100dvw - 100%) - var(--margin-x))`],
234
235
  maxHeight: [`calc(100vh - (100vh - 100%) - var(--margin-x))`, `calc(100dvh - (100dvh - 100%) - var(--margin-x))`],
235
236
  margin: 10,
236
- zIndex: 1,
237
+ zIndex,
237
238
  overflowY: "auto",
238
239
  color: "var(--table-text-color)",
239
240
  visibility: "hidden"
@@ -296,4 +297,4 @@ Object.defineProperty(exports, "mergeThemes", {
296
297
  }
297
298
  });
298
299
 
299
- //# sourceMappingURL=tableTheme-CSqMIpLB.cjs.map
300
+ //# sourceMappingURL=tableTheme-CsTWp3yn.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tableTheme-CsTWp3yn.cjs","names":["createContext","CsvExporter","useContext","css","useRef","createPortal"],"sources":["../src/misc/tableSettings.tsx","../src/misc/throttle.ts","../src/theme/defaultTheme/defaultClasses.ts","../src/theme/defaultTheme/popover.tsx","../src/theme/tableTheme.tsx"],"sourcesContent":["import { ReactNode, createContext, useContext } from 'react';\nimport CsvExporter from '../exporters/csvExporter';\nimport { ExporterEntry } from '../exporters/exporter';\nimport { PartialTableTheme } from '../types';\n\nexport interface TableSettingsContextType {\n theme: PartialTableTheme;\n exporters: ExporterEntry[];\n}\n\nexport const TableSettingsContext = createContext<TableSettingsContextType>({\n theme: {},\n exporters: [\n { action: 'copy', exporter: new CsvExporter() },\n { action: 'download', exporter: new CsvExporter() },\n ],\n});\n\nexport function TableSettingsProvider({\n theme,\n exporters,\n additionalExporters,\n children,\n}: Partial<TableSettingsContextType> & {\n additionalExporters?: ExporterEntry[];\n children?: ReactNode;\n}) {\n const inherited = useContext(TableSettingsContext);\n theme ??= inherited.theme;\n exporters ??= inherited.exporters;\n\n if (additionalExporters) {\n exporters = [...exporters, ...additionalExporters];\n }\n\n return (\n <TableSettingsContext.Provider\n value={{\n theme,\n exporters,\n }}\n >\n {children}\n </TableSettingsContext.Provider>\n );\n}\n","export function throttle<Args extends any[]>(\n function_: (...args: Args) => void,\n ms: number,\n): { (...args: Args): void; flush(): void; cancel(): void } {\n let last = 0;\n let lastArgs: Args | undefined;\n let timeout: ReturnType<typeof setTimeout> | undefined;\n\n function run() {\n const args = lastArgs;\n\n last = Date.now();\n lastArgs = undefined;\n timeout = undefined;\n\n function_(...args!);\n }\n\n return Object.assign(\n function (...args: Args) {\n const now = Date.now();\n lastArgs = args;\n\n if (timeout) {\n // do nothing\n } else if (now < last + ms) {\n timeout = setTimeout(run, last + ms - now);\n } else {\n run();\n }\n },\n {\n flush() {\n if (lastArgs) {\n run();\n }\n },\n\n cancel() {\n if (timeout) {\n clearTimeout(timeout);\n }\n },\n },\n );\n}\n","import { css } from '@emotion/react';\n\nconst cell = css({\n padding: `calc(var(--spacing) * 0.1) calc(2 * var(--spacing))`,\n display: 'flex',\n alignItems: 'center',\n borderBottom: '1px solid var(--table-border-light-color)',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n minHeight: 5,\n\n '&:empty': {\n padding: 0,\n },\n});\n\nexport const defaultClasses = {\n table: css({\n position: 'relative',\n display: 'grid',\n color: 'var(--table-text-color)',\n }),\n\n cell,\n\n cellFill: css({\n borderBottom: '1px solid var(--table-border-light-color)',\n }),\n\n headerCell: css(cell, {\n borderBottom: '1px solid var(--table-border-color)',\n background: 'var(--table-background-color)',\n\n '&:not(:empty)': {\n padding: `var(--spacing) 0 var(--spacing) calc(2 * var(--spacing))`,\n },\n }),\n\n footerCell: css(cell, {\n padding: `var(--spacing) calc(2 * var(--spacing))`,\n borderTop: '1px solid var(--table-border-color)',\n borderBottom: 'none',\n background: 'var(--table-background-color)',\n }),\n\n firstCell: css({\n justifyContent: 'start',\n }),\n\n sticky: css({\n position: 'sticky',\n top: 0,\n zIndex: 2,\n }),\n\n stickyBottom: css({\n position: 'sticky',\n bottom: 0,\n zIndex: 2,\n }),\n\n headerFill: css({\n borderBottom: '1px solid var(--table-border-color)',\n background: 'var(--table-background-color)',\n }),\n\n footerFill: css({\n borderTop: '1px solid var(--table-border-color)',\n background: 'var(--table-background-color)',\n }),\n\n text: css({\n minWidth: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n }),\n\n card: css({\n borderRadius: 4,\n boxShadow: '0px 3px 14px 2px rgb(0 0 0 / 12%)',\n background: 'var(--table-background-color)',\n }),\n\n clearFiltersButton: css({\n padding: `0 calc(2 * var(--spacing))`,\n fontWeight: 'bold',\n position: 'sticky',\n left: 0,\n maxWidth: 'fit-content',\n gridColumn: '2/-1',\n button: {\n color: 'var(--primaryMain) !important',\n border: 'solid 1px',\n borderColor: 'var(--primaryMain) !important',\n margin: 'var(--spacing)',\n },\n }),\n\n details: css(cell, {\n gridColumn: '1 / -1',\n whiteSpace: 'normal',\n }),\n};\n","import { useLayoutEffect, useRef, type ComponentProps } from 'react';\nimport { createPortal } from 'react-dom';\nimport { throttle } from '../../misc/throttle';\nimport type { TableTheme } from '../../types';\nimport { defaultClasses } from './defaultClasses';\n\nconst MAX_OFFSET = 20;\n\nexport const Popover = ({\n anchorEl,\n open,\n hidden,\n onClose,\n children,\n className,\n backdropClassName,\n align,\n // Above typical app chrome (fixed headers, bottom navigation), which a portal to body competes with\n zIndex = 1000,\n}: ComponentProps<TableTheme['components']['Popover']> & { zIndex?: number | string }) => {\n const probe = useRef<HTMLDivElement>(null);\n const backdrop = useRef<HTMLDivElement>(null);\n const popper = useRef<HTMLDivElement>(null);\n\n useLayoutEffect(() => {\n if (!open) {\n return;\n }\n\n function check() {\n const marginLeft = parseFloat(getComputedStyle(popper.current ?? document.body).marginLeft);\n const marginRight = parseFloat(getComputedStyle(popper.current ?? document.body).marginRight);\n const marginTop = parseFloat(getComputedStyle(popper.current ?? document.body).marginTop);\n const marginBottom = parseFloat(\n getComputedStyle(popper.current ?? document.body).marginBottom,\n );\n popper.current?.style.setProperty('--margin-x', `${marginLeft + marginRight}px`);\n popper.current?.style.setProperty('--margin-y', `${marginTop + marginBottom}px`);\n\n if (hidden) {\n popper.current?.style.setProperty('visibility', 'hidden');\n return;\n }\n\n const viewportWidth = window.visualViewport?.width ?? window.innerWidth;\n const viewportHeight = window.visualViewport?.height ?? window.innerHeight;\n const { width: popperWidth = 0, height: popperHeight = 0 } =\n popper.current?.getBoundingClientRect() ?? {};\n\n const next = {\n left: 0,\n top: 0,\n };\n\n if (anchorEl) {\n const bb = anchorEl.getBoundingClientRect();\n\n if (align === 'center') {\n next.left = bb.left + bb.width / 2 - popperWidth / 2;\n } else {\n next.left =\n bb.left -\n Math.min(popperWidth ? popperWidth / 2 : Number.POSITIVE_INFINITY, MAX_OFFSET);\n }\n\n next.top = bb.bottom;\n } else {\n next.left = (viewportWidth - popperWidth) / 2;\n next.top = (viewportHeight - popperHeight) / 2;\n }\n\n if (next.left > viewportWidth - popperWidth - marginLeft - marginRight) {\n next.left = viewportWidth - popperWidth - marginLeft - marginRight;\n }\n if (next.left < marginLeft) {\n next.left = marginLeft;\n }\n if (next.top > viewportHeight - popperHeight - marginTop - marginBottom) {\n next.top = viewportHeight - popperHeight - marginTop - marginBottom;\n }\n if (next.top < marginTop) {\n next.top = marginTop;\n }\n\n popper.current?.style.setProperty('left', `${next.left}px`);\n popper.current?.style.setProperty('top', `${next.top}px`);\n popper.current?.style.setProperty('visibility', 'visible');\n }\n const checkThrottled = throttle(check, 16);\n check();\n\n const handle = setInterval(checkThrottled, 1000);\n window.addEventListener('resize', checkThrottled);\n window.addEventListener('scroll', checkThrottled, true);\n\n return () => {\n clearInterval(handle);\n window.removeEventListener('resize', checkThrottled);\n window.removeEventListener('scroll', checkThrottled, true);\n };\n }, [anchorEl, open, hidden, align]);\n\n useLayoutEffect(() => {\n if (!open) return;\n\n const ancestors = [];\n for (let node = probe.current?.parentElement; node; node = node.parentElement) {\n ancestors.push(node);\n }\n\n for (const node of ancestors.reverse()) {\n const value = document.defaultView?.getComputedStyle(node).getPropertyValue('z-index');\n\n if (value && !Number.isNaN(Number(value))) {\n const newZIndex = Number(value) + 1;\n\n if (\n backdrop.current &&\n !(\n Number(\n document.defaultView?.getComputedStyle(backdrop.current).getPropertyValue('z-index'),\n ) > newZIndex\n )\n ) {\n backdrop.current?.style.setProperty('z-index', newZIndex.toString());\n }\n\n if (\n popper.current &&\n !(\n Number(\n document.defaultView?.getComputedStyle(popper.current).getPropertyValue('z-index'),\n ) >\n newZIndex + 1\n )\n ) {\n popper.current?.style.setProperty('z-index', (newZIndex + 1).toString());\n }\n return;\n }\n }\n }, [anchorEl, open]);\n\n if (!open) return null;\n\n return (\n <>\n <div\n ref={probe}\n css={{\n display: 'none',\n }}\n />\n\n {createPortal(\n <>\n <div\n ref={backdrop}\n className={backdropClassName}\n css={[\n {\n position: 'fixed',\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n zIndex: `calc(${zIndex} - 1)`,\n },\n hidden && { display: 'none' },\n ]}\n onClick={() => onClose()}\n />\n\n <div\n ref={popper}\n className={className}\n css={[\n defaultClasses.card,\n {\n position: 'fixed',\n width: 'max-content',\n maxWidth: [\n `calc(100vw - (100vw - 100%) - var(--margin-x))`,\n `calc(100dvw - (100dvw - 100%) - var(--margin-x))`,\n ],\n maxHeight: [\n `calc(100vh - (100vh - 100%) - var(--margin-x))`,\n `calc(100dvh - (100dvh - 100%) - var(--margin-x))`,\n ],\n margin: 10,\n zIndex,\n overflowY: 'auto',\n color: 'var(--table-text-color)',\n visibility: 'hidden',\n },\n hidden && { display: 'none' },\n ]}\n >\n {children}\n </div>\n </>,\n document.body,\n )}\n </>\n );\n};\n","import type { PartialTableTheme } from '../types';\n\nexport function mergeThemes<T>(...themes: PartialTableTheme<T>[]): PartialTableTheme<T> {\n return {\n text: Object.assign({}, ...themes.map((theme) => theme.text)),\n classes: Object.assign({}, ...themes.map((theme) => theme.classes)),\n styles: Object.assign({}, ...themes.map((theme) => theme.styles)),\n components: Object.assign({}, ...themes.map((theme) => theme.components)),\n icons: Object.assign({}, ...themes.map((theme) => theme.icons)),\n colors: {\n primary: Object.assign({}, ...themes.map((theme) => theme.colors?.primary)),\n secondary: Object.assign({}, ...themes.map((theme) => theme.colors?.secondary)),\n blocked: Object.assign({}, ...themes.map((theme) => theme.colors?.blocked)),\n background: themes\n .map((theme) => theme.colors?.background)\n .reverse()\n .find((x) => x !== undefined),\n text: themes\n .map((theme) => theme.colors?.text)\n .reverse()\n .find((x) => x !== undefined),\n border: themes\n .map((theme) => theme.colors?.border)\n .reverse()\n .find((x) => x !== undefined),\n borderLight: themes\n .map((theme) => theme.colors?.borderLight)\n .reverse()\n .find((x) => x !== undefined),\n },\n spacing: themes\n .map((theme) => theme.spacing)\n .reverse()\n .find((x) => x !== undefined),\n };\n}\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.js";
2
- import { i as TableSettingsContext, n as Popover, t as mergeThemes } from "./tableTheme-BTWZIwYS.js";
2
+ import { i as TableSettingsContext, n as Popover, t as mergeThemes } from "./tableTheme-BgaqIBux.js";
3
3
  import { Fragment, cloneElement, createContext, useContext, useEffect, useId, useMemo, useRef, useState } from "react";
4
4
  import { Fragment as Fragment$1, jsx, jsxs } from "@emotion/react/jsx-runtime";
5
5
  import { Temporal } from "temporal-polyfill";
@@ -1790,4 +1790,4 @@ function columnTheme(theme, column) {
1790
1790
  //#endregion
1791
1791
  export { today as A, endOfDay as C, thisMonth as D, startOfDay$1 as E, useCssVariables as M, thisWeek as O, dateIntersect as S, lastDays as T, DatePickerProvider as _, useLibraryClassName as a, commonQuickOptions as b, castArray as c, getDescendants as d, helpers_exports as f, DatePicker as g, uniq as h, useTheme$1 as i, debounce as j, thisYear as k, cx as l, toSingles as m, columnTheme as n, useUserClassName as o, orderBy as p, useTableTheme as r, asString as s, ThemeContext as t, getAncestors as u, DatePickerQuickOptions as v, getCalendarWeek as w, dateClamp as x, DefaultDatePicker as y };
1792
1792
 
1793
- //# sourceMappingURL=useTheme-C2MxW5qw.js.map
1793
+ //# sourceMappingURL=useTheme-B2ejsCOL.js.map