@design.estate/dees-catalog 3.71.1 → 3.72.1

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.
@@ -187227,7 +187227,7 @@ var stepperDemo = /* @__PURE__ */ __name(() => b2`
187227
187227
  init_dist_ts30();
187228
187228
  init_dist_ts29();
187229
187229
  init_theme();
187230
- var _activeFormValid_dec, _activeForm_dec, _stepperZIndex_dec, _overlay_dec, _selectedStep_dec, _steps_dec, _a81, _DeesStepper_decorators, _init82, _steps, _selectedStep, _overlay, _stepperZIndex, _activeForm, _activeFormValid;
187230
+ var _activeFormValid_dec, _activeForm_dec, _stepperZIndex_dec, _cancelable_dec, _overlay_dec, _selectedStep_dec, _steps_dec, _a81, _DeesStepper_decorators, _init82, _steps, _selectedStep, _overlay, _cancelable, _stepperZIndex, _activeForm, _activeFormValid;
187231
187231
  _DeesStepper_decorators = [customElement("dees-stepper")];
187232
187232
  var _DeesStepper = class _DeesStepper extends (_a81 = DeesElement, _steps_dec = [n5({
187233
187233
  type: Array
@@ -187236,31 +187236,43 @@ var _DeesStepper = class _DeesStepper extends (_a81 = DeesElement, _steps_dec =
187236
187236
  })], _overlay_dec = [n5({
187237
187237
  type: Boolean,
187238
187238
  reflect: true
187239
+ })], _cancelable_dec = [n5({
187240
+ type: Boolean,
187241
+ reflect: true
187239
187242
  })], _stepperZIndex_dec = [n5({ type: Number, attribute: false })], _activeForm_dec = [n5({ type: Object, attribute: false })], _activeFormValid_dec = [n5({ type: Boolean, attribute: false })], _a81) {
187240
187243
  constructor() {
187241
187244
  super();
187242
187245
  __privateAdd(this, _steps, __runInitializers(_init82, 8, this, [])), __runInitializers(_init82, 11, this);
187243
187246
  __privateAdd(this, _selectedStep, __runInitializers(_init82, 12, this)), __runInitializers(_init82, 15, this);
187244
187247
  __privateAdd(this, _overlay, __runInitializers(_init82, 16, this, false)), __runInitializers(_init82, 19, this);
187245
- __privateAdd(this, _stepperZIndex, __runInitializers(_init82, 20, this, 1e3)), __runInitializers(_init82, 23, this);
187246
- __privateAdd(this, _activeForm, __runInitializers(_init82, 24, this, null)), __runInitializers(_init82, 27, this);
187247
- __privateAdd(this, _activeFormValid, __runInitializers(_init82, 28, this, true)), __runInitializers(_init82, 31, this);
187248
+ __privateAdd(this, _cancelable, __runInitializers(_init82, 20, this, true)), __runInitializers(_init82, 23, this);
187249
+ __privateAdd(this, _stepperZIndex, __runInitializers(_init82, 24, this, 1e3)), __runInitializers(_init82, 27, this);
187250
+ __privateAdd(this, _activeForm, __runInitializers(_init82, 28, this, null)), __runInitializers(_init82, 31, this);
187251
+ __privateAdd(this, _activeFormValid, __runInitializers(_init82, 32, this, true)), __runInitializers(_init82, 35, this);
187248
187252
  __publicField(this, "activeFormSubscription");
187249
187253
  __publicField(this, "windowLayer");
187250
187254
  __publicField(this, "getIndexOfStep", /* @__PURE__ */ __name((stepArg) => {
187251
187255
  return this.steps.findIndex((stepArg2) => stepArg === stepArg2);
187252
187256
  }, "getIndexOfStep"));
187253
187257
  __publicField(this, "scroller");
187258
+ /**
187259
+ * Currently-open confirmation modal (if any). Prevents double-stacking when
187260
+ * the user clicks the backdrop or the Cancel button while a confirm modal
187261
+ * is already visible. The reference may become stale (point to a destroyed
187262
+ * modal) if the user dismisses the confirm modal by clicking its own
187263
+ * backdrop — so handleCancelRequest() uses isConnected to detect that.
187264
+ */
187265
+ __publicField(this, "cancelConfirmModal");
187254
187266
  }
187255
187267
  static async createAndShow(optionsArg) {
187256
187268
  const body3 = document.body;
187257
187269
  const stepper = new _DeesStepper();
187258
187270
  stepper.steps = optionsArg.steps;
187259
187271
  stepper.overlay = true;
187272
+ if (optionsArg.cancelable !== void 0) {
187273
+ stepper.cancelable = optionsArg.cancelable;
187274
+ }
187260
187275
  stepper.windowLayer = await DeesWindowLayer.createAndShow({ blur: true });
187261
- stepper.windowLayer.addEventListener("click", async () => {
187262
- await stepper.destroy();
187263
- });
187264
187276
  body3.append(stepper.windowLayer);
187265
187277
  body3.append(stepper);
187266
187278
  stepper.stepperZIndex = zIndexRegistry.getNextZIndex();
@@ -187272,6 +187284,7 @@ var _DeesStepper = class _DeesStepper extends (_a81 = DeesElement, _steps_dec =
187272
187284
  <div
187273
187285
  class="stepperContainer ${this.overlay ? "overlay" : ""}"
187274
187286
  style=${this.overlay ? `z-index: ${this.stepperZIndex};` : ""}
187287
+ @click=${this.handleOutsideClick}
187275
187288
  >
187276
187289
  ${this.steps.map((stepArg, stepIndex) => {
187277
187290
  const isSelected = stepArg === this.selectedStep;
@@ -187292,19 +187305,23 @@ var _DeesStepper = class _DeesStepper extends (_a81 = DeesElement, _steps_dec =
187292
187305
  <div class="title">${stepArg.title}</div>
187293
187306
  <div class="content">${stepArg.content}</div>
187294
187307
  </div>
187295
- ${stepArg.menuOptions && stepArg.menuOptions.length > 0 ? b2`<div slot="footer" class="bottomButtons">
187296
- ${isSelected && this.activeForm !== null && !this.activeFormValid ? b2`<div class="stepHint">Complete form to continue</div>` : ""}
187297
- ${stepArg.menuOptions.map((actionArg, actionIndex) => {
187308
+ <div slot="footer" class="bottomButtons">
187309
+ ${isSelected && this.activeForm !== null && !this.activeFormValid ? b2`<div class="stepHint">Complete form to continue</div>` : ""}
187310
+ ${this.cancelable ? b2`<div
187311
+ class="bottomButton"
187312
+ @click=${() => this.handleCancelRequest()}
187313
+ >Cancel</div>` : ""}
187314
+ ${stepArg.menuOptions?.map((actionArg, actionIndex) => {
187298
187315
  const isPrimary = actionIndex === stepArg.menuOptions.length - 1;
187299
187316
  const isDisabled = isPrimary && this.activeForm !== null && !this.activeFormValid;
187300
187317
  return b2`
187301
- <div
187302
- class="bottomButton ${isPrimary ? "primary" : ""} ${isDisabled ? "disabled" : ""}"
187303
- @click=${() => this.handleMenuOptionClick(actionArg, isPrimary)}
187304
- >${actionArg.name}</div>
187305
- `;
187306
- })}
187307
- </div>` : ""}
187318
+ <div
187319
+ class="bottomButton ${isPrimary ? "primary" : ""} ${isDisabled ? "disabled" : ""}"
187320
+ @click=${() => this.handleMenuOptionClick(actionArg, isPrimary)}
187321
+ >${actionArg.name}</div>
187322
+ `;
187323
+ }) ?? ""}
187324
+ </div>
187308
187325
  </dees-tile>`;
187309
187326
  })}
187310
187327
  </div>
@@ -187446,11 +187463,72 @@ var _DeesStepper = class _DeesStepper extends (_a81 = DeesElement, _steps_dec =
187446
187463
  }
187447
187464
  await optionArg.action(this);
187448
187465
  }
187466
+ /**
187467
+ * Click handler on .stepperContainer. Mirrors dees-modal.handleOutsideClick:
187468
+ * when the user clicks the empty backdrop area (target === stepperContainer,
187469
+ * not any descendant tile), trigger the cancel confirmation flow. Clicks
187470
+ * that originate inside a step tile have a different event.target and are
187471
+ * ignored here.
187472
+ */
187473
+ handleOutsideClick(eventArg) {
187474
+ if (!this.overlay) return;
187475
+ if (!this.cancelable) return;
187476
+ eventArg.stopPropagation();
187477
+ const stepperContainer = this.shadowRoot.querySelector(".stepperContainer");
187478
+ if (eventArg.target === stepperContainer) {
187479
+ this.handleCancelRequest();
187480
+ }
187481
+ }
187482
+ /**
187483
+ * Shown by both the backdrop click and the Cancel button in the footer.
187484
+ * Presents a dees-modal asking the user to confirm cancellation. If they
187485
+ * confirm, the stepper and window layer are destroyed; otherwise the
187486
+ * confirm modal is dismissed and the stepper stays open.
187487
+ *
187488
+ * The isConnected check on the cached reference handles the case where the
187489
+ * user dismissed the previous confirm modal by clicking ITS OWN backdrop —
187490
+ * dees-modal.handleOutsideClick calls destroy() directly, bypassing our
187491
+ * action callbacks, so our cached reference would be stale without this
187492
+ * fallback check.
187493
+ */
187494
+ async handleCancelRequest() {
187495
+ if (!this.cancelable) return;
187496
+ if (this.cancelConfirmModal && this.cancelConfirmModal.isConnected) return;
187497
+ this.cancelConfirmModal = void 0;
187498
+ this.cancelConfirmModal = await DeesModal.createAndShow({
187499
+ heading: "Cancel setup?",
187500
+ width: "small",
187501
+ content: b2`
187502
+ <p style="margin: 0;">
187503
+ Are you sure you want to cancel? Any progress on the current step will be lost.
187504
+ </p>
187505
+ `,
187506
+ menuOptions: [
187507
+ {
187508
+ name: "Continue setup",
187509
+ action: /* @__PURE__ */ __name(async (modal) => {
187510
+ this.cancelConfirmModal = void 0;
187511
+ await modal.destroy();
187512
+ }, "action")
187513
+ },
187514
+ {
187515
+ name: "Yes, cancel",
187516
+ action: /* @__PURE__ */ __name(async (modal) => {
187517
+ this.cancelConfirmModal = void 0;
187518
+ modal.destroy();
187519
+ const domtools19 = await this.domtoolsPromise;
187520
+ await domtools19.convenience.smartdelay.delayFor(100);
187521
+ await this.destroy();
187522
+ }, "action")
187523
+ }
187524
+ ]
187525
+ });
187526
+ }
187449
187527
  async destroy() {
187450
187528
  const domtools19 = await this.domtoolsPromise;
187451
187529
  const container = this.shadowRoot.querySelector(".stepperContainer");
187452
187530
  container?.classList.add("predestroy");
187453
- await domtools19.convenience.smartdelay.delayFor(200);
187531
+ await domtools19.convenience.smartdelay.delayFor(250);
187454
187532
  if (this.parentElement) {
187455
187533
  this.parentElement.removeChild(this);
187456
187534
  }
@@ -187467,12 +187545,14 @@ _init82 = __decoratorStart(_a81);
187467
187545
  _steps = new WeakMap();
187468
187546
  _selectedStep = new WeakMap();
187469
187547
  _overlay = new WeakMap();
187548
+ _cancelable = new WeakMap();
187470
187549
  _stepperZIndex = new WeakMap();
187471
187550
  _activeForm = new WeakMap();
187472
187551
  _activeFormValid = new WeakMap();
187473
187552
  __decorateElement(_init82, 4, "steps", _steps_dec, _DeesStepper, _steps);
187474
187553
  __decorateElement(_init82, 4, "selectedStep", _selectedStep_dec, _DeesStepper, _selectedStep);
187475
187554
  __decorateElement(_init82, 4, "overlay", _overlay_dec, _DeesStepper, _overlay);
187555
+ __decorateElement(_init82, 4, "cancelable", _cancelable_dec, _DeesStepper, _cancelable);
187476
187556
  __decorateElement(_init82, 4, "stepperZIndex", _stepperZIndex_dec, _DeesStepper, _stepperZIndex);
187477
187557
  __decorateElement(_init82, 4, "activeForm", _activeForm_dec, _DeesStepper, _activeForm);
187478
187558
  __decorateElement(_init82, 4, "activeFormValid", _activeFormValid_dec, _DeesStepper, _activeFormValid);
@@ -187523,9 +187603,14 @@ __publicField(_DeesStepper, "styles", [
187523
187603
  height: 100vh;
187524
187604
  }
187525
187605
 
187526
- .stepperContainer.predestroy {
187527
- opacity: 0;
187528
- transition: opacity 0.2s ease-in;
187606
+ /* Exit animation — reverse of the entry. Tiles slide DOWN + fade out,
187607
+ mirroring the .entrance slide-up. The transition override is needed
187608
+ because dees-tile.step has its own 0.7s transition for step selection
187609
+ which would otherwise make the exit sluggish. */
187610
+ .stepperContainer.predestroy dees-tile.step {
187611
+ transform: translateY(16px);
187612
+ filter: opacity(0);
187613
+ transition: transform 0.25s, filter 0.2s;
187529
187614
  }
187530
187615
 
187531
187616
  dees-tile.step {
@@ -187663,15 +187748,17 @@ __publicField(_DeesStepper, "styles", [
187663
187748
  transition: all 0.15s ease;
187664
187749
  background: transparent;
187665
187750
  border: none;
187666
- border-left: 1px solid var(--dees-color-border-subtle);
187667
187751
  color: var(--dees-color-text-muted);
187668
187752
  white-space: nowrap;
187669
187753
  display: flex;
187670
187754
  align-items: center;
187671
187755
  }
187672
187756
 
187673
- .bottomButtons .bottomButton:first-child {
187674
- border-left: none;
187757
+ /* Border-left separator on every button EXCEPT the first one.
187758
+ Uses general sibling so the stepHint (if rendered on the left) does
187759
+ not shift which button counts as "first" and create a phantom border. */
187760
+ .bottomButtons .bottomButton ~ .bottomButton {
187761
+ border-left: 1px solid var(--dees-color-border-subtle);
187675
187762
  }
187676
187763
 
187677
187764
  .bottomButtons .bottomButton:hover {
@@ -201198,7 +201285,7 @@ init_group_runtime();
201198
201285
  // ts_web/00_commitinfo_data.ts
201199
201286
  var commitinfo = {
201200
201287
  name: "@design.estate/dees-catalog",
201201
- version: "3.71.1",
201288
+ version: "3.72.1",
201202
201289
  description: "A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript."
201203
201290
  };
201204
201291
  export {
@@ -203171,4 +203258,4 @@ ibantools/jsnext/ibantools.js:
203171
203258
  * @preferred
203172
203259
  *)
203173
203260
  */
203174
- //# sourceMappingURL=bundle-1775924449030.js.map
203261
+ //# sourceMappingURL=bundle-1775985878752.js.map
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@design.estate/dees-catalog',
6
- version: '3.71.1',
6
+ version: '3.72.1',
7
7
  description: 'A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript.'
8
8
  };
9
9
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHNfd2ViLzAwX2NvbW1pdGluZm9fZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRztJQUN4QixJQUFJLEVBQUUsNkJBQTZCO0lBQ25DLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLFdBQVcsRUFBRSxzSkFBc0o7Q0FDcEssQ0FBQSJ9
@@ -22,10 +22,18 @@ export declare class DeesStepper extends DeesElement {
22
22
  static demoGroups: string[];
23
23
  static createAndShow(optionsArg: {
24
24
  steps: IStep[];
25
+ cancelable?: boolean;
25
26
  }): Promise<DeesStepper>;
26
27
  accessor steps: IStep[];
27
28
  accessor selectedStep: IStep;
28
29
  accessor overlay: boolean;
30
+ /**
31
+ * When true (default), the stepper renders a Cancel button in every step's
32
+ * footer, and clicking the backdrop (overlay mode) triggers the same cancel
33
+ * confirmation flow. Set to false for forced flows where the user must
34
+ * complete the stepper — no Cancel button, no backdrop dismissal.
35
+ */
36
+ accessor cancelable: boolean;
29
37
  accessor stepperZIndex: number;
30
38
  accessor activeForm: DeesForm | null;
31
39
  accessor activeFormValid: boolean;
@@ -64,5 +72,34 @@ export declare class DeesStepper extends DeesElement {
64
72
  * completes before the click handler returns.
65
73
  */
66
74
  private handleMenuOptionClick;
75
+ /**
76
+ * Currently-open confirmation modal (if any). Prevents double-stacking when
77
+ * the user clicks the backdrop or the Cancel button while a confirm modal
78
+ * is already visible. The reference may become stale (point to a destroyed
79
+ * modal) if the user dismisses the confirm modal by clicking its own
80
+ * backdrop — so handleCancelRequest() uses isConnected to detect that.
81
+ */
82
+ private cancelConfirmModal?;
83
+ /**
84
+ * Click handler on .stepperContainer. Mirrors dees-modal.handleOutsideClick:
85
+ * when the user clicks the empty backdrop area (target === stepperContainer,
86
+ * not any descendant tile), trigger the cancel confirmation flow. Clicks
87
+ * that originate inside a step tile have a different event.target and are
88
+ * ignored here.
89
+ */
90
+ private handleOutsideClick;
91
+ /**
92
+ * Shown by both the backdrop click and the Cancel button in the footer.
93
+ * Presents a dees-modal asking the user to confirm cancellation. If they
94
+ * confirm, the stepper and window layer are destroyed; otherwise the
95
+ * confirm modal is dismissed and the stepper stays open.
96
+ *
97
+ * The isConnected check on the cached reference handles the case where the
98
+ * user dismissed the previous confirm modal by clicking ITS OWN backdrop —
99
+ * dees-modal.handleOutsideClick calls destroy() directly, bypassing our
100
+ * action callbacks, so our cached reference would be stale without this
101
+ * fallback check.
102
+ */
103
+ handleCancelRequest(): Promise<void>;
67
104
  destroy(): Promise<void>;
68
105
  }
@@ -40,6 +40,7 @@ import { themeDefaultStyles } from '../../00theme.js';
40
40
  import { cssGeistFontFamily } from '../../00fonts.js';
41
41
  import { zIndexRegistry } from '../../00zindex.js';
42
42
  import { DeesWindowLayer } from '../../00group-overlay/dees-windowlayer/dees-windowlayer.js';
43
+ import { DeesModal } from '../../00group-overlay/dees-modal/dees-modal.js';
43
44
  import '../dees-tile/dees-tile.js';
44
45
  let DeesStepper = (() => {
45
46
  let _classDecorators = [customElement('dees-stepper')];
@@ -56,6 +57,9 @@ let DeesStepper = (() => {
56
57
  let _overlay_decorators;
57
58
  let _overlay_initializers = [];
58
59
  let _overlay_extraInitializers = [];
60
+ let _cancelable_decorators;
61
+ let _cancelable_initializers = [];
62
+ let _cancelable_extraInitializers = [];
59
63
  let _stepperZIndex_decorators;
60
64
  let _stepperZIndex_initializers = [];
61
65
  let _stepperZIndex_extraInitializers = [];
@@ -79,12 +83,17 @@ let DeesStepper = (() => {
79
83
  type: Boolean,
80
84
  reflect: true,
81
85
  })];
86
+ _cancelable_decorators = [property({
87
+ type: Boolean,
88
+ reflect: true,
89
+ })];
82
90
  _stepperZIndex_decorators = [property({ type: Number, attribute: false })];
83
91
  _activeForm_decorators = [property({ type: Object, attribute: false })];
84
92
  _activeFormValid_decorators = [property({ type: Boolean, attribute: false })];
85
93
  __esDecorate(this, null, _steps_decorators, { kind: "accessor", name: "steps", static: false, private: false, access: { has: obj => "steps" in obj, get: obj => obj.steps, set: (obj, value) => { obj.steps = value; } }, metadata: _metadata }, _steps_initializers, _steps_extraInitializers);
86
94
  __esDecorate(this, null, _selectedStep_decorators, { kind: "accessor", name: "selectedStep", static: false, private: false, access: { has: obj => "selectedStep" in obj, get: obj => obj.selectedStep, set: (obj, value) => { obj.selectedStep = value; } }, metadata: _metadata }, _selectedStep_initializers, _selectedStep_extraInitializers);
87
95
  __esDecorate(this, null, _overlay_decorators, { kind: "accessor", name: "overlay", static: false, private: false, access: { has: obj => "overlay" in obj, get: obj => obj.overlay, set: (obj, value) => { obj.overlay = value; } }, metadata: _metadata }, _overlay_initializers, _overlay_extraInitializers);
96
+ __esDecorate(this, null, _cancelable_decorators, { kind: "accessor", name: "cancelable", static: false, private: false, access: { has: obj => "cancelable" in obj, get: obj => obj.cancelable, set: (obj, value) => { obj.cancelable = value; } }, metadata: _metadata }, _cancelable_initializers, _cancelable_extraInitializers);
88
97
  __esDecorate(this, null, _stepperZIndex_decorators, { kind: "accessor", name: "stepperZIndex", static: false, private: false, access: { has: obj => "stepperZIndex" in obj, get: obj => obj.stepperZIndex, set: (obj, value) => { obj.stepperZIndex = value; } }, metadata: _metadata }, _stepperZIndex_initializers, _stepperZIndex_extraInitializers);
89
98
  __esDecorate(this, null, _activeForm_decorators, { kind: "accessor", name: "activeForm", static: false, private: false, access: { has: obj => "activeForm" in obj, get: obj => obj.activeForm, set: (obj, value) => { obj.activeForm = value; } }, metadata: _metadata }, _activeForm_initializers, _activeForm_extraInitializers);
90
99
  __esDecorate(this, null, _activeFormValid_decorators, { kind: "accessor", name: "activeFormValid", static: false, private: false, access: { has: obj => "activeFormValid" in obj, get: obj => obj.activeFormValid, set: (obj, value) => { obj.activeFormValid = value; } }, metadata: _metadata }, _activeFormValid_initializers, _activeFormValid_extraInitializers);
@@ -100,10 +109,10 @@ let DeesStepper = (() => {
100
109
  const stepper = new DeesStepper();
101
110
  stepper.steps = optionsArg.steps;
102
111
  stepper.overlay = true;
112
+ if (optionsArg.cancelable !== undefined) {
113
+ stepper.cancelable = optionsArg.cancelable;
114
+ }
103
115
  stepper.windowLayer = await DeesWindowLayer.createAndShow({ blur: true });
104
- stepper.windowLayer.addEventListener('click', async () => {
105
- await stepper.destroy();
106
- });
107
116
  body.append(stepper.windowLayer);
108
117
  body.append(stepper);
109
118
  // Get z-index for stepper (should be above window layer)
@@ -121,7 +130,16 @@ let DeesStepper = (() => {
121
130
  #overlay_accessor_storage = (__runInitializers(this, _selectedStep_extraInitializers), __runInitializers(this, _overlay_initializers, false));
122
131
  get overlay() { return this.#overlay_accessor_storage; }
123
132
  set overlay(value) { this.#overlay_accessor_storage = value; }
124
- #stepperZIndex_accessor_storage = (__runInitializers(this, _overlay_extraInitializers), __runInitializers(this, _stepperZIndex_initializers, 1000));
133
+ #cancelable_accessor_storage = (__runInitializers(this, _overlay_extraInitializers), __runInitializers(this, _cancelable_initializers, true));
134
+ /**
135
+ * When true (default), the stepper renders a Cancel button in every step's
136
+ * footer, and clicking the backdrop (overlay mode) triggers the same cancel
137
+ * confirmation flow. Set to false for forced flows where the user must
138
+ * complete the stepper — no Cancel button, no backdrop dismissal.
139
+ */
140
+ get cancelable() { return this.#cancelable_accessor_storage; }
141
+ set cancelable(value) { this.#cancelable_accessor_storage = value; }
142
+ #stepperZIndex_accessor_storage = (__runInitializers(this, _cancelable_extraInitializers), __runInitializers(this, _stepperZIndex_initializers, 1000));
125
143
  get stepperZIndex() { return this.#stepperZIndex_accessor_storage; }
126
144
  set stepperZIndex(value) { this.#stepperZIndex_accessor_storage = value; }
127
145
  #activeForm_accessor_storage = (__runInitializers(this, _stepperZIndex_extraInitializers), __runInitializers(this, _activeForm_initializers, null));
@@ -177,9 +195,14 @@ let DeesStepper = (() => {
177
195
  height: 100vh;
178
196
  }
179
197
 
180
- .stepperContainer.predestroy {
181
- opacity: 0;
182
- transition: opacity 0.2s ease-in;
198
+ /* Exit animation — reverse of the entry. Tiles slide DOWN + fade out,
199
+ mirroring the .entrance slide-up. The transition override is needed
200
+ because dees-tile.step has its own 0.7s transition for step selection
201
+ which would otherwise make the exit sluggish. */
202
+ .stepperContainer.predestroy dees-tile.step {
203
+ transform: translateY(16px);
204
+ filter: opacity(0);
205
+ transition: transform 0.25s, filter 0.2s;
183
206
  }
184
207
 
185
208
  dees-tile.step {
@@ -317,15 +340,17 @@ let DeesStepper = (() => {
317
340
  transition: all 0.15s ease;
318
341
  background: transparent;
319
342
  border: none;
320
- border-left: 1px solid var(--dees-color-border-subtle);
321
343
  color: var(--dees-color-text-muted);
322
344
  white-space: nowrap;
323
345
  display: flex;
324
346
  align-items: center;
325
347
  }
326
348
 
327
- .bottomButtons .bottomButton:first-child {
328
- border-left: none;
349
+ /* Border-left separator on every button EXCEPT the first one.
350
+ Uses general sibling so the stepHint (if rendered on the left) does
351
+ not shift which button counts as "first" and create a phantom border. */
352
+ .bottomButtons .bottomButton ~ .bottomButton {
353
+ border-left: 1px solid var(--dees-color-border-subtle);
329
354
  }
330
355
 
331
356
  .bottomButtons .bottomButton:hover {
@@ -383,6 +408,7 @@ let DeesStepper = (() => {
383
408
  <div
384
409
  class="stepperContainer ${this.overlay ? 'overlay' : ''}"
385
410
  style=${this.overlay ? `z-index: ${this.stepperZIndex};` : ''}
411
+ @click=${this.handleOutsideClick}
386
412
  >
387
413
  ${this.steps.map((stepArg, stepIndex) => {
388
414
  const isSelected = stepArg === this.selectedStep;
@@ -405,23 +431,27 @@ let DeesStepper = (() => {
405
431
  <div class="title">${stepArg.title}</div>
406
432
  <div class="content">${stepArg.content}</div>
407
433
  </div>
408
- ${stepArg.menuOptions && stepArg.menuOptions.length > 0
409
- ? html `<div slot="footer" class="bottomButtons">
410
- ${isSelected && this.activeForm !== null && !this.activeFormValid
411
- ? html `<div class="stepHint">Complete form to continue</div>`
412
- : ''}
413
- ${stepArg.menuOptions.map((actionArg, actionIndex) => {
414
- const isPrimary = actionIndex === stepArg.menuOptions.length - 1;
415
- const isDisabled = isPrimary && this.activeForm !== null && !this.activeFormValid;
416
- return html `
417
- <div
418
- class="bottomButton ${isPrimary ? 'primary' : ''} ${isDisabled ? 'disabled' : ''}"
419
- @click=${() => this.handleMenuOptionClick(actionArg, isPrimary)}
420
- >${actionArg.name}</div>
421
- `;
422
- })}
423
- </div>`
434
+ <div slot="footer" class="bottomButtons">
435
+ ${isSelected && this.activeForm !== null && !this.activeFormValid
436
+ ? html `<div class="stepHint">Complete form to continue</div>`
437
+ : ''}
438
+ ${this.cancelable
439
+ ? html `<div
440
+ class="bottomButton"
441
+ @click=${() => this.handleCancelRequest()}
442
+ >Cancel</div>`
424
443
  : ''}
444
+ ${stepArg.menuOptions?.map((actionArg, actionIndex) => {
445
+ const isPrimary = actionIndex === stepArg.menuOptions.length - 1;
446
+ const isDisabled = isPrimary && this.activeForm !== null && !this.activeFormValid;
447
+ return html `
448
+ <div
449
+ class="bottomButton ${isPrimary ? 'primary' : ''} ${isDisabled ? 'disabled' : ''}"
450
+ @click=${() => this.handleMenuOptionClick(actionArg, isPrimary)}
451
+ >${actionArg.name}</div>
452
+ `;
453
+ }) ?? ''}
454
+ </div>
425
455
  </dees-tile>`;
426
456
  })}
