@formicoidea/labre-core 1.1.0 → 2.0.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 (190) hide show
  1. package/architecture/code.c4 +37 -34
  2. package/architecture/likec4.config.json +3 -3
  3. package/dist/_pkgs/affine-block-surface/extensions/reading-toolbar.js +12 -12
  4. package/dist/_pkgs/affine-components/context-menu/menu-renderer.d.ts +3 -1
  5. package/dist/_pkgs/affine-components/context-menu/menu-renderer.js +9 -1
  6. package/dist/_pkgs/affine-components/context-menu/menu.d.ts +7 -0
  7. package/dist/_pkgs/affine-components/context-menu/menu.js +5 -0
  8. package/dist/_pkgs/affine-components/context-menu/sub-menu.d.ts +16 -1
  9. package/dist/_pkgs/affine-components/context-menu/sub-menu.js +32 -5
  10. package/dist/_pkgs/affine-components/highlight-dropdown-menu/highlight-duotone-icon.js +8 -8
  11. package/dist/_pkgs/affine-components/highlight-dropdown-menu/text-duotone-icon.js +11 -11
  12. package/dist/_pkgs/affine-database-block/configs/slash-menu.js +14 -6
  13. package/dist/_pkgs/affine-database-block/database-block-styles.js +4 -3
  14. package/dist/_pkgs/affine-database-block/database-block.js +6 -18
  15. package/dist/_pkgs/affine-database-block/database-dnd-preview-block.js +5 -1
  16. package/dist/_pkgs/affine-database-block/detail-panel/block-renderer.js +5 -2
  17. package/dist/_pkgs/affine-database-block/detail-panel/note-renderer.js +3 -2
  18. package/dist/_pkgs/affine-database-block/external-data-source.d.ts +10 -0
  19. package/dist/_pkgs/affine-database-block/external-data-source.js +24 -0
  20. package/dist/_pkgs/affine-database-block/properties/created-time/define.js +3 -1
  21. package/dist/_pkgs/affine-database-block/properties/link/cell-renderer.js +3 -2
  22. package/dist/_pkgs/affine-database-block/properties/link/define.js +3 -1
  23. package/dist/_pkgs/affine-database-block/properties/rich-text/define.js +3 -1
  24. package/dist/_pkgs/affine-database-block/properties/text/hosted.js +1 -0
  25. package/dist/_pkgs/affine-database-block/properties/title/define.js +3 -1
  26. package/dist/_pkgs/affine-database-block/properties/title/hosted.js +1 -0
  27. package/dist/_pkgs/affine-database-block/service/new-row-menu.d.ts +1 -1
  28. package/dist/_pkgs/affine-database-block/service/new-row-menu.js +1 -1
  29. package/dist/_pkgs/affine-database-block/translations.d.ts +11 -0
  30. package/dist/_pkgs/affine-database-block/translations.js +57 -0
  31. package/dist/_pkgs/affine-database-block/views/index.d.ts +7 -9
  32. package/dist/_pkgs/affine-database-block/views/index.js +7 -10
  33. package/dist/_pkgs/affine-database-engine/core/common/properties.js +7 -7
  34. package/dist/_pkgs/affine-database-engine/core/common/property-menu.d.ts +18 -2
  35. package/dist/_pkgs/affine-database-engine/core/common/property-menu.js +78 -27
  36. package/dist/_pkgs/affine-database-engine/core/data-source/base.d.ts +11 -0
  37. package/dist/_pkgs/affine-database-engine/core/data-source/base.js +3 -0
  38. package/dist/_pkgs/affine-database-engine/core/detail/detail.js +8 -5
  39. package/dist/_pkgs/affine-database-engine/core/detail/field.js +14 -7
  40. package/dist/_pkgs/affine-database-engine/core/filter/add-filter.js +4 -2
  41. package/dist/_pkgs/affine-database-engine/core/filter/filter-fn/boolean.js +7 -4
  42. package/dist/_pkgs/affine-database-engine/core/filter/filter-fn/create.d.ts +9 -1
  43. package/dist/_pkgs/affine-database-engine/core/filter/filter-fn/create.js +2 -0
  44. package/dist/_pkgs/affine-database-engine/core/filter/filter-fn/date.js +7 -4
  45. package/dist/_pkgs/affine-database-engine/core/filter/filter-fn/multi-tag.js +17 -8
  46. package/dist/_pkgs/affine-database-engine/core/filter/filter-fn/number.js +6 -6
  47. package/dist/_pkgs/affine-database-engine/core/filter/filter-fn/string.js +19 -12
  48. package/dist/_pkgs/affine-database-engine/core/filter/filter-fn/tag.js +9 -4
  49. package/dist/_pkgs/affine-database-engine/core/filter/filter-fn/unknown.js +7 -4
  50. package/dist/_pkgs/affine-database-engine/core/filter/literal/define.js +6 -4
  51. package/dist/_pkgs/affine-database-engine/core/filter/literal/matcher.d.ts +2 -1
  52. package/dist/_pkgs/affine-database-engine/core/filter/literal/matcher.js +3 -2
  53. package/dist/_pkgs/affine-database-engine/core/filter/literal/types.d.ts +4 -1
  54. package/dist/_pkgs/affine-database-engine/core/filter/literal/types.js +1 -1
  55. package/dist/_pkgs/affine-database-engine/core/group-by/define.js +11 -9
  56. package/dist/_pkgs/affine-database-engine/core/group-by/group-title.js +16 -6
  57. package/dist/_pkgs/affine-database-engine/core/group-by/locate-row.d.ts +16 -0
  58. package/dist/_pkgs/affine-database-engine/core/group-by/locate-row.js +32 -0
  59. package/dist/_pkgs/affine-database-engine/core/group-by/renderer/date-group.js +10 -3
  60. package/dist/_pkgs/affine-database-engine/core/group-by/setting.d.ts +2 -0
  61. package/dist/_pkgs/affine-database-engine/core/group-by/setting.js +40 -28
  62. package/dist/_pkgs/affine-database-engine/core/group-by/trait.d.ts +3 -0
  63. package/dist/_pkgs/affine-database-engine/core/group-by/trait.js +8 -0
  64. package/dist/_pkgs/affine-database-engine/core/group-by/types.d.ts +3 -1
  65. package/dist/_pkgs/affine-database-engine/core/group-by/types.js +1 -1
  66. package/dist/_pkgs/affine-database-engine/core/property/types.d.ts +7 -0
  67. package/dist/_pkgs/affine-database-engine/core/property/types.js +1 -1
  68. package/dist/_pkgs/affine-database-engine/core/sort/add-sort.js +3 -1
  69. package/dist/_pkgs/affine-database-engine/core/statistics/any.js +43 -21
  70. package/dist/_pkgs/affine-database-engine/core/statistics/checkbox.js +29 -14
  71. package/dist/_pkgs/affine-database-engine/core/statistics/number.js +54 -31
  72. package/dist/_pkgs/affine-database-engine/core/statistics/types.d.ts +8 -0
  73. package/dist/_pkgs/affine-database-engine/core/statistics/types.js +2 -1
  74. package/dist/_pkgs/affine-database-engine/core/utils/wording.d.ts +20 -1
  75. package/dist/_pkgs/affine-database-engine/core/utils/wording.js +24 -0
  76. package/dist/_pkgs/affine-database-engine/core/view-manager/property.d.ts +7 -0
  77. package/dist/_pkgs/affine-database-engine/core/view-manager/property.js +29 -5
  78. package/dist/_pkgs/affine-database-engine/core/view-manager/single-view.d.ts +14 -0
  79. package/dist/_pkgs/affine-database-engine/core/view-manager/single-view.js +11 -0
  80. package/dist/_pkgs/affine-database-engine/property-presets/checkbox/define.js +3 -1
  81. package/dist/_pkgs/affine-database-engine/property-presets/date/define.js +3 -1
  82. package/dist/_pkgs/affine-database-engine/property-presets/multi-select/define.js +3 -1
  83. package/dist/_pkgs/affine-database-engine/property-presets/number/define.js +3 -1
  84. package/dist/_pkgs/affine-database-engine/property-presets/number/utils/formats.d.ts +3 -0
  85. package/dist/_pkgs/affine-database-engine/property-presets/number/utils/formats.js +56 -9
  86. package/dist/_pkgs/affine-database-engine/property-presets/progress/define.js +3 -1
  87. package/dist/_pkgs/affine-database-engine/property-presets/select/define.js +3 -1
  88. package/dist/_pkgs/affine-database-engine/property-presets/text/define.js +3 -1
  89. package/dist/_pkgs/affine-database-engine/translations.d.ts +133 -5
  90. package/dist/_pkgs/affine-database-engine/translations.js +625 -9
  91. package/dist/_pkgs/affine-database-engine/view-presets/convert.js +0 -28
  92. package/dist/_pkgs/affine-database-engine/view-presets/effect.js +0 -2
  93. package/dist/_pkgs/affine-database-engine/view-presets/flat/flat-converts.js +2 -4
  94. package/dist/_pkgs/affine-database-engine/view-presets/flat/flat-view-ui.d.ts +57 -0
  95. package/dist/_pkgs/affine-database-engine/view-presets/flat/flat-view-ui.js +113 -4
  96. package/dist/_pkgs/affine-database-engine/view-presets/gallery/gallery-view.js +2 -1
  97. package/dist/_pkgs/affine-database-engine/view-presets/index.d.ts +0 -2
  98. package/dist/_pkgs/affine-database-engine/view-presets/index.js +0 -3
  99. package/dist/_pkgs/affine-database-engine/view-presets/kanban/kanban-view-manager.js +2 -0
  100. package/dist/_pkgs/affine-database-engine/view-presets/kanban/mobile/group.js +7 -5
  101. package/dist/_pkgs/affine-database-engine/view-presets/kanban/mobile/kanban-view-ui-logic.d.ts +5 -0
  102. package/dist/_pkgs/affine-database-engine/view-presets/kanban/mobile/kanban-view-ui-logic.js +25 -3
  103. package/dist/_pkgs/affine-database-engine/view-presets/kanban/mobile/menu.js +12 -6
  104. package/dist/_pkgs/affine-database-engine/view-presets/kanban/pc/controller/selection.d.ts +8 -0
  105. package/dist/_pkgs/affine-database-engine/view-presets/kanban/pc/controller/selection.js +35 -12
  106. package/dist/_pkgs/affine-database-engine/view-presets/kanban/pc/group.js +7 -5
  107. package/dist/_pkgs/affine-database-engine/view-presets/kanban/pc/header.js +5 -1
  108. package/dist/_pkgs/affine-database-engine/view-presets/kanban/pc/kanban-view-ui-logic.d.ts +5 -0
  109. package/dist/_pkgs/affine-database-engine/view-presets/kanban/pc/kanban-view-ui-logic.js +8 -4
  110. package/dist/_pkgs/affine-database-engine/view-presets/kanban/pc/menu.js +12 -6
  111. package/dist/_pkgs/affine-database-engine/view-presets/list/list-view.js +2 -1
  112. package/dist/_pkgs/affine-database-engine/view-presets/table/mobile/column-header.js +6 -4
  113. package/dist/_pkgs/affine-database-engine/view-presets/table/mobile/group.js +6 -5
  114. package/dist/_pkgs/affine-database-engine/view-presets/table/mobile/header.js +2 -2
  115. package/dist/_pkgs/affine-database-engine/view-presets/table/mobile/table-view-ui-logic.d.ts +4 -3
  116. package/dist/_pkgs/affine-database-engine/view-presets/table/mobile/table-view-ui-logic.js +29 -5
  117. package/dist/_pkgs/affine-database-engine/view-presets/table/pc/controller/clipboard.js +6 -2
  118. package/dist/_pkgs/affine-database-engine/view-presets/table/pc/controller/selection.js +2 -0
  119. package/dist/_pkgs/affine-database-engine/view-presets/table/pc/group.js +6 -5
  120. package/dist/_pkgs/affine-database-engine/view-presets/table/pc/header/column-header.js +11 -7
  121. package/dist/_pkgs/affine-database-engine/view-presets/table/pc/header/database-header-column.js +16 -12
  122. package/dist/_pkgs/affine-database-engine/view-presets/table/pc/header/number-format-bar.js +4 -2
  123. package/dist/_pkgs/affine-database-engine/view-presets/table/pc/menu.js +9 -6
  124. package/dist/_pkgs/affine-database-engine/view-presets/table/pc/table-view-ui-logic.d.ts +8 -1
  125. package/dist/_pkgs/affine-database-engine/view-presets/table/pc/table-view-ui-logic.js +29 -7
  126. package/dist/_pkgs/affine-database-engine/view-presets/table/pc-virtual/controller/clipboard.js +6 -2
  127. package/dist/_pkgs/affine-database-engine/view-presets/table/pc-virtual/controller/selection.js +2 -0
  128. package/dist/_pkgs/affine-database-engine/view-presets/table/pc-virtual/group/bottom/group-footer.js +5 -2
  129. package/dist/_pkgs/affine-database-engine/view-presets/table/pc-virtual/group/bottom/stats/column-stats-column.d.ts +1 -1
  130. package/dist/_pkgs/affine-database-engine/view-presets/table/pc-virtual/group/bottom/stats/column-stats-column.js +14 -6
  131. package/dist/_pkgs/affine-database-engine/view-presets/table/pc-virtual/group/top/group-header.js +5 -2
  132. package/dist/_pkgs/affine-database-engine/view-presets/table/pc-virtual/group/top/group-title.js +5 -3
  133. package/dist/_pkgs/affine-database-engine/view-presets/table/pc-virtual/group/top/header/column-header.js +17 -10
  134. package/dist/_pkgs/affine-database-engine/view-presets/table/pc-virtual/group/top/header/number-format-bar.js +4 -2
  135. package/dist/_pkgs/affine-database-engine/view-presets/table/pc-virtual/group/top/header/single-column-header.js +20 -14
  136. package/dist/_pkgs/affine-database-engine/view-presets/table/pc-virtual/row/menu.js +9 -6
  137. package/dist/_pkgs/affine-database-engine/view-presets/table/pc-virtual/table-view-ui-logic.d.ts +6 -1
  138. package/dist/_pkgs/affine-database-engine/view-presets/table/pc-virtual/table-view-ui-logic.js +30 -3
  139. package/dist/_pkgs/affine-database-engine/view-presets/table/stats/column-stats-column.d.ts +1 -1
  140. package/dist/_pkgs/affine-database-engine/view-presets/table/stats/column-stats-column.js +14 -6
  141. package/dist/_pkgs/affine-database-engine/view-presets/table/table-view-manager.js +2 -0
  142. package/dist/_pkgs/affine-database-engine/widget-presets/quick-setting-bar/filter/condition-view.d.ts +2 -0
  143. package/dist/_pkgs/affine-database-engine/widget-presets/quick-setting-bar/filter/condition-view.js +13 -6
  144. package/dist/_pkgs/affine-database-engine/widget-presets/quick-setting-bar/filter/group-panel-view.js +20 -13
  145. package/dist/_pkgs/affine-database-engine/widget-presets/quick-setting-bar/filter/root-panel-view.js +10 -5
  146. package/dist/_pkgs/affine-database-engine/widget-presets/quick-setting-bar/sort/root-panel.js +8 -5
  147. package/dist/_pkgs/affine-database-engine/widget-presets/tools/presets/search/search.js +2 -2
  148. package/dist/_pkgs/affine-database-engine/widget-presets/tools/presets/table-add-row/add-row.d.ts +6 -0
  149. package/dist/_pkgs/affine-database-engine/widget-presets/tools/presets/table-add-row/add-row.js +49 -4
  150. package/dist/_pkgs/affine-database-engine/widget-presets/tools/presets/view-options/view-settings.d.ts +3 -3
  151. package/dist/_pkgs/affine-database-engine/widget-presets/tools/presets/view-options/view-settings.js +3 -3
  152. package/dist/_pkgs/affine-database-engine/widget-presets/views-bar/views-view.js +5 -0
  153. package/dist/_pkgs/affine-database-view-block/configs/slash-menu.js +6 -3
  154. package/dist/_pkgs/affine-database-view-block/data-view-block.js +5 -4
  155. package/dist/_pkgs/affine-fragment-doc-title/doc-title.d.ts +3 -2
  156. package/dist/_pkgs/affine-fragment-doc-title/doc-title.js +3 -2
  157. package/dist/_pkgs/affine-shared/services/data-source-picker-service.d.ts +31 -0
  158. package/dist/_pkgs/affine-widget-edgeless-zoom-toolbar/index.js +26 -26
  159. package/dist/_pkgs/affine-widget-keyboard-toolbar/icons.js +98 -98
  160. package/dist/_pkgs/affine-widget-page-dragging-area/index.js +10 -10
  161. package/dist/_pkgs/affine-widget-viewport-overlay/index.js +13 -13
  162. package/package.json +1 -1
  163. package/dist/_pkgs/affine-database-engine/view-presets/calendar/calendar-view-manager.d.ts +0 -70
  164. package/dist/_pkgs/affine-database-engine/view-presets/calendar/calendar-view-manager.js +0 -449
  165. package/dist/_pkgs/affine-database-engine/view-presets/calendar/define.d.ts +0 -10
  166. package/dist/_pkgs/affine-database-engine/view-presets/calendar/define.js +0 -29
  167. package/dist/_pkgs/affine-database-engine/view-presets/calendar/effect.d.ts +0 -1
  168. package/dist/_pkgs/affine-database-engine/view-presets/calendar/effect.js +0 -4
  169. package/dist/_pkgs/affine-database-engine/view-presets/calendar/index.d.ts +0 -6
  170. package/dist/_pkgs/affine-database-engine/view-presets/calendar/index.js +0 -6
  171. package/dist/_pkgs/affine-database-engine/view-presets/calendar/layout.d.ts +0 -37
  172. package/dist/_pkgs/affine-database-engine/view-presets/calendar/layout.js +0 -138
  173. package/dist/_pkgs/affine-database-engine/view-presets/calendar/pc/actions.d.ts +0 -7
  174. package/dist/_pkgs/affine-database-engine/view-presets/calendar/pc/actions.js +0 -64
  175. package/dist/_pkgs/affine-database-engine/view-presets/calendar/pc/dnd.d.ts +0 -32
  176. package/dist/_pkgs/affine-database-engine/view-presets/calendar/pc/dnd.js +0 -159
  177. package/dist/_pkgs/affine-database-engine/view-presets/calendar/pc/effect.d.ts +0 -1
  178. package/dist/_pkgs/affine-database-engine/view-presets/calendar/pc/effect.js +0 -7
  179. package/dist/_pkgs/affine-database-engine/view-presets/calendar/pc/hit-test.d.ts +0 -1
  180. package/dist/_pkgs/affine-database-engine/view-presets/calendar/pc/hit-test.js +0 -28
  181. package/dist/_pkgs/affine-database-engine/view-presets/calendar/pc/styles.d.ts +0 -1
  182. package/dist/_pkgs/affine-database-engine/view-presets/calendar/pc/styles.js +0 -707
  183. package/dist/_pkgs/affine-database-engine/view-presets/calendar/pc/view.d.ts +0 -89
  184. package/dist/_pkgs/affine-database-engine/view-presets/calendar/pc/view.js +0 -849
  185. package/dist/_pkgs/affine-database-engine/view-presets/calendar/renderer.d.ts +0 -2
  186. package/dist/_pkgs/affine-database-engine/view-presets/calendar/renderer.js +0 -8
  187. package/dist/_pkgs/affine-database-engine/view-presets/calendar/source.d.ts +0 -8
  188. package/dist/_pkgs/affine-database-engine/view-presets/calendar/source.js +0 -3
  189. package/dist/_pkgs/affine-database-engine/view-presets/calendar/types.d.ts +0 -79
  190. package/dist/_pkgs/affine-database-engine/view-presets/calendar/types.js +0 -1
