@workday/canvas-kit-popup-stack 11.0.17 → 11.0.19

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.
@@ -34,7 +34,10 @@ export interface PopupStackItem {
34
34
  export declare function getValue(index: number, length: number): number;
35
35
  interface Stack {
36
36
  items: PopupStackItem[];
37
- container?: () => HTMLElement;
37
+ /**
38
+ * Returns the container of a stack given an optional element.
39
+ */
40
+ container?: (element?: HTMLElement) => HTMLElement;
38
41
  zIndex: {
39
42
  min: number;
40
43
  max: number;
@@ -1 +1 @@
1
- {"version":3,"file":"PopupStack.d.ts","sourceRoot":"","sources":["../../../lib/PopupStack.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,OAAO,EAAE,WAAW,CAAC;IACrB;;;;;;;;;;;;;;;OAeG;IACH,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB;AASD;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAO9D;AA2CD,UAAU,KAAK;IACb,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,WAAW,CAAC;IAC9B,MAAM,EAAE;QACN,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;QACZ,QAAQ,EAAE,OAAO,QAAQ,CAAC;KAC3B,CAAC;IACF,QAAQ,EAAE,OAAO,CAAC,OAAO,UAAU,CAAC,CAAC;CACtC;AAwFD;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,UAAU;IACrB;;;;;OAKG;uBACgB,WAAW;IAS9B;;;;;OAKG;cACO,cAAc,GAAG,IAAI;IAY/B;;;;;;OAMG;oBACa,WAAW,GAAG,IAAI;IAelC;;;;OAIG;uBACgB,WAAW,GAAG,OAAO;IAaxC;;;;OAIG;oDACiC,WAAW,EAAE;IAQjD;;;;;;;;;;;OAWG;wBACiB,WAAW,GAAG,IAAI;IA6BtC;;;;;;;;;;OAUG;sBACe,WAAW,eAAe,WAAW,GAAG,OAAO;IA2BjE;;;;;;OAMG;gCACyB,WAAW,GAAG,IAAI;IAoB9C;;;;OAIG;+BACwB,WAAW,GAAG,IAAI;IAY7C;;;;;;;;;;;;;;OAcG;mCAC4B,cAAc,GAAG,IAAI;CAqBrD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,UAAU,SAEzB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,YAAa,QAAQ,iBAAiB,CAAC,SAEhE,CAAC"}
1
+ {"version":3,"file":"PopupStack.d.ts","sourceRoot":"","sources":["../../../lib/PopupStack.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,OAAO,EAAE,WAAW,CAAC;IACrB;;;;;;;;;;;;;;;OAeG;IACH,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB;AASD;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAO9D;AA2CD,UAAU,KAAK;IACb,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB;;OAEG;IACH,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,WAAW,KAAK,WAAW,CAAC;IACnD,MAAM,EAAE;QACN,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;QACZ,QAAQ,EAAE,OAAO,QAAQ,CAAC;KAC3B,CAAC;IACF,QAAQ,EAAE,OAAO,CAAC,OAAO,UAAU,CAAC,CAAC;CACtC;AAuGD;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,UAAU;IACrB;;;;;OAKG;uBACgB,WAAW;IAS9B;;;;;OAKG;cACO,cAAc,GAAG,IAAI;IAY/B;;;;;;OAMG;oBACa,WAAW,GAAG,IAAI;IAgBlC;;;;OAIG;uBACgB,WAAW,GAAG,OAAO;IAaxC;;;;OAIG;oDACiC,WAAW,EAAE;IAQjD;;;;;;;;;;;OAWG;wBACiB,WAAW,GAAG,IAAI;IA6BtC;;;;;;;;;;OAUG;sBACe,WAAW,eAAe,WAAW,GAAG,OAAO;IA2BjE;;;;;;OAMG;gCACyB,WAAW,GAAG,IAAI;IAoB9C;;;;OAIG;+BACwB,WAAW,GAAG,IAAI;IAY7C;;;;;;;;;;;;;;OAcG;mCAC4B,cAAc,GAAG,IAAI;CAqBrD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,UAAU,SAEzB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,YAAa,QAAQ,iBAAiB,CAAC,SAEhE,CAAC"}
@@ -123,12 +123,26 @@ const setToWindow = (path, value) => {
123
123
  set(window, path, value);
124
124
  }
125
125
  };
126
+ /**
127
+ * TODO: Remove this after v12 and use `stack.container(el)` directly. This is temporary to make
128
+ * sure Popups can open in new windows while supporting older versions of Canvas Kit AND full screen
129
+ * mode.
130
+ */
131
+ const getContainer = (stack, element) => {
132
+ var _a;
133
+ let stackContainer = (_a = stack.container) === null || _a === void 0 ? void 0 : _a.call(stack);
134
+ if (stackContainer === document.body) {
135
+ // Here's the transitory code
136
+ stackContainer = element === null || element === void 0 ? void 0 : element.ownerDocument.body;
137
+ }
138
+ return stackContainer || document.body;
139
+ };
126
140
  // We need to make sure only one stack is ever in use on the page - ever. If a stack is already
127
141
  // defined on the page, we need to use that one. Never, ever, ever change this variable name on
128
142
  // window
129
143
  const stack = getFromWindow('workday.__popupStack') || {
130
144
  description: 'Global popup stack from @workday/canvas-kit/popup-stack',
131
- container: () => document.body,
145
+ container: el => (el === null || el === void 0 ? void 0 : el.ownerDocument.body) || document.body,
132
146
  items: [],
133
147
  zIndex: { min: 30, max: 50, getValue: getValue },
134
148
  _adapter: {},
@@ -182,14 +196,14 @@ exports.PopupStack = {
182
196
  * method when the event triggers.
183
197
  */
184
198
  add(item) {
185
- var _a, _b;
199
+ var _a;
186
200
  const stack = getTopStack();
187
201
  if ((_a = stack._adapter) === null || _a === void 0 ? void 0 : _a.add) {
188
202
  stack._adapter.add(item);
189
203
  return;
190
204
  }
191
205
  stack.items.push(item);
192
- (((_b = stack.container) === null || _b === void 0 ? void 0 : _b.call(stack)) || document.body).appendChild(item.element);
206
+ getContainer(stack, item.owner).appendChild(item.element);
193
207
  setZIndexOfElements(exports.PopupStack.getElements());
194
208
  },
195
209
  /**
@@ -200,7 +214,7 @@ exports.PopupStack = {
200
214
  * stack.
201
215
  */
202
216
  remove(element) {
203
- var _a, _b;
217
+ var _a;
204
218
  // Find the stack the popup belongs to.
205
219
  const stack = stacks.find(stack => !!exports.PopupStack.getElements(stack).find(el => el === element));
206
220
  if (stack) {
@@ -208,8 +222,9 @@ exports.PopupStack = {
208
222
  stack._adapter.remove(element);
209
223
  return;
210
224
  }
225
+ const item = stack.items.find(item => item.element === element);
211
226
  stack.items = stack.items.filter(item => item.element !== element);
212
- (((_b = stack.container) === null || _b === void 0 ? void 0 : _b.call(stack)) || document.body).removeChild(element);
227
+ getContainer(stack, item === null || item === void 0 ? void 0 : item.owner).removeChild(element);
213
228
  setZIndexOfElements(exports.PopupStack.getElements(stack));
214
229
  }
215
230
  },
@@ -34,7 +34,10 @@ export interface PopupStackItem {
34
34
  export declare function getValue(index: number, length: number): number;
35
35
  interface Stack {
36
36
  items: PopupStackItem[];
37
- container?: () => HTMLElement;
37
+ /**
38
+ * Returns the container of a stack given an optional element.
39
+ */
40
+ container?: (element?: HTMLElement) => HTMLElement;
38
41
  zIndex: {
39
42
  min: number;
40
43
  max: number;
@@ -1 +1 @@
1
- {"version":3,"file":"PopupStack.d.ts","sourceRoot":"","sources":["../../../lib/PopupStack.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,OAAO,EAAE,WAAW,CAAC;IACrB;;;;;;;;;;;;;;;OAeG;IACH,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB;AASD;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAO9D;AA2CD,UAAU,KAAK;IACb,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,WAAW,CAAC;IAC9B,MAAM,EAAE;QACN,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;QACZ,QAAQ,EAAE,OAAO,QAAQ,CAAC;KAC3B,CAAC;IACF,QAAQ,EAAE,OAAO,CAAC,OAAO,UAAU,CAAC,CAAC;CACtC;AAwFD;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,UAAU;IACrB;;;;;OAKG;uBACgB,WAAW;IAS9B;;;;;OAKG;cACO,cAAc,GAAG,IAAI;IAY/B;;;;;;OAMG;oBACa,WAAW,GAAG,IAAI;IAelC;;;;OAIG;uBACgB,WAAW,GAAG,OAAO;IAaxC;;;;OAIG;oDACiC,WAAW,EAAE;IAQjD;;;;;;;;;;;OAWG;wBACiB,WAAW,GAAG,IAAI;IA6BtC;;;;;;;;;;OAUG;sBACe,WAAW,eAAe,WAAW,GAAG,OAAO;IA2BjE;;;;;;OAMG;gCACyB,WAAW,GAAG,IAAI;IAoB9C;;;;OAIG;+BACwB,WAAW,GAAG,IAAI;IAY7C;;;;;;;;;;;;;;OAcG;mCAC4B,cAAc,GAAG,IAAI;CAqBrD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,UAAU,SAEzB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,YAAa,QAAQ,iBAAiB,CAAC,SAEhE,CAAC"}
1
+ {"version":3,"file":"PopupStack.d.ts","sourceRoot":"","sources":["../../../lib/PopupStack.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,OAAO,EAAE,WAAW,CAAC;IACrB;;;;;;;;;;;;;;;OAeG;IACH,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB;AASD;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAO9D;AA2CD,UAAU,KAAK;IACb,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB;;OAEG;IACH,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,WAAW,KAAK,WAAW,CAAC;IACnD,MAAM,EAAE;QACN,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;QACZ,QAAQ,EAAE,OAAO,QAAQ,CAAC;KAC3B,CAAC;IACF,QAAQ,EAAE,OAAO,CAAC,OAAO,UAAU,CAAC,CAAC;CACtC;AAuGD;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,UAAU;IACrB;;;;;OAKG;uBACgB,WAAW;IAS9B;;;;;OAKG;cACO,cAAc,GAAG,IAAI;IAY/B;;;;;;OAMG;oBACa,WAAW,GAAG,IAAI;IAgBlC;;;;OAIG;uBACgB,WAAW,GAAG,OAAO;IAaxC;;;;OAIG;oDACiC,WAAW,EAAE;IAQjD;;;;;;;;;;;OAWG;wBACiB,WAAW,GAAG,IAAI;IA6BtC;;;;;;;;;;OAUG;sBACe,WAAW,eAAe,WAAW,GAAG,OAAO;IA2BjE;;;;;;OAMG;gCACyB,WAAW,GAAG,IAAI;IAoB9C;;;;OAIG;+BACwB,WAAW,GAAG,IAAI;IAY7C;;;;;;;;;;;;;;OAcG;mCAC4B,cAAc,GAAG,IAAI;CAqBrD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,UAAU,SAEzB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,YAAa,QAAQ,iBAAiB,CAAC,SAEhE,CAAC"}
@@ -116,12 +116,26 @@ const setToWindow = (path, value) => {
116
116
  set(window, path, value);
117
117
  }
118
118
  };
119
+ /**
120
+ * TODO: Remove this after v12 and use `stack.container(el)` directly. This is temporary to make
121
+ * sure Popups can open in new windows while supporting older versions of Canvas Kit AND full screen
122
+ * mode.
123
+ */
124
+ const getContainer = (stack, element) => {
125
+ var _a;
126
+ let stackContainer = (_a = stack.container) === null || _a === void 0 ? void 0 : _a.call(stack);
127
+ if (stackContainer === document.body) {
128
+ // Here's the transitory code
129
+ stackContainer = element === null || element === void 0 ? void 0 : element.ownerDocument.body;
130
+ }
131
+ return stackContainer || document.body;
132
+ };
119
133
  // We need to make sure only one stack is ever in use on the page - ever. If a stack is already
120
134
  // defined on the page, we need to use that one. Never, ever, ever change this variable name on
121
135
  // window
122
136
  const stack = getFromWindow('workday.__popupStack') || {
123
137
  description: 'Global popup stack from @workday/canvas-kit/popup-stack',
124
- container: () => document.body,
138
+ container: el => (el === null || el === void 0 ? void 0 : el.ownerDocument.body) || document.body,
125
139
  items: [],
126
140
  zIndex: { min: 30, max: 50, getValue: getValue },
127
141
  _adapter: {},
@@ -175,14 +189,14 @@ export const PopupStack = {
175
189
  * method when the event triggers.
176
190
  */
177
191
  add(item) {
178
- var _a, _b;
192
+ var _a;
179
193
  const stack = getTopStack();
180
194
  if ((_a = stack._adapter) === null || _a === void 0 ? void 0 : _a.add) {
181
195
  stack._adapter.add(item);
182
196
  return;
183
197
  }
184
198
  stack.items.push(item);
185
- (((_b = stack.container) === null || _b === void 0 ? void 0 : _b.call(stack)) || document.body).appendChild(item.element);
199
+ getContainer(stack, item.owner).appendChild(item.element);
186
200
  setZIndexOfElements(PopupStack.getElements());
187
201
  },
188
202
  /**
@@ -193,7 +207,7 @@ export const PopupStack = {
193
207
  * stack.
194
208
  */
195
209
  remove(element) {
196
- var _a, _b;
210
+ var _a;
197
211
  // Find the stack the popup belongs to.
198
212
  const stack = stacks.find(stack => !!PopupStack.getElements(stack).find(el => el === element));
199
213
  if (stack) {
@@ -201,8 +215,9 @@ export const PopupStack = {
201
215
  stack._adapter.remove(element);
202
216
  return;
203
217
  }
218
+ const item = stack.items.find(item => item.element === element);
204
219
  stack.items = stack.items.filter(item => item.element !== element);
205
- (((_b = stack.container) === null || _b === void 0 ? void 0 : _b.call(stack)) || document.body).removeChild(element);
220
+ getContainer(stack, item === null || item === void 0 ? void 0 : item.owner).removeChild(element);
206
221
  setZIndexOfElements(PopupStack.getElements(stack));
207
222
  }
208
223
  },
package/lib/PopupStack.ts CHANGED
@@ -93,7 +93,10 @@ function getChildPopups(item: PopupStackItem, items: PopupStackItem[]): PopupSta
93
93
 
94
94
  interface Stack {
95
95
  items: PopupStackItem[];
96
- container?: () => HTMLElement;
96
+ /**
97
+ * Returns the container of a stack given an optional element.
98
+ */
99
+ container?: (element?: HTMLElement) => HTMLElement;
97
100
  zIndex: {
98
101
  min: number;
99
102
  max: number;
@@ -167,12 +170,27 @@ const setToWindow = (path: string, value: any) => {
167
170
  }
168
171
  };
169
172
 
173
+ /**
174
+ * TODO: Remove this after v12 and use `stack.container(el)` directly. This is temporary to make
175
+ * sure Popups can open in new windows while supporting older versions of Canvas Kit AND full screen
176
+ * mode.
177
+ */
178
+ const getContainer = (stack: Stack, element?: HTMLElement): HTMLElement => {
179
+ let stackContainer = stack.container?.();
180
+ if (stackContainer === document.body) {
181
+ // Here's the transitory code
182
+ stackContainer = element?.ownerDocument.body;
183
+ }
184
+
185
+ return stackContainer || document.body;
186
+ };
187
+
170
188
  // We need to make sure only one stack is ever in use on the page - ever. If a stack is already
171
189
  // defined on the page, we need to use that one. Never, ever, ever change this variable name on
172
190
  // window
173
191
  const stack: Stack = getFromWindow('workday.__popupStack') || {
174
192
  description: 'Global popup stack from @workday/canvas-kit/popup-stack',
175
- container: () => document.body,
193
+ container: el => el?.ownerDocument.body || document.body,
176
194
  items: [],
177
195
  zIndex: {min: 30, max: 50, getValue: getValue},
178
196
  _adapter: {},
@@ -235,7 +253,7 @@ export const PopupStack = {
235
253
  return;
236
254
  }
237
255
  stack.items.push(item);
238
- (stack.container?.() || document.body).appendChild(item.element);
256
+ getContainer(stack, item.owner).appendChild(item.element);
239
257
 
240
258
  setZIndexOfElements(PopupStack.getElements());
241
259
  },
@@ -255,8 +273,9 @@ export const PopupStack = {
255
273
  stack._adapter.remove(element);
256
274
  return;
257
275
  }
276
+ const item = stack.items.find(item => item.element === element);
258
277
  stack.items = stack.items.filter(item => item.element !== element);
259
- (stack.container?.() || document.body).removeChild(element);
278
+ getContainer(stack, item?.owner).removeChild(element);
260
279
 
261
280
  setZIndexOfElements(PopupStack.getElements(stack));
262
281
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@workday/canvas-kit-popup-stack",
3
- "version": "11.0.17",
3
+ "version": "11.0.19",
4
4
  "description": "Stack for managing popup UIs to coordinate global concerns like escape key handling and rendering order",
5
5
  "author": "Workday, Inc. (https://www.workday.com)",
6
6
  "license": "Apache-2.0",
@@ -37,5 +37,5 @@
37
37
  "dependencies": {
38
38
  "screenfull": "^5.2.0"
39
39
  },
40
- "gitHead": "bea3e7c2462c53db72574e524d8dee0a72fb0b95"
40
+ "gitHead": "c2d95558a8716248923ecb281c94406c0071792c"
41
41
  }