@synopackageland/ui 0.20.3 → 0.20.5

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 (182) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/LICENSES/THIRD_PARTY.md +2 -32
  3. package/LICENSES/ux-foundation.md +83 -0
  4. package/LICENSES/ux-grid-baserow.md +35 -0
  5. package/LICENSES/ux-grid-teable.md +48 -0
  6. package/README.md +3 -0
  7. package/dist/components/app/app-layout/AppLayout.vue.d.ts +52 -5
  8. package/dist/components/app/app-layout/pageTitle.d.ts +24 -0
  9. package/dist/components/app/app-root/AppRoot.vue.d.ts +9 -0
  10. package/dist/components/app/app-tab-bar/AppTabBar.vue.d.ts +1 -1
  11. package/dist/components/app/aside-panel/AsidePanel.vue.d.ts +69 -0
  12. package/dist/components/app/aside-panel/asidePreference.d.ts +28 -0
  13. package/dist/components/app/section-tabs/SectionTabs.vue.d.ts +22 -4
  14. package/dist/components/composite/about-dialog/AboutDialog.vue.d.ts +1 -1
  15. package/dist/components/composite/adaptive-panel/AdaptivePanel.vue.d.ts +61 -0
  16. package/dist/components/composite/connection-topology/ConnectionTopology.vue.d.ts +1 -1
  17. package/dist/components/composite/data-grid/DataGrid.vue.d.ts +19 -1
  18. package/dist/components/composite/data-grid/labels.d.ts +15 -0
  19. package/dist/components/composite/data-grid/listLayout.d.ts +26 -0
  20. package/dist/components/composite/data-table/DataTable.vue.d.ts +33 -7
  21. package/dist/components/composite/file-picker/FilePicker.vue.d.ts +2 -2
  22. package/dist/components/composite/form/FormGroup.vue.d.ts +1 -1
  23. package/dist/components/composite/form/context.d.ts +13 -0
  24. package/dist/components/composite/form-actions/FormActions.vue.d.ts +6 -2
  25. package/dist/components/composite/mention-list/MentionList.vue.d.ts +2 -2
  26. package/dist/components/composite/overflow-toolbar/OverflowToolbar.vue.d.ts +2 -2
  27. package/dist/components/composite/record-panel/RecordPanel.vue.d.ts +91 -0
  28. package/dist/components/composite/record-panel/recordPanelWidth.d.ts +54 -0
  29. package/dist/components/composite/settings-section/SettingsSection.vue.d.ts +1 -1
  30. package/dist/components/composite/summary-card/SummaryCard.vue.d.ts +1 -1
  31. package/dist/components/composite/tag-editor/TagEditor.vue.d.ts +4 -4
  32. package/dist/components/composite/tree-view/TreeView.vue.d.ts +4 -4
  33. package/dist/components/composite/wizard/Wizard.vue.d.ts +2 -2
  34. package/dist/components/composite/wizard/WizardDialog.vue.d.ts +4 -4
  35. package/dist/components/containers/card/Card.vue.d.ts +1 -1
  36. package/dist/components/containers/card/CardField.vue.d.ts +26 -0
  37. package/dist/components/containers/card-grid/CardCover.vue.d.ts +16 -0
  38. package/dist/components/containers/card-grid/CardGrid.vue.d.ts +1 -1
  39. package/dist/components/containers/card-grid/VirtualCardGrid.vue.d.ts +71 -0
  40. package/dist/components/containers/expandable-item/ExpandableItem.vue.d.ts +1 -1
  41. package/dist/components/containers/fieldset/Fieldset.vue.d.ts +1 -1
  42. package/dist/components/containers/list-detail/ListDetail.vue.d.ts +6 -4
  43. package/dist/components/containers/split-pane/SplitPane.vue.d.ts +1 -1
  44. package/dist/components/feedback/notification/Notification.vue.d.ts +1 -1
  45. package/dist/components/feedback/notification/NotificationProvider.vue.d.ts +1 -1
  46. package/dist/components/feedback/validation-popup/ValidationPopup.vue.d.ts +1 -1
  47. package/dist/components/primitives/breadcrumb/Breadcrumb.vue.d.ts +2 -2
  48. package/dist/components/primitives/color-picker/ColorPicker.vue.d.ts +4 -4
  49. package/dist/components/primitives/combobox/Combobox.vue.d.ts +4 -4
  50. package/dist/components/primitives/context-menu/ContextMenu.vue.d.ts +5 -2
  51. package/dist/components/primitives/context-menu/ContextMenuItems.vue.d.ts +4 -5
  52. package/dist/components/primitives/dialog/Dialog.vue.d.ts +16 -8
  53. package/dist/components/primitives/dropdown-menu/DropdownMenu.vue.d.ts +7 -3
  54. package/dist/components/primitives/dropdown-menu/DropdownMenuItems.vue.d.ts +6 -3
  55. package/dist/components/primitives/dropdown-menu/DropdownMenuSheet.vue.d.ts +28 -0
  56. package/dist/components/primitives/input/Input.vue.d.ts +8 -1
  57. package/dist/components/primitives/input/Textarea.vue.d.ts +1 -1
  58. package/dist/components/primitives/input-steppers/InputSteppers.vue.d.ts +1 -1
  59. package/dist/components/primitives/motion/PushTransition.vue.d.ts +38 -0
  60. package/dist/components/primitives/multiple-select/MultipleSelect.vue.d.ts +4 -4
  61. package/dist/components/primitives/pagination/Pagination.vue.d.ts +22 -9
  62. package/dist/components/primitives/pagination/PaginationSheet.vue.d.ts +27 -0
  63. package/dist/components/primitives/pagination/labels.d.ts +6 -0
  64. package/dist/components/primitives/popover/Popover.vue.d.ts +11 -3
  65. package/dist/components/primitives/popover/floating.d.ts +27 -0
  66. package/dist/components/primitives/popover/overlay.d.ts +36 -0
  67. package/dist/components/primitives/segment-control/SegmentControl.vue.d.ts +4 -1
  68. package/dist/components/primitives/segment-control/context.d.ts +3 -0
  69. package/dist/components/primitives/select/Select.vue.d.ts +4 -0
  70. package/dist/components/primitives/select/internal/ComboboxField.vue.d.ts +6 -5
  71. package/dist/components/primitives/select/internal/SelectSheet.vue.d.ts +42 -0
  72. package/dist/components/primitives/select/internal/types.d.ts +2 -0
  73. package/dist/components/primitives/sheet/BottomSheet.vue.d.ts +69 -0
  74. package/dist/components/primitives/sheet/Sheet.vue.d.ts +13 -5
  75. package/dist/components/primitives/sheet/phone.d.ts +7 -0
  76. package/dist/components/primitives/skeleton/SectionSkeleton.vue.d.ts +25 -4
  77. package/dist/components/primitives/skeleton/Skeleton.vue.d.ts +3 -0
  78. package/dist/components/primitives/superbox-select/SuperboxSelect.vue.d.ts +4 -4
  79. package/dist/components/primitives/tag/Tag.vue.d.ts +2 -2
  80. package/dist/components/primitives/toast/ToastProvider.vue.d.ts +0 -2
  81. package/dist/components/primitives/toast/toast.d.ts +21 -1
  82. package/dist/components/primitives/tooltip/Tooltip.vue.d.ts +8 -3
  83. package/dist/components/primitives/tooltip/tooltipStyle.d.ts +11 -1
  84. package/dist/components/rich-text-editor/RichTextEditor.vue.d.ts +1 -1
  85. package/dist/composables/backDismiss.d.ts +19 -0
  86. package/dist/composables/formControl.d.ts +18 -0
  87. package/dist/composables/phone.d.ts +8 -0
  88. package/dist/composables/phoneSurface.d.ts +35 -0
  89. package/dist/composables/softKeyboard.d.ts +26 -4
  90. package/dist/composables/visualViewport.d.ts +31 -0
  91. package/dist/dnd/autoScroll.d.ts +57 -0
  92. package/dist/dnd/dragKit.d.ts +111 -0
  93. package/dist/dnd/index.d.ts +4 -0
  94. package/dist/dnd/layout.d.ts +57 -0
  95. package/dist/dnd/vue.d.ts +16 -0
  96. package/dist/feedback/StatusSlot.vue.d.ts +24 -0
  97. package/dist/feedback/showAfter.d.ts +15 -0
  98. package/dist/feedback/stackMotion.d.ts +13 -0
  99. package/dist/feedback/timing.d.ts +23 -0
  100. package/dist/grid/cells/draw.d.ts +57 -0
  101. package/dist/grid/cells/images.d.ts +5 -0
  102. package/dist/grid/cells/index.d.ts +7 -0
  103. package/dist/grid/cells/number.d.ts +5 -0
  104. package/dist/grid/cells/registry.d.ts +56 -0
  105. package/dist/grid/cells/renderers.d.ts +8 -0
  106. package/dist/grid/cells/status.d.ts +6 -0
  107. package/dist/grid/cells/types.d.ts +200 -0
  108. package/dist/grid/cells/use.d.ts +7 -0
  109. package/dist/grid/clipboard/copy.d.ts +17 -0
  110. package/dist/grid/clipboard/index.d.ts +4 -0
  111. package/dist/grid/clipboard/proposal.d.ts +35 -0
  112. package/dist/grid/clipboard/tsv.d.ts +14 -0
  113. package/dist/grid/clipboard/write.d.ts +21 -0
  114. package/dist/grid/contracts.d.ts +200 -0
  115. package/dist/grid/edit/cell-status.d.ts +33 -0
  116. package/dist/grid/edit/edit-session.d.ts +97 -0
  117. package/dist/grid/edit/use-grid-edit.d.ts +48 -0
  118. package/dist/grid/focus/editor-style.d.ts +67 -0
  119. package/dist/grid/host/GridHost.vue.d.ts +137 -0
  120. package/dist/grid/host/controller.d.ts +219 -0
  121. package/dist/grid/host/dom.d.ts +10 -0
  122. package/dist/grid/index.d.ts +8 -0
  123. package/dist/grid/range/block.d.ts +30 -0
  124. package/dist/grid/range/fill.d.ts +27 -0
  125. package/dist/grid/range/index.d.ts +2 -0
  126. package/dist/grid/theme.d.ts +61 -0
  127. package/dist/grid-core/auto-scroll.d.ts +67 -0
  128. package/dist/grid-core/column-resize.d.ts +43 -0
  129. package/dist/grid-core/config.d.ts +39 -0
  130. package/dist/grid-core/coordinate.d.ts +64 -0
  131. package/dist/grid-core/drag.d.ts +46 -0
  132. package/dist/grid-core/freeze.d.ts +11 -0
  133. package/dist/grid-core/index.d.ts +17 -0
  134. package/dist/grid-core/keyboard.d.ts +34 -0
  135. package/dist/grid-core/keys.d.ts +38 -0
  136. package/dist/grid-core/lru.d.ts +10 -0
  137. package/dist/grid-core/range.d.ts +28 -0
  138. package/dist/grid-core/region.d.ts +73 -0
  139. package/dist/grid-core/renderer/base.d.ts +92 -0
  140. package/dist/grid-core/renderer/layout.d.ts +129 -0
  141. package/dist/grid-core/selection-controller.d.ts +62 -0
  142. package/dist/grid-core/selection.d.ts +35 -0
  143. package/dist/grid-core/theme.d.ts +81 -0
  144. package/dist/grid-core/types.d.ts +178 -0
  145. package/dist/grid.js +6272 -0
  146. package/dist/i18n/text.d.ts +17 -0
  147. package/dist/index.d.ts +39 -4
  148. package/dist/index.js +23037 -14390
  149. package/dist/interaction/editSession.d.ts +49 -0
  150. package/dist/interaction/focus.d.ts +28 -0
  151. package/dist/interaction/gesture.d.ts +49 -0
  152. package/dist/interaction/ime.d.ts +55 -0
  153. package/dist/interaction/index.d.ts +6 -0
  154. package/dist/interaction/outside.d.ts +40 -0
  155. package/dist/interaction/vue.d.ts +21 -0
  156. package/dist/json-ai-prompt.md +1 -1
  157. package/dist/json-preview/preview.js +16780 -11595
  158. package/dist/json.js +10 -10
  159. package/dist/lib/adaptiveLayout.d.ts +32 -2
  160. package/dist/lib/deviceViewport.d.ts +2 -1
  161. package/dist/lib/motion.d.ts +12 -0
  162. package/dist/reka-runtime.json +15 -12
  163. package/dist/rich-text.js +1 -1
  164. package/dist/theme.css +1 -1
  165. package/dist/themes/dsm7-embedded-reset.css +1 -1
  166. package/dist/themes/dsm7-embedded-theme.css +1 -1
  167. package/dist/themes/dsm7-embedded.css +1 -1
  168. package/dist/themes/dsm7.css +1 -1
  169. package/dist/virtual/cardHeight.d.ts +39 -0
  170. package/dist/virtual/galleryColumns.d.ts +11 -0
  171. package/dist/virtual/layoutMotion.d.ts +30 -0
  172. package/docs/adaptive-layout.md +148 -25
  173. package/docs/app-local-modal.md +1 -1
  174. package/docs/callout.md +22 -1
  175. package/docs/layout-rules.md +14 -0
  176. package/docs/list-detail.md +60 -0
  177. package/docs/mobile-native.md +502 -0
  178. package/docs/release-checks.md +28 -0
  179. package/docs/theme-hooks.md +28 -7
  180. package/docs/ux-foundation.md +133 -0
  181. package/docs/ux-grid.md +217 -0
  182. package/package.json +100 -2
