dh_ackergaul
2026-06-03 a25433795ec239654db2ef31af6d3f4e84b3b8dc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
import { i, r } from './query-assigned-elements-fea1f631.js';
import { e } from './custom-element-30fc6381.js';
import { n } from './base.component-813fc7cf.js';
import { B as BaseCardContainer, a as CardContainerEventContainer } from './modal.component-db51742e.js';
import './card-container-definitions.js';
import { CardContainerEvents } from './card-container-events.js';
import './card-data-service-update-events.js';
import { CardContainerFilterSelection } from './card-container-filter-selection.js';
import { CardDataService } from './card.data.service.js';
import '@dh-software/furnview-icons';
import './class-map-a0fb5d87.js';
import './event.handler.model.js';
import './loading.component.js';
import './dimmer.component.js';
import './query-1c86d710.js';
import './dot-flashing-loader.component.js';
import './rotating-dots-loader.component.js';
import './key-frame-effect.service.js';
import './toolbar.component.js';
import './toggle-toolbar.component.js';
import './style.helper.js';
import './image.service.js';
import './svg-icon.component.js';
import './popup.component.js';
import './popup-closer.component.js';
import './hr-item.component.js';
import './hr-list.component.js';
import './query-all-828de4b2.js';
import './hr-theme.model.js';
import './configurator.form.component.js';
import './configurator.form.base.element.component.js';
import './scene-helper.service.js';
import './async.base.component.js';
import './card-container-settings.js';
import './card-container-states.js';
import './card-container-additional-data.js';
import './card-containers-shared-data.js';
import './input.mask.component.js';
import './mask.component.js';
import './information.mask.component.js';
import './open-cloud-id.mask.component.js';
import './share-link-per-mail.component.js';
import './request-appointment.component.js';
import './prog-property.model.js';
import './interface.js';
import './reset.mask.component.js';
import './configuration.service.js';
import './step-based.mask.component.js';
import './container-mask.component.js';
import './messageNoCalc.mask.component.js';
import './button.component.js';
import './iwoFurn.mask.component.js';
import './input.component.js';
import './base-input.js';
import './save-dialog.mask.component.js';
import './cloud-id.service.js';
import './send-offer-request-mask.component.js';
import './file-upload-mask.component.js';
import './label.component.js';
import './sass.default-d943b107.js';
import './accordion.component.js';
import './accordion-item.component.js';
import './accordion-layer.component.js';
import './slider.component.js';
import './equipment-list.component.js';
import './state-7ee0cf4f.js';
import './confirming-button.component.js';
import './fitting-item.component.js';
import './proptrans-item.component.js';
import './shoppingcart-item.component.js';
import './prog-context.model.js';
import './manu-prog.service.js';
import './catalog.service.js';
import './step-child.component.js';
import './clock.controller.js';
 
