@yamada-ui/calendar
Version:
Yamada UI calendar component
1 lines • 8.6 kB
Source Map (JSON)
{"version":3,"sources":["../src/calendar-header.tsx"],"sourcesContent":["import type { ButtonProps, IconButtonProps } from \"@yamada-ui/button\"\nimport type { CSSUIObject, FC, HTMLUIProps } from \"@yamada-ui/core\"\nimport type { IconProps } from \"@yamada-ui/icon\"\nimport type { ReactElement } from \"react\"\nimport type { UseCalendarHeaderProps } from \"./use-calendar-header\"\nimport { Button, IconButton } from \"@yamada-ui/button\"\nimport { ui } from \"@yamada-ui/core\"\nimport { ChevronIcon } from \"@yamada-ui/icon\"\nimport { cx, isValidElement } from \"@yamada-ui/utils\"\nimport { useCalendarContext } from \"./use-calendar\"\nimport { useCalendarHeader } from \"./use-calendar-header\"\n\ninterface CalendarHeaderOptions {\n /**\n * The label of the current calendar type.\n */\n label: string\n /**\n * Props for calendar control button element.\n */\n controlProps?: Omit<CalendarControlProps, \"operation\">\n /**\n * Props for calendar label button element.\n */\n labelProps?: { icon?: IconProps | ReactElement } & CalendarLabelProps\n /**\n * Props for calendar next control button element.\n */\n nextProps?: Omit<CalendarControlProps, \"operation\">\n /**\n * Props for calendar previous control button element.\n */\n prevProps?: Omit<CalendarControlProps, \"operation\">\n}\n\nexport interface CalendarHeaderProps\n extends Omit<HTMLUIProps, \"defaultValue\" | \"onChange\" | \"value\">,\n CalendarHeaderOptions,\n UseCalendarHeaderProps {}\n\nexport const CalendarHeader: FC<CalendarHeaderProps> = ({\n className,\n index,\n label,\n controlProps,\n labelProps,\n nextProps,\n prevProps,\n ...rest\n}) => {\n const { type, styles, withControls, withHeader, withLabel } =\n useCalendarContext()\n const { getContainerProps, getControlProps, getLabelProps } =\n useCalendarHeader({ index })\n\n const css: CSSUIObject = {\n alignItems: \"center\",\n display: \"flex\",\n w: \"100%\",\n ...styles.header,\n }\n const { icon: iconOrProps, ...computedLabelProps } = labelProps ?? {}\n\n return withHeader ? (\n <ui.div\n className={cx(\"ui-calendar__header\", className)}\n __css={css}\n {...getContainerProps(rest)}\n >\n {withControls ? (\n <CalendarControlPrev\n {...getControlProps({\n operation: \"prev\",\n ...controlProps,\n ...prevProps,\n })}\n />\n ) : null}\n\n {withLabel ? (\n <CalendarLabel {...getLabelProps({ ...computedLabelProps })}>\n {label}\n {type !== \"year\" ? (\n isValidElement(iconOrProps) ? (\n iconOrProps\n ) : (\n <CalendarLabelIcon {...iconOrProps} />\n )\n ) : null}\n </CalendarLabel>\n ) : null}\n\n {withControls ? (\n <CalendarControlNext\n {...getControlProps({\n operation: \"next\",\n ...controlProps,\n ...nextProps,\n })}\n />\n ) : null}\n </ui.div>\n ) : null\n}\n\nCalendarHeader.displayName = \"CalendarHeader\"\nCalendarHeader.__ui__ = \"CalendarHeader\"\n\nexport interface CalendarLabelProps extends ButtonProps {}\n\nconst CalendarLabel: FC<CalendarLabelProps> = ({ className, ...rest }) => {\n const { styles } = useCalendarContext()\n\n const css: CSSUIObject = {\n flex: 1,\n fontSize: undefined,\n fontWeight: \"normal\",\n gap: 1,\n h: \"auto\",\n ...styles.label,\n }\n\n return (\n <Button\n className={cx(\"ui-calendar__header__label\", className)}\n variant=\"ghost\"\n __css={css}\n {...rest}\n />\n )\n}\n\nCalendarLabel.displayName = \"CalendarLabel\"\nCalendarLabel.__ui__ = \"CalendarLabel\"\n\nexport interface CalendarLabelIconProps extends IconProps {}\n\nconst CalendarLabelIcon: FC<CalendarLabelIconProps> = ({\n className,\n ...rest\n}) => {\n const { styles } = useCalendarContext()\n\n const css: CSSUIObject = {\n ...styles.labelIcon,\n }\n\n return (\n <ChevronIcon\n className={cx(\"ui-calendar__header__label__icon\", className)}\n __css={css}\n {...rest}\n />\n )\n}\n\nCalendarLabelIcon.displayName = \"CalendarLabelIcon\"\nCalendarLabelIcon.__ui__ = \"CalendarLabelIcon\"\n\nexport interface CalendarControlSharedProps\n extends Omit<CalendarControlProps, \"operation\"> {}\n\nconst CalendarControlPrev: FC<CalendarControlSharedProps> = ({\n className,\n ...rest\n}) => {\n return (\n <CalendarControl\n className={cx(\"ui-calendar__header__control--prev\", className)}\n icon={<ChevronIcon __css={{ transform: \"rotate(90deg)\" }} />}\n operation=\"prev\"\n {...rest}\n />\n )\n}\n\nCalendarControlPrev.displayName = \"CalendarControlPrev\"\nCalendarControlPrev.__ui__ = \"CalendarControlPrev\"\n\nconst CalendarControlNext: FC<CalendarControlSharedProps> = ({\n className,\n ...rest\n}) => {\n return (\n <CalendarControl\n className={cx(\"ui-calendar__header__control--next\", className)}\n icon={<ChevronIcon __css={{ transform: \"rotate(-90deg)\" }} />}\n operation=\"next\"\n {...rest}\n />\n )\n}\n\nCalendarControlNext.displayName = \"CalendarControlNext\"\nCalendarControlNext.__ui__ = \"CalendarControlNext\"\n\nexport interface CalendarControlProps extends IconButtonProps {\n operation: \"next\" | \"prev\"\n}\n\nconst CalendarControl: FC<CalendarControlProps> = ({\n className,\n operation,\n ...rest\n}) => {\n const { styles } = useCalendarContext()\n\n const css: CSSUIObject = {\n h: \"auto\",\n minW: \"auto\",\n ...styles.control,\n ...styles[operation],\n }\n\n return (\n <IconButton\n className={cx(\"ui-calendar__header__control\", className)}\n variant=\"ghost\"\n __css={css}\n {...rest}\n />\n )\n}\n\nCalendarControl.displayName = \"CalendarControl\"\nCalendarControl.__ui__ = \"CalendarControl\"\n"],"mappings":";;;;;;;;;AAKA,SAAS,QAAQ,kBAAkB;AACnC,SAAS,UAAU;AACnB,SAAS,mBAAmB;AAC5B,SAAS,IAAI,sBAAsB;AA8D3B,cAUA,YAVA;AA9BD,IAAM,iBAA0C,CAAC;AAAA,EACtD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAM;AACJ,QAAM,EAAE,MAAM,QAAQ,cAAc,YAAY,UAAU,IACxD,mBAAmB;AACrB,QAAM,EAAE,mBAAmB,iBAAiB,cAAc,IACxD,kBAAkB,EAAE,MAAM,CAAC;AAE7B,QAAM,MAAmB;AAAA,IACvB,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,GAAG;AAAA,IACH,GAAG,OAAO;AAAA,EACZ;AACA,QAAM,EAAE,MAAM,aAAa,GAAG,mBAAmB,IAAI,kCAAc,CAAC;AAEpE,SAAO,aACL;AAAA,IAAC,GAAG;AAAA,IAAH;AAAA,MACC,WAAW,GAAG,uBAAuB,SAAS;AAAA,MAC9C,OAAO;AAAA,MACN,GAAG,kBAAkB,IAAI;AAAA,MAEzB;AAAA,uBACC;AAAA,UAAC;AAAA;AAAA,YACE,GAAG,gBAAgB;AAAA,cAClB,WAAW;AAAA,cACX,GAAG;AAAA,cACH,GAAG;AAAA,YACL,CAAC;AAAA;AAAA,QACH,IACE;AAAA,QAEH,YACC,qBAAC,iBAAe,GAAG,cAAc,EAAE,GAAG,mBAAmB,CAAC,GACvD;AAAA;AAAA,UACA,SAAS,SACR,eAAe,WAAW,IACxB,cAEA,oBAAC,qBAAmB,GAAG,aAAa,IAEpC;AAAA,WACN,IACE;AAAA,QAEH,eACC;AAAA,UAAC;AAAA;AAAA,YACE,GAAG,gBAAgB;AAAA,cAClB,WAAW;AAAA,cACX,GAAG;AAAA,cACH,GAAG;AAAA,YACL,CAAC;AAAA;AAAA,QACH,IACE;AAAA;AAAA;AAAA,EACN,IACE;AACN;AAEA,eAAe,cAAc;AAC7B,eAAe,SAAS;AAIxB,IAAM,gBAAwC,CAAC,EAAE,WAAW,GAAG,KAAK,MAAM;AACxE,QAAM,EAAE,OAAO,IAAI,mBAAmB;AAEtC,QAAM,MAAmB;AAAA,IACvB,MAAM;AAAA,IACN,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,KAAK;AAAA,IACL,GAAG;AAAA,IACH,GAAG,OAAO;AAAA,EACZ;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,8BAA8B,SAAS;AAAA,MACrD,SAAQ;AAAA,MACR,OAAO;AAAA,MACN,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,cAAc,cAAc;AAC5B,cAAc,SAAS;AAIvB,IAAM,oBAAgD,CAAC;AAAA,EACrD;AAAA,EACA,GAAG;AACL,MAAM;AACJ,QAAM,EAAE,OAAO,IAAI,mBAAmB;AAEtC,QAAM,MAAmB;AAAA,IACvB,GAAG,OAAO;AAAA,EACZ;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,oCAAoC,SAAS;AAAA,MAC3D,OAAO;AAAA,MACN,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,kBAAkB,cAAc;AAChC,kBAAkB,SAAS;AAK3B,IAAM,sBAAsD,CAAC;AAAA,EAC3D;AAAA,EACA,GAAG;AACL,MAAM;AACJ,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,sCAAsC,SAAS;AAAA,MAC7D,MAAM,oBAAC,eAAY,OAAO,EAAE,WAAW,gBAAgB,GAAG;AAAA,MAC1D,WAAU;AAAA,MACT,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,oBAAoB,cAAc;AAClC,oBAAoB,SAAS;AAE7B,IAAM,sBAAsD,CAAC;AAAA,EAC3D;AAAA,EACA,GAAG;AACL,MAAM;AACJ,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,sCAAsC,SAAS;AAAA,MAC7D,MAAM,oBAAC,eAAY,OAAO,EAAE,WAAW,iBAAiB,GAAG;AAAA,MAC3D,WAAU;AAAA,MACT,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,oBAAoB,cAAc;AAClC,oBAAoB,SAAS;AAM7B,IAAM,kBAA4C,CAAC;AAAA,EACjD;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAM;AACJ,QAAM,EAAE,OAAO,IAAI,mBAAmB;AAEtC,QAAM,MAAmB;AAAA,IACvB,GAAG;AAAA,IACH,MAAM;AAAA,IACN,GAAG,OAAO;AAAA,IACV,GAAG,OAAO,SAAS;AAAA,EACrB;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,gCAAgC,SAAS;AAAA,MACvD,SAAQ;AAAA,MACR,OAAO;AAAA,MACN,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,gBAAgB,cAAc;AAC9B,gBAAgB,SAAS;","names":[]}