mirror of
https://github.com/yangshun/tech-interview-handbook.git
synced 2025-07-07 09:25:27 +08:00
[portal][ui] allow customization of spacing within MonthYearPicker
This commit is contained in:
@ -28,6 +28,7 @@ function FormMonthYearPickerWithRef({
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<MonthYearPicker
|
<MonthYearPicker
|
||||||
|
className="space-x-6"
|
||||||
{...(rest as MonthYearPickerProps)}
|
{...(rest as MonthYearPickerProps)}
|
||||||
value={value}
|
value={value}
|
||||||
onChange={(val) => {
|
onChange={(val) => {
|
||||||
|
@ -140,6 +140,7 @@ export default function ContributeQuestionForm({
|
|||||||
name="date"
|
name="date"
|
||||||
render={({ field }) => (
|
render={({ field }) => (
|
||||||
<MonthYearPicker
|
<MonthYearPicker
|
||||||
|
className="space-x-2"
|
||||||
monthRequired={true}
|
monthRequired={true}
|
||||||
value={{
|
value={{
|
||||||
month: ((field.value.getMonth() as number) + 1) as Month,
|
month: ((field.value.getMonth() as number) + 1) as Month,
|
||||||
|
@ -96,6 +96,7 @@ export default function CreateQuestionEncounterForm({
|
|||||||
)}
|
)}
|
||||||
{step === 3 && (
|
{step === 3 && (
|
||||||
<MonthYearPicker
|
<MonthYearPicker
|
||||||
|
className="space-x-2"
|
||||||
// TODO: Add label and hide label on Select instead.
|
// TODO: Add label and hide label on Select instead.
|
||||||
monthLabel=""
|
monthLabel=""
|
||||||
value={{
|
value={{
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import clsx from 'clsx';
|
||||||
import { useEffect, useId, useState } from 'react';
|
import { useEffect, useId, useState } from 'react';
|
||||||
import { Select } from '@tih/ui';
|
import { Select } from '@tih/ui';
|
||||||
|
|
||||||
@ -14,6 +15,7 @@ export type MonthYearOptional = Readonly<{
|
|||||||
}>;
|
}>;
|
||||||
|
|
||||||
type Props = Readonly<{
|
type Props = Readonly<{
|
||||||
|
className?: string;
|
||||||
errorMessage?: string;
|
errorMessage?: string;
|
||||||
monthLabel?: string;
|
monthLabel?: string;
|
||||||
monthRequired?: boolean;
|
monthRequired?: boolean;
|
||||||
@ -84,6 +86,7 @@ const YEAR_OPTIONS = Array.from({ length: NUM_YEARS }, (_, i) => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
export default function MonthYearPicker({
|
export default function MonthYearPicker({
|
||||||
|
className,
|
||||||
errorMessage,
|
errorMessage,
|
||||||
monthLabel = 'Month',
|
monthLabel = 'Month',
|
||||||
value,
|
value,
|
||||||
@ -109,29 +112,35 @@ export default function MonthYearPicker({
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div aria-describedby={hasError ? errorId : undefined}>
|
<div aria-describedby={hasError ? errorId : undefined}>
|
||||||
<div className="flex items-end space-x-2">
|
<div className={clsx('flex items-end', className)}>
|
||||||
<Select
|
<div className="grow">
|
||||||
key={`month:${monthCounter}`}
|
<Select
|
||||||
label={monthLabel}
|
key={`month:${monthCounter}`}
|
||||||
options={MONTH_OPTIONS}
|
display="block"
|
||||||
placeholder="Select month"
|
label={monthLabel}
|
||||||
required={monthRequired}
|
options={MONTH_OPTIONS}
|
||||||
value={value.month}
|
placeholder="Select month"
|
||||||
onChange={(newMonth) =>
|
required={monthRequired}
|
||||||
onChange({ month: Number(newMonth) as Month, year: value.year })
|
value={value.month}
|
||||||
}
|
onChange={(newMonth) =>
|
||||||
/>
|
onChange({ month: Number(newMonth) as Month, year: value.year })
|
||||||
<Select
|
}
|
||||||
key={`year:${yearCounter}`}
|
/>
|
||||||
label={yearLabel}
|
</div>
|
||||||
options={YEAR_OPTIONS}
|
<div className="grow">
|
||||||
placeholder="Select year"
|
<Select
|
||||||
required={yearRequired}
|
key={`year:${yearCounter}`}
|
||||||
value={value.year}
|
display="block"
|
||||||
onChange={(newYear) =>
|
label={yearLabel}
|
||||||
onChange({ month: value.month, year: Number(newYear) })
|
options={YEAR_OPTIONS}
|
||||||
}
|
placeholder="Select year"
|
||||||
/>
|
required={yearRequired}
|
||||||
|
value={value.year}
|
||||||
|
onChange={(newYear) =>
|
||||||
|
onChange({ month: value.month, year: Number(newYear) })
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{errorMessage && (
|
{errorMessage && (
|
||||||
<p className="text-danger-600 mt-2 text-sm" id={errorId}>
|
<p className="text-danger-600 mt-2 text-sm" id={errorId}>
|
||||||
|
Reference in New Issue
Block a user