naive-ui 2.32.2 → 2.33.0

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 (121) hide show
  1. package/dist/index.js +40930 -2060
  2. package/dist/index.prod.js +2 -2
  3. package/es/_internal/select-menu/src/SelectOption.js +1 -2
  4. package/es/_utils/cssr/index.js +1 -1
  5. package/es/card/src/Card.d.ts +24 -1
  6. package/es/card/src/Card.js +8 -4
  7. package/es/card/src/styles/index.cssr.js +17 -8
  8. package/es/card/styles/dark.js +3 -1
  9. package/es/card/styles/light.d.ts +2 -0
  10. package/es/card/styles/light.js +1 -1
  11. package/es/countdown/src/Countdown.js +0 -5
  12. package/es/data-table/src/use-sorter.js +1 -1
  13. package/es/dialog/index.d.ts +1 -1
  14. package/es/dialog/index.js +1 -1
  15. package/es/dialog/src/DialogEnvironment.d.ts +3 -0
  16. package/es/dialog/src/DialogEnvironment.js +2 -2
  17. package/es/dialog/src/DialogProvider.d.ts +4 -0
  18. package/es/dialog/src/DialogProvider.js +2 -1
  19. package/es/dialog/src/composables.d.ts +4 -0
  20. package/es/dialog/src/composables.js +17 -0
  21. package/es/dialog/src/context.d.ts +2 -1
  22. package/es/dialog/src/context.js +1 -0
  23. package/es/form/src/FormItem.d.ts +1 -0
  24. package/es/form/src/FormItem.js +28 -18
  25. package/es/form/src/styles/form-item.cssr.js +31 -19
  26. package/es/form/src/utils.d.ts +1 -0
  27. package/es/form/src/utils.js +15 -10
  28. package/es/input/src/utils.js +1 -1
  29. package/es/locales/common/frFR.js +8 -11
  30. package/es/menu/src/Menu.d.ts +13 -0
  31. package/es/menu/src/Menu.js +7 -1
  32. package/es/modal/src/BodyWrapper.d.ts +2 -0
  33. package/es/modal/src/Modal.d.ts +18 -0
  34. package/es/modal/src/presetProps.d.ts +1 -1
  35. package/es/modal/styles/light.d.ts +2 -0
  36. package/es/pagination/src/Pagination.js +5 -1
  37. package/es/radio/src/Radio.d.ts +6 -32
  38. package/es/radio/src/Radio.js +5 -5
  39. package/es/radio/src/RadioButton.d.ts +6 -9
  40. package/es/radio/src/RadioButton.js +7 -11
  41. package/es/radio/src/RadioGroup.d.ts +8 -8
  42. package/es/radio/src/RadioGroup.js +2 -2
  43. package/es/radio/src/interface.d.ts +2 -2
  44. package/es/radio/src/use-radio.d.ts +4 -32
  45. package/es/radio/src/use-radio.js +12 -10
  46. package/es/rate/src/Rate.d.ts +23 -14
  47. package/es/rate/src/Rate.js +32 -12
  48. package/es/rate/src/interface.d.ts +2 -0
  49. package/es/rate/src/interface.js +1 -0
  50. package/es/rate/src/styles/index.cssr.js +13 -13
  51. package/es/slider/src/Slider.d.ts +13 -0
  52. package/es/slider/src/Slider.js +6 -3
  53. package/es/theme-editor/src/ThemeEditor.d.ts +4 -0
  54. package/es/theme-editor/src/ThemeEditor.js +25 -10
  55. package/es/tree/src/styles/index.cssr.js +4 -3
  56. package/es/version.d.ts +1 -1
  57. package/es/version.js +1 -1
  58. package/lib/_internal/select-menu/src/SelectOption.js +1 -2
  59. package/lib/_utils/cssr/index.js +2 -5
  60. package/lib/card/src/Card.d.ts +24 -1
  61. package/lib/card/src/Card.js +8 -4
  62. package/lib/card/src/styles/index.cssr.js +17 -8
  63. package/lib/card/styles/dark.js +3 -1
  64. package/lib/card/styles/light.d.ts +2 -0
  65. package/lib/card/styles/light.js +1 -1
  66. package/lib/countdown/src/Countdown.js +0 -5
  67. package/lib/data-table/src/use-sorter.js +1 -1
  68. package/lib/dialog/index.d.ts +1 -1
  69. package/lib/dialog/index.js +4 -3
  70. package/lib/dialog/src/DialogEnvironment.d.ts +3 -0
  71. package/lib/dialog/src/DialogEnvironment.js +2 -2
  72. package/lib/dialog/src/DialogProvider.d.ts +4 -0
  73. package/lib/dialog/src/DialogProvider.js +1 -0
  74. package/lib/dialog/src/composables.d.ts +4 -0
  75. package/lib/dialog/src/{use-dialog.js → composables.js} +9 -1
  76. package/lib/dialog/src/context.d.ts +2 -1
  77. package/lib/dialog/src/context.js +2 -1
  78. package/lib/form/src/FormItem.d.ts +1 -0
  79. package/lib/form/src/FormItem.js +28 -18
  80. package/lib/form/src/styles/form-item.cssr.js +31 -19
  81. package/lib/form/src/utils.d.ts +1 -0
  82. package/lib/form/src/utils.js +15 -10
  83. package/lib/input/src/utils.js +1 -1
  84. package/lib/locales/common/frFR.js +8 -11
  85. package/lib/menu/src/Menu.d.ts +13 -0
  86. package/lib/menu/src/Menu.js +7 -1
  87. package/lib/modal/src/BodyWrapper.d.ts +2 -0
  88. package/lib/modal/src/Modal.d.ts +18 -0
  89. package/lib/modal/src/presetProps.d.ts +1 -1
  90. package/lib/modal/styles/light.d.ts +2 -0
  91. package/lib/pagination/src/Pagination.js +5 -1
  92. package/lib/radio/src/Radio.d.ts +6 -32
  93. package/lib/radio/src/Radio.js +5 -5
  94. package/lib/radio/src/RadioButton.d.ts +6 -9
  95. package/lib/radio/src/RadioButton.js +7 -14
  96. package/lib/radio/src/RadioGroup.d.ts +8 -8
  97. package/lib/radio/src/RadioGroup.js +2 -2
  98. package/lib/radio/src/interface.d.ts +2 -2
  99. package/lib/radio/src/use-radio.d.ts +4 -32
  100. package/lib/radio/src/use-radio.js +11 -9
  101. package/lib/rate/src/Rate.d.ts +23 -14
  102. package/lib/rate/src/Rate.js +32 -12
  103. package/lib/rate/src/interface.d.ts +2 -0
  104. package/lib/rate/src/interface.js +2 -0
  105. package/lib/rate/src/styles/index.cssr.js +13 -13
  106. package/lib/slider/src/Slider.d.ts +13 -0
  107. package/lib/slider/src/Slider.js +6 -3
  108. package/lib/theme-editor/src/ThemeEditor.d.ts +4 -0
  109. package/lib/theme-editor/src/ThemeEditor.js +25 -10
  110. package/lib/tree/src/styles/index.cssr.js +4 -3
  111. package/lib/version.d.ts +1 -1
  112. package/lib/version.js +1 -1
  113. package/package.json +4 -4
  114. package/web-types.json +36 -5
  115. package/es/countdown/src/utils.d.ts +0 -0
  116. package/es/countdown/src/utils.js +0 -1
  117. package/es/dialog/src/use-dialog.d.ts +0 -2
  118. package/es/dialog/src/use-dialog.js +0 -10
  119. package/lib/countdown/src/utils.d.ts +0 -0
  120. package/lib/countdown/src/utils.js +0 -1
  121. package/lib/dialog/src/use-dialog.d.ts +0 -2
