@indigina/ui-kit 1.1.594 → 1.1.596

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.
@@ -10251,9 +10251,21 @@ const getTimeZoneOffset = (userTimeZone, column) => {
10251
10251
  return 'UTC';
10252
10252
  };
10253
10253
  const removeFilterPrefix = (value) => value.split('$filter=')[1];
10254
+ const hasEffectiveFilterValue = (value) => {
10255
+ if (value === null || value === undefined) {
10256
+ return false;
10257
+ }
10258
+ if (typeof value === 'string') {
10259
+ return value.trim().length > 0;
10260
+ }
10261
+ if (Array.isArray(value)) {
10262
+ return value.length > 0;
10263
+ }
10264
+ return true;
10265
+ };
10254
10266
  const filterEmptyValues = (filters) => ({
10255
10267
  logic: filters?.logic ?? KitFilterLogic.AND,
10256
- filters: filters?.filters.filter(item => noValueRequiredFilterOperators.includes(item.operator) || (item.value !== null && item.value !== undefined)) ?? [],
10268
+ filters: filters?.filters.filter(item => noValueRequiredFilterOperators.includes(item.operator) || hasEffectiveFilterValue(item.value)) ?? [],
10257
10269
  });
10258
10270
  const normalizeGuidFilter = (filter) => {
10259
10271
  const guidFormat = /'((\{)?[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}(\})?)'/g;
@@ -10324,16 +10336,30 @@ const getValueFilters = (value) => {
10324
10336
  });
10325
10337
  };
10326
10338
  const kitBuildOdataFilter = (filter, columns) => removeFilterPrefix(normalizeGuidFilter(kitDataStateToODataString({ filter }, true, columns)));
10339
+ const isEffectiveFilterValue = (cleanedFilter) => cleanedFilter.filters.length > 0;
10340
+ const buildFilterByType = (filter, cleanedFilter) => {
10341
+ if (!isEffectiveFilterValue(cleanedFilter)) {
10342
+ return null;
10343
+ }
10344
+ return {
10345
+ ...cleanedFilter,
10346
+ field: filter.field,
10347
+ ...(filter.type === KitFilterType.CUSTOM_INPUT
10348
+ ? { isCustomField: true }
10349
+ : {}),
10350
+ };
10351
+ };
10327
10352
  const kitBuildFilters = (filters) => ({
10328
10353
  logic: KitFilterLogic.AND,
10329
- filters: filters.map(filter => {
10354
+ filters: filters.reduce((acc, filter) => {
10330
10355
  const cleanedFilter = filterEmptyValues(filter.value);
10331
- return {
10332
- ...cleanedFilter,
10333
- field: filter.field,
10334
- isCustomField: filter.type === KitFilterType.CUSTOM_INPUT,
10335
- };
10336
- }),
10356
+ const normalizedFilter = buildFilterByType(filter, cleanedFilter);
10357
+ if (!normalizedFilter) {
10358
+ return acc;
10359
+ }
10360
+ acc.push(normalizedFilter);
10361
+ return acc;
10362
+ }, []),
10337
10363
  });
10338
10364
 
10339
10365
  const kitFormatStringForSearch = (inputString) => {
@@ -12235,6 +12261,172 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImpor
12235
12261
  ], template: "<div class=\"page-layout\"\n [ngClass]=\"theme()\"\n [class.mobile]=\"isMobile\"\n [class.sidebar-expanded]=\"!isMenuCollapsed() && hasMenuSelected()\"\n [class.has-sidebar]=\"hasSidebar()\"\n [class.has-top-bar]=\"hasTopBar()\">\n\n @if (!isMobile) {\n <div class=\"sidebar\" #sidebarContainer>\n <ng-content select=\"[sidebar]\" />\n </div>\n }\n\n <div class=\"main\">\n @if (isMobile) {\n <kit-mobile-header class=\"mobile-header\"\n [theme]=\"theme()\"/>\n } @else {\n <div class=\"top-bar\" #topBarContainer>\n <ng-content select=\"[topBar]\" />\n </div>\n }\n\n <div class=\"content\">\n <ng-content select=\"[content]\" />\n </div>\n </div>\n</div>\n", styles: [".page-layout{display:flex;min-height:100%}.page-layout.has-sidebar .sidebar{position:fixed;top:0;left:0;height:100%;min-width:var(--ui-kit-sidebar-collapsed-width);background:var(--ui-kit-color-navy);overflow-x:hidden;z-index:11}.page-layout.has-sidebar .main{margin-left:var(--ui-kit-sidebar-collapsed-width)}.page-layout.has-sidebar.sidebar-expanded .main{margin-left:var(--ui-kit-sidebar-expanded-width)}.page-layout .main{display:flex;flex-direction:column;flex:1;padding:0 var(--ui-kit-layout-gap);width:0;transition:.2s ease-in-out}.page-layout.has-top-bar .top-bar,.page-layout .mobile-header{position:sticky;top:0;left:0;width:100%;height:var(--ui-kit-header-height);background:var(--ui-kit-color-grey-13);z-index:10}.page-layout .content{padding:25px 0;flex:1}.page-layout .content:has(.kit-breadcrumbs){padding-top:10px}.page-layout .content:has(.iframe-wrapper){padding:0}.page-layout.mobile .mobile-header{background-color:var(--ui-kit-color-white)}.page-layout.mobile .main{padding:0}.page-layout.mobile .content{background-color:var(--ui-kit-color-grey-13);padding:var(--ui-kit-layout-gap)}.page-layout.mobile.dark .content{background-color:var(--ui-kit-color-navy)}\n"] }]
12236
12262
  }], ctorParameters: () => [], propDecorators: { theme: [{ type: i0.Input, args: [{ isSignal: true, alias: "theme", required: false }] }], sidebarContainer: [{ type: i0.ViewChild, args: ['sidebarContainer', { isSignal: true }] }], topBarContainer: [{ type: i0.ViewChild, args: ['topBarContainer', { isSignal: true }] }] } });
12237
12263
 
