niuma-ui 2.0.3 → 2.0.4

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.
Files changed (202) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/dist/components/_shared/src/reka.d.ts +1 -1
  3. package/dist/components/_shared/src/reka.js +2 -2
  4. package/dist/components/anchor/index.d.ts +1 -1
  5. package/dist/components/anchor/src/RsAnchor.css +63 -32
  6. package/dist/components/anchor/src/RsAnchor.d.ts +29 -2
  7. package/dist/components/anchor/src/RsAnchor.impl.js +199 -81
  8. package/dist/components/anchor/src/RsAnchor.js +1 -1
  9. package/dist/components/anchor/src/anchor-utils.d.ts +36 -4
  10. package/dist/components/anchor/src/anchor-utils.js +81 -19
  11. package/dist/components/auto-complete/index.d.ts +2 -0
  12. package/dist/components/auto-complete/src/RsAutoComplete.css +122 -0
  13. package/dist/components/auto-complete/src/RsAutoComplete.d.ts +47 -7
  14. package/dist/components/auto-complete/src/RsAutoComplete.impl.js +180 -72
  15. package/dist/components/auto-complete/src/RsAutoComplete.js +4 -1
  16. package/dist/components/auto-complete/src/auto-complete-utils.d.ts +7 -0
  17. package/dist/components/auto-complete/src/auto-complete-utils.js +17 -0
  18. package/dist/components/avatar/index.d.ts +1 -0
  19. package/dist/components/avatar/src/RsAvatar.css +36 -19
  20. package/dist/components/avatar/src/RsAvatar.d.ts +9 -3
  21. package/dist/components/avatar/src/RsAvatar.impl.js +57 -33
  22. package/dist/components/avatar/src/RsAvatar.js +2 -1
  23. package/dist/components/avatar/src/avatar-utils.d.ts +16 -7
  24. package/dist/components/avatar/src/avatar-utils.js +41 -3
  25. package/dist/components/breadcrumb/index.d.ts +1 -1
  26. package/dist/components/breadcrumb/src/RsBreadcrumb.css +50 -17
  27. package/dist/components/breadcrumb/src/RsBreadcrumb.d.ts +45 -6
  28. package/dist/components/breadcrumb/src/RsBreadcrumb.impl.js +111 -12
  29. package/dist/components/breadcrumb/src/RsBreadcrumb.js +2 -1
  30. package/dist/components/breadcrumb/src/breadcrumb-utils.d.ts +37 -5
  31. package/dist/components/breadcrumb/src/breadcrumb-utils.js +70 -9
  32. package/dist/components/calendar-grid/index.d.ts +2 -0
  33. package/dist/components/calendar-grid/src/RsCalendarGrid.css +105 -45
  34. package/dist/components/calendar-grid/src/RsCalendarGrid.d.ts +62 -2
  35. package/dist/components/calendar-grid/src/RsCalendarGrid.impl.js +265 -94
  36. package/dist/components/calendar-grid/src/RsCalendarGrid.js +1 -1
  37. package/dist/components/calendar-grid/src/calendar-grid-utils.d.ts +72 -0
  38. package/dist/components/calendar-grid/src/calendar-grid-utils.js +122 -0
  39. package/dist/components/card/index.d.ts +1 -1
  40. package/dist/components/card/src/RsCard.css +108 -98
  41. package/dist/components/card/src/RsCard.d.ts +3 -12
  42. package/dist/components/card/src/RsCard.impl.js +29 -25
  43. package/dist/components/card/src/RsCard.js +2 -1
  44. package/dist/components/card/src/card-utils.d.ts +25 -0
  45. package/dist/components/card/src/card-utils.js +10 -0
  46. package/dist/components/cascader/index.d.ts +1 -0
  47. package/dist/components/cascader/src/RsCascader.css +175 -30
  48. package/dist/components/cascader/src/RsCascader.d.ts +15 -3
  49. package/dist/components/cascader/src/RsCascader.impl.js +277 -48
  50. package/dist/components/cascader/src/RsCascader.js +1 -1
  51. package/dist/components/cascader/src/cascader-utils.d.ts +2 -0
  52. package/dist/components/cascader/src/cascader-utils.js +8 -1
  53. package/dist/components/checkbox/index.d.ts +1 -0
  54. package/dist/components/checkbox/src/RsCheckbox.css +46 -23
  55. package/dist/components/checkbox/src/RsCheckbox.d.ts +11 -1
  56. package/dist/components/checkbox/src/RsCheckbox.impl.js +37 -9
  57. package/dist/components/checkbox/src/RsCheckbox.js +2 -1
  58. package/dist/components/checkbox/src/checkbox-utils.d.ts +4 -0
  59. package/dist/components/checkbox/src/checkbox-utils.js +12 -0
  60. package/dist/components/container/index.d.ts +1 -1
  61. package/dist/components/container/src/RsContainer.css +11 -11
  62. package/dist/components/container/src/RsContainer.d.ts +2 -12
  63. package/dist/components/container/src/RsContainer.impl.js +10 -57
  64. package/dist/components/container/src/RsContainer.js +1 -1
  65. package/dist/components/container/src/container-utils.d.ts +23 -0
  66. package/dist/components/container/src/container-utils.js +51 -0
  67. package/dist/components/date-picker/index.d.ts +4 -2
  68. package/dist/components/date-picker/src/RsDatePicker.css +42 -22
  69. package/dist/components/date-picker/src/RsDatePicker.d.ts +44 -20
  70. package/dist/components/date-picker/src/RsDatePicker.impl.js +484 -222
  71. package/dist/components/date-picker/src/RsDatePicker.js +1 -3
  72. package/dist/components/date-picker/src/RsDateTimePicker.d.ts +33 -6
  73. package/dist/components/date-picker/src/RsDateTimePicker.impl.js +47 -6
  74. package/dist/components/date-picker/src/date-picker-utils.d.ts +19 -0
  75. package/dist/components/date-picker/src/date-picker-utils.js +33 -10
  76. package/dist/components/dynamic-tags/index.d.ts +1 -1
  77. package/dist/components/dynamic-tags/src/RsDynamicTags.css +115 -38
  78. package/dist/components/dynamic-tags/src/RsDynamicTags.d.ts +58 -17
  79. package/dist/components/dynamic-tags/src/RsDynamicTags.impl.js +269 -106
  80. package/dist/components/dynamic-tags/src/RsDynamicTags.js +1 -1
  81. package/dist/components/dynamic-tags/src/dynamic-tags-utils.d.ts +19 -0
  82. package/dist/components/dynamic-tags/src/dynamic-tags-utils.js +60 -0
  83. package/dist/components/fieldset/src/RsFieldset.css +71 -41
  84. package/dist/components/fieldset/src/RsFieldset.d.ts +21 -2
  85. package/dist/components/fieldset/src/RsFieldset.impl.js +93 -26
  86. package/dist/components/fieldset/src/RsFieldset.js +1 -1
  87. package/dist/components/fieldset/src/fieldset-utils.d.ts +4 -0
  88. package/dist/components/fieldset/src/fieldset-utils.js +9 -1
  89. package/dist/components/form/index.d.ts +1 -0
  90. package/dist/components/form/src/RsForm.css +15 -12
  91. package/dist/components/form/src/RsForm.d.ts +20 -22
  92. package/dist/components/form/src/RsForm.impl.js +33 -20
  93. package/dist/components/form/src/RsForm.js +1 -1
  94. package/dist/components/form/src/form-utils.d.ts +7 -0
  95. package/dist/components/form/src/form-utils.js +28 -1
  96. package/dist/components/input/index.d.ts +1 -1
  97. package/dist/components/input/src/RsInput.css +78 -260
  98. package/dist/components/input/src/RsInput.d.ts +5 -3
  99. package/dist/components/input/src/RsInput.impl.js +8 -16
  100. package/dist/components/input/src/RsInput.js +1 -1
  101. package/dist/components/input/src/input-utils.d.ts +11 -0
  102. package/dist/components/input/src/input-utils.js +22 -0
  103. package/dist/components/input-number/index.d.ts +1 -0
  104. package/dist/components/input-number/src/RsInputNumber.css +31 -31
  105. package/dist/components/input-number/src/RsInputNumber.d.ts +15 -13
  106. package/dist/components/input-number/src/RsInputNumber.impl.js +17 -4
  107. package/dist/components/input-number/src/RsInputNumber.js +1 -1
  108. package/dist/components/label/src/RsLabel.css +30 -11
  109. package/dist/components/label/src/RsLabel.d.ts +18 -1
  110. package/dist/components/label/src/RsLabel.impl.js +63 -10
  111. package/dist/components/label/src/RsLabel.js +1 -1
  112. package/dist/components/label/src/label-utils.d.ts +6 -0
  113. package/dist/components/label/src/label-utils.js +16 -0
  114. package/dist/components/link/src/RsLink.d.ts +2 -2
  115. package/dist/components/loading/src/RsLoading.d.ts +1 -1
  116. package/dist/components/mentions/index.d.ts +2 -1
  117. package/dist/components/mentions/src/RsMentions.css +119 -3
  118. package/dist/components/mentions/src/RsMentions.d.ts +56 -4
  119. package/dist/components/mentions/src/RsMentions.impl.js +298 -79
  120. package/dist/components/mentions/src/RsMentions.js +1 -3
  121. package/dist/components/mentions/src/mentions-utils.d.ts +5 -1
  122. package/dist/components/mentions/src/mentions-utils.js +28 -9
  123. package/dist/components/popover/src/RsPopover.d.ts +1 -1
  124. package/dist/components/radio/index.d.ts +1 -1
  125. package/dist/components/radio/src/RsRadio.css +7 -6
  126. package/dist/components/radio/src/RsRadio.d.ts +8 -5
  127. package/dist/components/radio/src/RsRadio.impl.js +34 -24
  128. package/dist/components/radio/src/RsRadio.js +2 -1
  129. package/dist/components/radio/src/RsRadioItem.css +61 -44
  130. package/dist/components/radio/src/RsRadioItem.d.ts +2 -2
  131. package/dist/components/radio/src/RsRadioItem.impl.js +53 -20
  132. package/dist/components/radio/src/RsRadioItem.js +2 -1
  133. package/dist/components/radio/src/radio-utils.d.ts +12 -1
  134. package/dist/components/radio/src/radio-utils.js +15 -1
  135. package/dist/components/scrollbar/src/RsScrollbar.css +71 -24
  136. package/dist/components/scrollbar/src/RsScrollbar.d.ts +9 -5
  137. package/dist/components/scrollbar/src/RsScrollbar.impl.js +372 -47
  138. package/dist/components/scrollbar/src/RsScrollbar.js +2 -1
  139. package/dist/components/scrollbar/src/scrollbar-utils.d.ts +34 -2
  140. package/dist/components/scrollbar/src/scrollbar-utils.js +64 -1
  141. package/dist/components/select/index.d.ts +1 -0
  142. package/dist/components/select/src/RsSelect.css +54 -42
  143. package/dist/components/select/src/RsSelect.d.ts +19 -2
  144. package/dist/components/select/src/RsSelect.impl.js +727 -312
  145. package/dist/components/select/src/RsSelect.js +1 -1
  146. package/dist/components/select/src/select-utils.d.ts +4 -2
  147. package/dist/components/select/src/select-utils.js +8 -3
  148. package/dist/components/select/src/use-rs-select.d.ts +1 -0
  149. package/dist/components/select/src/use-rs-select.js +23 -17
  150. package/dist/components/switch/index.d.ts +2 -1
  151. package/dist/components/switch/src/RsSwitch.css +36 -18
  152. package/dist/components/switch/src/RsSwitch.d.ts +18 -5
  153. package/dist/components/switch/src/RsSwitch.impl.js +61 -29
  154. package/dist/components/switch/src/RsSwitch.js +2 -1
  155. package/dist/components/switch/src/switch-utils.d.ts +4 -0
  156. package/dist/components/switch/src/switch-utils.js +9 -0
  157. package/dist/components/textarea/src/RsTextarea.css +23 -23
  158. package/dist/components/textarea/src/RsTextarea.d.ts +6 -12
  159. package/dist/components/textarea/src/RsTextarea.impl.js +37 -46
  160. package/dist/components/textarea/src/RsTextarea.js +1 -1
  161. package/dist/components/textarea/src/textarea-utils.d.ts +27 -0
  162. package/dist/components/textarea/src/textarea-utils.js +61 -0
  163. package/dist/components/time-picker/index.d.ts +3 -2
  164. package/dist/components/time-picker/src/RsTimePicker.css +41 -24
  165. package/dist/components/time-picker/src/RsTimePicker.d.ts +52 -7
  166. package/dist/components/time-picker/src/RsTimePicker.impl.js +520 -156
  167. package/dist/components/time-picker/src/RsTimePicker.js +1 -3
  168. package/dist/components/time-picker/src/RsTimePickerColumns.css +26 -18
  169. package/dist/components/time-picker/src/RsTimePickerColumns.d.ts +3 -1
  170. package/dist/components/time-picker/src/RsTimePickerColumns.impl.js +62 -9
  171. package/dist/components/time-picker/src/RsTimePickerColumns.js +1 -1
  172. package/dist/components/time-picker/src/time-picker-utils.d.ts +38 -0
  173. package/dist/components/time-picker/src/time-picker-utils.js +97 -5
  174. package/dist/components/toaster/src/RsToaster.d.ts +1 -1
  175. package/dist/components/tooltip/src/RsTooltip.d.ts +1 -1
  176. package/dist/components/tree/src/RsTree.d.ts +3 -3
  177. package/dist/components/tree-select/index.d.ts +2 -0
  178. package/dist/components/tree-select/src/RsTreeSelect.css +100 -25
  179. package/dist/components/tree-select/src/RsTreeSelect.d.ts +91 -7
  180. package/dist/components/tree-select/src/RsTreeSelect.impl.js +464 -79
  181. package/dist/components/tree-select/src/RsTreeSelect.js +1 -1
  182. package/dist/components/tree-select/src/tree-select-utils.d.ts +20 -0
  183. package/dist/components/tree-select/src/tree-select-utils.js +60 -0
  184. package/dist/components/upload/index.d.ts +2 -1
  185. package/dist/components/upload/src/RsUpload.css +223 -75
  186. package/dist/components/upload/src/RsUpload.d.ts +77 -1
  187. package/dist/components/upload/src/RsUpload.impl.js +404 -90
  188. package/dist/components/upload/src/RsUpload.js +1 -1
  189. package/dist/components/upload/src/upload-utils.d.ts +21 -2
  190. package/dist/components/upload/src/upload-utils.js +139 -9
  191. package/dist/index.d.ts +21 -11
  192. package/dist/index.js +6 -0
  193. package/dist/locale/messages.js +46 -2
  194. package/dist/styles.css +518 -154
  195. package/dist/theme/brand.example.css +1 -1
  196. package/package.json +1 -1
  197. package/dist/components/breadcrumb/src/RsBreadcrumbItems.d.ts +0 -8
  198. package/dist/components/breadcrumb/src/RsBreadcrumbItems.impl.js +0 -40
  199. package/dist/components/breadcrumb/src/RsBreadcrumbItems.js +0 -5
  200. package/dist/components/date-picker/src/RsDatePicker-1.css +0 -157
  201. package/dist/components/mentions/src/RsMentions-1.css +0 -29
  202. package/dist/components/time-picker/src/RsTimePicker-1.css +0 -98
