Skip to content

Commit

Permalink
fix: default scheduled changes (#5141)
Browse files Browse the repository at this point in the history
  • Loading branch information
tiagoapolo authored Feb 26, 2025
1 parent 7b4a1a5 commit c7533a8
Show file tree
Hide file tree
Showing 9 changed files with 418 additions and 391 deletions.
11 changes: 4 additions & 7 deletions frontend/common/types/responses.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,10 @@ export type EdgePagedResponse<T> = PagedResponse<T> & {
last_evaluated_key?: string
pages?: (string | undefined)[]
}
export type Approval =
| {
user: number
}
| {
group: number
}
export type Approval = {
user?: number
group?: number
}
export type PagedResponse<T> = {
count?: number
next?: string
Expand Down
110 changes: 44 additions & 66 deletions frontend/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion frontend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@
"react": "16.14.0",
"react-async-script": "1.2.0",
"react-click-outside": "3.0.1",
"react-datepicker": "6.2.0",
"react-datepicker": "^8.1.0",
"react-device-detect": "1.9.9",
"react-diff-viewer-continued": "^3.3.1",
"react-dom": "16.14.0",
Expand Down
2 changes: 1 addition & 1 deletion frontend/web/components/AdminAPIKeys.js
Original file line number Diff line number Diff line change
Expand Up @@ -273,7 +273,7 @@ export class CreateAPIKey extends PureComponent {
<DateSelect
onChange={(e) => {
this.setState({
expiry_date: e.toISOString(),
expiry_date: e?.toISOString(),
})
}}
selected={expiry_date ? moment(expiry_date)._d : null}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,39 @@
import DatePicker from 'react-datepicker'
import DatePicker, { DatePickerProps } from 'react-datepicker'
import Icon from './Icon'
import { useState } from 'react'
import { useState, FC } from 'react'

export interface DateSelectProps
extends Pick<DatePickerProps, 'dateFormat' | 'selected'> {
value?: DatePickerProps['value']
className?: string
isValid?: boolean
onChange?: (
date: Date | null,
event?: React.MouseEvent<HTMLElement> | React.KeyboardEvent<HTMLElement>,
) => void
}

const DateSelect: FC<DateSelectProps> = ({
className,
dateFormat,
isValid,
onChange,
selected,
value,
}) => {
const [isMonthPicker, setIsMonthPicker] = useState(false)
const [isYearPicker, setIsYearPicker] = useState(false)
const [touched, setTouched] = useState(false)
const [isOpen, setIsOpen] = useState(false)

const DateSelect = ({ dateFormat, onChange, onSelect, selected, value }) => {
const [isMonthPicker, setMonthPicker] = useState(false)
const [isYearPicker, setYearPicker] = useState(false)
const [isOpen, setOpen] = useState(false)
return (
<Flex style={{ position: 'relative' }}>
<DatePicker
className={`input-lg ${className} ${
!isValid && touched ? 'invalid' : ''
}`}
dateFormat={dateFormat}
onFocus={() => setTouched(true)}
renderCustomHeader={({
date,
decreaseMonth,
Expand All @@ -32,9 +56,9 @@ const DateSelect = ({ dateFormat, onChange, onSelect, selected, value }) => {
</span>
<div
onClick={() => {
setMonthPicker(true)
setIsMonthPicker(true)
if (isMonthPicker) {
setYearPicker(true)
setIsYearPicker(true)
}
}}
className='react-datepicker-header-title'
Expand Down Expand Up @@ -64,25 +88,33 @@ const DateSelect = ({ dateFormat, onChange, onSelect, selected, value }) => {
</Row>
)}
minDate={new Date()}
onChange={(date, e) => {
if (date < new Date()) {
setMonthPicker(false)
setYearPicker(false)
onChange(new Date())
} else {
onChange(date)
if (!e) {
setOpen(false)
}
if (isMonthPicker) {
setMonthPicker(false)
}
if (isYearPicker) {
setYearPicker(false)
}
onChange={(date, e): DatePickerProps['onChange'] => {
if (date === null) {
setIsMonthPicker(false)
setIsYearPicker(false)
onChange?.(null)
return
}

const today = new Date()
if (date < today) {
setIsMonthPicker(false)
setIsYearPicker(false)
onChange?.(new Date())
return
}

onChange?.(date)
if (!e) {
setIsOpen(false)
}
if (isMonthPicker) {
setIsMonthPicker(false)
}
if (isYearPicker) {
setIsYearPicker(false)
}
}}
className='input-lg'
formatWeekDay={(nameOfDay) => nameOfDay.substr(0, 1)}
showTimeSelect={!isMonthPicker && !isYearPicker}
showMonthYearPicker={isMonthPicker}
Expand All @@ -92,12 +124,12 @@ const DateSelect = ({ dateFormat, onChange, onSelect, selected, value }) => {
selected={selected}
value={value}
timeFormat='HH:mm'
onInputClick={() => setOpen(true)}
onInputClick={() => setIsOpen(true)}
onClickOutside={(e) => {
if (e) {
setOpen(false)
setMonthPicker(false)
setYearPicker(false)
setIsOpen(false)
setIsMonthPicker(false)
setIsYearPicker(false)
}
}}
open={isOpen}
Expand Down
Loading

0 comments on commit c7533a8

Please sign in to comment.