@genesislcap/foundation-layout 14.59.0 → 14.60.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.
- package/README.md +34 -1
- package/dist/custom-elements.json +4 -4
- package/dist/dts/main/layout-main.d.ts +4 -4
- package/dist/dts/main/layout-main.d.ts.map +1 -1
- package/dist/dts/main/layout-region.d.ts.map +1 -1
- package/dist/dts/utils/misc.d.ts +5 -0
- package/dist/dts/utils/misc.d.ts.map +1 -1
- package/dist/dts/utils/types.d.ts +11 -1
- package/dist/dts/utils/types.d.ts.map +1 -1
- package/dist/esm/main/layout-main.js +32 -15
- package/dist/esm/main/layout-region.js +1 -9
- package/dist/esm/utils/misc.js +9 -0
- package/dist/foundation-layout.api.json +31 -9
- package/dist/foundation-layout.d.ts +15 -5
- package/docs/api/foundation-layout.foundationlayout.additem.md +4 -4
- package/docs/api/foundation-layout.md +1 -1
- package/docs/api/foundation-layout.placement.md +11 -1
- package/docs/api-report.md +5 -1
- package/package.json +6 -6
package/README.md
CHANGED
|
@@ -168,7 +168,7 @@ This API enables you to register an item at runtime, but it will not be displaye
|
|
|
168
168
|
|
|
169
169
|
#### [Add Item](./docs/api/foundation-layout.foundationlayout.additem.md)
|
|
170
170
|
|
|
171
|
-
Add an item that
|
|
171
|
+
Add an item or items that have previously been registered with the layout.
|
|
172
172
|
|
|
173
173
|
#### [Layout Required Registrations](./docs/api/foundation-layout.foundationlayout.layoutrequiredregistrations.md)
|
|
174
174
|
|
|
@@ -846,6 +846,39 @@ The following example is invalid:
|
|
|
846
846
|
```
|
|
847
847
|
This is because you cannot have multiple layout elements as the immediate child of the layout root. You will get a runtime error.
|
|
848
848
|
|
|
849
|
+
### Multiple nested layouts
|
|
850
|
+
|
|
851
|
+
The following example is invalid:
|
|
852
|
+
|
|
853
|
+
```html
|
|
854
|
+
<foundation-layout>
|
|
855
|
+
<foundation-layout-item title="Component 1">
|
|
856
|
+
<another-component></another-component>
|
|
857
|
+
</foundation-layout-item>
|
|
858
|
+
<foundation-layout-item title="Component 2">
|
|
859
|
+
<!-- Content -->
|
|
860
|
+
</foundation-layout-item>
|
|
861
|
+
</foundation-layout>
|
|
862
|
+
```
|
|
863
|
+
Where the markup of `another-component` is something like:
|
|
864
|
+
```html
|
|
865
|
+
<!--other markup-->
|
|
866
|
+
<foundation-layout>
|
|
867
|
+
<foundation-layout-item title="Component 1">
|
|
868
|
+
<!-- Content -->
|
|
869
|
+
</foundation-layout-item>
|
|
870
|
+
<foundation-layout-item title="Component 2">
|
|
871
|
+
<!-- Content -->
|
|
872
|
+
</foundation-layout-item>
|
|
873
|
+
<foundation-layout-item title="Component 3">
|
|
874
|
+
<!-- Content -->
|
|
875
|
+
</foundation-layout-item>
|
|
876
|
+
</foundation-layout>
|
|
877
|
+
<!--other markup-->
|
|
878
|
+
```
|
|
879
|
+
|
|
880
|
+
This is because you cannot have an instance of the layout nested inside of another layout instance. You could try adding multiple items at once using `.addItem([elem1,..,elemN])` instead.
|
|
881
|
+
|
|
849
882
|
### Nested item
|
|
850
883
|
|
|
851
884
|
The following example is invalid:
|
|
@@ -461,17 +461,17 @@
|
|
|
461
461
|
{
|
|
462
462
|
"name": "config",
|
|
463
463
|
"type": {
|
|
464
|
-
"text": "RegisteredElementConfig"
|
|
464
|
+
"text": "RegisteredElementConfig | RegisteredElementConfig[]"
|
|
465
465
|
},
|
|
466
|
-
"description": "{@link RegisteredElementConfig}configuration items for the new
|
|
466
|
+
"description": "{@link RegisteredElementConfig}configuration items for the new items(s). Pass an array of {@link RegisteredElementConfig}to add multiple items at once.\n * "
|
|
467
467
|
},
|
|
468
468
|
{
|
|
469
469
|
"name": "placement",
|
|
470
|
-
"default": "
|
|
470
|
+
"default": "defaultAddItemPlacement",
|
|
471
471
|
"type": {
|
|
472
472
|
"text": "Placement"
|
|
473
473
|
},
|
|
474
|
-
"description": "where to add the new
|
|
474
|
+
"description": "where and how to add the new items to the layout. For more info and defaults see {@link Placement}.\n * "
|
|
475
475
|
}
|
|
476
476
|
],
|
|
477
477
|
"privacy": "public"
|
|
@@ -139,15 +139,15 @@ export declare class FoundationLayout extends FoundationElement implements Layou
|
|
|
139
139
|
* @public
|
|
140
140
|
* Dynamically add a new item to the layout. The user can move the new plane to whenever they want once it has been added.
|
|
141
141
|
* @remarks
|
|
142
|
-
* Adding
|
|
142
|
+
* Adding new items invokes the registration previously made explicitly via {@link FoundationLayout.registerItem | registerItem()} or implicitly via the html declarative API.
|
|
143
143
|
*
|
|
144
144
|
* The elements added onto the new pane are copies using `element.cloneNode()` of the original element references used during registration.
|
|
145
145
|
*
|
|
146
|
-
* @param config - {@link RegisteredElementConfig} configuration items for the new
|
|
147
|
-
* @param placement - where to add the new
|
|
146
|
+
* @param config - {@link RegisteredElementConfig} configuration items for the new items(s). Pass an array of {@link RegisteredElementConfig} to add multiple items at once.
|
|
147
|
+
* @param placement - where and how to add the new items to the layout. For more info and defaults see {@link Placement}.
|
|
148
148
|
* @throws {@link LayoutRegistrationError} if you attempt to add an item before it has been registered
|
|
149
149
|
*/
|
|
150
|
-
addItem(config: RegisteredElementConfig, placement?: Placement): void;
|
|
150
|
+
addItem(config: RegisteredElementConfig | RegisteredElementConfig[], placement?: Placement): void;
|
|
151
151
|
/**
|
|
152
152
|
* @public
|
|
153
153
|
* Register a collection of `Element` and associate them with an `ID` with the layout system for later use.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layout-main.d.ts","sourceRoot":"","sources":["../../../src/main/layout-main.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,cAAc,
|
|
1
|
+
{"version":3,"file":"layout-main.d.ts","sourceRoot":"","sources":["../../../src/main/layout-main.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layout-region.d.ts","sourceRoot":"","sources":["../../../src/main/layout-region.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,cAAc,EACf,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EACL,aAAa,EAEb,eAAe,EACf,gBAAgB,
|
|
1
|
+
{"version":3,"file":"layout-region.d.ts","sourceRoot":"","sources":["../../../src/main/layout-region.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,cAAc,EACf,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EACL,aAAa,EAEb,eAAe,EACf,gBAAgB,EAGhB,kBAAkB,EAEnB,MAAM,UAAU,CAAC;AAOlB;;;;;;;;GAQG;AACH,qBAAa,sBAAuB,SAAQ,iBAAkB,YAAW,eAAe;IACtF;;;OAGG;IACG,IAAI,EAAE,MAAM,CAAC;IAEnB;;;;OAIG;IACG,IAAI,EAAE,gBAAgB,CAAC;IAE7B,gBAAgB;IAChB,CAAC,aAAa,CAAC,EAAE,gBAAgB,CAAgB;IAEjD;;;;OAIG;IACH,OAAO,CAAC,YAAY,CAA0C;IAE9D,gBAAgB;IAChB,iBAAiB,IAAI,IAAI;IAUzB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAMzB;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAS7B,gBAAgB;IAChB,OAAO,CAAC,wBAAwB;IAIhC,gBAAgB;IAChB,gBAAgB,CAAC,CAAC,SAAS,cAAc,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC;IAKtD,gBAAgB;IAChB,mBAAmB,IAAI,IAAI;IAI3B,gBAAgB;IAChB,wBAAwB,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM;CAG7D;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,sBAAsB;;;;;;iCAGjC,CAAC"}
|
package/dist/dts/utils/misc.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { FoundationLayout, FoundationLayoutRegion } from '../main';
|
|
2
|
+
import { LayoutRegionType } from './types';
|
|
2
3
|
/**
|
|
3
4
|
* Returns an array of values of the array a which are missing in b
|
|
4
5
|
* An empty array is returned if every value of a is in b
|
|
@@ -7,4 +8,8 @@ import { FoundationLayout, FoundationLayoutRegion } from '../main';
|
|
|
7
8
|
export declare function getMissingArrayItems<T>(a: T[], b: T[]): T[];
|
|
8
9
|
/** @internal */
|
|
9
10
|
export declare function getParentLayoutComponent(): FoundationLayout | FoundationLayoutRegion;
|
|
11
|
+
/** @internal */
|
|
12
|
+
export type GoldenLayoutRegions = 'row' | 'column' | 'stack';
|
|
13
|
+
/** @internal */
|
|
14
|
+
export declare const regionConveter: (x: LayoutRegionType) => GoldenLayoutRegions;
|
|
10
15
|
//# sourceMappingURL=misc.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"misc.d.ts","sourceRoot":"","sources":["../../../src/utils/misc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"misc.d.ts","sourceRoot":"","sources":["../../../src/utils/misc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAGnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAE3D;AAED,gBAAgB;AAChB,wBAAgB,wBAAwB,IAAI,gBAAgB,GAAG,sBAAsB,CAYpF;AAED,gBAAgB;AAChB,MAAM,MAAM,mBAAmB,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;AAC7D,gBAAgB;AAChB,eAAO,MAAM,cAAc,MAAO,gBAAgB,KAAG,mBAOpD,CAAC"}
|
|
@@ -34,10 +34,20 @@ export interface RegisteredElementConfig {
|
|
|
34
34
|
}
|
|
35
35
|
/**
|
|
36
36
|
* @public
|
|
37
|
-
* Where to add the new item into the layout when using the {@link FoundationLayout.addItem} API
|
|
37
|
+
* Where to and how to add the new item(s) into the layout when using the {@link FoundationLayout.addItem} API.
|
|
38
|
+
* @remarks
|
|
39
|
+
* `area` dictates what part of the layout the new item(s) will be added to.
|
|
40
|
+
* `multiple` is optional and is defaulted to `type=horizontal` and `size=50%` if not defined. `multiple` config only affects the placement if multiple items are specified to be added.
|
|
41
|
+
* `multiple.type` sets the group type of the new items, whether they are horizontal, vertical, or in tabs.
|
|
42
|
+
* `multiple.size` - optional string describing the size of the new item (see the written documentation for more info).
|
|
43
|
+
* `multiple.size` specifies the size of the new group to be added and then the `size` config of the new items are the sizes relative to this new multiple group. If you only specify one new item then the `size` of that will be used as the size and will override `multiple.size`.
|
|
38
44
|
*/
|
|
39
45
|
export type Placement = {
|
|
40
46
|
area: 'top' | 'left' | 'bottom' | 'right';
|
|
47
|
+
multiple?: {
|
|
48
|
+
type: LayoutRegionType;
|
|
49
|
+
size?: string;
|
|
50
|
+
};
|
|
41
51
|
};
|
|
42
52
|
/** @internal */
|
|
43
53
|
export interface RegistrationConfig {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/utils/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C;;;;;;;;;;GAUG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,CAAC,EAAE,GAAG,CAAC;IACP,CAAC,EAAE,oBAAoB,CAAC;CACzB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,WAAW,uBAAuB;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/utils/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C;;;;;;;;;;GAUG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,CAAC,EAAE,GAAG,CAAC;IACP,CAAC,EAAE,oBAAoB,CAAC;CACzB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,WAAW,uBAAuB;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC1C,QAAQ,CAAC,EAAE;QACT,IAAI,EAAE,gBAAgB,CAAC;QACvB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CACH,CAAC;AAEF,gBAAgB;AAChB,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,gBAAgB;AAChB,eAAO,MAAM,iBAAiB,6CAA8C,CAAC;AAC7E;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAClE,gBAAgB;AAChB,MAAM,MAAM,cAAc,GAAG,gBAAgB,GAAG,MAAM,GAAG,MAAM,CAAC;AAEhE,gBAAgB;AAChB,MAAM,WAAW,eAAe;IAC9B,CAAC,aAAa,CAAC,EAAE,cAAc,CAAC;IAChC,wBAAwB,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAAC;IAC7D,mBAAmB,IAAI,IAAI,CAAC;CAC7B;AAED,gBAAgB;AAChB,MAAM,MAAM,gBAAgB,GAAG;IAC7B,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACrB,CAAC"}
|
|
@@ -6,7 +6,7 @@ import { layoutCacheDocument, UUID } from '@genesislcap/foundation-utils';
|
|
|
6
6
|
import { html, attr, observable, when, ref } from '@microsoft/fast-element';
|
|
7
7
|
import { FoundationElement } from '@microsoft/fast-foundation';
|
|
8
8
|
import { globalDraggingStyles, glVisualConfig, layoutStyles } from '../styles';
|
|
9
|
-
import { DEFAULT_RELOAD_BUFFER, LayoutEmitEvents, LayoutReceiveEvents, componentType, AUTOSAVE_KEY, } from '../utils/';
|
|
9
|
+
import { DEFAULT_RELOAD_BUFFER, LayoutEmitEvents, LayoutReceiveEvents, componentType, AUTOSAVE_KEY, regionConveter, } from '../utils/';
|
|
10
10
|
import { getMissingArrayItems } from '../utils/';
|
|
11
11
|
import { LayoutRegistrationError, LayoutUsageError } from '../utils/error';
|
|
12
12
|
import { logger } from '../utils/logger';
|
|
@@ -17,6 +17,13 @@ export { layoutStyles } from '../styles';
|
|
|
17
17
|
* layout that requires it
|
|
18
18
|
*/
|
|
19
19
|
let appliedGlobalStyles = false;
|
|
20
|
+
const defaultAddItemPlacement = {
|
|
21
|
+
area: 'right',
|
|
22
|
+
multiple: {
|
|
23
|
+
type: 'tabs',
|
|
24
|
+
size: '33%',
|
|
25
|
+
},
|
|
26
|
+
};
|
|
20
27
|
/**
|
|
21
28
|
* @public
|
|
22
29
|
* Top level web component which is used to initialise a custom layout
|
|
@@ -220,26 +227,36 @@ export class FoundationLayout extends FoundationElement {
|
|
|
220
227
|
* @public
|
|
221
228
|
* Dynamically add a new item to the layout. The user can move the new plane to whenever they want once it has been added.
|
|
222
229
|
* @remarks
|
|
223
|
-
* Adding
|
|
230
|
+
* Adding new items invokes the registration previously made explicitly via {@link FoundationLayout.registerItem | registerItem()} or implicitly via the html declarative API.
|
|
224
231
|
*
|
|
225
232
|
* The elements added onto the new pane are copies using `element.cloneNode()` of the original element references used during registration.
|
|
226
233
|
*
|
|
227
|
-
* @param config - {@link RegisteredElementConfig} configuration items for the new
|
|
228
|
-
* @param placement - where to add the new
|
|
234
|
+
* @param config - {@link RegisteredElementConfig} configuration items for the new items(s). Pass an array of {@link RegisteredElementConfig} to add multiple items at once.
|
|
235
|
+
* @param placement - where and how to add the new items to the layout. For more info and defaults see {@link Placement}.
|
|
229
236
|
* @throws {@link LayoutRegistrationError} if you attempt to add an item before it has been registered
|
|
230
237
|
*/
|
|
231
|
-
addItem(config, placement =
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
238
|
+
addItem(config, placement = defaultAddItemPlacement) {
|
|
239
|
+
var _b, _c;
|
|
240
|
+
const configArray = Array.isArray(config) ? config : [config];
|
|
241
|
+
const isSingleItem = configArray.length === 1;
|
|
242
|
+
const childItems = configArray.map((regConfig) => {
|
|
243
|
+
const { registration, title, size, closable } = regConfig;
|
|
244
|
+
if (!this.layout.getRegisteredComponentTypeNames().includes(registration)) {
|
|
245
|
+
throw new LayoutRegistrationError(`Cannot add item '${registration}' which is not registered with the layout system.`);
|
|
246
|
+
}
|
|
247
|
+
return {
|
|
248
|
+
type: 'component',
|
|
249
|
+
componentType: registration,
|
|
250
|
+
title: title !== null && title !== void 0 ? title : `Item ${registration}`,
|
|
251
|
+
reorderEnabled: true,
|
|
252
|
+
isClosable: closable || false,
|
|
253
|
+
size: !isSingleItem ? size : undefined,
|
|
254
|
+
};
|
|
255
|
+
});
|
|
236
256
|
const itemConfig = {
|
|
237
|
-
type: '
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
reorderEnabled: true,
|
|
241
|
-
isClosable: closable || false,
|
|
242
|
-
size,
|
|
257
|
+
type: regionConveter(((_b = placement === null || placement === void 0 ? void 0 : placement.multiple) === null || _b === void 0 ? void 0 : _b.type) || 'tabs'),
|
|
258
|
+
content: childItems,
|
|
259
|
+
size: isSingleItem ? config[0].size : (_c = placement === null || placement === void 0 ? void 0 : placement.multiple) === null || _c === void 0 ? void 0 : _c.size,
|
|
243
260
|
};
|
|
244
261
|
/**
|
|
245
262
|
* If no root is added (no items via declerative API) then
|
|
@@ -2,17 +2,9 @@ var _a;
|
|
|
2
2
|
import { __decorate } from "tslib";
|
|
3
3
|
import { attr } from '@microsoft/fast-element';
|
|
4
4
|
import { FoundationElement } from '@microsoft/fast-foundation';
|
|
5
|
-
import { componentType, getParentLayoutComponent, layoutRegionValue, wrapperTemplate, } from '../utils';
|
|
5
|
+
import { componentType, getParentLayoutComponent, layoutRegionValue, regionConveter, wrapperTemplate, } from '../utils';
|
|
6
6
|
import { logger } from '../utils/logger';
|
|
7
7
|
const defaultLayoutType = layoutRegionValue[0];
|
|
8
|
-
const regionConveter = (x) => {
|
|
9
|
-
const t = {
|
|
10
|
-
horizontal: 'column',
|
|
11
|
-
vertical: 'row',
|
|
12
|
-
tabs: 'stack',
|
|
13
|
-
};
|
|
14
|
-
return t[x];
|
|
15
|
-
};
|
|
16
8
|
/**
|
|
17
9
|
* @public
|
|
18
10
|
* `FoundationLayoutRegion` is a custom element that represents a region in the layout.
|
package/dist/esm/utils/misc.js
CHANGED
|
@@ -22,3 +22,12 @@ export function getParentLayoutComponent() {
|
|
|
22
22
|
throw new LayoutUsageError('Using layout region outside of layout root');
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
|
+
/** @internal */
|
|
26
|
+
export const regionConveter = (x) => {
|
|
27
|
+
const t = {
|
|
28
|
+
horizontal: 'column',
|
|
29
|
+
vertical: 'row',
|
|
30
|
+
tabs: 'stack',
|
|
31
|
+
};
|
|
32
|
+
return t[x];
|
|
33
|
+
};
|
|
@@ -242,7 +242,7 @@
|
|
|
242
242
|
{
|
|
243
243
|
"kind": "Method",
|
|
244
244
|
"canonicalReference": "@genesislcap/foundation-layout!FoundationLayout#addItem:member(1)",
|
|
245
|
-
"docComment": "/**\n * Dynamically add a new item to the layout. The user can move the new plane to whenever they want once it has been added.\n *\n * @remarks\n *\n * Adding
|
|
245
|
+
"docComment": "/**\n * Dynamically add a new item to the layout. The user can move the new plane to whenever they want once it has been added.\n *\n * @remarks\n *\n * Adding new items invokes the registration previously made explicitly via {@link FoundationLayout.registerItem | registerItem()} or implicitly via the html declarative API.\n *\n * The elements added onto the new pane are copies using `element.cloneNode()` of the original element references used during registration.\n *\n * @param config - {@link RegisteredElementConfig} configuration items for the new items(s). Pass an array of {@link RegisteredElementConfig} to add multiple items at once.\n *\n * @param placement - where and how to add the new items to the layout. For more info and defaults see {@link Placement}.\n *\n * @throws\n *\n * {@link LayoutRegistrationError} if you attempt to add an item before it has been registered\n *\n * @public\n */\n",
|
|
246
246
|
"excerptTokens": [
|
|
247
247
|
{
|
|
248
248
|
"kind": "Content",
|
|
@@ -253,6 +253,19 @@
|
|
|
253
253
|
"text": "RegisteredElementConfig",
|
|
254
254
|
"canonicalReference": "@genesislcap/foundation-layout!RegisteredElementConfig:interface"
|
|
255
255
|
},
|
|
256
|
+
{
|
|
257
|
+
"kind": "Content",
|
|
258
|
+
"text": " | "
|
|
259
|
+
},
|
|
260
|
+
{
|
|
261
|
+
"kind": "Reference",
|
|
262
|
+
"text": "RegisteredElementConfig",
|
|
263
|
+
"canonicalReference": "@genesislcap/foundation-layout!RegisteredElementConfig:interface"
|
|
264
|
+
},
|
|
265
|
+
{
|
|
266
|
+
"kind": "Content",
|
|
267
|
+
"text": "[]"
|
|
268
|
+
},
|
|
256
269
|
{
|
|
257
270
|
"kind": "Content",
|
|
258
271
|
"text": ", placement?: "
|
|
@@ -277,8 +290,8 @@
|
|
|
277
290
|
],
|
|
278
291
|
"isStatic": false,
|
|
279
292
|
"returnTypeTokenRange": {
|
|
280
|
-
"startIndex":
|
|
281
|
-
"endIndex":
|
|
293
|
+
"startIndex": 8,
|
|
294
|
+
"endIndex": 9
|
|
282
295
|
},
|
|
283
296
|
"releaseTag": "Public",
|
|
284
297
|
"isProtected": false,
|
|
@@ -288,15 +301,15 @@
|
|
|
288
301
|
"parameterName": "config",
|
|
289
302
|
"parameterTypeTokenRange": {
|
|
290
303
|
"startIndex": 1,
|
|
291
|
-
"endIndex":
|
|
304
|
+
"endIndex": 5
|
|
292
305
|
},
|
|
293
306
|
"isOptional": false
|
|
294
307
|
},
|
|
295
308
|
{
|
|
296
309
|
"parameterName": "placement",
|
|
297
310
|
"parameterTypeTokenRange": {
|
|
298
|
-
"startIndex":
|
|
299
|
-
"endIndex":
|
|
311
|
+
"startIndex": 6,
|
|
312
|
+
"endIndex": 7
|
|
300
313
|
},
|
|
301
314
|
"isOptional": true
|
|
302
315
|
}
|
|
@@ -1527,7 +1540,7 @@
|
|
|
1527
1540
|
{
|
|
1528
1541
|
"kind": "TypeAlias",
|
|
1529
1542
|
"canonicalReference": "@genesislcap/foundation-layout!Placement:type",
|
|
1530
|
-
"docComment": "/**\n * Where to add the new item into the layout when using the {@link FoundationLayout.addItem} API\n *\n * @public\n */\n",
|
|
1543
|
+
"docComment": "/**\n * Where to and how to add the new item(s) into the layout when using the {@link FoundationLayout.addItem} API.\n *\n * @remarks\n *\n * `area` dictates what part of the layout the new item(s) will be added to. `multiple` is optional and is defaulted to `type=horizontal` and `size=50%` if not defined. `multiple` config only affects the placement if multiple items are specified to be added. `multiple.type` sets the group type of the new items, whether they are horizontal, vertical, or in tabs. `multiple.size` - optional string describing the size of the new item (see the written documentation for more info). `multiple.size` specifies the size of the new group to be added and then the `size` config of the new items are the sizes relative to this new multiple group. If you only specify one new item then the `size` of that will be used as the size and will override `multiple.size`.\n *\n * @public\n */\n",
|
|
1531
1544
|
"excerptTokens": [
|
|
1532
1545
|
{
|
|
1533
1546
|
"kind": "Content",
|
|
@@ -1535,7 +1548,16 @@
|
|
|
1535
1548
|
},
|
|
1536
1549
|
{
|
|
1537
1550
|
"kind": "Content",
|
|
1538
|
-
"text": "{\n area: 'top' | 'left' | 'bottom' | 'right';\n
|
|
1551
|
+
"text": "{\n area: 'top' | 'left' | 'bottom' | 'right';\n multiple?: {\n type: "
|
|
1552
|
+
},
|
|
1553
|
+
{
|
|
1554
|
+
"kind": "Reference",
|
|
1555
|
+
"text": "LayoutRegionType",
|
|
1556
|
+
"canonicalReference": "@genesislcap/foundation-layout!LayoutRegionType:type"
|
|
1557
|
+
},
|
|
1558
|
+
{
|
|
1559
|
+
"kind": "Content",
|
|
1560
|
+
"text": ";\n size?: string;\n };\n}"
|
|
1539
1561
|
},
|
|
1540
1562
|
{
|
|
1541
1563
|
"kind": "Content",
|
|
@@ -1547,7 +1569,7 @@
|
|
|
1547
1569
|
"name": "Placement",
|
|
1548
1570
|
"typeTokenRange": {
|
|
1549
1571
|
"startIndex": 1,
|
|
1550
|
-
"endIndex":
|
|
1572
|
+
"endIndex": 4
|
|
1551
1573
|
}
|
|
1552
1574
|
},
|
|
1553
1575
|
{
|
|
@@ -162,15 +162,15 @@ export declare class FoundationLayout extends FoundationElement implements Layou
|
|
|
162
162
|
* @public
|
|
163
163
|
* Dynamically add a new item to the layout. The user can move the new plane to whenever they want once it has been added.
|
|
164
164
|
* @remarks
|
|
165
|
-
* Adding
|
|
165
|
+
* Adding new items invokes the registration previously made explicitly via {@link FoundationLayout.registerItem | registerItem()} or implicitly via the html declarative API.
|
|
166
166
|
*
|
|
167
167
|
* The elements added onto the new pane are copies using `element.cloneNode()` of the original element references used during registration.
|
|
168
168
|
*
|
|
169
|
-
* @param config - {@link RegisteredElementConfig} configuration items for the new
|
|
170
|
-
* @param placement - where to add the new
|
|
169
|
+
* @param config - {@link RegisteredElementConfig} configuration items for the new items(s). Pass an array of {@link RegisteredElementConfig} to add multiple items at once.
|
|
170
|
+
* @param placement - where and how to add the new items to the layout. For more info and defaults see {@link Placement}.
|
|
171
171
|
* @throws {@link LayoutRegistrationError} if you attempt to add an item before it has been registered
|
|
172
172
|
*/
|
|
173
|
-
addItem(config: RegisteredElementConfig, placement?: Placement): void;
|
|
173
|
+
addItem(config: RegisteredElementConfig | RegisteredElementConfig[], placement?: Placement): void;
|
|
174
174
|
/**
|
|
175
175
|
* @public
|
|
176
176
|
* Register a collection of `Element` and associate them with an `ID` with the layout system for later use.
|
|
@@ -495,10 +495,20 @@ export declare class LayoutUsageError extends Error {
|
|
|
495
495
|
|
|
496
496
|
/**
|
|
497
497
|
* @public
|
|
498
|
-
* Where to add the new item into the layout when using the {@link FoundationLayout.addItem} API
|
|
498
|
+
* Where to and how to add the new item(s) into the layout when using the {@link FoundationLayout.addItem} API.
|
|
499
|
+
* @remarks
|
|
500
|
+
* `area` dictates what part of the layout the new item(s) will be added to.
|
|
501
|
+
* `multiple` is optional and is defaulted to `type=horizontal` and `size=50%` if not defined. `multiple` config only affects the placement if multiple items are specified to be added.
|
|
502
|
+
* `multiple.type` sets the group type of the new items, whether they are horizontal, vertical, or in tabs.
|
|
503
|
+
* `multiple.size` - optional string describing the size of the new item (see the written documentation for more info).
|
|
504
|
+
* `multiple.size` specifies the size of the new group to be added and then the `size` config of the new items are the sizes relative to this new multiple group. If you only specify one new item then the `size` of that will be used as the size and will override `multiple.size`.
|
|
499
505
|
*/
|
|
500
506
|
export declare type Placement = {
|
|
501
507
|
area: 'top' | 'left' | 'bottom' | 'right';
|
|
508
|
+
multiple?: {
|
|
509
|
+
type: LayoutRegionType;
|
|
510
|
+
size?: string;
|
|
511
|
+
};
|
|
502
512
|
};
|
|
503
513
|
|
|
504
514
|
/**
|
|
@@ -9,15 +9,15 @@ Dynamically add a new item to the layout. The user can move the new plane to whe
|
|
|
9
9
|
**Signature:**
|
|
10
10
|
|
|
11
11
|
```typescript
|
|
12
|
-
addItem(config: RegisteredElementConfig, placement?: Placement): void;
|
|
12
|
+
addItem(config: RegisteredElementConfig | RegisteredElementConfig[], placement?: Placement): void;
|
|
13
13
|
```
|
|
14
14
|
|
|
15
15
|
## Parameters
|
|
16
16
|
|
|
17
17
|
| Parameter | Type | Description |
|
|
18
18
|
| --- | --- | --- |
|
|
19
|
-
| config | [RegisteredElementConfig](./foundation-layout.registeredelementconfig.md) | [RegisteredElementConfig](./foundation-layout.registeredelementconfig.md) configuration items for the new
|
|
20
|
-
| placement | [Placement](./foundation-layout.placement.md) | _(Optional)_ where to add the new
|
|
19
|
+
| config | [RegisteredElementConfig](./foundation-layout.registeredelementconfig.md) \| [RegisteredElementConfig](./foundation-layout.registeredelementconfig.md)<!-- -->\[\] | [RegisteredElementConfig](./foundation-layout.registeredelementconfig.md) configuration items for the new items(s). Pass an array of [RegisteredElementConfig](./foundation-layout.registeredelementconfig.md) to add multiple items at once. |
|
|
20
|
+
| placement | [Placement](./foundation-layout.placement.md) | _(Optional)_ where and how to add the new items to the layout. For more info and defaults see [Placement](./foundation-layout.placement.md)<!-- -->. |
|
|
21
21
|
|
|
22
22
|
**Returns:**
|
|
23
23
|
|
|
@@ -29,7 +29,7 @@ void
|
|
|
29
29
|
|
|
30
30
|
## Remarks
|
|
31
31
|
|
|
32
|
-
Adding
|
|
32
|
+
Adding new items invokes the registration previously made explicitly via [registerItem()](./foundation-layout.foundationlayout.registeritem.md) or implicitly via the html declarative API.
|
|
33
33
|
|
|
34
34
|
The elements added onto the new pane are copies using `element.cloneNode()` of the original element references used during registration.
|
|
35
35
|
|
|
@@ -37,6 +37,6 @@
|
|
|
37
37
|
| --- | --- |
|
|
38
38
|
| [LayoutReceiveEventsDetail](./foundation-layout.layoutreceiveeventsdetail.md) | <p>Defines the shape of the detail that the layout listens works with for events it listens on</p><p>'changeTitle' - <code>title</code> is the string you want to set. For <code>mode</code>: <code>replace</code> will set the title to be <code>title</code>, <code>suffix</code> will append <code>title</code> to the end of the existing title.</p> |
|
|
39
39
|
| [LayoutRegionType](./foundation-layout.layoutregiontype.md) | Union type describing the three different types of region splits. Set on the <code>type</code> attribute on [FoundationLayoutRegion](./foundation-layout.foundationlayoutregion.md)<!-- -->. |
|
|
40
|
-
| [Placement](./foundation-layout.placement.md) | Where to add the new item into the layout when using the [FoundationLayout.addItem()](./foundation-layout.foundationlayout.additem.md) API |
|
|
40
|
+
| [Placement](./foundation-layout.placement.md) | Where to and how to add the new item(s) into the layout when using the [FoundationLayout.addItem()](./foundation-layout.foundationlayout.additem.md) API. |
|
|
41
41
|
| [SerialisedLayout](./foundation-layout.serialisedlayout.md) | Versioned layout config objects. <code>v</code> is the version and <code>c</code> contains the layout config. |
|
|
42
42
|
|
|
@@ -4,12 +4,22 @@
|
|
|
4
4
|
|
|
5
5
|
## Placement type
|
|
6
6
|
|
|
7
|
-
Where to add the new item into the layout when using the [FoundationLayout.addItem()](./foundation-layout.foundationlayout.additem.md) API
|
|
7
|
+
Where to and how to add the new item(s) into the layout when using the [FoundationLayout.addItem()](./foundation-layout.foundationlayout.additem.md) API.
|
|
8
8
|
|
|
9
9
|
**Signature:**
|
|
10
10
|
|
|
11
11
|
```typescript
|
|
12
12
|
export type Placement = {
|
|
13
13
|
area: 'top' | 'left' | 'bottom' | 'right';
|
|
14
|
+
multiple?: {
|
|
15
|
+
type: LayoutRegionType;
|
|
16
|
+
size?: string;
|
|
17
|
+
};
|
|
14
18
|
};
|
|
15
19
|
```
|
|
20
|
+
**References:** [LayoutRegionType](./foundation-layout.layoutregiontype.md)
|
|
21
|
+
|
|
22
|
+
## Remarks
|
|
23
|
+
|
|
24
|
+
`area` dictates what part of the layout the new item(s) will be added to. `multiple` is optional and is defaulted to `type=horizontal` and `size=50%` if not defined. `multiple` config only affects the placement if multiple items are specified to be added. `multiple.type` sets the group type of the new items, whether they are horizontal, vertical, or in tabs. `multiple.size` - optional string describing the size of the new item (see the written documentation for more info). `multiple.size` specifies the size of the new group to be added and then the `size` config of the new items are the sizes relative to this new multiple group. If you only specify one new item then the `size` of that will be used as the size and will override `multiple.size`<!-- -->.
|
|
25
|
+
|
package/docs/api-report.md
CHANGED
|
@@ -24,7 +24,7 @@ export class FoundationLayout extends FoundationElement implements LayoutCompone
|
|
|
24
24
|
[componentType]: "root";
|
|
25
25
|
// @internal
|
|
26
26
|
constructor();
|
|
27
|
-
addItem(config: RegisteredElementConfig, placement?: Placement): void;
|
|
27
|
+
addItem(config: RegisteredElementConfig | RegisteredElementConfig[], placement?: Placement): void;
|
|
28
28
|
// @internal
|
|
29
29
|
addItemFromChild<T extends RootItemConfig>(item: T): T;
|
|
30
30
|
autoSaveKey?: string;
|
|
@@ -157,6 +157,10 @@ export class LayoutUsageError extends Error {
|
|
|
157
157
|
// @public
|
|
158
158
|
export type Placement = {
|
|
159
159
|
area: 'top' | 'left' | 'bottom' | 'right';
|
|
160
|
+
multiple?: {
|
|
161
|
+
type: LayoutRegionType;
|
|
162
|
+
size?: string;
|
|
163
|
+
};
|
|
160
164
|
};
|
|
161
165
|
|
|
162
166
|
// @public
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@genesislcap/foundation-layout",
|
|
3
3
|
"description": "Genesis Foundation UI App Layout",
|
|
4
|
-
"version": "14.
|
|
4
|
+
"version": "14.60.0",
|
|
5
5
|
"license": "SEE LICENSE IN license.txt",
|
|
6
6
|
"main": "dist/esm/index.js",
|
|
7
7
|
"types": "dist/foundation-layout.d.ts",
|
|
@@ -24,14 +24,14 @@
|
|
|
24
24
|
"test:debug": "genx test --debug"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
|
-
"@genesislcap/foundation-testing": "14.
|
|
28
|
-
"@genesislcap/genx": "14.
|
|
27
|
+
"@genesislcap/foundation-testing": "14.60.0",
|
|
28
|
+
"@genesislcap/genx": "14.60.0",
|
|
29
29
|
"rimraf": "^3.0.2"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
32
|
"@genesis-community/golden-layout": "^2.9.3",
|
|
33
|
-
"@genesislcap/foundation-comms": "14.
|
|
34
|
-
"@genesislcap/foundation-utils": "14.
|
|
33
|
+
"@genesislcap/foundation-comms": "14.60.0",
|
|
34
|
+
"@genesislcap/foundation-utils": "14.60.0",
|
|
35
35
|
"@microsoft/fast-components": "^2.21.3",
|
|
36
36
|
"@microsoft/fast-element": "^1.7.0",
|
|
37
37
|
"@microsoft/fast-foundation": "^2.33.2",
|
|
@@ -46,5 +46,5 @@
|
|
|
46
46
|
"access": "public"
|
|
47
47
|
},
|
|
48
48
|
"customElements": "dist/custom-elements.json",
|
|
49
|
-
"gitHead": "
|
|
49
|
+
"gitHead": "78e4c99a7097525e11e99ef7f058d5c464fa30ab"
|
|
50
50
|
}
|