var css_248z = i`.close-symbol{cursor:pointer;height:100%;position:relative;width:100%}.close-symbol.loading{z-index:999}.close-symbol.loading:after,.close-symbol.loading:before{background:#fff}.close-symbol:after,.close-symbol:before{background:var(--close-symbol-background,#888);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;content:" ";height:1px;margin:0;padding:0;position:absolute;top:50%;width:100%}.close-symbol:after:hover,.close-symbol:before:hover{background:var(--close-symbol-background-hover,#333)}.close-symbol:after{-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);transform:rotate(-45deg)}.close-symbol:before{-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);transform:rotate(45deg)}:host(.active) .circle-number-symbol{border:var(--circle-number-symbol-border-active,2px solid #000)}.circle-number-symbol{align-items:center;background:var(--circle-number-symbol-background,var(--primary-color,red));border:var(--circle-number-symbol-border,2px solid #fff);border-radius:50%;box-shadow:var(--circle-number-symbol-box-shadow,1px 2px 5px 0 #000);color:var(--circle-number-symbol-color,var(--primary-text-color,#000));display:flex;height:var(--circle-number-symbol-size,30px);justify-content:center;position:relative;width:var(--circle-number-symbol-size,30px)}.custom-symbol{cursor:pointer;display:flex;left:10px;position:relative}.custom-symbol.up:after{background-image:var(--custom-symbol-image-down,url("/webui/images/minus.svg"));content:"";height:18px}.custom-symbol.down:after{background-image:var(--custom-symbol-image-down,url("/webui/images/plus.svg"));content:"";height:18px}.custom-symbol:after{color:#1e1e1e;margin:auto 0;padding:0 0 2px;pointer-events:none;transform:translateX(-15px);width:18px}.accordion-symbol{cursor:pointer;display:flex;left:10px;position:relative}.accordion-symbol.up:after{content:"-";font-size:xx-large;transform:scaleX(2) translateX(-4px)}.accordion-symbol.down:after{content:"+";font-size:xx-large}.accordion-symbol:after{color:#1e1e1e;margin:auto 0;padding:0 0 2px;pointer-events:none;transform:translateX(-15px);width:18px}.chevron-symbol{cursor:pointer;left:10px;position:relative}.chevron-symbol.up:after{content:"<"}.chevron-symbol.down:after{content:">"}.chevron-symbol:after{color:inherit;font:17px Consolas,monospace;padding:0 0 2px;pointer-events:none;position:absolute;-webkit-transform:rotate(90deg) translateX(-100%);-moz-transform:rotate(90deg) translateX(-100%);-ms-transform:rotate(90deg) translateX(-100%);transform:rotate(90deg) translateX(-100%)}@media (width >= 980px){.only-mobile{display:none!important}}@media (width <= 980px){.only-desktop{display:none!important}}.bold{font-weight:var(--global-font-weight-bold,600)}*{font-family:var(--global-font,Roboto);font-weight:var(--global-font-weight,400);-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.container{display:flex;margin:10px 0}.container.column{flex-direction:column}.container.column.reverse{flex-direction:column-reverse}.container.row{flex-direction:row}.container.row.reverse{flex-direction:row-reverse}.fluid{flex:1}.fluid.space-after{margin-right:55px}.hidden{display:none!important}.mobile-mode-hide,:host(.mobile-mode-hide){display:none!important}.invisible{visibility:hidden!important}.invisible-scroll,:host(.invisible-scroll){margin-right:-22px;overflow:hidden}.invisible-scroll>:first-child,:host(.invisible-scroll)>:first-child{box-sizing:content-box;overflow-x:hidden;overflow-y:scroll;padding-right:22px}.invisible-scroll.bottom,:host(.invisible-scroll.bottom){margin-right:unset;overflow:hidden}.invisible-scroll.bottom>:first-child,:host(.invisible-scroll.bottom)>:first-child{box-sizing:content-box;margin-bottom:-22px;overflow-x:scroll;overflow-y:hidden;padding-bottom:22px;padding-right:unset}:host([disabled]){filter:contrast(.5) grayscale(1);pointer-events:none}*{scrollbar-color:#5c5c5c hsla(0,0%,100%,.004);scrollbar-width:thin}[disabled]{filter:contrast(.5) grayscale(1);pointer-events:none}::-webkit-scrollbar{height:8px;width:8px}::-webkit-scrollbar,::-webkit-scrollbar-corner{background:hsla(0,0%,100%,0)}::-webkit-scrollbar-thumb{background:#5c5c5c;-webkit-border-radius:8px}::-webkit-scrollbar-button,::-webkit-scrollbar-button:horizontal:end:decrement,::-webkit-scrollbar-button:horizontal:end:increment,::-webkit-scrollbar-button:vertical:end:decrement,::-webkit-scrollbar-button:vertical:start:increment{background-color:transparent;border:none;color:transparent}:host{position:var(--card-container-position,relative)}:host .back-button{left:0;position:absolute;top:0}`;
 
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getProtoOf = Object.getPrototypeOf;
var __reflectGet = Reflect.get;
var __decorateClass = (decorators, target, key, kind) => {
  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
  for (var i = decorators.length - 1, decorator; i >= 0; i--)
    if (decorator = decorators[i])
      result = (kind ? decorator(target, key, result) : decorator(result)) || result;
  if (kind && result)
    __defProp(target, key, result);
  return result;
};
var __superStaticGet = (obj, member) => __reflectGet(__getProtoOf(obj), member, obj);
var __async = (__this, __arguments, generator) => {
  return new Promise((resolve, reject) => {
    var fulfilled = (value) => {
      try {
        step(generator.next(value));
      } catch (e) {
        reject(e);
      }
    };
    var rejected = (value) => {
      try {
        step(generator.throw(value));
      } catch (e) {
        reject(e);
      }
    };
    var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
    step((generator = generator.apply(__this, __arguments)).next());
  });
};
let RootLevelSelectionCardContainerComponent = class extends BaseCardContainer {
  constructor() {
    super();
    this.refetchOnClick = false;
    this.refreshOnClick = false;
    this.doNotFillFilterFromNextLevel = false;
    this.activeRootOption = "";
    this.lastClickedCard = void 0;
    this.filter = new CardContainerFilterSelection();
    this.States.PreventAppConnectionClick = true;
    this.addEventListener("cardclick", (event) => {
      if (event.detail && event.detail.data && event.detail.data.click) {
        this.lastClickedCard = event.detail.data;
        this.Select(event.detail.data);
      }
    });
    this.addEventListener(CardContainerEvents.CardContainerPostFill, () => {
      const levels = this.renderRoot.querySelectorAll("[level]");
      levels.forEach((level) => {
        const levelKey = level.getAttribute("level");
        if (levelKey != this.Settings.Fetch["root-level"]) {
          level.hideElement = levelKey != this.ActiveRootOption;
        }
      });
      this.PurgeDisabledFromSelectionResultFilter();
    });
    this.addEventListener(CardContainerEvents.Back, () => {
      var _a;
      if (this.lastClickedCard && this.lastClickedCard.click) {
        (_a = this.filter) == null ? void 0 : _a.Remove(this.lastClickedCard.click["level-key"]);
      }
      this.hideElement = false;
    });
    this.addEventListener(CardContainerEvents.UpdateAdditionalData, (event) => {
      if (event.detail == void 0)
        return;
      if (this.lastClickedCard == void 0 || this.lastClickedCard.txt == void 0)
        return;
      if (this.lastClickedCard.txt["title"]) {
        this.AdditionalData.Set(event.detail, this.lastClickedCard.txt["title"]);
        return;
      }
      const txtKeys = Object.keys(this.lastClickedCard.txt);
      if (txtKeys == void 0 || txtKeys.length < 1)
        return;
      const txtKey = txtKeys.at(0);
      if (txtKey == void 0)
        return;
      this.AdditionalData.Set(event.detail, this.lastClickedCard.txt[txtKey]);
    });
  }
  get ActiveRootOption() {
    return this.activeRootOption;
  }
  set ActiveRootOption(option) {
    this.activeRootOption = option;
    this.requestUpdate();
  }
  Select(data) {
    if (data.click && this.CardData && this.filter) {
      const levelKey = data.click["level-key"];
      const nextLevelKey = data.click["next-level-key"];
      if (levelKey == this.Settings.Fetch["root-level"]) {
        if (this.CardData && this.CardData.size < 2) {
          return;
        }
        const activeChanged = this.ActiveRootOption != nextLevelKey;
        this.filter.Reset(true, this.Context);
        this.ActiveRootOption = activeChanged ? nextLevelKey : "";
        if (activeChanged) {
          if (!this.doNotFillFilterFromNextLevel) {
            const levelToPushIntoSelectionResultFilter = this.CardData.get(nextLevelKey);
            if (levelToPushIntoSelectionResultFilter) {
              for (const card of levelToPushIntoSelectionResultFilter.cards) {
                if (card.click) {
                  this.filter.Add(card.click["level-key"]);
                }
              }
            }
          }
        }
        if (this.refreshOnClick) {
          CardDataService.WaitForAllCardContainerFetchPromises().then(() => {
            CardContainerEventContainer.RefreshAll(this.refetchOnClick, false);
          });
        }
      } else {
        if (data.disabled == false || data.disabled == void 0) {
          this.filter.Toggle(levelKey);
          if (this.refreshOnClick) {
            CardContainerEventContainer.RefreshAll(this.refetchOnClick, false);
            CardDataService.WaitForAllCardContainerFetchPromises().then(() => {
              CardContainerEventContainer.RefreshAll(this.refetchOnClick, false);
            });
          }
        }
      }
    }
  }
  PurgeDisabledFromSelectionResultFilter() {
    return __async(this, null, function* () {
      yield CardDataService.WaitForAllCardContainerFetchPromises();
      this.CheckFetchPromise();
      const filteredLevels = this.CardData;
      if (filteredLevels && this.filter) {
        for (const level of filteredLevels) {
          for (const card of level[1].cards) {
            if (card.disabled && card.click && card.click["level-key"]) {
              this.filter.Remove(card.click["level-key"]);
            }
          }
        }
      }
    });
  }
  CreateCards(result) {
    const levels = super.CreateCards(result);
    if (levels.size < 2) {
      return levels;
    }
    const root = levels.get(this.settings.Fetch["root-level"]);
    if (root == void 0)
      return levels;
    for (const card of root.cards) {
      if (card.click == void 0)
        continue;
      if (card.click["next-level-key"] == this.ActiveRootOption) {
        card.active = true;
      }
    }
    return levels;
  }
};
RootLevelSelectionCardContainerComponent.styles = [
  __superStaticGet(RootLevelSelectionCardContainerComponent, "styles") || [],
  i`${r(css_248z)}`
];
__decorateClass([
  n({ type: Boolean, reflect: true, attribute: "refetch-on-click" })
], RootLevelSelectionCardContainerComponent.prototype, "refetchOnClick", 2);
__decorateClass([
  n({ type: Boolean, reflect: true, attribute: "trigger-refresh-on-click" })
], RootLevelSelectionCardContainerComponent.prototype, "refreshOnClick", 2);
__decorateClass([
  n({ type: Boolean, reflect: true, attribute: "do-not-fill-filter-from-next-level" })
], RootLevelSelectionCardContainerComponent.prototype, "doNotFillFilterFromNextLevel", 2);
RootLevelSelectionCardContainerComponent = __decorateClass([
  e("fv-root-level-selection-card-container")
], RootLevelSelectionCardContainerComponent);
 
export { RootLevelSelectionCardContainerComponent };