@@ -1537,13 +1537,13 @@ model {
1537
1537
  link https://github.com/formicoidea/blocksuite-labre/tree/blocksuite-labre-main/packages/affine/database/engine
1538
1538
  metadata {
1539
1539
  path 'packages/affine/database/engine'
1540
- files '351'
1540
+ files '338'
1541
1541
  }
1542
1542
  core = folder 'core/' {
1543
1543
  link https://github.com/formicoidea/blocksuite-labre/tree/blocksuite-labre-main/packages/affine/database/engine/src/core
1544
1544
  metadata {
1545
1545
  path 'packages/affine/database/engine/src/core'
1546
- files '166'
1546
+ files '167'
1547
1547
  }
1548
1548
  }
1549
1549
  property-presets = folder 'property-presets/' {
@@ -1564,7 +1564,7 @@ model {
1564
1564
  link https://github.com/formicoidea/blocksuite-labre/tree/blocksuite-labre-main/packages/affine/database/engine/src/view-presets
1565
1565
  metadata {
1566
1566
  path 'packages/affine/database/engine/src/view-presets'
1567
- files '128'
1567
+ files '114'
1568
1568
  }
1569
1569
  }
1570
1570
  widget-presets = folder 'widget-presets/' {
@@ -3728,7 +3728,7 @@ model {
3728
3728
  features.database.block -[uses]-> features.inlines.preset '3 imports'
3729
3729
  features.database.block -[uses]-> features.inlines.reference '1 import'
3730
3730
  features.database.block -[uses]-> features.rich-text '2 imports, 2 type-only'
3731
- features.database.block -[uses]-> features.shared '43 imports, 8 type-only'
3731
+ features.database.block -[uses]-> features.shared '45 imports, 8 type-only'
3732
3732
  features.database.block -[uses]-> features.widgets.drag-handle '1 import'
3733
3733
  features.database.block -[uses]-> features.widgets.slash-menu '2 imports, 1 type-only'
3734
3734
  features.database.block -[uses]-> framework.global_ '16 imports'
@@ -3744,14 +3744,14 @@ model {
3744
3744
  features.database.editor -[uses]-> framework.global_ '3 imports'
3745
3745
  features.database.editor -[uses]-> framework.std '8 imports, 5 type-only'
3746
3746
  features.database.editor -[uses]-> framework.store '1 import'
3747
- features.database.engine -[uses]-> features.components '74 imports, 4 type-only'
3748
- features.database.engine -[uses]-> features.shared '84 imports, 42 type-only'
3749
- features.database.engine -[uses]-> framework.global_ '97 imports, 5 type-only'
3750
- features.database.engine -[uses]-> framework.std '82 imports, 11 type-only'
3751
- features.database.engine -[uses]-> framework.store '13 imports, 4 type-only'
3747
+ features.database.engine -[uses]-> features.components '75 imports, 4 type-only'
3748
+ features.database.engine -[uses]-> features.shared '98 imports, 44 type-only'
3749
+ features.database.engine -[uses]-> framework.global_ '96 imports, 5 type-only'
3750
+ features.database.engine -[uses]-> framework.std '81 imports, 9 type-only'
3751
+ features.database.engine -[uses]-> framework.store '12 imports, 4 type-only'
3752
3752
  features.database.engine -[uses]-> model_.model_ '7 imports, 4 type-only'
3753
3753
  features.database.view-block -[uses]-> features.components '5 imports'
3754
- features.database.view-block -[uses]-> features.database.block '3 imports'
3754
+ features.database.view-block -[uses]-> features.database.block '5 imports'
3755
3755
  features.database.view-block -[uses]-> features.database.engine '11 imports, 4 type-only'
3756
3756
  features.database.view-block -[uses]-> features.ext-loader '2 imports'
3757
3757
  features.database.view-block -[uses]-> features.shared '6 imports'
@@ -5697,7 +5697,8 @@ model {
5697
5697
  features.database.block.components -[imports]-> framework.global_.lit '2 imports'
5698
5698
  features.database.block.components -[imports]-> framework.std.src '3 imports'
5699
5699
  features.database.block.components -[imports]-> framework.store.src '1 import, 1 type-only'
5700
- features.database.block.configs -[imports]-> features.database.block.src '3 imports'
5700
+ features.database.block.configs -[imports]-> features.database.block.src '4 imports'
5701
+ features.database.block.configs -[imports]-> features.database.engine.src '1 import'
5701
5702
  features.database.block.configs -[imports]-> features.database.engine.view-presets '1 import'
5702
5703
  features.database.block.configs -[imports]-> features.shared.commands '1 import'
5703
5704
  features.database.block.configs -[imports]-> features.shared.services '1 import'
@@ -5706,12 +5707,13 @@ model {
5706
5707
  features.database.block.configs -[imports]-> framework.std.src '1 import, 1 type-only'
5707
5708
  features.database.block.context -[imports]-> framework.global_.di '1 import'
5708
5709
  features.database.block.context -[imports]-> framework.std.src '1 import, 1 type-only'
5710
+ features.database.block.detail-panel -[imports]-> features.database.block.src '1 import'
5709
5711
  features.database.block.detail-panel -[imports]-> features.database.block.utils '1 import'
5710
5712
  features.database.block.detail-panel -[imports]-> features.database.engine.src '2 imports, 2 type-only'
5711
5713
  features.database.block.detail-panel -[imports]-> features.database.engine.view-presets '1 import, 1 type-only'
5712
5714
  features.database.block.detail-panel -[imports]-> features.inlines.preset.src '1 import'
5713
5715
  features.database.block.detail-panel -[imports]-> features.shared.consts '1 import'
5714
- features.database.block.detail-panel -[imports]-> features.shared.services '1 import'
5716
+ features.database.block.detail-panel -[imports]-> features.shared.services '2 imports'
5715
5717
  features.database.block.detail-panel -[imports]-> features.shared.types '1 import, 1 type-only'
5716
5718
  features.database.block.detail-panel -[imports]-> features.shared.utils '1 import'
5717
5719
  features.database.block.detail-panel -[imports]-> framework.global_.lit '2 imports'
@@ -5719,7 +5721,7 @@ model {
5719
5721
  features.database.block.detail-panel -[imports]-> framework.store.src '1 import, 1 type-only'
5720
5722
  features.database.block.detail-panel -[imports]-> model_.model_.src '1 import'
5721
5723
  features.database.block.properties -[imports]-> features.database.block.context '5 imports'
5722
- features.database.block.properties -[imports]-> features.database.block.src '2 imports, 2 type-only'
5724
+ features.database.block.properties -[imports]-> features.database.block.src '6 imports, 2 type-only'
5723
5725
  features.database.block.properties -[imports]-> features.database.block.utils '3 imports'
5724
5726
  features.database.block.properties -[imports]-> features.database.engine.property-presets '6 imports'
5725
5727
  features.database.block.properties -[imports]-> features.database.engine.src '14 imports, 2 type-only'
@@ -5758,12 +5760,12 @@ model {
5758
5760
  features.database.block.src -[imports]-> features.database.block.views_ '1 import'
5759
5761
  features.database.block.src -[imports]-> features.database.engine.property-presets '1 import'
5760
5762
  features.database.block.src -[imports]-> features.database.engine.src '7 imports, 2 type-only'
5761
- features.database.block.src -[imports]-> features.database.engine.view-presets '2 imports'
5763
+ features.database.block.src -[imports]-> features.database.engine.view-presets '1 import'
5762
5764
  features.database.block.src -[imports]-> features.database.engine.widget-presets '1 import'
5763
5765
  features.database.block.src -[imports]-> features.ext-loader.src '2 imports'
5764
5766
  features.database.block.src -[imports]-> features.shared.commands '1 import'
5765
5767
  features.database.block.src -[imports]-> features.shared.consts '1 import'
5766
- features.database.block.src -[imports]-> features.shared.services '6 imports, 2 type-only'
5768
+ features.database.block.src -[imports]-> features.shared.services '7 imports, 2 type-only'
5767
5769
  features.database.block.src -[imports]-> features.shared.theme '1 import'
5768
5770
  features.database.block.src -[imports]-> features.shared.utils '4 imports, 1 type-only'
5769
5771
  features.database.block.src -[imports]-> features.widgets.drag-handle.src '1 import'
@@ -5831,10 +5833,10 @@ model {
5831
5833
  features.database.engine.core -[imports]-> features.components.color-picker '2 imports'
5832
5834
  features.database.engine.core -[imports]-> features.components.context-menu '18 imports, 4 type-only'
5833
5835
  features.database.engine.core -[imports]-> features.components.icons_ '1 import'
5834
- features.database.engine.core -[imports]-> features.components.src '1 import'
5835
- features.database.engine.core -[imports]-> features.database.engine.src '7 imports'
5836
+ features.database.engine.core -[imports]-> features.components.src '2 imports'
5837
+ features.database.engine.core -[imports]-> features.database.engine.src '23 imports'
5836
5838
  features.database.engine.core -[imports]-> features.database.engine.view-presets '5 imports, 3 type-only'
5837
- features.database.engine.core -[imports]-> features.shared.services '13 imports, 6 type-only'
5839
+ features.database.engine.core -[imports]-> features.shared.services '18 imports, 10 type-only'
5838
5840
  features.database.engine.core -[imports]-> features.shared.theme '5 imports'
5839
5841
  features.database.engine.core -[imports]-> features.shared.types '12 imports, 12 type-only'
5840
5842
  features.database.engine.core -[imports]-> features.shared.utils '10 imports, 8 type-only'
@@ -5843,14 +5845,15 @@ model {
5843
5845
  features.database.engine.core -[imports]-> framework.global_.env '3 imports'
5844
5846
  features.database.engine.core -[imports]-> framework.global_.exceptions '3 imports'
5845
5847
  features.database.engine.core -[imports]-> framework.global_.lit '19 imports'
5846
- features.database.engine.core -[imports]-> framework.std.src '27 imports, 7 type-only'
5848
+ features.database.engine.core -[imports]-> framework.std.src '27 imports, 6 type-only'
5847
5849
  features.database.engine.core -[imports]-> framework.store.src '6 imports, 2 type-only'
5848
5850
  features.database.engine.core -[imports]-> model_.model_.src '6 imports, 3 type-only'
5849
5851
  features.database.engine.property-presets -[imports]-> features.components.context-menu '3 imports'
5850
5852
  features.database.engine.property-presets -[imports]-> features.components.date-picker '1 import'
5851
5853
  features.database.engine.property-presets -[imports]-> features.components.portal '1 import'
5852
5854
  features.database.engine.property-presets -[imports]-> features.database.engine.core '50 imports, 2 type-only'
5853
- features.database.engine.property-presets -[imports]-> features.shared.services '1 import'
5855
+ features.database.engine.property-presets -[imports]-> features.database.engine.src '8 imports'
5856
+ features.database.engine.property-presets -[imports]-> features.shared.services '2 imports, 1 type-only'
5854
5857
  features.database.engine.property-presets -[imports]-> features.shared.theme '1 import'
5855
5858
  features.database.engine.property-presets -[imports]-> framework.global_.env '2 imports'
5856
5859
  features.database.engine.property-presets -[imports]-> framework.global_.gfx '1 import'
@@ -5860,29 +5863,28 @@ model {
5860
5863
  features.database.engine.src -[imports]-> features.database.engine.view-presets '1 import'
5861
5864
  features.database.engine.src -[imports]-> features.database.engine.widget-presets '1 import'
5862
5865
  features.database.engine.src -[imports]-> features.shared.services '1 import, 1 type-only'
5863
- features.database.engine.view-presets -[imports]-> features.components.context-menu '32 imports'
5864
- features.database.engine.view-presets -[imports]-> features.components.src '3 imports'
5865
- features.database.engine.view-presets -[imports]-> features.database.engine.core '225 imports, 68 type-only'
5866
+ features.database.engine.view-presets -[imports]-> features.components.context-menu '30 imports'
5867
+ features.database.engine.view-presets -[imports]-> features.components.src '5 imports'
5868
+ features.database.engine.view-presets -[imports]-> features.database.engine.core '228 imports, 60 type-only'
5866
5869
  features.database.engine.view-presets -[imports]-> features.database.engine.property-presets '7 imports'
5867
- features.database.engine.view-presets -[imports]-> features.database.engine.src '11 imports'
5870
+ features.database.engine.view-presets -[imports]-> features.database.engine.src '31 imports'
5868
5871
  features.database.engine.view-presets -[imports]-> features.database.engine.widget-presets '2 imports'
5869
- features.database.engine.view-presets -[imports]-> features.shared.services '3 imports'
5872
+ features.database.engine.view-presets -[imports]-> features.shared.services '10 imports'
5870
5873
  features.database.engine.view-presets -[imports]-> features.shared.theme '10 imports'
5871
- features.database.engine.view-presets -[imports]-> features.shared.types '2 imports, 2 type-only'
5872
- features.database.engine.view-presets -[imports]-> features.shared.utils '17 imports, 12 type-only'
5873
- features.database.engine.view-presets -[imports]-> framework.global_.di '1 import'
5874
+ features.database.engine.view-presets -[imports]-> features.shared.types '1 import, 1 type-only'
5875
+ features.database.engine.view-presets -[imports]-> features.shared.utils '15 imports, 10 type-only'
5874
5876
  features.database.engine.view-presets -[imports]-> framework.global_.disposable '3 imports'
5875
5877
  features.database.engine.view-presets -[imports]-> framework.global_.env '1 import'
5876
5878
  features.database.engine.view-presets -[imports]-> framework.global_.exceptions '2 imports'
5877
5879
  features.database.engine.view-presets -[imports]-> framework.global_.gfx '1 import'
5878
5880
  features.database.engine.view-presets -[imports]-> framework.global_.lit '38 imports'
5879
- features.database.engine.view-presets -[imports]-> framework.std.src '43 imports, 4 type-only'
5880
- features.database.engine.view-presets -[imports]-> framework.store.src '5 imports, 2 type-only'
5881
+ features.database.engine.view-presets -[imports]-> framework.std.src '42 imports, 3 type-only'
5882
+ features.database.engine.view-presets -[imports]-> framework.store.src '4 imports, 2 type-only'
5881
5883
  features.database.engine.widget-presets -[imports]-> features.components.context-menu '12 imports'
5882
- features.database.engine.widget-presets -[imports]-> features.database.engine.core '91 imports, 24 type-only'
5883
- features.database.engine.widget-presets -[imports]-> features.database.engine.src '9 imports'
5884
+ features.database.engine.widget-presets -[imports]-> features.database.engine.core '95 imports, 24 type-only'
5885
+ features.database.engine.widget-presets -[imports]-> features.database.engine.src '13 imports'
5884
5886
  features.database.engine.widget-presets -[imports]-> features.database.engine.view-presets '2 imports, 2 type-only'
5885
- features.database.engine.widget-presets -[imports]-> features.shared.services '4 imports, 1 type-only'
5887
+ features.database.engine.widget-presets -[imports]-> features.shared.services '8 imports, 1 type-only'
5886
5888
  features.database.engine.widget-presets -[imports]-> features.shared.theme '5 imports'
5887
5889
  features.database.engine.widget-presets -[imports]-> framework.global_.di '1 import'
5888
5890
  features.database.engine.widget-presets -[imports]-> framework.global_.env '3 imports'
@@ -5896,6 +5898,7 @@ model {
5896
5898
  features.database.view-block.columns -[imports]-> features.database.block.src '1 import'
5897
5899
  features.database.view-block.columns -[imports]-> features.database.engine.property-presets '1 import'
5898
5900
  features.database.view-block.columns -[imports]-> features.database.engine.src '1 import, 1 type-only'
5901
+ features.database.view-block.configs -[imports]-> features.database.block.src '1 import'
5899
5902
  features.database.view-block.configs -[imports]-> features.database.engine.src '1 import'
5900
5903
  features.database.view-block.configs -[imports]-> features.database.view-block.src '1 import, 1 type-only'
5901
5904
  features.database.view-block.configs -[imports]-> features.shared.services '1 import'
@@ -5906,7 +5909,7 @@ model {
5906
5909
  features.database.view-block.src -[imports]-> features.components.icons_ '1 import'
5907
5910
  features.database.view-block.src -[imports]-> features.components.peek '1 import'
5908
5911
  features.database.view-block.src -[imports]-> features.components.toast '1 import'
5909
- features.database.view-block.src -[imports]-> features.database.block.src '2 imports'
5912
+ features.database.view-block.src -[imports]-> features.database.block.src '3 imports'
5910
5913
  features.database.view-block.src -[imports]-> features.database.engine.property-presets '1 import'
5911
5914
  features.database.view-block.src -[imports]-> features.database.engine.src '3 imports, 1 type-only'
5912
5915
  features.database.view-block.src -[imports]-> features.database.engine.widget-presets '1 import'
@@ -1,3 +1,3 @@
1
- {
2
- "name": "blocksuite"
3
- }
1
+ {
2
+ "name": "blocksuite"
3
+ }
@@ -58,18 +58,18 @@ const READ_LABEL_FALLBACK = 'Read this component';
58
58
  * Drawn inline like its neighbours: this package does not depend on
59
59
  * `@blocksuite/icons` and one glyph is not worth a new dependency.
60
60
  */
61
- const ReadIcon = html `<svg
62
- width="20"
63
- height="20"
64
- viewBox="0 0 24 24"
65
- fill="none"
66
- stroke="currentColor"
67
- stroke-width="2"
68
- stroke-linecap="round"
69
- stroke-linejoin="round"
70
- >
71
- <path d="M2 12s3.5-6 10-6 10 6 10 6-3.5 6-10 6-10-6-10-6z" />
72
- <circle cx="12" cy="12" r="3" />
61
+ const ReadIcon = html `<svg
62
+ width="20"
63
+ height="20"
64
+ viewBox="0 0 24 24"
65
+ fill="none"
66
+ stroke="currentColor"
67
+ stroke-width="2"
68
+ stroke-linecap="round"
69
+ stroke-linejoin="round"
70
+ >
71
+ <path d="M2 12s3.5-6 10-6 10 6 10 6-3.5 6-10 6-10-6-10-6z" />
72
+ <circle cx="12" cy="12" r="3" />
73
73
  </svg>`;
74
74
  /** The command this module drives. Spelled once. */
75
75
  const ELEMENT_READ_ID = 'element.read';
@@ -1,6 +1,6 @@
1
1
  import type { BlockStdScope } from '../../std/index.js';
2
2
  import { ShadowlessElement } from '../../std/index.js';
3
- import { type Middleware, type ReferenceElement } from '@floating-ui/dom';
3
+ import { type Middleware, type Placement, type ReferenceElement } from '@floating-ui/dom';
4
4
  import type { MenuFocusable } from './focusable.js';
5
5
  import { Menu, type MenuConfig, type MenuOptions } from './menu.js';
6
6
  import type { MenuComponentInterface } from './types.js';
@@ -61,6 +61,8 @@ export declare const createPopup: (target: PopupTarget, content: HTMLElement, op
61
61
  onClose?: () => void;
62
62
  middleware?: Array<Middleware | null | undefined | false>;
63
63
  container?: HTMLElement;
64
+ /** Told where the popup was placed, at each placement. */
65
+ onPlaced?: (placement: Placement) => void;
64
66
  }) => () => void;
65
67
  export type MenuHandler = {
66
68
  close: () => void;
@@ -527,7 +527,8 @@ export const createPopup = (target, content, options) => {
527
527
  computePosition(target.targetRect, content, {
528
528
  middleware: options?.middleware ?? [shift({ crossAxis: true })],
529
529
  })
530
- .then(({ x, y }) => {
530
+ .then(({ x, y, placement }) => {
531
+ options?.onPlaced?.(placement);
531
532
  Object.assign(content.style, {
532
533
  left: `${x}px`,
533
534
  top: `${y}px`,
@@ -620,6 +621,13 @@ export const popMenu = (target, props) => {
620
621
  onClose: () => {
621
622
  menu.close();
622
623
  },
624
+ // A menu placed beside its anchor opens its sub-menus on that side too.
625
+ onPlaced: placement => {
626
+ if (placement.startsWith('left'))
627
+ menu.side = 'left';
628
+ else if (placement.startsWith('right'))
629
+ menu.side = 'right';
630
+ },
623
631
  middleware: props.middleware ?? [
624
632
  autoPlacement({
625
633
  allowedPlacements: [
@@ -19,9 +19,16 @@ export type MenuOptions = {
19
19
  };
20
20
  type MenuOpenListener = (menu: Menu) => (() => void) | void;
21
21
  export declare function onMenuOpen(listener: MenuOpenListener): () => void;
22
+ /** The side of its parent a sub-menu opened on. */
23
+ export type SubMenuSide = 'left' | 'right';
22
24
  export declare class Menu {
23
25
  options: MenuOptions;
24
26
  private _cleanupFns;
27
+ /**
28
+ * Set once a sub-menu is placed; its own sub-menus open on the same side
29
+ * (`nestedSubMenuPosition`). Undefined for a root menu.
30
+ */
31
+ side: SubMenuSide | undefined;
25
32
  private readonly _currentFocused$;
26
33
  private readonly _subMenu$;
27
34
  closed: boolean;
@@ -18,6 +18,11 @@ export class Menu {
18
18
  constructor(options) {
19
19
  this.options = options;
20
20
  this._cleanupFns = [];
21
+ /**
22
+ * Set once a sub-menu is placed; its own sub-menus open on the same side
23
+ * (`nestedSubMenuPosition`). Undefined for a root menu.
24
+ */
25
+ this.side = undefined;
21
26
  this._currentFocused$ = signal();
22
27
  this._subMenu$ = signal();
23
28
  this.closed = false;
@@ -1,6 +1,6 @@
1
1
  import { type TemplateResult } from 'lit';
2
2
  import { MenuFocusable } from './focusable.js';
3
- import { Menu, type MenuOptions } from './menu.js';
3
+ import { Menu, type MenuOptions, type SubMenuSide } from './menu.js';
4
4
  export type MenuSubMenuData = {
5
5
  content: () => TemplateResult;
6
6
  options: MenuOptions;
@@ -24,6 +24,21 @@ export declare const subMenuMiddleware: {
24
24
  options?: any;
25
25
  fn: (state: import("@floating-ui/dom").MiddlewareState) => import("@floating-ui/core").MiddlewareReturn | Promise<import("@floating-ui/core").MiddlewareReturn>;
26
26
  }[];
27
+ /**
28
+ * Where a nested sub-menu opens: on the side its parent opened on, right for
29
+ * a menu's first sub-menu, the other side only when it does not fit there.
30
+ * `autoPlacement` took the side with the most room, so a third level drawn
31
+ * from a menu sitting right of the page's middle went left, back over the
32
+ * first menu, instead of beside the second (#571).
33
+ */
34
+ export declare function nestedSubMenuPosition(parentSide: SubMenuSide | undefined): {
35
+ placement: "left-start" | "right-start";
36
+ middleware: {
37
+ name: string;
38
+ options?: any;
39
+ fn: (state: import("@floating-ui/dom").MiddlewareState) => import("@floating-ui/core").MiddlewareReturn | Promise<import("@floating-ui/core").MiddlewareReturn>;
40
+ }[];
41
+ };
27
42
  export declare class MenuSubMenu extends MenuFocusable {
28
43
  createTime: number;
29
44
  connectedCallback(): void;
@@ -34,7 +34,7 @@ var __runInitializers = (this && this.__runInitializers) || function (thisArg, i
34
34
  };
35
35
  import { IS_MOBILE } from '../../global/env/index.js';
36
36
  import { ArrowRightSmallIcon } from '@blocksuite/icons/lit';
37
- import { autoPlacement, autoUpdate, computePosition, offset, } from '@floating-ui/dom';
37
+ import { autoPlacement, autoUpdate, computePosition, flip, offset, shift, } from '@floating-ui/dom';
38
38
  import { html, nothing } from 'lit';
39
39
  import { property } from 'lit/decorators.js';
40
40
  import { classMap } from 'lit/directives/class-map.js';
@@ -50,6 +50,27 @@ export const subMenuPlacements = autoPlacement({
50
50
  allowedPlacements: ['right-start', 'left-start', 'right-end', 'left-end'],
51
51
  });
52
52
  export const subMenuMiddleware = [subMenuOffset, subMenuPlacements];
53
+ /**
54
+ * Where a nested sub-menu opens: on the side its parent opened on, right for
55
+ * a menu's first sub-menu, the other side only when it does not fit there.
56
+ * `autoPlacement` took the side with the most room, so a third level drawn
57
+ * from a menu sitting right of the page's middle went left, back over the
58
+ * first menu, instead of beside the second (#571).
59
+ */
60
+ export function nestedSubMenuPosition(parentSide) {
61
+ const side = parentSide ?? 'right';
62
+ const other = side === 'right' ? 'left' : 'right';
63
+ return {
64
+ placement: `${side}-start`,
65
+ middleware: [
66
+ subMenuOffset,
67
+ flip({
68
+ fallbackPlacements: [`${other}-start`, `${side}-end`, `${other}-end`],
69
+ }),
70
+ shift({ padding: 8 }),
71
+ ],
72
+ };
73
+ }
53
74
  let MenuSubMenu = (() => {
54
75
  let _classSuper = MenuFocusable;
55
76
  let _data_decorators;
@@ -90,7 +111,13 @@ let MenuSubMenu = (() => {
90
111
  const focus = this.menu.currentFocused$.value;
91
112
  const menu = new Menu({
92
113
  ...this.data.options,
114
+ // An entry picked at any depth completes the whole chain: this menu's
115
+ // own completion runs too, so a pick two levels down closes the root
116
+ // as a pick one level down always did (#571: "Link an existing source"
117
+ // → database → source left the creation popover open, and the next
118
+ // click only closed it).
93
119
  onComplete: () => {
120
+ this.menu.options.onComplete?.();
94
121
  this.menu.close();
95
122
  },
96
123
  onClose: () => {
@@ -101,11 +128,11 @@ let MenuSubMenu = (() => {
101
128
  },
102
129
  });
103
130
  this.menu.menuElement.parentElement?.append(menu.menuElement);
131
+ const position = nestedSubMenuPosition(this.menu.side);
104
132
  const unsub = autoUpdate(this, menu.menuElement, () => {
105
- computePosition(this, menu.menuElement, {
106
- middleware: subMenuMiddleware,
107
- })
108
- .then(({ x, y }) => {
133
+ computePosition(this, menu.menuElement, position)
134
+ .then(({ x, y, placement }) => {
135
+ menu.side = placement.startsWith('left') ? 'left' : 'right';
109
136
  menu.menuElement.style.left = `${x}px`;
110
137
  menu.menuElement.style.top = `${y}px`;
111
138
  })
@@ -1,14 +1,14 @@
1
1
  import { HighLightDuotoneIcon } from '@blocksuite/icons/lit';
2
2
  import { css, LitElement } from 'lit';
3
3
  export class HighlightDuotoneIcon extends LitElement {
4
- static { this.styles = css `
5
- svg {
6
- display: flex;
7
- font-size: 20px;
8
- }
9
- svg > path:nth-child(1) {
10
- fill: var(--color, unset);
11
- }
4
+ static { this.styles = css `
5
+ svg {
6
+ display: flex;
7
+ font-size: 20px;
8
+ }
9
+ svg > path:nth-child(1) {
10
+ fill: var(--color, unset);
11
+ }
12
12
  `; }
13
13
  render() {
14
14
  return HighLightDuotoneIcon();
@@ -1,17 +1,17 @@
1
1
  import { TextBackgroundDuotoneIcon } from '@blocksuite/icons/lit';
2
2
  import { css, LitElement } from 'lit';
3
3
  export class TextDuotoneIcon extends LitElement {
4
- static { this.styles = css `
5
- svg {
6
- display: flex;
7
- font-size: 20px;
8
- }
9
- svg > path:nth-child(1) {
10
- fill: var(--background, unset);
11
- }
12
- svg > path:nth-child(3) {
13
- fill: var(--color, unset);
14
- }
4
+ static { this.styles = css `
5
+ svg {
6
+ display: flex;
7
+ font-size: 20px;
8
+ }
9
+ svg > path:nth-child(1) {
10
+ fill: var(--background, unset);
11
+ }
12
+ svg > path:nth-child(3) {
13
+ fill: var(--color, unset);
14
+ }
15
15
  `; }
16
16
  render() {
17
17
  return TextBackgroundDuotoneIcon();
@@ -7,6 +7,8 @@ import { insertDatabaseBlockCommand } from '../commands.js';
7
7
  import { DatabaseCreationMenuIdentifier } from '../creation-menu.js';
8
8
  import { createHostedDatabaseView } from '../linked-view.js';
9
9
  import { KanbanViewTooltip, TableViewTooltip } from './tooltips.js';
10
+ import { DATABASE_SLASH_KANBAN_DESCRIPTION, DATABASE_SLASH_TABLE_DESCRIPTION, } from '../translations.js';
11
+ import { VIEW_NAME_TABLE, VIEW_NAME_KANBAN, } from '../../affine-database-engine/translations.js';
10
12
  /**
11
13
  * With a data-source picker the host owns database creation (ADR 0035 §5):
12
14
  * its `createDatabase` is the only way in, and without it no entry creates
@@ -104,13 +106,16 @@ export const databaseSlashMenuConfig = {
104
106
  disableWhen: ({ model }) => model.flavour === 'affine:database',
105
107
  items: [
106
108
  {
107
- name: 'Table View',
108
- description: 'Display items in a table format.',
109
+ name: VIEW_NAME_TABLE[1],
110
+ nameWording: VIEW_NAME_TABLE,
111
+ description: DATABASE_SLASH_TABLE_DESCRIPTION[1],
112
+ descriptionWording: DATABASE_SLASH_TABLE_DESCRIPTION,
109
113
  searchAlias: ['database'],
110
114
  icon: DatabaseTableViewIcon(),
111
115
  tooltip: {
112
116
  figure: TableViewTooltip,
113
- caption: 'Table View',
117
+ caption: VIEW_NAME_TABLE[1],
118
+ captionWording: VIEW_NAME_TABLE,
114
119
  },
115
120
  group: '7_Database@0',
116
121
  when: ({ model, std }) => !isInsideBlockByFlavour(model.store, model, 'affine:edgeless-text') &&
@@ -118,13 +123,16 @@ export const databaseSlashMenuConfig = {
118
123
  action: createDatabaseAction(viewPresets.tableViewMeta.type),
119
124
  },
120
125
  {
121
- name: 'Kanban View',
122
- description: 'Visualize data in a dashboard.',
126
+ name: VIEW_NAME_KANBAN[1],
127
+ nameWording: VIEW_NAME_KANBAN,
128
+ description: DATABASE_SLASH_KANBAN_DESCRIPTION[1],
129
+ descriptionWording: DATABASE_SLASH_KANBAN_DESCRIPTION,
123
130
  searchAlias: ['database'],
124
131
  icon: DatabaseKanbanViewIcon(),
125
132
  tooltip: {
126
133
  figure: KanbanViewTooltip,
127
- caption: 'Kanban View',
134
+ caption: VIEW_NAME_KANBAN[1],
135
+ captionWording: VIEW_NAME_KANBAN,
128
136
  },
129
137
  group: '7_Database@2',
130
138
  when: ({ model, std }) => !isInsideBlockByFlavour(model.store, model, 'affine:edgeless-text') &&
@@ -50,11 +50,12 @@ export const databaseHeaderContainerStyles = css({
50
50
  display: 'flex',
51
51
  flexDirection: 'column',
52
52
  // Drawn as the page, which scrolls sideways under a wide table: the view
53
- // bar stays in view, a viewport wide.
53
+ // bar stays in view, a viewport wide, inside the inset the full page's
54
+ // root sets to keep it under the centred heading (0 elsewhere).
54
55
  'affine-database[data-standalone] &': {
55
56
  position: 'sticky',
56
- left: 'var(--affine-editor-side-padding, 24px)',
57
- width: 'calc(100cqw - 2 * var(--affine-editor-side-padding, 24px))',
57
+ left: 'calc(var(--affine-editor-side-padding, 24px) + var(--affine-database-page-inset, 0px))',
58
+ width: 'calc(100cqw - 2 * var(--affine-editor-side-padding, 24px) - 2 * var(--affine-database-page-inset, 0px))',
58
59
  },
59
60
  });
60
61
  export const databaseTitleRowStyles = css({
@@ -6,10 +6,9 @@ import { LoadingIcon } from '../affine-components/icons/index.js';
6
6
  import { toast } from '../affine-components/toast/index.js';
7
7
  import { EDGELESS_TOP_CONTENTEDITABLE_SELECTOR } from '../affine-shared/consts/index.js';
8
8
  import { getScrollContainer } from '../affine-shared/utils/index.js';
9
- import { BlockCommentManager, CommentProviderIdentifier, DataSourcePickerProvider, DocModeProvider, NotificationProvider, PropertiesPanelProvider, TelemetryProvider, TOAST_COPIED_TO_CLIPBOARD, translateKey, } from '../affine-shared/services/index.js';
9
+ import { BlockCommentManager, CommentProviderIdentifier, DataSourcePickerProvider, DocModeProvider, NotificationProvider, PropertiesPanelProvider, TelemetryProvider, TOAST_COPIED_TO_CLIPBOARD, translateKey, TOOLBAR_COPY, TOOLBAR_COMMENT, } from '../affine-shared/services/index.js';
10
10
  import { getDropResult } from '../affine-widget-drag-handle/index.js';
11
11
  import { createRecordDetail, createUniComponentFromWebComponent, DataViewRootUILogic, DataViewEventTraceKey, defineUniComponent, ExternalGroupByConfigProvider, NewRowMenuOpenerKey, PageLayoutKey, PropertiesPanelOpenerKey, renderUniLit, traceViewEvent, uniMap, ViewCreationOffKey, } from '../affine-database-engine/index.js';
12
- import { CalendarExternalSourceProvider } from '../affine-database-engine/view-presets/index.js';
13
12
  import { widgetPresets } from '../affine-database-engine/widget-presets/index.js';
14
13
  import { Rect } from '../global/gfx/index.js';
15
14
  import { CommentIcon, CopyIcon, DeleteIcon, MoreHorizontalIcon, } from '@blocksuite/icons/lit';
@@ -33,7 +32,7 @@ import { sourceRequirement } from './linked-view.js';
33
32
  import { DatabaseSelection } from './selection.js';
34
33
  import { isStandaloneDatabase } from './standalone-layout.js';
35
34
  import { databaseOpenRowRequest, DatabaseDataSourceProvider, DatabaseInitialViewProvider, DatabaseNewRowMenuProvider, DatabaseOpenRowProvider, openDatabasePropertiesPanel, rowOpenedParams, } from './service/index.js';
36
- import { DATABASE_CREATION_TITLE, DATABASE_MOVE_INTO_SOURCE, DATABASE_NEW_RECORD_MORE, DATABASE_SOURCE_MISSING, DATABASE_SOURCE_MISSING_HINT, DATABASE_SOURCE_REQUIRED, DATABASE_SOURCE_REQUIRED_HINT, DATABASE_SOURCE_REQUIRED_READ_ONLY, } from './translations.js';
35
+ import { DATABASE_CREATION_TITLE, DATABASE_MOVE_INTO_SOURCE, DATABASE_NEW_RECORD_MORE, DATABASE_SOURCE_MISSING, DATABASE_SOURCE_MISSING_HINT, DATABASE_SOURCE_REQUIRED, DATABASE_SOURCE_REQUIRED_HINT, DATABASE_SOURCE_REQUIRED_READ_ONLY, DATABASE_DELETE, DATABASE_TITLE_LABEL, } from './translations.js';
37
36
  import { canTurnIntoSource, moveDatabaseRowsIntoSource, } from './turn-into-source.js';
38
37
  import { currentViewStorage, initialViewId } from './utils/current-view.js';
39
38
  import { getSingleDocIdFromText } from './utils/title-doc.js';
@@ -46,14 +45,14 @@ export class DatabaseBlockComponent extends CaptionedBlockComponent {
46
45
  items: [
47
46
  menu.input({
48
47
  initialValue: this.model.props.title.toString(),
49
- placeholder: 'Database title',
48
+ placeholder: translateKey(this.std, ...DATABASE_TITLE_LABEL),
50
49
  onChange: text => {
51
50
  this.model.props.title.replace(0, this.model.props.title.length, text);
52
51
  },
53
52
  }),
54
53
  menu.action({
55
54
  prefix: CommentIcon(),
56
- name: 'Comment',
55
+ name: translateKey(this.std, ...TOOLBAR_COMMENT),
57
56
  hide: () => !this.std.getOptional(CommentProviderIdentifier),
58
57
  select: () => {
59
58
  this.std.getOptional(CommentProviderIdentifier)?.addComment([
@@ -65,7 +64,7 @@ export class DatabaseBlockComponent extends CaptionedBlockComponent {
65
64
  }),
66
65
  menu.action({
67
66
  prefix: CopyIcon(),
68
- name: 'Copy',
67
+ name: translateKey(this.std, ...TOOLBAR_COPY),
69
68
  select: () => {
70
69
  const slice = Slice.fromModels(this.store, [this.model]);
71
70
  this.std.clipboard
@@ -83,7 +82,7 @@ export class DatabaseBlockComponent extends CaptionedBlockComponent {
83
82
  class: {
84
83
  'delete-item': true,
85
84
  },
86
- name: 'Delete Database',
85
+ name: translateKey(this.std, ...DATABASE_DELETE),
87
86
  select: () => {
88
87
  this.model.children.slice().forEach(block => {
89
88
  this.store.deleteBlock(block);
@@ -215,12 +214,6 @@ export class DatabaseBlockComponent extends CaptionedBlockComponent {
215
214
  widgetPresets.tools.viewOptions,
216
215
  widgetPresets.tools.tableAddRow,
217
216
  ],
218
- calendar: [
219
- widgetPresets.tools.filter,
220
- widgetPresets.tools.search,
221
- widgetPresets.tools.viewOptions,
222
- widgetPresets.tools.tableAddRow,
223
- ],
224
217
  gallery: [
225
218
  widgetPresets.tools.filter,
226
219
  widgetPresets.tools.sort,
@@ -394,11 +387,6 @@ export class DatabaseBlockComponent extends CaptionedBlockComponent {
394
387
  .forEach(config => {
395
388
  dataSource.serviceSet(ExternalGroupByConfigProvider(config.name), config);
396
389
  });
397
- this.std.provider
398
- .getAll(CalendarExternalSourceProvider)
399
- .forEach(source => {
400
- dataSource.serviceSet(CalendarExternalSourceProvider(source.id), source);
401
- });
402
390
  };
403
391
  const provider = this.std.getOptional(DatabaseDataSourceProvider);
404
392
  const dataSource = provider && this.model.props.externalSourceId
@@ -2,6 +2,8 @@ import { unsafeCSSVarV2 } from '../affine-shared/theme/index.js';
2
2
  import { DatabaseListViewIcon } from '@blocksuite/icons/lit';
3
3
  import { BlockComponent } from '../std/index.js';
4
4
  import { css, html } from 'lit';
5
+ import { translateKey } from '../affine-shared/services/index.js';
6
+ import { DATABASE_DRAG_PREVIEW } from './translations.js';
5
7
  export class DatabaseDndPreviewBlockComponent extends BlockComponent {
6
8
  static { this.styles = css `
7
9
  .affine-database-preview-container {
@@ -39,7 +41,9 @@ export class DatabaseDndPreviewBlockComponent extends BlockComponent {
39
41
  >
40
42
  <div class="database-preview-content">
41
43
  ${DatabaseListViewIcon({ width: '24px', height: '24px' })}
42
- <span class="text">Database Block</span>
44
+ <span class="text"
45
+ >${translateKey(this.std, ...DATABASE_DRAG_PREVIEW)}</span
46
+ >
43
47
  </div>
44
48
  </div>`;
45
49
  }