podo-ui 1.0.21 → 1.0.23

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.
@@ -22,6 +22,8 @@ export interface TooltipProps {
22
22
  * 기본값: false
23
23
  */
24
24
  portal?: boolean;
25
+ /** 툴팁 최대 너비 (설정 시 자동 줄바꿈 활성화) */
26
+ maxWidth?: number | string;
25
27
  }
26
- export default function Tooltip({ children, content, variant, position, offset, isVisible: controlledIsVisible, className, portal, }: TooltipProps): import("react/jsx-runtime").JSX.Element;
28
+ export default function Tooltip({ children, content, variant, position, offset, isVisible: controlledIsVisible, className, portal, maxWidth, }: TooltipProps): import("react/jsx-runtime").JSX.Element;
27
29
  //# sourceMappingURL=tooltip.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["../../../react/atom/tooltip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAIxE,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,MAAM,CAAC;AAEhD,MAAM,MAAM,eAAe,GACvB,KAAK,GACL,SAAS,GACT,UAAU,GACV,QAAQ,GACR,YAAY,GACZ,aAAa,GACb,MAAM,GACN,SAAS,GACT,YAAY,GACZ,OAAO,GACP,UAAU,GACV,aAAa,CAAC;AAElB,MAAM,WAAW,YAAY;IAC3B,2CAA2C;IAC3C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,4CAA4C;IAC5C,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,6BAA6B;IAC7B,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,8CAA8C;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAUD,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,EAC9B,QAAQ,EACR,OAAO,EACP,OAAmB,EACnB,QAAgB,EAChB,MAAU,EACV,SAAS,EAAE,mBAAmB,EAC9B,SAAc,EACd,MAAc,GACf,EAAE,YAAY,2CAuLd"}
1
+ {"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["../../../react/atom/tooltip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAIxE,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,MAAM,CAAC;AAEhD,MAAM,MAAM,eAAe,GACvB,KAAK,GACL,SAAS,GACT,UAAU,GACV,QAAQ,GACR,YAAY,GACZ,aAAa,GACb,MAAM,GACN,SAAS,GACT,YAAY,GACZ,OAAO,GACP,UAAU,GACV,aAAa,CAAC;AAElB,MAAM,WAAW,YAAY;IAC3B,2CAA2C;IAC3C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,4CAA4C;IAC5C,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,6BAA6B;IAC7B,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,8CAA8C;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,iCAAiC;IACjC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC5B;AAUD,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,EAC9B,QAAQ,EACR,OAAO,EACP,OAAmB,EACnB,QAAgB,EAChB,MAAU,EACV,SAAS,EAAE,mBAAmB,EAC9B,SAAc,EACd,MAAc,EACd,QAAQ,GACT,EAAE,YAAY,2CA2Ld"}
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useState, useRef, useEffect, useCallback } from 'react';
3
3
  import { createPortal } from 'react-dom';
4
4
  import styles from './tooltip.module.scss';