@@ -4,11 +4,10 @@ import { render, mergeEventHandlers } from '../../../_utils';
4
4
  import { CheckmarkIcon } from '../../icons';
5
5
  import { NBaseIcon } from '../../icon';
6
6
  import { internalSelectionMenuInjectionKey } from './interface';
7
- const checkMarkIcon = h(CheckmarkIcon);
8
7
  function renderCheckMark(show, clsPrefix) {
9
8
  return (h(Transition, { name: "fade-in-scale-up-transition" }, {
10
9
  default: () => show ? (h(NBaseIcon, { clsPrefix: clsPrefix, class: `${clsPrefix}-base-select-option__check` }, {
11
- default: () => checkMarkIcon
10
+ default: () => h(CheckmarkIcon)
12
11
  })) : null
13
12
  }));
14
13
  }
@@ -1,6 +1,6 @@
1
1
  /* eslint-disable @typescript-eslint/restrict-template-expressions */
2
2
  import { CssRender } from 'css-render';
3
- import BemPlugin from '@css-render/plugin-bem';
3
+ import { plugin as BemPlugin } from '@css-render/plugin-bem';
4
4
  const namespace = 'n';
5
5
  const prefix = `.${namespace}-`;
6
6
  const elementPrefix = '__';
@@ -32,7 +32,7 @@ export declare const cardBaseProps: {
32
32
  readonly role: StringConstructor;
33
33
  readonly onClose: PropType<MaybeArray<() => void>>;
34
34
  };