@@ -1,12 +1,44 @@
1
+ export interface RsBreadcrumbItem {
2
+ key?: string;
3
+ label: string;
4
+ /** SPA 路径。未传 href 时写到 a[href]。Vue Router 请在 click 里 preventDefault 后 push,或用 #item。 */
5
+ to?: string;
6
+ /** 外链或完整地址。与 to 同时存在时以 href 为准。 */
7
+ href?: string;
8
+ /** Lucide kebab-case,写在文案前。 */
9
+ icon?: string;
10
+ disabled?: boolean;
11
+ target?: '_self' | '_blank' | '_parent' | '_top' | (string & {});
12
+ rel?: string;
13
+ }
1
14
  export interface RsBreadcrumbRenderItem {
2
15
  key: string;
16
+ sourceIndex: number;
17
+ source?: RsBreadcrumbItem;
3
18
  label: string;
4
19
  href?: string;
20
+ icon?: string;
21
+ target?: string;
22
+ rel?: string;
5
23
  isLink: boolean;
6
24
  isCurrent: boolean;
25
+ isDisabled: boolean;
26
+ isEllipsis: boolean;
27
+ hiddenItems?: RsBreadcrumbItem[];
7
28
  }
8
- export declare function buildBreadcrumbRenderItems(items: Array<{
9
- label: string;
10
- to?: string;
11
- href?: string;
12
- }>): RsBreadcrumbRenderItem[];
29
+ export interface RsBreadcrumbCollapseOptions {
30
+ maxItems?: number;
31
+ itemsBeforeCollapse?: number;
32
+ itemsAfterCollapse?: number;
33
+ expanded?: boolean;
34
+ }
35
+ /** href 优先;没有 href 时用 to,保证只传 to 的项仍是带地址的 a。 */
36
+ export declare function resolveBreadcrumbHref(item: Pick<RsBreadcrumbItem, 'href' | 'to'>): string | undefined;
37
+ /** `_blank` 时补 noopener / noreferrer,并保留调用方已有 rel。 */
38
+ export declare function mergeBreadcrumbLinkRel(rel: string | undefined, target: string | undefined): string | undefined;
39
+ export declare function pickCollapsedBreadcrumbIndexes(length: number, maxItems: number | undefined, itemsBeforeCollapse?: number, itemsAfterCollapse?: number, expanded?: boolean): {
40
+ visible: number[];
41
+ hidden: number[];
42
+ insertEllipsisAt: number;
43
+ } | null;
44
+ export declare function buildBreadcrumbRenderItems(items: RsBreadcrumbItem[], options?: RsBreadcrumbCollapseOptions): RsBreadcrumbRenderItem[];
@@ -1,12 +1,73 @@
1
1
  //#region src/components/breadcrumb/src/breadcrumb-utils.ts