12264
+ const calculateCurrentLegProgress = (leg, nowMs = Date.now()) => {
12265
+ if (isLegReachedDestination(leg, nowMs)) {
12266
+ return 1;
12267
+ }
12268
+ const atdMs = toTimestamp(leg.atd);
12269
+ const etaMs = toTimestamp(leg.eta);
12270
+ if (atdMs === null || etaMs === null || etaMs <= atdMs) {
12271
+ return 0;
12272
+ }
12273
+ if (nowMs <= atdMs) {
12274
+ return 0;
12275
+ }
12276
+ if (nowMs >= etaMs) {
12277
+ return 1;
12278
+ }
12279
+ return (nowMs - atdMs) / (etaMs - atdMs);
12280
+ };
12281
+ const isLegReachedDestination = (leg, nowMs = Date.now()) => {
12282
+ const ataMs = toTimestamp(leg.ata);
12283
+ if (ataMs !== null) {
12284
+ return nowMs >= ataMs;
12285
+ }
12286
+ const etaMs = toTimestamp(leg.eta);
12287
+ return etaMs !== null && nowMs >= etaMs;
12288
+ };
12289
+ const getMainRouteActiveLegIndex = (legs, nowMs = Date.now()) => {
12290
+ return legs.findIndex(leg => !isLegReachedDestination(leg, nowMs));
12291
+ };
12292
+ const getTransportIconLegIndex = (legs, nowMs = Date.now()) => {
12293
+ if (!legs.length) {
12294
+ return -1;
12295
+ }
12296
+ const activeLegIndex = getMainRouteActiveLegIndex(legs, nowMs);
12297
+ return activeLegIndex === -1 ? legs.length - 1 : activeLegIndex;
12298
+ };
12299
+ const calculateMainRouteProgressPercent = (legs, nowMs = Date.now()) => {
12300
+ if (!legs.length) {
12301
+ return 0;
12302
+ }
12303
+ const segmentCount = legs.length;
12304
+ const activeLegIndex = getMainRouteActiveLegIndex(legs, nowMs);
12305
+ if (activeLegIndex === -1) {
12306
+ return 100;
12307
+ }
12308
+ const activeLeg = legs[activeLegIndex];
12309
+ const legProgress = calculateCurrentLegProgress(activeLeg, nowMs);
12310
+ return ((activeLegIndex + legProgress) / segmentCount) * 100;
12311
+ };
12312
+ const calculateDurationInDays = (start, end) => {
12313
+ const startMs = toTimestamp(start);
12314
+ const endMs = toTimestamp(end);
12315
+ const dayInMs = 24 * 60 * 60 * 1000;
12316
+ if (startMs === null || endMs === null || endMs < startMs) {
12317
+ return null;
12318
+ }
12319
+ return Math.ceil((endMs - startMs) / dayInMs);
12320
+ };
12321
+ const toTimestamp = (value) => {
12322
+ if (!value) {
12323
+ return null;
12324
+ }
12325
+ const timestamp = Date.parse(value);
12326
+ return Number.isNaN(timestamp) ? null : timestamp;
12327
+ };
12328
+
12329
+ class KitShipmentRoutingCardComponent {
12330
+ constructor() {
12331
+ this.leg = input.required(/* @ts-ignore */
12332
+ ...(ngDevMode ? [{ debugName: "leg" }] : /* istanbul ignore next */ []));
12333
+ this.transportIcon = input.required(/* @ts-ignore */
12334
+ ...(ngDevMode ? [{ debugName: "transportIcon" }] : /* istanbul ignore next */ []));
12335
+ this.scheduledLabel = input.required(/* @ts-ignore */
12336
+ ...(ngDevMode ? [{ debugName: "scheduledLabel" }] : /* istanbul ignore next */ []));
12337
+ this.actualLabel = input.required(/* @ts-ignore */
12338
+ ...(ngDevMode ? [{ debugName: "actualLabel" }] : /* istanbul ignore next */ []));
12339
+ this.scheduledDurationLabel = input.required(/* @ts-ignore */
12340
+ ...(ngDevMode ? [{ debugName: "scheduledDurationLabel" }] : /* istanbul ignore next */ []));
12341
+ this.actualDurationLabel = input.required(/* @ts-ignore */
12342
+ ...(ngDevMode ? [{ debugName: "actualDurationLabel" }] : /* istanbul ignore next */ []));
12343
+ this.showTransportIcon = input(false, /* @ts-ignore */
12344
+ ...(ngDevMode ? [{ debugName: "showTransportIcon" }] : /* istanbul ignore next */ []));
12345
+ this.isCompleted = input(false, /* @ts-ignore */
12346
+ ...(ngDevMode ? [{ debugName: "isCompleted" }] : /* istanbul ignore next */ []));
12347
+ this.dateFormat = input(KIT_DATE_FORMAT, /* @ts-ignore */
12348
+ ...(ngDevMode ? [{ debugName: "dateFormat" }] : /* istanbul ignore next */ []));
12349
+ this.kitStatusLabelColor = KitStatusLabelColor;
12350
+ this.kitSvgIcon = KitSvgIcon;
12351
+ this.kitSvgIconType = KitSvgIconType;
12352
+ this.kitPillTheme = KitPillTheme;
12353
+ this.currentLegProgressPercent = computed(() => {
12354
+ if (this.isCompleted()) {
12355
+ return 100;
12356
+ }
12357
+ return calculateCurrentLegProgress(this.leg()) * 100;
12358
+ }, /* @ts-ignore */
12359
+ ...(ngDevMode ? [{ debugName: "currentLegProgressPercent" }] : /* istanbul ignore next */ []));
12360
+ this.isStartPointCompleted = computed(() => this.currentLegProgressPercent() > 0, /* @ts-ignore */
12361
+ ...(ngDevMode ? [{ debugName: "isStartPointCompleted" }] : /* istanbul ignore next */ []));
12362
+ this.isEndPointCompleted = computed(() => this.currentLegProgressPercent() >= 100, /* @ts-ignore */
12363
+ ...(ngDevMode ? [{ debugName: "isEndPointCompleted" }] : /* istanbul ignore next */ []));
12364
+ }
12365
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: KitShipmentRoutingCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
12366
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", type: KitShipmentRoutingCardComponent, isStandalone: true, selector: "kit-shipment-routing-card", inputs: { leg: { classPropertyName: "leg", publicName: "leg", isSignal: true, isRequired: true, transformFunction: null }, transportIcon: { classPropertyName: "transportIcon", publicName: "transportIcon", isSignal: true, isRequired: true, transformFunction: null }, scheduledLabel: { classPropertyName: "scheduledLabel", publicName: "scheduledLabel", isSignal: true, isRequired: true, transformFunction: null }, actualLabel: { classPropertyName: "actualLabel", publicName: "actualLabel", isSignal: true, isRequired: true, transformFunction: null }, scheduledDurationLabel: { classPropertyName: "scheduledDurationLabel", publicName: "scheduledDurationLabel", isSignal: true, isRequired: true, transformFunction: null }, actualDurationLabel: { classPropertyName: "actualDurationLabel", publicName: "actualDurationLabel", isSignal: true, isRequired: true, transformFunction: null }, showTransportIcon: { classPropertyName: "showTransportIcon", publicName: "showTransportIcon", isSignal: true, isRequired: false, transformFunction: null }, isCompleted: { classPropertyName: "isCompleted", publicName: "isCompleted", isSignal: true, isRequired: false, transformFunction: null }, dateFormat: { classPropertyName: "dateFormat", publicName: "dateFormat", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"kit-shipment-routing-card\">\n <div class=\"card-header\">\n <div class=\"card-header-type\"\n [class.completed]=\"isCompleted()\">\n <kit-svg-icon class=\"card-header-type-icon\"\n [icon]=\"transportIcon()\"\n [ngClass]=\"kitSvgIconType.FILL\" />\n </div>\n <div class=\"card-header-info\">\n <div class=\"card-header-top\">\n <kit-truncate-text class=\"card-header-top-name\">{{ leg().name || '-' }}</kit-truncate-text>\n @if (leg().legTypeLabel; as legTypeLabel) {\n <kit-status-label [color]=\"leg().legTypeColor ?? kitStatusLabelColor.GREY\">\n {{ legTypeLabel }}\n </kit-status-label>\n }\n </div>\n <div class=\"card-header-bottom\">\n <kit-truncate-text class=\"card-header-bottom-number\">{{ leg().vehicleNumber || '-' }}</kit-truncate-text>\n <div class=\"card-header-carrier\">\n <kit-svg-icon class=\"card-header-carrier-icon\"\n [icon]=\"kitSvgIcon.BUILDING\" />\n <kit-truncate-text class=\"card-header-bottom-name\">{{ leg().carrierName || '-' }}</kit-truncate-text>\n </div>\n </div>\n </div>\n </div>\n <div class=\"card-content\">\n <div class=\"ports-row\">\n <div class=\"ports-row-label\"></div>\n <kit-truncate-text class=\"ports-row-port ports-row-port-start\">\n {{ leg().originPort || '-' }}\n </kit-truncate-text>\n <div class=\"ports-row-track\">\n <div class=\"track-dot\"\n [class.completed]=\"isStartPointCompleted()\"></div>\n <div class=\"track-line\">\n <div class=\"track-line-fill\"\n [style.width.%]=\"currentLegProgressPercent()\"></div>\n </div>\n <div class=\"track-dot\"\n [class.completed]=\"isEndPointCompleted()\"></div>\n @if (showTransportIcon()) {\n <div class=\"track-transport\"\n [style.left.%]=\"currentLegProgressPercent()\">\n <kit-svg-icon class=\"track-transport-icon\"\n [icon]=\"transportIcon()\"\n [ngClass]=\"kitSvgIconType.FILL\" />\n </div>\n }\n </div>\n <kit-truncate-text class=\"ports-row-port ports-row-port-end\">\n {{ leg().destinationPort || '-' }}\n </kit-truncate-text>\n </div>\n <div class=\"dates-row\">\n <div class=\"item-label\">{{ scheduledLabel() }}</div>\n <div class=\"item-date item-date-start\">\n {{ leg().etd ? (leg().etd | date: dateFormat() : 'UTC') : '-' }}\n </div>\n <div class=\"item-duration\">\n <kit-pill [theme]=\"kitPillTheme.BLUE\">\n {{ scheduledDurationLabel() }}\n </kit-pill>\n </div>\n <div class=\"item-date item-date-end\">\n {{ leg().eta ? (leg().eta | date: dateFormat() : 'UTC') : '-' }}\n </div>\n </div>\n <div class=\"dates-row\">\n <div class=\"item-label\">{{ actualLabel() }}</div>\n <div class=\"item-date item-date-start\">\n {{ leg().atd ? (leg().atd | date: dateFormat() : 'UTC') : '-' }}\n </div>\n <div class=\"item-duration\">\n <kit-pill [theme]=\"kitPillTheme.BLUE\">\n {{ actualDurationLabel() }}\n </kit-pill>\n </div>\n <div class=\"item-date item-date-end\">\n {{ leg().ata ? (leg().ata | date: dateFormat() : 'UTC') : '-' }}\n </div>\n </div>\n </div>\n</div>\n", styles: [".kit-shipment-routing-card{padding:20px;border-radius:10px;border:1px solid var(--ui-kit-color-grey-11);background:var(--ui-kit-color-white)}.kit-shipment-routing-card .card-header{display:flex;gap:10px}.kit-shipment-routing-card .card-header-type{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:40px;height:40px;border-radius:50%;fill:var(--ui-kit-color-grey-14);background:var(--ui-kit-color-grey-8)}.kit-shipment-routing-card .card-header-type.completed{fill:var(--color-white);background:var(--ui-kit-color-green-1)}.kit-shipment-routing-card .card-header-type-icon{display:block;width:24px;height:24px}.kit-shipment-routing-card .card-header-info{display:flex;flex-direction:column;flex:1;gap:5px;min-width:0}.kit-shipment-routing-card .card-header-top{display:flex;align-items:center;justify-content:space-between;gap:20px;font-size:14px;font-weight:700}.kit-shipment-routing-card .card-header-top-name{overflow:hidden}.kit-shipment-routing-card .card-header-bottom{display:flex;align-items:center;gap:20px;color:var(--ui-kit-color-grey-20);font-size:13px}.kit-shipment-routing-card .card-header-bottom-number{width:auto;overflow:hidden}.kit-shipment-routing-card .card-header-carrier{display:flex;gap:5px;min-width:50px}.kit-shipment-routing-card .card-header-carrier-icon{display:block;width:14px;height:14px;stroke:var(--ui-kit-color-grey-20);fill:none;flex-shrink:0}.kit-shipment-routing-card .card-header-carrier-name{overflow:hidden}.kit-shipment-routing-card .card-content{--row-label-column-width: 70px;--row-date-column-width: 100px;margin-top:20px;display:flex;flex-direction:column;gap:10px}.kit-shipment-routing-card .card-content .ports-row{display:grid;grid-template-columns:var(--row-label-column-width) minmax(0,max-content) minmax(120px,1fr) minmax(0,max-content);align-items:center;column-gap:20px;margin-bottom:10px}.kit-shipment-routing-card .card-content .ports-row-label{min-width:0}.kit-shipment-routing-card .card-content .ports-row-port{max-width:180px;font-size:14px;line-height:20px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kit-shipment-routing-card .card-content .ports-row-port-start{text-align:left}.kit-shipment-routing-card .card-content .ports-row-port-end{text-align:right}.kit-shipment-routing-card .card-content .ports-row-track{position:relative;display:flex;align-items:center;min-width:0;height:24px}.kit-shipment-routing-card .card-content .ports-row-track .track-dot{flex-shrink:0;width:6px;height:6px;border-radius:50%;background:var(--ui-kit-color-grey-11)}.kit-shipment-routing-card .card-content .ports-row-track .track-dot.completed{background:var(--ui-kit-color-green-1)}.kit-shipment-routing-card .card-content .ports-row-track .track-line{position:relative;flex:1;height:2px;background:var(--ui-kit-color-grey-11);overflow:hidden}.kit-shipment-routing-card .card-content .ports-row-track .track-line .track-line-fill{height:100%;background:var(--ui-kit-color-green-1)}.kit-shipment-routing-card .card-content .ports-row-track .track-transport{position:absolute;top:50%;transform:translate(-50%,-50%);display:flex;align-items:center;justify-content:center;width:30px;height:30px;fill:var(--ui-kit-color-green-1);background:var(--ui-kit-color-white)}.kit-shipment-routing-card .card-content .ports-row-track .track-transport-icon{display:block;width:25px;height:25px}.kit-shipment-routing-card .card-content .dates-row{display:grid;grid-template-columns:var(--row-label-column-width) var(--row-date-column-width) minmax(45px,1fr) var(--row-date-column-width);column-gap:10px;align-items:center;font-size:14px}.kit-shipment-routing-card .card-content .dates-row .item-label{color:var(--ui-kit-color-grey-20);font-size:12px;text-transform:uppercase}.kit-shipment-routing-card .card-content .dates-row .item-date{width:100%;white-space:nowrap;text-align:center}.kit-shipment-routing-card .card-content .dates-row .item-date-start{text-align:left}.kit-shipment-routing-card .card-content .dates-row .item-date-end{text-align:right}.kit-shipment-routing-card .card-content .dates-row .item-duration{display:flex;justify-content:center;white-space:nowrap}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: KitSvgIconComponent, selector: "kit-svg-icon", inputs: ["icon", "iconClass"] }, { kind: "component", type: KitPillComponent, selector: "kit-pill", inputs: ["removable", "selectable", "selected", "type", "theme", "icon", "iconType"], outputs: ["clicked", "removed"] }, { kind: "component", type: KitStatusLabelComponent, selector: "kit-status-label", inputs: ["color", "size", "tooltip"] }, { kind: "component", type: KitTruncateTextComponent, selector: "kit-truncate-text", inputs: ["tooltipText", "lines", "innerHtml"] }, { kind: "pipe", type: DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
12367
+ }
12368
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: KitShipmentRoutingCardComponent, decorators: [{
12369
+ type: Component,
12370
+ args: [{ selector: 'kit-shipment-routing-card', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
12371
+ DatePipe,
12372
+ NgClass,
12373
+ KitSvgIconComponent,
12374
+ KitPillComponent,
12375
+ KitStatusLabelComponent,
12376
+ KitTruncateTextComponent,
12377
+ ], template: "<div class=\"kit-shipment-routing-card\">\n <div class=\"card-header\">\n <div class=\"card-header-type\"\n [class.completed]=\"isCompleted()\">\n <kit-svg-icon class=\"card-header-type-icon\"\n [icon]=\"transportIcon()\"\n [ngClass]=\"kitSvgIconType.FILL\" />\n </div>\n <div class=\"card-header-info\">\n <div class=\"card-header-top\">\n <kit-truncate-text class=\"card-header-top-name\">{{ leg().name || '-' }}</kit-truncate-text>\n @if (leg().legTypeLabel; as legTypeLabel) {\n <kit-status-label [color]=\"leg().legTypeColor ?? kitStatusLabelColor.GREY\">\n {{ legTypeLabel }}\n </kit-status-label>\n }\n </div>\n <div class=\"card-header-bottom\">\n <kit-truncate-text class=\"card-header-bottom-number\">{{ leg().vehicleNumber || '-' }}</kit-truncate-text>\n <div class=\"card-header-carrier\">\n <kit-svg-icon class=\"card-header-carrier-icon\"\n [icon]=\"kitSvgIcon.BUILDING\" />\n <kit-truncate-text class=\"card-header-bottom-name\">{{ leg().carrierName || '-' }}</kit-truncate-text>\n </div>\n </div>\n </div>\n </div>\n <div class=\"card-content\">\n <div class=\"ports-row\">\n <div class=\"ports-row-label\"></div>\n <kit-truncate-text class=\"ports-row-port ports-row-port-start\">\n {{ leg().originPort || '-' }}\n </kit-truncate-text>\n <div class=\"ports-row-track\">\n <div class=\"track-dot\"\n [class.completed]=\"isStartPointCompleted()\"></div>\n <div class=\"track-line\">\n <div class=\"track-line-fill\"\n [style.width.%]=\"currentLegProgressPercent()\"></div>\n </div>\n <div class=\"track-dot\"\n [class.completed]=\"isEndPointCompleted()\"></div>\n @if (showTransportIcon()) {\n <div class=\"track-transport\"\n [style.left.%]=\"currentLegProgressPercent()\">\n <kit-svg-icon class=\"track-transport-icon\"\n [icon]=\"transportIcon()\"\n [ngClass]=\"kitSvgIconType.FILL\" />\n </div>\n }\n </div>\n <kit-truncate-text class=\"ports-row-port ports-row-port-end\">\n {{ leg().destinationPort || '-' }}\n </kit-truncate-text>\n </div>\n <div class=\"dates-row\">\n <div class=\"item-label\">{{ scheduledLabel() }}</div>\n <div class=\"item-date item-date-start\">\n {{ leg().etd ? (leg().etd | date: dateFormat() : 'UTC') : '-' }}\n </div>\n <div class=\"item-duration\">\n <kit-pill [theme]=\"kitPillTheme.BLUE\">\n {{ scheduledDurationLabel() }}\n </kit-pill>\n </div>\n <div class=\"item-date item-date-end\">\n {{ leg().eta ? (leg().eta | date: dateFormat() : 'UTC') : '-' }}\n </div>\n </div>\n <div class=\"dates-row\">\n <div class=\"item-label\">{{ actualLabel() }}</div>\n <div class=\"item-date item-date-start\">\n {{ leg().atd ? (leg().atd | date: dateFormat() : 'UTC') : '-' }}\n </div>\n <div class=\"item-duration\">\n <kit-pill [theme]=\"kitPillTheme.BLUE\">\n {{ actualDurationLabel() }}\n </kit-pill>\n </div>\n <div class=\"item-date item-date-end\">\n {{ leg().ata ? (leg().ata | date: dateFormat() : 'UTC') : '-' }}\n </div>\n </div>\n </div>\n</div>\n", styles: [".kit-shipment-routing-card{padding:20px;border-radius:10px;border:1px solid var(--ui-kit-color-grey-11);background:var(--ui-kit-color-white)}.kit-shipment-routing-card .card-header{display:flex;gap:10px}.kit-shipment-routing-card .card-header-type{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:40px;height:40px;border-radius:50%;fill:var(--ui-kit-color-grey-14);background:var(--ui-kit-color-grey-8)}.kit-shipment-routing-card .card-header-type.completed{fill:var(--color-white);background:var(--ui-kit-color-green-1)}.kit-shipment-routing-card .card-header-type-icon{display:block;width:24px;height:24px}.kit-shipment-routing-card .card-header-info{display:flex;flex-direction:column;flex:1;gap:5px;min-width:0}.kit-shipment-routing-card .card-header-top{display:flex;align-items:center;justify-content:space-between;gap:20px;font-size:14px;font-weight:700}.kit-shipment-routing-card .card-header-top-name{overflow:hidden}.kit-shipment-routing-card .card-header-bottom{display:flex;align-items:center;gap:20px;color:var(--ui-kit-color-grey-20);font-size:13px}.kit-shipment-routing-card .card-header-bottom-number{width:auto;overflow:hidden}.kit-shipment-routing-card .card-header-carrier{display:flex;gap:5px;min-width:50px}.kit-shipment-routing-card .card-header-carrier-icon{display:block;width:14px;height:14px;stroke:var(--ui-kit-color-grey-20);fill:none;flex-shrink:0}.kit-shipment-routing-card .card-header-carrier-name{overflow:hidden}.kit-shipment-routing-card .card-content{--row-label-column-width: 70px;--row-date-column-width: 100px;margin-top:20px;display:flex;flex-direction:column;gap:10px}.kit-shipment-routing-card .card-content .ports-row{display:grid;grid-template-columns:var(--row-label-column-width) minmax(0,max-content) minmax(120px,1fr) minmax(0,max-content);align-items:center;column-gap:20px;margin-bottom:10px}.kit-shipment-routing-card .card-content .ports-row-label{min-width:0}.kit-shipment-routing-card .card-content .ports-row-port{max-width:180px;font-size:14px;line-height:20px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kit-shipment-routing-card .card-content .ports-row-port-start{text-align:left}.kit-shipment-routing-card .card-content .ports-row-port-end{text-align:right}.kit-shipment-routing-card .card-content .ports-row-track{position:relative;display:flex;align-items:center;min-width:0;height:24px}.kit-shipment-routing-card .card-content .ports-row-track .track-dot{flex-shrink:0;width:6px;height:6px;border-radius:50%;background:var(--ui-kit-color-grey-11)}.kit-shipment-routing-card .card-content .ports-row-track .track-dot.completed{background:var(--ui-kit-color-green-1)}.kit-shipment-routing-card .card-content .ports-row-track .track-line{position:relative;flex:1;height:2px;background:var(--ui-kit-color-grey-11);overflow:hidden}.kit-shipment-routing-card .card-content .ports-row-track .track-line .track-line-fill{height:100%;background:var(--ui-kit-color-green-1)}.kit-shipment-routing-card .card-content .ports-row-track .track-transport{position:absolute;top:50%;transform:translate(-50%,-50%);display:flex;align-items:center;justify-content:center;width:30px;height:30px;fill:var(--ui-kit-color-green-1);background:var(--ui-kit-color-white)}.kit-shipment-routing-card .card-content .ports-row-track .track-transport-icon{display:block;width:25px;height:25px}.kit-shipment-routing-card .card-content .dates-row{display:grid;grid-template-columns:var(--row-label-column-width) var(--row-date-column-width) minmax(45px,1fr) var(--row-date-column-width);column-gap:10px;align-items:center;font-size:14px}.kit-shipment-routing-card .card-content .dates-row .item-label{color:var(--ui-kit-color-grey-20);font-size:12px;text-transform:uppercase}.kit-shipment-routing-card .card-content .dates-row .item-date{width:100%;white-space:nowrap;text-align:center}.kit-shipment-routing-card .card-content .dates-row .item-date-start{text-align:left}.kit-shipment-routing-card .card-content .dates-row .item-date-end{text-align:right}.kit-shipment-routing-card .card-content .dates-row .item-duration{display:flex;justify-content:center;white-space:nowrap}\n"] }]
12378
+ }], propDecorators: { leg: [{ type: i0.Input, args: [{ isSignal: true, alias: "leg", required: true }] }], transportIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "transportIcon", required: true }] }], scheduledLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "scheduledLabel", required: true }] }], actualLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "actualLabel", required: true }] }], scheduledDurationLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "scheduledDurationLabel", required: true }] }], actualDurationLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "actualDurationLabel", required: true }] }], showTransportIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "showTransportIcon", required: false }] }], isCompleted: [{ type: i0.Input, args: [{ isSignal: true, alias: "isCompleted", required: false }] }], dateFormat: [{ type: i0.Input, args: [{ isSignal: true, alias: "dateFormat", required: false }] }] } });
12379
+
12380
+ class KitShipmentRoutingOverviewComponent {
12381
+ constructor() {
12382
+ this.originLabel = input.required(/* @ts-ignore */
12383
+ ...(ngDevMode ? [{ debugName: "originLabel" }] : /* istanbul ignore next */ []));
12384
+ this.destinationLabel = input.required(/* @ts-ignore */
12385
+ ...(ngDevMode ? [{ debugName: "destinationLabel" }] : /* istanbul ignore next */ []));
12386
+ this.originPort = input(null, /* @ts-ignore */
12387
+ ...(ngDevMode ? [{ debugName: "originPort" }] : /* istanbul ignore next */ []));
12388
+ this.originDate = input(null, /* @ts-ignore */
12389
+ ...(ngDevMode ? [{ debugName: "originDate" }] : /* istanbul ignore next */ []));
12390
+ this.destinationPort = input(null, /* @ts-ignore */
12391
+ ...(ngDevMode ? [{ debugName: "destinationPort" }] : /* istanbul ignore next */ []));
12392
+ this.destinationDate = input(null, /* @ts-ignore */
12393
+ ...(ngDevMode ? [{ debugName: "destinationDate" }] : /* istanbul ignore next */ []));
12394
+ this.transitDaysLabel = input.required(/* @ts-ignore */
12395
+ ...(ngDevMode ? [{ debugName: "transitDaysLabel" }] : /* istanbul ignore next */ []));
12396
+ this.ports = input([], /* @ts-ignore */
12397
+ ...(ngDevMode ? [{ debugName: "ports" }] : /* istanbul ignore next */ []));
12398
+ this.progressPercent = input(0, /* @ts-ignore */
12399
+ ...(ngDevMode ? [{ debugName: "progressPercent" }] : /* istanbul ignore next */ []));
12400
+ this.transportIcon = input(null, /* @ts-ignore */
12401
+ ...(ngDevMode ? [{ debugName: "transportIcon" }] : /* istanbul ignore next */ []));
12402
+ this.dateFormat = input(KIT_DATE_FORMAT, /* @ts-ignore */
12403
+ ...(ngDevMode ? [{ debugName: "dateFormat" }] : /* istanbul ignore next */ []));
12404
+ this.kitPillTheme = KitPillTheme;
12405
+ this.kitSvgIconType = KitSvgIconType;
12406
+ }
12407
+ getPortPositionPercent(index) {
12408
+ const lastIndex = Math.max(this.ports().length - 1, 1);
12409
+ return (index / lastIndex) * 100;
12410
+ }
12411
+ isPortCompleted(index) {
12412
+ const segmentCount = Math.max(this.ports().length - 1, 1);
12413
+ const completedSegments = (this.progressPercent() / 100) * segmentCount;
12414
+ return completedSegments >= index;
12415
+ }
12416
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: KitShipmentRoutingOverviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
12417
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", type: KitShipmentRoutingOverviewComponent, isStandalone: true, selector: "kit-shipment-routing-overview", inputs: { originLabel: { classPropertyName: "originLabel", publicName: "originLabel", isSignal: true, isRequired: true, transformFunction: null }, destinationLabel: { classPropertyName: "destinationLabel", publicName: "destinationLabel", isSignal: true, isRequired: true, transformFunction: null }, originPort: { classPropertyName: "originPort", publicName: "originPort", isSignal: true, isRequired: false, transformFunction: null }, originDate: { classPropertyName: "originDate", publicName: "originDate", isSignal: true, isRequired: false, transformFunction: null }, destinationPort: { classPropertyName: "destinationPort", publicName: "destinationPort", isSignal: true, isRequired: false, transformFunction: null }, destinationDate: { classPropertyName: "destinationDate", publicName: "destinationDate", isSignal: true, isRequired: false, transformFunction: null }, transitDaysLabel: { classPropertyName: "transitDaysLabel", publicName: "transitDaysLabel", isSignal: true, isRequired: true, transformFunction: null }, ports: { classPropertyName: "ports", publicName: "ports", isSignal: true, isRequired: false, transformFunction: null }, progressPercent: { classPropertyName: "progressPercent", publicName: "progressPercent", isSignal: true, isRequired: false, transformFunction: null }, transportIcon: { classPropertyName: "transportIcon", publicName: "transportIcon", isSignal: true, isRequired: false, transformFunction: null }, dateFormat: { classPropertyName: "dateFormat", publicName: "dateFormat", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"kit-shipment-routing-overview\">\n <div class=\"routing\">\n <div class=\"routing-port\">\n <div class=\"routing-port-label\">{{ originLabel() }}</div>\n <div class=\"routing-port-name\">{{ originPort() || '-' }}</div>\n <div class=\"routing-port-date\">{{ originDate() ? (originDate() | date: dateFormat() : 'UTC') : '-' }}</div>\n </div>\n <div class=\"routing-main\">\n <kit-pill [theme]=\"kitPillTheme.BLUE\">\n {{ transitDaysLabel() }}\n </kit-pill>\n <div class=\"routing-route\">\n <div class=\"routing-track\">\n <div class=\"routing-track-progress\"\n [style.width.%]=\"progressPercent()\"></div>\n </div>\n <div class=\"routing-ports\">\n @for (port of ports(); track $index) {\n <div class=\"port-item\"\n [style.left.%]=\"getPortPositionPercent($index)\"\n [class.port-item-completed]=\"isPortCompleted($index)\">\n <div class=\"port-item-dot\"></div>\n <kit-truncate-text class=\"port-item-name\"\n [lines]=\"2\">\n {{ port }}\n </kit-truncate-text>\n </div>\n }\n </div>\n <div class=\"routing-transport\"\n [style.left.%]=\"progressPercent()\">\n <kit-svg-icon class=\"routing-transport-icon\"\n [icon]=\"transportIcon()\"\n [ngClass]=\"kitSvgIconType.FILL\" />\n </div>\n </div>\n </div>\n <div class=\"routing-port\">\n <div class=\"routing-port-label\">{{ destinationLabel() }}</div>\n <div class=\"routing-port-name\">{{ destinationPort() || '-' }}</div>\n <div class=\"routing-port-date\">{{ destinationDate() ? (destinationDate() | date: dateFormat() : 'UTC') : '-' }}</div>\n </div>\n </div>\n</div>\n", styles: [".kit-shipment-routing-overview{display:block}.kit-shipment-routing-overview .routing{display:grid;grid-template-columns:120px 1fr 120px;gap:60px;align-items:center;color:var(--ui-kit-color-grey-10)}.kit-shipment-routing-overview .routing-port{display:flex;flex-direction:column;gap:5px;font-size:14px}.kit-shipment-routing-overview .routing-port:last-child{text-align:right}.kit-shipment-routing-overview .routing-port-label{margin-bottom:5px;color:var(--ui-kit-color-grey-14)}.kit-shipment-routing-overview .routing-port-name{font-size:16px;font-weight:600;line-height:1.2}.kit-shipment-routing-overview .routing-port-date{color:var(--ui-kit-color-grey-20)}.kit-shipment-routing-overview .routing-main{display:flex;flex-direction:column;align-items:center;flex:1;gap:20px}.kit-shipment-routing-overview .routing-route{position:relative;align-self:stretch}.kit-shipment-routing-overview .routing-track{position:absolute;left:0;right:0;top:6px;height:2px;border-radius:999px;background:var(--ui-kit-color-grey-11)}.kit-shipment-routing-overview .routing-track-progress{height:100%;border-radius:inherit;background:var(--ui-kit-color-green-1)}.kit-shipment-routing-overview .routing-ports{position:relative;min-height:56px}.kit-shipment-routing-overview .routing-transport{position:absolute;top:-20px;transform:translate(-50%);width:44px;height:44px;background:var(--ui-kit-color-white);display:flex;align-items:center;justify-content:center;z-index:1}.kit-shipment-routing-overview .routing-transport-icon{width:38px;height:38px;fill:var(--ui-kit-color-green-1)}.kit-shipment-routing-overview .port-item{position:absolute;top:2px;display:flex;flex-direction:column;align-items:center;gap:10px;min-width:0;max-width:120px;transform:translate(-50%)}.kit-shipment-routing-overview .port-item-dot{width:9px;height:9px;border-radius:50%;background:var(--ui-kit-color-grey-11);z-index:1}.kit-shipment-routing-overview .port-item-name{font-size:14px;color:var(--ui-kit-color-grey-14);text-align:center;max-width:120px;line-height:1.2}.kit-shipment-routing-overview .port-item-completed .port-item-dot{background:var(--ui-kit-color-green-1)}@container routing-layout (max-width: 960px){.kit-shipment-routing-overview .routing{grid-template-columns:1fr 1fr;gap:20px}.kit-shipment-routing-overview .routing-port:first-child{order:1}.kit-shipment-routing-overview .routing-port:last-child{order:2;text-align:right}.kit-shipment-routing-overview .routing-main{order:3;grid-column:span 2}.kit-shipment-routing-overview .port-item:first-child{align-items:flex-start;transform:none}.kit-shipment-routing-overview .port-item:first-child .port-item-name{text-align:left}.kit-shipment-routing-overview .port-item:last-child{align-items:flex-end;transform:translate(-100%)}.kit-shipment-routing-overview .port-item:last-child .port-item-name{text-align:right}}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: KitPillComponent, selector: "kit-pill", inputs: ["removable", "selectable", "selected", "type", "theme", "icon", "iconType"], outputs: ["clicked", "removed"] }, { kind: "component", type: KitSvgIconComponent, selector: "kit-svg-icon", inputs: ["icon", "iconClass"] }, { kind: "component", type: KitTruncateTextComponent, selector: "kit-truncate-text", inputs: ["tooltipText", "lines", "innerHtml"] }, { kind: "pipe", type: DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
12418
+ }
12419
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: KitShipmentRoutingOverviewComponent, decorators: [{
12420
+ type: Component,
12421
+ args: [{ selector: 'kit-shipment-routing-overview', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
12422
+ DatePipe,
12423
+ NgClass,
12424
+ KitPillComponent,
12425
+ KitSvgIconComponent,
12426
+ KitTruncateTextComponent,
12427
+ ], template: "<div class=\"kit-shipment-routing-overview\">\n <div class=\"routing\">\n <div class=\"routing-port\">\n <div class=\"routing-port-label\">{{ originLabel() }}</div>\n <div class=\"routing-port-name\">{{ originPort() || '-' }}</div>\n <div class=\"routing-port-date\">{{ originDate() ? (originDate() | date: dateFormat() : 'UTC') : '-' }}</div>\n </div>\n <div class=\"routing-main\">\n <kit-pill [theme]=\"kitPillTheme.BLUE\">\n {{ transitDaysLabel() }}\n </kit-pill>\n <div class=\"routing-route\">\n <div class=\"routing-track\">\n <div class=\"routing-track-progress\"\n [style.width.%]=\"progressPercent()\"></div>\n </div>\n <div class=\"routing-ports\">\n @for (port of ports(); track $index) {\n <div class=\"port-item\"\n [style.left.%]=\"getPortPositionPercent($index)\"\n [class.port-item-completed]=\"isPortCompleted($index)\">\n <div class=\"port-item-dot\"></div>\n <kit-truncate-text class=\"port-item-name\"\n [lines]=\"2\">\n {{ port }}\n </kit-truncate-text>\n </div>\n }\n </div>\n <div class=\"routing-transport\"\n [style.left.%]=\"progressPercent()\">\n <kit-svg-icon class=\"routing-transport-icon\"\n [icon]=\"transportIcon()\"\n [ngClass]=\"kitSvgIconType.FILL\" />\n </div>\n </div>\n </div>\n <div class=\"routing-port\">\n <div class=\"routing-port-label\">{{ destinationLabel() }}</div>\n <div class=\"routing-port-name\">{{ destinationPort() || '-' }}</div>\n <div class=\"routing-port-date\">{{ destinationDate() ? (destinationDate() | date: dateFormat() : 'UTC') : '-' }}</div>\n </div>\n </div>\n</div>\n", styles: [".kit-shipment-routing-overview{display:block}.kit-shipment-routing-overview .routing{display:grid;grid-template-columns:120px 1fr 120px;gap:60px;align-items:center;color:var(--ui-kit-color-grey-10)}.kit-shipment-routing-overview .routing-port{display:flex;flex-direction:column;gap:5px;font-size:14px}.kit-shipment-routing-overview .routing-port:last-child{text-align:right}.kit-shipment-routing-overview .routing-port-label{margin-bottom:5px;color:var(--ui-kit-color-grey-14)}.kit-shipment-routing-overview .routing-port-name{font-size:16px;font-weight:600;line-height:1.2}.kit-shipment-routing-overview .routing-port-date{color:var(--ui-kit-color-grey-20)}.kit-shipment-routing-overview .routing-main{display:flex;flex-direction:column;align-items:center;flex:1;gap:20px}.kit-shipment-routing-overview .routing-route{position:relative;align-self:stretch}.kit-shipment-routing-overview .routing-track{position:absolute;left:0;right:0;top:6px;height:2px;border-radius:999px;background:var(--ui-kit-color-grey-11)}.kit-shipment-routing-overview .routing-track-progress{height:100%;border-radius:inherit;background:var(--ui-kit-color-green-1)}.kit-shipment-routing-overview .routing-ports{position:relative;min-height:56px}.kit-shipment-routing-overview .routing-transport{position:absolute;top:-20px;transform:translate(-50%);width:44px;height:44px;background:var(--ui-kit-color-white);display:flex;align-items:center;justify-content:center;z-index:1}.kit-shipment-routing-overview .routing-transport-icon{width:38px;height:38px;fill:var(--ui-kit-color-green-1)}.kit-shipment-routing-overview .port-item{position:absolute;top:2px;display:flex;flex-direction:column;align-items:center;gap:10px;min-width:0;max-width:120px;transform:translate(-50%)}.kit-shipment-routing-overview .port-item-dot{width:9px;height:9px;border-radius:50%;background:var(--ui-kit-color-grey-11);z-index:1}.kit-shipment-routing-overview .port-item-name{font-size:14px;color:var(--ui-kit-color-grey-14);text-align:center;max-width:120px;line-height:1.2}.kit-shipment-routing-overview .port-item-completed .port-item-dot{background:var(--ui-kit-color-green-1)}@container routing-layout (max-width: 960px){.kit-shipment-routing-overview .routing{grid-template-columns:1fr 1fr;gap:20px}.kit-shipment-routing-overview .routing-port:first-child{order:1}.kit-shipment-routing-overview .routing-port:last-child{order:2;text-align:right}.kit-shipment-routing-overview .routing-main{order:3;grid-column:span 2}.kit-shipment-routing-overview .port-item:first-child{align-items:flex-start;transform:none}.kit-shipment-routing-overview .port-item:first-child .port-item-name{text-align:left}.kit-shipment-routing-overview .port-item:last-child{align-items:flex-end;transform:translate(-100%)}.kit-shipment-routing-overview .port-item:last-child .port-item-name{text-align:right}}\n"] }]
12428
+ }], propDecorators: { originLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "originLabel", required: true }] }], destinationLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "destinationLabel", required: true }] }], originPort: [{ type: i0.Input, args: [{ isSignal: true, alias: "originPort", required: false }] }], originDate: [{ type: i0.Input, args: [{ isSignal: true, alias: "originDate", required: false }] }], destinationPort: [{ type: i0.Input, args: [{ isSignal: true, alias: "destinationPort", required: false }] }], destinationDate: [{ type: i0.Input, args: [{ isSignal: true, alias: "destinationDate", required: false }] }], transitDaysLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "transitDaysLabel", required: true }] }], ports: [{ type: i0.Input, args: [{ isSignal: true, alias: "ports", required: false }] }], progressPercent: [{ type: i0.Input, args: [{ isSignal: true, alias: "progressPercent", required: false }] }], transportIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "transportIcon", required: false }] }], dateFormat: [{ type: i0.Input, args: [{ isSignal: true, alias: "dateFormat", required: false }] }] } });
12429
+
12238
12430
  var KitLanguage;
