@simplysm/angular 14.2.7 → 14.2.9

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 (52) hide show
  1. package/dist/controls/button/sd-additional-button.js +1 -1
  2. package/dist/controls/button/sd-anchor.js +1 -1
  3. package/dist/controls/button/sd-button.js +1 -1
  4. package/dist/controls/button/sd-modal-select-button.js +1 -1
  5. package/dist/controls/checkbox/sd-checkbox.js +1 -1
  6. package/dist/controls/checkbox/sd-switch.js +1 -1
  7. package/dist/controls/dropdown/sd-dropdown-popup.js +1 -1
  8. package/dist/controls/gap/sd-gap.js +1 -1
  9. package/dist/controls/input/sd-date-range-picker.js +1 -1
  10. package/dist/controls/input/sd-numpad.js +1 -1
  11. package/dist/controls/input/sd-range.js +1 -1
  12. package/dist/controls/input/sd-textarea.js +1 -1
  13. package/dist/controls/input/sd-textfield.js +1 -1
  14. package/dist/controls/list/sd-list-item.js +2 -2
  15. package/dist/controls/list/sd-list.js +1 -1
  16. package/dist/controls/pagination/sd-pagination.js +1 -1
  17. package/dist/controls/select/sd-select-button.js +1 -1
  18. package/dist/controls/select/sd-select-item.js +1 -1
  19. package/dist/controls/select/sd-select.js +1 -1
  20. package/dist/controls/tab/sd-tab-item.js +1 -1
  21. package/dist/controls/tab/sd-tab.js +1 -1
  22. package/dist/core/busy/sd-busy-container.js +1 -1
  23. package/dist/core/modal/injectDragResize.d.ts +10 -0
  24. package/dist/core/modal/injectDragResize.d.ts.map +1 -1
  25. package/dist/core/modal/injectDragResize.js +61 -16
  26. package/dist/core/modal/sd-modal.d.ts +6 -0
  27. package/dist/core/modal/sd-modal.d.ts.map +1 -1
  28. package/dist/core/modal/sd-modal.js +69 -21
  29. package/dist/core/modal/sd-modal.provider.d.ts.map +1 -1
  30. package/dist/core/toast/sd-toast-container.js +1 -1
  31. package/dist/core/toast/sd-toast.js +1 -1
  32. package/dist/data/kanban/sd-kanban-board.js +1 -1
  33. package/dist/data/kanban/sd-kanban-lane.js +1 -1
  34. package/dist/data/kanban/sd-kanban.js +1 -1
  35. package/dist/data/permission-table/sd-permission-table.js +1 -1
  36. package/dist/data/sheet/sd-sheet.js +1 -1
  37. package/dist/data/state-preset/sd-state-preset.js +1 -1
  38. package/dist/features/editor/sd-markdown-editor.js +1 -1
  39. package/dist/features/editor/sd-tiptap-editor.js +1 -1
  40. package/dist/features/visual/sd-calendar.js +1 -1
  41. package/dist/features/visual/sd-label.js +1 -1
  42. package/dist/features/visual/sd-note.js +1 -1
  43. package/dist/features/visual/sd-progress.js +1 -1
  44. package/dist/layout/sidebar/sd-sidebar-container.js +1 -1
  45. package/dist/layout/sidebar/sd-sidebar-user.js +1 -1
  46. package/dist/layout/sidebar/sd-sidebar.js +1 -1
  47. package/dist/layout/topbar/sd-topbar-menu.js +1 -1
  48. package/dist/layout/topbar/sd-topbar.js +1 -1
  49. package/package.json +24 -24
  50. package/src/core/modal/injectDragResize.ts +76 -17
  51. package/src/core/modal/sd-modal.provider.ts +1 -4
  52. package/src/core/modal/sd-modal.ts +72 -14
@@ -1,4 +1,53 @@
1
1
  import { inject, DestroyRef } from "@angular/core";
