@sanity/rich-date-input 4.0.3 → 4.0.5

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.d.ts CHANGED
@@ -1,11 +1,4 @@
1
- import * as sanity1 from "sanity";
2
1
  import { DatetimeDefinition, ObjectDefinition, ObjectSchemaType } from "sanity";
3
- interface RichDate {
4
- local: string;
5
- utc: string;
6
- timezone: string;
7
- offset: number;
8
- }
9
2
  declare const richDateTypeName: "richDate";
10
3
  type RichDateSchemaType = Omit<ObjectSchemaType, 'options'> & {
11
4
  options?: DatetimeDefinition['options'];
@@ -22,6 +15,12 @@ declare module 'sanity' {
22
15
  richDate: RichDateDefinition;
23
16
  }
24
17
  }
25
- declare const richDate: sanity1.Plugin<void>;
18
+ interface RichDate {
19
+ local: string;
20
+ utc: string;
21
+ timezone: string;
22
+ offset: number;
23
+ }
24
+ declare const richDate: import("sanity").Plugin<void>;
26
25
  export { type RichDate, type RichDateDefinition, type RichDateSchemaType, richDate };
27
26
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/types/index.ts","../src/schema.ts","../src/index.ts"],"mappings":";;UAAiB,QAAA;EACf,KAAA;EACA,GAAA;EACA,QAAA;EACA,MAAA;AAAA;AAAA,cCMI,gBAAA;AAAA,KAEM,kBAAA,GAAqB,IAAA,CAAK,gBAAA;EACpC,OAAA,GAAU,kBAAA;AAAA;;;;UAMK,kBAAA,SAA2B,IAAA,CAAK,gBAAA;EAC/C,IAAA,SAAa,gBAAA;EACb,OAAA,GAAU,kBAAA;AAAA;AAAA;EAAA,UAKO,oBAAA;IACf,QAAA,EAAU,kBAAA;EAAA;AAAA;AAAA,cCrBD,QAAA,EAKX,OAAA,CALmB,MAAA"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/schema.ts","../src/types/index.ts","../src/index.ts"],"mappings":";cAUM,gBAAA;AAAA,KAEM,kBAAA,GAAqB,IAAA,CAAK,gBAAA;EACpC,OAAA,GAAU,kBAAA;AAAA;;AAHgC;AAE5C;UAOiB,kBAAA,SAA2B,IAAA,CAAK,gBAAA;EAC/C,IAAA,SAAa,gBAAA;EACb,OAAA,GAAU,kBAAA;AAAA;AAAA;EAAA,UAKO,oBAAA;IACf,QAAA,EAAU,kBAAkB;EAAA;AAAA;AAAA,UC3Bf,QAAA;EACf,KAAA;EACA,GAAA;EACA,QAAA;EACA,MAAA;AAAA;AAAA,cCCW,QAAA,mBAAQ,MAAA"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/utils/index.ts","../src/components/RelativeDateTimePicker.tsx","../src/components/TimezoneButton.tsx","../src/components/TimezoneSelector.tsx","../src/components/RichDateInput.tsx","../src/schema.ts","../src/index.ts"],"sourcesContent":["import {getTimeZones} from '@vvo/tzdb'\nimport {formatInTimeZone} from 'date-fns-tz'\n\nimport type {NormalizedTimeZone} from '../types'\n\nexport const unlocalizeDateTime = (datetime: string, timezone: string): string => {\n return formatInTimeZone(datetime, timezone, 'yyyy-MM-dd HH:mm:ss')\n}\n\n/* We have to \"fake\" a UTC date to make the datepicker look \"right\"\n * to the user. For example, if someone sets 7:00AM PST, which is 3PM UTC\n * and I am on the east coast, I want to have 12:00PM UTC, which will look like 7:00AM to me\n * In other words, UTC minus 3 hours, or (UTC(my offset - their offset))\n * this is purely cosmetic and should not be saved at all\n */\nexport const getConstructedUTCDate = (utc: string, offset: number): string => {\n const date = new Date(utc)\n const currentOffset = date.getTimezoneOffset() * -1\n const diff = currentOffset - offset\n const fakeUTCDate = new Date(date.getTime() - diff * 60 * 1000)\n return fakeUTCDate.toISOString()\n}\n\n//keep some consistency with scheduled publishing\n//https://github.com/sanity-io/sanity-plugin-scheduled-publishing/blob/bb282e3df9a8a73df37fab8ee1fdd0e2430745be/src/hooks/useTimeZone.tsx#L17\nexport const allTimezones: NormalizedTimeZone[] = getTimeZones().map((tz) => {\n const offset = tz.currentTimeFormat.split(' ')[0]\n return {\n abbreviation: tz.abbreviation,\n alternativeName: tz.alternativeName,\n mainCities: tz.mainCities.join(', '),\n // Main time zone name 'Africa/Dar_es_Salaam'\n name: tz.name,\n // Time zone name with underscores removed\n namePretty: tz.name.replaceAll('_', ' '),\n offset: offset ?? '',\n // all searchable text - this is transformed before being rendered in `<AutoComplete>`\n value: `${tz.currentTimeFormat} ${tz.abbreviation} ${tz.name}`,\n currentTimeOffsetInMinutes: tz.currentTimeOffsetInMinutes,\n group: tz.group,\n }\n})\n","import {formatInTimeZone, getTimezoneOffset, zonedTimeToUtc} from 'date-fns-tz'\nimport {type ReactNode, useCallback} from 'react'\nimport {DateTimeInput, type FieldProps, type FormPatch, type PatchEvent, set, unset} from 'sanity'\n\nimport type {RichDate} from '../types'\n\nimport {getConstructedUTCDate, unlocalizeDateTime} from '../utils'\n\ninterface RelativeDateTimePickerProps extends Omit<FieldProps, 'renderDefault'> {\n dateValue?: RichDate\n}\nexport const RelativeDateTimePicker = (props: RelativeDateTimePickerProps): ReactNode => {\n const {\n dateValue: value,\n inputProps: {onChange},\n } = props\n\n const handleDateChange = useCallback(\n (patch: FormPatch | PatchEvent | FormPatch[]) => {\n const formatter = new Intl.DateTimeFormat()\n const timezone = value?.timezone ?? formatter.resolvedOptions().timeZone\n\n // Type guard to check if patch is a set patch with a value\n if (\n !patch ||\n Array.isArray(patch) ||\n !('type' in patch) ||\n patch.type !== 'set' ||\n !('value' in patch) ||\n typeof patch.value !== 'string'\n ) {\n onChange(unset())\n return\n }\n\n const newDatetime = patch.value\n\n /* get what time the user \"meant\" to set without tz info\n * right now, newDatetime is the time the user set plus\n * their current offset, not the timezone offset\n */\n const desiredDateTime = unlocalizeDateTime(newDatetime, formatter.resolvedOptions().timeZone)\n\n const newUtcDateObject = zonedTimeToUtc(desiredDateTime, timezone)\n // offset may have changed based on DST, capture that\n const newOffset = getTimezoneOffset(timezone, newUtcDateObject) / 60 / 1000\n const localDate = formatInTimeZone(newUtcDateObject, timezone, \"yyyy-MM-dd'T'HH:mm:ssXXX\")\n\n const patches = []\n\n patches.push(set(newUtcDateObject.toISOString(), ['utc']))\n patches.push(set(localDate, ['local']))\n\n if (!value?.timezone) {\n patches.push(set(timezone, ['timezone']))\n }\n\n if (value?.offset !== newOffset) {\n patches.push(set(newOffset, ['offset']))\n }\n\n onChange(patches)\n },\n [onChange, value],\n )\n\n // Dynamically calculate the offset for the actual event date to handle DST correctly\n const displayOffset =\n value?.utc && value?.timezone\n ? getTimezoneOffset(value.timezone, new Date(value.utc)) / 60 / 1000\n : (value?.offset ?? 0)\n\n const dateToDisplay = value?.utc ? getConstructedUTCDate(value.utc, displayOffset) : ''\n return (\n // @ts-expect-error -- slight mismatch in elementProps and renderDefault, but should line up in practice\n <DateTimeInput\n {...props}\n id={props.inputProps.id}\n onChange={handleDateChange}\n value={dateToDisplay}\n />\n )\n}\n","import {EarthAmericasIcon} from '@sanity/icons'\nimport {Button} from '@sanity/ui'\nimport {type ReactNode} from 'react'\n\nimport {allTimezones} from '../utils'\n\ninterface TimezoneButtonProps {\n onClick: () => void\n timezone: string\n}\n\nexport const TimezoneButton = (props: TimezoneButtonProps): ReactNode => {\n const {onClick, timezone} = props\n const formatter = new Intl.DateTimeFormat()\n const currentTimezone = formatter.resolvedOptions().timeZone\n\n const label =\n allTimezones.find((tz) => tz.name === timezone)?.abbreviation ??\n allTimezones.find((tz) => tz.group.includes(timezone))?.abbreviation ??\n allTimezones.find((tz) => tz.name === currentTimezone)?.abbreviation ??\n allTimezones.find((tz) => tz.group.includes(currentTimezone))?.abbreviation\n\n return (\n <Button\n fontSize={1}\n style={{width: '100%'}}\n justify={'flex-start'}\n icon={EarthAmericasIcon}\n mode=\"ghost\"\n onClick={onClick}\n text={`${label}`}\n aria-label=\"Select a timezone\"\n />\n )\n}\n","import {SearchIcon} from '@sanity/icons'\nimport {Autocomplete, Box, Card, Text} from '@sanity/ui'\nimport {formatInTimeZone, getTimezoneOffset, zonedTimeToUtc} from 'date-fns-tz'\nimport {type ReactNode, useCallback} from 'react'\nimport {type ObjectInputProps, set} from 'sanity'\n\nimport type {RichDate} from '../types'\n\nimport {allTimezones, unlocalizeDateTime} from '../utils'\n\ninterface TimezoneSelectorProps {\n onChange: Pick<ObjectInputProps, 'onChange'>['onChange']\n value?: RichDate\n}\n\nexport const TimezoneSelector = (props: TimezoneSelectorProps): ReactNode => {\n const {onChange, value} = props\n const currentTz = allTimezones.find((tz) => tz.name === value?.timezone)\n const formatter = new Intl.DateTimeFormat()\n const userTzName = formatter.resolvedOptions().timeZone\n const userTz = (allTimezones.find((tz) => tz.name === userTzName) ??\n allTimezones.find((tz) => tz.group.includes(userTzName)))!\n\n const handleTimezoneChange = useCallback(\n (selectedTz: string) => {\n const newTimezone = allTimezones.find((tz) => tz.value === selectedTz) ?? userTz\n\n const timezonePatch = set(newTimezone.name, ['timezone'])\n const patches = [timezonePatch]\n\n // then, recalculate UTC and local from \"old\" time with the new offset\n if (value?.utc) {\n const desiredDateTime = unlocalizeDateTime(value.utc, value.timezone)\n const newUtcDateObject = zonedTimeToUtc(desiredDateTime, newTimezone.name)\n const newOffset = getTimezoneOffset(newTimezone.name, newUtcDateObject) / 60 / 1000\n const newLocalDate = formatInTimeZone(\n newUtcDateObject.toISOString(),\n newTimezone.name,\n \"yyyy-MM-dd'T'HH:mm:ssXXX\",\n )\n patches.push(set(newUtcDateObject.toISOString(), ['utc']))\n patches.push(set(newLocalDate, ['local']))\n patches.push(set(newOffset, ['offset']))\n }\n onChange(patches)\n },\n [onChange, userTz, value],\n )\n\n return (\n // taken from Scheduled Publishing, again!\n // https://github.com/sanity-io/sanity-plugin-scheduled-publishing/blob/bb282e3df9a8a73df37fab8ee1fdd0e2430745be/src/components/dialogs/DialogTimeZone.tsx#L100\n <Box padding={4}>\n <Autocomplete\n fontSize={2}\n icon={SearchIcon}\n id=\"timezone\"\n onChange={handleTimezoneChange}\n openButton\n options={allTimezones}\n padding={4}\n placeholder=\"Search for a city or time zone\"\n popover={{\n boundaryElement: document.querySelector('body'),\n constrainSize: true,\n placement: 'bottom-start',\n }}\n renderOption={(option) => {\n return (\n <Card as=\"button\" padding={3}>\n <Text size={1} textOverflow=\"ellipsis\">\n <span>GMT{option.offset}</span>\n <span style={{fontWeight: 500, marginLeft: '1em'}}>{option.alternativeName}</span>\n <span style={{marginLeft: '1em'}}>{option.mainCities}</span>\n </Text>\n </Card>\n )\n }}\n renderValue={(_, option) => {\n if (!option) return ''\n return `${option.alternativeName} (${option.namePretty})`\n }}\n tabIndex={-1}\n value={currentTz?.value ?? userTz.value}\n />\n </Box>\n )\n}\n","import {Box, Dialog, Flex} from '@sanity/ui'\nimport {type ReactNode, useCallback, useState} from 'react'\nimport {ObjectInputMember, type ObjectInputProps} from 'sanity'\n\nimport type {RichDate} from '../types'\n\nimport {RelativeDateTimePicker} from './RelativeDateTimePicker'\nimport {TimezoneButton} from './TimezoneButton'\nimport {TimezoneSelector} from './TimezoneSelector'\n\nfunction isRichDate(value: unknown): value is RichDate {\n return (\n typeof value === 'object' && value !== null && '_type' in value && value._type === 'richDate'\n )\n}\n\nexport const RichDateInput = (props: ObjectInputProps): ReactNode => {\n const {onChange, value, members, schemaType} = props\n const {options} = schemaType\n const localMember = members.find((member) => member.kind === 'field' && member.name === 'local')\n const timezoneMember = members.find(\n (member) => member.kind === 'field' && member.name === 'timezone',\n )\n const [timezoneSelectorOpen, setTimezoneSelectorOpen] = useState(false)\n const onClose = useCallback(() => setTimezoneSelectorOpen(false), [])\n const onOpen = useCallback(() => setTimezoneSelectorOpen(true), [])\n\n const richDateValue = isRichDate(value) ? value : undefined\n\n return (\n <>\n <Flex>\n <Box flex={[1, 2, 4]}>\n {localMember && (\n <ObjectInputMember\n {...props}\n member={localMember}\n renderField={(renderFieldProps) => (\n <RelativeDateTimePicker\n {...renderFieldProps}\n dateValue={richDateValue}\n schemaType={{...renderFieldProps.schemaType, options}}\n inputProps={{...renderFieldProps.inputProps, onChange: onChange}}\n />\n )}\n />\n )}\n </Box>\n <Box flex={[1]} marginLeft={[2, 2, 3, 4]} marginTop={2}>\n {timezoneMember && (\n <ObjectInputMember\n {...props}\n member={timezoneMember}\n renderInput={() => (\n <TimezoneButton onClick={onOpen} timezone={richDateValue?.timezone ?? ''} />\n )}\n />\n )}\n </Box>\n </Flex>\n {timezoneSelectorOpen && (\n <Dialog onClose={onClose} header=\"Select a timezone\" id=\"timezone-select\" width={1}>\n <TimezoneSelector onChange={onChange} value={richDateValue} />\n </Dialog>\n )}\n </>\n )\n}\n","import {\n type DatetimeDefinition,\n defineField,\n defineType,\n type ObjectDefinition,\n type ObjectSchemaType,\n} from 'sanity'\n\nimport {RichDateInput} from './components/RichDateInput'\n\nconst richDateTypeName = 'richDate' as const\n\nexport type RichDateSchemaType = Omit<ObjectSchemaType, 'options'> & {\n options?: DatetimeDefinition['options']\n}\n\n/**\n * @public\n */\nexport interface RichDateDefinition extends Omit<ObjectDefinition, 'type' | 'fields' | 'options'> {\n type: typeof richDateTypeName\n options?: DatetimeDefinition['options']\n}\n\ndeclare module 'sanity' {\n //allows the custom input to be valid for the schema def\n export interface IntrinsicDefinitions {\n richDate: RichDateDefinition\n }\n}\n\nexport const richDateSchema = defineType({\n name: richDateTypeName,\n title: 'Rich Date',\n type: 'object',\n fields: [\n defineField({\n name: 'local',\n title: 'Local',\n type: 'string',\n }),\n defineField({\n name: 'utc',\n title: 'UTC',\n type: 'string',\n }),\n defineField({\n name: 'timezone',\n title: 'Timezone',\n type: 'string',\n }),\n defineField({\n name: 'offset',\n title: 'Offset',\n type: 'number',\n }),\n ],\n\n components: {\n input: RichDateInput,\n },\n})\n","import {definePlugin} from 'sanity'\n\nimport type {RichDate} from './types'\n\nimport {type RichDateDefinition, richDateSchema, type RichDateSchemaType} from './schema'\n\nexport const richDate = definePlugin({\n name: 'v3-rich-date-input',\n schema: {\n types: [richDateSchema],\n },\n})\n\nexport type {RichDate, RichDateDefinition, RichDateSchemaType}\n"],"names":["unlocalizeDateTime","datetime","timezone","formatInTimeZone","getConstructedUTCDate","utc","offset","date","Date","diff","getTimezoneOffset","getTime","toISOString","allTimezones","getTimeZones","map","tz","currentTimeFormat","split","abbreviation","alternativeName","mainCities","join","name","namePretty","replaceAll","value","currentTimeOffsetInMinutes","group","RelativeDateTimePicker","props","$","_c","dateValue","inputProps","t0","onChange","t1","patch","formatter","Intl","DateTimeFormat","resolvedOptions","timeZone","Array","isArray","type","unset","newDatetime","desiredDateTime","newUtcDateObject","zonedTimeToUtc","newOffset","localDate","patches","push","set","handleDateChange","t2","displayOffset","t3","dateToDisplay","t4","id","TimezoneButton","onClick","currentTimezone","find","tz_2","tz_1","includes","tz_0","label","for","width","EarthAmericasIcon","TimezoneSelector","currentTz","Symbol","userTzName","userTz","selectedTz","newTimezone","newLocalDate","handleTimezoneChange","boundaryElement","document","querySelector","constrainSize","placement","t5","SearchIcon","_temp","_temp2","option","fontWeight","marginLeft","_","option_0","isRichDate","_type","RichDateInput","members","schemaType","options","localMember","timezoneMember","timezoneSelectorOpen","setTimezoneSelectorOpen","useState","onClose","onOpen","richDateValue","undefined","renderFieldProps","t6","t7","t8","t9","t10","t11","t12","t13","member","kind","member_0","richDateTypeName","richDateSchema","defineType","title","fields","defineField","components","input","richDate","definePlugin","schema","types"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/utils/index.ts","../src/components/RelativeDateTimePicker.tsx","../src/components/TimezoneButton.tsx","../src/components/TimezoneSelector.tsx","../src/components/RichDateInput.tsx","../src/schema.ts","../src/index.ts"],"sourcesContent":["import {getTimeZones} from '@vvo/tzdb'\nimport {formatInTimeZone} from 'date-fns-tz'\n\nimport type {NormalizedTimeZone} from '../types'\n\nexport const unlocalizeDateTime = (datetime: string, timezone: string): string => {\n return formatInTimeZone(datetime, timezone, 'yyyy-MM-dd HH:mm:ss')\n}\n\n/* We have to \"fake\" a UTC date to make the datepicker look \"right\"\n * to the user. For example, if someone sets 7:00AM PST, which is 3PM UTC\n * and I am on the east coast, I want to have 12:00PM UTC, which will look like 7:00AM to me\n * In other words, UTC minus 3 hours, or (UTC(my offset - their offset))\n * this is purely cosmetic and should not be saved at all\n */\nexport const getConstructedUTCDate = (utc: string, offset: number): string => {\n const date = new Date(utc)\n const currentOffset = date.getTimezoneOffset() * -1\n const diff = currentOffset - offset\n const fakeUTCDate = new Date(date.getTime() - diff * 60 * 1000)\n return fakeUTCDate.toISOString()\n}\n\n//keep some consistency with scheduled publishing\n//https://github.com/sanity-io/sanity-plugin-scheduled-publishing/blob/bb282e3df9a8a73df37fab8ee1fdd0e2430745be/src/hooks/useTimeZone.tsx#L17\nexport const allTimezones: NormalizedTimeZone[] = getTimeZones().map((tz) => {\n const offset = tz.currentTimeFormat.split(' ')[0]\n return {\n abbreviation: tz.abbreviation,\n alternativeName: tz.alternativeName,\n mainCities: tz.mainCities.join(', '),\n // Main time zone name 'Africa/Dar_es_Salaam'\n name: tz.name,\n // Time zone name with underscores removed\n namePretty: tz.name.replaceAll('_', ' '),\n offset: offset ?? '',\n // all searchable text - this is transformed before being rendered in `<AutoComplete>`\n value: `${tz.currentTimeFormat} ${tz.abbreviation} ${tz.name}`,\n currentTimeOffsetInMinutes: tz.currentTimeOffsetInMinutes,\n group: tz.group,\n }\n})\n","import {formatInTimeZone, getTimezoneOffset, zonedTimeToUtc} from 'date-fns-tz'\nimport {type ReactNode, useCallback} from 'react'\nimport {DateTimeInput, type FieldProps, type FormPatch, type PatchEvent, set, unset} from 'sanity'\n\nimport type {RichDate} from '../types'\nimport {getConstructedUTCDate, unlocalizeDateTime} from '../utils'\n\ninterface RelativeDateTimePickerProps extends Omit<FieldProps, 'renderDefault'> {\n dateValue?: RichDate\n}\nexport const RelativeDateTimePicker = (props: RelativeDateTimePickerProps): ReactNode => {\n const {\n dateValue: value,\n inputProps: {onChange},\n } = props\n\n const handleDateChange = useCallback(\n (patch: FormPatch | PatchEvent | FormPatch[]) => {\n const formatter = new Intl.DateTimeFormat()\n const timezone = value?.timezone ?? formatter.resolvedOptions().timeZone\n\n // Type guard to check if patch is a set patch with a value\n if (\n !patch ||\n Array.isArray(patch) ||\n !('type' in patch) ||\n patch.type !== 'set' ||\n !('value' in patch) ||\n typeof patch.value !== 'string'\n ) {\n onChange(unset())\n return\n }\n\n const newDatetime = patch.value\n\n /* get what time the user \"meant\" to set without tz info\n * right now, newDatetime is the time the user set plus\n * their current offset, not the timezone offset\n */\n const desiredDateTime = unlocalizeDateTime(newDatetime, formatter.resolvedOptions().timeZone)\n\n const newUtcDateObject = zonedTimeToUtc(desiredDateTime, timezone)\n // offset may have changed based on DST, capture that\n const newOffset = getTimezoneOffset(timezone, newUtcDateObject) / 60 / 1000\n const localDate = formatInTimeZone(newUtcDateObject, timezone, \"yyyy-MM-dd'T'HH:mm:ssXXX\")\n\n const patches = []\n\n patches.push(set(newUtcDateObject.toISOString(), ['utc']))\n patches.push(set(localDate, ['local']))\n\n if (!value?.timezone) {\n patches.push(set(timezone, ['timezone']))\n }\n\n if (value?.offset !== newOffset) {\n patches.push(set(newOffset, ['offset']))\n }\n\n onChange(patches)\n },\n [onChange, value],\n )\n\n // Dynamically calculate the offset for the actual event date to handle DST correctly\n const displayOffset =\n value?.utc && value?.timezone\n ? getTimezoneOffset(value.timezone, new Date(value.utc)) / 60 / 1000\n : (value?.offset ?? 0)\n\n const dateToDisplay = value?.utc ? getConstructedUTCDate(value.utc, displayOffset) : ''\n return (\n // @ts-expect-error -- slight mismatch in elementProps and renderDefault, but should line up in practice\n <DateTimeInput\n {...props}\n id={props.inputProps.id}\n onChange={handleDateChange}\n value={dateToDisplay}\n />\n )\n}\n","import {EarthAmericasIcon} from '@sanity/icons'\nimport {Button} from '@sanity/ui'\nimport {type ReactNode} from 'react'\n\nimport {allTimezones} from '../utils'\n\ninterface TimezoneButtonProps {\n onClick: () => void\n timezone: string\n}\n\nexport const TimezoneButton = (props: TimezoneButtonProps): ReactNode => {\n const {onClick, timezone} = props\n const formatter = new Intl.DateTimeFormat()\n const currentTimezone = formatter.resolvedOptions().timeZone\n\n const label =\n allTimezones.find((tz) => tz.name === timezone)?.abbreviation ??\n allTimezones.find((tz) => tz.group.includes(timezone))?.abbreviation ??\n allTimezones.find((tz) => tz.name === currentTimezone)?.abbreviation ??\n allTimezones.find((tz) => tz.group.includes(currentTimezone))?.abbreviation\n\n return (\n <Button\n fontSize={1}\n style={{width: '100%'}}\n justify={'flex-start'}\n icon={EarthAmericasIcon}\n mode=\"ghost\"\n onClick={onClick}\n text={`${label}`}\n aria-label=\"Select a timezone\"\n />\n )\n}\n","import {SearchIcon} from '@sanity/icons'\nimport {Autocomplete, Box, Card, Text} from '@sanity/ui'\nimport {formatInTimeZone, getTimezoneOffset, zonedTimeToUtc} from 'date-fns-tz'\nimport {type ReactNode, useCallback} from 'react'\nimport {type ObjectInputProps, set} from 'sanity'\n\nimport type {RichDate} from '../types'\nimport {allTimezones, unlocalizeDateTime} from '../utils'\n\ninterface TimezoneSelectorProps {\n onChange: Pick<ObjectInputProps, 'onChange'>['onChange']\n value?: RichDate\n}\n\nexport const TimezoneSelector = (props: TimezoneSelectorProps): ReactNode => {\n const {onChange, value} = props\n const currentTz = allTimezones.find((tz) => tz.name === value?.timezone)\n const formatter = new Intl.DateTimeFormat()\n const userTzName = formatter.resolvedOptions().timeZone\n const userTz = (allTimezones.find((tz) => tz.name === userTzName) ??\n allTimezones.find((tz) => tz.group.includes(userTzName)))!\n\n const handleTimezoneChange = useCallback(\n (selectedTz: string) => {\n const newTimezone = allTimezones.find((tz) => tz.value === selectedTz) ?? userTz\n\n const timezonePatch = set(newTimezone.name, ['timezone'])\n const patches = [timezonePatch]\n\n // then, recalculate UTC and local from \"old\" time with the new offset\n if (value?.utc) {\n const desiredDateTime = unlocalizeDateTime(value.utc, value.timezone)\n const newUtcDateObject = zonedTimeToUtc(desiredDateTime, newTimezone.name)\n const newOffset = getTimezoneOffset(newTimezone.name, newUtcDateObject) / 60 / 1000\n const newLocalDate = formatInTimeZone(\n newUtcDateObject.toISOString(),\n newTimezone.name,\n \"yyyy-MM-dd'T'HH:mm:ssXXX\",\n )\n patches.push(set(newUtcDateObject.toISOString(), ['utc']))\n patches.push(set(newLocalDate, ['local']))\n patches.push(set(newOffset, ['offset']))\n }\n onChange(patches)\n },\n [onChange, userTz, value],\n )\n\n return (\n // taken from Scheduled Publishing, again!\n // https://github.com/sanity-io/sanity-plugin-scheduled-publishing/blob/bb282e3df9a8a73df37fab8ee1fdd0e2430745be/src/components/dialogs/DialogTimeZone.tsx#L100\n <Box padding={4}>\n <Autocomplete\n fontSize={2}\n icon={SearchIcon}\n id=\"timezone\"\n onChange={handleTimezoneChange}\n openButton\n options={allTimezones}\n padding={4}\n placeholder=\"Search for a city or time zone\"\n popover={{\n boundaryElement: document.querySelector('body'),\n constrainSize: true,\n placement: 'bottom-start',\n }}\n renderOption={(option) => {\n return (\n <Card as=\"button\" padding={3}>\n <Text size={1} textOverflow=\"ellipsis\">\n <span>GMT{option.offset}</span>\n <span style={{fontWeight: 500, marginLeft: '1em'}}>{option.alternativeName}</span>\n <span style={{marginLeft: '1em'}}>{option.mainCities}</span>\n </Text>\n </Card>\n )\n }}\n renderValue={(_, option) => {\n if (!option) return ''\n return `${option.alternativeName} (${option.namePretty})`\n }}\n tabIndex={-1}\n value={currentTz?.value ?? userTz.value}\n />\n </Box>\n )\n}\n","import {Box, Dialog, Flex} from '@sanity/ui'\nimport {type ReactNode, useCallback, useState} from 'react'\nimport {ObjectInputMember, type ObjectInputProps} from 'sanity'\n\nimport type {RichDate} from '../types'\nimport {RelativeDateTimePicker} from './RelativeDateTimePicker'\nimport {TimezoneButton} from './TimezoneButton'\nimport {TimezoneSelector} from './TimezoneSelector'\n\nfunction isRichDate(value: unknown): value is RichDate {\n return (\n typeof value === 'object' && value !== null && '_type' in value && value._type === 'richDate'\n )\n}\n\nexport const RichDateInput = (props: ObjectInputProps): ReactNode => {\n const {onChange, value, members, schemaType} = props\n const {options} = schemaType\n const localMember = members.find((member) => member.kind === 'field' && member.name === 'local')\n const timezoneMember = members.find(\n (member) => member.kind === 'field' && member.name === 'timezone',\n )\n const [timezoneSelectorOpen, setTimezoneSelectorOpen] = useState(false)\n const onClose = useCallback(() => setTimezoneSelectorOpen(false), [])\n const onOpen = useCallback(() => setTimezoneSelectorOpen(true), [])\n\n const richDateValue = isRichDate(value) ? value : undefined\n\n return (\n <>\n <Flex>\n <Box flex={[1, 2, 4]}>\n {localMember && (\n <ObjectInputMember\n {...props}\n member={localMember}\n renderField={(renderFieldProps) => (\n <RelativeDateTimePicker\n {...renderFieldProps}\n dateValue={richDateValue}\n schemaType={{...renderFieldProps.schemaType, options}}\n inputProps={{...renderFieldProps.inputProps, onChange: onChange}}\n />\n )}\n />\n )}\n </Box>\n <Box flex={[1]} marginLeft={[2, 2, 3, 4]} marginTop={2}>\n {timezoneMember && (\n <ObjectInputMember\n {...props}\n member={timezoneMember}\n renderInput={() => (\n <TimezoneButton onClick={onOpen} timezone={richDateValue?.timezone ?? ''} />\n )}\n />\n )}\n </Box>\n </Flex>\n {timezoneSelectorOpen && (\n <Dialog onClose={onClose} header=\"Select a timezone\" id=\"timezone-select\" width={1}>\n <TimezoneSelector onChange={onChange} value={richDateValue} />\n </Dialog>\n )}\n </>\n )\n}\n","import {\n type DatetimeDefinition,\n defineField,\n defineType,\n type ObjectDefinition,\n type ObjectSchemaType,\n} from 'sanity'\n\nimport {RichDateInput} from './components/RichDateInput'\n\nconst richDateTypeName = 'richDate' as const\n\nexport type RichDateSchemaType = Omit<ObjectSchemaType, 'options'> & {\n options?: DatetimeDefinition['options']\n}\n\n/**\n * @public\n */\nexport interface RichDateDefinition extends Omit<ObjectDefinition, 'type' | 'fields' | 'options'> {\n type: typeof richDateTypeName\n options?: DatetimeDefinition['options']\n}\n\ndeclare module 'sanity' {\n //allows the custom input to be valid for the schema def\n export interface IntrinsicDefinitions {\n richDate: RichDateDefinition\n }\n}\n\nexport const richDateSchema = defineType({\n name: richDateTypeName,\n title: 'Rich Date',\n type: 'object',\n fields: [\n defineField({\n name: 'local',\n title: 'Local',\n type: 'string',\n }),\n defineField({\n name: 'utc',\n title: 'UTC',\n type: 'string',\n }),\n defineField({\n name: 'timezone',\n title: 'Timezone',\n type: 'string',\n }),\n defineField({\n name: 'offset',\n title: 'Offset',\n type: 'number',\n }),\n ],\n\n components: {\n input: RichDateInput,\n },\n})\n","import {definePlugin} from 'sanity'\n\nimport {type RichDateDefinition, richDateSchema, type RichDateSchemaType} from './schema'\nimport type {RichDate} from './types'\n\nexport const richDate = definePlugin({\n name: 'v3-rich-date-input',\n schema: {\n types: [richDateSchema],\n },\n})\n\nexport type {RichDate, RichDateDefinition, RichDateSchemaType}\n"],"names":["unlocalizeDateTime","datetime","timezone","formatInTimeZone","getConstructedUTCDate","utc","offset","date","Date","diff","getTimezoneOffset","getTime","toISOString","allTimezones","getTimeZones","map","tz","currentTimeFormat","split","abbreviation","alternativeName","mainCities","join","name","namePretty","replaceAll","value","currentTimeOffsetInMinutes","group","RelativeDateTimePicker","props","$","_c","dateValue","inputProps","t0","onChange","t1","patch","formatter","Intl","DateTimeFormat","resolvedOptions","timeZone","Array","isArray","type","unset","newDatetime","desiredDateTime","newUtcDateObject","zonedTimeToUtc","newOffset","localDate","patches","push","set","handleDateChange","t2","displayOffset","t3","dateToDisplay","t4","id","TimezoneButton","onClick","currentTimezone","find","tz_2","tz_1","includes","tz_0","label","for","width","EarthAmericasIcon","TimezoneSelector","currentTz","Symbol","userTzName","userTz","selectedTz","newTimezone","newLocalDate","handleTimezoneChange","boundaryElement","document","querySelector","constrainSize","placement","t5","SearchIcon","_temp","_temp2","option","fontWeight","marginLeft","_","option_0","isRichDate","_type","RichDateInput","members","schemaType","options","localMember","timezoneMember","timezoneSelectorOpen","setTimezoneSelectorOpen","useState","onClose","onOpen","richDateValue","undefined","renderFieldProps","t6","t7","t8","t9","t10","t11","t12","t13","member","kind","member_0","richDateTypeName","richDateSchema","defineType","title","fields","defineField","components","input","richDate","definePlugin","schema","types"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sanity/rich-date-input",
3
- "version": "4.0.3",
3
+ "version": "4.0.5",
4
4
  "description": "A timezone-aware datetime type and input component for Sanity Studio",
