@xh/hoist 71.0.0-SNAPSHOT.1733854822950 → 71.0.0-SNAPSHOT.1734551243081

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 (42) hide show
  1. package/CHANGELOG.md +1 -0
  2. package/build/types/cmp/viewmanager/View.d.ts +5 -0
  3. package/build/types/cmp/viewmanager/ViewInfo.d.ts +32 -7
  4. package/build/types/cmp/viewmanager/ViewManagerModel.d.ts +41 -31
  5. package/build/types/cmp/viewmanager/ViewToBlobApi.d.ts +28 -7
  6. package/build/types/cmp/viewmanager/index.d.ts +1 -1
  7. package/build/types/desktop/cmp/viewmanager/ViewManager.d.ts +0 -4
  8. package/build/types/desktop/cmp/viewmanager/ViewManagerLocalModel.d.ts +11 -0
  9. package/build/types/desktop/cmp/viewmanager/ViewMenu.d.ts +2 -2
  10. package/build/types/desktop/cmp/viewmanager/dialog/ManageDialog.d.ts +3 -1
  11. package/build/types/desktop/cmp/viewmanager/dialog/ManageDialogModel.d.ts +18 -13
  12. package/build/types/desktop/cmp/viewmanager/dialog/SaveAsDialog.d.ts +1 -1
  13. package/build/types/{cmp/viewmanager → desktop/cmp/viewmanager/dialog}/SaveAsDialogModel.d.ts +3 -9
  14. package/build/types/desktop/cmp/viewmanager/dialog/Utils.d.ts +3 -0
  15. package/build/types/desktop/cmp/viewmanager/dialog/ViewMultiPanel.d.ts +2 -0
  16. package/build/types/desktop/cmp/viewmanager/dialog/ViewPanel.d.ts +5 -0
  17. package/build/types/desktop/cmp/viewmanager/dialog/{EditFormModel.d.ts → ViewPanelModel.d.ts} +2 -4
  18. package/build/types/svc/JsonBlobService.d.ts +1 -1
  19. package/cmp/viewmanager/View.ts +21 -1
  20. package/cmp/viewmanager/ViewInfo.ts +58 -11
  21. package/cmp/viewmanager/ViewManagerModel.ts +109 -82
  22. package/cmp/viewmanager/ViewToBlobApi.ts +114 -42
  23. package/cmp/viewmanager/index.ts +1 -1
  24. package/desktop/cmp/viewmanager/ViewManager.scss +25 -28
  25. package/desktop/cmp/viewmanager/ViewManager.ts +32 -27
  26. package/desktop/cmp/viewmanager/ViewManagerLocalModel.ts +33 -0
  27. package/desktop/cmp/viewmanager/ViewMenu.ts +162 -169
  28. package/desktop/cmp/viewmanager/dialog/ManageDialog.ts +69 -42
  29. package/desktop/cmp/viewmanager/dialog/ManageDialogModel.ts +267 -150
  30. package/desktop/cmp/viewmanager/dialog/SaveAsDialog.ts +30 -9
  31. package/{cmp/viewmanager → desktop/cmp/viewmanager/dialog}/SaveAsDialogModel.ts +35 -40
  32. package/desktop/cmp/viewmanager/dialog/Utils.ts +18 -0
  33. package/desktop/cmp/viewmanager/dialog/ViewMultiPanel.ts +70 -0
  34. package/desktop/cmp/viewmanager/dialog/ViewPanel.ts +166 -0
  35. package/desktop/cmp/viewmanager/dialog/ViewPanelModel.ts +116 -0
  36. package/package.json +1 -1
  37. package/svc/JsonBlobService.ts +3 -3
  38. package/svc/storage/BaseStorageService.ts +1 -1
  39. package/tsconfig.tsbuildinfo +1 -1
  40. package/build/types/desktop/cmp/viewmanager/dialog/EditForm.d.ts +0 -5
  41. package/desktop/cmp/viewmanager/dialog/EditForm.ts +0 -126
  42. package/desktop/cmp/viewmanager/dialog/EditFormModel.ts +0 -125
@@ -5,43 +5,56 @@
5
5
  * Copyright © 2024 Extremely Heavy Industries Inc.
6
6
  */
7
7
 
8
- import {tabContainer} from '@xh/hoist/cmp/tab';
9
- import {filler, hframe, placeholder} from '@xh/hoist/cmp/layout';
8
+ import {grid, GridModel} from '@xh/hoist/cmp/grid';
9
+ import {div, filler, hframe, placeholder, vframe} from '@xh/hoist/cmp/layout';
10
10
  import {storeFilterField} from '@xh/hoist/cmp/store';
11
- import {creates, hoistCmp} from '@xh/hoist/core';
12
- import {editForm} from './EditForm';
13
- import {ManageDialogModel} from './ManageDialogModel';
14
- import {button} from '@xh/hoist/desktop/cmp/button';
11
+ import {tabContainer} from '@xh/hoist/cmp/tab';
12
+ import {hoistCmp, uses} from '@xh/hoist/core';
13
+ import {button, refreshButton} from '@xh/hoist/desktop/cmp/button';
15
14
  import {panel} from '@xh/hoist/desktop/cmp/panel';
16
- import {toolbar} from '@xh/hoist/desktop/cmp/toolbar';
15
+ import {toolbar, toolbarSep} from '@xh/hoist/desktop/cmp/toolbar';
17
16
  import {Icon} from '@xh/hoist/icon';
18
17
  import {dialog} from '@xh/hoist/kit/blueprint';
19
18
  import {pluralize} from '@xh/hoist/utils/js';
20
19
  import {capitalize} from 'lodash';