2
+ /** `auto`, `none` 등 길이가 아닌 값은 하한 없음(0)으로 본다. */
3
+ function parseCssMinPx(value) {
4
+ const parsed = parseFloat(value);
5
+ return Number.isNaN(parsed) ? 0 : parsed;
6
+ }
7
+ function shiftPercentSize(dialogStyle, prop, padPx) {
8
+ if (padPx === 0)
9
+ return;
10
+ const value = dialogStyle[prop];
11
+ if (!value.includes("%"))
12
+ return;
13
+ dialogStyle[prop] = `calc(${value} - ${padPx}px)`;
14
+ }
15
+ /**
16
+ * `._dialog` 는 평소 CSS 로 중앙 정렬(`position: relative` + `margin: 0 auto`)되어 있어
17
+ * `left`/`top` 이 "정상 배치 위치 대비 상대 offset" 으로 해석된다.
18
+ * 드래그, 리사이즈는 절대 좌표로 계산하므로 시작 시점에 절대 좌표계로 전환한다.
19
+ * 전환만으로는 위치, 크기가 변하지 않으며, 이미 전환된 요소에 다시 적용해도 결과가 같다.
20
+ */
21
+ export function pinDialogAbsolute(dialogEl) {
22
+ const wasRelative = getComputedStyle(dialogEl).position === "relative";
23
+ const parentEl = dialogEl.offsetParent;
24
+ const beforeRect = dialogEl.getBoundingClientRect();
25
+ const roundedLeft = dialogEl.offsetLeft;
26
+ const roundedTop = dialogEl.offsetTop;
27
+ dialogEl.style.position = "absolute";
28
+ dialogEl.style.margin = "0";
29
+ dialogEl.style.right = "auto";
30
+ dialogEl.style.bottom = "auto";
31
+ dialogEl.style.left = `${roundedLeft}px`;
32
+ dialogEl.style.top = `${roundedTop}px`;
33
+ if (wasRelative && parentEl != null) {
34
+ // 백분율 크기의 기준 박스가 부모 content box 에서 offsetParent padding box 로 바뀐다.
35
+ const parentStyle = getComputedStyle(parentEl);
36
+ const padX = parseFloat(parentStyle.paddingLeft) + parseFloat(parentStyle.paddingRight);
37
+ const padY = parseFloat(parentStyle.paddingTop) + parseFloat(parentStyle.paddingBottom);
38
+ shiftPercentSize(dialogEl.style, "width", padX);
39
+ shiftPercentSize(dialogEl.style, "maxWidth", padX);
40
+ shiftPercentSize(dialogEl.style, "height", padY);
41
+ shiftPercentSize(dialogEl.style, "maxHeight", padY);
42
+ }
43
+ // offsetLeft/offsetTop 은 정수로 반올림되므로, 전환 전후 실제 위치 차이만큼 되돌린다.
44
+ const afterRect = dialogEl.getBoundingClientRect();
45
+ const pinnedLeft = roundedLeft - (afterRect.left - beforeRect.left);
46
+ const pinnedTop = roundedTop - (afterRect.top - beforeRect.top);
47
+ dialogEl.style.left = `${pinnedLeft}px`;
48
+ dialogEl.style.top = `${pinnedTop}px`;
49
+ return { left: pinnedLeft, top: pinnedTop };
50
+ }
2
51
  export function injectDragResize(opt) {
3
52
  const destroyRef = inject(DestroyRef);
4
53
  let dragState;
@@ -22,8 +71,8 @@ export function injectDragResize(opt) {
22
71
  return;
23
72
  const dx = event.clientX - resizeState.startX;
24
73
  const dy = event.clientY - resizeState.startY;
25
- const minW = opt.minWidthPx() ?? 0;
26
- const minH = opt.minHeightPx() ?? 0;
74
+ const minW = resizeState.minWidth;
75
+ const minH = resizeState.minHeight;
27
76
  let newWidth = resizeState.startWidth;
28
77
  let newHeight = resizeState.startHeight;
29
78
  let newLeft = resizeState.startLeft;
@@ -71,23 +120,16 @@ export function injectDragResize(opt) {
71
120
  opt.onEnd();
72
121
  }
73
122
  }
74
- function getParentRect(dialogEl) {
75
- return dialogEl.offsetParent?.getBoundingClientRect() ?? {
76
- left: 0,
77
- top: 0,
78
- };
79
- }
80
123
  function startDrag(event) {
81
124
  const dialogEl = opt.getDialogEl();
82
125
  if (dialogEl == null)
83
126
  return;
84
- const dialogRect = dialogEl.getBoundingClientRect();
85
- const parentRect = getParentRect(dialogEl);
127
+ const pinned = pinDialogAbsolute(dialogEl);
86
128
  dragState = {
87
129
  startX: event.clientX,
88
130
  startY: event.clientY,
89
- startLeft: dialogRect.left - parentRect.left,
90
- startTop: dialogRect.top - parentRect.top,
131
+ startLeft: pinned.left,
132
+ startTop: pinned.top,
91
133
  };
92
134
  document.addEventListener("mousemove", onDocumentMouseMove);
93
135
  document.addEventListener("mouseup", onDocumentMouseUp);
@@ -96,16 +138,19 @@ export function injectDragResize(opt) {
96
138
  const dialogEl = opt.getDialogEl();
97
139
  if (dialogEl == null)
98
140
  return;
99
- const dialogRect = dialogEl.getBoundingClientRect();
100
- const parentRect = getParentRect(dialogEl);
141
+ const pinned = pinDialogAbsolute(dialogEl);
142
+ const dialogStyle = getComputedStyle(dialogEl);
101
143
  resizeState = {
102
144
  dir,
103
145
  startX: event.clientX,
104
146
  startY: event.clientY,
105
147
  startWidth: dialogEl.offsetWidth,
106
148
  startHeight: dialogEl.offsetHeight,
107
- startLeft: dialogRect.left - parentRect.left,
108
- startTop: dialogRect.top - parentRect.top,
149
+ startLeft: pinned.left,
150
+ startTop: pinned.top,
151
+ // CSS 하한을 넘겨 줄이면 실제 크기는 안 줄고 반대쪽 변만 밀려나므로, 실제 제약을 하한으로 삼는다.
152
+ minWidth: Math.max(opt.minWidthPx() ?? 0, parseCssMinPx(dialogStyle.minWidth)),
153
+ minHeight: Math.max(opt.minHeightPx() ?? 0, parseCssMinPx(dialogStyle.minHeight)),
109
154
  };
110
155
  document.addEventListener("mousemove", onDocumentMouseMove);
111
156
  document.addEventListener("mouseup", onDocumentMouseUp);
@@ -30,8 +30,12 @@ export declare class SdModal {
30
30
  actionTplRef: import("@angular/core").InputSignal<TemplateRef<any> | undefined>;
31
31
  closeRequest: import("@angular/core").OutputEmitterRef<void>;
32
32
  private readonly _dragResize;
33
+ /** 화면 넘침 클램프로 덮기 직전의 크기. 클램프 중이 아니면 undefined. */
34
+ private _clampedWidth;
35
+ private _clampedHeight;
33
36
  constructor();
34
37
  onResizeMouseDown(event: MouseEvent, dir: string): void;
38
+ onDialogMouseDown(): void;
35
39
  onHeaderMouseDown(event: MouseEvent): void;
36
40
  onBackdropClick(): void;
37
41
  onCloseButtonClick(): void;
@@ -40,8 +44,10 @@ export declare class SdModal {
40
44
  onHostResize(event: SdResizeEvent): void;
41
45
  onDialogResize(event: SdResizeEvent): void;
42
46
  onWindowResize(): void;
47
+ private _clampIntoHost;
43
48
  private _requestClose;
44
49
  private _bringToFront;
50
+ private _forgetClampedSize;
45
51
  private _calcHeight;
46
52
  private _calcWidth;
47
53
  private _getDialogEl;
@@ -1 +1 @@
1
- {"version":3,"file":"sd-modal.d.ts","sourceRoot":"","sources":["../../../src/core/modal/sd-modal.ts"],"names":[],"mappings":"AAAA,OAAO,EAWL,KAAK,WAAW,EAEjB,MAAM,eAAe,CAAC;AASvB,OAAO,EAAqB,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,wBAAwB,CAAC;;;AAEhC,qBAkTa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;IAC1D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAwD;IAC1F,OAAO,CAAC,QAAQ,CAAC,eAAe,CAEc;IAC9C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAwB;IACtD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;IAEhD,SAAS,CAAC,QAAQ,CAAC,OAAO,yVAAW;IAErC,IAAI,+CAAgB;IACpB,GAAG,0DAAwC;IAC3C,KAAK,8CAAa;IAClB,UAAU,+CAAgB;IAC1B,eAAe,+CAAgB;IAC/B,WAAW,0DAAwC;IACnD,kBAAkB,+CAAe;IACjC,mBAAmB,+CAAe;IAClC,KAAK,+CAAgB;IACrB,IAAI,+CAAgB;IACpB,SAAS,+CAAgB;IACzB,OAAO,+CAAgB;IACvB,QAAQ,gFAA8D;IACtE,WAAW,0DAAwC;IACnD,UAAU,0DAAwC;IAClD,QAAQ,0DAAwC;IAChD,OAAO,0DAAwC;IAC/C,YAAY,oEAAkD;IAE9D,YAAY,iDAAkB;IAE9B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAKzB;;IAoCH,iBAAiB,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAKvD,iBAAiB,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAO1C,eAAe,IAAI,IAAI;IAKvB,kBAAkB,IAAI,IAAI;IAI1B,eAAe,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAS3C,aAAa,IAAI,IAAI;IAIrB,YAAY,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAKxC,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAK1C,cAAc,IAAI,IAAI;IAYtB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,aAAa;IAgBrB,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,YAAY;YAIN,WAAW;YAgBX,cAAc;yCAjMjB,OAAO;2CAAP,OAAO;CAgNnB"}
1
+ {"version":3,"file":"sd-modal.d.ts","sourceRoot":"","sources":["../../../src/core/modal/sd-modal.ts"],"names":[],"mappings":"AAAA,OAAO,EAWL,KAAK,WAAW,EAEjB,MAAM,eAAe,CAAC;AASvB,OAAO,EAAqB,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,wBAAwB,CAAC;;;AAEhC,qBAmTa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;IAC1D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAwD;IAC1F,OAAO,CAAC,QAAQ,CAAC,eAAe,CAEc;IAC9C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAwB;IACtD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;IAEhD,SAAS,CAAC,QAAQ,CAAC,OAAO,yVAAW;IAErC,IAAI,+CAAgB;IACpB,GAAG,0DAAwC;IAC3C,KAAK,8CAAa;IAClB,UAAU,+CAAgB;IAC1B,eAAe,+CAAgB;IAC/B,WAAW,0DAAwC;IACnD,kBAAkB,+CAAe;IACjC,mBAAmB,+CAAe;IAClC,KAAK,+CAAgB;IACrB,IAAI,+CAAgB;IACpB,SAAS,+CAAgB;IACzB,OAAO,+CAAgB;IACvB,QAAQ,gFAA8D;IACtE,WAAW,0DAAwC;IACnD,UAAU,0DAAwC;IAClD,QAAQ,0DAAwC;IAChD,OAAO,0DAAwC;IAC/C,YAAY,oEAAkD;IAE9D,YAAY,iDAAkB;IAE9B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAKzB;IAEH,kDAAkD;IAClD,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,cAAc,CAAqB;;IAqC3C,iBAAiB,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAOvD,iBAAiB,IAAI,IAAI;IAIzB,iBAAiB,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAO1C,eAAe,IAAI,IAAI;IAKvB,kBAAkB,IAAI,IAAI;IAI1B,eAAe,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAS3C,aAAa,IAAI,IAAI;IAIrB,YAAY,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAKxC,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAK1C,cAAc,IAAI,IAAI;IAQtB,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,aAAa;IAgBrB,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,WAAW;IAsBnB,OAAO,CAAC,UAAU;IAoBlB,OAAO,CAAC,YAAY;YAIN,WAAW;YAoBX,cAAc;yCAnPjB,OAAO;2CAAP,OAAO;CAyQnB"}
@@ -5,7 +5,7 @@ import { tablerX } from "@ng-icons/tabler-icons";
5
5
  import { SdActivatedModalProvider } from "./sd-activated-modal.provider";
6
6
  import { SdSystemConfigProvider } from "../config/sd-system-config.provider";
7
7
  import { injectFocusTrap } from "./injectFocusTrap";
8
- import { injectDragResize } from "./injectDragResize";
8
+ import { injectDragResize, pinDialogAbsolute } from "./injectDragResize";
9
9
  import { SdAnchor } from "../../controls/button/sd-anchor";
10
10
  import { SdResizeDirective } from "../events/sd-resize";
11
11
  import "@simplysm/core-browser";
@@ -130,6 +130,9 @@ export class SdModal {
130
130
  minHeightPx: this.minHeightPx,
131
131
  onEnd: () => void this._saveConfig().catch((err) => this._errorHandler.handleError(err)),
132
132
  });
133
+ /** 화면 넘침 클램프로 덮기 직전의 크기. 클램프 중이 아니면 undefined. */
134
+ _clampedWidth;
135
+ _clampedHeight;
133
136
  constructor() {
134
137
  // data-sd-init: 첫 렌더 후 설정하여 CSS transition 트리거 허용
135
138
  afterNextRender(() => {
@@ -154,6 +157,7 @@ export class SdModal {
154
157
  else {
155
158
  dialogEl.style.height = "";
156
159
  }
160
+ this._forgetClampedSize();
157
161
  });
158
162
  // key 기반 설정 복원
159
163
  effect(() => {
@@ -165,8 +169,13 @@ export class SdModal {
165
169
  }
166
170
  onResizeMouseDown(event, dir) {
167
171
  event.preventDefault();
172
+ // 사용자가 직접 정하는 크기가 자동 클램프 이전 크기보다 우선한다.
173
+ this._forgetClampedSize();
168
174
  this._dragResize.startResize(event, dir);
169
175
  }
176
+ onDialogMouseDown() {
177
+ this._bringToFront();
178
+ }
170
179
  onHeaderMouseDown(event) {
171
180
  if (!this.movable())
172
181
  return;
@@ -212,12 +221,20 @@ export class SdModal {
212
221
  const dialogEl = this._getDialogEl();
213
222
  if (dialogEl == null)
214
223
  return;
224
+ // 위치를 잡지 않은 모달은 CSS 중앙 정렬이 창 크기를 따라가므로 보정 대상이 아니다.
225
+ if (dialogEl.style.left === "" && dialogEl.style.top === "")
226
+ return;
227
+ this._clampIntoHost(dialogEl);
228
+ }
229
+ _clampIntoHost(dialogEl) {
215
230
  const hostEl = this._elRef.nativeElement;
216
- if (dialogEl.offsetLeft > hostEl.offsetWidth - 100) {
217
- dialogEl.style.left = hostEl.offsetWidth - 100 + "px";
231
+ const maxLeft = Math.max(0, hostEl.offsetWidth - 100);
232
+ if (dialogEl.offsetLeft > maxLeft) {
233
+ dialogEl.style.left = `${maxLeft}px`;
218
234
  }
219
- if (dialogEl.offsetTop > hostEl.offsetHeight - 100) {
220
- dialogEl.style.top = hostEl.offsetHeight - 100 + "px";
235
+ const maxTop = Math.max(0, hostEl.offsetHeight - 100);
236
+ if (dialogEl.offsetTop > maxTop) {
237
+ dialogEl.style.top = `${maxTop}px`;
221
238
  }
222
239
  }
223
240
  _requestClose() {
@@ -244,25 +261,47 @@ export class SdModal {
244
261
  return;
245
262
  hostEl.style.zIndex = String(maxZ + 1);
246
263
  }
264
+ _forgetClampedSize() {
265
+ this._clampedWidth = undefined;
266
+ this._clampedHeight = undefined;
267
+ }
247
268
  _calcHeight() {
248
269
  const dialogEl = this._getDialogEl();
249
270
  if (dialogEl == null)
250
271
  return;
251
- const style = getComputedStyle(this._elRef.nativeElement);
252
- const paddingTop = style.paddingTop === "" ? 0 : parseInt(style.paddingTop, 10) || 0;
253
- if (dialogEl.offsetHeight > this._elRef.nativeElement.offsetHeight - paddingTop) {
272
+ // 클램프 중이면 dialog 높이가 호스트에 맞춰져 있어 실제 필요 높이를 알 수 없다. 먼저 되돌려 잰다.
273
+ if (this._clampedHeight != null) {
274
+ dialogEl.style.height = this._clampedHeight;
275
+ dialogEl.style.maxHeight = "";
276
+ }
277
+ const hostEl = this._elRef.nativeElement;
278
+ const paddingTop = parseFloat(getComputedStyle(hostEl).paddingTop) || 0;
279
+ if (dialogEl.offsetHeight > hostEl.offsetHeight - paddingTop) {
280
+ this._clampedHeight ??= dialogEl.style.height;
254
281
  dialogEl.style.maxHeight = "100%";
255
282
  dialogEl.style.height = "100%";
256
283
  }
284
+ else {
285
+ this._clampedHeight = undefined;
286
+ }
257
287
  }
258
288
  _calcWidth() {
259
289
  const dialogEl = this._getDialogEl();
260
290
  if (dialogEl == null)
261
291
  return;
262
- if (dialogEl.offsetWidth > this._elRef.nativeElement.offsetWidth) {
292
+ if (this._clampedWidth != null) {
293
+ dialogEl.style.width = this._clampedWidth;
294
+ dialogEl.style.maxWidth = "";
295
+ }
296
+ const hostEl = this._elRef.nativeElement;
297
+ if (dialogEl.offsetWidth > hostEl.offsetWidth) {
298
+ this._clampedWidth ??= dialogEl.style.width;
263
299
  dialogEl.style.maxWidth = "100%";
264
300
  dialogEl.style.width = "100%";
265
301
  }
302
+ else {
303
+ this._clampedWidth = undefined;
304
+ }
266
305
  }
267
306
  _getDialogEl() {
268
307
  return this._elRef.nativeElement.querySelector("._dialog");
@@ -274,11 +313,14 @@ export class SdModal {
274
313
  const dialogEl = this._getDialogEl();
275
314
  if (dialogEl == null)
276
315
  return;
316
+ // 클램프 중이면 화면에 맞춘 값이 아니라 그 직전 크기를 저장해야 다시 열 때 원래 크기로 뜬다.
317
+ const savedWidth = this._clampedWidth ?? dialogEl.style.width;
318
+ const savedHeight = this._clampedHeight ?? dialogEl.style.height;
277
319
  const config = {};
278
- if (dialogEl.style.width !== "")
279
- config["width"] = dialogEl.style.width;
280
- if (dialogEl.style.height !== "")
281
- config["height"] = dialogEl.style.height;
320
+ if (savedWidth !== "")
321
+ config["width"] = savedWidth;
322
+ if (savedHeight !== "")
323
+ config["height"] = savedHeight;
282
324
  if (dialogEl.style.left !== "")
283
325
  config["left"] = dialogEl.style.left;
284
326
  if (dialogEl.style.top !== "")
@@ -298,23 +340,28 @@ export class SdModal {
298
340
  dialogEl.style.width = config["width"];
299
341
  if (config["height"] != null)
300
342
  dialogEl.style.height = config["height"];
301
- if (config["left"] != null)
302
- dialogEl.style.left = config["left"];
303
- if (config["top"] != null)
304
- dialogEl.style.top = config["top"];
343
+ this._forgetClampedSize();
344
+ if (config["left"] != null || config["top"] != null) {
345
+ pinDialogAbsolute(dialogEl);
346
+ if (config["left"] != null)
347
+ dialogEl.style.left = config["left"];
348
+ if (config["top"] != null)
349
+ dialogEl.style.top = config["top"];
350
+ this._clampIntoHost(dialogEl);
351
+ }
305
352
  }
306
353
  static ɵfac = function SdModal_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SdModal)(); };
307
354
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SdModal, selectors: [["sd-modal"]], hostVars: 4, hostBindings: function SdModal_HostBindings(rf, ctx) { if (rf & 1) {
308
355
  i0.ɵɵlistener("sdResize", function SdModal_sdResize_HostBindingHandler($event) { return ctx.onHostResize($event); })("resize", function SdModal_resize_HostBindingHandler() { return ctx.onWindowResize(); }, i0.ɵɵresolveWindow);
309
356
  } if (rf & 2) {
310
357
  i0.ɵɵattribute("data-sd-open", ctx.open() || undefined)("data-sd-float", ctx.float() || undefined)("data-sd-fill", ctx.fill() || undefined)("data-sd-position", ctx.position() || undefined);
311
- } }, inputs: { open: [1, "open"], key: [1, "key"], title: [1, "title"], hideHeader: [1, "hideHeader"], hideCloseButton: [1, "hideCloseButton"], headerStyle: [1, "headerStyle"], useCloseByBackdrop: [1, "useCloseByBackdrop"], useCloseByEscapeKey: [1, "useCloseByEscapeKey"], float: [1, "float"], fill: [1, "fill"], resizable: [1, "resizable"], movable: [1, "movable"], position: [1, "position"], minHeightPx: [1, "minHeightPx"], minWidthPx: [1, "minWidthPx"], heightPx: [1, "heightPx"], widthPx: [1, "widthPx"], actionTplRef: [1, "actionTplRef"] }, outputs: { open: "openChange", closeRequest: "closeRequest" }, features: [i0.ɵɵHostDirectivesFeature([{ directive: i1.SdResizeDirective, outputs: ["sdResize", "sdResize"] }])], ngContentSelectors: _c0, decls: 6, vars: 2, consts: [["tabindex", "-1", "role", "button", 1, "_backdrop", 3, "click", "keydown.enter"], ["tabindex", "-1", 1, "_dialog", 3, "keydown", "focus", "sdResize"], [1, "_header", 3, "style"], [1, "_content"], [1, "_header", 3, "mousedown"], [1, "_title"], [1, "_close-btn", 3, "theme"], [4, "ngTemplateOutlet"], [1, "_close-btn", 3, "click", "theme"], [3, "svg"], ["data-resize-dir", "top", 1, "_resize-handle", "_resize-top", 3, "mousedown"], ["data-resize-dir", "bottom", 1, "_resize-handle", "_resize-bottom", 3, "mousedown"], ["data-resize-dir", "left", 1, "_resize-handle", "_resize-left", 3, "mousedown"], ["data-resize-dir", "right", 1, "_resize-handle", "_resize-right", 3, "mousedown"], ["data-resize-dir", "top-left", 1, "_resize-handle", "_resize-top-left", 3, "mousedown"], ["data-resize-dir", "top-right", 1, "_resize-handle", "_resize-top-right", 3, "mousedown"], ["data-resize-dir", "bottom-left", 1, "_resize-handle", "_resize-bottom-left", 3, "mousedown"], ["data-resize-dir", "bottom-right", 1, "_resize-handle", "_resize-bottom-right", 3, "mousedown"]], template: function SdModal_Template(rf, ctx) { if (rf & 1) {
358
+ } }, inputs: { open: [1, "open"], key: [1, "key"], title: [1, "title"], hideHeader: [1, "hideHeader"], hideCloseButton: [1, "hideCloseButton"], headerStyle: [1, "headerStyle"], useCloseByBackdrop: [1, "useCloseByBackdrop"], useCloseByEscapeKey: [1, "useCloseByEscapeKey"], float: [1, "float"], fill: [1, "fill"], resizable: [1, "resizable"], movable: [1, "movable"], position: [1, "position"], minHeightPx: [1, "minHeightPx"], minWidthPx: [1, "minWidthPx"], heightPx: [1, "heightPx"], widthPx: [1, "widthPx"], actionTplRef: [1, "actionTplRef"] }, outputs: { open: "openChange", closeRequest: "closeRequest" }, features: [i0.ɵɵHostDirectivesFeature([{ directive: i1.SdResizeDirective, outputs: ["sdResize", "sdResize"] }])], ngContentSelectors: _c0, decls: 6, vars: 2, consts: [["tabindex", "-1", "role", "button", 1, "_backdrop", 3, "click", "keydown.enter"], ["tabindex", "-1", 1, "_dialog", 3, "mousedown", "keydown", "focus", "sdResize"], [1, "_header", 3, "style"], [1, "_content"], [1, "_header", 3, "mousedown"], [1, "_title"], [1, "_close-btn", 3, "theme"], [4, "ngTemplateOutlet"], [1, "_close-btn", 3, "click", "theme"], [3, "svg"], ["data-resize-dir", "top", 1, "_resize-handle", "_resize-top", 3, "mousedown"], ["data-resize-dir", "bottom", 1, "_resize-handle", "_resize-bottom", 3, "mousedown"], ["data-resize-dir", "left", 1, "_resize-handle", "_resize-left", 3, "mousedown"], ["data-resize-dir", "right", 1, "_resize-handle", "_resize-right", 3, "mousedown"], ["data-resize-dir", "top-left", 1, "_resize-handle", "_resize-top-left", 3, "mousedown"], ["data-resize-dir", "top-right", 1, "_resize-handle", "_resize-top-right", 3, "mousedown"], ["data-resize-dir", "bottom-left", 1, "_resize-handle", "_resize-bottom-left", 3, "mousedown"], ["data-resize-dir", "bottom-right", 1, "_resize-handle", "_resize-bottom-right", 3, "mousedown"]], template: function SdModal_Template(rf, ctx) { if (rf & 1) {
312
359
  i0.ɵɵprojectionDef();
313
360
  i0.ɵɵelementStart(0, "div", 0);
314
361
  i0.ɵɵlistener("click", function SdModal_Template_div_click_0_listener() { return ctx.onBackdropClick(); })("keydown.enter", function SdModal_Template_div_keydown_enter_0_listener() { return ctx.onBackdropClick(); });
315
362
  i0.ɵɵelementEnd();
316
363
  i0.ɵɵelementStart(1, "div", 1);
317
- i0.ɵɵlistener("keydown", function SdModal_Template_div_keydown_1_listener($event) { return ctx.onDialogKeydown($event); })("focus", function SdModal_Template_div_focus_1_listener() { return ctx.onDialogFocus(); })("sdResize", function SdModal_Template_div_sdResize_1_listener($event) { return ctx.onDialogResize($event); });
364
+ i0.ɵɵlistener("mousedown", function SdModal_Template_div_mousedown_1_listener() { return ctx.onDialogMouseDown(); })("keydown", function SdModal_Template_div_keydown_1_listener($event) { return ctx.onDialogKeydown($event); })("focus", function SdModal_Template_div_focus_1_listener() { return ctx.onDialogFocus(); })("sdResize", function SdModal_Template_div_sdResize_1_listener($event) { return ctx.onDialogResize($event); });
318
365
  i0.ɵɵconditionalCreate(2, SdModal_Conditional_2_Template, 5, 5, "div", 2);
319
366
  i0.ɵɵelementStart(3, "div", 3);
320
367
  i0.ɵɵprojection(4);
@@ -326,7 +373,7 @@ export class SdModal {
326
373
  i0.ɵɵconditional(!ctx.hideHeader() ? 2 : -1);
327
374
  i0.ɵɵadvance(3);
328
375
  i0.ɵɵconditional(ctx.resizable() ? 5 : -1);
329
- } }, dependencies: [NgTemplateOutlet, NgIcon, SdAnchor, SdResizeDirective], styles: ["sd-modal {\n display: block;\n position: fixed;\n z-index: var(--sd-z-modal);\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n padding-top: calc(var(--sd-topbar-height) + var(--sd-gap-sm));\n opacity: 0;\n transition: opacity var(--sd-animation-duration) ease-in-out;\n pointer-events: none;\n}\nsd-modal > ._backdrop {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: var(--sd-bg-backdrop);\n}\nsd-modal > ._dialog {\n position: relative;\n display: flex;\n flex-direction: column;\n margin: 0 auto;\n width: fit-content;\n min-width: 200px;\n background-color: var(--sd-bg-elevated);\n border: 1px solid var(--sd-modal-bd);\n overflow: hidden;\n box-shadow: 0 calc(16 * var(--sd-shadow-size)) calc(16 * 4 * var(--sd-shadow-size) * var(--sd-shadow-blur-mult)) var(--sd-shadow-color), 0 var(--sd-shadow-size) calc(var(--sd-shadow-size) * var(--sd-shadow-blur-mult)) var(--sd-shadow-color);\n border-radius: var(--sd-radius-default);\n transform: translateY(-25px);\n transition: transform var(--sd-animation-duration) ease-in-out;\n}\nsd-modal > ._dialog:focus {\n outline: none;\n}\nsd-modal > ._dialog > ._header {\n display: flex;\n align-items: center;\n user-select: none;\n border-bottom: 1px solid var(--sd-bd-hairline);\n background-color: var(--sd-modal-header-bg);\n color: var(--sd-modal-header-tx);\n}\nsd-modal > ._dialog > ._header > ._title {\n flex: 1;\n padding: var(--sd-gap-sm) var(--sd-gap-default);\n}\nsd-modal > ._dialog > ._header > ._close-btn {\n padding: var(--sd-gap-sm) var(--sd-gap-default);\n color: var(--sd-modal-header-tx-muted);\n}\nsd-modal > ._dialog > ._header > ._close-btn:hover {\n color: var(--sd-modal-header-tx);\n}\nsd-modal > ._dialog > ._content {\n flex: 1;\n overflow: auto;\n}\nsd-modal > ._dialog > ._resize-handle {\n position: absolute;\n}\nsd-modal > ._dialog > ._resize-handle._resize-left {\n top: 0;\n left: 0;\n width: var(--sd-gap-sm);\n height: 100%;\n cursor: ew-resize;\n}\nsd-modal > ._dialog > ._resize-handle._resize-right {\n top: 0;\n right: 0;\n width: var(--sd-gap-sm);\n height: 100%;\n cursor: ew-resize;\n}\nsd-modal > ._dialog > ._resize-handle._resize-top {\n top: 0;\n left: 0;\n width: 100%;\n height: var(--sd-gap-sm);\n cursor: ns-resize;\n}\nsd-modal > ._dialog > ._resize-handle._resize-top-right {\n right: 0;\n top: 0;\n width: var(--sd-gap-sm);\n height: var(--sd-gap-sm);\n z-index: 1;\n cursor: nesw-resize;\n}\nsd-modal > ._dialog > ._resize-handle._resize-top-left {\n left: 0;\n top: 0;\n width: var(--sd-gap-sm);\n height: var(--sd-gap-sm);\n cursor: nwse-resize;\n z-index: 1;\n}\nsd-modal > ._dialog > ._resize-handle._resize-bottom {\n bottom: 0;\n left: 0;\n width: 100%;\n height: var(--sd-gap-sm);\n cursor: ns-resize;\n}\nsd-modal > ._dialog > ._resize-handle._resize-bottom-right {\n right: 0;\n bottom: 0;\n width: var(--sd-gap-sm);\n height: var(--sd-gap-sm);\n z-index: 1;\n cursor: nwse-resize;\n}\nsd-modal > ._dialog > ._resize-handle._resize-bottom-left {\n left: 0;\n bottom: 0;\n width: var(--sd-gap-sm);\n height: var(--sd-gap-sm);\n cursor: nesw-resize;\n z-index: 1;\n}\nsd-modal[data-sd-open][data-sd-init] {\n opacity: 1;\n pointer-events: auto;\n}\nsd-modal[data-sd-open][data-sd-init] > ._dialog {\n transform: none;\n}\nsd-modal[data-sd-float] {\n pointer-events: none;\n}\nsd-modal[data-sd-float] > ._backdrop {\n display: none;\n}\nsd-modal[data-sd-float] > ._dialog {\n pointer-events: auto;\n opacity: 0;\n box-shadow: 0 calc(4 * var(--sd-shadow-size)) calc(4 * 4 * var(--sd-shadow-size) * var(--sd-shadow-blur-mult)) var(--sd-shadow-color), 0 var(--sd-shadow-size) calc(var(--sd-shadow-size) * var(--sd-shadow-blur-mult)) var(--sd-shadow-color);\n border: 1px solid var(--sd-bd-hairline);\n}\nsd-modal[data-sd-float] > ._dialog:focus {\n box-shadow: 0 calc(16 * var(--sd-shadow-size)) calc(16 * 4 * var(--sd-shadow-size) * var(--sd-shadow-blur-mult)) var(--sd-shadow-color), 0 var(--sd-shadow-size) calc(var(--sd-shadow-size) * var(--sd-shadow-blur-mult)) var(--sd-shadow-color);\n}\nsd-modal[data-sd-float][data-sd-open][data-sd-init] {\n pointer-events: none;\n}\nsd-modal[data-sd-float][data-sd-open][data-sd-init] > ._dialog {\n pointer-events: auto;\n opacity: 1;\n}\nsd-modal[data-sd-position=bottom-right] > ._dialog {\n position: absolute;\n right: calc(var(--sd-gap-xxl) * 2);\n bottom: var(--sd-gap-xxl);\n}\nsd-modal[data-sd-position=top-right] > ._dialog {\n position: absolute;\n right: var(--sd-gap-xxl);\n top: var(--sd-gap-xxl);\n}\nsd-modal[data-sd-fill] {\n padding-top: 0;\n}\nsd-modal[data-sd-fill] > ._dialog {\n width: 100%;\n height: 100%;\n border: none;\n border-radius: 0;\n}\nsd-modal[data-sd-fill] > ._dialog > ._header {\n background-color: transparent;\n color: var(--sd-tx-faint);\n}"], encapsulation: 2 });
376
+ } }, dependencies: [NgTemplateOutlet, NgIcon, SdAnchor, SdResizeDirective], styles: ["sd-modal {\n display: block;\n position: fixed;\n z-index: var(--%NS%sd-z-modal);\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n padding-top: calc(var(--%NS%sd-topbar-height) + var(--%NS%sd-gap-sm));\n opacity: 0;\n transition: opacity var(--%NS%sd-animation-duration) ease-in-out;\n pointer-events: none;\n}\nsd-modal > ._backdrop {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: var(--%NS%sd-bg-backdrop);\n}\nsd-modal > ._dialog {\n position: relative;\n display: flex;\n flex-direction: column;\n margin: 0 auto;\n width: fit-content;\n min-width: 200px;\n background-color: var(--%NS%sd-bg-elevated);\n border: 1px solid var(--%NS%sd-modal-bd);\n overflow: hidden;\n box-shadow: 0 calc(16 * var(--%NS%sd-shadow-size)) calc(16 * 4 * var(--%NS%sd-shadow-size) * var(--%NS%sd-shadow-blur-mult)) var(--%NS%sd-shadow-color), 0 var(--%NS%sd-shadow-size) calc(var(--%NS%sd-shadow-size) * var(--%NS%sd-shadow-blur-mult)) var(--%NS%sd-shadow-color);\n border-radius: var(--%NS%sd-radius-default);\n transform: translateY(-25px);\n transition: transform var(--%NS%sd-animation-duration) ease-in-out;\n}\nsd-modal > ._dialog:focus {\n outline: none;\n}\nsd-modal > ._dialog > ._header {\n display: flex;\n align-items: center;\n user-select: none;\n border-bottom: 1px solid var(--%NS%sd-bd-hairline);\n background-color: var(--%NS%sd-modal-header-bg);\n color: var(--%NS%sd-modal-header-tx);\n}\nsd-modal > ._dialog > ._header > ._title {\n flex: 1;\n padding: var(--%NS%sd-gap-sm) var(--%NS%sd-gap-default);\n}\nsd-modal > ._dialog > ._header > ._close-btn {\n padding: var(--%NS%sd-gap-sm) var(--%NS%sd-gap-default);\n color: var(--%NS%sd-modal-header-tx-muted);\n}\nsd-modal > ._dialog > ._header > ._close-btn:hover {\n color: var(--%NS%sd-modal-header-tx);\n}\nsd-modal > ._dialog > ._content {\n flex: 1;\n overflow: auto;\n}\nsd-modal > ._dialog > ._resize-handle {\n position: absolute;\n}\nsd-modal > ._dialog > ._resize-handle._resize-left {\n top: 0;\n left: 0;\n width: var(--%NS%sd-gap-sm);\n height: 100%;\n cursor: ew-resize;\n}\nsd-modal > ._dialog > ._resize-handle._resize-right {\n top: 0;\n right: 0;\n width: var(--%NS%sd-gap-sm);\n height: 100%;\n cursor: ew-resize;\n}\nsd-modal > ._dialog > ._resize-handle._resize-top {\n top: 0;\n left: 0;\n width: 100%;\n height: var(--%NS%sd-gap-sm);\n cursor: ns-resize;\n}\nsd-modal > ._dialog > ._resize-handle._resize-top-right {\n right: 0;\n top: 0;\n width: var(--%NS%sd-gap-sm);\n height: var(--%NS%sd-gap-sm);\n z-index: 1;\n cursor: nesw-resize;\n}\nsd-modal > ._dialog > ._resize-handle._resize-top-left {\n left: 0;\n top: 0;\n width: var(--%NS%sd-gap-sm);\n height: var(--%NS%sd-gap-sm);\n cursor: nwse-resize;\n z-index: 1;\n}\nsd-modal > ._dialog > ._resize-handle._resize-bottom {\n bottom: 0;\n left: 0;\n width: 100%;\n height: var(--%NS%sd-gap-sm);\n cursor: ns-resize;\n}\nsd-modal > ._dialog > ._resize-handle._resize-bottom-right {\n right: 0;\n bottom: 0;\n width: var(--%NS%sd-gap-sm);\n height: var(--%NS%sd-gap-sm);\n z-index: 1;\n cursor: nwse-resize;\n}\nsd-modal > ._dialog > ._resize-handle._resize-bottom-left {\n left: 0;\n bottom: 0;\n width: var(--%NS%sd-gap-sm);\n height: var(--%NS%sd-gap-sm);\n cursor: nesw-resize;\n z-index: 1;\n}\nsd-modal[data-sd-open][data-sd-init] {\n opacity: 1;\n pointer-events: auto;\n}\nsd-modal[data-sd-open][data-sd-init] > ._dialog {\n transform: none;\n}\nsd-modal[data-sd-float] {\n pointer-events: none;\n}\nsd-modal[data-sd-float] > ._backdrop {\n display: none;\n}\nsd-modal[data-sd-float] > ._dialog {\n pointer-events: auto;\n opacity: 0;\n box-shadow: 0 calc(4 * var(--%NS%sd-shadow-size)) calc(4 * 4 * var(--%NS%sd-shadow-size) * var(--%NS%sd-shadow-blur-mult)) var(--%NS%sd-shadow-color), 0 var(--%NS%sd-shadow-size) calc(var(--%NS%sd-shadow-size) * var(--%NS%sd-shadow-blur-mult)) var(--%NS%sd-shadow-color);\n border: 1px solid var(--%NS%sd-bd-hairline);\n}\nsd-modal[data-sd-float] > ._dialog:focus {\n box-shadow: 0 calc(16 * var(--%NS%sd-shadow-size)) calc(16 * 4 * var(--%NS%sd-shadow-size) * var(--%NS%sd-shadow-blur-mult)) var(--%NS%sd-shadow-color), 0 var(--%NS%sd-shadow-size) calc(var(--%NS%sd-shadow-size) * var(--%NS%sd-shadow-blur-mult)) var(--%NS%sd-shadow-color);\n}\nsd-modal[data-sd-float][data-sd-open][data-sd-init] {\n pointer-events: none;\n}\nsd-modal[data-sd-float][data-sd-open][data-sd-init] > ._dialog {\n pointer-events: auto;\n opacity: 1;\n}\nsd-modal[data-sd-position=bottom-right] > ._dialog {\n position: absolute;\n right: calc(var(--%NS%sd-gap-xxl) * 2);\n bottom: var(--%NS%sd-gap-xxl);\n}\nsd-modal[data-sd-position=top-right] > ._dialog {\n position: absolute;\n right: var(--%NS%sd-gap-xxl);\n top: var(--%NS%sd-gap-xxl);\n}\nsd-modal[data-sd-fill] {\n padding-top: 0;\n}\nsd-modal[data-sd-fill] > ._dialog {\n width: 100%;\n height: 100%;\n border: none;\n border-radius: 0;\n}\nsd-modal[data-sd-fill] > ._dialog > ._header {\n background-color: transparent;\n color: var(--%NS%sd-tx-faint);\n}"], encapsulation: 2 });
330
377
  }
331
378
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SdModal, [{
332
379
  type: Component,
@@ -348,6 +395,7 @@ export class SdModal {
348
395
  <div
349
396
  class="_dialog"
350
397
  tabindex="-1"
398
+ (mousedown)="onDialogMouseDown()"
351
399
  (keydown)="onDialogKeydown($event)"
352
400
  (focus)="onDialogFocus()"
353
401
  (sdResize)="onDialogResize($event)"
@@ -411,4 +459,4 @@ export class SdModal {
411
459
  </div>
412
460
  `, styles: ["sd-modal {\n display: block;\n position: fixed;\n z-index: var(--sd-z-modal);\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n padding-top: calc(var(--sd-topbar-height) + var(--sd-gap-sm));\n opacity: 0;\n transition: opacity var(--sd-animation-duration) ease-in-out;\n pointer-events: none;\n}\nsd-modal > ._backdrop {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: var(--sd-bg-backdrop);\n}\nsd-modal > ._dialog {\n position: relative;\n display: flex;\n flex-direction: column;\n margin: 0 auto;\n width: fit-content;\n min-width: 200px;\n background-color: var(--sd-bg-elevated);\n border: 1px solid var(--sd-modal-bd);\n overflow: hidden;\n box-shadow: 0 calc(16 * var(--sd-shadow-size)) calc(16 * 4 * var(--sd-shadow-size) * var(--sd-shadow-blur-mult)) var(--sd-shadow-color), 0 var(--sd-shadow-size) calc(var(--sd-shadow-size) * var(--sd-shadow-blur-mult)) var(--sd-shadow-color);\n border-radius: var(--sd-radius-default);\n transform: translateY(-25px);\n transition: transform var(--sd-animation-duration) ease-in-out;\n}\nsd-modal > ._dialog:focus {\n outline: none;\n}\nsd-modal > ._dialog > ._header {\n display: flex;\n align-items: center;\n user-select: none;\n border-bottom: 1px solid var(--sd-bd-hairline);\n background-color: var(--sd-modal-header-bg);\n color: var(--sd-modal-header-tx);\n}\nsd-modal > ._dialog > ._header > ._title {\n flex: 1;\n padding: var(--sd-gap-sm) var(--sd-gap-default);\n}\nsd-modal > ._dialog > ._header > ._close-btn {\n padding: var(--sd-gap-sm) var(--sd-gap-default);\n color: var(--sd-modal-header-tx-muted);\n}\nsd-modal > ._dialog > ._header > ._close-btn:hover {\n color: var(--sd-modal-header-tx);\n}\nsd-modal > ._dialog > ._content {\n flex: 1;\n overflow: auto;\n}\nsd-modal > ._dialog > ._resize-handle {\n position: absolute;\n}\nsd-modal > ._dialog > ._resize-handle._resize-left {\n top: 0;\n left: 0;\n width: var(--sd-gap-sm);\n height: 100%;\n cursor: ew-resize;\n}\nsd-modal > ._dialog > ._resize-handle._resize-right {\n top: 0;\n right: 0;\n width: var(--sd-gap-sm);\n height: 100%;\n cursor: ew-resize;\n}\nsd-modal > ._dialog > ._resize-handle._resize-top {\n top: 0;\n left: 0;\n width: 100%;\n height: var(--sd-gap-sm);\n cursor: ns-resize;\n}\nsd-modal > ._dialog > ._resize-handle._resize-top-right {\n right: 0;\n top: 0;\n width: var(--sd-gap-sm);\n height: var(--sd-gap-sm);\n z-index: 1;\n cursor: nesw-resize;\n}\nsd-modal > ._dialog > ._resize-handle._resize-top-left {\n left: 0;\n top: 0;\n width: var(--sd-gap-sm);\n height: var(--sd-gap-sm);\n cursor: nwse-resize;\n z-index: 1;\n}\nsd-modal > ._dialog > ._resize-handle._resize-bottom {\n bottom: 0;\n left: 0;\n width: 100%;\n height: var(--sd-gap-sm);\n cursor: ns-resize;\n}\nsd-modal > ._dialog > ._resize-handle._resize-bottom-right {\n right: 0;\n bottom: 0;\n width: var(--sd-gap-sm);\n height: var(--sd-gap-sm);\n z-index: 1;\n cursor: nwse-resize;\n}\nsd-modal > ._dialog > ._resize-handle._resize-bottom-left {\n left: 0;\n bottom: 0;\n width: var(--sd-gap-sm);\n height: var(--sd-gap-sm);\n cursor: nesw-resize;\n z-index: 1;\n}\nsd-modal[data-sd-open][data-sd-init] {\n opacity: 1;\n pointer-events: auto;\n}\nsd-modal[data-sd-open][data-sd-init] > ._dialog {\n transform: none;\n}\nsd-modal[data-sd-float] {\n pointer-events: none;\n}\nsd-modal[data-sd-float] > ._backdrop {\n display: none;\n}\nsd-modal[data-sd-float] > ._dialog {\n pointer-events: auto;\n opacity: 0;\n box-shadow: 0 calc(4 * var(--sd-shadow-size)) calc(4 * 4 * var(--sd-shadow-size) * var(--sd-shadow-blur-mult)) var(--sd-shadow-color), 0 var(--sd-shadow-size) calc(var(--sd-shadow-size) * var(--sd-shadow-blur-mult)) var(--sd-shadow-color);\n border: 1px solid var(--sd-bd-hairline);\n}\nsd-modal[data-sd-float] > ._dialog:focus {\n box-shadow: 0 calc(16 * var(--sd-shadow-size)) calc(16 * 4 * var(--sd-shadow-size) * var(--sd-shadow-blur-mult)) var(--sd-shadow-color), 0 var(--sd-shadow-size) calc(var(--sd-shadow-size) * var(--sd-shadow-blur-mult)) var(--sd-shadow-color);\n}\nsd-modal[data-sd-float][data-sd-open][data-sd-init] {\n pointer-events: none;\n}\nsd-modal[data-sd-float][data-sd-open][data-sd-init] > ._dialog {\n pointer-events: auto;\n opacity: 1;\n}\nsd-modal[data-sd-position=bottom-right] > ._dialog {\n position: absolute;\n right: calc(var(--sd-gap-xxl) * 2);\n bottom: var(--sd-gap-xxl);\n}\nsd-modal[data-sd-position=top-right] > ._dialog {\n position: absolute;\n right: var(--sd-gap-xxl);\n top: var(--sd-gap-xxl);\n}\nsd-modal[data-sd-fill] {\n padding-top: 0;\n}\nsd-modal[data-sd-fill] > ._dialog {\n width: 100%;\n height: 100%;\n border: none;\n border-radius: 0;\n}\nsd-modal[data-sd-fill] > ._dialog > ._header {\n background-color: transparent;\n color: var(--sd-tx-faint);\n}"] }]
413
461
  }], () => [], { open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }, { type: i0.Output, args: ["openChange"] }], key: [{ type: i0.Input, args: [{ isSignal: true, alias: "key", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], hideHeader: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideHeader", required: false }] }], hideCloseButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideCloseButton", required: false }] }], headerStyle: [{ type: i0.Input, args: [{ isSignal: true, alias: "headerStyle", required: false }] }], useCloseByBackdrop: [{ type: i0.Input, args: [{ isSignal: true, alias: "useCloseByBackdrop", required: false }] }], useCloseByEscapeKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "useCloseByEscapeKey", required: false }] }], float: [{ type: i0.Input, args: [{ isSignal: true, alias: "float", required: false }] }], fill: [{ type: i0.Input, args: [{ isSignal: true, alias: "fill", required: false }] }], resizable: [{ type: i0.Input, args: [{ isSignal: true, alias: "resizable", required: false }] }], movable: [{ type: i0.Input, args: [{ isSignal: true, alias: "movable", required: false }] }], position: [{ type: i0.Input, args: [{ isSignal: true, alias: "position", required: false }] }], minHeightPx: [{ type: i0.Input, args: [{ isSignal: true, alias: "minHeightPx", required: false }] }], minWidthPx: [{ type: i0.Input, args: [{ isSignal: true, alias: "minWidthPx", required: false }] }], heightPx: [{ type: i0.Input, args: [{ isSignal: true, alias: "heightPx", required: false }] }], widthPx: [{ type: i0.Input, args: [{ isSignal: true, alias: "widthPx", required: false }] }], actionTplRef: [{ type: i0.Input, args: [{ isSignal: true, alias: "actionTplRef", required: false }] }], closeRequest: [{ type: i0.Output, args: ["closeRequest"] }] }); })();
414
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdModal, { className: "SdModal", filePath: "packages/angular/src/core/modal/sd-modal.ts", lineNumber: 332 }); })();
462
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdModal, { className: "SdModal", filePath: "packages/angular/src/core/modal/sd-modal.ts", lineNumber: 333 }); })();
@@ -1 +1 @@
1
- {"version":3,"file":"sd-modal.provider.d.ts","sourceRoot":"","sources":["../../../src/core/modal/sd-modal.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EASL,KAAK,gBAAgB,EACrB,KAAK,MAAM,EACX,KAAK,WAAW,EAChB,KAAK,IAAI,EACV,MAAM,eAAe,CAAC;AAGvB,OAAO,KAAK,EACV,qBAAqB,EACrB,YAAY,EACb,MAAM,4BAA4B,CAAC;AAGpC,OAAO,wBAAwB,CAAC;;AAEhC;;GAEG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7B,KAAK,EAAE,gBAAgB,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IACvC,YAAY,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;IAChC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;CACxC;AAED,KAAK,kBAAkB,GAAG,aAAa,GAAG,OAAO,GAAG,cAAc,GAAG,sBAAsB,CAAC;AAC5F,KAAK,mBAAmB,CAAC,CAAC,IAAI,CAAC,SAAS;IAAE,oBAAoB,CAAC,EAAE,MAAM,CAAC,SAAS,MAAM,CAAA;CAAE,GACrF,CAAC,GACD,KAAK,CAAC;AAEV;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,MAAM,GAAG,GAAG,EAAE;IACrF,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACd,MAAM,EAAE,YAAY,CAClB,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,kBAAkB,GAAG,CAAC,CAAC,EACtD,mBAAmB,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,kBAAkB,GAAG,CAAC,CAAC,CACtF,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,cAAc,GAAG,WAAW,CAAC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED;;GAEG;AACH,qBACa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;IAClD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA+B;IAC5D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoB;IAE9C,UAAU,iDAAa;IAEjB,SAAS,CAAC,CAAC,SAAS,iBAAiB,CAAC,GAAG,CAAC,EAC9C,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,EACrB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IAkKzD,OAAO,CAAC,aAAa;yCA5KV,eAAe;6CAAf,eAAe;CAuL3B"}
1
+ {"version":3,"file":"sd-modal.provider.d.ts","sourceRoot":"","sources":["../../../src/core/modal/sd-modal.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EASL,KAAK,gBAAgB,EACrB,KAAK,MAAM,EACX,KAAK,WAAW,EAChB,KAAK,IAAI,EACV,MAAM,eAAe,CAAC;AAGvB,OAAO,KAAK,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAGtF,OAAO,wBAAwB,CAAC;;AAEhC;;GAEG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7B,KAAK,EAAE,gBAAgB,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IACvC,YAAY,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;IAChC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;CACxC;AAED,KAAK,kBAAkB,GAAG,aAAa,GAAG,OAAO,GAAG,cAAc,GAAG,sBAAsB,CAAC;AAC5F,KAAK,mBAAmB,CAAC,CAAC,IAAI,CAAC,SAAS;IAAE,oBAAoB,CAAC,EAAE,MAAM,CAAC,SAAS,MAAM,CAAA;CAAE,GACrF,CAAC,GACD,KAAK,CAAC;AAEV;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,MAAM,GAAG,GAAG,EAAE;IACrF,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACd,MAAM,EAAE,YAAY,CAClB,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,kBAAkB,GAAG,CAAC,CAAC,EACtD,mBAAmB,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,kBAAkB,GAAG,CAAC,CAAC,CACtF,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,cAAc,GAAG,WAAW,CAAC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED;;GAEG;AACH,qBACa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;IAClD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA+B;IAC5D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoB;IAE9C,UAAU,iDAAa;IAEjB,SAAS,CAAC,CAAC,SAAS,iBAAiB,CAAC,GAAG,CAAC,EAC9C,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,EACrB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IAkKzD,OAAO,CAAC,aAAa;yCA5KV,eAAe;6CAAf,eAAe;CAuL3B"}
@@ -5,7 +5,7 @@ export class SdToastContainer {
5
5
  static ɵfac = function SdToastContainer_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SdToastContainer)(); };
6
6
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SdToastContainer, selectors: [["sd-toast-container"]], hostVars: 1, hostBindings: function SdToastContainer_HostBindings(rf, ctx) { if (rf & 2) {
7
7
  i0.ɵɵattribute("data-sd-overlap", ctx.overlap() || undefined);
8
- } }, inputs: { overlap: [1, "overlap"] }, decls: 0, vars: 0, template: function SdToastContainer_Template(rf, ctx) { }, styles: ["sd-toast-container {\n display: flex;\n position: fixed;\n top: 0;\n left: 0;\n height: 100%;\n width: 100%;\n pointer-events: none;\n padding: var(--sd-gap-xxl);\n z-index: 9999;\n flex-direction: column;\n}\n@supports not (appearance: auto) {\n sd-toast-container.gap-xxs {\n gap: 0;\n }\n sd-toast-container.gap-xxs > * + * {\n margin-top: var(--sd-gap-xxs);\n }\n sd-toast-container.gap-xs {\n gap: 0;\n }\n sd-toast-container.gap-xs > * + * {\n margin-top: var(--sd-gap-xs);\n }\n sd-toast-container.gap-sm {\n gap: 0;\n }\n sd-toast-container.gap-sm > * + * {\n margin-top: var(--sd-gap-sm);\n }\n sd-toast-container.gap-default {\n gap: 0;\n }\n sd-toast-container.gap-default > * + * {\n margin-top: var(--sd-gap-default);\n }\n sd-toast-container.gap-lg {\n gap: 0;\n }\n sd-toast-container.gap-lg > * + * {\n margin-top: var(--sd-gap-lg);\n }\n sd-toast-container.gap-xl {\n gap: 0;\n }\n sd-toast-container.gap-xl > * + * {\n margin-top: var(--sd-gap-xl);\n }\n sd-toast-container.gap-xxl {\n gap: 0;\n }\n sd-toast-container.gap-xxl > * + * {\n margin-top: var(--sd-gap-xxl);\n }\n sd-toast-container.gap-0 {\n gap: 0;\n }\n sd-toast-container.gap-0 > * + * {\n margin-top: var(--sd-gap-0);\n }\n sd-toast-container.gap-auto {\n gap: 0;\n }\n sd-toast-container.gap-auto > * + * {\n margin-top: var(--sd-gap-auto);\n }\n}\n@media all and (max-width: 520px) {\n sd-toast-container {\n flex-direction: column-reverse;\n }\n}\nsd-toast-container[data-sd-overlap] {\n display: block;\n}\nsd-toast-container[data-sd-overlap] > sd-toast {\n position: absolute;\n bottom: var(--sd-gap-xxl);\n left: var(--sd-gap-xxl);\n right: var(--sd-gap-xxl);\n width: auto;\n}"], encapsulation: 2 });
8
+ } }, inputs: { overlap: [1, "overlap"] }, decls: 0, vars: 0, template: function SdToastContainer_Template(rf, ctx) { }, styles: ["sd-toast-container {\n display: flex;\n position: fixed;\n top: 0;\n left: 0;\n height: 100%;\n width: 100%;\n pointer-events: none;\n padding: var(--%NS%sd-gap-xxl);\n z-index: 9999;\n flex-direction: column;\n}\n@supports not (appearance: auto) {\n sd-toast-container.gap-xxs {\n gap: 0;\n }\n sd-toast-container.gap-xxs > * + * {\n margin-top: var(--%NS%sd-gap-xxs);\n }\n sd-toast-container.gap-xs {\n gap: 0;\n }\n sd-toast-container.gap-xs > * + * {\n margin-top: var(--%NS%sd-gap-xs);\n }\n sd-toast-container.gap-sm {\n gap: 0;\n }\n sd-toast-container.gap-sm > * + * {\n margin-top: var(--%NS%sd-gap-sm);\n }\n sd-toast-container.gap-default {\n gap: 0;\n }\n sd-toast-container.gap-default > * + * {\n margin-top: var(--%NS%sd-gap-default);\n }\n sd-toast-container.gap-lg {\n gap: 0;\n }\n sd-toast-container.gap-lg > * + * {\n margin-top: var(--%NS%sd-gap-lg);\n }\n sd-toast-container.gap-xl {\n gap: 0;\n }\n sd-toast-container.gap-xl > * + * {\n margin-top: var(--%NS%sd-gap-xl);\n }\n sd-toast-container.gap-xxl {\n gap: 0;\n }\n sd-toast-container.gap-xxl > * + * {\n margin-top: var(--%NS%sd-gap-xxl);\n }\n sd-toast-container.gap-0 {\n gap: 0;\n }\n sd-toast-container.gap-0 > * + * {\n margin-top: var(--%NS%sd-gap-0);\n }\n sd-toast-container.gap-auto {\n gap: 0;\n }\n sd-toast-container.gap-auto > * + * {\n margin-top: var(--%NS%sd-gap-auto);\n }\n}\n@media all and (max-width: 520px) {\n sd-toast-container {\n flex-direction: column-reverse;\n }\n}\nsd-toast-container[data-sd-overlap] {\n display: block;\n}\nsd-toast-container[data-sd-overlap] > sd-toast {\n position: absolute;\n bottom: var(--%NS%sd-gap-xxl);\n left: var(--%NS%sd-gap-xxl);\n right: var(--%NS%sd-gap-xxl);\n width: auto;\n}"], encapsulation: 2 });
9
9
  }
10
10
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SdToastContainer, [{
11
11
  type: Component,
@@ -64,7 +64,7 @@ export class SdToast {
64
64
  i0.ɵɵconditional(ctx.message() != undefined ? 2 : 3);
65
65
  i0.ɵɵadvance(2);
66
66
  i0.ɵɵconditional(ctx.useProgress() ? 4 : -1);
67
- } }, styles: ["sd-toast {\n display: block;\n margin-bottom: var(--sd-gap-sm);\n text-align: center;\n width: 100%;\n pointer-events: none;\n}\nsd-toast > ._sd-toast-block {\n display: inline-block;\n text-align: left;\n transform: translateY(-100%);\n border-radius: var(--sd-radius-lg);\n opacity: 0;\n box-shadow: 0 calc(12 * var(--sd-shadow-size)) calc(12 * 4 * var(--sd-shadow-size) * var(--sd-shadow-blur-mult)) var(--sd-shadow-color), 0 var(--sd-shadow-size) calc(var(--sd-shadow-size) * var(--sd-shadow-blur-mult)) var(--sd-shadow-color);\n pointer-events: auto;\n}\nsd-toast > ._sd-toast-block > ._sd-toast-message {\n padding: var(--sd-gap-default) var(--sd-gap-lg);\n word-break: break-all;\n white-space: pre-wrap;\n}\nsd-toast > ._sd-toast-block > ._sd-toast-progress {\n background-color: var(--sd-bg-state-active);\n height: 4px;\n border-radius: var(--sd-radius-xl);\n margin: 0 4px 4px 4px;\n}\nsd-toast > ._sd-toast-block > ._sd-toast-progress > ._sd-toast-progress-bar {\n border-radius: var(--sd-radius-xl);\n height: 4px;\n transition: width 1s ease-out;\n}\nsd-toast[data-sd-theme=gray] > ._sd-toast-block {\n background-color: var(--sd-bg-gray-solid);\n color: var(--sd-tx-gray-solid);\n}\nsd-toast[data-sd-theme=gray] > ._sd-toast-block > ._sd-toast-progress {\n background-color: var(--sd-bg-state-active);\n}\nsd-toast[data-sd-theme=gray] > ._sd-toast-block > ._sd-toast-progress > ._sd-toast-progress-bar {\n background-color: var(--sd-bg-gray-subtle);\n}\nsd-toast[data-sd-theme=blue-gray] > ._sd-toast-block {\n background-color: var(--sd-bg-blue-gray-solid);\n color: var(--sd-tx-blue-gray-solid);\n}\nsd-toast[data-sd-theme=blue-gray] > ._sd-toast-block > ._sd-toast-progress {\n background-color: var(--sd-bg-state-active);\n}\nsd-toast[data-sd-theme=blue-gray] > ._sd-toast-block > ._sd-toast-progress > ._sd-toast-progress-bar {\n background-color: var(--sd-bg-blue-gray-subtle);\n}\nsd-toast[data-sd-theme=primary] > ._sd-toast-block {\n background-color: var(--sd-bg-primary-solid);\n color: var(--sd-tx-primary-solid);\n}\nsd-toast[data-sd-theme=primary] > ._sd-toast-block > ._sd-toast-progress {\n background-color: var(--sd-bg-state-active);\n}\nsd-toast[data-sd-theme=primary] > ._sd-toast-block > ._sd-toast-progress > ._sd-toast-progress-bar {\n background-color: var(--sd-bg-primary-subtle);\n}\nsd-toast[data-sd-theme=info] > ._sd-toast-block {\n background-color: var(--sd-bg-info-solid);\n color: var(--sd-tx-info-solid);\n}\nsd-toast[data-sd-theme=info] > ._sd-toast-block > ._sd-toast-progress {\n background-color: var(--sd-bg-state-active);\n}\nsd-toast[data-sd-theme=info] > ._sd-toast-block > ._sd-toast-progress > ._sd-toast-progress-bar {\n background-color: var(--sd-bg-info-subtle);\n}\nsd-toast[data-sd-theme=success] > ._sd-toast-block {\n background-color: var(--sd-bg-success-solid);\n color: var(--sd-tx-success-solid);\n}\nsd-toast[data-sd-theme=success] > ._sd-toast-block > ._sd-toast-progress {\n background-color: var(--sd-bg-state-active);\n}\nsd-toast[data-sd-theme=success] > ._sd-toast-block > ._sd-toast-progress > ._sd-toast-progress-bar {\n background-color: var(--sd-bg-success-subtle);\n}\nsd-toast[data-sd-theme=warning] > ._sd-toast-block {\n background-color: var(--sd-bg-warning-solid);\n color: var(--sd-tx-warning-solid);\n}\nsd-toast[data-sd-theme=warning] > ._sd-toast-block > ._sd-toast-progress {\n background-color: var(--sd-bg-state-active);\n}\nsd-toast[data-sd-theme=warning] > ._sd-toast-block > ._sd-toast-progress > ._sd-toast-progress-bar {\n background-color: var(--sd-bg-warning-subtle);\n}\nsd-toast[data-sd-theme=danger] > ._sd-toast-block {\n background-color: var(--sd-bg-danger-solid);\n color: var(--sd-tx-danger-solid);\n}\nsd-toast[data-sd-theme=danger] > ._sd-toast-block > ._sd-toast-progress {\n background-color: var(--sd-bg-state-active);\n}\nsd-toast[data-sd-theme=danger] > ._sd-toast-block > ._sd-toast-progress > ._sd-toast-progress-bar {\n background-color: var(--sd-bg-danger-subtle);\n}\nsd-toast[data-sd-open=true] > ._sd-toast-block {\n transform: none;\n transition: var(--sd-animation-duration) ease-out;\n transition-property: transform, opacity;\n opacity: 1;\n}\nsd-toast[data-sd-open=false] > ._sd-toast-block {\n transform: translateY(-100%);\n transition: var(--sd-animation-duration) ease-in;\n transition-property: transform, opacity;\n opacity: 0;\n}\n@media all and (max-width: 520px) {\n sd-toast > ._sd-toast-block {\n border-radius: calc(var(--sd-line-height) / 2);\n transform: translateY(100%);\n }\n sd-toast > ._sd-toast-block > ._sd-toast-message {\n padding: var(--sd-gap-xs) var(--sd-gap-default);\n }\n sd-toast[data-sd-open=false] > ._sd-toast-block {\n transform: translateY(100%);\n }\n}"], encapsulation: 2 });
67
+ } }, styles: ["sd-toast {\n display: block;\n margin-bottom: var(--%NS%sd-gap-sm);\n text-align: center;\n width: 100%;\n pointer-events: none;\n}\nsd-toast > ._sd-toast-block {\n display: inline-block;\n text-align: left;\n transform: translateY(-100%);\n border-radius: var(--%NS%sd-radius-lg);\n opacity: 0;\n box-shadow: 0 calc(12 * var(--%NS%sd-shadow-size)) calc(12 * 4 * var(--%NS%sd-shadow-size) * var(--%NS%sd-shadow-blur-mult)) var(--%NS%sd-shadow-color), 0 var(--%NS%sd-shadow-size) calc(var(--%NS%sd-shadow-size) * var(--%NS%sd-shadow-blur-mult)) var(--%NS%sd-shadow-color);\n pointer-events: auto;\n}\nsd-toast > ._sd-toast-block > ._sd-toast-message {\n padding: var(--%NS%sd-gap-default) var(--%NS%sd-gap-lg);\n word-break: break-all;\n white-space: pre-wrap;\n}\nsd-toast > ._sd-toast-block > ._sd-toast-progress {\n background-color: var(--%NS%sd-bg-state-active);\n height: 4px;\n border-radius: var(--%NS%sd-radius-xl);\n margin: 0 4px 4px 4px;\n}\nsd-toast > ._sd-toast-block > ._sd-toast-progress > ._sd-toast-progress-bar {\n border-radius: var(--%NS%sd-radius-xl);\n height: 4px;\n transition: width 1s ease-out;\n}\nsd-toast[data-sd-theme=gray] > ._sd-toast-block {\n background-color: var(--%NS%sd-bg-gray-solid);\n color: var(--%NS%sd-tx-gray-solid);\n}\nsd-toast[data-sd-theme=gray] > ._sd-toast-block > ._sd-toast-progress {\n background-color: var(--%NS%sd-bg-state-active);\n}\nsd-toast[data-sd-theme=gray] > ._sd-toast-block > ._sd-toast-progress > ._sd-toast-progress-bar {\n background-color: var(--%NS%sd-bg-gray-subtle);\n}\nsd-toast[data-sd-theme=blue-gray] > ._sd-toast-block {\n background-color: var(--%NS%sd-bg-blue-gray-solid);\n color: var(--%NS%sd-tx-blue-gray-solid);\n}\nsd-toast[data-sd-theme=blue-gray] > ._sd-toast-block > ._sd-toast-progress {\n background-color: var(--%NS%sd-bg-state-active);\n}\nsd-toast[data-sd-theme=blue-gray] > ._sd-toast-block > ._sd-toast-progress > ._sd-toast-progress-bar {\n background-color: var(--%NS%sd-bg-blue-gray-subtle);\n}\nsd-toast[data-sd-theme=primary] > ._sd-toast-block {\n background-color: var(--%NS%sd-bg-primary-solid);\n color: var(--%NS%sd-tx-primary-solid);\n}\nsd-toast[data-sd-theme=primary] > ._sd-toast-block > ._sd-toast-progress {\n background-color: var(--%NS%sd-bg-state-active);\n}\nsd-toast[data-sd-theme=primary] > ._sd-toast-block > ._sd-toast-progress > ._sd-toast-progress-bar {\n background-color: var(--%NS%sd-bg-primary-subtle);\n}\nsd-toast[data-sd-theme=info] > ._sd-toast-block {\n background-color: var(--%NS%sd-bg-info-solid);\n color: var(--%NS%sd-tx-info-solid);\n}\nsd-toast[data-sd-theme=info] > ._sd-toast-block > ._sd-toast-progress {\n background-color: var(--%NS%sd-bg-state-active);\n}\nsd-toast[data-sd-theme=info] > ._sd-toast-block > ._sd-toast-progress > ._sd-toast-progress-bar {\n background-color: var(--%NS%sd-bg-info-subtle);\n}\nsd-toast[data-sd-theme=success] > ._sd-toast-block {\n background-color: var(--%NS%sd-bg-success-solid);\n color: var(--%NS%sd-tx-success-solid);\n}\nsd-toast[data-sd-theme=success] > ._sd-toast-block > ._sd-toast-progress {\n background-color: var(--%NS%sd-bg-state-active);\n}\nsd-toast[data-sd-theme=success] > ._sd-toast-block > ._sd-toast-progress > ._sd-toast-progress-bar {\n background-color: var(--%NS%sd-bg-success-subtle);\n}\nsd-toast[data-sd-theme=warning] > ._sd-toast-block {\n background-color: var(--%NS%sd-bg-warning-solid);\n color: var(--%NS%sd-tx-warning-solid);\n}\nsd-toast[data-sd-theme=warning] > ._sd-toast-block > ._sd-toast-progress {\n background-color: var(--%NS%sd-bg-state-active);\n}\nsd-toast[data-sd-theme=warning] > ._sd-toast-block > ._sd-toast-progress > ._sd-toast-progress-bar {\n background-color: var(--%NS%sd-bg-warning-subtle);\n}\nsd-toast[data-sd-theme=danger] > ._sd-toast-block {\n background-color: var(--%NS%sd-bg-danger-solid);\n color: var(--%NS%sd-tx-danger-solid);\n}\nsd-toast[data-sd-theme=danger] > ._sd-toast-block > ._sd-toast-progress {\n background-color: var(--%NS%sd-bg-state-active);\n}\nsd-toast[data-sd-theme=danger] > ._sd-toast-block > ._sd-toast-progress > ._sd-toast-progress-bar {\n background-color: var(--%NS%sd-bg-danger-subtle);\n}\nsd-toast[data-sd-open=true] > ._sd-toast-block {\n transform: none;\n transition: var(--%NS%sd-animation-duration) ease-out;\n transition-property: transform, opacity;\n opacity: 1;\n}\nsd-toast[data-sd-open=false] > ._sd-toast-block {\n transform: translateY(-100%);\n transition: var(--%NS%sd-animation-duration) ease-in;\n transition-property: transform, opacity;\n opacity: 0;\n}\n@media all and (max-width: 520px) {\n sd-toast > ._sd-toast-block {\n border-radius: calc(var(--%NS%sd-line-height) / 2);\n transform: translateY(100%);\n }\n sd-toast > ._sd-toast-block > ._sd-toast-message {\n padding: var(--%NS%sd-gap-xs) var(--%NS%sd-gap-default);\n }\n sd-toast[data-sd-open=false] > ._sd-toast-block {\n transform: translateY(100%);\n }\n}"], encapsulation: 2 });
68
68
  }
69
69
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SdToast, [{
70
70
  type: Component,
@@ -26,7 +26,7 @@ export class SdKanbanBoard {
26
26
  } }, inputs: { selectedValues: [1, "selectedValues"] }, outputs: { selectedValues: "selectedValuesChange", drop: "drop" }, ngContentSelectors: _c0, decls: 1, vars: 0, template: function SdKanbanBoard_Template(rf, ctx) { if (rf & 1) {
27
27
  i0.ɵɵprojectionDef();
28
28
  i0.ɵɵprojection(0);
29
- } }, styles: ["sd-kanban-board {\n display: inline-flex;\n flex-wrap: nowrap;\n white-space: nowrap;\n height: 100%;\n flex-direction: row;\n gap: var(--sd-gap-lg);\n}\n@supports not (appearance: auto) {\n sd-kanban-board {\n gap: 0;\n }\n sd-kanban-board > * + * {\n margin-left: var(--sd-gap-lg);\n }\n sd-kanban-board.gap-xxs {\n gap: 0;\n }\n sd-kanban-board.gap-xxs > * + * {\n margin-left: var(--sd-gap-xxs);\n }\n sd-kanban-board.gap-xs {\n gap: 0;\n }\n sd-kanban-board.gap-xs > * + * {\n margin-left: var(--sd-gap-xs);\n }\n sd-kanban-board.gap-sm {\n gap: 0;\n }\n sd-kanban-board.gap-sm > * + * {\n margin-left: var(--sd-gap-sm);\n }\n sd-kanban-board.gap-default {\n gap: 0;\n }\n sd-kanban-board.gap-default > * + * {\n margin-left: var(--sd-gap-default);\n }\n sd-kanban-board.gap-lg {\n gap: 0;\n }\n sd-kanban-board.gap-lg > * + * {\n margin-left: var(--sd-gap-lg);\n }\n sd-kanban-board.gap-xl {\n gap: 0;\n }\n sd-kanban-board.gap-xl > * + * {\n margin-left: var(--sd-gap-xl);\n }\n sd-kanban-board.gap-xxl {\n gap: 0;\n }\n sd-kanban-board.gap-xxl > * + * {\n margin-left: var(--sd-gap-xxl);\n }\n sd-kanban-board.gap-0 {\n gap: 0;\n }\n sd-kanban-board.gap-0 > * + * {\n margin-left: var(--sd-gap-0);\n }\n sd-kanban-board.gap-auto {\n gap: 0;\n }\n sd-kanban-board.gap-auto > * + * {\n margin-left: var(--sd-gap-auto);\n }\n}"], encapsulation: 2 });
29
+ } }, styles: ["sd-kanban-board {\n display: inline-flex;\n flex-wrap: nowrap;\n white-space: nowrap;\n height: 100%;\n flex-direction: row;\n gap: var(--%NS%sd-gap-lg);\n}\n@supports not (appearance: auto) {\n sd-kanban-board {\n gap: 0;\n }\n sd-kanban-board > * + * {\n margin-left: var(--%NS%sd-gap-lg);\n }\n sd-kanban-board.gap-xxs {\n gap: 0;\n }\n sd-kanban-board.gap-xxs > * + * {\n margin-left: var(--%NS%sd-gap-xxs);\n }\n sd-kanban-board.gap-xs {\n gap: 0;\n }\n sd-kanban-board.gap-xs > * + * {\n margin-left: var(--%NS%sd-gap-xs);\n }\n sd-kanban-board.gap-sm {\n gap: 0;\n }\n sd-kanban-board.gap-sm > * + * {\n margin-left: var(--%NS%sd-gap-sm);\n }\n sd-kanban-board.gap-default {\n gap: 0;\n }\n sd-kanban-board.gap-default > * + * {\n margin-left: var(--%NS%sd-gap-default);\n }\n sd-kanban-board.gap-lg {\n gap: 0;\n }\n sd-kanban-board.gap-lg > * + * {\n margin-left: var(--%NS%sd-gap-lg);\n }\n sd-kanban-board.gap-xl {\n gap: 0;\n }\n sd-kanban-board.gap-xl > * + * {\n margin-left: var(--%NS%sd-gap-xl);\n }\n sd-kanban-board.gap-xxl {\n gap: 0;\n }\n sd-kanban-board.gap-xxl > * + * {\n margin-left: var(--%NS%sd-gap-xxl);\n }\n sd-kanban-board.gap-0 {\n gap: 0;\n }\n sd-kanban-board.gap-0 > * + * {\n margin-left: var(--%NS%sd-gap-0);\n }\n sd-kanban-board.gap-auto {\n gap: 0;\n }\n sd-kanban-board.gap-auto > * + * {\n margin-left: var(--%NS%sd-gap-auto);\n }\n}"], encapsulation: 2 });
30
30
  }
31
31
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SdKanbanBoard, [{
32
32
  type: Component,
@@ -174,7 +174,7 @@ export class SdKanbanLane {
174
174
  i0.ɵɵconditional(!ctx.collapse() ? 4 : -1);
175
175
  i0.ɵɵadvance();
176
176
  i0.ɵɵstyleProp("height", ctx.dragOvered() ? (ctx.dragKanban()?.heightOnDrag() ?? 0) + "px" : "0px")("display", ctx.dragKanban() ? "block" : "none");
177
- } }, dependencies: [SdBusyContainer, SdCheckbox, NgTemplateOutlet, SdAnchor, NgIcon], styles: ["sd-kanban-lane > .flex-fill > sd-busy-container {\n padding: var(--sd-gap-xl) var(--sd-gap-lg);\n background-color: var(--sd-bg-gray-subtle);\n border-radius: var(--sd-radius-default);\n height: 100%;\n}\nsd-kanban-lane > .flex-fill > sd-busy-container > ._drop-position {\n pointer-events: none;\n border-radius: var(--sd-radius-default);\n background-color: var(--sd-bg-state-active);\n height: 0;\n margin-bottom: 0;\n visibility: hidden;\n transition: var(--sd-animation-duration) linear;\n transition-property: height, margin-bottom, visibility;\n}\nsd-kanban-lane[data-sd-drag-over=true] > .flex-fill > sd-busy-container > ._drop-position {\n margin-bottom: var(--sd-gap-lg);\n visibility: visible;\n}"], encapsulation: 2 });
177
+ } }, dependencies: [SdBusyContainer, SdCheckbox, NgTemplateOutlet, SdAnchor, NgIcon], styles: ["sd-kanban-lane > .flex-fill > sd-busy-container {\n padding: var(--%NS%sd-gap-xl) var(--%NS%sd-gap-lg);\n background-color: var(--%NS%sd-bg-gray-subtle);\n border-radius: var(--%NS%sd-radius-default);\n height: 100%;\n}\nsd-kanban-lane > .flex-fill > sd-busy-container > ._drop-position {\n pointer-events: none;\n border-radius: var(--%NS%sd-radius-default);\n background-color: var(--%NS%sd-bg-state-active);\n height: 0;\n margin-bottom: 0;\n visibility: hidden;\n transition: var(--%NS%sd-animation-duration) linear;\n transition-property: height, margin-bottom, visibility;\n}\nsd-kanban-lane[data-sd-drag-over=true] > .flex-fill > sd-busy-container > ._drop-position {\n margin-bottom: var(--%NS%sd-gap-lg);\n visibility: visible;\n}"], encapsulation: 2 });
178
178
  }
179
179
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SdKanbanLane, [{
180
180
  type: Component,
@@ -117,7 +117,7 @@ export class SdKanban {
117
117
  i0.ɵɵadvance();
118
118
  i0.ɵɵclassMap(ctx.contentClass());
119
119
  i0.ɵɵproperty("draggable", ctx.draggable());
120
- } }, dependencies: [SdResizeDirective], styles: ["sd-kanban {\n position: relative;\n display: block;\n}\nsd-kanban[data-sd-dragging-this=true] {\n display: none;\n}\nsd-kanban > ._drag-position {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n pointer-events: none;\n}\nsd-kanban[data-sd-dragging=true] > ._drag-position {\n pointer-events: auto;\n}\nsd-kanban[data-sd-dragging=true] > .card {\n pointer-events: none;\n cursor: pointer;\n}\nsd-kanban > ._drop-position {\n border-radius: var(--sd-radius-default);\n background-color: var(--sd-bg-state-active);\n height: 0;\n margin-bottom: 0;\n visibility: hidden;\n transition: var(--sd-animation-duration) linear;\n transition-property: height, margin-bottom, visibility;\n}\nsd-kanban[data-sd-drag-over=true] > ._drop-position {\n margin-bottom: var(--sd-gap-lg);\n visibility: visible;\n}\nsd-kanban > .card {\n white-space: normal;\n user-select: none;\n margin-bottom: var(--sd-gap-lg);\n}"], encapsulation: 2 });
120
+ } }, dependencies: [SdResizeDirective], styles: ["sd-kanban {\n position: relative;\n display: block;\n}\nsd-kanban[data-sd-dragging-this=true] {\n display: none;\n}\nsd-kanban > ._drag-position {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n pointer-events: none;\n}\nsd-kanban[data-sd-dragging=true] > ._drag-position {\n pointer-events: auto;\n}\nsd-kanban[data-sd-dragging=true] > .card {\n pointer-events: none;\n cursor: pointer;\n}\nsd-kanban > ._drop-position {\n border-radius: var(--%NS%sd-radius-default);\n background-color: var(--%NS%sd-bg-state-active);\n height: 0;\n margin-bottom: 0;\n visibility: hidden;\n transition: var(--%NS%sd-animation-duration) linear;\n transition-property: height, margin-bottom, visibility;\n}\nsd-kanban[data-sd-drag-over=true] > ._drop-position {\n margin-bottom: var(--%NS%sd-gap-lg);\n visibility: visible;\n}\nsd-kanban > .card {\n white-space: normal;\n user-select: none;\n margin-bottom: var(--%NS%sd-gap-lg);\n}"], encapsulation: 2 });
121
121
  }
122
122
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SdKanban, [{
123
123
  type: Component,
@@ -369,7 +369,7 @@ export class SdPermissionTable {
369
369
  i0.ɵɵrepeater(ctx.items());
370
370
  i0.ɵɵadvance(2);
371
371
  i0.ɵɵproperty("typed", ctx.itemTemplateType);
372
- } }, dependencies: [SdTypedTemplate, NgTemplateOutlet, SdCollapseIcon, SdCheckbox, SdAnchor], styles: ["sd-permission-table table {\n border-collapse: collapse;\n}\nsd-permission-table table > * > tr > * {\n padding: var(--sd-gap-sm) var(--sd-gap-lg);\n position: sticky;\n top: 0;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n color: var(--sd-tx-default);\n}\nsd-permission-table table > * > tr > * > * {\n color: var(--sd-tx-default) !important;\n}\nsd-permission-table table > * > tr > *._title {\n border-top-left-radius: 14px;\n border-bottom-left-radius: 14px;\n padding-left: var(--sd-gap-lg);\n}\nsd-permission-table table > * > tr[data-sd-collapse=true] {\n display: none;\n}\nsd-permission-table table > * > tr[data-sd-theme=first] > *._title, sd-permission-table table > * > tr[data-sd-theme=first] > *._after {\n background-color: var(--sd-permission-group-bg);\n color: var(--sd-permission-group-tx);\n}\nsd-permission-table table > * > tr[data-sd-theme=first] > *._title > *, sd-permission-table table > * > tr[data-sd-theme=first] > *._after > * {\n color: var(--sd-permission-group-tx) !important;\n}\nsd-permission-table table > * > tr[data-sd-theme=info] > *._title, sd-permission-table table > * > tr[data-sd-theme=info] > *._after {\n background-color: var(--sd-bg-info-subtle);\n}\nsd-permission-table table > * > tr[data-sd-theme=warning] > *._title, sd-permission-table table > * > tr[data-sd-theme=warning] > *._after {\n background-color: var(--sd-bg-warning-subtle);\n}\nsd-permission-table table > * > tr[data-sd-theme=success] > *._title, sd-permission-table table > * > tr[data-sd-theme=success] > *._after {\n background-color: var(--sd-bg-success-subtle);\n}"], encapsulation: 2 });
372
+ } }, dependencies: [SdTypedTemplate, NgTemplateOutlet, SdCollapseIcon, SdCheckbox, SdAnchor], styles: ["sd-permission-table table {\n border-collapse: collapse;\n}\nsd-permission-table table > * > tr > * {\n padding: var(--%NS%sd-gap-sm) var(--%NS%sd-gap-lg);\n position: sticky;\n top: 0;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n color: var(--%NS%sd-tx-default);\n}\nsd-permission-table table > * > tr > * > * {\n color: var(--%NS%sd-tx-default) !important;\n}\nsd-permission-table table > * > tr > *._title {\n border-top-left-radius: 14px;\n border-bottom-left-radius: 14px;\n padding-left: var(--%NS%sd-gap-lg);\n}\nsd-permission-table table > * > tr[data-sd-collapse=true] {\n display: none;\n}\nsd-permission-table table > * > tr[data-sd-theme=first] > *._title, sd-permission-table table > * > tr[data-sd-theme=first] > *._after {\n background-color: var(--%NS%sd-permission-group-bg);\n color: var(--%NS%sd-permission-group-tx);\n}\nsd-permission-table table > * > tr[data-sd-theme=first] > *._title > *, sd-permission-table table > * > tr[data-sd-theme=first] > *._after > * {\n color: var(--%NS%sd-permission-group-tx) !important;\n}\nsd-permission-table table > * > tr[data-sd-theme=info] > *._title, sd-permission-table table > * > tr[data-sd-theme=info] > *._after {\n background-color: var(--%NS%sd-bg-info-subtle);\n}\nsd-permission-table table > * > tr[data-sd-theme=warning] > *._title, sd-permission-table table > * > tr[data-sd-theme=warning] > *._after {\n background-color: var(--%NS%sd-bg-warning-subtle);\n}\nsd-permission-table table > * > tr[data-sd-theme=success] > *._title, sd-permission-table table > * > tr[data-sd-theme=success] > *._after {\n background-color: var(--%NS%sd-bg-success-subtle);\n}"], encapsulation: 2 });
373
373
  }
374
374
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SdPermissionTable, [{
375
375
  type: Component,
@@ -804,7 +804,7 @@ export class SdSheet {
804
804
  SdPagination,
805
805
  SdAnchor,
806
806
  SdButton,
807
- SdResizeDirective], styles: ["sd-sheet {\n border: 1px solid var(--sd-bd-soft);\n border-radius: var(--sd-radius-default);\n}\nsd-sheet > ._tool {\n background-color: var(--sd-bg-canvas);\n border-top-left-radius: var(--sd-radius-default);\n border-top-right-radius: var(--sd-radius-default);\n border-bottom: 1px solid var(--sd-bd-soft);\n}\nsd-sheet > ._sheet-container {\n position: relative;\n background-color: var(--sd-bg-sheet);\n background-image: var(--sd-bg-sheet-image);\n border-bottom-left-radius: var(--sd-radius-default);\n border-bottom-right-radius: var(--sd-radius-default);\n overflow: auto;\n}\nsd-sheet > ._sheet-container > table {\n border-spacing: 0;\n table-layout: fixed;\n margin-right: 2px;\n margin-bottom: 2px;\n border-bottom-right-radius: var(--sd-radius-default);\n box-shadow: var(--sd-sheet-shadow);\n}\nsd-sheet > ._sheet-container > table > * > tr > *:last-child {\n border-right: 1px solid var(--sd-bd-soft);\n}\nsd-sheet > ._sheet-container > table > * > tr:last-child > * {\n border-bottom: 1px solid var(--sd-bd-soft);\n}\nsd-sheet > ._sheet-container > table > *:last-child > tr:last-child > td:last-child {\n border-bottom-right-radius: var(--sd-radius-default);\n overflow: hidden;\n}\nsd-sheet > ._sheet-container > table > * > tr > * {\n border-right: 1px solid var(--sd-bd-soft);\n border-bottom: 1px solid var(--sd-bd-soft);\n white-space: nowrap;\n overflow: hidden;\n padding: 0;\n position: relative;\n}\nsd-sheet > ._sheet-container > table > * > tr > *._fixed:has(+ :not(._fixed)) + :not(._fixed):not([data-c=\"0\"]) {\n border-left: 1px solid var(--sd-bd-soft);\n}\nsd-sheet > ._sheet-container > table > * > tr > *._feature-cell {\n background-color: var(--sd-bg-gray-subtle);\n min-width: calc(var(--sd-font-size-default) + 2px + var(--sd-sheet-ph) * 2);\n padding: var(--sd-sheet-pv) var(--sd-sheet-ph);\n text-align: left;\n}\nsd-sheet > ._sheet-container > table > * > tr > *._feature-cell > ng-icon {\n cursor: pointer;\n color: var(--sd-tx-faint);\n}\nsd-sheet > ._sheet-container > table > * > tr > *._fixed {\n position: sticky;\n left: 0;\n}\nsd-sheet > ._sheet-container > table > * > tr > *._fixed:has(+ :not(._fixed)) {\n border-right: 1px solid var(--sd-bd-soft);\n}\nsd-sheet > ._sheet-container > table > thead {\n position: sticky;\n top: 0;\n z-index: 3;\n}\nsd-sheet > ._sheet-container > table > thead > tr > th {\n position: relative;\n background-color: var(--sd-bg-gray-subtle);\n vertical-align: middle;\n}\nsd-sheet > ._sheet-container > table > thead > tr > th._fixed {\n z-index: 4;\n}\nsd-sheet > ._sheet-container > table > thead > tr > th._last-depth {\n border-bottom: 1px solid var(--sd-bd-soft);\n}\nsd-sheet > ._sheet-container > table > thead > tr > th._feature-cell {\n border-bottom: 1px solid var(--sd-bd-soft);\n}\nsd-sheet > ._sheet-container > table > thead > tr > th._sort {\n cursor: pointer;\n}\nsd-sheet > ._sheet-container > table > thead > tr > th._sort:hover {\n text-decoration: underline;\n}\nsd-sheet > ._sheet-container > table > thead > tr > th > ._headerContent > ._sort-icon {\n padding: var(--sd-gap-xs) var(--sd-gap-xs) var(--sd-gap-xs) 0;\n background-color: var(--sd-bg-gray-subtle);\n}\nsd-sheet > ._sheet-container > table > thead > tr > th > ._resizer {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n width: 2px;\n cursor: ew-resize;\n}\nsd-sheet > ._sheet-container > table > thead:has(> tr._summary-row) > tr > th._last-depth {\n border-bottom: 1px solid var(--sd-bd-soft);\n}\nsd-sheet > ._sheet-container > table > thead:has(> tr._summary-row) > tr._summary-row > th {\n background-color: var(--sd-bg-warning-subtle);\n text-align: left;\n border-bottom: 1px solid var(--sd-bd-soft);\n}\nsd-sheet > ._sheet-container > table > tbody > tr > td {\n font-family: var(--sd-font-family-field);\n background-color: var(--sd-bg-content);\n vertical-align: top;\n}\nsd-sheet > ._sheet-container > table > tbody > tr > td._fixed {\n z-index: 2;\n}\nsd-sheet > ._sheet-container > table > tbody > tr > td > ._depth-indicator {\n display: inline-block;\n margin-top: 0.4em;\n width: 0.5em;\n height: 0.5em;\n border-left: 1px solid currentColor;\n border-bottom: 1px solid currentColor;\n vertical-align: top;\n}\nsd-sheet > ._sheet-container > ._focus-row-indicator {\n display: none;\n position: absolute;\n pointer-events: none;\n background-color: var(--sd-bg-state-active);\n z-index: 6;\n}\nsd-sheet > ._sheet-container > ._focus-row-indicator > ._focus-cell-indicator {\n position: absolute;\n border: 2px solid var(--sd-focus-ring-color);\n border-radius: var(--sd-radius-default);\n}\nsd-sheet > ._sheet-container > ._resize-indicator {\n display: none;\n position: absolute;\n pointer-events: none;\n top: 0;\n height: 100%;\n border: 1px dotted var(--sd-bd-default);\n z-index: 7;\n}\nsd-sheet > ._sheet-container > ._select-row-indicator-container {\n display: none;\n position: absolute;\n pointer-events: none;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 5;\n}\nsd-sheet > ._sheet-container > ._select-row-indicator-container > ._select-row-indicator {\n display: block;\n left: 0;\n position: absolute;\n pointer-events: none;\n background-color: var(--sd-bg-primary-solid);\n opacity: 0.1;\n}\nsd-sheet ._p-sheet {\n padding: var(--sd-sheet-pv) var(--sd-sheet-ph);\n}\nsd-sheet[data-sd-focus-mode=row] > ._sheet-container > ._focus-row-indicator > ._focus-cell-indicator {\n display: none !important;\n}\nsd-sheet[data-sd-inset=true] {\n border: none;\n border-radius: 0;\n}"], encapsulation: 2 });
807
+ SdResizeDirective], styles: ["sd-sheet {\n border: 1px solid var(--%NS%sd-bd-soft);\n border-radius: var(--%NS%sd-radius-default);\n}\nsd-sheet > ._tool {\n background-color: var(--%NS%sd-bg-canvas);\n border-top-left-radius: var(--%NS%sd-radius-default);\n border-top-right-radius: var(--%NS%sd-radius-default);\n border-bottom: 1px solid var(--%NS%sd-bd-soft);\n}\nsd-sheet > ._sheet-container {\n position: relative;\n background-color: var(--%NS%sd-bg-sheet);\n background-image: var(--%NS%sd-bg-sheet-image);\n border-bottom-left-radius: var(--%NS%sd-radius-default);\n border-bottom-right-radius: var(--%NS%sd-radius-default);\n overflow: auto;\n}\nsd-sheet > ._sheet-container > table {\n border-spacing: 0;\n table-layout: fixed;\n margin-right: 2px;\n margin-bottom: 2px;\n border-bottom-right-radius: var(--%NS%sd-radius-default);\n box-shadow: var(--%NS%sd-sheet-shadow);\n}\nsd-sheet > ._sheet-container > table > * > tr > *:last-child {\n border-right: 1px solid var(--%NS%sd-bd-soft);\n}\nsd-sheet > ._sheet-container > table > * > tr:last-child > * {\n border-bottom: 1px solid var(--%NS%sd-bd-soft);\n}\nsd-sheet > ._sheet-container > table > *:last-child > tr:last-child > td:last-child {\n border-bottom-right-radius: var(--%NS%sd-radius-default);\n overflow: hidden;\n}\nsd-sheet > ._sheet-container > table > * > tr > * {\n border-right: 1px solid var(--%NS%sd-bd-soft);\n border-bottom: 1px solid var(--%NS%sd-bd-soft);\n white-space: nowrap;\n overflow: hidden;\n padding: 0;\n position: relative;\n}\nsd-sheet > ._sheet-container > table > * > tr > *._fixed:has(+ :not(._fixed)) + :not(._fixed):not([data-c=\"0\"]) {\n border-left: 1px solid var(--%NS%sd-bd-soft);\n}\nsd-sheet > ._sheet-container > table > * > tr > *._feature-cell {\n background-color: var(--%NS%sd-bg-gray-subtle);\n min-width: calc(var(--%NS%sd-font-size-default) + 2px + var(--%NS%sd-sheet-ph) * 2);\n padding: var(--%NS%sd-sheet-pv) var(--%NS%sd-sheet-ph);\n text-align: left;\n}\nsd-sheet > ._sheet-container > table > * > tr > *._feature-cell > ng-icon {\n cursor: pointer;\n color: var(--%NS%sd-tx-faint);\n}\nsd-sheet > ._sheet-container > table > * > tr > *._fixed {\n position: sticky;\n left: 0;\n}\nsd-sheet > ._sheet-container > table > * > tr > *._fixed:has(+ :not(._fixed)) {\n border-right: 1px solid var(--%NS%sd-bd-soft);\n}\nsd-sheet > ._sheet-container > table > thead {\n position: sticky;\n top: 0;\n z-index: 3;\n}\nsd-sheet > ._sheet-container > table > thead > tr > th {\n position: relative;\n background-color: var(--%NS%sd-bg-gray-subtle);\n vertical-align: middle;\n}\nsd-sheet > ._sheet-container > table > thead > tr > th._fixed {\n z-index: 4;\n}\nsd-sheet > ._sheet-container > table > thead > tr > th._last-depth {\n border-bottom: 1px solid var(--%NS%sd-bd-soft);\n}\nsd-sheet > ._sheet-container > table > thead > tr > th._feature-cell {\n border-bottom: 1px solid var(--%NS%sd-bd-soft);\n}\nsd-sheet > ._sheet-container > table > thead > tr > th._sort {\n cursor: pointer;\n}\nsd-sheet > ._sheet-container > table > thead > tr > th._sort:hover {\n text-decoration: underline;\n}\nsd-sheet > ._sheet-container > table > thead > tr > th > ._headerContent > ._sort-icon {\n padding: var(--%NS%sd-gap-xs) var(--%NS%sd-gap-xs) var(--%NS%sd-gap-xs) 0;\n background-color: var(--%NS%sd-bg-gray-subtle);\n}\nsd-sheet > ._sheet-container > table > thead > tr > th > ._resizer {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n width: 2px;\n cursor: ew-resize;\n}\nsd-sheet > ._sheet-container > table > thead:has(> tr._summary-row) > tr > th._last-depth {\n border-bottom: 1px solid var(--%NS%sd-bd-soft);\n}\nsd-sheet > ._sheet-container > table > thead:has(> tr._summary-row) > tr._summary-row > th {\n background-color: var(--%NS%sd-bg-warning-subtle);\n text-align: left;\n border-bottom: 1px solid var(--%NS%sd-bd-soft);\n}\nsd-sheet > ._sheet-container > table > tbody > tr > td {\n font-family: var(--%NS%sd-font-family-field);\n background-color: var(--%NS%sd-bg-content);\n vertical-align: top;\n}\nsd-sheet > ._sheet-container > table > tbody > tr > td._fixed {\n z-index: 2;\n}\nsd-sheet > ._sheet-container > table > tbody > tr > td > ._depth-indicator {\n display: inline-block;\n margin-top: 0.4em;\n width: 0.5em;\n height: 0.5em;\n border-left: 1px solid currentColor;\n border-bottom: 1px solid currentColor;\n vertical-align: top;\n}\nsd-sheet > ._sheet-container > ._focus-row-indicator {\n display: none;\n position: absolute;\n pointer-events: none;\n background-color: var(--%NS%sd-bg-state-active);\n z-index: 6;\n}\nsd-sheet > ._sheet-container > ._focus-row-indicator > ._focus-cell-indicator {\n position: absolute;\n border: 2px solid var(--%NS%sd-focus-ring-color);\n border-radius: var(--%NS%sd-radius-default);\n}\nsd-sheet > ._sheet-container > ._resize-indicator {\n display: none;\n position: absolute;\n pointer-events: none;\n top: 0;\n height: 100%;\n border: 1px dotted var(--%NS%sd-bd-default);\n z-index: 7;\n}\nsd-sheet > ._sheet-container > ._select-row-indicator-container {\n display: none;\n position: absolute;\n pointer-events: none;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 5;\n}\nsd-sheet > ._sheet-container > ._select-row-indicator-container > ._select-row-indicator {\n display: block;\n left: 0;\n position: absolute;\n pointer-events: none;\n background-color: var(--%NS%sd-bg-primary-solid);\n opacity: 0.1;\n}\nsd-sheet ._p-sheet {\n padding: var(--%NS%sd-sheet-pv) var(--%NS%sd-sheet-ph);\n}\nsd-sheet[data-sd-focus-mode=row] > ._sheet-container > ._focus-row-indicator > ._focus-cell-indicator {\n display: none !important;\n}\nsd-sheet[data-sd-inset=true] {\n border: none;\n border-radius: 0;\n}"], encapsulation: 2 });
808
808
  }
809
809
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SdSheet, [{
810
810
  type: Component,
@@ -112,7 +112,7 @@ export class SdStatePreset {
112
112
  i0.ɵɵproperty("svg", ctx.tablerStar);
113
113
  i0.ɵɵadvance();
114
114
  i0.ɵɵrepeater(ctx._presets());
115
- } }, dependencies: [SdAnchor, NgIcon], styles: ["sd-state-preset {\n display: inline-block;\n vertical-align: top;\n}\nsd-state-preset > ._sd-state-preset {\n display: flex;\n align-items: center;\n gap: var(--sd-gap-sm);\n flex-wrap: wrap;\n}\nsd-state-preset > ._sd-state-preset > ._add-btn {\n line-height: var(--sd-line-height);\n border: 1px solid transparent;\n padding: var(--sd-gap-sm) var(--sd-gap-default);\n}\nsd-state-preset > ._sd-state-preset > ._preset-item {\n display: inline-flex;\n align-items: center;\n gap: var(--sd-gap-xs);\n line-height: var(--sd-line-height);\n border: 1px solid transparent;\n border-radius: var(--sd-radius-lg);\n padding: var(--sd-gap-sm) var(--sd-gap-default);\n background-color: var(--sd-bg-gray-subtle);\n}\nsd-state-preset > ._sd-state-preset > ._preset-item:hover {\n background-color: var(--sd-bg-gray-subtle-hover);\n}\nsd-state-preset > ._sd-state-preset > ._preset-item > sd-anchor {\n padding: 0 var(--sd-gap-sm);\n}\nsd-state-preset[data-sd-size=sm] > ._sd-state-preset > ._add-btn {\n padding: var(--sd-gap-xs) var(--sd-gap-default);\n}\nsd-state-preset[data-sd-size=sm] > ._sd-state-preset > ._preset-item {\n padding: var(--sd-gap-xs) var(--sd-gap-default);\n}\nsd-state-preset[data-sd-size=lg] > ._sd-state-preset > ._add-btn {\n padding: var(--sd-gap-default) var(--sd-gap-lg);\n}\nsd-state-preset[data-sd-size=lg] > ._sd-state-preset > ._preset-item {\n padding: var(--sd-gap-default) var(--sd-gap-lg);\n}"], encapsulation: 2 });
115
+ } }, dependencies: [SdAnchor, NgIcon], styles: ["sd-state-preset {\n display: inline-block;\n vertical-align: top;\n}\nsd-state-preset > ._sd-state-preset {\n display: flex;\n align-items: center;\n gap: var(--%NS%sd-gap-sm);\n flex-wrap: wrap;\n}\nsd-state-preset > ._sd-state-preset > ._add-btn {\n line-height: var(--%NS%sd-line-height);\n border: 1px solid transparent;\n padding: var(--%NS%sd-gap-sm) var(--%NS%sd-gap-default);\n}\nsd-state-preset > ._sd-state-preset > ._preset-item {\n display: inline-flex;\n align-items: center;\n gap: var(--%NS%sd-gap-xs);\n line-height: var(--%NS%sd-line-height);\n border: 1px solid transparent;\n border-radius: var(--%NS%sd-radius-lg);\n padding: var(--%NS%sd-gap-sm) var(--%NS%sd-gap-default);\n background-color: var(--%NS%sd-bg-gray-subtle);\n}\nsd-state-preset > ._sd-state-preset > ._preset-item:hover {\n background-color: var(--%NS%sd-bg-gray-subtle-hover);\n}\nsd-state-preset > ._sd-state-preset > ._preset-item > sd-anchor {\n padding: 0 var(--%NS%sd-gap-sm);\n}\nsd-state-preset[data-sd-size=sm] > ._sd-state-preset > ._add-btn {\n padding: var(--%NS%sd-gap-xs) var(--%NS%sd-gap-default);\n}\nsd-state-preset[data-sd-size=sm] > ._sd-state-preset > ._preset-item {\n padding: var(--%NS%sd-gap-xs) var(--%NS%sd-gap-default);\n}\nsd-state-preset[data-sd-size=lg] > ._sd-state-preset > ._add-btn {\n padding: var(--%NS%sd-gap-default) var(--%NS%sd-gap-lg);\n}\nsd-state-preset[data-sd-size=lg] > ._sd-state-preset > ._preset-item {\n padding: var(--%NS%sd-gap-default) var(--%NS%sd-gap-lg);\n}"], encapsulation: 2 });
116
116
  }
117
117
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SdStatePreset, [{
118
118
  type: Component,
@@ -203,7 +203,7 @@ export class SdMarkdownEditor {
203
203
  i0.ɵɵdomElement(1, "div", 1);
204
204
  } if (rf & 2) {
205
205
  i0.ɵɵconditional(!ctx.disabled() && !ctx.readonly() ? 0 : -1);
206
- } }, styles: ["sd-markdown-editor {\n display: block;\n position: relative;\n border: 1px solid var(--sd-bd-field);\n border-radius: var(--sd-radius-default);\n background-color: var(--sd-bg-field);\n}\nsd-markdown-editor > ._toolbar {\n display: flex;\n flex-wrap: wrap;\n gap: var(--sd-gap-xs);\n padding: var(--sd-gap-xs);\n border-bottom: 1px solid var(--sd-bd-hairline);\n}\nsd-markdown-editor > ._toolbar > ._btn-group {\n display: flex;\n gap: 1px;\n}\nsd-markdown-editor > ._toolbar > ._btn-group > button {\n padding: var(--sd-gap-xs) var(--sd-gap-sm);\n border: 1px solid var(--sd-bd-hairline);\n border-radius: var(--sd-radius-default);\n background-color: transparent;\n cursor: pointer;\n font-size: var(--sd-font-size-default);\n line-height: 1;\n}\nsd-markdown-editor > ._toolbar > ._btn-group > button._active {\n background-color: var(--sd-bg-primary-solid);\n color: var(--sd-tx-primary-solid);\n}\nsd-markdown-editor > ._toolbar > ._btn-group > button:hover {\n background-color: var(--sd-bg-state-hover);\n}\nsd-markdown-editor > ._toolbar > ._btn-group > button._active:hover {\n background-color: var(--sd-bg-primary-solid);\n}\nsd-markdown-editor > ._editor-container {\n padding: var(--sd-gap-sm);\n min-height: 6.25rem;\n font-family: var(--sd-font-family-field);\n}\nsd-markdown-editor > ._editor-container > .tiptap {\n outline: none;\n}\nsd-markdown-editor > ._editor-container > .tiptap:focus {\n outline: none;\n}\nsd-markdown-editor[data-sd-disabled=true] {\n background-color: var(--sd-bg-disabled);\n color: var(--sd-tx-disabled);\n}\nsd-markdown-editor[data-sd-disabled=true] > ._editor-container > .tiptap {\n cursor: not-allowed;\n}\nsd-markdown-editor[data-sd-readonly=true] > ._editor-container > .tiptap {\n cursor: default;\n}"], encapsulation: 2 });
206
+ } }, styles: ["sd-markdown-editor {\n display: block;\n position: relative;\n border: 1px solid var(--%NS%sd-bd-field);\n border-radius: var(--%NS%sd-radius-default);\n background-color: var(--%NS%sd-bg-field);\n}\nsd-markdown-editor > ._toolbar {\n display: flex;\n flex-wrap: wrap;\n gap: var(--%NS%sd-gap-xs);\n padding: var(--%NS%sd-gap-xs);\n border-bottom: 1px solid var(--%NS%sd-bd-hairline);\n}\nsd-markdown-editor > ._toolbar > ._btn-group {\n display: flex;\n gap: 1px;\n}\nsd-markdown-editor > ._toolbar > ._btn-group > button {\n padding: var(--%NS%sd-gap-xs) var(--%NS%sd-gap-sm);\n border: 1px solid var(--%NS%sd-bd-hairline);\n border-radius: var(--%NS%sd-radius-default);\n background-color: transparent;\n cursor: pointer;\n font-size: var(--%NS%sd-font-size-default);\n line-height: 1;\n}\nsd-markdown-editor > ._toolbar > ._btn-group > button._active {\n background-color: var(--%NS%sd-bg-primary-solid);\n color: var(--%NS%sd-tx-primary-solid);\n}\nsd-markdown-editor > ._toolbar > ._btn-group > button:hover {\n background-color: var(--%NS%sd-bg-state-hover);\n}\nsd-markdown-editor > ._toolbar > ._btn-group > button._active:hover {\n background-color: var(--%NS%sd-bg-primary-solid);\n}\nsd-markdown-editor > ._editor-container {\n padding: var(--%NS%sd-gap-sm);\n min-height: 6.25rem;\n font-family: var(--%NS%sd-font-family-field);\n}\nsd-markdown-editor > ._editor-container > .tiptap {\n outline: none;\n}\nsd-markdown-editor > ._editor-container > .tiptap:focus {\n outline: none;\n}\nsd-markdown-editor[data-sd-disabled=true] {\n background-color: var(--%NS%sd-bg-disabled);\n color: var(--%NS%sd-tx-disabled);\n}\nsd-markdown-editor[data-sd-disabled=true] > ._editor-container > .tiptap {\n cursor: not-allowed;\n}\nsd-markdown-editor[data-sd-readonly=true] > ._editor-container > .tiptap {\n cursor: default;\n}"], encapsulation: 2 });
207
207
  }
208
208
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SdMarkdownEditor, [{
209
209
  type: Component,