5
- export default function Tooltip({ children, content, variant = 'default', position = 'top', offset = 8, isVisible: controlledIsVisible, className = '', portal = false, }) {
5
+ export default function Tooltip({ children, content, variant = 'default', position = 'top', offset = 8, isVisible: controlledIsVisible, className = '', portal = false, maxWidth, }) {
6
6
  const [hoverIsVisible, setHoverIsVisible] = useState(false);
7
7
  const triggerRef = useRef(null);
8
8
  const [portalPosition, setPortalPosition] = useState(null);
@@ -132,16 +132,19 @@ export default function Tooltip({ children, content, variant = 'default', positi
132
132
  ]
133
133
  .filter(Boolean)
134
134
  .join(' ');
135
+ const maxWidthStyle = maxWidth
136
+ ? { maxWidth: typeof maxWidth === 'number' ? `${maxWidth}px` : maxWidth, whiteSpace: 'normal', wordBreak: 'break-word' }
137
+ : {};
135
138
  // 툴팁 콘텐츠 렌더링
136
139
  const renderTooltipContent = () => {
137
140
  if (!shouldShowTooltip)
138
141
  return null;
139
142
  // Portal 모드
140
143
  if (portal && typeof document !== 'undefined' && portalPosition) {
141
- return createPortal(_jsx("div", { className: portalTooltipClassNames, style: getPortalStyle(), children: content }), document.body);
144
+ return createPortal(_jsx("div", { className: portalTooltipClassNames, style: { ...getPortalStyle(), ...maxWidthStyle }, children: content }), document.body);
142
145
  }
143
146
  // 일반 모드
144
- return (_jsx("div", { className: tooltipClassNames, style: { '--tooltip-offset': `${offset}px` }, children: content }));
147
+ return (_jsx("div", { className: tooltipClassNames, style: { '--tooltip-offset': `${offset}px`, ...maxWidthStyle }, children: content }));
145
148
  };
146
149
  return (_jsxs("div", { ref: triggerRef, className: styles.tooltipWrapper, onMouseEnter: () => setHoverIsVisible(true), onMouseLeave: () => setHoverIsVisible(false), children: [children, renderTooltipContent()] }));
147
150
  }
@@ -105,6 +105,8 @@ export interface DatePickerProps {
105
105
  * 기본값: false
106
106
  */
107
107
  quickSelect?: boolean;
108
+ /** 초기화 버튼 클릭 시 콜백 */
109
+ onReset?: () => void;
108
110
  }
109
111
  declare const DatePicker: React.FC<DatePickerProps>;
110
112
  export default DatePicker;
@@ -1 +1 @@
1
- {"version":3,"file":"datepicker.d.ts","sourceRoot":"","sources":["../../../react/molecule/datepicker.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"datepicker.d.ts","sourceRoot":"","sources":["../../../react/molecule/datepicker.tsx"],"names":[],"mappings":"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"}
@@ -475,7 +475,7 @@ const PeriodCalendar = ({ value, endValue, onSelect, viewDate, endViewDate, onVi
475
475
  return (_jsxs("div", { className: styles.periodCalendars, children: [_jsx("div", { className: styles.periodCalendarLeft, children: _jsx(Calendar, { value: value, endValue: endValue, mode: "period", onSelect: onSelect, viewDate: viewDate, onViewDateChange: onViewDateChange, showPrevNav: true, showNextNav: true, maxViewDate: isMobile ? undefined : endViewDate, disable: disable, enable: enable, minDate: minDate, maxDate: maxDate, yearRange: yearRange }) }), _jsx("div", { className: styles.periodCalendarRight, children: _jsx(Calendar, { value: value, endValue: endValue, mode: "period", onSelect: onSelect, viewDate: endViewDate, onViewDateChange: onEndViewDateChange, showPrevNav: true, showNextNav: true, minViewDate: viewDate, disable: disable, enable: enable, minDate: minDate, maxDate: maxDate, yearRange: yearRange }) })] }));
476
476
  };
477
477
  // Main DatePicker Component
478
- const DatePicker = ({ mode = 'instant', type = 'date', value, onChange, placeholder, disabled = false, showActions, align = 'left', className, disable, enable, minDate, maxDate, minuteStep = 1, format, initialCalendar, yearRange, portal = false, quickSelect = false, }) => {
478
+ const DatePicker = ({ mode = 'instant', type = 'date', value, onChange, placeholder, disabled = false, showActions, align = 'left', className, disable, enable, minDate, maxDate, minuteStep = 1, format, initialCalendar, yearRange, portal = false, quickSelect = false, onReset, }) => {
479
479
  const [selectingPart, setSelectingPart] = useState(null);
480
480
  const [tempValue, setTempValue] = useState(value || {});
481
481
  const [navigationStep, setNavigationStep] = useState(() => {
@@ -757,6 +757,7 @@ const DatePicker = ({ mode = 'instant', type = 'date', value, onChange, placehol
757
757
  const handleReset = () => {
758
758
  setTempValue({});
759
759
  setSelectingPart(null);
760
+ onReset?.();
760
761
  };
761
762
  const handleApply = () => {
762
763
  onChange?.(tempValue);
@@ -3,7 +3,11 @@ interface PaginationProps {
3
3
  totalPages: number;
4
4
  onPageChange: (page: number) => void;
5
5
  maxVisiblePages?: number;
6
+ /** Previous button icon class name */
7
+ prevIcon?: string;
8
+ /** Next button icon class name */
9
+ nextIcon?: string;
6
10
  }
7
- export default function Pagination({ currentPage, totalPages, onPageChange, maxVisiblePages, }: PaginationProps): import("react/jsx-runtime").JSX.Element | null;
11
+ export default function Pagination({ currentPage, totalPages, onPageChange, maxVisiblePages, prevIcon, nextIcon, }: PaginationProps): import("react/jsx-runtime").JSX.Element | null;
8
12
  export {};
9
13
  //# sourceMappingURL=pagination.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../../react/molecule/pagination.tsx"],"names":[],"mappings":"AAEA,UAAU,eAAe;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EACjC,WAAW,EACX,UAAU,EACV,YAAY,EACZ,eAAmB,GACpB,EAAE,eAAe,kDAwEjB"}
1
+ {"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../../react/molecule/pagination.tsx"],"names":[],"mappings":"AAEA,UAAU,eAAe;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EACjC,WAAW,EACX,UAAU,EACV,YAAY,EACZ,eAAmB,EACnB,QAA4B,EAC5B,QAA6B,GAC9B,EAAE,eAAe,kDAwEjB"}
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import styles from './pagination.module.scss';
3
- export default function Pagination({ currentPage, totalPages, onPageChange, maxVisiblePages = 5, }) {
3
+ export default function Pagination({ currentPage, totalPages, onPageChange, maxVisiblePages = 5, prevIcon = 'icon-arrow-left', nextIcon = 'icon-arrow-right', }) {
4
4
  const getPageNumbers = () => {
5
5
  const pages = [];
6
6
  const startPage = Math.floor((currentPage - 1) / maxVisiblePages) * maxVisiblePages + 1;
@@ -24,5 +24,5 @@ export default function Pagination({ currentPage, totalPages, onPageChange, maxV
24
24
  if (totalPages === 0) {
25
25
  return null;
26
26
  }
27
- return (_jsxs("div", { className: styles.pagination, children: [currentPage > 1 ? (_jsx("button", { onClick: handlePrevious, className: styles.pageButton, "aria-label": "\uC774\uC804 \uD398\uC774\uC9C0", children: _jsx("i", { className: "icon-arrow-left" }) })) : (_jsx("div", { className: styles.pageButtonPlaceholder })), pageNumbers.map((pageNum) => (_jsx("button", { onClick: () => onPageChange(pageNum), className: `${styles.pageButton} ${currentPage === pageNum ? styles.active : ''}`, "aria-label": `${pageNum}페이지`, "aria-current": currentPage === pageNum ? 'page' : undefined, children: pageNum }, pageNum))), currentPage < totalPages ? (_jsx("button", { onClick: handleNext, className: styles.pageButton, "aria-label": "\uB2E4\uC74C \uD398\uC774\uC9C0", children: _jsx("i", { className: "icon-arrow-right" }) })) : (_jsx("div", { className: styles.pageButtonPlaceholder }))] }));
27
+ return (_jsxs("div", { className: styles.pagination, children: [currentPage > 1 ? (_jsx("button", { onClick: handlePrevious, className: styles.pageButton, "aria-label": "\uC774\uC804 \uD398\uC774\uC9C0", children: _jsx("i", { className: prevIcon }) })) : (_jsx("div", { className: styles.pageButtonPlaceholder })), pageNumbers.map((pageNum) => (_jsx("button", { onClick: () => onPageChange(pageNum), className: `${styles.pageButton} ${currentPage === pageNum ? styles.active : ''}`, "aria-label": `${pageNum}페이지`, "aria-current": currentPage === pageNum ? 'page' : undefined, children: pageNum }, pageNum))), currentPage < totalPages ? (_jsx("button", { onClick: handleNext, className: styles.pageButton, "aria-label": "\uB2E4\uC74C \uD398\uC774\uC9C0", children: _jsx("i", { className: nextIcon }) })) : (_jsx("div", { className: styles.pageButtonPlaceholder }))] }));
28
28
  }
@@ -33,6 +33,8 @@
33
33
  isVisible?: boolean;
34
34
  /** Additional CSS class */
35
35
  class?: string;
36
+ /** Tooltip max width (enables word wrap when set) */
37
+ maxWidth?: number | string;
36
38
  }
37
39
 
38
40
  let {
@@ -43,6 +45,7 @@
43
45
  offset = 8,
44
46
  isVisible: controlledIsVisible,
45
47
  class: className = '',
48
+ maxWidth,
46
49
  ...rest
47
50
  }: Props & Record<string, unknown> = $props();
48
51
 
@@ -71,7 +74,7 @@
71
74
  >
72
75
  {@render children()}
73
76
  {#if shouldShowTooltip}
74
- <div class={tooltipClassNames} style="--tooltip-offset: {offset}px;">
77
+ <div class={tooltipClassNames} style="--tooltip-offset: {offset}px;{maxWidth ? ` max-width: ${typeof maxWidth === 'number' ? `${maxWidth}px` : maxWidth}; white-space: normal; word-break: break-word;` : ''}">
75
78
  {@render content()}
76
79
  </div>
77
80
  {/if}
@@ -16,6 +16,8 @@ interface Props {
16
16
  isVisible?: boolean;
17
17
  /** Additional CSS class */
18
18
  class?: string;
19
+ /** Tooltip max width (enables word wrap when set) */
20
+ maxWidth?: number | string;
19
21
  }
20
22
  type $$ComponentProps = Props & Record<string, unknown>;
21
23
  declare const Tooltip: import("svelte").Component<$$ComponentProps, {}, "">;
@@ -204,6 +204,8 @@
204
204
  yearRange?: YearRange;
205
205
  /** Show quick select presets (period mode only) */
206
206
  quickSelect?: boolean;
207
+ /** Reset button click callback */
208
+ onreset?: () => void;
207
209
  }
208
210
 
209
211
  let {
@@ -225,6 +227,7 @@
225
227
  initialCalendar,
226
228
  yearRange,
227
229
  quickSelect = false,
230
+ onreset,
228
231
  ...rest
229
232
  }: Props & Record<string, unknown> = $props();
230
233
 
@@ -763,6 +766,7 @@
763
766
  const handleReset = () => {
764
767
  tempValue = {};
765
768
  selectingPart = null;
769
+ onreset?.();
766
770
  };
767
771
 
768
772
  const handleApply = () => {
@@ -68,6 +68,8 @@ interface Props {
68
68
  yearRange?: YearRange;
69
69
  /** Show quick select presets (period mode only) */
70
70
  quickSelect?: boolean;
71
+ /** Reset button click callback */
72
+ onreset?: () => void;
71
73
  }
72
74
  type $$ComponentProps = Props & Record<string, unknown>;
73
75
  declare const DatePicker: import("svelte").Component<$$ComponentProps, {}, "value">;
@@ -10,6 +10,10 @@
10
10
  onpagechange: (page: number) => void;
11
11
  /** Maximum visible page numbers */
12
12
  maxVisiblePages?: number;
13
+ /** Previous button icon class name */
14
+ prevIcon?: string;
15
+ /** Next button icon class name */
16
+ nextIcon?: string;
13
17
  }
14
18
 
15
19
  let {
@@ -17,6 +21,8 @@
17
21
  totalPages,
18
22
  onpagechange,
19
23
  maxVisiblePages = 5,
24
+ prevIcon = 'icon-arrow-left',
25
+ nextIcon = 'icon-arrow-right',
20
26
  ...rest
21
27
  }: Props & Record<string, unknown> = $props();
22
28
 
@@ -63,7 +69,7 @@
63
69
  class={styles.pageButton}
64
70
  aria-label="이전 페이지"
65
71
  >
66
- <i class="icon-arrow-left"></i>
72
+ <i class={prevIcon}></i>
67
73
  </button>
68
74
  {:else}
69
75
  <div class={styles.pageButtonPlaceholder}></div>
@@ -86,7 +92,7 @@
86
92
  class={styles.pageButton}
87
93
  aria-label="다음 페이지"
88
94
  >
89
- <i class="icon-arrow-right"></i>
95
+ <i class={nextIcon}></i>
90
96
  </button>
91
97
  {:else}
92
98
  <div class={styles.pageButtonPlaceholder}></div>
@@ -7,6 +7,10 @@ interface Props {
7
7
  onpagechange: (page: number) => void;
8
8
  /** Maximum visible page numbers */
9
9
  maxVisiblePages?: number;
10
+ /** Previous button icon class name */
11
+ prevIcon?: string;
12
+ /** Next button icon class name */
13
+ nextIcon?: string;
10
14
  }
11
15
  type $$ComponentProps = Props & Record<string, unknown>;
12
16
  declare const Pagination: import("svelte").Component<$$ComponentProps, {}, "currentPage">;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "podo-ui",
3
- "version": "1.0.21",
3
+ "version": "1.0.23",
4
4
  "type": "module",
5
5
  "author": "hada0127 <work@tarucy.net>",
6
6
  "license": "MIT",
@@ -42,7 +42,10 @@ input[type='datetime'] {
42
42
  }
43
43
  }
44
44
  &:read-only {
45
+ background-color: transparent;
45
46
  border: none;
47
+ color: inherit;
48
+ cursor: default;
46
49
  }
47
50
  &.success {
48
51
  &:not(:disabled):not(:read-only) {
@@ -23,7 +23,10 @@ textarea {
23
23
  border: 1px solid color('primary');
24
24
  }
25
25
  &:read-only {
26
+ background-color: transparent;
26
27
  border: none;
28
+ color: inherit;
29
+ cursor: default;
27
30
  resize: none;
28
31
  }
29
32
  &:focus-visible:not(:disabled) {
@@ -6,17 +6,10 @@
6
6
  src: url('./font/icon.woff') format('woff');
7
7
  font-display: swap;
8
8
  }
9
- :root {
10
- [class^='icon-'],
11
- [class*=' icon-'] {
12
- &:only-child,
13
- &:not(:last-child) {
14
- margin-right: s(2);
15
- }
16
- }
17
9
 
18
- [class^='icon-']::before,
19
- [class*=' icon-']::before {
10
+ [class^='icon-'],
11
+ [class*=' icon-'] {
12
+ &::before {
20
13
  font-family: 'podo-ui-icon' !important;
21
14
  font-style: normal;
22
15
  font-weight: normal;
@@ -27,12 +20,11 @@
27
20
  vertical-align: inherit;
28
21
  -webkit-font-smoothing: antialiased;
29
22
  -moz-osx-font-smoothing: grayscale;
30
- // margin-top: -0.1rem;
31
23
  }
24
+ }
32
25
 
33
- @each $key, $value in $icon-name {
34
- .icon-#{$key}::before {
35
- content: '#{$value}';
36
- }
26
+ @each $key, $value in $icon-name {
27
+ .icon-#{$key}::before {
28
+ content: '#{$value}';
37
29
  }
38
30
  }
@@ -9,9 +9,7 @@
9
9
  font-size: $font-size-54;
10
10
  line-height: 1.2;
11
11
  font-weight: $font-weight-semibold;
12
- &:not(button) {
13
- color: var(--color-text-header);
14
- }
12
+ color: var(--color-text-header);
15
13
  @include mo {
16
14
  font-size: $font-size-24;
17
15
  }
@@ -21,9 +19,7 @@
21
19
  font-size: $font-size-42;
22
20
  line-height: 1.2;
23
21
  font-weight: $font-weight-semibold;
24
- &:not(button) {
25
- color: var(--color-text-header);
26
- }
22
+ color: var(--color-text-header);
27
23
  @include mo {
28
24
  font-size: $font-size-18;
29
25
  }
@@ -33,9 +29,7 @@
33
29
  font-size: $font-size-36;
34
30
  line-height: 1.2;
35
31
  font-weight: $font-weight-semibold;
36
- &:not(button) {
37
- color: var(--color-text-header);
38
- }
32
+ color: var(--color-text-header);
39
33
  @include mo {
40
34
  font-size: $font-size-16;
41
35
  }
@@ -48,9 +42,7 @@
48
42
  font-size: $font-size-60;
49
43
  line-height: 1.2;
50
44
  font-weight: $font-weight-semibold;
51
- &:not(button) {
52
- color: var(--color-text-header);
53
- }
45
+ color: var(--color-text-header);
54
46
  @include mo {
55
47
  font-size: $font-size-36;
56
48
  }
@@ -59,9 +51,7 @@
59
51
  font-size: $font-size-54;
60
52
  line-height: 1.2;
61
53
  font-weight: $font-weight-semibold;
62
- &:not(button) {
63
- color: var(--color-text-header);
64
- }
54
+ color: var(--color-text-header);
65
55
  @include mo {
66
56
  font-size: $font-size-32;
67
57
  }
@@ -70,9 +60,7 @@
70
60
  font-size: $font-size-48;
71
61
  line-height: 1.2;
72
62
  font-weight: $font-weight-semibold;
73
- &:not(button) {
74
- color: var(--color-text-header);
75
- }
63
+ color: var(--color-text-header);
76
64
  @include mo {
77
65
  font-size: $font-size-28;
78
66
  }
@@ -81,9 +69,7 @@
81
69
  font-size: $font-size-42;
82
70
  line-height: 1.2;
83
71
  font-weight: $font-weight-semibold;
84
- &:not(button) {
85
- color: var(--color-text-header);
86
- }
72
+ color: var(--color-text-header);
87
73
  @include mo {
88
74
  font-size: $font-size-24;
89
75
  }
@@ -93,9 +79,7 @@
93
79
  font-size: $font-size-36;
94
80
  line-height: 1.2;
95
81
  font-weight: $font-weight-semibold;
96
- &:not(button) {
97
- color: var(--color-text-header);
98
- }
82
+ color: var(--color-text-header);
99
83
  @include mo {
100
84
  font-size: $font-size-20;
101
85
  }
@@ -105,9 +89,7 @@
105
89
  font-size: $font-size-24;
106
90
  line-height: 1.4;
107
91
  font-weight: $font-weight-semibold;
108
- &:not(button) {
109
- color: var(--color-text-header);
110
- }
92
+ color: var(--color-text-header);
111
93
  @include mo {
112
94
  font-size: $font-size-18;
113
95
  }
@@ -117,9 +99,7 @@
117
99
  font-size: $font-size-20;
118
100
  line-height: 1.6;
119
101
  font-weight: $font-weight-semibold;
120
- &:not(button) {
121
- color: var(--color-text-header);
122
- }
102
+ color: var(--color-text-header);
123
103
  @include mo {
124
104
  font-size: $font-size-16;
125
105
  }
@@ -131,9 +111,7 @@
131
111
  font-size: $font-size-24;
132
112
  line-height: 1.4;
133
113
  font-weight: $font-weight-regular;
134
- &:not(button) {
135
- color: var(--color-text-body);
136
- }
114
+ color: var(--color-text-body);
137
115
  @include mo {
138
116
  font-size: $font-size-20;
139
117
  }
@@ -142,9 +120,7 @@
142
120
  font-size: $font-size-20;
143
121
  line-height: 1.6;
144
122
  font-weight: $font-weight-regular;
145
- &:not(button) {
146
- color: var(--color-text-body);
147
- }
123
+ color: var(--color-text-body);
148
124
  @include mo {
149
125
  font-size: $font-size-16;
150
126
  }
@@ -153,9 +129,7 @@
153
129
  font-size: $font-size-16;
154
130
  line-height: 1.6;
155
131
  font-weight: $font-weight-regular;
156
- &:not(button) {
157
- color: var(--color-text-body);
158
- }
132
+ color: var(--color-text-body);
159
133
  @include mo {
160
134
  font-size: $font-size-14;
161
135
  }
@@ -165,9 +139,7 @@
165
139
  font-size: $font-size-16;
166
140
  line-height: 1.6;
167
141
  font-weight: $font-weight-semibold;
168
- &:not(button) {
169
- color: var(--color-text-body);
170
- }
142
+ color: var(--color-text-body);
171
143
  @include mo {
172
144
  font-size: $font-size-14;
173
145
  }
@@ -176,9 +148,7 @@
176
148
  font-size: $font-size-14;
177
149
  line-height: 1.6;
178
150
  font-weight: $font-weight-regular;
179
- &:not(button) {
180
- color: var(--color-text-body);
181
- }
151
+ color: var(--color-text-body);
182
152
  @include mo {
183
153
  font-size: $font-size-12;
184
154
  }
@@ -187,9 +157,7 @@
187
157
  font-size: $font-size-14;
188
158
  line-height: 1.6;
189
159
  font-weight: $font-weight-semibold;
190
- &:not(button) {
191
- color: var(--color-text-body);
192
- }
160
+ color: var(--color-text-body);
193
161
  @include mo {
194
162
  font-size: $font-size-12;
195
163
  }
@@ -198,15 +166,11 @@
198
166
  font-size: $font-size-12;
199
167
  line-height: 1.6;
200
168
  font-weight: $font-weight-regular;
201
- &:not(button) {
202
- color: var(--color-text-body);
203
- }
169
+ color: var(--color-text-body);
204
170
  }
205
171
  @mixin p5-semibold {
206
172
  font-size: $font-size-12;
207
173
  line-height: 1.6;
208
174
  font-weight: 600;
209
- &:not(button) {
210
- color: var(--color-text-body);
211
- }
175
+ color: var(--color-text-body);
212
176
  }
@@ -1532,6 +1532,9 @@
1532
1532
  this.tempValue = {};
1533
1533
  this.close();
1534
1534
  this.renderInputContent();
1535
+ if (typeof this.options.onReset === 'function') {
1536
+ this.options.onReset();
1537
+ }
1535
1538
  }
1536
1539
 
1537
1540
  handleApply() {