20
+ import {ManageDialogModel} from './ManageDialogModel';
21
+ import {viewMultiPanel} from './ViewMultiPanel';
22
+ import {viewPanel} from './ViewPanel';
21
23
 
22
24
  /**
23
- * Default management dialog for ViewManager
25
+ * Default management dialog for ViewManager.
24
26
  */
25
- export const manageDialog = hoistCmp.factory({
27
+ export const manageDialog = hoistCmp.factory<ManageDialogModel>({
26
28
  displayName: 'ManageDialog',
27
29
  className: 'xh-view-manager__manage-dialog',
28
- model: creates(ManageDialogModel),
30
+ model: uses(() => ManageDialogModel),
29
31
 
30
32
  render({model, className}) {
31
- const {typeDisplayName, updateTask, loadTask, selectedViews} = model;
32
- const count = selectedViews.length;
33
+ if (!model.isOpen) return null;
34
+
35
+ const {updateTask, loadTask, selectedViews, viewManagerModel} = model,
36
+ count = selectedViews.length;
37
+
33
38
  return dialog({
34
- title: `Manage ${capitalize(pluralize(typeDisplayName))}`,
39
+ title: `Manage ${capitalize(pluralize(viewManagerModel.typeDisplayName))}`,
35
40
  icon: Icon.gear(),
36
41
  className,
37
42
  isOpen: true,
38
- style: {width: '800px', maxWidth: '90vm', minHeight: '430px'},
43
+ style: {width: '1000px', maxWidth: '90vw', minHeight: '550px'},
39
44
  canOutsideClickClose: false,
40
45
  onClose: () => model.close(),
41
46
  item: panel({
42
47
  item: hframe(
43
- viewPanel(),
44
- count == 0 ? placeholderPanel() : count > 1 ? multiSelectionPanel() : editForm()
48
+ selectorPanel(),
49
+ panel({
50
+ item:
51
+ count == 0
52
+ ? placeholderPanel()
53
+ : count > 1
54
+ ? viewMultiPanel()
55
+ : viewPanel(),
56
+ bbar: bbar()
57
+ })
45
58
  ),
46
59
  mask: [updateTask, loadTask]
47
60
  })
@@ -49,16 +62,39 @@ export const manageDialog = hoistCmp.factory({
49
62
  }
50
63
  });
51
64
 
52
- const viewPanel = hoistCmp.factory<ManageDialogModel>({
65
+ const selectorPanel = hoistCmp.factory<ManageDialogModel>({
53
66
  render({model}) {
54
67
  return panel({
55
- modelConfig: {defaultSize: 350, side: 'left', collapsible: false},
68
+ modelConfig: {defaultSize: 650, side: 'left', collapsible: false},
56
69
  item: tabContainer(),
57
70
  bbar: [
58
71
  storeFilterField({
59
72
  autoApply: false,
60
- includeFields: ['name'],
73
+ includeFields: ['name', 'group'],
61
74
  onFilterChange: f => (model.filter = f)
75
+ }),
76
+ filler(),
77
+ refreshButton({model})
78
+ ]
79
+ });
80
+ }
81
+ });
82
+
83
+ export const viewsGrid = hoistCmp.factory<GridModel>({
84
+ render({model, helpText}) {
85
+ return vframe({
86
+ paddingTop: 5,
87
+ items: [
88
+ grid({
89
+ model,
90
+ agOptions: {
91
+ suppressMakeColumnVisibleAfterUnGroup: true
92
+ }
93
+ }),
94
+ div({
95
+ item: helpText,
96
+ omit: !helpText,
97
+ className: 'xh-view-manager__manage-dialog__help-text'
62
98
  })
63
99
  ]
64
100
  });
@@ -67,32 +103,23 @@ const viewPanel = hoistCmp.factory<ManageDialogModel>({
67
103
 
68
104
  const placeholderPanel = hoistCmp.factory<ManageDialogModel>({
69
105
  render({model}) {
70
- return panel({
71
- item: placeholder(Icon.gears(), `Select a ${model.typeDisplayName}`),
72
- bbar: toolbar(filler(), button({text: 'Close', onClick: () => model.close()}))
73
- });
106
+ return placeholder(Icon.gears(), `Select a ${model.viewManagerModel.typeDisplayName}`);
74
107
  }
75
108
  });
76
109
 
77
- const multiSelectionPanel = hoistCmp.factory<ManageDialogModel>({
110
+ const bbar = hoistCmp.factory<ManageDialogModel>({
78
111
  render({model}) {
79
- const {selectedViews} = model;
80
- return panel({
81
- item: placeholder(
82
- Icon.gears(),
83
- `${selectedViews.length} selected ${pluralize(model.typeDisplayName)}`
84
- ),
85
- bbar: toolbar(
86
- button({
87
- text: 'Delete',
88
- icon: Icon.delete(),
89
- intent: 'danger',
90
- disabled: !model.canDelete,
91
- onClick: () => model.deleteAsync(selectedViews)
92
- }),
93
- filler(),
94
- button({text: 'Close', onClick: () => model.close()})
95
- )
96
- });
112
+ const {selectedView} = model;
113
+ return toolbar(
114
+ filler(),
115
+ button({
116
+ text: selectedView?.isCurrentView ? 'Currently Active' : 'Activate + Close',
117
+ onClick: () => model.activateSelectedViewAndClose(),
118
+ disabled: selectedView?.isCurrentView,
119
+ omit: !selectedView
120
+ }),
121
+ toolbarSep({omit: !selectedView}),
122
+ button({text: 'Close', onClick: () => model.close()})
123
+ );
97
124
  }
98
125
  });