@nexxtmove/ui 1.40.1 → 1.42.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.
@@ -29,6 +29,11 @@ interface NexxtPickerPanelProps {
29
29
  height?: number | string
30
30
  /** Below this height of the column row (the panel minus the header), in pixels, the preview column is left out and the list takes the full width. */
31
31
  hidePreviewBelow?: number
32
+ /**
33
+ * Render the preview column. `false` leaves it out at any height, so the list always takes the
34
+ * full width: for a picker whose rows are their own preview.
35
+ */
36
+ preview?: boolean
32
37
  /** Whether group headings fold their group. */
33
38
  collapsible?: boolean
34
39
  /** Heading of the empty state, shown when the search has no results. */
@@ -41,6 +46,8 @@ interface NexxtPickerPanelProps {
41
46
  previewEmptyText?: string
42
47
  /** Text announced 500ms after the search changes, e.g. `(n) => \`${n} resultaten\``. */
43
48
  resultsAnnouncement?: (count: number) => string
49
+ /** More items are on their way: `aria-busy` on the listbox, and no empty state meanwhile. */
50
+ busy?: boolean
44
51
  }
45
52
 
46
53
  defineOptions({ name: 'NexxtPickerPanel' })
@@ -51,7 +58,9 @@ const props = withDefaults(defineProps<NexxtPickerPanelProps>(), {
51
58
  width: 640,
52
59
  height: 420,
53
60
  hidePreviewBelow: 340,
61
+ preview: true,
54
62
  collapsible: true,
63
+ busy: false,
55
64
  })
56
65
 
57
66
  /** Id of the highlighted item; the list keeps it on a visible item. Drives the preview. */
@@ -83,6 +92,8 @@ defineSlots<{
83
92
  item?(props: { item: NexxtPickerItemData; highlighted: boolean }): unknown
84
93
  /** Replaces the content of the empty search state. */
85
94
  empty?(props: { search: string; clear: () => void }): unknown
95
+ /** Inside the listbox, after the last group, e.g. placeholder rows while `busy`. */
96
+ append?(): unknown
86
97
  }>()
87
98
 
88
99
  const inputField = useTemplateRef<InstanceType<typeof NexxtInputField>>('inputField')
@@ -108,7 +119,7 @@ useResizeObserver(row, ([entry]) => {
108
119
  })
109
120
 
110
121
  const showPreview = computed(
111
- () => rowHeight.value === 0 || rowHeight.value >= props.hidePreviewBelow,
122
+ () => props.preview && (rowHeight.value === 0 || rowHeight.value >= props.hidePreviewBelow),
112
123
  )
113
124
 
114
125
  const highlightedItem = computed(
@@ -233,6 +244,7 @@ const COLUMN_CLASSES = {
233
244
  :empty-description="emptyDescription"
234
245
  :clear-label="clearLabel"
235
246
  :results-announcement="resultsAnnouncement"
247
+ :busy="busy"
236
248
  @select="emit('select', $event)"
237
249
  @highlight="emit('highlight', $event)"
238
250
  @close="emit('close')"
@@ -244,6 +256,9 @@ const COLUMN_CLASSES = {
244
256
  <template v-if="$slots.empty" #empty="scope">
245
257
  <slot name="empty" v-bind="scope" />
246
258
  </template>
259
+ <template v-if="$slots.append" #append>
260
+ <slot name="append" />
261
+ </template>
247
262
  </NexxtPickerList>
248
263
  </div>
249
264
 
@@ -59,6 +59,7 @@
59
59
  "NexxtCountrySelect": "components/organisms/CountrySelect/CountrySelect.vue",
60
60
  "NexxtDatePicker": "components/organisms/DatePicker/DatePicker.vue",
61
61
  "NexxtDropdownButton": "components/organisms/DropdownButton/DropdownButton.vue",
62
+ "NexxtFontPicker": "components/organisms/FontPicker/FontPicker.vue",
62
63
  "NexxtHeader": "components/organisms/Header/Header.vue",
63
64
  "NexxtModal": "components/organisms/Modal/Modal.vue",
64
65
  "NexxtPickerPanel": "components/organisms/PickerPanel/PickerPanel.vue",
@@ -77,6 +78,7 @@
77
78
  "NexxtEditorBorder": "components/editor/molecules/EditorBorder/EditorBorder.vue",
78
79
  "NexxtEditorColor": "components/editor/molecules/EditorColor/EditorColor.vue",
79
80
  "NexxtEditorFlexDirection": "components/editor/molecules/EditorFlexDirection/EditorFlexDirection.vue",
81
+ "NexxtEditorFontSize": "components/editor/molecules/EditorFontSize/EditorFontSize.vue",
80
82
  "NexxtEditorGap": "components/editor/molecules/EditorGap/EditorGap.vue",
81
83
  "NexxtEditorHeadingType": "components/editor/molecules/EditorHeadingType/EditorHeadingType.vue",
82
84
  "NexxtEditorJustifyContent": "components/editor/molecules/EditorJustifyContent/EditorJustifyContent.vue",
package/src/index.ts CHANGED
@@ -93,16 +93,33 @@ export type {
93
93
  EditorMaxWidthMessages,
94
94
  EditorMaxWidthValue,
95
95
  } from './components/editor/molecules/EditorMaxWidth/EditorMaxWidth.vue'
96
- export { EDITOR_LINE_HEIGHT_STEPS } from './components/editor/molecules/EditorLineHeight/EditorLineHeight.vue'
96
+ export {
97
+ EDITOR_LINE_HEIGHT_STEPS,
98
+ EDITOR_TEXT_LINE_HEIGHT_RATIOS,
99
+ } from './components/editor/molecules/EditorLineHeight/EditorLineHeight.vue'
97
100
  export type {
98
101
  EditorLineHeightMessages,
99
102
  EditorLineHeightValue,
103
+ NexxtEditorLineHeightProps,
100
104
  } from './components/editor/molecules/EditorLineHeight/EditorLineHeight.vue'
101
105
  export { EDITOR_LETTER_SPACING_STEPS } from './components/editor/molecules/EditorLetterSpacing/EditorLetterSpacing.vue'
102
106
  export type {
103
107
  EditorLetterSpacingMessages,
104
108
  EditorLetterSpacingValue,
109
+ NexxtEditorLetterSpacingProps,
105
110
  } from './components/editor/molecules/EditorLetterSpacing/EditorLetterSpacing.vue'
111
+ export { EDITOR_FONT_SIZE_STEPS } from './components/editor/molecules/EditorFontSize/EditorFontSize.vue'
112
+ export type {
113
+ EditorFontSizeMessages,
114
+ EditorFontSizeValue,
115
+ NexxtEditorFontSizeProps,
116
+ } from './components/editor/molecules/EditorFontSize/EditorFontSize.vue'
117
+ export type {
118
+ NexxtFontPickerFont,
119
+ NexxtFontPickerInherit,
120
+ NexxtFontPickerMessages,
121
+ NexxtFontPickerProps,
122
+ } from './components/organisms/FontPicker/FontPicker.vue'
106
123
  export { EDITOR_PADDING_STEPS } from './components/editor/molecules/EditorPadding/EditorPadding.vue'
107
124
  export type {
108
125
  EditorPaddingMessages,
@@ -136,6 +153,7 @@ export { default as NexxtEditorBackgroundSize } from './components/editor/molecu
136
153
  export { default as NexxtEditorBorder } from './components/editor/molecules/EditorBorder/EditorBorder.vue'
137
154
  export { default as NexxtEditorColor } from './components/editor/molecules/EditorColor/EditorColor.vue'
138
155
  export { default as NexxtEditorFlexDirection } from './components/editor/molecules/EditorFlexDirection/EditorFlexDirection.vue'
156
+ export { default as NexxtEditorFontSize } from './components/editor/molecules/EditorFontSize/EditorFontSize.vue'
139
157
  export { default as NexxtEditorGap } from './components/editor/molecules/EditorGap/EditorGap.vue'
140
158
  export { default as NexxtEditorHeadingType } from './components/editor/molecules/EditorHeadingType/EditorHeadingType.vue'
141
159
  export { default as NexxtEditorJustifyContent } from './components/editor/molecules/EditorJustifyContent/EditorJustifyContent.vue'
@@ -148,6 +166,7 @@ export { default as NexxtEditorSettingsBlock } from './components/editor/atoms/E
148
166
  export { default as NexxtEditorTextAlign } from './components/editor/molecules/EditorTextAlign/EditorTextAlign.vue'
149
167
  export { default as NexxtEnergyLabel } from './components/atoms/EnergyLabel/EnergyLabel.vue'
150
168
  export { default as NexxtFloatingPanel } from './components/atoms/FloatingPanel/FloatingPanel.vue'
169
+ export { default as NexxtFontPicker } from './components/organisms/FontPicker/FontPicker.vue'
151
170
  export { default as NexxtHeader } from './components/organisms/Header/Header.vue'
152
171
  export { default as NexxtIcon } from './components/atoms/Icon/Icon.vue'
153
172
  export { default as NexxtInfoBlock } from './components/molecules/InfoBlock/InfoBlock.vue'