35
- export declare const cardBasePropKeys: ("size" | "title" | "role" | "bordered" | "closable" | "contentStyle" | "onClose" | "headerStyle" | "footerStyle" | "hoverable" | "headerExtraStyle" | "embedded" | "segmented")[];
35
+ export declare const cardBasePropKeys: ("size" | "title" | "role" | "bordered" | "closable" | "contentStyle" | "onClose" | "headerStyle" | "footerStyle" | "hoverable" | "embedded" | "headerExtraStyle" | "segmented")[];
36
36
  export declare const cardProps: {
37
37
  title: StringConstructor;
38
38
  contentStyle: PropType<string | CSSProperties>;
@@ -66,6 +66,8 @@ export declare const cardProps: {
66
66
  colorPopover: string;
67
67
  colorTarget: string;
68
68
  colorEmbedded: string;
69
+ colorEmbeddedModal: string;
70
+ colorEmbeddedPopover: string;
69
71
  textColor: string;
70
72
  titleTextColor: string;
71
73
  borderColor: string;
@@ -101,6 +103,8 @@ export declare const cardProps: {
101
103
  colorPopover: string;
102
104
  colorTarget: string;
103
105
  colorEmbedded: string;
106
+ colorEmbeddedModal: string;
107
+ colorEmbeddedPopover: string;
104
108
  textColor: string;
105
109
  titleTextColor: string;
106
110
  borderColor: string;
@@ -136,6 +140,8 @@ export declare const cardProps: {
136
140
  colorPopover: string;
137
141
  colorTarget: string;
138
142
  colorEmbedded: string;
143
+ colorEmbeddedModal: string;
144
+ colorEmbeddedPopover: string;
139
145
  textColor: string;
140
146
  titleTextColor: string;
141
147
  borderColor: string;
@@ -199,6 +205,8 @@ declare const _default: import("vue").DefineComponent<{
199
205
  colorPopover: string;
200
206
  colorTarget: string;
201
207
  colorEmbedded: string;
208
+ colorEmbeddedModal: string;
209
+ colorEmbeddedPopover: string;
202
210
  textColor: string;
203
211
  titleTextColor: string;
204
212
  borderColor: string;
@@ -234,6 +242,8 @@ declare const _default: import("vue").DefineComponent<{
234
242
  colorPopover: string;
235
243
  colorTarget: string;
236
244
  colorEmbedded: string;
245
+ colorEmbeddedModal: string;
246
+ colorEmbeddedPopover: string;
237
247
  textColor: string;
238
248
  titleTextColor: string;
239
249
  borderColor: string;
@@ -269,6 +279,8 @@ declare const _default: import("vue").DefineComponent<{
269
279
  colorPopover: string;
270
280
  colorTarget: string;
271
281
  colorEmbedded: string;
282
+ colorEmbeddedModal: string;
283
+ colorEmbeddedPopover: string;
272
284
  textColor: string;
273
285
  titleTextColor: string;
274
286
  borderColor: string;
@@ -413,6 +425,8 @@ declare const _default: import("vue").DefineComponent<{
413
425
  colorPopover: string;
414
426
  colorTarget: string;
415
427
  colorEmbedded: string;
428
+ colorEmbeddedModal: string;
429
+ colorEmbeddedPopover: string;
416
430
  textColor: string;
417
431
  titleTextColor: string;
418
432
  borderColor: string;
@@ -453,6 +467,9 @@ declare const _default: import("vue").DefineComponent<{
453
467
  '--n-color': string;
454
468
  '--n-color-modal': string;
455
469
  '--n-color-popover': string;
470
+ '--n-color-embedded': string;
471
+ '--n-color-embedded-modal': string;
472
+ '--n-color-embedded-popover': string;
456
473
  '--n-color-target': string;
457
474
  '--n-text-color': string;
458
475
  '--n-line-height': string;
@@ -510,6 +527,8 @@ declare const _default: import("vue").DefineComponent<{
510
527
  colorPopover: string;
511
528
  colorTarget: string;
512
529
  colorEmbedded: string;
530
+ colorEmbeddedModal: string;
531
+ colorEmbeddedPopover: string;
513
532
  textColor: string;
514
533
  titleTextColor: string;
515
534
  borderColor: string;
@@ -545,6 +564,8 @@ declare const _default: import("vue").DefineComponent<{
545
564
  colorPopover: string;
546
565
  colorTarget: string;
547
566
  colorEmbedded: string;
567
+ colorEmbeddedModal: string;
568
+ colorEmbeddedPopover: string;
548
569
  textColor: string;
549
570
  titleTextColor: string;
550
571
  borderColor: string;
@@ -580,6 +601,8 @@ declare const _default: import("vue").DefineComponent<{
580
601
  colorPopover: string;
581
602
  colorTarget: string;
582
603
  colorEmbedded: string;
604
+ colorEmbeddedModal: string;
605
+ colorEmbeddedPopover: string;
583
606
  textColor: string;
584
607
  titleTextColor: string;
585
608
  borderColor: string;
@@ -49,14 +49,17 @@ export default defineComponent({
49
49
  const rtlEnabledRef = useRtl('Card', mergedRtlRef, mergedClsPrefixRef);
50
50
  const cssVarsRef = computed(() => {
51
51
  const { size } = props;
52
- const { self: { color, colorModal, colorTarget, textColor, titleTextColor, titleFontWeight, borderColor, actionColor, borderRadius, lineHeight, closeIconColor, closeIconColorHover, closeIconColorPressed, closeColorHover, closeColorPressed, closeBorderRadius, closeIconSize, closeSize, boxShadow, colorPopover, colorEmbedded, [createKey('padding', size)]: padding, [createKey('fontSize', size)]: fontSize, [createKey('titleFontSize', size)]: titleFontSize }, common: { cubicBezierEaseInOut } } = themeRef.value;
52
+ const { self: { color, colorModal, colorTarget, textColor, titleTextColor, titleFontWeight, borderColor, actionColor, borderRadius, lineHeight, closeIconColor, closeIconColorHover, closeIconColorPressed, closeColorHover, closeColorPressed, closeBorderRadius, closeIconSize, closeSize, boxShadow, colorPopover, colorEmbedded, colorEmbeddedModal, colorEmbeddedPopover, [createKey('padding', size)]: padding, [createKey('fontSize', size)]: fontSize, [createKey('titleFontSize', size)]: titleFontSize }, common: { cubicBezierEaseInOut } } = themeRef.value;
53
53
  const { top: paddingTop, left: paddingLeft, bottom: paddingBottom } = getPadding(padding);
54
54
  return {
55
55
  '--n-bezier': cubicBezierEaseInOut,
56
56
  '--n-border-radius': borderRadius,
57
- '--n-color': props.embedded ? colorEmbedded : color,
57
+ '--n-color': color,
58
58
  '--n-color-modal': colorModal,
59
59
  '--n-color-popover': colorPopover,
60
+ '--n-color-embedded': colorEmbedded,
61
+ '--n-color-embedded-modal': colorEmbeddedModal,
62
+ '--n-color-embedded-popover': colorEmbeddedPopover,
60
63
  '--n-color-target': colorTarget,
61
64
  '--n-text-color': textColor,
62
65
  '--n-line-height': lineHeight,
@@ -97,11 +100,12 @@ export default defineComponent({
97
100
  };
98
101
  },
99
102
  render() {
100
- const { segmented, bordered, hoverable, mergedClsPrefix, rtlEnabled, onRender, $slots } = this;
103
+ const { segmented, bordered, hoverable, mergedClsPrefix, rtlEnabled, onRender, embedded, $slots } = this;
101
104
  onRender === null || onRender === void 0 ? void 0 : onRender();
102
105
  return (h("div", { class: [
103
106
  `${mergedClsPrefix}-card`,
104
107
  this.themeClass,
108
+ embedded && `${mergedClsPrefix}-card--embedded`,
105
109
  {
106
110
  [`${mergedClsPrefix}-card--rtl`]: rtlEnabled,
107
111
  [`${mergedClsPrefix}-card--content${typeof segmented !== 'boolean' && segmented.content === 'soft'
@@ -118,7 +122,7 @@ export default defineComponent({
118
122
  resolveWrappedSlot($slots.cover, (children) => children && (h("div", { class: `${mergedClsPrefix}-card-cover`, role: "none" }, children))),
119
123
  resolveWrappedSlot($slots.header, (children) => {
120
124
  return children || this.title || this.closable ? (h("div", { class: `${mergedClsPrefix}-card-header`, style: this.headerStyle },
121
- h("div", { class: `${mergedClsPrefix}-card-header__main`, role: "heading" }, children || [this.title]),
125
+ h("div", { class: `${mergedClsPrefix}-card-header__main`, role: "heading" }, children || this.title),
122
126
  resolveWrappedSlot($slots['header-extra'], (children) => children && (h("div", { class: `${mergedClsPrefix}-card-header__extra`, style: this.headerExtraStyle }, children))),
123
127
  this.closable ? (h(NBaseClose, { clsPrefix: mergedClsPrefix, class: `${mergedClsPrefix}-card-header__close`, onClick: this.handleCloseClick, absolute: true })) : null)) : null;
124
128
  }),
@@ -23,6 +23,9 @@ import { asModal, c, cB, cE, cM, insideModal, insidePopover } from '../../../_ut
23
23
  // --n-close-icon-color-pressed
24
24
  // --n-border-color
25
25
  // --n-box-shadow
26
+ // --n-color-embedded
27
+ // --n-color-embedded-modal
28
+ // --n-color-embedded-popover
26
29
 
27
30
  export default c([cB('card', `
28
31
  font-size: var(--n-font-size);
@@ -41,7 +44,9 @@ export default c([cB('card', `
41
44
  background-color .3s var(--n-bezier),
42
45
  box-shadow .3s var(--n-bezier),
43
46
  border-color .3s var(--n-bezier);
44
- `, [cM('hoverable', [c('&:hover', 'box-shadow: var(--n-box-shadow);')]), cM('content-segmented', [c('>', [cE('content', {
47
+ `, [asModal({
48
+ background: 'var(--n-color-modal)'
49
+ }), cM('hoverable', [c('&:hover', 'box-shadow: var(--n-box-shadow);')]), cM('content-segmented', [c('>', [cE('content', {
45
50
  paddingTop: 'var(--n-padding-bottom)'
46
51
  })])]), cM('content-soft-segmented', [c('>', [cE('content', `
47
52
  margin: 0 var(--n-padding-left);
@@ -115,10 +120,14 @@ export default c([cB('card', `
115
120
  transition: 'border-color 0.3s var(--n-bezier)'
116
121
  }, [c('&:not(:first-child)', {
117
122
  borderTop: '1px solid var(--n-border-color)'
118
- })])])])]), insideModal(cB('card', {
119
- background: 'var(--n-color-modal)'
120
- })), insidePopover(cB('card', {
121
- background: 'var(--n-color-popover)'
122
- })), cB('card', [asModal({
123
- background: 'var(--n-color-modal)'
124
- })])]);
123
+ })])])]), cM('embedded', `
124
+ background-color: var(--n-color-embedded);
125
+ `)]), insideModal(cB('card', `
126
+ background: var(--n-color-modal);
127
+ `, [cM('embedded', `
128
+ background-color: var(--n-color-embedded-modal);
129
+ `)])), insidePopover(cB('card', `
130
+ background: var(--n-color-popover);
131
+ `, [cM('embedded', `
132
+ background-color: var(--n-color-embedded-popover);
133
+ `)]))]);
@@ -5,8 +5,10 @@ const cardDark = {
5
5
  common: commonDark,
6
6
  self(vars) {
7
7
  const commonSelf = self(vars);
8
- const { cardColor } = vars;
8
+ const { cardColor, modalColor, popoverColor } = vars;
9
9
  commonSelf.colorEmbedded = cardColor;
10
+ commonSelf.colorEmbeddedModal = modalColor;
11
+ commonSelf.colorEmbeddedPopover = popoverColor;
10
12
  return commonSelf;
11
13
  }
12
14
  };
@@ -7,6 +7,8 @@ export declare const self: (vars: ThemeCommonVars) => {
7
7
  colorPopover: string;
8
8
  colorTarget: string;
9
9
  colorEmbedded: string;
10
+ colorEmbeddedModal: string;
11
+ colorEmbeddedPopover: string;
10
12
  textColor: string;
11
13
  titleTextColor: string;
12
14
  borderColor: string;
@@ -2,7 +2,7 @@ import { commonLight } from '../../_styles/common';
2
2
  import commonVariables from './_common';
3
3
  export const self = (vars) => {
4
4
  const { primaryColor, borderRadius, lineHeight, fontSize, cardColor, textColor2, textColor1, dividerColor, fontWeightStrong, closeIconColor, closeIconColorHover, closeIconColorPressed, closeColorHover, closeColorPressed, modalColor, boxShadow1, popoverColor, actionColor } = vars;
5
- return Object.assign(Object.assign({}, commonVariables), { lineHeight, color: cardColor, colorModal: modalColor, colorPopover: popoverColor, colorTarget: primaryColor, colorEmbedded: actionColor, textColor: textColor2, titleTextColor: textColor1, borderColor: dividerColor, actionColor, titleFontWeight: fontWeightStrong, closeColorHover,
5
+ return Object.assign(Object.assign({}, commonVariables), { lineHeight, color: cardColor, colorModal: modalColor, colorPopover: popoverColor, colorTarget: primaryColor, colorEmbedded: actionColor, colorEmbeddedModal: actionColor, colorEmbeddedPopover: actionColor, textColor: textColor2, titleTextColor: textColor1, borderColor: dividerColor, actionColor, titleFontWeight: fontWeightStrong, closeColorHover,
6
6
  closeColorPressed, closeBorderRadius: borderRadius, closeIconColor,
7
7
  closeIconColorHover,
8
8
  closeIconColorPressed, fontSizeSmall: fontSize, fontSizeMedium: fontSize, fontSizeLarge: fontSize, fontSizeHuge: fontSize, boxShadow: boxShadow1, borderRadius });
@@ -20,7 +20,6 @@ export default defineComponent({
20
20
  props: countdownProps,
21
21
  setup(props) {
22
22
  let timerId = null;
23
- let rafId = null;
24
23
  let elapsed = 0;
25
24
  let finished = false;
26
25
  // in ms
@@ -89,10 +88,6 @@ export default defineComponent({
89
88
  window.clearTimeout(timerId);
90
89
  timerId = null;
91
90
  }
92
- if (rafId !== null) {
93
- window.cancelAnimationFrame(rafId);
94
- rafId = null;
95
- }
96
91
  };
97
92
  onMounted(() => {
98
93
  watchEffect(() => {
@@ -159,7 +159,7 @@ export function useSorter(props, { dataRelatedColsRef, filteredDataRef }) {
159
159
  const columnToSort = dataRelatedColsRef.value.find((column) => column.type !== 'selection' &&
160
160
  column.type !== 'expand' &&
161
161
  column.key === columnKey);
162
- if (!columnToSort || !columnToSort.sorter)
162
+ if (!(columnToSort === null || columnToSort === void 0 ? void 0 : columnToSort.sorter))
163
163
  return;
164
164
  const sorter = columnToSort.sorter;
165
165
  deriveNextSorter({
@@ -3,4 +3,4 @@ export { dialogProps } from './src/dialogProps';
3
3
  export type { DialogProps } from './src/dialogProps';
4
4
  export { NDialogProvider, dialogProviderProps } from './src/DialogProvider';
5
5
  export type { DialogProviderProps, DialogProviderInst, DialogOptions, DialogReactive, DialogApiInjection as DialogApi } from './src/DialogProvider';
6
- export { useDialog } from './src/use-dialog';
6
+ export { useDialog, useDialogReactiveList } from './src/composables';
@@ -1,4 +1,4 @@
1
1
  export { NDialog } from './src/Dialog';
2
2
  export { dialogProps } from './src/dialogProps';
3
3
  export { NDialogProvider, dialogProviderProps } from './src/DialogProvider';
4
- export { useDialog } from './src/use-dialog';
4
+ export { useDialog, useDialogReactiveList } from './src/composables';
@@ -1,5 +1,6 @@
1
1
  import { PropType, CSSProperties } from 'vue';
2
2
  export declare const exposedDialogEnvProps: {
3
+ readonly onAfterEnter: PropType<() => void>;
3
4
  readonly blockScroll: {
4
5
  readonly type: BooleanConstructor;
5
6
  readonly default: true;
@@ -56,6 +57,7 @@ export declare const NDialogEnvironment: import("vue").DefineComponent<{
56
57
  type: PropType<(key: string) => void>;
57
58
  required: true;
58
59
  };
60
+ onAfterEnter: PropType<() => void>;
59
61
  blockScroll: {
60
62
  readonly type: BooleanConstructor;
61
63
  readonly default: true;
@@ -121,6 +123,7 @@ export declare const NDialogEnvironment: import("vue").DefineComponent<{
121
123
  type: PropType<(key: string) => void>;
122
124
  required: true;
123
125
  };
126
+ onAfterEnter: PropType<() => void>;
124
127
  blockScroll: {
125
128
  readonly type: BooleanConstructor;
126
129
  readonly default: true;
@@ -5,7 +5,7 @@ import NModal from '../../modal/src/Modal';
5
5
  import { keep } from '../../_utils';
6
6
  import { NDialog } from './Dialog';
7
7
  import { dialogProps, dialogPropKeys } from './dialogProps';
8
- export const exposedDialogEnvProps = Object.assign(Object.assign({}, dialogProps), { blockScroll: { type: Boolean, default: true }, closeOnEsc: { type: Boolean, default: true }, onEsc: Function, autoFocus: {
8
+ export const exposedDialogEnvProps = Object.assign(Object.assign({}, dialogProps), { onAfterEnter: Function, blockScroll: { type: Boolean, default: true }, closeOnEsc: { type: Boolean, default: true }, onEsc: Function, autoFocus: {
9
9
  type: Boolean,
10
10
  default: true
11
11
  }, internalStyle: [String, Object], maskClosable: {
@@ -100,7 +100,7 @@ export const NDialogEnvironment = defineComponent({
100
100
  },
101
101
  render() {
102
102
  const { handlePositiveClick, handleUpdateShow, handleNegativeClick, handleCloseClick, handleAfterLeave, handleMaskClick, handleEsc, to, maskClosable, show } = this;
103
- return (h(NModal, { show: show, onUpdateShow: handleUpdateShow, onMaskClick: handleMaskClick, onEsc: handleEsc, to: to, maskClosable: maskClosable, onAfterLeave: handleAfterLeave, closeOnEsc: this.closeOnEsc, blockScroll: this.blockScroll, autoFocus: this.autoFocus, internalAppear: true, internalDialog: true }, {
103
+ return (h(NModal, { show: show, onUpdateShow: handleUpdateShow, onMaskClick: handleMaskClick, onEsc: handleEsc, to: to, maskClosable: maskClosable, onAfterEnter: this.onAfterEnter, onAfterLeave: handleAfterLeave, closeOnEsc: this.closeOnEsc, blockScroll: this.blockScroll, autoFocus: this.autoFocus, internalAppear: true, internalDialog: true }, {
104
104
  default: () => (h(NDialog, Object.assign({}, keep(this.$props, dialogPropKeys), { style: this.internalStyle, onClose: handleCloseClick, onNegativeClick: handleNegativeClick, onPositiveClick: handlePositiveClick })))
105
105
  }));
106
106
  }
@@ -2,6 +2,7 @@ import { ExtractPropTypes, PropType, Ref, CSSProperties } from 'vue';
2
2
  import type { ExtractPublicPropTypes, Mutable } from '../../_utils';
3
3
  import { exposedDialogEnvProps } from './DialogEnvironment';
4
4
  export declare type DialogOptions = Mutable<Omit<Partial<ExtractPropTypes<typeof exposedDialogEnvProps>>, 'internalStyle'> & {
5
+ class?: any;
5
6
  style?: string | CSSProperties;
6
7
  }>;
7
8
  export declare type DialogReactive = {
@@ -23,6 +24,7 @@ export interface DialogProviderInjection {
23
24
  y: number;
24
25
  } | null>;
25
26
  }
27
+ export declare type DialogReactiveListInjection = Ref<DialogReactive[]>;
26
28
  interface DialogInst {
27
29
  hide: () => void;
28
30
  }
@@ -42,6 +44,7 @@ export declare const NDialogProvider: import("vue").DefineComponent<{
42
44
  type?: "default" | "error" | "info" | "success" | "warning" | undefined;
43
45
  content?: string | (() => import("vue").VNodeChild) | undefined;
44
46
  icon?: (() => import("vue").VNodeChild) | undefined;
47
+ onAfterEnter?: (() => void) | undefined;
45
48
  title?: string | (() => import("vue").VNodeChild) | undefined;
46
49
  action?: (() => import("vue").VNodeChild) | undefined;
47
50
  autoFocus?: boolean | undefined;
@@ -736,6 +739,7 @@ export declare const NDialogProvider: import("vue").DefineComponent<{
736
739
  onMaskClick?: ((e: MouseEvent) => void) | undefined;
737
740
  maskClosable?: boolean | undefined;
738
741
  closeOnEsc?: boolean | undefined;
742
+ class?: any;
739
743
  style?: any;
740
744
  }[]>;
741
745
  dialogInstRefs: Record<string, DialogInst>;
@@ -3,7 +3,7 @@ import { createId } from 'seemly';
3
3
  import { useClicked, useClickPosition } from 'vooks';
4
4
  import { omit } from '../../_utils';
5
5
  import { NDialogEnvironment } from './DialogEnvironment';
6
- import { dialogApiInjectionKey, dialogProviderInjectionKey } from './context';
6
+ import { dialogApiInjectionKey, dialogProviderInjectionKey, dialogReactiveListInjectionKey } from './context';
7
7
  export const dialogProviderProps = {
8
8
  injectionKey: String,
9
9
  to: [String, Object]
@@ -45,6 +45,7 @@ export const NDialogProvider = defineComponent({
45
45
  clickedRef: useClicked(64),
46
46
  clickPositionRef: useClickPosition()
47
47
  });
48
+ provide(dialogReactiveListInjectionKey, dialogListRef);
48
49
  return Object.assign(Object.assign({}, api), { dialogList: dialogListRef, dialogInstRefs,
49
50
  handleAfterLeave });
50
51
  },
@@ -0,0 +1,4 @@
1
+ import { Ref } from 'vue';
2
+ import type { DialogApiInjection, DialogReactive } from './DialogProvider';
3
+ export declare function useDialog(): DialogApiInjection;
4
+ export declare function useDialogReactiveList(): Ref<readonly DialogReactive[]>;
@@ -0,0 +1,17 @@
1
+ import { inject } from 'vue';
2
+ import { dialogApiInjectionKey, dialogReactiveListInjectionKey } from './context';
3
+ import { throwError } from '../../_utils';
4
+ export function useDialog() {
5
+ const dialog = inject(dialogApiInjectionKey, null);
6
+ if (dialog === null) {
7
+ throwError('use-dialog', 'No outer <n-dialog-provider /> founded.');
8
+ }
9
+ return dialog;
10
+ }
11
+ export function useDialogReactiveList() {
12
+ const dialogReactiveList = inject(dialogReactiveListInjectionKey, null);
13
+ if (dialogReactiveList === null) {
14
+ throwError('use-dialog-reactive-list', 'No outer <n-dialog-provider /> founded.');
15
+ }
16
+ return dialogReactiveList;
17
+ }
@@ -1,3 +1,4 @@
1
- import type { DialogApiInjection, DialogProviderInjection } from './DialogProvider';
1
+ import type { DialogApiInjection, DialogProviderInjection, DialogReactiveListInjection } from './DialogProvider';
2
2
  export declare const dialogProviderInjectionKey: import("vue").InjectionKey<DialogProviderInjection>;
3
3
  export declare const dialogApiInjectionKey: import("vue").InjectionKey<DialogApiInjection>;
4
+ export declare const dialogReactiveListInjectionKey: import("vue").InjectionKey<DialogReactiveListInjection>;
@@ -1,3 +1,4 @@
1
1
  import { createInjectionKey } from '../../_utils';
2
2
  export const dialogProviderInjectionKey = createInjectionKey('n-dialog-provider');
3
3
  export const dialogApiInjectionKey = createInjectionKey('n-dialog-api');
4
+ export const dialogReactiveListInjectionKey = createInjectionKey('n-dialog-reactive-list');
@@ -283,6 +283,7 @@ declare const _default: import("vue").DefineComponent<{
283
283
  mergedValidationStatus: import("vue").ComputedRef<"error" | "success" | "warning" | undefined>;
284
284
  mergedShowFeedback: import("vue").ComputedRef<boolean>;
285
285
  mergedShowLabel: import("vue").ComputedRef<boolean>;
286
+ isAutoLabelWidth: import("vue").ComputedRef<boolean>;
286
287
  labelElementRef: import("vue").Ref<HTMLLabelElement | null>;
287
288
  mergedClsPrefix: import("vue").ComputedRef<string>;
288
289
  mergedRequired: import("vue").ComputedRef<boolean>;
@@ -249,8 +249,15 @@ export default defineComponent({
249
249
  };
250
250
  const labelElementRef = ref(null);
251
251
  onMounted(() => {
252
- if (labelElementRef.value !== null) {
253
- NForm === null || NForm === void 0 ? void 0 : NForm.deriveMaxChildLabelWidth(Number(getComputedStyle(labelElementRef.value).width.slice(0, -2)));
252
+ if (!formItemMiscRefs.isAutoLabelWidth.value)
253
+ return;
254
+ const labelElement = labelElementRef.value;
255
+ if (labelElement !== null) {
256
+ const memoizedWhitespace = labelElement.style.whiteSpace;
257
+ labelElement.style.whiteSpace = 'nowrap';
258
+ labelElement.style.width = '';
259
+ NForm === null || NForm === void 0 ? void 0 : NForm.deriveMaxChildLabelWidth(Number(getComputedStyle(labelElement).width.slice(0, -2)));
260
+ labelElement.style.whiteSpace = memoizedWhitespace;
254
261
  }
255
262
  });
256
263
  const cssVarsRef = computed(() => {
@@ -290,34 +297,37 @@ export default defineComponent({
290
297
  return Object.assign(Object.assign(Object.assign(Object.assign({ labelElementRef, mergedClsPrefix: mergedClsPrefixRef, mergedRequired: mergedRequiredRef, feedbackId: feedbackIdRef, renderExplains: renderExplainsRef }, formItemMiscRefs), formItemSizeRefs), exposedRef), { cssVars: inlineThemeDisabled ? undefined : cssVarsRef, themeClass: themeClassHandle === null || themeClassHandle === void 0 ? void 0 : themeClassHandle.themeClass, onRender: themeClassHandle === null || themeClassHandle === void 0 ? void 0 : themeClassHandle.onRender });
291
298
  },
292
299
  render() {
293
- var _a;
294
300
  const { $slots, mergedClsPrefix, mergedShowLabel, mergedShowRequireMark, mergedRequireMarkPlacement, onRender } = this;
295
301
  const renderedShowRequireMark = mergedShowRequireMark !== undefined
296
302
  ? mergedShowRequireMark
297
303
  : this.mergedRequired;
298
304
  onRender === null || onRender === void 0 ? void 0 : onRender();
305
+ const renderLabel = () => {
306
+ const labelText = this.$slots.label ? this.$slots.label() : this.label;
307
+ if (!labelText)
308
+ return null;
309
+ const textNode = (h("span", { class: `${mergedClsPrefix}-form-item-label__text` }, labelText));
310
+ const markNode = renderedShowRequireMark ? (h("span", { class: `${mergedClsPrefix}-form-item-label__asterisk` }, mergedRequireMarkPlacement !== 'left' ? '\u00A0*' : '*\u00A0')) : (mergedRequireMarkPlacement === 'right-hanging' && (h("span", { class: `${mergedClsPrefix}-form-item-label__asterisk-placeholder` }, '\u00A0*')));
311
+ let labelContent;
312
+ if (mergedRequireMarkPlacement === 'left') {
313
+ labelContent = [markNode, textNode];
314
+ }
315
+ else {
316
+ labelContent = [textNode, markNode];
317
+ }
318
+ const { labelProps } = this;
319
+ return (h("label", Object.assign({}, labelProps, { class: [labelProps === null || labelProps === void 0 ? void 0 : labelProps.class, `${mergedClsPrefix}-form-item-label`], style: this.mergedLabelStyle, ref: "labelElementRef" }), labelContent));
320
+ };
299
321
  return (h("div", { class: [
300
322
  `${mergedClsPrefix}-form-item`,
301
323
  this.themeClass,
302
324
  `${mergedClsPrefix}-form-item--${this.mergedSize}-size`,
303
325
  `${mergedClsPrefix}-form-item--${this.mergedLabelPlacement}-labelled`,
326
+ this.isAutoLabelWidth &&
327
+ `${mergedClsPrefix}-form-item--auto-label-width`,
304
328
  !mergedShowLabel && `${mergedClsPrefix}-form-item--no-label`
305
329
  ], style: this.cssVars },
306
- mergedShowLabel && (this.label || $slots.label) ? (h("label", Object.assign({}, this.labelProps, { class: [
307
- (_a = this.labelProps) === null || _a === void 0 ? void 0 : _a.class,
308
- `${mergedClsPrefix}-form-item-label`
309
- ], style: this.mergedLabelStyle, ref: "labelElementRef" }),
310
- mergedRequireMarkPlacement !== 'left'
311
- ? $slots.label
312
- ? $slots.label()
313
- : this.label
314
- : null,
315
- renderedShowRequireMark ? (h("span", { class: `${mergedClsPrefix}-form-item-label__asterisk` }, mergedRequireMarkPlacement !== 'left' ? '\u00A0*' : '*\u00A0')) : (mergedRequireMarkPlacement === 'right-hanging' && (h("span", { class: `${mergedClsPrefix}-form-item-label__asterisk-placeholder` }, '\u00A0*'))),
316
- mergedRequireMarkPlacement === 'left'
317
- ? $slots.label
318
- ? $slots.label()
319
- : this.label
320
- : null)) : null,
330
+ mergedShowLabel && renderLabel(),
321
331
  h("div", { class: [
322
332
  `${mergedClsPrefix}-form-item-blank`,
323
333
  this.mergedValidationStatus &&
@@ -17,21 +17,22 @@ import { fadeDownTransition } from '../../../_styles/transitions/fade-down.cssr'
17
17
  // --n-label-text-align
18
18
  // --n-label-padding
19
19
 
20
- export default cB('form-item', {
21
- display: 'grid',
22
- lineHeight: 'var(--n-line-height)'
23
- }, [cB('form-item-label', `
20
+ export default cB('form-item', `
21
+ display: grid;
22
+ line-height: var(--n-line-height);
23
+ `, [cB('form-item-label', `
24
24
  grid-area: label;
25
25
  align-items: center;
26
26
  line-height: 1.25;
27
27
  text-align: var(--n-label-text-align);
28
28
  font-size: var(--n-label-font-size);
29
- height: var(--n-label-height);
29
+ min-height: var(--n-label-height);
30
30
  padding: var(--n-label-padding);
31
31
  color: var(--n-label-text-color);
32
32
  transition: color .3s var(--n-bezier);
33
33
  box-sizing: border-box;
34
34
  `, [cE('asterisk', `
35
+ white-space: nowrap;
35
36
  user-select: none;
36
37
  -webkit-user-select: none;
37
38
  color: var(--n-asterisk-color);
@@ -40,38 +41,49 @@ export default cB('form-item', {
40
41
  user-select: none;
41
42
  -webkit-user-select: none;
42
43
  visibility: hidden;
43
- `)]), cB('form-item-blank', {
44
- gridArea: 'blank',
45
- minHeight: 'var(--n-blank-height)'
46
- }), cM('left-labelled', `
44
+ `)]), cB('form-item-blank', `
45
+ grid-area: blank;
46
+ min-height: var(--n-blank-height);
47
+ `), cM('auto-label-width', [cB('form-item-label', 'white-space: nowrap;')]), cM('left-labelled', `
47
48
  grid-template-areas:
48
49
  "label blank"
49
50
  "label feedback";
50
51
  grid-template-columns: auto minmax(0, 1fr);
52
+ grid-template-rows: auto 1fr;
53
+ align-items: start;
51
54
  `, [cB('form-item-label', `
52
- height: var(--n-blank-height);
53
- line-height: var(--n-blank-height);
55
+ display: grid;
56
+ grid-template-areas:
57
+ "text star"
58
+ "text .";
59
+ grid-template-columns: 1fr auto;
60
+ min-height: var(--n-blank-height);
61
+ height: auto;
54
62
  box-sizing: border-box;
55
- white-space: nowrap;
56
63
  flex-shrink: 0;
57
64
  flex-grow: 0;
58
- `)]), cM('top-labelled', `
65
+ `, [cE('text', `
66
+ grid-area: text;
67
+ `), cE('asterisk', `
68
+ grid-area: star;
69
+ align-self: end;
70
+ `)])]), cM('top-labelled', `
59
71
  grid-template-areas:
60
72
  "label"
61
73
  "blank"
62
74
  "feedback";
63
- grid-template-rows: var(--n-label-height) 1fr;
75
+ grid-template-rows: minmax(var(--n-label-height), auto) 1fr;
64
76
  grid-template-columns: minmax(0, 100%);
65
77
  `, [cM('no-label', `
66
78
  grid-template-areas:
67
79
  "blank"
68
80
  "feedback";
69
81
  grid-template-rows: 1fr;
70
- `), cB('form-item-label', {
71
- display: 'flex',
72
- alignItems: 'flex-end',
73
- justifyContent: 'var(--n-label-text-align)'
74
- })]), cB('form-item-blank', `
82
+ `), cB('form-item-label', `
83
+ display: flex;
84
+ align-items: flex-start;
85
+ justify-content: var(--n-label-text-align);
86
+ `)]), cB('form-item-blank', `
75
87
  box-sizing: border-box;
76
88
  display: flex;
77
89
  align-items: center;
@@ -14,6 +14,7 @@ export declare function formItemMisc(props: FormItemSetupProps): {
14
14
  mergedValidationStatus: ComputedRef<"error" | "success" | "warning" | undefined>;
15
15
  mergedShowFeedback: ComputedRef<boolean>;
16
16
  mergedShowLabel: ComputedRef<boolean>;
17
+ isAutoLabelWidth: ComputedRef<boolean>;
17
18
  };
18
19
  export declare function formItemRule(props: FormItemSetupProps): {
19
20
  mergedRules: ComputedRef<FormItemRule[]>;