schummar-table 1.0.2 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/mantineTheme.cjs +1 -1
- package/dist/mantineTheme.cjs.map +1 -1
- package/dist/mantineTheme.js +1 -1
- package/dist/mantineTheme.js.map +1 -1
- package/package.json +1 -1
package/dist/mantineTheme.cjs
CHANGED
|
@@ -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",
|
|
@@ -1 +1 @@
|
|
|
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 && (\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
|
+
{"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":"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"}
|
package/dist/mantineTheme.js
CHANGED
|
@@ -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",
|
package/dist/mantineTheme.js.map
CHANGED
|
@@ -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: (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
|
+
{"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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"}
|