5
5
  "keywords": [
6
6
  "cms",
@@ -33,34 +33,33 @@
33
33
  },
34
34
  "dependencies": {
35
35
  "@sanity/icons": "^3.7.4",
36
- "@sanity/ui": "^3.1.11",
36
+ "@sanity/ui": "^3.2.0",
37
37
  "@vvo/tzdb": "^6.198.0",
38
38
  "date-fns": "^2.30.0",
39
39
  "date-fns-tz": "^2.0.1"
40
40
  },
41
41
  "devDependencies": {
42
- "@sanity/pkg-utils": "^10.4.1",
43
- "@types/react": "^19.2.10",
42
+ "@sanity/pkg-utils": "^10.5.4",
43
+ "@types/node": "^24.13.2",
44
+ "@types/react": "^19.2.14",
44
45
  "@types/react-dom": "^19.2.3",
45
46
  "babel-plugin-react-compiler": "^1.0.0",
46
- "eslint": "^9.39.2",
47
- "react": "^19.2.4",
48
- "react-dom": "^19.2.4",
49
- "sanity": "^5.7.0",
50
- "@repo/eslint-config": "0.0.0",
47
+ "react": "^19.2.5",
48
+ "react-dom": "^19.2.5",
49
+ "sanity": "^6.0.0",
50
+ "styled-components": "^6.4.2",
51
51
  "@repo/package.config": "0.0.0",
52
52
  "@repo/tsconfig": "0.0.0"
53
53
  },
54
54
  "peerDependencies": {
55
55
  "react": "^19.2",
56
56
  "react-dom": "^19.2",
57
- "sanity": "^5"
57
+ "sanity": "^5 || ^6.0.0-0"
58
58
  },
59
59
  "engines": {
60
60
  "node": ">=20.19 <22 || >=22.12"
61
61
  },
62
62
  "scripts": {
63
- "build": "pkg build --strict --check --clean",
64
- "lint": "eslint ."
63
+ "build": "pkg build --strict --check --clean"
65
64
  }
66
65
  }