12239
12431
  (function (KitLanguage) {
12240
12432
  KitLanguage["ENGLISH"] = "en";
@@ -13838,21 +14030,24 @@ class KitGridUrlStateService {
13838
14030
  };
13839
14031
  }
13840
14032
  setGridStateToUrl(state, defaultColumns = state?.columns ?? []) {
13841
- const queryParams = {
13842
- skip: state?.skip,
13843
- take: state?.take,
13844
- search: state?.search,
13845
- sort: JSON.stringify(state?.sort),
13846
- filter: JSON.stringify(state?.filter),
13847
- columns: JSON.stringify(buildGridViewColumns(defaultColumns)),
13848
- archive: state?.archive,
13849
- };
14033
+ const queryParams = this.buildGridQueryParams(state, defaultColumns);
13850
14034
  this.router.navigate([], {
13851
14035
  relativeTo: this.activatedRoute,
13852
14036
  queryParams,
13853
14037
  queryParamsHandling: 'merge',
13854
14038
  });
13855
14039
  }
14040
+ replaceGridStateInUrl(state, defaultColumns = state?.columns ?? []) {
14041
+ const queryParams = this.buildGridQueryParams(state, defaultColumns);
14042
+ const urlTree = this.router.createUrlTree([], {
14043
+ relativeTo: this.activatedRoute,
14044
+ queryParams: {
14045
+ ...this.activatedRoute.snapshot.queryParams,
14046
+ ...queryParams,
14047
+ },
14048
+ });
14049
+ this.location.replaceState(this.router.serializeUrl(urlTree));
14050
+ }
13856
14051
  getFiltersVisible(filterDetailsSetting) {
13857
14052
  const filterDetailsParam = this.activatedRoute.snapshot.queryParams['filtersDetails'];
13858
14053
  const isFilterHiddenByParam = filterDetailsParam === 'true';
@@ -13870,6 +14065,17 @@ class KitGridUrlStateService {
13870
14065
  });
13871
14066
  this.location.replaceState(this.router.serializeUrl(urlTree));
13872
14067
  }
14068
+ buildGridQueryParams(state, defaultColumns) {
14069
+ return {
14070
+ skip: state?.skip,
14071
+ take: state?.take,
14072
+ search: state?.search,
14073
+ sort: JSON.stringify(state?.sort),
14074
+ filter: JSON.stringify(state?.filter),
14075
+ columns: JSON.stringify(buildGridViewColumns(defaultColumns)),
14076
+ archive: state?.archive,
14077
+ };
14078
+ }
13873
14079
  }
13874
14080
 
13875
14081
  class FetchGridViews extends KitAbstractPayloadAction {
@@ -14768,14 +14974,13 @@ class KitFilterCheckboxComponent {
14768
14974
  this.kitTooltipPosition = KitTooltipPosition;
14769
14975
  this.kitPillTheme = KitPillTheme;
14770
14976
  this.kitTextboxSize = KitTextboxSize;
14977
+ this.popupToggleRafId = null;
14771
14978
  effect(() => this.allSelected.set(this.groupedItems().every(item => item.checked)));
14772
14979
  }
14773
14980
  ngOnInit() {
14774
14981
  this.initializeSelectedValues();
14775
14982
  this.updateItemsState();
14776
- if (this.showPopupOnInit() && !this.filter().value) {
14777
- requestAnimationFrame(() => this.onPopupToggle());
14778
- }
14983
+ this.openPopupOnInit();
14779
14984
  }
14780
14985
  ngOnChanges({ filter }) {
14781
14986
  if (!filter?.isFirstChange()) {
@@ -14783,6 +14988,12 @@ class KitFilterCheckboxComponent {
14783
14988
  this.updateItemsState();
14784
14989
  }
14785
14990
  }
14991
+ ngOnDestroy() {
14992
+ if (this.popupToggleRafId !== null) {
14993
+ cancelAnimationFrame(this.popupToggleRafId);
14994
+ this.popupToggleRafId = null;
14995
+ }
14996
+ }
14786
14997
  removeFilter() {
14787
14998
  this.popup()?.close();
14788
14999
  this.filterRemoved.emit();
@@ -14800,7 +15011,7 @@ class KitFilterCheckboxComponent {
14800
15011
  this.selectedValues.set(checkedItems);
14801
15012
  }
14802
15013
  onPopupToggle() {
14803
- requestAnimationFrame(() => this.popup()?.toggle());
15014
+ this.popup()?.toggle();
14804
15015
  }
14805
15016
  close() {
14806
15017
  this.updateItemsState();
@@ -14897,6 +15108,15 @@ class KitFilterCheckboxComponent {
14897
15108
  checked: this.selectedValues().some(selectedValue => selectedValue.value === item.value) ?? false,
14898
15109
  })));
14899
15110
  }