427
457
  </div>
@@ -570,11 +600,84 @@ let DeesStepper = (() => {
570
600
  }
571
601
  await optionArg.action(this);
572
602
  }
603
+ /**
604
+ * Currently-open confirmation modal (if any). Prevents double-stacking when
605
+ * the user clicks the backdrop or the Cancel button while a confirm modal
606
+ * is already visible. The reference may become stale (point to a destroyed
607
+ * modal) if the user dismisses the confirm modal by clicking its own
608
+ * backdrop — so handleCancelRequest() uses isConnected to detect that.
609
+ */
610
+ cancelConfirmModal;
611
+ /**
612
+ * Click handler on .stepperContainer. Mirrors dees-modal.handleOutsideClick:
613
+ * when the user clicks the empty backdrop area (target === stepperContainer,
614
+ * not any descendant tile), trigger the cancel confirmation flow. Clicks
615
+ * that originate inside a step tile have a different event.target and are
616
+ * ignored here.
617
+ */
618
+ handleOutsideClick(eventArg) {
619
+ if (!this.overlay)
620
+ return;
621
+ if (!this.cancelable)
622
+ return;
623
+ eventArg.stopPropagation();
624
+ const stepperContainer = this.shadowRoot.querySelector('.stepperContainer');
625
+ if (eventArg.target === stepperContainer) {
626
+ this.handleCancelRequest();
627
+ }
628
+ }
629
+ /**
630
+ * Shown by both the backdrop click and the Cancel button in the footer.
631
+ * Presents a dees-modal asking the user to confirm cancellation. If they
632
+ * confirm, the stepper and window layer are destroyed; otherwise the
633
+ * confirm modal is dismissed and the stepper stays open.
634
+ *
635
+ * The isConnected check on the cached reference handles the case where the
636
+ * user dismissed the previous confirm modal by clicking ITS OWN backdrop —
637
+ * dees-modal.handleOutsideClick calls destroy() directly, bypassing our
638
+ * action callbacks, so our cached reference would be stale without this
639
+ * fallback check.
640
+ */
641
+ async handleCancelRequest() {
642
+ if (!this.cancelable)
643
+ return;
644
+ if (this.cancelConfirmModal && this.cancelConfirmModal.isConnected)
645
+ return;
646
+ this.cancelConfirmModal = undefined;
647
+ this.cancelConfirmModal = await DeesModal.createAndShow({
648
+ heading: 'Cancel setup?',
649
+ width: 'small',
650
+ content: html `
651
+ <p style="margin: 0;">
652
+ Are you sure you want to cancel? Any progress on the current step will be lost.
653
+ </p>
654
+ `,
655
+ menuOptions: [
656
+ {
657
+ name: 'Continue setup',
658
+ action: async (modal) => {
659
+ this.cancelConfirmModal = undefined;
660
+ await modal.destroy();
661
+ },
662
+ },
663
+ {
664
+ name: 'Yes, cancel',
665
+ action: async (modal) => {
666
+ this.cancelConfirmModal = undefined;
667
+ modal.destroy(); // fire-and-forget — starts the confirm modal fade
668
+ const domtools = await this.domtoolsPromise;
669
+ await domtools.convenience.smartdelay.delayFor(100);
670
+ await this.destroy();
671
+ },
672
+ },
673
+ ],
674
+ });
675
+ }
573
676
  async destroy() {
574
677
  const domtools = await this.domtoolsPromise;
575
678
  const container = this.shadowRoot.querySelector('.stepperContainer');
576
679
  container?.classList.add('predestroy');
577
- await domtools.convenience.smartdelay.delayFor(200);
680
+ await domtools.convenience.smartdelay.delayFor(250);
578
681
  if (this.parentElement) {
579
682
  this.parentElement.removeChild(this);
580
683
  }
@@ -595,4 +698,4 @@ let DeesStepper = (() => {
595
698
  return DeesStepper = _classThis;
596
699
  })();
597
700
  export { DeesStepper };
598
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1zdGVwcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdHNfd2ViL2VsZW1lbnRzLzAwZ3JvdXAtbGF5b3V0L2RlZXMtc3RlcHBlci9kZWVzLXN0ZXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sb0JBQW9CLENBQUM7QUFFOUMsT0FBTyxFQUNMLFdBQVcsRUFDWCxhQUFhLEVBQ2IsSUFBSSxFQUNKLEdBQUcsRUFDSCxTQUFTLEVBRVQsVUFBVSxFQUNWLFFBQVEsR0FFVCxNQUFNLDZCQUE2QixDQUFDO0FBRXJDLE9BQU8sS0FBSyxRQUFRLE1BQU0sOEJBQThCLENBQUM7QUFDekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNERBQTRELENBQUM7QUFFN0YsT0FBTywyQkFBMkIsQ0FBQztJQW1CdEIsV0FBVzs0QkFEdkIsYUFBYSxDQUFDLGNBQWMsQ0FBQzs7OztzQkFDRyxXQUFXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzJCQUFuQixTQUFRLFdBQVc7Ozs7aUNBMkJ6QyxRQUFRLENBQUM7b0JBQ1IsSUFBSSxFQUFFLEtBQUs7aUJBQ1osQ0FBQzt3Q0FHRCxRQUFRLENBQUM7b0JBQ1IsSUFBSSxFQUFFLE1BQU07aUJBQ2IsQ0FBQzttQ0FHRCxRQUFRLENBQUM7b0JBQ1IsSUFBSSxFQUFFLE9BQU87b0JBQ2IsT0FBTyxFQUFFLElBQUk7aUJBQ2QsQ0FBQzt5Q0FHRCxRQUFRLENBQUMsRUFBRSxJQUFJ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
701
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1zdGVwcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdHNfd2ViL2VsZW1lbnRzLzAwZ3JvdXAtbGF5b3V0L2RlZXMtc3RlcHBlci9kZWVzLXN0ZXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sb0JBQW9CLENBQUM7QUFFOUMsT0FBTyxFQUNMLFdBQVcsRUFDWCxhQUFhLEVBQ2IsSUFBSSxFQUNKLEdBQUcsRUFDSCxTQUFTLEVBRVQsVUFBVSxFQUNWLFFBQVEsR0FFVCxNQUFNLDZCQUE2QixDQUFDO0FBRXJDLE9BQU8sS0FBSyxRQUFRLE1BQU0sOEJBQThCLENBQUM7QUFDekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDN0YsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBRTNFLE9BQU8sMkJBQTJCLENBQUM7SUFtQnRCLFdBQVc7NEJBRHZCLGFBQWEsQ0FBQyxjQUFjLENBQUM7Ozs7c0JBQ0csV0FBVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsyQkFBbkIsU0FBUSxXQUFXOzs7O2lDQTRCekMsUUFBUSxDQUFDO29CQUNSLElBQUksRUFBRSxLQUFLO2lCQUNaLENBQUM7d0NBR0QsUUFBUSxDQUFDO29CQUNSLElBQUksRUFBRSxNQUFNO2lCQUNiLENBQUM7bUNBR0QsUUFBUSxDQUFDO29CQUNSLElBQUksRUFBRSxPQUFPO29CQUNiLE9BQU8s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