2
- function buildBreadcrumbRenderItems(items) {
3
- return items.map((item, index) => ({
4
- key: `${item.label}-${index}`,
5
- label: item.label,
6
- href: item.href,
7
- isLink: Boolean(item.to || item.href),
8
- isCurrent: index === items.length - 1
9
- }));
2
+ /** href 优先;没有 href 时用 to,保证只传 to 的项仍是带地址的 a。 */
3
+ function resolveBreadcrumbHref(item) {
4
+ if (item.href) return item.href;
5
+ if (item.to) return item.to;
6
+ }
7
+ /** `_blank` 时补 noopener / noreferrer,并保留调用方已有 rel。 */
8
+ function mergeBreadcrumbLinkRel(rel, target) {
9
+ const parts = (rel ?? "").split(/\s+/).map((item) => item.trim()).filter(Boolean);
10
+ if (target === "_blank") {
11
+ if (!parts.includes("noopener")) parts.push("noopener");
12
+ if (!parts.includes("noreferrer")) parts.push("noreferrer");
13
+ }
14
+ return parts.length > 0 ? parts.join(" ") : void 0;
15
+ }
16
+ function pickCollapsedBreadcrumbIndexes(length, maxItems, itemsBeforeCollapse = 1, itemsAfterCollapse = 1, expanded = false) {
17
+ if (expanded || maxItems == null || maxItems < 2 || length <= maxItems) return null;
18
+ const before = Math.max(0, Math.floor(itemsBeforeCollapse));
19
+ const after = Math.max(1, Math.floor(itemsAfterCollapse));
20
+ if (before + after >= length) return null;
21
+ const hiddenStart = before;
22
+ const hiddenEnd = length - after;
23
+ if (hiddenStart >= hiddenEnd) return null;
24
+ const visible = [];
25
+ const hidden = [];
26
+ for (let index = 0; index < length; index += 1) if (index >= hiddenStart && index < hiddenEnd) hidden.push(index);
27
+ else visible.push(index);
28
+ return {
29
+ visible,
30
+ hidden,
31
+ insertEllipsisAt: before
32
+ };
33
+ }
34
+ function buildBreadcrumbRenderItems(items, options = {}) {
35
+ const lastIndex = items.length - 1;
36
+ const mapped = items.map((item, index) => {
37
+ const href = resolveBreadcrumbHref(item);
38
+ const disabled = Boolean(item.disabled);
39
+ return {
40
+ key: item.key ?? String(index),
41
+ sourceIndex: index,
42
+ source: item,
43
+ label: item.label,
44
+ href,
45
+ icon: item.icon,
46
+ target: item.target,
47
+ rel: mergeBreadcrumbLinkRel(item.rel, item.target),
48
+ isLink: Boolean(href) && !disabled && index !== lastIndex,
49
+ isCurrent: index === lastIndex,
50
+ isDisabled: disabled,
51
+ isEllipsis: false
52
+ };
53
+ });
54
+ const collapsed = pickCollapsedBreadcrumbIndexes(mapped.length, options.maxItems, options.itemsBeforeCollapse ?? 1, options.itemsAfterCollapse ?? 1, options.expanded ?? false);
55
+ if (!collapsed) return mapped;
56
+ const result = [];
57
+ collapsed.visible.forEach((index, visibleIndex) => {
58
+ if (visibleIndex === collapsed.insertEllipsisAt) result.push({
59
+ key: "ellipsis",
60
+ sourceIndex: -1,
61
+ label: "",
62
+ isLink: false,
63
+ isCurrent: false,
64
+ isDisabled: false,
65
+ isEllipsis: true,
66
+ hiddenItems: collapsed.hidden.map((hiddenIndex) => items[hiddenIndex])
67
+ });
68
+ result.push(mapped[index]);
69
+ });
70
+ return result;
10
71
  }
11
72
  //#endregion
12
- export { buildBreadcrumbRenderItems };
73
+ export { buildBreadcrumbRenderItems, mergeBreadcrumbLinkRel, pickCollapsedBreadcrumbIndexes, resolveBreadcrumbHref };
@@ -1 +1,3 @@
1
1
  export { default as RsCalendarGrid } from './src/RsCalendarGrid.js';
2
+ export type { RsCalendarGridExpose, RsCalendarGridInstance, } from './src/RsCalendarGrid.js';
3
+ export type { RsCalendarCell, RsCalendarGridCellSlot, } from './src/calendar-grid-utils';
@@ -1,99 +1,159 @@
1
1
 
2
- .rs-calendar-grid[data-v-35786efd] {
2
+ .rs-calendar-grid[data-v-e9d29258] {
3
3
  display: flex;
4
4
  flex-direction: column;
5
- gap: var(--rs-space-sm);
6
- }
7
- .rs-calendar-grid__header[data-v-35786efd] {
5
+ gap: var(--rs-calendar-grid-gap);
6
+ --rs-calendar-grid-cell-size: var(--rs-control-height-md);
7
+ --rs-calendar-grid-nav-size: var(--rs-control-height-sm);
8
+ --rs-calendar-grid-font: var(--rs-font-size-sm);
9
+ }
10
+ .rs-calendar-grid--ssm[data-v-e9d29258] {
11
+ --rs-calendar-grid-cell-size: var(--rs-control-height-ssm);
12
+ --rs-calendar-grid-nav-size: var(--rs-control-height-ssm);
13
+ --rs-calendar-grid-font: var(--rs-font-size-xs);
14
+ }
15
+ .rs-calendar-grid--sm[data-v-e9d29258] {
16
+ --rs-calendar-grid-cell-size: var(--rs-control-height-sm);
17
+ --rs-calendar-grid-nav-size: var(--rs-control-height-ssm);
18
+ --rs-calendar-grid-font: var(--rs-font-size-xs);
19
+ }
20
+ .rs-calendar-grid--lg[data-v-e9d29258] {
21
+ --rs-calendar-grid-cell-size: var(--rs-control-height-lg);
22
+ --rs-calendar-grid-nav-size: var(--rs-control-height-md);
23
+ --rs-calendar-grid-font: var(--rs-font-size-base);
24
+ }
25
+ .rs-calendar-grid__header[data-v-e9d29258] {
8
26
  display: flex;
9
27
  align-items: center;
10
28
  justify-content: space-between;
11
29
  gap: var(--rs-space-sm);
12
30
  }
13
- .rs-calendar-grid__nav-group[data-v-35786efd] {
31
+ .rs-calendar-grid__nav-group[data-v-e9d29258] {
14
32
  display: inline-flex;
15
33
  align-items: center;
16
34
  flex: 0 0 auto;
17
35
  }
18
- .rs-calendar-grid__title[data-v-35786efd] {
36
+ .rs-calendar-grid__title[data-v-e9d29258] {
19
37
  flex: 1;
20
38
  min-width: 0;
21
39
  text-align: center;
22
- font-size: var(--rs-font-size-sm);
40
+ font-size: var(--rs-calendar-grid-font);
23
41
  font-weight: var(--rs-font-weight-semibold);
24
- color: var(--rs-text);
42
+ color: var(--rs-calendar-grid-title);
25
43
  }
26
- .rs-calendar-grid__nav[data-v-35786efd] {
44
+ .rs-calendar-grid__nav[data-v-e9d29258] {
27
45
  display: inline-flex;
28
46
  align-items: center;
29
47
  justify-content: center;
30
- width: 1.75rem;
31
- height: 1.75rem;
48
+ width: var(--rs-calendar-grid-nav-size);
49
+ height: var(--rs-calendar-grid-nav-size);
32
50
  border: 0;
33
- border-radius: var(--rs-radius-sm);
51
+ border-radius: var(--rs-calendar-grid-radius);
34
52
  background: transparent;
35
- color: var(--rs-muted);
53
+ color: var(--rs-calendar-grid-nav);
36
54
  cursor: pointer;
37
55
  transition: background var(--rs-transition-fast), color var(--rs-transition-fast);
38
56
  }
39
- .rs-calendar-grid__nav[data-v-35786efd]:hover {
40
- background: var(--rs-surface-hover);
41
- color: var(--rs-text);
57
+ .rs-calendar-grid__nav[data-v-e9d29258]:hover:not(:disabled) {
58
+ background: var(--rs-calendar-grid-nav-hover);
59
+ color: var(--rs-calendar-grid-title);
60
+ }
61
+ .rs-calendar-grid__nav[data-v-e9d29258]:focus {
62
+ outline: none;
63
+ }
64
+ .rs-calendar-grid__nav[data-v-e9d29258]:focus-visible {
65
+ box-shadow: 0 0 0 var(--rs-focus-ring-width) var(--rs-focus-ring);
42
66
  }
43
- .rs-calendar-grid__table[data-v-35786efd] {
67
+ .rs-calendar-grid__nav[data-v-e9d29258]:disabled {
68
+ opacity: var(--rs-calendar-grid-disabled-opacity);
69
+ cursor: not-allowed;
70
+ }
71
+ .rs-calendar-grid__table[data-v-e9d29258] {
44
72
  width: 100%;
45
73
  border-collapse: separate;
46
- border-spacing: 2px;
74
+ border-spacing: var(--rs-calendar-grid-cell-gap);
47
75
  table-layout: fixed;
48
76
  }
49
- .rs-calendar-grid__weekday[data-v-35786efd] {
50
- padding: 0.125rem 0;
77
+ .rs-calendar-grid__weekday[data-v-e9d29258] {
78
+ padding-block: var(--rs-space-xs);
79
+ padding-inline: 0;
51
80
  text-align: center;
52
81
  font-size: var(--rs-font-size-xs);
53
82
  font-weight: var(--rs-font-weight-medium);
54
- color: var(--rs-muted);
83
+ color: var(--rs-calendar-grid-weekday);
84
+ }
85
+ .rs-calendar-grid__weekday--week[data-v-e9d29258],
86
+ .rs-calendar-grid__week-num[data-v-e9d29258] {
87
+ width: var(--rs-calendar-grid-week-col);
88
+ color: var(--rs-calendar-grid-week);
89
+ font-size: var(--rs-font-size-xs);
90
+ font-weight: var(--rs-font-weight-medium);
91
+ text-align: center;
55
92
  }
56
- .rs-calendar-grid__day[data-v-35786efd] {
93
+ .rs-calendar-grid__day[data-v-e9d29258] {
57
94
  padding: 0;
58
95
  text-align: center;
59
96
  vertical-align: middle;
60
97
  }
61
- .rs-calendar-grid__cell[data-v-35786efd] {
98
+ .rs-calendar-grid__cell[data-v-e9d29258] {
62
99
  width: 100%;
63
- height: 2rem;
100
+ min-width: var(--rs-calendar-grid-cell-size);
101
+ height: var(--rs-calendar-grid-cell-size);
64
102
  border: 0;
65
- border-radius: var(--rs-radius-sm);
103
+ border-radius: var(--rs-calendar-grid-radius);
66
104
  background: transparent;
67
- color: var(--rs-text);
68
- font-size: var(--rs-font-size-sm);
105
+ color: var(--rs-calendar-grid-day);
106
+ font-size: var(--rs-calendar-grid-font);
69
107
  cursor: pointer;
70
108
  transition:
71
109
  background var(--rs-transition-fast),
72
110
  color var(--rs-transition-fast);
73
111
  }
74
- .rs-calendar-grid__cell[data-v-35786efd]:hover:not(:disabled) {
75
- background: var(--rs-item-hover);
112
+ .rs-calendar-grid__cell[data-v-e9d29258]:hover:not(:disabled) {
113
+ background: var(--rs-calendar-grid-day-hover);
76
114
  }
77
- .rs-calendar-grid__cell--outside[data-v-35786efd] {
78
- color: var(--rs-placeholder);
115
+ .rs-calendar-grid__cell[data-v-e9d29258]:focus {
116
+ outline: none;
79
117
  }
80
- .rs-calendar-grid__cell--endpoint[data-v-35786efd],
81
- .rs-calendar-grid__cell--selected[data-v-35786efd] {
82
- background: var(--rs-primary);
83
- color: var(--rs-primary-foreground);
118
+ .rs-calendar-grid__cell[data-v-e9d29258]:focus-visible {
119
+ box-shadow: 0 0 0 var(--rs-focus-ring-width) var(--rs-focus-ring);
84
120
  }
85
- .rs-calendar-grid__cell--in-range[data-v-35786efd] {
86
- border-radius: 0;
87
- background: color-mix(in srgb, var(--rs-primary) 12%, transparent);
88
- color: var(--rs-primary);
121
+ .rs-calendar-grid__cell--outside[data-v-e9d29258] {
122
+ color: var(--rs-calendar-grid-day-outside);
89
123
  }
90
- .rs-calendar-grid__cell--range-start[data-v-35786efd]:not(.rs-calendar-grid__cell--range-end) {
91
- border-radius: var(--rs-radius-sm) 0 0 var(--rs-radius-sm);
124
+ .rs-calendar-grid__cell--today[data-v-e9d29258]:not(.rs-calendar-grid__cell--endpoint) {
125
+ box-shadow: inset 0 0 0 1px var(--rs-calendar-grid-today);
126
+ color: var(--rs-calendar-grid-today);
92
127
  }
93
- .rs-calendar-grid__cell--range-end[data-v-35786efd]:not(.rs-calendar-grid__cell--range-start) {
94
- border-radius: 0 var(--rs-radius-sm) var(--rs-radius-sm) 0;
128
+ .rs-calendar-grid__cell--endpoint[data-v-e9d29258],
129
+ .rs-calendar-grid__cell--selected[data-v-e9d29258] {
130
+ background: var(--rs-calendar-grid-selected);
131
+ color: var(--rs-calendar-grid-selected-fg);
95
132
  }
96
- .rs-calendar-grid__cell[data-v-35786efd]:disabled {
97
- opacity: 0.38;
133
+ .rs-calendar-grid__cell--in-range[data-v-e9d29258] {
134
+ border-radius: 0;
135
+ background: var(--rs-calendar-grid-in-range);
136
+ color: var(--rs-calendar-grid-today);
137
+ }
138
+ .rs-calendar-grid__cell--range-start[data-v-e9d29258]:not(.rs-calendar-grid__cell--range-end) {
139
+ border-start-start-radius: var(--rs-calendar-grid-radius);
140
+ border-end-start-radius: var(--rs-calendar-grid-radius);
141
+ border-start-end-radius: 0;
142
+ border-end-end-radius: 0;
143
+ }
144
+ .rs-calendar-grid__cell--range-end[data-v-e9d29258]:not(.rs-calendar-grid__cell--range-start) {
145
+ border-start-end-radius: var(--rs-calendar-grid-radius);
146
+ border-end-end-radius: var(--rs-calendar-grid-radius);
147
+ border-start-start-radius: 0;
148
+ border-end-start-radius: 0;
149
+ }
150
+ .rs-calendar-grid__cell[data-v-e9d29258]:disabled {
151
+ opacity: var(--rs-calendar-grid-disabled-opacity);
98
152
  cursor: not-allowed;
99
153
  }
154
+ @media (prefers-reduced-motion: reduce) {
155
+ .rs-calendar-grid__nav[data-v-e9d29258],
156
+ .rs-calendar-grid__cell[data-v-e9d29258] {
157
+ transition: none;
158
+ }
159
+ }
@@ -1,4 +1,12 @@
1
- import { type RsParsedDate } from '../../date-picker/src/date-picker-utils';
1
+ import { type RsComponentSize, type RsRadius } from '../../../theme/types';
2
+ import { type RsDatePickerDisabledDate, type RsParsedDate, type RsWeekStartsOn } from '../../date-picker/src/date-picker-utils';
3
+ export interface RsCalendarGridExpose {
4
+ focus: () => void;
5
+ goToToday: () => void;
6
+ }
7
+ export type RsCalendarGridInstance = RsCalendarGridExpose & {
8
+ $el: HTMLElement;
9
+ };
2
10
  type __VLS_Props = {
3
11
  selected?: RsParsedDate | null;
4
12
  rangeStart?: RsParsedDate | null;
@@ -6,13 +14,54 @@ type __VLS_Props = {
6
14
  minDate?: string;
7
15
  maxDate?: string;
8
16
  disabledDates?: string[];
17
+ /** 禁用某一天;与 disabledDates / minDate / maxDate 同时生效 */
18
+ disabledDate?: RsDatePickerDisabledDate;
19
+ /** 一周起始。未传跟 locale(en-US 周日,zh-CN 周一) */
20
+ weekStartsOn?: RsWeekStartsOn;
21
+ /** 控件密度。跟 Input / DatePicker 同一套 --rs-control-height-* */
22
+ size?: RsComponentSize;
23
+ radius?: RsRadius;
24
+ /** 禁用整张月历(含翻页)。也会继承 Form.disabled */
25
+ disabled?: boolean;
26
+ /** 今天描边。默认开 */
27
+ highlightToday?: boolean;
28
+ /** 画出邻月日期。默认开,关了仍占 6 行以免把 DatePicker 撑跳 */
29
+ showOutside?: boolean;
30
+ /** 点邻月日期是否发出 select。默认开,与原行为一致 */
31
+ selectOutside?: boolean;
32
+ /** 行首 ISO 周序号。欧洲排班常用 */
33
+ showWeekNumbers?: boolean;
34
+ /** 月历可访问名称 */
35
+ ariaLabel?: string;
36
+ id?: string;
9
37
  };
10
38
  type __VLS_ModelProps = {
11
39
  'viewYear': number;
12
40
  'viewMonth': number;
13
41
  };
14
42
  type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
15
- declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
43
+ declare var __VLS_11: {
44
+ year: number;
45
+ month: number;
46
+ label: string;
47
+ }, __VLS_23: {
48
+ date: RsParsedDate;
49
+ iso: string;
50
+ inCurrentMonth: boolean;
51
+ selected: boolean;
52
+ disabled: boolean;
53
+ today: boolean;
54
+ inRange: boolean;
55
+ rangeStart: boolean;
56
+ rangeEnd: boolean;
57
+ weekNumber: number;
58
+ };
59
+ type __VLS_Slots = {} & {
60
+ title?: (props: typeof __VLS_11) => any;
61
+ } & {
62
+ cell?: (props: typeof __VLS_23) => any;
63
+ };
64
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, RsCalendarGridExpose, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
16
65
  select: (date: RsParsedDate) => any;
17
66
  "update:viewYear": (value: number) => any;
18
67
  "update:viewMonth": (value: number) => any;
@@ -21,10 +70,21 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
21
70
  "onUpdate:viewYear"?: ((value: number) => any) | undefined;
22
71
  "onUpdate:viewMonth"?: ((value: number) => any) | undefined;
23
72
  }>, {
73
+ disabled: boolean;
24
74
  selected: RsParsedDate | null;
25
75
  rangeStart: RsParsedDate | null;
26
76
  rangeEnd: RsParsedDate | null;
27
77
  disabledDates: string[];
78
+ highlightToday: boolean;
79
+ showOutside: boolean;
80
+ selectOutside: boolean;
81
+ showWeekNumbers: boolean;
28
82
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
83
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
29
84
  declare const _default: typeof __VLS_export;
30
85
  export default _default;
86
+ type __VLS_WithSlots<T, S> = T & {
87
+ new (): {
88
+ $slots: S;
89
+ };
90
+ };