@@ -0,0 +1,61 @@
1
+ import { OverlayMotion } from '../../primitives/popover/overlay';
2
+ type __VLS_Props = {
3
+ /** Controlled open state (`v-model:open`). */
4
+ open?: boolean;
5
+ /** Names the panel: the sheet's title, and the popover's accessible name. */
6
+ title?: string;
7
+ /** A line under the sheet's title. */
8
+ description?: string;
9
+ /** The popover's place beside the trigger. */
10
+ side?: 'top' | 'right' | 'bottom' | 'left';
11
+ align?: 'start' | 'center' | 'end';
12
+ /** The popover's width. */
13
+ width?: string;
14
+ /** The edge the sheet comes from. */
15
+ sheetSide?: 'bottom' | 'right';
16
+ /** The sheet's height (bottom) or width (right). */
17
+ sheetSize?: string;
18
+ /** At this host width and narrower the panel is a sheet. */
19
+ compactBelow?: number;
20
+ /** The element whose width decides; defaults to the enclosing AppRoot, else the document. */
21
+ container?: HTMLElement | null;
22
+ /** The sheet's close button label; the Sheet's localized default otherwise. */
23
+ closeLabel?: string;
24
+ /** Popover motion; `none` inside a grid editor. */
25
+ motion?: OverlayMotion;
26
+ };
27
+ declare var __VLS_11: {}, __VLS_23: {
28
+ compact: boolean;
29
+ }, __VLS_31: {
30
+ compact: boolean;
31
+ };
32
+ type __VLS_Slots = {} & {
33
+ trigger?: (props: typeof __VLS_11) => any;
34
+ } & {
35
+ footer?: (props: typeof __VLS_23) => any;
36
+ } & {
37
+ default?: (props: typeof __VLS_31) => any;
38
+ };
39
+ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
40
+ "update:open": (value: boolean) => any;
41
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
42
+ "onUpdate:open"?: ((value: boolean) => any) | undefined;
43
+ }>, {
44
+ open: boolean;
45
+ width: string;
46
+ side: "top" | "right" | "bottom" | "left";
47
+ align: "start" | "center" | "end";
48
+ motion: OverlayMotion;
49
+ sheetSide: "bottom" | "right";
50
+ sheetSize: string;
51
+ compactBelow: number;
52
+ container: HTMLElement | null;
53
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
54
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
55
+ declare const _default: typeof __VLS_export;
56
+ export default _default;
57
+ type __VLS_WithSlots<T, S> = T & {
58
+ new (): {
59
+ $slots: S;
60
+ };
61
+ };
@@ -39,9 +39,9 @@ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {},
39
39
  "onSelect-lane"?: ((id: string) => any) | undefined;
40
40
  }>, {
41
41
  compact: boolean;
42
+ cards: boolean;
42
43
  selectable: boolean;
43
44
  selectedLane: string | number;
44
- cards: boolean;
45
45
  layout: "stacked" | "columns";
46
46
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
47
47
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -1,5 +1,6 @@
1
1
  import { DataGridLabels } from './labels';
2
2
  import { TableColumnAlign, TableColumnType } from './columnType';
3
+ import { TableColumnListRole } from './listLayout';
3
4
  export type DataGridSort = {
4
5
  key: string;
5
6
  direction: 'asc' | 'desc';
@@ -47,6 +48,8 @@ export type DataGridColumn = {
47
48
  /** Cell slots of an editable column get `editing`, `startEdit`, `stopEdit` and `update`. */
48
49
  editable?: boolean;
49
50
  compare?: (a: unknown, b: unknown, rowA: Record<string, unknown>, rowB: Record<string, unknown>) => number;
51
+ /** Its place in the phone list (see TableColumnListRole); unset, the first column is the title and the next two the subtitle. */
52
+ list?: TableColumnListRole;
50
53
  };
51
54
  export type DataGridColumnWidths = Record<string, number>;
52
55
  export type DataGridGroup = {
@@ -117,6 +120,12 @@ export type DataGridGroupSlotProps = {
117
120
  expanded: boolean;
118
121
  toggle: () => void;
119
122
  };
123
+ export type DataGridSelectionSlotProps = {
124
+ keys: string[];
125
+ rows: Record<string, unknown>[];
126
+ /** Clears the selection, which ends the phone list's select mode. */
127
+ clear: () => void;
128
+ };
120
129
  export type DataGridExpandSlotProps = {
121
130
  row: Record<string, unknown>;
122
131
  index: number;
@@ -205,6 +214,12 @@ type __VLS_Props = {
205
214
  defaultExpandedKeys?: string[];
206
215
  /** Row reordering with drag and drop plus keyboard support. */
207
216
  draggable?: boolean | DataGridDraggable;
217
+ /**
218
+ * `auto` shows a list in an app 640px or narrower (a phone): a row per
219
+ * item with a title, a subtitle and a trailing status, long press to
220
+ * select, and sorting and columns in a sheet. `list` always, `table` never.
221
+ */
222
+ mobileView?: 'auto' | 'list' | 'table';
208
223
  };
209
224
  declare function resetColumns(): void;
210
225
  type __VLS_Slots = {
@@ -216,6 +231,8 @@ type __VLS_Slots = {
216
231
  pageCount: number;
217
232
  }) => unknown;
218
233
  expand?: (props: DataGridExpandSlotProps) => unknown;
234
+ /** Actions in the phone list's selection bar. */
235
+ 'selection-actions'?: (props: DataGridSelectionSlotProps) => unknown;
219
236
  [name: `header-${string}`]: (props: {
220
237
  column: DataGridColumn;
221
238
  }) => unknown;
@@ -303,15 +320,16 @@ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {
303
320
  fill: boolean;
304
321
  footer: boolean;
305
322
  loading: boolean;
323
+ draggable: boolean | DataGridDraggable;
306
324
  group: DataGridGroup | null;
307
325
  loadingText: string;
308
- draggable: boolean | DataGridDraggable;
309
326
  page: number;
310
327
  pageSize: number;
311
328
  selectable: boolean;
312
329
  columnOrder: string[];
313
330
  hiddenColumns: string[];
314
331
  rowKey: string;
332
+ mobileView: "auto" | "list" | "table";
315
333
  resizable: boolean;
316
334
  defaultSort: DataGridSort | null;
317
335
  selectedKeys: string[];
@@ -28,6 +28,15 @@ export type DataGridLabels = {
28
28
  pageSize?: string;
29
29
  /** Beside a column the chooser lists that the width leaves out. */
30
30
  hiddenByWidth?: string;
31
+ /** The phone list's selection bar. */
32
+ selected?: (count: number) => string;
33
+ /** Ends the phone list's select mode and clears the selection. */
34
+ cancelSelection?: string;
35
+ /** The phone list's sort and columns sheet, and its button. */
36
+ viewOptions?: string;
37
+ sortBy?: string;
38
+ ascending?: string;
39
+ descending?: string;
31
40
  };
32
41
  /** `DataGridLabels` after the defaults were merged in: every label is present. */
33
42
  export type ResolvedDataGridLabels = DataGridLabels & {
@@ -40,6 +49,12 @@ export type ResolvedDataGridLabels = DataGridLabels & {
40
49
  noMatch: string;
41
50
  pageSize: string;
42
51
  hiddenByWidth: string;
52
+ selected: (count: number) => string;
53
+ cancelSelection: string;
54
+ viewOptions: string;
55
+ sortBy: string;
56
+ ascending: string;
57
+ descending: string;
43
58
  };
44
59
  export declare const defaultDataGridLabels: ResolvedDataGridLabels;
45
60
  /** Locale-aware chrome; the exported English defaults remain available to callers. */
@@ -0,0 +1,26 @@
1
+ import { TableColumnType } from './columnType';
2
+ /**
3
+ * A column's place in the phone list (DataGrid and DataTable at 640px or
4
+ * narrower): `title` is the row's first line, `subtitle` joins the second
5
+ * line (two at most), `trailing` sits at the row's end (a status badge, the
6
+ * actions), `none` leaves the column out of the list.
7
+ */
8
+ export type TableColumnListRole = 'title' | 'subtitle' | 'trailing' | 'none';
9
+ type ListColumn = {
10
+ key: string;
11
+ type?: TableColumnType;
12
+ list?: TableColumnListRole;
13
+ };
14
+ export type ListLayout<T extends ListColumn> = {
15
+ title: T | undefined;
16
+ subtitle: T[];
17
+ trailing: T[];
18
+ };
19
+ export declare const MAX_LIST_SUBTITLE_COLUMNS = 2;
20
+ /**
21
+ * Places the shown columns in the list. Without `list` roles the first column
22
+ * is the title, the next two make the subtitle and an `actions` column trails.
23
+ * A column marked `subtitle` replaces the unmarked ones on the second line.
24
+ */
25
+ export declare function listLayout<T extends ListColumn>(columns: readonly T[]): ListLayout<T>;
26
+ export {};
@@ -1,4 +1,5 @@
1
1
  import { TableColumnAlign, TableColumnType } from '../data-grid/columnType';
2
+ import { TableColumnListRole } from '../data-grid/listLayout';
2
3
  export type DataTableColumn = {
3
4
  key: string;
4
5
  label: string;
@@ -11,6 +12,8 @@ export type DataTableColumn = {
11
12
  minWidth?: string | number;
12
13
  /** Overrides the table's `resizable` for this column. */
13
14
  resizable?: boolean;
15
+ /** Its place in the phone list (see TableColumnListRole); unset, the first column is the title and the next two the subtitle. */
16
+ list?: TableColumnListRole;
14
17
  };
15
18
  type __VLS_Props = {
16
19
  columns: DataTableColumn[];
@@ -18,8 +21,13 @@ type __VLS_Props = {
18
21
  rowKey?: string;
19
22
  emptyText?: string;
20
23
  compact?: boolean;
21
- /** Simple tables become fully labeled cards in mobile mode unless set to table. `container` picks cards from the measured width (see `containerBreakpoint`) whatever the app presentation. */
22
- mobileView?: 'auto' | 'cards' | 'table' | 'container';
24
+ /**
25
+ * `auto` shows a list in mobile mode (an app 640px or narrower): a row per
26
+ * item with a title, a subtitle and a trailing column. `list` and `cards`
27
+ * (fully labeled cards) always, `table` never. `container` picks cards from
28
+ * the measured width (see `containerBreakpoint`) whatever the app presentation.
29
+ */
30
+ mobileView?: 'auto' | 'list' | 'cards' | 'table' | 'container';
23
31
  /** Width in px under which `mobileView="container"` shows cards. */
24
32
  containerBreakpoint?: number;
25
33
  /**
@@ -39,11 +47,23 @@ declare var __VLS_2: `cell-${string}`, __VLS_3: {
39
47
  row: Record<string, unknown>;
40
48
  value: unknown;
41
49
  column: DataTableColumn;
42
- }, __VLS_12: `cell-${string}`, __VLS_13: {
50
+ }, __VLS_6: `cell-${string}`, __VLS_7: {
51
+ row: Record<string, unknown>;
52
+ value: unknown;
53
+ column: DataTableColumn;
54
+ }, __VLS_10: `cell-${string}`, __VLS_11: {
55
+ row: Record<string, unknown>;
56
+ value: unknown;
57
+ column: DataTableColumn;
58
+ }, __VLS_14: `cell-${string}`, __VLS_15: {
59
+ row: Record<string, unknown>;
60
+ value: unknown;
61
+ column: DataTableColumn;
62
+ }, __VLS_24: `cell-${string}`, __VLS_25: {
43
63
  row: Record<string, unknown>;
44
64
  value: unknown;
45
65
  column: DataTableColumn;
46
- }, __VLS_16: `cell-${string}`, __VLS_17: {
66
+ }, __VLS_28: `cell-${string}`, __VLS_29: {
47
67
  row: Record<string, unknown>;
48
68
  value: unknown;
49
69
  column: DataTableColumn;
@@ -51,9 +71,15 @@ declare var __VLS_2: `cell-${string}`, __VLS_3: {
51
71
  type __VLS_Slots = {} & {
52
72
  [K in NonNullable<typeof __VLS_2>]?: (props: typeof __VLS_3) => any;
53
73
  } & {
54
- [K in NonNullable<typeof __VLS_12>]?: (props: typeof __VLS_13) => any;
74
+ [K in NonNullable<typeof __VLS_6>]?: (props: typeof __VLS_7) => any;
75
+ } & {
76
+ [K in NonNullable<typeof __VLS_10>]?: (props: typeof __VLS_11) => any;
77
+ } & {
78
+ [K in NonNullable<typeof __VLS_14>]?: (props: typeof __VLS_15) => any;
79
+ } & {
80
+ [K in NonNullable<typeof __VLS_24>]?: (props: typeof __VLS_25) => any;
55
81
  } & {
56
- [K in NonNullable<typeof __VLS_16>]?: (props: typeof __VLS_17) => any;
82
+ [K in NonNullable<typeof __VLS_28>]?: (props: typeof __VLS_29) => any;
57
83
  };
58
84
  declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
59
85
  "update:columnWidths": (value: Record<string, number>) => any;
@@ -64,7 +90,7 @@ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {},
64
90
  compact: boolean;
65
91
  columnWidths: Record<string, number>;
66
92
  rowKey: string;
67
- mobileView: "auto" | "cards" | "table" | "container";
93
+ mobileView: "auto" | "list" | "cards" | "table" | "container";
68
94
  containerBreakpoint: number;
69
95
  resizable: boolean;
70
96
  stateKey: string;
@@ -38,13 +38,13 @@ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {},
38
38
  }>, {
39
39
  variant: "dropzone" | "compact";
40
40
  disabled: boolean;
41
+ paste: boolean;
41
42
  modelValue: File[];
42
43
  multiple: boolean;
43
- paste: boolean;
44
+ showList: boolean;
44
45
  maxFiles: number;
45
46
  maxSize: number;
46
47
  directory: boolean;
47
- showList: boolean;
48
48
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
49
49
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
50
50
  declare const _default: typeof __VLS_export;
@@ -1,5 +1,5 @@
1
1
  type __VLS_Props = {
2
- /** Indent levels (multiples of 28px) or any CSS length. */
2
+ /** Indent levels (28px, or 12px on a touch phone) or any CSS length. */
3
3
  indent?: number | string;
4
4
  /** Disables every control in the group, usually `!parentOn`. */
5
5
  disabled?: boolean;
@@ -18,6 +18,19 @@ export type FormContext = {
18
18
  validateMessageDisplayMode: ValidateMessageDisplayMode;
19
19
  registerField: (field: FormFieldHandle) => void;
20
20
  unregisterField: (field: FormFieldHandle) => void;
21
+ /** Text entry fields, kept in document order for their keyboard's Enter key. */
22
+ registerTextControl?: (control: FormTextControl) => void;
23
+ unregisterTextControl?: (control: FormTextControl) => void;
24
+ /** `done` for the form's last active text field, `next` for the others. */
25
+ enterKeyHint?: (control: FormTextControl) => 'next' | 'done' | undefined;
26
+ /** The active text field after this one, if any. */
27
+ nextTextControl?: (control: FormTextControl) => HTMLElement | undefined;
28
+ };
29
+ /** One text entry field of a Form (an Input), for the Next / Done keyboard key. */
30
+ export type FormTextControl = {
31
+ element: () => HTMLElement | null;
32
+ /** False while the field is disabled or read-only: it is skipped. */
33
+ active: () => boolean;
21
34
  };
22
35
  /** One registered FormItem, as used by `Form.validate()` / `resetFields()` / `commit()`. */
23
36
  export type FormFieldHandle = {
@@ -4,7 +4,11 @@ type __VLS_Props = {
4
4
  labelWidth?: string;
5
5
  /** Indents the actions past the shared label column (`--ui-label-column`). */
6
6
  inset?: boolean;
7
- /** Keeps the actions in view at the bottom of a long scrolling form, over a divider. */
7
+ /**
8
+ * Keeps the actions in view at the bottom of a long scrolling form, over a
9
+ * divider, and above the on-screen keyboard. On by default on a phone, off
10
+ * elsewhere; `false` turns it off on a phone too.
11
+ */
8
12
  sticky?: boolean;
9
13
  };
10
14
  declare var __VLS_1: {};
@@ -12,9 +16,9 @@ type __VLS_Slots = {} & {
12
16
  default?: (props: typeof __VLS_1) => any;
13
17
  };
14
18
  declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
15
- align: "start" | "end";
16
19
  sticky: boolean;
17
20
  inset: boolean;
21
+ align: "start" | "end";
18
22
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
19
23
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
20
24
  declare const _default: typeof __VLS_export;
@@ -15,12 +15,12 @@ type __VLS_Props = {
15
15
  boundary?: HTMLElement;
16
16
  };
17
17
  declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
18
- choose: (person: MentionCandidate) => any;
19
18
  close: () => any;
19
+ choose: (person: MentionCandidate) => any;
20
20
  hover: (index: number) => any;
21
21
  }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
22
- onChoose?: ((person: MentionCandidate) => any) | undefined;
23
22
  onClose?: (() => any) | undefined;
23
+ onChoose?: ((person: MentionCandidate) => any) | undefined;
24
24
  onHover?: ((index: number) => any) | undefined;
25
25
  }>, {
26
26
  loading: boolean;
@@ -9,7 +9,7 @@ type __VLS_Props = {
9
9
  };
10
10
  declare var __VLS_1: {}, __VLS_4: string, __VLS_5: {
11
11
  item: OverflowToolbarItem;
12
- }, __VLS_35: {}, __VLS_37: {}, __VLS_124: {
12
+ }, __VLS_35: {}, __VLS_37: {}, __VLS_126: {
13
13
  item: OverflowToolbarItem;
14
14
  };
15
15
  type __VLS_Slots = {} & {
@@ -21,7 +21,7 @@ type __VLS_Slots = {} & {
21
21
  } & {
22
22
  right?: (props: typeof __VLS_37) => any;
23
23
  } & {
24
- 'overflow-item'?: (props: typeof __VLS_124) => any;
24
+ 'overflow-item'?: (props: typeof __VLS_126) => any;
25
25
  };
26
26
  declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
27
27
  clickItem: (item: OverflowToolbarMenuEntry | OverflowToolbarItem) => any;
@@ -0,0 +1,91 @@
1
+ /** `swipe` is any other way the phone sheet was let go: a drag, or Back. */
2
+ export type RecordPanelCloseReason = 'escape' | 'button' | 'outside' | 'swipe';
3
+ type __VLS_Props = {
4
+ /** Controlled open state (`v-model:open`). */
5
+ open?: boolean;
6
+ /** The panel's accessible name (the record's title, or "Record"), already translated. */
7
+ label?: string;
8
+ /** The main column's width (`v-model:width`); the stored or default width otherwise. */
9
+ width?: number;
10
+ /** Remembers the dragged width in localStorage under this key (one per App). */
11
+ storageKey?: string;
12
+ defaultWidth?: number;
13
+ minWidth?: number;
14
+ /** The view kept visible beside the panel, however wide it is dragged. */
15
+ minMainWidth?: number;
16
+ /** Shows the `secondary` slot (comments) as a column on the far side; the panel grows by `secondaryWidth`. On the phone sheet it is a page pushed over the body, and its Back emits `update:secondaryOpen`. */
17
+ secondaryOpen?: boolean;
18
+ secondaryWidth?: number;
19
+ /** The pushed comments page's title on the phone sheet, already translated. */
20
+ secondaryLabel?: string;
21
+ /** The element the panel docks to and is clipped by; it must be positioned. The parent element otherwise. */
22
+ container?: HTMLElement | null;
23
+ /** At this host width and narrower the panel is a bottom sheet. */
24
+ compactBelow?: number;
25
+ /** The phone sheet's footer: Previous and Next record, disabled where false. Without both, no footer. */
26
+ hasPrevious?: boolean;
27
+ hasNext?: boolean;
28
+ /** Where focus goes on close when the element that had it at open is gone (a re-rendered card). */
29
+ returnFocus?: () => HTMLElement | null | undefined;
30
+ /** `field`: the first editable field (not on touch or the phone sheet); `panel`: the panel itself; `none`: focus stays. */
31
+ initialFocus?: 'field' | 'panel' | 'none';
32
+ /** No body padding; the caller lays the body out. */
33
+ flush?: boolean;
34
+ closeLabel?: string;
35
+ resizeLabel?: string;
36
+ };
37
+ type __VLS_Slots = {
38
+ header?: (props: SlotProps) => unknown;
39
+ default?: (props: SlotProps) => unknown;
40
+ secondary?: (props: SlotProps) => unknown;
41
+ };
42
+ type SlotProps = {
43
+ compact: boolean;
44
+ width: number;
45
+ padding: number;
46
+ close: () => void;
47
+ };
48
+ declare function close(reason?: RecordPanelCloseReason): void;
49
+ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {
50
+ close: typeof close;
51
+ compact: import('vue').ComputedRef<boolean>;
52
+ width: import('vue').ComputedRef<number>;
53
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
54
+ next: () => any;
55
+ close: (reason: RecordPanelCloseReason) => any;
56
+ "update:open": (value: boolean) => any;
57
+ "update:width": (value: number) => any;
58
+ "update:secondaryOpen": (value: boolean) => any;
59
+ resizeEnd: (value: number) => any;
60
+ previous: () => any;
61
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
62
+ onNext?: (() => any) | undefined;
63
+ onClose?: ((reason: RecordPanelCloseReason) => any) | undefined;
64
+ "onUpdate:open"?: ((value: boolean) => any) | undefined;
65
+ "onUpdate:width"?: ((value: number) => any) | undefined;
66
+ "onUpdate:secondaryOpen"?: ((value: boolean) => any) | undefined;
67
+ onResizeEnd?: ((value: number) => any) | undefined;
68
+ onPrevious?: (() => any) | undefined;
69
+ }>, {
70
+ open: boolean;
71
+ width: number;
72
+ initialFocus: "field" | "panel" | "none";
73
+ minWidth: number;
74
+ compactBelow: number;
75
+ container: HTMLElement | null;
76
+ defaultWidth: number;
77
+ minMainWidth: number;
78
+ secondaryOpen: boolean;
79
+ secondaryWidth: number;
80
+ hasPrevious: boolean;
81
+ hasNext: boolean;
82
+ returnFocus: () => HTMLElement | null | undefined;
83
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
84
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
85
+ declare const _default: typeof __VLS_export;
86
+ export default _default;
87
+ type __VLS_WithSlots<T, S> = T & {
88
+ new (): {
89
+ $slots: S;
90
+ };
91
+ };
@@ -0,0 +1,54 @@
1
+ /**
2
+ * @license MIT
3
+ * The width rule (560 default, 320 minimum, 240 of the view kept beside the
4
+ * panel, the secondary column added on top and capped at the host) is ported
5
+ * from Teable's record side panel
6
+ * (packages/sdk/src/components/expand-record/Panel.tsx:20-26, 83-88 at
7
+ * f8be01fad).
8
+ *
9
+ * Copyright (c) 2023-2025 Teable, Inc.
10
+ *
11
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
12
+ * of this software and associated documentation files (the "Software"), to deal
13
+ * in the Software without restriction, including without limitation the rights
14
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15
+ * copies of the Software, and to permit persons to whom the Software is
16
+ * furnished to do so, subject to the following conditions:
17
+ *
18
+ * The above copyright notice and this permission notice shall be included in all
19
+ * copies or substantial portions of the Software.
20
+ *
21
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
27
+ * SOFTWARE.
28
+ */
29
+ export declare const RECORD_PANEL_DEFAULT_WIDTH = 560;
30
+ export declare const RECORD_PANEL_MIN_WIDTH = 320;
31
+ /** However wide the panel is dragged, this much of the view stays visible beside it. */
32
+ export declare const RECORD_PANEL_MIN_MAIN_WIDTH = 240;
33
+ /** The comments (or other secondary) column, added on the panel's far side. */
34
+ export declare const RECORD_PANEL_SECONDARY_WIDTH = 320;
35
+ /** Body padding switches from 24 to 48 at this body width (Teable `getBodyPadding`). */
36
+ export declare const RECORD_PANEL_WIDE_BODY = 640;
37
+ export interface RecordPanelBounds {
38
+ minWidth: number;
39
+ minMainWidth: number;
40
+ }
41
+ /** The widest the main column may be in a host; unbounded while the host is not measured. */
42
+ export declare function maxPanelWidth(hostWidth: number, bounds: RecordPanelBounds): number;
43
+ /** The main column's width: the stored width clamped to the host. */
44
+ export declare function clampPanelWidth(width: number, hostWidth: number, bounds: RecordPanelBounds): number;
45
+ /**
46
+ * True when the host cannot hold a docked panel with the view beside it, or is
47
+ * phone-narrow: the panel becomes a full-screen sheet. An unmeasured host
48
+ * (zero) stays docked.
49
+ */
50
+ export declare function panelNeedsSheet(hostWidth: number, compactBelow: number, bounds: RecordPanelBounds): boolean;
51
+ /** 24 px below a 640 px body, 48 px from there. */
52
+ export declare function bodyPadding(bodyWidth: number): number;
53
+ export declare function readStoredWidth(key: string | undefined): number | undefined;
54
+ export declare function writeStoredWidth(key: string | undefined, width: number): void;
@@ -31,8 +31,8 @@ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {},
31
31
  }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
32
32
  "onUpdate:open"?: ((value: boolean) => any) | undefined;
33
33
  }>, {
34
- defaultOpen: boolean;
35
34
  open: boolean;
35
+ defaultOpen: boolean;
36
36
  collapsible: boolean;
37
37
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
38
38
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -33,8 +33,8 @@ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {},
33
33
  disabled: boolean;
34
34
  error: string;
35
35
  figures: SummaryCardFigure[];
36
- note: string;
37
36
  state: string;
37
+ note: string;
38
38
  stateTone: SummaryCardTone;
39
39
  wide: boolean;
40
40
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
@@ -13,14 +13,14 @@ type __VLS_Props = {
13
13
  };
14
14
  declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
15
15
  error: (error: unknown) => any;
16
- "update:modelValue": (value: string[]) => any;
17
- open: () => any;
18
16
  close: () => any;
17
+ open: () => any;
18
+ "update:modelValue": (value: string[]) => any;
19
19
  }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
20
20
  onError?: ((error: unknown) => any) | undefined;
21
- "onUpdate:modelValue"?: ((value: string[]) => any) | undefined;
22
- onOpen?: (() => any) | undefined;
23
21
  onClose?: (() => any) | undefined;
22
+ onOpen?: (() => any) | undefined;
23
+ "onUpdate:modelValue"?: ((value: string[]) => any) | undefined;
24
24
  }>, {
25
25
  disabled: boolean;
26
26
  modelValue: string[];
@@ -43,11 +43,11 @@ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {
43
43
  collapseNode: (id: string) => void;
44
44
  }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
45
45
  select: (node: TreeNode) => any;
46
- "update:modelValue": (value: string | string[] | undefined) => any;
47
46
  load: (payload: {
48
47
  node: TreeNode;
49
48
  children: TreeNode[];
50
49
  }) => any;
50
+ "update:modelValue": (value: string | string[] | undefined) => any;
51
51
  check: (payload: TreeViewCheckPayload) => any;
52
52
  "update:checkedKeys": (value: string[]) => any;
53
53
  "update:expanded": (value: string[]) => any;
@@ -62,11 +62,11 @@ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {
62
62
  collapse: (node: TreeNode) => any;
63
63
  }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
64
64
  onSelect?: ((node: TreeNode) => any) | undefined;
65
- "onUpdate:modelValue"?: ((value: string | string[] | undefined) => any) | undefined;
66
65
  onLoad?: ((payload: {
67
66
  node: TreeNode;
68
67
  children: TreeNode[];
69
68
  }) => any) | undefined;
69
+ "onUpdate:modelValue"?: ((value: string | string[] | undefined) => any) | undefined;
70
70
  onCheck?: ((payload: TreeViewCheckPayload) => any) | undefined;
71
71
  "onUpdate:checkedKeys"?: ((value: string[]) => any) | undefined;
72
72
  "onUpdate:expanded"?: ((value: string[]) => any) | undefined;
@@ -80,10 +80,10 @@ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {
80
80
  "onUpdate:nodes"?: ((value: TreeNode[]) => any) | undefined;
81
81
  onCollapse?: ((node: TreeNode) => any) | undefined;
82
82
  }>, {
83
+ expanded: string[];
84
+ draggable: boolean | TreeViewDraggableConfig;
83
85
  multiple: boolean;
84
86
  checkedKeys: string[];
85
- draggable: boolean | TreeViewDraggableConfig;
86
- expanded: string[];
87
87
  showIcons: boolean;
88
88
  checkable: boolean;
89
89
  defaultCheckedKeys: string[];
@@ -57,16 +57,16 @@ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {
57
57
  cancel: typeof cancel;
58
58
  }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
59
59
  cancel: () => any;
60
+ finished: () => any;
60
61
  "update:activeStepKey": (key: string) => any;
61
62
  "next-step": (change: WizardStepChange) => any;
62
63
  "previous-step": (change: WizardStepChange) => any;
63
- finished: () => any;
64
64
  }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
65
65
  onCancel?: (() => any) | undefined;
66
+ onFinished?: (() => any) | undefined;
66
67
  "onUpdate:activeStepKey"?: ((key: string) => any) | undefined;
67
68
  "onNext-step"?: ((change: WizardStepChange) => any) | undefined;
68
69
  "onPrevious-step"?: ((change: WizardStepChange) => any) | undefined;
69
- onFinished?: (() => any) | undefined;
70
70
  }>, {
71
71
  footer: WizardFooterConfig;
72
72
  fit: boolean;
@@ -23,19 +23,19 @@ type __VLS_Slots = {} & {
23
23
  default?: (props: typeof __VLS_20) => any;
24
24
  };
25
25
  declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
26
- "update:open": (value: boolean) => any;
27
26
  cancel: () => any;
27
+ "update:open": (value: boolean) => any;
28
28
  finished: () => any;
29
29
  }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
30
- "onUpdate:open"?: ((value: boolean) => any) | undefined;
31
30
  onCancel?: (() => any) | undefined;
31
+ "onUpdate:open"?: ((value: boolean) => any) | undefined;
32
32
  onFinished?: (() => any) | undefined;
33
33
  }>, {
34
- defaultOpen: boolean;
35
34
  open: boolean;
35
+ defaultOpen: boolean;
36
36
  showClose: boolean;
37
- closeOnFinish: boolean;
38
37
  confirmClose: boolean;
38
+ closeOnFinish: boolean;
39
39
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
40
40
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
41
41
  declare const _default: typeof __VLS_export;