15111
+ openPopupOnInit() {
15112
+ if (!this.showPopupOnInit() || this.selectedValues().length > 0) {
15113
+ return;
15114
+ }
15115
+ this.popupToggleRafId = requestAnimationFrame(() => {
15116
+ this.popupToggleRafId = null;
15117
+ this.onPopupToggle();
15118
+ });
15119
+ }
14900
15120
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: KitFilterCheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
14901
15121
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", type: KitFilterCheckboxComponent, isStandalone: true, selector: "kit-filter-checkbox", inputs: { filter: { classPropertyName: "filter", publicName: "filter", isSignal: true, isRequired: true, transformFunction: null }, translateKeyPrefix: { classPropertyName: "translateKeyPrefix", publicName: "translateKeyPrefix", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, showPopupOnInit: { classPropertyName: "showPopupOnInit", publicName: "showPopupOnInit", isSignal: true, isRequired: false, transformFunction: null }, guidField: { classPropertyName: "guidField", publicName: "guidField", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { items: "itemsChange", filterRemoved: "filterRemoved", filterChanged: "filterChanged" }, viewQueries: [{ propertyName: "anchor", first: true, predicate: ["toggleButton"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "popupContent", first: true, predicate: ["popupContent"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "popup", first: true, predicate: ["popup"], descendants: true, read: KitPopupComponent, isSignal: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"kit-filter-checkbox\">\n <kit-pill #toggleButton\n [selectable]=\"!filter().readonly\"\n [selected]=\"popup.isPopupOpen\"\n [removable]=\"!filter().readonly && (filter().removable ?? true)\"\n [theme]=\"filter().readonly && kitPillTheme.BLUE || kitPillTheme.DEFAULT\"\n (removed)=\"removeFilter()\"\n (clicked)=\"onPopupToggle()\">\n {{ filter().title | translate }}:\n @if (allSelected()) {\n <div class=\"kit-filter-checkbox-tooltip\"\n kitTooltip\n kitTooltipFilter=\".kit-filter-checkbox-tooltip\"\n [kitTooltipPosition]=\"kitTooltipPosition.RIGHT\"\n [kitTooltipTemplateRef]=\"tooltipTemplate\">\n {{ 'kit.filters.all' | translate }}\n </div>\n } @else if (displayedValues.length > 1) {\n <div class=\"kit-filter-checkbox-tooltip\"\n kitTooltip\n kitTooltipFilter=\".kit-filter-checkbox-tooltip\"\n [kitTooltipPosition]=\"kitTooltipPosition.RIGHT\"\n [kitTooltipTemplateRef]=\"tooltipTemplate\">\n <span class=\"kit-filter-checkbox-single-item\">{{ displayedValues[0] }}</span>\n <span class=\"kit-filter-checkbox-tooltip-count\">+{{ displayedValues.length - 1 }}</span>\n </div>\n } @else {\n <span class=\"kit-filter-checkbox-single-item\">{{ displayedValues[0] ?? '' }}</span>\n }\n </kit-pill>\n</div>\n\n<kit-popup #popup\n popupClass=\"kit-filter-checkbox-popup\"\n [anchor]=\"anchor()\"\n [content]=\"content\"\n [showFooter]=\"true\"\n [applyButtonLabel]=\"'kit.filters.apply' | translate\"\n [cancelButtonLabel]=\"'kit.filters.clear' | translate\"\n [closePopupOnCancel]=\"false\"\n (applyAction)=\"applyFilter()\"\n (cancelAction)=\"clearAllFilters()\"\n (closed)=\"close()\">\n</kit-popup>\n\n<ng-template #content>\n <div class=\"popup-search\"\n [hidden]=\"!isContentOverflowing && !searchTerm()\">\n <kit-textbox [placeholder]=\"'kit.filters.search' | translate\"\n [size]=\"kitTextboxSize.SMALL\"\n [defaultValue]=\"searchTerm()\"\n (changed)=\"searchTerm.set($event)\"\n ></kit-textbox>\n </div>\n\n <div #popupContent\n class=\"popup-content\">\n @if (!searchTerm()) {\n <kit-checkbox class=\"checkbox-item\"\n [label]=\"'kit.filters.all' | translate\"\n [(ngModel)]=\"allSelected\"\n (changed)=\"toggleAll($event)\">\n </kit-checkbox>\n }\n\n @for (item of visibleItems(); track $index) {\n <kit-checkbox class=\"checkbox-item\"\n [label]=\"buildTranslateKey(item.title) | translate\"\n [(ngModel)]=\"item.checked\"\n (changed)=\"onChange($event, item.value)\"\n ></kit-checkbox>\n }\n\n @if (!visibleItems().length) {\n {{ ('kit.filters.noDataFound' | translate) }}\n }\n </div>\n</ng-template>\n\n<ng-template #tooltipTemplate>\n @for (item of (displayedValues.length > 1 && !allSelected() ? displayedValues.slice(1) : displayedValues); track item) {\n <div class=\"kit-filter-checkbox-tooltip-item\">{{ item }}</div>\n }\n</ng-template>\n", styles: [".kit-filter-checkbox-tooltip{display:flex;align-items:center;gap:3px}.kit-filter-checkbox-tooltip-count{color:var(--ui-kit-color-main)}.kit-filter-checkbox-tooltip-item{color:var(--ui-kit-color-grey-10);font-size:12px;font-weight:500;line-height:20px}.kit-filter-checkbox-single-item{display:block;max-width:180px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}::ng-deep .kit-filter-checkbox-popup .popup-search{margin-bottom:5px;padding-bottom:15px;border-bottom:1px solid var(--ui-kit-color-grey-11)}::ng-deep .kit-filter-checkbox-popup .popup-content{width:172px;max-height:400px;overflow-y:auto}::ng-deep .kit-filter-checkbox-popup .popup-content::-webkit-scrollbar{width:4px;height:4px}::ng-deep .kit-filter-checkbox-popup .popup-content::-webkit-scrollbar-thumb{background-color:var(--ui-kit-color-grey-17);border-radius:2px}::ng-deep .kit-filter-checkbox-popup .popup-content::-webkit-scrollbar-thumb:hover{background-color:var(--ui-kit-color-grey-10)}::ng-deep .kit-filter-checkbox-popup .checkbox-item{display:block;padding:6px 0}\n"], dependencies: [{ kind: "component", type: KitPillComponent, selector: "kit-pill", inputs: ["removable", "selectable", "selected", "type", "theme", "icon", "iconType"], outputs: ["clicked", "removed"] }, { kind: "component", type: KitCheckboxComponent, selector: "kit-checkbox", inputs: ["label", "disabled", "checked", "readonly", "state", "messageIcon", "messageText", "indeterminate"], outputs: ["changed"] }, { kind: "directive", type: KitTooltipDirective, selector: "[kitTooltip]", inputs: ["kitTooltipPosition", "kitTooltipFilter", "kitTooltipTemplateRef", "kitTooltipVisible", "kitTooltipOffset"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: KitPopupComponent, selector: "kit-popup", inputs: ["anchor", "content", "closeOnOutsideClick", "showFooter", "cancelButtonLabel", "applyButtonLabel", "isApplyButtonDisabled", "positionMode", "popupClass", "closePopupOnCancel", "extraInsideSelectors"], outputs: ["cancelAction", "applyAction", "opened", "closed"] }, { kind: "component", type: KitTextboxComponent, selector: "kit-textbox", inputs: ["placeholder", "label", "labelTooltip", "defaultValue", "messageIcon", "messageText", "messageTemplate", "disabled", "maxlength", "state", "size", "icon", "clearButton", "showStateIcon", "readonly", "customStateIcon", "type"], outputs: ["defaultValueChange", "disabledChange", "blured", "focused", "changed"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
14902
15122
  }
@@ -14917,6 +15137,8 @@ class KitFilterCustomInputComponent {
14917
15137
  constructor() {
14918
15138
  this.filter = input.required(/* @ts-ignore */
14919
15139
  ...(ngDevMode ? [{ debugName: "filter" }] : /* istanbul ignore next */ []));
15140
+ this.showPopupOnInit = input(true, /* @ts-ignore */
15141
+ ...(ngDevMode ? [{ debugName: "showPopupOnInit" }] : /* istanbul ignore next */ []));
14920
15142
  this.filterRemoved = output();
14921
15143
  this.filterChanged = output();
14922
15144
  this.anchor = viewChild.required('toggleButton', { ...(ngDevMode ? { debugName: "anchor" } : /* istanbul ignore next */ {}), read: ElementRef });
@@ -14931,7 +15153,7 @@ class KitFilterCustomInputComponent {
14931
15153
  }
14932
15154
  ngOnInit() {
14933
15155
  this.initializeValue();
14934
- this.showPopupOnInit();
15156
+ this.openPopupOnInit();
14935
15157
  }
14936
15158
  ngOnDestroy() {
14937
15159
  if (this.rafId) {
@@ -14983,16 +15205,17 @@ class KitFilterCustomInputComponent {
14983
15205
  this.inputValue.set(value);
14984
15206
  }
14985
15207
  }
14986
- showPopupOnInit() {
14987
- if (!this.selectedValue()) {
14988
- this.rafId = requestAnimationFrame(() => {
14989
- this.rafId = null;
14990
- this.onPopupToggle();
14991
- });
15208
+ openPopupOnInit() {
15209
+ if (!this.showPopupOnInit() || this.selectedValue()) {
15210
+ return;
14992
15211
  }
15212
+ this.rafId = requestAnimationFrame(() => {
15213
+ this.rafId = null;
15214
+ this.onPopupToggle();
15215
+ });
14993
15216
  }
14994
15217
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: KitFilterCustomInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
14995
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.1.1", type: KitFilterCustomInputComponent, isStandalone: true, selector: "kit-filter-custom-input", inputs: { filter: { classPropertyName: "filter", publicName: "filter", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { filterRemoved: "filterRemoved", filterChanged: "filterChanged" }, viewQueries: [{ propertyName: "anchor", first: true, predicate: ["toggleButton"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "popup", first: true, predicate: ["popup"], descendants: true, read: KitPopupComponent, isSignal: true }], ngImport: i0, template: "<kit-pill #toggleButton\n [selectable]=\"!filter().readonly\"\n [selected]=\"popup.isPopupOpen\"\n [removable]=\"!filter().readonly && (filter().removable ?? true)\"\n [theme]=\"filter().readonly && kitPillTheme.BLUE || kitPillTheme.DEFAULT\"\n (removed)=\"removeFilter()\"\n (clicked)=\"onPopupToggle()\">\n {{ filter().title | translate }}:\n <kit-truncate-text class=\"kit-custom-input-selected-values\">\n {{ selectedValue() }}\n </kit-truncate-text>\n</kit-pill>\n\n<kit-popup #popup\n popupClass=\"kit-filter-input-popup\"\n [anchor]=\"anchor()\"\n [content]=\"content\"\n [showFooter]=\"true\"\n [applyButtonLabel]=\"'kit.filters.apply' | translate\"\n [cancelButtonLabel]=\"'kit.filters.clear' | translate\"\n [closePopupOnCancel]=\"false\"\n (applyAction)=\"applyFilter()\"\n (cancelAction)=\"clearAllFilters()\"\n (closed)=\"close()\">\n</kit-popup>\n\n<ng-template #content>\n <div class=\"popup-content\">\n <kit-textbox [size]=\"kitTextboxSize.SMALL\"\n [defaultValue]=\"inputValue()\"\n (changed)=\"onValueChange($event)\"\n (keydown.enter)=\"onEnterKey()\"\n ></kit-textbox>\n </div>\n</ng-template>\n", styles: [".kit-custom-input-selected-values{max-width:180px}::ng-deep .kit-filter-input-popup .popup-content{width:296px;box-sizing:border-box}\n"], dependencies: [{ kind: "component", type: KitPillComponent, selector: "kit-pill", inputs: ["removable", "selectable", "selected", "type", "theme", "icon", "iconType"], outputs: ["clicked", "removed"] }, { kind: "component", type: KitPopupComponent, selector: "kit-popup", inputs: ["anchor", "content", "closeOnOutsideClick", "showFooter", "cancelButtonLabel", "applyButtonLabel", "isApplyButtonDisabled", "positionMode", "popupClass", "closePopupOnCancel", "extraInsideSelectors"], outputs: ["cancelAction", "applyAction", "opened", "closed"] }, { kind: "component", type: KitTextboxComponent, selector: "kit-textbox", inputs: ["placeholder", "label", "labelTooltip", "defaultValue", "messageIcon", "messageText", "messageTemplate", "disabled", "maxlength", "state", "size", "icon", "clearButton", "showStateIcon", "readonly", "customStateIcon", "type"], outputs: ["defaultValueChange", "disabledChange", "blured", "focused", "changed"] }, { kind: "component", type: KitTruncateTextComponent, selector: "kit-truncate-text", inputs: ["tooltipText", "lines", "innerHtml"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
15218
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.1.1", type: KitFilterCustomInputComponent, isStandalone: true, selector: "kit-filter-custom-input", inputs: { filter: { classPropertyName: "filter", publicName: "filter", isSignal: true, isRequired: true, transformFunction: null }, showPopupOnInit: { classPropertyName: "showPopupOnInit", publicName: "showPopupOnInit", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { filterRemoved: "filterRemoved", filterChanged: "filterChanged" }, viewQueries: [{ propertyName: "anchor", first: true, predicate: ["toggleButton"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "popup", first: true, predicate: ["popup"], descendants: true, read: KitPopupComponent, isSignal: true }], ngImport: i0, template: "<kit-pill #toggleButton\n [selectable]=\"!filter().readonly\"\n [selected]=\"popup.isPopupOpen\"\n [removable]=\"!filter().readonly && (filter().removable ?? true)\"\n [theme]=\"filter().readonly && kitPillTheme.BLUE || kitPillTheme.DEFAULT\"\n (removed)=\"removeFilter()\"\n (clicked)=\"onPopupToggle()\">\n {{ filter().title | translate }}:\n <kit-truncate-text class=\"kit-custom-input-selected-values\">\n {{ selectedValue() }}\n </kit-truncate-text>\n</kit-pill>\n\n<kit-popup #popup\n popupClass=\"kit-filter-input-popup\"\n [anchor]=\"anchor()\"\n [content]=\"content\"\n [showFooter]=\"true\"\n [applyButtonLabel]=\"'kit.filters.apply' | translate\"\n [cancelButtonLabel]=\"'kit.filters.clear' | translate\"\n [closePopupOnCancel]=\"false\"\n (applyAction)=\"applyFilter()\"\n (cancelAction)=\"clearAllFilters()\"\n (closed)=\"close()\">\n</kit-popup>\n\n<ng-template #content>\n <div class=\"popup-content\">\n <kit-textbox [size]=\"kitTextboxSize.SMALL\"\n [defaultValue]=\"inputValue()\"\n (changed)=\"onValueChange($event)\"\n (keydown.enter)=\"onEnterKey()\"\n ></kit-textbox>\n </div>\n</ng-template>\n", styles: [".kit-custom-input-selected-values{max-width:180px}::ng-deep .kit-filter-input-popup .popup-content{width:296px;box-sizing:border-box}\n"], dependencies: [{ kind: "component", type: KitPillComponent, selector: "kit-pill", inputs: ["removable", "selectable", "selected", "type", "theme", "icon", "iconType"], outputs: ["clicked", "removed"] }, { kind: "component", type: KitPopupComponent, selector: "kit-popup", inputs: ["anchor", "content", "closeOnOutsideClick", "showFooter", "cancelButtonLabel", "applyButtonLabel", "isApplyButtonDisabled", "positionMode", "popupClass", "closePopupOnCancel", "extraInsideSelectors"], outputs: ["cancelAction", "applyAction", "opened", "closed"] }, { kind: "component", type: KitTextboxComponent, selector: "kit-textbox", inputs: ["placeholder", "label", "labelTooltip", "defaultValue", "messageIcon", "messageText", "messageTemplate", "disabled", "maxlength", "state", "size", "icon", "clearButton", "showStateIcon", "readonly", "customStateIcon", "type"], outputs: ["defaultValueChange", "disabledChange", "blured", "focused", "changed"] }, { kind: "component", type: KitTruncateTextComponent, selector: "kit-truncate-text", inputs: ["tooltipText", "lines", "innerHtml"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
14996
15219
  }
14997
15220
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: KitFilterCustomInputComponent, decorators: [{
14998
15221
  type: Component,
@@ -15003,13 +15226,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImpor
15003
15226
  TranslatePipe,
15004
15227
  KitTruncateTextComponent,
15005
15228
  ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<kit-pill #toggleButton\n [selectable]=\"!filter().readonly\"\n [selected]=\"popup.isPopupOpen\"\n [removable]=\"!filter().readonly && (filter().removable ?? true)\"\n [theme]=\"filter().readonly && kitPillTheme.BLUE || kitPillTheme.DEFAULT\"\n (removed)=\"removeFilter()\"\n (clicked)=\"onPopupToggle()\">\n {{ filter().title | translate }}:\n <kit-truncate-text class=\"kit-custom-input-selected-values\">\n {{ selectedValue() }}\n </kit-truncate-text>\n</kit-pill>\n\n<kit-popup #popup\n popupClass=\"kit-filter-input-popup\"\n [anchor]=\"anchor()\"\n [content]=\"content\"\n [showFooter]=\"true\"\n [applyButtonLabel]=\"'kit.filters.apply' | translate\"\n [cancelButtonLabel]=\"'kit.filters.clear' | translate\"\n [closePopupOnCancel]=\"false\"\n (applyAction)=\"applyFilter()\"\n (cancelAction)=\"clearAllFilters()\"\n (closed)=\"close()\">\n</kit-popup>\n\n<ng-template #content>\n <div class=\"popup-content\">\n <kit-textbox [size]=\"kitTextboxSize.SMALL\"\n [defaultValue]=\"inputValue()\"\n (changed)=\"onValueChange($event)\"\n (keydown.enter)=\"onEnterKey()\"\n ></kit-textbox>\n </div>\n</ng-template>\n", styles: [".kit-custom-input-selected-values{max-width:180px}::ng-deep .kit-filter-input-popup .popup-content{width:296px;box-sizing:border-box}\n"] }]
15006
- }], propDecorators: { filter: [{ type: i0.Input, args: [{ isSignal: true, alias: "filter", required: true }] }], filterRemoved: [{ type: i0.Output, args: ["filterRemoved"] }], filterChanged: [{ type: i0.Output, args: ["filterChanged"] }], anchor: [{ type: i0.ViewChild, args: ['toggleButton', { ...{ read: ElementRef }, isSignal: true }] }], popup: [{ type: i0.ViewChild, args: ['popup', { ...{ read: KitPopupComponent }, isSignal: true }] }] } });
15229
+ }], propDecorators: { filter: [{ type: i0.Input, args: [{ isSignal: true, alias: "filter", required: true }] }], showPopupOnInit: [{ type: i0.Input, args: [{ isSignal: true, alias: "showPopupOnInit", required: false }] }], filterRemoved: [{ type: i0.Output, args: ["filterRemoved"] }], filterChanged: [{ type: i0.Output, args: ["filterChanged"] }], anchor: [{ type: i0.ViewChild, args: ['toggleButton', { ...{ read: ElementRef }, isSignal: true }] }], popup: [{ type: i0.ViewChild, args: ['popup', { ...{ read: KitPopupComponent }, isSignal: true }] }] } });
15007
15230
 
15008
15231
  class KitFilterDateComponent {
15009
15232
  constructor() {
15010
15233
  this.store = inject(Store);
15011
15234
  this.filter = input.required(/* @ts-ignore */
15012
15235
  ...(ngDevMode ? [{ debugName: "filter" }] : /* istanbul ignore next */ []));
15236
+ this.showPopupOnInit = input(true, /* @ts-ignore */
15237
+ ...(ngDevMode ? [{ debugName: "showPopupOnInit" }] : /* istanbul ignore next */ []));
15013
15238
  this.useUserTimeZone = input(false, /* @ts-ignore */
15014
15239
  ...(ngDevMode ? [{ debugName: "useUserTimeZone" }] : /* istanbul ignore next */ []));
15015
15240
  this.useLocalTimeZone = input(false, /* @ts-ignore */
@@ -15029,7 +15254,7 @@ class KitFilterDateComponent {
15029
15254
  ...(ngDevMode ? [{ debugName: "endDate" }] : /* istanbul ignore next */ []));
15030
15255
  this.dateRange = signal(undefined, /* @ts-ignore */
15031
15256
  ...(ngDevMode ? [{ debugName: "dateRange" }] : /* istanbul ignore next */ []));
15032
- this.selectedValues = signal({}, /* @ts-ignore */
15257
+ this.selectedValues = signal(null, /* @ts-ignore */
15033
15258
  ...(ngDevMode ? [{ debugName: "selectedValues" }] : /* istanbul ignore next */ []));
15034
15259
  this.pillDateFormat = 'dd/MM/yy';
15035
15260
  this.kitPillTheme = KitPillTheme;
@@ -15088,15 +15313,12 @@ class KitFilterDateComponent {
15088
15313
  }
15089
15314
  ngOnInit() {
15090
15315
  this.initializeSelectedValues();
15091
- this.showPopupOnInit();
15316
+ this.openPopupOnInit();
15092
15317
  this.addOutsideClickListener();
15093
15318
  }
15094
15319
  ngOnDestroy() {
15095
15320
  this.removeOutsideClickListener();
15096
- if (this.rafId) {
15097
- cancelAnimationFrame(this.rafId);
15098
- this.rafId = null;
15099
- }
15321
+ this.cancelPendingAnimationFrame();
15100
15322
  }
15101
15323
  removeFilter() {
15102
15324
  this.popup()?.close();
@@ -15106,15 +15328,15 @@ class KitFilterDateComponent {
15106
15328
  this.popup()?.toggle();
15107
15329
  }
15108
15330
  close() {
15109
- if (!this.filter().value && !(this.selectedValues().start || this.selectedValues().end)) {
15331
+ const selectedValues = this.selectedValues();
15332
+ if (!selectedValues?.start && !selectedValues?.end) {
15110
15333
  this.startDate.set(undefined);
15111
15334
  this.endDate.set(undefined);
15112
15335
  this.dateRange.set(undefined);
15113
15336
  return;
15114
15337
  }
15115
- const [startFilter, endFilter,] = this.filter().value?.filters || [];
15116
- this.startDate.set(startFilter?.value);
15117
- this.endDate.set(endFilter?.value);
15338
+ this.startDate.set(selectedValues.start);
15339
+ this.endDate.set(selectedValues.end);
15118
15340
  }
15119
15341
  onFromDateChange(date) {
15120
15342
  this.dateRange.set(undefined);
@@ -15167,9 +15389,14 @@ class KitFilterDateComponent {
15167
15389
  this.endDate.set(endDate);
15168
15390
  this.dateRange.set(range);
15169
15391
  this.applyFilter();
15392
+ this.popup()?.close();
15170
15393
  }
15171
15394
  initializeSelectedValues() {
15172
15395
  const filterValue = this.filter().value?.filters ?? null;
15396
+ if (!filterValue?.length) {
15397
+ this.selectedValues.set(null);
15398
+ return;
15399
+ }
15173
15400
  this.selectedValues.set({
15174
15401
  start: filterValue?.[0]?.value,
15175
15402
  end: filterValue?.[1]?.value,
@@ -15178,12 +15405,14 @@ class KitFilterDateComponent {
15178
15405
  this.endDate.set(this.selectedValues()?.end);
15179
15406
  this.dateRange.set(this.filter().value?.dateRange);
15180
15407
  }
15181
- showPopupOnInit() {
15182
- if (!this.selectedValues()?.start && !this.selectedValues()?.end) {
15183
- this.rafId = requestAnimationFrame(() => {
15184
- this.onPopupToggle();
15185
- });
15408
+ openPopupOnInit() {
15409
+ if (!this.showPopupOnInit() || this.selectedValues()) {
15410
+ return;
15186
15411
  }
15412
+ this.rafId = requestAnimationFrame(() => {
15413
+ this.rafId = null;
15414
+ this.onPopupToggle();
15415
+ });
15187
15416
  }
15188
15417
  addOutsideClickListener() {
15189
15418
  document.addEventListener('mousedown', this.onDocumentMouseDown, true);
@@ -15222,8 +15451,15 @@ class KitFilterDateComponent {
15222
15451
  }
15223
15452
  return {};
15224
15453
  }
15454
+ cancelPendingAnimationFrame() {
15455
+ if (this.rafId === null) {
15456
+ return;
15457
+ }
15458
+ cancelAnimationFrame(this.rafId);
15459
+ this.rafId = null;
15460
+ }
15225
15461
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: KitFilterDateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
15226
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", type: KitFilterDateComponent, isStandalone: true, selector: "kit-filter-date", inputs: { filter: { classPropertyName: "filter", publicName: "filter", isSignal: true, isRequired: true, transformFunction: null }, useUserTimeZone: { classPropertyName: "useUserTimeZone", publicName: "useUserTimeZone", isSignal: true, isRequired: false, transformFunction: null }, useLocalTimeZone: { classPropertyName: "useLocalTimeZone", publicName: "useLocalTimeZone", isSignal: true, isRequired: false, transformFunction: null }, dateFilterConstraint: { classPropertyName: "dateFilterConstraint", publicName: "dateFilterConstraint", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { filterRemoved: "filterRemoved", filterChanged: "filterChanged" }, viewQueries: [{ propertyName: "anchor", first: true, predicate: ["toggleButton"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "popup", first: true, predicate: ["popup"], descendants: true, read: KitPopupComponent, isSignal: true }], ngImport: i0, template: "<div class=\"kit-filter-date\">\n <kit-pill #toggleButton\n [selectable]=\"!filter().readonly\"\n [selected]=\"popup.isPopupOpen\"\n [removable]=\"!filter().readonly && (filter().removable ?? true)\"\n [theme]=\"filter().readonly && kitPillTheme.BLUE || kitPillTheme.DEFAULT\"\n (removed)=\"removeFilter()\"\n (clicked)=\"onPopupToggle()\">\n {{ filter().title | translate }}:\n @if (selectedValues(); as selectedValues) { \n {{ localStartDate() | date: pillDateFormat }}\n @if (selectedValues?.start && selectedValues?.end) { \n -\n }\n {{ localEndDate() | date: pillDateFormat }}\n }\n </kit-pill>\n</div>\n\n<kit-popup #popup\n popupClass=\"kit-filter-date-popup\"\n [anchor]=\"anchor()\"\n [content]=\"content\"\n [closeOnOutsideClick]=\"false\"\n [showFooter]=\"true\"\n [applyButtonLabel]=\"'kit.filters.apply' | translate\"\n [cancelButtonLabel]=\"'kit.filters.clear' | translate\"\n [closePopupOnCancel]=\"false\"\n (applyAction)=\"applyFilter()\"\n (cancelAction)=\"clearAllFilters()\"\n (closed)=\"close()\">\n</kit-popup>\n\n<ng-template #content>\n <div class=\"popup-actions\">\n <kit-button [kind]=\"kitButtonKind.SMALL\"\n [type]=\"kitButtonType.GHOST\"\n [label]=\"'kit.filters.today' | translate\"\n [active]=\"dateRange() === kitFilterDateRange.TODAY\"\n (clicked)=\"selectDateRange(kitFilterDateRange.TODAY)\" />\n <kit-button [kind]=\"kitButtonKind.SMALL\"\n [type]=\"kitButtonType.GHOST\"\n [label]=\"'kit.filters.yesterday' | translate\"\n [active]=\"dateRange() === kitFilterDateRange.YESTERDAY\"\n (clicked)=\"selectDateRange(kitFilterDateRange.YESTERDAY)\" />\n <kit-button [kind]=\"kitButtonKind.SMALL\"\n [type]=\"kitButtonType.GHOST\"\n [label]=\"'kit.filters.lastWeek' | translate\"\n [active]=\"dateRange() === kitFilterDateRange.LAST_WEEK\"\n (clicked)=\"selectDateRange(kitFilterDateRange.LAST_WEEK)\" />\n <kit-button [kind]=\"kitButtonKind.SMALL\"\n [type]=\"kitButtonType.GHOST\"\n [label]=\"'kit.filters.lastMonth' | translate\"\n [active]=\"dateRange() === kitFilterDateRange.LAST_MONTH\"\n (clicked)=\"selectDateRange(kitFilterDateRange.LAST_MONTH)\" />\n </div>\n <div class=\"popup-content\">\n <div class=\"date-input\">\n <kit-datepicker [placeholder]=\"'kit.filters.chooseDateFrom' | translate\"\n [defaultDate]=\"localStartDate()\"\n [min]=\"minDateConstraint()\"\n [max]=\"localEndDate()\"\n (changed)=\"onFromDateChange($event)\"\n (keydown.enter)=\"onEnterKey()\"\n ></kit-datepicker>\n <kit-datepicker [placeholder]=\"'kit.filters.chooseDateTo' | translate\"\n [defaultDate]=\"localEndDate()\"\n [min]=\"localStartDate()\"\n [max]=\"maxDateConstraint()\"\n (changed)=\"onToDateChange($event)\"\n (keydown.enter)=\"onEnterKey()\"\n ></kit-datepicker>\n </div>\n </div>\n</ng-template>\n", styles: ["::ng-deep .kit-filter-date-popup{min-width:296px}::ng-deep .kit-filter-date-popup .popup-content{box-sizing:border-box}::ng-deep .kit-filter-date-popup .popup-actions{display:flex;justify-content:space-between;gap:8px;margin-bottom:15px}::ng-deep .kit-filter-date-popup .date-input{display:flex;flex-direction:column;width:100%;gap:10px}\n"], dependencies: [{ kind: "component", type: KitPillComponent, selector: "kit-pill", inputs: ["removable", "selectable", "selected", "type", "theme", "icon", "iconType"], outputs: ["clicked", "removed"] }, { kind: "component", type: KitDatepickerComponent, selector: "kit-datepicker", inputs: ["placeholder", "label", "labelTooltip", "defaultDate", "disabled", "format", "min", "max", "messageIcon", "messageText", "size", "readonly"], outputs: ["defaultDateChange", "disabledChange", "changed"] }, { kind: "component", type: KitPopupComponent, selector: "kit-popup", inputs: ["anchor", "content", "closeOnOutsideClick", "showFooter", "cancelButtonLabel", "applyButtonLabel", "isApplyButtonDisabled", "positionMode", "popupClass", "closePopupOnCancel", "extraInsideSelectors"], outputs: ["cancelAction", "applyAction", "opened", "closed"] }, { kind: "component", type: KitButtonComponent, selector: "kit-button", inputs: ["disabled", "label", "type", "icon", "iconType", "kind", "state", "iconPosition", "buttonClass", "active"], outputs: ["clicked"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
15462
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", type: KitFilterDateComponent, isStandalone: true, selector: "kit-filter-date", inputs: { filter: { classPropertyName: "filter", publicName: "filter", isSignal: true, isRequired: true, transformFunction: null }, showPopupOnInit: { classPropertyName: "showPopupOnInit", publicName: "showPopupOnInit", isSignal: true, isRequired: false, transformFunction: null }, useUserTimeZone: { classPropertyName: "useUserTimeZone", publicName: "useUserTimeZone", isSignal: true, isRequired: false, transformFunction: null }, useLocalTimeZone: { classPropertyName: "useLocalTimeZone", publicName: "useLocalTimeZone", isSignal: true, isRequired: false, transformFunction: null }, dateFilterConstraint: { classPropertyName: "dateFilterConstraint", publicName: "dateFilterConstraint", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { filterRemoved: "filterRemoved", filterChanged: "filterChanged" }, viewQueries: [{ propertyName: "anchor", first: true, predicate: ["toggleButton"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "popup", first: true, predicate: ["popup"], descendants: true, read: KitPopupComponent, isSignal: true }], ngImport: i0, template: "<div class=\"kit-filter-date\">\n <kit-pill #toggleButton\n [selectable]=\"!filter().readonly\"\n [selected]=\"popup.isPopupOpen\"\n [removable]=\"!filter().readonly && (filter().removable ?? true)\"\n [theme]=\"filter().readonly && kitPillTheme.BLUE || kitPillTheme.DEFAULT\"\n (removed)=\"removeFilter()\"\n (clicked)=\"onPopupToggle()\">\n {{ filter().title | translate }}:\n @if (localStartDate() || localEndDate()) {\n {{ localStartDate() | date: pillDateFormat }}\n @if (localStartDate() && localEndDate()) {\n -\n }\n {{ localEndDate() | date: pillDateFormat }}\n }\n </kit-pill>\n</div>\n\n<kit-popup #popup\n popupClass=\"kit-filter-date-popup\"\n [anchor]=\"anchor()\"\n [content]=\"content\"\n [closeOnOutsideClick]=\"false\"\n [showFooter]=\"true\"\n [applyButtonLabel]=\"'kit.filters.apply' | translate\"\n [cancelButtonLabel]=\"'kit.filters.clear' | translate\"\n [closePopupOnCancel]=\"false\"\n (applyAction)=\"applyFilter()\"\n (cancelAction)=\"clearAllFilters()\"\n (closed)=\"close()\">\n</kit-popup>\n\n<ng-template #content>\n <div class=\"popup-actions\">\n <kit-button [kind]=\"kitButtonKind.SMALL\"\n [type]=\"kitButtonType.GHOST\"\n [label]=\"'kit.filters.today' | translate\"\n [active]=\"dateRange() === kitFilterDateRange.TODAY\"\n (clicked)=\"selectDateRange(kitFilterDateRange.TODAY)\" />\n <kit-button [kind]=\"kitButtonKind.SMALL\"\n [type]=\"kitButtonType.GHOST\"\n [label]=\"'kit.filters.yesterday' | translate\"\n [active]=\"dateRange() === kitFilterDateRange.YESTERDAY\"\n (clicked)=\"selectDateRange(kitFilterDateRange.YESTERDAY)\" />\n <kit-button [kind]=\"kitButtonKind.SMALL\"\n [type]=\"kitButtonType.GHOST\"\n [label]=\"'kit.filters.lastWeek' | translate\"\n [active]=\"dateRange() === kitFilterDateRange.LAST_WEEK\"\n (clicked)=\"selectDateRange(kitFilterDateRange.LAST_WEEK)\" />\n <kit-button [kind]=\"kitButtonKind.SMALL\"\n [type]=\"kitButtonType.GHOST\"\n [label]=\"'kit.filters.lastMonth' | translate\"\n [active]=\"dateRange() === kitFilterDateRange.LAST_MONTH\"\n (clicked)=\"selectDateRange(kitFilterDateRange.LAST_MONTH)\" />\n </div>\n <div class=\"popup-content\">\n <div class=\"date-input\">\n <kit-datepicker [placeholder]=\"'kit.filters.chooseDateFrom' | translate\"\n [defaultDate]=\"localStartDate()\"\n [min]=\"minDateConstraint()\"\n [max]=\"localEndDate()\"\n (changed)=\"onFromDateChange($event)\"\n (keydown.enter)=\"onEnterKey()\"\n ></kit-datepicker>\n <kit-datepicker [placeholder]=\"'kit.filters.chooseDateTo' | translate\"\n [defaultDate]=\"localEndDate()\"\n [min]=\"localStartDate()\"\n [max]=\"maxDateConstraint()\"\n (changed)=\"onToDateChange($event)\"\n (keydown.enter)=\"onEnterKey()\"\n ></kit-datepicker>\n </div>\n </div>\n</ng-template>\n", styles: ["::ng-deep .kit-filter-date-popup{min-width:296px}::ng-deep .kit-filter-date-popup .popup-content{box-sizing:border-box}::ng-deep .kit-filter-date-popup .popup-actions{display:flex;justify-content:space-between;gap:8px;margin-bottom:15px}::ng-deep .kit-filter-date-popup .date-input{display:flex;flex-direction:column;width:100%;gap:10px}\n"], dependencies: [{ kind: "component", type: KitPillComponent, selector: "kit-pill", inputs: ["removable", "selectable", "selected", "type", "theme", "icon", "iconType"], outputs: ["clicked", "removed"] }, { kind: "component", type: KitDatepickerComponent, selector: "kit-datepicker", inputs: ["placeholder", "label", "labelTooltip", "defaultDate", "disabled", "format", "min", "max", "messageIcon", "messageText", "size", "readonly"], outputs: ["defaultDateChange", "disabledChange", "changed"] }, { kind: "component", type: KitPopupComponent, selector: "kit-popup", inputs: ["anchor", "content", "closeOnOutsideClick", "showFooter", "cancelButtonLabel", "applyButtonLabel", "isApplyButtonDisabled", "positionMode", "popupClass", "closePopupOnCancel", "extraInsideSelectors"], outputs: ["cancelAction", "applyAction", "opened", "closed"] }, { kind: "component", type: KitButtonComponent, selector: "kit-button", inputs: ["disabled", "label", "type", "icon", "iconType", "kind", "state", "iconPosition", "buttonClass", "active"], outputs: ["clicked"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
15227
15463
  }
15228
15464
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: KitFilterDateComponent, decorators: [{
15229
15465
  type: Component,
@@ -15234,14 +15470,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImpor
15234
15470
  DatePipe,
15235
15471
  KitPopupComponent,
15236
15472
  KitButtonComponent,
15237
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"kit-filter-date\">\n <kit-pill #toggleButton\n [selectable]=\"!filter().readonly\"\n [selected]=\"popup.isPopupOpen\"\n [removable]=\"!filter().readonly && (filter().removable ?? true)\"\n [theme]=\"filter().readonly && kitPillTheme.BLUE || kitPillTheme.DEFAULT\"\n (removed)=\"removeFilter()\"\n (clicked)=\"onPopupToggle()\">\n {{ filter().title | translate }}:\n @if (selectedValues(); as selectedValues) { \n {{ localStartDate() | date: pillDateFormat }}\n @if (selectedValues?.start && selectedValues?.end) { \n -\n }\n {{ localEndDate() | date: pillDateFormat }}\n }\n </kit-pill>\n</div>\n\n<kit-popup #popup\n popupClass=\"kit-filter-date-popup\"\n [anchor]=\"anchor()\"\n [content]=\"content\"\n [closeOnOutsideClick]=\"false\"\n [showFooter]=\"true\"\n [applyButtonLabel]=\"'kit.filters.apply' | translate\"\n [cancelButtonLabel]=\"'kit.filters.clear' | translate\"\n [closePopupOnCancel]=\"false\"\n (applyAction)=\"applyFilter()\"\n (cancelAction)=\"clearAllFilters()\"\n (closed)=\"close()\">\n</kit-popup>\n\n<ng-template #content>\n <div class=\"popup-actions\">\n <kit-button [kind]=\"kitButtonKind.SMALL\"\n [type]=\"kitButtonType.GHOST\"\n [label]=\"'kit.filters.today' | translate\"\n [active]=\"dateRange() === kitFilterDateRange.TODAY\"\n (clicked)=\"selectDateRange(kitFilterDateRange.TODAY)\" />\n <kit-button [kind]=\"kitButtonKind.SMALL\"\n [type]=\"kitButtonType.GHOST\"\n [label]=\"'kit.filters.yesterday' | translate\"\n [active]=\"dateRange() === kitFilterDateRange.YESTERDAY\"\n (clicked)=\"selectDateRange(kitFilterDateRange.YESTERDAY)\" />\n <kit-button [kind]=\"kitButtonKind.SMALL\"\n [type]=\"kitButtonType.GHOST\"\n [label]=\"'kit.filters.lastWeek' | translate\"\n [active]=\"dateRange() === kitFilterDateRange.LAST_WEEK\"\n (clicked)=\"selectDateRange(kitFilterDateRange.LAST_WEEK)\" />\n <kit-button [kind]=\"kitButtonKind.SMALL\"\n [type]=\"kitButtonType.GHOST\"\n [label]=\"'kit.filters.lastMonth' | translate\"\n [active]=\"dateRange() === kitFilterDateRange.LAST_MONTH\"\n (clicked)=\"selectDateRange(kitFilterDateRange.LAST_MONTH)\" />\n </div>\n <div class=\"popup-content\">\n <div class=\"date-input\">\n <kit-datepicker [placeholder]=\"'kit.filters.chooseDateFrom' | translate\"\n [defaultDate]=\"localStartDate()\"\n [min]=\"minDateConstraint()\"\n [max]=\"localEndDate()\"\n (changed)=\"onFromDateChange($event)\"\n (keydown.enter)=\"onEnterKey()\"\n ></kit-datepicker>\n <kit-datepicker [placeholder]=\"'kit.filters.chooseDateTo' | translate\"\n [defaultDate]=\"localEndDate()\"\n [min]=\"localStartDate()\"\n [max]=\"maxDateConstraint()\"\n (changed)=\"onToDateChange($event)\"\n (keydown.enter)=\"onEnterKey()\"\n ></kit-datepicker>\n </div>\n </div>\n</ng-template>\n", styles: ["::ng-deep .kit-filter-date-popup{min-width:296px}::ng-deep .kit-filter-date-popup .popup-content{box-sizing:border-box}::ng-deep .kit-filter-date-popup .popup-actions{display:flex;justify-content:space-between;gap:8px;margin-bottom:15px}::ng-deep .kit-filter-date-popup .date-input{display:flex;flex-direction:column;width:100%;gap:10px}\n"] }]
15238
- }], propDecorators: { filter: [{ type: i0.Input, args: [{ isSignal: true, alias: "filter", required: true }] }], useUserTimeZone: [{ type: i0.Input, args: [{ isSignal: true, alias: "useUserTimeZone", required: false }] }], useLocalTimeZone: [{ type: i0.Input, args: [{ isSignal: true, alias: "useLocalTimeZone", required: false }] }], dateFilterConstraint: [{ type: i0.Input, args: [{ isSignal: true, alias: "dateFilterConstraint", required: false }] }], filterRemoved: [{ type: i0.Output, args: ["filterRemoved"] }], filterChanged: [{ type: i0.Output, args: ["filterChanged"] }], anchor: [{ type: i0.ViewChild, args: ['toggleButton', { ...{ read: ElementRef }, isSignal: true }] }], popup: [{ type: i0.ViewChild, args: ['popup', { ...{ read: KitPopupComponent }, isSignal: true }] }] } });
15473
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"kit-filter-date\">\n <kit-pill #toggleButton\n [selectable]=\"!filter().readonly\"\n [selected]=\"popup.isPopupOpen\"\n [removable]=\"!filter().readonly && (filter().removable ?? true)\"\n [theme]=\"filter().readonly && kitPillTheme.BLUE || kitPillTheme.DEFAULT\"\n (removed)=\"removeFilter()\"\n (clicked)=\"onPopupToggle()\">\n {{ filter().title | translate }}:\n @if (localStartDate() || localEndDate()) {\n {{ localStartDate() | date: pillDateFormat }}\n @if (localStartDate() && localEndDate()) {\n -\n }\n {{ localEndDate() | date: pillDateFormat }}\n }\n </kit-pill>\n</div>\n\n<kit-popup #popup\n popupClass=\"kit-filter-date-popup\"\n [anchor]=\"anchor()\"\n [content]=\"content\"\n [closeOnOutsideClick]=\"false\"\n [showFooter]=\"true\"\n [applyButtonLabel]=\"'kit.filters.apply' | translate\"\n [cancelButtonLabel]=\"'kit.filters.clear' | translate\"\n [closePopupOnCancel]=\"false\"\n (applyAction)=\"applyFilter()\"\n (cancelAction)=\"clearAllFilters()\"\n (closed)=\"close()\">\n</kit-popup>\n\n<ng-template #content>\n <div class=\"popup-actions\">\n <kit-button [kind]=\"kitButtonKind.SMALL\"\n [type]=\"kitButtonType.GHOST\"\n [label]=\"'kit.filters.today' | translate\"\n [active]=\"dateRange() === kitFilterDateRange.TODAY\"\n (clicked)=\"selectDateRange(kitFilterDateRange.TODAY)\" />\n <kit-button [kind]=\"kitButtonKind.SMALL\"\n [type]=\"kitButtonType.GHOST\"\n [label]=\"'kit.filters.yesterday' | translate\"\n [active]=\"dateRange() === kitFilterDateRange.YESTERDAY\"\n (clicked)=\"selectDateRange(kitFilterDateRange.YESTERDAY)\" />\n <kit-button [kind]=\"kitButtonKind.SMALL\"\n [type]=\"kitButtonType.GHOST\"\n [label]=\"'kit.filters.lastWeek' | translate\"\n [active]=\"dateRange() === kitFilterDateRange.LAST_WEEK\"\n (clicked)=\"selectDateRange(kitFilterDateRange.LAST_WEEK)\" />\n <kit-button [kind]=\"kitButtonKind.SMALL\"\n [type]=\"kitButtonType.GHOST\"\n [label]=\"'kit.filters.lastMonth' | translate\"\n [active]=\"dateRange() === kitFilterDateRange.LAST_MONTH\"\n (clicked)=\"selectDateRange(kitFilterDateRange.LAST_MONTH)\" />\n </div>\n <div class=\"popup-content\">\n <div class=\"date-input\">\n <kit-datepicker [placeholder]=\"'kit.filters.chooseDateFrom' | translate\"\n [defaultDate]=\"localStartDate()\"\n [min]=\"minDateConstraint()\"\n [max]=\"localEndDate()\"\n (changed)=\"onFromDateChange($event)\"\n (keydown.enter)=\"onEnterKey()\"\n ></kit-datepicker>\n <kit-datepicker [placeholder]=\"'kit.filters.chooseDateTo' | translate\"\n [defaultDate]=\"localEndDate()\"\n [min]=\"localStartDate()\"\n [max]=\"maxDateConstraint()\"\n (changed)=\"onToDateChange($event)\"\n (keydown.enter)=\"onEnterKey()\"\n ></kit-datepicker>\n </div>\n </div>\n</ng-template>\n", styles: ["::ng-deep .kit-filter-date-popup{min-width:296px}::ng-deep .kit-filter-date-popup .popup-content{box-sizing:border-box}::ng-deep .kit-filter-date-popup .popup-actions{display:flex;justify-content:space-between;gap:8px;margin-bottom:15px}::ng-deep .kit-filter-date-popup .date-input{display:flex;flex-direction:column;width:100%;gap:10px}\n"] }]
15474
+ }], propDecorators: { filter: [{ type: i0.Input, args: [{ isSignal: true, alias: "filter", required: true }] }], showPopupOnInit: [{ type: i0.Input, args: [{ isSignal: true, alias: "showPopupOnInit", required: false }] }], useUserTimeZone: [{ type: i0.Input, args: [{ isSignal: true, alias: "useUserTimeZone", required: false }] }], useLocalTimeZone: [{ type: i0.Input, args: [{ isSignal: true, alias: "useLocalTimeZone", required: false }] }], dateFilterConstraint: [{ type: i0.Input, args: [{ isSignal: true, alias: "dateFilterConstraint", required: false }] }], filterRemoved: [{ type: i0.Output, args: ["filterRemoved"] }], filterChanged: [{ type: i0.Output, args: ["filterChanged"] }], anchor: [{ type: i0.ViewChild, args: ['toggleButton', { ...{ read: ElementRef }, isSignal: true }] }], popup: [{ type: i0.ViewChild, args: ['popup', { ...{ read: KitPopupComponent }, isSignal: true }] }] } });
15239
15475
 
15240
15476
  class KitFilterInputComponent {
15241
15477
  constructor() {
15242
15478
  this.translateService = inject(TranslateService);
15243
15479
  this.filter = input.required(/* @ts-ignore */
15244
15480
  ...(ngDevMode ? [{ debugName: "filter" }] : /* istanbul ignore next */ []));
15481
+ this.showPopupOnInit = input(true, /* @ts-ignore */
15482
+ ...(ngDevMode ? [{ debugName: "showPopupOnInit" }] : /* istanbul ignore next */ []));
15245
15483
  this.filterInputType = input.required(/* @ts-ignore */
15246
15484
  ...(ngDevMode ? [{ debugName: "filterInputType" }] : /* istanbul ignore next */ []));
15247
15485
  this.filterRemoved = output();
@@ -15276,7 +15514,7 @@ class KitFilterInputComponent {
15276
15514
  }
15277
15515
  ngOnInit() {
15278
15516
  this.initializeSelectedValues();
15279
- this.showPopupOnInit();
15517
+ this.openPopupOnInit();
15280
15518
  }
15281
15519
  ngOnDestroy() {
15282
15520
  this.cancelPendingAnimationFrame('popupToggleRafId');
@@ -15373,13 +15611,14 @@ class KitFilterInputComponent {
15373
15611
  ],
15374
15612
  }));
15375
15613
  }
15376
- showPopupOnInit() {
15377
- if (!this.selectedValues()) {
15378
- this.popupToggleRafId = requestAnimationFrame(() => {
15379
- this.popupToggleRafId = null;
15380
- this.onPopupToggle();
15381
- });
15614
+ openPopupOnInit() {
15615
+ if (!this.showPopupOnInit() || this.selectedValues()) {
15616
+ return;
15382
15617
  }
15618
+ this.popupToggleRafId = requestAnimationFrame(() => {
15619
+ this.popupToggleRafId = null;
15620
+ this.onPopupToggle();
15621
+ });
15383
15622
  }
15384
15623
  scheduleFocusFirstInput() {
15385
15624
  this.cancelPendingAnimationFrame('focusRafId');
@@ -15432,7 +15671,7 @@ class KitFilterInputComponent {
15432
15671
  this.focusRafId = null;
15433
15672
  }
15434
15673
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: KitFilterInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
15435
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", type: KitFilterInputComponent, isStandalone: true, selector: "kit-filter-input", inputs: { filter: { classPropertyName: "filter", publicName: "filter", isSignal: true, isRequired: true, transformFunction: null }, filterInputType: { classPropertyName: "filterInputType", publicName: "filterInputType", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { filterRemoved: "filterRemoved", filterChanged: "filterChanged" }, viewQueries: [{ propertyName: "anchor", first: true, predicate: ["toggleButton"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "textboxComponents", predicate: KitTextboxComponent, descendants: true, isSignal: true }, { propertyName: "numericTextboxComponents", predicate: KitNumericTextboxComponent, descendants: true, isSignal: true }, { propertyName: "popup", first: true, predicate: ["popup"], descendants: true, read: KitPopupComponent, isSignal: true }], ngImport: i0, template: "<kit-pill #toggleButton\n [selectable]=\"!filter().readonly\"\n [selected]=\"popup.isPopupOpen\"\n [removable]=\"!filter().readonly && (filter().removable ?? true)\"\n [theme]=\"filter().readonly && kitPillTheme.BLUE || kitPillTheme.DEFAULT\"\n (removed)=\"removeFilter()\"\n (clicked)=\"onPopupToggle()\">\n {{ filter().title | translate }}:\n @if (selectedValues()?.filters; as selectedFilters) {\n <kit-truncate-text class=\"kit-filter-input-selected-values\">\n @for (filter of selectedFilters; track $index) {\n {{ getSelectedFilterText(filter) }}\n\n @if ($index === 0) {\n {{ getSelectedLogicText(selectedValues()) }}\n }\n }\n </kit-truncate-text>\n }\n</kit-pill>\n\n<kit-popup #popup\n popupClass=\"kit-filter-input-popup\"\n [anchor]=\"anchor()\"\n [content]=\"content\"\n [showFooter]=\"true\"\n [applyButtonLabel]=\"'kit.filters.apply' | translate\"\n [cancelButtonLabel]=\"'kit.filters.clear' | translate\"\n [isApplyButtonDisabled]=\"applyButtonDisabled\"\n [closePopupOnCancel]=\"false\"\n [extraInsideSelectors]=\"['.kit-dropdown-popup']\"\n (opened)=\"onPopupOpened()\"\n (applyAction)=\"applyFilter()\"\n (cancelAction)=\"clearAllFilters()\"\n (closed)=\"close()\">\n</kit-popup>\n\n<ng-template #content>\n <div class=\"popup-content\">\n @for (item of filterItems().filters; track $index) {\n <div class=\"filter-item\">\n <kit-dropdown [items]=\"getFilterOperatorDropdownItems()\"\n [size]=\"kitDropdownSize.SMALL\"\n [selectedItem]=\"$any(item.operator)\"\n (selected)=\"onOperatorSelect($event.value, $index)\"\n ></kit-dropdown>\n <div class=\"filter-controls\">\n @switch (filterInputType()) {\n @case (kitFilterType.TEXT) {\n <kit-textbox class=\"filter-item-value\"\n [size]=\"kitTextboxSize.SMALL\"\n [defaultValue]=\"item.value\"\n [disabled]=\"isFilterValueTextboxDisabled($index)\"\n (changed)=\"onValueChange($event, $index)\"\n (keydown.enter)=\"onEnterKey()\"\n ></kit-textbox>\n }\n @case (kitFilterType.NUMERIC) {\n <kit-numeric-textbox class=\"filter-item-value\"\n format=\"#.###\"\n [size]=\"kitNumericTextboxSize.SMALL\"\n [defaultValue]=\"item.value\"\n [min]=\"0\"\n [max]=\"maxIntegerValue\"\n [disabled]=\"isFilterValueTextboxDisabled($index)\"\n (changed)=\"onValueChange($event, $index)\"\n (keydown.enter)=\"onEnterKey()\"\n ></kit-numeric-textbox>\n }\n }\n @if ($index === 0) {\n <kit-dropdown class=\"logic-selector\"\n [selectedItem]=\"filterItems().logic\"\n [items]=\"filterLogicDropdownItems\"\n [size]=\"kitDropdownSize.SMALL\"\n (selected)=\"onLogicChange($event.value)\"\n ></kit-dropdown>\n }\n </div>\n </div>\n }\n </div>\n</ng-template>\n", styles: [".kit-filter-input-selected-values{max-width:180px}::ng-deep .kit-filter-input-popup .popup-content{display:flex;flex-direction:column;gap:10px;width:296px;box-sizing:border-box}::ng-deep .kit-filter-input-popup .filter-item{display:flex;flex-direction:column;gap:10px}::ng-deep .kit-filter-input-popup .filter-item-value{flex:1}::ng-deep .kit-filter-input-popup .filter-controls{display:flex;gap:10px}::ng-deep .kit-filter-input-popup .logic-selector{flex-shrink:0;width:100px}\n"], dependencies: [{ kind: "component", type: KitDropdownComponent, selector: "kit-dropdown", inputs: ["items", "selectedItem", "label", "disabled", "messageIcon", "messageText", "invalid", "defaultItem", "listHeight", "hideDefaultItem", "toggleIcon", "popupSettings", "isValuePrimitive", "footerTemplate", "noDataTemplate", "readonly", "size"], outputs: ["selectedItemChange", "disabledChange", "selected"] }, { kind: "component", type: KitPillComponent, selector: "kit-pill", inputs: ["removable", "selectable", "selected", "type", "theme", "icon", "iconType"], outputs: ["clicked", "removed"] }, { kind: "component", type: KitPopupComponent, selector: "kit-popup", inputs: ["anchor", "content", "closeOnOutsideClick", "showFooter", "cancelButtonLabel", "applyButtonLabel", "isApplyButtonDisabled", "positionMode", "popupClass", "closePopupOnCancel", "extraInsideSelectors"], outputs: ["cancelAction", "applyAction", "opened", "closed"] }, { kind: "component", type: KitTextboxComponent, selector: "kit-textbox", inputs: ["placeholder", "label", "labelTooltip", "defaultValue", "messageIcon", "messageText", "messageTemplate", "disabled", "maxlength", "state", "size", "icon", "clearButton", "showStateIcon", "readonly", "customStateIcon", "type"], outputs: ["defaultValueChange", "disabledChange", "blured", "focused", "changed"] }, { kind: "component", type: KitNumericTextboxComponent, selector: "kit-numeric-textbox", inputs: ["placeholder", "label", "defaultValue", "decimals", "min", "max", "maxlength", "messageIcon", "messageText", "disabled", "format", "state", "icon", "size", "showStateIcon", "readonly"], outputs: ["defaultValueChange", "disabledChange", "blured", "changed"] }, { kind: "component", type: KitTruncateTextComponent, selector: "kit-truncate-text", inputs: ["tooltipText", "lines", "innerHtml"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
15674
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", type: KitFilterInputComponent, isStandalone: true, selector: "kit-filter-input", inputs: { filter: { classPropertyName: "filter", publicName: "filter", isSignal: true, isRequired: true, transformFunction: null }, showPopupOnInit: { classPropertyName: "showPopupOnInit", publicName: "showPopupOnInit", isSignal: true, isRequired: false, transformFunction: null }, filterInputType: { classPropertyName: "filterInputType", publicName: "filterInputType", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { filterRemoved: "filterRemoved", filterChanged: "filterChanged" }, viewQueries: [{ propertyName: "anchor", first: true, predicate: ["toggleButton"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "textboxComponents", predicate: KitTextboxComponent, descendants: true, isSignal: true }, { propertyName: "numericTextboxComponents", predicate: KitNumericTextboxComponent, descendants: true, isSignal: true }, { propertyName: "popup", first: true, predicate: ["popup"], descendants: true, read: KitPopupComponent, isSignal: true }], ngImport: i0, template: "<kit-pill #toggleButton\n [selectable]=\"!filter().readonly\"\n [selected]=\"popup.isPopupOpen\"\n [removable]=\"!filter().readonly && (filter().removable ?? true)\"\n [theme]=\"filter().readonly && kitPillTheme.BLUE || kitPillTheme.DEFAULT\"\n (removed)=\"removeFilter()\"\n (clicked)=\"onPopupToggle()\">\n {{ filter().title | translate }}:\n @if (selectedValues()?.filters; as selectedFilters) {\n <kit-truncate-text class=\"kit-filter-input-selected-values\">\n @for (filter of selectedFilters; track $index) {\n {{ getSelectedFilterText(filter) }}\n\n @if ($index === 0) {\n {{ getSelectedLogicText(selectedValues()) }}\n }\n }\n </kit-truncate-text>\n }\n</kit-pill>\n\n<kit-popup #popup\n popupClass=\"kit-filter-input-popup\"\n [anchor]=\"anchor()\"\n [content]=\"content\"\n [showFooter]=\"true\"\n [applyButtonLabel]=\"'kit.filters.apply' | translate\"\n [cancelButtonLabel]=\"'kit.filters.clear' | translate\"\n [isApplyButtonDisabled]=\"applyButtonDisabled\"\n [closePopupOnCancel]=\"false\"\n [extraInsideSelectors]=\"['.kit-dropdown-popup']\"\n (opened)=\"onPopupOpened()\"\n (applyAction)=\"applyFilter()\"\n (cancelAction)=\"clearAllFilters()\"\n (closed)=\"close()\">\n</kit-popup>\n\n<ng-template #content>\n <div class=\"popup-content\">\n @for (item of filterItems().filters; track $index) {\n <div class=\"filter-item\">\n <kit-dropdown [items]=\"getFilterOperatorDropdownItems()\"\n [size]=\"kitDropdownSize.SMALL\"\n [selectedItem]=\"$any(item.operator)\"\n (selected)=\"onOperatorSelect($event.value, $index)\"\n ></kit-dropdown>\n <div class=\"filter-controls\">\n @switch (filterInputType()) {\n @case (kitFilterType.TEXT) {\n <kit-textbox class=\"filter-item-value\"\n [size]=\"kitTextboxSize.SMALL\"\n [defaultValue]=\"item.value\"\n [disabled]=\"isFilterValueTextboxDisabled($index)\"\n (changed)=\"onValueChange($event, $index)\"\n (keydown.enter)=\"onEnterKey()\"\n ></kit-textbox>\n }\n @case (kitFilterType.NUMERIC) {\n <kit-numeric-textbox class=\"filter-item-value\"\n format=\"#.###\"\n [size]=\"kitNumericTextboxSize.SMALL\"\n [defaultValue]=\"item.value\"\n [min]=\"0\"\n [max]=\"maxIntegerValue\"\n [disabled]=\"isFilterValueTextboxDisabled($index)\"\n (changed)=\"onValueChange($event, $index)\"\n (keydown.enter)=\"onEnterKey()\"\n ></kit-numeric-textbox>\n }\n }\n @if ($index === 0) {\n <kit-dropdown class=\"logic-selector\"\n [selectedItem]=\"filterItems().logic\"\n [items]=\"filterLogicDropdownItems\"\n [size]=\"kitDropdownSize.SMALL\"\n (selected)=\"onLogicChange($event.value)\"\n ></kit-dropdown>\n }\n </div>\n </div>\n }\n </div>\n</ng-template>\n", styles: [".kit-filter-input-selected-values{max-width:180px}::ng-deep .kit-filter-input-popup .popup-content{display:flex;flex-direction:column;gap:10px;width:296px;box-sizing:border-box}::ng-deep .kit-filter-input-popup .filter-item{display:flex;flex-direction:column;gap:10px}::ng-deep .kit-filter-input-popup .filter-item-value{flex:1}::ng-deep .kit-filter-input-popup .filter-controls{display:flex;gap:10px}::ng-deep .kit-filter-input-popup .logic-selector{flex-shrink:0;width:100px}\n"], dependencies: [{ kind: "component", type: KitDropdownComponent, selector: "kit-dropdown", inputs: ["items", "selectedItem", "label", "disabled", "messageIcon", "messageText", "invalid", "defaultItem", "listHeight", "hideDefaultItem", "toggleIcon", "popupSettings", "isValuePrimitive", "footerTemplate", "noDataTemplate", "readonly", "size"], outputs: ["selectedItemChange", "disabledChange", "selected"] }, { kind: "component", type: KitPillComponent, selector: "kit-pill", inputs: ["removable", "selectable", "selected", "type", "theme", "icon", "iconType"], outputs: ["clicked", "removed"] }, { kind: "component", type: KitPopupComponent, selector: "kit-popup", inputs: ["anchor", "content", "closeOnOutsideClick", "showFooter", "cancelButtonLabel", "applyButtonLabel", "isApplyButtonDisabled", "positionMode", "popupClass", "closePopupOnCancel", "extraInsideSelectors"], outputs: ["cancelAction", "applyAction", "opened", "closed"] }, { kind: "component", type: KitTextboxComponent, selector: "kit-textbox", inputs: ["placeholder", "label", "labelTooltip", "defaultValue", "messageIcon", "messageText", "messageTemplate", "disabled", "maxlength", "state", "size", "icon", "clearButton", "showStateIcon", "readonly", "customStateIcon", "type"], outputs: ["defaultValueChange", "disabledChange", "blured", "focused", "changed"] }, { kind: "component", type: KitNumericTextboxComponent, selector: "kit-numeric-textbox", inputs: ["placeholder", "label", "defaultValue", "decimals", "min", "max", "maxlength", "messageIcon", "messageText", "disabled", "format", "state", "icon", "size", "showStateIcon", "readonly"], outputs: ["defaultValueChange", "disabledChange", "blured", "changed"] }, { kind: "component", type: KitTruncateTextComponent, selector: "kit-truncate-text", inputs: ["tooltipText", "lines", "innerHtml"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
15436
15675
  }
15437
15676
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: KitFilterInputComponent, decorators: [{
15438
15677
  type: Component,
@@ -15445,7 +15684,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImpor
15445
15684
  KitNumericTextboxComponent,
15446
15685
  KitTruncateTextComponent,
15447
15686
  ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<kit-pill #toggleButton\n [selectable]=\"!filter().readonly\"\n [selected]=\"popup.isPopupOpen\"\n [removable]=\"!filter().readonly && (filter().removable ?? true)\"\n [theme]=\"filter().readonly && kitPillTheme.BLUE || kitPillTheme.DEFAULT\"\n (removed)=\"removeFilter()\"\n (clicked)=\"onPopupToggle()\">\n {{ filter().title | translate }}:\n @if (selectedValues()?.filters; as selectedFilters) {\n <kit-truncate-text class=\"kit-filter-input-selected-values\">\n @for (filter of selectedFilters; track $index) {\n {{ getSelectedFilterText(filter) }}\n\n @if ($index === 0) {\n {{ getSelectedLogicText(selectedValues()) }}\n }\n }\n </kit-truncate-text>\n }\n</kit-pill>\n\n<kit-popup #popup\n popupClass=\"kit-filter-input-popup\"\n [anchor]=\"anchor()\"\n [content]=\"content\"\n [showFooter]=\"true\"\n [applyButtonLabel]=\"'kit.filters.apply' | translate\"\n [cancelButtonLabel]=\"'kit.filters.clear' | translate\"\n [isApplyButtonDisabled]=\"applyButtonDisabled\"\n [closePopupOnCancel]=\"false\"\n [extraInsideSelectors]=\"['.kit-dropdown-popup']\"\n (opened)=\"onPopupOpened()\"\n (applyAction)=\"applyFilter()\"\n (cancelAction)=\"clearAllFilters()\"\n (closed)=\"close()\">\n</kit-popup>\n\n<ng-template #content>\n <div class=\"popup-content\">\n @for (item of filterItems().filters; track $index) {\n <div class=\"filter-item\">\n <kit-dropdown [items]=\"getFilterOperatorDropdownItems()\"\n [size]=\"kitDropdownSize.SMALL\"\n [selectedItem]=\"$any(item.operator)\"\n (selected)=\"onOperatorSelect($event.value, $index)\"\n ></kit-dropdown>\n <div class=\"filter-controls\">\n @switch (filterInputType()) {\n @case (kitFilterType.TEXT) {\n <kit-textbox class=\"filter-item-value\"\n [size]=\"kitTextboxSize.SMALL\"\n [defaultValue]=\"item.value\"\n [disabled]=\"isFilterValueTextboxDisabled($index)\"\n (changed)=\"onValueChange($event, $index)\"\n (keydown.enter)=\"onEnterKey()\"\n ></kit-textbox>\n }\n @case (kitFilterType.NUMERIC) {\n <kit-numeric-textbox class=\"filter-item-value\"\n format=\"#.###\"\n [size]=\"kitNumericTextboxSize.SMALL\"\n [defaultValue]=\"item.value\"\n [min]=\"0\"\n [max]=\"maxIntegerValue\"\n [disabled]=\"isFilterValueTextboxDisabled($index)\"\n (changed)=\"onValueChange($event, $index)\"\n (keydown.enter)=\"onEnterKey()\"\n ></kit-numeric-textbox>\n }\n }\n @if ($index === 0) {\n <kit-dropdown class=\"logic-selector\"\n [selectedItem]=\"filterItems().logic\"\n [items]=\"filterLogicDropdownItems\"\n [size]=\"kitDropdownSize.SMALL\"\n (selected)=\"onLogicChange($event.value)\"\n ></kit-dropdown>\n }\n </div>\n </div>\n }\n </div>\n</ng-template>\n", styles: [".kit-filter-input-selected-values{max-width:180px}::ng-deep .kit-filter-input-popup .popup-content{display:flex;flex-direction:column;gap:10px;width:296px;box-sizing:border-box}::ng-deep .kit-filter-input-popup .filter-item{display:flex;flex-direction:column;gap:10px}::ng-deep .kit-filter-input-popup .filter-item-value{flex:1}::ng-deep .kit-filter-input-popup .filter-controls{display:flex;gap:10px}::ng-deep .kit-filter-input-popup .logic-selector{flex-shrink:0;width:100px}\n"] }]
15448
- }], propDecorators: { filter: [{ type: i0.Input, args: [{ isSignal: true, alias: "filter", required: true }] }], filterInputType: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterInputType", required: true }] }], filterRemoved: [{ type: i0.Output, args: ["filterRemoved"] }], filterChanged: [{ type: i0.Output, args: ["filterChanged"] }], anchor: [{ type: i0.ViewChild, args: ['toggleButton', { ...{ read: ElementRef }, isSignal: true }] }], textboxComponents: [{ type: i0.ViewChildren, args: [i0.forwardRef(() => KitTextboxComponent), { isSignal: true }] }], numericTextboxComponents: [{ type: i0.ViewChildren, args: [i0.forwardRef(() => KitNumericTextboxComponent), { isSignal: true }] }], popup: [{ type: i0.ViewChild, args: ['popup', { ...{ read: KitPopupComponent }, isSignal: true }] }] } });
15687
+ }], propDecorators: { filter: [{ type: i0.Input, args: [{ isSignal: true, alias: "filter", required: true }] }], showPopupOnInit: [{ type: i0.Input, args: [{ isSignal: true, alias: "showPopupOnInit", required: false }] }], filterInputType: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterInputType", required: true }] }], filterRemoved: [{ type: i0.Output, args: ["filterRemoved"] }], filterChanged: [{ type: i0.Output, args: ["filterChanged"] }], anchor: [{ type: i0.ViewChild, args: ['toggleButton', { ...{ read: ElementRef }, isSignal: true }] }], textboxComponents: [{ type: i0.ViewChildren, args: [i0.forwardRef(() => KitTextboxComponent), { isSignal: true }] }], numericTextboxComponents: [{ type: i0.ViewChildren, args: [i0.forwardRef(() => KitNumericTextboxComponent), { isSignal: true }] }], popup: [{ type: i0.ViewChild, args: ['popup', { ...{ read: KitPopupComponent }, isSignal: true }] }] } });
15449
15688
 
15450
15689
  class KitFilterNullCheckComponent {
15451
15690
  constructor() {
@@ -15478,14 +15717,10 @@ class KitFilterNullCheckComponent {
15478
15717
  { label: this.notNullLabel(), value: KitFilterOperator.IS_NOT_NULL, checked: false },
15479
15718
  ]);
15480
15719
  this.initializeSelectedOption();
15481
- if (this.showPopupOnInit() && !this.selectedOption()) {
15482
- this.rafId = requestAnimationFrame(() => {
15483
- this.onPopupToggle();
15484
- });
15485
- }
15720
+ this.openPopupOnInit();
15486
15721
  }
15487
15722
  ngOnDestroy() {
15488
- if (this.rafId) {
15723
+ if (this.rafId !== null) {
15489
15724
  cancelAnimationFrame(this.rafId);
15490
15725
  this.rafId = null;
15491
15726
  }
@@ -15509,7 +15744,7 @@ class KitFilterNullCheckComponent {
15509
15744
  this.filterChanged.emit(filter);
15510
15745
  }
15511
15746
  onPopupToggle() {
15512
- requestAnimationFrame(() => this.popup()?.toggle());
15747
+ this.popup()?.toggle();
15513
15748
  }
15514
15749
  close() {
15515
15750
  if (!this.filter().value && !this.selectedOption()) {
@@ -15541,6 +15776,15 @@ class KitFilterNullCheckComponent {
15541
15776
  const option = this.options().find(opt => opt.value === currentFilter.operator);
15542
15777
  this.onOptionChange(option ?? this.options()[0]);
15543
15778
  }
15779
+ openPopupOnInit() {
15780
+ if (!this.showPopupOnInit() || this.selectedOption()) {
15781
+ return;
15782
+ }
15783
+ this.rafId = requestAnimationFrame(() => {
15784
+ this.rafId = null;
15785
+ this.onPopupToggle();
15786
+ });
15787
+ }
15544
15788
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: KitFilterNullCheckComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
15545
15789
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.1.1", type: KitFilterNullCheckComponent, isStandalone: true, selector: "kit-filter-null-check", inputs: { filter: { classPropertyName: "filter", publicName: "filter", isSignal: true, isRequired: true, transformFunction: null }, nullLabel: { classPropertyName: "nullLabel", publicName: "nullLabel", isSignal: true, isRequired: false, transformFunction: null }, notNullLabel: { classPropertyName: "notNullLabel", publicName: "notNullLabel", isSignal: true, isRequired: false, transformFunction: null }, showPopupOnInit: { classPropertyName: "showPopupOnInit", publicName: "showPopupOnInit", isSignal: true, isRequired: false, transformFunction: null }, selectedOption: { classPropertyName: "selectedOption", publicName: "selectedOption", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { filterRemoved: "filterRemoved", filterChanged: "filterChanged", selectedOption: "selectedOptionChange", options: "optionsChange" }, viewQueries: [{ propertyName: "anchor", first: true, predicate: ["toggleButton"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "popup", first: true, predicate: ["popup"], descendants: true, read: KitPopupComponent, isSignal: true }], ngImport: i0, template: "<div class=\"kit-filter-null\">\n <kit-pill #toggleButton\n [selectable]=\"!filter().readonly\"\n [selected]=\"popup.isPopupOpen\"\n [removable]=\"!filter().readonly && (filter().removable ?? true)\"\n [theme]=\"filter().readonly && kitPillTheme.BLUE || kitPillTheme.DEFAULT\"\n (removed)=\"removeFilter()\"\n (clicked)=\"onPopupToggle()\">\n {{ filter().title | translate }}: {{ selectedOption()?.label }}\n </kit-pill>\n</div>\n\n<kit-popup #popup\n popupClass=\"kit-filter-null-popup\"\n [anchor]=\"anchor()\"\n [content]=\"content\"\n [showFooter]=\"true\"\n [applyButtonLabel]=\"'kit.filters.apply' | translate\"\n [cancelButtonLabel]=\"'kit.filters.clear' | translate\"\n [closePopupOnCancel]=\"false\"\n (applyAction)=\"applyFilter()\"\n (cancelAction)=\"clearFilter()\"\n (closed)=\"close()\">\n</kit-popup>\n\n<ng-template #content>\n <div class=\"popup-content\">\n <kit-radio-button [items]=\"options()\"\n (changed)=\"onRadioButtonChange($event)\"\n ></kit-radio-button>\n </div>\n</ng-template>\n", styles: ["::ng-deep .kit-filter-null-popup .popup-content{width:172px}::ng-deep .kit-filter-null-popup .kit-radio-button .kit-radio-button-items{flex-direction:column;gap:0}\n"], dependencies: [{ kind: "component", type: KitPillComponent, selector: "kit-pill", inputs: ["removable", "selectable", "selected", "type", "theme", "icon", "iconType"], outputs: ["clicked", "removed"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: KitPopupComponent, selector: "kit-popup", inputs: ["anchor", "content", "closeOnOutsideClick", "showFooter", "cancelButtonLabel", "applyButtonLabel", "isApplyButtonDisabled", "positionMode", "popupClass", "closePopupOnCancel", "extraInsideSelectors"], outputs: ["cancelAction", "applyAction", "opened", "closed"] }, { kind: "component", type: KitRadioButtonComponent, selector: "kit-radio-button", inputs: ["items", "label", "name", "readonly", "type", "value", "checked", "icon", "disabled"], outputs: ["checkedChange", "disabledChange", "changed"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
15546
15790
  }
@@ -15564,6 +15808,8 @@ class KitFilterRadioComponent {
15564
15808
  ...(ngDevMode ? [{ debugName: "translateKeyPrefix" }] : /* istanbul ignore next */ []));
15565
15809
  this.items = model([], /* @ts-ignore */
15566
15810
  ...(ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []));
15811
+ this.showPopupOnInit = input(true, /* @ts-ignore */
15812
+ ...(ngDevMode ? [{ debugName: "showPopupOnInit" }] : /* istanbul ignore next */ []));
15567
15813
  this.filterRemoved = output();
15568
15814
  this.filterChanged = output();
15569
15815
  this.anchor = viewChild.required('toggleButton', { ...(ngDevMode ? { debugName: "anchor" } : /* istanbul ignore next */ {}), read: ElementRef });
@@ -15573,11 +15819,18 @@ class KitFilterRadioComponent {
15573
15819
  this.radioButtonValue = signal(null, /* @ts-ignore */
15574
15820
  ...(ngDevMode ? [{ debugName: "radioButtonValue" }] : /* istanbul ignore next */ []));
15575
15821
  this.kitPillTheme = KitPillTheme;
15822
+ this.popupToggleRafId = null;
15576
15823
  }
15577
15824
  ngOnInit() {
15578
15825
  this.initializeSelectedValue();
15579
15826
  this.updateItemsState();
15580
- this.showPopupOnInit();
15827
+ this.openPopupOnInit();
15828
+ }
15829
+ ngOnDestroy() {
15830
+ if (this.popupToggleRafId !== null) {
15831
+ cancelAnimationFrame(this.popupToggleRafId);
15832
+ this.popupToggleRafId = null;
15833
+ }
15581
15834
  }
15582
15835
  get selectedFilterValue() {
15583
15836
  return this.selectedValue()?.filters[0].value;
@@ -15661,13 +15914,17 @@ class KitFilterRadioComponent {
15661
15914
  checked: this.selectedFilterValue === item.value,
15662
15915
  })));
15663
15916
  }
15664
- showPopupOnInit() {
15665
- if (!this.selectedValue()) {
15666
- requestAnimationFrame(() => this.onPopupToggle());
15917
+ openPopupOnInit() {
15918
+ if (!this.showPopupOnInit() || this.selectedValue()) {
15919
+ return;
15667
15920
  }
15921
+ this.popupToggleRafId = requestAnimationFrame(() => {
15922
+ this.popupToggleRafId = null;
15923
+ this.onPopupToggle();
15924
+ });
15668
15925
  }
15669
15926
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: KitFilterRadioComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
15670
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", type: KitFilterRadioComponent, isStandalone: true, selector: "kit-filter-radio", inputs: { filter: { classPropertyName: "filter", publicName: "filter", isSignal: true, isRequired: true, transformFunction: null }, translateKeyPrefix: { classPropertyName: "translateKeyPrefix", publicName: "translateKeyPrefix", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { items: "itemsChange", filterRemoved: "filterRemoved", filterChanged: "filterChanged" }, viewQueries: [{ propertyName: "anchor", first: true, predicate: ["toggleButton"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "popup", first: true, predicate: ["popup"], descendants: true, read: KitPopupComponent, isSignal: true }], ngImport: i0, template: "<div class=\"kit-filter-radio\">\n <kit-pill #toggleButton\n [selectable]=\"!filter().readonly\"\n [selected]=\"popup.isPopupOpen\"\n [removable]=\"!filter().readonly && (filter().removable ?? true)\"\n [theme]=\"filter().readonly && kitPillTheme.BLUE || kitPillTheme.DEFAULT\"\n (removed)=\"removeFilter()\"\n (clicked)=\"onPopupToggle()\">\n {{ filter().title | translate }}:\n @if (hasSelectedFilters(selectedFilterValue)) {\n <kit-truncate-text class=\"kit-filter-radio-selected-values\">\n {{ getSelectedFilterText(selectedFilterValue) | translate }}\n </kit-truncate-text>\n }\n </kit-pill>\n</div>\n\n<kit-popup #popup\n popupClass=\"kit-filter-radio-popup\"\n [anchor]=\"anchor()\"\n [content]=\"content\"\n [showFooter]=\"true\"\n [applyButtonLabel]=\"'kit.filters.apply' | translate\"\n [cancelButtonLabel]=\"'kit.filters.clear' | translate\"\n [closePopupOnCancel]=\"false\"\n (applyAction)=\"applyFilter()\"\n (cancelAction)=\"clearAllFilters()\"\n (closed)=\"close()\">\n</kit-popup>\n\n<ng-template #content>\n <div class=\"popup-content\">\n <kit-radio-button [items]=\"buildRadioButtonItems(items())\"\n (changed)=\"onRadioButtonChange($event)\"\n ></kit-radio-button>\n </div>\n</ng-template>\n", styles: [".kit-filter-radio-selected-values{max-width:180px}::ng-deep .kit-filter-radio-popup .popup-content{width:172px;max-height:400px;overflow-y:auto}::ng-deep .kit-filter-radio-popup .kit-radio-button .kit-radio-button-items{flex-direction:column;gap:0}\n"], dependencies: [{ kind: "component", type: KitPillComponent, selector: "kit-pill", inputs: ["removable", "selectable", "selected", "type", "theme", "icon", "iconType"], outputs: ["clicked", "removed"] }, { kind: "component", type: KitPopupComponent, selector: "kit-popup", inputs: ["anchor", "content", "closeOnOutsideClick", "showFooter", "cancelButtonLabel", "applyButtonLabel", "isApplyButtonDisabled", "positionMode", "popupClass", "closePopupOnCancel", "extraInsideSelectors"], outputs: ["cancelAction", "applyAction", "opened", "closed"] }, { kind: "component", type: KitRadioButtonComponent, selector: "kit-radio-button", inputs: ["items", "label", "name", "readonly", "type", "value", "checked", "icon", "disabled"], outputs: ["checkedChange", "disabledChange", "changed"] }, { kind: "component", type: KitTruncateTextComponent, selector: "kit-truncate-text", inputs: ["tooltipText", "lines", "innerHtml"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
15927
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", type: KitFilterRadioComponent, isStandalone: true, selector: "kit-filter-radio", inputs: { filter: { classPropertyName: "filter", publicName: "filter", isSignal: true, isRequired: true, transformFunction: null }, translateKeyPrefix: { classPropertyName: "translateKeyPrefix", publicName: "translateKeyPrefix", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, showPopupOnInit: { classPropertyName: "showPopupOnInit", publicName: "showPopupOnInit", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { items: "itemsChange", filterRemoved: "filterRemoved", filterChanged: "filterChanged" }, viewQueries: [{ propertyName: "anchor", first: true, predicate: ["toggleButton"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "popup", first: true, predicate: ["popup"], descendants: true, read: KitPopupComponent, isSignal: true }], ngImport: i0, template: "<div class=\"kit-filter-radio\">\n <kit-pill #toggleButton\n [selectable]=\"!filter().readonly\"\n [selected]=\"popup.isPopupOpen\"\n [removable]=\"!filter().readonly && (filter().removable ?? true)\"\n [theme]=\"filter().readonly && kitPillTheme.BLUE || kitPillTheme.DEFAULT\"\n (removed)=\"removeFilter()\"\n (clicked)=\"onPopupToggle()\">\n {{ filter().title | translate }}:\n @if (hasSelectedFilters(selectedFilterValue)) {\n <kit-truncate-text class=\"kit-filter-radio-selected-values\">\n {{ getSelectedFilterText(selectedFilterValue) | translate }}\n </kit-truncate-text>\n }\n </kit-pill>\n</div>\n\n<kit-popup #popup\n popupClass=\"kit-filter-radio-popup\"\n [anchor]=\"anchor()\"\n [content]=\"content\"\n [showFooter]=\"true\"\n [applyButtonLabel]=\"'kit.filters.apply' | translate\"\n [cancelButtonLabel]=\"'kit.filters.clear' | translate\"\n [closePopupOnCancel]=\"false\"\n (applyAction)=\"applyFilter()\"\n (cancelAction)=\"clearAllFilters()\"\n (closed)=\"close()\">\n</kit-popup>\n\n<ng-template #content>\n <div class=\"popup-content\">\n <kit-radio-button [items]=\"buildRadioButtonItems(items())\"\n (changed)=\"onRadioButtonChange($event)\"\n ></kit-radio-button>\n </div>\n</ng-template>\n", styles: [".kit-filter-radio-selected-values{max-width:180px}::ng-deep .kit-filter-radio-popup .popup-content{width:172px;max-height:400px;overflow-y:auto}::ng-deep .kit-filter-radio-popup .kit-radio-button .kit-radio-button-items{flex-direction:column;gap:0}\n"], dependencies: [{ kind: "component", type: KitPillComponent, selector: "kit-pill", inputs: ["removable", "selectable", "selected", "type", "theme", "icon", "iconType"], outputs: ["clicked", "removed"] }, { kind: "component", type: KitPopupComponent, selector: "kit-popup", inputs: ["anchor", "content", "closeOnOutsideClick", "showFooter", "cancelButtonLabel", "applyButtonLabel", "isApplyButtonDisabled", "positionMode", "popupClass", "closePopupOnCancel", "extraInsideSelectors"], outputs: ["cancelAction", "applyAction", "opened", "closed"] }, { kind: "component", type: KitRadioButtonComponent, selector: "kit-radio-button", inputs: ["items", "label", "name", "readonly", "type", "value", "checked", "icon", "disabled"], outputs: ["checkedChange", "disabledChange", "changed"] }, { kind: "component", type: KitTruncateTextComponent, selector: "kit-truncate-text", inputs: ["tooltipText", "lines", "innerHtml"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
15671
15928
  }
15672
15929
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: KitFilterRadioComponent, decorators: [{
15673
15930
  type: Component,
@@ -15678,7 +15935,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImpor
15678
15935
  KitRadioButtonComponent,
15679
15936
  KitTruncateTextComponent,
15680
15937
  ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"kit-filter-radio\">\n <kit-pill #toggleButton\n [selectable]=\"!filter().readonly\"\n [selected]=\"popup.isPopupOpen\"\n [removable]=\"!filter().readonly && (filter().removable ?? true)\"\n [theme]=\"filter().readonly && kitPillTheme.BLUE || kitPillTheme.DEFAULT\"\n (removed)=\"removeFilter()\"\n (clicked)=\"onPopupToggle()\">\n {{ filter().title | translate }}:\n @if (hasSelectedFilters(selectedFilterValue)) {\n <kit-truncate-text class=\"kit-filter-radio-selected-values\">\n {{ getSelectedFilterText(selectedFilterValue) | translate }}\n </kit-truncate-text>\n }\n </kit-pill>\n</div>\n\n<kit-popup #popup\n popupClass=\"kit-filter-radio-popup\"\n [anchor]=\"anchor()\"\n [content]=\"content\"\n [showFooter]=\"true\"\n [applyButtonLabel]=\"'kit.filters.apply' | translate\"\n [cancelButtonLabel]=\"'kit.filters.clear' | translate\"\n [closePopupOnCancel]=\"false\"\n (applyAction)=\"applyFilter()\"\n (cancelAction)=\"clearAllFilters()\"\n (closed)=\"close()\">\n</kit-popup>\n\n<ng-template #content>\n <div class=\"popup-content\">\n <kit-radio-button [items]=\"buildRadioButtonItems(items())\"\n (changed)=\"onRadioButtonChange($event)\"\n ></kit-radio-button>\n </div>\n</ng-template>\n", styles: [".kit-filter-radio-selected-values{max-width:180px}::ng-deep .kit-filter-radio-popup .popup-content{width:172px;max-height:400px;overflow-y:auto}::ng-deep .kit-filter-radio-popup .kit-radio-button .kit-radio-button-items{flex-direction:column;gap:0}\n"] }]
15681
- }], propDecorators: { filter: [{ type: i0.Input, args: [{ isSignal: true, alias: "filter", required: true }] }], translateKeyPrefix: [{ type: i0.Input, args: [{ isSignal: true, alias: "translateKeyPrefix", required: false }] }], items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }, { type: i0.Output, args: ["itemsChange"] }], filterRemoved: [{ type: i0.Output, args: ["filterRemoved"] }], filterChanged: [{ type: i0.Output, args: ["filterChanged"] }], anchor: [{ type: i0.ViewChild, args: ['toggleButton', { ...{ read: ElementRef }, isSignal: true }] }], popup: [{ type: i0.ViewChild, args: ['popup', { ...{ read: KitPopupComponent }, isSignal: true }] }] } });
15938
+ }], propDecorators: { filter: [{ type: i0.Input, args: [{ isSignal: true, alias: "filter", required: true }] }], translateKeyPrefix: [{ type: i0.Input, args: [{ isSignal: true, alias: "translateKeyPrefix", required: false }] }], items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }, { type: i0.Output, args: ["itemsChange"] }], showPopupOnInit: [{ type: i0.Input, args: [{ isSignal: true, alias: "showPopupOnInit", required: false }] }], filterRemoved: [{ type: i0.Output, args: ["filterRemoved"] }], filterChanged: [{ type: i0.Output, args: ["filterChanged"] }], anchor: [{ type: i0.ViewChild, args: ['toggleButton', { ...{ read: ElementRef }, isSignal: true }] }], popup: [{ type: i0.ViewChild, args: ['popup', { ...{ read: KitPopupComponent }, isSignal: true }] }] } });
15682
15939
 
15683
15940
  class KitFilterSelectorComponent {
15684
15941
  constructor() {
@@ -15744,14 +16001,20 @@ class KitGridFiltersComponent {
15744
16001
  .filter(item => !this.excludedColumns().includes(item.field))
15745
16002
  .map(item => this.buildFilterSelectorItem(item, this.filters())), /* @ts-ignore */
15746
16003
  ...(ngDevMode ? [{ debugName: "filterSelectorItems" }] : /* istanbul ignore next */ []));
16004
+ this.filterToAutoOpen = signal(null, /* @ts-ignore */
16005
+ ...(ngDevMode ? [{ debugName: "filterToAutoOpen" }] : /* istanbul ignore next */ []));
15747
16006
  }
15748
16007
  addFilter(item) {
16008
+ this.filterToAutoOpen.set(item.field);
15749
16009
  this.store.dispatch(new AddGridFilter({
15750
16010
  title: item.title,
15751
16011
  field: item.field,
15752
16012
  type: item.filterType,
15753
16013
  value: null,
15754
- }));
16014
+ })).subscribe(() => {
16015
+ this.kitGridUrlStateService.replaceGridStateInUrl(this.store.selectSnapshot(KIT_GRID_STATE_TOKEN));
16016
+ });
16017
+ requestAnimationFrame(() => this.filterToAutoOpen.set(null));
15755
16018
  }
15756
16019
  removeFilter(field) {
15757
16020
  this.store.dispatch(new RemoveGridFilter(field)).subscribe(() => {
@@ -15791,17 +16054,11 @@ class KitGridFiltersComponent {
15791
16054
  getDateFilterConstraint(filter) {
15792
16055
  return this.columns().find(col => col.field === filter.field)?.dateFilterConstraint;
15793
16056
  }
15794
- getCheckboxFilterItems(field) {
15795
- return this.filterListConfig()[field].items.map(item => ({
15796
- ...item,
15797
- value: String(item.value),
15798
- }));
15799
- }
15800
16057
  isFilterSelectorItemDisabled(item, filters) {
15801
16058
  return filters.some(filter => filter.field === item.field || filter.field === item.apiField);
15802
16059
  }
15803
16060
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: KitGridFiltersComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
15804
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", type: KitGridFiltersComponent, isStandalone: true, selector: "kit-grid-filters", inputs: { excludedColumns: { classPropertyName: "excludedColumns", publicName: "excludedColumns", isSignal: true, isRequired: true, transformFunction: null }, columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: true, transformFunction: null }, filterListConfig: { classPropertyName: "filterListConfig", publicName: "filterListConfig", isSignal: true, isRequired: true, transformFunction: null }, useLocalTimeZone: { classPropertyName: "useLocalTimeZone", publicName: "useLocalTimeZone", isSignal: true, isRequired: false, transformFunction: null }, nullLabel: { classPropertyName: "nullLabel", publicName: "nullLabel", isSignal: true, isRequired: false, transformFunction: null }, notNullLabel: { classPropertyName: "notNullLabel", publicName: "notNullLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { filterChanged: "filterChanged" }, ngImport: i0, template: "<div class=\"kit-grid-filters\">\n @for (item of filters(); track item) {\n @switch (item.type) {\n @case (kitFilterType.CHECKBOX) {\n <kit-filter-checkbox [filter]=\"item\"\n [items]=\"getCheckboxFilterItems(item.field)\"\n [translateKeyPrefix]=\"filterListConfig()[item.field].translateKeyPrefix\"\n (filterRemoved)=\"removeFilter(item.field)\"\n (filterChanged)=\"applyFilter(item, $event)\"\n ></kit-filter-checkbox>\n }\n @case (kitFilterType.GUID) {\n <kit-filter-checkbox [filter]=\"item\"\n [items]=\"getCheckboxFilterItems(item.field)\"\n [guidField]=\"filterListConfig()[item.field].guidField ?? ''\"\n (filterRemoved)=\"removeFilter(item.field)\"\n (filterChanged)=\"applyFilter(item, $event)\"\n ></kit-filter-checkbox>\n }\n @case (kitFilterType.RADIO) {\n <kit-filter-radio [filter]=\"item\"\n [items]=\"filterListConfig()?.[item.field].items\"\n [translateKeyPrefix]=\"filterListConfig()?.[item.field].translateKeyPrefix\"\n (filterRemoved)=\"removeFilter(item.field)\"\n (filterChanged)=\"applyFilter(item, $event)\"\n ></kit-filter-radio>\n }\n @case (kitFilterType.DATE) {\n <kit-filter-date [filter]=\"item\"\n [useLocalTimeZone]=\"useLocalTimeZone() || isLocalDateColumn(item)\"\n [useUserTimeZone]=\"useUserTimeZone(item)\"\n [dateFilterConstraint]=\"getDateFilterConstraint(item)\"\n (filterRemoved)=\"removeFilter(item.field)\"\n (filterChanged)=\"applyFilter(item, $event)\"\n ></kit-filter-date>\n }\n @case (kitFilterType.TEXT) {\n <kit-filter-input [filterInputType]=\"kitFilterType.TEXT\"\n [filter]=\"item\"\n (filterRemoved)=\"removeFilter(item.field)\"\n (filterChanged)=\"applyFilter(item, $event)\"\n ></kit-filter-input>\n }\n @case (kitFilterType.NUMERIC) {\n <kit-filter-input [filterInputType]=\"kitFilterType.NUMERIC\"\n [filter]=\"item\"\n (filterRemoved)=\"removeFilter(item.field)\"\n (filterChanged)=\"applyFilter(item, $event)\"\n ></kit-filter-input>\n }\n @case (kitFilterType.NULL) {\n <kit-filter-null-check [filter]=\"item\"\n [nullLabel]=\"nullLabel()\"\n [notNullLabel]=\"notNullLabel()\"\n (filterRemoved)=\"removeFilter(item.field)\"\n (filterChanged)=\"applyFilter(item, $event)\"\n ></kit-filter-null-check>\n }\n @case (kitFilterType.CUSTOM_INPUT) {\n <kit-filter-custom-input [filter]=\"item\"\n (filterRemoved)=\"removeFilter(item.field)\"\n (filterChanged)=\"applyFilter(item, $event)\"\n ></kit-filter-custom-input>\n }\n }\n }\n\n <kit-filter-selector [items]=\"filterSelectorItems()\"\n (itemSelected)=\"addFilter($event)\"\n ></kit-filter-selector>\n</div>\n", styles: [".kit-grid-filters{display:flex;flex-wrap:wrap;gap:10px}::ng-deep .kit-pill-content{white-space:nowrap}\n"], dependencies: [{ kind: "component", type: KitFilterSelectorComponent, selector: "kit-filter-selector", inputs: ["items"], outputs: ["itemSelected"] }, { kind: "component", type: KitFilterCheckboxComponent, selector: "kit-filter-checkbox", inputs: ["filter", "translateKeyPrefix", "items", "showPopupOnInit", "guidField"], outputs: ["itemsChange", "filterRemoved", "filterChanged"] }, { kind: "component", type: KitFilterDateComponent, selector: "kit-filter-date", inputs: ["filter", "useUserTimeZone", "useLocalTimeZone", "dateFilterConstraint"], outputs: ["filterRemoved", "filterChanged"] }, { kind: "component", type: KitFilterRadioComponent, selector: "kit-filter-radio", inputs: ["filter", "translateKeyPrefix", "items"], outputs: ["itemsChange", "filterRemoved", "filterChanged"] }, { kind: "component", type: KitFilterInputComponent, selector: "kit-filter-input", inputs: ["filter", "filterInputType"], outputs: ["filterRemoved", "filterChanged"] }, { kind: "component", type: KitFilterNullCheckComponent, selector: "kit-filter-null-check", inputs: ["filter", "nullLabel", "notNullLabel", "showPopupOnInit", "selectedOption", "options"], outputs: ["filterRemoved", "filterChanged", "selectedOptionChange", "optionsChange"] }, { kind: "component", type: KitFilterCustomInputComponent, selector: "kit-filter-custom-input", inputs: ["filter"], outputs: ["filterRemoved", "filterChanged"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
16061
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", type: KitGridFiltersComponent, isStandalone: true, selector: "kit-grid-filters", inputs: { excludedColumns: { classPropertyName: "excludedColumns", publicName: "excludedColumns", isSignal: true, isRequired: true, transformFunction: null }, columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: true, transformFunction: null }, filterListConfig: { classPropertyName: "filterListConfig", publicName: "filterListConfig", isSignal: true, isRequired: true, transformFunction: null }, useLocalTimeZone: { classPropertyName: "useLocalTimeZone", publicName: "useLocalTimeZone", isSignal: true, isRequired: false, transformFunction: null }, nullLabel: { classPropertyName: "nullLabel", publicName: "nullLabel", isSignal: true, isRequired: false, transformFunction: null }, notNullLabel: { classPropertyName: "notNullLabel", publicName: "notNullLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { filterChanged: "filterChanged" }, ngImport: i0, template: "<div class=\"kit-grid-filters\">\n @for (item of filters(); track item.field) {\n @switch (item.type) {\n @case (kitFilterType.CHECKBOX) {\n <kit-filter-checkbox [filter]=\"item\"\n [items]=\"filterListConfig()[item.field].items\"\n [translateKeyPrefix]=\"filterListConfig()[item.field].translateKeyPrefix\"\n [showPopupOnInit]=\"filterToAutoOpen() === item.field\"\n (filterRemoved)=\"removeFilter(item.field)\"\n (filterChanged)=\"applyFilter(item, $event)\"\n ></kit-filter-checkbox>\n }\n @case (kitFilterType.GUID) {\n <kit-filter-checkbox [filter]=\"item\"\n [items]=\"filterListConfig()[item.field].items\"\n [guidField]=\"filterListConfig()[item.field].guidField ?? ''\"\n [showPopupOnInit]=\"filterToAutoOpen() === item.field\"\n (filterRemoved)=\"removeFilter(item.field)\"\n (filterChanged)=\"applyFilter(item, $event)\"\n ></kit-filter-checkbox>\n }\n @case (kitFilterType.RADIO) {\n <kit-filter-radio [filter]=\"item\"\n [items]=\"filterListConfig()?.[item.field].items\"\n [translateKeyPrefix]=\"filterListConfig()?.[item.field].translateKeyPrefix\"\n [showPopupOnInit]=\"filterToAutoOpen() === item.field\"\n (filterRemoved)=\"removeFilter(item.field)\"\n (filterChanged)=\"applyFilter(item, $event)\"\n ></kit-filter-radio>\n }\n @case (kitFilterType.DATE) {\n <kit-filter-date [filter]=\"item\"\n [showPopupOnInit]=\"filterToAutoOpen() === item.field\"\n [useLocalTimeZone]=\"useLocalTimeZone() || isLocalDateColumn(item)\"\n [useUserTimeZone]=\"useUserTimeZone(item)\"\n [dateFilterConstraint]=\"getDateFilterConstraint(item)\"\n (filterRemoved)=\"removeFilter(item.field)\"\n (filterChanged)=\"applyFilter(item, $event)\"\n ></kit-filter-date>\n }\n @case (kitFilterType.TEXT) {\n <kit-filter-input [filterInputType]=\"kitFilterType.TEXT\"\n [filter]=\"item\"\n [showPopupOnInit]=\"filterToAutoOpen() === item.field\"\n (filterRemoved)=\"removeFilter(item.field)\"\n (filterChanged)=\"applyFilter(item, $event)\"\n ></kit-filter-input>\n }\n @case (kitFilterType.NUMERIC) {\n <kit-filter-input [filterInputType]=\"kitFilterType.NUMERIC\"\n [filter]=\"item\"\n [showPopupOnInit]=\"filterToAutoOpen() === item.field\"\n (filterRemoved)=\"removeFilter(item.field)\"\n (filterChanged)=\"applyFilter(item, $event)\"\n ></kit-filter-input>\n }\n @case (kitFilterType.NULL) {\n <kit-filter-null-check [filter]=\"item\"\n [nullLabel]=\"nullLabel()\"\n [notNullLabel]=\"notNullLabel()\"\n [showPopupOnInit]=\"filterToAutoOpen() === item.field\"\n (filterRemoved)=\"removeFilter(item.field)\"\n (filterChanged)=\"applyFilter(item, $event)\"\n ></kit-filter-null-check>\n }\n @case (kitFilterType.CUSTOM_INPUT) {\n <kit-filter-custom-input [filter]=\"item\"\n [showPopupOnInit]=\"filterToAutoOpen() === item.field\"\n (filterRemoved)=\"removeFilter(item.field)\"\n (filterChanged)=\"applyFilter(item, $event)\"\n ></kit-filter-custom-input>\n }\n }\n }\n\n <kit-filter-selector [items]=\"filterSelectorItems()\"\n (itemSelected)=\"addFilter($event)\"\n ></kit-filter-selector>\n</div>\n", styles: [".kit-grid-filters{display:flex;flex-wrap:wrap;gap:10px}::ng-deep .kit-pill-content{white-space:nowrap}\n"], dependencies: [{ kind: "component", type: KitFilterSelectorComponent, selector: "kit-filter-selector", inputs: ["items"], outputs: ["itemSelected"] }, { kind: "component", type: KitFilterCheckboxComponent, selector: "kit-filter-checkbox", inputs: ["filter", "translateKeyPrefix", "items", "showPopupOnInit", "guidField"], outputs: ["itemsChange", "filterRemoved", "filterChanged"] }, { kind: "component", type: KitFilterDateComponent, selector: "kit-filter-date", inputs: ["filter", "showPopupOnInit", "useUserTimeZone", "useLocalTimeZone", "dateFilterConstraint"], outputs: ["filterRemoved", "filterChanged"] }, { kind: "component", type: KitFilterRadioComponent, selector: "kit-filter-radio", inputs: ["filter", "translateKeyPrefix", "items", "showPopupOnInit"], outputs: ["itemsChange", "filterRemoved", "filterChanged"] }, { kind: "component", type: KitFilterInputComponent, selector: "kit-filter-input", inputs: ["filter", "showPopupOnInit", "filterInputType"], outputs: ["filterRemoved", "filterChanged"] }, { kind: "component", type: KitFilterNullCheckComponent, selector: "kit-filter-null-check", inputs: ["filter", "nullLabel", "notNullLabel", "showPopupOnInit", "selectedOption", "options"], outputs: ["filterRemoved", "filterChanged", "selectedOptionChange", "optionsChange"] }, { kind: "component", type: KitFilterCustomInputComponent, selector: "kit-filter-custom-input", inputs: ["filter", "showPopupOnInit"], outputs: ["filterRemoved", "filterChanged"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
15805
16062
  }
15806
16063
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: KitGridFiltersComponent, decorators: [{
15807
16064
  type: Component,
@@ -15813,7 +16070,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImpor
15813
16070
  KitFilterInputComponent,
15814
16071
  KitFilterNullCheckComponent,
15815
16072
  KitFilterCustomInputComponent,
15816
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"kit-grid-filters\">\n @for (item of filters(); track item) {\n @switch (item.type) {\n @case (kitFilterType.CHECKBOX) {\n <kit-filter-checkbox [filter]=\"item\"\n [items]=\"getCheckboxFilterItems(item.field)\"\n [translateKeyPrefix]=\"filterListConfig()[item.field].translateKeyPrefix\"\n (filterRemoved)=\"removeFilter(item.field)\"\n (filterChanged)=\"applyFilter(item, $event)\"\n ></kit-filter-checkbox>\n }\n @case (kitFilterType.GUID) {\n <kit-filter-checkbox [filter]=\"item\"\n [items]=\"getCheckboxFilterItems(item.field)\"\n [guidField]=\"filterListConfig()[item.field].guidField ?? ''\"\n (filterRemoved)=\"removeFilter(item.field)\"\n (filterChanged)=\"applyFilter(item, $event)\"\n ></kit-filter-checkbox>\n }\n @case (kitFilterType.RADIO) {\n <kit-filter-radio [filter]=\"item\"\n [items]=\"filterListConfig()?.[item.field].items\"\n [translateKeyPrefix]=\"filterListConfig()?.[item.field].translateKeyPrefix\"\n (filterRemoved)=\"removeFilter(item.field)\"\n (filterChanged)=\"applyFilter(item, $event)\"\n ></kit-filter-radio>\n }\n @case (kitFilterType.DATE) {\n <kit-filter-date [filter]=\"item\"\n [useLocalTimeZone]=\"useLocalTimeZone() || isLocalDateColumn(item)\"\n [useUserTimeZone]=\"useUserTimeZone(item)\"\n [dateFilterConstraint]=\"getDateFilterConstraint(item)\"\n (filterRemoved)=\"removeFilter(item.field)\"\n (filterChanged)=\"applyFilter(item, $event)\"\n ></kit-filter-date>\n }\n @case (kitFilterType.TEXT) {\n <kit-filter-input [filterInputType]=\"kitFilterType.TEXT\"\n [filter]=\"item\"\n (filterRemoved)=\"removeFilter(item.field)\"\n (filterChanged)=\"applyFilter(item, $event)\"\n ></kit-filter-input>\n }\n @case (kitFilterType.NUMERIC) {\n <kit-filter-input [filterInputType]=\"kitFilterType.NUMERIC\"\n [filter]=\"item\"\n (filterRemoved)=\"removeFilter(item.field)\"\n (filterChanged)=\"applyFilter(item, $event)\"\n ></kit-filter-input>\n }\n @case (kitFilterType.NULL) {\n <kit-filter-null-check [filter]=\"item\"\n [nullLabel]=\"nullLabel()\"\n [notNullLabel]=\"notNullLabel()\"\n (filterRemoved)=\"removeFilter(item.field)\"\n (filterChanged)=\"applyFilter(item, $event)\"\n ></kit-filter-null-check>\n }\n @case (kitFilterType.CUSTOM_INPUT) {\n <kit-filter-custom-input [filter]=\"item\"\n (filterRemoved)=\"removeFilter(item.field)\"\n (filterChanged)=\"applyFilter(item, $event)\"\n ></kit-filter-custom-input>\n }\n }\n }\n\n <kit-filter-selector [items]=\"filterSelectorItems()\"\n (itemSelected)=\"addFilter($event)\"\n ></kit-filter-selector>\n</div>\n", styles: [".kit-grid-filters{display:flex;flex-wrap:wrap;gap:10px}::ng-deep .kit-pill-content{white-space:nowrap}\n"] }]
16073
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"kit-grid-filters\">\n @for (item of filters(); track item.field) {\n @switch (item.type) {\n @case (kitFilterType.CHECKBOX) {\n <kit-filter-checkbox [filter]=\"item\"\n [items]=\"filterListConfig()[item.field].items\"\n [translateKeyPrefix]=\"filterListConfig()[item.field].translateKeyPrefix\"\n [showPopupOnInit]=\"filterToAutoOpen() === item.field\"\n (filterRemoved)=\"removeFilter(item.field)\"\n (filterChanged)=\"applyFilter(item, $event)\"\n ></kit-filter-checkbox>\n }\n @case (kitFilterType.GUID) {\n <kit-filter-checkbox [filter]=\"item\"\n [items]=\"filterListConfig()[item.field].items\"\n [guidField]=\"filterListConfig()[item.field].guidField ?? ''\"\n [showPopupOnInit]=\"filterToAutoOpen() === item.field\"\n (filterRemoved)=\"removeFilter(item.field)\"\n (filterChanged)=\"applyFilter(item, $event)\"\n ></kit-filter-checkbox>\n }\n @case (kitFilterType.RADIO) {\n <kit-filter-radio [filter]=\"item\"\n [items]=\"filterListConfig()?.[item.field].items\"\n [translateKeyPrefix]=\"filterListConfig()?.[item.field].translateKeyPrefix\"\n [showPopupOnInit]=\"filterToAutoOpen() === item.field\"\n (filterRemoved)=\"removeFilter(item.field)\"\n (filterChanged)=\"applyFilter(item, $event)\"\n ></kit-filter-radio>\n }\n @case (kitFilterType.DATE) {\n <kit-filter-date [filter]=\"item\"\n [showPopupOnInit]=\"filterToAutoOpen() === item.field\"\n [useLocalTimeZone]=\"useLocalTimeZone() || isLocalDateColumn(item)\"\n [useUserTimeZone]=\"useUserTimeZone(item)\"\n [dateFilterConstraint]=\"getDateFilterConstraint(item)\"\n (filterRemoved)=\"removeFilter(item.field)\"\n (filterChanged)=\"applyFilter(item, $event)\"\n ></kit-filter-date>\n }\n @case (kitFilterType.TEXT) {\n <kit-filter-input [filterInputType]=\"kitFilterType.TEXT\"\n [filter]=\"item\"\n [showPopupOnInit]=\"filterToAutoOpen() === item.field\"\n (filterRemoved)=\"removeFilter(item.field)\"\n (filterChanged)=\"applyFilter(item, $event)\"\n ></kit-filter-input>\n }\n @case (kitFilterType.NUMERIC) {\n <kit-filter-input [filterInputType]=\"kitFilterType.NUMERIC\"\n [filter]=\"item\"\n [showPopupOnInit]=\"filterToAutoOpen() === item.field\"\n (filterRemoved)=\"removeFilter(item.field)\"\n (filterChanged)=\"applyFilter(item, $event)\"\n ></kit-filter-input>\n }\n @case (kitFilterType.NULL) {\n <kit-filter-null-check [filter]=\"item\"\n [nullLabel]=\"nullLabel()\"\n [notNullLabel]=\"notNullLabel()\"\n [showPopupOnInit]=\"filterToAutoOpen() === item.field\"\n (filterRemoved)=\"removeFilter(item.field)\"\n (filterChanged)=\"applyFilter(item, $event)\"\n ></kit-filter-null-check>\n }\n @case (kitFilterType.CUSTOM_INPUT) {\n <kit-filter-custom-input [filter]=\"item\"\n [showPopupOnInit]=\"filterToAutoOpen() === item.field\"\n (filterRemoved)=\"removeFilter(item.field)\"\n (filterChanged)=\"applyFilter(item, $event)\"\n ></kit-filter-custom-input>\n }\n }\n }\n\n <kit-filter-selector [items]=\"filterSelectorItems()\"\n (itemSelected)=\"addFilter($event)\"\n ></kit-filter-selector>\n</div>\n", styles: [".kit-grid-filters{display:flex;flex-wrap:wrap;gap:10px}::ng-deep .kit-pill-content{white-space:nowrap}\n"] }]
15817
16074
  }], propDecorators: { excludedColumns: [{ type: i0.Input, args: [{ isSignal: true, alias: "excludedColumns", required: true }] }], columns: [{ type: i0.Input, args: [{ isSignal: true, alias: "columns", required: true }] }], filterListConfig: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterListConfig", required: true }] }], useLocalTimeZone: [{ type: i0.Input, args: [{ isSignal: true, alias: "useLocalTimeZone", required: false }] }], nullLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "nullLabel", required: false }] }], notNullLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "notNullLabel", required: false }] }], filterChanged: [{ type: i0.Output, args: ["filterChanged"] }] } });
15818
16075
 
15819
16076
  class KitGridFiltersToggleComponent {
@@ -18996,5 +19253,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImpor
18996
19253
  * Generated bundle index. Do not edit.
18997
19254
  */
18998
19255
 
18999
- export { AbstractKitCtaPanelConfirmationComponent, AddGridFilter, DeletePartner, FetchApiTokens, FetchPartners, FetchUser, FetchUserIdentities, FetchUserPermissions, FetchUserSettings, HighlightPipe, KIT_ALL_PERMISSIONS_PATH, KIT_API_TOKENS_STATE_TOKEN, KIT_BASE_PATH, KIT_DATETIME_FORMAT_LONG, KIT_DATE_FORMAT, KIT_DATE_FORMAT_SHORT, KIT_ENTITY_CREATE_SERVICE, KIT_GRID_CELL_DATE_FORMAT_CONFIG, KIT_GRID_COLUMN_WIDTH, KIT_GRID_PAGE_SIZE, KIT_GRID_STATE_TOKEN, KIT_LANGUAGE_LABELS, KIT_PARTNERS_STATE_TOKEN, KIT_SUPPORTED_LANGUAGES, KIT_TIME_FORMAT_SHORT, KIT_USER_APPLICATIONS_PATH, KIT_USER_IDENTITIES_STATE_TOKEN, KIT_USER_PATH, KIT_USER_PERMISSIONS_PATH, KIT_USER_PERMISSIONS_STATE_TOKEN, KIT_USER_STATE_TOKEN, KitAbstractIdPayloadAction, KitAbstractPayloadAction, KitAccountService, KitApiTokenMaintenanceListComponent, KitApiTokenMaintenanceListState, KitApiTokensPermissionCategories, KitAutocompleteComponent, KitAutocompleteDirective, KitAvatarComponent, KitAvatarSize, KitBackButtonComponent, KitBadgeDirective, KitBadgeTheme, KitBreadcrumbsComponent, KitBreadcrumbsService, KitButtonComponent, KitButtonIconPosition, KitButtonKind, KitButtonState, KitButtonType, KitCardComponent, KitCardDetailsComponent, KitCardTheme, KitCheckboxComponent, KitCheckboxState, KitClipboardService, KitCodeEditorComponent, KitCodeEditorLanguage, KitCodeEditorMode, KitCollapsedListComponent, KitCollapsedListDropdownAlign, KitCopyTextComponent, KitCreateEntityDialogComponent, KitCtaPanelAbstractConfirmationComponent, KitCtaPanelActionComponent, KitCtaPanelConfirmationComponent, KitCtaPanelItemComponent, KitCtaPanelItemType, KitDataFieldComponent, KitDataFieldLayout, KitDataFieldState, KitDateRangeSingleInput, KitDatepickerComponent, KitDatepickerSize, KitDaterangeComponent, KitDaterangeType, KitDatetimepickerComponent, KitDeferredFailedRequestService, KitDialogActionsComponent, KitDialogComponent, KitDialogService, KitDialogTitlebarComponent, KitDialogType, KitDrawerComponent, KitDrawerContentTemplateDirective, KitDrawerFooterTemplateDirective, KitDrawerMode, KitDropdownComponent, KitDropdownItemTemplateDirective, KitDropdownSize, KitEmptySectionComponent, KitEmptySectionSize, KitEntityGridComponent, KitEntitySectionComponent, KitEntitySectionContainerComponent, KitEntitySectionEditableActionsTemplateDirective, KitEntitySectionEditableComponent, KitEntitySectionEditableEditTemplateDirective, KitEntitySectionEditableMode, KitEntitySectionEditableViewTemplateDirective, KitEntitySectionLayout, KitEntityTitleComponent, KitExcelExportService, KitExpansionPanelComponent, KitExpansionPanelHeaderTemplateDirective, KitExpansionPanelToggleMode, KitExpansionPanelView, KitFileCardComponent, KitFileCardMessagesComponent, KitFileCardSize, KitFileUploadComponent, KitFileUploadTemplateType, KitFilterCheckboxComponent, KitFilterDateRange, KitFilterLogic, KitFilterOperator, KitFilterType, KitForbiddenComponent, KitFormErrors, KitFormFieldComponent, KitFormLabelComponent, KitFormMessageComponent, KitGlobalSearchComponent, KitGridActionComponent, KitGridArchiveToggle, KitGridCellComponent, KitGridCellService, KitGridCellTemplateDirective, KitGridCheckboxColumnComponent, KitGridCheckboxColumnType, KitGridColumnComponent, KitGridColumnManagerComponent, KitGridComponent, KitGridDetailTemplateDirective, KitGridDetailsButtonComponent, KitGridDropPosition, KitGridExportComponent, KitGridFiltersComponent, KitGridFiltersToggleComponent, KitGridLiveUpdatesControlComponent, KitGridSearchComponent, KitGridSortSettingsMode, KitGridState, KitGridUrlStateService, KitGridViewType, KitGridViewsComponent, KitGridViewsState, KitHttpErrorHandlerService, KitLanguage, KitListComponent, KitLoaderComponent, KitLocationStepperComponent, KitLocationStepperIconTheme, KitLocationStepperTheme, KitMobileHeaderComponent, KitMobileMenuComponent, KitMobileMenuState, KitMultiselectComponent, KitMultiselectGroupTagTemplateDirective, KitMultiselectItemsDirection, KitMultiselectSize, KitNavigationMenuComponent, KitNavigationMenuService, KitNavigationMenuSubmenuComponent, KitNavigationTabsComponent, KitNavigationTabsType, KitNotFoundComponent, KitNoteComponent, KitNotificationComponent, KitNotificationService, KitNotificationType, KitNumericTextboxComponent, KitNumericTextboxSize, KitNumericTextboxState, KitOptionToggleComponent, KitOptionToggleSize, KitPageLayoutComponent, KitPartnerComponent, KitPartnerService, KitPartnerState, KitPermissionDirective, KitPillComponent, KitPillTheme, KitPillType, KitPopoverAnchorDirective, KitPopoverComponent, KitPopoverPosition, KitPopoverShowOption, KitPopupAlignHorizontal, KitPopupAlignVertical, KitPopupComponent, KitPopupPositionMode, KitProfileMenuComponent, KitQueryParamsName, KitQueryParamsService, KitRadioButtonComponent, KitRadioButtonType, KitRoutePathComponent, KitSchedulerAgendaTimeTemplateDirective, KitSchedulerComponent, KitSchedulerCustomViewTemplateDirective, KitSchedulerMonthEventTemplateDirective, KitSchedulerMonthHeaderCellTemplateDirective, KitSchedulerToolbarTemplateDirective, KitSchedulerWeekEventTemplateDirective, KitScrollNavigationComponent, KitScrollNavigationSectionComponent, KitSearchBarComponent, KitSelectableCardComponent, KitSidebarComponent, KitSkeletonAnimation, KitSkeletonComponent, KitSkeletonGridComponent, KitSkeletonSectionComponent, KitSkeletonShape, KitSortDirection, KitSortableComponent, KitSplitContainerComponent, KitStatusLabelColor, KitStatusLabelComponent, KitStatusLabelSize, KitSvgIcon, KitSvgIconComponent, KitSvgIconType, KitSvgSpriteComponent, KitSwitchComponent, KitSwitchMode, KitSwitchState, KitTabComponent, KitTabContentDirective, KitTabsComponent, KitTabsSize, KitTabsType, KitTextLabelComponent, KitTextLabelState, KitTextareaComponent, KitTextareaState, KitTextboxActionsComponent, KitTextboxComponent, KitTextboxSize, KitTextboxState, KitThemeService, KitThemes, KitTileLayoutComponent, KitTileLayoutItemComponent, KitTimelineCardComponent, KitTimelineCompactComponent, KitTimelineCompactItemTheme, KitTimelineCompactLineTheme, KitTimelineComponent, KitTimelineTheme, KitTimelineType, KitTimepickerComponent, KitTitleTemplateDirective, KitToggleComponent, KitToggleSize, KitTooltipDirective, KitTooltipPosition, KitTopBarComponent, KitTrackingCardComponent, KitTrackingTimelineComponent, KitTranslateLoader, KitTranslateService, KitTreeComponent, KitTreeContentDirective, KitTreeContentFormat, KitTreeViewMode, KitTruncateTextComponent, KitUnitsTextboxComponent, KitUnitsTextboxDropdownPosition, KitUnitsTextboxType, KitUserApiService, KitUserApplicationsState, KitUserIdentitiesInterceptor, KitUserIdentitiesSelector, KitUserIdentitiesState, KitUserPermissionsState, KitUserRoleDetailsComponent, KitUserRolesComponent, KitUserRolesService, KitUserRolesState, KitUserSettingsComponent, KitUserSettingsKeys, KitUserSettingsState, KitUserState, KitUserType, KitUsersService, KitUsersSettingsComponent, KitUsersSettingsEntitlementType, KitUsersSettingsEntitlementsService, KitUsersSettingsEntitlementsState, KitUsersSettingsReferenceService, KitUsersSettingsState, RemoveGridFilter, SetGridColumns, SetGridFilters, SetGridSearch, SetGridSkip, SetGridSort, SetGridTake, SetUserIdentity, UpdateGridFilter, UpdatePartnerName, UpdateUserPreferences, buildRandomUUID, changeFilterField, createDataFetcherFactory, findMatches, getTextboxState, isKitFilterDescriptor, isKitLanguageSupported, kitApiResponseDefaultEntities, kitApiTokenMaintenanceConfig, kitApiTokenMaintenanceRoutes, kitBuildFilterBooleanOptions, kitBuildFilterListOptions, kitBuildFilters, kitBuildGridColumn, kitBuildGridDataResults, kitBuildHttpParams, kitBuildOdataFilter, kitBuildSortString, kitDataStateToODataString, kitEncodeViewNameToUrl, kitFetchExportGridData, kitFetchGridData, kitFilterBy, kitFormatStringForSearch, kitGetPermissionTypesByCategory, kitHasPermission, kitNormalizeDateToUtc, kitShouldResetGridState, kitTranslations, kitUserPermissionsGuard, kitUserRolesConfig, kitUsersSettingsConfig, kitWhitespaceValidator, mapGlobalSearchResult, trimTrailingSlash };
19256
+ export { AbstractKitCtaPanelConfirmationComponent, AddGridFilter, DeletePartner, FetchApiTokens, FetchPartners, FetchUser, FetchUserIdentities, FetchUserPermissions, FetchUserSettings, HighlightPipe, KIT_ALL_PERMISSIONS_PATH, KIT_API_TOKENS_STATE_TOKEN, KIT_BASE_PATH, KIT_DATETIME_FORMAT_LONG, KIT_DATE_FORMAT, KIT_DATE_FORMAT_SHORT, KIT_ENTITY_CREATE_SERVICE, KIT_GRID_CELL_DATE_FORMAT_CONFIG, KIT_GRID_COLUMN_WIDTH, KIT_GRID_PAGE_SIZE, KIT_GRID_STATE_TOKEN, KIT_LANGUAGE_LABELS, KIT_PARTNERS_STATE_TOKEN, KIT_SUPPORTED_LANGUAGES, KIT_TIME_FORMAT_SHORT, KIT_USER_APPLICATIONS_PATH, KIT_USER_IDENTITIES_STATE_TOKEN, KIT_USER_PATH, KIT_USER_PERMISSIONS_PATH, KIT_USER_PERMISSIONS_STATE_TOKEN, KIT_USER_STATE_TOKEN, KitAbstractIdPayloadAction, KitAbstractPayloadAction, KitAccountService, KitApiTokenMaintenanceListComponent, KitApiTokenMaintenanceListState, KitApiTokensPermissionCategories, KitAutocompleteComponent, KitAutocompleteDirective, KitAvatarComponent, KitAvatarSize, KitBackButtonComponent, KitBadgeDirective, KitBadgeTheme, KitBreadcrumbsComponent, KitBreadcrumbsService, KitButtonComponent, KitButtonIconPosition, KitButtonKind, KitButtonState, KitButtonType, KitCardComponent, KitCardDetailsComponent, KitCardTheme, KitCheckboxComponent, KitCheckboxState, KitClipboardService, KitCodeEditorComponent, KitCodeEditorLanguage, KitCodeEditorMode, KitCollapsedListComponent, KitCollapsedListDropdownAlign, KitCopyTextComponent, KitCreateEntityDialogComponent, KitCtaPanelAbstractConfirmationComponent, KitCtaPanelActionComponent, KitCtaPanelConfirmationComponent, KitCtaPanelItemComponent, KitCtaPanelItemType, KitDataFieldComponent, KitDataFieldLayout, KitDataFieldState, KitDateRangeSingleInput, KitDatepickerComponent, KitDatepickerSize, KitDaterangeComponent, KitDaterangeType, KitDatetimepickerComponent, KitDeferredFailedRequestService, KitDialogActionsComponent, KitDialogComponent, KitDialogService, KitDialogTitlebarComponent, KitDialogType, KitDrawerComponent, KitDrawerContentTemplateDirective, KitDrawerFooterTemplateDirective, KitDrawerMode, KitDropdownComponent, KitDropdownItemTemplateDirective, KitDropdownSize, KitEmptySectionComponent, KitEmptySectionSize, KitEntityGridComponent, KitEntitySectionComponent, KitEntitySectionContainerComponent, KitEntitySectionEditableActionsTemplateDirective, KitEntitySectionEditableComponent, KitEntitySectionEditableEditTemplateDirective, KitEntitySectionEditableMode, KitEntitySectionEditableViewTemplateDirective, KitEntitySectionLayout, KitEntityTitleComponent, KitExcelExportService, KitExpansionPanelComponent, KitExpansionPanelHeaderTemplateDirective, KitExpansionPanelToggleMode, KitExpansionPanelView, KitFileCardComponent, KitFileCardMessagesComponent, KitFileCardSize, KitFileUploadComponent, KitFileUploadTemplateType, KitFilterCheckboxComponent, KitFilterDateRange, KitFilterLogic, KitFilterOperator, KitFilterType, KitForbiddenComponent, KitFormErrors, KitFormFieldComponent, KitFormLabelComponent, KitFormMessageComponent, KitGlobalSearchComponent, KitGridActionComponent, KitGridArchiveToggle, KitGridCellComponent, KitGridCellService, KitGridCellTemplateDirective, KitGridCheckboxColumnComponent, KitGridCheckboxColumnType, KitGridColumnComponent, KitGridColumnManagerComponent, KitGridComponent, KitGridDetailTemplateDirective, KitGridDetailsButtonComponent, KitGridDropPosition, KitGridExportComponent, KitGridFiltersComponent, KitGridFiltersToggleComponent, KitGridLiveUpdatesControlComponent, KitGridSearchComponent, KitGridSortSettingsMode, KitGridState, KitGridUrlStateService, KitGridViewType, KitGridViewsComponent, KitGridViewsState, KitHttpErrorHandlerService, KitLanguage, KitListComponent, KitLoaderComponent, KitLocationStepperComponent, KitLocationStepperIconTheme, KitLocationStepperTheme, KitMobileHeaderComponent, KitMobileMenuComponent, KitMobileMenuState, KitMultiselectComponent, KitMultiselectGroupTagTemplateDirective, KitMultiselectItemsDirection, KitMultiselectSize, KitNavigationMenuComponent, KitNavigationMenuService, KitNavigationMenuSubmenuComponent, KitNavigationTabsComponent, KitNavigationTabsType, KitNotFoundComponent, KitNoteComponent, KitNotificationComponent, KitNotificationService, KitNotificationType, KitNumericTextboxComponent, KitNumericTextboxSize, KitNumericTextboxState, KitOptionToggleComponent, KitOptionToggleSize, KitPageLayoutComponent, KitPartnerComponent, KitPartnerService, KitPartnerState, KitPermissionDirective, KitPillComponent, KitPillTheme, KitPillType, KitPopoverAnchorDirective, KitPopoverComponent, KitPopoverPosition, KitPopoverShowOption, KitPopupAlignHorizontal, KitPopupAlignVertical, KitPopupComponent, KitPopupPositionMode, KitProfileMenuComponent, KitQueryParamsName, KitQueryParamsService, KitRadioButtonComponent, KitRadioButtonType, KitRoutePathComponent, KitSchedulerAgendaTimeTemplateDirective, KitSchedulerComponent, KitSchedulerCustomViewTemplateDirective, KitSchedulerMonthEventTemplateDirective, KitSchedulerMonthHeaderCellTemplateDirective, KitSchedulerToolbarTemplateDirective, KitSchedulerWeekEventTemplateDirective, KitScrollNavigationComponent, KitScrollNavigationSectionComponent, KitSearchBarComponent, KitSelectableCardComponent, KitShipmentRoutingCardComponent, KitShipmentRoutingOverviewComponent, KitSidebarComponent, KitSkeletonAnimation, KitSkeletonComponent, KitSkeletonGridComponent, KitSkeletonSectionComponent, KitSkeletonShape, KitSortDirection, KitSortableComponent, KitSplitContainerComponent, KitStatusLabelColor, KitStatusLabelComponent, KitStatusLabelSize, KitSvgIcon, KitSvgIconComponent, KitSvgIconType, KitSvgSpriteComponent, KitSwitchComponent, KitSwitchMode, KitSwitchState, KitTabComponent, KitTabContentDirective, KitTabsComponent, KitTabsSize, KitTabsType, KitTextLabelComponent, KitTextLabelState, KitTextareaComponent, KitTextareaState, KitTextboxActionsComponent, KitTextboxComponent, KitTextboxSize, KitTextboxState, KitThemeService, KitThemes, KitTileLayoutComponent, KitTileLayoutItemComponent, KitTimelineCardComponent, KitTimelineCompactComponent, KitTimelineCompactItemTheme, KitTimelineCompactLineTheme, KitTimelineComponent, KitTimelineTheme, KitTimelineType, KitTimepickerComponent, KitTitleTemplateDirective, KitToggleComponent, KitToggleSize, KitTooltipDirective, KitTooltipPosition, KitTopBarComponent, KitTrackingCardComponent, KitTrackingTimelineComponent, KitTranslateLoader, KitTranslateService, KitTreeComponent, KitTreeContentDirective, KitTreeContentFormat, KitTreeViewMode, KitTruncateTextComponent, KitUnitsTextboxComponent, KitUnitsTextboxDropdownPosition, KitUnitsTextboxType, KitUserApiService, KitUserApplicationsState, KitUserIdentitiesInterceptor, KitUserIdentitiesSelector, KitUserIdentitiesState, KitUserPermissionsState, KitUserRoleDetailsComponent, KitUserRolesComponent, KitUserRolesService, KitUserRolesState, KitUserSettingsComponent, KitUserSettingsKeys, KitUserSettingsState, KitUserState, KitUserType, KitUsersService, KitUsersSettingsComponent, KitUsersSettingsEntitlementType, KitUsersSettingsEntitlementsService, KitUsersSettingsEntitlementsState, KitUsersSettingsReferenceService, KitUsersSettingsState, RemoveGridFilter, SetGridColumns, SetGridFilters, SetGridSearch, SetGridSkip, SetGridSort, SetGridTake, SetUserIdentity, UpdateGridFilter, UpdatePartnerName, UpdateUserPreferences, buildRandomUUID, calculateCurrentLegProgress, calculateDurationInDays, calculateMainRouteProgressPercent, changeFilterField, createDataFetcherFactory, findMatches, getMainRouteActiveLegIndex, getTextboxState, getTransportIconLegIndex, isKitFilterDescriptor, isKitLanguageSupported, isLegReachedDestination, kitApiResponseDefaultEntities, kitApiTokenMaintenanceConfig, kitApiTokenMaintenanceRoutes, kitBuildFilterBooleanOptions, kitBuildFilterListOptions, kitBuildFilters, kitBuildGridColumn, kitBuildGridDataResults, kitBuildHttpParams, kitBuildOdataFilter, kitBuildSortString, kitDataStateToODataString, kitEncodeViewNameToUrl, kitFetchExportGridData, kitFetchGridData, kitFilterBy, kitFormatStringForSearch, kitGetPermissionTypesByCategory, kitHasPermission, kitNormalizeDateToUtc, kitShouldResetGridState, kitTranslations, kitUserPermissionsGuard, kitUserRolesConfig, kitUsersSettingsConfig, kitWhitespaceValidator, mapGlobalSearchResult, trimTrailingSlash };
19000
19257
  //# sourceMappingURL=indigina-ui-kit.mjs.map